performance - 64 位和内存带宽

标签 performance memory 64-bit bandwidth

Mason 询问了 the advantages of a 64-bit processor

嗯,一个明显的缺点是你必须移动更多的位。考虑到内存访问现在是一个严重的问题[1],为相当数量的操作移动两倍的内存并不是一件好事。

但是,这样做的效果有多糟糕,真的吗?什么弥补了它?或者我应该在 32 位机器上运行我所有的小应用程序?

我应该提到,我正在考虑,特别是在同一台机器上可以选择运行 32 位或 64 位的情况,因此在任何一种模式下,主内存的带宽都是相同的。

[1]:即使是在十五年前,就此而言。我记得早在谈论良好的缓存行为时,尤其是赢得所有基准测试的 Alpha CPU 有一个巨大的,当时 8 MB 的 L2 缓存。

最佳答案

大多数 64 位编程环境使用“LP64”模型,这意味着只有指针和 long int 变量(如果您是 C/C++ 程序员)是 64 位。整数 ( int s) 保持 32 位,除非您处于“ILP64”模型中,这是相当罕见的。

我之所以提出它,是因为大多数 int 变量并未用于类似 size_t 的目的——也就是说,它们保持在 32 位可以轻松容纳的范围内。对于这种性质的变量,您永远无法分辨出差异。

如果您正在使用 > 4GB 的数据进行数值或数据密集型工作,则无论如何您都需要 64 位。如果你不是,你不会注意到差异,除非你习惯使用 long s,而大多数人会使用 int s。

关于performance - 64 位和内存带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/960910/

相关文章:

c++ - void指针的内容怎么写?

c++ - 内存处理是否违反单一职责原则?

visual-studio-2010 - CUDA 6.0 未检测到 Visual Studio 10.0

performance - 处理大额交易: any time/memory tradeoffs?

c - 在针对顺序运行优化的程序上使用 openMP 后没有性能提升

java - 优化获取上一条记录和下一条记录的方式

c - 嵌入式设备的内存分配/释放

c# - 从 32 位应用程序读取 64 位注册表

ios - 编译包含arm64的cocos2d-iphone v2.x

jquery - 在 AngularJS 之后加载 jQuery(而不是之前)