Я много слышал, что данные должны быть правильно выровнены в памяти для повышения эффективности доступа. ЦП обращается к памяти на границе слова.
Итак, в следующем сценарии ЦП должен сделать 2 обращения к памяти, чтобы получить одно слово.
Supposing: 1 word = 4 bytes
("|" stands for word boundary. "o" stands for byte boundary)
|----o----o----o----|----o----o----o----| (The word boundary in CPU's eye)
----o----o----o---- (What I want to read from memory)
Почему это должно происходить? Какова основная причина того, что ЦП может читать только на границе слова?
Если ЦП может осуществлять доступ только на границе 4-байтового слова, адресная строка должна иметь ширину только 30 бит, а не 32 бита. Потому что последние 2 бита всегда равны 0.
И даже больше, если мы допускаем, что CPU должен читать на границе слова, почему граница не может начинаться с того места, где Я хочу читать? Кажется, что граница зафиксирована в глазах процессора.
Согласно AndreyT , кажется, что настройка границ жестко запрограммирована, и она жестко привязана к памяти доступ к оборудованию. CPU просто невиновен в этом отношении.
Большое спасибо ...