所以我读了几篇有关内存对齐的文章(以及关于StackOverflow的一些问题),并且我理解了为什么这样的结构:

struct A
{
  char c;
  int i;
}

将有填充。 同样很明显,如果处理器只能从对齐的偏移量读取数据,则从未对齐的内存中获取数据的速度会变慢。

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

===============>>#1 票数:0

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

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

一些处理器会因多次访问而导致性能下降,以检索未对齐的数据。 其他人根本不允许这样做。

  ask by Derag translate from so

未解决问题?本站智能推荐:

5回复

处理器和虚拟/物理地址

简而言之,据我了解内存管理,处理器生成虚拟地址。 MMU使用每个进程的地址表将这些地址转换为相应的物理地址(必要时在它们之间具有TLB和页面错误)。 我的问题是处理器是否总是产生虚拟地址? 就地址空间(用户/内核),处理器模式(用户/内核)和上下文(进程/系统)而言,处理器何时始终产生
7回复

CPU和数据对齐

请原谅我,如果你觉得这已被无数次回答,但我需要回答以下问题! 为什么数据必须对齐(在2字节/ 4字节/ 8字节边界上)? 这里我怀疑的是当CPU具有地址线Ax Ax-1 Ax-2 ... A2 A1 A0时,很可能顺序地寻址存储器位置。 那么为什么需要在特定边界对齐数据呢?
3回复

是什么设置了处理器可以访问的RAM上限?

按照这种从在IIT教授讲座,一个8位的8085处理器将具有可配对以访问16个地址的8个寄存器。 他通过告诉我们程序计数器和堆栈指针寄存器是16位来实现它可以访问16位地址的事实。 他还继续告诉我们,数据总线是8位,而地址总线是16位。 结果是不是意味着32位处理器将能够访问64位地址?
3回复

关于处理器架构的4个问题。 (计算机工程)

在为期末考试做准备时,我们的老师已经问了我们大约50个错误的真题。 我可以在网上或通过询问亲戚找到大多数答案。 但是,这四个问题却使我发疯。 这些问题大多数都不难,我只是在任何地方都无法得到满意的答案。 抱歉,最初的问题不是用英语写的,我必须自己翻译。 如果您听不懂,请告诉我。 谢谢
2回复

桌面处理器是否支持弱有序内存?

是否有支持弱有序内存的Intel / AMD台式机处理器,或者这是具有多个处理器的服务器设置的功能?
1回复

32/64位应用程序,操作系统和处理器之间有什么关系?

我已经搜索了这些主题,但是不确定我是否正确理解了它们之间的关系。 我总结了以下几点,请纠正/补充。 32位或64位处理器意味着该处理器可以一次处理32/64位。 使用32位或64位处理器表示基础寄存器,地址总线或数据总线的大小也相同。 为了在32/64位处理器上工作,我们有
1回复

Spreadsheet Gear-通过复制和粘贴生成大型报告似乎占用了大量内存和处理器

我正在尝试生成一个基于大型工作簿的报表,其中包含100、12000和12000行的3个支持工作表以及一个基于最终公式的最终输出表,这些公式最终基于每100行显示约120个实体。 我生成一个模板范围,并在粘贴每个新范围后复制并粘贴它替换实体ID单元格。 它工作正常,但我注意到IIS Expre
7回复

为什么在大多数处理器中,L1高速缓存的大小小于L2高速缓存的大小?

为什么在大多数处理器中,L1高速缓存的大小小于L2高速缓存的大小?
2回复

处理器使用Intel QuickPath Interconnect(QPI)来访问内存吗?

我已阅读英特尔®QuickPath互连简介 。 该文档未提及处理器使用QPI来访问内存。 所以我认为处理器不通过QPI访问内存。 我的理解是否正确?
2回复

如果我的二进制数为1111111111111111并且Intel处理器使用的存储格式为32位,则float的值是什么? [关闭]

这个问题不太可能对将来的访客有所帮助; 它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。 要获得使该问题更