为什么处理器只读取对齐的地址

时间:2016-12-20 21:16:57

标签: memory alignment processor

所以我正在阅读关于内存对齐的一些文章(以及关于StackOverflow的几个问题),我理解为什么这样的结构:

df.names.str.split(r'\s*[\[\{\(]').str[0]

0                City1
1                City2
2    City with a Space
Name: names, dtype: object

将有填充。 另外很明显,如果处理器只能从对齐的偏移中读取,则来自未对齐的存储器的提取会更慢。

但为什么处理器只能从对齐的内存中读取?为什么它不能只从随机地址读取数据?你知道,来自随机存取存储器......

2 个答案:

答案 0 :(得分:0)

我取决于处理器。某些处理器根本不允许未对齐的访问。其他处理器可以,但它往往会更慢。

在您的示例中(如果字段是打包的并且允许对齐,则如果处理器尝试读取i,则通常需要从内存中取出来获取它。

某些处理器会利用多次访问的性能来检索未对齐的数据。其他人根本不允许。

答案 1 :(得分:0)

所以我进一步挖掘并发现this post。 这是我正在寻找的答案。