Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 30.03.2005 | Доступ: свободный | Студентов: 6884 / 1896 | Оценка: 4.17 / 4.05 | Длительность: 09:46:00
ISBN: 978-5-9556-0040-6
Специальности: Разработчик аппаратуры
Лекция 11:

Система кодирования команд. Способы адресации

< Лекция 10 || Лекция 11: 12 || Лекция 12 >
Аннотация: Рассматриваются различные системы кодирования команд, взаимосвязь основных параметров ЭВМ с форматом команды, основные способы адресации и их влияние на время выборки операнда, длину поля адреса, особенности их использования при составлении программ для обработки различных структур данных.

Система кодирования команд

Запись любой команды определяется ее форматом. Формат команды – это структура команды, позволяющая распознать назначение отдельных ее полей.

Исходя из определения, команда должна содержать информацию о выполняемой операции, адресах операндов и адресе ячейки ЗУ для записи результата. Этому в наибольшей степени соответствует формат команды, содержащий поле кода операции и три адресных поля. Такая система кодирования команд называется трехадресной (рис.11.1,в).

Схема выполнения трехадресной команды имеет вид:

1)*(А2)->А3.

Здесь 1) и 2) – адреса ячеек ЗУ, в которых хранятся первый и второй операнды соответственно; * – знак обобщенной операции (например, сложение или умножение), задаваемой полем кода операции (КОп). Знак " -> " обозначает передачу результата операции в ячейку памяти с адресом А3.

Системы кодирования команд

Рис. 11.1. Системы кодирования команд

Для выполнения операции сложения операндов, находящихся по адресам a и b, с записью результата в ячейку c ( c = a + b ) требуется одна команда такого формата:

КОп А1 А2 А3
ADD a b c

Здесь ADD – код операции сложения.

Формат двухадресной команды представлен на рис.11.1,б. Выполнение операции с помощью такой команды проходит по следующей схеме:

1) * (А2) -> А1 или

1) * (А2) -> А2

Выполнение того же самого действия c = a + b в двухадресной системе кодирования команд потребует уже двух команд, например:

КОп А1 А2
ADD a b a = a + b
MOV c a c = a

Одноадресная команда имеет формат, приведенный на рис.11.1,а. Обычно ЭВМ с одноадресной системой команд имеют особую структуру, в состав которой входит специальный регистр (регистр результата – РР ). Он служит для хранения результата операции и используется в качестве одного из операндов при выполнении операции ( рис. 11.2).

Схема выполнения операции в ЭВМ с одноадресной системой команд

Рис. 11.2. Схема выполнения операции в ЭВМ с одноадресной системой команд

Схема выполнения операции на ЭВМ с одноадресной системой команд имеет вид:

(А) * (РР) -> А или

(А) * (РР) -> РР.

Операцию c = a + b в одноадресной системе команд можно выполнить следующим образом:

КОп А1
MOVR a РР = a
ADD b РР = РР + b
MOVS c c = РР

Рассмотренные форматы команд используются при так называемом естественном порядке выполнения программы. При этом подразумевается, что после выполнения любой команды, не меняющей в явном виде порядок выполнения программы, очередная команда выбирается из ячейки ЗУ, располагающейся сразу же вслед за ячейкой (или ячейками), содержащей код текущей команды. При четырехадресной системе кодирования команд (рис.11.1,г) первые три адреса выполняют те же функции, что и в трехадресной команде, а четвертый адрес указывает адрес ячейки, где хранится следующая выполняемая команда. Такая система обеспечивает принудительный порядок выполнения команд программы. Она хотя и повышает гибкость программирования, но практического применения не получила. Основной причиной этого является существенное увеличение размера каждой команды и, соответственно, увеличение объема ЗУ, необходимого для размещения программы, в то время как реальной потребности в такой кодировке каждой команды не существует.

Несколько особое положение занимает безадресное кодирование команд. Оно используются в компьютерах, имеющих стековую организацию памяти. Обращение к ячейкам такой памяти производится последовательно с помощью специального указателя стека ( УС ), определяющего рабочую в данный момент ячейку. Каждая ячейка снабжена тэгом – специальным признаком хранимой информации. Такая ЭВМ имеет структуру, представленную на рис. 11.3. В ее состав помимо АЛУ входят два специальных буферных регистра РР1 и РР2. Здесь значение тэгов следующее: Op – в данной ячейке хранится операнд, C – признак наличия в ячейке кода операции.

Схема выполнения операции  в ЭВМ с безадресной системой команд

Рис. 11.3. Схема выполнения операции в ЭВМ с безадресной системой команд

Проиллюстрируем работу такой ЭВМ на примере вычисления выражения ((a + b) * c - d) / e.

На первых двух тактах работы из памяти извлекаются операнды a и b и помещаются в рабочие регистры РР1 и РР2. Считав следующую ячейку стековой памяти, устройство управления по ее тэгу определяет, что данная информация представляет собой код операции. Этот код направляется в АЛУ, где и проводится сложение хранящихся в регистрах операндов с записью результата в один из рабочих регистров. Так как в следующей ячейке хранится операнд, то он направляется в РР, свободный от записанного результата. После этого производится выполнение следующей операции и так далее.

Такая структура ЭВМ обеспечивает высокое быстродействие, но требует весьма сложного программирования.

Взаимозависимость формата команды и основных параметров ЭВМ

Важной характеристикой команды служит ее длина, которая складывается из длины поля кода операции и суммы длин адресных полей:

n
\\
n_{Ком} = n_{КОп} + \Sigma  n_{Аi},\ i=1

где n – количество адресных полей в команде.

Максимальное количество операций, которое может быть закодировано в поле кода операций длиной nкоп, составляет

Kmax = 2nКОп

Тогда по известному количеству команд ( K ), составляющих систему команд данной ЭВМ, можно определить необходимую длину поля операции:

nКОп >= log2K.

Естественно, что эта величина должна быть минимально возможным целым числом. Так, для ЭВМ, имеющей систему команд из 100 команд, длина поля кода операции составит 7 бит.

Если поле адреса команды содержит просто номер ячейки ЗУ, к которой производится обращение, то длина этого поля определяется следующим образом:

nA >= log2VЗУ,

где VЗУ – объем запоминающего устройства.

Правомерна и другая постановка задачи – определение максимального объема запоминающего устройства ( VЗУmax ), к которому можно обратиться при заданной длине поля адреса. В этом случае

VЗУmax=2nадр

Современные ЭВМ имеют, как правило, запоминающие устройства с минимальной адресуемой единицей 1 байт ( 1 байт = 8 бит ). Поэтому, например, адресация ЗУ объемом 1 мегабайт ( 1М байт = 220 байт ) требует 20 разрядов адресного поля, а поле адреса длиной 16 разрядов позволяет обращаться к памяти максимального объема 64 килобайта ( 1К байт = 210 байт ).

Одним из способов уменьшения длины поля адреса является введение в состав ЭВМ дополнительно специального блока памяти небольшого объема – регистровой памяти ( РП ). Это запоминающее устройство имеет высокое быстродействие и служит для хранения часто используемой информации: промежуточных результатов вычислений, счетчиков циклов, составляющих адреса при некоторых режимах адресации и т.д.. Так как объем РП невелик, адресация ее элементов требует относительно короткого адресного поля. Например, для регистровой памяти объемом 8 регистров требуется всего лишь трехразрядное адресное поле.

< Лекция 10 || Лекция 11: 12 || Лекция 12 >
Людмила Долгих
Людмила Долгих

Здравствуйте. В первой лекции курса "Логические и арифметические основы и принципы работы ЭВМу вас приведена классическая структурная схема ЭВМ. Если можно уточните, а как в классической архитектуре могла реализоваться прямая работа устройств ввода-вывода с оперативной памятью?  Если я правильно понимаю - это режим прямого доступа к памяти, в классической архитектуре он не предусмотрен.

Анастасия Зыкина
Анастасия Зыкина

Примерно в апреле этого года в разделе "Зачетка" проходила курсы "Логические и арифметические основы и принципы работы ЭВМ", со спокойной душой отправилась на сессию и оказалось, что результатов не нашли! Как такое возможно? Можно ли найти результаты. Конечный экзамен был сдан на "4"!

Денис Комаров
Денис Комаров
Россия, Москва
Владимир Климин
Владимир Климин
Россия, Гвардейск