看过晨星老大在
这里发的讨论,感觉还是不十分清楚,在这里发个贴继续~~
处理器只能从对齐的地址处存取数据,这应该是众所周知的。
可是,
究竟是什么原因导致处理器无法访问非对齐的地址?
也就是说,如果一个非对齐的地址被强行加到地址线上,会引发什么后果?
或者是根本不可能把非对齐地址加到地址总线上(例如总线上其实是移位后的地址,一定会对齐)?
还是因为内存条在设计的时候就是以几个字节为一个储存单位,内存控制器只能按这个粒度寻址?
还是有什么更深层的原因?
究竟是处理器对内存访问过程中的哪一步产生了寻址的限制条件?
一口气打了好多个问号……
另外,刚刚随便看了看 Intel 的优化指南,似乎说到即使从 cache 里取数据,也是需要对齐的,不过我也没仔细看~