Регистр испытаний
Тестовый регистр в процессорах 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
будучи георадаром, и reg
является тестовым регистром). Перемещение данных в обратном направлении (т.е. из тестового регистра в регистр общего назначения) кодируется как 0F 24 /r
(с r/m
будучи георадаром, и reg
является тестовым регистром). [2] Разрешены только перемещения регистр-регистр; формы памяти байта ModR/M не определены. Другими словами, mod
поле (два старших бита ) должно быть установлено в значение 1
.
Тестовые регистры и/или связанные с ними коды операций поддерживались следующими процессорами x86 :
Процессоры | — | Регистры проверки кэша | Тестовые регистры TLB | ||||||
---|---|---|---|---|---|---|---|---|---|
ТР0 | ТР1 | ТР2 | ТР3 | ТР4 | ТР5 | ТР6 | ТР7 | ||
Intel 386 (все модели) | Нет | Нет | отменить документацию [а] | Да | |||||
Intel 486 (все модели) | Нет | Да | Да | ||||||
386 драм (все модели) AMD Лось SC3xx |
Нет | Нет | ? | Да [4] | |||||
486 драм (все модели) АМД 5х86 AMD Элан SC4xx, SC5xx |
Нет | Да [5] | Да | ||||||
К&Т Супер386 | Нет | Нет | Да [6] | ||||||
НексГен Nx586 | Нет | Нет | Да [7] | ||||||
Сайрикс [б] 486 (все модели [с] ) Сайрикс 5x86 |
Нет | Да [9] | Да | ||||||
Сайрикс 6x86 | Нет | отменить документацию [д] | Да | Да (ВСПМ) [и] | |||||
Сайрикс 6x86MX, 1000 Через Сайрикс III [ф] |
Нет | Да (блокнот) [г] | Да | ||||||
Сайрикс МедиаGX NatSemi Geode GX |
Нет | Да [15] | Да | ||||||
NatSemi Geode GX2 AMD Geode GX, LX |
Регистры TR0-TR7 представлены как 32-битные регистры данных для чтения/записи. без каких-либо функций тестирования кэша/TLB. [16] | ||||||||
IDT WinChip (все модели) | Регистры отсутствуют. Коды операций MOV TRx могут быть включены. с FCR.EMOVTR WinChip [17] бит, но будет действовать как NOP. | ||||||||
Интел Кварк X1000 | Нет | Да [18] | Да |
- ^ Сообщается, что в Intel 386 регистры TR4 и TR5 действуют как недокументированные регистры только для чтения, возвращающие элемент данных, связанный с предварительной выборкой инструкций. [3]
- ^ Модели процессоров партнеров-производителей Cyrix от IBM , TI и ST также поддерживают те же тестовые регистры, что и соответствующие модели процессоров Cyrix под маркой Cyrix.
- ^ SoC, основанные на ядре ЦП ST486, производном от Cyrix, также поддерживают тот же набор тестовых регистров, что и Cyrix 486 - такие SoC включают, например, STPC Atlas и ZFMicro ZFx86. [8]
- ^ В Cyrix 6x86 регистры TR1 и TR2 можно включить, установив бит 6 регистра конфигурации Cyrix 30h. Эти регистры не документированы, но Cyrix опубликовал пример кода, использующего их. [10]
- ^ В Cyrix 6x86 регистры TR6 и TR7 можно было использовать не только для тестирования TLB, но и для настройки VSPM процессора (механизма подкачки переменного размера). [11] VSPM был 4-х входным. [12] программный TLB с маской для каждой записи для поддержки всех размеров страниц степени 2 от к байты. Он присутствовал только в Cyrix 6x86 и был удален в процессорах 6x86MX и более поздних версиях.
- ^ Только ядро «Джошуа». Базовые варианты Cyrix III «Samuel» не поддерживали тестовые регистры TRx.
- ^ На процессорах 6x86MX, MII и «Joshua» Cyrix III регистры TR3-TR5 можно было использовать не только для тестирования кэша L1, но и для привязки отдельных строк кэша L1 к определенным адресам для использования оперативной памяти . [13] [14]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Intel, Руководство разработчика семейства процессоров Pentium® , номер заказа. 241428-005, 1997, раздел 16.1.2, стр. 442 — приведен список процессоров Pentium MSR, которые обеспечивают ту же функциональность, что и регистры 386/486 TRx.
- ^ Знакомство с 80386, включая технический паспорт 80386 . Интел . Апрель 1986 г. с. 122.
- ^ Роберт Коллинз, Переместить специальные регистры , архивировано 5 июня 1997 года.
- ^ AMD, Книга данных по микропроцессорам Am386 , 1992 г., страницы 21 и 151.
- ^ AMD, Руководство пользователя программного обеспечения микропроцессора Am486® , ред. 1, 1994 г., раздел 1.59, стр. 82
- ^ Чипы и технологии, Справочное руководство программиста Super386 DX , pub.no. UG85, ред. 1.0, 1992 г., стр. 201.
- ^ NexGen, Справочник процессоров Nx586™ и числовых процессоров Nx587™ , 8 июля 1993 г., стр. 116.
- ^ ZFMicro, Книга данных ZFx86 1.0 Rev D , 5 июня 2006 г., стр. 101
- ^ Cyrix, Лист данных микропроцессора Cx486DLC , номер заказа. 94706-01, май 1992 г., раздел 2.3.2.6, стр.37
- ^ Cyrix, Руководство для разработчиков BIOS 6x86 , версия 4.1, 29 июля 1996 г., стр. 43.
- ^ Cyrix, Справочник процессоров 6x86 , номер заказа. 94175-01, март 1996 г., раздел 2.6.5, стр. 2. 74
- ↑ Архив ядра Linux, Re: Cyrix 6x86 Patch.. , 4 ноября 1996 г.
- ^ Cyrix, Справочник данных процессора 6x86MX , номер заказа. 94329-00, 15 июля 1997 г., раздел 2.13.1.1, стр. 87
- ^ VIA-Cyrix Corp., Книга данных процессора Cyrix III , v1.0, 25 января 2000 г., раздел 2.9.1.1, стр. 86
- ^ Cyrix, Книга данных процессора MediaGX , версия 2.0, 29 октября 1998 г., раздел 3.3.2.4, стр.59
- ^ AMD, Справочник процессоров Geode™ LX , идентификатор публикации: 33234H, февраль 2009 г., раздел 8.3.4.3, стр.648
- ^ IDT, Лист данных процессора WinChip C6 , раздел A.2, стр.79
- ^ Intel, Руководство разработчика Quark SOC X1000 Core , номер заказа. 329679-001, октябрь 2013 г., приложение Б, стр. 296