像CLR和JVM这样的运行时是否能够使用Haswell TSX指令?

yzo*_*org 16 clr transactional-memory intel

在阅读Anandtech的'Haswell TSX'(转换内存屏障)之后,我立刻想知道CLR/JVM是否能够在C#/ Java/Scala/F#中使用这些用于高度并行的应用程序(C#Rx/TPL/TFD).

Evg*_*zin 5

HLE(硬件锁消除)可以轻松地集成到任何使用锁的现有代码库中。例如,已经存在pthreads的实现。另外,请注意,JVM已经执行了锁定优先级优化,我认为他们可以在可能的情况下轻松切换到硬件锁定优先级。

但是交易变得更加复杂。您无法启动事务并推送1Mb的更新,事务将被中止。因此,硬件事务存储器受到限制,它不像软件事务存储器那样可组合且模块化。这是很底层的事情。另外,请注意,并非每个函数都可以从事务中安全地调用。这样的功能必须没有副作用。

因此,我希望TSX将以编译器内在函数的形式在CLR中可用,框架开发人员将使用它们来创建更好的并发集合和同步原语。它不会像Haskell或Clojure的事务性记忆。


Mat*_* G. 5

旧问题,但我想我将使用至少一个具体的指针添加一个新答案

英特尔已经对其TSX系统进行了实验,以消除Java中的锁,此处已发布。尽管在标准基准测试(例如SpecJVM2008)上,典型结果仅为2-3%,但一项基准测试确实可以提高18%。综合基准​​可以看到更好的结果,但是结果是综合的。


Jam*_*s L 3

我预计高性能 JVM 人员会首先采用它。例如http://www.azulsystems.com/products/zing/virtual-machine

我认为 TSX 在高性能收集实现中最常用。我不明白为什么我们不能使用 TSX 实现一组本机代码集合,并使用常规本机调用技术将其投影到 .Net 或 Java。