Les 8: Datapad & Controle “A man with a watch knows what time it is. A man with two watches is never sure.” Wet van Segal. ca8-1 Inhoud • • • • • • Sequentiële logica Het datapad Eén-cyclus-per-instructiemachine Meer-cycli-per-instructiemachine Microcodering RISC vs. CISC ca8-2 Sequentiële logica i1 … ik Combinatorische functie f1 … fm s1 … sn klok ca8-3 S-R Latch (NOR) S Q S R Q R Q A B A+B 0 0 1 1 0 1 0 1 1 0 0 0 Q ca8-4 S-R Latch S Q Q R Qt 0 0 0 0 1 1 1 1 S 0 0 1 1 0 0 1 1 R 0 1 0 1 0 1 0 1 Qt+1 0 0 1 1 0 1 ca8-5 S-R Latch (NAND) S Q S R Q R Q A B AB 0 0 1 1 0 1 0 1 1 1 1 0 Q ca8-6 Geklokte S-R Latch S Q clk Q R ca8-7 D-Latch D Q clk Q D Q C Q ca8-8 D-Latch D C Q ca8-9 Sequentiële logica i1 … ik Combinatorische functie f1 … fm Q1 D1 s1 … Qn Dn sn klok ca8-10 Master-Slave D-Latch (D-Flip Flop) D Q D Q C Q C Q D Q Flip-flop: D Q ca8-11 D-Flip-Flop D C Q setup-tijd hold tijd ca8-12 J Q J-K Flip-Flop K Q J S Q K R Q Qt 0 0 0 0 1 1 1 1 J K 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 Qt+1 0 0 1 1 1 0 1 0 Flip-flop: JK ca8-13 T Q T Flip-Flop Q 1 S Q clk R Q 1 Flip-flop: T ca8-14 Register clk a31 d30 d31 a30 a0 d0 D Q D Q D Q Q Q Q w ca8-15 clk w Reg 1 Din Reg 2 … Multiplexer 1 Reg 1 Reg n-1 1 schrijfpoort 2 leespoorten Registerbestand Dout1 Reg 2 Multiplexer 2 d decoder Reg 0 Dout2 ca8-16 Inhoud • • • • • • Sequentiële logica Het datapad Eén-cyclus-per-instructiemachine Meer-cycli-per-instructiemachine Microcodering RISC vs. CISC ca8-17 Von Neumann-machine Fysiek zicht BUS adres data controle CVE Controle controle klok cache registers Geheugen Geheugen:bau-cellen RAM Invoer/Uitvoer ca8-18 De klok ca8-19 Voorbeelden Merk Type Freq (GHz) Intel Core i7-2600K 3,4 Intel Core i7-2630QM 2,0 Intel Xeon E3-1220L 2,2 AMD Phenom II X6 1090T BE 3,2 AMD E2-3000M 1,8 AMD Atlon 64 FX-76 3,2 IBM Power7 795 Turbo Core 4,25 ARM Cortex-A15 1-1,5 ca8-20 Processor Data-geheugen Datapad Controle-eenheid Instructie-geheugen ca8-21 Laden van een instructie + 4 PC leesadres geheugen instructie ca8-22 ALU-instructie: RRR Alu regW ra rb Registerbestand rd Din b.v. : add r1, r2, r3 ca8-23 ALU-instructie: RRI Alu regW ra rb Registerbestand rd Din letterlijke operand b.v. : addi r1, 10, r3 ca8-24 MEM-instructie add MemW MemR ra rb Registerbestand rd Din geheugen regW offset b.v. : ld r1, 10(r3) ca8-25 controletransferinstructie cmpge ra conditie Registerbestand 1 0 0 4 b.v.: brge r1,16(pc) add + PC Offset ca8-26 Inhoud • • • • • • Sequentiële logica Het datapad Eén cyclus-per-instructiemachine Meer cycli-per-instructiemachine Microcodering RISC vs. CISC ca8-27 Eén cyclus-perinstructiemachine 4 0 Cmp + Data geheugen rb offset RegW Res Registerbestand Alu Din MemR rd MemW instructiegeheugen S1 PC S2 0 decoder ra PC Controle-eenheid ca8-28 Controletabel add 0 1 1 0 001 xxx 0 0 1 addi 0 1 1 1 001 xxx 0 0 1 load 0 1 1 1 001 xxx 0 1 0 store 0 0 1 1 001 xxx 1 0 x jump 1 0 0 1 001 111 0 0 1 brge 1 0 0 1 001 110 0 0 1 ca8-29 Controle Add 000 0110001xxx001 Addi 001 0111001xxx001 Load 010 0111001xxx010 Store 011 0011001xxx10x Jump 100 1001001111001 Brge 101 1001001110001 ca8-30 Inhoud • • • • • • Sequentiële logica Het datapad Eén-cyclus-per-instructiemachine Meer-cycli-per-instructiemachine Microcodering RISC vs. CISC ca8-31 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand Meer-cycli-per-instructiemachine cond C Controle-eenheid ca8-32 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand Instructie: eerste cyclus Cond C Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0 PCW=1 memW=0 RegW=0 IRW=0 ca8-33 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand Instructie: tweede cyclus Cond C S1=0 S2=2 Alu=add memW=0 RegW=0 IRW=0 PCW=0 ca8-34 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand ADD: derde cyclus Cond C S1=2 S2=0 Alu=add memW=0 RegW=0 IRW=0 PCW=0 ca8-35 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand ADDI: derde cyclus Cond C S1=2 S2=2 Alu=add memW=0 RegW=0 IRW=0 PCW=0 ca8-36 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand ADD/ADDI: vierde cyclus Cond C C=1 RegW=1 memW=0 IRW=0 PCW=0 ca8-37 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand LOAD/STORE: derde cyclus Cond C S1=2 S2=2 Alu=add memW=0 RegW=0 IRW=0 PCW=0 ca8-38 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand STORE: vierde cyclus Cond C Mar=1 MemW=1 RegW=0 IRW=0 PCW=0 ca8-39 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand LOAD: vierde cyclus Cond C Mar=1 MemR=1 memW=0 RegW=0 IRW=0 PCW=0 ca8-40 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand LOAD: vijfde cyclus Cond C C=0 RegW=1 memW=0 IRW=0 PCW=0 ca8-41 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand JUMP: derde cyclus Cond C PCSrc=0 PCW=1 Cond=0 memW=0 RegW=0 IRW=0 ca8-42 rb A Din 4 B S2 PCSrc offset R Alu rd S1 RegW LMDR 0 IRW MemR decoder IR geheugen MemW Mar PCW PC ra Registerbestand BRGE: derde cyclus Cond C S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 memW=0 RegW=0 IRW=0 ca8-43 Samenvatting controlesignalen Cyclus 1 Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1 (4) Cyclus 2 S1=0 S2=2 Alu=add (1) S1=2 S1=2 S2=0 S2=2 Cyclus 3 Alu=add Alu=add (1) (1) Cyclus 4 Cyclus 5 C=1 RegW=1 (3) PCSrc=0 S1=2 S2=2 Alu=add PCW=1 (1) Cond=0 (4) S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 (4) Mar=1 Mar=1 (1) memW=0 RegW=0 MemW=1 MemR=1 IRW=0 PCW=0 (2) (1) (2) RegW=0 IRW=0 PCW=0 C=0 RegW=1 (3) (3) memW=0 IRW=0 PCW=0 (4) memW=0 RegW=0 IRW=0 ca8-44 Samenvatting controlesignalen 0 1 S1=0 S2=2 Alu=add (1) Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1 (4) 10 2 3 S1=2 S2=0 Alu=add (1) S1=2 S2=2 Alu=add (1) 5 S1=2 S2=2 Alu=add (1) 6 4 load store MemW=1 Mar=1 (2) S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1(4) 7 MemR=1 Mar=1 (1) C=1 RegW=1 (3) 8 9 PCSrc=0 PCW=1 Cond=0 (4) C=0 RegW=1 (3) ca8-45 Controle-uitgangen uitgang bijhorende toestanden PCW 0 1 Cond 0 Mar 0 MemW 0 1 MemR 0 IRW 0 1 2 3 4 5 6 7 8 9 10 9 10 6 2 3 4 5 6 7 7 8 9 10 7 2 3 C 4 5 6 4 7 8 9 10 8 RegW 0 1 2 3 4 5 6 7 8 9 10 S1 0 1 2 3 5 10 S2 0 1 2 3 5 10 Alu 0 1 2 3 5 10 PCSrc 0 9 10 ca8-46 1 1 X 0 00 01 001 1 0 0 0 1 0 X X 0 0 0 X 0 00 10 001 X 0 0 1 0 0 X X 0 0 0 X 0 10 00 001 X 0 0 1 1 0 X X 0 0 0 X 0 10 10 001 X 0 1 0 0 0 X X 0 0 0 1 1 XX XX 000 X 0 1 0 1 0 X X 0 0 0 X 0 10 10 001 X 0 1 1 0 0 X 1 1 0 0 X 0 XX XX 000 X 0 1 1 1 0 X 1 0 1 0 X 0 XX XX 000 X 1 0 0 0 0 X X 0 0 0 0 1 XX XX 000 X 1 0 0 1 1 0 X 0 0 0 X 0 XX XX 000 0 1 0 1 0 1 1 X 0 0 0 X 0 01 00 100 0 PCSrc 0 0 Alu 1 0 S2 0 0 0 0 S1 toestand PCW Cond Mar MemW MemR IRW C RegW Controle-uitgangen ca8-47 Volgende-toestanduitgangen toestand 0 0 0 0 voorwaarde volgende toestand 0 0 0 1 0 0 0 1 op = add 0 0 1 0 0 0 0 1 op = addi 0 0 1 1 0 0 0 1 op = load/store 0 1 0 1 0 0 0 1 op = jump 1 0 0 1 0 0 0 1 op = brge 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 op = store 0 1 1 0 0 1 0 1 op = load 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 ca8-48 output input Op3..Op0 S3..S0 IR toestand PCW Cond Mar MemW MemR IRW C RegW S1 S2 Alu PCSrc NS3 NS2 NS1 NS0 Controleeenheid ca8-49 ROM-Implementatie ROM1 16x16 bits ROM2 256x4 bits toestand IR ca8-50 Inhoud van ROM1 0000 1000 1100 0001 0011 0001 0000 0000 0010 0010 0010 0000 0000 1000 0010 0011 0000 0000 1010 0100 0100 0000 0011 0101 0000 0000 1010 0010 0110 0011 0000 0000 0000 0111 0010 1000 0000 0000 1000 0000 0001 0000 0000 1001 1000 0000 0000 0000 1010 1001 0000 0100 1000 1011 0000 0000 0000 0000 1100 0000 0000 0000 0000 1101 0000 0000 0000 0000 1110 0000 0000 0000 0000 1111 0000 0000 0000 0000 0000 0000 ca8-51 Inhoud • • • • • • Sequentiële logica Het datapad Eén cyclus-per-instructiemachine Meer cycli-per-instructiemachine Microcodering RISC vs. CISC ca8-52 Sequencer-implementatie ROM1 16x18 bits 1 toestand + 0 Tabel 1 16x4 bits Tabel 2 IR ca8-53 Samenvatting controlesignalen 0 00 1 01 S1=0 S2=2 Alu=add (1) Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=plus PCSrc=1 Cond=0, PCW=1 (4) 2 4 S1=2 S2=0 Alu=add (1) S1=2 S2=2 Alu=add (1) 00 00 6 10 S1=2 S2=2 Alu=add (1) 7 3 5 RegW=1 C=1 (3) RegW=1 C=1 (3) 11 11 11 S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 (4) load store 11 Mar=1 MemW=1 (1) 11 8 00 MemR=1 Mar=1 (1) 9 11 10 PCSrc=0 11 PCW=1 Cond=0 (4) C=0 RegW=1 (3) ca8-54 Microcode controle + datapad 1 ALU μPC A microcode Registers C B jump tabel 1 jump tabel 2 temp jump tabel 3 PC mar geheugen mdr tekenuitb IR ca8-55 Microcodeprogramma μPC 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D Label Fetch LdSt Brge Jump Add Addi Load ALU S1 ADD ADD S1 ADD ADD PC A A PC A ADD S1 Wb2 Store S2 Store2 S2 A MDR Dest ExtIR Const JCond Mbusy Const PC 4 Jump1 IR MAR Word Jump2 LT IR PC Word True B C True IR C Word True Mbusy C True B MDR Mbusy True Opcode LD ST ADD ADDI BRGE JUMP Jump Table 1 LdSt LdSt Add Addi Brge Jump Adr Fetch Mem RW MAdr PC MDest Regs IR RR Fetch Fetch Fetch Wb2 Load WF3 RW MAR Fetch Store2 WW Fetch MDR WF2 MAR Jump Table 2 Load Store ca8-56 Onderbrekingen en excepties Nieuwe PC 0 1 S1=0 S2=2 Alu=add (1) Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=plus PCSrc=1 Cond=0, PCW=1 (4) Nieuwe PC 10 5 2 3 S1=2 S2=0 Alu=add (1) S1=2 S2=2 Alu=add (1) S1=2 S2=2 Alu=add (1) overflow 6 4 load store Mar=1 MemW=1 (2) S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 (4) 7 Mar=1 MemR=1 (1) C=1 RegW=1 (3) 8 9 PCSrc=0 PCW=1 Cond=0 (4) C=0 RegW=1 (3) Nieuwe PC Nieuwe PC ca8-57 Inhoud • • • • • • Sequentiële logica Het datapad Eén cyclus-per-instructiemachine Meer cycli-per-instructiemachine Microcodering RISC vs. CISC ca8-58 Evolutie van instructiesets Single Accumulator (EDSAC 1950) Accumulator + Index Registers (Manchester Mark I, IBM 700 series 1953) Separation of Programming Model from Implementation High-level Language Based (B5000 1963) Concept of a Family (IBM 360 1964) General Purpose Register Machines Complex Instruction Sets (Vax, Intel 432 1977-80) Load/Store Architecture (CDC 6600, Cray 1 1963-76) RISC (Mips,SPARC,HP-PA,IBM RS6000, . . .1987) ca8-59 Instructiegebruik Instructie aandeel Toewijzing 47 If 23 Call 15 Lus 6 Goto 3 Andere 7 ca8-60 Complexiteit Toewijzing Lok. var Parameters 0 - 22 41 1 80 17 19 2 15 20 15 3 3 14 9 4 2 8 7 20 8 ≥5 0 ca8-61 Strafverhouding uitvoeringstijd machinetaal uitvoeringstijd hoge-niveautaal Processor . Strafverhouding Berkeley RISC II 0.90 Motorola M68000 0.34 C is een alternatief voor assembler ca8-62 Kenmerken • Voornamelijk instructies die ‘echt’ nodig zijn • Vooral instructies die effectief gebruikt worden, eenvoudig decodeerbaar • Groot aantal registers, RRRmachinemodel • Geen complexe adresseermodes ca8-63 Eenvoudige decodering instructies: vaste lengte + gealigneerd 31 25 20 15 opcode D S1 opcode B5 S1 opcode D/B5/M5 S1 opcode B5/M5 S1 opcode opcode 0 subopcode subopcode S2 immediate immediate subopcode vector D26 D S1 op sfu crs/crd S2 32-bit loads minder efficiënt ca8-64 Sparc Registervensters Niveau 1 %l0-%l7 Niveau 2 %o0-%o7 %i0-%i7 %l0-%l7 Niveau 3 %o0-%o7 %i0-%i7 %l0-%l7 %o0-%o7 2-32 vensters 40-520 registers %g0-%g7 %g0-%g7 %g0-%g7 ca8-65 ARM Thumb ARM State (T=0) 32-bit ARM-instructies Conditionele uitvoering 16 registers RRR-instructies Default toestand bij opstarten Thumb State (T=1) 16-bit Thumb-instructies Niet-conditioneel 8 registers RR-instructies Kleine letterlijke operandi Tijdens uitvoering geëxpandeerd naar ARMinstructies 30% compacter dan ARM-code 40% meer instructies nodig: 40% trager Goed voor niet-kritische code ca8-66 Processorfabrikanten • • • • • • • • SUN: Sparc [COMPAQ (Nu Intel): Alpha-processor] HP: PA-RISC Freescale + IBM: PowerPC MIPS: MIPS Intel+HP: Itanium (VLIW) Intel: IA32 / x86-64 (CISC) AMD: IA32 / x86-64 (CISC) ca8-67 Pauze ca8-68