معرف وحدة المعالجة المركزية
في بنية x86 ، تُعدّ تعليمة CPUID (المُعرّفة برمز CPUIDالعملية ) تعليمة تكميلية للمعالج (اسمها مُشتق من " تحديد وحدة المعالجة المركزية ")، تسمح للبرامج باكتشاف تفاصيل المعالج. وقد قدمتها شركة إنتل عام 1993 مع إطلاق معالجات بنتيوم ومعالجات 486 المتأخرة . [ 1 ]
يمكن للبرنامج استخدام ذلك CPUIDلتحديد نوع المعالج وما إذا كانت ميزات مثل MMX / SSE مطبقة.
تاريخ
قبل إتاحة هذه CPUIDالتعليمات للجميع، كان المبرمجون يكتبون شفرة آلية معقدة تستغل اختلافات طفيفة في سلوك وحدة المعالجة المركزية لتحديد نوع المعالج وطرازه. [ 2 ] [ 3 ] [ 4 ] [ 5 ] مع ظهور معالج 80386، أشارت تعليمات EDX عند إعادة التشغيل إلى رقم المراجعة، ولكن لم يكن بالإمكان قراءة هذه القيمة إلا بعد إعادة التشغيل، ولم تكن هناك طريقة قياسية للتطبيقات لقراءتها.
خارج عائلة x86، لا يزال يتعين على المطورين في الغالب استخدام عمليات غامضة (تتضمن توقيت التعليمات أو مشغلات أعطال وحدة المعالجة المركزية) لتحديد الاختلافات الموجودة في تصميم وحدة المعالجة المركزية.
على سبيل المثال، في سلسلة معالجات موتورولا 68000 - التي لم تكن تحتوي على CPUIDأي نوع من التعليمات - تطلبت بعض التعليمات المحددة صلاحيات إضافية. ويمكن استخدام هذه الصلاحيات للتمييز بين أفراد عائلة المعالجات المختلفة. في معالج موتورولا 68010، أصبحت تعليمة MOVE from SR ذات صلاحيات إضافية. ولأن معالج 68000 كان يوفر تعليمة MOVE from SR بدون صلاحيات إضافية، فقد أمكن التمييز بين المعالجين المختلفين من خلال حدوث خطأ في المعالج.
على الرغم من أن CPUIDالتعليمات خاصة ببنية x86، إلا أن البنى الأخرى (مثل ARM) غالبًا ما توفر سجلات على الشريحة يمكن قراءتها بطرق محددة للحصول على نفس أنواع المعلومات التي توفرها CPUIDتعليمات x86.
استدعاء CPUID
رمز العملية CPUIDهو 0F A2. يمكن اكتشاف دعم المعالج للتعليمات عن طريق تبديل علامة المعرف (البت 21) بنجاح في سجل EFLAGS .
في لغة التجميع ، CPUIDلا تتطلب هذه التعليمة أي معلمات، إذ CPUIDتستخدم ضمنيًا سجل EAX لتحديد الفئة الرئيسية للمعلومات المُعادة. في مصطلحات إنتل الحديثة، يُطلق على هذا اسم "ورقة CPUID". CPUIDيجب استدعاء هذه التعليمة EAX = 0أولًا، لأن ذلك سيخزن في سجل EAX أعلى معلمة استدعاء (ورقة) EAX التي يُنفذها المعالج.
للحصول على معلومات إضافية عن الوظيفة، CPUIDيجب استدعاء الدالة مع ضبط البت الأكثر أهمية في سجل EAX. لتحديد أعلى قيمة لمعامل استدعاء الوظيفة الإضافية، استدعِ الدالة CPUIDمع EAX = 80000000h.
لا يمكن الوصول إلى أجزاء CPUID التي يزيد حجمها عن 3 ويقل عن 80000000 إلا عندما تكون قيمة البت 22 في سجلات الطراز IA32_MISC_ENABLE.BOOT_NT4 تساوي 0 (وهي القيمة الافتراضية). وكما يوحي الاسم، لم يكن نظام التشغيل Windows NT 4.0 يعمل بشكل صحيح حتى إصدار SP6 إلا إذا تم ضبط هذا البت، [ 6 ] ولكن الإصدارات الأحدث من Windows لا تحتاج إليه، لذا يُفترض أن الأجزاء الأساسية التي يزيد حجمها عن 4 مرئية على أنظمة Windows الحالية. اعتبارًا من أبريل 2024، تصل مدة الإجازات الأساسية الصالحة إلى 23 ساعة، ولكن المعلومات التي يتم إرجاعها بواسطة بعض الإجازات لا يتم الكشف عنها في الوثائق المتاحة للجمهور، أي أنها "محجوزة".
بعض الأوراق المضافة حديثًا لها أيضًا أوراق فرعية، والتي يتم اختيارها عبر سجل ECX قبل الاتصال CPUID.
EAX=0: أعلى معلمة وظيفية ومعرف الشركة المصنعة
يُعيد هذا الأمر سلسلة تعريف الشركة المصنعة لوحدة المعالجة المركزية - وهي سلسلة ASCII مكونة من اثني عشر حرفًا مخزنة في EBX وEDX وECX (بهذا الترتيب). ويُعاد أعلى مُعامل استدعاء أساسي (أكبر قيمة يمكن ضبط EAX عليها قبل الاستدعاء ) في EAX. CPUID
فيما يلي قائمة بالمعالجات وأعلى وظيفة تم تنفيذها.
| المعالجات | أساسي | ممتد |
|---|---|---|
| معالج Intel 486 السابق | لم يتم تنفيذ CPUID | |
| لاحقًا Intel 486 و Pentium | 0x01 | لم يتم التنفيذ |
| بنتيوم برو ، بنتيوم 2 ، وسيليرون | 0x02 | لم يتم التنفيذ |
| بنتيوم 3 | 0x03 | لم يتم التنفيذ |
| بنتيوم 4 | 0x02 | 0x8000 0004 |
| زيون | 0x02 | 0x8000 0004 |
| بنتيوم إم | 0x02 | 0x8000 0004 |
| معالج بنتيوم 4 بتقنية تعدد الخيوط المتزامنة | 0x05 | 0x8000 0008 |
| بنتيوم دي (8xx) | 0x05 | 0x8000 0008 |
| بنتيوم دي (9xx) | 0x06 | 0x8000 0008 |
| الثنائي الأساسي | 0x0A | 0x8000 0008 |
| Core 2 Duo | 0x0A | 0x8000 0008 |
| معالجات Xeon 3000 و 5100 و 5200 و 5300 و 5400 ( سلسلة 5000 ) | 0x0A | 0x8000 0008 |
| سلسلة Core 2 Duo 8000 | 0x0D | 0x8000 0008 |
| سلسلة Xeon 5200 و 5400 | 0x0A | 0x8000 0008 |
| الذرة | 0x0A | 0x8000 0008 |
| المعالجات القائمة على معمارية Nehalem | 0x0B | 0x8000 0008 |
| معالجات Ivy Bridge | 0x0D | 0x8000 0008 |
| معالجات مبنية على معمارية Skylake (تردد المعالج الأساسي والأقصى؛ تردد مرجعي للناقل) | 0x16 | 0x8000 0008 |
| تعداد سمات مورد النظام على شريحة - الورقة الرئيسية | 0x17 | 0x8000 0008 |
| معالجات مبنية على Meteor Lake | 0x23 | 0x8000 0008 |
فيما يلي سلاسل تعريفية تستخدمها المعالجات الفعلية، مرتبة حسب تاريخ ظهورها:
"GenuineIntel"– إنتل"UMC UMC UMC "– المركز الطبي الجامعي"AuthenticAMD"– AMD"CyrixInstead"– Cyrix – مرخصة أيضًا من قبل STMicroelectronics و IBM"NexGenDriven"– الجيل القادم"CentaurHauls"– سنتور – مملوكة لشركة IDT ، ثم لشركة VIA ، ثم لشركة Zhaoxin"RiseRiseRise"- يعلو"SiS SiS SiS "– سيس (رايز سابقاً)"GenuineTMx86"– ترانسميتا – مستخدمة في ورقة CPUID القياسية 0000_0000h، للتوافق مع Intel"TransmetaCPU"– ترانسميتا – مستخدمة في وحدة المعالجة المركزية الموسعة (CPUID) Leaf 8000_0000h و Leaf 8086_0000h"Geode by NSC"– شركة ناشيونال سيمي داكتور – استحوذت عليها شركة AMD"Vortex86 SoC"– DM&P Vortex86 (ex-SiS)"Genuine RDC"– شركة RDC لأشباه الموصلات المحدودة [ 7 ] (سابقًا SiS)"HygonGenuine"– هيجون (من سلالة AMD Zen)" Shanghai "– تشاوكسين (سلالة قنطور إشعياء)"GenuineIotel"– إنتل – نادر – من المحتمل أن يكون سببه خطأ بت واحد – تقرير كامل واحد + عدد قليل من التقارير الجزئية [ 8 ] [ 9 ]
فيما يلي سلاسل تعريفية يُرجح أنها مزيفة:
- يُشار إليها أحيانًا، ولكن لم يتم رصد أي معالج VIA بهذه السلسلة على الإطلاق"VIA VIA VIA "- يُشار إليها أحيانًا، ولكن لم يتم رصد أي معالج AMD بهذه السلسلة على الإطلاق"AMDisbetter!"- كثيرًا ما يُستشهد به [ 10 ] [ 11 ] ، ولكن لم يُرصد أي معالج AMD K5 بهذه السلسلة على الإطلاق؛ على وجه الخصوص، حتى أول معالج K5 يحمل اسم العائلة/الطراز/الخطوة 500h تم شحنه مع"AMD ISBETTER""AuthenticAMD"
فيما يلي سلاسل تعريفية تستخدمها أنوية المعالجات البرمجية مفتوحة المصدر :
"GenuineAO486"– معالج ao486 (قديم) [ 12 ] [ 13 ]"MiSTer AO486"– معالج ao486 (جديد) [ 14 ] [ 13 ]"GenuineIntel"– النواة v586 [ 15 ] (هذا مطابق لسلسلة معرف Intel)
فيما يلي سلاسل المعرفات التي تستخدمها الأجهزة الافتراضية:
- (مجموعة متنوعة من السلاسل) – معالج MCST Elbrus e2k عند تشغيل برنامج الترجمة الثنائية الديناميكية [ 16 ]
"E2K MACHINE "– السلاسل غير متناسقة – بعضها (وليس كلها) تشفر نوع اللوحة الأم"E8C-SWTX "– من غير المعروف ما إذا كانت لوحات مفاتيح DBT SW تحتوي على مسافات لاحقة أو أحرف \0 لاحقة"EL2S4 ""Elbrus-MCST ""MBE1C-PC ""MBE8C-PC v.2""MONOCUB "
"ConnectixCPU"– برنامج Connectix Virtual PC (الإصدار 6 وما دونه) [ 17 ] [ 18 ]"Virtual CPU "– مايكروسوفت فيرتشوال بي سي 7؛ [ 18 ] مايكروسوفت x86-to-ARM (32 بت x86) [ 19 ]"AuthenticAMD"– مايكروسوفت x86-to-ARM (64 بت x86) [ 19 ]"GenuineIntel"– أبل روزيتا 2 [ 20 ]"Insignia 586"– Insignia RealPC [ 21 ] [ 22 ] و SoftWindows 98 [ 23 ]"Compaq FX!32"– Compaq FX!32 (محاكي x86 لمعالجات DEC Alpha ) [ 24 ]"Neko Project"– مشروع نيكو الثاني ( محاكي PC-98 ) (يستخدم عندما يتم ضبط وحدة المعالجة المركزية المراد محاكاتها على "معالج نيكو الثاني") [ 25 ] [ 26 ]
على سبيل المثال، في GenuineIntelالمعالج، تكون القيم المُعادة في EBX هي 0x756e6547، وEDX هي ، 0x49656e69وECX هي 0x6c65746e. يعرض مثال الكود التالي سلسلة مُعرّف المورّد بالإضافة إلى أعلى مُعامل استدعاء تُنفّذه وحدة المعالجة المركزية.
.intel_syntax noprefix.نص.m0: .string "CPUID: %x\n".m1: .string "أكبر عدد من الدوال الأساسية التي تم تنفيذها: %i\n".m2: .string "معرف المورد: %s\n".globl mainرئيسي:اضغط على R12mov eax , 1sub rsp , 16cpuidlea rdi , .m0 [ rip ]mov esi , eaxاستدعاء دالة printfxor eax , eaxcpuidlea rdi , .m1 [ rip ]mov esi , eaxmov r12d , edxmov ebp , ecxاستدعاء دالة printfmov 3 [ rsp ], ebxlea rsi , 3 [ rsp ]lea rdi , .m2 [ rip ]mov 7 [ rsp ], r12dmov 11 [ rsp ], ebpاستدعاء دالة printfأضف rsp ، 16بوب آر 12ريت.section .note.GNU - stack , "" , @ progbitsفي بعض المعالجات، يُمكن تعديل سلسلة مُعرّف المُصنِّع (MSR) المُبلغ عنها بواسطة CPUID.(EAX=0) عن طريق كتابة سلسلة مُعرّف جديدة في سجلات خاصة بالطراز (MSRs ) باستخدام WRMSRالتعليمة. وقد استُخدمت هذه الطريقة في معالجات غير تابعة لشركة إنتل لتمكين ميزات وتحسينات مُعطَّلة برمجياً لوحدات المعالجة المركزية التي لا تُعيد GenuineIntelسلسلة المُعرّف. [ 27 ] ومن المعالجات المعروفة بامتلاكها لهذه السجلات:
| المعالج | MSRs |
|---|---|
| برنامج IDT WinChip | 108h-109h[ 28 ] |
| عبر C3 ، C7 | 1108h-1109h[ 29 ] |
| VIA Nano | 1206h-1207h[ 30 ] |
| ترانسميتا كروزو ، إيفيسيون | 80860001h-80860003h[ 31 ] [ 32 ] |
| AMD Geode GX، LX | 3000h-3001h[ 33 ] |
| DM&P Vortex86 EX2 | 52444300h-52444301h[ 34 ] |
EAX=1: معلومات المعالج وبتات الميزات
يُعيد هذا معلومات خطوة المعالج ، وطرازه، واسمه الرمزي ، وعائلته في السجل EAX (يُسمى أيضًا توقيع المعالج)، وعلامات الميزات في السجلين EDX وECX، ومعلومات إضافية عن الميزات في السجل EBX. [ 35 ]
| إي إيه إكس | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| محجوز | هوية العائلة الممتدة | معرف النموذج الموسع | محجوز | نوع المعالج | هوية العائلة | نموذج | معرف الخطوة | ||||||||||||||||||||||||
- رقم تعريف الخطوة هو رقم مراجعة المنتج الذي تم تعيينه بسبب تصحيح الأخطاء أو التغييرات الأخرى.
- يُستخلص نموذج المعالج الفعلي من حقول النموذج، ومعرّف النموذج الموسّع، ومعرّف العائلة. إذا كان حقل معرّف العائلة يساوي 6 أو 15، فإن النموذج يساوي مجموع حقل معرّف النموذج الموسّع مُزاحًا إلى اليسار بمقدار 4 بتات وحقل النموذج. وإلا، فإن النموذج يساوي قيمة حقل النموذج.
- تُستمد عائلة المعالج الفعلية من حقلي "معرّف العائلة" و"معرّف العائلة الموسّع". إذا كان حقل "معرّف العائلة" يساوي 15، فإن العائلة تساوي مجموع حقلي "معرّف العائلة الموسّع" و"معرّف العائلة". وإلا، فإن العائلة تساوي قيمة حقل "معرّف العائلة".
- يُوضح الجدول أدناه معنى حقل نوع المعالج.
| يكتب | التشفير بالثنائي |
|---|---|
| معالج من الشركة المصنعة للمعدات الأصلية ( OEM ) | ٠٠ |
| معالج Intel Overdrive | 01 |
| معالج مزدوج (ينطبق على معالجات Intel P5 Pentium فقط) [ 36 ] | 10 |
| القيمة المحجوزة | 11 |
اعتبارًا من أكتوبر 2023، تم التعرف على معرفات عائلة معالجات x86 التالية: [ 37 ]
| هوية العائلة + هوية العائلة الممتدة | إنتل | AMD | آخر | |
|---|---|---|---|---|
| عرافة | ديسمبر | |||
0h | 0 | غير متوفر | غير متوفر | غير متوفر |
1h | 1 | غير متوفر | غير متوفر | غير متوفر |
2h | 2 | غير متوفر | غير متوفر | غير متوفر |
3h | 3 | [ أ ] | غير متوفر | غير متوفر |
4h | 4 | 486 | 486 ، [ 38 ] 5x86 ، Élan SC4xx/5xx [ 39 ] | Cyrix 5x86 ، [ 40 ] Cyrix MediaGX ، [ 41 ] UMC Green CPU ، [ 4 ] MCST Elbrus (معظم الطرازات)، [ 16 ] MiSTer ao486 [ 42 ] |
5h | 5 | بنتيوم ، بنتيوم إم إم إكس ، كوارك إكس 1000 | K5 ، K6 | Cyrix 6x86 ، Cyrix MediaGXm ، [ 41 ] Geode (باستثناء NX)، NexGen Nx586، [ 4 ] IDT WinChip ، IDT WinChip 2، IDT WinChip 3، Transmeta Crusoe ، Rise mP6 ، SiS 550، DM&P Vortex86 (الإصدار المبكر)، [ 43 ] RDC IAD 100، MCST Elbrus-8C2 [ 16 ] |
6h | 6 | بنتيوم برو ، بنتيوم 2 ، بنتيوم 3 ، بنتيوم إم ، إنتل كور (جميع الإصدارات)، إنتل أتوم (جميع الإصدارات)، زيون (باستثناء إصدارات نتبرست )، زيون فاي (باستثناء KNC) | K7: أثلون ، أثلون إكس بي | Cyrix 6x86 MX/MII، VIA C3 ، VIA C7 ، VIA Nano ، DM&P Vortex86 (DX3،EX2 [ 44 ] )، Zhaoxin ZX-A/B/C/C+، ( Centaur CNS [ 45 ] )، MCST Elbrus-12C/16C/2C3 [ 16 ] |
7h | 7 | إيتانيوم (في وضع IA-32) | غير متوفر | تشاوكسين كايشيان، تشاوكسين كايشينغ |
8h | 8 | [ ب ] | غير متوفر | غير متوفر |
9h | 9 | غير متوفر | غير متوفر | غير متوفر |
0Ah | 10 | غير متوفر | غير متوفر | غير متوفر |
0Bh | 11 | زيون فاي (ركن الفرسان) [ 47 ] | غير متوفر | غير متوفر |
0Ch | 12 | غير متوفر | غير متوفر | غير متوفر |
0Dh | 13 | غير متوفر | غير متوفر | غير متوفر |
0Eh | 14 | غير متوفر | غير متوفر | غير متوفر |
0Fh | 15 | نت بيرست (بنتيوم 4) | K8/Hammer ( Athlon 64 ) | ترانسميتا إيفيسيون |
10h | 16 | غير متوفر | K10 : فينوم | غير متوفر |
11h | 17 | إيتانيوم 2 [ 48 ] (في وضع IA-32) | توريون إكس 2 | غير متوفر |
12h | 18 | معالجات Intel Core (Nova Lake وما فوق) [ 49 ] | يانو | غير متوفر |
13h | 19 | زيون (بانثر كوف وما فوق) [ 50 ] | غير متوفر | غير متوفر |
14h | 20 | غير متوفر | الوشق | غير متوفر |
15h | 21 | غير متوفر | الجرافة ، آلة دق الركائز ، المدحلة البخارية ، الحفارة | غير متوفر |
16h | 22 | غير متوفر | جاكوار ، بوما | غير متوفر |
17h | 23 | غير متوفر | زين 1 ، زين 2 | غير متوفر |
18h | 24 | غير متوفر | هيجون ديانا | |
19h | 25 | غير متوفر | زين 3 ، زين 4 | غير متوفر |
1Ah | 26 | غير متوفر | زين 5 ، ( زين 6 ) | غير متوفر |
| أجزاء | EBX | صالح |
|---|---|---|
| 7:0 | مؤشر العلامة التجارية | |
| 15:8 | CLFLUSHحجم السطر (القيمة * 8 = حجم سطر ذاكرة التخزين المؤقت بالبايت) | إذا CLFLUSHتم تعيين علامة الميزة. CPUID.01.EDX.CLFSH [bit 19]= 1 |
| 23:16 | الحد الأقصى لعدد المعرفات القابلة للعنونة للمعالجات المنطقية في هذه الحزمة المادية؛ أقرب عدد صحيح من قوى العدد 2 لا يقل عن هذه القيمة هو عدد معرّفات APIC الأولية الفريدة المحجوزة لعنونة المعالجات المنطقية المختلفة في حزمة مادية. [ أ ] الاستخدام السابق: عدد المعالجات المنطقية لكل معالج فعلي؛ اثنان لمعالج بنتيوم 4 بتقنية Hyper-Threading. [ 53 ] | إذا تم تعيين علامة ميزة Hyper-threading . CPUID.01.EDX.HTT [البت 28] = 1 |
| 31:24 | معرّف APIC المحلي: يُستخدم معرّف APIC الأولي لتحديد المعالج المنطقي المُنفِّذ. [ ب ] | معالجات بنتيوم 4 والمعالجات اللاحقة. |
- ↑ في وحدات المعالجة المركزية التي تحتوي على أكثر من 128 معالجًا منطقيًا في حزمة واحدة (مثل Intel Xeon Phi 7290 [ 51 ] و AMD Threadripper Pro 7995WX [ 52 ] ) يتم تعيين القيمة في البت 23:16 إلى قيمة غير قوة للعدد 2.
- ↑ يمكن أيضًا تحديد مُعرّف APIC المحلي عبر ورقة cpuid 0Bh (CPUID.0Bh.EDX[x2APIC-ID]). في وحدات المعالجة المركزية التي تحتوي على أكثر من 256 معالجًا منطقيًا في حزمة واحدة (مثل Xeon Phi 7290)، يجب استخدام ورقة 0Bh لأن مُعرّف APIC لا يتسع في 8 بتات.
معلومات المعالج وعلامات الميزات خاصة بالشركة المصنعة، ولكن عادةً ما يتم استخدام قيم Intel من قبل الشركات المصنعة الأخرى من أجل التوافق.
| قليل | EDX | ECX [ أ ] | قليل | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 0 | وحدة معالجة مركزية | وحدة معالجة الفاصلة العائمة x87 المدمجة | sse3 | SSE3 ( تعليمات بريسكوت الجديدة - PNI) | 0 | |
| 1 | vme | امتدادات وضع 8086 الافتراضي (مثل VIF وVIP وPVI) | pclmulqdq | PCLMULQDQ(تعليمات الضرب بدون حمل) | 1 | |
| 2 | دي | ملحقات تصحيح الأخطاء ( CR4 بت 3) | dtes64 | مخزن تصحيح الأخطاء 64 بت (بت edx 21) | 2 | |
| 3 | pse | امتداد حجم الصفحة (صفحات بحجم 4 ميجابايت) | شاشة | MONITORوالتعليمات MWAIT( PNI ) | 3 | |
| 4 | tsc | RDTSCعداد الطوابع الزمنية والتعليمات | ds-cpl | مخزن تصحيح الأخطاء المؤهل CPL | 4 | |
| 5 | msr | سجلات وتعليمات RDMSRخاصة بالنموذجWRMSR | vmx | ملحقات الآلة الافتراضية | 5 | |
| 6 | pae | امتداد العنوان الفعلي | smx | إضافات الوضع الآمن ( لاغراند ) ( GETSECتعليمات) | 6 | |
| 7 | mce | استثناء فحص الجهاز | EST | خطوة السرعة المحسّنة | 7 | |
| 8 | cx8 [ b ] | CMPXCHG8Bتعليمات ( المقارنة والتبديل ) | tm2 | جهاز مراقبة الحرارة 2 | 8 | |
| 9 | apic [ c ] | وحدة تحكم متقدمة قابلة للبرمجة للمقاطعات مدمجة | ssse3 | تعليمات إضافية خاصة بـ SSE3 | 9 | |
| 10 | (mtrr) [ d ] | (محجوز) | معرف cnxt | معرف السياق L1 | 10 | |
| 11 | sep [ e ] | SYSENTERوتعليمات سريعة SYSEXITلإجراء المكالمات النظامية | sdbg | واجهة تصحيح الأخطاء السيليكونية | 11 | |
| 12 | متر | نطاق أنواع الذاكرة [ f ] | fma | الضرب والجمع المدمج (FMA3) | 12 | |
| 13 | صفحة | تفعيل بت الصفحة العامة في CR4 | cx16 | CMPXCHG16Bالتعليمات [ g ] | 13 | |
| 14 | إم سي إيه | بنية فحص الآلة | xtpr | يمكن تعطيل إرسال رسائل أولوية المهام | 14 | |
| 15 | cmov | الحركة المشروطة :CMOV ، FCMOVوالتعليمات [FCOMI ح ] | pdcm | إمكانية مراقبة الأداء وتصحيح الأخطاء | 15 | |
| 16 | بات | جدول سمات الصفحة | (محجوز) [ i ] | 16 | ||
| 17 | pse-36 | امتداد حجم الصفحة 36 بت | مرض عنق الرحم | معرفات سياق العملية ( CR4 بت 17) | 17 | |
| 18 | شبكة بلاي ستيشن | رقم المعالج التسلسلي مدعوم ومفعل [ j ] | دي سي إيه | الوصول المباشر إلى ذاكرة التخزين المؤقت لعمليات الكتابة DMA [ 64 ] [ 65 ] | 18 | |
| 19 | سمك القاروص | CLFLUSHتعليمات مسح سطر ذاكرة التخزين المؤقت ( SSE2 ) | sse4.1 | تعليمات SSE4.1 | 19 | |
| 20 | (nx) | بت عدم التنفيذ (NX) ( خاص بمعالجات إيتانيوم فقط، محجوز في المعالجات الأخرى) [ 66 ] [ k ] | sse4.2 | تعليمات SSE4.2 | 20 | |
| 21 | ds | مخزن التصحيح: حفظ تتبع القفزات المنفذة | x2apic | x2APIC (APIC المحسّن) | 21 | |
| 22 | ACPI | نظام التحكم الحراري المدمج في أجهزة قياس الحرارة المنصهرة (MSRs) لأنظمة ACPI | موفبي | MOVBEالتعليمات ( الترتيب الكبير للنهاية ) | 22 | |
| 23 | mmx | تعليمات MMX (64 بت SIMD) | نسبة السكان | POPCNTتعليمات | 23 | |
| 24 | fxsr | FXSAVE، FXRSTORالتعليمات، CR4 بت 9 | الموعد النهائي لـ tsc | تُنفذ APIC عملية لمرة واحدة باستخدام قيمة مهلة TSC | 24 | |
| 25 | sse | تعليمات امتدادات SIMD المتدفقة (SSE) (المعروفة أيضًا باسم " تعليمات Katmai الجديدة"؛ SIMD 128 بت) | aes-ni | مجموعة تعليمات AES | 25 | |
| 26 | sse2 | تعليمات SSE2 | xsave | حفظ/استعادة حالة المعالج القابلة للتوسيع: XSAVE، XRSTOR، XSETBV، XGETBVالتعليمات | 26 | |
| 27 | ss | تُنفذ ذاكرة التخزين المؤقت لوحدة المعالجة المركزية خاصية التجسس الذاتي | osxsave | XSAVEتم تمكينه بواسطة نظام التشغيل | 27 | |
| 28 | htt | حقل معرفات APIC الأقصى المحجوز صالح [ l ] | avx | امتدادات المتجهات المتقدمة (SIMD 256 بت) | 28 | |
| 29 | ™ | يقوم جهاز مراقبة الحرارة بضبط درجة الحرارة تلقائيًا | إف 16 سي | تعليمات تحويل الفاصلة العائمة من وإلى تنسيق FP16 | 29 | |
| 30 | ia64 | معالج IA64 يحاكي x86 [ 66 ] | rdrnd | RDRANDميزة (مولد الأرقام العشوائية على الشريحة) | 30 | |
| 31 | pbe | إمكانية التنبيه في وضع الإيقاف المؤقت (PBE# pin) | برنامج إدارة الأجهزة الافتراضية | وجود برنامج إدارة الأجهزة الافتراضية (دائمًا ما تكون قيمته صفرًا على وحدات المعالجة المركزية الفعلية) [ 69 ] [ 70 ] [ 71 ] | 31 | |
- في بعض المعالجات القديمة، قد يؤدي تنفيذ البرنامج باستخدام فهرس طرفي (EAX) أكبر من صفر إلى ترك قيمتي EBX وECX دون تغيير، محتفظتين بقيمهما القديمة. لذا ، يُنصح بتصفير قيمتي EBX وECX قبل تنفيذ البرنامجباستخدام فهرس طرفي يساوي 1.
CPUIDCPUIDتشمل المعالجات التي لوحظ أنها تُظهر هذا السلوك Cyrix MII [ 54 ] و IDT WinChip 2. [ 55 ]
- ↑ في معالجات IDT وTransmeta وRise (معرفات الموردين
CentaurHaulsو)،تكون التعليمات مدعومة دائمًا، ولكن قد لا يتم ضبط بت الميزة الخاص بها. هذا حل بديل لخلل في نظام التشغيل Windows NTGenuineTMx86. [ 56 ]RiseRiseRiseCMPXCHG8B - ↑ في معالجات AMD K5 المبكرة (
AuthenticAMDالعائلة 5، الطراز 0) فقط، كانت البتة 9 من EDX تشير إلى دعم PGE. تم نقلها إلى البتة 13 بدءًا من طراز K5 1 فصاعدًا. [ 57 ] - ↑ Intel AP-485، المراجعات 006 [ 58 ] إلى 008، تسرد CPUID.(EAX=1):EDX[bit 10] باسم "MTRR" (على الرغم من وصفها بأنها "محجوزة" / "لا تعتمد على قيمتها") - تمت إزالة هذا الاسم في المراجعات اللاحقة من AP-485، وتم إدراج البت على أنه محجوز بدون اسم منذ ذلك الحين.
- ↑ في معالجات Pentium Pro (
GenuineIntelالعائلة 6، الطراز 1) فقط، يكون البت 11 في EDX غير صالح - يتم تعيين البت، ولكنSYSENTERالتعليماتSYSEXITغير مدعومة على Pentium Pro. [ 59 ] - ↑ بالنسبة لسجلات MTRR، لا تتوفر معلومات إضافية عن الميزات عبر CPUID، بل عبر سجل MSR للقراءة فقط
MTRRCAP(MSR0FEh). يتميز سجل MSR هذا بالتخطيط التالي:أجزاء الاستخدام 7:0 عدد معدلات MTRR ذات النطاق المتغير 8 يدعم نطاق MTRR الثابت 9 (محجوز) 10 يدعم نوع الذاكرة Write-Combining 11 يدعم نظام إدارة النطاقات (SMRR) 12 يدعم PRMRR (سجل نطاق الذاكرة المحجوزة للمعالج، وهو جزء من SGX ). 13 يدعم SMRR2 [ 60 ] 14 يدعم قفل SMRR 15 تم دعم SEAMRR (سجل نطاق وضع التحكيم الآمن، جزء من TDX ) [ 61 ] 63:16 (محجوز) - ↑ تحتوي بعض معالجات Intel 64 المبكرة جدًا على
CMPXCHG16Bبت الميزة مضبوطًا على الرغم من أنها لا تدعم التعليمات - ينطبق هذا علىرقائقGenuineIntelFamily Model 3 Stepping 4 (90nm Pentium 4) فقط. [ 62 ]0Fh - ↑
FCMOVوالتعليماتFCOMIمتاحة فقط في حالة وجود وحدة معالجة الفاصلة العائمة x87 المدمجة (يشار إليها بواسطة بت EDX 0). - ↑ يُدرج البت 16 من ECX على أنه "محجوز" في وثائق Intel وAMD العامة، ولا يتم تعيينه في أي معالج معروف. مع ذلك، تشير التقارير إلى أن بعض إصدارات نواة Windows Vista تتحقق من هذا البت [ 63 ] - إذا تم تعيينه، فسيتعرف عليه Vista كميزة "قنوات المعالج".
- ↑ في معالجات Intel و Transmeta [ 31 ] التي تدعم PSN (الرقم التسلسلي للمعالج)، يمكن تعطيل PSN عن طريق ضبط البت 21 من MSR
119h(BBL_CR_CTL) إلى 1. سيؤدي القيام بذلك إلى إزالة الورقة 3 وجعل CPUID.(EAX=1):EDX[bit 18] يُرجع 0. - ↑ في معالجات x86 غير Itanium،يتم الإشارة إلى دعم بت عدم التنفيذ في CPUID.(EAX=8000_0001):EDX[bit 20] بدلاً من ذلك.
- يشير البت 28 من EDX، إذا تم ضبطه، إلى أن البتات من 23 إلى 16 من CPUID.(EAX=1):EBX صالحة. إذا لم يتم ضبط هذا البت، فإن حزمة وحدة المعالجة المركزية تحتوي على معالج منطقي واحد فقط.
في الوثائق القديمة، يُشار إلى هذا الجزء غالبًا باسم " تقنية تعدد الخيوط المتزامنة " [ 67 ] ، ومع ذلك، فبينما يُعد هذا الخيار شرطًا أساسيًا لدعم تقنية تعدد الخيوط المتزامنة، إلا أنه لا يُشير بحد ذاته إلى دعم هذه التقنية، وقد تم ضبطه على العديد من وحدات المعالجة المركزية التي لا تحتوي على أي شكل من أشكال تقنية تعدد الخيوط. [ 68 ]
يجب إخفاء الحقول المحجوزة قبل استخدامها لأغراض تحديد هوية المعالج.
EAX=2: معلومات وصف ذاكرة التخزين المؤقت وذاكرة الترجمة السريعة
هذا يُعيد قائمة من الواصفات التي تشير إلى إمكانيات ذاكرة التخزين المؤقت وذاكرة الترجمة السريعة في سجلات EAX وEBX وECX وEDX.
في المعالجات التي تدعم هذه الورقة، CPUIDسيؤدي استدعاء الدالة مع EAX=2 إلى تعيين البايت السفلي من EAX إلى 01h[ a ] ، وملء البايتات الـ 15 المتبقية من EAX/EBX/ECX/EDX بـ 15 واصفًا، كل منها بايت واحد. توفر هذه الواصفات معلومات حول ذاكرة التخزين المؤقت للمعالج، وجداول ترجمة العناوين (TLBs)، وجلب البيانات المسبق. عادةً ما تكون ذاكرة تخزين مؤقت واحدة أو جدول ترجمة عناوين واحد لكل واصف، ولكن بعض قيم الواصفات توفر معلومات أخرى أيضًا - على وجه الخصوص، 00hيُستخدم للواصف الفارغ، FFhويشير إلى أن الورقة لا تحتوي على معلومات ذاكرة تخزين مؤقت صالحة، وأنه يجب استخدام الورقة 4h بدلاً منها، FEhويشير إلى أن الورقة لا تحتوي على معلومات جدول ترجمة عناوين صالحة، وأنه يجب استخدام الورقة 18h بدلاً منها. هناك أيضًا بعض الحالات، مثل الواصفات 63hو C3h، حيث يوفر واصف واحد معلومات حول جداول ترجمة عناوين متعددة. يمكن أن تظهر الواصفات بأي ترتيب.
بالنسبة لكل من السجلات الأربعة (EAX، EBX، ECX، EDX)، إذا تم تعيين البت 31، فلا ينبغي اعتبار السجل يحتوي على واصفات صالحة (على سبيل المثال، في Itanium في وضع IA-32، يتم إرجاع CPUID(EAX=2) 80000000hفي EDX - يجب تفسير هذا على أنه يعني أن EDX لا يحتوي على معلومات صالحة، وليس أنه يحتوي على واصف لذاكرة تخزين مؤقتة من المستوى الثاني بحجم 512 كيلوبايت).
يُقدّم الجدول أدناه، بالنسبة لقيم الواصفات المعروفة، وصفًا مُختصرًا لذاكرة التخزين المؤقت أو ذاكرة الترجمة السريعة (TLB) المشار إليها بواسطة قيمة الواصف تلك (أو معلومات أخرى، عند الاقتضاء). اللواحق المُستخدمة في الجدول هي:
- K,M,G : kibibyte, mebibyte, gibibyte (سعة ذاكرة التخزين المؤقت، حجم الصفحة لـ TLBs)
- E : المدخلات (لـ TLBs؛ على سبيل المثال 64E = 64 مدخلاً)
- p : حجم الصفحة (على سبيل المثال 4Kp لـ TLBs حيث يصف كل إدخال صفحة واحدة بحجم 4 كيلوبايت ، 4K/2Mp لـ TLBs حيث يمكن لكل إدخال أن يصف إما صفحة واحدة بحجم 4 كيلوبايت أو صفحة ضخمة بحجم 2 ميجابايت)
- L : حجم سطر التخزين المؤقت (على سبيل المثال 32L = حجم سطر التخزين المؤقت 32 بايت)
- S : حجم قطاع ذاكرة التخزين المؤقت (على سبيل المثال، 2S تعني أن ذاكرة التخزين المؤقت تستخدم قطاعات من سطرين من خطوط ذاكرة التخزين المؤقت لكل منها)
- أ : الترابطية (على سبيل المثال 6A = ترابطية مجموعة سداسية الاتجاهات ، FA = ترابطية كاملة)
| ذاكرة تخزين مؤقتة للتعليمات أو البيانات من المستوى 1 | مخبأ المستوى 2 | مخبأ المستوى 3 | تعليمات أو بيانات TLB | المستوى 2 مشترك TLB | معلومات أخرى | (محجوز) |
| x0 | x1 | x2 | x3 | x4 | 5x | 6x | 7x | 8x | 9x | xA | xB | xC | xD | xE | xF | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | واصف فارغ | ITLB: 32E, 4Kp, 4A | ITLB: 2E, 4Mp, FA | DTLB: 64E, 4Kp, 4A | DTLB: 8E، 4Mp، 4A | DTLB: 32E، 4Mp، 4A | L1I: 8K، 4A، 32L | 0x | L1I: 16 كيلوجول، 4 أمبير، 32 لتر | L1I: 32K، 4A، 64L | L1D: 8K, 2A, 32L | ITLB: 4E, 4Mp, FA | L1D: 16 كيلو أوم، 4 أمبير، 32 لتر | L1D: 16K, 4A, 64L [ b ] | L1D: 24K, 6A, 64L [ b ] | 0x | ||
| 1x | (L1D: 16K, 4A, 32L) [ c ] | (L1I: 16K, 4A, 32L) [ c ] | 1x | (L2C: 96K, 6A, 64L) [ c ] | L2C: 128K، 2A، 64L | 1x | ||||||||||||
| 2x | L2C: 256K, 8A, 64L [ d ] | L3C: 512K، 4A، 64L، 2S | L3C: 1M، 8A، 64L، 2S | L2C: 1M, 16A, 64L | L3C: 2M، 8A، 64L، 2S | (جلب مسبق 128 بايت ) [ هـ ] | (جلب مسبق 128 بايت ) [ هـ ] | 2x | (جلب مسبق 128 بايت ) [ هـ ] | L3C: 4M، 8A، 64L، 2S | L1D: 32 كيلو أوم، 8 أمبير، 64 لتر | 2x | ||||||
| 3x | L1I: 32 كيلو هرتز، 8 أمبير، 64 لتر | 3x | L2C: 128K, 4A, 64L, 2S [ f ] | L2C: 192K, 6A, 64L, 2S [ f ] | L2C: 128K, 2A, 64L, 2S [ f ] | L2C: 256K, 4A, 64L, 2S [ f ] | L2C: 384K, 6A, 64L, 2S [ f ] | L2C: 512K, 4A, 64L, 2S [ f ] | L2C: 256K, 2A, 64L [ g ] | 3x | ||||||||
| 4x | لا يوجد ذاكرة تخزين مؤقتة من المستوى الثالث | L2C: 128 كيلو أوم، 4 أمبير، 32 لتر | L2C: 256K, 4A, 32L [ h ] | L2C: 512K، 4A، 32L | L2C: 1M، 4A، 32L | L2C: 2M, 4A, 32L | L3C: 4M، 4A، 64L | L3C: 8M، 8A، 64L | 4x | L2C: 3M، 12A، 64L | L2C/L3C: [ i ] 4M,16A,64L | L3C: 6M, 12A, 64L | L3C: 8M, 16A, 64L | L3C: 12M، 12A، 64L | L3C: 16M، 16A، 64L | L2C: 6M, 24A, 64L | ITLB: 32E, 4Kp [ j ] | 4x |
| 5x | ITLB: 64E,FA, 4K/2M/4Mp | ITLB: 128E,FA, 4K/2M/4Mp | ITLB: 256E,FA, 4K/2M/4Mp | ITLB: 7E, 2M/4Mp, FA | DTLB: 16E، 4Mp، 4A | DTLB: 16E, 4Kp, 4A | 5x | DTLB: 16E, 4Kp, FA | DTLB: 32E، 2M/4Mp، 4A | DTLB: 64E 4K/4Mp, FA | DTLB: 128E، 4K/4Mp، FA | DTLB: 256E، 4K/4Mp، FA | 5x | |||||
| 6x | L1D: 16 كيلو أوم، 8 أمبير، 64 لتر | ITLB: 48E, 4Kp, FA | اثنان من وحدات DTLB: 32E، 2M/4Mp، 4A + 4E، 1Gp، FA | DTLB: 512E, 4Kp, 4A | L1D: 8K, 4A, 64L | L1D: 16K، 4A، 64L | 6x | L1D: 32K، 4A، 64L | DTLB: 64E, 4Kp, 8A | DTLB: 256E, 4Kp, 8A | DTLB: 128E، 2M/4Mp، 8A | DTLB: 16E, 1Gp, FA | 6x | |||||
| 7x | ذاكرة التتبع ، 12 ألف عملية دقيقة، 8 أمبير [ كيلو ] | ذاكرة تخزين مؤقتة للتتبع، 16 ألف عملية دقيقة، 8 أمبير | ذاكرة التتبع، 32 ألف عملية دقيقة، 8 أمبير | ذاكرة التتبع، 64 ألف عملية دقيقة، 8 أمبير [ f ] | [ ح ] | ITLB: 8E, 2M/4Mp, FA [ l ] | (L1I: 16K، 4A، 64L) [ m ] [ h ] | 7x | L2C: 1M, 4A, 64L | L2C: 128 كيلو أوم، 8 أمبير، 64 لتر، 2S | L2C: 256 كيلو أوم، 8 أمبير، 64 لتر، 2S | L2C: 512K، 8A، 64L، 2S | L2C: 1M، 8A، 64L، 2S | L2C: 2M, 8A, 64L | (L2C: 256K, 8A, 128L) [ m ] | L2C: 512K, 2A, 64L | 7x | |
| 8x | L2C: 512K, 8A, 64L [ k ] | (L2C: 128K, 8A, 32L) [ e ] | L2C: 256K, 8A, 32L [ h ] | L2C: 512K، 8A، 32L | L2C: 1M، 8A، 32L | L2C: 2M, 8A, 32L | L2C: 512K, 4A, 64L | L2C: 1M, 8A, 64L | 8x | (L3C: 2M, 4A, 64L) [ c ] | (L3C: 4M, 4A, 64L) [ c ] | (L3C: 8M, 4A, 64L) [ c ] | (L3C: 3M, 12A, 128L) [ m ] [ n ] | 8x | ||||
| 9x | (ITLB: 64E,FA, 4K-256Mp) [ c ] | (DTLB: 32E,FA, 4K-256Mp) [ c ] | 9x | (DTLB: 96E,FA, 4K-256Mp) [ c ] | 9x | |||||||||||||
| الفأس | DTLB: 32E, 4Kp, FA | الفأس | الفأس | |||||||||||||||
| Bx | ITLB: 128E, 4Kp, 4A | ITLB: 8E, 2M/4Mp, 4A [ o ] | ITLB: 64E, 4Kp, 4A | DTLB: 128E, 4Kp, 4A | DTLB: 256E, 4Kp, 4A | ITLB: 64E, 4Kp, 8A | ITLB: 128E, 4Kp, 8A | Bx | DTLB: 64E, 4Kp, 4A | Bx | ||||||||
| Cx | DTLB: 8E، 4K/4Mp، 4A | L2TLB: 1024E، 4K/2Mp، 8A | DTLB: 16E, 2M/4Mp, 4A [ 89 ] | اثنان من وحدات STLB من المستوى الثاني: 1536E، 4K/2Mp، 6A [ p ] + 16E، 1Gp، 4A | DTLB: 32E، 2M/4Mp، 4A | Cx | L2TLB: 512E, 4Kp, 4A | Cx | ||||||||||
| التشخيص | L3C: 512K, 4A, 64L | L3C: 1M، 4A، 64L | L3C: 2M, 4A, 64L | L3C: 1M، 8A، 64L | L3C: 2M,8A, 64L | Dx | L3C: 4M,8A, 64L | L3C: 1.5M,12A, 64L | L3C: 3M,12A, 64L | L3C: 6M,12A, 64L | Dx | |||||||
| Ex | L3C: 2M,16A, 64L | L3C: 4M,16A, 64L | L3C: 8M,16A, 64L | Ex | L3C: 12M,24A, 64L | L3C: 18M,24A, 64L[92] | L3C: 24M,24A, 64L | Ex | ||||||||||
| Fx | 64-byteprefetch[q] | 128-byteprefetch[q] | Fx | Leaf 2 hasno TLB info,use leaf 18h | Leaf 2 hasno cache info,use leaf 4 | Fx | ||||||||||||
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF |
- ↑In older Intel documentation, the bottom byte of the value returned in EAX is described as specifying the number of times the
CPUIDmust be called with EAX=2 to get hold of all the cache/TLB descriptors. However, all known processors that implement this leaf return01hin this byte, and newer Intel documentation (SDM rev 053[72] and later) specifies this byte as having the value01h. - 12For descriptors
0Dhand0Eh, Intel AP-485 rev 37[73] lists the caches they describe as having ECC - this was removed in rev 38 and later Intel documentation. - 123456789Descriptors
10h,15h,1Ah,88h,89h,8Ah,90h,96h,9Bhare documented for the IA-32 operation mode of Itanium only.[74] - ↑The cache described by descriptor
21his in some places (e.g. AP-485 rev 36[75] but not rev 37) referred to as an "MLC" (Mid-Level Cache). - 1234Descriptor values
26h,27h,28hand81hare not listed in Intel documentation and are not used in any known released CPU. (81hhas been seen in engineering samples of the cancelled Intel Timna.[85]) They have nevertheless been reported to be recognized by the Windows NT kernel v5.1 (Windows XP) and higher.81his also recognized by v5.0 (Windows 2000).[86] - 1 2 3 4 5 6 7 تمالواصفاتفي المراجعة 36 من Intel AP-485، [ 75 ] ولكن تمت إزالتها من وثائق Intel اللاحقة على الرغم من استخدام العديد منها في وحدات المعالجة المركزية Intel (معظمها في وحدات المعالجة المركزية Celeron القائمة على Netburst ، على سبيل المثالفي "Willamette-128" ، [ 76 ] وفي "Northwood-128"، [ 77 ] وفي"Prescott-256" [ 78 ] ).
39h-3Eh73h39h3Bh3Ch - ↑ لم يُدرج هذا الوصف
3Fh، اعتبارًا من نوفمبر 2024، في أي من وثائق إنتل المعروفة - ومع ذلك، فهو يُستخدم فيمعالجات إنتل تولاباي ، [ 79 ] وهو مُدرج في رقعة نواة لينكس التي قدمتها إنتل. [ 80 ] - تشير وثائق معالج VIA Cyrix III "Joshua" ( العائلة 6 ، الطراز 5 ) إلى أن هذا المعالج يستخدم قيمًا وصفيةلـTLBs الخاصة به، وقيمًا وصفيةلـcaches الخاصة به - لكنها لا تحدد أي caches/TLBs في المعالج تتوافق مع كل قيمة وصفية من هذه القيم. [ 81 ]
CyrixInstead74h77h42h82h - ↑ يشير الوصف
49hإلى ذاكرة تخزين مؤقتة من المستوى 3 علىGenuineIntelوحدات المعالجة المركزية من طراز Family 0Fh Model 6 (Pentium 4 based Xeon)، وذاكرة تخزين مؤقتة من المستوى 2 على وحدات المعالجة المركزية الأخرى. - ↑ لا تُحدد وثائق CPUID الخاصة بشركة Intel مدى ارتباطية ITLB المشار إليها بواسطة الواصفوقد وُصفت
4Fhالمعالجات التي تستخدم هذا الواصف (Intel Atom "Bonnell" [ 82 ] ) في موضع آخر بأنها تمتلك ITLB ارتباطية كاملة مكونة من 32 مدخلاً. [ 83 ] - 1 2 على وحدات المعالجة المركزية Cyrix و Geode (معرفات البائع
CyrixInsteadوGeode by NSC)، فإن الواصفات70hو80hلها معنى مختلف: [ 84 ]- يشير الوصف إلى ذاكرة
70hترجمة عناوين الذاكرة المشتركة المكونة من 32 مدخلاً للتعليمات والبيانات، والتي تحتوي على 4 اتجاهات ترابطية للمجموعات، وبحجم صفحة 4K. - يشير الوصف إلى ذاكرة تخزين مؤقتة من المستوى الأول (L1) مشتركة للتعليمات والبيانات بحجم
80h16 كيلوبايت مع ارتباط مجموعة رباعي الاتجاهات وحجم خط ذاكرة تخزين مؤقتة يبلغ 16 بايت.
- يشير الوصف إلى ذاكرة
- ↑ تم إدراجDescriptorذاكرة تخزين مؤقتة من المستوى الثاني بحجم 1 ميجابايت في الإصدار 37 من Intel AP-485، [ 73 ] ولكن كـ TLB للتعليمات في الإصدار 38 وجميع وثائق Intel اللاحقة.
76h - تمالواصفات 1 2 3 لوضعالتشغيل IA-32 الخاص بمعالج Itanium 2 فقط. [ 87 ]
77h7Eh8Dh - ↑ في وضع التشغيل IA-32 لمعالج Itanium 2، يتم دائمًا الإبلاغ عن حجم ذاكرة التخزين المؤقت L3 على أنه 3 ميجابايت بغض النظر عن الحجم الفعلي لذاكرة التخزين المؤقت. [ 88 ]
- ↑ بالنسبة للوصف
B1h، تبلغ سعة TLB 8 عناصر عند استخدام صفحات بحجم 2 ميجابايت، ولكنها تنخفض إلى 4 عناصر عند استخدام صفحات بحجم 4 ميجابايت. - ↑ بالنسبة للوصف
C3h، تحتوي العديد من معالجات إنتل التي تستخدم هذا الوصف على ذاكرة تخزين مؤقتة من المستوى الثاني (L2 TLB) ذات 12 اتجاهًا ترابطيًا، وليس 6 اتجاهات ترابطيًا. ينطبق هذا على الأقل على معالجات Skylake [ 90 ] و Whiskey/Kaby/Coffee/Comet Lake [ 91 ] . - 1 2 الجلب المسبق المحدد بواسطة الواصفات
F0hهوF1hالخطوة الموصى بها لجلب الذاكرة المسبق باستخدامPREFETCHNTAالتعليمة. [ 93 ]
EAX=3: الرقم التسلسلي للمعالج
يُعيد هذا الأمر الرقم التسلسلي للمعالج. تم تقديم الرقم التسلسلي للمعالج في معالجات إنتل بنتيوم 3 ، ولكن نظرًا لمخاوف تتعلق بالخصوصية، لم تعد هذه الميزة مُفعّلة في الطرازات اللاحقة (يتم مسح بت ميزة PSN دائمًا). كما توفر معالجات Efficeon وCrusoe من شركة Transmeta هذه الميزة. أما معالجات AMD، فلا تُفعّل هذه الميزة في أي من طرازاتها.
بالنسبة لوحدات المعالجة المركزية Intel Pentium III، تُرجع الورقة 3 الـ 64 بتات السفلية من الرقم التسلسلي للمعالج ذي 96 بت في EDX:ECX - يتم أخذ الـ 32 بتات العلوية من الرقم التسلسلي من توقيع وحدة المعالجة المركزية الذي تم إرجاعه في EAX عند CPUIDاستدعائها مع EAX=1. [ 94 ] .
بالنسبة لوحدات المعالجة المركزية Transmeta Crusoe و Efficeon، تُرجع الورقة 3 رقمًا تسلسليًا للمعالج مكونًا من 128 بت بتنسيق EAX:EBX:ECX:EDX [ 95 ] (تكون أعلى 32 بت من هذا الرقم التسلسلي، المُقدم بتنسيق EAX، دائمًا 0 على معالجات Crusoe [ 96 ] ولكن من المعروف أنها غير صفرية على بعض معالجات Efficeon على الأقل. [ 97 ] )
لاحظ أنه يجب تفعيل ميزة الرقم التسلسلي للمعالج في إعدادات BIOS لكي تعمل.
EAX=4 و EAX=8000'001Dh: التسلسل الهرمي والطوبولوجيا لذاكرة التخزين المؤقت
تُستخدم هاتان الورقتان لتوفير معلومات حول مستويات التسلسل الهرمي لذاكرة التخزين المؤقت المتاحة لنواة المعالج التي CPUIDتُنفذ عليها التعليمات. 4تُستخدم الورقة Leaf في معالجات Intel، بينما 8000'001Dhتُستخدم الورقة Leaf في معالجات AMD. تُعيد كلتاهما البيانات في EAX وEBX وECX وEDX، باستخدام نفس تنسيق البيانات، باستثناء أن الورقة Leaf 4تُعيد بعض الحقول الإضافية التي تُعتبر "محجوزة" لها 8000'001Dh. تُوفر كلتاهما معلومات ذاكرة التخزين المؤقت لوحدة المعالجة المركزية في سلسلة من الأوراق الفرعية التي يُحددها ECX. للحصول على معلومات حول جميع مستويات ذاكرة التخزين المؤقت، من الضروري استدعاء الدالة CPUIDبشكل متكرر، مع تعيين EAX= 4أو 8000'001DhECX بقيم متزايدة بدءًا من 0 (0، 1، 2، ...) حتى يتم العثور على ورقة فرعية لا تصف أي ذاكرة تخزين مؤقت (EAX[4:0]=0). قد تظهر الأوراق الفرعية التي تُعيد معلومات ذاكرة التخزين المؤقت بأي ترتيب، ولكن ستظهر جميعها قبل أول ورقة فرعية لا تصف أي ذاكرة تخزين مؤقت.
في الجدول أدناه، تم تمييز الحقول التي تم تعريفها للورقة 4ولكن ليس للورقة 8000'001Dhبتلوين الخلايا باللون الأصفر وعنصر (#4) .
| قليل | إي إيه إكس | EBX | EDX [ أ ] | قليل | ||
|---|---|---|---|---|---|---|
| 0 | نوع ذاكرة التخزين المؤقت:
| حجم خط تماسك النظام بالبايت، ناقص 1 | WBINVDنطاق تنفيذ إبطال ذاكرة التخزين المؤقت. تشير القيمة 0 إلى أن تعليمات INVD/ WBINVDستُبطل جميع ذاكرات التخزين المؤقت ذات المستويات الأدنى لهذه الذاكرة، بما في ذلك ذاكرات التخزين المؤقت التابعة للمعالجات الشقيقة التي تشترك في هذه الذاكرة. وتشير القيمة 1 إلى أنه ليس من المضمون مسح جميع ذاكرات التخزين المؤقت ذات المستويات الأدنى للمعالجات الشقيقة التي تشترك في هذه الذاكرة. | 0 | ||
| 1 | شمولية ذاكرة التخزين المؤقت. إذا كانت القيمة 1، فإن ذاكرة التخزين المؤقت تشمل ذاكرات التخزين المؤقت ذات المستوى الأدنى. | 1 | ||||
| 2 | فهرسة ذاكرة التخزين المؤقت المعقدة. إذا كانت القيمة 1، فإن ذاكرة التخزين المؤقت تستخدم دالة معقدة للفهرسة، وإلا فإنها تستخدم تعيينًا مباشرًا. (#4) | 2 | ||||
| 3 | (محجوز) | 3 | ||||
| 4 | (محجوز) [ ب ] | 4 | ||||
| 7:5 | مستوى التخزين المؤقت (يبدأ من 1) | (محجوز) | 7:5 | |||
| 8 | مستوى ذاكرة التخزين المؤقت ذاتية التهيئة (1 = لا تحتاج إلى تهيئة برمجية بعد إعادة الضبط) | (محجوز) | 8 | |||
| 9 | ذاكرة التخزين المؤقت الترابطية الكاملة | (محجوز) | 9 | |||
| 10 | ( WBINVDنطاق تنفيذ إبطال ذاكرة التخزين المؤقت) [ ج ] (#4) | (محجوز) | 10 | |||
| 11 | (شمولية التخزين المؤقت) [ ج ] (#4) | (محجوز) | 11 | |||
| 13:12 | (محجوز) | أقسام الخطوط المادية (عدد خطوط التخزين المؤقت التي تشترك في علامة عنوان التخزين المؤقت)، ناقص 1 | (محجوز) | 13:12 | ||
| 21:14 | الحد الأقصى لعدد المعرفات القابلة للعنونة للمعالجات المنطقية التي تشترك في هذه الذاكرة المؤقتة، ناقص 1 | (محجوز) | 21:14 | |||
| 25:22 | طرق ترابط الذاكرة المؤقتة ، ناقص 1 | (محجوز) | 25:22 | |||
| 31:26 | الحد الأقصى لعدد المعرفات القابلة للعنونة لأنوية المعالج في الحزمة المادية، ناقص 1 (#4) | (محجوز) | 31:26 |
- ↑ Intel AP-485، المراجعات 31 [ 98 ] و 32، تسرد البتات 9:0 من EDX كحقل "Prefetch Stride" - تمت إزالة هذا في المراجعة 33 وجميع وثائق Intel اللاحقة، ولا يُعرف أن أي معالج يستخدم EDX بهذه الطريقة.
- ↑ لم يتم إدراج البت 4 من EDX في أي من وثائق Intel العامة المعروفة، ولكن لوحظ أنه مُفعّل لذاكرة التخزين المؤقت من المستوى 2 لمعالجات Intel Xeon Phi x200 ("Knights Landing"). [ 99 ]
- بالنسبة لـ CPUID leaf 4، فإن البتات من 11 إلى 10 من EAX موثقة لمعالج Xeon Phi "Knights Corner" (
GenuineIntelالعائلة0Bh) فقط. [ 47 ] بالنسبة للمعالجات الأخرى، يجب استخدام البتات من 1 إلى 0 من EDX بدلاً من ذلك.
بالنسبة لأي ذاكرة تخزين مؤقت صالحة وغير ترابطية بالكامل، فإن القيمة المُعادة في ECX هي عدد المجموعات في ذاكرة التخزين المؤقت ناقص 1. (بالنسبة لذاكرات التخزين المؤقت الترابطية بالكامل، يجب التعامل مع ECX كما لو كانت تُعيد القيمة 0). بالنسبة لأي ذاكرة تخزين مؤقت مُعطاة موصوفة بواسطة ورقة فرعية من CPUIDورقة 4أو 8000'001Dh، يمكن حساب إجمالي حجم ذاكرة التخزين المؤقت بالبايت على النحو التالي:
CacheSize = (EBX[11:0]+1) * (EBX[21:12]+1) * (EBX[31:22]+1) * (ECX+1)
على سبيل المثال، في معالجات Intel Crystalwell ، سيؤدي تنفيذ CPUID مع EAX=4 وECX=4 إلى قيام المعالج بإرجاع معلومات الحجم التالية لذاكرة التخزين المؤقت من المستوى 4 في EBX وECX: EBX=03C0F03Fو ECX=00001FFF- يجب أن يُفهم من ذلك أن ذاكرة التخزين المؤقت هذه لها حجم سطر ذاكرة تخزين مؤقت يبلغ 64 بايت (EBX[11:0]+1)، وتحتوي على 16 سطر ذاكرة تخزين مؤقت لكل علامة (EBX[21:12]+1)، وهي ذات 16 اتجاهًا ترابطيًا (EBX[31:22]+1) مع 8192 مجموعة (ECX+1)، ليصبح الحجم الإجمالي 64*16*16*8192=134217728 بايت، أو 128 ميببايت.
EAX=4 و EAX=Bh: بنية معالج Intel Thread/Core وذاكرة التخزين المؤقت
تُستخدم هاتان الورقتان لتحديد بنية المعالج (الخيط، النواة، الحزمة) وتسلسل ذاكرة التخزين المؤقت في معالجات إنتل متعددة النوى (والمعالجات متعددة الخيوط). [ 100 ] اعتبارًا من عام 2013لا تستخدم AMD هذه الأوراق، ولكن لديها طرق بديلة لإجراء تعداد النوى. [ 101 ]
على عكس معظم أوراق CPUID الأخرى، تُرجع الورقة Bh قيمًا مختلفة في EDX اعتمادًا على المعالج المنطقي الذي تُنفذ عليه تعليمة CPUID؛ فالقيمة المُرجعة في EDX هي في الواقع مُعرّف x2APIC للمعالج المنطقي. مع ذلك، لا يتم ربط مساحة مُعرّف x2APIC بالمعالجات المنطقية بشكل متواصل؛ فقد توجد فجوات في الربط، ما يعني أن بعض مُعرّفات x2APIC الوسيطة لا تُطابق بالضرورة أي معالج منطقي. تتوفر معلومات إضافية لربط مُعرّفات x2APIC بالنوى في السجلات الأخرى. على الرغم من أن الورقة Bh تحتوي على أوراق فرعية (يتم اختيارها بواسطة ECX كما هو موضح أدناه)، فإن القيمة المُرجعة في EDX تتأثر فقط بالمعالج المنطقي الذي تُنفذ عليه التعليمة، وليس بالورقة الفرعية.
تُظهر بنية المعالج (أو المعالجات) التي يكشف عنها الفرع Bh بنيةً هرمية، مع ملاحظة غريبة تتمثل في أن ترتيب المستويات (المنطقية) في هذه البنية لا يتطابق بالضرورة مع ترتيبها في البنية الفيزيائية ( SMT /core/package). ومع ذلك، يمكن الاستعلام عن كل مستوى منطقي كفرع فرعي ECX (من الفرع Bh) لمعرفة مدى مطابقته لنوع المستوى، والذي قد يكون SMT أو core أو "غير صالح". يبدأ نطاق معرفات المستويات من 0 وهو متصل، ما يعني أنه إذا كان معرف مستوى ما غير صالح، فستكون جميع معرفات المستويات الأعلى منه غير صالحة أيضًا. يُعاد نوع المستوى في البتات من 15 إلى 8 من ECX، بينما يُعاد عدد المعالجات المنطقية في المستوى المستعلم عنه في EBX. وأخيرًا، يتم إرجاع الاتصال بين هذه المستويات ومعرفات x2APIC في EAX[4:0] على أنه عدد البتات التي يجب إزاحة معرف x2APIC من أجل الحصول على معرف فريد في المستوى التالي.
As an example, a dual-core Westmere processor capable of hyperthreading (thus having two cores and four threads in total) could have x2APIC ids 0, 1, 4 and 5 for its four logical processors. Leaf Bh (=EAX), subleaf 0 (=ECX) of CPUID could for instance return 100h in ECX, meaning that level 0 describes the SMT (hyperthreading) layer, and return 2 in EBX because there are two logical processors (SMT units) per physical core. The value returned in EAX for this 0-subleaf should be 1 in this case, because shifting the aforementioned x2APIC ids to the right by one bit gives a unique core number (at the next level of the level id hierarchy) and erases the SMT id bit inside each core. A simpler way to interpret this information is that the last bit (bit number 0) of the x2APIC id identifies the SMT/hyperthreading unit inside each core in our example. Advancing to subleaf 1 (by making another call to CPUID with EAX=Bh and ECX=1) could for instance return 201h in ECX, meaning that this is a core-type level, and 4 in EBX because there are 4 logical processors in the package; EAX returned could be any value greater than 3, because it so happens that bit number 2 is used to identify the core in the x2APIC id. Note that bit number 1 of the x2APIC id is not used in this example. However, EAX returned at this level could well be 4 (and it happens to be so on a Clarkdale Core i3 5x0) because that also gives a unique id at the package level (=0 obviously) when shifting the x2APIC id by 4 bits. Finally, you may wonder what the EAX=4 leaf can tell us that we didn't find out already. In EAX[31:26] it returns the APIC mask bits reserved for a package; that would be 111b in our example because bits 0 to 2 are used for identifying logical processors inside this package, but bit 1 is also reserved although not used as part of the logical processor identification scheme. In other words, APIC ids 0 to 7 are reserved for the package, even though half of these values don't map to a logical processor.
The cache hierarchy of the processor is explored by looking at the sub-leaves of leaf 4. The APIC ids are also used in this hierarchy to convey information about how the different levels of cache are shared by the SMT units and cores. To continue our example, the L2 cache, which is shared by SMT units of the same core but not between physical cores on the Westmere is indicated by EAX[26:14] being set to 1, while the information that the L3 cache is shared by the whole package is indicated by setting those bits to (at least) 111b. The cache details, including cache type, size, and associativity are communicated via the other registers on leaf 4.
يُرجى الانتباه إلى أن الإصدارات القديمة من مذكرة تطبيق Intel رقم 485 تحتوي على بعض المعلومات المُضللة، لا سيما فيما يتعلق بتحديد وحساب النوى في المعالجات متعددة النوى؛ [ 102 ] وقد تم تضمين أخطاء ناتجة عن سوء تفسير هذه المعلومات حتى في نموذج التعليمات البرمجية من Microsoft لاستخدام CPUID، حتى في إصدار 2013 من Visual Studio، [ 103 ] ولكن نموذج التعليمات البرمجية من Intel لتحديد بنية المعالج [ 100 ] يحتوي على التفسير الصحيح، كما أن دليل مطوري برامج Intel الحالي يتميز بلغة أكثر وضوحًا. ويُطبّق كود الإنتاج (مفتوح المصدر) متعدد المنصات [ 104 ] من Wildfire Games أيضًا التفسير الصحيح لوثائق Intel.
تُقدَّم أمثلةٌ لكشف بنية الشبكة باستخدام معالجات Intel القديمة (ما قبل 2010) التي تفتقر إلى x2APIC (وبالتالي لا تُطبِّق EAX=Bh leaf) في عرضٍ تقديميٍّ لشركة Intel عام 2010. [ 105 ] يُرجى الانتباه إلى أنَّ استخدام طريقة الكشف القديمة هذه على معالجات Intel من عام 2010 وما بعده قد يُبالغ في تقدير عدد النوى والمعالجات المنطقية، لأنَّ طريقة الكشف القديمة تفترض عدم وجود فجوات في مساحة معرّفات APIC، وهذا الافتراض لا ينطبق على بعض المعالجات الأحدث (بدءًا من سلسلة Core i3 5x0)، ولكن هذه المعالجات الأحدث تأتي أيضًا مزوَّدةً بـ x2APIC، لذا يُمكن تحديد بنيتها بشكلٍ صحيح باستخدام طريقة EAX=Bh leaf.
EAX=5: ميزات المراقبة/الانتظار
تُعيد هذه العملية معلومات الميزات المتعلقة MONITORبالتعليمات الموجودة MWAITفي سجلات EAX و EBX و ECX و EDX.
| قليل | إي إيه إكس | EBX | EDX | قليل | ||
|---|---|---|---|---|---|---|
| 3:0 | أصغر حجم لسطر المراقبة بالبايت | أكبر حجم لسطر المراقبة بالبايت | عدد الحالات الفرعية C0 [ أ ] المدعومة لـMWAIT | 3:0 | ||
| 7:4 | عدد الحالات الفرعية C1 المدعومة لـMWAIT | 7:4 | ||||
| 11:8 | عدد الحالات الفرعية C2 المدعومة لـMWAIT | 11:8 | ||||
| 15:12 | عدد الحالات الفرعية C3 المدعومة لـMWAIT | 15:12 | ||||
| 19:16 | (محجوز) | (محجوز) | عدد الولايات الفرعية C4 المدعومة لـMWAIT | 19:16 | ||
| 23:20 | عدد الولايات الفرعية C5 المدعومة لـMWAIT | 23:20 | ||||
| 27:24 | عدد الحالات الفرعية C6 المدعومة لـMWAIT | 27:24 | ||||
| 31:28 | عدد الولايات الفرعية C7 المدعومة لـMWAIT | 31:28 |
- ↑ الحالات من C0 إلى C7 هي حالات C خاصة بالمعالج، والتي لا تتطابق بالضرورة بنسبة 1:1 مع حالات ACPI C.
| قليل | بورصة السلع الأوروبية (ECX) | |
|---|---|---|
| قصير | ميزة | |
| 0 | إي إم إكس | تعداد ملحقات MONITOR/MWAIT في ECX و EDX المدعومة |
| 1 | IBE | يدعم التعامل مع المقاطعات كأحداث توقف MWAITحتى عند تعطيل المقاطعات |
| 2 | (محجوز) | |
| 3 | بدون شاشة - MWAIT | السماح MWAITباستخدامها لإدارة الطاقة دون إعداد مراقبة الذاكرة مع MONITOR[ 106 ] |
| 31:4 | (محجوز) | |
EAX=6: إدارة الحرارة والطاقة
هذا يعيد بتات الميزات في سجل EAX ومعلومات إضافية في سجلات EBX وECX وEDX.
| قليل | إي إيه إكس | |
|---|---|---|
| قصير | ميزة | |
| 0 | DTS | قدرة المستشعر الحراري الرقمي |
| 1 | تعزيز التوربو | تقنية Intel Turbo Boost |
| 2 | أرات [ أ ] | إمكانية تشغيل مؤقت APIC باستمرار |
| 3 | (محجوز) | |
| 4 | PLN | إمكانية التنبيه بحدود الطاقة |
| 5 | ECMD | قدرة تعديل الساعة الممتدة |
| 6 | PTM | قدرة إدارة الحرارة في الحزمة |
| 7 | HWP | حالات الأداء التي يتم التحكم فيها بواسطة الأجهزة . تمت إضافة سجلات MSR:
|
| 8 | إشعار HWP | إشعار HWP بتغيير الأداء المضمون الديناميكي - IA32_HWP_INTERRUPT( 773h) MSR |
| 9 | نافذة نشاط HWP | التحكم في نافذة نشاط HWP - البتات 41:32 من IA32_HWP_REQUESTMSR |
| 10 | تفضيل أداء الطاقة HWP | التحكم في تفضيلات الطاقة/الأداء لوحدة المعالجة المركزية - البتات من 31 إلى 24 من IA32_HWP_REQUESTسجل حالة المحرك |
| 11 | HWP_Package_Level_Request | التحكم على مستوى حزمة HWP - IA32_HWP_REQUEST_PKG( 772h) MSR |
| 12 | (محجوز) | |
| 13 | HDC | يدعم الجهاز دورات التشغيل المتكررة . تمت إضافة سجلات MSR:
|
| 14 | توربو بوست ماكس | تقنية Intel Turbo Boost Max 3.0 متوفرة |
| 15 | HWP_CAP | المقاطعات عند حدوث تغييرات في IA32_HWP_CAPABILITIES.Highest_Performance (البتات 7:0) مدعومة |
| 16 | تجاوز HWP_PECI_ | يدعم تجاوز HWP PECIIA32_HWP_PECI_REQUEST_INFO - البتات 63:60 من ( 775h) MSR |
| 17 | مرن_ HWP | HWP المرن - البتات 63:59 من IA32_HWP_REQUESTMSR |
| 18 | HWP_REQUEST_ FAST_ACCESS | وضع الوصول السريع لـ IA32_HWP_REQUESTMSR مدعوم [ ب ] |
| 19 | ملاحظات الأجهزة | واجهة التغذية الراجعة للأجهزة. تمت إضافة أجهزة تسجيل الرسائل المغناطيسية (MSRs):
|
| 20 | HWP_REQUEST_IGNORE_IDLE | IA32_HWP_REQUESTيتم تجاهل المعالج المنطقي الخامل عندما يكون واحد فقط من المعالجين المنطقيين اللذين يشتركان في معالج فعلي نشطًا. |
| 21 | (محجوز) | |
| 22 | HWP Control MSR | IA32_HWP_CTL( 776h) دعم MSR [ 108 ] |
| 23 | مدير الموضوع | يدعم Intel Thread Director. تمت إضافة MSRs:
|
| 24 | ( IA32_THERM_INTERRUPT MSR bit 25 supported) [ c ] | |
| 31:25 | (محجوز) | |
- ↑ في معالجات عائلة Intel Pentium 4 (
GenuineIntelالعائلة 0Fh) فقط، يتم استخدام البت 2 من EAX للإشارة إلى OPP (حماية نقطة التشغيل) [ 107 ] بدلاً من ARAT. - ↑ لتمكين وضع الوصول السريع (غير التسلسلي) لـ
IA32_HWP_REQUESTMSR على وحدات المعالجة المركزية التي تدعمه، من الضروري تعيين البت 0 منFAST_UNCORE_MSRS_CTL(657h) MSR. - ↑ تم إدراج بت CPUID.(EAX=6):EAX[24] في المراجعات من 078 إلى 087 من دليل Intel SDM، ولكن تمت إزالته من المراجعة 088 فصاعدًا. وهو غير مُفعّل في أي معالج معروف.
| قليل | EBX | بورصة السلع الأوروبية (ECX) | EDX | قليل | ||
|---|---|---|---|---|---|---|
| 0 | عدد عتبات المقاطعة في المستشعر الحراري الرقمي | واجهة التردد الفعال المدعومة - IA32_MPERF( 0E7h) و IA32_APERF( 0E8h) MSRs | تقارير ملاحظات الأجهزة: دعم تقارير قدرات الأداء | 0 | ||
| 1 | (قدرة ACNT2) [ أ ] | تقارير ملاحظات الأجهزة: دعم تقارير كفاءة الأداء | 1 | |||
| 2 | (محجوز) | (محجوز) | 2 | |||
| 3 | قدرة تحيز الأداء والطاقة - IA32_ENERGY_PERF_BIAS( 1B0h) MSR | 3 | ||||
| 7:4 | (محجوز) | (محجوز) | 7:4 | |||
| 11:8 | عدد فئات Intel Thread Director التي يدعمها الجهاز | حجم بنية واجهة التغذية الراجعة للأجهزة (بوحدات 4 كيلوبايت) ناقص 1 | 11:8 | |||
| 15:12 | (محجوز) | 15:12 | ||||
| 31:16 | (محجوز) | فهرس صف هذا المعالج المنطقي في بنية واجهة التغذية الراجعة للأجهزة | 31:16 |
EAX=7، ECX=0: الميزات الموسعة
يُعيد هذا الأمر علامات الميزات الموسعة في EBX وECX وEDX. ويُعيد القيمة القصوى لـ ECX عندما تكون EAX=7 في EAX.
| قليل | EBX | بورصة السلع الأوروبية (ECX) | EDX | قليل | |||||
|---|---|---|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | قصير | ميزة | ||||
| 0 | fsgsbase | الوصول إلى قاعدة %fs و %gs | prefetchwt1 | PREFETCHWT1تعليمات | (sgx-tem) [ a ] | ؟ | 0 | ||
| 1 | tsc_adjust | IA32_TSC_ADJUST MSR | avx512-vbmi | تعليمات معالجة بتات المتجهات AVX-512 | sgx-keys | خدمات التصديق لتقنية Intel SGX | 1 | ||
| 2 | sgx | ملحقات حماية البرامج | umip | منع التعليمات في وضع المستخدم | avx512-4vnniw | تعليمات الشبكة العصبية ذات 4 سجلات AVX-512 | 2 | ||
| 3 | مؤشر كتلة الجسم 1 | مجموعة تعليمات معالجة البتات 1 | pku | مفاتيح حماية الذاكرة لصفحات وضع المستخدم | avx512-4fmaps | AVX-512 ضرب وتجميع 4 سجلات بدقة مفردة | 3 | ||
| 4 | hle | إلغاء قفل الأجهزة TSX | أوسبك | تم تمكين PKU بواسطة نظام التشغيل | fsrm | سريع قصيرREP MOVSB | 4 | ||
| 5 | avx2 | ملحقات المتجهات المتقدمة 2 | انتظار الحزمة | تعليمات الإيقاف المؤقت والمراقبة/الانتظار على مستوى المستخدم ( TPAUSE, UMONITOR, UMWAIT) | uintr | مقاطعات المستخدم بين المعالجات | 5 | ||
| 6 | استثناءات fdp فقط | يتم تحديث سجل مؤشر بيانات وحدة الفاصلة العائمة x87 فقط عند حدوث استثناءات | avx512-vbmi2 | تعليمات معالجة بتات المتجهات AVX-512 2 | (محجوز) | 6 | |||
| 7 | سمب | منع تنفيذ وضع المشرف | cet_ss/shstk | فرض التحكم في التدفق (CET): مكدس الظل (اسم بديل لـ SHSTK) | (محجوز) | 7 | |||
| 8 | مؤشر كتلة الجسم 2 | مجموعة تعليمات معالجة البتات 2 | gfni | تعليمات ميدان غالوا | avx512-vp2intersect | تعليمات تقاطع المتجهات AVX-512 على الأعداد الصحيحة 32/64 بت | 8 | ||
| 9 | إيه إم إس | محسّنREP MOVSB/STOSB | فايس | مجموعة تعليمات AES المتجهة (VEX-256/EVEX) | srbds-ctrl | إجراءات تخفيف أخذ عينات البيانات من مخزن السجلات الخاص | 9 | ||
| 10 | معرف العميل | INVPCIDتعليمات | vpclmulqdq | مجموعة تعليمات CLMUL (VEX-256/EVEX) | إم دي كلير | VERWتقوم هذه التعليمات بمسح مخازن وحدة المعالجة المركزية المؤقتة. | 10 | ||
| 11 | rtm | ذاكرة المعاملات المقيدة في بورصة تورنتو | avx512-vnni | تعليمات الشبكة العصبية المتجهة AVX-512 | rtm-always-abort [ 111 ] | تم إلغاء جميع معاملات بورصة تورنتو | 11 | ||
| 12 | rdt-m/pqm | مراقبة مدير موارد إنتل (RDT) أو مراقبة جودة الخدمة لمنصة AMD | avx512-bitalg | تعليمات AVX-512 BITALG | (محجوز) | 12 | |||
| 13 | إهمال fcs_fds_ | تم إيقاف دعم وظائف CS وDS في معالج الفاصلة العائمة x87 | tme_en | تتوفر خدمة تشفير الذاكرة الكاملة (MSRs) | rtm-force-abort [ 111 ] | 0x10fيتوفر TSX_FORCE_ABORT (MSR ) | 13 | ||
| 14 | mpx | Intel MPX (ملحقات حماية الذاكرة) | avx512-vpopcntdq | AVX-512 عد عدد متجهات الكلمات المزدوجة والرباعية | التسلسل | SERIALIZEتعليمات | 14 | ||
| 15 | rdt-a/pqe | تخصيص موارد Intel Resource Director (RDT) أو فرض جودة الخدمة لمنصة AMD | (fzm) [ أ ] | ؟ | هجين | مزيج من أنواع وحدات المعالجة المركزية في بنية المعالج (مثل Alder Lake ) | 15 | ||
| 16 | avx512-f | مؤسسة AVX-512 | la57 | ترقيم الصفحات ذو 5 مستويات (57 بت عنوان) | tsxldtrk | تعليمات تعليق/استئناف تتبع عنوان تحميل TSXTSUSLDTRK ( و TRESLDTRK) | 16 | ||
| 17 | avx512-dq | تعليمات AVX-512 للكلمات المزدوجة والرباعية | ماواو | قيمة تعديل عرض عنوان MPX في مساحة المستخدم المستخدمة بواسطة BNDLDXتعليمات BNDSTXIntel MPX في وضع 64 بت | (محجوز) | 17 | |||
| 18 | rdseed | RDSEEDتعليمات | pconfig | تهيئة النظام الأساسي (تعليمات تقنيات تشفير الذاكرة) | 18 | ||||
| 19 | adx | Intel ADX (امتدادات تعليمات الجمع والحمل متعددة الدقة) | lbr | سجلات الفرع الأخير المعمارية | 19 | ||||
| 20 | smap | منع الوصول إلى وضع المشرف | اختبار CET-IBT | تطبيق تدفق التحكم (CET): تتبع الفروع غير المباشر | 20 | ||||
| 21 | avx512-ifma | تعليمات الضرب والجمع المدمجة للأعداد الصحيحة AVX-512 | (محجوز) | 21 | |||||
| 22 | (pcommit) | ( تعليمات PCOMMIT ، مهملة) [ 113 ] | rdpid | RDPID(قراءة مُعرّف المعالج) والتعليمات و IA32_TSC_AUX MSR | amx-bf16 | حساب مربعات AMX على أرقام bfloat16 | 22 | ||
| 23 | clflushopt | CLFLUSHOPTتعليمات | kl | خزانة مفاتيح AES | avx512-fp16 | تعليمات حسابية للفاصلة العائمة بنصف الدقة AVX-512 [ 114 ] | 23 | ||
| 24 | clwb | CLWB(تعليمات كتابة سطر ذاكرة التخزين المؤقت) | كشف قفل الحافلة | استثناءات تصحيح أخطاء قفل ناقل البيانات | بلاطة amx | تعليمات تحميل/تخزين بلاطات AMX | 24 | ||
| 25 | نقطة | تتبع معالج إنتل | cldemote | CLDEMOTE(تعليمات خفض مستوى سطر التخزين المؤقت) | amx-int8 | حساب بلاطات AMX على أعداد صحيحة 8 بت | 25 | ||
| 26 | avx512-pf | تعليمات الجلب المسبق AVX-512 | (mprr) [ أ ] | ؟ | ibrs / spec_ctrl | التحكم في المضاربة، جزء من التحكم في الفروع غير المباشرة (IBC): المضاربة المقيدة بالفروع غير المباشرة (IBRS) وحاجز التنبؤ بالفروع غير المباشرة (IBPB) [ 115 ] [ 116 ] | 26 | ||
| 27 | avx512-er | تعليمات AVX-512 الأسية والتبادلية | موفديري | MOVDIRIتعليمات | ستيب | مُتنبئ التفرع غير المباشر أحادي الخيط، جزء من IBC [ 115 ] | 27 | ||
| 28 | avx512-cd | تعليمات الكشف عن التعارضات في AVX-512 | movdir64b | MOVDIR64Bتعليمات (تخزين مباشر 64 بايت) | L1D_FLUSH | IA32_FLUSH_CMD MSR | 28 | ||
| 29 | شا | امتدادات SHA-1 و SHA-256 | enqcmd | متاجر قائمة الانتظار و EMQCMD/أو EMQCMDSالتعليمات | قدرات معمارية | IA32_ARCH_CAPABILITIES MSR (يسرد إجراءات التخفيف من مخاطر القنوات الجانبية التخمينية [ 115 ] ) | 29 | ||
| 30 | avx512-bw | تعليمات بايت وكلمة AVX-512 | sgx-lc | إعدادات إطلاق بورصة سنغافورة | القدرات الأساسية | IA32_CORE_CAPABILITIES MSR (يسرد القدرات الأساسية الخاصة بالطراز) | 30 | ||
| 31 | avx512-vl | امتدادات طول المتجه AVX-512 | pks | مفاتيح الحماية لصفحات وضع المشرف | sbd | تعطيل تجاوز التخزين التخميني، [ 115 ] كإجراء تخفيفي لتجاوز التخزين التخميني (IA32_SPEC_CTRL) | 31 | ||
EAX=7، ECX=1: الميزات الموسعة
هذا يُعيد علامات الميزات الموسعة في جميع السجلات الأربعة.
| قليل | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | EDX | قليل | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | قصير | ميزة | قصير | ميزة | |||||
| 0 | sha512 | امتدادات SHA-512 | ببين | Intel PPIN (رقم جرد المعالج المحمي): IA32_PPIN_CTL ( 04Eh) و IA32_PPIN ( 04Fh) MSRs. | RDT_M_ غير متماثل | قدرة مراقبة RDT غير المتماثلة | (محجوز) | 0 | ||||
| 1 | sm3 | امتدادات تجزئة SM3 | pbndkb | تشفير التخزين الكامل: PBNDKBالتعليمات و TSE_CAPABILITY ( 9F1h) MSR. | RDT_A_ غير متماثل | قدرة تخصيص RDT غير المتماثلة | (avx512-vnni-fp16) | ؟ [ أ ] | 1 | |||
| 2 | sm4 | امتدادات تشفير SM4 | (محجوز) | (legacy_ reduced_isa ) | (X86S، [ 117 ] ملغى [ 118 ] ) | (avx512-vnni-int8) | ؟ [ أ ] | 2 | ||||
| 3 | راو-إنت | العمليات الذرية عن بُعد على الأعداد الصحيحة: AADD، AAND، AOR، AXORتعليمات | CPUID MAXVAL_ LIM_RMV | إذا كانت القيمة 1، فلا يمكن ضبط البت 22 IA32_MISC_ENABLEعلى 1 لتقييد القيمة التي يتم إرجاعها بواسطة CPUID.(EAX=0):EAX[7:0]. | (محجوز) | (avx512-ne-convert) | ؟ [ أ ] | 3 | ||||
| 4 | avx-vnni | تعليمات شبكة AVX العصبية المتجهة (VNNI) (مشفرة بتقنية VEX) | (محجوز) | (sipi64) | SIPI 64 بت (مقاطعة بدء التشغيل بين المعالجات) (جزء من X86S الملغاة) | avx-vnni-int8 | تعليمات AVX VNNI INT8 | 4 | ||||
| 5 | avx512-bf16 | تعليمات AVX-512 للأرقام من نوع bfloat16 | (محجوز) | MSR_IMM | الأشكال الفورية RDMSRللتعليماتWRMSRNS | avx-ne-convert | تعليمات تحويل الأعداد العشرية بدون استثناءات AVX ( bfloat16 ↔FP32 و FP16 →FP32) | 5 | ||||
| 6 | معشوقة | الفصل الخطي لمساحة العناوين (CR4 بت 27) | (محجوز) | (محجوز) | (محجوز) | 6 | ||||||
| 7 | cmpccxadd | CMPccXADDتعليمات | (محجوز) | (محجوز) | (محجوز) | 7 | ||||||
| 8 | archperf monext | مراقبة الأداء المعماري - ورقة ممتدة (EAX=23h) | (محجوز) | (محجوز) | مركب AMX | دعم AMX للبلاطات "المعقدة" ( TCMMIMFP16PSو TCMMRLFP16PS) | 8 | |||||
| 9 | (dedup) [ b ] | ؟ | (محجوز) | (محجوز) | (محجوز) | 9 | ||||||
| 10 | fzrm | طول صفري سريع REP MOVSB | (محجوز) | (محجوز) | avx-vnni-int16 | تعليمات AVX VNNI INT16 | 10 | |||||
| 11 | fsrs | سريع وقصيرREP STOSB | (محجوز) | بارِع | ملحقات الحوسبة للذكاء الاصطناعي | (avx512-vnni-int16) | ؟ [ أ ] | 11 | ||||
| 12 | rsrcs | سريع وقصير REP CMPSBوREP SCASB | (محجوز) | (محجوز) | (محجوز) | 12 | ||||||
| 13 | (محجوز) | (محجوز) | (محجوز) | utmr | أحداث مؤقت المستخدم: IA32_UINTR_TIMER ( 1B00h) MSR | 13 | ||||||
| 14 | (محجوز) | (محجوز) | (محجوز) | prefetchi | تعليمات الجلب المسبق لذاكرة التخزين المؤقت للتعليمات ( PREFETCHIT0و PREFETCHIT1) [ ج ] | 14 | ||||||
| 15 | (محجوز) | (محجوز) | (محجوز) | user_msr | تعليمات الوصول إلى MSR في وضع المستخدم ( URDMSRو UWRMSR) | 15 | ||||||
| 16 | (محجوز) | (محجوز) | (محجوز) | (avx512-bf16-ne) | ؟ [ أ ] | 16 | ||||||
| 17 | فريد | إمكانية الإرجاع المرن وتوصيل الفعاليات [ 119 ] | (محجوز) | (محجوز) | uiret-uif-from-rflags | إذا كانت القيمة 1، فإن UIRETتعليمة (إرجاع مقاطعة المستخدم) ستضبط UIF (علامة مقاطعة المستخدم) على قيمة البت 1 من صورة RFLAGS التي تم إخراجها من المكدس. | 17 | |||||
| 18 | lkgs | LKGSالتعليمات [ 119 ] | (محجوز) | (محجوز) | cet-sss | إذا كانت القيمة 1، فإن مكدسات الظل (SSS) الخاصة بمشرف فرض تدفق التحكم (CET) مضمونة عدم الانشغال المبكر طالما أن تبديل مكدس الظل لا يتسبب في حدوث أخطاء في الصفحات على المكدس الذي يتم التبديل إليه. [ 120 ] [ 121 ] [ 122 ] | 18 | |||||
| 19 | wrmsrns | WRMSRNSالتعليمات (كتابة غير متسلسلة إلى سجلات MSR ) | (محجوز) | (محجوز) | avx10 | AVX10 Converged Vector ISA (انظر أيضًا leaf 24h) [ 123 ] | 19 | |||||
| 20 | nmi_src | الإبلاغ عن مصادر NMI [ 119 ] | (محجوز) | (محجوز) | (محجوز) | 20 | ||||||
| 21 | amx-fp16 | تعليمات AMX لأرقام FP16 | (محجوز) | (محجوز) | APX_F | ملحقات الأداء المتقدمة ، الأساس (يضيف ترميزات REX2 و EVEX الموسعة لدعم 32 GPRs، بالإضافة إلى بعض التعليمات الجديدة) [ 124 ] | 21 | |||||
| 22 | hreset | HRESETالتعليمات، IA32_HRESET_ENABLE ( 17DAh) MSR، و Processor History Reset Leaf (EAX=20h) | (محجوز) | (محجوز) | شهادة السكرتير | إذا كان 1، فإن تقنيات بيئة التنفيذ الموثوقة ( Intel TDX و Intel SGX ) تدعم المصادقة المتجذرة في محرك الأمان الموجود على الشريحة. | 22 | |||||
| 23 | avx-ifma | تعليمات AVX IFMA | (محجوز) | (محجوز) | انتظر | تعليمات MWAIT [ د ] | 23 | |||||
| 24 | (محجوز) | (محجوز) | (محجوز) | slsm | وضع التزامن الثابت (البت 0 من IA32_INTEGRITY_STATUSسجل MSR متاح) | 24 | ||||||
| 25 | (محجوز) | (محجوز) | (محجوز) | (محجوز) | 25 | |||||||
| 26 | لام | إخفاء العناوين الخطي | (محجوز) | (محجوز) | (محجوز) | 26 | ||||||
| 27 | msrlist | RDMSRLISTوالتعليمات WRMSRLIST، و IA32_BARRIER ( 02Fh) MSR | (محجوز) | (محجوز) | (محجوز) | 27 | ||||||
| 28 | (محجوز) | (mpsadbw_512) | ؟ [ أ ] | (محجوز) | (محجوز) | 28 | ||||||
| 29 | (محجوز) | (محجوز) | (محجوز) | (محجوز) | 29 | |||||||
| 30 | invd_ disable_post_ bios_done | إذا كان الخيار 1، فإنه يدعم INVDمنع تنفيذ التعليمات بعد اكتمال BIOS. | (avx512-rao-fp) | ؟ [ أ ] | (محجوز) | (محجوز) | 30 | |||||
| 31 | موفرز | MOVRSوالتعليمات PREFETCHRST2المدعومة (قراءة الذاكرة/الجلب المسبق مع تلميح القراءة المشتركة) | (avx512-rao-fp) | ؟ [ أ ] | (محجوز) | (محجوز) | 31 | |||||
- 1 2 3 4 5 6 7 8 اعتبارًا من أبريل 2026، فإن البتات "mpsadbw_512" و"avx512-rao-fp" و"avx-rao-fp" و"avx512-vnni-fp16" و"avx512-vnni-int8" و"avx512-ne-convert" و"avx512-vnni-int16" و"avx512-bf16-ne" مدرجة فقط في مجموعة من جداول ABI لوحدة Intel TDX من أبريل 2026 [ 125 ] وليست موجودة في أي معالج معروف.
- ↑ اعتبارًا من أبريل 2024، تم إدراج بت DEDUP فقط فيوثائق Intel TDX [ 112 ] ولم يتم تعيينه في أي معالج معروف.
- ↑ في معالجات AMD، لا يتم الإشارة إلى دعم تعليمات جلب التعليمات المسبقة من ذاكرة التخزين المؤقت بواسطة ،
CPUID.(EAX=7,ECX=1):EDX[14]ولكن بدلاً من ذلك بواسطةCPUID.(EAX=8000_0021h):EAX[20]. - قد يُشار إلى دعم التعليمة إما بواسطة CPUID . (EAX=1).ECX[3] أو CPUID.(EAX=7,ECX=1).EDX[23]. (يمكن تعيين أحدهما أو كليهما). يشير الأول إلى دعم التعليمة، بينما لا يُشير الثاني إلى وجودها من عدمه.هذاالخيار موجودًا في الأنظمة التي تدعم ميزة "Monitorless MWAIT" (والتي يُشار إليها بدورها بواسطة CPUID.(EAX=5).ECX[3] ).
MWAITMONITORMONITORMWAITMONITOR
EAX=7، ECX=2: الميزات الموسعة
هذا يُعيد علامات الميزات الموسعة في EDX.
EAX و EBX و ECX محجوزة.
| قليل | EDX | |
|---|---|---|
| قصير | ميزة | |
| 0 | psfd | تم دعم تعطيل خاصية التنبؤ السريع لإعادة توجيه البيانات [ 126 ] . ( SPEC_CTRL(MSR 48h) بت 7) |
| 1 | ipred_ctrl | عناصر التحكم IPRED_DIS [ 127 ] مدعومة. ( SPEC_CTRLالبتات 3 و4) يمنع IPRED_DIS تنفيذ التعليمات في هدف فرع غير مباشر بشكل تخميني حتى يتم حل عنوان هدف الفرع. |
| 2 | rrsba_ctrl | يدعم RRSBA تعطيل السلوك [ 128 ] [ 127 ]SPEC_CTRL ( البتات 5 و6) . |
| 3 | ddpd_u | تم دعم تعطيل جلب البيانات المسبق المعتمد على البيانات [ 129 ] . ( SPEC_CTRLالبت 8) |
| 4 | bhi_ctrl | تم دعم سلوك BHI_DIS_S [ 127 ]SPEC_CTRL ( البت 10) .يمنع BHI_DIS_S تحديد الأهداف المتوقعة للفروع غير المباشرة المنفذة في الحلقة 0/1/2 بناءً على سجل الفروع من الفروع المنفذة في الحلقة 3. |
| 5 | mcdt_no | إذا تم ضبطه، فإن المعالج لا يُظهر توقيتًا يعتمد على تكوين MXCSR . |
| 6 | تعطيل قفل UC | تم دعم ميزة تعطيل قفل UC (مع استثناءات قفل UC التي تم الإبلاغ عنها كـ #AC). |
| 7 | monitor_ mitg_no | إذا تم ضبطه، فهذا يشير إلى أن التعليمات MONITOR/ UMONITORلا تتأثر بمشاكل الأداء/الطاقة الناتجة عن تجاوز التعليمات لسعة جدول تتبع الشاشة الداخلية. [ 130 ] |
| 31:8 | (محجوز) | |
EAX=0Dh: ميزات ومكونات حالة XSAVE
تُستخدم هذه الورقة لسرد ميزات XSAVE ومكونات الحالة.
صُممت امتدادات مجموعة تعليمات XSAVE لحفظ/استعادة حالة وحدة المعالجة المركزية الموسعة (عادةً لغرض تبديل السياق ) بطريقة قابلة للتوسيع لتشمل امتدادات جديدة لمجموعة التعليمات دون أن يحتاج رمز تبديل السياق في نظام التشغيل إلى فهم تفاصيل هذه الامتدادات الجديدة. ويتم ذلك من خلال تعريف سلسلة من مكونات الحالة ، لكل منها حجم وإزاحة ضمن منطقة حفظ محددة، ويتوافق كل منها مع مجموعة فرعية من الحالة المطلوبة لامتداد معين لوحدة المعالجة المركزية. EAX=0Dhويُستخدم مُعرّف وحدة المعالجة المركزية (CPUID) لتوفير معلومات حول مكونات الحالة التي تدعمها وحدة المعالجة المركزية وأحجامها/إزاحاتها، بحيث يتمكن نظام التشغيل من حجز المساحة المناسبة وتعيين بتات التمكين المرتبطة بها.
يمكن تقسيم مكونات الحالة إلى مجموعتين: حالة المستخدم (عناصر الحالة المرئية للتطبيق، مثل سجلات متجه AVX-512 )، وحالة المشرف (عناصر الحالة التي تؤثر على التطبيق ولكنها غير مرئية للمستخدم مباشرةً، مثل إعدادات مقاطعة وضع المستخدم). يتم تفعيل عناصر حالة المستخدم بتعيين بتاتها المرتبطة في XCR0سجل التحكم، بينما يتم تفعيل عناصر حالة المشرف بتعيين بتاتها المرتبطة في سجل إدارة الذاكرة IA32_XSS( 0DA0hMSR). تصبح عناصر الحالة المشار إليها مكونات الحالة التي يمكن حفظها واستعادتها باستخدام مجموعة تعليمات XSAVE/ .XRSTOR
تستطيع آلية XSAVE التعامل مع ما يصل إلى 63 مكونًا من مكونات الحالة بهذه الطريقة. يحتوي المكونان 0 و1 ( x87 و SSE على التوالي) على إزاحات وأحجام ثابتة. أما بالنسبة للمكونات من 2 إلى 62، فيمكن الاستعلام عن أحجامها وإزاحاتها وبعض العلامات الإضافية بتنفيذ الأمر CPUIDوتعيينها EAX=0Dhإلى ECXفهرس مكون الحالة. سيعيد هذا الأمر العناصر التالية في سجلات EAX وEBX وECX (مع حجز EDX):
| قليل | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | قليل |
|---|---|---|---|---|
| 0 | حجم مكون الحالة (بالبايت) | إزاحة (بالبايت) مكون الحالة من بداية منطقة الحفظ XSAVE/XRSTOR(هذا الإزاحة يساوي 0 لمكونات حالة المشرف، حيث لا يمكن حفظها/استعادتها إلا باستخدام تعليمات | مكون حالة المستخدم/المشرف:
| 0 |
| 1 | تفعيل محاذاة 64 بايت عند استخدام ضغط حفظ الحالة. إذا تم ضبط هذا البت لمكون حالة، فسيتم عند تخزين الحالة مع الضغط، إدراج حشو بين مكون الحالة السابق ومكون الحالة الحالي حسب الحاجة لتوفير محاذاة 64 بايت. أما إذا لم يتم ضبط هذا البت، فسيتم تخزين مكون الحالة مباشرةً بعد المكون السابق. | 1 | ||
| 2 | يدعم XFD Faulting لمكون الحالة. | 2 | ||
| 31:3 | (محجوز) | 31:3 |
إن محاولة الاستعلام عن مكون حالة غير مدعوم بهذه الطريقة تؤدي إلى تعيين قيم EAX وEBX وECX وEDX جميعها إلى 0.
تُستخدم الأوراق الفرعية 0 و1 من CPUIDالورقة لتوفير معلومات عن الميزات:0Dh
| EBX | بورصة السلع الأوروبية (ECX) | EDX:EAX |
|---|---|---|
الحد الأقصى لحجم منطقة حفظ XSAVE (بالبايت) لمجموعة مكونات الحالة المحددة حاليًا في XCR0. | الحد الأقصى لحجم منطقة حفظ XSAVE (بالبايت) إذا XCR0تم تمكين جميع مكونات الحالة المدعومة على وحدة المعالجة المركزية هذه في نفس الوقت. | خريطة بتية 64 بت لمكونات الحالة مدعومة XCR0على وحدة المعالجة المركزية هذه. |
| إي إيه إكس | EBX | EDX:ECX |
|---|---|---|
| علامات ميزة XSAVE (انظر الجدول أدناه) | حجم (بالبايت) منطقة XSAVE التي تحتوي على جميع مكونات الحالة التي تم تعيينها XCR0ودمجها حاليًا IA32_XSS. | خريطة بتية 64 بت لمكونات الحالة مدعومة IA32_XSSعلى وحدة المعالجة المركزية هذه. |
| قليل | إي إيه إكس | |
|---|---|---|
| قصير | ميزة | |
| 0 | xsaveopt | XSAVEOPTالتعليمات: احفظ مكونات الحالة التي تم تعديلها منذ آخر مرةXRSTOR |
| 1 | xsavec | XSAVECالتعليمات: حفظ/استعادة الحالة مع الضغط |
| 2 | xgetbv_ecx1 | XGETBVبدعمECX=1 |
| 3 | xss | XSAVESوالتعليمات XRSTORSو IA32_XSSMSR: حفظ/استعادة الحالة مع الضغط، بما في ذلك حالة المشرف. |
| 4 | xfd | يدعم XFD (تعطيل الميزات الموسعة) |
| 31:5 | (محجوز) | |
اعتبارًا من يوليو 2023، فإن مكونات حالة XSAVE التي تم تحديدها معماريًا هي:
| فِهرِس | وصف | مُفعّل بواسطة |
|---|---|---|
| 0 | حالة x87 | XCR0 [ أ ] |
| 1 | حالة SSE : XMM0- XMM15وMXCSR | XCR0 |
| 2 | حالة AVX : النصف العلوي من YMM0إلىYMM15 | |
| 3 | حالة MPXBND0 : - BND3سجلات الحدود | |
| 4 | حالة MPX : BNDCFGUوالسجلاتBNDSTATUS | |
| 5 | حالة AVX-512 : سجلات قناع العمليات k0-k7 | |
| 6 | حالة AVX-512 "ZMM_Hi256": النصف العلوي من ZMM0إلىZMM15 | |
| 7 | حالة AVX-512 "Hi16_ZMM": ZMM16-ZMM31 | |
| 8 | حالة تتبع المعالج | IA32_XSS |
| 9 | سجل مفاتيح حماية المستخدم (PKRU) | XCR0 |
| 10 | حالة PASID (معرف مساحة عنوان العملية) | IA32_XSS |
| 11 | حالة CET_U (تقنية فرض تدفق التحكم: وظائف وضع المستخدم MSRs) | |
| 12 | حالة CET_S (CET: مؤشرات مكدس الظل للحلقات 0 و1 و2) | |
| 13 | حالة HDC (دورة تشغيل الأجهزة) | |
| 14 | حالة مقاطعات وضع المستخدم (UINTR) | |
| 15 | حالة سجل الفرع الأخير (LBR) | |
| 16 | حالة HWP (التحكم في حالة P للأجهزة) | |
| 17 | حالة تكوين بلاطة AMX :TILECFG | XCR0 |
| 18 | سجلات بيانات بلاطات AMX: tmm0-tmm7 | |
| 19 | سجلات APX العامة الموسعة: r16- r31[ 124 ] | |
| من 20 إلى 61 | (محجوز) | |
| 62 | تقنية التنميط الخفيف (LWP) (خاصة بمعالجات AMD) | XCR0 |
| 63 | (محجوز) [ ب ] | |
EAX=12h: إمكانيات SGX
توفر هذه الورقة معلومات حول الإمكانيات المدعومة لميزة Intel Software Guard Extensions (SGX). تحتوي الورقة على عدة أوراق فرعية، يتم اختيارها باستخدام ECX.
يوفر الفرع الفرعي 0 معلومات حول وظائف SGX المدعومة في EAX وأقصى أحجام SGX المدعومة في EDX؛ ECX محجوز. يوفر EBX خريطة بتات يمكن ضبطها في حقل MISCSELECT في SECS (بنية التحكم في SGX Enclave) - يُستخدم هذا الحقل للتحكم في المعلومات المكتوبة إلى منطقة MISC في SSA (منطقة حفظ حالة SGX) عند حدوث AEX (خروج SGX غير متزامن من Enclave).
| قليل | إي إيه إكس | EBX | EDX | قليل | |||||
|---|---|---|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | قصير | ميزة | ||||
| 0 | sgx1 | وظائف أوراق SGX1 | معلومات إضافية | اختيار غير دقيق: الإبلاغ عن معلومات حول خطأ الصفحة واستثناء الحماية العامة الذي حدث داخل المنطقة الآمنة | حجم MaxEnclave_Not64 | Log2 لحجم المنطقة المعزولة الأقصى المدعوم في الوضع غير 64 بت | 0 | ||
| 1 | sgx2 | وظائف SGX2 الطرفية | سي بي إنفو | اختيار خاطئ: الإبلاغ عن معلومات حول استثناء حماية التحكم الذي حدث داخل المنطقة الآمنة | 1 | ||||
| 2 | (محجوز) | (محجوز) | 2 | ||||||
| 3 | (محجوز) | (محجوز) | 3 | ||||||
| 4 | (محجوز) | (محجوز) | 4 | ||||||
| 5 | البرمجيات مفتوحة المصدر [ أ ] | ENCLVالأوراق: EINCVIRTCHILD، EDECVIRTCHILDوESETCONTEXT | (محجوز) | 5 | |||||
| 6 | ENCLS_C [ أ ] [ 132 ] | ENCLSأوراق: ETRACKC، ERDINFO، ELDBC،ELDUC | (محجوز) | 6 | |||||
| 7 | تقرير التحقق 2 | ENCLUورقة:EVERIFYREPORT2 | (محجوز) | 7 | |||||
| 8 | (محجوز) | (محجوز) | حجم MaxEnclave_64 | لوغاريتم 2 لأقصى حجم للمحمية المدعوم في وضع 64 بت | 8 | ||||
| 9 | (محجوز) | (محجوز) | 9 | ||||||
| 10 | EUPDATESVN | ENCLSورقة:EUPDATESVN | (محجوز) | 10 | |||||
| 11 | EDECCSSA | ENCLUورقة:EDECCSSA | (محجوز) | 11 | |||||
| 12 | 256BITSGX | ENCLUوظائف الأوراق EGETKEY256وEREPORT2 | (محجوز) | 12 | |||||
| 13 | (محجوز) | (محجوز) | 13 | ||||||
| 14 | (محجوز) | (محجوز) | 14 | ||||||
| 15 | (محجوز) | (محجوز) | 15 | ||||||
| 31:16 | (محجوز) | (محجوز) | (محجوز) | 31:16 | |||||
- ١ ٢ تم إدراج بتات امتدادات الاكتتاب الزائد لـ SGX (CPUID.(EAX=12h,ECX=0):EAX[bits 5 and 6]) في المراجعات من ٠٦٥ إلى ٠٨٧ من Intel SDM، ولكن تمت إزالتها من المراجعة ٠٨٨ فصاعدًا. من المعروف أن هذه البتات كانت مُفعّلة في بعضمعالجات IceLake-U على الأقل. [ ١٣١ ]
توفر الورقة الفرعية 1 خريطة بتات تحدد البتات التي يمكن ضبطها في حقل السمات (ATTRIBUTES) ذي 128 بتًا في سجلات SECS الموجودة في EDX:ECX:EBX:EAX (ينطبق هذا على نسخة SECS المستخدمة كمدخل لوظيفة ENCLS[ECREATE]الورقة). أما البتات الـ 64 العليا (الموجودة في EDX:ECX) فهي خريطة بتات تحدد البتات التي يمكن ضبطها في XFRM (قناع طلب ميزة X) - هذا القناع هو قناع بتات يحدد مكونات حالة وحدة المعالجة المركزية (انظر الورقة 0Dh) التي سيتم حفظها في SSA في حالة AEX؛ وله نفس تخطيط XCR0سجل التحكم. أما البتات الأخرى فهي موجودة في EAX وEBX، كما يلي:
| قليل | إي إيه إكس | EBX | قليل | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 0 | (تهيئة) | (يجب أن يكون 0) [ أ ] | (محجوز) | 0 | ||
| 1 | تصحيح الأخطاء | السماح للمصحح بقراءة وكتابة بيانات المنطقة الآمنة EDBGRDباستخدامEDBGWR | 1 | |||
| 2 | MODE64BIT | بيئة معزولة بنظام 64 بت | 2 | |||
| 3 | (محجوز) | 3 | ||||
| 4 | مفتاح التزويد | مفتاح التزويد متاح منEGETKEY | 4 | |||
| 5 | مفتاح EINITTOKEN | EINITمفتاح الرمز المميز متوفر منEGETKEY | 5 | |||
| 6 | بتوقيت وسط أوروبا | تتيح سمات تقنية فرض تدفق التحكم (CET) | 6 | |||
| 7 | KSS | الفصل والمشاركة الرئيسية | 7 | |||
| 8 | (محجوز) | 8 | ||||
| 9 | (محجوز) | 9 | ||||
| 10 | AEXNOTIFY | قد تتلقى الخيوط داخل المنطقة المعزولة إشعارات AEX [ 133 ] | 10 | |||
| 31:11 | (محجوز) | 31:11 | ||||
- ↑ بالنسبة لنسخة SECS الموجودة داخل منطقة معزولة، تُستخدم البتة 0 (INIT) من SECS.ATTRIBUTES للإشارة إلى أن المنطقة المعزولة قد تم تهيئتها
ENCLS[EINIT]. يجب أن تكون هذه البتة 0 في نسخة SECS المُدخلة إلى الدالةENCLS[CREATE].
تُستخدم الأوراق الفرعية 2 وما فوق لتوفير معلومات حول مناطق الذاكرة الفعلية المتاحة للاستخدام كأقسام EPC (ذاكرة التخزين المؤقت لصفحة Enclave) ضمن SGX.
| أجزاء | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | EDX | أجزاء | |||
|---|---|---|---|---|---|---|---|---|
| 3:0 | نوع الورقة الفرعية:
| البتات من 51 إلى 32 من عنوان القاعدة الفيزيائية لقسم EPC | خصائص قسم شهادة أداء الطاقة:
| البتات من 51 إلى 32 من حجم قسم EPC | 3:0 | |||
| 11:4 | (محجوز) | (محجوز) | 11:4 | |||||
| 19:12 | البتات من 31 إلى 12 من عنوان القاعدة الفيزيائية لقسم EPC | البتات من 31 إلى 12 من حجم قسم EPC | 19:12 | |||||
| 31:20 | (محجوز) | (محجوز) | 31:20 |
EAX=14h: تتبع المعالج
توفر هذه الورقة معلومات عن ميزات Intel Processor Trace (المعروف أيضًا باسم Real Time Instruction Trace).
بالنسبة للورقة الفرعية 0، فإن القيمة المُعادة في EAX هي فهرس أعلى ورقة فرعية مدعومة لـ CPUID مع EAX=14h. يوفر كل من EBX وECX علامات الميزات، بينما EDX محجوز.
| قليل | EBX | بورصة السلع الأوروبية (ECX) | قليل | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 0 | مرشح cr3 | يدعم ترشيح CR3 | توباوت | آلية إخراج ToPA (جدول العناوين الفيزيائية) لحزم التتبع المدعومة | 0 | |
| 1 | cyc_acc | يدعم معدل حزم PSB (حدود تدفق الحزم) القابل للتكوين ووضع الدقة الدورية (حزم CYC). | مينتري | يمكن أن تحتوي جداول TopA على عدة مدخلات إخراج | 1 | |
| 2 | مرشح IP | يدعم النظام تصفية عناوين IP، وتصفية TraceStop، والحفاظ على سجلات PT MSRs عبر إعادة الضبط الدافئة. | sngl_ rng_out | نظام الإخراج أحادي النطاق مدعوم | 2 | |
| 3 | إم تي سي | يدعم النظام حزم التوقيت MTC (عداد الوقت المصغر)، كما يدعم قمع حزم COFI (تغيير تعليمات التدفق). | نظام النقل التتبعي | يدعم النظام الفرعي لنقل التتبع الإخراج | 3 | |
| 4 | ptwrite | PTWRITEالتعليمات المدعومة | (محجوز) | 4 | ||
| 5 | تتبع أحداث الطاقة | يدعم Power Event Trace | (محجوز) | 5 | ||
| 6 | pmi_preserve | دعم الحفاظ على PSB و PMI (مقاطعة مراقبة الأداء) | (محجوز) | 6 | ||
| 7 | تتبع الأحداث | يدعم إنشاء حزم تتبع الأحداث | (محجوز) | 7 | ||
| 8 | tnt_dis | تم دعم تعطيل إنشاء حزم TNT (تم أخذ الفرع - لم يتم أخذه). | (محجوز) | 8 | ||
| 9 | PTTT | يدعم PTTT (تتبع مُشغّل تتبع المعالج) | (محجوز) | 9 | ||
| 30:10 | (محجوز) | (محجوز) | 30:10 | |||
| 31 | (محجوز) | شفة | تنسيق IP (مؤشر التعليمات) لحزم التتبع التي تحتوي على حمولات IP:
| 31 | ||
| قليل | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | قليل | |||||
|---|---|---|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | قصير | ميزة | ||||
| 0 | رينجسنت | عدد نطاقات العناوين القابلة للتكوين للتصفية | عتبات الدورة | خريطة نقطية لترميزات قيمة عتبة الدورة المدعومة | ICNT | إجراء التشغيل EN_ICNT مدعوم | 0 | ||
| 1 | إيقاف مؤقت | يدعم الإجراءان TRACE_PAUSE و TRACE_RESUME | 1 | ||||||
| 2 | (محجوز) | 2 | |||||||
| 7:3 | (محجوز) | (محجوز) | 7:3 | ||||||
| 10:8 | TRIGGER_ CFG_CNT | عدد سجلات IA32_RTIT_TRIGGERx_CFG MSRs. (عدد المحفزات المدعومة هو 4 أضعاف هذه القيمة) | (محجوز) | 10:8 | |||||
| 14:11 | (محجوز) | (محجوز) | 14:11 | ||||||
| 15 | (محجوز) | TRIGGER_ DR_MATCH | يدعم مُدخل التشغيل مطابقة DR | 15 | |||||
| 31:16 | معدل mtc | خريطة نقطية لترميزات فترات MTC المدعومة | معدل psb | خريطة نقطية لترميزات ترددات PSB القابلة للتكوين المدعومة | (محجوز) | 31:16 | |||
EAX=15h و EAX=16h: ترددات ساعة المعالج، وTSC، والناقل، وساعة الكريستال الأساسية
توفر هاتان الورقتان معلومات حول الترددات المختلفة في وحدة المعالجة المركزية في EAX و EBX و ECX (تم حجز EDX في كلتا الورقتين).
| إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) |
|---|---|---|
| نسبة تردد TSC إلى تردد ساعة الكريستال الأساسية، المقام | نسبة تردد TSC إلى تردد ساعة الكريستال الأساسية، البسط [ أ ] | تردد ساعة الكريستال الأساسية، بوحدة هرتز [ أ ] |
| أجزاء | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | أجزاء |
|---|---|---|---|---|
| 15:0 | التردد الأساسي للمعالج (بالميغاهرتز) [ أ ] | أقصى تردد للمعالج (بالميغاهرتز) [ أ ] | تردد الناقل/المرجع (بالميغاهرتز) [ أ ] | 15:0 |
| 31:16 | (محجوز) | (محجوز) | (محجوز) | 31:16 |
إذا كانت القيم المُعادة في EBX و ECX للورقة 15h غير صفرية، فإن تردد TSC ( عداد الطابع الزمني ) بالهرتز يُعطى بواسطة TSCFreq = ECX*(EBX/EAX).
في بعض المعالجات (مثل Intel Skylake )، تكون قيمة CPUID_15h_ECX صفرًا، بينما تكون قيمة CPUID_16h_EAX موجودة وليست صفرًا. في جميع المعالجات المعروفة التي ينطبق عليها هذا الأمر، [ 134 ] يكون تردد TSC مساويًا لتردد المعالج الأساسي، ويمكن حساب تردد ساعة بلورة النواة بالهرتز كما يلي CoreCrystalFreq = (CPUID_16h_EAX * 10000000) * (CPUID_15h_EAX/CPUID_15h_EBX).
في المعالجات التي تُدرج نسبة تردد ساعة الكريستال الأساسية/TSC في CPUID leaf 15h، سيكون تردد مؤقت APIC هو تردد ساعة الكريستال الأساسية مقسومًا على القاسم المحدد بواسطة سجل تكوين التقسيم الخاص بـ APIC. [ 135 ]
EAX=17h: تعداد سمات مورد SoC
توجد هذه الورقة في الأنظمة التي تُنفَّذ فيها نواة معالجة مركزية x86 ضمن نظام على شريحة (SoC ) من مُصنِّع آخر، فبينما تُقدِّم الأوراق الأخرى CPUIDمعلومات حول نواة المعالجة المركزية x86، تُقدِّم هذه الورقة معلومات حول النظام على الشريحة. وتأخذ هذه الورقة فهرس ورقة فرعية في ECX.
تقوم الدالة Sub-leaf 0 بإرجاع مؤشر الورقة الفرعية الأقصى في EAX (على الأقل 3)، ومعلومات تعريف SoC في EBX/ECX/EDX:
| قليل | EBX | بورصة السلع الأوروبية (ECX) | EDX | قليل | ||
|---|---|---|---|---|---|---|
| 15:0 | معرف بائع SoC | معرف مشروع SoC | تحديد خطوة SoC ضمن مشروع SoC | 15:0 | ||
| 16 | مخطط تعريف مورد SoC | 16 | ||||
| 31:17 | (محجوز) | 31:17 |
تُعيد الدوال الفرعية من 1 إلى 3 سلسلة نصية بطول 48 بايت تُشير إلى اسم مُصنِّع المعالج (SoC) بتنسيق UTF-8 . تُعيد الدالة الفرعية 1 أول 16 بايت بالترتيب التالي: EAX، EBX، ECX، EDX؛ وتُعيد الدالة الفرعية 2 الـ 16 بايت التالية؛ وتُعيد الدالة الفرعية 3 آخر 16 بايت. يُسمح بأن تنتهي السلسلة بحرف فارغ، ولكن ليس شرطًا .
EAX=18h: التسلسل الهرمي والطوبولوجيا لـ TLB
توفر هذه الورقة معلومات حول مخازن الترجمة المؤقتة (TLBs ) المتاحة لنواة المعالج التي CPUIDتُنفذ عليها التعليمات. كما توفر هذه الورقة عدة أوراق فرعية، يتم اختيارها باستخدام ECX.
عند استدعائها مع ECX=0، فإنها ستعيد فهرس أعلى ورقة فرعية مدعومة في EAX وجميع الأصفار في البتات الخمسة السفلية من EDX - البتات المتبقية من EDX، بالإضافة إلى EBX وECX، محجوزة.
عند استدعاء هذه الدالة مع ECX≠0، فإنها تُعيد معلومات حول ذاكرة الترجمة (TLB)، حيث يُحدد ECX (الذي يتراوح من 1 إلى أعلى فرع مدعوم) ذاكرة الترجمة التي تُريد إرجاع معلومات عنها. قد تظهر ذاكرات الترجمة لمعالج مُعين بأي ترتيب. تتضمن المعلومات المُعادة لذاكرة ترجمة مُعينة عدد المجموعات في ECX، بالإضافة إلى معلومات إضافية في EBX وEDX (EAX محجوز).
| قليل | EBX | EDX | قليل | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 0 | 4KB_ENTRIES | يدعم TLB إدخالات للصفحات بحجم 4 كيلوبايت | يكتب | نوع TLB. القيم التالية مُعرّفة:
| 0 | |
| 1 | 2MB_ENTRIES | يدعم TLB إدخالات للصفحات الضخمة بحجم 2 ميجابايت | 1 | |||
| 2 | 4MB_ENTRIES | يدعم TLB إدخالات للصفحات الضخمة بحجم 4 ميجابايت | 2 | |||
| 3 | 1GB_ENTRIES | يدعم TLB إدخالات للصفحات الضخمة بحجم 1 جيجابايت | 3 | |||
| 4 | (محجوز) | 4 | ||||
| 7:5 | رقم المستوى | مستوى ذاكرة التخزين المؤقت للترجمة (بدءًا من 1) | 7:5 | |||
| 8 | التقسيم | تقسيم ذاكرة التخزين المؤقت للترجمة (TLB):
| عضو كامل | TLB الترابطي بالكامل | 8 | |
| 10:9 | (محجوز) | 10:9 | ||||
| 13:11 | (محجوز) | 13:11 | ||||
| 15:14 | MAX_LP_ADDRESSABLE_IDS | الحد الأقصى لعدد المعرفات القابلة للعنونة للمعالجات المنطقية التي تشترك في ذاكرة الترجمة السريعة هذه (ناقص 1) | 15:14 | |||
| 25:16 | عدد الطرق | عدد طرق الترابط | 25:16 | |||
| 31:26 | (محجوز) | 31:26 | ||||
- ↑ إذا تم إرجاع EDX[4:0] كـ 0، فسيتم اعتبار الورقة الفرعية غير صالحة - فهي لا تصف TLB، ولا توجد أي بيانات أخرى تم إرجاعها في EBX أو ECX أو البتات المتبقية من EDX صالحة.
من الممكن أن تظهر ورقة فرعية صالحة بعد ورقة فرعية غير صالحة.
EAX=19h: ميزات قفل المفاتيح من إنتل
توفر هذه الصفحة معلومات عن ميزات Intel Key Locker في EAX وEBX وECX. EDX محجوز.
| قليل | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | قليل | |||||
|---|---|---|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | قصير | ميزة | ||||
| 0 | cpl0_ restrict | يدعم نظام قفل المفاتيح CPL0 فقط | aes_kle | تم تفعيل تعليمات "قفل المفاتيح" AES | لا يوجد نسخ احتياطي | معلمة عدم النسخ الاحتياطي إلى LOADIWKEYمدعومة | 0 | ||
| 1 | no_encrypt_ restrict | تقييد قفل المفاتيح بعدم دعم التشفير | (محجوز) | rand_ iwkey | يدعم ترميز KeySource القيمة 1 (عشوائية مفتاح التغليف الداخلي). | 1 | |||
| 2 | no_decrypt_ restrict | يدعم قفل المفاتيح تقييد عدم فك التشفير | aes_wide_kl | تعليمات AES "خزانة المفاتيح العريضة" مدعومة | (محجوز) | 2 | |||
| 3 | (تقييد العملية) [ أ ] | (محجوز) | (محجوز) | 3 | |||||
| 4 | (محجوز) | نسخة احتياطية لمفتاح iwkey | "Key Locker" MSRs and backup of internal wrapping key supported | (reserved) | 4 | ||||
| 31:5 | (reserved) | (reserved) | (reserved) | 31:5 | |||||
EAX=1Dh: Intel AMX Tile Information
When ECX=0, the highest supported "palette" subleaf is enumerated in EAX. When ECX≥1, information on palette n is returned.
| Bits | EAX | EBX | ECX | EDX | Bits | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Short | Feature | Short | Feature | Short | Feature | Short | Feature | |||||
| 15:0 | total_tile_bytes | Size of all tile registers, in bytes (8192) | bytes_per_row | (64) | max_rows | (16) | (reserved) | 15:0 | ||||
| 31:16 | bytes_per_tile | Size of one tile, in bytes (1024) | max_names | Number of tile registers (8) | (reserved) | (reserved) | 31:16 | |||||
EAX=1Eh: Intel AMX Tile Multiplier (TMUL) Information
This leaf returns information on the AMXTMUL (tile multiplier) unit. The leaf provides multiple sub-leaves, selected with ECX.
Subleaf 0 returns maximum supported sub-leaf in EAX and basic TMUL information in EBX; subleaf 1 returns additional feature information in EAX.
| Bits | EBX | ECX | EDX | Bits | |||||
|---|---|---|---|---|---|---|---|---|---|
| Short | Feature | Short | Feature | Short | Feature | ||||
| 7:0 | tmul_maxk | Maximum number of rows or columns (16) | (reserved) | (reserved) | 7:0 | ||||
| 23:8 | tmul_maxn | Maximum number of bytes per column (64) | (reserved) | (reserved) | 23:8 | ||||
| 31:24 | (reserved) | (reserved) | (reserved) | 31:24 | |||||
| Bits | EAX | EBX | ECX | EDX | Bits | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Short | Feature | Short | Feature | Short | Feature | Short | Feature | |||||
| 0 | amx-int8 | 8-bit integer support | (reserved) | (reserved) | (reserved) | 0 | ||||||
| 1 | amx-bf16 | bfloat16 support | (reserved) | (reserved) | (reserved) | 1 | ||||||
| 2 | amx-complex | Complex number support | (reserved) | (reserved) | (reserved) | 2 | ||||||
| 3 | amx-fp16 | float16 support | (reserved) | (reserved) | (reserved) | 3 | ||||||
| 4 | amx-fp8 | float8 support | (reserved) | (reserved) | (reserved) | 4 | ||||||
| 5 | (amx-transpose)[a] | (Transposition instruction support) | (reserved) | (reserved) | (reserved) | 5 | ||||||
| 6 | amx-tf32[b] | (TensorFloat-32 ("FP19") support) | (reserved) | (reserved) | (reserved) | 6 | ||||||
| 7 | amx-avx512 | AMX-AVX512 support | (reserved) | (reserved) | (reserved) | 7 | ||||||
| 8 | amx-movrs | AMX-MOVRS support | (reserved) | (reserved) | (reserved) | 8 | ||||||
| 31:9 | (reserved) | (reserved) | (reserved) | (reserved) | 31:9 | |||||||
EAX=21h: Reserved for TDX enumeration
عند تفعيل Intel TDX ( امتدادات نطاق الثقةCPUID )، سيتم اعتراض محاولات تنفيذ التعليمات من قِبل نظام تشغيل ضيف يعمل بنظام نطاق الثقة (TD) بواسطة وحدة TDX. عند CPUIDاستدعاء هذه الوحدة مع EAX=21h( ECX=0الورقة 21h، الورقة الفرعية 0)، ستُعيد فهرس أعلى ورقة فرعية مدعومة للورقة المدخلة 21h، EAXبالإضافة إلى سلسلة تعريف مُورّد وحدة TDX كسلسلة ASCII مكونة من 12 بايت في EBX، EDX، ECX (بهذا الترتيب). يُعيد تطبيق وحدة Intel الخاص سلسلة تعريف المُورّد (مع أربع مسافات في النهاية) [ 140 ] - بالنسبة لهذه الوحدة، لا تتوفر معلومات إضافية عن الميزات من خلال ، ويجب الحصول عليها بدلاً من ذلك من خلال تعليمات TDX المُخصصة ."IntelTDX "CPUIDTDCALL
هذه الورقة محجوزة في الأجهزة وستقوم (على المعالجات التي تكون أعلى ورقة أساسية فيها هي 21hأو أعلى) بإرجاع 0 في EAX/EBX/ECX/EDX عند تشغيلها مباشرة على وحدة المعالجة المركزية.
EAX=24h, ECX=0: AVX10 Converged Vector ISA
يُعيد هذا الحد الأقصى للأوراق الفرعية المدعومة في EAX ومعلومات ميزة AVX10 في EBX. [ 123 ] (ECX وEDX محجوزان.)
| قليل | EBX | |
|---|---|---|
| قصير | ميزة | |
| 7:0 | إصدار vector_ isa_ | إصدار AVX10 Converged Vector ISA (≥1) |
| 15:8 | (محجوز) | |
| 18:16 | (محجوز كـ 111ب) [ أ ] | |
| 31:19 | (محجوز) | |
- صُممت هذه البتات الثلاث في الأصل للإشارة إلى "عرض المتجه المدعوم"، حيث يشير البت 16 إلى دعم متجه 128 بت، والبت 17 إلى 256 بت، والبت 18 إلى 512 بت. وكان يُقال إن وحدات المعالجة المركزية التي تدعم 128 بت كحد أقصى تدعم "AVX10/128" ، وتلك التي تدعم 256 بت كحد أقصى تدعم "AVX10/256" ، وتلك التي تدعم 512 بت كحد أقصى تدعم "AVX10/512" . ويشير الرقم الذي يلي الشرطة المائلة إلى أقصى عرض متجه مدعوم. بعد فترة وجيزة من الإعلان عن AVX10.1، تخلت إنتل عن خططها لدعم AVX10/128 ، [ 141 ] على الأرجح بعد اعتراضات من المطورين ، مما جعل عرضي المتجه الأقصىين المدعومين هما 256 بت و512 بت فقط. مع AVX10.2، تخلت إنتل تمامًا عن التمييز بين عرضي المتجه، واشترطت دعم متجه 512 بت. بما أن وحدات المعالجة المركزية الوحيدة التي تدعم AVX10.1 كانت مبنية على معمارية Granite Rapids ، وهي تصميم يعتمد على نواة P فقط (والذي أصبح لاحقًا يدعم AVX10/512 )، لم يتم شحن أي وحدات معالجة مركزية تدعم AVX10/256 . بعبارة أخرى، كانت وحدات المعالجة المركزية الوحيدة التي تم شحنها والمزودة بتقنية AVX10 تدعم 128 و256 و512 بت، مما يجعل البتات الثلاثة جميعها 111 بت. هذه البتات موثقة الآن على أنها محجوزة، ولكنها تُقرأ 111 بت.
EAX=24h, ECX=1: ميزات AVX10 المنفصلة
تم حجز Subleaf 1 لميزات AVX10 غير المرتبطة بإصدار معين.
| قليل | بورصة السلع الأوروبية (ECX) | |
|---|---|---|
| قصير | ميزة | |
| 0 | (VPMM) | (ضرب المصفوفات المعبأة باستخدام امتداد المتجهات) [ 142 ] |
| 1 | (محجوز) | |
| 2 | AVX10_VNNI_INT | تعليمات AVX10.2 VNNI [ أ ] [ 143 ] |
| 3 | AVX10_V2_AUX | تعليمات AVX10.2 المساعدة [ 144 ] |
| 31:4 | (محجوز) | |
- ↑ توجد تعليمات AVX10.2 VNNI إذا كان إصدار AVX10 هو 2 أو أعلى (انظر CPUID.(EAX=24h).EBX[7:0]) أو تم تعيين بت AVX10_VNNI_INT.
EAX=2000'0000h: أعلى وظيفة Xeon Phi تم تنفيذها
تُعاد أعلى دالة في EAX. هذه الورقة موجودة فقط على معالجات Xeon Phi . [ 145 ]
EAX=20000001h: بتات ميزات Xeon Phi
تقوم هذه الدالة بإرجاع علامات الميزات.
| قليل | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | EDX | قليل | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | قصير | ميزة | قصير | ميزة | |||||
| 3:0 | (محجوز) | (محجوز) | (محجوز) | (محجوز) | 3:0 | |||||||
| 4 | (محجوز) | (محجوز) | (محجوز) | k1om | K1OM [ 145 ] | 4 | ||||||
| 31:5 | (محجوز) | (محجوز) | (محجوز) | (محجوز) | 31:5 | |||||||
EAX=4000'0000h-4FFFF'FFFh: محجوز للمشرفين الافتراضيين
عند CPUIDتنفيذ التعليمات في بيئة المحاكاة الافتراضية Intel VT-x أو AMD-v ، سيقوم برنامج إدارة الأجهزة الافتراضية باعتراضها، مما يُمكّنه من إرجاع CPUIDعلامات ميزات تختلف عن تلك الموجودة في الأجهزة الأساسية. لا يتم تنفيذ CPUIDهذه العلامات في الأجهزة، وهي محجوزة لاستخدام برامج إدارة الأجهزة الافتراضية لتوفير معلومات تعريفية وميزات خاصة بها من خلال آلية الاعتراض هذه.40000000h4FFFFFFFh
بالنسبة لـ leaf 40000000h، يُتوقع من برنامج إدارة الأجهزة الافتراضية (Hypervisor) إرجاع فهرس أعلى قيمة CPUID مدعومة في EAX، وسلسلة تعريف مكونة من 12 حرفًا في EBX، ECX، EDX (بهذا الترتيب). بالنسبة لـ leaf 40000001h، قد يُرجع برنامج إدارة الأجهزة الافتراضية توقيع تعريف الواجهة في EAX - على سبيل المثال، قد تُرجع برامج إدارة الأجهزة الافتراضية التي ترغب في الإعلان عن توافقها مع Hyper -V0x31237648 سلسلة تعريف الواجهة "Hv#1"في EAX. [ 146 ] [ 147 ] تختلف تنسيقات leaf 40000001hو leaf حتى أعلى قيمة مدعومة باختلاف برنامج إدارة الأجهزة الافتراضية. عادةً ما تقوم برامج إدارة الأجهزة الافتراضية التي تُنفذ هذه القيم بتعيين البت 31 من ECX لـ CPUID leaf 1 للإشارة إلى وجودها.
قد توفر برامج إدارة الأجهزة الافتراضية التي تعرض أكثر من واجهة واحدة مجموعات إضافية من أوراق CPUID للواجهات الإضافية، بمسافة محددة بين 100hالأوراق لكل واجهة. [ 148 ] ومن أمثلة برامج إدارة الأجهزة الافتراضية التي تفعل ذلك ما يلي:
- عندما يتم تكوين QEMU لتوفير واجهات Hyper-V و KVM ، فإنه سيوفر معلومات Hyper-V بدءًا من CPUID leaf
40000000hومعلومات KVM بدءًا من leaf40000100h. [ 149 ] [ 150 ] - عندما يتم تكوين Xen لتوفير محاكاة Hyper-V، فإنه سيوفر معلومات Hyper-V بدءًا من CPUID leaf
40000000hومعلومات Xen بدءًا من leaf40000100h. [ 151 ]
40000000hتتضمن بعض برامج إدارة الأجهزة الافتراضية المعروفة بإرجاع سلسلة معرف برنامج إدارة الأجهزة الافتراضية في ورقة البيانات ما يلي :
| برنامج إدارة الأجهزة الافتراضية | سلسلة المعرف (ASCII) | ملحوظات |
|---|---|---|
| مايكروسوفت هايبر-في | "Microsoft Hv"[ 146 ] | |
| لينكس كي في إم | "KVMKVMKVM\0\0\0"[ 152 ] | \0 يرمز إلى حرف NUL في نظام ASCII. |
"Linux KVM Hv"[ 153 ] | محاكاة Hyper-V [ 154 ] | |
| bhyve | "BHyVE BHyVE "،"bhyve bhyve " | تم تغيير سلسلة المعرف من الأحرف المختلطة إلى الأحرف الصغيرة في عام 2013. [ 155 ] تُستخدم السلاسل النصية ذات الأحرف الصغيرة أيضًا في برامج إدارة الأجهزة الافتراضية المشتقة من bhyve مثل xhyve و HyperKit. [ 156 ] |
| زين | "XenVMMXenVMM"[ 151 ] | فقط عند استخدام وضع HVM (الآلة الافتراضية للأجهزة). |
| كيو إي إم يو | "TCGTCGTCGTCG"[ 157 ] | فقط عند تفعيل مولد الشفرة الصغيرة (TCG). |
| أوجه التشابه | "prl hyperv "،" lrpepyh vr" | السلسلة هي نسخة معكوسة من السلسلة، والتي لوحظت في بعض إصدارات Parallels Workstation. [ 158 ]" lrpepyh vr""prl hyperv " |
| في إم وير | "VMwareVMware"[ 159 ] | |
| مشروع ACRN | "ACRNACRNACRN"[ 160 ] | |
| فيرتشوال بوكس | "VBoxVBoxVBox"[ 161 ] | فقط عند تهيئته لاستخدام موفر المحاكاة الافتراضية "hyperv". |
| برنامج QNX Hypervisor | "QXNQSBMV" | طريقة الكشف عن برنامج QNX hypervisor المقدمة في وثائق QNX الرسمية [ 162 ] تتحقق فقط من الأحرف الثمانية الأولى من السلسلة، كما هو موضح في EBX وECX (بما في ذلك تبديل ترتيب البايتات) - يتم تجاهل EDX ويمكن أن يأخذ أي قيمة. |
| NetBSD NVMM | "___ NVMM ___"[ 163 ] | |
| برنامج إدارة الأجهزة الافتراضية OpenBSD | "OpenBSDVMM58"[ 164 ] | |
| سجن سيمنز | "Jailhouse\0\0\0"[ 165 ] | \0 يرمز إلى حرف NUL في نظام ASCII. |
| Bitdefender Napoca | "Napocahv "[ 166 ] | |
| FEX-Emu | "FEXIFEXIEMU\0"[ 167 ] | \0 يرمز إلى حرف NUL في نظام ASCII. |
| إنتل هاكسم | "HAXMHAXMHAXM"[ 168 ] | تم إيقاف المشروع. |
| إنتل كي جي تي (موثوقة) | "EVMMEVMMEVMM"[ 169 ] | على فرع "trusty" من KGT فقط، والذي يُستخدم لتوزيعة نظام التشغيل Trusty على معمارية Intel x86 ( أرشيف ) (يعيد KGT أيضًا توقيعًا في |
| يونيسيس إس-بار | "UnisysSpar64"[ 170 ] | |
| لوكهيد مارتن LMHS | "SRESRESRESRE"[ 171 ] |
EAX=8000'0000h: أعلى دالة موسعة مُنفذة
يتم إرجاع أعلى قيمة لمعامل الاستدعاء في EAX.
تقوم EBX/ECX/EDX بإرجاع سلسلة معرف الشركة المصنعة (نفس EAX=0) على معالجات AMD ولكن ليس على معالجات Intel.
EAX=80000001h: معلومات المعالج الموسعة وبتات الميزات
يُعيد هذا الأمر علامات الميزات الموسعة في ملفي EDX وECX. وفي معالجات AMD، يُعيد أيضًا توقيع وحدة المعالجة المركزية في ملف EAX، ومعرّف العلامة التجارية في ملف EBX.
بالنسبة لمعظم معالجات AMD، تكون التوقيعة المُعادة في EAX هي نفسها التوقيعة المُعادة في EAX للمعالج الطرفي EAX=1. (باستثناء عائلتي معالجات AMD K6 و AMD K7 ، حيث يختلف جزء "العائلة" من التوقيعة بين المعالج الطرفي 1والمعالج الطرفي 80000001: 1تُعيد المعالج الطرفي التوقيعة 5لـ K6 و 6K7، بينما 80000001تُعيد المعالج الطرفي التوقيعة 6لـ K6 و 7K7.) [ 172 ]
العديد من البتات في EDX(البتات من 0 إلى 9، ومن 12 إلى 17، و23، و24) هي نسخ مكررة من البتات EDXالموجودة في EAX=1الجزء الخلفي - هذه البتات مُظللة باللون الأصفر الفاتح. (توجد هذه البتات المكررة في معالجات AMD، ولكنها غير موجودة في معالجات Intel).
ميزات AMD في EDX و ECX هي كما يلي: [ 173 ] [ 174 ]
| قليل | EDX | بورصة السلع الأوروبية (ECX) | قليل | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 0 | وحدة معالجة مركزية | وحدة معالجة الفاصلة العائمة x87 المدمجة | lahf_lm | LAHF/ SAHFفي الوضع الطويل | 0 | |
| 1 | vme | امتدادات الوضع الافتراضي (VIF) | cmp_legacy | تقنية Hyperthreading غير صالحة | 1 | |
| 2 | دي | ملحقات تصحيح الأخطاء ( CR4 بت 3) | svm | آلة افتراضية آمنة | 2 | |
| 3 | pse | توسيع حجم الصفحة | إكستابي | مساحة APIC الموسعة | 3 | |
| 4 | tsc | عداد الطوابع الزمنية | cr8_legacy | CR8 في وضع 32 بت | 4 | |
| 5 | msr | سجلات خاصة بالنموذج | abm/lzcnt | معالجة البتات المتقدمة و )(LZCNTPOPCNT | 5 | |
| 6 | pae | امتداد العنوان الفعلي | sse4a | SSE4a | 6 | |
| 7 | mce | استثناء فحص الجهاز | عدم المحاذاة | وضع SSE غير متوافق | 7 | |
| 8 | cx8 | CMPXCHG8Bتعليمات ( المقارنة والتبديل ) | 3dnowprefetch | PREFETCHوالتعليماتPREFETCHW | 8 | |
| 9 | أبيك | وحدة تحكم متقدمة قابلة للبرمجة للمقاطعات مدمجة | osvw | حل بديل مرئي لنظام التشغيل | 9 | |
| 10 | (استدعاء النظام) [ أ ] | ( SYSCALL/ SYSRET، K6 فقط) | متلازمة القولون المتهيّج | أخذ العينات بناءً على التعليمات | 10 | |
| 11 | استدعاء النظام [ ب ] | SYSCALLوالتعليماتSYSRET | xop [ c ] | مجموعة تعليمات XOP | 11 | |
| 12 | متر | نطاق أنواع الذاكرة | سكينيت | SKINITوالتعليماتSTGI | 12 | |
| 13 | صفحة | تفعيل بت الصفحة العامة في CR4 | wdt | مؤقت مراقبة النظام | 13 | |
| 14 | إم سي إيه | بنية فحص الآلة | (tbm0) | (دعم تعليمات TBM0) [ د ] | 14 | |
| 15 | cmov | حركة مشروطة FCMOVوتعليمات | lwp | التنميط الخفيف [ 182 ] | 15 | |
| 16 | بات [ هـ ] | جدول سمات الصفحة | fma4 | تعليمات الضرب والجمع المدمجة ذات 4 معاملات | 16 | |
| 17 | pse36 | امتداد حجم الصفحة 36 بت | تي سي إي | ملحق ذاكرة التخزين المؤقت للترجمة | 17 | |
| 18 | (إلخ) | (يدعم المعالج تصحيح الأخطاء ECC؛ K7 فقط) [ f ] | (cvt16) | (أشكال البادئة XOP لتعليمات التحويل FP16↔FP32 VCVTPS2PH و VCVTPH2PS ) [ g ] | 18 | |
| 19 | إلخ | " أثلون إم بي " / " سيمبرون " تعريف العلامة التجارية لوحدة المعالجة المركزية [ h ] | nodeid_msr | NodeID MSR ( C001_100C) [ 189 ] | 19 | |
| 20 | nx | بت NX (بت عدم تنفيذ جدول الصفحات) | (محجوز) | 20 | ||
| 21 | (sem) | ؟ [ أنا ] | تي بي إم | معالجة البتات اللاحقة | 21 | |
| 22 | mmxext | MMX الموسع (مجموعة فرعية غير XMM من SSE1 ) | توبو إكست | امتدادات الطوبولوجيا (أوراق معرف وحدة المعالجة المركزية 80000001Dو 80000001E) | 22 | |
| 23 | mmx | تعليمات MMX | perfctr_core | ملحقات عداد الأداء الأساسي | 23 | |
| 24 | fxsr [ e ] | FXSAVE، FXRSTORالتعليمات، CR4 بت 9 | perfctr_nb | توسعات عدادات الأداء في نورثبريدج | 24 | |
| 25 | fxsr_opt | FXSAVE/ FXRSTORالتحسينات | (مراقب أداء البث) | (بنية مراقبة أداء البث) [ j ] | 25 | |
| 26 | pdpe1gb | صفحات الجيببايت | dbx | امتدادات نقاط توقف البيانات | 26 | |
| 27 | rdtscp | RDTSCPتعليمات | perftsc | عداد الطابع الزمني للأداء (PTSC) | 27 | |
| 28 | (rex32) [ k ] | ( بادئة REX متوفرة في وضع 32 بت؛ إصدار K8 المبكر فقط) [ l ] | pcx_l2i/ pcx_l3 | 28 | ||
| 29 | لام | الوضع الطويل ( x86-64 ) | مونيتور إكس | MONITORXوالتعليماتMWAITX | 29 | |
| 30 | 3dnowext | تقنية 3DNow! الموسعة | addr_mask_ext | تمديد قناع العنوان إلى 32 بت لنقاط توقف التعليمات | 30 | |
| 31 | 3dnow | 3DNow! | (محجوز) [ م ] | 31 | ||
- ↑ استخدام البت 10 من EDX للإشارة إلى دعم
SYSCALL/SYSRETصالح فقط فيAuthenticAMDمعالجات Family 5 Model 7 ( AMD K6 ، 250 نانومتر "Little Foot") - بالنسبة لجميع المعالجات الأخرى، يجب استخدام البت 11 من EDX بدلاً من ذلك. تم تقديم هذه التعليمات لأول مرة في Model 7 [ 175 ] - تم نقل بت CPUID للإشارة إلى دعمها [ 176 ] إلى البت 11 من EDX بدءًا من Model 8 ( AMD K6-2 ) فصاعدًا.إن الإصدار
SYSCALLالموجود في الطراز 7 (المشار إليه بواسطة بت EDX رقم 10) غير متوافق تمامًا مع الإصدارSYSCALLالموجود في الطراز 8 ووحدات المعالجة المركزية اللاحقة (المشار إليها بواسطة بت EDX رقم 11) في المعالجات اللاحقة (إصدار الطراز 7 لا يسمحIRETبذلكSYSCALLبينما تسمح به الإصدارات اللاحقة). [ 177 ] - ↑ في معالجات Intel، يتم ضبطبت CPUID الخاص بـ
SYSCALL/تم تنفيذ التعليمات في وضع 64 بت. [ 178 ]SYSRETCPUID - ↑ أدرجت AMD في اقتراحها الأولي لتوسيع مجموعة تعليمات SSE5 البت 11 من ECX كبت الميزة لـ SSE5. [ 179 ] عندما تخلت AMD عن اقتراحها لـ SSE5 لصالح XOP، أعيد استخدام البت 11 من ECX كبت الميزة لـ XOP.
- يُدرج موقع sandpile.org البت رقم 14 من تعليمات ECX (المعروفة باسم TBM0) [ 180 ] ، ويتعرف عليها برنامج HWiNFO 8.24، إلا أنها غير مُفعّلة في أي معالج معروف، ولا تُدرج في أي وثائق عامة معروفة لشركة AMD. كما يُدرج موقع sandpile.org ترميزات تعليمات TBM0 أيضًا [ 181 ] .
- 1 2 في بعض المعالجات - Cyrix MediaGXm ، [ 183 ] والعديد من Geodes (NatSemi Geode GXm، GXLV، GX1؛ AMD Geode GX1 [ 184 ] ) و Transmeta Crusoe [ 185 ] (
CyrixInstead//Geode by NSC،GenuineTMx86جميعها من عائلة 5 موديل 4) - يكون للبتات 16 و24 في EDX معنى مختلف:FCMOVالبت 16: دعم النقل الشرطي للأعداد العشرية- البت 24: تعليمات Cyrix EMMI ( MMX الموسعة ) مدعومة. (تعليمات EMMI موجودة أيضًا في
CyrixInsteadمعالجات العائلة 6، مثل 6x86MX وMII، على الرغم من أنها لا تقوم بتعيين هذا البت.)
- ↑ يتم ضبط بت EDX رقم 18 في بعض طرازات AMD Athlon "Thunderbird" [ 186 ] و Duron "Spitfire"/"Morgan"، ولكنه غير مدرج في أي وثائق عامة لشركة AMD. يصف موقع Sandpile.org هذا البت بأنه بت خاص بميزة تصحيح الأخطاء (ECC). [ 180 ] [ 187 ]
- تم إدراج البت 18 من ECX باسم CVT16 في الإصدار 3.03 من AMD APM المجلد 6، [ 188 ] ، ولكن تم حذفه من الإصدار 3.04 وما بعده. وهو غير مُفعّل في أي وحدة معالجة مركزية معروفة. وقد اعتمدت كل من Intel وAMD لاحقًا امتداد Intel F16C (المشار إليه بـ CPUID.(EAX=1):ECX[29] )، الذي يُعرّف أشكال VEX المُشفّرة لهذه التعليمات.
- ↑ يُستخدم البت 19 من EDX لتحديد علامة المعالج التجارية في
AuthenticAMDمعالجات العائلة 6 فقط - ويُستخدم هذا البت، بالإضافة إلى توقيع المعالج وسرعة ناقل النظام الأمامي ، لتحديد ما إذا كانت المعالجات قادرة على العمل كمعالجات متعددة أو تحمل اسم العلامة التجارية Sempron . [ 172 ] - ↑ تم إدراج "SEM" كبت ميزة ممتدة لـ CPUID في وثائق AMD SimNow دون تقديم أي وصف إضافي. [ 190 ] لم يتم تعيين هذا البت في أي معالج معروف، كما أنه غير مُحاكى بواسطة SimNow.
- ↑ تم إدراج البت 25 من ECX باسم StreamPerfMon في الإصدار 3.20 من AMD APM [ 191 ] فقط، بينما تم إدراجه كـ "محجوز" في الإصدارات اللاحقة. يتم تفعيل هذا البت في معالجات Excavator وSteamroller فقط.
- ↑ بالإضافة إلى استخدامها كبتة مميزة في REX32 على بعض معالجات AMD K8، يتم أيضًا ضبط بتة EDX رقم 28 على بعض معالجات VIA Nehemiah لغرض غير معروف. [ 192 ]
- ↑ تم إدراج ميزة REX32 في موقع sandpile.org [ 193 ] [ 194 ] ووُصفت في براءة اختراع قديمة [ 195 ] . وهي غير مدرجة في أي وثائق عامة معروفة لشركة AMD، وتوجد فقط في الإصدارات المبكرة من AMD K8.
- ↑ لم يتم إدراج بت ECX رقم 31 في أي من وثائق AMD العامة المعروفة، ولكن لوحظ أنه مضبوط على AMD 4700S Desktop Kit. [ 196 ]
EAX=80000002h,80000003h,80000004h: سلسلة اسم العلامة التجارية للمعالج
تُعيد هذه الأوامر سلسلة اسم المعالج بتنسيقات EAX وEBX وECX وEDX. CPUIDيجب إصدارها مع كل مُعامل بالتسلسل للحصول على سلسلة اسم المعالج الكاملة المكونة من 48 بايت بتنسيق ASCII. [ 197 ] من الضروري التحقق مما إذا كانت الميزة موجودة في وحدة المعالجة المركزية عن طريق إصدار الأمر CPUIDأولاً EAX = 80000000hوالتحقق مما إذا كانت القيمة المُعادة لا تقل عن قيمة مُحددة 80000004h.
تم تحديد السلسلة في وثائق Intel/AMD على أنها منتهية بـ null ، ولكن هذا ليس هو الحال دائمًا (على سبيل المثال، من المعروف أن DM&P Vortex86DX3 و AMD Ryzen 7 6800HS يعيدان سلاسل العلامات التجارية غير المنتهية بـ null في الأوراق 80000002h- 80000004h[ 198 ] [ 199 ] )، ولا ينبغي للبرامج الاعتماد عليها.
#include <stdio.h> #include <string.h> #include <cpuid.h>int main () { unsigned int regs [ 12 ]; char str [ sizeof ( regs ) + 1 ];__cpuid ( 0x80000000 , regs [ 0 ], regs [ 1 ], regs [ 2 ], regs [ 3 ]);إذا كانت قيمة ( regs [ 0 ] < 0x80000004 ) فارجع 1 ؛__cpuid ( 0x80000002 , regs [ 0 ], regs [ 1 ], regs [ 2 ], regs [ 3 ]); __cpuid ( 0x80000003 , regs [ 4 ], regs [ 5 ], regs [ 6 ], regs [ 7 ]); __cpuid ( 0x80000004 , regs [ 8 ], regs [ 9 ], regs [ 10 ], regs [ 11 ]);memcpy ( str , regs , sizeof ( regs )); str [ sizeof ( regs )] = '\0' ; printf ( "%s \n " , str );return 0 ; }في معالجات AMD، بدءًا من معالجات Athlon بتقنية 180 نانومتر ( AuthenticAMDالعائلة 6، الطراز 2 وما بعده)، يُمكن تعديل سلسلة العلامة التجارية للمعالج التي تُرجعها وحدة CPUID Leaves 80000002h- 80000004hوذلك باستخدام WRMSRتعليمة لكتابة سلسلة استبدال بطول 48 بايت إلى سجلات MSR C0010030h- C0010035h. [ 172 ] [ 200 ] ويمكن القيام بذلك أيضًا على معالجات AMD Geode GX/LX، ولكن باستخدام سجلات MSR 300Ah- 300Fh. [ 201 ]
السلسلة التي يُرجعها برنامج CPUID Leaves 80000002h- 80000004hوالتي غالبًا ما تحتوي على مسافات متعددة في البداية أو النهاية أو الوسط - تتضمن بعض الأمثلة على سلاسل علامات المعالجات التجارية التي تحتوي على العديد من المسافات المتتالية والتي ظهرت في معالجات Intel/AMD ما يلي:
Intel(R) Core(TM) i7-3960X CPU @ 3.30GHz[ 202 ]Intel(R) Xeon(R) CPU W3670 @ 3.20GHz[ 203 ]AMD EPYC 9655 96-Core Processor[ 204 ]
في بعض الحالات، يتطلب تحديد مُصنِّع وحدة المعالجة المركزية فحص ليس فقط مُعرِّف المُصنِّع في ورقة CPUID رقم 0 وتوقيع وحدة المعالجة المركزية في الورقة رقم 1، بل أيضًا سلسلة علامة المعالج التجارية في الأوراق 80000002h- 80000004h. ومن الحالات المعروفة ما يلي:
- يمكن تمييز وحدات المعالجة المركزية Montage Jintide عن طرازات وحدات المعالجة المركزية Intel Xeon التي تستند إليها من خلال وجود السلسلة الفرعية
Montageفي سلسلة العلامة التجارية لوحدات المعالجة المركزية Montage (على سبيل المثال، يمكن تمييز Montage Jintide C2460 [ 205 ] و Intel Xeon Platinum 8160 [ 206 ] - وكلاهما يُعرّف نفسه على أنهGenuineIntelFamily 6 Model 55h Stepping 4 - بهذه الطريقة). CentaurHaulsقد تكون وحدات المعالجة المركزية من العائلة 6 إما من إنتاج VIA أو Zhaoxin - ويمكن تمييزها من خلال وجود السلسلة الفرعيةZHAOXINفي سلسلة العلامة التجارية لوحدات المعالجة المركزية Zhaoxin (على سبيل المثال، يمكن تمييز Zhaoxin KaiXian ZX-C+ C4580 [ 207 ] وVIA Eden X4 C4250 [ 208 ] - وكلاهما يُعرّف نفسه على أنهCentaurHaulsمن العائلة 6 طراز 0Fh خطوة 0Eh - بهذه الطريقة).- يمكن تمييز محاكي Rosetta 2 x86 من Apple - الذي يُعرّف نفسه باسم
GenuineIntelFamily 6 - عن معالج Intel Xeon الذي يحاكيه من خلال وجود السلسلة الفرعيةVirtualAppleفي سلسلة العلامة التجارية لـ Rosetta 2. [ 19 ] - يمكن تمييز محاكي x86-on-ARM من مايكروسوفت - والذي يُعرّف نفسه في وضع 64 بت باسم
AuthenticAMDFamily 0Fh - عن معالج AMD الذي يحاكيه من خلال وجود السلسلة الفرعيةVirtual CPUفي سلسلة العلامة التجارية للمحاكي. [ 19 ]
EAX=80000005h: مُعرّفات ذاكرة التخزين المؤقت من المستوى الأول وذاكرة الترجمة السريعة
يوفر هذا معلومات حول ذاكرة التخزين المؤقت من المستوى 1 وخصائص TLB للمعالج في EAX وEBX وECX وEDX على النحو التالي: [ أ ]
- EAX: معلومات حول مخازن الترجمة الضخمة من المستوى الأول (مخازن الترجمة التي تحتوي على إدخالات تتوافق مع صفحات بحجم 2 ميجابايت/4 ميجابايت) [ ب ]
- EBX: معلومات حول مخازن الترجمة ذات الصفحات الصغيرة من المستوى الأول (مخازن الترجمة التي تحتوي على إدخالات تتوافق مع صفحات بحجم 4 كيلوبايت)
- ECX: معلومات حول ذاكرة التخزين المؤقت للبيانات من المستوى الأول
- EDX: معلومات حول ذاكرة التخزين المؤقت للتعليمات من المستوى الأول
| أجزاء | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | EDX | أجزاء | |
|---|---|---|---|---|---|---|
| 7:0 | عدد إدخالات TLB للتعليمات [ c ] | حجم سطر ذاكرة التخزين المؤقت بالبايت | 7:0 | |||
| 15:8 | ترابط تعليمات TLB [ د ] | عدد أسطر التخزين المؤقت لكل علامة | 15:8 | |||
| 23:16 | عدد إدخالات TLB للبيانات [ c ] | ترابط الذاكرة المؤقتة [ د ] | 23:16 | |||
| 31:24 | ارتباطية بيانات TLB [ د ] | حجم ذاكرة التخزين المؤقت بالكيبايت | 31:24 | |||
- ↑ في بعض وحدات المعالجة المركزية القديمة من نوع Cyrix و Geode (وتحديدًا،
CyrixInstead/Geode by NSCFamily 5 Model 4 فقط)،80000005hتوجد ورقة البيانات ولكن بتنسيق مختلف تمامًا، مشابه لتنسيق ورقة البيانات 2. [ 209 ] - ↑ في المعالجات التي لا تدعم سوى الصفحات الصغيرة في جداول ترجمة العناوين (TLB)، تُرجع هذه الورقة القيمة 0 في سجل EAX. (في هذه المعالجات، مثل AMD K6 وTransmeta Crusoe، تُقسّم إدخالات الصفحات الكبيرة في جداول الصفحات إلى صفحات بحجم 4 كيلوبايت حسب الحاجة عند إدخالها في جدول ترجمة العناوين).في بعض المعالجات، مثل VIA Cyrix III "Samuel"، [ 210 ] تُرجع هذه الورقة القيمة
0x80000005في سجل EAX. وهذا يُعادل EAX=0، أي عدم وجود جداول ترجمة عناوين للصفحات الكبيرة. - 1 2 في وحدات المعالجة المركزية Transmeta، يتم استخدام القيمة
FFhللإشارة إلى TLB مكون من 256 مدخلاً. - 1 2 3 بالنسبة لحقول الترابط الخاصة بالورقة
80000005h، يتم استخدام القيم التالية:قيمة معنى 0 (محجوز) 1 التعيين المباشر من 2 إلى FEhمجموعة ترابطية متعددة الاتجاهات (يشفر الحقل N) FFhترابطي بالكامل
EAX=80000006h: ميزات ذاكرة التخزين المؤقت L2 الموسعة
يقوم بإرجاع تفاصيل ذاكرة التخزين المؤقت L2 في ECX، بما في ذلك حجم السطر بالبايت (البتات 07 - 00)، ونوع الارتباط (مشفر بواسطة حقل 4 بتات؛ البتات 15 - 12) وحجم ذاكرة التخزين المؤقت بالكيلو بايت (البتات 31 - 16).
#include <stdio.h> #include <cpuid.h>int main () { unsigned int eax , ebx , ecx , edx ; unsigned int lsize , assoc , cache ;__cpuid ( 0x80000006 , eax , ebx , ecx , edx ); lsize = ecx & 0xff ; assoc = ( ecx >> 12 ) & 0x0f ; cache = ( ecx >> 16 ) & 0xffff ;printf ( "حجم السطر: %d بايت، نوع الارتباط: %d، حجم ذاكرة التخزين المؤقت: %d كيلوبايت. \n " , lsize , assoc , cache );return 0 ; }EAX=80000007h: معلومات إدارة طاقة المعالج وقدرات RAS
توفر هذه الوظيفة معلومات حول إدارة الطاقة، وإعداد تقارير الطاقة، وقدرات RAS ( الموثوقية والتوافر وقابلية الخدمة ) لوحدة المعالجة المركزية.
| قليل | EBX | EDX | قليل | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 0 | استعادة تدفق MCAOverflow | دعم استعادة تجاوز سعة MCA (بنية فحص الآلة) | TS | مستشعر درجة الحرارة | 0 | |
| 1 | المعونة | قدرة البرنامج على احتواء الأخطاء غير القابلة للتصحيح واستعادتها | FID | التحكم في تعريف التردد | 1 | |
| 2 | HWA | دعم تأكيد الأجهزة (MSRs C001_10C0إلى C001_10DF) | فيديو | التحكم في معرف الجهد | 2 | |
| 3 | ScalableMCA | يدعم MCA القابل للتوسع | TTP | مقياس الحرارة | 3 | |
| 4 | PFEH | معالجة الأخطاء في النظام الأساسي أولاً [ 211 ] | ™ | يدعم التحكم الحراري للأجهزة (HTC) | 4 | |
| 5 | LWSMI | خفيف الوزن SMI [ 211 ] | شهادة نقل ملكية خاصة | تم دعم التحكم الحراري بالبرمجيات (STC) [ 212 ] | 5 | |
| 6 | (محجوز) | خطوات 100 ميجاهرتز | التحكم في مضاعف التردد 100 ميجاهرتز | 6 | ||
| 7 | (محجوز) | HwPstate | التحكم في حالة الطاقة للأجهزة (MSRs C001_0061إلى C001_0063) | 7 | ||
| 8 | (محجوز) | ثابت Tsc | معدل TSC الثابت - معدل TSC ( عداد الطوابع الزمنية ) مضمون أن يكون ثابتًا عبر جميع حالات P وحالات C وعمليات الانتقال لمنح التوقف. | 8 | ||
| 9 | (محجوز) | CPB | تحسين الأداء الأساسي | 9 | ||
| 10 | (محجوز) | EffFreqRO | واجهة التردد الفعال للقراءة فقط (MSRs C000_00E7و C000_00E8) | 10 | ||
| 11 | (محجوز) | واجهة ProcFeedback | واجهة التغذية الراجعة للمعالج مدعومة | 11 | ||
| 12 | (محجوز) | تقارير ProcPower | واجهة الإبلاغ عن طاقة المعالج مدعومة | 12 | ||
| 13 | (محجوز) | وضع الاستعداد المتصل | وضع الاستعداد المتصل [ 213 ] | 13 | ||
| 14 | (محجوز) | RAPL | حد متوسط الطاقة التشغيلية [ 213 ] | 14 | ||
| 15 | (محجوز) | FastCPPC | يدعم Fast CPPC (التحكم التعاوني في أداء المعالج) [ 213 ] | 15 | ||
| 16 | (محجوز) | أولوية أداء Cppc | أولوية أداء CPPC [ 214 ] | 16 | ||
| 26:17 | (محجوز) | (محجوز) | 26:17 | |||
| 27 | (محجوز) | (محجوز) [ أ ] | 27 | |||
| 31:28 | (محجوز) | (محجوز) | 31:28 | |||
| أجزاء | إي إيه إكس | بورصة السلع الأوروبية (ECX) | أجزاء | |||
|---|---|---|---|---|---|---|
| قصير | ميزة | قصير | ميزة | |||
| 7:0 | عدد الشاشات | عدد أزواج MSR المتاحة لتغذية المعالج الراجعة، بدءًا من MSR C001_0080فصاعدًا [ 216 ] | نسبة وقت أخذ عينات طاقة المعالج | نسبة فترة أخذ عينات مجمع طاقة وحدة الحوسبة إلى فترة عداد TSC. | 7:0 | |
| 15:8 | إصدار | إصدار إمكانيات التغذية الراجعة للمعالج | 15:8 | |||
| 31:16 | أقصى وقت التفاف | الحد الأقصى للوقت بين عمليات القراءة (بالمللي ثانية) الذي يجب أن يستخدمه البرنامج لتجنب عمليتي التفاف. | 31:16 | |||
EAX=80000008h: أحجام العناوين الافتراضية والمادية
| قليل | EBX | |
|---|---|---|
| قصير | ميزة | |
| 0 | clzero | CLZEROتعليمات |
| 1 | متقاعد_إنستر | عدد التعليمات المتقاعدة MSR ( C000_00E9h) المدعومة |
| 2 | xrstor_fp_err | XRSTORيُصلح أخطاء الفاصلة العائمة |
| 3 | invlpgb | INVLPGBوالتعليماتTLBSYNC |
| 4 | rdpru | RDPRUتعليمات |
| 5 | (xotext) | ( بلاي ستيشن 5 : ذاكرة التنفيذ فقط) [ 217 ] [ أ ] |
| 6 | mbe | فرض استخدام عرض نطاق الذاكرة |
| 7 | (محجوز) [ أ ] | |
| 8 | mcommit | MCOMMITتعليمات |
| 9 | wbnoinvd | WBNOINVDتعليمات |
| 10 | LBR_EXT_V1 | ملحقات LBR الإصدار 1 [ 211 ] |
| 11 | (محجوز) [ أ ] | |
| 12 | IBPB | حاجز التنبؤ بالتفرع غير المباشر (يتم تنفيذه عن طريق كتابة 1 إلى البت 0 من PRED_CMD(MSR 049h)) |
| 13 | wbinvd_int | WBINVDويمكن WBNOINVDمقاطعتها |
| 14 | IBRS | المضاربة المقيدة للفرع غير المباشر |
| 15 | STIBP | وضع التنبؤ بالتفرع غير المباشر أحادي الخيط |
| 16 | IbrsAlwaysOn | يتميز وضع IBRS بأداء محسّن، ويجب تركه قيد التشغيل دائمًا. |
| 17 | ستيب أونلي أون | يتميز وضع STIBP بأداء محسّن، ويجب تركه قيد التشغيل دائمًا. |
| 18 | ibrs_preferred | يُفضّل نظام IBRS على البرامج |
| 19 | حماية الوضع نفسه لـ ibrs | يوفر نظام IBRS حماية من نفس الوضع |
| 20 | no_efer_lmsle | EFER.LMSLEغير مدعوم [ ب ] |
| 21 | invlpgb_nested | INVLPGBدعم الصفحات المتداخلة |
| 22 | (LBR_TSX) | (معلومات LBR TSX) [ 211 ] |
| 23 | ببين | رقم جرد المعالج المحمي -
|
| 24 | sbd | تعطيل تجاوز المتجر المضارب |
| 25 | sbd_legacy | تجاوز المتجر المضارب تعطيل النظام القديم |
| 26 | sbd_no | لا يلزم تعطيل تجاوز المتجر المضارب |
| 27 | cppc | التحكم في أداء المعالج التعاوني |
| 28 | psfd | تعطيل التخزين التنبؤي للأمام |
| 29 | رقم البيتكوين | تداخل نوع الفرع: المعالج غير متأثر |
| 30 | IBPB_RET | يقوم IBPB (انظر البت 12) أيضًا بمسح مُتنبئ عنوان الإرجاع |
| 31 | أخذ عينات من الفروع | دعم أخذ العينات من الفروع [ 220 ] |
| أجزاء | إي إيه إكس | بورصة السلع الأوروبية (ECX) | EDX | أجزاء | ||
|---|---|---|---|---|---|---|
| 7:0 | عدد بتات العنوان الفعلي | عدد الخيوط الفعلية في المعالج (ناقص 1) | الحد الأقصى لعدد صفحات INVLPGBالتعليمات | 7:0 | ||
| 11:8 | عدد بتات العنوان الخطي | (محجوز) | 11:8 | |||
| 15:12 | حجم معرف APIC | 15:12 | ||||
| 17:16 | حجم عنوان الضيف الفعلي [ ج ] | حجم عداد الطابع الزمني للأداء | أقصى قيمة ECX معترف بها وفقًا RDPRUللتعليمات | 17:16 | ||
| 23:18 | (محجوز) | 23:18 | ||||
| 31:24 | (محجوز) | 31:24 |
- 1 2 3 اعتبارًا من يونيو 2025، لم يتم إدراج البتات 5 و7 و11 من CPUID.(EAX=8000_0008):EBX في أي وثائق عامة معروفة لشركة AMD، ولكن لوحظ أنها مُفعّلة على معالجات AMD 4700S Desktop Kit. [ 218 ]
- ↑ لا تحتوي ميزة LMSLE (تمكين حد مقطع الوضع الطويل) على علامة CPUID خاصة بها، ويتم اكتشافها من خلال التحقق من عائلة المعالج وطرازه. وقد تم تقديمها في
AuthenticAMDعائلة 0Fh طراز 14h [ 219 ] (معالجات Athlon64/Opteron بتقنية 90 نانومتر)، وهي موجودة في جميع معالجات AMD اللاحقة - باستثناء تلك التي تم ضبط علامة 'no_efer_lmsle' عليها. - ↑ تشير القيمة 0 إلى أن "حجم العنوان الفعلي للضيف" هو نفسه "عدد بتات العنوان الفعلي"، المحدد في EAX[7:0].
EAX=8000000Ah: ميزات SVM
تُعيد هذه الورقة معلومات حول ميزات AMD SVM ( الآلة الافتراضية الآمنة ) في EAX و EBX و ECX و EDX.
| أجزاء | إي إيه إكس | EBX | بورصة السلع الأوروبية (ECX) | أجزاء | ||
|---|---|---|---|---|---|---|
| 2:0 | رقم مراجعة SVM | عدد معرفات مساحة العناوين (ASIDs) المتاحة | (محجوز) | 2:0 | ||
| 3 | تصفية أحداث PMC للضيوف [ 221 ] | 3 | ||||
| 4 | Page Modification Logging[222] | 4 | ||||
| 5 | (reserved) | 5 | ||||
| 6 | x2AVIC_EXT (4096 vCPUs supported in x2AVIC mode) | 6 | ||||
| 7 | (reserved) | 7 | ||||
| 8 | (hypervisor)[a] | 8 | ||||
| 31:9 | (reserved) | 31:9 |
| Bit | EDX | |
|---|---|---|
| Short | Feature | |
| 0 | NP | Rapid Virtualization Indexing (Nested Paging) |
| 1 | LbrVirt | LBR (Last Branch Records) virtualization |
| 2 | SVML | SVM-Lock |
| 3 | NRIPS | nRIP (next sequential instruction pointer) save on #VMEXIT supported |
| 4 | TscRateMsr | MSR-based TSC rate control (MSR C000_0104h) |
| 5 | VmcbClean | VMCB (Virtual Machine Control Block) clean bits supported |
| 6 | FlushByAsid | TLB flush events (e.g. CR3 writes, CR4.PGE toggles) only flush the TLB entries of the current ASID (address space ID) |
| 7 | DecodeAssist | Decode assists supported |
| 8 | PmcVirt | PMC (Performance Monitoring Counters) virtualization |
| 9 | (SseIsa10Compat)[b] | (reserved) |
| 10 | PauseFilter | PAUSE intercept filter supported |
| 11 | EMP | Encrypted Microcode Patch[211] |
| 12 | PauseFilterThreshold | PAUSE filter cycle count threshold supported |
| 13 | AVIC | AMD Advanced Virtualized Interrupt Controller supported |
| 14 | (reserved) | |
| 15 | VMSAVEvirt | VMSAVE and VMLOAD virtualization |
| 16 | VGIF | Global Interrupt Flag (GIF) virtualization |
| 17 | GMET | Guest Mode Execution Trap |
| 18 | x2AVIC | x2APIC mode supported for AVIC |
| 19 | SSSCheck | SVM Supervisor shadow stack restrictions |
| 20 | SpecCtrl | SPEC_CTRL (MSR 2E0h) virtualization |
| 21 | ROGPT | Read-Only Guest Page Table supported |
| 22 | (reserved) | |
| 23 | HOST_MCE_OVERRIDE | Guest mode Machine-check exceptions when host CR4.MCE=1 and guest CR4.MCE=0 cause intercepts instead of shutdowns |
| 24 | TlbiCtl | INVLPGB/TLBSYNC hypervisor enable in VMCB and TLBSYNC intercept support |
| 25 | VNMI | NMI (Non-Maskable interrupt) virtualization |
| 26 | IbsVirt | IBS (Instruction-Based Sampling) virtualization |
| 27 | ExtLvtOffsetFaultChg | Read/Write fault behavior for extended LVT offsets (APIC addresses 0x500-0x530) changed to Read Allowed, Write #VMEXIT[229] |
| 28 | VmcbAddrChkChg | VMCB address check change[229] |
| 29 | BusLockThreshold | Bus Lock Threshold |
| 30 | IdleHltIntercept | Idle HLT (HLT instruction executed while no virtual interrupt is pending) intercept |
| 31 | EnhancedShutdownIntercept | Support for EXITINFO1 on shutdown intercept, and nested shutdown intercepts will result in a non-interceptible shutdown.[230] |
- ↑Early revisions of AMD's "Pacifica" documentation listed EAX bit 8 as an always-zero bit reserved for hypervisor use.[223]
Later AMD documentation, such as #25481 "CPUID specification" rev 2.18[224] and later, only lists the bit as reserved.
In rev 2.30[225] and later, a different bit is listed as reserved for hypervisor use: CPUID.(EAX=1):ECX[bit 31].
- ↑EDX bit 9 is briefly listed in some older revisions of AMD's document #25481 "CPUID Specification", and is set only in some AMD Bobcat CPUs.[226]
Rev 2.28 of #25481 lists the bit as "Ssse3Sse5Dis"[227] - in rev 2.34, it is listed as having been removed from the spec at rev 2.32 under the name "SseIsa10Compat".[228]
EAX=8000'001Fh: Encrypted Memory Capabilities
| Bit | EAX | |
|---|---|---|
| Short | Feature | |
| 0 | SME | Secure Memory Encryption |
| 1 | SEV/CSV | |
| 2 | PageFlushMSR | Page flush MSR (C001_011Eh) supported |
| 3 | SEV-ES/CSV2 (Hygon) |
|
| 4 | SEV-SNP | SEV Secure Nested Paging |
| 5 | VMPL | VM Privilege Levels |
| 6 | RMPQUERY | RMPQUERY instruction supported |
| 7 | VmplSSS | VMPL Supervisor shadow stack supported |
| 8 | SecureTSC | Secure TSC supported |
| 9 | TscAuxVirtualization | Virtualization of TSC_AUX MSR (C000_0103) supported |
| 10 | HwEnfCacheCoh | Hardware cache coherency across encryption domains enforced |
| 11 | 64BitHost | SEV Guest execution only allowed from 64-bit host |
| 12 | RestrictedInjection | SEV-ES guests can refuse all event-injections except #HV (Hypervisor Injection Exception) |
| 13 | AlternateInjection | SEV-ES guests can use an encrypted VMCB field for event-injection |
| 14 | DebugVirt | Full debug state virtualization supported for SEV-ES and SEV-SNP guests |
| 15 | PreventHostIBS | Prevent host IBS for a SEV-ES guest |
| 16 | VTE | Virtual Transparent Encryption for SEV |
| 17 | VmgexitParameter | VMGEXIT parameter is supported (using the RAX register) |
| 18 | VirtualTomMsr | Virtual TOM (top-of-memory) MSR (C001_0135) supported |
| 19 | IbsVirtGuestCtl | IBS virtualization is supported for SEV-ES and SEV-SNP guests |
| 20 | PmcVirtGuestCtl | PMC virtualization is supported for SEV-ES and SEV-SNP guests |
| 21 | RMPREAD | RMPREAD instruction supported |
| 22 | GuestInterceptControl | Guest Intercept control supported for SEV-ES guests |
| 23 | SegmentedRmp | Segmented RMP (Reverse-Map Table) supported |
| 24 | VmsaRegProt | VMSA (VM Save Area) register protection supported |
| 25 | SmtProtection | SMT Protection supported |
| 26 | SecureAvic | Secure AVIC supported |
| 27 | AllowedSEVfeatures | ALLOWED_SEV_FEATURES_MASK field in VMCB (offset 138h) supported |
| 28 | SVSMCommPageMSR | SVSM (Secure VM Service Module[232]) communication page MSR (C001_F000h) supported |
| 29 | NestedVirtSnpMsr | VIRT_RMPUPDATE (C001_F001h) and VIRT_PSMASH (C001_F002h) MSRs supported |
| 30 | HvInUseWrAllowed/CSV3 |
|
| 31 | IbpbOnEntry | IBPB on entry to virtual machine supported |
| Bits | EBX | ECX | EDX | Bits |
|---|---|---|---|---|
| 5:0 | C-bit (encryption enable bit) location in page table entry | Maximum ASID value that can be used for a SEV-enabled guest (maximum number of encrypted guests that can be supported simultaneously) | Minimum ASID value for a guest that is SEV-enabled but not SEV-ES-enabled | 5:0 |
| 11:6 | Physical address width reduction when memory encryption is enabled | 11:6 | ||
| 15:12 | Number of VMPLs (VM Privilege Levels) supported | 15:12 | ||
| 31:16 | (reserved) | 31:16 |
EAX=8000'0021h: Extended Feature Identification
| Bit | EAX | ECX | Bit | |||
|---|---|---|---|---|---|---|
| Short | Feature | Short | Feature | |||
| 0 | NoNestedDataBp | Processor ignores nested data breakpoints | (reserved) | 0 | ||
| 1 | FsGsKernelGsBaseNonSerializing | WRMSR to the FS_BASE, GS_BASE and KernelGSBase MSRs is non-serializing[233] | TSA_SQ_NO | If set, then CPU is not vulnerable to TSA-SQ[234] | 1 | |
| 2 | LFenceAlwaysSerializing | LFENCE is always dispatch serializing | TSA_L1_NO | If set, then CPU is not vulnerable to TSA-L1[234] | 2 | |
| 3 | SmmPgCfgLock | SMM paging configuration lock supported | (reserved) | 3 | ||
| 4 | (reserved) | (reserved) | 4 | |||
| 5 | VERW_CLEAR | VERW instruction can, when executed with a memory operand in Ring 0, be used to clear microarchitectural data buffers to help mitigate TSA (Transient Scheduler Attacks).[234] | (reserved) | 5 | ||
| 6 | NullSelectClearsBase | Null segment selector loads also clear the destination segment register base and limit | (reserved) | 6 | ||
| 7 | UpperAddressIgnore | Upper Address Ignore (Version 1) is supported | (reserved) | 7 | ||
| 8 | AutomaticIBRS | Automatic IBRS | (reserved) | 8 | ||
| 9 | NoSmmCtlMSR | SMM_CTL MSR (C0010116h) is not supported | (reserved) | 9 | ||
| 10 | FSRS | Fast short REP STOSB supported | (reserved) | 10 | ||
| 11 | FSRC | Fast short REPE CMPSB supported | (reserved) | 11 | ||
| 12 | PMC2PreciseRetire | PreciseRetire performance counter control bit (MSR C0010002h bit 43) supported[230] | (reserved) | 12 | ||
| 13 | PrefetchCtlMsr | PrefetchControl MSR (C0000108h) is supported | (reserved) | 13 | ||
| 14 | L2TlbSIzeX32 | If set, L2 TLB sizes (leaf 80000006h) are encoded as multiples of 32 | (reserved) | 14 | ||
| 15 | AMD_ERMSB | Processor supports AMD implementation of Enhanced REP MOVSB and REP STOSB | (reserved) | 15 | ||
| 16 | OPCODE_0F017_RECLAIM | Reserves opcode 0F 01 /7 for AMD use, returning #UD.[230] | (reserved) | 16 | ||
| 17 | CpuidUserDis | CPUID disable for non-privileged software (#GP) | (reserved) | 17 | ||
| 18 | EPSF | Enhanced Predictive Store Forwarding supported[233] | (reserved) | 18 | ||
| 19 | FAST_REP_SCASB | Fast Short REP SCASB supported | (reserved) | 19 | ||
| 20 | PREFETCHI | Instruction Cache prefetch instructions PREFETCHIT0 and PREFETCHIT1 supported[a] | (reserved) | 20 | ||
| 21 | FP512_DOWNGRADE | Downgrade of 512-bit datapath to 256-bit supported.[b] | (reserved) | 21 | ||
| 22 | WL_CLASS_SUPPORT | Support for workload-based heuristic feedback to OS for scheduling decisions[230] | (reserved) | 22 | ||
| 23 | AVX512_BMM | AVX-512 Bit Matrix Multiply and Bit Reverse instructions[236][237] | (reserved) | 23 | ||
| 24 | ERAPS | Enhanced Return Address Predictor Security (see also EBX[23:16] "RapSize") | (reserved) | 24 | ||
| 25 | (reserved) | (reserved) | 25 | |||
| 26 | UpperAddressIgnore2 | Upper Address Ignore (Version 2) is supported[238] | (reserved) | 26 | ||
| 27 | SBPB | Selective Branch Predictor Barrier supported[239] | (reserved) | 27 | ||
| 28 | IBPB_BRTYPE | IBPB flushes all branch type predictions[239] | (reserved) | 28 | ||
| 29 | SRSO_NO | CPU is not subject to SRSO (Speculative Return Stack Overflow) vulnerability[239] | (reserved) | 29 | ||
| 30 | SRSO_USER_KERNEL_NO | CPU is not subject to SRSO vulnerability across user/kernel boundary[239] | (reserved) | 30 | ||
| 31 | SRSO_MSR_FIX | SRSO can be mitigated by setting bit 4 of BP_CFG (MSR C001_102E)[239] | (reserved) | 31 | ||
- ↑On Intel processors, support for the instruction-cache prefetch instructions is not indicated by
CPUID.(EAX=8000_0021h):EAX[20]but instead byCPUID.(EAX=7,ECX=1):EDX[14]. - ↑If the downgrade from 512-bit to 256-bit datapath is enabled, then AVX-512 instructions that work on 512-bit data items will be split into two 256-bit parts that will be issued over two consecutive cycles. This datapath downgrade can help improve power efficiency for some workloads.[235]
| Bits | EBX | |
|---|---|---|
| Short | Feature | |
| 15:0 | MicrocodePatchSize | The size of the Microcode patch in 16-byte multiples. If 0, the size of the patch is at most 5568 (15C0h) bytes |
| 23:16 | RapSize | Return Address Predictor Size.RapSize * 8 is the minimum number of CALL instructions without matching RET instructions that are needed to flush the Return Address Predictor. |
| 31:24 | (reserved) | |
EAX=8000'0025h: Encrypted Memory Capabilities 2
| Bits | EAX | EBX | EDX | Bits | |||||
|---|---|---|---|---|---|---|---|---|---|
| Short | Feature | Short | Feature | Short | Feature | ||||
| 0 | MinRmpSegSize | Minimum supported RMP Segment Size | NumCachedSegments | Number of cached RMP segment definitions | RmpOpt | RMPOPT instruction[240] | 0 | ||
| 1 | EnhSmtProtection | Enhanced SMT Protection[241] | 1 | ||||||
| 2 | RmpDirty | RMP Dirty feature and RMPCHKD instruction[242] | 2 | ||||||
| 5:3 | (reserved) | 5:3 | |||||||
| 9:6 | MaxRmpSegSize | Maximum supported RMP Segment Size | (reserved) | 9:6 | |||||
| 10 | NumSegReduction | Number of RMP segments is reduced | (reserved) | 10 | |||||
| 11 | (reserved) | (reserved) | 11 | ||||||
| 31:12 | (reserved) | (reserved) | (reserved) | 31:12 | |||||
EAX=8C86'0000h: Hygon Extended Feature Flags
Returns index of highest Hygon feature leaf in EAX (valid if greater than or equal to 8C860000h),[243] and Hygon feature flags in EDX.[244]
| Bits | EDX | |
|---|---|---|
| Short | Feature | |
| 0 | (reserved) | |
| 1 | sm3 | Hygon SM3 instructions |
| 2 | sm4 | Hygon SM4 instructions |
| 31:3 | (reserved) | |
EAX=8FFF'FFFEh and EAX=8FFF'FFFFh: AMD Easter Eggs
Several AMD CPU models will, for CPUID with EAX=8FFF'FFFFh, return an Easter egg string in EAX, EBX, ECX and EDX.[245][246] Known Easter Egg strings include:
| Processor | String |
|---|---|
| AMD K6 | NexGenerationAMD |
| AMD K8 | IT'S HAMMER TIME |
| AMD Jaguar[247] | HELLO KITTY! ^-^ |
Additionally, AMD K6 CPUs will, for CPUID with EAX=8FFF'FFFEh, return an Easter egg reference to "DEI" in EAX.[248]
EAX=C000'0000h: Highest Centaur Extended Function
Returns index of highest Centaur leaf in EAX. If the returned value in EAX is less than C0000001h, then Centaur extended leaves are not supported.
Present in CPUs from VIA and Zhaoxin.
On IDT WinChip CPUs (CentaurHauls Family 5), the extended leaves C0000001h-C0000005h do not encode any Centaur-specific functionality but are instead aliases of leaves 80000001h-80000005h.[249]
EAX=C000'0001h: Centaur Feature Information
This leaf returns Centaur feature information (mainly VIA/Zhaoxin PadLock) in EDX.[250][251][252][253] (EAX, EBX and ECX are reserved.)
| Bit | EDX | |
|---|---|---|
| Short | Feature | |
| 0 | sm2[a] | GMI SM2 instruction present |
| 1 | sm2_en[a] | SM2 enabled |
| 2 | rng | PadLock RNG present: XSTORE and REP XSTORE instructions |
| 3 | rng_en | RNG enabled |
| 4 | ccs[a] | GMI SM3/SM4 instructions present: CCS_HASH and CCS_ENCRYPT |
| 5 | ccs_en[a] | SM3/SM4 instructions enabled |
| 6 | xcrypt | PadLock Advanced Cryptographic Engine (ACE, using AES cipher) present: REP XCRYPT(ECB,CBC,CFB,OFB) instructions |
| 7 | xcrypt_en | ACE enabled |
| 8 | ace2 | ACE v2 present: REP XCRYPTCTR instruction, as well as support for digest mode and misaligned data for ACE's REP XCRYPT* instructions. |
| 9 | ace2_en | ACE v2 enabled |
| 10 | phe | PadLock Hash Engine (PHE): REP XSHA1 and REP XSHA256 instructions |
| 11 | phe_en | PHE enabled |
| 12 | pmm | PadLock Montgomery Multiplier (PMM): REP MONTMUL instruction |
| 13 | pmm_en | PMM enabled |
| 14 | (reserved) | |
| 15 | zx_fma | FMA supported |
| 16 | parallax | Adaptive P-state control present |
| 17 | parallax_en | Adaptive P-state control enabled |
| 18 | overstress | Overstress feature for auto overclock present |
| 19 | overstress_en | Overstress feature for auto overclock enabled |
| 20 | tm3 | Thermal Monitor 3 present |
| 21 | tm3_en | Thermal Monitor 3 enabled |
| 22 | rng2 | RNG v2 - second generation RNG present: REP XRNG2 instruction |
| 23 | rng2_en | RNG v2 enabled |
| 24 | sme | SME feature present |
| 25 | phe2 | PHE v2: SHA384 and SHA512 present |
| 26 | phe2_en | PHE v2 enabled |
| 27 | xmodx | RSA instructions present: XMODEXP and MONTMUL2 instructions |
| 28 | xmodx_en | RSA instructions enabled |
| 29 | vex | VEX instructions present |
| 30 | vex_en | VEX instructions enabled |
| 31 | stk | STK is present |
EAX=C000'0002h: Centaur Extended CPUID Performance Data
This leaf returns information about CPU voltage, temperature, clock multipliers and power-on settings for VIA C7 processors in EAX, EBX, ECX and EDX.[255]
| Bit | EAX[a] | EBX | ECX | EDX | Bit | |||
|---|---|---|---|---|---|---|---|---|
| 7:0 | Fractional temperature | Current voltage: (16*[7:0]+700) mV | Highest voltage: (16*[7:0]+700) mV | (reserved) | 7:0 | |||
| 13:8 | Current temperature in Celsius | Current clock multiplier | Highest clock multiplier | (reserved) | 13:8 | |||
| 14 | 1MB Reset vector (0=0xFFFFFFF0,1=0x000FFFF0) | 14 | ||||||
| 15 | (reserved) | 15 | ||||||
| 17:16 | (reserved) | Lowest voltage: (16*[23:16]+700) mV | APIC Cluster ID | 17:16 | ||||
| 19:18 | Input Front Side Bus Clock (00=100MHz, 01=133Mz, 10=200MHz, 11=166MHz) | 19:18 | ||||||
| 21:20 | APIC Agent ID | 21:20 | ||||||
| 23:22 | Current clock ratio | 23:22 | ||||||
| 26:24 | Lowest clock ratio | Lowest clock multiplier | 26:24 | |||||
| 31:27 | (reserved) | 31:27 |
- ↑On the VIA C7, if the on-chip temperature sensor has been turned off, then EAX will return 0.
EAX=C000'0006h, ECX=0: Zhaoxin Feature Information
This sub-leaf returns feature information in EAX. EBX, ECX and EDX are reserved.
| Bit | EAX | |
|---|---|---|
| Short | Feature | |
| 0 | pauseopt | PAUSEOPT instruction[256] |
| 1 | (reserved)[a] | |
| 2 | (reserved) | |
| 3 | (reserved)[a] | |
| 31:4 | (reserved) | |
CPUID usage from high-level languages
Inline assembly
This information is easy to access from other languages as well. For instance, the C code for gcc below prints the first five values, returned by the cpuid:
#include<stdio.h>#include<cpuid.h>intmain(){unsignedinti,eax,ebx,ecx,edx;for(i=0;i<5;i++){__cpuid(i,eax,ebx,ecx,edx);printf("InfoType %x\nEAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n",i,eax,ebx,ecx,edx);}return0;}In MSVC and Borland/Embarcadero C compilers (bcc32) flavored inline assembly, the clobbering information is implicit in the instructions:
#include<stdio.h>intmain(){unsignedinta,b,c,d,i=0;__asm{/* Do the call. */movEAX,i;cpuid;/* Save results. */mova,EAX;movb,EBX;movc,ECX;movd,EDX;}printf("InfoType %x\nEAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n",i,a,b,c,d);return0;}If either version was written in plain assembly language, the programmer must manually save the results of EAX, EBX, ECX, and EDX elsewhere if they want to keep using the values.
Wrapper functions
GCC also provides a header called <cpuid.h> on systems that have CPUID. The __cpuid is a macro expanding to inline assembly. Typical usage would be:
#include<stdio.h>#include<cpuid.h>intmain(){unsignedinteax,ebx,ecx,edx;__cpuid(0/* vendor string */,eax,ebx,ecx,edx);printf("EAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n",eax,ebx,ecx,edx);return0;}But if one requested an extended feature not present on this CPU, they would not notice and might get random, unexpected results. Safer version is also provided in <cpuid.h>. It checks for extended features and does some more safety checks. The output values are not passed using reference-like macro parameters, but more conventional pointers.
#include<stdio.h>#include<cpuid.h>intmain(){unsignedinteax,ebx,ecx,edx;/* 0x81234567 is nonexistent, but assume it exists */if(!__get_cpuid(0x81234567,&eax,&ebx,&ecx,&edx)){printf("Warning: CPUID request 0x81234567 not valid!\n");return1;}printf("EAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n",eax,ebx,ecx,edx);return0;}Notice the ampersands in &a, &b, &c, &d and the conditional statement. If the __get_cpuid call receives a correct request, it will return a non-zero value, if it fails, zero.[258]
Microsoft Visual C compiler has builtin function __cpuid() so the cpuid instruction may be embedded without using inline assembly, which is handy since the x86-64 version of MSVC does not allow inline assembly at all. The same program for MSVC would be:
#include<stdio.h>#ifdef _MSC_VER#include<intrin.h>#endifintmain(){unsignedintregs[4];inti;for(i=0;i<4;i++){__cpuid(regs,i);printf("The code %d gives %d, %d, %d, %d",regs[0],regs[1],regs[2],regs[3]);}return0;}Many interpreted or compiled scripting languages are capable of using CPUID via an FFI library. One such implementation shows usage of the Ruby FFI module to execute assembly language that includes the CPUID opcode.
.NET 5 and later versions provide the System.Runtime.Intrinsics.X86.X86base.CpuId method. For instance, the C# code below prints the processor brand if it supports CPUID instruction:
usingSystem.Runtime.InteropServices;usingSystem.Runtime.Intrinsics.X86;usingSystem.Text;namespaceX86CPUID{classCPUBrandString{publicstaticvoidMain(string[]args){if(!X86Base.IsSupported){Console.WriteLine("Your CPU does not support CPUID instruction.");}else{Span<int>raw=stackallocint[12];(raw[0],raw[1],raw[2],raw[3])=X86Base.CpuId(unchecked((int)0x80000002),0);(raw[4],raw[5],raw[6],raw[7])=X86Base.CpuId(unchecked((int)0x80000003),0);(raw[8],raw[9],raw[10],raw[11])=X86Base.CpuId(unchecked((int)0x80000004),0);Span<byte>bytes=MemoryMarshal.AsBytes(raw);stringbrand=Encoding.UTF8.GetString(bytes).Trim();Console.WriteLine(brand);}}}}CPU-specific information outside x86
Some of the non-x86 CPU architectures also provide certain forms of structured information about the processor's abilities, commonly as a set of special registers:
- ARM architectures have a
CPUIDcoprocessor register which requires exception level EL1 or above to access.[259] - System/370 through z/Architecture IBM mainframe processors have a supervisor-mode-only Store CPU ID (
STIDP) instruction, which provides information that includes the CPU type.[260][261]:10-147–10-149 - The z/Architecture mainframe processors also have a supervisor-mode-only Store Facilities List (
STFL)[261]:10-149 instruction, and a non-privileged Store Facilities List Extended (STFLE) instruction,:7-394–7-395 which list the installed hardware features. - The MIPS32/64 architecture defines a mandatory Processor Identification (
PrId) and a series of daisy-chained Configuration Registers.[262] - The PowerPC processor has the 32-bit read-only Processor Version Register (
PVR) identifying the processor model in use. The instruction requires supervisor access level.[263] - The RISC-V architecture has an
mcpuid"read-only register containing information regarding the capabilities of the CPU implementation"[264]
DSP and transputer-like chip families have not taken up the instruction in any noticeable way, in spite of having (in relative terms) as many variations in design. Alternate ways of silicon identification might be present; for example, DSPs from Texas Instruments contain a memory-based register set for each functional unit that starts with identifiers determining the unit type and model, its ASIC design revision and features selected at the design phase, and continues with unit-specific control and data registers. Access to these areas is performed by simply using the existing load and store instructions; thus, for such devices, there is no need for extending the register set for device identification purposes.
See also
- sandpile.org, the world's leading source for technical x86 processor information
- x86-cpuid.org, a complete x86 architecture CPUID database plus related code generation tools, to be used by both the Linux Kernel and the Xen hypervisor.[265]
- CPU-Z, a Windows utility that uses
CPUIDto identify various system settings - CPU-X, an alternative of CPU-Z for Linux and FreeBSD
- Spectre (security vulnerability)
- Speculative Store Bypass (SSB)
- /proc/cpuinfo, a text file generated by certain systems containing some of the CPUID information
References
- ↑"Intel 64 and IA-32 Architectures Software Developer's Manual"(PDF). Intel.com. Retrieved 2013-04-11.
- ↑"Detecting Intel Processors - Knowing the generation of a system CPU". Rcollins.org. Retrieved 2013-04-11.
- ↑"LXR linux-old/arch/i386/kernel/head.S". Lxr.linux.no. Retrieved 2013-04-11.
{{cite web}}: CS1 maint: deprecated archival service (link) - 123Debbie Wiles, CPU Identification, archived on 2006-06-04
- ↑B-CoolWare, TMi0SDGL x86 CPU/FPU detection library with source code, v2.15, June 2000 - see /SOURCE/REALCODE.ASM for a large collection of pre-CPUID x86 CPU detection routines. Archived on 14 Mar 2023.
- ↑"CPUID, EAX=4 - Strange results (Solved)". Software.intel.com. Retrieved 2014-07-10.
- ↑instlatx64. "CPUID dump for RDC IAD 100". Archived from the original on 5 December 2019. Retrieved 22 December 2022.
{{cite web}}: CS1 maint: numeric names: authors list (link) - ↑@InstLatX64 (February 28, 2019). "First encounter with "GenuineIotel" (o after I, instead of n)" (Tweet) – via Twitter.
- ↑"GenuineIotel CPUID dump for Intel Xeon E3-1231". instlatx64. Archived from the original on 7 December 2019.
- ↑Grzegorz Mazur, Identification of x86 CPUs with CPUID support, 5 May 1997. Archived from the original on 24 May 1997.
- ↑Ingo Böttcher, CPUDET.PAS v1.61, 23 Oct 1996 - CPU identification program that tests for "AMD ISBETTER" string. Archived on 26 Apr 2024.
- ↑sorgelig (Aug 3, 2017). "ao486 CPUID instruction (in commit 43a2004)". GitHub. Archived from the original on 2023-12-04. Retrieved 2023-12-04.
- 12sorgelig (Aug 30, 2020). "Update cpuid. · MiSTer-devel/ao486_MiSTer@82f5014". GitHub. Archived from the original on 2023-12-04. Retrieved 2023-12-04.
- ↑sorgelig (Aug 30, 2020). "ao486 CPUID instruction". GitHub. Archived from the original on October 23, 2023. Retrieved 4 Dec 2023.
- ↑"v586: 586 compatible soft core for FPGA". GitHub. 6 December 2021.
- 1234smxi, Inxi issue 197: Elbrus CPU support data and implementation. Retrieved 23 October 2023. Archived on 23 October 2023.
- ↑Peter Ferrie, Attacks on More Virtual Machine Emulators, page 5. Archived on 15 Feb 2010.
- 12Amit Singh, Miscellaneous, see Solaris section. Archived from the original on 10 Dec 2004.
- 1234Darek Mihocka, ARM64 Boot Camp: Understanding x86/x64 Emulation on Windows on ARM, 28 Jan 2024, see "Probing CPUID" section. Archived on 24 Feb 2024.
- ↑"Fun with Timers and cpuid - by Jim Cownie - CPU fun". 3 March 2021. Archived from the original on 3 March 2021.
- ↑Insignia Solutions, RealPC Installation and User’s Guide, 1997, p. 71. Archived from the original on 28 Nov 2015.
- ↑Philippe Geneste, (INFO) Emulation PC sur Mac (in French), 21 Jan 1998. Archived on 24 Jun 2025.
- ↑Insignia Solutions, SoftWindows 98 Installation and User's Guide, 1998, p. 127. Archived from the original on 25 Nov 2015.
- ↑VOGONS discussion thread "SIV support for 386/486/586 class + Alpha CPUs and 3dfx + S3 + SiS + Matrox + XGI + old ATI + NVidia GPUs - Testing Help", post by lolo799 on 2021-09-12 17:10 — see SIV32L attachments for a screenshot and a CPUID dump listing the
"Compaq FX!32"string. Archived on 19 May 2024. - ↑Neko Project 21/W, help/configure (in Japanese). Archived on 22 Sep 2024.
- ↑CPU-World, CPUID for emulated Neko Project CPU with "Neko Project" string. Archived on 16 Nov 2025.
- ↑iXBT Labs, VIA Nano CPUID Tricks, Aug 26, 2010. Archived on Aug 29, 2010.
- ↑IDT, WinChip 2A data sheet, v1.0, Jan 1999, page A-3.
- ↑VIA, C3 Nehemiah Datasheet, rev 1.13, Sep 29, 2004, page A-3.
- ↑Agner Fog, CpuIDFake, v1.00, Jan 22, 2010, see "Instructions.txt". Archived on Jul 9, 2010.
- 12Transmeta, Crusoe BIOS Programmer's Guide, Jan 23, 2004, pages 63-65.
- ↑Transmeta, Efficeon BIOS Programmers Guide, Aug 19, 2003, section 8.3, page 148.
- ↑AMD, Geode LX Data Book, pub.id. 33234H, Feb. 2009, page 107. Archived on Dec 3, 2023.
- ↑DM&P, Vortex86EX2_A9133_Master_Data_Sheet_V11_BF, May 8, 2019, page 72.
- ↑"Chapter 3 Instruction Set Reference, A-L"(PDF). Intel 64 and IA-32 Architectures Software Developer's Manual. Intel Corporation. 2018-12-20. Retrieved 2018-12-20.
- ↑Intel, Pentium Processor Family Developer's Manual, 1997, order no. 241428-005, sections 3.4.1.2 (page 91), 17.5.1 (page 489) and appendix A (page 522) provide more detail on how the "processor type" field and the "dual processor" designation work.
- ↑InstLatx64 (17 May 2026). "x86, x64 Instruction Latency, Memory Latency and CPUID dumps".
{{cite web}}: CS1 maint: numeric names: authors list (link) - ↑AMD, Enhanced Am486DX Microprocessor Family, pub.no. 20736 rev B, March 1997, section 9.2.2, page 55. Archived on 18 Oct 2023.
- ↑AMD, ÉlanSC400 and ÉlanSC410 Microcontrollers User's Manual, pub.no. 21030, 1997, section 3.6.2, page 73. Archived on 18 Oct 2023.
- ↑Cyrix, 5x86 BIOS Writers Guide, rev 1.12, order no. 92426-00, 1995, page 7
- 12Cyrix, CPU Detection Guide, rev 1.01, 2 Oct 1997, page 6.
- ↑MiSTer ao486 source code, rtl/ao486/defines.v, line 70. Archived on 23 Oct 2023.
- ↑CPU-World, CPUID for Vortex86DX2 933 MHz. Archived on 15 Nov 2025.
- ↑CPU-World, CPUID for Vortex86EX2. Archived on 7 Sep 2025.
- ↑InstLatx64. "Centaur CNS CPUID dump". Archived from the original on 30 May 2023.
{{cite web}}: CS1 maint: numeric names: authors list (link) - ↑Jeff Atwood, Nasty Software Hacks and Intel's CPUID. Coding Horror, 16 Aug 2005.
- 12Intel, Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual, sep 2012, order no. 327364-001, appendix B.8, pages 673-674. Archived on 4 Aug 2021.
- ↑CPU-World, CPUID for Intel Itanium 2 1.50 GHz. Archived on 14 Nov 2025.
- ↑"[PATCH] x86/cpu: Add CPU model numbers for Novalake - Tony Luck". lore.kernel.org. Retrieved 2025-08-16.
- ↑"[PATCH] x86/cpu: Add two Intel CPU model numbers - Tony Luck". lore.kernel.org. Retrieved 2024-09-24.
- ↑InstLatX64. "72-Core Intel Xeon Phi 7290 CPUID dump".
{{cite web}}: CS1 maint: numeric names: authors list (link) - ↑InstLatx64. "96-Core AMD Ryzen Threadripper Pro 7995WX CPUID dump".
{{cite web}}: CS1 maint: numeric names: authors list (link) - ↑Intel Processor Identification and the CPUID Instruction(PDF), Intel, May 2002, archived from the original(PDF) on 2021-04-17
- ↑Linux 6.3 kernel sources, /arch/x86/include/asm/cpuid.h, line 69
- ↑gcc-patches mailing list, CPUID Patch for IDT Winchip, May 21, 2019
- ↑Geoff Chappell, CMPXCHG8B Support in the 32-Bit Windows Kernel, Jan 23, 2008. Archived on Jan 30, 2023.
- ↑AMD, AMD Processor Recognition Application Note, publication #20734, rev D, Jan 1997, page 13
- ↑Intel, AP-485 Application Note - Intel Processor Identification and the CPUID Instruction, order no. 241618-006, march 1997, table 5 on page 10, see bit 10.
- ↑Michal Necasek, SYSENTER, Where Are You?, OS/2 Museum, July 20, 2017
- ↑Intel, TDX module source code, v1.0.03.03, 22 Jun 2023, see src/common/helpers/smrrs.h. Archived on 20 Jan 2025.
- ↑Intel, Trust Domain CPU Architectural Extensions, order no. 343754-002, may 2021. Archived on 17 Dec 2024.
- ↑Intel, Pentium 4 Processor on 90 nm Process Specification Update, order no. 302352-031, sep 2006, see erratum R85 on page 59. Archived on 31 Dec 2008.
- ↑Geoff Chappell, ECX From CPUID Leaf 1, Jan 26, 2020. Archived on May 9, 2020.
- ↑Huggahalli, Ram; Iyer, Ravi; Tetrick, Scott (2005). "Direct Cache Access for High Bandwidth Network I/O". ACM SIGARCH Computer Architecture News. 33 (2): 50–59. CiteSeerX 10.1.1.85.3862. doi:10.1145/1080695.1069976. CiteSeerX:10.1.1.91.957.
- ↑Drepper, Ulrich (2007), What Every Programmer Should Know About Memory, CiteSeerX:10.1.1.91.957
- 12Intel, Itanium Architecture Software Developer's Manual, rev 2.3, volume 4: IA-32 Instruction Set, may 2010, document number: 323208, table 2-5, page 4:81, see bits 20 and 30. Archived on Feb 15, 2012.
- ↑Intel, AP-485, Processor Identification and the CPUID Instruction flag, rev 30, jan 2006, page 26
- ↑Michal Necasek, HTT Means Hyper-Threading, Right?, OS/2 Museum, dec 11, 2017
- ↑"Mechanisms to determine if software is running in a VMware virtual machine". VMware Knowledge Base. VMWare. 2015-05-01.
Intel and AMD CPUs have reserved bit 31 of ECX of CPUID leaf 0x1 as the hypervisor present bit. This bit allows hypervisors to indicate their presence to the guest operating system. Hypervisors set this bit and physical CPUs (all existing and future CPUs) set this bit to zero. Guest operating systems can test bit 31 to detect if they are running inside a virtual machine.
- ↑Kataria, Alok; Hecht, Dan (2008-10-01). "Hypervisor CPUID Interface Proposal". LKML Archive on lore.kernel.org. Archived from the original on 2019-03-15.
Bit 31 of ECX of CPUID leaf 0x1. This bit has been reserved by Intel & AMD for use by hypervisors and indicates the presence of a hypervisor. Virtual CPU's (hypervisors) set this bit to 1 and physical CPU's (all existing and future CPU's) set this bit to zero. This bit can be probed by the guest software to detect whether they are running inside a virtual machine.
- ↑"AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming"(PDF) (3.41 ed.). Advanced Micro Devices, Inc. p. 498. 24593. Archived from the original(PDF) on 30 Sep 2023. Retrieved 9 September 2023.
15.2.2 Guest Mode This new processor mode is entered through the VMRUN instruction. When in guest mode, the behavior of some x86 instructions changes to facilitate virtualization. The CPUID function numbers 4000_0000h-4000_00FFh have been reserved for software use. Hypervisors can use these function numbers to provide an interface to pass information from the hypervisor to the guest. This is similar to extracting information about a physical CPU by using CPUID. Hypervisors use the CPUID Fn 400000[FF:00] bit to denote a virtual platform. Feature bit CPUID Fn0000_0001_ECX[31] has been reserved for use by hypervisors to indicate the presence of a hypervisor. Hypervisors set this bit to 1 and physical CPU's set this bit to zero. This bit can be probed by the guest software to detect whether they are running inside a virtual machine.
- ↑Intel SDM vol 2A, order no. 253666-053, Jan 2015, p. 244
- 12Intel, Processor Identification and the CPUID Instruction Application Note 485, order no. 241618-037, Jan 2011, pages 31-32. Archived on 17 Oct 2023.
- ↑Intel, Itanium Processor Reference Manual for Software Development, rev 2.0, order no. 245320-003, December 2001, page 110. Archived from the original on 18 Feb 2004.
- 12Intel, Processor Identification and the CPUID Instruction Application Note 485, order no. 241618-036, Aug 2009, page 26. Archived on 6 Oct 2023.
- ↑InstLatX64, Willamette-128 CPUID dump. Archived on 7 Dec 2019.
- ↑InstLatX64, Northwood-128 CPUID dump. Archived on 7 Dec 2019.
- ↑InstLatX64, Prescott-256 CPUID dump. Archived on 6 Dec 2019.
- ↑InstLatX64, Intel Tolapai CPUID dump. Archived on 19 Jan 2019.
- ↑Jason Gaston, (PATCH 2.6.24-rc5) x86 intel_cacheinfo.c: cpu cache info entry for Intel Tolapai, LKML, 20 Dec 2007. Archived on 9 Nov 2024.
- ↑VIA-Cyrix, Application Note 120: Cyrix III CPU BIOS Writer's Guide, rev 1.1, 24 Nov 1999, page 13. Archived from the original on 29 Sep 2000.
- ↑InstlatX64, Intel Atom 230 CPUID dump. Archived on 7 Dec 2019.
- ↑WikiChip, Bonnell. Archived on 16 Jul 2017.
- ↑Cyrix, Cyrix CPU Detection Guide, rev 1.01, 2 Oct 1997, page 13.
- ↑CPU-World forum, Working Timna desktop 2023, page 2 - lists a CPUID dump from a Timna engineering sample. Archived on 9 Nov 2024.
- ↑Geoff Chappell, CPUID Leaf 2, 26 Jan 2020. Archived on Sep 4, 2023.
- ↑Intel, Itanium 2 Processor Reference Manual, order no. 251110-003, May 2004, page 192. Archived from the original on 7 Dec 2006.
- ↑Intel, Itanium 2 Processor Specification Update, order.no. 251141-028, Nov 2004, erratum 6 on page 26. Archived from the original on 25 Nov 2004.
- ↑Intel, Atom C3000 Processor Product Family Specification Update, order no. 336345-020, page 16, Mar 2023. Archived on 7 Oct 2023.
- ↑Intel, 6th Generation Intel Processor Specification Update, order no. 332689-030, July 2023, see erratum SKL148 on page 66. Archived from the original on 8 mar 2023.
- ↑Intel, 10th Generation Intel Core Processor Specification Update, order no. 615213-013, apr 2023, see erratum CML081 on page 41. Archived on 19 Jul 2024.
- ↑Intel, Xeon Processor 7500 Series Datasheet, order no. 323341-001, March 2010, page 150. Archived on Oct 8, 2023.
- ↑Intel, Optimization Reference Manual, volume 1, order no. 248966-049, jan 2024, chapter 9.6.3.3, p. 361. Archived on 19 Apr 2024.
- ↑Intel, AP-909 Application Note: Processor Serial Number, order no. 245125-001, March 1999. Archived from the original on 21 Jan 2004.
- ↑Transmeta, Processor Recognition, 7 May 2002, page 4. Archived from the original on 19 March 2003.
- ↑Transmeta, Crusoe BIOS Programmer's Guide, 23 Jan 2004, page 12. Archived from the original on 13 May 2005.
- ↑InstlatX64, Transmeta Efficieon 86x0 CPUID dump, see CPUID 00000003. Archived on 7 Dec 2019.
- ↑Intel, Processor Identification and the CPUID Instruction, order no. 241618-031, sep 2006, page 32.
- ↑InstLatx64, Intel Xeon Phi 7210 CPUID dump. Archived on 13 May 2025.
- 12Shih Kuo (Jan 27, 2012). "Intel 64 Architecture Processor Topology Enumeration".
- ↑"Processor and Core Enumeration Using CPUID | AMD". Developer.amd.com. Archived from the original on 2014-07-14. Retrieved 2014-07-10.
- ↑"Sandybridge processors report incorrect core number?". Software.intel.com. 2012-12-29. Retrieved 2014-07-10.
- ↑"cpuid, __cpuidex". Msdn.microsoft.com. 2014-06-20. Retrieved 2014-07-10.
- ↑"topology.cpp in ps/trunk/source/lib/sysdep/arch/x86_x64 – Wildfire Games". Trac.wildfiregames.com. 2011-12-27. Archived from the original on 2021-03-09. Retrieved 2014-07-10.
- ↑Hyper-Threading Technology and Multi-Core Processor Detection
- ↑Intel, Architecture Instruction Set Extensions Programming Reference, order no. 319433-052, March 2024, chapter 17. Archived on Apr 7, 2024.
- ↑Intel, Intel Processor Identification and the CPUID Instruction (AP-485, rev 30), order no. 241618-030, Jan 2006, page 19.
- ↑Intel, Intel 64 and IA-32 Architecture Software Developer's Manual, order no. 352462-079, volume 3B, section 15.4.4.4, page 3503
- ↑Intel, Processor Identification and the CPUID Instruction, order no. 241618-038, apr 2012, p.38
- ↑Intel, Product Change Notification 108701, 1 aug 2008. Archived on May 11, 2023
- 12"Performance Monitoring Impact of Intel Transactional Synchronization Extension Memory Ordering Issue"(PDF). Intel. June 2023. p. 8. Retrieved 8 May 2024.
- 123Intel, Architecture Specification: Intel Trust Domain Extensions (Intel TDX) Module, order no. 344425-001, sep 2020, pages 120-122. Archived from the original on Jul 29, 2021.
- ↑Intel, Deprecating the PCOMMIT instruction, sep 12, 2016. Archived on Mar 5, 2024.
- ↑Intel, AVX512-FP16 Architecture Specification (PDF), document number 347407-001, June 2021. Archived on Oct 26, 2022
- 1234"Speculative Execution Side Channel Mitigations"(PDF). Revision 2.0. Intel. May 2018 [January 2018]. Document Number: 336996-002. Retrieved 2018-05-26.
- ↑"IBRS patch series [LWN.net]".
- ↑Intel, X86S External Architecture Specification v1.2, June 2024, order no. 351407-002, section 3.5, page 13. Archived from the original on 2 Oct 2024.
- ↑Intel, Envisioning a Simplified Intel Architecture - as of 20 Dec 2024, contains a mention that Intel has chosen not to pursue X86S. Archived on 20 Dec 2024.
- 123Intel, Flexible Return and Event Delivery (FRED) Specification, rev 6.1, December 2023, order no. 346446-007, page 14. Archived on Dec 22, 2023.
- ↑Intel, Software Developer's Manual, order no. 325462-080, June 2023 - information about prematurely busy shadow stacks provided in Volume 1, section 17.2.3 on page 410; Volume 2A, table 3.8 (CPUID EAX=7,ECX=2) on page 820; Volume 3C, table 25-14 on page 3958 and section 26.4.3 on page 3984.
- ↑Intel, Complex Shadow-Stack Updates (Intel Control-Flow Enforcement Technology), order no. 356628-001, August 2023. Archived on 2 Apr 2024.
- ↑LKML, Re: (PATCH v3 00/21) Enable CET Virtualization, Jun 16, 2023 - provides additional discussion of how the CET-SSS prematurely-busy stack issue interacts with virtualization. Archived on 7 Aug 2023.
- 12Intel, Advanced Vector Extensions 10, rev 1.0, July 2023, order no. 355989-001. Archived on Jul 24, 2023.
- 12Intel, Advanced Performance Extensions - Architecture Specification, rev 2.0, Aug 2023, order no. 355828-002, page 37. Archived on Sep 10, 2023.
- ↑Intel, TDX Module ABI tables, April 2026 drafts, see /PDF/cpuid_virtualization.pdf pages 6-7. Archived on 1 May 2026.
- ↑Intel, Fast Store Forwarding Predictor, 8 Feb 2022. Archived on 6 Apr 2024.
- 123Intel, Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598, 4 Aug 2022. Archived on 11 Feb 2024.
- ↑Intel, Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702, 12 Jul 2022. Archived on 3 Jul 2024.
- ↑Intel, Data Dependent Prefetcher, 10 Nov 2022. Archived on 4 Aug 2024.
- ↑Intel, MONITOR and UMONITOR Performance Guidance, 10 Jul 2024. Archived on 27 Nov 2024.
- ↑InstLatx64, Intel Core i7-1065G7 CPUID dump — has the SGX oversubscription feature bits set (CPUID.(EAX=12h,ECX=0).EAX[6:5]). Archived on 6 Dec 2019.
- ↑Intel SGX Virtualization, KVM Forum 2018, p.19. Archived on 17 Nov 2019.
- ↑Intel, Asynchronous Enclave Exit Notify and the EDECCSSA User Leaf Function, 30 Jun 2022. Archived on 21 Nov 2022.
- ↑Linux kernel git commit 604dc91, x86/tsc: Use CPUID.0x16 to calculate missing crystal frequency, 9 May 2019 - contains notes on computing the Core Crystal Clock frequency on CPUs that don't specify it, and corresponding C code.
- ↑Intel, SDM Volume 3A, order no 253668-083, March 2024, chapter 11.5.4, page 408
- ↑instlatx64, Spreadtrum SC9853I-IA CPUID dump
- ↑"Intel® Architecture Instruction Set Extensions and Future Features"(PDF) (58th ed.). Jun 2025. p. 41. 319433-058. Archived(PDF) from the original on 17 Jul 2025. Retrieved 30 Oct 2025.
- ↑"Intel® Architecture Instruction Set Extensions and Future Features"(PDF) (59th ed.). 2 Oct 2025. p. 41. 319433-059. Archived(PDF) from the original on 3 Oct 2025. Retrieved 3 Oct 2025.
- ↑"Intel® Architecture Instruction Set Extensions and Future Features"(PDF) (62nd ed.). 27 Jun 2026. p. 41. 319433-062. Retrieved 27 Jun 2026.
{{cite web}}: CS1 maint: url-status (link) - ↑Intel, Architecture Specification: Intel Trust Domain Extensions (Intel TDX) Module, order no. 344425-005, page 93, Feb 2023. Archived on 20 Jul 2023.
- ↑Intel, Intel Advanced Vector Extensions 10 Architecture Specification, order no. 355989-003US, July 2024, see revision history on page 13. Archived on 8 Oct 2024.
- ↑Intel, Trust Domain Extensions (Intel TDX) Module Base Architecture Specification, order no. 348549-006US, April 2025, p. 116. Archived on 24 Apr 2025.
- ↑Intel, Advanced Vector Extensions 10.2 Architecture Specification, revision 4.0, order no. 361050-004US, May 2025, p. 16. Archived on 25 May 2025.
- ↑"AI Compute Extensions (ACE) Specification"(PDF). x86 Ecosystem Advisory Group (published 15 June 2026). 15 May 2026. p. 10. Retrieved 18 June 2026.
- 12Intel, Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual, Sep 2012, order no. 327364-001, appendix B.8, pages 677. Archived on 4 Aug 2021.
- 12Microsoft, Hyper-V Feature and Interface Discovery, 8 Jul 2022. Archived on 18 Nov 2023.
- ↑Geoff Chappell, HV_HYPERVISOR_INTERFACE, 10 Dec 2022. Archived on 1 Feb 2023.
- ↑David Woodhouse, Extended Destination ID: Supporting x86 virtual machines with many vCPUs, 20 Aug 2025, page 4. Archived on 23 Aug 2025.
- ↑QEMU documentation, Hyper-V Enlightenments. Archived on 17 Apr 2024.
- ↑Linux 6.8.7 kernel source, /source/arch/x86/kvm/cpuid.c, lines 1482-1488
- 12Xen, CPUID Interface to Xen. Archived on 22 Apr 2024.
- ↑Linux kernel documentation, KVM CPUID bits. Archived on 22 Aug 2022.
- ↑Linux 6.8.7 kernel source, /arch/x86/kvm/hyperv.c, line 2793
- ↑Linux kernel documentation, Virtualization support: 4.118 KVM_GET_SUPPORTED_HV_CPUID. Archived on 26 Mar 2024.
- ↑FreeBSD commit 560d5ed, 28 Jun 2013, see file /sys/amd64/vmm/x86.c, line 48. Archived on 22 Apr 2024.
- ↑HyperKit source code, /src/lib/vmm/x86.c line 42, 8 May 2021.
- ↑QEMU source code, fb/target/i386/cpu.c, line 6475, 18 Mar 2024.
- ↑Xakep, Детектим виртуалки [Detecting Virtual Machines] (in Russian), 8 Nov 2013 - lists the values returned in EBX/ECX/EDX for CPUID.(EAX=40000000) on Parallels Workstation as 0x70726c20, 0x68797065 and 0x72762020, respectively - which corresponds to the endianness-swapped
" lrpepyh vr"string. Archived on 25 Mar 2015. - ↑VMWare, Mechanisms to determine if software is running in a VMware virtual machine, 1 May 2015. Archived on 23 Jan 2022.
- ↑Project ACRN, CPUID Virtualization, 20 Oct 2022. Archived on 25 Mar 2023.
- ↑VirtualBox documentation, 9.30 Paravirtualized Debugging. Archived on 22 Apr 2024.
- ↑QNX, Hypervisor - Checking the guest's environment, 25 Mar 2022. Archived on 22 Apr 2024.
- ↑NetBSD source code, /sys/dev/nvmm/x86/nvmm_x86_vmx.c, line 1430, 6 Nov 2023.
- ↑OpenBSD source code, /sys/arch/amd64/include/vmmvar.h, line 24, 9 Apr 2024.
- ↑Siemens Jailhouse hypervisor documentation, hypervisor-interfaces.txt, line 39, 27 Jan 2020. Archived on Jul 5, 2024.
- ↑Bitdefender Napoca source code, /napoca/kernel/guestenlight.c, line 293, 30 Jul 2020.
- ↑FEX-Emu documentation, FEXCore custom CPUID functions, 24 May 2024.
- ↑Intel HAXM source code, /core/cpuid.c, line 979, 20 Jan 2023. Archived on 22 Apr 2024.
- ↑Intel KGT source code (trusty branch), /vmm/vmexit/vmexit_cpuid.c, lines 17-75, 15 May 2019
- ↑Linux kernel v5.18.19 source code, /source/drivers/visorbus/visorchipset.c, line 28
- ↑N. Moore, virt: Support detection of LMHS SRE guests #25594, 1 Dec 2022 - Lockheed Martin-provided pull-request for systemd, adding CPUID hypervisor ID string for the LMHS SRE hypervisor. Archived on 23 Apr 2024.
- 123AMD, Processor Recognition Application Note, pub.no. 20734, rev. 3.13, december 2005:
- Section 2.2 (p.19) provides a description of leaf 1 vs leaf 80000001 processor family numbers.
- Section 2.2.2 (p.21) and Section 3 (pages 33 to 40) provide details on how CPUID.(EAX=8000_0001):EDX[bit 19] should be used to identify processors.
- Section 3 also provides information on AMD's brand name string MSRs.
- ↑CPUID Specification, publication no.25481, rev 2.34(PDF), AMD, September 2010, archived from the original(PDF) on 18 Aug 2022
- ↑Linux kernel source code
- ↑AMD, AMD-K6 Processor Data Sheet, order no. 20695H/0, march 1998, section 24.2, page 283
- ↑AMD, AMD-K6 Processor Revision Guide, order no. 21846H/0, June 1999, section 3.2.1, page 17
- ↑Brian Gerst, syscall w/6 args support?, Linux kernel mailing list, 8-9 Dec 1999. Archived on 10 Mar 2026.
- ↑Intel, Intel 64 and IA-32 Architectures Software Developer's Manual, order no. 325462-079, march 2023, table 3-8 on page 3-238
- ↑AMD, AMD64 Technology: 128-bit SSE5 Instruction Set, pub.no. 43479, rev. 3.01, Aug 2007, section 1, page 1. Archived from the original on 19 Aug 2014.
- 12Sandpile.org, x86 architecture CPUID, extended leaf 8000_0001h, accessed 25 Apr 2026. Archived on 20 Aug 2026
- ↑Sandpile.org, x86 architecture XOP opcodes. Archived on 11 Sep 2024.
- ↑Lightweight Profiling Specification(PDF), AMD, August 2010, archived from the original(PDF) on 2012-11-27, retrieved 2013-04-03
- ↑Cyrix, Cyrix CPU Detection Guide, rev 1.01, oct 2, 1997, page 12
- ↑AMD, Geode GX1 Processor Data Book, rev 5.0, december 2003, pages 202 and 226. Archived on 20 Apr 2020.
- ↑Transmeta, Processor Recognition, 2002-05-07, page 5
- ↑Instlatx64, AMD Athlon "Thunderbird" CPUID dump. [https://web.archive.org/web/20250515140345/https://instlatx64.github.io/InstLatx64/AuthenticAMD/AuthenticAMD0000644_K7_Thunderbird_CPUID.txt Archived on 15 May 2025.
- ↑OS/2 Museum, Mystery CPUID bit, see comment by "CL" on 22 Apr 2026. Archived on 25 Aug 2026.
- ↑AMD, AMD64 Architecture Programmer’s Manual Volume 6: 128-Bit and 256-Bit XOP, FMA4 and CVT16 Instructions, pub.no. 43479, rev 3.03, May 2009, page 23. Archived on 18 Jan 2023
- ↑AMD, Family 10h BKDG, document no. 31116, rev 3.62, jan 11, 2013, p. 388 - lists the NodeId bit. Archived on 16 Jan 2019.
- ↑AMD, SimNow Simulator 4.6.1 User's Manual, rev 2.13, Nov 2009, page 187. Archived from the original on 24 may 2012.
- ↑AMD, AMD64 Architecture Programmer's Manual Volume 3, pub. no. 24594, rev 3.20, may 2013, page 579 - lists the StreamPerfMon bit
- ↑InstLatx64, VIA C5XL Nehemiah (stepping 1) CPUID dump. Archived on 7 Oct 2025
- ↑"sandpile.org -- x86 architecture -- CPUID". www.sandpile.org. Retrieved 2026-04-20.
- ↑Sandpile.org, x86 architecture vector floating-point registers, see bottom of page. Archived on 13 Nov 2025.
- ↑AMD, US Patent 6877084B1: Central processing unit (CPU) accessing an extended register set in an extended register mode, granted on 5 Apr 2004, expired in 2023.
- ↑InstLatX64, AMD 4700S CPUID dump. Archived on 10 Oct 2025.
- ↑"Intel Processor Identification and the CPUID Instruction"(PDF). Download.intel.com. 2012-03-06. Retrieved 2013-04-11.
- ↑InstLatx64, Vortex86DX3 CPUID dump, 27 Sep 2021. Archived on 21 Oct 2021.
- ↑InstLatx64, AMD Ryzen 7 6800HS CPUID dump, 21 Feb 2022. Archived on 24 Mar 2023.
- ↑Chips and Cheese, Why you can't trust CPUID, 27 Oct 2022. Archived on 3 Nov 2022.
- ↑AMD, Geode LX Databook, pub.id. 33234H, Feb 2009, page 207.
- ↑InstLatx64, HexaCore Intel Core i7-3960X Extreme Edition CPUID dump
- ↑InstLatx64, HexaCore Intel Xeon W3670 CPUID dump
- ↑InstLatx64, AMD EPYC 9655 CPUID dump
- ↑InstLatx64, 2x 24-core Montage Jintide C2460 CPUID dump
- ↑InstLatx64, 2x 24-core Intel Xeon Platinum 8160 CPUID dump
- ↑InstLatx64, Zhaoxin KaiXian ZX-C+ C4580 CPUID dump
- ↑InstLatx64, VIA Eden X4 C4250 CPUID dump
- ↑Cyrix, Application Note 112: Cyrix CPU Detection Guide, page 17, 21 July 1998.
- ↑Instlatx64, VIA Cyrix III "Samuel" CPUID dump
- 12345Sandpile, x86 architecture CPUID, extended leaf 8000_0007h. Archived on 20 Apr 2026.
- ↑AMD, BKDG for AMD Family 10h Processors, pub.no. 31116, rev 3.62, jan 11, 2013, page 392. Archived on 16 Jan 2019.
- 1234AMD, PPR For AMD Family 19h Model 61h rev B1 procesors, pub.no. 56713, rev 3.05, Mar 8, 2023, pages 99-100. Archived on 25 Apr 2023.
- 12AMD, AMD64 Collaborative Processor Performance Control (CPPC) Performance Priority, pub.no. 69206, rev 1.10, 4 Mar 2026. Archived on 9 Mar 2026.
- ↑AMD, AMD64 Collaborative Processor Performance Control (CPPC) Performance Priority, pub.no. 69206, rev 1.00, 25 Feb 2026. Archived on 27 Feb 2026.
- ↑AMD, BKDG for AMD Family 16h Models 00-0Fh processors, pub.no. 48571, rev 3.03, Feb 19, 2015, page 482. Archived on 16 Jan 2019.
- ↑SpecterDev, Next-Gen Exploitation: Exploring the PS5 Security Landscape, June 2023 hardwear.io conference presentation slide deck, pages 34, 41 and 53. Archived on 10 Jun 2023.
- ↑Instlatx64, AMD 4700S 8-core Processor Desktop Kit CPUID dump
- ↑AMD, BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors, publication #26094, rev 3.30, feb 2006, pages 29-30 (lists Athlon 64 revision differences, including LMSLE) (archived on 16 Jan 2019), and Revision Guide for AMD Athlon 64 and AMD Opteron Processors, publication #25759, rev 3.79, july 2009, pages 7-8 (lists Athlon 64 revision IDs) (archived on 18 Jan 2019).
- ↑AMD, PPR for AMD Family 19h Model 01h, Revision B1 Processors, Volume 1 of 2, document no. 55898, rev 0.50, may 27, 2021, page 98 - lists branch-sampling bit. Archived on Jul 24, 2022
- ↑AMD, AMD64 Guest PMC Event Filtering, pub.no. 69202, rev 1.00, 27 Feb 2026. Archived on 11 Mar 2026.
- ↑AMD, AMD64 Page Modification Logging, pub.no. 69208, rev 1.00, 10 Mar 2026. Archived on 11 Mar 2026.
- ↑AMD, AMD64 Virtualization Codenamed "Pacifica" Technology, publication no. 33047, rev 3.01, May 2005, appendix B, page 81. Archived on Jun 13, 2011.
- ↑AMD, CPUID specification, publication #25481, revision 2.18, jan 2006, page 18.
- ↑AMD, CPUID specification, publication #25481, revision 2.34, sep 2010, pages 5 and 11.
- ↑Instlatx64, AMD E-350 CPUID dump - has CPUID.(EAX=8000000A):EDX[9] set.
- ↑AMD, CPUID specification, publication #25481, revision 2.28, apr 2008, page 21.
- ↑AMD, CPUID specification, publication #25481, revision 2.34, sep 2010, page 5 - lists "SseIsa10Compat" as having been dropped in November 2009.
- 12AMD, PPR for AMD Family 19h Model 61h, Revision B1 processors, document no. 56713, rev 3.05, mar 8 2023, page 102. Archived on Apr 25, 2023.
- 1234AMD, Processor Programming Reference (PPR) for AMD Family 1Ah Model 70h, Revision B0 Processors, order no. 57930, rev 3.00, 30 Apr 2025, pages 103, 119 and 200. Archived on 19 Jan 2026.
- 123OpenAnolis cloud kernel 6.6 documentation, Hygon Secure Virtualization. Archived on 12 Mar 2026.
- ↑AMD, Secure VM Service Module for SEV-SNP Guests, pub.no #58019, rev 1.00, Jul 2023, page 13. Archived on 5 Aug 2023.
- 12AMD, PPR for AMD Family 19h Model 61h, Revision B1 processors, document no. 56713, rev 3.05, mar 8 2023, page 116. Archived on Apr 25, 2023.
- 123AMD, Technical Guidance For Mitigating Transient Scheduler Attacks, rev 2.0, July 2025, page 3. Archived on 14 Aug 2025.
- ↑AMD, 5th Gen AMD EPYC Processor Architecture, First Edition, October 2024, page 9. Archived on 28 Dec 2024.
- ↑Binutils mailing list, [PATCH] Add AMD znver6 processor support, 7 Nov 2025.
- ↑AMD, AMD64 Bit Matrix Multiply and Bit Reversal Instructions, pub.no. 69192, rev 1.00, 30 Jan 2026. Archived on 27 Feb 2026.
- ↑AMD, AMD64 Upper Address Ignore Version 2, pub.no. 69207, rev 1.00, 10 Mar 2026. Archived on 11 Mar 2026.
- 12345AMD, Technical Update Regarding Speculative Return Stack Overflow, rev 2.0, feb 2024. Archived on Apr 12, 2024.
- ↑AMD, AMD64 RMPOPT, pub.no. 69201, rev 1.00, Feb 2026. Archived on 26 Feb 2026.
- ↑AMD, AMD64 Enhanced SMT Protection, pub.no. 69204, rev 1.00, Mar 2026. Archived on 29 Mar 2026.
- ↑AMD, AMD64 RMP Dirty, pub.no. 69203, rev 1.00, Feb 2026. Archived on 25 Feb 2026.
- ↑OpenEuler kernel 6.6, arch/x86/kernel/cpu/hygon.c, line 255. Archived on 14 mar 2026.
- ↑OpenEuler kernel 6.6, arch/x86/include/asm/cpufeatures.h, line 499. Archived on 14 Mar 2026.
- ↑Ferrie, Peter. "Attacks on Virtual Machine Emulators"(PDF). Symantec. Symantec Advanced Threat Research. Archived from the original(PDF) on 2007-02-07. Retrieved 15 March 2017.
- ↑Sandpile, x86 architecture CPUID. Retrieved 22 December 2022.
- ↑instlatx64, CPUID dump of AMD A4-5000, lists "HELLO KITTY" string for CPUID leaf
8FFFFFFFh. Retrieved 22 December 2022. - ↑Sandpile, x86 architecture CPUID. Retrieved 30 July 2025.
- ↑IDT, WinChip 2B Processor Data Sheet, v0.9, April 1999, chapter 3.3.3, page 31.
- ↑VIA, PadLock Programming Guide rev. 1.66, aug 4, 2005, page 5. Archived from the original on May 26, 2010
- ↑OpenEuler 1.0 LTS kernel sources, /arch/x86/include/asm/cpufeatures.h lines 147-178. Archived on Jul 30, 2023.
- ↑Zhaoxin, Padlock instruction set reference, 26 Dec 2024. Archived from the original on 15 Mar 2025.
- ↑Zhaoxin, GMI reference, 26 Dec 2024. Archived from the original on 15 Mar 2025.
- ↑VIA, C3 Nehemiah Processor Datasheet, rev 1.13, Sep 29, 2004, page 21
- ↑VIA Technologies, VIA C7 Processor in nanoBGA2 Datasheet, rev 1.80, 9 Feb 2006, section 2.3.4 on page 21. Archived on 12 Apr 2021.
- ↑Zhaoxin, PAUSEOPT 指令说明, section 3.1.1 (in Chinese), rev 1.0.0, 13 Aug 2024. Archived on 14 Jan 2026.
- ↑InstLatx64, Zhaoxin KaiXian KX-7000 CPUID dump. Archived on 1 May 2026.
- ↑"GCC-mirror/GCC". GitHub. 13 March 2022.
- ↑"ARM Information Center". Infocenter.arm.com. Retrieved 2013-04-11.
- ↑IBM System/370 Principles Of Operation(PDF) (First ed.). IBM. June 1970. p. 29. GA22-7000-0.
- 12z/Architecture Principles of Operation(PDF) (Fourteenth ed.). May 2022. SA22-7832-13.
- ↑"MIPS32 Architecture For Programmers, Volume III: The MIPS32 Privileged Resource Architecture"(PDF). MIPS Technologies, Inc. 2001-03-12.
- ↑"PowerPC Operating Environment Architecture, book III"(PDF).
- ↑"The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.7"(PDF). May 9, 2015. section 3.1.1.
- ↑S. Darwish, Ahmed. "[ANNOUNCE] x86-cpuid.org: A machine-readable CPUID repository". Linux Kernel Mailing List archive. Retrieved 20 July 2024.
Further reading
- "AMD64 Technology Indirect Branch Control Extension"(PDF) (White paper). Revision 4.10.18. Advanced Micro Devices, Inc. (AMD). 2018. Archived(PDF) from the original on 2018-05-09. Retrieved 2018-05-09.
External links
- Intel Processor Identification and the CPUID Instruction (Application Note 485), last published version. Said to be incorporated into the Intel 64 and IA-32 Architectures Software Developer's Manualin 2013, but as of July 2014 the manual still directs the reader to note 485.
- Contains some information that can be and was easily misinterpreted though, particularly with respect to processor topology identification.
- The big Intel manuals tend to lag behind the Intel ISA document, available at the top of this page, which is updated even for processors not yet publicly available, and thus usually contains more CPUID bits. For example, as of this writing, the ISA book (at revision 19, dated May 2014) documents the CLFLUSHOPT bit in leaf 7, but the big manuals although apparently more up-to-date (at revision 51, dated June 2014) don't mention it.
- AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions
- cpuid command-line program for Linux
- cpuprint.com, cpuprint.exe, cpuprint.raw command-line programs for Windows
- instlatx64 - مجموعة من بيانات زمن استجابة التعليمات، وزمن استجابة الذاكرة، ومعلومات وحدة المعالجة المركزية (CPUID) لمعالجات x86/x64
- معمارية X86
- لغة الآلة
- تعليمات X86
