You are on page 1of 0

Csar A. F.

De Rose e Fernando Gehm Moraes 1 Arquitetura de Computadores II - 01/03/05


ARQUITETURA DE COMPUTADORES II
UNIDADE 2: GERNCIA DE MEMRIA
Contedo:
1 INTRODUO................................................................................................................. 2
1.1 Exemplo da Biblioteca................................................................................................ 2
2. HIERARQUIA DE MEMRIA.......................................................................................... 4
3 GERNCIA DE MEMRIAS CACHE............................................................................... 6
3.1 Mapeamento de endereos em memria cache ........................................................ 6
3.1.1 Mapeamento Direto.............................................................................................. 6
3.1.2 Mapeamento Associativo ..................................................................................... 9
3.1.3 Mapeamento Conjunto associativo .................................................................... 12
Exerccios de dimensionamento de memrias cache .................................................... 15
Cache com mapeamento conjunto associativo (4 conjuntos) ..................................... 16
Cache com mapeamento totalmente associativo........................................................ 16
Cache com mapeamento direto .................................................................................. 17
Cache com mapeamento conjunto associativo (16 conjuntos) ................................... 18
Cache com mapeamento totalmente associativo........................................................ 18
Cache com mapeamento direto .................................................................................. 19
3.2 Integridade dos dados na cache .............................................................................. 20
3.2.1 Write-through (escrevo atravs) ......................................................................... 20
3.2.2 Write-back (escrevo de volta)............................................................................. 21
3.3 Passos para escrita e leitura na cache..................................................................... 21
3.3.1 Leitura ................................................................................................................ 21
3.3.2 Escrita ................................................................................................................ 22
4 GERNCIA DA MEMRIA PRINCIPAL......................................................................... 22
4.1 Histrico da gerncia de memria............................................................................ 23
4.2 O problema da fragmentao de memria............................................................... 24
4.3 Endereamento da memria principal ...................................................................... 24
4.3.1 Endereamento contguo ................................................................................... 25
4.3.2 Endereamento no-contguo............................................................................ 26
4.3.3 Otimizao do endereamento no-contguo (TLB)........................................... 33
4.4 Memria Virtual ........................................................................................................ 34
4.5 Estudo de Casos...................................................................................................... 36
4.5.1 UNIX e SOLARIS............................................................................................... 36
4.5.2 Linux................................................................................................................... 36
4.5.2 IBM OS/2 (hardware Intel).................................................................................. 37
4.5.3 Windows 2000.................................................................................................... 37
5 EXERCCIOS................................................................................................................. 38
Csar A. F. De Rose e Fernando Gehm Moraes 2 Arquitetura de Computadores II - 01/03/05
1 INTRODUO
Nos ltimos anos vem se investindo muito no aumento da velocidade dos
processadores, que est ocorrendo de forma significativa
Porm, a velocidade de processamento de um sistema no determinada somente
pela velocidade do processador
Pouco adianta um processador muito rpido se a alimentao deste processador com
dados no conseguir acompanhar, pelo menos aproximadamente, o mesmo ritmo
Como tanto o fornecimento de dados, como o seu posterior armazenamento aps o
processamento so efetuados na memria, a velocidade mdia de acesso a memria
um componente importante no clculo da velocidade de processamento de um
sistema
Alm da velocidade, o tamanho da memria importante, j que ela funciona como
uma rea de armazenamento temporrio para dados que sero armazenados na
memria secundria (discos rgidos, ticos, etc.), que ainda mais lenta
Ideal seria:
Memria de tamanho ilimitado
Memria com um tempo de acesso muito rpido
Objetivos so contraditrios
Por problemas tecnolgicos, quanto maior a memria mais lento ser o seu tempo
de acesso o que faria com que o caso ideal, com a atual tecnologia, no possa
ser alcanado
Soluo: criar uma iluso para o processador de forma que a memria parea ilimitada
e muito rpida.
1.1 Exemplo da Biblioteca
Um estudante recebe a tarefa de redigir um trabalho sobre os Sistemas Operacionais
encontrados no mercado e suas principais caractersticas
Ele se dirige a biblioteca, senta em uma cadeira e inicia sua pesquisa
Transferncia
1 minuto
Procura
1 minuto
Csar A. F. De Rose e Fernando Gehm Moraes 3 Arquitetura de Computadores II - 01/03/05
O algoritmo de acesso neste caso o seguinte:
1. ir at a estante de livros
2. procurar livro desejado
3. levar livro at a cadeira
4. consultar livro
5. se no terminou ir para 1
Considerando que o aluno precisa consultar 10 livros e que leva 1 minuto para buscar
cada livro e 1 minuto procurando o livro desejado na estante, ele perderia 20 minutos
para fazer o trabalho
Isso se no tiver esquecido de consultar alguma coisa e necessitar buscar novamente
um livro que j consultou, o que custaria 2 minutos adicionais por livro
Agora o aluno procura uma mesa vazia
O algoritmo de acesso neste caso o seguinte:
1. ir at a estante de livros
2. procurar livros desejados
3. levar livros at a mesa
4. consultar livros
5. se no terminou ir para 1
Assumindo que a mesa tenha espao suficiente, o aluno pode buscar os 10 livros de
uma vez o que custaria 11 minutos (10 para a procura e 1 para a transferncia).
Depois so necessrios mais 20 segundos para a consulta dos livros na mesa (1 para
a consulta e 1 para a transferncia de cada livro), totalizando 11 minutos e 20
segundos
No caso de ter esquecido de algo, o custo para consultar um livro novamente cai para
2 segundos assumindo que ele ainda se encontra na mesa
Transferncia
1 minuto
Procura
1 minuto
Procura
1 segundo
Transferncia
1 segundo
Csar A. F. De Rose e Fernando Gehm Moraes 4 Arquitetura de Computadores II - 01/03/05
Situaes complicadoras
todos os livros que quero no cabem na mesa
vou tomar um caf e chega um colega e pega a mesa (s que o trabalho dele
sobre Arquitetura de Computadores)
Posso ampliar o exemplo incluindo uma camada intermediria: uma folha de resumo
entre a mesa e o aluno. Na folha so colocados os trechos dos livros que podem
interessar para o trabalho. O acesso a folha mais rpido que a mesa, mas na folha
cabem menos informaes, e assim por diante
Porque o tempo de acesso melhora na mdia? Localidade
trabalho restrito a um grupo de livros. Se o trabalho fosse catalogar todos os livros
da estante, sempre estaria tendo que consultar livros que no estariam na mesa
e teria que busca-los na estante (Localidade Espacial)
de tempos em tempos noto que esqueci de algum dado de um determinado
sistema e volto a consultar um livro que j tinha consultado antes (Localidade
Temporal)
2. HIERARQUIA DE MEMRIA
Iluso de uma memria ilimitada e rpida obtida atravs da utilizao de diversos
nveis de acesso (mesmo princpio do exemplo da biblioteca - Localidade)
Funciona porque programas que executam na CPU tambm possuem localidade
espacial e temporal
se um endereo foi referenciado, existe grande probabilidade do endereo
seguinte ser referenciado em pouco tempo, Ex: Execuo Seqencial
(Localidade Espacial)
se um endereo foi referenciado, existe grande probabilidade de ser referenciado
novamente em pouco tempo, Ex: Loops (Localidade Temporal)
Nveis intermedirios usados para amortizar a diferena de velocidade entre
processador e memria
L1
L2
Memria
Principal
Memria
Secundria
Registradores
CPU
Maior
tamanho
Maior
velocidade
Maior
custo (MB)
Csar A. F. De Rose e Fernando Gehm Moraes 5 Arquitetura de Computadores II - 01/03/05
Memria j aplica a dcadas o mesmo princpio para acelerar o acesso ao disco rgido
(memria secundria)
Os dados so transferidos para nveis mais altos a medida que so usados (por
demanda), como no exemplo da biblioteca
Transferncia entre nveis feita com grupos de palavras (bloco, pgina) pois o custo
relativo de transferir um grupo de dados menor do que para uma nica palavra, alm
de j antecipar acessos (considerando o principio da localidade espacial)
Comparao entre os diferentes tipos de memria
Tipo Tempo
de Acesso
Tamanho Custo
(por MB)
Registradores Ciclos CPU 32-64 bits ---
L1 Ciclos CPU 32-64 Kbytes ---
L2 8-35 ns 512Kbytes -2 Mbytes 50 Us$
principal 40-120 ns 64 Mbytes 1 Gbyte 1 Us$
secundria 5 ms 6 Gbytes-128 Gbytes 0.02 Us$
Para movimentao de dados entre nveis necessito Mecanismos e para algumas
decises estratgicas que tem que ser tomadas os mecanismos usam Polticas
Ex: preciso mover dados para um nvel superior que j est cheio. Quem retirar?
Deciso errada (ou ruim) pode afetar desempenho do sistema como um todo.
Se os mecanismos conseguirem manter a os dados usados pelo processador nos
nveis mais altos na maior parte dos acessos, o tempo mdio de acesso a memria
como um todo ser prximo do tempo de acesso a estes nveis
Algumas definies importantes
Hit dado encontrado no nvel procurado
Miss dado no encontrado no nvel procurado
Hit-rate (ratio) percentual de hits no nvel, Ex: 70%
Miss-rate (ratio) percentual de misses no nvel, Ex: 30% (complementar ao Hit-rate)
Hit-time tempo de acesso ao nvel incluindo tempo de ver se hit ou miss
Miss-penalty tempo mdio gasto para que o dado no encontrado no nvel seja
transferido dos nveis mais baixos (inclui tempo de substituio caso necessrio)
Exerccio: calcule o tempo mdio efetivo de acesso a uma memria cache
considerando Hit-ratio = 80%, Hit-time = 2 s e Miss-penalty = 10 s
Tme = Hit-time + (1- Hit-rate)* Miss-penalty
Tme = 2 + (1 0.8) * 10 = 2 + 0.2 * 10 = 2 + 2 = 4 s
Vamos analisar os nveis de cache e de memria principal com mais detalhes
Csar A. F. De Rose e Fernando Gehm Moraes 6 Arquitetura de Computadores II - 01/03/05
3 GERNCIA DE MEMRIAS CACHE
Significado da palavra cache Lugar seguro para guardar (esconder) coisas
Considerando que a cache s pode ter parte dos dados do nvel mais abaixo, por
causa do menor tamanho, temos dois problemas:
Como identificar se o dado procurado est na cache e
Se ele estiver na cache, como acess-lo de forma rpida
O processador no sabe que est sendo enganado e gera um endereo para um
espao de endereamento que no necessariamente existe fisicamente
Enderear a cache com este endereo no faz nenhum sentido (na maioria dos casos
a cache nem teria essa posio gerada por ser muito menor)
Uma varredura seqencial tambm no uma soluo aceitvel, pelo tempo que
levaria (no esquecer que o objetivo acelerar o acesso)
3.1 Mapeamento de endereos em memria cache
O termo mapeamento usado para indicar o relacionamento dos dados do nvel
inferior com as posies da memria cache (como o endereo fornecido pelo
processador tem que ser transformado para poder ser usado no acesso uma
memria cache)
Sero vistas trs formas de mapeamento de memrias cache
Direto
Associativo
Conjunto associativo
3.1.1 Mapeamento Direto
Forma mais simples de mapeamento
Posio na cache depende do endereo da palavra
Cada palavra possui uma posio fixa na cache
Como tenho menos espao na cache do que no nvel inferior, um grupo de palavras
mapeado na mesma posio da cache
Este mapeamento dado diretamente atravs de uma operao no endereo que se
est procurando
Exemplo de operao: endereo mod nmero de posies da cache (mdulo
o resto da diviso inteira)
Para uma cache de 4 posies e uma memria com 32 endereos teramos
(palavra de 8 bits):
Csar A. F. De Rose e Fernando Gehm Moraes 7 Arquitetura de Computadores II - 01/03/05
00 01 10 11
0 1 2 3
0 1 2 3
... 31
00000 00100 11100
Cada posio da cache pode ter 8 posies da memria
Pergunta: como podemos obter rapidamente o mapeamento? Utilizando os
dois bits menos significativos do endereo
Pergunta: Como saber qual das possveis palavras est realmente na cache? Se faz
necessrio um TAG (rtulo) de identificao para cada posio da cache
No exemplo poderia usar os bits mais significativos que sobraram
Pergunta: S isto j basta? No, ainda necessrio um bit de validade que indique
se a posio da cache est ocupada ou se contm lixo
Dessa forma a cache de mapeamento direto do exemplo tem a seguinte estrutura
Bit de Validade
Tag Dado
1 001 00110110
0
0
1 000 11100011
Passos para um acesso
1. Calculo o mdulo do endereo que procuro pelo nmero de posies da
cache (ou uso os bits menos significativos do endereo)
2. Verifico o bit de validade da posio da cache correspondente e se for
invalido acuso miss (vou para 4), seno verifico o Tag
3. Se Tag diferente do endereo procurado acuso miss (vou para 4), seno
tenho hit e leio a posio (fim)
4. Busco o dado no nvel inferior coloco na posio e efetuo a leitura (fim)
Diviso de bits no registrador de endereamento
Exemplo de uma cache com 1024 linhas (2
10
) com palavra de 32 bits
Csar A. F. De Rose e Fernando Gehm Moraes 8 Arquitetura de Computadores II - 01/03/05
22 bits 10 bits
Endereo 32 bits (4 Giga)
Dados Tag Vlido
0
1
.
.
.
1023
Hit
22 bits
Dados
32 bits
Tag Linha
=
Neste caso o espao de endereamento tem 4 Gigabytes (2
32
)
Pergunta: J vimos que na realidade so transferidos blocos entre nveis.
Como ficaria a diviso de bits neste caso?
Exemplo de uma cache com 1024 linhas (bloco com 4 palavras de 32 bits)
20 bits 10 bits
Endereo 32 bits (4 Giga)
Dados Tag Vlido
0
1
.
.
.
1023
Hit
20 bits
Dados
32 bits
2 bits
Mux
Tag Linha P
=
Pergunta: Considere agora um espao de endereamento de 1 Giga. Como
ficaria a diviso de bits para uma cache de 2048 posies que trabalhe com
blocos de 8 palavras?
16 (Tag) 11 (Linha) 3 (Palavra)
Endereo de 30 bits (1 Giga)
Csar A. F. De Rose e Fernando Gehm Moraes 9 Arquitetura de Computadores II - 01/03/05
Pergunta: Quanto se tem efetivamente de dados nessa cache? (Bit de
validade + Tag + Dados) * linhas = (1+16+(8*32)) = 273 bits dos quais 8*32
= 256 so dados. 256 * 100 / 273 = 93.77% (regra de trs para uma linha)
Exerccio de mapeamento Parnteses representam contedo da posio
Cache Mapeamento Direto
H Contedo da cache
MP M 0 1 2 3
154 M (154)
68 M (68)
34 M (34)
67 M (67)
154 M (154)
100 M (100)
67 H " (67)
68 M (68)
69 M (69)
70 M (70)
68 H (68)
34 M (68) (69) (34) (67)
2
Vantagens/Desvantagens dessa tcnica de mapeamento
Barato (hardware) Posso ter um mau aproveitamento
Procura simples (posio fixa
calculada)
das posies da cache
(dependendo dos endereos
gerados)
Escolha da vtima no existe
( dada pelo mdulo)
Uso parte da rea da cache para
controle
Simplicidade / Velocidade
Como poderia melhorar o mapeamento apresentado? Como retirar a dependncia
entre o endereo na memria e a posio da cache sem comprometer o desempenho
da procura? No d. Uso artifcio para acelerar procura.
3.1.2 Mapeamento Associativo
Endereo da memria em qualquer endereo da cache (100% de aproveitamento).
Conseqncias:
Tenho que fazer procura
1 (validade) 16 (tag) 8*32 (bloco de dados)
Linha da Cache
Csar A. F. De Rose e Fernando Gehm Moraes 10 Arquitetura de Computadores II - 01/03/05
Preciso poltica de substituio (Quando tenho miss e busco no nvel mais
abaixo, caso a cache j esteja cheia quem tirar para abrir lugar?)
Soluo para a procura: procura em paralelo. Uso memria associativa
Memria cara e de tamanho limitado
Soluo para a substituio: uso poltica
Possibilidades
Randmica: escolho aleatoriamente uma posio a ser substituda
LFU (Least Frequent Used) - a posio da cache que foi usada menos vezes
ser substituda (menos freqentemente usada) preciso incrementar um
contador a cada acesso e comparao para escolha
LRU (Least Recent Used) - a posio da cache que foi usada a mais tempo
ser substituda (menos recentemente usada) preciso incrementar um
contador a cada acesso e comparao para escolha
Quero aproximao do melhor caso sem perder tempo
Passos para um acesso
1. Alimento a memria associativa com o Tag procurado
2. Se o Tag procurado no est na memria associativa tenho miss (vou para 4)
3. Seno tenho hit e acesso a memria cache com o ndice fornecido pela
memria associativa e efetuo a leitura (fim)
4. Se no existir posio livre na cache escolho um endereo para substituir (LRU)
Csar A. F. De Rose e Fernando Gehm Moraes 11 Arquitetura de Computadores II - 01/03/05
5. Busco o endereo procurado no nvel mais baixo e coloco em uma posio livre
(ou escolhida) da cache cadastrando essa posio e Tag na memria
associativa e efetuo a leitura (fim)
Diviso de bits no registrador de endereamento
Exemplo de uma cache com 1024 posies (2
10
) com palavra de 32 bits
Neste caso o espao de endereamento tem 4 Gigabytes (2
32
)
Tag
1
32 bits
Endereo 32 bits (4 Giga)
Dados
0
.
.
.
1023
Hit
Dados
32 bits
Memria Associativa
1
0
.
.
.
1023
Tag
Pergunta: J vimos que na realidade so transferidos blocos entre nveis.
Como ficaria o Hardware neste caso?
Exemplo de uma cache com 1024 posies (bloco com 4 palavras de 32
bits)
1
Tag
30 bits
Hit
Memria Associativa
1
0
.
.
.
1023
2 bits
Dados
Dados
32 bits
Mux
0
.
.
.
1023
Endereo 32 bits (4 Giga)
Tag P
Csar A. F. De Rose e Fernando Gehm Moraes 12 Arquitetura de Computadores II - 01/03/05
Pergunta: Considere agora um espao de endereamento de 256 Mega.
Como ficaria a diviso de bits do endereo para uma cache de 2048
posies que trabalhe com blocos de 8 palavras ?
Pergunta: Quanto se tem efetivamente de dados nessa cache? 100%
Pergunta: Qual o tamanho da memria associativa? 2048 * 25 (tag) =
51200 bits / 8 = 6400 bytes / 1024 = 6,25 Kbytes
Exerccio de mapeamento Parnteses representam contedo da posio
Cache Mapeamento Associativo
H Contedo da cache
MP M 0 1 2 3
154 M (154)
68 M (68)
34 M (34)
67 M (67)
154 H (154)
100 M (100)
67 H " (67)
68 M (68)
69 M (69)
70 M (70)
68 H (68)
34 M (69) (70) (68) (34)
3
Vantagens/Desvantagens dessa tcnica de mapeamento
Memria associativa tem alto custo
e tamanho limitado
Melhor aproveitamento das
posies da cache, depois de
cheia, 100% de aproveitamento
Limita o nmero de linhas da cache
Dados de controle no ocupam Necessito poltica de substituio
espao da cache (esto em rea
separada)
Custa tempo
Pode escolher mal
Limite de tamanho da cache por causa da memria associativa uma restrio muito
forte, j que uma das tendncias hoje exatamente o aumento do tamanho da cache
Qual seria outra possibilidade? Como poderia juntar as vantagens dos dois mtodos
vistos at agora?
3.1.3 Mapeamento Conjunto associativo
Compromisso entre mapeamento direto e totalmente associativo
Cache dividida em S conjuntos de N blocos/palavras
25 (Tag) 3 (Palavra)
Endereo de 28 bits (256 Mega)
Csar A. F. De Rose e Fernando Gehm Moraes 13 Arquitetura de Computadores II - 01/03/05
Se S = 1 tenho mapeamento associativo e se S = nmero de blocos/palavras da cache
tenho o mapeamento direto
O endereo i da memria principal pode mapear para qualquer endereo no conjunto
(i mod S) da cache
Tenho que fazer procura dentro do conjunto
Preciso poltica de substituio (Quando tenho miss e busco no nvel mais
abaixo, caso o conjunto j esteja cheio quem tirar para abrir lugar?)
Passos para um acesso
1. Calculo o mdulo do endereo que procuro pelo nmero de conjuntos S da
cache (ou uso os bits menos significativos do endereo)
2. Alimento a memria associativa deste conjunto com o Tag procurado
3. Se o Tag procurado no est na memria associativa tenho miss (vou para 5)
4. Seno tenho hit e acesso memria cache com o ndice fornecido pela
memria associativa e efetuo a leitura (fim)
5. Se no existir posio livre no conjunto escolho um endereo para substituir
(LRU)
6. Busco o endereo procurado no nvel mais baixo e coloco em uma posio
livre (ou escolhida) da cache cadastrando essa posio e Tag na memria
associativa do conjunto e efetuo a leitura (fim)
Diviso de bits no registrador de endereamento
Exemplo de uma cache com 1024 posies (2
10
) com palavra de 32 bits e 2
conjuntos (S=2)
1
31 bits
Dados
0
.
.
.
1023
Hit
Dados
32 bits
Memrias Associativas
1 bit
1
0
512
1
0
512
Endereo 32 bits (4 Giga)
Tag C
Neste caso o espao de endereamento tem 4 Gigabytes (2
32
)
Pergunta: Quanto se tem efetivamente de dados nessa cache? 100%
Csar A. F. De Rose e Fernando Gehm Moraes 14 Arquitetura de Computadores II - 01/03/05
Pergunta: Qual o tamanho das memrias associativas? Duas MAs de
512 * 31 (tag) = 15872 bits / 8 = 1984 bytes / 1024 = 1,93 Kbytes
Como ficaria a mesma cache com 4 conjuntos (S=4)?
1
30 bits
Dados
0
.
.
.
1023
Hit
Dados
32 bits
Memrias Associativas
2 bits
Tag
1
0
256
Tag
1
0
256
Endereo 32 bits (4 Giga)
Tag C
Pergunta: Qual o tamanho das memrias associativas? Quatro MAs de
256 * 30 (tag) = 7680 bits / 8 = 960 bytes / 1024 = 0,94 Kbytes
Pergunta: J vimos que na realidade so transferidos blocos entre nveis.
Como ficaria a diviso do endereo de uma cache conjunto associativa de 4
conjuntos com 2048 posies (bloco com 4 palavras de 32 bits)
Exerccio de mapeamento Parnteses representam contedo da posio
Cache Mapeamento Conjunto
Associativo 2 Conjuntos
Contedo da cache
H Conjunto 1 Conjunto 2
MP M 0 1 2 3
154 M (154)
68 M (68)
34 M (34)
67 M (67)
154 M (154)
100 M (100)
67 H " (67)
68 M (68)
69 M (69)
70 M (70)
68 H (68)
34 M (34) (68) (67) (69)
2
28 (Tag) 2 (Conjunto) 2 (Palavra)
Endereo de 32 bits (4 Giga)
Csar A. F. De Rose e Fernando Gehm Moraes 15 Arquitetura de Computadores II - 01/03/05
Quantidade de associatividade de uma cache dada pelo nmero de Vias (Ways)
Exemplo: uma cache de 8 posies pode ter de 1 a 8 vias (ways)
Vias / Ways Mapeamento Desenho
1
2
4
8
Direto
Conjunto-associativo
(2 conjuntos)
Associativo
Conjunto-associativo
(4 conjuntos)
Exerccio: Quantos conjuntos possui a cache L1 4-Way de 64 Kbytes de um
processador Ultra Sparc III (assumir bloco de 32 palavras de 64 bits)?
A famlia Ultra Sparc utilizada nas estaes SUN (A verso III possui um pipeline
com 14 estgios Superpipeline)
Resposta: tamanho do bloco = 32 * 64 bits = 2048 bits = 256 bytes = 0,25 Kbytes
64 Kbytes / 0,25 Kbytes = 256 blocos / 4 (4-Way = quatro blocos por conjunto)
= 64 conjuntos cache conjunto-associativa com 64 conjuntos
Vantagens/Desvantagens dessa tcnica de mapeamento
Aumento o tamanho da cache
mantendo o tamanho da memria
associativa (limitao tecnolgica
ou custo)
Memria associativa tem alto
custo e tamanho limitado
Bastante flexvel
Necessito poltica de
substituio
Custa tempo
Pode escolher mal
Uso a totalidade da rea da cache
para dados (os bits de controle
esto nas memrias associativas)
Tempo de acesso maior
(clculo + consulta associativa)
Dependendo da gerao de
endereos no aproveito a
totalidade das posies da
cache
Exerccios de dimensionamento de memrias cache
1) A rea de memria disponvel para implementao de uma cache L2 512 Kbytes.
Considerando que a memria a ser endereada possui 64 Mbytes (2
26
) e a cache
53 (Tag) 6 (Conjunto) 5 (Palavra)
Assumindo um endereamento de 64 bits
Csar A. F. De Rose e Fernando Gehm Moraes 16 Arquitetura de Computadores II - 01/03/05
deve trabalhar com blocos de 16 palavras de 32 bits calcule para a tcnica direta,
totalmente associativa e conjunto associativa (4 conjuntos):
Diviso de bits do endereo
Aproveitamento efetivo da rea da cache (relao entre dados e controle)
Nmero de linhas da cache
Quantidade e tamanho em Kbytes das memrias associativas (quando
necessrio)
Cache com mapeamento conjunto associativo (4 conjuntos)
Diviso de bits do endereo:
Aproveitamento efetivo:
100% (s dados na cache, controle fica nas MAs)
Nmero de linhas da cache:
Tamanho da linha?
Cada linha tem bloco de 16 palavras de 32 bits = 16 * 32 = 512 bits / 8 = 64 bytes
Quantas linhas cabem na cache?
Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 64 = 8192 linhas
Tamanho das memrias associativas:
Quantas?
Uma para cada conjunto, ou seja 4
Tamanho de cada uma?
Cada linha da MA tem tamanho do Tag = 20 bits
O nmero de linhas da MA igual ao nmero de linhas da cache que ela enderea.
Como a cache tem 8192 e so 4 MAs, cada MA enderea 8192 / 4 = 2048 linhas
Uma MA tem ento 2048 (linhas) * 20 (tag) = 40960 bits / 8 = 5120 bytes / 1024 =
5 Kbytes
Cache com mapeamento totalmente associativo
Diviso de bits do endereo:
Aproveitamento efetivo:
100% (s dados na cache, controle fica nas MAs)
Nmero de linhas da cache:
Tamanho da linha?
Cada linha tem bloco de 16 palavras de 32 bits = 16 * 32 = 512 bits / 8 = 64 bytes
Quantas linhas cabem na cache?
Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 64 = 8192 linhas
20 (Tag) 2 (Conjunto) 4 (Palavra)
Endereo de 26 bits (64 Mbytes)
Endereo de 26 bits (64 Mbytes)
22 (Tag) 4 (Palavra)
Csar A. F. De Rose e Fernando Gehm Moraes 17 Arquitetura de Computadores II - 01/03/05
Tamanho das memrias associativas:
Quantas?
Uma nica memria associativa
Tamanho da MA?
Cada linha da MA tem tamanho do Tag = 22 bits
O nmero de linhas da MA igual ao nmero de linhas da cache que ela enderea.
Como a cache tem 8192 a MA enderea 8192 linhas
Uma MA tem ento 8192 (linhas) * 22 (tag) = 180224 bits / 8 = 22528 bytes / 1024 =
22 Kbytes
Cache com mapeamento direto
Nmero de linhas da cache:
Tamanho da linha?
Cada linha tem um bit de validade, os bits de Tag e bloco de 16 palavras de 32 bits
O problema o tamanho do Tag pois como ele depende do nmero de linhas da
cache que o que estou calculando tenho que experimentar ...
1) com 12 bits para linha (podendo enderear 4096 linhas da cache)
Tamanho da linha = 1+10 (Tag)+512 = 523 bits / 8 = 65,37 bytes
Quantas linhas cabem na cache?
Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 66 = 7943,75 linhas
2) com 14 bits para linha (podendo enderear 16384 linhas da cache)
Tamanho da linha = 1+8 (Tag)+512 = 521 bits / 8 = 65,12 bytes
Quantas linhas cabem na cache?
Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 66 = 7943,75 linhas
3) com 13 bits para linha (podendo enderear 8192 linhas da cache)
Tamanho da linha = 1+9 (Tag)+512 = 522 bits / 8 = 65,25 bytes
Quantas linhas cabem na cache?
Cache tem 512 Kbytes = 512 * 1024 = 524288 bytes / 66 = 7943,75 linhas
Cache tem 7944 linhas e Tag = 26 (endereo) 4 (palavra) 13 (linha) = 9
Diviso de bits do endereo:
Aproveitamento efetivo:
Dados em cada linha: um bloco de 16 palavras de 32 bits = 512 bits
Tamanho total da linha: 1 (validade) + 9 (Tag) + 512 (bloco) = 522 bits
Percentual de aproveitamento: 522 100%
512 ?% (uso para dados)
Aproveitamento efetivo = 512 * 100 / 522 = 98,08%
Tamanho das memrias associativas:
No utiliza MAs
1 (Validade) ? (Tag) 512 (Bloco)
Contedo da linha
9 (Tag) 13 (Linha) 4 (Palavra)
Endereo de 26 bits (64 Mbytes)
Poucos bits!!!
Muitos bits!!!
OK!!!
Csar A. F. De Rose e Fernando Gehm Moraes 18 Arquitetura de Computadores II - 01/03/05
2) A rea de memria disponvel para implementao de uma cache L2 256 Kbytes.
Considerando que a memria a ser endereada possui 256 Mbytes (2
28
) e a cache
deve trabalhar com blocos de 8 palavras de 16 bits calcule para a tcnica direta,
totalmente associativa e conjunto associativa (16 conjuntos):
Diviso de bits do endereo
Aproveitamento efetivo da rea da cache (relao entre dados e controle)
Nmero de linhas da cache
Quntidade e tamanho em Kbytes das memrias associativas (quando necessrio)
Cache com mapeamento conjunto associativo (16 conjuntos)
Diviso de bits do endereo:
Aproveitamento efetivo:
100% (s dados na cache, controle fica nas MAs)
Nmero de linhas da cache:
Tamanho da linha?
Cada linha tem bloco de 8 palavras de 16 bits = 8 * 16 = 128 bits / 8 = 16 bytes
Quantas linhas cabem na cache?
Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 16 = 16384 linhas
Tamanho das memrias associativas:
Quantas?
Uma para cada conjunto, ou seja 16
Tamanho de cada uma?
Cada linha da MA tem tamanho do Tag = 21 bits
O nmero de linhas de cada MA nessa tcnica igual ao nmero de linhas do
conjunto que ela enderea. Como a cache tem 16384 linhas e so 16 MAs, cada
MA enderea 16384 / 16 = 1024 linhas
Uma MA tem ento 1024 (linhas) * 21 (tag) = 21504 bits / 8 = 2688 bytes / 1024 =
2.625 Kbytes
Cache com mapeamento totalmente associativo
Diviso de bits do endereo:
Aproveitamento efetivo:
100% (s dados na cache, controle fica nas MAs)
21 (Tag) 4 (Conjunto) 3 (Palavra)
Endereo de 28 bits (256 Mbytes)
Endereo de 28 bits (256 Mbytes)
25 (Tag) 3 (Palavra)
Csar A. F. De Rose e Fernando Gehm Moraes 19 Arquitetura de Computadores II - 01/03/05
Nmero de linhas da cache:
Tamanho da linha?
Cada linha tem bloco de 8 palavras de 16 bits = 8 * 16 = 128 bits / 8 = 16 bytes
Quantas linhas cabem na cache?
Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 16 = 16384 linhas
Tamanho das memrias associativas:
Quantas?
Uma nica memria associativa
Tamanho da MA?
Cada linha da MA tem tamanho do Tag = 25 bits
O nmero de linhas da MA nessa tcnica igual ao nmero de linhas da cache que
ela enderea. Como a cache tem 16384 a MA enderea 16384 linhas
Uma MA tem ento 16384 (linhas) * 25 (tag) = 409600 bits / 8 = 51200 bytes / 1024
= 50 Kbytes
Cache com mapeamento direto
Nmero de linhas da cache:
Tamanho da linha?
Cada linha tem um bit de validade, os bits de Tag e bloco de 8 palavras de 16 bits
O problema o tamanho do Tag pois como ele depende do nmero de linhas da
cache que o que estou calculando tenho que experimentar ...
1) com 12 bits para linha (podendo enderear 4096 linhas da cache)
Diviso de bits do endereo:
Tamanho da linha = 1+13 (Tag)+128 = 142 bits / 8 = 17.75 bytes
Quantas linhas cabem na cache?
Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 17.75 = 14768 linhas
2) com 15 bits para linha (podendo enderear 32768 linhas da cache)
Diviso de bits do endereo:
Tamanho da linha = 1+10 (Tag)+128 = 139 bits / 8 = 17.37 bytes
Quantas linhas cabem na cache?
Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 17.37 = 15091 linhas
1 (Validade) ? (Tag) 128 (Bloco)
Contedo da linha
Poucos bits!!!
Muitos bits!!!
13 (Tag) 12 (Linha) 3 (Palavra)
Endereo de 28 bits (256 Mbytes)
10 (Tag) 15 (Linha) 3 (Palavra)
Endereo de 28 bits (256 Mbytes)
Csar A. F. De Rose e Fernando Gehm Moraes 20 Arquitetura de Computadores II - 01/03/05
3) com 14 bits para linha (podendo enderear 16384 linhas da cache)
Diviso de bits do endereo:
Tamanho da linha = 1+11 (Tag)+128 = 140 bits / 8 = 17.5 bytes
Quantas linhas cabem na cache?
Cache tem 256 Kbytes = 256 * 1024 = 262144 bytes / 17.5 = 14979 linhas
Cache tem 14979 linhas e Tag = 28 (endereo) 3 (palavra) 14 (linha) =
11
Diviso de bits do endereo:
Aproveitamento efetivo:
Dados em cada linha: um bloco de 8 palavras de 16 bits = 128 bits
Tamanho total da linha: 1 (validade) + 11 (Tag) + 128 (bloco) = 140 bits
Percentual de aproveitamento: 140 -> 100%
128 -> ?% (uso para dados)
Aproveitamento efetivo = 128 * 100 / 140 = 91.42%
Tamanho das memrias associativas:
No utiliza MAs nessa tcnica
3.2 Integridade dos dados na cache
Problema: ocorreu um miss e o endereo desejado foi buscado no nvel inferior da
hierarquia de memria. S que a cache est cheia e no h lugar para escrever este
dado. O algoritmo de substituio acionado e uma posio escolhida. S que estes
dados foram alterados e no podem ser simplesmente descartados.
Este problema ocorre porque uma escrita foi efetuada apenas no nvel da cache e as
cpias deste dado nos outros nveis no esto atualizadas
Perguntas:
Como saber que os dados foram alterados?
Como salvar essas alteraes?
Em que momento salvar as informaes?
Existem duas tcnicas para manter a Integridade dos dados
Write-through
Write-back
3.2.1 Write-through (escrevo atravs)
Tcnica mais antiga
Escrevo as alteraes em todos os nveis (escrevo atravs)
11 (Tag) 14 (Linha) 3 (Palavra)
Endereo de 28 bits (256 Mbytes)
OK!!!
11 (Tag) 14 (Linha) 3 (Palavra)
Endereo de 28 bits (256 Mbytes)
Csar A. F. De Rose e Fernando Gehm Moraes 21 Arquitetura de Computadores II - 01/03/05
Quando? Sempre que escrevo
Quanto? Somente a palavra alterada
Vantagens / Desvantagens dessa tcnica
Dado sempre atual em todos os Escreve mais vezes
nveis Precisa mais do barramento
Escreve menos dado
3.2.2 Write-back (escrevo de volta)
Tcnica mais recente
Escrevo alteraes s quando substituo
Quando: substituio
Quanto: unidade do nvel (bloco no caso da cache)
Como sei quem foi alterado: dirty-bit (bit de sujeira) no bloco
Vantagens / Desvantagens dessa tcnica
Escreve menos vezes Escreve mais dados de cada vez
Precisa menos do barramento Aumento tempo de substituio
3.3 Passos para escrita e leitura na cache
Para solucionar o problema da integridade dos dados as tcnicas acima so
incorporadas nas operaes de leitura e escrita
3.3.1 Leitura
1. Verifico se foi hit, se no foi vou para 3
2. Procuro por bloco desejado (Tag ou direto), leio e repasso ao processador. Vou
para 8
3. Requisito ao nvel mais baixo
4. Recebo bloco, procuro onde colocar e se cache cheia vou para 5. Se acho
posio livre escrevo bloco, leio a palavra desejada no bloco, repasso dado ao
processador e vou para 8
5. Procuro bloco para substituir (uso poltica)
6. Se Write-back e dirty-bit ligado, salvo bloco a ser substitudo no nvel mais baixo
7. Substituo bloco, leio a palavra desejada no bloco e repasso dado ao
processador
8. Pronto
Csar A. F. De Rose e Fernando Gehm Moraes 22 Arquitetura de Computadores II - 01/03/05
3.3.2 Escrita
1. Verifico se foi hit, se no foi vou para 3
2. Procuro por bloco desejado (Tag ou direto) e escrevo. Se Write-through escrevo
palavra tambm nos nveis mais baixos. Se Write-back ligo dirty-bit. Vou para 8
3. Requisito ao nvel mais baixo
4. Recebo bloco, procuro onde colocar e se cache cheia vou para 5. Se acho
posio livre escrevo bloco e efetuo escrita da palavra. Se replicao Write-
through escrevo palavra tambm nos nveis mais baixos. Se Write-back ligo
dirty-bit. Vou para 8
5. Procuro bloco para substituir (uso poltica)
6. Se replicao Write-back e dirty-bit ligado, salvo substitudo no nvel mais baixo
7. Substituo bloco e escrevo palavra. Se replicao Write-through escrevo palavra
tambm nos nveis mais baixos. Se Write-back ligo dirty-bit.
8. Pronto
Pergunta: Para que buscar dados do nvel mais baixo quando tenho miss na operao
de escrita se vou escrever os dados novamente? Para que buscar para escrever por
cima ? Porque s escrevo uma palavra e estou buscando o bloco.
4 GERNCIA DA MEMRIA PRINCIPAL
Referncia: Stallings, Captulos 7 e 8
Em um sistema monoprogramado a memria principal dividida em duas partes: uma
para o sistema operacional (monitor residente, ncleo) e outra para o programa que
est sendo executado
Em um sistema multiprogramado a memria de usurio ainda tem que ser dividida
entre vrios processos
Essa diviso feita pelo sistema operacional de forma dinmica e chamada de
Gerencia de Memria
Uma gerncia de memria eficiente vital em um sistema multiprogramado. Se
somente poucos processos couberem na memria o processador ficar parado grande
parte do tempo esperando por operaes de E/S. Sendo assim, uma tcnica de
gerncia que consiga colocar mais processos na memria melhora a taxa de utilizao
do processador e consequentemente o desempenho da mquina como um todo
A memria principal pode ser vista como mais um nvel da hierarquia de memria de
forma que o princpio da gerncia o mesmo dos outros nveis: os dados mais usados
so trazidos para a memria para diminuir o tempo mdio de acesso ao nvel mais
baixo, neste caso o disco
Csar A. F. De Rose e Fernando Gehm Moraes 23 Arquitetura de Computadores II - 01/03/05
L2
Memria
Principal
Maior
tamanho
Maior
velocidade
Maior
custo por
(MB)
Memria Secundria (Disco)
Teoricamente poderiam ser aplicadas na gerncia de memria principal as mesmas
tcnicas que foram vistas para a gerncia de caches, mas no so, por dois motivos:
Evoluo Histrica: a idia de uma memria como rea de armazenamento
temporrio de dados j existe a muito tempo, muito antes de se pensar em uma
hierarquia de memria e em caches
Diferentes Caractersticas: a memria principal normalmente muito maior que as
memrias caches e os tempos de acesso so muitas vezes maiores. Ao contrrio
das caches parte da gerncia pode ser feita em software e as unidades de
gerncia possuem a identificao do seu dono (processo), o que pode ser utilizado
na estratgia de gerncia
Estes dois motivos fizeram com que a gerncia de memria tenha se desenvolvido de
forma um pouco diferente do que a gerncia de caches
4.1 Histrico da gerncia de memria
Inicialmente a memria era empregada como rea temporria para acelerar o acesso
aos dados
Como era um recurso caro na poca as o seu tamanho era bastante reduzido (poucos
Kbytes)
Em conseqncia disto muitas vezes um programa no cabia inteiramente na memria
juntamente com o seu ambiente de execuo (interpretador, bibliotecas, etc.)
A gerncia de memria foi introduzida em sistemas monoprogramados para permitir
que um programa maior que a memria pudesse executar na mquina
As primeiras estratgias eram baseadas em overlays (sobreposio) e de
responsabilidade total do programador
O programador fazia a diviso do seu programa em partes que podiam executar
de forma autnoma na memria (overlay)
Csar A. F. De Rose e Fernando Gehm Moraes 24 Arquitetura de Computadores II - 01/03/05
No final de cada uma dessas partes era colocado o cdigo responsvel pela
carga da prxima parte que poderia ser sobreposta anterior j que os
endereos antigos no se faziam mais necessrios
O programador tinha controle total da memria da mquina e era responsvel
pela troca das partes
- O programa tinha que ser escrito de forma que no necessitasse ser quebrado
em muitas partes j que essa troca tinha um custo bastante alto
Com o advento da multiprogramao surgiram algumas dificuldades
A gerncia de overlays tinha que possibilitar agora que vrios programas que
somados no coubessem na memria pudessem na mquina executar de
forma concorrente
Para que a gerncia de overlays de cada programa no interferisse na dos outros
programas era necessrio que um agente externo fosse responsvel pela
gerncia

A responsabilidade de gerenciar a memria passou ento do usurio para o


monitor residente, mas tarde chamado de sistema operacional
4.2 O problema da fragmentao de memria
Um problema diretamente relacionado com a gerncia de memria sua
fragmentao
Fragmentao resulta em desperdcio de memria
Existem dois tipos de fragmentao
Fragmentao Interna: ocorre quando usada uma unidade de gerncia de
tamanho fixo (Ex: pgina). Requisies dos usurios que no sejam exatamente
divisveis por essa unidade tem que ser arredondadas para cima resultando em
uma unidade alocada mas no completamente ocupada
Fragmentao Externa: ocorre quando usada uma unidade de gerncia de
tamanho varivel (Ex: segmento). Uma seqncia de alocaes e liberaes
desse tipo podem gerar vrias lacunas de tamanho varivel na memria. Uma
requisio de usurio pode ento ser negada apesar de existir memria livre
suficiente para atende-la (por causa da fragmentao no foi possvel encontrar
uma unidade contgua)
4.3 Endereamento da memria principal
Problema: como os endereos utilizados em um programa so usados para acessar
posies da memria principal
Csar A. F. De Rose e Fernando Gehm Moraes 25 Arquitetura de Computadores II - 01/03/05
4.3.1 Endereamento contguo
O programa carregado inteiro em uma nica rea de memria contgua
Posso ter duas formas de endereamento no caso da gerncia de reas de memria
contguas:
direto
relativo
Endereamento Direto
Os endereos de um programa executvel so usados diretamente no acesso
memria principal
Estes endereos so definidos durante a compilao/lincagem
A posio do programa na memria est assim definida e no pode ser alterada
Endereo do Programa
Memria Principal
No caso de multiprogramao este tipo de endereamento pode gerar conflitos no
acesso memria j que a posio do programa na memria foi definida sem
conhecimento do que estava alocado
Memria Principal
Programa B
Programa A
Programas s podem ser carregados na memria se seus espaos de endereamento
so disjuntos
Uma alternativa a definio dos endereos somente durante a carga do programa
O espao de endereamento de um programa inicia sempre em 0 e podendo ser
facilmente relocados na carga pelo carregador
Csar A. F. De Rose e Fernando Gehm Moraes 26 Arquitetura de Computadores II - 01/03/05
ocupado
d:
MOV R1, adr
:
:
+d
Relocvel
Programa
Memria Principal
Carregador
A converso dos endereos pode atrasar consideravelmente a operao de carga
O programa no pode ser mudado de lugar durante a sua execuo (compactao,
swap)
Endereamento Relativo
Uma alternativa bem mais flexvel a composio do endereo somente na hora do
acesso
O programa carregado para a memria com seus endereos relativos (espao de
endereamento lgico inicia em 0)
O processador possui um registrador de endereamento (registrador de base) que
contm a base do espao de endereamento fsico para cada programa
Essa base somada ao endereo relativo do programa em cada acesso memria
Endereo do Programa
Memria Principal
Registrador de Base
+ d
b
d
b
O custo da converso pago em cada acesso memria
Nesse caso o programa pode ser trocado de lugar na memria em tempo de execuo
(compactao, swap)
4.3.2 Endereamento no-contguo
A quebra do programa em pedaos que so carregados em reas distintas de
memria sem a necessidade de respeitar qualquer ordem resulta em:
Um melhor aproveitamento da memria (menor fragmentao externa pelo
aproveitamento de lacunas)
A gerncia de memria fica mais trabalhosa
Csar A. F. De Rose e Fernando Gehm Moraes 27 Arquitetura de Computadores II - 01/03/05
A converso de endereos dita dinmica
Os endereos do programa (endereos lgicos) so convertidos na hora do acesso em
endereos fsicos (normalmente feito em hardware para acelerar o procedimento, Ex.
MMU Memory Manager Unit)
Posso ter trs formas de endereamento no caso da gerncia de reas de memria
no-contguas:
Paginao
Segmentao
Segmento-paginao
Endereamento Paginado
Memria fsica quebrada em frames (moldura) com um tamanho fixo de 2k, 4k, ou 8k
Espao de endereamento lgico do programa quebrado em pginas que possuem o
mesmo tamanho dos frames
Quando o processo executado todas as suas pginas so carregadas para frames
livres da memria (qualquer pgina em qualquer frame livre)
Unidade de gerncia de memria de tamanho fixo (pgina-frame)
Frame 0
Frame 1
Frame 2
Frame 3
Frame 4
Frame 5
Frame 6
.
.
.
Pgina 0
Pgina 1
Pgina 2
Pgina 3
Pgina 4
Pgina 5
Pgina 6
EE Lgico do Programa
13 Kbytes
Memria Principal
Pgina 2 Kbytes
Converso de endereos
p d
Base da tabela de pginas (registrador)
Tabela de Pginas (Page Table)
+
Memria Principal
f
d
p f
Endereo Lgico
Endereo Fsico
Csar A. F. De Rose e Fernando Gehm Moraes 28 Arquitetura de Computadores II - 01/03/05
Nmero de bits usados para d determina o tamanho das pginas (e frames)
Nmero de bits usados para p determina o nmero mximo de pginas de um
processo
Nmero de bits de f determina o nmero total de frames da memria principal e dado
pela diviso do tamanho da memria principal pelo tamanho da pgina (Ex: MP
1Mbyte (2
20
), p 10 bits (2
10
pgina de 1kbyte) resulta em 10 bits para f (2
10
1024
frames na MP)
Unidade de gerncia de tamanho fixo no gera fragmentao externa e gera
fragmentao interna
A tabela de pginas (page table) usada para a converso de pginas em frames
(uma tabela para cada processo)
Tabela de pginas pode ser armazenada em:
Registradores: rpido mas limita tamanho da tabela
Memria principal (rea do sistema): lento, pois so necessrios dois acessos mas
tabela de pginas pode ter tamanho ilimitado (porm alguns sistemas limitam a
tabela pelo tamanho dapgina)
TLB (Translation Lookaside Buffer): rea de memria associativa usada como
cache para as converses mais efetuadas (ver 4.2.3)
Tamanho da pgina
Pequena: menor fragmentao interna, tabela de pginas fica maior
Grande: maior fragmentao interna, tabela de pginas fica menor
Deve ser considerada tambm a operao de transferncia para o nvel mais
baixo, o disco, cuja unidade de transferncia o setor com normalmente 512 bytes
Tabela de Frames (Frame Table) usada para controle de quais frames se encontram
livres ou no esto sendo mais usados (para alocao e substituio de pginas)
Uma tabela de frames para todo o sistema
Seu tamanho fixo, j que o nmero de frames da memria principal conhecido
(tamanho da memria / tamanho da pgina)
Procura por first-found (qualquer lacuna serve para qualquer pgina)
Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU)
Quando os processos morrem suas pginas na tabela de frames so marcadas como
livres
possvel o compartilhamento de frames entre vrios processos (leitura)
Fcil de implementar com vrias tabelas de pgina apontando para o mesmo frame
Controle adicional para verificao de quando frame compartilhado pode ser
desalocado
Csar A. F. De Rose e Fernando Gehm Moraes 29 Arquitetura de Computadores II - 01/03/05
Vantagens/Desvantagens dessa tcnica
Gerncia da memria principal
simples:
Fragmentao Interna
- Substituio 1:1 (pgina e
frame tem mesmo tamanho)
- Alocao com primeiro frame
livre
Pginas no do noo de
localidade
Sem fragmentao externa (rea
livre em frames, sempre cabem
pginas)
Endereamento Segmentado
No divido a memria fsica, posso alocar unidade em qualquer posio
Unidade de gerncia tamanho varivel denominada segmento
Segmento definido pelo usurio ou pelo compilador e resulta em uma maior
localidade
Endereos de um mesmo segmento esto relacionados
Gerncia de memria mais preocupada com a viso do usurio
Exemplo de segmentos: dados, cdigo, pilha
Quando o processo executado todos os seus segmentos so carregados para a
memria (em qualquer posio livre)
EE Lgico do Programa
Memria Principal
Segmento 0
Segmento 2
Segmento 3
Segmento 1
Csar A. F. De Rose e Fernando Gehm Moraes 30 Arquitetura de Computadores II - 01/03/05
Converso de endereos
s d
Base da tabela de segmentos (registrador)
Tabela de Segmentos (Segment Table)
+
+
>
Erro !!!
sim
no
Memria Principal
Endereo Lgico
Endereo Fsico
Segmentation
Fault
tamanho base
O deslocamento fornecido pelo usurio precisa ser comparado com o tamanho
do segmento para que no possam ocorrer invases de segmentos vizinhos
(este teste no era necessrio na paginao pela limitao do nmero de bits)
Nmero de bits usados para d determina o tamanho mximo dos segmentos
Nmero de bits usados para s determina o nmero mximo de segmentos que um
processo pode ter
Unidade de gerncia de tamanho varivel no gera fragmentao interna e gera
fragmentao externa
Procedimento de compactao da memria pode vir a ser necessrio por causa da
alta fragmentao externa
Segmentos so agrupados novamente eliminando lacunas (migrao de processos
alto custo)
Tabela de Segmentos (Segment Table) usada para encontrar a base de um segmento
na memria e verificar se o deslocamento requisitado pelo usurio se encontra dentro
do limite mximo do segmento (seu tamanho)
Tabela de segmentos pode ser armazenada em (igual a paginao):
Registradores: rpido mas limita tamanho da tabela
Memria principal (rea do sistema): lento, pois so necessrios dois acessos mas
tabela de segmentos pode ter tamanho ilimitado
TLB (Translation Lookaside Buffer): rea de memria associativa usada como
cache para as converses de endereo mais efetuadas (ver 4.2.3)
Tabela de Alocao (Allocation Table) usada para controle de quais lacunas se
encontram livres (para alocao e substituio de pginas)
Uma tabela de alocao para todo o sistema
Seu tamanho varivel, j que o nmero de reas da memria principal
inicialmente 1 (toda a memria) e ao longo da gerncia pode variar de acordo com
a incluso de reas ocupadas (uma rea ocupada no meio da memria faria a
tabela ficar com 3 entradas)
Procura por first-fit, next-fit, best-fit, worst-fit, etc.
Csar A. F. De Rose e Fernando Gehm Moraes 31 Arquitetura de Computadores II - 01/03/05
Liberao de segmentos pode resultar na juno de vrios segmentos e na
diminuio do nmero de entradas da tabela
Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU)
possvel o compartilhamento de segmentos entre vrios processos (leitura)
Fcil de implementar com vrias tabelas de segmento apontando para a mesma
rea de memria
Controle adicional para verificao de quando segmento compartilhado pode ser
desalocado
Vantagens/Desvantagens dessa tcnica
Fragmentao externa
Maior localidade na unidade de
gerncia (dados dentro do
segmento esto relacionados)
Gerncia da memria bem mais
complexa que na paginao por
causa da unidade varivel
Gerncia da tabela de alocao
Alocao e liberao de pginas
Verificao de segmentation
fault
Sem fragmentao interna
(unidade de tamanho varivel)
Compactao da memria pode ser
necessria (alto custo)
Endereamento Segmento-Paginado
Combinao entre segmentao e paginao
Aproveito a viso lgica de memria mais prxima do usurio da segmentao e a
gerncia de memria mais simples da paginao
Usurio aloca segmentos e estes so mapeados em um grupo de pginas
Memria fsica quebrada em frames (moldura) com um tamanho fixo de 2k, 4k, ou 8k
como na paginao, porm existe a informao de que pginas compem cada
segmento
Unidade de gerncia de memria na realidade de tamanho fixo (pgina-frame)
Csar A. F. De Rose e Fernando Gehm Moraes 32 Arquitetura de Computadores II - 01/03/05
Converso de endereos
p d
Tabela de Pginas (Page Table)
+
Base da tabela de segmento (registrador)
Memria Principal
f
d
p f
s
Tabela de Segmentos (Segment Table)
base +
Endereo Lgico
Endereo Fsico
Seqncia de um acesso
1. Com o numero do segmento descubro na tabela de segmentos a base da tabela de
pginas deste segmento (usando o registrador como base)
2. Com o nmero da pgina e a base da tabela de pginas descubro o frame
correspondente
3. Com o nmero do frame e o deslocamento dentro dele acesso a memria
Unidade de gerncia de tamanho fixo no gera fragmentao externa e gera
fragmentao interna como na paginao
Tabela de Segmentos (Segment Table) usada para a obteno da base da tabela de
pginas do segmento desejado uma para cada processo
A tabela de pginas (page table) usada para a converso das pginas de cada
segmento em frames (uma tabela para cada segmento de cada processo)
Tabela de Frames (Frame Table) usada para controle de quais frames se encontram
livres ou no esto sendo mais usados (para alocao e substituio de pginas)
como na paginao
Uma tabela de frames para todo o sistema
Seu tamanho fixo, j que o nmero de frames da memria principal conhecido
(tamanho da memria / tamanho da pgina)
Procura por first-found (qualquer lacuna serve para qualquer pgina)
Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU)
Quando os processos morrem suas pginas na tabela de frames so marcadas como
livres
Csar A. F. De Rose e Fernando Gehm Moraes 33 Arquitetura de Computadores II - 01/03/05
Vantagens/Desvantagens dessa tcnica
Gerncia da memria principal
simples:
- Substituio 1:1 (pgina e
frame tem mesmo tamanho)
- Alocao com primeiro frame
livre
Trs acessos so necessrios para
cada operao com a memria
Segmento d noo de localidade
um grupo de pginas
Preciso mais memria para tabelas
Sem fragmentao externa (rea
livre em frames, sempre cabem
pginas)
Fragmentao Interna
4.3.3 Otimizao do endereamento no-contguo (TLB)
Problema: tabelas de pginas e de segmento acabam ficando to grandes que
precisam ser armazenadas na memria
Dessa forma para cada acesso memria se faz necessrio no mnimo um outro
acesso (na segmento paginada at dois acessos) para a obteno das tabelas
reduzindo consideravelmente a velocidade de acesso memria
Para acelerar a converso usada uma rea de memria associativa adicional
chamada TLB Translation Lookaside Buffer
A TLB funciona como uma cache guardando as converses mais usadas
Como uma memria associativa, a procura feita em paralelo em todas as suas
posies
Caractersticas
Tamanho da linha 4-8 bytes (pode conter segmento, pgina e frame)
Nmero de linhas 24-1024
Ex: TLB de um Pentium III possui 32 linhas
Hit-time 1 ciclo, Miss-Penalty 10-30 ciclos
Hit-ratio aproximadamente 99%
Como pode ser to alto? Devido a localidade dos acessos!!!
Exemplo de utilizao (segmento paginao)
Csar A. F. De Rose e Fernando Gehm Moraes 34 Arquitetura de Computadores II - 01/03/05
Segmento Deslocamento
Base da tabela (registrador)
+
MP
+
Pgina
Tabela de Segmentos
Tabela de Pginas
Frame Segmento Pgina
TLB (Memria Associativa)
f d
A TLB consultada antes do acesso as tabelas e se ocorrer um hit retorna o frame
desejado
Ocorrendo um miss a consulta as tabelas feita normalmente e o frame obtido
colocado na TLB no lugar da converso menos recentemente utilizada (LRU)
4.4 Memria Virtual
Na gerncia de memria convencional as unidades (pginas ou segmentos) de um
programa eram todas carregadas para memria principal antes de sua execuo
Como vimos anteriormente, devido as regras da localidade, um programa s precisa
de algumas dessas unidades em um determinado momento
Dessa forma possvel gerenciar a memria de forma que s as unidades que so
necessrias em um determinado momento se encontrem na memria principal
A memria fsica pode ser melhor aproveitada dessa forma sendo possvel:
A execuo de um programa maior que a memria
A execuo de vrios programas ao mesmo tempo que somados so maiores
que a memria
O processador gera endereos para um espao de endereamento lgico bem maior
do que o tamanho da memria fsica (da o nome virtual j que essa quantidade de
memria no existe fisicamente na memria principal) e o SO aplica as seguintes
regras:
Quando um processo inicia suas unidades no so todas carregadas para memria
Nas tabelas de converso de endereos indicado que as unidades no esto na
memria (Ex: bit de validade)
Quando uma converso de endereo se faz necessria, o sistema gera um page-
fault e manda buscar a pgina do disco (so carregadas por demanda). O
processo perde o processador
Csar A. F. De Rose e Fernando Gehm Moraes 35 Arquitetura de Computadores II - 01/03/05
O processo s vai para a fila de pronto quando a unidade estiver disponvel na
memria
Se a memria ficar cheia, novas unidades so colocadas no lugar das menos
recentemente usadas (LRU)
Atualmente so comuns EE (espao de endereamento) lgicos de 4 Gigabytes (2
32
)
por causa dos registradores de endereamento de 32 bits. Os novos processadores de
64 bits possibilitaro EE lgicos maiores
Essa tcnica tem os seguintes custos associados:
Miss-penalty alto pois a unidade tem que ser buscada do disco
Aumenta o nmero de trocas de contexto por causa de page-faults e de eventos a
serem tratados (evento gerado quando a unidade foi trazida) o que gera um custo
para o SO
Um problema srio que pode ocorrer na gerncia de memria virtual Trashing
Trashing vem da palavra trash que significa lixo e indica que nada de produtivo
est sendo feito
Trashing ocorre quando o sistema fica a maior parte do tempo trocando pginas e
o processador no consegue executar nenhum processo
Isso resulta do fato de muitos processos estarem ativos e a memria fsica ser
muito pequena para acomodar suas unidades
Sendo assim, quando um processo ganha a CPU ele manda trazer suas unidades
e volta a dormir, quando essas unidades so trazidas elas apagam as unidades de
um outro processo por causa da pouca memria. Quando for a vez desse outro,
suas pginas j no esto mais na memria, e assim por diante ...
Thrashing
Taxa de utilizao do processador
Nmero de processos ativos
O grfico acima mostra que existe um nmero de processos ideal para que a
multiprogramao obtenha a maior taxa de utilizao do processador
Acima deste nmero o desempenho da mquina comea a diminuir. Este nmero
bastante dinmico e depende:
Da arquitetura da mquina
Do tamanho da memria principal
Do nmero de processos ativos
Do tipo de processos que esto ativos (io-bound, cpu-bound)
Csar A. F. De Rose e Fernando Gehm Moraes 36 Arquitetura de Computadores II - 01/03/05
Este efeito pode ser observado em PCs quando muitos processos esto ativos. A luz
do disco pisca intensamente e pouca coisa acontece. A soluo comprar mais
memria ou executar menos programas ao mesmo tempo (ou tornar a gerncia de
memria mais eficiente)
4.5 Estudo de Casos
A maioria dos sistemas operacionais modernos aplica a tcnica de memria virtual na
gerncia de memria
No caso de sistemas que executam em mltiplas plataformas a gerncia de memria
pode variar de caso para caso, dependendo do hardware disponvel (MMU Memory
Manager Unity)
4.5.1 UNIX e SOLARIS
Verses antigas do UNIX aplicavam um particionamento varivel da memria sem
memria virtual
Verses mais modernas (SVR4 e Solaris2.x) implementam memria virtual paginada
para os processos de usurio
A substituio de pginas feita com uma variao do algoritmo do relgio
Para as necessidades do kernel (pequenos blocos) utilizado uma variao do
algoritmo de buddy
4.5.2 Linux
Tem vrias caractersticas em comum com gerncia de outras implementaes de
UNIX mas tem suas peculiaridades
Implementa memria virtual paginada com uma tabela de pgina de trs nveis
(diretrio, diretrio intermedirio, pgina)
Diretrio
de pginas
Deslocamento
MP
Pgina
Diretrio Tabela de Pginas
Frame
f d
+
Base da tabela
de pginas
+
Base da tabela
de diretrios
(registrador)
10 5 12
Endereo Lgico 32 bits
Diretrio
intermedirio
de pginas
Diretrio
Base da tabela
de diretrios
intermedirios
+
5
Conceito de diretrio reduz o tamanho das tabelas aumentando a complexidade do
acesso (vrias consultas para converter o endereo)
A figura acima mostra apenas as tabelas usadas em uma converso mas a
estrutura das tabelas no linear e sim uma rvore (Vrias tabelas de diretrios
intermedirios para cada entrada da tabela de diretrios e vrias tabelas de
pginas para cada entrada de cada tabela de diretrios intermedirios!!!)
Csar A. F. De Rose e Fernando Gehm Moraes 37 Arquitetura de Computadores II - 01/03/05
Pginas de 4K na famla X86 e 8k na famla Alpha
Para facilitar a portabilidade tem um nvel intermedirio de gerncia de memria
Architecture Independent Memory Model
A substituio de pginas feita com uma variao do algoritmo do relgio
Alocao dinmica feita na pilha do sistema (stack)
Para as necessidades do kernel (pequenos blocos) utilizado uma variao do
algoritmo de buddy. O linux implementa o Buddy sobre pginas mas subdivide-as em
menores unidades para melhor atender as necessidades do kernel
4.5.2 IBM OS/2 (hardware Intel)
Diretrio Deslocamento
Base da tabela
Segmentos (registrador)
+
MP
+
Pgina
Diretrio Tabela de Pginas
Frame
f d
+
Base da tabela
de pginas
Tabela de Descritores
Descritor de
segmentos
+
Base da tabela de
diretrios (registrador)
10 10 12
32
Seletor Deslocamento
32 14 2 Proteo
Endereo Lgico 48 bits
4.5.3 Windows 2000
Utiliza uma variao da memria virtual paginada
Divide o seu espao de memria virtual de 4 Gigabytes (registrador de 32 bits) em 2
Giga para os processos de usurio e 2 Giga para o sistema operacional
Quando um processo de usurio disparado ele recebe um nmero de frames de
memria (Working Set - WS)
Substituies de pginas so efetuadas apenas dentro deste WS, ou seja, s
pginas do mesmo processo so candidatas para a substituio
Se o nmero de substituies de um processo for grande e bastante memria
estiver disponvel, o WS pode ser aumentado
Se a memria livre ficar escassa, o sistema operacional diminui o WS dos
processos de usurio retirando as suas pginas menos recentemente utilizadas
Csar A. F. De Rose e Fernando Gehm Moraes 38 Arquitetura de Computadores II - 01/03/05
5 EXERCCIOS
1. O que vem a ser uma hierarquia de memria? Qual problema tento resolver com essa
soluo?
2. Se o tempo para ler um dado da memria principal aumenta com os vrios nveis de
uma hierarquia de memria, como o tempo mdio de acesso pode ficar melhor?
3. Qual o princpio que faz com que uma hierarquia de memria funcione e quais os seus
dois tipos (cite exemplos prticos)?
4. O que vem a ser miss-penalty? Por que ele tem que ser necessariamente expresso
por um tempo mdio?
5. Quais os dois principais problemas que os mapeamentos para memria cache tem
que resolver?
6. Compare o mapeamento de cache direto com o associativo em relao poltica de
substituio, uso de rea da cache com dados de controle, e a possibilidade de se ter
mau aproveitamento da cache.
7. Explique como funciona o mapeamento de cache conjunto associativo e responda
quais so as suas duas principais vantagens.
8. Para uma cache com 8 posies desenhe como fica a diviso de conjuntos no caso de
associatividade 1 way, 2 way, 4 way e 8 way.
9. Desenhe a diviso de bits do endereo lgico, calcule o aproveitamento efetivo e o
tamanho das memrias associativas em Kbytes (se for o caso) para as tcnicas de
mapeamento de memrias cache direta, totalmente associativa e conjunto associativa
com 4 conjuntos (4 Gbytes de memria, cache com 1024 linhas, bloco de 8 palavras
de 32 bits)
10. A rea de memria disponvel para implementao de uma cache L2 256 Kbytes.
Considerando que a memria a ser endereada possui 256 Mbytes (2
28
) e a cache
deve trabalhar com blocos de 8 palavras de 16 bits calcule para a tcnica direta e
conjunto associativa (16 conjuntos): Diviso de bits do endereo e nmero de linhas
da cach.
11. O que vem a ser o problema de integridade de dados na cache? Descreva de forma
sucinta as duas possveis estratgias para sua soluo.
12. Por que preciso trazer um dado da memria principal para a cache no caso de uma
escrita? Este dado no vai ser de qualquer forma apagado pelo dado a ser escrito?
13. Compare a tcnica de gerncia de memria paginada com a gerncia segmentada em
relao a fragmentao gerada, alocao de unidades e substituio de unidades ?
14. Desenhe como fica a converso de endereos na gerncia de memria segmento-
paginada e descreva os passos de uma converso.
15. Faa uma tabela com o nmero de tabelas de pginas, tabelas de segmentos, tabelas
de frames e tabelas de gerncia de memria para as trs tcnicas de gerncia de
memria vistas em aula.
16. O que vem a ser trashing e qual a sua principal causa?

You might also like