• Nenhum resultado encontrado

Arquitetura e Organização de Computadores 2. Organização Hierárquica da Memória. Uma afirmação antiga, mas perfeitamente atual

N/A
N/A
Protected

Academic year: 2021

Share "Arquitetura e Organização de Computadores 2. Organização Hierárquica da Memória. Uma afirmação antiga, mas perfeitamente atual"

Copied!
25
0
0

Texto

(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.”

(2)

Hierarquia da Memória

Registos CPU Cache Memória Principal (RAM) Memória Secundária (Disco) Chip do processador Capacidade Rapidez de acesso Custo 3

Hierarquia da Memória

Cache

(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

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

T

acesso

= 0.9

1ns + 0.1

(10ns + 1ns + 1ns)

= 0.9 + 1.2 = 2.1ns

(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

0 1 2 3 4

Tag Bloco de dados

Linhas

Bit de validade

(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

0 1 2 3 4 5 ... Índice de palavra Índice de linha Etiqueta Indexa as palavras dentro do bloco

(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 8 2 2 2 128 1 3 7 10     Bytes KByte Nlinhas Etiqueta Linha

6 bits 3 bits 7 bits Palavra

(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 1 0 0 0 0 0 0 0 0 0 0

Etiqueta Linha Palavra

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

(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á

(10)

Cache Associativa

Uma cache associativa de 2 vias

Estruturação dos endereços 0 1 2 3 4 . . . . . . . . . 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

(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 bitestiver a ‘1’, então esse bloco é copiado para a memória principal

(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 allocatewrite through em conjunto no-write allocate

(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”

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

(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

(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

Cache Nível 1 Cache Nível 2 Memória principal RAM CPU 31

Exemplo – Intel Core 2 Duo E6600

(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

(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 232posições de memória

(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 Disco MMU CPU Memória RAM

(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 4000

RAM

Espaço virtual páginas molduras

Disco

(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

(22)

Paginação

Exemplo

0010 0110 1010 0001 0x26A1 (9889) 110 0110 1010 0001 0x66A1 (26273) 1 0000 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

(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

(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 1 1 0 1 0 Etiquetas (Nos de página) Blocos de dados (Descritores) Bit de validade

(25)

Bibliografia

49

David Patterson e John Hennessy,

Arquitetura e Organização de

Computadores – uma abordagem

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

Referências

Documentos relacionados

Almanya'da olduğu gibi, burada da bu terimin hiçbir ayrım gütmeden, modern eğilimleri simgeleyen tüm sanatçılar için geçerli olduğu anlaşılıyor.. SSCB'de ilk halk

Por esta razão, objetivamos analisar a política de expansão da Igreja Católica na Bahia, na década de 1950, e sua correlação com a criação do Primeiro Bispado em Vitória

As abraçadeiras tipo TUCHO SIMPLES INOX , foram desenvolvidas para aplicações que necessitam alto torque de aperto e condições severas de temperatura, permitin- do assim,

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)

O profissional selecionado para atuar na REDE E-TEC BRASIL será remunerado na forma de concessão de bolsas conforme o Manual de Gestão da Rede e-Tec disponível em

Este trabalho se propõe a discutir os diferentes graus de vivência que um grupo psicoterápico de base psicanalítica pode oferecer: o setting, a figura do terapeuta/ coordenador,

Outro ponto que é por vezes discutido é que o oleo bruto contem algum principio que não permanece no oleo purificado, donde se suppôr o primeiro muito mais activo.. Quando o

Os candidatos aprovados no Concurso Público serão convocados pela TABOÃOPREV - Unidade Gestora Única do Regime Próprio de Previdência Social do Município de