Долгое время самым быстрым в мире процессором по пиковой производительности при выполнении операций с данными в формате с плавающей точкой оставался векторный процессор японского суперкомпьютера NEC SX-6 — 8 GFLOPS (столько же, сколько у процессоров самого мощного в мире суперкомпьютера NEC Earth Simulator). Однако недавно лидерству векторных процессоров пришел конец — их обогнал 64-разрядный PowerPC 970fx. Напомним, что это один из первых 64-разрядных микропроцессоров для настольных систем
В PowerPC 970 по сравнению с Power4 резко уменьшены число транзисторов (до 52 млн.), площадь (113 кв. мм при технологии 0,13 мкм, 66 кв. мм при 90 нм) и энергопотребление (42 Вт при частоте 1,8 ГГц для PowerPC 970 против 125 Вт для Power4 с тактовой частотой 1,3 ГГц). |
В настоящее время корпорацией IBM поставляются модификации PowerPC 970fx (G5 в «терминологии» компьютеров Apple) c тактовой частотой до 2,5 ГГц и пиковой производительностью до 10 GFLOPS. PowerPC 970fx — не первый 64-разрядный микропроцессор данной архитектуры. Первым был появившийся в 1998 году PowerPC 620. Это был очень сложный и неэкономичный процессор. Его площадь составляла 250 кв. мм. Столь больших микросхем Motorola, сотрудничавшая с IBM в разработке линии PowerPC, ранее никогда не выпускала. PowerPC 620 оказался неудачным в коммерческом плане, последующие 64-разрядные PowerPC-совместимые микропроцессоры в настольных системах никогда не применялись.
Что такое PowerPC 970? Фактически это «упрощенная» (downgrade) версия процессора Power4. Тот в свою очередь содержит два процессорных ядра, 1,5 Мбайт кэш-памяти второго уровня, контроллеры кэш-памяти L3 и процессорных межсоединений и при площади 415 кв. мм (для технологии 0,18 мкм) имеет 170 млн. транзисторов. Переход на технологию 0,13 мкм в Power4+ существа дела не меняет: ясно, что для настольных систем и маленьких серверов это неприемлемо.
Главный архитектор PowerPC Питер Сэндон осуществил в PowerPC 970 необходимые упрощения. Были упразднены одно процессорное ядро и названные контроллеры, объем кэш-памяти второго уровня был уменьшен до 512 Кбайт. Одновременно была резко увеличена длина конвейеров, чтобы легче можно было поднимать тактовую частоту. Даже новейший Power5 по пиковой производительности отстает от PowerPC 970fx (вариант PowerPC 970, выполненный по технологии 90 нм) из-за более низкой тактовой частоты. Наконец, в PowerPC 970 была добавлена поддержка мультимедийного расширения системы команд AltiVec.
Основу успеха PowerPC 970fx (конечно, наряду с технологией производства и конструкторским талантом Сэндона) заложили отличные характеристики Power4, в частности рекордное для RISC-микропроцессоров максимальное число команд, выполняемых за один такт (IPC), — пять (включая одну команду перехода). Это практически предел того, что могут «выжать» компиляторы на современных алгоритмах.
RISC и CISC — одно и то же
PowerPC 970 — настоящий 64-разрядный микропроцессор. Как, кстати, и Power4, имеющий 64-разрядные виртуальные адреса (64-разрядное «плоское» адресное пространство), 64-разрядные внутренние магистрали данных, 64-разрядные регистры общего назначения. Под адреса реальной памяти в обоих процессорах отводится 42 бит.
Все «внутренности» PowerPC 970 64-разрядные, но регистры AltiVec-расширения и соответствующие пути данных являются 128-разрядными. В PowerPC 970 имеется по 32 целочисленных регистра, AltiVec-регистра и регистра с плавающей точкой плюс по 48 регистров каждого типа для переименования.
Кэш инструкций первого уровня является прямоадресуемым с емкостью 64 Кбайт, в дополнение к нему имеется буфер предварительной выборки на 32 строки. PowerPC 970 может выбирать до восьми команд за такт. По оценкам IBM, применение вместо прямоадресуемого наборно-ассоциативного кэша позволило бы увеличить производительность всего на 1%. Кэш данных первого уровня имеет емкость 32 Кбайт и является двухканальным наборно-ассоциативным. Этот кэш блокируется, только если число «неразрешенных» промахов превышает восемь.
Интегрированный кэш второго уровня имеет емкость 512 Кбайт. Представляется, что можно было бы сделать и 1 Мбайт, как у х86-совместимых конкурентов от AMD и Intel, но в IBM стремились к дешевизне, упрощению и уменьшению энергопотребления. В кэш первого уровня может осуществляться предварительная выборка до восьми потоков данных. Шина кэш-памяти второго уровня работает на частоте микропроцессорного ядра. Если в кэше первого уровня используется контроль по четности, то во втором уровне — уже коды ЕСС.
Пропускная способность системной шины — еще одна ключевая характеристика для производительности PowerPC 970. На самом деле имеются две однонаправленные шины: одна для чтения, другая для записи в память. Обе имеют ширину 32 разряда и работают на частоте, в четыре раза меньшей частоты процессорного ядра. Для 1,8 ГГц в ядре, таким образом, получается 450 МГц у шин, а эффективная частота равна 900 МГц. Соответственно суммарная пропускная способность равна 7,2 Гбайт/с, по 3,6 Гбайт/с для чтения и записи. На шинах допускается расщепленная внеочередная обработка до 21 транзакции.
Поскольку на шинах применяется мультиплексирование данных, адресов и управления, пиковая скорость обмена данными с памятью равна 6,4 Гбайт/с. Процессоры Intel (Pentium 4 и Xeon) и AMD (Opteron и Athlon 64) используют двунаправленные шины, что при той же пропускной способности 6,4 Гбайт/с дает плюсы в виде более гибких возможностей распределения полосы пропускания. Это компенсируется ростом частоты системной шины с ростом тактовой частоты ядра PowerPC 970. Для 2,5 ГГц в ядре эффективная частота шины достигает уже 1,25 ГГц, а пропускная способность — 10 Гбайт/с! Это рекордные на сегодня показатели.
Разные конвейеры в PowerPC 970 имеют разную длину. Обычно при оценке длины конвейеров смотрят на целочисленный конвейер. Его длина в PowerPC 970 возросла до 16 стадий (против 12 в Power4; в G4+ cтадий было вообще 7). Целочисленный конвейер в PowerPC 970 — самый короткий. Конвейер загрузки регистров/записи в память имеет 17 стадий, конвейер для арифметики с плавающей точкой — 21 стадию, AltiVec-конвейеры — до 25 стадий. Из 16 стадий целочисленного конвейера 9 приходятся на выборку и декодирование команд (данная часть конвейера — общая для всех типов), что выглядит несколько великовато для RISC-архитектуры.
В IBM указывают на две причины роста числа начальных стадий конвейера. Во-первых, там проверяются возможные взаимозависимости команд (например, по данным), препятствующие их одновременному исполнению, и планируется объединение команд в группы диспетчеризации (см. ниже). Во-вторых, как это ни удивительно, более сложные RISC-команды расщепляются на более простые микрооперации. Например, команда «умножить и сложить» расщепляется на микрооперации умножения и сложения. Приходится вновь констатировать, что дурной пример заразителен. То же самое давно имеет место в х86-совместимых микропроцессорах Intel и AMD, но там-то команды из-за CISC-архитектуры могут быть сложнее.
Раз на это пошли в IBM, значит, в целях повышения производительности стало нужно сделать это и для RISC-команд. Так что налицо сближение в микроархитектуре RISC- и CISC-подходов (хотя, конечно, числом команд принципы RISC не ограничиваются).
Ядро ядра
Cовременные высокопроизводительные микропроцессоры все чаще становятся многоядерными. В микросхеме Power4 размещается два процессорных ядра. Кроме того, иногда говорят о микропроцессорном ядре внутри процессора. Если забыть о длине конвейеров, микропроцессорное ядро в PowerPC970 такое же, как в Power4, а кэш второго уровня является «внешним» по отношению к нему.
Это «вложенное» микропроцессорное ядро Power4/PowerPC 970 задает ключевые характеристики — суперскалярное выполнение (IPC=5), динамическое предсказание переходов и т. д. Логика предсказания переходов в PowerPC 970 использует три различные таблицы предсказания переходов по 16 тыс. строк. За такт можно предсказать до двух переходов.
PowerPC 970 выбирает за такт до восьми команд, диспетчеризует до пяти команд за такт, выдает в исполнительные устройства до восьми команд за такт и завершает выполнение до пяти команд за такт (поэтому максимум IPC равен 5).
Функциональных исполнительных устройств в PowerPC 970 — десять штук: два целочисленных, два для арифметики с плавающей точкой, два для загрузки/записи в память, два SIMD-устройства для команд AltiVec, устройство обработки переходов и устройство, работающее с регистром условий. Регистр условий может хранить до восьми кодов условий для восьми различных команд. Этот регистр используется в командах перехода.
Каждое исполнительное устройство имеет собственную очередь. В AltiVec-блоке очередей две: одна на 16 строк — в блок команд перестановок, слияния и пр., а вторая на 20 строк — к трем «подустройствам», выполняющим целочисленные SIMD-команды и команды с плавающей точкой. 128 бит данных используются при работе с векторами, имеющими элементы длиной 8, 16 или 32 бит для целых чисел и 32 бит для чисел с плавающей точкой.
Единицей диспетчеризации является группа в пять команд. Ядром 970fx «на лету» отслеживается 20 групп (100 команд) плюс еще команды, находящиеся на различных стадиях выборки, декодирования и записи в память, так что в сумме получается до 215 команд.
Производительность
Не вызывает никаких сомнений, что производительность PowerPC 970 очень высока, вопрос в том, до какой степени. Интересно, в частности, насколько велик вклад большой кэш-памяти IBM Power4 в результаты тестов SPEC CPU2000. Данные для Itanium 2 говорят о том, что уменьшение емкости кэша третьего уровня существенно снижает производительность. Интересно посмотреть, что будет при переходе от Power4+ к PowerPC 970fx? Кстати, новейший IBM Power5 с тактовой частотой 1,9 ГГц на тестах SPECfp2000 опередил Itanium 2. Это стало своеобразным реваншем RISC-архитектуры у IA-64.
Но здесь начинаются и некоторые охи: данных по производительности процессоров 970fx не так уж много. Имеются теоретические оценки для SPECint2000 и SPECfp2000 для PowerPC 970 с тактовой частотой 1,8 ГГц (937 и 1051 соответственно), но они датированы 2002 годом и, вероятно, занижены. Летом прошлого года по заказу Apple фирма Veritest провела некоторые тесты SPEC cpu2000 для G5 с частотой 2 ГГц, Pentium 4 на 3 ГГц и Xeon на 3,06 ГГц с использованием компиляторов gcc и NAGWare Fortran 95. G5 оказался впереди по данным SPECfp_base, SPECfp_rate_base и SPECint_rate_base, отставая по SPECint_base. Однако абсолютные оценки производительности не очень интересны, поскольку оптимизация в этих компиляторах, очевидно, далека от достигаемой в лучших компиляторах от IBM и Intel. Оптимизирующие компиляторы IBM для PowerPC 970 доступны в среде Mac OS и Linux. Apple приводит еще результаты тестов Linpack HPC для двухпроцессорных серверов XServe G5 (2 ГГц) — 9 GFLOPS против 8,2 GFLOPS для Xeon с тактовой частотой 3,2 ГГц.
Доступны также данные о некоторых приложениях. Как указывают в Apple, PowerMac G5 с частотой 2,5 ГГц на 98% быстрее Pentium 4 с частотой 3,4 ГГц на одном из тестов Adobe Photoshop CS 8.0 (Photoshop использует команды AltiVec) и на 129% быстрее на тесте по программе HMMER (поиск последовательности в геноме). Впрочем, пользователи приобретают компьютеры и кластеры на базе PowerPC 970, не дожидаясь появления более аккуратных тестов производительности. На базе PowerPC 970 с частотой 2 ГГц в Политехническом институте штата Вирджиния (США) был создан кластер, занимавший третью строчку в предпоследней версии списка Top500. Однако в настоящее время он в списке отсутствует, так как проводится модернизация его аппаратных ресурсов.
Кроме узлов кластеров, PowerPC 970 может использоваться в небольших серверах и рабочих станциях, имеются планы применения этих микропроцессоров во встроенных системах. Ну и, конечно, PowerPC 970fx используются в системах Apple PowerMac и XServe G5. Для небольших компьютерных систем по характеристикам производительности PowerPC 970fx сегодня единственный конкурент 64-разрядных х86-совместимых микропроцессоров.
У кого длиннее конвейер
К рекордным характеристикам микроархитектуры PowerPC 970 нельзя не добавить технологические данные: типоразмер 90 нм (меньше пока не бывает), «растянутый кремний» и SOI, 8-слойные медные соединения — словом, все «самое-самое», подтверждающее мнение о том, что лучшими в мире технологиями сегодня располагают в IBM.
Однако конвейеры у PowerPC 970 все-таки покороче, чем в Pentium 4 (20 cтадий в процессорах на ядре Northwood, а про Prescott и говорить нечего), а тактовая частота соответственно меньше — до 2,5 ГГц (на этой частоте Apple в своих компьютерах уже применяет жидкостное охлаждение). Для сравнения, Opteron достиг 2,4 ГГц, Pentium 4 — 3,4 ГГц.
Сравнительные характеристики
PowerPC 970 — настоящий 64-разрядный микропроцессор. Как, кстати, и Power4, имеющий 64-разрядные виртуальные адреса, 64-разрядные внутренние магистрали данных, 64-разрядные регистры общего назначения. Под адреса реальной памяти в обоих процессорах отводится 42 бит
PowerPC 970fx | Power4+ | PowerPC G4+ | |
Виртуальные адреса | 64 бит | 64 бит | 32 бит |
Реальные адреса | 42 бит | 42 бит | 36 бит |
Ширина путей данных | 64 бит | 64 бит | 32 бит |
Максимум IPC | 5 | 5 | 4 |
Длина целочислен-ного конвейера | 16 | 12 | 7 |
Число FPU | 2+AltiVec | 4 | 1+AltiVec |
Кэш первого уровня (инструкции/данные) | 64/32 Кбайт | 64/32 Кбайт | 32/32 Кбайт |
Кэш второго уровня | 512 Кбайт | 1,5 Мбайт | 256 Кбайт |
Достигнутая частота | 2,5 ГГц | 1,7 ГГц | 1,25 ГГц |
Число транзисторов | 52 млн. | 170 млн. | 33 млн. |