"Бульдозер" двинулся другим путём. В борьбу за повышение производительности вступила многопоточная обработка команд. Возникло новое понятие: "тесно связанные вычислительные ядра", или, ещё короче, "процессорный модуль".
И вот с этого места начну поподробнее, хоть и популярно.
Задаче повышения эффективности межпроцессорного взаимодействия до сих пор внимания практически не уделялось; системы межпроцессорных прерываний остаются неизменными на протяжении уже третьего десятилетия. За это время изменилось многое, и главное, на что пока не реагировали разработчики микропроцессорных архитектур, - это совмещение на одном кристалле нескольких процессорных ядер. Нонсенс - процессоры на одном кристалле, а связь между ними организована по внешней шине и по устаревшему протоколу...
Да и программисты наизобретали множество способов облегчить себе жизнь, в то время как эффективность самого вычислительного процесса катастрофически упала.
Их "творения" даже на последних суперскоростных процессорах работают с "тормозами". Почему? Да потому, что оптимальные алгоритмы вычислительных процессов были изменены в угоду удобству поточной индустрии программирования (слово "индус" произошло от слова "индустрия"? или наоборот?).
Базовыми технологиями производства программного продукта на настоящий момент являются объектное программирование и универсальные виртуальные машины.
Следствием такой индустриализации стало использование методов связывания объектов на этапе выполнения и выполнение кода в среде интерпретаторов. Фактически функций компилятора были перенесены в среду исполнения кода. То, что ранее выполнялось один раз на этапе компиляции дистрибутива, теперь выполняется каждый раз во время работы программы у конечного пользователя.
Но не всё так мрачно. Как говорится, "не было счастья, так несчастье помогло". Сейчас весь типовой вычислительный поток состоит из двух компонент, функций компилятора и собственно рабочего тела программы. Этот поток можно разбить на два тесно связанных потока и параллельно выполнять на разных процессорах, но вот беда: архитектура межпроцессорных взаимодействий пока такого не позволяет.
Как бороться с этой бедой? Да очень просто: есть связанные вычислительные потоки, значит, по ассоциации, нужно сделать тесно связанные вычислительные ядра для их эффективной обработки. Бульдозер выбрал этот путь.
Недавно появилась ещё одна область вычислительных задач, на которых явно применяются тесно связанные вычислительные потоки, - виртуализация. В ней используются связанные вычислительные потоки типа "хост-задача".
Да и старая академическая тема спекулятивного выполнения кода сводится к параллельной работе нескольких тесно связанных вычислительных потоков, а как уверяют теоретики, этот метод сулит небывалые уровни производительности в системах с избытком аппаратных ресурсов.
Короче говоря, настало время научить аппаратуру работать со связными вычислительными потоками, это путь к существенному повышению эффективности вычислений. А программистов научить распараллеливать код на тесно связанные потоки.
Подведём итог. Имеется устаревшая технология межпроцессорного взаимодействия, Программисты вовсю явно и неявно используют связные вычислительные потоки. Чего пока не хватает для полного "энергоэффективного" счастья? "Бульдозера", чтобы всё это расчистить под площадку для новой процессорной архитектуры.
Конечно, современное ПО не может реализовать потенциал архитектуры "Бульдозера". Использование зависимых процессорных модулей в независимых вычислительных потоках будет только ухудшать результирующую производительность системы. Но уже анонсирована поддержка данной архитектуры в Windows 8, и это дает, по предварительным оценкам специалистов, около пятнадцати процентов производительности. Даже для такой элементарной оптимизации на уровне диспетчера потоков ОС. Если же заточить под эту архитектуру виртуальные машины и компиляторы, тогда к этим процентам можно смело приписывать ещё один ноль...
Кому-то это утверждение покажется слишком оптимистичным, но с учётом того, что, к примеру, связывание на этапе выполнения требует сначала просмотра таблиц связи и только после этого вычисления адреса требуемой процедуры, то разделение процессов связывания и выполнения как раз и повышает результирующее быстродействие в два раза (минимум).
Кстати, на заре архитектуры К10 бродили слухи о том, что AMD собирается внедрить многопоточность в это ядро, причём эта гипотетичная технология красноречиво называлась "антигипертрединг" (Anti HyperThreading). Теперь понятно, почему. Видимо, на тот момент концепция ещё не созрела, а теперь, похоже, настало её время.
Для реализации всех преимуществ архитектуры "Бульдозера" недостаточно только оптимизаций, обязательно потребуются специализированные системные команды для тонкого управления аппаратурой. Потребуется и дополнительная аппаратура, но это потом, в новых "строительных машинах", которые AMD собирается выпускать каждый год, а пока достаточно и того, что сделано. Удалось бы внедрить оптимизацию на уровне общих кэшей процессорного модуля, и этого уже будет достаточно для начала.
Остается загадкой: изначально авторы данной архитектуры предполагали подобное использование своего детища, или это получилось у них случайно? Типа того, как Колумб плыл в Индию, а открыл Америку?
Будущее покажет, а пока пора застолбить тему несколькими заявками, и пускай у меня с годик эти патенты попылятся...
С Intel у меня получилось угадать. Интересно, получится ли с AMD?
Если и здесь угадаю, то буду менять профессию - пойду в экстрасенсы. Говорят, там больше платят и по телевизору показывают.
Кафедра Ваннаха: Мир без числа e
Автор: Ваннах Михаил
Опубликовано 19 октября 2011 года
Одним из самых популярных жанров ныне является альтернативная история. Ну, какие книги лидируют в магазинах на тему Великой Отечественной войны? Да рассуждения о том, как славно/ужасно было б, если бы Виссарионыч, опередив Алоизыча, первым напал на него 6 июля 1941 года – суждениям и контрсуждениям на эту тему отведено в ближайшей лавке 45 процентов погонной длины полок. И это вроде как среди истории.
А среди литературы fiction таких книг множество. Что было б, победи державы Антикоминтерновской Оси во Второй мировой. (Основоположник жанра – нынешний любимец Голливуда, что ли?) Что было бы, если б Англия вмешалась в Гражданскую войну в США. Что было б, если б мятеж декабристов увенчался успехом. (Весьма неплохая книга, кстати…) Что было б, если б Крым оказался островом...
Но вообще-то авторы альтернативной истории достаточно ограничены в своих выдумках. Меняются имена королей, названия выигранных битв… Но по большому счёту неважно, как звался улус, в котором стоит старинный русский город. Какой хан отвёл его своей любимой жене, и как её, жену эту, звали. Ход истории мало меняется, подари другой хан другой жене. Ну и альтернативная история, где, в нарушение принципов Бритвы Оккама, в реальную историю вмешиваются излишние сущности – маги, демоны, инопланетяне… Это уже уходит за пределы поджанра в фэнтези или научную фантастику.
А вот "твёрдой" альтернативной истории было б интересно, пожалуй, рассмотреть то, что действительно влияет на ход истории. Экономическую историю. Развитие производительных сил, которые, взаимодействуя с производственными отношениями, и модулируют ход истории человечества. И тут, кстати, учёные оказываются далеко впереди фантастов. Вот клиометрия, математическая история, обязанная своим появлением развитию численных методов и вычислительной техники.
Вряд ли все авторы художественных альтернативно-исторических книг вместе взятые оказали на общественной мнение такое влияние, как Роберт Фогель с его книгой 1974 года "Time on the Cross: The Economics of American Negro Slavery". В книге этой, в русском переводе - "Время на кресте: Экономика негритянского рабства", было показано, что рабский труд на хлопковых плантациях был бы эффективен вплоть до появления широкозахватных хлопкоуборочных комбайнов, каковое произошло на рубеже 1940-1950-х годов…
А во время Гражданской войны рабство было вполне эффективным, что и объясняет, почему Старая Добрая Англия с её весьма высокоразвитой и высокоэффективной текстильной промышленностью поддерживала Конфедерацию. (От прямого вмешательства её в том числе удержали нависшие над коммуникациями и жаждавшие реванша за Севастополь эскадры Лесовского и Попова…) Так что экономические корни Гражданской войны иные, нежели неэффективность рабства! Но невозможным рабство может сделать его экономическая неэффективность, а она зависит от развития технологий. От той силы знания, которая будет овеществлена в машинах.
А знание – оно неоднородно. Есть знания узкоспециальные, те которые ведомы лишь немногочисленным специалистам. Есть – широко распространённые. А есть универсальные, почти всеобщие. Те, с которыми мы сталкиваемся практически везде. Ну, в технологической инфраструктуре, во Второй природе, это, скажем, архитектуры процессоров, протоколы обмена, типовые интерфейсы. А в знаниях о Первой природе, природе естественной, также есть фактические стандарты…