• Nenhum resultado encontrado

Programação em Sistemas Computacionais

N/A
N/A
Protected

Academic year: 2021

Share "Programação em Sistemas Computacionais"

Copied!
12
0
0

Texto

(1)

Programação em Sistemas

Computacionais

Hierarquia de memória

Pedro Pereira

[email protected]

Centro de Cálculo

(2)

Localidade

• Localidade temporal

Um programa que acede a uma zona de memória,

provavelmente irá aceder

novamente a essa zona num

curto espaço de tempo, uma ou mais vezes.

• Localidade espacial

Um programa que acede a uma zona de memória,

provavelmente irá aceder

a vizinhanças dessa zona.

int sum(byte a[LINS][COLS]) {

}

int sum(byte a[LINS][COLS]) {

int l,c, res=0;

for(c=0 ; c<COLS ; ++c)

for(l=0 ; l<LINS ; ++l)

res += a[l][c];

return res;

}

Boa localidade relativamente à

memória de código (instruções)?

Boa localidade relativamente à

memória de dados (variáveis)?

(3)

Random Access Memory

• Static RAM (SRAM)

– 6 transístores por célula (bit)

– Estável

– Acesso rápido (10x)

– Usada para cache (KBytes..MBytes)

• Dynamic RAM (DRAM)

– 1 transístor e 1 condensador por célula

– Custo baixo (100x)

– Pequena dimensão

(4)

Estrutura típica

CPU

PC

Registers

ALU

Main

Memory

(DRAM)

L2

cache

(SRAM)

L1 cache

(SRAM)

Bus

USB

Controller

Graphics

Adapter

Disk

Controller

Expansion

slots

Mouse Keyboard

Display

Disk

Code

Data

Bus

100 GB

8 ms

2 GB

160 cycles

60 ns

1 MB

14 cycles

3 ns

64 KB

3 cycles

? Bytes

1 cycle

(5)

Hierarquia de memória

Registers

On-chip cache

(SRAM)

Off/On-chip cache

(SRAM)

Main memory

(DRAM)

Local secondary storage

(local disk)

Remote secondary storage

(distributed file systems)

A

ce

ss

o

pi

do

M

en

or

c

ap

ac

id

ad

e

M

ai

or

c

us

to

/b

yt

e

A

ce

ss

o

le

nt

o

M

ai

or

c

ap

ac

id

ad

e

M

en

or

c

us

to

/b

yt

e

L0

L1

L2

L3

L4

Os registos do CPU guardam

palavras obtidas da cache

A cache L1 guarda

linhas de cache obtidas

da cache L2

A cache L2 guarda

linhas de cache

obtidas da memória

A memória guarda

blocos obtidos do

disco

O disco guarda

ficheiros

obtidos

remotamente

(6)

Conceito geral de cache

• Cache Hits (acesso rápido)

Se os dados procurados estão num dos

blocos da cache.

1. Os dados são lidos/escritos apenas

da/na cache.

• Cache Misses (acesso lento)

Se os dados procurados não estão

num dos blocos da cache.

1. É escolhido um bloco da cache

para ser substituído.

2. Caso este bloco tenha sido alterado

é escrito na memória principal.

3. Todo o bloco do byte pretendido é lido da

memória principal para a cache.

4. Os dados são lidos/escritos apenas

da/na cache.

Main memory

(DRAM)

Cache block 0

Cache block 1

Cache block 2

Cache block 4

Cache block 9

Cache block 14

Cache block 3

Cache block 3

Cache block 4

Cache block 5

Cache block 6

Cache block 7

Cache block 8

Cache block 9

Cache block 10

Cache block 11

Cache block 12

Cache block 13

Cache block 14

Cache block 15

Cache memory

(SRAM)

CPU

Cache block

2

b

bytes

2

M

b

lo

ck

s

16, 32 ou 64 bytes

2

N

b

lo

ck

s

Bus

N < M

(7)

Organização da cache

• Organização

em linhas:

Bloco: Cópia de um bloco

de dados (ex: 32 bytes)

Tag: Identifica o bloco

Uma parte do endereço em memória

Valid bit: Cópia válida

Inicialmente, todas as linha estão inválidas

Dirty bit: Bloco alterado

Falta actualizar este bloco na memória

(não é usado em write-through)

Tag

block

d

v

Tag

block

d

v

Tag

block

d

v

Tag

block

d

v

Tag

block

d

v

Tag

block

d

v

...

...

Tag

block

d

v

16, 32 ou 64 bytes

t bits

D

irt

y

V

al

id

(8)

Fully Associative cache

• Um bloco pode estar em qualquer linha da cache

Main memory 0 1 2 3 4 5 Cache memory 0 1 2 3

• Um comparador para

cada linha.

• Enconder e Or com

lógica em cascata.

• Para médias e grandes

dimensões tem acessos

lentos e é dispendioso.

• Caches de pequena

dimensão (TLBs)

main memory 4 GB

m = 32

block size 32 bytes

b = 5

m bits

Address bits:

offset

Tag

t=m-b bits

b bits

t = 27

Address: Tag offs

Tag block d v == Encoder Mux Tag block d v == Tag block d v == Tag block d v == block

Hit / Miss

t=27 bits 32 bytes t=27 bits b=5 bits

(9)

Direct-Mapped cache

• Cada bloco só pode estar numa linha da cache

• Um só comparador.

• Económico e com

acessos rápidos.

• Cache miss se

2 blocos usados

têm o mesmo index

(situação frequente)

Main

memory

0

1

2

3

4

5

6

7

Cache

memory

0

1

2

3

main memory 4 GB

m = 32

32 bytes

b = 5

m bits

Address bits:

offset

Tag

t=m-b-s bits

b bits

t = 13

Index

16k lines (512 KB)

s = 14

s bits

Address:

Tag

offs

Tag

block

d

v

t=13 bits 32 bytes t=13 bits b=5 bits

Index

s=14 bits Mux

Tag

block

d

v

Tag

block

d

v

...

...

...

Mux ==

Index 0

Index 1

Index 2

s

-1

(10)

Set Associative cache

• Cada bloco pode estar numa das N linhas da cache

• Tipicamente com

4 ou 8 ways.

• Reúne as vantagens

da direct-mapped e

fully associative.

Main

memory

0

1

2

3

4

5

Cache

memory

0

1

2

3

main memory 4 GB m = 32 32 bytes b = 5 m bits

Address bits:

offset

Tag

t=m-b-s bits b bits t = 13

Index

16k x 2Way lines (1 MB) s = 14

s bits Address:

Tag

offs

t =13 bits b=5 bits

Index

s=14 bits Mux

...

...

...

Mux == Mux

...

...

...

Mux == Encoder Mux

block

Hit / Miss

Way 0

Way 1

Set index 1

direct-mapped

Fully associative

(11)

Política de substituição por Miss

• Direct-mapped

– Não tem. É sempre a mesma linha da cache

• Set associative

– Sem validate

• Escolher linhas vazias em vez de ocupadas. Só no arranque?

– Sem dirty

• As linhas não alteradas podem ser removidas. Será justo?

– Least-Frequently-Used (LFU)

• Escolher a linha usada menos vezes. Desde quando?

– Least-Recently-Used (LRU)

• Escolher a usada há mais tempo. Como implementar?

– Random

(12)

Estratégia de write

• Write-through

O bloco é escrito quando a

linha for alterada.

A escrita do bloco é realizada em paralelo.

– Não usa bit dirty.

– Tempo de miss reduzido.

– A memória é usada durante mais tempo.

– Mais conflitos no acesso por DMA.

• Write-back

O bloco só é escrito quando a linha for escolhida para substituição.

– Necessita bit dirty.

– Tempo de Miss mais elevado.

– Minimiza a utilização da memória.

– Menos conflitos no acesso por DMA.

Referências

Documentos relacionados

(2014) apresenta três aplicações reais de domínios diferentes que utilizam o Chiron e exploram os dados coletados pela proveniência para avaliar a configuração de

a) empresas do setor de construção civil (CNAE 412, 432, 433 e 439), recolherão a Contribuição Previdenciária sobre a Receita Bruta (CPRB) somente para as obras matriculadas

MULTI-PROCESSORS Multiprocessadores Máquina UMA Espaço de Endereçamento Proc Cache Interconexão Memória Principal Proc Cache I/O Proc Cache Proc Cache Proc Cache Proc

Para efetivação deste objetivo o projeto se estrutura na organização das visitas monitoradas em nossa estação SNE, onde atendemos alunos e professores da

A comissão do leiloeiro correspondente a 5% (cinco por cento), sobre o valor do arremate, a qual não está incluída no valor do lance, deverá ser paga em até 24 (vinte e

MESA REDONDA: A Prática Clínica Homeopática na Saúde

da aprendizagem, portanto, para ele, o sujeito somente se apropria do conhecimento por meio das relações reais e afetivas dele com o ambiente. Durante o período de

Diante do exposto CONHEÇO da impugnação apresentada pela empresa WHITE MARTINS GASES INDUSTRIAIS LTDA e DOU PARCIAL PROVIMENTO às suas impugnações, de modo que