Даже вообразить невозможно, чтобы автобусы, троллейбусы или трамваи ходили по Москве точно по расписанию. Отправляясь на вокзал или в аэропорт, желательно иметь резервный час, иначе, застряв в пробке, рискуешь опоздать на рейс. Прибыв вовремя, вполне можешь прождать сутки, прежде чем попадёшь в самолёт. А если во время взлёта вдруг, не поняв друг друга, один пилот будет жать на газ, а другой – на тормоз? Небрежность, обмолвки, "и так поймут" приводят к тому, что из-за крохотной ошибочки в программе летят мимо далёкой планеты невероятно сложные аппараты ценой в миллиарды.
Что хуже – и общество летит мимо цели, а мы привыкли к этому настолько, что сомневаемся в существовании цели в принципе. "Цель – ничто, движение – всё!"
Авось. Живое, пусть и неточное слово лучше безупречных кладбищенских эпитафий. Новые притоки в иссыхающую реку – благо, даже если с водой они несут толику ила и песка. Подобное состояние уже было после манифеста тысяча девятьсот пятого года.
Манифест, помимо прочего, породил бурный расцвет всякого рода изданий – газет, журналов, альманахов. Одних сатирических журналов народилось несколько десятков (а вот сейчас сатиры что-то не видно и не слышно). Просуществовав несколько месяцев, а иногда и сразу после первого номера издания закрывались. Порой из-за судебных решений (оскорбление династии и призывы экстремистского характера), но чаще из-за экономических просчётов: продажа не окупала затрат.
Издатели стали минимизировать расходы, экономя на редакторах, корректорах, авторах. В результате ошибки, опечатки и нелепости хлынули со страниц в читающую массу. К чему это привело – известно.
AMD Bulldozer: ждать ли революции?
Автор: Андрей Луценко
Опубликовано 18 октября 2011 года
Анонс новых процессоров AMD Bulldozer ("Бульдозер") получился неоднозначным. В комментариях и обзорах царит полный скепсис. Тесты показывают отсутствие значимого повышения эффективности в сравнении с предыдущей архитектурой К10 в пересчете на единичное ядро. Долгожданная архитектура процессоров от AMD вызвала всеобщее разочарование. А зря. Незамеченным осталось главное: в архитектуре процессорных систем AMD применила совершенно новый способ повышения производительности.
Чтобы понять суть произошедших революционных изменений в архитектуре нового процессора AMD, нужно абстрагироваться от результатов конкретных тестов. Никто не спорит - технология сырая. Но не будем с водой выбрасывать младенца: главное - концепция.
Посмотрите на блок-схему новых процессоров AMD. Сразу видно, архитектура ориентирована на связное выполнение двух зависимых вычислительных процессов.
Ранее за производительность боролись тремя способами: наращивали количество ядер в процессоре, повышали число команд, выполняемых за единичный такт, или увеличивали тактовую частоту, упираясь в тепловой пакет на уровне 130-150 Ватт.
"Бульдозер" двинулся другим путём. В борьбу за повышение производительности вступила многопоточная обработка команд. Возникло новое понятие: "тесно связанные вычислительные ядра", или, ещё короче, "процессорный модуль".
И вот с этого места начну поподробнее, хоть и популярно.
Задаче повышения эффективности межпроцессорного взаимодействия до сих пор внимания практически не уделялось; системы межпроцессорных прерываний остаются неизменными на протяжении уже третьего десятилетия. За это время изменилось многое, и главное, на что пока не реагировали разработчики микропроцессорных архитектур, - это совмещение на одном кристалле нескольких процессорных ядер. Нонсенс - процессоры на одном кристалле, а связь между ними организована по внешней шине и по устаревшему протоколу...
Да и программисты наизобретали множество способов облегчить себе жизнь, в то время как эффективность самого вычислительного процесса катастрофически упала.
Их "творения" даже на последних суперскоростных процессорах работают с "тормозами". Почему? Да потому, что оптимальные алгоритмы вычислительных процессов были изменены в угоду удобству поточной индустрии программирования (слово "индус" произошло от слова "индустрия"? или наоборот?).
Базовыми технологиями производства программного продукта на настоящий момент являются объектное программирование и универсальные виртуальные машины.
Следствием такой индустриализации стало использование методов связывания объектов на этапе выполнения и выполнение кода в среде интерпретаторов. Фактически функций компилятора были перенесены в среду исполнения кода. То, что ранее выполнялось один раз на этапе компиляции дистрибутива, теперь выполняется каждый раз во время работы программы у конечного пользователя.