1 puntos por GN⁺ 2024-07-28 | 1 comentarios | Compartir por WhatsApp

La unidad de predicción de saltos 2-Ahead de Zen 5: cómo una idea de hace 30 años permite nuevos trucos

  • Introducción

    • La arquitectura Zen 5 de AMD es un rediseño completo de la arquitectura Zen previa
    • Uno de los cambios más importantes es la nueva unidad de predicción de saltos 2-Ahead
    • Esta idea se origina en un artículo académico de hace 30 años
  • La importancia del predictor de saltos

    • Las computadoras almacenan los programas en memoria y luego los ejecutan
    • Los procesadores se dividen en una parte frontal que obtiene instrucciones y una parte trasera que las ejecuta
    • Los saltos condicionales representan un gran desafío para mantener lleno el pipeline
    • Una predicción incorrecta obliga a vaciar el pipeline y volver a empezar
    • Por eso, el procesador debe predecir la secuencia de instrucciones del programa con la mayor precisión posible
  • La llegada del predictor de saltos 2-Ahead

    • Es una idea propuesta desde principios de la década de 1990
    • Se desarrollaron métodos más eficientes, como el predictor TAGE
    • Sin embargo, el predictor de saltos 2-Ahead vuelve a llamar la atención para mejorar el rendimiento por núcleo
  • Las ventajas de la arquitectura x86

    • x86 obtiene mayores beneficios de la predicción de saltos 2-Ahead que otras ISA con instrucciones de longitud fija
    • x86 requiere un procesamiento más complejo para determinar los límites de las instrucciones
    • Zen 5 usa dos pipelines de fetch de 32 bytes y un clúster de decodificación de 4 vías
  • La implementación del paper de Seznec

    • El paper de Seznec explica cómo implementar un predictor de saltos 2-Ahead
    • Zen 5 sigue las recomendaciones de ese paper
    • Usa dos pipelines de fetch de 32 bytes y una op cache dual-port de 6 vías
    • Usa L1 BTB y L2 BTB para mejorar la precisión de las predicciones
  • Conclusión

    • El predictor de saltos 2-Ahead de Zen 5 es un cambio importante dentro de la arquitectura Zen
    • Este nuevo predictor será de gran ayuda para el desarrollo futuro de los núcleos Zen

Resumen de GN⁺

  • El predictor de saltos 2-Ahead de Zen 5 es una reinterpretación moderna de una idea de hace 30 años
  • Esta tecnología mejora el rendimiento al aumentar la precisión de predicción de instrucciones del procesador
  • Es especialmente útil para resolver la complejidad de la arquitectura x86
  • Este artículo resulta útil para quienes se interesan por la arquitectura de CPU y la optimización del rendimiento
  • Un proyecto similar con funciones parecidas es la arquitectura Golden Cove de Intel

1 comentarios

 
GN⁺ 2024-07-28
Comentarios de Hacker News
  • Hay una excelente explicación sobre branch prediction
  • El rendimiento de SMT parece interesante; Zen5c ofrece 192 cores o 384 vCPU. En Zen 6c se podrían esperar 256 cores. Podría haber 512 cores y 1024 vCPU en un servidor 1U de doble socket
    • Se podrían resolver los problemas de escalado de aplicaciones web de 2014 con un solo servidor, siempre que se resuelva el problema de refrigeración
    • 1000 RPS son posibles con 1 RPS por vCPU, excluyendo cache hits
    • Ni siquiera la portada de HN supera las 1000 page views por segundo
  • Es interesante cuando un artículo de hace décadas se vuelve "de vanguardia" gracias a los avances del hardware
    • Ejemplo: Z-buffer, usado en videojuegos 3D
    • No era el tema principal cuando se presentó en el artículo original, porque requería mucha memoria
    • Unas décadas después, cuando los megabytes se abarataron, todos los renderizadores 3D en tiempo real empezaron a usarlo
  • Los predictores especulativos son vulnerables a varios ataques que filtran datos personales. Muchas ISA comunes son vulnerables; me pregunto si se están tomando medidas para mitigar el impacto de estos ataques
  • Como principiante en este campo, no me queda claro qué es un predictor de saltos 2-ahead
  • Parece que hacen falta más branch hints
    • ¿Cold, warm, warmer, omitiendo hot por defecto? Me pregunto si sería mala idea marcar todas las ramas como cold excepto una
    • Cuando hay un salto condicional, me pregunto por qué es difícil traer y preparar ambas ramas posibles y descartar la incorrecta
  • Hace falta más ancho de banda de memoria; los dos canales de memoria del socket AM5 para consumidores se quedan cortos frente al rendimiento
    • Me pasé a un M2 Max y la mejora en ancho de banda de memoria aceleró el trabajo con datos. Incluso con multitarea pesada, el estrecho pipeline de memoria de la configuración Zen se satura con frecuencia
  • En Zen 5, el clúster de decodificación y el fetch pipeline asociado se dividen estáticamente cuando hay dos hilos activos
    • Parece que esto podría dar una gran mejora al rendimiento de hyper-threading. En Zen1, HT daba alrededor de un 25% de mejora. Me pregunto si alguien lo ha probado en modelos recientes
  • Todavía no entiendo qué es un predictor de saltos 2-ahead