Les 10: Geheugenhiërarchie Parkinson's laws: "Work expands so as to fill the time available for its completion“ "Expenditure rises to meet income“ “Programs expand to fill all available memory” ca10-1 Doelstelling Aanbieden van de illusie van een zeer groot, parallel toegankelijk, goedkoop en snel geheugen, opgebouwd uit • Kleine snelle geheugens (duur) • Grote trage geheugens (goedkoop) ca10-2 Inhoud • • • • • • Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen ca10-3 Geheugenhiërarchie Kleiner Sneller duurder registers elektronisch on-chip L1 cache (SRAM) On/off-chip L2/L3 cache (SRAM) hoofdgeheugen (DRAM, ROM) Storage class memory (SCM) Flash, SSD Groter Trager goedkoper lokaal secundair geheugen (mechanische schijven) mechanisch gedistribueerd secundair geheugen (netwerkbestanden, Web servers) Off-line geheugen (tapes,CD,DVD) ca10-4 Prijsevolutie $/MiB 1E+09 100000000 10000000 1000000 100000 10000 1000 100 10 RAM 1 0.1 HD 0.01 0.001 0.0001 0.00001 1950 1960 1970 1980 1990 2000 2010 2020 Wet van Machrone: prijs geheugen/hard disk voor meest krachtige systemen blijft gelijk ca10-5 Evolutie in de toegangstijd ns 100000000 10000000 1000000 100000 SCHIJF ‘access time gap’ 10000 DRAM SRAM 1000 SCM 100 geheugenbarrière 10 1 1980 1985 1990 1995 2000 ca10-6 Registers • Aantal 8 256 • Grootte: 2-8 bytes • Parallel toegankelijk. Tegelijk lezen en schrijven mogelijk (meerdere lees- en schrijfpoorten). • Extreem snel, parallel toegankelijk, zeer duur • Tijdens uitvoering moeten alle gegevens in registers zitten (IR, data- en adresregisters) ca10-7 Hoofdgeheugen of RAM: Random Access Memory Twee technologieën: • statisch geheugen: gebaseerd op latches. • dynamisch geheugen: gebaseerd op een lading in een condensator Niet parallel toegankelijk: ofwel lezen ofwel schrijven. ca10-8 Statische geheugencel: principe Write enable (puls) Chip select D Q CLK Output enable Data in/uit ca10-9 Geheugenarray bitlijn output enable w s o d adres decoder woordlijn 2 write enable output enable D[1] D[0] ca10-10 6T SRAM cell woordllijn bitlijn bitlijn 6 transistors ca10-11 Transistorschakeling T6 ca10-12 Transistorschakeling T4 ca10-13 SRAM Matrix ca10-14 Geheugenconfiguraties 16 ki x 1 bit 8 ki x 2 bit 4 ki x 4 bit … … … 14 inputs 1 output 13 inputs 2 outputs 12 inputs 4 outputs hoogte x breedte ca10-15 Dynamische geheugencel woordlijn Schrijven Lezen Condensator verliest lading • bij het lezen • na 8-64 ms Bitlijn ca10-16 Dynamisch geheugen 0 1 0 0 1 1 a5 rijdecoder byte op adres 010 011 a0 Nu: 4 Gi x 1 bit kolomdecoder ca10-17 Refresh • Geheugen 32 Mib = 225 – Rij-adres = 12 bit – Kolomadres = 13 bit • Eerst rij-adres aanleggen, en dan kolomadres • Per 64 ms moeten 4096 rijen gerefresht worden (lezen + schrijven), d.i. 1 rij per 15 s (64 kHz). • Een refresh-cyclus duurt 100 ns per rij en tijdens een refresh is de geheugenmodule inactief. De overhead is dus <1% ca10-18 Kenparameters Latentie: tijd die verstrijkt tussen het aanleggen van een adres en het verschijnen van het eerste byte. Bandbreedte: aantal byte/s dat maximaal kan getransfereerd worden (van opeenvolgende locaties). Effectieve snelheid van het geheugen wordt door deze twee parameters bepaald. Hoe lager in de hiërarchie, des te groter de discrepantie tussen latentie en bandbreedte ca10-19 SDRAM klok adres rij kol kol ras cas data ca10-20 Geheugentypes Statisch Dynamisch Snelheid 0,2-25 ns 30-120 ns Omvang 6 transistors Verbruik Groot Transistor + condensator Laag Prijs Duur (caches) Goedkoop (hoofgeheugen) ca10-21 Permanente geheugentypes • ROM: Read Only Memory, eigenlijk geen geheugen, maar een combinatorisch circuit. • PROM: Programmable ROM (1 x) ca10-22 Permanente geheugentypes • EPROM: Erasable PROM (n x), wissen met UV licht • EEPROM: Electrically Erasable PROM, elektrisch te wissen via speciale pin • FLASH: snelle versie van EEPROM – Compactflash – USB sticks – Solid State Disks ca10-23 Flash geheugencel woordlijn Control gate Floating gate Multi Level Cell Bitlijn Single Level Cell ca10-24 Secundair geheugen • • • • • • • • Hard disk >100 GB CD-ROM, CD-RW 650 MB DVD-ROM, DVD-RAM 4,7-17 GB Zip-Drive 100-250-750 MB = 95,7-238714MiB Floppy disk 1,44 MB = 1,38 MiB Jaz drive 2 GB HD-DVD (20 GB) Blu-Ray (27 GB) – in meerdere lagen reeds to 200 GB (één highres film is ongeveer 12 GB) Solid State Drive (SSD) ca10-25 Magnetische opslag 8.5 nm partikels 100 nm ca10-26 Inhoud • • • • • • Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen ca10-27 Instructiegedrag Buitenlus Frequentie 5.41% Veel programma’s spenderen 90% van hun uitvoeringstijd in 10% van de code 11.26% 23.24% Binnenlus 60.09% Binnenlus adres ca10-28 Lokaliteit • Temporele lokaliteit: sommige geheugenlocaties komen vaak terug in in de adresstroom • Spatiale lokaliteit: geheugenlocaties in een adresstroom liggen niet ver uit elkaar (b.v. volgen elkaar op). Lokaliteit: temporeel Lokaliteit: spatiaal ca10-29 Instructieadres Adresstroom Tijd ca10-30 Werkverzameling (working set) aantal Verzameling van alle geheugenlocaties die een programma tijdens een interval t gebruikt. t ca10-31 Inhoud • Soorten geheugens • Lokaliteit • Caches – – – – – Werking Indexering Vervangingsstrategie Lees/schrijf strategie Prestatieverbetering • Impact op prestatie • Ingebedde systemen • Eindbeschouwingen Cache keeps intruders away from backcountry supplies ca10-32 Geheugenbarrière ca10-33 Cachegeheugen Snel geheugen om een deelverzameling van de locaties uit de working set bij te houden. CVE geheugen Cache 10.6 GB/s ca10-34 Werking cache cache CVE 00 08 10 18 20 28 30 38 40 48 50 58 60 hoofdgeheugen ca10-35 Indexering • Direct-mapped caches • Set-associatieve caches • Volledig associatieve caches ca10-36 Direct-mapped cache valid dirty tag index offset adres Cache: direct mapped = treffer data data eerder beschikbaar dan hit/miss-informatie ca10-37 Direct-mapped cache ca10-38 Direct-mapped cache ca10-39 4-wegs set-associatief adres = = = = multiplexer Cache: set-associatief ca10-40 Set-associatieve cache ca10-41 Set-associatieve cache ca10-42 Volledig associatieve cache Cache: volledig associatief ca10-43 Volledig associatieve cache ca10-44 Cachetypes #sets associativiteit cachetype N 1 Direct mapped M A A-wegs set-associatief Direct mapped 1 N Volledig associatief Grootte = #sets x associativiteit x blokgrootte 2-wegs SA, 4 sets = tag = data 4-wegs SA, 2 sets Volledig associatief ca10-45 Tags tag index offset Direct mapped Set-associatief Volledig Assoc Cache: tags ca10-46 Vervangingsstrategie • Als de set volzet is, dan moet er een blok uit de set verwijderd worden. • Keuze – LRU: least recently used (langst niet gebruikt geweest) – FIFO: first-in first-out (oudste blok) – Random: willekeurig blok – Opt: blok dat het langst niet gebruikt zal worden Cache: vervangingsstrategie ca10-47 Miss rates ifv vervangingsstrategie Associativiteit 2-wegs SA 4-wegs SA grootte LRU RND FIFO LRU RND FIFO 16 kiB 11.41 11.73 11.55 11.17 11.51 11.33 64 kiB 10.34 10.43 10.39 10.24 10.23 10.31 256 kiB 9.22 9.21 9.25 9.21 9.21 9.25 [Data cache, Spec 2000, 64 byte blokken (alpha)] Associativiteit 2-wegs SA 4-wegs SA 8-wegs SA grootte LRU RND LRU RND LRU RND 16 KiB 5.18% 5.69% 4.67% 5.29% 4.39% 4.96% 64 KiB 1.88% 2.01% 1.54% 1.66% 1.39% 1.53% 256 KiB 1.15% 1.17% 1.13% 1.13% 1.12% 1.12% [instructiecache] ca10-48 Cache leesstrategie lees 90%-98% data in cache cachetreffer stuur door naar CVE data niet in cache cachemisser load through load & forward Cache: leesstrategie ca10-49 Cache schrijfstrategie schrijf data in cache cachetreffer write through cache + geheugen write back cache Cache: schrijfstrategie data niet in cache cachemisser write write allocate no allocate cache geheugen (+ geheugen) ca10-50 Gemiddelde toegangstijd Gemiddelde toegangstijd (AMAT) = Hit Time + (Miss Rate x Miss Penalty) = (Hit Rate x Hit Time) + (Miss Rate x Miss Time) [AMAT: Average Memory Access Time] 3 + 0.02 x 100 = 5 0.98 x 3 + 0.02 x 103 = 5 Miss rate ↓ Miss penalty ↓ Hit time ↓ AMAT ↓ ca10-51 AMAT Cacheparameters Hit Time Miss rate Miss Penalty Grootte ↑ ↑ ↓ - Associativiteit ↑ ↑ ↓ -↑ Blokgrootte ↑ - ↑↓ ↑ Splitsing ↑ ↓ ↑↓ - Niveaus ↑ ↓ ↑ ↓ AMAT = Hit Time + (Miss Rate x Miss Penalty) ca10-52 Misserclassificatie: 3C model • Compulsory (cold) of koude missers: nodig om een blok de eerste keer in de cache te brengen. – INF = oneindig grote cache – koude missers = missers(INF) • Capaciteitsmissers: cache is te klein om de werkverzameling te bevatten. – VA = volledig associatieve cache, LRU vervanging – capaciteitsmissers = missers(VA) - missers(INF) Cache: koude misser Cache: capaciteitsmisser ca10-53 Misserclassificatie: 3C model • Conflict (collision) missers: het blok had in de cache kunnen zitten maar werd verdrongen door een ander blok. – C = te onderzoeken cache met bepaald vervangingsalgoritme – Conflictmissers = missers(C) - missers(VA) Cache: conflictmisser ca10-54 Cache grootte ↑ Miss rate ↓ Associativiteit ↑ Miss rate ↓ 0.14 1-wegs 0.12 2:1 regel [Spec 92 Benchmarks] 2-wegs 0.1 4-wegs 0.08 0.06 capaciteitsmissers 0.04 koude missers 0.02 64 32 16 Cache size (KiB) 128 [bron: Patterson&Hennessy] 8 4 2 0 1 Miss Rate 8-wegs ca10-55 3C Relative Miss Rate 100% 1-way 2-way 4-way 8-way 60% 40% Capaciteitsmissers 20% Koude missers 64 128 Cache Size (KiB) 32 16 8 4 2 0% 1 Miss Rate per type 80% Conflictmissers ! Uitbuiten spatiale lokaliteit = multiplexer ca10-57 Blokgrootte ↑ Miss rate ↓↑ Cachegrootte Blokgrootte Miss Pen 4KiB 16KiB 64KiB 256KiB 16 82 8.027 4.231 2.673 1.894 32 84 7.082 3.411 2.134 1.588 64 88 7.160 3.323 1.933 1.449 128 96 8.469 3.659 1.979 1.470 256 112 11.651 4.685 2.288 1.549 ca10-58 Cachegrootte ↑ hit time ↑ Associativiteit ↑ hit time ↑ Hit time ns 14 12 assoc 10 1 2 8 4 6 FA 4 2 0 4 8 16 32 64 128 256 KiB ca10-59 Gesplitste vs. geünificeerde caches Grootte Instructiecache Data cache Geünificeerde cache 1 KiB 3.06% 24.61% 13.34% 2 KiB 2.26% 20.57% 9.78% 4 KiB 1.78% 15.94% 7.24% 8 KiB 1.10% 10.19% 4.57% 16 KiB 0.64% 6.47% 2.87% 32 KiB 0.39% 4.82% 1.99% 64 KiB 0.15% 3.77% 1.35% 128 KiB 0.02% 2.88% 0.95% Harvard architectuur ca10-60 Voorbeeld [20% data cache; 80% instructiecache; 16 KiB miss penalty = 50 cycli; hit time = 1 cyclus] Gesplitste cache Maak het vaak voorkomende geval snel! AMAT = 80% x (1 + 0.64% x 50) + 20% x (1 + 6.47% x 50) = 1.903 Geünificeerde cache AMAT = 80% x (1 + 1.99% x 50) + 20% x (2 + 1.99% x 50) = 2.195 Extra cyclus: Cache met 1 toegangspoort ca10-61 Meerniveaucaches processor Intel Core I7 L1 I (32KiB) L1 D (32KiB) Cache: hiërarchie Cycli: 4 L2 cache (256 KiB) Cycli: 10 L3 cache (2 MiB/core) Cycli: 35 Geheugen ca10-62 Cachehiërarchie L1I L2 CVE L3 L1D ca10-63 Voorbeeld Processor Pentium 4 Ultrasparc III Clock (2001) 2000 Mhz 900 Mhz L1 I cache 96 KiB TC 32 KiB, 4WSA Latency 4 2 L1 D cache 8 KiB 4WSA 64 KiB, 4WSA Latency 2 2 TLB 128 128 L2 cache 256 KiB 8WSA 8 MiB DM (off chip) Latency 6 15 Block size 64 bytes 32 bytes Bus width 64 bits 128 bits Bus clock 400 Mhz 150 Mhz ca10-64 Inhoud • • • • • • Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen ca10-65 Instruction window ALU L1 I-cache ld/st mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g [Lieven Eeckhout] L2 cache ALU front-end pipeline L1 D-cache Branch predictor to L1 I-cache Superscalar out-of-order processor out-of-order execution in-order commit decoding, register renaming, etc. bca10-66 a b Instruction window ALU ld/st mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 1 Per clock cycle, B instructions are fetched, With B = processor width bca10-67 c1 a d1 b Instruction window ALU ld/st L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 2 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-68 c2 e1 c1 a d2 f1 d1 b Instruction window ALU ld/st mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 4 Branch predicted taken bca10-69 e2 c2 e1 c1 f2 d2 f1 d1 ALU a b ld/st L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 5 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-70 a d1 c3 e2 c2 e1 d3 f2 d2 f1 c1 a b ALU b ld/st L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 6 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-71 d1 L1 I-cache e3 c3 e2 c2 f3 d3 f2 d2 ALU c1 e1 a mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g f1 b operands not yet available ld/st c1 L2 cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 7 Operands are available bca10-72 e1 c2 L1 I-cache c4 e3 c3 e2 d4 f3 d3 f2 f1 d1 e1 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g ALU c1 ld/st L2 cache ALU d2 L1 D-cache Branch predictor to L1 I-cache Cycle 8 c1 out-of-order execution bca10-73 f1 f2 c2 L1 I-cache e4 c4 e3 c3 f4 d4 f3 d3 e2 f1 ALU d1 e1 c1 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g d1 ld/st c2 L2 cache ALU d2 L1 D-cache Branch predictor to L1 I-cache Cycle 9 Instruction-level parallelism (ILP) bca10-74 f2 L1 I-cache c5 e4 c4 e3 d5 f4 d4 f3 d2 ALU e2 f1 c2 e1 d1 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g e2 ld/st L2 cache c3 ALU L1 D-cache d3 Branch predictor to L1 I-cache Cycle 10 c2 in-order commit bca10-75 f2 f3 c3 L1 I-cache e5 c5 e4 c4 f5 d5 f4 d4 e3 f2 ALU d2 e2 c2 d2 ld/st c3 L2 cache ALU d3 L1 D-cache Branch predictor to L1 I-cache Cycle 11 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-76 Instruction Level Parallelism 200 180 160 140 120 100 80 60 40 20 0 bzip2 crafty eon gcc gzip parser perlbmk twolf vortex vpr [Starting from full trace, SpecInt 2000] bca10-77 IPC Performance t IPC (8 execution units) 6 5 4 3 2 1 0 bzip2 crafty eon gcc gzip parser perlbmk twolf vortex vpr bca10-78 IPC = W 32 IPC 16 8 4 2 4 8 16 Size instruction window W 32 64 bca10-79 Branch prediction ? Fetch & Decode Retire (commit) Instruction Window Fetch width Memory Commit width M E E E Issue width bca10-80 f2 f3 c3 L1 I-cache e5 c5 e4 c4 f5 d5 f4 d4 e3 f2 ALU d2 e2 c2 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g d2 ld/st c3 L2 cache ALU d3 L1 D-cache Branch predictor to L1 I-cache Cycle 11 Mispredicted branch speculative fetch and execution bca10-81 f3 f4 c4 L1 I-cache e6 c6 e5 c5 f6 d6 f5 d5 e4 f3 ALU d3 e3 c3 d3 ld/st c4 L2 cache ALU d4 L1 D-cache Branch predictor to L1 I-cache Cycle 13 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-82 f4 f5 c5 L1 I-cache e7 c7 e6 c6 f7 d7 f6 d6 e5 f4 ALU d4 e4 c4 d4 ld/st c5 L2 cache ALU d5 L1 D-cache Branch predictor to L1 I-cache Cycle 15 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-83 f5 c5 L1 I-cache e7 c7 e6 c6 f7 d7 f6 d6 e5 f4 ALU d4 e4 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g ld/st c5 L2 cache ALU d5 L1 D-cache Branch predictor to L1 I-cache Cycle 16 Instructions on mispredicted path must be nullified bca10-84 g h Instruction window ALU ld/st mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 17 Instructions on correct path are fetched bca10-85 Interval analysis Mispredicted branch enters instruction window Performance recovers Mispredicted branch IPC is fetched IPCmax Instructions along the speculative path are executed Mispredicted branch gets executed; instructions from the correct path are fetched t Correct instructions enter the instruction window Intervalanalyse bca10-86 Branch predictor Fetch & Decode Retire (commit) Instruction Window Branch Predictor 90-95% correct Memory M E E E bca10-87 Branch prediction IPC everything perfect 6 real branch predictor 5 4 3 2 1 0 bzip2 crafty eon gcc gzip parser perlbmk twolf vortex vpr Sprongvoorspeller bca10-88 f2 L1 I-cache e4 c4 e3 f4 d4 f3 d2 ALU e2 f1 c2 e1 d1 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g e2 ld/st L2 cache c3 ALU L1 D-cache d3 Branch predictor to L1 I-cache Cycle 10 c2 Suppose f4 is correctly predicted, g causes an I cache miss I-cache miss latency is 10 cycles Cache: misser bca10-89 f3 f4 c4 L1 I-cache e4 f3 ALU d3 e3 c3 d3 ld/st c4 L2 cache ALU d4 L1 D-cache Branch predictor to L1 I-cache Cycle 13 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-90 e4 f4 c4 L1 I-cache e4 f3 ALU d3 e3 ld/st L2 cache ALU d4 L1 D-cache Branch predictor to L1 I-cache Cycle 14 c4 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-91 d4 ALU L1 I-cache f4 d4 e4 c4 f4 ld/st L2 cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 15 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-92 ALU L1 I-cache f4 e4 d4 ld/st L2 cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 16 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-93 ALU L1 I-cache ld/st L2 cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 17 - 19 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-94 g h ALU ld/st L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 20 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-95 Interval analysis I-cache miss Instructions from front-end pipe line arrive in instruction window IPC Performance recovers IPCmax I-cache miss latency Instruction window empties t front-end pipe line refills bca10-96 f2 L1 I-cache c5 e4 c4 e3 d5 f4 d4 f3 d2 ALU e2 f1 c2 e1 d1 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g e2 ld/st L2 cache c3 ALU L1 D-cache d3 Branch predictor to L1 I-cache Cycle 10 c2 Assume a L1 D-cache miss Cache: misser bca10-97 f2 f3 e5 c5 e4 c4 f5 d5 f4 d4 e3 c3 f2 d2 e2 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g d3 c2 ALU ld/st c3 L2 cache L1 I-cache ALU L1 D-cache Branch predictor to L1 I-cache Cycle 11 c2 Access time to L2 cache is 10 cycles bca10-98 f3 c6 e5 c5 e4 d6 f5 d5 f4 e3 d3 e3 c3 f2 d2 e2 ALU c2 ALU ld/st L2 cache L1 I-cache c4 d4 L1 D-cache Branch predictor to L1 I-cache Cycle 12 c2 c3 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-99 Cycle 13 e6 c6 e5 c5 f6 d6 f5 d5 f3 d3 e3 c3 f2 d2 e2 ALU c2 ALU ld/st c4 L2 cache L1 I-cache f3 c4 d4 L1 D-cache e4 Branch predictor to L1 I-cache f4 c2 c3 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-100 Cycle 14 c7 e6 c6 e5 d7 f6 d6 f5 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g e4 d3 e3 c3 f2 d2 e2 ALU c2 ALU ld/st c4 L2 cache L1 I-cache f3 c4 d4 to L1 I-cache e4 Branch predictor L1 D-cache f4 c5 to main memory d5 c2 c3 Instruction window fills up instruction c2 prohibits commit bca10-101 Cycle 15 to main memory f4 c5 e4 L1 I-cache e7 c7 e6 c6 f7 d7 f6 d6 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g f3 c4 d5 f4 d4 d3 e3 c3 f2 d2 e2 ALU ALU ld/st c5 L2 cache Branch predictor L1 D-cache e5 to L1 I-cache f5 c2 c4 c3 c2 bca10-102 Cycle 16 f2 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g e2 d2 ALU ld/st to L1 I-cache e5 c5 L2 cache L1 I-cache c8 e7 c7 e6 d8 f7 d7 f6 ALU L1 D-cache Branch predictor f5 d6 e5 c6 d5 f4 c5 d4 e4 c4 f3 d3 e3 c3 to main memory c2 c4 c3 c2 bca10-103 Cycle 17 g h mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g f3 c4 d4 d3 e3 c3 f2 d2 e2 ALU ld/st L2 cache e4 L1 I-cache ALU f4 L1 D-cache Branch predictor to L1 I-cache to main memory c2 c4 c3 c2 bca10-104 Cycle 20 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g g h f3 c4 d4 d3 e3 c3 f2 d2 e2 ALU ld/st L2 cache e4 L1 I-cache ALU f4 L1 D-cache Branch predictor to L1 I-cache to main memory c2 c4 c3 c2 bca10-105 Cycle 21 e4 f3 L1 I-cache mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g ALU f4 c4 d4 d3 e3 c3 f2 d2 e2 ALU ld/st L2 cache Branch predictor g L1 D-cache h to L1 I-cache to main memory c4 c3 c2 bca10-106 Cycle 22 e4 f3 L1 I-cache mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g ALU d2 f4 c4 d4 d3 e3 c3 f2 d2 ALU ld/st L2 cache Branch predictor g L1 D-cache h to L1 I-cache to main memory c4 c3 e2 bca10-107 Cycle 23 e4 f3 L1 I-cache mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g ALU f4 c4 d4 d3 e3 c3 f2 d2 ALU ld/st L2 cache Branch predictor g L1 D-cache h to L1 I-cache to main memory c4 e2 bca10-108 Cycle 24 e4 f3 L1 I-cache d3 ALU f4 e3 c4 d4 d3 ALU ld/st L2 cache Branch predictor g L1 D-cache h to L1 I-cache to main memory c4 mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-109 Cycle 25 e4 f3 L1 I-cache ALU f4 e3 c4 d4 d3 ALU ld/st L2 cache Branch predictor g L1 D-cache h to L1 I-cache to main memory mov 0 → r1 a mov 0x0fe0 → r3 b L: ld MEM[r3] → r2 c add r2,r1 → r1 d e add r3,48 → r3 brl r3,0x10a0 → L f st r1 → MEM[A] g bca10-110 Interval analysis L2 D-cache miss Instruction window fills up Instruction window full IPC Performance recovers IPCmax L2 D-cache miss latency t Instructions that do not depend on the cache miss are executed bca10-111 Prestatie-impact van nietideale geheugens Alles perfect Realistische sprongvoorspeller Realistische sprongvoorspeller; realistische geheugenhiërarchie IPC 6 5 4 3 2 1 0 bzip2 crafty eon gcc gzip parser perlbmk twolf vortex vpr ca10-112 210 miljoen transistors Itanium 2 ca10-113 Inhoud • • • • • • Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen ca10-114 verschillende soorten Vergist U zicht niet… alle leven op aarde bestaat uit insecten 9000000 8000000 7000000 6000000 5000000 4000000 3000000 2000000 amfibieën zoogdieren reptielen vogels vissen schaaldieren eencelligen andere planten weekdieren [bron: Scientific American] virussen wormen algen bacteriën insecten 0 schimmels 1000000 ca10-115 Embedded market, 1996 versus 2010. *CPU licensing data used for 2010. (Source: The Linley Group) ca10-116 Enkele recente cijfers • # verkochte PC’s in 2008: 300 miljoen • # ingebedde processors in 2008 – Automotive: 1,2 miljard (90 miljoen 32 bit) – GSM’s: 1 miljard –… • ARM verkocht in 2012: 8 miljard processors ca10-117 1-veel (R)evolutie 1-1 Functionaliteit Prijs Grootte Autonomie veel-1 ’60-’70 prestatie ’80-’90 Prestatie prijs 2000ca10-118 “The computer revolution hasn't happened yet” • De alomtegenwoordige computer (ubiquitous computing, pervasive computing) • Intelligente omgeving (Ambient Intelligence) Alan Kay, HP ca10-119 Modern ingebed systeem BMW serie-7 63 processors ca10-120 Ingebedde systemen • “Embedded system” of “Dedicated system” • Processorchip ingebouwd in een apparaat • Voert steeds hetzelfde programma uit (uit ROM of Flash) • Vaak met beperkte hardware: geen cache, geen virtueel geheugen,… • Vaak in ware tijd (real-time) ca10-121 Typische configuratie Analoog/ Digitaal Conversie Sensors “input” Proc Digitaal/ Analoog Conversie Actuators “output” ca10-122 Voorbeelden • • • • • • • • • • • Digitale camera Alarmsystemen CD-spelers Digitale tuners Domoticasystemen Afstandsbediening Microgolfoven Digitale uurwerken Telefooncentrale Netwerkapparatuur, modem Displaysystemen • • • • • • • • • • • Printers DVD-spelers Elektronische agenda’s Synthesizers Scanners GSM Satellieten Auto’s Treinen Vliegtuigen Raketten Wapensystemen ca10-123 Kenmerken • Klein en licht (draagbare toepassingen) • Vermogenverbruik minimaal: autonomie > 8 uur, warmteproductie aanvaardbaar. • Robuust tegen vocht, hitte, vorst, schokken, straling, enz. • Interactie is met de buitenwereld: “tijdigheid” is onderdeel van “correctheid”. • Betrouwbaar: vliegtuigen, auto’s • Zeer kostgevoelig: 1 cent x 1 miljoen = … ca10-124 Ingebedde processors • Vaak microcontrollers van 4,8 of 16 bit (computersysteem op 1 chip: geheugen, input/ouput, enz.) • Vaak ook gewone processors • Vermogenverbruik is cruciaal voor mobiele toepassingen ca10-125 Digitale-signaalprocessors • DSP: Digital Signal Processor • Gespecialiseerde processor om digitale signalen (b.v. audiosignalen) te verwerken. • CD-spelers, telefooncentrales, elektronische muziekinstrumenten, enz. • Vaak zeer complex en gespecialiseerd voor het uitvoeren van signaalverwerkingsalgoritmen: b.v. fast Fourier transformatie (som van producten) ca10-126 Inhoud • • • • • • Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen ca10-127 Vervolg Parallelle computersystemen Superscalaire architecturen, outof-order architecturen, interconnecties en vermogen, prestatieanalyse, meerdradige uitvoering, systeemarchitectuur Digitale elektronica Besturingssystemen Procesbeheer, Synchronisatie, hoofdgeheugen, Bestanden- en schijfbeheer, Beveiliging, Systeembeheer Boole-algebra en functies, combinatorische poortnetwerken, teruggekoppelde circuits, synchrone sequentiële circuits, systeemrepresentaties, bestaande bouwblokken, Decompositie en compositie op logisch niveau, Extensies naar R/T-niveau Computerarchitectuur ca10-128 Pauze ca10-129 http://www.eetimes.com/document.asp?doc_id=13 26377&_mc=NL_EET_EDT_EET_review_201504 18&cid=NL_EET_EDT_EET_review_20150418&el q=ffa1b73023664da4bccb7e28d21b2003&elqCam paignId=22619&elqaid=25441&elqat=1&elqTrackI d=dae6c67ea56d4963ba0fedcae4bdaaf6 ca10-130