Hierarquia de Memória – Parte 2 Prof. André Luis M. Silva e/msn:[email protected] Na última aula • Estudamos hierarquia de memória, focando apenas a memória cache. • Como é feito o mapeamento de endereços. • Estudamos políticas para escrita e faltas em escrita, algoritmos de substituição. Hoje veremos • Memória Virtual Memória Virtual • Uma técnica que usa a memória principal como uma “cache” para armazenamento secundário. • Implementa a tradução do espaço de endereçamento de um programa para os endereços físicos. • Atua na memória principal e secundária. Memória Virtual • Motivação: – Permitir o compartilhamento seguro e eficiente da memória entre vários programas. – Remover os transtornos de programação de uma quantidade pequena e limitada de memória principal. Memória Virtual Endereços virtuais são mapeados em endereços físicos ou do disco. Diferentes endereços virtuais podem ser mapeados em um mesmo endereço físico (permitir compartilhamento de dados). Memória Virtual • Algumas Características • Os blocos de memórias virtuais são denominados de página. • Quando uma página não está presente na memória principal dizemos que aconteceu uma falta de página. • Devido a enorme penalidade da falha, as páginas devem ser bastante grandes (4 KB, por exemplo). Memória Virtual • Algumas características: – LRU é bastante empregado e é comum tratar falhas por software ao invés de hardware. – Como escrita é muito onerosa, uso exclusivamente de Write-Back – Na memória principal existe uma tabela que mapeia endereços virtuais em endereços físicos. Esta tabela é denominada de tabela de páginas. Tabela de Página Parte do campo de endereço indica a linha da tabela. O campo offset do endereço é concatenado com o endereço físico da tabela. E o endereço físico é obtido. Bit de validade indica se a página está na memória. Tabela de Páginas • Realizar acessos a memória principal para traduzir endereços virtuais é muito custoso. • Toda instrução ou dado necessário pelo processador deve ser traduzido para endereços físicos para finalmente ser utilizado. • Qual solução para minimizar este problema? TLB • TLB (translation lookaside buffer) é uma cache que monitora os mapeamentos de endereços recentemente usados para evitar um acesso à tabela de páginas. TLB Bit de Modificação: Indica se o dado pode ser modificado. Política de segurança do S.O. Bit de Referência: Indica se o dado foi referenciado alguma vez. Primeiro verificamos se o endereço virtual está presente na TLB. Se estiver, obtemos o endreço físico e o utilizamos para localizar o dado na cache. Este esquema pode variar a depender da hierarquia de memória. Problemas • As velocidades do processador continuam a aumentar muito rápido. • Desafio de projeto: lidar com essa crescente disparidade. • Prefetching, três ou mais níveis de cache, otimizações por software.