Разница между адресной словом и адресной байтовой - PullRequest
21 голосов
/ 27 апреля 2010

Может кто-нибудь объяснить, в чем разница между адресами Word и Byte? Как это связано с объемом памяти и т. Д.? 1003 *

Ответы [ 3 ]

30 голосов
/ 15 февраля 2011

Блоки памяти являются адресуемыми . Это единственный способ использовать память .

На самом деле память имеет только адресуемость байта . Это значит:

  • A двоичный адрес всегда указывает только на a single байт .
  • A word - это всего лишь a group of bytes & ndash; 2, 4, 8 в зависимости от шины данных size of ЦП.

Чтобы полностью понять операцию памяти , вы должны быть знакомы с различными регистрами CPU и порты памяти из RAM . Я полагаю, вы знаете их значение:


  • MAR ( регистр адреса памяти )
  • MDR ( регистр данных памяти )
  • ПК ( регистр счетчика программ )
  • MBR ( регистр буфера памяти )

RAM имеет two видов портов памяти :

  1. 32-bits для данных / адресов
  2. 8-bit для OPCODE .

Предположим, CPU хочет прочитать a word (скажем, 4 bytes ) с адреса xyz и далее. , ЦП установит адрес на MAR , отправит сигнал чтения памяти на микросхему контроллера памяти . При получении адреса и сигнала чтения , контроллер памяти будет подключать шину данных к 32-bit порту и 4 bytes, начиная с адреса xyz, будет вытекать из порта в MDR .

Если CPU хочет получить следующую инструкцию , он поместит адрес в регистр ПК и отправит выборку сигнал на контроллер памяти . При получении адреса и получении сигнала , контроллер памяти будет подключать шину данных к 8 -битному порту и a single длина байта код операции , расположенный по адресу , будет поступать из RAM в CPU х MDR .

Так вот что это означает, когда мы говорим, что определенный регистр является адресуемым в памяти или адресуемым байтом . Теперь, что произойдет, если вы положите, скажем, decimal 2 в binary на MAR с намерением прочитать слово 2, а не ( байт нет 2)?

Слово нет 2 означает байтов 4, 5, 6, 7 для 32-bit машины. В реальной физической памяти является адресуемой только для байта . Таким образом, есть хитрость для обработки адресации слов .

Когда MAR размещен на адресной шине , его 32 -биты не отображаются на 32 адресных линиях (0-31 соответственно). Вместо этого MAR bit 0 подключен к адресной шине line 2, MAR bit 1 подключен к адресной шине line 3 и так далее. Верхние 2 bits из MAR отбрасываются, поскольку они нужны только для адресов слов выше 2^32, ни один из которых не является допустимым для нашей 32 bit машины.
Используя это отображение, когда MAR равно 1, address 4 устанавливается на шину , когда MAR равно 2, address 8 на автобусе и пр.

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

5 голосов
/ 06 февраля 2016

Это изображение должно облегчить понимание: http://i.stack.imgur.com/rpB7N.png

Проще говоря,

• В схеме байтовой адресации первое слово начинается с адреса 0 и второе слово начинается с адреса 4.

• В схеме адресации слов расположены все байты первого слова. в адресе 0, и все байты второго слова расположены в адресе 1.

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

1 голос
/ 25 августа 2016

Адресность - это размер единицы памяти, которая имеет свой собственный адрес. Это также самый маленький кусок памяти, который вы можете изменить, не затрагивая его соседей.

Например: машина, где байты являются обычными 8 битами, а размер слова = 4 байта. Если это адресно-адресная машина, то нет такого понятия, как адрес второго байта int. Работа со строками (например, массив типа char str[]) становится неудобной, потому что вы все еще храните символы, упакованные вместе. Изменение просто str[1] означает загрузку слова, которое содержит его, выполнение некоторых операций сдвига и / или / или изменения, чтобы применить изменение, а затем сохранение слова.

Обратите внимание, что это отличается от машины, которая не допускает загрузку / сохранение невыровненных слов (где младшие 2 бита адреса слова должны быть 0). Такие машины обычно имеют инструкцию загрузки / сохранения байтов. Мы говорим о машинах даже без этого.

Адреса ЦП могут фактически включать младшие биты, но требуют, чтобы они всегда были равны нулю (или игнорировали их). Однако, проверив, что они равны нулю, они могут быть отброшены, поэтому остальная часть системы памяти видит только адрес слова, где два соседних слова имеют адрес, который отличается на 1 (не на 4). Однако на 16-разрядном процессоре, где регистр может содержать только 64 000 разных адресов, вы вряд ли будете делать это. Каждый отдельный адрес ЦП будет ссылаться на разные 2 байта памяти, а не отбрасывать младший бит. Адресная память размером 2B позволит вам адресовать 128 кБ памяти вместо 64 КБ с байтовой памятью.

Забавный факт: ARM использовал младшие 2 бита адреса в качестве элемента управления перемешиванием для невыровненных загрузок слов. (Но это всегда были инструкции загрузки / сохранения байтов.)


Смотри также:


Обратите внимание, что адресуемая битовая память может существовать, но не существует. 8-битные байты в настоящее время практически универсальны. (У древних компьютеров иногда были байты большего размера, см. Раздел истории статьи из Википедии .)

...