andrey

Путь к Файлу: /Организация ЭВМ / Организация ЭВМ 2004 / Доп.материалы 2002 / Конвейер.doc

Ознакомиться или скачать весь учебный материал данного пользователя
Скачиваний:   5
Пользователь:   andrey
Добавлен:   13.01.2015
Размер:   217.0 КБ
СКАЧАТЬ

Министерство образования Российской Федерации

 

Хабаровский государственный технический университет

 

 

 

 

 

 

Конвейер

 

 

 

 

 

 

Методическое пособие к изучению курса

“Организация ЭВМ и cистем”

для студентов специальности 220100

“Вычислительные машины, комплексы, системы и сети”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Хабаровск

2002

 

 

 

 

1. Введение.

 

Конвейеризация  -  это  важный  способ  ускорения выполнения команд  микропроцессором. Выполнение любой команды можно разбить на  два  этапа:  1  -  выборка  кода  команды,  2  -  собственно выполнение.   Конвейеризация  позволяет  сократить  до  минимума первый этап.

Эффективность  нагляднее  всего  видно  на примере цифрового автомата.  В  случае применения стандартной структуры построения (см.  рис 1) минимальное время выборки кода команды определяется временными   характеристиками  используемых  микросхем.  Типовые задержки распространения сигнала для счетчиков - 17 нс, для ПЗУ • 60 нс, т.о. среднее время выборки составляет 77 нс.

Конвейер
Конвейер
 


                                                                                     код команды Конвейер

КонвейерКонвейерКонвейер                  G        Счетчик          ПЗУ

КонвейерКонвейерКонвейер                     адреса

Конвейер                   команды                          

Конвейер
Конвейер
Конвейер
Конвейер
 

 

 

 

 


рис. 1. Общая структура устройства выборки кода команды.

Несложное  изменение схемы  позволяет  существенно улучшить этот  показатель (см. рис 2). Особенностью данной схемы является то,  что     первый такт работы автомата “холостой”, а для каждого последующего  код  команды  уже находится на входах регистра тем самым  время  выборки  сокращяется  до  задержки распространения сигнала через регистр, что составляет обычно 15 нс (К1533).

 

                                                                                                                   код команды

Конвейер Конвейер Конвейер Конвейер
 

 


КонвейерКонвейерКонвейерКонвейер                   G        Счетчик          ПЗУ                              RG

КонвейерКонвейерКонвейерКонвейерКонвейер                   адреса

КонвейерКонвейерКонвейер                   команды                        D         Q                      

Конвейер
Конвейер Конвейер
Конвейер
Конвейер
 

 

 

 

 


                                                                                                   C

 

 

              рис. 2. Простейший вариант построения конвейера выборки команд.

Обычный процессор выполняет команду в таком порядке:

1) Выборка команды из памяти.

2) Дешифрирование команды  в  стандартную форму для операционного устройства.

3) Выполнение команды.

Здесь  одновременно  можно  делать  только один шаг, поэтому обработка развивается примерно так:

Команда1

Выборка

Исполнение

 

 

 

Команда2

 

 

Выборка

Исполнение

 

Команда3

 

 

 

 

Выборка

 Время 

Тик 1

Тик 2

Тик 3

Тик 4

Тик 5

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

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

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

В простейшем случае процессор разделен на устройство опережающей выборки и операционное устройство. Выполнение последовательности команд в таком МП будет выглядеть так:

Команда1

Выборка

Исполнение

 

 

 

Команда2

 

Выборка

Исполнение

 

 

Команда3

 

 

Выборка

Исполнение

 

Команда4

 

 

 

Выборка

Исполнение

Команда5

 

 

 

 

Выборка

Время

Тик 1

Тик 2

Тик 3

Тик 4

Тик 5

Как отсюда видно, достигается сокращение числа интервалов (тактов синхронизации) на выполнение одной команды более чем в 2.5 раза. Но при этом длительность одного такта составляет сумму времен дешифрации и выполнения команды и увеличивается в 2 раза. Общий выигрыш от такого метода конвейеризации составляет не менее 1.25 раза, а при медленной операции выборки - еще больше.

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

 

Команда1

Выборка

Дешифрация

Исполнение

 

 

Команда2

 

Выборка

Дешифрация

Исполнение

 

Команда3

 

 

Выборка

Дешифрация

Исполнение

Команда4

 

 

 

Выборка

Дешифрация

Команда5

 

 

 

 

Выборка

Время

Тик 1

Тик 2

Тик 3

Тик 4

Тик 5

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


Дальнейшее увеличение быстродействия связано с более глубоким разбиением этапов выполнения команд на отдельные ступени, усовершенствованием алгоритма предвыборки, большим распараллеливанием выполнения операций. Так, в МП 80486 применена двухступенчатая дешифрация:

 

Команда1

Выборка

Дешифр.1

Дешифр.2

Исполнение

 

Команда2

 

Выборка

Дешифр.1

Дешифр.2

Исполнение

Команда3

 

 

Выборка

Дешифр.1

Дешифр.2

Команда4

 

 

 

Выборка

Дешифр.1

Команда5

 

 

 

 

Выборка

 Время

Тик 1

Тик 2

Тик 3

Тик 4

Тик 5

 Это позволяет сократить число тактов синхронизации на выполнение одной команды более чем в 1.5 раза, а длительность такта синхронизации будет почти в 2 раза меньше, чем первом случае (без конвейеризации), что дает общий выигрыш от такого метода конвейеризации более чем в 3 раза. Кроме того, после 1 ступени дешифрации можно определить, требуется ли для выполнения команды обращение к памяти, и если требуется - начать его до стадии выполнения с опережением. Это позволяет сократить время выборки операндов из памяти.

 

1. Микропроцессоры 8086, 8088, 80186, 80286.

2.1. Микропроцессор 8086.

Микропроцессор 8086, являясь первым процессором семейства 80x86, реализует наиболее простой алгоритм конвейеризации. Архитектура МП 8086 приведена на рис. 1.1.

 

КонвейерКонвейер  данные           внешняя шина

КонвейерКонвейер   EU                     BIU

Конвейер   (АЛУ,ДШК,РОН)               (интерф.блок)

Конвейер
Конвейер
 


КонвейерКонвейер  коды команд

       и непоср.данн.

Конвейер
 


      Буфер ком.(6 байт)

 

Рис. 1.1. Архитектура МП 8086.

МП разбит на два относительно самостоятельных блока: операционный (исполнительный) блок - Execution Unit (EU), и интерфейсный блок - Bus Interface Unit (BIU).

Операционный блок содержит АЛУ, регистры и другие узлы, необходимые для дешифрации и выполнения команд. Интерфейсный блок содержит шинный интерфейс и устройство опережающей выборки с буфером очереди команд. Такая организация ЦП позволяет одновременно выполнять какую-либо команду и проводить запись данных или считывание данных или кода с внешней шины процессора. При этом, если в текущем такте внешняя шина не нужна, BIU считывает в буфер команд следующую за только что выполненной или считанной командой. При выполнении команд, изменяющих порядок выполнения операций, производится очистка очереди команд и вновь производится ее заполнение новыми командами.


2.2. Состояние очереди команд.

Наличие очередей команд в микропроцессорах 8086/8088 приводит к тому, что выбираемая команда может выполняться не сразу же. Чтобы внешняя логика могла контролировать последовательность выполнения команд, микропроцессоры 8086/8088 в максимальном режиме выдают на выходы QS1 и QS0 состояние очереди. Оно анализируется в каждом такте синхронизации и биты QS1 и QS0 кодируются следующим образом:

 

00 - из очереди команд не выбиралась,

01 - из очереди выбран первый байт текущей команды,

10 - содержимое очереди использовать нельзя из-за передачи управления,

11 - из очереди выбран байт, отличающийся от первого байта команды.

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

 

2.3. Микропроцессор 8088.

В отличие от 6-байтной очереди команд микропроцессора 8086 в микропроцессоре 8088 длина очереди команд составляет 4 байта. Причина такого уменьшения длины очереди заключается в том, что микропроцессор 8088 может считывать только байты и увеличение времени выборки не позволяет процессору полностью использовать 6-байтную очередь. Алгоритм опережающей выборки отличается тем, что микропроцессор 8088 инициирует выборку команды, когда в очереди оказывается один свободный байт, а не два, как в микропроцессоре 8086.

 

2.4. Микропроцессор 80186.

Несмотря на наличие дополнительных блоков и расширение набора команд, МП 80186 в части конвейеризации не отличается от МП 8086.

 

2.5. Микропроцессор 80286.

В микропроцессоре 80286 произведено улучшение алгоритма работы устройства предвыборки. Эти изменения заключаются в введении предварительного анализа извлекаемых в очередь команд на предмет наличия в них безусловного изменения порядка выполнения команд. При обнаружении таких команд (см. табл. 1.1.) устройство предвыборки прекращает дальнейшее заполнение очереди, что позволяет ускорить очистку очереди команд и разгрузить внешнюю шину микропроцессора.

Таблица 1.1. Команды, прекращающие предвыборку.

Мнемоника

 Описание инструкции

JMP

Безусловный переход

CALL

Вызов подпрограммы/задачи

RET

Возврат из программы

HLT

Останов

INT 3

Прерывание 3

INTO

Прерывание 4, если переполнение

INT n

Прерывание n

IRET

Возврат из прерывания или возврат из задачи

LOOP

Выполнить цикл и уменьшить регистр ЕСХ

LOOPE

Цикл если равно

LOPNE

Цикл,если не равно

Большинство инструкций позволяют предвыборному устройству продолжать беспрепятственно, пока не будет достигнут конец сегмента или не будет достигнута несуществующая или неиспользуемая страница памяти в МП 80386. Однако инструкции безусловнной передачи управления (САLL,INТ,JМР,RЕТ,IRЕТ) и инструкция НLТ вызывают остановку предвыборщика до тех пор, пока последующие адреса не будут непосредственно выполнены и продолжится предвыборка тех адресов, которые не будут, следовательно, использовать всю ширину шины. Условный переход не останавливает предвыборщик. Инструкции подобные LООРсс останавливают устройство предвыборки и поэтому предпочтительны для получения максимальной скорости при выполнении итерационных циклов, где тестовое условие наиболее часто будет истинно т.е. передача управления будет происходить наиболее часто.

 

3. Микропроцессор i80386.

3.1. Конвейеризация команд.

Самый важный способ ускорения выполнения команд в микропроцессоре 80386 - конвейеризация.

Процессор 80386 разделен на устройство опережающей выборки, дешифратор и операционное устройство, что позволяет выполнять несколько операций одновременно (табл. 3.1).

Таблица 3.1. Действие конвейеризации.

Такты

Опережающая выборка

Дешифратор

Операционное устройство

Интервал   1

Команда    1

 

 

Интервал   2

Команда    2

Команда    1

 

Интервал   3

Команда    3

Команда    2

Команда    1

Интервал   4

Команда    4

Команда    3

Команда    2

Интервал   5

Команда    5

Команда    4

Команда    3

Интервал   6

Команда    6

Команда    5

Команда    4

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

Таким образом, конвейеризация в этом примере позволила за то же время выполнить в два раза больше операций.

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

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

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

Размер очереди - 16 байт (что соответствует 3-7 командам).

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

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

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

 

3.2. Блоки процессора 80386.

 

Устройство опережающей выборки.

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

Большинство инструкций позволяют предвыборному устройству продолжать беспрепятственно, пока не будет достигнут конец сегмента или не будет достигнута несуществующая или неиспользуемая страница памяти. Однако инструкции безусловнной передачи управления (САLL,INТ,JМР,RЕТ,IRЕТ) и инструкция НLТ вызывают остановку предвыборщика до тех пор, пока последующие адреса не будут непосредственно выполнены и продолжится предвыборка тех адресов, которые не будут, следовательно, использовать всю ширину шины. Условный переход не останавливает предвыборщик. Инструкции подобные LООРсс останавливают устройство предвыборки и поэтому предпочтительны для получения максимальной скорости при выполнении итерационных циклов, где тестовое условие наиболее часто будет истинно т.е. передача управления будет происходить наиболее часто.

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

 

Устройство дешифрирования.

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

Функция дешифратора - преобразовать команды в форму, которую может быстро использовать операционное устройство. Возможный формат дешифрированной команды приведен в листинге 1. Команда в целом занимает до 112 бит. Первые три бита сообщают о наличии префиксов по принципу <<да/нет>>. Следующие 12 бит содержат адрес управляющей ROM микрокода, который фактически вызывает исполнение команды. 12 бит позволяют адресовать 4096 элементов; в управляющей ROM фактически есть 2560 слов по 37 бит.

Таблица 3.2. Элемент очереди дешифрированной команды.

Длина

Значение

1

Присутствует префикс LOCK

1

Присутствует префикс размера адреса

1

Присутствует префикс размера операнда

12

Адрес элемента управляющего ROM

3

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

4

Номер базового регистра (и бит действительности)

4

Номер индексного регистра (и бит действительности)

2

Масштабный коэффициент

32

Смещение

32

Непосредственный операнд

3

Операнд - регистр ( источник )

3

Операнд - регистр ( получатель )

14

Другие флажки, модификаторы и т. д.

Следующие трехбитные поля определяют номера сегментного регистра, базового регистра и индексного регистра, используемые командой в адресации. Два бита действительности сообщают, преобразуется ли в команде базовый и индексный регистры. Двухбитное поле масштабного коэффициента допускает масштабы 1, 2, 4 и 8.

 Два больших 32-битных поля содержат смещение и непосредственный операнд. Еще два поля определяют регистры операндов. Из дешифрированной команды операционное устройство узнает находится ли операнд в памяти, в регистре или является непосредственным значением. Последние 24 бита содержат флажки, которые здесь не рассматриваются. Отметим, что вся дешифрированная команда - это преобразование машинного языка, сформированного ассемблером. Если бы код можно было записать прямо в этой 112-битной форме, то ассемблирование и дешифрирование стало бы ненужным.

 

Устройство управления.

 Это устройство объединяет другие устройства, управляя их операциями и взаимодействиями. Его ядром служит управляющая ROM, содержащая внутренние команды 80386. Доступ к ROM определяют 12 бит в дешифрированной команде.

Формат микрокодовой команды составляет интеллектуальную собственность фирмы Intel. Однако кое-какие общие факты о нем известны. Наличие управляющих слов в ROM упрощает отладку всего процессора. Изменять ROM не так легко, но все же легче, чем все остальное в процессоре. Даже серьезные ошибки в процессоре часто “ремонтируются” путем репрограммирования ROM и обхода ошибки, а не изменением устройства самой микросхемы. 37-битные слова микрокода довольно узкие. Широкие управляющие слова содержат достаточно информации для одновременного прямого управления каждым устройством процессора. Используемые узкие слова, по-видимому, одновременно управляют только устройством. Так как устройство опережающей выборки команд и дешифратор реализует простые операции, можно предположить, что большая часть слов в ROM управляют действиями других устройств, в частности операционным устройством.

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

 

Временные соотношения.

Пересылка информации из одной очереди в другую, из очереди в регистр и из одного регистра в другой длится один такт. Информация должна поступить в одно из этих мест хранения до начала следующего такта, иначе она может быть изменена новыми данными, появившимися на внутренней шине. Любая пересылка между регистрами (включая и внутренние регистры 80386) занимает один такт, независимо от того, сколько сумматоров, мультиплексоров и т.д. находится между регистрами. Такие одиночные такты необязательно отражаются на общем времени выполнения команды, так как многие из них совмещаются с другими операциями. Заметные задержки вносит получение операндов из памяти (4 плюс дополнительные такты) и использование операнда в памяти как получателя. На это уходит 5 тактов: 4 на получение операнда и один на запись в память. Второй такт записи можно совместить с обработкой операционным устройством следующей команды. В приложении 1 приведен пример выполнения МП 80386 команд с подробным описанием операций в МП по тактам.

 

4. Микропроцессор 80486.

4.1. Конвейеризация команд.

Конвейеризация в процессоре i486 является улучшенным вариантом конвейеризации МП 80386. Внутренняя конвейеризация в процессоре i486 обеспечивает выигрыш в производительности по сравнению со многими однотактными RISC-процессорами: в процессоре i486 данные можно загрузить из кэш-памяти одной командой и использовать следующей командой уже в очередном такте синхронизации. Такой выигрыш объясняется наличием первой ступени дешифрирования, которая инициирует обращение к памяти до собственно выполнения. Так как в большинстве компиляторов и прикладных программ после команды загрузки находятся команды, оперирующие загруженными данными, подобный прием оптимизирует выполнение имеющихся программ.

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


КонвейерКонвейерКонвейерКонвейерКонвейерКонвейерКонвейер       CLK

Конвейер
 


Конвейер              Выборка

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

КонвейерКонвейер      ступень

      дешифр.   Вторая

КонвейерКонвейер  ступень

  дешифр. Выпол-

КонвейерКонвейернение         

      Запись

Конвейерв

      регистр

Конвейер
 


Рис. 4.1. Конвейеризация команд.

Как видно из рис. 4.1., в МП 80486 дешифрация команды разбита на две ступени, что позволяет сократить длительность такта синхронизации и совместить обработку результата 1 ступени дешифрации, а именно считывание из памяти, со 2 ступенью дешифрации. Однако в этом методе пришлось пойти на компромисс: последовательность команд, которая изменяет содержимое регистра, а затем использует этот регистр для обращения к памяти, длится три такта вместо двух. Hо этот компромисс оказывается незначительным недостатком, так как большинство команд с обращением к памяти использует “устойчивое” содержимое указателя стека или указателя кадра, поэтому дополнительный такт требуется редко. Компиляторы часто вводят “буферную” команду между командой, которая изменяет регистр адреса, и командой, которая использует этот регистр. Такой код совместим с процессором 80386, а в процессоре i486 введены специальная схема инкремента/декремента стека и дополнительный регистровый порт для выполнения соседних команд включения в стек и извлечения из стека за один такт каждая.

 

4.2. Блоки процессора i486.

Внутренняя архитектура МП i486 приведена на рис. 4.2.

Конвейер    

              шинный интерфейс

Конвейер Конвейер Конвейер
 


КонвейерКонвейерКонвейер     64       32     32                    32

Конвейер         кэш-память              устройство предвыборки команд

Конвейер 


КонвейерКонвейерКонвейер                20               32              24

Конвейер
 


Конвейер         устройство страничного

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

 

КонвейерКонвейер        32

КонвейерКонвейерКонвейер         устройство сегментации           устройство дешифрования

Конвейер      32                                   команд

КонвейерКонвейерКонвейер    32               32

КонвейерКонвейерКонвейерКонвейер         целочисленное устройство                                 13

                                      устройство управления

 

Конвейер         устройство с плавающей

         точкой

Рис. 4.2. Внутренняя архитектура процессора i486.

Устройство предвыборки команд.

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

Циклы предвыборки команд считывают 16-байтные блоки команд, начиная по адресам, численно больших адреса последней выбранной команды. Hачальный адрес формирует устройство предвыборки, которое напрямую соединено с устройством страничного преобразования. 16-байтные блоки предварительной выборки одновременно подаются в устройство предвыборки и кэш-память. В устройстве предвыборки имеется очередь предвыборки, которая хранит 32 байта команд. Когда каждая команда считывается из очереди, ее код операции подается в устройство дешифрирования команд, а смещение, т. е. константа в команде, подается в устройство сегментации, где участвует в вычислении адреса. Если в выполняемой программе встречаются циклы, устройство предвыборки получает копии ранее выполненных команд из кэш-памяти, т. е. считываний из основной памяти не происходит.

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

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

 

Устройство дешифрирования команд.

Устройство дешифрирования команд получает команды от устройства предвыборки и в двухступенчатом процессе преобразует их в управляющие сигналы низкого уровня и точки входа микрокода, т. е. микропрограмм (см. Рис. 2 ). Первая ступень дешифрирования, показанная на рисунке 1, инициирует обращение к памяти. Это позволяет выполнить двухкомандную последовательность, которая загружает и обрабатывает данные, всего за два такта.

Устройство дешифрирования команд одновременно обрабатывает байты префиксов команд, коды операций, байты адресации modR/M и смещения. На его выходах формируются аппаратные микрокоманды для устройства сегментации, целочисленного устройства и устройства с плавающей точкой. Рассматриваемое устройство очищается при каждой очистке устройств предвыборки команд.

 

Устройство управления.

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

Устройство управления содержит микрокод (управляющие микропрограммы) процессора. Многие команды имеют всего одну строку микрокода, поэтому в среднем они выполняются за один такт синхронизации.

5. Микропроцессор Pentium.

Микропроцессор Pentium фирмы Intel имеет в свооем устройстве несколько новых способов увеличения быстродействия за счет улучшения механизма конвейеризации и большего распараллеливания.

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

По своему устройству Pentium весьма напоминает два i486 в одном корпусе. Основу процессора составляют два пятиступенчатых конвейера, аналогичных имеющемуся в i486. Однако Pentium поволяет выполнять две целочисленных команды (а в некоторых случаях - и две операции с плавающей точкой) за один такт синхронизации. Конвейеры не идентичны: один из них (u-pipe) может выполнять любые операции, как целочисленные, так и с плавающей точкой, другой (v-pipe) реализует лишь часть целочисленных команд и команду FXCH.

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

Следующая новинка - система предсказания ветвления (branch prediction), которая прежде использовалась только в процессорах больших ЭВМ. Механизм ее работы легко понять на примере “из жизни прикладных программ”. При выполнении команды условного перехода в особой области памяти, называемой Branch Target Buffer (BTB) запоминается адрес перехода. При повторении этой команды процессор пытается “предсказать” результат ветвления по содержащейся в ВТВ информации; если прогноз сбывается, переход совершается быстрее. Предсказание ветвления ощутимо повышает скорость выполнения циклов.

 

6.Быстродействующий 32-разрядный МП MC68020 с малым потреблением               мощности компании MOTOROLA INC.

 

Быстродействие МП MC68020 в нормальном режиме составляет2-3 млн.оп./сек., а в пиковом более 8 млн.оп./сек. Тактовая частота МП MC68020 равна 16,67 МГц ( тактовый период равен 60 нс ). В 1986 г. на рынке появились версии МП MC68020 с рабочей тактовой частотой 25 МГц. С 1987 г. Начался выпуск кснк- вер-сии мп mc68020. Имеет мощность рассеяния=1,5 вт. Mc68020, в полной мере обладает свойствами mc68010, но ещеимеет 32-разрядную внешнюю шину данных, встроенный командный кеш и множество новых команд. МП mc68010 и mc68020 отличаются от mc68000 тем, как они используют привилегированные команды, опеределяющие возможности доступак регистру состояния. Для увеличения полной скорости обработки в архитектуре mc68020 предусмотренно два средства:

 а) опережающая выборка команд, или конвейеризация;

 б) кэш-память команд.

Наличие этих средств затрудняет предварительную оценку времени обработки, так как при работе блока опережающей выборк команд выполнение разных команд совмещается во времени, а, кроме того, при расчетах должна приниматься во внимание вероятность удачных обращений. Блок опережающей выборки команд содержит внутри кристальнуюпамять емкостью в три слова и осуществляет прогнозирование адреса следующей команды; таким образом, выборка из внешней по отношениюв к МП памяти не только прогнозируется, но и совмещается во временис текущими действиями процессора. Вычисление адресов команд производится независимо от вычисления адресов данных, чтобы одновременно могли происходить чтение данных из внешней памяти и чтение команды из встроенного кэша. Совместим на уровне об'ектных кодов с предыдущим изделием семейства 68000. Микропроцессор mc68020 может выполнять программы mc68000 в 3,25 раза быстрее, чем этот 16-разрядный прибор, если же эти программы прокомпилированны для нового 32-разрядного мп mc68020, то программы будут выполняться в 4,9 раза быстрее.

 

 Архитектура микропроцессора MC68020.

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

Конвейер32-разрядная шина адреса    32-разрядная шина данных

Конвейер Конвейер
 


КонвейерКонвейерКонвейерКонвейер     устройство выполнения      командный кэш   контроллер шины

                 команд

Конвейер Конвейер
 

 


КонвейерКонвейер        ПЗУ нанокоманд

Конвейер     ПЗУ микрокоманд                     устройство опережающей

Конвейер                                    выборки и декодирования

     устройство управления               команд

     последовательностью

     команд

рис.1 Структурная схема МП mc68020.

 Устройство опережающей выборки команд загружает команды сшины данных в декодирующее устройство и командный кэш. Устройствоуправления последовательностью выполнения команды осуществляет полную координацию работы внутренних шин, регистров и функциональных блоков исполнительного устройства. Асинхронная внешняя шина немультиплексируется, в нее входят 32 линии адреса и 32 линии даных.процессор динамически изменяет ширину шины, что позволяет переда-вать операнды во внешние устройства или из них, автоматически задавая размеры портов (8/16/32) на поцикловой основе; при этом исключается необходимость выравнивания данных.


Приложение 1. Пример выполнения команд i80386.

 Адрес      

 00120000  03  D9                 ADD EBX,ECX      

 00120002  64: 2B B4 DA     SUB ESI,[01234567h+EDX][EBXx8]

                   01234567    

 0012000A        

 

Ради простоты положим, что код выполняется сразу после команды перехода, очищающей конвейер 80386 (в частности очереди опережающей выборки и дешифрирования).

Устройство опережающей выборки начинает с выборки первого двойного слова командного потока ( код по адресу 00120000 и далее) и запоминает 4 байта в своей очереди. Это устройство использует свободные циклы шины для заполнения своей очереди и продолжает выборку, когда очередь начинает освобождаться.

ТАКТ 1

ADD: Устройство дешифрирования начинает работать, как только в очереди опережающей выборки появляется первый байт. Оно берет этот  байт  (со значением 03) и дешифрирует его, помещая информацию в очередь дешифрированных команд (указатель очереди адресует первый пустой элемент в очереди дешифратора). Первый байт сообщает дешифратору о том, что командой является ADD и что она имеет байт ModRM, указывающий на продолжение команды.

 

ТАКТ 2

ADD: Дешифратор берет байт 2 из устройства опережающей выборки; это байт ModRM команды ADD со значением D9. Байт сообщает об использовании регистров EBX и ECX и об окончании команды. Дешифрированная команда отмечается готовностью READY и остается в очереди для исполнения устройством управления. Указатель очереди продвигается на следующий пустой элемент; это происходит после успешного дешифрирования каждой команды.

 

ТАКТ 3

ADD: В конвейере нет предыдущих неисполненных команд, поэтому команда ADD начинает исполняться немедленно. Первое микрослово считывается из управляющей ROM и два операнда EBX и ECX считываются из регистрового файла в операционном устройстве на шины смещения и индекса.

Во второй половине такта два значения подаются в ALU и микрокод определяет их сложение. Результат помещается в регистр AR_OUT.

SUB: Дешифратор “видит”, что команда SUB имеет префикс FS замены сегмента (значение 64). Поле сегментного регистра в очереди изменяется на определение FS вместо принимаемого по умолчанию DS.

 

ТАКТ 4

ADD: В первой части такта в операционном устройстве ничего не  происходит. Во  второй части такта содержимое AR_OUT записывается в EBX, и флажки в EFlags модифицируются, отражая особенности  результата команды ADD. На этом команда ADD закончена. Отметим, что время выполнения команды ADD составляет два такта, а у нас получилось 4; объясняется это тем, что конвейеризация в нашем примере исключена.

SUB: Дешифратор преобразует байт команды SUB (значение 2B), показывающий наличие байта ModRM.

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

 

ТАКТ 5

Все такты после этого относятся к команде SUB.

Дешифратор преобразует байт ModRM (значение B4), который показывает  наличие  байта  SIB. Обычно это дешифрирование совмещается с выполнением другой команды, но у нас очередь освобождена командой JMP.

 

ТАКТ 6

Дешифратор преобразует байт SIB (значение DA), показывающий наличие 4-байтного смещения.

 

ТАКТ 7

Дешифратор  помещает  4  -  байтное смещение (значение 01234567H) прямо в поле смещения элемента очереди для команды SUB. Теперь дешифрирование команды SUB закончено.

 

ТАКТ 8

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

В конце такта индекс умножается на 8 и прибавляется к смещению;  результат  направляется  в запоминающий регистр устройства сегментации.

 

ТАКТ 9

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

Отметим, что при наличии команды после SUB она была бы уже выбрана и дешифрирована и достигла бы операционного устройства.

 

ТАКТ 10

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

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

 

ТАКТ 11

Линейный адрес используется для обращения к TLB (мы считаем, что происходит попадание), и физический адрес операнда находится путем слияния старших 20 бит из элемента TLB (который именует страничный кадр) и младших 12 бит линейного адреса (которые определяют байт внутри страницы).

В конце такта результирующий физический адрес помещается в запоминающий регистр.

 

ТАКТЫ 12 - 14

Мы полагаем, что шинное устройство свободно и память имеет один такт ожидания (3-тактная память). Этот такт расходуется на считывание  данных из памяти. Обращения к памяти, которые являются частью выполнения команды, не конвейеризируются. В конце такта 14 данные находятся в шинном устройстве, откуда их можно читать.

 

ТАКТ 15

Данные из памяти подаются на один вход ALU, значение из ESI подается на второй, и производится вычитание с помещением результата в AR_OUT.

 

ТАКТ 16

В первой половине такта ничего не происходит; во второй половине новое значение записывается из AR_OUT в ESI, и устанавливаются флажки.

 

 

Такты

Выборка

команды

1-я ступень

дешифрации

2-я ступень

дешифрации

Выполнение

Команды

Запись в

регистр

0

Выборка ADD

 

 

 

 

1

Выборка SUB

Дешифр. 03

команды ADD

Указыв. на

продолж. деш.

 

 

 

2

 

 

Дешифр. 09

(modRM)

Сообщ.о исп.

EBX, ECX

 

 

3

 

Дешифр.64 (префикс FS)

команды SUB

 

1)Микросл.и

операнды -> на шину смещ и индекса

2)Знач.вALU

 

4

 

Дешифр. 1-го

байта 2B

команды SUB

 

Модиф. Eflag

AR_OUT->EBX

 запись

5

 

 

Дешифр. В4

команды SUB

 

 

6

 

 

Дешифр. DA

команды SUB

 

 

7

 

 

Дешифрация смещения

 

 

8

 

 

 

Смещен.-> на шину смещен.

Индекс.-> на шину индекса Инд*8+смещ

 

9

 

 

 

База+предыд. число

->на сумматор

 

10

 

 

 

Граница FS

Сравн.c эфк.адр. на права доступа

Выч.лин.адр.

 

11

 

 

 

Вычисление физического адреса и -> в регистр

 

12

 

 

 

Считывание данных из Памяти

 

13

 

 

 

Считывание данных из Памяти

 

14

 

 

 

Ожидание

 

15

 

 

 

Данные ->ALU

Знач. из ESI-> ALU

 Результат -> в AR_OUT

 

16

 

 

 

 

AR_OUT->ESI

Рис.1 Выполнение команд ADD , SUB.

 

 

Наверх страницы

Внимание! Не забудьте ознакомиться с остальными документами данного пользователя!

Соседние файлы в текущем каталоге:

    На сайте уже 21970 файлов общим размером 9.9 ГБ.

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

    Не нашли нужный документ? Воспользуйтесь поиском по содержимому всех файлов сайта:



    Каждый день, проснувшись по утру, заходи на obmendoc.ru

    Товарищ, не ленись - делись файлами и новому учись!

    Яндекс.Метрика