Professional Documents
Culture Documents
Introduo
Informtica
Informtica
Alexandre
Alexandre
Meslin
Meslin
(
(
meslin
meslin
@
@
nce
nce
.ufrj.
.ufrj.
br
br
)
)
Organizao da Memria
Organizao da Memria
Conceito de hierarquia de memria
Conceito de hierarquia de memria
Mem
Mem
rias secund
rias secund
rias
rias
Projeto lgico da memria principal
Projeto lgico da memria principal
Mem
Mem
rias
rias
cache
cache
Mem
Mem
ria virtual
ria virtual
Conceito de Hierarquia de
Conceito de Hierarquia de
Memria
Memria
Memria no computador
Memria no computador
Registradores
Registradores
Memria principal
Memria principal
Memria
Memria
cache
cache
Memria ROM
Memria ROM
Discos magnticos
Discos magnticos
Discos pticos
Discos pticos
Fitas magnticas
Fitas magnticas
Memria
Memria
Cache
Cache
Na aula anterior,
Na aula anterior,
foi visto
foi visto
:
:
Memria
Memria
cache com
cache com
mapeamento direto
mapeamento direto
Conflito
Conflito
de
de
endereos na
endereos na
cache
cache
Cache
Cache
com Conjunto
com Conjunto
Associativo
Associativo
Semelhante ao mapeamento direto
Semelhante ao mapeamento direto
Bits mais baixos utilizados para selecionar linhas
Bits mais baixos utilizados para selecionar linhas
com conjuntos de 2, 4, 8
com conjuntos de 2, 4, 8
ou mais
ou mais
blocos
blocos
Parte alta do endereo utilizada para garantir que
Parte alta do endereo utilizada para garantir que
realmente houve um acerto
realmente houve um acerto
Cache com
Cache com
Conjunto
Conjunto
Associativo
Associativo
Assumindo que Assumindo que: :
Memria Memria cache tem 2 cache tem 2
k k
linhas linhas
Bloco Bloco com 2 com 2
m m
bytes bytes
p bits de p bits de barramento barramento de de endereo endereo
2 2
a a
conjuntos associativos conjuntos associativos
Bits mais baixos utilizados para selecionar a linha da Bits mais baixos utilizados para selecionar a linha da cache cache
Bits mais altos usados para comparar o endereo da linha Bits mais altos usados para comparar o endereo da linha
p-k+a-m m k-a
p bits
tag
Endereo da
linha do cache
Endereo
do byte
Cache
Cache
Associativo
Associativo
Cache com
Cache com
n
n
conjuntos associativos
conjuntos associativos
Cada linha
Cada linha
de cache
de cache
pode ter
pode ter
n
n
blocos
blocos
n
n
pode
pode
ser
ser
pequeno
pequeno
(2, 4, 8)
(2, 4, 8)
Melhor desempenho
Melhor desempenho
Custo moderado
Custo moderado
Cache
Cache
Associativo
Associativo
Como
Como
cada linha possui
cada linha possui
o
o
mesmo endereo
mesmo endereo
bsico
bsico
Para
Para
selecionar
selecionar
a
a
linha
linha
,
,
basta calcular
basta calcular
o
o
seu
seu
endere
endere
o
o
, com no
, com no
exemplo
exemplo
de
de
mapeamento
mapeamento
direto
direto
Dentro
Dentro
de
de
uma linha
uma linha
,
,
v
v
rios blocos
rios blocos
Para
Para
selecionar
selecionar
o
o
bloco
bloco
,
,
deve
deve
se
se
eleita uma
eleita uma
pol
pol
tica
tica
de
de
substitui
substitui
o
o
Poltica
Poltica
de
de
Substituio
Substituio
de
de
Bloco
Bloco
FIFO (First
FIFO (First
-
-
in, First
in, First
-
-
out):
out):
primeiro
primeiro
a
a
chegar
chegar
,
,
primeiro
primeiro
a
a
sair
sair
Se
Se
houver blocos vazios
houver blocos vazios
,
,
qualquer
qualquer
um
um
pode
pode
ser
ser
escolhido
escolhido
Se
Se
todos estiverem ocupados
todos estiverem ocupados
, o
, o
mais antigo deve sair
mais antigo deve sair
Poltica
Poltica
de
de
Substituio
Substituio
de
de
Bloco
Bloco
LRU (least recently used):
LRU (least recently used):
menos recentemente
menos recentemente
utilizado
utilizado
Se
Se
houver blocos vazios
houver blocos vazios
,
,
qualquer
qualquer
um
um
pode
pode
ser
ser
escolhido
escolhido
Se
Se
todos estiverem ocupados
todos estiverem ocupados
, o
, o
bloco que est
bloco que est
a
a
mais
mais
tempo
tempo
sem
sem
ser
ser
utilizado ser substituido
utilizado ser substituido
Cache com
Cache com
Conjunto
Conjunto
Associativo
Associativo
dado dado tags tags dado dado tags tags
p p- -k k- -m m k k
m m
CPU CPU
Exemplo
Exemplo
Supondo memria
Supondo memria
cache com:
cache com:
256 bytes
256 bytes
32 bytes /
32 bytes /
bloco
bloco
8
8
linhas
linhas
Mapeamento direto
Mapeamento direto
Barramento
Barramento
de
de
endereos
endereos
de 32 bits
de 32 bits
Palavra
Palavra
de dados de 32 bits
de dados de 32 bits
Exemplo
Exemplo
Comportamento
Comportamento
de um
de um
programa
programa
:
:
Supor
Supor
um
um
programa que inicie
programa que inicie
no
no
endereo
endereo
0
0
Muito provavelmente
Muito provavelmente
a
a
seqncia
seqncia
de
de
endereos
endereos
de
de
instrues ser
instrues ser
0, 4, 8, 12, 16, 20,
0, 4, 8, 12, 16, 20,
Inicialmente
Inicialmente
a cache
a cache
est toda vazia
est toda vazia
(bit de
(bit de
validade
validade
em
em
zero)
zero)
Exemplo
Exemplo
Estado inicial da
Estado inicial da
cache
cache
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da
Estado da
cache
cache
depois
depois
do
do
acesso
acesso
0 (
0 (
falha
falha
)
)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 4 (acerto)
Estado da cache depois do acesso 4 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 8 (acerto)
Estado da cache depois do acesso 8 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 12 (acerto)
Estado da cache depois do acesso 12 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 16 (acerto)
Estado da cache depois do acesso 16 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 20 (acerto)
Estado da cache depois do acesso 20 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 24 (acerto)
Estado da cache depois do acesso 24 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 28 (acerto)
Estado da cache depois do acesso 28 (acerto)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
0
0
Inst 0
Inst 0
28
28
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 32 (
Estado da cache depois do acesso 32 (
falha
falha
)
)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
32
32
Inst 32
Inst 32
60
60
1
1
0
0
Inst 0
Inst 0
32
32
Validade
Validade
Endereo
Endereo
Dado
Dado
Exemplo
Exemplo
Estado da cache depois do acesso 36 (acerto).
Estado da cache depois do acesso 36 (acerto).
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
32
32
Inst 32
Inst 32
60
60
1
1
0
0
Inst 0
Inst 0
32
32
Validade
Validade
Endereo
Endereo
Dado
Dado
Outro Exemplo
Outro Exemplo
Este mesmo sistema, agora somando duas
Este mesmo sistema, agora somando duas
matrizes
matrizes
Cada matriz ocupa 256 bytes de memria
Cada matriz ocupa 256 bytes de memria
Matriz 8x8 inteiros de 4 bytes
Matriz 8x8 inteiros de 4 bytes
Observe que a distncia entre as matrizes pode
Observe que a distncia entre as matrizes pode
ser mltipla do tamanho do cache
ser mltipla do tamanho do cache
Alto risco de haver conflito
Alto risco de haver conflito
Trecho do Programa
Trecho do Programa
-
-
Exemplo
Exemplo
Para i
Para i
0 at
0 at
7 fa
7 fa
a
a
Para j
Para j
1 at
1 at
7 fa
7 fa
a
a
a(i,j)
a(i,j)
b(i,j)+c(i,j)
b(i,j)+c(i,j)
fim para
fim para
fim para
fim para
Este programa ir gerar (alm de outros) acessos
Este programa ir gerar (alm de outros) acessos
a endereos com 256 bytes de diferena para
a endereos com 256 bytes de diferena para
acessar as matrizes b e c
acessar as matrizes b e c
Estado da Cache
Estado da Cache
No incio
No incio
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
Validade
Validade
Endereo
Endereo
Dado
Dado
Estado da Cache
Estado da Cache
Leitura do dado b(0, 0) (
Leitura do dado b(0, 0) (
falha
falha
)
)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
End b(0,0)
End b(0,0)
b(0,0)
b(0,0)
Validade
Validade
Endereo
Endereo
Dado
Dado
Estado da Cache
Estado da Cache
Leitura do dado c(0, 0) (
Leitura do dado c(0, 0) (
falha
falha
)
)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
End c(0,0)
End c(0,0)
c(0,0)
c(0,0)
Validade
Validade
Endereo
Endereo
Dado
Dado
Estado da Cache
Estado da Cache
Leitura do dado b(0, 1) (
Leitura do dado b(0, 1) (
falha
falha
)
)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
End b(0,1)
End b(0,1)
b(0,1)
b(0,1)
Validade
Validade
Endereo
Endereo
Dado
Dado
Estado da Cache
Estado da Cache
Leitura do dado c(0, 1) (
Leitura do dado c(0, 1) (
falha
falha
)
)
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
0
0
?
?
?
?
1
1
End c(0,1)
End c(0,1)
c(0,1)
c(0,1)
Validade
Validade
Endereo
Endereo
Dado
Dado
Cache com Conjunto
Cache com Conjunto
Associativo
Associativo
Mesmo sistema, mesmo programa, agora com
Mesmo sistema, mesmo programa, agora com
cache com conjunto associativo
cache com conjunto associativo
Supondo memria cache com:
Supondo memria cache com:
256 bytes
256 bytes
32 bytes / bloco
32 bytes / bloco
4 linhas
4 linhas
LRU
LRU
FIFO
FIFO
Necessita de muitos bits adicionais de estado (na
Necessita de muitos bits adicionais de estado (na
tag)
tag)
Custo de hardware muito alto
Custo de hardware muito alto
Muitos comparadores
Muitos comparadores
Write
Write
Through
Through
Write Through
Write Through
Write
Write
Back
Back
Write Back
Write Back
Se o
Se o
bloco for substitudo e a sua informao estiver
bloco for substitudo e a sua informao estiver
sido modificada, esta dever ser enviada para a
sido modificada, esta dever ser enviada para a
memria principal
memria principal
Outros Campos da Tag
Outros Campos da Tag
Bit de dirty (sujo)
Bit de dirty (sujo)
Utilizado para controlar o estado da memria
Utilizado para controlar o estado da memria
principal
principal
Coerente
Coerente
mem
mem
ria atualizada
ria atualizada
Incoerente
Incoerente
mem
mem
ria desatualizada
ria desatualizada
Caso a memria esteja incoerente, este bit
Caso a memria esteja incoerente, este bit
indicar que o bloco na cache est sujo
indicar que o bloco na cache est sujo
Em caso de substituio deste bloco, os dados
Em caso de substituio deste bloco, os dados
devero ser escritos na memria
devero ser escritos na memria
Poltica de Alocao
Poltica de Alocao
O que acontece em caso de falha de escrita em
O que acontece em caso de falha de escrita em
um cache write back?
um cache write back?
1.
1.
A informao pode ser lida da memria principal para
A informao pode ser lida da memria principal para
a cache e ento modificada
a cache e ento modificada
2.
2.
A escrita pode ser feita diretamente na memria
A escrita pode ser feita diretamente na memria
principal
principal
Write Back x Write Through
Write Back x Write Through
Qual o melhor?
Qual o melhor?
Write back
Write back