Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реферат АВС.doc
Скачиваний:
22
Добавлен:
05.09.2014
Размер:
333.82 Кб
Скачать

UltraSparc III

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

Основные блоки

Кэш команд

Системный интерфейс

Стрелка вправо 28

В память

Контроллер кэша 2ого уровня

Прямая со стрелкой 25

Таблица переходов

Блок вызова команд

Прямая со стрелкой 21

Контроллер памяти

Прямая со стрелкой 22

Соединительная линия уступом 17Прямая со стрелкой 18

Прямая со стрелкой 12

Кэш записи

Кэш предвыборки

Кэш данных

Соединительная линия уступом 16

Буфер команд

Соединительная линия уступом 7Прямая со стрелкой 8Прямая со стрелкой 9Прямая со стрелкой 10Прямая со стрелкой 11

Прямая со стрелкой 4Прямая со стрелкой 5

АЛУ с плавающей точкой

АЛУ с целочисленных операций

Блок загрузки и сохранения

Кэш команд может содержать до 8000 команд на выполнение.

Блок вызова команд подготавливает на выполнение 4 команды (максимум 6) за один цикл. Количество команд может уменьшаться т.к. бывают неудачные обращения в кэш-память. Если в очереди команд происходит обнаружение условного перехода, то блок вызова обращается в таблицу переходов.

Таблица переход имеет емкость в 16000 записей. В ней хранится история предыдущих переходов и успешность этого перехода – с командой связано двухбитовое поле, которое хранит значение прогноза (сколько раз сработал или был проигнорирован). Точность попаданий может достигать 95% (на тестах).

Помимо таблицы механизма предсказаний переходов, используется стек адресов возврата на 8 значений. Этот стек хранит адрес команды, которая следует за командой вызова. Также используется очередь последовательных (Sequential Instruction Queue) команд. Эта очередь хранит до 4х команд, следующих за командой ветвления, но соответствующих альтернативному пути. В случае, когда предсказанное ветвление окажется неверным, команды из этой очереди сразу направляются на исполнение.

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

После буфера команд команды поступают в блок исполнения операций – целочисленных операций и вещественных операций:

Блок исполнения целочисленных операций состоит из двух АЛУ и короткого «внутреннего» конвейера для обработки команд перехода.

Блок исполнения операций с плавающей точкой состоит из 32 регистров и трех АЛУ, которые предназначены для выполнения операций сложения/вычитания, умножения/деления.

Блок загрузки и сохранения отвечает за обработку команд загрузки и сохранения. В нем есть 3 тракта данных, которые обеспечивают соединение с кэшами:

  • кэш данных - ассоциативная кэш-память первого уровня емкостью 64 Кбайт.

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

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

Конвейерный тракт данных реализован в большинстве современных процессоров. Обработка команд разделена на последовательные независимые стадии. Ниже приведен рисунок, который показывает тракт данных UltraSPARC III.

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

P - вызывает команду из кэша команд первого уровня (L1). Именно на этой ступени происходит обращение в таблицу переходов для выявления условных переходов.

B – декодирует команды. Обнаруженные команды спрогнозированного перехода принудительно возвращаются в ступень А для выборки.

I – происходит сортировка команд по группам:

АЛУ 1 – целочисленные операции

АЛУ 2 - целочисленные операции

АЛУ 1 – операции с плавающей точкой

АЛУ 2 – операции с плавающей точкой

J – подготовка команд для отправки в блок выполнения. Количество отправляемых команд ограничено доступностью функциональных блоков в ступени R.

R – производит поиск регистров, которые необходимы для обработки целочисленных операций. Операции с плавающей точкой направляются в регистровый файл. Если требуемый регистр недоступен, то все последующие команды блокируются.

E –выполняет целочисленные команды. Для большинства команд хватает одного цикла. В добавок здесь начинается обработка команд загрузки и сохранения, а также определение направления команд условного перехода – при ошибке команда возвращается в ступень А.

С – доступ к кэшу L2.

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

W – результаты записываются в регистровый файл рабочего регистра (массив запоминающих ячеек с высоким быстродействием)

X – завершение большинства команд с плавающей точкой

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

D – состояние регистров фиксируется в архитектурных регистровых файлах. Результаты завершенных команд записываются в кэш записи, а дальше переписываются в кэш L2.

I8086

16-битный микропроцессор компании INTEL. Положил начало архитектуре х86 - набор команд применяется в современных процессорах.

Регистровая структура

Процессор имеет 14 регистров. Их можно разделить на несколько наборов: 3 набора по четыре регистра, которые были доступны из программы и два недоступных регистра – указатель команды IP и состояние процессора SR.

Регистры общего назначения были представлены 16-разрядными регистрами - АХ, ВХ, СХ, DX.

Таблица адресации к регистрам:

100

AH

000

AL

AX

000

Аккумулятор

101

CH

001

CL

CX

001

Счетчик

110

DH

010

DL

DX

010

Данные

111

BH

011

BL

BX

011

База

SP

100

Указатель стека

BP

101

Указатель базы

SI

110

Индекс источника

DI

111

Индекс приемника

AL, BL, CL, DL - младшие байты

AH, BH, CH, DH - старшие байты

Дальше идут указательные и индексные регистры – SP, BP, SI, DI.

Сегментные регистры CS, DS, SS, ES. Функции каждого совершенно различны:

CS - идентифицирует текущий сегмент программы

DS - текущий сегмент данных

SS - текущий сегмент стека

ES - текущий дополнительный сегмент данных.

Логический адрес в команде задает только смещение в сегменте. Нужный нам текущий сегментный регистр определяется командой по умолчанию. Например, выборка всех команд осуществляется из CS, а смещение задается в IP. Базовые адреса операндов хранятся в текущих сегментах данных DS или ES, при стековых командах в сегменте стека SS, а смещение задается в команде или хранится в одном из регистров общего назначения.

Способы адресации.

Существует несколько способов адресации:

- Непосредственная адресация

- Прямая адресация

- Косвенная адресация

Непосредственна адресация – вместо адреса в поле операнда команды указывается сам операнд. Операнд записывается как числовая константа.

Прямая адресация – адрес операнда задается в виде метки. Общий вид: <имя метки> ± <константа>.

Прямая регистровая адресация – в поле операнда указывается имя регистра (АХ, DL, SP). Например MOV DS, AX.

Прямая с индексированием – Аисп = Асмещ + Аинд. Аинд находится в индексном регистре. Например MOV AX, SOURCE[SI]

Прямая с базированием – Аисп = Асмещ + Абазы. Адрес Абазы находится в базовом регистре. Например MOV AX, SOURCE[BX]

Косвенная адресация – адрес смещения операнда в сегменте данных находится в одном из регистров BX, SI, DI. Другие  регистры  при  косвенной адресации  недопустимы. Имя  регистра  заключается  в  квадратные  скобки. Если  необходимо  обратиться  к  данным  из  другого сегмента,  например  ES,  необходимо  использовать  так  называемую  замену сегмента – перед [РЕГИСТР] указывают имя сегментного регистра и ставят двоеточие. Например ES:[DI].

Формат команд

8086 имеет двухадресную систему команд. В системе отсутствуют команды, которые используют оба операнда из оперативной памяти. Хотя есть исключение - команды пересылки и сравнения цепочек байт или слов. Допустимы следующие сочетания операндов RR, RS, RI, SI:

R - обозначает операнд, находящийся в одном из регистров регистровой памяти,

S - операнд, находящийся в оперативной памяти, адрес которого формируется по одному из допустимых способов адресации,

I - непосредственный операнд, закодированный в адресном поле самой команды.

Формат команды во многом определяется способом адресации операнда, находящего в оперативной памяти, длиной используемого непосредственного операнда, а также наличием и длиной смещения, используемого при относительных режимах адресации. Длина команды может варьироваться от одного до 6 байт. Длина смещений и непосредственных данных может быть 8 или 16 бит в зависимости от команды.

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