Почти 10 лет, с 1986 года, фирма Hewlett-Packard выпускает компьютеры с микропроцессорами архитектуры PA-RISC [1], к моделям РА-7100 и 7150 которых добавились PA-7200 [2,3], а совсвм недавно и PA-8000. Этот микропроцессор, продолжающий классическую линию PA-7100, одновременно символизирует период перехода к 64-разрядной архитектуре и резкого уввеличения производительности. Первые компьютеры на базе данного процессора ожидаются в начале 1996 г.
В микропроцессорах архитектуры PA-RISC фирмы Hewlett-Packard уже давно используется суперскалярный подход: РА-7100, PA-7100LC и РА-7200 могут выполнять до двух команд за такт (таблица 1). Очередной процессор является еще более суперскалярным, способным выполнять одновременно до 4 команд за такт, допуская предварительное (speculative) и внеочередное (out-of-order) выполнение команд, а также средства динамического предсказания переходов, не говоря уже о технике переименования регистров. Наличие таких "интеллектуальных возможностей" сближает РА-8000 с микропроцессором MIPS R10000, в отличие, скажем, от DEC Alpha 21164, в котором разработчики пошли к вершинам производительности путем максимального увеличения тактовой частоты при относительно простой структуре самого процессора. В этом случае используется суперконвейерный подход - применение относительно длинных конвейеров с довольно большим числом коротких ступеней. Хотя это число в Alpha 21164 и было уменьшено по сравнению с предыдущими чипами Alpha 21064А, оно все же остается большим, чем в РА-8000. Идеология суперконвейерного подхода эффективна, если выполнение потока команд в конвейере не нарушается командами перехода, когда конвейер приходится запускать вновь, что приводит к большим задержкам. В РА-8000 суперконвейерная идеология не используется - конвейеры относительно коротки. В результате в этом микропроцессоре удается минимизировать потери производительности, вызванные непредсказанными переходами.
Таблица 1.
Сравнительные характеристики микропроцессоров PA-8000 и PA-7200.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 Мбайт |
|
|
4 Мбайт |
|
|
|
|
|
|
|
|
|
|
Однако не высокий уровень интеллектуальности является основной отличительной чертой РА-8000 его главная особенность - это наличие сразу пяти пар симметричных устройств. Кроме устройств загрузки/записи в память РА-8000 содержит следующие типы устройств: АЛУ и устройство сдвига/слияния для целочисленной обработки; для работы с вещественной арифметикой устройство умножения/сложения или МАС, а также деления и извлечения квадратного корня.
Аналогично процессорам Mips R8000/R10000, в составе инструкций РА-8000 имеется команда для операций типа A = B*C+D, предусматривающая одновременное выполнение умножения и сложения. Как и простые инструкции умножения и сложения, эти составные операции выполняются в конвейерах МАС. Их длина равна 3 тактам, а пара устройств может выдавать за каждый такт 4 FLOP. Это столько же, сколько в R8000, но в 2 раза больше, чем в R10000. Таким образом, при одинаковой тактовой частоте пиковая производительность с плавающей запятой в HP РА-8000 в 2 раза выше, чем у MIPS R10000. Например, если РА-8000 имеет тактовую частоту 200 МГц, то пиковая производительность будет равна 800 MFLOPS - максимальное значение среди всех анонсированных сегодня микропроцессоров.
Что касается целочисленных устройств, хотя они и стали 64-разрядными, сохраняется полная совместимость с 32-разрядными кодами. Кстати, по целочисленной производительности РА-8000 опережает все другие 64-разрядные микропроцессоры, кроме Alpha 21164/333 МГц. Следует указать также на то, что, по оценкам компании HP, однопроцессорные системы на базе PA-8000 будут иметь производительность при работе с базами данных около 700 TPS. Для сравнения, однопроцессорный сервер Hawk K100/1 на базе процессора РА-7200 имеет производительность 270 TPS.
Чтобы понять, как удается эффективно загружать работой столь большое число функциональных устройств, нужно сначала посмотреть, как устроен и из каких блоков состоит микропроцессор РА-8000.
В традициях конструкции процессоров PA-RISC использование кэша L1, расположенного вне основного процессорного чипа: в PA-7100LC кэш команд, а в PA-7300LC также и кэш данных были интегрированы в основной процессорный чип, в РА7200 также имеется очень маленький вспомогательный кэш на основном чипе [2]. В микропроцессоре РА-8000, ориентированном на достижение максимального быстродействия, применяется традиционный подход, - внешние кэши первого уровня. Таким образом, РА-8000 имеет один большой внешний кэш инструкций, обладающий высокой скоростью обмена данными с процессорным чипом (таблица 2). В результате такого архитектурного решения часть площади основного чипа, которую мог бы занять кэш, освободилась для использования под другие блоки микропроцессора. Кроме того, стало возможным увеличить и сам кэш команд.
Таблица 2.
Процессор PA-8000 и другие.
|
|
|
|
|
|
|
|
|
|
|
|
21164 (300 МГц) |
|
|
|
|
|
|
|
|
|
|
|
Недостатком такого подхода является то, что в случае неправильного предсказания перехода задержка будет составлять два такта против одного, необходимого в случае реализации кэша команд на основном чипе. Однако вероятность неправильного предсказания достаточно мала.
Кэш данных также имеет один уровень, реализованный как внешний, а его емкость составляет до 4 Мбайт - это типичная величина кэша, используемая в высокопроизводительных серверах, построенных на базе современных микропроцессоров: внешние кэши Alpha 21164 в AlphaServer 8200/8400, и R8000 в SGI POWER CHALLENGE имеют как раз такой объем. Кэш данных в РА-8000 - двухпортовый и построен на синхронных SRAM при двухкратном расслоении (2 банка) на уровне двойных слов с целью повышения пропускной способности.
Буфер быстрого преобразования адресов (Translation Lookaside Buffer, TLB) служит, как известно, для преобразования виртуальных адресов памяти в физические. В РА-8000 буфер является двухпортовым и содержит 96 строк, каждая из которых служит для отображения сегментов памяти размером от 4 Кбайт до 16 Мбайт. Устройство выборки команд имеет свой собственный буфер преобразования адресов на 4 строки. Если в этом буфере не удается осуществить преобразование то запрос направляется в TLB.
Каждая строка TLB имеет специальный дополнительный бит, указывающий на используемый режим предсказания переходов. Дело в том, что с целью повышения точности предсказания переходов предлагается два различных режима предсказания. В статическом режиме для большинства условных команд перехода передача управления назад "предсказывается", а вперед - нет. Естественность такого подхода становится очевидной, если представить себе, что имеется программный цикл.
Для общей команды сравнения с переходом ("совет" - hint) специальным образом осуществляется кодировка, которая используется затем устройством выборки команд. Компиляторы, применяя эвристические методы или оптимизацию, основанную на профилировании (Profile Based Optimization, РВО), могут переупорядочить сегменты кодов или применить переходы с советами, чтобы передать аппаратуре информацию о вероятности перехода.
В динамическом режиме предсказания используется таблица истории переходов ВНТ на 256 строк. На каждый переход в ВНТ заведено 3 бита, указывающих, происходил или нет переход за последние три выполнения соответствующей команды. Аналогичный блок ВНТ имеется, например, в микропроцессоре PowerPC 620, где имеется 2048 строк по 2 бита каждая.
Благодаря управлению режимом предсказания через дополнительные биты в строках TLB, на уровне страницы памяти, появляются очень интересные возможности. В частности, программы, скомпилированные с включением режима оптимизации РВО и находящиеся в разделяемых библиотеках, могут вызываться из уже существующих прикладных программ, что помогает повысить производительность уже имеющихся приложений.
Кроме ВНТ, с переходами связан специальный кэш адресов переходов - ВТАС, который является полностью ассоциативным и имеет 32 строки. Данный кэш содержит пары адресов: адрес, по которому расположена команда перехода, и адрес перехода если предсказано, что он должен произойти. Для замены информации в ВТАС используется известный алгоритм "round robin". Применение ВТАС позволяет уменьшить задержки при выполнении переходов.
Устройство выборки команд выбирает за один такт из кэша инструкций до 4 команд, выровненных на границу слова. Выбранные команды попадают в буфер переупорядочения команд IRB размером 2х28 строк. В первых 28 строках содержатся команды, предназначенные для целочисленных функциональных устройств или устройств для работы с вещественными числами. В следующих 28 строках, образующих буфер памяти, содержатся команды загрузки/записи в память. Кроме того, некоторые команды поступают сразу в оба буфера. Это, в частности, инструкции перехода, такое размещение которых помогает при восстановлении после неправильного предсказания ветвления. Устройство сортировки определяет, в какой из двух буферов IRB попадет команда, причем любой из них может принять до 4 команд за такт.
Благодаря IRB, процессор РА-8000 может просматривать одновременно свыше 50 команд, чтобы найти из них 4, готовые к выполнению, которые будут отправлены в соответствующие функциональные устройства. Возможность внеочередного выполнения команд дополняется возможностью их предварительного выполнения, реализуемой тремя способами: путем выполнения команд в соответствии с предсказанием перехода; выполнением последующих команд, хотя в предыдущей команде может быть сформирован сигнал исключительной ситуации; выполнением команды загрузки до завершения предыдущей команды записи в память.
Отработавшие команды удаляются из IRB в порядке, в котором они встречаются в программе. Это позволяет выполнять корректную обработку исключительных ситуаций. За цикл может быть удалено до 4 команд. Во время удаления содержимое "переименованных" регистров записывается в программно доступные регистры архитектуры PA-RISC, а записываемые в память данные помещаются в очередь записи.
Потоки данных внутри процессора связаны с выполнением команд загрузки/записи в память, выбираемых, как обычно, из IRB. Для суперскалярного и внеочередного предварительного выполнения команд крайне желательно отсутствие задержек из-за ожидания выполнения инструкций загрузки/записи в память. Здесь особое внимание должно уделяться ситуациям отсутствия операндов в кэше данных. РА-8000 может продолжать выполнение команд при наличии одновременно до 10 событий отсутствия данных в этом кэше. Кроме того, система команд микропроцессора поддерживает возможность явной предварительной выборки в кэш, реализованной как загрузка в нулевой общий регистр.
В РА-8000 имеется специальное устройство - буфер переупорядочения адресов (ARB), служащий в качестве интерфейса с внешним кэшем данных. По завершению вычисления адреса команды загрузки/записи в память он заносится в ARB. Этот адрес посылается также в TLB, откуда в ARB возвращается и одновременно запоминается номер соответствующей адресу физической страницы. ARB содержит 28 "слотов" для команд загрузки/записи в память.
В РА-8000 имеются средства эффективного поддержания когерентности кэша в многопроцессорных системах. Вплоть до 8-кратного мультипроцессирования не требуется дополнительной внешней логики. Поддержка мультипроцессорных систем с числом процессоров больше 8 осуществляется с применением иерархической шинной структуры.
Применяемый механизм контроля когерентности кэша (Cache Coherency Check, ССС) очень экономен и не требует интенсивной передачи данных, снижающей пропускную способность кэша. Как утверждают разработчики, для полностью насыщенной системной шины ССС требуется не более 50% пропускной способности кэша данных даже в теоретически предельно плохом случае "жертвы кэша" (cache victim) [5].
Что касается самой системной шины, то в РА-8000 применяется та же шина Runway, что и в РА-7200 [2,5,6]. Это - 64-разрядная синхронная шина адресов/данных, использующая временное мультиплексирование и расщепленную обработку транзакций. Для арбитража применяются отдельные провода, поэтому не требуются дополнительные такты системной шины. Hunway поддерживает 40-разрядное пространство физических адресов памяти (т.е. до 960 Гбайт RAM). Шина работает на тактовой частоте 120 МГц, что обеспечивает гарантированную пропускную способность до 786 Мбайт/с. Кстати, обеспечение когерентности кэша - также одна из задач Runway.
Каждая транзакция снабжается тегом, включающим адрес модуля, выдавшего запрос, и номером. Тег однозначно идентифицирует транзакцию, что позволяет направить ответ адресату, не требуя для этого дополнительного такта шины. Процессор РА-7200 может запросить выполнение до 6 параллельно обрабатывающихся транзакций. Интерфейс системной шины РА-8000 допускает ожидание одним процессором обработки одновременно до 10 непопаданий в кэш данных, одного непопадания в кэш команд и одной предварительной выборки в кэш команд. Завершение обработки этих транзакций может происходить р любом порядке. Нет необходимости объяснять, что все это позволяет существенно повысить производительность.
Учитывая потенциально высокие рабочие тактовые частоты РА-8000, отношение частота процессора/частота шины может быть выбрано следующим образом: 1:1, 4:3, 3:2, 5:3, 2:1, 7:3, 5:2 и 3:1, что дает высокую степень гибкости при построении систем различного уровня производительности. У сконструированного для работы с меньшими тактовыми частотами РА-7200 поддерживаемые отношения составляют 1:1, 3:2 и 4:3.
В РА-8000 имеется еще целый ряд интересных особенностей и усовершенствований, добавленных в архитектуру РА 2.0 [5]. Например, 22-разрядное поле смещения в командах перехода, увеличивающее эффективность вызова удаленных процедур; введение более "длинного" 16-разрядного смещения в командах загрузки/записи в память; новые варианты команд сравнения и тестирования (для обработки вещественных операндов), допускающие проверку сразу нескольких независимых условий; усовершенствования в обработке ситуаций непопадания в TLB.
В архитектуре РА-8000 имеются средства, позволяющие отслеживать события совпадения по коду команды, адресу, попадание или непопадание в кэш и неправильные предсказания переходов. Имеются также специальные счетчики для подсчета числа событий. Эти средства могут использоваться как разработчиками компиляторов для их усовершенствования с целью генерации более оптимальных кодов, так и разработчиками будущих поколений процессоров архитектуры PA-RISC.
[1] R.B. Lee. Precision Architecture//IEEE Computer, Vol22, # 1,1989, рр. 78-91.
[2] G. Kurpanek е.а. РА7200: А PA-RlSC Processor with lntegrated High Performance МР Bus Interface// Compcon Digest of Papers, February 1994, рр. 375-382.
[3] Н. Дубова. РА-7200 - новый процессор семейства HP РА-RISC// Открытые системы, # 1, 1995, стр. 62-66.
[4] P. Knebel е.а. HP's PA7100LC. А Low-Cost Superscalar PA-RISC Processor, Compcon Digest of Papers, February 1993, рр. 441-447.
[5] D. Hunt. Advanced Performance Features of the 64-bit РА-8000, Compcon Digest of Papers, March 1995, рр. 123-128.
[6] L. Staly. А New МР HW Architecture for Technical and Commercial Environment, Compcon Digest of Papers, March 1995, рр. 129-132.
Published by NewIT Labs