De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Ca10-1 Les 10: Geheugenhiërarchie Parkinson's laws: "Work expands so as to fill the time available for its completion“ "Expenditure rises to meet income“

Verwante presentaties


Presentatie over: "Ca10-1 Les 10: Geheugenhiërarchie Parkinson's laws: "Work expands so as to fill the time available for its completion“ "Expenditure rises to meet income“"— Transcript van de presentatie:

1 ca10-1 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”

2 ca10-2 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)

3 ca10-3 Inhoud Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen

4 ca10-4 Geheugenhiërarchie registers on-chip L1 cache (SRAM) hoofdgeheugen (DRAM, ROM) lokaal secundair geheugen (mechanische schijven) Groter Trager goedkoper gedistribueerd secundair geheugen (netwerkbestanden, Web servers) On/off-chip L2/L3 cache (SRAM) Kleiner Sneller duurder elektronisch mechanisch Off-line geheugen (tapes,CD,DVD) Storage class memory (SCM) Flash, SSD

5 Prijsevolutie $/MiB ca10-5 Wet van Machrone: prijs geheugen/hard disk voor meest krachtige systemen blijft gelijk RAM HD

6 ca10-6 Evolutie in de toegangstijd SRAM DRAM SCHIJF ns ‘access time gap’ geheugenbarrière SCM

7 ca10-7 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)

8 ca10-8 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.

9 ca10-9 Statische geheugencel : principe D Q CLK Write enable (puls) Output enable Data in/uit Chip select

10 ca10-10 Geheugenarray decoder write enable output enable adres D[1]D[0] w s d woordlijn bitlijn output enable o 2

11 6T SRAM cell ca10-11 woordllijn bitlijn 6 transistors

12 Transistorschakeling T6 ca10-12

13 Transistorschakeling T4 ca10-13

14 SRAM Matrix ca10-14

15 ca10-15 Geheugenconfiguraties 16 ki x 1 bit 14 inputs 1 output 8 ki x 2 bit 13 inputs 2 outputs 4 ki x 4 bit 12 inputs 4 outputs hoogte x breedte ………

16 ca10-16 Dynamische geheugencel Schrijven Lezen Condensator verliest lading bij het lezen na 8-64 ms Condensator verliest lading bij het lezen na 8-64 ms Bitlijn woordlijn

17 ca10-17 Dynamisch geheugen rijdecoder kolomdecoder a0a0 a5a5 byte op adres Nu: 4 Gi x 1 bit

18 ca10-18 Refresh Geheugen 32 Mib = 2 25 –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%

19 ca10-19 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

20 SDRAM ca10-20 klok adres ras cas data rij kol

21 ca10-21 Geheugentypes StatischDynamisch Snelheid0,2-25 ns ns Omvang6 transistorsTransistor + condensator VerbruikGrootLaag PrijsDuur (caches)Goedkoop (hoofgeheugen)

22 ca10-22 Permanente geheugentypes ROM : Read Only Memory, eigenlijk geen geheugen, maar een combinatorisch circuit. PROM : Programmable ROM (1 x)

23 ca10-23 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

24 ca10-24 Flash geheugencel Bitlijn woordlijn Control gate Floating gate Multi Level Cell Single Level Cell

25 ca10-25 Secundair geheugen Hard disk >100 GB CD-ROM, CD-RW 650 MB DVD-ROM, DVD-RAM 4,7-17 GB Zip-Drive MB = 95, MiB 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 )

26 ca10-26 Magnetische opslag 8.5 nm partikels 100 nm

27 ca10-27 Inhoud Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen

28 ca10-28 Instructiegedrag Buitenlus Binnenlus Frequentie adres 5.41% 11.26% 23.24% 60.09% Binnenlus Veel programma’s spenderen 90% van hun uitvoeringstijd in 10% van de code

29 ca10-29 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

30 ca10-30 Adresstroom Tijd Instructieadres

31 ca10-31 Werkverzameling (working set) Verzameling van alle geheugenlocaties die een programma tijdens een interval  t gebruikt. t aantal

32 ca10-32 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

33 ca10-33 Geheugenbarrière

34 ca10-34 Cachegeheugen Snel geheugen om een deelverzameling van de locaties uit de working set bij te houden. geheugen CVE Cache 10.6 GB/s

35 ca10-35 Werking cache CVE cache hoofdgeheugen

36 ca10-36 Indexering Direct-mapped caches Set-associatieve caches Volledig associatieve caches

37 ca10-37 Direct-mapped cache = datatreffer tagindexoffset validdirty adres data eerder beschikbaar dan hit/miss-informatie Cache: direct mapped

38 ca10-38 Direct-mapped cache

39 ca10-39 Direct-mapped cache

40 ca wegs set-associatief ==== multiplexer adres Cache: set-associatief

41 ca10-41 Set-associatieve cache

42 ca10-42 Set-associatieve cache

43 ca10-43 Volledig associatieve cache Cache: volledig associatief

44 ca10-44 Volledig associatieve cache

45 ca10-45 Cachetypes Grootte = #sets x associativiteit x blokgrootte Direct mapped 2-wegs SA, 4 sets 4-wegs SA, 2 sets Volledig associatief = tag = data #setsassociativiteitcachetype N1Direct mapped MAA-wegs set-associatief 1NVolledig associatief

46 ca10-46 Tags offsetindextag Direct mapped Set-associatief Volledig Assoc Cache: tags

47 ca10-47 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

48 ca10-48 Miss rates ifv vervangingsstrategie Associativiteit2-wegs SA4-wegs SA grootteLRURNDFIFOLRURNDFIFO 16 kiB kiB kiB [Data cache, Spec 2000, 64 byte blokken (alpha)] Associativiteit2-wegs SA4-wegs SA8-wegs SA grootteLRURNDLRURNDLRURND 16 KiB5.18%5.69%4.67%5.29%4.39%4.96% 64 KiB1.88%2.01%1.54%1.66%1.39%1.53% 256 KiB1.15%1.17%1.13% 1.12% [instructiecache]

49 ca10-49 Cache leesstrategie lees data in cache cachetreffer data niet in cache cachemisser stuur door naar CVE load through load & forward 90%-98% Cache: leesstrategie

50 ca10-50 Cache schrijfstrategie schrijf data in cache cachetreffer data niet in cache cachemisser write allocate write no allocate write through write back cache + geheugen cache (+ geheugen) geheugen Cache: schrijfstrategie

51 ca10-51 Gemiddelde toegangstijd Gemiddelde toegangstijd (AMAT) = Hit Time + (Miss Rate x Miss Penalty) = (Hit Rate x Hit Time) + (Miss Rate x Miss Time) Gemiddelde toegangstijd (AMAT) = Hit Time + (Miss Rate x Miss Penalty) = (Hit Rate x Hit Time) + (Miss Rate x Miss Time) x 100 = x x 103 = 5 [AMAT: Average Memory Access Time] Miss rate ↓ Miss penalty ↓ Hit time ↓  AMAT ↓

52 ca10-52 AMAT CacheparametersHit TimeMiss rateMiss Penalty Grootte ↑↑↓- Associativiteit ↑↑↓- ↑ Blokgrootte ↑-↑ ↓↑ Splitsing ↑↓↑ ↓- Niveaus ↑↓↑↓ AMAT = Hit Time + (Miss Rate x Miss Penalty)

53 ca10-53 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

54 ca10-54 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

55 ca10-55 Cache grootte ↑  Miss rate ↓ Associativiteit ↑  Miss rate ↓ Cache size (KiB) Miss Rate wegs 2-wegs 4-wegs 8-wegs capaciteitsmissers 2:1 regel [Spec 92 Benchmarks] [bron: Patterson&Hennessy] koude missers

56 3C Relative Miss Rate Cache Size (KiB) Miss Rate per type 0% 20% 40% 60% 80% 100% way 2-way 4-way 8-way Capaciteitsmissers Koude missers Conflictmissers !

57 ca10-57 Uitbuiten spatiale lokaliteit = multiplexer

58 ca10-58 Blokgrootte ↑  Miss rate ↓↑ Cachegrootte Blok- grootte Miss Pen 4KiB16KiB64KiB256KiB

59 ca10-59 Cachegrootte ↑  hit time ↑ Associativiteit ↑  hit time ↑ KiB FA assoc ns Hit time

60 ca10-60 Gesplitste vs. geünificeerde caches GrootteInstructiecacheData cacheGeünificeerde cache 1 KiB3.06%24.61%13.34% 2 KiB2.26%20.57%9.78% 4 KiB1.78%15.94%7.24% 8 KiB1.10%10.19%4.57% 16 KiB0.64%6.47%2.87% 32 KiB0.39%4.82%1.99% 64 KiB0.15%3.77%1.35% 128 KiB0.02%2.88%0.95% Harvard architectuur

61 ca10-61 Voorbeeld [20% data cache; 80% instructiecache; 16 KiB miss penalty = 50 cycli; hit time = 1 cyclus] Gesplitste cache AMAT = 80% x ( % x 50) + 20% x ( % x 50) = Geünificeerde cache AMAT = 80% x ( % x 50) + 20% x ( % x 50) = Extra cyclus: Cache met 1 toegangspoort Maak het vaak voorkomende geval snel!

62 ca10-62 Meerniveaucaches processor L1 I (32KiB)L1 D (32KiB) L2 cache (256 KiB) L3 cache (2 MiB/core) Cycli: 4 Cycli: 10 Cycli: 35 Geheugen Intel Core I7 Cache: hiërarchie

63 Cachehiërarchie ca10-63 CVE L1I L2 L3 L1D

64 ca10-64 Voorbeeld ProcessorPentium 4Ultrasparc III Clock (2001)2000 Mhz900 Mhz L1 I cache96 KiB TC32 KiB, 4WSA Latency42 L1 D cache8 KiB 4WSA64 KiB, 4WSA Latency22 TLB L2 cache256 KiB 8WSA8 MiB DM (off chip) Latency615 Block size64 bytes32 bytes Bus width64 bits128 bits Bus clock400 Mhz150 Mhz ProcessorPentium 4Ultrasparc III Clock (2001)2000 Mhz900 Mhz L1 I cache96 KiB TC32 KiB, 4WSA Latency42 L1 D cache8 KiB 4WSA64 KiB, 4WSA Latency22 TLB L2 cache256 KiB 8WSA8 MiB DM (off chip) Latency615 Block size64 bytes32 bytes Bus width64 bits128 bits Bus clock400 Mhz150 Mhz

65 ca10-65 Inhoud Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen

66 bca10-66 Superscalar out-of-order processor L1 I-cache Branch predictor Branch predictor Instruction window Instruction window ALU ld/st L1 D-cache L2 cache to L1 I-cache mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g ALU front-end pipeline out-of-order execution in-order commit out-of-order execution in-order commit decoding, register renaming, etc. [Lieven Eeckhout]

67 bca10-67 Cycle 1 L1 I-cache Branch predictor Branch predictor Instruction window Instruction window ALU ld/st L1 D-cache L2 cache a b ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g Per clock cycle, B instructions are fetched, With B = processor width Per clock cycle, B instructions are fetched, With B = processor width to L1 I-cache

68 bca10-68 Cycle 2 L1 I-cache Branch predictor Branch predictor Instruction window Instruction window ALU ld/st L1 D-cache L2 cache a bd1 c1 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g to L1 I-cache

69 bca10-69 Cycle 4 L1 I-cache Branch predictor Branch predictor Instruction window Instruction window ALU ld/st L1 D-cache L2 cache a bd1 c1e1 f1d2 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g Branch predicted taken to L1 I-cache

70 bca10-70 Cycle 5 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ab ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d1 c1e1 f1d2 c2e2 f2 to L1 I-cache

71 bca10-71 ALU Cycle 6 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ab d1 c1 a b mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d3 c3e1 f1d2 c2e2 f2 to L1 I-cache

72 bca10-72 Cycle 7 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ab d1 c1e1 f1 c1 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d2 c2e2 f2d3 c3e3 f3 Operands are available operands not yet available to L1 I-cache

73 bca10-73 Cycle 8 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d1 c1e1 f1 d2 c2 e1 c1 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d4 c4e2 f2d3 c3e3 f3 out-of-order execution to L1 I-cache

74 bca10-74 Cycle 9 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d1 c1e1 f1 d2 c2 e2 f2 f1 c2 ALU d1 mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d3 c3e3 f3d4 c4e4 f4 Instruction-level parallelism (ILP) to L1 I-cache

75 bca10-75 Cycle 10 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d1e1 f1 d2 c2e2 f2 d3 c3 e2 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d5 c5e3 f3d4 c4e4 f4 in-order commit to L1 I-cache

76 bca10-76 Cycle 11 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 e3 f3 f2 c3 ALU d2 mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d4 c4e4 f4d5 c5e5 f5 to L1 I-cache

77 bca10-77 Instruction Level Parallelism [Starting from full trace, SpecInt 2000] bzip2craftyeongccgzipparserperlbmktwolfvortexvpr

78 bca10-78 Performance bzip2craftyeongccgzipparserperlbmktwolfvortexvpr IPC (8 execution units) IPC t

79 bca10-79 IPC =  W  Size instruction window W IPC

80 bca10-80 Branch prediction ? Retire (commit) Fetch & Decode Fetch width Commit width Issue width MEEE Memory Instruction Window

81 bca10-81 Cycle 11 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 e3 f3 f2 c3 ALU d2 mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d4 c4e4 d5 c5e5 f5f4 Mispredicted branch speculative fetch and execution to L1 I-cache

82 bca10-82 Cycle 13 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d3 c3e3 f3 d4 c4 e4 f3 c4 ALU d3 mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d5 c5e5 d6 c6e6 f6f5 f4 to L1 I-cache

83 bca10-83 ALU Cycle 15 L1 I-cache Branch predictor Branch predictor ld/st L1 D-cache L2 cache d4 c4e4 d5 c5 e5 c5 ALU d4 mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d6 c6e6 d7 c7e7 f7f6 f5 f4 to L1 I-cache

84 bca10-84 Cycle 16 ALU L1 I-cache Branch predictor Branch predictor ld/st L1 D-cache L2 cache d4 e4 d5 c5 e5 c5 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g d6 c6e6 d7 c7e7 f7f6 f5 f4 Instructions on mispredicted path must be nullified Instructions on mispredicted path must be nullified to L1 I-cache

85 bca10-85 Cycle 17 L1 I-cache Branch predictor Branch predictor Instruction window Instruction window ALU ld/st L1 D-cache L2 cache mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g ALU g h Instructions on correct path are fetched to L1 I-cache

86 bca10-86 Interval analysis IPC t Mispredicted branch enters instruction window Mispredicted branch gets executed; instructions from the correct path are fetched Correct instructions enter the instruction window Performance recovers IPC max Mispredicted branch is fetched Instructions along the speculative path are executed Intervalanalyse

87 bca10-87 Retire (commit) Branch predictor Fetch & Decode Instruction Window MEEE Memory Branch Predictor 90-95% correct

88 bca10-88 Branch prediction bzip2craftyeongccgzipparserperlbmktwolfvortexvpr everything perfect real branch predictor IPC Sprongvoorspeller

89 bca10-89 Cycle 10 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d1e1 f1 d2 c2e2 f2 d3 c3 e2 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3, 48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3, 48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3d4 c4e4 f4 Suppose f4 is correctly predicted, g causes an I cache miss Suppose f4 is correctly predicted, g causes an I cache miss I-cache miss latency is 10 cycles to L1 I-cache Cache: misser

90 bca10-90 Cycle 13 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d3 c3e3 f3 d4 c4 e4 f3 c4 ALU d3 mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3, 48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3, 48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g f4 to L1 I-cache

91 bca10-91 Cycle 14 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d3 e3 f3 d4 c4 e4 c4 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3, 48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3, 48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g f4 e4 to L1 I-cache

92 bca10-92 Cycle 15 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d4 c4e4 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g f4 d4 f4 to L1 I-cache

93 bca10-93 Cycle 16 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d4 e4 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g f4 to L1 I-cache

94 bca10-94 Cycle L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g to L1 I-cache

95 bca10-95 Cycle 20 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g g h to L1 I-cache

96 bca10-96 Interval analysis IPC t I-cache miss Instructions from front-end pipe line arrive in instruction window Instructions from front-end pipe line arrive in instruction window Instruction window empties front-end pipe line refills front-end pipe line refills Performance recovers IPC max I-cache miss latency

97 bca10-97 Cycle 10 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d1e1 f1 d2 c2e2 f2 d3 c3 e2 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3d4 c4e4 f4d5 c5 Assume a L1 D-cache miss Assume a L1 D-cache miss to L1 I-cache Cache: misser

98 bca10-98 Cycle 11 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4e4 f4d5 c5 Access time to L2 cache is 10 cycles f2 c3 e5 f5 to L1 I-cache

99 bca10-99 Cycle 12 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4d5 c5 c3 e5 f5 e3 d6 c6 to L1 I-cache

100 bca Cycle 13 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 c2 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 d5 c5 c4 e5 f5 f3 d6 c6e6 f6 to L1 I-cache c3

101 bca Cycle 14 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 d5 c5 c4 e5 f5 e4 d6 c6e6 f6d7 c7 to main memory to L1 I-cache c2 c3 Instruction window fills up instruction c2 prohibits commit Instruction window fills up instruction c2 prohibits commit

102 ALU bca Cycle 15 L1 I-cache Branch predictor Branch predictor ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 d5 c5 e5 f5 f4 d6 c6e6 f6d7 c7e7 f7 c5 to main memory to L1 I-cache c4 c2 c3

103 bca Cycle 16 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 d5 c5 e5 f5 e5 d6 c6 e6 f6d7 c7e7 f7 c5 d8 c8 to main memory to L1 I-cache c4 c2 c3

104 bca Cycle 17 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 to main memory to L1 I-cache c4 c2 c3 g h

105 bca Cycle 20 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache d2 c2e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 to main memory to L1 I-cache c4 c2 c3 g h

106 bca Cycle 21 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 to main memory to L1 I-cache c4 c3 c2 d2 g h

107 bca Cycle 22 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache e2 f2 d3 c3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 to main memory to L1 I-cache c4 c3 d2 g h

108 bca Cycle 23 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache e2 f2 d3 ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 to main memory to L1 I-cache c4 c3 d2 g h

109 bca Cycle 24 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 c4 e4 f4 to main memory to L1 I-cache c4 d3 g h

110 bca Cycle 25 L1 I-cache Branch predictor Branch predictor ALU ld/st L1 D-cache L2 cache ALU mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] mov 0 → r1 mov 0x0fe0 → r3 L: ld MEM[r3] → r2 add r2,r1 → r1 add r3,48 → r3 brl r3,0x10a0 → L st r1 → MEM[A] a b d c e f g e3 f3 d4 e4 f4 to main memory to L1 I-cache c4 d3 g h

111 bca Interval analysis IPC t L2 D-cache miss Instruction window fills up Instructions that do not depend on the cache miss are executed Performance recovers IPC max L2 D-cache miss latency Instruction window full

112 ca Prestatie-impact van niet- ideale geheugens bzip2craftyeongccgzipparserperlbmktwolfvortexvpr Alles perfect Realistische sprongvoorspeller IPC Realistische sprongvoorspeller; realistische geheugenhiërarchie

113 ca Itanium miljoen transistors

114 ca Inhoud Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen

115 ca Vergist U zicht niet… alle leven op aarde bestaat uit insecten

116 ca Embedded market, 1996 versus *CPU licensing data used for (Source: The Linley Group)

117 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

118 ca (R)evolutie ’60-’70 ’80-’ prestatie Prestatie prijs Functionaliteit Prijs Grootte Autonomie 1-veel 1-1 veel-1

119 ca “The computer revolution hasn't happened yet” De alomtegenwoordige computer (ubiquitous computing, pervasive computing) Intelligente omgeving (Ambient Intelligence) Alan Kay, HP

120 ca Modern ingebed systeem 63 processors BMW serie-7

121 ca 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)

122 ca Typische configuratie SensorsActuators Analoog/ Digitaal Conversie Digitaal/ Analoog Conversie  Proc “input”“output”

123 ca 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

124 ca 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 = …

125 ca 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

126 ca 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)

127 ca Inhoud Soorten geheugens Lokaliteit Caches Impact op prestatie Ingebedde systemen Eindbeschouwingen

128 ca Vervolg Computerarchitectuur 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 Procesbeheer, Synchronisatie, hoofdgeheugen, Bestanden- en schijfbeheer, Beveiliging, Systeembeheer Digitale elektronica Besturingssystemen Parallelle computersystemen Superscalaire architecturen, out- of-order architecturen, interconnecties en vermogen, prestatieanalyse, meerdradige uitvoering, systeemarchitectuur

129 ca Pauze

130 ca &_mc=NL_EET_EDT_EET_review_ &cid=NL_EET_EDT_EET_review_ &el q=ffa1b da4bccb7e28d21b2003&elqCam paignId=22619&elqaid=25441&elqat=1&elqTrackI d=dae6c67ea56d4963ba0fedcae4bdaaf6


Download ppt "Ca10-1 Les 10: Geheugenhiërarchie Parkinson's laws: "Work expands so as to fill the time available for its completion“ "Expenditure rises to meet income“"

Verwante presentaties


Ads door Google