PA-RISC

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:20, 10 декабря 2016.
PA-RISC (HP/PA)
Image002.gif
Дизайнер Hewlett-Packard
Биты 64-bit (32→64)
Представлен 1986 (1996 PA-RISC 2.0)
Версия 2.0 (1996)
Дизайн RISC
Кодирование Fixed
Разветвление Compare and branch
Порядок байтов Big
Расширения Multimedia Acceleration eXtensions (MAX), MAX-2
Открыто Нет
Регистры
Общее назначение 32
FPU (Floating Point Unit) 32 64-bit (16 64-bit in PA-RISC 1.0)

PA-RISC — микропроцессорная архитектура, разработанная компанией Hewlett-Packard. Как следует из названия, это RISC-архитектура; PA означает Precision Architecture (рус. точная архитектура). Иногда эта архитектура называется HP/PA (Hewlett Packard Precision Architecture).

Архитектура была представлена 26 февраля 1986 года, когда были выпущены первые модели HP 3000 Series 930 и HP 9000 Model 840 оснащённые первой реализацией архитектуры — TS1.

HP прекратила продажи машин HP 9000, основанных на PA-RISC, в конце 2008 года. Поддержка серверов на процессорах PA-RISC была до 2013 года. Предполагается, что новые машины, основанные на Itanium, смогут заменить PA-RISC.

HP PA-RISC 7300LC Микропроцессор

История

В 1983 г. в корпорации Hewlett-Packard было принято решение начать рискованный проект по объединению различных процессоров и операционных систем, используемых в трех компьютерных линейках (HP1000, HP3000 и HP9000). Его результат сегодня хорошо известен: это семейство процессоров PA-RISC (Precision Architecture Reduced Instruction Set Computing) и ОС UP-UX, которые совместно применяются в высокопроизводительных рабочих станциях и Unix-серверах (классов N, V, L и A).

Свой первый компьютер на базе PA-RISC корпорация представила уже в 1985 г. Схемотехнически новый кристалл был построен на базе транзисторно-транзисторной логики (ТТЛ) и синхронизировался тактовой частотой 8 МГц. За прошедшие годы реализовано 16 различных технологических решений, выполненных с использованием биполярных и комплементарных МОП-структур. Основное внимание разработчики всегда уделяли тактовой частоте, степени интеграции и архитектурным улучшениям. В настоящее время частота синхронизации кристаллов PA-RISC превысила 500 МГц отметку, а в этом году она достигнет значения 800 МГц. В перспективных моделях ожидается увеличение частоты до 1 ГГц и выше.

Микропроцессор PA-RISC 7000 носил кодовое название “Мустанг”

Как известно, высокий уровень интеграции микросхем дает несколько преимуществ: повышение надежности и производительности, снижение энергопотребления. Первый продукт PA-RISC был реализован на шести платах с использованием микросхем средней степени интеграции. Процессор на СБИС тогда требовал только восьми соответствующих микросхем. А вот все компоненты современного процессора PA-RISC, включая кэш-память большого объема, выполнены на одном кристалле. Это стало возможным благодаря повышению степени интеграции: количество транзисторов на одном кристалле увеличилось за прошедшее время почти на три порядка.

Архитектурные изменения обычно рассматриваются на двух уровнях - системном и с точки зрения реализации. Первый обычно касается особенностей машины, ощутимых при программировании на уровне ассемблера. Примерами системных улучшений могут служить добавление новых команд или программно-доступных регистров. Уровень реализации, как правило, связан с внутренней организацией самого процессора и невидим для программиста, хотя приводит к существенному ускорению выполнения программ.

Hewlett-Packard внесла в архитектуру процессоров PA-RISC два значительных изменения. Первоначальный дизайн продуктов был основан на спецификации PA-RISC 1.0, но примерно десять лет назад была разработана следующая версия спецификации - PA-RISC 1.1. Наиболее значительными ее отличиями стали увеличение размера страницы с 2 до 4 Кб, добавление 16 регистров с плавающей точкой и повышение эффективности внутренних прерываний. Стоит отметить, что все изменения обладали обратной совместимостью, т. е. программы, написанные для машин PA-RISC 1.0, могли успешно работать на системах, отвечающих версии 1.1.

В 1996 г. Hewlett-Packard представила спецификацию PA-RISC 2.0, впервые использованную в семействе процессоров PA-8х00. Главным ее нововведением стали 64-разрядная целочисленная арифметика и 64-разрядная адресация (хотя для обеспечения обратной совместимости был сохранен и 32-разрядный режим). Версия 2.0 также добавила страницы переменного размера, несколько новых операций с плавающей точкой и ряд других усовершенствований. При этом все новые процессоры PA-RISC сохраняют полную двоичную совместимость со своими предшественниками.

Эволюция PA-RISC

В сентябре 1992 г. Hewlett-Packard объявила о создании своего 32-разрядного суперскалярного процессора PA-7100, который лег в основу семейства рабочих станций HP 9000 Series 700 и серверов HP 9000 Series 800. При соблюдении проектных норм 0,8 мкм на кристалле размерами 14,2ґ14,2 мм было размещено 850 тыс. транзисторов. Выпускались 33-, 50- и 99-мегагерцовые версии кристалла PA-7100. В 1993 г. были выпущены модифицированная версия PA-7100LC с тактовыми частотами 64, 80 и 100 МГц и PA-7150 с частотой 125 МГц. Через год появился кристалл PA-7200 с тактовыми частотами 90, 100 и 120 МГц.

Особенностью архитектуры PA-7100 являлась внекристальная сверхоперативная память, позволявшая реализовать различные объемы кэш-памяти и оптимизировать конструкцию в зависимости от условий применения. Команды и данные хранились в раздельных кэшах, причем процессор соединялся с ними с помощью высокоскоростных 64-разрядных шин. Кэш-память была построена на быстродействующих кристаллах статической памяти, синхронизация которых осуществлялась непосредственно на тактовой частоте процессора. Процессор на аппаратном уровне поддерживал различные объемы кэш-памяти: кэш команд мог иметь объем от 4 Кб до 1 Мб, кэш данных - от 4 Кб до 2 Мб. Конструктивно на кристалле PA-7100 были размещены устройства для выполнения целочисленных операций, для обработки чисел с плавающей точкой, для управления кэш-памятью, а также унифицированный буфер, устройство управления, ряд интерфейсных схем.

По сравнению с PA 7100 процессор PA 7200 имел ряд архитектурных усовершенствований, главными из которых являлись добавление второго целочисленного конвейера, построение внутрикристального вспомогательного кэша данных и реализация нового 64-разрядного интерфейса с шиной памяти. Для производства кристаллов стали использоваться проектные нормы 0,55 мкм, что позволило увеличить количество транзисторов до 1,3 млн.

Процессор PA-7200, как и его предшественник, обеспечивал суперскалярный режим работы с одновременной выдачей до двух команд в одном такте. Все его команды можно разделить на три группы: целочисленные операции, операции загрузки-записи и операции с плавающей точкой. PA-7200 осуществлял одновременную выдачу двух команд, принадлежащих разным группам, или двух целочисленных команд (последнее было возможно благодаря наличию второго целочисленного конвейера с АЛУ и дополнительных портов чтения и записи в регистровом файле). Команды перехода выполнялись в целочисленном конвейере, причем они могли составлять пару для одновременной выдачи на выполнение только с предшествующей командой.

Для повышения эффективности работы с массивами расширенный набор команд процессора позволял реализовать средства автоиндексации, а также осуществлять предварительную выборку команд, которые помещаются во вспомогательную внутреннюю кэш-память. Эти средства обеспечивали динамическое расширение степени ассоциативности основной кэш-памяти, построенной на принципе прямого отображения, и представляли собой более простую альтернативу множественно-ассоциативной организации. Интерфейс 64-разрядной мультиплексной системной шины, реализующей расщепление транзакций и поддержку протокола когерентности памяти, включал буфера транзакций, схемы арбитража и схемы управления соотношениями внешних и внутренних тактовых частот.

Семейство PA-8x00

Новую эру микропроцессоров PA-RISC ознаменовал выпуск 64-разрядного процессора PA-8000, который был анонсирован в марте 1995 г. Промышленный выпуск кристаллов был начат в 1996-м. Тактовые частоты составляли 160 и 180 МГц. При соблюдении проектных норм 0,5 мкм на кристалле размерами 17,7ґ19,6 мм удалось разместить 4,5 млн. транзисторов. По мнению разработчиков, новый кристалл по сравнению с процессором PA-7200, работающим на той же тактовой частоте, позволял увеличить производительность на 30% и даже больше. Высокая производительность PA-8000 во многом определялась наличием большого количества функциональных устройств (в том числе 10 исполнительных: два арифметико-логических устройства для выполнения целочисленных операций, два устройства для выполнения операций сдвига-слияния данных, два устройства для выполнения умножения-сложения чисел с плавающей точкой, два устройства деления и вычисления квадратного корня и два устройства выполнения операций загрузки-записи). Таким образом, суперскалярный процессор PA-8000 обладал полным набором средств для выполнения 64-разрядных операций, включая адресную арифметику, а также арифметику с фиксированной и плавающей точками. При этом обеспечивалась полная совместимость с 32-разрядными приложениями. Отметим, что PA-8000 вобрал в себя все известные методы ускорения работы. В его основе лежит концепция “интеллектуального выполнения” (intelligent execution), которая базируется на принципе внеочередного выполнения команд. Это свойство позволяло PA-8000 достигать пиковой производительности, благодаря широкому использованию механизмов автоматического разрешения конфликтов аппаратными средствами. В частности, на частоте 180 МГц PA-8000 показал производительность 720 MFLOPS (за счет выполнения четырех операций с плавающей точкой за один такт). Это был первый процессор, в котором реализована архитектура PA-RISC 2.0.

В мае 1997 г. был анонсирован процессор PA-8200. Одной из основных задач, стоящих перед разработчиками, было увеличение тактовой частоты со 180 до 200 и 240 МГц, а, учитывая применение проектных норм 0,5 мкм, сделать это было далеко не просто. Процессор PA-8200 включал несколько архитектурных особенностей. В частности, в нем использовались раздельная первичная кэш-память команд и данных объемом 2 Мб каждая. Кэш-память второго уровня процессором не использовалась. Как и в PA-8000, было задействовано 10 независимых функциональных устройств. Благодаря буферу переупорядочения инструкций процессор мог постоянно работать в суперскалярном режиме. Устройство считывания инструкций доставляло в буфер четыре инструкции за один такт. Встроенная программируемая аппаратура мониторинга производительности позволяла отслеживать такие события, как кэш-попадания (промахи), ошибки в предсказании ветвлений и т. д. Как уже отмечалось, PA-8200 поддерживал 64-разрядное адресное пространство, хотя чип экспортировал 40-разрядные физические адреса, что соответствует 1 Тб непосредственно адресуемой памяти.

Чтобы обеспечить непрерывную работу конвейера и загрузку всех функциональных устройств, необходим надежный механизм предсказания ветвлений. Встроенная аппаратура процессора PA-8200 использует два различных алгоритма предсказания. В статическом режиме обычно действует следующая стратегия: для команд условного перехода назад предсказывается “переход”, для команд условного перехода вперед - “отсутствие перехода”. Компиляторы с помощью эвристических методов могут в код инструкции вставлять подсказки процессору о наиболее вероятном исходе проверки условия. В динамическом режиме для предсказания используется 1024-строчная таблица (Branch History Table, BHT). Каждая ее строка соответствует команде условного перехода и содержит три бита, установленные в трех предыдущих случаях выполнения данной инструкции: каждый бит устанавливается в единицу, если переход имел место, и в нуль, если его не было. Если два или три бита содержат единицу, предсказывается переход.

Значительное повышение производительности обеспечил новый член семейства PA-8x00 - процессор PA-8500, который был объявлен в 1998 г. На кристалле размерами 21,3ґ22 мм при соблюдении проектных норм 0,25 мкм было размещено 140 млн. транзисторов. При этом тактовые частоты кристалла составили 360, 440 и 500 МГц.

Кардинальным изменением в РА-8500 по сравнению с РА-8200 стал отказ от внешней кэш-памяти в пользу ее интеграции на основном кристалле. Кэш-память команд имеет объем 512 Кб, а кэш-память данных - 1 Мб. Очевидно, что это стало возможным лишь благодаря уменьшению базовых размеров элементов. Столь большая емкость кэш-памяти на основном чипе - явление тоже уникальное, поскольку она занимает 75% площади всего кристалла.

В отличие от предыдущих моделей семейства PA-8x00, кэш-память РА-8500 является 4-канальной частично-ассоциативной. Сегодня многие разработчики высокопроизводительных микропроцессоров часто предпочитают этот тип памяти прямого отображения. Это обусловлено тем, что обычно частично-ассоциативная кэш-память обеспечивает более высокую вероятность нахождения в ней данных по сравнению с памятью прямого отображения той же емкости. Однако следует иметь в виду, что при прямом отображении можно получить более низкое время доступа.

Ввиду больших временных задержек, которые могут возникнуть при неверном предсказании переходов в случае внеочередного спекулятивного исполнения команд, разработчики кристалла уделили этому вопросу самое пристальное внимание. В PA-8500 предложено интересное усовершенствование, позволяющее объединить преимущества динамического и статического предсказания переходов. Следует отметить, что в 1999 г. новый процессор получил награду как лучший RISC-процессор (Best RISC Processor) такого авторитетного издания, как Microprocessor Report.

Тогда же корпорация объявила о новом процессоре - PA-8600, промышленный выпуск которого начался год назад. Он работает с тактовыми частотами 550 и 600 МГц и является модернизированной версией кристалла PA-8500. Согласно комментариям Hewlett-Packard, процессор PA-8600 можно применять в тех же системах, что и PA-8500, однако он позволяет разрабатывать более отказоустойчивые серверы. Так, для ускорения доступа к кэш-памяти в нем использованы новые алгоритмы, а сама она построена как память с обнаружением и исправлением ошибок (ECC).

В 2000 году Hewlett-Packard сообщила подробности о своем 64-разрядном процессоре PA-8700. Данная модель предназначена для работы на частотах 800 МГц и выше. Она производится по КМОП-технологии с соблюдением проектных норм 0,18 мкм и использованием методики “кремний на изоляторе”, а также семи слоев медных межсоединений. Это позволит разместить на кристалле 2,25 Мб кэш-памяти - больше, чем на любом другом процессоре, и на 50% больше, чем на PA-8600. Процессор будет поддерживать 44-разрядные физические адреса, что позволит работать с физической памятью объемом до 16 Тб. Кроме того, в РА-8700 удалось понизить напряжение питания, что уменьшило потребляемую мощность и теплоотдачу при работе на высоких частотах. Благодаря меньшим размерам стало возможно повышение рабочей частоты. По утверждению представителей корпорации, процессор выполняет примерно 3,2 млрд. операций в секунду. Согласно предварительным оценкам, производительность PA-8700 на целочисленных и вещественных вычислениях на 64 и 14% соответственно будет превосходить показатели, опубликованные Sun Microsystems для своего новейшего процессора UltraSPARC III.

Hewlett-Packard заявила о своем намерении продолжить развитие линейки PA-RISC. “Прилагая все усилия для развития IA-64, корпорация по-прежнему будет поставлять лучшие в отрасли решения на базе PA-RISC, по крайней мере вплоть до модели PA-8900. Планы развития двойных систем, поддерживающих как PA-RISC, так и IA-64, позволят нашим клиентам сохранить уже существующие инфраструктуры и самостоятельно выбрать время для перехода на IA-64”, - заявил Скотт Столлард (Scott Stallard), вице-президент и генеральный директор подразделения корпоративных систем и технологий Hewlett-Packard. По предварительным данным, в следующем году можно ожидать выпуска PA-8800 с тактовой частотой не менее 1 ГГц, а за ним - PA-8900 с еще более высокой частотой (1,2-1,3 ГГц).

О процессоре PA 7100

Особенностью архитектуры PA-RISC является внекристальная реализация кэша, что позволяет реализовать различные объемы кэш-памяти и оптимизировать конструкцию в зависимости от условий применения. Хранение команд и данных осуществляется в раздельных кэшах, причем процессор соединяется с ними с помощью высокоскоростных 64-битовых шин. Кэш-память реализуется на высокоскоростных кристаллах статической памяти (SRAM), синхронизация которых осуществляется непосредственно на тактовой частоте процессора. При тактовой частоте 100 МГц каждый кэш имеет полосу пропускания 800 Мбайт/с при выполнении операций считывания и 400 Мбайт/с при выполнении операций записи. Микропроцессор аппаратно поддерживает различный объем кэш-памяти: кэш команд может иметь объем от 4 Кбайт до 1 Мбайт, кэш данных - от 4 Кбайт до 2 Мбайт. Чтобы снизить коэффициент промахов применяется механизм хеширования адреса. В обоих кэшах для повышения надежности применяются дополнительные контрольные разряды, причем ошибки кэша команд корректируются аппаратными средствами.

Блок-схема процессора PA 7100

Процессор подсоединяется к памяти и подсистеме ввода/вывода посредством синхронной шины. Процессор может работать с тремя разными отношениями внутренней и внешней тактовой частоты в зависимости от частоты внешней шины: 1:1, 3:2 и 2:1. Это позволяет использовать в системах разные по скорости микросхемы памяти.

Конструктивно на кристалле PA-7100 размещены целочисленный процессор, процессор для обработки чисел с плавающей точкой, устройство управления кэшем, унифицированный буфер TLB, устройство управления, а также ряд интерфейсных схем. Целочисленный процессор включает АЛУ, устройство сдвига, сумматор команд перехода, схемы проверки кодов условий, схемы обхода, универсальный регистровый файл, регистры управления и регистры адресного конвейера. Устройство управления кэш-памятью содержит регистры, обеспечивающие перезагрузку кэш-памяти при возникновении промахов и контроль когерентного состояния памяти. Это устройство содержит также адресные регистры сегментов, буфер преобразования адреса TLB и аппаратуру хеширования, управляющую перезагрузкой TLB. В состав процессора плавающей точки входят устройство умножения, арифметико-логическое устройство, устройство деления и извлечения квадратного корня, регистровый файл и схемы "закоротки" результата. Интерфейсные устройства включают все необходимые схемы для связи с кэш-памятью команд и данных, а также с шиной данных. Обобщенный буфер TLB содержит 120 строк ассоциативной памяти фиксированного размера и 16 строк переменного размера.

Устройство плавающей точки (рис. 8.7) реализует арифметику с одинарной и двойной точностью в стандарте IEEE 754. Его устройство умножения используется также для выполнения операций целочисленного умножения. Устройства деления и вычисления квадратного корня работают с удвоенной частотой процессора. Арифметико-логическое устройство выполняет операции сложения, вычитания и преобразования форматов данных. Регистровый файл состоит из 28 64-битовых регистров, каждый из которых может использоваться как два 32-битовых регистра для выполнения операций с плавающей точкой одинарной точности. Регистровый файл имеет пять портов чтения и три порта записи, которые обеспечивают одновременное выполнение операций умножения, сложения и загрузки/записи.

Управление командами плавающей точки

Большинство улучшений производительности процессора связано с увеличением тактовой частоты до 100 МГц по сравнению с 66 МГц у его предшественника.

Конвейер целочисленного устройства включает шесть ступеней: Чтение из кэша команд (IR), Чтение операндов (OR), Выполнение/Чтение из кэша данных (DR), Завершение чтения кэша данных (DRC), Запись в регистры (RW) и Запись в кэш данных (DW). На ступени ID выполняется выборка команд. Реализация механизма выдачи двух команд требует небольшого буфера предварительной выборки, который обеспечивает предварительную выборку команд за два такта до начала работы ступени IR. Во время выполнения на ступени OR все исполнительные устройства декодируют поля операндов в команде и начинают вычислять результат операции. На ступени DR целочисленное устройство завершает свою работу. Кроме того, кэш-память данных выполняет чтение, но данные не поступают до момента завершения работы ступени DRC. Результаты операций сложения (ADD) и умножения (MULTIPLY) также становятся достоверными в конце ступени DRC. Запись в универсальные регистры и регистры плавающей точки производится на ступени RW. Запись в кэш данных командами записи (STORE) требует двух тактов. Наиболее раннее двухтактное окно команды STORE возникает на ступенях RW и DW. Однако это окно может сдвигаться, поскольку записи в кэш данных происходят только когда появляется следующая команда записи. Операции деления и вычисления квадратного корня для чисел с плавающей точкой заканчиваются на много тактов позже ступени DW.

Конвейер проектировался с целью максимального увеличения времени, необходимого для выполнения чтения внешних кристаллов SRAM кэш-памяти данных. Это позволяет максимизировать частоту процессора при заданной скорости SRAM. Все команды загрузки (LOAD) выполняются за один такт и требуют только одного такта полосы пропускания кэш-памяти данных. Поскольку кэши команд и данных размещены на разных шинах, в конвейере отсутствуют какие-либо потери, связанные с конфликтами по обращениям в кэш данных и кэш команд.

Процессор может в каждом такте выдавать на выполнение одну целочисленную команду и одну команду плавающей точки. Полоса пропускания кэша команд достаточна для поддержания непрерывной выдачи двух команд в каждом такте. Отсутствуют какие-либо ограничения по выравниванию или порядку следования пары команд, которые выполняются вместе. Кроме того, отсутствуют потери тактов, связанных с переключением с выполнения двух команд на выполнение одной команды. Специальное внимание было уделено тому, чтобы выдача двух команд в одном такте не приводила к ограничению тактовой частоты. Чтобы добиться этого, в кэше команд был реализован специально предназначенный для этого заранее декодируемый бит, чтобы отделить команды целочисленного устройства от команд устройства плавающей точки. Этот бит предварительного декодирования команд минимизирует время, необходимое для правильного разделения команд.

Потери, связанные с зависимостями по данным и управлению, в этом конвейере минимальны. Команды загрузки выполняются за один такт, за исключением случая, когда последующая команда пользуется регистром-приемником команды LOAD. Как правило компилятор позволяет обойти подобные потери одного такта. Для уменьшения потерь, связанных с командами условного перехода, в процессоре используется алгоритм прогнозирования направления передачи управления. Для оптимизации производительности циклов передачи управления вперед по программе прогнозируются как невыполняемые переходы, а передачи управления назад по программе - как выполняемые переходы. Правильно спрогнозированные условные переходы выполняются за один такт.

Количество тактов, необходимое для записи слова или двойного слова командой STORE уменьшено с трех до двух тактов. В более ранних реализациях архитектуры PA-RISC был необходим один дополнительный такт для чтения тега кэша, чтобы гарантировать попадание, а также для того, чтобы объединить старые данные строки кэш-памяти данных с записываемыми данными. PA 7100 использует отдельную шину адресного тега, чтобы совместить по времени чтение тега с записью данных предыдущей команды STORE. Кроме того, наличие отдельных сигналов разрешения записи для каждого слова строки кэш-памяти устраняет необходимость объединения старых данных с новыми, поступающими при выполнении команд записи слова или двойного слова. Этот алгоритм требует, чтобы запись в микросхемы SRAM происходила только после того, когда будет определено, что данная запись сопровождается попаданием в кэш и не вызывает прерывания. Это требует дополнительной ступени конвейера между чтением тега и записью данных. Такая конвейеризация не приводит к дополнительным потерям тактов, поскольку в процессоре реализованы специальные цепи обхода, позволяющие направить отложенные данные команды записи последующим командам загрузки или командам STORE, записывающим только часть слова. Для данного процессора потери конвейера для команд записи слова или двойного слова сведены к нулю, если непосредственно последующая команда не является командой загрузки или записи. В противном случае потери равны одному такту. Потери на запись части слова могут составлять от нуля до двух тактов. Моделирование показывает, что подавляющее большинство команд записи в действительности работают с однословным или двухсловным форматом.

Все операции с плавающей точкой, за исключением команд деления и вычисления квадратного корня, полностью конвейеризованы и имеют двухтактную задержку выполнения как в режиме с одинарной, так и с двойной точностью. Процессор может выдавать на выполнение независимые команды с плавающей точкой в каждом такте при отсутствии каких-либо потерь. Последовательные операции с зависимостями по регистрам приводят к потере одного такта. Команды деления и вычисления квадратного корня выполняются за 8 тактов при одиночной и за 15 тактов при двойной точности. Выполнение команд не останавливается из-за команд деления/вычисления квадратного корня до тех пор, пока не потребуется регистр результата или не будет выдаваться следующая команда деления/вычисления квадратного корня.

Процессор может выполнять параллельно одну целочисленную команду и одну команду с плавающей точкой. При этом "целочисленными командами" считаются и команды загрузки и записи регистров плавающей точки, а "команды плавающей точки" включают команды FMPYADD и FMPYSUB. Эти последние команды объединяют операцию умножения с операциями сложения или вычитания соответственно, которые выполняются параллельно. Пиковая производительность составляет 200 MFLOPS для последовательности команд FMPYADD, в которых смежные команды независимы по регистрам.

Потери для операций плавающей точки, использующих предварительную загрузку операнда командой LOAD, составляют один такт, если команды загрузки и плавающей арифметики являются смежными, и два такта, если они выдаются для выполнения одновременно. Для команды записи, использующей результат операции с плавающей точкой, потери отсутствуют, даже если они выполняются параллельно.

Потери, возникающие при промахах в кэше данных, минимизируются посредством применения четырех разных методов: "попадание при промахе" для команд LOAD и STORE, потоковый режим работы с кэшем данных, специальная кодировка команд записи, позволяющая избежать копирования строки, в которой произошел промах, и семафорные операции в кэш-памяти. Первое свойство позволяет во время обработки промаха в кэше данных выполнять любые типы других команд. Для промахов, возникающих при выполнении команды LOAD, обработка последующих команд может продолжаться до тех пор, пока регистр результата команды LOAD не потребуется в качестве регистра операнда для другой команды. Компилятор может использовать это свойство для предварительной выборки в кэш необходимых данных задолго до того момента, когда они действительно потребуются. Для промахов, возникающих при выполнении команды STORE, обработка последующих команд загрузки или операций записи в части одного слова продолжается до тех пор, пока не возникает обращений к строке, в которой произошел промах. Компилятор может использовать это свойство для выполнения команд на фоне записи результатов предыдущих вычислений. Во время задержки, связанной с обработкой промаха, другие команды LOAD и STORE, для которых происходит попадание в кэш данных, могут выполняться как и другие команды целочисленной арифметики и плавающей точки. В течение всего времени обработки промаха команды STORE, другие команды записи в ту же строку кэш-памяти могут происходить без дополнительных потерь времени. Для каждого слова в строке кэш-памяти процессор имеет специальный индикационный бит, предотвращающий копирование из памяти тех слов строки, которые были записаны командами STORE. Эта возможность применяется к целочисленным и плавающим операциям LOAD и STORE.

Выполнение команд останавливается, когда регистр-приемник команды LOAD, выполняющейся с промахом, требуется в качестве операнда другой команды. Свойство "потоковости" позволяет продолжить выполнение как только нужное слово или двойное слово возвращается из памяти. Таким образом, выполнение команд может продолжаться как во время задержки, связанной с обработкой промаха, так и во время заполнения соответствующей строки при промахе.

При выполнении блочного копирования данных в ряде случаев компилятор заранее знает, что запись должна осуществляться в полную строку кэш-памяти. Для оптимизации обработки таких ситуаций архитектура PA-RISC 1.1 определяет специальную кодировку команд записи ("блочное копирование"), которая показывает, что аппаратуре не нужно осуществлять выборку из памяти строки, при обращении к которой может произойти промах кэш-памяти. В этом случае время обращения к кэшу данных складывается из времени, которое требуется для копирования в память старой строки кэш-памяти по тому же адресу в кэше (если он "грязный") и времени, необходимого для записи нового тега кэша. В процессоре PA 7100 такая возможность реализована как для привилегированных, так и для непривилегированных команд.

Последнее улучшение управления кэшем данных связано с реализацией семафорных операций "загрузки с обнулением" непосредственно в кэш-памяти. Если семафорная операция выполняется в кэше, то потери времени при ее выполнении не превышают потерь обычных операций записи. Это не только сокращает конвейерные потери, но и снижает трафик шины памяти. В архитектуре PA-RISC 1.1 предусмотрен также другой тип специального кодирования команд, который устраняет требование синхронизации семафорных операций с устройствами ввода/вывода.

Управление кэш-памятью команд позволяет при промахе продолжить выполнение команд сразу же после поступления отсутствующей в кэше команды из памяти. 64-битовая магистраль данных, используемая для заполнения блоков кэша команд, соответствует максимальной полосе пропускания внешней шины памяти 400 Мбайт/с при тактовой частоте 100 МГц.

В процессоре предусмотрен также ряд мер по минимизации потерь, связанных с преобразованиями виртуальных адресов в физические.

Конструкция процессора обеспечивает реализацию двух способов построения многопроцессорных систем. При первом способе каждый процессор подсоединяется к интерфейсному кристаллу, который наблюдает за всеми транзакциями на шине основной памяти. В такой системе все функции по поддержанию когерентного состояния кэш-памяти возложены на интерфейсный кристалл, который посылает процессору соответствующие транзакции. Кэш данных построен на принципах отложенного обратного копирования и для каждого блока кэш-памяти поддерживаются биты состояния "частный" (private), "грязный" (dirty) и "достоверный" (valid), значения которых меняются в соответствии с транзакциями, которые выдает или принимает процессор.

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

Процессор поддерживает ряд операций, необходимых для улучшения графической производительности рабочих станций серии 700: блочные пересылки, Z-буфери-зацию, интерполяцию цветов и команды пересылки данных с плавающей точкой для обмена с пространством ввода/вывода.

Процессор построен на базе технологического процесса КМОП с проектными нормами 0.8 микрон, что обеспечивает тактовую частоту 100 МГц.

О процессоре PA 7200

Процессор PA 7200 имеет ряд архитектурных усовершенствований по сравнению с PA 7100, главными из которых являются добавление второго целочисленного конвейера, построение внутрикристального вспомогательного кэша данных и реализация нового 64-битового интерфейса с шиной памяти.

Процессор PA 7200, как и его предшественник, обеспечивает суперскалярный режим работы с одновременной выдачей до двух команд в одном такте. Все команды процессора можно разделить на три группы: целочисленные операции, операции загрузки/записи и операции с плавающей точкой. PA 7200 осуществляет одновременную выдачу двух команд, принадлежащим разным группам, или двух целочисленных команд (благодаря наличию второго целочисленного конвейера с АЛУ и дополнительных портов чтения и записи в регистровом файле). Команды перехода выполняются в целочисленном конвейере, причем эти переходы могут составлять пару для одновременной выдачи на выполнение только с предшествующей командой.

Повышение тактовой частоты процессора требует упрощения декодирования команд на этапе выдачи. С этой целью предварительная дешифрация потока команд осуществляется еще на этапе загрузки кэш-памяти. Для каждого двойного слова кэш-память команд включает 6 дополнительных бит, которые содержат информацию о наличии зависимостей по данным и конфликтов ресурсов, что существенно упрощает выдачу команд в суперскалярном режиме.

В процессоре PA 7200 реализован эффективный алгоритм предварительной выборки команд, хорошо работающий и на линейных участках программ.

Как и в PA 7100 в процессоре реализован интерфейс с внешней кэш-памятью данных, работающей на тактовой частоте процессора с однотактным временем ожидания. Внешняя кэш-память данных построена по принципу прямого отображения. Кроме того, для повышения эффективности на кристалле процессора реализован небольшой вспомогательный кэш емкостью в 64 строки. Формирование, преобразование адреса и обращение к основной и вспомогательной кэш-памяти данных выполняется на двух ступенях конвейера. Максимальная задержка при обнаружении попадания равна одному такту.

Вспомогательный внутренний кэш содержит 64 32-байтовые строки. При обращении к кэш-памяти осуществляется проверка 65 тегов: 64-х тегов вспомогательного кэша и одного тега внешнего кэша данных. При обнаружении совпадения данные направляются в требуемое функциональное устройство.

При отсутствии необходимой строки в кэш-памяти производится ее загрузка из основной памяти. При этом строка поступает во вспомогательный кэш, что в ряде случаев позволяет сократить количество перезагрузок внешней кэш-памяти, организованной по принципу прямого отображения. Архитектурой нового процессора для команд загрузки/записи предусмотрено кодирование специального признака локального размещения данных ("spatial locality only"). При выполнении команд загрузки, помеченных этим признаком, происходит обычное заполнение строки вспомогательного кэша. Однако последующая запись строки осуществляется непосредственно в основную память минуя внешний кэш данных, что значительно повышает эффективность работы с большими массивами данных, для которых размера строки кэш-памяти с прямым отображением оказывается недостаточно.

Расширенный набор команд процессора позволяет реализовать средства автоиндексации для повышения эффективности работы с массивами, а также осуществлять предварительную выборку команд, которые помещаются во вспомогательный внутренний кэш. Этот вспомогательный кэш обеспечивает динамическое расширение степени ассоциативности основной кэш-памяти, построенной на принципе прямого отображения, и является более простым альтернативным решением по сравнению с множественно-ассоциативной организацией.

Процессор PA 7200 включает интерфейс новой 64-битовой мультиплексной системной шины Runway, реализующей расщепление транзакций и поддержку протокола когерентности памяти. Этот интерфейс включает буфера транзакций, схемы арбитража и схемы управления соотношениями внешних и внутренних тактовых частот.

О процессоре PA 8000

Процессор PA-8000 вобрал в себя все известные методы ускорения выполнения команд. В его основе лежит концепция "интеллектуального выполнения", которая базируется на принципе внеочередного выполнения команд. Это свойство позволяет PA-8000 достигать пиковой производительности благодаря широкому использованию механизмов автоматического разрешения конфликтов по данным и управлению аппаратными средствами. Эти средства хорошо дополняют другие архитектурные компоненты, заложенные в структуру кристалла: большое число исполнительных функциональных устройств, средства прогнозирования направления переходов и выполнения команд по предположению, оптимизированная организация кэш-памяти и высокопроизводительный шинный интерфейс.

Высокая производительность PA-8000 во многом определяется наличием большого набора функциональных устройств. В состав PA-8000 входят 10 исполнительных устройств: два арифметико-логических устройства (АЛУ) для выполнения целочисленных операций, два устройства для выполнения операций сдвига/слияния данных, два устройства для выполнения умножения/сложения чисел с плавающей точкой, два устройства деления/вычисления квадратного корня и два устройства выполнения операций загрузки/записи.

Средства внеочередного выполнения команд процессора PA-8000 обеспечивают аппаратное планирование загрузки конвейеров и лучшее использование функциональных устройств. В каждом такте на выполнение могут выдаваться до четырех команд, которые поступают в 56-строчный буфер переупорядочивания. Этот буфер позволяет поддерживать постоянную занятость функциональных устройств и обеспечивает эффективную минимизацию конфликтов по ресурсам.

Кристалл может анализировать все 56 командных строк одновременно и выдавать в каждом такте по 4 готовых для выполнения команды в функциональные устройства. Это позволяет процессору автоматически выявлять параллелизм уровня выполнения команд.

Суперскалярный процессор PA-8000 обеспечивает полный набор средств выполнения 64-битовых операций, включая адресную арифметику, а также арифметику с фиксированной и плавающей точкой. При этом кристалл полностью сохраняет совместимость с 32-битовыми приложениями и с предыдущими и будущими реализациями PA-RISC. Это первый процессор, в котором реализована 64-битовая архитектура PA-RISC.

Характерные особенности RISC-процессоров

  1. Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.
  2. Специализированные команды для операций с памятью — чтения или записи. Операции вида «прочитать-изменить-записать» отсутствуют. Любые операции «изменить» выполняются только над содержимым регистров (т. н. load-and-store архитектура).
  3. Большое количество регистров общего назначения (32 и более).
  4. Отсутствие поддержки операций вида «изменить» над укороченными типами данных — байт, 16-битное слово. Так, например, система команд DEC Alpha содержала только операции над 64-битными словами, и требовала разработки и последующего вызова процедур для выполнения операций над байтами, 16- и 32- битными словами.
  5. Отсутствие микропрограмм внутри самого процессора. То, что в CISC процессоре исполняется микропрограммами, в RISC процессоре исполняется как обыкновенный (хотя и помещенный в специальное хранилище) машинный код, не отличающийся принципиально от кода ядра ОС и приложений. Так, например, обработка отказов страниц в DEC Alpha и интерпретация таблиц страниц содержалась в так называемом PALCode (Privileged Architecture Library), помещенном в ПЗУ. Заменой PALCode можно было превратить процессор Alpha из 64-битного в 32-битный, а также изменить порядок байт в слове и формат входов таблиц страниц виртуальной памяти.

Архитектуры, обычно обсуждаемые в связи с RISC

  1. Суперскалярные архитектуры (первоначально Sun SPARC, начиная с Pentium использованы в семействе x86). Распараллеливание исполнения команд между несколькими устройствами исполнения, причем решение о параллельном исполнении двух или более команд принимается аппаратурой процессора на этапе исполнения. Эффективное использование такой архитектуры требует специальной оптимизации машинного кода в компиляторе для генерации пар независимых (результат одной не является входом другой) команд.
  2. Архитектуры VLIW (Very Long Instruction Word — Очень Длинное Слово Команды). Отличаются от суперскалярной архитектуры тем, что решение о распараллеливании принимается не аппаратурой на этапе исполнения, а компилятором на этапе генерации кода. Команды очень длинны, и содержат явные инструкции по распараллеливанию нескольких субкоманд на несколько устройств исполнения. Элементы архитектуры содержались в серии PA-RISC. VLIW-процессором в его классическом виде является Itanium, долгое время бывший самым мощным процессором в мире. Разработка эффективного компилятора для VLIW является сложнейшей задачей, решить которую не получалось долгое время. Преимущество VLIW перед суперскалярной архитектурой — компилятор является более сложной и «умной», чем устройства управления процессора, системой, способной хранить больше контекстной информации и принимать более верные решения об оптимизации.

Иные архитектурные решения, типичные для RISC

  1. Спекулятивное исполнение. При встрече с командой условного перехода процессор исполняет (или по крайней мере читает в кэш инструкций) сразу обе ветви, до тех пор, пока не окончится вычисление управляющего выражения перехода. Позволяет отказаться от простоев конвейера при условных переходах.
  2. Переименование регистров. Каждый регистр процессора на самом деле представляет собой несколько параллельных регистров, хранящих несколько версий значения. Используется для реализации спекулятивного исполнения/

Области применения RISC-процессоров

Современные RISC-процессоры находят применение как:

  1. рабочие станции высшего ценового класса (12-15 тысяч долларов). Работают под ОС VMS, Unix;
  2. персональные рабочие станции (3-7 тыс. $). ОС: Windows NT, Solaris;
  3. серверы;
  4. RISC ПК.

Спецификации микропроцессоров PA-RISC

Модель    Название Год Частота (МГц) Шина памяти [МБ/с] Технология [мкм] Кол-во транзисторов [млн] Площадь [мм²] Энергопотребление [Вт] Кеш данных [КБ] Кеш инструкция [КБ] Кеш 2-го уровня [МБ] Версия ISA
PCX-S PA-7000 1991 66 ? 1,0 0,58 201,6 ? 256 256 1.1a
PCX-T PA-7100 1992 33—100 ? 0,8 0,85 196 ? 2048 1024 1.1b
PCX-T PA-7150 1994 125 ? 0,8 0,85 196 ? 2048 1024 1.1b
PCX-T' PA-7200 1994 120 960 0,55 1,26 210 30 1024 2048 1.1c
PCX-L PA-7100LC 1994 60—100 ? 0,75 0,9 201,6 7—11 1 2 1.1d
PCX-L2 PA-7300LC 1996 132—180 ? 0,5 9,2 260,1 ? 64 64 0—8 1.1e
PCX-U PA-8000 1996 160—180 960 0,5 3,8 337,68 ? 1024 1024 2.0
PCX-U+ PA-8200 1997 200—240 960 0,5 3,8 337,68 ? 2048 2048 2.0
PCX-W PA-8500 1998 300—440 1920 0,25 140 467 ? 1024 512 2.0
PCX-W+ PA-8600 2000 480—552 1920 0,25 140 467 ? 1024 512 2.0
PCX-W2 PA-8700(+) 2001 625—875 1920 0,18 186 304 <7,1@1,5 В 1536 768 2.0
Mako PA-8800 2003 800—1000 6400 0,13 300 361 ? 768/core 768/core 32 2.0
Shortfin PA-8900 2005 800—1100 6400 0,13 ? ? ? 768/core 768/core 64 2.0

Ссылки

  1. PA-RISC. (2016, October 23). In Wikipedia, The Free Encyclopedia. Retrieved 00:57, October 23, 2016, from https://en.wikipedia.org/w/index.php?title=PA-RISC&oldid=745739051
  2. Pcweek [Электронный ресурс]: Микропроцессоры PA-RISC / Дата обращения: 30.11.16. — Режим доступа: https://www.pcweek.ru/pc/article/detail.php?ID=57417
  3. НОУ ИНТУИТ [Электронный ресурс]: Лекция 10: Архитектура RISC-процессоров / Дата обращения: 30.11.16. — Режим доступа: http://www.intuit.ru/studies/courses/92/92/lecture/28386