part1_slides.ppt

Download Report

Transcript part1_slides.ppt

Speculative Multiprocessing
15-740 Computer Architecture
Alex Groce
Ioannis Koutis
Martin Zinkevich
November 6, 2000
What is the problem?
• We want to make a serial program run fast
on several processors.
• It MUST appear to the user as if it was all
run sequentially as written.
• Sometimes, dependencies are predictable:
simulations, array multiplications, etc.
Why?
• When is it not so easy?
Possible Parallelism
• Hashing: you are doing multiple manipulations on
a hash table. They sometimes collide, but not
often.
Hash H;
H.add(“dog”, ”brown”);
H.add(“cat”, “black”);
H.add(“bag”, “green”);
H.add(“house”, “blue”);
H.get(“bag”);
Possible Parallelism
• DAGs: you want to do a depth-first traversal, and
it is a tree-like structure, but not exactly.
void traverse(TreeNode N){
if (N==null)
return;
traverse(N.left);
traverse(N.right);
doStuff(N);
}
Thread-Level Speculation
• Thread-Level Speculation is taking
sequential code and breaking it down into a
sequence of epochs, and executing these
epochs in parallel.
• How do we form the epochs?
• How do we detect data dependencies at
runtime?