Você está na página 1de 58

Universidade de Bras lia Braslia

Organizao da memria
Organiza o e Organizao Arquitetura de Computadores

Objetivo
Apresentar uma organizao hierrquica da memria que possibilita um melhor desempenho do sistema computacional.

Controle
Datapath

Memria

Entrada Sada

Potncia: um grande problema


Vdd
Energia drenada da fonte na subida do sinal:

Energia R CVdd2 Potncia R CVdd2 f


A B A B

Potncia: um grande problema


Mtrica importante: total de energia consumida
Simplesmente baixar a freqncia no resolve: tudo fica mais lento (a energia total por operao a mesma)

preciso baixar a voltagem ou baixar a capacitncia.


Com voltagem mais baixa CMOS mais lenta.

Reduzindo energia/OP
ADD ADD MUX MUX ADD Mult Mult ADD

Mult Mult

Mult Mult

Mult Mult

Bsica Pipeline Paralelismo


Clock divide Capacitncia dobra Menor voltagem Mesmo clock Menor voltagem, etapas mais simples.

word

SRAM
Valores so armazenados num par de portas inversoras. Bastante rpida porm necessita mais espao que a DRAM (4 a 6 transistores).
bit bit

Clula SRAM 6 Transistores Word (seleo de linha)

Write:
1. Ativar as linhas de bit: bit = 1 e bit = 0 2. Selecionar linha. bit

Read:

bit

1. Pr-carga de bit e bit em Vdd ou Vdd/2 assegurar que so iguais! 2. Selecionar linha. 3. Clulas levam uma das linhas para low. 4. Sense amp na coluna detecta a diferena entre bit e bit

SRAM: organizao de 16-word x 4-bit


Din 3 Din 2 Din 1 Din 0
Precharge

WrEn

Wr Driver & - Precharger + SRAM Cell SRAM Cell

Wr Driver & - Precharger + SRAM Cell SRAM Cell

Wr Driver & - Precharger + SRAM Cell SRAM Cell

Wr Driver & - Precharger +


Word 0

A0 A1 A2 A3

Address Decoder

SRAM Cell
Word 1

SRAM Cell

:
SRAM Cell - Sense Amp +

:
SRAM Cell - Sense Amp +

:
SRAM Cell - Sense Amp +

:
Word 15

SRAM Cell - Sense Amp +

Dout 3

Dout 2

Dout 1

Dout 0

Qual mais longa: word line ou bit line?

SRAM: diagrama lgico


A
N

2N words x M bits

WE_L OE_L

SRAM

Write Enable normalmente active low (WE_L) Din and Dout so combinados para economia de pinos:
necessrio um novo sinal de controle: output enable (OE_L) WE_L ativado (Low), OE_L desativado (High)
D funciona como entrada de dados

WE_L desativado (High), OE_L ativado (Low)


D funciona como sada de dados

SRAM: timing
Write Timing: High Z

WE_L OE_L

2 N words x M bit SRAM


M

Read Timing:

D A OE_L WE_L

Data In Write Address

Data Out Junk Read Address

Data Out Read Address

Write Hold Time Write Setup Time

Read Access Time

Read Access Time

DRAM
Valor armazenado como carga num capacitor (necessita refresh). Bem menor, porm mais lenta que a SRAM (fator de 5 a 10).
Word line
Transistor de passagem Capacitor

Bit line

DRAM: clula de memria 1-Transistor


Write:
1. Ativa bit line 2. Seleciona linha (row)

row select

Read:
1. Pr-carga da bit line para Vdd 2. Seleciona linha (row) 3. Clula e bit line compartilham cargas
Pequena variao de voltagem na bit line

bit

4. Sentido (sense amp)


Pode detectar trocas de ~1 milho de eltrons

5. Write: re-escreve o valor

Refresh
1. Executa uma leitura em cada clula.

DRAM (square): organizao clssica


r o w d e c o d e r RAM Cell Array

bit (data) lines


Cada interseco representa uma clula 1-T DRAM

word (row) select

row address

Column Selector & I/O Circuits

Column Address

data

DRAM (4 Mbit): organizao lgica


Mem Memria DRAM
Buffer de endereos Decodificador linha
Decodificador Coluna

Data Out Data In

Sense Amps & E/S


Bit line

Array 2048 x 2048 Word line

A0 A10

11

Storage cell

bits por RAS CAS

coluna

Endere o Endereo

linha

N
Bloco Bloco Linha Linha Decod Decod 9:512 9:512
I/O I/O

Endereo
I/O I/O

128 128 K Kbits bits 512 SAmp 512 SAmp 128 Kbits bits 128 K
Decodificador Decodificador coluna coluna 9:512 9:512 Decodificador Decodificador coluna coluna 9:512 9:512

128 128 K Kbits bits 512 SAmp 512 SAmp 128 128 K Kbits bits

Bloco 0

Bloco Bloco Linha Linha Decod Decod 9:512 9:512

I/O I/O

I/O I/O

Controlador timing da memria


128 128 K Kbits bits SAmp 512 512 SAmp 128 128 K Kbits bits Bloco Bloco Linha Linha Decod Decod 9:512 9:512
I/O I/O

Controlador DRAM
128 128 K Kbits bits 512 512 SAmp SAmp 128 128 K Kbits bits
Bloco 3 Decodificador Decodificador coluna coluna 9:512 9:512

128 128 K Kbits bits 512 SAmp 512 SAmp 128 128 K Kbits bits

I/O I/O

128 128 K Kbits bits 512 512 SAmp SAmp 128 bits 128 K Kbits
Decodificador Decodificador coluna coluna 9:512 9:512

DRAM: sistema de memria

Dados
I/O I/O

I/O I/O

Bloco Bloco Linha Linha Decod Decod 9:512 9:512

DRAM (4 Mbit): organizao fsica

Tc = Tciclo + Tcontrolador + Tdriver


DRAM 2N x 1 DRAM N/2 2N x 1 DRAM 2N x 1 DRAM 2N x 1 Drivers de barramento W
128 128 K Kbits bits 512 512 SAmp SAmp 128 128 K Kbits bits

128 Kbits bits 128 K 512 SAmp 512 SAmp 128 Kbits bits 128 K

Seletor I/O Data Out Data In

DRAM: diagrama lgico


RAS_L CAS_L A
9

256K x 8 DRAM
8

OE_L WE_L D

Sinais de controle: RAS_L, CAS_L, WE_L, OE_L todos active low Din e Dout so combinados: D
WE_L ativado (Low), OE_L desativado (High)
D funciona como entrada.

WE_L desativado (High), OE_L ativado (Low)


D funciona como sada.

Endereos de linhas e colunas compartilham os mesmos pinos: A.


RAS_L vai para low: pinos A so lidos pela memria como endereo de linha. CAS_L vai para low: pinos A so lidos pela memria como endereo de coluna. RAS/CAS sensveis borda.

DRAM: write timing


Cada acesso DRAM comea com:
ativao de RAS_L 2 modos de escrita: early ou late c/CAS
DRAM WR Cycle Time RAS_L CAS_L A Row Address Col Address Junk

RAS_L CAS_L A
9

OE_L

256K x 8 DRAM
8

WE_L D

Row Address

Col Address

Junk

OE_L WE_L D Junk Data In WR Access Time Ciclo Early Wr: WE_L ativado antes de CAS_L Junk Data In WR Access Time Ciclo Late Wr: WE_L ativado depois de CAS_L Junk

DRAM Read Timing


Cada acesso DRAM comea com:
ativao de RAS_L 2 modos de leitura: early ou late c/CAS
DRAM Read Cycle Time RAS_L CAS_L A Row Address Col Address Junk

RAS_L CAS_L A
9

OE_L

256K x 8 DRAM
8

WE_L D

Row Address

Col Address

Junk

WE_L OE_L D High Z Junk Read Access Time Data Out High Z Output Enable Delay Data Out

Ciclo Early Read: OE_L ativado antes de CAS_L

Ciclo Late Read: OE_L ativado depois de CAS_L

DRAM: parmetros de timing.


tRAC: tempo mnimo entre a descida de RAS e dado vlido na
sada.
velocidade da DRAM. Para uma DRAM rpida de 4Mb tRAC = 60 ns

tRC: tempo mnimo entre o incio de um acesso de linha e o incio


do prximo acesso de linha.
tRC = 110 ns para uma DRAM 4Mb com um tRAC of 60 ns

tCAC: tempo mnimo entre a descida de CAS e dado vlido na


sada.
15 ns para uma DRAM de 4Mb com um tRAC of 60 ns

tPC: tempo mnimo entre o incio de um acesso de coluna e o


incio do prximo acesso de coluna.
35 ns para uma DRAM de 4Mb com um tRAC of 60 ns

10

DRAM: desempenho
Uma DRAM de 60 ns (tRAC) pode
executar um acesso linha somente a cada 110 ns (tRC) executar um acesso coluna em 15 ns (tCAC), porm o tempo entre dois acessos colunas de pelo menos 35 ns (tPC).
Na prtica varia em torno de 40 a 50 ns devido a atrasos externos de endereamento e barramentos.

Estes tempos no incluem o tempo de obteno do endereo do microprocessador nem o overhead do controlador de memria.
DRAMs paralelas, controlador externo de memria, barramentos, mdulos SIMM, pinos 180 ns to 250 ns de latncia memria-processador bom para uma DRAM 60 ns (tRAC)

CPU CPU

Melhorando o desempenho
Facilitando a leitura de mltiplas words com a utilizao de bancos de memria.

Cache Cache

CPU CPU

CPU CPU

Bus Bus

Multiplexador Multiplexador

Cache Cache

Cache Cache Memria Memria

Bus Bus Memria Memria Memria Memria Memria Memria Memria Memria banco banco 0 0 banco banco 1 1 banco banco 2 2 banco banco 3 3

Bus Bus
Memria Memria

Simples: CPU, cache, bus, memria mesma largura (32 bits)

Wide: CPU/Mux 1 word; Mux/Cache, bus, memria N words (Alpha: 64 bits & 256 bits)

Interleaved: CPU, Cache, bus 1 word Memria N mdulos (4 mdulos); exemplo word interleaved

11

Memria interleaved
ENDERE ENDEREOS

M dulo 0 Mdulo 0

M dulo 1 Mdulo 1

M dulo N-1 Mdulo N-1

DADOS

Memria interleaved
A idia bsica de um esquema de memria interleaved (N-way) organizar N mdulos de memria de modo que N endereos seqenciais, a0, a1, , aN-1 sejam distribudos atravs dos mdulos de acordo com a seguinte regra: endereo ai atribudo ao mdulo Mj se j = i mod N
Endereo Banco 0 Endereo Banco 1 Endereo Banco 2 Endereo Banco 3

0 4 8 12

1 5 9 13

2 6 10 14

3 7 11 15

12

Memria: desempenho
Tempo de ciclo Tempo de acesso Tempo

DRAM (Read/Write)
Tempo de ciclo >> Tempo de acesso (2:1, porque?)

DRAM (Read/Write) Tempo de ciclo :


Com que freqncia podem ser realizados os acessos?

DRAM (Read/Write) Tempo de acesso:


Com que velocidade so obtidos os dados uma vez iniciado um acesso?

Interleaving: aumentando a largura de banda


Padro de acesso sem interleaving:
CPU CPU Memria Memria D1 disponvel Inicia acesso a D1

Inicia acesso a D2

Memria Memria banco banco 0 0 Memria Memria banco banco 1 1 Memria Memria banco banco 2 2 Memria Memria banco banco 3 3

Padro de acesso com 4-way interleaving:

CPU CPU

Acesso banco 0 Acesso banco 1 Acesso banco 2 Acesso banco 3 Banco 0 pode ser acessado novamente

13

Memria: desempenho
Modelo de timing 1 para envio de endereo, 4 para tempo de acesso, 10 para tempo de ciclo, 1 para enviar dado Bloco de cache de 4 words Simples = 4 x (1 + 10 + 1) Wide = 1 + 10 + 1 Interleaved = 1 + 10 + 1 + 3 = 48 = 12 = 15

Problema de latncia
Latncia: perodo de inatividade entre um estmulo e a resposta por ele provocada (Aurlio). Tempo decorrido entre uma requisio de informao do processador para a memria e a recepo da informao pelo processador.

TecnologiaTempo de acesso tpico$/Mbyte em 1997SRAM5 - 25 ns$100 - $250DRAM60 - 120 ns$5 -

14

Tunneling Magnetic Junction RAM (TMJ-RAM)

IBM breakthrough! Velocidade da SRAM, densidade da DRAM, no-voltil (sem refresh). Nova rea chamada Spintronics, combinao de spin (fsica quntica) e eletrnica. Mesma tecnologia utilizada em discos de alta densidade.

Synchronous DRAM (SDRAM)


Utiliza um clock para sincronizar entrada e sada num chip de memria. O clock coordenado com o clock da CPU de modo a sincronizar o timing da memria com o timing da CPU. SDRAM economiza tempo na execuo de comandos e transferncia de dados, contribuindo para o aumento do desempenho global do sistema.

15

DDR ou SDRAM II
Double-data rate SDRAM uma verso mais rpida da SDRAM, capaz de ler dados tanto na subida quanto na descida do clock do sistema, dobrando a taxa de transferncia do chip de memria.

RDRAM (Rambus DRAM)


RDRAM um projeto desenvolvido por uma nica empresa, a Rambus, Inc. extremamente rpida. Utiliza um canal de grande largura de banda para transmitir dados a velocidade at dez vezes mais rpida que a DRAM standard.

SLDRAM (Synclink DRAM)


SLDRAM a maior concorrente da RDRAM. Desenvolvida por um consrcio de fabricantes de chips, Synclink estende a arquitetura Synchronous DRAM four-bank para 16 banks e incorpora uma nova interface e lgica de controle para aumentar o desempenho.

16

Hierarquia da memria
Velocidade Mais rpida CPU Memria Memria Tamanho Menor Custo ($/bit) Mais alto

Memria Mais lenta Maior Mais baixo

Hierarquia da memria
CPU

Nvel 1

Nvel 2

Distncia da CPU em tempo de acesso

...
Nvel n
Tamanho da memria em cada nvel

17

Hierarquia de memria de um sistema computacional moderno


Memria
secundria

Memria
secundria

Fita
10s s 10s Tbs

Processador Processador
Controle Controle

Memria principal Cache nvel 2 SRAM 10s ns 100s Kbs


1

Disco
10s ms 10s Gbs

DRAM 100s ns 100s Mbs

Registros

Hierarquia da memria
Controlador cache

Processador
Memria Local Registros - b Cache - Kb
Memria cache SRAM
Kb

Memria Secundria (discos)


Gb

Memria principal DRAM


Mb

10 000 000 000

Data Data path path

10 000 000

100

10

Cache nvel 1 1s ns 1s Kbs

18

Hierarquia da memria
Tem como objetivo estabelecer, atravs de meios arquiteturais, um subsistema de memria que apresenta ao usurio a capacidade (virtualmente ilimitada) da memria secundria com a velocidade dos componentes mais rpidos (memria local ou cache).

Hierarquia da memria
Este objetivo alcanado pela combinao dos seguintes meios:
Memrias interleaved, onde a informao distribuda em vrios mdulos de memria podendo ser acessada em paralelo. Projeto e implementao de um mecanismo de memria virtual que oferece ao usurio a iluso de uma memria principal ilimitada com um mnimo de latncia. Gerenciamento eficiente do subsistema memria principal/memria cache, de modo que as requisies de instrues e dados possam ser resolvidas mais rapidamente pela memria cache.

19

Desempenho
Eficincia = f (freqncia de faltas) Porque latnciamemria secundria >> latnciamemria principal Excessivas faltas resultam em muito tempo despendido transferindo dados para a memria principal.

Desempenho
Transferncia de blocos para minimizar freqncia de faltas O bloco no contm somente o item que falta mas tambm os itens com expectativa de serem referenciados num futuro imediato.

20

Princpio da localidade
Um princpio que torna a existncia de uma hierarquia de memria uma boa idia. o que faz funcionar a hierarquia de memria. Se um item referenciado, a tendncia que ele seja referenciado novamente em breve (localidade temporal) e, itens prximos sero referenciados em breve (localidade espacial). Porque o cdigo possui estes tipos de localidade?

Princpio da localidade
Localidade espacial
Os endereos gerados por um programa normalmente esto restritos a uma pequena regio do espao de endereamento virtual (instrues de um programa e estruturas de dados).
Probabilidade de referncia

Espao de endereamento virtual

2N - 1

21

Princpio da localidade
Localidade temporal
O conjunto de endereos varia lentamente no tempo. Se um item referenciado, itens cujos endereos so prximos tendem a ser referenciados brevemente (execuo de loops).

Resumindo
Dois tipos de localidade:
Localidade temporal (localidade no tempo): se um item referenciado, a tendncia que ele seja referenciado novamente em breve. Localidade espacial (localidade no espao): se um item referenciado, itens vizinhos tendem a ser referenciados em breve.

Tirando vantagem do princpio da localidade:


Oferecer ao usurio a maior quantidade possvel de memria com a tecnologia mais barata. Providenciar acesso com a velocidade oferecida pela tecnologia mais rpida.

DRAM lenta porm barata e densa:


Boa escolha para oferecer bastante memria ao usurio.

SRAM rpida porm cara e no muito densa:


Boa escolha para oferecer tempo de acesso rpido ao usurio.

22

Memria cache (cache)


Se a memria virtual cria a iluso de uma memria principal, fsica, ilimitada e mais rpida que a secundria, o objetivo da memria cache criar outra grande iluso: que as referncias memria sero atendidas na velocidade do processador.

Memria cache
Processador

Controlador cache

Memria cache SRAM

Memria principal DRAM

Hierarquia memria cache/memria principal

23

Memria cache

endereo_fsico

buffer de endereos

Memria Principal

endereo

informao

cache

Traduo de endereo
informao se $ k | cache(k ).endereo = endereo_fsico dados ento nova_informao = cache(k ).informao seno nova_informao = memria(endereo_fsico) $ l | nova cache(l ).endereo = endereo_fsico nova cache(l ).informao = memria(endereo_fsico) buffer de

Memria cache
(Caractersticas de projeto)

Poltica de alocao Tamanho e natureza dos blocos transferidos Poltica de substituio Tamanho do cache Poltica de atualizao da memria principal Coerncia em sistemas multiprocessados

24

Acertos x falhas
Read hits
o que queremos!

Read misses
pausa a CPU, busca o bloco na memria, escreve na cache, restart

Write hits
pode atualizar dado na cache e na memria (write-through) escreve o dado somente na cache (write-back na memria depois)

Write misses
leva o bloco inteiro para a cache e ento escreve a word.

Medida de desempenho
O desempenho de uma memria cache depende de um conjunto de parmetros tais como tamanho de blocos, tamanho da cache e do tipo de mapeamento utilizado. Taxa de acerto: HR (hit rate) Nmero de referncias memria encontradas na cache Nmero total de referncias memria Taxa de falha: MR ( miss rate) MR = 1 - HR

25

Desempenho
Modelo simplificado:
tempo_de_execuo = (ciclos_de_execuo + ciclos_de_pausa) x tempo_de_ciclo ciclos_de_pausa = # de_instrues x taxa_de_falha x penalidade_de_falha

Dois modos de melhorar o desempenho: diminuir a taxa de falha diminuir a penalidade de falha

O que acontece se aumentarmos o tamanho do bloco?

Desempenho
Miss rate

40% 35% 30% 25% 20% 15% 10% 5% 0% 4 16 Block size (bytes) 64 1 KB 8 KB 16 KB 64 KB 256 KB 256

Aumentar o tamanho dos blocos tende a diminuir a taxa de falha:

Utilizar caches separadas pois h maior localidade espacial no cdigo:


Program gcc spice Block size in words 1 4 1 4 Instruction miss rate 6.1% 2.0% 1.2% 0.3% Data miss rate 2.1% 1.7% 1.3% 0.6% Effective combined miss rate 5.4% 1.9% 1.2% 0.4%

26

Alocao e organizao
Como sabemos se um dado se encontra na cache? Caso afirmativo como localiz-lo?

Mapeamento direto Mapeamento totalmente associativo Mapeamento associativo por grupos

Mapeamento direto
Memria cache
FRAME 000 FRAME 000 FRAME 001 FRAME 001 FRAME 010 FRAME 010 FRAME 011 FRAME 011 FRAME 100 FRAME 100 FRAME 101 FRAME 101 FRAME 110 FRAME 110 FRAME 111 FRAME 111

Para cada item da memria principal existe exatamente uma localizao na cache onde o item pode estar. Endereo mdulo(nmero_de_blocos_na_cache). Vrios itens da memria principal compartilham localizaes na cache.

BLOCO 000000 BLOCO 000000 BLOCO 000001 BLOCO 000001 BLOCO 000010 BLOCO 000010 BLOCO 000011 BLOCO 000011 BLOCO 000100 BLOCO 000100 BLOCO 000101 BLOCO 000101 BLOCO 000110 BLOCO 000110 BLOCO 000111 BLOCO 000111 BLOCO 001000 BLOCO 001000 BLOCO 001001 BLOCO 001001 BLOCO 001010 BLOCO 001010 BLOCO 001011 BLOCO 001011 BLOCO 001100 BLOCO 001100 BLOCO 001101 BLOCO 001101 BLOCO 001110 BLOCO 001110 BLOCO 001111 BLOCO 001111 BLOCO 010000 BLOCO 010000 BLOCO 010001 BLOCO 010001 BLOCO 010010 BLOCO 010010 BLOCO 010011 BLOCO 010011 BLOCO 010100 BLOCO 010100 BLOCO 010101 BLOCO 010101 BLOCO 010110 BLOCO 010110 BLOCO 010111 BLOCO 010111 BLOCO 011000 BLOCO 011000 BLOCO 011001 BLOCO 011001 BLOCO 011010 BLOCO 011010 BLOCO 011011 BLOCO 011011 BLOCO 011100 BLOCO 011100 BLOCO 011101 BLOCO 011101 BLOCO 011110 BLOCO 011110 BLOCO 011111 BLOCO 011111 BLOCO 100000 BLOCO 100000 BLOCO 100001 BLOCO 100001 BLOCO 100010 BLOCO 100010

. .. .. .

Memria Memriafsica fsica principal principal

27

31

Tag
20 Index VL
0 1 2 . . . . . 1021 1022 1023

12

11

Index
10

Word offset

Endereo

Tag

Data

Cache com mapeamento direto na arquitetura MIPS

20

32

=
Que tipo de localidade est sendo explorada?

Data Hit

31

Tag
16 VL Tag

16

15

Index
12 Data

2 1

Endereo

Block Word offset offset 2

4K entradas

16

32

32

32

32

= Explorando a localidade espacial Mux


Data

Hit

28

Mapeamento totalmente associativo


endereo fsico
endereo_bloco k2 palavra w igualdade endereo tag endereo tag bloco frame 0 bloco frame 1

. . .
endereo tag

. . .
bloco frame F-1

Mapeamento associativo por grupos


Address 31 30 12 11 10 9 8 22 8 3210 Index 0 1 2 253 254 255 22 32 V Tag Data V Tag Data V Tag Data V Tag Data

4-to-1 multiplexor

Hit

Data

29

Diminuindo a taxa de falha com associatividade


15% 12%

One-way set associative (direct mapped) Block 0 1 2 3 4 5 6 7 Tag Data

9% M is s r at e

Two-way set associative Set


6%

Tag Data Tag Data

0 1 2 3

3%

0% O n e- w a y Tw o-w ay A s s o ci ati vi ty F o ur - w a y 1 KB 2 KB 4 KB 8 KB Ei g h t- w a y 16 K B 32 K B 64 K B 12 8 KB

Four-way set associative Set 0 1 Tag Data Tag Data Tag Data Tag Data

Eight-way set associative (fully associative) Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

Diminuindo a penalidade de falha com cache multinveis


Adicionar um segundo nvel de cache:
normalmente a cache primria est no mesmo chip do processador utilizar SRAMs para adicionar outra cache acima da memria primria (DRAM) a penalidade de falha diminui se a informao se encontra na cache L2.

Exemplo:
CPI de 1.0 numa mquina de 500Mhz com uma taxa de falha de 5%, DRAM com tempo de acesso de200ns. Adicionar uma cache L2 com tempo de acesso de 20ns diminui a taxa de falha para 2%.

30

Poltica de substituio
FIFO
Fcil de implementar, mas tem uma taxa de falha aproximadamente 12% maior que

LRU
Melhor desempenho a um custo maior que FIFO.

Poltica de atualizao da memria principal


Copy-back
Quando uma palavra modificada na cache um flag ativado. A palavra correspondente na memria principal somente ser atualizada quando o bloco que contm a palavra modificada for substitudo na cache.

Write-through (store-through)
Sempre que uma palavra modificada na cache, ela atualizada na memria principal.

31

Memria virtual
um dos mecanismos utilizados para explorar a hierarquia de memria a fim de maximizar a disponibilidade de espao de memria sem pagar um custo excessivo de latncia. O papel especfico do mecanismo de memria virtual criar para o usurio a iluso de um espao de memria, diretamente enderevel, maior do que existe fisicamente.

Memria virtual
A implementao da memria virtual envolve pelo menos dois nveis de memria (primria e secundria) e uma ao cooperativa entre o processador e o sistema operacional.

32

Memria virtual
Definio Um endereo utilizado por um programador chamado de endereo virtual e o conjunto de tais endereos chamado de espao de endereamento virtual.

Memria virtual
Definio Um endereo de uma word (ou byte) na memria fsica chamado de endereo de memria ou endereo fsico ou real e o conjunto de tais endereos chamado de espao de memria ou espao de endereamento fsico ou real.

33

Memria virtual
Denominando N={0, 1, 2, , n-1} o espao de endereamento virtual e M={0, 1, 2, , m-1} o espao de endereamento fsico, em geral n >> m. O objetivo de um mecanismo de memria virtual realizar uma funo de mapeamento MAP: N M {f} | " a N MAP(a) = a' se o item no endereo virtual a est presente no endereo de memria a' M MAP(a) = f se o item no endereo virtual a no est presente em M

Memria virtual
a
PROCESSADOR PROCESSADOR
Espao de Espao de endereamento endereamento virtual N virtual N

Fault Fault handler handler

f
Tradutor de Tradutor de endereo endereo

a'

Memria Memria principal principal

Memria Memria secundria secundria

Hierarquia de memria

MAP: N M {f} | " a N MAP(a) = a' se o item no endereo virtual a est presente no endereo de memria a' M MAP(a) = f se o item no endereo virtual a no est presente em M

34

Memria virtual
A memria principal pode funcionar como cache para a memria secundria
Endereos virtuais Traduo de endereos Endereos fsicos

Vantagens: iluso de ter uma memria fsica maior realocao de cdigo proteo

Endereos em disco

Questes bsicas de projeto


A implementao de um sistema de memria virtual envolve, alm da hierarquia da memria fsica, uma cooperao entre o processador e o sistema operacional. Alm disso quatro questes influenciam as decises de projeto de uma memria virtual.

35

Questes bsicas de projeto


1. Tamanho e natureza das informaes dos blocos transferidos da memria secundria para a principal Paginao Segmentao

Questes bsicas de projeto


2. Quando um bloco de informao trazido para o espao de memria fsica, M, e M est ocupado, alguma regio de M deve ser liberada para fazer lugar ao novo bloco. A definio da regio da memria M que deve ser liberada chamada poltica de substituio.

36

Questes bsicas de projeto

3. De modo similar, a definio da regio de M a ser utilizada para receber o novo bloco de informao chamada poltica de alocao.

Questes bsicas de projeto


4. Os itens faltantes no so buscados na memria secundria somente na deteco de faltas. Escolha da regra de busca (ou load), que determina quando um item faltante (ou bloco de encapsulamento) deve ser trazido da memria.

37

Tamanho e natureza dos blocos: Paginao


Neste caso, tanto o espao de endereamento virtual quanto o espao de endereamento fsico (real) so divididos em blocos de tamanho idntico. Na memria virtual os blocos so chamados de pginas. Na memria fsica os blocos so chamados de frames de pginas.

Paginao
Para um dado programa ocupando um espao de endereamento virtual N, um subconjunto de suas pginas pode ser mapeado num subconjunto de frames em M.

38

Paginao
Mapeamento direto
0 1024 2048 3072 4096 Endereos virtuais
Pgina 0 Pgina 0 Pgina 1 Pgina 1 Pgina 2 Pgina 2 Pgina 3 Pgina 3 Pgina 4 Pgina 4

. . . . . . . . . . . . . .. .
31744
Pgina 31 Pgina 31

Traduo Traduo de deendereo endereo (funo (funode de mapeamento) mapeamento)

Frame 00 Frame Frame 11 Frame Frame 22 Frame

0 1024 2048 3072 Endereos fsicos

. . . . . . . . . .. .

Frame 77 Frame

7168

Paginao
A pgina serve tanto como unidade de mapeamento lgico de N para M como unidade de transferncia entre memria secundria e memria principal.

39

Tabelas de pgina
Endereo virtual

lid o

1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1

Memria fsica

Tabela de pgina

Memria em disco

Endereo fsico ou endereo em disco

Registro Base Tabela de P Pgina Endereo virtual Nmero de p pgina virtual Offset na p pgina

Nmero de pgina fsica

Tabela de pgina

VL DA

Endereo

Se VL= 1 ento pgina est na memria Seno pgina est na memria secundria DA: R=read only; W= read/write; X=execute only Nmero de p pgina f fsica Offset na p pgina

Endereo fsico

40

Paginao
Traduo de endereo
VL DA Endereo

if is_valid PT(P).DA then if PT(P).VL = 1 then new memory address = PT(P).ENDR + desl; else trap page_fault; else trap protection_violation_fault;

Acelerando a traduo de endereos TLB


Tag Nmero de pgina virtual
0 0 1 1 1 1 1 1 1 1 0 0 1 1

Endereo de pgina fsica

lid o

TLB size: 32 - 4096 entradas Block size: 1-2 entradas de tabela de pgina (4-8 bytes cada) Hit time: 0.5 - 1 ciclo de clock Penalidade: 10-30 ciclos de clock Taxa de falha: 0.01% - 1%

Uma cache para traduo de endereos: Translation Lookaside Buffer

1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1

Memria fsica Memria em disco

Tabela de pgina

Pgina fsica vlida ou endereo em disco

41

Tabela de pgina

Falha de p pgina

Sistema Sistema Operacional Operacional

Referncia

Resume
MEMRIA MEMRIA VIRTUAL VIRTUAL Endereo Endereo Lgico Lgico

1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1

Falha de prote o proteo


Pgina est na memria secundria

Acesso invlido

Memria fsica

Atualiza a tabela de pgina

Disco

Paginao

Encontra um frame livre e traz novapgina

Paginao
A principal vantagem dos sistemas de paginao que a unidade de transferncia de tamanho fixo: a pgina. O algoritmo de alocao pode ser bastante simples: atribuir uma pgina a qualquer frame disponvel ou liberado pelo algoritmo de substituio.

42

Paginao
Fragmentao
O termo refere-se s reas do espao de endereamento real, que por alguma razo deixam de estar disponveis para armazenamento de programas e seus dados.

Paginao
Fragmentao de Tabela
Ocorre quando as tabelas de pginas tornam-se extremamente grandes devido a espaos de endereamento virtuais muito grandes. Uma parte significativa da memria principal no estar disponvel para atribuio de pginas.

43

Paginao
Uma maneira de reduzir o tamanho da tabela de pginas a utilizao do mapeamento associativo ao invs do mapeamento direto. Neste caso o tamanho da tabela dado por |M|, o nmero de frames do espao de endereamento real e no |N|, o nmero de pginas do espao de endereamento virtual.

Paginao

Endereo virtual
Nmero de p pgina virtual Offset na p pgina

Tabela de pgina

VL DA

NP

Endereo ADDR

Mapeamento associativo
Cada entrada da tabela contm o nmero da pgina (NP) e o endereo do frame (ADDR).
Nmero de p pgina f fsica Offset na p pgina

Endereo fsico

Dado um endereo virtual, a tabela pesquisada associativamente, comparando np com o campo NP.

44

Paginao
Fragmentao interna
Parte no utilizada do ltimo frame

Frames ocupados 0 1 Frames de pgina |M|-1

Acontece quando o programa no ocupa um nmero inteiro de pginas. Quando o programa trazido para a memria principal, uma parte do ltimo frame utilizado para armazenar o programa perdida.

Tamanho e natureza dos blocos: Segmentao


Tira proveito do modo de dividir os programas em mdulos ou segmentos. Num sistema de memria virtual segmentada, o espao de endereamento virtual do usurio visto como uma coleo de segmentos que, diferentemente das pginas, podem ter tamanhos diversos

45

Segmentao

Endereo virtual
Nmero de segmento virtual Offset no segmento

Tabela de segmento (P)

VL DA

LGTH

Endereo ADDR

DA: direito de acesso ao segmento LGTH: comprimento do segmento

Nmero de segmento f fsico Offset no segmento

Endereo fsico

if VL=1 then segmento est na memria em ADDR else segmento est no disco em ADDR

Segmentao
Traduo de endereo
VL DA LGTH Endereo ADDR

if TS(P)(ns).VL=0 then trap segment_fault else if TS (P)(ns).DA vlido then if TS (P)(ns).LGTH < offset then trap overflow_fault else novo Endereo_memria=TS (P)(ns).ADDR+offset else trap protection_violation_fault

46

Segmentao
Cada entrada na tabela de segmentos TS(P) denominada descritor de segmento.

VL DA

LGTH

Endereo ADDR

Corresponde a um dos segmentos de P e contm o endereo de incio (ADDR) do segmento na memria principal, o comprimento do segmento (LGTH) e os campos de direito de acesso (DA) e presente na memria (VL).

Descritor de segmento no Pentium:


31 24 23 22 21 20 19 16 15 14 13 12 11 8 7 0

BASE 31...24

D A SEG G / 0 V LIMIT P DPL S TYPE B L 19...16

BASE 23...16

+4 +0
0

BASE ADDRESS 15...0


31 16 15

SEGMENT LIMIT 15...0

AVL BASE D/B DPL G LIMIT P S TYPE

Disponvel para o SO Endereo base do segmento Tamanho default


0 = segmento 16-bit; 1 = segmento 32-bit

Nvel de privilgio do descritor Granulosidade (fator de escala de LIMIT) Limite do segmento (b/4Kb) Segmento presente Tipo de descritor
0 = sistema; 1 = aplicao

Tipo de segmento Reservado

47

Alocao
Diferentes das pginas, os segmentos podem variar consideravelmente em tamanho. Enquanto a alocao uma questo trivial nos sistemas paginados, mais srio nos sistemas segmentados visto que deve ser preciso encontrar uma rea na memria fsica, de tamanho suficiente para receber o segmento transferido.

Algoritmos de alocao
S1 S2 h1 S3 h2 S4 S5 S6 h3 S7 h4

Sejam l1, l2, , ln os comprimentos e a1, a2, , an os endereos das lacunas h1, h2, , hn, respectivamente.

48

Algoritmos de alocao
Algoritmo best-fit
As lacunas esto ordenadas de tal modo que l1 l2 ln. O novo segmento S de comprimento L alocado na lacuna hi de modo que li o menor comprimento e L li.

Algoritmos de alocao
Algoritmo first-fit
As lacunas esto ordenadas de tal modo que a1 a2 an. O novo segmento S de comprimento L alocado na lacuna hi com o menor endereo tal que L li.

49

Algoritmos de alocao
Fragmentao externa
Independente da regra de alocao utilizada, pode ocorrer que as lacunas disponveis na memria sejam muito pequenas para receberem um determinado segmento.

Algoritmos de alocao
Fragmentao externa
Quando isto ocorre, deve ser acionado um procedimento de compactao de memria para coletar todas as lacunas dispersas e criar um nico bloco de memria disponvel: garbage collection.

S1

S2

S3

S4

S5

S6

S7

50

Polticas de substituio
Quando uma pgina trazida para a memria principal e no h nenhum frame disponvel, a seleo da pgina a ser removida definida pelo algoritmo de substituio.

Polticas de substituio
String de referncias R = r1 r2 r3 rk
a seqncia de referncias sucessivas s pginas no curso de execuo de um programa.

t(ri )
o instante em que a referncia ri produz uma falta de pgina.

51

Polticas de substituio
Se o algoritmo de substituio exige um conhecimento preciso das referncias de pginas futuras ri+1, ri+2, , no instante da falta de pgina t(ri ), o algoritmo dito irrealizvel. Se o algoritmo baseado em suposies acerca das referncias futuras, ele dito realizvel.

Polticas de substituio
Nosso objetivo principal selecionar um algoritmo de substituio que minimiza a freqncia de faltas de pginas. Isto , que minimiza os instantes em que uma pgina referenciada no encontrada na memria principal. Um modo maximizar o tempo entre faltas de pgina (o que conduz ao princpio da otimalidade).

52

Polticas de substituio
Princpio de otimalidade
Seja {0,1, 2, 3, , n} o conjunto de pginas na memria no instante t(ri ) em que ocorre uma falta de pgina e seja t( j ) t(ri ) a mais prxima referncia (subseqente) pgina j. Definindo T( j ) = t( j ) - t(ri ) para todas as pginas em {0,1, 2, 3, , n}, ento a pgina j selecionada para substituio aquela cujo T( j ) mximo. (irrealizvel)

Polticas de substituio
Algoritmo FIFO (First-In, First-Out)
No instante t(ri ), de falta de pgina, substituir a pgina que est na memria por mais tempo. Fcil de implementar (nonlookahead) mas no respeita o princpio da localidade. Uma pgina freqentemente referenciada pode ser substituda por ser a mais antiga na memria.

53

Polticas de substituio
Algoritmo LRU (Least-Recently-Used)
No instante t(ri ), de falta de pgina, substituir a pgina que est na memria com a referncia mais antiga. Menos fcil de implementar que a FIFO, pois exige conhecimento das referncias passadas, mas respeita o princpio da localidade.

Polticas de substituio
Algoritmo PFF (Page-Fault-Frequency)
Tenta manter a freqncia de faltas abaixo de um valor mximo especificado utilizando um parmetro P, freqncia de faltas de pgina. No instante t(rk ) da falta, a distncia temporal Df at a falta anterior comparada com 1/P. Se Df 1/P nenhuma pgina substituda, ao contrrio, a alocao de memria do programa aumentada de uma pgina. Se Df > 1/P, as pginas no referenciadas no intervalo Df (se houver alguma) so retiradas da memria.

54

Polticas de substituio
Algoritmo NRU (Not-Recently-Used)
Associado a cada pgina j na memria h um flag de referncia ref(j ) tal que ref(j ) = 1 se a pgina j foi referenciada recentemente = 0 seno. No instante t(ri ) da falta, substituir a pgina j cujo valor de ref(j ) = 0

Polticas de substituio
Working Set
Seja N = {0,1, 2, 3, , n} o conjunto de pginas que constituem um programa. Dada uma string de referncias R = r0r1 r2 r3 rk, o working set de um programa na ksima referncia, rk, definido como WS(k, h) = {i N | i {rk-h+1, , rk}}

55

Polticas de substituio
Exemplos de Working Set
Seja R* = <4,4,5,4,5,5,6,20,20,21,4,5,5,6,20> uma string de referncias de um programa.

k
3 6 9 12 15

WS(k, 2)
{4, 5} {5} {20} {4, 5} {6, 20}

WS(k, 4)
{4, 5} {4, 5} {5, 6, 20} {4, 5, 20, 21} {5, 6, 20}

WS(k, 6)
{4, 5} {4, 5} {4, 5, 6, 20} {4, 5, 6, 20, 21} {4, 5, 6, 20, 21}

Polticas de substituio
Algoritmo WS ( Working Set)
O algoritmo WS mantm todo o tempo o working set WS(k, h), para uma determinada janela h. Numa falta de pgina t(rk ), uma pgina s removida se ela no estiver referenciada nas h referncias.

56

Paginao por demanda e pr-paginao


Paginao por demanda
As pginas so buscadas na memria secundria quando ocorre uma falta de pgina.

Pr-paginao
Tenta antecipar referncias futuras s pginas e trazlas antes de sua utilizao. Pode reduzir o overhead de transferncia de pginas.

Sistemas modernos
Sistemas de memria bastante complicados:
Characteristic Cache organization Cache size Cache associativity Replacement Block size Write policy Intel Pentium Pro Split instruction and data caches 8 KB each for instructions/data Four-way set associative Approximated LRU replacement 32 bytes Write-back PowerPC 604 Split intruction and data caches 16 KB each for instructions/data Four-way set associative LRU replacement 32 bytes Write-back or write-through

Characteristic Virtual address Physical address Page size TLB organization

Intel Pentium Pro 32 bits 32 bits 4 KB, 4 MB A TLB for instructions and a TLB for data Both four-way set associative Pseudo-LRU replacement Instruction TLB: 32 entries Data TLB: 64 entries TLB misses handled in hardware

PowerPC 604 52 bits 32 bits 4 KB, selectable, and 256 MB A TLB for instructions and a TLB for data Both two-way set associative LRU replacement Instruction TLB: 128 entries Data TLB: 128 entries TLB misses handled in hardware

57

Referncias
Dasgupta, S. Computer architecture. A modern synthesis. Vol 1: Foundations. Wiley. John Kubiatowicz http://www-inst.eecs.berkeley.edu/~cs152/ Patterson, D. A., Hennessy, J. L., Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann.

Pseudo-LRU

The Pentium processor with MMX technology employs a pseudo-LRU replacement algorithm which requires three blts per set in each of the caches. When a line must be replaced, the cache will first select which of l0:l1 and l2:l3 was least recently used. Then the cache will determine which of the two lines was least recently used and mark it for replacement. This decision tree is shown in Figure 2-7.

58