Нумерация полей памяти
Для позиционных систем счисления и большинства последовательностей символов существенно их взаимное расположение. В этих случаях можно говорить о старших и младших разрядах объекта.
В пределах одного объекта (байта, слова, строки байт) старшинство битов определяется их расположением слева направо (старший бит в объекте – левый). Но нумерация бит в байте, бит и байт в слове и в других многобайтовых объектах в различных вычислительных системах может быть различной.
Нумерация бит и байт может производиться или со старших разрядов, или с младших разрядов (рис. 3.2).
Номера байт | |||||||||
0 7 | Номера бит | ||||||||
Байт | Байт | ||||||||
0 7 | 8 15 | Номера бит | |||||||
Старший байт | Младший байт | Слово | |||||||
0 7 | 8 15 | 16 23 | 24 31 | Номера бит | |||||
Старший байт | Младший байт | Двойное слово | |||||||
а) нумерация бит и байт со старших разрядов к младшим | |||||||||
Номера байт | |||||||||
7 0 | Номера бит | ||||||||
Байт | Байт | ||||||||
15 8 | 7 0 | Номера бит | |||||||
Старший байт | Младший байт | Слово | |||||||
31 24 | 23 16 | 15 8 | 7 0 | Номера бит | |||||
Старший байт | Младший байт | Двойное слово | |||||||
b) нумерация бит и байт с младших разрядов к старшим | |||||||||
Рис.3.2. Структуры данных и нумерации бит и байт.
Нумерация бит и байт со старших разрядов (рис. 3.2a).В позиционных системах счисления разряд с наибольшим весом располагается слева, и число читается слева направо. Многобайтовые объекты в памяти, как правило, задаются адресом байта с наименьшим номером. Таким образом, при побайтовой выборке из памяти данные поступают в естественном порядке чтения. Но при этом возрастание весов разрядов противоположно возрастанию их номеров.
Нумерация бит и байт с младших разрядов (рис. 3.2 b).При использовании нумерации бит и байт в многобайтном слове с младших разрядов, при последовательном выборе из памяти объекты на обработку поступают с младших байт и младшими разрядами "вперед". Это нумерация с младших разрядов. Распространение такой нумерации началось с появлением мини- и микропроцессоров. При последовательной (бит за битом) обработке цифровых данных для простейших арифметических операций (сложение/вычитание) это обеспечивало выигрыш в аппаратных средствах. Кроме того, при такой нумерации возрастание номеров бит совпадает с возрастанием их разрядных весов.
Нумерация байт в многобайтных полях с младших байтов сопряжена и с рядом проблем. Одна из проблем связана с передачей в регистр содержимого памяти, возможно состоящего из независимых числовых полей с различным количеством байт.
В этих случаях многобайтное поле загрузится байтами, начиная от младшего байта (с меньшими весами разрядов) к старшему (с большими весами разрядов). Для использования этих (числовых) полей потребуется переупорядочение байт.
Для примера рассмотрим запись двухбайтовых слов (рис. 3.3.). В этом примере в словарной памяти записана строка начальных символов английского алфавита в виде последовательности двухбайтовых объектов – слов (по два символа в слове). При переносе последовательности символов из памяти, с нумерацией начиная с младших разрядов, в регистр с нумерацией со старших раз-рядов происходит перестановка байт в каждом слове.
Старшие байты в слове | Младшие байты в слове | |||||
Адреса слов | Нечетные адреса байтов | Содержимое байтов | Четные адреса байтов | Содержимое байтов | ||
a | b | Слово ab | ||||
c | d | Слово cd | ||||
Структуры словарной памяти с нумерацией байт со старших разрядов | ||||||
Адреса байт | ||||||
b | a | d | c | |||
Многобайтовый регистр | ||||||
Рис 3.3. Пример передачи могобайтового поля из памяти, с нумерацией начиная с младших разрядов, в регистр с нумерацией со старших разрядов
При переносе последовательности символов из памяти, с нумерацией начиная с младших разрядов, в регистр с нумерацией с младших разрядов также происходит перестановка, но уже слов в каждом двойном слове (рис.3.4.).
Старшие байты в слове | Младшие байты в слове | |||||
Адреса слов | Нечетные адреса байтов | Содержимое байтов | Четные адреса байтов | Содержимое байтов | ||
a | b | Слово ab | ||||
c | d | Слово cd | ||||
Структуры словарной памяти с нумерацией байт с младших разрядов | ||||||
Адреса байт | ||||||
c | d | a | b | |||
Многобайтовый регистр | ||||||
Рис 3.4. Пример передачи могобайтового поля из памяти, с нумерацией начиная с младших разрядов, в регистр с нумерацией с младших разрядов
Для использования положительных сторон представленных нумераций в некоторых системах используется программное управление процессом обмена данными между памятью и регистрами.
Например, в архитектуре PA-RISC корпорации HP (Hewlett Packard) предусмотрен такой программно управляемый обмен данными. Упорядочение байтов (к старшим или к младшим адресам) при записи и чтении определяется битом E в слове состояния процессора (PSW).
При Е = 0 загрузка многобайтного объекта упорядочивается, по терминологии фирмы, "к старшим адресам". При этом младший байт в памяти соответствует старшему байту в регистре (левая нумерация).
При Е = 1 загрузка многобайтного объекта упорядочивается "к младшим адресам". При этом младший байт в памяти соответствует младшему байту в регистре (правая нумерация).
Для этой же цели в МП Intel (начиная с 486) используется команда SWAP перестановки байт в регистре. Команда переставляет байты в четырех байтном регистре (первый байт с четвертым и второй байт с третьим).
Вопросы для самопроверки:
1. Байтовая ориентация памяти.
2. Расположение программного объекта в целочисленных границах.
3. Основные проблемы расположения программных объектов в нецелочисленных границах.
4. Адресация многобайтовых объектов в памяти.
5. Основные преимущества обратной нумерации байт в многобайтных программных объектах.
6. Основные недостатки обратной нумерации байт в многобайтных программных объектах.
Дата добавления: 2021-01-26; просмотров: 455;