ࡱ> l]^_`abcdefghijkٷ(x/ / 0DArialNarrowantt3  0"DComic Sans MSntt3  0B DWingdings MSntt3  00DTimes New Romantt3  0@DSymbolew Romantt3  0PDCourier Newmantt3  01`DArial Narrowantt3  0"@ .  @n?" dd@  @@`` 0(LC jR -r[3|&+-G(!4--PPw4vQ7r "f     8-/!.R?_)   4(3 mJ v-   )p 60>!.+/ N] 7"f5 04vD6mC@0d:(W   +xK7 $ %"!L1O 6C#"L <6@Ek7}(`:\3Q4'$#("**'!/!,,][j~D;dAEef8[mzD Krhh.W ' \ =,W=Y.)  `c8 t'%:S]a9:;{MM%#0F"GHIJKL?M.NORs[\$]Y|4ab deYXkc| onqGtuv8wxyz{|c}~gbyv{ -E!|S 0AA ff@8irTʚ;3 ;ʚ;g4dddd3  0fppp@ <4dddd@w 0tԿ3  <4BdBd@x 0t*0___PPT10 ZZ___PPT9(l?  %O  =XPipelined Processor Design ,COE 308 Computer Architecture Prof. Muhamed Mudawar Computer Engineering Department King Fahd University of Petroleum and MineralsB4Z 0Zd/Z ,O Presentation OutlinePipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction F#1Pipelining ExampleLaundry Example: Three Stages Wash dirty load of clothes Dry wet clothes Fold and put clothes into drawers Each stage takes 30 minutes to complete Four loads of clothes to wash, dry, and foldF M vU MU2Sequential LaundrydSequential laundry takes 6 hours for 4 loads Intuitively, we can use pipelining to speed up laundry Pe 2 3"Pipelined Laundry: Start Load ASAPPipelined laundry takes 3 hours for 4 loads Speedup factor is 2 for 4 loads Time to wash, dry, and fold one load is still the same (90 minutes)d 2D4"Serial Execution versus PipeliningnConsider a task that can be divided into k subtasks The k subtasks are executed on k different stages Each subtask requires one time unit The total execution time of the task is k time units Pipelining is to start a new task before finishing previous The k stages work in parallel on k different tasks Tasks enter/leave pipeline at the rate of one task per time unit4<t)  L <R5Synchronous PipelineUses clocked registers between stages Upon arrival of a clock edge & All registers hold the results of previous stages simultaneously The pipeline stages are combinational logic circuits It is desirable to have balanced stages Approximately equal delay in all stages Clock period is determined by the maximum stage delayE 2A 2] 2( 26 2/A"("6Pipeline PerformanceLet ti = time delay in stage Si Clock cycle t = max(ti) is the maximum stage delay Clock frequency f = 1/t = 1/max(ti) A pipeline can process n tasks in k + n  1 cycles k cycles are needed to complete the first task n  1 cycles are needed to complete the remaining n  1 tasks Ideal speedup of a k-stage pipeline over serial execution <m <: <     .0 &> Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( F#SSingle-Cycle DatapathShown below is the single-cycle datapath How to pipeline this single-cycle datapath? Answer: Introduce registers at the end of each stage2U6V.WPipelined DatapathPipeline registers, in green, separate each pipeline stage Pipeline registers are labeled by the stages they separate Is there a problem with the register destination address?2fZ::Corrected Pipelined DatapathDestination register number should come from MEM/WB Along with the data during the written back stage Destination register number is passed from ID to WB stageN42:2:C"Graphically Representing PipelinesMultiple instruction execution over multiple clock cycles Instructions are listed in execution order from top to bottom Clock cycles move from left to right Figure shows the use of resources at each stage and each cycle*:  :70Instruction Time Diagram~Diagram shows: Which instruction occupies what stage at each clock cycle Instruction execution is pipelined over the 5 stages 6:6:6D%Single-Cycle vs Pipelined Performance |Consider a 5-stage instruction execution in which & Instruction fetch = ALU operation = Data memory access = 200 ps Register read = register write = 150 ps What is the single-cycle non-pipelined time? What is the pipelined cycle time? What is the speedup factor for pipelined execution? Solution Non-pipelined cycle =n4h <4h ,q&ELSingle-Cycle versus Pipelined  cont d0Pipelined cycle time = CPI for pipelined execution = One instruction completes each cycle (ignoring pipeline fill) Speedup of pipelined execution = Instruction count and CPI are equal in both cases Speedup factor is less than 5 (number of pipeline stage) Because the pipeline stages are not balanced>!29->!2 '    Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( F6XControl Signals<Similar to control signals used in the single-cycle datapath=(=H0Control Signals  cont d YPipelined Control6Pass control signals along pipeline just like the data78n7I4Pipelined Control  Cont'dID stage generates all the control signals Pipeline the control signals as the instruction moves Extend the pipeline registers to include the control signals Each stage uses some of the control signals Instruction Decode and Register Fetch Control signals are generated RegDst is used in this stage Execution Stage => ALUSrc and ALUOp Next PC uses Beq, Bne, J and zero signals for branch control Memory Stage => MemRead, MemWrite, and MemtoReg Write Back Stage => RegWrite is used in this stagea -= -, -& -; -$ -= -c -a=,&                           *8KPipelining Summary:Pipelining doesn t improve latency of a single instruction However, it improves throughput of entire workload Instructions are initiated and completed at a higher rate In a k-stage pipeline, k instructions operate in parallel Overlapped execution using multiple hardware resources Potential speedup = number of pipeline stages k Unbalanced lengths of pipeline stages reduces speedup Pipeline rate is limited by slowest pipeline stage Unbalanced lengths of pipeline stages reduces speedup Also, time to fill and drain pipeline reduces speedup`n 2: 2: 2 2 2. :  K6T Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( FHZPipeline HazardsHazards: situations that would cause incorrect execution If next instruction were launched during its designated clock cycle Structural hazards Caused by resource contention Using same resource by two instructions during the same cycle Data hazards An instruction may compute a result needed by next instruction Hardware can detect dependencies between instructions Control hazards Caused by instructions that change control flow (branches/jumps) Delays in changing the flow of control Hazards complicate pipeline control and limit performance9 D   \   u   h : 1D\  uh:[Structural HazardsProblem Attempt to use the same hardware resource by two different instructions during the same cycle Example Writing back ALU result in stage 4 Conflict with writing load data in stage 5v #; #$ # #N #;$N\Resolving Structural Hazards Serious Hazard: Hazard cannot be ignored Solution 1: Delay Access to Resource Must have mechanism to delay instruction access to resource Delay all write backs to the register file to stage 5 ALU instructions bypass stage 4 (memory) without doing anything Solution 2: Add more hardware resources (more costly) Add more hardware to eliminate the structural hazard Redesign the register file to have two write ports First write port can be used to write back ALU results in stage 4 Second write port can be used to write back load data in stage 5 2 2% 2r 2@ 26 2h 2 2$r@ 6h Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( FYj] Data HazardsDependency between instructions causes a data hazard The dependent instructions are close to each other Pipelined execution might change the order of operand access Read After Write  RAW Hazard Given two instructions I and J, where I comes before J & Instruction J should read an operand after it is written by I Called a data dependence in compiler terminology I: add $1, $2, $3 # r1 is written J: sub $4, $1, $3 # r1 is read Hazard occurs when J reads the operand before I writes ith 2= 2 2 2C 2: 2h= .  a  e  a  e  a  e f  a  e  a   e f ^Example of a RAW Data Hazard^Result of sub is needed by and, or, add, & sw instructions Instructions and & or will read old value of $2 from reg file During CC5, $2 is written and read  new value is read0  EEEEE A EE E  ,+C=_!Solution 1: Stalling the PipelineThe and instruction cannot fetch $2 until CC5 The and instruction remains in the IF/ID register until CC5 Two bubbles are inserted into ID/EX at end of CC3 & CC4 Bubbles are NOP instructions: do not modify registers or memory Bubbles delay instruction execution and waste clock cycles.. 2< 28 2{ 2E  l`!Solution 2: Forwarding ALU ResultThe ALU result is forwarded (fed back) to the ALU input No bubbles are inserted into the pipeline and no cycles are wasted ALU result exists in either EX/MEM or MEM/WB register8C6   . aImplementing ForwardingTwo multiplexers added at the inputs of A & B registers ALU output in the EX stage is forwarded (fed back) ALU result or Load data in the MEM stage is also forwarded Two signals: ForwardA and ForwardB control forwarding8n68     ,bRAW Hazard Detection3RAW hazards can be detected by the pipeline Current instruction being decoded is in IF/ID register Previous instruction is in the ID/EX register Second previous instruction is in the EX/MEM register RAW Hazard Conditions: IF/ID.Rs = ID/EX.Rw IF/ID.Rt = ID/EX.Rw IF/ID.Rs = EX/MEM.Rw IF/ID.Rt = EX/MEM.Rw <V <,!  !VEcForwarding UnitForwarding unit generates ForwardA and ForwardB That are used to control the two forwarding multiplexers Uses Rs and Rt in IF/ID and Rw in ID/EX & EX/MEM091 9b?dForwarding Control SignalslForwarding ExampleCInstruction sequence: lw $4, 100($9) add $7, $5, $6 sub $8, $4, $72.  gcg cgcg cgcgcg, Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( Fu-=e Load DelayUnfortunately, not all data hazards can be forwarded Load has a delay that cannot be eliminated by forwarding In the example shown below & The LW instruction does not have data until end of CC4 AND instruction wants data at beginning of CC4 - NOT possible 59u55E1E. gDetecting RAW Hazard after LoadDetecting a RAW hazard after a Load instruction: The load instruction will be in the ID/EX register Instruction that needs the load data will be in the IF/ID register Condition for stalling the pipeline if ((ID/EX.MemRead == 1) and (ID/EX.Rw `" 0) and ((ID/EX.Rw == IF/ID.Rs) or (ID/EX.Rw == IF/ID.Rt))) Stall Insert a bubble after the load instruction Bubble is a no-op that wastes one clock cycle Delays the instruction after load by once cycle Because of RAW hazard:1 <v <$ <k <+ <^ < <1> $dEE    M t  f Stall the Pipeline for one CycleFreeze the PC and the IF/ID registers No new instruction is fetched and instruction after load is stalled Allow the Load instruction in ID/EX register to proceed Introduce a bubble into the ID/EX register Load can forward data to next instruction after delaying it& 2D 2 2 E E D EE!E E E8mHazard Detection and Stall Unit iCompiler SchedulingCompilers can schedule code in a way to avoid load stalls Consider the following statements: a = b + c; d = e  f; Slow code: lw $10, ($1) # $1 = addr b lw $11, ($2) # $2 = addr c add $12, $10, $11 # stall sw $12, ($3) # $3 = addr a lw $13, ($4) # $4 = addr e lw $14, ($5) # $5 = addr f sub $15, $13, $14 # stall sw $15, ($6) # $6 = addr d^ 2 2 2 2 ^AA AEAEAEAEEEAEA EAEAEAEEEAE  j:Write After Read  WAR HazardInstruction J should write its result after it is read by I Called an anti-dependence by compiler writers I: sub $4, $1, $3 # $1 is read J: add $1, $2, $3 # $1 is written Results from reuse of the name $1 Hazard occurs when J writes $1 before I reads it Cannot occur in our basic 5-stage pipeline because: Reads are always in stage 2, and Writes are always in stage 5 Instructions are processed in orderj 2C 2 2c 2 a, a   aea efaeeaefEa    E  $a$>((c,,k<Write After Write  WAW HazardInstruction J should write its result after instruction I Called an output-dependence in compiler terminology I: sub $1, $4, $3 # $1 is written J: add $1, $2, $3 # $1 is written again This hazard also results from the reuse of name $1 Hazard occurs when writes occur in the wrong order Can t happen in our basic 5-stage pipeline because: All writes are ordered and always take place in stage 5 WAR and WAW hazards can occur in complex pipelines Notice that Read After Read  RAR is NOT a hazardn -L - -8 -e - a* a  ae aefae aef0eh 8 3 2   Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( F-nControl HazardsBranch instructions can cause great performance loss Branch instructions need two things: Branch Result Taken or Not Taken Branch target PC + 4 If Branch is NOT taken PC + 4 + 4 immediate If Branch is Taken Branch instruction is decoded in the ID stage At which point a new instruction is already being fetched For our pipeline: 2-cycle branch delay Effective address is calculated in the ALU stage Branch condition is determined by the ALU (zero flag)Z -/ -H -. -: -' -g -Z  3H. : '\ 3 Branch Delay = 2 Clock Cycles t2-Cycle Branch DelayNext1 thru Next2 instructions will be fetched anyway Pipeline should flush Next1 and Next2 if branch is taken Otherwise, they can be executed if branch is not takenp F33;3337uReducing the Delay of BranchesBranch delay can be reduced from 2 cycles to just 1 cycle Branches can be determined earlier in the Decode stage Next PC logic block is moved to the ID stage A comparator is added to the Next PC logic To determine branch decision, whether the branch is taken or not Only one instruction that follows the branch will be fetched If the branch is taken then only one instruction is flushed We need a control signal to reset the IF/ID register This will convert the fetched instruction into a NOPq FX FB F F5 F,7  +B   }       5 Modified Datapath  Details of Next PC  Next . . .Pipelining versus Serial Execution Pipelined Datapath Pipelined Control Pipeline Hazards Data Hazards and Forwarding Load Delay, Hazard Detection, and Stall Unit Control Hazards Delayed Branch and Dynamic Branch Prediction( F,wBranch Hazard Alternatives.Predict Branch Not Taken (modified datapath) Successor instruction is already fetched About half of MIPS branches are not taken on average Flush instructions in pipeline only if branch is actually taken Delayed Branch Define branch to take place AFTER the next instruction Compiler/assembler fills the branch delay slot (for 1 delay cycle) Dynamic Branch Prediction Can predict backward branches in loops taken most of time However, branch target address is determined in ID stage Must reduce branch delay from 1 cycle to 0, but how?- - - -z - - -)/'     0  5 xDelayed BranchvDefine branch to take place after the next instruction For a 1-cycle branch delay, we have one delay slot branch instruction branch delay slot (next instruction) branch target (if branch taken) Compiler fills the branch delay slot By selecting an independent instruction From before the branch If no independent instruction is found Compiler fills delay slot with a NO-OPj 7[ 7% 7? 7' 7' 7> CGC GC '' {Zero-Delayed Branch1Disadvantages of delayed branch Branch delay can increase to multiple cycles in deeper pipelines Branch delay slots must be filled with useful instructions or no-op How can we achieve zero-delay for a taken branch? Branch target address is computed in the ID stage Solution Check the PC to see if the instruction being fetched is a branch Store the branch target address in a branch buffer in the IF stage If branch is predicted taken then Next PC = branch target fetched from branch target buffer Otherwise, if branch is predicted not taken then Next PC = PC+4& 2 22 22 2 2 2: 2@ 2 2 K       !   :  1   |#Branch Target and Prediction BufferThe branch target buffer is implemented as a small cache Stores the branch target address of recent branches We must also have prediction bits To predict whether branches are taken or not taken The prediction bits are dynamically determined by the hardware 94"s!4h}Dynamic Branch PredictionPrediction of branches at runtime using prediction bits One or few prediction bits are associated with a branch instruction Branch prediction buffer is a small memory Indexed by the lower portion of the address of branch instruction The simplest scheme is to have 1 prediction bit per branch We don t know if the prediction bit is correct or not If correct prediction & Continue normal execution  no wasted cycles If incorrect prediction (misprediction) & Flush the instructions that were incorrectly fetched  wasted cycles Update prediction bit and target address for future use8D+B-*}(D+B-* }~2-bit Prediction SchemePrediction is just a hint that is assumed to be correct If incorrect then fetched instructions are flushed 1-bit prediction scheme has a performance shortcoming A loop branch is almost always taken, except for last iteration 1-bit scheme will mispredict twice, on first and last loop iterations 2-bit prediction schemes work better and are often used A prediction must be wrong twice before it is changed A loop branch is mispredicted only once on the last iteration| 7 78 7 7 7 7! 78v Pipeline Hazards SummarykThree types of pipeline hazards Structural hazards: conflicts using a resource during same cycle Data hazards: due to data dependencies between instructions Control hazards: due to branch and jump instructions Hazards limit the performance and complicate the design Structural hazards: eliminated by careful design or more hardware Data hazards are eliminated by forwarding However, load delay cannot be eliminated and stalls the pipeline Delayed branching can be a solution when branch delay = 1 cycle Branch prediction can reduce branch delay to zero Branch misprediction should flush the wrongly fetched instructionsT 2 28 2b 2 8b/pL%M&N'P)"ShlE   0` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@$?vdd(@#?  n?" dd@   @@``PR    ?  ` p>>    (    63   ` 3  T Click to edit Master title style! !  0P3   `x 3  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     Sv  08L " `* Pipelined Processor Design COE 308  Computer Architecture Muhamed Mudawar  slide *W 2Wc U H  0޽h ? 33___PPT10i.И@r+D='  = @B + Default Design  0 QI`(    6tJO   ` O  T Click to edit Master title style! !  0N   `b O  W#Click to edit Master subtitle style$ $H  0޽h ? 3380___PPT10.88/k&d 0  t(    0T%  B    P*    0L*   wB   R*  d  c $ ?qU     0-   K   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6<0  .    P*  :  6p1   w.`  H@___PPT9"@ l*"  H  0rllC ? 3380___PPT10.J F   h(  h h Nda tt B    \* p88pp h N|d tt  wB   ^* p88pp h Tu tt .    \* p88ppt h T tt  w.`  H@___PPT9"@ *"  p88ppH h 0rllC ? 3380___PPT10.Jp: 0  06(  0~ 0 s *w  `r w  x 0 c $<;@"<   - L ,\$  # "N ,\$   ,\$JN ,\$   ,\$r   BG1?|\$r   BG1?,\rr   BG8c?l2   <1?T4t8L  M  #  u.I   s BIC'DEF1?BB(]\1STVY]cho&w.~5<AEGHGDA=7/$  "$%&&z%l#ZI8) #v1k?cR[fVsS(@ M     `3 xaxa1?& ,  9A    s BIC'DEF1?BB(]\1STVY]cho&w.~5<AEGHGDA=7/$  "$%&&z%l#ZI8) #v1k?cR[fVsS(@o      `OP xaxa1?   9B    s BIC'DEF1?BB(]\1STVY]cho&w.~5<AEGHGDA=7/$  "$%&&z%l#ZI8) #v1k?cR[fVsS(@ `$    `TP xaxa1?3/EM 9C    s BIC'DEF1?BB(]\1STVY]cho&w.~5<AEGHGDA=7/$  "$%&&z%l#ZI8) #v1k?cR[fVsS(@y $    `8QP xaxa1?/M 9D ~ ! s *[P  `  P  H  0޽h ? X(=^___PPT10i.R.+D='  = @B +8} & 0L0 ff$ 6f(     # lxgP 8c 8c1 ?"`d >C\<$D  0 P  ~  s *8yP  `  P     `L~P xaxa1?] 6Time @  ZT`P 1?"`CA  86 PM @U [ %  #  -,$D 0N [   [N 03=   T ,\$  # 03"N ,\$   ,\$JN ,\$   ,\$r   BG1?|\$r   BG1?,\rr   BG8c?l2   <1?T4tT  T   # 3JN  T     T r   BG1?\ T r   BG1?  Td l2   <1?,4 dT r   BG8c?  N  -    P=T U H-   # U - .   c B`CDEF5%?E_E @"<  sV - f   6?nU Ha f   6?m G f   6?  f2   61?P  L   s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - N      [{   s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@     ZdP 1?"`    ;A F>N  % !   % "  # lP 1?"` 7 >30 0( 2 #  # lȈP 1?"`7  >30 0( 2 $  # lP 1?"` % >30 0( 2RB % s *jJ? 'c  & Z؏P 1?"`C_  57 @ ' ZP 1?"`C  58 @ ( Z0P 1?"`C Z  59 @ ) ZܚP 1?"`Cn   610 @ * ZP 1?"`C,  611 @ + Z4P 1?"`Cu  912 AM @U [  q , #  - q,$D 0>N $   -  $   .  # lpP 1?"`$   >30 0( 2 /  # lP 1?"`   >30 0( 2 0  # lȭP 1?"`   >30 0( 2N [A q 1  [A qN    2  [P{q 3  s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@   4  ZPP 1?"`    ;B FN 03= 5  4A qT ,\$ 6 # 03"N ,\$ 7  ,\$JN ,\$ 8  ,\$r 9  BG1?|\$r :  BG1?,\rr ;  BG8c?l2 <  <1?T4tT  T  = # 3JN  T  >   T r ?  BG1?\ T r @  BG1?  Td l2 A  <1?,4 dT r B  BG8c?  N  -  C  P=T U H-  D # U - . E  c B`CDEF5%?E_E @"<  sV - f F  6?nU Ha f G  6?m G f H  6?  f2 I  61?P  L J  s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - U [   K #  - ,$D 0>N   L    M  # lP 1?"`   >30 0( 2 N  # lP 1?"` u >30 0( 2 O  # lP 1?"`u  >30 0( 2N [p  P  [p N    Q  [{  R  s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@   S  ZP 1?"`    ;C FN 03= T   p T ,\$ U # 03"N ,\$ V  ,\$JN ,\$ W  ,\$r X  BG1?|\$r Y  BG1?,\rr Z  BG8c?l2 [  <1?T4tT  T  \ # 3JN  T  ]   T r ^  BG1?\ T r _  BG1?  Td l2 `  <1?,4 dT r a  BG8c?  N  -  b  P=T U H-  c # U - . d  c B`CDEF5%?E_E @"<  sV - f e  6?nU Ha f f  6?m G f g  6?  f2 h  61?P  L i  s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - U [ O^  j #  -^ ,$D 0>N  O k   O l  # lP f1?"` a >30 0( 2 m  # lP f1?"`a  >30 0( 2 n  # l,P f1?"` O >30 0( 2N [ ^  o  [ ^ N    p  [= {^  q  s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@   r  Z\P 1?"`    ;D FN 03= s   ^ T ,\$ t # 03"N ,\$ u  ,\$JN ,\$ v  ,\$r w  BG1?|\$r x  BG1?,\rr y  BG8c?l2 z  <1?T4tT  T  { # 3JN  T  |   T r }  BG1?\ T r ~  BG1?  Td l2   <1?,4 dT r   BG8c?  N  -    P=T U H-   # U - .   c B`CDEF5%?E_E @"<  sV - f   6?nU Ha f   6?m G f   6?  f2   61?P  L   s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - L M   # v ~B   N DjJ? ~B   N DjJ? ~B   N DjJ?  ~B   N DjJ?  ~B   N DjJ?ss ~B   N DjJ?`` ~B   N DjJ?MM H  0޽h ? X(=^"___PPT10.R<+fPD' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(Dc' =4@BB BB%()))D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*, %(D' =-o6Bdissolve*<3<*, D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*K %(D' =-o6Bdissolve*<3<*K D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*j %(D' =-o6Bdissolve*<3<*j Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* -%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<* -D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<* -Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* -e%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<* -eD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<* -e+ ' 0L0 ^^$ v^(     # lP 8c 8c1 ?"``# `\<$D  0 P  ~  s *P  `  P     `P xaxa1?c ; H 6Time @  ZHP 1?"`CQ  86 PM @ [ ST  #  -T,$D 0T ,\$  # SS"N ,\$   ,\$JN ,\$   ,\$r   BG1?|\$r   BG1?,\rr   BG8c?l2   <1?T4tN      [3{T   s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@     ZT 1?"`    ;A F   # lT 1?"` R >30 0( 2  ZT 1?"`Co  57 @  ZT 1?"`C"  58 @  ZT 1?"`C   89 PM @?  [    #  -D ,$D 0T  T   # HSJN  T     T r   BG1?\ T r   BG1?  Td l2   <1?,4 dT r   BG8c?  N      [{    s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@     ZT 1?"`    ;B F   # lT 1?"`R  >30 0( 2   # l0 T 1?"`Rg >30 0( 2T ,\$ ! # H "N ,\$ "  ,\$JN ,\$ #  ,\$r $  BG1?|\$r %  BG1?,\rr &  BG8c?l2 '  <1?T4tA [ A  ( #  - ,$D 0T  -  ) # #6T U H-  * # U - . +  c B`CDEF5%?E_E @"<  sV - f ,  6?nU Ha f -  6?m G f .  6?  f2 /  61?P  L 0  s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - N    1  [ {  2  s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@   3  Z'T 1?"`    ;C F 4  # l8,T 1?"` @ >30 0( 2 5  # lP0T 1?"`@h >30 0( 2 6  # l3T 1?"`eA >30 0( 2T  T  7 # A JN  T  8   T r 9  BG1?\ T r :  BG1?  Td l2 ;  <1?,4 dT r <  BG8c?  T ,\$ = # v @ "N ,\$ >  ,\$JN ,\$ ?  ,\$r @  BG1?|\$r A  BG1?,\rr B  BG8c?l2 C  <1?T4tA [  D # - ,$D 0N    E  [ {  F  s BCDEF8c?BBE Eu u >?@CFJNSY^elt{c[QC7* ~u jaX%P/J=DL@V>@   G  Z;T 1?"`    ;D F H  # l?T 1?"`@ h >30 0( 2 I  # l=T 1?"`Af  >30 0( 2 J  # lFT f1?"`@  >30 0( 2T  -  K # ]  T U H-  L # U - . M  c B`CDEF5%?E_E @"<  sV - f N  6?nU Ha f O  6?m G f P  6?  f2 Q  61?P  L R  s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - T  T  S # 5v JN  T  T   T r U  BG1?\ T r V  BG1?  Td l2 W  <1?,4 dT r X  BG8c?  T ,\$ Y # 4C "N ,\$ Z  ,\$JN ,\$ [  ,\$r \  BG1?|\$r ]  BG1?,\rr ^  BG8c?l2 _  <1?T4t&   f/  ` # fS ,$D 0 a  # lNT 1?"` f/  >30 0( 2 b  # lST f1?"` .  >30 0( 2T  -  c #   T U H-  d # U - . e  c B`CDEF5%?E_E @"<  sV - f f  6?nU Ha f g  6?m G f h  6?  f2 i  61?P  L j  s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - T  T  k #  C - JN  T  l   T r m  BG1?\ T r n  BG1?  Td l2 o  <1?,4 dT r p  BG8c?    .   q # R ,$D 0 r  # ltZT f1?"`.   >30 0( 2T  -  s # I ` T U H-  t # U - . u  c B`CDEF5%?E_E @"<  sV - f v  6?nU Ha f w  6?m G f x  6?  f2 y  61?P  L z  s BCLDEF1?hh; KKUhTvhhggggedba_][XUSQOMLJIHHHH{1}/~,~)&"~}|{zx v sqnkhda_[XTQMJFD B @><;@"<   - RB { s *jJ? 6 vB | N DjJ?*vB } N DjJ?DD*vB ~ N DjJ?*vB  N DjJ? *H  0޽h ? X(=^n f ___PPT10F .R<+ D ' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*( %(D' =-o6Bdissolve*<3<*( D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*D %(D' =-o6Bdissolve*<3<*D D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*` %(D' =-o6Bdissolve*<3<*` D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*q %(D' =-o6Bdissolve*<3<*q Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* ,%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<* ,D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<* ,Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* ,L%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<* ,LD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<* ,LD' =%(DF' =%(D' =4@BBBB%()))D' =1:Bvisible*o3>+B#style.visibility<* L%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<* LD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<* L+#  0  ##$=> "(   ~  s *XsT  `  T    s *yT  C\ T  * @`L  M   #  [%  N ` *      Z   s *} *    <T "`} m*  A1$0(2c    <GL "`m} *  A2$0(2c TB   c $Dm} m* TB   c $D} * TB   c $D} *    <$LL "`} *  Ck&0(2c    HT "`6`   D& &0(2c N ` *    } } G Z   s *} *    <TT "`} m*  A1$0(2c    <T "`m} *  A2$0(2c TB   c $Dm} m* TB   c $D} * TB   c $D} *    <T "`} *  Ck&0(2c    HT "`6`   D& &0(2c N ` *    } * M Z   s *} *    <ТT "`} m*  A1$0(2c    <T "`m} *  A2$0(2c TB   c $Dm} m* TB   c $D} * TB   c $D} *    <T "`} *  Ck&0(2c    HT "`6`   D& &0(2cL    ! #  x  N ` *  "   `} Z #  s *} *  $  <T "`} m*  A1$0(2c  %  <XT "`m} *  A2$0(2c TB &  c $Dm} m* TB '  c $D} * TB (  c $D} *  )  <ԺT "`} *  Ck&0(2c  *  HT "`6`   D& &0(2c N ` *  +   ` * Z ,  s *} *  -  <hT "`} m*  A1$0(2c  .  < T "`m} *  A2$0(2c TB /  c $Dm} m* TB 0  c $D} * TB 1  c $D} *  2  <T "`} *  Ck&0(2c  3  HtT "`6`   D& &0(2c N ` *  4    Z 5  s *} *  6  <T "`} m*  A1$0(2c  7  <\T "`m} *  A2$0(2c TB 8  c $Dm} m* TB 9  c $D} * TB :  c $D} *  ;  <T "`} *  Ck&0(2c  <  HT "`6`   D& &0(2c = 6T n   4Without Pipelining One completion every k time unitsP50( DDD D > 6,T n   0With Pipelining One completion every 1 time unitP10( DDD DH  0޽h ? ̙33___PPT10i.qCB.+D='  = @B +  0 $-- v(   ~  s * T  `  T    s *Z 'p  T  * @`L g_ 0  # _ 80`   0G0* K l   <GKH5  `   0G0*  `   0G0*6  T  Z   # ` fh   s *"` Z    s *Z ` Z  LS1.0(2 `   0G0*C T  Z   #  `  fh   s *"` Z    s *`Z ` Z  LS2.0(2 `   0G0*}  `   0G0* = T  Z   # =` }fh   s *"` Z    s *WL ` Z  hSk00(2 `   0G0*  Z   s *` 7f   6]L ` =f DRegister 0(2 B Z   s *` D f   6Z _ J e DRegister 0(2 B Z   s *` f   6|$Z _ e DRegister 0(2 B Z   s *` f   6(Z _ e DRegister 0(2 B TB   c $Dd   0&Z g P  ?Input0 2B   0`/Z g\P0 ?Clock0 2B !  0 3Z K   @Output0 2BZB " s *D-fZB # s *D-flB $ <DfZB % s *D-fZB & s *D- flB ' <DfZB ( s *D;-XfZB ) s *DX-uflB * <DXfXZB + s *DH-efZB , s *De-flB - <DefeH  0޽h ? ̙33___PPT10i.qCB.+D='  = @B +T   0 k c $  (     s *?Z  `x Z  * @`~  s *0]Z  `  Z  L  M  #  'Cn   0X99jJ?"  M   60kL \ 6 `k + n  12 0  FB<B   # jJ <B   # jJW    6mL 6&  iPipelined execution in cycles00 FB   0kL "`   fSerial execution in cycles00 FB   6aZ  . f M=00 FB   6eZ  ^f M=00 FBB   0yL  [ &Sk ! k for large n~0 FNF FFF   6oZ :   jnk20 FB   0,tZ "`?  SkH0 FNJH  0޽h ? ̙33___PPT10i.2Jg+D='  = @B +0  0 @*00(  0x 0 c $Z  `  Z  x 0 c $ȊZ  , Z  H 0 0޽h ? 3380___PPT10.Ȝ0fU  0 MM&VbLPM(  L WL  0e0e    Bs C`DEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s s ``v @ s ~ L s *hZ  `  Z   L s *hZ 'g<$D 0 Z  L Z L# 6B L T D1?ZZB L T D1?  B L T D1?SSB L T D1?  L <Z ##"` .  ?Imm260B   L <Z ## 2  TRs0B  L <@Z ##D 2  TRt0B  L HZ ###jJ"` L  bInstruction Memory4 00nB dB L <DjJ   dB L <DjJ  RB L s *DԔ. XB L 0DԔN _ N XB L 0DԔN \N  L ZrL 1?"`d  AInc"0( 2B  L TZ z1"`J _Q  <PC0B  L T|Z 1"` _J  <000B XB L 0DԔ   L  f  L# K \Q x" L HG0*1? f  LB  `Z 1?"` f  Am u x  Fc LB  `Z 1?"` fC  50 B  LB  `Z 1?"`F f  51 B  L S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"` N  L 3 rXZ 1?"` )f  ?Address0    L 3 rZ 1?"` 04  E Instruction 0   RB !L s *DԔ L wL ` %L#  C * &L c BC DE F*jJ? p ` @`S" ` 'L  fZ xaxa1?"` =A L U PBXB (L 0DԔN N L  f  )L#  # x" *L HG0*1? f  +LB  ` }Z 1?"` f  Am u x  Fc ,LB  `HZ 1?"` fC  50 B  -LB  `Z 1?"`F f  51 B XB .L 0DԔ  XB /L 0DԔ # XB 0L 0DԔ6  6  2L  0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@ m 4L <0Z ##jJ"` j  G Data Memory 0 B XB 5L 0DԔ) Cj)  6L 3 rZ 1?"` {n  @ Address 0    7L 3 rZ 1?"` {S  b Data_in 0   * 8L S 0e0e    B*CDEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||}}* @"` @ ftL  f  9L#   x" :L HG0*1? f  ;LB  ``Z 1?"` f  Am u x  Fc L 0DԔ) ) * @L S 0e0e    BC#DEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#s# @"`~vL  BL <] ##"` yFT  D ALU result 0 B  CL < ] ##"`z g  >zero0B  DL H] "`<  ^ID = Decode and Register Fetch$0F  FL Hh] "`=   b"EX = Execute and Calculate Address$#0#F  GL H] "`C  VIF = Instruction Fetch$0F  HL H] "`6  SMEM = Memory Access$0F  IL Hp] "`S  OWB = Write Back$0F  JL <!] ##r m  <Rd0B L  f  KL# R mXx" LL HG0*1? f  MLB  `&] 1?"` f  Am u x  Fc NLB  `*] 1?"` fC  50 B  OLB  `0(] 1?"`F f  51 B  PL S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"` m KL ` y ,  QL#    RL Bd1] ##jJ"`` y ,  K Register File"0xB  SL C x<8] 1?"` &  VBusW0   TL C xD;] 1?"` T  :RW0   UL  0e0e    BCVDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||VV@  U |B VL T D1? s s  XL T>] jJ"` Cz  ;Next PC( YL  0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`d # L `  J ZL#  @ c f" [L 6Gn(1`  J \L NB] ##"``  J =Ext0B ^B ]L 6Do6  ^L <8G] ##"`q   ?Imm160B  `L C B CDEFAAԔ  @,  RB aL s *Dz   bL  B]CDEFAAԔq]q @"`c ) H L 0޽h ? a(___PPT10.i+)Dd'  = @B D' = @BA?%,( < +O%,( < +D'' =%(D' =%(Dw' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*L)U%(D' =-6B'blinds(horizontal)*<3<*L)UD'' =%(D' =%(Dw' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*LU%(D' =-6B'blinds(horizontal)*<3<*LU+,e  0 QQ&d\gQ(  \ \ C B CGDEFԔ0 GG @"` B~ \ s *\R]  `  ]   \  BdT] "` `<$D 0 ]  jB o\ BDԔ- Z - ^B p\ 6DԔ Z  XB q\ 0Dq =  z\ BV] ## | l  TRs0B  {\ Bd[] ## |H  TRt0B jB |\ BDjJ`8 5 \ w\ Z 1?  x\ Z 1?5@ y\ Z 1? 5B  }\ Z 1?5` ~\ B`] ##"` -  ?Imm260B  \ Nd] ###jJ"` :z  bInstruction Memory4 00nB jB \ BDjJc `c ^B \ 6DԔW :W ^B \ 6DԔW W  \  `hk] 1?"`m  AInc"0( 2B  \ Zo] 1"`S Z  <PC0B  \ Z|s] 1"` S  <000B ^B \ 6DԔ  L  f  \# T 3Z x" \ HG0*1? f  \B  `w] 1?"` f  Am u x  Fc \B  `{] 1?"` fC  50 B  \B  `|] 1?"`F f  51 B  \ S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"` W  \ C x] 1?"` W  ?Address0   \ C xd] 1?"` ^=  E Instruction 0   ^B \ 6DԔ z  \ T\] ##jJ"` ]  kRegister File @0(0B B wL ` \#  9 Y * \ c BC DE F*jJ? p ` @`S" ` \  f] xaxa1?"` =A L U PB^B \ 6DԔT @ 3 T wL  f  \# { S x" \ HG0*1? f  \B  `Ԗ] 1?"` f  Am u x  Fc \B  `] 1?"` fC  , B  \B  `t] 1?"`F f  , B ^B \ 6DԔ% : % B \ Z D1?&&B \ Z D1?  B \ Z D1?B \ Z D1?^B \ 6DԔ- @ 3 -  \  0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`d S ^B \ 6DԔ= @ =  \ H4] ##jJ"` ?a G Data Memory 0 B  \ C x] 1?"` cw  @ Address 0    \ C x] 1?"` c& b Data_in 0   L  f  \#  9 x" \ HG0*1? f  \B  `] 1?"` f  Am u x  Fc \B  `<] 1?"` fC  50 B  \B  `] 1?"`F f  51 B  \ S ~] 1?"`d 0  _ BusW0   \ B] ##"` W  D ALU result 0 B  \ Nȿ] "`& h I ID = Decode" 0 F \ N] "` h J EX = Execute" 0 F \ N] "`h TIF = Instruction Fetch"0F \ N] "`h J MEM = Memory" 0 F \ Nh] "`h @WB"0F* \ S 0e0e    BC#DEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#s# @"`@ ^B \ 6DԔT ] T ^B \ 6DԔ ] ^B \ 6DԔ= Y= ^B \ 6DԔ @ 3  ^B \ 6DԔ 9 ^B \ 6DԔ @   \ S 0e0e    B'CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||'@"`W y= ^B \ 6DԔ ?  \ B ] ##"`   >zero0B 8   \  \ T] "` AIF/ID 0B  \ T`] "`t   AID/EX 0B  \ T] "`Z BEX/MEM 0B  \ T] "`9   BMEM/WB 0B  \ B ] ##` <Rd0B jB \ BDjJ> `>  \ S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`>   \ S ~\] 1?"`G M  ; RW0   \ Z] jJ"`3 pq  ;Next PC( \ c BP CWDEFԔP 'P WW @ wL  f  \#  jx" \ HG0*1? f  \B  `] 1?"` f  Am u x  Fc \B  `^ 1?"` fC  , B  \B  `^ 1?"`F f  , B ^B \ 6DԔ @ P  \  0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`  L `  J \#  9 c f" \ 6Gn(1`  J \ Nl^ ##"``  J =Ext0B dB \ <Do-  \ B ^ ##"`q   ?Imm160B  \ C BCDE FAjJ@S"  j WH \ 0޽h ? a(___PPT10.i0F+)D' = @B DX' = @BA?%,( < +O%,( < +D' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*\;%(D' =-6B'blinds(horizontal)*<3<*\;D' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*\D' =0l9 BBBB*<3<*\)?D' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*\;v%(D' =-6B'blinds(horizontal)*<3<*\;vD' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*\D' =0l9 BBBB*<3<*\)?D' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*\v%(D' =-6B'blinds(horizontal)*<3<*\vD' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*\D' =0l9 BBBB*<3<*\)?+a  0 TT %e @GT(   ~  s * ^  `  ^     B^ "`  ^  jB  BDԔ Z ^B  6DԔZ XB  0D   c B CuDEFAAԔ uu @ ,  c B CDEFAjJ0    @S" O vjB m BDjJ`P `jB n BDjJ`<` o  0e0e    BzCDEF  jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||::z]z @S" c ` s Z 1?  t Z 1?5@ u Z 1?5 B  v B^ ## |   TRs0B  w B|$^ ##\ |  TRt0B jB x BDjJV`V y Z 1?5` z B(^ ##"`K   ?Imm260B  ~ N-^ ###jJ"` :zD  bInstruction Memory4 00nB jB  BDjJ ` ^B  6DԔ : ^B  6DԔ     `2^ 1?"`o  AInc"0( 2B   Z`7^ 1"`   <PC0B   Z ;^ 1"`q   <000B ^B  6DԔL  f   #  3 x"   HG0*1? f   B  `H?^ 1?"` f  Am u x  Fc  B  ``C^ 1?"` fC  50 B   B  ` G^ 1?"`F f  51 B   S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"`   C xHK^ 1?"` W>  ?Address0    C xN^ 1?"`x ^  E Instruction 0   ^B  6DԔ z   TR^ ##jJ"` ] O  kRegister File @0(0B B wL `  #  9 Y9 *   c BC DE F*jJ? p ` @`S" `    fHY^ xaxa1?"` =A L U PB^B  6DԔ @ 3  wL  f   # ) S } x"   HG0*1? f   B  `d^^ 1?"` f  Am u x  Fc  B  `lc^ 1?"` fC  , B   B  `e^ 1?"`F f  , B ^B  6DԔ : B  Z D1?&&B  Z D1?  B  Z D1?B  Z D1?^B  6DԔ @ 3    0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"` S 9 ^B  6DԔ @    Hhk^ ##jJ"`\ ? G Data Memory 0 B   C x$p^ 1?"` c%  @ Address 0     C xs^ 1?"`a c  b Data_in 0   L  f   #  9 x"   HG0*1? f   B  `,x^ 1?"` f  Am u x  Fc  B  ``{^ 1?"` fC  50 B   B  `^ 1?"`F f  51 B   S ~x^ 1?"` J O  _ BusW0    B܇^ ##"`u   D ALU result 0 B   N^ "`&  @ID"0F  N ^ "`  @EX"0F  N^ "` @IF"0F  Nd^ "` AMEM"0F  N^ "` @WB"0F*  S 0e0e    BC#DEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#s# @"`5@X ^B  6DԔ ]  ^B  6DԔm ] m ^B  6DԔ Y ^B  6DԔ@ 3 ^B  6DԔ 9 ^B  6DԔ @    S 0e0e    B'CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||'@"` y ^B  6DԔV ?V   B|^ ##"`6   >zero0B   T^ "` ?IF/ID0B   T^ "`t  ?ID/EX0B   T<^ "`Z @EX/MEM0B   T^ "` 9  @MEM/WB0B   B^ ## `` <Rd0B jB  BDjJ `   S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`    S ~з^ 1?"` 0 O  ; RW0    Z|^ jJ"`3 p  ;Next PC(  c BP CWDEFAAԔP 'P WW @` wL  f   # O jx"   HG0*1? f   B  `^ 1?"` f  Am u x  Fc  B  ` ^ 1?"` fC  , B   B  `^ 1?"`F f  , B ^B  6DԔm @ P m    0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`m  L `  J { # \ 9  f" |  6Gn(1`  J }  N^ ##"``  J =Ext0B dB  <Do \   BL^ ##"`  ?Imm160B H  0޽h ? a(  ___PPT10 .i0F+D~ ' = @B D9 ' = @BA?%,( < +O%,( < +D' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*o D' =0l9 BBBB*<3<*o )?D' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*m D' =0l9 BBBB*<3<*m )?D' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*n D' =0l9 BBBB*<3<*n )?D' =%(D~' =%(D&' =4@BBBB%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<* D' =0l9 BBBB*<3<* )?+Y  0 2*% ·(   ~   s *L^  `  ^  ~   s *$^  ` ^  |B   T D1?0|B   T D1?z P    P ,$@ 0   N ^ "`p;:  ` lw $6, 8($5) 0 C  N v6    v7 ZB   s *Do]`   016 T vC ]*   # vo]V    N 1?C"?C \*    T8^ 1"`vC ])  >IM 0(2B   N^ "`ZPz YCC1*0hh   N^ "`P0 fTime (in cycles)*0hh   T` "`6-f SProgram Execution Order 0Cz Pc     Pc  ,$@ 0   N^ "` =  ladd $1, $2, $300CG    N` "`P  YCC2*0hh- N 6c    7c    N 1?C"?} o V     0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c    6c    Z` "` o U  YReg 0(2B    0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }   #  *  ZB   s *Do } } ZB   s *Do `   01) 6c ZB   s *Do  N v6     c  ZB   s *Do]`   016 T vC ]*   # vo]V    N 1?C"?C \*    Th` 1"`vC ])  >IM 0(2Bz P |    P | ,$@ 0   N$` "`] ='   ori $4, $3, 700 CG  N c 6    c 7 N c S s    c S s 4    0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB   s *Do   T  }   # c   ZB   s *Do } } ZB   s *Do    N0` S"`?  :  AALU"0FC `   01 6    ND7` "` P  YCC3*0hh- N 6c    c     N 1?C"?} o V     0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c    6c    ZX@` "` o U  YReg 0(2B    0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }   #  *  ZB   s *Do } } ZB   s *Do `   01) 6c ZB !  s *Do  N v6  "   # | ZB #  s *Do]` $  016 T vC ]*  % # vo]V  &  N 1?C"?C \*  '  TF` 1"`vC ])  >IM 0(2Bsz P  (  P ,$@ 0 )  NK` "` =  lsub $5, $2, $300CGf  *  N]` "` P4  YCC4*0hhN  6  +   7 ZB ,  s *Do P N  6  -   6 T vC ]*  . # / o V  /  N 1?C"?C \*  0  TTa` 1"`vC ])  >DM 0(2B` 1  01P 6  2   0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB 3  s *Do 0 N c 6  4    N c S s  5  c S s 4 6   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB 7  s *Do   T  }  8 # c   ZB 9  s *Do } } ZB :  s *Do  ;  Ng` S"`?  :  AALU"0FC ` <  01 6 - N 6c  =   # |  >  N 1?C"?} o V  ?   0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  @  6c  A  Zl` "` o U  YReg 0(2B B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  C #  *  ZB D  s *Do } } ZB E  s *Do ` F  01) 6c ZB G  s *Do  N v6  H  / ZB I  s *Do]` J  016 T vC ]*  K # vo]V  L  N 1?C"?C \*  M  Tt` 1"`vC ])  >IM 0(2BF#z Pj N  Pj,$@  0 O  Ny` "`J= sw $2, 10($3)00CGf   P  N8` "` P YCC5*0hhN  oV  Q   pW  R  N 1?C"? o6V N  oV  S   oV  T  Z@` "` oU  YReg 0(2B U B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB V  s *Do  N  6  W    ZB X  s *Do P N  6  Y   6 T vC ]*  Z # / o V  [  N 1?C"?C \*  \  T` 1"`vC ])  >DM 0(2B` ]  01P 6  ^   0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB _  s *Do 0 N c 6  `   # | N c S s  a  c S s 4 b   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB c  s *Do   T  }  d # c   ZB e  s *Do } } ZB f  s *Do  g  N` S"`?  :  AALU"0FC ` h  01 6 - N 6c  i     j  N 1?C"?} o V  k   0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  l  6c  m  Z؟` "` o U  YReg 0(2B n   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  o #  *  ZB p  s *Do } } ZB q  s *Do ` r  01) 6c ZB s  s *Do  N v6  t   jZB u  s *Do]` v  016 T vC ]*  w # vo]V  x  N 1?C"?C \*  y  T` 1"`vC ])  >IM 0(2Bz PCj z  PCj,$@ 0 {  N` "`P YCC7*0hhN  oV  |  \ C  }  N 1?C"? o6V N  oV  ~   oV    Zض` "` oU  YReg 0(2B  B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB   s *Do  N  6     C ZB   s *Do P N  6     6 T vC ]*   # / o V    N 1?C"?C \*    TD` 1"`vC ])  >DM 0(2B`   01P 6     0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB   s *Do 0 N c 6    BjN c S s    c S s 4    0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB   s *Do   T  }   # c   ZB   s *Do } } ZB   s *Do    N` S"`?  :  AALU"0FC `   01 6 z Pj   Pj,$@  0   N` "`:PZ YCC6*0hhN  oV     =    N 1?C"? o6V N  oV     oV    Z` "` oU  YReg 0(2B  B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB   s *Do  N  6    # | ZB   s *Do P N  6     6 T vC ]*   # / o V    N 1?C"?C \*    T` 1"`vC ])  >DM 0(2B`   01P 6     0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB   s *Do 0 N c 6      N c S s    c S s 4    0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB   s *Do   T  }   # c   ZB   s *Do } } ZB   s *Do    N` S"`?  :  AALU"0FC `   01 6 - N 6c    j   N 1?C"?} o V     0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c    6c    Z` "` o U  YReg 0(2B    0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }   #  *  ZB   s *Do } } ZB   s *Do `   01) 6c ZB   s *Do B   N D?j,$D 0B   N D?F F j,$D 0B   N D? j,$D 0B   N D?h h j,$D  0B   N D?j,$D  0B   N D?j,$D  0B   N D?&&j,$D 0 z BPj   PBj,$D 0   N(` "`aP YCC8*0hhT  oV   # B c    N 1?C"? o6V N  oV     oV    Z` "` oU  YReg 0(2B  B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB   s *Do  N Bj   BjZB   s *Dob   N 1?C"?}J1   Tb 1"`{Jb0 >DM 0(2B`   01j    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @_-ZB   s *DoB|~B   N D?jH   0޽h ? a(++___PPT10+.j`#u+S4D{+'  = @B D6+' = @BA?%,( < +O%,( < +D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<*( %(D' =-o6Bdissolve*<3<*( Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<*N %(D' =-o6Bdissolve*<3<*N Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(DF' =%(Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<*z %(D' =-o6Bdissolve*<3<*z Ds' =4@BB BB%())))?D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* +^  0L0 % u<m<$I @ ;(     C xb gֳgֳ ? `  b     Bb "` `  b     Zb 1? "`  ,$D 0 >IF 0( 2l C ,   C,,$D 0   Zb 1? "`C z  >WB 0( 2    f`"b 1? "`D{ `  < 0( 2   Z\&b 1? "`Da F  >EX 0( 2   Z*b 1? "`CG , >ID 0( 20l { ,  { ,,$D 0   Z.b 1? "`{ `  >WB 0( 2    f2b 1? "`a F  < 0( 2   Z06b 1? "`G , >EX 0( 2Ml a @,  a @,,$D  0   Z9b 1? "`a @F  >WB 0( 2    f=b 1? "`G @, ?MEM 0( 2 ! ZHBb 1?"`G @,,$D  0 < 0( 2@l  G z    G z ,$D 0   ZEb 1?"` G  >ID 0( 2   Z\Jb 1?"` G z  >IF 0( 2&l G `    G ` ,$D 0   ZMb 1?"`H  >EX 0( 2   ZQb 1?"`G z  >ID 0( 2   ZdHb 1?"`H { `  >IF 0( 2M8 x  xB ( T DjJ?w )  Tab jJ?C"?Px PTime 0 HH~B *  N DjJ?~B +  N DjJ?~B ,  N DjJ?G G ~B -  N DjJ?  ~B .  N DjJ?  ~B /  N DjJ?CC~B 0  N DjJ?~B 1  N DjJ?~B 2  N DjJ?@@~B 3  N DjJ? 5  3 rmb jJ? S"`?j MCC10 HH 8  # lDwb jJ?S"`?  j MCC40 HH 9  # lЀb jJ?S"`? Cj MCC50 HH :  3 r$b jJ? S"`?=j MCC60 HH ;  3 r@b jJ? S"`?j MCC70 HH <  3 r$b jJ? S"`?Cj MCC80 HH =  3 rb jJ?S"`?Bj MCC90 HH 6  3 rLb jJ?S"`?G j MCC20 HH 7  3 rb jJ?S"`?A  j MCC30 HHl  F    F ,$D 0    fb 1?"`  ?MEM 0( 2   Zb 1?"` z  >EX 0( 2   Z b 1?"` { `  >ID 0( 2   ZHb 1?"` a F  >IF 0( 2l  C,   C,,$D 0   Zb 1? "` B  >WB 0( 2    fb 1? "` Bz  ?MEM 0( 2   Zxb 1? "` { C`  >EX 0( 2   Zb 1? "` a BF  >ID 0( 2   Zb 1? "` G B, >IF 0( 28   @ #  # ltb jJ?S"`?   v lw $7, 8($3) 0 C HH> o  # l0b jJ?S"`? y  t lw $6, 8($5) 0  HHA p  # lb jJ?S"`?z b  w ori $4, $3, 70C HH( q  # lc jJ?S"`?b J  ^sub $5, $2, $30CHHB r  # lb jJ?S"`?E - xsw $2, 10($3)0C HHB u  Z D1? v  Zc "` cH MInstruction Order 0Cwl 'C.  'C.,$D  0.2 4  3  B_TENH]QjJ? `T_TqS`T_TqS`T_TqS`TC"?m  3 >  3 r8c jJ?"`'m  {AUp to five instructions can be in execution during a single cycleB0( 2B "  Z o? C.l S   S ,$D  06 ?  # l4c @@jJ?"`S  JALU instructions skip the MEM stage. Store instructions skip the WB stage K0( KfB  B 6DjJS z fB  B 6DjJ  H  0޽h ?4  a(!!___PPT10!+ D9!'  = @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*! %(D' =-o6Bdissolve*<3<*! D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* +p+0+ 0 ++0+! 0 +2  0 ^V%#@(     B -c "` `  c     BL/c "` `x<$D  0 c  L   `0c 1?\ . | ,$  0 200+150+200+200+150 = 900 ps.0 BFl   O # O,$D 0,@  #     B   ` D1?2# 2   3 r7c 1?"`#   YReg 0( 2   3 rTIF 0( 2  3 rFc 1?"`  d900 ps 0( 2   # lJc 1?"` #  YReg 0( 2N  #    OB  Z D1?2# 2   # lNc 1?"`#   YReg 0( 2  # lXSc 1?"`   ?ALU 0( 2  # lpWc 1?"`  ?MEM 0( 2   # l[c 1?"` #  >IF 0( 2 ! # l^c 1?"`  d900 ps 0( 2  " # l\bc 1?"` #  YReg 0( 2H  0޽h ? a(NF___PPT10&.+D' Yc = @B D}' = @BA?%,( < +O%,( < +Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(?%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(?D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(?D{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =-o6Bdissolve*<3<*#+8+0+0 +Q  0 d$\$%.X4   #(  ~  s * pc  `  c     B qc "` `V<$D  0 c  ^ ,  `vc 1?   ,$  0  900 ps / 200 ps = 4.54 v(BF,  /  `t|c 1?I i ,$  0 E1( v(FP 0  `c 1?d ,$  0 max(200, 150) = 200 ps8 v(BFSl  G X G,$D 0@ f : B   ` D1?  3 rHc 1?"`tf ?200 0( 2   3 rc 1?"` V >IF 0( 2   3 r4c 1?"`V YReg 0( 2 2 # l,c 1?"`&0 V ?MEM 0( 2 3 # l$c 1?"`'V ?ALU 0( 2  4 # lؕc 1?"`0  V YReg 0( 2v@ V  T 9 5 3 rc 1? "`V  >IF 0( 2 6 3 r8c 1? "`V  YReg 0( 2 7 3 r̠c 1? "`0 V:  ?MEM 0( 2 9 3 rc 1? "`: V  YReg 0( 2 8 3 rc 1? "`'V1  ?ALU 0( 2lT   R#  l" ; # l c 1?"` & >IF 0( 2  < # lc 1?"`&   YReg 0( 2 = # lظc 1?"`9 C ?MEM 0( 2 > # lc 1?"`0 :  ?ALU 0( 2  ? # lc 1?"`C  YReg 0( 2T f @#  }B A Z D1? B # lc 1?"`tf ?200 0( 2 @ !"G W!OGT f C#  !"&B D Z D1? E # lpc 1?"`tf ?200 0( 2T f F#  &"+ B G Z D1? H # lc 1?"`tf ?200 0( 2T f I#  0 "5 B J Z D1? K # lc 1?"`tf ?200 0( 2T f L#  9 ">B M Z D1? N # l,c 1?"`tf ?200 0( 2T f O#  B"GB P Z D1? Q # lxc 1?"`tf ?200 0( 2H  0޽h ? a(:-2-___PPT10-.+ OD>,' c = @B D+' = @BA?%,( < +O%,( < +D{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*0D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =-o6Bdissolve*<3<*XDn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*:%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*:D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*:D{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*/%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*/D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*/Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*:x%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*:xD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*:xDn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*xD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*xD{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*,%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*,D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*,Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*1%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*1D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*1++0+,0 ++0+/0 ++0+00 +0  0 P*40(  4x 4 c $\c  `  c  x 4 c $ c  , c  H 4 0޽h ? 3380___PPT10.Ȝ0fm  0 f|f'{df(  d d C B CuDEFAAԔ uu @   d C B CDEFAAjJ    @%  ~ d s *`c  `  c  dB d <DԔZ XB d 0DԔZ RB d s *D dB  d <DjJ6 @ S6 dB  d <DjJ6 36   d  0e0e    BzCDEF  jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||::z]z @S"  T 6 |  d T 1?5v |  d T 1? Vv | d T 1?  B v  d <g ##V|  TRs0B  d <g ##2| TRt0B dB d <DjJ, `, | d T 1? `v  d <| g ##"`! ?Imm260B  d H,g ###jJ"`g:z  bInstruction Memory4 00nB dB d <DjJ`XB d 0DԔ:XB d 0DԔ d Zg 1?"`E AInc"0( 2B  d T|g 1"` <PC0B  d T(g 1"`G <000B XB d 0DԔ !d S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"` "d 3 rg 1?"`W ?Address0   #d 3 r"g 1?"`N^ E Instruction 0   XB $d 0DԔz %d N'g ##jJ"`h] %  kRegister File @0(0B B wL ` &d# }9 Y * 'd c BC DE F*jJ? p ` @`S" ` (d  f-g xaxa1?"` =A L U PBXB )d 0DԔ@ 3 wL  f  *d# g S x" +d HG0*1? f  ,dB  `2g 1?"` f  Am u x  Fc -dB  `7g 1?"` fC  , B  .dB  `T:g 1?"`F f  , B XB /d 0DԔ : XB 4d 0DԔ@ 3  5d  0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"` g  XB 6d 0DԔ 7d B>g ##jJ"`2  G Data Memory 0 B  8d 3 rLBg 1?"` @ Address 0    9d 3 rdFg 1?"`7   b Data_in 0    ?d C xJg 1?"`J %  _ BusW0   @d <Og ##"`K_ D ALU result 0 B * Fd S 0e0e    BC#DEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#s# @"` @.XB Gd 0DԔ] XB Hd 0DԔC] CXB Id 0DԔZSXB Jd 0DԔ@ 3 XB Kd 0DԔ4XB Ld 0DԔ   Md S 0e0e    B'CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||'@"`PXB Nd 0DԔ,P, Od <Ug ##"`   >zero0B  Pd NZg "`{ AIF/ID 0B  Qd N,^g "`{t  AID/EX 0B  Rd N,ag "`{< BEX/MEM 0B  Sd Neg "`X BMEM/WB 0B  Td <@ig ## `6  <Rd0B dB Ud <DjJ` Vd S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`i  Wd C x|mg 1?"` 0 %  ; RW0  wL  f  Zd# % Ty x" [d HG0*1? f  \dB  `og 1?"` f  Am u x  Fc ]dB  `hrg 1?"` fC  , B  ^dB  `dwg 1?"`F f  , B XB _d 0DԔC@ g C `d  0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`C S L `  J ad# 2 9 f" bd 6Gn(1`  J cd N|g ##"``  J =Ext0B ^B dd 6Do 2 ed <~g ##"`  ?Imm160B |B hd T D1?% z z  id Hg "`5 G  `RegWrite" 0 F  jd Hg "`6   ]ALUOp"0F |B kd T D1? 01  ld Hg "`5 S  _MemRead"0F |B md T DjJ? F |B od T D1?p~~  pd Hg "`5 J  `MemtoReg" 0 F |B qd T D1?S  rd Hg "`5 >  ^ALUSrc"0F |B sd T D1?z &&  td H,g "`5 H  ^RegDst"0F -F 9 X $  ud ?   f" vd 6Gn(jJ9 X   wd Nܝg ##"`9 X   I ALU Control" 0 F B xd T DjJ? $  yd  0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@c"$`   |B {d T D1? AA wL  f  |d# Qpx" }d HG0*1? f  ~dB  `g 1?"` f  Am u x  Fc dB  `\g 1?"` fC  , B  dB  `Ȫg 1?"`F f  , B  nd Hg "`) c   `MemWrite" 0 F wL  f  d# 7x" d HG0*1? f  dB  `g 1?"` f  Am u x  Fc dB  `(g 1?"` fC  , B  dB  `g 1?"`F f  , B < d 3 rHg jJ c"$` 2CY<$@ 0 g  *$` d Hg "`]   \func"0F  d C BrC[DE FA5%r[r@S" p& d Hg "`&t ?j"0F  d Hg "`V [bne"0F ^B d@ 6Dp&^B d@ 6D)p&) d HHg "` [beq"0F  d Hg "`9 pS  \Br&J"0F  d  BDCjDEFAjJj DD @S" &  d <Xg ##"`!  ?Imm260B  d C B* CDEFA1* *  @S" Md  d Hg "` ]PCSrc"0F  Xd Tg jJ"`]3 p ;Next PC( d C B CDEFAAԔ k  @,H d 0޽h ? a(___PPT10.i0F+V+D9'  = @B D' = @BA?%,( < +O%,( < +D+' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*d%(D' =-o6Bdissolve*<3<*dD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*d=%(D' =-o6Bdissolve*<3<*d=+8+0+d0 +  0L0 &')(  $ 'YA ' #"B6 rrr "'YA g  ' # lg (k0e(k0e 1?"`G Hm A S1(x$$`` ' # lDh (k0e(k0e 1?"`G O m H S0(x$$`` ' # l h (k0e(k0e 1?"`G B m O  S0(x$$`` ' # lh (k0e(k0e 1?"`G I m B  S0(x$$`` }' # lh (k0e(k0e 1?"`G P m I  S0(x$$`` {' # l$h (k0e(k0e 1?"`G W m P  S0(x$$`` y' # ll-h (k0e(k0e 1?"`G ^m W  S0(x$$`` w' # l,7h (k0e(k0e 1?"`G em ^ S0(x$$`` u' # lp(h (k0e(k0e 1?"`G lm e S0(x$$`` s' # lHh (k0e(k0e 1?"`G sm l S0(x$$`` q' # lRh (k0e(k0e1?"`G zm s Ujx$$`` & # lCh (k0e(k0e1?Yz dWriteback Signalx$$``" & # l^h (k0e(k0e1?"`m z pMemory Stage Control Signalsx$$``# & # lgh (k0e(k0e1?"`m z qExecute Stage Control Signalsx$$`` & # lqh (k0e(k0e1?z a Decode Signalx$$`` & # lh (k0e(k0e 1?"`HYA S0(x$$`` & # lth (k0e(k0e 1?"` HA Sx(x$$`` & # l|h (k0e(k0e 1?"` H A S0(x$$`` & # lh (k0e(k0e 1?"`m H A S0(x$$`` & # lh (k0e(k0e 1?"`6 HG A S0(x$$`` & # lh (k0e(k0e 1?"`)H6 A S0(x$$`` & # lh (k0e(k0e 1?"`~H)A Sx(x$$`` & # lh (k0e(k0e 1?"`H~A Sx(x$$`` & # lh (k0e(k0e1?HA Sx(x$$`` & # lh (k0e(k0e1?'HA Sj(x$$`` I% # l0h (k0e(k0e1?zYs xRegWrite ( x$$``( G% # l4h (k0e(k0e1?"` zs vMemtoReg  x$$``( E% # l@h (k0e(k0e1?"` z s vMemWrite  x$$``' C% # l8h (k0e(k0e1?"`m z s uMemReadx$$``# ?% # lj (k0e(k0e1?"`6 zG s qBnex$$``# =% # l h (k0e(k0e1?"`)z6 s qBeqx$$``% ;% # lj (k0e(k0e1?"`~z)s sALUOpx$$``& 9% # lj (k0e(k0e1?"`z~s tALUSrcx$$`` 7% # l@j (k0e(k0e1?zs vRegDst(x$$`` 5% # lH+j (k0e(k0e1?'s Z Op(x$$`` % # lh4j (k0e(k0e 1?"`O YH S0(x$$`` % # lCj (k0e(k0e 1?"` O H Sx(x$$`` % # lLj (k0e(k0e 1?"` O H S0(x$$`` % # lGj (k0e(k0e 1?"`m O H S0(x$$`` % # lx_j (k0e(k0e 1?"`6 O G H S1(x$$``  % # l|hj (k0e(k0e 1?"`)O 6 H S0(x$$``  % # lTqj (k0e(k0e 1?"`~O )H USUB(x$$``+  % # l|zj (k0e(k0e 1?"`O ~H y0=Reg(x$$`` % # l|}j (k0e(k0e1?O H Sx(x$$`` % # lj (k0e(k0e1?'O H obne(x$$`` $ # llj (k0e(k0e 1?"`6 B G O  S0(x$$`` $ # l|j (k0e(k0e 1?"`6 I G B  S0(x$$`` $ # l4j (k0e(k0e 1?"`6 P G I  S0(x$$`` $ # lj (k0e(k0e 1?"`6 W G P  S0(x$$`` $ # l8j (k0e(k0e 1?"`6 ^G W  S0(x$$`` $ # lj (k0e(k0e 1?"`6 eG ^ S0(x$$`` $ # lLj (k0e(k0e 1?"`6 lG e S0(x$$`` $ # lj (k0e(k0e 1?"`6 sG l S0(x$$`` $ # lTj (k0e(k0e 1?"`eY^ S1(x$$`` $ # lj (k0e(k0e 1?"` e^ S0(x$$`` $ # lj (k0e(k0e 1?"` e ^ S0(x$$`` $ # lj (k0e(k0e 1?"`m e ^ S0(x$$`` $ # lk (k0e(k0e 1?"`)e6 ^ S0(x$$``  $ # l k (k0e(k0e 1?"`~e)^ USLT(x$$``+  $ # lk (k0e(k0e 1?"`e~^ y1=Imm(x$$``*  $ # l!k (k0e(k0e 1?"`e^ x0=Rt(x$$``"  $ # l(+k (k0e(k0e 1?"`'e^ pslti(x$$``  $ # l,4k (k0e(k0e 1?"`W YP  S1(x$$`` $ # l=k (k0e(k0e 1?"` W P  S0(x$$`` $ # lEk (k0e(k0e 1?"` W P  S0(x$$`` $ # lTOk (k0e(k0e 1?"`m W P  S0(x$$`` $ # l@k (k0e(k0e 1?"`)W 6 P  S0(x$$`` $ # l`k (k0e(k0e 1?"`~W )P  TOR(x$$``+ $ # lDkk (k0e(k0e 1?"`W ~P  y1=Imm(x$$``* $ # l\k (k0e(k0e 1?"`W P  x0=Rt(x$$``! $ # l,~k (k0e(k0e 1?"`'W P  oori(x$$`` $ # l\k (k0e(k0e 1?"`lYe S1(x$$`` $ # l(k (k0e(k0e 1?"` le S0(x$$`` $ # lk (k0e(k0e 1?"` l e S0(x$$`` $ # l(k (k0e(k0e 1?"`m l e S0(x$$`` $ # lk (k0e(k0e 1?"`)l6 e S0(x$$`` $ # lk (k0e(k0e 1?"`~l)e UADD(x$$``+ $ # lk (k0e(k0e 1?"`l~e y1=Imm(x$$`` $ # lĮk (k0e(k0e1?le x0=Rt(x$$``  $ # lpk (k0e(k0e1?'le paddi(x$$`` !$ # ltk (k0e(k0e1?B YO  S0(x$$`` "$ # lLk (k0e(k0e 1?"` B O  Sx(x$$`` #$ # lk (k0e(k0e1? B O  S0(x$$`` $$ # lk (k0e(k0e1?m B O  S0(x$$`` &$ # lk (k0e(k0e 1?"`)B 6 O  S1(x$$`` '$ # ll (k0e(k0e 1?"`~B )O  USUB(x$$``+ ($ # ll (k0e(k0e 1?"`B ~O  y0=Reg(x$$`` )$ # ll (k0e(k0e1?B O  Sx(x$$`` *$ # l$l (k0e(k0e1?'B O  obeq(x$$`` +$ # l,l (k0e(k0e1?I YB  S0(x$$`` ,$ # l6l (k0e(k0e 1?"` I B  Sx(x$$`` -$ # l(l (k0e(k0e1? I B  S1(x$$`` .$ # lDHl (k0e(k0e1?m I B  S0(x$$`` 0$ # lRl (k0e(k0e 1?"`)I 6 B  S0(x$$`` 1$ # l`Cl (k0e(k0e 1?"`~I )B  UADD(x$$``+ 2$ # ldl (k0e(k0e 1?"`I ~B  y1=Imm(x$$`` 3$ # lml (k0e(k0e1?I B  Sx(x$$`` 4$ # l\wl (k0e(k0e1?'I B  nsw(x$$`` 5$ # ll (k0e(k0e1?P YI  S1(x$$`` 6$ # ll (k0e(k0e 1?"` P I  S1(x$$`` 7$ # ll (k0e(k0e1? P I  S0(x$$`` 8$ # l8l (k0e(k0e1?m P I  S1(x$$`` :$ # ll (k0e(k0e 1?"`)P 6 I  S0(x$$`` ;$ # ll (k0e(k0e 1?"`~P )I  UADD(x$$``+ <$ # l̸l (k0e(k0e 1?"`P ~I  y1=Imm(x$$`` =$ # ll (k0e(k0e1?P I  x0=Rt(x$$`` >$ # lLl (k0e(k0e1?'P I  nlw(x$$`` ?$ # ll (k0e(k0e 1?"` ^W  S0(x$$`` @$ # ll (k0e(k0e 1?"` sl S0(x$$`` E$ # lDl (k0e(k0e1?m ^ W  S0(x$$`` F$ # ll (k0e(k0e1?m s l S0(x$$`` H$ # lHl (k0e(k0e 1?"`~^)W  UAND(x$$``  I$ # lDm (k0e(k0e 1?"`~s)l XR-Type(x$$`` K$ # l m (k0e(k0e1?^W  x0=Rt(x$$`` L$ # lm (k0e(k0e1?sl V1=Rd(x$$`` N$ # lm (k0e(k0e1? ^ W  S0(x$$`` O$ # l@&m (k0e(k0e1? s l S0(x$$`` R$ # l(m (k0e(k0e1?^YW  S1(x$$`` S$ # l<8m (k0e(k0e 1?"`)^6 W  S0(x$$``+ T$ # ll2m (k0e(k0e 1?"`^~W  y1=Imm(x$$`` U$ # l Km (k0e(k0e1?'^W  pandi(x$$`` V$ # lTm (k0e(k0e1?sYl S1(x$$`` W$ # l\m (k0e(k0e 1?"`)s6 l S0(x$$``+ X$ # lfm (k0e(k0e 1?"`s~l y0=Reg(x$$`` Y$ # lim (k0e(k0e1?'sl XR-Type(x$$``rB a$ B 1 ?'YrB b$ B 1 ?'lYlxB c$ H 1 ?'AYArB z$ B 1 ?'W YW rB {$ B 1 ?'I YI rB |$ B 1 ?'B YB rB }$ B 1 ?'eYerB ~$ B 1 ?'P YP rB $ B 1 ?'^Y^ZB % s *1 ?'O YO rB % B 1 ?''srB % B 1 ?sArB % B 1 ?sArB % B 1 ?~s~ArB % B 1 ?)s)ArB % B 1 ?6 s6 AZB % s *1 ?G sG ArB % B 1 ?m sm ArB % B 1 ? s ArB % B 1 ? s ArB % B 1 ?sArB % B 1 ?YYzZB !& s *1 ?sZB $& s *1 ?sZB 3& s *1 ?m m sZB ;& s *1 ?s`B 6% 01 ?'sYsZB & s *1 ?'HYHxB @' H 1 ?'s'AxB T' H 1 ?YzYAZB `' s *1 ?zYzZB ' s *1 ?~z~sZB ' s *1 ?)z)sZB ' s *1 ?6 z6 sZB ' s *1 ?G zG sZB ' s *1 ? z sZB ' s *1 ? z sd $ <1?|~ $ s *{m  `  m  H $ 0޽h ? U>=UU(y___PPT10Y+D='  = @B +8  0 og@'p(  π(  p p S B CuDEFԔ uu @_   p S B CDEFjJ    @ y ~ p s *'m  `  m  dB p <DԔZ XB p 0DԔsZ sRB p s *D dB p <DjJ @ S dB  p <DjJ 3   p  0e0e    BzCDEF  jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||::z]z @S"  T  |  p T 1?5H |  p T 1?VH |  p T 1? B H  p <m ##(|  TRs0B  p <dm ##| TRt0B dB p <DjJ ` | p T 1?ZL  p <m ##"` ?Imm260B  p HPm ###jJ"`9:z bInstruction Memory4 00nB dB p <DjJ`XB p 0DԔ:XB p 0DԔ p Zm 1?"` AInc"0( 2B  p TTm 1"` <PC0B  p Tm 1"` <000B XB p 0DԔmm p S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"`m p 3 rm 1?"`sW ?Address0   p 3 r8m 1?"` ^ E Instruction 0   XB p 0DԔZzZ p N0m ##jJ"`:]  kRegister File @0(0B B wL `  p# O9 Y* !p c BC DE F*jJ? p ` @`S" ` "p  fXm xaxa1?"` =A L U PBXB #p 0DԔ@ 3 wL  f  $p# g % x" %p HG0*1? f  &pB  `Dm 1?"` f  Am u x  Fc 'pB  `xm 1?"` fC  , B  (pB  `m 1?"`F f  , B XB )p 0DԔ{ : {XB *p 0DԔ@ 3  +p  0e0e    BCDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"` g XB ,p 0DԔ -p Btm ##jJ"`  G Data Memory 0 B  .p 3 rm 1?"`Z @ Address 0    /p 3 rm 1?"` |  b Data_in 0    0p C xm 1?"`J  _ BusW0   1p <m ##"`_ D ALU result 0 B * 2p S 0e0e    BC#DEF Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||#s# @"`@XB 3p 0DԔ] XB 4p 0DԔ] XB 5p 0DԔZSXB 6p 0DԔs@ 3 sXB 7p 0DԔ_4_XB 8p 0DԔR R  9p S 0e0e    B'CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||'@"`PXB :p 0DԔP ;p <Tm ##"` n >zero0B  p N+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD+' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*p7%(D' =-o6Bdissolve*<3<*p7+8+0+p0 +J#  0L0 VN & ((  (d ( <1?~ ( s *o  `  o   ( s *|o  `x<$D  0 o   H ( 0޽h ? U>=UU( | ___PPT10\ +eD@ ' = @B D' = @BA?%,( < +O%,( < +Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(+%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(+D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(+Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(+O%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(+OD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(+ODn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(O%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(OD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(ODn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(Dn' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*(D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*(+. ) 0L0 ( @&0(  0~ 0 s *L  `  L   0 # lL 8c 8c1 ?"`'Y;<$  0 L  H 0 0޽h ? X(=^++___PPT10+..R+_qDd+' o = @B D+' = @BA?%,( < +O%,( < +D{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0;%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0;D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0;DN' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0;n%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0;nD' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0;nD' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0n%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0nD' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0nD' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0I%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0ID' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0ID' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0I%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0ID' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0ID{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0D{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0D{' =%(D#' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*0+8+0+00 +0  0 `*80(  8x 8 c $o  `  o  x 8 c $o  , o  H 8 0޽h ? 3380___PPT10.Ȝ0f  0L0 P't(  t t  Bdo "` `x o  * T|\d~ t s *o  `  o  H t 0޽h ? a(___PPT10e.+D='  = @B +;  0L0 ,,`'57x ,(  x~ x s *WB 0( 2 x  fHO 1?"` \ CA  >WB 0( 2 x Zh'M 1?"` ? B$  >EX 0( 2 x ZDq 1?"` " C >ID 0( 2  x  fq 1?"`C? $  >WB 0( 2  x Zq 1?"`C"  >EX 0( 2  x  f q 1?"`"  ?MEM 0( 2  x ZHq 1?"`v [  >IF 0( 2  x Zq 1?"`v G [  >ID 0( 2 x Z,q 1?"`\ F A  >IF 0( 2?T x x# eYB x T DjJ?w x T|q jJ?C"?Px PTime 0 HH~B x N DjJ?~B x N DjJ?~B x N DjJ?G G ~B x N DjJ?  ~B x N DjJ?  ~B x N DjJ?CC~B x N DjJ?~B x N DjJ?~B x N DjJ?@@~B x N DjJ? x # l+q jJ?S"`?j MCC10 HH x # l5q jJ?S"`?  j MCC40 HH x # lD>q jJ?S"`? Cj MCC50 HH x # lHq jJ?S"`?=j MCC60 HH  x # lRq jJ?S"`?j MCC70 HH !x # lx[q jJ?S"`?Cj MCC80 HH "x # leq jJ?S"`?Bj MCC90 HH #x # lxnq jJ?S"`?G j MCC20 HH $x # lPwq jJ?S"`?A  j MCC30 HH %x Z(qq 1?"`G v [  >EX 0( 2 &x Z|q 1?"`G \ A  >ID 0( 2 'x Z@Lq 1?"`H ? $  >IF 0( 2 (x  fPq 1?"` v [  ?MEM 0( 2 )x Zq 1?"` \ A  >EX 0( 2 *x Z0q 1?"` ? $  >ID 0( 2 +x ZHq 1?"` "  >IF 0( 2> ,x # lĒq jJ?S"`?r Z  t lw $6, 8($5) 0  HHA -x # lq jJ?S"`?[ C  w ori $4, $3, 70C HH( .x # l\q jJ?S"`?C +  ^sub $5, $2, $30CHHB /x # lаq jJ?S"`?&  xsw $2, 10($3)0C HHB 0xB Z D1?  1x Zq "`q c) H Instructions 0 Cl  ?  6x ? ,$D 0] 3x 3 rq @@jJ?"`j  _Structural Hazard Two instructions are attempting to write the register file during same cycle *`0( Nl 4x <o z C? x2 5x HjJC )\ H x 0޽h ?5x a(___PPT10e.+&&D='  = @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*xgo%(D' =-o6Bdissolve*<3<*xgoD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*7x%(D' =-o6Bdissolve*<3<*7xD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*xo%(D' =-o6Bdissolve*<3<*xoD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =-o6Bdissolve*<3<*xD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*6x%(D' =-o6Bdissolve*<3<*6x+  0L0 p'|<(  |~ | s *q  `  q  ~ | s *q  `Y q  H | 0޽h ? a(___PPT10e.+D='  = @B +0  0 p*<0(  <x < c $4q  `  q  x < c $q  , q  H < 0޽h ? 3380___PPT10.Ȝ0f  0 '<(  ~  s *q  `x q  ~  s *q  `  q  H  0޽h ? a(___PPT10i.+D='  = @B +z  0 ph'(  ~  s *q  `  q  *   q ֳֳ ?3"0e` `<$ 0 q  F y   y B  T D1?h B  T D1?66  Nq "`b c Time (cycles)*0 hh  TPq "`ynM  SProgram Execution Order 0C   Ns "`h5 a value of $2* 0 hh   T\ s "`r tsub $2, $1, $380  T v6   # oZB   s *Do]`   016 T vC ]*  # vo]V   N 1?C"?C \*   T0s 1"`vC ])  >IM 0(2B  Ns "`is YCC1*0hh  N$!s "`N5 X10*0hh~B  N D?   N*s "`  YCC2*0hh  T4s "` ~and $4, $2, $5>0CGC T 7c   # o6 >3 T 6c  # 7c   N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   ZT@s "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `   01) 6c ZB ! s *Do T v6  "#  c  ZB # s *Do]` $ 016 T vC ]*  %# vo]V  & N 1?C"?C \*  ' TGs 1"`vC ])  >IM 0(2B ( N$Ns "` 5 X10*0hh~B ) N D?   * NVs "`R \  YCC3*0hh  + T|Z "`_ o or $6, $3, $200 CGT c 7 |  ,# 6 o T c 6  -# c 7 N c S s  . c S s 4 /  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB 0 s *Do   T  }  1# c   ZB 2 s *Do } } ZB 3 s *Do  4 Nos S"`?  :  AALU"0FC ` 5 01 6 3 T 6c  6# c   7 N 1?C"?} o V  8  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  9 6c  : Zts "` o U  YReg 0(2B ;  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  <#  *  ZB = s *Do } } ZB > s *Do ` ? 01) 6c ZB @ s *Do T v6  A#  # | ZB B s *Do]` C 016 T vC ]*  D# vo]V  E N 1?C"?C \*  F T{s 1"`vC ])  >IM 0(2B G Nts "`7 v 5 X10*0hh~B H N D?   I NԊs "`   YCC4*0hh> J Ts "`   add $7, $2, $2d0CGCGGhT  7  K#  n! * T  6  L#  7 ZB M s *Do P N  6  N  6 T vC ]*  O# / o V  P N 1?C"?C \*  Q T@s 1"`vC ])  >DM 0(2B` R 01P 6  S  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB T s *Do 0 T c 6  U#   N c S s  V c S s 4 W  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB X s *Do   T  }  Y# c   ZB Z s *Do } } ZB [ s *Do  \ Nܪs S"`?  :  AALU"0FC ` ] 01 6 3 T 6c  ^#  # |  _ N 1?C"?} o V  `  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  a 6c  b Z$s "` o U  YReg 0(2B c  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  d#  *  ZB e s *Do } } ZB f s *Do ` g 01) 6c ZB h s *Do T v6  i# / ZB j s *Do]` k 016 T vC ]*  l# vo]V  m N 1?C"?C \*  n Ts 1"`vC ])  >IM 0(2B o NPs "`  5 X10*0hh~B p N D?   q Ns "` YCC6*0hhT  j r#  T  oV  s#  =  t N 1?C"? o6V N  oV  u  oV  v Zs "` oU  YReg 0(2B wB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB x s *Do  T  6  y# # | ZB z s *Do P N  6  {  6 T vC ]*  |# / o V  } N 1?C"?C \*  ~ TLs 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0 T c 6  #   N c S s   c S s 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   Ns S"`?  :  AALU"0FC `  01 6 3 T 6c  # j  N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Z,s "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do   Ns "`5 L200hh~B  N D?   Ns "`", YCC7*0hhT \ Cj # { T  oV  # \ C   N 1?C"? o6V N  oV    oV   Zs "` oU  YReg 0(2B B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB  s *Do  T  6  #  C ZB  s *Do P N  6    6 T vC ]*  # / o V   N 1?C"?C \*   Tx 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0 T c 6  # BjN c S s   c S s 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   Nx S"`?  :  AALU"0FC `  01 6   N x "`F5 L200hh~B  N D?``   Ndx "` YCC8*0hh{ T V   # z    T 1?C"?*  T  oV  # V =   N 1?S"`? o6V N  oV    oV   Zx "` oU  YReg 0(2B B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB  s *Do  ZB  s *DoA IA   N 1?C"?    T$x 1"`(   >DM 0(2B`  01I     0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @  I@ ZB „ s *DoA )A  Ä N)x "`|5 L200hh~B Ą N D?  ń N5x "`: D YCC5*0hh1 Ƅ T>x "` L   sw $8, 10($2)>0 CGC '!T  pj DŽ#   T  oV  Ȅ#  pW  Ʉ N 1?C"? o6V N  oV  ʄ  oV  ˄ ZJx "` oU  YReg 0(2B ̄B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB ̈́ s *Do  T  6  ΄#   ZB τ s *Do P N  6  Є  6 T vC ]*  ф# / o V  ҄ N 1?C"?C \*  ӄ TPx 1"`vC ])  >DM 0(2B` Ԅ 01P 6  Մ  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB ք s *Do 0 T c 6  ׄ#  # | N c S s  ؄ c S s 4 ل  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB ڄ s *Do   T  }  ۄ# c   ZB ܄ s *Do } } ZB ݄ s *Do  ބ NVx S"`?  :  AALU"0FC ` ߄ 01 6 3 T 6c  #     N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Z[x "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do T v6  #  jZB  s *Do]`  016 T vC ]*  # vo]V   N 1?C"?C \*   Tbx 1"`vC ])  >IM 0(2B  NLix "` ^5 [10/20*0hh~B  N D?xx B   ` Do?U E ,$D 0B @  f Do?U ,$D 0B @  f Do?U X,$D 0B   ` Do?U g ,$D 0H  0޽h ? a(___PPT10.j`#u+%<D&'  = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(DT' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*;%(D' =-6B'blinds(horizontal)*<3<*;D' =%(D' =%(DT' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*;y%(D' =-6B'blinds(horizontal)*<3<*;yD' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*D' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*D' =%(D' =%(DT' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*y%(D' =-6B'blinds(horizontal)*<3<*yD' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*D' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*+8+0+0 +p  0 }}'8}(  ~  s *~x  `  x  *   x ֳֳ ?3"0e`i `x<$@ 0 x  RxF       B  T D1? F  B  T D1?]]  N,x "` w fTime (in cycles)*0hh  Txx "` MInstruction Order 0C   Nx "` c a value of $2* 0 hh   Nx "`i s YCC1*0hh   Nx "`Nc X10*0hh   Nx "`   YCC2*0hh   Nx "` c X10*0hh  Nxx "`R \  YCC3*0hh  N|x "`7 v c X10*0hh  Nx "`   YCC4*0hh  N0CGCT v6  &# 6 lZB ' s *Do]` ( 016 T vC ]*  )# vo]V  * N 1?C"?C \*  + TdIz 1"`vC ])  >IM 0(2B , NQz "` \ o or $6, $3, $200 CGT v6  -# S ZB . s *Do]` / 016 T vC ]*  0# vo]V  1 N 1?C"?C \*  2 T]z 1"`vC ])  >IM 0(2B3 T 6c  3#  4 N 1?C"?} o V  5  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  6 6c  7 Zbz "` o U  YReg 0(2B 8  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  9#  *  ZB : s *Do } } ZB ; s *Do ` < 01) 6c ZB = s *Do T  6  ># zZB ? s *Do P N  6  @  6 T vC ]*  A# / o V  B N 1?C"?C \*  C Tiz 1"`vC ])  >DM 0(2B` D 01P 6  E  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB F s *Do 0 T c 6  G# zN c S s  H c S s 4 I  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB J s *Do   T  }  K# c   ZB L s *Do } } ZB M s *Do  N Npz S"`?  :  AALU"0FC ` O 01 6 T / P# mT c 6  Q# /^N c S s  R c S s 4 S  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB T s *Do   T  }  U# c   ZB V s *Do } } ZB W s *Do  X Nvz S"`?  :  AALU"0FC ` Y 01 6 T  oV  Z# iP [ N 1?C"? o6V N  oV  \  oV  ] Z{z "` oU  YReg 0(2B ^B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB _ s *Do  T  6  `# \0ZB a s *Do P N  6  b  6 T vC ]*  c# / o V  d N 1?C"?C \*  e Tz 1"`vC ])  >DM 0(2B` f 01P 6  g  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB h s *Do 0 ` i 01]o` j 01  m k N 1?C"? O(6 l  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ O(6 m Z8z "`S O(5 YReg 0(2B n  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@9 S  T  }  o# (^ZB p s *Do } } ZB q s *Do ZB r s *Do T  s Nz "`Z tsub $2, $1, $380  ZB t s *DoXJJ` u 01T vC ]*  v# X w N 1?C"?C \*  x TPz 1"`vC ])  >IM 0(2B y N 1?C"?b   z  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @b  ;T 6c  {# 6  | Z@z "` o U  YReg 0(2B }  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  ~#  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do "T c S s  # 6 u 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   Nz S"`? @  AALU"0FC `  01u  ZB  s *Do I I T  6  #  ! T vC ]*  # / o V   N 1?C"?C \*   Tz 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0   N 1?C"?T  T  oV  #  )  Zz "` oU  YReg 0(2B B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB  s *Do     `z G)H M1?"` I / @bubble0  z  }j  } j,$D 0B   ` Do?  B B  f DjJ?  B B  f DjJ?  B   ` Do? }jH  0޽h ?/ $ a(H@___PPT10 .j`#u+e#0D'  = @B Dw' = @BA?%,( < +O%,( < +D' =%(D>' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*.%(D' =-o6Bdissolve*<3<*.Dp' =A@BB BB0B%()))D' =1:Bvisible*o3>+B#style.visibility<*.j%(D' =-o6Bdissolve*<3<*.jD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(Dp' =A@BB BB0B%()))D' =1:Bvisible*o3>+B#style.visibility<*j%(D' =-o6Bdissolve*<3<*jDp' =A@BB BB0B%()))D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*Dp' =A@BB BB0B%()))D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*+8+0+0 +  0 '1(  ~  s *tz  `  z     Lz ֳֳ ?3"0e`  z  iF   BB B T D1?77B  T D1?   Nz "`P fTime (in cycles)*0hh  T0CGC T 7c   #   3 T 6c  # 7c   N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Z`z "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do T v6   #  c  ZB ! s *Do]` " 016 T vC ]*  ## vo]V  $ N 1?C"?C \*  % THz 1"`vC ])  >IM 0(2B & N~ "`  P YCC3*0hh ' N$ ~ "`Z Y  o or $6, $3, $200 CGT c 7 |  (#    T c 6  )# c 7 N c S s  * c S s 4 +  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB , s *Do   T  }  -# c   ZB . s *Do } } ZB / s *Do  0 Nx~ S"`?  :  AALU"0FC ` 1 01 6 3 T 6c  2# c   3 N 1?C"?} o V  4  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  5 6c  6 Zp~ "` o U  YReg 0(2B 7  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  8#  *  ZB 9 s *Do } } ZB : s *Do ` ; 01) 6c ZB < s *Do T v6  =#  # | ZB > s *Do]` ? 016 T vC ]*  @# vo]V  A N 1?C"?C \*  B T|~ 1"`vC ])  >IM 0(2B C N"~ "`P YCC6*0hhT  j D# k QT  oV  E#  =  F N 1?C"? o6V N  oV  G  oV  H Z-~ "` oU  YReg 0(2B IB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB J s *Do  T  6  K# # | ZB L s *Do P N  6  M  6 T vC ]*  N# / o V  O N 1?C"?C \*  P T3~ 1"`vC ])  >DM 0(2B` Q 01P 6  R  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB S s *Do 0 T c 6  T#   N c S s  U c S s 4 V  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB W s *Do   T  }  X# c   ZB Y s *Do } } ZB Z s *Do  [ N$:~ S"`?  :  AALU"0FC ` \ 01 6 3 T 6c  ]# j ^ N 1?C"?} o V  _  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  ` 6c  a Zd?~ "` o U  YReg 0(2B b  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  c#  *  ZB d s *Do } } ZB e s *Do ` f 01) 6c ZB g s *Do  h N E~ "`lvP YCC7*0hhT \ Cj i# P T  oV  j# \ C  k N 1?C"? o6V N  oV  l  oV  m ZP~ "` oU  YReg 0(2B nB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB o s *Do  T  6  p#  C ZB q s *Do P N  6  r  6 T vC ]*  s# / o V  t N 1?C"?C \*  u TV~ 1"`vC ])  >DM 0(2B` v 01P 6  w  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB x s *Do 0 T c 6  y# BjN c S s  z c S s 4 {  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB | s *Do   T  }  }# c   ZB ~ s *Do } } ZB  s *Do   Nl]~ S"`?  :  AALU"0FC `  01 6   N0d~ "`P YCC8*0hh T B j # X 9T  oV  # B c   N 1?C"? o6V N  oV    oV   Zl~ "` oU  YReg 0(2B B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB  s *Do  T  6  # BjZB  s *Do P N  6    6 T vC ]*  # / o V   N 1?C"?C \*   Tdr~ 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0   Nv~ "`RW tsub $2, $1, $380  T v6  #   ZB  s *Do]`  016 T vC ]*  # vo]V   N 1?C"?C \*   T~ 1"`vC ])  >IM 0(2B  N~ "`P YCC1*0hh  N,~ "`P B0hh  N~ "`  P YCC4*0hh8  NԤ~ "`[X Z"  add $7, $2, $2d0CGCGGhT  7  #  k w T  6  #  7 ZB  s *Do P N  6    6 T vC ]*  # / o V   N 1?C"?C \*   T̓~ 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0 T c 6  #   N c S s   c S s 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   N~ S"`?  :  AALU"0FC `  01 6 3 T 6c  #  # |   N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Z̽~ "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do T v6  # / ZB  s *Do]`  016 T vC ]*  # vo]V   N 1?C"?C \*   T~ 1"`vC ])  >IM 0(2B Œ N~ "` P YCC5*0hh+ Ì N~ "`Z Y  sw $8, 10($2)>0 CGC  Č N 1?C"? T  oV  Ō# h s ƌ Z~ "` oU  YReg 0(2B njB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB Ȍ s *Do  ZB Ɍ s *Dor   T  6  ʌ# h 2  T vC ]*  ˌ# / o V  ̌ N 1?C"?C \*  ͌ T~ 1"`vC ])  >DM 0(2B` Ό 01P 6  ό  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB Ќ s *Do 0 "T c S s  ь# h  4 Ҍ  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB ӌ s *Do   T  }  Ԍ# c   ZB Ռ s *Do } } ZB ֌ s *Do  ׌ N~ S"`?  r  AALU"0FC ` ، 01   ٌ N 1?C"?X r?  ڌ  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @X r? ;T 6c  ی# h  x  ܌ Z~ "` o U  YReg 0(2B ݌  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  ތ#  *  ZB ߌ s *Do } } ZB  s *Do `  01) 6c ZB  s *Do ZB  s *DorCC`  01   N 1?C"? q  Tp~ 1"` r >IM 0(2B6   0e0e    BVC=DE F o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||9=V=@c"$`  ,$D 06   0e0e    BVC=DE F o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||9=V=@c"$` s l ,$D 0B   ` Do? > ,$D 0B   ` Do? L,$D 0H  0޽h ? a(  ___PPT10 .j`#u+CSD '  = @B Dm ' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*+a  0 HH'_bDH(  ~  s *  `     s *  `<$D 0     B ## *w  <Rd0B jB  BDjJ G jB  BDjJ C   B ## >  TRs0B    BX ## #n  TRt0B    T ##1"` P  K Register File"0B wL `  #   *   c BC DE F*jJ? p ` @`S" `    fx xaxa1?"` =A L U PB^B  6DԔE E ^B  6DԔb &b   H< ##1"` )|  G Data Memory 0 B   C x" 1?"` )h  @ Address 0     C x,' 1?"` )hA  b Data_in 0     B* ##"` X  D ALU result 0 B ^B  6DԔ ^B  6DԔb  b ^B  6DԔE E ^B  6DԔ & ^B  6DԔ )   T,0 "`t AIF/ID 0B   T4 "`t  AID/EX 0B   Th8 "`. R  BEX/MEM 0B   T< "`&R  BMEM/WB 0B   S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`\ @   C xx@ 1?"` CO  XRw 0( 2   B> ##"`C ?Imm260B jB   BDjJ K jB " BDjJ\ K\  # TG "` {_ \RegDst 0F B $ Z D1?W X  % B0L ## &  ^ALUSrc"0F  & S 0e0e    B CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @"` )   ' C xP 1?"` C/  F ALU result 0( 2   (  0e0e    BCDE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@S"   ) BhU ##: ^RegWrite 0 F  * C xY 1?"`. D  =B 0( 2  + C x] 1?"`/ G  =B 0( 2  , C xa 1?"` G /  =A 0( 2  - C xe 1?"` G  AImm26 0( 2  . C xi 1?"` F O  XRw 0( 2 ^B / 6DԔ G  jB 0 BDjJ   1 c BC DEFԔZZ   @G )  2 c BCDEFԔ @ G b L 0 =  3#  ) x" 4 HG0*1?0 =  5B  `n 1?"`0 =  Am u x  Fc^B 6 6DԔb  b ^B 7 6DԔ   L `  J 8# < ^ f" 9 6Gn(1`  J : Ns ##"``  J =Ext0B L 0 =  ;#  ) x" < HG0*1?0 =  =B  `Px 1?"`0 =  Am u x  Fc >  B0CDEFԔ0 @"` b j ? B1 P  @ C x| 1?"` P  _ WriteData 0( 2    A C x 1?"` PO  XRw 0( 2  B c B CDEFjJ  @ _ C c B-CDEFԔ -- @ L 0 =  D# V  x" E HG0*1?0 =  FB  `؅ 1?"`0 =  Am u x  Fc G C xt 1?"`B0  G Instruction 0( 2  jB H BDjJe e B I Z D1?  J B ##  `MemtoReg" 0 F B K Z D1? 34z  9  L   ,$D 0T 0 =  M#   x" N HG0*1?0 =  OB  `8 1?"`0 =  Am u x  FcT 0 =  P#  9 x" Q HG0*1?0 =  RB  ` 1?"`0 =  Am u x  Fc`B S 0DԔ  `B T 0DԔ  Dz &c J 2 U  &J ,$D 0B V  f DfԔ?&   W s B$CDEFfԔ$q$r @c"$` &c J 2Jz F m X  m,$D 0" Y  B CGDEFfԔ GG @c"$` F mB Z  f DfԔ?  z   [  ,$D  0N   \   ] <d ##  `ForwardA" 0 F B ^ T D1? N   _   ` < ##  `ForwardB" 0 F B a T D1? H  0޽h ? a(___PPT10.i0F+!D^'  = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*8%(D' =-o6Bdissolve*<3<*8D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*L%(D' =-o6Bdissolve*<3<*LD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*8k%(D' =-o6Bdissolve*<3<*8kD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*U%(D' =-o6Bdissolve*<3<*UD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*k%(D' =-o6Bdissolve*<3<*kD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =-o6Bdissolve*<3<*XD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*[%(D' =-o6Bdissolve*<3<*[+~)  0  '(  ~  s *@  `     s *Lŀ 'Yp<$@  0   4 \ h^`   `ǀ  jJ?? m ) ,$@  0 8$0   T jJ?+ m ,$@  0  Nʀ 1?M  w ,$  0 k-Raw Hazard detected with Previous Instruction".0 2.$  NM 1?D  w,$   0 r4Raw Hazard detected with Second Previous Instruction"50 25H  0޽h ? a(##___PPT10".FCY+,D"' р = @B D!' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*DN' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*4D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*4DA' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*++0+0 ++0+0 ++0+0 +hY  0 II'afSI(  ~  s *$ۀ  `     s *$܀  `<$@ 0     B݀ ## 0i  <Rd0B jB  BDjJ G jB  BDjJ C   B ## D  TRs0B    B| ## )`  TRt0B    Tt ##1"`Pu  K Register File"0B wL `  #   *   c BC DE F*jJ? p ` @`S" `    f xaxa1?"` =A L U PB^B  6DԔ7 7 ^B  6DԔT &T   H ##1"`)n  G Data Memory 0 B   C x 1?"` )h  @ Address 0     C x 1?"` )h3  b Data_in 0     B ##"`X D ALU result 0 B ^B  6DԔ ^B  6DԔT  T ^B  6DԔ7 7 ^B  6DԔ & ^B  6DԔ )   T "`f AIF/ID 0B   Td "`f  AID/EX 0B   T "`. D BEX/MEM 0B   T` "`&D BMEM/WB 0B   S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`N F   C xX 1?"` CA  XRw 0( 2   B ##"`2(P ?Imm260B jB   BDjJ P jB " BDjJL PL B # Z D1?W X  $ Bp ## &  ^ALUSrc"0F  % S 0e0e    B CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @"`{ )   & C x% 1?"` C!  F ALU result 0( 2   ' C x) 1?"` D  =B 0( 2  ( C x' 1?"`! G  =B 0( 2  ) C x,1 1?"` G !  =A 0( 2  * C x4 1?"` G  AImm26 0( 2  + C xt8 1?"` F A  XRw 0( 2 ^B , 6DԔ G  jB - BDjJ   . c BC DEFԔZZ   @G )  / c BCDEFԔ @rG T L 0 =  0#  ) x" 1 HG0*1?0 =  2B  `< 1?"`0 =  Am u x  Fc^B 3 6DԔT  T ^B 4 6DԔ   L 0 =  8# ){ x" 9 HG0*1?0 =  :B  `(B 1?"`0 =  Am u x  Fc ;  B0CDEFԔ0 @"`T j < B1 P  = C xhF 1?"`P  _ WriteData 0( 2    > C x8K 1?"` PA  XRw 0( 2  ? c B CDEFjJ  @u Q  @ c B-CDEFԔ -- @  L 0 =  A# H  x" B HG0*1?0 =  CB  `XP 1?"`0 =  Am u x  Fc D C x,T 1?"`46  G Instruction 0( 2  jB E BDjJW W B F Z D1? G BX ##  `MemtoReg" 0 F L &c J 2 H# &J B I  f DfԔ?&   J s B$CDEFfԔ$q$r @c"$` &c J 2L F m K#  m " L  B CGDEFfԔ GG @c"$` F mB M  f DfԔ?  L  9  N#  T 0 =  O#   x" P HG0*1?0 =  QB  `_ 1?"`0 =  Am u x  FcT 0 =  R#  9 x" S HG0*1?0 =  TB  `d 1?"`0 =  Am u x  Fc`B U 0DԔ  `B V 0DԔ  z , Y W B o,$D 0 X <h ## j bForwardB$ 0 F T rT Y Y# Zr Y" Z Z G1?rT Y [ # lm 1?S"`?=3 D QForwarding Unit&0( 2  \ <q ##W  j bForwardA$ 0 F B ] T D1? r ^ c BqCJDEF1qJq[ @S" ,6 vz W  _  W+,$D 0 `  BCDE F1@c"$`  #  a  BCDE F1@c"$`   bB  BCDE F1@c"$` 6 Z cB  BCDE F1@c"$` W ZL `  J d# ^ f" e 6Gn(1`  J f N$x ##"``  J =Ext0B H  0޽h ? a(A9___PPT10.i0F+ D'  = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =-o6Bdissolve*<3<*0D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*0i%(D' =-o6Bdissolve*<3<*0iD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*W%(D' =-o6Bdissolve*<3<*WD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*i%(D' =-o6Bdissolve*<3<*iD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*_%(D' =-o6Bdissolve*<3<*_+6  0 't(  ~  s *D  `   R =<  # #"."rr=Y%      `  1?"`TpV t&Forwarded from the previous ALU result''x$$``   `0  1?"`=pTV u ForwardB = 01x$$``?   `  1?"`TV<  5Forwarded from data memory or 2nd previous ALU result,6 x$$``   `,  1?"`=VT<  u ForwardB = 10x$$``#   `  1?"`Tp }/Second ALU operand comes from the register file00x$$``    `  1?"`=Tp u ForwardB = 00x$$``?    `‚  1?"`T 5Forwarded from data memory or 2nd previous ALU result,6 x$$``    `|Ղ  1?"`=T u ForwardA = 10x$$``    `\ׂ  1?"`T t&Forwarded from the previous ALU result''x$$``    `,  1?"`=T u ForwardA = 01x$$``   `\ 1?T |.First ALU operand comes from the register file//x$$``    `` 1?=T u ForwardA = 00x$$``   ` 1?T ] Explanation  x$$``   ` 1?=T `Control Signalx$$``xB  H 1 ?=rB  B 1 ?=xB  H 1 ?=< < xB  H 1 ?==< rB  B 1 ?TTxB  H 1 ?< rB  B 1 ?=rB  B 1 ?=rB  B 1 ?TT< xB  H 1 ?=rB  B 1 ?=pprB  B 1 ?=VV\  Tx ֳֳ ?"`i =p,$@  0 ^if (IF/ID.Rs == ID/EX.Rw `" 0 and ID/EX.RegWrite) ForwardA = 01 elseif (IF/ID.Rs == EX/MEM.Rw `" 0 and EX/MEM.RegWrite) ForwardA = 10 else ForwardA = 00 if (IF/ID.Rt == ID/EX.Rw `" 0 and ID/EX.RegWrite) ForwardB = 01 elseif (IF/ID.Rt == EX/MEM.Rw `" 0 and EX/MEM.RegWrite) ForwardB = 10 else ForwardB = 00x@ dXGCGCGp      $ V$`H  0޽h ? a(^V___PPT106.i0F+a/_D ' = @B D' = @BA?%,( < +O%,( < +D ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*@D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*@D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*@D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*@D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*0D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*0+k  0 FF([x`E(   @ c B CDEFjJ  @P , A c B-CDEFԔ -- @ p~  s *@D  `     s *U ' 2<$@ 0      <V ## D <Rd0B dB  <DjJ dB  <DjJ p    < [ ##   TRs0B   < M ## ;  TRt0B    N`M ##1"` xP  K Register File"0B wL `  #  *   c BC DE F*jJ? p ` @`S" `    f` xaxa1?"` =A L U PBXB   0DԔ n  XB  0DԔ/ pS/   Bd ##1"` VFI  G Data Memory 0 B   3 rh 1?"` V_  @ Address 0     3 rM 1?"` V  b Data_in 0     <m ##"` /c  D ALU result 0 B XB  0DԔ 7 XB  0DԔ/ / XB  0DԔ F XB  0DԔ pS XB  0DԔ V    S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`) }   3 rr 1?"` p XRw 0( 2   <w ##"` B  ?Imm260B dB  <DjJs s dB   <DjJ) )  $ S 0e0e    B CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @"`V 0   % 3 r{ 1?"`c p  F ALU result 0( 2   ( 3 r 1?"` q  =B 0( 2  ) 3 r 1?"` 7  =B 0( 2  * 3 rT 1?"`d 7  =A 0( 2  + 3 r 1?"`7 d  AImm26 0( 2  , 3 r 1?"` 7  XRw 0( 2 XB - 0DԔ dB . <DjJ X6  / c BC DEFԔZZ   @S"    0 c BCDEFԔ @M / L 0 =  1# ]  o x" 2 HG0*1?0 =  3B  ` 1?"`0 =  Am u x  FcL `  J 6#  t f" 7 6Gn(1`  J 8 N ##"``  J =Ext0B L 0 =  9#  VV x" : HG0*1?0 =  ;B  ` 1?"`0 =  Am u x  Fc& <  B0CDEFԔ0 @c"$` c / d = <1m }  > 3 rT 1?"` }m  _ WriteData 0( 2    ? 3 r< 1?"` } XRw 0( 2 L 0 =  B# # Ywx" C HG0*1?0 =  DB  `x 1?"`0 =  Am u x  Fc E 3 r 1?"` w G Instruction 0( 2  dB F <DjJ2 2L 0 =  K# z j x" L HG0*1?0 =  MB  `̱ 1?"`0 =  Am u x  FcL 0 =  N# ) j x" O HG0*1?0 =  PB  ` 1?"`0 =  Am u x  Fc^B Q 6DԔ/ x/ ^B R 6DԔ x  g 0   Y2,$@ 0 ZWhen lw reaches the MEM stage add will be in the ALU stage sub will be in the Decode stage~[ <g g gTL F m V#  " W  B CGDEFfԔ GG @c"$` F mB X  f DfԔ?  Ul   w  ,$D  0 [ BdŅ ## z  g ForwardA = 10$0F  k # BCrDEFAfԔr.r @S" /  L &c J 2 S#  J B T  f DfԔ?&   U s B$CDEFfԔ$q$r @c"$` &c J 2Ul l  xl  ,$D 0 ^ Bp˅ ##  g ForwardB = 01$0F  l # BCrDEFfԔr.r @S" l  l V  tV ,$D  0@ p<  pj # b T х "`p<   lw $4,100($9)Fcg c  d Tׅ "` p <  l add $7,$5,$6D cgc e T܅ "`p<   sub $8,$4,$7Z cgcg m  BCrDEFԔr.r @S"   V  n  BCrDEFԔr.r @S"   ! r 0  P'0 p,$@  0 )ForwardA = 10 Forward data from MEM stage. 2 "' s 0P  P Yp,$@  0 /ForwardB = 01 Forward ALU result from ALU stage. 2" "(XB 5 0DԔ j6 XB 4 0DԔ/ j7 0 H  0޽h ? a($$___PPT10$.i0F+ D`$'  = @B D$' = @BA?%,( < +O%,( < +D ' =%(D< ' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =-o6Bdissolve*<3<*&D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*&5%(D' =-o6Bdissolve*<3<*&5D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*5D%(D' =-o6Bdissolve*<3<*5DD ' =%(D< ' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*g%(D' =-o6Bdissolve*<3<*gD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*g;%(D' =-o6Bdissolve*<3<*g;D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*g;[%(D' =-o6Bdissolve*<3<*g;[D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D' =-o6Bdissolve*<3<*tD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*r%(D' =-o6Bdissolve*<3<*rD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*r*%(D' =-o6Bdissolve*<3<*r*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*w%(D' =-o6Bdissolve*<3<*wD' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*s%(D' =-o6Bdissolve*<3<*sD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*s0%(D' =-o6Bdissolve*<3<*s0D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =-o6Bdissolve*<3<*x+0  0 *@0(  @x @ c $  `   x @ c $  ,   H @ 0޽h ? 3380___PPT10.Ȝ0f*  0 (Ǡ0 (     B "` `     s *  `m<$@ 0    l }j Ơ}j,$D 0  N 1?C"?=   T 1"`  >DM 0(2BB  T D1?l l0B  T D1?M% }%   N "`^s  c Time (cycles)*0 hh   T "` f I Program Order 0CT j  #  j~B   N D?j~B   N D?F F j~B   N D?  j~B  N D?h h j~B  N D?j~B  N D?j~B  N D?&&j~B  N D?j  N "` s  YCC2*0hh  Td+ "`Z\ &  ~and $4, $2, $5>0CGC T 7c   #   | 3 T 6c  # 7c   N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Z6 "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `   01) 6c ZB ! s *Do T v6  "#  c  ZB # s *Do]` $ 016 T vC ]*  %# vo]V  & N 1?C"?C \*  ' T> 1"`vC ])  >IF 0(2B ( NA "`D N s  YCC3*0hh  * T0N "`Z   o or $6, $3, $200 CGT c 7 |  +#  T c 6  ,# c 7 N c S s  - c S s 4 .  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB / s *Do   T  }  0# c   ZB 1 s *Do } } ZB 2 s *Do  3 NW S"`?  :  AALU"0FC ` 4 01 6 3 T 6c  5# c   6 N 1?C"?} o V  7  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  8 6c  9 Z\ "` o U  YReg 0(2B :  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  ;#  *  ZB < s *Do } } ZB = s *Do ` > 01) 6c ZB ? s *Do T v6  @#  # | ZB A s *Do]` B 016 T vC ]*  C# vo]V  D N 1?C"?C \*  E Tc 1"`vC ])  >IF 0(2B F NDj "`s  YCC6*0hhT  oV  G# \ C  H N 1?C"? o6V N  oV  I  oV  J Z4i "` oU  YReg 0(2B KB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB L s *Do  T  6  M#   ZB N s *Do P N  6  O  6 T vC ]*  P# / o V  Q N 1?C"?C \*  R Tw 1"`vC ])  >DM 0(2B` S 01P 6  T  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB U s *Do 0 T c 6  V# iN c S s  W c S s 4 X  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB Y s *Do   T  }  Z# c   ZB [ s *Do } } ZB \ s *Do  ] Nh~ S"`?  :  AALU"0FC ` ^ 01 6  _ N "`s  YCC7*0hhT  oV  `#    a N 1?C"? o6V N  oV  b  oV  c Z "` oU  YReg 0(2B dB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB e s *Do  T  6  f# miZB g s *Do P N  6  h  6 T vC ]*  i# / o V  j N 1?C"?C \*  k T, 1"`vC ])  >DM 0(2B` l 01P 6  m  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB n s *Do 0  o N "`s  YCC8*0hhT  oV  p# lIw0 q N 1?C"? o6V N  oV  r  oV  s Z@ "` oU  YReg 0(2B tB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB u s *Do  ' w T "`R    lw $2, 20($1)80   T v6  x# k  ZB y s *Do]` z 016 T vC ]*  {# vo]V  | N 1?C"?C \*  } T 1"`vC ])  >IF 0(2B ~ N캇 "`[es  YCC1*0hh  N$Ç "`  s  YCC4*0hh8  N͇ "`[J add $7, $2, $2d0CGCGGZB  s *Do Z Z `  01      0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ Y ZB  s *Do Z Z T c 6  #  #  | N c S s   c S s 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   N܇ S"`?  :  AALU"0FC `  01 6 3 T 6c  #     N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Z "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do T v6  #   iZB  s *Do]`  016 T vC ]*  # vo]V   N 1?C"?C \*   T 1"`vC ])  >IF 0(2B  N4 "`, 6s  YCC5*0hhT  oV  #     N 1?C"? o6V N  oV    oV   Z@ "` oU  YReg 0(2B B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB  s *Do  T  6  #  # | ZB  s *Do P N  6    6 T vC ]*  # / o V   N 1?C"?C \*   TD 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0 T c 6  #   N c S s   c S s 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   N| S"`?  :  AALU"0FC `  01 6 3 T 6c  #  i  N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   Zt "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB   s *Do 6 à  0e0e    BVC=DE F o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||9=V=@c"$` Z  ,$D 0B Ġ  ` Do? | ,$D  06 Š  0e0e    BwC<DE F o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||w<:<@c"$` Z m ,$D 0 Ǡ 6, jJ 6 ,$@ 0 k9However, load can forward data to second next instruction:(2:H  0޽h ? a(KC___PPT10#.` +BD'  = @B Dz' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*n%(D' =-o6Bdissolve*<3<*nD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*Ơ%(D' =-o6Bdissolve*<3<*ƠDY' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*Š%(D' =-o6Bdissolve*<3<*ŠD+' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Ǡ%(D' =-o6Bdissolve*<3<*ǠD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*à%(D' =-o6Bdissolve*<3<*àD' =%(D' =%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*Ġ%(D' =-6B'blinds(horizontal)*<3<*Ġ+8+0+Ǡ0 +  0  (<(  ~  s *"  `   ~  s *`# 'Y   H  0޽h ? a(___PPT10i.C+D='  = @B +  0 Q|I|(0 {(   x  f- Gn5H<1?"` A h  @bubble0  Wu8 H PB  HPB  T 1?C"?U   Z) 1"`  >DM 0(2BB B Z D1? BB  Z D1?B PB   T8 "`7   c Time (cycles)*0 hh   ZA "`H  I Program Order 0CT j  #  :~B   N D?j~B   N D?F F j~B   N D?  j~B  N D?h h j~B  N D?j~B  N D?j~B  N D?&&j~B  N D?j  TF "`  YCC2*0hh3 T 6c  #  @ ,   N 1?C"?} o V    0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c   6c   ZR "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do   TW "`\ f  YCC3*0hh    TXc "`E o or $6, $3, $200 CGT c 6  !# @ , N c S s  " c S s 4 #  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB $ s *Do   T  }  %# c   ZB & s *Do } } ZB ' s *Do  ( No S"`?  :  AALU"0FC ` ) 01 6 `B * 0Do m mf + 61 ( T vC ]*  ,#   - N 1?C"?C \*  . T{ 1"`vC ])  >IM 0(2B / T "`   YCC6*0hh 0 T$ "`, 6  YCC7*0hh 1 T( "`   YCC8*0hh' 3 T, "` D   lw $2, 20($1)80   T v6  4#  , ZB 5 s *Do]` 6 016 T vC ]*  7# vo]V  8 N 1?C"?C \*  9 T 1"`vC ])  >IM 0(2B : T, "`s }  YCC1*0hh ; T "`  YCC4*0hh`B < 0Do f = 61 + ,  >  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @  `B ? 0Do 3 T 6c  @# *  A N 1?C"?} o V  B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  C 6c  D Z@Á "` o U  YReg 0(2B E  0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  F#  *  ZB G s *Do } } ZB H s *Do ` I 01) 6c ZB J s *Do  K Tȁ "`D N  YCC5*0hhT  oV  L# ( 3  M N 1?C"? o6V N  oV  N  oV  O Zԁ "` oU  YReg 0(2B PB  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB Q s *Do  T cj R#  T  6  S# CjZB T s *Do P N  6  U  6 T vC ]*  V# / o V  W N 1?C"?C \*  X Tځ 1"`vC ])  >DM 0(2B` Y 01P 6  Z  0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB [ s *Do 0 T  oV  \# BJc1 ] N 1?C"? o6V N  oV  ^  oV  _ Z "` oU  YReg 0(2B `B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB a s *Do  T c 6  b# jN c S s  c c S s 4 d  0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB e s *Do   T  }  f# c   ZB g s *Do } } ZB h s *Do  i N S"`?  :  AALU"0FC ` j 01 6  k T "` EM  ~and $4, $2, $5>0CGCT v6  l#  J @ ZB m s *Do]` n 016 T vC ]*  o# vo]V  p N 1?C"?C \*  q T 1"`vC ])  >IM 0(2BwT    y#  I  3 T 6c  z#   { N 1?C"?} o V  |  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @} o V 5N 6c  } 6c  ~ ZD "` o U  YReg 0(2B   0e0e    B9C9DE F 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||99@  T  }  #  *  ZB  s *Do } } ZB  s *Do `  01) 6c ZB  s *Do T  oV  #     N 1?C"? o6V N  oV    oV   Z| "` oU  YReg 0(2B B  0e0e    BsCDEF 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||ss @ o6V ZB  s *Do  T c 6  #   N c S s   c S s 4   0e0e    BC DE F* 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| :t: @`S"  S s ZB  s *Do   T  }  # c   ZB  s *Do } } ZB  s *Do   N S"`?  :  AALU"0FC `  01 6 T  6  #   ZB  s *Do P N  6    6 T vC ]*  # / o V   N 1?C"?C \*   T 1"`vC ])  >DM 0(2B`  01P 6    0e0e    B=CDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||  W=W @ RP ZB  s *Do 0 `  01 ~  s *  `     s * 'Y <$D 0   6   0e0e    BVC=DE F o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||9=V=@c"$`  ( ,$@ 0B   ` Do? 1,$D 0H  0޽h ?x a(___PPT10.S+wjDQ'  = @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =A@BBBB0B%(D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*xD' =0l9 BBBB*<3<*x)?Dm' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*+8+0+x0 +S  0 ii(@   h(  l # d # d,$D 0`B  0D IJO    0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @c"$` ~O T  v #  #J l"  <Gn(jJ v  T0( ##"` v L Main Control$ 0 F T "  #  " B  Z Do?    0e0e    BtCDEF o 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| tt @S" ] " B  Z Do? m  B  Z Do? m  B  Z Do? m " " T z  #   m d  TD, 1"`z   @EX"0F   T0 1"`z  ?M"0F   T/ 1"`z @WB"0F ~  s *5  `     <7 ##{S <Rd0B dB  <DjJn dB  <DjJj  <; ## TRs0B   <@ ##J TRt0B    N|D ##jJ"`= _ K Register File"0B wL `  # 2 -*   c BC DE F*jJ? p ` @`S" `    fH xaxa1?"` =A L U PBXB   0DԔ! 3 !XB  0DԔ>M>  BlM ##jJ"`P@X G Data Memory 0 B   3 rQ 1?"`Pn @ Address 0     3 rU 1?"`P b Data_in 0     <TY ##"`)r D ALU result 0 B XB  0DԔ~ XB  0DԔ>->XB  0DԔ!@!XB  0DԔMXB  0DԔP  S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`8  3 r` 1?"`j+ XRw 0( 2   <Xe ##"`Y ?Imm260B dB  <DjJx=dB   <DjJ5x=5 # S 0e0e    B CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @"`e P  $ 3 ri 1?"`rj  F ALU result 0( 2   % 3 rm 1?"` k =B 0( 2  & 3 rq 1?"`  n  =B 0( 2  ' 3 ru 1?"`s n  =A 0( 2  ( 3 ry 1?"` n s AImm26 0( 2  ) 3 r} 1?"` m + XRw 0( 2 XB * 0DԔn dB + <DjJw  , c BC DEFԔZZ   @n P  - c BCDEFԔ @\n 3 >L 0 =  .# lP x" / HG0*1?0 =  0B  `X 1?"`0 =  Am u x  FcXB 1 0DԔ<] <XB 2 0DԔ] L 0 =  3# Pex" 4 HG0*1?0 =  5B  ` 1?"`0 =  Am u x  Fc 6  B0CDEFԔ0 @"`r>d 7 <1|w 8 3 r쌋 1?"`w| _ WriteData 0( 2    9 3 rP 1?"`w+ XRw 0( 2  : c B CDEFjJ  @_;  ; c B-CDEFԔ -- @} L 0 =  <# 2wx" = HG0*1?0 =  >B  `$ 1?"`0 =  Am u x  Fc ? 3 r 1?"` ~ G Instruction 0( 2  dB @ <DjJ?~?L &c J 2 C#  qB D  f DԔ?&   E s B$CDEFԔ$q$r @c"$` &c J 2B H # l DԔ?\L  \L 0 =  J#  _ x" K HG0*1?0 =  LB  ` 1?"`0 =  Am u x  FcL 0 =  M# 8 _ x" N HG0*1?0 =  OB  `H 1?"`0 =  Am u x  Fc^B P 6DԔ<  <^B Q 6DԔ  L `  J _#  f" ` 6Gn(1`  J a N ##"``  J =Ext0B   Tx 1"` ~f  @Op"0F j  N jJ? pMB,$D 0 The pipelined is stalled by Making PCWrite =  0 and IF/IDWrite =  0 and introducing a bubble into the ID/EX control signalsn~0( 2#  ,#?   BG CGDEFAAԔG G GG @"`M l '  ' ,$D 0  Z  "`'  aPCWrite$0F    0e0e    BCDE F 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @c"$`  l i /  i / ,$D 0   Z "` 9/  l IF/IDWrite$ 0 F    0e0e    BCDE F 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@c"$` Pi / l  I   I,$D 0B  Z Do?N T 0 =  #  M Ix"  HG0*1?0 =  B  `ċ 1?"`0 =  Am u x  Fc  Tɋ  "`= ]  DBubble"0F   B̋ ## j   A0$0F B  Z Do? 3 M 4 B B T D? z z   BTы ##0ejJ"`d NInstruction Memory 0B   3 r`Nj 1?"`md @ Address 0   XB  0DԔ   3 r؋ 1?"` >PC 0( 2 XB  0DԔd  3 rH݋ 1?"` }$ E Instruction 0    l > >,$D 0 [  BCDE FjJ@c"$` ) J  W B ##T  bForwardA$ 0 F  S Blۋ ##B    bForwardB$ 0 F B X T D?0 0 2  Y c BqCJDEF5%qJq[ @S" 0 , 2  \  BCDE FjJ@c"$` ! >  ]B  BCDE FjJ@c"$` 6z  ^B  BCDE FjJ@c"$`  /T rT Y T# - ! " U Z GjJ?rT Y9 V # l 1?S"`?=3 D o-Forwarding, Hazard Detection, and Stall Unit&.0(  .    BCDE F5%@c"$` ! t   Tx "` R  _MemRead"0F    Np jJ?2 ,,$D 0 WBubble clears control signals0( 2H  0޽h ? a(QI___PPT10).i0F++qpD'  = @B DH' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*+p+0+0 ++0+0 +  0 @(?(  ~  s *  `      B(* "` `x   <(` $`5  TSN gֳgֳ ? YH,$ 0 }Fast code: No Stalls lw $10, 0($1) lw $11, 0($2) lw $13, 0($4) lw $14, 0($5) add $12, $10, $11 sw $12, 0($3) sub $15, $13, $14 sw $14, 0($6)" 2 2w AEAEAEAEAEAEAEAt "#  `$`B  T DjJ?z  ,$@ 0B  T DjJ?\  ,$D 0H  0޽h ? a(  ___PPT10 .rv+D$ '  = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*+8+0+0 +  0L0 P(`(    s *i  `x   0 $`~  s *j  `   H  0޽h ? a(___PPT10e.+D='  = @B +  0L0 `(<(  ~  s *$s  `   ~  s *s  `m   H  0޽h ? a(___PPT10e.+D='  = @B +  0 *D0(  Dx D c $~  `   x D c $|  ,   H D 0޽h ? 33___PPT10i.Ȝ0f+D='  = @B +  0 (`(  ~  s *$  `     s *  `x   0 $`H  0޽h ? a(___PPT10i.@+D='  = @B +K  0 4J,J)a(  I(    H "`/W Fzero = 1" 0 F   H ##"` `O  WForwarding from MEM stage"0( B ~  s *8  `     <N ## G )  <Rd0B dB  <DjJ    <N ##] j TRs0B   < ##B  TRt0B   NT ##jJ"` P 5  K Register File"0B XB  0DԔ zXB " 0DԔCXB # 0DԔ ' S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`  d b  ) < ##"`  ?Imm260B dB * <DjJY YdB + <DjJ   , S 0e0e    B CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @"`R  [8   HP  ( 3 r8 1?"`2  XRw 0( 2  - 3 r8 1?"`  F ALU result 0( 2   . 3 rxō 1?"` 1 =B 0( 2  / 3 r$ɍ 1?"`Cy  =B 0( 2  0 3 rD΍ 1?"`IC =A 0( 2  1 3 rύ 1?"`CI AImm26 0( 2  2 3 rԍ 1?"`y C  XRw 0( 2 XB 3 0DԔ  dB 4 <DjJ C  6 c BCDEFԔ @2zL 0 =  7# B  x" 8 HG0*1?0 =  9B  `,ٍ 1?"`0 =  Am u x  FcXB : 0DԔ CXB ; 0DԔ C L 0 =  E#  d \ x" F HG0*1?0 =  GB  `ލ 1?"`0 =  Am u x  Fc H 3 rˍ 1?"`T\  G Instruction 0( 2  dB I <DjJ d  L &c J 2 J#  r B K  f DԔ?&   L s B$CDEFԔ$q$r @c"$` &c J 2B M  f DԔ?2 I 2 L 0 =  N# _J x" O HG0*1?0 =  PB  ` 1?"`0 =  Am u x  FcL 0 =  Q#  J y x" R HG0*1?0 =  SB  ` 1?"`0 =  Am u x  FcXB T 0DԔP I XB U 0DԔ P I L `  J V# S]f" W 6Gn(1`  J X ND ##"``  J =Ext0B  k B ##0ejJ"`U_  NInstruction Memory 0B  l 3 r 1?"`C   @ Address 0   XB m 0DԔSXB o 0DԔ   p 3 rD 1?"`J E Instruction 0     Z 1?"`XD AInc"0( 2B   T 1"`wb  <PC0B   T 1"`w <000B XB  0DԔ?DT?  S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"`?:Xz wL  f  # b x"  HG0*1? f  B  ` 1?"` f  Am u x  Fc B  ` 1?"` fC  , B  B  ` 1?"`F f  , B   Np "`) _beq = 1"0F   C BC0DEFAAԔ00 @ ` B  Z DjJ?%  RB  s *D}wL ` # zi *  c BC DE F*jJ? p ` @`S" `   f xaxa1?"` =A L U PB  3 r# 1?"`sC ?NPC 0( 2   3 r' 1?"`sT ?NPC 0( 2 XB  0DԔ  XB  0DԔ?C?XB  0DԔ?{?  c BCADEFAAԔArA @"`G  C BpCaDEFAAԔp=paa @]   # B CDEFA  @S"   N "`^v a PCSrc = 1" 0 F   C BC>DE FAAԔ>>@_jB  BDo8XB  0DԔ8{8  N0 "`|=M ?Imm160B   T4 jJ"`z} ;Next PC(  B8 ##"`!%  QBranch Target Address 0B )  60= jJ Y 7label: lw $8, ($7) . . . beq $5, $6, label next1 next2< 21 ,a e3,  HC "`6   CSUB$0F G  6HH jJ =3Y By the time the branch instruction reaches the ALU stage, next1 instruction is in the decode stage and next2 instruction is being fetched< 2:3(3RB @ s *D  B0N , abeq $5,$6,labelc   BHS  P  Anext1 g3  B(W  Anext2 g3H  0޽h ? a(___PPT10i.i0F+D='  = @B +3J  0 EE)4 rD(  ~  s *V  `        ֳֳ ?3"0e` ``   A8 9 9@  9  9  B`  "`I  gbeq $5,$6,label"0c   N,d  "`D   bNext1 # bubble80c g3  Ni  "`   bNext2 # bubble80c g3  Nn  "`1 %  t label: branch target instruction8!0 cg  T 1? C"?    B`s  "`m   ?ALU 0(2B   6Xw  >t  >IF 0(2Bf   6 >t `   0  ZB  s *D t8 8 ZB  s *D  Q  ZB  s *D h Q h   B{  "`Q   YReg 0(2Br  B Q  ZB  s *D   ZB  s *D  ZB  s *D   ZB  s *D    ZB  s *D  h h `  0   ZB  s *D   e  ZB  s *D  h e h f  6 e   + T 1? > ?cc1 0( 2 , T 1? %   ?cc2 0( 2 - T4 1? 9   ?cc3 0( 2 2 64  e  >IF 0(2Bf 3 6 e ` 4 0   ZB 5 s *D  8 8  ^ T 1? C"? ( H  _ 6D  Q D   >IF 0(2Bf ` 6 Q ( H ` a 0  ( H ZB b s *D  ZB c s *D  e ZB d s *D  e  e Bh  "`m L  YReg 0(2Br f B e ( H ZB g s *D  ( ( ZB h s *D  H H ZB i s *D  ( H ZB j s *D  ZB k s *D  ` l 0  (  H `  0  ZB  s *D 8 >8 `  0 ( H ZB  s *D  Q `  0  ZB  s *D  8 e 8 `  0   9%@  9  9 . T윎 1?K  ?cc4 0( 2 / T 1?_ ?cc5 0( 2 0 T 1?s ?cc6 0( 2ZB 6 s *D  x  ZB 7 s *D h x h ZB = s *D  ZB > s *Dh h ` ? 0 3 ZB @ s *D3  ZB A s *D3h h ZB m s *D x ZB n s *D x ` o 0( 3H ZB p s *D  ZB q s *D3  ` s 0( GH ZB t s *D  ZB x s *DG  T   y# S0 F  z H GHIF 0(2Bf  6x  9`  0 49ZB  s *D  ZB  s *D4y y ZB  s *D4    BHώ "`9   YReg 0(2Br  B 9ZB  s *D=99ZB  s *D 9`  0 G9f  6 9`  0/ [9ZB  s *Dw w ZB  s *D  ZB  s *DGw w ZB  s *DG  ZB  s *D / `  0 F ZB  s *D4 4 ZB  s *DF4 4 `  0- Z ZB  s *D4 -4 ZB  s *DZ4 4 T   # f    Hَ GH+B#style.visibility<*%(D' =-o6Bdissolve*<3<*+  0  )b(  ~  s *$  `      B "` `x   H  0޽h ? a(___PPT10i. U+D='  = @B +nU  0 T}T*k @S(   ~   s *  `      6< jJ  Y >PCSrc signal resets the IF/ID register when a branch is taken ?(2?:P8 &p/   &p/ lB   <DjJ 6    <P ##Z TRs0B    < ##ve TRt0B    N ##jJ"` %  K Register File"0B `B   0DԔ YrB   BDo" `B   0DԔ6"   S 0e0e    BCDE F jJ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@"`-R    N "`$)L ?Imm260B lB   <DjJIIlB   <DjJ"   S 0e0e    B CDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| @"` C qN     68    3 r$% 1?"`2  XRw 0( 2    3 r) 1?"`  F ALU result 0( 2     3 r- 1?"` 1 =B 0( 2    3 rH1 1?"`"  i  =B 0( 2    3 r4 1?"`" "  =A 0( 2    3 r8 1?"`"  9 AImm16 0( 2    3 r4< 1?"`" i  XRw 0( 2 `B   0DԔ 6lB   <DjJ " T 0 =   #  2 x"   HG0*1?0 =   B  `? 1?"`0 =  Am u x  Fc`B   0DԔ( " `B !  0DԔ( " T 0 =  " # L x" #  HG0*1?0 =  $ B  `C 1?"`0 =  Am u x  Fc %  3 rtG 1?"`wL  G Instruction 0( 2  lB &  <DjJ  T &c J 2 ' # \ b B (   f DԔ?&   )  s B$CDEFԔ$q$r @c"$` &c J 2B *   f DԔ? " " T 0 =  + #  O* x" ,  HG0*1?0 =  - B  `L 1?"`0 =  Am u x  FcT 0 =  . #  * i x" /  HG0*1?0 =  0 B  `Q 1?"`0 =  Am u x  Fc`B 1  0DԔ  `B 2  0DԔ   6  B\U ##0ejJ"`EO  NInstruction Memory 0B  7  3 rY 1?"`3  @ Address 0   `B 8  0DԔv`B 9  0DԔoo :  3 rh] 1?"`mv E Instruction 0    ;  Za 1?"`{g AInc"0( 2B  <  Te 1"`gR  <PC0B  =  Th 1"`g <000B `B >  0DԔg/w/" ?  S 0e0e    BCzDE F Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||z@"`]/{jT  f  @ # v6R x" A  HG0*1? f  B B  `l 1?"` f  Am u x  Fc C B  `8r 1?"` fC  , B  D B  `u 1?"`F f  , B T ` I # YY* J  c BC DE F*jJ? p ` @`S" ` K   fpx xaxa1?"` =A L U PB M  3 r | 1?"`wc ?NPC 0( 2 `B N  0DԔ6oo`B O  0DԔ/0 Q  s BCADEFԔArA @"`j U  S BC>DE FԔ>>@   b   BC^DE FAAԔ^@"`   c   BC^DE FԔ^@"` l  e  C BCDEFAAԔ'' @ "YT `  J 3 #  #_ f" 4  6Gn(1`  J 5  Np ##"``  J =Ext0B  g  c BC[DE FAAo[@  " j  C BCDE FAAԔ@ k  N@ "` )  ?Imm160B  m  # BCXDEFADX @S"  iw Y  Tx jJ"`c  ;Next PC( T  N "`  ]PCSrc"0F lB s  <D w t  N| "`@@ Creset"0F lB u  <DjJ   v  B ##jJ"`>.  G Data Memory 0 B  w  3 r 1?"`>}5 @ Address 0    x  3 rD 1?"`>q} b Data_in 0    y  < ##"`m9 D ALU result 0 B `B z  0DԔ.`B {  0DԔwwT 0 =  | # ,x" }  HG0*1?0 =  ~ B  `8 1?"`0 =  Am u x  Fcl   <1Cj    3 r 1?"`C _ WriteData 0( 2      3 r̮ 1?"`j   XRw 0( 2 `B   0DԔ>`B   0DԔ>    BCDEFAAԔ{{ @"`f    B C0DEFAAԔ  00 @"` w2    C B CDEFAAjJ  @ % B    C B CDEFAAԔ    @Swp/    C BTC4DEFAAԔTT44 @&z     < ## j  <Rd0B Q   < jJ"` =YB Next PC block is moved to the Instruction Decode stage Advantage: Branch and jump delay is reduced to one cycle Drawback: Added delay in decode stage => longer cycle #H   0޽h ? a(___PPT10i.i0F+D='  = @B ++  0 ** *=R(@)(  (x ( c $KN  `  N  pB <( HD1yy\  1( c B=CPDE FAA>P=P=@ oyL ` (# L * ( c BC DE F*jJ? p ` @`S" ` (  f 3N xaxa1?"` ?A D D nBj ( BjJ^B ( 6D> s ^B  ( 6D>?sL ?XB  (@ 0DjJ;hl  ( T0xO "` 630(2 L  o R  $(#  {`B  ( 0D> %  % ZB  (B s *DjJ9 f R  ( N3O "` o  630(2 L 0 =  (#  x" ( HG0*1?0 =  (B  `0 O 1?"`0 =  w 0 m u x 1N F0 F( F0 F(c ( TO "`i/ 3NPC 2XB (@ 0DjJ1;h ( TD3 "` 630(2  (  BCDE F>@"`_L  ( TO "`   9Imm16(2  ( T4O "` iE  5Imm26 2XB '(@ 0DjJB   (( TO "` _ + 630(2 L    (# B$ r" ( BG0*jJ   ( TO "`   7Ext(2 *(  BCDE FjJ@"`> 4 XB +(@ 0D1 > k b  ,( T8O "`   54(2  -( TO "` E )   Qmsb(2 XB .(@ 0DjJb > k  /( T O "` E  626(2 pB 0( HDԔ$  jr 3( B1jr 4( B1p 2( HZG[D1 7(@ c BDCDEF1DDrr @S"  8( c BDCDEF1DDrr @c"$` [d2 9( <1j ;(  BqCqDE FA1qqq@S"  O [  =(  BqCqDE F1qqq@S"   >(  BqCqDE F1qqq@S" Y @(@  BqCqDE F1qqq@c"$` = A( TpO "`{ Sbeq(2 B( TO "` |6  Sbne(2 C( T@O "` |  7j(2 D( TO "`R R  :zero(2 F( ZO jJ"` H O  5=(2^B H( 6D>O ^B I( 6D>O yy J( TO "`  PBusA(2 K( TO "`r PBusB(2^B L( 6D1==  M( TO "` UPCSrc(2 N( TPO "`"_  MBranch or Jump Target Address 2^B O( 6D1yy Q( 6O    9 Forwarded 2 H ( 0޽h ? 33___PPT10i.:+D='  = @B +  0 *H0(  Hx H c $  `   x H c $‘  ,   H H 0޽h ? 33___PPT10i.Ȝ0f+D='  = @B +  0L0 P)Z(  ~  s * ȑ  `     s *h  `m   * $ `@H  0޽h ? a(___PPT10e.+D='  = @B +j  0L0 me`) (  ~  s *8  `x   ~   s *  `   F V    ,Y>   0 O "`V  .label: . . . add $t2,$t3,$t4 beq $s1,$s0,label\0 0`dd0 0 /c   s *\ O "`   L Delay Slot& 0( F `B   0DԔ3 3   0 "`  label: . . . beq $s1,$s0,labelJ0 0`dd0 c   s * "`  Uadd $t2,$t3,$t4*0(gH  0޽h ? a(___PPT10e.+D='  = @B +  0 )(  ~  s *  `      B "` p<$@  0   H  0޽h ? a(___PPT10. @:s+1;[DZ' = @B D' = @BA?%,( < +O%,( < +DL' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<* D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<* D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*S%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*SD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*SD' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*S%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*SD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*SD' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*2D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*2+&  0 %%):D0 I%(  ~  s *  `      B "`'Y   #8 p DY 5 C BCqDE FAAԔqq@ `@ F   9F  "   ` G0*f1?F  )  3 r 1?S"`?F   Ymux 0( 2  3 r8 1?"`0D W  >PC 0( 2B   Z DԔ?J J? B  Z DԔ?P PF  " 3 r| 1?"`)   ]!Branch Target & Prediction Buffer "0 "@  )  B ) HT J    # S)    T 1?J  B   T D1?J ppB  T D1?J B  T D1?J U U B  T D1?J  B  T D1?J = = B  T D1?J  B  T D1?J # # B  T D1?J  T J   # )   T 1?J  ~B  N D1?J pp~B  N D1?J ~B  N D1?J U U ~B  N D1?J  ~B  N D1?J = = ~B  N D1?J  ~B  N D1?J # # ~B  N D1?J  HT J   ##  ) S $ T 1?J  B % T D1?J ppB & T D1?J B ' T D1?J U U B ( T D1?J  B ) T D1?J = = B * T D1?J  B + T D1?J # # B , T D1?J   - 3 rh! 1?"` L  XAddresses of Recent Branches 0 x . 3 r & 1?"`j   LTarget Addresses 0 xB 0 Z Do?T  1 3 r* 1?"`\ m m  Vlow-order bits used as index0  3 # lh. 1?"`m   H Predict Bits 0 x    3 r<2 f1?"`   ?Inc 0( 2 8 C BdCDEF AAԔd^djj @ J9 N F   : " ; Z G0*f1?F   < # l5 1?S"`?F   == 0( 2B =  f DԔ?J9 J > C BCxDEF AAԔ$xx**N @p ? # B7CDEFA7 @S" t ` A C B CDEFAjJ @S" J9 C # l: 1?"` ~ e predict_taken"0   H  0޽h ? a(___PPT10i.2+D='  = @B +  0 ) b(   ~   s *dC  `       B(D "` m   H   0޽h ? a(___PPT10i.!+D='  = @B +;  0 RJ) (     BJ "` `m   ~  s *K  `   PL M Pj #  JpB  T D1?=@ }@ 2  C  BedCENGgH 0RIQ1? ed}ed}`T}`TJ2 B C  BedCENGgH 0RIQ1? ed}ed}`T}`T @ o T dF  # ` M2   T 1?dF    TN 1?"`dc  G Not Taken" 0  T P t   # 7 [ 2   T 1?P t     `4W 1?"`P sc  K Predict Taken"0 T P t  # a  2  T 1?P t    `|[ 1?"`P sc  K Predict Taken"0 B B T D1?  T dF  # 7 [M2  T 1?dF   T` 1?"`dc  G Not Taken" 0  B  T D1?W W B  T D1?=& }& B  T D1?= } B  T D1?=}  # lXe 1?"`M ]  CTaken"0( 2   # l j 1?"` :F  CTaken"0( 2   # lh 1?"`C   CTaken"0( 2   # lhp 1?"`j CTaken"0( 2   # l t 1?"`=c `  G Not Taken" 0( 2    # lw 1?"`= `@  G Not Taken" 0( 2    # l4{ 1?"` *  G Not Taken" 0( 2     # l, 1?"` P G Not Taken" 0( 2  H  0޽h ?/  a(___PPT10i.3p!+D='  = @B +  0 *LJ(  Lr L S   `    L  6 "` `m   H L 0޽h ? 33___PPT10i.hn+D='  = @B +f 0 p$ v(      `D ~~1 ? P^K    p   01 ?{   H  0rllC ? X(=^80___PPT10.Rpf 0 $ v(      `\J ~~1 ? P^K    p   01 ?{   H  0rllC ? X(=^80___PPT10.R f 0 $ v(      `O ~~1 ? P^K    p   01 ?{   H  0rllC ? X(=^80___PPT10.R f 0 P&4v(  4 4  `4U ~~1 ? P^K    p 4  01 ?{   H 4 0rllC ? X(=^80___PPT10.RrX . 1p{q[,];:C0VKWH 6K@Z|8PS9WǏ '.#NSIV0CJ   q  X i`A [  t B 8 w {@O[8_a q 7U tQQ }z1Oh+'0T `h  Pipelined Processor DesignDr. Muhamed MudawarMuhamed Mudawar722Microsoft Office PowerPoint@t=@ И@м~vG0g  L  y--$xx--'--$<<--'@BComic Sans MS-. .2 *Pipelined Processor Design."System8-@"Arial-. 2 GBCOE 308.-@"Arial-. '2 P2Computer Architecture.-@"Arial-. '2 Z.Prof. Muhamed Mudawar.-@"Arial-. 62 f'Computer Engineering Department.-@"Arial-. L2 o.King Fahd University of Petroleum and Minerals.-ne՜.+,0\    On-screen ShowKFUPM; DArialComic Sans MS WingdingsTimes New RomanSymbol Courier New Arial NarrowDefault DesignPipelined Processor DesignPresentation OutlinePipelining ExampleSequential Laundry#Pipelined Laundry: Start Load ASAP#Serial Execution versus PipeliningSynchronous PipelinePipeline Performance Next . . .Single-Cycle DatapathPipelined DatapathCorrected Pipelined Datapath#Graphically Representing PipelinesInstructionTime Diagram&Single-Cycle vs Pipelined Performance'Single-Cycle versus Pipelined contd Next . . .Control SignalsControl Signals contdPipelined ControlPipelined Control Cont'dPipelining Summary Next . . .Pipeline HazardsStructural HazardsResolving Structural Hazards Next . . . Data HazardsExample of a RAW Data Hazard"Solution 1: Stalling the Pipeline"Solution 2: Forwarding ALU ResultImplementing ForwardingRAW Hazard DetectionForwarding UnitForwarding Control SignalsForwarding Example Next . . . Load Delay Detecting RAW Hazard after Load!Stall the Pipeline for one Cycle Hazard Detection and Stall UnitCompiler SchedulingWrite After Read WAR HazardWrite After Write WAW Hazard Next . . .Control HazardsBranch Delay = 2 Clock Cycles2-Cycle Branch DelayReducing the Delay of BranchesModified DatapathDetails of Next PC Next . . .Branch Hazard AlternativesDelayed BranchZero-Delayed Branch$Branch Target and Prediction BufferDynamic Branch Prediction2-bit Prediction SchemePipeline Hazards SummaryShl  Fonts UsedDesign Template Slide Titles; Custom Shows'_0Muhamed MudawarMuhamed Mudawar  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDFGHIJKLNOPQRSTVWXYZ[\mRoot EntrydO)Current UserUSummaryInformation(EPowerPoint Document(DocumentSummaryInformation8M