2G1518 Datorteknik allmän kurs
-
Upload
joshua-hebert -
Category
Documents
-
view
104 -
download
0
description
Transcript of 2G1518 Datorteknik allmän kurs
![Page 1: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/1.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 1
2G1518 Datorteknik allmän kurs
Föreläsning 3Metoder och subrutiner
Kursboken, valda delar av kapitel 4
version ht 2004för D m.fl.
![Page 2: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/2.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 2
Innehåll
4-stegs PIPE-LINE, repetitionMACRO, syntetisk instruktionLoad och Store med indexerad adress5-stegs PIPE-LINEhårdvara för hopp, NiosSubrutiner, anrop, retur, parametrar, Stack och Register Window
![Page 3: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/3.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 3
Viktiga delar i en dator
CPU
MEM
BUS
I/O
![Page 4: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/4.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 4
Programexekveringi två steg
(decode)EXECUTE
FETCH(update PC)
![Page 5: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/5.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 5
Programexekveringi fyra steg
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32PC+2PC+Imm
PC
![Page 6: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/6.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 6
Mall för makro– en syntetisk instruktion
.macro CLR regMOVI\reg, 0x0.endm
Effekt: man kan använda en ny instruktionclr %ri för att nollställa register %ri
R
![Page 7: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/7.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 7
ADD Rdest, regA, regB
Skriv makro för add-instruktion med 3 register.macro ADD reg1, reg2, reg3MOV \reg1, \reg2ADD \reg1, \reg3
.endm
R
![Page 8: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/8.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 8
MOVI RA, datan
MOVI
Hur många bitar behövs? ~6+5+5!Hur stor blir varje instruktion? 16!
Nios INSTRUKTIONSFORMATmed immediate data
Exempelvis: 6 5 5
![Page 9: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/9.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 9
Immediate dataNios dataväg finns
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32PC+2PC+Imm
PC
![Page 10: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/10.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 10
Immediate dataär bara 5 bitar
En PreFiX-instruktion PFX införs
PFX modifierar efterföljande instruktion och ger den ett längre immediate-värde
PFX använder ett specialregister K
Principen med prefixinstruktioner finns även i Pentium-serien
R
![Page 11: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/11.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 11
Inför ny hårdvaraK - register
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
ADD
IR0
IR1
IR2
RegisterFile
32 x 32
RegisterFile
32 x 32PC+2PC+Imm
PC
![Page 12: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/12.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 12
Hur används register K ?
PreFiX-instruktionen PFX Imm11
skriver ett 11 bitars värde till register K
Instruktionen direkt efter PFX Imm11
använder innehåll i K– sedan nollställs register K
Imm5 ökar till (Imm11 cat Imm5 )
R
![Page 13: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/13.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 13
PFX Imm11
FI PFX - -PFX Imm11
MOVI Rdst, Imm5FI FO EXE WB
![Page 14: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/14.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 14
Nios: MOVIA Rdst, Imm32
(MACRO) 32 bitar till Rdst alla bitar 31-00 påverkas
PFX Imm111 ;11 bitar till K-regMOVI Rdst, Imm15 ;16 bitar i Rdst
fyller ut med nollor i bit 31-16
PFX Imm211 ;11 bitar till K-regMOVHI Rdst, Imm25 ;32 bitar i Rdst
bit 15-0 påverkas ej av MOVHI
Imm211 Imm25 Imm111 Imm15
Resultat:
![Page 15: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/15.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 15
Hjälp från översättaren
%xhi%xlo%hi%lo
@h = 31 MSBits
Imm211 Imm25 Imm111 Imm15= value
![Page 16: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/16.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 16
MakrotMOVIA reg, Addr
; Ladda ett 32 bitars värde till ett register; Värdet kan vara negativt.macro MOVIA reg, value
PFX %hi(\value)MOVI \reg, %lo(\value)PFX %xhi(\value)MOVHI \reg, %xlo(\value)
.endm
R
![Page 17: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/17.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 17
LOAD och STORE
Vi kan utföra instruktionerna
LD Rdst, [ Raddr ]
ST [ Raddr ], Rsrc
![Page 18: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/18.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 18
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+4PC+Imm
PC
![Page 19: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/19.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 19
LOADA Rdest, Addr
Skriv makro för load med direkt adressering.macro LOADA reg, addrMOVIA \reg, \addrLD \reg, [\reg]
.endm
R
![Page 20: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/20.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 20
Behov av indexerad adress
Programvariabler ligger samlade
Ett register pekar ut variabelarean
Varje LOAD/STORE behöver först en adressberäkning med ADD
Indexerad adress
LOAD R2 ← 8(R28) ; R2 ← hm(r28 + 8)
Sparar en klockcykel vid varje LOAD
![Page 21: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/21.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 21
Programvariabler samlade i minnet
Variabler int i; int j; int k;
läggs efter varanni minnet av kompilatorn
minne
ijk
![Page 22: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/22.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 22
Ett register pekar ut variabelarean
Vid programstart tilldelas registret adressen till variabelarean i minnet
minne
ijk
register
r28
![Page 23: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/23.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 23
Varje LOAD/STORE behöver adressberäkning med ADD
k ska hämtas till R2R17 är ledigtADDI R17 <- R28 + 8LOAD R2 <- (R17)En extra instruktionEn extra klockcykelExtra krångel i
programkoden
minne
ijk
register
r28
![Page 24: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/24.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 24
Indexerad adress
Addition i LOAD-instruktionen
LOAD R2 ← 8(R28)
innebärR2 ← hm(r28+8)
Innehåll i R28, plus talet 8, blir minnesadress
minne
ijk
register
r28
![Page 25: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/25.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 25
Sparar en klockcykel vid varje LOAD
add följt av load
byts mot
load med "inbyggd" addition
addi r17←r28+8
load r2←(r17)
FI FO EXE WB
FI FO MEM WB
load r2←8(r17) FI FO ALU WBMEM
![Page 26: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/26.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 26
LOAD och STORE
Vi vill alltså kunna utföra instruktionerna
LOAD Rdst, Offset[ Raddr ]
STORE Offset[ Raddr ], Rsrc
![Page 27: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/27.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 27
LOAD Rdst <- Offset[Raddr]
Vi kan utföra instruktionenLOAD Rdst, Offset[ Raddr ]
med koden (tar 2 klockcykler eller hur) ADDI Radr, Offset
LD Rdst, [ Raddr ]
![Page 28: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/28.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 28
STORE Offset[Raddr] <- Rsrc
Vi kan utföra instruktionenSTORE Offset[ Raddr ], Rsrc
med koden (tar 2 klockcykler eller hur) ADDI Radr, Offset
ST [ Raddr ], Rsrc
![Page 29: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/29.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 29
5 stegs PIPE-LINE
ALU
Fetch Operand
MEM
Fetch InstructionRegister
File32 x 32
RegisterFile
32 x 32
ProgramMemory
m x 8
ALU
RegisterFile
32 x 32
RegisterFile
32 x 32
PC
ADD
IR0
IR1
IR2
RWM
IR3
Write Back
+n
![Page 30: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/30.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 30
Programexekveringi fem steg
FI - Fetch InstructionFO - Fetch OperandALU - CalculationMEM - Memory ReferenceWB - Write Back
![Page 31: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/31.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 31
Programmering med hopp
Hopp = ett värde skrivs till PCEffektivadress skrivs till PCOlika adresseringsmetoder finnsJUMP Label
brukar använda absolut adressBRA Label
brukar använda PC-relativ adress
![Page 32: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/32.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 32
JUMP (Raddr)inför nya datavägar
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
PC
IR0
IR1
IR2
+n
Ny dataväg
RegisterFile
32 x 32
RegisterFile
32 x 32
![Page 33: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/33.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 33
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+4PC+Imm
![Page 34: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/34.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 34
Ovillkorligt hoppVillkorligt hopp
Ovillkorligt hopp utförs alltidExempel: JMP och BRA
Villkorligt hopp utförs endast om ett angivet villkor är santExempel Bcc där cc är villkoret
Exempel på villkorEQZ = EQual to ZeroNEZ = Not Equal to Zero
![Page 35: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/35.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 35
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:
![Page 36: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/36.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 36
Typisk hopp-instruktionJUMP Label
Absolut adressering
Läget Label motsvarar en binär adress
Kopiera Label till PC
Om PC har 32 bitar bör Label vara 32 bitar
Adressen Label lagras i instruktionen
![Page 37: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/37.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 37
Typisk hopp-instruktionBRA Label
PC-relativ adresseringLäget Label motsvarar en binär adressFöre körning beräknar assemblern hur
långt från instruktionen Label finnsAvståndet lagras i instruktionen som
displacement eller offsetVid körning adderas offset till PCoffset kan vara positivt eller negativt
![Page 38: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/38.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 38
Typisk hopp-instruktionJUMP (Raddr)
Kopiera registerinnehåll till PCRegister med 32 bitar betyder att
32 bits adress kan användasHur får man 32 bits adress till
registret ?MOVIA Raddr , Imm32 eller
motsvarande
![Page 39: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/39.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 39
Nios hopp-instruktionJMP %rA
Skifta innehåll i register %rA ett steg åt vänster och kopiera till PC
![Page 40: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/40.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 40
Typisk hopp-instruktionBR Immn
PC sätts till PC + Immn
Hur stor är Immn ?
Hur stor vill vi att Immn ska vara helst ?
![Page 41: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/41.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 41
Nios hopp-instruktionBR IMM11
Skifta IMM11 ett steg vänster gör Sign Extensionaddera till aktuellt värde i PCPC <- PC + 2 + (sext (IMM11) <<1)
![Page 42: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/42.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 42
Typisk instruktionSUB RsrcA, RsrcB
Subtrahera innehåll i RsrcB från RsrcA
och skriv till RsrcA
Förutom resultatet / skillnadenså lagras ytterligare informationi STATUS-flaggor
![Page 43: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/43.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 43
Typisk instruktionCMP RsrcA, RsrcB
Jämför innehåll i RsrcA och RsrcB genom att
Subtrahera innehåll i RsrcB från RsrcA
men skriv ej resultat till något registerInformation om resultatet / skillnaden
lagras som informationi STATUS-flaggor
![Page 44: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/44.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 44
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 ALUPåverkas av ADD, SUB, CMP ...
![Page 45: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/45.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 45
STATUS -flaggor
Execute
Fetch Operand
Write Back
Fetch Instruction
ProgramMemory
m x 8
ALU
PC
ADD
IR0
IR1
IR2
+n
NVZC
RegisterFile
32 x 32
RegisterFile
32 x 32
![Page 46: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/46.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 46
Villkorlig hopp-instruktionBcond Immn
PC sätts till PC + Immn om cond är sant
PC sätts till PC + n om cond är falskt(n är antal bytes per instruktion)
Nios har ingen instruktion Bcond Imm
Det måste finnas minst en villkorlig instruktion för att klara en IF-sats
![Page 47: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/47.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 47
Nios har villkorlig instruktion IFS cc_IMM4
IFS - Conditionally execute next instructionOm villkoret är sant utförs nästa instr.Om villkoret är falskt skippas nästa instruktion (Om nästa är en PFX så skippas 2 instr.)
![Page 48: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/48.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 48
Nios har villkorlig instruktion SKPS cc_IMM4
SKPS - Skip On Condition CodeOm villkoret är sant skippas nästa instr.(Om nästa är en PFX så skippas 2 instr.) Om villkoret är falskt utförs nästa instruktion
![Page 49: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/49.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 49
IFS cc_IMM4 SKPS cc_IMM4
cc_IMM4 kan väljas bland 14 olika cc_eq, cc_ne, cc_lt osv. enligt tabell
Program-exempel: if (reg1==0) goto LabelCMPI reg1, 0 ;jämför reg1 med nollIFS cc_eq ;om Z=1BR Label ;hoppa till Label
![Page 50: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/50.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 50
BEQ Label
Skriv makro för villkorligt hopp BEQ.macro BEQ labelIFS cc_eqBR \labelNOP
.endm
R
![Page 51: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/51.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 51
Bxx Label
Skriv makro-mall för villkorligt hopp Bxx.macro Bxx labelIFS cc_xxBR \labelNOP
.endmkan skrivas för xx: eq, ne, ...
R
![Page 52: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/52.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 52
14 olika villkor finns i Nios
cc_ncC = 0cc_c C = 1cc_nzZ = 0cc_z Z = 1cc_pl N = 0cc_mi N = 1cc_lt N xor Vcc_ge not(N xor
V)
cc_gtnot(Zor(NxorV))
cc_le Zor(NxorV)cc_nv V = 0cc_v V = 1cc_hi not (C or Z)cc-la C or Z
![Page 53: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/53.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 53
Alias för villkor i Nios
cc_cs = cc_c Carry Set = Carrycc_n = cc_mi Negative = MInuscc_cc = cc_nc Carry Clear = No Carrycc_vc = cc_nv oVerflow Clear = No oVe...cc_eq = cc_z Equal = Zerocc_ne = cc_nz Not Equal = Not Zerocc_vs = cc_v oVerflow Set = oVerflowcc_p = cc_pl Plus = PLus
![Page 54: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/54.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 54
Nios instruktionIFRZ reg
Execute next instruction if register is Zero
Exempel: if (reg1==0) goto LabelIFRZ reg1 ;om reg1 = 0BR Label ;hoppa till Label
SKPRNZ är ekvivalent med IFRZ
Om nästa är en PFX så görs två nästa
![Page 55: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/55.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 55
Nios instruktionIFRNZ reg
Execute next instruction if register is Not Zero
Exempel: if (reg1 != 0) goto LabelIFRNZ reg1 ;om reg1 ej är 0BR Label ;hoppa till Label
SKPRZ är ekvivalent med IFRNZOm nästa är en PFX så görs två
nästa
![Page 56: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/56.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 56
funktioner, subrutiner, metoder
Hur sker anrop ?Med hoppinstruktion !Hur sker återhopp ?Med hoppinstruktion !Returadress måste lagras ! Var ?
![Page 57: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/57.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 57
Subrutinanrop
CALL RUTRET1: ADD …
CALL RUTRET2: SUB ...
RUT: ADD …
RETURN
![Page 58: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/58.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 58
Subrutinanrop
CALL RUTRET1: ADD …
CALL RUTRET2: SUB ...
RUT: ADD …
CALL FKN
RETURN
FKN: MUL …
CALL NEW
RETURN
![Page 59: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/59.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 59
funktioner, subrutiner, metoder
Hur sker parameteröverföringVar lagras parametrar
från anropare till rutinen, inparametrarfrån rutinen till anroparen, returvärdenOlika typ av parameter värdepekare
![Page 60: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/60.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 60
Nios hopp-instruktionBSR IMM11
Liknar BR IMM11 med tilläggg attReturadress sparas i register %R15Returadressen är adressen till
instruktionen närmast efter hoppluckandvs adress till BSR ökat med 4
Returadressen sparas skiftad ett steg höger för att passa ihop med JMP %R15
![Page 61: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/61.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 61
Nios hopp-instruktionCALL %rA
Liknar JMP %rA med tillägg attReturadress sparas i register %R15=%o7Returadressen är adressen till
instruktionen närmast efter hoppluckandvs adress till CALL ökat med 4 !
Returadressen sparas skiftad ett steg höger för att passa ihop med JMP %R15
![Page 62: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/62.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 62
Stackhantering
Stack är speciell reserverad plats i minnet
Stack Pekare pekar på plats i stacken
PUSH-operation, lägg på stackPOP-operation, hämta från stack
![Page 63: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/63.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 63
STACKoperationer PUSH och POP
Stack Pointer
SP
PUSH op:SP <- sp - nmem(sp) <- op
POP dst:dst <- mem(sp)SP <- sp + n
n = antal bytes
+
-
![Page 64: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/64.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 64
Nios: PUSH reg
; Pusha ett register på stacken.macro PUSH regSUBI %sp,4 ;%sp = %o6ST [%sp],\reg
.endm; PUSH %o6 är inte bra
![Page 65: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/65.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 65
Nios: POP reg
; Poppa ett register från stacken.macro POP regLD \reg,[%sp] ADDI %sp,4 ;%sp = %o6
.endm;POP %o6 är förödande
![Page 66: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/66.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 66
Nios: StackReservera plats, initiera SP
Stack Pointer
SP
.equ size , 256
.data
.align 4stack: .fill size, 4, 0....text…movia %sp, stack+size*4
+
-stack:
![Page 67: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/67.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 67
Nios stöd för stack
Stack Pointer = %r14 = %sp (alias %o6) Finns det Stack-operationer ?LDS är LOAD Rdst <- [%sp, IMM8]
STS är STORE [%sp,IMM8] <- Rsrc
med flera variationerIngen PUSH- eller POP-instruktionIngen JSR/RTS med returadress på stack
![Page 68: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/68.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 68
Nios stöd för subrutiner
Anrop med CALL reg, returadress i register %r15 = %o7innehållet i reg multipliceras med 2 innan det skrivs till PC, jämför med JMP reg
Anrop med BSR LabelRetur med RET (JMP %r31 alias %i7)Retur med LRET (JMP %r15 alias %o7)
![Page 69: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/69.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 69
Returadress vid subrutinanrop
I ett speciellt register (fördel/nackdel)I valfritt register (fördel/nackdel)I minnet på speciell plats (fördel/nackdel)I minnet på valfri plats (fördel/nackdel)I minnet på en stack med PUSH
(fördel/nackdel)I första ordet i subrutinen (fördel/nackdel)
![Page 70: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/70.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 70
Register Window
Vad? Hur? Varför?
![Page 71: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/71.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 71
Register Window
32 registers are direct available%i0-%i7 = %r24-%r31 ; In regs%L0-%L7 = %r16-%r23 ; Local
regs%o0-%o7 = %r8 -%r15 ; Out regs%g0-%g7 = %r0 -%r7 ; Global
regs
![Page 72: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/72.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 72
Register Window
32 registers are direct available128 or 256 or 512 possible registers CWP - Current Window Pointer
anger vilka register som just nuär direkt åtkomliga
CWP finns i statusregister %ctl0 !
![Page 73: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/73.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 73
Register Window
CWP = Current Window PointerSAVE ”öppna nytt fönster”
minska CWP med 1RESTORE ”byt till gammalt fönster”
öka CWP med 1
![Page 74: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/74.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 74
Table 20. Smallest Nios Register File
Reg[..
Reg[..
Reg[..
Reg[..
Reg[..
Reg[..
Reg[..
Reg[..
Reg[..
Reg[24..31]
Reg[16..23]
Reg[8..15]
Reg[104..111]
Reg[112..119]
Reg[120..127]
Reg[0..7]
%o0..%o7
%L0..%L7
%i0..%i7
%g0..%g7
%o0..%o7
%L0..%L7
%i0..%i7
%g0..%g7 %g0..%g7
%o0..%o7
%L0..%L7
%i0..%i7
%g0..%g7
%o0..%o7
%L0..%L7
%i0..%i7%o0..%o7
%L0..%L7
%i0..%i7
%g0..%g7
%o0..%o7
%L0..%L7
%i0..%i7
%g0..%g7
SAVE
RESTORE
CWP = 0
CWP = 1
CWP = 5
CWP = 6
CWP = 4CWP = 2
![Page 75: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/75.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 75
Exempel på subrutinkodutan SAVE och RESTOREnästlat subrutinanrop går ej
RUT: kodkod;BSR RUT2 ;subrutinanrop
nix…LRET ;JMP %07
![Page 76: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/76.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 76
RUT: SAVE %sp,0 ;ändra inte %spkodBSR RUT2 ;fungerar…RET ;JMP %i7RESTORE ;i hopplucka
Exempel på subrutinkodmed SAVE och RESTOREnästlat subrutinanrop går bra
![Page 77: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/77.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 77
Parameterplatstill och från subrutin
I register (fördel/nackdel)I minnet på fast adress
(fördel/nackdel)I minnet på en stack (fördel/nackdel)
![Page 78: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/78.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 78
Exempel på parameteröverföringmed SAVE och RESTORE
Anroparen lagrar parametrar i %o-register (utom %o7) Anroparen gör BSR eller CALL varvid
returadress sparas i %o7 Subrutinen gör SAVE varvid
alla %oreg hamnar på platser %ireg Returadress finns nu i %i7 Parametrar finns nu i %i-register Det finns 16 ”nya” register, 8 st %Local och 8 st %Out Subrutinen gör RESTORE Returadress finns nu i %o7 varvid
retur ska göras med JMP %o7 (samma som LRET)
![Page 79: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/79.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 79
Programexempel - subrutinta fram max av val1 och val2
Exempel på C-kod torde kunna vara...int val1, val2, result; /* variabler */... int max (int val1, int val2); /* prototyp */...result = max ( val1, val2); /* anrop */
![Page 80: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/80.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 80
Programexempel - subrutin ta fram max av val1 och val2
int val1, val2, result; kan översättas till (av kompilator)
.dataval1: .word 0val2: .word 0result: .word 0...
![Page 81: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/81.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 81
anrop av max (val1, val2)inparametrar i register
; result = max ( val1, val2) kan översättas till.text
movia %L0, val1ld %o0, [%L0] ;parameter val1 i %o0movia %L0, val2ld %o1, [%L0] ;parameter val2 i %o1movia %L0, max@h ;dst-adress/2 till ett register call %L0 ;ea i registernopmovia %L0, resultst [%L0], %o0 ;returvärde i %o0
![Page 82: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/82.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 82
Programexempel - subrutinta fram max av val1 och val2
int max (int val1, int val2);{
int tmp;tmp = val1;if (val2 > val1 ) tmp = val2;return (tmp);
}kan översättas till (kompileras till)
![Page 83: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/83.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 83
int max (int val1, int val2)inparametrar i register
max: cmp %o0, %01ifs cc_ltmov %o0, %o1lret ;jmp %o7
![Page 84: 2G1518 Datorteknik allmän kurs](https://reader035.fdocuments.net/reader035/viewer/2022081506/56812dd4550346895d931eaa/html5/thumbnails/84.jpg)
April 19, 2023 2G1518, föreläsning 3, ht2004 84
Föreläsning 3Sammanfattning
4-stegs PIPE-LINE, repetitionMACRO, syntetisk instruktionLoad och Store med indexerad adress5-stegs PIPE-LINEhårdvara för hopp, NiosSubrutiner, anrop, retur, parametrar, Stack och Register Window