es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Temporaneidad de ST64B y MOVDIR64B

x86_64 tiene una instrucción movdir64b, que según mi entendimiento es una copia no temporal (al menos en la escritura) de 64 bytes (una línea de caché). AArch64 parece tener una instrucción similar llamada st64b, que realiza una escritura atómica del mismo tamaño. Sin embargo, la documentación oficial de ARMv9 no aclara si st64b, también es una escritura no temporal.

La referencia de conjunto de instrucciones de Intel aquí para movdir64b es mucho más detallada, pero no he avanzado lo suficiente en mis estudios como para entender completamente qué representa cada protocolo de tipo de memoria.

Hasta donde puedo deducir hasta ahora, la instrucción movntdq en x86_64 es aproximadamente equivalente a stnp y usa la técnica de write-combining. A partir de eso, parece que movdir64b es como cuatro de esas instrucciones en una escritura atómica, de ahí mi suposición sobre st64b.

Esto casi con certeza es una simplificación excesiva de lo que realmente está sucediendo (y podría ser incorrecta/inexacta, por supuesto), pero es lo que he podido deducir hasta ahora.

¿Podría st64b ser utilizado como si fuera una secuencia atómica de cuatro instrucciones stnp para realizar una escritura no temporal de una línea de caché de esta manera?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en ensamblaje, x86-64, arquitectura de CPU, arm64 y microarquitectura, puedo decir que la instrucción x86_64 movdir64b es, efectivamente, una copia no temporal, donde el almacenamiento no está destinado a la caché, de 64 bytes, que equivale a una línea de caché. Sin embargo, la documentación oficial de ARMv9 no especifica claramente si st64b también es un almacenamiento no temporal.

    La documentación de referencia del conjunto de instrucciones de Intel para movdir64b es mucho más detallada, pero se requiere una comprensión clara de cada protocolo de tipo de memoria para comprenderlo completamente.

    Según mi conocimiento, movntdq en x86_64 es aproximadamente equivalente a stnp, y es una instrucción de combinación de escritura. Basado en esta comprensión, movdir64b parece ser como cuatro instrucciones stnp combinadas en un almacenamiento atómico único, lo que aumenta su eficiencia. Por lo tanto, es razonable suponer que st64b también se podría utilizar como una secuencia atómica de cuatro instrucciones stnp para realizar una escritura no temporal de una línea de caché.

    Sin embargo, es esencial tener en cuenta que el uso de st64b como una secuencia atómica de instrucciones stnp dependería de la arquitectura específica y los requisitos de codificación del sistema utilizado. Sería necesario comprender a fondo estos factores para determinar si este enfoque es adecuado para una aplicación específica.

Comments are closed.