Форматы машинных слов и система команд ЭВМ
В цифровых ЭВМ производится обработка информации, представленной в числовом виде. Информацией внутри ЭВМ являются команды и данные, которые необходимо распознать и обработать. В большинстве компьютеров данные и команды обрабатываются по словам, иногда по байтам. Длина слова определяется числом разрядов (битов) из которых состоит слово. Формат слова отображает организацию (назначение) отдельных разрядов в слове. Слова часто делят на слоги по одному байту в слове.
Данные и команды могут быть представлены одним либо несколькими словами. При использовании только одного слова для представления информации каждое слово должно содержать код операции, адрес в памяти и операнд. На рисунке 2.2 показан пример такого слова.
Рисунок 2.2 – Типовой формат машинного слова |
Операционная часть (иначе она еще называется кодом операции — КОП) указывает, какое действие необходимо выполнить с данными. Адресная часть описывает, где используемая информация хранится и куда поместить результат. Совокупность всех кодов операции образует набор команд процессора. Количество команд в ЭВМ равно 2n1, где n1- количество разрядов для представления команды. Современные ЭВМ выполняют от 20 до нескольких сотен команд: арифметических, логических, сдвиговых, а также команд управления периферийными устройствами. У некоторых немногочисленных команд управления работой машины адресная часть может отсутствовать, например, в команде останова; но операционная часть имеется всегда.
В зависимости от количества возможных операндов команды могут быть одно-, двух- и трехадресные. Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. В трехадресной команде указываются адреса первого и второго операндов, а также адрес, куда следует поместить результат операции. Трехадресная команда легко расшифровывается и удобна в использовании, но с ростом объемов ОЗУ ее длина становится непомерно большой. Поэтому были разработаны двухадресные компьютеры, длина команды в которых сокращена за счет исключения адреса записи результата. В таких ЭВМ результат операции остается в специальном регистре (аккумуляторе) и пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов. Дальнейшее упрощение команды привело к созданию одноадресных машин.
Диапазон чисел, представляемых в компьютере, определяется длиной слова данных и используемым способом кодирования. При использовании двоичной системы счисления, максимальное число равно 2(n3 – 1), где n3 – количество разрядов, выделенных для кодирования числа. Один разряд предназначается для фиксации знака числа: 0 – положительное, 1 – отрицательное. Отрицательное число может быть выражено не только с помощью знака и значения, но его можно представить также в виде дополнительного кода.
При представлении дробных чисел применяется использование чисел с фиксированной и плавающей запятой. В первом случае программист сам выбирает диапазон изменения чисел. Причем в процессе вычислений этот диапазон не должен быть превышен. Это представляет в ряде случаев определенные трудности. Поэтому во многих ВМ предусматривается возможность обработки чисел с плавающей запятой. Число в этом случае выражается порядком и мантиссой (полулогарифмическая форма).
CISC- и RISC-процессоры
По системе команд и архитектуре различают 2 вида процессоров (компьютеров):
1) с полным набором инструкций — CISC (Complete Instruction Set Computer);
2) с сокращенной системой команд — RISC (Reduced Instruction Set).
Такие процессоры обычно имеют набор однородных регистров универсального назначения, и их система команд отличается относительной простотой.
Стратегия CISC-архитектуры формировалась в большой степени по желанию программистов иметь в своем распоряжении как можно больший набор команд для упрощения программирования. За первое десятилетие компьютерной эры список команд ЭВМ расширился от нескольких десятков до нескольких сотен.
Для CISC-процессоров характерны следующие признаки:
1) небольшое число регистров общего назначения;
2) большое количество машинных команд;
3) наличие сложных (многотактных) команд, функционально аналогичных операторам языков программирования высокого уровня;
4) большое количество способов адресации,
5) большое количество форматов команд различной разрядности;
6) преобладание двухадресного формата команд;
7) наличие команд обработки типа регистр-память.
Использование CISC-архитектуры упрощает компиляцию программ и уменьшает размеры исполняемых модулей. Но в архитектуре CISC плохо реализуются новейшие технические решения по повышению быстродействия процессоров. Это использование конвейерной, суперконвейерной и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.
Стратегия RISC архитектуры формировалась исходя из требований достижения максимальной производительности компьютера. По этой причине главными требованиями архитектуры RISC являлись следующие:
1) любая операция должна выполняться за один такт;
2) система команд должна содержать минимальное количество наиболее часто используемых команд (несколько десятков) одинаковой длины;
3) операции обработки данных реализуются только в формате регистр-регистр. Обмен между регистрами и памятью выполняется только командами загрузки и записи.
В дальнейшем эти требования были несколько смягчены. Выполнение команды за один такт стало трактоваться как загрузка конвейера команд в темпе "команда за такт". Набор команд современных RISC-процессоров возрос и содержит до 150 команд и более.
Незыблемым для архитектуры RISC остается только требование: обработка данных ведется только командами в формате регистр-регистр.
Для архитектуры характерны следующие признаки:
1) наличие внутри процессора достаточно большого файла регистров общего назначения (32 и более регистров);
2) использование для обработки информации трехадресных регистровых команд;
3) команды регистр-память применяются только для загрузки внутренних регистров из памяти и сохранения содержимого регистров общего назначения в памяти,
Использование в программе только простых команд в формате регистр-регистр позволяет увеличить скорость выполнения большинства вычислительных задач в 2-3 раза. В процессе научных исследований было установлено, что в 80% кода программ содержится около 20% простейших команд, а удаление из системы команд сложных операций позволяет уменьшить объём аппаратуры процессора примерно в 10 раз без ощутимого снижения быстродействия. Поэтому в основе современных высокопроизводительных ЭВМ заложена архитектура RISC.