CPUID

CPUID (CPU azonosítás) - összeszerelő utasítások mnemoniája x86 processzorokhoz , a processzorral kapcsolatos információk megszerzésére szolgál. Segítségével a program meg tudja határozni a processzor típusát és képességeit (például meg tudja határozni, hogy mely utasításkészlet-kiterjesztések támogatottak).

A CPUID utasítás először az i486 processzorokban jelent meg . Ezután az összes processzorba belekerült, kezdve az Intel 486DX / SX / DX2 SL-től, az AMD 486DX4 -től , a Cyrix 6x86 -tól (M1), az UMC U5S -től .

Működési kód : 0F A2.

A CPUID utasítás támogatásának ellenőrzése a processzor által

Mivel a CPUID utasítás nem volt jelen az első x86-os processzorokban , használat előtt győződjön meg arról, hogy a processzor támogatja azt. Ehhez az EFLAGS regiszter 21. bitjét (ID) próbáljuk megváltoztatni . Ha a bit sikeresen változik, akkor a CPUID utasítás elérhető.

Ellenőrizendő forráskód:

pushfd ; az EFLAGS regiszter elhelyezése a verem pop eax ; az EFLAGS értékének kinyerése EAX-ben mov ebx , eax ; érték tárolása az EBX-ben xor eax , 200000 h ; change bit 21 push eax ; új érték elhelyezése a veremben popfd ; új érték tárolása az EFLAGS-ben pushfd ; EFLAGS elhelyezése a veremben ismét pop eax ; EFLAGS értéke most EAX xor eax , ebx ; ellenőrizze a 21. bitet je no_cpuid ; ha nem változott, akkor a CPUID nem támogatott

Ez a példa 32 bites utasításokat használ, ezért ha a processzor 16 bites módban van, akkor először ajánlott ellenőrizni, hogy a processzor támogatja-e az ilyen utasításokat (vagyis, hogy a kód 80386-os vagy újabb processzoron fut-e).

Használat

A CPUID utasítás az EAX regiszter tartalmát használja annak meghatározására, hogy milyen processzorinformációkat adjon vissza. Az első alkalommal EAX = 0 értékkel kell meghívni. Ez a processzor által támogatott utasításparaméter maximális megengedett értékét adja vissza.

Ahhoz, hogy információt kapjunk a processzorokban elérhető további funkciókról, a CPUID hívása előtt be kell állítani a 31-es bitet az EAX regiszterben, például a további funkciók maximális megengedett paraméterértékének meghatározásához szükséges a CPUID végrehajtása az EAX = értékkel. 80000000 óra .

Ha EAX = 0, a processzor 12 ASCII karakterként adja vissza a processzorgyártó azonosítót ( Szállító azonosító ) az EBX, EDX, ECX regiszterekben (ebben a sorrendben) .  Az EAX regiszterben a maximális megengedett EAX értéket ad vissza a CPUID hívásakor.

Néhány processzorgyártó azonosító: [1]

ASCII karakterlánc HEX értékek: EBX:EDX:ECX Gyártó
Eredeti Intel 756E6547:49656E69:6C65746E Intel
Hiteles AMD 68747541:69746E65:444D4163 AMD
Cyrix helyett 69727943:736E4978:64616574 Cyrix
CentaurHauls 746E6543:48727561:736C7561 kentaur
SiS SiS SiS 20536953:20536953:20536953 SiS
NexGenDriven 4778654E:72446E65:6E657669 NexGen
EredetiTMx86 756E6547:54656E69:3638784D Transmeta
RiseRiseRise 65736952:65736952:65736952 Emelkedik
UMC UMC UMC 20434D55:20434D55:20434D55 UMC
Geóda az NSC-től 646F6547:79622065:43534E20 Nemzeti félvezető
Vortex86 SoC 74726F56:36387865:436F5320 DM&P Electronics

Lásd még

Jegyzetek

  1. Tasit Murki, Stanislav Garmatyuk. A VIA Nano mint felfedező eszköz . iXBT (2010. augusztus 11.). Letöltve: 2010. szeptember 16. Az eredetiből archiválva : 2010. augusztus 15.

Linkek