Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Способы адресации






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

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

К основным способам адресации относятся следующие: прямая, непосредственная, косвенная, относительная.

Прямая адресация. Физический адрес операнда совпадает с кодом в адресной части команды (рис.1.9). Формальное обозначение:

Операнд i = (Аi),

где Аi – код, содержащийся в i -м адресном поле команды.

 
 

Выше при описании способов кодирования команд и расчете длины адресного поля предполагалось использование именно этого способа адресации.

Допускается использование прямой адресации как при обращении к основной, так и к регистровой памяти.

Непосредственная адресация. В команде содержится не адрес операнда, а непосредственно сам операнд (рис.1.10):

 
 

Операнд i = Аi.

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

Косвенная адресация (рис.1.11). Адресная часть команды указывает адрес ячейки памяти (рис.1.11, а) или номер регистра (рис.1.10, б), в которых содержится адрес операнда:

Операнд i = ((Аi)).

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


 

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

 
 

Косвенная адресация не применяется по отношению к операндам, находящимся в регистровой памяти.

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

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

Операнд i = (база i + смещение i).

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

Рассмотрим два примера.

1. Адресное поле коман­ды состоит из двух частей (рис.1.12): в одной указывается номер регистра, хранящего базовое значение адреса (начальный адрес сегмента), а в другом задается смещение, определяющее положение ячейки относительно начала сегмента. Именно такой способ представления адреса обычно и называют относительной адресацией.

 

 
 

2. Первая часть адресного поля команды также определяет номер базового регистра, а вторая содержит номер регистра, в котором находится смещение (рис.1.13). Такой способ адресации чаще всего
 
 

называют базово-индексным.

Главный недостаток относительной адресации – большое время вычисления физического адреса операнда. Но существенное преимущество этого способа адресации заключается в возможности создания " перемещаемых" программ – программ, которые можно размещать в различных частях памяти без изменения команд программы. То же относится к программам, обрабатывающим по единому алгоритму информацию, расположенную в различных областях ЗУ. В этих случаях достаточно изменить содержимое базового адреса начала команд программы или массива данных, а не модифицировать сами команды. По этой причине относительная адресация облегчает распределение памяти при составлении сложных программ и широко используется при автоматическом распределении памяти в мультипрограммных вычислительных системах.

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


Таблица 1.1

Критерий Адресация
Прямая Косвенная Относительная Базово- индексная Непосредст­­венная
ОЗУа) РП через ОЗУб) через РП
Время выборки операнда t ОЗУ t РП 2 t ОЗУ t ОЗУ+ t РП t ОЗУ+ t РП+ t РК+ t t ОЗУ+2 t РП+ t t РК
Длина поля адреса log2 V ОЗУ log2 V РП log2 V ОЗУ log2 V РП log2 V РП+ log2 V СЕГМ 4г) 2log2 V РП Lоперанда 3в)
Гибкость при адресации данных д)              

Принятые обозначения:

t ОЗУ – время считывания информации из ОЗУ; t РП – время считывания информации из РП; t РК – время считывания информации из регистра команд; t – время суммирования составных частей адреса; V ОЗУ – объем ОЗУ; V РП – объем РП; V СЕГМ – объем сегмента; L операнда – длина операнда.

Примечания:

а) используется, в основном, для адресации внешних устройств;

б) используется крайне редко;

в) зависит от длины операнда;

г) зависит от размера сегмента;

д) зависит от особенностей программы.


1.3. Цикл выполнения команды

 

Рассмотрим автоматическое выполнение команды в трехадресной ЭВМ с классической архитектурой. Структурная схема такой ЭВМ показана на рис.1.14.

Обработку команды можно разбить на ряд функционально завершенных действий (этапов), составляющих ее цикл (рис.1.15). Изучение цикла команды проведем при следующих начальных условиях и предположениях:

программа и операнды находятся в оперативном запоминающем устройстве (ОЗУ);

адрес ячейки ОЗУ, в которой находится выполняемая команда (k), зафиксирован на счетчике команд (СК);

команда считывается за одно обращение к ОЗУ;

команда, операнды и приемник результата используют прямую адресацию памяти.

Определим взаимодействие узлов и устройств ЭВМ на каждом этапе.

Первый этап – выборка исполняемой команды из ОЗУ. Для реализации этого этапа необходимо код со счетчика команд (СК) = k передать в ОЗУ, обратиться в ячейку ОЗУ с адресом k и содержимое этой ячейки, являющееся кодом этой команды, передать на регистр команд. Соответствующие передачи отмечены на рис.1.14 цифрой 1: передача кода СК на РА (регистр адреса) ОЗУ, дешифрация адреса на дешифраторе адреса (ДшА), считывание команды из ячейки (k) ОЗУ и передача ее в РК.

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

 


 
 


 
 

Сигнал с ДшКОп таким образом настраивает блок управления операциями (БУОп), что на его выходах формируются управляющие сигналы (УС i), которые необходимы для автоматического выполнения всего цикла команды вплоть до занесения в РК новой команды. Формирование УС i проходит на основе сигналов с датчика сигналов (ДС), который вырабатывает импульсы, равномерно распределенные по своим выходам. Регистр команд, дешифратор кода операции, блок управления операциями, датчик сигналов, счетчик команд составляют устройство управления.

Если данная команда не является командой перехода, то реализуется следующая последовательность этапов как продолжение первого.

Второй этап – выборка первого операнда (a). Необходимо код из поля адреса первого операнда – a из РК передать в ОЗУ, обратиться к ячейке с адресом a в оперативной памяти и код этой ячейки передать в АЛУ. Соответствующие передачи обозначены на рис.1.14 цифрой 2.

Третий этап – выборка второго операнда (b). Он аналогичен второму этапу. Соответствующие передачи на рис.1.14 отмечены цифрой 3.

Четвертый этап – выполнение операции в соответствии с полем кода операции команды. Еще в конце первого этапа коммутатор операций определил тип выполняемой команды. Операнды переданы в АЛУ на втором и третьем этапах. Блок управления операциями формирует управляющие сигналы, необходимые для выполнения данной операции в АЛУ. Результат выполненной в АЛУ операции сохраняется в его внутреннем регистре результата (РР), а признаки результата – в регистре признаков АЛУ. Соответствующие передачи и взаимодействия блоков обозначены на рис.1.14 цифрой 4.

Пятый этап – обращение к ОЗУ и запись по адресу c результата операции. Здесь код поля c регистра команд передается в ОЗУ на РА. Затем в ячейку ОЗУ с адресом c записывается результат операции, находящийся в регистре результата АЛУ. Признаки результата записываются из регистра признаков АЛУ в регистр флагов компьютера, из которого они передаются в БУОп, если очередная считанная в РК команда окажется командой условного перехода. Соответствующие передачи обозначены на рис.1.14 цифрой 5.

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

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

При выполнении команды перехода вышеизложенная последовательность этапов меняется. Допустим, в конце выполнения первого этапа дешифратор кода операции зафиксировал выполнение команды безусловного перехода. Эту ситуацию можно представить так: (k) = БП j, то есть код выполняемой команды выбран из ячейки с адресом k, это – команда безусловного перехода (БП), которая должна передать управление на выполнение команды, имеющей смещение j относительно текущей команды. В данном случае выполнение этапов со второго по четвертый блокируется, и выполнение команды безусловного перехода заключается в прибавлении значения j к счетчику команд.

В команде условного перехода нарушение естественного порядка выполнения программы (то есть передача кода k + j в СК) происходит только при выполнении определенного условия. Это условие характеризует результат, полученный командой, предшествующей команде условного перехода. Таким условием может быть, например, отрицательный результат или результат, равный нулю.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.