Тестовый регистр

Тестовый регистр в процессорах Intel 80386 и Intel 80486 был регистром, используемым процессором, обычно для самотестирования. Большинство этих регистров не были документированы и использовались специализированным программным обеспечением. Тестовые регистры назывались TR3 - TR7 . Обычным программам обычно не требуются эти регистры для работы. С появлением Pentium тестовые регистры были заменены различными регистрами, специфичными для модели (MSR). [1]

В 80386 было предусмотрено два тестовых регистра, TR6 и TR7 , для тестирования TLB . TR6 был тестовым командным регистром, а TR7 был тестовым регистром данных. 80486 предоставил три дополнительных регистра, TR3 , TR4 и TR5 , для тестирования кэша L1. TR3 был регистром данных, TR4 был адресным регистром, а TR5 был командным регистром. К этим регистрам обращались варианты инструкции MOV . Тестовый регистр может быть как исходным операндом, так и целевым операндом. Инструкции MOV определены как в режиме реального адреса , так и в защищенном режиме . Тестовые регистры являются привилегированными ресурсами. В защищенном режиме инструкции MOV, которые обращаются к ним, могут быть выполнены только на уровне привилегий 0. Попытка чтения или записи тестовых регистров при выполнении на любом другом уровне привилегий вызывает общее исключение защиты. Кроме того, эти инструкции генерируют исключение недопустимого кода операции на большинстве процессоров новее 80486.

Инструкция кодируется двумя способами, в зависимости от потока данных. Перемещение данных из регистра общего назначения в тестовый регистр кодируется как 0F 26 /r(где r/mявляется GPR, а regявляется тестовым регистром). Перемещение данных в другую сторону (т. е. из тестового регистра в регистр общего назначения) кодируется как 0F 24 /r(где r/mявляется GPR, а regявляется тестовым регистром). [2] Поддерживаются только перемещения регистр-регистр - как таковые, поле "mod" (верхние 2 бита) байта ModR/M инструкции должно быть установлено в 11b. (Установка поля "mod" байта ModR/M в любое другое значение, чем 11bприводит к неопределенному поведению, при этом на разных процессорах наблюдается разное поведение. [3] )

Тестовые регистры и/или связанные с ними коды операций поддерживались в следующих процессорах x86 :

ПроцессорыТестовые регистры кэшаТестовые регистры TLB
ТР0ТР1ТР2ТР3ТР4ТР5ТР6ТР7
Intel 386 (все модели)НетНетраспаковать [a]Да
Intel 486 (все модели)НетДаДа
AMD 386 (все модели)
AMD Élan SC3xx
НетНет?Да [5]
AMD 486 (все модели)
AMD 5x86
AMD Élan SC4xx,SC5xx
НетДа [6]Да
IBM 386SLC
IBM BL486SLC2/SX2/SX3
НетДа [7]Да
C&T Супер386НетНетДа [8]
NexGen Nx586НетНетДа [9]
Cyrix [b] 486 (все модели [c] )НетДа [11]Да
Cyrix 5x86Нетраспаковать [12]ДаДа
Cyrix 6x86Нетраспаковать [d]ДаДа (ВСПМ) [э]
Cyrix 6x86MX, MIIНетраспаковать [12]Да (блокнот) [ж]Да
VIA Cyrix III [г]Нет?Да (блокнот) [ж]Да
Cyrix MediaGX
NatSemi Geode GX
Нет?Да [18]Да
NatSemi Geode GX2
AMD Geode GX, LX
Регистры TR0-TR7 представлены как 32-битные регистры данных для чтения/записи
без какой-либо функциональности тестирования кэша/TLB. [19]
IDT WinChip (все модели)Регистры отсутствуют. Коды операций MOV TRx могут быть включены с помощью бита FCR.EMOVTR [20]
WinChip , но будут действовать как NOP.
Intel Кварк X1000НетДа [21]Да
  1. ^ Сообщается, что на Intel 386 регистры TR4 и TR5 действуют как недокументированные регистры только для чтения, возвращающие элемент данных, связанный с предварительной выборкой инструкций. [4]
  2. ^ Модели процессоров партнеров Cyrix по производству, таких как IBM , TI и ST, также поддерживали те же тестовые регистры, что и соответствующие модели процессоров под брендом Cyrix.
  3. ^ SoC на базе ядра CPU ST486, полученного от Cyrix, также поддерживали тот же набор тестовых регистров, что и Cyrix 486 — к таким SoC относятся, например, STPC Atlas и ZFMicro ZFx86. [10]
  4. ^ На Cyrix 6x86 регистры TR1 и TR2 можно было включить, установив бит 6 регистра конфигурации Cyrix 30h. Эти регистры не документированы, но пример кода, использующего их, был опубликован Cyrix. [13]
  5. ^ На Cyrix 6x86 регистры TR6 и TR7 могли использоваться не только для тестирования TLB, но и для настройки VSPM (механизма подкачки переменных размеров) процессора. [14] VSPM был 4-записным [15] программным TLB с маской для каждой записи для поддержки всех размеров страниц, являющихся степенью двойки, от до байт. Он присутствовал только в Cyrix 6x86 — он был удален в 6x86MX и более поздних процессорах. 2 12 {\displaystyle 2^{12}} 2 32 {\displaystyle 2^{32}}
  6. ^ ab В процессорах 6x86MX, MII и «Joshua» Cyrix III регистры TR3-TR5 могли использоваться не только для тестирования кэша L1, но и для блокировки отдельных строк кэша L1 по определенным адресам для использования в качестве временной памяти . [16] [17]
  7. ^ Только ядро ​​"Joshua". Варианты ядра "Samuel" Cyrix III не поддерживали тестовые регистры TRx.

Смотрите также

Ссылки

  1. ^ Руководство разработчика семейства процессоров Intel Pentium®, номер заказа 241428-005, 1997 г., раздел 16.1.2, стр. 442 — содержит список регистров MSR Pentium, которые обеспечивают ту же функциональность, что и регистры TRx 386/486.
  2. Введение в 80386, включая спецификацию 80386. Intel . Апрель 1986. С. 122.
  3. Роберт Л. Хаммел, Технический справочник программиста журнала PC Magazine, 1992, ISBN 1-56276-016-5 , стр. 476. 
  4. Роберт Коллинз, Move Special Registers, архивировано 5 июня 1997 г.
  5. ^ AMD, Am386 Microprocessors Data Book, 1992, страницы 21 и 151
  6. ^ AMD, Am486® Microprocessor Software User's Manual, ред.1, 1994, раздел 1.59, стр. 82
  7. ^ Джон Х. Уортон, Полное издание X86, том 1, 1994. Ресурсы MicroDesign , ISBN 1-885330-02-2 , стр. 296. 
  8. ^ Чипы и технологии, Справочное руководство программиста Super386 DX, изд. № UG85, ред. 1.0, 1992, стр. 201.
  9. ^ NexGen, Nx586™ Processor and Nx587™ Numerics Processor Databook, 8 июля 1993 г., стр. 116
  10. ^ ZFMicro, ZFx86 Data Book 1.0 Rev D, 5 июня 2006 г., стр. 101
  11. ^ Cyrix, Cx486DLC Microprocessor Data Sheet, заказ № 94706-01, май 1992 г., раздел 2.3.2.6, стр. 37
  12. ^ ab Sandpile, Регистры управления конфигурацией IA32, см. бит BTB_TR в регистрах 20h и 30h для включения недокументированных регистров TR1/TR2 на Cyrix 5x86, 6x86 и 6x86MX. Архивировано из оригинала 20 мая 2011 г.
  13. Cyrix, Руководство по написанию BIOS для 6x86, редакция 4.1, 29 июля 1996 г., стр. 43.
  14. ^ Cyrix, 6x86 Processor data book, заказ № 94175-01, март 1996 г., раздел 2.6.5, стр. 74
  15. Архив ядра Linux, Re: Cyrix 6x86 Patch.., 4 ноября 1996 г.
  16. ^ Cyrix, 6x86MX Processor Data Book, заказ № 94329-00, 15 июля 1997 г., раздел 2.13.1.1, стр. 87
  17. ^ VIA-Cyrix Corp., Cyrix III Processor Data Book, v1.0, 25 января 2000 г., раздел 2.9.1.1, стр. 86
  18. Cyrix, MediaGX Processor Data Book, версия 2.0, 29 октября 1998 г., раздел 3.3.2.4, стр. 59
  19. ^ AMD, Geode™ LX Processors Data Book, идентификатор публикации: 33234H, февраль 2009 г., раздел 8.3.4.3, стр. 648
  20. ^ IDT, Технические данные процессора WinChip C6, раздел A.2, стр.79
  21. ^ Intel, Quark SOC X1000 Core Developer's Manual, заказ № 329679-001, октябрь 2013 г., приложение B, стр. 296


Получено с "https://en.wikipedia.org/w/index.php?title=Test_register&oldid=1266724720"