Типы операций
Количество кодов операций в наборах команд разных процессоров довольно сильно варьируется. Однако существует несколько типов операций, которые встречаются практически в каждой модели процессора. К ним относятся следующие:
• операции передачи данных;
• арифметические операции;
• логические операции;
• операции ввода-вывода;
• операции SIMD;
• операции управления состоянием системы;
• операции управления ходом выполнения программы.
Операции передачи данных
Наименование операции |
Описание |
Перемещение (MOV) |
Передача слова или блока данных от источника к приемнику |
Сохранение (ST) |
Передача слова из регистра процессора в память |
Загрузка (извлечение) LD |
Передача слова из памяти в регистр процессора |
Обмен |
Взаимный обмен данными между источником и приемником |
Очистка (начальная установка, сброс) (CLR) |
Передача слова, состоящего из всех нулей, в приемник |
Установка (SET) |
Передача слова, состоящего из всех единиц в приемник |
Запись в стек (PUSH) |
Передача слова из источника в верхнюю ячейку стека |
Извлечение из стека (POP) |
Передача слова из верхней ячейки стека в приемник |
В командах передачи данных должны быть специфицированы несколько параметров.
Во-первых, нужно определить расположение источника и приемника данных. И источник и приемник могут размещаться в памяти, в регистрах процессора или в системном стеке.
Во-вторых, должен быть задан объем передаваемых данных.
В-третьих, как и во всех прочих командах, адресующих операнды, необходимо специфицировать метод адресации.
Проблема выбора количества и специфики команд передачи данных, включаемых в набор команд процессора, — это всегда поиск определенного компромисса. Например, место расположения операнда — в памяти или в регистре — можно специфицировать либо в поле кода операции, либо в поле ссылки на операнд. Так, в системе команд ЭВМ семейства IBM S/370 насчитывается 12 инструкций передачи данных. Передача данных различной разрядности (8, 16, 32 или 64 бит) осуществляется разными инструкциями. Кроме того, передача регистр-регистр, регистр-память и память-регистр также выполняется командами с разными кодами операций. Например, LH - загрузка полуслова (16 бит) из памяти в регистр, STE - пересылка числа в формате с плавающей точкой из регистра в память). В вычислительных системах семейства VAX используется совсем другой подход. В архитектуре этого семейства предусмотрен единственный код операции MOV для всех команд пересылки, а в поле ссылки на операнд специфицируется, где именно находится операнд — в памяти или в регистре.
В отношении функций процессора операции пересылки данных являются, пожалуй, самыми простыми. Если и источник и приемник размещены в регистрах процессора, то выполнение операции сводится просто к пересылке данных из одного регистра в другой, причем данные при этом не выводятся из процессора. Если источник или приемник расположены в памяти, от процессора требуется выполнение некоторых дополнительных действий.
1. Вычислить адрес в памяти в соответствии с заданным в команде методом адресации.
2. Если адрес виртуальный, преобразовать его в физический адрес.
3. Определить, не находится ли адресуемый элемент данных в кэше.
4. Если нет, обратиться к блоку оперативной памяти.
