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

4.2. Память и адреса

Числовые и символьные операнды, равно как и команды, хранятся в памяти ком­пьютера. Память состоит из многих миллионов ячеек, в каждой из которых содер­жится один бит информации, имеющий значение 0 или 1. Поскольку один бит способен представить очень маленькое количество информации, биты редко обра­батываются поодиночке. Как правило, их обрабатывают группами фиксированного размера. Для этого память организуется таким образом, что группы по n бит могут записываться и считываться за одну базовую операцию. Группа из n бит называ­ется словом информации, а значение n — длиной слова. Схематически память ком­пьютера можно представить в виде набора слов (рис. 4.6).

Длина слова современных компьютеров составляет от 16 до 64 бит. Если дли­на слова компьютера равна 32 битам, в одном слове может храниться 32-разряд­ное число в системе дополнения до двух или четыре символа ASCII, занимающих по 8 бит (рис. 4.7). Восемь идущих подряд битов называются байтом. Для пред­ставления машинной команды требуется одно или несколько слов. О кодирова­нии машинных команд мы поговорим далее в этой главе, после того как обсудим команды на уровне языка ассемблера.

Рис. 4.6. Слова памяти

Рис. 4.7. Примеры закодированной информации в 32-разрядном слове:

целое число со знаком (а); четыре символа (б)

Для доступа к памяти с целью записи или чтения отдельных элементов ин­формации, будь то слова или байты, необходимы имена или адреса, определяю­щие их расположение в памяти. В качестве адресов традиционно используются числа из диапазона от 0 до 2k-1 со значением k, достаточным для адресации всей памяти компьютера. Все 2k адресов составляют адресное пространство компью­тера. Следовательно, память состоит из 2k адресуемых элементов. Например, ис­пользование 24-разрядных адресов позволяет адресовать 224 (16777216) элемен­тов памяти. Обычно это количество адресуемых элементов обозначается как 16 M (16 мега), где 1 М - 220 (1048576). 32-разрядным адресам соответствует адресное пространство из 232, или 4 Г (4 гига), элементов, где 1 Г - 230. Кроме того, часто используются обозначения К (кило), соответствующее 210 (1024), и Т (тера), со­ответствующее 240.

Байтовая адресация

Итак, у нас есть три основные единицы информации: бит, байт и слово. Байт все­гда равен 8 битам, а длина слова обычно колеблется от 16 до 64 бит. Отдельные биты, как правило, не адресуются. Чаще всего адреса назначаются байтам памяти. Именно так адресуется память большинства современных компьютеров, и имен­но этот способ адресации мы будем использовать в этой книге. Память, в которой каждый байт имеет отдельный адрес, называется памятью с байтовой адресаци­ей. Последовательные байты имеют адреса 0, 1, 2 и т. д. Таким образом, при ис­пользовании слов длиной 32 бита последовательные слова имеют адреса 0,4,8,..., и каждое слово состоит из 4 байт.

Прямой и обратный порядок байтов

Существует два способа адресации байтов в словах, а именно в прямом и обрат­ном порядке (рис. 4.8). Обратным порядком байтов (big-endian) называется сис­тема адресации, при которой байты адресуются слева направо, так что самый старший байт слова (расположенный с левого края) имеет наименьший адрес. Прямым порядком байтов (little-endian) называется противоположная система адресации, при которой байты адресуются справа налево, так что наименьший ад­рес имеет самый младший байт слова (расположенный с правого края). Слова «старший» и «младший» определяют вес бита, то есть степень двойки, соответст­вующей данному биту, когда слово представляет число. В маши­нах для коммерческих расчетов используются обе системы адресации. В обеих этих системах адреса байтов 0,4, 8 и т. д. применяются в качестве адресов после­довательных слов памяти в операциях чтения и записи слов.

Рис. 4.8. Адресация байтов и слов: обратный порядок байтов (а);

прямой порядок байтов (б)

В компьютерах, использующих процессоры Intel, все данные хранятся так, что младший байт находится по младшему адресу, так что слова записываются задом наперед, то есть сначала (по младшему адресу) записывают последний (младший) байт, а потом (по старшему адресу) записывают первый (старший) байт. Если из программы всегда обращаться к слову как к слову, а к двойному слову как к двойному слову, это не оказывает никакого влияния. Но если вы хотите прочитать первый (старший) байт из слова в памяти, придется увеличить адрес на 1. Двойные и учетверенные слова записываются так же — от младшего байта к старшему.

Наряду с порядком байтов в слове важно также определить порядок битов в байте. Типичный способ расположения битов показан на рис. 4.7, а. Это наибо­лее естественный порядок битов для кодирования числовых данных, непосредст­венно соответствующий их разрядам. Этот же порядок использован на рисунке при обозначении битов: b7,b6, …,b0 (слева направо). Однако существуют компью­теры, для которых характерен обратный порядок битов.

Расположение слов в памяти

В случае 32-разрядных слов их естественные границы располагаются по адресам 0, 4, 8 и т. д. (рис. 4.8). При этом мы говорим, что слова выровнены по адресам в па­мяти. Если говорить, в общем, слова считаются выровненными в памяти в том случае, если адрес начала каждого слова кратен количеству байтов в нем. По практическим причинам, связанным с манипулированием двоично-кодирован­ными адресами, количество байтов в слове обычно является степенью двойки. Поэтому, если длина слова равна 16 (2 байтам), выровненные слова начинаются по байтовым адресам 0, 2, 4,..., а если она равна 64 (23 байтам), то выровненные слова начинаются по байтовым адресам 0, 8, 16, ... .

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

Доступ к числам, символам и символьным строкам

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

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

Соседние файлы в папке Архитектура компьютеров