75
June 20, 2022 IS1500 Datorteknik o k, föreläsning CE - F1 1 IS1500 Datorteknik och komponenter Föreläsning CE F1 Computer Engineering Introduktion

IS1500 Datorteknik och komponenter

  • Upload
    denton

  • View
    58

  • Download
    2

Embed Size (px)

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

Citation preview

Page 1: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 1

IS1500 Datorteknik och komponenter

Föreläsning CE F1Computer Engineering

Introduktion

Page 2: IS1500 Datorteknik och komponenter

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

Page 3: IS1500 Datorteknik och komponenter

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

Page 4: IS1500 Datorteknik och komponenter

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

Digitala komponenter

Assemblerprogram

C

In- och utmatning

Avbrott och "trap"

CacheminnenTrådar, synkronisering

DC F1

DC F2

CE F1

CE F3

CE F4

CE F5

CE F6

CE F7

CE F8

CE F9

CE F2

DC Ö1

DC Ö2

CE Ö4

CE Ö1

CE Ö2

CE Ö3

CE Ö7

CE Ö8

CE Ö9

CE Ö5 CE Ö6

lab dicom

lab nios2time

hemlab C

lab nios2io

lab nios2int

hemlab cache

hemlab trådar

CE F10 CE Ö10 tentamenApril 20, 2023 4

IS1500 Datorteknik o k, föreläsning CE - F1

Page 5: IS1500 Datorteknik och komponenter

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

Page 6: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 6

IS1500 DatorteknikLärare:Fredrik Lundevall,

kursledare, föreläsare, Övn och labJohan Wennlund,

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

William Sandkvist, Övn och labGunnar Johansson, labEventuellt ytterligare

Page 7: IS1500 Datorteknik och komponenter

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

Page 8: IS1500 Datorteknik och komponenter

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

Page 9: IS1500 Datorteknik och komponenter

Köp Nios2-Manual till övningar

Nios II Processor Reference HandbookChap 3 & 8

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

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 9

Page 10: IS1500 Datorteknik och komponenter

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 */...

Page 11: IS1500 Datorteknik och komponenter

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

Page 12: IS1500 Datorteknik och komponenter

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

Page 13: IS1500 Datorteknik och komponenter

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?

Page 14: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 14

Viktiga delar i en dator

CPU

MEM

BUS

I/Oprogram

data

Page 15: IS1500 Datorteknik och komponenter

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

Page 16: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 16

Programexekvering

FETCH(update PC)

(decode)EXECUTE

HÄMTA UTFÖR

Page 17: IS1500 Datorteknik och komponenter

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 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 ...)

Page 18: IS1500 Datorteknik och komponenter

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

Page 19: IS1500 Datorteknik och komponenter

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.

Page 20: IS1500 Datorteknik och komponenter

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

Page 21: IS1500 Datorteknik och komponenter

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

Page 22: IS1500 Datorteknik och komponenter

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

Page 23: IS1500 Datorteknik och komponenter

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

Page 24: IS1500 Datorteknik och komponenter

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

Page 25: IS1500 Datorteknik och komponenter

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

Page 26: IS1500 Datorteknik och komponenter

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

Page 27: IS1500 Datorteknik och komponenter

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

Page 28: IS1500 Datorteknik och komponenter

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

Page 29: IS1500 Datorteknik och komponenter

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

Page 30: IS1500 Datorteknik och komponenter

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

Page 31: IS1500 Datorteknik och komponenter

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? 16 + 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

Page 32: IS1500 Datorteknik och komponenter

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

Page 33: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 33

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. 0x046C (”långsamt”, minnet finns utanför CPU-chipet)Hur många platser finns? (~många !)

Page 34: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 34

Effektivadressvid operand i minnet

Vid operandutpekning i minnet gäller

Effektiva Adressen äradressen till den plats i minnet

däroperanden lagras

Page 35: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 35

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 ...

Page 36: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 36

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

Page 37: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 37

Direkt operand(Immediate addressing)

Instruktionens ”adressfält” innehålleroperandvärdet

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

MOVI reg Data

Page 38: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 38

Register operand(Register addressing)

Ett register innehålleroperandvärdet

effektivadress är inte relevantKan betecknas direkt via registerexempel:MOVE reg1 <- reg2 #reg1 := reg2

MOVE reg reg ???

Page 39: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 39

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 ???

Page 40: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 40

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

Page 41: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 41

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)

Page 42: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 42

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)

Page 43: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 43

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

Page 44: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 44

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

OVILLKORLIGT HOPP

VILLKORLIGT HOPP

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

Test:

Body

update

Page 45: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 45

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

Page 46: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 46

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:

Page 47: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 47

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

Page 48: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 48

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

Page 49: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 49

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

Page 50: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 50

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

Page 51: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 51

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

Page 52: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 52

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 ?

Page 53: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 53

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 ...

Page 54: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 54

Processorn(t.ex Nios eller MIPS eller …)

R0

R31

R1 PC

MinneGenerella register Programräknare

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

Page 55: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 55

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.

Page 56: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 56

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

Page 57: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 57

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

Page 58: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 58

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 skillnaden till register Rdst

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

CC <-- f(Rsrc1 - Rsrc2)

Page 59: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 59

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)

Page 60: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 60

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

Page 61: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 61

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

Page 62: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 62

Nios II – dialekt:CMPcond Rdst ,Rop1 ,Rop2

CMPEQ Rd, Rx, Ry ;Rd:=1 if True

BNE 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

Page 63: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 63

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

Page 64: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 64

CMP op1, op2Exempel på ”utfall”

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

Page 65: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 65

Bcond LabelExempel på ”cond” och CC

EQ: # Z=1NE: # Z=0GE: # N=0 LT: # N=1GT: # Z=0 and N=0LE: # Z=1 or N=1. . . det finns fler . . . (CS-Carry Set, . . .)

Page 66: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 66

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, . . .)

Page 67: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 67

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

Page 68: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 68

JMP rA

INSTRUKTIONSFORMATNios 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 !

Page 69: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 69

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!

Page 70: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 70

BR med PC-relativ adresseringDisplacement lagras i IMM16

BR Label

INSTRUKTIONSFORMATNios II

5 5 16 6 bitar per fält

0x0600 IMM16

PC PC + 4 + signext(IMM16)

Page 71: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 71

Bcond med PC-relativ adresseringDisplacement lagras i IMM16

BCond RA, RB, Label

INSTRUKTIONSFORMATNios II

5 5 16 6 bitar per fält

condBA IMM16

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

Page 72: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 72

IS1200 Datorteknik

Föreläsning 1, innehåll

CPU - BUS - MEMFetch - ExecuteInstruktioner och DataInstruktionsformatAdressering - operandutpekningHoppinstruktioner

Page 73: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 73

Viktiga delar i en dator

CPU

MEM

BUS

I/Oprogram

data

Page 74: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 74

Programexekvering

FETCH(update PC)

(decode)EXECUTE

Page 75: IS1500 Datorteknik och komponenter

April 20, 2023IS1500 Datorteknik o k,

föreläsning CE - F1 75

Dual-core / Multi-core

CPU

MEM

BUS

I/O

CPU......