is1200 datorteknik n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
IS1200 Datorteknik PowerPoint Presentation
Download Presentation
IS1200 Datorteknik

Loading in 2 Seconds...

play fullscreen
1 / 68

IS1200 Datorteknik - PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on

IS1200 Datorteknik. Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4. Ö10. F10. Hemlab-3. Hemlab-2. Hemlab-1. Ö2. Ö1. Ö3. Ö5. Ö7. Ö8. Ö9. Ö6. Ö4. F1. F5. F7. F8. F4. F6. F9. F3. F2. Tentamen. LAB-2. LAB-3. LAB-1.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'IS1200 Datorteknik' - shamus


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
is1200 datorteknik

IS1200 Datorteknik

Föreläsning 3

Metoder / subrutiner

Kursboken, valda delar av kapitel 4

IS1200 Datorteknik, föreläsning 3

is1200 datorteknik http www ict kth se courses is1200

Ö10

F10

Hemlab-3

Hemlab-2

Hemlab-1

Ö2

Ö1

Ö3

Ö5

Ö7

Ö8

Ö9

Ö6

Ö4

F1

F5

F7

F8

F4

F6

F9

F3

F2

Tentamen

LAB-2

LAB-3

LAB-1

IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200

Assemblerkod 4 stegs pipeline

Nios2time

C-kod

Nios2io

Nios2int

Cache-minnen

CPU-scheduling

IS1200 Datorteknik, föreläsning 3

f rel sning 3 inneh ll
Föreläsning 3Innehåll
  • 4-stegs PIPE-LINE, repetition
  • Nios-II, Instruktioner och -format
  • MACRO, pseudo-instruction,exempel
  • Load och Store med indexerad adress
  • Stack med SP samt PUSH och POP
  • Subrutiner, anrop, retur, parametrar
  • Activation Record, aktiveringsblock

IS1200 Datorteknik, föreläsning 3

slide4

Litteraturhänvisningar

  • Kursboken, valda delar av kapitel 4
  • 4.1 -- 4.3 principer, ej MIPS-kod
  • 4.5 Subrutiner och Stack

IS1200 Datorteknik, föreläsning 3

viktiga delar i en dator
Viktiga delar i en dator

CPU

BUS

program

I/O

MEM

data

IS1200 Datorteknik, föreläsning 3

programexekvering i tv steg

FETCH

(update PC)

(decode)

EXECUTE

Programexekveringi två steg

IS1200 Datorteknik, föreläsning 3

slide7

Fetch

Operand

Write

Back

Fetch

Instruction

Register

File

32 x 32

EXecute/

MEMory

PC+k/PC+Imm

Program

Memory

m x 8

Register

File

32 x 32

Programexekveringi fyra steg

ADD

PC

RWM

true/false

ALU

op-code

NVZC

Logik för

villkorligt

hopp

Cond

IS1200 Datorteknik, föreläsning 3

instruktioner i v r 4 stegs cpu
Instruktioner i ”vår” 4-stegs CPU
  • ADD Rdst, RsrcA , RsrcB # SUB/AND/OR/XOR
  • ADDI Rdst, RsrcA , Imm # SUBI/ANDI/ORI/XORI
  • JMP / BR # ovillkorliga hopp
  • LDW Rdst , (Rsrc) # LOAD
  • STW Rsrc , (Rdst) # STORE
  • CMP RsrcA , RsrcB
  • CMPI RsrcA , Imm
  • BCond # villkorliga hopp
  • R0 = 0 ger ytterligare funktioner, NOP, CLR, COPY

IS1200 Datorteknik, föreläsning 3

inneh ll i register r0 om det alltid r 0
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
  • ADDI rA, rB, 0 utför ”MOV rA, rB”
  • ADDI rA, r0, Imm utför ”MOVI rA, Imm”
  • ...

IS1200 Datorteknik, föreläsning 3

instruktioner nios ii instruktioner
Instruktioner Nios-II-Instruktioner
  • MOV Rdst, Rsrc
  • MOVI Rdst, Imm16 # ADDI/SUBI
  • ADD Rdst, RsrcA , RsrcB # SUB/AND/OR/XOR
  • ADDI Rdst, RsrcA , Imm # SUBI/ANDI/ORI/XORI
  • BR / JMP / BCond
  • LDW Rdst , offset(Rsrc) # indexerad adress
  • STW Rsrc , offset(Rdst) # indexerad adress
  • CMPCond Rdst, RsrcA , RsrcB # CMPICond
  • Forts.

IS1200 Datorteknik, föreläsning 3

branch on condition nios ii instructions
Branch on ConditionNios-II-instructions
  • BEQ rA, rB, Label

if rA==rB then PC:=PC+Imm16else PC:=PC+4

  • Bcond rA, rB, Label

if ”true” then PC:=PC+Imm16else PC:=PC+4

cond = EQ, NE, GT, GE, ...

Label = PCBEQ + 4 + Imm16

Imm16 = Label - PCBEQ - 4

IS1200 Datorteknik, föreläsning 3

macro instruction pseudo instruktion
Macro-instructionPseudo-instruktion

TYPEXEMPEL – MALL

.macro NOP

ADD r0, r0, r0

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

NOP – No Operation – som inte gör något mer än att förbruka tid

(case sensitive !!!)

IS1200 Datorteknik, föreläsning 3

macro instruction pseudo instruktion1
Macro-instructionPseudo-instruktion

TYPEXEMPEL – MALL

.macro CLR reg

MOVI \reg, 0x0

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

CLR %ri för att nollställa register %ri

MOVI görs med ADDI !!!

(case sensitive !!!)

IS1200 Datorteknik, föreläsning 3

slide14

NEG reg

Skriv makro för NEG-instruktion

.macro NEG reg

SUB \reg, r0, \reg

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

NEG rA, för att ta fram 2-komplementet

av innehållet i ett register, rA

(case sensitive !!!)

IS1200 Datorteknik, föreläsning 3

slide15

SWAPR regA, regB

(utmaning)

Skriv makro för swap-instruktion med 2 register

.macro SWAPR reg1, reg2XOR \reg1, \reg1, \reg2... #här saknas en del... #icketrivial kod

.endm

Effekt: man kan använda en ny (pseudo-) instruktion

SWAPR rA, rB för att byta plats på

innehåll i rA och rB (begräsningar ?)

IS1200 Datorteknik, föreläsning 3

n got om nios ii
Något om Nios-II

Nios-II-processorn

Varje instruktion i Nios-II upptar 32 bitar !

Det finns endast 3 olika instruktionsformat

  • R-format
  • I-format
  • J-format

IS1200 Datorteknik, föreläsning 3

slide17

INSTRUKTIONSFORMAT

Nios-II: R-type

add rC, rA, rB #rC  rA + rB

A

B

C

OPX

OP

5 5 5 11 6

Andra exempel: sub, and, or, xor, ...

IS1200 Datorteknik, föreläsning 3

slide18

INSTRUKTIONSFORMAT

Nios-II: I-type

addi rB, rA, IMM16 #rB  rA + sext(IMM16)

A

B

IMM16

OP

5 5 16 6

Andra exempel: subi, andi, ori, orhi, xori, ...

IS1200 Datorteknik, föreläsning 3

slide19

INSTRUKTIONSFORMAT

Nios-II: J-type

call label #PC  (PC31..28 :IMM26x4)

IMM26

OP

26 6

Enda exempel: call !!! (och snart JMPI)

IS1200 Datorteknik, föreläsning 3

slide20

ori rB, rA, IMM16

Instruktion i Nios-2, I-type

ori rB, rA, IMM16 #rB  rA | (0x0000:IMM16)

A

B

IMM16

OP

5 5 16 6

Komplettera IMM16 med nollor

i de 16 mest signifikanta bitarna.

Gör or-operation med innehåll i rA

Skriv resultat till rB

IS1200 Datorteknik, föreläsning 3

slide21

orhi rB, rA, IMM16

Instruktion i Nios-2, I-type

orhi rB, rA, IMM16 #rB  rA | (IMM16:0x0000)

A

B

IMM16

OP

5 5 16 6

Komplettera IMM16 med nollor

i de 16 minst signifikanta bitarna.

Gör or-operation med innehåll i rA

Skriv resultat till rB

IS1200 Datorteknik, föreläsning 3

ladda ett register med ett konstant v rde nios ii
Ladda ett register med ettkonstant värde, Nios-II
  • 16-bitars värde

MOVI rB, IMMED

movi r6, -30 #sign extension to 32 bits

”movi is implemented as addi rB, r0, IMMED”

  • 32-bitars värde

MOVIA rB, Value #Value is any 32 bits

might be implemented as (but it is not!?)

orhi rB, r0, %hi(Value) #fyller ut med nollor

ori rB, rB, %lo(Value) #fyller ut med nollor

IS1200 Datorteknik, föreläsning 3

hj lp fr n vers ttaren
Hjälp från översättaren

%hi (value)

%lo (value)

= value32

Imm116

Imm216

orhi rB, r0, %hi(Value) #fyller ut med nollor

ori rB, rB, %lo(Value) #fyller ut med nollor

orhi rB, r0, Imm1 #fyller ut med nollor

ori rB, rB, Imm2 #fyller ut med nollor

IS1200 Datorteknik, föreläsning 3

slide24

MOVIA Rdest, Addr

Nios-II macro

Skriv makro för ladda register med 32 bitars värde

.macro MOVI32 reg, value

ORHI \reg, r0, %hi(\value)ORI \reg, \reg, %lo(\value)

.endm

OBS att inga registerinnehåll “förstörs”

MOVIA är implementerad på annat (fel) sätt!

IS1200 Datorteknik, föreläsning 3

slide25

Fetch

Operand

Write

Back

Fetch

Instruction

Register

File

32 x 32

EXecute/

MEMory

PC+k/PC+Imm

Program

Memory

m x 8

Register

File

32 x 32

LOAD och STOREi fyra stegs pipeline

ADD

PC

RWM

true/false

ALU

op-code

NVZC

Logik för

villkorligt

hopp

CCR

IS1200 Datorteknik, föreläsning 3

load och store i 4 stegs pipeline
LOAD och STOREi 4 stegs pipeline

Vi kan utföra instruktionerna LDW Rdst, (Raddr) STW Rsrc , (Raddr)

IS1200 Datorteknik, föreläsning 3

behov av indexerad adress
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/STORE

IS1200 Datorteknik, föreläsning 3

programvariabler placeras samlade i minnet
Programvariabler placerassamlade i minnet
  • Variabler

int i;

int j;

int k;

  • läggs efter varanni minnet av kompilatorn

minne

i

j

k

IS1200 Datorteknik, föreläsning 3

ett register pekar ut variabelarean

minne

Ett register pekar ut variabelarean
  • Vid programstart tilldelas registret adressen till variabelarean i minnet
  • Global pointer är r26 i Nios-II

i

j

register

k

r26

IS1200 Datorteknik, föreläsning 3

varje load store beh ver adressber kning med add

minne

Varje LOAD/STORE behöver adressberäkning med ADD
  • k ska hämtas till R2
  • R17 är ledigt
  • ADDI R17 <- R26 + 8
  • LOAD R2 <- (R17)
  • En extra instruktion
  • En extra klockcykel
  • Extra krångel i programkoden

i

j

register

k

r26

IS1200 Datorteknik, föreläsning 3

indexerad adress

minne

Indexerad adress
  • Addition i LOAD-instruktionen
  • LOAD R2 ← 8(R26)
  • innebärR2 ← hm(r26+8)
  • Innehåll i R26, plus talet 8, blir minnesadress

i

j

register

k

r26

IS1200 Datorteknik, föreläsning 3

slide32

LOAD och STORE

I Nios-II finns instruktionerna LDW Rdst, Offset (Raddr ) STW Rsrc , Offset( Raddr )

(De kan inte utföras i en 4 stegs pipeline utan behöver en 5 stegs pipeline som presenteras senare i kursen)

IS1200 Datorteknik, föreläsning 3

slide33

Typisk hopp-instruktionJUMP (Raddr)

  • Kopiera registerinnehåll till PC
  • Register med 32 bitar betyder att32 bits adress kan användas
  • Hur får man 32 bits adress till registret ?
  • MOVIA Raddr , Imm32 eller motsvarande

IS1200 Datorteknik, föreläsning 3

slide34

Nios-II hopp-instruktionJMP rA

  • Kopiera innehållet i angivet register till PC

IS1200 Datorteknik, föreläsning 3

om man vill kan man inf ra eget makro jumpa addr
Om man vill kan man införaeget makro: JUMPA addr

# Ladda ett 32 bitars värde till PC

# Hopp med absolutadressering

.macro JUMPA addrMOVIA r1, \addrJMP r1

.endm

OBS att innehåll i reg r1 “förstörs”

r1 kallas även “at” – assembler temporary

IS1200 Datorteknik, föreläsning 3

metoder funktioner subrutiner
Metoder, funktioner, subrutiner
  • Hur sker anrop ?
  • Med “hopp”-instruktion !
  • Hur sker återhopp ?
  • Med “hopp”-instruktion !
  • Returadress måste lagras ! Var ?
  • I register eller minne !

IS1200 Datorteknik, föreläsning 3

subrutinanrop
Subrutinanrop

RUT: ADD …

RETURN

CALL RUT

RET1: ADD …

CALL RUT

RET2: SUB ...

IS1200 Datorteknik, föreläsning 3

slide38

Subrutinanrop i flera nvåer(nested procedures)

RUT: ADD …

CALL FKN

RETURN

FKN: MUL …

CALL NEW

RETURN

CALL RUT

RET1: ADD …

CALL RUT

RET2: SUB ...

IS1200 Datorteknik, föreläsning 3

slide39

Subrutinanrop, rekursion

RUT: ADD …

CALL RUT

RETURN

CALL RUT

RET1: ADD …

CALL RUT

RET2: SUB ...

IS1200 Datorteknik, föreläsning 3

metoder funktioner subrutiner1
metoder, funktioner, subrutiner,

Hur sker parameteröverföringVar lagras parametrar (register/minne)

  • från anropare till rutinen, inparametrar
  • från rutinen till anroparen, returvärden

Olika typ av parameter

  • värde
  • pekare

IS1200 Datorteknik, föreläsning 3

slide41

Nios-II hopp-instruktionCALLR rA

Liknar JMP rA med tillägg att

  • Returadress sparas i register r31

Returadressen är adressen till instruktionen närmast efter CALLRdvs adress till CALLR ökat med 4 !

IS1200 Datorteknik, föreläsning 3

om man vill kan man inf ra eget makro calla addr
Om man vill kan man införaeget makro: CALLA addr

# Subrutinanrop med absolutadressering

.macro CALLA addrMOVIA r1, \addrCALLR r1

.endm

# OBS att innehåll i reg r1 “förstörs”

IS1200 Datorteknik, föreläsning 3

slide43

Nios-II hopp-instruktionCALL Label

Liknar CALLA med begränsning att

Label måste ligga inom det 256MB område

som anges av de 4 mest signifikanta bitarna

i PC

IS1200 Datorteknik, föreläsning 3

stackhantering
Stackhantering
  • Stack är speciell reserverad plats i minnet
  • stack-pekare pekar på plats i stacken
  • PUSH-operation, lägg på stack
  • POP-operation, hämta från stack

IS1200 Datorteknik, föreläsning 3

stack operationer push och pop
STACKoperationer PUSH och POP

PUSH op:

SP  sp - n mem(sp)  op

POP dst:

dst  mem(sp)

SP  sp + n

n = antal bytes

-

Stack Pointer

SP

+

IS1200 Datorteknik, föreläsning 3

slide46

Nios-II: PUSH reg

# Pusha ett register på stacken

.macro PUSH regSUBI sp, sp, 4 #sp = r27STW \reg, 0(sp)

.endm

# PUSH sp är inte bra

IS1200 Datorteknik, föreläsning 3

slide47

Nios-II: POP reg

# Poppa ett register från stacken

.macro POP regLDW \reg,0(SP) ADDI sp, sp, 4 #sp = r27

.endm

# POP sp är förödande

IS1200 Datorteknik, föreläsning 3

slide48

Nios-II: StackReservera plats, initiera SP

.equ size , 256

.data

.align 2

stack: .fill size, 4, 0

...

.text

movia sp, stack+size*4

-

stack:

Stack Pointer

SP

+

Behöver / SKA inte göras i laborationsprogramvaran !

IS1200 Datorteknik, föreläsning 3

nios ii st d f r stack
Nios-II stöd för stack
  • Stack Pointer = r27 = sp
  • Finns det Stack-operationer ? Nej ! Jo!
  • LDW reg, offset(sp)
  • STW reg, offset(sp)
  • Ingen PUSH- eller POP-instruktion
  • Inga subrutinanrop och returhopp med returadress på stack

IS1200 Datorteknik, föreläsning 3

slide50

Nios-II stöd för subrutiner

  • Anrop med CALLR reg, returadress i register r31 = ra
  • Retur med RETsom medför att r31 kopieras till PC
  • JMP r31 är “illegal” (och leder till exception)

IS1200 Datorteknik, föreläsning 3

allm nt var placeras returadress vid subrutinanrop
Allmänt: Var placerasReturadress 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)

IS1200 Datorteknik, föreläsning 3

slide52

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)

IS1200 Datorteknik, föreläsning 3

slide53

Exempel på parameteröverföringNios-II: i r2-r3 och r4-r7

  • Anroparen lagrar parametrar i r4-r7
  • Anroparen gör CALL eller CALLR varvidreturadress sparas i r31
  • Parametrar finns i r4-r7
  • Det finns 8 ”lediga” register, r8-r15
  • Returvärde ska placeras i r2-r3
  • Returadress i r31, retur ska göras med RET

IS1200 Datorteknik, föreläsning 3

slide54

Anrop av subrutin från subrutin”nested subroutine call”

  • Viktiga registerinnehåll måste skyddas
  • Stacken används för att skydda register.
  • Speciellt returadress i ra måste skyddas
  • Anroparen, caller, har ansvar för register r8-r15caller saved. De får förstöras av den anropade.
  • Den anropade, callee, har ansvar att inte förändra innehåll i r16-r23, callee saved
  • Parametrar i r2-r3 och r4-r7 måste hanteras rätt

IS1200 Datorteknik, föreläsning 3

activation record vid funktionsanrop
Activation Recordvid Funktionsanrop

Stacken används vid funktionsanrop för att i ett aktiveringsblock lagra informationen

  • Inparametrar
  • Återhoppsadress
  • Lokala variabler
  • ...

IS1200 Datorteknik, föreläsning 3

activation record lagring av inparametrar
Activation Recordlagring av inparametrar

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik, föreläsning 3

activation record funktionsanrop returadress
Activation Recordfunktionsanrop, returadress

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

call method

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik, föreläsning 3

activation record save return address
Activation RecordSave return address

param-1

param-2

param-n

method:

push ra

Stack Pointer

-

retaddr

SP

old top

+

IS1200 Datorteknik, föreläsning 3

activation record frame pointer
Activation RecordFrame Pointer

param-1

param-2

param-n

method:

push ra

move fp, sp

Stack Pointer

-

retaddr

SP

Frame Pointer

FP

old top

+

Frame pointer är

r28 i Nios-II

IS1200 Datorteknik, föreläsning 3

activation record local variables
Activation RecordLocal variables

locvar-2

locvar-1

retaddr

param-1

param-2

param-n

method:

push ra

move fp, sp

subi sp, sp, n*4

Stack Pointer

-

SP

Frame Pointer

FP

old top

+

IS1200 Datorteknik, föreläsning 3

adressering i metoden adress relativt frame pointer
Adressering i metodenadress relativt frame pointer

locvar-2

locvar-1

retaddr

param-1

param-2

param-n

param-1 = 1n(fp)

param-2 = 2n(fp)

param-k = kn(fp)

...

locvar-1 = -1n(fp)

locvar-2 = -2n(fp)

Stack Pointer

-

SP

Frame Pointer

FP

+

IS1200 Datorteknik, föreläsning 3

activation record return operation
Activation Recordreturn operation

locvar-2

locvar-1

retaddr

param-1

param-2

param-n

method:

push ra

move fp, sp

subi sp, sp, n*4

”work”

mov sp, fp

pop ra

ret

X

Stack Pointer

-

X

SP

Frame Pointer

FP

old top

+

IS1200 Datorteknik, föreläsning 3

activation record after return to caller
Activation Recordafter return to caller

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

call method

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik, föreläsning 3

activation record after return to caller1
Activation Recordafter return to caller

param-1

param-2

param-n

push param-n

...

push param-2

push param-1

call method

addi sp, sp, 4*n

Stack Pointer

-

SP

old top

+

IS1200 Datorteknik, föreläsning 3

f rel sning 3 inneh ll1
Föreläsning 3Innehåll
  • 4-stegs PIPE-LINE, repetition
  • Nios-II, Instruktioner och -format
  • MACRO, pseudo-instruction,exempel
  • Load och Store med indexerad adress
  • Stack med SP samt PUSH och POP
  • Subrutiner, anrop, retur, parametrar
  • Activation Record, aktiveringsblock

IS1200 Datorteknik, föreläsning 3

spara register vid nestade anrop
Spara registervid nestade anrop

subrutin: push r31

...

call annan1

call annan2

...

pop r31

ret

IS1200 Datorteknik, föreläsning 3

spara register vid nestade anrop1
Spara registervid nestade anrop

subrutin: push r31

use r8 to r15

push8to15

call annan1

call annan2

pop15to8

use r8 to r15

pop r31

ret

IS1200 Datorteknik, föreläsning 3

spara register vid nestade anrop2
Spara registervid nestade anrop

subrutin: push r31

pushr16tor23

use r16 to r23

call annan1

call annan2

use r16 to r23

pop23to16

pop r31

ret

IS1200 Datorteknik, föreläsning 3