Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
151
Добавлен:
10.05.2015
Размер:
165.38 Кб
Скачать

Этап декодирования команды

После выборки команды она должна быть декодирована, для чего ЦП расшифро­вывает находящийся в РК код команды. В результате декодирования выясняются следующие моменты:

  • находится ли в РК полный код команды или требуется дозагрузка остальных слов команды;

  • какие последующие действия нужны для выполнения данной команды;

  • если команда использует операнды, то откуда они должны быть взяты (номер регистра или адрес ячейки основной памяти);

  • если команда формирует результат, то куда этот результат должен быть направлен.

Ответы на два первых вопроса дает расшифровка кода операции, результатом которой может быть унитарный код, где каждый разряд соответствует одной из команд. На практике вместо унитар­ного кода могут встретиться самые разнообразные формы представления резуль­татов декодирования, например адрес ячейки специальной управляющей памяти, где хранится первая микрокоманда микропрограммы для реализации указанной в команде операции.

Полное выяснение всех аспектов команды, помимо расшифровки кода опера­ции, требует также анализ адресной части команды, включая поле способа адре­сации.

По результатам декодирования производится подготовка электронных схем ВМ к выполнению предписанных командой действий.

Этап вычисления адресов операндов

Этап имеет место, если в процессе декодирования команды выясняется, что команда использует операнды. Если операнды размещаются в основной памяти, осуществ­ляется вычисление их исполнительных адресов, с учетом указанного в команде способа адресации. Так, в случае индексной адресации для получения исполни­тельного адреса производится суммирование содержимого адресной части коман­ды и содержимого индексного регистра.

Этап выборки операндов

Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в определенные регистры процессора. Например, в случае арифметической команды операнд после извлечения из памя­ти может быть загружен во входной регистр АЛУ. Однако чаще операнды предва­рительно заносятся в специальные вспомогательные регистры процессора, а их пересылка на вход АЛУ происходит на этапе исполнения операции.

Этап исполнения операции

На этом этапе реализуется указанная в команде операция. В силу различия сущ­ности каждой из команд ВМ, содержание этого этапа также сугубо индивидуально. Этапы исполнения некоторых команд будут рассмотрены на примере вы­полнения учебной программы для приведенной на рис. 11.1 гипотетической вы­числительной машины.

Этап записи результата

Этап записи результата присутствует в цикле тех команд, которые предполагают занесение результата в регистр или ячейку основной памяти. Фактически его можно считать частью этапа исполнения, особенно для тех команд, которые помещают результат сразу в несколько мест.

Описание стандартных циклов команды для гипотетической машины

Для анализа содержания стандартных циклов команды обратимся к гипотетичес­кой ВМ (см. рис. 11.1), для которой составим программу сложения двух чисел и вывода суммы на устройство вывода, если эта сумма не равна 0.

Список необходимых команд приведен в табл. 11.1, а сама программа — в табл. 11.2. Предполагается, что команды программы будут размещаться в основной памяти, начиная с адреса 100, а операнды — с адреса 200. Для вывода результата назначим порт с номером 5.

Таблица 11.1. Команды гипотетической вычислительной машины.

КОп

АЧ

Описание

LDA

Adr

Загрузка в аккумулятор содержимого ячейки ОП с адресом Adr

ADD

Adr

Сложение содержимого аккумулятора с содержимым ячейки ОП, имеющей адрес Adr. Результат остается в аккумуляторе

BRZ

Adr

Переход к команде, хранящейся по адресу Adr, если результат предыдущей арифметической операции равен 0, иначе естественный порядок вычислений не нарушается

OUT

PortN

Вывод содержимого аккумулятора на периферийное устройство, подключенное к порту с номером PortN

HLT

Останов вычислений

Таблица 11.2. Программа к рассматриваемому примеру.

Адрес команды

Код операции

Адрес ячейки или номер порта

100

LDA

200

101

ADD

201

102

BRZ

104

103

OUT

5

104

HLT

200

Операнд 1

201

Операнд 2

Перед запуском программы необходимо занести в СК адрес ячейки основной памяти, содержащей первую выполняемую команду программы, то есть 100.

Поскольку выборка и декодирование, а также формирование адреса следую­щей команды для всех команд выполняются по идентичной схеме, опишем их од­нократно, детализируя в дальнейшем лишь остальные этапы основного цикла ко­манды. Кроме того, напомним, что все сигналы управления и управляющие коды формируются микропрограммным автоматом, поэтому в дальнейшем ссылки на МПА будут опущены.

Выборка команды. На этом этапе происходит извлечение двоич­ного кода команды из ячейки основной памяти и его занесение в регистр команды.

В первом такте вырабатывается сигнал управления, инициирующий пе­ресылку содержимого счетчика команд в регистр адреса памяти. По сигналу ЧтЗУ содержимое ячейки, выбранной дешифратором адреса памяти (код команды), пе­реписывается в регистр данных памяти. В следующем такте формируются сигна­лы, по которым содержимое РДП передается в РК, при этом поле РКОп заполняется кодом операции, а поле РА — адресной частью команды.

Декодирование команды. Сразу же после размещения кода операции в РК производится его декодирование. Прежде всего выясняется, может ли данная команда изменить последовательность вычислений, что влияет на дальнейшее выполнение цикла команды. Для всех команд, кроме команд управления (в нашем случае это BRZ), начинается этап формирования адреса следующей команды.

Формирование адреса следующей команды. В фон-неймановских ВМ коман­ды программы располагаются в естественном порядке следования, в соседних ячей­ках памяти, и выполняются в том же порядке. Для формирования адреса следую­щей команды достаточно увеличить содержимое СК на единицу:

В рассматриваемой ВМ предусмотрена только прямая адресация, поэтому этап вычисления адресов операндов опускается.

В анализируемой программе этап выборки операндов предполагается только в командах загрузки аккумулятора и сложения. Для простоты изложения будем расценивать выборку операндов как часть этапа исполнения соответствующих опе­раций. В свою очередь, этапы исполнения специфичны для каждой команды и рас­сматриваются применительно к каждой команде нашей программы.

Исполнение операции загрузки аккумулятора. Команда LDA 200 обеспечивает занесение в аккумулятор содержимого ячейки ОП с адресом 200, то есть первого операнда, и реализуется следующим образом:

  • МПА вырабатывает сигнал, передающий содержимое РА (адресную часть команды) в РАП;

  • по сигналу ЧтЗУ содержимое ячейки 200 заносится в РДП;

  • первый операнд из РДП помещается в аккумулятор.

Исполнение операции сложения. Команда ADD 201 обеспечивает суммирова­ние текущего содержимого аккумулятора с содержимым ячейки 201 (вторым опе­рандом). Результат сложения остается в аккумуляторе. Одновременно с этим в АЛУ формируются признаки результата:

Исполнение операции условного перехода. Для изменения порядка выполне­ния программы используются команды безусловного (БП) и условного (УП) пе­реходов, в нашем случае — команда BRZ 104. Адрес перехода хранится в адресном поле команды. Команда анализирует хранящийся в РПрз признак (флаг) нулевого результата, выработанный в АЛУ на предыдущем этапе вычислений, и формирует адрес следующей команды в зависимости от состояния этого признака. При нуле­вом значении флага (условие перехода не выполнено) естественный порядок вы­полнения программы не нарушается, и адрес следующей команды формируется обычным образом, путем увеличения содержимого СК на единицу. При единичном значении флага (условие перехода выполнено) в СК заносится содержимое РА. Напомним, что в РА находится адресная часть извлеченной из ОП команды перехода, то есть адрес точки перехода. Поскольку для команд перехода формирование адреса следующей команды по сути является и исполнением их операций, описанные микрооперации для них обычно относят к этапу исполнения.

Исполнение операции вывода. Команда OUT 5 обеспечивает вывод содержи­мого аккумулятора на периферийное устройство (ПУ), подключенное к порту вывода с номером 5. МПА вырабатывает управляющий сигнал, по которому адресная часть команды — номер порта вывода — из РА поступает на вход дешиф­ратора номера порта ввода/вывода. В следующем такте по сигналу Выв содержи­мое аккумулятора через выбранный дешифратором порт вывода передается на подключенное к этому порту ПУ.

Исполнение операции останова. Команда HLT приводит к завершению вы­числений. При этом вырабатывается сигнал Ост, нужный для того, чтобы известить операционную систему о завершении текущей программы.

Соседние файлы в папке Lection