1 June 2015 2G1518, Förel 10, ht2005 (D3/CLMDA)1 2G1518 Datorteknik, ht 2005 version för D3 och CLMDA Föreläsning 10 1. Processorkonstruktion 2. DMA, Direct.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Datorarkitekturer och operativsystem
Funktioner och programorganisation
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
Filhantering Grundprincipen för filhantering Öppna filen
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.
2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
Programmeringsteknik K och Media
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.
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; }
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.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Styrteknik: Programmering med MELSEC IL PLC2A:1
William Sandqvist C:s minnesmodell.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
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
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.
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 —
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
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.
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.
3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Funktionsmall template void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras.
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 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 G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
2G1502 Datorteknik allmän kurs
2 June G1518, föreläsning 4, ht2006 (D2)1 2G1518 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8 ht.
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.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
12 June G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2008 (period 3) för IT/ME och Hing/Kand.
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
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
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.
11 August 2015IS1200 Datorteknik, föreläsning 41 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8.
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.
13 October 2015 IS1200 Datorteknik ht2009, föreläsning 7, (D2)1 IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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 Memory Access 3. Byte-code i JAVA

1 June G1518, Förel 10, ht2005 (D3/CLMDA)2 3 övningsgrupper idag zTorsdag 8 dec kl i salar E51: Petra Färm E52: Fredrik Lundevall E53: Johan Wennlund (E31: ingen övning)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)3 Viktiga delar i en dator CPU MEM BUS I/O program data

1 June G1518, Förel 10, ht2005 (D3/CLMDA)4 Programexekvering FETCH (update PC) (decode) EXECUTE

1 June G1518, Förel 10, ht2005 (D3/CLMDA)5 1. Processorkonstruktion Kursboken kap 7, Jämför innehåll i föreläsningar och kursboken z4 stegs PIPE-LINE z5 stegs PIPE-LINE zFenomen vid konstruktion med PIPE-LINE Avsnitt 9.3, sid

1 June G1518, Förel 10, ht2005 (D3/CLMDA)6 CPU med 4 steg Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 PC

1 June G1518, Förel 10, ht2005 (D3/CLMDA)7 Pipeline med register och kombinatorik ALU PC ADD IR0 IR1 IR2 +2 REGISTER KOMBINATORIK REGISTER KOMBINATORIK REGISTER

1 June G1518, Förel 10, ht2005 (D3/CLMDA)8 4 stegs CPU Konsekvent synkronism Förbered skrivning till Register File FIFOEXEWB ALU arbetar / D-Cache arbetar Avkoda samt Leta fram operander Leta fram instruktion ur I-cache Skriv resultat till Register File Skrivning till tmp-reg Skriv oprander till ALU-register Skrivning till Instruction Register Skrivning till Program Counter clock

1 June G1518, Förel 10, ht2005 (D3/CLMDA)9 Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 PC NYTT IR0 IR1 IR2 PIPE - LINE införs ! 2 nya (del-) register IR

1 June G1518, Förel 10, ht2005 (D3/CLMDA)10 4 stegs CPU utan och med PIPE-LINE FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB Utan PIPE-LINE Med PIPE-LINE

1 June G1518, Förel 10, ht2005 (D3/CLMDA)11 Processor med 4 stegs PIPE-LINE Hur lång tid tar varje instruktion, 4 cykler Antal Cykles Per Instruction, CPI, 1 cykel Antal instruktioner per cykel, 1 instruktion FIFOEXEWBFIFOEXEWBFIFOEXEWB

1 June G1518, Förel 10, ht2005 (D3/CLMDA)12 Fenomen pga PIPE-LINE 1. Branch Delay 2. Data Dependency 3. Load Delay

1 June G1518, Förel 10, ht2005 (D3/CLMDA)13 Fenomen pga PIPE-LINE 1.Branch Delay (slot) Instruktionen i minnespositionen närmast efter en hoppinstruktion kommer hämtas och utföras innan hoppet verkställs Programexempel 18: BEQ DIT# offset lagras i binärkod 20: ADD …# hämtas och utförs 22: … … DIT: SUB...

1 June G1518, Förel 10, ht2005 (D3/CLMDA)14 Fenomen pga PIPE-LINE 2. Data Dependency RAW - Read After Write Instruktioner som läser från ett register strax efter en instruktion som skriver till samma register kan få fel värde Programexempel 44:ADD R1 <- R2 + R3 46:ADD R4 <- R5 + R6 48:ADD R7 <- R1 + R4

1 June G1518, Förel 10, ht2005 (D3/CLMDA)15 Data Dependencies med 4 stegs PIPE-LINE 44: ADD... 46: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R1 <- R2 + R3 46:ADD R4 <- R5 + R6 48:ADD R7 <- R1 + R4 48: ADD... R4 skrivs till RegFile Gamla värden R1 och R4 läses från RegFile R1 skrivs till RegFile

1 June G1518, Förel 10, ht2005 (D3/CLMDA)16 Data Dependencies med 4 stegs PIPE-LINE zSkrivning till register sker i WB-steget zLäsning från register sker i FO-steget zSkrivning måste ske innan läsning zWB-steg måste ligga före FO-steg zGenom att placera 2 NOP:ar eller 2 ”oberoende” instruktioner mellan WB och FO kan man lösa RAW-konflikten zRAW - Read - Write

1 June G1518, Förel 10, ht2005 (D3/CLMDA)17 44: ADD... 46: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R1 <- R2 + R3 46:ADD R4 <- R5 + R6 NOP NOP 48:ADD R7 <- R1 + R4 48: ADD... R4 skrivs till RegFile Nya värden i R1 och R4 läses från RegFile R1 skrivs till RegFile FIFOEXEWBFIFOEXEWB NOP

1 June G1518, Förel 10, ht2005 (D3/CLMDA)18 Data Dependencies inför nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 IR0 IR1 IR2 44: R1 <- R2+R3 46: R4 <- R5+R6 48: R7 <- R1+R4 ADD PC+n PC+Imm NYTT

1 June G1518, Förel 10, ht2005 (D3/CLMDA)19 Data Dependencies med 4 stegs PIPE-LINE 44: ADD... 46: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R1 <- R2 + R3 46:ADD R4 <- R5 + R6 48:ADD R7 <- R1 + R4 48: ADD... R4 skrivs till RegFile Ny värden R1 och R4 läses via nya datavägar R1 skrivs till RegFile

1 June G1518, Förel 10, ht2005 (D3/CLMDA)20 LOAD och STORE zVi vill kunna utföra instruktionerna LOADR dst, [ R addr ] STORE [ R addr ], R src zIndirekt adressering via register

1 June G1518, Förel 10, ht2005 (D3/CLMDA)21 ALU/EXEWB Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 ADD IR0 IR1 IR2 RWM CPU med 4 stegs PIPE-LINE Instruction Decode Fetch Operand Instruction Fetch PC+n PC+Imm

1 June G1518, Förel 10, ht2005 (D3/CLMDA)22 LOAD och STORE med 4 stegs PIPE-LINE LOAD to Rd USE Rd FIFO MEM WBFIFOEXEWB Data från MEM finns tillgängligt Data från MEM finns ej tillgängligt för FO

1 June G1518, Förel 10, ht2005 (D3/CLMDA)23 Data Dependencies inför nya data-vägar Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 PC IR0 IR1 IR2 44: R1 <- R2+R3 46: R4 <- R5+R6 48: R7 <- R1+R RWM ALU/EXEWBInstruction Decode Fetch Operand Instruction Fetch Rätta till NYTT

1 June G1518, Förel 10, ht2005 (D3/CLMDA)24 LOAD och STORE med 4 stegs PIPE-LINE LOAD to Rd USE Rd FIFO MEM WBFIFOEXEWB Data från MEM finns tillgängligt Data från MEM finns tillgängligt för FO tack vare Data Forward

1 June G1518, Förel 10, ht2005 (D3/CLMDA)25 LOAD och STORE zVi vill kunna utföra instruktionerna LOADR dst, Offset[ R addr ] STOREOffset[ R addr ], R src zIndexerad adressering

1 June G1518, Förel 10, ht2005 (D3/CLMDA)26 CPU med 5 stegs PIPE-LINE ALU/EXEInstruction Decode Fetch Operand MEMInstruction Fetch Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 RWM IR3 Write Back Register File 32 x 32 PC+n PC+Imm

1 June G1518, Förel 10, ht2005 (D3/CLMDA)27 Processor med 5 stegs PIPE-LINE LOAD FIFOALUWB MEM FIFOALUWB MEM ADD Hur lång tid tar varje instruktion, 5 cycles Cykles Per Instruction, CPI, 1 cycle Antal instruktioner per cykel, 1 instruktion FIIDEXEWB MEM Jämför med Figur 7.12 i kursboken, sid 255

1 June G1518, Förel 10, ht2005 (D3/CLMDA)28 LOAD och STORE med 5 stegs PIPE-LINE LOAD to Rd FIFOALUWB MEM FIFOALUWB MEM USE Rd Data från MEM finns tillgängligt Data från MEM finns ej tillgängligt för FO

1 June G1518, Förel 10, ht2005 (D3/CLMDA)29 Fenomen pga PIPE-LINE 2. Data Dependency Instruktioner som läser från ett register strax efter en instruktion som skriver till samma register kan få fel värde Programexempel 44:ADD R1 <- R2 + R3 46:ADD R9 <- R5 + R6 48:ADD R7 <- R0 + R4 50:ADD R8 <- R1 + R7

1 June G1518, Förel 10, ht2005 (D3/CLMDA)30 med 5 stegs PIPE-LINE 44: ADD... 46: ADD... 44:ADD R1 <- R2 + R3 46:ADD R9 <- R5 + R6 48:ADD R7 <- R0 + R4 50:ADD R8 <- R1 + R7 48: ADD... R9 skrivs till RegFile R1 och R7 läses från RegFile R1 skrivs till RegFile FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM R7 skrivs till RegFile 50: ADD...

1 June G1518, Förel 10, ht2005 (D3/CLMDA)31 Data Dependencies med 5 stegs PIPE-LINE zSkrivning till register sker i WB-steget zLäsning från register sker i FO-steget zSkrivning måste ske innan läsning zWB-steg måste ligga före FO-steg zGenom att placera 3 NOP:ar eller 3 ”oberoende” instruktioner mellan WB och FO kan man lösa RAW-konflikten

1 June G1518, Förel 10, ht2005 (D3/CLMDA)32 44: 46: 44:ADD R1 <- R2 + R3 46:ADD R9 <- R5 + R6 48:ADD R7 <- R0 + R4 NOP 50:ADD R8 <- R1 + R7 48: R4 skrivs till RegFile R1 och R7 läses från RegFile R1 skrivs till RegFile FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM R7 skrivs till RegFile 50: ADD... FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM NOP

1 June G1518, Förel 10, ht2005 (D3/CLMDA)33 inför nya data-vägar Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 IR3 +2 Register File 32 x 32 RWM NYTT

1 June G1518, Förel 10, ht2005 (D3/CLMDA)34 Fenomen pga PIPE-LINE 3. Load Delay LOAD reg FIFOALUWB MEM USE reg Tillgängligt från minne FIFOALUWB MEM Skriv till ALU-reg (Gammalt registervärde)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)35 Load Delay i 5-stegs pipe även vid Data Forward LOAD reg FIFOALUWB MEM ADD reg FIFOALUWB MEM Skriv till ALU-reg Data Forward fungerar FIFOALUWB MEM Oberoende instr. Tillgängligt från minne

1 June G1518, Förel 10, ht2005 (D3/CLMDA)36 2. Block Data Transfer - BDT Kopiera ett antal ord, ett Block (t.ex. 1024x8) zfrån minne till minne [memcpy(dst,src,num)] zfrån I/O till minne zfrån minne till I/O zfrån I/O till I/O Typexempel mellan MM och SS dvs Main Memory och Secondary Storage dvs mellan ”hårddisk och RAM-minne”

1 June G1518, Förel 10, ht2005 (D3/CLMDA)37 BDT: minne till minne MEM SrcAddr NrOfTransfers DstAddr Det behövs 2 adresspekare Käll-adress och Destinations-adress Det behövs en räknare, antal kopieringar Var lagras pekare och räknare ? I register eller i minne! beroende på metod!

1 June G1518, Förel 10, ht2005 (D3/CLMDA)38 BDT: minne till minne CPU MEM BUS I/O

1 June G1518, Förel 10, ht2005 (D3/CLMDA)39 memcpy i C-kod ( Bilting sid 250) void* memcpy (void* dst, const void* src, size_t nr) { register int i; for (i=0; i<nr, i=i+1) *dst++ = *src++; }

1 June G1518, Förel 10, ht2005 (D3/CLMDA)40 BDT: minne till I/O CPU MEM BUS I/O

1 June G1518, Förel 10, ht2005 (D3/CLMDA)41 BDT: I/O till minne CPU MEM BUS I/O

1 June G1518, Förel 10, ht2005 (D3/CLMDA)42 BDT: I/O till I/O CPU BUS I/O

1 June G1518, Förel 10, ht2005 (D3/CLMDA)43 BDT - Block Data Transfers Block Data Transfer utförs i tre olika del-moment zInitiera: pekare och räknare, mm zKopiera: en enhet i taget (byte/word) zAvsluta: bokföring (i OS) att block är kopierat (OS = Operativ Systemet)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)44 BDT - Block Data Transfers Block Data Transfer kan utföras med tre olika metoder 1. Program-styrd Block Data Transfer 2. Avbrotts-styrd Block Data Transfer 3. DMA-styrd Block Data Transfer (DMA - Direct Memory Access)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)45 1. Program-styrd BDT source to destination zProgramstruktur initiera pekare och räknare loop:kopiera en enhet (byte/word) br loop om ej klart avsluta

1 June G1518, Förel 10, ht2005 (D3/CLMDA)46 1. Programstyrd BDT source to destination # Initiera inför programmerad BDT # pekare och räknare i ”vanliga” CPU-register moviar8, SrcAddr moviar9, DstAddr moviar10, NrOfTransfers

1 June G1518, Förel 10, ht2005 (D3/CLMDA)47 1. Program-styrd BDT Memory to Memory # Kopiera i programslinga.equwordsize, 4 loop:ldwr11, 0(r8)# läs data stwr11, 0(r9)# skriv data addir8, r8, wordsize# öka läsadress addir9, r9, wordsize# öka skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart bravsluta# hopp till OS

1 June G1518, Förel 10, ht2005 (D3/CLMDA)48 1. Program-styrd BDT I/O to Memory Antag att I/O-porten är en ”vanlig” inport med en signal av typen IBF - Input Buffer Full IBF ettställs varje gång det finns nya data att läsa från inporten

1 June G1518, Förel 10, ht2005 (D3/CLMDA)49 IN-port RD IN-PORT IBFWRIN-DATA RD IBF Adress Data Control CPU-BUSS IN 0 IN n DnDn D0D0 IN 1 D1D1 Q Q’ set clear IBF WR RD vippa grindar &&&......

1 June G1518, Förel 10, ht2005 (D3/CLMDA)50 BDT: I/O till minne CPU MEM I/O SrcAddr DstAddr NrOfTransfers

1 June G1518, Förel 10, ht2005 (D3/CLMDA)51 Block Data Transfer I/O to Memory # Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:callgetdata# blocking on IBF stwr2, 0(r9)# skriv data #addir8, r8, wordsize# öka ej läsadress addir9, r9, wordsize# öka skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart bravsluta# hopp till OS

1 June G1518, Förel 10, ht2005 (D3/CLMDA)52 1. Program-styrd BDT Memory to I/O Antag att I/O-porten är en ”vanlig” utport med en signal av typen OBE - Output Buffer Empty OBE ettställs varje gång det går att skriva till utporten

1 June G1518, Förel 10, ht2005 (D3/CLMDA)53 Block Data Transfer Memory to I/O # Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:ldwr4, 0(r8)# läs data callputdata# blocking on OBE addir8, r8, wordsize# öka läsadress #addir9, r9, wordsize# öka ej skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart bravsluta# hopp till OS

1 June G1518, Förel 10, ht2005 (D3/CLMDA)54 Block Data Transfer I/O to I/O # Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:bsrgetdata# blocking on IBF movr4, r2# flytta parameter bsrputdata# blocking on OBE # addir8, r8, wordsize# öka ej läsadress #addir9,r9, wordsize# öka ej skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart braavsluta# hopp till OS

1 June G1518, Förel 10, ht2005 (D3/CLMDA)55 2. Avbrotts-styrd BDT I/O to Memory Typ-exempel: Kopiera från hårddisk till ram-minne Antag att hårddisken levererar data via en ”vanlig” inport med en signal IBF IBF ettställs varje gång det finns nya data IBF genererar avbrottsbegäran, IRQ

1 June G1518, Förel 10, ht2005 (D3/CLMDA)56 2. Avbrotts-styrd Block Data Transfer source to destination # Initiera inför avbrotts-styrd BDT # pekare och räknare kan inte lagras i ”vanliga” CPU-register utan måste lagras i minnet. moviar8, SrcAddr# måste ändras moviar9, DstAddr# måste ändras moviar10, NrOfTransfers# måste ändras

1 June G1518, Förel 10, ht2005 (D3/CLMDA)57 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ

1 June G1518, Förel 10, ht2005 (D3/CLMDA)58 2. Avbrotts-styrd BDT I/O to Memory Initiera inför avbrotts-styrd BDT # storei Addr <- Imm är ett macro som skriver värdet Imm till minnet på adress Addr zstoreiSrcAddrPoint <- SrcAddrValue zstoreiDstAddrPoint <- DstAddrValue zstoreiNrOfTransf <- NrOfTransfValue Det behövs alltså 3 reserverade platser i minnet Det går ej att använda register !? (varför?)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)59 2. Avbrotts-styrd BDT I/O to Memory zProgramstruktur initiera: programsnutt i OS kopiera: Exceptionhandler, inth, anropas vid avbrott dvs då IBF = 1 inth:kopiera en enhet# se nästa sida subi ra, ra, 4 eret# retur från int avsluta:brOS-avsluta# hopp till OS

1 June G1518, Förel 10, ht2005 (D3/CLMDA)60 2. Avbrotts-styrd BDT I/O to Memory zkopiera en enhet# se denna sida inth: loadiar8, SrcAddrPoint# hämta läsadress loadia r9, DstAddrPoint# hämta skrivadress ldwr11, 0(r8)# läs data från INPORT stwr11, 0(r9)# skriv data till minne loadiar10, NrOfTranf# hämta räknare subir10, r10, 1# uppdatera räknare beqr10, r0, avsluta# hopp till OS # forts.

1 June G1518, Förel 10, ht2005 (D3/CLMDA)61 2. Avbrotts-styrd BDT I/O to Memory zAvbrottsrutin forts. #addir8, r8, wordsize# öka läsadress, nej ! addir9, r9, wordsize# öka skrivadress, ja ! # storiar8, SrcAddrPoint# skriv EJ tillbak läsadress storiar9, DstAddrPoint# skriv tillbaks skrivadress storiar10, NrOfTrans# skriv tillbaks räknare return# from interrupt

1 June G1518, Förel 10, ht2005 (D3/CLMDA)62 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ

1 June G1518, Förel 10, ht2005 (D3/CLMDA)63 3. BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

1 June G1518, Förel 10, ht2005 (D3/CLMDA)64 Bus Arbiter krävs Bus Request / Bus Grant CPU MEM BUS I/O DMA Bus Arbiter BR BG

1 June G1518, Förel 10, ht2005 (D3/CLMDA)65 Bus-ledningar Om det finns fler än en Master krävs Bus Arbiter (bus-fördelare) zSignal (er) av typ Bus Request zSignal (er) av typ Bus Grant

1 June G1518, Förel 10, ht2005 (D3/CLMDA)66 DMA - Direct Memory Address zDMARQ - DMA ReQuest (ny signal) zSource Address Register zDestination Address Register zByte/Word Count Register zControl Register zBlock Size: Byte Count or End Of Block

1 June G1518, Förel 10, ht2005 (D3/CLMDA)67 3. BDT: I/O till minne med DMA CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers

1 June G1518, Förel 10, ht2005 (D3/CLMDA)68 3. DMA-styrd BDT Memory to Memory zProgramstruktur initiera... DMA:kopiera en enhet avsluta: Meddela att det är klart ? Hur? Vart?

1 June G1518, Förel 10, ht2005 (D3/CLMDA)69 Block Data Transfer I/O to Memory # Initiera inför DMA-styrd BDT # DmaSrc, -Dst, -Nr och -Ctl är memory-mapped register i DMA storeiDmaSrc, SrcAddrVal storeiDmaDst, DstAddrVal storeiDmaNr, NrOfTransfers storeiDmaCtl, DirandSize

1 June G1518, Förel 10, ht2005 (D3/CLMDA)70 DMA - Direct Memory Address Operativsystemets åtgärder för att genomföra BDT med DMA Initiera: register i DMA och starta DMA Kopiera: sköts av DMA ”i bakgrunden” Avsluta: Avbrott från DMA leder till br avsluta# hopp till OS Bokför att BDT är fullföljd, ”stäng DMA”

1 June G1518, Förel 10, ht2005 (D3/CLMDA)71 BDT - Block Data Transfers Block Data Transfer kan utföras med tre olika metoder 1. Program-styrd Block Data Transfer upptar 100% av CPU-tid 2. Avbrotts-styrd Block Data Transfer upptar < 100% av CPU-tid 3. DMA-styrd Block Data Transfer upptar << 100% av CPU-tid

1 June G1518, Förel 10, ht2005 (D3/CLMDA)72 1. BDT: I/O till minne med program (pollning av IBF) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers

1 June G1518, Förel 10, ht2005 (D3/CLMDA)73 2. BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers IRQ

1 June G1518, Förel 10, ht2005 (D3/CLMDA)74 3. BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

1 June G1518, Förel 10, ht2005 (D3/CLMDA)75 2G1518 Datorteknik allmän kurs Föreläsning 10 byte-code i JAVA metoden ”tick”

1 June G1518, Förel 10, ht2005 (D3/CLMDA)76 Något om Java zEditering av textfil, fil.java zKompilering till Byte-code, fil.class zInterpretering av Byte-code med zJVM - Java Virtual Machine

1 June G1518, Förel 10, ht2005 (D3/CLMDA)77 Programutveckling Assembler-kod Ass-program Text-fil Object-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil”

1 June G1518, Förel 10, ht2005 (D3/CLMDA)78 Assemblering; översätter Nios-kod till Assembler-kod Nios-program Text-fil Ladd-modul assemblering / översättning och länkning fil.asm, kan redigeras med en editor fil.objdump kan ej redigeras med en editor kan laddas ner till datorn minne

1 June G1518, Förel 10, ht2005 (D3/CLMDA)79 Programexekvering Nios-kod (Intel, …) FETCH (update PC) (decode) EXECUTE Hårdvara

1 June G1518, Förel 10, ht2005 (D3/CLMDA)80 C++ program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Pascal-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” BLANDAD KOD

1 June G1518, Förel 10, ht2005 (D3/CLMDA)81 Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Pascal-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” BLANDAD KOD JAVA-program Text-fil

1 June G1518, Förel 10, ht2005 (D3/CLMDA)82 Alt1: Kompilering; översätter java-kod till Assembler-kod java-program Text-fil Nios-code kompilering / översättning fil.java, kan redigeras med en editor fil.objdump, kan ej redigeras med en editor kan laddas ner till datorns minne

1 June G1518, Förel 10, ht2005 (D3/CLMDA)83 Alt2: Kompilering; översätter java-kod till byte-kod java-program Text-fil Byte-code kompilering / översättning fil.java, kan redigeras med en editor fil.class, kan ej redigeras med en editor kan laddas ner till datorn minne

1 June G1518, Förel 10, ht2005 (D3/CLMDA)84 Programexekvering byte-kod (Intel, …) FETCH (update PC) (decode) EXECUTE Mjukvara JVM - Java Virtual Machine

1 June G1518, Förel 10, ht2005 (D3/CLMDA)85 Java Virtual Machine interpreterar byte-code do { fetch an opcode; if (operands) fetch operands; execute the action for the opcode } while (there is more to do);

1 June G1518, Förel 10, ht2005 (D3/CLMDA)86 Decode - Execute ADD ?LD ?AND ?BR ? Exec ADD Exec LD Exec AND Exec BR JA NEJ... ILLEGAL JA Fetch Update PC

1 June G1518, Förel 10, ht2005 (D3/CLMDA)87 Kompilering; översätter java-kod till objekt-modul Interpretering Plattforms-oberoende Byte-code flyttbar JVM Java Virtual Machine Plattforms-beroende

1 June G1518, Förel 10, ht2005 (D3/CLMDA)88 Interpretering zFetch och Execute görs med programvara zJava har översatts till Byte-Code zByte-Code är en ”följd av instruktioner” zVarje processor (Nios, MIPS, x86) har en egen JVM (som exekveras i maskinkod) zJVM kan skrivas i C (eller pascal eller java) och kompileras/assembleras till Nios/MIPS

1 June G1518, Förel 10, ht2005 (D3/CLMDA)89 Programexempel, ass-code zC = A + B ; z”översätts” till zLOADR1 <-- A zLOADR2 <-- B zADDR3 <-- R1 + R2 zSTOREC <-- R3

1 June G1518, Förel 10, ht2005 (D3/CLMDA)90 Programexempel, byte-code Java-koden zC = A + B ; översätts till byte-code (java-assembler) zPUSHA;kopiera från minne till stack zPUSHB;kopiera från minne till stack zADD;”operera på stacken” zPOPC;kopiera från stack till minne

1 June G1518, Förel 10, ht2005 (D3/CLMDA)91 Operera på stack Addition av heltal ADDera de två översta int på stacken zPOP till ALU-A zPOP till ALU-B zaddera alu-a och alu-b till tmp-reg zPUSH från tmp-reg

1 June G1518, Förel 10, ht2005 (D3/CLMDA)92 Java-program steg vid program-arbete zSkriv källkod i JAVA, plattforms-oberoende och flyttbart zkompilera till byte-code, plattforms- oberoende och flyttbart zInterpretera byte-code med JVM zJVM = Java Virtual Machine, plattforms-beroende

1 June G1518, Förel 10, ht2005 (D3/CLMDA)93 funktionen tick i java-kod (obs parameter ej pekare utan värde) Class Tick { public int tick (int time) {time = time + 1; if ((time & 0x000F) == 0x000A) time = time - 0x000A + 0x0010; if ((time & 0x00F0) == 0x0060) time = time - 0x x0100; if ((time & 0x0F00) == 0x0A00) time = time - 0x0A00 + 0x1000; if ((time & 0xF000) == 0x6000) time = 0x0000; return time; } }

1 June G1518, Förel 10, ht2005 (D3/CLMDA)94 funktionen tick i byte-kod ;Här kommer den metod som kan anropas utifrån. ;vid anrop finns in-parameter i indexerat fält av local variables och med index 1 Method int tick(int) ;time = time + 1; 00x15iload_1;push int from 1(ireg) - time 10x04iconst_1;push #1 20x60iadd;int add: pop-pop-add-push 30x3cistore_1;pop to 1(ireg) - time forts.

1 June G1518, Förel 10, ht2005 (D3/CLMDA)95 funktionen tick i byte-kod forts.;if ((time & 0x000F) == 0x000A) time = time - 0x000A + 0x0010; 4iload_1;push int from 1(ireg) 5bipush 15;push #15 (2-byte-instr) 7iand;int and: pop pop and push 8bipush 10;push #10 10if_cmpne 21;conditional branch 13iload_1;push int from 1(ireg) 14bipush 10;push #10 16isub;int sub: pop pop sub push 17bipush 16;push #16 19iadd;int add: pop pop add push 20istore_1;pop int to 1(reg) 21...

1 June G1518, Förel 10, ht2005 (D3/CLMDA)96 funktionen tick i byte-kod forts.;if ((time & 0x000F) == 0x000A) time = time - 0x000A + 0x0010; 40x15iload_1;push int from 1(ireg) 50x10bipush 15;push #15 (2-byte-instr) 60x0f;value 15=0x0f 70x7eiand;int and: pop pop and push 80x10bipush 10;push #10 90x0a;value 10=0x0a 100xa0if_cmpne 21;conditional branch 110xkl;10 + 0xklmn = 21 maybe 120xmn;address other byte ??? 130x15iload_1;push int from 1(ireg) 140x10bipush 10;push #10 160x64isub;int sub: pop pop sub push 170x10bipush 16;push #16 180x10;value 16=0x10 190x60iadd;int add: pop pop add push 200x3cistore_1;pop int to 1(reg)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)97 funktionen tick i byte-kod forts.;if ((time & 0xF000) == 0x6000) time = 0x0000; 61iload_1;push int from 1(ireg) 62ldc #2 ;(2-byte-instr) 64iand;int and: pop pop and push 65sipush 24576;push #24576 (3-byte-instr) 68if_cmpne 73;conditional branch 71iconst_1;push #1 72istore_1;pop int to 1(reg) 73iload_1;returparameter till stack 74ireturn;retur med int på stack

1 June G1518, Förel 10, ht2005 (D3/CLMDA)98 Mer om java JVM och byte-code

1 June G1518, Förel 10, ht2005 (D3/CLMDA)99 2G1518 Datorteknik allmän kurs Föreläsning 10 Repetition Sammanfattning Lite till

1 June G1518, Förel 10, ht2005 (D3/CLMDA)100 2G1518 Dator- teknik ak 2G1518 Datorteknik Digitala kretsar Data- logi 2G1510 Dator- teknik fk 2G1511 Dator- arkitektur 2G1316 Datorkomm. och datornät 2G1520 Operativ- system 2G1508 Compiler... 2G1915 Concurrent Programming

1 June G1518, Förel 10, ht2005 (D3/CLMDA)101 Hur datorer fungerar Detta har ni lärt er ! Kopplingen mellan zProgram i C-kod (pascal, java, …) zProgram i Assembler (Nios, MIPS, …) zMaskinkod (binärkod, hexkod) zExekvering av program i binärkod zi CPU med PIPE-LINE zCPU byggs av logiska kretsar och minnen

1 June G1518, Förel 10, ht2005 (D3/CLMDA)102 Hur datorer fungerar Dessutom har ni lärt er ! zCache-minne orsak till införsel funktion, parametrar prestandavinster med cache zFördelning av processortid görs av OS zSamverkan mellan processer synkronisering, ömsesidig uteslutning rendez vous

1 June G1518, Förel 10, ht2005 (D3/CLMDA)103 Hur datorer fungerar slutligen har ni lärt er ! För Block Data Transfer, BDT gäller att zDMA - Direct Memory Access är bättre än zAvbrottstyrd BDT som är bättre än zProgramstyrd BDT

1 June G1518, Förel 10, ht2005 (D3/CLMDA)104 Tentamen innehåller zMaskinaritmetik med mera zAssemblerprogrammering,subrutiner zAssemblerprogrammering pollning/avbrott zCache-minnen zProcessorkonstruktion zCPU scheduling och semaforer (samt blankett för kursutvärdering)

1 June G1518, Förel 10, ht2005 (D3/CLMDA)105 Välkommen till andra kurser några exempel på tänkbara kurser z2G1510, Datorteknik fk z2G1511, Datorarkitektur z2G1508, Compilers and Virtual Machines z2G1520, Operating Systems z2G1915, Concurrent Programming z2G1529, Network Programming with Java

1 June G1518, Förel 10, ht2005 (D3/CLMDA)106 2G1518 Datorteknik Tentamina z17 december 08-13, för D3 och CLMDA (vid CAMPUS Valhallavägen) LYCKA TILL ! z10 mars 08-13, för D2 m.fl. Valhallavägen z22 maj för E3 m.fl. Valhallavägen z22 maj för IT och ME m.fl, KISTA