Почему ЦП обращается к памяти по границе слова?

Я много слышал, что данные должны быть правильно выровнены в памяти для повышения эффективности доступа. ЦП обращается к памяти на границе слова.

Итак, в следующем сценарии ЦП должен сделать 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.

ADD 1

И даже больше, если мы допускаем, что CPU должен читать на границе слова, почему граница не может начинаться с того места, где Я хочу читать? Кажется, что граница зафиксирована в глазах процессора.

ADD 2

Согласно AndreyT , кажется, что настройка границ жестко запрограммирована, и она жестко привязана к памяти доступ к оборудованию. CPU просто невиновен в этом отношении.

Большое спасибо ...

19
задан smwikipedia 7 September 2010 в 05:21
поделиться