热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

英特尔®事务同步扩展新指令(TSX-NI)与英特尔TSX的区别是什么?

如何解决《英特尔®事务同步扩展新指令(TSX-NI)与英特尔TSX的区别是什么?》经验,为你挑选了1个好方法。

我在英特尔的页面上找到了

https://ark.intel.com/products/97123/Intel-Core-i5-7500-Processor-6M-Cache-up-to-3_80-GHz

该处理器支持TSX-NI技术但我在谷歌上找不到任何关于它的信息.它与英特尔TSX相同.如果它是不同的,那么我如何使用它.

对不起,我的英语不好!:)



1> Margaret Blo..:

这似乎只是一个营销点缀.

我没有找到"TSX-NI",也没有提到互联网,英特尔手册和英特尔ISA扩展手册.

引用英特尔[ 1 ]

英特尔交易同步扩展(英特尔TSX)有两种版本:HLE和RTM.

由于它们的实现,这两个方面是分离的(要么可以与另一个分开支持),只有RTM引入新的指令.
所以他们可能指的是RTM.

我相信首先引入HLE,并且应该有支持HLE但不支持RTM的处理器(相反,虽然可能,但似乎难以置信).

所以,也许,这只是营销正确的说法:"这个CPU支持我们最新的TSX功能!".


作为参考,我在假设"TSX-NI"指的是"TSX RTM"的情况下,对英特尔TSX的两个部分做了简要介绍.
完整的参考资料可以在英特尔手册1 - 第15章中找到.

HLE

HLE(硬件锁定Elision)部分向后兼容.
我们仍然可以使用CPUID.07H.EBX.HLE [bit 4]测试其可用性,但它是通过更改前缀repne/ 语义来repe实现的.

此功能包含两个"新"前缀:xacquirexrelease.CPU现在能够进入事务状态,其中每个读取都被添加到事务的读取集中,并且每个写入都被添加到事务的写入集中,并且不会执行到内存.
粒度是缓存行的大小.

如果线程从读取集读取,或写入另一个线程的读取集或写入集,则中止事务.
CPU恢复在事务开始时的架构状态,并以非事务方式重新执行指令.
如果事务成功完成,则所有已写入的内存将完全原子地提交.

交易由xacquire和分隔xrelease.
它们可以嵌套,但是深度有限制(在此之上事务被中止)以及可以省略的不同锁的数量(超过CPU不会忽略新锁但不会中止事务).
当嵌套事务中止时,CPU将重新启动执行最外层事务.

xacquire(操作码F2,相同repne)用于获取锁定的指令(即写入锁定)并标记事务的开始.
此读取不会添加到写入集中(或者,当每个线程写入锁定并且将立即中止任何后续事务时,不会发生并发).
它被添加到读集中.

xrelease(操作码F3)用于释放锁定并标记事务结束的指令前面.
xrelease必须在与其xacquire配对的同一锁上使用并完成交易.

xacquire只能与lock这些说明的d版本一起使用:ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADD, XCHG.
xrelease使用相同的指令加上MOV mem, regMOV mem, imm不带lock前缀.

xtest如果存在HLE(或RTM),则可以使用新指令,它设置ZF是处理器不在事务内.

RTM

RTM(受限制的事务性内存)不向后兼容.
可以使用CPUID.07H.EBX.RTM [bit 11]进行测试.

它引入了三个新指令:xbegin,xendxabort.
它们只是已指定且常见的事务执行功能的新接口.

xbegin必须提供,作为一个相对偏移,指针到回退代码路径.
只要事务无法提交,就会执行此代码.
在这种情况下eax持有中止的原因.
xend结束事务并指示CPU提交它.
xabort让程序员使用自定义错误代码显式中止事务.

英特尔不保证处理器成功提交事务的能力.
虽然HLE具有一组非常具体的条件,但RTM是一种"尽力而为"的功能 - 因此需要回退代码.

RTM比HLE更低级,它允许程序员使用事务性内存,无论是否使用锁.

混合HLE和RTM

引用英特尔:

HLE和RTM嵌套在一起的行为-HLE在RTM内部或RTM内的HLE-是特定于实现的.但是,在所有情况下,实现都将保持HLE和RTM语义.当在RTM区域内使用时,实现可以选择忽略HLE提示,并且当在HLE区域内使用RTM指令时可以导致事务中止.在后一种情况下,从事务执行到非事务执行的转换无缝地发生,因为处理器将重新执行HLE区域而不实际进行省略,然后执行RTM指令.


推荐阅读
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
author-avatar
罂粟花wd2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有