Front ViewTop View+5 Volt-5 Volt-2 Volt+12 VoltFanFanqqqqqqqr.625 inr4.5 in.qrq13 in.3.5 in.qr15.5 inqrrqPower Supplies15 in.<>PanelWiringSideSideWiringPanel-5-2+5+12VVVVxxxx250757025AAAAFigure 1a: Dorado chassisStorage Storage Storage Storage Storage Storage Memory addressingInstruction fetch unitProcessor, high byteProcessor, low byteControl sectionMicroinstruction memoryBaseboardStorage Storage Disk/Ethernet controllerDisplay controllerI/OI/OI/OI/OI/O10.5 inPipe, map and storage controlCache data, error correctionInstructionProcessorCacheStorageSlow input/outputFast input/outputEthernetDiskDisplayKeyboardFetch Unit8K-32KbytesFigure 1b: Dorado block diagram<==<<265 MBits/sec16 bits/60 ns265 MBits/sec16 bits/60 ns120 ns access530 MBits/sec256 bits/480 ns1.7 us accessAir plenumBoard Area288 16-pin DIPs (logic)and144 8-pin SIPs (terminators)per board512K-16M bytesr$A 7$A'sp$)'$*:&$)&z@$)&z$@)V$*:U$)U@$)U$@JtV$KU$JtU@$JtU$@Jt'$K&$Jt&z@$Jt&z$@'sWIXWH$2VC$8T$2T@$2T$=VC$CT$=T$=T$4;V?WV2|PZ4;PZ5PZ>;PZ?PZAPZLVC$L'$LRL#&p`CLK$L|HKpPL|GvL+L*L?W$ L.$ Kp<K*)&!zG)&G/)V!GK&G/'a$(b$(]$9(%|[(%^@c $kpQR$d>^$2|^;@'$3$ #9r88pY)X$KY.$9)Z&r$)|VvIVvK.9$LQ$r*p<*; *K$+K$-K$.K$/:K$0WK$1sK$2K$3K$4K$5K$7K$8K$9;K$:WK$;tK$K$?K$AK$BK$C;K$DXK$EtK$FK$GK$HK$IK$IX.$H;.$G.$F.$D.$C.$B.$A.$@t.$?W.$>;.$=.$<.$:.$9.$8.$7.$6t.$5W.$4;.$3.$2.$0.$/.$..$-.$,s.$+W.$*:.$3S$4S$6tS$>S$@tS$BS$*>^'s$ FI>FI:FI G?!$GAm!$GB!$GI!$GG!$GF!$GD{!$GJ!$GL!$GM!$GO-!$GV!$GUJ!$GS!$GR;!G&!Gd>;$k2 IX Js]$&W$s $s$s$s $&W+$rsz$4;]V$<$4;y$4;$A$Ar$OQ$A yO$r  5$Et @($] @P> k r]V y y y y$9$ $9 ]$ $] $] $ $9$r$ r$$ $9 r @$ r $]rHGHGHG 9 2 9HGVk$$V $9 $ $]<9G$ &WA$&W k5p6tA!ky (tpA  (A ( (H] ( ] (H ( 6trO 5F& 3pB9;A&1s?{7= C;ylkO-bt -2t -1t 0t 1t 2t 3t 4>MIRFetch fromInstruction memoryoperandfetchABoperandmodification>>>resultstorefirst cyclesecond cyclethird cycleT4T3T2T1T0T0T1T2T3T4T4T3T2T1T0T0T1T2T3T4T4T3T2T1T0T0T1T2T3T4T-2T-1T-1T-2T-2T-1T-1T-2T-2T-1T-1T-2<>>><<>>>>ResultInstruction PipelineTiming OverlapFigure 2: Instruction pipeline and timing overlap<==<<rJ J VJ )J 2J >;J HJ 9FG9=G9=G +F9GV=G=G=G +B9G|>=GrCBB@ C_ AFG%:=G=G=G +C_ :A&F9G)=G&=G&=G +&B9G'sC's?{+F G9=G+=+G+=G +0WC_.A %:DXG%:?G%|@%;=G<=G<=G +:>9B9G@tFVGH=G@t=G@t=G +BrC_BAs;$ ;$ I;$ 3G$VG$rp; 3;$&W; ?W=$ <; <%9$v5A555 54A44#4's40W3+3's3#33's2l+2l0W2l42l82lA&1P<1P81P41P0W1P803<03A&03EP03I{034$6 $4$3$$e3$$e4$(3$(2$-I2$-I3$12$11$G5 r5]6 $ 6 $4$4 43A3V3$%:2$ 2$#2l2l's1P+1P)1$.1$20z$4030W03*=$ |8uV8u28uH8us8u38uVB9G)DXG)?G>;B9G?W>*@*^ LB"s7/<% $:<%$C<%$p, 1(*^k6 ]$4$r6 ]$6 ]$4]$3$B0z9$:{1]$:{0]$6P1]$60z$GB0z$>19$>0]$6t2$PG*^E#%It 4t 3t 2t 1t 0requestsarbitratefetchNextNextSwitch>>>>>>>>WakeUpTaskfetch Next task specific statefetch Next microinstructionbroadcast Next taskCurrentTaskCurrent<>>;8Gr's8G's8G's/G's/G>;0Gr's4;G%:G%1sG&W7Y&W-@t=GG0G V@t/G@t/G @t6tG>;:9G>;29G-$V&W-$V?W75?W.Qr;98B643B 1 (;(9^+15>$A4^B2A; :0$&W|*G*%:**2p- r- H-$VBr9^:.A:$;t.A V$Vp(#sr6  ; :{ 9C;tAmC;@P'sp'.A $'D]tluseRstoreresult>>>>bypass pathnormal pathmemoryPrevious Result Addressoperand fetchFigure 4: Bypassing examplemultiplexor switched ifCurrent Operand Address =<==<<>;G$5G5W +G5WG +r6 7l8:4;P<r5WG +r5WG5Gr>;9G9^; 9 $$9 $.9$.@r$:$B$3>G3A$2|? 2<:>6<rC_ &W8B s70p9^4;rB p1/<0; (/r/5AFFIFUAdQ[14]TPCITPCOBLinkFFReadyWakeuprrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr>>>>>rrrrCBrIMOutCPRegTLink*TPC*+1rrProcessorControlTPIMOutBestNextPCBestNextTaskNEXTIMAddressThisTaskNextPCLinkNextControlFFASelectLoadControlBSelectALUOPRAddressLink>>>*{PE}{Switch}{StartCycle}{StartCycle}{StartCycle}{InstructionDecode}{TPCByPass}{Switch}{UseCPReg}{ReadIM}{RAddr}{ReadLink}{Link_B}r{ }NextCtrlBlockmultiplexormultiplexor select signaltask specificFigure 5: Control sectionThisTaskLastTaskThisPCThisPC+1MemoryInstructionIMThisPCMIRt-2t0t2t-4Priority EncoderTLinkByPassLink_B{}<==<<>rr>rBBBBTLinkAddrTPCAddr6t\_1s\_,\_.Y$93eY$97Y$9:Y$9/:QC0R$.H0P&r$5WE$ 3?$90T$7?$3&$98@t&$9?W&$9>;&$9=&$9\_Y$9UrN{ $URG :M_U$6t$9:W$=$0$>#H$5W<$97^.$^.$W<$rQf$0W$9 VYuG$s$1PsLB$Y$][$0$+W0z$>$@ +$<$9rY$] 9@t$ 9$&:|J J"0 9K:;;?N!OOSVVvVv VvZ.Vv2Vv6tVv:WVv?WVvAVv:WZ6tZ0WT=0WO0WKZ0WFY0WBv4Bv7;2;4940 4'42"-"+0W0W;7;99 2 <;<;:>;>; <"=">"?"5 tJH"sI-lI-X%G":trU&$ B $A$ @ $ @$d3B +$1s$d1P O$V$V$V$9]$@$9$9$0W$$5$0Wy$0Wy$8$r$<$.]$3$.$$.$03B$91$01$01$.I{r$3G$.G$.G$.Rr$3Q$.P$.P$rUJ$rW$:S$9S$9r>$90W /EtG2>G0E$9&$ d+W G3(%9$,s%G=$U:W$.N4r$7:9G:WG H G2$."$. $$.L$rU&$$ :KJGr."$k."$$/:#$G4;"$@/:#%$$.N4$k.N{r$3M_k$/:N{$k/:N$3M$@3eMk$0N$]0#%$V>G3!k$3"k$<%G*:Y$])Vv)p\_)YuGU&@$=!z0.!3/:L4;,4|*2$$2&pk &UJ$UJ$W$:W5W+$.eAm Am 7AI$-A&$r; d1P$2; AY$r+U/:7a 2a%aa daHaa?Y$A`Gr| Xr9$r9$$V;p @ vR V>^ V% r$ Pm YQ(EP ->< @B%> &%3_$2|\p+M_$.L$3L$3eM$-B $-A& $1s)A$1s)A$9;)e$1s*$3!$8\_,a5W%$ @k$$ ]  @  @5W.$13211)@t8?:{ =5 GH;6,G=< GBr7%A^ 9$Ap^5W9V$0K $;tH$-?3B$F1$?1$?1$C;3e$>4$>(H$ Ar1C;0$IX0$5$f`$$=6,G5W/^$0V$ 9@ 9$9r$"$9$9$2rA&$t@rr2%$t1rr$trrU$tUmrB$ 9rpO c.$c.$c.$ :c.$(c.$.c.$3c.$:c.$ d/:$M;$G?`C y$L/^$.A^ $ 9[9$#lv, $H"*^8$8y$8$90$-$1s G'sp $"s|X+"$3B$2?:^ $y_&W$=(%y$<6<B0 -&$Us&$U0H$.!$3!$,sH$p)-)+ ]5 $ @5W3B$]3e$$!z $L>H$0I$C;0$$d$jr $H\_LTSTACKQrrRBaseqIFU>>>>>+Shifter.......................RM..>..r..COUNTALUMemBase>>>>>>>TIOAIOAddressAdder..ALUFMrLSH 1RSH 1.......StackPtrRBaseABExternalBIODatadevicesRESULT,....>>>>>>>memorymemorydevicesto I/OsmallconstantconstantRESULTBdata from>IFUAqFigure 6: Data sectionRAddrRaddr>register or memorylatchmultiplexor latchmultiplexornarrower data pathFFfrom t1 to t2from t2 to t3.>RT*task specific****LoadcontrolcontrolLoadALUOPaddress toRRTTMDQMDQRTMemData (MD)FFFFFF(copy of A)MemAdMDMemBALUFMALUALUALU.IFUconstconst(copies of B)IODataCOUNTIOAdBaseRegsto/fromcontrol,memory,IFU,to/from,XB{FF, mask}{bypass}{bypass}}{}{{control}{control}rother 16 bit pathpointerStackData readyshortly after t1Latches followLatches followData readyshortly before t3RAMs readat t1, load at t4load at t3RegistersBalso to RESULTshift 1 bit left or rightShiftCtl)(also toto RESULT<==<
k$=f$9=B$=B$] > $$ V=B$] V=B$ =f$9 V?{$?{$!3&$ ",$$#H$'s0z$-)$'s)@$'s)$!z,,$ ].e$(r,--I$/-I$1kd.kU.k.k23ek2d3ek2d6P$kA3B$k&GU%GUA)kGd%kG$A$5$0Wd$4$0W$0$N34d$ 59$ 49$0W$0W@$H2$$2 $$0$$2$'s$$% r$%: $ 's$H's$%^$9$%$( $! $%$ d"$ ($ !z&$G)$,0W$3$ >; $$%*$ d!z+$ ].$!z,P$ ](l$ ].$G>; k$3 $95 k$/-%$--$$A' y$$3B $$2 $/2$/6$ ]$A6t $$A6 d$/6$ 's0W@G's)@G's)G-l)G24k2%k2%kH6%kH"x-Y"+"*"(X"!"X" ](H$)k$0Wd$0$!z2$!32I9$ 3$3 $%5WG$%5G$$d$$d$!z&$&W $%)G$z,z*Vuz< + - X %&%#1 *1 -r#%$ 6<z6< y; N$V; $9$$A#% $" r4^%$$]$$9!z$!zk$"xXO$$@$,$$A $' $$e!3 $@$9@$@$]B$J $G$]G$G$9U$S|$]S|$/$ k*$A+W$$' $d$:Wz>G$DX$UD4$D4$y|AG$H$F$GB$Fd$E$*0$d x?r@ I$ H$kG9$G$*:|-YkM9$kN49$ yL$ yL$rxD EL%$K$vL3Br,>;N$%5$6$UAvT- 9|R( 9P 9OP yP9$M 9L  9MQ$O$O$]Q$]vPJP/:G%:rQC 2[G7UG2UGG2UG)eZ$k.eW_k)W_k.W_$)[C$)eW_$k/W$.Y$.Y$2lXS|$]O$]0WxQ0WN/V@$=%$9*$9,,$9/$29G67%G926NG26G2v744$4;|17%- $9+$=%:r$=#$=#$$A#k$=#$9,,$d9*$d9*:$9*^$29-y$7%-$>t,s>*Ax<A"<A#A%A'<A(A*9/$9/^$9/:$> :$%>;]$:1P$:{1 $:{0$:1,$I%^$3H#l$;t2$A;t2$;2$;2$L&W$<4^$M$K$9K$]<4$VT(%$=(@$;'O46,O$7X $7X| $9>$6P$& $9($ 9( k$($-IU&$\C$9T $9\C;$$V3 $&W $&$ +$O2$9 4$ 3e$U V3B$y V%$y &$U V)A$ V)A$ 's$%^$9 V%$C;- $C;-l r$L+$dM;$LB$zM_$%:r3%:(%%:!z %:#Fp"Fr.AD4xTDP}DHoDJD='$=7$B|4B2YB0B%B#XTy$NX$@kH$ 9H( 9F6Fp[FWFOFQC;$G$/G $G @ VGfGU VKJGU VO-G VRG rA @ zOFp\ VK$$VO$VD$VA$|> vV I$ J- r<%$ V9GU+T$+|R yT]$py rv8 O+V,$6P|X$ $U ]$ ]$yp y9 @$ $9 $9 $ z$$ $]z $z $] +G9 y U k$s+$s y+$s $s $U$,s$,s y$,s $,s $,s $$3 $vOySX$Vt V #H$#$"x",9$&$9A$7I$ 7%r$#|3ur4^'0p3] r'; P&T dt$ # 1, d2I49$1,:$1,v:FpX !t4;!(!2!&!35!0!*:!%:%:.%:,sdr]| tE AO%:8 0WA$ %:r7%=7$?t/>7>;6t?{.^%>;3?44*rY*:X5C;- $L$dM$C;- $L-%$LB$M_$$$Vk$k&$ 2($ 2($-I$d$:W",$%k",$%$]k$]k*$d+W$H$kNX$@96P$>$U&$T $\C$9\_C;$/$ 03A$ 03',$$A's y$$A#k$$A#H $$e! $$e $!3l$U!z!V$' $>#$,s $,s $Fp FF%FAxFp#AxJ$3 $$2 $ U$ O+y$!Vt!A9 V0V#l+1 k1+$ k$ 2 4;|53p 'H$!3H$v*+%:t %:VVEt EtO 2  V6$ V3B$!3!9$0W'@$02$rT$0$ Ot-],$O!$ (U$$', $&3 &4$9$9^ 'sp3 y(dtH<1sO \ 110001000ALU = 0ALU < 0Global CallLong Jump/Call01234567ADDRESS BITS01111Return001111BRANCHCONDITIONADDRESS BITSRETURNFUNCTIONNUMBERNEXTIFU JumpLocal Jump/Call0123456Conditional BranchConditionalJump/CallR < 0R odd-or-FF6061626364656667--Carry'0001x111undefined234567891011121314151514131211109876543223456789101112131415151413121110987654322345678910111213141515141312111098765432Link[2:15]000000FF[0:7]R015141312111098765432Loaded into Link by Call, Return, or IFUJump# 000xOverflow'IOAtten' (non-emulator) ThisTaskNextPCCPC[2:9]NC[2:7]CPC[2:3]NC[2:7]CPC[2:3]CPC[2:3]NC[4:7]CPC[2:9]NC[1:2]NC[3:4]R is branchconditionIFUAddress[4:13]NC[3:4]NC[5:7]CPC[2:9]CPC[10:15]+1CPC = CurrentPCNC = NextControlADDRESS BITSADDRESS BITSFigure 7: Next address formationInstruction typeNextControl Bit 15 is lsbBranch conditionA long, local or conditional branch is a CALL if, before any modification by branchCount=0 (& Count_Count-1)conditions or dispatches, ThisTaskNextPC[12:15]=0; otherwise it is a jump.<==<<r_'Z&U&P&_'Z&U&VU& U& Vt; V:pZ& U&b|b|Vb| b| b|b|9b|rb| uUm rK&K&K&9K&rK&pK&rFFVFrF9FFuPmOQ Pm KVJ Fm GpF_'t;:987l6P53p?{P O Vt7l V6Pu= = t; : 9 8 7l 6P 53 4G4 V9rBBB B VpBrB9BrBpB %:`$DX^$9%:^A$%:^$]'s^$+^$.^$0W^$2^$4^$DX^$B^$?^$=^$;t^$9;^$&Wt]|(]|*]|-]|/:]|1s]|3]|5]|7]|9]|<]|>;]|@t]|B]|BX|@tX|>;X|<X|9X|7X|5X|3X|1sX|/:X|-X|*X|(X|&WX|9;Y$;tY$=Y$?Y$BY$DXY$4Y$2Y$0WY$.Y$+Y$'sY$%:Y$]%:YA$DXY$9%:[$%:V$DXT$9%:TA$%:T$]'sT$+T$.T$0WT$2T$4T$DXT$BT$?T$=T$9;T$7T$&WS|(S|*S|-S|/:S|1sS|3S|5S|7S|9S|<S|>;S|@tS|BS|BO @tO >;O <O 9O 7O 5O 3O 1sO /:O -O *O (O &WO 9;PJ$?PJ$DXPJ$4PJ$2PJ$0WPJ$.PJ$+PJ$'sPJ$%:P&$]%:P&A$DXPJ$9%:R_$%:M_$DXKJ$9%:K&A$%:K&$]'sKJ$)KJ$+KJ$.KJ$0WKJ$2KJ$4KJ$DXKJ$BKJ$?KJ$=KJ$;tKJ$9;KJ$7KJ$&WJ (J *J -J /:J 1sJ 3J 5J 7J 9J <J >;J @tJ BJ BE@tE>;E<E9E7E5E3E1sE/:E-E*E(E&WE7F$9;F$;tF$=F$BF$DXF$4F$2F$0WF$.F$+F$'sF$%:F$]%:FA$DXF$9%:H$*Y$9*T$9*F$92IvK )^$7^$97Y$97tZn:ZnZn@ZnBZn;tT$90vUm)PJ$7PJ$9;tP&9$BPJ$9;tPJ$9=PJ$9BP;4<4947454341s4/:4-4*4(4&W49;6,$;t6,$=6,$?6,$B6,$DX6,$46,$26,$0W6,$.6,$+6,$)6,$'s6,$%:6 $]%:6 A$DX6,$9%:8B$76,$976 $%:p9^,9uOQ Vt4 V530rd,sv_n;t_n%Zn.Zn%Um%G=fUm-P7IP=PEtuQ EtPm /:vG@-Gu=+v6:6 %:b7b u_n Zn p0z rd$A$ :UA $A$ :UA$ :Ua $Vd UaG$UAG$KA$ :Ett_ Vu=$t?{S V8$>^J(p.U.G7%x HELVETICA  HELVETICA  HELVETICA HELVETICA HELVETICATEMPLATE@ GATES I  ~K) 2j/53OProcFig1.sil etc."B":JSy"* LampsoniN12-Jan-81 23:34:23