【问题标题】:64-bit Advantages for Discrete Event Simulation离散事件模拟的 64 位优势
【发布时间】:2016-08-04 15:39:45
【问题描述】:

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

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

背景

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

问题

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

如果您有实施模拟的经验并且已经从 32 位 CPU 过渡到 64 位 CPU,请在您的回复中说明这一点(相关经验很重要)。我期待来自社区的富有洞察力的回应

【问题讨论】:

    标签: simulation simulator


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 2012-10-22
      • 2011-03-21
      • 2011-09-07
      • 2010-09-17
      • 2014-04-12
      相关资源
      最近更新 更多