2.4. Способы адресации информации в ЭВМ
К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1617 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
34 35 36 37 38 39 40 41 42 43 44 45
Существует два различных принципа поиска операндов в памяти: ассоциативный и адресный.
Ассоциативный поиск операнда (поиск по содержанию ячейки) предполагает просмотр содержимого всех ячеек памяти для выявления кодов, содержащих заданный командой ассоциативный признак. Эти коды и выбираются из памяти в качестве искомых операндов.
Адресный поиск предполагает, что искомый операнд извлекается из ячейки, номер которой формируется на основе информации в адресном поле команды.
Ниже мы будем рассматривать только реализацию адресного принципа поиска операнда.
Следует различать понятия "адресный код" в команде Ак и "исполнительный (физический) адрес" АИ.
Адресный код — это информация об адресе операнда, содержащаяся в команде.
Исполнительный адрес - это номер ячейки памяти, к которой производится фактическое обращение. В современных ЭВМ адресный код, как правило, не совпадает с исполнительным адресом.
Таким образом, способ адресации можно определить как способ формирования исполнительного адреса операнда Аи по адресному коду команды Ак.
Способов адресации существует много. Параметры процесса обработки информации существенно зависят от выбранного способа адресации. Одни способы адресации позволяют увеличить объём адресуемой памяти без удлинения команды, но снижают скорость выполнения операции, другие ускоряют операции над массивами данных, третьи - упрощают работу с подпрограммами и т. д.
В системах команд современных ЭВМ часто предусматривается возможность использования нескольких способов адресации операндов для одной и той же операции. Для указания способа адресации в некоторых системах команд выделяется специальное поле в команде - «метод» (указатель адресации УА), (рис. 2.3,а). В этом случае любая операция может выполняться с любым способом адресации, что значительно упрощает программирование.
Рис.2.3. Общая структура команды: а) с указателем метода адресации; б) без указателя метода адресации
Если только небольшая часть операций должна работать с различными способами адресации, то в команде поле УА не выделяется, а способ адресации определяется по коду операции, длина которого при этом возрастает (рис. 2.3,6).
Способ адресации операнда определяется многими характеристиками. Многообразие способов адресации обусловлено сочетанием различных значений этих характеристик. Укажем некоторые из этих характеристик и рассмотрим наиболее употребляемые способы адресации.
Вспомним некоторые важные для этой темы понятия и введем необходимые обозначения.
Адресуемые в командах операнды хранятся в основной памяти (ОП) и регистровой памяти (РП), (рис. 2.4).
Рис.2.4. Памяти для хранения адресуемых операндов
Каждая память (РП и ОП) имеет самостоятельную нумерацию ячеек (регистров), самостоятельные средства адресования. Пусть:
m - длина многоразрядного двоичного кода, хранимого одной ячейкой
(регистром);
nA - длина двоичного кода адреса ячейки (Аи);
М - емкость памяти, количество ячеек в адресуемом пространстве памяти. Обычно М = 2Na ячеек.
Регистровую память и ОП можно описать следующими параметрами:
Мрп - кол-во регистров в РП;
mрп - разрядность регистра;
АиРП - исполнительный адрес в РП;
АиОП — исполнительный адрес в ОП.
Классификация способов адресации по наличию адресной информации в команде
Явная и неявная адресация
При явной адресации операнда в команде есть поле адреса этого операнда, в котором задается адресный код Ак. Большинство методов адресации являются явными.
При неявной адресации адресное поле в команде отсутствует, адрес операнда подразумевается кодом операции.
Метод неявной адресации операндов используется во всех процессорах. Основное его назначение — уменьшение длины команды за счет исключения части адресов. При этом методе код операции точно задает адрес операнда. Например, из команды исключается адрес приемника результата. При этом подразумевается, что результат в этой команде помещается на место второго операнда.
Классификация способов адресации по кратности обращения в память
Широко используются следующие методы адресации операнда с различной кратностью обращения (г) в память:
1. Непосредственная (г = 0).
2. Прямая (г = 1).
3. Косвенная (г > 2).
Непосредственная адресация операнда
При этом способе операнд располагается в адресном поле команды. Обращение к РП или ОП не производится. Таким образом, уменьшается время выполнения операции, сокращается объем памяти. Непосредственная адресация удобна для задания констант, длина которых меньше или равна длине адресного поля команды.
Прямая адресация операндов
При этом способе (рис. 2.5) адресации обращение за операндом в РП или ОП производится по адресному коду в поле команды, т.е. исполнительный адрес операнда совпадает с адресным кодом команды (Аи = Ак).
Рис.2.5. Схема прямой адресации: а) к регистровой памяти; б) к основной памяти
Обеспечивая простоту программирования, этот метод имеет существенные недостатки, так как для адресации к ячейкам памяти большой емкости (число адресов М велико) требуется «длинное» адресное поле в команде. Прямая адресация используется широко в сочетании с другими способами адресации. В частности, вся адресация к «малой» регистровой памяти ведется только с помощью прямой адресации.
Косвенная адресация операндов
При этом способе адресный код команды указывает адрес ячейки памяти, в которой находится не сам операнд, а лишь адрес операнда, называемый указателем операнда. Адресация к операнду через цепочку указателей (косвенных адресов) называется косвенной.
Адрес указателя, задаваемый программой, остается неизменным, а косвенный адрес может изменяться в процессе выполнения программы. Косвенная адресация, таким образом, обеспечивает переадресацию данных, т.е. упрощает обработку массивов и списковых структур данных, упрощает передачу параметров подпрограммам, но не обеспечивает перемещаемость программ в памяти (рис. 2.6,а).
Косвенная адресация так же широко используется в ЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата. В этом случае первый указатель должен располагаться в РП (рис. 2.6,6).
Рис.2.6. Схема косвенной адресации: а) указатель операнда и операнд расположены в одном адресном пространстве ОП; 6) указатель операнда расположен в РП, а операнд-в ОП
Классификация способов формирования исполнительных адресов ячеек памяти
Способы формирования адресов ячеек памяти (Аи) можно разделить на абсолютные и относительные.
Абсолютные способы формирования предполагают, что двоичный код адреса ячейки памяти — Аи может быть извлечен целиком либо из адресного поля команды (в случае прямой адресации), или из какой-либо другой ячейки (в случае косвенной адресации), никаких преобразований кода адреса не производится.
Относительные способы формирования Ац предполагают, что двоичный код адреса ячейки памяти образуется из нескольких составляющих: Б — код базы, И - код индекса, С - код смещения, используемых в сочетаниях (Б и С), (И и С). (Б,ИиС).
При относительной адресации применяются два способа вычисления Зд-реса Аи:
- суммирование кодов составляющих адреса;
- совмещение (конкатенация) кодов составляющих адреса. Суммирование кодов составляющих производится для случаев:
Аи= Б + С; Аи = И + С; Аи = Б + И + С.
Относительная адресация ячейки ОП Базирование способом суммирования
В команде адресный код Ак разделяется на две составляющие: Aб - адрес регистра в регистровой памяти , в котором хранится база Б (базовый адрес); С - код смещения относительно базового адреса (рис. 2.7).
Рис. 2.7. Схема формирования относительного адреса способом суммирования кодов базы и смещения: СМ - сумматор; РАОП - регистр адреса ОП;
Б - база (базовый адрес); С - смещение; Aб- адрес регистра базы;
nб - длина кода базы; nc - длина поля смешения
Для определения максимальной емкости ОП, адресуемой с помощью базирования, способом суммирования, определим длину кода исполнительного адреса
Так как nб = mрп и обычно больше, чем Пс, то справедливо следующее выражение:
т. е. максимальная адресуемая емкость ОП определяется разрядностью РП. Длина NаБ поля кода команды, задающего адрес регистра базы Aб, определяется через емкость РП Мрп, по формуле
Таким образом, можно определить количество NаБ двоичных разрядов в адресном поле команды, необходимое для формирования Аи с размещением базы в РП:
Приведенные выражения позволяют определить числовые значения параметров относительной адресации (базирование способов суммирования). Для того, чтобы увеличить Моп, необходимо выполнить условие:
С помощью метода относительной адресации удается получить так называемый перемещаемый программный модуль, который одинаково выполняется процессором независимо от адресов, в которых он расположен. Начальный адрес программного модуля (база) загружается, при входе в модуль, в базовый регистр. Все остальные адреса программного модуля формируются через смещение относительно начального адреса (базы) модуля. Таким образом, одна и та же программа может работать с данными, расположенными в любой области памяти, без перемещения данных и без изменения текста программы только за счет изменения содержания всего одного базового регистра. Однако время выполнения каждой операции при этом возрастает.
Относительная адресация с совмещением составляющих Ад
Для увеличения емкости адресной ОП (Моп) без увеличения длины адресного поля команды Пд можно использовать для формирования исполнительного адреса совмещение (конкатенацию) кодов базы и смещения (рис. 2.8).
При совмещении кодов базы и смещения
Таким образом,
Следует отметить, что емкость ОП (Моп) может быть увеличена в 2nс раз за счет использования способа совмещения. Однако в данном случае начальные адреса массивов не могут быть реализованы произвольно, а должны иметь в младших разрядах nc нулей.
Рис. 2.8. Схема формирования относительного адреса способом совмещения кодов базы и смещения
Индексная адресация
Для работы программ с массивами, требующими однотипных операций над элементами массива, удобно использовать индексную адресацию. Схема индексной адресации аналогична базированию путем суммирования (см. рис. 2.7). В этом случае адрес i-го операнда в массиве определяется как сумма начального адреса массива (задаваемого полем смещения С) и индекса И, записанного в одном из регистров РП, называемом теперь индексным регистром. Адрес индексного регистра задается в команде полем адреса индекса — Аин (аналогично Aб).
В каждом i-м цикле содержимое индексного регистра изменяется на величину постоянную (часто равную 1). Использование индексной адресации значительно упрощает программирование циклических алгоритмов.
Для эффективной работы при относительной адресации применяется комбинированная индексация с базированием, при которой адрес операнда вычисляется как сумма трех величин (рис. 2.9):
АцОП=Б+И+С.
Рис. 2.9. Схема формирования исполнительного адреса при индексной адресации и базировании: Анн - адрес индексного регистра; пдии - длина адреса индексного регистра
Стековая адресация
Стековая память (стек) является эффективным элементом современных ЭВМ, реализует неявное задание адреса операнда. Хотя адрес обращения в стек отсутствует в команде, он формируется схемой управления автоматически по специальному правилу.
Существует два различных принципа поиска операндов в памяти: ассоциативный и адресный.
Ассоциативный поиск операнда (поиск по содержанию ячейки) предполагает просмотр содержимого всех ячеек памяти для выявления кодов, содержащих заданный командой ассоциативный признак. Эти коды и выбираются из памяти в качестве искомых операндов.
Адресный поиск предполагает, что искомый операнд извлекается из ячейки, номер которой формируется на основе информации в адресном поле команды.
Ниже мы будем рассматривать только реализацию адресного принципа поиска операнда.
Следует различать понятия "адресный код" в команде Ак и "исполнительный (физический) адрес" АИ.
Адресный код — это информация об адресе операнда, содержащаяся в команде.
Исполнительный адрес - это номер ячейки памяти, к которой производится фактическое обращение. В современных ЭВМ адресный код, как правило, не совпадает с исполнительным адресом.
Таким образом, способ адресации можно определить как способ формирования исполнительного адреса операнда Аи по адресному коду команды Ак.
Способов адресации существует много. Параметры процесса обработки информации существенно зависят от выбранного способа адресации. Одни способы адресации позволяют увеличить объём адресуемой памяти без удлинения команды, но снижают скорость выполнения операции, другие ускоряют операции над массивами данных, третьи - упрощают работу с подпрограммами и т. д.
В системах команд современных ЭВМ часто предусматривается возможность использования нескольких способов адресации операндов для одной и той же операции. Для указания способа адресации в некоторых системах команд выделяется специальное поле в команде - «метод» (указатель адресации УА), (рис. 2.3,а). В этом случае любая операция может выполняться с любым способом адресации, что значительно упрощает программирование.
Рис.2.3. Общая структура команды: а) с указателем метода адресации; б) без указателя метода адресации
Если только небольшая часть операций должна работать с различными способами адресации, то в команде поле УА не выделяется, а способ адресации определяется по коду операции, длина которого при этом возрастает (рис. 2.3,6).
Способ адресации операнда определяется многими характеристиками. Многообразие способов адресации обусловлено сочетанием различных значений этих характеристик. Укажем некоторые из этих характеристик и рассмотрим наиболее употребляемые способы адресации.
Вспомним некоторые важные для этой темы понятия и введем необходимые обозначения.
Адресуемые в командах операнды хранятся в основной памяти (ОП) и регистровой памяти (РП), (рис. 2.4).
Рис.2.4. Памяти для хранения адресуемых операндов
Каждая память (РП и ОП) имеет самостоятельную нумерацию ячеек (регистров), самостоятельные средства адресования. Пусть:
m - длина многоразрядного двоичного кода, хранимого одной ячейкой
(регистром);
nA - длина двоичного кода адреса ячейки (Аи);
М - емкость памяти, количество ячеек в адресуемом пространстве памяти. Обычно М = 2Na ячеек.
Регистровую память и ОП можно описать следующими параметрами:
Мрп - кол-во регистров в РП;
mрп - разрядность регистра;
АиРП - исполнительный адрес в РП;
АиОП — исполнительный адрес в ОП.
Классификация способов адресации по наличию адресной информации в команде
Явная и неявная адресация
При явной адресации операнда в команде есть поле адреса этого операнда, в котором задается адресный код Ак. Большинство методов адресации являются явными.
При неявной адресации адресное поле в команде отсутствует, адрес операнда подразумевается кодом операции.
Метод неявной адресации операндов используется во всех процессорах. Основное его назначение — уменьшение длины команды за счет исключения части адресов. При этом методе код операции точно задает адрес операнда. Например, из команды исключается адрес приемника результата. При этом подразумевается, что результат в этой команде помещается на место второго операнда.
Классификация способов адресации по кратности обращения в память
Широко используются следующие методы адресации операнда с различной кратностью обращения (г) в память:
1. Непосредственная (г = 0).
2. Прямая (г = 1).
3. Косвенная (г > 2).
Непосредственная адресация операнда
При этом способе операнд располагается в адресном поле команды. Обращение к РП или ОП не производится. Таким образом, уменьшается время выполнения операции, сокращается объем памяти. Непосредственная адресация удобна для задания констант, длина которых меньше или равна длине адресного поля команды.
Прямая адресация операндов
При этом способе (рис. 2.5) адресации обращение за операндом в РП или ОП производится по адресному коду в поле команды, т.е. исполнительный адрес операнда совпадает с адресным кодом команды (Аи = Ак).
Рис.2.5. Схема прямой адресации: а) к регистровой памяти; б) к основной памяти
Обеспечивая простоту программирования, этот метод имеет существенные недостатки, так как для адресации к ячейкам памяти большой емкости (число адресов М велико) требуется «длинное» адресное поле в команде. Прямая адресация используется широко в сочетании с другими способами адресации. В частности, вся адресация к «малой» регистровой памяти ведется только с помощью прямой адресации.
Косвенная адресация операндов
При этом способе адресный код команды указывает адрес ячейки памяти, в которой находится не сам операнд, а лишь адрес операнда, называемый указателем операнда. Адресация к операнду через цепочку указателей (косвенных адресов) называется косвенной.
Адрес указателя, задаваемый программой, остается неизменным, а косвенный адрес может изменяться в процессе выполнения программы. Косвенная адресация, таким образом, обеспечивает переадресацию данных, т.е. упрощает обработку массивов и списковых структур данных, упрощает передачу параметров подпрограммам, но не обеспечивает перемещаемость программ в памяти (рис. 2.6,а).
Косвенная адресация так же широко используется в ЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата. В этом случае первый указатель должен располагаться в РП (рис. 2.6,6).
Рис.2.6. Схема косвенной адресации: а) указатель операнда и операнд расположены в одном адресном пространстве ОП; 6) указатель операнда расположен в РП, а операнд-в ОП
Классификация способов формирования исполнительных адресов ячеек памяти
Способы формирования адресов ячеек памяти (Аи) можно разделить на абсолютные и относительные.
Абсолютные способы формирования предполагают, что двоичный код адреса ячейки памяти — Аи может быть извлечен целиком либо из адресного поля команды (в случае прямой адресации), или из какой-либо другой ячейки (в случае косвенной адресации), никаких преобразований кода адреса не производится.
Относительные способы формирования Ац предполагают, что двоичный код адреса ячейки памяти образуется из нескольких составляющих: Б — код базы, И - код индекса, С - код смещения, используемых в сочетаниях (Б и С), (И и С). (Б,ИиС).
При относительной адресации применяются два способа вычисления Зд-реса Аи:
- суммирование кодов составляющих адреса;
- совмещение (конкатенация) кодов составляющих адреса. Суммирование кодов составляющих производится для случаев:
Аи= Б + С; Аи = И + С; Аи = Б + И + С.
Относительная адресация ячейки ОП Базирование способом суммирования
В команде адресный код Ак разделяется на две составляющие: Aб - адрес регистра в регистровой памяти , в котором хранится база Б (базовый адрес); С - код смещения относительно базового адреса (рис. 2.7).
Рис. 2.7. Схема формирования относительного адреса способом суммирования кодов базы и смещения: СМ - сумматор; РАОП - регистр адреса ОП;
Б - база (базовый адрес); С - смещение; Aб- адрес регистра базы;
nб - длина кода базы; nc - длина поля смешения
Для определения максимальной емкости ОП, адресуемой с помощью базирования, способом суммирования, определим длину кода исполнительного адреса
Так как nб = mрп и обычно больше, чем Пс, то справедливо следующее выражение:
т. е. максимальная адресуемая емкость ОП определяется разрядностью РП. Длина NаБ поля кода команды, задающего адрес регистра базы Aб, определяется через емкость РП Мрп, по формуле
Таким образом, можно определить количество NаБ двоичных разрядов в адресном поле команды, необходимое для формирования Аи с размещением базы в РП:
Приведенные выражения позволяют определить числовые значения параметров относительной адресации (базирование способов суммирования). Для того, чтобы увеличить Моп, необходимо выполнить условие:
С помощью метода относительной адресации удается получить так называемый перемещаемый программный модуль, который одинаково выполняется процессором независимо от адресов, в которых он расположен. Начальный адрес программного модуля (база) загружается, при входе в модуль, в базовый регистр. Все остальные адреса программного модуля формируются через смещение относительно начального адреса (базы) модуля. Таким образом, одна и та же программа может работать с данными, расположенными в любой области памяти, без перемещения данных и без изменения текста программы только за счет изменения содержания всего одного базового регистра. Однако время выполнения каждой операции при этом возрастает.
Относительная адресация с совмещением составляющих Ад
Для увеличения емкости адресной ОП (Моп) без увеличения длины адресного поля команды Пд можно использовать для формирования исполнительного адреса совмещение (конкатенацию) кодов базы и смещения (рис. 2.8).
При совмещении кодов базы и смещения
Таким образом,
Следует отметить, что емкость ОП (Моп) может быть увеличена в 2nс раз за счет использования способа совмещения. Однако в данном случае начальные адреса массивов не могут быть реализованы произвольно, а должны иметь в младших разрядах nc нулей.
Рис. 2.8. Схема формирования относительного адреса способом совмещения кодов базы и смещения
Индексная адресация
Для работы программ с массивами, требующими однотипных операций над элементами массива, удобно использовать индексную адресацию. Схема индексной адресации аналогична базированию путем суммирования (см. рис. 2.7). В этом случае адрес i-го операнда в массиве определяется как сумма начального адреса массива (задаваемого полем смещения С) и индекса И, записанного в одном из регистров РП, называемом теперь индексным регистром. Адрес индексного регистра задается в команде полем адреса индекса — Аин (аналогично Aб).
В каждом i-м цикле содержимое индексного регистра изменяется на величину постоянную (часто равную 1). Использование индексной адресации значительно упрощает программирование циклических алгоритмов.
Для эффективной работы при относительной адресации применяется комбинированная индексация с базированием, при которой адрес операнда вычисляется как сумма трех величин (рис. 2.9):
АцОП=Б+И+С.
Рис. 2.9. Схема формирования исполнительного адреса при индексной адресации и базировании: Анн - адрес индексного регистра; пдии - длина адреса индексного регистра
Стековая адресация
Стековая память (стек) является эффективным элементом современных ЭВМ, реализует неявное задание адреса операнда. Хотя адрес обращения в стек отсутствует в команде, он формируется схемой управления автоматически по специальному правилу.