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?
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 sist64b
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 astnp
, y es una instrucción de combinación de escritura. Basado en esta comprensión,movdir64b
parece ser como cuatro instruccionesstnp
combinadas en un almacenamiento atómico único, lo que aumenta su eficiencia. Por lo tanto, es razonable suponer quest64b
también se podría utilizar como una secuencia atómica de cuatro instruccionesstnp
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 instruccionesstnp
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.