Minnet från processorns sida Datorteknik

Relevanta dokument
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

Digitala System: Datorteknik ERIK LARSSON

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

Digitala System: Datorteknik ERIK LARSSON

Dugga 1 status 41 godkända 39 ej godkända 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.

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Närliggande allokering Datorteknik

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

4 grundregler. Minneshantering. Problemet. Windows minkrav

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Exempeltentamen Datorteknik, EIT070,

Tentamen den 18 mars svar Datorteknik, EIT070

Snapdragon 810: Cacheminnet

CE_O5. Cacheminne. Hemlaboration 2.

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

Digitala System: Datorteknik ERIK LARSSON

Digitalteknik och Datorarkitektur 5hp

Några gamla tentamensuppgifter: Minneshantering

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

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

HF0010. Introduktionskurs i datateknik 1,5 hp

Datorarkitekturer med operativsystem ERIK LARSSON

Jämförelse av skrivtekniker till cacheminne

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

Minneshantering segmentering och virtuellminne. Föreläsning 3

Datorteknik ERIK LARSSON

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)

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

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

Hantering av hazards i pipelines

Föreläsningsanteckningar 5. Cacheminnen

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Cacheminne i en Intel Core 2 Duo-processor

Datorarkitekturer med Operativsystem

Mer datorarkitektur. En titt I datorn Minnen

CE_O8. Cacheminne. Hemlaboration 2.

MESI i Intel Core 2 Duo

Grundläggande datavetenskap, 4p

En överblick på cachedesignen i Intels mikroarkitektur Nehalem

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

Datorsystemteknik för E/D

Pipelining i Intel 80486

TSEA28 Datorteknik Y (och U)

Datorarkitekturer med operativsystem ERIK LARSSON

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

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

TSEA28 Datorteknik Y (och U)

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

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

Datorsystem. Exempeltentamen

Cacheminne i en AMD Opteron Processor

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

Datorarkitekturer med operativsystem ERIK LARSSON

TSEA28 Datorteknik Y (och U)

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

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

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

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

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

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

Datorteknik ERIK LARSSON

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

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

Datorsystem. Tentamen

Vad bör göras? Steg 1. RISC => pipelining. Parallellism. Pipelining. Nya LDA 13. RISC(reduced instruction set computer) Öka klockfrekvensen

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Digital- och datorteknik

Det finns en hemsida. Adressen är

Digital- och datorteknik

Öka prestanda i Shared-Cache multi-core processorer

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

Operativsystem - input/output, skydd, virtualisering

6. Minnen. Associativt minne

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Cache coherence hos multicoreprocessorer

Hantering av begränsat antal skrivningar på Solid State diskar

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

Komma över Memory wall med 3D stacked minne LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap

Innehåll. Minneshantering. Systemet hivlls... Föreläsning 1. Problemformuleringar. Problem a[ lösa idag (...)

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsningsanteckningar 3. Mikroprogrammering II

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

Rapport (1,5 HP) Lunds Universitet HT15

Datorteknik ERIK LARSSON

Institutionen för datavetenskap 2014/15

Operativsystem (IS1350) :00-12:00

Digitalteknik och Datorarkitektur 5hp

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok

Arm Cortex-A8 Pipeline

Att använda pekare i. C-kod

Datorsystemteknik DVGA03 Föreläsning 8

Cacheminne och adressöversättning

Pipelining i Intel Pentium II

TSEA28 Datorteknik Y (och U)

Transkript:

Minnet från processorns sida Datorteknik ERIK LARSSON Processorn ger kommandon/instruktioner med en adress och förväntar sig data. Exempel: READ(ADR) -> DATA Fysisk adress Logisk adress READ 00001000 READ (00001000) CPU Address Instruction 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 0000101110001011 Minne CPU Register Kontrollenhet Aritmetisk Logisk Enhet (ALU) Minne-processor hastighet 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) CPU Grundproblem: Processorer arbetar i hög hastighet och behöver stora minnen Minnen är mycket långsammare än processorer Fakta: Större minnen är långsammare än mindre minnen Snabbare minnen kostar med per bit

Minneshierarki Minneshierarki Processor registers: 8-32 registers (32 bitar -> 32-128 bytes) accesstid: få ns, 0-1 klockcykler 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 Main memory: 256 Mbytes till 4Gbytes accesstid = ~100 ns, 100 klockcykler Hard disk: 1Gbyte tid 1Tbyte accesstid = 10-tal milliseconds, 10 000 000 klockcykler Cacheminne Cache exempel 1 Instruktioner och data Instruktioner och data Adress Cacheminne Kopior av instruktioner och data Instruktioner och data Adress Central processing unit (CPU) Register 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 Accesstid: 100ns Accesstid: 10ns

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 } 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 Cacheminne (Direktmappning) Hamnar i denna låda Cacheminne (Associativmappning) Kan hamna i vilken låda som helst Låda 0 1 2 3 Adress 00 01 10 11 Tag 00 01 10 11 TAG Adress 0000 fin skjorta 0001 fin byxor 0010 fin t-shirt 0011 ful skjorta 0100 ful byxor 0101 ful t-shirt. 1110 1111 Låda 1 2 3 4 Tag 0000 0100 0001 0010 TAG Adress 0000 fin skjorta 0001 fin byxor 0010 fin t-shirt 0011 ful skjorta 0100 ful byxor 0101 ful t-shirt. 1110 1111 I låda 00 med TAG=00 ligger där en fin skjorta eller ful byxor? I låda 1 med TAG=0000 ligger där en fin skjorta eller ful byxor?

Cacheminne (2-vägs set associative) Cacheminne Hamnar i denna låda Set 0 1 Tag 000 010 010 111 TAG Adress 0000 fin skjorta 0001 fin byxor 0010 fin t-shirt 0011 ful skjorta 0100 ful byxor 0101 ful t-shirt. 1110 1111 I set 0 finns där en fin skjorta eller ful byxor? Jämför cacheminnen Jämför cacheminnen Direct mapped, 2-way set associative, fully associative Direct mapped, 2-way set associative, fully associative Block access sequence: 0, 8, 0, 6, 8 Block access sequence: 0, 8, 0, 6, 8 Direct mapped: 2-way set associative: Block 0 vill till cache line 0 Block 8 vill till cache line 0 (8 modulo 4) Block 6 vill till cache line 2 (6 modulo 4) CACHERAD Block 0 vill till set 0 (0 modulo 2) Block 8 vill till set 0 (0 modulo 2) Block 6 vill till set 0 (0 modulo 2) TID Block address Cache index Hit/miss Cache content after access 0 1 2 3 0 0 miss Mem[0] 8 0 miss Mem[8] 0 0 miss Mem[0] 6 2 miss Mem[0] Mem[6] 8 0 miss Mem[8] Mem[6] TID Block address Cache index Hit/miss 0 0 miss Mem[0] 8 0 miss Mem[0] Mem[8] 0 0 hit Mem[0] Mem[8] 6 0 miss Mem[0] Mem[6] 8 0 miss Mem[8] Mem[6] Cache content after access Set 0 Set 1

Jämför cacheminnen Ersättningsalgoritmer TID Direct mapped, 2-way set associative, fully associative Block access sequence: 0, 8, 0, 6, 8 Fully associative: Block kan placeras var som helst Block Hit/miss Cache content after access address 0 miss Mem[0] 8 miss Mem[0] Mem[8] 0 hit Mem[0] Mem[8] 6 miss Mem[0] Mem[8] Mem[6] 8 hit Mem[0] Mem[8] Mem[6] Slumpmässigt val en av kandidaterna väljs slumpmässigt Least recently used (LRU) kandidat är den cacherad vilken varit i cachen men som inte blivit refererad (läst/ skriven) på länge First-In First Out (FIFO) kandidat är den som varit längst i cacheminnet Least frequently used (LFU) kandidat är den cacherad som refererats mest sällan Ersättningsalgoritmer implementeras i hårdvara prestanda viktigt. Skrivstrategier Skrivstrategier Problem: håll minnet konsistent Exempel: x=0; while (x<1000) x=x+1; Variabeln x finns i primärminnet och en kopia finns i cacheminnet I primärminnet: x=0 i cacheminnet är x=0,1,2...1000 Uppdatera: När och hur? 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 (uppdaterar data som finns i cache) 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 CPU tid påverkas av: Cacheminne Cykler för programexekvering Instruktioner och data Kopior av instruktioner Cacheminne Kopior av data Central processing unit (CPU) Register Hur mycket läses i minnet?» Inklusive cache hit tid Tid för access i primärminne (Memory stall cycles)» I huvudsak från cachemissar Memory stall cycles Hur ofta saknas data i cache? Memory accesses = Miss rate Miss penalty Program Vad kostar en miss (tid)? Instructions Misses = Miss penalty Program Instruction

Prestanda Givet: I-cache miss rate = 2% D-cache miss rate = 4% Miss penalty = 100 cycles Base CPI (ideal cache) = 2 (Clocks per instruction) Load & stores är 36% av instruktionerna Misscykler per instruktion I-cache: 0.02 100 = 2 D-cache: 0.36 0.04 100 = 1.44 Actual CPI = 2 + 2 + 1.44 = 5.44 Om man bortser från minnesaccesser, så här snabbt går processorn Optimal CPU är 5.44/2 =2.72 gånger snabbare Antag att bara load och store används för access till minnet Tid för verklig processor Prestanda Average memory access time (AMAT) AMAT = Hit time + Miss rate Miss penalty Exempel: CPU med 1ns klocktid, hit tid = 1 cykel, miss penalty = 20 cykler, I-cache miss rate = 5% AMAT = 1 + 0.05 20 = 2ns Vilket är 2 klockcykler per instruktion Prestanda multilevel cache Givet: CPU med CPI=1, klockfrekvens = 4GHz (0.25 ns) Miss rate/instruktion = 2% Accesstid till primärminnet=100ns Med 1 cache nivå (L1) Miss penalty = 100ns/0.25ns=400 cykler Effektiv CPI=1+0.02*400=9 Om man bortser från minnesaccesser, så här snabbt går processorn Så här mycket kostar en miss Prestanda multilevel cache Lägg till L2 cache: Accesstid = 5 ns Global miss rate till primärminnet = 0.5% Med 1 cache nivå (L1) Miss penalty = 5ns/0.25ns=20 cykler Effektiv CPI=1+0.02*20+0.005*400=3.4 Jämför 1-nivå cache och 2-nivå cache: 9/3.4=2.6 Förra slide Förra slide

Prestanda Cache coherency 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 CPU 1 CPU 2 Konsistens? Cache Cache Minne Cache coherency - problem AMD Athlon 64 CPU Antag att två CPU cores delar adressrymd Time step Write-through (skrivningar görs direkt) Event CPU A s cache CPU B s cache Memory 0 0 1 CPU A reads X 0 0 2 CPU B reads X 0 0 0 3 CPU A writes 1 to X 1 0 1 CPU

Minnets komponenter Minnets innehåll över tiden Fragmenterat minne Enhet för indata (CPU) Enhet för utdata Sekundärminne 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 Ladda endast de pages som behövs till primärminnet Logisk adress Fysisk adress CPU utnyttjande OS tar alltmer tid för att hantera sidfel Grad av multiprogrammering (hur många program som är aktiva) Virtuellt minne Virtuellt minne Använd primärminne som cache för sekundärminne (hårddisk) Hanteras med hårdvara och operativsystem Program delar primärminnet Varje program får sin virtuella adressrymd Skyddas från andra program CPU och OS översätter virtuella adresser till fysiska adresser Ett block kallas för sida (page) Miss kallas för sidfel (page fault)

Virtuellt minne Virtuellt minne Memory Management Unit (MMU) Exempel Storlek på virtuellt minne: 2G (2 31 ) bytes : 16M (2 24 ) bytes Virtuell adress: 20 bitar 31 bitar 11 bitar Fysisk adress: 13 bitar 11 bitar 24 bitar Sidstorlek (page): 2K (2 11 ) bytes Sidtabell (page table) Ctrl-bits Frame nr. Antal sidor (pages): 2G/2K = 1M (2 31 /2 11 =2 20 ) Antal ramar (frames): 16M/2K = 8K (2 24 /2 11 =2 13 ) 0 1 2 20-1 Frame 0 Frame 1 Frame 2 13-1 Om sidfel (page fault), OS laddar in sida Virtuellt minne Translation Look-Aside Buffer (TLB) Problem med sidtabell Tid vid läsning av adress:» 1 läs sidtabell» 2 läs data Stora sidtabeller Lösning: använd cache - Translation Look-Aside Buffer (TLB) för sidtabeller Vid sidfel OS aktiveras

AMD Athlon 64 CPU 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 CPU