Подтвердить что ты не робот

Разница между адресным адресом и байтом адресным

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

4b9b3361

Ответ 1

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

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

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

Чтобы полностью понять работу с памятью, вы должны быть знакомы с различными регистрами ЦП и портами памяти ОЗУ. Я полагаю, вы знаете их значение:


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

ОЗУ имеет two вида портов памяти:

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

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


См. также:


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