MOVNTI
Espada doble de la tienda usando Hint no temporal
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
NP 0F C3 /r | MOVNTI m32, r32 | MR | Valido | Valido | Mover la palabra doble de r32 a m32 usando la indirecta no temporal. |
NP REX.W + 0F C3 /r | MOVNTI m64, r64 | MR | Valido | No codificable | Mover el cuádruplo de r64 a m64 usando la indirecta no temporal. |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
MR
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pidemodrm.reglecturabyte ModRM, campo reg (bits 5-3)
Coste medido
Cargando las mediciones de arch-data...
Descripción
Mueva el entero de doble palabra en el operando de origen (segundo operando) al operando de destino (primer operando) utilizando una pista no temporal para minimizar la contaminación del caché durante el escrito a la memoria. El operando de origen es un registro de proposito general. El operando de destino es una ubicación de memoria de 32 bits.
El indicio no temporal se implementa utilizando un protocolo de tipo de memoria de combinación de escritura (WC) al escribir los datos a la memoria. Utilizando este protocolo, el procesador no escribe los datos en la jerarquía de caché, ni recoge la línea correspondiente de caché de la memoria en la jerarquía de caché. El tipo de memoria de la región que se está escribiendo puede anular la indirecta no temporal, si la dirección de memoria especificada para la tienda no temporal está en una región de memoria inestable (UC) o escrita protegida (WP). Para obtener más información sobre las tiendas no temporales, consulte "Caching of Temporal vs. Datos no temporales" en el capítulo 10 en el Intel(R) 64 e IA-32 Architectures Software Developer's Manual, Volumen 1.
Debido a que el protocolo WC utiliza un modelo de consistencia de memoria de orden débil, una operación de esgrima implementada con la instrucción SFENCE o MFENCE debe usarse junto con instrucciones MOVNTI si varios procesadores pueden usar diferentes tipos de memoria para leer/escribir los lugares de memoria de destino.
En modo de 64 bits, el tamaño de operación predeterminado de la instrucción es de 32 bits. El uso del prefijo REX.R permite el acceso a registros adicionales (R8-R15). El uso del prefijo REX.W promueve la operación a 64 bits. Vea la tabla resumen al comienzo de esta sección para la codificación de datos y límites.
Operación
DEST := SRC;Intel C/C++ compilador intrínseco
MOVNTI void _mm_stream_si32 (int *p, int a) MOVNTI void _mm_stream_si64(__int64 *p, __int64 a);SIMD coma flotante Excepciones
None.
Excepciones
Modo protegido
#GP(0) | For an illegal operando de memoria effective address in the CS, DS, ES, FS or GS segments. |
#SS(0) | Para una dirección ilegal en el segmento SS. #PF(fault-code) Para un fallo de pagina. |
#UD | Si CPUID.01H:EDX.SSE2[26] = 0. Si el prefijo LOCK es usado. |
Modo real
#GP | Si alguna parte del operando se encuentra fuera del espacio de dirección eficaz de 0 a FFFFH. |
#UD | Si CPUID.01H:EDX.SSE2[26] = 0. Si el prefijo LOCK es usado. |
Modo virtual-8086
| Las mismas excepciones que en modo de dirección real. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#SS(0) | Si una dirección de memoria que hace referencia al segmento SS está en forma no canónica. |
#GP(0) | Si la dirección de memoria está en forma no canónica. #PF(fault-code) Para un fallo de pagina. |
#UD | Si CPUID.01H:EDX.SSE2[26] = 0. Si el prefijo LOCK es usado. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3. |