Resumo 1 - Pagina de Filippe Jabour

Propaganda
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
Download