• Nenhum resultado encontrado

Sistemas de memória. João Canas Ferreira. Arquitectura de Computadores FEUP/LEIC

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas de memória. João Canas Ferreira. Arquitectura de Computadores FEUP/LEIC"

Copied!
39
0
0

Texto

(1)

Sistemas de memória

João Canas Ferreira

Arquitectura de Computadores

FEUP/LEIC

Contém figuras de “Computer Organization and Design” (cap. 7, Ap. B), D. Patterson & J. Hennessey, 3ª. ed., Elsevier

Tópicos

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

(2)

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

4 Memória virtual

ArqComp: Sistemas de memória 3/78 2006-05-25

Taxonomia

+ Registos e bancos de registos permitem guardar pequenas

quantidades de dados. Para maiores quantidades, usam-se memórias de acesso directo.

+ RAM = random access memory (memória de acesso aleatório?):

permitem leitura e escrita.

+ ROM = read-only memory: pemitem apenas leitura.

+ A maior parte das memórias RAM perde os dados quando é

desligada a alimentação (memória volátil). Excepções:

I (E)EPROM: (Electrically) erasable programmable ROM

I memórias FLASH.

+ Dois tipos de memórias RAM voláteis:

I SRAM: memória estática (cada célula de memória é um

“flip-flop”);

(3)

Circuitos de memória: organização conceptual

0 M bits 1 2 N-1 endereço (linha) dados (M bits)

+ Para P linhas de endereço: N = 2P

+ Abreviaturas: 210 = 1024 = 1 K, 220 = 1048576 = 1 M

+ O porto de dados é bidireccional: é preciso especificar o tipo de

acesso (leitura ou escrita).

+ M é a largura da memória.

ArqComp: Sistemas de memória 5/78 2006-05-25

Memórias estáticas

As memórias estáticas são as que se aproximam mais do modelo conceptual de funcionamento. SRAM 2M x 16 Dout[15-0] Address 21 Din[15-0] 16 Chip select Output enable Write enable 15

+ Para aceder à memória:

I activar o circuito: chip select (CS) activo

I especificar o tipo de acesso: activar output enable (leitura)

(4)

Memórias estáticas: acessos

+ Tempo de acesso para leitura: intervalo entre o instante em que

output enable e endereço estão “correctos” e o aparecimento de

dados na saída.

+ Valores típicos:

I rápidas: 2–4 ns

I típicas: 8–20 ns (cerca de 32 milhões de bits)

I de baixo consumo: 5–10 vezes mais lentas

+ Durante esse tempo, um processador que execute uma instrução

por ciclo e use um relógio de 2 GHz, executa:

I 4–8 instruções

I 16–40 instruções

+ Tempo de acesso para escrita: é preciso respeitar tempos de

setup e hold para endereços e dados. Para além disso, o sinal de write enable é sensível ao nível (não ao flanco) e deve ter uma

duração mínima para que a escrita se realize.

+ O tempo de escrita é superior ao tempo de leitura.

ArqComp: Sistemas de memória 7/78 2006-05-25

Memórias estáticas: circuito de saída

Buffer tristate (3 estados: 0, 1, desligado) Sel In Out In In Out Out Sel = 1 Sel = 0 Circuito de saída: Select 0 Data 0 Enable Out In Select 1 Data 1 Enable Out In Select 2 Data 2 Enable Out In Select 3 Enable Out In Output

Ao contrário de um banco de registos, o circuito de saída não pode ser baseado num multiplexador: uma SRAM 64K x 1 precisaria de ter um multiplexador 65536-para-1.

Solução: utilizar buffer tristate, cuja saída pode ter 3 estados (0, 1 ou

alta-impedância).

No estado de alta-impedância, a saída do circuito está desligada.

O estado da saída é determinado por uma entrada de controlo: select.

Todas as saídas são ligadas em paralelo. Não pode existir mais que uma saída activa (i.e., não em alta-impedância) em

(5)

Estrutura básica de uma memória estática

latch D C Enable Q D 0 2-to-4 decoder Write enable Din[1] latch D C Enable Q D Din[1] Dout[1] Dout[0] latch D C Enable Q D 1 latch D C Enable Q D latch D C Enable Q D 2 latch D C Enable Q D latch D C Enable Q D 3 latch D C Enable Q D Address SRAM 4x2

ArqComp: Sistemas de memória 9/78 2006-05-25

Memórias estáticas organizadas por bancos

Para limitar o tamanho do descodificador de endereços:

12 to 4096 decoder Address [21–10] 4096 4K x 1024 SRAM 4K x 1024 SRAM 4K x 1024 SRAM 4K x 1024 SRAM 4K x 1024 SRAM 4K x 1024 SRAM 4K x 1024 SRAM 4K x 1024 SRAM Mux Dout7 Mux Dout6 Mux Dout5 Mux Dout4 Mux Dout3 Mux Dout2 Mux Dout1 Mux Dout0 1024 Address [9–0]

+ Organização típica de uma memória 4Mx8 como uma colecção de

blocos de memória 4Kx1024.

(6)

Acessos a uma memória estática

Duas escritas e uma leitura:

OE

WE

Endereço

Dados

End1 End2 End1

Dado2

Dado1 Dado1

tempo mínimo para escrita

Leitura

tempo de acesso

Escrita Escrita Leitura

valor escrito

+ OE identifica operação de leitura; endereços devem estar

estáveis antes de o sinal ser activado.

ArqComp: Sistemas de memória 11/78 2006-05-25

Memória dinâmica (DRAM)

+ Valor guardado como carga num condensador.

+ O acesso é feito através de um transístor a operar como

interruptor.

+ Consequência: maior densidade (bit/mm2), logo circuitos de

maior capacidade e menor custo.

+ Comparação: SRAM requer 4 a 6 transístores por bit armazenado.

+ Acesso a DRAM é feito em duas etapas:

1. selecção de coluna (usando uma parte do endereço);

2. selecção de linha (usando os restantes bits do endereço).

+ DRAM é mais lenta que SRAM. Valor típico: 2 Gb (512MX4),

tempo de acesso 55 ns.

+ Condensador vai perdendo a carga e deve ser periodicamente

(7)

Célula de uma memória dinâmica

Selecção de linha (word line)

Transístor (interruptor)

Condensador (armazena carga eléctrica)

Linha de dados (bit line)

+ Escrita: Valor a armazenar é colocado na linha de bit; wordline

é activada para fechar interruptor.

+ Leitura: Linha de bit é pré-carregada a meia escala; wordline é

activada para fechar interruptor; a variação de tensão na linha de bit é amplificada para obter valor final.

ArqComp: Sistemas de memória 13/78 2006-05-25

Esquema geral do acesso a uma memória dinâmica

Endereço[10-0] Descod. de linhas 11-to-2048 2048 x 2048 matriz 2048 trincos Mux Dout + Endereço: 11+11 bits.

+ Exemplo: DRAM 4Mx1: 11 bits seleccionam a linha, que é

“copiada” para 2048 trincos.

(8)

DRAM: Leitura

Exemplo simplificado de leitura (CE=1, OE=0, WE=0). RAS = Row Address Strobe (endereço especifica linha) CAS = Column Address Strobe (endereço especifica coluna)

RAS

CAS

Endereço

Dados

End. Linha End. Coluna x

Dados lidos

ArqComp: Sistemas de memória 15/78 2006-05-25

DRAM: Escrita

Exemplo simplificado de escrita (CE=1, OE=1):

RAS

CAS

Endereço

Dados

End. Linha End. Coluna x

Dados a escrever WE

(9)

Módulos de memória: DIMM

+ CIs individuais podem ser agrupados em módulos. Ex: módulo

32Mx64 (256 MB) pode usar 16 componentes 32Mx4.

Ram0 Ram1 Ram2 Ram14 Ram15

4 4 4 4 4 d [3:0] d [7:4] d [11:8] d [59:56] d[63:60] a[24:0] d[63:0] 32Mx4

ArqComp: Sistemas de memória 17/78 2006-05-25

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

(10)

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços

Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

4 Memória virtual

ArqComp: Sistemas de memória 19/78 2006-05-25

Organização da memória de um computador

+ A memória física de um computador é geralmente composta por

vários módulos (circuitos integrados, DIMM, etc.) por forma a ser possível obter maiores capacidades de armazenamento.

+ Para além dos módulos de memória é necessário ter um circuito

de descodificação de endereços que selecciona quais os módulos activos durante um dado acesso (com base no endereço

apresentado pelo CPU).

+ Organização típica: os bits menos significativos são ligados

directamente aos módulos individuais, enquanto os bits mais significativos são usados para fazer a selecção dos módulos.

+ Linhas de dados podem ser “partilhadas” por mais que um

módulo (usando buffers tristate).

(11)

Organização da memória: diagrama de blocos

dados[ ]

End. End. End. End.

CS CS CS CS

dados dados dados dados

N bits End[N-1:0]

Descodificador M-N bits de selecção

End[M-1: N]

Endereço tem M bits, dos quais M-N podem ser usados na descodificação

N bits de endereço

Apenas uma saída activa de cada vez

Para memórias DRAM a descodificação de endereços é mais complicada. Apenas abordaremos o caso das memórias SRAM.

ArqComp: Sistemas de memória 21/78 2006-05-25

Regras de descodificação de endereços

+ Para que esta organização funcione bem, a descodificação de

endereços deve garantir que:

Para o conjunto de todos os módulos que partilham uma mesma linha de dados: apenas um (ou nenhum) deve ser activado du-rante um acesso.

Se esta condição não for respeitada, os componentes podem ser definitivamente danificados.

+ O mapeamento de endereços para componentes pode ser

classificado de acordo com o número de endereços que é mapeado na mesma posição física:

I total: 1 endereço → 1 posição

I parcial: N endereços → 1 posição

+ Na descodificação total, todos os bits do endereço são “usados”:

ligados directamente aos componentes ou utilizados na selecção dos componentes.

(12)

Descodificação total: exemplo

A[11:0] A[12:0] CS CS RAM1 RAM2 8 bits 8 bits 8 bits A[15:0] D[7:0] D[7:0] D[7:0] & & A[15] A[15] A[14] A[14] A[13] A[13] A[12] RAM1: 4Kx8 RAM2: 8Kx8 Espaço de endereçamento do CPU: 64 K, 1 byte por endereço

RAM 1: 1011 XXXX XXXX XXXX Gama: B000H a BFFFH RAM2: 001X XXXX XXXX XXXX Gama: 2000H a 3FFFH I Endereço B712H (46866) → RAM1

I Endereço C1E0H (49632) → nenhum circuito

ArqComp: Sistemas de memória 23/78 2006-05-25

Descodificação parcial: exemplo

A[11:0] A[12:0] CS CS RAM1 RAM2 8 bits 8 bits 8 bits A[15:0] D[7:0] D[7:0] D[7:0] & & A[15] A[15] A[14] A[13] RAM1: 4Kx8 RAM2: 8Kx8 Espaço de endereçamento do CPU: 64 K, 1 byte por endereço

RAM 1: 10?? XXXX XXXX XXXX Gamas: 8000H a 8FFFH 9000H a 9FFFH A000H a AFFFH B000H a BFFFH RAM2: 0?1X XXXX XXXX XXXX Gamas: 2000H a 3FFFH 6000H a 7FFFH

I O byte 10 de RAM1 pode ser acedido através de que endereços?

(13)

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços

Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

4 Memória virtual

ArqComp: Sistemas de memória 25/78 2006-05-25

Observações gerais sobre sistemas de memória

+ O custo dos diferentes tipos de memória é muito diferente:

Tecnologia Tempo de acesso Custo ($/GB em 2004)

SRAM 0.5–5 ns $4000–$10000

DRAM 50–70 ns $100–$200

disco magnético 5× 106–2× 107ns $0.5–$2

+ Organizar o sistema de memória como uma hierarquia: memória

rápida para satisfazer a maior parte dos acessos, memória mais lenta para armazenar os dados “menos usados”.

+ Princípio de funcionamento (para cada nível):

I Procurar a informação (dados ou instruções) num dado nível (inicialmente no nível 1, o que está mais próximo do CPU);

I Caso a informação não exista aí, ir buscá-la ao nível seguinte e guardar uma cópia (pode vir a ser reusada brevemente).

+ Se a maioria dos acessos for satisfeita pelo nível superior,

obtêm-se, em média, os tempos de acesso do nível superior e a capacidade de armazenamento do nível inferior.

(14)

Organização hierárquica de sistemas de memória

Rapidez Mais rápido Mais lento Menor Maior Tamanho Custo(€/bit) Tecnologia corrente Maior Menor SRAM DRAM Disco magnético CPU Memória Memória Memória

ArqComp: Sistemas de memória 27/78 2006-05-25

Níveis da hierarquia de memória

Processador

(15)

Hierarquia de memória: conceitos básicos

+ Uma hierarquia de memória pode ter vários níveis, mas a informação é transferida directamente apenas entre níveis adjacentes: o nível superior é mais rápido e tem menor capacidade que o nível inferior.

+ Bloco: quantidade mínima de informação que pode estar presente ou ausente

de um determinado nível. Tipicamente, a informação entre níveis é transferida em blocos.

+ Acerto: acesso ao nível superior encontrou a informação pretendida (hit).

+ Falha: acesso ao nível superior não encontrou a informação (miss).

+ Taxa de acertos: (nº de acertos)/(nº de acessos).

+ Taxa de falhas: (nº de falhas)/(nº de acessos) = 1-(taxa de acertos).

+ Tempo de acerto: tempo de acesso ao nível superior, incluindo a verificação

da presença do item pretendido (hit time).

+ Penalidade de falha: tempo necessário para copiar o item pretendido do

nível inferior para o superior mais o tempo necessário para esse nível completar o atendimento do acesso original (miss penalty).

+ Uma boa compreensão da hierarquia de memória é indispensável para a elaboração de programas de elevado desempenho.

ArqComp: Sistemas de memória 29/78 2006-05-25

O princípio da proximidade

+ A organização hierárquica de memória dá muito bons resultados

na prática, porque as situações em que é aplicada se comportam de acordo com o princípio da proximidade.

+ O princípio da proximidade (ou localidade):

Programas em execução acedem apenas a uma pequena parte do seu espaço de endereçamento (durante um certo intervalo).

+ Proximidade temporal: Se um item de informação é usado, tenderá ser usado de novo em breve.

Exemplo: instruções no corpo de um ciclo, variáveis.

+ Proximidade espacial: Quando um item de informação é usado, itens próximos tendarão também a ser usados em breve.

Exemplo: o conjunto de variáveis de uma subrotina, os elementos de um vector.

(16)

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

4 Memória virtual

ArqComp: Sistemas de memória 31/78 2006-05-25

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache

Desempenho de memórias cache

(17)

Princípio básico de funcionamento

X4 X1 Xn-2 Xn-1 X2 X3 a. Antes de referência a X n X4 X1 Xn-2 Xn-1 X2 X3 b. Depois de referência a X n Xn

I Se o acesso a memória cache

não encontra item desejado,

I item é copiado de níveis

inferiores da hierarquia.

Duas questões relacionadas:

1. Como determinar a posição

do item pretendido?

2. Como determinar a presença

do item? O mapeamento

endereço → posição de cache é

sempre muitos→1.

ArqComp: Sistemas de memória 33/78 2006-05-25

Determinação da posição: mapeamento directo

I Índice = (endereço do bloco) % (nº de blocos)

I Se (nº de blocos) = 2b, a posição (o índice) é dada pelos b bits

menos significativos do endereço.

Cache Memória 00001 10001 010 100 101 110 111 000 001 011 00101 01001 01101 10101 11001 11101

(18)

Determinação da presença: etiquetas

+ Questão: Dada a posição de um item em cache, como determinar, se é esse item que, de facto, lá se encontra?

+ Solução: Associar a cada bloco, uma etiqueta (tag) única.

+ A etiqueta pode ser constituída pelos bits mais significativos do

endereço (bits não usados na determinação da posição).

+ No exemplo anterior, a etiqueta teria 2 bits.

0 1 2 3 4 Etiqueta Nº do bloco

+ Em certas situações, tanto o bloco como a etiqueta são

inválidos. Exemplo: arranque do sistema.

+ Para detectar esta situação, cada bloco tem associado um bit de

validade. Se o seu valor for zero, então o bloco é inválido (a

posição está “vazia”).

ArqComp: Sistemas de memória 35/78 2006-05-25

Exemplo: Cache para MIPS

Endereço Dados Acerto Dados Etiqueta Válido Etiqueta 32 20 Índice 0 1 2 1023 1022 1021 = Índice 20 10 Byte offset 31 30 13 12 11 2 1 0

(19)

Múltiplas palavras por bloco

+ O armazenamento de uma palavra (item) por bloco não

aproveita a proximidade espacial.

+ Para isso devem ser usados blocos com W itens (W > 1).

+ Para que seja fácil de identificar o item no interior do bloco, o

número W deve ser uma potência de 2: W = 2w.

Nesta situação, o item pode ser identificado por w bits do endereço. A parte do endereço que especifica a posição dentro do bloco designa-se por deslocamento (offset).

+ Interpretação de um endereço de N bits:

Etiqueta (N-b-w-x) Índice (b) Deslocamento (w) x

+ Quando os itens não têm apenas um byte (a unidade de

endereçamento), existem alguns bits (menos significativos) do endereço que não são usados no acesso a memória.

No caso do MIPS, os acessos são feitos por palavras de 4 bytes, pelo que 2 bits não são usados.

ArqComp: Sistemas de memória 37/78 2006-05-25

Estrutura de cache com múltiplas palavras por bloco

0 1 2 3 4 5 6 7 0 1 2 3 Etiqueta

Etiqueta Índice Deslocamento byte

}

verificação V

(20)

Tamanho de bloco vs. taxa de falhas

4K 16 10% 16K 64K 256K 5% 0% 32 64 128 256 Taxa de falhas

Tamanho do bloco (bytes)

+ Para tamanhos de blocos crescentes, a taxa de falhas diminui.

+ Mas para tamanhos muito grandes, a taxa de falhas aumenta

outra vez!

+ A penalidade de falha tende a aumentar com a dimensão do

bloco, porque é preciso ir buscar mais dados ao nível inferior.

ArqComp: Sistemas de memória 39/78 2006-05-25

Exemplo: Intrinsity FASTMath (1)

Endereço Data Hit Data Tag V Tag 32 16 = Index 18 8 Byte offset 31 14 13 6 5 2 1 0 4 Block offset 256 posições 512 bits 18 bits Mux 32 32 32

(21)

Exemplo: Intrinsity FASTMath (2)

+ Capacidade: 16 KB, 256 blocos de 16 palavras.

+ Etiquetas: 18 bits.

+ Índice: 8 bits (28 = 256).

+ Deslocamento (no bloco): 4 bits 24 = 16).

+ Exemplo de cálculo de posição:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Etiqueta (18) Índice (8) Desl. —

Endereço = 0x00457544 (455200410)

Etiqueta: 0000 0000 0100 0101 01|11 ... → 0x00115

Bloco: ... 01|11 0101 01|00 0100 → 0xD5 (21310)

ArqComp: Sistemas de memória 41/78 2006-05-25

Memórias cache separadas

+ Em muitos sistemas, existem memórias cache separadas para

instruções (I-cache) e dados (D-cache).

+ A I-cache é usada no ciclo IF e apenas permite acessos de

leitura.

+ A D-cache permite leituras e escritas; é usada no tratamento de

instruções load/store.

+ A utilização de caches separadas (split cache), permite evitar

conflitos entre os estados IF e MEM.

+ Para uma mesma capacidade total, caches unificadas permitem

conseguir menores taxas de falha (mas a diferença é pequena).

+ Exemplo: (I-Cache + D-Cache) vs. U-Cache:

I Caches separadas:

I-Cache(16 KB): 0.4%, D-Cache (16 KB): 11.4%, Média pesada: 3.24%

(22)

Tratamento de falhas de leitura

Quando, no processo de efectuar uma leitura da memória cache, esta detecta que o item pretendido não existe, são executadas as seguintes operações:

1. O endereço é passado para o nível inferior.

2. A memória cache espera pela nível inferior responda com o bloco pretendido. 3. O novo bloco é colocado na cache (eventualmente usando uma posição já

ocupada), a etiqueta é guardada e o bit de validade correspondente é colocado a 1.

4. O item pretendido é disponibilizado ao circuito que o solicitou.

Uma falha de leitura pode acontecer durante a obtenção de uma instrução (IF) ou durante uma leitura de dados (store). Em qualquer dos casos, uma falha de cache leva a um protelamento longo (tipicament mais de 100 ciclos).

O protelamento pode consistir simplesmente em suspender todas as operações. I instrução: o CPU protela à espera da memória e repete o ciclo IF até obter a

instrução.

I dado: a instrução de store é protelada durante a escrita (ciclo MEM).

ArqComp: Sistemas de memória 43/78 2006-05-25

Tratamento de operações de escrita: write hit

Só existem operações de escrita em caches de dados ou em caches unificadas.

Escrita com valor em cache write hit:

+ Operações de escrita levantam a possibilidade de o valor

existente na cache ser diferente do valor em memória principal.

+ Cache write-through: a memória cache é actualizada ao mesmo

tempo que a memória principal.

+ Cache write-back: apenas o valor em cache é actualizado. A

memória é actualizada apenas quando o bloco é substituído.

+ A política write-through deve evitar ficar à espera que a escrita

em memória principal termine. Para isso, o CPU tem uma fila interna onde coloca os valores a escrever (designada por

write-buffer), continuando entretanto a processar instruções

(pelo menos, enquanto a fila não ficar cheia).

(23)

Tratamento de operações de escrita: write miss

Escrita de valor cujo bloco está ausenta da cache write miss:

+ As duas variantes principais são:

I Política allocate-on-miss: o bloco necessário é obtido do

nível inferior, após o que tudo se passa como no caso de um write-hit. Pode envolver a substituição de um bloco já presente em cache.

I Política no-allocate: não alterar o conteúdo da cache e

alterar directamente a memória principal. Funciona como se a cache não existisse para este tipo de transacções.

+ O tratamento de cache miss é logicamente independente do

tratamento de cache hit. As combinações mais usadas são:

I write-through & no-allocate: ênfase na simplicidade.

I write-back & allocate-on-miss: ênfase na redução de tráfego

para a memória principal.

ArqComp: Sistemas de memória 45/78 2006-05-25

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache

Desempenho de memórias cache

(24)

Equações básicas de desempenho de caches

+ O tempo (em ciclos) para acerto (hit) faz parte do tempo

“normal” de execução de uma instrução.

+ TCPU = (Cexec + Cprot) ×T

I TCPU: tempo de CPU

I Cexec: nº de ciclos em que CPU executou instruções

I Cprot: nº de ciclos em que o CPU protelou devido a falhas

no acesso a memória cache

+ Assumir: não existem protelamentos causados por write buffer.

+ Assumir que penalidades de falha iguais na escrita e na leitura.

+ Cprot = Nrw × tf × pf

I Nrw : número de acessos do programa (leitura e escrita)

I tf: taxa de falhas

I pf: penalidade de falhas

+ Se taxa de falhas ou penalidade for diferente para leituras e

escritas é preciso separar a equação anterior em duas parcelas.

ArqComp: Sistemas de memória 47/78 2006-05-25

Exemplos de cálculo de desempenho

I Especificação: CPIperf=2, tfi = 0.02 para instrucões e tfd = 0.04

para dados, pf = 100, acessos a memória: 36%.

I Comparar o desempenho “real” com o desempenho obtido se a

memória cache fosse perfeita.

I Ci: nº de ciclos de protelamento na obtenção de instruções:

Ci = N × 0.02 × 100 = 2 × N

I Cd: nº de ciclos de protelamento no acesso a dados:

Cd = N × 0.36 × 0.04 × 100 = 1.44 × N

I CPIprot = CPIperf + Ci/N + Cd/N = 2 + 1.44 + 2 = 5.44 I

speedup = N × CPIprot × T

N × CPIperf × T =

5.44

2 = 2.72

I E se CPIperf = 1 ?

I CPIprot = 4.44 → speedup = 4.4

(25)

Efeito do aumento de frequência

I Melhorar o CPI sem melhorar o subsistema de memória leva a

um aumento da percentagem de tempo perdida em protelamentos. (cf. exemplo anterior)

I O que acontece se a frequência de relógio aumentar, mas o

subsistema de memória permanecer igual?

I Neste caso a penalidade de falha aumenta: pf = 200

I Ci + Cd = 0.02 × 200 + 0.36 × 0.04 × 200 = 6.88

I CPIrapido=2 + 6.88 = 8.88

I

speedup = N × CPIlento × T

N × CPIrapido × T2 =

5.44

8.88 × 0.5 = 1.23

I Se a influência da cache tivesse sido ignorada, seria speedup=2.

I Processador que melhore simultaneamente CPI e T sofre um

impacto duplo negativo.

ArqComp: Sistemas de memória 49/78 2006-05-25

Influência do desempenho de cache

Radix sort

Quicksort

Nº de itens ordenados Nº de itens ordenados

Nº de itens ordenados Instructions / item 0 4 8 16 32 200 400 600 800 1000 1200 64 128 256 512 1024 2048 4096 Radix sort Quicksort

Clock cycles / item

0 4 8 16 32 400 800 1200 1600 2000 64 128 256 512 1024 2048 4096 Radix sort Quicksort

Cache misses / item

0 4 8 16 32 1 2 3 4 5 64 128 256 512 1024 2048 4096 Nº de instruções executadas

por item Ciclos de relógio por item

Nº de falhas de cache por item

(26)

Colocação flexível de blocos

+ Para reduzir a taxa de falhas, pode usar-se uma colocação de

blocos mais flexível. Opções: Um item pode ser colocado

1. num único bloco: mapeamento directo

2. em qualquer bloco: associatividade completa

3. em qualquer bloco de um conjunto: associatividade parcial

+ Número de blocos de um conjunto = número de vias

+ Exemplos: conjunto de 2 blocos: associatividade 2 vias (2-way)

mapeamento directo: associatividade 1-way

associatividade total (cache com M blocos): m-way

+ Índice determina apenas o conjunto, mas não o bloco:

I = End % (nº de conjuntos)

+ Para determinar onde se encontra o item, as etiquetas de todos

os blocos válidos do conjunto devem ser comparadas (em

simultâneo!): implementação mais complexa, que pode levar ao aumento do tempo de acesso (hit time)

ArqComp: Sistemas de memória 51/78 2006-05-25

Associatividade: exemplo

Mapeamento directo 2 4 5 6 7 0 1 3 Bloco # Dados Etiqueta Busca 1 2

Associatividade por conjuntos

2 0 1 3 Conj. # Dados Etiqueta Busca 1 2 Associatividade total Dados Etiqueta Busca 1 2

+ Resultado empírico: associatividade superior a 8 não é útil (não leva a qualquer redução da taxa de falhas).

+ Exemplo (Intrinsity FASTMath):

Associatividade taxa de falhas (dados)

1 10.3%

(27)

Exemplo: organização de cache de 8 blocos

Associatividade: 8 vias (associatividade total, neste caso)

Tag Tag Data Tag Data

Tag Data Data Tag Data Tag Data Tag Data Tag Data Tag Tag Data Tag Data

Tag Data Data Set

0 1

Associatividade: 4 vias

Tag Tag Data Data Set 0 1 2 3 Associatividade: 2 vias Tag Data Block 0 1 2 3 4 5 6 7 Associatividade: 1 via (mapeamento directo)

ArqComp: Sistemas de memória 53/78 2006-05-25

Localização de bloco em cache associativa

Endereço Data Etiqueta (tag) V Tag = Índice (index) 22 8 31 30 12 11 10 9 8 3 2 1 0 4-to-1 multiplexor Index 0 1 2 253 254 255 Data V Tag = Data V Tag = Data V Tag 22 = 32

(28)

Número de bits usados para etiquetas

Calcular o nº de bits usados para armazenar as etiquetas.

I Especificação: endereços de 32 bits, cache com 4K blocos,

blocos de 4 palavras, associatividade m=1, m=2, m=4 e associatividade total (m=4K).

I 16 (=24) bytes / bloco → 32-4 = 28 bits para índice e etiqueta.

I m=1: 4K conjuntos, logo 12 bits de índice, e

28-12=16 bits/etiqueta. Total: 16×4K = 64 Kbits

I Cada incremento da associatividade diminiu para metade o

número de conjuntos, logo diminui de 1 o número de bits do índice e aumenta de 1 o número de bits da etiqueta.

I m=2: 2K conjuntos, 11 bits de índice e 17 bits de etiqueta.

Total: 2K × 2 × 17 = 68 Kbits.

I m=4: 1K conjuntos, 10 bits de índice e 18 bits de etiqueta.

Total: 1K × 4 × 18 = 72 Kbits.

I m=4K: 1 conjunto, 0 bits de índice e 28 bits de etiqueta. Total:

1 × 4K × 28 = 112 Kbits.

ArqComp: Sistemas de memória 55/78 2006-05-25

Política de substituição

+ A política de substituição define qual dos blocos de um

conjunto deve ser substituído quando há uma falha e todos os blocos do conjunto estão ocupados.

+ Substituição aleatória: o bloco a ser substituído é escolhido

aleatoriamente de entre os elementos do conjunto.

+ LRU (Least Recently Used): o bloco substituído é aquele que

não é usado há mais tempo.

I Implementação para uma cache de 2 vias: para cada bloco

usar um bit para marcar o último a ser acedido (o bit do outro bloco do conjunto é colocado a zero).

I A complexidade de implementar LRU cresce com a

associatividade.

+ A política LRU tenta aproveitar a proximidade temporal: os itens

(29)

Múltiplos níveis de memória cache

+ Para reduzir a penalidade de falhas pode aplicar-se a mesma

abordagem que se usa para reduzir o tempo de acesso à memória principal: usar uma cache para a cache.

+ A cache de nível 2 permite reduzir a penalidade de falha da

cache de nível 1.

+ A cache de nível 2 contém geralmente os dados residente na

cache de nível 1 (hierarquia de memória “inclusiva”) e é de maior capacidade.

+ Arranjo comum: caches separadas de nível 1 + cache unificada

de nível 2.

+ Em alguns sistemas de elevado desempenho: 2 níveis de cache

on-chip + 1 nível (L3) no exterior.

ArqComp: Sistemas de memória 57/78 2006-05-25

Processador com dois níveis de cache

I Usado no Mac G5 I 58 milhões transístores, 2.2 GHz I L1-ICache: 64 KB, m=1, 128 bytes/bloco I L1-DCache: 32 KB, m=2, 128 bytes/bloco, LRU, write-through, no-allocate I L2-Cache: 512 KB, m=8, 128 bytes/bloco, LRU, write-back, allocate-on-miss

(30)

Desempenho de memórias cache multinível

Cálculo do desempenho de um sistema com dois níveis de cache:

I Especificação: CPI = 1, F = 5 GHz (T=0.2 ns), acesso a memória

principal: 100 ns, taxa de falhas em L1 de 2%.

Qual a melhoria de desempenho obtida por uma memória cache L2 (tempo de acesso 5 ns) e com capacidade suficiente para reduzir a taxa de falhas para memória principal para 0.5%?

I Penalidade de falha (mem. principal): 100/0.2 = 500 ciclos.

I CPI1 = 1 + 0.02 × 500 = 11

I Com 2 níveis:

Penalidade de falha por acesso a L2: 5/0.2 = 25 ciclos

I CPI2 = 1 + ProtL1 + ProtL2

CPI2 = 1 + 0.02 × 25 + 0.005 × 500 = 1 + 0.5 + 2.5 = 4

I speedup = 11/4 = 2.8

I (Extra) taxa de falhas local de L2: 0.005/0.02 = 0.25

ArqComp: Sistemas de memória 59/78 2006-05-25

1 Memórias

2 Sistemas de memória: aspectos gerais

Descodificação de endereços Hierarquia de memória

3 Memórias cache

Princípios de funcionamento de memórias cache Desempenho de memórias cache

(31)

Memória virtual: motivação

+ Conceito: memória principal é uma “cache” para memória

secundária (em disco magnético). Motivação:

1. remover a limitação do tamanho da memória física: o

programa pode usar mais memória que a fisicamente presente.

Vantagem adicional: programa pode ser executado sem modificação em computadores com sistemas de memória diferentes.

2. permitir a utilização comum eficiente e segura de memória

principal por vários programas em execução simultânea (processos).

+ Aplica-se o princípio da proximidade (local e espacial).

+ Cada programa é compilado (e executado) num espaço de

endereçamento separado (virtual).

Durante a execução, os endereços deste espaço virtual são convertidos para endereços físicos (de memória física).

ArqComp: Sistemas de memória 61/78 2006-05-25

Memória virtual: termos e conceitos

Cache Memória virtual

bloco página

falha de memória falha de página

SRAM → DRAM DRAM → disco magnético

+ Durante um acesso a memória principal, o endereço virtual é

convertido (mapeado) num endereço físico.

+ Memória virtual também implementa automaticamente a

“relocação” do programa: o programa pode ser colocado (“carregado”) para qualquer zona de memória.

+ A relocação é feita por páginas: não é necessário usar uma zona

contígua de memória para todo o programa.

+ Mapeamento virtual→real com base em páginas de dimensão

fixa: paginação.

(32)

Modelo conceptual

Endereços virtuais Endereços físicos Conversão de

endereços

Endereços de disco

ArqComp: Sistemas de memória 63/78 2006-05-25

Endereços virtuais e reais

Nº de página virtual Deslocamento (na página)

Deslocamento (na página)

31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0 Nº de página física 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0 Endereço virtual Endereço físico Conversão

O endereço virtual é dividido num número de página virtual e um deslocamento na página. O número de página virtual é convertido num número de página real. O

(33)

Penalidade de falha de página

A penalidade de falha de página é enorme : alguns milhões de ciclos de relógio. (O acesso a memória principal é 100000 mais rápido que o acesso a disco.)

Consequências:

+ A dimensão de uma página deve permitir amortizar o elevado

tempo de acesso.

Dimensão típica: 4 KB–16 KB, com tendência a aumentar (32 KB–64 KB).

+ A redução da taxa de falhas é de extrema importância:

utilização de associatividade completa.

+ O tratamento das falhas de página pode ser feito por software

(já que o overhead é comparativamente reduzido), o que permite a utilização de políticas de substituição sofisticadas.

+ Não se usa write-through, mas apenas write-back (copy-back).

ArqComp: Sistemas de memória 65/78 2006-05-25

Colocação de páginas (conversão virtual→real)

+ O mapeamento virtual→real é completamente associativo.

+ O número de páginas impede uma pesquisa em paralelo (como

nas memórias cache) ou uma pesquisa linear.

+ Usa-se um tabela indexada pelo nº de página virtual: na posição

correspondente a cada página está o nº de página real associado e informação adicional (p. ex., tipo de acesso permitido), bem como um bit de validade.

+ A tabela de páginas tem tantas posições como páginas virtuais.

+ A tabela de páginas é mantida em memória e, geralmente,

endereçada a partir de um registo especial: page table register.

+ A tabela é utilizada por hardware (durante os acessos), mas

gerida por software (sistema operativo).

+ A tabela de páginas é mantida em memória principal.

+ Existe uma tabela por processo (e uma para o sistema

(34)

Tabela de páginas: exemplo

Nº de página virtualr Deslocamento (página) 31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

Nº de página física Deslocamento (págia) 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

Endereço virtual

Endereço físico

Registo de tabela de páginas

Nº de página físicar Valid

Tabela de páginas

Se 0 a página não está presente em memória

20 12

18

ArqComp: Sistemas de memória 67/78 2006-05-25

Tratamento de faltas de página

+ Quando, durante a conversão virtual→real, o bit de validade da

posição escolhida da tabela de página está a zero, ocorre uma falta de página.

+ Neste caso, o CPU salta para uma subrotina de atendimento

existente no sistema operativo.

+ O sistema operativo deve encontrar a página em disco. Como?

+ Quando o sistema lança um novo processo, reserva espaço para

todas as páginas numa zona especial do disco designada por swap space.

+ Ao mesmo tempo, o sistema operativo cria uma estrutura de

dados para registar a posição de cada página em disco. Essa estrutura pode ficar integrada na tabela de páginas (exemplo seguinte) ou numa estrutura auxiliar separada.

+ O sistema operativo também regista, para cada página física,

(35)

Tratamento de faltas de página: exemplo

Tabela de páginas Página física ou endereço de disco Memória física Nº de página virtual Armazenamento em disco 1 1 1 1 0 1 1 1 1 1 0 0 Válido

ArqComp: Sistemas de memória 69/78 2006-05-25

Falhas de página e tratamento de escritas

+ Quando ocorre uma falha de página e toda a memória física está

ocupada, o sistema operativo deve escolher uma página física a libertar.

+ Se alguma das posições de memória dessa página foi alterada, a

página física deve ser copiada para disco (write-back) antes de ser substituída.

+ Blocos de cache “pertencentes” à página a substituir devem ser

também libertados (incluindo write-back se necessário), se existirem.

+ O acesso a disco magnético (neste caso, para escrita) é muito

demorado.

+ Para evitar cópias desnecessárias, cada página tem um bit (na

tabela de páginas) a indicar se foi alterada: bit de modificação

(dirty bit). Apenas páginas físicas com esse bit de substituição

(36)

Política de substituição

+ A escolha da página física a substituir aquando de uma falta de

página é geralmente feita segundo o critério LRU (Least

Recently Used):

É substituída a página não usada há mais tempo (as outras têm mais probabilidade de virem a ser usadas brevemente).

+ A implementação exacta de LRU é muito pesada, já que a

informação correspondente deve ser actualizada a cada acesso.

+ Na prática, os S. O. apenas aproximam a política LRU.

+ Uma abordagem: o CPU associa a cada página um bit de

utilização (ou bit de referência): esse bit é colocado a 1 sempre

que ocorre um acesso à página.

Periodicamente, o S. O. coloca todos os bits de referência a zero, para depois registar as páginas acedidas durante um certo intervalo de tempo. Com esta informação de utilização, o S. O. pode escolher a página a substituir de entre as que foram

referenciadas menos recentemente.

ArqComp: Sistemas de memória 71/78 2006-05-25

Tornar a conversão de endereços mais rápida

+ As tabelas de páginas estão em memória principal. Cada acesso

do programa seria transformado em dois acessos: um acesso à página e um segundo acesso aos dados/instruções.

+ O princípio da localidade aplica-se: um endereço de página

virtual usado recentemente tem elevada probabilidade de ser re-utilizado.

+ Solução: usar uma memória cache especial para guardar as

conversões de endereços mais recentes: translation-lookaside

buffer (TLB)

+ A cada acesso, o TLB é consultado para determinar a página real

correspondente à página virtual especificada no endereço. Em caso de sucesso, o bit de referência é actualizado. No caso de uma escrita, o mesmo sucede com o bit de modificação.

(37)

TLB: Cache de endereços de página convertidos

1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 1 1 1 1 0 0 Página física ou end. disco Valid Dirty Ref

Tabela de páginas Memória física Nº de página virtual Disco magnético 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 Endereço de página física Valid Dirty Ref

TLB

Etiqueta

ArqComp: Sistemas de memória 73/78 2006-05-25

TLB: aspectos adicionais

+ Falha no TLB: carregar novo valor da tabela de páginas e repetir

o acesso (software ou hardware); da segunda vez pode ocorrer uma falha de página (software).

+ Durante a substituição de um bloco do TLB, os bits de referência

e de acesso devem ser copiados para a página: write-back.

+ São usados diversos tipos de associatividade:

I TLB pequeno com associatividade total (minimizar a taxa

de falhas) e selecção aleatória do bloco a substituir (simplicidade) ; ou

I TLB maior, com associatividade reduzida.

+ Características típicas:

I tamanho (nº de endereços): 16–512

I tamanho do bloco: 1–2

I tempo de acesso (hit): 0.5–1 ciclo de relógio

I penalidade de falha: 10-1000 ciclos de relógio

(38)

Exemplo: TLB do Intrinsity FastMATH

=

= 20

Nº de página virtual Deslocamento de página 31 30 29 14 13 12 11 10 9 3 2 1 0 Endereço virtual Etiqueta Valid Dirty TLB Nº de página física Etiqueta Valid TLB hit Cache hit Dado Dados desl. byte = = = = =

Nº de página física Deslocamento de página Etiqueta física Índice de cache

12 20 Desl. bloco End. físico 18 32 8 4 2 12 8 Cache

ArqComp: Sistemas de memória 75/78 2006-05-25

Caches, TLB e memória virtual

Sim Acesso de escrita permitido? Não Sim Cache hit? Não Sim TLB hit? Endereço virtual acesso TLB

Try to read data from cache Não Sim Escrita? Não Protelar durante leitura de bloco (eventualmente com escrita) (eventualmente com escrita) Fornecer dados para o CPU Erro de protecção Não Cache hit? Sim

Try to write data to cache

Protelar durante leitura de bloco TLB miss

(39)

Acesso a memória: eventos possíveis

Para um sistema com TLB, um nível de cache e memória principal, um acesso a memória pode encontrar três eventos: falha TLB, falha de página (PT) e falha de cache. Que combinações destes eventos podem realmente ocorrer?

TLB T. P. Cache Possível? Porquê?

hit hit miss Sim. A TP não é verificada.

miss hit hit Sim. Página em memória mas endereço fora da T. P.

miss hit miss Sim. Dados/instruções não estão em cache.

miss miss miss Sim.

hit miss miss Não. Se não existe na T. P. não pode estar em TLB.

hit miss hit Não. (Idem)

miss miss hit Nao. Dados não podem estar em cache se a página não

está em memória.

ArqComp: Sistemas de memória 77/78 2006-05-25

TLB, memória virtual e caches

TLB, memória virtual e caches podem ser caracaterizados pelas respostas às seguintes questões:

1. Onde pode ser colocado um bloco? Mapeamento directo: 1 posição. Associatividade completa: todas as posições,

associatividade por conjuntos: conjunto restrito de posições.

2. Como encontrar um bloco? Mapeamento directo: índice. Associatividade por conjuntos: índice para o conjunto + pesquisa concorrente. Associatividade completa: pesquisa concorrente (cache) ou tabela separada (mem. virtual).

3. Que bloco substituir?

Mapeamento directo: só um bloco. Outros: selecção aleatória ou LRU (exacto ou aproximado)

4. Que acontece na escrita?

Write-through ou write-back. Memória virtual usa sempre write-back.

Referências

Documentos relacionados

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

A ADMINISTRADORA e a GESTORA buscarão manter carteira de títulos com prazo médio superior a 365 (trezentos e sessenta e cinco) dias calculado conforme metodologia de cálculo do

Unidade Responsável: Companhia de Pesquisa de Recursos Minerais UO: 32202 - Companhia de Pesquisa de Recursos Minerais - CPRM.. A implementação da Ação "Gestão da

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos

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

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Desta maneira, observando a figura 2A e 2C para os genótipos 6 e 8, nota-se que os valores de captura da energia luminosa (TRo/RC) são maiores que o de absorção (ABS/RC) e

Requisitos: Curso de graduação em Medicina, fornecido por instituição de ensino oficial e reconhecida pelo Ministério de Educação e registro no Órgão da Classe.