Fundamentos da Arquitetura de Computadores Memria Cache Prof.
Andr Renato 1 Semestre / 2012
Slide 2
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;
Slide 3
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;
Slide 4
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.
Slide 5
Memria Cache
Slide 6
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;
Slide 7
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;
Slide 8
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;
Slide 9
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....
Slide 10
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;
Slide 11
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.
Slide 12
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?
Slide 13
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.
Slide 14
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.
Slide 15
Memria Cache
Slide 16
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.
Slide 17
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%?
Slide 18
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.
Slide 19
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.
Slide 20
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;
Slide 21
Memria Cache CPU L1 L2 L3 MP
Slide 22
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....
Slide 23
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.
Slide 24
Memria Cache Bloco com 4 clulas Bloco com 8 clulas
Slide 25
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?
Slide 26
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 0tagClula 1Clula 2Clula 3
Linhas (quadros)
Slide 27
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;
Slide 28
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.
Slide 29
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;
Slide 30
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
tagblocos MP
Slide 31
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.
Slide 32
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.
Slide 33
Memria Cache tagblocos MP
Slide 34
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.
Slide 35
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
Slide 36
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
Slide 37
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
Slide 38
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.
Slide 39
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
Slide 40
Memria Cache O tamanho do tag ser: Bits = log 2 (64K) = 16
bits, pois 2 16 = 64K.
Slide 41
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.
Slide 42
Memria Cache 16 bits10 bits6 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
Slide 43
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
Slide 44
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.
Slide 45
Memria Cache tag quadro Quadro 1Quadro 0Quadro 2Quadro 3 Quadro
5Quadro 4Quadro 6Quadro 7 Quadro 9Quadro 8Quadro 10Quadro 11 Quadro
13Quadro 12Quadro 14Quadro 15 Linha 0 Linha 1 Linha 2 Linha 3
Slide 46
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.
Slide 47
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
Slide 48
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;
Slide 49
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?
Slide 50
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?
Slide 51
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).
Slide 52
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.
Slide 53
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.
Slide 54
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.