15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Visual Basic - Genomgång
EDA 480 – Maskinorienterad Programmering
En avancerad miniräknare
Datorarkitekturer och operativsystem
Persondatorer Datorns internminne (Kapitel 6)
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
2D1311 Programmeringsteknik med PBL
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
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.
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
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.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Styrteknik: Programmering med MELSEC IL PLC2A:1
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
Styrteknik: MELSEC FX och numeriska värden PLC2C:1
William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
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
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
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.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
Varför inte köra alla instruktioner samtidigt? zMåste vänta på: yresultat från andra instruktioner yatt resurser i processorn ska bli lediga yatt få veta.
Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45 Adderare Addition av två tal innebär att samma förfarande upprepas för varje position i talet. För varje.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
2 April 2015 IS1200 Datorteknik o k, föreläsning CE - F31 IS1200 Datorteknik Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4.
2D1311 Programmeringsteknik med PBL
Varför inte köra alla instruktioner samtidigt? zMåste vänta på: yresultat från andra instruktioner yatt resurser i processorn ska bli lediga yatt få veta.
2G1518 Datorteknik Föreläsning 5 Bussar In- och utmatning (Input/Output, I/O) Programstyrd pollning hösten 2005 för D3 och CLMDA m fl.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
1 June 20152G1502, föreläsning 3, vt G1502 Datorteknik allmän kurs Föreläsning 3 Metoder och subrutiner Kursboken, valda delar av kapitel 4 version.
1 June G1518, Förel 10, ht2005 (D3/CLMDA)1 2G1518 Datorteknik, ht 2005 version för D3 och CLMDA Föreläsning Processorkonstruktion 2. DMA, Direct.
1 June G1502, Föreläsning 9, vt2004 för IT1 2G1502 Datorteknik allmän kurs Föreläsning 9 1. Processorkonstruktion 2. DMA, Direct Memory Access 3.
2 June G1502, Föreläsning 8, vt2004 för E och I1 2G1502 Datorteknik allmän kurs Föreläsning 8 Processorkonstruktion DMA, Direct Memory Access.
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
10 June G1518, föreläsning 3, vt2007 (E/I/CLMDA)1 2G1518 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4 vt 2007.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
1 2G1502 Datorteknik allmän kurs Föreläsning 3 Programmering med hopp Programmering av Nios.
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
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.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
3 October 2015 IS1200 Datorteknik ht2009 föreläsning 3, (D2)1 IS1200 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4.
Python.
Grundläggande datavetenskap, 4p
Presentationens avskrift:

15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion

15 August 2015 IS1200 Datorteknik föreläsning CE - F12 Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: adress till lärare: Kursansvarig: Johan Wennlund

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

IS1200 Datorteknik Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab nios2time hemlab C lab nios2io lab nios2int hemlab cache hemlab trådar CE F10CE Ö10 tentamen 15 August IS1200 Datorteknik föreläsning CE - F1

15 August 2015 IS1200 Datorteknik föreläsning CE - F15 IS1200 Datorteknik Lärare:  Johan Wennlund, kursledare, föreläsare, Övn och lab  Fredrik Lundevall, biträdande kursledare, föreläsare, Övn och lab  Artur Podoba, Övn och lab  William Sandqvist, Övn och lab  Jan Andersson, Övn och lab  Ananya Muddukrishna, lab  Gunnar Johansson, lab

15 August 2015 IS1200 Datorteknik föreläsning CE - F16 Laborationer CE – Computer Engineering Assemblerprogrammering av Nios-processorn 1.Enkla program på Nios-processorn (nios2time) 2.I/O på Nios-processorn (nios2io) 3.Avbrottshantering på Nios-processorn (nios2int) Hemlaborationer 1.Maskinnära programmering med C (”C-labben”) 2.Minnessystem med cache-minnen (”Cache-labben”) Prestanda påverkas av parametervärden 3.Operativsystem, (”OS-labben”) Fördelning av CPU-tid Samverkan mellan processer med semaforer

15 August 2015 IS1200 Datorteknik föreläsning CE - F17 Kursen i förhållande till andra kurser Förkunskaper  Datalogi - programmering C/Java  Digitalteknik/Elektronik - NAND-grindar etc

15 August 2015 IS1200 Datorteknik föreläsning CE - F18 IS1200 Datorteknik CE - Computer Engineering 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: NAND-grindD-vippa

15 August 2015 IS1200 Datorteknik föreläsning CE - F19 Kursen i förhållande till andra kurser Förkunskaper  Datalogi - programmering C/Java  Digitalteknik/Elektronik - NAND-grindar etc Efterföljande kurser inom många områden t.ex.  Datorkomm. och Datornät  Operativsystem  Datorteknik fk, Datorarkitektur, Datorsystemarkitektur  Embedded Systems, SystemOnChip Architecture  Parallella Datorsystem  Concurrent Programming

15 August 2015 IS1200 Datorteknik föreläsning CE - F110 Kurslitteratur Kårbokhandeln plan 5  OH-bilder från föreläsningar 1-10, via kurshemsida  Exempelsamling del 1-10, via kurshemsida  Lab-PM del 1-6, via kurshemsidan  Nios2 – manual Chap 3 och 8, (tillgänglig via kurshemsidan)  Enstaka blad från kurshemsidan  Mats Brorsson: Datorsystem Program- och maskinvara (cirka 350:-)

Skaffa er Nios2-Manual redan före övning 1 Nios II Processor Reference Handbook Chap 3 & 8 Finns att köpa på kårbokhandeln 40:- t.ex. i pausen idag 12 – 13 och i morgon fm Finns att läsa/skriva ut via kurshemsidan 15 August 2015 IS1200 Datorteknik föreläsning CE - F111

15 August 2015 IS1200 Datorteknik föreläsning CE - F112 IS1200 Datorteknik  Föreläsning CE F1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Operandutpekning - Adressering  Hoppinstruktioner

15 August 2015 IS1200 Datorteknik föreläsning CE - F113 Litteraturhänvisningar  Kursboken, valda delar av kapitel 1,2 och 4  läses kursivt  läses  Kap 2: principer, ej MIPS-kod, (ej 2.6)  principer, ej MIPS-kod  4.4 Kopplingen till C, ej MIPS-kod

15 August 2015 IS1200 Datorteknik föreläsning CE - F114 Nu börjar det ! Programexempel zJava-/C-kod int A, B, C;/* data, variabler */... C = A + B;/* program, code/text */...

15 August 2015 IS1200 Datorteknik föreläsning CE - F115 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F116 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F117 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?

15 August 2015 IS1200 Datorteknik föreläsning CE - F118 4 Viktiga delar i en dator CPU MEM BUS I/O program data

15 August 2015 IS1200 Datorteknik föreläsning CE - F119 4 Viktiga delar i en dator 1.MEM - Memory/Minne lagrar program och data (Minne = Lagringsplats) 2.CPU - Central Processing Unit; den enhet som ”kör program” dvs hämtar och utför instruktioner 3.IO - Input/Output; enheter för kommunikation med omvärlden 4.BUS; överföring av information/bitar mellan CPU/MEM/IO

15 August 2015 IS1200 Datorteknik föreläsning CE - F120 Programexekvering (i två steg / två faser) FETCH (update PC) (decode) EXECUTE HÄMTAUTFÖR

15 August 2015 IS1200 Datorteknik föreläsning CE - F121 Program Counter - PC PC - Program Counter Är ett register (ett antal vippor) Innehåller i PC är en minnesadress (t.ex. 32 bitar) som pekar på en plats i minnet som innehåller information nämligen aktuell instruktion (t.ex. 32 bitar)

15 August 2015 IS1200 Datorteknik föreläsning CE - F122 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...)

15 August 2015 IS1200 Datorteknik föreläsning CE - F123 Programexekvering  EXECUTE - UTFÖR  Decode - Avkoda innehållet i IR – Instruction Register dvs lista ut vilken intruktion som bitkoden i IR motsvarar  Execute - Utför denna instruktion

15 August 2015 IS1200 Datorteknik föreläsning CE - F124 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare En förenklad bild av NiosII-arkitekturen med minne.

15 August 2015 IS1200 Datorteknik föreläsning CE - F125 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

Assembler-instruktioner vilka behövs ? exempel ! zLOADkopiera från minne till CPU zADDutför aritmetisk operation zSTOREkopiera från CPU till minne z... zSUButför aritmetisk operation zADDIAdd Immediate zSUBISubtract Immediate z...flera ”införs” vid behov August 2015 IS1200 Datorteknik föreläsning CE - F126

15 August 2015 IS1200 Datorteknik föreläsning CE - F127 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F128 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F129 Assembler-Instruktionen ADDITION 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F130 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F131 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F132 Assembler-Instruktionen SUBTRAKTION 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F133 Nytt Programexempel C = A + 17 ; z”kan översättas” till LOADR1 <-- A ADDIR3 <-- R #ny instruktion STOREC <-- R3

15 August 2015 IS1200 Datorteknik föreläsning CE - F134 Assembler-Instruktionen ADDITION, Add Immediate 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F135 Assembler-Instruktionen SUBTRAKTION, Sub Immediate 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F136 ? Hur lagras instruktioner i minnet ! Binärkodat – med nollor och ettor ? Hur många bitar behövs för en instruktion? ! Så att all information finns med ? Vilken information innehåller en instruktion ! Operationskod, operandutpekning INSTRUKTIONSFORMAT binärkodsformat

15 August 2015 IS1200 Datorteknik föreläsning CE - F137 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F138 ADDI R dst, R srcA, Data Intruktionen SUBI får man ”gratis” 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F139 Operandutpekning Adressering Exempel på varianter ”Var finns operanden” 1.I register, till exempel i R4 Vilka register finns? t.ex. R0--R31 (”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)

15 August 2015 IS1200 Datorteknik föreläsning CE - F140 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F141 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...

15 August 2015 IS1200 Datorteknik föreläsning CE - F142 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) LOAD regAddr

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

15 August 2015 IS1200 Datorteknik föreläsning CE - F144 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 MOVE reg ???

15 August 2015 IS1200 Datorteknik föreläsning CE - F145 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) LOAD reg1reg2 ???

15 August 2015 IS1200 Datorteknik föreläsning CE - F1 46 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) LOAD reg indexreg offset

15 August 2015 IS1200 Datorteknik föreläsning CE - F147 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)

15 August 2015 IS1200 Datorteknik föreläsning CE - F148 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)

15 August 2015 IS1200 Datorteknik föreläsning CE - F149 Java/C-kod: if-sats ger behov av hopp Cond ? Next False True if (cond) then body1 else body2; leder till flödes-schema enligt figur till höger Vi får behov av HOPP VILLKORLIGT HOPP OVILLKORLIGT HOPP If: Body1Body2

15 August 2015 IS1200 Datorteknik föreläsning CE - F150 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F151 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F152 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:

15 August 2015 IS1200 Datorteknik föreläsning CE - F153 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F154 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F155 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F156 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F157 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F158 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 ?

15 August 2015 IS1200 Datorteknik föreläsning CE - F159 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...

15 August 2015 IS1200 Datorteknik föreläsning CE - F160 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare En förenklad bild av NiosII-arkitekturen med minne.

15 August 2015 IS1200 Datorteknik föreläsning CE - F161 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status En förenklad bild av arkitektur med STATUS-register.

15 August 2015 IS1200 Datorteknik föreläsning CE - F162 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F163 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F164 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 )

15 August 2015 IS1200 Datorteknik föreläsning CE - F165 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.)

15 August 2015 IS1200 Datorteknik föreläsning CE - F166 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F167 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F168 Nios II – dialekt: CMPcond R dst,R op1,R op2 CMPcond R dst,R op1,R op2 R dst sätts till ”true” (=1) om villkoret är uppfyllt R dst sätts till ”false” (=0) om villkoret inte är uppfyllt Villkoret är en jämförelse mellan R op1 och R op2, t.ex. EQ, GT,...

15 August 2015 IS1200 Datorteknik föreläsning CE - F169 Nios II – dialekt: CMPcond R dst,R op1,R op2 CMPEQ Rd, Rx, Ry;Rd:=1 if True BNERd, R0, Label Hoppa till Label om Rx lika med Ry Alternativ möjlighet (Nios II) BEQ Rx, Ry, Label Hoppa till Label om op1 lika med op2

15 August 2015 IS1200 Datorteknik föreläsning CE - F170 MIPS– dialekt Scond R dst,R op1,R op2 slt Rd, Rx, Ry;Rd:=1 if True bne Rd, R0, Label Hoppa till Label om Rx är ”less than” Ry ”Set on condition” MIPS-alternativ: slt, sltu, slti, sltiu u=unsigned, i=immediate

15 August 2015 IS1200 Datorteknik föreläsning CE - F171 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...

15 August 2015 IS1200 Datorteknik föreläsning CE - F172 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,...)

15 August 2015 IS1200 Datorteknik föreläsning CE - F173 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,...)

15 August 2015 IS1200 Datorteknik föreläsning CE - F174 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

15 August 2015 IS1200 Datorteknik föreläsning CE - F175 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 !

15 August 2015 IS1200 Datorteknik föreläsning CE - F176 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!

15 August 2015 IS1200 Datorteknik föreläsning CE - F177 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)

15 August 2015 IS1200 Datorteknik föreläsning CE - F178 Bcond med PC-relativ adressering Displacement lagras i IMM16 BCond RA, RB, Label INSTRUKTIONSFORMAT Nios II bitar per fält cond BA IMM16 True: PC  PC signext(IMM16) False: PC  PC + 4

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

15 August 2015 IS1200 Datorteknik föreläsning CE - F180 Viktiga delar i en dator CPU MEM BUS I/O program data

15 August 2015 IS1200 Datorteknik föreläsning CE - F181 Programexekvering FETCH (update PC) (decode) EXECUTE

15 August 2015 IS1200 Datorteknik föreläsning CE - F182 Dual-core / Multi-core CPU MEM BUS I/O CPU...