Почему выравнивание важно?

Я знаю, что некоторые процессоры не работают из-за несогласованных данных, а другие, такие как о-очень распространенный x86, будут работать медленнее.

Мой вопрос почему? Почему процессору x86 сложнее получить данные из указателя 0x12345679 , чем из указателя 0x12345678 ? Чтобы быть ясным, я знаю, что сбои страниц могут произойти, если данные находятся на нескольких страницах, и я понимаю, что может потребоваться получить больше данных из памяти (одна часть для начала значения и одна для конца) , но это не Это всегда правда, и мой вопрос не об этом. Я спрашиваю, почему он всегда медленнее?

Предположим, память начинается с 0x10000000 . Почему процессору сложнее получить 2-байтовый короткий из 0x10000001 , чем из 0x10000002 ? Почему получить 4-байтовый int из 0x10000001 труднее, чем из 0x10000000 ? И так далее.

6
задан configurator 2 December 2010 в 20:11
поделиться