Я знаю, что некоторые процессоры выходят из строя с неверно выровненными данными, а другие, такие как ой-так распространенный x86, будут медленнее с этим.
У меня вопрос почему? Почему процессору x86 труднее получить данные из указателя 0x12345679
, чем из указателя 0x12345678
? Просто для ясности, я знаю, что сбой страницы может произойти, если данные находятся на нескольких страницах, и я понимаю, что, возможно, потребуется извлечь больше данных из памяти (одна часть для начала значения и одна для конца) , но это не всегда так, и мой вопрос не в этом. Я спрашиваю, почему это всегда медленнее?
Предположим, что память начинается с 0x10000000
. Почему процессору сложнее получить 2-байтовый short
от 0x10000001
, чем от 0x10000002
? Почему сложнее получить 4-байтовый int
от 0x10000001
, чем от 0x10000000
? И так далее.