Вопрос 38 : Основные этапы выполнения команды ЦП
Программа в ЭВМ реализуется центральным процессором (ЦП) посредством последовательного исполнения образующих эту программу команд. Действия, требуемые для выборки (извлечения из основной памяти) и выполнения команды, называют циклом команды. В общем случае цикл команды включает в себя несколько составляющих (этапов):
выборку команды;
формирование адреса следующей команды;
декодирование команды;
вычисление адресов операндов;
выборку операндов;
исполнение операции;
формирование признака результата;
запись результата.
Перечисленные этапы выполнения команды в дальнейшем будем называть стандартным циклом команды. Отметим, что не все из этапов присутствуют при выполнении любой команды (зависит от типа команды), однако этапы выборки, декодирования, формирования адреса следующей команды и исполнения операции имеют место всегда. В определенных ситуациях возможны еще два этапа:
косвенная адресация;
реакция на прерывание.
Стандартный цикл команды
Этап выборки команды
Цикл любой команды начинается с того, что центральный процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд (СК). Двоичный код команды помещается в регистр команды (РК) и с этого момента становится «видимым» для процессора. Если длина команды совпадает с разрядностью ячейки памяти, то все понятно. Однако, система команд многих ЭВМ предполагает несколько форматов команд, причем в разных форматах команда может занимать 1, 2 или более ячеек, а этап выборки команды можно считать завершенным лишь после того, как в РК будет помещен полный код команды. Информация о фактической длине команды содержится в полях кода операции и способа адресации. Обычно эти поля располагают в первом слове кода команды, и для выяснения необходимости продолжения процесса выборки необходимо предварительное декодирование их содержимого. Такое декодирование может быть произведено после того, как первое слово кода команды окажется в РК. В случае многословного формата команды процесс выборки продолжается вплоть до занесения в РК всех слов команды.
Этап формирования адреса следующей команды
Для большинства ЭВМ характерно размещение соседних команд программы в смежных ячейках памяти. Если извлеченная команда не нарушает естественного порядка выполнения программы, то для вычисления адреса следующей выполняемой команды достаточно увеличить содержимое счетчика команд на длину текущей команды, представленную количеством занимаемых кодом команды ячеек памяти. Длина команды, а также то, способна ли она изменить естественный порядок выполнения команд программы, выясняются в ходе ранее упоминавшегося предварительного декодирования. Если извлеченная команда способна изменить последовательность выполнения
программы (команда условного или безусловного перехода, вызова процедуры и т.п), процесс формирования адреса следующей команды переносится на этап исполнения операции.
Этап декодирования команды
После выборки команды она должна быть декодирована, для чего ЦП расшифровывает находящийся в РК код команды. В результате декодирования выясняются следующие вопросы: находится ли в РК полный код команды или требуется дозагрузка остальных слов команды; какие последующие действия нужны для выполнения данной команды; если команда использует операнды, то откуда они должны быть взяты (номер регистра или адрес ячейки основной памяти); если команда формирует результат, то куда этот результат должен быть направлен.
По результатам декодирования производится подготовка электронных схем ЭВМ к выполнению предписанных командой действий.
Этап вычисления адресов операндов
Этап имеет место, если в процессе декодирования команды выясняется, что команда использует операнды. Если операнды размещаются в основной памяти, осуществляется вычисление их исполнительных адресов, с учетом указанного в команде способа адресации. Так, в случае индексной адресации для получения исполнительного адреса производится суммирование содержимого адресной части команды и содержимого индексного регистра.
Этап выборки операндов
Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в определенные регистры процессора.
Этап исполнения операции
На этом этапе реализуется указанная в команде операция. В силу различия сущности каждой из команд ЭВМ, содержание этого этапа сугубо индивидуально.
Этап формирования признака результата
На этом этапе определяется, каким получился результат операции. Результат
может быть положительным, отрицательным, равным нулю и т.п. Сформированный признак заносится в регистр признака результата (РПР) для дальнейшего использования устройством управления.
Этап записи результата
Этап записи результата присутствует в цикле тех команд, которые предполагают занесение результата в регистр или ячейку основной памяти.