Sei sulla pagina 1di 55

Memria Cache

Princpio da Localidade
Apenas uma parte relativamente pequena do
espao de endereamento dos programas
acessada em um instante qualquer
Localidade Temporal
Um item referenciado tende a ser referenciado
novamente dentro de um espao de tempo curto

Localidade Espacial
Se um item referenciado, itens cujos endereos
sejam prximos ao dele tendem a ser logo
referenciados

Localidade em Programas
Localidade temporal:
Em funo de sua estrutura, as instrues e dados
da maioria dos programas tendem a ser acessados
de maneira repetitiva

Localidade espacial:
As instrues so acessadas quase sempre de
maneira seqencial
Elementos de arrays ou registros

Nveis de Memria - 01
Dados sempre copiados entre nveis de memria
adjacentes
Anlise focada apenas em dois nveis, um superior
e um inferior

Bloco:
Unidade mnima de informao trocada entre
nveis

Nveis de Memria - 02
Processador

Dados transferidos

Taxa/Razo de Acertos
Mede desempenho da Hierarquia
Acerto:
Informao solicitada pelo processador encontra-se no
nvel superior
Taxa de acerto: frao de acessos com acerto

Falta:

Informao solicitada pelo processador no se


encontrada no nvel superior
Nvel inferior acessado em busca do bloco.

Taxa de faltas = (1 taxa de acerto)

Tempo de Acerto e Penalidade por Faltas


Determinam a eficincia da implementao de
uma hierarquia de memria
Tempo de acerto tempo para acesso ao nvel
superior, incluindo o tempo para determinar o
acerto ou falta
Penalidade por falta tempo para a substituio
dos blocos mais o tempo de envio da informao
ao processador
Tempo de acerto <<< penalidade por falta

Memria Cache
Originalmente, nvel da hierarquia de memria
situado entre o processador e a memria
principal
Termo estendido para qualquer memria
gerenciada de modo a tirar vantagem da
localidade de acesso

Caractersticas - 01
Diminui o gargalo existente entre processador e
memria principal
Diferena de velocidade

5 a 10 vezes mais rpidas que a memria


principal
Ligada diretamente MP

10

Caractersticas - 02
Tecnologia semelhante da CPU e, em
conseqncia, possui tempos de acesso
compatveis com a mesma, resultando numa
considervel reduo da espera da CPU para
receber dados e instrues da cache

11

Nveis De Cache - 01
L1 Level 1 (nvel 1)
Dentro do processador
Mesma velocidade do processador
L2 Level 2 (nvel 2)
Dentro do invlucro, fora do chip
Metade da velocidade do processador
L3 Level 3 (nvel 3)
Cache externa, situada na placa me

12

Nveis De Cache - 02
Invlucro do processador
Processador
Cache L2
Cache L1

Memria
principal

13

Diviso da Cache L1
A cache L1 geralmente dividida em cache de
dados e cache de instrues: processamento
mais rpido
processador
dados

instrues

Cache L1

14

Localidade
Devido ao princpio da localidade, interessante
que a memria cache armazene o pedao do
programa que executado repetidas vezes,
deixando o restante do programa que no est
sendo utilizado na memria principal

15

Utilizao da Cache - 01
Sempre que o processador vai buscar uma nova
instruo (ou dado), ele acessa a memria cache:
Se a instruo estiver na cache (acerto ou hit), ela
transferida em alta velocidade para o processador
Se a instruo no estiver na cache (falta ou miss), a
execuo do programa interrompida e a instruo
desejada transferida da MP para a MC

16

Utilizao da Cache - 02
No feita a transferncia somente da instruo,
mas sim de um bloco que, segundo o princpio
da localidade, contm instrues que sero
usadas em seguida

17

controlador
de cache

Processador

Memria
principal

Cache
Palavra
(instruo
ou dado)

Bloco
de palavras

18

Elementos de Projetos de uma


Cache
Funo de mapeamento MP/MC
Algoritmos de substituio de dados na cache
Polticas de escrita

19

Funo de Mapeamento
A funo de mapeamento indica quais blocos da
MP esto presentes na cache e onde eles esto
localizados na cache
A MC e MP esto divididas em blocos de x
palavras
A MC pode conter m blocos (linhas)
A MP pode conter b blocos

20

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

Diviso da MP de 4G bytes
em blocos de 64 bytes ento
tem-se 226 blocos de 64 bytes

21

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
rtulo

...

Byte 1

Byte 0

Linha 1023

Diviso da MC de 64K bytes em


linhas de 64 bytes ento tem-se
1024 linhas de 64 bytes

22

Mapeamento Direto - 01
Cada bloco da MP tem uma linha de cache
previamente definida para ser armazenado
Muitos blocos iro ser destinados a uma mesma
linha

23

B0

.
.
.

Byte 0
Byte 1

tag

Byte 63

B1

.
.
.

Byte 0
Byte 1

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
.
.
.

26

-1

.
.
.

Bloco 1023
Byte 0
Byte 1

Byte 63

Byte 63

24

Mapeamento Direto - 02
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

25

Mapeamento Direto - 03
Cada endereo de MP pode ser dividido nos
seguintes elementos:
32 bits
Nmero do bloco
Nmero da linha
na linha
16 bits
216= 64K blocos

10 bits
210= 1024 linhas

Nmero do byte

6 bits
26= 64 bytes

26

Mapeamento Direto - 04
Exemplo:
O processador manda para a MC o seguinte
endereo:
00000000000001000000011001001000
4

25

27

00000000000001000000011001001000
25

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

Byte 63
Byte 63

Tag ou
rtulo

Byte 8

...

Byte 1

Byte 0

Linha 25
Linha 1023

28

Mapeamento Direto - 05
Se o campo tag do endereo for igual ao campo
tag da linha da cache, o contedo do byte
solicitado enviado para o processador

29

Mapeamento Direto - 06
Se os campos tag forem diferentes, isso significa
que o bloco desejado no 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

30

Mapeamento Direto - 08
A tcnica de mapeamento direto simples e de
baixo custo
Desvantagem: fixao da localizao para os
blocos
Imagine se durante a execuo de um programa um
dado cdigo fizer referncias repetidas a palavras
situadas em blocos alocados na mesma linha, ento
haver necessidade de sucessivas idas MP para
substituio de blocos (muitas faltas) e queda no
desempenho do sistema

31

Mapeamento Associativo - 01
Os blocos no tm uma linha fixada previamente
para seu armazenamento
O bloco armazenado em uma linha que
selecionada de acordo com o algoritmo de
substituio de cache

32

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
.
.
.

26

-1

.
.
.

Byte 63
Byte 0
Byte 1

Byte 63

33

Mapeamento Associativo - 02
Cada linha da MC pode acomodar um dos 226
blocos da memria principal
O campo tag tem agora 26 bits de tamanho

34

Mapeamento Associativo - 03
Cada endereo de MP dividido nos
seguintes elementos:
32 bits

Nmero do bloco

Nmero do byte

26 bits
226 blocos

6 bits
26 bytes

35

Mapeamento Associativo - 04
Quando o processador realiza um acesso
memria, o campo bloco do endereo
comparado com todos os 1024 tags da cache
para verificar se o bloco est ou no presente

36

Mapeamento Associativo - 05
Se o bloco estiver presente, o byte transferido
para a CPU seno o endereo do bloco usado
para buscar na memria principal o bloco
ausente

37

Mapeamento Associativo - 06
Desvantagem: teste do campo bloco do endereo
de memria com todos os tags da cache

38

Mapeamento Associativo por


Conjunto de N Posies - 01
Esquema intermedirio entre o direto e o
totalmente associativo
Nmero fixo de posies onde um bloco pode ser
armazenado na cache
Cache associativa de n posies:
n posies possveis para cada bloco
Cache com conjuntos de n posies
Blocos mapeados diretamente em um conjunto e
colocado em qualquer elemento do conjunto

39

Bits de Validade
Quando o processador inicializado, a cache
est vazia e os rtulos no tm significado
Bits de validade so adicionados cache para
identificar se um bloco tem informaes vlidas
Bit igual a zero -> Informao invlida

40

Tratamento de Faltas 01
Atividades do controle principal:
Parar o processador
Congelar o contedo dos registradores

Um controle separado trata as faltas:

Busca a informao necessria na memria


Atualiza a informao na cache

Execuo retomada no ciclo gerador da falta

41

Tratamento de Faltas 02
1. Enviar memria o valor original de PC
2. Comandar uma leitura da unidade de memria e
esperar o resultado
3. Escrever o resultado da leitura na entrada da
cache, seu rtulo e bit de validade
4. Reiniciar a execuo da instruo no passo 1

42

Parada em Uso
Tcnica para reduo do nmero de ciclos
parados pela falta no acesso cache
Baseia-se no processamento de outras instrues
durante o tratamento de faltas
Na falta produzidas pelo acesso a dados novas
instrues que no dependem do dado podem ser
executadas
No ajuda para faltas no acesso a instrues

Geralmente, no mostra ganhos expressivos pela


dependncia do dado sendo acessado

43

Algoritmos De
Substituio De Cache - 01
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
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
no com freqncia pela CPU

44

Algoritmos De
Substituio De Cache - 02
LFU (Least Frenquently Used): o controlador de
cache escolhe o bloco que tem tido menos acessos
(menos referncias) por parte da CPU
Escolha aleatria

45

Polticas de Escrita pela Memria


Cache - 01
Quando o processador realiza uma operao de
escrita, esta acorre imediatamente na cache
A memria cache uma memria intermediria
logo necessrio que a MP seja atualizada para
que o sistema mantenha sua correo e
integridade

46

Antes da execuo
da instruo X = Y + Z

Memria 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

47

Depois da execuo
da instruo X = Y + Z

Memria 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

48

Processador

Processador

Processador
X=Y+Z

Cache
X=1

Cache
X=1

cache
X=9

X=9

MP

X=9

X=1

X=9

49

Polticas de Escrita pela Memria


Cache - 02
O bloco 4 (o valor de X) precisa ser atualizado na
memria
Quando?
Depende da poltica de escrita

50

Write Through - 01
Cada escrita em uma palavra da cache acarreta
em uma escrita na palavra correspondente na
MP, assegurando validade permanente e igual ao
contedo de ambas as memrias
Caso haja outras CPUs, estas alteraro tambm
suas caches

51

Write Through - 02
Simples, mas no favorece o desempenho
Qualquer escrita faz com que a informao seja
escrita tambm na memria principal
Aumento do nmero de ciclos de clock

Buffer de escrita:
Armazena o dado enquanto este aguarda sua escrita na
memria
Reduz o problema das escritas na mem. principal
Buffer cheio Processador parado em escritas

52

Write Through - 03
Faltas de escrita:
Processador simplesmente atualiza a memria
principal, como antes
No ocorrem leituras da memria principal
durante a escrita pelo processador

53

Write Back

Quando ocorre uma escrita, o novo


valor escrito apenas no bloco da cache
O bloco s ser escrito na memria
principal quando ele precisar ser
substitudo na cache

Pode melhorar muito o desempenho,


porm mais complexo que o writethrough

54

Tamanho do Bloco 01
Relaciona-se com a explorao da localidade
espacial e desempenho
Em geral, a taxa de faltas cai com o aumento
do tamanho do bloco

55

Tamanho do Bloco 02
Taxa de faltas pode crescer se o bloco
representar uma frao considervel do tamanho
da cache
Pequeno nmero de blocos -> Alta competio
Blocos retirados da cache sem muita explorao

Potrebbero piacerti anche