Vous êtes sur la page 1sur 55

Fundamentos da Arquitetura

de Computadores
Memria Cache
Prof. Andr
Renato
1 Semestre /
2012
Memria Cache
Vamos revisar alguns pontos
importantes:
O principal uso dos sistemas
computacionais para execuo de
programas;
A velocidade do processador bem maior
do que a da memria principal;
O processador precisa de dados da
memria para realizar operaes;
Na maior parte do tempo, o processador
fica ocioso, esperando o dado chegar da
memria;
Memria Cache
Para que meu sistema computacional
possa melhorar de desempenho
preciso tratar o ponto que est sendo
o gargalo do processamento;
Se eu entender como funciona a
execuo de um programa e como o
acesso memria, eu vou conseguir
melhorar o desempenho;
Memria Cache
O que acontece com um programa
qualquer (Word, por exemplo) aps
ser iniciado pelo usurio?

O estudo do fluxo de execuo dos
programas mostrou que eles podem
ser divididos e executados por partes.
Memria Cache
Memria Cache
Assim, os programas costumam
executar um pequeno grupo de
instrues vrias vezes em diversos
momentos;
Foi elaborado ento o princpio da
localidade como forma de ajudar na
melhoria do desempenho de
execuo dos programas;
Memria Cache
O princpio da localidade uma
tentativa de prever qual ser a
demanda futura da CPU por
instrues do programa que esto na
memria principal;
Ele divido em duas partes:
localidade espacial e localidade
temporal;
Memria Cache
A localidade espacial baseada em
uma das principais estruturas de
controle de fluxo: a sequncia;
muito comum que um programa
seja composto por diversos comandos
que devem ser executado um aps o
outro;
Memria Cache
Na hora da compilao, estes
comandos so transformados em
instrues de mquina que ficam
prximas entre si;

Assim, se um programa precisa de
uma instruo que est na clula X da
memria, muito provvel que em
breve ele precise da instruo que
est na clula X+1, X+2, X+3....
Memria Cache
Sendo comum que um grupo de
instrues seja executado mais
frequentemente que os demais, bem
provvel que aps executar uma
instruo T, em breve, o programa
execute a instruo T novamente;
Memria Cache
Como tirar proveito do princpio da
localidade?
O projetista do sistema vai criar um
elemento de memria intermedirio
entre CPU/MP, chamado de memria
cache.
Memria Cache
Ele deve ter elevada velocidade e ser
grande o suficiente para guardar
partes do programa, aproveitando ao
mximo o princpio da localidade e
pequena o suficiente para no elevar
muito o custo do sistema.

Como vai funcionar o sistema?

Memria Cache
1) Sempre que a CPU precisar de um
informao (dado ou instruo), ela
acessa a memria cache.
2) Se a informao estiver l,
chamado de acerto de cache (cache
hit) e ela transmitida em velocidade
compatvel com a CPU.
Memria Cache
3) Se a informao no estiver,
chamado de falha de cache (cache
miss). A informao ento pedida
MP e enviada para a CPU.
No entanto, no s a informao pedida
MP, mas tambm as informaes
subsequentes, pressupondo que estas
sero solicitadas mais tardes princpio
da localidade espacial.
Memria Cache
Memria Cache
O desempenho do sistema s vai
aumentar se a quantidade de hits for
bem maior do que a quantidade de
misses.
Isto necessrio pois quando ocorre
um miss h um gasto extra de tempo
para trazer o conjunto de informaes
da MP para a cache e depois enviar
para a CPU a informao inicialmente
solicitada por ela.
Memria Cache
Estudos mostram que o ndice de
acertos (hit rate) deve ser de 80% a
99%;
Ou seja, em pelo menos 80% dos
casos, a CPU consegue encontrar a
informao na memria cache;

A taxa de acerto pode chegar a
100%?
Memria Cache
Tipos de memria cache:
A mais usual a cache de MP;
Existe tambm a cache de disco: nela a
cache funciona de maneira idntica em
relao aos dados que so buscado no
disco, porm utilizada uma parte da MP
para fazer as vezes de cache do disco.
Memria Cache
Cache em mltiplos nveis:
Os projetistas desenvolveram vrios tipos
de cache de MP, com caractersticas de
velocidade e capacidade de
armazenamento diferente, formando uma
verdadeira hierarquia de memrias
cache;
So utilizadas memrias SRAM;
As caches so divididas em nveis, sendo
os primeiros nveis mais prximos da
CPU.
Memria Cache
Cache nvel 1 (L1): sempre localizada
no interior do processador, muito
rpida, pouca capacidade;
Cache nvel 2 (L2): localizada na
placa-me. Atualmente os
processadores j trazem consigo a L2
dentro do mesmo chip;
Cache nvel 3 (L3): existe apenas
para poucos processadores,
normalmente externa ao chip;
Memria Cache
CPU
L1
L2
L3
MP
Memria Cache
Como a memria cache no poder
ter o mesmo tamanho da MP, surge
uma questo?
Onde colocar os dados que chegam
para serem armazenados at que a
CPU precise deles?
O endereo da MP no serve mais
como referncia direta....
Memria Cache
preciso fazer uma associao entre
os endereos da MP e as linhas da
memria cache para que seja possvel
procurar por um informao l.
Em primeiro lugar, necessrio
lembrar que a informao pedida pela
cache MP vem em blocos.
Logo, a MP deve ser dividida no
mais em clulas, mas em blocos de
clulas.
Memria Cache
Bloco com 4 clulas
Bloco com 8 clulas
Memria Cache
Mapeamento associativo:
Neste modelo, cada bloco da MP pode
estar em qualquer uma das linhas da
cache, pois no h uma posio pr-
definida;
Por exemplo, o bloco 147 pode estar na
linha 35 da cache. Em uma outra vez, ele
pode estar na linha 102.
Como saber qual bloco est em cada
uma das linhas da cache?
Memria Cache
preciso guardar em cada linha, alm
das informaes provenientes da MP,
uma marcao (tag) informando o
nmero do bloco que est ocupando
aquela linha.
Clula 0 tag Clula 1 Clula 2 Clula 3
Linhas
(quadros)
Memria Cache
Quando a CPU pede uma informao
atravs de um endereo de MP, este
endereo dividido em duas partes:
A primeira parte indica em qual bloco est
a informao desejada;
A segunda parte indica qual a clula
procurada dentro do bloco;
Memria Cache
O dispositivo que controla a cache
verifica se em alguma das linhas
existe um tag idntico ao nmero do
bloco pedido pela CPU;
Se existir, a clula solicitada obtida da
linha da cache e entregue CPU;
Se no existir, a cache pega o bloco todo
da MP e coloca-o em alguma linha que
esteja disponvel. Depois repassa CPU
a clula pedida.
Memria Cache
Mapeamento direto:
Neste modelo, cada bloco da MP pode
aparecer em apenas uma nica linha da
cache;
Em outras palavras, existe um
posicionamento prvio de onde cada
bloco pode estar;
Se o bloco no estiver na linha
correspondente, ele no estar em mais
lugar algum da cache;
Memria Cache
Imagine, por simplificao, que a
cache possui apenas duas linhas;
Blocos de nmeros pares s podero
estar na linha 0 da cache, enquanto
blocos mpares s podero estar na
linha 1
tag blocos
MP
Memria Cache
Para o que serve a tag?
Para identificar qual dos blocos pares (ou
mpares) est ocupando aquela linha da
cache.
Vrios blocos podem ocupar a mesma
linha da cache, mas um mesmo bloco ou
est na linha especfica para ele ou no
est na cache.
Por isto, esta tcnica chamada de
mapeamento direto.
Memria Cache
Na prtica, os linhas da cache no
esto designadas a apenas linhas
pares e mpares.
Existiro vrios grupos de blocos
dependendo da quantidade de linhas
da cache.
Memria Cache
tag blocos
MP
Memria Cache
Como calcular tudo isso?

Primeiro, preciso lembrar que a
funo da cache usar bem o
princpio da localidade.
Desta forma, as clulas da memria
sero dividas em blocos.


Memria Cache
Se a memria tem MP bytes e cada
bloco ser composto por B bytes, a
quantidade de blocos QB ser:

QB = MP/B
Memria Cache
Se a memria cache tem L linhas, isto
significa que os blocos sero divididos
em L grupos distintos.
A quantida de blocos por grupo BG
ser:

BG = QB/L
Memria Cache
A quantidade de bits que a tag precisa
ter vai depender apenas da
quantidade de blocos por grupo (BG).

Bits = log
2
BG
Memria Cache
Vamos a um exemplo prtico:

A memria principal de um
computador possui 4Gbytes. A cache
possui 1024 linhas, podendo
armazenar 64 bytes de dados em
cada linha.

A quantidade de blocos 4G/64 =
64M blocos.
Memria Cache
Como h 64M blocos ao todo na
memria e existem 1024 linhas de
cache, cada linha poder conter 64k
blocos (um de cada vez), pois:

BG = QB/L
BG = 64M/1024 = 64K
Memria Cache
O tamanho do tag ser:

Bits = log
2
(64K) = 16 bits,
pois 2
16
= 64K.
Memria Cache
Nesse sistema, um endereo de
memria ser composto por 32 bits,
pois 2
32
= 4G.
Quando a CPU pedir um dado na
memria atravs de um endereo
assim, como a cache saber se tem o
dado ou no?

O endereo precisa ser dividido em
pedaos para ser analisado.
Memria Cache
16 bits 10 bits 6 bits
Indica em qual das
linhas da cache pode
estar o dado buscado
Indica o nmero
especfico do bloco a
ser buscado na linha
da cache
Indica qual das
clulas dentro do
bloco a
requerida pela
CPU
Memria Cache
Vamos imaginar que a CPU pediu
cache abaixo o dado atravs do
endereo 0000000000001010
0010010010 001001
34 144
78 145
10 146
31 147
123 148
90 149
Memria Cache
Mapeamento associativo por conjuntos:
Esta tcnica uma mistura das duas
anteriores:
Agora, cada linha da cache pode conter mais
de um bloco.
O que vai acontecer que diversos blocos
(conjuntos) podem estar relacionados com a
mesma linha.
Quando a linha for descoberta, ser preciso
ainda analisar cada conjunto de blocos para
saber se o bloco requerido est ou no na
cache.
Memria Cache
tag
quadro
Quadro 1 Quadro 0 Quadro 2 Quadro 3
Quadro 5 Quadro 4 Quadro 6 Quadro 7
Quadro 9 Quadro 8 Quadro 10 Quadro 11
Quadro 13 Quadro 12 Quadro 14 Quadro 15
Linha 0
Linha 1
Linha 2
Linha 3
Memria Cache
Para a cache funcionar corretamente
ainda necessrio pensar no que
acontece se a cache estiver cheia,
ou seja, se for preciso trazer um dado
da MP e colocar em uma linha da
cache que j tenha um dado
posicionado.
Isto depende da tcnica escolhida:
No mapeamento direto, o novo dado s
pode ocupar um nico lugar. Logo, o
dado antigo dever ser substitudo.
Memria Cache
No mapeamento associativo e no
associativo por conjunto, ser
necessrio escolher um bloco para
ser retirado.
Existem alguns critrios:
LRU (least recently used) o controlador
da cache escolhe o bloco que foi utilizado
h mais tempo. Este critrio tem por base
o princpio da localida temporal
Memria Cache
Fila o sistema escolhe para ser retirado,
o bloco que foi colocado primeiro na
cache, independente do uso dele;
LFU (least frenquently used) o sistema
escolhe o bloco que foi menos utilizado
(acessado);
Escolha aleatria: um bloco qualquer
escolhido independente de outros
critrios;
Memria Cache
Um ltimo ponto precisa ser levado
em considerao:
Estivemos sempre preocupados em como
fazer para obter (ler) um dado da cache e
repassar para a CPU;
A memria, como vimos algumas vezes,
permite que se faam dois tipos de
operaes: leitura e escrita;
Quando a CPU precisar gravar um novo
dado na MP, como isso acontecer?
Memria Cache
Se o dado for salvo diretamente, sem
passar pela cache, haver um
problema de consistncia:
Como assim?

Se o dado for salvo apenas na cache,
tambm poder haver problemas.
Qual a soluo?
Memria Cache
Devemos levar em considerao dois
fatores:
A MP pode ser acessada tanto pela CPU
quanto por componentes E/S. Um dado
pode ter sido alterado na cache e no na
MP (desatualizada). Um componente E/S
pode ter alterado o dado diretamente na
MP e no na cache (desatualizada).
Memria Cache
Uma mesma MP pode ser acessada por
diversas CPUs, cada uma contendo sua
prpria cache. A alterao feita em uma
cache deve ser refletida na MP e,
consequentemente, nas demais caches.

Existem alguma tcnicas conhecidas
para estes problemas.
Memria Cache
Escrita em ambas (write through):
Cada escrita em uma palavra da cache
resulta na escrita da palavra
correspondente da MP. Se houver outras
cache, elas tambm sero alteradas;

Escrita somente no retorno (write
back):
No faz atualizao simultnea, mas
somente quando o bloco for retirado da
cache e se ele tiver sido alterado.
Memria Cache
Escrita uma nica vez (write once):
O bloco da MP atualizado quando o
bloco da cache for alterado pela primeira
vez. Os demais componentes so
alertados de que houve uma alterao e
so impedidos de usar o dado. Outras
alteraes ocorrem apenas na cache e a
MP s atualizada quando o bloco sair
da cache.
Exerccio

Vous aimerez peut-être aussi