【问题标题】:.Net framework JIT and Bulldozer special instructions.Net framework JIT 和 Bulldozer 特别说明
【发布时间】:2012-02-21 12:26:27
【问题描述】:

AMD Bulldozer 在服务器领域取得了成功,但在桌面方面表现不佳。据我了解,造成这种情况的主要原因是服务器应用程序已被重写以使用 Bulldozer 的特殊指令,这些指令仍未在桌面应用程序中使用。我们是否会期望即时编译器 (JIT) 在 4.5 中使用这些,是否可以/是否将它们移植到 4.0?

澄清:我的理解是,JIT 是为运行它的机器编译的,而不是为它编译为 IL 指令的机器。据称,正因为如此,JIT 应用程序实际上可以比直接编译并链接到二进制的普通代码具有更高的性能。

【问题讨论】:

  • 不,什么时候?可能永远不会。 .NET 甚至不使用 SSE IIRC。
  • 才上市四个月。 “特殊说明”无法治愈在基准测试中被击败的架构。如果 AMD 想证明你的观点,他们可以写一个 Mono jitter,似乎他们没有。
  • 除非/直到 Bulldozer 获得足够大的基础,否则微软不太可能为它做任何特别的事情。虽然 .NET 确实能够进行特殊优化,但这些并不是免费的,并且需要时间和金钱来开发。如果平台足够小,MS 这样做没有任何价值。如果他们想要支持 Bulldozer,AMD 应该与 MS 合作。如果 AMD 懒得这么做,那 MS 为什么要这么做?

标签: .net .net-4.0 .net-4.5


【解决方案1】:

不幸的是,.NET JIT 在性能方面并不是特别复杂:

  • 即使在服务器上,它也不会像 C++ 编译器那样进行大量优化,尽管它具有与 C++ 编译器相同的信息。它只是不做某些事情
  • 它仅对某些带有浮点数的操作使用特殊指令
  • x64 甚至存在质量问题,正在执行无效优化
  • 缺少一些明显的优化,例如逃逸分析

JIT 的开发似乎没有特别高的预算。所以我怀疑我们会看到这样的特殊指令被使用。

【讨论】:

  • 希望它们永远不会发生。 JIT 的全部意义在于任何安装了 .NET Framework 的机器都可以运行所述应用程序。如果它做了特殊的事情,因为编译它的机器可以做这些事情,它就会破坏目的。
猜你喜欢
  • 2012-03-19
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
相关资源
最近更新 更多