Точные прерывания в процессорах с параллельным выполнением команд
На сегодняшний день процессоров с последовательным выполнением команд почти не осталось (могу вспомнить разве что аналоги интеловского 8051) — их вытеснили процессоры с параллельным выполнением команд, обеспечивающие при прочих равных более высокую производительность. Простейший процессор с параллельным выполнением команд — процессор с конвейером команд (instruction pipeline).
Несмотря на многочисленные преимущества, конвейер команд значительно усложняет реализацию точных прерываний, чем много десятков лет печалит разработчиков.
В процессоре с последовательным выполнением команд этапы цикла команды зависят друг от друга. Простейший пример — счетчик команд. Вначале он используется на этапе выборки (как адрес в памяти, откуда должна быть прочитана команда), затем на этапе исполнения (для вычисления его следующего значения), и потом, если команда зафиксирована, он обновляется на этапе записи результатов. Это приводит к тому, что нельзя выбрать следующую команду до тех пор, пока предыдущая не завершит последний этап и не обновит счетчик команд. То же самое относится и ко всем прочим сигналам внутри процессора.
Процессор с конвейером команд можно получить из процессора с последовательным выполнением команд, если сделать так, чтобы каждый этап цикла команды был независим от предыдущих и последующих этапов.
Для этого результаты каждого этапа, кроме последнего, сохраняются во вспомогательных элементах памяти (регистрах), расположенных между этапами:
Результат выборки — закодированная команда — сохраняется в регистре, расположенном между этапами выборки и декодирования
Результат декодирования — тип операции, значения операндов, адрес результата — сохраняются в регистрах между этапами декодирования и исполнения
Результаты исполнения — новое значение счетчика команд для условного перехода, вычисленный в АЛУ результат арифметической операции и так далее — сохраняются в регистрах между этапами исполнения и записи результатов
На последнем этапе результаты и так записываются в регистры и/или память, поэтому никакие вспомогательные регистры не нужны.
Вот так работает получившийся конвейер:
Такт СК Выборка Декодирование Исполнение Запись_результатов
1 0x00 Команда1 - - -
2 0x04 Команда2 Команда1 - -
3 0x08 Команда3 Команда2 Команда1 -
4 0x0C Команда4 Команда3 Команда2 Команда1
5 0x10 Команда5 Команда4 Команда3 Команда2
Векторные прерывания
Чтобы значительно уменьшить время реакции на внешние события, используются многоуровневые или, что то же самое, векторные прерывания. В векторных прерываниях КАЖДОМУ источнику прерывания соответствует СВОЙ, вполне определенный, адрес процедуры обработки прерывания, который принято называть вектором прерывания.
Вообще, в качестве вектора прерывания могут быть использованы любые данные (адрес подпрограммы, адрес перехода, значение смещения относительно начала таблицы прерываний, специальные инструкции и т.д.), которые позволяют непосредственно перейти к процедуре обработки прерывания, не затрачивая времени на поиск источника прерывания. Какие данные используются в качестве вектора прерывания и каким именно образом они используются зависит от способа реализации системы прерываний в соответствующем процессоре.
Организация системы прерываний в микроЭВМ с использованием векторов прерываний позволяет устранить указанный недостаток. При такой организации системы прерываний ВУ, запросившее обслуживания, само идентифицирует себя с помощью вектора прерывания - адреса ячейки основной памяти микроЭВМ, в которой хранится либо первая команда подпрограммы обслуживания прерывания данного ВУ, либо адрес начала такой подпрограммы. Таким образом, процессор, получив вектор прерывания, сразу переключается на выполнение требуемой подпрограммы обработки прерывания. В микроЭВМ с векторной системой прерывания каждое ВУ должно иметь собственную подпрограмму обработки прерывания.
Вопрос 16: Режимы работы процессора: мультипрограммный, пакетный, разделения времени, реального времени.
Основные режимы работы мультипрограммной ЭВМ
Мультипрограммная ЭВМ может работать в различных режимах, использование того или иного из них определяется областью ее применения. Среди основных режимов работы мультипрограммной ЭВМ выделим следующие:
1. пакетный ;
2. разделения времени ;
3. реального времени.
Пакетный режим
Суть пакетного режима заключается в том, что ЭВМ обрабатывает предварительно сформированный пакет задач без вмешательства пользователя в процесс обработки.
Пакетный режим используется, как правило, на высокопроизводительных ЭВМ. Основное требование к организации вычислительного процесса на компьютере, работающем в пакетном режиме, - это минимизация времени решения всего пакета задач за счет эффективной загрузки оборудования ЭВМ. При пакетном режиме основным показателем эффективности служит пропускная способность ЭВМ - число задач, выполненных в единицу времени.Количественная оценка выигрыша при мультипрограммной работе по сравнению с однопрограммным использованием ЭВМ представляется в виде коэффициента увеличения пропускной способности:
kПС = TОПР/TМПР
где ТОПР и ТМПР - время выполнения пакета задач при однопрограммном и мультипрограммном режиме работы соответственно.
В рассмотренном в лекции 12 примере работы мультипрограммной ЭВМ kПС =36/24=1,5 при Км=2 и при Км = 3.
Увеличение пропускной способности ЭВМ достигается надлежащим планированием поступления задач пакета на обработку в составе мультипрограммной смеси задач, а также оптимальным назначением приоритетов задачам в этих смесях, основывающемся на представлениях разработчиков о важности учета тех или иных аспектов функционирования ЭВМ и свойств каждой задачи входного пакета.
Основные этапы обработки пакета задач:
1. Подготовка программ к счету. При этом каждая программа пакета может быть разработана отдельным программистом.
2. Передача программ и исходных данных на ЭВМ, которая будет обрабатывать их в пакетном режиме.
3. Формирование пакета задач из переданных программ по одному из эвристических алгоритмов.
4. Обработка пакета задач на мультипрограммной ЭВМ.
Особенности пакетного режима работы:
1. Пользователь отстранен от непосредственного доступа к ЭВМ.
2. Результаты работы пользователь получает через определенное (иногда достаточно большое) время одновременно для всех задач пакета.
3. Увеличивается время отладки программ.
4. Существенно возрастает пропускная способность ЭВМ по сравнению с последовательным решением задач пакета.
Таким образом, пакетный режим наиболее эффективен при обработке больших отлаженных программ.