Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник ОЭВМ Трусфус.doc
Скачиваний:
125
Добавлен:
12.03.2015
Размер:
4.82 Mб
Скачать

2.3.2. Адресация многобайтовых объектов в оперативной памяти

Все используемые в ЭВМ устройства памяти имеют байтовую ориентацию. Это означает, что для них минимальной адресуемой единицей информации является байт, и размеры всех программных объектов кратны байту. Размеры программных объектов фиксированного формата обычно выбираются кратными степени числа 2 (2 n байтов).

Размер программных объектов формата переменной длины (строки байт) задается отдельным полем команды.

Возможные способы расположения программных объектов в памяти представлены на рис. 2.1.

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

G

H

I

J

Слово по адресу 0 содержит байты (AB)

Двойное слово по адресу 0 содержит байты (ABCD)

Учетверенное слово по адресу 0 содержит байты (ABCDEFGH)

*Двойное слово по адресу 5 содержит байты (FGHI)

Байт по адресу 9 содержит байт J

Многобайтовые объекты фиксированного формата по расположению в памяти могут разделяться на объекты расположенные:

  • по выровненным (целочисленным) границам,

  • по не выровненным (нецелочисленным) границам.

Объект расположен в целочисленных границах, если его адрес кратен размеру объекта. Все объекты на рис. 2.1, кроме двойного слова FGHI (отмечен *), расположены по целочисленным границам адресов. Адрес младшего байта F четырехбайтовой строки FGHI равен 5, т.е. не кратен размеру строки.

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

  • требуется дополнительная операция выравнивания границ при использовании,

  • могут потребоваться дополнительные циклы при передаче данных по шинам интерфейса.

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

Нумерация полей памяти

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

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

Нумерация бит и байт может производиться или со старших разрядов, или с младших разрядов (рис. 2.2).

Нумерация бит и байт со старших разрядов (рис. 2.2a)

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

0

1

2

3

Номера байт

0 7

Номера бит

Байт

Байт

0 7

8 15

Номера бит

Старший байт

Младший байт

Слово

0 7

8 15

16 23

24 31

Номера бит

Старший байт

Младший байт

Двойное слово

а) нумерация бит и байт со старших разрядов к младшим

3

2

1

0

Номера байт

7 0

Номера бит

Байт

Байт

15 8

7 0

Номера бит

Старший байт

Младший байт

Слово

31 24

23 16

15 8

7 0

Номера бит

Старший байт

Младший байт

Двойное слово

b) нумерация бит и байт с младших разрядов к старшим

Рис.2.2. Структуры данных и нумерации бит и байт.

Нумерация бит и байт с младших разрядов (рис. 2.2 b)

При использовании нумерации бит и байт в многобайтном слове с младших разрядов, при последовательном выборе из памяти объекты на обработку поступают с младших байт и младшими разрядами "вперед". Это нумерация с младших разрядов. Распространение такой нумерации началось с появлением и микропроцессоров. При последовательной (бит за битом) обработке цифровых данных для простейших арифметических операций (сложение/вычитание) это обеспечивало выигрыш в аппаратных средствах. Кроме того, при такой нумерации возрастание номеров бит совпадает с возрастанием их разрядных весов.

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

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

Для примера рассмотрим запись двухбайтовых слов (рис. 2.3.). В этом примере в словарной памяти записана строка начальных символов английского алфавита в виде последовательности двухбайтовых объектов – слов (по два символа в слове). При переносе последовательности символов из памяти с нумерацией с младших разрядов в регистр с нумерацией со старших разрядов происходит перестановка байт в каждом слове.

Адреса слов

Старшие байты в слове

Младшие байты в слове

Нечетные адреса байтов

Содержимое

байтов

Четные адреса

байтов

Содержимое

байтов

0

1

a

0

b

Слово ab

2

3

c

2

d

Слово cd

Структуры словарной памяти с нумерацией байт с младших разрядов

Адреса байт

0

1

2

3

b

a

d

c

Многобайтовый регистр

Рис 2.3. Пример передачи могобайтового поля из памяти с нумерацией с младших разрядов в регистр с нумерацией со старших разрядов

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

Адреса слов

Старшие байты в слове

Младшие байты в слове

Нечетные адреса байтов

Содержимое

байтов

Четные адреса

байтов

Содержимое

байтов

0

1

a

0

b

Слово ab

2

3

c

2

d

Слово cd

Структуры словарной памяти с нумерацией байт с младших разрядов

Адреса байт

3

2

1

0

c

d

a

b

Многобайтовый регистр

Рис 2.3. Пример передачи могобайтового поля из памяти с нумерацией с младших разрядов в регистр с нумерацией со старших разрядов

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

Например, в архитектуре PA-RISC корпорации HP (Hewlett Packard) предусмотрен такой программно управляемый обмен данными. Упорядочение байтов (к старшим или к младшим адресам) при записи и чтении определяется битом E в слове состояния процессора (PSW).

При Е = 0 загрузка многобайтного объекта упорядочивается, по терминологии фирмы, "к старшим адресам". При этом младший байт в памяти соответствует старшему байту в регистре (левая нумерация).

При Е = 1 загрузка многобайтного объекта упорядочивается "к младшим адресам". При этом младший байт в памяти соответствует младшему байту в регистре (правая нумерация).

Для этой же цели в МП Intel (начиная с 486) используется команда SWAP перестановки байт в регистре. Команда переставляет байты в четырех байтном регистре (первый байт с четвертым и второй байт с третьим).

Вопросы для самопроверки:

1. Адресная память.

2. Ассоциативная память.

3. Стековая память.

4. Использование в МП Intel регистра EBP – указателя базы (кадра) стека.

5. Математическая память.

6. Сегментированная память.

7. Функции диспетчера памяти.

8. Основные адресные пространства ЭВМ.

9. Байтовая ориентация памяти.

10. Расположение программного объекта в целочисленных границах.

11. Основные проблемы расположения программных объектов в нецелочисленных границах.

12. Адресация многобайтовых объектов в памяти.

13. Основные преимущества обратной нумерации байт в многобайтных программных объектах.

14. Основные недостатки обратной нумерации байт в многобайтных программных объектах.