TPAUSE

Timed PAUSE

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
66 0F AE /6TPAUSE r32, <edx>, <eax> Op/En Tuple A N/AAValidoValidoDirige al procesador para entrar en un estado optimizado dependiente de la implementación hasta que el TSC alcance el valor en EDX:EAX. Rucción de Inst O perand Encoding1 operando 1 Ope rand 2 operando 3 operando 4 ModRM:r/ m (r) 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

  1. modrm.rm lecturabyte 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

TPAUSE instruye al procesador para entrar en un estado optimizado dependiente de la implementación. Hay dos estados optimizados para elegir: estado optimizado de potencia/rendimiento ligero y mejora de potencia/rendimiento optimizado. La selección entre ambos se rige por el bit de registro de entrada explícito[0] operando de origen.

TPAUSE está disponible cuando CPUID.07H.00H:ECX.WAITPKG[5] se enumera como 1. TPAUSE puede ser ejecutado a cualquier nivel de privilegio. La operación de esta instrucción es la misma en modos no-64-bit y en modo 64-bit.

A diferencia de PAUSE, la instrucción TPAUSE no causará un aborto cuando se utiliza dentro de una región transaccional, descrita en el capítulo 16, "Programación con Intel(R) AVX10", del Intel(R) 64 e IA-32 Architectures Software Developer's Manual, Volumen 1.

El registro de entrada contiene información como el estado optimizado preferido que el procesador debe introducir como se describe en la tabla siguiente. Los bits más que el bit 0 están reservados y resultarán en #GP si no-cero.

TPAUSE Input Register Bit Definitions

Valor del bitNombre del EstadoHora de despertarAhorros de energíaOtros beneficios
bit[0] = 0C0.2Más lentoMás grandeMejora el rendimiento de los otros hilos SMT en el mismo núcleo.
bit[0] = 1C0.1Más rápido.Más pequeñaN/A
bits[31:1]N/AN/AN/AReservado

Operación

os_deadline := TSC+(IA32_UMWAIT_CONTROL[31:2]<<2)
instr_deadline := UINT64(EDX:EAX)

IF os_deadline < instr_deadline:
    deadline := os_deadline
    using_os_deadline := 1

ELSE:
    deadline := instr_deadline
    using_os_deadline := 0

WHILE TSC < deadline:
    implementation_dependent_optimized_state(Source register, deadline, IA32_UMWAIT_CONTROL[0])

IF using_os_deadline AND TSC  deadline:
    RFLAGS.CF := 1

ELSE:
    RFLAGS.CF := 0

RFLAGS.AF,PF,SF,ZF,OF := 0

Intel C/C++ compilador intrínseco

TPAUSE uint8_t _tpause(uint32_t control, uint64_t counter);

Excepciones numéricas

None.

Excepciones

Modo real
#GP(0)Si src[31:1] != 0. Si CR4.TSD = 1 y CPL != 0.
#UDSi CPUID.07H.00H:ECX.WAITPKG[5]=0.
Modo protegido
#GP(0)Si src[31:1] != 0. Si CR4.TSD = 1 y CPL != 0.
#UDSi CPUID.07H.00H:ECX.WAITPKG[5]=0.
Modo virtual-8086
#GP(0)Si src[31:1] != 0. Si CR4.TSD = 1 y CPL != 0.
#UDSi CPUID.07H.00H:ECX.WAITPKG[5]=0.
Modo de compatibilidad
#GP(0)Si src[31:1] != 0. Si CR4.TSD = 1 y CPL != 0.
#UDSi CPUID.07H.00H:ECX.WAITPKG[5]=0.
Modo de 64 bits
#GP(0)Si src[31:1] != 0. Si CR4.TSD = 1 y CPL != 0.
#UDSi CPUID.07H.00H:ECX.WAITPKG[5]=0.

Fuentes