Структура команды – это определение состава и назначения частей, из которых состоит команда. Команда содержит в себе наименование операций и адреса операндов.
Разные машины имеют разные наборы машинных операций. Каждая фирма, в попытках изобрести идеальную машину, придумывает и реализует свой набор команд. Некоторые делают акцент на развитую систему арифметико-логических команд, некоторые на систему адресации и т.д.
В общем случае невозможно построить идеальную вычислительную машину, которая удовлетворяла бы всем параметрам, поскольку если сделать развитый набор операций, то это приведет не только к уменьшению времени решения задачи, но и к увеличению функциональной электроники и, как следствие, к увеличению затрат на построение этой машины.
Существует такой параметр, как эффективность машины, который вычисляется по формуле: Э = c*T, где Э – эффективность, с – затраты на оборудование, T – время решения задачи. N – набор операций. M – машина. e – функциональная электроника. p – затраты на память. Эта характеристика не линейна. Примерный ее вид представлен на графике.
M1 M2 M3 …….. Mk
N1 Í N2 Í N3Í ….. ÍNk
e1 <= e2 <= e3 <= ….. <=ek
p1 >= p2 >= p3 >= …. >= pk
T1 >= T2 >= T3 >= …. >= Tk
Типи машинных операций
Существует несколько типов машинных операций:
1. Арифметико-логические
2. Операции пересылки
3. Переходы управления
4. Операции ввода-вывода
5. Специальные операции (системные операции)
Рассмотрим команду на примере действия A:=B+C:
Ас – адрес результата
АB – адрес второго операнда
АА – адрес первого операнда
Асл.к. – адрес следующей команды
Операнды указаны всегда в порядке использования.
Принудительная адресация – позволяет увеличить быстродействие. Но она имела смысл, только пока не было большой электронной памяти.
Если мы сделаем специальную ячейку памяти, которая будет всегда указывать на следующую команду, то есть содержать ее адрес. Таким образом, мы можем уменьшить размер команды.
Если же мы будем теперь для сохранения результата вычислений использовать одну из ранее используемых переменных, то команда у нас преобразится в двухадресную.
Теперь одну из ячеек памяти объявим накопительной, то есть, аккумулятором. В эту ячейку у нас всегда будет складываться результат наших вычислений. Таким образом, команда у нас станет одноадресной.
И, наконец, сделаем специальный стек, в котором будут храниться и команды и данные (так называемая польская нотация). Теперь нам не нужно чтобы в команде хранились адреса операндов, так как они будут храниться в заранее известном месте стека.
Так мы получили безадресную систему команд, которая используется в калькуляторах. Уменьшенная адресность машины дает большее быстродействие.
Системы адресации
Существует четыре основных вида адресации:
1. Классическая (прямая). Эта адресация подразумевает указание в поле команды адреса операнда. Есть два подвида этой адресации – короткая, когда указан регистр, в котором лежит операнд, и длинная, когда указан абсолютный адрес операнда.
2. Непосредственная. При этой адресации в теле команды находится сам операнд, а не его адрес.
3. Косвенная. В этом случае в команде указывается адрес ячейки, в которой хранится адрес операнда.
4. Относительная. Относительная адресация похожа на классическую с той разницей, что указывается не абсолютный адрес операнда, а смещение операнда относительно самой команды.