Типы команд
Команды пересылки данных
Команды арифметической и логической обработки
Команды арифметической и логической обработки
Логические операции и сдвиги
Команды управления потоком команд
Команды ввода/вывода
Форматы команд
Возможные структуры машинных команд
Способы адресации операндов
Непосредственная адресация
Прямая адресация
Косвенная адресация
Регистровая адресация
Косвенная регистровая адресация
Адресация со смещением
Относительная адресация
Базовая регистровая адресация
Базовая регистровая адресация
Индексная адресация
Страничная адресация

Лекция 5 по архитектуре компьютеров. Типы, форматы, структуры команд. Адресация

1. Типы команд

Тип
Назначение
Команды пересылки данных Обеспечивают передачу информации между
процессором и ОП, внутри процессора и между
ячейками памяти.
Команды арифметической и Обеспечивают арифметическую и логическую
логической обработки
обработку информации в различных формах ее
представления
Команды работы со строками Пересылки, сравнения и поиск строк (В
большинстве машин имитируются за счет
других команд).
Команды преобразования
Преобразование из десятичной системы
счисления в двоичную или перевод 8разрядного кода символа из кодировки ASCII в
кодировку EBCDIC
Управление потоком команд Безусловные и условные переходы, вызовы
процедур и возвраты
Системные операции
Системные вызовы, команды управления
виртуальной памятью и т. д.
Команды ввода/вывода
Системные вызовы, команды управления
1
виртуальной памятью и т. д.

2. Команды пересылки данных

Наиболее распространенный тип машинных команд.
В таких командах должна содержаться следующая
информация:
адреса источника и получателя операндов;
длина подлежащих пересылке данных (вбайтах или
словах), заданная явно или косвенно;
способ адресации каждого из операндов.
Пересылочные операции внутри процессора имеют тип
«регистр-регистр». Передачи между процессором и памятью
относятся к типу «регистр-память», а пересылки в памяти— к
типу «память-память».
2

3. Команды арифметической и логической обработки

Для
каждой
формы
представления
чисел
предусматривается некий стандартный набор операций.
Выполнение
арифметических
сопровождается формированием в
характеризующих этот результат.
и
логических
АЛУ признаков
Часто фиксируемые признаки:
Z (Zero) – нулевой результат;
N (Negative) – отрицательный результат;
V(oVerflow) – переполнение разрядной сетки;
С (Carry) – наличие переноса.
3
обычно
операций
(флагов),

4. Команды арифметической и логической обработки

Стандартный
набор
операций над целыми числами :
• двухместные
арифметические
операции (+, -, *, /);
• одноместные арифметические
операции (-, abs);
• операции сравнения (=, <>, >, <,
<=, >=).
Часто дополняется такими
операциями,
как
вычисление
остатка от целочисленного деления,
сложение
с
учетом
переноса,
вычитание
с
учетом
заема,
увеличение значения операнда на
единицу (инкремент), уменьшение
значения операнда на единицу
(декремент).
4
Стандартный
набор
операций над работы с числами,
представленными в форме с
плавающей запятой
• основные
арифметические
операции;
• операции сравнения;
• операции преобразования:
формы представления (между
фиксированной и плавающей
запятой),
формата
представления

одинарной
и
двойной
точностью).

5. Логические операции и сдвиги

Минимальный набор поддерживаемых логических операций – это
«НЕ»,«И», «ИЛИ» и сложение по модулю 2.
5

6. Команды управления потоком команд

Три типа команд, способных изменить
вычислений:
• безусловные переходы;
• условные переходы (ветвления);
• вызовы процедур и возвраты из процедур.
6
последовательность

7. Команды ввода/вывода

Могут быть подразделены на команды управления периферийным
устройством (ПУ), проверки его состояния, ввода и вывода.
В современных персональных компьютерах ис-пользуются три
различные схемы ввода-вывода:
1.Программируемый ввод-вывод с активным ожиданием.
2.Ввод-вывод с управлением по прерываниям.
3.Ввод-вывод с прямым доступом к памяти.
7

8. Форматы команд

Типовая команда, в общем случае, должка указывать:
• подлежащую выполнению операцию;
• адреса исходных данных (операндов), над которыми выполняется
операция;
• адрес, по которому должен быть помещен результат операции.
В соответствии с этим команда состоит из двух частей: операционной и
адресной.
Формат команды определяет ее структуру, то есть количество
двоичных разрядов, отводимых под всю команду, а также количество н
расположение отдельных полей команды. Полем называется совокупность
двоичных разрядов, кодирующих составную часть команды.
8

9. Возможные структуры машинных команд

Адресность – количество адресов, включаемых в адресную часть
команды
9

10. Способы адресации операндов

Исполнительный адрес операнда (Амп) – двоичный код номера
ячейки памяти, служащей источником или приемником операнда.
Адресный код команды (АК) – двоичный код в адресном поле
команды, из которого необходимо сформировать исполнительный адрес
операнда,
Способ адресации — это способ формирования исполнительного
адреса операнда по адресному коду команды. Как правило определяется
кодом операции, но может быть задан явно. В таком случае операционная
часть команды может содержать не только поле кода операции (КОП), но и
поле для задания способа адресации (СА).
В современных ЭВМ обычно имеется возможность приложения
нескольких различных способов адресации операндов к одной и той же
операции.
10

11. Непосредственная адресация

Семантика
Пример
команды
Add
Regs[R4]←Regs[R4]
R4,#3
+3
При непосредственной адресации
(НА) в адресном поле команды вместо
адреса содержится непосредственно сам
операнд. Этот способ может применяться
при
выполнении
арифметических
операции, операций сравнения, а также для
загрузки констант в регистры.
Непосредственная
адресация
позволяет
повысить
скорость
выполнения операции, так как в этом случае вся команда, включая
операнд, считывается из памяти одновременно и на время выполнения
команды хранится в процессоре в специальном регистре команд (РК).
Однако при использовании непосредственной адресации появляется
зависимость кодов команд от данных, что требует изменения программы
при каждом изменении непосредственного операнда.
11

12. Прямая адресация

Исполнительный
адрес
операнда
совпадает с кодом в адресной части
команды.
Пример
команды
Add
R1,(1001)
12
Семантика
Regs[R1]←Regs[R1]
+ Mem[1001]
Недостатки:
• ограниченный
размер
адресного
пространства, так как для адресации к
памяти
большой
емкости
нужно
«длинное» адресное поле;
• адрес, указанный в команде, не может
быть изменен в процессе вычислений,
что ограничивает возможности по
произвольному
размещению
программы в памяти.

13. Косвенная адресация

Пример
команды
Add
R1,@(R3)
13
Семантика
Regs[R1]←Regs[R1]+
Mem[Mem[1001]]
В ограниченном адресном поле
команды указывается адрес ячейки,
содержащей полноразрядный исполнительный адрес операнда
Содержимое адресного поля команды
остается неизменным, в то время как
косвенный адрес в процессе выполнения
программы
можно
изменять.
Это
позволяет проводить вычисления, когда
адреса операндов заранее неизвестны и
появляются лишь в процессе решения
задачи.
Недостатки:
• необходимость в двукратном обращении
к
памяти:
сначала
для
извлечения адреса операнда, а затем
для обращения к операнду;
• задействуется лишняя ячейка памяти
для хранения исполнительного адреса
операнда..

14. Регистровая адресация

Аналог прямой адресации с той
разницей,
что
адресное
поле
инструкции указывает не на ячейку
памяти, а на регистр процессора.
Преимущества:
• короткое
адресное
поле
в
команде;
• и исключение обращений к
памяти
Недостаток:
возможности по использованию
ограничены малым числом РОН и
составе процессора.
Пример
команды
Add
R4,R3
14
Семантика
Regs[R4]←Regs[R4]+ Regs[R3]

15. Косвенная регистровая адресация

Пример
команды
Семантика
Add
Regs[R4]←Regs[R4] +
R4,(R1) Mem[Regs[R1]]
15
Косвенная
адресация,
где
исполнительный адрес операнда
хранится не в ячейке основной
памяти, а в регистре процессора.
Достоинства и ограничения
косвенной регистровой адресации те
же, что и у обычной косвенной
адресации, но благодаря тому, что
косвенный адрес хранится не в
памяти, а в регистре, для доступа к
операнду
требуется
на
одно
обращение к памяти меньше.

16. Адресация со смещением

При адресации со смешением
исполнительный
адрес
формируется
в
результате
суммирования
содержимого
адресного
поля
команды
с
содержимым
одного
или
нескольких регистров процессора.
Семантика
Пример
команды
Add
Regs[R4]←Regs[R4]
R4,100(R1)
+ Mem[100+Regs[R1]]
16
Адресация
со
смещением
предполагает, что адресная часть команды
включает в себя как минимум одно поле
(Ак). Константа может представлять собой
некий базовым адрес, к которому
добавляется хранящееся в регистре
смещение. Допустим и противоположный
подход: базовый адрес находится в
регистре процессора, а в поле Ак
указывается смещение относительно этого
адреса.

17. Относительная адресация

Для
получения
исполнительного
адреса операнда содержимое подполя Ак
команды складывается с содержимым
счетчика команд. В момент вычисления
исполнительного адреса операнда в
счетчике команд может уже быть
сформирован адрес следующей команды,
что нужно учитывать при выборе
величины смещения. Обычно подполе Ак
трактуется как двоичное число в
дополнительном коде.
Главное достоинство данного способа
адресации состоит в том, что он делает
программу перемещаемой в памяти:
независимо от текущего расположения
программы в адресном пространстве
взаимное положение команды и операнда
остается неизменным.
17

18. Базовая регистровая адресация

Регистр,
называемый
базовым,
содержит полноразрядный адрес, а
подполе АС, - смешение относительно
этого адреса. Ссылка на базовый регистр
может быть явной или неявной.
Базовую
регистровую
адресацию
обычно используют для доступа к
элементам массива, положение которого в
памяти в процессе вычислений может
меняться. В базовый регистр заносится
начальный адрес массива, а адрес
элемента массива указывается в подполе
АС
команды
в
виде
смещения
относительно печатного адреса массива.
Достоинство данного способа адресации в
том, что смещение имеет меньшую длину,
чем полный адрес, и это позволяет
сократить длину адресного поля команды.
18

19. Базовая регистровая адресация

Регистр,
называемый
базовым,
содержит полноразрядный адрес, а
подполе АС, - смешение относительно
этого адреса. Ссылка на базовый регистр
может быть явной или неявной.
Более типичен случаи, когда в роли
базового регистра выступает один из
регистров общего назначения, тогда его
номер явно указывается в подполе R
команды.
Базовую регистровую адресацию обычно используют для доступа к
элементам массива, положение которого в памяти в процессе вычислений
может меняться. В базовый регистр заносится начальный адрес массива, а
адрес элемента массива указывается в подполе АС команды в виде
смещения относительно печатного адреса массива. Достоинство данного
способа адресации в том, что смещение имеет меньшую длину, чем полный
адрес, и это позволяет сократить длину адресного поля команды.
19

20. Индексная адресация

При индексной адресации (ИА)
подполе АС содержит адрес ячейки
памяти, а регистр (указанный явно или
неявно) – смещение относительно этого
адреса.
Поскольку
при
индексной
адресации
в
поле
АС
находится
полноразрядный адрес ячейки памяти,
играющий роль базы, длина этого поля
больше, чем при базовой регистровой
адресации.
20

21.

В большинстве ЭВМ увеличение или уменьшение содержимого индексного регистра до или после обращения
к нему осуществляется автоматически как часть машинного цикла. Такой прием называется автоиндексированием.
Если для индексном адресации используются специально выделенные регистры, автоиндексирование может
производиться неявно и автоматически. При задействовании для хранения индексов регистров общего назначения
необходимость операции автоиндексировання должна указываться в команде специальным битом.
Автоиндексирование с увеличением содержимого индексного регистра носит название автоинкрементной
адресации и может быть описано следующим образом:
АИСП = АС + (R), или , АИСП = АС + (R).
В первом варианте, увеличение содержимого индексного регистра происходит после формирования
исполнительного адреса, и этот способ называется постинкрементным автоиндексированием. Во втором случае
сначала производится увеличение содержимого индексного регистра, и уже новое значение используется для
формирования исполнительного адреса. Тогда говорят о преинкрементном автоиндексировании.
Аналогично реализуется автоиндексирование с уменьшением содержимого индексного регистра. Оно носит
название автодекрементной адресации. Здесь также возможны два варианта, отличающиеся последовательностью
выполнения операции уменьшения содержимого индексного регистра и вычисления исполнительного адреса;
постдекрементное автоиндексирование и предекрементное автоиндексирование
Интересным и весьма полезным является еще один вариант индексной адресации — индексная адресация с
масштабированием и смещением: содержимое индексного регистра умножается на масштабный коэффициент и
суммируется с АС. Масштабным коэффициент может принимать значения 1, 2, 4 или 8. для чего в адресной части
команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах
фирмы Intel.
21

22. Страничная адресация

.
22
English     Русский Правила