Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Osnova.doc
Скачиваний:
21
Добавлен:
18.09.2019
Размер:
963.58 Кб
Скачать

Практическое занятие 11

Изучение видов адресации памяти

1 Цель работы

1.1 Изучить способы обращения к ячейкам памяти

2 Пояснение к работе

2.1 Краткие теоретические сведения

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

2.1.1 Неявная адресация

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

2.1.2 Непосредственная адресация

Операнд находится в формате команды.

2.1.3 Прямая адресация

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

Команда

Регистр

Память

а дрес

операнд

Если адрес указан в виде символа, в дальнейшем распознаваемого компилятором, то такая адресация является символической прямой. Если задается в виде явного адреса (цифр) – абсолютная прямая адресация.

2.1.4 Прямая регистровая адресация

В коде команды хранится имя регистра, в котором находится операнд, т.е. в качестве адреса используется имя или код регистра.

Команда

Регистр

Память

к од (адрес) регистра

операнд

2.1.5 Косвенная адресация

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

К оманда

Регистр

П амять

Указатель адреса

Адрес операнда

операнд

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

2.1.6 Косвенная регистровая адресация

В коде команды хранится имя регистра, в котором хранится адрес операнда.

К оманда

Регистр

Память

Адрес (имя)

регистра-указателя

А дрес

операнда

операнд

2.1.7 Индексная адресация

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

Команда

Регистр

(индексный)

Память

А дрес (код) индексного регистра

с мещение

Адрес первого элемента массива

+

операнд

2.1.8 Базовая адресация

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

Команда

Регистр

( базовый)

Память

А дрес (код) базового регистра

Базовый адрес

С мещение (+ или -)

+

операнд

2.1.9 Относительная адресация

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

Команда

Регистр

Память

Счетчик команд

С мещение (+ или -)

+

операнд

2.1.10 Адресация с автоувеличением (инкрементированием) или автоуменьшением (декрементированием)

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

К оманда

Р егистр

Память

Адрес (код) регистра

а дрес

операнд

+1

(-1)

2.1.11 Стековая адресация

Разновидность косвенной регистровой адресации с автоинкременитрованием или автодекрементированием, при которой регистр с указателем адреса операнда задается неявно. Ячейку памяти, на которую указывает содержимое такого неявно заданного регистра, называют верхушкой стека. А сам регистр – указатель стека. Область памяти называется стек. Говорят, что стек работает на автоувеличение, если содержимое указателя стека после записи в стек увеличивается, и на автоуменьшение, если содержимое указателя стека после записи уменьшается.

Команда

Регистр

(SP – указатель стека)

Память

а дрес

операнд

+1

(-1)

2.1.12 Страничная адресация

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

Команда

Регистр

Память

№ страницы

Адрес внутри страницы

операнд

2.1.13 Сегментная адресация

В структуру процессора вводится набор регистров специального назначения, называемых сегментными регистрами (CS, DS, SS, ES). В этих регистрах хранятся старшие разряды полного физического адреса, к которому обращается процессор. Можно считать, что в них хранится номер сегмента памяти. Кроме этого, в формировании адреса участвуют дополнительные регистры специального назначения (IP, SI, SP, DI соответственно). Полный физический адрес формируется на основе адреса в сегментом регистре и адреса в дополнительном регистре. Получается логический адрес: SS:SP, CS:IP, DS:SI, ES:DI.

Для получения полного физического адреса содержимое сегментного регистра умножается на 16 (в шестнадцатеричной записи числа добавляем 0 в конце) и складывается с содержимым дополнительного регистра.

Пример. Если в CS 38A2h, а в регистре IP 12A6h. Полный адрес CS:IP:

38A20+12A6=39CC6h

К оманда

Регистр

(сегментный)

Память

Адрес внутри сегмента

Часть полного адреса начала сегмента

+

операнд

2.1.14 Виртуальная адресация

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

Команда

Основная память

Внешняя память

Виртуальный адрес

страницы

Адрес

внутри

страницы

Таблица соответствия виртуальных и физических адресов страниц (ассоциативная таблица)

Физический адрес страницы, ее номер, наличие в памяти

Физическая страница

операнд

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

Области использования виртуальной адресации:

- свопинг (swapping)

- кэширование памяти (cache)

- теневая память (shadow memory).

- отображаемая память

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]