【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

Gil Tene:了解硬件事务内存

  • 2016-06-27
  • 本文字数:1037 字

    阅读完需:约 3 分钟

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 进行的采访

查看英文原文: Gil Tene: Understanding Hardware Transactional Memory


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-06-27 19:001976

评论

发布
暂无评论
发现更多内容

服务器的升级,不可避免的安全问题

九河云安全

2021第二届云原生编程挑战赛正式启动,抢先报名!

阿里巴巴云原生

阿里云 Serverless RocketMQ 云原生 dubbo

限12小时删!白嫖对标阿里P5—P8的Java学习路线+大厂刷题秘籍

Java架构追梦

Java 阿里巴巴 架构 面试

带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用

华为云开发者联盟

语义 多模态 推理模型 SDMG-R 检测文本

只需6步,教你从零开发一个签到小程序

华为云开发者联盟

小程序 App 移动 智慧校园 FunctionGraph

TrafficStatsRunnable 实用封装

Changing Lin

8月日更

阿里云-云开发平台入门篇——静态网站的全生命周期实战

若尘

阿里云 8月日更

快来看,大数据两地三中心的容灾也可以如此省心!

华为云开发者联盟

大数据 数据湖 容灾 华为云MRS 两地三中心

专业好用的数据恢复软件推荐

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

你的工作有弹性么?

escray

学习 极客时间 朱赟的技术管理课 8月日更

如何实时打通数据孤岛?Tapdata 创始人唐建法受邀于GOTC深度分享

tapdata

数据库 打通数据孤岛 数据同步 Real Time DaaS GOTC

Serverless 全能选手,再添一“金”

Serverless Devs

Serverless 互联网 云原生

如何保存数据并更快地从勒索软件攻击中恢复

九河云安全

十大排序算法--快速排序

Ayue、

排序算法 8月日更

Swift 实现获取、展示 Mac 的 WiFi 密码

fuyoufang

ios swift SwiftUI Mac 软件 8月日更

CC挖矿系统源码开发

获客I3O6O643Z97

挖矿 挖矿矿池系统开发案例 fil矿机

2021全球开源技术峰会|IoT 时代的开源数据基础设施

EMQ映云科技

开源 IOT Platform IoT emq 开源技术

基于香港服务器的应用开发中测试数据管理的 3 个最佳实践

九河云安全

增强自动化测试的8大技巧

禅道项目管理

测试 自动化测试

Mysql读写锁保姆级图文教程

华为云开发者联盟

MySQL 数据 读写锁 读锁 MyLSAM

Pangaea AI 智能机器人炒币系统开发

获客I3O6O643Z97

量化策略 量化跟单 量化机器人

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之数据库逆向(十二)

crudapi

Vue crud crudapi quasar 数据库逆向

巨头纷纷布局分布式云,一场新的云战争即将打响

浪潮云

云计算

这几个棘手的面试常见问题,如何高情商的回答?

架构精进之路

面试 情商 8月日更

推动数据中心行业的“水电煤”,可视化如何用数据改变传统产业?

一只数据鲸鱼

机房 数据可视化 数字孪生 智能IDC

Python代码阅读(第4篇):过滤掉列表中的唯一值

Felix

Python 编程 Code Programing 阅读代码

Go与Redis连接池的那些事儿~

Regan Yue

redis Go 语言 8月日更

论 Erda 的安全之道

尔达Erda

云原生 安全 企业数字化转型 云平台 开发平台

赛迪发布《2020-2021年中国IT服务市场研究年度报告》,联想位居第一梯队

科技大数据

科技互联网

iOS开发-为 iOS 编写 Kotlin Parcelize 编译器插件

iOSer

ios 编译器 编译器原理 iOS 知识体系 Kotlin Parcelize

让数据库从业者用实力对美国说不!

博文视点Broadview

Gil Tene:了解硬件事务内存_Java_Ralph Winzinger_InfoQ精选文章