Gil Tene:了解硬件事务内存

简介:

2016年纽约QCon上,Gil Tene在其演讲“了解硬件事务内存”中介绍了硬件事务内存(hardware transactional memory,HTM)。虽然HTM概念不是新的,现在终于有商业硬件支持了。HTM的目的是能够支持在内存中原子的进行多地址写入,以避免与其他合作线程产生不一致的情况。

Tene首先从解释内存缓存的四个状态开始:

无效 共享 排他 修改
同时他指出,考虑到硬件事务内存,还有两个额外的状态:

缓存行在操作中被读取 缓存行在操作中被修改
如果发送下列情况,事务必须被终止:其他CPU希望写入数据、读取已经被修改的数据和CPU希望失效其缓存。

根据Tene说法,硬件事务内存最大优势是摆脱串行块。最终目的是完全并行执行,并且仅在实际访问数据产生实际冲突时进行回滚。这和阿姆达尔定律有关,即当CPU核数越多,对运行速度的实际提升越少。如果应用程序中有10%的串行代码,10核CPU最多只能提速5倍。要实际达到提速10倍,可能需要使用将近100核CPU。

Tene然后介绍了锁竞争和数据竞争。例如当处理大型散列集合时,可能在读写完全不同的区域,但是整个散列集合都需要被加锁。通常锁竞争影响范围会比数据竞争大很多,但是只有数据竞争才会影响CPU的并行工作。因此,仅仅终止产生数据竞争的事务,可以彻底降低阿姆达尔定律影响,加速并行运算。

对于Java同步块,Tene解释了没有竞争的代码库可以和之前运行的速度相同。仅当发生实际数据冲突的地方,将会产生事务回滚,并且让代码并行的重新运行。对于Java应用程序,一旦Java虚拟机使用HTM,该过程是完全透明的,代码上不需要做任何修改。这在Hotspot 8 Java虚拟机的40更新之后实现。Tene页展示了简单的基准测试数据,可视化的展示了硬件事务内存的效果:即使散列集合中又5%的写比例,在增加更多CPU时,性能也能线性增加。

Gil Tene总结指出虽然对于开发者来说HTM使用是透明的,他们还是需要开始考虑应用程序中的数据竞争。多线程不应该修改一个变量,因为这样会导致数据竞争,并因HTM的优势无法被利用而无法提高运行速度。

请注意大部分QCon演讲材料会在会议结束后的几周后免费提供,演示文档可以在大会网站进行下载。同时,您也可以在InfoQ网站上观看关于这一主题对Gil Tene进行的采访。
本文转自d1net(转载)

相关文章
|
3月前
|
Linux
|
3月前
|
存储 缓存 安全
从软件和硬件角度去看内存
从软件和硬件角度去看内存
47 0
|
9月前
|
缓存 内存技术
硬件 - CPU 缓存 SRAM 与内存 DRAM 的区别
硬件 - CPU 缓存 SRAM 与内存 DRAM 的区别
242 0
|
11月前
|
存储 Java Apache
Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
142 0
|
NoSQL iOS开发 MacOS
记一次 rr 和硬件断点解决内存踩踏问题
借助 rr 来定位查询语句结果不一致的问题。
522 0
|
存储 Linux
华为工程师发布最新补丁,实现对 AArch64 硬件的 Linux 镜像内存支持
早在 2015 年,Linux 内核就已支持 x86/x86_64 的 UEFI 镜像内存功能,而对于华为来说,为 AArch64 添加该功能也是他们一直在努力的事情。4 月 14 日,华为工程师 Wupeng Ma 发布了最新补丁集,实现了对 AArch64 硬件的这种 Linux 镜像内存支持。
186 0
华为工程师发布最新补丁,实现对 AArch64 硬件的 Linux 镜像内存支持
|
缓存 运维 负载均衡
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
185 0
Redis连环炮:内存淘汰?事务?分布式锁?分步式限流?异步队列?延时队列?高可用?如何部署?哈希槽?数据库和缓存的数据一致性?
|
存储 消息中间件 机器学习/深度学习
硬件成本降低90%,性能提升20倍,异构内存show给你看!
硬件成本降低90%,性能提升20倍,异构内存show给你看!
357 0
硬件成本降低90%,性能提升20倍,异构内存show给你看!

热门文章

最新文章

相关实验场景

更多