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ż