
Как правило, код прерывания используется в качестве младших разрядов адреса памяти, хранящей команды передачи управления к программам обслуживания запросов. При записи в RG A код ПНА дополняется в старших разрядах нулями, после чего передается на адресную шину ОП. Если при опросе системы прерываний запросов не оказалось, УУ формирует обращение к ОЗУ в ячейку, содержащую команду JMP IP, то есть - переход по счетчику команд. Если запросы на прерывание имеют место, то из ОП должна быть прочитана команда JMP Ai – «Загрузить в СК начальный адрес программы обслуживания УВВ».
В общем случае, выполнение программы обслуживания УВВ предполагает следующие действия при обработке запросов:
1) запись в стек содержимого счетчика команд IP, содержимого Ak, RG F и РОНi процессора;
2) обслуживание прерываний от УВВ или внутренних схем компьютера (деление на 0, переполнение и т.д.);
3) восстановление содержимого регистров процессора и пуск прерванной программы.
Однако данный алгоритм не во всех системах является обязательным. Так при вводе-выводе с квитированием указанная процедура обработки прерывания будет существенно тормозить вычислительный процесс, в связи с чем, обмен данными может быть выполнен без эвакуации ССП в стек.
5.10. Конвейерная отработка команд в архитектуре современных процессоров
Основной целью введения в процессор конвейерной отработки команд является повышение производительности современных компьютеров. Для реализации данной концепции используются сложные технологии, ориентированные на компиляцию или оптимизирующую компиляцию операций, что приводит к существенному выигрышу в быстродействии всей системы.
Эффективным способом организации вычислений в процессоре является введение параллелизма операций, основанного на совмещении этапов выборки и исполнения команд. Сущность данной технологии заключается в следующем. В обычном процессоре алгоритм вычислений предполагает строгое деление времени командного цикла на фазу выборки из ОЗУ и фазу выполнения (обработки данных) в АЛУ. Если шаг выборки и шаг исполнения требуют, например, 3-х тактов процессорного времени, то набор из 4-х команд потребует 24 тактов в соответствии со следующей схемой:
Теперь рассмотрим компьютер с двумя отдельными функциональными блоками – блоком выборки команд и блоком исполнения.
Рис. 5.47
В такой системе команды извлекаются из памяти и помещаются во внутренний буфер. Назначение этого буфера состоит в хранении предыдущей команды в процессе ее исполнения с одновременным функционированием блока выборки команд (БВК) в режиме выборки следующей команды. Таким образом, в процессоре совмещается время исполнения предыдущей команды и время выборки последующей (рис.5.47). Такой подход к вычислениям увеличивает занятость аппаратуры процессора, а скорость вычислений возрастает в два раза.
Процесс выполнения команды может быть разбит на число шагов, превышающее два. К примеру, процессорный конвейер способен обрабатывать данные в четыре этапа:
выборка или чтение команды из памяти (Fetch);
2) декодирование (Decode) – декодирование команды и выборка ее исходных операндов;
3) выполнение (Execute) – выполнение заданной в команде операции;
4) запись (Write) – сохранение результата по заданному адресу.
Блок-схема устройства, реализующего данный принцип, имеет следующий вид рис.5.48:
Если на каждом этапе выполнения команды затрачивается один такт времени, то временная диаграмма отработки четырех команд будет иметь вид, приведенный на рис.5.49.
1 шаг: выборка ком. 1;
2 шаг: выборка ком. 2; декодирование ком. 1;
3 шаг: выборка ком. 3; декодирование ком. 2; исполнение ком. 1;
4 шаг: выборка ком. 4; декодирование ком. 3; исполнение ком. 2; запись результатов ком. 1;
5 шаг: декодирование ком. 4; исполнение ком. 3; запись рез. ком. 2;
6 шаг: исполнение ком. 4; запись рез. ком. 3;
7 шаг: запись рез. ком. 4.
Как правило, выполнение каждой составляющей команды должно осуществляться за 1 такт. Однако это условие выполнимо, если такт имеет достаточно большую длительность. Если же некоторый блок не может завершить собственные действия за время одного синхроимпульса, то необходимо увеличение длительности тактовых интервалов, что, однако, ведет к простоям других блоков конвейера.
Принцип конвейерной отработки теряет смысл, если процессорному блоку требуется взаимодействие с ОЗУ. Данная фаза отработки команды не может быть включена в конвейер, так как практически «останавливает» вычислительный процесс из-за большой длительности.
Для решения данной проблемы эффективно применяется КЭШ-память. При этом, если КЭШ находится на одном кристалле с процессором, то для взаимодействия вида «КЭШ-вычислитель» требуется то же время, что и для других базовых операций в процессоре. Таким образом, включение КЭШа в качестве буфера ЗУ между процессором и ОЗУ позволяет достичь времени выборки равного 1 такт и организовать конвейерные вычисления.