Programação em Sistemas Computacionais Hierarquia e memória Centro e Cálculo Instituto Superior e Engenharia e Lisboa Pero Pereira palex@cc.isel.ipl.pt
Localiae Localiae temporal Um programa que acee a uma zona e memória, proaelmente irá aceer noamente a essa zona num curto espaço e tempo, uma ou mais ezes. Localiae espacial Um programa que acee a uma zona e memória, proaelmente irá aceer a izinhanças essa zona. int sum(byte a[lins][cols]) { int l,c, res=0; for(c=0 ; c<cols ; ++c) for(l=0 ; l<lins ; ++l) res += a[l][c]; return res; } Boa localiae relatiamente à memória e cóigo (instruções)? Boa localiae relatiamente à memória e aos (ariáeis)?
Ranom Access Memory Static RAM (SRAM) 6 transístores por célula (bit) Estáel Acesso rápio (10x) Usaa para cache (KBytes..MBytes) Dynamic RAM (DRAM) 1 transístor e 1 conensaor por célula Custo baixo (100x) Pequena imensão Memória principal (GBytes)
Estrutura típica ALU Registers PC? Bytes 1 cycle L1 cache (SRAM) Data 64 KB cycles Coe CPU L cache (SRAM) 1 MB 14 cycles ns GB 160 cycles 60 ns Main Memory (DRAM) Bus Bus USB Controller Graphics Aapter Disk Controller Expansion slots Mouse Keyboar Display Disk 100 GB 8 ms 4
Hierarquia e memória Acesso rápio Menor capaciae Maior custo /byte Acesso lento Maior capaciae Menor custo /byte L4 L L L1 L0 Registers On-chip cache (SRAM) Off/On-chip cache (SRAM) Main memory (DRAM) Local seconary storage (local isk) Remote seconary storage (istribute file systems) Os registos o CPU guaram palaras obtias a cache A cache L1 guara linhas e cache obtias a cache L A cache L guara linhas e cache obtias a memória A memória guara blocos obtios o isco O isco guara ficheiros obtios remotamente 5
Conceito geral e cache Cache Hits (acesso rápio) Se os aos procuraos estão num os blocos a cache. 1. Os aos são lios/escritos apenas a/na cache. Cache Misses (acesso lento) Se os aos procuraos não estão num os blocos a cache. 1. É escolhio um bloco a cache para ser substituío.. Caso este bloco tenha sio alterao é escrito na memória principal.. Too o bloco o byte pretenio é lio a memória principal para a cache. 4. Os aos são lios/escritos apenas a/na cache. CPU N s b bytes Cache 16, ou 64 bytes Bus Cache memory (SRAM) Cache 4 Cache 9 Cache 14 Cache N < M Main memory (DRAM) Cache 0 Cache 1 Cache Cache Cache 4 Cache 5 Cache 6 Cache 7 Cache 8 Cache 9 Cache 10 Cache 11 Cache 1 Cache 1 Cache 14 Cache 15 M s 6
Organização a cache Organização em linhas: Vali Dirty t bits 16, ou 64 bytes Bloco: Cópia e um bloco e aos (ex: bytes) : Ientifica o bloco Uma parte o enereço em memória Vali bit: Cópia ália Inicialmente, toas as linha estão inálias Dirty bit: Bloco alterao Falta actualizar este bloco na memória (não é usao em write-through) 7
Fully Associatie cache Um bloco poe estar em qualquer linha a cache Aress bits: m bits main memory 4 GB m = offset Cache memory 0 1 Main memory 0 1 4 5 t = 7 t=m-b bits size bytes b = 5 b bits Aress: t=7 bits b=5 bits offs Um comparaor para caa linha. t=7 bits bytes == Enconer e Or com lógica em cascata. Para méias e granes imensões tem acessos lentos e é ispenioso. == == == Encoer Caches e pequena imensão (TLBs) Hit / Miss Mux 8
Direct-Mappe cache Caa bloco só poe estar numa linha a cache Aress bits: t=m-b-s bits t = 1 m bits main memory 4 GB m = Inex offset Cache memory 0 bytes s bits b bits 16k lines (51 KB) b = 5 Aress: Inex offs s = 14 t=1 bits bytes 1 t=1 bits s=14 bits b=5 bits Main memory 0 1 4 5 6 7 Inex 0 Um só comparaor. Económico e com acessos rápios. Cache miss se blocos usaos têm o mesmo inex (situação frequente) Inex 1 Inex s -1 Mux Hit / Miss == Mux 9
Set Associatie cache Caa bloco poe estar numa as N linhas a cache Aress bits : T a g t=m -b -s bits t =1 mb its m a inm e m o ry4g B m = In e x o ffs e t t=1bits s=14bits b=5bits Cache memory 0 1 Main memory 0 sbits bbits 1 6 kx W a ylin e s (1M B ) bytes b =5 A re s s : T a g In e x offs s =1 4 W a y 0 W a y 1 1 4 5 irect-mappe Set inex 1 Fully associatie Tipicamente com 4 ou 8 ways. Reúne as antagens a irect-mappe e fully associatie. M u x = = M u x E n c o e r M u x M u x = = M u x H it / M is s b lo c k 10
Política e substituição por Miss Direct-mappe Não tem. É sempre a mesma linha a cache Set associatie Sem aliate Escolher linhas azias em ez e ocupaas. Só no arranque? Sem irty As linhas não alteraas poem ser remoias. Será justo? Least-Frequently-Use (LFU) Escolher a linha usaa menos ezes. Dese quano? Least-Recently-Use (LRU) Escolher a usaa há mais tempo. Como implementar? Ranom Escolher aleatoriamente tem custo reuzio. 11
Estratégia e write Write-through O bloco é escrito quano a linha for alteraa. A escrita o bloco é realizaa em paralelo. Não usa bit irty. Tempo e miss reuzio. A memória é usaa urante mais tempo. Mais conflitos no acesso por DMA. Write-back O bloco só é escrito quano a linha for escolhia para substituição. Necessita bit irty. Tempo e Miss mais eleao. Minimiza a utilização a memória. Menos conflitos no acesso por DMA. 1