1 TDT4160 Datamaskiner Grunnkurs 2011 Gunnar Tufte
2 Kapittel 4: Microarchitecture level
3 Kapittel 4: Microarchitecture level
4 Kapittel 4: Microarchitecture level Nivå mellom Under Instruction Level Architecture (ISA) Over Digital logic level Digital logic level Lager: Register (Data, adresser, status) Kombinatoriskekretsar (ALU, multipleksarar, demultipleksarar) Skvensiellekretsar (kontroll) Databussar, kontrollbussar, signal Strølogikk Realisera Instruction Level Architecture (ISA) Kva funksjonelle einheitar er nødvendige (generelt) Kva funksjonelle einheitar er nødvendige for å oppfylle spesifikasjon Datapath Kontroll av datapath
5 Digital Logic level implementasjon av einingar Tape Optical Bus
6 Og funksjonalitet i maskinvare PIO: Dekod: Høg: Låg: RAM: Dekod: Høg: ROM: Dekod: 1111 1111 1111 11XX F F F F F F F C 1000 0XXX XXXX XXXX 8 7 F F Låg: 8 0 0 0 0000 0XXX XXXX XXXX Høg: 0000 0111 1111 1111 0 7 F F Låg: 0000 0000 0000 0000 0 0 0 0 FFFF FFFC 87FF 8000 07FF 0000 PIO RAM ROM
7 Kva er og Kva gjer Realisera Instruction Level Architecture (ISA)
8 Nivå 2: Instruksjonssetarkitektur (ISA) Instruksjonssettarkitektur (ISA) Første nivå tilgjengelig for (ekspert-)brukere Grense mellom maskinvare og programvare Opprinnelig det eneste nivået Språk: Maskinkode
9 Nivå 2: Instruksjonssetarkitektur (ISA) Instruksjonssettark. (ISA) Første nivå tilgjengelig for (ekspert-)brukere Grense mellom maskinvare og programvare Opprinnelig det eneste nivået Språk: Maskinkode MOV R4,A(R2): opcode operands instruction
10 Nivå 2: Instruksjonssetarkitektur (ISA) Instruksjonssettark. (ISA) Første nivå tilgjengelig for (ekspert-)brukere Grense mellom maskinvare og programvare Opprinnelig det eneste nivået Språk: Maskinkode
11 8051 Logisk utsjåande A: 16 bit adresse (P0 og P2) D: 8 bit data (P0) ~RD: Eksternt read signal ~WR: Eksternt write signal ALE: Adress Latch Enabled -Multipleksar adresse/data ~PSEN: Program Store ENabled -Les frå programminne ~EA: Bruk av eksternt minne -Høg: bruk eksternt og interntminne -Låg: bruk kunn ekterntminne TXD og RXD: Asynkron seriekommunikasjon -Hastigheit gitt av klokkefrekvens
12 8051 som kort ISA eksempel
13 Minnemodell 8051 (minnekart)
14 Instruksjonar Simens Semiconductor Group 8051 processor
15 Intel 8051 mikrokontroller ACALL - Absolute Call ADD, ADDC - Add Accumulator (With Carry) AJMP - Absolute Jump ANL - Bitwise AND CJNE - Compare and Jump if Not Equal CLR - Clear Register CPL - Complement Register DA - Decimal Adjust DEC - Decrement Register DIV - Divide Accumulator by B DJNZ - Decrement Register and Jump if Not Zero INC - Increment Register JB - Jump if Bit Set JBC - Jump if Bit Set and Clear Bit JC - Jump if Carry Set JMP - Jump to Address JNB - Jump if Bit Not Set JNC - Jump if Carry Not Set JNZ - Jump if Accumulator Not Zero JZ - Jump if Accumulator Zero LCALL - Long Call LJMP - Long Jump MOV - Move Memory MOVC - Move Code Memory MOVX - Move Extended Memory MUL - Multiply Accumulator by B NOP - No Operation ORL - Bitwise OR POP - Pop Value From Stack PUSH - Push Value Onto Stack RET - Return From Subroutine RETI - Return From Interrupt RL - Rotate Accumulator Left RLC - Rotate Accumulator Left Through Carry RR - Rotate Accumulator Right RRC - Rotate Accumulator Right Through Carry SETB - Set Bit SJMP - Short Jump SUBB - Subtract From Accumulator With Borrow SWAP - Swap Accumulator Nibbles XCH - Exchange Bytes XCHD - Exchange Digits XRL - Bitwise Exclusive OR Undefined - Undefined Instruction Operation: NOP Function: None, waste time Syntax: No Operation Instructions OpCode Bytes Flags NOP 0x00 1 None Description: NOP, as it's name suggests, causes No Operation to take place for one machine cycle. NOP is generally used only for timing purposes. Absolutely no flags or registers are affected. Operation: RL Function: Rotate Accumulator Left Syntax: RL A Instructions OpCode Bytes Flags RL A 0x23 1 C Description: Shifts the bits of the Accumulator to the left. The left-most bit (bit 7) of the Accumulator is loaded into bit 0.
16 Intel 8051 mikrokontroller Operation: RL Function: Rotate Accumulator Left Syntax: RL A Instructions OpCode Bytes Flags RL A 0x23 1 C Description: Shifts the bits of the Accumulator to the left. The left-most bit (bit 7) of the Accumulator is loaded into bit 0.
17 8051 ISA -> mikroarkitektur Operation: RL Function: Rotate Accumulator Left Syntax: RL A Instructions OpCode Bytes Flags RL A 0x23 1 C Description: Shifts the bits of the Accumulator to the left. The left-most bit (bit 7) of the Accumulator is loaded into bit 0.
18 Kva er og Kva gjer Realisera Instruction Level Architecture (ISA) Kva funksjonelle einheitar er nødvendige (generelt) Kva funksjonelle einheitar er nødvendige for å oppfylle spesifikasjon f.eks.: Datapath ALU-funksjonar Antal register Antal bussar Yting (parallellitet) Instruksjonstypar osv Kontroll av datapath Styreeining Gitt av arkitektur (RISC, CISC)
19 Kva er og Kva gjer God til (f.eks): Signal behandling I/O-intensiveprogram Matematiskefunksjonar Lite effektforbruk
20 Kapittel 4: Microarchitecture level
21 Ny Arkitektur Har brukt denne som eksempel før, no ny
22 Ny Arkitektur Eksempel frå boka ISA for subset av Java Virtual Machine (JVM) Integer JVM (IJVN) Kva må til for å realisere Kva må vere med av utførande einingar Korleis må dei vere kopla saman Korleis kontrolere Styre eining Kontrollsignal til utførande einingar
23 Ny Arkitektur: IJVM datapath To and from main memory ALU control MAR MDR PC MBR SP LV CPP TOS OPC H A B 6 N ALU Z Register: MAR: Memory Address Register MDR: Memory Data Register PC: Program Counter MBR: Memory Buffer Register SP: Stac Pointer LV: Local variable CPP: Constant Pool Pointer TOS: Top of Stack OPC: OpCode register H: Holding register Shifter: styrt shift register og ALU utverdi SHIFTER 2 Shifter control
24 Ny Arkitektur: IJVM ALU To and from main memory MAR MDR PC MBR SP LV CPP TOS OPC ALU : 6 kontrollinjer ALU control C bus H B bus A B 6 N ALU Z SHIFTER 2 Shifter control
25 Ny Arkitektur: IJVM eksternt minne Dataminne MAR: Memory Address Register MDR: Memory Data Register PC: Program Counter MBR: Memory Buffer Register 2 register for data: H MDR Programminne
26 Instruksjonsett Kva enkle operasjonar som kan gjerast (definert) ALU Register verdi til buss Last verdi frå buss til register Minne operasjonar Kva gjer ein instruksjon? Fortel kva utførande einheitar skal gjere Korleis? Dekoda av styre eining Styre eining set opp utførande einingar
27 Instruksjonsett
28 Kontroll av utførandeeinheitar To and from main memory W W W MAR MDR PC MBR E E E E W: Last Register (frå C bus) E: Registerverdi til buss (til B bus) ALU: Velg funksjon Shifter: Velg funksjon W SP LV E (eg fekk ikkje med W og E på SP) W W W CPP TOS OPC E E E C bus W H B bus A B 6 N ALU Z SHIFTER 2 Shifter control
29 Styreeinheit To and from main memory W W W MAR MDR PC MBR E E E E Styreeineit må kontrolere W: Last Register (frå C bus) E: Registerverdi til buss (til B bus) ALU: Velg funksjon Shifter: Velg funksjon C bus W W W W W SP LV CPP TOS OPC H E E E E B bus A B 6 N ALU Z Styresignal: Totalt: 6 ALU signal 2 Shift kontroll 9 Last register frå C bus (W) 9 Register til B bus (E) + ekstra som me kjem til seinare SHIFTER 2 Shifter control
30 Microprogrammed Add
32 Styreeinheit MDR E MDR W Instruksjon
33Utføre instruksjon Set opp kontrollsignal ( w) Registerverdi til B-bus ( x) ALU og Shifter forsinkelse ( y) Forsinkelse på C-bus til register ( z) Last register frå C-bus
34 Eit lite overblikk Realisera Instruction Level Architecture (ISA) Høgnivåspråk (C, C++, JAVA): variabelc = varabela + variabelb; Kompiler Men egentlig meir slik: LOAD R2, variabela LOAD R3, variableb ADD R1, R2, R3 Maskincode for + (vist som asambler): ADD R1, R2, R3 Kva skal til for å utføre ADD R1, R2, R3 Kva må styreeinheiten gjere for å få dei utførande eineitane til å: Stille inn ALU til + opperasjon Gi ALU tilgang på innalde i register R2 og R3 Lagre resultatet i R1
35 Microinstruksjon MDR E MDR W Instruksjon
36 Microinstruksjonsformat ADD Reg1, Reg2
37 Eksempel: 1 (supersimpel) shift = TOS + H shifter ALU les frå C buss mem B buss XX XXXXXX XXXXXXXXX XXX XXXX
38 Eksempel: 1 (supersimpel) shift = TOS + H shift ALU les frå C buss mem B buss 00 XXXXXX XXXXXXXXX XXX XXXX
39 Eksempel: 1 (supersimpel) shift = TOS + H shift ALU les frå C buss mem B buss 00 111100 XXXXXXXXX XXX XXXX
40 Eksempel: 1 (supersimpel) shift = TOS + H shift ALU les frå C buss mem B buss 00 111100 000000000 XXX XXXX
41 Eksempel: 1 (supersimpel) shift = TOS + H shift ALU les frå C buss mem B buss 00 111100 000000000 000 0111
42 har laga ein microinstruksjon Instruksjon: shift = TOS + H ISA er tilgjengeleg for programmerar Viser kva ein instruksjon faktisk gjer på ISA nivå shift = TOS + H (eksempel: ADD RegX (RegX er i vårt eksempel TOS)) Resultat = ligg i shifter (eller egentlig på C-bussen) Data = H (implicit ALU + funksjon brukar alltid H-register) Data = TOS Utførest på ein klokkeperiode Flagg???? På ISA nivå: ADD Reg X kompilator velger instruksjon frå register på B buss f.eks: shift = TOS + H (B buss = 0111 (7)) shift = OPC + H (B buss = 1000 (0)) Shift = SP + H (B buss = 0100 (4)) Sjult for programerar brukar berre ISA nivå shift ALU les frå C buss mem B buss 00 111100 000000000 000 0111
43 Eksempel: 2 brukar B og C buss TOS eller OPC må fyrst i H-register: (velger TOS) Instruksjon må då: 1: H <- TOS SP = TOS + OPC 2: H + OPC, SP <- SHIFT To microinstruksjonar
44 Eksempel: 2 SP = TOS + OPC shift ALU les frå C buss mem B buss 1: H <- TOS: XX XXXXXX XXXXXXXXX XXX XXXX
45 Eksempel: 2 SP = TOS + OPC shift ALU les frå C buss mem B buss 1: H <- TOS: 00 010100 XXXXXXXXX XXX XXXX
46 Eksempel: 2 SP = TOS + OPC shift ALU les frå C buss mem B buss 1: H <- TOS: 00 010100 1000000000 XXX XXXX
47 Eksempel: 2 SP = TOS + OPC shift ALU les frå C buss mem B buss 1: H <- TOS: 00 010100 1000000000 000 0111
48 Eksempel: 2 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 XX XXXXXX XXXXXXXXX XXX XXXX
49 Eksempel: 2 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 XXXXXXXXX XXX XXXX
50 Eksempel: 2 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 XXX XXXX
51 Eksempel: 2 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
52 Utføre instruksjon shift ALU les frå C buss mem B buss 1: 00 010100 1000000000 000 0111 2: 00 111100 000001000 000 1000 1: H <- TOS: 2: H + OPC, SP <- SHIFT
53 har laga ein microinstruksjon Instruksjon: SP = TOS + OPC ISA er tilgjengeleg for programmerar Viser kva ein instruksjon faktisk gjer på ISA nivå SP = TOS + OPC (eksempel: ADD RegX, RegY, RegZ) Resultat = SP Data = TOS Data = OPC Utførest på to klokkeperiodar shift ALU les frå C buss mem B buss Flagg???? 1: H <- TOS: 00 010100 1000000000 000 0111 2: H + OPC, SP <- SHIFT: 00 111100 000001000 000 1000 På ISA nivå: ADD RegX, RegY, RegZ Reg kan vere Reg X: Alle register RegY: Alle register utanom H RegZ: alle register utanom H
54 Skrive microinstruksjonar Kan instruksjonen utførast på 1 eller fleire klokkeperiodar? Viss ja: fyll ut microinstruksjon Viss nei: finn antal klokkeperiodar utfrå datapath Fyll ut microinstruksjon for kvar klokkeperiode Fylle ut microinstruksjon Bruk tidsdiagramme w : Setje opp styresignal frå styreeinheit til utførandeeinheitar x: Kva skal ut på B bus (H automatisk tilgjengeleg for ALU) FYLL INN B y: kva skal ALU og SHIFTER gjere FYLL INN ALU (bruk ALU funksjonstabell) Stigande flanke load register frå C bus: Kva register skal resultatet lagrast i FYLL INN C
55 For å forstå Nivå 2 Instruksjonssetarkitektur (ISA) Instruksjonssettark. (ISA) Første nivå tilgjengelig for (ekspert-)brukere Grense mellom maskinvare og programvare Opprinnelig det eneste nivået Språk: Maskinkode ISA er tilgjengeleg for programmerar Viser kva ein instruksjon faktisk gjer ADD R1, R2, R3 Resultat = R1 Data = R2 Data = R3 Utførest på ein klokkeperiode Instruksjonen inkluderar ZERO, NEGATIV og CARRY flagg Nyttig for å forstå kva ISA er og for å bruke ISA-nivået Må kunne for å lage prosessorar
56 Lita oppgåve 1: shift = SP + 1 shift ALU C buss mem B buss XX XXXXXX XXXXXXXXX XXX XXXX
57 Svar lita oppgåve shift = SP + 1 shift ALU C buss mem B buss 00 110101 XXXXXXXXX XXX XXXX
58 Svar lita oppgåve shift = SP + 1 shift ALU C buss mem B buss 00 111100 000000000 XXX XXXX
59 Svar lita oppgåve shift = SP + 1 shift ALU C buss mem B buss 00 110101 000000000 000 0100
60 Kva kan datamaskiner (frå 1. forelesing) Leggje saman to tal Kontrolere om eit tal er 0 Flytte data frå ein plass til ein anna Gjere desse operasjonane FORT Beregne alle beregnbare funksjonar Utføre sekvensar av oprasjonar
61 Neste gong Fredag 8/10 Vidare med microinstruksjonar for IJVM Vidare med microarkitektur for IJVM