Особенности микроархитектуры микропроцессора IBM POWER5
POWER5 - это девятое поколение 64-разрядной RISC-архитектуры IBM, и хотя в нем использованы многие решения, появившиеся в POWER4, считается, что его нельзя рассматривать как модификацию предшественника, - значительно изменилась конструкция кристалла, что позволило создавать более эффективные суперскалярные комплексы.
Кристалл POWER5 (рис. 16) состоит из 276 млн транзисторов, занимает площадь 389 кв. мм и изготовляется по проектным нормам 0,13 мкм с применением технологий медных проводников и "кремний-на-изоляторе", позволяющих достичь большей производительности и снизить энергопотребление (площадь кристалла POWER4, изготовлявшегося по технологии 0,18 мкм, была равна 414 кв. мм, а у его выпущенной в конце 2002 г. модификации POWER4+ она уменьшилась до 267 кв. мм благодаря переходу на технологию 0,13 мкм). На нем размещены два одинаковых процессорных ядра PowerPC и общая кэш-память второго уровня (L2) объемом 1,875 Мбайт, выполненная в виде трех отдельных блоков, у каждого из которых имеется свой отдельный контроллер (у POWER4 объем L2 составлял 1,5 Мбайт). Физический адрес данных определяет, в каком блоке L2 находятся данные. Каждое из процессорных ядер может независимо обращаться к любому из трех контроллеров L2. Тактовая частота POWER5 составляет от 1,5 до 1,9 ГГц.
Одно из главных новшеств в конструкции кристалла по сравнению с POWER4 - это интегрирование в микросхему кэш-памяти третьего уровня (L3) c объемом 36 Мбайт (в предыдущем поколении процессора 32-Мбайт кэш L3 располагался вне кристалла). Благодаря переносу кэша L3 ближе к процессорному ядру при отсутствии нужных данных в кэш-памяти L2 ему намного реже придется обращаться за пределы кристалла, за счет чего в SMP-системе уменьшается обмен данными между кристаллами. В результате, если системы на базе POWER4 не могли масштабироваться до числа процессоров свыше 32, поскольку это привело бы к резкому увеличению задержек из-за увеличения межпроцессорного трафика, то POWER5 обеспечивает построение 64-процессорных конфигураций. Кроме того, переход на проектные нормы 0,13 мкм позволил конструкторам POWER5 интегрировать в него и контроллер памяти и избавиться от микросхемы, которая в POWER4 отвечала за управление памятью, что также обеспечило дополнительное сокращение латентности считывания данных из памяти.
Рис. 16. Схема блоков POWER5 очень похожа на POWER4, но отличается большей степенью интеграции компонентов.
Структура конвейера команд POWER5 осталась полностью идентичной той, что применялась в POWER4, причем не изменились и величины задержек. Такая преемственность должна обеспечить полную совместимость нового процессора с приложениями, разработанными для его предшественника.
Четыре кристалла POWER5 (восемь процессорных ядер) вместе с четырьмя кристаллами L3 упаковываются в многокристальный модуль Multichip Module (MCM) размером 95x95 мм (в младших моделях RISC-систем на базе POWER5 используется двухкристальный модуль Double chip Module, DCM). MCM состоит из керамической подложки и 89 слоев металла и имеет 4491 ввод-вывод. Два MCM образуют так называемую book. Частота внутренних шин MCM (Intra Book) теперь равна тактовой частоте процессора, в то время как в POWER4 они работали вдвое медленнее процессора.
Для объединения MCM используется смешанная инфраструктура из шин и распределенного коммутатора - каждый модуль имеет четыре логические шины, позволяющие построить кольцо из четырех MCM. Соединяющая MCM восьмибайтная шина (Inter Book) по-прежнему работает на половине тактовой частоты процессора и обеспечивает пропускную способность 4 Гбайт/с. Для соединения шин применяется усовершенствованная версия распределенного коммутатора, разработанного для POWER4. Число шин увеличилось, что позволило повысить суммарную пропускную способность по сравнению с POWER4. Шина GX используется для соединения ввода-вывода через высокопроизводительный коммутатор или хаб к адаптерам PCI-X.
Обычные процессоры выполняют команды из одного потока инструкций. Несмотря на успехи микропроцессорных технологий, степень использования исполнительного блока современных процессоров обычно не превышает 25%. Для увеличения этого показателя конструкторы микропроцессоров применяют параллелизм на уровне потоков, позволяющий одному физическому процессору выполнять команды из нескольких потоков. При этом операционная система "видит" физический процессор как два логических.
IBM в появившемся в 2000 г. сервере eServer pSeries 680 с процессорами PowerPC RSIV (S-Star) применила так называемую грубую (coarse-graining) многопоточность - в каждый момент времени выполнялся только один поток команд. Если же при выполнении команды потока возникала значительная задержка (например, в кэше отсутствовали необходимые данные), то процессор переключался на другой поток, что уменьшало его простаивание. Однако оба потока совместно использовали многие системные ресурсы (например, архитектурные регистры), поэтому на переключение между потоками тратилось несколько тактов.
В POWER4 многопоточность была реализована на аппаратном уровне - каждое из двух процессорных ядер выполняло свой поток команд, но при задержке выполнения одного потока ресурсы обслуживающего его ядра нельзя было передать другому потоку.
Наконец, в POWER5 применена одновременная многопоточность (simultaneous multithreading, SMT), при которой процессорное ядро может запрограммировать порядок параллельного выполнения команд из нескольких потоков. SMT позволяет системе динамически подстраиваться - если возникает длительная задержка при выполнении команды одного потока, то все ее исполнительные блоки временно передаются другому потоку. Теоретически SMT можно реализовать не только для двух, но и для большего числа потоков, однако разработчики POWER5 считают, что это значительно усложнит механизм многопоточности, но не даст серьезного выигрыша в производительности.
Как отмечают аналитики, реализация SMT в POWER5 совершеннее, но в то же время сложнее используемой в процессорах Intel Xeon технологии Hyper-Threading - например, логика SMT и необходимое для ее работы дублирование ресурсов занимают 24% процессорного ядра, в то время как у Xeon только 5% кристалла используются для многопоточности.
Рассмотрим, как работает механизм SMT. Как и предшественник, POWER5 содержит два блока load/store, два блока арифметики, блок ветвлений и два блока вычислений с плавающей точкой. Команда последовательно проходит через эти блоки за несколько тактов процессора. Для получения максимума производительности требуется, чтобы в течение каждого такта каждый блок выполнял разные команды, однако на практике редко удается добиться загрузки всех блоков, и часть их работает вхолостую.
SMT позволяет загрузить неиспользуемые в течение такта блоки командами из второго потока, т. е. вместо последовательного выполнения команд из двух потоков эта технология реализует их параллельную обработку.
В POWER5 каждое процессорное ядро может одновременно обрабатывать два потока команд, т. е. работает как два логических процессора, а сам кристалл - как четыре логических процессора. Команды обоих потоков извлекаются из одного и того же кэша инструкций первого уровня (L1) и вместе загружаются в исполнительные блоки (конвейер процессора).
В идеале оба потока команд после считывания из кэша инструкций должны проходить через конвейер и использовать ресурсы физического процессора без конфликтов между потоками. В этом случае применение SMT удваивает производительность процессора. Однако если между потоками возникнет конфликт из-за ресурсов процессора, то одному из них придется ждать, и прирост производительности оказывается меньше 100%.
SMT организует выполнение команд из потоков следующим образом: несколько команд из каждого потока можно загрузить в набор конвейеров в течение каждого такта. Любые пять команд из обоих потоков, представляющие до двух операций load/store, двух операций двоичной арифметики, двух операций с плавающей точкой и ветвление, можно загрузить в один конвейер в течение одного такта. За один такт по стадиям конвейера проходит только одна команда из одного из потоков. Физический процессор определяет порядок выполнения команд на основе набора правил с учетом зависимости операндов, времени ожидания обработки команд и необходимости внеочередного выполнения некоторых команд.
Каждый физический процессор содержит L1 кэш данных и L1 кэш команд, которые совместно используются обоими логическими процессорами. Как говорилось выше, кэш L2 у физических процессоров (ядер) POWER5 общий, поэтому он совместно используется четырьмя потоками команд.
Для улучшения производительности SMT при выполнении различных приложений в POWER5 реализованы динамическая балансировка ресурсов и подстраиваемый приоритет потоков. Первая из этих функций следит за тем, чтобы общие для обоих потоков ресурсы не оказались заняты одним из них. Например, если у одного потока несколько раз подряд возникало непопадание в кэш L2, то его команды остаются в очереди, и потому замедляется выполнение команд второго потока. Для предотвращения подобных ситуаций логика балансировки нагрузки определяет, что первый поток превысил пороговое значение непопаданий, после чего в зависимости от конкретной ситуации она может уменьшить его приоритет либо временно запретить декодирование его команд.
Подстраиваемый приоритет потоков позволяет программно (на уровне ОС, ПО промежуточного слоя или приложений) определять, что одному из потоков должна предоставляться большая часть ресурсов выполнения. Микропроцессор POWER5 поддерживает восемь уровней приоритета: уровень 0 означает, что поток не выполняется, а уровень 7 соответствует наивысшему приоритету потока. Потоку с более высоким приоритетом предоставляются дополнительные такты декодирования команд (рис. 17). Если у обоих потоков уровень приоритета 1 или 0, то это означает, что процессор может перейти в энергосберегающий режим.
Рис. 17. Влияние приоритета потоков на производительность.
По данным IBM, применение SMT в системах корпоративного уровня улучшает производительность при обработке транзакций баз данных и выполнении пакета WebSphere примерно на 35%, приложений SAP - на 28% и ПО Domino R6 Mail - на 45%.
Однако далеко не все приложения получают выигрыш от SMT; например, применение многопоточности может отрицательно сказаться на производительности, если приложению требуется использовать всю полосу пропускания обмена данными с памятью. В таких случаях POWER5 автоматически переходит в однопотоковый режим (single-thread, ST), при котором активный поток получает все физические ресурсы кристалла.
Применение SMT означает, что за такт каждое процессорное ядро выполняет больше команд, что увеличивает энергопотребление ядер и самого кристалла. Для решения этой проблемы в POWER5 существует механизм временного отключения тех компонентов процессора, которые не будут использоваться во время следующих тактов, а также переход в энергосберегающий режим при низком приоритете обоих потоков.
Cейчас POWER5 используется в пяти моделях RISC-серверов IBM младшего и среднего класса - трех из серии pSeries (eServer p5) и двух из серии iSeries (eServer i5). Помимо нового процессора, в этих машинах применены и другие технологические новшества - например, p5 стали первыми Unix-серверами, позволяющими создавать логические разделы внутри физического процессора (до сих пор эту функцию поддерживали только мэйнфреймы и серверы iSeries). В i5 расширены возможности виртуализации и выделения ресурсов по запросу, реализована поддержка используемой в pSeries ОС AIX.
Наиболее интересными из новых моделей eServer на базе POWER5 следует признать 16-процессорный p5 570 и его двойника i5 570 (как и в случае POWER4, число процессоров в машине определяется по числу ядер, а не кристаллов). Эти серверы строятся из четырехпроцессорных модулей, объединяемых с помощью фирменной технологии SMP Flex в SMP-систему, что позволяет масштабировать ее от двух до 16 процессоров путем установки дополнительных модулей. По тестам производительности p5 570 оказался единственной 16-процессорной системой, попавшей в первую десятку некластерных систем, и уступает по результатам только IBM eServer p690 (Regatta) с 32 процессорами POWER4+ и 64-процессорному HP Integrity Superdome.