El nuevo análisis profundo revela los secretos de la arquitectura Zen 2 de AMD

Ha pasado un minuto desde que mencioné su trabajo, pero el arquitecto de software de CPU e investigador de funciones de bajo nivel, Agner Fog, aún publica actualizaciones periódicas de sus manuales de CPU comparando las diversas arquitecturas AMD e Intel. Una actualización reciente de él arroja luz sobre una característica del chip Zen 2 de AMD que no se había mencionado anteriormente.

Divulgación: he trabajado con Agner Fog en el pasado en la recopilación de datos para su proyecto en curso, aunque no durante varios años.

Agner ejecuta cada plataforma a través de una larga lista de puntos de referencia micro-dirigidos, con el fin de conocer los detalles de cómo operan. Las tablas de latencia de instrucciones publicadas oficialmente de AMD e Intel no siempre son precisas, y Agner ha encontrado errores no revelados en CPU x86 antes, incluidos problemas con la forma en que Piledriver ejecuta el código AVX2 y problemas en la tubería FPU del Atom original.



En su mayor parte, el detalles de bajo nivel resultará familiar para cualquiera que haya estudiado la evolución de las arquitecturas Zen y Zen 2. El rendimiento máximo de recuperación medido por subproceso sigue siendo de 16 bytes, aunque teóricamente la CPU puede admitir una recuperación alineada de hasta 32 bytes por ciclo de reloj. La CPU está limitada a una tasa de decodificación constante de 4 instrucciones por ciclo de reloj, pero puede explotar hasta seis instrucciones en un solo ciclo si la mitad de las instrucciones generan dos microoperaciones (uops) cada una. Esto no sucede muy a menudo.

El tamaño teórico de la caché uop es 4096 uops, pero el tamaño efectivo de un solo hilo, según Agner, es de aproximadamente 2500 uops. Con dos hilos, el tamaño efectivo es casi 2 veces mayor. Los bucles que caben en la caché se pueden ejecutar en 5 instrucciones / ciclo de reloj, con 6 posibles bajo ciertas circunstancias. Las pruebas de bajo nivel también confirmaron algunos avances específicos de Zen a Zen 2: Zen puede realizar dos lecturas o una lectura y una escritura en el mismo ciclo, mientras que Zen 2 puede realizar dos lecturas y una escritura, por ejemplo. El siguiente gráfico muestra cómo se manejan las instrucciones de punto flotante en diferentes conductos de ejecución según la tarea:

Una diferencia previamente no revelada que AMD introdujo con Zen 2 es la capacidad de reflejar operandos de memoria. En algunos casos, esto puede reducir significativamente el número de ciclos de reloj para realizar operaciones, de 15 a 2. Existen múltiples condiciones previas para que la duplicación se realice correctamente: Las instrucciones deben usar registros de propósito general, los operandos de memoria deben tener la misma dirección, el tamaño del operando debe ser de 32 o 64 bits, y puede realizar una lectura de 32 bits después de una escritura de 64 bits en la misma dirección, 'pero no al revés'. Una lista completa de las condiciones requeridas está en la página 221, y la discusión continúa en la página 222.

Dado que la función no está documentada, no está claro si alguien la ha utilizado para algo práctico en el código de envío. Agner señala que es más útil en el modo de 32 bits, 'donde los parámetros de función normalmente se transfieren a la pila'. Agner señala que la CPU también puede sufrir un impacto en el rendimiento si la CPU hace ciertas suposiciones incorrectas. Esto puede explicar por qué la capacidad no está documentada: es posible que AMD no haya querido alentar a los desarrolladores a adoptar una función si es probable que cause problemas de rendimiento si se usa incorrectamente. Esto último, para ser claro, es una suposición de mi parte.

De Zen en su conjunto, Fog escribe: 'La conclusión para la microarquitectura Zen es que este es un diseño bastante eficiente con grandes cachés, un gran caché µop y grandes unidades de ejecución con un alto rendimiento y bajas latencias'. Recomiendo este manual y sus otros recursos sobre programación x86 si está interesado en el tema; puede aprender mucho sobre las sutilezas de cómo funcionan las CPU x86 de esta manera, incluidos los casos de esquina en los que lo que dice el manual de instrucciones debería suceder y lo que realmente sucede terminan siendo dos cosas diferentes.

Copyright © Todos Los Derechos Reservados | 2007es.com