Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры ВМСиС.doc
Скачиваний:
34
Добавлен:
21.09.2019
Размер:
671.23 Кб
Скачать

Коп младший байт адреса старший байт адреса

0 7 8 15 16 23

а)

К О П байт адреса

б)

Рис. 12. Примеры форматов команд прямой адресации

Прямая адресация наиболее проста. Она обеспечивает произвольный доступ к любой ячейки памяти в интервале всего адресного пространства. В большинстве небольших систем разрядность адреса 16, следовательно, прямая адресация обеспечит в них доступ к любой ячейке памяти в интервале 64Кб адресного пространства.Недостаток прямой адресации – способ не позволяет произвольно обращаться к большей памяти. Прямая адресация осталась, в основном, в малых вычислителях, в которых не требуется большая память. В ЭВМ прямая адресация применяется для работы внутри сегмента. Последовательность прохождения сигнала: процессор выбирает КОП, расшифровывает его и по признаку продолжения команды читает из ПЗУ следующие два байта, записывает их в регистр адреса , содержимое регистра адреса выставляет на шину адреса. По этому адресу выбирается ячейка из ОЗУ, после чего содержимое выбранной ячейки поступает в регистр входных данных процессора. Такая команда требует четыре цикла при выполнении. Прямая адресация считается основой для расширения и модификации адресов. По прямой адресации производится доступ и к внешним устройствам (портам) при выполнении операции ввода-вывода информации. Поскольку в формате команд лишь два байта, эта команда выполнится за три цикла.

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

КОП данные КОП младший байт данных старший байт данных

0 7 8 15 0 7 8 15 16 23

Рис.13. Примеры форматов команд непосредственной адресации

Основные ограничения на непосредственную адресацию – это сам операнд. Поскольку операнд должен храниться в памяти команд, невозможно оперативно его изменить. Отсюда команды применяются только для загрузки.

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

По текущему адресу команд из памяти команд (ПЗУ) выбирается код операции и записывается в регистр команд. КОП расшифровывается в устройстве управления процессором в первом цикле выполнения команды и формируется сигнал, подключающий к шине адреса содержимое одного из регистров процессора, содержащего искомый физический адрес. Во втором цикле по данному адресу производится чтение или запись данных в регистр процессора из ячейки памяти.

В старых разработках в качестве промежуточного ОЗУ применяли специальные схемы СОЗУ малой емкости. Число слов хранения в них 16-32. В тоже время разрядность таких СОЗУ соответствовала полной разрядности памяти данных (16,20). С появлением микропроцессора промежуточное ОЗУ начали размещать непосредственно на кристалле микропроцессора, поэтому связь кода команды с промежуточным ОЗУ – по внутренним сигналам процессора. Пользователь не ощущает этого промежуточного ОЗУ. На шине адреса появляется уже физический адрес. В отличие от прямой адресации, косвенная имеет следующие преимущества.

1) Формат команды короче, он занимает один байт. Адресная часть закодирована в коде операции. Количество адресов (объем промежуточного ОЗУ) уменьшилось, но команда занимает в памяти меньше места.

2)Любая команда прямой адресации требует нескольких обращений в память команд: КОП, адрес младший, адрес старший и адрес доступа к данным, т.е. минимум четыре цикла. Косвенная адресация обходится двумя циклами: КОП, физический адрес доступа к данным. В косвенной адресации, прежде чем воспользоваться ее, требуется определить содержимое памяти. В регистровую пару необходимо занести адрес начальной ячейки памяти данных. Если этого не сделать, обращение произойдет по нулевому адресу, либо по случайному адресу. При обращении к следующей ячейке содержимое регистровой пары следует увеличить (уменьшить) на единицу специальной командой. Разновидности косвенной регистровой адресации: автоинкрементная и автодекрементная. Обе созданы с целью уменьшить время модификации адреса А, возложив её на аппаратуру процессора. В случае автоинкрементной адресации она осуществляется после использования адреса А и сводится к увеличению А на А, где А – длина операнда в байтах – 1, 2, … . В случае автодекрементной адресации она осуществляется перед использованием адреса А и сводится к уменьшению А на А, где А – длина операнда в байтах – 1, 2, … .Команды косвенной адресации дают заметное преимущество, если массив включает пересылки данных более десяти. Кроме того, косвенная адресация легко вписывается в структуру цикла, прямая же нет.

5.2.Модификация адресов

С расширением адресного пространства ОЗУ встала проблема увеличения разрядности адреса без изменения типа процессора. С этой целью разрабатываются различные подходы к получению физического адреса при сохранении структуры самого процессора.

Страничная адресация: всё пространство основной памяти разделяется на страницы фиксированной емкости ЕСТР=2n (рисунок 2.13). Адрес А ячейки памяти формируется из двух полей: А=Р.D, Р – номер страницы (старшие разряды адреса), D – номер ячейки в странице (младшие разряды адреса). Номер страницы Р заносится и хранится в специальном регистре номера страницы РС в процессоре, адрес ячейки указывается в адресном поле D команды. Поле D интерпретируется как смещение относительно начала страницы. Формирование физического (исполнительного) адреса А, по которому производится обращение к основной памяти, осуществляется по схеме, представленной на рисунке 2.13. Длина поля Р – l бит, длина поля D – n бит, длина поля А – m = l +n бит.

Достоинства страничной адресации:

1) Обеспечивает перемещаемость программ и данных путем занесения номера текущей страницы в регистр РС. Программа остается неизменной,

2) Длина поля D небольшая n m и постоянная,

3 ) Расширение адресного пространства при небольшом адресном поле в команде.

Недостатки страничной адресации:

1) Сложности с организацией переходов в программе за пределы страницы. При таком переходе необходимо модифицировать содержимое регистра номера страницы в ЦП – Р:=Р+Р (или Р-Р), т. е. требуется выполнение дополнительных операций с регистром РС, что снижает быстродействие процессора;

2) Увеличивается длина программы – за счет модификации регистра Р, что также ведет к увеличению времени выполнения программы и снижению производительности процессора. Следует отметить, что регистр РС обычно загружается и модифицируется ОС;

3) Не эффективное использование ОП, т.к. распределение ОП между задачами осуществляется постранично, поэтому часть последней страницы может пустовать.

Избавиться от последнего недостатка можно, если снять ограничение на номер страницы – при страничной адресации он кратен 2k. В результате получаем третий способ – классическую относительную адресацию

.Относительная адресация. Адрес А ячейки памяти формируется путем суммирования двух полей:

А=BM+D, (2.4)

где BM - базовый адрес массива данных М - страницы ёмкостью 2n, D - смещение относительно начала массива М (рисунок 2.14). Отсюда название способа: относительная адресация. Базовый адрес BM указывается в специальном регистре процессора - базовом регистре, отсюда - второе название способа - базовая адресация. Смещение D указывается в адресной части команды. Формирование исполнительного адреса А осуществляется по схеме, представленной на рисунке 2.14.

Отличия от страничной адресации: БР – m-разрядный, для формирования адреса А используется сумматор. В современных ЭВМ для размещения базового адреса используется один из регистров общего назначения процессора. В этом случае адрес вычисляется по схеме, представленной на рисунке 2.15, т. е. по формуле:

А=[B]+D. (2.5)

В поле В команды указывается номер регистра локальной памяти , который используется в качестве базового регистра процессора (для хранения базового адреса массива). Вычисление относительного адреса А производится по формуле (2.5): базовый адрес BM извлекается из внутреннего регистра по номеру В и складывается со смещением D из адресной части команды. Здесь [В] – содержимое регистра с номером В. Сложение производится по схеме:

И так, страничная адресация является частным случаем относительной – при страничной адресации базовый адрес кратен 2n. Оба способа обеспечивают перемещаемость программ и данных, а также расширение адресного пространства до 2m.

Индексная адресация - используется для адресации элементов массивов (переменных с индексами): xiХ, Х={x0, x1, ..., xI}, i – порядковый номер элемента в массиве Х. Адрес элемента xi складывается из двух составляющих:

А=xi=BX+i, (6)

где BX – базовый (начальный) адрес массива Х, указывается в адресной части команды, i – индекс, указывается в специальном индексном регистре ЦП, xi - адрес элемента xi. В качестве индексного регистра можно использовать один из РОН локальной памяти ЛП. В этом случае вычисление адреса А осуществляется по формуле:

А=[Х]+ВХ, (7)

где - [Х] – индекс, извлеченный из индексного регистра с номером Х. Схема формирования адреса А представлена на рисунке 16.

Модификация индекса i осуществляется по схеме i=i  i, т.е. путём выполнения операций с индексными регистрами. Индексная адресация внешне похожа на относительную, однако между ними есть принципиальные отличия, вытекающие из их различного назначения: базовый адрес ВХ массива Х размещается не в регистре, а в адресном поле команды, индекс i не в адресном поле, а в индексном регистре.

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

Индексно-относительная адресация - совместное использование индексной и относительной адресации. Адрес А формируется как сумма трех величин:

А=[X]+ [B]+D, (8)

где: - [X] = i - индекс, BX=[B]+D =BМ+D – базовый адрес массива Х, [B] - базовый адрес массива данных, D - смещение.

С хема формирования адреса А представлена на рисунке 17.

Рисунок 2.17

С ложение в формуле (2.9) производится по схеме:

Неявная адресация - по умолчанию (по договорённости) известно положение одного из операндов. Используется с целью экономии адресного поля в формате команды: КО |1 А m .Схема выполнения операции: АС:=АС[А]. Первый операнд извлекается из регистра-аккумулятора АС по умолчанию, второй операнд – из памяти по адресу А, указанному в адресной части команды, над ними выполняется операция , заданная КО, и результат заносится в регистр АС.

Итак, рассмотренные способы адресации используются для адресации информации в адресном пространстве процессора, которое включает пространство регистров общего назначения процессора (РОН), пространство основной памяти и пространство устройств ввода-вывода. Размер адресного пространства и длина адреса, по которому производится обращение к элементам адресного пространства, связаны известным соотношением Е=2m, m - длина адреса. Отсюда следует, что для обращения, например, к байту памяти на адресный вход ОП необходимо подавать m - разрядный адрес А от источника запроса, например, от процессора.

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

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

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

51