Hybrid STM/HTM for Nested Transactions on OpenJDK
-
Upload
antony-hosking -
Category
Software
-
view
264 -
download
3
Transcript of Hybrid STM/HTM for Nested Transactions on OpenJDK
![Page 1: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/1.jpg)
Hybrid STM/HTM for Nested Transactions on OpenJDK
Keith ChapmanPurdue U
Tony HoskingANU/Data61, Purdue U
Eliot MossUMass
![Page 2: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/2.jpg)
MotivationSTM has been around for ages
• But STM is slow
Commodity hardware for transactions available now
• But HTM approaches are only best effort
Out goal: Accelerate STM with HTM when possible
![Page 3: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/3.jpg)
Nested TransactionsAllow composition of transactions
Two flavors
• Closed Nested Transactions
• HTM inside STM not useful; must do all the same work
• Open Nested Transactions
• HTM inside STM avoids most TM work – HTM well-suited!
![Page 4: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/4.jpg)
XJ: Transactional JavaXJ Language
• Supports flat and closed/open/boosted nested transactions
The implementation supports hybrid transactions
• HTM support via Intel TSX
• HTM and STM can co-exist
Uses an Optimistic-reads / Pessimistic-writes protocol
![Page 5: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/5.jpg)
TM Metadata
Txn Log
0 0Version # 0 0 0Txn ID 1
One metadata word for every object
![Page 6: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/6.jpg)
STM Transaction Protocol (Read)
T1 Log
0 00 0
![Page 7: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/7.jpg)
STM Transaction Protocol (Read)
T1 Log
0 00 0
Check Mode
![Page 8: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/8.jpg)
STM Transaction Protocol (Read)
T1 Log
0 0
0 0
T1 Read
![Page 9: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/9.jpg)
STM Transaction Protocol (Read)
T1 Log
0 0
0 0
T1 Validate
![Page 10: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/10.jpg)
STM Transaction Protocol (Read)
T1 Log
0 0
T1 Commit
![Page 11: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/11.jpg)
0 0
STM Transaction Protocol (Write)
T1 Log
![Page 12: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/12.jpg)
0 0
STM Transaction Protocol (Write)
T1 Log
Check Mode
![Page 13: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/13.jpg)
T1 1
0 0
STM Transaction Protocol (Write)
T1 Log
T1 Write
![Page 14: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/14.jpg)
T1 1
0 0
STM Transaction Protocol (Write)
T1 Log
T1 Write
![Page 15: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/15.jpg)
T1 1
0 0
STM Transaction Protocol (Write)
T1 Log
T1 Write
![Page 16: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/16.jpg)
T1 11 0
STM Transaction Protocol (Write)
T1 Log
T1 Commit
![Page 17: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/17.jpg)
STM Conflict Detection
T1 Log
0 00 0
T2 Log
0 0
![Page 18: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/18.jpg)
STM Conflict Detection
T1 Log
0 0
0 0
T2 Log
0 0
T1 Read
![Page 19: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/19.jpg)
STM Conflict Detection
T1 Log
0 0
0 0
T2 Log
0 0
T2 Write
T2 1
![Page 20: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/20.jpg)
STM Conflict Detection
T1 Log
0 0
0 0
T2 Log
0 0
T1 Validate
T2 1
![Page 21: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/21.jpg)
STM Conflict Detection
T1 Log
0 0
T2 Log
0 0
T1 Abort
T2 1
![Page 22: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/22.jpg)
Hybrid Transaction ProtocolSTM – HTM conflicts detected by lock word accesses
• Explicit XABORT if locked by another transaction
• HTM reads – Read the metadata word
• STM writes modify the metadata word
• Causes HTM to abort
• HTM writes – Increment version number
• Causes STM read invalidation / HTM abort
![Page 23: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/23.jpg)
Abstract Locking &
Undo Operations
![Page 24: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/24.jpg)
Abstract Locks for STM
Open / Boosted Atomic Method Body
Acquire abstract locks
Release abstract locks
If top level transaction
Open / Boosted Atomic Method Body
Acquire abstract locks
Log abstract locks
If nested transaction
Log undo operations
![Page 25: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/25.jpg)
Abstract Locks for Hybrid TM
Open / Boosted Atomic Method Body
Validate abstract locks
Open / Boosted Atomic Method Body
Acquire abstract locks
Log abstract locks
If top level is HTM
Log undo operations
![Page 26: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/26.jpg)
Why Validation Works• HTM vs STM
• If abstract locks conflict they must touch some same physical words in the abstract locking data structure — otherwise they could not detect the conflict
Open / Boosted Atomic Method Body
Validate abstract locks
![Page 27: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/27.jpg)
Why Validation Works• HTM vs STM
• If abstract locks conflict they must touch some same physical words in the abstract locking data structure — otherwise they could not detect the conflict
• HTM vs HTM
• No conflict in the locking data structure because all accesses to it are reads
• Any real conflicts that exist will occur on the actual data structure
Open / Boosted Atomic Method Body
Validate abstract locks
![Page 28: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/28.jpg)
STM and HTM Methods
STM needs logging HTM doesn't
Different actions during read/write
Different actions for abstract locks
HTM should fall back to STM
![Page 29: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/29.jpg)
STM and HTM Methods
STM needs logging HTM doesn't
Different actions during read/write
Different actions for abstract locks
HTM should fall back to STM
Maintain separate HTM and STM versions of methods
![Page 30: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/30.jpg)
STM Method Variants
Original(Non-txnal)
![Page 31: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/31.jpg)
STM Method Variants
Original(Non-txnal)
Can callA B
![Page 32: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/32.jpg)
STM Method Variants
Original(Non-txnal)
Top-level Txn STM
Can callA B
![Page 33: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/33.jpg)
STM Method Variants
Original(Non-txnal)
Top-level Txn STM
Can callA B
![Page 34: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/34.jpg)
STM Method Variants
STM Transactionalized
Original(Non-txnal)
Top-level Txn STM
Can callA B
![Page 35: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/35.jpg)
STM Method Variants
STM Transactionalized
Original(Non-txnal)
Top-level Txn STM
Can callA B
![Page 36: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/36.jpg)
STM Method Variants
STM Transactionalized
Original(Non-txnal)
New nested Txn STM
Top-level Txn STM
Can callA B
![Page 37: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/37.jpg)
STM Method Variants
STM Transactionalized
Original(Non-txnal)
New nested Txn STM
Top-level Txn STM
Can callA B
![Page 38: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/38.jpg)
STM Method Variants
STM Transactionalized
Original(Non-txnal)
New nested Txn STM
Top-level Txn STM
Can callA B
![Page 39: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/39.jpg)
STM Method Variants
STM Transactionalized
Original(Non-txnal)
New nested Txn STM
Top-level Txn STM
Can callA B
![Page 40: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/40.jpg)
Hybrid TM Method VariantsOriginal
(Non-txnal)
![Page 41: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/41.jpg)
Hybrid TM Method VariantsOriginal
(Non-txnal)Can callA B
![Page 42: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/42.jpg)
Hybrid TM Method Variants
Router
Original(Non-txnal)Can call
A B
![Page 43: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/43.jpg)
Hybrid TM Method Variants
Router
Original(Non-txnal)Can call
A B
![Page 44: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/44.jpg)
Hybrid TM Method Variants
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 45: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/45.jpg)
Hybrid TM Method Variants
Top-level Txn HTM
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 46: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/46.jpg)
Hybrid TM Method Variants
HTM Transactionalized
Top-level Txn HTM
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 47: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/47.jpg)
Hybrid TM Method Variants
HTM Transactionalized
Top-level Txn HTM
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 48: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/48.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 49: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/49.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 50: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/50.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 51: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/51.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 52: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/52.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
Router
Original(Non-txnal)Can call
A B
![Page 53: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/53.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router
Original(Non-txnal)Can call
A BParent is closed
A B
![Page 54: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/54.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router
Original(Non-txnal)Can call
A BParent is closed
A B
![Page 55: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/55.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router
Original(Non-txnal)Can call
A BParent is closed
A B
![Page 56: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/56.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router Nested Router
Original(Non-txnal)Can call
A BParent is closed
A B
Parent is openA B
![Page 57: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/57.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router Nested Router
Original(Non-txnal)Can call
A BParent is closed
A B
Parent is openA B
![Page 58: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/58.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
New nestedTxn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router Nested Router
Original(Non-txnal)Can call
A BParent is closed
A B
Parent is openA B
![Page 59: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/59.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
New nestedTxn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router Nested Router
Original(Non-txnal)Can call
A BParent is closed
A B
Parent is openA B
![Page 60: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/60.jpg)
Hybrid TM Method Variants
Optimized New nested Txn
HTMHTM
Transactionalized
Top-level Txn HTM
New nestedTxn HTM
STMTransactionalized
Top-level Txn STM
New nestedTxn STM
Router Nested Router
Original(Non-txnal)Can call
A BParent is closed
A B
Parent is openA B
![Page 61: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/61.jpg)
XJ System Architecture
![Page 62: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/62.jpg)
XJ System Architecture
XJ source code
![Page 63: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/63.jpg)
XJ System Architecture
XJ source code XJ Compilerstandard Java
bytecode
compile
![Page 64: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/64.jpg)
XJ System Architecture
XJ source code XJ Compilerstandard Java
bytecode XJ Rewriterbytecode
+ run-time calls
compile load
![Page 65: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/65.jpg)
XJ System Architecture
XJ source code
XJ run-time library
XJ Compilerstandard Java
bytecode XJ Rewriterbytecode
+ run-time callsHTM-enabled
JVM
compile load run
![Page 66: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/66.jpg)
XJ System Architecture
HTM 4-5 times faster than STM
XJ source code
XJ run-time library
XJ Compilerstandard Java
bytecode XJ Rewriterbytecode
+ run-time callsHTM-enabled
JVM
compile load run
![Page 67: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/67.jpg)
VM ModificationsKept to a minimum
Modifications done on OpenJDK:
• Native methods to begin, end, and abort a HW transaction
• Made them intrinsic to the HotSpot C1/C2 compilers
Had to go through several hoops to get HTM to work with HotSpot’s optimizing compilers
![Page 68: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/68.jpg)
Results
![Page 69: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/69.jpg)
SynchrobenchMicro-benchmarks to evaluate synchronization performance on various data structures
Added ability to run multiple operations within a single transaction (group size)
Included XJ versions of the benchmarks
• TransactionalFriendlyTreeSet
48-way, Intel Xeon E5-2690 v3 machine with 2 sockets of 12 hyperthreaded cores
![Page 70: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/70.jpg)
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Open nestedClosed nested
Group size 1
5% Updates
![Page 71: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/71.jpg)
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Group size 1Group size 2
Open nestedClosed nested 5% Updates
![Page 72: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/72.jpg)
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Group size 1Group size 2Group size 4
Open nestedClosed nested 5% Updates
![Page 73: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/73.jpg)
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Group size 1Group size 2Group size 4
Group size 8
Open nestedClosed nested 5% Updates
![Page 74: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/74.jpg)
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Group size 1Group size 2Group size 4
Group size 8Group size 16
Open nestedClosed nested 5% Updates
![Page 75: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/75.jpg)
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Thro
ughp
ut (N
orm
aliz
ed)
0
0.2
0.4
0.6
0.8
1
Threads1 2 4 8 12 16 20 24 28 32 36 40 44 48
Group size 1Group size 2Group size 4
Group size 8Group size 16Group size 32
Open nestedClosed nested 5% Updates
![Page 76: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/76.jpg)
0
50
100
150
200
1 2 4 8 12 16 20 24 28 32 36 40 44 48 1 2 4 8 12 16 20 24 28 32 36 40 44 48 1 2 4 8 12 16 20 24 28 32 36 40 44 48
Group size 1 Group size 2 Group size 4
com
mitt
ed o
ps a
nd a
borte
d tx
ns (1
06 )
threads
open htm commitsclosed htm commits
open stm commitsclosed stm commits
htm aborts
![Page 77: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/77.jpg)
ConclusionsSTM and HTM can co-exist for nested transactions in Java
• Closed nesting — Similar to previous schemes
• Open nesting — Novel validation mechanism
• Implemented in OpenJDK on Intel TSX — Artifact evaluated
![Page 78: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/78.jpg)
ConclusionsSTM and HTM can co-exist for nested transactions in Java
• Closed nesting — Similar to previous schemes
• Open nesting — Novel validation mechanism
• Implemented in OpenJDK on Intel TSX — Artifact evaluated
![Page 79: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/79.jpg)
ConclusionsSTM and HTM can co-exist for nested transactions in Java
• Closed nesting — Similar to previous schemes
• Open nesting — Novel validation mechanism
• Implemented in OpenJDK on Intel TSX — Artifact evaluated
When it works, HTM is ~4-5× faster than STM
![Page 80: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/80.jpg)
ConclusionsSTM and HTM can co-exist for nested transactions in Java
• Closed nesting — Similar to previous schemes
• Open nesting — Novel validation mechanism
• Implemented in OpenJDK on Intel TSX — Artifact evaluated
When it works, HTM is ~4-5× faster than STM
Open nesting increases the envelope of effectiveness for HTM
![Page 81: Hybrid STM/HTM for Nested Transactions on OpenJDK](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6e5da67f8b9a665f8b5849/html5/thumbnails/81.jpg)
ConclusionsSTM and HTM can co-exist for nested transactions in Java
• Closed nesting — Similar to previous schemes
• Open nesting — Novel validation mechanism
• Implemented in OpenJDK on Intel TSX — Artifact evaluated
When it works, HTM is ~4-5× faster than STM
Open nesting increases the envelope of effectiveness for HTM
Production VM would need deeper modification