
Адрес операнда в оп определяется соотношением
А = ВП[В] + D,
Где ВП [В]– содержимое ячейки ВП с адресом В.
При относительной адресации адреса операндов задаются значениями
Оценим емкость ВП, необходимую для размещения базовых адресов. На каждом этапе вычислений необходимо использовать один базовый адрес, необходимый для указания начала программы и базовые адреса для адресации массивов, количество которых определяется свойствами алгоритмов и структурной данных. Если все базовые адреса не умещаются в ВП, то необходимо производить перезагрузки содержимого ВП, что увеличивает длину и время выполнения программы. Поэтому увеличение памяти базовых адресов в ВП уменьшает длину и время выполнения программы, но одновременно увеличивает длину поля В в адрес, т.е. длину команды и затраты оборудования в процессоре и в ОП.
В ЭВМ общего назначения в ВП необходимо хранить 4-8 базовых адресов.
В мини и микро – ЭВМ емкость памяти обычно невелика, поэтому относительная адресация в них, как правило, не используется.
Относительные модифицируемые адреса используются для обработки переменных с индексами при относительной адресации. Они имеют следующую структуру:
1 q1 q1 m
-
В
Х
D
Здесь В– адрес базового адреса
Х – адрес индекса
D – смещение
Абсолютный адрес операнда вычисляется по выражению
ВП[В] + D,
если Х=0
А = ВП[В] + ВП[Х] + D, если Х0
Смещение D при Х0 имеет смысл относительного базового адреса массива, элементом которого является адресуемый операнд – переменная с индексом.
Адресация при страничной организации памяти
Основная память ЭВМ имеет весьма большой объем. Так в ЭВМ общего назначения она достигает 224 байт (при этом адрес должен иметь до 24 разрядов), а в мини-ЭВМ и микро-ЭВМ – 216 слов (длина адреса 16 разрядов).
Для эффективного функционирования ЭВМ необходимо, чтобы длина команды не превышала длины машинного слова. Иначе для выборки команды в процессоре потребуется несколько обращений к ОП, что резко увеличит время выполнения программы.
Выбор длины машинного слова определяется в основном диапазоном и точностью представления данных. Поэтому ЭВМ общего назначения, основной формат данных которых составляют числа с плавающей запятой, длина слова равна 32 разрядам. В мини- и микро-ЭВМ, обрабатывающих только числа с фиксированной запятой с меньшей точностью, длина слова соответственно равна 16 и 8-16 разрядам.
Таким образом, оказывается, что длина адреса в команде совпадает с длиной всего машинного слова. И не остается места для выделения полей кода операции, признака адресации, адреса базы и индекса. В этом случае для уменьшения длины адреса вводится страничная организация памяти. Суть страничной организации памяти в следующем.
Если ЭВМ имеет ОП объемом N=2m слов, то ее разбивают на секции объемом по S=2p слов, называемые страницами.
Количество слов в странице называется размером страницы. Всего в памяти размещается Q страниц
=
2m-p
Каждая страница имеет фиксированный базовый адрес. Таким образом, любой адрес ОП можно выразить через адрес (номер) страницы и адрес (номер) слова в странице.
Так, например, если ОП имеет N=16 и S=4, то в этом случае слово в адресом А=6 будет размещаться в странице 2, а адрес слова в странице – 3
0 – 3 Распределение страниц в ОП
4 – 7
8 – 11
12 – 15
Следовательно, полный адрес слова в ОП будет состоять из двух частей
1 m
-
1 Р1 q1
1 А1 р
Где Р1 - адрес (номер) страницы
А1 - адрес слова в странице
При этом в поле адреса команды указывают только адрес слова в странице, длина которого равна Рразрядам. Длина команды в расчете на каждый адрес уменьшается на
q = m - p разрядов.
Полный адрес операнда формируется в процессоре приписыванием р-разрядного смещения (А1), указанного в команде к моменту выполнения команды. (Он хранится в ВП).
Установка адреса страницы производится специальными командами с полным m-разрядным адресом, который обычно размещается в двух словах.
Такая команда обеспечивает переход к слову новой страницы Р, позволяя в дальнейшем в пределах выбранной страницы Р оперировать короткими Р-разрядными адресами. Это продолжается до тех пор, пока не потребуется перейти к следующей странице, для чего вновь используется команда с полным адресом.
Таким образом, при страничной адресации уменьшается длина команд, но требуются дополнительные команды для переходов между страницами, что увеличивает длину и время выполнения программы. При этом увеличение длины страницы уменьшает количество межстраничных переходов (страничных сбоев), но увеличивает длину адреса страницы, т.е. выигрываем в быстродействии, но проигрываем в длине команды, т.е. требуемом объеме ОП.
Существуют точные методы определения длины страницы, увеличивающие также диапазон и точность данных.