“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