- •Конвейерная и суперскалярная обработка
- •Двух позиционный конвейер выполнения
- •Причины, которые не позволяют достичь увеличения скорости обработки вдвое на практике :
- •Временная диаграмма работы конвейера операций
- •Влияние команды условного перехода на работу конвейера операций
- •Алгоритм управления конвейером из шести рабочих позиций
- •ВЫВОДЫ
- •Сложность схем управления памятью и регистрами, оптимизации работы конвейера резко возрастает с увеличением
- •Производительность конвейера операций
- •Производительность конвейера операций
- •Производительность конвейера операций
- •Обработка команд перехода.
- •Предварительное извлечение команды в точке перехода
- •Организация буфера цикла
- •Предсказание переходов
- •Диаграмма состояний автомата предсказаний перехода
- •Схема обработки команд условного перехода по правилу " всегда предсказывать отсутствие перехода"
- •Конвейр операций в микропрцессоре Intel 80486
- •Диаграммы прохождения разных последовательностей команд через конвейер операций
- •Выполнение программы в суперскалярном процессоре
- •Требования к аппаратным средствам, реализующим суперскалярную концепцию:
- •Процесс выполнения программы в Pentium II протекает следующим образом.
- •Узлы извлечения и расшифровки команд
- •Узел диспетчирования/выполнения
Производительность конвейера операций
Для завершения выполнения первой команды потребуется k тактов конвейера, а для завершения n-1 команд - еще n-1
тактов. Коэффициент повышения скорости Sk использования конвейера оценивается по формуле:
Sk = Ti / Tk = nk / [k+(n-1)] =nk/[k+(n-1)]
Чем больше позиций в конвейере , тем потенциально больший выигрыш в скорости можно получить !!!!!!
Обработка команд перехода.
Организация множества потоков
В простейшем варианте конвейера приходится платить штраф
за опережение событий при выполнении команды перехода, поскольку необходимо решать , какую из двух команд извлекать из памяти на следующем такте после команды условного перехода. "Грубый" способ преодолеть это затруднение - включить в состав процессора второй конвейер ( но не полностью, а только начальные позиции) и загрузить в каждый конвейер одну из двух команд претендентов. Таким образом , получается два потока. При реализации этого подхода возникают следующие проблемы:
1. Когда в процессоре параллельно работают два и более конвейеров , появляется дополнительные возможности конфликтов за доступ к памяти и регистрам. Для их разрешения требуется увеличивать длительность такта конвейера, в результате чего вместо ожидаемого повышения скорости можно получить даже ее снижение при одновременном росте сложности схемы управления.
2. В поток может попасть еще одна команда перехода до того , как первая будет окончательно обработана. Каждая такая команда потребует своего потока.
Предварительное извлечение команды в точке перехода
Когда в программе встречается команда условного перехода , она немедленно распознается , и в очередном такте из памяти извлекается не только следующая за ней команда , но и команда в точке перехода. Последняя не "запускается" на конвейер , но сохраняется в специальном буфере до тех пор, пока команда условного перехода не попадает на позицию выполнения. или окажется , что нужно передать управление на точку перехода , то соответствующая команда уже заготовлена в буфере.
Организация буфера цикла
В процессоре организуется специальный блок памяти сверхвысокого быстродействия, в котором хранятся n последних команд, извлеченных из оперативной памяти в процессе выполнения текущей программы. Если в обрабатываемом фрагменте программы встретится команда условного перехода, аппаратные средства процессора первым делом анализируют, не находится ли точка перехода среди тех команд, что ранее были записаны в буфер. Если дело обстоит именно так, команда извлекается из буфера и "ставится" на конвейер.
Применение буфера цикла имеет три достоинства:
1. Поскольку в буфере хранится целый фрагмент программы, то помимо команды, размещенной в точке перехода, в нем могут оказаться и следующие за ней команды, а значит , их не придется извлекать из памяти.
2. Если адрес перехода недалеко отстоит от команды перехода, то команда, на которую задан переход, уже окажется в буфере. Это происходит при выполнении часто встречающихся программных конструкций вроде IF- THEN и IF- THEN-ELSE.
3. Этот подход очень хорошо сочетается с организацией в программе итерационных циклов (откуда и произошло название loop buffer - буфер цикла). Если буфер будет достаточно большим, чтобы включить все команды цикла, это избавит процессор от необходимости повторно извлекать их из памяти при обработке всех последующих циклов в программе.
Предсказание переходов
Существует множество методов , имеющих целью предсказать , изменится ли естественный порядок обработки команд программы в результате выполнения команды условного перехода.
Среди них наибольшую популярность приобрели следующие:
•Переход не предполагается никогда
•Всегда предполагается , что произойдет переход
•Переход предполагается на основе анализа кода операции перехода
•Использование переключателя "принято/не принято"
•Анализ таблицы предыстории переходов
Диаграмма состояний автомата предсказаний перехода
переход
Предсказать
переход
перехо д
Предсказать
отсутствие
перехода
Нет перехода
переход
Нет перехода
переход
Предсказать
переход
Нет пере хода |
|
Предсказать |
Нет перехода |
отсутствие |
|
перехода |
|
Рисунок 11.16. Диаграмма состояний автомата предсказаний перехода.
Схема обработки команд условного перехода по правилу " всегда предсказывать отсутствие перехода"
Следующий адрес в |
|
|
|
|
|
|
||
|
|
|
|
|
||||
программе |
|
|
|
|
|
|
||
Схема |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
управления |
|
|
Память |
|
|
|
|
|
||||
|
|
|
|
|
выборкой из |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
памяти |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Схема обработки
УУ неверного предсказания
перехода
Схема обработки команд условного перехода по правилу " всегда предсказывать отсутствие перехода"
Конвейр операций в микропрцессоре Intel 80486
ИК |
|
Д1 |
|
|
Д2 |
|
|
ВК |
|
|
ЗР |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ИК |
|
Д1 |
|
|
Д2 |
|
|
ВК |
|
ЗР |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ИК |
|
|
Д1 |
|
|
Д2 |
ВК |
|
ЗР |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MOV R1, M1
MOV R1, R2
MOV M2, R1
Диаграммы прохождения разных последовательностей команд через конвейер операций
ИК |
Д1 |
Д2 |
ВК |
ЗР |
|
MOV R1, M1 |
|
|
|
|
|
|
|
|
ИК |
Д1 |
|
Д2 |
ВК |
MOV R1, (R2) |
|
|
|
|
|
|
|
ИК |
Д1 |
Д2 |
ВК |
ЗР |
|
|
|
CMP R1, #I |
|
|
|
|
|
|
|
|
|
|
ИК |
Д1 |
Д2 |
ВК |
|
|
|
|
|
|
|
|
JCC T |
||||
|
|
|
|
|
|
|
|
КОМАНДА ПО |
|
|
|
|
ИК |
Д1 |
Д2 |
ВК |
|
|
|
|
|
АДРЕСУ T |
||||
|
|
|
|
|
|
|
|
|