![Page 1: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/1.jpg)
Speculative Multithreading in a Java Virtual Machine
Chris Pickett and Clark VerbruggeSchool of Computer Science
McGill University
May 17, 2005
![Page 2: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/2.jpg)
Outline
1 Introduction
2 Design
3 Experimental Analysis
4 Conclusions and Future Work
![Page 3: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/3.jpg)
Outline
1 Introduction
2 Design
3 Experimental Analysis
4 Conclusions and Future Work
![Page 4: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/4.jpg)
Motivation
Speculative multithreading (SpMT) has great promise:
Dynamic parallelisation of irregular, non-numerical programsGood potential for speedup in Java (1.5 to 5.0 over SPECjvm98 ona simulated 8-way machine).
Simulated hardware is the primary target; software SpMT is rare.
Not being hardware people, we wanted to try our hand at asoftware implementation.
The Java Virtual Machine provides a convenient hardwareabstraction layer.
Decided to use SableVM, our lab’s free/open source JVM.
![Page 5: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/5.jpg)
Speculative Method-Level Parallelism (SMLP)
![Page 6: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/6.jpg)
Contributions
1 First complete implementation of (SMLP-based) SpMT in a (Java)virtual machine (SableVM)
2 Ability to run SPECjvm98 at size 100
3 Single-threaded simulation and true multithreaded execution modes
4 Experimental analysis of overhead costs and parallelism achieved
Unfortunately, no speedup :(
![Page 7: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/7.jpg)
Outline
1 Introduction
2 Design
3 Experimental Analysis
4 Conclusions and Future Work
![Page 8: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/8.jpg)
Execution Environment
![Page 9: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/9.jpg)
Parallel Instruction Code Arrays
![Page 10: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/10.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
![Page 11: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/11.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
![Page 12: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/12.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
PUTFIELD always sometimes first time sometimes
PUTSTATIC always first time first time
<X>ASTORE always sometimes sometimes
![Page 13: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/13.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
PUTFIELD always sometimes first time sometimes
PUTSTATIC always first time first time
<X>ASTORE always sometimes sometimes
(I|L)(DIV|REM) sometimes sometimes
ARRAYLENGTH sometimes sometimes
CHECKCAST sometimes first time sometimes
ATHROW always always
INSTANCEOF first time sometimes
![Page 14: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/14.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
PUTFIELD always sometimes first time sometimes
PUTSTATIC always first time first time
<X>ASTORE always sometimes sometimes
(I|L)(DIV|REM) sometimes sometimes
ARRAYLENGTH sometimes sometimes
CHECKCAST sometimes first time sometimes
ATHROW always always
INSTANCEOF first time sometimes
RET sometimes
![Page 15: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/15.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
PUTFIELD always sometimes first time sometimes
PUTSTATIC always first time first time
<X>ASTORE always sometimes sometimes
(I|L)(DIV|REM) sometimes sometimes
ARRAYLENGTH sometimes sometimes
CHECKCAST sometimes first time sometimes
ATHROW always always
INSTANCEOF first time sometimes
RET sometimes
MONITORENTER always always always sometimes always
MONITOREXIT always always always sometimes always
![Page 16: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/16.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
PUTFIELD always sometimes first time sometimes
PUTSTATIC always first time first time
<X>ASTORE always sometimes sometimes
(I|L)(DIV|REM) sometimes sometimes
ARRAYLENGTH sometimes sometimes
CHECKCAST sometimes first time sometimes
ATHROW always always
INSTANCEOF first time sometimes
RET sometimes
MONITORENTER always always always sometimes always
MONITOREXIT always always always sometimes always
INVOKE<X> sometimes sometimes sometimes sometimes sometimes first time sometimes
<X>RETURN sometimes sometimes sometimes sometimes sometimes first time sometimes
![Page 17: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/17.jpg)
Modified Java Bytecode Instructions
instruction reads writes locks unlocks allocates throws enters loads forces
global global object object object exception native code classes stop
GETFIELD always sometimes first time sometimes
GETSTATIC always first time first time
<X>ALOAD always sometimes sometimes
PUTFIELD always sometimes first time sometimes
PUTSTATIC always first time first time
<X>ASTORE always sometimes sometimes
(I|L)(DIV|REM) sometimes sometimes
ARRAYLENGTH sometimes sometimes
CHECKCAST sometimes first time sometimes
ATHROW always always
INSTANCEOF first time sometimes
RET sometimes
MONITORENTER always always always sometimes always
MONITOREXIT always always always sometimes always
INVOKE<X> sometimes sometimes sometimes sometimes sometimes first time sometimes
<X>RETURN sometimes sometimes sometimes sometimes sometimes first time sometimes
NEW always always sometimes first time sometimes
NEWARRAY always always sometimes sometimes
ANEWARRAY always always sometimes first time sometimes
MULTIANEWARRAY always always sometimes first time sometimes
LDC STRING first time first time
![Page 18: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/18.jpg)
Fork Decision Factors
Child threads are forked taking several factors into account.
1 Static upper bound on method size
2 Dynamic min, max, and average method sizes
3 History of speculation successes and failures
4 History of sequence lengths
5 Number of zero length threads joined
6 Forced stop due to reaching another child (“elder sibling”)
![Page 19: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/19.jpg)
Forking Speculative Threads
The actual fork process consists of several steps:
1 Copy thread JNIEnv from parent to child
2 Copy parent stack to child
3 Initialize dependence buffer
4 Adjust child’s operand stack height
5 Jump child pc over the INVOKE<X>
6 (optional) Predict return value for non-void methods
![Page 20: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/20.jpg)
Dependence Buffering
![Page 21: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/21.jpg)
Joining Speculative Threads
Every SpMT child eventually reaches one of four terminationconditions:
1 A pre-defined sequence length limit is reached2 The parent thread reaches SPMT JOIN and signals the child3 The parent thread throws an uncaught exception, and signals the
child4 Unsafe control flow is encountered
Once stopped, we begin the validation process.
![Page 22: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/22.jpg)
Joining Speculative Threads
Validation consists of 4 steps
1 Verify return value (if any)2 Check number of GC’s in child3 Dependence buffers checked for corruption, overflow4 Values in read buffer compared with main memory
If validation succeeds, then:
Values in write buffer are flushed to main memoryChild stack frames are copied to parentNon-speculative execution resumes where the child left off
Otherwise, the child is aborted.
![Page 23: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/23.jpg)
Single-threaded Simulation Mode
![Page 24: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/24.jpg)
Multithreaded Mode
![Page 25: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/25.jpg)
Intricacies of the Java Language
There are four Java-specific problems:1 Native methods2 Garbage collection3 Exceptions4 Synchronization
![Page 26: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/26.jpg)
Native Methods
Java allows for execution of non-Java, i.e. native code
Native methods can be found in:
Class librariesUser codeVM-specific method implementations
Native methods are needed for (amongst other things):
Thread managementTimingAll I/O operations
Safe to fork children if parents encounter native methods
Unsafe for children to enter native code
![Page 27: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/27.jpg)
Garbage Collection
SableVM uses a simple semi-space copying collector
Child threads started before GC are invalidated after GC
Could be fixed by pinning objects, or by updating references in thedependence buffers.
Child threads are invisible to the collector, and can continueexecution during GC.
We are able to allocate objects speculatively
Heap is protected by global mutexInstead of OutOfMemoryError, speculation stopsDisadvantage is increased collector pressure from failed threads
![Page 28: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/28.jpg)
Exceptions
Speculatively, exceptions force threads to stop immediately
Exceptions are rarely encounteredWriting a speculative exception handler is trickySpeculative exceptions are likely to be incorrect
Non-speculatively, exceptions can be thrown and caught in theparent
If uncaught, children are aborted one-by-one as stack frames arepopped
Since method calls frequently occur in exception handlers, wemight expect to fork children inside them.
This is safe!
![Page 29: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/29.jpg)
Synchronization
Java allows for synchronization on a per-method and per-objectbasis
Safe non-speculatively, unsafe speculatively
However, we can start child threads once inside a critical section;only entering and exiting is prohibited
Speculative Locking allows for critical sections to be entered andexited speculatively
We’ll look into this in the future
![Page 30: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/30.jpg)
Outline
1 Introduction
2 Design
3 Experimental Analysis
4 Conclusions and Future Work
![Page 31: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/31.jpg)
Speculation Overhead
![Page 32: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/32.jpg)
Non-speculative Thread Overhead Breakdown
execution comp db jack javac jess mpeg mtrt rt
bytecode 39% 24% 29% 30% 21% 59% 49% 58%
fork 6% 15% 13% 13% 11% 5% 3% 4%
enqueue 4% 10% 10% 9% 7% 3% 2% 2%
join 53% 59% 57% 56% 67% 34% 47% 36%
pred update 7% 13% 12% 11% 12% 6% 7% 7%
dequeue 5% 5% 5% 4% 5% 2% 2% 2%
wait 15% 14% 11% 11% 19% 8% 26% 11%
pred check 4% 4% 4% 5% 7% 3% 2% 3%
buffer check 4% 6% 6% 5% 5% 3% 1% 2%
child pass 5% 5% 7% 6% 6% 3% 2% 3%
child fail <1% <1% <1% <1% <1% <1% <1% <1%
cleanup <1% <1% <1% <1% <1% <1% <1% <1%
![Page 33: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/33.jpg)
Speculative Thread Overhead Breakdown
execution comp db jack javac jess mpeg mtrt rt
child wait 86% 82% 78% 78% 78% 55% 53% 71%
child init 3% 4% 4% 4% 4% 2% 5% 4%
child run 9% 12% 16% 16% 17% 41% 40% 24%
child cleanup <1% <1% <1% <1% <1% <1% <1% <1%
bytecode 58% 50% 65% 64% 57% 83% 51% 56%
fork 35% 40% 28% 29% 36% 13% 41% 36%
pred query 33% 38% 25% 26% 33% 11% 38% 33%
join 2% 2% 2% 2% 2% 1% 2% 2%
![Page 34: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/34.jpg)
Speculative Thread Sizes (single-threaded simulation)
-100-90-80-70-60-50-40-30-20-10
0 10 20 30 40 50 60 70 80 90
100
0 10 20 30 40 50 60 70 80 90 100
Per
cent
age
of s
pecu
lativ
e th
read
s
Speculative thread size in Java bytecode instructions
Passed ThreadsFailed Threads
![Page 35: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/35.jpg)
Speculative Thread Sizes (multithreaded mode)
-100-90-80-70-60-50-40-30-20-10
0 10 20 30 40 50 60 70 80 90
100
0 10 20 30 40 50 60 70 80 90 100
Per
cent
age
of s
pecu
lativ
e th
read
s
Speculative thread size in Java bytecode instructions
Passed ThreadsFailed Threads
![Page 36: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/36.jpg)
Speculative Coverage (no RVP)
0
10
20
30
40
50
60
70
80
90
100
1 2 3 4
byte
code
inst
ruct
ions
exe
cute
d sp
ecul
ativ
ely
in p
aral
lel (
%)
number of processors
compressdb
jackjavacjess
mpegaudiomtrt
raytrace
![Page 37: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/37.jpg)
Speculative Coverage (with RVP)
0
10
20
30
40
50
60
70
80
90
100
1 2 3 4
inst
ruct
ions
exe
cute
d in
par
alle
l (%
)
number of processors
compressdb
jackjavacjess
mpegaudiomtrt
raytrace
![Page 38: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/38.jpg)
Outline
1 Introduction
2 Design
3 Experimental Analysis
4 Conclusions and Future Work
![Page 39: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/39.jpg)
Conclusions
Automatic parellisation is a difficult goal
We provide a complete design and working implementation
The full Java language is handled
Overhead costs show where to focus optimisation efforts
We showed an increase in parallelism as:
Processors are addedReturn value prediction is added
SableSpMT is a good base for future research
![Page 40: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/40.jpg)
Future Work in SableVM
Eliminate overhead costs
Implement speculative locking
Look at processor scalability
Allow for children to fork children
Load value prediction
Compiler analyses
Speculative dependencesFinding good fork points
Clarify memory model issues
Compare sequential algorithms running under SpMT against theirhand-parallelised equivalents (start with JOlden).
![Page 41: Speculative Multithreading in a Java Virtual Machine · Speculative multithreading (SpMT) has great promise: Dynamic parallelisation of irregular, non-numerical programs Good potential](https://reader034.vdocuments.us/reader034/viewer/2022042921/5f6bdb66d551cd59840dce95/html5/thumbnails/41.jpg)
Future Work in Testarossa and J9
Implement this design in IBM’s Testarossa JIT / J9 VM
Initial target is PPC (Power4, Power5)
Assembly versions of dependence buffer and value predictors
Some mechanism to switch between non-speculative andspeculative code (e.g. on-stack replacement)
Goal is speedup and an (eventual) PLDI or OOPSLA paper