IS1500 Datorteknik och komponenter

Slides:



Advertisements
Liknande presentationer
En introduktion till programmeringsspråket Python
Advertisements

Skolan för teknikvetenskaplig kommunikation och lärande
Sopranen © 2007 Mats Hutter Delmoment Allmän IT i Datagrund DAA 1201.
Föreläsning 1 i programmeringsteknik och Matlab 2D1312
Välkomna till Företagets Logistik
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering  Kursens hemsida  Studentportalen.
Next previous XP: varför fungerar det? Något om tentan. Innehåll Introduktion till eXtreme Programming (XP) Varför fungerar XP? Något om tentan Vad ska.
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
Thomas Westin Kursens PM
IS1500 Datorteknik och komponenter
IS1500 Datorteknik och komponenter
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.
Elektromagnetism och vågrörelselära 2B1350
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.
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
1 Ramverk för ledarutbildning Beslutat av Svenska Scoutrådets styrelse september 2007.
Logga in i Cambro Gör såhär: 1. Surfa in på och klicka på ”Student” längst upp i högra hörnet.
EDA Digital och Datorteknik
Kursutvärdering Studiebyrån Alla kurser utvärderas Du ska utvärdera alla kurser som du deltar i Genom kursutvärderingen ger du läraren respons på.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
Föräldramöte den 2 september Vi tar hand om våra studerande: Rektor Studiehandledare Speciallärare Grupphandledare Ämneslärare Kurator Hälsovårdare.
Vad händer i SUNET Inkubator?
Transistorn – en introduktion Jonny Johansson. Agenda Då och nu Hur ser en den ut? På djupet om CMOS Grindar.
ERASMUS Utbyte Institution för Kulturgeografi och ekonomisk geografi
Fastighetsmäklareprogrammet Fastighetsförmedling I Välkommen Viktiga personer, lärare m.m. Upprop Fastighetsmäklareprogrammet Kursplan Kursutvärdering.
Byggnadsekonomi Föreläsning 2 Fastighetsekonomiska grundbegrepp.
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
Bakgrunden till PIC-kursen IL131V
INTRODUKTION TILL PROGRAMMERING
Institutionen för datavetenskap vid Helsingfors universitet PB 68 Gustaf Hällströms gata 2b Helsingfors universitet
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 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
DIGITAL DESIGN INLEDNING Allmänt och kursens hemsidor Analogt och digitalt Booleska variabler Binära tal Positiv och negativ logik (Aktiv hög och låg logik)
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
Digitalteknik 7.5 hp distans: 6.3 nMOS-inverteraren 6:2.1 nMOS-inverterare med passiv pull-up nMOS innehåller enbart nMOS-transistorer OBS vid låg utgång.
William Sandqvist IS1500 Datorteknik William Sandqvist
Kursutveckling * - ett e-verktyg för kursprogression Jan Scheffel *Tidigare: ”Kursbeskrivning”
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
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 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
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> * > *** > *****
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
II1300 Ingenjörsmetodik 7,5 hp HT2010
Föreläsning 1 Introduktion till kursen. Algoritmer
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.
Datorteknik Introduction bild 1 Datorteknik Lärare Schema –Föreläsningar –Lektioner –Laborationer Undervisning Kursmaterial Kursinformation.
Välkommen till MedieXpert AB
Lönestatistik per BESTA och inst.
IT Fördjupning Databaser & Excel.
Start VT2019 Konsten att handleda i vårdande under verksamhetsförlagd utbildning Anmälningskod: MDH Kurskod:VAE074 Kursen vänder sig till dig.
Hittills är följande utbildningar lanserade: Introduktion Utvecklingstränare (fr.o.m. april 2018) Matchledare A (fr.o.m. augusti 2018) Nivå 1 Utvecklingstränare.
Digitalteknik 3p - Kombinatorisk logik
Electronic Numerical Integrator And Computer
Forskning och utbildning i elektroteknik och datavetenskap
Forskning och utbildning i elektroteknik och datavetenskap
Presentationens avskrift:

IS1500 Datorteknik och komponenter 6 apr -17 IS1500 Datorteknik och komponenter Föreläsning CE F1 Computer Engineering Introduktion Här kan Du anteckna vad du vill .... 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Välkommen till fortsättning av IS1500 Datorteknik och komponenter 6 apr -17 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: is1500@ict.kth.se Kursansvarig: Fredrik Lundevall 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k CE - Computer Engineering 6 apr -17 IS1500 Datorteknik o k CE - Computer Engineering Datorns 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: asdfasdfasdf 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k http://www.ict.kth.se/courses/IS1500 DC F1 DC Ö1 DC F2 DC Ö2 lab dicom Digitala komponenter CE F1 CE F2 CE Ö1 CE F3 CE Ö2 CE F4 CE Ö3 lab nios2time Assemblerprogram CE F5 CE Ö4 hemlab C C CE F6 CE Ö5 CE Ö6 lab nios2io In- och utmatning CE F7 CE Ö7 lab nios2int Avbrott och "trap" CE F8 CE Ö8 hemlab cache Cacheminnen Trådar, synkronisering CE F9 CE Ö9 hemlab trådar CE F10 CE Ö10 tentamen 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Laborationer CE – Computer Engineering 6 apr -17 Laborationer CE – Computer Engineering Assemblerprogrammering av Nios-processorn Enkla program på Nios-processorn (nios2time) I/O på Nios-processorn (nios2io) Avbrottshantering på Nios-processorn (nios2int) Hemlaborationer Maskinnära programmering med C (”C-labben”) Minnessystem med cache-minnen (”Cache-labben”) Prestanda påverkas av parametervärden Operativsystem, (”OS-labben”) Fördelning av CPU-tid Samverkan mellan processer med semaforer asdfasdfasdfasdfasdfasf 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik Lärare: 6 apr -17 IS1500 Datorteknik Lärare: Fredrik Lundevall, kursledare, föreläsare, Övn och lab Johan Wennlund, biträdande kursledare, föreläsare, Övn och lab William Sandkvist, Övn och lab Gunnar Johansson, lab Eventuellt ytterligare asdfasdfasd 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Föreläsning CE F1, innehåll 6 apr -17 IS1500 Datorteknik Föreläsning CE F1, innehåll CPU - BUS – MEM – I/O Fetch - Execute Instruktioner och Data Instruktionsformat Adressering - operandutpekning Hoppinstruktioner 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Litteraturhänvisningar Kursboken, valda delar av kapitel 2, Speciellt sidorna 74-101 105-108 128-136 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Köp Nios2-Manual till övningar Nios II Processor Reference Handbook Chap 3 & 8 Finns att köpa på ”Delfi-STEX” 40:- (eller skriv ut själv) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Nu börjar det ! Programexempel Java-/C-kod int A, B, C; /* variabler, data */ ... C = A + B; /* program, code/text */ 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Program i Java/C-kod kompileras/översätts till ASSEMBLER-kod int A, B, C; /* variabler, data */ ö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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Program i Java/C-kod kompileras/översätts till ASSEMBLER-kod 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 <-- A LOAD R2 <-- B ADD R3 <-- R1 + R2 STORE C <-- R3 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Program i ASSEMBLER-kod assembleras/översätts till Maskinkod / binärkod # maskinkod/binärkod #kommentarer 0010 1101 1111 …. 1101 #LOAD R1 <-- A 0010 1101 1110 …. 1101 #LOAD R2 <-- B 1001 1101 0101 …. 1111 #ADD R3 <-- R1+R2 0011 1111 1101 …. 0010 #STORE C <-- R3 # hur många bitar? 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Viktiga delar i en dator CPU BUS program I/O MEM data 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Programexekvering (decode) EXECUTE FETCH (update PC) HÄMTA UTFÖR 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 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 ...) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Processorn (t.ex Nios eller MIPS eller …) PC Minne Generella register Programräknare En förenklad bild av NiosII-arkitekturen med minne. 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Programexempel 1 MINNE PROGRAMRÄKNAREE PROGRAM COUNTER uppdatera öka med vad? 4 eller 2 eller LOAD ADD STORE PROGRAM (.text) LOAD LOAD A: B: C: DATA (.data) ADD STORE 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-instruktioner vilka behövs ? exempel ! LOAD kopiera från minne till CPU ADD utför aritmetisk operation STORE kopiera från CPU till minne SUB utför aritmetisk operation ADDI Add Immediate SUBI Subtract Immediate ... flera ”införs” vid behov ... 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-Instruktionen LOAD 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-Instruktionen STORE 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-Instruktionen ADDITION 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT binärkodsformat ADD Rdst, RsrcA, RsrcB ADD 6 5 5 5 bitar per fält Hur många bitar behövs ? 3 regadr + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Binärkod i Nios II, 32 bitar INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADD Rdst, RsrcA, RsrcB 0x31 0x00 0x3a 5 5 5 6 5 6 bitar per fält Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-Instruktionen SUBTRAKTION SUB Rdst, Rsrc1 , Rsrc2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register Rsrc1 och Rsrc2 och skriver skillnaden till register Rdst En läsning från minnet (Fetch) Rdst  Rsrc1 - Rsrc2 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Nytt Programexempel C = A + 17 # addera med konstant ”kan översättas” till LOAD R1 <-- A ADDI R3 <-- R1 + 17 #ny instruktion STORE C <-- R3 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-Instruktionen ADDITION, 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Assembler-Instruktionen SUBTRAKTION, Sub Immediate SUBI Rdst, Rsrc1 , datan Utför subtraktion mellan två värden som vardera upptar 32 resp. n bitar hämtade från register Rsrc1 samt ???, och skriver skillnaden till register Rdst En läsning från minnet (Fetch) ??? Rdst <-- Rsrc1 - datan 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT binärkodsformat ADDI Rdst, Rsrc, datan SUBI Rdst, Rsrc, datan ADDI/SUBI 6 5 5 n bitar per fält 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! 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Binärkod i Nios II, 32 bitar INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADDI Rdst, RsrcA, Data 0x04 5 5 16 6 bitar per fält SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal ... Intruktionen SUBI får man ”gratis” 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Operandutpekning Adressering Exempel på varianter ”Var finns operanden” I register, med namn/nummer, t.ex. i R4 Vilka register finns? t.ex. R0--R31 (~få !) (”snabbt”, register finns inne i CPU-chipet) I minnet, på en viss adress t.ex. 0x046C (”långsamt”, minnet finns utanför CPU-chipet) Hur många platser finns? (~många !) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Effektivadress vid operand i minnet Vid operandutpekning i minnet gäller Effektiva Adressen är adressen till den plats i minnet där operanden lagras 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Operandutpekning med operand i minnet Effektivadress i instruktionens ”adressfält” Effektivadress i ett register Operand i instruktionens ”datafält” Indexerad adressering Självrelativ adressering, PC-relativ … det finns fler varianter ... 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Direkt adress (ej indirekt) Absolut adress (ej relativ) Instruktionens adressfält innehåller effektivadressen (EA) effektivadressen är adressen till den plats i minnet där operanden lagras till exempel: LOAD reg <- Addr # reg := mem(Addr) LOAD reg Addr 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Direkt operand (Immediate addressing) Instruktionens ”adressfält” innehåller operandvärdet effektivadress är inte relevant exempel: MOVI reg <- Data #reg := Data MOVI reg Data 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Register operand (Register addressing) Ett register innehåller operandvärdet effektivadress är inte relevant Kan betecknas direkt via register exempel: MOVE reg1 <- reg2 #reg1 := reg2 MOVE reg reg ??? 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Register indirect addressing (Indirekt adress via register) Ett register innehåller effektivadressen Effektivadressen är adressen till den plats i minnet där operanden lagras exempel: LOAD reg1 <- (reg2) #reg1 := mem(reg2) LOAD reg1 reg2 ??? 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Indexerad adressering (Displacement addressing) Effektivadressen är adressen till den plats i minnet där operanden lagras Effektivadressen ä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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Indexerad adressering Exempel på specialfall LOAD Offset(Indexregister) Offset = 0 ger ”adress i register” Indexregister innehåller 0 ger direkt (absolut) adress Indexregister = PC ger PC-relativ adressering= själv-relativ adressering 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Självrelativ adressering PC-relativ adressering (specialfall av Indexerad adressering) Effektivadressen är adressen till den plats i minnet där operanden lagras Effektivadressen är summan av innehåll i instruktionens adressfält och (aktuellt) innehåll i Program Counter (PC) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Java/C-kod: if-sats ger behov av hopp 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 True Cond ? False Body2 Body1 Next 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Java/C-kod: for-loop ger behov av hopp init start 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 (även while, repeat-until, ...) Test: Cond ? False True Body update Next 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Effektiv adress vid hoppinstruktioner Vid hoppinstruktioner gäller: Effektiva Adressen är det värde som skrivs till PC dvs adressen till den plats i minnet där programmet ska fortsätta 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Ovillkorliga hopp JUMP och BRA JUMP brukar ha direkt adress BRA brukar ha PC-relativ adress 32: JMP 104 # PC := 104 ”hopp till 104” . 104: 224: BRA 40 # PC := pc + 40 ”hopp till 268” 268: 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 JMP Label # symbolisk adress översätts till JMP addr # numerisk absolutadress av översättaren/assemblern RUT: ADD … t.ex.500 520: JMP RUT 500: ADD … 520: JMP 500 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 BRA Label # symbolisk adress översätts till BRA disp # numerisk displacement av översättaren/assemblern RUT: ADD … t.ex.500 520: BRA RUT 500: ADD … 520: BRA -24 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

JMP ger icke relokerbar kod på grund av absolut adressering RUT: ADD … t.ex. 500 520 JMP 500 hopp till fel plats relokering RUT: ADD … ny plats JMP 500 Före relokering Efter relokering 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

BRA ger relokerbar kod tack vare PC-relativ adressering RUT: ADD … t.ex. 500 520 BRA -24 hopp till rätt plats relokering RUT: ADD … ny plats BRA -24 Före relokering Efter relokering 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Villkorligt hopp Bcond, Branch on condition Bcond Label Om villkoret är sant hoppa till Label Om villkoret är falskt (= ej sant) fortsätt som vanligt utan hopp (öka PC med 4) Vad menas med villkoret ? 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 CC - Condition Code Condition Code - CC Register som innehåller information om utfall av tidigare operationer/instruktioner Z - Zero N - Negative C - Carry V - oVerflow … det kan finnas fler typ Odd, Parity ... 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Processorn (t.ex Nios eller MIPS eller …) PC Minne Generella register Programräknare En förenklad bild av NiosII-arkitekturen med minne. 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Gäller för MIPS-Processorn (ej Nios-II) Minne Generella register Programräknare R0 PC R1 Status R31 NVZC En förenklad bild av arkitektur med STATUS-register. 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Instruktionen (i repris) SUBTRAKTION, variant 1 SUB Rdst, Rsrc1 , Rsrc2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hä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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

NYTT: Instruktion COMPARE, variant 1 CMP Rsrc1 , Rsrc2 utför jämförelse (subtraktion) mellan två värden som vardera upptar 32 bitar hä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) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Programexempel Java-/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) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 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 BEQ Label Hoppa till Label om op1 lika med op2 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Nios II – dialekt: BEQ op1, op2, Label CMP op1, op2 BEQ Label Hoppa till Label om op1 lika med op2 Alternativ möjlighet (Nios II) BEQ op1, op2, Label 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Nios II – dialekt: CMPcond Rdst ,Rop1 ,Rop2 CMPEQ Rd, Rx, Ry ;Rd:=1 if True BNE Rd, 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

MIPS– dialekt Scond Rdst ,Rop1 ,Rop2 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 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

CMP op1, op2 Exempel på ”utfall” EQ: op1 Equal to op2 NE: op1 Not Equal to op2 GE: op1 Greater than or Equal to op2 LT: op1 Less Than op2 GT: op1 Greater Than op2 LE: op1 Less than or Equal to op2 . . . det finns fler . . .signed/unsigned 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Bcond Label Exempel på ”cond” och CC EQ: # Z=1 NE: # Z=0 GE: # N=0 LT: # N=1 GT: # Z=0 and N=0 LE: # Z=1 or N=1 . . . det finns fler . . . (CS-Carry Set, . . .) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Bcond Label Bcond op1, op2, Label Många CPU:er Nios II m.fl. BNE Label BNE 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 . . . det finns fler . . . (CS-Carry Set, . . .) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT JUMP brukar ha direkt adress JUMP Label JUMP 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! 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT Nios II JMP med register indirekt adress JMP rA 0x0d 0x3a 5 5 5 6 5 6 bitar per fält INSTRUKTIONSFORMAT enligt ovan Hur stort hopp har man ? PC := (rA) # 32 bitars adress ! 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT BRA brukar ha PC-relativ adress BRA Displacement BRA 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! 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT Nios II BR med PC-relativ adressering Displacement lagras i IMM16 BR Label IMM16 0x06 5 5 16 6 bitar per fält PC  PC + 4 + signext(IMM16) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 INSTRUKTIONSFORMAT Nios II Bcond med PC-relativ adressering Displacement lagras i IMM16 BCond RA, RB, Label A B IMM16 cond 5 5 16 6 bitar per fält True: PC  PC + 4 + signext(IMM16) False: PC  PC + 4 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Föreläsning 1, innehåll CPU - BUS - MEM Fetch - Execute Instruktioner och Data Instruktionsformat Adressering - operandutpekning Hoppinstruktioner 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Viktiga delar i en dator CPU BUS program I/O MEM data 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

IS1500 Datorteknik o k, föreläsning CE - F1 Programexekvering (decode) EXECUTE FETCH (update PC) 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1

Dual-core / Multi-core CPU CPU ... ... BUS I/O MEM 6 April 2017 IS1500 Datorteknik o k, föreläsning CE - F1