РА 7200 - девятое поколение процесоров компании Hewlett-Packard с архитектурой PA-RISC. Процессоры этой серии выпускаются компанией с 1986 года и занимают прочные лидирующие позиции по производительности в различных областях компьютерного рынка, включая инженерные рабочие станции, бизнес-серверы, многопроцессорные корпоративные системы, ориентированные на оперативную обработку транзакций. Процессор PA 7200 разрабатывался с целью дальнейшего повышения производительности компьютерных систем Hewlett-Packard. РА 7200 развивает высокопроизводительный суперскалярный чип РА 7100, широко используемый в различных HP-системах, от настольных рабочих станций до мультипроцессорных корпоративных платформ и суперкомпьютеров.
Новый процессор содержит ряд архитектурных усовершенствований, которые повышают системную производительность как для инженерных, так и для коммерческих приложений. Для большинства приложений важным является повышение тактовой частоты процессора, добавление второго целочисленного арифметического устройства для улучшения суперскалярного выполнения и повышение производительности команды сохранения. Особое значение для коммерческих приложений имеет реализация алгоритма выборки команд с упреждением. Для приложений, работающих с большими массивами данных, такими как аналитические и научные системы, а также специфические программы операционных систем и баз данных, значительное повышение производительности обеспечит реализация аппаратных алгоритйов выборки с упреждением и нового вспомогательного кэша типа "on-chip". Наконец, новый процессор включает системный интерфейс с многопроцессорной шиной памяти и ввода/вывода. Это обеспечивает построение высокопроизводительных многопроцессорных систем, не требующее дополни тельных интерфейсных чипов. Процессор РА-7200 содержит также несколько новых архитектурных элементов для специализированных приложений.
РА 7200: общая характеристика
VSLI-чип содержит все элементы процессора в мультипроцессорной системе за исключением внешних кэш-массивов. Основные компоненты процессора РА 7200 таковы:
Устройство с плавающей точкой сохраняет основные характеристики аналогичного устройства на процессоре РА 7100; ожидание в течение двух тактов и полностью конвейерное выполнение команд одинарной и двойной точности. Интерфейс кэша команд и целочисленное АЛУ были усовершенствованы для суперскалярного выполнения пар целых команд. Совершенно новыми в архитектуре РА 7200 являются интерфейс шины и вспомогательный кэш.
Выполнение команд
Процессор РА 7200 унаследовал у своего предшественника РА 7100 сбалансированное конвейерное выполнение команд. Существует совсем небольшое число замедляющих конвейер ситуаций, среди которых однотактовая блокировка Load-Use для любого совпадения с кэшем, однотактовая задержка при непосредственном использовании результата с плавающей точкой, нулевая или однотактовая задержка для непредсказуемого перехода и однотактовая задержка для комбинаций Store Load. По сравнению с РА 7100 в конвейере нового процессора отсутствуют задержки для комбинаций Store-Store, что особенно важно для реализации вызовов процедур и сохранения состояния.
Процессор РА 7200 реализует суперскалярное выполнение команд. Все команды процессора разделяются на три группы: целые операции, загрузка/сохранение и операции с плавающей точкой. РА 7200 может выполнять пару команд за один такт, если это команды из разных групп или если обе команды входят в группу целых операций. Команды перехода считаются специальным случаем целых операций. Они могут выполняться вместе со своим предшественником, но не с последующей командой. Для поддержки одновременного выполнения двух целых команд или команд из груптг целых операций и затрузки/сохранения в процессор включены второе целое АЛУ, дополнительные порты чтения и записи в общий стек регистров и дополнительная логика обхода регистров.
Суперскалярное выполнение требует определенной логики декодирования. Чтобы не снижать частоту процессора, для каждого двойного слова в кэше команд размещаются 6 бит. Когда команды загружаются из памяти в кэш, проверяются зависимости по данным и конфликты ресурсов, после этого информация шифруется в выделенных битах. Некоторые команды процессора могут выполняться только по одной за такт. Однако это оказывается не столь страшно, как может показаться на первый взгляд. Современные компиляторы способны минимизировать отрицательный эффект подобных ограничений суперскалярного выполнения с помощью планирования кода и тем самым обеспечить максимально эффективное использование параллелизма на уровне команд.
Процессор РА 7200 содержит три шины команд, соединяющие интерфейс кэша команд с двумя целыми АЛУ и устройством вычислений с плавающей точкой. Буфер "on-chip" выполняет вспомогательную роль при группировке двух команд, не выровненных на границу двойного слова. В каждом такте команда может прийти из кэша или из буфера на чипе и может быть перенаправлена в одну из трех шин назначения. Так как перенаправление и декодирование выполняются за один такт, это происходит быстро, кроме того, в каждом такте необходима управляющая логика для отслеживания, какие шины содержат верные команды, а также каков порядок одновременно выданных команд. Эти проблемы решают уже упомянутые 6 бит, которые оптимально реализуют конвейерное выполнение.
Организация работы c кэшем
Процессор РА 7200 реализует эффективный алгоритм выборки с упреждением (prefetch) кэша команд. Команды выбираются из памяти при отсутствии в кэше, а также при первом использовании выбранной строки. Выборка команд выполняется эффективно, если вначале встретился сегмент линейного кода. Тестирование применяемого алгоритма на приложениях большой обработки транзакций обнаружило значительное увеличение скорости выполнения.
Процессор содержит интерфейс с непосредственно отображаемым кэшем данных "off-chip", состоящим из стандартных модулей статической памяти. Данный кэш обладает тактовой частотой процессора, а время ожидания для кэша равно одному такту. Кроме того, на самом чипе находится небольшой ассоциативный вспомогательный кэш. На Рисунке 3 изображена организация кэша данных. Для обоих кэшей на генерацию и трансляцию адреса и доступ отводится два шага конвейера. Вследствие этого максимальная задержка при нахождении соответствия для любого из кэшей составляет один такт.
Вспомогательный кэш "on-chip" состоит из 64-х 32-битных строк. Для доступа к каждому из кэшей вьшолняется проверка на соответствие с 65 входами: 64 входа вспомогательного кэша и 1 вход кэша "off-chip". Если найдено совпадение, данные возвращаются непосредственно в подходящий функциональный модуль.
Строки, которых нет в кэше, запрашиваются из памяти; аналогично поступают и в случае выборки с упреждением. Сначала данные строки направляются во вспомогательный кэш. Из него строки извлекаются в порядке "первый вошел, первый вышел". Загрузка строк во вспомогательный кэш вместо кэша "off-chip" исключает ситуации перегрузок, обычно возникающие при использовании непосредственно отображаемых кэшей. Современные компиляторы содержат решения, позволяющие сократить или даже полностью исключить такие перегрузки, однако часто этому в значительной степени препятствует отсутствие во время компиляции достаточной информации. В РА 7200 предусмотрены аппаратные средства, способные исключить перегрузки кэша даже в том случае, если компилятор вообще не предпринимает оптимизаций.
Строки, извлекаемые из вспомогательного кэша, при определенных условиях могут обходить кэш off-chip и направляться непосредственно в память. Для этого в командах загрузки и сохранения специфицируется новый флаг "spatial locality only". Строка данных, выбираемая из памяти командой с таким флагом, помещается, как и все остальные строки, во вспомогательный кэш. Однако затем эта строка возвращается обратно в память, а не направляется в кэш "off-chip", Этот механизм позволяет обрабатывать большие массивы данных, не засоряя кэш "off-chip". Кроме того, исключение одного или двух перемещений строки кэша по 64-битному интерфейсу кэша "off-chip" экономит такты процессора.
Набор команд в архитектуре PA-RISC включает класс команд, которые модифицируют базовое значение в общем регистре непосредственным смещением или индексным значением общего регистра. Например:
LDWX, m m1(r2), r3
Команда LDWX (load word indexed) с признаком модификации (, m) загружает значение адреса, содержащегося в регистре г2, в регистр r3 и затем прибавляет Х1 к N2. Процессор РА 7200 использует этот класс команд для обработки ситуаций, когда данные могут в ближайший момент оказаться доступными потоку кода. Если в приведенном примере ссылка на данные отсутствует в кэше, выполнится выборка с упреждением на базе постмодифицированного адреса. Этот механизм позволяет аппаратуре определять направление и шаг потока ссылокданных. Например, если М1 содержит 0х40, N2 содержит 0х100 и перед этим в кэш не помещались никакие строки данных, при выполнении команды строка 0х100 запрашивается в памяти вследствие отсутствия ее в кэше. Выбирается же строка 0х140.
При выборке строки данных с упреждением она направляется во вспомогательный кэш и помечается как выбранная с упреждением. При следующей ссылке из потока команд на эту строку выполняется другая выборка с упреждением. Процессор РА 7200 позволяет ставить на обработку в один момент времени четыре запроса на выборку данных. Это может использоваться либо для реализации выборок вместе с несколькими потоками ссылок на данные, либо для опережающих выборок одного потока ссылок на данные. Например, в векторном цикле
for i := 0 to N do А [i] := В [i] + С [i] + D [i]
Каждая новая строка в кэше будет инициировать четыре запроса на выборку - по одному для каждого массива. С другой стороны, если процессор выполняет цикл
for i := 0 to N do А [i] := B[i]
то можно выбирать по две строки перед каждым потоком ссылок.
Процессор предлагает ряд возможностей минимизации среднего времени доступа к памяти. Во-первых, для минимизации времени доступа, связанного с совпадением в кэше, в новом процессоре сохранен из архитектуры РА 7100 большой кэш "off-chip" с низким временем ожидания, и сделаны усовершенствования для реализации однотактовых команд сохранения. Число разного рода ситуаций отсутствия в кэше стало меньше: минимизировано отсутствие по принуждению, вследствие недостаточного объема, и вследствие конфликтов.
Случаи принудительного отсутствия в кэше сокращены с помощью выборки с упреждением строк, которые с большой вероятностью будут использоваться. Когда программное обеспечение имеет информацию, необходимую для определения во время компиляции, какие данные потребуются для непосредственной выборки, могут использоваться команды загрузки/сохранения, модифицирующие базовые регистры. Если к коду не добавлено никаких специальных указаний или используется старый код, аппаратура может продолжать использовать обычным способом команды загрузки/сохранения с модификацией базовых регистров для эффективного выполнения выборки с упреждением. Для того чтобы определить наилучший набор правил выборки, исследовались как трассировки старого кода, так и новые примеры потоков кода, компиляторные оптимизации.
Кроме поддержки больших кэшей, сокращение ситуаций отсутствия вследствие недостаточного объема кэша достигнуто с помощью избирательного размещения строк в кэше "off-chip", если им это подходит. Объем данного кэша может использоваться более эффективно, если загружать в кэш "off-chip" данные, требующие временного размещения. Вспомогательный кэш прекрасно обеспечит размещение для данных типа "use-once". Флаг "Spatial locality only" команд загрузки и сохранения позволяет определять данные типа "use-once" (или просто слишком большие для эффективного кэширования). Этот новый флаг кэша способствовал достижению высоких скоростных показателей выполнения больших аналитических приложений.
Добавление эффективной ассоциативности посредством основного кэша позволило сократить число ситуаций отсутствия в кэше вследствие конфликтов. При этом не возникли дополнительные накладные расходы, требуемые для большого мультимножественного ассоциативного кэша. Традиционно кэши характеризуются как непосредственно отображаемые, мультимножественно ассоциативные или полно ассоциативные. Вспомогательный кэш РА 7200 добавляет к основному кэшу динамически регулируемую ассоциативность. Когда отсутствующие строки переносятся во вспомогательный кэш, входы с одним и тем же отображением индекса кэша в основном кэше сразу не заменяются. Таким образом в кэше могут в одно и то же время находиться несколько строк с одинаковым индексом. Все строки вспомогательного кэша могут быть заполнены строками, которые отображаются в один и тот же индекс кэша "off-chip", или строками, отображаемыми в различные индексы. Так удается избежать значительных перегрузок, характерных для кэша с непосредственным отображением.
Системная шина Runway
PA 7200 - первый процессор, спроектированный для Runway - новой шины межсоединений процессор-память ввод/вывод. Runway разрабатывалась прежде всего для недорогих многопроцессорных систем с небольшим числом соединений. Она представляет собой синхронную 64-битную шину адресов/данных с временным мультиплексированием. Протокол шины определен таким образом, чтобы в одном такте с передачей данных не выполнять никакой обработки, что обеспечивает высокочастотные реализации. Для достижения максимальной пропускной способности в шине Runway не требуется "мертвых тактов" при переключении Между драйверами шины.
Шина Runway характеризуется следующими возможностями:
Каждая транзакция чтения из памяти, выданная процессором, помечается адресом выдающего модуля (master ID) и номером транзакции. Эта комбинация уникальным образом идентифицирует транзакцию и позволяет без дополнительных адресных тактов возвращать выпускающему модулю ответы, помеченные одной и той же информацией. РА 7200 позволяет выполнять до шести транзакций в один момент времени.
Чтобы снизить до минимума время ожидания арбитрации без ущерба максимальной частоте шины, Runway реализует конвейерную, двухшаговую арбитрацию. Схема арбитрации Runway распределяет определение победителя арбитрации между всеми модулями на шине. Каждый модуль передает уникальный сигнал запроса арбитрации и получает сигналы от других модулей. На первом такте арбитрации все заинтересованные модули выдают свои сигналы, а контроллер памяти передает управляющие сигналы с информацией управления потоком или указывающие, все ли модули будут вытесняться возвратом данных в память. Во время второго такта все модули оценивают наилучшую информацию и принимают анонимное решение, кто будет владеть шиной. На следующем такте Runway выбранный модуль использует шину. В каждом такте начинается новая конвейерная арбитрация. Владелец шины может использовать специальный сигнал "длинной транзакции" для управления Runway во время ограниченного числа транзакций или тактов.
Для лучшего использования доступной пропускной способности, транзакции на Runway никогда не прерываются и не обрабатываются повторно. Управляющие сигналы CLIENT-ОР показывают, какие транзакции можно передавать в настоящий момент. Транзакции передаются только в том случае, если они могут быть приняты всеми модулями, которые должны отвечать. Контроллер памяти следит за тем, какие транзакции могут передаваться по Runway, и несет основную ответственность за управление потоком данных.
Предиктивное управление потоком данных упрощает реализацию модулей, так как им не приходится иметь дело с "отказными" транзакциями. Все получаемые транзакции могут немедленно обрабатываться. Кроме того, модули могут эффективнее использовать доступную пропускную способность шины, передавая только те транзакции, которые разрешены в данный момент сигналом CLIENT-ОР.
Шина Runway определяет схему связности, поддерживающую множество ожидающих обработки проверок связности кэша (cache coherency checks - ССС). Каждый модуль имеет возможность сообщить ССС-статус связной транзакции со своей собственной частотой, а не в фиксированное время. Каждый модуль содержит очередь ССС-транзакций для откладывания связных транзакций и передает в контроллер памяти выделенные управляющие сигналы для сообщения ССС-статуса к моменту времени, когда данные могут быть возвращены. При этом увеличивается время ожидания памяти для проверки связности. Контроллер памяти отвечает за аккумуляцию ответов связности и возвращение данных только в подходящий момент времени. Если модуль имеет "грязную" копию запрошенной строки, он выдает кэшу транзакцию копии кэша, которая модифицирует память и заполняет первоначальный запрос.
Модули ввода/вывода Кипи ау участвуют в связности кэша, обеспечивающего более эффективные DMA-передачи. Runway определяет транзакции DMA-записи, которые обновляют память новыми строками данных и заставляют другие модули делать недействительными данные, которые могут еще находиться в их кэшах.
Runway поддерживает связный ввод/вывод в системе с виртуально адресуемыми кэшами. Адаптеры ввода/вывода имеют небольшие кэши, которые создают связные транзакции и отвечают на них, а также таблицу преобразования, связывающую виртуальные индексы с операциями чтения и записи ввода/вывода для ДМА и управляемого доступа. Кроме того, процессор РА 7200 включает новую команду LCI (Load Coherence Index), создающую индекс виртуального кэша из виртуального адреса для поддержки когерентного ввода/вывода.
Интерфейс шины
РА 7200 соединяется с шиной Runway непосредственно, без всяких трансиверов или интерфейсных чипов. В процессор включен интерфейс шины, специальным образом настроенный на особенности ядра РА 7200. Интерфейс шины имеет несколько средств, направленных как на минимизацию времени ожидания транзакций, так и стоимости процессора. Использование отдельных атрибутов ядра процессора упрощает архитектуру интерфейса. Интерфейс шины процессора РА 7200 содержит очередь когерентности кэша и буфера транзакций, логику арбитрации, а также логику поддержки множества соотношений частот процессора/шины. Интерфейс реализует также эффективный алгоритм управления связными транзакциями.
Для уменьшения времени ожидания транзакции чтения процессор выдает и захватывает сигналы арбитрации за полтакта (фазу). На первой фазе процессорное ядро сообщает о своем намерении инициировать транзакцию, позволяя интерфейсу выдавать сигнал арбитрации на второй фазе. В общем случае информация об адресе транзакции, доступная только в следующем такте, передается из ядра в интерфейс шины и, обходя буферы чтения/записи, доставляется непосредственно в шину Runway на первой фазе следующего такта. Для того чтобы предотвратить ненужные задержки процессора, буферы чтения и записи включаются в интерфейс шины.
Поскольку в некоторые моменты процессор может оказаться занят, в интерфейсе шины реализована очередь глубиной в десять транзакций для данных из кэша и очередь длиной в три транзакции для данных для TLB. Такие очереди когерентности позволяют обрабатывать много связных транзакций из разных процессоров без привлечения управления потоком данных.
Литература
[1] Gordon Kurpanek, Ken Chan, Jason Zheng, Eric DeLano, William Bryg. Hewlett-Packad. - PA7200: A PA-RISC Processor with Integrated High Performance MP Bus Interface.