Обзор микроархитектур современных десктопных процессоров. Часть 2
Страница 8. IBM PowerPC 970


IBM PowerPC 970

После выхода из декодера сформированные группы, содержащиеh2h2h2h2 до пяти МОПов каждая, помещаются в буфер переупорядочения. Размер буфера переупорядоченияh2 составляет 20 групп (до 100 МОПов). Новая группа МОПов также копируется в очереди планировщика, из которых операции будут запускаться на исполнение.

В процессоре PPC970 имеется большое количество очередей планировщика, специфичных для каждой группы функциональных устройств: 4 очереди для устройств арифметики с плавающей точкой (по 5 элементов каждая), 4 очереди для целочисленной арифметики и для адресных операций (по 9 элементов), 2 очереди для операций с регистрами условий (по 5 элементов), 1 очередь для операций перехода (12 элементов), 2 очереди для операций перестановок в векторном блоке VMX (по 8 элементов), и 2 очереди для арифметических операций VMX (по 10 элементов) (Рис. 11).



Рис. 11

Каждая из этих очередей соответствует определённой позиции МОПа в группе (от 0 до 4). В позицию 4 (последнюю в группе) декодер помещает только операцииh2h2h2h2h2h2 перехода. Операции арифметики с плавающей точкой, целочисленные и адресные операции могут располагаться в любой из оставшихся четырёх позиций — для каждой из них предназначена отдельная очередь. Операции с регистрами условий декодер всегда помещает в позиции 0 или 1, операции перестановок VMX — в позиции 0 или 2, арифметические операции VMX — в позиции 1 или 3, и операции целочисленного деления — в позиции 1 или 2. Порядок следования операций внутри группы сохраняется. При необходимости декодер оставляет промежуточные позиции в группе незанятыми, что ведёт к неполному заполнению группы. Таким образом, идея статической привязки МОПов к очередям планировщика и функциональным устройствам доведена в процессоре PPC970 до совершенства.

Все очереди планировщика (кроме единственной очереди для операций перехода)h2 сгруппированы по две, и к каждой такой паре очередей подсоединеноh2 соответствующее функциональное устройство. Для запускаh2на исполнение в каждом такте из такой сдвоенной очереди выбираетсяh2самый старый из МОПов, аргументы которых уже вычислены либо вычисляютсяh2 и будут готовы к моменту попадания в функциональное устройство.h2Из каждой сдвоенной очереди для целочисленных и адресных операций на исполнение может быть отправлено два МОПа — по одному в соответствующееh2 арифметическое (IU1/IU2) и адресное (LSU1/LSU2) устройства. Изh2каждой сдвоенной очереди FPU на исполнение отправляется один МОПh2 — в соответствующее устройство FPU1/FPU2. По существу, каждая пара очередей проявляет себя как единая очередь двойного размера.

Очереди для устройств FPU и IU/LSU сгруппированы таким образом, что позиции МОПа в группе 0 и 3 соответствуют одному устройству, а позиции 1 и 2 — другому. Это сделано для того, чтобы МОПы по возможности равномерно распределялись между устройствами и обеспечивалась сбалансированная загрузка последних. Для избежания дисбаланса в загрузке устройств транслятор или программист должны придерживаться определённой дисциплины при генерации инструкций. Например, МОПы одного типа должны располагаться с дополнительным интервалом в одну позицию — в этом случае они попадут в разные пары очередей и, соответственно, в различные устройства. Если же допускать размещение МОПов одинакового типа по соседству, то может оказаться, что они оба попадут в одну очередь. В неудачном случае это может привести к половинной загрузке устройств одного типа, а при случайном распределении средняя загрузка составит 3/4 от оптимальной. Таким образом, правила генерации кода для процессора PPC970 напоминают правила для процессоров архитектуры с очень длинным машинным словом (VLIW), когда каждая позиция инструкции в машинном слове (бандле) привязана к определённому функциональному устройству (такова, например, организация процессоров архитектуры Intel IA-64).

Несбалансированная загрузка функциональных устройств, обусловленнаяh2h2h2h2h2 жёсткойh2 привязкой к позициям МОПов в группе, частично компенсируется избыточнымh2 количеством этих устройств, а также значительным суммарным размеромh2h2 очередей планировщика. Тем не менее, неплотное размещениеh2 МОПов в группах (и, как следствие, в буфере переупорядочения) в сочетании с неполным использованием устройств не позволяют рассматриватьh2 PPC970 как процессор, полноценно обрабатывающий по пять операций за такт в двух комплектах основных функциональных устройств. Тесты производительности подтверждают такую оценку.

Производительность процессора на целочисленных операциях ограничивается ещё из-за того, что латентность таких операций составляет 2 такта (а не 1 такт, как в большинстве конкурирующих процессоров). Функциональное устройство успевает выполнить операцию за один такт, но ещё один такт требуется для передачи результата на вход зависимой операции.

Каждое из двух устройств арифметики с плавающей точкой может выполнять одну комбинированную операцию 64-битного умножения со сложением (FMADD) за такт с латентностью 6 тактов. Операции умножения (FMUL) и сложения (FADD) представляют собой упрощённые варианты такой комбинированной операции. Предельный темп выполнения арифметических операций FPU соответствует, таким образом, четырём операциям за такт (при чередовании умножения и сложения). Это вдвое выше, чем у нынешних конкурирующих процессоров (P-4 и K8), и соответствует новому процессору Intel Core (P8). Однако подобный темп достижим только для определённых алгоритмов типа перемножения матриц. На обычной скалярной обработке в основном используются раздельные инструкции FMUL и FADD, поэтому добавочный эффект от комбинированных инструкций FMADD должен быть невелик, и потенциал FPU процессора PPC970 лишь немного превзойдёт аналогичную характеристику конкурентов с полночастотной реализацией скалярных операций (K8 и P8). В свою очередь, при использовании упакованного режима SSE2 процессор P8 будет иметь превосходство в производительности.

В каждом такте может быть произведено два 64-разрядных считывания из L1-кэша и одна 64-разрядная запись в L1-кэш. В целом такого темпа чтения из кэша достаточно для достижения полной производительности FPU. При реализацииh2 плотных вычислительных циклов (например, в алгоритме перемноженияh2матриц) могут потребоваться дополнительные операции загрузкиh2 из кэша, однако наличие большого числа регистров FPU позволяетh2 в ряде случаев обойти это требование. Поэтому в благоприятныхh2h2h2 случаях темп работы FPU может вплотную приближаться к пиковому.

Помимо обычного FPU, в процессоре PPC970 имеется отдельный блок векторных операций VMX, работающий со 128-битными регистрами, содержащими по четыре 32-битных числа с плавающей точкой.h2 В этом блоке в каждом такте может стартовать одна комбинированная операция умножения со сложением, производящая действия над упакованными операндами. Предельный темп работы блока VMX составляет восемь 32-битных арифметических операций за такт, что соответствует процессору Intel Core (P8) для упакованного режима SSE. Блок VMX содержит также независимое устройство для операций перестановок, которое может повысить эффективность работы с упакованными операндами.

Таким образом, процессор PPC970 имеет хороший потенциал производительности, особенно для арифметики с плавающей точкой.h2Однако из-за статической привязки очередей и устройствh2к позициям МОПов он не очень хорошо сбалансирован. Поэтомуh2эффективная загрузка функциональных устройств вызывает затруднения,h2а неплотное размещение МОПов в буферах уменьшает эффективный размерh2этих буферов и ограничивает возможности внеочередного исполнения.h2В результате реальная производительность процессора на приложенияхh2с не очень регулярной структурой оказывается недостаточно высокой.

По материалам ixbt.com

 
« Предыдущая статья   Следующая статья »