Блоки памяти являются адресуемыми . Это единственный способ использовать память .
На самом деле память имеет только адресуемость байта . Это значит:
- A двоичный адрес всегда указывает только на
a single
байт .
- A word - это всего лишь
a group of
bytes & ndash; 2
, 4
, 8
в зависимости от шины данных size of
ЦП.
Чтобы полностью понять операцию памяти , вы должны быть знакомы с различными регистрами CPU и порты памяти из RAM . Я полагаю, вы знаете их значение:
- MAR ( регистр адреса памяти )
- MDR ( регистр данных памяти )
- ПК ( регистр счетчика программ )
- MBR ( регистр буфера памяти )
RAM имеет two
видов портов памяти :
32-bits
для данных / адресов
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
на автобусе и пр.
Поначалу это немного сложно понять. Я узнал об этом у Эндрю Таненбаума структурированных компьютерных организаций .