You are on page 1of 61

Arquitetura de Computadores

Aula 10
Carlos Andr Guerra Fonseca
Arquitetura de Computadores
Elementos do projeto da memria cache.
Elementos do projeto da memria
cache
Funo de mapeamento:
Como existem menos linhas de cache do que
blocos da memria principal, necessrio haver:
Um algoritmo para mapear os blocos da memria
principal s linhas de cache.
Um meio para determinar qual bloco da memria
principal ocupa uma linha da cache.
Tcnicas:
Mapeamento
conjunto.
direto, associativo e associativo em
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento direto:
Mapeia cada bloco da memria principal a apenas uma
linha de cache possvel.
Os primeiros blocos da memria principal mapeiam as
linhas da memria cache.
Os prximos blocos da memria principal mapeiam a cache
da mesma forma. O bloco

da memria principal mapeia a


linha
0
da cache, bloco
+1
mapeia a linha
1
, e assim
por diante.
b
.
t
.----
b
--
Primeiros blocos m
da memria principal
(igual ao tamanho da cache)
Memria cache
b =tamanho do bloco em bits
t =tamanho da tag em bits
(a) Mapeamento direto





Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento direto:
Para fins de acesso cache, cada endereo da memria
principal pode ser visto como consistindo em trs
campos:
Os bits menos significativos identificam uma palavra
dentro de um bloco da memria principal.
Os bits restantes especificam um dos 2

blocos da
memria
principal.
A lgica da cache interpreta esses bits como uma tag
de
bits.
Um campo de linha de bits.
O segundo campo identifica uma das = 2

linhas da cache.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento direto:
Linha de cache Blocos de memria principal
mapeados
0 0, m, 2m, ..., 2
s
-m
1 1, m+1, 2m+1, ..., 2
s
-m+1
... ...
m-1 m-1, 2m-1, 3m-1, ..., 2
s
-1
Figura 4.9 Organizao da memria com mapeamento direto


S + W
Memria Cache
Tag Dados Endereo de memria
s - r
I TO? I Linha I Palavra I
v r w
v
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
s - r ,
/
I
w,
x'
Compare
I
I
I
I
I
I
I
I
I
I
I
I
(Acerto na cache)


1se igual
ose diferente
Ose igual
1se diferente
(Falha na cache)
Memria principal
I l i}Bo
w
} Bj
I
I
I
I
I
I

e
I
I
- - - - _ J
I
,
I
I
I
I
I
I
I
e
I
I
I
I
I
I


e
I
I
I
I
I I
I I
Elementos do projeto da memria
cache
Funo de mapeamento:
Exemplo de mapeamento direto:
Uma cache pode manter 64 KBytes.
Os dados so transferidos entre a memria principal e a
cache em blocos de 4 bytes cada.
Logo a cache organizada como 16K linhas de 4 bytes cada.
16 = 2
14
portanto r = 14
A memria principal consiste em 16 MBytes, com cada
byte enderevel diretamente por um endereo de 24
bits (2
24
= 16 ).
Para fins de mapeamento pode-se considerar que a memria
principal consiste em 4 M blocos de 4 bytes cada.
Elementos do projeto da memria
cache
Funo de mapeamento:
Exemplo de mapeamento direto:
Faa uma tabela que mostre o mapeamento direto das
linhas de cache.
Linha de cache Endereo de memria inicial do
bloco
0 000000, 010000, ... FF0000
1 000004, 010004, ..., FF0004
... ...
2
14
-1 00FFFC, 01FFFC, ..., FFFFFC
Elementos do projeto da memria
cache
Funo de mapeamento:
Exemplo de mapeamento direto:
Memria Principal 16Mbytes
End. Principal: log
2
16M = 24bits
Memria Cache 16K palavras
End. Cache: log
2
16K = 14bits
Bits de Palavra de 4 bytes: 2 bits
Tag = End. Princ. (End. Cache + Bits Pal.)
24 (14 + 2) = 8bits


Tag Linha Palavra

Endereo da memria principal
8 bits 14 bits 2 bits
Elementos do projeto da memria
cache
Funo de mapeamento:
Exemplo de mapeamento direto:
Como a palavra de 4bytes, retiramos o rtulo e
dividimos por 4 e obtemos o endereo mapeado:
0000 / 4 = 0000
0004 / 4 = 0001
339C / 4 = 0CE7
FFFC / 4 = 3FFF
FFF8 / 4 = 3FFE
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento direto:
Vantagem:
Simples e pouco dispendiosa para implementar.
Desvantagem:
Existe um local de cache fixo para cada bloco.
Se um programa referenciar palavras repetidamente de dois
blocos diferentes, mapeados para a mesma linha, ento os
blocos sero continuamente trocados na cache, e a razo de
acerto ser baixa.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo:
Compensa a desvantagem do mapeamento direto,
permitindo que cada bloco da memria principal seja
carregado em qualquer linha da cache.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo:
A lgica de controle da cache interpreta um endereo
de memria como um campo Tag e um campo Palavra.
O campo Tag identifica o bloco da memria principal.
Para determinar se um bloco est na cache, a lgica de
controle da cache precisa comparar simultaneamente a
tag de cada linha.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo:
Considerando o exemplo anterior mas agora usando o
mapeamento associativo, um endereo da memria
principal consiste em uma tag de 22 bits e um nmero
do byte de 2 bits.
Endereo da memria principal
22 bits 2 bits

A tag de 22 bits precisa ser armazenada com o bloco de
dados de 32 bits para cada linha na cache.
Os 22 bits mais esquerda do endereo formam a tag.
Tag Palavra
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo:
O endereo hexadecimal de 24 bits 16339C tem a tag
de 22 bits 058CE7.
Endereo de memria 1 6 3 3 9 C (hexa)
0001 0110 0011 0011 1001 1100 (binrio)
0001 0110 0011 0011 1001 11 (binrio)
00 0101 1000 1100 1110 0111 (binrio)
0 5 8 C E 7
Tag (22 bits mais
esquerda)
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo:
Vantagem:
Existe flexibilidade em relao a qual bloco substituir quando
um novo bloco for lido para a cache.
Algoritmos de substituio so projetados para maximizar a
razo de acerto.
Desvantagem:
Complexidade do circuito necessrio para comparar as tags de
todas as linhas da cache em paralelo.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
um meio-termo que reala os pontos fortes das
tcnicas direta e associativa, enquanto reduz suas
desvantagens.
Um bloco

pode ser mapeado para qualquer uma das


linhas do conjunto .
Cada palavra mapeada para todas as linhas da cache em um
conjunto especfico: o bloco
0
da memria principal
mapeado no conjunto 0, e assim por diante.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
A cache associativa em conjunto pode ser
implementada fisicamente como:
caches associativas.
caches de mapeamento direto.
Cada cache mapeada diretamente conhecida como
uma via, consistindo em linhas.
As primeiras linhas da memria principal so
mapeadas diretamente nas linhas de cada via; o prximo
grupo de linhas da memria principal mapeado de modo
semelhante, e assim por diante.
Elementos do projeto da memria
cache
Funo de mapeamento, comparao:
Implementao mapeada diretamente:
Em geral usada para pequenos graus de
associatividade (valores pequenos de ).
Implementao com mapeamento associativo:
Normalmente usada para graus de associatividade
mais altos.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
A lgica de controle de cache interpreta um endereo
de memria como trs campos: Tag, Set e Palavra.
Os bits especificam um dos = 2

conjuntos.
Os bits dos campos Tag e Set especificam um dos 2

blocos da memria principal.
Elementos do projeto da memria
cache
Funo de mapeamento, comparao:
Mapeamento totalmente associativo:
A tag em um endereo de memria muito grande e
precisa ser comparada com a tag de cada linha da
cache.
Mapeamento associativo em conjunto com vias:
A tag em um endereo de memria muito menor e s
comparada
conjunto.
com as

tags dentro de um nico
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
Tamanho do endereo: + bits
Nmero de unidades endereveis: 2
+
bytes
Tamanho do bloco = tamanho da linha = 2

palavras ou
bytes
palavras ou
Nmero de blocos na memria principal:
2
+
2

=
2

Nmero de linhas no conjunto:

Nmero de conjuntos: = 2

Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
Nmero de linhas na cache: = = 2


Nmero de conjuntos: = 2


Tamanho da cache: 2
+
palavras ou bytes
Tamanho da tag: bits
No caso extremo de:
= , = 1, a tcnica associativa em conjunto se reduz
ao mapeamento direto.
= 1 = , a tcnica associativa em conjunto se reduz
ao mapeamento associativo.
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
Organizao associativa em conjunto mais comum:
Utiliza duas linhas por conjunto: =

, =
2
2
Melhora significativamente a razo de acerto em relao ao
mapeamento direto.
Associao em conjunto com 4 linhas por conjunto:
=

, =
4
4
Cria uma melhora adicional modesta por um custo adicional
relativamente pequeno.
Outros aumentos no nmero de linhas por conjunto
tm pouco efeito.
Elementos do projeto da memria
cache
Simulao da execuo de um compilador GCC
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
Considerando o exemplo anterior mas agora usando o
mapeamento associativo em conjunto, com duas linhas
em cada conjunto (2-way). Tem-se:
Memria Principal 16Mbytes
End. Principal: log
2
16M = 24bits
Memria Cache 16K palavras e Nmero de Conj. 2: 1 bit
End. Cache: log
2
16K n bits conj. = 14 1 = 13bits
Bits de Palavra de 4 bytes: 2 bits
Tag = End. Princ. (End. Cache + Bits Pal.)
24 (13 + 2) = 9bits
Elementos do projeto da memria
cache
Funo de mapeamento:
Mapeamento associativo em conjunto:
Como a palavra de 4bytes, retiramos o rtulo e
dividimos por 4 e obtemos o endereo mapeado:
0000 / 4 = 0000
0004 / 4 = 0001
339C / 4 = 0CE7
7FFC / 4 = 1FFF
7FF8 / 4 = 1FFE
Obs.: Valores em hexadecimal
Linha
Linha
Tag Tag
Elementos do projeto da memria
cache
Algoritmos de substituio:
Se a cache estiver cheia e um novo bloco for
trazido para a cache, um dos blocos precisa ser
substitudo.
Para o mapeamento direto existe apenas uma
linha possvel para qualquer bloco em particular.
substituio.
Para alcanar alta velocidade, tal algoritmo precisa ser
implementado em hardware.
Para as tcnicas associativa e associativa em
conjunto, necessrio um algoritmo de
Elementos do projeto da memria
cache
Algoritmos de substituio:
Usado menos recentemente (LRU):
Provavelmente o mais eficaz.
Substitua o bloco no conjunto que permaneceu na
cache por mais tempo sem qualquer referncia a ele.
facilmente implementado para associatividade em
conjunto com duas linhas por conjunto:
Cada linha inclui um bit USE.
Quando uma linha referenciada, seu bit USE definido
como 1, e o bit USE da outra linha nesse conjunto definido
como 0.
Quando um bloco tiver que ser lido para o conjunto, a linha
cujo bit USE for 0 utilizada.
Elementos do projeto da memria
cache
Algoritmos de substituio:
Usado menos recentemente (LRU):
Tambm relativamente fcil de implementar para
uma cache totalmente associativa:
O mecanismo de cache mantm uma lista separada de ndices
para todas as linhas na cache.
Quando uma linha referenciada, ela passa para a frente da
lista.
Para a substituio, a linha no final da lista utilizada.
Devido sua simplicidade de implementao, LRU o
algoritmo de substituio mais popular.
Elementos do projeto da memria
cache
Algoritmos de substituio:
Primeiro a entrar, primeiro a sair (FIFO):
Substitua o bloco no conjunto que esteve na cache por
mais tempo.
facilmente implementado como uma tcnica round-
robin ou de buffer circular.
Usado menos frequentemente (LFU):
Substitua aquele bloco no conjunto que teve menos
referncias.
Poderia ser implementado associando um contador a
cada linha.
Elementos do projeto da memria
cache
Algoritmos de substituio:
Escolher uma linha aleatria dentre as linhas
candidatas:
Tcnica no baseada no uso.
Estudos de simulao tm mostrado que a substituio
aleatria oferece um desempenho ligeiramente inferior
a um algoritmo baseado no uso.
Elementos do projeto da memria
cache
Poltica de escrita:
Quando um bloco que est na cache estiver para
ser substitudo, existem dois casos a considerar:
Se ele no tiver sido alterado:
Pode ser substitudo por um novo bloco sem atualizar o bloco
antigo.
Se pelo menos uma operao de escrita tiver sido
realizada em uma palavra nessa linha da cache:
A memria principal precisa ser atualizada escrevendo a linha
de cache no bloco de memria antes de trazer o novo bloco.
Elementos do projeto da memria
cache
Poltica de escrita:
Problemas a combater:
Quando mais de um dispositivo pode ter acesso
memria principal:
Exemplo: um mdulo de E/S pode ser capaz de ler-escrever
diretamente na memria.
Se o dispositivo de E/S tiver alterado a memria principal,
ento a palavra da cache invlida.
Se uma palavra tiver sido alterada apenas na cache, ento a
palavra correspondente da memria invlida.
Elementos do projeto da memria
cache
Poltica de escrita:
Problemas a combater:
Quando mltiplos processadores so conectados ao
mesmo barramento e cada processador tem sua
prpria cache local:
Se uma palavra for alterada em uma cache, ela possivelmente
poderia invalidar uma palavra em outras caches.
Elementos do projeto da memria
cache
Poltica de escrita:
Write-through:
Tcnica mais simples.
Todas as operaes de escrita so feitas na memria
principal e tambm na cache, garantindo que a
memria principal sempre seja vlida.
Qualquer outro mdulo processador-cache pode
monitorar o trfego para a memria principal para
manter a consistncia dentro de sua prpria cache.
Principal desvantagem:
Gera um trfego de memria considervel, podendo vir a ser
um gargalo.
Elementos do projeto da memria
cache
Poltica de escrita:
Write-back:
Tcnica alternativa.
Minimiza as escritas na memria.
As atualizaes so feitas apenas na cache.
Quando ocorre uma atualizao, um bit de
linha, modificao, ou bit de uso, associado
marcado.
Depois, quando um bloco substitudo, ele escrito de
volta na memria principal se, e somente se, o bit de
modificao estiver marcado.
Elementos do projeto da memria
cache
Poltica de escrita:
Write-back:
Problema:
Partes da memria principal podem ficar invlidas, portanto
os acessos pelos mdulos de E/S s podem ser permitidos
pela cache.
Isso exige circuitos complexos e gera um gargalo em potencial.
Elementos do projeto da memria
cache
Poltica de escrita:
Coerncia de cache:
Em uma organizao de barramento em que mais de
um processador tem uma cache e a memria principal
compartilhada:
Se os dados em uma cache forem alterados, isso invalida a
palavra correspondente na memria principal e em outras
caches que tiverem essa mesma palavra.
Mesmo utilizando uma poltica write-through as outras caches
podem conter dados invlidos.
Elementos do projeto da memria
cache
Poltica de escrita:
Tcnicas para manter a coerncia de cache:
Observao do barramento com write-through:
Cada controlador de cache monitora as linhas de endereo
para detectar as operaes de escrita para a memria por
outros mestres de barramento.
Se outro mestre escrever em um local na memria
compartilhada que tambm reside na memria cache, o
controlador de cache invalida essa entrada na cache.
Essa estratgia depende do uso de uma poltica write-through
por todos os controladores de cache.
Elementos do projeto da memria
cache
Poltica de escrita:
Tcnicas para manter a coerncia de cache:
Transparncia do hardware:
Um hardware adicional usado para garantir que todas as
atualizaes na memria principal por meio da cache sejam
refletidas em todas as caches.
Se um processador modificar uma palavra em sua cache, essa
atualizao escrita na memria principal e quaisquer
palavras correspondentes em outras caches so atualizadas.
Elementos do projeto da memria
cache
Poltica de escrita:
Tcnicas para manter a coerncia de cache:
Memria no cachevel:
Somente uma parte da memria principal compartilhada
por mais de um processador, e esta designada como no
mantida em cache.
Todos os acessos memria compartilhada so falhas de
cache, pois a memria compartilhada nunca copiada para a
cache.
A memria no mantida em cache pode ser identificada
usando lgica de seleo de chip ou bits mais significativos de
endereo alto.
Elementos do projeto da memria
cache
Tamanho da linha:
medida que o tamanho do bloco aumenta, de
tamanhos muito pequenos para maiores, a razo
de acerto a princpio aumentar.
A razo de acerto comea a diminuir quando o bloco se
torna ainda maior e a probabilidade de uso da
informao recm-trazida se torna menor que a
probabilidade de reutilizar as informaes que foram
substitudas.
Elementos do projeto da memria
cache
Tamanho da linha:
Blocos maiores reduzem o nmero de blocos que
cabem em uma cache.
Cada busca de bloco escreve sobre o contedo antigo
da cache.
Um nmero pequeno de blocos resulta em dados
sendo modificados pouco depois de serem buscados.
medida que o bloco se torna maior, cada palavra
adicional fica mais distante da palavra solicitada.
Portanto, tem menos probabilidade de ser necessria
no futuro prximo.
Elementos do projeto da memria
cache
Nmero de memrias caches:
Quando as memrias caches foram introduzidas, o
sistema de memria tpico tinha uma nica cache.
Hoje o uso de mltiplas caches comum.
medida que a densidade lgica aumenta, torna-
se possvel ter uma cache no mesmo chip que o
processador.
A cache no chip reduz a atividade do barramento
externo do processador, portanto, agiliza o tempo de
execuo e aumenta o desempenho geral do sistema.
Elementos do projeto da memria
cache
Nmero de memrias caches:
Quando a leitura dos dados so feitos na cache no
chip, no existe o acesso ao barramento.
Como os caminhos de dados internos ao processador
so curtos, os acessos cache no chip sero feitos mais
rpido que os ciclos de barramento.
Durante esse perodo, o barramento estar livre para
aceitar outras transferncias.
Elementos do projeto da memria
cache
Nmero de memrias caches:
A maior parte dos projetos contemporneos inclui
caches dentro e fora do chip.
A organizao mais simples a cache de dois nveis:
Cache interna ou nvel 1 (L1)
Cache externa ou nvel 2 (L2)
Motivo para incluir uma cache L2:
Normalmente quando ocorre uma falta na cache L1 o
dado est em L2, logo h um aumento de desempenho.
Elementos do projeto da memria
cache
Nmero de memrias caches:
Cache L2 fora do chip:
Para reduzir a carga sobre o barramento do sistema,
muitos projetos usam um caminho de dados separado
para transferncia entre a cache L2 e o processador.
Cache L2 no chip do processador:
Graas ao encolhimento contnuo dos componentes do
processador.
Desempenho melhor.
Elementos do projeto da memria
cache
Nmero de memrias caches:
Cache L3:
Originalmente era acessvel pelo barramento externo.
Atualmente a maioria dos microprocessadores possui
uma cache L3 no chip.
O uso de caches multinvel complica todas as
questes de projeto relacionadas
incluindo:
Tamanho;
Algoritmo de substituio;
Poltica de escrita.
a caches,
Elementos do projeto da memria
cache
Caches unificadas:
Inicialmente muitos dos projetos consistiam em
uma nica cache usada para armazenar
referncias a dados e instrues.
Vantagens:
Para determinado tamanho da cache, uma unificada
tem uma taxa de acerto mais alta que as caches
divididas, pois ela equilibra a carga entre buscas de
instruo e dados automaticamente.
Somente uma cache precisa ser projetada e
implementada.
Elementos do projeto da memria
cache
Caches separadas:
Atualmente comum dividir a cache em duas:
uma dedicada a instrues e uma a dados.
Essas duas caches existem no mesmo nvel,
normalmente como duas caches L1.
Quando o processador tenta buscar uma instruo da
memria principal, ele primeiro consulta a cache L1 de
instruo.
Quando o processador tenta buscar dados da memria
principal, ele primeiro consulta a cache L1 de dados.
Elementos do projeto da memria
cache
Caches separadas:
Vantagem:
Elimina a disputa pela cache entre
de instruo e
a unidade de
a unidade de busca/decodificao
execuo.
Isso importante em qualquer projeto que conta com o
pipeline de instrues.

You might also like