Способ адресации памяти это
Система адресации (Лекция)
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 %. Достоинствами косвенной адресации являются возможность обработки адреса операнда, уменьшение длины адресной части команды при косвенной регистровой адресации, так как адрес регистра значительно короче адреса ячейки памяти.
Индексная адресация . Физический адрес ячейки ОП формируется сложением базового адреса, указанного в адресной части команды или в базовом регистре, и смещения, находящегося в специальном регистре процессора, который называется индексным . Достоинством индексной адресации является возможность модификации исполнительного адреса путем выполнения операций с индексными регистрами. Этот метод адресации эффективен при работе с массивами данных.
Индексно-относительная адресация . Совместно используются индексная и относительная адресации. При индексно-относительной адресации физический адрес ячейки памяти формируется как сумма трех величин. Базовый адрес получается, как и в случае относительной адресации, т. е. сдвигом содержимого базового регистра, номер которого указан в адресной части команды, и сложением его со смещением, расположенным в адресной части команды или регистре, номер которого указан в адресной части. Затем полученный адрес суммируют с содержимым индексного регистра, номер которого указан в адресной части команды.
Источник