Еще одна особенность PA-RISC — большие внешние кэши (Рис. 8.). В отличие от некоторых других процессоров, где размер кэша достаточен лишь для быстрого выполнения простых тестов, кэши PA-RISC форсируют работу реальных приложений и служат ключевым отличием от других реализаций RISC. Хранение команд и данных осуществляется в раздельных кэшах, причем процессор соединяется с ними с помощью высокоскоростных 64-битовых шин. Кэш-память реализуется на высокоскоростных кристаллах статической памяти (SRAM), синхронизация которых осуществляется непосредственно на тактовой частоте процессора. При тактовой частоте 100 МГц каждый кэш имеет полосу пропускания 800 Мбайт/с при выполнении операций считывания и 400 Мбайт/с при выполнении операций записи. Микропроцессор аппаратно поддерживает различный объем кэш-памяти: кэш команд может иметь объем от 4 Кбайт до 1 Мбайт, кэш данных - от 4 Кбайт до 2 Мбайт. Чтобы снизить коэффициент промахов применяется механизм хеширования адреса. В обоих кэшах для повышения надежности применяются дополнительные контрольные разряды, причем ошибки кэша команд корректируются аппаратными средствами.
Еще один метод, используемый в RISC-архитектурах для повышения производительности — это конвейер. Для ускорения выполнения команды ее обработка разбивается на ступени: выборка, декодирование, выполнение, обратная запись и т.д. Все ступени конвейера работают одновременно. Наличие конвейера — главный фактор, благодаря которому RISC превосходит CISC. 5-ступенчатый конвейер минимизирует задержки из-за остановов, характерные для суперконвейерных архитектур.
Другими важными особенностями PA-RISC являются:
Рис. 8. Блок-схема взаимодействия процессора и внешних кэшов
Процессор подсоединяется к памяти и подсистеме ввода/вывода посредством синхронной шины. Процессор может работать с тремя разными отношениями внутренней и внешней тактовой частоты в зависимости от частоты внешней шины: 1:1, 3:2 и 2:1. Это позволяет использовать в системах разные по скорости микросхемы памяти.
Процессор PA-8xxx вобрал в себя все известные методы ускорения выполнения команд. В его основе лежит концепция "интеллектуального выполнения", которая базируется на принципе внеочередного выполнения команд. Это свойство позволяет PA-8000 достигать пиковой суперскалярной производительности благодаря широкому использованию механизмов автоматического разрешения конфликтов по данным и управлению аппаратными средствами. Эти средства хорошо дополняют другие архитектурные компоненты, заложенные в структуру кристалла: большое число исполнительных функциональных устройств, средства прогнозирования направления переходов и выполнения команд по предположению, оптимизированная организация кэш-памяти и высокопроизводительный шинный интерфейс.
PA-8500 (Рис. 9.) является 4-х канальным суперскалярным процессором, выполняющим 4 операции за такт. PA-8500 имеет следующие архитектурные особенности:
Перечисленные особенности рассматриваются ниже более подробно.
PA-8500 реализован в 0.25 микронной технологии. Новая технология позволяет разместить на чипе большой кэш первого уровня, что дает возможность повысить частоту без необходимости наличия связанных кэшей второго уровня.
Кэш второго уровня имеет цикл медленнее цикла кэша первого уровня, а также обладает более низкой пропускной способностью. Задержка, вызванная доступом к более медленному кэшу второго уровня, сочетается с необходимостью извлечь полную строку кэша для заполнения кэша первого уровня, а не просто заполнить его текущими данными. Большой кэш первого уровня поможет избежать ограничений многоуровневой структуры кэша, так как направляет потоки инструкций и данных непосредственно в хранилище данных.
Рис.9. Архитектура процессора PA-8500
Процессор PA-8500 предоставляет доступ к большему объему данных за два такта из своего 0.5MB кэша инструкций и 1MB кэша данных, чем многие системы могут предоставить за 10 и более тактов из кэша второго уровня. Механизм установки очередности инструкций поддерживает постоянную загрузку функциональных модулей процессора, предотвращая их простой, как это обычно происходит в традиционных конвеерных процессорах.
Одной из задач при разработке PA-8500 было создание чипового кэша, который бы мог уместиться в выделенную зону чипа и, тем не менее, поддерживал бы высокий уровень установки очередности инструкций. Такое решение требует, чтобы кэш данных поддерживал выполнение двух одновременных операций памяти при поддержке двухтактного доступа. Задача была решена использованием двухбанковой системы, разработанной для внекристального кэша данных. Система реализована в виде простого однопортового RAM, что помогло сохранить пространство на чипе. Поскольку каждый запрос имеет отношение только к половине кэша, физическая длина доступа была уменьшена, что позволило достичь меньшего времени доступа.
Все данные, хранящиеся в кэше PA-8500, защищены от возникновения однобитовых ошибок. Необходимо принять все меры к сохранению целостности данных. Для кэша инструкций достаточно простой четности, поскольку его содержимое всегда безошибочно. Всякий раз, когда доступ к инструкциям сигнализирует об ошибке, доступ обрабатывается как неудачное обращение в кэш. Строки кэша с нарушенными данными аннулируются и данные поступают из памяти заново.
Больше усилий необходимо предпринять для обеспечения защиты кэша данных, потому как коррекция необходима когда неверная строка кэша нарушается. PA-8500 предоставляет 6 лишних битов на слово для возможности коррекции однобитовой ошибки и защиты кэша данных. Однако, коррекция происходит не прямо во время доступа к кэшу, так как это бы увеличило бы время задержки доступа. Вместо этого, ошибки распознаются параллельной логикой коррекции ошибок. Если ошибка распознана, поврежденные данные выбрасываются из кэша. Если строка неверна, коррекция ошибки происходит на пути копирования. Если строка верна, она аннулируется, а доступ производится еще раз, что заставляет строку переместиться в кэш с исправленными данными.
При наличии большого чипового кэша первого уровня в сочетании с мощным механизмом предсказания ветвления, PA-8500 не нуждается в дорогом, присоединенном напрямую к процессору кэше второго уровня. Что, в свою очередь, устраняет необходимость в интегрированном контроллере кэша второго уровня. В дополнение к этому, нет необходимости в большом количестве выводов процессора, обслуживающих соединения с внешними RAM.
Процессор PA-8500 обладает раздельной архитектурой, в которой логика интерпретирования инструкций не связана с конвеерной логикой функциональных модулей. Подобная архитектура позволяет процессору частично интерпретировать инструкции задолго до действительного исполнения инструкций функциональным модулем (модулями). Интерпретированные инструкции хранятся в очереди внутри чипа. Одновременно PA-8500 может таким образом обрабатывать до 56 инструкций.
Процессор обрабатывает до 4 инструкций за такт. Для поддержания суперскалярной производительности на максимально возможном уровне процессор PA-8500 содержит в себе десять функциональных модулей: два независимых модуля для операций с плавающей точкой, два независимых функциональных модуля деления и извлечения квадратного корня, два независимых 64-разрядных целочисленных арифметических логических модуля (ALU), два модуля сдвиговых/логических функций (хотя эти модули разделены с целочисленными ALU, за такт ими выполняются лишь две из возможных четырех инструкций), и два независимых модуля загрузки/выгрузки.
Что касается важных функциональных модулей для операций с плавающей точкой, каждый из них способен выполнить одну инструкцию умножения/сложения за такт. Таким образом, пиковая производительность операций с плавающей точкой в четыре раза превышает тактовую частоту. Важно отметить, что инструкция умножения/сложения является комбинированной, - то есть для выполнения одной инструкции необходимо выполнение двух операций. Это не просто повышает производительность, выполнение комбинации умножения/сложения требует одной инструкции в IRB, что еще более повышает эффективность процессора. Инструкция умножения/сложения имеет трех тактовую задержку, но при наличии конвеерности, результат выдается каждый такт.
Для того, чтобы использовать весь набор функциональных модулей, процессор оснащен 56-командным буфером предсказания ветвлений (IRB - instruction reorder buffer) двух портовым кэшем данных и способностью выбирать четыре инструкции за такт из большого кэша инструкций. Процессор может хранить до 56 инструкций в буфере и выполнять их в тот момент, когда необходимые данные и функциональный модуль (модули) станут доступными. Взаимосвязь данных и инструкций, хранящихся в буферах известна, инструкции поступают в функциональные модули точно в момент, когда данные и функциональные модули будут доступны.