Rejestr testowy
Rejestr testowy w procesorach Intel 80386 i Intel 80486 był rejestrem używanym przez procesor, zwykle do przeprowadzania autotestu. Większość z tych rejestrów była nieudokumentowana i używana przez specjalistyczne oprogramowanie. Rejestry testowe nazwano TR3 do TR7 . Zwykłe programy zwykle nie wymagają tych rejestrów do działania. W Pentium rejestry testowe zostały zastąpione różnymi rejestrami specyficznymi dla modelu (MSR).
W 80386 przewidziano dwa rejestry testowe, TR6 i TR7 , do celów testowania TLB . TR6 był rejestrem poleceń testowych, a TR7 był rejestrem danych testowych. 80486 dostarczył trzy dodatkowe rejestry, TR3 , TR4 i TR5 , do testowania pamięci podręcznej L1. TR3 był rejestrem danych, TR4 był rejestrem adresu, a TR5 był rejestrem poleceń. Dostęp do tych rejestrów miały warianty MOV instrukcja. Rejestr testowy może być operandem źródłowym lub operandem docelowym. Instrukcje MOV są definiowane zarówno w trybie adresu rzeczywistego , jak iw trybie chronionym . Rejestry testowe są zasobami uprzywilejowanymi. W trybie chronionym instrukcje MOV, które mają do nich dostęp, mogą być wykonywane tylko na poziomie uprawnień 0. Próba odczytu lub zapisu rejestrów testowych podczas wykonywania na dowolnym innym poziomie uprawnień powoduje ogólny wyjątek ochrony. Ponadto instrukcje te generują wyjątek nieprawidłowego kodu operacji na większości procesorów nowszych niż 80486.
Instrukcja kodowana jest na dwa sposoby, w zależności od przepływu danych. Przenoszenie danych z rejestru ogólnego przeznaczenia do rejestru testowego jest kodowane jako 0F 26 /r
(gdzie r/m
to GPR, a reg
to rejestr testowy). Przenoszenie danych w drugą stronę (tj. z rejestru testowego do rejestru ogólnego przeznaczenia) jest kodowane jako 0F 24 /r
(gdzie r/m
to GPR, a reg
to rejestr testowy). Dozwolone są tylko ruchy rejestr-rejestr; formy pamięci bajtu ModR/M są niezdefiniowane. Innymi słowy, mod
(the two MSB ) musi być ustawiony na 1
.
Rejestry testowe i/lub powiązane kody operacyjne były obsługiwane w następujących procesorach x86 :
Procesory | — | Rejestry testów pamięci podręcznej | Rejestry testowe TLB | |||||
---|---|---|---|---|---|---|---|---|
TR0 | TR1 | TR2 | TR3 | TR4 | TR5 | TR6 | TR7 | |
Intel 386 (wszystkie modele) | NIE | NIE | cofnij dokument | Tak | ||||
Intel 486 (wszystkie modele) | NIE | Tak | Tak | |||||
AMD 386 (wszystkie modele) AMD Élan SC3xx |
NIE | NIE | ? | Tak | ||||
AMD 486 (wszystkie modele) AMD 5x86 AMD Élan SC4xx, SC5xx |
NIE | Tak | Tak | |||||
NexGen Nx586 | NIE | NIE | Tak | |||||
Cyrix 486 (wszystkie modele) Cyrix 5x86 |
NIE | Tak | Tak | |||||
Cyryksa 6x86 | NIE | cofnij dokument | Tak | Tak (VSPM) | ||||
Cyrix 6x86MX, MII przez Cyrix III |
NIE | Tak (brudnopis) | Tak | |||||
Cyrix MediaGX Nat Semi Geode GX |
NIE | Tak | Tak | |||||
NatSemi Geode GX2 AMD Geode GX, LX |
Rejestry TR0-TR7 występują jako 32-bitowe rejestry danych do odczytu/zapisu bez funkcji testowania pamięci podręcznej/TLB. |
|||||||
IDT WinChip (wszystkie modele) |
Rejestry nie występują. Kody operacyjne MOV TRx mogą być włączone za pomocą bitu FCR.EMOVTR WinChip, ale będą działać jako NOP. |
|||||||
Intel Quark X1000 | NIE | Tak | Tak |
Zobacz też