Upload
bianca-mccray
View
59
Download
3
Embed Size (px)
DESCRIPTION
IS1200 Datorteknik. Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7. Välkommen till IS1200 Datorteknik. ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1200 emailadress till lärare: [email protected] - PowerPoint PPT Presentation
Citation preview
IS1200 Datorteknik
Föreläsning CE F2Vi bygger en processor
Kursboken, delar av kapitel 7
April 20, 2023 1IS1200 Datorteknik
föreläsning CE – F2
Välkommen till
IS1200 Datorteknik
”Hur datorer fungerar”
Kursens hemsida finns utpekad från:http://www.ict.kth.se/courses/IS1200
emailadress till lärare:[email protected]
Kursansvarig: Fredrik Lundevall
April 20, 2023 2IS1200 Datorteknik
föreläsning CE – F2
IS1200 Datorteknik våren 2014http://www.ict.kth.se/courses/IS1200
Assemblerprogram
C
In- och utmatning
Cacheminnen
Avbrott och "trap"
Trådar, synkronisering
CE F1
CE F3
CE F4
CE F5
CE F6
CE F7
CE F8
CE F9
CE F2
CE Ö4
CE Ö1
CE Ö2
CE Ö3
CE Ö7
CE Ö8
CE Ö9
CE Ö5 CE Ö6
lab nios2time
hemlab C
lab nios2io
hemlab cache
lab nios2
hemlab trådar
CE F10 CE Ö10 tentamen
April 20, 2023 3IS1200 Datorteknik
föreläsning CE – F2
Uppdelning i övningsgrupperrekommendatio
Dela upp er ”fifty-fifty”
Övning 1: tisdag 21 januari kl 15.00-16.45 HÄLFTENÖvning 1: onsdag 22 januari kl 08.00-09.45 HÄLFTEN
Salar: 531, 532, 533
April 20, 2023IS1200 Datorteknik
föreläsning CE – F2 4
5
IS1200 Datorteknik
Föreläsning 2, innehåll Vi bygger en processor4 stegs Pipe-line för ADD, SUB, ...Data Dependency och Data ForwardBranch Delay, Delay Slot - hoppluckaLOAD och STORENios-II: MOVI och MOVIA
April 20, 2023 5IS1200 Datorteknik
föreläsning CE – F2
Nu bygger vi en dator av ...
&
=1 >1
DRIVER
COUNTER
REGISTER
Q
Q’
Dpreset
clclear
ALU
MUX
+n
WR
EN
1&
>1
April 20, 2023 6IS1200 Datorteknik
föreläsning CE – F2
Viktiga delar i en dator
CPU
MEM
BUS
I/Oprogram
data
April 20, 2023 7IS1200 Datorteknik
föreläsning CE – F2
Programexekveringi två steg
(decode)EXECUTE
FETCH(update PC)
April 20, 2023 8IS1200 Datorteknik
föreläsning CE – F2
Typisk instruktionADD Rdst RsrcA + RsrcB
Kombinera innehåll i RsrcA och RsrcB
och skriv till Rdst
ADD, SUB, MUL, DIV, AND, OR, XOR, … Hur många bitar krävs i Instruktionen ?
Man kan minska behovet av bitarmed kortare instruktionADD Rdst, Rsrc ;Rdst Rdst + Rsrc
April 20, 2023 9IS1200 Datorteknik
föreläsning CE – F2
ADD Rdst<- RsrcA + RsrcB
ADD
Hur många bitar behövs? ~6+5+5+5Hur stor blir varje instruktion? Mer än 16(t.ex. MIPS/Nios-II …)
INSTRUKTIONSFORMATmed tre register-operander
Exempelvis: 6 5 5 5
April 20, 2023 10IS1200 Datorteknik
föreläsning CE – F2
ADD Rdst<- Rdst + Rsrc
ADD
Hur många bitar behövs? 6+5+5Hur stor blir varje instruktion? Välj 16(t.ex. Tidigare variant av Nios)
INSTRUKTIONSFORMATmed bara två register-operander
Exempelvis: 6 5 5
April 20, 2023 11IS1200 Datorteknik
föreläsning CE – F2
ADD Rdst, RsrcA, RsrcB
0x31
Hur många bitar behövs ? 15 + op-codeHur stor är varje instruktion ? 32 bitar !INSTRUKTIONSFORMAT enligt ovan
INSTRUKTIONSFORMATbinärkod i Nios II
5 5 5 6 5 6 bitar per fält
0x3a0x00
April 20, 2023 12IS1200 Datorteknik
föreläsning CE – F2
Programexekveringi fyra steg
1. FI - Fetch Instruction2. FO - Fetch Operand3. EX - Execute4. WB - Write Back
April 20, 2023 13IS1200 Datorteknik
föreläsning CE – F2
EX - EXecute
ExecuteALUt.ex. ADD
operander
resultat av operationen
~6 bitars kod
ALU-registerALU-A och ALU-B
6 bitars kod möjliggör 64 olika operationer till exempel: A+B, A-B, A, -A, A+1, A-1, Ainv, A and B, A or B, ...
A Boperation
April 20, 2023 14IS1200 Datorteknik
föreläsning CE – F2
FO - Fetch Operand
Execute
Fetch Operand
RegisterFile
32 x 32
ALU
5 bitars registernummer, RsrcA
5 bitars registernummer, RsrcB
RWM - Read Write Memory”SRAM”
Dual-Ported
Read
SRAM – Static Random Access Memory”snabbt minne”
April 20, 2023 15IS1200 Datorteknik
föreläsning CE – F2
WB - Write Back
Execute
Fetch Operand
Write Back
ALU
RegisterFile
32 x 32
RegisterFile
32 x 32
SAMMAen Register File(inte två olika)
5 bitars registernummer, Rdst Write
Read
April 20, 2023 16IS1200 Datorteknik
föreläsning CE – F2
RWM - Read Write Memory”SRAM”
Tripple-Ported
FI - Fetch Instruction
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR
PC
+n
RegisterFile
32 x 32
RegisterFile
32 x 32
32
5
5
5
6
PC - Program Countern = 4 beror på att eninstruktion är 32 bitar,4 bytes
April 20, 2023 17IS1200 Datorteknik
föreläsning CE – F2
Register FileRead from R0
OE
Adress-Avkodare
Datain
Dataut
RegisterReadAddress
OE
WRclock
OE
WRclock
. . . . . .
Bus
BusKiselplats:Cirka 17+32*350 grindar
0…0
0
31
busdrivkrets
April 20, 2023IS1200 Datorteknik
föreläsning CE – F2 18
Innehåll i register r0 om det alltid är 0
Det medför att ADD r0, r0, r0 utför NOP, No OPeration ADD rA, r0, r0 utför CLR rA, CLeaR reg ADD rA, rB, r0 utför COPY rA rB, MOV BEQ r0, r0, Label utför BR Label BNE r0, r0, Label utför ... (NOP) ...
April 20, 2023 19IS1200 Datorteknik
föreläsning CE – F2
4 stegs CPUKonsekvent synkronism
8. Förbered skrivning till Register File
FI FO EXE WB
6. ALU arbetar (ADD/SUB/ …)
4. Avkoda instruktion samt leta fram operander
2. Leta fram instruktion ur Program Memory
9. Skriv resultat till Register File
7. Skriv resultat till tmp-reg
5. Skriv operander till ALU-register
3. Skriv instruktion till Instruction Register
1. Skriv nytt värde till Program Counter
clock
Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne
April 20, 2023 20IS1200 Datorteknik
föreläsning CE – F2
Tid per intruktionHur många klockcykler ?
FI FO EXE WBADD
ADD FI FO EXE WB
4 klockcykler per instruktion! 1 instruktion klar var 4:e klockcykel!
April 20, 2023 21IS1200 Datorteknik
föreläsning CE – F2
PIPE - LINE införs nu !Flera register IR
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
NYTT
PC
+n
RegisterFile
32 x 32
RegisterFile
32 x 32
IR1: 11 vipporIR2: 5 vippor
April 20, 2023 22IS1200 Datorteknik
föreläsning CE – F2
5
6
Hastighet med PIPE-LINEHur många klockcykler ?
...
ADD
ADD
ADD
ADD
FI FO EXE WB
FI FO EXE WB
FI FO EXE WB
FI FO EXE WB
4 klockcykler per instruktion!1 instruktion klar per klockcykel!
April 20, 2023 23IS1200 Datorteknik
föreläsning CE – F2
IS1200 Datorteknik
PAUS-BILD(andas djupt och ta nya tag)
April 20, 2023 24IS1200 Datorteknik
föreläsning CE – F2
Fenomen pga PIPE-LINE
1. Data Dependency2. Branch Delay3. Structural Hazard4. Load Delay
April 20, 2023 25IS1200 Datorteknik
föreläsning CE – F2
1 .Data Dependency(Fenomen pga PIPE-LINE)
Programexempel44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4
Innehåll i R1 och R4 på rad 52avser resultat av rad 44 och 48 Men ”nya” R1 och R4 finns inte i REG-FILE
änApril 20, 2023 26
IS1200 Datorteknik föreläsning CE – F2
Data Dependencies
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
44: R4 <- R5+R6
RegisterFile
32 x 32
RegisterFile
32 x 32
April 20, 2023 27IS1200 Datorteknik
föreläsning CE – F2
Data Dependencies
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32
44: R4 <- R5+R6
48: R1 <- R2+R3
April 20, 2023 28IS1200 Datorteknik
föreläsning CE – F2
Data Dependencies
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
52: R7 <- R1+R4
nya r4
nya r1
RegisterFile
32 x 32
RegisterFile
32 x 32
44: R4 <- R5+R6
48: R1 <- R2+R3
gamla r1gamla r4
April 20, 2023 29IS1200 Datorteknik
föreläsning CE – F2
Data Dependencymed 4 stegs PIPE-LINE
44: ADD ...
48: ADD ...
FI FO EXE WB
FI FO EXE WB
FI FO EXE WB52: ADD ...
Nya R1 skrivs till RegFile
Gamla R1 och R4 läses från RegFile
Nya R4 skrivs till RegFile
Gamla R1 och R4 skrivs till ALU-reg
44: ADD R4 <- R5 + R648: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4 # gamla värden i R1 och R4
April 20, 2023 30IS1200 Datorteknik
föreläsning CE – F2
Data Dependencyläsning måste ske efter skrivning
44: ADD ...
48: ADD ...
FI FO EXE WB
FI FO EXE WB
FI FO EXE WBFördröj till xx: ADD ...
Nya R1 skrivs till RegFileNya R4 skrivs till RegFile
Nya R1 och R4 läses från RegFileNya R1 och R4 skrivs till ALU-reg
44: ADD R4 <- R5 + R648: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4 # gamla värden i R1 och R4
April 20, 2023 31IS1200 Datorteknik
föreläsning CE – F2
44: ADD ...
48: ADD ...
FI FO EXE WB
FI FO EXE WB
FI FO EXE WB
44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R352: NOP # fördröjer 1 cykel56: NOP # fördröjer 1 cykel60: ADD R7 <- R1 + R4 # nya värden i r1 och r4
60: ADD ...
R1 skrivs till RegFile
R1 och R4 läses från RegFile
R4 skrivs till RegFile
FI FO EXE WB
FI FO EXE WB
NOP
NOP
April 20, 2023 32IS1200 Datorteknik
föreläsning CE – F2
Data Forwardinför nya data-vägar
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 3252: R7 <- R1+R4
44: R4 <- R5+R6
48: R1 <- R2+R3 NYTT
April 20, 2023 33IS1200 Datorteknik
föreläsning CE – F2
Data Forwardinför nya data-vägar
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32
NYTT
52: R7 <- R1+R4
44: R4 <- R5+R6
48: R1 <- R2+R3
nya r4
nya r1
April 20, 2023 34IS1200 Datorteknik
föreläsning CE – F2
Enable-signaler tillnya data-vägar
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32
NYTT
52: R7 <- R1+R4
44: R4 <- R5+R6
48: R1 <- R2+R3
ENA0ENB0
ENA2ENB2ENA1ENB1
Komb.nät
ENA0ENB0 ENA2ENB2ENA1ENB1
NYTT
April 20, 2023 35IS1200 Datorteknik
föreläsning CE – F2
44: ADD ...
48: ADD ...
FI FO EXE WB
FI FO EXE WB
FI FO EXE WB
44: ADD R4 <- R5 + R648: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4
52: ADD ...
Nya R1 skrivs till RegFile
Nya R1 och R4 läses via DataForward
Nya R4 skrivs till RegFile
Nya R1 och R4 skrivs till ALU-reg
Data Forwardgenvägar ger snabbhet
April 20, 2023 36IS1200 Datorteknik
föreläsning CE – F2
Nya R7 skrivs till RegFile
NYTT: Typisk instruktionADD Rdst <-- RsrcA + Immn
1. Kombinera innehåll i RsrcA och Immoch skriv till Rdst
2. ADD, SUB, MUL, DIV, AND, OR, XOR, …3. Hur många bitar krävs i Instruktionen ?4. Man kan minska behovet av bitar
med kortare instruktionADD Rdst, Imm
April 20, 2023 37IS1200 Datorteknik
föreläsning CE – F2
ADDI Rdst, Rsrc, datan
ADDI
Hur många bitar behövs? ~6+5+5+nHur stor blir varje instruktion? Mer än 16
INSTRUKTIONSFORMATmed immediate data (och 2 register)
Exempelvis: 6 5 5 n
April 20, 2023 38IS1200 Datorteknik
föreläsning CE – F2
ADDI Rdst Rdst + data5
ADDI
Hur många bitar behövs? ~6+5+5Hur stor blir varje instruktion? Precis16
INSTRUKTIONSFORMATmed immediate data (och bara 1 register)
Exempelvis: 6 5 5
April 20, 2023 39IS1200 Datorteknik
föreläsning CE – F2
ADDI Rdst, RsrcA, Data
SUBI rB, rA, IMM16 ADDI rB, rA, -IMM16IMM16 innehåller ett 2-komplement-tal ...
5 5 16 6 bitar per fält
0x04
INSTRUKTIONSFORMATBinärkod i Nios II
April 20, 2023 40IS1200 Datorteknik
föreläsning CE – F2
Immediate datainför ny dataväg
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
PC
IR0
IR1
IR2
+n
Ny dataväghur många bitar ? 16!
RegisterFile
32 x 32
RegisterFile
32 x 32
April 20, 2023 41IS1200 Datorteknik
föreläsning CE – F2
ADDI Rdst, R0, Data
ADDI Rdst, R0, Imm16 blir MOVI Rdst, Imm16
Skriv en 16-bitars konstant till ett register
5 5 16 6 bitar per fält
0x04
INSTRUKTIONSFORMATBinärkod i Nios II
April 20, 2023 42IS1200 Datorteknik
föreläsning CE – F2
Extension 16 -> 32 bitsNollor eller Sign Extension
00000000000000000 xxxxxxxxxxxxxxxx
00000000000000000 0xxxxxxxxxxxxxxx
Fyll ut med nollorFungerar för UnsignedInt
Sign extensionVid positivt tal
Sign extensionVid negativt tal
xxxxxxxxxxxxxxxx31 16 15 0
0xxxxxxxxxxxxxxx31 16 15 0
31 16 15 0
Sign ExtensionFungerar för SignedInt
April 20, 2023 43IS1200 Datorteknik
föreläsning CE – F2
1xxxxxxxxxxxxxxx
1xxxxxxxxxxxxxxx1111 1111 1111 1111
JUMP och BRAOvillkorliga hopp
JUMP brukar ha direkt adress BRA brukar ha PC-relativ adress
JMP 104 #PC := 104 ”hopp till 104”..
BRA 40 #PC := pc + 40 ”hopp till 268”
32:
104:
224:
268:
April 20, 2023 44IS1200 Datorteknik
föreläsning CE – F2
Hopp-instruktionerSkriver effektiv adress till PC
(decode)EXECUTE
FETCH(update PC)
April 20, 2023 45IS1200 Datorteknik
föreläsning CE – F2
PC := pc + 4 PC := Effektiv AdressJUMP, BRCALL, CALLR, RETTRAP, ERET…
Ny hopp-instruktionJUMP (Raddr)
o Registerindirekt adresseringo Effektiv adress i ett registero Kopiera registerinnehåll till PCo Register med 32 bitar betyder atto 32 bits adress kan användaso Hur får man 32 bits adress till registret
?
Det måste ordnas på något sätt !
April 20, 2023 46IS1200 Datorteknik
föreläsning CE – F2
JUMP (Raddr)inför ny dataväg
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
PC
IR0
IR1
IR2
+n
RegisterFile
32 x 32
RegisterFile
32 x 32
Ny dataväghur många bitar ? 32!
April 20, 2023 47IS1200 Datorteknik
föreläsning CE – F2
Vanlig hopp-instruktionJUMP Immn
Immn skrivs till PC
Hur stor är Immn ?”lediga” bitar t.ex. 32-6=26 !
Hur stor vill vi att Immn ska vara helst ?
Immn ska kunna adressera ”hela minnet” !dvs vara 32 bitars adress
April 20, 2023 48IS1200 Datorteknik
föreläsning CE – F2
JUMP brukar ha direkt adress
JUMP Label
JUMP
Hur många bitar behövs? 6+n!Hur stor blir varje instruktion? 6+n!INSTRUKTIONSFORMAT enligt ovanVilket värde bör man välja för n? 10/26!
INSTRUKTIONSFORMAT
6 n bitar per fält
April 20, 2023 49IS1200 Datorteknik
föreläsning CE – F2
Vanlig hopp-instruktionBR Immn
PC sätts till PC + Immn
Hur stor är Immn ?”lediga” bitar t.ex. 32-6=26 !
Hur stor vill vi att Immn ska vara helst ? 32 bitar vore bra men ..
Immn ska kunna adressera ”hela minnet” !
April 20, 2023 50IS1200 Datorteknik
föreläsning CE – F2
BRA brukar ha PC-relativ adress
BRA Displacement
BRA
INSTRUKTIONSFORMAT
6 n bitar per fält
Hur många bitar behövs? 6+n!Hur stor blir varje instruktion? 6+n!INSTRUKTIONSFORMAT enligt ovanVilket värde bör man välja för n? 10/26!
April 20, 2023 51IS1200 Datorteknik
föreläsning CE – F2
BRA Immn
inför ADDitionsenhet och datavägar
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
PC+ ImmPC+ 4
Nytt
April 20, 2023 52IS1200 Datorteknik
föreläsning CE – F2
Immpc
pc
2 .Branch Delay(Fenomen pga PIPE-LINE)
Instruktionen i minnespositionen närmast efter en hoppinstruktion kommer hämtas och utföras innan hoppet verkställs
Programexempel16: BRA 6420: ADD … # hämtas och utförs24: ……84: SUB ...
April 20, 2023 53IS1200 Datorteknik
föreläsning CE – F2
Efter FI av 16: BRA 64
Execute
Fetch Operand
Write Back
Fetch Instruction
16: BRA 6420: ADD …
ALU
ADD
IR0
IR1
IR2
20
BRA 64
6420
16: BRA 6420: ADD …24: ……84: SUB …88: ...
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
PC+ ImmPC+ 4
20
April 20, 2023 54IS1200 Datorteknik
föreläsning CE – F2
84
Efter FI av 20: ADD
Execute
Fetch Operand
Write Back
Fetch Instruction
ALU
ADD
IR0
IR1
IR2
ADD
BRA 64
80: …84: SUB …
84
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
16: BRA 6420: ADD …24: ……84: SUB …88: ...
84
84
April 20, 2023 55IS1200 Datorteknik
föreläsning CE – F2
4
88
PC+ ImmPC+ 4
Efter FO av 20: ADD
Execute
Fetch Operand
Write Back
Fetch Instruction
ALU
ADD
IR0
IR1
IR2
SUB
BRA 64
88 ADD
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
16: BRA 6420: ADD …24: ……84: SUB …88: ...
88
88
April 20, 2023 56IS1200 Datorteknik
föreläsning CE – F2
4
84: SUB …88: …
PC+ ImmPC+ 4
FI FO EXE WB
4 Avkoda instruktion beräkna effektivadress, EA
2 Leta fram instruktion ur Program Memory
5 Skriv EA till Program Counter = UTFÖR HOPPET
3 Skriv instruktion till Instruction Register
1 Skriv nytt värde till Program Counter
clock
Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne
Ovillkorliga hopp (BRA/JUMP)när kan hoppet tidigast utföras ?
(Ledig tid: ”Kislet kallnar” eller ... )
(Ledig tid: ”Kislet kallnar” eller ... )
(Skriv till R0 eller inte alls)
(Skriv till tmp-reg eller inte alls)
April 20, 2023 57IS1200 Datorteknik
föreläsning CE – F2
Hur hanteras Branch Delay
Olika metoder, mjukvara och/eller hårdvara
Kompilator/Programmerare väljer1. Fyll ut med en (onyttig) NOP2. Skriv en (nyttig) instruktion i
hoppluckanLåt hårdvaran specialbehandla hopp
(hoppgissning / invalidate / ...)April 20, 2023 58
IS1200 Datorteknik föreläsning CE – F2
STATUS-flaggor
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
Nytt
NVZCADD
April 20, 2023 59IS1200 Datorteknik
föreläsning CE – F2
PC+ ImmPC+ 4
STATUS-flaggor
Z - Zero; ”utfall lika med noll” N - Negativ; ”utfall med negativt
tecken” V - oVerflow; ”utfall med overflow” C - Carry; Carry-ut från ALU kan finnas fler ...Påverkas av ADD, SUB, CMP ...
April 20, 2023 60IS1200 Datorteknik
föreläsning CE – F2
Gäller för Intel-Processorn (ej Nios-II)
R0
R31
R1 PC
MinneGenerella registerProgramräknare
NVZC
Status
April 20, 2023 61IS1200 Datorteknik
föreläsning CE – F2
STATUS-flaggor
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
Nytt
NVZC
Logik förvillkorligt
hopp
op-code
CCR
true/false
PC+ ImmPC+ 4
BCond
ADD
April 20, 2023 62IS1200 Datorteknik
föreläsning CE – F2
4
61
Branch on ConditionNågra exempel
Label: NOP…BLE rA, rB, Label
if rA is Less or Equal than rB then PC:=Label else PC:=PC+4if rA is Less or Equal than rB then PC:=PC+4+Imm else PC:=PC+4
Beräkning av Imm-fältets värde (görs av översättarprogrammet):
Label = PCBLE + 4 + Imm
Imm = Label - PCBLE – 4
BCond rA, rB, Labelif rA is Cond than rB then PC:=PC+4+Imm else PC:=PC+4
April 20, 2023 63IS1200 Datorteknik
föreläsning CE – F2
FI FO
4 Avkoda instruktion samt läs STATUS
2 Leta fram instruktion ur Program Memory
5 Skriv EA till Program Counter = hoppa
3 Skriv instruktion till Instruction Register
1 Skriv nytt värde till Program Counter
clock
Villkorliga hopp (B”cond”)när kan hopp tidigast utföras ?
(När sker skrivning till STATUS?)(Finns rätt info i STATUS?)
Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne
April 20, 2023 64IS1200 Datorteknik
föreläsning CE – F2
(När finns EA breäknad ?)
(När är hopp upptäckt ?
Innan ett hopp kan utföras krävs
1.Instruktionen är avkodad (görs i FO !)
2.Villkorsvärdet är känt (ska hoppet tas?)
3.Effektivadressen är känd (nytt PC-värde)
April 20, 2023IS1200 Datorteknik
föreläsning CE – F2 65
Villkorliga hopp (B”cond”)när kan hopp tidigast utföras ?
IS1200 Datorteknik
PAUS-BILD(andas djupt och ta nya tag)
April 20, 2023 66IS1200 Datorteknik
föreläsning CE – F2
LOAD och STOREmemory register
Vår processor ska kunna utföra operationer av typen LOAD och STORE
Vilka operandutpekningsmetoder ska vi ha ?Gärna med direkt adressering dvsLOAD reg <- mem(adr)STORE mem(adr) <- regmen: En ”hel adress” ryms ej i adressfältet
vilket leder till ...
April 20, 2023 67IS1200 Datorteknik
föreläsning CE – F2
LOAD och STOREmemory register
Vi inför hårdvara för instruktionerna
LOAD Rdst, [ Raddr ]
STORE [ Raddr ], Rsrc
med registerindirekt adressering dvs effektivadress i register
April 20, 2023 68IS1200 Datorteknik
föreläsning CE – F2
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RWM
LOAD och STOREmed 4 stegs PIPE-LINE
RegisterFile
32 x 32
RegisterFile
32 x 32PC+ ImmPC+ 4
PC
NyttApril 20, 2023 69
IS1200 Datorteknik föreläsning CE – F2
LOAD och STOREmed 4 stegs PIPE-LINE
LOAD to Rd
USE Rd
FI FO MEM WB
FI FO EXE WB
Data från MEM finns tillgängligt
Data från MEM finns tillgängligt för FOvia Data Forward
Leta fram data ur MEM
April 20, 2023 70IS1200 Datorteknik
föreläsning CE – F2
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RWM
LOAD och STOREmed data forward
RegisterFile
32 x 32
RegisterFile
32 x 32PC+ ImmPC+ 4
PC
(Vissa register är “dubletter” !)
April 20, 2023 71IS1200 Datorteknik
föreläsning CE – F2
...
LOAD
STORE
ADD
ADD
FI FO MEM WB
FI FO MEM WB
FI FO EXE WB
FI FO EXE WB
Samtidig referens till minneti FI- och MEM-stegen
3. Structural Hazardstrukturell konflikt
April 20, 2023 72IS1200 Datorteknik
föreläsning CE – F2
3. Structural Hazardstrukturell konflikt
Samtidig referens till Instruktionsminne och Dataminne
Problemet undviks lämpligen med Separata (cache-) minnen för Program
och Data (Harvard-arkitektur)(separata I-cache och D-cache)
April 20, 2023 73IS1200 Datorteknik
föreläsning CE – F2
MinnesbehovViktiga frågor, svar senare
1. Separata minnen för Instruktion och Data
2. Samtidig referens av I och D3. Cykeltid för I-mem4. Cykeltid för D-mem5. I balans med CPU-klocka6. Är detta möjligt? Nej! Tja ?
(cache-minnen)April 20, 2023 74
IS1200 Datorteknik föreläsning CE – F2
LOAD och STOREmemory register
Vi (kompilatorn) vill kunna utförainstruktioner av typen LOAD och STOREmed indexerad adressering dvsLOAD Rdst, Offset[ Raddr ]
STORE Offset[ Raddr ], Rsrc
Hårdvara för detta tas upp senare i kursen5 stegs PIPE-LINE
April 20, 2023 75IS1200 Datorteknik
föreläsning CE – F2
76
CPU med 5 stegs PIPE-LINE
RegisterFile32 x 32
ProgramMemoryn x 16
ALU
PCADD
IR0
IR1
IR2
IR3
+2
RegisterFile32 x 32
RWM
PC+nPC+Imm
ALU/EXE
FO
MEM
FI
WB
NYTT
76April 20, 2023IS1200 Datorteknik
föreläsning CE – F2
4 .Load Delay(Fenomen pga PIPE-LINE)
I en 5 stegs PIPE-LINE enligt förra sidan
krävs
Minst en NOP eller oberoende instruktion mellan
LOAD till ett register och READ/USE av detta register
April 20, 2023 77IS1200 Datorteknik
föreläsning CE – F2
78
Load Delay i 5-stegs pipe även vid Data Forward
LOAD reg FI FO ALU WBMEM
ADD reg FI FO ALU WBMEM
Skriv till ALU-regData Forward fungerar
FI FO ALU WBMEMOberoende instr.
Tillgängligt från minne
78April 20, 2023IS1200 Datorteknik
föreläsning CE – F2
Ladda ett register med ett16 bitars konstant värde, Nios-II
Operationen MOVI rB, IMM16 med 16 bitars värde IMM känt ”at compile-time” kan t.ex. utföras av 1 instruktion
MOVI r6, -30 # sign extension på negativa tal ? (ja !)
IMM16 hamnar på de högra 16 bitarna (LSBits)
# ”MOVI is implemented as ADDI rB, r0, IMM16”
Hur kan man “ladda” 32 bitar till ett register ?Med två “MOVI” som placerar 16 bitar på olika platser !
April 20, 2023 79IS1200 Datorteknik
föreläsning CE – F2
Ladda ett register med ett16 bitars konstant värde, Nios-II
Operationen MOVIH rB, IMM16 med 16 bitars värde IMM känt ”at compile-time” kan t.ex. utföras av 1 instruktion
MOVIH r6, -30 # fyller ut med nollor till höger
IMM16 hamnar på de vänstra 16 bitarna (MSBits)
# ”MOVI is implemented as ORHI rB, r0, IMM16”
Hur kan man “ladda” 32 bitar till ett register?Med MOVI och MOVIH som placerar 16 bitar på olika
platser
April 20, 2023 80IS1200 Datorteknik
föreläsning CE – F2
Ladda ett register med ett32 bitars konstant värde, Nios-II
Operationen MOVIA rB, Const32 med 32 bitars värde Const känt ”at compile-time” kan t.ex. utföras av 2 instruktioner
MOVHI rA, r0, %hi(Const) #16 MSBits till MSBits i rAORI rA rA, %lo(Const)#16 LSBits till LSBits i rA
Operationen MOVIA rA, Const32
Finns tillgänglig som en pseudoinstruktion MOVIA Reg, Const32
Används för att ladda ett register med godtycklig 32 bitars konstant
April 20, 2023 81IS1200 Datorteknik
föreläsning CE – F2
IS1200 Datorteknik
Föreläsning 2, innehåll Vi bygger en processor4 stegs Pipe-line för ADD, SUB, ...Data Dependency och Data ForwardBranch Delay, Delay Slot - hoppluckaLOAD och STORENios-II: MOVI och MOVIA
April 20, 2023 82IS1200 Datorteknik
föreläsning CE – F2