memória cache. princípio da localidade apenas uma parte relativamente pequena do espaço de...
TRANSCRIPT
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 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
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
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
Níveis de Memória - 02
5
Processador
Dados transferidos
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
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
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
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
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
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
Níveis De Cache - 02
12
Cache L1
ProcessadorCache L2 Memória
principal
Invólucro do processador
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
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
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
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
17
Processador Cache
controlador de cache
Memóriaprincipal
Bloco de palavrasPalavra
(instruçãoou dado)
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
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
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
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
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
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
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
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
Mapeamento Direto - 04•Exemplo:
▫O processador manda para a MC o seguinte endereço:
26
00000000000001000000011001001000
4 25 8
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
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
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
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
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
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
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
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
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
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
Mapeamento Associativo - 06•Desvantagem: teste do campo bloco do
endereço de memória com todos os tags da cache
37
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
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
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
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
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
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
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
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
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
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
48
Processador
CacheX = 1
Processador
CacheX = 1
ProcessadorX = Y + Z
cacheX = 9
MP X = 1
X = 9X = 9X = 9
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
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
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
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
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
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
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