tecnologia de mem ó ria/mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_mem.pdf · •...

70
Sistemas de Computação Tecnologia de memória/Memória cache

Upload: truongdiep

Post on 11-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Tecnologia de memória/Memória cache

Tecnologia de memória/Memória cache

Page 2: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

• Acesso Randômico:– “Randômico” é bom: tempo de acesso igual para todas localidades– DRAM: Dynamic Random Access Memory

• Alta densidade, baixa potência, barata (1x), lenta(10x)• Dynamic: precisa ser “refrescada” regularmente

– SRAM: Static Random Access Memory• Baixa densidade, alta potência, cara (100x), rápida (1x)• Static: conteúdo dura “para sempre”(até ter energia)

• Tecnologia de Acesso “Não-tão-randômica”:– Tempo de acesso varia de localidade para localidade– Exemplos: Disco, CDROM

Tecnologia para Memória

Page 3: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

• Tecnologia de Acesso Seqüencial: tempo de acesso proporcional à localidade (ex.,Fita)

• Tecnologia de acesso randômico:– Memória Principal: DRAMs + Caches: SRAMs

Tecnologia para Memória

Page 4: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Random-Access Memory (RAM)

• Características principais– Unidade básica de armazenamento é a célula (um bit por célula)– Vários chips RAM formam uma memória

• Static RAM (SRAM)– Cada célula armazena um bit com circuito de seis transistores– Retém valor enquanto estiver ligada– Relativamente menos sensível a ruídos– Mais rápida e cara que DRAM

• Dynamic RAM (DRAM)– Cada célula armazena um bit com capacitor e transistor– Valor tem que ser atualizado cada 10-100 ms– Sensível a ruídos– Mais lenta e barata que SRAM

Page 5: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

SRAM vs DRAM

Tran. Tempopor bit de acesso Persistente? Sensível? Custo Aplicações

SRAM 6 1X Sim Não 100x memórias cache

DRAM 1 10X Não Sim 1X memóriasprincipais

Page 6: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Organização convencional da DRAM

• d x w DRAM:– dw bits organizados como d supercélulas de tamanho w bits

colunas

linhas

0 1 2 3

0

1

2

3

Buffer de linha interno

16 x 8 DRAM chip

ender

dados

supercélula(2,1)

2 bits/

8 bits/

Controladorde

memória(para CPU)

Page 7: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Lendo supercélula (2,1) da DRAM

16 x 8 DRAM chip

colunas

linhas

RAS = 20 1 2 3

0

1

2

Buffer de linha interno

3

end

dados

2/

8/

Controladorde

memória

Page 8: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Lendo supercélula (2,1) de DRAM

colunas

linhas

0 1 2 3

0

1

2

3

Buffer de linha interno

16 x 8 DRAM chip

CAS = 1

end

dados

2/

8/

Controladorde

memória

supercélula (2,1)

supercélula (2,1)

Para CPU

Page 9: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Módulos de memória

: supercélula (i,j)

módulo de memóriade 64 MBconsistindo deoito 8Mx8 DRAMs

end (linha = i, col = j)

Controladorde memória

DRAM 7

DRAM 0

031 78151623243263 394047485556 0

bits0-7

bits8-15

bits16-23

bits24-31

bits32-39

bits40-47

bits48-55

bits56-63

64-bit doubleword

Page 10: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Enhanced DRAMs

• Dram aprimoradas derivam da DRAM básica– Fast page mode DRAM (FPM DRAM)

• Acesso a linha com [RAS, CAS, CAS, CAS, CAS] ao invés de [(RAS,CAS), (RAS,CAS), (RAS,CAS), (RAS,CAS)].

– Extended data out DRAM (EDO DRAM)• FPM DRAM melhorada

– Synchronous DRAM (SDRAM)• Trabalha com clock ao invés de ser assíncrona

– Double data-rate synchronous DRAM (DDR SDRAM)• Melhoria da SDRAM

– Video RAM (VRAM)• Semelhante à FPM DRAM• Dual ported (permite leituras e escritas concorrentes)

Page 11: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Memórias não voláteis

• DRAM e SRAM são voláteis, perdem informação quando desligadas

• Memórias não voláteis retêm valor mesmo desligadas– Nome genérico read-only memory (ROM), mas também podem ser

modificadas

• Tipos de ROMs– Programmable ROM (PROM)– Eraseable programmable ROM (EPROM)– Electrically eraseable PROM (EEPROM)– Flash memory

• Firmware– Programa armazenado em uma ROM

• Código de boot, BIOS (basic input/ouput system)• placas gráficas, controladores de disco

Page 12: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Estrutura típica de barramento conectando CPU e memória

• Um barramento é uma coleção de fios paralelos que carregam endereço, dados e sinais de controle

memóriaprincipal

Ponte de E/S

Interface debarramento

ALU

registradores

CPU

barramentodo

sistema barramento de memória

Page 13: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Geometria dos discos

• Um disco consiste de pratos, cada qual com duas superfícies

• Cada superfície consiste de anéis concêntricos denominados trilhas.

• Cada trilha consiste de setores separados por espaços.

eixo

superfícietrilhas

trilha k

setores

espaços

Page 14: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Discos com múltiplos pratos

• Trilhas alinhadas formam um cilindro

superfície 0superfície 1superfície 2superfície 3superfície 4superfície 5

cilindro k

eixo

prato 0

prato 1

prato 2

Page 15: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Capacidade do disco

• Capacidade: número máximo de bits que podem ser armazenados expresso em gigabytes (1 GB = 109)

• Fatores que determinam a capacidade– Densidade de gravação (bits/in): número de bits que podem ser gravados

em 1 polegada de uma trilha– Densidade de trilha(trilhas/in): número de trilhas que podem existir em um

segmento radial– Densidade de armazenamento (bits/in2): produto da densidade de gravação

com densidade de trilha

• Disco modernos particionam as trilhas em conjuntos disjuntos denominados zonas de armazenamento

– Cada trilha em uma zona possui o mesmo número de setores, determinado pela circunferência da trilha mais interna

– Cada zona possui um número diferente de setores/trilha

Page 16: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Calculando capacidade de disco

• Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x(# pratos/disco)

• Exemplo:– 512 bytes/setor– 300 setores/trilha (em média)– 20.000 trilhas/superfície– 2 superfícies/prato– 5 pratos/disco

• Capacidade = 512 x 300 x 20000 x 2 x 5= 30.720.000.000= 30,72 GB

Page 17: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Operação do disco

A superfície dodisco gira com uma velocidade de rotação constante

spindle

O braço pode posicionar acabeça sobre qualquer trilha através de um movimento radial

A cabeça de leitura/escritaestá ligada ao final do braçoe flutua sobre a superfíciedo disco em cima de umafina camada de ar

spindle

spindle

spin

dle

eixo

Page 18: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Operação de disco com múltiplos discos

braço

cabeças de leitura/escritase movem em conjuntode cilindro para cilindro

eixo

Page 19: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Tempo de acesso ao disco

• Tempo médio de acesso a um setor desejado:– Tacesso = Tmed procura + Tmed rotação + Tmed transferência

• Tempo de procura (Tmed procura)– Tempo para posicionar as cabeças no clindro que contém o setor desejado– Típico Tmed procura = 9 ms

• Latência rotacional (Tmed rotação)– Tempo de espera para que o primeiro bit do setor passe pela cabeça– Tmed rotação = 1/2 x 1/RPMs x 60 seg/1 min

• Tempo de transferência (Tmed transferência)– Tempo para ler os bits do setor – Tmed transferência = 1/RPM x 1/(med # setores/trilha) x 60 segs/1 min.

Page 20: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo

• Dados:– Velocidade de rotação= 7.200 RPM– Tempo médio de procura = 9 ms.– Med # setores/trilha = 400.

• Teremos:– Tmed rotação = 1/2 x (60 segs/7200 RPM) x 1000 ms/seg = 4 ms.– Tmed transferência = 60/7200 RPM x 1/400 segs/trilha x 1000 ms/seg =

0.02 ms– Tacesso = 9 ms + 4 ms + 0.02 ms

• Pontos importantes:– Tempo de acesso dominado pelo tempo de procura e latência rotacional– Tempo de acesso da SRAM é 4 ns/doubleword, DRAM por volta de 60 ns

• Disco é aprox. 40.000 vezes mais devagar que SRAM, e 2.500 vezes mais devagar que DRAM

Page 21: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Blocos lógicos

• Discos modernos apresentam uma visão abstrata mais simples da geometria complexa de setores:

– O conjunto de setores disponíveis é modelado como uma seqüência de blocos lógicos de tamanho b

• O mapeamento entre os blocos lógicos e físicos érealizado pelo hardware/firmware dos controladores de disco

• Permite que o controlador separe cilindros sobressalentes para cada zona

Page 22: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Barramento de E/S

memóriaprincipal

ponte de E/S

interface de barramento

ALU

registradoresCPU

barramentodo sistema

barramentode memória

controladorde disco

adaptadorgráfico

controlador USB

mouse teclado monitordisco

barramento de E/SSlots de expansãopara outros dispositivos tais como adaptadores de rede

Page 23: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Tendências de armazenamento

métrica 1980 1985 1990 1995 2000 2000:1980

$/MB 8,000 880 100 30 1 8,000acesso (ns) 375 200 100 70 60 6tam. típico(MB) 0.064 0.256 4 16 64 1,000

DRAM

métrica 1980 1985 1990 1995 2000 2000:1980

$/MB 19,200 2,900 320 256 100 190acesso (ns) 300 150 35 15 2 100

SRAM

métrica 1980 1985 1990 1995 2000 2000:1980

$/MB 500 100 8 0.30 0.05 10,000acesso (ms) 87 75 28 10 8 11tam. típico (MB) 1 10 160 1,000 9,000 9,000

Disco

Page 24: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Relógios de CPU

1980 1985 1990 1995 2000 2000:1980processador 8080 286 386 Pent P-IIIfreqüência (MHz) 1 6 20 150 750 750tempo de ciclo(ns) 1,000 166 50 6 1.6 750

Page 25: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

O gap memória-CPU

110

1001,000

10,000100,000

1,000,00010,000,000

100,000,000

1980 1985 1990 1995 2000

year

ns

Disk seek timeDRAM access timeSRAM access timeCPU cycle time

Page 26: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Princípio da localidade

• Programas tendem a reutilizar dados e instruções perto daqueles que foram utilizados recentemente

• Localidade temporal: Itens recentemente referenciados irão ser provavelmente referenciados em futuro próximo

• Localidade espacial: Itens com endereços próximos tendem a ser referenciados em instantes de tempo próximos

Page 27: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de localidade

Exemplo de localidade• Dados

– Acessar elementos em série (padrão de referência passo 1):

– Referência à sum em cada iteração:

• Instruções– Instruções executadas em

seqüência: – Passa pelo loop

repetidamente:

sum = 0;for (i = 0; i < n; i++)

sum += a[i];return sum;

Localidade espacial

Localidade espacial

Localidade temporal

Localidade temporal

Page 28: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de localidade

• Pergunta: A função abaixo tem boa localidade ?

int sumarrayrows(int a[M][N]){

int i, j, sum = 0;

for (i = 0; i < M; i++)for (j = 0; j < N; j++)

sum += a[i][j];return sum

}

Page 29: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de localidade

• E esta ?

int sumarraycols(int a[M][N]){

int i, j, sum = 0;

for (j = 0; j < N; j++)for (i = 0; i < M; i++)

sum += a[i][j];return sum

}

Page 30: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de localidade

• Pergunta: É possível trocar os loops abaixo de modo que a função acesse o array de 3 dimensões com um padrão de referência de passo 1 ?

int sumarray3d(int a[M][N][N]){

int i, j, k, sum = 0;

for (i = 0; i < M; i++)for (j = 0; j < N; j++)

for (k = 0; k < N; k++)sum += a[k][i][j];

return sum}

Page 31: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Hierarquia de memórias

• Algumas propriedades fundamentais e permanentes de hardware e software:

– Tecnologias rápidas para armazenamento custam mais por byte – O gap entre as velocidades de CPU e memória principal está

aumentando– Programas bem escritos tendem a ter boa localidade

• A partir destes fatores surge a idéia de organizar a memória e sistemas de armazenamento como uma hierarquia de memórias.

Page 32: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de hierarquia de memórias

Discos locais guardam arquivos obtidos de discos em servidoresremotos

Memória principal guarda blocos de disco obtidos de discos locais

regson-chip L1

cache (SRAM)

memória principal(DRAM)

armazenamento secundário local(discos locais)

Dispositivosmaiores,

mais lentos, e

mais baratos (por byte)

armazenamento secundário remoto(sistemas de arquivos distribuídos, servidores Web)

off-chip L2cache (SRAM)

Cache L1 guarda linhas de cache obtidas da cache L2

registradores da CPU guardam palavras obtidas da cache L1

Cache L2 guarda linhas de cache obtidas da memória principal

L0:

L1:

L2:

L3:

L4:

L5:

Dispositivosmenores,

mais rápidos,e

mais caros(por byte)

Page 33: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Caches

• Cache: Um dispositivo menor e mais rápido que age como uma plataforma de acesso para um subconjunto de dados de um dispositivo maior e mais lento

• Idéia fundamental:– Para cada k, o dispositivo mais rápido e menor no nível k serve

com uma cache para um dispositivo maior e mais lento no nível k+1

• Porque funciona ?– Programas tendem a acessar dados no nível k mais freqüentemente

que no nível k+1 – Então, o armazenamento em k+1 pode ser mais lento e portanto

maior e mais barato por bit– Resultado: Uma memória que custa tão barato quanto o

dispositivo mais barato, mas que fornece dados para programas emuma taxa perto do dispositivo mais rápido

Page 34: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Caching na hierarquia de memórias

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

Dispositivo maior, mais lento,mais barato do nível k+1 éparticionado em blocos

Dados são copiados entreníveis em blocos

8 9 14 3Dispositivo menor, mais rápido,mais caro no nível k armazenasubconjunto de blocos do nível k+1

Nível k:

Nível k+1: 4

4

4 10

10

10

Page 35: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Pede12

Conceitos gerais de caching

• Programa precisa do objeto d, que está armazenado em algum bloco b

• Acerto de cache (hit)– Programa encontra b na cache nível k. E.x.,

bloco 14.

• Falta de cache (miss)– b não está no nível k, então a cache do nível

k precisa pegar o bloco do nível k+1. Ex., bloco 12.

– Se a cache do nível k está cheia, então algum bloco corrente terá que sair para dar lugar ao novo. Quem será a vítima?

• Política de colocação: onde o novo bloco deve ir ? Ex., b mod 4

• Política de substituição: qual bloco deve sair ? Ex., LRU

9 3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

Nívelk:

Nível k+1:

1414

12

14

4*

4*12

12

0 1 2 3

Pede12

4*4*12

Page 36: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

• Acerto (hit): dado presente em algum bloco do nível mais alto (exemplo: Bloco X)

– Taxa de acertos: a fração de acessos à memória encontrados no nível mais alto– Tempo de acerto: Tempo para acessar nível mais alto que consiste de:

Tempo de acesso à memória + Tempo para determinar acerto

Terminologia para Hierarquia de Memória

Nível Mais BaixoMemóriaNível Mais Alto

MemóriaPara o Processador

Do ProcessadorBloco X

Bloco Y

Page 37: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

• Falta (miss): dado precisa ser recuperado de um bloco localizado em um nível mais baixo (Bloco Y)

– Taxa de faltas = 1 - (Taxa de acertos)– Penalidade por falta: Tempo para substituir um bloco de nível mais alto +

Tempo para enviar informação ao processador

• Tempo de acerto << Penalidade por falta (nível mais alto menor e com memória mais rápida)

Terminologia para Hierarquia de Memória

Nível Mais BaixoMemóriaNível Mais Alto

MemóriaPara o Processador

Do ProcessadorBloco X

Bloco Y

Page 38: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Conceitos gerais de caching

• Tipo de faltas:– Falta compulsória

• Ocorrem porque a cache está vazia.– Falta por conflito

• Ocorrem quando múltiplos objetos de dados são mapeados em um mesmo bloco no nível k

• E.g. Suponha que bloco i seja referenciado por i mod 4 no nível k, então as referências aos blocos 0, 8, 0, 8, 0, 8, ... sempre acarretarão faltas

– Falta por capacidade• Ocorrem quando o número de blocos ativos da cache é maior

que a capacidade da cache.

Page 39: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Memórias cache

• CPU procura por dados em L1, depois emL2 e finalmente na memória principal

memóriaprincipal

ponte E/S

interface debarramentoL2 cache

ALU

registradoresCPU

barramento decache

barramento de sistema

barramento dememória

L1 cache

Page 40: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Inserindo Cache L1 entre CPU e memória principal

a b c dbloco 10

p q r sbloco 21

...

...

w x y zbloco 30

...

A memória principal possui espaço para vários blocos de 4 palavras

A cache L1 tem espaço para dois blocos de 4 palavras

Os registradores da CPU possuem espaço para 4 palavras de 4 bytes

A unidade de transferência entre a cache e a memória principal é um bloco de 4 palavras(16 bytes).

A unidade de transferência entre os registradores da CPU e a cache é um bloco de 4 bytes.

linha 0linha 1

Page 41: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Organização geral da memória cache

• • • B–110

• • • B–110

valid

valid

tag

tagconj. 0:

B = 2b bytespor bloco de cache

E linhas por conjunto

S = 2s sets

t bits para tag por linha

1bit válidopor linha

Tamanho da cache: C = B x E x S bytes

• • •

• • • B–110

• • • B–110

valid

valid

tag

tagconj. 1: • • •

• • • B–110

• • • B–110

valid

valid

tag

tagconj. S-1: • • •

• • •

Page 42: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Endereçamento de cache

t bits s bits b bits

0m-1

<tag> <índ. conj.> <offset>

Endereço A:

• • • B–110

• • • B–110

v

v

tag

tagconj.0: • • •

• • • B–110

• • • B–110

v

v

tag

tagconj 1: • • •

• • • B–110

• • • B–110

v

v

tag

tagconj. S-1:

• • •

• • •

A palavra no endereço A está na cache se os bits de tag em uma das linhas válidasno conjunto <ind. conj.> são idênticosaos bits do campo <tag>.

O conteúdo da palavra começa no deslocamento de <offset> bytes a partir do início do bloco

Page 43: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Cache mapeada diretamente

• Forma mais simples

• Caracterizada por ter uma linha por conjunto

valid

valid

valid

tag

tag

tag

• • •

conj. 0:

conj. 1:

conj. S-1:

E=1 linha por conjuntobloco da cache

bloco da cache

bloco da cache

Page 44: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Accesso a caches mapeadas diretamente

• Seleção do conjunto feita pelos bits de índice de conjunto

conj. 0:

conj. 1:

conj. S-1:0

t bits s bits0 0 0 0 1

m-1

b bits

tag ind. conj offset

conj. selecionadovalid

valid

valid

tag

tag

tag

• • •

bloco da cache

bloco da cache

bloco da cache

Page 45: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Accesso a caches mapeadas diretamente

• Encontre uma linha válida no conjunto selecionado com campo tag idêntico a bits de tag e extrai a palavra desejada

1

t bits s bits100i0110

0m-1

b bits

tag ind. conj. offset

conj. (i) selecionado:

(3) Se (1) e (2), então acerto,e offset

selecionao byte inicial.

=1? (1) O bit válido tem que ser 1

= ?(2) Os bits de tags na linha

da cache tem que casarcom os bits de tag do

endereço

0110 w3w0 w1 w2

30 1 2 74 5 6

Page 46: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de cache mapeada diretamente

M=endereço de 16 bytes, B=2 bytes/bloco, S=4 conj., E=1 linha/conj.Acessos a endereços (leituras):0 [00002], 1 [00012], 13 [11012], 8 [10002], 0 [00002]

xt=1 s=2 b=1

xx x

1 0 m[1] m[0]v tag data

0 [00002] (miss)

(1)1 0 m[1] m[0]v tag data

1 1 m[13] m[12]

13 [11012] (miss)

(3)

1 1 m[9] m[8]

v tag data8 [10002] (miss)

(4)

1 0 m[1] m[0]v tag data

1 1 m[13] m[12]

0 [00002] (miss)

(5)

0 M[0-1]1

1 M[12-13]1

1 M[8-9]1

1 M[12-13]1

0 M[0-1]1

1 M[12-13]1

0 M[0-1]1

Page 47: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Porque utilizar bits do meio comoíndice?

Indexação por bits mais significativos

– Linhas de memória adjacentes podem ser mapeadas no mesmo lugar (mau uso da localidade espacial)

Indexação por bits do meio– Linhas consecutivas da memória

são mapeadas em linhas diferentes da cache

Cache de 4 linhas00011011

Mais significativos Meio0000000100100011010001010110011110001001101010111100110111101111

0000000100100011010001010110011110001001101010111100110111101111

Page 48: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Caches associativas por conjunto

• Caracterizadas por mais de uma linha no conjunto

valid tagconj. 0: E=2 linhas

por conj.

conj. 1:

conj. S-1:

• • •

bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

Page 49: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Acesso a caches associativas por conjuntos

• Seleção do conjunto é igual à memória mapeada diretamente

conj. 0:

conj. 1:

conj. S-1:

m-1

t bits s bits0 0 0 0 1

0

b bits

tag ìnd. conj. offset

Conj. selecionado

valid

valid

tag

tag

valid

valid

tag

tag

valid

valid

tag

tag

• • •

bloco de cache

bloco de cache

bloco de cache

bloco de cache

bloco de cache

bloco de cache

Page 50: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Acesso a caches associativas por conjunto

• Compara o tag de cada linha válida do conjunto selecionado

(3) Se (1) e (2), entãoacerto, e

offset seleciona byte inicial.

1 0110 w3w0 w1 w2

1 1001

t bits s bits100i0110

0m-1

b bits

tag ind. conj. offset

conj.(i) selecionado):

=1? (1) Bit válido deve ser 1.

= ?(2) Os bits de tag em

uma das linhas decache tem que casar com

bits de tag doendereço

30 1 2 74 5 6

Page 51: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Caches totalmente associativas

• Caracterizadas por um único conjunto conter todas as linhas

valid tag

conj. 0: E=C/B linhasem umúnico

conjunto• • •

bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

Page 52: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Acesso a caches totalmente associativas

• Conjunto 0 é sempre selecionado

m-1

t bits

0

b bits

tag offset

valid tag

conj. 0:

• • •

bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

valid tag bloco de cache

Page 53: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Acesso a caches totalmente associativas

• Compara tag do endereço com campo tag da cache

0

1

b bits

cacheinteira:

=1? (1) Bit válido deve ser 1.

= ?

(2) Os bits de tag emuma das linhas de

cache tem que casar com bits de tag do

endereço

30 1 2 74 5 6

0

1 w3w0 w1 w2

(3) Se (1) e (2), entãoacerto, e

offset seleciona byte inicial.

0110

1001

t bits

1001

0110

=?

m-1 0tag offset0110 100

Page 54: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Algoritmo de substituição de dados

• Consiste em determinar qual o bloco da memóriacache deve ser retirado para ceder lugar a outro por ocasião de uma falta

• No mapeamento direto não há opção!

• Nos demais mapeamentos …– LRU - Least Recently Used– FIFO - First In First Out– LFU - Least Frequently Used– Escolha aleatória (*)

Page 55: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Política de escrita I

• A escrita é sempre realizada na cache pela CPU.Quando deve ser realizada na memória principal?

• Problema: vários processos em várias CPU ou dispositivos de E/S podem acessar um mesmo bloco na MP

– valores diferentes para um mesmo dado!

• Políticas de escrita...– write through– write back– write once

Page 56: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Política de escrita II

• Escrita em ambas (write through)– Sempre que se escreve na cache, escreve-se na memória principal– Pode haver queda no desempenho

• Escrita somente no retorno (write back)– Escreve apenas quando o bloco é substituído: há bit de alteração– A memória principal pode ficar desatualizada (ex: E/S via DMA)

• Escrita uma vez (write once) – É utilizada quando há múltiplas CPUs– A CPU que primeiro alterar o bloco autaliza-o na memória local,

avisando às demais– As demais CPUs não utilizam mais o dado da cache– A atualização final ocorre na substituição

Page 57: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Caches multiníveis

• Caches para dados e instruções separadas oujuntas

tamanho:velocidade:$/Mbyte:tam. linha:

200 B3 ns

8 B

8-64 KB3 ns

32 B

128 MB DRAM60 ns$1.50/MB8 KB

30 GB8 ms$0.05/MB

maior, mais lenta, mais barata

MemóriaMemória

L1 d-cache

Regs

CacheL2

unificada

CacheL2

unificada

Processador

1-4MB SRAM6 ns$100/MB32 B

L1 i-cache

discodisco

Page 58: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Processor ChipProcessor Chip

Hierarquia do Pentium

L1 Data1 cycle latency

16 KB4-way assoc

Write-through32B lines

L1 Instruction16 KB, 4-way

32B lines

Regs. L2 Unified128KB--2 MB4-way assocWrite-back

Write allocate32B lines

L2 Unified128KB--2 MB4-way assocWrite-back

Write allocate32B lines

MainMemory

Up to 4GB

MainMemory

Up to 4GB

Page 59: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Características de código eficiente paracaching

• Referências repetidas a variáveis (localidadetemporal)

• Padrões de referência com passo 1 (localidade espacial)

Page 60: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de desempenho de código em relação a caching

• Cache inicialmente vazia, palavras de 4-bytes, blocos na cache de 4 palavras

int sumarrayrows(int a[M][N]){

int i, j, sum = 0;

for (i = 0; i < M; i++)for (j = 0; j < N; j++)

sum += a[i][j];return sum;

}

int sumarraycols(int a[M][N]){

int i, j, sum = 0;

for (j = 0; j < N; j++)for (i = 0; i < M; i++)

sum += a[i][j];return sum;

}

Taxa de falta = Taxa de falta = 1/4 = 25% 100%

Page 61: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Exemplo de multiplicação de matrizes

• Explore localidade temporal e mantenha o conj. de trabalho pequeno utilizando blocos

• Explore localidade espacial pelo tamanho do bloco

• Descrição:– Multiplique matrizes N x N – O(N3) operações no total– Acessos

• N leituras por elemento fonte• N valores somados para destino

/* ijk */for (i=0; i<n; i++) {

for (j=0; j<n; j++) {sum = 0.0;for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];c[i][j] = sum;

}}

/* ijk */for (i=0; i<n; i++) {

for (j=0; j<n; j++) {sum = 0.0;for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];c[i][j] = sum;

}}

Variável sumem registrador

Page 62: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Análise de falta em cache para multiplicação de matrizes

• Assuma:– Tamanho de linha = 32B (pode armazenar 4 64-bit palavras)– Dimensão N da matriz muito grande (1/N tende a 0.0)– Cache não tem capacidade para armazenar várias linhas

• Método de análise:– Veja o padrão de acesso do loop interno

CA

k

i

B

k

j

i

j

Page 63: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Arrays em C

• Arrays em C são alocados por linha em lugares adjacentes na memória

• Acesso a colunas em uma linha:– for (i = 0; i < N; i++)

sum += a[0][i];– acessa elementos sucessivos– se tamanho de bloco (B) > 4 bytes, explora localidade espacial

• taxa de falta compulsória = 4 bytes / B

• Acesso a linhas em uma coluna:– for (i = 0; i < n; i++)

sum += a[i][0];– acessa elementos distantes, não apresenta localidade espacial

• taxa compulsória de falta = 1 (i.e. 100%)

Page 64: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes (ijk)

/* ijk */for (i=0; i<n; i++) {

for (j=0; j<n; j++) {sum = 0.0;for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];c[i][j] = sum;

}}

/* ijk */for (i=0; i<n; i++) {

for (j=0; j<n; j++) {sum = 0.0;for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];c[i][j] = sum;

}}

A B C

(i,*)

(*,j)(i,j)

Loop interno:

ColunaLinha Fixo

• Faltas em cada iteração do loop interno:A B C

0.25 1.0 0.0

Page 65: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes (jik)

/* jik */for (j=0; j<n; j++) {

for (i=0; i<n; i++) {sum = 0.0;for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];c[i][j] = sum;

}}

/* jik */for (j=0; j<n; j++) {

for (i=0; i<n; i++) {sum = 0.0;for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];c[i][j] = sum;

}}

A B C

(i,*)

(*,j)(i,j)

Loop interno:

ColunaLinha Fixo

• Faltas em cada iteração do loop interno:A B C

0.25 1.0 0.0

Page 66: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes (kij)

/* kij */for (k=0; k<n; k++) {

for (i=0; i<n; i++) {r = a[i][k];for (j=0; j<n; j++)

c[i][j] += r * b[k][j];}

}

/* kij */for (k=0; k<n; k++) {

for (i=0; i<n; i++) {r = a[i][k];for (j=0; j<n; j++)

c[i][j] += r * b[k][j];}

}

Loop interno:

• Faltas em cada iteração do loop interno:A B C

0.0 0.25 0.25

A B C

(i,*)(i,k) (k,*)

Linha LinhaFixo

Page 67: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes (ikj)

/* ikj */for (i=0; i<n; i++) {

for (k=0; k<n; k++) {r = a[i][k];for (j=0; j<n; j++)

c[i][j] += r * b[k][j];}

}

/* ikj */for (i=0; i<n; i++) {

for (k=0; k<n; k++) {r = a[i][k];for (j=0; j<n; j++)

c[i][j] += r * b[k][j];}

}

A B C(i,*)

(i,k) (k,*)

Loop interno:

Linha LinhaFixo

• Faltas em cada iteração do loop interno:A B C

0.0 0.25 0.25

Page 68: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes (jki)

/* jki */for (j=0; j<n; j++) {

for (k=0; k<n; k++) {r = b[k][j];for (i=0; i<n; i++)

c[i][j] += a[i][k] * r;}

}

/* jki */for (j=0; j<n; j++) {

for (k=0; k<n; k++) {r = b[k][j];for (i=0; i<n; i++)

c[i][j] += a[i][k] * r;}

}

A B C

(*,j)(k,j)

Loop interno:

(*,k)

Coluna ColunaFixo• Faltas em cada iteração do loop interno:

A B C1.0 0.0 1.0

Page 69: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes (kji)

/* kji */for (k=0; k<n; k++) {

for (j=0; j<n; j++) {r = b[k][j];for (i=0; i<n; i++)

c[i][j] += a[i][k] * r;}

}

/* kji */for (k=0; k<n; k++) {

for (j=0; j<n; j++) {r = b[k][j];for (i=0; i<n; i++)

c[i][j] += a[i][k] * r;}

}

A B C

(*,j)(k,j)

Loop interno:

(*,k)

FixoColuna Coluna

• Falta em cada iteração do loop internoA B C

1.0 0.0 1.0

Page 70: Tecnologia de mem ó ria/Mem ó ria cache - ic.uff.brsimone/scminter/contaulas/9_MEM.pdf · • Tipos de ROMs – Programmable ROM ... – Cada trilha em uma zona possui o mesmo n

Sistemas de Computação

Multiplicação de matrizes

for (i=0; i<n; i++) {

for (j=0; j<n; j++) {

sum = 0.0;

for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];

c[i][j] = sum;

}

}

ijk (& jik):• 2 loads, 0 stores• faltas/iter = 1.25

for (k=0; k<n; k++) {

for (i=0; i<n; i++) {

r = a[i][k];

for (j=0; j<n; j++)

c[i][j] += r * b[k][j];

}

}

for (j=0; j<n; j++) {

for (k=0; k<n; k++) {

r = b[k][j];

for (i=0; i<n; i++)

c[i][j] += a[i][k] * r;

}

}

kij (& ikj):• 2 loads, 1 store• faltas/iter = 0.5

jki (& kji):• 2 loads, 1 store• faltas/iter = 2.0