5HYLHZ5HRUGHU%XIIHU 52% &6 *UDGXDWH&RPSXWHU$UFKLWHFWXUH ‡ 8VHRIUHRUGHUEXIIHU /HFWXUH ² ,QRUGHULVVXH2XWRIRUGHUH[HFXWLRQ,QRUGHUFRPPLW ² +ROGVUHVXOWVXQWLOWKH\FDQEHFRPPLWWHGLQRUGHU ,QVWUXFWLRQ/HYHO3DUDOOHOLVP ª 6HUYHVDVVRXUFHRIYDOXHVXQWLOLQVWUXFWLRQVFRPPLWWHG ² 3URYLGHVVXSSRUWIRUSUHFLVHH[FHSWLRQV6SHFXODWLRQVLPSO\WKURZRXW *HWWLQJWKH&3,  LQVWUXFWLRQVODWHUWKDQH[FHSWHGLQVWUXFWLRQ ² &RPPLWVXVHUYLVLEOHVWDWHLQLQVWUXFWLRQRUGHU ² 6WRUHVVHQWWRPHPRU\V\VWHPRQO\ZKHQWKH\UHDFKKHDGRIEXIIHU 6HSWHPEHU ‡ ,Q2UGHU&RPPLW LVLPSRUWDQWEHFDXVH 3URI-RKQ.XELDWRZLF] ² $OORZVWKHJHQHUDWLRQRISUHFLVHH[FHSWLRQV ² $OORZVVSHFXODWLRQDFURVVEUDQFKHV

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

5HYLHZ0HPRU\'LVDPELJXDWLRQ 5HYLHZ([SOLFLW5HJLVWHU5HQDPLQJ ‡ 4XHVWLRQ*LYHQDORDGWKDWIROORZVDVWRUHLQSURJUDP ‡ 0DNHXVHRIDSK\VLFDO UHJLVWHUILOHWKDWLVODUJHUWKDQ RUGHUDUHWKHWZRUHODWHG" QXPEHURIUHJLVWHUVVSHFLILHGE\,6$ ² 7U\LQJWRGHWHFW5$:KD]DUGVWKURXJKPHPRU\ ‡ .H\LQVLJKW$OORFDWHDQHZSK\VLFDOGHVWLQDWLRQUHJLVWHU ² 6WRUHVFRPPLWLQRUGHU 52% VRQR:$5:$:PHPRU\KD]DUGV IRUHYHU\LQVWUXFWLRQWKDWZULWHV ‡ ,PSOHPHQWDWLRQ ² 5HPRYHVDOOFKDQFHRI:$5RU:$:KD]DUGV ² .HHSTXHXHRIVWRUHVLQSURJRUGHU ² 6LPLODUWRFRPSLOHUWUDQVIRUPDWLRQFDOOHG6WDWLF6LQJOH$VVLJQPHQW ² :DWFKIRUSRVLWLRQRIQHZORDGVUHODWLYHWRH[LVWLQJVWRUHV ª /LNHKDUGZDUHEDVHGG\QDPLFFRPSLODWLRQ" ‡ :KHQKDYHDGGUHVVIRUORDGFKHFNVWRUHTXHXH ‡ 0HFKDQLVP".HHSDWUDQVODWLRQWDEOH ² ,IDQ\ VWRUHSULRUWRORDGLVZDLWLQJIRULWVDGGUHVVVWDOOORDG ² ,6$UHJLVWHU⇒ SK\VLFDOUHJLVWHUPDSSLQJ ² ,IORDGDGGUHVVPDWFKHVHDUOLHUVWRUHDGGUHVV DVVRFLDWLYHORRNXS  ² :KHQUHJLVWHUZULWWHQUHSODFHHQWU\ZLWKQHZUHJLVWHUIURPIUHHOLVW WKHQZHKDYHDPHPRU\LQGXFHG 5$: KD]DUG ² 3K\VLFDOUHJLVWHUIUHHZKHQQRWXVHGE\DQ\DFWLYHLQVWUXFWLRQV ª VWRUHYDOXHDYDLODEOH⇒ UHWXUQYDOXH ‡ $GYDQWDJHVRIH[SOLFLWUHQDPLQJ ª VWRUHYDOXHQRWDYDLODEOH⇒ UHWXUQ52%QXPEHURIVRXUFH ² 'HFRXSOHVUHQDPLQJ IURPVFKHGXOLQJ ² 2WKHUZLVHVHQGRXWUHTXHVWWRPHPRU\ ² $OORZVGDWDWREHIHWFKHGIURPVLQJOHUHJLVWHUILOH ‡ :LOOUHOD[H[DFWGHSHQGHQF\FKHFNLQJLQODWHUOHFWXUH ª 1RQHHGWRE\SDVVYDOXHVIURPUHRUGHUEXIIHU ª %HWWHUXWLOL]DWLRQRIUHJLVWHUSRUWV &6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  *HWWLQJ&3, ,VVXLQJ 0XOWLSOH,QVWUXFWLRQV&\FOH ,QVWUXFWLRQ/HYHO3DUDOOHOLVP ‡ 6XSHUVFDODUYDU\LQJQRLQVWUXFWLRQVF\FOH WR  VFKHGXOHGE\FRPSLOHURUE\+: 7RPDVXOR ² ,%03RZHU3&6XQ8OWUD6SDUF'(&$OSKD+3 ‡ +LJKVSHHGH[HFXWLRQEDVHGRQLQVWUXFWLRQ ‡ 9HU\ /RQJ,QVWUXFWLRQ:RUGV 9 /,: OHYHO SDUDOOHOLVP LOS SRWHQWLDORIVKRUW IL[HGQXPEHURILQVWUXFWLRQV  VFKHGXOHG LQVWUXFWLRQVHTXHQFHVWRH[HFXWHLQSDUDOOHO E\WKHFRPSLOHUSXWRSVLQWRZLGHWHPSODWHV ‡ +LJKVSHHGPLFURSURFHVVRUVH[SORLW,/3E\ ² -RLQW+3,QWHODJUHHPHQWLQ"  SLSHOLQHGH[HFXWLRQRYHUODSLQVWUXFWLRQV ² ,QWHO$UFKLWHFWXUH ,$ ELWDGGUHVV  2XWRIRUGHUH[HFXWLRQ FRPPLWLQRUGHU ª 6W\OH´([SOLFLWO\3DUDOOHO,QVWUXFWLRQ&RPSXWHU (3,& µ  0XOWLSOHLVVXHLVVXHDQGH[HFXWHPXOWLSOH ² 1HZ6810$-,&$UFKLWHFWXUH9/,:IRU-DYD LQVWUXFWLRQVSHUFORFNF\FOH ‡ 9HFWRU3URFHVVLQJ  9HFWRULQVWUXFWLRQVPDQ\LQGHSHQGHQWRSVVSHFLILHG ZLWKDVLQJOHLQVWUXFWLRQ ([SOLFLWFRGLQJRILQGHSHQGHQWORRSVDV RSHUDWLRQVRQODUJHYHFWRUVRIQXPEHUV ‡ 0HPRU\DFFHVVHVIRUKLJKVSHHG PLFURSURFHVVRU" ² 0XOWLPHGLDLQVWUXFWLRQVEHLQJDGGHGWRPDQ\SURFHVVRUV ² 'DWD&DFKHSRVVLEO\PXOWLSRUWHGPXOWLSOHOHYHOV ‡ $QWLFLSDWHGVXFFHVVOHDGWRXVHRI ,QVWUXFWLRQV3HU&ORFN F\FOH ,3& YV&3, &6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

*HWWLQJ&3, ,VVXLQJ 0XOWLSOH,QVWUXFWLRQV&\FOH 5HYLHZ8QUROOHG/RRSWKDW 0LQLPL]HV6WDOOVIRU6FDODU ‡ 6XSHUVFDODU '/;LQVWUXFWLRQV)3IDQ\WKLQJ HOVH 1 Loop: LD F0,0(R1) LD to ADDD: 1 Cycle 2 LD F6,-8(R1) ADDD to SD: 2 Cycles ² )HWFKELWVFORFNF\FOH,QW RQOHIW)3RQULJKW 3 LD F10,-16(R1) ² &DQRQO\LVVXHQGLQVWUXFWLRQLIVWLQVWUXFWLRQLVVXHV 4 LD F14,-24(R1) ² 0RUHSRUWVIRU)3UHJLVWHUVWRGR)3ORDGI)3RSLQDSDLU 5 ADDD F4,F0,F2 7\SH 3LSH6WDJHV 6 ADDD F8,F6,F2 7 ADDD F12,F10,F2 ,QWLQVWUXFWLRQ ,) ,' (; 0(0 :% 8 ADDD F16,F14,F2 )3LQVWUXFWLRQ ,) ,' (; 0(0 :% 9 SD 0(R1),F4 ,QWLQVWUXFWLRQ ,) ,' (; 0(0 :% 10 SD -8(R1),F8 11 SD -16(R1),F12 )3LQVWUXFWLRQ ,) ,' (; 0(0 :% 12 SUBI R1,R1,#32 ,QWLQVWUXFWLRQ ,) ,' (; 0(0 :% 13 BNEZ R1,LOOP )3LQVWUXFWLRQ ,) ,' (; 0(0 :% 14 SD 8(R1),F16 ; 8-32 = -24 ‡ F\FOHORDGGHOD\H[SDQGVWRLQVWUXFWLRQV LQ66 14 clock cycles, or 3.5 per iteration

² LQVWUXFWLRQLQULJKWKDOIFDQ·WXVHLWQRULQVWUXFWLRQVLQQH[W&6.XELDWRZLF] VORW &6.XELDWRZLF]   /HF  /HF  '\QDPLF6FKHGXOLQJLQ6XSHUVFDODU /RRS8QUROOLQJLQ6XSHUVFDODU 7KHHDV\ZD\ ,QWHJHU LQVWUXFWLRQ )3 LQVWUXFWLRQ &ORFN F\FOH /RRS /') 5  ‡ +RZWRLVVXHWZRLQVWUXFWLRQVDQGNHHSLQRUGHU /') 5  LQVWUXFWLRQLVVXHIRU7RPDVXOR" /') 5 $''')))  ² $VVXPHLQWHJHUIORDWLQJSRLQW /') 5 $''')))  ² 7RPDVXOR FRQWUROIRULQWHJHUIRUIORDWLQJSRLQW /') 5 $''')))  ‡ ,VVXH;&ORFN5DWHVRWKDWLVVXHUHPDLQVLQRUGHU 6' 5 ) $''')))  6' 5 ) $''')))  ‡ 2QO\)3ORDGVPLJKWFDXVHGHSHQGHQF\EHWZHHQ 6' 5 )  LQWHJHUDQG)3LVVXH 6' 5 )  ² 5HSODFHORDGUHVHUYDWLRQVWDWLRQZLWKDORDGTXHXH RSHUDQGVPXVWEHUHDGLQWKHRUGHUWKH\DUHIHWFKHG 68%,55L  ² /RDGFKHFNVDGGUHVVHVLQ6WRUH4XHXHWRDYRLG5$:YLRODWLRQ %1(=5/223  ² 6WRUHFKHFNVDGGUHVVHVLQ/RDG4XHXHWRDYRLG:$5:$: 6' 5 )  ² &DOOHG´GHFRXSOHGDUFKLWHFWXUHµFRPSDUHZLWK6PLWKSDSHU ‡ 8QUROOHGWLPHVWRDYRLGGHOD\V GXHWR66 ‡ FORFNVRUFORFNVSHULWHUDWLRQ ; &6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

0XOWLSOH,VVXH&KDOOHQJHV ‡ :KLOH,QWHJHU)3VSOLWLVVLPSOHIRUWKH+:JHW&3, 9/,:9HU\/DUJH,QVWUXFWLRQ:RUG RIRQO\IRUSURJUDPVZLWK ² ([DFWO\O)3RSHUDWLRQV ‡ (DFK´LQVWUXFWLRQµKDVH[SOLFLWFRGLQJIRUPXOWLSOH ² 1RKD]DUGV RSHUDWLRQV ‡ ,IPRUHLQVWUXFWLRQVLVVXHDWVDPHWLPHJUHDWHU ² ,Q(3,&JURXSLQJFDOOHGD´SDFNHWµ GLIILFXOW\RIGHFRGHDQGLVVXH ² ,Q7UDQVPHWDJURXSLQJFDOOHGD´PROHFXOHµ ZLWK´DWRPVµDVRSV ² (YHQVFDODU !H[DPLQHRSFRGHVUHJLVWHUVSHFLILHUVIGHFLGH LIRULQVWUXFWLRQVFDQLVVXH ‡ 7UDGHRIILQVWUXFWLRQVSDFHIRUVLPSOHGHFRGLQJ ² 5HJLVWHUILOHQHHG[UHDGVDQG[ZULWHVF\FOH ² 7KHORQJLQVWUXFWLRQZRUGKDVURRPIRUPDQ\RSHUDWLRQV ² 5HQDPHORJLFPXVWEHDEOHWRUHQDPHVDPHUHJLVWHUPXOWLSOHWLPHV ² %\GHILQLWLRQDOOWKHRSHUDWLRQVWKHFRPSLOHUSXWVLQWKHORQJ LQRQHF\FOHR)RULQVWDQFHFRQVLGHUZD\LVVXH LQVWUXFWLRQZRUGDUHLQGHSHQGHQW !H[HFXWHLQSDUDOOHO add r1, r2, r3 add p11, p4, p7 ² (JLQWHJHURSHUDWLRQV)3RSV0HPRU\UHIVEUDQFK sub r4, r1, r2 ⇒ sub p22, p11, p4 lw r1, 4(r4) lw p23, 4(p22) ª WRELWVSHUILHOG ! RUELWVWR RU add r5, r1, r2 add p12, p23, p4 ELWVZLGH ,PDJLQHGRLQJWKLVWUDQVIRUPDWLRQLQDVLQJOHF\FOHR ² 1HHGFRPSLOLQJWHFKQLTXHWKDWVFKHGXOHVDFURVVVHYHUDOEUDQFKHV ² 5HVXOWEXVHV1HHGWRFRPSOHWHPXOWLSOHLQVWUXFWLRQVF\FOH ª 6RQHHGPXOWLSOHEXVHVZLWKDVVRFLDWHGPDWFKLQJORJLFDWHYHU\ UHVHUYDWLRQVWDWLRQ ª 2UQHHGPXOWLSOHIRUZDUGLQJSDWKV &6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  5HFDOO8QUROOHG/RRSWKDW /RRS8QUROOLQJLQ9/,: 0LQLPL]HV6WDOOVIRU6FDODU Memory Memory FP FP Int. op/Clock 1 Loop: LD F0,0(R1) LD to ADDD: 1 Cycle reference 1 reference 2 operation 1 op. 2 branch 2 LD F6,-8(R1) ADDD to SD: 2 Cycles LD F0,0(R1) LD F6,-8(R1) 1 3 LD F10,-16(R1) LD F10,-16(R1) LD F14,-24(R1) 2 4 LD F14,-24(R1) LD F18,-32(R1) LD F22,-40(R1) ADDD F4,F0,F2 ADDD F8,F6,F2 3 5 ADDD F4,F0,F2 LD F26,-48(R1) ADDD F12,F10,F2 ADDD F16,F14,F2 4 6 ADDD F8,F6,F2 7 ADDD F12,F10,F2 ADDD F20,F18,F2 ADDD F24,F22,F2 5 8 ADDD F16,F14,F2 SD 0(R1),F4 SD -8(R1),F8 ADDD F28,F26,F2 6 9 SD 0(R1),F4 SD -16(R1),F12 SD -24(R1),F16 7 10 SD -8(R1),F8 SD -32(R1),F20 SD -40(R1),F24 SUBI R1,R1,#48 8 11 SD -16(R1),F12 SD -0(R1),F28 BNEZ R1,LOOP 9 12 SUBI R1,R1,#32 Unrolled 7 times to avoid delays 13 BNEZ R1,LOOP 14 SD 8(R1),F16 ; 8-32 = -24 7 results in 9 clocks, or 1.3 clocks per iteration (1.8X) Average: 2.5 ops per clock, 50% efficiency 14 clock cycles, or 3.5 per iteration

&6.XELDWRZLF] Note: Need more registers in VLIW (15 vs. 6 in SS)&6.XELDWRZLF]   /HF  /HF 

5HFDOO6RIWZDUH3LSHOLQLQJ 5HFDOO6RIWZDUH3LSHOLQLQJ([DPSOH %HIRUH8QUROOHGWLPHV After: Software Pipelined ‡ 2EVHUYDWLRQLILWHUDWLRQVIURPORRSVDUHLQGHSHQGHQW  LD F0,0(R1) 1 SD 0(R1),F4 ; Stores M[i] WKHQFDQJHWPRUH,/3E\WDNLQJLQVWUXFWLRQVIURP  ADDD F4,F0,F2 2 ADDD F4,F0,F2 ; Adds to M[i-1] GLIIHUHQW LWHUDWLRQV  SD 0(R1),F4 3 LD F0,-16(R1); Loads M[i-2]  LD F6,-8(R1) 4 SUBI R1,R1,#8 ‡ 6RIWZDUHSLSHOLQLQJUHRUJDQL]HVORRSVVRWKDWHDFK  ADDD F8,F6,F2 5 BNEZ R1,LOOP LWHUDWLRQLVPDGHIURPLQVWUXFWLRQVFKRVHQIURP  SD -8(R1),F8 GLIIHUHQWLWHUDWLRQVRIWKHRULJLQDOORRS 7RPDVXOR LQ  LD F10,-16(R1) 6:  ADDD F12,F10,F2 SW Pipeline Iteration  SD -16(R1),F12 0 Iteration  1 Iteration SUBI R1,R1,#24 2 Iteration  BNEZ R1,LOOP Time 3 Iteration 4 Loop Unrolled • Symbolic

Software- – Maximize result-use distance ops overlapped pipelined iteration – Less code space than unrolling – Fill & drain pipe only once per loop Time vs. once per each unrolled iteration in loop unrolling

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  6RIWZDUH3LSHOLQLQJZLWK /RRS8QUROOLQJLQ9/,: 7UDFH6FKHGXOLQJ ‡ 3DUDOOHOLVPDFURVV,)EUDQFKHVYV/223EUDQFKHV Memory Memory FP FP Int. op/Clock ‡ 7ZRVWHSV reference 1 reference 2 operation 1 op. 2 branch ² 7UDFH 6HOHFWLRQ LD F0,-48(R1) ST 0(R1),F4 ADDD F4,F0,F2 1 ª )LQGOLNHO\VHTXHQFHRIEDVLFEORFNV WUDFH  LD F6,-56(R1) ST -8(R1),F8 ADDD F8,F6,F2 SUBI R1,R1,#24 2 RI VWDWLFDOO\SUHGLFWHGRUSURILOHSUHGLFWHG  LD F10,-40(R1) ST 8(R1),F12 ADDD F12,F10,F2 BNEZ R1,LOOP 3 ORQJVHTXHQFHRIVWUDLJKWOLQHFRGH ² 7UDFH &RPSDFWLRQ • Software pipelined across 9 iterations of original loop ª 6TXHH]HWUDFHLQWRIHZ9/,:LQVWUXFWLRQV – In each iteration of above loop, we: ª 1HHGERRNNHHSLQJFRGHLQFDVHSUHGLFWLRQLVZURQJ » Store to m,m-8,m-16 (iterations I-3,I-2,I-1) ‡ 7KLVLVDIRUPRIFRPSLOHUJHQHUDWHGVSHFXODWLRQ » Compute for m-24,m-32,m-40 (iterations I,I+1,I+2) ² &RPSLOHUPXVWJHQHUDWH´IL[XSµFRGHWRKDQGOHFDVHVLQZKLFK » Load from m-48,m-56,m-64 (iterations I+3,I+4,I+5) WUDFHLVQRWWKHWDNHQEUDQFK • 9 results in 9 cycles, or 1 clock per iteration ² 1HHGVH[WUDUHJLVWHUVXQGRHVEDGJXHVVE\GLVFDUGLQJ • Average: 3.3 ops per clock, 66% efficiency ‡ 6XEWOHFRPSLOHUEXJVPHDQZURQJDQVZHU YVSRRUHUSHUIRUPDQFHQRKDUGZDUHLQWHUORFNV Note: Need less registers for software pipelining &6.XELDWRZLF] &6.XELDWRZLF]   (only using 7 registers here, was using 15) /HF  /HF 

$GYDQWDJHVRI+: 7RPDVXOR  YV6: 9/,: 6SHFXODWLRQ 6XSHUVFDODU Y9/,: ‡ +:DGYDQWDJHV ² +:EHWWHUDWPHPRU\GLVDPELJXDWLRQVLQFHNQRZVDFWXDODGGUHVVHV ‡ 6PDOOHUFRGHVL]H ‡ 6LPSOLILHG+DUGZDUH ² +:EHWWHUDWEUDQFKSUHGLFWLRQVLQFHORZHURYHUKHDG ‡ %LQDU\FRPSDWDELOLW\ IRUGHFRGLQJLVVXLQJ ² +:PDLQWDLQVSUHFLVHH[FHSWLRQPRGHO DFURVVJHQHUDWLRQV LQVWUXFWLRQV ² +:GRHVQRWH[HFXWHERRNNHHSLQJLQVWUXFWLRQV RIKDUGZDUH ‡ 1R,QWHUORFN ² 6DPHVRIWZDUHZRUNVDFURVVPXOWLSOHLPSOHPHQWDWLRQV +DUGZDUH FRPSLOHU ² 6PDOOHUFRGHVL]H QRWDVPDQ\QRRSVILOLQJEODQNLQVWUXFWLRQV FKHFNV" ‡ 6:DGYDQWDJHV ‡ 0RUHUHJLVWHUVEXW ² :LQGRZRILQVWUXFWLRQVWKDWLVH[DPLQHGIRUSDUDOOHOLVPPXFKKLJKHU VLPSOLILHG+DUGZDUH ² 0XFKOHVVKDUGZDUHLQYROYHGLQ9/,: XQOHVV\RXDUH,QWHO«R IRU5HJLVWHU3RUWV ² 0RUHLQYROYHGW\SHVRIVSHFXODWLRQFDQEHGRQHPRUHHDVLO\ PXOWLSOHLQGHSHQGHQW ² 6SHFXODWLRQFDQEHEDVHGRQODUJHVFDOHSURJUDPEHKDYLRUQRWMXVW UHJLVWHUILOHV" ORFDOLQIRUPDWLRQ

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  ,WDQLXPŒ3URFHVVRU6LOLFRQ ,QWHO+3´([SOLFLWO\3DUDOOHO &RS\ULJKW,QWHODW +RWFKLSV · ,QVWUXFWLRQ&RPSXWHU (3,& µ ‡ ,QVWUXFWLRQVLQELW´JURXSVµILHOGGHWHUPLQHVLI LQVWUXFWLRQVGHSHQGHQWRULQGHSHQGHQW IA-32 FPU ² 6PDOOHUFRGHVL]HWKDQROG9/,:ODUJHUWKDQ[5,6& Control ² *URXSVFDQEHOLQNHGWRVKRZLQGHSHQGHQFH!LQVWU IA-64 Control TLB ‡ LQWHJHUUHJLVWHUVIORDWLQJSRLQWUHJLVWHUV ² 1RWVHSDUDWHUHJLVWHUILOHVSHUIXQFWLRQDOXQLWDVLQROG9/,: Integer Units ‡ +DUGZDUHFKHFNVGHSHQGHQFLHV Instr. LQWHUORFNV !ELQDU\FRPSDWLELOLW\RYHUWLPH Fetch & Decode Cache ‡ 3UHGLFDWHGH[HFXWLRQ VHOHFWRXWRIELWIODJV  !OIHZHUPLVSUHGLFWLRQV" ‡ ,$LQVWUXFWLRQVHWDUFKLWHFWXUH(3,&LVW\SH ² 9/,: (3,&" ‡ ,WDQLXPŒ LVQDPHRIILUVWLPSOHPHQWDWLRQ " Core Die 4 x 1MB L3 cache ² +LJKO\SDUDOOHODQGGHHSO\SLSHOLQHGKDUGZDUHDW0K] ² ZLGHVWDJHSLSHOLQHDW0K]RQ—SURFHVV

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

,WDQLXPŒ0DFKLQH&KDUDFWHULVWLFV ,WDQLXPŒ(3,&'HVLJQ0D[LPL]HV6:+:6\QHUJ\ &RS\ULJKW,QWHODW +RWFKLSV · &RS\ULJKW,QWHODW +RWFKLSV · )UHTXHQF\ 0+] Architecture Features programmed by compiler: 7UDQVLVWRU&RXQW 0&380/ Register Branch Explicit Data & Control Memory 3URFHVV X&026PHWDOOD\HU Stack Predication Hints Parallelism Speculation Hints 3DFNDJH 2UJDQLF/DQG*ULG$UUD\ & Rotation 0DFKLQH:LGWK  LQVWVFORFN $/800/G6W)3%U 5HJLVWHUV SRUWHG*5I)53UHGLFDWHV Micro-architecture Features in hardware:

6SHFXODWLRQ HQWU\$/$7([FHSWLRQ'HIHUUDO Fetch Issue Register Control Parallel Resources Memory

%UDQFK3UHGLFWLRQ 0XOWLOHYHOVWDJH3UHGLFWLRQ+LHUDUFK\ Handling Bypasses &Dependencies Subsystem 4 Integer + )3&RPSXWH%DQGZLGWK  *)ORSV '3(3  *)ORSV 63 Fast, Simple6-Issue 4 MMX Units 0HPRU\!)3%DQGZLGWK '3 63 RSHUDQGVFORFN 128 GR & 9LUWXDO0HPRU\6XSSRUW HQWU\,7/%OHYHO'7/%9+37 Instruction 128 FR, 2FMACs Three Register //&DFKH 'XDOSRUWHG.8QLILHGI.'., Cache (4 for SSE) levels of & Branch Remap cache: ///DWHQF\ FORFNV & Predictors 2 LD/ST units L1, L2, L3 /&DFKH 0%ZD\VD%:RI*%VHF Stack Engine 6\VWHP%XV *%VHFZD\ *OXHOHVV 03 32 entry ALAT 6FDODEOHWRODUJH SURF V\VWHPV

&6.XELDWRZLF] Speculation Deferral Management &6.XELDWRZLF]   /HF  /HF  6WDJH,Q2UGHU&RUH3LSHOLQH &RS\ULJKW,QWHODW +RWFKLSV · &6$GPLQLVWULYLD Front End Execution •Pre-fetch/Fetch of up • 4 single cycle ALUs, 2 ld/str ‡ ([DP :HGQHVGD\ to 6 instructions/cycle • Advanced load control /RFDWLRQ7%$ •Hierarchy of branch • Predicate delivery & branch 7,0(  predictors • Nat/Exception//Retirement •Decoupling buffer ‡ 7KLVLQIRLVRQWKH/HFWXUHSDJH KDVEHHQ ‡ 0HHWDW/D9DO·VDIWHUZDUGVIRU3L]]DDQG%HYHUDJHV WORD-LINE EXPAND RENAME DECODE REGISTER READ

IPG FET ROT EXP RENWLD REG EXE DET WRB ‡ $VVLJQPHQWXSWRPRUURZ

INST POINTER FETCH ROTATE EXECUTEEXCEPTION WRITE-BACK ² 'RQHLQSDLUV3XWERWKQDPHVRQSDSHUV GENERATION DETECT ² 0DNHVXUH\RXKDYHSDUWQHUVR)HHOIUHHWRXVHPDLOLQJOLVWIRUWKLV Instruction Delivery Operand Delivery •Dispersal of up to 6 • Reg read + Bypasses instructions on 9 ports • Register scoreboard •Reg. remapping • Predicated •Reg. stack engine dependencies

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

$UFKLWHFWXUHLQSUDFWLFH 3OD\VWDWLRQ&RQWLQXHG

‡ (PRWLRQ(QJLQH ‡ 6DPSOH9HFWRU8QLW ² 6XSHUVFDODU0,36FRUH ² ZLGH9/,: ‡ DVUHSRUWHGLQ0LFURSURFHVVRU5HSRUW9RO1R ² 9HFWRU&RSURFHVVRU3LSHOLQHV ² ,QFOXGHV0LFURFRGH0HPRU\ ² (PRWLRQ(QJLQH*)/236PLOOLRQSRO\JRQVSHUVHFRQG ² 5$0%86'5$0LQWHUIDFH ² +LJKOHYHOLQVWUXFWLRQVOLNH ² *UDSKLFV6\QWKHVL]HU%LOOLRQSL[HOVSHUVHFRQG PDWUL[PXOWLSO\ ² &ODLP7R\6WRU\UHDOLVPEURXJKWWRJDPHVR

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  /LPLWVWR0XOWL,VVXH0DFKLQHV /LPLWVWR0XOWL,VVXH0DFKLQHV

‡ ,QKHUHQWOLPLWDWLRQVRI,/3 ‡ /LPLWDWLRQVVSHFLILFWRHLWKHU6XSHUVFDODU RU9/,: ² EUDQFKLQ+RZWRNHHSDZD\9/,:EXV\" LPSOHPHQWDWLRQ ² /DWHQFLHVRIXQLWVPDQ\RSHUDWLRQVPXVWEHVFKHGXOHG ² 'HFRGHLVVXHLQ6XSHUVFDODUKRZZLGHSUDFWLFDO" ² 1HHGDERXW3LSHOLQH'HSWK[1R)XQFWLRQDO8QLWVRILQGHSHQGHQW ² 9/,:FRGHVL]HXQUROOORRSVZDVWHGILHOGVLQ9/,: RSHUDWLRQVWRNHHSDOOSLSHOLQHVEXV\ ª ,$FRPSUHVVHVGHSHQGHQWLQVWUXFWLRQVEXWVWLOOODUJHU ² 'LIILFXOWLHVLQEXLOGLQJ+: ² 9/,:ORFNVWHS !KD]DUGIDOOLQVWUXFWLRQVVWDOO ² (DV\0RUHLQVWUXFWLRQEDQGZLGWK ª ,$QRWORFNVWHS"'\QDPLFSLSHOLQH" ² (DV\'XSOLFDWH)8V WRJHWSDUDOOHOH[HFXWLRQ ² 9/,:IELQDU\FRPSDWLELOLW\,$SURPLVHVELQDU\FRPSDWLELOLW\ ² +DUG,QFUHDVHSRUWVWR5HJLVWHU)LOH EDQGZLGWK ª 9/,:H[DPSOHQHHGVUHDGDQGZULWHIRU,QW5HJ IUHDGDQGZULWHIRU)3UHJ ² +DUGHU,QFUHDVHSRUWVWRPHPRU\ EDQGZLGWK ² 'HFRGLQJ6XSHUVFDODU DQGLPSDFWRQFORFNUDWHSLSHOLQHGHSWK"

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

/LPLWVWR,/3 /LPLWVWR,/3

‡ &RQIOLFWLQJVWXGLHVRIDPRXQW ,QLWLDO+:0RGHOKHUH0,36FRPSLOHUV ² %HQFKPDUNV YHFWRUL]HG )RUWUDQ)3YVLQWHJHU&SURJUDPV $VVXPSWLRQVIRULGHDOSHUIHFWPDFKLQHWRVWDUW ² +DUGZDUHVRSKLVWLFDWLRQ ² &RPSLOHUVRSKLVWLFDWLRQ 5HJLVWHU UHQDPLQJ²LQILQLWHYLUWXDOUHJLVWHUVDQG ‡ +RZPXFK,/3LVDYDLODEOHXVLQJH[LVWLQJ DOO:$:I:$5KD]DUGVDUHDYRLGHG PHFKDQLPV ZLWKLQFUHDVLQJ+:EXGJHWV" %UDQFK SUHGLFWLRQ²SHUIHFWQRPLVSUHGLFWLRQV ‡ 'RZHQHHGWRLQYHQWQHZ+:6:PHFKDQLVPVWR -XPS SUHGLFWLRQ²DOOMXPSVSHUIHFWO\SUHGLFWHG ! NHHSRQSURFHVVRUSHUIRUPDQFHFXUYH" PDFKLQHZLWKSHUIHFWVSHFXODWLRQIDQXQERXQGHG ² ,QWHO00; EXIIHURILQVWUXFWLRQVDYDLODEOH ² 0RWRUROD$OWD9HF 0HPRU\DGGUHVV DOLDV DQDO\VLV²DGGUHVVHVDUH ² 6XSHUVSDUF0XOWLPHGLDRSVHWF NQRZQIDVWRUHFDQEHPRYHGEHIRUHDORDG SURYLGHGDGGUHVVHVQRWHTXDO F\FOHODWHQF\IRUDOOLQVWUXFWLRQVXQOLPLWHGQXPEHU

&6.XELDWRZLF] &6.XELDWRZLF]   RILQVWUXFWLRQVLVVXHGSHUFORFNF\FOH /HF  /HF  8SSHU/LPLWWR,/3,GHDO 0RUH5HDOLVWLF+:%UDQFK,PSDFW Avtˆ r##Qhtr"!" 0DFKLQH &KDQJHIURP,QILQLWH FP: 15 - 45 61 Avtˆ r#"'ƒhtr" ( ZLQGRZWRH[DPLQHWR 60 60 58 160 150.1 DQGPD[LPXP FP: 75 - 150 LVVXHRI 50 48 140 46 LQVWUXFWLRQVSHUFORFN 45 46 45 45 118.7 Integer: 18 - 60 41 120 40 F\FOH 35 100 Integer: 6 - 12 30 29 75.2 80 62.6 19 54.8 20 16

IPC 60 IPC 15 13 14 12 10 9 40 10 7 6 6 6 6 7 4 17.9 2 2 2 20 0 0 gcc espresso li fpppp doducd tomcatv Program gcc espresso li fpppp doducd tomcatv Perfect Selective predictor Standard 2-bit Static None Programs &6.XELDWRZLF] &6.XELDWRZLF]   /HF  Perfect Pick Cor. or BHT BHT (512) Profile No prediction/HF 

0RUH5HDOLVWLF+:5HJLVWHU,PSDFW 0RUH5HDOLVWLF+:$OLDV )LJXUH3DJH ,PSDFW 49 49 50 Avtˆ r##%Qhtr"" 59 FP: 11 - 45 60 45 45 45 &KDQJHLQVWU 54 &KDQJHLQVWU 49 40 ZLQGRZLQVWU FP: 4 - 45 50 ZLQGRZLQVWU 45 44 LVVXH.OHYHO 35 LVVXH.OHYHO (Fortran, 3UHGLFWLRQ 40 3UHGLFWLRQ 30 no heap) 35 UHQDPLQJUHJLVWHUV 25 30 Integer: 5 - 15 29 28 20 Integer: 4 - 9 16 16 15 20 15 20 12 16 10 15 15 15 9 IPC 13 IPC 10 12 12 12 7 7 11 10 11 11 6 10 10 5 5 4 5 9 4 4 4 4 10 5 3 3 3 6 7 5 5 5 5 5 5 5 4 4 4 0

0 gcc espresso li fpppp doducd tomcatv

gcc espresso li fpppp doducd tomcatv Program

Program Perfect Global/stack Perfect Inspection None

Infinite 256 128 64 32 None Perfect Global/Stack perf; Inspec. None &6.XELDWRZLF] &6.XELDWRZLF]   Infinite 256 128 64 32 None /HF  heap conflicts Assem. /HF  %UDQLDF YV 6SHHG 5HDOLVWLF+:IRU¶;:LQGRZ,PSDFW 'HPRQ  Avtˆ r##'Qhtr""! ‡ VFDODU,%03RZHU#0+] VWDJH

60 SLSH 3HUIHFWGLVDPELJXDWLRQ 56 52 900 YVVFDODU$OSKD#0+] VWDJHSLSH

50 +: .6HOHFWLYH 47 3UHGLFWLRQHQWU\ FP: 8 - 45 45 800

40 UHWXUQUHJLVWHUV 700 35 34 LVVXHDVPDQ\DV 600 30 ZLQGRZ 500 22 22

20 400 Integer: 6 - 12 17 16 15 15 15 14 IPC 13 14 12 12 11 12 300 10 10 10 10 11 9 9 9 9 10 8 8 8 6 7 66 5 6 4 4 4 4 200 3 2 3 3 3 3

0 100

gcc expresso li fpppp doducd tomcatv 0 Program li sc gcc ora ear nasa spice doduc fpppp

Infinite 256 128 64 32 16 8 4 wave5 alvinn eqntott su2cor tomcatv hydro2d mdljdp2 mdljsp2 espresso swm256 compress Benchmark &6.XELDWRZLF] &6.XELDWRZLF]   Infinite 256 128 64 32 16 8 4 /HF  /HF 

3UREOHPVZLWKVFDODUDSSURDFKWR ,/3H[WUDFWLRQ &RVWSHUIRUPDQFHRIVLPSOHYV222

‡ /LPLWVWRFRQYHQWLRQDOH[SORLWDWLRQRI,/3 0,36038V55NN ² SLSHOLQHGFORFNUDWHDWVRPHSRLQWHDFKLQFUHDVHLQFORFNUDWHKDV FRUUHVSRQGLQJ&3,LQFUHDVH EUDQFKHVRWKHUKD]DUGV ‡ &ORFN5DWH 0+] 0+] [ ² EUDQFKSUHGLFWLRQEUDQFKHVJHWLQWKHZD\RIZLGHLVVXH7KH\ ‡ 2Q&KLS&DFKHV .. .. [ DUHWRRXQSUHGLFWDEOH ² LQVWUXFWLRQIHWFKDQGGHFRGHDWVRPHSRLQWLWVKDUGWRIHWFKDQG ‡ ,QVWUXFWLRQV&\FOH  )3  [ GHFRGHPRUHLQVWUXFWLRQVSHUFORFNF\FOH ‡ 3LSHVWDJHV [ ² UHJLVWHUUHQDPLQJ5HQDPHORJLFJHWVUHDOO\FRPSOLFDWHIRUPDQ\ LQVWUXFWLRQV ‡ 0RGHO ,QRUGHU 2XWRIRUGHU  ² FDFKHKLWUDWHVRPHORQJUXQQLQJ VFLHQWLILF SURJUDPVKDYHYHU\ ‡ 'LH6L]H PP    [ ODUJHGDWDVHWVDFFHVVHGZLWKSRRUORFDOLW\RWKHUVKDYHFRQWLQXRXV GDWDVWUHDPV PXOWLPHGLD DQGKHQFHSRRUORFDOLW\ ² ZLWKRXWFDFKH7/%   [ ‡ 'HYHORSPHQW PDQ\U   [ ‡ 63(&LQWBEDVH   [

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  $OWHUQDWLYH0RGHO 9HFWRU3URFHVVLQJ 3URSHUWLHVRI9HFWRU3URFHVVRUV ‡ 9HFWRUSURFHVVRUVKDYHKLJKOHYHORSHUDWLRQVWKDW ZRUNRQOLQHDUDUUD\VRIQXPEHUVHFWRUV[ ‡ (DFKUHVXOWLQGHSHQGHQWRISUHYLRXVUHVXOW !ORQJSLSHOLQHFRPSLOHUHQVXUHVQRGHSHQGHQFLHV !KLJKFORFNUDWH SCALAR VECTOR ‡ 9HFWRULQVWUXFWLRQVDFFHVVPHPRU\ZLWKNQRZQSDWWHUQ (1 operation) (N operations) !KLJKO\LQWHUOHDYHGPHPRU\ !DPRUWL]HPHPRU\ODWHQF\RIRYHU HOHPHQWV !QR GDWD FDFKHVUHTXLUHGR 'RXVHLQVWUXFWLRQ FDFKH r1 r2 v1 v2 ‡ 5HGXFHVEUDQFKHVDQGEUDQFKSUREOHPVLQSLSHOLQHV + + ‡ 6LQJOHYHFWRULQVWUXFWLRQLPSOLHVORWVRIZRUN ORRS !IHZHULQVWUXFWLRQIHWFKHV r3 v3 vector length

add r3, r1, r2 add.vv v3, v1, v2 &6.XELDWRZLF] &6.XELDWRZLF]   /HF  25 /HF 

2SHUDWLRQI,QVWUXFWLRQ&RXQW 5,6&Y9HFWRU3URFHVVRU 6W\OHVRI9HFWRU IURP)4XLQWDQD8%DUFHORQD $UFKLWHFWXUHV Spec92fp Operations (Millions) Instructions (M) Program RISC Vector R / V RISC Vector R / V ‡ PHPRU\PHPRU\ YHFWRU SURFHVVRUVDOOYHFWRU RSHUDWLRQVDUHPHPRU\WRPHPRU\ swim256 115 95 1.1x 115 0.8 142x ‡ YHFWRUUHJLVWHU SURFHVVRUVDOOYHFWRURSHUDWLRQV hydro2d 58 40 1.4x 58 0.8 71x EHWZHHQYHFWRUUHJLVWHUV H[FHSWORDGDQGVWRUH ² 9HFWRUHTXLYDOHQWRIORDGVWRUHDUFKLWHFWXUHV nasa7 69 41 1.7x 69 2.2 31x ² ,QFOXGHVDOOYHFWRUPDFKLQHVVLQFHODWHV su2cor 51 35 1.4x 51 1.8 29x &UD\&RQYH[)XMLWVX+LWDFKL1(& ² :HDVVXPHYHFWRUUHJLVWHUIRUUHVWRIOHFWXUHV tomcatv 15 10 1.4x 15 1.3 11x wave5 27 25 1.1x 27 7.2 4x mdljdp2 32 52 0.6x 32 15.8 2x Vector reduces ops by 1.2X, instructions by 20X

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  ´'/;9µ9HFWRU &RPSRQHQWVRI9HFWRU3URFHVVRU ,QVWUXFWLRQV ‡ 9HFWRU 5HJLVWHUIL[HGOHQJWKEDQNKROGLQJDVLQJOH Instr. Operands Operation Comment YHFWRU • ADDV V1,V2,V3 V1=V2+V3 vector + vector ² KDVDWOHDVWUHDGDQGZULWHSRUWV • ADDSVV1,F0,V2 V1=F0+V2 scalar + vector ² W\SLFDOO\YHFWRUUHJLVWHUVHDFKKROGLQJELW HOHPHQWV • MULTV V1,V2,V3 V1=V2xV3 vector x vector ‡ 9HFWRU )XQFWLRQDO 8QLWV )8V IXOO\SLSHOLQHGVWDUW • MULSV V1,F0,V2 V1=F0xV2 scalar x vector QHZRSHUDWLRQHYHU\FORFN • LV V1,R1 V1=M[R1..R1+63] load, stride=1 ² W\SLFDOO\WR)8V)3DGG)3PXOW)3UHFLSURFDO ;  LQWHJHUDGGORJLFDOVKLIWPD\KDYHPXOWLSOHRIVDPHXQLW • LVWS V1,R1,R2 V1=M[R1..R1+63*R2] load, stride=R2 ‡ 9HFWRU /RDG6WRUH 8QLWV /68V IXOO\SLSHOLQHGXQLW • LVI V1,R1,V2 V1=M[R1+V2i,i=0..63] indir.("gather") WRORDGRUVWRUHDYHFWRUPD\KDYHPXOWLSOH/68V • CeqV VM,V1,V2 VMASKi = (V1i=V2i)? comp. setmask ‡ 6FDODU UHJLVWHUVVLQJOHHOHPHQWIRU)3VFDODURU • MOV VLR,R1 Vec. Len. Reg. = R1 set vector length DGGUHVV • MOV VM,R1 Vec. Mask = R1 set vector mask ‡ &URVVEDUWRFRQQHFW)8V /68VUHJLVWHUV &6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF 

'$;3< < D ;< 0HPRU\RSHUDWLRQV Assuming vectors X, Y LD F0,a ;load scalar a are length 64 LV V1,Rx ;load vector X ‡ /RDGVWRUHRSHUDWLRQVPRYHJURXSVRIGDWD Scalar vs. Vector MULTS V2,F0,V1 ;vector-scalar mult. EHWZHHQUHJLVWHUVDQGPHPRU\ LV V3,Ry ;load vector Y ‡ 7KUHHW\SHVRIDGGUHVVLQJ ADDV V4,V2,V3 ;add ² 8QLWVWULGH LD F0,a SV Ry,V4 ;store the result ª )DVWHVW ADDI R4,Rx,#512 ;last address to load 578 (2+9*64) vs. ² 1RQXQLW FRQVWDQW VWULGH loop: LD F2, 0(Rx) ;load X(i) 321 (1+5*64) ops (1.8X) ² ,QGH[HG JDWKHUVFDWWHU MULTD F2,F0,F2 ;a*X(i) 578 (2+9*64) vs. ª 9HFWRUHTXLYDOHQWRIUHJLVWHULQGLUHFW LD F4, 0(Ry) ;load Y(i) 6 instructions (96X) ª *RRGIRUVSDUVHDUUD\VRIGDWD ADDD F4,F2, F4 ;a*X(i) + Y(i) ª ,QFUHDVHVQXPEHURISURJUDPVWKDWYHFWRUL]H SD F4 ,0(Ry) ;store into Y(i) 64 operation vectors + ADDI Rx,Rx,#8 ;increment index to X no loop overhead ADDI Ry,Ry,#8 ;increment index to Y also 64X fewer pipeline SUB R20,R4,Rx ;compute bound hazards &6.XELDWRZLF] BNZ R20,loop ;check if done &6.XELDWRZLF]   /HF  32 /HF  ([DPSOH9HFWRU0DFKLQHV 9HFWRU/LQSDFN 3HUIRUPDQFH 0)/236

Machine Year Clock Regs Elements FUs LSUs Machine Year Clock 100x100 1kx1k Peak(Procs) Cray 1 1976 80 MHz 8 64 6 1 Cray 1 1976 80 MHz 12 110 160(1) Cray XMP 1983 120 MHz 8 64 8 2 L, 1 S Cray XMP 1983 120 MHz 121 218 940(4) Cray YMP 1988 166 MHz 8 64 8 2 L, 1 S Cray YMP 1988 166 MHz 150 307 2,667(8) Cray C-90 1991 240 MHz 8 128 8 4 Cray C-90 1991 240 MHz 387 902 15,238(16) Cray T-90 1996 455 MHz 8 128 8 4 Cray T-90 1996 455 MHz 705 1603 57,600(32) Conv. C-1 1984 10 MHz 8 128 4 1 Conv. C-1 1984 10 MHz 3 -- 20(1) Conv. C-4 1994 133 MHz 16 128 3 1 Conv. C-4 1994 135 MHz 160 2531 3240(4) Fuj. VP200 1982 133 MHz 8-256 32-1024 3 2 Fuj. VP200 1982 133 MHz 18 422 533(1) Fuj. VP300 1996 100 MHz 8-256 32-1024 3 2 NEC SX/2 1984 166 MHz 43 885 1300(1) NEC SX/2 1984 160 MHz 8+8K 256+var 16 8 NEC SX/3 1995 400 MHz 368 2757 25,600(4)

&6.XELDWRZLF] &6.XELDWRZLF] NEC SX/3 1995 400 MHz 8+8K 256+var 16 8  /HF  /HF 

9HFWRU$GYDQWDJHV 9HFWRU3LWIDOOV ‡ (DV\WRJHW KLJKSHUIRUPDQFH1RSHUDWLRQV ² DUHLQGHSHQGHQW ‡ 3LWIDOO&RQFHQWUDWLQJRQSHDNSHUIRUPDQFHDQGLJQRULQJ ² XVHVDPHIXQFWLRQDOXQLW VWDUWXSRYHUKHDG ² DFFHVVGLVMRLQWUHJLVWHUV 1 OHQJWKIDVWHUWKDQVFDODU !R ² DFFHVVUHJLVWHUVLQVDPHRUGHUDVSUHYLRXVLQVWUXFWLRQV 9 ² DFFHVVFRQWLJXRXVPHPRU\ZRUGVRUNQRZQSDWWHUQ ‡ 3LWIDOO,QFUHDVLQJYHFWRUSHUIRUPDQFHZLWKRXW ² FDQH[SORLWODUJHPHPRU\EDQGZLGWK FRPSDUDEOHLQFUHDVHVLQVFDODUSHUIRUPDQFH ² KLGHPHPRU\ODWHQF\ DQGDQ\RWKHUODWHQF\ $PGDKO V/DZ ‡ 6FDODEOH JHWKLJKHUSHUIRUPDQFHE\DGGLQJ+:UHVRXUFHV ² IDLOXUHRI&UD\FRPSHWLWRU (7$ IURPKLVIRUPHUFRPSDQ\ ‡ &RPSDFW 'HVFULEH1RSHUDWLRQVZLWKVKRUWLQVWUXFWLRQ ‡ 3LWIDOO*RRGSURFHVVRUYHFWRUSHUIRUPDQFHZLWKRXW ‡ 3UHGLFWDEOH SHUIRUPDQFHYVVWDWLVWLFDOSHUIRUPDQFH FDFKH SURYLGLQJJRRGPHPRU\EDQGZLGWK ‡ 0XOWLPHGLD UHDG\1 E1 E1 E1 E ² 00;" ‡ 0DWXUHGHYHORSHGFRPSLOHUWHFKQRORJ\ ‡ 9HFWRU'LVDGYDQWDJH2XWRI)DVKLRQ" ² +DUGWRVD\0DQ\LUUHJXODUORRSVWUXFWXUHVVHHPWRVWLOOEHKDUGWR YHFWRUL]HDXWRPDWLFDOO\ ² 7KHRU\RIVRPHUHVHDUFKHUVWKDW6,0'PRGHOKDVJUHDWSRWHQWLDO

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF  6XPPDU\L 6XPPDU\L ‡ ([SOLFLW5HQDPLQJPRUHSK\VLFDOUHJLVWHUVWKDQQHHGHGE\,6$ 8VHVDWUDQVODWLRQWDEOH ‡ 9HFWRUPRGHODFFRPPRGDWHVORQJPHPRU\ODWHQF\ ‡ 3UHFLVHH[FHSWLRQV6SHFXODWLRQ2XWRIRUGHUH[HFXWLRQ,Q RUGHUFRPPLW UHRUGHUEXIIHU GRHVQ·WUHO\RQFDFKHVDVGRHV2XW2I2UGHU ‡ 6XSHUVFDODU DQG9/,:&3,  ,3&! VXSHUVFDODU9/,:GHVLJQV ² '\QDPLFLVVXHYV6WDWLFLVVXH ‡ 0XFKHDVLHUIRUKDUGZDUHPRUHSRZHUIXO ² 0RUHLQVWUXFWLRQVLVVXHDWVDPHWLPH !ODUJHUKD]DUGSHQDOW\ LQVWUXFWLRQVPRUHSUHGLFWDEOHPHPRU\DFFHVVHV ² /LPLWDWLRQLVRIWHQQXPEHURILQVWUXFWLRQVWKDW\RXFDQVXFFHVVIXOO\IHWFK DQGGHFRGHSHUF\FOH⇒ ´)O\QQEDUULHUµ IHZHUKD]DUGVIHZHUEUDQFKHVIHZHUPLVSUHGLFWHG ‡ 6:3LSHOLQLQJ EUDQFKHV ² 6\PEROLF/RRS8QUROOLQJWRJHWPRVWIURPSLSHOLQHZLWKOLWWOHFRGH H[SDQVLRQOLWWOHRYHUKHDG ‡ :KDWORIFRPSXWDWLRQLVYHFWRUL]DEOH" ‡ %UDQFKSUHGLFWLRQLVRQHRIWKHPRVWFUXFLDOIDFWRUVWR ‡ ,VYHFWRUDJRRGPDWFKWRQHZDSSVVXFKDV SHUIRUPDQFHRIVXSHUVFDODUH[HFXWLRQ PXOWLPHGLD'63"

&6.XELDWRZLF] &6.XELDWRZLF]   /HF  /HF