Revisão: hierarquia de memó
memória
Organizaç
Organização e Arquitetura
de computadores
Utilização do conceito da localidade para apresentar ao
usuário toda a quantidade de memória disponível no
sistema
processador
4-8 bytes (word)
Suporte em hardware para memória virtual
Tempo de
acesso pelo
processador
L1$
8-32 bytes (block)
L2$
1 to 4 blocks
Memória principal
Prof. Dr. Luciano José Senger
1,024+ bytes (disk sector = page)
Memória secundária
Tamanho da memória disponível
Memó
Memória Virtual
Dois programas compartilhando a memó
memória
• Utilização da memória principal como cache para a
memória secundária
– Permite o compartilhamento seguro e eficiente da memória entre
vários programas
– Permite que programas que sejam maiores que a memória física
instalada sejam executados
– Simplifica o carregamento de um programa em memória, através
de um esquema de relocação de código (programas são compilados
com endereços virtuais que podem ser mapeados em qualquer
posição de memória)
• O espaço de endereçamento do programa é dividido em páginas
(todas de tamanho fixo) ou segmentos (tamanhos variáveis)
– O endereço inicial de cada página (que está localizada ou na memória
principal ou na memória secundária) está registrado na tabela de
páginas do programa
Programa 1
Espaço de endereçamento virtual
Memória principal
• Princípio de localidade
– Um programa tende a utilizar uma porção pequena de seu espaço
de endereçamento durante um período de tempo
Programa 2
Espaço de endereçamento virtual
• Cada programa é compilado com o seu próprio espaço de
endereçamento – espaço de endereçamento virtual
– Durante a execução cada endereço virtual deve ser traduzido em
um endereço físico (um endereço existente na memória principal)
Memó
Memória Virtual
Memó
Memória virtual: como escolher os parâmetros?
• Um bloco de memória virtual é chamado de página
• Escolhas de projeto são motivadas pelo alto custo de uma
falha (falta de página)
– Uma falha de memória virtual é chamada de falta de página (page fault)
– o processador produz um endereço virtual traduzido por uma
combinação de hardware e software para um endereço físico: processo de
mapeamento de endereço ou tradução de endereço
– Endereço virtual:
• número de página virtual + offset de página
O tamanho de página é
igual a 2^12 = 4KB
Número de páginas
físicas permitidas na
memória 2^18 = 1GB
(2^18 x 2^12)
Espaço de
endereçamento virtual
tem 4 GB (2^20 x 2^12)
– Milhões de ciclos de clock para ser processada: penalidade de falha
elevada!
– Decisões importantes nos sistemas de memória virtual:
• As páginas devem ser grandes o suficiente para tentar amortizar o
tempo de acesso
– Estações de trabalho ( 4KB, 16KB) e servidores (32KB, 64KB)
– Sistemas embutidos (1KB)
– Organizações que reduzem a taxa de faltas de página são atraentes: a
técnica principal usada é permitir o posicionamento totalmente associativo
das páginas na memória
– As faltas de página podem ser tratadas em nível de software pois o
overhead será pequeno se comparado ao alto tempo de acesso ao disco;
reduções nas taxas de falhas compensam o custo dos algoritmos de
gerenciamento
– O write-through não funcionará para a memória virtual, visto que as
escritas levam muito tempo; em vez disso, sistemas de memória virtual
utilizam write-back
1
Traduç
Tradução de endereç
endereços atravé
através da tabela de pá
páginas
Traduç
Tradução de endereç
endereço
Número da página virtual deslocamento
Página física
offset
Entrada é geralmente
arredondada para 32 bits (bits
adicionais de proteção)
Endereço base
V da página física
1
1
1
1
1
1
0
1
0
1
0
Memória principal
Tabela de páginas
(reside na memória principal)
Memória secundária
Faltas de pá
página
Fluxograma para uma falta de pá
página
• Se o bit de validade para uma página virtual estiver desligado, ocorre
uma falta de página: o sistema operacional necessita receber esse
controle através do mecanismo de exceção.
• Quando o sistema operacional obtém o controle, ele necessita
encontrar a página no próximo nível da hierarquia, geralmente o disco
magnético e decidir onde colocar a página requisitada na memória
principal (atividade de paginação)
• O endereço virtual por si só não diz imediatamente onde está a página
no disco: o sistema operacional precisa monitorar o local no disco de
cada página em um espaço de endereçamento virtual
• O sistema operacional cria um espaço no disco para todas as páginas
de um processo no momento que o processo é criado, chamado de área
de swap
• É necessária uma estrutura auxiliar para registrar onde cada página
está armazenada no disco; pode ser parte da tabela de páginas ou uma
estrutura auxiliar indexada da mesma maneira como a tabela de
páginas
Um exemplo de memó
memória virtual
Um exemplo de memó
memória virtual
2
Um exemplo de memó
memória virtual
Um exemplo de memó
memória virtual
Como escolher qual pá
página substituir
Tamanho da tabela de pá
páginas
• O sistema operacional cria uma estrutura de
dados que controla quais processos e quais
endereços virtuais usam cada página física
• Com um endereço virtual de 32 bits, página de 4KB e 4 bytes por
entrada da tabela de página, podemos calcular o tamanho total da
tabela de páginas:
• Quando ocorre uma falha, se todas as páginas na
memória principal estiverem em uso, o sistema
operacional precisa escolher uma página para
substituir
– Algoritmo LRU (last recently used)
– Os sistemas operacionais monitoram as páginas e
atualizam o bit e referência ou bit de uso, que é ligado
sempre que uma página é acessada
Múltiplos ní
níveis de pá
páginas: x86
– 2^32/2^12 = 2^20 = número de entradas na tabela de páginas
– Tamanho = 2^20 x 4 = 4 MB da memória para cada processo!
• Como reduzir a quantidade de armazenamento
– Manter registrador limite: se o número de página virtual for maior que o
registrador limite, entradas precisam ser incluídas na tabela de páginas
– Permitir o crescimento em duas direções (p.e. pilha)
• Duas tabelas de páginas separadas e dois limites
• Divide o espaço de endereçamento em dois segmentos
– Função de hashing no endereço virtual de modo que a tabela necessita
armazenar apenas o conjunto de páginas físicas na memória principal:
tabela de páginas invertida
– Múltiplos níveis de tabelas de páginas
• Primeiro nível mapeia grandes blocos de tamanho fixo (as vezes chamado de
tabela de segmentos)
• Parte mais significativa do endereço endereça o primeiro nível; os demais bits
endereçam o segundo nível
– Sistemas operacionais permitem que as tabelas de página sejam também
paginadas, como uma forma de reduzir a memória principal consumida
pelas tabelas de página
E quanto às escritas?
• Sistemas de memória virtual precisam utilizar write-back
– Esquema com buffer de escrita seria ineficiente, pois a diferença
entre o tempo de acesso entre memória e disco é muito grande
– A técnica de cópia ao nível inferior da hierarquia é chamada de
copy-back
– É importante notar que o tempo de transferência é pequeno
comparado ao tempo de acesso, copiar words individuais é muito
mais caro que transferir páginas completas
– Para monitorar se uma página foi escrita desde que foi lida da
memória, um bit de modificação (dirty bit) é acrescentado a tabela de
páginas.
• tal bit é marcado com 1 quando qualquer word na página é alterada
• Se o sistema operacional decidir substituir a página, o bit de
modificação indica se a página precisar ser escrita no disco antes que
seu local de memória possa ser cedido a outra página
3
Tomando a traduç
tradução de endereç
endereços mais rá
rápida: a TLB
Tomando a traduç
tradução de endereç
endereços mais rá
rápida: a TLB
Virtual page #
V
1
1
1
0
1
• Como as tabelas de páginas são armazenadas na
memória principal, cada acesso à memória por um
programa pode levar, no mínimo, o dobro do
tempo:
– Um acesso para obter o endereço físico e um acesso
para obter os dados
– Quando uma tradução para uma página é realizada,
possivelmente essa tradução será repetida em um
futuro próximo (localidade)
– Processadores modernos incluem uma cache especial
que controla as traduções usadas recentemente: TLB
(translation-lookaside buffer)
• Cache que monitora os mapeamentos de endereços
recentemente usados para evitar acessos à tabela de páginas
A TLB do Intrisity Fast Math
•
•
•
•
V
1
1
1
1
1
1
0
1
0
1
0
Tag
Physical page
base addr
Physical page
base addr
Valores comuns:
Tamanho: 16 a 512 entradas
Tamanho do bloco: 1 a 2
entradas
Tempo de acerto: 0,5 a 1
ciclo
Penalidade: 10 a 100 ciclos
Taxa de falhas 0,01 a 1%
TLB
Main memory
Page Table
(in physical memory)
Disk storage
Pentium 4 e AMD Opteron
Páginas de 4KB e
espaço de
endereçamento de 32
bits
Número de página
virtual com 20 bits
de largura
Tamanho do
endereço físico igual
ao endereço virtual
TLB com 16
entradas, totalmente
associativa e é
compartilhada entre
as referências de
instruções e dados
Pentium 4 e AMD Opteron
Pentium 4 e AMD Opteron
4
AMD Phenom
AMD Phenom
• Cache L1
– Split cache 64KB x 2,
tamanho da linha igual a
64 Bytes, associativa de
duas vias, individual por
núcleo
• Cache L2
– Cache exclusiva, 512KB,
associativa de 16 vias
• Cache L3
– Compartilhada entre os
núcleos
– 2MB, associativa de 32
vias
Leituras recomendadas
• Patterson, David A. e Hennessy, John L.
Organização e Projeto de Computadores: A
Interface Hardware/Software. Ed. LTC, 272. Ed.,
2004, Rio de Janeiro. Capítulo 7
5
Download

Suporte em hardware para memória virtual