memória para cadaleardo/cursos/hpc/memoria2020.… · memória ram 220ns. outro exemplo (muito...

92
Memória para CAD Aleardo Manacero Jr.

Upload: others

Post on 21-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Memória para CAD

Aleardo Manacero Jr.

Page 2: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Introdução

Na aula de hoje examinaremos como o subsistema de memória afeta o desempenho de um sistema computacional

Veremos um pouco da sua arquitetura e de seu gerenciamento

Terminaremos com uma análise sobre seu planejamento

Page 3: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

A falta de desempenho

A velocidade de memória dobra a cada seis ou sete anos

A velocidade do processador dobra a cada 18 meses

Isso exige melhor gerenciamento de memória

XT (1980) PII (1999) I5 (2012) Ryzen 3990X (2020)

Processador 210ns 3ns 0,3ns (0,01ns) 0,014ns/core

Memória 200ns 50ns 6ns 1,6ns (DDR4)

Page 4: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

A falta de desempenho

Page 5: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Pior ainda para secundária

Page 6: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Pior ainda para secundária

Page 7: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Tecnologias de construção

Dinâmica DRAMmemórias capacitivas, necessitando refresh. Atinge velocidades de 35,5 GB/s, com barramentos de 2GHz, para DDR4-4000

Estática SRAMusam portas lógicas, dispensando refresh. A banda de passagem passa de 200 GB/s (L1) e 60 GB/s (L2)

Page 8: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Tempos efetivos de acesso

Infelizmente o tempo de um acesso em memórias é uma medida de desempenho irreal

Tempo de ciclo é mais verdadeiro, ao indicar qual a frequência permitida de acessos à memória (para DRAMs isso fica em torno de duas vezes o tempo de um acesso)

Page 9: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Como obter desempenho?

Usar apenas componentes rápidosUma máquina apenas com memórias estáticas seria muito mais rápida. O problema é seu custo.

Antecipar o acesso em componentes lentos

Assim teríamos os dados já na CPU quando fossem necessários (prefetching).

Page 10: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Como obter desempenho?

Transferir um maior volume de dados a cada acesso

Assim mais dados passariam para CPU a cada ciclo de acesso

Usar tanto componentes rápidos quanto lentosEsse é exatamente o conceito que justifica a memória cache e torna as técnicas anteriores eficientes

Page 11: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Hierarquia de memória

O sistema de memória é normalmente dividido em vários níveis:

registradores internos da CPU

um ou mais níveis de cache (SRAM)

memória principal (DRAM)

memória secundária (SSD, discos magnéticos)

biblioteca (fitas, CD-ROMs, DVDs, pendrives, etc.)

Page 12: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Hierarquia de memória

Page 13: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Hierarquia de memória

Um exemplo: DEC 21164 Alpha

SRAM

DRAM

Nível Tempo de acesso

Registradores 2ns

Cache L1 4ns

Cache L2 5ns

Cache L3 30ns

Memória RAM 220ns

Page 14: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Outro exemplo (muito antigo!!)

(Hwang,1993)

Page 15: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Outro exemplo (mais novo...)

(Shen,Lipasti,2005/13)

Page 16: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Operação do sistema de memória

Ocorre de forma diferente para cada nível hierárquico

Para a memória principal o gerenciamento é dividido entre tradução de endereços lógicos e físicos e a alocação de espaços na memória

Page 17: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Endereçamento

A função de endereçamento diz respeito ao modo em que os endereços lógicos (existentes no código armazenado em disco) são transformados em endereços físicos (endereços na memória de fato)

Page 18: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Endereçamento absoluto

Endereços lógicos são idênticos aos endereços físicos

Page 19: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Relocação estática

Endereços são convertidos durante o carregamento do programa

Page 20: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Relocação dinâmica

Endereços são convertidos apenas durante a execução do programa

Page 21: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Segmentação

Faz relocação dinâmica separando segmentos estruturais dos programas

É o mecanismo usado em computadores de uso geral, incluindo os de alto desempenho, faz muito tempo...

Page 22: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Alocação de espaços

A alocação de espaços é a operação de atribuir regiões da memória para cada segmento que deva ser carregado

Das técnicas de alocação a serem examinadas, a de espaços contíguos tem aplicação restrita atualmente e a de alocação em blocos é a efetivamente usada nos sistemas de uso geral

Page 23: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Alocação de espaços

Espaços contíguostodos os bytes do segmento são armazenados sequencialmente

Em blocosos bytes dos segmentos são armazenados em páginas de tamanho fixo, não sequenciais

Memória virtualuso da memória secundária

Page 24: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Alocação em espaços contíguos

Todos os bytes do segmento são armazenados sequencialmente

Problemas com mapeamento dos espaços vazios

Necessidade de constantes recompactações para corrigir o problema de fragmentação externa (existência de espaço disponível em posições não sequenciais)

Soluções como uso de espaços de tamanho fixo, sistemas Buddy e outras não corrigem esses problemas, criando ainda a fragmentação interna

Page 25: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Alocação em espaços contíguos

Disso resulta que:

Apresenta problemas relacionados ao uso da memória (grande desperdício por fragmentação externa)

Usada apenas para sistemas dedicados

Page 26: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Alocação em blocos

Os bytes dos segmentos são armazenados em páginas de tamanho fixo, não necessariamente sequenciais

Elimina a fragmentação externa, porém mantém a fragmentação interna

Volume do desperdício com fragmentação interna depende do tamanho do bloco (ou página)

Esse tamanho é determinado pelo compromisso entre complexidade de gerenciamento e redução na fragmentação

Page 27: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Memória em blocos

Page 28: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Memória em blocos

Page 29: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Memória virtual

Elimina o limite de tamanho da memória para a execução de programas

Trabalha com o conceito de paginação por demanda (blocos ou páginas vão para a RAM apenas se requisitadas)

Usa algoritmos de retirada de páginas a partir do Princípio da Localidade

Page 30: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Princípio da Localidade

Diz que existem endereços mais prováveis de serem acessados do que outros.

Na prática, se um processo executa uma instrução da página X, com dados da página Y, então a próxima instrução a ser executada provavelmente também estará na página X e acessará dados da Y

Page 31: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Localidade (visão gráfica)

Page 32: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Movimentação entre níveis de memória

Page 33: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Algoritmos de paginação

A eficiência da MV depende do algoritmo de retirada de páginas

Exemplos de algoritmos:FIFO (anomalia de Belady)

LRU

opt

Segunda chance

Page 34: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Algoritmos de paginação

Alguns parâmetros importantes na análise são:

Sequência de referência

Conjunto residente

Tamanho do conjunto residente

Taxa de faltas de páginas

Page 35: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

FIFO

Retira a página que entrou primeiro na memória

Funcionamento e implementação simples

Pode apresentar piora de desempenho ao aumentar-se o tamanho do conjunto residente (anomalia de Belady)

Page 36: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Anomalia de Belady

Page 37: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Anomalia de Belady

Page 38: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Anomalia de Belady

Page 39: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

LRU (Least Recently Used)

Corrige o problema da anomalia de Belady através do conceito de pilha

Retira sempre a página que está no topo da pilha, que é a página usada há mais tempo

Assim, o aumento no tamanho do conjunto residente implica apenas no aumento do tamanho da pilha

Page 40: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

OPT (optimal)

Também trabalha com o conceito de pilha, retirando a página que está no seu topo

Aqui, porém, a página que fica no topo é aquela que demorará mais para ser necessária

Tem uso apenas teórico, como referencial para comparação de algoritmos

Page 41: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Bits de controle de uso

IN-OUT BIT: bloco está na memória (1) ou no disco (0)

USAGE BIT: bloco usado recentemente (1)

DIRTY BIT: (1) se bloco foi alterado na memória

Page 42: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Segunda Chance

É uma implementação prática (simplificada) do conceito de pilha

Baseia-se numa fila circular de páginas, sendo que a página que sairá da memória deve ser uma que tenha pouco uso e não tenha sido alterada (preferencialmente)

Page 43: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Comparação de algoritmos

Page 44: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Implicações de desempenho

Taxa de faltas de página

Nível de multiprogramação

Thrashing

Coerência de cache

Page 45: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Taxa de faltas de página

O uso de memória virtual implica em maior tempo de processamento na ocorrência de faltas de página

Assim, quanto maior essa taxa, pior será o desempenho do sistema

Page 46: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Nível de multiprogramação

Compartilhamento da memória entre muitos segmentos diminui o tamanho do conjunto residente de cada processo

Isso implica em menos páginas fazendo parte do conjunto residente do processo

Page 47: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Thrashing

A diminuição do conjunto residente implica numa maior taxa de faltas de páginas

Dependendo do nível de multiprogramação, o volume de faltas de páginas pode levar o sistema ao fenômeno de thrashing

Num sistema em thrashing o desempenho cai severamente para um pequeno aumento no nível de multiprogramação

Page 48: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Coerência de cache

Múltiplas cópias devem permanecer idênticas

Técnicas para manutenção de coerência:

write-through – escreve a alteração na memória imediatamente

write-back – escreve na memória quando a linha sair do cache

Page 49: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Compartilhamento de dados

Em sistemas com vários processadores surge o problema de como compartilhar seus espaços de endereços virtuais

Duas estruturas podem ser usadas:

MV globalmente compartilhada

MV privativas em cada processador

Page 50: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

MV privativas

Page 51: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

MV global

Page 52: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Hardware para endereçamento

Uso de TLB (Translation Lookahead Buffer) ou MMU (Memory Management Unit)

Faz a conversão de endereços virtuais (vindos da relocação dinâmica) em endereços físicos (com a localização real na memória)

Page 53: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Esquema geral de TLB’s

Page 54: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mecanismos do i486

Page 55: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mecanismos do i486

Operação da TLB

Page 56: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mecanismos do i486

Esquema de paginação

Page 57: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Esquema geral da TLB

Page 58: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Memória cache

Organizada em linhas (ou blocos) de alguns bytes (32 por exemplo) para facilitar seu gerenciamento

O mapeamento entre linhas de cache e páginas da memória pode ser feito de três modos:

Direto,

Totalmente associativo,

Associativo por conjuntos

Page 59: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Organização da cache

Page 60: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mapeamento direto

Blocos 0, nK, 2nK, ... da memória vão para bloco 0 da cache

Page 61: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mapeamento direto

Page 62: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mapeamento totalmente associativo

Qualquer bloco da memória pode ir para qualquer bloco da cache

Page 63: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Mapeamento totalmente associativo

Page 64: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Implementação de caches

Os sistemas atuais normalmente usam memórias caches separadas em segmentos de dados e de instruções

Entretanto alguns sistemas ainda preferem adotar uma cache única para dados e instruções para caches L2 e L3.

Page 65: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Implementação de caches

Do ponto de vista de acesso podemos ter:

Endereço físico

Não precisa de informações adicionais

Cálculo pela TLB atrasa processamento

Endereço virtual

Não usa TLB

Aliasing para compartilhamento de endereços

Page 66: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Exemplo de implementação

Modelo de endereço virtual (split cache)

Page 67: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Exemplo de implementação

Modelo de endereço virtual (cache única)

Page 68: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Exemplo de implementação

Modelo de endereço físico (split cache)

Setas D e I estão trocadas na CPU

Page 69: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Exemplo de implementação

Modelo de endereço físico (cache única)

Page 70: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Ineficiências em caches

Falhas em prefetching por erros no princípio da localidade, originados por:

Uso de ponteiros em listas

Acesso de matrizes em forma diferente da usada em seu armazenamento (fortran faz o armazenamento por colunas, por exemplo)

Armazenamento não sequencial

Page 71: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Coerência em caches

Problema já examinado, que ocorre pois todas cópias em cache devem permanecer idênticas

Técnicas para manutenção de coerência são write-through e write-back

Page 72: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

As ideias colocadas no início da aula eram:

Usar apenas SRAM

Antecipar carregamento

Trazer mais dados por vez

Usar tanto SRAM como DRAM

Delas temos as seguintes soluções

Page 73: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Caches maiores:

Essa melhoria é óbvia

Caches maiores permitem mais dados armazenados em SRAM, que tem acesso mais rápido

Processadores modernos com até L3 no chip, indo a 64Mbytes de L3 e 16Mbytes de L2

Page 74: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Barramentos mais largos

A largura do barramento entre RAM e cache determina quanto é possível transferir de dados em cada acesso a RAM

Barramentos mais largos permitem transferir mais dados por vez, acelerando o processo de trazer dados da RAM para a cache

Page 75: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Page 76: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Page 77: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Bypass de cache

Em determinadas situações é preferível transferir dados diretamente entre RAM e cpu, sem o uso da cache

Nesses casos se faz um bypass da cache, levando, porém, os mesmos dados para a cache.

Page 78: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Page 79: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Melhorando o desempenho

Antecipação de cache

Princípio da localidade permite prever próximas linhas de memória necessárias

Isso, obviamente, deve ser feito com cautela para reduzir a movimentação entre cache e RAM

Page 80: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Planejando a capacidade de memória

Objetivos:

determinar tempos efetivos de acesso

determinar tamanhos de cada nível

determinar custos do subsistema de memória

Page 81: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Informações necessárias:

Taxa de acerto em cache (hit ratio)

Frequência de acesso

Tempo efetivo de acesso

Custo por unidade

Tamanho da memória

Planejando a capacidade de memória

Page 82: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Frequência de acesso:

f i=( 1−h 1 ) . ( 1−h 2 ) . . . . ( 1−h i− 1 ) . h i

T eff=∑ f i. t i=h1 .t 1+(1−h1 ).h2 . t 2+.. .+(1−h1 )(1−h2 ) .. ..(1−hn−1 ). tn

Planejando a capacidade de memória

Tempo efetivo de acesso:

Page 83: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Custo:C total=∑

i=1

n

C i∗S i

Planejando a capacidade de memória

Como C1 > C2 > ... > Cn , temos que fazer s1 < S2 < ... < Sn

Isso leva a um problema de PL

Page 84: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Combinando essas equações temos:Min Teff = fi . ti

s.a

Ctotal = Ci . Si < C0

si > 0, ti > 0 para i = 1,2,...,n

Planejando a capacidade de memória

Page 85: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Exemplo:

Planejando a capacidade de memória

Nível Tacesso

Capacidade Custo/Kbyte

cache 25ns 512k 1.25

DRAM T2 ? 32M 0.20

disco 4ms S3 ? 0.0002

Page 86: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Supondo taxas de acerto em:

h1 = 0.98

h2 = 0.90

Supondo ainda

custo < 15000

Teff 10.04

Planejando a capacidade de memória

Page 87: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Tamanho do disco:

S3 39.8 Gbytes

Tempo efetivo de acesso:

t2 903 ns

Planejando a capacidade de memória

Page 88: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Exemplo:

Planejando a capacidade de memória

Nível Tacesso

Hit Ratio

Cache de dados 5ns h1 ?

PAM e SAM 5ns 90%

Memória principal 40ns 100%

Page 89: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Determinar valor de hit ratio na cache de dados para se atingir 30ns de tempo efetivo de acesso

Usa-se a equação de Teff

, dada por:

Planejando a capacidade de memória

Page 90: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Planejando a capacidade de memória

Page 91: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

O acesso a memória é um ponto crítico para se obter desempenho

É ainda mais crítico para sistemas com milhares de processadores acessando elementos de memória distribuídos

Esse último aspecto nos remete aos sistemas de interconexão, que serão examinados brevemente

Conclusões

Page 92: Memória para CADaleardo/cursos/hpc/memoria2020.… · Memória RAM 220ns. Outro exemplo (muito antigo!!) (Hwang,1993) Outro exemplo (mais novo...) (Shen,Lipasti,2005/13) Operação

Memória para HPC