UNIVERSIDADE FEDERAL DE JUIZ DE FORA INSTITUTO DE CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO HIERARQUIA DE MEMÓRIA Leonardo Kemps Bittencourt da Silva Seminário de Organização de Computadores – professor Filippe Coury Jabour Neto Juiz de Fora, MG Setembro de 2004 1 1 - HIERARQUIA DE MEMÓRIA 1.1 - Resumo Em termos ideais, desejaríamos dispor de uma capacidade de memória infinitamente grande e que pudesse disponibilizar imediatamente o conteúdo de qualquer das suas palavras, como não dispomos dessa memória utópica somos forçados a reconhecer a possibilidade de construir um sistema de memória estruturado hierarquicamente, no qual cada um dos componentes da hierarquia tenha mais capacidade de armazenamento e um tempo de acesso maior do que aqueles que o precedem. 1.2 - Princípio da Localidade Este princípio estabelece que os programas acessam uma parte relativamente pequena do seu espaço de endereçamento em um instante qualquer. Existem 2 tipos de localidade. 1.2.1 - Localidade Temporal (localidade no tempo): se um endereço é referenciado, ele tende a ser referenciado novamente dentro de um espaço curto de tempo. 1.2.2 - Localidade Espacial (localidade no espaço): se um endereço é referenciado, os endereços próximos dele tendem a ser referenciados em algum momento. Tira – se proveito do princípio da localidade ao implementar-se a memória de um computador como um hierarquia de memórias. Tal conceito prevê a existência de vários níveis de memória, cada um deles com tamanhos e velocidades diferentes. 1.3 – Tecnologias empregadas na construção das hierarquias de memória Atualmente existem três tecnologias usadas na construção das hierarquias de memória. A chamada memória principal é implementada a partir da tecnologia DRAM (memória dinâmica de acesso randômico), enquanto os níveis da hierarquia mais próximos do processador(as chamadas memórias cache) usam a tecnologia SRAM(memória estática de acesso randômico). O custo por bit de armazenamento é bem menor na tecnologia DRAM do que na SRAM, além de as memórias implementadas na tecnologia DRAM serem muito mais lentas do que as implementadas na SRAM. A terceira e última tecnologia, a do disco magnético, é usada na implementação do nível mais lento e de maior capacidade da hierarquia. Tecnologia SRAM DRAM Disco Comparação Custo/Benefício Tempo de acesso US$ por Mbyte em 1997 5-25 ns $100 a $250 60-120 ns $5 a $10 10-20 milhões de ns $0,10 a $0,20 Fonte: Organização e Projeto de Computadores (Patterson & Hennessy) 2 Hierarquia de 2 níveis: Proc. Mem. Princ. Mem. Sec. Hierarquia de 3 níveis: Proc. Cache L1 Mem. Princ. Mem. Sec. Hierarquia de 4 níveis: Proc. Cache L1 Cache L2 Mem. Princ. Mem. Sec. 1.4 – Gerenciamento de memória: Existem dois Níveis de Gerenciamento: - Nível de Memória Principal (S.O + hardware) Nível de Memória Cache (hardware) O objetivo de um sistema de memória hierárquico é satisfeito uma vez que apresenta ao usuário uma capacidade de memória próxima à disponibilizada pela tecnologia mais barata, e um tempo de acesso próximo ao disponibilizado pela tecnologia mais cara. Implicando numa melhora significativa da memória. As memórias cache usam endereçamento do tipo: mapeamento direto, mapeamento Associativo e mapeamento associativo por conjunto. 1.5 - MEMÓRIA VIRTUAL Combinação entre a memória principal e a memória secundária (disco) para dar ao usuário a ilusão de existir uma memória principal bem maior que na realidade, conforme mostra a figura a seguir. Obs: Como os programas podem ser muito maiores que a memória física, somente parte deles devem estar na memória física em um dado instante. Obs: O usuário não se preocupa com o endereçamento, pois para ele, é como se a memória fosse contínua e inacabável. O SO + Hardware é que se preocupam com o mapeamento. 3 MEM Principal 0 1 2 3 MEM Virtual espaço de enderecos virtuais 0 1 2 3 espaço de enderecos reais M aplicação N disco MEM Secundária 1.5.1 - Espaço de Endereçamento Virtual: Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória (endereços reais), mas apenas a endereços virtuais (endereços do programa). Isto quer dizer que: o programa pensa que tem a sua disposição toda a memória ou que seu código está alocado em posições contínuas da memória. Mas de fato, o código pode estar segmentado em diferentes partes localizadas em posições diferentes da memória real, inclusive, partes do programam pode estar até no disco, mas o sistema operacional gerencia este código de forma que o usuário nao seja afetado. Durante a execução, o endereço virtual é mapeado para o endereço físico real da memória principal: "mapeamento". O conjunto de endereços virtuais que os processos podem endereçar é chamado de "espaço de endereçamento virtual", e o conjunto de endereços reais é chamado "espaço de endereçamento real". 1.5.2 – Mapeamento Nos sistema atuais, a tarefa de tradução é realizada por um hardware específico controlado pelo sistema operacional, de forma transparente para o usuário, através de tabelas de mapeamento para cada processo. Cada processo deve ter a sua tabela de página. tab P1 MEM real tab P2 4 1.5.3 - Controle Existe um registrador que indica a posição inicial da tabela relativa ao processo que será executado. Além disso, existe dois registradores que delimitam a área de memória que pode ser acessada pelo usuário, e qualquer tentativa de acesso fora destes limites poderá implicar em suspensão do processo. Todas estas informações deverão constar no descritor de cada processo. Sempre que um novo processo é escalonado para execução, as informações correntes no hardware são salvas no descritor do processo que está sendo retirado, e as novas informações do processo escalonado são colocadas no hardware, incluindo os valores dos registradores citados bem como o conteúdo da tabela de página. Como cada processo tem um tamanho de código diferente, e este código pode ser muito grande, o tamanho das tabelas de páginas são imprevisíveis. Seria inviável manter estas tabelas em registradores, pois não se sabe quantos seriam necessários. Assim sendo, estas tabelas são mantidas na memória principal. Com isso, cada acesso à um endereço virtual gera dois acessos reais: o primeiro à tabela de página, para se obter o endereço real da instrução, e o segundo à instrução propriamente dita. Um fator agravante é que como as tabelas podem ser muito grandes, elas também podem ser armazenadas na memória virtual, ou seja, determinada parte desta tabela pode estar no disco. Para aumentar o desempenho no uso das tabelas de páginas, os processadores atuais utilizam uma cache específica para conter a parte mais executada da tabela de página do processo corrente. Está cache é chamada TLB (Translation Lookaside Buffer). Esta técnica reduz o tempo perdido com o mapeamento virtual, mas ainda assim são necessários o acesso à duas caches para se obter a instrução real. Sempre que se tenta acessar a memória principal ou a memória cache, se a instrução está presente nós dizemos que ocorreu um "hit", caso contrário ocorreu um "miss". Obs: As tabelas mapeiam blocos de informações, ou seja, cada bloco da memória virtual possui um bloco correspondentes na memória física. blocos menores : - tabelas maiores mais chances de usar o disco para armazenamento mais chances de ocorrer TLB miss proporciona um grau maior de multiprogramação blocos maiores: - tabelas menores menos chances de usar o disco para armazenamento menos chances de ocorrer TLB miss proporciona um grau menor de multiprogramação - blocos de tamanhos iguais -> Paginação - blocos de tamanhos diferentes -> Segmentação 5 1.5.4 - Paginação O espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos de mesmo tamanho chamados "páginas". Cada endereço (lógico ou real) é dividido em duas partes. O primeiro chamado NP (NPV ou NPR) e o segundo DESL. A parte menos significativa (DESL) serve para indicar qual a palavra dentro da página (virtual ou real), ou seja, o seu deslocamento, e a parte mais significativa (NP) serve para indicar o número da página (virtual ou real) onde se encontra a palavra. Dependendo do tamanho das páginas, uma quantidade diferente de bits deve ser usada para o NP e o DESL. Por exemplo, suponhamos um endereçamento de 8 bits. Para páginas de 4 palavras são necessários 2 bits para o DESL e o restante (6 bits) fica para identificar o NP. Veja que com 6 bits é possível endereçar até 64 páginas. Para páginas de 32 palavras são necessários 5 bits para o DESL e o restante (3 bits) fica para identificar o NP. Veja que com 3 bits é possível endereçar somente 8 páginas. O primeiro caso é exemplificado pala figura a seguir. endereço endereço da palavra a ser acessada NP DESL 0 0 0 0 1 0 0 1 00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00001110 00001111 nro da página 00 01 10 11 O mapeamento do endereço virtual em endereço real é feito conforme o gráfico a seguir. O processador precisa executar a próxima instrução do programa no espaço de endereçamento virtual. Para isso o processador precisa descobrir a localização desta instrução no espaço de endereçamento real. O processador divide o endereço lógico em duas partes: NPV e DESL. O NPV é usado para indexar a tabela de páginas. O conteúdo da entrada indexada da tabela de páginas pelo NPV indica o NPR (número da página real). O NPR é somado ao DESL obtendo-se assim o endereço real. Com este endereço o processador acessa a cache de instruções. Além da informação sobre a localização da página virtual, a entrada da tabela de páginas possui um bit que indica se uma página está ou não na memória principal (bit de validade). Se o bit for 0, indica que a página virtual não está na memória (page fault) e se for 1, indica que está. A figura a seguir mostra a interação entre a Tabela de Páginas e a TLB durante o mapeamento da memória virtual para a memória real. 6 programa tenta acessar a página início entrada da Tab Pag está na TLB? sim não não (page fault) pag da Tab de Pag está na Mem? sim SO ativa dispositivo de E/S enviar dados lê dados da Mem dispositivo de E/S transfere página atualiza TLB sim descarta/ substitui Mem cheia? lê dados da TLB não SO Atualiza Tab Pag gera end real (NPR + DESL) cache / memória Figura: Operação da Tabela de Página e TLB 7 Bibliografia [ 1] Pattterson David A. e Hennessy A interface Hardware/Software. John L. Organização e projeto de computadores – Segunda Edição. Editora LTC. [ 2] Stallings, Willian et al. Arquitetura e organização de computadores. Quinta Edição. [ 3] Pannain, Ricardo. Arquitetura de computadores. Disponível na Internet: http://www.dcc.unicamp.br/~ducatte/mc722/Material/arq_hp7.pdf.. 15 set. 2004. [ 4] Organização de computadores – Aula 16 – Memória Cache. Universidade Federal do Rio Grande do Sul, Instituto de Informática. Disponível na Internet: http://www.inf.ufrgs.br/~flavio/ensino/ArqServ/memoria.pdf.. 19 set. 2004 [ 5] Oliveira, Cintia Carvalho. Memória Interna. Seminário de Organização de Computadores, Universidade Federal de Juiz de Fora. 6 set. 2004. [ 6] http://venus.rdc.puc-rio.br/rmano/comp6mem.html [7] http://www.di.uevora.pt/~pq/ac/prog-ac-7.html 8