Uploaded by claudio

AOC2 Slides

advertisement
“Técnicas de Otimização de Organizações de Memórias
Cache”
“10 Otimizações Avançadas de Perfomance de Cache” (HENNESSY; PATTERSON, 2011)
Pedro H. M. Araújo
Breno Melo Gabriel Antônio
Menezes Bruno Sinhoroto
João Antônio
26 de março de 2024
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
1 / 16
Índice I
Background
1a: Caches Pequenos e Simples =⇒ ↓ Hittime e ↓ Energia
3 2a: Predição de Direção =⇒ ↓ Hittime
4 3a: Caches em pipelines =⇒ ↑ Largura de Banda de cache
5 4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de cache
6 5a: Caches de bancos múltiplos (Multibanked) =⇒ ↑ Largura de
Banda de cache
7 6a: Palavra Critica e reinicialização antecipada
8 7a: Mesclando o Buffer de Gravação para Reduzir a penalidade por falta
9 8a: Otimizações de Compilador =⇒ ↓ Missrate
10 9a: Pré-busca Controlada pelo Compilador =⇒ ↓ Missrate or
↓ Misspenalty
11 10a: Estendendo a Hierarquia de Memória do Sistema com HBM =⇒
↓ Misspenalty or ↓ Hittime
12 Sumário das Técnicas de Otimização de Cache
13 Referências
1
2
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
2 / 16
Background
Métricas para Otimização de Cache
A fórmula da média de acesso à memória nos dá três métricas para
otimização de cache:
AMAT = Hittime + Missrate × Misspenalty
Contudo, dado recentes trends, pode ser consideradas mais duas métricas:
largura de banda e consumo de energia a essa lista.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
3 / 16
Background
Classificação das Técnicas em Categorias
Podemos dividir essas 10 técnicas de otimização de cache em cinco
categorias:
Redução do Hittime : utilizando pequeno e simples nı́vel de cache e
predição de direção — ambas em geral reduzem consumo de energia;
Aumento de largura de banda de cache: caches em pipelines,
caches em formato multibanked e caches não-bloqueantes — redução
de energia variável;
Redução de Misspenalty : palavra crı́tica primeiro e fusão de buffers
de escrita — ambas possuem pouco impacto no consumo de energia;
Redução de Missrate : otimizações de compilador — melhora
consumo;
Redução de Misspenalty ou Missrate por paralelismo: prefetching
(de hardware ou de software — compilador) — geralmente aumenta
consumo, devido à busca prematura de dados que não serão usados.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
3 / 16
1a: Caches Pequenos e Simples =⇒ ↓ Hittime e ↓ Energia
Considerações de Estrutura/Tendências do Cache L1
O ciclo de clock e limitações de energia resultam em limitações na
complexidade do primeiro nı́vel na hierarquia de cache (L1);
Analogamente, o uso de baixos nı́veis de associatividade podem
reduzir o Hittime e energia;
O caminho de tempo crı́tico no cache hit é formado por: comparar
index → comparar tag → multiplexador p/ escolher item
correto se cache for associativo;
Tendência de tamanho de cache L1 não aumentar (ou pouco) devido
a taxa de clock (+ associatividade ao invés de + cache);
Utilização de ferramentas (como CACTI) para extrair métricas (em
relação as variáveis de cache, como associatividade).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
4 / 16
1a: Caches Pequenos e Simples =⇒ ↓ Hittime e ↓ Energia
Esquemas de N-Way Cache e Caminho Crı́tico
Figura: 1,2,4,8-way cache associativo — caminho crı́tico para 2-way. (SNYDER,
2009).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
4 / 16
1a: Caches Pequenos e Simples =⇒ ↓ Hittime e ↓ Energia
Considerações de Consumo de Energia
Figura: Consumo de energia por leitura aumenta proporcionalmente ao
tamanho e associatividade: CACTI utilizado para modelagem da figura — a
alta penalidade o 8-way acontece devido à necessidade de ler 8 tags e o
correspondente dado em paralelo. (HENNESSY; PATTERSON, 2011).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
4 / 16
2a: Predição de Direção =⇒ ↓ Hittime
Considerações de Objetivos/Resultados
O cache mapeado diretamente (direct-mapped cache) fornece
excelente Hittime em relação ao cache associativo. A predição de
direção guarda bits extras no cache para predizer a direção (ou bloco
dentro do conjunto) do próximo acesso ao cache;
Depende do preditor : se preditor bom (correto), a latência de acesso
é o próprio Hittime — caso contrário, tenta o outro bloco, muda a
direção do dito preditor e tem latência de um ciclo de clock extra;
Simulações sugerem que o preditor de conjunto possui acurácia 90%
para 2-way e 80% para 4-way;
Primeira ver utilizado no MIPS R10000 em meados de 1990 —
atualmente popular em processadores com associatividade 2-way,
sendo utilizado no 4-way do ARM Cortex-A8 (de 2005).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
5 / 16
2a: Predição de Direção =⇒ ↓ Hittime
Considerações Sobre Energia
Uma forma estendida da predição de direção pode ser utilizada para
reduzir consumo de energia: utilizar bits de predição para decidir qual
bloco do cache deve-se acessar (chamado também de seleção de
direção);
Economiza energia em relação à predição correta apenas, sendo que
adiciona tempo extra de acesso em caso de predição errada;
Faz sentido somente em processador de baixo consumo de energia;
Contraponto: torna difı́cil para o pipeline acessar o cache.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
5 / 16
2a: Predição de Direção =⇒ ↓ Hittime
Fluxograma da Predição de Direção
Figura: Dado index, prediz próximo possı́vel set dentro de bank# (banco de sets
previamente acessados — hits). (CHU; PARK, 2014).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
5 / 16
3a: Caches em pipelines =⇒ ↑ Largura de Banda de
cache
Considerações de Objetivos/Resultados
Essa técnica de otimização consiste em adotar caches em pipelines
garantindo que a latência efetiva do primeiro nı́vel do cache hit possa
ser de múltiplos ciclos de clock.
A aplicação dessa técnica resulta então em ciclos de clocks rápidos e
em um aumento da largura de banda, porém com hits mais lentos.
Em resumo, essa técnica facilita a incorporação de altos nı́veis de
associatividade (capacidade de associar múltiplos blocos de dados a
uma entrada no cache) no cache, reduzindo a taxa de falhas de cache
e melhorando o desempenho do sistema em geral.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
6 / 16
3a: Caches em pipelines =⇒ ↑ Largura de Banda de
cache
Exemplo prático
Como exemplo, o pipeline para o acesso ao cache de instruções
(instruction cache access) Para processadores Intel Pentium em
meados da década de 90 tinham 1 ciclo de clock.
Já para processadores Oentium Pro até o Pentium III (meados da
década de 90 até os anos 2000) já tinham 2 ciclos de clock.
Por fim, para processadores Pentium 4 (disponı́vel desde 2000) e os
atuais processadores Intel Core i7 tem 4 ciclos de clock.
Esse aumento do número de ciclos de clock que podem ser
aproveitados é resultado pelo pipelined cache access.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
6 / 16
4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de
cache
Entendendo o que é cache não-bloqueante
No contexto de caches bloquantes, quando um miss ocorre, o
processador fica impedido de realizar outras operações até que os
dados solicitados sejam recuperados da memória principal e
carregados na cache, podendo resultar na subutilização dos recursos
do sistema e redução do desempenho geral.
Nonblocking Caches é o conceito de uma cache que permite que o
processador continue operando enquanto espera por dados ausentes.
Dessa forma, os caches não-bloqueante possibilitam que a cache de
dados continue fornecendo hits de cache durante um miss, reduzindo
a penalidade efetiva de misses.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
7 / 16
4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de
cache
Benefı́cios da utilização de caches não-bloqueantes
Considerando computadores com arquitetura pipelined que permitem
a execução fora de ordem (out-of-order execution, o processador não
precisa parar em casos de perda de cache de dados.
Nesse contexto, a utilização de caches não-bloquantes se mostra
relevante e benéfica, visto que permite que a cache de dados continue
fornecendo hits de cache durante um miss.
Essa otimização ”hit under miss” reduz a penalidade que uma miss
gera ao aproveitar do sistema durante uma miss ao invés de ignorar os
requests do processador.
É possı́vel melhorar ainda mais essa otimização ao sobrepor múltiplos
misses (combinar ”hit under miss” com ”miss under miss”), porém
isso só é possı́vel se o sistema de memória seja capaz de tratar
múltiplos misses.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
7 / 16
4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de
cache
Estudos de efetividade
(FARKAS; JOUPPI, 1994): analizaram caches de 8KB com miss
penalty de 14 ciclos; observaram que ao permitir o forneciento de um
hit durante o miss, houve uma redução significativa na penalidade
efetiva de miss para os benchmarks SPECINT92 e SPECFP92, com
reduções de 20% e 30%, respectivamente.
(LI et al., 2011): atualizaram o estudo anterior utilizando caches de
multinı́vel, assumindo miss penalties mais modernas e considerando
benchmarks maiores e mais exigentes; concluiram que, com as
melhorias na configuração do sistema de memória (caches maiores e a
adição de uma cache L3), os benefı́cios obtidos pela adoção de caches
não bloqueantes foram menores em comparação com o estudo
anterior (redução de latência de 9% para benchmarks SPECINT2006
e 12,5% para SPECFP2006, ambos com um hit).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
7 / 16
4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de
cache
Estudos de efetividade
Figura: Resultados comparativos do estudo de 2011 (HENNESSY; PATTERSON,
2011).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
7 / 16
4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de
cache
Desafios na avaliação de desempenho com caches não-bloqueantes
A principal dificuldade na avaliação do desempenho de empregar
caches não-bloqueantes é que um miss na cache não necessariamente
interrompe a operação do processador, o que torna complicado avaliar
o impacto de cada miss individualmente e calcular o tempo médio de
acesso à memória.
Além disso, a miss penalty efetiva é calculada pelo tempo em que o
processador fica parado, e não pela soma dos tempos de cada miss.
Temos então um contexto onde o benefı́cio das caches
não-bloqueantes depende de vários fatores, como a penalidade de
miss em casos de múltiplos misses, o padrão de acesso à memória e a
capacidade do processador de continuar a execução com misses
pendentes
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
7 / 16
4a: Caches não-bloqueantes =⇒ ↑ Largura de Banda de
cache
Desafios na avaliação de desempenho com caches não-bloqueantes
Decidir quantos misses pendentes o sistema pode suportar depende de
vários fatores como:
A localidade temporal e espacial no fluxo de misses, que determina se
um miss pode iniciar um novo acesso a uma cache de nı́vel inferior ou
à memória.
A largura de banda da memória ou cache respondente.
Permitir mais misses pendentes no nı́vel mais baixo da cache (onde o
tempo de miss é o mais longo) requer suportar pelo menos a mesma
quantidade de misses em um nı́vel superior, já que o miss deve iniciar
na cache de nı́vel mais alto.
A latência do sistema de memória.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
7 / 16
5a: Caches de bancos múltiplos (Multibanked) =⇒ ↑
Largura de Banda de cache
Panorama geral
Ao invés de tratar o cache como um bloco monolı́tico de armazenamento,
esta técnica busca dividi-lo em ”bancos”.
Figura: Multibanked Cache (HENNESSY; PATTERSON, 2011).
Bancos eram usados anteriormente para melhora na performance da
memória principal mas agora podem ser amplamente utilizados em outras
áreas.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
8 / 16
5a: Caches de bancos múltiplos (Multibanked) =⇒ ↑
Largura de Banda de cache
Benefı́cios de sua utilização
Esta técnica funciona bem quando aplicada em situações onde o
acesso à memória se estende através de múltiplos bancos, fazendo
com que o mapeamento de endereços através de bancos impacte
positivamente no desempenho do sistema de memória.
O mapeamento onde dividimos sequencialmente os endereços dos
blocos através de bancos é simples e funciona bem - interleaving
sequencial.
Esta técnica também ajuda na redução do consumo de energia.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
8 / 16
6a: Palavra Critica e reinicialização antecipada
Reduzindo a penalidade de falta no cache miss
O menor pedaço de informação que o processador pode ler está em
unidades de palavras.
Figura: Cache block (THEBEARD, 2021).
No caso de falta de cache, o processador precisa esperar até que um bloco
inteiro no cache seja substituı́do da memória principal
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
9 / 16
6a: Palavra Critica e reinicialização antecipada
Reinicio Antecipado
Nesta otimização, as palavras do bloco são buscadas na ordem
normal (sequencialmente). Porém, assim que chega a palavra
solicitada do bloco, ela é enviada ao processador. O processador
agora continua a execução. Esse mecanismo é chamado de
reinicialização antecipada porque o processador retoma a execução
antes que todo o bloco de cache seja carregado.
Na pior das hipóteses, a palavra solicitada pode ser a última palavra
buscada em um bloco de cache. Neste caso, o processador tem que
esperar até que todo o bloco seja carregado para acessar aquela
palavra especı́fica. Isso torna a otimização ineficiente.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
9 / 16
6a: Palavra Critica e reinicialização antecipada
Palavra Critica Primeiro
A palavra que o processador precisa é marcada como palavra crı́tica.
Essa palavra crı́tica ausente é primeiro buscada na memória e enviada
ao processador. O processador agora continua a execução. O restante
das palavras do bloco são então buscadas na ordem normal.
Considerando um bloco de cache de 64-byte e uma palavra de
tamanho 32-bits. teremos (64*8/32 = 16) palavras pro bloco. O que
levar 8 ciclos de clock para buscar a primeira palavra e 2 ciclos para
cada palavra subsequente.
Com a Otimização ”Palavra Critica Primeiro”leva 8 ciclos de para
buscar a primeira palavra critica, e (2*15 = 30) ciclos para buscar as
demais palavras. E o processador retoma a execução após 8 ciclos e é
substituı́do apos 38 ciclos.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
9 / 16
7a: Mesclando o Buffer de Gravação para Reduzir a
penalidade por falta
introdução
Um buffer de gravação atua como intermediário entre o cache e a
memória principal. Se o buffer de gravação tiver um slot vazio, os
dados e o endereço serão gravados nesse slot. Do ponto de vista do
processador, a gravação está completa. Esses slots são chamados de
Entradas de Buffer.
As leituras subsequentes podem ser atendidas pelo Write Buffer. Se o
buffer estiver cheio e não houver correspondência de endereço, o
cache (e o processador) deverão esperar até que o buffer tenha uma
entrada vazia.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
10 / 16
7a: Mesclando o Buffer de Gravação para Reduzir a
penalidade por falta
Preenchendo entrada de buffer
Figura: Buffer Entry (THEBEARD, 2021).
Cada entrada de buffer é preenchida com base nos dados a serem
gravados. É bem possı́vel que nem todos os slots em uma entrada de
buffer estejam ocupados.
Um slot é ocupado somente quando os dados precisam ser gravados.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
10 / 16
7a: Mesclando o Buffer de Gravação para Reduzir a
penalidade por falta
Endereços sequenciais
Considere o caso em que as entradas do buffer fazem referência a
endereços de memória sequenciais. Uma configuração possı́vel do Write
Buffer é mostrada abaixo.
Figura: Buffer(THEBEARD, 2021).
Os slots livres na primeira entrada do buffer não estão sendo utilizados de
forma eficiente. Todas as entradas do buffer estão ocupadas. O
processador agora precisa parar até que essas entradas sejam gravadas de
volta na memória principal.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
10 / 16
7a: Mesclando o Buffer de Gravação para Reduzir a
penalidade por falta
Gravar Mesclagem
Se o buffer já contiver outros blocos modificados, o endereço dos novos
dados poderá ser comparado com as entradas de buffer existentes. No
caso de correspondência, os novos dados são combinados com essa
entrada. Isso é chamado de mesclagem de gravação.
Figura: Buffer(THEBEARD, 2021).
Os mesmos dados agora ocupam apenas uma única entrada de buffer.
Todas as outras entradas do Buffer são gratuitas. Assim, esta otimização
reduz paradas devido ao buffer de gravação estar cheio. Isso, por sua vez,
reduz a Miss Penalty.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
10 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Motivações
A grande diferença que se estabeleceu entre performance de processadores
e a memória principal inspiraram desenvolvedores de compiladores a
analisar mais a fundo a hierarquia de memória e compreender se melhoras
no tempo de compilação podem significar melhoras em performance.
Esta técnica tem como foco redução de Missrate sem alterações a
nı́vel de hardware.
Usa estratégias para a otimização de softwares.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Loop Interchange
Alguns programas tem laços de repetição aninhados para acesso aos itens
de memória numa ordem não-sequencial. A intenção é inverter a ordem
em que o laço itera para garantir um acesso aos dados na memória na
ordem em que foram armazenados.
Reduz perdas de dados se aproveitando da localidade espacial.
Reordenar maximiza o uso de dados num bloco de cache antes que
este seja descartado.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Loop Interchange
Seja x um array bidimensional [5000,100] alocado de forma que x[i, j]
adjacente a x[i, j+1]:
Figura: O primeiro código se moveria pela memória com um espaçamento de 100
palavras, no segundo, o acesso a memória levaria em conta todas as palavras de
um bloco antes de seguir para o seguinte. Esta otimização melhora a performance
do cache sem alterar o número de instruções executadas. (HENNESSY;
PATTERSON, 2011).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Blocking
Precisamos, novamente, lidar com múltiplos arrays de dados, alguns deles
acessados por linhas e outros por colunas.
Armazenar linha por linha ou coluna por coluna não resolve o
problema pois, tanto linhas, quanto colunas, são usados em cada
iteração de laço.
Ao invés de operar em linhas ou colunas inteiras de um array, os algoritmos
na estratégia de blocking operam em submatrizes ou blocos de dados.
A intenção é maximizar o acesso aos dados armazenados na cache
antes que sejam substituı́dos.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Blocking
Exemplo da multiplicação de matrizes:
Os dois loops internos leem todos os itens de z, leem repetidamente
os mesmos elementos de uma linha de y e escrevem uma linha de N
elementos de x.
O número de perda por capacidade depende então de N, se a cache
consegue conter todas as 3 matrizes não há problema, mas esta
situação muda se não é possı́vel manter armazenados na cache todos
os dados.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Blocking
A estratégia é então realizar as operações em blocos garantindo que os
itens estão ainda armazenados na cache.
O código computa uma submatriz de tamanho B por B.
Os dois loops internos computam em passos de tamanho B os dados a
partir de cada matriz ao invés de iterar integralmente sobre cada uma.
B é definido como o fator de blocking.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
8a: Otimizações de Compilador =⇒ ↓ Missrate
Blocking
Acesso anterior aos itens das matrizes:
Figura: Acesso anterior aos itens das matrizes (disposição do processo em
matrizes sem blocking) acima; pós-estratégia (disposição do processo em
matrizes pós-blocking) abaixo (HENNESSY; PATTERSON, 2011).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
11 / 16
9a: Pré-busca Controlada pelo Compilador =⇒ ↓ Missrate
or ↓ Misspenalty
Definição
Técnica na qual o compilador insere instruções de prefetch para
solicitar dados antes que o processador precise deles. Há duas formas:
Prefetch de Registrador: Carrega o valor em um registrador;
Prefetch de Cache: Carrega os dados apenas no cache e não no
registrador.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
12 / 16
9a: Pré-busca Controlada pelo Compilador =⇒ ↓ Missrate
or ↓ Misspenalty
Tipos de Prefetching
Ambas as técnicas podem ser falı́veis ou não falı́veis, ou seja, o
endereço causa ou não uma exceção para falhas de endereço virtual e
violações de proteção.
Prefetch mais eficaz é semanticamente invisı́vel para um programa,
não alterando o conteúdo de registradores e memória, e não causando
falhas de memória virtual.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
12 / 16
9a: Pré-busca Controlada pelo Compilador =⇒ ↓ Missrate
or ↓ Misspenalty
Objetivo do Prefetching
Sobrepor a execução com o prefetching de dados, especialmente em
loops, que são alvos importantes para otimizações de prefetching;
Se a penalidade por falta na cache for pequena, o compilador
desenrola o loop uma ou duas vezes e programa os prefetches com a
execução;
Se a penalidade por falta for grande, usa o pipeline de software ou
desenrola várias vezes para prefetch os dados para uma iteração
futura.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
12 / 16
9a: Pré-busca Controlada pelo Compilador =⇒ ↓ Missrate
or ↓ Misspenalty
Cuidados a serem considerados
Emitir instruções de prefetch incorre em um overhead de instrução
(custo adicional para inserir essas instruções);
Compiladores devem garantir que tais overheads não excedam os
benefı́cios para garantir que a otimização seja realmente benéfica.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
12 / 16
9a: Pré-busca Controlada pelo Compilador =⇒ ↓ Missrate
or ↓ Misspenalty
Conclusão
Prefetching controlado pelo compilador pode ajudar a reduzir tanto o
Missrate quanto Misspenalty ;
Antecipa e busca dados na memória antes que sejam necessários,
reduzindo o Misspenalty , pois os dados já estarão disponı́veis na cache
quando forem necessários;
Ao evitar que certos acessos resultem em falhas de cache, o Missrate
também pode ser reduzido.
↓ AMAT = Hittime + ↓ Missrate × ↓ Misspenalty
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
12 / 16
10a: Estendendo a Hierarquia de Memória do Sistema com
HBM =⇒ ↓ Misspenalty or ↓ Hittime
Definição
Esta otimização envolve a utilização de High Bandwidth Memory
(HBM) para estender a hierarquia de memória do sistema.
O HBM oferece largura de banda significativamente maior e latência
reduzida em comparação com memórias tradicionais como DRAM.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
13 / 16
10a: Estendendo a Hierarquia de Memória do Sistema com
HBM =⇒ ↓ Misspenalty or ↓ Hittime
HMB x RAM
Design convencional de memória RAM DDR (Double Data
Rate): os chips de memória são colocados ao lado do processador em
uma placa de circuito impresso (PCB);
High Bandwidth Memory: empilha várias camadas de chips de
memória diretamente sobre o processador ou em um substrato
interposto.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
13 / 16
10a: Estendendo a Hierarquia de Memória do Sistema com
HBM =⇒ ↓ Misspenalty or ↓ Hittime
Esquema HBM
Figura: What is High Bandwidth Memory (HBM)? (TECHOVEDAS, 2024).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
13 / 16
10a: Estendendo a Hierarquia de Memória do Sistema com
HBM =⇒ ↓ Misspenalty or ↓ Hittime
Benefı́cios
Redução do Hittime : Acesso mais rápido aos dados armazenados no
HBM em comparação com a memória principal tradicional, resultando
em uma diminuição do tempo necessário para um acerto na memória.
Redução do Misspenalty : Se os dados necessários estão armazenados
no HBM e ocorre uma falha na cache, o tempo para recuperar esses
dados do HBM pode ser menor do que se estivessem em uma
memória DRAM tradicional.
↓ AMAT =↓ Hittime + Missrate × ↓ Misspenalty
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
13 / 16
10a: Estendendo a Hierarquia de Memória do Sistema com
HBM =⇒ ↓ Misspenalty or ↓ Hittime
Aplicabilidade
Esta otimização é particularmente relevante em sistemas onde a
largura de banda e o acesso rápido à memória são crı́ticos:
Aplicações de computação de alto desempenho, inteligência artificial,
aprendizado de máquina e processamento de grandes conjuntos de
dados.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
13 / 16
Sumário das Técnicas de Otimização de Cache
Figura: Impacto na performance de cache, consumo de energia e complexidade.
+ significa que técnica melhora fator, − que piora e vazio sem impacto. Medida
de complexidade subjetiva: 0, mais fácil e 3, sendo complicada. (HENNESSY;
PATTERSON, 2011).
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
14 / 16
Referências I
CHU, Yul; PARK, Jin. Dual-access way-prediction cache for embedded
systems. EURASIP Journal on Embedded Systems, v. 2014, p. 16,
mai. 2014. DOI: 10.1186/1687-3963-2014-16.
FARKAS, K.I.; JOUPPI, N.P. Complexity/performance tradeoffs with
non-blocking loads. In: PROCEEDINGS of 21 International Symposium on
Computer Architecture. [S.l.: s.n.], 1994. P. 211–222. DOI:
10.1109/ISCA.1994.288148.
HENNESSY, John L.; PATTERSON, David A. Computer Architecture,
Fifth Edition: A Quantitative Approach. 5th. San Francisco, CA, USA:
Morgan Kaufmann Publishers Inc., 2011. ISBN 012383872X.
LI, Sheng et al. Performance Impacts of Non-blocking Caches in
Out-of-order Processors. Ago. 2011.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
15 / 16
Referências II
SNYDER, Dr. Lawrence. Cache Wrap-up. 2009. Disponı́vel em:
¡https://courses.cs.washington.edu/courses/cse378/09au/
lectures/cse378au09-19.pdf¿. Acesso em: 18 mar. 2024.
TECHOVEDAS. What is High Bandwidth Memory (HBM)? 2024.
Disponı́vel em:
¡https://techovedas.com/what-is-high-bandwidth-memory-hbm/¿.
Acesso em: 30 mar. 2024.
THEBEARD. Cache Optimization – Critical Word First and Early
Restart. 2021. Disponı́vel em: ¡http://thebeardsage.com/cacheoptimization-critical-word-first-and-early-restart/¿. Acesso
em: 30 mar. 2024.
Araújo, Melo, Antônio, Menezes, Sinhoroto “Técnicas de Otimização de Organizações de Memórias
26Cache”
de março de 2024
16 / 16
Download