Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 03.03.2010 | Доступ: свободный | Студентов: 5333 / 1306 | Оценка: 4.35 / 3.96 | Длительность: 24:14:00
ISBN: 978-5-9963-0267-3
Специальности: Разработчик аппаратуры
Лекция 12:

Микропроцессоры с RISC-аpхитектуpой

< Лекция 11 || Лекция 12: 12 || Лекция 13 >

В составе каждого ядра Power4 имеется 8 конвейеризованных исполнительных устройств (executive unit - EU):

  • два устройства обработки чисел с плавающей точкой (FP EU), каждое из которых может выполнять команды "умножить-и-сложить", что дает 4 результата с плавающей точкой за такт. Операции извлечения квадратного корня и деления с плавающей запятой не конвейеризованы;
  • два устройства для работы с числами с фиксированной запятой (FX EU), деление может выполняться только в одном из устройств FX EU;
  • два устройства загрузки регистров / сохранения (LD EU), которые выполняют арифметические действия по генерации адресов памяти;
  • устройство обработки команд переходов (BR EU);
  • устройство выполнения логических операций с регистром условий (CR EU).

Для обеспечения возможности внеочередного выполнения применяются несколько специальных очередей к исполнительным устройствам (IQ), в том числе очередь StQ для команд сохранения.

Каждое из ядер имеет свой кэш первого уровня, отдельный для команд (I-кэш) и данных (D-кэш). I-кэш емкостью 64 Кбайт является прямоадресуемым и может читать или писать 32 байта за такт, что эквивалентно 8 командам. Он использует IFO-алгоритм замещения данных. D-кэш первого уровня емкостью 32 Кбайт имеет двухканальную организацию, что способствует увеличению эффективности использования его емкости по сравнению с прямоадресуемой организацией I-кэша.

Кэш второго уровня у ядер общий. Он является уже 8-канальным и имеет относительно небольшую емкость 1,4 Мбайт. Это, однако, компенсируется использованием с Power4 кэша третьего уровня большой емкости (32 Мбайт на двухъядерную микросхему Power4 или 128 Мбайт на микросхемный модуль MCM из четырех МП). Кэш второго уровня организован в виде трех независимых блоков, каждый со своим контроллером и интерфейсом доступа со стороны ядра (core Interface unit - CIU). Распределение обработки запросов в кэш второго уровня между тремя блоками способствует увеличению производительности. Каждое ядро имеет по три порта к CIU (для выборки команд - IF, загрузки регистров - LD и сохранения данных - ST). Контроллеры кэша второго уровня работают одновременно, обрабатывая по 32 байта за такт процессора. Для поддержания согласованного представления данных в кэше второго уровня используется расширенный протокол MESI, включающий 7 состояний. Кэш-память второго уровня разделяется не только двумя процессорами кристалла, но также и внешними процессорами других кристаллов микросхемного модуля через линии связи шириной 16 байт, работающими на частоте более 500 МГц. Логической частью кэша второго уровня являются два так называемых некэширующих устройства (non-cachINg unit - NCU), каждое приписанное к своему процессору. NCU-устройства отвечают за сериализацию команд и выполнение некэшируемых операций в иерархии памяти.

Через специальное устройство - "контроллер фабрики" (fabric conTRoller - FC) данные могут быть направлены в кэш третьего уровня и оперативную память. Весь ввод-вывод осуществляется через контроллер шины GX, имеющий порт к FC.

Порт кристалла Power4, предназначенный для подключения кэшпамяти 3-го уровня, имеет ширину 16 байт для каждого из двух направлений пересылки данных. Порт функционирует на 1/3 от тактовой частоты процессоров кристалла, что обеспечивает пропускную способность к памяти на уровне 10 Гбайт/с. Следует отметить, что хотя кэш третьего уровня является внешним по отношению к МП, его теги расположены внутри кристалла, что сокращает время поиска нужной информации. Кэш третьего уровня является общим для модуля MCM, который может содержать кроме микросхемы кэша третьего уровня четыре микросхемы Power4. Для передачи данных между микросхемами Power4, входящими в МСМ, в FC предусмотрены выделенные порты, ориентированные на создание мультимикропроцессорной системы.

Для обращения к оперативной памяти используется буфер ассоциативной трансляции страничного адреса TLB. В TLB поддерживаются страницы памяти емкостью не только 4 Кбайт, но и 16 Мбайт. Помимо этого имеется ассоциативный буфер таблицы сегментов SLB (Segment Lookaside Buffer) емкостью 64 строки.

Микропроцессор Power4 несет в себе все черты RISC-архитектуры.

Он имеет 32 регистра общего назначения и 32 регистра для работы с числами с плавающей точкой. Все вычисления производятся в регистрах, а не в основной памяти. Система команд - трехадресная. Некоторое представление о ней дают следующие команды:

ld RA, 0(RB); загрузить в RA число из ячейки памяти, адрес которой
задан в RB
add RA, RB, RC; RA = RB + RC

Каждая команда имеет длину 32 бита. Первые 6 бит определяют код операции, а остальные имеют различное значение, зависящее от команды. Тот факт, что команды имеют фиксированную длину, позволяет процессору выполнять их более эффективно. Отметим, что все вычислительные команды используют первый аргумент как место приемника результата. Регистры во всех этих командах обозначаются только их номерами.

Например, команда, загружающая число 12 в регистр 5, имеет вид li 5, 12.

Зная формат команды, можно определить, что 5 - это номер регистра, а 12 - это число. Никаких других указателей на это нет.

Система команд Power4 имеет максимальное для RISC-микропроцессоров число команд, выполняемых за один такт, включая одну команду перехода.

Сохранение в Power4 системы команд PowerPC, связанное с поддержкой двоичного кода пользователей, потребовало применения не только однотактных команд, но и микропрограмм и даже прерываний для программной реализации наиболее сложных инструкций.

На стадии подготовки к исполнению RISC-команды архитектуры PowerPC декодируются в так называемые внутренние микрооперации (IOP). Таким образом, IOP есть аналог микроопераций в Pentium 4 (?ops).

Однако в отличие от Pentium 4, IOP-команды, как правило, совпадают с обычными командами PowerPC.

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

На начальных стадиях конвейера проверяются возможные взаимозависимости команд (например, по данным), препятствующие их одновременному исполнению, и планируется объединение команд в группы. Так что реально в микропроцессоре исполняются внутренние команды, которые объединяются в группы по 5 команд. За один такт 5 команд из одной группы пересылаются в очереди выполнения. Выборка IOP-команд из очередей на выполнение в исполнительные устройства EU может осуществляться во внеочередном порядке. За один такт может завершиться только одна группа команд. Это подразумевает завершение выполнения с фиксацией результатов не только всех команд данной группы, но и всех предшествующих групп. Для управления группами используется таблица завершения групп GCT емкостью 20 строк, в каждой из которых содержится адрес первой команды группы и информация о завершении команд группы. Одновременно в Power4 может находиться на разных стадиях выполнения до 215 команд, а в Pentium 4 - до 126 микрокоманд.

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

Для современных суперскалярных микропроцессоров, имеющих длинные конвейеры, высокая точность предсказания переходов крайневажна, а методы предсказания переходов быстро развиваются. За один такт процессор может выбрать из I-кэша и запустить на выполнение до 8 команд, но "поддерживаемый темп", то есть число команд, завершающих выполнение за один такт, равен 5. Логика предсказания переходов сканирует их, и за один такт может обработать до 2 команд перехода.

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

Для динамического предсказания в Power4 используются три таблицы истории переходов. Первая - традиционная таблица истории переходов емкостью 16К строк, индексом в которой является адрес команды перехода. Вторая таблица связана с уникальной особенностью диспетчерирования команд в Power4 группами по 5 команд. Эта таблица также содержит 16К строк и отслеживает путь выполнения программы, приводящий к переходу. Этот путь выполнения представлен 11-разрядным вектором глобальной истории, по 1 биту на группу команд для всех предыдущих выбранных 11 групп. Наконец, третья таблица - таблица селектора - имеет те же самые 16К строк, в которых отслеживается, какая из двух схем предсказания работает лучше. На ее основе генерируется окончательное предсказание переходов.

Динамическое предсказание переходов может быть отменено статическим, генерируемым программно, для чего используются два ранее зарезервированных бита в командах условного перехода. Если эти биты обнулены, используется аппаратное динамическое предсказание.

Конечным результатом работы логики предсказания переходов является загрузка в регистр IFAR адреса выбираемой команды.

Краткие итоги. В лекции рассмотрены принципы построения и развития архитектуры RISC-процессоров. Рассмотрена архитектура микропроцессора Power4, сочетающего в себе RISC-архитектуру и многоядер ность.

< Лекция 11 || Лекция 12: 12 || Лекция 13 >
Владислав Салангин
Владислав Салангин

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

Михаил Королёв
Михаил Королёв