30 July 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
Datorarkitekturer och operativsystem
Programstruktur: C för enchipsdatorer
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.
Programmeringsteknik K och Media
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; }
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
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
Objektorienterad programmering i Java
William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
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 —
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
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.
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.
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.
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.
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
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.
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:

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

30 July 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

30 July 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 godkänt

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 30 July IS1200 Datorteknik föreläsning CE - F1

30 July 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 Podobas, Övn och lab  William Sandqvist, lab  Gunnar Johansson, lab

30 July 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

30 July 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

30 July 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

30 July 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

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

Leta fram Nios-Manual innan övning 1 Nios II Processor Reference Handbook Chap 3 & 8 Finns att läsa/skriva ut via kurshemsidan Lägg in denna adress i ”dina favoriter” 30 July 2015 IS1200 Datorteknik föreläsning CE - F111

30 July 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

30 July 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

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

30 July 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

30 July 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

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

Program-översättning kompilering - assemblering 30 July 2015 IS1200 Datorteknik föreläsning CE - F118 Källkod - textfil Assemblerkod - textfil Maskinkod - binärkodsfil Kompilering - översättning Assemblering- översättning

30 July 2015 IS1200 Datorteknik föreläsning CE - F119 Viktiga delar i en dator CPU MEM BUS I/O program data

30 July 2015 IS1200 Datorteknik föreläsning CE - F120 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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F122 Program Counter - PC PC - Program Counter Är ett register (ett antal vippor) Innehållet 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)

30 July 2015 IS1200 Datorteknik föreläsning CE - F123 Programexekvering  FETCH - HÄMTA  PC - Program Counter innehåller en minnesadress som pekar ut aktuell instruktion.  Kopiera utpekad 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...)

30 July 2015 IS1200 Datorteknik föreläsning CE - F124 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F och 64-bits processor En av fördelarna med 64-bits processor En 32-bits processor har en PC med 32 bitar 32 bitar kan adressera max 4 Gbyte minne (2 32 ) En 64-bits processor kan ha en PC med 64 bitar 64 bitar kan adressera max 2 64 byte minne

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

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

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

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

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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F132 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F133 ADD R dst, R srcA, R srcB ADD Hur många bitar behövs ? 3 regnummer + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT binärkodsformat bitar per fält

30 July 2015 IS1200 Datorteknik föreläsning CE - F134 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F135 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F136 Nytt Programexempel Addition av konstant C = A + 17 ; z”kan översättas” till LOADR1 <-- A ADDIR3 <-- R #ny instruktion STOREC <-- R3

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F138 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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F140 ? 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F141 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F142 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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F144 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)

30 July 2015 IS1200 Datorteknik föreläsning CE - F145 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F146 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...

30 July 2015 IS1200 Datorteknik föreläsning CE - F147 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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F149 Register operand (Nios: 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 ???

30 July 2015 IS1200 Datorteknik föreläsning CE - F150 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 ???

30 July 2015 IS1200 Datorteknik föreläsning CE - F1 51 Indexerad adressering (Nios: 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F152 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)

30 July 2015 IS1200 Datorteknik föreläsning CE - F153 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)

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F155 Java/C-kod: if-sats exempel på flödes-schema Cond ? Next False True If: Body1Body2 if (cond) then Body1 else Body2

30 July 2015 IS1200 Datorteknik föreläsning CE - F156 Java/C-kod: if-sats exempel på flödes-schema Cond ? Next False True If: Body1Body2 if (cond) then Body1 else Body2

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F158 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F159 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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F161 Programexekvering (i två steg / två faser) HÄMTA PC:=PC+4 (avkoda) UTFÖR Instruktion utan hopp HÄMTA PC:=PC+4 HOPP PC:= eff-addr Instruktion med hopp

30 July 2015 IS1200 Datorteknik föreläsning CE - F162 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:

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F164 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F165 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

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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F168 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 ?

30 July 2015 IS1200 Datorteknik föreläsning CE - F169 CC - Condition Code zCondition Code - CC zRegister som innehåller information om utfall av tidigare operationer/instruktioner zZ - Zero zN - Negative( S – Sign ) zC - Carry zV - oVerflow z… det kan finnas fler typ Odd, Parity...

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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F172 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F173 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F174 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 )

30 July 2015 IS1200 Datorteknik föreläsning CE - F175 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.)

30 July 2015 IS1200 Datorteknik föreläsning CE - F176 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F177 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F178 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 (cond) är en jämförelse mellan R op1 och R op2, t.ex. EQ, GT,...

30 July 2015 IS1200 Datorteknik föreläsning CE - F179 Nios II – dialekt: CMPcond R dst,R op1,R op2 CMPEQ Rd, Rx, Ry ;Rd:=1 if True BNERd, R0, Label ;hopp om True 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

30 July 2015 IS1200 Datorteknik föreläsning CE - F180 CMP op1, op2 Exempel på ”utfall” zEQ: op1 Equal to op2 zNE: op1 Not Equal to op2 zGT: op1 Greater Than op2, Signed zGTU: op1 Greater Than op2, Unsigned zGE: op1 Greater than or Equal to op2 zLE: op1 Less than or Equal to op2 z... det finns fler...

30 July 2015 IS1200 Datorteknik föreläsning CE - F181 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,...)

30 July 2015 IS1200 Datorteknik föreläsning CE - F182 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,...)

30 July 2015 IS1200 Datorteknik föreläsning CE - F183 JUMP brukar ha absolut/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

30 July 2015 IS1200 Datorteknik föreläsning CE - F184 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 !

30 July 2015 IS1200 Datorteknik föreläsning CE - F185 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!

30 July 2015 IS1200 Datorteknik föreläsning CE - F186 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)

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

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

30 July 2015 IS1200 Datorteknik föreläsning CE - F189 Viktiga delar i en dator CPU MEM BUS I/O program data

30 July 2015 IS1200 Datorteknik föreläsning CE - F190 Programexekvering FETCH (update PC) (decode) EXECUTE

30 July 2015 IS1200 Datorteknik föreläsning CE - F191 Dual-core / Multi-core CPU MEM BUS I/O CPU...

”Öppet hus” välkommen Öppet hus i labbsalen: torsdag 17 januari kl 08—12 har vi öppet hus i sal 648. Ingen bokning behövs för det här tillfället. - Du kan få hjälp att provköra labprogramvara på de stationära datorer som finns i salen - Vi svarar på frågor om labbarna och kursen. - Du kan testa att din bärbara dator fungerar med vår hårdvara. License string i Quartus är: 30 July 2015 IS1200 Datorteknik o k, föreläsning CE - F392

Vill du köra labprogram på egen dator? Installera VirtualBox System requirements - Minimum PC with Intel Core 2 Duo processor or better. 2 Gbytes RAM or more. 20 Gbytes of free hard-drive space. Username och password på den virtuella maskinen man kan ladda ner är: student och time2work 30 July 2015 IS1200 Datorteknik föreläsning CE - F193

30 July 2015 IS1200 Datorteknik föreläsning CE - F194

Förslag till egna studier förslagsvis tillsammans med kurskamrater zRepetera föreläsningsbilderna (noga) zFörbered inför övning genom att titta på frågor och lösningar i exempelsamling 30 July 2015 IS1200 Datorteknik föreläsning CE - F195