680 likes | 773 Views
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. Inhoud. Sequentiële logica Het datapad Een-cyclus-per-instructiemachine Meer-cycli-per-instructiemachine Microcodering RISC vs. CISC. s 1. …. s n. klok.
E N D
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.
Inhoud • Sequentiële logica • Het datapad • Een-cyclus-per-instructiemachine • Meer-cycli-per-instructiemachine • Microcodering • RISC vs. CISC
s1 … sn klok Sequentiële logica i1 f1 Combinatorische functie … … ik fm
S-R Latch (NOR) S S Q R Q R Q A B A+B 0 0 1 0 1 0 1 0 0 1 1 0 Q
S-R Latch Qt S R Qt+1 S 0 0 0 0 0 0 1 0 01 01 01 1- 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 - Q Q R
S-R Latch (NAND) S S Q R Q R Q A B AB 0 0 1 0 1 1 1 0 1 1 1 0 Q
Geklokte S-R Latch S Q clk Q R
D-Latch D Q clk Q D Q C Q
D-Latch D C Q
Q1 D1 s1 … Qn Dn sn klok Sequentiële logica i1 f1 Combinatorische functie … … ik fm
D Q Q Master-Slave D-Latch(D-Flip Flop) D Q D Q C Q C Q Flip-flop: D
D-Flip-Flop D C Q setup-tijd hold tijd
Qt J K Qt+1 0 0 0 0 0 0 1 0 01 01 01 11 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 J-K Flip-Flop J Q K Q J S Q R Q K Flip-flop: JK
Q T Q T Flip-Flop 1 S Q clk R Q 1 Flip-flop: T
Register a31 a0 d31 d30 a30 d0 clk D Q D Q D Q Q Q Q w
clk Registerbestand w Reg 1 Reg 0 Reg 1 d Dout1 decoder Reg 2 Multiplexer 1 … Din Reg 2 Reg n-1 1 schrijfpoort 2 leespoorten Dout2 Multiplexer 2
Inhoud • Sequentiële logica • Het datapad • Een-cyclus-per-instructiemachine • Meer-cycli-per-instructiemachine • Microcodering • RISC vs. CISC
BUS Von Neumann-machineFysiek zicht BUS adres adres CVE Controle controle cache data data klok klok controle controle ALU ALU registers registers Geheugen Geheugen:bau-cellen RAM Invoer/Uitvoer Invoer/Uitvoer
De klok http://smoothspan.wordpress.com/2007/09/06/a-picture-of-the-multicore-crisis/
Processor Data-geheugen Datapad Controle-eenheid Instructie-geheugen
Laden van een instructie + 4 PC geheugen leesadres instructie
ALU-instructie: RRR Alu regW ra Register- bestand rb rd Din b.v. : add r1, r2, r3
ALU-instructie: RRI Alu regW ra Register- bestand rb rd Din letterlijke operand b.v. : addi r1, 10, r3
MEM-instructie MemW MemR add ra Register- bestand rb geheugen rd Din regW offset b.v. : ld r1, 10(r3)
controletransferinstructie cmpge ra Register- bestand conditie 1 0 0 4 add b.v.: brge r1,16(pc) PC + Offset
Inhoud • Sequentiële logica • Het datapad • Een cyclus-per-instructiemachine • Meer cycli-per-instructiemachine • Microcodering • RISC vs. CISC
Eén cyclus-per-instructiemachine 0 Cmp Data geheugen 4 + instructie- geheugen ra PC Register- bestand rb 0 S1 rd decoder Res Alu Din MemW MemR offset S2 RegW PC Controle-eenheid
Controletabel RegW S1 MemR PC S2 Alu MemW Res Cmp 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
0110001xxx001 0111001xxx001 0111001xxx010 0011001xxx10x 1001001111001 1001001110001 Controle Add 000 Addi 001 Load 010 Store 011 Jump 100 Brge 101
Inhoud • Sequentiële logica • Het datapad • Een-cyclus-per-instructiemachine • Meer-cycli-per-instructiemachine • Microcodering • RISC vs. CISC
Meer-cycli-per-instructiemachine ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C cond Controle-eenheid
Instructie: eerste cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1
Instructie: tweede cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond S1=0 S2=2 Alu=add
ADD: derde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond S1=2 S2=0 Alu=add
ADDI: derde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond S1=2 S2=2 Alu=add
ADD/ADDI: vierde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond C=1 RegW=1
LOAD/STORE: derde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond S1=2 S2=2 Alu=add
STORE: vierde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond Mar=1 MemW=1
LOAD: vierde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond Mar=1 MemR=1
LOAD: vijfde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond C=0 RegW=1
JUMP: derde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond PCSrc=0 PCW=1 Cond=0
BRGE: derde cyclus ra 0 PC IR Register- bestand geheugen rb A R S1 rd decoder B LMDR Din 4 PCSrc offset Alu S2 PCW Mar MemR RegW MemW IRW C Cond S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1
Samenvatting controlesignalen Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1 Cyclus 1 S1=0 S2=2 Alu=add Cyclus 2 S1=2 S2=0 Alu=add S1=2 S2=2 Alu=add S1=2 S2=2 Alu=add PCSrc=0 PCW=1 Cond=0 S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 Cyclus 3 C=1 RegW=1 Mar=1 MemW=1 Mar=1 MemR=1 Cyclus 4 C=0 RegW=1 Cyclus 5
Samenvatting controlesignalen 0 1 Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1 S1=0 S2=2 Alu=add Load/store brge 10 S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1 addi 5 add S1=2 S2=2 Alu=add 2 3 S1=2 S2=0 Alu=add S1=2 S2=2 Alu=add load jump store 6 7 Mar=1 MemW=1 Mar=1 MemR=1 4 C=1 RegW=1 9 PCSrc=0 PCW=1 Cond=0 8 C=0 RegW=1
Controle-uitgangen uitgang bijhorende toestanden PCW 0 9 10 Cond 0 9 10 Mar 0 6 7 MemW 6 MemR 0 7 IRW 0 C 4 8 RegW 4 8 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
PCW Cond Mar MemW MemR IRW C RegW S1 S2 Alu PCSrc Controle-uitgangen toestand 0 0 0 0 1 0 0 0 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 010 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
Volgende-toestanduitgangen toestand voorwaarde volgende toestand 0 0 0 0 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 1 op = store 0 1 1 0 0 1 0 1 op = load 0 1 1 1 0 1 0 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
Controle-eenheid PCW Cond Mar MemW MemR IRW C RegW S1 S2 Alu PCSrc NS3 NS2 NS1 NS0 output input Op3..Op0 S3..S0 IR toestand
ROM-Implementatie ROM1 16x16 bits ROM2 256x4 bits toestand IR