Documente Academic
Documente Profesional
Documente Cultură
20.02.2013
http://dilbert.com/strips/comic/1999-06-21/
Cuprins
Nevoia unei memorii cache
Feb. 2011
Slide 3
CPU-Memory Bottleneck
CPU Memorie
Performana calculatoarelor este de obicei limitat de limea de band a memoriei i de laten Laten (timpul necesar pentru un singur acces)
Memory access time >> Processor cycle time
10
DRAM 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 1980 1981
DRAM
7%/year
Timp
Procesor la 3GHz superscalar acceseaz n 100ns memoria DRAM sau poate s execute 1,200 instruciuni n timpul unui singur acces la memorie!
CPU
Memorie mic
Memorie Mare
Semnalele parcurg un drum mai lung Se distrubuie n mai multe locaii
Next addr
jta (rs)
Single-cycle
ALUOvfl Ovfl inst rd 31 imm op fn
Multicycle
Inst Reg Address
26 / 4 MSBs
0 1
30
jta
Instr cache
0 1 2
Reg file
(rt) / 16 0 32 SE / 1
ALU
Func
ALU out
Data cache
Data out
PC
4 0 1 2 3
0 1 2
0 1
Cache
Data Data Reg
rd 31
Reg file
(rt) 32 y Reg SE /
ALU
Func ALU out
Register input
InstData MemWrite op IRWrite fn
imm 16 /
RegInSrc RegWrite
ALUSrcX ALUSrcY
ALUFunc JumpAddr
PCSrc
Br&Jump
RegDst RegWrite
ALUSrc ALUFunc
PCWrite
MemRead
RegDst
125 MHz CPI = 1 Toate cele 3 implementri MicroMIPS presupun timpi de acces de 2-ns pentru date i instruciuni; memoriile RAM tipice sunt de 10-50x mai lente
Stage 1
0 1 PC inst rs rt NextPC
Stage 3
ALUOvfl
Stage 4
Data addr
Stage 5
(rs)
Ovfl
Instr cache
1 Incr IncrPC
Reg file
(rt) imm SE rt rd 0 1 31 2 0 1 2
ALU
Func
Data cache
0 1
0 1
2 3 5
SeqInst op
ALUFunc
Slide 8
CPU
capacitate: Registre << SRAM << DRAM laten: Registre << SRAM << DRAM lime de band: on-chip >> off-chip Pentru un acces de date: if data fast memory low latency access (SRAM) if data fast memory high latency access (DRAM)
Access cabinet in 30 s
Access drawer in 5 s
Register file
Access desktop in 2 s
Cache memory
Main memory
Foile de pe birou (registre) sau dintr-un sertar (cache) sunt mult mai uor de accesat dect cele dintr-un dulap de fiiere (memoria principal).
Slide 11
CPU
Reg file
Un nivel cache cu rata de hit h Ceff = hCfast + (1 h)(Cslow + Cfast) = Cfast + (1 h)Cslow
Slide 12
CPU
CPU registers
CPU
CPU registers
Level-1 cache
Level-2 cache
Main memory
Level-2 cache
Level-1 cache
Main memory
Memoriile cache funcioneaz ca un buffer ntre procesorul ultrarapid i memoria principal care este mult mai lent.
Slide 13
Level L1 L2
Soluie
registers
95%
Level-1 cache
4%
Level-2 cache
1%
Main memory
8
cycles
60
cycles
Ceff = Cfast + (1 h1)[Cmedium + (1 h2)Cslow] (a) Level 2 between level 1 and main Deoarece Cfast e inclus n CPI de 1.2, trebuie s calculm pentru restul CPI = 1.2 + 1.1(1 0.95)[8 + (1 0.8)60] = 1.2 + 1.1 0.05 20 = 2.3 Global: hit rate 99% (95% + 80% of 5%), miss penalty 60 cicli
Slide 14
Block or cache-line size (unitatea de transfer de date dintre cache i mem. Principal). O linie mai mare pentru cache inseamna mai multe date aduse n cache la fiecare miss.Poate s mbunteasc rata de hit dar poate s aduc i date mai puin utile n cache.
Placement policy. Determinarea locului unde o linie cache este plasat. Politicile mai flexibile implic un cost hardware mai mare i pot sau nu s aduc performane mrite (datorate complexitii mrite a localizrii). Replacement policy. Determinarea blocului din cache ales pentru suprascriere (n care plasm o linie nou din cache). Abordri tipice: alegerea unui bloc aleator sau Least Recently-Used (LRU). Write policy. Determin dac actualizrile n cache sunt transmise imediat memoriei principale (write-through) sau blocurile modificate sunt copiate napoi n memoria principal atunci cnd trebuie copiate (write-back sau copy-back).
Slide 15
Donald J. Hatfield, Jeanette Gerald: Program Restructuring for Virtual Memory. IBM Systems Journal 10(3): 168-192 (1971)
Timp
Instruction fetches
subroutine call subroutine return
Acces la stiv
argument access
Acces de date
scalar accesses
Timp
Localitate temporal: Dac o locaie de memorie este accesat, este foarte probabil ca aceeai locaie de memorie s fie accesat i n viitorul apropiat.
Localitate spaial: Dac o locaie de memorie este accesat, este foarte probabil ca programul s acceseze i locaiile din imediata vecintate n viitorul apropiat.
Localitate temporal
Localitate spaial
Timp Donald J. Hatfield, Jeanette Gerald: Program Restructuring for Virtual Memory. IBM Systems
Spaial: La accesul unei locaii, tind s fie accesate i adresele din imediata vecintate
Working set
Time
Slide 20
Exploateaz localitatea temporal prin memorarea coninutului adreselor de memorie accesate recent.
Exploateaz localitatea spaial prin aducerea de blocuri de date din proximitatea locaiilor recent accesate.
Cache memory
Presupunem c nu exist un conflict n maparea adreselor, cache-ul va ine o mic bucl din programul principal, ceea ce va duce la o execuie foarte rapid.
Main memory
Cache line/ block (unit of t rans fer between main and cache memories)
Slide 22
Procesor
Date Copia locaiei din mem. princ. cu adresa 100 100 304
Data Byte Data Byte
CACHE
Date Copia locaiei din mem. princ. cu adresa 101
Data Byte
Memoria principal
Linie
6848 416
Bloc de date
Soluie
Fr sertarul din birou, orice document e accesat n 30s. De exemplu, ca s accesm 1000 documente dureaz 30 000s. Sertarul face ca un procent h din cazuri s fie tratate de 6 ori mai repede, timpul de acces rmnnd acelasi pentru restul de 1 - h procente. Prin urmare, avem un speedup de 1/(1 h + h/6) = 6 / (6 5h). Dac mbuntim timpul de acces la sertar (viteza memoriei cache) putem s cretem speedup-ul, dar, ct timp rata de miss rmne 1 h, nici un speed-up nu poate depi 1 / (1 h). Pentru un h = 0.9, de exemplu, avem un speed-up de 4, iar limita superioar este 10, pentru un timp de acces extrem de scurt. Not: Unii oameni ar pune toate dosarele pe birou, n ideea c aa se poate atinge un speed-up mai mare. Nu v recomand aa ceva!
Slide 24
http://dilbert.com/strips/comic/1993-12-13/
Citete blocul de date din mem. princ. Ateapt ntoarce datele procesorului i actualizeaz cache-ul
Politica de amplasare
Numrul blocului
1111111111 2222222222 33 0123456789 0123456789 0123456789 01
Memorie
Numrul setului
01234567
Cache
Complet Associativ oriunde (2-way) Set Associativ oriunde n setul 0 (12 mod 4) Mapat direct numai n blocul 4 (12 mod 8)
28
locations
32-35 36-39 40-43
1,Tag
Compare
1 if equal
Cache miss
Memorie cache mapat direct ce conine 32 de cuvinte cu opt linii a cte 4 cuvinte. Fiecare linie are o etichet asociat i un bit de validitate.
Feb. 2011 Slide 29
Componentele unei adrese de 32 de bii pentru un cache mapat direct cu adresare la nivel de octet.
Slide 30
2-bit word offset in line 3-bit line index in cache Tag Word address
1: miss, fetch la liniile 3, 2, 1, 0 7: miss, fetch la liniile 7, 6, 5, 4 6: hit 5: hit 32: miss, fetch la 35, 34, 33, 32 (nlocuiete 3, 2, 1, 0) 33: hit 1: miss, fetch la 3, 2, 1, 0 (nlocuiete 35, 34, 33, 32) 2: hit 1,Tag ... .a.m.d.
35 3 34 2 33 1 32 0 7 6 5 4
Data o
Compare 1 if equal
Cache
Slide 31
Data Block
2k lines
t
=
HIT
k V Tag
t Data Block b
2k lines
t
=
HIT
Cache set-asociativ
2-bit word offset in line 2-bit set index in cache Tag
Option 0 Option 1 0-3
Word address
96-99 112-115
1,Tag Compare
Compare
1 if equal
Cache set-asociativ ce conine 32 de cuvinte de date aranjate n dou seturi ce conin linii de 4 cuvinte.
Slide 34
Address in cache used to read out two candidate items and their control info
Slide 35
Maparea adreselor
Un cache set-asociativ de 64 KB four-way (cu patru seturi) este adresabil la nivel de octet i conine linii de 32 de octei. Adresele de memorie au 32 de bii. a. Care este dimensiunea etichetelor acestui cache? b. Ce adrese din memoria principal sunt mapate n setul numrul 5? Soluie a. b. O adres (32 b) = 5 b byte offset + 9 b set index + 18 b tag Adresele care au set-index (lung de 9 bii) egal cu 5 au o form general 214a + 255 + b, de ex. 160-191, 16 554-16 575, . . .
32-bit address Tag width = 32 5 9 = 18 Tag 18 bits Set index 9 bits Offset 5 bits Line width = 32 B = 25 B
Slide 36
Cache set-asociativ cu 2 ci
Tag t V Tag Index
Block Offset
k Data Block
V Tag
Data Block
t = =
Data Word or Byte HIT
Block Offset
Politica de nlocuire
ntr-un cache asociativ, care bloc dintr-un set trebuie invalidat atunci cnd setul se umple? Aleatoriu
Least-Recently Used (LRU)
Starea pentru cache LRU trebuie actualizat la fiecare acces Implementare funcional i fezabil posibi doar pentru un numr mic de seturi (2-way) pseudo-LRU arbore binar folosit pentru cache 4-8 way
block address
offsetb
b bits 32-b bits 2b = block size a.k.a line size (in bytes)
Probleme la scriere:
Write-through ncetinete memoria cache pentru a permite memoriei principale s scrie datele Write-back sau copy-back este mai puin problematic, dar tot duneaz performanelor din cauza acceselor multiple la memorie. Soluie: Doteaz memoria cache cu buffering la scriere a.. nu trebuie s atepte memoria principal.
Slide 41
Byte address in
14 /
.
11 /
Un chip DRAM de 256 Mb este organizat ca o memorie 32M 8: patru astfel de chipuri constituie o memorie de 128MB.
Slide 42
0.2
Miss rate
0.1
0 Direct
2-way
4-way
8-way
16-way
32-way
64-way
Associativity
mbuntirea performanelor memoriei cache n funcie de asociativitate.
Slide 44
http://dilbert.com/strips/comic/2008-02-22/