Адрес памяти указывает на байт информации?
Ниже приводится выдержка из файла DTS. Linux/ арка / PowerPC / загрузки / DTS / [board_name].dts
memory {
device_type = "memory";
reg = <0x00000000 0x40000000>; // 1GB at 0
};
Встроенное устройство имеет 1 ГБ памяти.
0x40000000 =1073741824 в десятичном виде.
Единственный способ получить 1 ГБ - вычислить 1073741824 в байтах.
Что означает 1073741824 байта =1 ГБ.
Значит ли это, что 0x00000000 указывает на байт данных в оперативной памяти? Другими словами, каждый байт в оперативной памяти имеет адрес.
Почему это так? Что мы читаем блок из 8 бит? Почему не слово?
2 ответа
TL; DR: доступ к ОЗУ НЕ производится в блоках размером в байт, даже если каждый байт независимо адресуется (имеет свой собственный адрес) в ОЗУ.
Первые по-настоящему успешные микропроцессоры, получившие широкую популярность "цифровой революции", были 8-битными, и, следовательно, наследие основной части данных в 8-битном формате сохраняется до сегодняшнего дня. В первом поколении микропроцессоров с 8-битными процессорами каждый байт из ОЗУ считывался / записывался по отдельности.
Следующее поколение было разработано с внутренними регистрами процессора, которые были больше, чем 8 бит. Обычно они были кратны 8 битам (16/32/64), поскольку это позволяло им считывать несколько полных байтов одновременно из ОЗУ. Любая попытка чтения адреса X из ОЗУ приведет к извлечению 2/4/8 байт (на 16/32/64-битных ЦП), то есть слово в ОЗУ, содержащее адрес X и только соответствующий байт, будет сохранено и сохранено во внутренних регистрах ЦП. как требуется.
Затем, с появлением процессорных кешей, оперативная память начала считываться (и записываться) в блоках с размером строки кэша. Они даже больше, чем размер регистра. Это уменьшит задержку при чтении данных из ОЗУ из-за локальности данных.
За подробностями обращайтесь к этой исчерпывающей статье Ульриха Дреппера о процессорах и памяти.
Вы также можете заметить, что адреса для памяти (Arm DDR, PRU DDR, Shared PRU DDR и т. Д.) Плюс смещения памяти - это байты, а не инструкции процессора. Бит толкатель