Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Методы адресации и типы данных. Типы команд. Команды управления потоком команд.

Поиск

 

Методы адресации

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

В таблице 3 представлены основные методы адресации операндов. Адресация непосредственных данных и литеральных констант обычно рассматривается как один из методов адресации памяти (хотя значения данных, к которым в этом случае производятся обращения, являются частью самой команды и обрабатываются в общем потоке команд). Адресация регистров, как правило, рассматривается отдельно. В данном разделе методы адресации, связанные со счетчиком команд (адресация относительно счетчика команд) рассматриваются отдельно. Этот вид адресации используется главным образом для определения программных адресов в командах передачи управления.

В таблице 3 на примере команды сложения (Add) приведены наиболее употребительные названия методов адресации, хотя при описании архитектуры в документации разные производители используют разные названия для этих методов. В этой таблице знак "(" используется для обозначения оператора присваивания, а буква М обозначает память (Memory). Таким образом, M[R1] обозначает содержимое ячейки памяти, адрес которой определяется содержимым регистра R1.

Использование сложных методов адресации позволяет существенно сократить количество команд в программе, но при этом значительно увеличивается сложность аппаратуры. Возникает вопрос, а как часто эти методы адресации используются в реальных программах? На рис. 34 представлены результаты измерений частоты использования различных методов адресации на примере трех популярных программ (компилятора с языка С и GCC, текстового редактора TeX и САПР Spice), выполненных на компьютере VAX.

 

Таблица 3 – Методы адресации

Метод адресации Пример команды Смысл команды Использование
Регистровая Add R4,R5 R4(R4+R5 Требуемое значение в регистре
Непосредственная или литеральная Add R4,#3 R4(R4+3 Для задания констант
Базовая со смещением Add R4,100(R1) R4(R4+M[100+R1] Для обращения к локальным переменным
Косвенная регистровая Add R4,(R1) R4(R4+M[R1] Для обращения по указателю или вычисленному адресу
Индексная Add R3,(R1+R2) R3(R3+M[R1+R2] Иногда полезна при работе с массивами: R1 - база, R3 - индекс
Прямая или абсолютная Add R1,(1000) R1(R1+M[1000] Иногда полезна для обращения к статическим данным
Косвенная Add R1,@(R3) R1(R1+M[M[R3]] Если R3-адрес указателя p, то выбирается значение по этому указателю
Автоинкрементная Add R1,(R2)+ R1(R1+M[R2] R2(R2+d Полезна для прохода в цикле по массиву с шагом: R2 - начало массива В каждом цикле R2 получает приращение d
Автодекрементная Add R1,(R2)- R2(R2-d R1(R1+M[R2] Аналогична предыдущей. Обе могут использоваться для реализации стека
Базовая индексная со смещением и масштабированием Add R1, 100(R2)[R3] R1(R1+M[100+R2+R3*d] Для индексации массивов

 

1.Косвенная (1%, 6%, 1%)
     
2. Базовая индексация со
смещением и масштабированием
(0%, 16%, 6%)
     
3. Регистровая (24%, 3%, 11%)
     
4. Непосредственная
(43%, 17%, 39%)
     
5. Базовая со смещением
(32%, 55%, 40%)
     

 

Рис. 34 – Частота использования различных методов адресации на программах TeX, Spice, GCC

Из этого рисунка видно, что непосредственная адресация и базовая со смещением доминируют.

При этом основной вопрос, который возникает для метода базовой адресации со смещением, связан с длиной (разрядностью) смещения. Выбор длины смещения, в конечном счете, определяет длину команды. Результаты измерений показали, что в подавляющем большинстве случаев длина смещения не превышает 16 разрядов.

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

Важным вопросом построения любой системы команд является оптимальное кодирование команд. Оно определяется количеством регистров и применяемых методов адресации, а также сложностью аппаратуры, необходимой для декодирования. Именно поэтому в современных RISC-архитектурах используются достаточно простые методы адресации, позволяющие резко упростить декодирование команд. Более сложные и редко встречающиеся в реальных программах методы адресации реализуются с помощью дополнительных команд, что, вообще говоря, приводит к увеличению размера программного кода. Однако такое увеличение длины программы с лихвой окупается возможностью простого увеличения тактовой частоты RISC-процессоров. Этот процесс мы можем наблюдать сегодня, когда максимальные тактовые частоты практически всех RISC-процессоров (Alpha, R4400, Hyper SPARC и Power2) превышают тактовую частоту, достигнутую процессором Pentium.

Типы команд

Команды традиционного машинного уровня можно разделить на несколько типов, которые представлены ниже в таблице 4.

 

Таблица 4 – Методы адресации

Тип операции Примеры
Арифметические и логические Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое умножение и т.д.
Пересылки данных Операции загрузки/записи
Управление потоком команд Безусловные и условные переходы, вызовы процедур и возвраты
Системные операции Системные вызовы, команды управления виртуальной памятью и т.д.
Операции с плавающей точкой Операции сложения, вычитания, умножения и деления над вещественными числами
Десятичные операции Десятичное сложение, умножение, преобразование форматов и т.д.
Операции над строками Пересылки, сравнения и поиск строк


Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 265; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.71.13 (0.008 с.)