64 位机器/操作系统上的 32 位操作与 64 位操作

2024-02-17

哪个操作,即 32 位操作或 64 位操作(例如屏蔽 32 位标志或 64 位标志),在 64 位机器上会更便宜?


由于您没有指定架构,我只能建议一个一般答案,因为它取决于操作和所讨论的处理器架构。一旦 CPU 寄存器中有数据,大多数操作通常会花费相同的时间,无论该值最初是 32 位还是 64 位。

然而,在某些架构上,数据进入寄存器的方式可能存在一些差异。在某些情况下,“本机”值可能比某些硬件上的较小值更快:

获取数据

  • 获取“本机大小”值可能是faster比获取更小的值。也就是说,无论如何,处理器可能需要获取 64 位,然后屏蔽/移出其中的 32 位以“加载”32 位值。处理 64 位值时不需要这种掩码/移位,因此它可能会加载得更快。 (这违背了直觉,即两倍大的东西可能需要两倍的时间来加载)。

  • 或者,如果总线可以处理半角读取,则可以与 64 位值同时加载 32 位。

  • 更令人困惑的是,CPU 缓存也可以改变结果。通常,当您从内存中读取一个值时,会将多个内存位置的“行”读入高速缓存,以便可以从快速高速缓存内存中提供后续读取,而不需要从 RAM 中完全获取。在这种情况下,如果您按顺序访问多个值,则使用 32 位值会更快,因为将缓存两倍的值,从而减少缓存未命中。

计算

  • 处理器硬件针对处理 64 位值进行了优化,因此使用 32 位计算值可能会带来更多麻烦,从而降低运行速度。例如它可能能够“本机”处理双精度(64 位)值,但必须先将浮点(32 位)值转换为双精度,然后才能处理它,然后将结果转换回浮点。

  • 或者,可能存在通过 CPU 的 32 位和 64 位路径,或者 CPU 可能能够以不影响指令整体执行时间的方式进行所需的任何转换,在这种情况下,可以计算它们以相同的速度。

  • 这可能会影响复杂的运算(浮点),但对于简单的运算(AND、OR 等)不太可能出现问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

64 位机器/操作系统上的 32 位操作与 64 位操作 的相关文章

随机推荐