Алгоритм (последовательность) выполнения большинства команд
Введение
Алгоритм выполнения команд
Любая команда состоит в выполнении ряда простейших действий – микроопераций. Набор микроопераций для каждой команды свой, тем не менее - между алгоритмами выполнения команд – много общего.
В данном разделе, мы рассмотрим - из каких микроопераций - состоит процесс выполнения подавляющего числа команд ЭВМ (Исключение: команды управления).
Особое внимание потребуется обратить на механизм, который обеспечивает последовательное выполнение команд программ. Механизм – который обеспечивает вслед за выполнением некой i команды, автоматическую выборку из ОЗУ, и передачу в процессор на исполнение – уже следующей по порядку записи в машинной программе i+1 команды.
Сейчас мы впервые встретимся с описанием алгоритма выполнения команды на языке ЯОМО. В данном случае – применим наиболее полную форму записи – с использованием блок-схемы:
На рисунке:
RC - (Register of Command, регистр команд) – специальный регистр, непосредственно связанный с устройством управления ЦП. То, что попадает в RC, поступает в ЦП на обработку.
PC - (Program Calculator, программный счётчик) – специальный регистр, в котором , к моменту начала выполнения команды, находится адрес в ОЗУ команды подлежащей выполнению. Перед началом выполнения программы ОС заносит в программный счётчик адрес первой команды программы.
Комментарии по отдельным микрооперациям:
Микрооперация 1: В регистр команд RC заносится информация из тех ячеек ОЗУ, на которые указывает программный счетчик PC. Таким образом - команда поступает в процессор на выполнение. Обратите внимание – используется, уже знакомая вам, косвенная регистровая адресация [3.4.5.], и уже знакомые вам условные обозначения введённые в [3.4]. Заметим – запись в приведенном алгоритме ( стрелка, скобки, названия регистров) – полностью описывает процесс, слова – излишни, избыточны.
Микрооперация 2: УУ выполняет дешифрацию команды, т.е. разбирает содержимое регистра команд, определяет – что за команда поступила на выполнение, какие микрооперации - в дальнейшем должны быть выполнены. Смотрите [1.7.2]
Микрооперации 1,2: стандартные микрооперации, с таких микроопераций начинается выполнение абсолютно любой команды ЭВМ.
Микрооперации с 3-й по n-2 – уникальные микрооперации, индивидуальные для каждой из команд. Состав или количество этих микроопераций зависят от результатов дешифрации, а конечном счете - от того какая команда поступила на выполнение. Собственно, выполнение этих микроопераций и есть выполнение действий предписанных командой. Дальше – начнётся уже подготовка к выполнению следующей команды.
Микрооперация n-1: Программный счетчик увеличивается на LK – длина только что выполненной команды. Смотрите [3.3] После выполнения этой микрооперации программный счетчик будет указывать уже на адрес в ОЗУ – следующей по порядку размещения в программе команды программы.
Микрооперация n – проверка наличия сигнала INT (прерывания). Наличие сигнала INT свидетельствует о том, что произошло внешнее событие и требуется переход к выполнению другой программы (программы обработки прерывания).
Если INT = 0 (сигнала прерывания свидетельствующего о наступлении внешнего события нет) - возвращаемся к выполнению микрооперации1, снова – выборка команды… Только теперь – это уже будет уже выборка следующей команды программы. Повторение цикла – обеспечит выполнение программы.
Если INT =1 (есть сигнал прерывания) – переходим к выполнению действий по "обработке прерывания". Как уже упоминалось выше [1.10]– к выполнению другой программы. Подробнее что именно в деталях происходит при обработке прерывания, как осуществляется переход к "программе обработки прерывания" рассмотрим позднее, когда будем изучать систему прерываний.
Микрооперации n-1 и n: тоже стандартные микрооперации завершения команд, впрочем - не столь стандартные как первые две микрооперации: некоторые команды, прежде всего команды передачи управления – могут завершаться иначе. В дальнейшем мы, в основном, будем изучать как раз именно команды передачи управления, так что с этим исключением – встречаться будем очень часто.