Apresentação do PowerPoint - DECOM-UFOP

Propaganda

Diminui
o
gargalo
existente
processador e memória principal;
entre
◦ Diferença de velocidade
5 a 10 vezes mais rápidas que a memória
principal;
 Ligada diretamente à MP;

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.
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;

 Pentium Pro, II, III, IV

L3 – Level 3 (nível 3)
◦ Cache externa, situada na placa mãe
 K6-3 da AMD;
Invólucro do processador
Processador
Cache L2
Cache L1
Memória
principal

A cache L1 é geralmente dividida em cache
de dados e cache de instruções:
processamento mais rápido
processador
dados
instruções
Cache L1
Processado Fabricante
r
Tamanho
486
Intel
8KB
C6
Cyrix
64KB
K5
AMD
24KB
K7
AMD
128KB
Pentium
16KB
Pentium MMX
32KB
Pentium Pro
Pentium III
Intel
16KB
32KB
Processado Fabricante
r
Tamanho
Celeron® D
Processor 365
IntelIntel
512KB L2
CCeleron® D
Processor 350
Intel
L2512KB
Core™ i73770T
Processor
Intel
8M, L1
Phenom™ II
AMD
512KB, L2

Pesquisas mostram que a execução dos
programas se realiza em pequenos grupos
de instruções;
◦ Localidade espacial;
◦ Localidade temporal;

Se um programa acessa uma palavra da
memória, há uma boa probabilidade de que
ele acesse, em seguida, uma palavra
adjacente;

Se um programa acessa uma palavra da
memória, há uma boa probabilidade de que
ele, em breve, acesse a mesma palavra
novamente;
Memória Principal
int F, N;
F = 1;
cin >> N;
If (N = = 0)
cout << “Fatorial de 0 é 1”;
else {
F = N;
while (N !=1){
F = F * (N-1);
N = N –1;
}
cout << “Fatorial de N é”, F;
}
Executado
na seqüência
Executado
na seqüência
loop

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.
 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;

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;
controlador
de cache
Processador
Memória
principal
Cache
Palavra
(instrução
ou dado)
Bloco
de palavras
Função de mapeamento MP/MC;
 Algoritmos de substituição de dados na
cache;
 Políticas de escrita;


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;
MP
Bloco 0
.
.
.
Byte 0
Byte 1
Byte 63
Bloco 1
.
.
.
Byte 0
Byte 1
Byte 63
.
.
.
Bloco
226 -1
.
.
.
Byte 0
Byte 1
Byte 63
Divisão da MP de 4G bytes
em blocos de 64 bytes
então tem-se 226 blocos
de 64 bytes
MC
Byte 63
...
Byte 1
Byte 0
Linha 0
Byte 63
...
Byte 1
Byte 0
Linha 1
Byte 63
...
.
.
.
Byte 1
Byte 0
Linha 2
Byte 63
Tag ou
rótulo
...
Byte 1
Byte 0
Linha 1023
Divisão da MC de 64K bytes
em linhas de 64 bytes então
tem-se 1024 linhas de 64
bytes
Cada bloco da MP tem uma linha de cache
previamente definida para ser armazenado;
 Muitos blocos irão ser destinados a uma
mesma linha;
 Exemplos:

◦ Pentium, K6, K7, Motorola 68030
B0
.
.
.
Byte 0
Byte 1
Byte 63
B1
.
.
.
Byte 0
Byte 1
tag
Byte 63
...
Byte 1 Byte 0 Linha 0
Byte 63
...
Byte 1 Byte 0 Linha 1
Byte 63
...
.
.
.
Byte 1 Byte 0 Linha 2
...
Byte 1 Byte 0 Linha 1023
Byte 63
.
.
.
B
2
26
-1
.
.
.
Bloco 1023
Byte 0
Byte 1
Byte 63
Byte 63
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 ;


Cada endereço de MP pode ser dividido nos
seguintes elementos:
32 bits
Número do bloco
Número da linhaNúmero da palavra
na linha
16 bits
10 bits
6 bits
216= 64K blocos 210= 1024 linhas 26= 64 palavras

Exemplo:
◦ O processador manda para a MC o seguinte
endereço:
00000000000001000000011001001000
4
25
8
00000000000001000000011001001000
25
4
Byte 63
...
Byte 1
Byte 0
Linha 0
Byte 63
...
Byte 1
Byte 0
Linha 1
Byte 63
...
Byte 1
Byte 0
Linha 2
Byte 1
Byte 0
Linha 25
Byte 63
4
Byte 63
Tag ou
rótulo
8
Byte 8
...
Byte 1
Byte 0
Linha 1023

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;

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;

Para buscar o bloco na MP é utilizado os 26
bits mais significativos do endereço pois 226
= 64M bytes
00000000000001000000011001
16 bits
10 bits
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;
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;

B0
.
.
.
Byte 0
Byte 1
Byte 63
B1
.
.
.
Byte 0
Byte 1
tag
Byte 63
...
Byte 1 Byte 0 Linha 0
Byte 63
...
Byte 1 Byte 0 Linha 1
Byte 63
...
.
.
.
Byte 1 Byte 0 Linha 2
...
Byte 1 Byte 0 Linha 1023
Byte 63
.
.
.
B
2
26
-1
.
.
.
Byte 63
Byte 0
Byte 1
Byte 63
Cada linha da MC pode acomodar um dos
226 blocos da memória principal;
 O
campo tag tem agora 26 bits de
tamanho;


Cada endereço de MP é dividido nos
seguintes elementos:
32 bits
Número do bloco
Número da palavra
26 bits
226 blocos
6 bits
26 palavras

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;

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;

Desvantagem: teste do campo bloco do
endereço de memória com todos os tags da
cache;
 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;
 Cache
com mapeamento direto:
(n. bloco) módulo (n. blocos na cache)
 Cache
associativa por conjunto:
(n. bloco) módulo (n. conjunto na cache)
 Se
um bloco puder ser alocado a
qualquer posição de um conjunto,
todos os elementos deverão ser
pesquisados

Considere três caches, cada qual com quatro
blocos de uma palavra
1. Mapeada diretamente
2. Associativa por conjunto com 2 posições
3. Totalmente associativa
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;
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;
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;
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;
Antes da execução
da instrução X = Y + Z
Memória Principal
Cache
Processador
X=1
Y=7
Z=2
X=Y+Z
X=1
Y=7
Z=2
X=Y+Z
X=Y+Z
Bloco 4
Bloco 4
Depois da execução
da instrução X = Y + Z
Memória Principal
Cache
Processador
X=1
Y=7
Z=2
X=Y+Z
X=9
Y=7
Z=2
X=Y+Z
X=Y+Z
Bloco 4
Bloco 4
Processador
Processador
Processador
X=Y+Z
Cache
X=1
Cache
X=1
cache
X=9
X=9
MP
X=9
X=1
X=9
O bloco 4 (o valor de X) precisa ser atualizado
na memória.
Quando?
•
Depende da política de escrita
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;
O bloco é atualizado na memória somente
quando for substituído e se ocorrer alteração;
Utilizados em ambiente com mais de um
processador;
O
controlador
de
cache
notifica
os
processadores sobre a modificação e atualiza
o bloco na memória;
Isto é feito somente quando o bloco é
modificado pela primeira vez;
Os processadores, sabendo da modificação,
impedem o uso do bloco modificado;
As
próximas
modificações
só
serão
modificadas na memória quando o bloco for
substituído;
Download