1 TDT4160 Datamaskiner Grunnkurs 2011 Gunnar Tufte
Ein slags Top-down av pensum 2 Kva ønskjer me? Har eit høgnivåspråk JAVA (forenkla til Integer Java) Ønskjer ei maskin å køyre program på EIT program: Assambly) Bryr oss ikkje med OS-ting (traps, korutiner osv) Må definere ISA Insruksjonsformat Minnemodell Instruksjonsset Maskin: Må ha ein Mikroarkitektur Lage ein prosessorarkitektur Støtte instruksjonar: kunne utføre (effektivt) alle inst. på ISA-nivå Handtering av minne Konstruere mikroarkitektur på digitalt logisk nivå Datapath (utførandeiningar) Control (styreeining) (Realisere prosessoren i silisium)
Frå ISA 0-adresse og 1-adresse instruksjonar og Minnemodel Grensesnitt mot ekternt minne Data Programm 3 Datatype: Integer Kva type kjem data til å være på (kva må støttast i microarkitektur) Instruksjonsset Kva funksjonar må støttast Korleis må einingar i datapath koplast saman Veit korleis maskina virkar logisk
Skal ta definert ISA, lage mikroarkitektur 0-adresse og 1-adresse instruksjonar og Minnemodel Grensesnitt mot externt minne Data Programm 4 Datatype: Integer Kva type kjem data til å være på (kva må støttast i microarkitektur) Instruksjonsset Kva funksjonar må støttast Korleis må einingar i datapath koplast saman Veit korleis maskina virkar logisk
Dette er toppen av designhirarkiet 5
Dette er toppen av designhirarkiet 6 Styreenhet (control unit) Styrer dei utførende einingar Type controll Hardwired microprogramm mix Utførende enhet (datapath) Samling av brukarregistre (registerfil) Samling av sysstemregister ALU: Aritmetisk-logisk enhet
7 Datapath Alu, bus, register I/O ikkje definert for IJVM
Instruksjonset og styreeining 8 To hovud typar styreeinheit Microprogram Instruksjonar er bygd opp av mikroinstruksjonar Maskin i styreeinheiten som utfører instruksjonane stegvis Fleksibel (kan endre på instruksjonssete) Mange typar instruksjonar og adresseringsmåtar Hardwired Kunn maskinvare Ei maskinvare statemaskin som styreeinheit (eller helst berre logic) Kan ikkje endrast (oppdaterast) Rask Påvirkar andre designvalg
Nokre valg 0-adresse og 1-adresse instruksjonar og Minnemodel Grensesnitt mot externt minne Data Programm 9 Datatype: Integer Kva type kjem data til å være på (kva må støttast i microarkitektur) Instruksjonsset Kva funksjonar må støttast Korleis må einingar i datapath koplast saman Veit korleis maskina virkar logisk
Instruksjonset og styreeinheit Microprogrammed Hardwired 10 Add
Valg: Styreeining Kva type maskin skal me designe (og implementere) 11
Instruksjonsett type CISC/RISC 12 CISC (Complex Instruction Set Computer) Avanserte instruksjonar (kan utføre mykje) Bruke fleire einheitar LoadAddStore 42, MinneAdrY, MinneAdrSvar Nærare høgnivå språk Fleksibelt instruksjonsett (Viss mikroprogram kan oppdaterast/endrast) Variabel lengde på instruksjonar Variabel tid på å utføre instruksjonar Mikroprogram (ikkje alltid) Mange typar instruksjonar og adresseringsmåtar RISC (Reduced Instruction Set Computer) Enkle instruksjonar Register til register instruksjonar Bruke mange enkle instruksjonar på å utføre oppgåver ADD Rx, Ry, Rz Fast instruksjonsett (Hardwired) Fast lengde på instruksjonar Fast tid på å utføre instruksjonar Ei maskinvare statemaskin som styreeinheit (eller helst berre logic) Kunn ein type adresering LOAD/STORE Rask
Instruction Set: datatransport Mnemonic Operands Description BIPUSH byte Push a byte onto stack DUPN /A Copy top word on stack and push ontostack GOTO label name Unconditional jump IADDN /A Pop two words from stack; push their sumi ANDN /A Pop two words from stack; push Boolean AN DIFEQ label name Pop word from stack and branch if it is zero IFLT IF_ICMPEQ label name label name Pop word from stack and branch if it is less than z Pop two words from stack and branch if they are e INC byte Add a constant value to a local variable ILOAD variable name Push local variable onto stack INVOKEVIRTUAL method name Invoke a methodi ORN /A Pop two words from stack; push Boolean OR IRETURNN /A Return from method with integer value ISTORE variable name Pop word from stack and store in local variable ISUBN /A Pop two words from stack; push their difference LDC_Wconstant name Push constant from constant pool onto stack NOPN /A Do nothing POPN /A Delete word from top of stack SWAPN /A Swap the two top words on the stack WIDEN /A Prefix instruction; next instruction has a 16-bit inde 13
Instruction Set: Aritmetiske operasjonar 14 Mnemonic Operands Description BIPUSH byte Push a byte onto stack DUPN /A Copy top word on stack and push ontostack GOTO label name Unconditional jump IADDN /A Pop two words from stack; push their sumi ANDN /A Pop two words from stack; push Boolean AN DIFEQ label name Pop word from stack and branch if it is zero IFLT IF_ICMPEQ label name label name Pop word from stack and branch if it is less than z Pop two words from stack and branch if they are e INC byte Add a constant value to a local variable ILOAD variable name Push local variable onto stack INVOKEVIRTUAL method name Invoke a methodi ORN /A Pop two words from stack; push Boolean OR IRETURNN /A Return from method with integer value ISTORE variable name Pop word from stack and store in local variable ISUBN /A Pop two words from stack; push their difference LDC_Wconstant name Push constant from constant pool onto stack NOPN /A Do nothing POPN /A Delete word from top of stack SWAPN /A Swap the two top words on the stack WIDEN /A Prefix instruction; next instruction has a 16-bit inde
SWAPN /A (Swap the two top words on the stack) 15
Passar IJVM-inst set / Passar ikkje IJVM 16 CISC (Complex Instruction Set Computer) Avanserte instruksjonar (kan utføre mykje) Bruke fleire einheitar Nærare høgnivå språk Fleksibelt instruksjonsett (Viss mikroprogram kan oppdaterast/endrast) Variabel lengde på instruksjonar Variabel tid på å utføre instruksjonar Mikroprogram (ikkje alltid) Mange typar instruksjonar og adresseringsmåtar RISC (Reduced Instruction Set Computer) Enkle instruksjonar Register til register instruksjonar Bruke mange enkle instruksjonar på å utføre oppgåver Fast instruksjonsett (Hardwired) Fast lengde på instruksjonar Fast tid på å utføre instruksjonar Ei maskinvare statemaskin som styreeinheit (eller helst berre logic) Kunn ein type adressering LOAD/STORE Rask
utfrå Instruction Set Mnemonic Operands Description BIPUSH byte Push a byte onto stack DUPN /A Copy top word on stack and push ontostack GOTO label name Unconditional jump IADDN /A Pop two words from stack; push their sumi ANDN /A Pop two words from stack; push Boolean AN DIFEQ label name Pop word from stack and branch if it is zero IFLT label name Pop word from stack and branch if it is less than zero IF_ICMPEQ label name Pop two words from stack and branch if they are equali INC byte Add a constant value to a local variable ILOAD variable name Push local variable onto stack INVOKEVIRTUAL method name Invoke a methodi ORN /A Pop two words from stack; push Boolean OR IRETURNN /A Return from method with integer value ISTORE variable name Pop word from stack and store in local variable ISUBN /A Pop two words from stack; push their difference LDC_Wconstant name Push constant from constant pool onto stack NOPN /A Do nothing POPN /A Delete word from top of stack SWAPN /A Swap the two top words on the stack WIDEN /A Prefix instruction; next instruction has a 16-bit index 17
Og kva me går ut frå må gjerast i kvar instruksjon 18 Mange minneaksessar i dataflytt instruksjonar Vil også være likt minneaksess mønster for aritmetiske instruksjonar Konsekvens av instruksjonsett valg og valg av stackmaskin
Velger CISC og microprogramert 19 Microprogrammed Add
Datapath 20 Datapath Alu, bus, register I/O ikkje definert for IJVM
Frå ISA: har ein minnemodell Fyrst Har ein minnemodell Må ha grensesnitt mot minne Register er grensesnitt Register for adressering Register innhald er minne adresser Må kunne peike på adresser i dataminne Må kunne peike på adresser i programminne Register for å utveksle data med minne Dataregister Instruksjonsregister 21 Datapath Alu, bus, register
Minnemodell Register for adressering PC LV SP CPP 22
MEN: Datamaskiner (vanlegvis) berre eit (eller to) minnegrensesnitt (buss(ar)) data memory program memory address data address Instr Harvard architecture PC CPU 23 memory address data PC CPU IR von Neumann architecture computer
Må velje, eg vel Harvard architecture 24 data memory program memory address data address Instr Harvard architecture PC CPU
Har då minnemodel og grensesnitt 25 data memory program memory address data address Instr Harvard architecture PC CPU
Minne modell Register mot programminne (adressering) PC 26 Register mot dataminne (adressering) LV SP CPP
Minne modell Register mot programminne (adressering) PC 27 Register mot dataminne (adressering) LV SP Eit felles grensesnitt register CPP
Minne modell Register mot programminne (adressering) PC 28 Register mot dataminne (adressering) LV SP CPP Eit felles grensesnitt register Må også ha register for data/instruksjon Dataregister (data til/frå minne (R/W)) Instruksjonsregister (inst som PC peikar på)
Må ha internbuss for komunikasjon 29
Minne modell: på microarkitekturnivå 30 To and from main memory MAR MDR PC MBR SP LV Register mot programminne (adressering) PC Register mot dataminne (adressering) LV Eit felles grensesnitt register SP MAR (Memory Address Register) CPP ALU control CPP TOS OPC H A B 6 N ALU Z Må også ha register for data/instruksjon Dataregister (data til/frå minne (R/W)) MDR Memory Data Register Instruksjonsregister (inst som PC peikar på) MBR Memory Buffer register SHIFTER 2 Shifter control
Mikroarkitektur for å hente instruksjonar 31 To and from main memory MAR MDR PC MBR SP LV CPP TOS OPC H Register mot programminne (adressering) PC Instruksjonsregister (inst som PC peikar på) MBR Memory Buffer register ALU control A B 6 N ALU Z SHIFTER 2 Shifter control
Har no microarkitektur for 32 datatransport instruksjonar Mnemonic Operands Description BIPUSH byte Push a byte onto stack DUPN /A Copy top word on stack and push ontostack GOTO label name Unconditional jump IADDN /A Pop two words from stack; push their sumi ANDN /A Pop two words from stack; push Boolean AN DIFEQ label name Pop word from stack and branch if it is zero IFLT IF_ICMPEQ label name label name Pop word from stack and branch if it is less than zero Pop two words from stack and branch if they are equal INC byte Add a constant value to a local variable ILOAD variable name Push local variable onto stack INVOKEVIRTUAL method name Invoke a methodi ORN /A Pop two words from stack; push Boolean OR IRETURNN /A Return from method with integer value ISTORE variable name Pop word from stack and store in local variable ISUBN /A Pop two words from stack; push their difference LDC_Wconstant name Push constant from constant pool onto stack NOPN /A Do nothing POPN /A Delete word from top of stack SWAPN /A Swap the two top words on the stack WIDEN /A Prefix instruction; next instruction has a 16-bit index
Frå ISA: ALU operasjonar Mnemonic Operands Description BIPUSH byte Push a byte onto stack DUPN /A Copy top word on stack and push ontostack GOTO label name Unconditional jump IADDN /A Pop two words from stack; push their sumi ANDN /A Pop two words from stack; push Boolean AN DIFEQ label name Pop word from stack and branch if it is zero IFLT IF_ICMPEQ label name label name Pop word from stack and branch if it is less than zero Pop two words from stack and branch if they are equali INC byte Add a constant value to a local variable ILOAD variable name Push local variable onto stack INVOKEVIRTUAL method name Invoke a methodi ORN /A Pop two words from stack; push Boolean OR IRETURNN /A Return from method with integer value ISTORE variable name Pop word from stack and store in local variable ISUBN /A Pop two words from stack; push their difference LDC_Wconstant name Push constant from constant pool onto stack NOPN /A Do nothing POPN /A Delete word from top of stack SWAPN /A Swap the two top words on the stack WIDEN /A Prefix instruction; next instruction has a 16-bit index 33
Frå ISA: ALU operasjonar 34 ALU må kunne følgjand (frå inst set) ADD SUB OR AND Og for å flytte data utgang = inngang Datapath Alu, bus, register
ALU operasjonar 35 To and from main memory MAR MDR PC MBR SP LV CPP TOS OPC H ALU control A B 6 N ALU Z SHIFTER 2 Shifter control
Microarkitektur valg 36 To and from main memory MAR MDR PC MBR SP LV CPP TOS OPC H Bussar 2 bussar B bus og C bus Dataflyt H-register Kunn eit fritt register for ALU Shift flytta ut av ALU Flagg N (negativt Z (Zero) TOS (Top of Stack) OPC brukar register ALU control A B 6 N ALU Z SHIFTER 2 Shifter control
Control unit 37 Datapath Alu, bus, register I/O ikkje definert for IJVM
Detaljar mikroarkitektur (impementasjon) Styreeining CISC Micrprogramm Skal styre alle register og ALU Programflyt (Branch) 38
Styreeinheit MDR E MDR W 39 Instruksjon
IJVM 40
Fleire microinstr. for instr. 41 0001010010000000000000111 001111000000010000001000 SP = TOS + OPC shift ALU les frå C buss mem B buss 1: H <- TOS: 2: H + OPC, SP <- SHIFT 00 010100 1000000000 000 0111 00 111100 000001000 000 1000
Fleire microinstr. for instr. 42 Addr Peikar til neste microinstruksjon For vår to mikroinstruksjon microinstr 1 Addr peikar til Addr til microinstr 2 MPC MicroProgram Counter ADR JAM 0100000-----0000111 ADR JAM 0100000-----0000111 SP = TOS + OPC microinstr 1 microinstr 2 Addr JAM shift ALU les frå C buss mem B buss XXXXXXXXX XXX XX XXXXXX XXXXXXXXX XXX XXXX
Instruction Set: Ubetingahopp Mnemonic Operands Description BIPUSH byte Push a byte onto stack DUPN /A Copy top word on stack and push ontostack GOTO label name Unconditional jump IADDN /A Pop two words from stack; push their sumi ANDN /A Pop two words from stack; push Boolean AN DIFEQ label name Pop word from stack and branch if it is zero IFLT IF_ICMPEQ label name label name Pop word from stack and branch if it is less than z Pop two words from stack and branch if they are e INC byte Add a constant value to a local variable ILOAD variable name Push local variable onto stack INVOKEVIRTUAL method name Invoke a methodi ORN /A Pop two words from stack; push Boolean OR IRETURNN /A Return from method with integer value ISTORE variable name Pop word from stack and store in local variable ISUBN /A Pop two words from stack; push their difference LDC_Wconstant name Push constant from constant pool onto stack NOPN /A Do nothing POPN /A Delete word from top of stack SWAPN /A Swap the two top words on the stack WIDEN /A Prefix instruction; next instruction has a 16-bit inde 43
Ved hopp MPC MicrProgram Counter JAM kan påvirke MPC Betingahopp viss (hoppinstr og Z) eller (hoppinstr og N) MPC set til hopp microinstr. Hopp microinstr. microinsstr som utfører eit hopp ADR JAM 0100000-----0000111 ADR JAM 0100000-----0000111 ADR JAM 1. Hopp microinst SP = TOS + OPC 44 microinstr 1 microinstr 2 Addr JAM shift ALU les frå C buss mem B buss XXXXXXXXX XXX XX XXXXXX XXXXXXXXX XXX XXXX
Utføre instruksjon Set opp kontrollsignal ( w) Registerverdi til B bus ( x) ALU og Shifter forsinkelse ( y) 45 Forsinkelse på C bus til register ( z) Last register
IJVM Kan no skrive mikroinstruksjonar for kvar instruksjon Eksempel SWAP microkode: swap1 : MAR = SP - 1, rd swap2 : MAR = SP swap3 : H = MDR, wr swap4 : MDR = TOS swap5 : MAR = SP 1, wr swap6 : TOS = H; Goto Main 1 Laste alle mikroinstruksjonar inn på rett plass i Control store Plass gitt av adresse gitt av opcoden 46
Microarkitektur: 47
Microarkitektur: 48 MEN huks at dette kunn er ein mogleg implementasjon av IJVM ISA MIC 1 MIC 2 MIC 3
Fortsetelse nedover i design hierarkiet 49 Digital logic level, impementasjon av einingar i microarkitektur Styreeining Control store (Microprogramm) Logikk for å utføre microinstruksjonar Datapath Register ALU Buss
Neste gong Tirsdag 15/11 Digitalt logisknivå (impementasjon styreeining og datapath) Bits&pieces Framtiden (nær og vidare forbi von Neumann regime) 50 Fredag 18/11 Bits&pieces Minne (DMA og virtuelt) og litt om flyttal