Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСИ.docx
Скачиваний:
84
Добавлен:
23.04.2019
Размер:
356.72 Кб
Скачать

4). Системы команд. Классификация систем команд: по выполняемым операциям, по направлению приема-передачи, по адресности.

Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самим процессором и большой частью недоступен программисту: например, при выборке из памяти очередной команды она помещается в регистр команд, к которому программист обратиться не может. (Имеются также регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы, например, управляющие регистры и теневые регистры дескрипторов сегментов. Этими регистрами пользуются в основном разработчики операционных систем).

Существуют также так называемые регистры общего назначения (РОН), представляющие собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например в строковых. РОН, не характерные для эпохи мейнфреймов типа IBM/370 стали популярными в микропроцессорах архитектуры X86 — i8085, i8086 и последующих.

Специальные регистры содержащат данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. Часть специальных регистров принадлежит устройству управления, которое управляет процессором путём генерации последовательности микрокоманд. Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб[4], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80x86 16 битов * 4 = 64 бита (8 байт)).

Характеристика системы команд процессора - Система команд - это набор допустимых для данного процессора управляющих кодов и способов адресации данных. Система команд жестко связана с конкретным типом процессора, поскольку определяется аппаратной структурой блока дешифрации команд, и обычно не обладает переносимостью на другие типы процессоров (хотя может иметь место совместимость “снизу-вверх” в рамках серии процессоров, как, например, в серии i80x86 ). С физической точки зрения код команды ничем не отличается от обычных данных в двоичном коде, размещенных в памяти вычислителя. Конкретный двоичный код воспринимается и обрабатывается процессором как команда в том случае, когда он попадает в процессор в фазе чтения кода команды. С логической точки зрения в двоичном коде команды существуют группы разрядов – поля – с различным функциональным назначением (рис. 3.3).

Рис. 3.3 Типовая структура формата команды:

1 - поле кода операции (КОП) объемом 1 или 2 байта;

2 - поле адресной части команды (АЧ) объемом от 1 до 4 байт.

На рис.3.3 показаны два основных поля в формате команды: КОП - код операции - двоичный код, однозначно указывающий процессору на выполнение конкретных действий (пересылка, сложение и т.п.), и определяющий при этом форму задания адресов операндов; АЧ - адресная часть - двоичное число, которое может представлять собой адрес (адреса) операндов, значение операнда, адрес следующей команды (адрес перехода, передачи управления ). Следовательно, формат команды – это совокупность таких ее характеристик, как количество, размер и назначение полей. Язык программирования, максимально приближенный к системе команд конкретного микропроцессора – это Ассемблер. В этом языке коду каждой команды МП поставлена в соответствие определенная мнемоника – краткое буквенное название команды, например: Пересылка данных – MOV (от англ. move)

Сложение – ADD

Переход по программе – JMP (от англ. jump) и т.д.

(!) Вспомнить примеры команд из лабораторных работ

Для программиста система команд представляется как минимально необходимый набор команд для реализации вычислений и управления ходом вычислительного процесса. В систему команд традиционно входят такие группы:

· пересылка данных (регистр-регистр, регистр-память, память-регистр, специфические команды типа память-память);все команды пересылки выполняют, по сути, копирование данных из ячейки-источника в ячейку-приемник;

· арифметические операции (+, –, *, : );

· логические операции (and, or, xor, not) и операции сдвига;

· ввод-вывод – специфические команды для передачи данных между процессором и устройствами ввода-вывода, размещенными в адресном пространстве ввода-вывода;

· передача управления – при выполнении такой команды процессор записывает в счетчик команд PC адрес следующей команды, взятый из адресной части текущей команды;

· специальные – останов, сброс, управление прерываниями, управление режимом пониженного энергопотребления и т.п.

Способ адресации – это способ получения процессором адреса операнда или перехода на основании информации из адресной части команды. Различают следующие основные способы адресации:

· прямая – адрес операнда или перехода содержится в АЧ команды;

· непосредственная – в АЧ команды содержится значение операнда;

· регистровая – в коде команды содержится указание на один или два регистра процессора, являющихся источниками операндов или приемником результата;

· косвенная регистровая – в коде команды содержится указание на какой-либо регистр процессора, содержимое которого при выполнении команды интерпретируется процессором как адрес ячейки памяти, содержащей операнд;

· косвенная базовая (иногда – индексная) – адрес операнда формируется (вычисляется) процессором в ходе выполнения команды как сумма содержимого одного из регистров и смещения (числа), задаваемого в команде, либо как сумма содержимого двух регистров. Таким образом, базовая или индексная формы адресации также являются разновидностью косвенной адресации.

Регистры, которые можно использовать для реализации косвенной адресации, часто называют указательнымирегистрами: в самом деле, они как бы “указывают” на ту ячейку памяти, в которой содержится операнд. Использование косвенной адресации более предпочтительно, поскольку такой подход позволяет создавать универсальные, легко перенастраиваемые (используется термин «переносимые»), и позиционно независимые программы. Применение прямой адресации “привязывает” программу к конкретным ячейкам памяти, и при этом резко снижается возможность ее использования в различных проектах. Важнейшая особенность косвенной адресации заключается в том, что адрес операнда должен формироваться в процессе выполнения программы (в то время, как в случае использования прямой адресации адреса всех операндов должны быть определены и указаны при написания текста программы).

Реализация основных способов адресации схематично показана на рис. 3.4.

Разновидностью косвенной адресации является стековая адресация с использованием содержимого регистра SP. При этом в процессе доступа к данным выполняется автоуменьшение или автоувеличение содержимого регистра SP. Подробнее стековая адресация будет рассмотрена далее.

Для обеспечения переносимости программ также используют относительную адресацию в командах передачи управления. При этом в адресной части команды содержится не абсолютный адрес перехода, а только смещение в байтах от текущего значения счетчика команд до адреса требуемой команды. Полный адрес перехода вычисляется процессором в ходе выполнения команды. Применение относительной адресации позволяет уменьшить объем программы.

Рис. 3.4. Схемы реализации основных способов адресации данных