Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ORGANIZATsIYa_EVM

.pdf
Скачиваний:
9
Добавлен:
29.03.2016
Размер:
3.03 Mб
Скачать

Сост. рег

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ФУ1

 

 

 

 

 

Рег сост ФУ1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистровы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

й

 

 

 

 

 

 

 

 

 

 

Н.ФУ

 

файл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ФУ2

 

 

 

 

 

Рег сост ФУ2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Центральная схема

 

 

 

Номер ФУ

 

 

 

 

 

 

 

 

управления

 

 

 

записываем

 

 

 

 

 

 

 

 

результат в рег.

 

 

 

 

 

 

 

 

 

 

 

 

результата

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Буфер

 

Очередь

Без упорядоч.

 

Команд

Выполнения

 

На удаление

команд

 

 

 

 

 

Очередь команд на выполнение

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

Алгоритм Томасуло С одной стороны выделение чтения операндов в отдельную стадию конвейера наводит на

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

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

Итак целесообразность перемещения узла чтения операндов в глубь конвейера будет только

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

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

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

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

Без обходных цепей в сумматоре … … С обходными цепями в сумматоре

ADD R1R2R3

ID EX WB

ID EX

SUB R4R1R3

ID EX WB

ID EX WB

Невозможна одновременная запись и чтение в R1

конфликт просто не возникает т.к. результат ADD поступает на вход сумматоре для вычитания.

… ….

Вышеописанная технология реализует алгоритм Томасуло, основные принципы которого мы и отметим.

Но прежде чем сформулировать эти принципы рассмотрим еще способ устранения конфликтов типа WAR на конвейере. Таким является способ переименования регистров.

1.R5=R1+R2

2.R6=R0*R5

3.R5=R3+R4

4.R7=R0*R5

5.R5=R1+R2

6.R6=R0*R5

7.S1=R3+R4

8.R7=R0*S1

ID EX W

 

структурный конфликт: регистр. файл занят;

 

ID EX

W

запись 2-ой команды

 

 

 

 

регистр R5 ЗАНЯТ 2ой командой запись не возможна

ID

EX EX

W

RAW конфликт поR5 между 1и 2 командами

 

ID

 

EX EX W

RAW R5 занят 3

ей

командой

 

 

 

IDEX W

 

как видно из примера переименование регистров

 

ID EX W

 

увеличивает производительность работы конвейера

ID

EX EX W

ID

EX EX W

Метод переименования регистров (пример)

Предположим, что необходимо вычисление (¬x + ¬y)c

¬x = ix1 + jy2; ¬x + ¬y=i(x1+x2) + j(y1+y2)

¬y=ix2 + jy2; c(¬x + ¬y)=ic(x1+x2) + c(y1+y2)j

Т.е. значение координаты нового вектора: c(x1+x2), c(y1+y2) которые будут помещены в регистровый файл.

Данные вычисления будут производиться на суперскалярном процессоре имеющегот 2 конвейера: конвейер с фиксированной точкой (операции сложения) и конвейер умножения (множительное устройство)

Программа для выполнения:

ADD R5=R1+R2

MUL R6=R0*R5

ADD R5=R3+R4

MUL R7=R0*R5

Общая схема:

x1,x2

 

 

 

 

 

 

 

Регистровый файл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

R7

 

 

 

 

 

 

 

 

 

 

 

 

y1,y2

 

 

 

 

 

 

 

 

R6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R11

X1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R2

X2

 

 

 

 

 

 

 

 

 

R3

Y1

 

 

 

 

 

 

 

 

 

R4

Y2

 

 

 

 

 

 

 

 

 

R0

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Для организации выдачи результатов в порядке определяющем программным кодом необходимо сохранять содержимое временных регистров до того времени, когда вся редыдущая команда закончит выполнение и будут удалены из конвейера. В течении времени пока временной регистр содержит данные он используется последующими командами как источник. Т.е. отсюда вывод: при суперскалярной архитектуре использование временных регистров необходим блок выходной … команд, который будет контролировать окончание выполнения команд в двух фазах:

1.Завершение

2.Запись результата Удаляя с конвейера те команды которые будут иметь статус второй фазы.

КОНВЕЙЕР

очередь

 

 

завершенн

 

ых команд

 

Входной поток

команд

КОНВЕЙЕР

Очередь

Р.Ф.

команд на

 

удаление с

 

 

конвейра

 

… памяти

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

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

А) сохранение исходных данных команд, находящихся в буферах исполнительных устройств и всех команд в буфере очередности, контролирующего последовательность выполнения программного кода, имеющих статус “‘ завершение”.

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

командам выполненным вне очереди

Б) сохранение всех х результатов в буфере, который хранит новые значения всех команд, находящихся в состоянии “завершение”

В) выдавать команды на этап запись результата” ,если известно что все предыдущие команды выполнены без прерываний, это является гарантией, что ни одна из предыдущих команд не будет завершена пока не будет обработано прерывание.

Г) Хранить все адреса команд и сами команды, находящиеся на не выполнении в конвейере.

Блок предсказания переходов

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

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

Алгоритм Томасуло

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

Станции резервирования представляют ячейки буферной памяти типа FIFO. Для каждого функционального устройства структура каждой станции состоит из информационной части и теговой.

Информационная часть содержит операнды поступающие на обработку из: А) регистрового файла Б)из функционального устройства как и промежуточный результат В) Из оперативной памяти

Теговая часть каждой строки в буфере памяти содержит 6 полей:

 

 

 

1.)

Поле операции

 

 

 

 

 

 

 

2.)

Поля, указывающие станции резервирования, которые будут

вырабатывать

 

соответствующие операнды источники, нулевые значения этих полей указывают, что

 

операнды уже находятся в полях значения операндов.

 

 

 

3.)

2 поля операндов источника

 

 

 

 

 

 

4.)

Поле занято, указывает, что данная станция резервирования и соответствующее ей

 

устройство заняты.

 

 

 

 

 

 

 

Поле

Номер

станции

Номер

станции

Значение

Значение

 

Занято

операнда

резервирования

резервирования

1го

второго

 

 

 

 

 

 

 

 

операнда

операнда

 

 

 

 

Откуда

должны

Откуда

должен

 

 

 

 

 

 

подавать

поступать

 

 

 

 

 

 

первый операнд

второй операнд

 

 

 

 

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

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

Каждая теговая строка в буфере содержит 4 поля

1.Поле типа команды

2.Поле места назначения, по которому будет отправлен результат выполнения команды

3.Поле значения

4.Поле состояния команды(микрооперации)

Поле типа команды определяет является ли команда перехода, командой записи в память, или регистровый файл.

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

При выполнении по предположению запись в регистровый файл не производится до тех пор пока команда не не получит статус “запись результата”

Большое преимущество схемы Томасуло заключается в распределении логики обнаружения конфликтов и устранение приостановок ,связанных с конфликтами WAW и WAR. Это преимущество возникает из-за наличия станций резервирования, которые хранят промежуточные результаты вычислений и общей магистральной шины результата ,которая дает возможность одновременной загрузки результата в несколько станций в случае необходимости , таким образом давая возможность поступления нескольких команд, ожидающих этот результат, на выполнение из входной очереди в функциональные устройства в одном такте конвейера при условии ,что каждая станция резервирования имеет свою магистраль , связанную с входной очередью. Одновременное начало выполнения команд, ожидающих данные с магистрали результата, в функциональных устройствах возможно и при наличии одной магистрали загрузки команд из входной очереди ,если эти команды уже находятся в станциях резервирования функциональных устройств.

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

Буфер

Кэш L-1

Блок формирования

TLB-команд

команд

следующего адреса

 

 

 

команды/

 

 

узел выбора

предсказания

 

 

целевого адреса в

Буфер

 

команд из кэш

 

команде перехода

 

 

предвыбраных

 

 

 

 

 

 

команд

 

Буфер команд

 

 

 

 

 

 

Кэш L-2

 

 

 

 

 

 

декодер

 

 

СИСТЕМНАЯ

 

 

 

 

ПАМЯТЬ

 

Блок

 

 

 

 

 

 

 

 

переименования

 

 

 

регистров/

 

 

 

 

диспетчер

 

 

Очередь команд

Очередь команд

Очередь команд

Очередь команд

ожидающих

 

ожидающих

ожидающих

переходов

выполнения в

 

выполнения для

выполнения с

ожидающих

целочисленных

 

записи и чтения

плавающей

выолнения

устройствах

 

из памяти

точкой

 

Логика

 

Логика

Логика

Логика

контроля

 

контроля

контроля

контроля

готовности

 

готовности

готовности

готовности

команд для

 

команд для

команд для

команд для

выполнеия

 

выполнения

выполнения

выполнения

Чтение

 

Чтение

Чтение

Чтение

регистров

 

регистров

регистров

регистров

Целочисленное

 

Устройсво

Устройство с

Устройство

устройство

 

чтения /записи

плавающей точ

команд перехода

Очередь

 

 

 

 

запросов

 

Очередь

очередь удаления

 

 

 

 

записи

команд

 

Кэш данных

 

 

 

 

L-1

 

Очередь

Логика удаления

TLB

 

 

чтения

выполненных команд

 

 

Проверка наличия команды

 

 

 

 

 

 

 

 

 

 

 

 

Команда есть?

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверить Rрезi=i - 1, i - 2, … , i - x

 

 

 

 

 

 

 

 

 

 

 

ID1-выдача

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конфликтWAW

 

 

 

 

 

РАВНО

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Блокировка выдачи

 

 

 

 

Разрешение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выдачи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверка Rчт=Rрез i-1,i-2,…,i-x

 

 

 

 

 

 

ID2чтен

 

 

 

 

 

Да

 

 

 

 

нет

 

нет

 

 

 

 

 

 

 

 

РАВНО

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Разрешение выдачи

 

 

 

 

 

Блокировка выдачи

 

 

Установить

 

 

 

ком в ФУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

команды в ФУ

 

 

 

 

 

 

 

 

 

 

 

 

 

EX-выполнение

 

 

 

 

 

 

 

 

Ф.У. занято

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сбросить Ф.У. занято

Проверка Rрез=Rчт i-1,i-2,…,i-k

равно

Разрешена запись в Rрезi,

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]