Title: Slides
1Speculative Memory Cloaking And Speculative
Memory Bypassing
???sta?t??a ?e???????? ?.?. 378
?T???, ?a???????? 2002
2??sa????
?s?te????? ?e?t?????e?
- ?a p?????µµata e?te???? e?t???? p?? pa??????
t?µ?? ??a ???e? ?e?t?????e? - ??t?? ?? t?µ?? p??pe? ?a ap????e?t??? e??
pe??µ????? ?a ???s?µ?p??????? ap? ep?µe?e?
?e?t?????e? - ??t? ? es?te???? ?e?t?????a (interoperation)
ep????????a? ???p??e?ta? ???s?µ?p????ta?
?ata????t?? ?a? ?????? ??se?? µ??µ??
S??p?? t?? ?a???s?as?? Ta µe?et?s??µe t??
ep????????a es?te????? ?e?t???????, ? ?p??a
p?a?µat?p??e?ta? µe ap?? ep????????a t?? µ??µ??
3- ????? e??a? ?? µ???d?? ??a t?? ep????????a
µ??µ?? -
- ?? safe?? f??µe? st?? ?p??e? ?? ?ata????se??
(stores) ?a? ?? f??t?se?? (loads) s??d???ta?
µeta?? t??? de? e??a? µ??? d??at??, a??? ?d?????
se ??e? f??µe? ?e???s??, se ??e? ?e?a??????
s???st?se? µ??µ?? ?a? se ????? t??p??? s????? ??a
t?t??e? ?e?a???e? - Ta e?et?s??µe d?? t?t??e? µe??d???
- Te???s? ?p??????? ???µ?? (Speculative Memory
Cloaking) - Te???s? ?a???aµ??? µ??µ?? (Speculative Memory
Bypassing) -
4Te???s? ?p??????? ???µ?? (speculative memory
cloaking) St?? ?e???s? ap??????? µ??µ?? µp????µe
d??aµ??? ?a µetat??p??µe asaf?? ???sµ??e? ??se??
µ??µ?? ????? ?a p???a?e?ta? p??ß??µa st??
?p?????sµ? t?? µ??µ??, ?a? st?? ???f? p??sßas? se
ded?µ??a. G?a ?a t? ep?t????µe ???s?µ?p????µe t??
p??ß?e?? µe µ??µ? (memory dependence prediction)
?ste saf?? ?a s??d?s??µe t?? e?t???? f??t?s??
(load) ?a? ap????e?s?? (stores). ??t?? ?? e?t????
µp????? t?te ?a ep?????????? µe ??a d??aµ????
d?µ???????µe?? ???? ???µ?t?? (name space)
Te???s? ?a???aµ??? ???µ?? (speculative memory
bypassing) ? ?e???s? pa???aµ??? µ??µ?? ep?p????
µe???e? t?? as?fe?a ?ta? ?? e?a?t?µe?e? f??t?se??
?a? ?ata????se?? s???p?????? st? pa??????
e?t????. ??t? ? te????? µetat??pe? t??
DEF-store-load-USE a??s?da e?a?t?se?? se DEF-USE
µ??? (???pe pa?ap??? s??µa). Sa? ap?t??esµa, ??
t?µ?? µp????? ape??e?a? ?a pe??s??? ap? t??
ap?st???a st? (producer) (DEF) st? d??t?
(consumer) (USE).
5? ???µ? ?? ????t??a? ?p????????a? Es?te?????
?e?t??????? (?emory as an Inter-operation
Communication Agent) ?? e?t???? f??t?s?? (load)
?a? ?ata????s?? (store) ? ? d?e????s? p??
???s?µ?p??e?ta?, de? d????? ?aµ?a a priori
??de??? t?? ep????????a? p?? ?a s?µße?. ?p?µ????
??a ?a a????e??e? ? ep????????a ?a? ?a
e??atasta???? ?? s??d?se?? ep????????a?, ??
e?t???? load ?a? store p??pe? ?a ?p?????s??? µ?a
d?e????s? (address) ?a? ?a pe??s??? ?ts? st??
saf??e?a. ??s? ? ?p?????sµ?? d?e????se?? ?s? ?a?
? saf??e?a p?? ep?t?????eta? e?s????? µ?a
ep?ß????s?, µ?a? ?a? ?? t?µ?? µp??e? ?a e??a?
d?a??s?µe? a??et? p??? ??p??a e????e?a
?????????e?. ??a pa??de??µa fa??eta? st? pa?a??t?
s??µa ?p?? ? ep????????a ?a ??ße? µ???? a??µesa?
st?? e?t???? STORE ?a? LOAD (Part A)
6???ß?e?? ????t?s?? ???µ?? (?emory dependence
prediction) ? es?te???? ?e?t?????a
(inter-operation) ep????????a? ?d??e? se a???????
(RAW) e?a?t?se??. ??a saf?? a?apa??stas? t??
ep????????a? µ??µ?? apa?te? a?apa??stas? t??
a?t?st????? e?a?t?se??. St?? p??s????s? a?t?
???s?µ?p???saµe p??ß?e?? e???t?s?? µ??µ?? (memory
dependence prediction) ??a ?a e?f??s??µe t??
e?a?t?se?? d??aµ???. ???ad? a)
???s?µ?p???saµe d??aµ??? ep??e?µ??? ?st?????
p????f???a ??a ?a p??ß?????µe t?? µe????t????
e?a?t?se?? ß) ?et? ???s?µ?p???saµe a?t?? t??
?e???t???? e?a?t?se?? ??a ?a d?µ??????s??µe ??a
d??aµ??? ???? ???µ?t?? (name space) ?p?? ??
e?a?t?µe?e? e?t???? load ?a? store µp????? ?a
ep?????????? ????? ?a ?f?stata? t?? ep?ßa???se??
(overhead) t?? ßas?sµ???? se d?e????s?
(address-based) ep????????a?
7?????s? t?? ????s?? ???µ?? (Memory Traffic
Analysis) ?a???s???eta? µ?a eµpe????? µe??t? t??
????s?? t?? ep????????a? µ??µ?? ???s?µ?p????ta?
t? SPEC95 benchmark p??? st? MIPS-I. G?a ?a
????µe µ?a e?t?µ?s? a) t?? p?s?st?? t??
?e?t??????? t?? µ??µ??,p?? µp????µe ?a
e??p??et?s??µe µe ??a µ??a??sµ? ßas?sµ??? st??
e???t?s? ?a? ß) t?? p?s? ap????e?s? µp??e? ?a
apa?t?s??µe ??a a?t?? t?? ?e???t??? saf?
ep????????a, µet??µe t? p?s?st? t?? e?t???? load
p?? d??ßasa? µ?a t?µ? p?? d?µ?????????e ap? µ?a
p??????µe?? e?t??? store (a??????? e?a?t?se??).
?et??µe a?t? t? ?a?a?t???st??? sa? µ?a s????t?s?
t?? ap?stas?? ap????e?s?? (store distance). ??t?
????eta? sa? ? a???µ?? t?? µ??ad???? d?e????se??
p?? ap????e?t??a? µeta?? t?? e?a?t?µe??? e?t????
se ??a d??aµ??? ?e?µa e?t????.
8- Te???s? ?p??????? ???µ?? (1)
- (Speculative Memory Cloaking)
- ? ap?????? ap?s??pe? st?? ep????????a µ??µ?? µe
t? ?a µetat??pe? d??aµ??? t?? asaf? ?ept?µe?? ???
t?? ep????????a? se µ?a saf? f??µa. Se a?t? t??
µ???d? ???s?µ?p??e?ta? ? p??ß?e?? e???t?s?? ??a
?a p?st?p???se? e?a?t?µe?e? e?t???? loads ?a?
stores µe µe???? p??a??t?ta. ????? µ?a e???t?s?
?e????e? p??ß????µ? t?te ?? e?a?t?µe?e? e?t????
loads ?a? stores µe saf??e?a s??d???ta? µe ??a
?a???????? ???µa , a synonym , t? ?p??? µ??ad???
p?st?p??e? t?? e???t?s? - ??p???? µp??e? ?a a?a??t??e? p?? ???s?µ?p????ta?
??a d?af??et??? ???µa µp??e? ?a ß????se? st??
ep????????a - ? ap??t?s? ß??s?eta?
- st? f?s? t?? s?s?et?sµ?? µeta?? t?? ???µ?t?? ?a?
t?? e?t???? p?? ta ???s?µ?p????? ?a? - st?? p????f???a p?? s?et??eta? µe t?? ?pa??? t??
???µ?t?? a?t??.
9Te???s? ?p??????? ???µ?? (2) (Speculative
Memory Cloaking) Se a?t??es? µe µ?a d?e????s?,
t? s?????µ? p?st?p??e? µ??ad??? t? e?a?t?µe??
?e???? e?t????. ??t? ep?t?epe? st?? e?t???? load
?a? store ?a e?????? t? s?????µ? ßas?sµ??? µ???
st?? ta?t?t?t? t???. ?? s?????µ? µe t? se??? t??
ep?t??pe? s a?t? ?a e?t?p?s??? t?? ?at??????
t?µ?, ????? p??ta ?a e?te??s??? t?? ?p?????sµ?
t?? d?e????s??. ?p?p???? ? µ??ad???? s??d?asµ??
e??? s?????µ?? µe t?? e?t???? load ?a? store
de???e? ?t? ? e?t??? eµp???eta? se µ?????
ap?stas?? ep????????a e?d??e?t?????a?. St??
µe??t? a?t? ?p???t??µe ?t? ? t?µ? p?? d?aß??eta?
ap? µ?a load pa???eta? p??ta ap? µ?a µ??ad???
store.
10Detection and Prediction of Dependences (?????e?s?
?a? p??ß?e?? e?a?t?se??) G?a t? s??p? a?t?
???s?µ?p????µe µ?a p??ß?e?? e???t?s?? ßas?sµ???
st?? ?st????? µ??µ?. ??t? ? p??ß?e?? d???e?e? µe
t? ?a a?a?a??pte? e?a?t?se?? µ??µ?? d?a µ?s?? t??
????? d?e????se?? t?? µ??µ?? (memory address
space) ?a? ???s?µ?p????ta? a?t? t?? p????f???a
??a ?a p??ß??pe? t?? µe????t??? s?µpe??f???
e?a?t?se??. ??af????? µe t?? a????e?s? t??
e???t?s?? µ??µ?? ?p?????? d?? p??ß??µat?sµ?? a)
??? ?? e?a?t?se?? µp????? ?a a?afe????? ?a? ß)
???a e??a? ? ep???µ?t? s??p?? a?t?? t??
µ??a??sµ??, d??ad? ??a p?se? load ?a? store
e?t???? ?a a?a?a???e? e?a?t?se?? ?f?? ?????µe ?a
a???s??? ?? p??ß???e?? ????? st? s?????s?
(pipeline) apa?t??µe ? µ??a??sµ?? a????e?s??
e?a?t?se?? (dependence detection) ?a t??
a?af??e? sa? ?e?????a (store PC, loadPC) S??ep??
?a ??at????? p????? e?a?t?se?? ?ste ?a µp????µe
?a a?a?a?????µe e?a?t?se?? p??? se a??et??
d?e????se??. ??t? e??a? d??at?? e?? d?at???s??µe
µ?a e???af? ap? p??sfate? store (d??ad? ta PC
t???) µa?? µe t?? d?e????s? µ??µ?? se ??a p??a?a
a????e?s?? e?a?t?se?? (Dependence Detection
Table (DDT)).
11Detection and Prediction of Dependences
(2) (?????e?s? ?a? p??ß?e?? e?a?t?se??) Me ??a
t?t??? µ??a??sµ? t? ep?µe?? ß?µa e??a? ?a
s?ed??s??µe ??a s??µa p??ß?e??? ßas?sµ??? st??
?st?????t?ta t?? e???t?s??. ?ts? t? p?? e???
s??µa p??ß?e??? e??a? ?a ?ata??????µe ?a? ?a
p??ß?????µe e?a?t?se?? sa? ?e?????a (load
PC,store PC). ??st???? se ??a t?t??? s??µa ?a
p??pe? ?a a) p??ß??p??µe µeta?? p????? d??at??
e?a?t?se?? (p.?. ??a load ??e? p???? pa?a??µe?a
stores p?? e?a???s??ta? st? ?e?µa
e?t??es??) ?a? ß) p??ß??p??µe p????? e?a?t?se??
t?? ?d?a st??µ? (p.?. ??a store ??e? p????
loads). G?a t??? pa?ap??? ?????? ?e?????µaste
t?? p??ß?e?? e???t?s?? sa? d?ad??as?a d??
ß?µ?t??. St? p??t? ß?µa ???eta? µ?a p??ß?e?? ??a
t? ?? t? d?sµ??? load ? store ??e? µ?a e???t?s?
?a? st? de?te?? ß?µa ? p??ß?e?? ???p??e?ta? ??a
?a ap?fas?se? µe p??? load ? store ? e???t?s?
a?t?st?????eta?.
12??µ??????a S?????µ?? ?a? ?p????????a (Synonym
Generation and Communication)
St?? ap?????? ?? e?t???? store ?e?????? t??
ep????????a, d?µ???????ta? µ?a ??a ??d?s? ??a t?
s?????µ? ?ta? µ?a e???t?s? ??e? p??ß?ef?e?. ???a?
ep???µ?t? ?a d?s??µe d?af??et???? e?d?se?? t??
?d??? s?????µ?? ??a as?s??t?st? ep????????a se
?p???d?p?te d?sµ??? s?µe?? t?? ??????. ??t?
µp??e? ?a apa?t?se? ?a pa?????µe d?af??et????
e?d?se?? ??a d?af??et??? st??µ??t?pa t?? ?d?a?
stat???? e???t?s?? p.?. ?ta? a?t? ta st??µ??t?pa
e??a? ta?t?????a e?e???. ?? p??ß??µa a?t? e??a?
pe??p?? ?µ??? µe t? p??ß??µa t?? µet???µas?a?
?ata????t??, a??? se a?t??es? µe t?? e?a?t?se??
t?? ?ata????t??, ta st??µ??t?pa µ?a? stat????
e???t?s?? µ??µ?? µp??e? ?a ep??a??pt??ta?. ??? t?
a?t?st???? store de? ??e? a??µ? a?t?st?????e?,
???s?µ?p????µe µ?a µ???? d?µ?, t?? p??a?a
µet???µas?a? s?????µ?? (synonym rename table) ??a
?a s?s?et?s??µe t? s?????µ? t?? µe t? sta?µ?
???t?s?? (reservation station) p?? ? store
ß??s?eta?. ??ßa?a a?t? e??a? µ?a a?s??d???
e?t??es? ?a? ??? µ?a a???ß?? ??d?s?.
13?p?ßeßa??s? (Verification) ?pe?d? ? ep????????a
p?? ?aµß??e? µ???? st? ap?????? e??a? ßas?sµ???
st?? p??ß?e?? e???t?s?? ?p??esd?p?te t?µ??
pa?????ta? e??a? ?e???t???? ?a? p??pe? ?a
ep?ßeßa??????. ??t? µp??e? ?a ???e? µe t? ?a
af?s??µe t?? e?a?t?µe?e? e?t???? ?a
ep????????s??? ep?s?? d?a µ?s?? t?? µ??µ??.
??t?µata ???p???s?? (?mplementation Aspects ) ??
ß????t???? d?µ?? p?? ???s?µ?p?????ta? e??a? ??
a??????e? ???a?a? a????e?s?? e?a?t?se?? (depende
nce detection table (DDT)) ???a?a? a????e?s??
?a? ???µas?a? e?a?t?se?? (dependence prediction
and naming table (DPNT)) ???e??
S?????µ?? (synonym file (SF)) ???a?a?
?et???µas?a? S?????µ?? (synonym rename table
(SRT))
14??t?µata ???p???s?? (?mplementation Aspects
) ?a??? e????saµe p??? t? DDT ???s?µ?p??e?ta?
??a ?a a?a?a??pt??µe t?? e?a?t?se??. ??t?? ?
p??a?a? pe????e? ta a??????a ped?a ??e????s?
?ed?µ???? (Data Address(ADDR)), Store PC (STPC)
?a? ??a valid bit (ep?????s??) ? DP??
???s?µ?p??e?ta? ??a ?a ep?ßeßa??se? d?a µ?s?? t??
p??ß?e???, e?e??e? t?? e?t???? store ?a? load
p?? ????? e?a?t?se??. ???µ? d??e? ta tags p??
???s?µ?p?????ta? ??a ?a d?µ?????????? ta s?????µa
??a t?? e?a?t?se??. ?e????e? ta a??????a ped?a
??e????s? ??t???? (instruction address (PC)),
?????e?t?? ??a?t?se?? (dependence predictor
(PRED)), dependence tag (DTAG) ?a? ??a valid
bit To SF ???s?µ?p??e?ta? ??a ?a ap????e?e? ta
s?????µa ?a? ??e? ta a??????a ped?a ???µa
(name), t?µ? (value), full/empty bit ?a? valid
bit ? SRT ??e? ta a??????a ped?a S?????µ??
(synonym), (reservation station) tag sta?µ??
???t?s?? ?a? ??a valid bit. ?? t? bit ep?????s??
e??a? 1 (valid flag), ? ?ata????s? ape??????e?
t? d?sµ??? s?????µ? st? sta?µ? ???t?s??
(reservation station) ?p?? ß??s?eta? ?
pa?a??µe?? e?t??? store.
15??t?µata ???p???s?? (?mplementation Aspects
) St? pa?a??t? s??µa ß??p??µe ?t? ?? e?t????
load ?a? store d?a µ?s?? t?? DPNT pa?????? µ?a
p??ß?e?? ?a? ??a s?????µ?. ??? de? ?p???e?
e???t?s? de? ???eta? ?aµ?? e????e?a. ?? srore
d?µ???????? µ?a SRT ?ata????s? ??a t? d?sµ???
s?????µ? ?a? ?ta? µ?a store t?? desµe?se? t?te
e??µe???eta? t? DDT, e?e??e???eta? ? SRT
?ata????s? ?a? ???feta? ? t?µ? st? SF
16Te???s? ?a???aµ??? ???µ??
(1) Speculative Memory Bypassing Se t?p????
a???te?t?????? load/store, ?? e?t???? load ?a?
store de? ?p????????? t?µ??. O? e?t???? load ?a?
store ap?? ???s?µ?p?????ta? ??a ?a pe??s??? t??
t?µ?? p?? ??p??e? e?t???? pa???a?a?, se ??p??e?
???e? p?? ?a t?? ???s?µ?p???s???. ??? ??????aµe
?t? ?? load ?a? store ???s?µ?p?????ta? ??a
ep????????a e?d?-?e?t?????a? ?a µp????saµe ?a t??
e?a?e????µe ??e? µa??. ??t? a???ß?? e??a? ?
te????? s??p?? t?? te?????? pa???aµ??? µ??µ??.
??t? ? te????? µetat??pe? µ?a DEF-store-load-USE
a??s?da se DEF-USE a??s?da ?p?te ?? load ?a?
store e???t?se?? p??ß??p??ta? ?a? ?? DEF ?a? USE
e?t???? s???p?????? st? pa?????? e?t????.
17Te???s? ?a???aµ??? ???µ??
(2) Speculative Memory Bypassing ?? ?a? ?
te????? ap??????? µp??e? ?a ep?t??pe? ep????????a
µeta?? t?? store ?a? load, ? t?µ? p??pe? ?a
pe??se? ap? a?t?? t?? d?? e?t???? p??? f??se? st?
USE. ??ßa?a ed? s?µe?????µe ?t? ? pa???aµ?? e??a?
d?af??et??? ap? t?? ap?????? ?ta? ?? e?a?t?µe?e?
load ?a? store s???p?????? st? ?d?? pa??????
e?t????.
Ost?s? ? te????? pa???aµ??? µp??e? ?a e?te?este?
sa? µ?a ape??e?a? ep??tas? t?? ap???????. ??t?
fa??eta? st? pa?a??t? d????aµµa (c).
18Te???s? ?a???aµ??? ???µ??
(3) Speculative Memory Bypassing St? 1? ß?µa ?
e?t??? DEF ap???d???p??e?ta? ?a? ? µet???µas?a
?ata????t? (register renaming) d?µ?????e? ??a
?a???????? ???µa, TAG1 ??a t?? ?ata????t? R1.
St? 2? ß?µa ? store e?t??? ap???d???p??e?ta?
?a? te???? d?µ?????e?ta? ??a s?????µ?. St? 3?
ß?µa ? e?t??? load ap???d???p??e?ta? ?a? ?
µet??µas?a ?ata????t? d?µ??????? ??a ?a????????
???µa TAG2 ??a t?? ?ata????t? p?????sµ??
(destination register) R2. St? te?e?ta?? ß?µa
?ta? ? USE ap???d???p??e?ta? µp??e? ?a ap?fas?se?
?t? ? register R2 ??e? d?? ???µata ??a p?a?µat???
TAG2 ?a? ??a ?e???t??? (speculative) TAG1.
???s?µ?p????ta? t? TAG1, ? DEF µp??e? ?a te?e?
ape??e?a? se ???s? ?a? ?a e?te??ste? aµ?s?? µ????
? DEF pa???e? t?? t?µ?.
19 Te???s? ?a???aµ??? ???µ??
(4) Speculative Memory Bypassing ?a?at????µe
?t? ? pa???aµ?? (bypassing) e?te??eta? f?s??? ??a
a??s?de? p?? pe??????? p????? e?a?t?se??
µ??µ??. ?p?p???? ? pa???aµ?? (bypassing)
???eta? p?? e???st??? ?ta? µ?a e?t??? store ??e?
p????? e?a?t?se?? ?a??? a?t? ß???? se pe??ss?te??
µe??s? t?? as?fe?a? s???????µe?? µe t?? ap??????
(cloaking) ?p?? t? register write-back bandwidth
e??a? pe?????sµ???. Se a?t?? t?? pe??pt?s? ?
?e???t??? t?µ? (speculative value) ?a p??pe? ?a
d?ad??e? se ??e? t?? e?a?t?µe?e? e?t???? load,
??at? a? de? ???s?µ?p????e? pa???aµ?? (bypassing)
t?te ???e µ?a ap? t?? e?a?t?µe?e? load ?a p??pe?
?a d?ad?se? t?? ?e???t??? t?µ? (speculative
value) se ????? t??? e?d?afe??µe???? at?µ???.
20?e??aµat??? ????????s? (?xperimental
Evaluation) ??a????ta? t?? ap?te?esµat???t?ta
t?? te?????? ap??????? ?a? pa???aµ???(cloaking
?a? bypassing) µp????µe ?a ?????µe pa?at???se??
st?? p??ß?e??µ?t?ta t?? µ??µ?? ?a?
p??s?µ??????ta? ??a? d??aµ??? s?ed?asµ???
epe?e??ast? ?a de????µe ?t? ?? te?????? µa?
µp????? ?a ße?t??s??? t?? ap?d?s?
?e??d?????a
(1) ???s?µ?p??????a? ta SPEC95 p?????µµata ta
?p??a µeta???tt?st??a? ??a t?? MIPS-I
a???te?t????? ?a? ???p??????e p??s?µ???s? µe
?a??d????µe?? ?????sµ? ?????? ?a? e?t??es??
(trace ?a? execution- driven timing).
????? 128 e?t???? ?ata????s?? ?a? f??t?s??
(load/store queue), ???eta? p????aµµat?sµ?? ??a
p??? ap? 4 load ?a? store a?? ????? ?a?
??e???eta? t??????st?? ??a? ?????? af?t?? ? load
??e? ?p?????se? t?? d?e????s? t?? ?a pe??se? st??
load/store scheduler.
21?e??d?????a
(2) ??a s?µa?t??? pa??µet??? e??a? ?
???s?µ?p???s? t?? ?e???s?? afe??? e?a?t?se??
µ??µ?? (naïve memory dependence speculation)
d??ad? a) ? load ?a p??spe??se? st? µ??µ? a??µa
?a? a? ?? d?e????se?? t?? p??????µe??? store
e??a? ????ste?, ß) ? load ?a pe??µ??e? ??a t??
p??????µe?e? store st?? ?d?e? d?e????se?? ?a? ?)
?? store p??????? t?? d?e????s? t??? st?? load
a??µa ?a? a? ta ded?µ??a t??? de? e??a?
d?a??s?µa ?e???? ? ?e???s? t?? e?a?t?se??
µ??µ?? (memory dependence speculation) ??e? µ?a
s?µa?t??? ep?d?as? st?? ßas??? ap?d?s? (base
performance) µe e????st? ?p?st????? se hardware.
22????ße?a t?? ?e?????? ?p??????? Cloaking accuracy
Te????µe d?? µet????? coverage ?a? ???µ??
mispeculation. O?????µe sa? coverage t? ???sµa
t?? d??aµ???? load p?? pa?????? µ?a s?st? t?µ?
d?a µ?s?? t?? ap???????. ??????µe sa?
mispeculation rate t? ???sµa t?? d??aµ???? load
p?? pa?????? µ?a ?a??asµ??? t?µ? d?a µ?s?? t??
ap???????. ??sse??? µet??se?? p?????a? ??a ta
a??????a DDT µe???? 32, 128, 512, ?a? 2K ap?
a??ste?? p??? ta de???. ?a?at????µe ?t? ?
p?e????f?a t?? load µe e?a?t?se?? pa?????? µ?a
s?st? t?µ? (correct value) ap? t?? ap??????,
a??? ??? ??e? . ???µ? ?ta? a????eta? t?
µ??e??? t?? DDT, ?e???? a????e? ?a? t? cloaking
coverage, se µe????? pe??pt?se?? µe???eta?.
23??p???t?ta ??e????se?? (?ddress Locality) H
as?fe?a t?? µ??µ?? µp??e? ?a e?att??e? a?
µp????saµe ?a p??ß?????µe t?? d?e????s? p?? µ?a
e?t??? load ?a p??spe??se?. ?et??µe t??
t?p???t?ta d?e????se?? (address locality)
µet???ta? t? ???sµa t?? d??aµ???? e?t???? load
p?? p??spe?a????? t?? ?d?a d?e????s? ?p?? t?
te?e?ta?? st??µ??t?p? t?? ?d?a? stat???? load.
St? pa?a??t? s??µa ß??p??µe t? breakdown t??
load p?? e???t??? t?? t?p???t?ta d?e????se??
(address locality), ?p? t?? ??? a?t?? ?a ?????
µ?a a????e?µ??? e???t?s?. O? µa??e? st??e? load
µe a????e?µ??e? e?a?t?se??, ?? p??s??e? st??e?
load µe µ? a????e?µ??e? e?a?t?se?? ?a? ta
d?aµ??t?a p?? pa?????? s?st? t?µ? ap? ap??????.
24??p???t?ta ??µ?? Value Locality H as?fe?a t??
µ??µ?? µp??e? ep?s?? ?a e?att??e? µe t? ?a
p??ß?????µe t?? t?µ?? t?? e?t???? load ape??e?a?.
?ts? ?a s????????µe ??a? p?????st? t?? t?µ?? t??
e?t???? load (load last-value predictor) µe ??a?
µ??a??sµ? ap??????? (cloaking). ?? pa?a??t?
s??µa de???e? t?? µet????? coverage (a) ?a?
mispeculation rates (b). ?a ap?te??sµata t??
t?µ?? fa????ta? ap? t?? ??t???? a??ste?? st???
e?? ta ap?te??sµata p??ß?e??? ap??????? ap? t??
de??? µa???. ?aµ?a ap? t?? d?? te?????? de?
fa??eta? ?a e??a? ?a??te??, ap?? st? ???µ?
mispeculation ? te????? ap??????? e??a? ?a??te??
??at? ? s?µpe??f??? t?? e?a?t?se?? e??a? p??
sta?e?? ap? t?? s?µpe??f??? t?? t?µ??.
25?p?d?as? st?? ?p?d?s?
(1) Performance Impact ? te????? ap???????
p??ß??pe? ??a µe???? ???sµa ???? t?? e?t????
load. ?a µet??s??µe t?? ep?d?as? st?? ap?d?s?.
S???????µe?? µe t?? a???ße?a t?? ap???????
ß??p??µe ?t? ? µet???? p??ß?e??? coverage
pa??µe??e ?d?a e?? ?? ???µ?? mispeculation
a??????ta?. ?ts? ??a t?? ?e???sµ? t??
mispeculation µe?et?saµe 3 µ??t??a t? squash
invalidation (?atasta?t??? a????s?), selective
invalidation (ep??e?t??? a????s?) ?a? oracle. ?d?
de? ????µe ap?te??sµata ??a t? µ??t??? oracle.
26?p?d?as? st?? ?p?d?s?
(2) Performance Impact ?ts? st? pa?ap??? s??µa
(a) ????µe t?? p??s??e? st??e? p?? a?af?????
ep?ta???se?? (speedups) µe ep??e?t??? a????s?
(selective invalidation). ?? ?sp?e? ?a? µa??e?
a?af????? ep?ß?ad??se?? (slowdowns) ?a?
ep?ta???se?? (speedups) µe ?atasta?t??? a????s?
(squash invalidation). ????e? ?a s?µe???e? ?t?
? µ??a??sµ?? ?atasta?t???? a????s?? ?d??e? se
ep?ß?ad??se?? 5.63 (integer), 1.59 (floating
point) ?a? 3.43 (??a ta p?????µµata). ?
ap?????? µe ep??e?t??? a????s? a?t??eta e??a?
p??? e?e??et??? ??at? p?t? de? µe???e? t??
ap?d?s? ?a? p??sf??e? ep?ta???se?? 4.28
(integer), 3.20 (floating- point) ?a? 3.68
(??a ta p?????µµata). St? s??µa (b)
fa??eta? ??a breakdown t?? predicted load µe t??
p??s??? st??? e?e??a p?? pa?????? t?µ? d?a µ?s??
t?? ap??????? ?a? µe µa??? e?e??a p?? pa??????
t?µ? µe t?? pa???aµ??. ?a ap?te??sµata de??????
?t? ? ap?????? µp??e? ?a p??sf??e? p??? ?a???
ße?t??se?? st?? ap?d?s?.
27S?et???? e??as?e? ?????? te?????? ?????
p??ta?e? ??a ?a p??ß?????? t?? d?e????se?? t??
load ?a? store t?s? st? software ?s? ?a? st?
hardware. ?a?t?????a ?? Tyson ?a? Austin
p??te??a? t?? memory renaming, µ?a te????? ?µ??a
µe t?? ap???????. ??t?? s??d?asa? t?? p??ß?e??
e???t?s?? µ??µ?? (memory dependence prediction)
µe t?? p??ß?e?? t?? value ?a? µe??t?sa? t?
ap?t??esµa. ??a pe?????sµ??? f??µa t?? ap???????
e??a? ? alias prediction, st?? ?p??a ?? load
p??ß??p??? µ?a ?ata????s? write st?? buffer ?p??
t? pa?a??µe?? store ß??s?eta?. ??a? µ??a??sµ??
?µ???? µe t?? pa???aµ??? p??t????e ap? t??
Jourdan , Ronen, Bekerman , Shomar ?a? Yoaz ?at?
t?? ?p??? ta load de? ??e???eta? ?a p??spe?a?????
st?? µ??µ? a?a??ast??? ?a? sa? ap?t??esµa ??
apa?t?se?? st? e???? t?? µ??µ?? µe?????a?.
28S?µpe??sµata ?e a?t? t?? a????s?
µe?et??ta? t?? s?ed?asµ? t?? µ??µ?? pa?at???saµe
?t? ? µ??µ? s???? ???s?µ?p??e?ta? sa? µ??a??sµ??
ep????????a?. ??ap?st?saµe ??a? µe???? a???µ?
ap? ep?ßa???se?? t?? pa?ad?s?a??? ep???????a?
µ??µ?? ßas?sµ??? st?? d?e????s? ?a? p??te??aµe
te?????? p?? e?af?????? a?t?? t?? ep?ßa???se??.
?? te?????? µa? ?de??a? a) ?e??st?? a???ße?a?
p??ß?e?? e???t?s?? ßas?sµ??? st?? ?st?????t?ta
t?? µ??µ?? e??a? d??at? ß) ? asaf??
pa?ad?s?a??? ???sµ?? t?? ep???????a? µ??µ??
µp??e? d??aµ??? ?a µetat?ape? se saf? ?a? ?) ??
d?? ?e???se?? ap??????? µ??µ?? (speculative
memory cloaking) ?a? ? ep??tas? t?? pa???aµ???
µ??µ?? (speculative memory bypassing) µp????? ?a
d?µ??????s??? saf? ???sµ? ep????????a? µ??µ?? ?a?
?a µe??s??? t?? as?fe?? t??.