![]() |
![]() |
||||
Add Р1, Р2: 1. РN = R1; 2. Р1=RN+Р1;
4. READ РгАК. |
Add Р1, Р2: 0. РгАК=РгАК+1; (выполняется на INC)
|
Идея метода заключается в использовании нескольких исполнительных устройств, которые одновременно выполняют несколько операций. Здесь ускорение работы тракта данных происходит путем добавления к нему дополнительной шины и дополнительного упрощенного АЛУ – инкрементора. Улучшенный тракт данных может одновременно подать значения двух регистров на вход АЛУ и одновременно посчитать адрес следующей команды.
Суперскалярные процессоры – процессоры, которые содержат несколько АЛУ и могут выполнять несколько арифметических операций одновременно.
III стадия I стадия
II стадия
I стадия: запись данных в регистры В и С и передача их в АЛУ (выборка операндов)
II стадия: выполнение операций в АЛУ, запись результата в регистр А
III стадия: сохранение результатов в регистр 1.
Такты |
Add Р1, Р2 |
Add Р3, Р4 |
Add Р5, Р6 |
1 |
B=Р1, C=Р2 |
||
2 |
A=B+C |
B=Р3, C=Р4 |
|
3 |
Р1=A |
A=B+C |
B=Р5, C=Р6 |
4 |
Р3=A |
A=B+C |
|
5 |
Р5=A |
Стадии – это различные части тракта данных, которые при конвейеризации работают параллельно. Таким образом, основная идея конвейеризации заключается в разделении тракта данных на стадии. Повышение производительности достигается за счет того, что на нескольких стадиях могут выполняться параллельно несколько команд.
Преимущество конвейеризации: увеличение скорости работы.
Недостаток: конвейер может сбиваться.
Регистры А, В, С не вносят задержку в работу тракта данных, т.к. не имеют управляющих сигналов и их значения всегда выставлены на шине.
По примеру программы можно судить о том, что на данном тракте данных может выполняться одновременно 3 команды.
Процессоры, использующие конвейеризацию тракта данных, – конвейеризованные процессоры.
Для того чтобы избежать остановки и ошибки конвейера, применяют методы изменения последовательности выполнения команд и подмены регистров.
1. Изменение последовательности выполнения команд
Программа (ПРОБЛЕМА) |
Реальный порядок команд (РЕШЕНИЕ ПРОБЛЕМЫ) |
Р1=Р2+Р3 |
Р1=Р2+Р3 |
Р4=Р1+Р5 (используется регистр, значение кот. подсчитывается на предыдущей операции; т.е. конвейер в данном случае может сбиться, ему необходимо ждать окончания 1-й операции) |
Р6=Р7+Р8 |
Р6=Р7+Р8 |
Р4=Р1+Р5 (здесь остановки конвейера для ожидания значения Р1 не потребуется) |
Причиной сбоя конвейера может являться зависимость операндов текущей команды от результатов предыдущей. В примере программы вторая команда использует значение регистра Р1 и ее выполнение не может начаться до получения результатов 1-й команды. В этом случае процессор может изменить последовательность выполнения команд, начав выполнение последующей команды, если она не зависит от предыдущей.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.