ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5274
Скачиваний: 8
Цикл команды
1 4 1
Этап выборки операндов
Вычисленные на предыдущем этапе исполнительные адреса используются для
считывания операндов из памяти и занесения в определенные регистры процессора.
Например, в случае арифметической команды операнд после извлечения из памя-
ти может быть загружен во входной регистр АЛУ. Однако чаще операнды предва-
рительно заносятся в специальные вспомогательные регистры процессора, а их
пересылка на вход АЛУ происходит на этапе исполнения операции.
Этап исполнения операции
На этом этапе реализуется указанная в команде операция. В силу различия сущ-
ности каждой из команд ВМ, содержание этого этапа также сугубо индивидуально.
Этапы исполнения некоторых команд будут рассмотрены ниже на примере вы-
полнения учебной программы для приведенной на рис.
гипотетической вы-
числительной машины.
Этап записи результата
Этап записи результата присутствует в цикле тех команд, которые предполагают
занесение результата в регистр или ячейку основной памяти. Фактически его можно
считать частью этапа исполнения, особенно для тех команд, которые помещают
результат сразу в несколько мест.
Описание стандартных циклов команды
для гипотетической машины
Для анализа содержания стандартных циклов команды обратимся к гипотетичес-
кой ВМ (см. рис. 3.1), для которой составим программу сложения двух чисел и
вывода суммы на устройство вывода, если эта сумма не равна 0.
Список необходимых команд приведен в табл. 3.1, а сама программа — в табл. 3.2.
Предполагается, что команды программы будут размещаться в основной памяти,
начиная с адреса 100, а операнды — с адреса 200. Для вывода результата назначим
порт с номером 5.
Таблица 3.1
. Команды гипотетической вычислительной машины
КОп
LDA
ADD
BRZ
ОUT
HLT
АЧ
Adr
Adr
Adr
PortN
Описание
Загрузка в аккумулятор содержимого ячейки ОП с адресом
Сложение содержимого аккумулятора с содержимым ячейки ОП,
имеющей адрес Adr. Результат остается в аккумуляторе
Переход к команде, хранящейся по адресу Adr, если результат'
предыдущей арифметической операции равен 0, иначе естественный
порядок вычислений не нарушается
Вывод содержимого аккумулятора на периферийное устройство,
подключенное к порту с номером PortN '
Останов вычислений
142 Глава 3. Функциональная организация фон-неймановской ВМ
Таблица 3.2.
Программа рассматриваемому примеру
Адрес
порта
100
101
102
103
104
200
201
Код операции
L D A
A D D
H L T
Операнд 1
Операнд 2
Адрес ячейки или номер
200
201
104
5
Перед запуском программы необходимо занести в СК адрес ячейки основной
памяти, содержащей первую выполняемую команду программы, то есть 100.
Поскольку выборка и декодирование, а также формирование адреса следую-
щей команды для всех команд выполняются по идентичной схеме, опишем их од-
нократно, детализируя в дальнейшем лишь остальные этапы основного цикла ко-
манды. Кроме того, напомним, что все сигналы управления и управляющие коды
формируются микропрограммным автоматом, поэтому в дальнейшем ссылки на
МПА будут опущены.
Выборка команды.
Сначала остановимся на содержании этапа выборки, иден-
тичного для всех команд программы.
этом этапе происходит извлечение двоич-
ного кода команды из ячейки основной памяти и его занесение в регистр команды:
СКРАП: РАП := СК, ЧтЗУ: РДП := ОП[(СК)];
РДПКОп, РДПРА: РК :=РДП <РКОп := РДП(КОп), РА := РДП(АЧ)>.
В первом такте вырабатывается сигнал управления СКРАП, инициирующий пе-
ресылку содержимого счетчика команд в регистр адреса памяти. По сигналу ЧтЗУ
содержимое ячейки, выбранной дешифратором адреса памяти (код команды), пе-
реписывается в регистр данных памяти. В следующем такте формируются сигна-
лы РДПКОп и РДПРА, по которым содержимое РДП передается в РК, при этом поле
РКОп заполняется кодом операции, а поле РА — адресной частью команды.
Декодирование
команды. Сразу же после размещения кода операции в
РК производится его декодирование, что можно описать микрооператором
УнитК := decod(Koп). Прежде всего выясняется, может ли данная команда изменить
последовательность вычислений, что влияет на дальнейшее выполнение цикла
команды. Для всех команд, кроме команд управления (в нашем случае это BRZ),
начинается этап формирования адреса следующей команды.
Формирование
адреса следующей команды. В фон-неймановских ВМ коман-
ды программы располагаются в естественном порядке следования, в соседних ячей-
ках памяти, и выполняются в том же порядке. Для формирования адреса следую-
щей команды достаточно увеличить содержимое СК на единицу: +1СК: СК := СК + 1.
В рассматриваемой ВМ предусмотрена только прямая адресация, поэтому этап
вычисления адресов операндов опускается.
Цикл команды
В анализируемой программе этап выборки операндов предполагается только
в командах загрузки аккумулятора и сложения. Для простоты изложения будем
расценивать выборку операндов как часть этапа исполнения соответствующих опе-
раций. В свою очередь, этапы исполнения специфичны для каждой команды и рас-
сматриваются применительно к каждой команде нашей программы.
Исполнение операции загрузки аккумулятора. Команда LDA 200 обеспечивает
занесение в аккумулятор содержимого ячейки ОП с адресом 200, то есть первого
операнда, и реализуется следующим образом:
• МПА вырабатывает сигнал РАРАП, передающий содержимое РА (адресную часть
команды) в РАП;
• по сигналу ЧтЗУ содержимое ячейки 200 заносится в РДП;
• по сигналу РДПАкк первый операнд из РДП помещается в аккумулятор.
На языке микроопераций это выглядит так:
РАРАП:
ЧтЗУ:
:=0П[200];
РДПАкк: Акк := РДП.
Исполнение операции сложения. Команда ADD 201 обеспечивает суммирова-
ние текущего содержимого аккумулятора с содержимым ячейки 201 (вторым опе-
рандом). Результат сложения остается в аккумуляторе. Одновременно с этим
в АЛУ формируются признаки результата:
• МПА вырабатывает сигнал РАРАП, и содержимое РА поступает в РАП;
• по сигналу ЧтЗУ содержимое ячейки 201 заносится в РДП;
• сигнал управления РДП РХ вызывает пересылку операнда 2 из РДП в регистр РХ
АЛУ одновременно с этим МПА вырабатывает сигнал АKKPY, ПО которому в PY
переписывается содержимое аккумулятора, то есть хранящийся там первый
операнд; операционный блок выполняет над данными, расположенными в РХ
и PY, операцию, заданную в коде операции команды (в нашем случае — сложе-
ние);
• по сигналу ОПБАкк информация с выхода ОПБ загружается в аккумулятор.
Сказанное может быть описано в виде:
РАРАП: РАП := РК(РА), ЧтЗУ: РДП := 0П[201];
РДПРХ: РХ := РДП,
AKKPY:
PY:= Акк, ОПБ := РХ + PY;
0ПБАкк1: Акк:-ОПБ.
Исполнение операции условного перехода. Для изменения порядка выполне-
ния программы используются команды безусловного (БП) и условного (УП) пе-
реходов, в нашем случае — команда BRZ 104. Адрес перехода хранится в адресном
поле команды. Команда анализирует хранящийся в РПрз признак (флаг) нулевого
результата, выработанный в АЛУ на предыдущем этапе вычислений, и формирует
адрес следующей команды в зависимости от состояния этого признака. При нуле-
вом значении флага (условие перехода не выполнено) естественный порядок вы-
полнения программы не нарушается, и адрес следующей команды формируется
обычным образом, путем увеличения содержимого СК на единицу (+1GK: СК :=
СК +1). При единичном значении флага (условие перехода выполнено) в СК зано-
144 Глава 3. Функциональная организация фон-неймановской ВМ
сится содержимое РА. Напомним, что в РА находится адресная часть извлеченной
из ОП команды перехода, то есть адрес точки перехода. Сказанное можно записать
в виде БПУП: СК:=РК(РА). Поскольку для команд перехода формирование адреса
следующей команды по сути является и исполнением их операций, описанные
микрооперации для них обычно относят к этапу исполнения.
Исполнение операции вывода.
Команда OUT 5 обеспечивает вывод содержи-
мого аккумулятора на периферийное устройство (ПУ), подключенное к порту
вывода с номером 5.
А вырабатывает управляющий сигнал РАДВВ, по которому
адресная часть команды — номер порта вывода — из РА поступает на вход дешиф-
ратора номера порта ввода/вывода. В следующем такте по сигналу Выв содержи-
мое аккумулятора через выбранный дешифратором порт вывода передается на
подключенное к этому порту ПУ:
РАДВВ: ДВВ:=РК(РА);
Выв: Порт вывода 5 := Акк.
Исполнение операции останова.
Команда HLT приводит к завершению вы-
числений. При этом вырабатывается сигнал Ост, нужный для того, чтобы известить
операционную систему о завершении текущей программы.
Машинный цикл с косвенной адресацией
Многие команды предполагают чтение операндов из памяти или запись в память.
В простейшем случае в адресном поле таких команд явно указывается исполни-
тельный адрес соответствующей ячейки ОП. Однако часто используется и другой
способ указания адреса, когда адрес операнда хранится в какой-то ячейке памяти,
а в команде указывается адрес,ячейки, содержащей адрес операнда. Как уже отме-
чалось ранее, подобный прием называется
косвенной адресацией.
Чтобы прочитать
или записать операнд, сначала нужно извлечь из памяти его адрес и только после
этого произвести нужное действие (чтение или запись операнда), иными словами,
требуется выполнить два обращения к памяти. Это, естественно, отражается и на
цикле команды, в котором появляется косвенная адресация. Этап косвенной адре-
сации можно отнести к этапу вычисления адресов операндов, поскольку его сущ-
ность сводится к определению исполнительного адреса операнда.
Применительно к вычислительной машине, приведенной на рис. 3.1, при кос-
венной адресации имеют место следующие микрооперации:
РАРАП: РАП := РК(РА), ЧтЗУ: РДП:= ОП[(РА)];
РДПРА: РК(РА):= РДП.
Иными словами, содержимое адресного поля команды в регистре команд ис-
пользуется для обращения к ячейке ОП, в которой хранится адрес операнда, после
чего извлеченный из памяти исполнительный адрес операнда помещается в адрес-
ное поле регистра команды на место косвенного адреса. Дальнейшее выполнение
команды протекает стандартным образом.
Машинный цикл с прерыванием
Практически во всех ВМ предусмотрены средства, благодаря которым модули вво-
да/вывода (и не только они) могут прервать выполнение текущей программы для
Цикл команды 145
внеочередного выполнения другой программы, с последующим возвратом к пре-
рванной.
Первоначально прерывания были введены для повышения эффективности
вычислений при работе с медленными ПУ. Положим, что процессор пересылает
данные на принтер, используя стандартный цикл команды. После каждой опера-
ции записи ЦП будет вынужден сделать паузу, в ожидании подтверждения от прин-
об обработке символа. Длительность этой паузы может составлять сотни и ты-
сячи циклов команды. Ясно, что такое использование ЦП очень неэффективно.
В случае прерываний, пока протекает операция ввода/вывода, ЦП способен вы-
поднять другие команды.
В упрощенном виде процедуру прерывания можно описать следующим обра-
зом. Объект, требующий внеочередного обслуживания, выставляет на соответству-
ющем входе ЦП сигнал
запроса прерывания.
Перед переходом к очередному циклу
. команды процессор проверяет этот вход на наличие запроса. Обнаружив запрос,
ЦП запоминает информацию, необходимую для продолжения нормальной работы
после возврата из прерывания, и переходит к выполнению
программы обработки
прерывания
(обработчика прерывания). По завершении обработки прерывания ЦП
восстанавливает состояние прерванного процесса, используя запомненную инфор-
мацию, и продолжает вычисления. Описанный процесс иллюстрирует рис. 3.5.
В терминах цикла команды сказанное выглядит так. Для учета прерываний
к циклу команды добавляется этап прерывания, в ходе которого процессор прове-
ряет, не поступил ли запрос прерывания. Если запроса нет, ЦП переходит к этапу
выборки следующей команды программы. При наличии запроса процессор:
1. Приостанавливает выполнение текущей программы и запоминает содержимое
всех регистров, которые будут использоваться программой обработки преры-
вания. Это называется
сохранением контекста программы.
В первую очередь
необходимо сохранить содержимое счетчика команд, аккумулятора и регистра
признаков.
программы обычно сохраняется в стеке.
2. Заносит в счетчик команд начальный адрес программы обработки преры-
вания.
З.5. Передача управления при прерываниях