82
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 June 12, 2022 1 IS1200 Datorteknik föreläsning CE – F2

IS1200 Datorteknik

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

Page 1: IS1200 Datorteknik

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

Page 2: IS1200 Datorteknik

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

Page 3: IS1200 Datorteknik

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

Page 4: IS1200 Datorteknik

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

Page 5: IS1200 Datorteknik

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

Page 6: IS1200 Datorteknik

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

Page 7: IS1200 Datorteknik

Viktiga delar i en dator

CPU

MEM

BUS

I/Oprogram

data

April 20, 2023 7IS1200 Datorteknik

föreläsning CE – F2

Page 8: IS1200 Datorteknik

Programexekveringi två steg

(decode)EXECUTE

FETCH(update PC)

April 20, 2023 8IS1200 Datorteknik

föreläsning CE – F2

Page 9: IS1200 Datorteknik

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

Page 10: IS1200 Datorteknik

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

Page 11: IS1200 Datorteknik

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

Page 12: IS1200 Datorteknik

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

Page 13: IS1200 Datorteknik

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

Page 14: IS1200 Datorteknik

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

Page 15: IS1200 Datorteknik

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

Page 16: IS1200 Datorteknik

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

Page 17: IS1200 Datorteknik

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

Page 18: IS1200 Datorteknik

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

Page 19: IS1200 Datorteknik

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

Page 20: IS1200 Datorteknik

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

Page 21: IS1200 Datorteknik

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

Page 22: IS1200 Datorteknik

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

Page 23: IS1200 Datorteknik

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

Page 24: IS1200 Datorteknik

IS1200 Datorteknik

PAUS-BILD(andas djupt och ta nya tag)

April 20, 2023 24IS1200 Datorteknik

föreläsning CE – F2

Page 25: IS1200 Datorteknik

Fenomen pga PIPE-LINE

1. Data Dependency2. Branch Delay3. Structural Hazard4. Load Delay

April 20, 2023 25IS1200 Datorteknik

föreläsning CE – F2

Page 26: IS1200 Datorteknik

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

Page 27: IS1200 Datorteknik

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

Page 28: IS1200 Datorteknik

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

Page 29: IS1200 Datorteknik

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

Page 30: IS1200 Datorteknik

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

Page 31: IS1200 Datorteknik

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

Page 32: IS1200 Datorteknik

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

Page 33: IS1200 Datorteknik

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

Page 34: IS1200 Datorteknik

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

Page 35: IS1200 Datorteknik

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

Page 36: IS1200 Datorteknik

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

Page 37: IS1200 Datorteknik

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

Page 38: IS1200 Datorteknik

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

Page 39: IS1200 Datorteknik

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

Page 40: IS1200 Datorteknik

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

Page 41: IS1200 Datorteknik

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

Page 42: IS1200 Datorteknik

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

Page 43: IS1200 Datorteknik

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

Page 44: IS1200 Datorteknik

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

Page 45: IS1200 Datorteknik

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…

Page 46: IS1200 Datorteknik

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

Page 47: IS1200 Datorteknik

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

Page 48: IS1200 Datorteknik

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

Page 49: IS1200 Datorteknik

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

Page 50: IS1200 Datorteknik

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

Page 51: IS1200 Datorteknik

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

Page 52: IS1200 Datorteknik

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

Page 53: IS1200 Datorteknik

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

Page 54: IS1200 Datorteknik

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

Page 55: IS1200 Datorteknik

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

Page 56: IS1200 Datorteknik

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

Page 57: IS1200 Datorteknik

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

Page 58: IS1200 Datorteknik

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

Page 59: IS1200 Datorteknik

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

Page 60: IS1200 Datorteknik

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

Page 61: IS1200 Datorteknik

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

Page 62: IS1200 Datorteknik

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

Page 63: IS1200 Datorteknik

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

Page 64: IS1200 Datorteknik

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 ?

Page 65: IS1200 Datorteknik

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 ?

Page 66: IS1200 Datorteknik

IS1200 Datorteknik

PAUS-BILD(andas djupt och ta nya tag)

April 20, 2023 66IS1200 Datorteknik

föreläsning CE – F2

Page 67: IS1200 Datorteknik

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

Page 68: IS1200 Datorteknik

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

Page 69: IS1200 Datorteknik

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

Page 70: IS1200 Datorteknik

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

Page 71: IS1200 Datorteknik

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

Page 72: IS1200 Datorteknik

...

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

Page 73: IS1200 Datorteknik

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

Page 74: IS1200 Datorteknik

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

Page 75: IS1200 Datorteknik

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

Page 76: IS1200 Datorteknik

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

Page 77: IS1200 Datorteknik

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

Page 78: IS1200 Datorteknik

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

Page 79: IS1200 Datorteknik

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

Page 80: IS1200 Datorteknik

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

Page 81: IS1200 Datorteknik

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

Page 82: IS1200 Datorteknik

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