x86 и адресация памяти - PullRequest
       16

x86 и адресация памяти

6 голосов
/ 21 марта 2010

Я читал о моделях памяти в сборочной книге, которую я поднял, и у меня есть вопрос или два. Скажем, адресная шина имеет 32 строки, шина данных - 32 строки, а ЦП 32-разрядный (для простоты). Теперь, если процессор делает запрос на чтение и отправляет 32-битный адрес, но ему нужно только 8 бит, все ли 32-битные возвращаются в любом случае? Кроме того, адреса в памяти все еще адресуются за байтом правильно? Таким образом, выборка одного байта вернула бы 0000 0001 по адресу 0000 0004?

Ответы [ 2 ]

8 голосов
/ 21 марта 2010

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

Тем не менее, сейчас редко можно читать прямо из памяти. Процессоры имеют кеши, с которыми вы взаимодействуете 99% времени, и когда данные не находятся в кеше, вводится целая строка (несколько слов), а затем вы все равно читаете из кеша.

Также обратите внимание, что многие современные процессоры на самом деле имеют 64-битные шины.

2 голосов
/ 21 марта 2010

Вы должны действительно прочитать это: Что каждый программист должен знать о памяти

...