Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson Luleå tekniska universitet 2005.

Slides:



Advertisements
Liknande presentationer
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Advertisements

En avancerad miniräknare
Flynns taxonomi ● Single Instruction, Single Data (SISD) – en instruktion i taget opererar på ett värde i taget ● Single Instruction, Multiple Data (SIMD)
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Datorarkitekturer och operativsystem
Programstruktur: C för enchipsdatorer
Översikt av operativsystem (kap 1 & 2)
Persondatorer Datorns internminne (Kapitel 6)
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
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)
©annax1 PC-teknik Minnen. 2 MINNEN Segmenterat minne 16 bits segmentregister + 32 bits offset = 64k*4Gbyte = 512Tb obs! Ofta används inte alla 16 bitarna.
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.
Adressöversättning zRepetition av virtuellt minne zTLB - cacheminne för sidtabellinformation zVirtuellt eller fysiskt adresserat cacheminne zTricket -
Skrivning i cacheminnen zTräff zMiss zSkrivbuffert.
Adressöversättning Repetition av virtuellt minne
Programmeringsteknik K och Media
Distribuerade filsystem
DAV B04 - Databasteknik Indexering (kap 14).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 9: Virtuellt minne.
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; }
Word Read Plus 08 talsyntes
Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1 Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1.
Välkommen till Del 1.
1 Pass 2 Allmän IT Hårdvara Hårdvara Hårdvara = Maskinvara Hårdvara är ett samlingsnamn för olika fysiska tillbehör till en dator. T. ex. Systemenhet.
OPERATIVSYSTEM WINDOWS
Styrteknik: Programmering med MELSEC IL PLC2A:1
Operativsystem Vad är det för något ? Varför har man operativsystem ?
Bios = Basic Input/Output System
Bildfabriken kan ställas in på olika sätt - se några exempel
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 Operating Systems Networking for Home and Small Businesses – Chapter.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -Producent – konsument problemet -Förmedling av fildeskriptorer.
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar.
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
Frågor Allmän IT-kunskap avsnitt 1 kapitel 1 Repetition 3
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
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.
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
14.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Repetition.
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
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.
Operativsystem Vad är det för något ? Varför har man operativsystem ? Vilka finns det ?
Operativsystem s63 Win 7 Länken mellan datorn och omvärlden Användare kan ge kommandon till datorn Starta program Skriva text via tangentbordet Matar ut.
Python.
Datorer och nätverk.
Grundläggande datavetenskap, 4p
Datorer och nätverk.
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson Luleå tekniska universitet 2005

Syncsim och MIPS  Syncsim – ett simuleringsverktig för synkrona kretsar  MIPS modell för Syncsim  Pipelined MIPS modell för Syncsim  Pipelined MIPS modell för Syncsim med TLB, cache, och RAM

TLB  TLB = Translation Lookaside Buffer  Varför behöver man TLB?  Hur fungerar TLB?  Hur implementerar man TLB?

TLB: Varför behöver man den?  TLB ger ett virtuellt adressutrymme för varje process i ett system där flera process exekveras samtidigt (multitask system)  Det blir enklare att skriva program (programmerare behöver inte ta hänsyn till andra processer som körs)  TLB ger minnesskydd (en användarprocess får inte tillgång till minnesadress som används av en annan process eller av operativsystemet)

TLB: Några definitioner  En sida är ett sammanhängande block av minne, men två sidor i följd (t.ex. sidorna 3 och 4) kan ligga skilda åt i det fysiska minnet.  Virtuell adress (VA) används i källkoden och i processorn VA = VPN + page offset  Fysisk adress (PA) används i det fysiska minnet (t.ex. DRAM) PA = PFN + page offset  TLB översätter VPN till PFN medan page offset lämnas oförändrat (den adresserar en enskild byte inom sidan).

TLB: Hur fungerar den?  Resultat av översättning beror på vilken process som körs, t.ex.  när process P1 körs: VA=0x  TLB  PA=0x  när process P2 körs: VA=0x  TLB  PA=0x här används 12-bitars page offset som motsvarar en sidstorlek på 4KB.

TLB: Hur fungerar den?  Alla översättningar av VPN till PFN för en enskild process lagras i en sidtabell i kernelminnet. TLB innehåller bara de senast använda rader från processens sidtabell.  Operativsystemet skapar en ny sidtabell när en process startas. Det är operativsystemets ansvar att:  Allokera nya sidor i minnet;  Flytta sidor till hårddisken när det fysiska minnet är fullt (page swapping);  Ta bort sidor från minnet efter att processen som använde dem har avslutats;  Uppdatera TLB.

TLB: Hur fungerar den?  Eftersom storleken av en TLB är begränsad innehåller den bara de senaste använda rader från en process sidtabell.  Men detta påverkar inte prestandan dramatisk eftersom samma sidor adresseras av programmet flera gånger (temporal locality och spatial locality).

TLB: TLB instruktioner  Eftersom TLB ska fyllas på från processens sidtabell av operativsystemet behöver vi särskilda instruktioner i ISA. Man brukar inte tillåta användarprocesser att köra instruktionerna.  MIPS Priviliged Architecture definierar bl.a. TLBR, TLBP, TLBWI, TLBWR.

TLB: TLB och context switch  För att operativsystemet ska kunna byta den aktiva processen (utföra en context switch) behöver man:  antingen tömma TLB vid varje processbyte,  eller spara ett process ID med varje översättning som lagras i TLB.

TLB: TLB och page swapping  För att operativsystemet ska kunna flytta sidor till hårddisken (swap pages) behöver man på något sätt markera det i sidtabellen och i TLB.  Det kan göras med hjälp av en Valid bit i TLB och i sidtabellen.

TLB: TLB och read-only sidor  Man kan använda TLB för att skydda vissa sidor från skrivning av processen som äger dem... (förutom allmän virtuellt minnes skydd som garanterar att andra processer inte får åtkomst till processens minne)...genom att ha en särskild ”write enable” bit för varje sida i sidtabell och i TLB.

TLB: Optimeringar  TLB kan implementeras så att den stödjer variabel sidstorlek.  Man kan ha separata TLB för dataminne och för instruktionsminne så att de kan användas parallellt.

MIPS 4K processorkärna  Processorkärnan består av:  Execution Core;  System Co-Processor;  Memory Management Unit med TLB;  (L1) Data cache;  (L1) Instruction cache;  Bus Interface Unit.

MIPS 4K: Adressering  32-bitars virtuell adress som översättas av MMU till en 32- bitars fysisk adress (en del av kernelminnet är omappat).  Parallell översättning av instruktionsadress och dataadress.  D-TLB med 3 rader, I-TLB med 3 rader, JointTLB med 16 dubbla rader som stödjer variabel sidstorlek på 4/16/256 KB eller 1/4/16 MB.  En rad i D-TLB eller I-TLB innehåller:  1 Global bit (G)  8 bitar Address Space Identifier (ASID)  20 bitar VPN[31:12]  20 bitar PFN[31:12]  3 Cacheability bitar (C[2:0])  1 Write-enable bit (D)  1 Valid bit (V)

MIPS 4K Adress Utrymme Kernel, sida 0 Kernel, sida 1 Kernel, sida 2 Fysiskt minne Kernel sida 0 Kernel sida 1 Kernel sida 2 Process 1, sida 0 Process 1, sida 1 Process 2, sida 0 0x xFFFF FFFF 0x x7FFF FFFF 0x x7FFF FFFF Process 1, sida 2 Process 2, sida 1 Process 2, sida 2 Process 1, sida 0 Process 2, sida 2 Process 1, sida 1 Process 2, sida 0 Process 2, sida 1 Virtuellt minne Process 2, sida 3 Kernel, sida 3 Kernel sida 3 Process 2, sida 3 Process 1, sida 3 Process 1, sida 2 0x xFFFF FFFF

Instruction Fetch  Om vi har en I-TLB träff samt en I-Cache träff ska en ny instruktion hämtas varje klockcykel PC EntryHi G = Hit ASIDVPNPFNCDV VPN [31:12] ASID [7:0] Page offset [11:0] PFN [31:12] IPA MMU Clk to CPU Exception to CPU Clk C, D, V IVA [31:0] I-TLB

Instruction Fetch  Om vi har en I-TLB träff samt en I-Cache träff ska en ny instruktion hämtas varje klockcykel PC EntryHi G = Hit ASIDVPNPFNCDV VPN [31:12] ASID [7:0] Page offset [11:0] PFN [31:12] IPA MMU Clk to CPU Exception to CPU Clk C, D, V IVA [31:0] ASID [7:0] I-TLB

Instruction Fetch  Om vi har en I-TLB träff samt en I-Cache träff ska en ny instruktion hämtas varje klockcykel PC EntryHi G = Hit ASIDVPNPFNCDV VPN [31:12] ASID [7:0] Page offset [11:0] PFN [31:12] IPA MMU Clk to CPU Exception to CPU Clk C, D, V IVA [31:0] ASID [7:0] I-TLB

Instruction Fetch + Data Load/Store  Om vi har I-TLB och D-TLB träff samt I-Cache och D-Cache träff ska en ny instruktion hämtas varje klockcykel samt att en dataminnes operation kan utföras varje klockcykel IVA DVA DTLBITLB ASID MMU I-PFN Hit = D-PFN Hit =

D-TLB Miss + JointTLB Hit DVA EntryHi DVA [31:0] DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V 0... = ASID [7:0] D-PFN D-TLB J-TLB GASIDVPNPFNCDV

D-TLB Miss + JointTLB Hit DVA EntryHi DVA [31:0] DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V 0... GASIDVPNPFNCDV = ASID [7:0] D-PFN D-TLB J-TLB

D-TLB Miss + JointTLB Hit DVA EntryHi DVA [31:0] DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V GASIDVPNPFNCDV = ASID [7:0] D-PFN D-TLB J-TLB

D-TLB Miss + JointTLB Hit DVA EntryHi DVA [31:0] DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V GASIDVPNPFNCDV = ASID [7:0] D-PFN D-TLB J-TLB

D-TLB Miss + JointTLB Hit DVA EntryHi DVA [31:0] DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V GASIDVPNPFNCDV = ASID [7:0] DTLB skrivs i nästa klockcykeln, processorn stannar (stalls) för 1 klockcykel D-PFN D-TLB J-TLB

D-TLB Miss + JointTLB Hit EntryHi DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPNPFNCDV = D-PFN ASID [7:0] 0 0 D-TLB J-TLB DVA DVA [31:0] GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V

D-TLB Miss + JointTLB Hit EntryHi DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V 0... GASIDVPNPFNCDV = ASID [7:0] 10 D-PFN 16 KB page  14 bitars page offset 10 D-TLB J-TLB DVA DVA [31:0]

D-TLB Miss + JointTLB Hit EntryHi DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V GASIDVPNPFNCDV = ASID [7:0] D-PFN 10 D-TLB J-TLB DVA DVA [31:0]

D-TLB Miss + JointTLB Hit EntryHi DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V GASIDVPNPFNCDV = ASID [7:0] D-PFN D-TLB J-TLB DVA DVA [31:0]

D-TLB Miss + JointTLB Hit EntryHi DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V GASIDVPNPFNCDV = ASID [7:0] 0 DTLB skrivs i nästa klockcykeln, processorn stannar (stall) för 1 cykel D-PFN D-TLB J-TLB DVA DVA [31:0]

D-TLB Miss + JointTLB Hit EntryHi DTLB Hit = JTLB Hit … DTLB entry Write enable GASIDVPNPFNCDV = D-PFN ASID [7:0] D-TLB J-TLB DVA DVA [31:0] GASIDVPN2CMASKPFN 1 C, D,V 1 PFN 0 C, D,V

Cache - Behov för minneshierarkin  Skillnaden i prestanda mellan CPU och minne  Idag är långa minnesåtkomsttider en flaskhals för datorprestanda

Cache - Minneshierarkin Nivå 1 cache SRAM Nivå 2 cache SRAM Minne DRAM HD pagefile (inte en del av filsystemet) Snabbare, mindre, dyrareLångsammare, större, billigare

Cache - Minneshierarkin Nivå 1 cache SRAM Nivå 2 cache SRAM Minne DRAM HD pagefile (inte en del av filsystemet) Snabbare, mindre, dyrareLångsammare, större, billigare Behandlas separat: Icke-cacheable minne Minnesmappad I/O enheter DMA Swapping (OS)

Cache - Minneshierarkin Nivå 1 cache SRAM Nivå 2 cache SRAM Minne DRAM HD pagefile (inte en del av filsystemet) Snabbare, mindre, dyrareLångsammare, större, billigare Swapping (OS) Idag koncentrerar vi oss här

Cache uppbyggnad  En cache rad i en fullt associativ cache består av en cache tag = en adress på ett block (n ord) + data = n ord i följd.  Om vi laddar en hel rad efter varje minnesåtkomst som inte kan betjänas av cachen så blir sannolikhet stor att efterföljande minnesåtkomster kommer att betjänas av cachen utan att stanna (stall) processorn (tack vare temporal locality och spatial locality)

Cache uppbyggnad Det här är en k-wsa cache. Om k=1 har vi en direkt mappad cache.  Alla adresser med samma cache index mappas till samma ”set”, men antalet av rader inom en ”set” är begränsad.  Vi behöver en smart ersättningsstrategi inom en ”set”, t.ex. en variant av LRU. Vissa cachar tillåter även att ”låsa” en rad.

Cache uppbyggnad  I vilka fall ska vi börja ladda en cache rad från minnet?  Hur mycket data ska vi ha i en cache rad?  Vilken ersättningsstrategi använder vi?  Hur garanterar vi minneskonsistens (dvs. att innehållet av minnet och cachen matchar)?

Cache: Write-allocate vs no write-allocate  I vilka fall ska vi börja ladda en cache rad från minnet?  För en write-allocate cache:  Efter varje minnesåtkomst, ”load” samt ”store”, som inte kan betjänas av cachen.  Bra för ”sw addr1 data” följd av ”lw addr1 reg”.  För en no write-allocate cache:  Efter varje ”load” operation som inte kan betjänas av cachen, men inte efter en ”store” operation.  Bra för en isolerad ”sw addr1 data”.  Make common case fast!

Cache: Storlek på en cache rad  Hur mycket data ska vi ladda till en cache rad?  Längre rader  längre laddningstid  längre processor stallning, men antalet cache miss minskar  Kortare rader  kortare laddningstid, men antalet cache miss ökar  Optimeringar:  ”Early restart”: man startar om processorn så fort det efterfrågade ordet kommer och fortsätter laddar cache raden i bakgrunden  ”Critical word first”: man börja ladda med ordet som efterfrågades även om det ligger i mitten av ett block (behöver stöd av DRAM eller nivå 2 cache)

Cache: Ersättningsstrategi  Vilken ersättningsstrategi använder vi?  Slumpmässig ersättning;  LRU;  LRU, men operativsystemet kan låsa kritiska rader så att de aldrig ersättas (behöver en särskild instruktion i ISA).

Cache: Cache och minneskonsistens  ”Store” operation kan skriva:  Både till cachen och till minnet (write-through cache)  ”write stall” om vi inte använder någon buffer;  ”write stall” om vi har flera ”store” operationer i följd och buffern överflödas.  Bara till cachen (write-back cache). Hela cache raden måste då skrivas till minnet om den har valts för ersättning  Inget ”write stall”;  Oförväntad, stor fördröjning när hela raden skrivas till minnet.  Make common case fast!

MIPS 4K D-Cache och I-Cache  Separata datacache och instruktionscache upp till 16 KB varje.  Cache rad på 16 byte (4 ord).  No write-allocate, write-through (med 2 16-byte buffrar i Bus Interface Unit), ”critical word first” och ”early restart”.  Virtuell cache index + fysisk cache tag som tillåter att uppslagning sker parallellt i cachen och i TLB.

TLB och Cache

Cache: Data Load + Data Cache Hit

Cache: Data Load + Data Cache Miss

Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson 2005