22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.

Slides:



Advertisements
Liknande presentationer
EDA 480 – Maskinorienterad Programmering
Advertisements

Föreläsning 1 i programmeringsteknik och Matlab 2D1312
Välkomna till Företagets Logistik
Systemprogrammering för ingenjörer TDBB15 – HT03  Lärare och handledare  Thomas Johansson  Samuel Carlsson
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering  Kursens hemsida  Studentportalen.
En avancerad miniräknare
Datorarkitekturer och operativsystem
NyA – nytt nationellt antagningssystem
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
PICKit2 programmer-to-go
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
Komplettering till övningen De här minnesbilderna visar för körningen nedan vad som händer i minnet stegvis.
Introduktion Logikprogrammering HT-02 Staffan Larsson.
Allmän flygteknik MTM175 Lp 2 06/07.
IS1500 Datorteknik och komponenter
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1 Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1.
EDA Digital och Datorteknik
Styrteknik: Programmering med MELSEC IL PLC2A:1
William Sandqvist C:s minnesmodell.
Operativsystem Vad är det för något ? Varför har man operativsystem ?
OOPJ I, 5p Objektorienterad Programmering i Java.
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
Fastighetsmäklareprogrammet Fastighetsförmedling I Välkommen Viktiga personer, lärare m.m. Upprop Fastighetsmäklareprogrammet Kursplan Kursutvärdering.
William Sandqvist Lab 1 Några slides att repetera inför Lab 1 William Sandqvist
Lösningsförslag 0-nivå Kontextnivå föreläsa examinera Lektioner
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
INTRODUKTION TILL PROGRAMMERING
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
Experimentella metoder i fysik 2009 Inledning Kerstin Jon-And.
Mats Björkman Mälardalens högskola
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Introduktion. Administration Jag, B448, , Kursböcker enligt webben Schema enligt webbenwebben Laborationer 23, 29/10 + 7/11 kl
Kursintroduktion 2 Programmeringsteknik, 4p vt-00 Lärare/handledare Föreläsningar Thomas Johansson ank Marie Nordström
Experimentella metoder 2006 Inledning Kerstin Jon-And.
William Sandqvist IS1500 Datorteknik William Sandqvist
Kursutveckling * - ett e-verktyg för kursprogression Jan Scheffel *Tidigare: ”Kursbeskrivning”
Välkommen till kursen objektorienterad programmering med Java Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
Föreläsning 1 i programmeringsteknik och Matlab 2D1312/ 2D1305 Kursinformation Introduktion till UNIX Introduktion till Emacs Introduktion till Matlab.
Föreläsning2 Operativsystem.
William Sandqvist Är Du bra på for-loopar? Ge triangelns höjd: 12 1> * > *** > *****
William Sandqvist Distributed Computing Client – Server. En skrivarserver kan vara ett exempel på en Client-Server arkitektur. S Burd, Systems.
II1300 Ingenjörsmetodik 7,5 hp HT2010
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
Föreläsning 1 Introduktion till kursen. Algoritmer
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
IF1330 Ellära Växelströmskretsar j  -räkning Enkla filter F/Ö1 F/Ö4 F/Ö6 F/Ö10 F/Ö13 F/Ö15 F/Ö2F/Ö3 F/Ö12 tentamen William Sandqvist F/Ö5.
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
Datorteknik Introduction bild 1 Datorteknik Lärare Schema –Föreläsningar –Lektioner –Laborationer Undervisning Kursmaterial Kursinformation.
Automatisering och robotteknik (1TE621) 10 hp VT11
Bygga dator: CPU och minne
Föreläsning 16: Tentan, att förbereda sig…
Underrubrik (ditt namn)
Grundläggande datavetenskap, 4p
Introduktion till kursen Digitalteknik 3p
Presentationens avskrift:

22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion

22 April 2015IS1200 Datorteknik, föreläsning 12 Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: adress till lärare: Kursansvarig: Johan Wennlund

22 April 2015IS1200 Datorteknik, föreläsning 13 IS1200 Datorteknik  Föreläsningar, 10 st (2x45min)  Övningar, 10 st (2x45min)  Laborationer, 6 st 3 st a’ 4 tim i lablokal, 2 elever per grupp 3 st redovisas muntligt ~50 min/2 elever  Tentamen, (5 tim) 6 uppgifter a’ 10p, 30p ger G  Kurs-anmälan vid Föreläsning 1 (dvs nu!)

22 April 2015IS1200 Datorteknik, föreläsning 14 F1F2F3F4F5F7F8F9F10Ö2Ö1Ö3LAB-1Hemlab-1Ö4Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik F6Ö5Ö6LAB-2

22 April 2015IS1200 Datorteknik, föreläsning 15 Kurslitteratur  Mats Brorsson: Datorsystem Program- och maskinvara  OH-bilder från föreläsningar 1-10, på hemsida  Exempelsamling del 1-10, på hemsida  Lab-PM del 1-6, från hemsidan  Nios2 – manual, på hemsida  Enstaka blad från hemsidan

22 April 2015IS1200 Datorteknik, föreläsning 16 Laborationer Assemblerprogrammering av Nios-processorn  Assembler-programmering på Nios-processorn  I/O på Nios-processorn  Avbrottshantering på Nios-processorn Hemlaborationer  Maskinnära programmering med C  Minnessystem med cache-minnen Prestanda påverkas av parametervärden  Operativsystem, Fördelning av CPU-tid Samverkan mellan processer med semaforer

22 April 2015IS1200 Datorteknik, föreläsning 17 IS1200 Datorteknik Lärare:  Johan Wennlund, kursledare, föreläsare, Övn och lab  Fredrik Lundevall, biträdande kursledare, Övn och lab  Jan Andersson, Övn och lab  Olle Bowallius, Övn och lab  William Sandqvist, Övn och lab  Gunnar Johansson, la

22 April 2015IS1200 Datorteknik, föreläsning 18 Kursen i förhållande till andra kurser Förkunskaper  Elektronik/Digitalteknik - NAND-grindar etc  Datalogi - programmering C/Java Innehåll i efterföljande kurser inom områden  Datorkomm. och Datornät  Operativsystem  Datorteknik fk, Datorarkitektur  Embedded Systems, SystemOnChip Architecture  Parallella Datorsystem  Concurrent Programming

22 April 2015IS1200 Datorteknik, föreläsning 19 IS1200 Datorteknik Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind zProgramexempel: sum = 0 ; for (i=1; i<=17; i=i+1) sum = sum + i; zExempel på digitala komponenter:

22 April 2015IS1200 Datorteknik, föreläsning 110 IS1200 Datorteknik  Föreläsning 1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Adressering - operandutpekning  Hoppinstruktioner

22 April 2015IS1200 Datorteknik, föreläsning 111 Litteraturhänvisningar  Kursboken, valda delar av kapitel 1,2 och 4  läses kursivt  läses  Kap 2: principer, ej MIPS-kod  principer, ej MIPS-kod  4.4 Kopplingen till C, ej MIPS-kod

22 April 2015IS1200 Datorteknik, föreläsning 112 Programexempel 1 zJava-/C-kod int A, B, C;/* variabler, data */... C = A + B;/* program, code/text */...

22 April 2015IS1200 Datorteknik, föreläsning 113 Program i Java/C-kod kompileras/översätts till ASSEMBLER-kod int A, B, C;/* variabler, data */ zöversätts (kompileras) till assembler-kod.data# nu kommer data.align 2# på adress delbar med 4 A:.word 0# plats för en integer /32 bitar B:.word 0# plats för en integer /32 bitar C :.word 0# plats för en integer /32 bitar

22 April 2015IS1200 Datorteknik, föreläsning 114 C = A + B;/* program, code/text */ zöversätts (kompileras) till assembler-kod.text# nu kommer programkod.align2# på adress delbar med 4 LOADR1 <-- A LOADR2 <-- B ADDR3 <-- R1 + R2 STOREC <-- R3 Program i Java/C-kod kompileras/översätts till ASSEMBLER-kod

22 April 2015IS1200 Datorteknik, föreläsning 115 Program i ASSEMBLER-kod assembleras/översätts till Maskinkod / binärkod # maskinkod/binärkod#kommentarer … #LOAD R1 <-- A … #LOAD R2 <-- B … #ADD R3 <-- R1+R … #STORE C <-- R3 # hur många bitar?

22 April 2015IS1200 Datorteknik, föreläsning 116 Viktiga delar i en dator CPU MEM BUS I/O Jämför med kursbokens Figur 1.5 En maskinvaruorienterad vy av ett datorsystem.

22 April 2015IS1200 Datorteknik, föreläsning 117 Viktiga delar i en dator  MEM - Memory/Minne innehåller 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; kommunikation mellan CPU/MEM/IO

22 April 2015IS1200 Datorteknik, föreläsning 118 Programexekvering FETCH (update PC) (decode) EXECUTE

22 April 2015IS1200 Datorteknik, föreläsning 119 Programexekvering  FETCH  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 med 1/2/4...)

22 April 2015IS1200 Datorteknik, föreläsning 120 Programexekvering  EXECUTE  Decode - Avkoda innehållet i IR – Instruction Register dvs lista ut vilken intruktion som bitkoden i IR motsvarar  Execute - Utför denna instruktion

22 April 2015IS1200 Datorteknik, föreläsning 121 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare Jämför med kursbokens Figur 2.3 En enkel modell av MIPS-arkitekturen med minne.

22 April 2015IS1200 Datorteknik, föreläsning 122 A: B: C: LOAD STORE ADD LOAD ADD STORE PROGRAM (.text) DATA (.data) Programexempel 1 PROGRAMRÄKNAREE PROGRAM COUNTER uppdatera öka med vad? 4 eller 2 eller MINNE

22 April 2015IS1200 Datorteknik, föreläsning 123 Assembler-Instruktionen LOADR dst <-- A  LOAD: Läs/Kopiera från minne till register  Destinationsplats är R dst  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

22 April 2015IS1200 Datorteknik, föreläsning 124 Assembler-Instruktionen STOREC <-- R src  STORE: Skriv/Kopiera från register till minne  Källoperand finns i R src  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

22 April 2015IS1200 Datorteknik, föreläsning 125 Assembler-Instruktionen ADDITION, variant 1 zADD R dst, R src1, R src2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register R src1 och R src2 och skriver summan till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 + R src2

22 April 2015IS1200 Datorteknik, föreläsning 126 ADD R dst, R srcA, R srcB ADD Hur många bitar behövs ? 3 regadr + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT binärkodsformat bitar per fält

22 April 2015IS1200 Datorteknik, föreläsning 127 ADD R dst, R srcA, R srcB 0x31 Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar bitar per fält 0x3a0x00

22 April 2015IS1200 Datorteknik, föreläsning 128 Assembler-Instruktionen SUBTRAKTION, variant 1 zSUB R dst, R src1, R src2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register R src1 och R src2 och skriver skillnaden till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 - R src2

22 April 2015IS1200 Datorteknik, föreläsning 129 Programexempel 2 C = A + 17 ; z”kan översättas” till LOADR1 <-- A ADDIR3 <-- R #ny instruktion STOREC <-- R3

22 April 2015IS1200 Datorteknik, föreläsning 130 Assembler-Instruktionen ADDITION, variant 2 zADDI R dst, R src1, data n Utför addition av två värden, som vardera upptar 32 resp. n bitar, hämtade från register R src1 samt ??? och skriver summan till register R dst zEn läsning från minnet (Fetch) ??? zR dst <-- R src1 + data n

22 April 2015IS1200 Datorteknik, föreläsning 131 Assembler-Instruktionen SUBTRAKTION, variant 2 zSUBI R dst, R src1, data n Utför subtraktion mellan två värden som vardera upptar 32 resp. n bitar hämtade från register R src1 samt ??? och skriver skillnaden till register R dst zEn läsning från minnet (Fetch) ??? zR dst <-- R src1 - data n

22 April 2015IS1200 Datorteknik, föreläsning 132 ADDI R dst, R src, data n SUBI R dst, R src, data n ADDI/SUBI Hur många bitar behövs? 16 + n ! Hur stor blir varje instruktion? 16+n! INSTRUKTIONSFORMAT enligt ovan Vilket värde bör man välja för n? 16! n bitar per fält INSTRUKTIONSFORMAT binärkodsformat

22 April 2015IS1200 Datorteknik, föreläsning 133 ADDI R dst, R srcA, Data SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar

22 April 2015IS1200 Datorteknik, föreläsning 134 Operandutpekning Adressering Exempel på varianter ”Var finns operanden”  I register, till exempel i R4 Vilka register finns? t.ex. R0--R31 (”snabbt”)  I minnet, på en viss adress t.ex. 0x046C (”långsamt”)

22 April 2015IS1200 Datorteknik, föreläsning 135 Effektivadress vid operand i minnet  Vid operandutpekning i minnet gäller den Effektiva Adressen är adressen till den plats i minnet där operanden lagras

22 April 2015IS1200 Datorteknik, föreläsning 136 Operandutpekning med operand i minnet zEffektivadress i instruktionens ”adressfält” zEffektivadress i ett register zOperand i instruktionens ”datafält” zIndexerad adressering zSjälvrelativ adressering, PC-relativ z… det finns fler varianter...

22 April 2015IS1200 Datorteknik, föreläsning 137 Direkt adress Absolut adress zInstruktionens adressfält innehåller effektivadressen (EA) zeffektivadressen är adressen till den plats i minnet där operanden lagras till exempel: LOAD reg <- Addr# reg := mem(Addr)

22 April 2015IS1200 Datorteknik, föreläsning 138 Direkt operand (Immediate addressing) zInstruktionens ”adressfält” innehåller operandvärdet zeffektivadress är inte relevant exempel: MOVI reg <- Data#reg := Data

22 April 2015IS1200 Datorteknik, föreläsning 139 Register operand (Register addressing) zEtt register innehåller operandvärdet zeffektivadress är inte relevant zKan kallas direkt via register exempel: MOVE reg1 <- reg2#reg1 := reg2

22 April 2015IS1200 Datorteknik, föreläsning 140 Register indirect addressing (Indirekt adress via register) zEtt register innehåller effektivadressen zEffektivadressen är adressen till den plats i minnet där operanden lagras exempel: LOAD reg1 <- (reg2) #reg1 := mem(reg2)

22 April 2015IS1200 Datorteknik, föreläsning 141 Indexerad adressering (Displacement addressing) zEffektivadressen är adressen till den plats i minnet där operanden lagras zEffektivadressen är summan av innehåll i instruktionens adressfält och innehåll i angivet indexregister exempel: LOAD reg <- offset(indexreg) #reg := mem (offset+indexreg)

22 April 2015IS1200 Datorteknik, föreläsning 142 Indexerad adressering Exempel på specialfall zOffset = 0 ger ”adress i register” zIndexregister innehåller 0 ger direkt (absolut) adress zIndexregister = PC ger själv-relativ adressering PC-relativ adressering LOAD Offset(Indexregister)

22 April 2015IS1200 Datorteknik, föreläsning 143 Självrelativ adressering PC-relativ adressering (specialfall av Indexerad adressering) zEffektivadressen är adressen till den plats i minnet där operanden lagras zEffektivadressen är summan av innehåll i instruktionens adressfält och (aktuellt) innehåll i Program Counter (PC)

22 April 2015IS1200 Datorteknik, föreläsning 144 init start Java/C-kod: for-loop ger behov av hopp Cond ? Next False True init; for (start; cond; update) body; leder till flödes-schema enligt figur till höger Vi får behov av HOPP OVILLKORLIGT HOPP VILLKORLIGT HOPP Test: Bodyupdate

22 April 2015IS1200 Datorteknik, föreläsning 145 Effektiv adress vid hoppinstruktioner  Vid hoppinstruktioner gäller: Den Effektiva Adressen är det värde som skrivs till PC dvs adressen till den plats i minnet där programmet ska fortsätta

22 April 2015IS1200 Datorteknik, föreläsning 146 Ovillkorliga hopp JUMP 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:

22 April 2015IS1200 Datorteknik, föreläsning 147 BRA Label # symbolisk adress översätts till BRA disp# numerisk displacement av översättaren/assemblern RUT:ADD … t.ex :BRA RUT 500:ADD … 520:BRA -24

22 April 2015IS1200 Datorteknik, föreläsning 148 JMP Label # symbolisk adress översätts till JMP addr# numerisk absolutadress av översättaren/assemblern RUT:ADD … t.ex :JMP RUT 500:ADD … 520:JMP 500

22 April 2015IS1200 Datorteknik, föreläsning 149 JMP ger icke relokerbar kod på grund av absolut adressering RUT:ADD … t.ex JMP 500 relokering RUT:ADD … ny plats JMP 500 hopp till fel plats Före relokering Efter relokering

22 April 2015IS1200 Datorteknik, föreläsning 150 BRA ger relokerbar kod tack vare PC-relativ adressering RUT:ADD … t.ex BRA -24 RUT:ADD … ny plats BRA -24 relokering hopp till rätt plats Före relokering Efter relokering

22 April 2015IS1200 Datorteknik, föreläsning 151 Ovillkorligt hopp BRA, Branch Always  BRA Label  Hoppa (alltid) till Label dvs  Kopiera värdet Label till PC  Nästa instruktion som hämtas finns vid adressen Label  En läsning från minnet (Fetch) ?  Hur anges Label? Adressering ! Översättaren räknar fram koden

22 April 2015IS1200 Datorteknik, föreläsning 152 Villkorligt hopp Bcond, Branch on condition Bcond Label zOm villkoret är sant hoppa till Label zOm villkoret är falskt (= ej sant) fortsätt som vanligt utan hopp zVad menas med villkoret ?

22 April 2015IS1200 Datorteknik, föreläsning 153 CC - Condition Code zCondition Code - CC zRegister som innehåller information om utfall av tidigare operationer/instruktioner zZ - Zero zN - Negative zC - Carry zV - oVerflow z… det kan finnas fler typ Odd, Parity...

22 April 2015IS1200 Datorteknik, föreläsning 154 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare Jämför med kursbokens Figur 2.3 En enkel modell av MIPS-arkitekturen med minne.

22 April 2015IS1200 Datorteknik, föreläsning 155 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status

22 April 2015IS1200 Datorteknik, föreläsning 156 Instruktionen (i repris) ADDITION, variant 1 zADD R dst, R src1, R src2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register R src1 och R src2 skriver summan till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 + R src2 samt att CC påverkas

22 April 2015IS1200 Datorteknik, föreläsning 157 Instruktionen (i repris) SUBTRAKTION, variant 1 zSUB R dst, R src1, R src2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register R src1 och R src2 skriver skillnaden till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 - R src2 samt att CC påverkas

22 April 2015IS1200 Datorteknik, föreläsning 158 Nytt: Instruktion COMPARE, variant 1 zCMP R src1, R src2 utför jämförelse (subtraktion) mellan två värden som vardera upptar 32 bitar hämtade från register R src1 och R src2 skriver INTE skillnaden till register R dst men påverkar innehåll i Condition Code - CC zCC <-- f(R src1 - R src2 )

22 April 2015IS1200 Datorteknik, föreläsning 159 Programexempel zJava-/C-kod int op1, op2;/* variabler, data */... /* program, code/text */ if (op1 == op2) goto Label;... zöversätts (kompileras) till assembler-kod (forts.)

22 April 2015IS1200 Datorteknik, föreläsning 160 CMP op1, op2 BEQ Label CMP op1, op2 utförs som SUB op1, op2 resultat = op1 minus op2, resultat = 0 betyder att op1 - op2 = 0 dvs samma som att op1 = op2 CMP op1, op2 BEQLabel Hoppa till Label om op1 lika med op2

22 April 2015IS1200 Datorteknik, föreläsning 161 Nios II – dialekt: BEQ op1, op2, Label CMP op1, op2 BEQLabel Hoppa till Label om op1 lika med op2 Alternativ möjlighet (Nios II) BEQ op1, op2, Label Hoppa till Label om op1 lika med op2

22 April 2015IS1200 Datorteknik, föreläsning 162 CMP op1, op2 Exempel på ”utfall” zEQ: op1 Equal to op2 zNE: op1 Not Equal to op2 zGE: op1 Greater than or Equal to op2 zLT: op1 Less Than op2 zGT: op1 Greater Than op2 zLE: op1 Less than or Equal to op2 z... det finns fler...

22 April 2015IS1200 Datorteknik, föreläsning 163 Bcond Label Exempel på ”cond” och CC zEQ:# Z=1 zNE: # Z=0 zGE: # N=0 zLT:# N=1 zGT: # Z=0 and N=0 zLE: # Z=1 or N=1 z... det finns fler... (CS-Carry Set,...)

22 April 2015IS1200 Datorteknik, föreläsning 164 Bcond Label Bcond op1, op2, Label zMånga CPU:er Nios II m.fl. BNE LabelBNE reg1, reg2, Label BGE Label BGE reg1, reg2, Label BLT Label BLT reg1, reg2, Label BGT Label BGT reg1, reg2, Label BLE Label BLE reg1, reg2, Label z... det finns fler... (CS-Carry Set,...)

22 April 2015IS1200 Datorteknik, föreläsning 165 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 ovan Vilket värde bör man välja för n? 10/26! INSTRUKTIONSFORMAT 6 n bitar per fält

22 April 2015IS1200 Datorteknik, föreläsning 166 JMP rA INSTRUKTIONSFORMAT Nios II 0x0d bitar per fält 0x3a0 00 JMP med register indirekt adress INSTRUKTIONSFORMAT enligt ovan Hur stort hopp har man ? PC := (rA)# 32 bitars adress !

22 April 2015IS1200 Datorteknik, föreläsning 167 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 ovan Vilket värde bör man välja för n? 10/26!

22 April 2015IS1200 Datorteknik, föreläsning 168 BR med PC-relativ adressering Displacement lagras i IMM16 BR Label INSTRUKTIONSFORMAT Nios II bitar per fält 0x06 00 IMM16 PC  PC signext(IMM16)

22 April 2015IS1200 Datorteknik, föreläsning 169 IS1200 Datorteknik  Föreläsning 1, innehåll  CPU - BUS - MEM  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Adressering - operandutpekning  Hoppinstruktioner

22 April 2015IS1200 Datorteknik, föreläsning 170 Viktiga delar i en dator CPU MEM BUS I/O

22 April 2015IS1200 Datorteknik, föreläsning 171 Programexekvering FETCH (update PC) (decode) EXECUTE

22 April 2015IS1200 Datorteknik, föreläsning 172 Dual-core / Multi-core CPU MEM BUS I/O CPU...