MOVNTI

Espada doble de la tienda usando Hint no temporal

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
NP 0F C3 /rMOVNTI m32, r32MRValidoValidoMover la palabra doble de r32 a m32 usando la indirecta no temporal.
NP REX.W + 0F C3 /rMOVNTI m64, r64MRValidoNo codificableMover 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

  1. modrm.rm escriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
  2. modrm.reg lecturabyte 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.
#UDSi CPUID.01H:EDX.SSE2[26] = 0. Si el prefijo LOCK es usado.
Modo real
#GPSi alguna parte del operando se encuentra fuera del espacio de dirección eficaz de 0 a FFFFH.
#UDSi 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.
#UDSi 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.

Fuentes