Talk:Transactional Synchronization Extensions

The Intel TSX erratum fix is the first "unsafe" Intel microcode update
An interesting point: The Intel microcode update that disabled TSX is the first microcode update that violates the "microcode updates must be safe at all times" tradition that was in effect since 1995, and this fact is somewhat noteworthy.

Applying the microcode update really disables Intel TSX: it doesn't just clear the relevant cpuid bits, but also causes every Intel TSX instruction to trap with the illegal opcode exception. In a modern Linux distro, this will crash every multithreaded application linked to glibc's libpthread, causing data loss. To be safe, this microcode update must be applied very early at boot, before any programs that might attempt to use the Intel TSX instructions are started.

177.22.137.250 (talk) 14:15, 23 September 2014 (UTC)


 * Hello! Good remark, I've  as an external link. &mdash; Dsimic (talk | contribs) 04:47, 26 September 2014 (UTC)

Intel TSX Vs TSX-NI
According to Intel:
 * The Intel Xeon Gold 6234 Processor has TSX-NI.
 * The Intel Xeon Gold 6244 Processor has TSX.

Clicking on the little question marks on the Intel website displays:


 * Intel Transactional Synchronization Extensions (Intel TSX) are a set of instructions that add hardware transactional memory support to improve performance of multi-threaded software.


 * Intel Transactional Synchronization Extensions New Instructions (Intel TSX-NI) are a set of instructions focused on multi-threaded performance scaling. This technology helps make parallel operations more efficient via improved control of locks in software.

Unlike pretty much every other feature, where the Bronze and Silver processors lack the feature while the Gold and Platinum processors have it, whether a processor is listed as having TSX or TSX-NI seems random.

Could it be that these are the exact same thing but two people at Intel added two slightly different names and descriptions? If not, what is the difference? Either way, the Wikipedia page at Transactional Synchronization Extensions should document it the difference or lack thereof. --Guy Macon (talk) 03:26, 22 February 2020 (UTC)

I believe that I have an answer, and unless anyone objects I will update the page.

My citation is Intel Transactional Synchronization Extensions (Intel TSX) Overview

I believe that the lead of the Transactional Synchronization Extensions page should be changed to:


 * Transactional Synchronization Extensions (TSX), also called Transactional Synchronization Extensions New Instructions (TSX-NI), is an...

and


 * ...According to different benchmarks, TSX/TSX-NI can provide...

Here is what the citation says about it:


 * Intel TSX provide two software interfaces to specify regions of code for transactional execution.


 * Hardware Lock Elision (HLE) is a legacy-compatible instruction set extension (comprising the XACQUIRE and XRELEASE prefixes) to specify transactional regions. HLE is for programmers who prefer the backward compatibility of the conventional mutual-exclusion programming model and would like to run HLE-enabled software on legacy hardware, but would like to take advantage of new lock elision capabilities on hardware with HLE support.


 * Restricted Transactional Memory (RTM) is a new instruction set interface (comprising the XBEGIN, XEND, and XABORT instructions) for programmers to define transactional regions in a more flexible manner than that possible with HLE.


 * RTM is for programmers who prefer a flexible interface to the transactional execution hardware.

This and similar pages saying the same thing are the only references that talk about new instructions. There appears to be no such thing as "TSX" outside of "TSX-NI" --Guy Macon (talk) 09:45, 22 February 2020 (UTC)

TSX Vs TSX-NI
As discussed at Reference desk/Computing, According to Intel:
 * The Intel Xeon Gold 6234 Processor has TSX-NI.
 * The Intel Xeon Gold 6244 Processor has TSX.

Clicking on the little question marks on the Intel website displays:


 * Intel Transactional Synchronization Extensions (Intel TSX) are a set of instructions that add hardware transactional memory support to improve performance of multi-threaded software.


 * Intel Transactional Synchronization Extensions New Instructions (Intel TSX-NI) are a set of instructions focused on multi-threaded performance scaling. This technology helps make parallel operations more efficient via improved control of locks in software.

Both of the above processors appear to have the exact same instruction set, and every online definition of Intel TSX or Intel TSX-NI list the same instructions. It appears that Intel has has started calling TXS TSX-NI (the same "new instructions" naming convention that they are using in many areas) but plenty of older documents -- including many at Intel -- still call it TSX.

This appears to be unrelated to the fact that the original version of TSX had a flaw and was redesigned. It does not appear that that redesign changed the name or added/removed any instructions but rather made the new instructions work properly. If anyone has a source showing otherwise, please post it.

Intel Transactional Synchronization Extensions (Intel TSX) Overview says:


 * Intel TSX provide two software interfaces to specify regions of code for transactional execution.


 * Hardware Lock Elision (HLE) is a legacy-compatible instruction set extension (comprising the XACQUIRE and XRELEASE prefixes) to specify transactional regions. HLE is for programmers who prefer the backward compatibility of the conventional mutual-exclusion programming model and would like to run HLE-enabled software on legacy hardware, but would like to take advantage of new lock elision capabilities on hardware with HLE support.


 * Restricted Transactional Memory (RTM) is a new instruction set interface (comprising the XBEGIN, XEND, and XABORT instructions) for programmers to define transactional regions in a more flexible manner than that possible with HLE.


 * RTM is for programmers who prefer a flexible interface to the transactional execution hardware.

...which matches what our article says.

I have changed "TSX" to "TSX/TSX-NI" in the article to better match the terms Intel uses. --Guy Macon (talk) 17:59, 23 February 2020 (UTC)