- •Основные принципы построения цифровых вычислительных машин
- •2.Понятие «архитектура компьютера». Уровни абстракции. Уровни детализации структуры вычислительной машины.
- •3.Основные типы архитектур: архитектура с полным набором команд, архитектура с сокращенным набором команд, архитектура с командными словами сверхбольшой длины, стековая, регистровая архитектуры
- •Форматы команд.
- •Форматы операндов, способы представления данных.
- •Формы с плавающей и фиксированной точкой
- •Формы представления чисел со знаками
- •Форматы чисел в эвм
- •Классификация команд, адресность.
- •Основные методы адресации операндов.
- •Индексация
- •8. Стандартный цикл выполнения команд, структура цикла.
- •Массивно-параллельные системы (mpp)
- •Симметричные мультипроцессорные системы (smp)
- •Системы с неоднородным доступом к памяти (numa)
- •Параллельные векторные системы (pvp)
- •Кластерные системы
- •Закон Амдала
Основные методы адресации операндов.
На рис. 4.1 представлены все основные методы адресации операндов.
Метод адресации |
Пример команды |
Смысл команды метода |
Использование |
Регистровая |
Add R4,R3 |
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 |
Для индексации массивов |
Рис. 4.1. Методы адресации
Подразумеваемый адрес
В команде может не содержаться явных указаний об адресе участвующего в операции операнда или адресе, по которому должен быть размещен результат операции, но этот адрес подразумевается.
Непосредственная адресация
В команде содержится не адрес операнда, а непосредственно сам операнд. При непосредственной адресации не требуется обращения к памяти для выборки операнда и ячейки памяти для его хранения. Это способствует уменьшению времени выполнения программы и занимаемого ею объема памяти. Непосредственная адресация удобна для хранения различного рода констант.
Прямая адресация
Адрес указывается непосредственно в виде некоторого значения, все ячейки располагаются на одной странице. Преимущество этого способа в том, что он самый простой, а недостаток — в том, что разрядность регистров общего назначения процессора должна быть не меньше разрядности шины адреса процессора.
Относительная (базовая) адресация
При этом способе адресации исполнительный адрес определяется как сумма адресного кода команды и базового адреса, как правило хранящегося в специальном регистре — регистре базы.
Относительная адресация позволяет при меньшей длине адресного кода команды обеспечить доступ к любой ячейке памяти. Для этого число разрядов в базовом регистре выбирают таким, чтобы можно было адресовать любую ячейку оперативной памяти, а адресный код команды используют для представления лишь сравнительно короткого «смещения». Смещение определяет положение операнда относительно начала массива, задаваемого базовым адресом.
Укороченная адресация
В адресном поле командного слова содержатся только младшие разряды адресуемой ячейки. Дополнительный указательный регистр.
Адресация с регистром страницы, является примером сокращённой адресации. При этом, вся память разбивается на блоки-страницы. Размер страницы диктуется длиной адресного поля.
Регистровая адресация
Регистровая адресация является частным случаем укороченной. Применяется, когда промежуточные результаты хранятся в одном из рабочих регистров центрального процессора. Поскольку регистров значительно меньше чем ячеек памяти, то небольшого адресного поля может хватить для адресации.
Косвенная адресация
Адресный код команды в этом случае указывает адрес ячейки памяти, в которой находитсяадрес операнда или команды. Косвенная адресация широко используется в малых и микроЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата команды (совместно используются регистровая и косвенная адресация).
Адресация слов переменной длины
Эффективность вычислительных систем, предназначенных для обработки данных, повышается, если имеется возможность выполнять операции со словами переменной длины. В этом случае в машине может быть предусмотрена адресация слов переменной длины, которая обычно реализуется путем указания в команде местоположения в памяти начала слова и его длины.
Стековая адресация
Стековая память, реализующая безадресное задание операндов, особенно широко используется в микропроцессорах и Мини-ЭВМ.
Автоинкрементная и автодекрементная адресации
Поскольку регистровая косвенная адресация требует предварительной загрузки регистра косвенным адресом из оперативной памяти, что связано с потерей времени, такой тип адресации особенно эффективен при обработке массива данных, если имеется механизм автоматического приращения или уменьшения содержимого регистра при каждом обращении к нему. Такой механизм называется соответственно автоинкрементной и автодекрементной адресацией. В этом случае достаточно один раз загрузить в регистр адрес первого обрабатываемого элемента массива, а затем при каждом обращении к регистру в нем будет формироваться адрес следующего элемента массива.
При автоинкрементной адресации сначала содержимое регистра используется как адрес операнда, а затем получает приращение, равное числу байт в элементе массива. При автодекрементной адресации сначала содержимое указанного в команде регистра уменьшается на число байт в элементе массива, а затем используется как адрес операнда.
Автоинкрементная и автодекрементная адресации могут рассматриваться как упрощенный вариант индексации — весьма важного механизма преобразования адресных частей команд и организации вычислительных циклов, поэтому их часто называют автоиндексацией.
