离散事件模拟的64位优势

时间:2016-08-04 15:39:45

标签: simulation simulator

据我了解,英特尔64位CPU提供了解决更大地址空间(> 4GB)的能力,这对于大型仿真非常有用。 Interesting architectural hardware advantages:

  • 16个通用寄存器而不是8
  • 其他SSE登记册
  • 禁止缓冲区溢出攻击的无执行(NX)位

背景

历史上,模拟已在32位IA(英特尔架构)系统上执行。我想知道在哪里(如果有的话)是减少使用64位CPU的仿真时间的机会:我希望应该重新编译软件以利用64位功能。这种类型的模拟不会受益于MAC(乘法和累加),也不会使用浮点计算。

问题

话虽如此,是否有英特尔64位指令或功能提供了比加速仿真的32位指令集(计算密集型和冗长的32位BIT算法)明显的优势?

如果您有实施模拟的经验并且已从32位CPU转换为64位,请在您的回复中说明(相关经验很重要)。我期待社区有见地的回应

1 个答案:

答案 0 :(得分:1)

我可以想到的关于CPU指令的最直接的计算好处是AVX,尽管这只与x86_64松散相关,但更多的是CPU生成问题。 在我们公司,我们开发了多个高度复杂的离散事件模拟,模拟飞机(包括电气,液压,航空电子软件和相关的一切)。它们都是用x86_64构建或移植到x86_64。原因主要是由于内存寻址,允许更大的缓存和更广泛的算法选择(例如,以数据为中心的设计,并发),图形内容现在也趋于庞大。但是,有关x86_64指令本身的优化(例如AVX)留给了编译器。我从来没有看到用汇编语言编写的代码或者使用编译器内在函数来明确地实际引用特定的x86_64指令。

总结一下,根据我的经验,x86_64 CPU允许进行某些优化,通常会牺牲内存消耗来支持CPU处理:

  • 更广泛的算法选择,特别是关于并发性,其中数据可能需要以有利于以占用内存为代价的并行处理的方式进行布局
  • 中间结果或其他处理输出可以更容易地缓存在内存中以避免重新计算或优化时间或状态相关的一致性
  • AVX指令可以帮助编译器矢量化比MMX / SSE更多的代码