Chapter One Introduction to Pipelined Processors Principle of Designing Pipeline Processors (Design Problems of Pipeline Processors) Internal Data Forwarding and Register Tagging Internal Forwarding and Register Tagging • Internal Forwarding: It is replacing unnecessary memory accesses by register-toregister transfers. • Register Tagging: It is the use of tagged registers for exploiting concurrent activities among multiple ALUs. Internal Forwarding • Memory access is slower than register-toregister operations. • Performance can be enhanced by eliminating unnecessary memory accesses Internal Forwarding • This concept can be explored in 3 directions: 1. Store – Load Forwarding 2. Load – Load Forwarding 3. Store – Store Forwarding Store – Load Forwarding Load – Load Forwarding Store – Store Forwarding Register Tagging Example : IBM Model 91 : Floating Point Execution Unit Example : IBM Model 91-FPU • The floating point execution unit consists of : – Data registers – Transfer paths – Floating Point Adder Unit – Multiply-Divide Unit – Reservation stations – Common Data Bus Example : IBM Model 91-FPU • There are 3 reservation stations for adder named A1, A2 and A3 and 2 for multipliers named M1 and M2. • Each station has the source & sink registers and their tag & control fields • The stations hold operands for next execution. Example : IBM Model 91-FPU • 3 store data buffers(SDBs) and 4 floating point registers (FLRs) are tagged • Busy bits in FLR indicates the dependence of instructions in subsequent execution • Common Data Bus(CDB) is to transfer operands Example : IBM Model 91-FPU • There are 11 units to supply information to CDB: 6 FLBs, 3 adders & 2 multiply/divide unit • Tags for these stations are : Unit Tag Unit Tag FLB1 FLB2 FLB3 0001 0010 0011 ADD1 ADD2 ADD3 1010 1011 1100 FLB4 0100 M1 1000 FLB5 0101 M2 1001 FLB6 0110 Example : IBM Model 91-FPU • Internal forwarding can be achieved with tagging scheme on CDB. • Example: • Let F refers to FLR and FLBi stands for ith FLB and their contents be (F) and (FLBi) • Consider instruction sequence ADD F,FLB1 F (F) + (FLB1) MPY F,FLB2 F (F) x (FLB2) Example : IBM Model 91-FPU • During addition : – Busy bit of F is set to 1 – Contents of F and FLB1 is sent to adder A1 – Tag of F is set to 1010 (tag of adder) F Busy Bit = 1 Tag=1010 Storage Bus Instruction Unit 6 5 Floating Point Buffers (FLB) 4 Control 3 2 Floating Point Operand Stack(FLOS) Busy Bit = 1 Tag=1010 Tags 1 Decoder Tag Sink Tag Sink 1010 F Tag Tag 0001 Source Source FLB1 CTRL CTRL CTRL Tag Sink Tag Sink Adder Tag Tag Source CTRL Source CTRL Multiplier (Common Data Bus) Store 3 data buffers 2 (SDB) 1 Example : IBM Model 91-FPU • Meantime, the decode of MPY reveals F is busy, then – F should set tag of M1 as 1010 (Tag of adder) – F should change its tag to 1000 (Tag of Multiplier) – Send content of FLB2 to M1 F Busy Bit = 1 Tag=1000 Storage Bus Instruction Unit 6 5 Floating Point Buffers (FLB) 4 Control 3 2 Floating Point Operand Stack(FLOS) Busy Bit = 1 Tag=1000 Tags 1 Decoder Tag Sink Tag Source Tag Sink Tag Source Tag Sink Tag Source CTRL CTRL CTRL 1000 F 0010 Tag Sink Tag Adder FLB2 CTRL Source CTRL Multiplier (Common Data Bus) Store 3 data buffers 2 (SDB) 1 Example : IBM Model 91-FPU • When addition is done, CDB finds that the result should be sent to M1 • Multiplication is done when both operands are available Hazard Detection and Resolution Hazard Detection and Resolution • Hazards are caused by resource usage conflicts among various instructions • They are triggered by inter-instruction dependencies Terminologies: • Resource Objects: set of working registers, memory locations and special flags Hazard Detection and Resolution • Data Objects: Content of resource objects • Each Instruction can be considered as a mapping from a set of data objects to a set of data objects. • Domain D(I) : set of resource of objects whose data objects may affect the execution of instruction I. Hazard Detection and Resolution • Range R(I): set of resource objects whose data objects may be modified by the execution of instruction I • Instruction reads from its domain and writes in its range Hazard Detection and Resolution • Consider execution of instructions I and J, and J appears immediately after I. • There are 3 types of data dependent hazards: 1. RAW (Read After Write) 2. WAW(Write After Write) 3. WAR (Write After Write) RAW (Read After Write) • The necessary condition for this hazard is R( I ) D( J ) RAW (Read After Write) • Example: I1 : LOAD r1,a I2 : ADD r2,r1 • I2 cannot be correctly executed until r1 is loaded • Thus I2 is RAW dependent on I1 WAW(Write After Write) • The necessary condition is R( I ) R( J ) WAW(Write After Write) • Example I1 : MUL r1, r2 I2 : ADD r1,r4 • Here I1 and I2 writes to same destination and hence they are said to be WAW dependent. WAR(Write After Read) • The necessary condition is D( I ) R( J ) WAR(Write After Read) • • • • Example: I1 : MUL r1,r2 I2 : ADD r2,r3 Here I2 has r2 as destination while I1 uses it as source and hence they are WAR dependent Hazard Detection and Resolution • Hazards can be detected in fetch stage by comparing domain and range. • Once detected, there are two methods: 1. Generate a warning signal to prevent hazard 2. Allow incoming instruction through pipe and distribute detection to all pipeline stages.