stringtranslate.com

registro de prueba

Un registro de prueba , en los procesadores Intel 80386 e Intel 80486 , era un registro utilizado por el procesador, normalmente para realizar una autoprueba. La mayoría de estos registros no estaban documentados y eran utilizados por software especializado. Los registros de prueba se denominaron TR3 a TR7 . Los programas normales normalmente no requieren estos registros para funcionar. Con el Pentium , los registros de prueba fueron reemplazados por una variedad de registros específicos del modelo (MSR). [1]

En el 80386, se proporcionaron dos registros de prueba, TR6 y TR7 , para realizar pruebas de TLB . TR6 era el registro de comando de prueba y TR7 era el registro de datos de prueba. El 80486 proporcionó tres registros adicionales, TR3 , TR4 y TR5 , para probar la caché L1. TR3 era un registro de datos, TR4 era un registro de direcciones y TR5 era un registro de comando. A estos registros se accedía mediante variantes de la instrucción MOV . Un registro de prueba puede ser el operando de origen o el operando de destino. Las instrucciones MOV se definen tanto en modo de dirección real como en modo protegido . Los registros de prueba son recursos privilegiados. En modo protegido, las instrucciones MOV que acceden a ellos solo se pueden ejecutar en el nivel de privilegio 0. Un intento de leer o escribir los registros de prueba cuando se ejecuta en cualquier otro nivel de privilegio provoca una excepción de protección general. Además, esas instrucciones generan una excepción de código de operación no válido en la mayoría de las CPU posteriores a 80486.

La instrucción se codifica de dos maneras, según el flujo de datos. Mover datos de un registro de propósito general a un registro de prueba se codifica como 0F 26 /r( r/msiendo el GPR y regsiendo el registro de prueba). Mover datos en sentido contrario (es decir, desde el registro de prueba a un registro de propósito general) se codifica como 0F 24 /r( r/msiendo el GPR y regsiendo el registro de prueba). [2] Sólo se permiten movimientos registro-registro; las formas de memoria del byte ModR/M no están definidas. En otras palabras, el modcampo (los dos MSB ) debe establecerse en 1.

Los registros de prueba y/o códigos de operación asociados fueron compatibles con los siguientes procesadores x86 :

  1. ^ En Intel 386, se ha informado que los registros TR4 y TR5 actúan como registros de solo lectura no documentados que devuelven un elemento de datos relacionado con la captación previa de instrucciones. [3]
  2. ^ Los modelos de CPU de los socios fabricantes de Cyrix de IBM , TI y ST también admitían los mismos registros de prueba que sus correspondientes modelos de CPU de la marca Cyrix.
  3. ^ Los SoC basados ​​en el núcleo de CPU ST486 derivado de Cyrix también admitían el mismo conjunto de registros de prueba que el Cyrix 486; dichos SoC incluyen, por ejemplo, STPC Atlas y ZFMicro ZFx86. [7]
  4. ^ En Cyrix 6x86, los registros TR1 y TR2 se pueden habilitar configurando el bit 6 del registro de configuración de Cyrix 30h. Estos registros no están documentados, pero Cyrix ha publicado un código de ejemplo que los utiliza. [9]
  5. ^ En Cyrix 6x86, los registros TR6 y TR7 se pueden usar no solo para probar el TLB, sino también para configurar el VSPM (mecanismo de paginación de tamaño variable) del procesador. [10] El VSPM era un TLB de software de 4 entradas [11] con una máscara por entrada para admitir todos los tamaños de página de potencia de 2, desde hasta bytes. Estaba presente solo en Cyrix 6x86; se eliminó en procesadores 6x86MX y posteriores.
  6. ^ Sólo núcleo "Joshua". Las variantes principales "Samuel" de Cyrix III no eran compatibles con los registros de prueba TRx.
  7. ^ En los procesadores 6x86MX, MII y "Joshua" Cyrix III, los registros TR3-TR5 se pueden usar no solo para probar el caché L1 sino también para bloquear líneas de caché L1 individuales en direcciones específicas para el uso de la memoria del scratchpad . [12] [13]

Ver también

Referencias

  1. ^ Intel, Manual del desarrollador de la familia de procesadores Pentium®, n.º de pedido. 241428-005, 1997, sección 16.1.2, página 442: proporciona una lista de Pentium MSR que brindan la misma funcionalidad que los registros 386/486 TRx.
  2. ^ Introducción al 80386, incluida la hoja de datos del 80386. Intel . Abril de 1986. p. 122.
  3. ^ Robert Collins, Mover registros especiales, archivado el 5 de junio de 1997.
  4. ^ AMD, Libro de datos de microprocesadores Am386, 1992, páginas 21 y 151
  5. ^ AMD, Manual del usuario del software del microprocesador Am486®, rev.1, 1994, sección 1.59, p. 82
  6. ^ Libro de datos del procesador NexGen, Nx586™ y Nx587™ Numerics Processor, 8 de julio de 1993, página 116
  7. ^ ZFMicro, ZFx86 Data Book 1.0 Rev D, 5 de junio de 2006, página 101
  8. ^ Cyrix, hoja de datos del microprocesador Cx486DLC, n.º de pedido. 94706-01, mayo de 1992, apartado 2.3.2.6, p.37
  9. ^ Cyrix, Guía del escritor de BIOS 6x86, revisión 4.1, 29 de julio de 1996, página 43.
  10. ^ Cyrix, libro de datos del procesador 6x86, n.º de pedido. 94175-01, marzo de 1996, apartado 2.6.5, pág. 74
  11. ^ Archivo del kernel de Linux, Re: Parche Cyrix 6x86..., 4 de noviembre de 1996
  12. ^ Cyrix, libro de datos del procesador 6x86MX, n.º de pedido. 94329-00, 15 de julio de 1997, apartado 2.13.1.1, página 87
  13. ^ VIA-Cyrix Corp., Libro de datos del procesador Cyrix III, v1.0, 25 de enero de 2000, sección 2.9.1.1, página 86
  14. ^ Cyrix, Libro de datos del procesador MediaGX, rev 2.0, 29 de octubre de 1998, sección 3.3.2.4, p.59
  15. ^ AMD, Libro de datos de procesadores Geode™ LX, ID de publicación: 33234H, febrero de 2009, sección 8.3.4.3, p.648
  16. ^ IDT, Hoja de datos del procesador WinChip C6, sección A.2, p.79
  17. ^ Intel, Manual del desarrollador de Quark SOC X1000 Core, n.º de pedido. 329679-001, octubre de 2013, anexo B, página 296