2016-12-20 9 views
0

Так что я читал, несколько статей (и несколько вопросов по StackOverflow) о выравнивании памяти, и я поняли, почему, как это Структуры:Почему процессор только для чтения выровненных адресов

struct A 
{ 
    char c; 
    int i; 
} 

будут иметь отступы. Также ясно, что выборки из не выровненной памяти будут медленнее, если процессор может читать только из выровненных смещений.

Но почему процессор может читать только из выровненной памяти? Почему он не может просто читать данные со случайного адреса? Вы знаете, из памяти произвольного доступа ...

ответ

0

Так что я копал дальше и нашел this post. Это ответ, который я искал.

0

В зависимости от процессора. Некоторые процессоры вообще не допускают несвязанных доступов. Другие процессоры могут, но он имеет тенденцию быть медленнее.

В вашем примере (если поля заполнены и выровненным доступ к нему разрешен, если процессор пытается прочитать я, как правило, занимает получений фидов из памяти, чтобы получить его.

Некоторые процессоры взять падение производительности нескольких доступов для получения выровненных данных. Другие просто не позволяют.

+0

Да, но почему процессорам нужно получить несколько раз, когда адрес не имеет значения? ОЗУ - это просто транзисторы, поэтому почему это невозможно читать данные для регистрации по любому адресу? – Derag

+0

Поскольку шины памяти считывают согласованные данные. – user3344003

 Смежные вопросы

  • Нет связанных вопросов^_^