"Эй, вы, там, на том берегу..."

22 июль, 2003 - 23:00Виктор Картунов Нет-нет, увы, эта машина еще не попала в Тестовую лабораторию "Компьютерного Обозрения", поскольку она пока недоступна не только в Украине, но и на американском рынке. Apple лишь анонсировала модели, которые построены на новом процессоре G5, созданном совместно с IBM. Последняя параллельно объявила о процессорах Power4+ и PowerPC970 (он же G5). Вот о них, собственно, и пойдет речь.

"Эй, вы, там, на том берегу..."
Рис. 1
Поскольку два этих чипа находятся в некоем родстве, начнем с рассмотрения концептуальных схем каждого из них. Сразу отметим, что PowerPC970 базируется на ядре Power4+, что хорошо заметно на соответствующей блок-схеме (рис. 1).

Итак, что же представляет собой PPC970? Фактически это "урезанный" Power4+, у которого упрощена подсистема кэша (нет кэша третьего уровня), проще подсистема памяти, а также отсутствует второе ядро на кристалле. Зато подобный подход позволил поднять частоту до 1,8 GHz (Apple заявила о 2 GHz, но, насколько нам известно, PPC970 c таким показателем пока не поставляются), а в перспективе до 2,2--2,4 GHz, попутно сделав типичное тепловыделение весьма низким -- порядка 42 Вт при частоте 1,8 GHz и напряжении 1,3 В. Кроме того, была значительно снижена площадь кристалла (до 118 мм2), что в свою очередь обеспечило вполне приемлемую себестоимость данного чипа. Изначально IBM ориентировала Power4+ на серверный сегмент, в котором цена не является первостепенным фактором.

Каковы же характеристики процессора PPC970? Вот основные:
  • кэш инструкций объемом 64 КВ;
  • 32-входовый буфер инструкций;
  • предварительное декодирование до 8 инструкций за такт;
  • 2-входовый кэш данных на 32 КВ;
  • 32 64-битных регистра общего назначения, 32 64-битных регистра FP и 32 128-битных регистра для SIMD-набора Vector Engine;
  • 512 КВ 8-канального частично-ассоциативного L2-кэша;
  • предзагрузка (prefetch) до 8 потоков данных;
  • декодирование и исполнение одной группы (4 инструкции + условный переход) за такт (чуть ниже мы поясним смысл термина "декодирование");
  • до 20 активных групп одновременно;
  • до 8 отдельных исполняющих устройств могут в одно и то же время выдавать результат (у Athlon XP -- 9 устройств, у Pentium 4 -- до 5-ти);
  • обработка более 200 инструкций "на лету";
  • суммарная длина конвейера -- 17 стадий.
Результаты теста SPEC для некоторых современных CPU
Как мы видим, характеристики нового процессора выглядят весьма и весьма достойно, ничем не уступая и вполне на уровне современных х86 CPU. При этом необходимо пояснить достаточно интересную особенность G5. Дело в том, что PPC970 использует внутренний набор инструкций, резко отличающийся от внешнего. Эта черта роднит его с процессорами х86, которые также преобразуют внешние, нерегулярные команды х86 переменной длины во внутренние команды (либо их последовательности) одинаковой длины. Но то, что привычно видеть на х86, очень необычно наблюдать на RISC-процессорах, одной из ключевых особенностей которых всегда считался именно набор простых коротких команд. Как известно, "история -- дама с юмором", и одно время апологеты PowerPC утверждали, что система команд х86 настолько "уродлива", что ее надо превращать в "правильный RISC" внутри чипа. Было бы любопытно послушать их комментарии теперь. Впрочем, необходимость такого преобразования достаточно очевидна, особенно если вспомнить о том, что РРС970 поддерживает набор мультимедийных инструкций VectorEngine -- а это ни много ни мало 162 команды. Естественно, разумнее превращать их во внутренние микроинструкции, чем исполнять напрямую -- уж слишком в таком случае усложнится оборудование. По сути, VectorEngine -- это коммерческое название от фирмы IBM для технологии, которая разрабатывалась совместно IBM, Apple и Motorola, и у последней носит название AltiVec. Указанная технология решает те же задачи, что и MMX/SSE/SSE2 от Intel, -- ускоряет обработку однотипных данных, которые часто встречаются в мультимедийных приложениях.

Исполнительные устройства PPC970 содержат:
  • 2 Load/Store Units (64 b for GPR, FPR; 128 b for SIMD) (модули загрузки/выгрузки данных);
  • 2 Fixed Point Units (устройство вычисления чисел с "фиксированной" точкой);
  • 2 IEEE Floating Point Units (Single-, double-precision) (модуль вычисления чисел с "плавающей" точкой);
  • 2 SIMD Sub-Units (VectorEngine compatible) (набор мультимедиа-инструкций, функциональный аналог ММХ/SSE/SSE2);
  • Branch Unit (модуль предсказания переходов);
  • Condition Register Unit (модуль восстановления регистров -- процессор выполняет переименование регистров, по окончании действий данный модуль отвечает за возврат к "основному состоянию").
Опять же, все вполне достойно, на весьма современном уровне. Конечно, PPC970 способен к спекулятивному выполнению, умеет осуществлять внеочередное исполнение команд -- в этом смысле ему досталось хорошее "наследство" от Power4+. Необходимо еще добавить достаточно "продвинутую" подсистему ввода/вывода: у G5 присутствуют две однонаправленные (каждая в свою сторону) 32-битные шины, работающие на четверти скорости ядра. То есть для процессора 1,8 GHz частота шины составляет 450 MHz. Поскольку шина использует DDR-технологию (передача 2 раза за такт, по восходящему и нисходящему фронту сигнала; пользователям х86 данная технология знакома по шине EV6, применяемой в системах на базе Athlon XP), то IBM говорит о частоте 900 MHz. Предваряя вопрос, напомним, что в компьютерах на базе Pentium 4 используется так называемая технология Quad Pumped Bus, при которой данные передаются четыре раза за такт. IBM утверждает, что новая шина способна предоставить до 6,4 GBps данных (в теории 7,2 GBps, сравним с теоретическими 6,4 GBps для шины Pentium 4 с 800 MHz).

"Эй, вы, там, на том берегу..."
Рис. 2
Достаточно интересно, что в этом PPC970 напоминает Opteron -- у того очень похожая "шина" данных, представляющая собой линк Hyper Transport, пропускающий 3,2 GBps в каждую сторону. Трудно сказать, что же окажется быстрее -- две более узкие шины или одна широкая. Скорее всего, ответ на вопрос, кто выиграет в таком сравнении, будет зависеть от характера нагрузки на шину. Если у нас, например, данные читаются в кэш, то более "широкая" шина Pentium 4 считает их быстрее (при прочих равных условиях). Однако при большой нагрузке, по-видимому, более предсказуемо и эффективно ведет себя система из двух однонаправленных шин. Чтобы яснее себе это представить, давайте припомним дорожное движение. Интуитивно понятно, что на широкой дороге мы выиграем в ситуации, когда все (или хотя бы большинство) машин едут в одном направлении. А вот в случае приблизительно одинакового трафика две односторонние полосы имеют преимущество. Что ж, по данному параметру PPC970 действительно одержал победу, как минимум маркетинговую, -- в "пользовательском" классе он обладает самой быстрой подсистемой ввода/вывода! Также отметим, что процессор поддерживает 42-битную адресацию (точнее, из 64-битной теоретической адресации чип умеет работать с 42-битным адресным пространством -- это приблизительно 4096 GB оперативной памяти, т. е. более чем достаточно для данного поколения систем).

Примечательно, что количество Load/ Store Unit у РРС970 удвоилось по сравнению с предшественником, G4e. Теперь имеется два универсальных (т. е. обрабатывающих и целочисленные, и FPU-данные) блока загрузки/сохранения, тогда как у G4e был один. Разумеется, такое изменение внесет свой вклад в повышение эффективности работы чипа.

Заметно выросла также производительность подсистемы памяти -- теперь используется двухканальная DDR400, что позволяет в теории рассчитывать на 6,4 GBps. Это огромный шаг вперед по сравнению с приблизительно 1,2 GBps в компьютерах на G4e.

Посмотрим теперь внимательно на процессорное ядро PowerPC970 (рис. 2).

Мы видим 12 исполнительных блоков, отсортированных по нескольким "секциям". Собственно, такой подход характерен для всех современных чипов -- нового здесь ничего нет. Эти блоки являются функциональными аналогами таких же устройств в Pentium 4 и Athlon XP, поэтому все достаточно знакомо.

Многие существующие процессоры (как G4e, так и их собратья из мира х86 -- Athlon XP и Pentium 4) делят все инструкции на две категории: простые (например, ADD), в большинстве своем исполняющиеся за один такт, и те, которые требуют больше времени, занимая исполнительные блоки много тактов (например, деление). Но PPC970 не совсем таков -- вместо специализированных исполнительных устройств ALU у него есть два универсальных IU, способных обрабатывать оба типа инструкций, и простые, и сложные. Правда, некоторая дополнительная внутренняя специализация все же имеется -- так, инструкции с "фиксированной" точкой поступают лишь на первое устройство (IU), а деление осуществляется только на втором.

К превеликому сожалению, IBM не сочла нужным публиковать достаточно специфическую информацию о задержках исполнения инструкций на PPC970 -- это позволило бы сравнить эффективность реализации конвейера. Однако из документации к Power4+, прямым родственником которого является PowerPC970 (напомним, что получить PPC970 из Power4+ можно, убрав второе ядро, урезав мультипроцессорную логику, упростив подсистему кэшей и добавив мультимедийный набор Vector Engine), известно, что бoльшая часть инструкций исполняется один такт, а некоторая часть -- два и более тактов. Также известно, что независимые друг от друга инструкции могут финишировать каждый такт, а вот зависимые -- каждый второй. Однако данная информация носит слишком общий характер, чтобы можно было напрямую сравнить G5 с чипами х86. Хотя в документации по Power4+ указано, что длина конвейера достигает 17 стадий. Это достаточно много -- например, у Pentium 4 общепринятая длина конвейера составляет 20 стадий. Здесь мы говорим "общепринятая", поскольку именно данная цифра фигурирует в маркетинговых документах; но встречаются ситуации, когда задержки соответствуют конвейеру в 30--35 стадий, а бывают такие, когда Pentium 4 демонстрирует эффективное значение длины конвейера в 10--11 стадий.

Похоже, что задержек исполнения у PPC970 по многим операциям немного больше, чем у G4e или Pentium 4, не говоря уж об Athlon XP. При этом частота, которой уже достиг Pentium 4, заметно выше: 3,2 GHz вместо 1,8 GHz (в перспективе 2,2 GHz) у PPC970. Конечно, не частотой единой живы процессоры, но результат настораживает. Тем более, что даже Athlon, имея конвейер в 10 стадий и не меньше исполнительных устройств, достигли частоты 2,2 GHz. Безусловно, по сравнению с частотой предыдущего поколения чипов для Apple даже 1,8 GHz выглядит существенным рывком, однако не будем забывать, что и Intel, и AMD не стоят на месте и собираются сделать новый шаг вперед.

Достаточно важную подробность представляет собой количество "архитектурных" и "физических" регистров. Например, G4e имел 32 архитектурных и 16 регистров "переименования", всего 48. Pentium 4 может "похвастаться" 8 архитектурными регистрами общего назначения и 120 (!) -- переименования. Для Athlon первая цифра, естественно, совпадает с Pentium 4, а вторая близка к 100. С этой точки зрения PPC приблизился к х86 -- у него 32 архитектурных и 48 регистров переименования, всего 80. Что ж, налицо заметное продвижение вперед по сравнению с предшественником. Похоже, что Apple не зря "изменила" Motorola с этим процессором!

К сожалению, остается только посетовать на IBM, которая скрывает детали реализации архитектуры PPC970. Например, нам не удалось раздобыть данные о задержках и пропускной способности кэшей первого и второго уровней. Если предположить, что кэш первого уровня не переделывался, то задержка обращения к нему у PPC970 составляет столько же, сколько у Power4+, -- 1 такт! Это весьма малый показатель для размера кэша в 64 + 32 KB! Сложнее сказать что-то вразумительное про кэш второго уровня. В документации Apple приведена пропускная способность кэшей первого и второго уровней -- до 64 GBps и до 32 GBps соответственно (для частоты 2 GHz). За неимением других цифр пока примем эти.

Также нет никаких значащих сведений о задержках работы Load/Store Unit, отсутствуют эти характеристики и для SIMD-инструкций... Приходится констатировать, что IBM не считает нужным доносить подробности архитектуры до пользователей -- вместо этого она публикует маркетинговые цифры наподобие "производительности" 14,4 GFlops на частоте 1800 MHz. Так-то оно так, но "нюанс" заключается в том, что такая пиковая производительность достигается только в теории и только с 32-битными данными для SIMD-инструкций. Соответственно ни о каком серьезном применении (наука, технические расчеты, бизнес-процессы) при такой "точности" FPU говорить не приходится, удел такой точности -- мультимедиа-приложения.

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

Что можно сказать по этим данным? Во-первых, виден весьма большой разрыв между Power4+ и PPC970 -- особенно на SPECfp_base 2000. Фактически в полтора раза -- при том, что частота у G5 даже выше. Вот как сказывается 1,5-мегабайтовый кэш второго и быстрый 8-мегабайтовый кэш третьего уровней у Power4+ по сравнению с 512 KB кэша второго уровня у РРС970 (напомним, что второе ядро у Power4+ отключалось, поскольку тест принципиально однопроцессорный)!

Во-вторых, видно, что в SPECint_base новый чип, мягко говоря, не блещет. Причем, кстати, даже Power4+, при всей своей астрономической стоимости, заметно уступает да-же наиболее дешевому из оставшихся -- Athlon XP 3200+. Надо признать, что в гонке "AMD против Intel" в выигрыше остался покупатель -- налицо преимущества жесточайшей конкурентной борьбы. Той самой, которая попутно подняла производительность процессоров х86 на недосягаемую для остальных высоту.

В-третьих, интересно сравнить показатели PPC970 и Opteron 144. Они изготавливаются на сходных технологических процессах (0,13 мкм SOI), обладают одинаковой частотой и достаточно сходными показателями работы. Правда, в данный момент Opteron 144 имеет некоторый шанс "подрасти" в производительности после выхода оптимизированного компилятора, -- но и программисты IBM не будут стоять на месте. Достаточно забавное наблюдение, согласитесь. А если еще припомнить, что IBM и AMD вместе проводят исследования... Впрочем, теория заговоров ныне непопулярна.

В-четвертых, все же показатели PPC970 находятся на весьма приемлемом сегодня уровне. Остается задать себе вопрос -- а будут ли они таковыми завтра? Будем надеяться, что да. В любом случае, переход на PPC970 -- по сути своей, огромное подспорье для Apple.

Подытоживая, можно отметить, что, несмотря на долю критики, сам чип получился весьма достойным и вполне соответствует современному этапу "процессоростроения". Остается только дождаться реальных машин на нем и вот тогда провести полноценное тестирование и сравнение.