Sistemas de Memória
Paulo André Castro CES-25 IEC - ITA
CES-25 – Arquiteturas para Alto Desmpenho Prof. Paulo André Castro
pauloac@ita.br
Sala 110 – Prédio da Computação www.comp.ita.br/~pauloac
Conceitos Úteis
• A cache é divida em blocos com um número fixo de palavras de memória (nível mais alto)
• O endereço de memória é então divido em duas partes:
– O endereço do bloco (às vezes, chamado de título, ou tag)
Paulo André Castro CES-25 IEC - ITA
– O endereço do bloco (às vezes, chamado de título, ou tag) – A posição da palavra dentro do bloco (offset)
• Bits de offset = log2 (Tamanho do Bloco)
Organização da Cache
Acessando a cache
• Exemplo:
– Endereço 01173 título 0117 Sucesso
DR12
– Endereço 01163 título 0116 Falta
Paulo André Castro CES-25 IEC - ITA
– Endereço 01163 título 0116 Falta
Procura na memória principal
P2: Como um bloco é encontrado na
cache ?
•O Tag marca o endereço de memória ao qual
corresponde o bloco de cache e também se utiliza um bit para marcar a validade ou não do bloco (bit de validade)
• Tags sempre são pesquisadas em paralelo
Paulo André Castro CES-25 IEC - ITA
P3: Substituição do Bloco
• Que bloco pode ser substituído ao ocorrer uma falha?•Mapeamento direto: Não há decisão a ser feita, pois cada bloco é direcionado para um bloco de cache
•Mapeamento Completamente associativo ou de conjunto: várias opções
Paulo André Castro CES-25 IEC - ITA
conjunto: várias opções
•Aleatória: Escolhe-se aleatoriamente um bloco para a substituição
•Menos recentemente usado(Least Recently Used): Registra-se os acessos aos blocos e se retira do cache o menos usado recentemente. Baseia-se no passado para prever o futuro
Implementação do LRU
• Implementação com Contador
– Guardar para cada bloco, em um campo contador o número do último acesso (em clocks)
– Substitui-se o bloco com menor clock
Paulo André Castro CES-25 IEC - ITA
• Implementação com Pilha
– Manter em uma pilha os números de cada bloco
– Ao ser realizada acesso a um bloco X, este passaria ao topo da pilha
– Substitui-se o bloco cujo número está na base da pilha
Implementação Aproximada de
LRU
• Exige bastante do hardware
• Criar um campo de referência com n bits
– Em cada acesso setar para 1 – Deslocar
Paulo André Castro CES-25 IEC - ITA
– Deslocar
• Primeiro a entrar, Primeiro a sair( First In First out, FIFO), Esta opção se aproxima ao substituir o mais antigo, no lugar do menos recentemente usado
P4: Estratégia de Gravação
• As leituras dominam as operações de memória, mas
também existem escritas. Segundo algumas estimativas, aproximadamente 10%
• Estratégias de Solução:
Paulo André Castro CES-25 IEC - ITA
• Estratégias de Solução:
– Write-Through: As informações são gravadas no cache e na memória inferior
– Write-Back: As informações são gravadas apenas no cache. A gravação na memória ocorrerá apenas quando houver
Estratégias de Gravação
• Write-Back
– Vantagens
• Usa menos largura de Banda da Memória (Multiprocessadores)
Paulo André Castro CES-25 IEC - ITA
(Multiprocessadores)
• Poupa Energia por usar menos hardware
– Desvantagens
• Precisa controlar atualização da Memória • Falha de leitura pode causar gravação • Memória fica inconsistente com a cache
Estratégias de Gravação
• Write-Through
– Vantagens
• Mais fácil de Implementar
• Falha de leitura não causa gravação
Paulo André Castro CES-25 IEC - ITA
• Falha de leitura não causa gravação • Nível Inferior sempre coerente
(multiprocessadores)
– Desvantagem
• Gravações sempre demoram o tempo do nível inferior, mesmo em caso de acerto
Buffer de Gravação
• Write-Through
Paulo André Castro CES-25 IEC - ITA
• Write-Through
– Buffer de Gravação para evitar atrasar a CPU – FIFO (First In, First Out)
– Tipicamente em torno de 4 entradas
• Problema: Frequência de Instruções de Gravação maior que frequência da DRAM (Saturação do Buffer)
Buffer de Gravação 2
• Problema: Freqüência de Instruções de Gravação maior que
Paulo André Castro CES-25 IEC - ITA
• Problema: Freqüência de Instruções de Gravação maior que capacidade de atendimento da DRAM (Saturação do Buffer)
• Solução: Aumentar o desempenho das gravações através da introdução de outro nível de cache
Falha de Gravação
• Ao tentar gravar um dado que não está na cache há duas opções:
• Write Allocate (Gravação com Alocação) :
– Traz o bloco que contém o endereço para a cache
Paulo André Castro CES-25 IEC - ITA
– Traz o bloco que contém o endereço para a cache
• Write Not Allocate (Gravação sem Alocação):
Quatro perguntas sobre
Organização da Cache
• P1: Onde um bloco pode ser inserido no nível superior (posicionamento do bloco) ?
• P2: Como um bloco é encontrado se está no nível superior da hierarquia (cache) ?
Paulo André Castro CES-25 IEC - ITA
superior da hierarquia (cache) ?
• P3: Que bloco deve ser substituído ao ocorrer uma falha (substituição do bloco) ?
• P4: O que acontece em uma gravação (estratégia de gravação) ?
Como melhorar o desempenho
da Memória?
• Reduzir o ciclo de memória
– usando memória cache – Melhorar taxa de acerto
Paulo André Castro CES-25 IEC - ITA
• Aumentar o tamanho da palavra
– Acessar várias palavras em paralelo (usando memória entrelaçada).
Definições
• Ciclo de Memória: tempo para devolver a CPU
uma palavra
• Palavra de Memória: conjunto de bytes que
pode ser entregue a CPU a cada requisição.
• Taxa de Transferência: número de bytes por
Paulo André Castro CES-25 IEC - ITA
• Taxa de Transferência: número de bytes por
unidade de tempo entregues pela memória.
• Exemplo:
– palavra de 32 bits ou 4 bytes – ciclo de memória = 50 ns;
Desempenho da Memória
•Nem todo acesso à memória é atendido pela cache; •Quando é atendido Sucesso na cache
•Quando não Falha na cache
•Grandeza Fundamental para o desempenho do sistema de Memória com Cache:
Paulo André Castro CES-25 IEC - ITA
Memória com Cache:
Desempenho da Memória
• O tempo efetivo de um sistema com cache é um valor intermediário entre os tempos da cache e da memória principal.
– Tef = h * Tc + (1 – h) * Tm (0 h 1)
Paulo André Castro CES-25 IEC - ITA
• Taxa de sucesso h: probabilidade de sucesso na cache • Taxa de falha (1-h): probabilidade de falha na cache
Desempenho da Memória
• Taxa de Erro e Penalidade
– Tef = Tc + (Tx. Erro)* Penalidade – Tx. Erro = (1-h)
– Penalidade = Tm-Tc
Paulo André Castro CES-25 IEC - ITA
– Penalidade = Tm-Tc
• Qual o tempo efetivo considerando dois níveis
de caches ?
– Tef = h * Tc + (1 – h) * [ h2 * Tc2 + (1-h2)*Tm]
Taxa de Acerto na Cache
• É comum a obtenção de valores altos para h;
desse modo, o ciclo efetivo fica sensível a
pequenas mudanças de h:
– Caso Tc = Tm / 10 e h caia de 0.99 para 0.98 (1%) então Tef sobe 8.3% (quase 10%).
Paulo André Castro CES-25 IEC - ITA
então Tef sobe 8.3% (quase 10%).
– Caso Tc = Tm / 10 e h caia de 0.99 para 0.89 (~10%) então Tef sobe 82.5% (quase dobra). – Caso Tc = Tm / 20 e h caia de 0.99 para 0.89
Desempenho de Memória
• Pequenas melhorias em h podem resultar emsubstancial aumento de desempenho no sistema de memória.
• Fatores que variam a razão de sucesso h
Paulo André Castro CES-25 IEC - ITA
• Fatores que variam a razão de sucesso h
– Número de palavras dos blocos e número de blocos;
– Critério de escolha do bloco que dará lugar a um novo bloco vindo da memória principal, na ocorrência de uma falta (Política de substituição de blocos).
Exercício
• Considere um computador com– CPI(Clock por Instrução) = 1,0 – Penalidade por erro = 25 ciclos – Taxa de erros = 2%
– Acessos a memória representam 50% do total de instruções em média.
Paulo André Castro CES-25 IEC - ITA
média.
• Quão mais rápido seria este computador se não houvesse erro de cache?
Resposta
• Computador sem Erros:
– Tempo de Execução Ideal = IC *1,0* Tempo de Clock
• Computador Real
Paulo André Castro CES-25 IEC - ITA
• Computador Real
– Tempo de Execução Real= Tempo de Execução ideal + Tempo de Parada
– Tempo de Parada = IC * Acesso a memória/Instrução * Taxa de Erros * Penalidade de Erro * Tempo de
Resposta
• Tempo de Parada:
• TP= IC*(1+0,5)*0,02*25 = IC *0,75
• (1+0,5) – 1 para acesso de instrução e 0,5 para acesso de dados da instrução
Paulo André Castro CES-25 IEC - ITA
• Tempo de Execução Real
– Tempo de Parada : IC*0,75 * tempo de clock
– Tempo de Execução = 1,75*IC * tempo de clock
Medidas de Taxa de Erro de Cache
• Erro/Instrução
– Ex.:3 falhas/1000 instruções
• Taxa de Erro /acesso a memória
– Ex.: 2% dos acessos causam falha de cache
Paulo André Castro CES-25 IEC - ITA
– Ex.: 2% dos acessos causam falha de cache
• Erro/Instrução = (Taxa de Erro * Acessos
a Memória)/IC = Taxa de Erro *
No Exemplo, anterior
• Erro/Instrução = Taxa de Erros
*Acessos/Instrução
– Erro/Instrução = 0,02* (1+0,5) = 0,03
• Recalculando o Tempo de Parada para o
Paulo André Castro CES-25 IEC - ITA
• Recalculando o Tempo de Parada para o
exemplo, obtemos o mesmo resultado
– Tempo de Parada = IC * Erro/Instrução * Penalidade de Erro
Tecnologias de Construção de
Memórias
e Memórias RAM, entrelaçada e
Paulo André Castro CES-25 IEC - ITA
Virtual
CES-25 – Arquiteturas para Alto Desmpenho Prof. Paulo André Castro
pauloac@ita.br
Sala 110 – Prédio da Computação www.comp.ita.br/~pauloac
Técnicas para Melhorar o
Desempenho da Memória Principal
• Opções:
– Aumentar largura do dados
• Barramento mais largo • Intercalar memória
Paulo André Castro CES-25 IEC - ITA
– Melhor tempo de acesso
• tecnologia de construção: clock, latência,etc. • DDR (Double Data Rate), DDR2, etc.
Melhorando o Desempenho da
Memória Principal
Memória Entrelaçada
• Memória entrelaçada permite acesso simultâneo a tantas palavras quantos forem os seus módulos independentes.
• Com um número suficiente de módulos, é possível haver, num dado momento, várias instruções e vários operandos em fase de
recuperação e vários resultados em fase de armazenamento.
Paulo André Castro CES-25 IEC - ITA
recuperação e vários resultados em fase de armazenamento.
• É claro que, para ganho máximo, num dado momento, cada acesso à memória deve acessar módulos distintos.
Maior Largura do Barramento X
Memória Intercalada - Exemplo
• Considere o seguinte sistema:
– Envio de Endereço: 4 clocks da CPU – Acesso a palavra na Memória: 56 clocks
– Envio de uma palavra pelo barramento: 4 clocks
• Para Bloco = 1 palavra (64 bits) – Tx. De Erro: 3%
Paulo André Castro CES-25 IEC - ITA
– Tx. De Erro: 3%
– Penalidade : 64 clocks ( 4+ 56+4)
– Média de Ciclos por Instrução(s/erro de cache): 2 – Acesso a Memória/Instrução: 1,2
• Para bloco =2 palavras – Tx. De Erro: 2%
• Para bloco = 4 palavras – Tx. De Erro: 1,2%
Exemplo (Cont.)
• Qual a melhoria do sistema em relação ao original com barramento simples ao utilizar :
– intercalação de 2 ou 4 bancos
– sistema com barramento duplicado
• Em blocos de 1,2 e 4 palavras
Paulo André Castro CES-25 IEC - ITA
• Solução:
– TempoExecução+Penalidade*Tx.Erro
• CPI para sistema de memória de 1 palavra
Exemplo (Cont.)
• Bloco de duas palavras (128 bits)
– barramento de 64 bits, sem intercalação:
• 2+2%*(1,2*2*64) =5,07
– Barramento de 128 bits, sem intercalação:
• 2+2%*1,2*64 = 3,54
Paulo André Castro CES-25 IEC - ITA
• 2+2%*1,2*64 = 3,54
– barramento de 64 bits, com intercalação (2 bancos):
Efeitos da duplicação do bloco
• Diminuição do desempenho no sistema de
barramento de 64 bits, sem intercalação
– De 4,3 para 5,07
• Duplicação do Barramento mais rápido em 1,22
Paulo André Castro CES-25 IEC - ITA
• Duplicação do Barramento mais rápido em 1,22
vezes
• Speedup = 1,22 = (4,3/3,63)
• Intercalação de Memória mais rápida em 1,19
vezes
Efeito da quadruplicação do
bloco (Cont. )
• Bloco de 4 palavras (256 bits)
– barramento de 64 bits, sem intercalação:
• 2+1,2%*(1,2*4*64) =5,69
– Barramento de 128 bits, sem intercalação:
• 2+1,2%*1,2*2*64 = 3,84
Paulo André Castro CES-25 IEC - ITA
• 2+1,2%*1,2*2*64 = 3,84
– barramento de 64 bits, com intercalação (4 bancos):
Efeito da quadruplicação do bloco
• Diminuição do desempenho no sistema de barramento de 64 bits, sem intercalação : De 4,3 para 5,69
• A duplicação do Barramento é mais rápida apenas 1,12 vezes (4,30/3,84)
• Intercalação de Memória agora é a mais rápida 1,39 vezes (4,30/3,09)
Paulo André Castro CES-25 IEC - ITA
• Intercalação de Memória agora é a mais rápida 1,39 vezes (4,30/3,09)
• O custo de quadruplicar o barramento de memória pode se tornar proibitivo e não traria desempenho muito
melhor
– Barramento de 256 bits, sem intercalação:
Funcionamento e Tecnologia de
Construção da Memória RAM
Paulo André Castro CES-25 IEC - ITA
Tempos de Acesso e Tamanhos de Níveis de
memória - Servidor
Tempos de Acesso e Tamanhos de Níveis de
memória – Dispositivo Pessoal Móvel
Desempenho
Microprocessador vs Memória
Memória vs Disco
Custo/GB x Tempo de Acesso
Tecnologias de Construção de
Memórias
• ROM (Read Only Memory): Memória não volátil, gravada apenas uma vez no momento o processador não consegue modificá-las. Algumas podem ser apagadas eletricamente (EEPROM ).
• SRAM: Prioriza velocidade e capacidade
– Os dados não precisam ser gravados periodicamente – Linhas de endereço não multiplexadas.
– 8 a 16 vezes mais cara que DRAM
Paulo André Castro CES-25 IEC - ITA
– 8 a 16 vezes mais cara que DRAM
• DRAM: Prioriza custo por bit e capacidade
– Os dados precisam ser gravados novamente após uma leitura
– Periodicamente precisam ser gravados (atualizados) novamente mesmo sem leitura – Linhas de endereço multiplexadas.
Tecnologias de Construção de
Memórias
• DRAM: DRAMs tradicionalmente tinham uma interface assíncrona com seu controlador e com isso um overhead de sincronização.
– Introduziu-se um sinal de clock para os chips DRAM tornando-os síncronos. Batizou-se isto de DRAM síncrona (SDRAM).
• DDR SDRAM: Inovação onde se transfere dados da memória na borda crescente e decrescente do sinal de clock da SDRAM, com isso duplicando a taxa. Double Data
Paulo André Castro CES-25 IEC - ITA
decrescente do sinal de clock da SDRAM, com isso duplicando a taxa. Double Data Rate(DDR)
– DDR2 e DDR3: Evolução da tecnologia DDR com aumento de clock e redução de voltagem nos chips
• DIMM (Dual Inline Memory module): Memórias, em geral, são vendidas em pequenas placas DIMM de 4 a 16 chips DRAMs e geralmente organizadas de modo a fornecerem palavras de 8 bytes.
Organização de uma DRAM
Matriz de vários bits
Exemplo de organização de um
chip de 256KB
Funcionamento da DRAM
• Multiplexação do Endereço
– RAS (Row Access Strobe)
– CAS (Column Access Strobe) – Acesso ao Dado
Paulo André Castro CES-25 IEC - ITA
• Atualização Periódica de Dados
– Bits de uma linha podem ser atualizados simultaneamente
– Atualização é determinada pelo DRAM Controller e tipicamente demora um tempo de acesso a um dado por linha
Modos de Operação
• Modo Regular
– Cada acesso é definido por:
• RAS(Row Access Strobe)
• CAS (Column Access Strobe)
Paulo André Castro CES-25 IEC - ITA
• CAS (Column Access Strobe) • Carregamento do Dado
• Modo Rápido
– Dados na mesma linha são acessados
apenas mudando o CAS
Desempenho da DRAM
• Tempo de Acesso não uniforme devido a:
– Localização
– Atualização dos Dados
• Tipicamente o tempo é dividido em:
Paulo André Castro CES-25 IEC - ITA
• Tipicamente o tempo é dividido em:
– RAS precharge (tRP) : seleção de linha
– RAS-to-CAS delay (tRCD) : seleção de coluna – CAS latency (CL) : leitura/gravação do dado – Cycle Time (tRAS): tempo completo “médio”
• Tais valores podem ser determinados através de aplicativos específicos: •RAS precharge (tRP) •RAS-to-CAS delay (tRCD) •CAS latency (CL)
•Cycle Time (tRAS)
Memória vem em Módulos
• Para facilitar o manuseio e também explorar o entrelaçamento de memória, utiliza-se módulos de memória
– DIMM (Dual inline memory module) – 4 a 16 chips de memória
– Tipicamente largura de 8 bytes (64 bits)
– SDRAM : 168 pinos, DDR (184 pinos), DDR2 (240 pinos), DDR3 (240)
Paulo André Castro CES-25 IEC - ITA
– SDRAM : 168 pinos, DDR (184 pinos), DDR2 (240 pinos), DDR3 (240)
Dados de Módulos de DRAM
Standard name I/O Bus clock Data transfers per second Module name Peak transfer rate DDR-266 133 MHz 266 Million PC-2100 2100 MB/s DDR-300 150 MHz 300 Million PC-2400 2400 MB/s DDR-333 166 MHz 333 Million PC-2700 2700 MB/s DDR-400 200 MHz 400 Million PC-3200 3200 MB/s 266M/s*8B/tranfser=2128MB/s 300M/s*8B=2400MB/s
Paulo André Castro CES-25 IEC - ITA
DDR-400 200 MHz 400 Million PC-3200 3200 MB/s DDR2-533 266 MHz 533 Million PC-4300 4264 MB/s DDR2-667 333 MHz 667 Million PC-5300 5336 MB/s DDR2-800 400 MHz 800 Million PC-6400 6400 MB/s DDR3-1066 533 MHz 1066 Million PC-8500 8528 MB/s DDR3-1333 666 MHz 1333 Million PC-10700 10664 MB/s DDR3-1600 800 MHz 1600 Million PC-12800 12800 MB/s DD4- 3200 1600 MHz 3200 Million PC -25600 25600 MB/s
Memória Virtual
Memória Virtual
Perguntas
• Atualmente, memória principal é barata então
pode-se manter a memória física do mesmo
tamanho da memória virtual. Nessa situação,
porque utilizar sistema de memória virtual?
Paulo André Castro CES-25 IEC - ITA
– Simplicidade na Recolocação
O papel da Memória Virtual
• Generalidade
– Habilidade de executar programas maiores que a memória física
• Gerenciamento mais eficiente
– Alocação/Desalocação de blocos de tamanhos variáveis é onerosa e leva a fragmentação
• Proteção
– Regiões do espaço de endereço podem ser declaradas como: somente leitura, código executável,
• Flexibilidade
– partes de um programa podem ser colocadas em qualquer lugar na memória, sem relocação
Paulo André Castro CES-25 IEC - ITA
– partes de um programa podem ser colocadas em qualquer lugar na memória, sem relocação
• Eficência no Armazenamento
– Mantem na memória apenas as partes mais “importantes” do programa
• I/O Concorrente
– Executa outros processos, enquanto está carregando/descarregando uma página
• Expansiblilidade
– Possibilita deixar espaço no espaço virtual de endereços para que objetos/programas possam crescer
• Desempenho
Memória Virtual
• Endereços Virtuais V= {0,1,2,3,....n-1}
• Endereços Físicos P = {0,1,2,3,....m-1}. Onde m < n
• Para cada endereço a em V pode existir um endereço em P (a’), caso contrário falha de página(acesso ao disco)
• Dois endereços Virtuais podem apontar para o mesmo endereço físico
Memória Virtual e Cache
• A tradução de endereço virtual deve ser
feita antes ou depois da cache?
– Antes: Perda de desempenho por ter que
fazer um acesso adicional
Paulo André Castro CES-25 IEC - ITA
fazer um acesso adicional
– Depois: Cache trabalharia com endereços
virtuais e memória com endereços reais.
Problema?
Cache com Endereços Virtuais
• Dois endereços virtuais podem mapear o mesmo endereço físico! • Logo, duas entradas de cache podem conter os mesmos dados. • Perda de espaço útil na cache e Problema na Atualização
• Acontece quando dois programas (endereços virtuais distintos) compartilham
Paulo André Castro CES-25 IEC - ITA
• Acontece quando dois programas (endereços virtuais distintos) compartilham um mesmo objeto de dados. Freqüente?
Cache com Endereços Reais
• Problema de Desempenho!
– Colocar a Tabela de tradução em SRAM
• Qual o Tamanho da Tabela de Tradução?
– Endereço Virtual: 32 bits
Paulo André Castro CES-25 IEC - ITA
– Endereço Virtual: 32 bits – Endereço Real: 32 bits – Bloco: 4KB
– Memória virtual: 4GB
– Tamanho da Tabela de Páginas > 5 MB
Hierarquia de Memória com MV
O funcionamento da MV
Quatro perguntas sobre Funcionamento da
Memória Virtual (...Cache)
• P1: Onde um bloco pode ser inserido no
nível superior (posicionamento do bloco) ?
• P2: Como um bloco é encontrado se está
no nível superior da hierarquia ?
Paulo André Castro CES-25 IEC - ITA
no nível superior da hierarquia ?
• P3: Que bloco deve ser substituído ao
ocorrer uma falha (substituição do bloco) ?
• P4: O que acontece em uma gravação
Translation Look-aside Buffer (TLB)
Paulo André Castro CES-25 IEC - ITA
• TLBs são caches, tipicamente são completamente associativas para melhorar a taxa de sucesso
• Entre o disco e a memória principal, o esquema de atualização é sempre write-back!
• Associa-se ao sistema de memória Virtual, proteção de acesso (leitura, escrita, código, etc.)
Fragmentação e Realocação
Selecionando o Tamanho de Página
• Razões para páginas maiores
– O tamanho da Tabela de Páginas é inversamente proporcional ao tamanho da página, logo economiza-se memória.
– Transferir páginas maiores para ou do armazenamento secundário é eficiente
– Páginas maiores mapeiam mais memória logo tendem a reduzir as falhas no TLB
• Razões para páginas menores
– Não desperdiçar espaço, os dados devem ser contínuos dentro de
Paulo André Castro CES-25 IEC - ITA
– Não desperdiçar espaço, os dados devem ser contínuos dentro de uma página
– Processos pequenos tendem a ser mais rápidos?
• Soluções Híbridas: múltiplos tamanhos de páginas
– Alpha: 8KB, 64KB, 512 KB, 4 MB pages
Segmentação
• A segmentação, isto é, páginas de tamanho variável é usada por exemplo na arquitetura x86
• Os segmentos são alocados por cada programa e por terem tamanhos diferentes cada um deve ter campo identificando seu tamanho real.
• A unidade de transferência entre disco e memória física
Paulo André Castro CES-25 IEC - ITA
• A unidade de transferência entre disco e memória física (principal) é o segmento. Por isso, duas trocas podem ter tamanhos diferentes
Resumo
• Memória Virtual: introduzida inicialmente para
permitir a execução de programas que
precisavam de muita memória
• Hoje: MV é importante para proteção de
memória e permite que os programas usem
endereços falsos.
Paulo André Castro CES-25 IEC - ITA