- •Общие вопросы организации эвм и систем
- •Процессор эвм. Назначение и принцип работы.
- •07022012 Лекция 2 Организация управлением процесса обработки информации
- •14022012 Лекция 3
- •Способы формирования управляющий функциональный сигналов
- •Типы архитектур процессоров
- •21022012 Лекция 4
- •28022012 Лекция 5
- •Принцип программного управления
- •06032012 Лекция 6 Обработка команд процессоров. Понятие конвейера команд. Виды конвейеров.
- •20032012 Лекция 7
- •27032012 Лекция 8 Обработка асинхронных событий процессоров. Система прерываний процессоров
- •03042012 Лекция 9
- •Организация памяти эвм
- •10042012 Лекция 10
06032012 Лекция 6 Обработка команд процессоров. Понятие конвейера команд. Виды конвейеров.
Выполнение команды, как правило, выполнение последовательности микроопераций. А выполнение одной микрооперации обычно занимает один такт. Основной задачей процессора является последовательное выполнение команд программы. В алгоритме работы процессора принято выделять основной цикл, который называется цикл выполнения команды.
Типовой цикл команд включает следующие этапы (группа арифметических и логических команд):
Выборка команды и анализ кода операции команды (КОП). t1
Формирование адресов операндов. t2
Выборка операндов. t3
Выполнение операции в АЛУ и формирование признаков. t4
Сохранение/запись результата. t5
В данном цикле выделяют периоды времени, связанные с важными функциональными действиями процессора. Они совпадают с этапами действия процессора.
Согласно схемы можно определить время последовательного выполнения команды tпосл=t1+t2+t3+t4+t5.
Производительность процессора Pпосл= 1/tпосл.
В 1956 году советский учёный Лебедев предложил способ совмещения во времени отдельных этапов рабочего цикла. Суть: если для каждого этапа иметь свой аппаратный блок и соединить эти блоки в обрабатываемую линию, то получиться конвейер.
В конвейере результаты с предыдущего блока подаются на следующий блок. Особенность: каждый блок является самостоятельным устройством, выполняет определённые функции и работает по своему алгоритму. Это позволяет обрабатывать одновременно n-е количество команд и тем самым повышает производительность.
Пример: Pentium
Такты/ Этапы |
CLK0 |
CLK1 |
CLK2 |
CLK3 |
CLK4 |
CLK5 |
CLK6 |
CLK7 |
… |
pf |
i1,i2 |
i3,i4 |
i5,i6 |
i7,i8 |
|
i9,i10 |
i11,i12 |
i13,i14 |
|
d1 |
|
i1,i2 |
i3,i4 |
i5,i6 |
i7,i8 |
|
i9,i10 |
i11,i12 |
|
d2 |
|
|
i1,i2 |
i3,i4 |
i5,i6 |
i7,i8 |
|
i9,i10 |
|
ex |
|
|
|
i1,i2 |
i3,i4 |
i5,i6 |
i7,i8 |
|
|
wb |
|
|
|
|
i1,i2 |
i3,i4 |
i5,i6 |
|
|
CLK0-CLKn – последовательность процессорный тактов
Pf – стадия предвыборки
D1 - декодирование инструкции
D2 -генерация адреса
Ex - выполнение в АЛУ
Wb -запись результата
i1,i2,…- последовательность команд
Особенность Пентиумов: суперскалярные – то есть в них больше одного конвейера команд. В Pentium два конвейера команд. На одну стадию может быть подано две команды.
Увеличение длины конвейере за счёт разбиения этапов на более мелкие позволяет сократить в среднем длительность выполнения команды и увеличить производительность процессора. Мелкие выполняются быстрее, а это повышает частоту работы процессора.
Примеры:
K5(AMD) – 5 ступеней; Cyrix6x86 – 7 ступеней конвейера; VIACyrixIII – 12; Pentium4 – 20. 20 – максимальное число.
Pentium 4 – гиперконвейерная технология.
Конфликты в конвейере команд
Реальная производительность конвейеров команды сильно отличается от потенциальной, и обусловлено это возникающими в конвейере конфликтными ситуациями (риски – hazard). Риски обусловлены тремя причинами:
Структурный риск (конфликт по ресурсам) имеет место, когда несколько команд, находящихся на различных ступенях конвейера пытаются использовать один и тот же ресурс (чаще всего это память, в одну и ту же ячейку памяти). Подобно конфликтов можно частично избежать за счёт: модульного построения памяти; использование кэш-памяти. Конфликты могут и не возникать, поскольку для многих команд ступени выборки операнда и записи результата не требуются. В целом, влияние структурного риска на производительность конвейера относительно невелико.
Риск по данным (взаимосвязь команд по данным) – типичная, часто встречающаяся ситуация. Например, две команды i и j в конвейере предусматривают обращение к одной переменной x , причем i предшествует j. 3 вида ситуации:
Чтение после записи. Команда j читает х до того, как i успевает записать новое значение х. Это чаще.
Запись после чтения. Команда j записывает новое значение х до того, как команда i успела прочитать х.
Записи после записи. Команда j записывает новое значение х, прежде чем i успело записать своё х.
Борьба: своевременно обнаружение потенциального конфликта и устранение конфликта. Для этого задействованы как программные, так и аппаратные средства. Программные ориентированы на устранение самой возможности конфликта на стадии компиляции программ (вставляет между командами пустые операции). Аппаратные – остановка команды j на несколько тактов, чтобы команда i успела завершиться, ну или миновать ступень конвейера, где возможен конфликт.
Риск по управлению (неоднозначность при выборке следующей команды в случае команд перехода). Например, команды: Условный и безусловный переход, вызов процедуры и возврат из процедуры. Доля подобных команд в программе примерно 10-20%. Команды перехода могут приводить к приостановке конвейера на несколько тактов. Это приводит к тому, что производительность процессора (и конвейера) снижается. Решение: Например, приостановка, связанная с командами перехода может быть частично сокращена за счёт использования: буферов предвыборки; множественных потоков; задержанного перехода; предсказания переходов.