PA -8000 (PCX-U), кодовое название Onyx , — это микропроцессор , разработанный и изготовленный компанией Hewlett-Packard (HP), в котором реализована архитектура набора инструкций PA-RISC 2.0 (ISA). [1] Это была совершенно новая конструкция без каких-либо схем, полученных от предыдущих микропроцессоров PA-RISC. PA-8000 был представлен 2 ноября 1995 года, когда начались поставки членам Precision RISC Organization (PRO). [2] Он использовался исключительно членами PRO и не продавался на коммерческом рынке. Все последующие процессоры PA-8x00 (PA-8200 — PA-8900, описанные ниже) основаны на базовом ядре процессора PA-8000.
PA-8000 использовался:
PA-8000 — это четырехпроцессорный суперскалярный микропроцессор, который выполняет инструкции вне очереди и спекулятивно . [1] [4] Эти функции не были обнаружены в предыдущих реализациях PA-RISC, что делает PA-8000 первым процессором PA-RISC, который нарушил традицию использования простых микроархитектур и реализации с высокой тактовой частотой для достижения производительности. [5]
PA-8000 имеет четырехступенчатый фронтенд. На первых двух стадиях четыре инструкции извлекаются из кэша инструкций блоком выборки инструкций (IFU). [5] IFU содержит счетчик программ , таблицу истории ветвлений (BHT), кэш целевых адресов ветвлений (BTAC) и четырехэлементный буфер трансляции (TLB). [1] [5] TLB используется для трансляции виртуальных адресов в физические адреса для доступа к кэшу инструкций. В случае пропуска TLB трансляция запрашивается из основного TLB. [1]
PA-8000 выполняет предсказание ветвлений с использованием статических или динамических методов. [1] Какой метод использовал PA-8000, выбиралось битом в каждой записи TLB. Статическое предсказание рассматривает большинство обратных ветвлений как выполненные, а прямые — как невыполненные. Статическое предсказание также предсказывало результат ветвлений, исследуя подсказки, закодированные в самих инструкциях компилятором. [1] [5]
Динамическое предсказание использует записанную историю ветвления, чтобы решить, будет ли оно выполнено или нет. BHT с 256 записями — это место, где хранится эта информация. Каждая запись BHT — это трехбитный сдвиговый регистр . PA-8000 использовал алгоритм большинства голосов, ветвление выполняется, если большинство из трех битов установлено, и не выполняется, если они очищены. [1] Неправильно предсказанное ветвление приводит к штрафу в пять циклов. [5] BHT обновляется, когда становится известен результат ветвления. Хотя PA-8000 может выполнять две инструкции ветвления за цикл, записывается только один из результатов, поскольку BHT не является двухпортовым для упрощения его реализации. [4]
PA-8000 имеет двухцикловый пузырь для правильно предсказанных ветвей, так как целевой адрес ветви должен быть вычислен до того, как он будет отправлен в кэш инструкций. [5] Чтобы уменьшить возникновение этого пузыря, PA-8000 использует 32-записный полностью ассоциативный BTAC. BTAC кэширует целевой адрес ветви. Когда встречается та же ветвь и предсказывается как взятая, адрес немедленно отправляется в кэш инструкций, позволяя выборке начаться без задержки. [1]
Чтобы максимизировать эффективность BTAC, кэшируются только целевые ветви предсказанных-принятых ветвей. Если ветвь предсказана как непринятая, но ее целевой адрес кэширован в BTAC, ее запись удаляется. В случае, если BTAC заполнен и необходимо записать новую запись, заменяемая запись выбирается с использованием политики замены по круговой системе. [1]
Кэш инструкций является внешним и поддерживает емкость от 256 КБ до 4 МБ. Инструкции предварительно декодируются перед тем, как попасть в кэш, путем добавления пяти бит к каждой инструкции. Эти биты сокращают количество времени, необходимое для декодирования инструкции позже в конвейере. Кэш инструкций напрямую отображается, чтобы избежать сложности ассоциативных кэшей наборов, и доступен через 148-битную шину. Теги для кэша также являются внешними. Он построен из синхронных SRAM (SSRAM).
На третьем этапе инструкции декодируются. На четвертом этапе они помещаются в буфер переупорядочивания инструкций (IRB). Целью IRB является реализация переименования регистров , внеочередного выполнения, спекулятивного выполнения и предоставление временного места для хранения результатов до тех пор, пока инструкции не будут удалены. IRB определяет, какие инструкции выдаются на пятом этапе.
IRB состоит из двух буферов, один для целочисленных и плавающих инструкций, другой для инструкций загрузки и сохранения. Некоторые инструкции помещаются в оба буфера. Эти инструкции являются инструкциями ветвления и определенными системными инструкциями. Каждый буфер имеет 28 записей. Каждый буфер может принимать до четырех инструкций за цикл и может выдавать до двух инструкций за цикл своим функциональным блокам.
Все инструкции начинают выполняться на шестом этапе в десяти функциональных блоках. Целочисленные инструкции, за исключением умножения, выполняются в двух арифметико-логических блоках (АЛУ) и двух блоках сдвига/слияния. Все инструкции, выполняемые в этих блоках, имеют задержку в один цикл, а их результаты записываются в регистр назначения на седьмом этапе.
Инструкции с плавающей точкой и инструкции целочисленного умножения выполняются в двух объединенных блоках умножения-накопления (FMAC) и двух блоках деления/извлечения квадратного корня. Блоки FMAC конвейеризированы и имеют задержку в три цикла. Умножение выполняется на шестом этапе, сложение на седьмом этапе, округление на восьмом этапе и обратная запись на девятом этапе. Округление между этапами умножения и накопления отсутствует. Блоки FMAC также выполняют отдельные инструкции умножения и сложения, которые также имеют задержку в три цикла как для вариантов с одинарной, так и с двойной точностью . Блоки деления/извлечения квадратного корня не конвейеризированы и имеют задержку в 17 циклов. Им может быть выдана одна инструкция за такт из-за ограничений порта регистра, но они могут работать параллельно друг с другом и блоками FMAC.
Команды загрузки и сохранения целых чисел и чисел с плавающей точкой выполняются двумя выделенными сумматорами адресов.
Буфер трансляции (TLB) содержит 96 записей, является двухпортовым и полностью ассоциативным. Он может транслировать два виртуальных адреса за цикл. Этот TLB транслирует адреса как для инструкций, так и для данных. Когда TLB IFU пропускает, этот TLB предоставляет ему трансляцию. Трансляция для загрузок и сохранений имеет более высокий приоритет, чем для инструкций. Каждая запись TLB может быть сопоставлена со страницей размером от 4 КБ до 16 МБ с шагом, равным степеням четырех.
PA-8000 имеет кэш данных емкостью до 4 МБ. Кэш данных двухпортовый, поэтому в каждом цикле можно выполнить два чтения или записи. Он двухпортовый, реализуя два банка кэша, таким образом, он не является по-настоящему двухпортовым, потому что если два чтения или записи ссылаются на один и тот же банк, возникает конфликт, и может быть выполнена только одна операция. К нему обращаются две 64-битные шины, по одной для каждого банка. Теги кэша внешние. Существуют две копии тегов кэша, чтобы обеспечить независимый доступ в каждом банке. Кэш данных напрямую отображается по тем же причинам, что и кэш инструкций. Он построен из SSRAM.
Внешний интерфейс — это Runway bus , 64-битная адресная и мультиплексная шина данных. PA-8000 использует 40-битный физический адрес , поэтому он может адресовать 1 ТБ физической памяти .
PA-8000 имеет 3,8 миллиона транзисторов и размеры 17,68 мм на 19,10 мм, [6] для площади 337,69 мм 2 . Он был изготовлен HP по их процессу CMOS-14C, 10% усадке затвора процесса CMOS-14. [5] Процесс CMOS-14C представлял собой 0,5 мкм, пятиуровневый алюминиевый межсоединенный , комплементарный металл-оксид-полупроводник (CMOS) процесс. Кристалл имеет 704 припоя для сигналов и 1200 для питания или заземления. Он упакован в 1085-контактный алюмооксидный керамический массив контактных площадок (LGA). [7] PA-8000 использует источник питания 3,3 В.
PA -8200 (PCX-U+), кодовое название Vulcan , был дальнейшим развитием PA-8000. Первые системы, использующие PA-8200, появились в июне 1997 года. PA-8200 работал на частоте от 200 до 240 МГц и в первую очередь конкурировал с Alpha 21164. Улучшения были внесены в прогнозирование ветвлений и TLB. [4] [8] Прогнозирование ветвлений было улучшено за счет увеличения в четыре раза количества записей BHT до 1024, что потребовало использования двухбитного алгоритма для того, чтобы соответствовать без перепроектирования окружающих схем; и за счет внедрения очереди записи, которая позволила BHT записывать два результата ветвления вместо одного. Количество записей TLB было увеличено с 96 до 120, что сократило промахи TLB. Тактовая частота также была улучшена за счет незначительной перепроектировки схемы. Кристалл PA-8200 был идентичен по размеру PA-8000, поскольку усовершенствования использовали пустые области кристалла. Он был изготовлен в процессе CMOS-14C.
PA-8500 (PCX-W) под кодовым названием Barracuda является дальнейшим развитием PA-8200. Он был выпущен в начале 1998 года и был представлен в конце 1998 года в системах. Производственные версии работали на частотах от 300 до 440 МГц, но он был разработан и работал до 500 МГц. [9] Наиболее заметными улучшениями являются более высокие рабочие частоты и интеграция первичных кэшей на кристалле. [10] Более высокие рабочие частоты и интеграция первичных кэшей на том же кристалле, что и ядро, стали возможны благодаря переходу на 0,25-мкм процесс. Ядро PA-8500 имело размеры 10,8 мм на 11,4 мм (123,12 мм2 ) в новом процессе, что составляет менее половины площади 0,5-мкм PA-8200. Это освободило площадь, которую можно было использовать для интеграции кэшей.
PA-8500 имеет кэш инструкций объемом 512 КБ и кэш данных объемом 1 МБ. Другие улучшения микроархитектуры включают больший BHT, содержащий 2048 записей, что вдвое больше емкости PA-8200, и больший TLB, содержащий 160 записей. PA-8500 использует новую версию шины Runway . Новая версия работает на частоте 125 МГц и передает данные как по восходящим, так и по нисходящим фронтам тактового сигнала (двойная скорость передачи данных, или DDR) и обеспечивает пропускную способность 240 МТ/с или 2 ГБ/с. Поскольку шина Runway используется для передачи адресов и данных, полезная пропускная способность составляет 80% от 2 ГБ/с, или около 1,6 ГБ/с.
PA-8500 содержит 140 миллионов транзисторов и имеет размеры 21,3 мм на 22,0 мм (468,6 мм 2 ). [9] Он был изготовлен корпорацией Intel по 0,25 мкм КМОП-технологии с пятью уровнями алюминиевых межсоединений. Он использует источник питания 2,0 В. HP не производила PA-8500 самостоятельно, поскольку они прекратили модернизацию своих фабрик для внедрения процесса, более нового, чем CMOS-14C, который использовался для изготовления предыдущих микропроцессоров PA-RISC.
PA-8500 был упакован в меньший 544- контактный корпус LGA, поскольку интеграция основных кэшей на кристалле привела к удалению двух 128-битных шин, которые взаимодействовали с внешними кэшами и связанными с ними контактами ввода-вывода.
PA-8600 (PCX-W+), кодовое название Landshark , является дальнейшим развитием PA-8500, представленного в январе 2000 года. PA-8600 планировалось представить в середине 2000 года. [11] Это была измененная версия PA-8500, позволяющая достигать более высоких тактовых частот от 480 до 550 МГц. Она улучшила микроархитектуру, используя политику вытеснения квази- наименее недавно использованных (LRU) для кэша инструкций. Она была изготовлена Intel.
PA-8700 (PCX-W2), кодовое название Piranha , является дальнейшим развитием PA-8600. Представленный в августе 2001 года, он работал на частоте от 625 до 750 МГц. Улучшения включали реализацию предварительной выборки данных, политику замены квази-LRU для кэша данных и большее 44-битное физическое адресное пространство для адресации 16 ТБ физической памяти. [12] PA-8700 также имеет больший кэш инструкций и данных, емкость которых увеличилась на 50% до 0,75 МБ и 1,5 МБ соответственно. PA-8700 был изготовлен IBM Microelectronics [13] по 0,18 мкм КМОП-технологии кремний на изоляторе (SOI) с семью уровнями медных межсоединений и диэлектриком с низким κ .
PA-8700+ был дальнейшим развитием PA-8700, представленного в системах в середине 2002 года. Он работал на частоте 875 МГц. [13]
PA-8800, кодовое название Mako , является дальнейшей разработкой PA-8700. [14] Он был представлен в 2004 году и использовался HP в их рабочей станции C8000 и серверах HP 9000 Superdome . Он был доступен на частотах 0,8, 0,9 и 1,0 ГГц. PA-8800 представлял собой двухъядерную конструкцию, состоящую из двух модифицированных микропроцессоров PA-8700+ на одном кристалле. Каждое ядро имеет кэш инструкций объемом 768 КБ и кэш данных объемом 768 КБ. Первичные кэши меньше, чем в PA-8700, чтобы оба ядра могли поместиться на одном кристалле.
Улучшения по сравнению с PA-8700 включают улучшенное предсказание ветвлений и включение внешнего 32 МБ унифицированного вторичного кэша. Вторичный кэш имеет пропускную способность 10 ГБ/с и задержку 40 циклов. Он является 4-канальным наборно-ассоциативным, физически индексированным и физически помеченным с размером строки 128 байт. Наборно-ассоциативность была выбрана для уменьшения количества контактов ввода-вывода. Кэш L2 реализован с использованием четырех 72 Мбит (9 МБ) чипов Enhanced Memory Systems Enhanced SRAM (ESRAM), которые, несмотря на свое название, являются реализацией 1T-SRAM — динамической памяти с произвольным доступом (DRAM) с интерфейсом, подобным SRAM. Доступ к этому кэшу каждым ядром регулируется контроллером на кристалле, а 1 МБ тегов вторичного кэша также находится на кристалле как SRAM и защищен ECC. PA-8800 использовал ту же внешнюю шину, что и микропроцессор McKinley Itanium , который обеспечивает пропускную способность 6,4 ГБ/с и совместим с чипсетами HP Itanium, такими как zx1.
Он состоял из 300 миллионов транзисторов, из которых 25 миллионов были для логики, на кристалле размером 23,6 мм на 15,5 мм (365,8 мм2). [ 14] Он был изготовлен IBM по 0,13 мкм SOI-технологии с медными межсоединениями и диэлектриком с низким κ . PA-8800 упакован в керамическую шариковую сетку, смонтированную на печатной плате (PCB) с четырьмя ESRAM, образуя модуль, аналогичный тем, которые использовались в ранних микропроцессорах Itanium.
PA-8900, кодовое название Shortfin , был производным от PA-8800. Это был последний разработанный микропроцессор PA-RISC, представленный 31 мая 2005 года, когда стали доступны системы, использующие этот микропроцессор. Он использовался в серверах HP 9000 и рабочей станции C8000. Он работал на частотах 0,8, 0,9, 1,0 и 1,1 ГГц. Это не урезанный вариант PA-8800, как предполагалось ранее. Емкость кэша L2 была удвоена до 64 МБ, он имеет меньшую задержку и лучшее обнаружение и исправление ошибок в кэшах. Он использует системную шину McKinley и совместим с чипсетами Itanium 2, такими как HP zx1. Никаких изменений в микроархитектуре не произошло, но блок вычислений с плавающей точкой и схема кэш-памяти на кристалле были переработаны для снижения энергопотребления, и каждое ядро впоследствии рассеивало около 35 Вт на частоте 1,0 ГГц.