作者:罂粟花wd2010 | 来源:互联网 | 2023-02-10 14:42
我在英特尔的页面上找到了
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
实现的.
此功能包含两个"新"前缀:xacquire
和xrelease
.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, reg
和MOV mem, imm
不带lock
前缀.
xtest
如果存在HLE(或RTM),则可以使用新指令,它设置ZF是处理器不在事务内.
RTM
RTM(受限制的事务性内存)不向后兼容.
可以使用CPUID.07H.EBX.RTM [bit 11]进行测试.
它引入了三个新指令:xbegin
,xend
和xabort
.
它们只是已指定且常见的事务执行功能的新接口.
在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指令.