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

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


person leon    schedule 27.04.2010    source источник
comment
См. Схемы адресации на основе байтов и слов: › Демонстрация схем адресации на основе байтов и слов.   -  person Andrew Hare    schedule 27.04.2010


Ответы (3)


Единицы памяти являются адресными. Только так мы можем использовать память.

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

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

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


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

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

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

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

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

Вот что мы имеем в виду, когда говорим, что определенный регистр является адресуемым по памяти или адресуемым по байтам. Теперь, что произойдет, если вы поместите, скажем, decimal 2 в binary на MAR с намерением прочитать слово 2, а не (byte no 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.
Используя это сопоставление, когда < strong>MAR
равно 1, address 4 помещается в шину, когда MAR равно 2, address 8 помещается в шину и так далее.

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

person KawaiKx    schedule 15.02.2011
comment
Насколько я понял ваш ответ, в ЦП должна быть какая-то схема, чтобы решить, нацелена ли операция памяти на байт или слово, особенно когда данные возвращаются в MDR, например, для чтения только первый байт 32-битной шины данных. Но я сомневаюсь, что это верное предположение? - person stdout; 22.11.2018

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

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

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

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

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

person Maaverik    schedule 06.02.2016

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

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

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

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

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


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


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

person Peter Cordes    schedule 25.08.2016