Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula21 Slides
Aula21 Slides
Hierarquia de Memória
Lavinia Miranda
laviniameds@ufrn.edu.br
Conteúdo
1. Objetivos
2. Introdução
3. Hierarquia de Memória
4. Introdução à Memória Cache
5. Referências
2
Objetivos
➔ Explicar o que é e como funciona o sistema de memória dos computadores;
➔
➔ Mostrar a organização da hierarquia de memórias;
➔
➔ Introduzir conceitos de memória cache;
3
Introdução
➔ A memória é um local para armazenar informações
➔
➔ As operações possíveis da memória são a leitura e a
escrita das informações
➔
➔ As informações são representadas por um conjunto
de bits que possuem um endereço definido
➔
➔ Existem diferentes tipos de memórias que se
interligam formando um sistema de memórias
4
Introdução
➔ A necessidade é de memórias grandes e velozes
➔
➔ O que existe são tecnologias de memórias diferentes, onde quanto maior
(capacidade) e mais veloz, maior o custo ($) da memória
➔
➔ As memórias são distribuídas dentro da arquitetura do computador
➔
➔ A ideia principal é abstrair o sistema de memórias combinadas para que o
programador enxergue apenas uma memória grande e rápida
5
Introdução
6
Hierarquia de Memória
7
Hierarquia de Memória
8
Hierarquia de Memória
9
Hierarquia de Memória
10
Hierarquia de Memória
Custo e
Velocidade
Tempo de acesso e
Capacidade
11
Hierarquia de Memória
Velocidade: Muito alta
Custo: Muito alto
Capacidade: Muito baixa
Volátil: Sim
Velocidade: Alta
Custo: Médio
Capacidade: Alta
Volátil: Sim
Velocidade: Baixa
Custo: Muito baixo
Capacidade: Muito alta
Volátil: Não
12
Hierarquia de Memória
13
Exemplo
L1 L1 L1 L1
L2 L2 L2 L2
14
Exemplo
Memória Externa HD
15
Hierarquia de Memória
16
Hierarquia de Memória
Processamento dos dados
17
Hierarquia de Memória
Processamento dos dados
O processador não acessa
diretamente!
18
Hierarquia de Memória
ARMAZENAMENTO (HD/SSD)
MEMÓRIA CACHE
19
Funcionamento da Hierarquia
1. Acessa a cache buscando a informação
CPU (instrução ou dado).
2. Encontrou? (Cache hit!)
CACHE CACHE CACHE 2.1. Retorna a informação para execução
L1 L2 L3
3. Não encontrou? (Cache miss!)
3.1. Busca na próxima estrutura
MEMÓRIA
PRINCIPAL
3.2. Encontrou? Move o dado para a
estrutura acima e retorna ao passo 1.
E/S 4. Não encontrou na Cache nem na
Memória Principal?
ARMAZENAMENTO
4.1. Obtém pela E/S, Move para a Memória
Principal e retorna ao passo 1.
20
Como e por que isso funciona
na prática?
21
Princípio da Localidade
“Os programas acessam uma parte pequena do seu endereçamento em
qualquer instante de tempo”
➔ Localidade temporal: se um item foi referenciado, ele tenderá a ser
referenciado novamente em breve.
➔
➔ Localidade espacial: se um item é referenciado, os itens cujos endereços
estão próximos (seus vizinhos) tenderão a ser referenciados em breve.
22
Princípio da Localidade
“Os programas acessam uma parte pequena do seu endereçamento em
qualquer instante de tempo”
➔ Localidade temporal: se um item foi referenciado, ele tenderá a ser
referenciado novamente em breve.
◆ Exemplo: laços (loops).
➔
➔ Localidade espacial: se um item é referenciado, os itens cujos endereços
estão próximos (seus vizinhos) tenderão a ser referenciados em breve.
23
Princípio da Localidade
“Os programas acessam uma parte pequena do seu endereçamento em
qualquer instante de tempo”
➔ Localidade temporal: se um item foi referenciado, ele tenderá a ser
referenciado novamente em breve.
◆ Exemplo: laços (loops).
➔
➔ Localidade espacial: se um item é referenciado, os itens cujos endereços
estão próximos (seus vizinhos) tenderão a ser referenciados em breve.
◆ Exemplo: matrizes, vetores e outras estruturas.
24
Exemplo 1
int soma_linha(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;
}
25
Exemplo 1
int soma_linha(int a[M][N]) { 34 4 9 ..
int i, j, sum = 0;
for (i = 0; i < M; i++) 43 96 62 ..
for (j = 0; j < N; j++)
sum += a[i][j]; 461 65 723 ..
return sum;
} .. .. .. ..
26
Exemplo 1
int soma_linha(int a[M][N]) { 34 4 9 ..
int i, j, sum = 0;
for (i = 0; i < M; i++) 43 96 62 ..
for (j = 0; j < N; j++)
sum += a[i][j]; 461 65 723 ..
return sum;
} .. .. .. ..
27
Exemplo 1
int soma_linha(int a[M][N]) { 34 4 9 ..
int i, j, sum = 0;
for (i = 0; i < M; i++) 43 96 62 ..
for (j = 0; j < N; j++)
sum += a[i][j]; 461 65 723 ..
return sum;
} .. .. .. ..
28
Exemplo 1
int soma_linha(int a[M][N]) { 34 4 9 ..
int i, j, sum = 0;
for (i = 0; i < M; i++) 43 96 62 ..
for (j = 0; j < N; j++)
sum += a[i][j]; 461 65 723 ..
return sum;
} .. .. .. ..
29
Exemplo 1
int soma_linha(int a[M][N]) { 34 4 9 ..
int i, j, sum = 0;
for (i = 0; i < M; i++) 43 96 62 ..
for (j = 0; j < N; j++)
sum += a[i][j]; 461 65 723 ..
return sum;
} .. .. .. ..
30
Exemplo 1
..
34
int soma_linha(int a[M][N]) {
4
int i, j, sum = 0;
for (i = 0; i < M; i++) 9
for (j = 0; j < N; j++)
sum += a[i][j]; ..
return sum;
..
}
43
..
31
Exemplo 2
int soma_coluna(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;
}
32
Exemplo 2
..
34
int soma_coluna(int a[M][N]) {
4
int i, j, sum = 0;
for (j = 0; j < N; j++) 9
for (i = 0; i < M; i++)
sum += a[i][j]; ..
return sum;
..
}
43
..
33
Exemplo 2
..
34
int soma_coluna(int a[M][N]) {
4
int i, j, sum = 0;
for (j = 0; j < N; j++) 9
for (i = 0; i < M; i++)
sum += a[i][j]; ..
return sum;
..
}
43
..
34
Exemplo 2
..
34
int soma_coluna(int a[M][N]) {
4
int i, j, sum = 0;
for (j = 0; j < N; j++) 9
for (i = 0; i < M; i++)
sum += a[i][j]; ..
return sum;
..
}
43
..
35
Memória Cache
➔ É uma memória rápida e de pouca capacidade
➔
➔ Foi criada para reduzir o tempo de acesso à memória principal,
aproximando os dados/instruções do processador
➔
➔ Funciona de acordo com os conceitos de Localidade Temporal e Espacial
➔
➔ Armazena os itens (dados ou instruções) que são referenciados com
frequência em determinado momento
36
Cache HIT e MISS
➔ Quando a informação a ser buscada é encontrada na cache,
ocorre um Cache Hit
◆ A informação é retornada ao processador para ser executada.
➔
➔ Quando a informação a ser buscada não é encontrada cache,
ocorre um Cache Miss
◆ A informação é buscada na próxima estrutura da hierarquia
(Cache, Memória Principal ou Externa)
37
Cache HIT e MISS
➔ Taxa de hit (hit rate):
◆ % de hits ocorridos em relação ao total de acessos à memória.
➔ Taxa de miss (miss rate):
◆ % de miss ocorridos em relação ao total de acessos à memória.
➔ Tempo de hit (hit time):
◆ tempo para determinar se o acesso é um hit + tempo para
acessar e entregar o dado para a CPU.
➔ Penalidade de miss (miss penalty):
◆ tempo para determinar se o acesso é um miss + tempo para
substituir o dado + tempo para entregar o dado para a CPU
38
Terminologia
➔ Palavra: Unidade do sistema. Um dado que é solicitado pelo processador.
➔
➔ Bloco: Um conjunto de palavras dentro da memória.
➔
➔ Linha: Um conjunto de palavras dentro da cache. Todo sistema usa o
mesmo tamanho para blocos e linhas.
➔
➔ Tag: Identificador único de um bloco da memória. Utilizado para rotular a
linha da cache, associando a linha com o bloco que ocupa esse espaço.
39
Memória Cache
40
Memória Cache
41
Memória 0
Cache 2
3 6
4
10
5
3
MEMÓRIA
6
PRINCIPAL 2
7
7
8
9 CACHE
10
..
42
Próxima aula
➔ Detalhes de projeto da Memória Cache
43
Referências
➔ PATTERSON, D.A. & HENNESSY, J. L. Organização e Projeto de Computadores - A
Interface Hardware/Software. 5a ed.
➔ STALLINGS, William. Arquitetura e organização de computadores. 8. ed. São
Paulo: Pearson, 2010. 624 p. ISBN: 9788576055648
44