Организация микропроцессорных систем. Учебное пособие. Могнонов П.Б. - 146 стр.

UptoLike

Составители: 

ID0 принимает поток отмеченных байтов и обрабатывает их, определяя форматы
поступивших команд и распределяя их в три параллельно работающих декодеров блока ID1
или в планировщик последовательности микрокоманд (MIS – Microcode Instruction
Sequencer).
Декодеры преобразуют команды х86 в микрокоманды. В Р6 имеется три
параллельных декодеровдва из них "простые", а третий "сложный". Простые декодеры
обрабатывают команды х86, транслируемые в единственную микрокоманду. Сложный же
декодер работает с командами, которые соответствуют от одной до четырех микрокоманд.
Некоторые особенно сложные микрокоманды невозможно непосредственно декодировать
даже сложным декодером, они передаются планировщику последовательности микрокоманд
(MIS), генерирующего необходимое число микрокоманд. Если простой декодер встречает
микрокоманду, которая не поддается трансляции, то в конечном счете она оказывается в
сложном декодере, либо в планировщике последовательности микрокоманд. Такая
пересылка слегка замедляет дешифрацию, но, возможно, не сказывается на исполнение
благодаря буферизации с помощью станции RS. Декодеры способны генерировать в общей
сложности шесть микрокоманд за такт, если сложные и простые команды безупречно
выровнены декодером ID0, но в более типичном случае из всех трех декодеров за один такт
выдаются три микрокоманды. Именно поэтому P6 и имеет трех потоковый суперскалярный
механизм обработки данных. Как правило, в среднем этим трем микрокомандам
соответствует чуть меньше трех команд х86.
Декодеры ID1 преобразуют команды х86
в микрокомандытриады (операция,
указатель на операнд, указатель на место помещения результата). Первый декодер за один
такт способен декодировать одну команду, содержащую до четырех микрокоманд. Два
других декодера могут за такт декодировать только команду, состоящую из одной
микрокоманды.
Одну микрокоманду имеют команды типа регистр - регистр и команды загрузки. Из
двух микрокоманд состоят команды записи и команды чтения - модификации. Команды
регистр - память состоят из двух - трех микрокоманд. Команды чтение - модификация -
запись состоят из четырех микрокоманд. Сложные команды содержат набор заранее
составленных последовательностей микрокоманд, количество которых в наборе превышает
четырех. Декодирование таких команд происходит за несколько тактов. Если при
программировании на ассемблере планировать последовательность команд так, чтобы они
содержали по 4-1-1 микрокоманд, число команд декодированных за один такт будет
максимальной (три команды).
При обнаружении декодером команд инструкции условного или безусловного
переходов выполняется стадия определения адреса перехода с помощью блока BTB. Для
определения адреса ветвления обычно требуется выполнить целочисленное сложение,
прибавляющее к указателю на следующую команду смещение, заданное в поле команды
ветвления. Это не требует дополнительных тактов для обращения к регистрам и
осуществляется благодаря блоку BTB, содержащие ранее использованные адреса переходов.
Буфер переходов состоит из двух буферов BTB0 и BTB1. Буфер BTB0 отслеживает
все целевые адреса потока команд следующих за командой ветвления при невыполнении
условия перехода, а буфер BTB1 – второй поток команд при выполнении условия перехода
(см. рис. 5.14,в).
Буфер переходов (ВТВ) хранит историю происходивших переходов и их целевых
адресов. Каждый из 512 элементов ВТВ хранит целевой адрес и четыре бита предыстории,
которые несут информацию о том, случился ли переход за последних четыре прохода через
команду ветвления, ссылающийся на данный адрес. Если на основание анализа предыстории
предсказывается переход, целевой адрес посылается в блок выборки, не дожидаясь
выполнения команды ветвления. Тем самым реализуется динамический метод предсказания
переходов. Кроме ВТВ, процессор Р6 имеет буфер стековых возвратов RSВ (Return Stack
Buffer), позволяющий корректно предсказывать адрес возврата из процедур, которые
ID0 принимает поток отмеченных байтов и обрабатывает их, определяя форматы
поступивших команд и распределяя их в три параллельно работающих декодеров блока ID1
или в планировщик последовательности микрокоманд (MIS – Microcode Instruction
Sequencer).
       Декодеры преобразуют команды х86 в микрокоманды. В Р6 имеется три
параллельных декодеров – два из них "простые", а третий "сложный". Простые декодеры
обрабатывают команды х86, транслируемые в единственную микрокоманду. Сложный же
декодер работает с командами, которые соответствуют от одной до четырех микрокоманд.
Некоторые особенно сложные микрокоманды невозможно непосредственно декодировать
даже сложным декодером, они передаются планировщику последовательности микрокоманд
(MIS), генерирующего необходимое число микрокоманд. Если простой декодер встречает
микрокоманду, которая не поддается трансляции, то в конечном счете она оказывается в
сложном декодере, либо в планировщике последовательности микрокоманд. Такая
пересылка слегка замедляет дешифрацию, но, возможно, не сказывается на исполнение
благодаря буферизации с помощью станции RS. Декодеры способны генерировать в общей
сложности шесть микрокоманд за такт, если сложные и простые команды безупречно
выровнены декодером ID0, но в более типичном случае из всех трех декодеров за один такт
выдаются три микрокоманды. Именно поэтому P6 и имеет трех потоковый суперскалярный
механизм обработки данных. Как правило, в среднем этим трем микрокомандам
соответствует чуть меньше трех команд х86.
       Декодеры ID1 преобразуют команды х86 в микрокоманды – триады (операция,
указатель на операнд, указатель на место помещения результата). Первый декодер за один
такт способен декодировать одну команду, содержащую до четырех микрокоманд. Два
других декодера могут за такт декодировать только команду, состоящую из одной
микрокоманды.
       Одну микрокоманду имеют команды типа регистр - регистр и команды загрузки. Из
двух микрокоманд состоят команды записи и команды чтения - модификации. Команды
регистр - память состоят из двух - трех микрокоманд. Команды чтение - модификация -
запись состоят из четырех микрокоманд. Сложные команды содержат набор заранее
составленных последовательностей микрокоманд, количество которых в наборе превышает
четырех. Декодирование таких команд происходит за несколько тактов. Если при
программировании на ассемблере планировать последовательность команд так, чтобы они
содержали по 4-1-1 микрокоманд, число команд декодированных за один такт будет
максимальной (три команды).
       При обнаружении декодером команд инструкции условного или безусловного
переходов выполняется стадия определения адреса перехода с помощью блока BTB. Для
определения адреса ветвления обычно требуется выполнить целочисленное сложение,
прибавляющее к указателю на следующую команду смещение, заданное в поле команды
ветвления. Это не требует дополнительных тактов для обращения к регистрам и
осуществляется благодаря блоку BTB, содержащие ранее использованные адреса переходов.
       Буфер переходов состоит из двух буферов BTB0 и BTB1. Буфер BTB0 отслеживает
все целевые адреса потока команд следующих за командой ветвления при невыполнении
условия перехода, а буфер BTB1 – второй поток команд при выполнении условия перехода
(см. рис. 5.14,в).
       Буфер переходов (ВТВ) хранит историю происходивших переходов и их целевых
адресов. Каждый из 512 элементов ВТВ хранит целевой адрес и четыре бита предыстории,
которые несут информацию о том, случился ли переход за последних четыре прохода через
команду ветвления, ссылающийся на данный адрес. Если на основание анализа предыстории
предсказывается переход, целевой адрес посылается в блок выборки, не дожидаясь
выполнения команды ветвления. Тем самым реализуется динамический метод предсказания
переходов. Кроме ВТВ, процессор Р6 имеет буфер стековых возвратов RSВ (Return Stack
Buffer), позволяющий корректно предсказывать адрес возврата из процедур, которые