Evolução da arquitectura
básica
• Hierarquia de memória
• Caches
• Memória virtual
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
1
Tipos de memória
• A memória é fundamental nos computadores.
Infelizmente, o custo, capacidade e tempos de acesso
são factores incompatíveis (valores típicos):
Tipo
Tempo de
acesso
Capacidade
Custo/MB
Registo
0.5 ns
512 bytes
---
RAM estática
5 ns
128-512 KB
80 €
RAM
dinâmica
50 ns
128-512 MB
0.3 €
Disco
magnético
10
milisegundos
20-80 GB
0.005 €
Fita magnética
segundos
20-40 GB
0…
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
2
Hierarquia de memória
• Os computadores possuem uma
hierarquia de memória com vários níveis.
• O disco pode servir de cache à
informação em servidores.
• Os “mirrors” são servidores que actuam
como caches de outros.
Cache 32 KB
menor tempo de acesso
• A memória central (ou principal) pode
servir de cache do disco (memória
virtual)
registos
Cache nível 2
(RAM estática)
4 MB
Memória central
(RAM dinâmica)
2 GB
Disco
300 GB
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
maior capacidade, menor custo
• As caches têm cópias das células de
memória mais usadas e são de
funcionamento automático.
Processador
3
PEPE com caches
• As caches são pequenas memórias internas (mais rápidas
que a memória externa) que contêm os dados e instruções
mais usados (dão ao núcleo do processador a ilusão de
memórias separadas).
instruções
endereços
de instruções
Núcleo do
processador
dados
dados
endereços
de dados
Cache de
instruções
endereços
Interface
de
memória
Cache de
dados
dados/instruções
Memória
principal
(dados e
instruções)
WR
RD
Processador
José Delgado, Rui
Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
4
Princípios de funcionamento
das caches
• Felizmente, os programas acedem à memória com:
– Localidade temporal. Se um endereço for acedido agora, há uma
grande probabilidade de ser acedido no futuro próximo (ciclos,
rotinas de invocação frequente, dados importantes);
– Localidade espacial. Se um endereço for acedido, a
probabilidade de os próximos acessos serem em endereços
próximos é grande (execução sequencial, ciclos, arrays cujos
dados são acedidos sequencialmente).
• Assim, a cache só tem as células de memória mais
frequentemente acedidas.
• Pode ser mais pequena que a memória completa, logo
muito mais rápida sem o custo ser muito elevado.
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
5
Acesso às caches
Terminologia
• Quando se acede a um determinado endereço:
– Se a célula com esse endereço estiver na cache, o acesso é
muito rápido (cache hit); hit time é o tempo necessário para tal.
– Se não estiver, dá-se um cache miss. Tem de se ir à memória
principal, carregar essa célula na cache e repetir o acesso.
Neste caso, o tempo necessário para trazer essa célula para a
cache e disponibilizá-la ao processador é o miss penalty.
• O desempenho das caches é normalmente medido pelo
hit rate (percentagem média dos acessos com cache
hit, tipicamente superiores a 95%)
• Também se pode falar na miss rate (percentagem
média dos acessos com cache miss = 1 – hit rate),
tipicamente inferior a 5%.
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
6
Desempenho das caches
• Quanto maior a cache face à memória principal, maior
o hit rate.
• Tem um impacto grande no desempenho, mas também
no custo (os Celerons, mais baratos, são Pentiums com
metade da cache)
• Supondo:
– Tempo de acesso da cache: 5 ns
– Tempo de acesso da memória principal: 50 ns
– Hit rate média: 95%
• Então, o tempo de acesso médio será:
0.95 * 5 ns + 0.05 * 55 ns = 7. 5 ns
• Ou seja, 50 ns/7.5 ns = 6.7 vezes mais rápido do que
se só tivessemos a memória principal
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
7
Questões básicas das caches
1. Como saber se a célula com um dado endereço está
na cache? (é ou não um cache hit?)
2. Quando não está (cache miss) e é preciso ir buscá-la
à memória principal, em que sítio da cache se
coloca?
3. Quando a cache encher (o seu tamanho é limitado),
a única forma de ir buscar uma nova célula é
substituir uma das que estão na cache. Qual?
4. O que fazer para actualizar a memória principal
quando o processador faz um acesso em escrita na
cache?
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
8
Caches de mapeamento directo
6 bits
etiqueta
endereço
válido etiqueta
11
10
01
00
•
•
1
0
0
0
1
0
1
2 bits
índice
memória
1111 0111
1111 0110
1111 0101
1111 0100
1111 0011
1111 0010
1111 0001
1111 0000
dados
000001
000001
111101
111100
cache
Cada célula da cache só pode ter
uma das células de memória que
tenham o mesmo índice
A etiqueta identifica o resto do
endereço (distinguindo entre
células com o mesmo índice)
José Delgado, Rui Rocha © 2010
...
...
0000 0111
0000 0110
0000 0101
0000 0100
0000 0011
0000 0010
0000 0001
0000 0000
Arquitectura de Computadores – Evolução da arquitectura básica
9
Caches de mapeamento directo
6 bits
etiqueta
endereço
válido etiqueta
11
10
01
00
1
0
0
0
1
0
1
2 bits
índice
memória
1111 0111
1111 0110
1111 0101
1111 0100
1111 0011
1111 0010
1111 0001
1111 0000
dados
000001
000001
111101
111100
...
cache
Blockcache = Blockadd mod (nº blocos na chache)
Exemplo:
nº blocos na cache=4 ; Blockadd= 18 [010010]
Blockcache = 18 mod. 4 = 2 [10]
...
0000 0111
0000 0110
0000 0101
0000 0100
0000 0011
0000 0010
0000 0001
0000 0000
Cada posição da cache alberga: Dimmem /Dimcache posições da mem.
primária
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
10
Como saber se é um cache hit?
• Exemplo com um endereço de 32 bits, um bus de dados de 32
bits e uma cache de mapeamento directo de 1K palavras:
Endereço (32 bits)
Byte
10
etiqueta
20 bits
dados
32 bits
processador
20
validade
1 bit
0
1
2
3
...
...
1021
1022
1023
=?
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
Cache hit
11
E se for um cache miss?
• O controlador da cache carrega automaticamente a palavra em
falta (o processador pode ter de esperar). Em seguida repete o
acesso (que já dá cache hit).
Endereço (32 bits)
Byte
20
10
validade etiqueta
1 bit
20 bits
0
1
2
3
...
...
1021
1022
1023
dados
32 bits
1
Memória principal
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
12
Localidade espacial
• Ter na cache as palavras recentemente acedidas
explora a localidade temporal, mas não a espacial.
• A localidade espacial pode ser aproveitada lendo para
a cache não uma palavra mas várias de endereços
consecutivos (bloco).
• Assim, enquanto o processador aceder aos endereços
das palavras no bloco não será necessário efectuar
carregamentos na cache (porque dá cache hit).
• O bloco passa a ser a unidade de leitura e escrita da
memória.
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
13
Cache com blocos de 4 palavras
Endereço (32 bits)
Validade (1 bit)
Etiqueta (22 bits)
22
8
2
Dados (4 x 32 bits)
0
1
2
3
...
...
253
254
255
Multiplexer
=?
Cache hit
José Delgado, Rui Rocha © 2010
processador
Arquitectura de Computadores – Evolução da arquitectura básica
14
Exemplo
Endereço (32 bits)
• Onde é armazenada a
palavra com endereço
3C02H?
• Endereço em binário:
0011 1100 0000 0010
Validade (1 bit)
Etiqueta (22 bits)
22
índice
2
Dados (4 x 32 bits)
0
1
2
3
...
...
253
254
255
Multiplexer
=?
etiqueta
8
palavra
Cache hit
processador
• Quais os endereços no mesmo bloco (que
partilham a mesma etiqueta)?
3C00H
3C02H
3C04H
3C06H
José Delgado, Rui Rocha © 2010
0011 1100 0000 0000
0011 1100 0000 0010
0011 1100 0000 0100
0011 1100 0000 0110
Arquitectura de Computadores – Evolução da arquitectura básica
15
Desempenho em função da dimensão do
bloco
Endereço (32 bits)
Validade (1 bit) Etiqueta (22 bits)
22
•
Aumentando a dimensão do bloco (linha)
da cache tira-se partido da localidade
espacial. Um miss acarreta maior
penalização.
8
2
Dados (4 x 32 bits)
0
1
2
3
...
...
253
254
255
Multiplexer
=?
Cache hit
processador
COPYRIGHT 1998 MORGAN KAUFMANN PUBLISHERS, INC. ALL RIGHTS RESERVED
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
16
Mapeamento associativo
• O mapeamento directo tem o problema de dois blocos
com o mesmo índice não poderem coexistir na cache,
mesmo que:
– os dois blocos estejam a ser muito usados
– o resto da cache esteja vazia!!!
• No mapeamento associativo qualquer bloco pode
ocupar qualquer posição na cache, mas :
– A etiqueta tem de ser o endereço todo (para distinguir
quaisquer blocos), excepto os bits de endereço da palavra
dentro do bloco
– A procura do bloco (para ver se é cache hit) já não é por
índice. Tem de se comparar o endereço com a etiqueta em
todos os blocos ao mesmo tempo (para ser rápido)
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
17
Implementação da associatividade
2
Endereço
(32 bits)
30
=?
=?
Cache hit
=?
=?
• Uma cache associativa precisa de muito hardware!
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
18
Mapeamento associativo por
conjuntos de K vias
• Uma solução intermédia é usar K caches de mapeamento directo
e fazer a procura em todas elas em paralelo (mapeamento
associativo de K vias).
• Uma linha das várias caches de mapeamento directo é um
conjunto (uma cache associativa).
conjunto
conjunto
conjunto
Via 0
=?
etiqueta
Via 1
=?
índice
palavra dentro
do bloco
José Delgado, Rui Rocha © 2010
hit
Arquitectura de Computadores – Evolução da arquitectura básica
19
Variabilidade entre extremos
• Uma cache com N blocos pode ter K vias (K [0, N-1]),
cada uma com N/K conjuntos de K blocos.
• Dentro de cada via o mapeamento é directo.
1 via,
8 conjuntos com
1 bloco cada
2 vias,
4 conjuntos com
2 blocos cada
0
1
2
3
0
1
2
3
4
5
6
7
4 vias,
2 conjuntos com
4 blocos cada
0
1
Mapeamento associativo
Mapeamento directo
8 vias, 1 conjunto com 8 blocos
0
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
20
Desempenho de vários tipos de Cache
Consideremos a sequência de acessos a blocos de
cache:0, 8, 0, 6, 8.
Qual o comportamento das várias estruturas?
Associativo (2 vias):
Directo:
bloco cache (0) = (0 mod 4)=0 bloco cache (0) = (0 mod 2)=0
bloco cache (6) = 0
bloco cache (8) = 0
bloco cache (8) = 0
Assoc. (full)
Assoc. (2 vias)
Directo
bloco cache (6) = 2
End. bloco mem.
0
8
0
6
8
acesso
miss
miss
miss
miss
miss
bloco c(0)
Mem[0]
Mem[8]
Mem[0]
Mem[0]
Mem [8]
End. bloco mem.
0
8
0
6
8
acesso
miss
miss
hit
miss
Miss
set(0)
Mem[0]
Mem[0]
Mem[0]
Mem[0]
Mem [8]
End. bloco mem.
0
8
0
6
8
acesso
miss
miss
hit
miss
hit
B0
Mem[0]
Mem[0]
Mem[0]
Mem[0]
Mem[0]
bloco c(2)
Mem[6]
Mem[6]
set(0)
Mem[8]
Mem[8]
Mem[6]
Mem[6]
B1
Mem[8]
Mem[8]
Mem[8]
Mem[8]
José Delgado, Rui Rocha © 2010
B2
B3
COPYRIGHT 1998 MORGAN KAUFMANN PUBLISHERS, INC. ALL RIGHTS RESERVED
Mem[6]
Mem[6]
Arquitectura de Computadores – Evolução da arquitectura básica
21
Política de substituição
• Onde colocar uma célula de memória que se foi buscar
à memória principal devido a um cache miss?
– Caches de mapeamento directo: na célula indicada pelo índice
– Caches de mapeamento completamente associativo:
• Com lugares vagos: num lugar vago qualquer
• Cheia: no lugar da célula usada menos recentemente (LRU –
Least Recently Used)
• Na prática, costuma usar-se um contador para ir escrevendo na
célula seguinte, independentemente de estar cheia ou vazia, de
ter sido muito usada ou não. É um método simples e não muito
pior que os anteriores
– Caches associativas com K vias: obtém-se o conjunto através
do índice e escolhe-se uma via
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
22
Política de escrita
• Quando a célula está na cache (write hit):
– Write-through: escreve-se na cache e na memória principal
– Write-back: escreve-se só na cache e só se actualiza a
memória principal quando o bloco tem de sair da cache
• Quando a célula NÃO está na cache (write miss):
– Write around: escreve na memória principal sem escrever na
cache (bom se a célula não for lida a curto prazo)
– Write allocate: faz um cache miss (carrega a célula) e faz write
through
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
23
Exercícios de caches
1.
Considere uma cache de mapeamento directo com capacidade para 8
Kbytes de dados e blocos de 8 palavras de 32 bits, a usar por um
processador de 32 bits, com endereçamento de byte e 32 bits de
endereço.
a) Quantos bits deve ter a etiqueta de cada bloco?
b) Quantos blocos é que a cache consegue armazenar
simultaneamente?
c) Indique em que bloco (numerado entre 0 e o número obtido na alínea
anterior menos um) ficará armazenada a palavra com o endereço
1000H. Dê a sua resposta em hexadecimal.
d) Indique os endereços das palavras que ficam no mesmo bloco que a
palavra com o endereço 1000H.
e) Dê o endereço (à sua escolha) de duas palavras que nunca poderão
estar ao mesmo tempo na cache e explique porquê.
f) Supondo que, para além dos dados, a cache tem de guardar as
etiquetas e os bits de validade, indique o número total de bits que a
cache tem de poder armazenar.
g) Indique qual o overhead da cache em termos de capacidade, isto é, o
rácio
número tot al de bits
número de bits de da dos
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
24
Exercícios de caches (cont.)
2.
Pretende-se escolher um sistema de cache para um determinado
processador. Assume-se 8 blocos, cada um com 1 palavra do
processador, mas qual o melhor tipo de cache? Para melhor se aferir o
comportamento dos vários tipos de cache dispõe-se de um simulador em
que se regista os acessos à referida cache. No simulador executa-se um
benchmark (programa de teste) que acede aos seguintes endereços (em
decimal): 1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17. Admita que a
cache está inicialmente vazia e que o algoritmo de substituição de blocos
é LRU (quando se aplicar).
a) Preenchendo as tabelas seguintes (são dadas as duas primeiras
linhas para servir de exemplo), represente para os tipos de cache
nelas indicados:
i.
ii.
iii.
b)
os sucessivos conteúdos da cache (usando a notação M[endereço] para
representar o conteúdo de uma dada posição de memória)
o tipo de acesso (hit ou miss)
a miss rate
Em que medida é que o aumento da dimensão da cache (mais blocos
ou mais vias, conforme o caso) para o dobro melhoraria a miss rate de
cada um dos sistemas referidos, no caso deste benchmark?
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
25
Exercícios
Endereço
memória
1
4
Caso A - Cache de mapeamento directo com 8 blocos de 1 palavra cada
Nº de bloco
hit ou
miss
0
1
2
3
4
5
6
miss
M[1]
miss
M[1]
M[4]
7
8
5
20
17
19
56
9
11
4
43
5
6
9
17
Miss rate
%
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
26
Exercícios
Caso B - Cache associativa de 2 vias com um total de 8 blocos de 1 palavra cada
Nº de bloco via 0
Nº de bloco via 1
Endereço hit ou
memória
miss
0
1
2
3
0
1
2
1
miss
M[1]
4
miss
M[4]
M[1]
3
8
5
20
17
19
56
9
11
4
43
5
6
9
17
Miss rate
%
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
27
Exercícios
Caso C - Cache associativa de 4 vias com um total de 8 blocos de 1 palavra cada
Nº de bloco via 0 Nº de bloco via 1 Nº de bloco via 2 Nº de bloco via 3
Endereço hit ou
memória
miss
0
1
0
1
0
1
0
1
1
miss
M[1]
4
miss
M[4]
M[1]
8
5
20
17
19
56
9
11
4
43
5
6
9
17
Miss rate
%
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
28
Exercícios
Caso D - Cache totalmente associativa com um total de 8 blocos de 1 palavra cada
Nº de bloco
Endereço hit ou
memória
miss
0
1
2
3
4
5
6
1
miss
M[1]
4
miss
M[1]
M[4]
7
8
5
20
17
19
56
9
11
4
43
5
6
9
17
Miss rate
%
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
29
Memória virtual
• Mecanismo que permite tratar a memória principal como cache de
uma memória virtual (não existe na realidade) igual ao somatório
dos espaços de endereçamento dos vários processos.
• As zonas de memória virtual não carregadas em memória principal
e com dados/código dos processos estão em disco (swap file)
• O mecanismo de tradução de endereços virtuais (os que os
processos “vêem”) para físicos é transparente e automático.
• Também actua como mecanismo de protecção (porque um
processo não tem acesso ao espaço de endereçamento dos
outros).
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
30
Espaço de endereçamento
virtual
• O espaço de endereçamento virtual existe parte em memória
física, parte em disco.
Endereços virtuais
Tradução de
Endereços
Endereços físicos
Endereços no disco
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
31
Memória virtual paginada
• Para optimizar, o espaço de endereçamento é dividido em
páginas, todas de igual dimensão (4 Kbytes, por exemplo).
• Assim, apenas é necessário traduzir o endereço de base da
página, de virtual para físico.
31
12 11
Nº página virtual
0
Deslocamento
Tradução virtual  físico
15
12 11
Nº página física
José Delgado, Rui Rocha © 2010
0
Deslocamento
Arquitectura de Computadores – Evolução da arquitectura básica
32
Tabela de páginas
32
12 11
Nº página virtual
0
Deslocamento
Tabela de páginas
Registo com
endereço base
da tabela
“1” se a página
estiver carregada em
memória
32
12 11
Nº página física
José Delgado, Rui Rocha © 2010
0
Deslocamento
Arquitectura de Computadores – Evolução da arquitectura básica
33
Tamanho da tabela de páginas
• Se o espaço virtual for de
32
32 bits (4 Gbytes) e a
página for de 4 Kbytes,
Registo com
então a tabela de páginas endereço
base
da tabela
tem 1 M entradas de 32
bits. Ou seja, gasta 4
“1” se a página
Mbytes!
estiver carregada em
memória
32
• Se o espaço virtual for de
48 bits, gasta 64 K vezes
mais, ou 256 Gbytes!!!
• Assim, a tabela de páginas:
12 11
Nº página virtual
0
Deslocamento
Tabela de páginas
12 11
Nº página física
0
Deslocamento
– é feita em vários níveis hierárquicos
– só tem as entradas necessárias
– está, ela própria, sujeita ao mecanismo de memória virtual
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
34
Tabela de páginas hierárquica
10 bits
10 bits
Nº de página virtual
12 bits
páginas físicas
deslocamento
4 Kbytes
Tabelas de páginas
Directório
1K
entradas
(4 Kbytes)
registo
...
...
...
• As próprias tabelas de
páginas estão na memória
virtual (sujeitas a
swapping), excepto o
directório.
José Delgado, Rui Rocha © 2010
...
Arquitectura de Computadores – Evolução da arquitectura básica
35
Tradução de endereços
10 bits
• A tradução do
número de página
virtual para físico
implica aceder às
tabelas.
10 bits
12 bits
páginas físicas
deslocamento
Nº de página virtual
4 Kbytes
registo
Directório
Tabelas de páginas
1K
entradas
(4 Kbytes)
...
...
...
...
• É incomportável percorrer as várias
tabelas em cada acesso à memória!!!
• Solução: cache que tenha a tradução de
endereços das páginas mais usadas.
• Se houver um cache hit, a cache diz logo qual o endereço
físico da página.
• Se houver um cache miss, então é preciso percorrer as várias
tabelas.
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
36
TLB
• TLB = Translation Lookaside Buffer (cache de
tradução de endereços virtuais para físicos).
Válido
Alterada
Número de página virtual
Etiqueta
Dados
Número de página física
José Delgado, Rui Rocha © 2010
Deslocamento
Deslocamento
Arquitectura de Computadores – Evolução da arquitectura básica
37
Falta de página (page fault)
10 bits
• Page fault –
acesso a uma
página que não
está carregada
em memória.
10 bits
12 bits
páginas físicas
deslocamento
Nº de página virtual
4 Kbytes
registo
Directório
Tabelas de páginas
1K
entradas
(4 Kbytes)
...
...
...
• A ocorrência de uma page fault gera
uma excepção. O sistema operativo é
reponsável por percorrer as tabelas de
páginas e carregar a página em falta.
• Esta operação é lenta. É preciso:
...
– Percorrer as várias tabelas (vários acessos à memória)
– Carregar as tabelas de páginas que não estiverem em memória
– Carregar a página que originou a page fault
• Felizmente, os programas têm localidade espacial e temporal
e esta operação não acontece em todos os acessos!
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
38
Memória virtual + caches
Endereço virtual
(32 bits)
Válido
Alterada
Número de página virtual
Deslocamento
20
12
Etiqueta
Nº página física
registo
10 bits
10 bits
12 bits
deslocamento
Nº de página virtual
Tabelas de páginas
1K
Directório
entradas
(4 Kbytes)
páginas físicas
4 Kbytes
...
...
TLB
TLB fault
...
...
20
Número de página física
Etiqueta física
Endereço físico
(32 bits)
Deslocamento
Índice
14
2
Palavra dentro do bloco
Cache
16
=?
=?
Palavra acedida
Palavra acedida
Palavra pretendida
hit
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
39
• O que pode falhar no
acesso:
– Cache miss (um
acesso à memória)
– TLB miss (vários
acessos à
memória)
– Page fault (acesso
ao disco)
• As cache e TLB
misses medem-se
em dezenas de
ciclos de relógio.
Válido
Alterada
Tipos de misses
Número de página virtual
Deslocamento
20
12
Etiqueta
Nº página física
...
...
Page fault
...
...
20
Número de página física
Etiqueta física
Deslocamento
Índice
14
2
Palavra dentro do bloco
16
=?
=?
Palavra acedida
Palavra acedida
hit
• As page faults medem-se em dezenas de milisegundos (pode
implicar vários acessos ao disco).
• Felizmente, estas situações são a excepção e não a regra!
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
40
Exercícios de memória virtual
1.
Um sistema de memória virtual tem um tamanho de página de 1000
palavras, 8 páginas virtuais e 4 páginas físicas. Assuma que inicialmente a
tabela de páginas está vazia (nenhuma página carregada em memória).
a) Preencha a tabela seguinte com o estado que terá após acesso aos
endereços (de palavra) virtuais 7000, 2000, 5000, 1000.
Página virtual
0
1
2
3
4
5
6
7
b)
c)
Página física
Após estes acessos, quais os endereços físicos dos endereços
virtuais 0, 3728, 999, 1025, 7800 e 4096 (endereços de palavra)?
Dê um exemplo de um endereço virtual que provoque agora uma
page fault
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
41
Exercícios de memória virtual
2.
O TLB de um sistema de memória virtual, com 20 bits de número de
página virtual, 12 bits de número de página física e 12 bits de
deslocamento dentro de cada página, está actualmente com o conteúdo
indicado pela tabela seguinte.
Válida
1
0
0
1
1
1
a)
b)
c)
d)
Alterada
1
0
0
0
0
1
Nº pág. virtual
01AF4H
0E45FH
012FFH
01A37H
02BB4H
03CA0H
Nº pág. física
FFFH
E03H
2F0H
788H
45CH
657H
Qual a dimensão de cada página?
Qual a dimensão dos espaços de endereçamento virtual e físico?
Indique, para cada um dos endereços virtuais seguintes, o respectivo
endereço físico (ou se originam page fault): 2BB4A65H, E45FB32H,
D34E9DCH, 3CA0777H e 1AF4E06H.
Para cada um destes endereços, indique quais não foram,
garantidamente, escritos desde que foram carregados em memória.
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
42
Exercícios de memória virtual
3. Um processador tem:
i.
ii.
iii.
iv.
v.
vi.
a)
b)
um TLB completamente associativo de 2 palavras, com algoritmo de
substituição FIFO (rotativo)
uma cache de mapeamento associativo de 2 vias, com um total com 8
blocos de 1 palavra cada.
uma tabela linear (um só nível) de 8 páginas virtuais, com algoritmo
de substituição LRU
uma memória física de 4 páginas
uma página com 256 palavras de dimensão
endereçamento exclusivamente em palavras (bytes não)
Qual a dimensão, em palavras, dos espaços de
endereçamento virtual e físico?
Assumindo que inicialmente a memória não tem nenhum
programa ou dados carregados, preencha a tabela seguinte,
indicando o que acontece em cada acesso aos endereços
virtuais indicados e qual o estado em que o sistema fica. Use a
notação M[endereço] para indicar o conteúdo da cache. No
TLB indique o nº de página virtual e física. As duas primeiras
colunas estão preenchidas para servir de exemplo.
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
43
Exercícios de memória virtual
Endereço virtual 505
0
5 0
TLB
1
TLB miss/hit
miss
7A0
5 0
7 1
322
5F5
322
505
4C0
435
100
723
miss
0
1
2
3
Tabela
páginas
4
5
0
0
6
7
1
Page fault/hit
miss
miss
Endereço físico
005
1A0
0
M[1A0]
1 M[005] M[005]
2
3
Cache
0
1
2
3
Cache miss/hit
miss
miss
José Delgado, Rui Rocha © 2010
Arquitectura de Computadores – Evolução da arquitectura básica
44
Download

Caches - NEERCI