UMONITOR
Configuración de nivel de usuario Dirección de monitores
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
F3 0F AE /6 | UMONITOR r16/r32/r64 Op/En Tuple Operand 1 A N/A ModRM:r/m (r) | A | Valido | Valido | Configura un rango de dirección lineal que debe ser monitoreado por hardware y activa el monitor. El rango de dirección debe ser un tipo de caché de memoria de revés. La dirección está contenida en r16/r32/r64. Instrucciones operando Encoding1 Op erand 2 operando 3 operando 4 N/A N/A N/A N/A |
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.
A
modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Coste medido
Cargando las mediciones de arch-data...
Descripción
El hardware de monitoreo de la dirección de armas UMONITOR utilizando una dirección especificada en el registro de origen (el rango de dirección que los controles de hardware de monitoreo para las operaciones de almacenamiento pueden determinarse utilizando el CPUID.05H). Una tienda a una dirección dentro del rango de dirección especificado activa el hardware de monitoreo. El estado del hardware de monitor es utilizado por UMWAIT.
El contenido del registro de fuentes es una dirección efectiva. Por defecto, el segmento DS se utiliza para crear una dirección lineal que se monitoriza. Se pueden usar anulaciones de segmento. El rango de direcciones debe utilizar la memoria del tipo de revés. Sólo la memoria de paso está garantizada para activar correctamente el hardware de monitoreo. La información adicional sobre la determinación del rango de dirección a utilizar para evitar falsos despertares se describe en el capítulo 11, "Multiple- Processor Management", del Intel(R) 64 y el Manual de Desarrolladores de Software de Arquitecturas IA-32, Volumen 3A.
La instrucción UMONITOR se ordena como una operación de carga con respecto a otras transacciones de memoria. La instrucción está sujeta a la comprobación de permisos y fallas asociadas con una carga de byte. Como una carga, UMONITOR establece el A-bit pero no el D-bit en las tablas de página.
UMONITOR y UMWAIT están disponibles cuando CPUID.07H.00H:ECX.WAITPKG[5] se enumera como 1. UMONITOR y UMWAIT pueden ser ejecutados a cualquier nivel de privilegio. Excepto por el ancho del registro de origen, la operación de la instrucción es la misma en modos no-64-bit y en modo 64-bit.
UMONITOR no interopera con la instrucción MWAIT heredada. Si UMONITOR fue ejecutado antes de ejecutar MWAIT y después de la ejecución más reciente de la instrucción MONITOR heredada, MWAIT no entrará en un estado optimizado. La ejecución continuará con la instrucción siguiente MWAIT.
La instrucción UMONITOR causa un aborto transaccional cuando se utiliza dentro de una región transaccional.
El ancho del registro de origen (16b, 32b o 64b) se determina por el ancho de dirección eficaz, que se ve afectado de la forma estándar por la configuración del modo de máquina y 67 prefijo.
Operación
UMONITOR sets up an address range for the monitor hardware using the content of source register as an effective
address and puts the monitor hardware in armed state. A store to the specified address range will trigger the
monitor hardware.Intel C/C++ compilador intrínseco
UMONITOR void _umonitor(void *address);Excepciones numéricas
None.
- El campo Mod del byte ModR/M debe tener valor 11B.
Excepciones
Modo protegido
#GP(0) | Si el segmento especificado no es SS y el registro de origen está fuera del límite de segmento especificado. Si el registro de segmento especificado contiene un NULL selector de segmento. |
#SS(0) | Si el segmento especificado es SS y el registro de origen está fuera del límite de segmento SS. #PF(fault-code) Para un fallo de pagina. |
#UD | Si CPUID.07H.00H:ECX.WAITPKG[5]=0. Si se utiliza el prefijo LOCK. |
#GP | Si el segmento especificado no es SS y el registro de origen está fuera del espacio de dirección eficaz de 0 a FFFFH. |
#SS | Si el segmento especificado es SS y el registro de origen está fuera del espacio de dirección eficaz de 0 a FFFFH. |
#UD | Si CPUID.07H.00H:ECX.WAITPKG[5] =0. Si se utiliza el prefijo LOCK. Excepciones de Modo Virtual 8086 Las mismas excepciones que en modo de dirección real; adicionalmente: #PF(fault-code) Para un fallo de pagina. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#GP(0) | Si el segmento especificado no es SS y la dirección lineal está en forma no canónica. |
#SS(0) | Si el segmento especificado es SS y el registro de origen está en forma no canónica. #PF(fault-code) Para un fallo de pagina. |
#UD | Si CPUID.07H.00H:ECX.WAITPKG[5] =0. Si el prefijo LOCK es usado. |