Размещение числовых данных в памяти


В современных ВМ разрядность одной ячейки памяти, как правило, равна одному байту (8 бит). В то же время реальная длина кодов чисел составляет 2, 4, 8 или 16 байт. При хранении таких чисел в памяти последовательные байты числа размещают в нескольких ячейках с последовательными адресами, при этом для доступа к числу указывается только наименьший из адресов. При разработке архитектуры системы команд необходимо определить порядок размещения байтов в памяти, то есть какому из байтов (старшему или младшему) будет соответствовать этот наименьший адрес. На рис. 5.13 показаны оба варианта размещения 32-разрядного числа в четырех последовательных ячейках памяти, начиная с адреса х.

 

Рис. 5.13. Размещение в памяти 32-разрядного числа: а - начиная со старшего байта; б — начиная с младшего байта

В вычислительном плане оба способа записи равноценны. Так, фирмы DEC и Intel отдают предпочтения размещению в первой ячейке младшего байта, a IBM и Motorola ориентируются на противоположный вариант. Выбор обычно связан с некими иными соображениями разработчиков ВМ. В настоящее время в большинстве машин предусматривается использование обоих вариантов, причем выбор может быть произведен программным путем за счет соответствующей установки регистра конфигурации.

Помимо порядка размещения байтов, существенным бывает и выбор адреса, с которого может начинаться запись числа. Связано это с физической реализацией полупроводниковых запоминающих устройств, где обычно предусматривается возможность считывания (записи) четырех байтов подряд. Причем данная операция выполняется быстрее, если адрес первого байта А отвечает условию A mod 5 = 0 (S = 2, 4, 8, 16). Числа, размещенные в памяти в соответствии с этим правилом называются выравненными (рис. 5.14).

На рис. 5.15. показаны варианты размещения 32-разрядного слова без выравнивания. Их использование может приводить к снижению производительности.

Рис. 5.14. Размещение чисел в памяти с выравниванием

Рис. 5.15. Размещение 32-разрядного слова без соблюдения правила выравнивания

Большинство компиляторов генерируют код, в котором предусмотрено

выравнивание чисел в памяти.



Дата добавления: 2017-05-02; просмотров: 1639;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.