Professional Documents
Culture Documents
13
~
'1J
aemuouaesersena RIse
13.2 1111'm~d L",ufl1'lj'iI\n~' 'fItY 13.3 111"1'if~idt",urt.fltiimh~latfU9-4~ftl~81thun1j1~J.Jtl.1lam'tt1 13.4 d01ilVlnn1111RIse 13.5 'lIiJ'au':uflo1i1V1nn1111 RIse 13.6
.awn
<II
MIPS R4000
13.7 SPARe
522 unfi
13
f}OUUbWH)SVlS:::Qa
RIse
Glmdvr\lJJ'Ul
~ El:l--lV11 bq]Erfbb1.J'lJ
stored-program
~u:l--lllutJ
'Vu>1.
2493
l~ilrmvr\lJJu
lrnd~~l\>lblJbnt)l~uil:El~:l--Iln ~
'lJ~jjYllElUb~:l--Il~0\lJJulum:l--l1Vl&h~~n1l
"q]d::;!:;]~" 'lJ~~
'lIEl-J 1~
bfl~El-JflEl:l--lV11bq]El~~u1t)1m~:l--I<1fu~ vr\lJJUlflEl:l--lV11bq]El~uq]d::;n~
System/360
1utJ
'\III.fI. 2507
DEC
~ "PDP-8"
~u1unmGlEl:l--ll
um:l--l'llEl-JG1d::;n~~El:l--lV11bG1El~
1~bb~n6'1muq]~md:l--lflEl:l--lV11bq]El~bb~::;nld6'1~l-J~U:l--ll1~-JluElEln,<\)lmlu
iiu~El'lJ~jj'YI
~.jfl~
OJ
~d~b'YlflUfl~bbGlnGll-jn'U
Wilkes
L'UU
bb~~1~11Jm'lulltJL-ii-jl'UL'UfiEld-JV1dbGlEl~
System/360
'lIEl-j1J~~lEltib~d-J
Microprogramming
'lhmllLVi-jl'UElElmb1J1Jbb~~m'l~1l-jVlUd~
cache
1~11Jm'l~1l-j
l11'UfiEld-JV1dbo/lEl~ lEltib~d-J
iu 85L'UU
~-jl~id~bvid-JtJ'l~R'YlTIm'V1L'Um'ltJ'l~d-Jd~~~~'Uvl~
• Pipelining:
dJ'Ub'YlflUfI~Ulbbmmld-J~l?1mW'l~d-Jd~~mb1J1J'lI'Ul'Ub'iilltJ~~d-J~m'Un1J
ttJ'lbbmd-J~l~-j~i'lnl'l'Y1l-jl'Ubb1J1J~~-jo/ild-J~l~1J~l~-j
• Multiple processors:
~dd-Jn'Ul~ 'illnvh.nEl~1~m1ldd-Jl.nl-j~'U btJ'UtJ'l~&1~m'ld-J~itl~ru~~I?1~El
'" ~ q
~-j~bTlI?1~'UL'U~l~1JGlElltJ~-ji'lmld-JUl~'U ~mi1o/1~m'ld-Jbb1J1J
L'il bb~~m'il'il~
Computer (RISe)
~'U'l Elm-j'lfl?1b'il'U tm-j~1l-j
~mi1o/1~m'ld-Jbb1J1Jd'1~bb~n&hbEl-jElEln'illn~mi1Gl~m'ld-JbblJ1J m'llbml~t..1~mi1o/1~m'ld-J
RISe
h L'U~l'U
bb~~~mi1o/1 ~m'ld-J~itl~b!!~-j
l~blnnlVl'U1?1 bb~~l~11Jm'lElEln OJ
m'li'l~~mo/lEl~btJ'U'ill'Ud'Ud-Jln m'lLm~mGlEl~m.h-ji'ltJ'l~R'YlTIm'V1
I I I I
• •
bb~~i'l'illm'U'illnl?1
RIse
, bb~~bb1J1Jfl
l~L'll
RIse
524
unit
13 / ftDuubW}()SVlS:::l}a
RIse
Superscalar
Ultra
SPARC 1987
69
4
SPARC 1996
--
8 246 8
40-520
32
31
4(1--510
~J . ..,._
:'1
128
16-32
~..,..... "
64
6~EI~~m:J-Jldbl:J-JEI-,l6~'U l~EI tJl-,l'ii~ 6OJ'U~EI Vi'\9J,J'U lnld 6~Eldl m'lJEI-,lElJJmrnm~~ , 66 d'fl~ildl~lblnfl-,l~ :J-JGi~l ~ 66~Gi'U
'lJEI-,l'llEly.JGl6n~ni1i''lJildl~l~~-,l~'U
I'J6tJ'U'llEly.JGl6n~ Wl 'lfm~~6n~
ml:J-J 1d-l'i-bl6~EI~EI'lJEI-,l'llEly.JGl6n~
i1nOJ::;iloliEli::l~'V1m~ 6n~~'U
nld~EI'lJ'fl''UEI-,l~6n~~'UOJlnunl~m6Gi::;'lJ~~'YI~B-J~~
m:J-Jldbl~66'fldll'J'fl::;6~1'J~ ~
66Gi::;'fl'U'lJ'fl'i1>'UnldElEln66'lJ'lJJJd66nd:J-J66'lJ'lJillm-,l'fl'~l-,l l
(structured programming)
VI~EIlJJd66nd:J-J66'lJ'lJ8E1'lJ60JnGl
(object-oriented
design)
'VlU'Yl1"~U1bff'j,.m 1'VlJ.Jd 1Ji'rl11Vibn~i1b1!'Vl11'VlJ.J~1d-Jd-J1 i1b1!'Vl1m1d-Jbb~f)1Yi1" ~eJ 1UJi'lU m1d-J'VlJ.,J1tJ(semantic bbfl::;mlrll"lU~bn~~u~~" J'1mld-Jbb~f)lYil"1U~lU~U'l JllBl bf1~eJ,,~1'VlblJ1~ bnuml
gap)
1uffmil~
Vi
~1tJb'liU mllh::;d-J1flv.Jfl~1J.JJ'11h::;~'YlITJll'\f1 'lJUl~'lJeJ" Tthbbnld-J bbfl::;mld-Jo]iu~eJU ~bn~~u 1 uTLhbbnld-JG11 bbJJflJllBl i(f)eJeJf) uiru
1~'\f1tJltJld-J~~::;bb1li1ru'Vll~bn~~ub~eJrl11Vimld-Jbb~f)Gil"dfl~fl" ~ 'i1~~1~"'lJU1~
1'Vlq,l
CASE
mlr11'VlU~~lbb'VlU"~eJ~
(addressing mode)
bbfl::;mlff~l"m~~ 1~bbri~1~"
bn~~1'Vl1UmlJJl::;mfl ~J'1141"lUUUbf1~eJ"
VAX
~lif"fiJ'1m1d-Jo]iu~eJUd-J1f)~Ub1f)ff~1"~UJ.,Jl '!J
• •
microcode
1'UJl1Bll::;~uff,,~J'1m1d-Jo]iu~eJU 1~J.,J1f)~"~U '!J 1u'Vld,,~'\f1 sn tJlJ.,Jr11'VlU~f1ruflf)Bru::;bbfl::;lJJ uuu , '!J
J'1ml~f)B1~n~lU
ml1Jl::;J.,J1flv.Jfl'lJeJ"~1~"bf1~eJ" ~bbJJflm1d-J'Vld-J1tJd-J1~1f) 1JJlbbnld-J~b~tJU~1tJJllB1f1eJJ.,J'V11b~eJ~ l::;~Uff" '!J mll~ v.Jfl~1f)ml~f)B11~~u 11Vii(f)l~ tJfhu 'Vld"rl1ml~f)B11
,
tJff~l"ffmi1~
umlJJl::;mflv.Jfl~l~"
1~tJ~l" 1ViJ'1m1J.,JJ1tJ~U bb'YlU~~::; 1ViJ'1m1d-Jo]iu~eJmubnu 1JJ b~eJrl1m1J.,Jboii1hb~mnUb'Vl~v.Jfl~ffi(uffuuffmi1~tJnllJ.,J , , b~d-J~1 tJmle:JITU1 tJf1ruflf)Bru::;mlJJl::;d-J1fl , • n1'3Cth:n'U.~di(p)~'U.
RISC
1Vi~~,,~u ~,,~::;
~::;dJUG11UeJf) 1Vi'Yll1Un"'VlU1~~~::;~eJ"m::;rl11~tJ;V1tJbbfl::;'!J
JJ5n~tJl~1~~eJunU'VlU1tJm1d-J"il1
• ~dtmn'3:::':h~t1m.Z1ttli.-2f
.. ..
141"lu
~"~::;ff1mlb1U
526 unri
13 / Vl()lJUi::n~()s~s:::lJa RIse
1'U~d'U ~ bVl~e)'lIe)-JV(doiJ
1JJ~bbm~ (b~t.Jfl1lbtJ'U
~-JbtJ'Ufll~1<J1~~~bn<J1~'U1'U'lIill~~1JJ~bbm~ril'~-JbiflJJ~~~d~~~ ~
dynamic)
bb~~Yllfll~U'lJ~l'Ud'Uf1~-JflldYll-Jl'U~~e)-Jfll~~flBl
~dtJ1TIfll~'lJ~l'Ud'U~l~-JJJ~~I1l'YIGil-J"l
l~Yll fll~l
~bbGlflGil-Jn'U JJd~1tJf1~l~-J~lVl~'lJm~rilVl'U<J1fil
9 'iI 'iI
(assignment statement)
<V
(conditional statement
b'lf'U IF
Vl1e) LOOP)
JJd~ 1tJf1~l~-JJJd~I1l'YId~~\lmbJJ~
lubtJ'U~l~-JJJ~~I1l'YI
compare and
ldJue)tJ ~
branch
~-JbtJ'Um~1Vfb~'U1lfl~ lflm'lJf1~ih<i1'lJmd'!Jd~~d~~~~l~-J"x'Un~ml~~l~ru ,
btJ'Umd~1Vfb~'U1l
15'X,
26~ltt
5 (x) IS')';,
2Y"j(, 6%
42(~{J
31 'X,
12'~~)
43% 3t~f,
lOl .0
1 1 (x)
3f}'iJ
45% 13'?h
IQ' 10
20/0
I V!rua)Juffiiib1t1uEhJmst1s::;)J:JaCJavhctHVl~EhJ
~...:JcJ1~md;;1~l...:J l 1JJdbbm:l-J~l'vj~'unld'Yl(91;;18'U~'Ub~tmll
527
bbG'1~'YllmdbbJJG'1btl'U 1JJdbbm:l-JJll'fj-l
'IJ
bbG'1::;~lVl~'U~V1 tJ
Motorola 68000
oii8:l-JG'1
'IJ
1:lnd'd'lJd'd:l-J:l-JlOJlnmdil...:Jbnq]
'IJ 'IJ
'l'U'lIru~~nl~...:JJJd~:l-J'dG'1v-.1G'11JJdbbm:l-J
'IJ
oii8:l-JG'1 'l'Uf18~:l-JU~~bbG'1~Vil
'IJ 'IJ
(1:lnr1'd...:JJ'lVlun 1(91tJq;)l~...:JJll'fj-l bf1~8...:J) bn(91OJlnnldt·boii8:l-JG'1 'l 'Uf18~:l-JU~;;18...:J bbG'1~~m:l-J:l-Jlf1rucJ1'd tJ -;;Jl'U'd'Uq;)l~...:Jbf1~8...:J~bn(91~'U ~dl(91~'U 'l'U'Yll'U8...:Jb&imn'U
(normalized)
'IJ
oii8:l-JG'1 'l'Uf18~:l-Ju~VilbbG'1~~Vln
hlq]blJJd::;;;1...:J~~mlOJ~...:J'lI8...:Joii8:l-JG'1
,
'IJ
'l'Uq]ldl...:J
13.2
q]ldl...:Jdbb;;1(91...:Jl '
Vi b~'U
md~n'fj-litlcJ1'lViv-.lG'1~'VIJTI
bf1~8...:J'l 'Uq]d~1JG'1
ClSC (Complex
bb~ll'l1il,(91'l18...:J&h~nm~'Yll
(operand types)
OJ~~ml:l-J~lci1b1!
btl'Umil...:J:l-Jln
bbqlb~8...:Jun~'U
v-.lG'1md~n'fj-l'll8...:J
Patterson
b~mn'U'l1il,(91'l18...:J
v-.lG'1~'VIJttcJ1bb;;1(91...:J 'lVib~'Uml:l-J;;18(i1f1i18...:J
'IJ
'lI8...:J JJdbbm:l-J~b~tJ'UcJ1'dtJJll'fj-l 1
bbG'1::; Pascal
~~nldeJl...:J8...:J&hblnm~'Yll'l1il,(i1'U8n-;;Jl'U'd'U
(scalar variable)
~8
'IJ
variable)
~'lI8'Ub'llq]md
mdeJl...:J8...:J I,JJiJ...:J
&l'dblnm~'YllJJd~bJl'Ylm~bdtJVl~81m...:J;;1~l...:Joii8:l-JG'1bb'U'U~'U'l
OJ~cX8...:J~mdeJl...:J8...:Jn...:J(i1dd'l1U Vl~8
C
23 (X) 53(}b 24°,{)
Average
20(}~)
55 'X, 25 yo
t
528
unfi
13 I flOl1W:HLilosLils:::l}a Rise
>5 arguments
>8 words of arguments local scala rs and and
o (;,f)
0-6IY;J
scalar variable
~ b1J'U~1
bbJJdYie:J-,J~'U 'Uif(9)ri1'U~6'1-,J&.Jln~6'1(9) 1 -u
m~b~tJn
lohl'jI\Jd~'btJe:J~
~
(procedure
call)
(return)
~-J V-Jfl"Jlnmdf1m~l
b1J'U
~l-JVld-J'lIe:J-J 1JJdbbm&.J~
13.2
~-J~~l~b1I6'1e:J-Je:J ~l-J~"J::;~e:J-,J~"Jldru,
bbfl::;oJl'U1'Ud::;~1J~'U~1'jI\Jd'6btJe:J~b~tJnsife:J'Un'U
(depth of nesting)
lolr-Jl'U bbfl::;
Tanenbaum
'jI\J1Jll
98%
'lIe:J-J 'jI\Jd'6btJe:J~~bn(9)mdb~tJn 1 6 ~1
$'lmdri-JvJl'U'jI\Jldl~b(9)e:J.fl&Jbn'U
92%
V-Jflmdf1n'jjl~6'1e:J(9)~ii'e:J-Jn'U 1'jI\Jd'6btJe:J~~'U$'l'll'Ul(9)t.J1Vl1;1!Un
'lI'Ul(9)'lIe:J-J'jI\Jldl~ b(9)e:J~~lVl~1J
nld6'1~l-J6'1m1:1(9) tJmd&.J'lle:J-J'li(9)f1l~-J
9
1 Viililn'jjru,::; bfl tJ
I
1&Jl'libb'U1'Yll-Jnlde:Je:Jn
9
bb1J1J~ilJJd::;f{'YlTIJ1l'jI\J
md'jllJmm&.J6'1u1J6'1'U'Umd'!J.'fuJJd-JJJd::;f{'YlTIJll'jI\J'lIe:J-Jri1'U~n'Ubdm
l'UmdYIl-,Jl'U'Ul'U61
'lIe:J-J 1JJdbbm&.JJll'jjld::;~1J6'1-J -u
13.2 / ~-.l~md-JldflmtIM~lnnld~mnb'!J'U~l'Ud'Ud-Jlnmd-J'l..h::;md
q
msltiS~aw1C)s1uJauU1~11'1rY 529
~-.ll~nmtJb'lJ'Unldnl'VI'U(91
f1ruG'1d-JiJ~'lI€l-.lG'1mlJ<iltJmdd-J
q
RIse
~€l
l.h::;mdbbdn
md lm~m<il€l~~l'Ud'Ud-Jln
'VI~€ll-iib'YIf1uf1
'lJ
~-.lbU'UmdtJ.'futJd-.lmd8l-.l8-.lGhflnn~l q
md~mnl~bbG'1(91-.l1i4bi1'U1l5'1md8l-.l8-.lbn(91~'U'VImtJf1~-.l<il€l'VI-d-.l~l~-.l
l-ii~l~-.l~l'VI~1Jmdnl'VI'U(91~l (l'U'VI'udtJmld-J~l)
q
(assignment statement)
b~mn'U
~€lddd-Jb-ihn1J
l'U1J~nru
bb1.'1::;md8l-.l~-.lciidbbtJdG'td'Ul'V1qJ~bu'U
urm1m~m<il€l~~l'Ud'Ud-Jln
mn'U
bb1J1J~l~-.l bf1~€l-.l~l'VI~1Jmd'Y1l1tJtl1mt~
::;C;;€l-.lm::;'Y1l~d tJmld-J
'lJ
bct€l-.l~ln~(91G'td'U'lI€l-.l~l~-.l
branch
rm l-iib'YIf1uf11tJl~1mX~dtJ1TImdtJn~,x'U~::;
bb~1ltJd::;b~'Ud~::;
~-ii(91b~'Ub'Yhn1JG'1€l-.ltJd::;b~'Ubbdn~nG'ild!i-.l
r..J~G'1dtJ~1~nG'ild!i-.llwxd-n€l
q
13.1
,x'U 1~~1i4bi1'Umld-J<ile:J-.lmd
l'Umd
l-ii-.ll'Uciidflnm::;'Y1l
'lJ q
mh-.ldd(91 b~d
Wi-.l~1~'YIdl1J bb~d1l
~l~-.lmdnl'VI'U(91~l,x'U5'1if(91G'td'Ud-Jln~G'1(911'U
'iJ 'lJ,
Q.I
1tJdbbmd-J
'iJ
G'td'Ul'V11J.lbu'Uciidflnm::;'Y1l~ md lm~m<il€l~
b~€lddd-J-nmYl~~~-.l.$f-.lG'1€l-.ltJd::;m~b-nl~dtJn'U~::;'V'J1J1l
'lJ
~lm'Ud-Jln
q
l'Umdbn1J-n€ld-J~
i41m~m<il€l~
~~m<il€l.fty.J~
'lJ
'Umdbn1J-n€ld-J~n
'lJ 'lJ q
bct€l-.ld-Jl~ln1l
~~m<il€l~bU'U€ltJmru
q
b~d'll€l-.l'VIUd tJmld-J~l'VI~n
cache
(register file)
'VId-JltJ!i-.l n~d-J'lI€l-.l~~m<il€l~~5'1'l1'Ul(91
'lJ q
b~nd-Jln md-Jldmn1J1111ltJ
'lJ
l'Uciid'li.y:)tJ1~b'VI5"j€l'Un1J'VIudtJbmb€l~tJbb~::;'\IIudtJm1Jf1d-J
'lJ
bb~::;li-.l5'1'l1'Ul(91
'lI€l-.l<illbb'VIU-.l~mj~'Un1l'll'Ul(91'l1€l-.l<illbb'VIU-.l~€l~'lI€l-.l'VIudtJmld-J~l'VI~n
'I 'iJ
bb~::;bYi€lli4md lm~m<il€l~
'lJ
bb~::;'VIUdtJmld-J~l
530 unfi
13 / flOlJUJJUilOS{iJ.S::lJ8 RIse
lTIrm~~m:h':d:)lTI~'U~l'Um.h:m~lTI~
'l!8y.j~bb11'OJ::: 1oii1'Lldbbm3-.l<if1bbui;Ull'l~1j'U<if1~'l'i1V1i(1~U~~lJ1Viijmd 1oii~1'U~~~b<il81m.h~ij d Ud:::~'YlTIm'V'l 1Udbbm3-.l<if1bbUi.'1m~l'OJ:::'V'I~mJ13-.1U~~lJ 1Vi<if1bbud~'OJ:::nn 1oii~1'UumJfI~~~~CJ1 '" , (rnu 1'U'lh~b1mVld~) nmnlJ 11l'U~~m<il81 ~~dj'Ul~<ii8~ 1oiieJi.'1n81Yi3-.l~~lJ~8'U 1'Umdlbfldl:::~
'lJ
'"
'"
1CJ1~Un~bb~1 rm 1~~m<il8{-;J1'U1'U3-.l1n 'OJ:::'li1~i.'1CJ1m13-.1~1'Umdbbi.'1mu~~'U-ii83-.1i.'1d:::VI';h~ ~~m<il8{nlJmb~m13-.1-;J1i.'1~ ~~it'U~1'Umd88nbblJlJ'OJ:::b~m-ii8~nlJmd~CJ11m~~~1~~~m<il8{ 1VilJddi.'11<ilnud:::~~~d' ,, bd8~'OJ1 nmd€11~€l~<if1nnm:::'l'i1it 'UbnCJ1~'UnlJ<if1 bbud~nn bnlJl11'UlJ~b 1 ill 1n~ b~~~n'U
'lJ '"
'"
(global variables)
i:1b11V11~bnCJ1~'Un~8;:;'m3-.l'll8~~h:h it'Uijmd\'u~~'UUUi.'1~8~b~3-.l8
'lJ
'"
LevelJ
Call/return
Level J + 1
13.2 I
(nested call)
88mU'U'lfl?1b~n'l (b~~nll
window)
Vlm~'lf1?11l?1wllVl'Ul?1md1oii~l'UbbfiiG'1~'lf1?1
n'U mdb~~n 1
"
1oii~l'U~~m<ll8~
Yiu-if8'Un'Ub~81oii1 'UmdGi~e.Jl'Uf1l'V'lldl~b<ll8~ i1,md-Jnld'Yll~l'U 1'UGi'n~rn~dbbr!l?1~ 1Vib~'U1'UdtJ 13.1 tu nm 11?1f1<llld-J 'OJ~51VlU lfiil~ 'lJ ~~m<ll8~blA1 ~~VlUlfiil~ b~m~f1nu ld-Jl1oii~l'U Vli(lfiil~~~m<ll8~bbtJ~88n bU'Urlld-JGid'U ~51'l1'Ull?1 'lJ fI~~ 'V'lldl~b<ll8~~~r!b<ll8~
(parameter
register)
1oii~lVl~Ubf1Uf1l'V'lldl~b<ll8~~Gi~d-Jl~~
1'V'ld~b~8~bbG'1~ 1oii1'UmdGi~f1lnGi'u~d~b'lf'Un'U
lG'1f18G'1~~m<ll8~ (local
register)
1oii~lVlW
register)
1.j5~lVl~mdbbG'1mtJ~~'U'V'llJl~b<ll8~bbG'1~l>JG'1Gi''V'lTI
~~m<ll8~~dmld'll8~
1'V'ld~b~8~Vl'ct~'OJ~bu'U'lfl?1b~mnu'V'lldl~b<ll8~~~m<ll8~ ,
'lI8~1'V'ld~b~8~f1n b~~n1oii~~'OJ~'lfd 1Vi51mdbbG'1n ~ btJ~~'U'V'lldl~ b<ll8~d~Vlll~n'UlcX[l?1~ laJrii8~51 'lJ mdbfl~8'Ulh~oii8~G'111?1'l 1'Umdr!ii:ur!'U'UmrYh~l'U'lI8~mdb~~n , 1oii1'V'l~b~8~bbG'1~mdli8'UnGi'ud-Jl'Yll~l'U~b~d-J (calls
and returns)
~51-.Jl'Ud'U-.JlnI?18tJ-.Jl'Ud'UVl.ct,~ ~~Uld-Jl1oii~lVl~U1'V'ld~b~8~f1m~~n 1oii1'U~l~UVlGi'~'l oii8d-JG'1 'lJ 'lJ 'lJ ~lVlW 1'V'ld~b~8~f1m~~n 1oii1'Un~d-Jbbdn'lOJ~f1nulltJbf1uIn'UVl'j,b~mld-J-.Jl ' 'iJ 'iJ
'I
bbG'1~f1neil'UnGi'u 'iJ
(WO ~~ W5)
B, B G1d~
bU'UG1d~~~lbbVlU~'lI8~VlUlfiil~~nlGi'~1oif~l'U8~
v "
1'U'lIrn~~'U
"
532 unfi
Restore
Save
Currentwindow pointer \
~ ~
<jJm')ltll1'jAjd~b~€i~ D
"
~~b~€Ju~lbbVlu-.11u~~Vlii:l~l-.1t;l<lld-Jl w5
wO ~-.1djUVlii:l<jJl-.1'IJ€J-.11'jAjd~b~€J~ A n~~'I'1l1Vifilb~d-J'lJ€J-.11'jAjd~b~m~ A
13.2 I (l-U'6'i1'U
mslJ5S~alb1os1uJauu1V11l'ifli
533
A.in) bini.'1'lJ~'l ~
~'l~'Utllfil'll€l'l
cwr
rlm~mhd-Jlii'l~lbbVlU'l~5'1filb'Yhn'lJ ~
swr
F
QJ~"YlllVid'~~~'Ub'Yle:J11Y1Yi QJln~'U
bY1e:J"Yllnld1JwYimh'U
A.in
1u
bbi.'1~
A.loc
l~1'U'vju1~ml:!-l..:ll l-if[Y1d*b~€l1
swr
QJ::;rlmYid-Jfil1u~~~-'bbVlu'lVliblGll'lil~ ~ ;;:i1'Umdiie:J'Un~'lJ
bbi.'1::;nd::;'lJ1'Umdb1~n
9
1u"Yll'll'U~'l'OJ~~
fil'lle:J~
cwr
QJ~binG'1~fili.'1~:!-ll ~~ l'U~-d'OJ::;5'1filb'Yhn'lJ ~
SWP
~~QJ~"YlllVibn~
N-1
5'1filUd::;d-Jlru,
8 VliblGil~
b'lf'U l'Ub~~e:J~
Berkeley RISe
~~'lI'Ul~
8 VliblGil~bbGii.'1::;VliblGil~5'1161~mGle:J1
bU'Uc;r'U
b~~e:J~~e:Jd-J~1bGle:J1
Pyramid
5'1 16 VliblGil~
bbGli.'1::;Vl'UlGil~5'132 1~mGle:J1
mWl~l'U
1~~ loiiVliblCJil~~~;;:!bGle:J1Glld-J~1~e:JfilJl~
1ubb~1~'U
md~(9]bn'lJc;j'1bbuJYie:J~~'U
(local variable)
~lVl1'lJ 1Y1d*b~e:J1~W-1
(global variable)
1Jl ~~Vld-Jl~ii~c;j'1bbU~md-Jldbi
1Jll'Ub1mb&1~1n'U
uilsrmn
~l~~[llMl
1um~d-Jl~lVl1u tll5'1nld-5l~~~Gl1bbUd
(1Udbbndd-Jc;j'1bbUi.'1[llMl)
111'U*Yl~ ~ 1(9]~b%Y1l::; 1~;;:!bGle:J1nG'id-J-d'OJ::;5'1..:ll'U1'U..:lln(9] bi.'1::;m:!-lldbi-5l~~~ 1Jl'OJln 1Y1d*b~e:J15'U b 9 ~~Vld-J(9] d'!Jbb'lJ'lJ~Jl~ ~ md'\.l,ld::;'lJ'lJmdnlVl'U(9]Gl1bi.'1'l1bb'lJ'lJd::;'lJ'lJb&1~1:!-ll1oii'OJ::;'lf1~ Gl1e:J~l~b'lf'U md-5l~~~lu~~1~mGle:J1Vl:!-llmi.'1'l1 lVid'!Jbb'lJ'lJ~l~~b~~e:J~bU'U ~
0 ii~Vld-Jl~bi.'1'l1 7 'OJ::;bu'Umd
1TIm"l"d'OJ::;'I'1l1 Vimde:Je:Jnbb'lJ'lJm1(9]
u115'1mld-J'i!'lJ.jfmibYid-J~'Ubbi.'1::; ~
1Udbbnd:!-l
Gl1 bbud;;:i1'Unm~c;j'11(9]~'OJ::;rln
534
unf
13 I ~OlJlli::HJilOSJilS::;lJa Rise
1~ml1le:)'fl'\"J~
(register file)
~~\i1lm-.lG'1'~l-.lbtJ'UbbuuVliblGhJ bbth~~
rllVlUl~btJ'UbVl~€l'Ui:i'\"Jb'\"J€l{
~1.jf~lVl1u~\i1bnu&h
bb'U1luwh<il::;blmbd-Jl1.jf-.ll'UJJmJ~~-.l ~ (bbGl~mld-Jb~1G'1'-.ln1ld-Jln)
Cache
~lmd-J
cache
bb'fl::;1~G'1'bl1l€l.fl'\"J~d-Jl1.jf,xW'J::;btJ'U1TInll~Jlll
btJ111UbVillu~ru~ml'ru::;'lJ€l-.lnll1.jf-.ll'U~-.lG'1'€l-.lbbUU q
nll1.jf1~G'1'bG'l€l.fl'\"J~
(lInb1'U 1'Uul-.lmru~VlulGll-.l1~ml1l€l{m'<il~'lJ'Ul\i1b~n N-
'lJ€l-.l I".Jl~bll€l{ T
1Wl~bll€l{~l~\i1
VlI.-i11Imld-J '<ill
cache
ld-Jl1.jf-.ll'U~l
'\"J~'<iI:;G'1'ld-Jllbl : 1111l'fl€l\i1bdm
1Vi~'U'fl-.llJi
bWll::;&l1bbtJl~-.lVld-J\i1b1nbnU1mn ~
q
cache
'<iI::; l.jf~'U~lVibn\i1'l.ll::;lmfilinn~G'1'\i1 .
bWll::;1l'<il::;Gl€lUG'1''U€l-.l
'lJ
cache
~-.l~l~-.lb~~€l-.lbm::;-ii€ld-J'fl'Vln'JfU\i1 ~ q
cache
byilu'U
'Unllbnu-ii€ld-J'fl€l ~
~l-.llaJ~tJld~'VlTIrnw
bd€l-.l'<illn Wl~bll€l{
cache
m'<il~tJl::;~'VlTIrnW~l
-iiEld-J'fl&l1bbtJ~'<iI::;~€l-.l";'ld-Jl1.jf-.ll'Ub'Yll,x'U
VlI.-i111~1ld-J'<ill
cache
~
md-Jllmnu-ii€ld-J'fl'lJ€l-.l&l1bbtJ~-.lbbUUr1€l-.l~'U ~
~
bm::;bbuufl1'Unm-.l
'Il
&l1bbtJlfl1'Unm-.lm'<il~B~btJ'U'<ill'U1'Ud-Jln VlI.-i111mld-J'<ill
bbGl~bln";'ld-Jl1.jf-.ll'U€l~l-.lVlun,x'U~€l~btJ'U'<ill'U1'UU€lll filVlUlGll-.l
cache
md-JllblI1l11'<i1G'1'BUml1.jf-.ll'U&l1bbtJlbVl~lu~JI1'U'lJruv...y\1.jf-.ll'U'<iI~-.l
Large Register File All local scalars Individual variables Compiler-assigned global variables Save/restore based on procedure nesting depth Register addressing
Cache Recently used local scalars Blocks of memory Recently used global variables Save/restore based on cache replacement algorithm Memory addressing
13.2 /
ms ltiS~aUn()S1uJauU1V11nrli 535
1~m<il€l1Sj~u~Y1bq;fi'l'~lVl1'l.JbfhJcjl1 bb'l..h1:'i1un 'l n-o;):::m~ldn<il€l'lJ~U€l'lmdl-if'llu l~mh'l m !l'l..h:::~'VlTIm'l"j mh'lldn<ill~ dJumdmn~ln~ludbbm~cjl1 bbU~mi'l'l-o;):::m~ldn'Vldl'lJ~1l 1 cjl1bbud1:'i1unm'lcjl1l11V11€lmi~111~nn l , 1 '" l-if'llu€l~l'l~ln bb~:::~~md-O;):::bn'lJl11uVliilGil'l1~m<il€l1 ~lVlW1~m<il€lilyjA mdb~~€lulhEJ-ii€l~~d:::Vl1l'l1~m<il€l1bm:::VI~1EJml~.:ll nnrhVlul11 '" '" 1111J.:llUdu~~'l~l 'l"jd;bEJ€l1b1EJn-if€lU E YI'l.J1lU bd€l'lO;)ln.:llUdU~~'l~-if€lU YI'l.J1lU'Sj.:llUdU d ~l~bb~u€lUbb~:::!l~l€l~mEJ 1WIJ€l'lJ 'll<il~.:llnl11i1'lVld'l rrrs l-ifVl~1EJml~.:llVl~n~'lirn-o;)::: b '" l~dll11~uu€lEJitn VI~1EJml~.:ll cache 1:'i1u lV1q!o;)::: l-if1TImdnlVlul11ml~~~YruTIdJu n~~~€lEJ (set associative) ~'l~U~'lSj8umlEJbtJU€l~l'l~ln~-iim.J~Vl1m1l~'l5u mo;)o;)::: uuVinYl'lJ-ii€l~~'lI€l'lcjl1bbu~nn8l'lEl'li1'lU€lEJ'l
'"
'"
Instruction
(a) Windows-based
register file
Instruction
(b) Cache
ill , 3.3
536 unfl
13
/ flCllJW::Hl1IElS(;lS:::Qa Ii)ln~1.;)nr;il1~lbb~1
RIse
l~~m(i1e:rft~G'i'"lI'Ul~ 1'V1~ bbG'1::;md l-if'VIt.h~ iJ'l~.jJEI~li)ldru, 15n ti'U~E1l.J~~lru,'ll'U~
'VI'UY1l'lb~E1m::;'Vrhmld
ml~"')l
cache
~'UiJ'l1~m~ldbl<ii~~'U
1 VI-if~bli)'UG'1'l1l.J1.;)EI~l'l hn(i1l~
.jJEI'VItt'l~Ii)::;;-if~ 1.;)11
rm l-if~~m(i1E1{1~G'i'~'UblJ'U'VI'UY1l'lb~E1n~~n1l
bil~~'U l'Umd5l'l~'lGllbb'VIt-b'l~E1~"lIEI'l1~md~'l~E1'lbbU1J
'"
number)
~E1~Ii)~'l~'l~"lI'U
'"
cache
bbG'1::;ml~-liu-iiEl'U l'Umd5l'l~'lGll
iJ'l~'UEI~nU1~mdnl'VI'U~Gllbb'VIt-b'l~E1~5n.;)1~
'"
'"
l'U'VIt-b1~fm~"')l~lm~mdnl'VI'U~ml~~~Yr'UTI
'iJ
.jJEI~G'1~o/lEl'lmde)l'U
'lJ
5n'fi1'U'VItt'lli)::; l-ifl'Umdbl.J~~ubYi~u
tag
word
cache
rrrunn
1i)::;~ml~b~1
l'Umd'f'lI'lI'Ub'yhnu~~m(i1E1~
'"
~'l~'U l'U~~~E1'l"ll€l'll.Jd::;~YlTIJll~ ,
l'Umd'f'll'll'Ubb~1 ~l'l~ln
~~m(i1E1{1~G'i'~'U~ml~b'VI~l::;~~
1 'Umdib~,1-ifbnu.jJEI~G'1<ii1bbl.JdYiEl'l~'UblJ'UEi
'"
mdl.J~ul.Jd'll.Jd::;~YlTIJll~mli)bn~~'U
1.;)
t~~md
l-if'VIt-b1~fm~"')l
cache
~l'VI~Ubnufil~'lbf1~E1'lbbGibY1~'lEl~l'lb~m
~~~~1l
bf1~E1'lf1E1~~1b(i1E1~biJl'VI~l~blJ'UbbUURISe ~'lm~m(i1E1~~l'VI7u
l-if'l,'Uvh 1l.JEI~~~lnibn
'"
l-if'll'U~~~b(i1E1~lV1bn~l.Jdd~'lf.u~'l~~Ii)::;blJ'U'VIibl~"lIEI'l
'" ,
tl.Jdbbm~
(compiler)
1tldbbm~~
b; ~'U~'U.;)1Wlljjld::;~UGJ'lIi)::;
1~m~ldbl5l'l~'ln'l
~~m(i1E1{1<Kt~~(i1d'l
~'lli)::;l-if'll'Ur.Jl'U<ii1bbl.Jd
(variables)
(operator)
~l'VI~Umdfil'U1ru,Gil'l'l
bbYl'U~Ii)~bnU111 'U'VIt-b1~ml~"')l'VIii'n
bbG'1~Ii)::;o/lEl'l~mm~G'1~md
bbG'1nbl.J~~'U.jJEI~G'1d~'VI1l'l'VIt-b1~ml~",)lnu~~m(i1E1~Vlbn~~'UibEl~f1~'l~~~
'"
,
'"
li)::;blnnl'VI'U~~ruii'njjru 'iJ
IV
t~~~1
1l.Jbb~1
bb'U1~'f'll~'Ubn~~'U~'ld
'iJ
'fi1'U"lIEI'ltl.Jdbbm~~t.bJ.J,l-if1'UmdbnlJ.jJElJ.JG'1
(~E1<ii1blnm::;'f'll) 'iJ
~mli)li)::;m~ldmhiiEl~G'1J.Jlbnu111'U~~~b(i1E1{1.;)~'U
Ii)ln~'U tl.JdbbmJ.J<ii1bbl.JG'1Jlljjlli)::;~~'f'll
"
laJa:l'lle:J'lJb'll<Jlmd" l.if..:ll'U-ife:J'UYf'lJn'U'OJ:::ma-Jld"blnl'vlw?11V11.if~~m<Jle:J~
('OJ~..:I) c;llb~mn'U
1~
l'Umd"eil'U~lc;l1b1nm:::'Yllb.jJllum~m<Jle:J~dj'Umd"~lmll1'Ud":::Vlll..:l~a:lmd"~l'Ulrubn!?1~'U ~..:I~~l~ru~G1!?1'l1e:J..:Im:::'lJ1'Umd"'YlllV1bn!?1md"
Q.oO
"
'I
~e:J
1!?1'l1e:J..:I1ud"bbma-J b'YlflUfl~U~a-J"ba-Jll;ntI11Jd"bbma-Jc;llbbU~m'jjl~lVl~lbfl4e:J..:I
b'YlflUflmd"d":::'lJl~f!~Umly.j
(Graph coloring)
nlVl'U!?11V1ndly.j~iJVI'd..:lud":::ne:J'lJ~b~ 1V1'U!?1(node) md"nlVl'U!?1f!lV1n'lJbb~~::: 1V1'U!?1'OJ:::a:lb~e:J'U 1V1'U!?1~e:J~ 1'l11l
(input)
'OJ:::\jni bml:::~
(i=fqJii'n'jjclVl~e:J~~m<Jle:J~bG1~e:J'U)
VImi1
f11la-JGh~'OJ (~e:J-oJl'Ul'Uf!1aJbVl~..:I~e:Jmd"l.if..:ll'U) 1V1'U!?1~tr..:l1aJ1J1d":::'lJl~f!'OJ:::blnnlVl'U!?11V1bij'U.jJe:Ja-J~ 'IJ 'IJ ~bn'lJlll'UVI~l~mla-J-oJl e:Jl..:le:J..:Ibn!?1'l1'U d"U 13.4 bbG1!?1..:1c;lle:J~l..:l'lle:J..:Im::::'lJ1'Umd"~..:In~ll G1a-Ja-J&ill1ud"bbma-J~m~m<Jle:J~bG1~e:J'U 'IJ , -oJl'Ul'U 6 c;l1'OJ::::blnbbU~..:I1Vi1ul~~m<Jle:J~'OJ~..:I~a:lbVl~..:I3 c;l1 d"U 13.4a bbG1!?1..:1r;:il~'lJ~'U<Jle:J'Unm 'IJ 'IJ ~lVl~'lJmd" l~~m<Jle:J~bG1~e:J'Ubb~~::::&h G'l1'U b bbG1!?1..:1f11la-Ji=fa-J~'UTI'lIe:J..:I~~m<Jle:J~bVl~ld (l'U~d VI'U'Yll..:l~
i.I=.=.X
bb~:::~l~..:I load-and-store
bbG1!?1..:11lbtJ'U.jJe:Ja-J~~'OJ::::Gle:J..:Ibn'lJlll'UVI~1~mla-J-oJlbb~:::l-ii~l~..:I 'IJ
load-and-store l'Umd"eJl..:l8..:1
538 unn
A
..J
t
..
I
In
t
..
I
IE
II
(b) Register interference grapb
Rl
R2
R3
tl?1tJrfl1u
SHJe:J~-iJm~mnl?1~m:::'Vl'hmld"
l-m~'fIbCile:J{oJl'Ul'U~ln
m~:::nld"fhvl'U1?11-if'l1'U
b'li'U unl~
lVib'i~'Ul1 bbtJ1T'il:::-ifb'YlfI'Uflnldr11'VI'U1?11-if'l1'U~mCile:JnVibnI?1Ud":::ttJ'Il'I1'f1'1'f1l?1bb1J1J~$Jml~~1J~e:J'U l
",
rm l-m~mCile:J{~lnnll'd"il:::'W1Jl
",
1~mCile:J{~lnnl1
32 ~1
Ud":::nld"'fII?1YlltJ ~~nld"1~mb'flI?1'11Vib~'Ul1 ,
iie:JtJ~'fIl~1d"b11-if'l1'U-}1~n'U 1Jl~~Ud":::~'YlTIrnV11'Unld'Yll'l1'U~nl1~mCile:J~bbU'In~~md'Yl1'l1'U ,
l'U~l-iJe:Jd"il::: 1Jln~11~'1f1ru~mjru:::rfl1u ,
bb~:::bbd"'1m:::o/1'U~1'VI11J'fImuCiltJmd"~ ,
RISe
1304 /
amilaanssu
RIse 539
ml:J.Jcil€J'Imd"
lcilbbiJ'I1C1ltJitn1~
tJ~G'1'itlJG'1'UUG'1'mi:lCil tJndd":J.Jf1€J:J.JYldbCil€J~bblJlJ
q
RISe
m~
iiU~€Jf1l~'I bf1~€J'I~ilml:J.J.]5lJ<i1€Ju,xumn~'OJ::;"b:J.Jll
'OJ::;cil€J'IVll~l~'I1Wll'jj'ld"::;~lJG'1''I ~ilml:J.JG'1'€JCIlf1!i'€J'InlJf1l~'Ibf1~€J'I~ilml:J.J.]5lJ<i1€JudlV\1.~ ~
q
~
q
else
lUd"bbnd:J.J'OJ::; lair
bti€J'I'OJlnlui:I'OJ'OJuu~'\Al~lairdjuVludtJml:J.J-oJl,xu
ud"::;m~G'1'€J'I lud"bbnd:J.J~il'llulCllb~n~'I'OJ::;'lidtJb~:J.JUd"::;~'YlITJll'\Allv;&iri'l~u
1u~Y1tJU€JtJ'fl'l ~
use lud"::;lJlJ~lJ~Vlld"nld
;'1 b5tJnm
'Yll'llu:J.Jln)
[PATT82a] 11 C Programs
RISe! VAX-JI/780 M680(]O Z8002 PDp·l1!70
[KATE83) 12 C Programs
1.0 0.67 0 O.7l
[HEAT84} 5 C Programs
1.0 .9 .12
1.0
0.8 009
1.2
0.9
540 unfi
13 I flCllJubwws(ils:':Qa
RIse
i1b1:!Vll~Ul~'Uh~El
1'U'Y1l-:ltJ5u~t.1'U1tJ'mm~~1oiff1l~-:I'ild~1Jr;'1 elSe
'iI~i1'lJ'Ul<?1
b~nnll1tJdbbm~~1oiff1l~-:I'ild~nr;'1 RIse ~l~mJbVl~N 1<?11'UVlm~mru1tJdbbm~ 1'U'ild~nr;'1 ~ ~ else m'il'il~i1 "lIU1<?1~UnJl(~Eli1~l'Ud'Uf1l~-:I~El~nll) bb'ii~l'Ud'UiJ'il~1oif1'Umdu'UY1nf1l~-:I l'UVlud~ml~~lt.1'Um'il'il~i1 "lIU1<?1UeUJnJl bVl~-:lb~n~Elm'Yht.1'U'illdl-:l 13.6 bb~<?1-:11V1b'i~'Ull !'oJr;'1md~m~n1%~m~mru~.yhmdbm~lJb.yj~lJ"lIUl<?1"l1El-:l1tJdbbf)d~~b'll~u~b~ 1tJdbbm~m~l~ bb~d bbtJr;'11 1tJdbbm~m~l bf1~El-:l1'Ubf1~El-:lf1El~vh VldJ'U b'ilEl~'iil-:l'l n'U 1<?1 W"llVl'U<?11 Vlbf1~El-:l RISe-I i1'lJ'Ul<?1~W\il'Ub1J'U 1 VlUd~ 'iI~b{1'U<J11l1tJdbbm~'U'ild~nr;'1else 1 1 ~ ~ ~El~~ln VI~Ell~i1tJdd~'lfubr;'1~b~mm~lJb.yj~lJnlJ1tJdbbm~1'U'ild~nr;'1 ~ RIse 1<J111Jmd~uiJ'U'illnmd~n~l"llEl-:lun1%~"lIEl-:llJm lmJb5~bbr;'1~~'U'l i1bVl'il!'oJr;'1~m~ldb1~'UiJ'U!'oJr;'1md1%~dVlm~tJd~mdherrrarm i , c;]d bbtJarn~l'lJEl-:l bf1~El-:lelse else iJ~l'Ud'Uf1l~-:I~lnnll 'Y1l1VitJl<J11JJ~,mtJd~ 1~'lfu'lJEl-:lmdoiff1l~-:I-1f1J.]fEl~lnun tJd~m~~m 1 ml~md~lnnll<J1d~ tJd~md~<?1.yh~ ~mi1'il~md~ , bdEl-:l'ill n1tJdbbm~ bdEl-:l'illn~mi1'il~md~ t.1'Ui1tJd~mru 1 ~,mmd~n~ld
md€h-:l8-:1V1Ud~ml~~l ~-:I'Y1l1V1i1'lJ'Ul<?1'lJEl-:l~l'Ud'UiJ'il1'Umd€h-:l8-:1~'Ur;'1-:1 ~-:lt.1'Umd~f1l<?1V11-:11l1tJdbbm~~mi1'il~md~ else 'iI~i1'lJ'Ul<?1'lJEl-:l1tJdbbm~~'Unll 'illnf1';ll~ 1<J1 bm~lJ~mhd~lbb~dt.1'U~-:ll~bil<?1~'UEl-:l~tJd~nEllJtJd~md~~El-:l~m~c;]'U bn<?1md , LVI Vi'@J'Ulf1l~-:I~i1ml~-1flJ.]fEl'Ut.1'U~El mdr;'1<?1d~~~nm 1'UmdtJd~~dr;'1!'oJr;'11V1~'Ur;'1-:1 <?1bVl~El'Ull ~ f1l~-:l1Wll~ld~~1J~-:I ~b1nbb1Jr;'11V1b1J'Uf1l~-:lm~lbf1~El-:l~iJml~-1f1J.]fEl'UbVlmf1l~-:lb&1mt.1'U Ul'il~ ~~ 1oifnm 1'UmJtld~~dr;'1!'oJr;'1~'UnllmdbbtJr;'1f1l~-:lb~ 1Vlb1Jw~<?1f1l~-:I~1 mn'U oiff1l~-:I~'U'lVlm~f1l~-:I El~l-:lldn'ill~ bdEl-:l'illni1bb'Ud 1~~~'iI~b~Eln1oiff1l~-:I~i1ml~-1f1J.]fEl'U~El~~lnnllmdb~Eln 'loif " 'UEln'illnitVlud~mlJf1~md ,
'Y1l-:ll'U'lJEl-:l~Vl~'iI~c;]miJml~-1flJ.]fEl'U~ln~'U bbr;'1~/VI~El1m 1tJdbbm~~mlJf1~md'Yil-:ll'U'iI~i1 ~ ~ , ml~md~lnri-:l~'U b~El~UlJ~'U'Umd'Yil-:ll'U'lJmf1l~-:I~i1~l'Ud~ln ~-:I 'hJll'il~b1J'U ltJ1'Umru1<?1 , n'il~i1!'oJr;'1'Y1l1V1d~~~nm 1'UmdtJd~~dr;'1!'oJr;'1f1l~-:lb~El-:l (bblJlJJl~'l) t.1'U'Ul'U~'Unllb&1~
541
• •
mdY11~1'Ud':::Vl11~d''OJm<ilEld'
l.d.:.
ft
'lmTImd'nlVl'U<?lGllbbVl".(~~mjbb1J1J~l~
"
flru~:J..Ji:i~ojjmbd'n , 'J.:I"iieJ1J~1i.:lb~~eJ.:I
~El
n1"iiU"iit3J'JsUoJ5I 1 ~1i.:l~eJ\fIit.:l'J.:I"iieJ1.Jn1"iiU"iit3J'J5I~51
\fI;eJ
rXIJEJ'l.Jrh~Jbfl~EJJ
(machine cycle)
oii'l 'Umd'thwih'Jnm:::'I'l1@~Gi'1'OJln~~m<ilEl~
1~d'El1J~1~~b~El~
RISe
"
bb~:::i:i'UY1nt:-.J~~'l-'JTIn~1J~~ltJ~~m<ilEl~
(microinstruction)
else
(microcode)
bfl~El~~'Jn~~l~~'U:J..Jlb1J'Uen~<?lbbdn<?l~<ild'~)
biieJ~'OJln
1dJi1ml:J..J'«)lb1J'U'OJ:::c$lEl~b~~n 'loitt:J..J M<?l 'l'Ud':::Wil~~'I'llmWd'::::J..Jd~t:-.J~ 1m flru~:J..J1J<il'lJEl'YI~El~ flEl mWd'::::J..Jd~t:-.Jmh'U , ;1\i'6tb~eJ~@btJf1'U. ml:J..J'«)l ltJ<J11~ (b'li'U rmaen 1<?l~i1~1~~
cu=. 2.1
.d.
'l
d X , VIlli 1il::bn~n1"iibb5lmtl5ltJ'U.'lJeJ3J5I'lJ'U."iitm1.:1 ~
I Q AI
..
Load
bb~:::
Store
111oj(l'Umd'bb~mtJ~~'UojjEl:J..J~n1JVI".(1~
~~'U ~~'OJ:::'I'l1 Viff1'Um1Jm-Ji1ml:J..J~1 'l ,
"
b'li'U 'If<?l~l~~ ,
RISe
m'OJtJd':::nEl1J<J11~~1~~
ADD
bY1~~Vlii~VI~El~El~~l~~b'Yil,x'U b'li'Ubfl~El~
integer add
bb~:::
'l'U'lJru:::~bfl~El~
else
VAX
i1~1~~
ADD
RIse
'lI
~,x1J~'U'U 'lVibn<?l ,
I
b~1~~ 'lI
(d~m<ilEl~)
tJll'U
(register-to-register)
RIse
bfl~El~ 'l'U<ild':::n~
"
else
~<?l'lVii1~l~~
'l'Umi:J..Jdb'li'Un'UbbGintr~i1~l~~
(register/memory)
~1tJn'U
bb~:::md'
bb~mtJ~tJ'UojjEl~m:::V1'
(memory-to-memory)
l~i1ml:J..J'l-'JtJltJl:J..J
~'OJ:::'I'llmd'btJ~tJ1JbYitJ1JtJd'd~'YITIm'I-'J'lJEl~md''I'll~l'UdriEl'U~'OJ:::i1md'~l~mi1<iltJmd':J..J ~'U:J..Jl'loif~l'U W
RISe
"
13.5a bb~<?l~'lVib~'Umd'bmtJ1JbYitJ1J~bn<?l~'U
~mi1<iltJmd':J..J~:J..J:J..J~l~bln
"
~ tJ'UojjEl:J..J~n1JVI".(1Jml:J..J'«)l t
"
......
= I
~ ~
......
......
542
543
b~l€l._J'OJln~m1:l'11tJmd:hl
RIse
~b1n~-n._J~'U,:hIll'U,nG'l1~'U,il-11Wm
"
bbGl'V\G'lltJf1'U,
"
h l'U,b~€l._Jmdml:hl~1'U,m~ieJl._J8._J.jJ€l:hlG'l-11'U,1'U,'V\-d,._J
" " "
l-ii'lJd:::1tJ'lf.u~._J~~bb~1 'tI q
lw;u'OJ:::b1n
'U
rm l-iilTI
bil€l'lJ'~._J'V\:hI~'OJ::: l-iilTImdnl'V\'U,~G11bb'V\U._J~mjbb'lJ'lJ~ltJ$i€l
(register addressing)
"
mdnl'VI'U,~
(displacement)
1
bbG'l:::bb'lJ'lJ l-iiG11u'V\u._J~€l~bb'lJ'lJ~:hIYi''Y1TI
(relative addressing)
oift~
I
~1'U, lTIm~ilml:hlojf'lJi~€l'U,bb'lJ'lJ~'U,
"
"
f1ru~:hI{jGl.jJ€ldrlll
bbG'l:::m'U,m'lJ f1:h1md'Yll._Jl'U,._JltJ"lm ,
0 I "'~
"
Vi'md€l€ln
bb'lJ'lJ'lf~f11~._J
f1ru~:hI{jGl.jJ€l~~r11tJ$i€l
rrrs l-ii
1~tJYh l'lJbf1~€l._J
RISe
'OJ:::S'hj_JU'lJ'lJf11~._J€l~bV1tJ._J'V\d._Jbb'lJ'lJ'V\~€ll&J~bb'lJ'lJb'yh~'U, ml:hltJl1'l1€l._J
"
"
(opcode)
mdnl'V\'U,~
'OJ:::€l~'11d._JG11bb'V\U._Jb~:hI
lVi'b'll'11.jJm,m€l~1'U,G11bb'VIu._J
UG'l:::md81'U,.jJ€l:hlG'lGi'1b1nm:::rll'OJln~~m'11€l~m:hlldbi
"
"
"
"
"
u 1'lJ~1 tJ md81'U,f11~._J
",
b'Wdl:::f11~._Jil'll'U,1~b'r'hn'lJ
word
'W€l~
"
b'lJ~tJ'U,d:::w-.il._Jn'U,
"
"
word
"
~€lUlf1ru~:hI{jGl~..:J~'lJd:::rn~ld1:h1n'U, ,
tJmd:hl
RISe
~..:JbbU~€l€ln l~bU'U,~€l~'lJd:::b.rl'Yl$i€l
bb(;'l:::~1'U,~b~m.jJ€l~
"
544 unfl
13 /
flomlbwwslils:::lJa RIse
ri,J~u 1~ t1.Jdbbm~duJl ~d
&ldbb1.J61m~l~i'l~dl~~1J~€lU~.nn til~m~l,JlU1Jl,JG'fdU88nlilln
Vli'lt8mG'f~Iil::;
1.J~1J1.J~,Jm'} 1~1.J'}d~'l5ulilln~~m<il8{
11.J1,~~Iil::;y]lmd1.J,}::;~d61~61~l~,JG'fdu~i'lml~'liu~8u
l~u'}::;V\':ll,J~y]lm,}bb1.J61 t1.J,}bbm~
(compile time)
1.J'}::;m'}~G'f8,J ~,J~l~mild~lbbli'd iim::;btJu~l~,J~btJUbb1J1J~l~6'1
I
~l~,Jm~lb~~€l,J~rlnbb1.J61
mjbbli'd ~,J,iU~,Ji'lbv\<il~61~G'f~~d'} \J
9
"
~,JIil::;y]llV1m'}1.J,}::;~d61~m~hn':h 1.J'}::;m'}~m~
rnulu;Y1~~G'fU1JG'fUUb%~l::;~l~,J '"
bMmn1Jm'}
lud1.Jbb1J1J~l~ bb~::; ~ 1
"
t~'}Ml?lbb~bY1~,Jb~nU€lHVI~€l ~l~b61~
crsc
RIse
i'lml~~~nll
unl~~bMmn1J
"
"
RIse
~,Jdbct€l,Jlilln
"
lu~lum,}G'f~l,J~u~ll~,Jlu~d~b'Yl~ bMmn1Jm,}88nbb1J1Jbb61::;m,}~~<il~u
tut61~
VLSI
,iuy]llV1bnl?lm,}b1.J~~ubb1.J61,J~u~ilu
... lu
,
b~~€l,J~€l~ybb<il€l{tI?l~~d
l1.J1.J'}::;n€l1J~d~bb~,Jd,JIil'}V\fi'n
(circuit board)
lU'lJru::;~b'Yl~ tut61~ ~~bY1~,J&ldb~m 'lIUG'f8,JlJ'}::;m,}~€l
){ •I "".
~lUdUV\61lmbc.Ju~1.J'}::;n€l1J~dmb~mn<ilm<il'}3lU
SSI
bb61::;
MSI
LSI
I
bb61::; VLSI
,ium~l,}bl1J,},}1il
,t1.J,}b'l5m'l58{~,J&ld61,Jl1.Jl1m~
b~m,iu
==
~l'VI~1Jtlhb'l5m'l58{~1Jd,}1il8~lu~~bY1~,J&ld
,"
.d
lJ'}::;m1bb'}n
blJUlJ,}::;bI?lUbnmn1JlJ'}::;G'f'YlDm~
fl
•I
c;;
~.
,}::;~::;bdm'VIUd,J
(delay) RISe
~dU
Berkeley
RISe-I
l~~~u~1.J,}::;~lru
6% btJU~dU'lI€l,J'VIUd~m1J~~
CPU
RIse 1 RISe II
Transistors (thousands)
44
l>esign (person-months)
15 18
Layout (person-months)
12 12
41
M68000 Z8000
Intel iAPx-432
68 18 110
100 60 170
70 70
90
545
1.h::;md~f!eJ-l "IIln
bYl~1ul~~
VLSI ,xuVi'GlJUI~u~,n1~mn
uneJeJnbb'lJ'lJ"II::;~eJ-l'Y1lmdeJeJnbb1J'lJbb~-ll-l"lld
RIse
mdeJeJnbb'lJ'lJm~ldb1'Y111~JI~nll~ln
13.7 bbf!C?i-l1Vi'b~umdbm~'lJbf1~'lJmdeJeJnbb'lJ'lJ:S'\AJbb'lJ'lJGlI-l'l
VI~-l"llln~b~~eJ-l1uGld::;n~
'IJ
RIse
1~b~~b1n~~GleJeJn~l1-i!-llU
'IJ
1~ijmd~eJ~~'lJnU~ln~ull
else
~11-i!
(2)
mdeJeJnbb'lJ'lJ
else
'IJ
RIse
$\eJ mdeJeJnbb'lJ'lJ;~~
RIse
Powerf'C
n1&J1~-i!bYl~1u1~~'lJeJ-l
RIse
GleJ'l sn
n1~'vb~ru~njjru::;'lJeJ-l
RIse
mdbm~'lJbf1~'lJ~Ulf!U
1"111~bbf!C?i-l1Vi'b~U 1UGlldl-l~
1. 2. 3.
dl~lTImd€lI-l~-l
uuu] ~~f!
bGleJ~bb~::;iilV1U-l~eJ
ua::;lTImd€ll-l
bb'lJ'lJ~Ub1n
'IJ
uun11GlI-lViln
4.
1&JmTImd€lI-l~-l1C?i~€leJ~~~eJ-lmdmd€lI-l~-lVlUl~ml~IilIVld-l~~-l ~mJ'lJeJ-liilb1nm::;'Y111uVlUl~ml~1il1
'IJ 'IJ
b~eJ 1vtt~GllbbVlU-l
'-'
6. 7.
ijmd€lI-l~-lVlUl~ml~lillb~~-l ~l~-l
1 ~~-lcilVl~'lJbbGl~::;~li'i-l bbVlU-l
load
'lJeJ-li, word
8.
IillU1U~~-lf!-lf!C?i~ijmdb1~n 'IJ ,
'IJ
1-i!Vlul~m'lJ~~md'Y1l-llU'lJeJ-lVlUl~ml~lill , U~I~-lb~~eJ-l
(MMU)
ciIVl~'lJGll bbVlU-l'lJeJ-l.iJeJ~~~€lI-l~-lri-l1
9.
(integer register)
32 iil
10.
~IU1UlJGl'lJeJ-lmd€lI-l~-lVl~1 ijmJI-libeJ~
(floating-point register)
16 iil
lJGl 'Y1l1Vi'm~ldb1€ll-l~-l1~mGleJ{1~&JUeJ~nll
.c
Z
.c
QI
::I
::I
..:
'1:j
QI
;;
'51!
QI
<"1
,"
<'l
Ql Ql
e£
.c
Q
,S ole
QI
QI ...
..:
fC
QI
CIlQl
QI
'T
(f')
'T
'T
;l
~ ~
.c
=
"C
Ql
::I
'"
QI
'T
'T
'T
OC
'T
<"l
~ ~
QI
.. .. ~ '"= ~ e
.c
QI
;l "C e'II
~ :i '" Q
= .S '"
QI
"C
QI
on
= oS =
e'II
c-,
"
'"
<.n lJ
'" >.
aJ
'" c-,
Q
'"
"
on
.. =
0 "C
QI
0 "C
<"l
".,
<C
.:
QI
E 'i .c
e'II
.c
0
<.I
;:
c-,
'"
'" OJ
....
r;:;
c-,
e£
<.I QI
-'V;;i
"7
~
;;i
C"
.c
;;i
0(0'
r-
... 1 =
"C
QI
'" ~
-0
~O
<=i
lJ
'1: "C
"C 0
QI
.c N
r:"1
c-
loll'> COl
01
~ ~ ~
iF!
~ ~ c;:
~(IO
.c
..
QI
.S
-'"..
QI
00
s:l
(",1
.S
.g
N N
V")
'"'
"5
'-'
'l\
UU
:: "
E
<= c
c
:~
= 0 .~
'" .5
'" ." :s :s
:::
.9
<=
<.I
'T
0'1
<C
sr:
..2 .£
§
0 u
,:r.
(;;::~
ao M
~ 01" ~
eo:
..,.
...
.. =QI
..
~ 0
::8
00
<C
r'l
:9 .E z
«. ~ -o Euv
r/l
8 co
0 r-
,..,
>D
.",
'5
X
::8
<r:
>
'" 52 C
~,
., ~
t)
ag
'" c
" -o
0
o:
546
13.5
/1t.JOlau1uamuvlBnssll
RIse
547
f1ru~d-Jti&i-iifl 4 ,
mld-J-oJlb~~fl'U
f1ru~d-Ji:i&i~e:J~-iie:J~<Jl.yhm~m-iie:J~nUmld-J~ld-Jldbi , ,
'lIfl~ltJdbbndd-Jcjj'lbbtJ'flm'jjl Lwmdw11tJdb6J!m6J!e:J1
8 cjj'lbbdnmjLwm~n'fl 'iJ 'iI
else
~~~lJ1n~lln~
RISe ~~~l~~(;'{l'U
L'VIru'OJ~btJ'Umdbb'flmtJ~~'U-iifld-J'fld::;'VI1l~1~~b<ilfl1 ~ 'IJ
,
l<JlllbbGi'fl::;l~dflumdr1l~l'U
• I: Instruction fetch
~~'VI1::;md8l'U~l~~
'IJ 'IJ
• I: Instruction fetch
""= ({ d"il~b<ile:Jd • D: Memory dtJ
'IJ
~~'VI1::;md8l'U~l~~
'IJ
'IJ
btJ'Umdbb'flmtJ~~'U-iie:Jd;J'fld::;'VI1l~1~~b<ile:J1nU'VIl-b~mld-J-oJl
548 unfi
13 I flOlJUblm.OSm.S:::Q8 RIse
'i1l~~l~'IJ'i1l~'lJn&i
m.h-J hn'i1l~
~i:1ru'vni;'1'8-J'lJd::;md~'Vll1vr'lJddh'1TIml"li;'1'-Ji;'1'<?liiu HlbJn-J
~ 'lJ q
nl~f1li{-J.y;eJl-J~-J'VIU1~
wait state)
~-Jiiumd
b~81vrf1l~-Jbbdn 1oii'li8-J~8mdil'IJ'VIU1~ml~~l'VI~n 1vrbi;'1'1~~Uri8U 'lJd::;m~i;'1'8-J f1l~-J~l'VI'ill b'lJ~~u~l~'IJmd'lJd::;~lG1~G1 'i1l~~l~'IJ U-Jfl'IJ1vrmd'Vll-JlUbtJUbb'IJ'lJb~~-J b~81vrm~ldf1'lJd::;~1G1~G11ul'lJtilG1u'1rJ18~l-J~md8-J ~-Jm~C;;8-J1G'lf1l~-J"NOOP" bb'Yldm'ihl'lJ1u~<?l~b'VI~l::;i;'1'~ 1<?l~ hhbbm~
q
('VI~l~n-Jf1l~-J~'IJ8nllhJ~md'lJd::;~1G1v,m) C;;-lbb'lJG1m'l1l
1u~n'l1rn::;it"1'lJtil~um~ldmiluf1l~-J
'lJ
~-Jm~'Vll1vr~'lJd::;~'Y1TIml"li;'1'-J~u lrJ1~lnn-Jm~b'Yil'lJ8-Jmd'l.Jd::;~1G1~G1'i1l~'lJn&i mh-J hn'i1l~ f1l~-Jb'lJ~~U~l ~'IJmd'l.Jd::;~lG1 ~G1niJ-J~ ~G1'Vll1 Il'lJul~u'1~m~ldf1'Vll-Jlu V U8mlndf1l~-J~C;;8-Jm~~~G1~l"ITI~lnf1l~-J5u l'lJtilG1uG1<?lG1-Jiu~81umru~f1l~-J'VId-JC;;8-Jmd , f1l~-Jri8U'VIUl ~::;~~m1l1vrbn<?lmdd8f18~~G1~l"ITI b~81V1l'lJtilG1u'Vll-Jlu~81'lJlrJ18 ~l-J~md8-J l'lJtil,G1u~::;m~ldf1'Vll-Jlu lrJ18 ~l-J b~~'lJd::;~'Y1TIml"l nl mdbbu-J~U'i18Umd'lJd::;~1G1 ~G1 btJum~~u'i18uiiu
~U'i18U d88n
(dependency)
iJ-J~~~ 1vr'lJd::;~'Y1TIml"l'lJ8-J
1oii~G1~l"ITI~1rJ1~lnmdf1lU1rn~bn<?l~u
1u
~-Jm~~::;C;;8-Jbb'Y1dnf1l~-J "NOOP"
1U~U'i18UE
~-Jiiu~-Jmdbbu-J
• E2: ALU operation and register write btJumd'Vll-JlU'lJ8-J ALU bbG1::;uu-v;n-n8dqjG1 G1-J1u~\\im'i18~ bd8-J~lnml~b~~'IJ~lmbG1::;~bb'lJ'lJbb~Ub~mnU'lJ8-J'l!<?lf1l~-J1um::;nG1 RIse md88nbb'lJ'IJ
q 'lJ
1'lJtilG1u1 vr~m~'VI~8~~u'i18uiium~ldf1'Vlll~~
mnun
iJ-JfI-Jf1mb~l1oii1umru~btJu
'lJ
f1l~-Jb'lJ~~u~l~'IJ~U'i18umd'l.Jd::;~1G1~G1 'VI~8mdd8f18~~G1~l"ITI~lnf1l~-Jri8U'VIUl
13.5 /
J_
<:t:
o:l
J_
J_
J_
<:t:
<:t:
"0
(';!
o:l
"0
U
"0 "0
~
0
u
0 0
Z
0.. 0..
J_
J_
~ .9
,_
<I)
-l
-l
:d:
..r:: o
o:l
<:t:
V5
i:: ~ ,_
o o
..r:: u ,_ co
i:: <::l
0..
"0 "0
<:t:
V)
0 0
0 0
Z
0..
E .:;;
.s
OJ)
o:l
co
0..
"0
o:l
<:t:
u
0 0
Z
"0 "0
J,
t
<I)
><
.c
c::;
-l
<:t:
V)
.... .9
u
O"d ,_
co
0 0
0..
550
unfi
13 / flO1JW1Wl.OSfilS:::QaRIse
bd€l~·.,llmrdld-Jb~~1JJl~"lI€l~·MI~l~~
It-t<ilj:::n~
"
RISe ~~~ld-JljflUlb'YlI'lii,1'l1t!1l1mt:J..Jll:tt~mjl~
G'il~1Jmdt!j:::d-J1~v.J~ It!1l1m.!~<iI~~
YlllVit!j:::~'YlfirnY-!"lI€l~
1~<ill'Vl&J (re-organization)
iherrrsusn
lVi~":illjrnl~l~~~l'Vlwmjbt!~~t-tbbt!~~G'il~1Jmjt!j:::d-J1~v.J~
(branch
instructions)
It!1l1m'!
b'YlI'lii,I'l~b~~nll
"Delayed branch" \]nuld-Jlloii1t-tmdbv:\d-Jt!j:::~'YlfirnY-!"lI€l~ branch ~ir~ 1&J~v.Jmn<il~t-t":ilt-tnll":il:::t!d:::d-J1~ v.J~~l~~ branch b~~nll "delay slot" mj'fll~lt-t branch"
bb~<iI~ Vib~t-t ~l~~
<?i€llt!b~;":ilri€lt-t
G1lbb'VIt4~"lI€l~~l~~~€l~~<iln1J~l~~
13.9
1t-tI'l€lGld-Jt! "normal
'VlGl~":illn~~l~~~
'"
105
'" b~€lYlllVilt!llht!~ld-JldflYll~lt-t
102 flnt!j:::d-J1~v.J~
Hl<i1ld-Jt!n~
"NOOP"
b-iillt!~~l~~<?i€l":illn
branch
jt! "
'"
13.7
bb~<iI~ lVib~t-tv.J~~bn<il~t-t
dt!
~~~l~€lfi1Jl~lt-t1J'Yl~
'"
13.7a
"
t=3 ~b1m
t=4 ~l~~
JUMP
flnt!j:::d-J1~v.J~ It-tb1mb~mn1J~rilt-t
103 b-iild-Jl
bd€l~":illm1Jt-t~l~~
"
~~m<il€l~~bn1JG1lbb'Vlt4~"lI€l~~l~~<?i€llt!~":il:::rilt-tb-iild-Jlt!j:::d-J1~v.J~)
1lI111~ 13.9
~h~{j ranch b
Address 100
101
Delayed Branch LOAD ADD JUMP NOOP ADD SUB STORE X.A I.A 106 A.B
C,B A,Z
Optimized Delayed Branch LOAD JUMP ADD ADD SUB STORE X.A l05 I,A A.S C,B A,Z
102
1.3.5 / Time 2 100 LOAf) X, A 101 ADD I,A 102 JUMP 105 103ADDA,B 105 STORE A, Z ~ 3
ltJiJlau1uCI'muvlBnSSlJ
RIse
551
(a) Traditional
pipeline
100 LOADX,A 101 ADD I,A 102 JUMP 106 ]03 NOOP 106 STORE A, Z
I
NOOP
100 LOAD X,A 101 JUMP 105 102 ADD I,A 105 STORE A, Z ~ (c) Reversed instructions
'nJ ..
13.7
m";'~''U.~8~liliilil4~ijdelayed
branch
luLtltJ1flu~"Ltl ~bdm t=5 iil~"~ 105 ~"btJUbihVId-Jl~'lIEl"q;11~"JUMP 'OJ~tmeilUb-nl~ LtluLflu dtl 13.7b bb~<.il"md'V11"lU'lIEl" LtluLflu"Ubfl~El" RISe 1<.il~vi'd d~~~bdm~l-if Ltl tf"fl"b'Yllb&id-J .ll" Ldn~ld-J biifl"'OJlnL~bb'Vldniil~" I\lOOP b-nlLtl ~"'V111Vi1tl{ILflu"tJ~El" m
'IJ 'IJ 'IJ
552
un
ft
delayed branch
~._j"il::;bmellUboiilJ.Jl ~
JUMP
t=3
rmellUb.j'hJ.Jl~nm ~ bti8._j"illn~1~._j
t=2 ri8U'VIU1~1~._j
rm~lUb;lJ.Jl~eJU~~l~._j ~
ADD
(~ 102) t=4
ADD
JUMP
"iI::;blJ~~UbblJ~._jfil'lJeJ._j ~l~._j
program counter
lJd::;J.Jl~~~
ADD
tJn
lunmbb~mn1J~~l~._j
"
"iI::;bi4U 1~1111JdbbmJ.J~._jmJ.Jd
uin, 1~il
d8U I'll
(call)
Lb~::;~1~._jii8Un~'lJJ.Jl'Y11._jlU~b&1J.J
(return)
lJd::;J.Jl~~G'18~1._jilb~8U
I'll
m:::1J1Um~"iI::;
m"il$J~mlJ~~ubblJG'1._j 1~ bci8._j"illn~1~._j~8~lU~1\9l1J ~
NOOP
branch
J.Jll~bb'Ylu
1TImJ~fI~1~fI~._jnUb1!:Jnl1 1(9)~lJn~~1~._j
"delayed load"
fl'1J.J1JblU1J.Jll~n'lJ~1~._j
LOAD
b8111'
LOAD
LOAD
1~1~mGleJ{rifl,xu
(idle)
LOAD
"iI::;bfl'1"i1~U
n111JdbbmJ.Jrif"mlJ~Jll'jj1
LOAD
,xun"il::;'Y111Vid::;'lJ'lJillJdd~'YlTIJll'lAlfl'._jri._j~u ~
;Yl!:J luGld::;nG'1
~ 'l.I
RISe
'iubbdn'l
9
~il-051'Vl'I,b~ luYl8._jGlm(9)
Inc.
luVi'doii8d"il::;1~n~11t1._jfl'miJGl!:JnddJ.J~ulfl'U 64
~._jdJum;niJGl~mdJ.J~l~ufl''lJul(9) dlJ.J~._jmdnlVlU(9)Gllbb'VIU._j~eJ~
~1~mGl8{
ALU
rm l~fl'miJGl~mdJ.J
64 UGl ilmlJ.JbVlU€lnl1fl'miJGl!:JmdJ.J
32 UGl8~1._jJ.Jln b'lAldl::;'lh~
553
bbe-Ju~ml~ff~Vi'uTI'lI8~ 1y.jA'lIul~ terabyte (~lU~lU 11J'1;) n1JVI'i-bJ~ml~..JlbG1t18u 1~ lui:l~~iiue1l{~&1G1n'llUl~ 1 gigabyte (Vi'U~lU 11J'1l) G1l~l"mVll~81~~J 1u 'f1l1Vi~u~ VI'i-bJ~ml~..Jl~~G!~'lIUl~ 4 gigabyte 'lI8~G1mi:l'11~m1~'lIUl~32 U'11,iUb~~~~::;~8~b~U 'lI81Jb'll'11m11~~lu~~8u~l~..Jln~ U8n~lnd G1mU'11~m1~ 64 iJ'11i:i~'liJ~lVi;Vl~c;hd m~l1b1U1::;~JG:w~-iim;jmb1J1J double-precision floating-point numbers bbG'~::; character string 'lIUl~~lnti~ 8 11J'11'1cK[~~m11.jff1l~~b~m
'lJ
1.jf1Jd1~c;h'liJ~u1::;~J~e-J~ (coprocessor) ~lVl~1J1J~Vll1~~m1V1'i-bJ ~fm~..Jl ciiJ;Vl ~,iu bln88nbb1J1J~l1~~il1'11b1U1::;G1~fl1VibtJUG1mi:l'11~m1~bb1J1J~l~~G1~ 1~~b1u1l~bd8~11~lVlw ~Ju~~::;m~l1b1'liJt.ll Vim1U1::;~J~~~'f1l1~b~J~~~U
'lJ' ,
C!
'lJ
cache
'11l1l~ 13.10 bbG1~~'l5~f1l~~~lm~lU~lVl~1J;Vl~ lu'111::;n~d '11l1l~ 13.11 bbG1~~'l5~f1l~~ bvi~b&1~~lVl~1J;Vl~ R4000 1~~b%'V,n::;1l~~~~VI~~~::;blf1b-iil1VimtJu1m~G11l~'lIUl~U'11 f 32 ~~VI~~ m1'f1l~lUn1J-ii8~~~~VI~~~f1b1Uf1l~~ load bb~::; tore btJum1'f1l~lu1::;Vl1l~-ii8~~ s ~bn1JmJ1u~~m'118{~J~nu~~~u
C! cd!
'lJ
'lJ
'I
'lJ
'lJ
'lJ
'lJ
'lJ
;Vl~ R4000 1~ilm11.j([fI~bbG1~~~8U1'l1 (conditional code) tllm~l~lU'lI8~ f1l~~1~n'11l~'f1l1Vibn~b~8u1'l1(condition) ~U~l d8u1'l1,iu~::;\lf1bbU~~btJu flag bb~::; ~~ bn1.M1u~~m'118{bb'YlU ~~btJum1V1~m~~~m1G11l~~8~n~U~l~lVl'~1J~~m11f1~d8U 1'l1 ~tJ~mn bb~::;il~~'1i8u1::;~'YlTI[)l'\AI'lI8~1utih~bb~::;m1~~G'il~1Jf1l~~ lV1~'lI8~ 1u1bbm~ , ciiJbbu~m~l 1~~m~~ll.jfn~ 1n~G1-n~~~l~lVlwm1bbni:lbIJVllm18lufil~ln~~m'118{bb'YlU ~~n1l'd d8U 1'l1~bln 1~b-iil1ulu~~m'118~ui:i~nm~btJub~8u 1'l1un&1~1u1bbm~ciiJbbu~m~l m~l1b1UWm~l~lu lViilu1::;~'YlTIm'V'lG1~G1~ 1~
'lJ 'lJ ,
;Vl~ lu'111::;n~dn1~bb'11n'1il~~ln;Vl~u'111::;n~ RISe ~U'"I ~8 l.jff1l~~~ilml~mJ l 'lIUl~ 32 U'11bVlt18unuVI~~ b-d8~~lnf1l~~'Ylnf1l~~ilml~~-m'(hnu ~~'f1l1Vim::;1JJum1 , 8l'Ubb~::;bbu~ml~VI~l~ 1f1~1ViG1~'U'f1l~l'U 1~~l~~u bb~::;i:i~'liJ~ l'Um1'f1l1Vim11<K<i181J1::;VI'"ll~
'lJ
'lJ
'lJ
'lJ
554
unf
13 / VlDllW'JW1DSVlS:::lJa RIse m~iJd'Um'J€h'Uf1l~"]LLfI~'VI~d~ml~·.\hLG'1~m,lSlml~~l~~"]~'U l'U 'JLJ 13.8 'lJ ~ 'Uil1m"]G'1~l"]"lIEI"] (91'JVlG'1 1~ LLfI~lnm'J5l"] WLLiJiJf1lfhYi..] 3 LLiJiJ~LLG'1(91..]
'lJ
1 VI
m'JLLLJflml~'VI~l~~l~~'U m'JLLLJfl1LJ'JLLm~
V-Jflm~'\'llJ"lIEI,,]f1l~..]~ilml~~iJ'iiEl'U~'UG'1l~l'JflLL1l1"l11J;'l'U'lid..]nm
OP
LB LBU LH
Description
I,oad/Store Instructions Load Byte Load Byte Unsigned Load Halfword D Load Halfword Unsigned Load Word Load Word Left Load Word Right Store Byte Store Halfword Store Word Store Word Left Store Word Right Arithmetic Instructions (AI,U Immediate) Add Immediate Add Immediate Unsigned Set on Less Than Immediate Set on Less Than Immediate Unsigned AND Immediate OR Immediate Exclusive-Ole Immediate Load Upper Immediate
OP
MULT MULTU IV
Description
tnu
LW
LWL
LWR SB SH SW SWL SWR ADDI ADDIU SLTI SLTIU ANDI ORI XORI LUI
ADD ADDU SUB SUBU SLT SLTU AND OR XOR NOR SLL SRL SRA SLLV SRLV SRAV
Multiply/Divide Instructions Multiply Multiply Unsigned Divide Divide Unsigned DIVU Move from HI MFHI Move to HI MTHT Move from LO MFLO Movc to LO MTLO Jump and Branch Instructlons Jump JAL Jump and Link JR Jump to Register J ALR Jump and Link Register BEQ Branch on Equal BNE Branch on Not Equal BLEZ Branch on Less Than or Equal to Zero BGTZ Branch on Greater than Zero Branch on Less than Zero BLTZ BGEZ Branch Oil Greater Than or Equal to Zero Branch Oil Less than Zero and Link BLTZAL BGEZAL Branch on Greater Than or Equal to Zero and Link Arithmetic Instructions (3·operllnd, R-type) Coprocessor instructions Add LWCz Load Word to Coprocessor Add Unsigned SWCz Store Word to Coprocessor Subtract MTCz Move to Coprocessor Subtract Unsigned MFCz Move from Coprocessor Set on Less Than L'TCz Move Control to Coprocessor Set on Less Than Unsigned CFCz Move Control from Coprocessor AND COPz Coprocessor Operation OR BCir Branch on Coprocessor z True Exclusive-OR BCLF Branch on Coprocessor r. false NOR Special instrudions Shift In.~tructions SYSCALL System Call Shift Left Logical BREAK Break Shift Right Logical Shift Right Arithmetic Shift Left Logical Variable Shift Right Logical Variable Shift Right Arithmetic Variable
13.6 /
i3illy
MIPS R4000
555
OP
LL SC SYNC BEQL BNEL BLEZL BGTZL BLTZL BGEZL BLTZAL L BGEZAL
L
Description
Load/Store Instructions Load Linked Store Conditional Sync .Jump and Branch Instructions Branch on Equal Likely Branch on Not Equal Likely Branch on Less Than or Equal to Zero Likely Branch on Greater Than Zero Likely Branch on Less Than Zero Likely Branch on Greater Than or Equal to Zero Likely Branch on Less Than Zero and Link Likely Branch on Greater Than or Equal to Zero and Link Likely Branch OIl Coprocessor z True Likely Branch on Coprocessor z False Likely
OP
TGE TGEU TLT TLTU TEQ TNE TGEI TGEIU TLTI TLTIU TEQI TNEI
Description
Exception Instructions Trap if Greater Than or Equal Trap if Greater Than or Equal Unsigned Trap if Less Than Trap if Less Than Unsigned Trap if Equal Trap if Not Equal Trap if Greater Than or Equal Immediate Trap if Greater Than or Equal Unsigned Immediate Trap if Less Than Immediate Trap if Less Than Unsigned Immediate Trap if Equal Immediate Trap if Not Equal Immediate Coprocessor im.1mctions Load Double Coprocessor Store Double Coprocessor
BCzTL CD7FL
LDCz SDez
e:n1~llT~1;m~'h~~'\A,d,nV\lmTIm1nl'V\'\A,~~lll'V\~~~mjmJ1J~l~~~~ ll~~bm l'ihJem~~~ l l~~~bl1J1Jb~m m1Ell~8~'V\~'mmld,ro.1l~~'V\d-J~lh~nfl1J~'m f1l offset 'lJ'\A,l~16 U<?1 dl1Jll ~ 1'\A,~~~l<?1fl1'lJ'\A,l~ U<?1 32 b'li'\A,
\.I 'iI q 'iI q
lw r2, 128(r3)
load word
at address
128 offset
from register
3 into register
'V\d-Jl~i1~md8l'\A,-iJm;J~'lJ'\A,l~word (load word) mo;nnGllll'V\~~~nl'V\'\A,~'\A,~~~b<?1fl1 1 1 rs irmfiu 128 l~m,bd-Jlbn1Jln'\A,~~~l<?1fl{ r2 .;nn~~m<?1fl1~~ 32 G1d~'\A,md-Jldm,bG1d 1~ nl~d-Jll.jfdJ'\A,base register
:S~~ ~
~~5'1~miJ<?1~mdd-Jlm~~~l~f1l~~bl'l~fl~lb1J1J~l~ (.j)~bl~~~ludtJ is.s) ~ 'lid~lVfmd'fllltJulm1dJ'\A, ltJl~mh~5'1tJd~~'VlTIm~ l'\A,vh-iJfldo;)~ l~mhdi1~mdl'h ltJulm1 n1Jbfl~€l~MIPS ~~dJ'\A,~wn'\A,~~l~f1IGlflmd'fllltJulm1n1J:S~~ l'\A,m~n~ RISe bfl~8~5u'l GlflltJ
MIPS
otII at;! 'iI 'iI
556 unfl
13 I flOllubWlOSVlS:::lJa
RIse
'lIeHI~Yl~
Apparent Instruction
Iw r2, <In-bit offset>
RISe
th::;d-JdG'1~G'1V1m~f1l~"jo/i8V1d"jd"jd8'lJmTIh::;d-JdG'1~G'1 1'UbU816'1nl~l1
(superscalar)
bbG'1::;1'ubue:J{1.utilm.t
(superpipeline)
6'1mu<1I ~m"id-J
I-type (immediate)
26
f-type (jump) 6 R-type (register]
Operation
rs
rt Immediate Target rd
Shift
Function
Operation code Source register specifier Source/destination register specifier Immediate. branch, or address displacement Jump target address Destination register specifier Shift amount ALU/shift function specifier
15Wy
MIPS R4000
557
1'U1LJti1mt
rid'U'lfLJbLJEl41,LJti1mt~'U~-J~-J
x .:,
boih1LJ1 'U1LJti1ml1Vi
1LJti1mlbb'lJ'lJ'lfLJbLJEl~'f!m~l~'O,)~'l'1l-Jlwih~-J
9
(dependencies)
~
d~wil-Jq;il~-Jbb~~<iim;j~~El~1'U~'UGlEl'UGil-J'l
9
1'U
bb~~fill?ilbu'Umd
1'Umdbbnuru'V1l'dn'O,)~b~:J.J~'U
rid'U 1'U'nLJbLJEl41,LJti1mln'O,)~5'lfil
1'Umdri-JV-l~md1.J~:J.Jd~
bb'f!C?i-Jmd'f!~l-J1TIril'V1'UC?i~lbb'V1u-J~El~bb'lJ'lJ
MIPS
dLJ 13.9a bb'f!C?i-Jmd'l'1l1LJti1mtq;il~-J ~ 1'U~V1tJ R3000 q;il~-J 1'U1LJti1ml'O,)~'lJ~'lJ 1LJ~-J~'U<1lEl'U ~ 1'U<1ld~fJ~
~El1LJ1'U'Vln'l
d-JdEl'lJ'UlV1m
MIPS
'O,)~m:J.Jldb1 l~LJd~:J.Jlrn
(delay slot)
mj-JElElmu'U
~l'Ufil~d~nm~'l'1l'O,)ln'~l\1mGlEl~~~ LJd~:J.Jd~V-J~
ALU
5'lmd'l'1l-Jl'Ubb'lJ'lJ'lJ'Ul'UbnC?i~'U
60 'Ull'Ul'UlYi
(1
'Ull'Ul'UlYib'viln'lJ mdill-J~-J
q;il~-Jbb~~<iiEl:J.J~mtJ'UEln ~ bb~~
cache)
dd:J.J~-Jmd'l'1l-Jl'U
1'U~'U<1lEl'U OP,DA,
IA
n'Ubdm'Ul'U
60
'Ull'Ul'UlYi
mdb1ElC?inVi'f!q;il~-J
(instruction
decode)
5'lm~m'Umd'l'1l-Jl'U~JltJnll~-J
1-iibdmbV1tJ-J 30 'Ull'Ul'UlYi
bdmrid'U~b'V1~El~-J~El'UYI'lJn'lJmd
mdq;il'Udrn~lbb'V1u-JG1l'V11'lJmd
branch
n'O,)~
branch
'lJEl-Jq;il~-J~
m:J.Jldb1ril'V1'UC?i~lbb'V1u-Jmdill-J~-J
~~ 'O,)ln~1\1 mGl El11 ~ ~ 'l'1l1 Viq;il~-J 1'U cache 'lJEl-Jq;il~-J~ i+: 1~ 1'U
~
.e.'"
...
C/o
.9
<:
.:= .':l
-e-
= '.g
0
1Jj
.::
:::l b "0 d
0)
~ :::; ~
II II
'-'
'-' 0) .... ~ d '" '0 0 u OJ) '-' U '-' .:: c;l -g "0 VI d '" u c;l '-' 0) '" .:.: .:: <: c:: .S -0 ~ ?a u 0 '-' .:= ~ ,S' 0 o ~ c;l 0. .... .D .~ 0 u U '';:;; E ~ -0 ~ u '::::l d "0 u 0 d '-' :::l :::l 0. "a :::l ,.t;;
rL;
ir:
en
0)
srs '-' u
U .~
'J:.
'6h
~ -;;;
v:
sc
C/o
C/o C/o
l::
u:
~ '0
'0 '0
c;l
"0
...
c;l
<: C;
.§
.:.t.
s
d
.~
-b
-'J:,
0) ~ .:: u, Q
'"
~
II
-~
.5 U
a -a 3 ca UQQ
d
II
IX)
0)
e::
Q UJ IX)
IX
:::; :::; ~
,.t;;
,.t;;
'-'
::i
es~
....l f- U Q fo:
Q
o:
rJ:i I!) ()
o
<'0
"0 ;>-.
'-'
.c
v:
I!)
~
()
Q Q Q
"0
Qj
~ ~
~;j:
Oil·
'-' u >~
'u s::
]
C1)
I!)
s::
d
"0
U ;.>-.
o::l ....l
~~
E-<
C1) ()
~ u >. u
s::
C1)
"0
::l
I!)
.....
-5
'~
"0 c-,
0)
] ~ .... <'0
'~
t;!
(lD
;;!
0..
-5 ~
s::
I!)
a>
"0 ;>-.
'-'
'0..
0..
.5 ~
0 0 0
C1)
..2:l
.....
...
M
tl"01
0.. os.
'>,
os.
0
0..
8
M
8
C""';
"0
0)
"0
>, U
"0
'-'
"0
~ d
:€ ~ u u
"0 0
;>,
C1)
"0
C1)
0 ~ ~
t;
~§
"0 ;>,
'-'
s:
0. 0 ~ ~
558
13.6 /
md-Jldb1'ell'UojJeJd-Jmoihd-Jl~lVl1umd l-ii-Jl'Ul~tJ~l~-J
'lJ
R3000 %-J-ridtJ(;1~d:;tJ:;nmd-JdeJumYl'm
30
(clock
'UeJn<lnnd' mld-JVl'UlbbU'U'lJeJ-JmdUTI'iI'Yldl'U~m~m{ ,
'lJ
13.9b
l'U dud'Sh:;tJ:;nm
'UdU
'lJ 'lJ
13.9a
bdeJ-J~ln1l
'lJ
cache 'lJeJ-JojJe:J:l;Jmb(;1:;~l~-JI-Cache bb(;1:::D-Cache) ~'U~-J l-iinmbV1tJ-JI'1~-Jb&1m ( l-iinmddd-JVld-Jd-JdeJu'U 1:;Sm~m{ (RF) 'lJeJ-Jd-JdeJumYl'm lYl'm 1'U'Yll'UeJ-Jb&1 n'U m bdeJ-J~lnmdbYld-Jmld-J
b~d 1'Umd€ll-J~-J
~~-J~'U 'YlllV1nld'ell'Ubb(;1:;u'UVinojJeJ:I;J(;11'U1~mG1eJ{1-iid:;tJ:;nmbV1tJ-J1'14-JVld-J
1l11'31~13.13
Pipeline Stage
IF IF RD RD
Phase
~I
Function
Using the TLB, translate an instruction virtual address to a physical address (after a branching decision). Send the physical address to the instruction address. Return instruction from instruction cache. Compare tags and validity of fetched instruction. Decode instruction. Read register file. H branch, calculate branch target address.
~2
~l
~2
ALU
ALl)
~1
+ <j.2
If register-to-register
performed.
<j.l
If a branch, decide whether the branch is to be taken or not. If a memory reference (load or store), calculate data virtual address.
If a memory reference. translate data virtual address to physical using TLB. If a memory reference, send physical address to data cache. If a memory reference, return data from data cache, and check tags,
;jJ2
560 unfl
13 / fl8lJublJil8SJilS::::Qa bd~,j"llmIjU1~m1d-J"il1
RIse cache
1'U~V1~ R4000 'lJ ~'U~,m~l'U&b:n~ OJ mdbb'!Ji;1'l~lbb'VIU'l 1Vim1'U1'U~~n ltJl~
cache
~'l"il:;'lh~ LVi
,
bd~'l"il1nmdiJ1J5(91b'VI~mdru~1'l'l
1Vi~'Uboii1 mdG1d1"ilG'l~1J
cache
"il:;b1mb~n~~n 'lJ
ltJ'Yl11'U~'UG1~'U 1'U1'ld~1J'UlYlmt1(911tJ
m~'VI~'l"il1nYi'Yl1md
1'Ud:;1J1J~tJbtJ~{\,tJillm! ~~'VId'l1'ld~1J'U1Ylm
(superpipelined
system)
(degree of superpipelining)
2 dtJ OJ
b'Vlfll'Ulf1~l'U
13.10a bbG'l(91'lmdtJ~1JtJd'lltJil1f1'U''U ,
OJ
~'l~lm'lG'l~l'lfl~l~n1J~bbG'l(91'll'UdtJ
13.9c
~'U~~md~~mb1J1J 'Yl11ViG'l1d-J1db1'Yl1md md'Yl11 Vimde:l1'Ubbfl:;
R4000 l~~mdtJ~1JtJd'ltJd:;~'VlTIm~ ,
1V1~ri'l~'U ltJ~n
(adder)
u
AL U
uri
cache
~1'VI~1Jfi1~'l
(instruction cache)
~~~d-Jn1J~G11d1'lbm~1JbYiU1J
~1 bb'VIU'loii~d;JfI (translation
cache
~1'VI~1Jfi1~'lGi'l~fli'i'~TI
1'Ub1m b~ mn1J~G11d1'l
~lbb'VIU'lfi1~'lYibbYf"il~'l~~nd-J1
• Register file:
OJ
bil(91b'VI~mdru
"
o fi1~'l"il:;b1nb1~\91d:;Vimbfl:;m1"ilG'l~1J~~'U
fi1~'lrl~'U'VI~ld)
o 'Yl1mdG'l~1'l
'lJ
tag
~1'VI~1JmdG1d1"ilG'l~1J'VIU1~m1d-J"il1
cache
o e:l1'U&11b1nm:;'Yl1d-Jl"il1n~~mG1~{\,vJ~
'"-'
"3 B IJ':,.'
.J::
...
"-' "-"
"3
'0
'SO
"3
.~
~~
BB
"0
'Ji
.§
0
::l
.§
o
::l
<=
'" u e c '" c
<=
1) Q
<.)
..r: o
<.)
"3
~
Q
...
!) 00 <.)
~ ~
..c
c,
,g
0
''J;.
.s
II
u,
U d
'-Il
11
U u,
Ci Ci t-<
1/)
c= c= ..,
c=
1I~
Oil'"
~ ~ ~
u
«0
-;;:I
~(OJ
-;;:I -&
::::
u C'5.
~ ~~ ~
c= c= c= to)
~~
8 c
r.
0:::
"0
.~
~
1I~ 1I~
~g
g.
u
'+0
Oil"
of
5
::::
~ «0 ~
"'-;;:I
-;;:I
,S ..... ~
u
~II"~
-;;:I ;;::I ~II" -;;:I II"
0.
= E
E
r:
"0
Q
<.)
(]
~ u
,.., u
0
=
CC::I
,=
<.)
u
C-
"i)
0
... M ...
0
'5.. .... Q)
r.I:l
.~
(] ;.-.
o:l
~ u
'5.
0 "1'
II";J
0:::
_-.,
'-'
.0
'-'
561
562 unrl
13 I fl()lJubllilosmS:::lJa
RIse
register-to-register
VI~eJ
VlU':W
ALU
o;)~'Yllmd1.h~a-Jll:l~fI
load
store
branch
O;)~'Yllmdf1lUlrnG1l
branch
cache
~lVl~1J.neJ~1:l
(data cache)
'V1-¥eJa-Jn1J~Glldl-.:JbmtJ1JbVitJ1JG1lbbVlU-.:J.neJ~1:l
(translation
lookaside buffer)
VlUltJfldla-JoJl
cache
'lVi'NI:lij''V1ITbUUG1lbbVlU-.:J.neJa-J1:l '!J
'YllmdGldlo;)G'{eJ1J
cache tag
bbl:l~'Yllmd
load
VI~eJ
store
~1:lij''V1IT~lJ)~mlnmdtJd~ml:l~I:lO;)~bin1:iuVinl:l-.:J '!J
'lu~~mGleJflyj~
Architecture)
Vla-JltJi'i-.:J G'{mi:lGltJmda-J~nlVlw?11<?ltJ
Sun Microsystems.
~Yl~'lUGld::;1JI:lU~J)~1JmdWC?JJm<?ieJa-JlO;)ln
Berkeley RISC-I
machine
bb<?iiJ'-.:JfI-.:J , 'l-if'J5<?lf1l~-.:Jbm::;md~<?lll-.:J~~mGleJ.fln~b~tJ-.:Jn1J'lJeJ-.:Jb~a-J
SPAR C
'l-ifb'YIflil,flVlib<?il-.:J~~mGl 24
eJ~
~~mGleJ~oJlU1U
G11 1<?ltJ5'JoJl'UdUVlul<?il-.:J~~mGleJ~bbGln<?il-.:Jnu~-.:Jbb<?i
dtJ
'!J
13.11
8 Vlul<?il-.:J~m~mGleJ~~-.:JVla-J<?l
<?l-.:J~lJ)mhl11luvh.neJ
'lUnld
global register
bbl:l::; l'V1d~WEl{~b~tJn
'l-ii1'V1d~W~U
(parent procedure)
tJm~tJnll l'V1d~btJEl~U
"ins" bbl:l::;~~mGlEl{
bm::; l'V1d~btJEl~~bin '!J
13.7 I SPARe
563
dJ'U
1'V11;bf'Jf:l15'U ~-l~l~mhd
"
13.4
Physical registers
Logical registers
Procedure A Procedure B Procedure C
• •
•
• •
• • •
• • •
564 unrl
13 / flvlJubwwSVlS:::n8
RIse
1m~mG1eJ1-1ieJuYi1Jnu
1'V1d~bt.JeJ1~b1t.m (calling
"ins"
b1t.m1~
(called procedure)
11ldb<zrm<zreJ1OJ~~mi'loiim;;lm'l.-'I'~hd:111u~d;b1t.mll
~-.JOJ::;;~<illbb'VIt-b-.J
WIM
565
local
1~m~1)1
1<Jl1unldrllVl'U(911~m~1)11
VI1oii..:Jl'U1 'U
d::;WJl..:Jnld'Yll..:Jl'U'lJ1)..:J 1'V'Jd;btJ1)+Yi11JJ
ov
if~illd~
q
.
q
~ldl..:J
SPARC
register-to-register
-5l..:J~..:Jfi..:JGl1bJnm::;'Yll
3 Gl1 ~1)~1'U
Rd
bb~::;
RSI
btJ'Unld-5l..:J~..:Jfi..:J~~~b~1)~
1(91tJ~
S2
m'llbtJ'Unld-5l..:J~..:Jfi..:J~~~b~1)~
8nGllVlii..:JVl11)-5l..:J~..:Jfi..:J~l ~rllVl'U(91~ll'5'l
'lJ'Ul(91 13 iJ~nl<Jl
Ro btJ'U~~~b~1)1V1b!f1'jjnm)
d'iJ bbUUd'
~~oii1):J.J~r;:l1'U lVlrubtJ'UbmoJl'U1'U ~ ~
q
bb~::;~lf1..:J~
ALU
~l:J.Jldbl'~(91btJ'Umi:J.Jl<Jl~..:Jd'
• Integer addition (with or without carry) • Integer subtraction (with or without carry) • Bitwise Boolean AND, OR, XOR and their negations • Shift left logical, right logical, or right arithmetic
~l~..:J'YImil~..:J
q
tJml'U~l~..:Jb~mnumd
shift
m:J.JldblrllVl'U(91d1)'U
l'lJnld'Yll..:Jl'U.$i..:J
4 bbuul<Jl
(ZERO, NEGATIVE,
'lJ
OVERFLOW, CARRY)
Gl1b~'lJ"'ill'U1'Ub~:J.JbbUU
load
bb~::;
store
bb~::;
I I
~q;ilif..:JbbtJn
Gll..:JVllnG1lVlWnld bb~::;
load
L
store
byte
G1lVl1U~lif...J.yhnmnu
halfword,
bb~::;
byte
~l:J.Jldbl'Yll..:Jl'Unuoiim;J~Yi~
oii1)d;J~~~bf141)...JVl:J.JltJ'II::;btJ'UbbUU
sign extended
32 iJ~
$11)
32 iJ~ ~'U<JlltJiJ~bf141)..:JVl:J.JltJ'II'Umu.$i..:J
bbGlnlbtJ'U
566
unf
13 / InElUUi'JWl.ElSVlS::;lJa RIse
OP
OP
Load signed byte Load signed halfword Load unsigned byte Load unsigned halfword Load word Load doubleword Store byte Store halfword Store word Store doubleword
Add Add. set icc Add with carry Add with carry. set icc Subtract Subtract. set icc Subtract with carry Subtract with carry, set icc MUltiply step, set icc
J ump/Branch Instructions
BCC FBCC CBCC CALL JMPL TCC SAVE RESTORE RETT Branch on condition Branch on floating-point condition Branch on coprocessor condition Call procedure Jump and link Trap on condition Advance register window Move windows backward Return from trap
Shift Instructions
SLL SRL SRA Shift left logical Shift right logical Shift right arithmetic
Boolean Instructions
AND ANDCC ANDN ANDNCC OR ORCC ORN ORNCC XOR XORCC XNOR XNORCC AND AND, set icc NAND NAND, set icc OR OR, set icc NOR NOR, set icc XOR XOR, set icc Exclusive NOR Exclusive NOR, set icc R S
Miscellaneous Instructions
ETHI UNIMP D WR IFLUSH Set high 22 hits Unimplemented instruction (trap) Read a special register Write a special register Instruction cache flush
13.7
SPARe
567
Mode
Immediate Direct Register Register indirect Displacement
Algorithm
operand = A
EA=A EA=R EA EA
SP ARC Equivalent
S2 R,,+S2 RS1' RS2 RSI + 0 Rs, + 52
Instruction Type
Register to register Load. store Register to register Load, store Load. store
= (R)
= (R)
+A
1TImdTllV1'U(9J~l ,i'U~eJ
bbV1U-.:J~eJ~'UeJ
n bV1iteJ~lnnl'~
displacement
~ln~lbbwu-.:J~
~lbbV1u-.:J~mj~1-.:J'lIeJ-.:J~lbbV1u-.:J~1f1nm::;'Yh ~ ~ mh1~eJ
displacement
e)l-.:J~-.:Jn-.:J l'U1~m<ileJ1,x'U
EA :::: (Rs1) +
S2
(S2 (S2
dJ'U dJ'U
EA ::::(Rs1) + (Rs2)
1 urmmrm ~l~-.:Jbfl~eJ-.:J ml:I-JoJl
load load
V11eJ
store
l'Ud"::;w:h-.:J~'U<ileJ'U~r!eJ-.:J V11eJ
ALU
~::;'Y1lmd"~l'U1ru~lbbV1U-.:Je)l-.:JEl-.:J
rm
store
~-.:J~::;bil(9J~'U l'U~'U<ileJ'U~r!l:I-J
bbG'1::;r!l:I-Jld"m.b:I-Jlloiil'Umd"rl1l-.:J1TImd"e)l-.:J~-.:Jbbuu~'U
~Ylll ~
SPARC
ns:li\'mjrutY\f1~lllfl~-.:Jn1J~Ylli 13.13
~ MIPS R4000
,i'U~'i)
rf1'U lV1b!!M(9Jd"tVirld'~ttJm.blth1:I-Jnuu<ill~(9Jd"tVirl~'U'l
CALL instruction
~m.jbbUU ~
tJn~(9J~lbbV1U-.:J ~l~-.:J
lVi<ild"-.:Jnu~lbbV1u-.:J
word
l'UV1u111ml:I-JoJl 4
Branch
Ud"tneJU<?l111b'll<iloiJeJ:l-JG'1'l1'Ul(9J 4 U<iI~lV11Umd"UeJnrlm'Ut~-.:J ~
uuu
(ZERO, NEGATIVE,
"0"
OVERFLOW,
bbG'1t
CARRY)
~n 2
~ PC-relative address
568 unfi
13
flClUUi::HVlClSVlS:::Q8
Rise
Call format
21 Branch format
22
SETHI format
Floatingpoint format
General formats
.."
~filbUU "0"
'311 13.12
'3'l.lbt'l.J'l.J~hli.:l'1lel.:l
<li~lI
"
SPARe
branch
~El
"annul
U~l"
b~Elu~l'd
branch
"il::;b1m.l,lb'ihJJd::;:J..J'd'~v.J~LulJJul,G'n1bi:'1':J..JEl ~
branch
(n~ldl;luvb~8
~U"il::;buu8~l-Jld 13.5)
delay branch
U~~filbUU
annul
~El~~l:J..JV1~-J"il::;b1nUl:J..JlJJd::;:J..Jd~v.J~ ulJJulm1n~m~8 1 ~ ~
rm branch
~u
dll?l~U"il~-Jb'Yh~u
~Yl tJ"il::;t1lnldbbnl'lJ ~
annul
G'1~U 1 U~
v.J~'lJEl-J~l~-J~U
bbir1l ~l~-J"il::;b1n~luboiill,JJl11 ~
t1llv(lJJdbmd:J..J~dbbJJG'1m'jjlt1l-Jlu
delay slot
branch
~l~-J~bUUbi1lV1:J..Jlt.J'lJEl-Jnld
branch
G'1'l:J..Jldb1
13.8 / I,.bd--Jll~lnu
'iI
UOWlUH\lS:::1'I:h\l branch
'iI
RIse
uae
else
569
delay slot
1~b'i;1d--J~ bd~-J'oJlnrhnld
ldJbilC?1~u
f1l~-Jblhv'ld--JltJ~u
'iI
"i)~~lmdnnnr1l~C?1eJeJn f1li1'-J
l1.Jl~
branch
f1l~-J
"i):;bnC?1nld
branch
SETHI
buufil~':l'~bq;J'jj~l~lumd
load store
Vl18
store
'iI
<ii~d--JSi'llUlC?132
'IJ 'iI
1J\9l
cv
f1bU~d--J1J&ldnm1,ld--Jllolilumd v
'1
load
Vl1eJ
G1lbbVlu-J~eJ~Vl~8<iieJd--JSi'llUlC?11VlnJ lu~~m\9leJ~~"mf1l
fil~-J
v
SETHI
"i):;r1lVlUC?1f1l22 1J\9lbbdn 22
(high-order bits)
immediate
~ltJ1J\9l "0"
'lIeJ-J~b\lnm:;'rll'llUlC?1 Yl-JVld--JC?1
(low-order bits)
btJunmVlmtJtJd--Jlbb~d
~bbUd lud--Jlumd~<uJUl~mLl\9ltJmdd--J
~u$\eJ
S:j-oJlUdUf1l~-Jb~d--Jd--Jln~U ~mi:l\9ltJmdd--J
bbf1:;riW]
RISe l~bb~C?1-J
uuu else
~m'ilUmd'rll-JlU'lIeJ-J~mi:l\9ltJmdd--J
""
l1.J"i)lm~d--J ~mu'VJl-Jn'lJbbUd
lud--J~bnC?1~un'lJ~mi1\9ltJmdd--J
""
RIse
l~bb~C?1-JlVid4ubtJu~8-Jmid--J
$\8 bbSi:;mld--Jb~d
• Quantitative:
l~S:jf)dld--J'l"Jmmd--J~"i):;b1.J~tJ'lJbYitJ'lJ'lIUlC?1'l1eJ-J l1.Jdbbmd--J
Lumd1.Jd:;d--JdSiNm:;Vl1l-Jbf1~eJ-J
RISe
LuJflu~l-J~
bbSi~
else
~S:jmld--Jmd--Jldn
LUd:;~'lJb~mnU l1.Jdbbmd--J
• Qualitative:
m'jjld:;~'lJ~-J
'IJ
md\9ldd"i)~8'lJ bm:;md
b'lfU md~U'lJ~tfumd'rll-JlU'lIeJ-J
loli1.Jd::;1H'l)ub'VJf11ulSi~
VLSI LV\1~d--Jln~~C?1
,
-JlU~dU
LVlqj~b~mo1i8-Jn'lJmd1.Jd:;d:Jufil'VJl-J1.J~d--JlbU
(quantitative assessment)
eJ~l-J hn\9lld--J5:ii1b!!Vll~bnC?1~U
~m::;Yiln'lJbf1~eJ-J
RISe
S:jbbUdlud--J~"i)::;~U'lJ~UUbbUd'VJl-J-d: ,
b~mn'lJmdb1.J~tJ'lJbYitJ'lJ •
$\eJ
RIse
bbf1~
else
~S:jmld--Jmmdn
LU
ldJ5:il1.Jdbbmd--Jd--Jl\9ld~lU~'OJ::;Uld--Jlb1.J~tJ'lJbYitJ'lJnul~8~l-JbtJUDddd--J bWtJ'lJbYltJm~~ueJ~n'lJ~n'jjbU::;'lIeJ-J
'lJ
""
uu$\eJ
NSimd
l1.Jdbbmd--J~uld--JlLoli
570
unif
f)f)f1'illf1~1.'1m~'YI1J~bil(9l'illf1'Yfmr~
lum'Jb~~u
.d
6]
bWm~n1.'1
byje:Jf1l'J'YI(9l'i1e:J'lb'Yh~u'kJl'liG1'1l'l~umbyje:J
"
RISe d-.lmf1(9l'llUf1'lJbme:J'lrle:Jd-.l'Vfdb~m'YIG1''Jl'l'llUd-ll
IV
P>.
cv
"""
6'd
2/
J'
loii'llU'il1'l
GilUf1l'Jbm~'lJbYi~'lJ'YIl'lrlru,.nl'V'l
(qualitative assessment)
~U ~Ue:Jthl'lJ'l~bl1J'J~G1''l~
"
Yicile:J'lf1l'J
~'i1m'J~f1'jjlGilu
lvmj~'lbb~f1~l'lnue:Jf)f111J~ld-l1~bllh~G1''l~'lIf)'l~1%~
~e:J~bbrn'J~Vlll'l l
'"
mh'll'J
~,jfm,jd5'lbbm'YIl'l~'il~'Jld-1nudjuVld,jb~m lu~'V'lb~d-IG1',j~u
else
n5'lmld-.lcilf),jm'J~'il~b~d-I1J'J~~'YITIm'V'llVi~'l~U
"
'J~1J'lJ
RIse
n'il~5'lmld-.l1'lJsife:Jumf1~,j~u
"
RIse
l1Jloii
"