1 pontos por GN⁺ 2024-07-28 | 1 comentários | Compartilhar no WhatsApp

Unidade de predição de desvios 2-Ahead do Zen 5: como uma ideia de 30 anos possibilita novos truques

  • Introdução

    • A arquitetura Zen 5 da AMD foi completamente redesenhada em relação às arquiteturas Zen anteriores
    • Uma das mudanças mais importantes é a nova unidade de predição de desvios 2-Ahead
    • Essa ideia se originou em um artigo de 30 anos atrás
  • A importância do branch predictor

    • O computador armazena programas na memória e os executa
    • O processador é dividido em front-end e back-end, que buscam e executam instruções
    • Saltos condicionais são um grande desafio para manter o pipeline cheio
    • Uma previsão incorreta exige limpar o pipeline e reiniciá-lo
    • Portanto, o processador precisa prever a sequência de instruções do programa com a maior precisão possível
  • O surgimento do preditor de desvios 2-Ahead

    • É uma ideia proposta desde o início da década de 1990
    • Métodos mais eficientes, como o preditor TAGE, foram desenvolvidos
    • Porém, para melhorar o desempenho por núcleo, o preditor de desvios 2-Ahead voltou a ganhar atenção
  • Vantagens da arquitetura x86

    • O x86 obtém mais benefícios com a predição de desvios 2-Ahead do que outras ISAs com instruções de tamanho fixo
    • O x86 exige processamento mais complexo para determinar os limites das instruções
    • O Zen 5 usa dois pipelines de busca de 32 bytes e um cluster de decodificação 4-wide
  • Implementação do artigo de Seznec

    • O artigo de Seznec explica como implementar um preditor de desvios 2-Ahead
    • O Zen 5 segue as recomendações desse artigo
    • Usa dois pipelines de busca de 32 bytes e um op cache dual-port 6-wide
    • Utiliza L1 BTB e L2 BTB para aumentar a precisão das previsões
  • Conclusão

    • O preditor de desvios 2-Ahead do Zen 5 é uma mudança importante na arquitetura Zen
    • Esse novo preditor deve ajudar bastante no desenvolvimento dos futuros núcleos Zen

Resumo do GN⁺

  • O preditor de desvios 2-Ahead do Zen 5 é uma releitura moderna de uma ideia de 30 anos atrás
  • Essa tecnologia melhora o desempenho ao aumentar a precisão da predição de instruções do processador
  • Ela é especialmente útil para lidar com a complexidade da arquitetura x86
  • Este artigo é útil para quem se interessa por arquitetura de CPU e otimização de desempenho
  • Um outro projeto com funcionalidade semelhante é a arquitetura Golden Cove da Intel

1 comentários

 
GN⁺ 2024-07-28
Comentário do Hacker News
  • há uma excelente explicação sobre branch prediction
  • o desempenho de SMT parece interessante; o Zen5c oferece 192 cores ou 384 vCPUs. No Zen 6c, pode-se esperar 256 cores. Em um servidor 1U dual-socket, pode haver a possibilidade de 512 cores e 1024 vCPUs
    • seria possível resolver em um único servidor os problemas de escalabilidade de apps web de 2014, desde que o problema de refrigeração seja resolvido
    • com 1 RPS por vCPU, seria possível chegar a 1000 RPS, excluindo cache hits
    • até a página inicial do HN não passa de 1000 page views por segundo
  • é interessante quando um artigo acadêmico de décadas atrás se torna "estado da arte" graças aos avanços de hardware
    • exemplo: Z-buffer, usado em videogames 3D
    • quando foi apresentado no artigo original, não era o tema principal, porque exigia muita memória
    • algumas décadas depois, quando megabytes ficaram baratos, todos os renderizadores 3D em tempo real passaram a usá-lo
  • preditores especulativos são vulneráveis a vários ataques que vazam dados pessoais. Muitas ISAs comuns são vulneráveis, então fico curioso se estão tomando medidas para mitigar o impacto desses ataques
  • como iniciante nessa área, ainda não está claro para mim o que é um 2-ahead branch predictor
  • parece que são necessários mais branch hints
    • cold, warm, warmer, omitindo hot como padrão? Fico pensando se seria uma má ideia definir todos os branches como cold, exceto um
    • quando há um branch condicional, fico pensando por que é tão difícil buscar e preparar os dois caminhos possíveis e descartar o errado
  • é necessária mais largura de banda de memória; os dois canais de memória do soquete AM5 para consumidor ficam aquém em relação ao desempenho
    • migrei para um M2 Max, e a melhora na largura de banda de memória acelerou o trabalho com dados. Mesmo com multitarefa pesada, o pipeline estreito de memória da configuração Zen frequentemente satura
  • no Zen 5, quando duas threads estão ativas, o cluster de decode e o fetch pipeline associado são divididos estaticamente
    • isso parece que pode trazer uma grande melhora no desempenho de hyper-threading. No Zen1, o HT trouxe cerca de 25% de ganho. Fico curioso se alguém testou isso nos modelos mais recentes
  • ainda não entendi o que é um 2-ahead branch predictor