Você está na página 1de 19

ARQUITETURA DE COMPUTADORES II

1 INTRODUO

Nos ltimos anos vem se investindo muito no aumento da velocidade dos


processadores, que est ocorrendo de forma significativa

UNIDADE 2: GERNCIA DE MEMRIA

Porm, a velocidade de processamento de um sistema no determinada somente


pela velocidade do processador

Contedo:

Pouco adianta um processador muito rpido se a alimentao deste processador com


dados no conseguir acompanhar, pelo menos aproximadamente, o mesmo ritmo

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

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

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

Arquitetura de Computadores II - 01/03/05

O algoritmo de acesso neste caso o seguinte:


1. ir at a estante de livros

todos os livros que quero no cabem na mesa

2. procurar livro desejado

vou tomar um caf e chega um colega e pega a mesa (s que o trabalho dele

sobre Arquitetura de Computadores)

3. levar livro at a cadeira


4. consultar livro

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

5. se no terminou ir para 1

Situaes complicadoras

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

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

Transferncia
1 segundo
Procura
1 segundo

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

Transferncia
1 minuto

seguinte ser referenciado em pouco tempo, Ex: Execuo Seqencial


(Localidade Espacial)
se um endereo foi referenciado, existe grande probabilidade de ser referenciado
Procura
1 minuto

novamente em pouco tempo, Ex: Loops (Localidade Temporal)

Nveis intermedirios usados para amortizar a diferena de velocidade entre


processador e memria
Registradores

O algoritmo de acesso neste caso o seguinte:


1. ir at a estante de livros
2. procurar livros desejados

L1

3. levar livros at a mesa


4. consultar livros

Maior
tamanho

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

Csar A. F. De Rose e Fernando Gehm Moraes

Arquitetura de Computadores II - 01/03/05

CPU
Maior
velocidade

L2

Maior
custo (MB)

Memria
Principal

Memria
Secundria
Csar A. F. De Rose e Fernando Gehm Moraes

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

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:

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

Registradores
L1
L2
principal

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

Tamanho

Custo
(por MB)

Ciclos CPU

32-64 bits

---

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)

Ciclos CPU

32-64 Kbytes

---

Uma varredura seqencial tambm no uma soluo aceitvel, pelo tempo que
levaria (no esquecer que o objetivo acelerar o acesso)

50 Us$

8-35 ns

512Kbytes -2 Mbytes

40-120 ns

64 Mbytes 1 Gbyte

1 Us$

5 ms

6 Gbytes-128 Gbytes

0.02 Us$

secundria

3 GERNCIA DE MEMRIAS CACHE

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

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

Direto

Associativo

Conjunto associativo

Algumas definies importantes

3.1.1 Mapeamento Direto

Hit dado encontrado no nvel procurado

Forma mais simples de mapeamento

Miss dado no encontrado no nvel procurado

Posio na cache depende do endereo da palavra

Hit-rate (ratio) percentual de hits no nvel, Ex: 70%

Cada palavra possui uma posio fixa na cache

Miss-rate (ratio) percentual de misses no nvel, Ex: 30% (complementar ao Hit-rate)

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

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

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):

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

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

Arquitetura de Computadores II - 01/03/05

00 01 10 11

Endereo 32 bits (4 Giga)


Tag

Linha
10 bits

22 bits
0 1 2 3
00000

Dados
Vlido

11100

00100

Tag

Dados

0
1
.
.
.

Hit

1023
0 1 2 3

...

31

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
1
001
0
0
1
000

22 bits

32 bits

Neste caso o espao de endereamento tem 4 Gigabytes (232)

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)

Endereo 32 bits (4 Giga)


Tag
20 bits

Dado

Linha
10 bits

P
2 bits

00110110
Dados
Vlido

11100011
Hit

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)

Tag

Dados

0
1
.
.
.
1023

2. Verifico o bit de validade da posio da cache correspondente e se for


invalido acuso miss (vou para 4), seno verifico o Tag

20 bits

3. Se Tag diferente do endereo procurado acuso miss (vou para 4), seno
tenho hit e leio a posio (fim)

Mux
32 bits

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 (210) com palavra de 32 bits

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?

Endereo de 30 bits (1 Giga)


16 (Tag)
Csar A. F. De Rose e Fernando Gehm Moraes

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

11 (Linha)
8

3 (Palavra)
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)

1 (validade)

16 (tag)

Soluo para a procura: procura em paralelo. Uso memria associativa

Linha da Cache

Preciso poltica de substituio (Quando tenho miss e busco no nvel mais


abaixo, caso a cache j esteja cheia quem tirar para abrir lugar?)
Memria cara e de tamanho limitado

8*32 (bloco de dados)

Exerccio de mapeamento Parnteses representam contedo da posio


Cache Mapeamento Direto
MP

H
M

154
68
34
67
154
100
67
68
69
70
68

M
M
M
M
M
M
H
M
M
M
H

34

Contedo da cache
0

(68)

(100)
"
(68)

(68)

(69)

(154)

(34)

(154)

(70)

(67)

(67)

(68)

(69)

(34)

(67)

Vantagens/Desvantagens dessa tcnica de mapeamento


Barato (hardware)

Posso ter um mau aproveitamento

Soluo para a substituio: uso poltica

Procura simples (posio fixa


calculada)

das posies da cache


(dependendo dos endereos
gerados)

Possibilidades

Escolha da vtima no existe

Uso parte da rea da cache para


controle

( dada pelo mdulo)


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.

Endereo da memria em qualquer endereo da cache (100% de aproveitamento).


Conseqncias:

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.1.2 Mapeamento Associativo

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)

Tenho que fazer procura

Csar A. F. De Rose e Fernando Gehm Moraes

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

10

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 (210) com palavra de 32 bits

Neste caso o espao de endereamento tem 4 Gigabytes (232)

Endereo de 28 bits (256 Mega)


25 (Tag)

Endereo 32 bits (4 Giga)


Tag
32 bits
Dados

0
1
.
.
.

0
1
.
.
.

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

1023

1023

32 bits

Memria Associativa

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)

Endereo 32 bits (4 Giga)


Tag

Contedo da cache

MP

H
M

154
68
34
67
154
100
67
68
69
70
68

M
M
M
M
H
M
H
M
M
M
H

(154)

(154)

"

(69)

(68)

(100)

(70)

(34)

(68)

(68)

(67)

(67)

34

(69)

(70)

(68)

(34)

Vantagens/Desvantagens dessa tcnica de mapeamento

30 bits

2 bits
Dados
Dados

Tag
0
1
.
.
.
Hit

3 (Palavra)

Dados

Tag

Hit

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 ?

1023

0
1
.
.
.

Memria associativa tem alto custo

Dados de controle no ocupam

Necessito poltica de substituio

Custa tempo

Pode escolher mal

e tamanho limitado
Limita o nmero de linhas da cache

espao da cache (esto em rea


separada)

1023

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?

Mux

Memria Associativa

Melhor aproveitamento das


posies da cache, depois de
cheia, 100% de aproveitamento

32 bits

3.1.3 Mapeamento Conjunto associativo

Csar A. F. De Rose e Fernando Gehm Moraes

11

Arquitetura de Computadores II - 01/03/05

Compromisso entre mapeamento direto e totalmente associativo

Cache dividida em S conjuntos de N blocos/palavras

Csar A. F. De Rose e Fernando Gehm Moraes

12

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

Pergunta: Qual o tamanho das memrias associativas? Duas MAs de


512 * 31 (tag) = 15872 bits / 8 = 1984 bytes / 1024 = 1,93 Kbytes

O endereo i da memria principal pode mapear para qualquer endereo no conjunto


(i mod S) da cache

Como ficaria a mesma cache com 4 conjuntos (S=4)?

Endereo 32 bits (4 Giga)

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?)

Tag

Dados

0
1

Dados
0
1

256

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)

Tag

4. Seno tenho hit e acesso memria cache com o ndice fornecido pela
memria associativa e efetuo a leitura (fim)

Hit

5. Se no existir posio livre no conjunto escolho um endereo para substituir


(LRU)

0
1

.
.
.
1023

256

32 bits

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)

Memrias Associativas

Diviso de bits no registrador de endereamento

Exemplo de uma cache com 1024 posies (210) com palavra de 32 bits e 2
conjuntos (S=2)

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)

Endereo 32 bits (4 Giga)


Tag
31 bits

2 bits

Tag

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)

30 bits

Endereo de 32 bits (4 Giga)

28 (Tag)

1 bit

Cache Mapeamento Conjunto


Associativo 2 Conjuntos
Contedo da cache

Dados

Hit

512

0
1

0
1

.
.
.

512

1023

2 (Palavra)

Exerccio de mapeamento Parnteses representam contedo da posio

Dados

0
1

2 (Conjunto)

32 bits
Memrias Associativas
32

Neste caso o espao de endereamento tem 4 Gigabytes (2 )

Pergunta: Quanto se tem efetivamente de dados nessa cache? 100%

MP

H
M

Conjunto 1
0

Conjunto 2
2
3

154
68
34
67
154
100
67
68
69
70
68

M
M
M
M
M
M
H
M
M
M
H

(154)

(34)

(100)
"

(70)

(68)

(154)

(68)

(68)

(67)

(67)

(69)

34

(34)

(68)

(67)

(69)

2
Csar A. F. De Rose e Fernando Gehm Moraes

13

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

14

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
1

Direto

Conjunto-associativo
(4 conjuntos)

Conjunto-associativo
(2 conjuntos)

Assumindo um endereamento de 64 bits

5 (Palavra)

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

Uso a totalidade da rea da cache


para dados (os bits de controle
esto nas memrias associativas)

Custa tempo
Pode escolher mal

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 (226) e a cache
Csar A. F. De Rose e Fernando Gehm Moraes

15

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)

Endereo de 26 bits (64 Mbytes)

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

6 (Conjunto)

Diviso de bits do endereo:

A famlia Ultra Sparc utilizada nas estaes SUN (A verso III possui um pipeline
com 14 estgios Superpipeline)

53 (Tag)

Diviso de bits do endereo

Cache com mapeamento 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)?

Associativo

Desenho

Mapeamento

deve trabalhar com blocos de 16 palavras de 32 bits calcule para a tcnica direta,
totalmente associativa e conjunto associativa (4 conjuntos):

Arquitetura de Computadores II - 01/03/05

20 (Tag)

2 (Conjunto)

4 (Palavra)

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:

Endereo de 26 bits (64 Mbytes)


22 (Tag)

4 (Palavra)

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
Csar A. F. De Rose e Fernando Gehm Moraes

16

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

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)

Endereo de 28 bits (256 Mbytes)

Contedo da linha
? (Tag)

512 (Bloco)

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)
Poucos bits!!!
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)
Muitos bits!!!
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)
OK!!!
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:

21 (Tag)

4 (Conjunto)

3 (Palavra)

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

Endereo de 26 bits (64 Mbytes)


9 (Tag)

Diviso de bits do endereo

Diviso de bits do endereo:

Nmero de linhas da cache:

1 (Validade)

Cache com mapeamento conjunto associativo (16 conjuntos)

Cache com mapeamento direto


Tamanho da linha?

2) A rea de memria disponvel para implementao de uma cache L2 256 Kbytes.


Considerando que a memria a ser endereada possui 256 Mbytes (228) 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):

13 (Linha)

Diviso de bits do endereo:

4 (Palavra)

Endereo de 28 bits (256 Mbytes)

Aproveitamento efetivo:

25 (Tag)

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)

3 (Palavra)

Aproveitamento efetivo:

100% (s dados na cache, controle fica nas MAs)

Aproveitamento efetivo = 512 * 100 / 522 = 98,08%


Tamanho das memrias associativas:

No utiliza MAs
Csar A. F. De Rose e Fernando Gehm Moraes

17

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

18

Arquitetura de Computadores II - 01/03/05

3) com 14 bits para linha (podendo enderear 16384 linhas da cache)

Nmero de linhas da cache:

OK!!!

Diviso de bits do endereo:

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

Endereo de 28 bits (256 Mbytes)


11 (Tag)

14 (Linha)

3 (Palavra)

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

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:

Uma MA tem ento 16384 (linhas) * 25 (tag) = 409600 bits / 8 = 51200 bytes / 1024
= 50 Kbytes

Endereo de 28 bits (256 Mbytes)


11 (Tag)

Cache com mapeamento direto

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)

Tamanho da linha?

Contedo da linha
? (Tag)

128 (Bloco)

Aproveitamento efetivo = 128 * 100 / 140 = 91.42%


Tamanho das memrias associativas:

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:

No utiliza MAs nessa tcnica

3.2 Integridade dos dados na cache


Poucos bits!!!

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:

Endereo de 28 bits (256 Mbytes)


13 (Tag)

12 (Linha)

3 (Palavra)

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)

Endereo de 28 bits (256 Mbytes)


15 (Linha)

Como salvar essas alteraes?


Em que momento salvar as informaes?

19

Arquitetura de Computadores II - 01/03/05

Existem duas tcnicas para manter a Integridade dos dados


Write-through

3 (Palavra)

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
Csar A. F. De Rose e Fernando Gehm Moraes

Como saber que os dados foram alterados?

Muitos bits!!!

Diviso de bits do endereo:

10 (Tag)

3 (Palavra)

Aproveitamento efetivo:

Nmero de linhas da cache:

1 (Validade)

14 (Linha)

Write-back

3.2.1 Write-through (escrevo atravs)

Tcnica mais antiga

Escrevo as alteraes em todos os nveis (escrevo atravs)

Csar A. F. De Rose e Fernando Gehm Moraes

20

Arquitetura de Computadores II - 01/03/05

Quando? Sempre que escrevo

Quanto? Somente a palavra alterada

Vantagens / Desvantagens dessa tcnica

3.3.2 Escrita
1. Verifico se foi hit, se no foi vou para 3

Dado sempre atual em todos os

Escreve mais vezes

nveis

Precisa mais do barramento

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 Writethrough escrevo palavra tambm nos nveis mais baixos. Se Write-back ligo
dirty-bit. Vou para 8

Escreve menos dado

3.2.2 Write-back (escrevo de volta)

Tcnica mais recente

Escrevo alteraes s quando substituo

Quando: substituio

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.

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

8. Pronto

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

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

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)

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.

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

21

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

22

Arquitetura de Computadores II - 01/03/05

No final de cada uma dessas partes era colocado o cdigo responsvel pela

Maior
tamanho

carga da prxima parte que poderia ser sobreposta anterior j que os


endereos antigos no se faziam mais necessrios

Maior
velocidade

L2

O programador tinha controle total da memria da mquina e era responsvel

pela troca das partes

Memria
Principal

Maior
custo por
(MB)

- 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

Memria Secundria (Disco)

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

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

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)

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.)

4.3 Endereamento da memria principal

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

Problema: como os endereos utilizados em um programa so usados para acessar


posies da memria principal

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

23

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

24

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

ocupado

MOV R1, adr


:

d:

+d

Carregador
Programa
Relocvel

Endereamento Direto

Os endereos de um programa executvel so usados diretamente no acesso


memria principal

Estes endereos so definidos durante a compilao/lincagem

A converso dos endereos pode atrasar consideravelmente a operao de carga

A posio do programa na memria est assim definida e no pode ser alterada

O programa no pode ser mudado de lugar durante a sua execuo (compactao,


swap)

Memria Principal

Memria Principal

Endereamento Relativo

Endereo do Programa

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

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


Memria Principal

Registrador de Base

Memria Principal

b
Endereo do Programa

Programa A

d
+

Programa B

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

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

Csar A. F. De Rose e Fernando Gehm Moraes

25

Arquitetura de Computadores II - 01/03/05

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

26

Arquitetura de Computadores II - 01/03/05

A converso de endereos dita dinmica

Nmero de bits usados para d determina o tamanho das pginas (e frames)

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)

Nmero de bits usados para p determina o nmero mximo de pginas de um


processo

Posso ter trs formas de endereamento no caso da gerncia de reas de memria


no-contguas:

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 (220), p 10 bits (210 pgina de 1kbyte) resulta em 10 bits para f (210 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:

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)

Memria Principal

EE Lgico do Programa
13 Kbytes

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

.
.
.

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)

Pgina 2 Kbytes

Converso de endereos
Tabela de Pginas (Page Table)

Base da tabela de pginas (registrador)

Quando os processos morrem suas pginas na tabela de frames so marcadas como


livres

possvel o compartilhamento de frames entre vrios processos (leitura)

Memria Principal

Fcil de implementar com vrias tabelas de pgina apontando para o mesmo frame

Controle adicional para verificao de quando frame compartilhado pode ser


desalocado

d
f

Endereo Lgico

Endereo Fsico

Csar A. F. De Rose e Fernando Gehm Moraes

27

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

28

Arquitetura de Computadores II - 01/03/05

Vantagens/Desvantagens dessa tcnica

Converso de endereos
Base da tabela de segmentos (registrador)

Gerncia da memria principal


simples:
-

Substituio 1:1 (pgina e


frame tem mesmo tamanho)

Alocao com primeiro frame


livre

Pginas no do noo de
localidade
s

Endereo Lgico

no

Endereo Fsico

Erro !!!
Segmentation
Fault

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)

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

Memria Principal

EE Lgico do Programa

Segmento 1

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):

Segmento 2
Segmento 3

Arquitetura de Computadores II - 01/03/05

Segmentos so agrupados novamente eliminando lacunas (migrao de processos


alto custo)

Segmento 0

29

>

sim

No divido a memria fsica, posso alocar unidade em qualquer posio

Csar A. F. De Rose e Fernando Gehm Moraes

tamanho base

Endereamento Segmentado

Memria Principal

Fragmentao Interna

Sem fragmentao externa (rea


livre em frames, sempre cabem
pginas)

Tabela de Segmentos (Segment Table)

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

30

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

Converso de endereos
Tabela de Segmentos (Segment Table)

Possui campos adicionais para controle da poltica de troca de pginas (LRU, LFU)

Base da tabela de segmento (registrador)

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

base

Tabela de Pginas (Page Table)

Vantagens/Desvantagens dessa tcnica


Fragmentao externa

Gerncia da memria bem mais


complexa que na paginao por
causa da unidade varivel

Maior localidade na unidade de


gerncia (dados dentro do
segmento esto relacionados)

Sem fragmentao interna


(unidade de tamanho varivel)

Gerncia da tabela de alocao

Alocao e liberao de pginas

Verificao de segmentation
fault

Memria Principal

d
f

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

Compactao da memria pode ser


necessria (alto custo)

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

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

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)

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

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

Unidade de gerncia de memria na realidade de tamanho fixo (pgina-frame)

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)

Csar A. F. De Rose e Fernando Gehm Moraes

31

Arquitetura de Computadores II - 01/03/05

Quando os processos morrem suas pginas na tabela de frames so marcadas como


livres

Csar A. F. De Rose e Fernando Gehm Moraes

32

Arquitetura de Computadores II - 01/03/05

Vantagens/Desvantagens dessa tcnica


Base da tabela (registrador)

Gerncia da memria principal


simples:
- Substituio 1:1 (pgina e
frame tem mesmo tamanho)
- Alocao com primeiro frame
livre

Tabela de Pginas
+
Tabela de Segmentos
+

Trs acessos so necessrios para


cada operao com a memria

TLB (Memria Associativa)


Segmento

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

Pgina

MP

Frame

4.3.3 Otimizao do endereamento no-contguo (TLB)

Segmento

Pgina

Deslocamento

Problema: tabelas de pginas e de segmento acabam ficando to grandes que


precisam ser armazenadas na memria

A TLB consultada antes do acesso as tabelas e se ocorrer um hit retorna o frame


desejado

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

Ocorrendo um miss a consulta as tabelas feita normalmente e o frame obtido


colocado na TLB no lugar da converso menos recentemente utilizada (LRU)

Para acelerar a converso usada uma rea de memria associativa adicional


chamada TLB Translation Lookaside Buffer

4.4 Memria Virtual

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

Na gerncia de memria convencional as unidades (pginas ou segmentos) de um


programa eram todas carregadas para memria principal antes de sua execuo

Caractersticas

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:

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

33

Arquitetura de Computadores II - 01/03/05

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 pagefault 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

34

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 (232)


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 ...
Taxa de utilizao do processador
Thrashing

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)
Endereo Lgico 32 bits
Diretrio
de pginas

Diretrio
intermedirio
de pginas

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

35

Arquitetura de Computadores II - 01/03/05

Base da tabela
de diretrios
+
(registrador)

Pgina

10

Diretrio

Diretrio

Base da tabela
de diretrios
intermedirios

Base da tabela
de pginas

MP

Deslocamento

12
Tabela de Pginas

Frame
+

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

36

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

5 EXERCCIOS

Deslocamento

2 Proteo

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.

32

7. Explique como funciona o mapeamento de cache conjunto associativo e responda


quais so as suas duas principais vantagens.

Tabela de Descritores

Descritor de
segmentos
Base da tabela
+
Segmentos (registrador)

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.

32
Diretrio

Pgina

10

MP
Deslocamento

10

Diretrio

Base da tabela de
diretrios (registrador)

12
Tabela de Pginas

Base da tabela
de pginas
+

3. Qual o princpio que faz com que uma hierarquia de memria funcione e quais os seus
dois tipos (cite exemplos prticos)?

5. Quais os dois principais problemas que os mapeamentos para memria cache tem
que resolver?

Endereo Lgico 48 bits

14

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?

4. O que vem a ser miss-penalty? Por que ele tem que ser necessariamente expresso
por um tempo mdio?

4.5.2 IBM OS/2 (hardware Intel)


Seletor

1. O que vem a ser uma hierarquia de memria? Qual problema tento resolver com essa
soluo?

Frame
+

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 (228) 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.

4.5.3 Windows 2000

Utiliza uma variao da memria virtual paginada

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?

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

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 ?

Quando um processo de usurio disparado ele recebe um nmero de frames de


memria (Working Set - WS)

14. Desenhe como fica a converso de endereos na gerncia de memria segmentopaginada e descreva os passos de uma converso.

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

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?

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

37

Arquitetura de Computadores II - 01/03/05

Csar A. F. De Rose e Fernando Gehm Moraes

38

Arquitetura de Computadores II - 01/03/05

Você também pode gostar