Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.



Relevanta dokument
Minnet från processorns sida Datorteknik

Digitala System: Datorteknik ERIK LARSSON

Filsystem - Inode. Datorteknik. Minnets komponenter. Programexekvering. Enhet för indata. Enhet för utdata CPU. Primärminne.

Datorarkitekturer med operativsystem ERIK LARSSON

Datorteknik ERIK LARSSON

Dugga 1 status 41 godkända 39 ej godkända ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

Exempeltentamen Datorteknik, EIT070,

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Datorteknik 2 (AVR 2)

Närliggande allokering Datorteknik

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 18 mars svar Datorteknik, EIT070

Mer datorarkitektur. En titt I datorn Minnen

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Datorteknik ERIK LARSSON

HF0010. Introduktionskurs i datateknik 1,5 hp

Grundläggande datavetenskap, 4p

Datorarkitekturer med operativsystem ERIK LARSSON

Jämförelse av skrivtekniker till cacheminne

Tentamen den 17 mars 2016 Datorteknik, EIT070

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Datorteknik ERIK LARSSON

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Cacheminne i en AMD Opteron Processor

Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

CE_O5. Cacheminne. Hemlaboration 2.

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Digitalteknik och Datorarkitektur 5hp

Program. Datorteknik. Semantiskt gap. C - Inledning. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk

TSEA28 Datorteknik Y (och U)

Datorarkitekturer med Operativsystem

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Tentamen PC-teknik 5 p Lösningar och kommentarer

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

TSEA28 Datorteknik Y (och U)

Datorsystem. Exempeltentamen

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Datorarkitekturer med operativsystem ERIK LARSSON

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorteknik ERIK LARSSON

MESI i Intel Core 2 Duo

TSEA28 Datorteknik Y (och U)

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Digital- och datorteknik

Läsminne Read Only Memory ROM

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Datorteknik ERIK LARSSON

Cacheminne Intel Core i7

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Föreläsningsanteckningar 5. Cacheminnen

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Digital- och datorteknik

Föreläsning 1: Intro till kursen och programmering

Minnessystem. Minneshierarki. Flyktigt eller icke flyktigt huvudsakliga egenskaper. Minneshierarki

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Att använda pekare i. C-kod

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Cacheminne i en Intel Core 2 Duo-processor

Föreläsning 1: Intro till kursen och programmering

IT för personligt arbete F5

Minneshantering segmentering och virtuellminne. Föreläsning 3

Datorarkitekturer med operativsystem ERIK LARSSON

Snapdragon 810: Cacheminnet

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

F5: Högnivåprogrammering

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Kontrollskrivning Mikrodatorteknik CDT S2-704

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

F5: Högnivåprogrammering

TSEA28 Datorteknik Y (och U)

Föreläsning 2. Operativsystem och programmering

Datorsystemteknik för E/D

Tentamen PC-teknik 5 p

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Datorteknik 1 (AVR 1)

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Operativsystem - input/output, skydd, virtualisering

CE_O8. Cacheminne. Hemlaboration 2.

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Datorsystemteknik DVGA03 Föreläsning 8

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Transkript:

Digitala System: Datorteknik Minnets komponenter ERIK LARSSON Enhet för indata CPU Enhet för utdata Sekundärminne Programexekvering Program i högnivåspråk.. Z:=(Y+X)*3. Kompilator Exekverbart program i maskinspråk: Adress Instruktioner 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 Programexekvering (1) Hämta instruktion på 00001000 (där PC pekar) (2) Flytta instruktionen 0000101110001011 till CPU (3) Avkoda instruktionen: 00001 MOVE, 01110001 Adress, 011 Register 3 (4) Hämta data på adress: 01110001 Fetch Execute (5) Lagra datan i register 3 Adress Instruktion 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 Data Instruktioner Register CPU Kontrollenhet Aritmetisk Logisk Enhet (ALU) Address Instruktion 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 Data Instruktioner Register CPU Kontrollenhet Aritmetisk Logisk Enhet (ALU)

Minnet från processorns sida Minneshantering Processorn ger kommandon/instruktioner med en adress och förväntar sig data. Exempel: READ(ADR) -> DATA Fysisk adress Logisk adress Vid multiprogrammering kommer flera olika program finnas i primärminnet. Kostar för mycket tid att flytta program till hårddisk vid kontext byte. T ex, två program ska exekveras samtidigt : READ Address Instruction 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 00001000 0000101110001011 Minne CPU Register READ (00001000) CPU Kontrollenhet Aritmetisk Logisk Enhet (ALU) 0101 0101 0011 0101 0101 0011 Filsystem - Inode Minnet Minnet kan delas upp i primärminne och sekundärminne t förlorar sitt innehåll när strömmen stängs av. Minnet är flyktigt (volatile) Random-Access Memory (RAM)» Dynamiska RAM (DRAM) och statiska RAM (SRAM) Sekundärminnet behåller sitt innehåll när strömmen slås av. Minnet är icke-flyktigt (non-volitile) Hårddisk, flashminne, magnetband ABBA: Dancing Queen Andra: CD, DVD

Ett ord (word) Sekundärminne 1 READ(ADR) Buffert för minnesadress Adressavkodare Minnesarea 2 Adress 2 Adress 1 Adress 0 A track, (B geometrisk sektor) C sektor, D cluster En sektor kan vara 512-4096 bytes och består av sektor header, data area, error korrektion kod (ECC) Header DATA Sektor ECC En bit 3 Databuffert DATA Minneskontroll Sekundärminne Vill lagra en fil som är 1500 bytes Hårddisk Antag sektor = 512, cluster = 2*512 Lösning: Ta 2 stycken cluster (2048 bytes) Fil byte 0 byte 2 byte 1499 1500 bytes byte 0 byte 2 byte 1023 2*512 bytes Filsystem - Inode Sektor Halvfull sektor 1 2 3 Tom sektor ABBA: Dancing Queen

Sekundärminne Sekundärminne Problem 1 Intern fragmentering Problem 2 Vilka cluster på hårddisk ska användas? Unix (inode): Snabb access för många block Kan hantera stora filer 1 3 2 Sekundärminne Sekundärminne Små cluster (blocks) ger liten intern fragmentering Antag sector = 512, cluster = 2*512 Vill lagra en fil som är 1500 bytes Ta 2 stycken cluster (~2000 bytes) Men, kräver mer hantering (fler kluster på hårddisken) Vad innebär det att ta bort en fil? Kan man återskapa information från en hårddisk? Flashminne Utvecklat av Dr. Fujio Masuoka (Toshiba) kring 1980 Mobiltelefoner, kameror, MP3-spelare och i datorer Non-volatile och random access Kapacitet: mindre än en hårddisk Begränsat antal skrivningar Block 0: bad blocks Block 1: bootable block

Sekundärminne Lågnivåformatering Dela in hårddisk i tracks och sectors Partitioning» En sector är 512-4098 bytes Dela in en fysisk hårddisk i en eller flera logiska hårddiskar, t ex C:, D:, E: Högnivåformatering Bestäm för vilket operativ system hårddisken ska användas Design av minnesystem Vad vill vi ha? Ett minne som får plats med stora program och som fungerar i hastighet som processorn» Fetch execute (MHz/GHz/Multi-core race) Grundproblem: Processorer arbetar i hög hastighet och behöver stora minnen Minnen är mycket långsammare än processorer Fakta: CPU Större minnen är långsammare än mindre minnen Snabbare minnen kostar med per bit Minne-processor hastighet Minneshierarki

Minneshierarki Processor registers: 8-32 registers (32 bitar -> 32-128 bytes) accesstid: få ns, 0-1 klockcykler Cacheminne On-chip cache memory (L1): 32 till 128 Kbytes accesstid = ~10 ns, 3 klockcykler Off-chip cache memory (L2): 128 Kbytes till 12 Mbytes accesstid = 10-tal ns, 10 klockcykler Instruktioner och data Instruktioner och data Adress Cacheminne Kopior av instruktioner och data Instruktioner och data Adress Central processing unit (CPU) Register Main memory: 256 Mbytes till 4Gbytes accesstid = ~100 ns, 100 klockcykler Hard disk: 1Gbyte tid 1Tbyte accesstid = 10-tal milliseconds, 10 000 000 klockcykler Accesstid: 100ns Accesstid: 10ns Cacheminne Cache exempel 1 Ett cacheminne är mindre och snabbare än primärminnet Hela program får inte plats Men, data och instruktioner ska vara tillgängliga när de behövs Om man inte har cacheminne: Accesstid för att hämta en instruktion=100ns Om man har cacheminne: Accesstid för att hämta en instruktion=100+10=110 ns» Först ska instruktionen hämtas till cacheminne och sedan hämtas instruktionen från cacheminnet till CPU Program: Assemblyinstruktioner x=x+1; Instruktion1: x=x+1; y=x+5; Instruktion2: y=x+5; z=y+x; Instruktion3: z=y+x; Om man inte har cacheminne: Accesstid för att hämta en instruktion=100ns» Tid för att hämta instruktioner: 3*100=300ns Om man har cacheminne: Accesstid för att hämta en instruktion=100+10=110ns» Tid för hämta instruktioner: 3*110=330ns

Cache exempel 2 Antag: 1 maskininstruktion per rad 100 ns för minnesaccess till primärminnet 10 ns för minnesaccess till cacheminnet Programmet och dess maskininstruktioner. Exempel program: Assembly while (x<1000){ Instruktion1: while1000 x=x+1; Instruktion2: x=x+1 printf( x=%i,x); Instruktion3: print x} while (y<500){ Instruktion4: while500 y=y+1; Instruktion5: y=y+1 printf( y=%i,y); Instruktion6: print y } Utan cache exempel 2 Minnesaccess för 1 instruktion: 100 ns Totalt 4500 instruktioner. Tid för minnesaccesser: 4500*100= 450000ns Antal instruktioner Instruktioner som exekveras: 1 Instruktion1:while1000 2 Instruktion2:x=x+1 3 Instruktion3:printx 2998 Instruktion1:while1000 2999 Instruktion2:x=x+1 3000 Instruktion3:printx} 3001 Instruktion4:while500 3002 Instruktion5:y=y+1 3003 Instruktion6:printy 4498 Instruktion4:while500 4499 Instruktion5:y=y+1 4500 Instruktion6:printy Med cache exempel 2 Minne+cache (100+10 ns) Cache (10 ns) Minne+cache (100+10 ns) Cache (10 ns) Total tid för minnesaccesser: 6*100 + 4500*10= 45600ns (~10% jmf med utan cache ) Antal instruktioner Instruktioner som exekveras: 1 Instruktion1:while1000 2 Instruktion2:x=x+1 3 Instruktion3:printx 2998 Instruktion1:while1000 2999 Instruktion2:x=x+1 3000 Instruktion3:printx} 3001 Instruktion4:while500 3002 Instruktion5:y=y+1 3003 Instruktion6:printy 4498 Instruktion4:while500 4499 Instruktion5:y=y+1 4500 Instruktion6:printy Cacheminne Minnesreferenser tenderar att gruppera sig under exekvering både instruktioner (t ex loopar) och data (datastrukturer) Lokalitet av referenser (locality of references): Temporal lokalitet lokalitet i tid» om en instruktion/data blivit refererat nu, så är sannolikheten stor att samma referens görs inom kort Rumslokalitet» om instruktion/data blivit refererat nu, så är sannolikheten stor att instruktioner/data vid adresser i närheten kommer användas inom kort

Utnyttja lokalitet Minneshierarki Lagra allt på hårddisk Kopiera recently accessed (and nearby) items från disk till mindre primärminne Kopiera mer recently accessed (and nearby) items från primärminne till cacheminne» Cacheminne kopplat till CPU Minneshierarki - nivåer Block (line): enhet som kopieras Kan vara flera words Om accessed data finns i högsta nivån (upper level) Hit: access ges av högsta nivå» Hit ratio: hits/accesses Om accessed data inte finns på aktuell nivå Miss: block kopieras från lägre nivå Tid: miss penalty, Miss ratio: antal missar/accesses = 1 hit ratio Sedan kan data nås från högre nivå Skrivstrategier Skrivstrategier Problem: håll minnet konsistent Exempel: x=0; while (x<1000) x=x+1; Variablen x kommer finnas i primärminnet och i cacheminnet I primärminnet är x=0 medan i cacheminnet är x=0,1,2 och till sist 1000 Write-through skrivningar i cache görs också direkt i primärminnet Write-through with buffers skrivningar buffras och görs periodiskt Write (Copy)-back primärminnet uppdateras först när en cacherad byts ut (ofta används en bit som markerar om en cacherad blivit modifierad (dirty)). (Omodifierade cacherader behöver inte skrivas i primärminnet)

Skrivstrategier Antal cachenivåer (levels) Skilj på write-hit och write-miss Write-hit: se ovan Write-miss: Vill skriva på plats som inte finns i cacheminne» Alternativ: Allokera vid miss: hämta block från primärminne Write around: hämta inte in block från primärminne, skriv direkt i primärminne Instruktioner och data Cache minne L2 Cache minne L1 Central processing unit (CPU) Register» (För write-back: vanligen fetch block) Separat instruktion/data cache Prestanda Instruktioner och data Cacheminne Kopior av instruktioner Cacheminne Central processing unit (CPU) Register När CPU prestanda ökar, så blir miss penalty viktig att minimera För att undersöka prestanda måste man ta hänsyn till cacheminne Cachemissar beror på algoritm(implementation) och kompilatorns optimering Kopior av data

AMD Athlon 64 CPU Minnets innehåll över tiden TID Paging Filsystem - Inode Program A byte 0 byte 1. SIDA A0 SIDA A1 SIDA A2 byte n SIDA A3 (lagring på hårddisk ej sammanhängande se tidigare) ABBA: Dancing Queen

Paging Demand paging Logisk adress Fysisk adress Ladda endast de pages som behövs till primärminnet CPU utnyttjande OS tar alltmer tid för att hantera sidfel Grad av multiprogrammering (hur många program som är aktiva) Sammanfattning Snabba minnen är små, stora minnen är långsamma Vi vill ha snabba och stora minnen Cacheminnen och virtuellt minne ger oss den illusionen Lokalitet viktigt för att cacheminnen och virtuellt minne ska fungera Program använder vid varje tidpunkt en liten del av sitt minne ofta Minneshierarki L1 cache <->L2 cache. - Sekundärminne Digitala System: Datorteknik ERIK LARSSON

Adress Data Datatyper (fortsättning från lab 1) Tabell för de olika siffrorna: const unsigned char segment_table [] = { 0b11111101, //"0 0b11001000, //"1 0b1, 0b1, 0b1, 0b1, Fyll i! 0b1, 0b1, 0b1, 0b1, }; Datatyper #include <avr/io.h> const unsigned char segment_table [] = { 0b11111101, //"0 0b11001000, //"1 //...resten av tabellen }; unsigned char n; int main(void) { DDRA = 0b01111111; // Utgångar till display PORTA = 0b10000000; // Aktivera pull-up while (1){ n=(n+1); // Öka n med ett PORTA = segment_table[n]; // Skriv ut med tabellen }} 0 segment_table [0] 1 segment_table [1] 2 segment_table [2]. 9 segment_table [9] 10 n 11 1111 0000 12 1010 1010 Drivrutin Uppgift 5-7 Skriv en drivrutin där programmeraren anropar: display(5) om 5 ska skrivas ut. // Funktion display: // skriver ut en decimal siffra på displayen. void display (unsigned char number) { PORTA = segment_table [number]; } Avkänn enskilda knapptryckningar. Räkna upp displayens värde med 1 vid varje knapptryck Tangentstudsar blir ett problem. Lägg in en fördröjning: for (k=0; k<10; k++); volatile unsigned int k;

Lagringstyp: Volatile Register och primärminne Om man opererar på I/O-register, hanterar kommunikation med yttre enheter. De yttre enheterna är bara delvis under kontroll av processorn. En I/O-variabel kan ändras av processorn och I/O-enheten. Det är därför inte bra om dessa variabler lagras i processorns register. Exempel: volatile int tangentbord_reg Högnivåspråk: a=b+c; Assemblyspråk: ADD a, b, c Kompilatorn hittar en maskininstruktion som passar 3 minnesaccesser: Hämta b Hämta c Skriv a Register och primärminne Register och primärminne Högnivåspråk: a=b+c+d; Alternativ 1: ADD a, b, c //adderar b och c, resultat i a ADD a, a, d //adderar a (som är b+c) med d, resultat i a Antal minnesaccesser: 6=3+3 Tid för en minnesaccess: 100 ns gör att minnesläsning/ skrivning tar 600 ns Högnivåspråk: a=b+c+d; Alternativ 2: ADD r1, b, c //adderar b och c, resultat i register 1 ADD a, r1, d //adderar a (som är i r1) med d, resultat i a Antal minnesaccesser: 4=2+2 Tid för en: minnesaccess: 100 ns Registeraccess: 1 ns: Minnesläsning/skrivning tar 400 + 2 ns = 402 ns 30% sparad tid (600-402)/600

Uppgift 8 Varje grupp får en egen uppgift. Gemensamt, PORT B. Digitala System: Datorteknik ERIK LARSSON Port A Port B Programmerad I/O Avbrottstyrd I/O Processorn kontrollerar om I/O har skett. 1 0.1 s Exempel: 1. Läs av om tangent är tryckt. 2. Om tangent tryckt, hantera, annars vänta lite och gå till 1 4 Main Data/instruktioner Kontroll 3 Central processing unit (CPU) Nackdel: Processorn är låst och gör meningslösa saker OS 5 Fetch instruction Execute instruction 2 Kontrollera och hantera avbrott (ändra PC)

Avbrottsstyrd I/O Laboration 3 1 I/O Periodiskt avbrott 4 Main 3 Data/instruktioner Kontroll 5 Central processing unit (CPU) Använda en klocka som genererar ett avbrott periodiskt. När avbrott uppkommer, kontrollera om tangent är tryckt. Fördel, slipper låta processor exekvera en tom -loop Fetch instruction Execute instruction 2 Kontrollera och hantera avbrott Laboration 3 Laboration 3 Så här kan programmet från förra laborationen beskrivas: 1. Vänta tills knappen är nedtryckt. 2. Vänta med hjälp av vänteloop så studsarna slutat. 3. Utför uppgiften (öka n med ett; om n blir 10 sätt n till noll; anropa utskriftsfunktionen med n som inparameter.) 4. Vänta tills knappen är släppt. 5. Vänta med hjälp av vänteloop så studsarna slutat. 6. Gå till punkt 1. Med hjälp av periodiskt avbrott ska vi skapa en lösning som med jämna intervall gör följande: 1. Läs av knappen. 2. Om den är nere nu, men var uppe förra gången: Utför uppgiften (som är: öka n med ett; om n blir 10 sätt n till noll; anropa utskriftsfunktionen med n som inparameter. )

Laboration 3 Timer_Counter_1 TIMSK TCCR1A TCCR1B OCR1A Laboration 3 #include <avr/io.h> #include <avr/interrupt.h> unsigned const char segment_table [] = { 0b11111101, //"0 0b11001000, //"1 }; void display (unsigned char number) { // din kod här } unsigned char n; void initoc1(){ // din kod här } ISR (SIG_OUTPUT_COMPARE1A){ static unsigned char //dina variabler; din kod } int main(void){ DDRA = 0b01111111; // Utgångar till display PORTA = 0b10000000; // Aktivera pull-up initoc1(); SREG = SREG //din kod; while (1){ } } Avbrottsrutin