Классификация команд процессора
Цикл выполнения команды
Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.
· Выборка команды. Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
· Декодирование команды. Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
· Выборка операндов. Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
· Выполнение команды. АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
· Запись результата в память. Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.
Суммируем полученные знания и составим цикл выполнения команды:
1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
3. Декодировать команду.
4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
5. Выполнить команду и установить флаги.
6. Записать результат в память (по необходимости).
7. Начать выполнение следующей команды с п.1.
Это упрощённый цикл выполнения команды. К тому же действия могут отличаться в зависимости от процессора. Однако это даёт общее представление о том, как процессор выполняет одну машинную команду, а значит и программу в целом.
Классификация команд процессора
Основные команды ЭВМ классифицируются вкратце следующим образом: по функциям (выполняемым операциям), направлению приема-передачи информации, адресности.
1. Команды обработки данных, в том числе (01 - первый операнд, 02 - второй):
1.1. Короткие операции (один такт).
1.1.1. Логические:
- логическое сложение (для каждого бита 01 и 02 осуществляется операция ИЛИ);
- логическое умножение (для каждого бита 01 и 02 осуществляется операция И);
- инверсия (в O1 все единицы заменяются на нули, и наоборот);
- сравнение логическое (если O1 = 02, то некий регистр устанавливается в 1, иначе - в 0).
1.1.2. Арифметические:
- сложение или вычитание операндов;
- сравнение арифметическое (если O1 > O2, или O1 = O2, или O1 < O2, то некий регистр устанавливается в 1, иначе - в 0).
1.2. Длинные операции (несколько тактов):
- сложение/вычитание с фиксированной точкой;
- умножение/деление с фиксированной точкой.
2. Операции управления:
- безусловный переход (ветвление, branch);
- условный переход (по условию, результатам вычислений (conditional branch)).
3. Операции обращения к внешним устройствам (требование на запись или считывание информации).
Естественно, могут существовать и другие операции - десятичная арифметика, обработка символьнойинформации, работа с числами половинной (полуслово, например 16 бит) или двойной (двойное слово, например 64 бит) длины.
Кроме того, команды различаются по типу выборки и пересылок данных: регистр-регистр; память-регистр (регистр-память); память-память.
Далее, известны одно-, двух- и трехадресные машины (системы команд). Очевидна связь таких параметров ЦУ, как длина адресного пространства, адресность, разрядность. Увеличение разрядности позволяет увеличить адресность команды и длину адреса (то есть объем памяти, доступной данной команде). Увеличение адресности, в свою очередь, приводит к повышению быстродействия обработки (за счет снижения числа требуемых команд).
В трехадресной машине, например, сложение двух чисел требует одной команды (извлечь число по А1, число по А2, сложить и записать результат по A3). В двухадресной необходимы две команды (первая - извлечь число по А1 и поместить в РЧ (или сумматор), вторая - извлечь число по А1, сложить с содержимым РЧ и результат записать по А2). Легко видеть, что одноадресная машина потребует три команды. Поэтому неудивительно, что основная тенденция в развитии ЦУ ЭВМ состоит в увеличении разрядности.
Наибольшее применение нашли двухадресные системы команд.