Способ адресации памяти это

Способ адресации памяти это

Система адресации (Лекция)

1. Режимы адресации

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

3. Режимы адресации операндов

4. Возможности микропроцессоров по адресации

1. Режимы адресации

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

Режим адресации памяти — это процедура или схема преобразования адресной информации об операнде в его исполнительный адрес.

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

Все способы адресации памяти можно разделить на:

1) прямой, когда исполнительный адрес берется непосредственно из команды или вычисляется с использованием значения, указанного в команде, и содержимого какого-либо регистра (прямая адресация, регистровая, базовая, индексная и т.д.);

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

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

Инструкция микропроцессора может содержать следующие поля:

Префикс — необязательная часть инструкции, позволяет изменить некоторые особенности ее выполнения. В команде может быть использовано сразу несколько префиксов разного типа. Типы префиксов:

1) командные префиксы (префиксы повторения)

2) префикс блокировки шины LOCK;

3) префиксы размера (см. далее);

4) префиксы замены сегмента.

Байт «Mod R/M» определяет режим адресации, а также иногда дополнительный код операции. Необходимость байта «Mod R/M» зависит от типа инструкции.

Байт SIB (Scale-Index-Base) определяет способ адресации при обращении к памяти в 32-битном режиме. Необходимость байта SIB зависит от режима адресации, задаваемого полем «Mod R/M».

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

На размер инструкции накладывается ограничение в 15 байт. Инструкция большего размера может получиться при некорректном использовании большого количества префиксов.

3. Режимы адресации операндов

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

1) непосредственно в коде инструкции (только операнд-источник);

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

3) через порт ввода-вывода;

Для совместимости с 16-битными процессорами архитектура IA-32 использует одинаковые коды для инструкций, оперирующих как с 16-битными, так и 32-битными операндами. Новая архитектура предусматривает также новые возможности при указании адреса для операнда в памяти. Как процессор будет считать операнд или его адрес, зависит от эффективного размера операнда и эффективного размера адреса для данной команды. Эти значения определяются на основе режима работы, бита D дескриптора используемого сегмента и наличия в инструкции определенных префиксов.

Непосредственный режим адресации подразумевает включение операнда-источника в код инструкции. Операнд может быть 8-битным или 16-битным, если значение эффективного размера операнда — 16. Операнд может быть 8-битным или 32-битным, если значение эффективного размера операнда — 32. Обычно непосредственные операнды используются в арифметических инструкциях.

Регистровый режим адресации определят операнд-источник или операнд-приемник в одном из следующих регистров:

1) регистры общего назначения (EAX/AX, EBX/BX, ECX/CX, EDX/DX, ESI/SI, ESP/SP, EBP/BP — 16-битный регистр, если эффективный размер операнда — 16, или 32-битный регистр в противном случае) или их младшие байты (AH, AL, BH, BL, CH, CL, DH, DL);

2) сегментные регистры (CS, DS, SS, ES, FS, GS);

3) регистр флагов (EFLAGS для 32-битных операндов или FLAGS для 16-битных);

Читайте также:  Простой способ оторвать обои

4) управляющие регистры (CR0/MSW, CR2, CR3, CR4) и регистры системных таблиц (GDTR, LDTR, IDTR, TR);

5) регистры отладки (DR0-DR7);

6) машинно-зависимые регистры (MSRs);

7) регистры сопроцессора, MMX и XMM.

В некоторых случаях (например, в инструкциях DIV и MUL) могут использоваться пары 32-битных (или 16-битных) регистров (например, EDX:EAX), образуя 64-битный (32-битный) операнд.

Адресация через порт ввода-вывода подразумевает получение операнда или сохранение операнда через пространство портов ввода-вывода. Адрес порта ввода-вывода либо непосредственно включается в код инструкции, либо берется из регистра DX.

Очень распространенный способ адресации операнда — адресация через память . Таким образом может быть указан операнд-источник или операнд-приемник. Следует отметить, что процессор не позволяет одновременно задавать оба операнда через память (за исключением некоторых цепочечных команд).

Для получения операнда из памяти процессору необходимо знать селектор сегмента и смещение в сегменте. В некоторых командах селектор может быть указан непосредственно в коде инструкции. В других случаях процессор может явно или неявно использовать значение одного из сегментных регистров. Под неявным использованием сегментных регистров подразумевается то, что в зависимости от предназначения операнда процессор использует определенный сегментный регистр для обращения к памяти: CS — для выборки инструкций; SS — для работы со стеком или обращения к памяти через регистры ESP или EBP; ES — для получения адреса операнда-приемника в цепочечных командах; DS — при всех остальных обращениях к памяти. Явное использование сегментных регистров возможно, если в код инструкции включается префикс смены сегмента. Указание префикса смены сегмента допустимо не для всех команд: нельзя менять сегмент для команд работы со стеком (всегда используется SS), для цепочечных команд можно менять сегмент только операнда-источника (операнд-приемник всегда адресуется через ES).

4. Возможности микропроцессоров по адресации

Одной из важнейших архитектурных характеристик МП является перечень возможных способов обращения к памяти или видов адресации. Возможности МП по адресации существенны с двух точек зрения.

Во-первых, большой объем памяти требует большой длины адреса, так как n-разрядный адрес позволяет обращаться к памяти емкостью 2n слов. Типовые 8-разрядные слова МП дают возможность непосредственно обращаться только к 256 ячейкам памяти, что явно недостаточно. Если учесть, что обращение к памяти является наиболее часто встречающейся операцией, то очевидно, что эффективность использования МП во многом определяется способами адресации к памяти большого объема при малой разрядности МП.

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

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

Для согласования адресного поля команды малой разрядности с памятью большого объема (для решения “страничной” проблемы) в МП применяются различные виды адресации:

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

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

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

Читайте также:  Способ формирования присяжных заседателей

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

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

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

Источник

Способ адресации памяти это

Адресация информации. Способы адресации

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

Команда – это описание элементарной операции, которую должен выполнить компьютер.

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

В зависимости от количества операндов команды бывают одно-, двух-, трех- и переменно-адресные.

Команды хранятся в ячейках памяти в двоичном коде.

В современных компьютерах длина команд переменна я( обычно от 2 до 4 байт), а способы указания адресов переменных достаточно разнообразные.

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

Возможны следующие варианты команды сложения (при этом в место цифровых кодов и адресов использованы условные обозначения):

· одноадресная команда add x (содержимое ячейки x сложить с содержимым сумматора, а результат оставить в сумматоре)

· двухадресная команда add x, y (сложить содержимое ячеек x и y, а результат поместить в ячейку y)

· трехадресная команда add x, y, z (содержимое ячейки x сложить с содержимым ячейки y, сумму поместить в ячейку z)

Выполнение команды разбивается на следующие этапы:

· из ячейки памяти, адрес которой хранится в счетчике команд, выбирают очередную команду; содержимое счетчика команд при этом увеличивается на длину команды;

· выбранную команду передают в устройство управления на регистр команд;

· устройство управления расшифровывает адресное поле команды;

· по сигналам УУ операнды считываются из памяти и записываются в АЛУ на специальные регистры операндов;

· УУ расшифровывает код операции и выдает в АЛУ сигнал выполнить соответствующую операцию над данными;

· результат операции либо остается в процессоре, либо отправляется в память, если в команде был указан адрес результата;

· все предыдущие этапы повторяют до достижения команды «стоп».

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

Данные, которые обрабатываются командами, могут находиться в самой команде, в регистрах процессора, в ячейках оперативной памяти.

Адресоваться могут не только операнды, но и те места в памяти, куда они или результаты операции будут записываться. При адресации ОЗУ существуют понятия логического и физического адреса.

Логическим адресом оперирует программа, которая не привязана к определенным адресам ОЗУ и может располагаться в любом месте.

Читайте также:  Какими способами можно удалить родинку

Для чтения или записи данных на основании данных о логическом адресе должен быть сформирован физический , или исполнительный адрес , точно определяющий место ячейки в ОЗУ.

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

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

Неявная адресация. Местоположение операнда предопределено кодом операции. Обычно операнд находится в специальном регистре процессора, например в регистре-аккумуляторе или в вершине стека.

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

Страничная адресация . Физический адрес ячейки ОП формируется из двух полей: номера страницы (старшие разряды адреса )и номера ячейки в странице (младшие разряды адреса). Номер страницы определяется содержимым регистра, номер которого указывают в адресном поле команды. Номер ячейки в пределах

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

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

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

Косвенная регистровая адресация . Указатель адреса операнда хранится не в ОП, а в регистре процессора, номер которого указывают в адресной части команды. Поскольку время обращения к регистрам процессора обычно в 5–…10 раз меньше, чем к ячейкам ОП, то время выборки операнда увеличивается незначительно – на 10–…20 %. Достоинствами косвенной адресации являются возможность обработки адреса операнда, уменьшение длины адресной части команды при косвенной регистровой адресации, так как адрес регистра значительно короче адреса ячейки памяти.

Индексная адресация . Физический адрес ячейки ОП формируется сложением базового адреса, указанного в адресной части команды или в базовом регистре, и смещения, находящегося в специальном регистре процессора, который называется индексным . Достоинством индексной адресации является возможность модификации исполнительного адреса путем выполнения операций с индексными регистрами. Этот метод адресации эффективен при работе с массивами данных.

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

Источник

Оцените статью
Разные способы