Sunteți pe pagina 1din 45

Calculatoare Numerice (2)

- Cursul 2 Memoria Cache


Facultatea de Automatic i Calculatoare Universitatea Politehnica Bucureti

20.02.2013

Comic of the Day

http://dilbert.com/strips/comic/1999-06-21/

Organizarea memoriei cache


Viteza procesoarelor crete mai rapid dect cea a memoriilor Diferena de vitez dintre procesor i memorie crete

Cuprins
Nevoia unei memorii cache

Cum funcioneaz un cache?


Cache mapat direct Cache mapat set-asociativ Memoria cache i memoria principal mbuntirea performanei memoriei 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

Lime de band (numrul de accese pe unitatea de timp)


Daca un procent m% instruciuni dintr-un program acceseaz memoria: -> 100% + m referiri la memorie/instruciune -> CPI = 1 necesit 100% + m referine la memorie/ciclu (p.p. o arhitectur RISC)

Diferena dintre procesor i DRAM (laten)


1000 Performan 100
Proc 60%/year
CPU

Processor-Memory Performance Gap: (growing 50%/yr)

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!

Dimensiunea fizic afecteaz latena


CPU

CPU
Memorie mic

Memorie Mare
Semnalele parcurg un drum mai lung Se distrubuie n mai multe locaii

Dimensiunile relative ale celulelor de memorie


On-Chip SRAM in logic chip DRAM on memory chip

[ Foss, Implementing ApplicationSpecific Memory, ISSCC 1996 ]

Necesitatea memoriei cache


Incr PC Next PC (PC) PC rs rt

Next addr
jta (rs)

Single-cycle
ALUOvfl Ovfl inst rd 31 imm op fn

Multicycle
Inst Reg Address

26 / 4 MSBs

30 / SysCallAddr x Reg rs rt 0 1 2 0 1 (rs)

0 1

30

jta

Instr cache

0 1 2

Reg file
(rt) / 16 0 32 SE / 1

ALU
Func

ALU out

Data addr Data in

Data cache

Data out

PC

ALUZero x Mux ALUOvfl 0 Zero z Reg 1 Ovfl y Mux 0 1 2 4 3

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

DataRead RegInSrc DataWrite

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 2 Next addr

Stage 3
ALUOvfl

Stage 4
Data addr

Stage 5

500 MHz CPI 4

(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

Pipelined 500 MHz CPI 1.1

2 3 5

SeqInst op

Br&Jump RegDst fn RegWrite ALUSrc

ALUFunc

DataRead RetAddr DataWrite RegInSrc

Slide 8

Organizarea ierarhic a memoriilor


A

CPU

Memorie mic i rapid (RF, SRAM)


holds frequently used data

Memorie mare, lent (DRAM)

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)

Managementul ierarhiei de memorii


Stocare rapid/mic, de ex. registre
Adresa este specificat de obicei n corpul instruciunii Implementat direct ca o tabel de registre Dar hardware-ul poate s fac operaii transparente software-ului, de ex. managementul stivei, redenumirea registrelor etc.

Stocare de mari dimensiuni/lent, de ex. memoria principal


Adresa calculat de obicei din valorile stocate n registre Implementat de obicei ca o ierarhie de memorii (cachemem. princ.) n care hardware-ul decide ce date sunt aduse i inute n memoria rapid Software-ul poate s dea anumite indicii, de ex. nu face prefetch sau nu stoca n cache anumite date
10

Analogia dulap de fiiere sertar de birou


Odat ce setul de lucru este n sertarul de birou, nu sunt necesare foarte multe drumuri la dulapul de fiiere.

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

Cache, rata Hit/Miss i timpul efectiv de acces


Memoria cache e transparent pentru utilizator; Transferul se face automat Line Word

CPU

Reg file

Cache (fast) memory


Data is in the cache fraction h of the time (say, hit rate of 98%)

Main (slow) memory

Go to main 1 h of the time (say, cache miss rate of 2%)

Un nivel cache cu rata de hit h Ceff = hCfast + (1 h)(Cslow + Cfast) = Cfast + (1 h)Cslow
Slide 12

Niveluri multiple de cache


Mai uor de analizat

CPU

CPU registers

CPU

CPU registers

Level-1 cache

Level-2 cache

Main memory

Level-2 cache

Level-1 cache

Main memory

(a) Level 2 between level 1 and main

(b) Level 2 connected to backside bus

Memoriile cache funcioneaz ca un buffer ntre procesorul ultrarapid i memoria principal care este mult mai lent.

Slide 13

Performanele unui sistem cu cache pe dou niveluri


Un sistem cu cache L1 i L2 are un CPI de 1.2 fr cache miss. Pentru fiecare instruciune sunt, n medie 1.1 accese la memorie. Care este CPI efectiv dac lum n calcul i rata cache miss? Care este rata efectiv de hit i penalizarea pentru miss dac cache-ul L1 i L2 sunt modelate ca un singur cache? CPU CPU

Level L1 L2
Soluie

Local hit rate 95 % 80 %

Miss penalty 8 cycles 60 cycles

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

Parametrii memoriei cache


Cache size (n octei sau cuvinte). Un cache mai mare poate s in mai multe date, dar este mai mare i mai lent.

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

Graficul referinelor la memorie


Adresa de memorie (un pixel per acces)

Donald J. Hatfield, Jeanette Gerald: Program Restructuring for Virtual Memory. IBM Systems Journal 10(3): 168-192 (1971)

Timp

abloane tipice de referin la memorie


Adres
n loop iterations

Instruction fetches
subroutine call subroutine return

Acces la stiv

argument access

Acces de date

scalar accesses

Timp

Dou proprieti previzibile ale referinelor la memorie

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.

Modele i corelaii pentru accesul la memorie


Adresa de memorie (un pixel per acces)

Localitate temporal

Localitate spaial
Timp Donald J. Hatfield, Jeanette Gerald: Program Restructuring for Virtual Memory. IBM Systems

Localitatea temporal i spaial


Addresses
Temporal: Accesele la aceeai adres sunt de obicei grupate n timp From Peter Dennings CACM paper, July 2005 (Vol. 48, No. 7, pp. 19-24)

Spaial: La accesul unei locaii, tind s fie accesate i adresele din imediata vecintate

Working set

Time

Slide 20

Memoriile cache exploateaz ambele tipuri de predicii

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.

Cum funcioneaz un cache?


Localitate temporal Localitate spaial

Address mapping (many-to-one)

9-instruction program loop

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

n interiorul unui cache


Addrese Addrese

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

Etichet (address tag)

6848 416

Bloc de date

Beneficiile caching-ului legate de legea lui Amdahl


Formulai problema cu sertarele din slide-ul anterior folosind legea lui Amdahl. Presupunei c avei un hit rate h.

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

Compulsory, Capacity, & Conflict Misses


Compulsory misses: Dac avem o politic de fetching on-demand, primul acces la orice resurs va fi ntotdeauna un miss. O parte din aceste miss-uri obligatorii pot fi evitate prin prefetching. Capacity misses: Trebuie s ne debarasm de o parte din date pentru a face loc altora. Acest lucru duce la miss-uri, datorate capacitii limitate a memoriei cache. Conflict misses: Ocazional, exist spaiu ocupat de date care sunt inutile, dar strategia de alocare/mapare ne foreaz s invalidm intrri utile pentru a aduce date noi. Acest lucru poate duce de asemenea la miss-uri. Dac avem un cache de capacitate fix, primele dou tipuri de miss sunt mai mult sau mai puin fixate n jurul unor valori date. Al treilea tip, ns, este influeat de strategia de mapare, care este sub controlul utilizatorilor. Discutm n continuare despre dou tipuri de mapare: direct i setasociativ.
Slide 25

http://dilbert.com/strips/comic/1993-12-13/

Algoritmul de funcionare (Read)


Parcurge adresele date de procesor i caut etichetele care corespund. Atunci, ori:
Am gsit eticheta n cache a.k.a. HIT ntoarce procesorului Copia datelor din cache Datele nu sunt n cache a.k.a. MISS

Citete blocul de date din mem. princ. Ateapt ntoarce datele procesorului i actualizeaz cache-ul

Q: Ce linie din cache nlocuim?

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)

blocul 12 poate fi plasat

28

Cache mapat direct


2-bit word offset in line 3-bit line index in cache Tag Word address
0-3 Main 4-7 memory 8-11

locations
32-35 36-39 40-43

64-67 68-71 72-75

Tags Valid bits

Read tag and specified word Data out

96-99 100-103 104-107

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

Accesul la o memorie cache mapat direct


Descriei adresarea unei memorii cache cu adrese pe 32 de bii, cu datele accesibile la nivel de octet. Linia de cache are o lime W = 16 B. Dimensiunea cache L = 4096 linii (64 KB). Soluie Poziia unui octet n linie este codificat pe log216 = 4 b. Adresa de index a unei linii de cache este log24096 = 12 b. Rmn 32 12 4 = 16 b pentru etichet.
12-bit line index in cache 16-bit line tag 32-bit address Byte address in cache 4-bit byte offset in line

Componentele unei adrese de 32 de bii pentru un cache mapat direct cu adresare la nivel de octet.
Slide 30

Comportamentul unui cache mapat direct


Trace pentru adrese: 1, 7, 6, 5, 32, 33, 1, 2, . . .

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

Tags Valid bits

Read tag and specified word

Data o
Compare 1 if equal

Cache

Slide 31

Cache mapat direct


Tag t V Tag Index k
Block Offset

Data Block

2k lines

t
=

HIT

Data Word or Byte

Selectarea adresei pentru cache-ul mapat direct


higher-order vs. lower-order address bits Index Tag Block Offset

k V Tag

t Data Block b

2k lines

t
=

HIT

Data Word or Byte

Cache set-asociativ
2-bit word offset in line 2-bit set index in cache Tag
Option 0 Option 1 0-3

Word address

Main memory 16-19 locations


32-35 48-51 64-67 80-83

Tags Valid bits

Read tag and specified word from each option


0 1

Data out Cache miss

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

Accesul la un cache set-asociativ


Descriei schema de adresare pentru o memorie adresabil la nivel de octet cu adrese pe 32 de bii. Limea liniei de cache 2W = 16 B. Mrimea setului 2S = 2 lini. Mrimea cache 2L = 4096 linii (64 KB). Soluie Adresa unui octet din linie log216 = 4 b. Adresa de index ntr-un set cache (log24096/2) = 11 b. Rmn 32 11 4 = 17 b pentru etichet.
11-bit set index in cache

Componentele unui cache 32-bit set-asociativ cu adresare address pe 32 de bii i 2 seturi.

17-bit line tag

4-bit byte offset in line

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

Set size = 4 32 B = 128 B Number of sets = 216/27 = 29

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

Cache complet asociativ


V Tag t = Tag Data Block

= HIT Data Word or Byte

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

First-In, First-Out (FIFO) a.k.a. Round-Robin


folosit n cache-urile complet-asociative Not-Most-Recently Used (NMRU) FIFO, cu excepia blocului/blocurilor cel mai recent folosite

Este un efect de ordin secundar. De ce?

nlocuirea se petrece NUMAI la un cache miss


39

Mrimea blocurilor i localitatea spaial


Un bloc este unitatea de transfer dintre cache i memoria principal Tag Split CPU address Word0 Word1 Word2 Word3 4 word block, b=2

block address

offsetb

b bits 32-b bits 2b = block size a.k.a line size (in bytes)

Un bloc de dimensiuni mari are avantaje distincte d.p.d.v. hardware


mai puin overhead pentru etichete exploateaz capabilitatea memoriei DRAM de a transfera date n rafal exploateaz transferurile n rafal prin magistralele de date de lime mare (32-64 bii)

Care sunt dezavantajele creterii dimensiunii blocurilor?


Mai puine blocuri => mai multe conflicte. Poate s iroseasc lime de band.
40

Cache i memoria principal


Cache separat: memorii cache diferite pentru date i instruciuni (L1) Cache unificat: conine instruciuni i date (L1, L2, L3)
Arhitectur Harvard: memorii de date i instruciuni separate Arhitectur von Neumann: o singur memorie pentru date i instruciuni

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

Transferuri de date rapide ntre cache i memoria principal


. . . . . .
16 Kb = 2 KB 16Kb 16Kb memory matrix Selected row

Row address decoder

Byte address in

14 /

.
11 /

Column mux Data byte out

Un chip DRAM de 256 Mb este organizat ca o memorie 32M 8: patru astfel de chipuri constituie o memorie de 128MB.
Slide 42

mbuntirea performanelor memoriei cache


Pentru o dimensiune cache dat, exist urmtoarele probleme de design: Limea liniei (2W). O valoare prea mic a W cauzeaz mai multe accese la memoria principal; o valoare prea mare crete penalizarea pentru un miss i poate s ncarce memoria chache cu date de utilitate sczut, care pot fi nlocuite nainte de a fi utilizate. Mrimea setului sau asociativitatea (2S). Mapare direct (S = 0) este simpl i rapid; o mai mare asociativitate duce la o complexitate mrit i la timpi de acces mai mari dar tinde s reduc miss-urile conflictuale. Line replacement policy. De obicei este algoritmul LRU (least recently used); nu este o problem pentru cache-ul mapat direct. Funcioneaz bine i un algoritm de selecie aleatoare a liniilor pe care s le invalidm. Write policy. Memoriile cache moderne sunt foarte rapide, a.. Write-through nu este aproape niciodat o politic bun. De obicei alegem write-back sau copy-back, folosind buffering la scriere pentru a minimiza impactul adus de latena memoriei principale.
Slide 43

Efectele asociativitii asupra performanei


0.3

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/

S-ar putea să vă placă și