Información en inglés
Processors
procesador Intel® Pentium®
Instrucción no válido Descripción errata

Instrucción no válido erratas Home Declaraciones Proveedor de software Cómo comunicarse con nosotros?
segundo plano para software
Actualizado en nov 20 1997

Descripción técnica errata Actualizado nov 20 1997

Problema: La instrucción CMPXCHG8B compara un 8 valor de byte en EDX y EAX con un 8 valor de byte en la memoria (el destino operando). La única destino válido operándoos para esta instrucción son memoria operándoos. Si el destino operando es un registro el procesador deben generar una excepción Opcode no válido, la ejecución del CMPXCHG8B la instrucción debe ser detenido y el procesador debe ejecutar el gestor excepción Opcode no válido. Esta errata se produce si el bloqueo se utiliza con el prefijo CMPXCHG8B instrucción con una versión (no válido) registro destino operando. En este caso, el procesador no comience la ejecución de la excepción Opcode gestor no válido debido a que el bus está bloqueado. Esto resulta en un bloqueo del sistema.

Implicación: Si una versión (no es válido) registro destino operando se utiliza con el CMPXCHG8B instrucción y las bloquear prefijo, es probable que el sistema se bloquee. No hay datos de la memoria corrompido y el usuario puede realizar un reinicio del sistema para regresar a operación normal. Tenga en cuenta que el código no válido secuencia necesaria para esta errata para que ocurra generalmente no es generado en el curso de la programación ni tampoco tiene una secuencia generados por software disponible comercialmente.

Esta errata se aplica solamente a los procesadores Pentium®, los procesadores Pentium con tecnología MMX™, Pentium y OverDrive® procesadores Pentium OverDrive con la tecnología MMX. Procesadores Pentium Pro, procesadores Pentium II y i486™ y anterior no se ven afectados.

Solución: Existen dos soluciones transitorias para esta errata para los sistemas operativos de modo protegido. Ambas soluciones transitorias genera un error de página no válido cuando la excepción Opcode se produce. En ambos casos, el error de página contará con los servicios antes de que el Opcode excepción no válido y que, por tanto, prevenir que el bloqueo condición situación. Los detalles de implementación presenta varía en función del sistema operativo. Utilice uno de los siguientes:

  1. La primera parte de esta solución transitoria establece los primeros 7 entradas (0-6) de la interrupción Descriptor Tabla (IDT) en una página no escritura. Cuando la excepción Opcode no válido (excepción 6) ocurre debido a la instrucción CMPXCHG8B combinado con un registro no válido destino (y sólo entonces), el procesador, se genera un error de página si no tiene acceso de escritura a la página que contiene 6 de la entrada de IDT. La segunda parte de esta solución transitoria modifica el fallo de página Handler para reconocer y de forma correcta Dispatch inválido Opcode excepciones que ahora están direcciona a través del fallo de página gestor.

    Parte I, IDT al acceder la página
    1. Marca la página que contiene los primeros siete entradas (0-6) de la IDT como se lee sólo al establecer bit 1 de la página entrada de la tabla a cero. También establecer CR0.WP (16 bits) a 1. Ahora que la excepción no válido Opcode combinado se produce en la instrucción CMPXCHG8B, se activen un fallo de página debido a que no tiene acceso de escritura a la página que contiene 6 de la entrada de IDT. Este error de página evita que el bus bloquear condición y da el SO control completo para procesar la excepción operando no válido, como corresponda. Tenga en cuenta que excepción 6 es la excepción Opcode no válida, de manera que con este esquema un SO tiene control completo de cualquier programa ejecutar una instrucción CMPXCHG8B no válido.
    2. Opcional: Si las actualizaciones a las entradas 7-255, de IDT producen en el curso de funcionamiento normal, en la página se debe evitar fallos en escribe a estas IDT entradas. Los posibles fallas se pueden evitar al alineación de la IDT a través de una página 4KB límites tal que la primera siete entradas (0-6) de la IDT en la primera página sólo de lectura y el resto entradas están en una lectura y escritura página.
    Parte II, fallo de página Handler modificaciones
  • Modificar el fallo de página Handler para calcular excepción causó el error de página con la tolerancia dirección CR2. Si el código de error en la pila indica que se produjo la excepción de anillo 0 y si la dirección corresponde a la no válido Opcode excepción, pop el código de error apagado la pila y salta a la excepción Opcode gestor no válido. De lo contrario continuar con el fallo de página normal gestor.
    O
    1. Esta solución transitoria tiene dos partes. Primero, la interrupción Descriptor Tabla (IDT) esté alineada tal que cualquier excepción no válido Opcode causará un fallo de página (debido a la página no se está presente). Segundo, el error de página Handler es modificado para que reconozca y de forma correcta enviar la excepción Opcode no válido y de ciertas otras excepciones que están direccionan a través del fallo de página gestor.
    Parte I, IDT alineación:
      1. Alinee la interrupción Descriptor Tabla (IDT) tal que cubre un límite 4KB página coloca la primera entrada a partir 56 bytes a partir de la final del primer 4KB página. Este lugares los primeros siete entradas (0-6) en la primera página 4 KB, y el resto entradas en la segunda página.
      2. La página que contiene los primeros siete entradas de IDT no debe tener una asignación en la SO tablas de página. Esto hará que cualquier de excepciones 0-6 para generar una página no está presente fallo. Un fallo de página evita que el bus bloquear condición y da el SO control completo a fin de procesar estas excepciones, como corresponda. Tenga en cuenta que excepción 6 es la excepción Opcode no válida, de manera que con este esquema un SO tiene control completo de cualquier programa ejecutar una instrucción CMPXCHG8B no válido.
    Parte II, fallo de página Handler modificaciones:
      1. Reconocer accesos a la primera página del IDT mediante la prueba el error dirección CR2. Esta página no presente posibles fallas en otras direcciones puede ser procesadas normalmente.
      2. Página no está presente posibles fallas en la primera página del IDT, el SO debe reconocer y Dispatch la excepción que causó la página no está presente fallo. Antes de continuar, prueba la tolerancia dirección CR2 a fin de determinar si es que está en el rango de direcciones a las excepciones correspondientes 0-6.
      3. Calcular excepción causó la página no está presente la tolerancia a partir de la tolerancia dirección CR2.
      4. En función del sistema operativo, cierto nivel de privilegios verifica puede ser necesario, junto con ajustes para la interrupción pila.
      5. Salta a la correspondiente normal Handler para la excepción.

    Ambas soluciones transitorias sólo debe implementarse en los procesadores Intel que devuelven familia=5 a través de la instrucción de CPUID.

    75/90/100/120/133/150/166/200 MHz procesadores Pentium® y 120/133/150/166/200/233 MHz procesadores Pentium con tecnología MMX™

    No.

    B1

    B3

    B5

    C2

    Ma1

    Cb1

    Mcb1

    cC0

    Ma4

    Mcc0

    E0

    Xa3

    Mxa3

    Xb1

    Mxb1

    Mya0

    Las erratas

    81

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    X

    no válido combinado operando con instrucción CMPXCHG8B

    60 MHz 66 MHz y procesadores Pentium®

    No.

    B1

    C1

    D1

    Las erratas

    52

    X

    X

    X

    no válido combinado operando con instrucción CMPXCHG8B

    63/83/120/125/133/150/166 MHz OverDrive® procesadores Pentium® y 125/150/166/180/200 MHz Pentium procesadores OverDrive con tecnología MMX™

    No.

    B1

    B2

    C0

    Ta0

    Ac0

    Oxa3

    Oxb1

    Las erratas

    70

    X

    X

    X

    X

    X

    X

    X

    no válido combinado operando con instrucción CMPXCHG8B

    Esto se aplica a:
    procesador Intel® Pentium®
    procesador Intel® Pentium® con la tecnología MMX™
    Procesadores OverDrive®

     

    ID de solución: CS-013148
    Fecha de creación: 12 de julio de 2004
    Última modificación: 16-nov-2009
    al inicio de la página