Cpuid (CPU azonosítás)

Mivel az Intel architektúra fejlődik az új, generációk és modellek a feldolgozók (8086, 8088, Intel286, Intel386, Intel486, Pentium processzor, Pentium Overdrive processzorok, a Pentium processzorok MMX technológia, Pentium Overdrive processzor MMX technológia, a Pentium Pro processzor, valamint: Pentium II, Pentium II Xeon, Pentium II Overdrive, Intel Celeron, Mobile Intel Celeron, Pentium III, Mobile Intel Pentium III - M, Pentium III Xeon, Pentium 4. a mobil Intel Pentium 4 - M, Intel Xeon és az Intel Xeon MP), fontos, így az Intel biztosítja azokat az eszközöket, amelyek segítségével a szoftver képes azonosítani az egyes processzorok jellemzőit. Ez az azonosító mechanizmus az Intel architektúrával kombinálva az alábbiak szerint alakult:

A processzor azonosítási eljárásának fejlődése azért volt szükséges, mert az Intel-architektúra terjedésével az informatikai piacnak készen kellett állnia a processzor funkcionalitására a sok generáció és a különböző jellemzőkkel rendelkező modellek hátterében. Várakozásukra, hogy ez a tendencia a processzorok jövőbeli generációira fog terjedni, az Intel CPUID oktatás architektúrájának innovációja bővül. A CPUID utasítás erősségeinek köszönhetően a fejlesztők olyan alkalmazásokat és eszközöket hozhatnak létre, amelyek együttesen használhatók az Intel processzorainak gazdag gazdagsága ellenére a múltban, a jelenben és a jövőben. [1]

A CPUID utasításainak végrehajtásának ellenőrzése

Az Intel486 processzorcsalád és a későbbi processzorok közvetlen módszert biztosítanak annak meghatározására, hogy a processzor belső architektúrája támogatja-e az utasításokat. Ez a módszer egy speciális ID jelzőt használ az EFLAGS regiszter 21 bitjében. Ha a program megváltoztathatja a jelző értékét, a processzor támogatja a CPUID utasítást, különben nem. Ez a bit az alábbiakban látható.

Cpuid (CPU azonosítás)

1. ábra. 21 bit különböző típusú processzorokban

A CPUID utasítás eredménye

Cpuid (CPU azonosítás)

2. ábra A CPUID utasítás végrehajtásának eredménye

A CPUID utasítás két funkciót támogat. Az első funkciók visszaadják a processzorra vonatkozó alapvető információkat. A második készlet használatával további információkat kaphat a processzorról. A 2. ábra bemutatja, hogy milyen alapvető információkat kaphat a processzorról, és hol tárolja. A CPUID utasítás kimenete teljesen függ az EAX regiszter tartalmától. Ez azt jelenti, hogy, Azáltal, hogy különböző értékeket regiszterben EAX, majd végrehajtja a utasításokat CPUID, CPUID utasítást hajt végre egy funkciót értékétől függően, hogy került a regiszter EAX (lásd. 1. táblázat). Annak meghatározására, a maximális megengedett bemeneti érték regiszter EAX és CPUID visszatérő függvények alapvető információkat a processzor, a programnak be kell állítania az EAX regiszter paramétert nullára, majd végrehajtani CPUID utasítást a következő módon:

A CPUID utasítás végrehajtása után a visszatérési érték jelenik meg az EAX regiszterben. Mindig olyan EAX értéket használjon, amely nagyobb vagy egyenlő nullával, és kisebb vagy egyenlő a maximális megengedett EAX értékkel.

Annak meghatározására, a maximális megengedett bemeneti érték regiszter EAX és CPUID visszatérő függvények további információt program beállítása EAX regiszter paraméter értéke 80000000h majd végrehajtja CPUID utasítást a következő módon:

A CPUID utasítás végrehajtása után a visszatérési érték az EAX regiszterben lesz. Mindig használja az EAX regiszter paraméterének értékét, amely nagyobb vagy egyenlő 80000000h értékkel, és kisebb vagy egyenlő a megengedett maximális EAX értékkel. A mai és a jövőbeni IA-32 processzor 31 az EAX regiszter bit törlődik végre CPUID bemeneti paramétere nagyobb, mint a maximális érték minden adott funkciót, és amikor kiterjesztett funkciók nem támogatottak. A processzor által az EAX értékkel rendelkező CPUID utasításra válaszul küldött összes többi bittéret megfelelőbb ehhez a processzorhoz, és nem ajánlott változtatni.

Gyártói azonosító

Az EAX nyilvántartásban a maximális megengedett érték visszaadásán kívül egyidejűleg ellenőrizhető az Intel gyártói azonosítója is. Ha az EAX regiszter nulla értéket tartalmaz a bemeneten, a CPUID utasítás az EBX, EDX és ECX regiszterben is adja vissza a gyártó azonosítóját (lásd a 2. ábrát). Ezek a regiszterek tartalmazzák az ASCII stringet: GenuineIntel.

Bár az Intel architekturális szimulátor képes támogatni a CPUID utasítást, egyikük sem hivatkozhat arra, hogy az Intel valódi része. Így a GenuineIntel string jelenléte garantálja, hogy a CPUID utasítás és az azonosító az Intel processzorok és a CPUID utasítások leírását tartalmazó dokumentumnak megfelelően kerülnek végrehajtásra. Ha az ilyen sor nem jelenik meg az utasítás végrehajtása után, akkor ne támaszkodjon a dokumentumban található információkra a CPUID utasítás által visszaadott információk értelmezéséhez.

1. táblázat: A CPUID utasítás által visszaadott információk

Az EAX kezdeti értéke

Feltéve, hogy információt nyújt a processzorról

EAX, EBX, ECX, EDX A márkanév folytatása

Folyamatazonosítási aláírás

Az Intel486 processzorcsaláddal kezdődően az EDX regiszter tartalmazza a processzor azonosítási aláírását, amely a reset után jelenik meg (lásd 3. ábra). A processzor azonosítási aláírása 32 bites érték. A processzor aláírása 8 különböző bitmezőből áll. A szürke mezők tartalék bitek, és tárolni kell őket. A fennmaradó 6 mező a processzor azonosítási aláírását tartalmazza.

3. ábra EDX regiszter visszaállítás után

  • Bit 20 keresztül 27. További információk a családnak, hogy használják együtt az alap kódot család között meghatározott 8. és 11 bit jelzi, hogy a processzor tartozik Intel386, Intel486, Pentium, Pentium Pro vagy Pentium 4 család.
  • 16 és 19 bitek között. A modellel kapcsolatos további modellek, a 4. és 7. bitek között meghatározott modellszámmal együtt, a család processzor modelljének azonosítására szolgálnak. A 0 és 3 közötti bitek azonosítója a modell revíziószámát jelöli.
  • 12-13. Bitek. A processzor típusára vonatkozó információ jelzi, hogy a processzor az eredeti processzor, OEM, OverDrive vagy dual (Dual). A 12. és 13. bitben az EAX regiszterből visszajuttatott processzor típusú értékeket a 2. táblázatban mutatjuk be.
  • Bits 8-11. A processzorcsalád fő kódja
  • Bits 4-7 processzor család modell
  • 0-tól 3-ig terjedő bitek. Modell revízió száma

2. táblázat: Processzor típusok (12. és 13. bit)

Zászlók és jellemzők

Ha az EAX regiszter 1 értéket tartalmaz, a CPUID utasítás (a processzor aláírását az EAX regiszterben) betölti az EDX és az ECX regisztert a zászlók értékével. A zászló értékek (amikor a Flag = 1) jelzik, hogy melyik processzort támogatja. A processzor által támogatott funkciók megismeréséhez keresse fel a fejlesztői útmutatót, a felhasználókat vagy más megfelelő processzordokumentációt.

Gyorsítótár méret, formátum és TLB információk

Ha az EAX regiszter 2 értéket tartalmaz, a CPUID utasítás betölti az EAX, EBX, ECX és EDX regisztereket a processzor cache- és TLB-jellemzőit jelző leírókkal. Az EAX regiszter (AL) utolsó 8 bitje tartalmaz egy értéket, amely jelzi, hogy hányszor kell a CPUID utasítást végrehajtani, hogy teljes képet kapjon a processzor gyorsítótárazó rendszeréről. Például, Pentium 4 processzor értéket ad vissza 1 az utolsó 8 bit az EAX regiszter, hogy jelezze, hogy a CPUID utasítást végre kell hajtani egyszer (EAX = 2), hogy így megkapjuk a teljes képet processzor konfigurációs.

A többi EAX regiszter, az EBX, az ECX és az EDX regiszter tartalmazza a gyorsítótárat és a TLB-leíróit. A 3. táblázat azt mutatja, hogy ha ez a regiszter 31 bit nulla, akkor ez a regiszter érvényes 8 bites leíró tulajdonságokat tartalmaz. A deszkriptorok dekódolásához a regiszter legjelentősebb bájtjától kezdve a regiszter legkevesebb bájtjáig haladjon. Feltételezve, hogy 31 bit értéke 0, akkor a nyilvántartás tartalmaz érvényes cache vagy a TLB leíró bitek 24-31, 16-23, 8-15, és 0 7. A program össze kell hasonlítania az értéket a végén kicsit a deszkriptek mezői, amelyek a dekriptort dekódolják, és így meghatározzák a processzor gyorsítótárát és TLB-jellemzőit.

3. táblázat: Leíró formátumok

Fenntartható későbbi felhasználásra

Olyan jellemzők, amelyek a tábla paraméterére mutatnak, hogy meghatározzák a gyorsítótár jellemzőit. NULL értéket jelez, ha 0-t tartalmaz

Processzor sorozatszám

A processzor sorozatszáma kiterjeszti a processzor azonosításának fogalmát. A processzor sorozatszáma egy 96 bites szám, amely a CPUID utasításon keresztül érhető el. Az alkalmazások a processzor azonosításához használhatók.

CPU sorozatszám

Annak megállapításához, hogy támogatja-e a processzor sorozatszámának felismerési funkcióját, a programnak az EAX regiszter paraméter értékét 1-re kell állítania, majd hajtsa végre a CPUID utasítást az alábbiak szerint:

A CPUID utasítás végrehajtása után az ECX és EDX regiszterek jellemzőket és zászlókat tartalmaznak. Ha a PSN zászló (az EDX regiszter 18. bitje) 1, a processzor sorozatszámát támogatja és engedélyezi. 0-nál, vagy ki van kapcsolva, vagy nem támogatja.

96 bites sorszám létrehozása

A 96 bites processzor sorozatszám három 32 bites objektum kombinációjából áll. A régebbi 32 bites bitek eléréséhez a programnak az EAX regiszter paramétert 1-re kell állítania, majd hajtsa végre az utasításokat az alábbiak szerint:

A végrehajtás után az EAX regiszter tartalmazza a processzor azonosítási aláírását. Magában foglalja a processzor sorozatszámának legmagasabb 32 bites bitjeit. Az EAX értékét meg kell őrizni, amíg a sorozatszám fennmaradó 64 bájtjait összegyűjtik.

Ezek eléréséhez a programnak az EAX regiszter paramétert 3-ra kell állítania, majd hajtsa végre a CPUID utasítást:

A CPUID utasítás végrehajtása után az EDX regiszter átlagosan 32 bitet tartalmaz, és az ECX regiszter a sorozatszám legkevesebb 32 bites részét tartalmazza. Ezután a program csatlakoztathatja a tárolt azonosító aláírást, az EDX-t és az ECX-t, majd visszaadhatja a processzor teljes 96-bites sorozatszámát. [2]

A processzor azonosítása

Kezdve a Pentium 3 processzorokkal, a processzor azonosításának koncepcióját kiterjesztették speciális azonosítószámmal. Ez egy 8 bites szám a CPUID utasításon keresztül érhető el. Alkalmazásokkal használható a processzor azonosításának megkönnyítésére.

A feldolgozók, amelyek a helyiség, vissza a bitek 0 és 7 az EBX regiszter, amikor a CPUID végzett kiindulási értéke 1 EAX regiszter. A feldolgozók, amelyek nem támogatják ezt a számot, visszatér a nulla ugyanabban bites regiszter EBX.

Az azonosítási karakterlánc

Ez a vonal a CPUID utasítás új kiterjesztése, amely egyes processzorokban megvalósul. Ezzel a processzorokkal a processzorok ezt az azonosító karakterláncot visszaadják ASCII kódolásban és a maximális működési frekvencián a CPUID utasításon keresztül. Amikor az utasítás végrehajtódik a 4. táblázatban megadott EAX regiszter értékekkei, a processzor visszaadja ezt a karakterláncot az általános célú regiszterekben. [3]

4. táblázat: A processzor azonosítási karakterláncának jellemzői

Input EAX

Az EAX, az EBX, az ECX, az EDX ASCII karakterláncot tartalmaz

A processzor azonosításának sorrendje

A processzor CPUID utasítás használatával történő azonosításához a programnak a következő sorrendet kell követnie:

  1. 1. lépés: Határozza meg, hogy támogatja-e a CPUID utasítást az ID-jelző módosítása az EFLAGS regiszterben. Ha nem tudja megváltoztatni, akkor nem támogatott.
  2. 2. lépés: Kövesse az utasításokat az értéket EAX 80000000h. Ezt meg kell tenni annak érdekében, hogy meghatározzák, hogy az azonosító string támogatott. Ha a függvény értéke nagyobb, mint 80000000h, azonosító string támogatott, és a program kell használni a funkciókat 80000002h hogy 80000004h a további azonosítására.
  3. 3. lépés Ha az azonosítási karakterlánc nem támogatott, hajtsa végre az EAX regiszterben 1 értékű CPUID-t. Ez a funkció egy azonosító aláírást ad vissza az EAX regiszterhez, és egy olyan számot, amely segíti az EBX regiszter 0 - 7 bitjeinek azonosítását. Ha 0-tól eltérő értéket tartalmaznak, akkor a szám támogatott. Ebben az esetben a programnak be kell szkennelnie a számok azonosítását.
  4. 4. lépés Ha a szám nem támogatott, a program az azonosítási azonosítót és a gyorsítótár-fogantyúkat azonosítja.