Команды ЭВМ и структура процессора
Команда ЭВМ первоначально содержала следующую информацию (рис 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,б,в,д), позволяющие построить простой процессор.
Если и команды программы размещать в памяти ЭВМ друг за другом (а не в произвольной последовательности), то адрес следующей команды чаще всего будет отличаться от адреса исполняемой команды (или ее последнего поля) лишь на единицу, а добавление единицы к текущему адресу можно возложить на ЭВМ (счетчик команд). Это позволяет сократить длину команды (изъять из ее содержимого адрес следующей команды), но приводит к необходимости использования специальных команд перехода, размещаемых в тех местах программы, где может потребоваться изменение естественной последовательности выполнения команд в зависимости от результата вычислений. Обычно команды перехода — одноадресные команды, где код операции оговаривает проверяемое условие (знак результата предыдущей операции, наличие переноса из старшего разряда и т.п.), а адрес — адрес команды, к которой нужно перейти, если условие выполняется (при невыполнении условия выбирается команда, расположенная вслед за командой перехода).
Форматы команд ЭВМ
Теперь выясним, всегда ли нужны остальные адресные поля команды.
Анализ различных программ для ЭВМ показывает, что во многих случаях результат выполнения предыдущей команды используется как операнд в следующей. Если результат выполнения команды не пересылать в память, а сохранять, например, в аккумуляторе, то можно обойтись следующими одноадресными командами:
командами арифметической (логической) обработки, которые дают приказ на выполнение какой-либо арифметической или логической операции, используя в качестве операндов содержимое аккумулятора и содержимое адресуемой ячейки памяти (точнее, содержимое регистра данных, куда переписывается содержимое адресуемой ячейки);
командами пересылки, которые дают приказ на обмен информацией между аккумулятором и памятью (через регистр данных), т. е. на загрузку аккумулятора содержимым адресуемой ячейки памяти или запись в эту ячейку содержимого аккумулятора (результата вычислений);
командами передачи управления, обеспечивающими условный или безусловный переход к адресуемой ячейке памяти (т. е. к команде, которая должна быть помешена в процессор при выполнении какого-либо условия или вне зависимости от результата предыдущих вычислений), обращение к подпрограмме и выход из нее;
Дата добавления: 2016-01-18; просмотров: 1433;