Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de...

55
Memória Cache

Transcript of Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de...

Page 1: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Memória Cache

Page 2: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Princípio da Localidade•Apenas uma parte relativamente

pequena do espaço de endereçamento dos programas é acessada em um instante qualquer▫Localidade Temporal

Um item referenciado tende a ser referenciado novamente dentro de um espaço de tempo curto

▫Localidade Espacial Se um item é referenciado, itens cujos

endereços sejam próximos ao dele tendem a ser logo referenciados

2

Page 3: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Localidade em Programas•Localidade temporal:

▫Em função de sua estrutura, as instruções e dados da maioria dos programas tendem a ser acessados de maneira repetitiva

•Localidade espacial:▫As instruções são acessadas quase sempre

de maneira seqüencial Elementos de arrays ou registros

3

Page 4: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Níveis de Memória - 01•Dados sempre copiados entre níveis de

memória adjacentes▫Análise focada apenas em dois níveis, um

superior e um inferior•Bloco:

▫Unidade mínima de informação trocada entre níveis

4

Page 5: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Níveis de Memória - 02

5

Processador

Dados transferidos

Page 6: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Taxa/Razão de Acertos•Mede desempenho da Hierarquia•Acerto:

▫Informação solicitada pelo processador encontra-se no nível superior

▫Taxa de acerto: fração de acessos com acerto•Falta:

▫Informação solicitada pelo processador não se encontrada no nível superior Nível inferior acessado em busca do bloco.

▫Taxa de faltas = (1 – taxa de acerto)

6

Page 7: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Tempo de Acerto e Penalidade por Faltas

•Determinam a eficiência da implementação de uma hierarquia de memória▫Tempo de acerto – tempo para acesso ao

nível superior, incluindo o tempo para determinar o acerto ou falta

▫Penalidade por falta – tempo para a substituição dos blocos mais o tempo de envio da informação ao processador

▫Tempo de acerto <<< penalidade por falta

7

Page 8: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Memória Cache•Originalmente, nível da hierarquia de

memória situado entre o processador e a memória principal

•Termo estendido para qualquer memória gerenciada de modo a tirar vantagem da localidade de acesso

8

Page 9: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Características - 01•Diminui o gargalo existente entre

processador e memória principal▫Diferença de velocidade

•5 a 10 vezes mais rápidas que a memória principal

•Ligada diretamente à MP

9

Page 10: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Características - 02•Tecnologia semelhante à da CPU e, em

conseqüência, possui tempos de acesso compatíveis com a mesma, resultando numa considerável redução da espera da CPU para receber dados e instruções da cache

10

Page 11: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Níveis De Cache - 01• L1 – Level 1 (nível 1)

▫Dentro do processador▫Mesma velocidade do processador

• L2 – Level 2 (nível 2)▫Dentro do invólucro, fora do chip▫Metade da velocidade do processador

• L3 – Level 3 (nível 3)▫Cache externa, situada na placa mãe

11

Page 12: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Níveis De Cache - 02

12

Cache L1

ProcessadorCache L2 Memória

principal

Invólucro do processador

Page 13: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Divisão da Cache L1•A cache L1 é geralmente dividida em

cache de dados e cache de instruções: processamento mais rápido

13

dados

processador

instruções

Cache L1

Page 14: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Localidade•Devido ao princípio da localidade, é

interessante que a memória cache armazene o pedaço do programa que é executado repetidas vezes, deixando o restante do programa que não está sendo utilizado na memória principal

14

Page 15: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Utilização da Cache - 01•Sempre que o processador vai buscar uma

nova instrução (ou dado), ele acessa a memória cache:▫Se a instrução estiver na cache (acerto ou hit),

ela é transferida em alta velocidade para o processador

▫Se a instrução não estiver na cache (falta ou miss), a execução do programa é interrompida e a instrução desejada é transferida da MP para a MC

15

Page 16: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Utilização da Cache - 02•Não é feita a transferência somente da

instrução, mas sim de um bloco que, segundo o princípio da localidade, contém instruções que serão usadas em seguida

16

Page 17: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

17

Processador Cache

controlador de cache

Memóriaprincipal

Bloco de palavrasPalavra

(instruçãoou dado)

Page 18: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Elementos de Projetos de uma Cache•Função de mapeamento MP/MC•Algoritmos de substituição de dados na

cache•Políticas de escrita

18

Page 19: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Função de Mapeamento•A função de mapeamento indica quais

blocos da MP estão presentes na cache e onde eles estão localizados na cache▫A MC e MP estão divididas em blocos de x

palavras▫A MC pode conter m blocos (linhas)▫A MP pode conter b blocos

19

Page 20: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

20

.

.

.Bloco 0

Byte 0Byte 1

Byte 63

.

.

.

Byte 0Byte 1

Byte 63

Bloco 1

.

.

.

Byte 0Byte 1

Byte 63

Bloco 226 -1

.

.

.

MP

Divisão da MP de 4G bytes em blocos de 64 bytes então tem-se 226 blocos de 64 bytes

Page 21: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

21

Byte 0

Byte 0

Byte 0

Tag ou rótulo

MC

Byte 0

Byte 1

Byte 1

Byte 1

Byte 1

Byte 63

Byte 63

Byte 63

Byte 63 ...

...

...

...

.

.

.

Linha 0Linha 1Linha 2

Linha 1023

Divisão da MC de 64K bytes em linhas de 64 bytes então tem-se 1024 linhas de 64 bytes

Page 22: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 01•Cada bloco da MP tem uma linha de

cache previamente definida para ser armazenado

•Muitos blocos irão ser destinados a uma mesma linha

22

Page 23: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

23

.

.

.B 0

Byte 0Byte 1

Byte 63

.

.

.

Byte 0Byte 1

Byte 63

B 1

.

.

.

Byte 0Byte 1

Byte 63

B 226 -1

.

.

.

Byte 0

Byte 0

Byte 0

Byte 0

Byte 1

Byte 1

Byte 1

Byte 1

Byte 63

Byte 63

Byte 63

Byte 63 ...

...

...

...

.

.

.

Linha 0

Linha 1

Linha 2

Linha 1023

tag

Bloco 1023

Page 24: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 02•Cada linha da MC deverá acomodar 216

blocos ou 65536 blocos (um de cada vez)•O campo tag serve para identificar qual

bloco a linha está armazenando no momento

24

Page 25: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 03•Cada endereço de MP pode ser dividido

nos seguintes elementos:

25

Número do bloco na linha Número da linha Número do byte

16 bits216= 64K blocos

10 bits210= 1024 linhas

6 bits26= 64 bytes

32 bits

Page 26: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 04•Exemplo:

▫O processador manda para a MC o seguinte endereço:

26

00000000000001000000011001001000

4 25 8

Page 27: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

27

Byte 0

Byte 0

Byte 0

Tag ou rótulo

Byte 0

Byte 1

Byte 1

Byte 1

Byte 1

Byte 63

Byte 63

Byte 63

Byte 63 ...

...

...

... Linha 0Linha 1Linha 2

Linha 1023

00000000000001000000011001001000

4 25 8

Byte 0Byte 1Byte 63 Byte 84 Linha 25

Page 28: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 05•Se o campo tag do endereço for igual ao

campo tag da linha da cache, o conteúdo do byte solicitado é enviado para o processador

28

Page 29: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 06•Se os campos tag forem diferentes, isso

significa que o bloco desejado não se encontra na cache e, portanto, deve ser transferido da MP para a linha 25, substituindo o atual bloco para, em seguida, a palavra (o byte) requerida ser transferida para o processador pelo barramento de dados

29

Page 30: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Direto - 08•A técnica de mapeamento direto é simples

e de baixo custo•Desvantagem: fixação da localização para

os blocos▫Imagine se durante a execução de um

programa um dado código fizer referências repetidas a palavras situadas em blocos alocados na mesma linha, então haverá necessidade de sucessivas idas à MP para substituição de blocos (muitas faltas) e queda no desempenho do sistema

30

Page 31: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo - 01•Os blocos não têm uma linha fixada

previamente para seu armazenamento•O bloco é armazenado em uma linha que é

selecionada de acordo com o algoritmo de substituição de cache

31

Page 32: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

32

.

.

.B 0

Byte 0Byte 1

Byte 63

.

.

.

Byte 0Byte 1

Byte 63

B 1

.

.

.

Byte 0Byte 1

Byte 63

B 226 -1

.

.

.

Byte 0

Byte 0

Byte 0

Byte 0

Byte 1

Byte 1

Byte 1

Byte 1

Byte 63

Byte 63

Byte 63

Byte 63 ...

...

...

...

.

.

.

Linha 0

Linha 1

Linha 2

Linha 1023

tag

Page 33: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo - 02•Cada linha da MC pode acomodar um dos

226 blocos da memória principal•O campo tag tem agora 26 bits de

tamanho

33

Page 34: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo - 03•Cada endereço de MP é dividido nos

seguintes elementos:

34

Número do bloco Número do byte

26 bits226 blocos

6 bits26 bytes

32 bits

Page 35: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo - 04•Quando o processador realiza um acesso

à memória, o campo bloco do endereço é comparado com todos os 1024 tags da cache para verificar se o bloco está ou não presente

35

Page 36: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo - 05•Se o bloco estiver presente, o byte é

transferido para a CPU senão o endereço do bloco é usado para buscar na memória principal o bloco ausente

36

Page 37: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo - 06•Desvantagem: teste do campo bloco do

endereço de memória com todos os tags da cache

37

Page 38: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Mapeamento Associativo por Conjunto de N Posições - 01•Esquema intermediário entre o direto e o

totalmente associativo•Número fixo de posições onde um bloco

pode ser armazenado na cache•Cache associativa de n posições:

▫n posições possíveis para cada bloco▫Cache com conjuntos de n posições▫Blocos mapeados diretamente em um conjunto

e colocado em qualquer elemento do conjunto

38

Page 39: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Bits de Validade•Quando o processador é inicializado, a

cache está vazia e os rótulos não têm significado

•Bits de validade são adicionados à cache para identificar se um bloco tem informações válidas▫Bit igual a zero -> Informação inválida

39

Page 40: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Tratamento de Faltas – 01•Atividades do controle principal:

▫Parar o processador▫Congelar o conteúdo dos registradores

•Um controle separado trata as faltas:▫Busca a informação necessária na memória▫Atualiza a informação na cache

•Execução retomada no ciclo gerador da falta

40

Page 41: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Tratamento de Faltas – 021.Enviar à memória o valor original de PC2.Comandar uma leitura da unidade de

memória e esperar o resultado3.Escrever o resultado da leitura na

entrada da cache, seu rótulo e bit de validade

4.Reiniciar a execução da instrução no passo 1

41

Page 42: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Parada em Uso•Técnica para redução do número de ciclos

parados pela falta no acesso à cache•Baseia-se no processamento de outras

instruções durante o tratamento de faltas▫Na falta produzidas pelo acesso a dados novas

instruções que não dependem do dado podem ser executadas

▫Não ajuda para faltas no acesso a instruções•Geralmente, não mostra ganhos

expressivos pela dependência do dado sendo acessado

42

Page 43: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Algoritmos De Substituição De Cache - 01•Qual bloco atualmente armazenado na cache

deve ser retirado para dar lugar a um novo bloco que está sendo transferido?▫LRU (Least Recently Used): O controlador de

cache escolhe o bloco que está há mais tempo sem ser utilizado pela CPU

▫FIFO (First in first out): O controlador de cache escolhe o bloco que está armazenado há mais tempo na cache, independentemente de estar sendo usado ou não com freqüência pela CPU

43

Page 44: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Algoritmos De Substituição De Cache - 02

▫LFU (Least Frenquently Used): o controlador de cache escolhe o bloco que tem tido menos acessos (menos referências) por parte da CPU

▫Escolha aleatória

44

Page 45: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Políticas de Escrita pela Memória Cache - 01•Quando o processador realiza uma

operação de escrita, esta acorre imediatamente na cache

•A memória cache é uma memória intermediária logo é necessário que a MP seja atualizada para que o sistema mantenha sua correção e integridade

45

Page 46: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

46

Cache

Memória Principal

X = 1Y = 7Z = 2

X = Y + Z

X = 1Y = 7Z = 2

X = Y + Z

Bloco 4 Bloco 4

Processador

X = Y + Z

Antes da execução da instrução X = Y + Z

Page 47: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

47

Cache

Memória Principal

X = 9Y = 7Z = 2

X = Y + Z

X = 1Y = 7Z = 2

X = Y + Z

Bloco 4 Bloco 4

Processador

X = Y + Z

Depois da execução da instrução X = Y + Z

Page 48: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

48

Processador

CacheX = 1

Processador

CacheX = 1

ProcessadorX = Y + Z

cacheX = 9

MP X = 1

X = 9X = 9X = 9

Page 49: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Políticas de Escrita pela Memória Cache - 02•O bloco 4 (o valor de X) precisa ser

atualizado na memória•Quando?

▫Depende da política de escrita

49

Page 50: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Write Through - 01•Cada escrita em uma palavra da cache

acarreta em uma escrita na palavra correspondente na MP, assegurando validade permanente e igual ao conteúdo de ambas as memórias

•Caso haja outras CPUs, estas alterarão também suas caches

50

Page 51: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Write Through - 02•Simples, mas não favorece o desempenho•Qualquer escrita faz com que a informação

seja escrita também na memória principal▫Aumento do número de ciclos de clock

•Buffer de escrita:▫Armazena o dado enquanto este aguarda sua

escrita na memória▫Reduz o problema das escritas na mem. principal▫Buffer cheio – Processador parado em escritas

51

Page 52: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Write Through - 03•Faltas de escrita:

▫Processador simplesmente atualiza a memória principal, como antes

▫Não ocorrem leituras da memória principal durante a escrita pelo processador

52

Page 53: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Write Back•Quando ocorre uma escrita, o novo valor é escrito apenas no bloco da cache▫O bloco só será escrito na memória

principal quando ele precisar ser substituído na cache

•Pode melhorar muito o desempenho, porém é mais complexo que o write-through

53

Page 54: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Tamanho do Bloco – 01 •Relaciona-se com a exploração da

localidade espacial e desempenho•Em geral, a taxa de faltas cai com o

aumento do tamanho do bloco

54

Page 55: Memória Cache. Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer.

Tamanho do Bloco – 02•Taxa de faltas pode crescer se o bloco

representar uma fração considerável do tamanho da cache▫Pequeno número de blocos -> Alta

competição▫Blocos retirados da cache sem muita

exploração

55