is1500 datorteknik och komponenter

78
March 16, 2022 IS1500 Datorteknik o k, föreläsning CE - F1 1 IS1500 Datorteknik och komponenter Föreläsning CE F1 Computer Engineering Introduktion

Upload: zenia-chang

Post on 01-Jan-2016

38 views

Category:

Documents


2 download

DESCRIPTION

IS1500 Datorteknik och komponenter. Föreläsning CE F1 Computer Engineering Introduktion. Välkommen till fortsättning av IS1500 Datorteknik och komponenter. ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1500 emailadress till lärare: - PowerPoint PPT Presentation

TRANSCRIPT

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 1

IS1500 Datorteknik och komponenter

Föreläsning CE F1Computer Engineering

Introduktion

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 2

Välkommen till fortsättning av

IS1500 Datorteknik och komponenter

”Hur datorer fungerar”

Kursens hemsida finns utpekad från:http://www.ict.kth.se/courses/IS1500

emailadress till lärare:[email protected]

Kursansvarig: Fredrik Lundevall

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 3

IS1500 Datorteknik o kCE - Computer EngineeringDatorns funktion på olika nivåer

från JAVA/C-kod till NAND-grind Programexempel:sum = 0 ;for (i=1; i<=17; i=i+1) sum = sum + i;

Exempel på digitala komponenter:

&Q

Q’

Dpreset

clclear

Digitala komponenter

Assemblerprogram

C

In- och utmatning

Avbrott och "trap"

Cacheminnen

Trådar, synkronisering

DC F1

DC F2

CE F1

CE F3

CE F4

CE F5

CE F6

CE F7

CE F8

CE F9

CE F10

CE F2

DC Ö1

DC Ö2

CE Ö4

CE Ö1

CE Ö2

CE Ö3

CE Ö10

CE Ö7

CE Ö8

CE Ö9

CE Ö6

CE Ö5

lab dicom

lab nios2time

hemlab C

lab nios2io

lab nios2int

hemlab cache

hemlab trådar

tentamen

April 20, 2023 4IS1500 Datorteknik o k, föreläsning

CE - F1

IS1500 Datorteknik o k http://www.ict.kth.se/courses/IS1500

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 5

LaborationerCE – Computer Engineering

Assemblerprogrammering av Nios-processorn1. Enkla program på Nios-processorn (nios2time)2. I/O på Nios-processorn (nios2io)3. Avbrottshantering på Nios-processorn (nios2int)

Hemlaborationer1. Maskinnära programmering med C (”C-labben”)2. Minnessystem med cache-minnen (”Cache-labben”)

Prestanda påverkas av parametervärden3. Operativsystem, (”OS-labben”)

Fördelning av CPU-tidSamverkan mellan processer med semaforer

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 6

IS1500 DatorteknikLärare: Fredrik Lundevall,

kursledare, föreläsare, Övn och lab Johan Wennlund,

biträdande kursledare, föreläsare, Övn och lab

Artur Podobas, Övn och lab Joel Pettersson, Övn och lab Gunnar Johansson, lab Eventuellt ytterligare

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 7

IS1500 Datorteknik

Föreläsning CE F1, innehåll

CPU - BUS – MEM – I/OFetch - ExecuteInstruktioner och DataInstruktionsformatAdressering - operandutpekningHoppinstruktioner

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 8

Litteraturhänvisningar

Kursboken, valda delar av kapitel 2,Speciellt sidorna

74-101105-108128-136

Köp Nios2-Manual till övningar

Nios II Processor Reference HandbookChap 3 & 8

Finns att läsa på nätethttp://www.ict.kth.se/courses/IS1500/2012/kurslitt/

n2cpu_nii5v1.pdf

Ev. att köpa på ”Delfi-STEX” 40:-(eller skriv ut själv)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 9

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 10

Nu börjar det !Programexempel

Java-/C-kod int A, B, C;/* variabler, data */...C = A + B; /* program, code/text */...

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 11

Program i Java/C-kodkompileras/översätts till

ASSEMBLER-kodint A, B, C; /* variabler, data */ översätts (kompileras) till assembler-kod.data # nu kommer data.align 2 # på adress delbar med 4A: .word 0 # plats för en integer /32 bitarB: .word 0 # plats för en integer /32 bitarC : .word 0 # plats för en integer /32 bitar

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 12

C = A + B; /* program, code/text */översätts (kompileras) till assembler-kod.text # nu kommer programkod.align 2 # på adress delbar med 4

LOAD R1 <-- ALOAD R2 <-- BADD R3 <-- R1 + R2STORE C <-- R3

Program i Java/C-kodkompileras/översätts till

ASSEMBLER-kod

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 13

Program i ASSEMBLER-kod assembleras/översätts till

Maskinkod / binärkod

# maskinkod/binärkod #kommentarer0010 1101 1111 …. 1101 #LOAD R1 <-- A 0010 1101 1110 …. 1101 #LOAD R2 <-- B1001 1101 0101 …. 1111 #ADD R3 <--

R1+R20011 1111 1101 …. 0010 #STORE C <-- R3# hur många bitar?

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 14

Viktiga delar i en dator

CPU

MEM

BUS

I/Oprogram

data

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 15

Viktiga delar i en dator MEM - Memory/Minne lagrar program och

data (Minne = Lagringsplats) CPU - Central Processing Unit; den enhet

som ”kör program” dvs hämtar och utför instruktioner

IO - Input/Output; enheter för kommunikation med omvärlden

BUS; överföring av information/bitar mellan CPU/MEM/IO

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 16

Programexekvering

FETCH(update PC)

(decode)EXECUTE

HÄMTA UTFÖR

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 17

Programexekvering

FETCH - HÄMTA PC - Program Counter innehåller en

minnesadress som pekar ut aktuell instruktion.

Kopiera (läs) en instruktion från minne till processorns IR - Instruction Register

Uppdatera PC för att peka ut nästa instruktion (öka PC med 1/2/4 ...)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 18

Programexekvering

EXECUTE - UTFÖR Decode - Avkoda innehållet i IR –

Instruction Register dvs ”lista ut” vilken instruktion som bitkoden i IR motsvarar

Execute - Utför denna instruktion

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 19

Processorn(t.ex Nios eller MIPS eller …)

R0

R31

R1 PC

MinneGenerella register Programräknare

En förenklad bild av NiosII-arkitekturen med minne.

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 20

A:B:C:

LOAD

LOAD

STORE

ADD

LOADLOADADDSTORE

PROGRAM(.text)

DATA(.data)

Programexempel 1

PROGRAMRÄKNAREEPROGRAM COUNTER uppdatera

öka med vad?4 eller 2 eller

MINNE

Assembler-instruktionervilka behövs ? exempel !

LOAD kopiera från minne till CPUADD utför aritmetisk operationSTORE kopiera från CPU till minneSUB utför aritmetisk operationADDI Add ImmediateSUBI Subtract Immediate... flera ”införs” vid behov ...

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 21

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 22

Assembler-InstruktionenLOAD Rdst <-- A

LOAD: Läs/Kopiera från minne till register

Destinationsplats är Rdst

Källoperanden finns i minnet på adress A Effektivadressen till källoperanden är A

En läsning från minnet i Fetch En läsning från minnet i Execute

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 23

Assembler-InstruktionenSTORE C <-- Rsrc

STORE: Skriv/Kopiera från register till minne

Källoperand finns i Rsrc

Destinationsplats i minnet på adress C Effektivadressen till destinationen är C

En läsning från minnet i Fetch En skrivning till minnet i Execute

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 24

Assembler-InstruktionenADDITION

ADD Rdst, Rsrc1 , Rsrc2

Utför addition av två värden,som vardera upptar 32 bitar,hämtade från register Rsrc1 och Rsrc2

och skriver summan till register Rdst

En läsning från minnet (Fetch)Rdst Rsrc1 + Rsrc2

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 25

ADD Rdst, RsrcA, RsrcB

ADD

Hur många bitar behövs ? 3 regadr + opcode !Hur stor blir varje instruktion ? 21 bitar !INSTRUKTIONSFORMAT enligt ovan

INSTRUKTIONSFORMATBinärkodsformat

6 5 5 5 bitar per fält

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 26

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, 32 bitar

5 5 5 6 5 6 bitar per fält

0x3a0x00

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 27

Assembler-InstruktionenSUBTRAKTION

SUB Rdst, Rsrc1 , Rsrc2

Utför subtraktion mellan två värdensom vardera upptar 32 bitarhämtade från register Rsrc1 och Rsrc2

och skriver skillnaden till register Rdst

En läsning från minnet (Fetch)Rdst Rsrc1 - Rsrc2

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 28

Nytt Programexempel

C = A + 17 # addera med konstant

”kan översättas” tillLOAD R1 <-- AADDI R3 <-- R1 + 17 #ny

instruktionSTORE C <-- R3

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 29

Assembler-InstruktionenADDITION, Add Immediate

ADDI Rdst, Rsrc1 , datan

Utför addition av två värden,som vardera upptar 32 resp. n bitar,hämtade från register Rsrc1 samt ???,

och skriver summan till register Rdst

En läsning från minnet (Fetch) ???Rdst <-- Rsrc1 + datan

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 30

Assembler-InstruktionenSUBTRAKTION, Sub Immediate

SUBI Rdst, Rsrc1 , datan

Utför subtraktion mellan två värdensom vardera upptar 32 resp. n bitarhämtade från register Rsrc1 samt ???,

och skriver skillnaden till register Rdst

En läsning från minnet (Fetch) ???Rdst <-- Rsrc1 - datan

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 31

ADDI Rdst, Rsrc, datan SUBI Rdst, Rsrc, datan

ADDI/SUBI

Hur många bitar behövs? 6 + 5 + 5 + n !Hur stor blir varje instruktion? 16+n!INSTRUKTIONSFORMAT enligt ovanVilket värde bör man välja för n? 16!

6 5 5 n bitar per fält

INSTRUKTIONSFORMATbinärkodsformat

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 32

ADDI Rdst, RsrcA, Data

SUBI rB, rA, IMM16 ADDI rB, rA, -IMM16IMM16 innehåller ett 2-komplement-tal ... Intruktionen SUBI får man ”gratis”

5 5 16 6 bitar per fält

0x04

INSTRUKTIONSFORMATBinärkod i Nios II, 32 bitar

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 33

OperandOperation

En operation utförs på operanderoch ger ett resultatExempel: C = A + BOperander är A och BOperation är +Resultat är C

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 34

OperandutpekningAdressering

Exempel på varianter

”Var finns operanden”1. I register, med namn/nummer, t.ex. i R4

Vilka register finns? t.ex. R0--R31 (~få !) (”snabbt”, register finns inne i CPU-chipet)

2. I minnet, på en viss adress t.ex. 0x046CHur många platser finns? (~många !)(”långsamt”, minnet finns utanför CPU-chipet)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 35

Effektivadressvid operand i minnet

Vid operandutpekning i minnet gäller

Effektiva Adressen äradressen till den plats i minnet

däroperanden lagras

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 36

Operandutpekning medoperand i minnet

Effektivadress i instruktionens ”adressfält”

Effektivadress i ett registerOperand i instruktionens ”datafält”Indexerad adresseringSjälvrelativ adressering, PC-relativ… det finns fler varianter ...

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 37

Direkt adress (ej indirekt)Absolut adress (ej relativ)

Instruktionens adressfält innehållereffektivadressen (EA)

effektivadressen är adressen till den plats i minnet där operanden lagras

till exempel:LOAD reg <- Addr # reg :=

mem(Addr)LOAD reg Addr

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 38

Direkt operand(Immediate addressing)

Instruktionens ”adressfält” innehålleroperandvärdet

effektivadress är inte relevantexempel:MOVI reg <- Data #reg := Data

MOVI reg Data

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 39

Register operand(Register addressing)

Ett register innehålleroperandvärdet

effektivadress är inte relevantAnnat namn är: direkt i registerexempel:MOVE reg1 <- reg2 #reg1 := reg2

MOVE reg reg ???

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 40

Register indirect addressing(Indirekt adress via register)

Ett register innehåller effektivadressenEffektivadressen är adressen till den

plats i minnet där operanden lagrasexempel:LOAD reg1 <- (reg2) #reg1 :=

mem(reg2)

LOAD reg1 reg2 ???

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 41

Indexerad adressering(Displacement addressing)

Effektivadressen är adressen till den plats i minnet där operanden lagras

Effektivadressen är summan avinnehåll i instruktionens adressfält ochinnehåll i angivet indexregister

exempel: LOAD reg <- offset(INDEXREG) reg := mem (offset+indexreg)

LOAD reg indexreg offset

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 42

Indexerad adressering Exempel på specialfall

Offset = 0 ger ”adress i register”Indexregister innehåller 0 ger

direkt (absolut) adressIndexregister = PC ger

PC-relativ adressering=själv-relativ adressering

LOAD Offset(Indexregister)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 43

Självrelativ adresseringPC-relativ adressering

(specialfall av Indexerad adressering)

Effektivadressen är adressen till den plats i minnet där operanden lagras

Effektivadressen är summan avinnehåll i instruktionens adressfält och(aktuellt) innehåll i Program Counter (PC)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 44

Programexekveringvid hopp

FETCH(update PC)

(decode)EXECUTEupdate PC

HÄMTA UTFÖR hopp

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 45

Java/C-kod: if-sats ger behov av hopp

Cond ?

Next

False

Trueif (cond) then body1 else body2;

leder till flödes-schemaenligt figur till höger

Vi får behov av HOPP

VILLKORLIGT HOPP

OVILLKORLIGT HOPP

If:

Body1

Body2

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 46

initstart

Java/C-kod: for-loop ger behov av hopp

Cond ?

Next

False

True

init;

for (start; cond; update) body;

leder till flödes-schemaenligt figur till höger

Vi får behov av HOPP

VILLKORLIGT HOPP

OVILLKORLIGT HOPP

(även while, repeat-until, ...)

Test:

Body

update

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 47

Effektiv adressvid hoppinstruktioner

Vid hoppinstruktioner gäller:

Effektiva Adressen ärdet värde som skrivs till PCdvs adressen till den plats i

minnet där programmet ska fortsätta

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 48

Ovillkorliga hoppJUMP och BRA

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, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 49

JMP Label # symbolisk adressöversätts till

JMP addr# numerisk absolutadressav översättaren/assemblern

RUT: ADD … t.ex.500

520: JMP RUT

500: ADD …

520: JMP 500

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 50

BRA Label # symbolisk adressöversätts till

BRA disp# numerisk displacementav översättaren/assemblern

RUT: ADD … t.ex.500

520: BRA RUT

500: ADD …

520: BRA -24

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 51

JMP ger icke relokerbar kodpå grund av absolut adressering

RUT: ADD … t.ex. 500

520 JMP 500

relokering RUT: ADD …

ny plats

JMP 500

hopp tillfel plats

Före relokering Efter relokering

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 52

BRA ger relokerbar kodtack vare PC-relativ adressering

RUT: ADD … t.ex. 500

520 BRA -24RUT: ADD …

ny plats

BRA -24

relokering

hopp tillrätt plats

Före relokering Efter relokering

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 53

Ovillkorligt hoppBRA, BRanch Always

BRA LabelHoppa (alltid) till Label dvsKopiera värdet Label till PCNästa instruktion som hämtas finns

vid adressen LabelEn läsning från minnet (Fetch) ?Hur anges Label? Adressering !

Översättaren räknar fram koden

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 54

Villkorligt hoppBcond, Branch on condition

Bcond LabelOm villkoret är sant

hoppa till LabelOm villkoret är falskt (= ej sant)

fortsätt som vanligt utan hopp (öka PC med 4)

Vad menas med villkoret ?

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 55

CC - Condition CodeCondition Code - CCRegister som innehåller information om

utfall av tidigare operationer/instruktionerZ - ZeroN - NegativeC - CarryV - oVerflow… det kan finnas fler typ Odd, Parity ...

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 56

Processorn(t.ex Nios eller MIPS eller …)

R0

R31

R1 PC

MinneGenerella register Programräknare

En förenklad bild av NiosII-arkitekturen med minne.

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 57

Gäller för MIPS-Processorn (ej Nios-II)

R0

R31

R1 PC

MinneGenerella register Programräknare

NVZC

Status

En förenklad bild av arkitektur med STATUS-register.

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 58

Instruktionen (i repris)ADDITION, variant 1

ADD Rdst, Rsrc1 , Rsrc2

Utför addition av två värden, som vardera upptar 32 bitar,hämtade från register Rsrc1 och Rsrc2

skriver summan till register Rdst

En läsning från minnet (Fetch)Rdst <-- Rsrc1 + Rsrc2 samt att CC påverkas

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 59

Instruktionen (i repris) SUBTRAKTION, variant 1

SUB Rdst, Rsrc1 , Rsrc2

Utför subtraktion mellan två värdensom vardera upptar 32 bitarhämtade från register Rsrc1 och Rsrc2

skriver skillnaden till register Rdst

En läsning från minnet (Fetch)Rdst <-- Rsrc1 - Rsrc2 samt att CC påverkas

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 60

NYTT: InstruktionCOMPARE, variant 1

CMP Rsrc1 , Rsrc2

utför jämförelse (subtraktion) mellantvå värden som vardera upptar 32 bitarhämtade från register Rsrc1 och Rsrc2

skriver INTE resultatet till register Rdst

men påverkar innehåll i Condition Code - CC

CC <-- f(Rsrc1 - Rsrc2)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 61

ProgramexempelJava-/C-kod int op1, op2; /* variabler, data */.../* program, code/text */ if (op1 == op2) goto Label;... översätts (kompileras) till assembler-kod(forts. på nästa sida)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 62

CMP op1, op2BEQ Label

CMP op1, op2 utförs som SUB op1, op2resultat = op1 minus op2, resultat = 0 betyder att op1 - op2 = 0dvs samma som att (op1 == op2)CMP op1, op2BEQ LabelHoppa till Label om op1 lika med op2

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 63

Nios II – dialekt:BEQ op1, op2, Label

CMP op1, op2BEQ LabelHoppa till Label om op1 lika med op2

Alternativ möjlighet (Nios II)BEQ op1, op2, LabelHoppa till Label om op1 lika med op2

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 64

Nios II – dialekt:CMPcond Rdst ,Rop1 ,Rop2

CMPEQ Rd, Rx, Ry ;Rd:=1 if TrueBNE Rd, R0, LabelHoppa till Label om Rx lika med Ry

Alternativ möjlighet (Nios II)BEQ Rx, Ry, LabelHoppa till Label om op1 lika med op2

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 65

MIPS– dialektScond Rdst ,Rop1 ,Rop2

slt Rd, Rx, Ry ;Rd:=1 if Truebne Rd, R0, LabelHoppa till Label om Rx är ”less than” Ry

”Set on condition”MIPS-alternativ: slt, sltu, slti, sltiuu=unsigned, i=immediate

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 66

CMP op1, op2Exempel på ”villkor”

EQ: op1 Equal to op2NE: op1 Not Equal to op2GE: op1 Greater than or Equal to op2LT: op1 Less Than op2GT: op1 Greater Than op2LE: op1 Less than or Equal to op2. . . det finns fler . . .signed/unsigned

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 67

Bcond LabelExempel på ”cond” och CC

För Unsigned Integer (positiva tal) gällerEQ: # sant om Z=1 (op2-op1 = 0)NE: # sant om Z=0 (op2-op1 != 0)GEU: # sant om C=1 (op2-op1 >= 0) LTU: # sant om C=0 (op2-op1 < 0)GTU: # sant om (Z=0 and C=1) (op2-op1 > 0)LEU: # sant om (Z=1 or C=0) (op2-op1

<= 0). . . det finns fler . . . (CS-Carry Set, . . .)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 68

Bcond LabelExempel på ”cond” och CC

För Signed Integer gäller annat än förra bilden

GE: # sant om ???? (op2-op1 >= 0) LT: # sant om ??? (op2-op1 < 0)GT: # sant om ??? (op2-op1 > 0)LE: # sant om ??? (op2-op1 <= 0). . . det finns fler . . . (CS-Carry Set, . . .)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 69

Bcond LabelBcond op1, op2, Label

Många CPU:er Nios II m.fl.BNE Label BNE reg1, reg2, LabelBGE Label BGE reg1, reg2, LabelBLT Label BLT reg1, reg2, LabelBGT Label BGT reg1, reg2, LabelBLE Label BLE reg1, reg2, Label. . . det finns fler . . . (CS-Carry Set, . . .)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 70

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!

INSTRUKTIONSFORMATprincipiellt

6 n bitar per fält

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 71

JMP rA

INSTRUKTIONSFORMATexempel från Nios II

0x0d

5 5 5 6 5 6 bitar per fält

0x3a00 0

JMP med register indirekt adress

INSTRUKTIONSFORMAT enligt ovanHur stort hopp har man ? PC := (rA) # 32 bitars adress !

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 72

BRA brukar ha PC-relativ adress

BRA Displacement

BRA

INSTRUKTIONSFORMATprincipiellt

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, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 73

BR med PC-relativ adresseringDisplacement lagras i IMM16

BR Label

INSTRUKTIONSFORMATexempel från Nios II

5 5 16 6 bitar per fält

0x0600 IMM16

PC PC + 4 + signext(IMM16)

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 74

Bcond med PC-relativ adresseringDisplacement lagras i IMM16

Bcond RA, RB, Label

INSTRUKTIONSFORMATexempel från Nios II

5 5 16 6 bitar per fält

BcondBA IMM16

True: PC PC + 4 + signext(IMM16)False: PC PC + 4

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 75

IS1200 Datorteknik

Föreläsning 1, innehåll

CPU - BUS - MEMFetch - ExecuteInstruktioner och DataInstruktionsformatAdressering - operandutpekningHoppinstruktioner

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 76

Viktiga delar i en dator

CPU

MEM

BUS

I/Oprogram

data

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 77

Programexekvering

FETCH(update PC)

(decode)EXECUTE

April 20, 2023IS1500 Datorteknik o k, föreläsning

CE - F1 78

Dual-core / Multi-core

CPU

MEM

BUS

I/O

CPU......