Архитектура процессора UltraSPARC III Cu и ее особенности
Новый процессор создавался для того, чтобы заменить микропроцессоры второго поколения семейства UltraSPARC. Он имеет производительность, в 2-3 раза превышающую показатели 300-мегагерцовых процессоров UltraSPARC II. Помимо этого, архитектура процессора разрабатывалась с учетом использования его в масштабируемых многопроцессорных системах. В табл. 1 приведены основные характеристики нового изделия. Ниже будут рассмотрены отдельные архитектурные решения, помогающие процессору "набирать очки" в борьбе за повышение производительности.
Таблица 1. Основные технические характеристики процессора UltraSPARC III.
Технология |
17 мкм CMOS 7 слоев металла (медь) |
Частота |
900+ МГц |
Площадь кристалла |
232 мм2 |
Потребляемая мощность |
80 Вт / 1.5 В (1.6 В буфера в/в) |
Число транзисторов |
RAM - 12 млн. Logic - 4 млн. |
Корпус |
LGA 1368 выводов |
Таблица 2. Особенности архитектуры (организации) процессора UltraSPARC III.
Архитектура |
SPARC-V9 c системой инструкций VIS II, совместимая с двоичным кодом SPARC 64-битные данные, 64-битные адреса, 64-битные АЛУ, 43-битный физический адрес |
Исполнительные устройства |
4 целочисленных, 2 плавающих, всего 9 устройств, 6 конвейеров, |
Конвейер |
14 ступеней |
L1 кэши (накристальные) |
4-канальный кэш данных — 64 КБ 4-канальный кэш команд — 32 КБ 4-канальный кэш предвыборки — 2 КБ 4-канальный кэш записи — 2 КБ 1040 входов TLB |
L2 кэши (внешние) |
1, 4 или 8 МБ 2-х канальная накристальная таблица тэгов с коррекцией ECC |
Интерфейсы |
3 интегрированных интерфейса (системный интерфейс интерфейс с основной памятью интерфейс с L2-кэшем) |
Поддержка многопроцессорности |
Возможность масштабирования до 1000+ процессоров |
Совместимость |
Полная программная совместимость с UltraSPARC-I,II |
UltraSPARC III представляет собой высокопроизводительный суперскалярный микропроцессор, предназначенный для использования в мощных рабочих станциях и серверах. Он ориентирован на работу в масштабируемых микропроцессорных комплексах. На рис. 2 приведена структурная схема процессора. В его состав входят следующие основные функциональные блоки:
Рисунок 2. Структурная схема микропроцессора UltraSPARC III.
Функции исполнительных устройств распределяются следующим образом.
Целочисленные: 2 АЛУ (Integer ALU, ALU/Load), специализированное исполнительное устройство (Load/Store) и устройство обработки ветвлений (Brach Unit).
Плавающие: устройства плавающей арифметики/графики (FP adder, FP mul/div/sqrt).
Далее будут рассмотрены особенности архитектуры. При этом выбираются те моменты и решения, которые, на наш взгляд, являются определяющими для данного процессора.
Основу архитектуры любого процессора составляет конвейер. Без понимания его работы трудно разобраться в необходимости и порядке взаимодействия перечисленных выше устройств.
UltraSPARC III имеет 14-ступенчатый конвейер (см. рис. 3). Почти половина его (6 ступеней) отводится на подготовку к выполнению команд, столько же — на исполнение команд; две последние ступени — завершающие.
Рисунок 3. Конвейер UltraSPARC III.
Исполнительная часть конвейера состоит из двух частей: целочисленной и плавающей. Обе части имеют одинаковую длину, что упрощает согласование их работы (позволяет выдавать результаты вычислений в порядке их запуска на исполнение). Аналогичное решение (выровненные конвейеры целочисленной и плавающей арифметики) успешно использовалось в предшествующих поколениях микропроцессоров UltraSPARC.
Большое количество ступеней конвейера, по-видимому, объясняется существенным повышением тактовой частоты процессора. Более короткие фазы выполнения позволяют избежать длинных связей на кристалле, которые при столь малых технологических нормах начинают вносить заметную дополнительную задержку. Те операции, которые не вписываются в один такт, как, например, выборка команд из кэша, разбиваются на более мелкие процедуры и выполняются за 2 такта.
Следует отметить еще одну особенность, связанную с исполнительной частью целочисленного конвейера. Для выполнения целочисленных команд отводится 4 такта, реально на это уходит меньше времени (команды АЛУ выполняются за 1 такт). Однако, выровненный конвейер позволяет получить на выходе результаты в том порядке, в котором они поступили на исполнение.
Порядок запуска команд на исполнение
В отличие от многих других современных процессоров, использующих механизм произвольного запуска команд на исполнение, то есть не в порядке их расположения в программе, UltraSPARC III действует строго по порядку. По утверждениям разработчиков, это позволяет сократить объем логики управления в ядре процессора (которая при разработке ее топологии требует большого объема ручной работы), что благоприятно сказывается на быстродействии.
Таким образом, в новом процессоре, как и в его предшественниках, запуск команд на исполнение происходит в порядке их расположения в программе. Процессор позволяет одновременно запустить на исполнение до шести команд (по числу исполнительных устройств); правда, средневзвешенное число одновременно запускаемых команд равно четырем.
После выборки команды попадают в буфер (очередь) команд на 20 элементов (Instruction Queue), откуда группами направляются в соответствующие исполнительные устройства. Максимальное число команд в группе — 6. Все команды в группе получают идентификационный код, в соответствии с которым на выходе из конвейера будут сложены их результаты.
Выше уже упоминалось, что время выполнения большинства целочисленных команд существенно меньше длины исполнительной части целочисленного конвейера, и что фиксированная длина конвейера обеспечивает сохранение порядка поступления команд. Однако, это не означает, что результаты становятся доступны только по достижению выхода конвейера. На самом деле полученные данные могут быть использованы другими командами, находящимися на стадии выполнения, уже на следующем такте после получения результата. Это возможно благодаря наличию рабочего регистрового файла, в котором хранятся все промежуточные результаты вычислений и из которого, по завершению исполнения группы команд, эти результаты переписываются в архитектурный регистровый файл. Таким образом, реальная эффективность конвейера заметно повышается.
Механизм предсказания ветвлений
Устройство предсказания ветвлений является непременным атрибутом любого современного высокопроизводительного микропроцессора, однако, в каждом конкретном случае оно реализовано по-своему. Основная задача данного устройства состоит в сокращении накладных расходов из-за нарушений в работе конвейера при ветвлении программ. Если взглянуть на конвейер UltraSPARC III (Рис. 3), то хорошо видно, сколько придется заплатить за неправильно предсказанный переход. Штрафные санкции составят 7 дополнительных тактов (кстати, у Alpha 21264 — столько же при меньшей длине конвейера).
При решении данной задачи разработчики процессора решили использовать достаточно простой одноуровневый механизм (в отличие от двухуровневого адаптивного механизма в Alpha 21264). Он представляет собой таблицу на 16 К значений, содержащую информацию об уже происшедших ветвлениях и обеспечивает точность предсказаний на уровне 95% на тестах SPEC95.
Помимо механизма предсказания ветвлений в процессоре используется еще и стек адресов возврата на 8 значений, а также очередь последовательных команд (Sequential Instruction Queue), которая хранит до четырех команд, следующих за командой ветвления, но соответствующих альтернативному пути. В случае, когда предсказанное ветвление окажется неверным, команды из этой очереди сразу направляются на исполнение, экономя несколько тактов.
Особенности реализации внешних интерфейсов микропроцессора
Производительность вычислительной системы зависит от многих факторов, среди которых быстродействие процессора — не самый главный. Очень многое определяет то, как он взаимодействует с другими компонентами системы.
На рис. 4 приведен пример многопроцессорной системы, реализованной на основе UltraSPARC III. Рассмотрим и проанализируем некоторые ее детали. Первое, что сразу обращает на себя внимание, это большое количество внешних интерфейсов у процессора. Их три: 128-разрядный канал обмена с основной памятью (Main Memory), 256-разрядный канал обмена с кэш-памятью второго уровня (L2 Cache) и 128-разрядный системный интерфейс.
Рисунок 4. Пример многопроцессорной системы на основе UltraSPARC III.
Достаточно очевидно, что такая многошинная архитектура способствует более эффективной работе многопроцессорной системы в целом. Правда, это новое качество недешево обходится (это и дополнительные расходы на разработку нового корпуса с рекордным числом выводов — 1368, и проблемы повышенного энергопотребления как самого процессора, так и микросхем чипсета и т.п.). Но, похоже, конечный результат стоит того. Рассмотрим подробнее каждый из перечисленных интерфейсов.
Поскольку архитектура процессора подразумевает единоличное владение данной памятью, то есть отсутствие непосредственного доступа к ней со стороны каких-либо других устройств, появляется возможность достижения максимальной пропускной способности данного канала, для чего предусмотрен накристальный контроллер памяти. Такое решение имеет следующие положительные стороны.
Во-первых, отпадает необходимость в дополнительных внешних компонентах, то есть упрощается сопряжение процессора и памяти. Это к тому же приводит еще и к снижению стоимости.
Во-вторых, возрастает пропускная способность, поскольку производительность канала зависит только от параметров памяти. Так, при использовании SDRAM с тактовой частотой 150 МГц пропускная способность составит 2.4 ГБ/с.
По своей реализации данный канал напоминает описанный выше. Однако, здесь есть ряд принципиальных особенностей.
Во-первых, канал имеет более высокую разрядность — 256 бит. На сегодняшний день UltraSPARC III, пожалуй, единственный микропроцессор, имеющий такую широкую шину данных кэша второго уровня. При использовании микросхем статической памяти (SRAM), работающих на частоте 200 МГц, пропускная способность данного канала способна достичь 6.4 ГБ/с. И это не предел.
Во-вторых, по аналогии с накристальным SDRAM-контроллером канала основной памяти, данный интерфейс имеет накристальную таблицу тэгов вторичного кэша. Размер таблицы составляет 90 КБ, и этого достаточно для поддержания кэш-памяти объемом до 8 МБ.
Основным достоинством такого решения является то, что работа с таблицей осуществляется на частоте процессора, то есть результат обращения к кэшу становится известен гораздо раньше, чем в случае внекристального расположения таблицы тэгов. Соответственно, при непопадании в кэш процедура инициализации обращения к основной памяти начинается на несколько тактов раньше. Аналогично обстоит дело и с поддержкой когерентности кэшей в многопроцессорных системах.
Перечисленные преимущества отчасти можно отнести и к контроллеру SDRAM, однако, там производительность канала в меньшей степени зависит от быстроты работы контроллера.
Особенности реализации канала записи в L2 кэш-память
Канал записи состоит из трех основных частей: очереди на 8 слов (Store Queue), кэш-памяти данных первого уровня (L1 Data Cache) и кэш-памяти записи (Write Cache). Сразу же отметим, что кэши имеют различные механизмы обновления: L1 кэш данных — сквозной записи, а кэш записи — отложенный. Далее будет понятно, зачем это нужно.
Сначала сохраняемая информация записывается в очередь. Это происходит во время выполнения команды сохранения. Затем, после завершения команды, данные записываются в L1 кэш и, одновременно, в кэш записи. При этом, если происходит непопадание в L1 кэш, то его содержимое не обновляется. В противном случае из-за сквозного режима обновления данной кэш-памяти происходило бы постоянное обращение ко вторичному кэшу. Таким образом, кэш-память записи как бы дополняет и дублирует L1 кэш, но только в процессе записи. По утверждениям разработчиков, использование такой организации канала записи позволяет сократить трафик на шине вторичной кэш-памяти на 90%.
Системный интерфейс по своим характеристикам аналогичен каналу основной памяти. Из специфических механизмов, свойственных только ему, следует отметить поддержку многопроцессорности (до четырех процессоров в конфигурации с общей шиной и более четырех при иерархической структуре шин).
Подводя итог всему сказанному об организации внешних интерфейсов процессора UltraSPARC III, можно отметить следующее.
Во-первых, многошинная структура позволяет легко строить на базе данного процессора как однопроцессорные, так и многопроцессорные системы. При этом число процессоров в системе практически не ограничено (1000 и больше).
Во-вторых, использование накристальной логики управления каналами позволяет масштабировать их пропускную способность, увеличивая производительность с ростом рабочей частоты процессора и появлением более быстрой памяти.
В-третьих, структура внешних связей процессора позволяет легко сделать на его основе модификацию для недорогих серверов.
Использованы (и исправлены) материалы Jet Infosystems ©