Actually yes, the instructions are backwards compatible. You can run this code today, on a SB CPU and it is just ignored and it falls back to the old locking method.
So do compilers/runtimes supporting TSX insert a check for the CPU ID?
Actually yes, the instructions are backwards compatible. You can run this code today, on a SB CPU and it is just ignored and it falls back to the old locking method.
So do compilers/runtimes supporting TSX insert a check for the CPU ID?
Transactional memory is one big step from intricate procedural programming for space and logic-starved hardware, towards predicated programming for bandwidth-starved logic-rich hardware. In pure software, editing common data structures can eat up more time in the STM system than they are doing work, which is where hardware support for the grunt work should help immensely. More or less bandwidth is going to be dependent on implementation (software more than hardware, provided you have hardware support), and the specific kind of work the software does (in particular, what's the likelihood of cache line crossing on a regular basis?). It should use less, normalized to the same amount of results, but saying it will, across the board, I think would be a bit naive.Does TM require additional memory bandwidth over the existing locking methods, or is it just used more efficiently as the # of threads increase? My understanding is that this would provide minimal impact in a small number of threads, but the performance delta as the # of threads goes up can be huge.
PS. Interesting chart IDK, where is it from?
From my doctoral dissertation, meaning eons ago, carved into rocks that dinosaurs then crapped on![]()
