СMP, SMT, EPIC — три перспективных подхода к развитию архитектур высокопроизводительных микропроцессоров.
Подход EPIC еще не доказал своего превосходства, а многие RISC-процессоры уже «сдались», хотя сама RISC-архитектура и технические перспективы ее молодого потомства в лице RISC/SMT пока выглядят неплохо

У шахматистов бытует такое высказывание: угроза сильнее исполнения. Фраза эта удачно отражает и поведение ведущих игроков на рынке высокопроизводительных микропроцессоров в течение нескольких последних лет, последовавших за объявлением компаниями Intel и Hewlett-Packard о начале совместной разработки архитектуры IA-64. При этом HP заявила о постепенном отказе от развития собственной линии процессоров PA-8x00. Последствия реализации этой стратегии выглядели столь серьезно, что пошли разговоры о наступлении эпохи «пост-RISC» в лице архитектуры явного параллелизма на уровне команд (EPIC — главная особенность IA-64) и грозящей монополизации рынка 64-разрядных микропроцессоров.

Одной из первых «испугалась» SGI, объявив об отказе в будущем от разработок собственной линии процессоров R1x000 в пользу IA-64.

Основными потенциальными конкурентами перспективной архитектуры Intel/HP специалисты считали тогда Alpha и возможные разработки IBM. Процессоры Sun UltraSPARC, уступавшие в производительности, держались на вторых ролях, так что Sun Microsystems в этом раскладе в ряду наиболее серьезных конкурентов не рассматривали.

Хорошо известные задержки с появлением Merced, первого процессора архитектуры IA-64, успевшего получить новое название Itanium, и его некоторое отставание по производительности даже от 32-разрядных процессоров самой Intel, обладающих сегодня более чем вдвое высокой тактовой частотой (2,2 ГГц против 800 МГц), несмотря ни на что, общих тенденций не изменили. Теперь расстроенным рядам RISC грозит уже McKinley — следующий представитель семейства IA-64.

На этом повороте гонки на обочину собрался долголетний чемпион соревнований в производительности — Compaq Alpha. Пару лет назад стало известно, какую альтернативу EPIC собрались предложить разработчики Alpha 21464 (EV8) — это многонитевая архитектура SMT (Simultaneous Multi-Threading). Однако в середине прошлого года Compaq объявила об отказе от его дальнейшей разработки и окончательном переходе под знамена IA-64.

По времени это практически совпало с сообщением о предстоящем объединении Compaq с HP, и на горизонте просматривалась совместная работа инженеров сразу трех микропроцессорных грандов — Intel, Compaq и HP, причем вклад Compaq, вероятно, в первую очередь определялся SMT. Отметим, что над многонитевой архитектурой успешно работали и в Intel, которая в настоящее время планирует выпустить на рынок микросхему Xeon MP с поддержкой SMT. Первыми микропроцессорами, сконструированными при активном участии разработчиков Alpha, будут Montecito (появится в 2004 году) и Chivano (2005-2006 год).

Если не считать Sun UltraSPARC (см. табл. 1) и AMD (она, впрочем, также скоро выпустит 64-разрядные микропроцессоры Hammer), то в конкурентах у лагеря IA-64 остается только IBM. По крайней мере, для вычислений с плавающей запятой асимметричный ответ IBM — мультипроцессирование в микросхеме (CMP — Chip Level Multiprocessing) — в лице Power4 выглядит очень убедительно. Эти микросхемы, содержащие в себе два процессора, при тактовой частоте 1,1 ГГц вышли в лидеры по производительности.

За исключением CMP, во всем остальном Power4 — типичный суперскалярный RISC-процессор. Рискуя вызвать гнев специалистов, я все же назову также RISC-процессорами x86-совместимые Intel Pentium 4 и AMD Athlon. Да, формально они обладают классической CISC-архитектурой, однако по сути внутри это RISC. Действительно, CISC-команды аппаратно транслируются в RISC-подобные, и выполняются именно последние.

Серьезной альтернативой IA-64 могла бы стать архитектура Alpha EV8 (RISC+SMT). Вообще IA-64 действительно выглядит грозно, но уход соперников вовсе не обязательно диктовался исключительно техническим превосходством этой архитектуры. Огромное значение имели, очевидно, и экономические факторы, и не только потенциальное соотношение стоимость/производительность, но и собственно затраты на разработку и производство новых микропроцессоров — это гигантские суммы.

Как бы то ни было, подход EPIC еще не доказал своего превосходства, а многие RISC-процессоры уже «сдались», хотя сама RISC-архитектура и технические перспективы ее молодого потомства в лице RISC/SMT (или RISC/CMP) пока выглядят неплохо. Другое дело, что из производителей «настоящих» RISC-архитектур через несколько лет на рынке высокопроизводительных микропроцессоров (я не имею в виду, например, архитектуры MIPS и StrongARM для встроенных систем) могут остаться лишь IBM и Sun Microsystems.

Флагман уйдет в историю

Если причина исчезновения динозавров до сих пор остается неясной, то причина возможного исчезновения с рынка «чистых» RISC-процессоров хорошо известна. Производительность современных суперскалярных RISC-процессоров повышают в основном двумя путями — за счет роста тактовой частоты и за счет увеличения числа одновременно выполняемых за такт команд. Последнего добиваются увеличением числа функциональных исполнительных устройств, которые могут одновременно выполнять различные команды. Однако реальные программные коды не дают задействовать эти замечательные возможности процессора (см. табл. 3), причиной чего являются взаимозависимости между командами кода, мешающие их параллельному выполнению. Спекулятивное внеочередное выполнение команд, реализованное в наиболее «продвинутых» суперскалярных процессорах, ситуацию кардинально не улучшает.

Далее мы будем иллюстрировать проблемы RISC-архитектуры в основном на примере Alpha. Это связано с тем, что процессоры этого семейства многие годы были лидерами производительности — как целочисленной, так и с плавающей запятой. Поэтому наряду с x86 знание архитектуры Alpha стало чуть ли не обязательным для уважающего себя специалиста в данной области (по крайней мере, если судить по конференции comp.arch).

В табл. 2 представлены сводные данные, показывающие историю развития микропроцессоров Alpha, их ближайшее будущее, а также ранее рассматривавшиеся планы более отдаленного развития, которым теперь, увы, уже не суждено реализоваться.

Процессоры серий Alpha 21064 и 21164 были безоговорочными лидерами производительности. Переход же к серии Alpha 21264, которая обладает гораздо более сложной суперскалярной микроархитектурой с внеочередным спекулятивным выполнением команд, наложился на целый ряд организационных моментов — проблемы отношений с Intel, продажа собственного производства микросхем, приобретение DEC компанией Compaq, когда часть ведущих инженеров уволилась, а часть переехала на новое место работы. В результате процессоры Alpha 21264 появились на рынке с запозданием, в 1998 году.

Ближайшим шагом Compaq по развитию линии Alpha станет выпуск Alpha 21364. Они будут отличаться от 21264 в первую очередь наличием интегрированного в процессор кэша второго уровня емкостью 1,75 Мбайт, встроенным контроллером оперативной памяти (8-канальная Direct Rambus RAM) и наличием портов для прямой связи между различными процессорами. Естественно, предполагается, что строящиеся на этой базе компьютеры будут многопроцессорными. Однако в плане микроархитектуры 21364, помимо этих особенностей, мало отличаются от 21264.

Несостоявшийся архитектурный шедевр

Прорыв к новым вершинам производительности разработчики Alpha во главе с Джо Эмером планировали осуществить в Alpha 21464. В этих микропроцессорах наряду с сохранением ключевых особенностей Alpha 21364 (межпроцессорные каналы; большой интегрированный кэш; встроенный контроллер оперативной памяти) кардинальной переработке должно было подвергнуться ядро процессора. Так, максимальное число выдаваемых на выполнение за такт команд увеличивалось до 10 (поддерживаемое значение — 8), что отражало соответствующее увеличение числа функциональных исполнительных устройств.

Лучше понять побудительные мотивы разработчиков 21464 помогают данные табл. 3, которые говорят об удручающе низком значении реально достигаемого числа одновременно выполняемых за один такт команд (IPC). Дальнейшее увеличение в процессоре числа функциональных устройств становится невыгодным еще и потому, что аппаратный контроль за взаимозависимостями стремительно становится все более сложным и требует включения в микропроцессор больших аппаратных средств.

Здесь напрашивается и аналогия с распараллеливанием в многопроцессорных системах: c ростом числа процессоров их удельный КПД уменьшается.

Какие же возможные выходы из этой ситуации известны на нынешний день? Во-первых, это CMP. Идея этого подхода проста: «Давайте больше не будем увеличивать число функциональных устройств в микропроцессоре, а вместо этого разместим на одном кристалле, скажем, сразу два процессора, каждый из которых чрезмерно усложнять не надо». Проблема распараллеливания вычислений переносится на программный уровень. Пример реализации СMP — это Power4.

Другой выход, реализованный чуть раньше, — EPIC. В данном случае вводится система команд (скажем, IA-64), в которой явно отражена одновременность выполнения различными функциональными исполнительными устройствами нескольких обычных команд.

Наконец, третий выход, на котором остановились разработчики Сompaq Alpha, — многонитевая архитектура. Идея SMT состоит в следующем. Если наши приложения такие хилые, что не в состоянии сами съесть достаточно большой кусок пирога (то есть использовать одновременно большинство имеющихся в микропроцессоре функциональных устройств), — пусть поделятся с другими процессами (нитями), дав последним возможность выполняться одновременно. Первоначально идея подобной архитектуры реализовалась, пожалуй, лишь в процессоре МТА компании Tera, однако недавно, кроме Сompaq, о планах выпустить такие микропроцессоры объявила уже и Intel.

Поддержка SMT была добавлена в микроархитектуру Alpha 21264, что стало необходимым, учитывая очень высокое число функциональных устройств в этом процессоре. В 21264 имеется аппаратная поддержка до четырех контекстов нитей.

SMT разрешает одновременное выполнение команд более чем из одной нити, иными словами, на каждом такте на выполнение может выдаваться команда любой нити. Преимущество SMT состоит в том, что нити, которые достигают высоких значений числа выполняемых за такт команд, смогут использовать почти все ресурсы функциональных устройств, а нити с плохими показателями IPC будут разделять слоты выдачи команд на выполнение с другими подобными нитями.

Как это ни удивительно на первый взгляд, но добавление функциональности SMT в суперскалярные микропроцессоры стоит весьма дешево; так, в Alpha 21464 соответствующее увеличение площади кристалла за счет поддержки SMT не превышает 10%.

При поддержке SMT на четыре нити каждый процессор с точки зрения операционной системы будет выглядеть как четыре логических процессора. Исследования показали, что SMT позволяет увеличить производительность данного процессора на смеси задач (нитей) до двух раз. Однако не следует думать, что SMT дает исключительно одни преимущества. SMT ничего не дает для увеличения производительности одной нити. Более того, эта нить потеряет часть ресурсов (например, часть кэш-памяти процессора будет задействована под другие нити).

В качестве общих выводов можно указать прежде всего на возможности продолжения жизни RISC-процессоров путем внедрения архитектур SMT и/или CMP. Еще никто не доказал, что EPIC — всегда лучше (хотя лишь EPIC нацелена на рост производительности отдельных нитей). Кроме того, если раньше нам внушали, что программное обеспечение дороже «железа» и что нужно упрощать жизнь программиста, то теперь разработчики архитектур сдались, и все три подхода (СMP, SMT, EPIC) задачу достижения наивысшей производительности «спихнули» на программиста. Он теперь должен или распараллеливать свои программы, или — в случае EPIC — писать сложные коды, или использовать опять-таки очень сложный оптимизирующий компилятор.