arquitetura e organização de computadores 2 -...

25
19/05/2015 1 Arquitetura e Organização de Computadores 2 Organização Hierárquica da Memória Hierarquia da Memória Uma afirmação antiga, mas perfeitamente atual… “Ideally one would desire an indefinitely large memory capacity such that any particular word would be immediately available. We are forced to recognize the possibility of constructing a hierarchy of memories, each of which has greater capacity than the preceding but is less quickly accessible.” Burks, Goldstine & von Newmann (1946) 2

Upload: phamxuyen

Post on 10-Feb-2019

232 views

Category:

Documents


0 download

TRANSCRIPT

19/05/2015

1

Arquitetura e Organização de

Computadores 2

Organização Hierárquica da Memória

Hierarquia da Memória

Uma afirmação antiga, mas perfeitamente atual…

“Ideally one would desire an indefinitely large memory

capacity such that any particular word would be immediately

available.

We are forced to recognize the possibility of constructing a

hierarchy of memories, each of which has greater capacity than

the preceding but is less quickly accessible.”

Burks, Goldstine & von Newmann (1946)

2

19/05/2015

2

Hierarquia da Memória

Registos

CPU

Cache

MemóriaPrincipal

(RAM)

MemóriaSecundária

(Disco)

Chip do processador

Capacidade

Rapidez de acesso

Custo

3

Hierarquia da Memória

Cache

4

19/05/2015

3

Memórias Cache

Introdução

A memória cache é uma memória com pouca capacidade, mas

rápida, tipicamente associada ao processador

Esta memória guarda blocos de dados ou instruções copiados

da memória principal (RAM)

Uma vez na cache, o acesso aos valores guardados passa a ser

muito mais rápido

As caches tiram partido do carácter local das referências

5

Memórias Cache

Carácter local das referências

Espacial

Se uma dada posição de memória foi acessada, é provável que

posições de memória que lhe são vizinhas também venham a ser

acessadas.

os dados de uma matriz

as instruções de um programa, etc

Temporal

Se uma dada posição de memória foi acessada, é provável que no

futuro próximo seja acessada mais vezes.

as instruções dentro de um ciclo do programa

uma variável utilizada muitas vezes, etc

6

19/05/2015

4

Memórias Cache

Acesso à memória cache

Quando é efetuada um acesso à memória, o CPU faz

referência primeiramente à cache

Podem ocorrer duas situações:

cache hit – os dados pretendidos encontram-se na cache

caso ideal

a taxa de hits deve ser tão alta quanto o possível

cache miss – os dados não estão na cache

nesse caso terão que ser lidos da memória principal

substitui-se um bloco na cache pelo bloco copiado da memória principal

onde estão os dados pretendidos

pode introduzir penalizações temporais adicionais

7

Memórias Cache

Exemplo:

Suponha que o acesso à RAM requer 10 ns, ao passo que à

cache requer apenas 1 ns.

A percentagem de hits na cache é 90%, mas quando acontece

um miss, o processador perde 1 ns adicional, para além dos

tempos referidos.

Qual será o tempo médio de acesso à memória?

Tacesso = 0.9 1ns + 0.1 (10ns + 1ns + 1ns)

= 0.9 + 1.2 = 2.1ns

8

19/05/2015

5

Organização e tipos de cache

Tipos de mapeamentos de caches

Cache direta (direct-mapped cache)

Cache associativa

completamente associativa (fully associative)

associativa de n-vias (n-way set-associative)

A organização interna varia conforme o tipo

9

Cache Direta

Estrutura de uma cache direta

01234

Tag Bloco de dados

Linhas

Bit de validade

... . . .

10

19/05/2015

6

Cache Direta

Descrição

A cache encontra-se organizada segundo linhas

Em cada tem-se:

Bit de validade

Indica se o conteúdo dessa linha é válido ou não

Tag ou etiqueta

Identifica o bloco de memória de onde vieram os dados

Bloco

Conjunto de dados ou de instruções que foram copiados de posições

consecutivas da memória

11

Cache Direta

Estruturação de um endereço para acesso à cache

012345...

Índice de palavraÍndice de linhaEtiqueta

Indexa as palavras dentro do bloco

12

19/05/2015

7

Cache Direta

Determinação de hit ou miss

Tags Dados

Comparador

hit / miss

BUS Endereços

BUS Dados

Linha

Tag Tag em cache

13

Cache Direta

Exemplo Quantas linhas terá uma cache direta com uma capacidade para 1 KByte

de dados organizados por blocos de 128 Bytes ?

Qual a estruturação dos endereços, admitindo um espaço de endereçamento de 64K x 1 Bytes

128 Bytes por bloco 7 bits p/ indexar os blocos

8 linhas 3 bits p/ indexar as linhas

64K 16 bits de endereçamento etiquetas de 6 bits (16–3–7=6)

linhas 822

2

128

1 3

7

10

Bytes

KByteNl inhas

Etiqueta Linha

6 bits 3 bits 7 bits

Palavra

14

19/05/2015

8

Cache Direta

Exemplo (cont.)

Para que linha será carregado o blocos composto pelos endereços 1024

a 1151 (0x0400 a 0x047F)?

A linha será a 0.

0 0 0 0 0 01 0 0 0 0 0 0 0 0 0

Etiqueta Linha Palavra

0 0 0 0 0 01 0 0 1 1 1 1 1 1 1

...

0x0400

0x047F

...

15

Cache Associativa

Completamente associativa

Numa cache completamente associativa, um bloco poderá ocupar

qualquer entrada na cache

Não ocupam posições “pré-determinadas” como nas caches diretas

Não existe o conceito de linha

Ou então pode considerar que existe um única linha, com capacidade para

todos os blocos

Só são utilizadas as tags e o índice de palavra

Estruturação dos endereços

Etiqueta Índ. palavra

16

19/05/2015

9

Cache Associativa

Completamente associativa (cont.)

Mais complexa do que uma cache direta:

Quando há um acesso, é necessário “procurar” o bloco em causa em

todas as entradas da cache

Se o bloco não for encontrado em nenhuma das entradas, então

ocorre um miss

Essa procura é feita em paralelo para todas as entradas da cache

mais hardware (muitos comparadores)

e apesar do paralelismo, são introduzidos atrasos

17

Cache Associativa

Associativa de n-vias

Este tipo de cache encontra-se a meio caminho entre uma

cache directa e uma cache completamente associativa

A ideia consiste em dividir a cache segundo linhas com lugar

para n blocos

Uma vez mapeado para uma dada linha, um bloco poderá

ocupar uma das n entradas dessa linha

18

19/05/2015

10

Cache Associativa

Uma cache associativa de 2 vias

Estruturação dos endereços

01234

. . .. . . . . .

Via 0 Via 1

Etiqueta Índ. linha Índ. palavra

19

Políticas de substituição de blocos

Quando ocorre um miss e a linha correspondente está

ocupada, qual o bloco que deverá ser substituído na cache ?

Principais estratégias:

Escolha aleatória

o bloco a substituir é escolhido de forma aleatória

muito fácil de implementar

Algoritmo LRU (Least Recently Used)

o bloco a substituir é aquele que não é acedido à mais tempo, na esperança

de já não voltar a ser necessário

obriga a utilizar um “selo temporal” associado a cada bloco em cache

estratégia mais complexa e mais cara

20

19/05/2015

11

Políticas de substituição de blocos

Alguma estatística

Dimensão da cache Aleatório LRU

16KB 5.69 % 5.18 %

64KB 2.01 % 1.88 %

256KB 1.17 % 1.15 %

% de cache misses durante a execução de um programa utilizando uma cache associativa de

2 vias com blocos de 16 bytes.

Tabela retirada do livro “Computer architecture: a quantitative approach”

Observações:

O desempenho com LRU é melhor, principalmente em caches pequenas

À medida que a dimensão da cache cresce, o desempenho da escolha aleatória tende

a igualar o algoritmo LRU – preferível utilizar escolha aleatória

21

Políticas de Escrita

O que acontece numa escrita ?

Estratégias mais comuns, em caso de hit numa escrita

Write through (ou store through)

Os dados são sempre escritos tanto na cache como na memória principal.

Write back (ou store in)

Os dados são apenas escritos na cache. Só serão copiados para a memória

depois do bloco em cache ser substituído.

Utiliza-se um bit extra – dirty bit – em cada linha da cache, que indica se um

dado bloco foi modificado desde que está em cache.

Quando um bloco é substituído, se o seu dirty bit estiver a ‘1’, então esse

bloco é copiado para a memória principal

22

19/05/2015

12

Políticas de Escrita

Write back

Geralmente mais eficiente, pois causa menos acessos para escrita na

memória principal

Write through

Mais simples de implementar

Todas as escritas obrigam a aceder à memória principal

Perde-se mais tempo…

A memória principal tem sempre os dados actualizados

Vantajoso em situações de partilha de memória com outros dispositivos

(tanto periféricos como outros CPUs)

23

Políticas de Escrita

Estratégias em caso de cache miss

Write allocate (ou fetch on write)

O bloco é carregado na cache, antes de se escreverem os dados

No-write allocate (ou write around)

O bloco não é carregado em cache. Apenas se escreve na memória principal.

Normalmente utiliza-se

write back em conjunto com write allocate

write through em conjunto no-write allocate

... embora possam ser utilizadas outras combinações

24

19/05/2015

13

Redução de misses

Classificação de cache misses:

Cold-start - compulsória

O primeiro acesso a um bloco que não se encontra em cache

Acontece, por exemplo, no início da execução de um programa

Colisões

Vários blocos de um programa estão à partida destinados a utilizar a

mesma linha da cache, o que pode obrigar a substituições.

Acontecem porque:

Os programas podem usar uma quantidade de memória superior à

capacidade da cache

Os programas podem referenciar zonas de memória diferentes que são

mapeadas para a mesma linha da cache

25

Redução de misses

Para reduzir a taxa de misses, a hipótese mais óbvia seria

aumentar a capacidade da cache

Mantendo a cache com a mesma capacidade, existem

estratégias para reduzir os misses

Aumentar a dimensão do bloco

Usar um maior grau de associatividade (mais vias)

Utilização de “caches vítimas”

Optimizações do compilador (software)

26

19/05/2015

14

Redução de misses

Aumento da dimensão do bloco(mantendo a mesma capacidade da cache)

Tenta-se tirar mais partido da localização espacial das referências

Por um lado diminuem os cold-start misses, mas...

... aumentam os misses devido a colisões ...

... e perde-se mais tempo em caso de miss

são necessários ler mais dados da memória principal devido ao bloco ser maior

Atenção que o desempenho pode na realidade piorar quando se aumenta a dimensão do bloco!

27

Redução de misses

Maior grau de associatividade

Aumentando a associatividade reduzem-se os misses devido a

interferências. Os restantes mantém-se.

O preço a pagar é um maior tempo de acesso à própria cache, o que

poderá ter implicações negativas

Na prática, compensa aumentar a associatividade até certo ponto.

Dimensão da cache 2 vias 4 vias 8 vias

16 KB 5.18 % 4.67 % 4.39 %

64KB 1.88 % 1.54 % 1.39 %

256KB 1.15 % 1.13 % 1.12 %

% de cache misses durante a execução de um programa em função do grau de

associatividade de uma cache (blocos de 16 bytes).

Tabela retirada do livro “Computer architecture: a quantitative approach”

28

19/05/2015

15

Redução de misses

Utilização de caches vítimas

Uma cache vítima é basicamente uma cache de dimensões muito reduzidas (4 a 8 entradas)

Para ser muito rápida

A cache vítima contém blocos que foram substituídos na cache principal

Sempre que ocorre um miss na cache principal verifica-se se o bloco pretendido se encontra na “vítima”

No caso de lá se encontrar, trocam-se os blocos entre as duas caches

Esta técnica reduz de forma significativa os misses devido a interferências

Não apresenta nenhuma desvantagem de maior, excepto o aumento do custo e um ligeiro aumento da penalidade devido a um miss completo (miss na cache principal e na vítima)

29

Redução de misses

Técnicas de compilação

Quando os programas (linguagem de alto nível) são traduzidos para

código-máquina, o compilador poderá ter em conta a cache do

processador

Sendo assim, poderá gerar código-máquina que execute a mesma função,

mas que tira partido das características da cache

Manipular o modo de indexação das matrizes

Trocas de índices em ciclos dentro de ciclos

Fusões de ciclos

etc.

30

19/05/2015

16

Níveis de Cache

Níveis de caches Abordagem comum para redução do tempo médio de acesso à memória

Quando ocorre um miss no 1º nível, verifica-se se o bloco pretendido se encontra na cache de 2º nível (maior) e assim sucessivamente

Só se acede à memória principal se não for encontrado o bloco pretendido em nenhum dos níveis

CacheNível 1

Cache Nível 2

Memória principal

RAM

CPU

31

Exemplo – Intel Core 2 Duo E6600

Caches nível 1

Cache nível 2

32

19/05/2015

17

Exemplo – AMD Quad Core Opteron

Caches nível 1

Caches nível 2

Caches nível 3

33

Hierarquia da Memória

Memória Virtual

34

19/05/2015

18

Memória Virtual

Espaço de endereçamento virtual

Espaço de endereçamento que engloba a memória primária (RAM) e a

secundária (disco)

O objetivo é poder carregar múltiplos programas (e dados) sem estar

limitado às dimensões físicas da memória RAM

Cada programa a ser executado pode ter partes

carregadas em RAM,

em disco, ...

... ou em ambos os lados

Transferem-se instruções e dados entre a RAM e o disco (swapping)

conforme as necessidades

35

Memória Virtual

Espaço de endereçamento virtual

As formas mais comums para implementar memória virtual são

Paginação

Segmentação

Misto (segmentação + paginação)

A dimensão do espaço virtual corresponde ao número total de

endereços que são indexáveis pelo processador

Exemplo

um processador com endereços de 32 bits consegue gera um espaço de

endereçamento virtual de 232 posições de memória

ou seja, 4 Giga posições de memória (para cada programa)

36

19/05/2015

19

Memória Virtual

Endereços reais

Correspondem aos endereços físicos envolvidos no acesso à memória

ou outros dispositivos (o que temos visto até agora)

Endereços virtuais

Endereços utilizados internamente pelo processador

São convertidos em endereços reais

através de uma unidade localizada no CPU, designada MMU (Memory

Management Unit)

e recorrendo a estruturas de dados, mantidas em memória

37

Memória Virtual

MMU (Memory Management Unit)

Converte endereços virtuais em endereços reais

Sinaliza a CPU quando é feito um acesso a um endereço que fisicamente

não se encontra localizado na memória principal

Controlador

de

DiscoMMU

CPU

Memória

RAM

Bus de endereços (reais)

38

19/05/2015

20

Paginação

Método mais comum para implementação de memória

virtual

O espaço de endereçamento virtual é divido em blocos de

dimensão fixa designados por páginas.

A dimensão de cada página é uma potência de 2

A memória principal é dividida em blocos com a mesma

dimensão de uma página – estes blocos designam-se por

molduras ou page frames

39

Paginação

1000

0000

2000

3000

4000

5000

6000

7000

8000

0000

1000

2000

3000

4000RAM

Espaço

virtual

páginas

molduras

Disco

40

19/05/2015

21

Paginação

Tabelas de páginas (page tables)

Nº Moldura Deslocamento

0

Tabela de páginas

Nº Página Deslocamento

Descritor da página 0

Descritor da página 1

Descritor da página 2

Descritor da página 3

Descritor da página N-1

1

2

3

N-1

Endereço virtual

Endereço real

41

Paginação

Principais campos num descritor de página

Bit de presença – Indica se a página se encontra carregada na memória

principal (RAM) ou não

Moldura – Índice de moldura (page frame) – indica qual moldura onde se

encontra a página

Proteção – Bits de proteção da página (exemplo, read-only)

Controle – Bits auxiliares (por exemplo, para o funcionamento dos

algoritmos de substituição de páginas)

Índice da moldura

Descritor de página

Bits de controlo

Bit de presença Bits de protecção

42

19/05/2015

22

Paginação

Exemplo

0010 0110 1010 0001 0x26A1 (9889)

110 0110 1010 0001 0x66A1 (26273)

10000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

0

1

0

1

1

1

0

0

0

1

0

0

0

1

1

101

xxx

100

111

010

001

000

011

xxx

xxx

xxx

xxx

xxx

xxx

110

xxx

Tabela de páginas

43

Paginação

Page fault

Quando é acedida uma página que não se encontra na memória

principal, ocorre uma page fault

Quando o CPU recebe o sinal de page fault

Efectuam-se as alterações necessárias na tabela de páginas, de modo a que

esta fique consistente

Se todas as molduras já estiverem ocupadas é necessário escolher uma página

a transferir para o disco, nesse caso corre-se o algoritmo de substituição

de páginas

Normalmente a cargo do sistema operativo

Carrega-se a página em falta (do disco para a RAM)

44

19/05/2015

23

Paginação

Algoritmos de substituição de páginas

LRU (least recently used)

descarta a que não é acedida à mais tempo

NFU (not frequently used)

descarta a que foi acedida menos vezes

FIFO (first in, first out)

descarta a que já se encontra em RAM à mais tempo

Como são implementados pelo Sistema Operativo, terão mais

detalhes nessa disciplina)

45

Paginação

Tabelas multi-nível Usadas para evitar ter que manter em RAM tabelas de páginas com

grandes dimensões

Existe uma tabela principal (1º nível) chamada directoria, relativamente pequena, e que é sempre mantida em RAM

A directoria indexa várias tabelas de páginas (2º nível) que podem estar ou não na RAM, consoante a necessidade

Vantagem

Só são mantidas na memória principal a directoria e as tabelas de páginas que estão a ser utilizadas

Desvantagem

Demora-se mais tempo a converter um endereço virtual em real, pois é necessário um acesso à directoria e depois um acesso à tabela de páginas resultante

46

19/05/2015

24

Paginação

Nº de moldura

TP_L1 TP_L2 Deslocamento

Tabela de 1º nível(Directoria)

0

1

2

1023

0

1

2

1023

0

1

2

1023

Tabelas de 2º nível(Tabelas de páginas)

0

1

2

1023

Deslocamento

Endereço virtual

Endereço real

10 bits 10 bits 12 bits

47

Paginação

TLB (Translation Lookaside Buffer) Ao efetuar a conversão de um endereço virtual para endereço físico, é

necessário de consultar a(s) tabela(s) envolvidas

Como consequência, são feitos acessos à memória

Para minimizar o número de acessos, existe a TLB

Uma “cache especial” para auxiliar a paginação

Tipicamente é uma cache completamente associativa, que guarda informação sobre os descritores de página

24 Descritor da página 24

56 Descritor da página 56

xxx xxx

3 Descritor da página 3

xxx xxx

xxx xxx

1

1

0

1

0

0

Etiquetas(Nos de página)

Blocos de dados(Descritores)

Bit de validade

48

19/05/2015

25

Bibliografia

49

David Patterson e John Hennessy,

Arquitetura e Organização de

Computadores – uma abordagem

quantitativa, 5ª Edição, ed. Campus.