
Команды эвм и структура процессора.
Команда ЭВМ первоначально содержала следующую информацию (рис 1.3, а) 1. Код операции, указывающий операцию, которую должна выполнить ЭВМ (сложение, вычитание, умножение сравнение, изменение знака и т. п.).
2. Адреса двух операндов — аргументов операции, например слагаемых, уменьшаемого и вычитаемого, сомножителей и т.п. Если какой-либо из операндов является константой, то вместо его адреса в команде может быть задано само значение операнда. Однако это обстоятельство должно быть отражено в коде операции, чтобы ЭВМ использовала соответствующую часть команды в качестве операнда, а не адреса ячейки памяти, в которой хранится этот операнд.
3. Адрес ячейки памяти, в которую должен быть помещен результат операции.
4. Адрес следующей команды.
Такая команда, состоящая из пяти полей (код операции и четыре адреса), может быть реализована процессорами самых разнообразных структур.
Рис 1.3 Форматы команд:
а – четырехадресная; б – одноадресная; в – безадресная.
Простейшая из структур приведена, на рис. 1.4. Процессор содержит устройство управления ЛЛУ, регистр для размещения исполняемой команды (регистр команд) и регистр для размещения одного из операндов или результата операции в процессе выполнения этой команды — аккумулятор.
Рассмотрим, что происходит в процессоре после того, как в его регистр команд была переписана из памяти какая-либо команда, например команда вычитания.
Так как поле регистра команд, в котором хранится код операции, связано шиной с устройством управления, то последнее получит приказ на выполнение операции «Вычитание» и перейдет в режим генерации управляющих сигналов:
одновременной выработкой сигналов У1, У5, У10 и У8 обеспечиваются пересылка из памяти численного значения уменьшаемого, прохождение его через АЛУ (сигнал У10) и запись в аккумулятор;
следующий тактовый импульс инициирует выработку сигналов У2, У5, У 6 и У 11, что приводит к пересылке из памяти численного значения вычитаемого, к выполнению операции вычитания этого значения (сигнал У 11) из содержимого аккумулятора (из уменьшаемого); по сигналу У8 производится запись полученной разности в аккумулятор вместо уменьшаемого;
затем сигналы У3 и У9 обеспечат пересылку разности из аккумулятора в ячейку памяти, на которую указывает предпоследнее поле команды;
наконец, с помощью сигналов У4 и У7 будет произведена перепись в регистр команд следующей команды программы.
Рассмотренная структура процессора и реализуемая им структура четырехадресной команды кажутся вполне естественными. Действительно, без усложнения доступа к содержимому ячеек памяти нельзя одновременно получать из нее оба операнда и. следовательно, первый операнд приходится сохранять в процессоре до момента получения следующего операнда. Поэтому в состав процессора и включен аккумулятор (он назван так потому, что может быть использован для накопления — аккумуляции — слагаемых в процессе получения суммы многих слагаемых или накопления результатов других вычислений).
Рис. 1.4, Простой процессор, работающий с четырехадресной командой, целиком выбираемой из одной ячейки памяти.
Нужен и регистр для хранения в процессоре исполняемой команды (регистр команд), так как во время выполнения этой команды из нее должна выпираться различная информация используемая устройством управления и памятью. Однако целесообразно ли хранить в регистре команд одновременно все поля команды, если они все равно используются последовательно.
Когда команда хранится в одной ячейке памяти, то не существует возможности считывания из памяти отдельных полей этой команды. Поэтому лучше поставить вопрос так целесообразно ли хранить четырехадресную команду в одной ячейке памяти или лучше хранить ее отдельные поля в нескольких ячейках памяти?
Короткую
четырехадресную команду (см. рис. 1.3, а)
безусловно следует целиком хранить в
16-битовой ячейке памяти. Но такая команда
может адресовать лишь 2=8
ячеек памяти Современные же микро-ЭВМ
адресуются к памяти, содержащей не менее
2
=65536
ячеек. Если создавать четырехадресную
команду, работающую с памятью подобных
размеров, то на каждое адресное поле
команды придется отвести 16 бит, а на всю
команду (при 16-битовом коде операции) —
80 бит Однако ЭВМ. работающую с такими
командами, уже нельзя назвать микро-ЭВМ,
так как она будет содержать очень много
оборудования 80-разрядные ячейки памяти,
80-разрядные регистры. 80-разрядное АЛ У,
80-разрядные вентильные схемы, шины
шириной 80 и т.д. Следовательно, надо либо
четырехадресную команду хранить в
ячейках памяти в виде отдельных ее
полей, либо уменьшать число адресных
полей команды.
Среди команд современных ЭВМ практически не встречаются четырехадресные. Мало и трехадресных команд так как результат операции почти
всегда можно записать на место одного из уже использованных операндов. Наибольшее распространение в микро-ЭВМ получили одноадресные и безадресные команды (см. рис. 1,б,в,д), позволяющие построить простой процессор.
Если и команды программы размещать в памяти ЭВМ друг за другом (а не в произвольной последовательности), то адрес следующей команды чаще всего будет отличаться от адреса исполняемой команды (или ее последнего поля) лишь на единицу, а добавление единицы к текущему адресу можно возложить на ЭВМ (счетчик команд). Это позволяет сократить длину команды (изъять из ее содержимого адрес следующей команды), но приводит к необходимости использования специальных команд перехода, размещаемых в тех местах программы, где может потребоваться изменение естественной последовательности выполнения команд в зависимости от результата вычислений. Обычно команды перехода — одноадресные команды где код операции оговаривает проверяемое условие (знак результата предыдущей операции, наличие переноса из старшего разряда и т.п.), а адрес — адрес команды, к которой нужно перейти, если условие выполняется (при невыполнении условия выбирается команда, расположенная вслед за командой перехода).