Для гипотетической машины
Описание стандартных циклов команды
Микропрограммы для отдельных этапов исполнения команд гипотетической вычислительной машины (рис. 2.72.) приведены в таблице 2.17.
Таблица 2.17. Микропрограммы отдельных этапов циклов команд (гипотетическая вычислительная машина)
Этап | Команда | Номер такта | Микропрограмма | |
КОп | АЧ | |||
ВК | T0 | РАП_СК: РАП:= СК, ЧтЗУ: РДП := ОП[(РАП)] | ||
ВК+ДК | T1 | РК РДП: РК := РДП, МПА := УнитК := DECOD(РК(КОП)) | ||
ВО | LDA | ADR | T2 | РАП_РА: РАП:= РК(РА); ЧтЗУ: РДП := ОП[(РАП)| |
ИО | T3 | Акк_РДП: Акк:= РДП | ||
ИО | STA | ADR | T2 | РАП_РА: РАП := РК(РА); РДП_Акк: РДП := Акк |
ИО | T3 | ЗпЗУ: ОП[(РАП)]:= РДП | ||
ВО | ADD | ADR | T2 | РАП_РА: РАП := РК(РА), ЧтЗУ: РДП := ОП[(РАП)] |
ИО | T3 | РХ_РДП: РХ:= РДП, PY_Aкк: PY:= Акк, ОпБ:= PY+PX Рпрз := Признаки | ||
ИО | T4 | Акк__ОпБ: Акк := ОпБ | ||
ВО | SUB | ADR | T2 | РАП_РА: РАП:= РК(РА), ЧтЗУ: РДП := ОП[(РАП)] |
ИО | T3 | РХ_РДП: РХ:= РДП, РУ_Акк: PY := Акк, ОпБ := PY – РХ Рпрз: = Признаки | ||
ИО | T4 | Акк_ОпБ: Акк := ОпБ | ||
ИО | INP | IPRT | T2 | ДВВ_РА: ДВВ := РК(РА) |
ИО | T3 | Вв: Акк := Порт ввода IPRT | ||
ИО | OUT | OPRT | T2 | ДВВ_РА: ДВВ := РК(РА) |
ИО | T3 | Выв: Порт вывода OPRT:= Акк | ||
ИО | JMP | ADR | T2 | БПУП: СК:=РА |
ИО | BRZ | ADR | T2 | If Z=1 then БПУП: СК := РА else +1СК:СК:= СК+1 |
ИО | HLT | T2 | ОСТ: | |
ФАСК | T4 T5 | +1СК: СК := СК+1 ; <Для команд LDA, STA, INP, OUT> +1СК: СК := СК+1; <Для команд ADD, SUB> |
Этап выборки любой команды ВМ. На этом этапе происходит извлечение двоичного кода команды из ячейки основной памяти и его занесение в регистр команды. Этап реализуется в двух начальных тактах цикла команды (Т0 и Т1):
· Такт Т0 – вырабатывается сигнал управления РАП_СК, инициирующий пересылку содержимого счетчика команд (СК) в регистр адреса памяти (РАП), после чего по сигналу ЧтЗУ содержимое ячейки, выбранной дешифратором адреса памяти (код команды), переписывается в регистр данных памяти (РДП).
• Такт Т1 – формируется сигнал РК_РДП, по которому содержимое регистра данных памяти РДП передается в РК, при этом поле РКОП заполняется кодом операции, а поле РА – адресной частью команды.
Этап декодирования любой команды ВМ. Сразу же после размещения кода операции в РК производится его декодирование, в результате которого активным становится выход дешифратора кода операции (ДКОП), соответствующий коду операции:
• Такт Т1 – дешифратор кода операции ДКОП непосредственно подключен к соответствующему полю регистра команды, поэтому специальный сигнал управления не нужен, а декодирование происходит сразу же после заполнения РК, то есть параллельно второй фазе этапа выборки команды ВК.
Этап вычисления исполнительных адресов. В гипотетической вычислительной машине предусмотрена только прямая адресация, поэтому этап вычисления исполнительных адресов отсутствует.
Этап выборки операндов. В рассматриваемой системе команд этап выборки операндов имеется только в командах LDA (загрузка в аккумулятор содержимого ячейки ОП), ADD (сложение данных аккумулятора и ячейки ОП) и SUB (вычитание из содержимого аккумулятора содержимого ячейки ОП).
Этапы команды LDA ADR. Команда обеспечивает занесение в аккумулятор содержимого ячейки ОП с адресом ADR:
· Такт Т2 (этап выборки операндов) – по сигналу РАП_РА содержимое регистра адреса РА (адресная часть команды) пересылается в РАП, после чего по сигналу ЧтЗУ содержимое ячейки с адресом ADR заносится в регистр данных памяти РДП.
· Такт Т3 (этап исполнение операции ИО) – по сигналу Акк_РДП операнд из РДП пересылается в аккумулятор.
Этап исполнения операции для команды STA ADR. Команда обеспечивает сохранение содержимого аккумулятора в ячейке ОП с адресом ADR:
· Такт Т2 – сигналом РАП_РА адресная часть команды (ADR) из РА пересылается в РАП, одновременно с этим содержимое аккумулятора по сигналу РДП_Акк заносится в РДП.
· Такт Т3 – по сигналу ЗпЗУ происходит физическая запись содержимого РДП в ячейку ОП, на которую указывает адрес, находящийся в РАП.
Этапы команды ADD ADR. Команда обеспечивает суммирование текущего содержимого аккумулятора с содержимым ячейки основной памяти ОП, имеющей адрес ADR. Результат сложения остается в аккумуляторе. Одновременно с этим в АЛУ формируются признаки результата, которые запоминаются в регистре признаков:
· Такт Т2 (этап выборка операндов) – вырабатывается сигнал РАП_РА, и содержимое регистра адреса РА поступает в регистр адреса памяти РАП. В том же такте по сигналу ЧтЗУ второе слагаемое из ячейки с адресом ADR (первое слагаемое берется из аккумулятора) заносится в регистр данных памяти РДП.
· Такт Т3 (этап исполнение операции) – сигнал управления РХ_РДП вызывает пересылку второго операнда из регистра данных памяти РДП в регистр РХ арифметико-логического устройства. Одновременно с этим, сигналом РY_Акк первый операнд из аккумулятора переписывается в PY. Операционный блок выполняет над данными, расположенными в РХ и PY, операцию, заданную в коде операции команды (в нашем случае – сложение), а также формирует признаки, характеризующие этот результат. Признаки автоматически заносятся в регистр признаков Рпрз.
· Такт Т4 (этап исполнение операции) – по сигналу Акк_ОпБ информация с выхода ОпБ сохраняется в аккумуляторе.
Этапы команды SUB ADR. Команда обеспечивает вычитание из текущего содержимого аккумулятора содержимого ячейки основной памяти ОП, имеющей адрес ADR. Результат вычитания остается в аккумуляторе. Как и при сложении, формируются и запоминаются признаки результата. Содержание подобно описанию для команды ADD ADR, за исключением действия, выполняемого в операционном блоке ОПБ в такте Т3 (вычитание вместо сложения).
Этап исполнения для команды IMP IPRT. Команда обеспечивает занесение в аккумулятор информации из периферийного устройства (ПУ), подключенного к порту ввода с номером IPRT:
· Такт Т2 (этап исполнение операции) – вырабатывается управляющий сигнал ДВВ_РА, по которому адресная часть команды – номер порта ввода – из регистра адреса РА поступает на вход дешифратора номера порта ввода/вывода.
· Такт Т3 (этап исполнение операции) – по сигналу Вв информация из периферийного устройства ПУ, подключенного к выбранному дешифратором порту ввода, заносится в аккумулятор.
Этап исполнения для команды OUT OPRT. Команда обеспечивает вывод содержимого аккумулятора на периферийное устройство ПУ, подключенное к порту вывода с номером OPRT:
· Такт Т2 (этап исполнение операции) – по сигналу ДВВ_РА адресная часть команды – номер порта вывода – из регистра адреса РА подается на вход дешифратора номера порта ввода/вывода.
· Такт Т3 (этап исполнение операции) – сигналом Выв содержимое аккумулятора через выбранный с помощью ДВВ порт вывода передается на подключенное периферийное устройство ПУ.
Этап исполнения операции для команды JMP ADR. Команда обеспечивает безусловный переход к команде, расположенной в ячейке основной памяти ОП с адресом ADR:
· Такт Т2 – по сигналу БПУП адресная часть команды (ADR) заносится в счетчик команд, тем самым фактически реализуется этап формирования адреса следующей команды.
Этап исполнения операции для команды BRZ ADR. Команда анализирует хранящийся в регистре признаков Рпрз признак (флаг) нулевого результата, выработанный в АЛУ на предыдущем этапе вычислений, и формирует адрес следующей команды в зависимости от состояния этого признака:
· Такт Т2 – при нулевом значении признака (условие перехода не выполнено) естественный порядок выполнения программы не нарушается, и адрес следующей команды формируется обычным образом, путем увеличения содержимого счетчика команд СК на единицу; при единичном значении признака (условие перехода выполнено) в счетчик команд СК заносится содержимое регистра адреса РА. В регистре адреса РА находится адресная часть извлеченной из основной памяти ОП команды перехода, то есть адрес точки перехода (ADR).
Этап исполнения для команды HLT. Команда приводит к завершению вычислений. При этом вырабатывается сигнал ОСТ, нужный для того, чтобы известить операционную систему о завершении текущей программы.
Этап формирования адреса следующей команды. Для формирования адреса следующей команды (если текущая команда не меняет естественной последовательности вычислений) достаточно увеличить содержимое счетчика команд на единицу.