为什么对齐边界大于4?

use*_*828 3 c++ compiler-construction

我不明白的是,为什么我们必须在大于4字节的边界上对齐内存中的数据,因为所有其他边界都是4的倍数.假设CPU在一个周期内可以读取4个字节,那么它基本上没有区别.性能,如果该数据大8字节,并在4字节/ 8字节/ 16字节等对齐等.

jal*_*alf 5

当x86 CPU读取a时double,它在一个周期内读取8个字节.当它读取SSE向量时,它读取16个字节.当它读取AVX向量时,它读取32.

当CPU从内存中获取高速缓存行时,它还至少读取32个字节.

您假设CPU每个周期读取4个字节是错误的.