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