- •Конвейер команд
- •В конструкцию процессора вносят изменения:
- •Конвейер
- •Пятиступенчатая схема конвейера
- •Суперконвейер
- •Задержки конвейера
- •Задержка работы устройств
- •Задержка чтения
- •Этап декодирования и извлечения операндов также может затянуться.
- •Выполнение арифметических операций в устройстве Е тоже происходит за разное время. Умножение, а
- •На время работы устройств F,D,W большое влияние оказывает эффективное использование кэш памяти.
- •Другие методы:
- •Конфликты по ресурсам
- •Конфликт при одновременном обращении к регистрам возникает из-за того, что доступ ко всем
- •Явный конфликт по данным
- ••«Чтение после записи» можно распознать на этапе трансляции программы и предотвратить их.
- •Использование команды NOP
- •Процессоры распознают конфликт по данным и блокируют работу следующей команды конвейера.
- ••Предположим, команда 1 вычисляет значение переменной, которая должна быть в 2. Устройство D
- •Продвижение операндов
- •Скрытые конфликты по данным.
- •Некоторые команды могут изменять или использовать содержимое регистров по умолчанию, без явного указания
- •Передача управления
- ••Простейший метод работы с условными переходами заключается в приостановке конвейера как только обнаружена
- ••Предположим, 1 – команда условной передачи управления. После неё или 2, или N.
- ••В конвейер загружаются и начинают выполняться команды 2, 3, 4. После 4 выясняется
- •Для уменьшения числа слотов задержки используется приём, аналогичный продвижению операндов: целевой адрес передаётся
- •Безусловный переход
- •Branch Target Buffer
- •Условный переход
- •Как только команда условного перехода встретилась, то начинает работать вторая ветвь. Одновременно в
- •Исполнение команд на конвейере с параллельными ветвями
- •Недостатки
- •2 группа методов снижения потерь
- •Основные направления развития систем команд
•Предположим, 1 – команда условной передачи управления. После неё или 2, или N.
•В конвейер загружаются и начинают выполняться команды 2, 3, 4. После 4 выясняется надо ли 5, 6 или N, N+1. Если переход не произойдёт, - конвейер не потеряет такты, произойдёт – потеряет 3 такта. Уже начавшиеся выполнятся команды 2, 3, 4 из ковейера удаляются.
•В более простых вариантах процессора используется технология «отложенного перехода». 2,3,4 – не удаляются (слоты задержки перехода), и за правильность отвечает компилятор. Далее как и в случае конфликтов по данным.
•В длинных конвейерах слотов задержки больше.
Для уменьшения числа слотов задержки используется приём, аналогичный продвижению операндов: целевой адрес передаётся непосредственно в указатель команд.
Передача адреса перехода в указатель команд
Безусловный переход
Устройство Е определяет, нужен ли переход, но сам адрес перехода вычисляется в D. В случае безусловного перехода целевой адрес
передаётся уже из D, вследствие чего теряется только один такт.
Конвейер при безусловном переходе
Branch Target Buffer
Ещё более дорогой вариант процессора имеет в своём составе буфер адресов перехода (Branch Target Buffer, BTB). Это небольшая кэш-память, хранящая таблицу последних переходов вида:
Устройство F, прежде чем выбрать команду, ищет её адрес в левой части таблицы и, если находит, выбирает команду по адресу из правой части таблицы. Это позволяет для 4-х ступенчатого контейнера вообще не терять ни одного такта.
В (Branch Target Instruction Cache) –BTIC хранятся хранятся и команды из этих адресов.
Условный переход
Существуют две группы методов борьбы с задержками.
1.Параллельное исполнение обеих ветвей алгоритма.
Для этого дублируется часть устройств конвейера.
|
|
|
Начало |
|
|
|
|
|
|
|
|||||
|
|
|
конвейера |
|
|
|
|
Окончание |
|||||||
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
. . . |
|
|
|
|
|
|
||||
Память |
|
|
|
|
|
|
|
|
|
|
конвейера |
||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ветвь 1 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
. . . |
|
||||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. . . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ветвь 2 |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Ковейер с параллельными ветвями
Как только команда условного перехода встретилась, то начинает работать вторая ветвь. Одновременно в первой – следующие за командой перехода. Команды, пришедшие в первой, выталкиваются в общую часть контейнера.
F- вызов команды
D- декодирование команды Общая часть:
O- вызов операндов
E- вычисление
W- запись результата
Исполнение команд на конвейере с параллельными ветвями
Недостатки
•Дорого
•Если две команды условного перехода идут подряд или очень близко, они попадают в одну из ветвей и конвейер останавливается , пока не решится вопрос с первой командой.
2 группа методов снижения потерь
Предсказание переходов:
•Статические
•Динамические