Основные этапы автоматического выполнения программы в компьютере с классической трехадресной архитектурой были рассмотрены в лекции 3. В этой лекции рассмотрим особенности этого процесса на примере функционирования персонального компьютера, использующего 16 разрядный микропроцессор типа I8086.
Структура такого компьютера приведена на рис. 10.1. В составе ЭВМ кроме традиционных устройств компьютера с классической архитектурой (оперативное запоминающее устройство, арифметико-логическое устройство и основные схемы устройства управления) выделим следующие блоки:
• регистровая память;
• блок формирования адреса операнда (БФАО);
• двадцатиразрядные сумматоры для получения физических адресов данных (ΣФАД) и физических адресов команд (ΣФАК).
увеличить изображение Рис. 10.1. Структурная схема базовой модели персональной ЭВМ
На входы регистровой памяти из БФАО поступают номера регистров, к которым проводится обращение. На входы выбираемых регистров поступают из АЛУ результаты выполнения операции и значения сегментных регистров, устанавливаемых операционной системой ЭВМ. В регистрах хранятся составляющие эффективных адресов данных, исходные и промежуточные данные, участвующие в выполнении операции, старшие 16 разрядов базовых адресов сегментов.
На блок формирования адреса операнда поступают:
• сигналы от тактового генератора микропроцессора;
• коды полей второго байта выполняемой команды, находящейся в РК; эти коды определяют режимы адресации первого (поля md и r/m) и второго (поле reg) операндов;
• коды двух младших разрядов первого байта команды (d и w), которые определяют, соответственно, операнд, на место которого записывается результат операции, и разрядность операндов.
БФАО вырабатывает следующие выходные сигналы:
• коды номера выбираемых регистров;
• сигналы считывания кодов с выбранных регистров;
• сигналы считывания смещений (disp L и disp H);
• сигналы считывания непосредственных операндов (data L и data H).
Сумматоры физических адресов используются для получения адреса обращения к оперативной памяти с учетом ее сегментной организации. Одним из слагаемых выступает начальный адрес сегмента, который формируется путем умножения на 16 значения соответствующего сегментного регистра. Второе слагаемое - это смещение относительно начала сегмента. Для сегмента кода таким смещением является значение указателя команд IP, а для сегмента данных - сформированный блоком формирования адреса операнда эффективный адрес.
Суть этапов выполнения команды остается без изменения по сравнению с классической ЭВМ:
• первый - выбор кода команды;
• второй и третий - выбор операндов;
• четвертый - выполнение операции в АЛУ;
• пятый - запись результата в оперативную или регистровую память;
• шестой - формирование адреса следующей выполняемой команды.
Но содержание этих этапов изменилось.
Рассмотрим выполнение вышеуказанных этапов на примере следующей команды:
ADD AL,[BX+disp8]
Допустим, что ее первый байт находится в ячейке ОЗУ с адресом i + 24*[CS], то есть [IP] = i.
Первый этап. Код IP, то есть [IP] = i, передаётся на сумматор ΣФАК. На этот же сумматор поступает код сегментного регистра команд [CS] из РП, умноженный на 16. На выходе ΣФАК сформируется код физического адреса ОЗУ, по которому находится первый байт команды. Код с выхода ΣФАК поступает на регистр адреса ОЗУ. Из ОЗУ выбирается первый байт команды и посылается в регистр команд (для некоторого упрощения предполагаем, что обмен информацией между микропроцессором и ОЗУ происходит байтами). И в завершении этого этапа к IP добавляется 1.
Все указанные взаимодействия отметим на схеме знаком 11. Эта последовательность действий будет повторена еще два раза для выбора второго и третьего байтов выполняемой команды. Это отмечено на схеме знаками 12и 13.
Второй этап. В начале второго этапа с помощью ДшКОп расшифровывается код операции выполняемой команды. Если выполняемая команда не нарушает естественного порядка выполняемой программы, то осуществляется формирование адреса первого операнда и выборка этого операнда из РП или ОЗУ ЭВМ.
В данной команде для первого операнда используется регистровый относительный режим адресации. Соответственно, эффективный адрес определяется так: EA = [BX] + disp8. В этом случае коды полей md и r/m второго байта из регистра команд поступают в БФАО и таким образом коммутируют оборудование БФАО, что на его выходе появляются сигналы, обеспечивающие считывание:
• кода регистра BX;
• кода disp L;
• кода сегментного регистра DS.
Все указанные коды поступают на сумматор физического адреса данных ΣФАД. При этом обеспечивается передача значения DS со сдвигом на 4 разряда влево (умножение на 16). Сформированный на ΣФАД код поступает на РА ОЗУ. Происходит выборка байта данных, который направляется в АЛУ. Выполнение второго этапа завершено. Все указанные взаимодействия устройств отметим на схеме цифрой 2.
Третий этап. Выбор второго операнда. В данном случае БФАО под воздействием сигнала с разряда w и поля reg регистра команд выдает сигнал обращения к регистру AL, код которого подается в АЛУ. Все взаимодействия на этом этапе отметим цифрой 3.
Четвертый этап. Выполнение операции сложения в АЛУ. Здесь блок управления операциями выдает те сигналы в АЛУ, которые необходимы для выполнения операции. Линии взаимодействия отметим цифрой 4.
Пятый этап. Код выполненной операции из АЛУ направляется в регистр AL (d = 1) регистровой памяти. Взаимодействие отмечается цифрой 5.
Команда выполнена. В IP находится основная составляющая адреса следующей команды программы: (IP) = i + 3. Здесь шестой этап как отдельный (автономный) этап исключен. Формирование основной составляющей адреса следующей выполняемой команды (указателя команд) было реализовано на первом этапе. Значение сегментного регистра команд в арифметических командах не меняется.
ЭВМ готова к выполнению следующих команд программы.