2 June 2015 2G1502, Föreläsning 8, vt2004 för E och I1 2G1502 Datorteknik allmän kurs Föreläsning 8 Processorkonstruktion DMA, Direct Memory Access.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson Luleå tekniska universitet 2005.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Datorarkitekturer och operativsystem
Enkel dator teknik Tips och tricks.
Funktioner och programorganisation
Filhantering Grundprincipen för filhantering Öppna filen
William Sandqvist System Management functions S Burd, Systems Architecture ISBN Figure 11-2 CPU Management Memory Management.
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.
Skrivning i cacheminnen zTräff zMiss zSkrivbuffert.
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
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.
DAV B04 - Databasteknik Indexering (kap 14).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Pekare och speciell programstruktur i inbyggda system
Tabeller.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -Producent – konsument problemet -Förmedling av fildeskriptorer.
Digital och Datorteknik – EDA / Mikroprogrammering EDA Digital och Datorteknik 2009/2010 Mikroprogrammering Arbetsboken, avsnitt 28.
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
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.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
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.
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
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.
14.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Repetition.
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 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
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.
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.
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
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.
Enkel dator teknik Tips och tricks. Välja storlek och radavstånd Här väljer du storlek på texten vi vill att ni använder 14 p till rubriker och 12 p till.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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

2 June G1502, Föreläsning 8, vt2004 för E och I2 Kursboken kap 7, Processorkonstruktion 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

2 June G1502, Föreläsning 8, vt2004 för E och I3 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

2 June G1502, Föreläsning 8, vt2004 för E och I4 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

2 June G1502, Föreläsning 8, vt2004 för E och I5 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 ! Flera register IR

2 June G1502, Föreläsning 8, vt2004 för E och I6 4 stegs CPU utan och med PIPE-LINE FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB Utan PIPE-LINE Med PIPE-LINE

2 June G1502, Föreläsning 8, vt2004 för E och I7 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

2 June G1502, Föreläsning 8, vt2004 för E och I8 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...

2 June G1502, Föreläsning 8, vt2004 för E och I9 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

2 June G1502, Föreläsning 8, vt2004 för E och I10 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

2 June G1502, Föreläsning 8, vt2004 för E och I11 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

2 June G1502, Föreläsning 8, vt2004 för E och I12 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

2 June G1502, Föreläsning 8, vt2004 för E och I13 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

2 June G1502, Föreläsning 8, vt2004 för E och I14 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

2 June G1502, Föreläsning 8, vt2004 för E och I15 LOAD och STORE zVi vill kunna utföra instruktionerna LOADR dst, [ R addr ] STORE [ R addr ], R src zIndirekt adressering via register

2 June G1502, Föreläsning 8, vt2004 för E och I16 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

2 June G1502, Föreläsning 8, vt2004 för E och I17 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

2 June G1502, Föreläsning 8, vt2004 för E och I18 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

2 June G1502, Föreläsning 8, vt2004 för E och I19 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

2 June G1502, Föreläsning 8, vt2004 för E och I20 LOAD och STORE zVi vill kunna utföra instruktionerna LOADR dst, Offset[ R addr ] STOREOffset[ R addr ], R src zIndexerad adressering

2 June G1502, Föreläsning 8, vt2004 för E och I21 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

2 June G1502, Föreläsning 8, vt2004 för E och I22 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

2 June G1502, Föreläsning 8, vt2004 för E och I23 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

2 June G1502, Föreläsning 8, vt2004 för E och I24 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

2 June G1502, Föreläsning 8, vt2004 för E och I25 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...

2 June G1502, Föreläsning 8, vt2004 för E och I26 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

2 June G1502, Föreläsning 8, vt2004 för E och I27 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

2 June G1502, Föreläsning 8, vt2004 för E och I28 inför nya data-vägar ALU/EXEInstruction Decode Fetch Operand MEMInstruction Fetch Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 IR3 Write Back +2 Register File 32 x 32

2 June G1502, Föreläsning 8, vt2004 för E och I29 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

2 June G1502, Föreläsning 8, vt2004 för E och I30 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

2 June G1502, Föreläsning 8, vt2004 för E och I31 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)

2 June G1502, Föreläsning 8, vt2004 för E och I32 Load Delay i 5-stegs pipe även vid Data Forward LOAD reg FIFOALUWB MEM ADD reg Tillgängligt från minne FIFOALUWB MEM Skriv till ALU-reg Data Forward fungerar FIFOALUWB MEM NOP ?

2 June G1502, Föreläsning 8, vt2004 för E och I33 Fenomen med pipelining Akademiskt zStrukturella konflikter (structural hazard) inför flera funktionsenheter t.ex. minnen zDatakonflikt (data hazard) * Inför bubblor i pipeline NOP med software eller NOP med hardware * Flytta om instruktioner * Återkoppling (data forward)

2 June G1502, Föreläsning 8, vt2004 för E och I34 Kursboken kap 7, Processorkonstruktion 7.1 Instruktionstyper zAritmetiska med tre registeroperander zAritmetiska med två registeroperander och Imm zLoad-instruktioner zStore-instruktioner zPC-relativa hopp zAbsoluta hopp z(övriga brukar alltid finnas …)

2 June G1502, Föreläsning 8, vt2004 för E och I35 Instruktionsformat MIPS R-typ I-typ J-typ op hoppadress konstant rt rs rt rdrsfunk sa Figur 7.1 i kursboken, sid

2 June G1502, Föreläsning 8, vt2004 för E och I36 Vad händer vid instruktionsexekveringen zInstruction fetch zinstruction decode zoperand fetch zALU-exec. or MEMory ref. or JUMP/BRA zWrite Back

2 June G1502, Föreläsning 8, vt2004 för E och I37 Instruction fetch ADD 4 Instruktions- minne Instruktion ut PC Klocksignal Figur 7.2 i kursboken, sid 238

2 June G1502, Föreläsning 8, vt2004 för E och I38 MIPS datapath, enkel Figur 7.10 i kursboken zPC med instruktionsminne zRegisterbank med adresser och data zALU med operander och resultat zdataminne med adress och data in och ut zhopplös uppdatering av PC zuppdatering av PC vid hopp zstyrenhet zklocksignal

2 June G1502, Föreläsning 8, vt2004 för E och I RISC-processorer med pipelining RISC - Reduced Instruction Set Computer Exempel på egenskaper hos en RISC zFå instruktionsformat, lätta att avkoda zMånga likvärdiga register zSpeciella LOAD och STORE-instruktioner z(Få och enkla adresserings-metoder) z(En instruktion per klockcykel)

2 June G1502, Föreläsning 8, vt2004 för E och I40 CISC Complex Instruction Set Computer Exempel på egenskaper hos en CISC zMånga kraftfulla instruktioner zMånga addresseringssätt zMånga instruktionsformat och storlekar zAvser att minska det ”semantiska gapet”

2 June G1502, Föreläsning 8, vt2004 för E och I41 MIPS datapath, pipeline Figur 7.11 i kursboken zBlock med kombinatorik och mellanliggande register zAlla register skrivs samtidigt (System Clock) zSen ”arbetar” kombinatoriken en klockperiod zAlla register skrivs samtidigt (System Clock) z... zJämför med figurer på nästa 3 sidor zHur hanteras hopp...

2 June G1502, Föreläsning 8, vt2004 för E och I42 Pipeline med register och kombinatorik ALU PC ADD IR0 IR1 IR2 +2 REGISTER KOMBINATORIK REGISTER KOMBINATORIK REGISTER

2 June G1502, Föreläsning 8, vt2004 för E och I43 MIPS load delay Figur 7.20 i kursboken jämför med figur nedan LOAD to Rd FIFOALUWB MEM FIFOALUWB MEM Rd tillgängligt från minne Rd önskas till ALU-reg men finns inte tillgängligt USE Rd

2 June G1502, Föreläsning 8, vt2004 för E och I44 Villkorligt PC-relativt hopp Studera figur 7.11 eller 7.19 zVilket villkor erbjuds zNär avgörs villkoret zNär och hur bildas hoppadressen zNär fullföljs hoppet zHur kan man förbättra

2 June G1502, Föreläsning 8, vt2004 för E och I45 Villkorligt PC-relativt hopp zVilket villkor erbjuds, ALU-ut = 0 ! zNär avgörs villkoret, i EXE-steget zNär bildas hoppadressen, i EXE-steget zHur bildas hoppadressen, PC + Imm zNär fullföljs hoppet, 2 steg senare zHur kan man förbättra försök flytta arbete till tidigare steg

2 June G1502, Föreläsning 8, vt2004 för E och I46 Villkorligt PC-relativt hopp Hur kan man förbättra försök flytta arbete till tidigare steg zJämför registeroperander i FO/ID-steget zbilda hoppadressen i FO/ID-steget zDå blir det bara en enda hopplucka (i stället för 2) (sidan 265 i kursboken)

2 June G1502, Föreläsning 8, vt2004 för E och I47 Block Data Transfer - BDT Kopiera ett antal ord, ett Block zfrån minne till minne 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”

2 June G1502, Föreläsning 8, vt2004 för E och I48 BDT: minne till minne MEM SrcAddr NrOfTransfers DstAddr Det behövs 2 adresspekare Källadress och Destinationsasdress Det behövs en räknare, antal kopieringar Var lagras pekare och räknare ? I register eller i minne ! beroende på metod

2 June G1502, Föreläsning 8, vt2004 för E och I49 BDT: minne till minne CPU MEM BUS I/O

2 June G1502, Föreläsning 8, vt2004 för E och I50 BDT: minne till I/O CPU MEM BUS I/O

2 June G1502, Föreläsning 8, vt2004 för E och I51 BDT: I/O till minne CPU MEM BUS I/O

2 June G1502, Föreläsning 8, vt2004 för E och I52 BDT: I/O till I/O CPU BUS I/O

2 June G1502, Föreläsning 8, vt2004 för E och I53 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

2 June G1502, Föreläsning 8, vt2004 för E och I54 BDT - Block Data Transfers Block Data Transfer kan utföras med tre olika metoder zProgram-styrd Block Data Transfer zAvbrotts-styrd Block Data Transfer zDMA-styrd Block Data Transfer (DMA - Direct Memory Access)

2 June G1502, Föreläsning 8, vt2004 för E och I55 Program-styrd BDT source to destination Programstruktur zinitiera pekare och räknare zloop:kopiera en enhet (byte/word) z bra loop om ej klart z avsluta

2 June G1502, Föreläsning 8, vt2004 för E och I56 Programstyrd BDT source to destination ;Initiera inför programmerad BDT ;pekare och räknare i ”vanliga” CPU-register movia%L0, SrcAddr movia%L1, DstAddr movia%L2, NrOfTransfers

2 June G1502, Föreläsning 8, vt2004 för E och I57 Program-styrd BDT Memory to Memory ;Kopiera i programslinga.equwordsize, 4 loop:ld%reg, [%L0];läs data st[%L1], %reg;skriv data addi%L0, wordsize;öka läsadress addi%L1, wordsize;öka skrivadress subi%L2, 1;minska räknare bneloop;hoppa om ej klart braavsluta;hopp till OS

2 June G1502, Föreläsning 8, vt2004 för E och I58 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

2 June G1502, Föreläsning 8, vt2004 för E och I59 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 &&&......

2 June G1502, Föreläsning 8, vt2004 för E och I60 BDT: I/O till minne CPU MEMI/O SrcAddr DstAddr NrOfTransfers

2 June G1502, Föreläsning 8, vt2004 för E och I61 Block Data Transfer I/O to Memory ;Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:bsrgetdata;blocking on IBF st[%L1], %reg;skriv data ;addi%L0, wordsize;öka ej läsadress addi%L1, wordsize;öka skrivadress subi%L2, 1;minska räknare bneloop;hoppa om ej klart braavsluta;hopp till OS

2 June G1502, Föreläsning 8, vt2004 för E och I62 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

2 June G1502, Föreläsning 8, vt2004 för E och I63 Block Data Transfer Memory to I/O ;Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:ld%o0, [%L0];läs data bsrputdata;blocking on OBE addi%L0, wordsize;öka läsadress ;addi%L1, wordsize;öka ej skrivadress subi%L2, 1;minska räknare bneloop;hoppa om ej klart braavsluta;hopp till OS

2 June G1502, Föreläsning 8, vt2004 för E och I64 Block Data Transfer I/O to I/O ;Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:bsrgetdata;blocking on IBF bsrputdata;blocking on OBE ;addi%L0, wordsize;öka ej läsadress ;addi%L1, wordsize;öka ej skrivadress subi%L2, 1;minska räknare bneloop;hoppa om ej klart braavsluta;hopp till OS

2 June G1502, Föreläsning 8, vt2004 för E och I65 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

2 June G1502, Föreläsning 8, vt2004 för E och I66 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. movia%L0, SrcAddr;måste ändras movia%L1, DstAddr;måste ändras movia%L2, NrOfTransfers;måste ändras

2 June G1502, Föreläsning 8, vt2004 för E och I67 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IRQ

2 June G1502, Föreläsning 8, vt2004 för E och I68 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?)

2 June G1502, Föreläsning 8, vt2004 för E och I69 Avbrotts-styrd BDT I/O to Memory zProgramstruktur initiera: programsnutt i OS kopiera: Exceptionhandler, int, anropas vid avbrott dvs då IBF = 1 int:kopiera en enhet;se nästa sida TRET %07;retur från int avsluta:braOS-avsluta;hopp till OS

2 June G1502, Föreläsning 8, vt2004 för E och I70 Avbrotts-styrd BDT I/O to Memory kopiera en enhet;se denna sida zint: loadia %L0, SrcAddrPoint;hämta läsadress z loadia %L1, DstAddrPoint;hämta skrivadress z ld%L2, [%L0];läs data från INPORT z st[%L1], %L2;skriv data till minne zloadia%L3, NrOfTranf;hämta räknare z subi%L3, 1;uppdatera räknare z ifrz%L3;kolla om klart z braavsluta;hopp till OS z; forts.

2 June G1502, Föreläsning 8, vt2004 för E och I71 Avbrotts-styrd BDT I/O to Memory Avbrottsrutin forts. z;addi%L0, wordsize;öka läsadress, nej ! z addi%L1, wordsize;öka skrivadress, ja ! z ;storiaSrcAddrPoint, %L0;skriv EJ tillbak läsadress z storiaDstAddrPoint, %L1;skriv tillbaks skrivadress z storiaNrOfTrans, %L3;skriv tillbaks räknare z return;from interrupt

2 June G1502, Föreläsning 8, vt2004 för E och I72 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IRQ

2 June G1502, Föreläsning 8, vt2004 för E och I73 BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

2 June G1502, Föreläsning 8, vt2004 för E och I74 Bus Arbiter krävs Bus Request / Bus Grant CPU MEM BUS I/O DMA Bus Arbiter BR BG

2 June G1502, Föreläsning 8, vt2004 för E och I75 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

2 June G1502, Föreläsning 8, vt2004 för E och I76 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

2 June G1502, Föreläsning 8, vt2004 för E och I77 BDT: I/O till minne med DMA CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers

2 June G1502, Föreläsning 8, vt2004 för E och I78 DMA-styrd BDT Memory to Memory Programstruktur zinitiera z... DMA:kopiera en enhet avsluta: Meddela att det är klart ? Hur? Vart?

2 June G1502, Föreläsning 8, vt2004 för E och I79 Block Data Transfer I/O to Memory ;Initiera inför DMA-styrd BDT ;DmaSrc, -Dst, -Nr och -Ctl är memory-mapped register i DMA zstoreiDmaSrc, SrcAddr zstoreiDmaDst, DstAddr zstoreiDmaNr, NrOfTransfers zstoreiDmaCtl, DirandSize

2 June G1502, Föreläsning 8, vt2004 för E och I80 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 bra avsluta;hopp till OS Bokför att BDT är fullföljd, ”stäng DMA”

2 June G1502, Föreläsning 8, vt2004 för E och I81 BDT - Block Data Transfers Block Data Transfer kan utföras med tre olika metoder zProgram-styrd Block Data Transfer upptar 100% av CPU-tid zAvbrotts-styrd Block Data Transfer upptar < 100% av CPU-tid zDMA-styrd Block Data Transfer upptar << 100% av CPU-tid

2 June G1502, Föreläsning 8, vt2004 för E och I82 BDT: I/O till minne med program (pollning av IBF) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers

2 June G1502, Föreläsning 8, vt2004 för E och I83 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers IRQ

2 June G1502, Föreläsning 8, vt2004 för E och I84 BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

2 June G1502, Föreläsning 8, vt2004 för E och I85 Plats för återhämtning Och här kommer en till