Transactional Synchronization Extensions

Transactional Synchronization Extensions (TSX) 是x86架构的扩展,提供硬件级别的事务内存支持,通过HLE和RTM提升多线程性能。HLE利用XACQUIRE和XRELEASE前缀实现向后兼容,而RTM则更灵活,允许在事务失败时设定回滚路径。本文介绍了TSX、检测TSX支持的方法,以及HLE和RTM的使用。
摘要由CSDN通过智能技术生成

Transactional Synchronization Extensions

目录

  • 什么是TSX
  • 检测你的机器是否支持TSX
  • HLE
  • RTM
  • 参考资料

TSX

  TSX(Transactional Synchronization Extensions)是x86指令集体系结构的扩展,增加了对事务内存的支持,实现了硬件层面的无锁机制,可以加速多线程程序的执行。TSX为指定代码事务性执行提供了两个软解接口,分别是HLE(Hardware Lock Elision)和RTM(Restricated Transactional Memory)。HLE通过给特定指令加前缀实现的,能够向后兼容不支持TSX的处理器。RTM提供了新的指令,可以更加灵活的供程序员使用。[4]

检测你的机器是否支持TSX

  将下面的代码保存为has_tsx.c,编译后运行,即可得知你的机器是否支持TSX。

/* Filename:has_tsx.c */
#include <cpuid.h>
#include <stddef.h>
#include <stdio.h>

#define CPUID_RTM (1 << 11)
#define CPUID_HLE (1 << 4)

static inline int cpu_has_rtm(void)
{
    if (__get_cpuid_max(0, NULL) >= 7) {
        unsigned a, b, c, d;
        __cpuid_count(7, 0, a, b, c, d);
        return !!(b & CPUID_RTM);
    }
    return 0;
}

static inline int cpu_has_hle(void)
{
    if (__get_cpuid_max(0, NULL) >= 7) {
        unsigned a, b, c, d;
        __cpuid_count(7, 0, a, b, c, d);
        return !!(b & CPUID_HLE);
    }
    return 0;
}

int main(void) {
    pri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值