กลับไปหน้าบทความ

อ่าน 53 นาที

CPUID

เปลี่ยนเส้นทางไปยังรายการ

ในสถาปัตยกรรมx86 คำสั่ง CPUID (ระบุโดยCPUIDรหัสคำสั่ง ) เป็นคำสั่งเสริมของโปรเซสเซอร์ (ชื่อมาจาก " การระบุ CPU ") ซึ่งช่วยให้ซอฟต์แวร์สามารถค้นหารายละเอียดของโปรเซสเซอร์ได้อินเทล..

CPUID

ในสถาปัตยกรรมx86 คำสั่ง CPUID (ระบุโดยCPUIDรหัสคำสั่ง ) เป็นคำสั่งเสริมของโปรเซสเซอร์ (ชื่อมาจาก " การระบุ CPU ") ซึ่งช่วยให้ซอฟต์แวร์สามารถค้นหารายละเอียดของโปรเซสเซอร์ได้อินเทล ได้แนะนำคำสั่งนี้ ในปี 1993 พร้อมกับการเปิดตัวโปรเซสเซอร์Pentiumและโปรเซสเซอร์486 รุ่นหลัง[ 1 ]

โปรแกรมสามารถใช้CPUIDเพื่อกำหนดประเภทของโปรเซสเซอร์และตรวจสอบว่าคุณสมบัติต่างๆ เช่นMMX / SSEได้รับการใช้งาน หรือไม่

ประวัติศาสตร์

ก่อนที่CPUIDคำสั่งนี้จะพร้อมใช้งานโดยทั่วไป โปรแกรมเมอร์จะเขียนโค้ดเครื่อง ที่ซับซ้อน ซึ่งใช้ประโยชน์จากความแตกต่างเล็กน้อยในพฤติกรรมของ CPU เพื่อกำหนดยี่ห้อและรุ่นของโปรเซสเซอร์[ 2 ] [ 3 ] [ 4 ] [ 5 ]เมื่อมีการนำโปรเซสเซอร์ 80386 มาใช้ EDX เมื่อรีเซ็ตจะระบุเวอร์ชัน แต่สามารถอ่านได้หลังจากรีเซ็ตเท่านั้น และไม่มีวิธีมาตรฐานสำหรับแอปพลิเคชันในการอ่านค่า

นอกเหนือจากตระกูล x86 แล้ว นักพัฒนาส่วนใหญ่ยังคงต้องใช้กระบวนการที่ซับซ้อน (เช่น การกำหนดเวลาคำสั่ง หรือการตรวจจับข้อผิดพลาดของ CPU) เพื่อกำหนดความแตกต่างในการออกแบบ CPU ที่มีอยู่

ตัวอย่างเช่น ในซีรี่ส์ Motorola 68000ซึ่งไม่เคยมีCPUIDคำสั่งใดๆ มาก่อน คำสั่งเฉพาะบางอย่างจำเป็นต้องใช้สิทธิ์ระดับสูง คำสั่งเหล่านี้สามารถใช้เพื่อแยกแยะสมาชิกต่างๆ ในตระกูล CPU ได้ ในMotorola 68010คำสั่งMOVE from SRกลายเป็นคำสั่งที่มีสิทธิ์พิเศษ เนื่องจาก68000มีคำ สั่ง MOVE from SR ที่ไม่ต้องใช้สิทธิ์พิเศษ จึงสามารถแยกแยะ CPU สองตัวที่แตกต่างกันได้โดยการเกิดข้อผิดพลาดของ CPU ขึ้น

แม้ว่าCPUIDคำสั่งดังกล่าวจะเป็นคำสั่งเฉพาะสำหรับสถาปัตยกรรม x86 แต่สถาปัตยกรรมอื่นๆ (เช่น ARM) มักจะมีรีจิสเตอร์บนชิปซึ่งสามารถอ่านได้ด้วยวิธีการที่กำหนดไว้ เพื่อให้ได้ข้อมูลประเภทเดียวกันกับที่CPUIDคำสั่ง x86 ให้มา

เรียกใช้ CPUID

รหัสCPUIDปฏิบัติการคือ0F A2. สามารถตรวจจับการรองรับคำสั่งนี้ของโปรเซสเซอร์ได้โดยการสลับสถานะของแฟล็ก ID (บิตที่ 21) ในรีจิสเตอร์ EFLAGS ให้สำเร็จ

ในภาษาแอสเซมบลี คำสั่ง นี้CPUIDไม่รับพารามิเตอร์ใดๆ เนื่องจากCPUIDโดยปริยายจะใช้รีจิสเตอร์ EAX ในการกำหนดหมวดหมู่หลักของข้อมูลที่ส่งคืน ในศัพท์เฉพาะของ Intel ในปัจจุบัน เรียกว่า CPUID leaf CPUIDควรเรียกใช้คำสั่ง นี้ EAX = 0ก่อน เพราะจะเก็บค่าพารามิเตอร์การเรียกใช้ EAX สูงสุด (leaf) ที่ CPU นำไปใช้ไว้ในรีจิสเตอร์ EAX

ในการรับข้อมูลฟังก์ชันเพิ่มเติมCPUIDควรเรียกใช้โดยตั้งค่าบิตที่มีนัยสำคัญที่สุดของ EAX ในการกำหนดพารามิเตอร์การเรียกใช้ฟังก์ชันเพิ่มเติมสูงสุด ให้เรียกใช้CPUIDด้วยEAX = 80000000h.

CPUID ที่มีค่ามากกว่า 3 แต่น้อยกว่า 80000000 จะสามารถเข้าถึงได้ก็ต่อเมื่อรีจิสเตอร์เฉพาะรุ่นมี IA32_MISC_ENABLE.BOOT_NT4 [บิต 22] = 0 (ซึ่งเป็นค่าเริ่มต้น) ดังที่ชื่อบ่งบอกWindows NT 4.0จนถึง SP6 ไม่สามารถบูตได้อย่างถูกต้องเว้นแต่จะตั้งค่าบิตนี้[ 6 ]แต่ Windows เวอร์ชันต่อมาไม่จำเป็นต้องใช้ ดังนั้นจึงสามารถสันนิษฐานได้ว่าค่าพื้นฐานที่มีค่ามากกว่า 4 สามารถมองเห็นได้ในระบบ Windows ปัจจุบันณ เดือนเมษายน 2024วันลาพื้นฐานที่ใช้ได้มีระยะเวลาสูงสุด 23 ชั่วโมง แต่ข้อมูลเกี่ยวกับวันลาบางประเภทไม่ได้เปิดเผยในเอกสารที่เผยแพร่ต่อสาธารณะ กล่าวคือ วันลาเหล่านั้น "ถูกสงวนไว้"

ใบไม้บางส่วนที่เพิ่มเข้ามาใหม่เมื่อเร็ว ๆ นี้ยังมีใบไม้ย่อย ซึ่งจะถูกเลือกผ่านรีจิสเตอร์ ECX ก่อนทำการเรียกCPUIDใช้

EAX=0: พารามิเตอร์ฟังก์ชันสูงสุดและรหัสผู้ผลิต

ฟังก์ชันนี้จะส่งคืนสตริงรหัสผู้ผลิตของ CPU ซึ่งเป็น สตริง ASCII 12 ตัวอักษรที่จัดเก็บไว้ใน EBX, EDX, ECX (ตามลำดับ) พารามิเตอร์การเรียกใช้งานพื้นฐานสูงสุด (ค่าที่มากที่สุดที่สามารถตั้งค่า EAX ได้ก่อนเรียกใช้ฟังก์ชัน) จะถูกส่งคืนใน EAX CPUID

นี่คือรายชื่อโปรเซสเซอร์และฟังก์ชันสูงสุดที่ใช้งานได้

พารามิเตอร์ฟังก์ชันสูงสุด
โปรเซสเซอร์พื้นฐานขยาย
Intel 486รุ่นก่อนหน้าCPUID ยังไม่ได้ถูกใช้งาน
ต่อมาคือ Intel 486 และPentium0x01ยังไม่ได้ดำเนินการ
เพนเทียม โปร , เพนเทียม 2และเซเลรอน0x02ยังไม่ได้ดำเนินการ
เพนเทียม III0x03ยังไม่ได้ดำเนินการ
เพนเทียม 40x020x8000 0004
ซีออน0x020x8000 0004
เพนเทียมเอ็ม0x020x8000 0004
เพนเทียม 4 พร้อมเทคโนโลยีไฮเปอร์เธรดดิ้ง0x050x8000 0008
เพนเทียม ดี (8xx)0x050x8000 0008
เพนเทียม ดี (9xx)0x060x8000 0008
คอร์ดูโอ0x0A0x8000 0008
คอร์ 2 ดูโอ0x0A0x8000 0008
ซีออน3000 , 5100, 5200, 5300, 5400 ( ซีรี่ส์ 5000 )0x0A0x8000 0008
ซีรี่ส์ Core 2 Duo 80000x0D0x8000 0008
ซีออน 5200, 5400 ซีรีส์0x0A0x8000 0008
อะตอม0x0A0x8000 0008
โปรเซสเซอร์ที่ใช้Nehalem0x0B0x8000 0008
โปรเซสเซอร์ที่ใช้สถาปัตยกรรมIvy Bridge0x0D0x8000 0008
โปรเซสเซอร์ที่ใช้สถาปัตยกรรม Skylake (ความถี่พื้นฐานและความถี่สูงสุดของโปรเซสเซอร์; ความถี่อ้างอิงของบัส)0x160x8000 0008
การแจงนับคุณลักษณะของผู้จำหน่าย ระบบบนชิป (System-on-Chip Vendor Attribute Enumeration) ใบหลัก (Main Leaf)0x170x8000 0008
โปรเซสเซอร์ที่ใช้สถาปัตยกรรมMeteor Lake0x230x8000 0008

ต่อไปนี้คือสตริงรหัสผู้ผลิตโปรเซสเซอร์ที่ทราบแล้ว:

ต่อไปนี้คือสตริง ID ที่ใช้โดยซอฟต์ซีพียูคอร์แบบ โอเพนซอร์ส :

  • "GenuineAO486" ซีพียู ao486 (เก่า) [ 13 ] [ 14 ]
  • "MiSTer AO486" ซีพียู ao486 (ใหม่) [ 15 ] [ 14 ]
  • "GenuineIntel" คอร์ v586 [ 16 ] (ซึ่งเหมือนกับสตริง Intel ID ทุกประการ)

ต่อไปนี้คือสตริง ID ที่ทราบจากเครื่องเสมือน:

  • "ConnectixCPU"  Connectix Virtual PC (เวอร์ชัน 6 และต่ำกว่า) [ 17 ] [ 18 ]
  • "Virtual CPU "  Microsoft Virtual PC 7; [ 18 ] Microsoft x86-to-ARM (32-bit x86) [ 19 ]
  • "AuthenticAMD"  Microsoft x86-to-ARM (64-bit x86) [ 19 ]
  • "GenuineIntel" Apple Rosetta 2 [ 20 ]
  • "Insignia 586"  Insignia RealPC [ 21 ] [ 22 ]และSoftWindows 98 [ 23 ]
  • "Compaq FX!32"  Compaq FX!32 (โปรแกรมจำลอง x86 สำหรับ โปรเซสเซอร์ DEC Alpha ) [ 24 ]
  • "Neko Project"  Neko Project II ( โปรแกรมจำลอง PC-98 ) (ใช้เมื่อตั้งค่า CPU ที่จะจำลองเป็น "Neko Processor II") [ 25 ] [ 26 ]

ตัวอย่างเช่น บนGenuineIntelโปรเซสเซอร์ ค่าที่ส่งคืนใน EBX คือ0x756e6547, EDX คือ0x49656e69และ ECX คือ0x6c65746eตัวอย่างโค้ดต่อไปนี้แสดงสตริงรหัสผู้ผลิต รวมถึงพารามิเตอร์การเรียกใช้สูงสุดที่ CPU รองรับ

.intel_syntax noprefix.ข้อความ.m0: .string "CPUID: %x\n".m1: .string "หมายเลขฟังก์ชันพื้นฐานที่ใหญ่ที่สุดที่ใช้งานได้: %i\n".m2: .string "รหัสผู้ขาย: %s\n".globl mainหลัก:กดr12mov eax , 1ซับ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

บนโปรเซสเซอร์บางตัว สามารถแก้ไขสตริง Manufacturer ID ที่รายงานโดย CPUID.(EAX=0) ได้โดยการเขียนสตริง ID ใหม่ลงใน MSRs ( รีจิสเตอร์เฉพาะรุ่น ) บางตัวโดยใช้WRMSRคำสั่งนี้ ซึ่งได้ถูกนำมาใช้กับโปรเซสเซอร์ที่ไม่ใช่ของ Intel เพื่อเปิดใช้งานคุณสมบัติและการเพิ่มประสิทธิภาพที่ถูกปิดใช้งานในซอฟต์แวร์สำหรับ CPU ที่ไม่ส่งคืนGenuineIntelสตริง ID [ 27 ]โปรเซสเซอร์ที่ทราบว่ามี MSRs ดังกล่าว ได้แก่:

โปรเซสเซอร์ที่มีรหัสผู้ผลิต MSR
โปรเซสเซอร์เอ็มเอสอาร์
ไอดีทีวินชิป108h-109h[ 28 ]
VIA C3 , C71108h-1109h[ 29 ]
ไวอา นาโน1206h-1207h[ 30 ]
ทรานส์เมตา ครูโซ , เอฟฟิเซียน80860001h-80860003h[ 31 ] [ 32 ]
AMD Geode GX, LX3000h-3001h[ 33 ]
DM&P Vortex86 EX252444300h-52444301h[ 34 ]

EAX=1: ข้อมูลโปรเซสเซอร์และบิตคุณสมบัติ

ส่งคืนข้อมูล ขั้นตอนรุ่นรหัสสถาปัตยกรรมไมโคร และข้อมูลตระกูลของ CPU ในรีจิสเตอร์ EAX (เรียกอีกอย่างว่า ลายเซ็นของ CPU) แฟล็กคุณสมบัติในรีจิสเตอร์ EDX และ ECX และข้อมูลคุณสมบัติเพิ่มเติมในรีจิสเตอร์ EBX [ 35 ]

CPUID EAX=1: ข้อมูลเวอร์ชันของโปรเซสเซอร์ใน EAX
อีเอเอ็กซ์
313029282726252423222120191817161514131211109876543210
ที่สงวนไว้รหัสประจำตัวครอบครัวขยายรหัสรุ่นขยายที่สงวนไว้ประเภทโปรเซสเซอร์รหัสครอบครัวแบบอย่างรหัสขั้นตอน
  • รหัสรุ่น (Stepping ID) คือหมายเลขแก้ไขผลิตภัณฑ์ที่กำหนดขึ้นเนื่องจากการแก้ไขข้อผิดพลาดหรือการเปลี่ยนแปลงอื่นๆ
  • รุ่นของโปรเซสเซอร์จริงนั้นได้มาจากฟิลด์ Model, Extended Model ID และ Family ID หากฟิลด์ Family ID มีค่าเป็น 6 หรือ 15 รุ่นนั้นจะเท่ากับผลรวมของฟิลด์ Extended Model ID ที่เลื่อนไปทางซ้าย 4 บิต และฟิลด์ Model มิฉะนั้น รุ่นนั้นจะเท่ากับค่าของฟิลด์ Model
  • ตระกูลโปรเซสเซอร์ที่แท้จริงได้มาจากฟิลด์ Family ID และ Extended Family ID หากฟิลด์ Family ID เท่ากับ 15 ตระกูลนั้นจะเท่ากับผลรวมของฟิลด์ Extended Family ID และฟิลด์ Family ID มิเช่นนั้น ตระกูลนั้นจะเท่ากับค่าของฟิลด์ Family ID
  • ความหมายของช่องประเภทโปรเซสเซอร์แสดงอยู่ในตารางด้านล่าง
ประเภทโปรเซสเซอร์
พิมพ์การเข้ารหัสแบบไบนารี
โปรเซสเซอร์ของ ผู้ผลิตอุปกรณ์ดั้งเดิม ( OEM )00
โปรเซสเซอร์ Intel Overdrive01
โปรเซสเซอร์คู่ (ใช้ได้เฉพาะกับโปรเซสเซอร์ Intel P5 Pentium เท่านั้น) [ 36 ]10
มูลค่าสำรอง11

ณ เดือนตุลาคม พ.ศ. 2566 รหัสตระกูลโปรเซสเซอร์ x86 ต่อไปนี้เป็นที่ทราบ: [ 37 ]

CPUID EAX=1: รหัสตระกูลโปรเซสเซอร์
รหัสครอบครัว + รหัสครอบครัวขยายอินเทลเอดีเอ็มอื่น
หกเหลี่ยมธันวาคม
0h0ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
1h1ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
2h2ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
3h3[]ไม่มีข้อมูลไม่มีข้อมูล
4h4486486 , [ 38 ] 5x86 , Élan SC4xx/5xx [ 39 ]Cyrix 5x86 , [ 40 ] Cyrix MediaGX , [ 41 ] UMC Green CPU , [ 4 ] MCST Elbrus (รุ่นส่วนใหญ่), [ 10 ] MiSTer ao486 [ 42 ]
5h5เพนเทียม , เพนเทียม MMX , ควาร์ก X1000K5 , K6Cyrix 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 [ 10 ]
6h6เพนเทียม โปร , เพนเทียม II , เพนเทียม III , เพนเทียม M , อินเทล คอร์ (ทุกรุ่น), อินเทล อะตอม (ทุกรุ่น), ซีออน (ยกเว้นรุ่น เน็ตเบิร์สต์ ), ซีออน ฟี (ยกเว้นรุ่น KNC)K7: Athlon , Athlon XPCyrix 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 [ 10 ]
7h7อิทาเนียม (ในโหมด IA-32)ไม่มีข้อมูลจ้าวซินไคเซียน, จ้าวซินไคเหิง
8h8[]ไม่มีข้อมูลไม่มีข้อมูล
9h9ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Ah10ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Bh11Xeon Phi (Knights Corner) [ 47 ]ไม่มีข้อมูลไม่มีข้อมูล
0Ch12ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Dh13ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Eh14ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Fh15เน็ตเบิร์สต์ (เพนเทียม 4)K8/Hammer ( Athlon 64 )ทรานส์เมตา เอฟฟิเซียน
10h16ไม่มีข้อมูลK10 : ปรากฏการณ์ไม่มีข้อมูล
11h17อิทาเนียม 2 [ 48 ] (ในโหมด IA-32)ทูเรียน X2ไม่มีข้อมูล
12h18Intel Core (Nova Lake ขึ้นไป) [ 49 ]ลลาโนไม่มีข้อมูล
13h19Xeon (Panther Cove ขึ้นไป) [ 50 ]ไม่มีข้อมูลไม่มีข้อมูล
14h20ไม่มีข้อมูลบ็อบแคทไม่มีข้อมูล
15h21ไม่มีข้อมูลรถดันดิน , รถตอกเสาเข็ม , รถบดถนน , รถขุดไม่มีข้อมูล
16h22ไม่มีข้อมูลจากัวร์ , พูม่าไม่มีข้อมูล
17h23ไม่มีข้อมูลเซน 1 , เซน 2ไม่มีข้อมูล
18h24ไม่มีข้อมูลไฮกอนธยานะ
19h25ไม่มีข้อมูลเซน 3 , เซน 4ไม่มีข้อมูล
1Ah26ไม่มีข้อมูลเซน 5 ( เซน6 )ไม่มีข้อมูล
  1. โปรเซสเซอร์ i386ไม่รองรับCPUIDคำสั่งนี้ แต่จะส่งคืน Family ID3hในค่ารีเซ็ตของ EDX
  2. มีรายงานว่า Family ID8hถูกหลีกเลี่ยงโดยเจตนาสำหรับตระกูลโปรเซสเซอร์ Pentium 4 เนื่องจากไม่เข้ากันกับ Windows NT 4.0 [ 46 ]
CPUID EAX=1: ข้อมูลเพิ่มเติมใน EBX
บิตอีบีเอ็กซ์ถูกต้อง
7:0ดัชนีแบรนด์
15:8CLFLUSHขนาดบรรทัด (ค่า * 8 = ขนาดบรรทัดแคชในหน่วยไบต์)หากCLFLUSHมีการตั้งค่าแฟล็กคุณสมบัติไว้

CPUID.01.EDX.CLFSH [บิต 19]= 1

23:16จำนวนสูงสุดของรหัสประจำตัวที่สามารถระบุได้สำหรับโปรเซสเซอร์เชิงตรรกะในแพ็คเกจทางกายภาพนี้

จำนวนเต็มที่ใกล้เคียงที่สุดที่เป็นกำลังของ 2 ซึ่งไม่น้อยกว่าค่านี้ คือจำนวนรหัส APIC เริ่มต้นที่ไม่ซ้ำกันซึ่งสงวนไว้สำหรับการระบุตัวประมวลผลเชิงตรรกะต่างๆ ในแพ็คเกจทางกายภาพ[ a ]

การใช้งานเดิม: จำนวนโปรเซสเซอร์เชิงตรรกะต่อโปรเซสเซอร์ทางกายภาพ สองตัวสำหรับโปรเซสเซอร์ Pentium 4 ที่มีเทคโนโลยี Hyper-Threading [ 53 ]

หากตั้งค่าแฟล็กคุณสมบัติ Hyper-threading ไว้

CPUID.01.EDX.HTT [บิต 28]= 1

31:24รหัส APIC ในพื้นที่: รหัส APIC เริ่มต้นใช้เพื่อระบุตัวประมวลผลเชิงตรรกะที่กำลังทำงานอยู่[ b ]โปรเซสเซอร์ Pentium 4 และรุ่นต่อๆ มา
  1. บนซีพียูที่มีโปรเซสเซอร์เชิงตรรกะมากกว่า 128 ตัวในแพ็คเกจเดียว (เช่น Intel Xeon Phi 7290 [ 51 ]และ AMD Threadripper Pro 7995WX [ 52 ] ) ค่าในบิต 23:16 จะถูกตั้งค่าเป็นค่าที่ไม่ใช่กำลังของ 2
  2. รหัส APIC ท้องถิ่นยังสามารถระบุได้ผ่านทางลีฟ cpuid 0Bh ( CPUID.0Bh.EDX[x2APIC-ID] ) บนซีพียูที่มีโปรเซสเซอร์เชิงตรรกะมากกว่า 256 ตัวในแพ็คเกจเดียว (เช่น Xeon Phi 7290)ต้องใช้ลีฟ 0Bh เนื่องจากรหัส APIC ไม่พอดีกับ 8 บิต

ข้อมูลโปรเซสเซอร์และแฟล็กคุณสมบัติจะแตกต่างกันไปตามผู้ผลิต แต่โดยทั่วไปแล้ว ผู้ผลิตรายอื่นจะใช้ค่าของ Intel เพื่อความเข้ากันได้

CPUID EAX=1: ข้อมูลคุณลักษณะใน EDX และ ECX
นิดหน่อยอีดีเอ็กซ์ECX [ a ]นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0เอฟพียูหน่วยประมวลผลทศลอยx87 ในตัวsse3SSE3 ( คำแนะนำใหม่ของเพรสคอตต์ - PNI)0
1วีเอ็มอีส่วนขยายโหมดเสมือน 8086 (เช่น VIF, VIP, PVI)pclmulqdqPCLMULQDQคำสั่ง (การคูณแบบไม่มีตัวทด)1
2เดอส่วนขยายการดีบัก ( CR4บิต 3)dtes64หน่วยความจำดีบัก 64 บิต (edx บิต 21)2
3พีเอสอีส่วนขยายขนาดหน้า (  หน้าละ 4 MB)เฝ้าสังเกตMONITORและMWAITคำแนะนำ ( PNI )3
4ทีเอสซีตัวนับเวลาและRDTSCคำแนะนำดีเอส-ซีพีแอลร้านค้าดีบักที่ผ่านการรับรอง CPL4
5ม.ส.รีจิสเตอร์ และRDMSR/หรือWRMSRคำสั่งเฉพาะรุ่นวีเอ็มเอ็กซ์ส่วนขยายเครื่องเสมือน5
6paeส่วนขยายที่อยู่ทางกายภาพsmxส่วนขยายโหมดปลอดภัย ( LaGrande ) ( GETSECคำแนะนำ)6
7เอ็มซีข้อผิดพลาดในการตรวจสอบเครื่องจักรestSpeedStepที่ได้รับการปรับปรุง7
8cx8 [ b ]CMPXCHG8Bคำสั่ง ( เปรียบเทียบและสลับ )tm2เครื่องตรวจสอบอุณหภูมิ 28
9apic [ c ]ตัวควบคุมการขัดจังหวะแบบโปรแกรมได้ขั้นสูงในตัวssse3คำแนะนำเพิ่มเติมสำหรับ SSE39
10(mtrr) [ d ](ที่สงวนไว้)cnxt-idรหัสบริบท L110
11แยก[ e ]SYSENTERและSYSEXITคำสั่งเรียกใช้ระบบอย่างรวดเร็วเอสดีบีจีอินเทอร์เฟซ Silicon Debug11
12เอ็มทีอาร์อาร์รีจิสเตอร์ช่วงประเภทหน่วยความจำ[ f ]เอฟมาการคูณและบวกแบบหลอมรวม (FMA3)12
13พีจีเอบิตเปิดใช้งานทั่วโลก ของหน้าในCR4ซีเอ็กซ์16CMPXCHG16Bคำแนะนำ[ g ]13
14เอ็มซีเอสถาปัตยกรรมตรวจสอบเครื่องจักรเอ็กซ์ทีพีอาร์สามารถปิดใช้งานการส่งข้อความแสดงลำดับความสำคัญของงานได้14
15ซีเอ็มโอวีการเคลื่อนไหวแบบมีเงื่อนไข: CMOV, FCMOVและFCOMIคำแนะนำ[ h ]พีดีซีเอ็มความสามารถในการตรวจสอบประสิทธิภาพและแก้ไขข้อผิดพลาด15
16แพทตารางคุณลักษณะหน้า(สงวนไว้) [ i ]16
17พีเอสอี-36ส่วนขยายขนาดหน้า 36 บิตพีซีไอดีตัวระบุบริบทของกระบวนการ ( CR4บิต 17)17
18psnหมายเลขซีเรียลของโปรเซสเซอร์ที่รองรับและเปิดใช้งาน[ j ]ดีซีเอการเข้าถึงแคชโดยตรงสำหรับการเขียน DMA [ 64 ] [ 65 ]18
19คลิฟช์CLFLUSHคำสั่งล้างแคชไลน์ ( SSE2 )sse4.1คำแนะนำSSE4.119
20(นx)บิตห้ามดำเนินการ (NX) ( เฉพาะ Itaniumเท่านั้น สงวนไว้สำหรับ CPU อื่นๆ) [ 66 ] [ k ]sse4.2คำแนะนำSSE4.220
21ดีเอสบันทึกการดีบัก: บันทึกร่องรอยการกระโดดที่ดำเนินการx2apicx2APIC (APIC ขั้นสูง)21
22เอซีพีMSR ควบคุมอุณหภูมิภายในตัวสำหรับACPIมูฟบีMOVBEคำสั่ง ( บิ๊กเอนเดียน )22
23มมมxคำสั่ง MMX (SIMD 64 บิต)ป๊อปซีเอ็นทีPOPCNTคำแนะนำ23
24เอฟเอ็กซ์อาร์FXSAVEFXRSTORคำแนะนำ, CR4 บิต 9tsc-deadlineAPIC ดำเนินการแบบครั้งเดียวโดยใช้ค่ากำหนดเวลา TSC24
25sseคำสั่ง Streaming SIMD Extensions (SSE) (หรือที่รู้จักกันในชื่อ " คำสั่งใหม่ ของ Katmai "; SIMD 128 บิต)เอส-นิชุดคำสั่ง AES25
26sse2คำแนะนำSSE2xsaveคำ สั่งบันทึก/กู้คืนสถานะโปรเซสเซอร์ที่ขยายได้: XSAVE, XRSTOR, XSETBV,XGETBV26
27เอสเอสแคช CPU ใช้กลไกการตรวจสอบ ตัวเองosxsaveXSAVEเปิดใช้งานโดยระบบปฏิบัติการ27
28httฟิลด์ที่สงวนไว้สำหรับรหัส APIC สูงสุดคือ Valid [ l ]เอวีเอ็กซ์ส่วนขยายเวกเตอร์ขั้นสูง (SIMD 256 บิต)28
29tmเครื่องวัดอุณหภูมิจะจำกัดอุณหภูมิโดยอัตโนมัติเอฟ16ซีคำสั่งแปลงค่าจุดลอยตัวไป/กลับจากรูปแบบFP1629
30ia64โปรเซสเซอร์ IA64จำลอง x86 [ 66 ]rdrndRDRANDคุณสมบัติ (ตัวสร้างเลขสุ่มบนชิป)30
31พีบีความสามารถในการปลุกการทำงานของ Pending Break Enable (PBE# pin)ไฮเปอร์ไวเซอร์ไฮเปอร์ไวเซอร์มีอยู่ (เป็นศูนย์เสมอในซีพียูทางกายภาพ) [ 69 ] [ 70 ] [ 71 ]31
  1. ในโปรเซสเซอร์รุ่นเก่าบางรุ่น การประมวลผลCPUIDด้วยดัชนีใบ (EAX) ที่มากกว่า 0 อาจทำให้ EBX และ ECX ไม่เปลี่ยนแปลง โดยคงค่าเดิมไว้ ด้วยเหตุนี้ จึงแนะนำให้ตั้งค่า EBX และ ECX เป็นศูนย์ก่อนประมวลผลCPUIDด้วยดัชนีใบเป็น 1

    โปรเซสเซอร์ที่แสดงพฤติกรรมนี้ได้แก่ Cyrix MII [ 54 ]และ IDT WinChip 2 [ 55 ]

  2. บนโปรเซสเซอร์จาก IDT, Transmeta และ Rise (รหัสผู้ผลิตCentaurHauls,GenuineTMx86และRiseRiseRise)CMPXCHG8Bคำสั่งนี้ได้รับการสนับสนุนเสมอ อย่างไรก็ตาม บิตคุณสมบัติสำหรับคำสั่งนี้อาจไม่ได้ตั้งค่าไว้ นี่เป็นวิธีแก้ปัญหาสำหรับข้อบกพร่องใน Windows NT [ 56 ]
  3. เฉพาะ ใน โปรเซสเซอร์ AMD K5 รุ่นแรก (AuthenticAMDตระกูล 5 รุ่น 0) เท่านั้น บิต 9 ของ EDX เคยใช้เพื่อระบุการสนับสนุน PGE แทน ซึ่งได้ย้ายไปที่บิต 13 ตั้งแต่ K5 รุ่น 1 เป็นต้นไป [ 57 ]
  4. Intel AP-485 การแก้ไข 006 [ 58 ]ถึง 008 ระบุ CPUID.(EAX=1):EDX[bit 10]ว่ามีชื่อว่า "MTRR" (แม้ว่าจะอธิบายว่า "สงวนไว้"/"อย่านับค่าของมัน") - ชื่อนี้ถูกลบออกในการแก้ไข AP-485 ในภายหลัง และบิตนี้ถูกระบุว่าสงวนไว้โดยไม่มีชื่อตั้งแต่นั้นเป็นต้นมา
  5. เฉพาะ โปรเซสเซอร์ Pentium Pro (GenuineIntelตระกูล 6 รุ่น 1) เท่านั้น บิต EDX 11 ไม่ถูกต้อง - บิตถูกตั้งค่า แต่SYSENTERและSYSEXITไม่ได้รับการสนับสนุนบน Pentium Pro [ 59 ]
  6. สำหรับ MTRR นั้น ข้อมูลคุณสมบัติเพิ่มเติมจะไม่สามารถเข้าถึงได้ผ่าน CPUID แต่จะเข้าถึงได้ผ่านMTRRCAPMSR แบบอ่านอย่างเดียว (MSR0FEh) แทน MSR นี้มีโครงสร้างดังต่อไปนี้:
    บิตการใช้งาน
    7:0จำนวน MTRR แบบช่วงแปรผัน
    8รองรับ MTRR ช่วงคงที่
    9(ที่สงวนไว้)
    10รองรับประเภทหน่วยความจำแบบ Write-Combining
    11SMRR (System-Management Range Register) รองรับแล้ว
    12PRMRR (Processor Reserved Memory Range Register ซึ่งเป็นส่วนหนึ่งของSGX ) รองรับการใช้งาน
    13SMRR2 รองรับ[ 60 ]
    14รองรับการล็อก SMRR
    15SEAMRR (SEcure Arbitration Mode Range Register ซึ่งเป็นส่วนหนึ่งของTDX ) ได้รับการสนับสนุน[ 61 ]
    63:16(ที่สงวนไว้)
  7. โปรเซสเซอร์ Intel 64 รุ่นแรกๆ บางรุ่นมีCMPXCHG16Bการตั้งค่าบิตคุณสมบัติไว้ แม้ว่าจะไม่รองรับคำสั่งก็ตาม ซึ่งใช้ได้เฉพาะกับGenuineIntelตระกูล0Fhรุ่น 3 ขั้นตอน 4 (Pentium 4 ขนาด 90 นาโนเมตร) เท่านั้น [ 62 ]
  8. FCMOVและFCOMIคำสั่งเหล่านี้จะใช้งานได้ก็ต่อเมื่อมี FPU x87 ในตัวอยู่ด้วย (ระบุโดยบิต EDX 0)
  9. บิต ECX 16 ถูกระบุว่า "สงวนไว้" ในเอกสารสาธารณะของ Intel และ AMD และไม่ได้ถูกตั้งค่าในโปรเซสเซอร์ที่รู้จักใดๆ อย่างไรก็ตาม มีรายงานว่าเคอร์เนล Windows Vista บางเวอร์ชัน จะตรวจสอบบิตนี้ [ 63 ] - หากมีการตั้งค่า Vista จะรู้จักบิตนี้ว่าเป็นคุณลักษณะ "ช่องสัญญาณโปรเซสเซอร์"
  10. บนซีพียู Intel และ Transmeta [ 31 ]ที่รองรับ PSN (หมายเลขซีเรียลโปรเซสเซอร์) สามารถปิดใช้งาน PSN ได้โดยการตั้งค่าบิต 21 ของ MSR119h(BBL_CR_CTL) เป็น 1 การทำเช่นนั้นจะลบลีฟ 3 และทำให้ CPUID.(EAX=1):EDX[bit 18]ส่งคืนค่า 0
  11. บนโปรเซสเซอร์ x86 ที่ไม่ใช่ Itanium การรองรับบิต No-executeจะระบุไว้ใน CPUID.(EAX=8000_0001):EDX[bit 20]แทน
  12. บิต 28 ของ EDX ถ้าถูกตั้งค่า แสดงว่าบิต 23:16 ของ CPUID.(EAX=1):EBX นั้นถูกต้อง ถ้าบิตนี้ไม่ได้ถูกตั้งค่า แสดงว่าแพ็คเกจ CPU มีโปรเซสเซอร์เชิงตรรกะเพียง 1 ตัว

    ในเอกสารเก่า บิตนี้มักจะถูกระบุว่าเป็นแฟล็ก " เทคโนโลยีHyper-threading " [ 67 ]อย่างไรก็ตาม แม้ว่าแฟล็กนี้จะเป็นข้อกำหนดเบื้องต้นสำหรับการรองรับ Hyper-Threading แต่ก็ไม่ได้บ่งชี้ถึงการรองรับ Hyper-Threading โดยอัตโนมัติ และแฟล็กนี้ถูกตั้งค่าไว้ในซีพียูหลายตัวที่ไม่มีเทคโนโลยีมัลติเธรดดิ้งรูปแบบใดๆ[ 68 ]

ควรปิดบังข้อมูลที่สงวนไว้ก่อนนำไปใช้เพื่อระบุตัวประมวลผล

EAX=2: ข้อมูลตัวอธิบายแคชและ TLB

ฟังก์ชันนี้จะส่งคืนรายการตัวอธิบายที่ระบุความสามารถของแคชและTLBในรีจิสเตอร์ EAX, EBX, ECX และ EDX

บนโปรเซสเซอร์ที่รองรับ leaf นี้ การเรียกใช้CPUIDด้วย EAX=2 จะทำให้ไบต์ล่างสุดของ EAX ถูกตั้งค่าเป็น01h[ a ] ​​และไบต์ที่เหลืออีก 15  ไบต์ของ EAX/EBX/ECX/EDX จะถูกเติมด้วย descriptor 15 ตัว โดยแต่ละตัวใช้ไบต์เดียว descriptor เหล่านี้ให้ข้อมูลเกี่ยวกับแคช TLB และ prefetch ของโปรเซสเซอร์ โดยทั่วไปแล้วจะมีแคชหรือ TLB หนึ่งตัวต่อ descriptor หนึ่งตัว แต่ค่า descriptor บางค่าก็ให้ข้อมูลอื่นด้วย — โดยเฉพาะอย่างยิ่ง00hใช้สำหรับ descriptor ว่างเปล่าFFhบ่งชี้ว่า leaf นี้ไม่มีข้อมูลแคชที่ถูกต้องและควรใช้ leaf 4h แทน และFEhบ่งชี้ว่า leaf นี้ไม่มีข้อมูล TLB ที่ถูกต้องและควรใช้ leaf 18h แทน นอกจากนี้ยังมีบางกรณี เช่น descriptor 63hและC3hที่ descriptor ตัวเดียวให้ข้อมูลเกี่ยวกับ TLB หลายตัว descriptor อาจปรากฏในลำดับใดก็ได้

สำหรับรีจิสเตอร์ทั้งสี่ตัว (EAX, EBX, ECX, EDX) หากบิตที่ 31 ถูกตั้งค่า แสดงว่ารีจิสเตอร์นั้นไม่ควรถูกพิจารณาว่ามีตัวอธิบายที่ถูกต้อง (เช่น บนโปรเซสเซอร์ Itanium ในโหมด IA-32 คำสั่ง CPUID(EAX=2) จะส่งค่ากลับมา80000000hใน EDX ซึ่งควรตีความว่า EDX ไม่มีข้อมูลที่ถูกต้อง ไม่ใช่ว่ามีตัวอธิบายสำหรับแคช L2 ขนาด 512K)

ตารางด้านล่างนี้แสดงคำอธิบายโดยย่อของแคชหรือ TLB ที่ระบุโดยค่าตัวอธิบายที่ทราบ (หรือข้อมูลอื่น ๆ ที่เกี่ยวข้อง) คำต่อท้ายที่ใช้ในตารางมีดังนี้:

  • K, M, G  : กิโลไบต์, เมบิไบต์, กิบิไบต์ (ความจุสำหรับแคช, ขนาดหน้าสำหรับ TLB)
  • E  : จำนวนรายการ (สำหรับ TLB; เช่น 64E = 64 รายการ)
  • p  : ขนาดหน้า (เช่น 4Kp สำหรับ TLB ที่แต่ละรายการอธิบายหน้าขนาด 4  KiB หนึ่ง หน้า , 4K/2Mp สำหรับ TLB ที่แต่ละรายการสามารถอธิบายได้ทั้ง หน้าขนาด 4 KiB หนึ่งหน้า หรือ hugepage ขนาด 2  MiB หนึ่งหน้า)
  • L  : ขนาดของแคชไลน์ (เช่น 32L = ขนาดแคชไลน์ 32 ไบต์)
  • S  : ขนาดของเซกเตอร์แคช (เช่น 2S หมายความว่าแคชใช้เซกเตอร์ขนาด 2 แคชไลน์ต่อเซกเตอร์)
  • A : คุณสมบัติการสลับที่ (เช่น 6A = สลับที่แบบเซต  6 ทาง, FA = สลับที่แบบสมบูรณ์)
คำอธิบายสัญลักษณ์สำหรับการเข้ารหัสไบต์ของตัวอธิบายแคช/TLB
แคชคำสั่ง หรือข้อมูล ระดับ 1แคชระดับ 2แคชระดับ 3TLB คำสั่งหรือข้อมูลTLB ระดับ 2 ที่ใช้ร่วมกันข้อมูลอื่นๆ(ที่สงวนไว้)
CPUID EAX=2: การเข้ารหัสไบต์ของตัวอธิบายแคช/TLB
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xคำอธิบายว่างITLB: 32E, 4Kp, 4AITLB: 2E, 4Mp, FADTLB: 64E, 4Kp, 4ADTLB: 8E, 4Mp, 4ADTLB: 32E, 4Mp, 4AL1I: 8K, 4A, 32L0xL1I: 16K, 4A, 32LL1I: 32K, 4A, 64LL1D: 8K, 2A, 32LITLB: 4E, 4Mp, FAL1D: 16K, 4A, 32LL1D: 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, 64L1x
2xL2C: 256K, 8A, 64L [ d ]L3C: 512K, 4A, 64L, 2SL3C: 1M, 8A, 64L, 2SL2C: 1M, 16A, 64LL3C: 2M, 8A, 64L, 2S(การดึงข้อมูลล่วงหน้า 128 ไบต์) [ e ](การดึงข้อมูลล่วงหน้า 128 ไบต์) [ e ]2x(การดึงข้อมูลล่วงหน้า 128 ไบต์) [ e ]L3C: 4M, 8A, 64L, 2SL1D: 32K, 8A, 64L2x
3xL1I: 32K, 8A, 64L3xL2C: 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 [กรัม]3x
4xไม่มีแคช L3 อยู่L2C: 128K, 4A, 32LL2C: 256K, 4A, 32L [ h ]L2C: 512K, 4A, 32LL2C: 1M, 4A, 32LL2C: 2M, 4A, 32LL3C: 4M, 4A, 64LL3C: 8M, 8A, 64L4xL2C: 3M, 12A, 64LL2C/L3C: [ i ] 4M,16A,64LL3C: 6M, 12A, 64LL3C: 8M, 16A, 64LL3C: 12M, 12A, 64LL3C: 16M, 16A, 64LL2C: 6M, 24A, 64LITLB: 32E, 4Kp [ j ]4x
5xITLB: 64E,FA, 4K/2M/4MpITLB: 128E,FA, 4K/2M/4MpITLB: 256E,FA, 4K/2M/4MpITLB: 7E, 2M/4Mp, FADTLB: 16E, 4Mp, 4ADTLB: 16E, 4Kp, 4A5xDTLB: 16E, 4Kp, FADTLB: 32E, 2M/4Mp, 4ADTLB: 64E 4K/4Mp, FADTLB: 128E, 4K/4Mp, FADTLB: 256E, 4K/4Mp, FA5x
6xL1D: 16K, 8A, 64LITLB: 48E, 4Kp, FADTLB สองตัว: 32E, 2M/4Mp, 4A + 4E, 1Gp, FADTLB: 512E, 4Kp, 4AL1D: 8K, 4A, 64LL1D: 16K, 4A, 64L6xL1D: 32K, 4A, 64LDTLB: 64E, 4Kp, 8ADTLB: 256E, 4Kp, 8ADTLB: 128E, 2M/4Mp, 8ADTLB: 16E, 1Gp, FA6x
7xแคชติดตาม , 12K-μop, 8A [ k ]แคชติดตาม, 16K-μop, 8Aแคชติดตาม, 32K-μop, 8Aแคชติดตาม, 64K-μop, 8A [ f ][ชม]ITLB: 8E, 2M/4Mp, FA [ l ](L1I: 16K, 4A, 64L) [. ] [ชม. ]7xL2C: 1M, 4A, 64LL2C: 128K, 8A, 64L, 2SL2C: 256K, 8A, 64L, 2SL2C: 512K, 8A, 64L, 2SL2C: 1M, 8A, 64L, 2SL2C: 2M, 8A, 64L(L2C: 256K, 8A, 128L) []L2C: 512K, 2A, 64L7x
8xL2C: 512K, 8A, 64L [ k ](L2C: 128K, 8A, 32L) [ e ]L2C: 256K, 8A, 32L [ h ]L2C: 512K, 8A, 32LL2C: 1M, 8A, 32LL2C: 2M, 8A, 32LL2C: 512K, 4A, 64LL2C: 1M, 8A, 64L8x(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,เอฟเอ, 4K-256Mp) []9x(DTLB: 96E,เอฟเอ, 4K-256Mp) []9x
ขวานDTLB: 32E, 4Kp, FAขวานขวาน
บีเอ็กซ์ITLB: 128E, 4Kp, 4AITLB: 8E, 2M/4Mp, 4A [ o ]ITLB: 64E, 4Kp, 4ADTLB: 128E, 4Kp, 4ADTLB: 256E, 4Kp, 4AITLB: 64E, 4Kp, 8AITLB: 128E, 4Kp, 8Aบีเอ็กซ์DTLB: 64E, 4Kp, 4Aบีเอ็กซ์
ซีเอ็กซ์DTLB: 8E, 4K/4Mp, 4AL2TLB: 1024E, 4K/2Mp, 8ADTLB: 16E, 2M/4Mp, 4A [ 89 ]STLB L2 สองตัว: 1536E, 4K/2Mp, 6A [ p ] + 16E, 1Gp, 4ADTLB: 32E, 2M/4Mp, 4Aซีเอ็กซ์L2TLB: 512E, 4Kp, 4Aซีเอ็กซ์
ดีเอ็กซ์L3C: 512K, 4A, 64LL3C: 1M, 4A, 64LL3C: 2M, 4A, 64LL3C: 1M, 8A, 64LL3C: 2M, 8A, 64Lดีเอ็กซ์L3C: 4M, 8A, 64LL3C: 1.5M, 12A, 64LL3C: 3M, 12A, 64LL3C: 6M, 12A, 64Lดีเอ็กซ์
อดีตL3C: 2M, 16A, 64LL3C: 4M, 16A, 64LL3C: 8M, 16A, 64LอดีตL3C: 12M, 24A, 64LL3C: 18M, 24A, 64L [ 92 ]L3C: 24M, 24A, 64Lอดีต
เอฟเอ็กซ์การดึงข้อมูลล่วงหน้า64 ไบต์[ q ]การดึงข้อมูลล่วงหน้า128 ไบต์[ q ]เอฟเอ็กซ์ใบที่ 2 ไม่มีข้อมูล TLB ให้ใช้ใบที่ 18 ชั่วโมงแทนLeaf 2 ไม่มีข้อมูลแคช ให้ใช้ Leaf 4 แทนเอฟเอ็กซ์
x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
  1. ในเอกสารเก่าของ Intel ไบต์ล่างสุดของค่าที่ส่งคืนใน EAX จะถูกอธิบายว่าระบุจำนวนครั้งที่CPUIDต้องเรียกใช้ด้วย EAX=2 เพื่อให้ได้ตัวอธิบายแคช/TLB ทั้งหมด อย่างไรก็ตาม โปรเซสเซอร์ที่รู้จักทั้งหมดที่ใช้งาน leaf นี้จะส่งคืน01hไบต์นี้ และเอกสารของ Intel รุ่นใหม่กว่า (SDM rev 053 [ 72 ]และรุ่นต่อมา) ระบุว่าไบต์นี้มีค่า01hเป็น
  2. 1 2สำหรับคำอธิบาย0Dhและ0EhIntel AP-485 rev 37 [ 73 ]แสดงรายการแคชที่พวกเขาอธิบายว่ามี ECC - ซึ่งถูกลบออกใน rev 38 และเอกสาร Intel ในภายหลัง
  3. 1 2 3 4 5 6 7 8 9คำอธิบาย10h,15h,1Ah,88h,89h,8Ah,90h,96hได้9Bhรับการบันทึกไว้สำหรับโหมดการทำงาน IA-32 ของ Itaniumเท่านั้น [ 74 ]
  4. แคชที่อธิบายโดยตัวอธิบาย21hในบางที่ (เช่น AP-485 rev 36 [ 75 ]แต่ไม่ใช่ rev 37) เรียกว่า "MLC" (Mid-Level Cache)
  5. ค่าตัวอธิบาย 1 2 3 4 ,,และไม่ได้ระบุไว้ในเอกสารของ Intel และไม่ได้ใช้ใน CPU ที่วางจำหน่ายใดๆ ที่รู้จัก (พบเห็นได้ในตัวอย่างทางวิศวกรรมของ Intel Timnaที่ ถูกยกเลิก [ 85 ] ) อย่างไรก็ตาม มีรายงานว่าได้รับการยอมรับโดยเคอร์เนล Windows NT เวอร์ชัน 5.1 ( Windows XP ) และสูงกว่ายังได้รับการยอมรับโดยเวอร์ชัน 5.0 ( Windows 2000 ) ด้วย [ 86 ]26h27h28h81h81h81h
  6. 1 2 3 4 5 6 7คำอธิบาย39h-3Ehและ73hรายการอยู่ใน rev 36 ของ Intel AP-485 [ 75 ] แต่ถูกลบออกจากเอกสาร Intel ในภายหลัง แม้ว่าหลายรายการจะถูกใช้ใน CPU ของ Intel (ส่วนใหญ่ใน CPU Celeron ที่ใช้ Netburstเช่น39hใน "Willamette-128" [ 76 ]ใน"3Bh Northwood-128" [ 77 ]และ3Chใน "Prescott-256" [ 78 ] )
  7. ณ เดือนพฤศจิกายน 2024คำอธิบายโปรเซสเซอร์ Intel Tolapai [ 79 ]และระบุไว้ในแพตช์เคอร์เนล Linux ที่ Intel จัดหาให้ [ 80 ]3Fh
  8. 1 2 3 4เอกสารประกอบสำหรับโปรเซสเซอร์ VIA Cyrix III "Joshua" (CyrixInsteadตระกูล 6 รุ่น 5) ระบุว่าโปรเซสเซอร์นี้ใช้ค่าตัวอธิบาย74hสำหรับ77hTLB และค่า42hสำหรับ82hแคช แต่ไม่ได้ระบุว่าค่าตัวอธิบายแต่ละค่าเหล่านี้สอดคล้องกับแคช/TLB ใดในโปรเซสเซอร์ [ 81 ]
  9. คำอธิบายนี้49hบ่งชี้ว่ามีแคชระดับ 3 ในGenuineIntelซีพียูตระกูล 0Fh รุ่น 6 (Xeon ที่ใช้ Pentium 4) และมีแคชระดับ 2 ในซีพียูอื่นๆ
  10. เอกสาร CPUID ของ Intel ไม่ได้ระบุถึงความสัมพันธ์ของ ITLB ที่ระบุโดยตัวอธิบาย4Fhโปรเซสเซอร์ที่ใช้ตัวอธิบายนี้ (Intel Atom "Bonnell" [ 82 ] ) ได้รับการอธิบายไว้ในที่อื่นว่ามี ITLB 32 รายการที่มีความสัมพันธ์อย่างสมบูรณ์ [ 83 ]
  11. 1 2บนซีพียู Cyrix และ Geode (รหัสผู้ผลิตCyrixInsteadและGeode by NSC) คำอธิบาย70hและ80hมีความหมายที่แตกต่างกัน: [ 84 ]
    • คำอธิบาย70hระบุว่าเป็น TLB แบบ 4-way-set-associative ที่ใช้คำสั่งและข้อมูลร่วมกันจำนวน 32 รายการ โดยมีขนาดหน้า 4K
    • คำอธิบาย80hระบุว่ามีแคช L1 แบบใช้ร่วมกันสำหรับคำสั่งและข้อมูลขนาด 16  KiB พร้อมการจัดกลุ่มแบบ 4 ทาง และขนาดบรรทัดแคช 16  ไบต์
  12. ตัวอธิบาย76hถูกระบุว่าเป็น แคช L2 ขนาด 1 MiB ใน Intel AP-485 เวอร์ชัน 37 [ 73 ]แต่เป็น TLB คำสั่งในเวอร์ชัน 38 และเอกสาร Intel ในภายหลังทั้งหมด
  13. 1 2 3คำอธิบาย77h,7Eh,8Dhได้รับการบันทึกไว้สำหรับโหมดการทำงาน IA-32 ของ Itanium 2เท่านั้น [ 87 ]
  14. ภายใต้โหมดการทำงาน IA-32 ของ Itanium 2 ขนาดแคช L3 จะถูกรายงานเป็น 3 MiB เสมอโดยไม่คำนึงถึงขนาดแคชจริง [ 88 ]
  15. สำหรับตัวอธิบาย (descriptorB1h) ความจุของ TLB คือ 8 องค์ประกอบเมื่อใช้ เพจขนาด 2 MiB แต่จะลดลงเหลือ 4 องค์ประกอบเมื่อใช้ เพจขนาด 4 MiB
  16. สำหรับคำอธิบายC3hโปรเซสเซอร์ Intel จำนวนมากที่ใช้คำอธิบายนี้มี L2 TLB ที่เป็นแบบ set-associative 12 ทาง ไม่ใช่แบบ set-associative 6 ทาง ซึ่งใช้ได้กับCPU อย่างน้อย Skylake [ 90 ]และ Whiskey/Kaby/Coffee/Comet Lake [ 91 ]
  17. 1 2การดึงข้อมูลล่วงหน้าที่ระบุโดยตัวอธิบายF0hและF1hระยะก้าวที่แนะนำสำหรับการดึงข้อมูลหน่วยความจำล่วงหน้าด้วยPREFETCHNTAคำสั่ง [ 93 ]

EAX=3: หมายเลขซีเรียลของโปรเซสเซอร์

คำสั่งนี้จะแสดงหมายเลขประจำเครื่องของโปรเซสเซอร์ หมายเลขประจำเครื่องของโปรเซสเซอร์ถูกนำมาใช้ครั้งแรกใน Intel Pentium IIIแต่เนื่องจากข้อกังวลด้านความเป็นส่วนตัว ฟีเจอร์นี้จึงไม่ได้ถูกนำมาใช้ในรุ่นต่อมา (บิตฟีเจอร์ PSN จะถูกล้างเสมอ) โปรเซสเซอร์ Efficeon และ Crusoe ของ Transmetaก็มีฟีเจอร์นี้เช่นกัน อย่างไรก็ตาม CPU ของ AMD ไม่มีฟีเจอร์นี้ในรุ่นใดเลย

สำหรับซีพียู Intel Pentium III ใบที่ 3 จะส่งคืน 64 บิตล่างของหมายเลขซีเรียลโปรเซสเซอร์ 96 บิตใน EDX:ECX - 32 บิตบนของหมายเลขซีเรียลจะถูกนำมาจากลายเซ็นซีพียูที่ส่งคืนใน EAX เมื่อ ถูกเรียกด้วย EAX CPUID=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กำลังรันคำสั่งนั้น คำสั่ง `leaf` 4ใช้ในโปรเซสเซอร์ Intel และ `leaf` 8000'001Dhใช้ในโปรเซสเซอร์ AMD โดยทั้งสองคำสั่งจะส่งคืนข้อมูลในรูปแบบ EAX, EBX, ECX และ EDX โดยใช้รูปแบบข้อมูลเดียวกัน ยกเว้นว่า `leaf` 4จะส่งคืนฟิลด์เพิ่มเติมบางส่วนที่ถือว่า "สงวนไว้" สำหรับ `leaf` 8000'001Dhทั้งสองคำสั่งให้ข้อมูลแคชของ CPU ในชุดของซับลีฟที่เลือกโดย ECX เพื่อให้ได้ข้อมูลเกี่ยวกับแคชทุกระดับ จำเป็นต้องเรียกใช้คำสั่งCPUIDซ้ำๆ โดยตั้งค่า EAX= 4หรือ8000'001Dhและ ECX เป็นค่าที่เพิ่มขึ้นเรื่อยๆ เริ่มจาก 0 (0, 1, 2, ...) จนกว่าจะพบซับลีฟที่ไม่แสดงแคชใดๆ (EAX[4:0]=0) ซับลีฟที่ส่งคืนข้อมูลแคชอาจปรากฏในลำดับใดก็ได้ แต่ทั้งหมดจะปรากฏก่อนซับลีฟแรกที่ไม่แสดงแคชใดๆ

ในตารางด้านล่าง ฟิลด์ที่กำหนดไว้สำหรับใบ4แต่ไม่ได้กำหนดไว้สำหรับใบ8000'001Dhจะถูกไฮไลต์ด้วยสีเหลืองและมีเครื่องหมาย(#4) กำกับไว้

CPUID EAX=4 และ 8000'001Dh: ข้อมูลคุณสมบัติแคชใน EAX, EBX และ EDX
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์EDX [ a ]นิดหน่อย
0ประเภทแคช:
  • 0: (ไม่มีแคชเหลือแล้ว)
  • 1: แคชข้อมูล
  • 2: แคชคำสั่ง
  • 3: แคชแบบรวม
  • 4-31: (สงวนสิทธิ์)
ขนาดเส้นความสอดคล้องของระบบในหน่วยไบต์ลบ 1WBINVDขอบเขตการดำเนินการล้างแคชค่า 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ขอบเขตการดำเนินการล้างแคช) [ c ] (#4)(ที่สงวนไว้)10
11(การรวมแคช) [ c ] (#4)(ที่สงวนไว้)11
13:12(ที่สงวนไว้)พาร์ติชันบรรทัดทางกายภาพ (จำนวนบรรทัดแคชที่ใช้แท็กที่อยู่แคชร่วมกัน) ลบ 1(ที่สงวนไว้)13:12
21:14จำนวนสูงสุดของรหัสประจำตัวที่สามารถระบุได้สำหรับโปรเซสเซอร์เชิงตรรกะที่ใช้แคชนี้ร่วมกันลบด้วย 1(ที่สงวนไว้)21:14
25:22วิธีการเชื่อมโยงแคชลบ1(ที่สงวนไว้)25:22
31:26จำนวน ID สูงสุดที่สามารถระบุได้สำหรับคอร์โปรเซสเซอร์ในแพ็คเกจทางกายภาพลบ 1 (#4)(ที่สงวนไว้)31:26
  1. Intel AP-485 การแก้ไข 31 [ 98 ]และ 32 ระบุบิต 9:0 ของ EDX เป็นฟิลด์ "Prefetch Stride" ซึ่งถูกลบออกในการแก้ไข 33 และเอกสาร Intel ในภายหลังทั้งหมด และไม่มีโปรเซสเซอร์ใดที่ทราบว่าใช้ EDX ในลักษณะนี้
  2. บิต 4 ของ EDX ไม่ได้ระบุไว้ในเอกสารสาธารณะของ Intel ที่รู้จัก แต่พบว่ามีการตั้งค่าสำหรับแคชระดับ 2 ของโปรเซสเซอร์ Intel Xeon Phi x200 ("Knights Landing") [ 99 ]
  3. 1 2สำหรับ CPUID leaf 4 บิต 11:10 ของ EAX ได้รับการบันทึกไว้สำหรับโปรเซสเซอร์ Xeon Phi "Knights Corner" (GenuineIntelตระกูล0Bh) เท่านั้น [ 47 ]สำหรับโปรเซสเซอร์อื่นๆ ควรใช้บิต 1:0 ของ EDX แทน

สำหรับแคชที่ถูกต้องและไม่ใช่แคชแบบ fully-associative ค่าที่ส่งคืนใน ECX คือจำนวนชุดในแคชลบด้วย 1 (สำหรับแคชแบบ fully-associative ควรพิจารณา ECX เสมือนว่าส่งคืนค่า 0) สำหรับแคชใดๆ ที่อธิบายโดย sub-leaf ของCPUIDleaf 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) เป็นแบบ set-associative 16 ทาง (EBX[31:22]+1) พร้อม 8192 ชุด (ECX+1) สำหรับขนาดทั้งหมด 64*16*16*8192 = 134217728 ไบต์ หรือ 128 เมกะไบต์

EAX=4 และ EAX=Bh: โครงสร้างเธรด/คอร์และแคชของ Intel

ใบทั้งสองนี้ใช้สำหรับระบุโครงสร้างโปรเซสเซอร์ (เธรด คอร์ แพ็กเกจ) และลำดับชั้นแคชในโปรเซสเซอร์มัลติคอร์ (และไฮเปอร์เธรด) ของ Intel [ 100 ]ณ ปี 2013AMD ไม่ได้ใช้ใบไม้เหล่านี้ แต่มีวิธีการอื่นในการระบุแกนหลัก[ 101 ]

แตกต่างจากลีฟ CPUID อื่นๆ ส่วนใหญ่ ลีฟ Bh จะส่งคืนค่าที่แตกต่างกันใน EDX ขึ้นอยู่กับว่าคำสั่ง CPUID ทำงานบนโปรเซสเซอร์เชิงตรรกะใด ค่าที่ส่งคืนใน EDX นั้นคือ รหัส x2APICของโปรเซสเซอร์เชิงตรรกะนั้น อย่างไรก็ตาม พื้นที่รหัส x2APIC ไม่ได้ถูกแมปไปยังโปรเซสเซอร์เชิงตรรกะอย่างต่อเนื่อง อาจมีช่องว่างในการแมป ซึ่งหมายความว่ารหัส x2APIC ระหว่างกลางบางค่าอาจไม่ตรงกับโปรเซสเซอร์เชิงตรรกะใดๆ ข้อมูลเพิ่มเติมสำหรับการแมปรหัส x2APIC ไปยังคอร์นั้นมีอยู่ในรีจิสเตอร์อื่นๆ แม้ว่าลีฟ Bh จะมีลีฟย่อย (เลือกโดย ECX ตามที่อธิบายไว้ด้านล่าง) ค่าที่ส่งคืนใน EDX จะได้รับผลกระทบจากโปรเซสเซอร์เชิงตรรกะที่คำสั่งกำลังทำงานอยู่เท่านั้น แต่ไม่ได้รับผลกระทบจากลีฟย่อย

โทโพโลยีของโปรเซสเซอร์ที่แสดงโดยลีฟ Bh เป็นแบบลำดับชั้น แต่มีข้อแม้ที่แปลกประหลาดคือ ลำดับของระดับ (เชิงตรรกะ) ในลำดับชั้นนี้ไม่จำเป็นต้องตรงกับลำดับในลำดับชั้นทางกายภาพ ( SMT /core/package) อย่างไรก็ตาม ทุกระดับเชิงตรรกะสามารถสอบถามได้ในฐานะซับลีฟ ECX (ของลีฟ Bh) เพื่อตรวจสอบความสอดคล้องกับ "ประเภทระดับ" ซึ่งอาจเป็น SMT, core หรือ "ไม่ถูกต้อง" พื้นที่รหัสระดับเริ่มต้นที่ 0 และต่อเนื่องกัน หมายความว่าหากรหัสระดับไม่ถูกต้อง รหัสระดับที่สูงกว่าทั้งหมดก็จะไม่ถูกต้องเช่นกัน ประเภทระดับจะถูกส่งคืนในบิต 15:08 ของ ECX ในขณะที่จำนวนโปรเซสเซอร์เชิงตรรกะในระดับที่สอบถามจะถูกส่งคืนใน EBX สุดท้าย การเชื่อมต่อระหว่างระดับเหล่านี้และรหัส x2APIC จะถูกส่งคืนใน EAX[4:0] ในรูปของจำนวนบิตที่ต้องเลื่อนรหัส x2APIC เพื่อให้ได้รหัสที่ไม่ซ้ำกันในระดับถัดไป

ตัวอย่างเช่น โปรเซสเซอร์ Westmere แบบ dual-core ที่สามารถทำงานแบบhyperthreading ได้ (จึงมีสองคอร์และสี่เธรดโดยรวม) อาจมี x2APIC id เป็น 0, 1, 4 และ 5 สำหรับโปรเซสเซอร์เชิงตรรกะทั้งสี่ตัว Leaf Bh (=EAX), subleaf 0 (=ECX) ของ CPUID อาจส่งค่า 100h กลับมาใน ECX ซึ่งหมายความว่าระดับ 0 อธิบายถึงเลเยอร์ SMT (hyperthreading) และส่งค่า 2 กลับมาใน EBX เนื่องจากมีโปรเซสเซอร์เชิงตรรกะสองตัว (หน่วย SMT) ต่อคอร์ทางกายภาพหนึ่งตัว ค่าที่ส่งกลับมาใน EAX สำหรับ subleaf 0 นี้ควรเป็น 1 ในกรณีนี้ เพราะการเลื่อน x2APIC id ดังกล่าวไปทางขวาหนึ่งบิตจะให้หมายเลขคอร์ที่ไม่ซ้ำกัน (ที่ระดับถัดไปของลำดับชั้นของระดับ id) และลบบิต SMT id ภายในแต่ละคอร์ออก วิธีที่ง่ายกว่าในการตีความข้อมูลนี้คือ บิตสุดท้าย (บิตที่ 0) ของรหัส x2APIC จะระบุหน่วย SMT/hyperthreading ภายในแต่ละคอร์ในตัวอย่างของเรา การเลื่อนไปยังซับลีฟที่ 1 (โดยการเรียก CPUID อีกครั้งด้วย EAX=Bh และ ECX=1) อาจส่งคืนค่า 201h ใน ECX ซึ่งหมายความว่านี่คือระดับประเภทคอร์ และ 4 ใน EBX เนื่องจากมีโปรเซสเซอร์เชิงตรรกะ 4 ตัวในแพ็กเกจ ค่า EAX ที่ส่งคืนอาจเป็นค่าใดก็ได้ที่มากกว่า 3 เนื่องจากบิตที่ 2 ถูกใช้เพื่อระบุคอร์ในรหัส x2APIC โปรดทราบว่าบิตที่ 1 ของรหัส x2APIC ไม่ได้ถูกใช้ในตัวอย่างนี้ อย่างไรก็ตาม ค่า EAX ที่ส่งคืนในระดับนี้อาจเป็น 4 (และเป็นเช่นนั้นใน Clarkdale Core i3 5x0) เพราะนั่นจะให้รหัสที่ไม่ซ้ำกันในระดับแพ็กเกจ (=0 อย่างเห็นได้ชัด) เมื่อเลื่อนรหัส x2APIC ไป 4 บิต สุดท้ายนี้ คุณอาจสงสัยว่า EAX=4 leaf สามารถบอกอะไรเราได้บ้างที่เรายังไม่พบ ใน EAX[31:26] มันจะส่งคืนบิตมาสก์ APIC ที่สงวนไว้สำหรับแพ็กเกจ ซึ่งในตัวอย่างของเราคือ 111b เพราะบิตที่ 0 ถึง 2 ใช้สำหรับระบุโปรเซสเซอร์เชิงตรรกะภายในแพ็กเกจนี้ แต่บิตที่ 1 ก็ถูกสงวนไว้เช่นกัน แม้ว่าจะไม่ได้ใช้เป็นส่วนหนึ่งของแผนการระบุโปรเซสเซอร์เชิงตรรกะก็ตาม กล่าวอีกนัยหนึ่งคือ รหัส APIC 0 ถึง 7 ถูกสงวนไว้สำหรับแพ็กเกจ แม้ว่าครึ่งหนึ่งของค่าเหล่านี้จะไม่ตรงกับโปรเซสเซอร์เชิงตรรกะก็ตาม

โครงสร้างลำดับชั้นของแคชในโปรเซสเซอร์จะถูกสำรวจโดยการดูที่ซับลีฟของลีฟที่ 4 รหัส APIC ยังถูกใช้ในโครงสร้างลำดับชั้นนี้เพื่อสื่อสารข้อมูลเกี่ยวกับวิธีการที่แคชระดับต่างๆ ถูกแชร์โดยหน่วย SMT และคอร์ต่างๆ เพื่อยกตัวอย่างต่อไป แคช L2 ซึ่งถูกแชร์โดยหน่วย SMT ของคอร์เดียวกัน แต่ไม่ได้แชร์ระหว่างคอร์ทางกายภาพบน Westmere จะถูกระบุโดย EAX[26:14] ที่ถูกตั้งค่าเป็น 1 ในขณะที่ข้อมูลที่ว่าแคช L3 ถูกแชร์โดยแพ็กเกจทั้งหมดจะถูกระบุโดยการตั้งค่าบิตเหล่านั้นเป็น (อย่างน้อย) 111b รายละเอียดของแคช รวมถึงประเภทแคช ขนาด และการเชื่อมโยง จะถูกสื่อสารผ่านรีจิสเตอร์อื่นๆ บนลีฟที่ 4

โปรดระวังว่าเวอร์ชันเก่าของแอปพลิเคชัน Intel หมายเลข 485 มีข้อมูลที่ทำให้เข้าใจผิดอยู่บ้าง โดยเฉพาะอย่างยิ่งเกี่ยวกับการระบุและการนับคอร์ในโปรเซสเซอร์แบบมัลติคอร์[ 102 ]ข้อผิดพลาดจากการตีความข้อมูลนี้ผิดพลาดได้ถูกรวมไว้ในโค้ดตัวอย่างของ Microsoft สำหรับการใช้ CPUID แม้แต่ใน Visual Studio เวอร์ชัน 2013 [ 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

CPUID EAX=5: ข้อมูลคุณสมบัติ MONITOR/MWAIT ใน EAX, EBX, EDX
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
3:0ขนาดเส้นมอนิเตอร์ที่เล็กที่สุดในหน่วยไบต์ขนาดเส้นมอนิเตอร์ที่ใหญ่ที่สุดในหน่วยไบต์จำนวนสถานะย่อย C0 [ a ] ​​ที่รองรับสำหรับMWAIT3:0
7:4จำนวนซับสเตท C1 ที่รองรับสำหรับMWAIT7:4
11:8จำนวนซับสเตท C2 ที่รองรับสำหรับMWAIT11:8
15:12จำนวนซับสเตท C3 ที่รองรับสำหรับMWAIT15:12
19:16(ที่สงวนไว้)(ที่สงวนไว้)จำนวนรัฐย่อย C4 ที่ได้รับการสนับสนุนสำหรับMWAIT19:16
23:20จำนวนซับสเตท C5 ที่รองรับสำหรับMWAIT23:20
27:24จำนวนซับสเตท C6 ที่รองรับสำหรับMWAIT27:24
31:28จำนวนซับสเตท C7 ที่รองรับสำหรับMWAIT31:28
  1. สถานะ C0 ถึง C7 เป็นสถานะ C เฉพาะของโปรเซสเซอร์ ซึ่งไม่จำเป็นต้องตรงกับสถานะ C ของ ACPIแบบ
CPUID EAX=5: การแจงนับส่วนขยาย MONITOR/MWAIT ใน ECX
นิดหน่อยอีซีเอ็กซ์
สั้นคุณสมบัติ
0อีเอ็มเอ็กซ์การระบุส่วนขยาย MONITOR/MWAIT ที่รองรับใน ECX และ EDX
1ไอบีอีรองรับการถือว่าการขัดจังหวะเป็นเหตุการณ์หยุดการทำงานMWAITแม้ว่าการขัดจังหวะจะถูกปิดใช้งานอยู่ก็ตาม
2(ที่สงวนไว้)
3จอภาพไร้_ รออนุญาตMWAITให้ใช้สำหรับการจัดการพลังงานโดยไม่ต้องตั้งค่าการตรวจสอบหน่วยความจำด้วยMONITOR[ 106 ]
31:4 (ที่สงวนไว้)

EAX=6: การจัดการความร้อนและพลังงาน

คำสั่งนี้จะส่งคืนบิตคุณลักษณะในรีจิสเตอร์ EAX และข้อมูลเพิ่มเติมในรีจิสเตอร์ EBX, ECX และ EDX

CPUID EAX=6: บิตคุณสมบัติการจัดการความร้อน/พลังงานใน EAX
นิดหน่อยอีเอเอ็กซ์
สั้นคุณสมบัติ
0ดีทีเอสความสามารถของเซ็นเซอร์ความร้อนดิจิทัล
1เทอร์โบบูสต์ความสามารถของเทคโนโลยีIntel Turbo Boost
2อารัต[]ความสามารถในการทำงานของตัวจับเวลาAPICตลอดเวลา
3(ที่สงวนไว้)
4PLNความสามารถในการแจ้งเตือนเมื่อพลังงานหมด
5อีซีเอ็มดีความสามารถในการปรับการทำงานของนาฬิกาแบบขยาย
6พีทีเอ็มความสามารถในการจัดการความร้อนของแพ็คเกจ
7เอชดับเบิลยูพีสถานะการทำงานที่ควบคุมด้วยฮาร์ดแวร์เพิ่ม MSRs แล้ว:
  • IA32_PM_ENABLE( 770h)
  • IA32_HWP_CAPABILITIES( 771h)
  • IA32_HWP_REQUEST( 774h)
  • IA32_HWP_STATUS( 777h)
8การแจ้งเตือน HWPการแจ้งเตือน HWP เกี่ยวกับการเปลี่ยนแปลงประสิทธิภาพที่รับประกันแบบไดนามิก - IA32_HWP_INTERRUPT( 773h) MSR
9หน้าต่าง HWP_Activity_การควบคุมหน้าต่างกิจกรรม HWP - บิตที่ 41:32 ของIA32_HWP_REQUESTMSR
10การตั้งค่าประสิทธิภาพพลังงาน HWPการควบคุมการตั้งค่าพลังงาน/ประสิทธิภาพของ HWP - บิตที่ 31:24 ของIA32_HWP_REQUESTMSR
11คำขอ ระดับแพ็คเกจ HWPการควบคุมระดับแพ็กเกจ HWP - IA32_HWP_REQUEST_PKG( 772h) MSR
12(ที่สงวนไว้)
13เอชดีซีรองรับการทำงาน แบบ Duty Cyclingของฮาร์ดแวร์แล้ว เพิ่ม MSRs แล้ว:
  • IA32_PKG_HDC_CTL( DB0h)
  • IA32_PM_CTL1( DB1h)
  • IA32_THREAD_STALL( DB2h)
14เทอร์โบ บูสต์สูงสุดเทคโนโลยีIntel Turbo Boost Max 3.0 พร้อมใช้งานแล้ว
15เอชดับเบิลยูพี_แคปรองรับ การขัดจังหวะเมื่อมีการเปลี่ยนแปลงค่าIA32_HWP_CAPABILITIES.Highest_Performance (บิต 7:0)
16HWP_PECI_OVERRIDE​รองรับการแทนที่ PECIของ HWP - บิต 63:60 ของIA32_HWP_PECI_REQUEST_INFO( 775h) MSR
17ยืดหยุ่น_ HWPHWP ที่ยืดหยุ่น - บิตที่ 63:59 ของIA32_HWP_REQUESTMSR
18HWP_REQUEST_ FAST_ACCESSโหมดการเข้าถึงที่รวดเร็วสำหรับIA32_HWP_REQUESTMSR รองรับ[ b ]
19ข้อเสนอแนะเกี่ยวกับฮาร์ดแวร์อินเทอร์เฟซการตอบรับฮาร์ดแวร์ เพิ่ม MSRs:
  • IA32_HW_FEEDBACK_PTR( 17D0h)
  • IA32_HW_FEEDBACK_CONFIG( 17D1h) (บิต 0 เปิดใช้งาน HFI, บิต 1 เปิดใช้งาน Intel Thread Director)
20HWP_REQUEST_ IGNORE_IDLEIA32_HWP_REQUESTระบบจะละเว้นการทำงานของโปรเซสเซอร์เชิงตรรกะที่ไม่ได้ใช้งาน เมื่อมีเพียงโปรเซสเซอร์เชิงตรรกะตัวใดตัวหนึ่งจากสองตัวที่ใช้โปรเซสเซอร์ทางกายภาพร่วมกัน เท่านั้น ที่ทำงานอยู่
21(ที่สงวนไว้)
22ระบบควบคุม HWP MSRIA32_HWP_CTL( 776h) MSR รองรับ[ 108 ]
23ผู้อำนวยการกระทู้รองรับ Intel Thread Director แล้ว เพิ่ม MSRs:
  • IA32_THREAD_FEEDBACK_CHAR( 17D2h)
  • IA32_HW_FEEDBACK_THREAD_CONFIG( 17D4h)
24( IA32_THERM_INTERRUPT MSR บิต 25 รองรับแล้ว) [ c ]
31:25 (ที่สงวนไว้)
  1. เฉพาะโปรเซสเซอร์ตระกูล Intel Pentium 4 (GenuineIntelตระกูล 0Fh) เท่านั้น บิตที่ 2 ของ EAX ใช้เพื่อระบุ OPP (Operating Point Protection) [ 107 ]แทน ARAT
  2. เพื่อเปิดใช้งานโหมดการเข้าถึงแบบเร็ว (ไม่ใช่แบบเรียงลำดับ) สำหรับIA32_HWP_REQUESTMSR บน CPU ที่รองรับ จำเป็นต้องตั้งค่าบิต 0 ของFAST_UNCORE_MSRS_CTL(657h) MSR
  3. บิต CPUID.(EAX=6):EAX[24] ปรากฏอยู่ใน Intel SDM เวอร์ชัน 078 ถึง 087 แต่ถูกลบออกตั้งแต่เวอร์ชัน 088 เป็นต้นไป และไม่พบว่ามีการตั้งค่าบิตนี้ในโปรเซสเซอร์ใดๆ ที่ทราบ
CPUID EAX=6: ฟิลด์คุณลักษณะการจัดการความร้อน/พลังงานใน EBX, ECX และ EDX
นิดหน่อยอีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
0จำนวนเกณฑ์การขัดจังหวะในเซ็นเซอร์ความร้อนดิจิทัลรองรับอินเทอร์เฟซความถี่ที่มีประสิทธิภาพ - IA32_MPERF( 0E7h) และIA32_APERF( 0E8h) MSRsการรายงานผลตอบรับจากฮาร์ดแวร์: รองรับการรายงานความสามารถด้านประสิทธิภาพ0
1(ความสามารถ ACNT2) []การรายงานผลตอบรับด้านฮาร์ดแวร์: รองรับการรายงานประสิทธิภาพและความสามารถ1
2(ที่สงวนไว้)(ที่สงวนไว้)2
3ความสามารถในการปรับสมดุลพลังงานและประสิทธิภาพ - IA32_ENERGY_PERF_BIAS( 1B0h) MSR3
7:4(ที่สงวนไว้)(ที่สงวนไว้)7:4
11:8จำนวนคลาส Intel Thread Director ที่รองรับโดยฮาร์ดแวร์ขนาดของโครงสร้างอินเทอร์เฟซการตอบรับฮาร์ดแวร์ (ในหน่วย 4  KiB) ลบ 111:8
15:12(ที่สงวนไว้)15:12
31:16 (ที่สงวนไว้)ดัชนีของแถวตัวประมวลผลเชิงตรรกะนี้ในโครงสร้างอินเทอร์เฟซการตอบรับฮาร์ดแวร์31:16 
  1. บิต "ACNT2 Capability" ปรากฏอยู่ใน Intel AP-485 rev 038 [ 109 ]และ 039 แต่ไม่ได้ปรากฏอยู่ใน Intel SDM เวอร์ชันใด ๆ คุณสมบัตินี้ทราบกันว่ามีอยู่ในซีพียู Intel เพียงไม่กี่รุ่น เช่น Xeon "Harpertown" stepping E0 [ 110 ]

EAX=7, ECX=0: คุณสมบัติเพิ่มเติม

ฟังก์ชันนี้จะส่งคืนแฟล็กคุณสมบัติเพิ่มเติมในรูปแบบ EBX, ECX และ EDX โดยจะส่งคืนค่า ECX สูงสุดสำหรับ EAX=7 ใน EAX

CPUID EAX=7,ECX=0: บิตคุณสมบัติเพิ่มเติมใน EBX, ECX และ EDX
นิดหน่อยอีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0เอฟเอสจีเอสเบสการเข้าถึงฐานของ %fs และ %gsพรีเฟตช์เวท1PREFETCHWT1คำแนะนำ(sgx-tem) [ a ]?0
1tsc_adjustIA32_TSC_ADJUST MSRavx512-vbmiคำสั่งการจัดการบิตเวกเตอร์AVX-512คีย์ sgxบริการรับรองเอกสารสำหรับIntel SGX1
2sgxส่วนขยาย Software Guardอุมิปการป้องกันคำสั่งในโหมดผู้ใช้avx512-4vnniwคำสั่งเครือข่ายประสาทเทียม AVX-512แบบ 4 รีจิสเตอร์2
3ดัชนีมวลกาย1ชุดคำสั่งการจัดการบิต 1พีเคยูปุ่มป้องกันหน่วยความจำสำหรับหน้าโหมดผู้ใช้avx512-4fmapsAVX-512 4 รีจิสเตอร์ การคูณและการสะสม ความแม่นยำเดี่ยว3
4hleTSX Hardware Lock ElisionospkePKU เปิดใช้งานโดยระบบปฏิบัติการเอฟอาร์เอ็มเร็ว สั้นREP MOVSB4
5เอวีเอ็กซ์2ส่วนขยายเวกเตอร์ขั้นสูง 2รอแพ็คการหยุดชั่วคราวตามเวลาและคำสั่งตรวจสอบ/รอระดับผู้ใช้ ( TPAUSE, UMONITOR, UMWAIT)uintrการขัดจังหวะระหว่างโปรเซสเซอร์ของผู้ใช้5
6เอฟดีพี-ยกเว้น-เท่านั้นรีจิสเตอร์ตัวชี้ข้อมูลx87 FPU จะได้รับการอัปเดตเฉพาะเมื่อเกิดข้อผิดพลาดเท่านั้นavx512-vbmi2คำสั่งการจัดการบิตเวกเตอร์ AVX-512 2(ที่สงวนไว้)6
7สเมปการป้องกันการดำเนินการในโหมดผู้ดูแลระบบcet_ss/shstkการบังคับใช้การควบคุมการไหลของโปรแกรม (CET): สแต็กเงา (ชื่อเรียกอีกอย่างของ SHSTK)(ที่สงวนไว้)7
8บีเอ็มไอ2ชุดคำสั่งการจัดการบิต 2จีเอฟนีคำแนะนำสำหรับสนามรบกาโลอิสavx512-vp2intersectคำสั่งการหาจุดตัดของเวกเตอร์ AVX-512บนจำนวนเต็ม 32/64 บิต8
9เอ่อปรับปรุงแล้วREP MOVSB/STOSBเวส์ชุดคำสั่ง Vector AES (VEX-256/EVEX)srbds-ctrlการลดผลกระทบจากการสุ่มตัวอย่างข้อมูลบัฟเฟอร์รีจิสเตอร์พิเศษ9
10อินวีพีซีไอดีINVPCIDคำแนะนำวีพีซีแอลเอ็มลูคดีคิวชุดคำสั่ง CLMUL (VEX-256/EVEX)เอ็มดี-เคลียร์VERWคำสั่งนี้จะล้างบัฟเฟอร์ของซีพียู10
11rtmหน่วยความจำธุรกรรมที่จำกัดของ TSXavx512-vnniคำสั่ง AVX-512สำหรับโครงข่ายประสาทเวกเตอร์rtm-always-abort [ 111 ]ธุรกรรม TSX ทั้งหมดถูกยกเลิก11
12rdt-m/pqmการตรวจสอบโดย Intel Resource Director (RDT) หรือการตรวจสอบคุณภาพการบริการ (QOS) ของแพลตฟอร์ม AMDavx512-bitalgคู่มือการใช้งาน AVX-512 BITALG(ที่สงวนไว้)12
13fcs_fds_ deprecationx87 FPU CS และ DS เลิกใช้งานแล้วtme_enมี MSR (Total Memory Encryption MSRs) ให้บริการrtm-force-abort [ 111 ]TSX_FORCE_ABORT (MSR 0x10f) พร้อมใช้งานแล้ว13
14เอ็มพีเอ็กซ์Intel MPX (ส่วนขยายการป้องกันหน่วยความจำ)avx512-vpopcntdqการนับจำนวนประชากรเวกเตอร์ AVX-512 แบบดับเบิลเวิร์ดและควอดเวิร์ดซีเรียลไลซ์SERIALIZEคำแนะนำ14
15rdt-a/pqeการจัดสรรทรัพยากร Intel Resource Director (RDT) หรือการบังคับใช้คุณภาพการบริการ (QOS) ของแพลตฟอร์ม AMD(fzm) [ a ]?ไฮบริดการผสมผสานซีพียูหลายประเภทในโครงสร้างโปรเซสเซอร์ (เช่นAlder Lake )15
16avx512-fAVX-512มูลนิธิลา57ระบบเพจจิ้ง 5 ระดับ (57 บิตแอดเดรส)tsxldtrkคำแนะนำการระงับ/ดำเนินการต่อการติดตามที่อยู่โหลดTSXTSUSLDTRK ( และTRESLDTRK)16
17avx512-dqคำสั่ง AVX-512 Doubleword และ Quadwordมาวาวค่าการปรับความกว้างที่อยู่ MPX ในพื้นที่ผู้ใช้ที่ใช้โดย คำสั่ง MPXBNDLDXของ Intel ในโหมด 64 บิตBNDSTX(ที่สงวนไว้)17
18rdseedRDSEEDคำแนะนำpconfigการกำหนดค่าแพลตฟอร์ม (คำแนะนำเกี่ยวกับเทคโนโลยีการเข้ารหัสหน่วยความจำ)18
19แอดเอ็กซ์Intel ADX (ส่วนขยายคำสั่งบวกและทดแบบความแม่นยำสูง)แอลบีอาร์บันทึกสาขาสถาปัตยกรรมสุดท้าย19
20แผนที่สแมปการป้องกันการเข้าถึงโหมดผู้ดูแลระบบเซท-ไอบีทีการบังคับใช้การควบคุมการไหลของโปรแกรม (CET): การติดตามสาขาทางอ้อม20
21avx512-ifmaคำสั่งคูณและบวกแบบรวมจำนวนเต็มAVX-512(ที่สงวนไว้)21
22(pcommit)( คำสั่ง PCOMMITเลิกใช้แล้ว) [ 113 ]rdpidRDPIDคำสั่ง (อ่านรหัสโปรเซสเซอร์) และ IA32_TSC_AUX MSRแอมเอ็กซ์-บีเอฟ16การคำนวณไทล์ AMXบนตัวเลขbfloat1622
23คลัฟลูชอปต์CLFLUSHOPTคำแนะนำklตู้เก็บกุญแจ AESavx512-fp16 คำสั่งการคำนวณเลขทศลอยความแม่นยำครึ่งหนึ่งAVX-512 [ 114 ]23
24คลับบีCLWBคำสั่ง (การเขียนกลับไปยังแคชไลน์)ตรวจจับการล็อกบัสข้อผิดพลาดในการดีบักการล็อกบัสแอมซ์-ไทล์คำแนะนำการขนถ่าย/จัดเก็บกระเบื้องAMX24
25พีทีการติดตามโปรเซสเซอร์ IntelคลิเดโมทCLDEMOTEคำสั่ง (ลดระดับแคชไลน์)แอมเอ็กซ์-อินท์8การคำนวณไทล์ AMXบนจำนวนเต็ม 8 บิต25
26avx512-pfคำสั่งดึงข้อมูลล่วงหน้าAVX-512(mprr) [ a ]?ibrs / spec_ctrlการควบคุมการเก็งกำไร ซึ่งเป็นส่วนหนึ่งของการควบคุมสาขาทางอ้อม (IBC): การเก็งกำไรที่จำกัดสาขาทางอ้อม (IBRS) และอุปสรรคการคาดการณ์สาขาทางอ้อม (IBPB) [ 115 ] [ 116 ]26
27avx512-erคำสั่งเลขชี้กำลังและส่วนกลับAVX-512มอฟดีรีMOVDIRIคำแนะนำสติปป์ตัวทำนายสาขาทางอ้อมแบบเธรดเดี่ยว ส่วนหนึ่งของ IBC [ 115 ]27
28avx512-cdคำแนะนำการตรวจจับความขัดแย้งAVX-512movdir64bMOVDIR64Bคำสั่ง (การจัดเก็บโดยตรง 64 ไบต์)L1D_FLUSHIA32_FLUSH_CMD MSR28
29ชาส่วนขยาย SHA-1 และ SHA-256เอนคิวซีเอ็มดีเข้าคิวร้านค้าและEMQCMD/หรือEMQCMDSคำแนะนำความสามารถด้านสถาปัตยกรรมIA32_ARCH_CAPABILITIES MSR (แสดงรายการการลดผลกระทบจากช่องทางด้านข้างแบบคาดการณ์[ 115 ] )29
30avx512-bwคำสั่งไบต์และเวิร์ดAVX-512sgx-lcการกำหนดค่าการเปิดใช้งานSGXความสามารถหลักIA32_CORE_CAPABILITIES MSR (แสดงรายการความสามารถหลักเฉพาะรุ่น)30
31avx512-vlส่วนขยายความยาวเวกเตอร์AVX-512แพ็คส์คีย์ป้องกันสำหรับหน้าเว็บโหมดผู้ดูแลระบบเอสเอสบีดีปิดใช้งาน Speculative Store Bypass [ 115 ]เพื่อบรรเทาผลกระทบจากSpeculative Store Bypass (IA32_SPEC_CTRL)31
  1. 1 2 3ณ เดือนเมษายน พ.ศ. 2567 บิต FZM, MPRR และ SGX_TEM ระบุไว้เฉพาะในเอกสาร Intel TDX [ 112 ]และไม่ได้ตั้งค่าในโปรเซสเซอร์ที่รู้จักใดๆ

EAX=7, ECX=1: คุณสมบัติเพิ่มเติม

ฟังก์ชันนี้จะส่งคืนแฟล็กคุณสมบัติเพิ่มเติมในรีจิสเตอร์ทั้งสี่ตัว

CPUID EAX=7,ECX=1: บิตคุณสมบัติเพิ่มเติมใน EAX, EBX, ECX และ EDX
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0ชา512ส่วนขยาย SHA-512พินIntel PPIN (Protected Processor Inventory Number): IA32_PPIN_CTL ( 04Eh) และ IA32_PPIN ( 04Fh) MSRsRDT_M_ ASYMความสามารถในการตรวจสอบ RDT แบบไม่สมมาตร(ที่สงวนไว้)0
1สม3ส่วนขยายแฮช SM3พีบีเอ็นดีเคบีการเข้ารหัสพื้นที่จัดเก็บทั้งหมด: PBNDKBคำสั่งและ TSE_CAPABILITY ( 9F1h) MSRอาร์ดีทีเอเอเอซิมความสามารถในการจัดสรร RDT แบบไม่สมมาตร(avx512-vnni-fp16)? []1
2สเอ็ม4ส่วนขยายการเข้ารหัส SM4(ที่สงวนไว้)(บัญชีออม ทรัพย์ ลดหย่อนแบบ เดิม )(X86S, [ 117 ]ยกเลิก[ 118 ] )(avx512-vnni-int8)? []2
3ราโอ-อินท์การดำเนินการอะตอมิกแบบระยะไกลบนจำนวนเต็ม: คำสั่งAADD, AAND, AOR,AXORCPUID MAXVAL_ LIM_RMVถ้าเป็น 1 แสดงว่าบิตที่ 22 IA32_MISC_ENABLEไม่สามารถตั้งค่าเป็น 1 เพื่อจำกัดค่าที่ส่งคืนโดยCPUID.(EAX=0):EAX[7:0].(ที่สงวนไว้)(avx512-ne-convert)? []3
4avx-vnniคำสั่งเครือข่ายประสาทเวกเตอร์ AVX (VNNI) (เข้ารหัส VEX)(ที่สงวนไว้)(sipi64)SIPI (Startup InterProcessor Interrupt) 64 บิต (ส่วนหนึ่งของ X86S ที่ถูกยกเลิก)avx-vnni-int8คำสั่ง AVX VNNI INT84
5avx512-bf16คำสั่ง AVX-512สำหรับตัวเลขbfloat16(ที่สงวนไว้)เอ็มเอสอาร์_ไอเอ็มเอ็มรูปแบบRDMSRและWRMSRNSคำแนะนำ ในทันทีavx-ne-convertคำสั่งแปลงค่า FP แบบไม่มีข้อยกเว้นของ AVX ( bfloat16 ↔ FP32 และFP16 → FP32)5
6สาวน้อยการแยกพื้นที่แอดเดรสเชิงเส้น (CR4 บิต 27)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)6
7cmpccxaddCMPccXADDคำแนะนำ(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)7
8archperf monextระบบตรวจสอบประสิทธิภาพทางสถาปัตยกรรมแบบขยาย (EAX=23h)(ที่สงวนไว้)(ที่สงวนไว้)แอมเอ็กซ์คอมเพล็กซ์AMXรองรับไทล์ "ที่ซับซ้อน" ( TCMMIMFP16PSและTCMMRLFP16PS)8
9(ลดความซ้ำซ้อน) [ b ]?(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)9
10เอฟเอสอาร์เอ็มความยาวศูนย์ที่รวดเร็ว REP MOVSB(ที่สงวนไว้)(ที่สงวนไว้)avx-vnni-int16คำสั่ง AVX VNNI INT1610
11เอฟอาร์เอสเร็ว สั้นREP STOSB(ที่สงวนไว้)เอซส่วนขยายการประมวลผล AI(avx512-vnni-int16)? []11
12อาร์เอสอาร์ซีเร็ว สั้นREP CMPSBและREP SCASB(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)12
13(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)ยูทีเอ็มอาร์เหตุการณ์ตัวจับเวลาของผู้ใช้: IA32_UINTR_TIMER ( 1B00h) MSR13
14(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)พรีเฟตชี่คำสั่งดึงข้อมูลแคชคำสั่งล่วงหน้า ( PREFETCHIT0และPREFETCHIT1) [ c ]14
15(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)ผู้ใช้_msrคำแนะนำการเข้าถึง MSR ในโหมดผู้ใช้ ( URDMSRและUWRMSR)15
16(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(avx512-bf16-ne)? []16
17เฟรดการคืนสินค้าที่ยืดหยุ่นและการจัดส่งกิจกรรม[ 119 ](ที่สงวนไว้)(ที่สงวนไว้)uiret-uif-from-rflagsถ้าเป็น 1 UIRETคำสั่ง (User Interrupt Return) จะตั้งค่า UIF (User Interrupt Flag) เป็นค่าของบิตที่ 1 ของอิมเมจ RFLAGS ที่ถูกดึงออกจากสแต็ก17
18lkgsLKGSคำแนะนำ[ 119 ](ที่สงวนไว้)(ที่สงวนไว้)เซ็ต-สสสถ้าเป็น 1 แสดงว่า Control-Flow Enforcement (CET) Supervisor Shadow Stacks (SSS) จะไม่ยุ่งก่อนเวลาอันควร ตราบใดที่การสลับ Shadow Stack ไม่ทำให้เกิด Page Fault บน Stack ที่กำลังสลับไป[ 120 ] [ 121 ] [ 122 ]18
19เวิร์มสิร์นส์WRMSRNSคำสั่ง (การเขียนแบบไม่เรียงลำดับไปยังMSR )(ที่สงวนไว้)(ที่สงวนไว้)เอวีเอ็กซ์10AVX10 Converged Vector ISA (ดูเพิ่มเติมที่หน้า 24h) [ 123 ]19
20เอ็นเอ็มไออาร์ซีการรายงานแหล่งที่มาของ NMI [ 119 ](ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)20
21amx-fp16คำแนะนำ AMX สำหรับหมายเลขFP16(ที่สงวนไว้)(ที่สงวนไว้)เอพีเอ็กซ์_เอฟส่วนขยายประสิทธิภาพขั้นสูงพื้นฐาน (เพิ่ม การเข้ารหัสคำนำ หน้า REX2 และ EVEX ที่ขยาย เพื่อรองรับ GPR 32 ตัว รวมทั้งคำสั่งใหม่บางคำสั่ง) [ 124 ]21
22รีเซ็ตHRESETคำสั่ง IA32_HRESET_ENABLE ( 17DAh) MSR และ Processor History Reset Leaf (EAX=20h)(ที่สงวนไว้)(ที่สงวนไว้)การรับรองจาก SEC_TEE_ถ้าเป็น 1 เทคโนโลยีสภาพแวดล้อมการประมวลผลที่เชื่อถือได้ ( Intel TDXและIntel SGX ) จะรองรับการรับรองความถูกต้องที่ฝังอยู่ในกลไกความปลอดภัยบนชิป22
23avx-ifmaคำแนะนำ AVX IFMA(ที่สงวนไว้)(ที่สงวนไว้)เอ็มเวทคำแนะนำ MWAIT [ d ]23
24(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)slsmโหมดล็อคสเต็ปคงที่ (บิต 0 ของIA32_INTEGRITY_STATUSMSR พร้อมใช้งาน)24
25(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)25
26แลมการมาสก์ที่อยู่เชิงเส้น(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)26
27msrlistRDMSRLISTและWRMSRLISTคำแนะนำ และ IA32_BARRIER ( 02Fh) MSR(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)27
28(ที่สงวนไว้)(mpsadbw_512)? [](ที่สงวนไว้)(ที่สงวนไว้)28
29(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)29
30invd_ disable_post_ bios_doneถ้าเป็น 1 จะรองรับINVDการป้องกันการดำเนินการคำสั่งหลังจาก BIOS เสร็จสิ้น(avx512-rao-fp)? [](ที่สงวนไว้)(ที่สงวนไว้)30
31มูฟร์สMOVRSและPREFETCHRST2รองรับคำสั่งต่างๆ (การอ่านหน่วยความจำ/การดึงข้อมูลล่วงหน้าพร้อมคำแนะนำการอ่านร่วมกัน)(avx512-rao-fp)? [](ที่สงวนไว้)(ที่สงวนไว้)31
  1. 1 2 3 4 5 6 7 8ณ เดือนเมษายน พ.ศ. 2569 บิต "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 เพียงชุดเดียวตั้งแต่เดือนเมษายน พ.ศ. 2569 [ 125 ]และไม่ได้ถูกตั้งค่าในโปรเซสเซอร์ใดๆ ที่รู้จัก
  2. ณ เดือนเมษายน 2024 บิต DEDUP ระบุไว้เฉพาะในเอกสาร Intel TDX [ 112 ]และไม่ได้ตั้งค่าในโปรเซสเซอร์ที่รู้จักใดๆ
  3. บนโปรเซสเซอร์ AMD การรองรับคำสั่ง prefetch ของแคชคำสั่งจะไม่แสดงด้วย แต่จะ แสดงCPUID.(EAX=7,ECX=1):EDX[14]ด้วย แทนCPUID.(EAX=8000_0021h):EAX[20]
  4. การสนับสนุนMWAITคำสั่งอาจแสดงโดย CPUID.(EAX=1).ECX[3]หรือ CPUID.(EAX=7,ECX=1).EDX[23] (อาจมีการตั้งค่าอย่างใดอย่างหนึ่งหรือทั้งสองอย่าง) แบบแรกแสดงถึงการสนับสนุนMONITORคำสั่งเช่นกัน ในขณะที่แบบหลังไม่ได้ระบุอย่างใดอย่างหนึ่งว่าMONITORมีคำสั่งนั้นอยู่MWAITไม่MONITORอาจมีอยู่ในระบบที่รองรับคุณสมบัติ "Monitorless MWAIT" (ซึ่งแสดงโดย CPUID.(EAX=5).ECX[3] )

EAX=7, ECX=2: คุณสมบัติเพิ่มเติม

ฟังก์ชันนี้จะส่งคืนแฟล็กคุณสมบัติเพิ่มเติมใน EDX

EAX, EBX และ ECX ถูกสงวนสิทธิ์ไว้แล้ว

CPUID EAX=7,ECX=2: บิตคุณสมบัติเพิ่มเติมใน EDX
นิดหน่อยอีดีเอ็กซ์
สั้นคุณสมบัติ
0psfdตัวทำนายการส่งต่อร้านค้าอย่างรวดเร็ว[ 126 ]ปิดใช้งานรองรับ ( SPEC_CTRL(MSR 48h) บิต 7)
1ipred_ctrlการควบคุม IPRED_DIS [ 127 ]ได้รับการสนับสนุน ( SPEC_CTRLบิต 3 และ 4)

IPRED_DIS ป้องกันไม่ให้คำสั่งที่เป้าหมายการกระโดดแบบทางอ้อมถูกดำเนินการแบบคาดการณ์ล่วงหน้า จนกว่าที่อยู่ของเป้าหมายการกระโดดจะได้รับการแก้ไข

2rrsba_ctrlพฤติกรรม RRSBA [ 128 ] [ 127 ]ปิดใช้งานที่รองรับ ( SPEC_CTRLบิต 5 และ 6)
3ddpd_uตัวดึงข้อมูลล่วงหน้าแบบขึ้นอยู่กับข้อมูล[ 129 ] รองรับการปิดใช้งาน ( SPEC_CTRLบิต 8)
4bhi_ctrlพฤติกรรม BHI_DIS_S [ 127 ]เปิดใช้งานรองรับ ( SPEC_CTRLบิต 10)

BHI_DIS_S ป้องกันไม่ให้เป้าหมายที่คาดการณ์ไว้ของสาขาทางอ้อมที่ดำเนินการใน ring0/1/2 ถูกเลือกโดยอิงจากประวัติสาขาจากสาขาที่ดำเนินการใน ring 3

5mcdt_noหากตั้งค่าไว้ โปรเซสเซอร์จะไม่แสดงการกำหนดเวลาขึ้นอยู่กับการกำหนดค่าMXCSR
6UC_LOCK_ DISABLEรองรับการปิดใช้งานฟีเจอร์ UC-lock (โดยรายงานข้อยกเว้น UC-lock เป็น #AC)
7monitor_ mitg_noหากตั้งค่าไว้ แสดงว่า คำสั่ง MONITOR/ UMONITORไม่ได้รับผลกระทบจากปัญหาด้านประสิทธิภาพ/พลังงานที่เกิดจากคำสั่งที่เกินความจุของตารางติดตามมอนิเตอร์ภายใน[ 130 ]
31:8 (ที่สงวนไว้)

EAX=0Dh: คุณสมบัติ XSAVE และส่วนประกอบสถานะ

ส่วนนี้ใช้สำหรับแสดงรายการคุณสมบัติ XSAVE และส่วนประกอบสถานะ

ส่วนขยายชุดคำสั่ง XSAVE ถูกออกแบบมาเพื่อบันทึก/เรียกคืนสถานะเพิ่มเติมของ CPU (โดยทั่วไปเพื่อวัตถุประสงค์ในการสลับบริบท ) ในลักษณะที่สามารถขยายให้ครอบคลุมส่วนขยายชุดคำสั่งใหม่ได้โดยที่โค้ดการสลับบริบทของระบบปฏิบัติการไม่จำเป็นต้องเข้าใจรายละเอียดเฉพาะของส่วนขยายใหม่เหล่านั้น ทำได้โดยการกำหนดส่วนประกอบสถานะ หลาย ชุด แต่ละชุดมีขนาดและออฟเซ็ตภายในพื้นที่บันทึกที่กำหนด และแต่ละชุดสอดคล้องกับส่วนย่อยของสถานะที่จำเป็นสำหรับส่วนขยาย CPU หนึ่งหรืออีกส่วนขยายหนึ่งEAX=0Dhส่วนย่อย CPUID ใช้เพื่อระบุข้อมูลเกี่ยวกับส่วนประกอบสถานะที่ CPU รองรับและขนาด/ออฟเซ็ตของส่วนประกอบเหล่านั้น เพื่อให้ระบบปฏิบัติการสามารถสำรองพื้นที่ที่เหมาะสมและตั้งค่าบิตเปิดใช้งานที่เกี่ยวข้องได้

ส่วนประกอบสถานะสามารถแบ่งย่อยได้เป็นสองกลุ่ม: สถานะผู้ใช้ (รายการสถานะที่แอปพลิเคชันมองเห็นได้ เช่น รีจิสเตอร์เวกเตอร์ AVX-512 ) และสถานะผู้ดูแลระบบ (รายการสถานะที่มีผลต่อแอปพลิเคชัน แต่ผู้ใช้มองไม่เห็นโดยตรง เช่น การกำหนดค่าการขัดจังหวะในโหมดผู้ใช้) รายการสถานะผู้ใช้จะถูกเปิดใช้งานโดยการตั้งค่าบิตที่เกี่ยวข้องในXCR0รีจิสเตอร์ควบคุม ในขณะที่รายการสถานะผู้ดูแลระบบจะถูกเปิดใช้งานโดยการตั้งค่าบิตที่เกี่ยวข้องในIA32_XSS( 0DA0h) MSR - รายการสถานะที่ระบุจะกลายเป็นส่วนประกอบสถานะที่สามารถบันทึกและเรียกคืนได้ด้วยตระกูลคำสั่งXSAVE/XRSTOR

กลไก XSAVE สามารถจัดการส่วนประกอบสถานะได้สูงสุด 63 รายการด้วยวิธีนี้ ส่วนประกอบสถานะ 0 และ 1 ( x87และSSEตามลำดับ) มีค่าออฟเซ็ตและขนาดคงที่ สำหรับส่วนประกอบสถานะ 2 ถึง 62 สามารถสอบถามขนาด ค่าออฟเซ็ต และแฟล็กเพิ่มเติมได้โดยการเรียกใช้คำสั่งCPUIDและEAX=0Dhตั้งECXค่าเป็นดัชนีของส่วนประกอบสถานะ ซึ่งจะส่งคืนรายการต่อไปนี้ในรูปแบบ EAX, EBX และ ECX (โดยสงวน EDX ไว้):

CPUID EAX=0Dh, ECX≥2: บันทึกข้อมูลส่วนประกอบสถานะ XSAVE
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์นิดหน่อย
0ขนาด (เป็นไบต์) ของส่วนประกอบสถานะค่าออฟเซ็ต (เป็นไบต์) ของส่วนประกอบสถานะจากจุดเริ่มต้นของพื้นที่บันทึก XSAVE/XRSTOR

(ค่าออฟเซ็ตนี้เป็น 0 สำหรับส่วนประกอบสถานะของผู้ดูแลระบบ เนื่องจากส่วนประกอบเหล่านี้สามารถบันทึก/กู้คืนได้ด้วย คำสั่ง XSAVES/ XRSTORSเท่านั้น ซึ่งจะใช้การบีบอัดเสมอ)

ส่วนประกอบสถานะผู้ใช้/ผู้ดูแลระบบ:
  • 0 = สถานะผู้ใช้ (เปิดใช้งานผ่านXCR0)
  • 1 = สถานะผู้ดูแลระบบ (เปิดใช้งานผ่านIA32_XSS)
0
1การจัดเรียงข้อมูล 64 ไบต์จะถูกเปิดใช้งานเมื่อใช้การบีบอัดข้อมูลเพื่อบันทึกสถานะ

หากบิตนี้ถูกตั้งค่าสำหรับส่วนประกอบสถานะ เมื่อจัดเก็บสถานะด้วยการบีบอัด ข้อมูลจะถูกแทรกระหว่างส่วนประกอบสถานะก่อนหน้าและส่วนประกอบสถานะนี้ตามความจำเป็นเพื่อให้ได้การจัดเรียง 64 ไบต์ หากบิตนี้ไม่ได้ตั้งค่า ส่วนประกอบสถานะจะถูกจัดเก็บต่อจากส่วนประกอบก่อนหน้าโดยตรง

1
2XFD รองรับการเกิดข้อผิดพลาดสำหรับส่วนประกอบสถานะ2
31:3 (ที่สงวนไว้)31:3

การพยายามสอบถามส่วนประกอบสถานะที่ไม่รองรับด้วยวิธีนี้ จะส่งผลให้ EAX, EBX, ECX และ EDX ถูกตั้งค่าเป็น 0 ทั้งหมด

ใบย่อยที่ 0 และ 1 ของCPUIDใบ หลัก 0Dhใช้สำหรับให้ข้อมูลคุณลักษณะ:

CPUID EAX=0Dh,ECX=0: คุณสมบัติ XSAVE
อีบีเอ็กซ์อีซีเอ็กซ์EDX:EAX
ขนาดสูงสุด (เป็นไบต์) ของพื้นที่บันทึก XSAVE สำหรับชุดส่วนประกอบสถานะที่ตั้งค่าไว้ในปัจจุบันในXCR0.ขนาดสูงสุด (เป็นไบต์) ของพื้นที่บันทึก XSAVE หากส่วนประกอบสถานะทั้งหมดที่รองรับXCR0บน CPU นี้ถูกเปิดใช้งานพร้อมกันภาพบิตแมป 64 บิตของส่วนประกอบสถานะที่รองรับโดยXCR0ซีพียูนี้
CPUID EAX=0Dh,ECX=1: คุณสมบัติเพิ่มเติมของ XSAVE
อีเอเอ็กซ์อีบีเอ็กซ์EDX:ECX
แฟล็กคุณสมบัติ XSAVE (ดูตารางด้านล่าง)ขนาด (เป็นไบต์) ของพื้นที่ XSAVE ที่เก็บส่วนประกอบสถานะทั้งหมดที่ตั้งค่าXCR0และIA32_XSSรวมเข้าด้วยกัน ในปัจจุบันภาพบิตแมป 64 บิตของส่วนประกอบสถานะที่รองรับโดยIA32_XSSซีพียูนี้
CPUID EAX=0Dh,ECX=1: คุณสมบัติแฟล็ก XSAVE ใน EAX
นิดหน่อยอีเอเอ็กซ์
สั้นคุณสมบัติ
0xsaveoptXSAVEOPTคำสั่ง: บันทึกส่วนประกอบสถานะที่ได้รับการแก้ไขตั้งแต่ครั้งล่าสุดXRSTOR
1xsavecXSAVECคำแนะนำ: บันทึก/กู้คืนสถานะด้วยการบีบอัดข้อมูล
2xgetbv_ecx1XGETBVด้วยECX=1การสนับสนุน
3เอ็กซ์เอสXSAVESและXRSTORSคำแนะนำและIA32_XSSMSR: บันทึก/กู้คืนสถานะด้วยการบีบอัด รวมถึงสถานะของตัวควบคุม
4เอ็กซ์เอฟดีรองรับ XFD (Extended Feature Disable)
31:5 (ที่สงวนไว้)

ณ เดือนกรกฎาคม 2566 ส่วนประกอบสถานะของ XSAVE ที่ได้รับการกำหนดโครงสร้างทางสถาปัตยกรรมไว้แล้วมีดังนี้:

ส่วนประกอบสถานะ XSAVE
ดัชนีคำอธิบายเปิดใช้งานด้วย
0สถานะx87XCR0 [ a ]
1สถานะของ SSE : XMM0- XMM15และMXCSRเอ็กซ์ซีอาร์0
2สถานะ AVX : ครึ่งบนของYMM0ถึงYMM15
3สถานะMPXBND0 : - BND3รีจิสเตอร์ขอบเขต
4สถานะ MPX: BNDCFGUและBNDSTATUSรีจิสเตอร์
5สถานะAVX-512k0 : รีจิสเตอร์ opmask -k7
6สถานะ AVX-512 "ZMM_Hi256": ครึ่งบนของZMM0ถึงZMM15
7สถานะ AVX-512 "Hi16_ZMM": ZMM16-ZMM31
8สถานะการติดตามโปรเซสเซอร์IA32_XSS
9รีจิสเตอร์ PKRU (รหัสป้องกันผู้ใช้)เอ็กซ์ซีอาร์0
10สถานะ PASID (Process Address Space ID)IA32_XSS
11สถานะ CET_U (เทคโนโลยีการบังคับใช้การควบคุมการไหล: ฟังก์ชัน MSR ในโหมดผู้ใช้)
12สถานะ CET_S (CET: ตัวชี้ สแต็กเงาสำหรับวงแหวน 0, 1, 2)
13สถานะ HDC (Hardware Duty Cycling)
14สถานะ UINTR (การขัดจังหวะในโหมดผู้ใช้)
15รัฐ LBR (Last Branch Record)
16สถานะ HWP (การควบคุมสถานะฮาร์ดแวร์ P)
17สถานะการกำหนดค่าไทล์ AMX :TILECFGเอ็กซ์ซีอาร์0
18รีจิสเตอร์ข้อมูลไทล์ AMX: tmm0-tmm7
19รีจิสเตอร์อเนกประสงค์แบบขยายของ APXr16 : - r31[ 124 ]
20 ถึง 61 (ที่สงวนไว้)
62การเพิ่มประสิทธิภาพการทำงานแบบเบา (LWP) (เฉพาะ AMD)เอ็กซ์ซีอาร์0
63(สงวนไว้) []
  1. บิตที่ 0 ของXCR0ถูกกำหนดค่าตายตัวเป็น 1 เพื่อให้คำสั่ง XSAVE รองรับการบันทึก/กู้คืนสถานะของ x87 เสมอ
  2. สำหรับXCR0และIA32_XSSบิตที่ 63 ถูกสงวนไว้โดยเฉพาะสำหรับการขยายเวกเตอร์บิต ซึ่งทำให้ไม่มีส่วนประกอบสถานะที่ 63

EAX=12h: ความสามารถของ SGX

ส่วนนี้ให้ข้อมูลเกี่ยวกับความสามารถที่รองรับของฟีเจอร์ Intel Software Guard Extensions (SGX) ส่วนนี้มีเอกสารย่อยหลายส่วน ซึ่งเลือกได้ด้วย ECX

ซับลีฟ 0 ให้ข้อมูลเกี่ยวกับฟังก์ชันลีฟ SGX ที่รองรับใน EAX และขนาดเอนเคลฟ SGX ที่รองรับสูงสุดใน EDX; ECX สงวนไว้ EBX ให้บิตแมปของบิตที่สามารถตั้งค่าได้ในฟิลด์ MISCSELECT ใน SECS (โครงสร้างควบคุมเอนเคลฟ SGX) - ฟิลด์นี้ใช้เพื่อควบคุมข้อมูลที่เขียนไปยังพื้นที่ MISC ของ SSA (พื้นที่บันทึกสถานะ SGX) เมื่อเกิด AEX (การออกจากเอนเคลฟแบบอะซิงโครนัสของ SGX)

CPUID EAX=12h,ECX=0: ฟังก์ชันย่อยของ SGX , MISCSELECT และขนาดสูงสุด
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0sgx1ฟังก์ชันใบไม้ SGX1เอ็กซ์อินโฟMISCSELECT: รายงานข้อมูลเกี่ยวกับข้อผิดพลาดในการเข้าถึงเพจและข้อยกเว้นการป้องกันทั่วไปที่เกิดขึ้นภายในเอนเคลฟMaxEnclave Size_Not64ค่า log2 ของขนาดเอนเคลฟสูงสุดที่รองรับในโหมดที่ไม่ใช่ 64 บิต0
1sgx2ฟังก์ชันใบไม้ SGX2ซีพินโฟMISCSELECT: รายงานข้อมูลเกี่ยวกับข้อยกเว้นการป้องกันการควบคุมที่เกิดขึ้นภายในเอนเคลฟ1
2(ที่สงวนไว้)(ที่สงวนไว้)2
3(ที่สงวนไว้)(ที่สงวนไว้)3
4(ที่สงวนไว้)(ที่สงวนไว้)4
5OSS []ENCLVใบไม้: EINCVIRTCHILD, EDECVIRTCHILD, และESETCONTEXT(ที่สงวนไว้)5
6ENCLS_C [ a ] ​​[ 132 ]ENCLSออกจาก: ETRACKC, ERDINFO, ELDBC,ELDUC(ที่สงวนไว้)6
7รายงานเอเวอไรฟี่ 2ENCLUใบไม้:EVERIFYREPORT2(ที่สงวนไว้)7
8(ที่สงวนไว้)(ที่สงวนไว้)MaxEnclave Size_64ค่า Log2 ของขนาดเอนเคลฟสูงสุดที่รองรับในโหมด 64 บิต8
9(ที่สงวนไว้)(ที่สงวนไว้)9
10อีอัปเดตเอสวีเอ็นENCLSใบไม้:EUPDATESVN(ที่สงวนไว้)10
11เอเดคส์ซาENCLUใบไม้:EDECCSSA(ที่สงวนไว้)11
12256 บิตเอสจีเอ็กซ์ENCLUหน้าที่ของใบไม้EGETKEY256และEREPORT2(ที่สงวนไว้)12
13(ที่สงวนไว้)(ที่สงวนไว้)13
14(ที่สงวนไว้)(ที่สงวนไว้)14
15(ที่สงวนไว้)(ที่สงวนไว้)15
31:16 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:16 
  1. 1 2บิตส่วนขยายการสมัครสมาชิกเกิน SGX (CPUID.(EAX=12h,ECX=0):EAX[บิต 5 และ 6]) ปรากฏอยู่ในการแก้ไข 065 ถึง 087 ของ Intel SDM แต่ถูกลบออกตั้งแต่การแก้ไข 088 เป็นต้นไป บิตเหล่านี้เป็นที่ทราบกันว่าถูกตั้งค่าไว้ในโปรเซสเซอร์ IceLake-U อย่างน้อยบางตัว [ 131 ]

ใบย่อยที่ 1 แสดงบิตแมปของบิตที่สามารถตั้งค่าได้ในฟิลด์ ATTRIBUTES ขนาด 128 บิตของ SECS ใน EDX:ECX:EBX:EAX (ซึ่งใช้กับสำเนา SECS ที่ใช้เป็นอินพุตสำหรับENCLS[ECREATE]ฟังก์ชันใบย่อย) บิต 64 บิตบนสุด (ที่ระบุใน EDX:ECX) เป็นบิตแมปของบิตที่สามารถตั้งค่าได้ใน XFRM (X-feature request mask) - มาสก์นี้เป็นบิตมาสก์ของส่วนประกอบสถานะ CPU (ดูใบย่อย 0Dh) ที่จะถูกบันทึกไปยัง SSA ในกรณีของ AEX ซึ่งมีรูปแบบเดียวกับXCR0รีจิสเตอร์ควบคุม บิตอื่นๆ จะแสดงใน EAX และ EBX ดังต่อไปนี้:

CPUID EAX=12h,ECX=1: บิตที่ตั้งค่าได้ของ SGXใน SECS.ATTRIBUTES
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0(อินิต)(ต้องเป็น 0) [ a ](ที่สงวนไว้)0
1ดีบักอนุญาตให้ดีบักเกอร์อ่านและเขียนข้อมูลเอนเคลฟโดยใช้EDBGRDและEDBGWR1
2โหมด 64 บิตเอนเคลฟโหมด 64 บิต2
3(ที่สงวนไว้)3
4คีย์สำรองรหัสการจัดสรรพร้อมใช้งานจากEGETKEY4
5คีย์ EINITTOKEN_KEYEINITสามารถรับรหัสโทเค็นได้จากEGETKEY5
6ซีอีทีคุณลักษณะ CET (Control-Flow Enforcement Technology) ช่วยให้6
7เคเอสเอสการแยกและการแบ่งปันกุญแจสำคัญ7
8(ที่สงวนไว้)8
9(ที่สงวนไว้)9
10เอเอ็กซ์โนติฟีเธรดภายในเอนเคลฟอาจได้รับการแจ้งเตือน AEX [ 133 ]10
31:11 (ที่สงวนไว้)31:11 
  1. สำหรับสำเนาของ SECS ที่มีอยู่ภายในเอ็กเคลฟ บิต 0 (INIT) ของ SECS.ATTRIBUTES ใช้เพื่อระบุว่าเอ็กเคลฟได้รับการเริ่มต้นด้วยค่าว่างENCLS[EINIT]บิตนี้จะต้องเป็น 0 ในสำเนา SECS ที่ใช้เป็นอินพุตให้กับเมธอด `ENCLS[CREATE]get_initialize_name`

ซับลีฟที่ 2 ขึ้นไปใช้สำหรับให้ข้อมูลเกี่ยวกับพื้นที่หน่วยความจำทางกายภาพที่พร้อมใช้งานเป็นส่วน EPC (Enclave Page Cache) ภายใต้ SGX

CPUID EAX=12h,ECX≥2: ข้อมูลส่วนแคชเพจของSGX Enclave
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
3:0ประเภทของใบย่อย:
  • 0000: ไม่ถูกต้อง
  • 0001: ส่วน EPC
  • อื่นๆ: สงวนสิทธิ์
บิตที่ 51:32 ของที่อยู่ฐานทางกายภาพของส่วน EPCคุณสมบัติของส่วน EPC:
  • 0000: ไม่ถูกต้อง
  • 0001: มีระบบรักษาความลับ ความสมบูรณ์ และการป้องกันการเล่นซ้ำ
  • 0010: มีการคุ้มครองข้อมูลที่เป็นความลับเท่านั้น
  • 0011: มีการรักษาความลับและปกป้องความสมบูรณ์ของข้อมูล
  • อื่นๆ: สงวนสิทธิ์
บิตที่ 51:32 ของขนาดส่วน EPC3:0
11:4 (ที่สงวนไว้)(ที่สงวนไว้)11:4 
19:12 บิตที่ 31:12 ของที่อยู่ฐานทางกายภาพของส่วน EPCบิตที่ 31:12 ของขนาดส่วน EPC19:12 
31:20 (ที่สงวนไว้)(ที่สงวนไว้)31:20 

EAX=14h: การติดตามการทำงานของโปรเซสเซอร์

ส่วนนี้แสดงข้อมูลคุณลักษณะของ Intel Processor Trace (หรือที่รู้จักกันในชื่อ Real Time Instruction Trace)

สำหรับซับลีฟที่ 0 ค่าที่ส่งคืนใน EAX คือดัชนีของซับลีฟสูงสุดที่รองรับสำหรับ CPUID ด้วย EAX=14h EBX และ ECX ให้แฟล็กคุณสมบัติ ส่วน EDX เป็นค่าสงวน

CPUID EAX=14h,ECX=0: บิตคุณลักษณะการติดตามโปรเซสเซอร์ใน EBX และ ECX
นิดหน่อยอีบีเอ็กซ์อีซีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0ตัวกรอง cr3รองรับการกรองCR3ท็อปเอาท์กลไกการส่งออก ToPA (Table of Physical Addresses) สำหรับแพ็กเก็ตติดตามที่ได้รับการสนับสนุน0
1ไซค์_แอคซีรองรับอัตราแพ็กเก็ต PSB (Packet Stream Boundary) ที่กำหนดค่าได้ และโหมด Cycle-Accurate (แพ็กเก็ต CYC)เมนทรีตาราง ToPA สามารถเก็บรายการเอาต์พุตได้หลายรายการ1
2ตัวกรอง IPรองรับการกรอง IP, การกรอง TraceStop และการรักษาค่า PT MSR ไว้หลังจากการรีเซ็ตแบบ Warm Resetsngl_ rng_outรองรับรูปแบบเอาต์พุตช่วงเดียว2
3เอ็มทีซีรองรับแพ็กเก็ตจับเวลา MTC (Mini Time Counter) และรองรับการระงับแพ็กเก็ต COFI (Change of Flow Instructions)ระบบย่อยติดตามการขนส่งเอาต์พุตไปยังระบบย่อยการติดตามการขนส่งได้รับการสนับสนุน3
4ptwritePTWRITEคำแนะนำที่ได้รับการสนับสนุน(ที่สงวนไว้)4
5pwr_evt_ traceรองรับการติดตามเหตุการณ์ด้านพลังงาน(ที่สงวนไว้)5
6pmi_preserveรองรับการรักษา PSB และ PMI (การขัดจังหวะการตรวจสอบประสิทธิภาพ)(ที่สงวนไว้)6
7การติดตามเหตุการณ์รองรับการสร้างแพ็กเก็ต Event Trace(ที่สงวนไว้)7
8tnt_disรองรับการปิดใช้งานการสร้างแพ็กเก็ต TNT (Branch Taken-Not-Taken)(ที่สงวนไว้)8
9พีทีทีทีรองรับ PTTT (Processor Trace Trigger Tracing)(ที่สงวนไว้)9
30:10 (ที่สงวนไว้)(ที่สงวนไว้)30:10 
31(ที่สงวนไว้)ริมฝีปากรูปแบบ IP (Instruction Pointer) สำหรับแพ็กเก็ตติดตามที่มีเพย์โหลด IP:
  • 0 = RIP (ที่อยู่ IP ที่ใช้งานได้จริง)
  • 1=LIP (IP ที่มีแอดเดรสเชิงเส้น โดยเพิ่มแอดเดรสฐาน CS เข้าไป)
31
CPUID EAX=14h,ECX=1: ข้อมูลการสร้างแพ็กเก็ตการติดตามโปรเซสเซอร์ใน EAX, EBX และ ECX
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0ช่วง cntจำนวนช่วงที่อยู่ IP ที่กำหนดค่าได้สำหรับการกรองไซค์_ธรีสตรักส์ภาพบิตแมปแสดงการเข้ารหัสค่าเกณฑ์รอบการทำงานที่รองรับไอซีเอ็นทีรองรับการดำเนินการทริกเกอร์ EN_ICNT0
1ทริกเกอร์_ หยุดชั่วคราวรองรับการดำเนินการทริกเกอร์ TRACE_PAUSE และ TRACE_RESUME1
2(ที่สงวนไว้)2
7:3(ที่สงวนไว้)(ที่สงวนไว้)7:3
10:8ทริกเกอร์_ CFG_CNTจำนวนของ IA32_RTIT_TRIGGERx_CFG MSRs

(จำนวนทริกเกอร์ที่รองรับคือ 4 เท่าของค่านี้)

(ที่สงวนไว้)10:8
14:11(ที่สงวนไว้)(ที่สงวนไว้)14:11
15(ที่สงวนไว้)ทริกเกอร์_ ดรี_แมตช์รองรับการจับคู่ DR อินพุตทริกเกอร์15
31:16อัตราเอ็มทีซีภาพบิตแมปแสดงการเข้ารหัสช่วงเวลา MTC ที่รองรับอัตรา psbภาพบิตแมปแสดงการเข้ารหัสความถี่ PSB ที่กำหนดค่าได้ซึ่งรองรับ(ที่สงวนไว้)31:16

EAX=15h และ EAX=16h: ความถี่สัญญาณนาฬิกาของ CPU, TSC, Bus และ Core Crystal

ใบทั้งสองนี้ให้ข้อมูลเกี่ยวกับความถี่ต่างๆ ใน ​​CPU ในส่วน EAX, EBX และ ECX (ส่วน EDX นั้นสงวนไว้ในทั้งสองใบ)

CPUID EAX=15h: ข้อมูลความถี่ TSC และ Core Crystal
อีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์
อัตราส่วนของความถี่ TSC ต่อความถี่สัญญาณนาฬิกาคริสตัลหลัก ตัวหารอัตราส่วนของความถี่ TSC ต่อความถี่นาฬิกาคริสตัลหลัก ตัวเศษ[ a ]ความถี่สัญญาณนาฬิกาคริสตัลหลัก ในหน่วยเฮิรตซ์[ a ]
CPUID EAX=16h: ความถี่ข้อมูลจำเพาะของโปรเซสเซอร์และบัส[ b ]
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์บิต
15:0ความถี่พื้นฐานของโปรเซสเซอร์ (ใน MHz) [ a ]ความถี่สูงสุดของโปรเซสเซอร์ (ในหน่วย MHz) [ a ]ความถี่บัส/อ้างอิง (ในหน่วย MHz) [ a ]15:0
31:16(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:16
  1. 1 2 3 4 5ฟิลด์จะไม่ถูกนับหากเป็นศูนย์
  2. ค่าความถี่ที่รายงานโดย leaf 16h คือความถี่ตามข้อกำหนดของโปรเซสเซอร์ ซึ่งเป็นค่าคงที่สำหรับโปรเซสเซอร์นั้นๆ และไม่จำเป็นต้องสะท้อนถึงความเร็วสัญญาณนาฬิกาของ CPU จริงๆ ในขณะที่เรียกใช้ CPUID

ถ้าค่าที่ส่งคืนใน EBX และ ECX ของใบ 15h ไม่เป็นศูนย์ทั้งคู่ ความถี่ของ TSC ( Time Stamp Counter ) ในหน่วยเฮิรตซ์จะกำหนด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/Core Crystal Clock ใน CPUID leaf 15h ความถี่ของตัวจับเวลา APICจะเป็นความถี่ Core Crystal Clock หารด้วยตัวหารที่ระบุโดยรีจิสเตอร์การกำหนดค่าการหารของ APIC [ 135 ]

EAX=17h: การแจงนับคุณลักษณะของผู้จำหน่าย SoC

ใบนี้จะปรากฏในระบบที่ใช้แกนประมวล ผล IPของซีพียู x86 ใน SoC ( System on chip ) จากผู้ผลิตรายอื่น ในขณะที่ใบอื่นๆCPUIDให้ข้อมูลเกี่ยวกับแกนประมวลผลซีพียู x86 ใบนี้จะให้ข้อมูลเกี่ยวกับ SoC ใบนี้ใช้ดัชนีใบย่อยใน ECX

ซับลีฟ 0 จะส่งคืนค่าดัชนีซับลีฟสูงสุดใน EAX (อย่างน้อย 3) และข้อมูลการระบุ SoC ใน EBX/ECX/EDX:

CPUID EAX=17h,ECX=0: ข้อมูลระบุตัวตนของ SoC
นิดหน่อยอีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
15:0รหัสผู้ผลิต SoCรหัสโครงการ SoCรหัสขั้นตอน SoC ภายในโปรเจ็กต์ SoC15:0
16แผนการระบุผู้จำหน่าย SoC
  • 0  : รหัสผู้จำหน่ายที่กำหนดโดย Intel [ a ]
  • 1  : แผนการแจงนับมาตรฐานอุตสาหกรรม[]
16
31:17(ที่สงวนไว้)31:17
  1. ณ เดือนพฤษภาคม 2024 เป็นที่ทราบกันว่า Intel ได้กำหนดรหัสผู้จำหน่าย (Vendor ID) ดังต่อไปนี้:
    รหัสประจำตัวผู้ขาย
    1สเปรดทรัม[ 136 ]
  2. ณ เดือนพฤษภาคม 2024 เอกสารของ Intel ไม่ได้ระบุว่าควรใช้รูปแบบการแจงนับ "มาตรฐานอุตสาหกรรม" ใดสำหรับ Vendor ID ใน EBX[15:0] หากมีการตั้งค่า EBX[16]

ซับลีฟที่ 1 ถึง 3 ส่งคืนสตริงแบรนด์ผู้ผลิต SoC ขนาด 48 ไบต์ใน รูปแบบ UTF-8ซับลีฟที่ 1 ส่งคืน 16 ไบต์แรกใน EAX, EBX, ECX, EDX (ตามลำดับ) ซับลีฟที่ 2 ส่งคืน 16 ไบต์ถัดไป และซับลีฟที่ 3 ส่งคืน 16 ไบต์สุดท้าย สตริงสามารถลงท้ายด้วยค่าว่าง ได้ แต่ไม่จำเป็นต้องเป็นเช่น นั้น

EAX=18h: ลำดับชั้นและโทโพโลยีของ TLB

ส่วนนี้ให้ข้อมูลเกี่ยวกับ TLB ( Translation lookaside buffer ) ที่พร้อมใช้งานสำหรับแกนประมวลผลที่CPUIDใช้คำสั่งนั้น ส่วนนี้มีใบย่อยหลายใบ ซึ่งเลือกได้ด้วย ECX

เมื่อเรียกใช้ด้วย ECX=0 ฟังก์ชันจะส่งคืนดัชนีของซับลีฟที่รองรับสูงสุดใน EAX และค่า 0 ทั้งหมดใน 5 บิตล่างสุดของ EDX — บิตที่เหลือของ EDX รวมถึง EBX และ ECX ถูกสงวนไว้

เมื่อเรียกใช้ด้วย ECX≠0 ฟังก์ชันนี้จะส่งคืนข้อมูลเกี่ยวกับ TLB โดยที่ ECX (ตั้งแต่ 1 ถึงซับลีฟสูงสุดที่รองรับ) จะเลือก TLB ที่จะส่งคืนข้อมูล TLB สำหรับโปรเซสเซอร์ที่กำหนดอาจปรากฏในลำดับใดก็ได้ ข้อมูลที่ส่งคืนสำหรับ TLB ที่กำหนดจะรวมถึงจำนวนชุดใน ECX รวมถึงข้อมูลเพิ่มเติมใน EBX และ EDX (EAX สงวนไว้):

CPUID EAX=18h,ECX≠0: ข้อมูล TLB
นิดหน่อยอีบีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0รายการ 4KBTLB รองรับรายการสำหรับเพจขนาด 4 กิโลไบต์พิมพ์ประเภท TLB ค่าที่กำหนดค่าไว้มีดังนี้:
  • 0: (ไม่มี) [ a ]
  • 1: Data TLB
  • 2: คำแนะนำ TLB
  • 3: TLB รวม (คำสั่ง+ข้อมูล)
  • 4: TLB ข้อมูลโหลดอย่างเดียว
  • 5: TLB ข้อมูลแบบจัดเก็บอย่างเดียว
  • 6-31: สงวนสิทธิ์
0
1รายการขนาด 2MBTLB รองรับรายการสำหรับ hugepage ขนาด 2 เมกะไบต์1
2รายการขนาด 4MBTLB รองรับรายการสำหรับ hugepage ขนาด 4 เมกะไบต์2
31GB_ENTRIESTLB รองรับรายการสำหรับ hugepage ขนาด 1GByte3
4(ที่สงวนไว้)4
7:5จำนวนระดับระดับแคชการแปล (เริ่มต้นที่ 1)7:5
8การแบ่งพาร์ติชันการแบ่งพาร์ติชัน TLB:
  • 0: การแบ่งพาร์ติชันแบบอ่อนระหว่างโปรเซสเซอร์เชิงตรรกะที่ใช้ TLB ร่วมกัน
  • 1-7: สงวนสิทธิ์
ฟูลลี่_แอสโซซิเอทTLB ที่เชื่อมโยงอย่างสมบูรณ์8
10:9(ที่สงวนไว้)10:9
13:11(ที่สงวนไว้)13:11
15:14MAX_LP_ ADDRESSABLE_IDSจำนวนสูงสุดของ ID ที่สามารถระบุได้สำหรับโปรเซสเซอร์เชิงตรรกะที่ใช้ TLB ร่วมกันนี้ (ลบ 1)15:14
25:16จำนวนวิธีจำนวนวิธีการเชื่อมโยง25:16
31:26(ที่สงวนไว้)31:26
  1. หาก EDX[4:0] ถูกส่งกลับเป็น 0 แสดงว่าซับลีฟนั้นไม่ถูกต้อง – เนื่องจากไม่ได้อธิบายถึง TLB และข้อมูลอื่นๆ ที่ส่งคืนใน EBX, ECX หรือบิตที่เหลือของ EDX ก็ไม่ถูกต้องเช่นกัน

    เป็นไปได้ที่ซับลีฟที่ถูกต้องจะปรากฏต่อจากซับลีฟที่ไม่ถูกต้อง

EAX=19h: คุณสมบัติของ Intel Key Locker

ส่วนนี้แสดงข้อมูลคุณสมบัติของ Intel Key Locker ใน EAX, EBX และ ECX ส่วน EDX นั้นสงวนไว้

CPUID EAX=19h: บิตคุณสมบัติ Key Locker ใน EAX, EBX และ ECX
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0cpl0_ จำกัดข้อจำกัดของ Key Locker ที่รองรับเฉพาะ CPL0 เท่านั้นเอส_เคิลเปิดใช้งานคำแนะนำ "Key Locker" ของ AES แล้วไม่มีการสำรองข้อมูลพารามิเตอร์ที่ไม่สำรองข้อมูลเพื่อLOADIWKEYรองรับ0
1ห้ามเข้ารหัส_ จำกัดข้อจำกัดของ Key Locker ที่ไม่รองรับการเข้ารหัส(ที่สงวนไว้)แรนด์_ ไอวคีย์รองรับการเข้ารหัส KeySource แบบ 1 (การสุ่มคีย์การห่อหุ้มภายใน)1
2ไม่มีการถอดรหัสที่จำกัดข้อจำกัดของ Key Locker ที่ไม่รองรับการถอดรหัสaes_wide_klรองรับคำแนะนำการใช้งาน AES "Wide Key Locker"(ที่สงวนไว้)2
3(ข้อจำกัดของกระบวนการ) [](ที่สงวนไว้)(ที่สงวนไว้)3
4(ที่สงวนไว้)การสำรองข้อมูล iwkeyรองรับระบบ MSR "Key Locker" และการสำรองข้อมูลกุญแจห่อหุ้มภายใน(ที่สงวนไว้)4
31:5 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:5 
  1. ณ เดือนเมษายน 2024 บิต "ข้อจำกัดกระบวนการ" ปรากฏอยู่ในเอกสาร Intel TDX เท่านั้น [ 112 ]และไม่ได้ถูกตั้งค่าในโปรเซสเซอร์ที่รู้จักใดๆ

EAX=1Dh: ข้อมูลไทล์ Intel AMX

เมื่อเป็นจริงECX=0ระบบจะแสดงรายการซับลีฟ "พาเลท" ที่รองรับสูงสุดใน EAX เมื่อเป็นจริง ระบบจะส่งคืนECX≥1ข้อมูลเกี่ยวกับพาเลทn

CPUID EAX=1Dh,ECX≥1: ข้อมูล พาเลทไทล์ AMX n
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
15:0ไบต์ไทล์ทั้งหมดขนาดของรีจิสเตอร์ไทล์ทั้งหมด หน่วยเป็นไบต์ (8192)ไบต์ต่อแถว(64)แถวสูงสุด(16)(ที่สงวนไว้)15:0
31:16ไบต์ต่อไทล์ขนาดของไทล์หนึ่งชิ้น หน่วยเป็นไบต์ (1024)ชื่อสูงสุดจำนวนรีจิสเตอร์กระเบื้อง (8)(ที่สงวนไว้)(ที่สงวนไว้)31:16

EAX=1Eh: TMULข้อมูลตัวคูณไทล์ Intel AMX ( )

ส่วนนี้จะส่งคืนข้อมูลเกี่ยวกับ หน่วย AMXTMUL (ตัวคูณไทล์) ส่วนนี้มีส่วนย่อยหลายส่วน ซึ่งสามารถเลือกได้ด้วย ECX

ซับลีฟ 0 จะส่งคืนค่าซับลีฟสูงสุดที่รองรับในรูปแบบ EAX และข้อมูล TMUL พื้นฐานในรูปแบบ EBX ส่วนซับลีฟ 1 จะส่งคืนข้อมูลคุณลักษณะเพิ่มเติมในรูปแบบ EAX

CPUID EAX=1Eh,ECX=0: TMULข้อมูล AMX เมนลีฟ
บิตอีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
7:0tmul_maxkจำนวนแถวหรือคอลัมน์สูงสุด (16)(ที่สงวนไว้)(ที่สงวนไว้)7:0
23:8tmul_maxnจำนวนไบต์สูงสุดต่อคอลัมน์ (64)(ที่สงวนไว้)(ที่สงวนไว้)23:8
31:24(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:24
CPUID EAX=1Eh,ECX=1: TMULข้อมูลคุณสมบัติ AMX
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0แอมเอ็กซ์-อินท์8รองรับจำนวนเต็ม 8 บิต(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)0
1แอมเอ็กซ์-บีเอฟ16รองรับbfloat16(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)1
2แอมเอ็กซ์คอมเพล็กซ์การรองรับจำนวนเชิงซ้อน(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)2
3amx-fp16รองรับfloat16(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)3
4amx-fp8รองรับ float8(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)4
5(amx-transpose) [ a ](การสนับสนุนคำแนะนำการสลับตำแหน่ง)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)5
6amx-tf32 [ b ]( รองรับ TensorFloat-32 ("FP19") )(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)6
7amx-avx512รองรับ AMX-AVX512(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)7
8amx-movrsการสนับสนุน AMX-MOVRS(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)8
31:9(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:9
  1. ก่อนหน้านี้ระบุไว้ว่าเป็นส่วนขยายในอนาคต [ 137 ]แต่ถูกลบออกในเวอร์ชัน 059 [ 138 ]
  2. ก่อนหน้านี้ระบุว่าเป็นส่วนขยายในอนาคต แต่ถูกลบออกในเวอร์ชัน 062 [ 139 ]

EAX=21h: สงวนไว้สำหรับการแจงนับ TDX

เมื่อ Intel TDX ( Trust Domain Extensions ) ทำงานอยู่ ความพยายามในการดำเนินการCPUIDคำสั่งโดยแขก TD (Trust Domain) จะถูกดักจับโดยโมดูล TDX โมดูลนี้ เมื่อCPUIDถูกเรียกใช้ด้วยEAX=21hและECX=0(leaf 21h, sub-leaf 0) จะส่งคืนดัชนีของ sub-leaf ที่รองรับสูงสุดสำหรับ leaf 21hในEAXและสตริงรหัสผู้จำหน่ายโมดูล TDX เป็นสตริง ASCII 12 ไบต์ใน EBX, EDX, ECX (ตามลำดับ) การใช้งานโมดูลของ Intel เองจะส่งคืนสตริงรหัสผู้จำหน่าย(พร้อมช่องว่างสี่ช่องต่อท้าย) [ 140 ] - สำหรับโมดูลนี้ ข้อมูลคุณสมบัติเพิ่มเติมจะไม่สามารถใช้งานได้ผ่าน และต้องได้รับผ่าน คำสั่งเฉพาะของ TDX แทน"IntelTDX    "CPUIDTDCALL

ใบข้อมูลนี้ถูกสงวนไว้ในฮาร์ดแวร์ และจะ21hส่งคืนค่า 0 ใน EAX/EBX/ECX/EDX (บนโปรเซสเซอร์ที่มีใบข้อมูลพื้นฐานสูงสุดเท่ากับ หรือสูงกว่า) เมื่อรันโดยตรงบน CPU

EAX=24h, ECX=0: AVX10 Converged Vector ISA

ส่งคืนข้อมูลซับลีฟที่รองรับสูงสุดใน EAX และข้อมูลคุณลักษณะ AVX10 ใน EBX [ 123 ] (ECX และ EDX สงวนไว้)

CPUID EAX=24h, ECX=0: บิตคุณสมบัติ AVX10 ใน EBX
นิดหน่อยอีบีเอ็กซ์
สั้นคุณสมบัติ
7:0เวกเตอร์_ ไอซา_เวอร์ชันAVX10 Converged Vector ISA เวอร์ชัน (≥1)
15:8(ที่สงวนไว้)
18:16(สงวนไว้เป็น 111b) []
31:19(ที่สงวนไว้)
  1. บิตทั้งสามนี้เดิมทีออกแบบมาเพื่อระบุ "ความกว้างของเวกเตอร์ที่รองรับ" โดยบิตที่ 16 ระบุการรองรับเวกเตอร์ 128 บิต บิตที่ 17 สำหรับ 256 บิต และบิตที่ 18 สำหรับ 512 บิต ซีพียูที่มีความกว้างสูงสุด 128 บิต กล่าวกันว่า รองรับ "AVX10/128" ซีพียู ที่มีความกว้างสูงสุด 256 บิต รองรับ "AVX10/256"และซีพียูที่มีความกว้างสูงสุด 512 บิต รองรับ "AVX10/512"ตัวเลขหลังเครื่องหมายทับระบุความกว้างของเวกเตอร์ที่รองรับสูงสุด หลังจากประกาศ AVX10.1 ไม่นาน Intel ก็ยกเลิกแผนสำหรับ AVX10/128 [ 141 ] ซึ่งน่าจะเป็นผลมาจากการต่อต้านจากนักพัฒนาทำให้เหลือเพียงความกว้างของเวกเตอร์สูงสุด 256 บิตและ 512 บิตเท่านั้นที่รองรับ ใน AVX10.2 Intel ได้ยกเลิกความแตกต่างของความกว้างของเวกเตอร์โดยสิ้นเชิง และกำหนดให้รองรับเวกเตอร์ 512 บิตแทน เนื่องจากซีพียู AVX10.1 ที่วางจำหน่ายมีเพียงรุ่นเดียวที่ใช้ สถาปัตยกรรม Granite Rapidsซึ่งเป็นดีไซน์แบบ P-core เท่านั้น (และต่อมาได้มีการเพิ่มรุ่น AVX10/512 เข้ามา ) จึงไม่มี การวางจำหน่ายซีพียู AVX10/256เลย กล่าวอีกนัยหนึ่ง ซีพียูที่วางจำหน่ายพร้อม AVX10 มีเพียงรุ่นที่รองรับ 128, 256 และ 512 บิต ทำให้ทั้งสามบิตรวมกันเป็น 111 บิต ปัจจุบันบิตเหล่านี้ถูกระบุว่าเป็นบิตสงวนไว้ แต่ยังคงอ่านค่าได้เป็น 111 บิต

EAX=24 ชม., ECX=1: คุณสมบัติ AVX10 แบบแยกส่วน

Subleaf 1 สงวนไว้สำหรับคุณสมบัติ AVX10 ที่ไม่ได้ผูกติดกับเวอร์ชันใด ๆ

CPUID EAX=24h, ECX=1: คุณสมบัติ AVX10 แบบแยกส่วนใน ECX
นิดหน่อยอีซีเอ็กซ์
สั้นคุณสมบัติ
0(วีพีเอ็มเอ็ม)(การคูณเมทริกซ์แบบแพ็คส่วนขยายเวกเตอร์) [ 142 ]
1(ที่สงวนไว้)
2AVX10_VNNI_INTคำสั่ง AVX10.2 VNNI [ a ] ​​[ 143 ]
3AVX10_V2_AUXคำสั่งเสริม AVX10.2 [ 144 ]
31:4(ที่สงวนไว้)
  1. คำสั่ง AVX10.2 VNNI จะปรากฏขึ้นหากเวอร์ชัน AVX10 เป็น 2 หรือสูงกว่า (ดู CPUID.(EAX=24h).EBX[7:0]) หรือบิต AVX10_VNNI_INT ถูกตั้งค่า

EAX=2000'0000h: ฟังก์ชัน Phi สูงสุดของ Xeon ถูกนำมาใช้งานแล้ว

ฟังก์ชันสูงสุดจะถูก ส่งคืนใน EAX ใบนี้มีอยู่เฉพาะในโปรเซสเซอร์Xeon Phi เท่านั้น [ 145 ]

EAX=2000'0001h: บิตคุณสมบัติ Xeon Phi

ฟังก์ชันนี้จะส่งคืนค่าแฟล็กคุณสมบัติ

CPUID EAX=2000'0001h: บิตคุณสมบัติ Xeon Phi
นิดหน่อยอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
3:0(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)3:0
4(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)k1omK1OM [ 145 ]4
31:5(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:5

EAX=4000'0000h-4FFFF'FFFh: สงวนไว้สำหรับไฮเปอร์ไวเซอร์

เมื่อCPUIDคำสั่งถูกประมวลผลภายใต้การจำลองเสมือน Intel VT-x หรือ AMD-v คำสั่งนั้นจะถูกดักจับโดยไฮเปอร์ไวเซอร์ ทำให้ไฮเปอร์ไวเซอร์สามารถส่งCPUIDค่าแฟล็กคุณสมบัติที่แตกต่างจากฮาร์ดแวร์พื้นฐานได้ ค่าCPUID`leaves` 40000000hและ `leaves` 4FFFFFFFhไม่ได้ถูกนำไปใช้ในฮาร์ดแวร์ และสงวนไว้สำหรับไฮเปอร์ไวเซอร์เพื่อระบุข้อมูลเฉพาะของไฮเปอร์ไวเซอร์และข้อมูลคุณสมบัติผ่านกลไกการดักจับนี้

สำหรับ leaf 40000000hนั้น ไฮเปอร์ไวเซอร์คาดว่าจะส่งคืนดัชนีของ leaf CPUID ไฮเปอร์ไวเซอร์ที่รองรับสูงสุดใน EAX และสตริง ID ไฮเปอร์ไวเซอร์ 12 ตัวอักษรใน EBX, ECX, EDX (ตามลำดับนั้น) สำหรับ leaf นั้น40000001hไฮเปอร์ไวเซอร์อาจส่งคืนลายเซ็นการระบุอินเทอร์เฟซใน EAX เช่น ไฮเปอร์ไวเซอร์ที่ต้องการโฆษณาว่าเข้า กันได้กับ Hyper-Vอาจส่งคืน0x31237648"Hv#1"ใน EAX [ 146 ] [ 147 ]รูปแบบของ leaf 40000001hและ leaf ที่รองรับสูงสุดนั้นขึ้นอยู่กับไฮเปอร์ไวเซอร์ ไฮเปอร์ไวเซอร์ที่ใช้งาน leaf เหล่านี้โดยปกติจะตั้งค่าบิตที่ 31 ของ ECX สำหรับ leaf CPUID 1 เพื่อระบุการมีอยู่ของ leaf เหล่านั้น

ไฮเปอร์ไวเซอร์ที่เปิดเผยอินเทอร์เฟซไฮเปอร์ไวเซอร์มากกว่าหนึ่งรายการอาจจัดเตรียมชุดใบ CPUID เพิ่มเติมสำหรับอินเทอร์เฟซเพิ่มเติม โดยมีระยะห่างของ100hใบต่ออินเทอร์เฟซ[ 148 ]ตัวอย่างของไฮเปอร์ไวเซอร์ที่ทำเช่นนี้ได้แก่:

  • เมื่อQEMUถูกกำหนดค่าให้จัดเตรียมอินเทอร์เฟซทั้งHyper-VและKVMระบบจะจัดเตรียมข้อมูล Hyper-V โดยเริ่มจากลีฟ CPUID 40000000hและข้อมูล KVM โดยเริ่มจากลี40000100h[ 149 ] [ 150 ]
  • เมื่อXenถูกกำหนดค่าให้จำลอง Hyper-V มันจะให้ข้อมูล Hyper-V โดยเริ่มจากลีฟ CPUID 40000000hและข้อมูล Xen โดยเริ่มจากลี40000100h[ 151 ]

ไฮเปอร์ไวเซอร์บางตัวที่ทราบกันว่าส่งคืนสตริงรหัสไฮเปอร์ไวเซอร์ในโหนดปลายทาง40000000hได้แก่:

CPUID EAX=4000'0000h: สตริงรหัส Hypervisor 12 ตัวอักษรในรูปแบบ EBX, ECX, EDX
ไฮเปอร์ไวเซอร์รหัสประจำตัว (ASCII)หมายเหตุ
ไมโครซอฟต์ไฮเปอร์วี"Microsoft Hv"[ 146 ]
KVMของ Linux"KVMKVMKVM\0\0\0"[ 152 ]\0 หมายถึงอักขระ ASCII NUL
"Linux KVM Hv"[ 153 ]การจำลอง Hyper-V [ 154 ]
ไบฟ"BHyVE BHyVE ","bhyve bhyve "สตริง ID เปลี่ยนจากตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นตัวพิมพ์เล็กทั้งหมดในปี 2013 [ 155 ]

สตริงตัวพิมพ์เล็กยังใช้ในไฮเปอร์ไวเซอร์ที่ได้มาจาก bhyve เช่น xhyve และ HyperKit [ 156 ]

เซน"XenVMMXenVMM"[ 151 ]เฉพาะเมื่อใช้โหมด HVM (เครื่องเสมือนฮาร์ดแวร์) เท่านั้น
คิวอีเอ็มยู"TCGTCGTCGTCG"[ 157 ]เฉพาะเมื่อเปิดใช้งาน TCG (Tiny Code Generator) เท่านั้น
ความขนาน"prl hyperv  "," lrpepyh  vr"สตริง นี้เป็น เวอร์ชันที่มี การสลับลำดับไบต์ของสตริง ซึ่งพบใน Parallels Workstation บางเวอร์ชัน[ 158 ]" lrpepyh  vr""prl hyperv  "
วีเอ็มแวร์"VMwareVMware"[ 159 ]
โครงการ ACRN"ACRNACRNACRN"[ 160 ]
เวอร์ชวลบ็อกซ์"VBoxVBoxVBox"[ 161 ]เฉพาะเมื่อตั้งค่าให้ใช้ผู้ให้บริการพาราเวอร์ชวลไลเซชัน "hyperv" เท่านั้น
QNX Hypervisor"QXNQSBMV"วิธีการตรวจจับไฮเปอร์ไวเซอร์ QNX ที่ระบุไว้ในเอกสาร QNX อย่างเป็นทางการ[ 162 ]จะตรวจสอบเฉพาะอักขระ 8 ตัวแรกของสตริงตามที่ระบุใน EBX และ ECX (รวมถึงการสลับลำดับไบต์) - EDX จะถูกละเว้นและอาจมีค่าใดก็ได้
เน็ตบีเอสดี เอ็นวีเอ็มเอ็ม"___ NVMM ___"[ 163 ]
OpenBSD VMM"OpenBSDVMM58"[ 164 ]
เรือนจำซีเมนส์"Jailhouse\0\0\0"[ 165 ]\0 หมายถึงอักขระ ASCII NUL
บิตดีเฟนเดอร์นาโปก้า"Napocahv    "[ 166 ]
เอฟเอ็กซ์-อีมู"FEXIFEXIEMU\0"[ 167 ]\0 หมายถึงอักขระ ASCII NUL
อินเทล แฮกซ์เอ็ม"HAXMHAXMHAXM"[ 168 ]โครงการถูกยกเลิกแล้ว
อินเทล เคจีที (ทรัสตี)"EVMMEVMMEVMM"[ 169 ]เฉพาะในสาขา "trusty" ของ KGT เท่านั้น ซึ่งใช้สำหรับการแจกจ่าย Trusty OS สำหรับสถาปัตยกรรม Intel x86 ( ไฟล์เก็บถาวร )

(KGT ยังส่งคืนลายเซ็นในCPUIDลีฟที่ 3 ด้วย: ECX= 0x4D4D5645 "EVMM"และ EDX= 0x43544E49 "INTC")

ยูนิซิสเอส-พาร์"UnisysSpar64"[ 170 ]
ล็อคฮีด มาร์ติน แอลเอ็มเอชเอส"SRESRESRESRE"[ 171 ]

EAX=8000'0000h: ฟังก์ชันขยายสูงสุดที่ใช้งาน

พารามิเตอร์การเรียกใช้สูงสุดจะถูกส่งคืนใน EAX

EBX/ECX/EDX จะส่งคืนสตริงรหัสผู้ผลิต (เหมือนกับ EAX=0) สำหรับซีพียู AMD แต่ไม่ใช่สำหรับซีพียู Intel

EAX=8000'0001h: ข้อมูลโปรเซสเซอร์เพิ่มเติมและบิตคุณสมบัติ

ฟังก์ชันนี้จะส่งคืนข้อมูลฟีเจอร์แฟล็กเพิ่มเติมในรูปแบบ EDX และ ECX สำหรับโปรเซสเซอร์ AMD ฟังก์ชันนี้ยังส่งคืนลายเซ็น CPU ในรูปแบบ EAX และตัวระบุแบรนด์ในรูปแบบ EBX ด้วย

ลายเซ็นที่ส่งคืนใน EAX สำหรับโปรเซสเซอร์ AMD ส่วนใหญ่จะเหมือนกับลายเซ็นที่ส่งคืนใน EAX สำหรับEAX=1ลีฟ (ข้อยกเว้นคือ ตระกูลโปรเซสเซอร์ AMD K6และAMD K7ซึ่งส่วน "Family" ของลายเซ็นจะแตกต่างกันระหว่างลีฟ1กับลีฟ80000001: ลีฟ1ส่งคืน5สำหรับ K6 และ6สำหรับ K7 ในขณะที่ลีฟ80000001ส่งคืน6สำหรับ K6 และ7สำหรับ K7) [ 172 ]

บิตจำนวนมากในEDX(บิตที่ 0 ถึง 9, 12 ถึง 17, 23 และ 24) เป็นบิตที่ซ้ำกับบิตEDXจากEAX=1ใบไม้ – บิตเหล่านี้ถูกไฮไลต์ด้วยสีเหลืองอ่อน (บิตที่ซ้ำกันเหล่านี้มีอยู่ในซีพียู AMD แต่ไม่มีในซีพียู Intel)

แฟล็กคุณสมบัติของ AMDใน EDX และ ECX มีดังต่อไปนี้: [ 173 ] [ 174 ]

CPUID EAX=8000'0001h: บิตคุณลักษณะใน EDX และ ECX
นิดหน่อยอีดีเอ็กซ์อีซีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0เอฟพียูหน่วยประมวลผลทศลอยx87 ในตัวlahf_lmLAHF/ SAHFในโหมดยาว0
1วีเอ็มอีส่วนขยายโหมดเสมือน (VIF)cmp_legacyไฮเปอร์เธรดดิ้งไม่ถูกต้อง1
2เดอส่วนขยายการดีบัก ( CR4บิต 3)สวีเอ็มเครื่องเสมือนที่ปลอดภัย2
3พีเอสอีส่วนขยายขนาดหน้าเอ็กซ์ตาปิกพื้นที่APICที่ขยายเพิ่มเติม3
4ทีเอสซีตัวนับเวลาcr8_legacyCR8ในโหมด 32 บิต4
5ม.ส.รีจิสเตอร์เฉพาะรุ่นabm/lzcntการจัดการบิตขั้นสูง และ)(LZCNTPOPCNT5
6paeส่วนขยายที่อยู่ทางกายภาพsse4aเอสเอสอี4เอ6
7เอ็มซีข้อผิดพลาดในการตรวจสอบเครื่องจักรการเยื้องแนวโหมดSSEที่ไม่ตรงแนว7
8ซีเอ็กซ์8CMPXCHG8Bคำสั่ง ( เปรียบเทียบและสลับ )3dnowprefetchPREFETCHและPREFETCHWคำแนะนำ8
9อะพิคตัวควบคุมการขัดจังหวะแบบโปรแกรมได้ขั้นสูงในตัวosvwวิธีแก้ปัญหาที่มองเห็นได้บนระบบปฏิบัติการ9
10(syscall) [ a ]( SYSCALL/ SYSRET, เฉพาะ K6 เท่านั้น)ไอบีเอสการสุ่มตัวอย่างตามคำแนะนำ10
11syscall [ b ]SYSCALLและSYSRETคำแนะนำxop [ c ]ชุดคำสั่ง XOP11
12เอ็มทีอาร์อาร์รีจิสเตอร์ช่วงประเภทหน่วยความจำสกินอิทSKINITและSTGIคำแนะนำ12
13พีจีเอบิตเปิดใช้งานทั่วโลกของหน้าในCR4ดับเบิลยูดีทีตัวจับเวลาเฝ้าระวัง13
14เอ็มซีเอสถาปัตยกรรมตรวจสอบเครื่องจักร(tbm0)(การสนับสนุนคำสั่ง TBM0) [ d ]14
15ซีเอ็มโอวีการเคลื่อนไหวแบบมีเงื่อนไขและFCMOVคำแนะนำแอลดับเบิลยูพีการกำหนดโปรไฟล์น้ำหนักเบา[ 182 ]15
16แพท[อี]ตารางคุณลักษณะหน้าเอฟเอ็มเอ4คำสั่งคูณและบวกแบบรวม 4 ตัวดำเนินการ16
17พีเอสอี36ส่วนขยายขนาดหน้า 36 บิตทีซีส่วนขยายแคชการแปล17
18(เช่น)(โปรเซสเซอร์รองรับ ECC; เฉพาะ K7 เท่านั้น) [ f ](cvt16)(รูปแบบคำนำหน้า XOP ของคำสั่งแปลง FP16↔FP32 VCVTPS2PHและVCVTPH2PS ) [ g ]18
19อีซีซีการระบุแบรนด์ CPU " Athlon MP " / " Sempron " [ h ]nodeid_msrNodeID MSR ( C001_100C) [ 189 ]19
20เอ็นเอ็กซ์บิต NX (บิตห้ามเรียกใช้งานตารางเพจ)(ที่สงวนไว้)20
21(เซม)? [ฉัน]ทีบีเอ็มการจัดการบิตท้าย21
22มมxเอ็กซ์MMX ส่วนขยาย (ส่วนย่อยที่ไม่ใช่ XMM ของSSE1 )โทโปเอ็กซ์ทส่วนขยายโทโพโลยี (ใบ CPUID 80000001Dและ80000001E)22
23มมมxคำแนะนำMMXเพอร์ฟคทร์_คอร์ส่วนขยายตัวนับประสิทธิภาพหลัก23
24fxsr [ e ]FXSAVEFXRSTORคำแนะนำ, CR4 บิต 9perfctr_nbส่วนขยายตัวนับประสิทธิภาพNorthbridge24
25fxsr_optFXSAVE/ FXRSTORการปรับปรุงประสิทธิภาพ(สตรีมเพอร์ฟมอน)(สถาปัตยกรรมมอนิเตอร์ประสิทธิภาพการสตรีม) [ j ]25
26พีดีพี1จีบีกิกะไบต์เพจdbxการขยายจุดแบ่งข้อมูล26
27rdtscpRDTSCPคำแนะนำเพอร์ฟท์สตัวนับเวลาการแสดงผล (PTSC)27
28(rex32) [ k ]( คำนำหน้า REXใช้ได้ในโหมด 32 บิต; เฉพาะ K8 รุ่นแรก เท่านั้น) [ l ]pcx_l2i/ pcx_l3
  • AMD Fam 15h/16h ( Jaguar / Puma ): ส่วนขยายตัวนับประสิทธิภาพ L2I
  • AMD Fam ≥17h ( Zen ): ส่วนขยายตัวนับประสิทธิภาพ L3
28
29แอลเอ็มโหมดระยะยาว ( x86-64 )มอนิเตอร์เอ็กซ์MONITORXและMWAITXคำแนะนำ29
303dnowext3DNow! เวอร์ชันขยายที่อยู่_มาสก์_ส่วนขยายการขยายมาสก์แอดเดรสเป็น 32 บิตสำหรับเบรกพอยต์คำสั่ง30
313dnow3DNow!(สงวนสิทธิ์) []31
  1. การใช้บิต EDX 10 เพื่อระบุการสนับสนุนสำหรับSYSCALL/SYSRETนั้นใช้ได้เฉพาะกับAuthenticAMD ซีพียู ตระกูล 5รุ่น 7 ( AMD K6 , 250nm "Little Foot") เท่านั้น สำหรับโปรเซสเซอร์อื่นๆ ควรใช้บิต EDX 11 แทน คำสั่งเหล่านี้ได้รับการแนะนำครั้งแรกในรุ่น 7 [ 175 ] — บิต CPUID เพื่อระบุการสนับสนุนถูกย้าย [ 176 ]ไปยังบิต EDX 11 ตั้งแต่รุ่น 8 ( AMD K6-2 ) เป็นต้นไป

    เวอร์ชันที่SYSCALLมีอยู่ใน Model 7 (ระบุโดยบิต EDX 10) ไม่เข้ากันอย่างสมบูรณ์กับเวอร์ชันที่SYSCALLมีอยู่ใน CPU รุ่น 8 และรุ่นต่อๆ ไป (ระบุโดยบิต EDX 11) ในโปรเซสเซอร์รุ่นหลังๆ (เวอร์ชัน Model 7 ไม่อนุญาตให้ใช้งานIRETหลังจากนั้นSYSCALLในขณะที่เวอร์ชันรุ่นหลังๆ อนุญาต) [ 177 ]

  2. บนซีพียู Intel บิต CPUID สำหรับSYSCALL/SYSRETจะถูกตั้งค่าเฉพาะเมื่อCPUIDคำสั่งถูกดำเนินการในโหมด 64 บิต เท่านั้น [ 178 ]
  3. ข้อเสนอเริ่มต้นของ AMD สำหรับ ส่วนขยายชุดคำสั่ง SSE5ระบุบิต ECX 11 เป็นบิตคุณลักษณะสำหรับ SSE5 [ 179 ]เมื่อ AMD ละทิ้งข้อเสนอ SSE5 และหันมาใช้ XOP แทน บิต ECX 11 จึงถูกนำมาใช้ใหม่เป็นบิตคุณลักษณะสำหรับ XOP
  4. บิต ECX 14 (เช่น TBM0) ได้รับการระบุไว้โดย sandpile.org [ 180 ]และได้รับการยอมรับโดย HWiNFO 8.24 แต่ไม่ได้ตั้งค่าในโปรเซสเซอร์ที่รู้จักใด ๆ หรือระบุไว้ในเอกสาร AMD สาธารณะที่รู้จักใด ๆ การเข้ารหัสคำสั่ง TBM0 ยังได้รับการระบุไว้โดย sandpile.org อีกด้วย [ 181 ]
  5. 1 2บนโปรเซสเซอร์บางตัว − Cyrix MediaGXm , [ 183 ] Geodeหลายตัว(NatSemi Geode GXm, GXLV, GX1; AMD Geode GX1 [ 184 ] ) และ Transmeta Crusoe [ 185 ] (CyrixInstead/Geode by NSC/GenuineTMx86, ทั้งหมด Family 5 Model 4) — บิต EDX 16 และ 24 มีความหมายที่แตกต่างกัน:
    • FCMOVบิต 16: รองรับการย้ายเงื่อนไขแบบจุดลอยตัว ( )
    • บิตที่ 24: รองรับคำสั่งCyrix EMMI ( MMX แบบขยายCyrixInstead ) (คำสั่ง EMMI ยังมีอยู่ใน โปรเซสเซอร์ตระกูล 6 เช่น6x86MXและ MII แม้ว่าจะไม่ได้ตั้งค่าบิตนี้ก็ตาม)
  6. บิต EDX 18 ถูกตั้งค่าไว้ใน AMD Athlon "Thunderbird" [ 186 ]และ Duron "Spitfire"/"Morgan" บางรุ่น แต่ไม่ได้ระบุไว้ในเอกสารสาธารณะของ AMD ใดๆ Sandpile.org อธิบายบิตนี้ว่าเป็นบิตคุณลักษณะ ECC [ 180 ] [ 187 ]
  7. บิต ECX 18 ถูกระบุว่าเป็น CVT16 ในการแก้ไข 3.03 ของ AMD APM vol6 [ 188 ]แต่ถูกลบออกจากการแก้ไข 3.04 และเวอร์ชันต่อมา ไม่มีการตั้งค่าใน CPU ที่รู้จักใดๆ ส่วนขยาย Intel F16C (ระบุโดย CPUID.(EAX=1):ECX[29] ) ซึ่งกำหนด รูปแบบ การเข้ารหัส VEXของคำสั่งเหล่านี้ ถูกนำมาใช้โดยทั้ง Intel และ AMD ในภายหลัง
  8. บิต EDX 19 ใช้สำหรับการระบุแบรนด์ CPU บนAuthenticAMD โปรเซสเซอร์ ตระกูล 6เท่านั้น - บิตนี้ เมื่อรวมกับลายเซ็นโปรเซสเซอร์และ ความเร็ว FSBจะใช้เพื่อระบุโปรเซสเซอร์ว่าสามารถประมวลผลแบบมัลติโปรเซสเซอร์ได้หรือมีชื่อแบรนด์ Sempron [ 172 ]
  9. "SEM" ถูกระบุว่าเป็นบิตคุณสมบัติขยาย CPUID ในเอกสาร AMD SimNow โดยไม่มีคำอธิบายเพิ่มเติม [ 190 ]บิตนี้ไม่ได้ถูกตั้งค่าในโปรเซสเซอร์ที่รู้จักใดๆ และ SimNow ก็ไม่ได้จำลองบิตนี้เช่นกัน
  10. บิต ECX 25 ระบุว่าเป็น StreamPerfMon ใน AMD APM เวอร์ชัน 3.20 [ 191 ]เท่านั้น โดยระบุว่าสงวนไว้ในเวอร์ชันที่ใหม่กว่า บิตนี้ตั้งค่าไว้เฉพาะใน CPU Excavator และ Steamroller เท่านั้น
  11. นอกจากจะถูกใช้เป็นบิตคุณสมบัติ REX32 บนโปรเซสเซอร์ AMD K8 บางรุ่นแล้ว บิต EDX 28 ยังถูกตั้งค่าบนโปรเซสเซอร์ VIA Nehemiah บางรุ่นด้วยวัตถุประสงค์ที่ไม่ทราบแน่ชัด [ 192 ]
  12. คุณสมบัติ REX32 ได้รับการระบุไว้โดย sandpile.org [ 193 ] [ 194 ]และอธิบายไว้ในสิทธิบัตรเก่า [ 195 ]มันไม่ได้ระบุไว้ในเอกสารสาธารณะของ AMD ที่รู้จัก และมีอยู่ใน AMD K8 เวอร์ชันแรกเท่านั้น
  13. บิต ECX 31 ไม่ได้ระบุไว้ในเอกสารสาธารณะของ AMD ที่รู้จัก แต่พบว่ามีการตั้งค่าไว้ใน AMD 4700S Desktop Kit [ 196 ]

EAX=8000'0002h,8000'0003h,8000'0004h: สตริงยี่ห้อโปรเซสเซอร์

สิ่งเหล่านี้จะส่งคืนสตริงแบรนด์โปรเซสเซอร์ใน EAX, EBX, ECX และ EDX CPUIDจะต้องออกคำสั่งพร้อมกับพารามิเตอร์แต่ละตัวตามลำดับเพื่อให้ได้สตริงแบรนด์โปรเซสเซอร์ ASCII 48 ไบต์ทั้งหมด[ 197 ]จำเป็นต้องตรวจสอบว่าคุณลักษณะนั้นมีอยู่ใน CPU หรือไม่ โดยออกคำสั่งCPUIDก่อนEAX = 80000000hและตรวจสอบว่าค่าที่ส่งคืนไม่น้อย80000004hกว่า

เอกสารของ Intel/AMD ระบุว่าสตริงต้องลงท้ายด้วยค่าว่างอย่างไรก็ตาม นี่ไม่ใช่กรณีเสมอไป (เช่น DM&P Vortex86DX3และ AMD Ryzen 7 6800HSเป็นที่ทราบกันดีว่าส่งคืนสตริงแบรนด์ที่ไม่ลงท้ายด้วยค่าว่างในใบ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 );ส่งคืนค่า0 ; }

บนโปรเซสเซอร์ AMD ตั้งแต่Athlon 180nmเป็นต้นไป ( AuthenticAMDตระกูล 6 รุ่น 2 และรุ่นต่อมา) สามารถแก้ไขสตริงแบรนด์โปรเซสเซอร์ที่ส่งคืนโดย CPUID leaves 80000002hได้80000004hโดยใช้WRMSRคำสั่งเขียนสตริงทดแทนขนาด 48 ไบต์ลงใน MSRs [C0010030h 172 C0010035h] [ 200 ]นอกจากนี้ยังสามารถทำได้บน AMD Geode GX/LX แม้ว่าจะใช้MSRs ก็ตาม[ 201 ]300Ah300Fh

สตริงที่ส่งคืนโดย CPUID 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 ]

ในบางกรณี การระบุผู้ผลิต CPU จำเป็นต้องตรวจสอบไม่เพียงแค่ Vendor ID ใน CPUID leaf 0 และ CPU signature ใน leaf 1 เท่านั้น แต่ยังต้องตรวจสอบ Processor Brand String ใน leaves 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 ]ซึ่งทั้งสองระบุตัวเองว่าเป็นCentaurHaulsFamily 6 Model 0Fh Stepping 0Eh สามารถแยกแยะได้ด้วยวิธีนี้)
  • โปรแกรมจำลอง Rosetta 2 x86 ของ Apple ซึ่งระบุตัวเองว่าเป็นGenuineIntelFamily 6 สามารถแยกแยะออกจากโปรเซสเซอร์ Intel Xeon ที่กำลังจำลองได้โดยการมีอยู่ของสตริงย่อยVirtualAppleในสตริงแบรนด์ของ Rosetta 2 [ 19 ]
  • โปรแกรมจำลอง x86 บน ARM ของ Microsoft ซึ่งในโหมด 64 บิตจะระบุตัวเองเป็นAuthenticAMDFamily 0Fh สามารถแยกแยะออกจากโปรเซสเซอร์ AMD ที่กำลังจำลองได้โดยการมีอยู่ของสตริงย่อยVirtual CPUในสตริงแบรนด์ของโปรแกรมจำลอง[ 19 ]

EAX=8000'0005h: ตัวระบุแคช L1 และ TLB

ข้อมูลนี้ให้รายละเอียดเกี่ยวกับแคชระดับ 1 และคุณลักษณะ TLBของโปรเซสเซอร์ใน EAX, EBX, ECX และ EDX ดังต่อไปนี้: [ a ]

  • EAX: ข้อมูลเกี่ยวกับ L1 hugepage TLBs (TLBs ที่เก็บรายการที่สอดคล้องกับหน้า 2M/4M) [ b ]
  • EBX: ข้อมูลเกี่ยวกับ L1 small-page TLBs (TLBs ที่เก็บรายการที่สอดคล้องกับหน้า 4K)
  • ECX: ข้อมูลเกี่ยวกับแคชข้อมูล L1
  • EDX: ข้อมูลเกี่ยวกับแคชคำสั่ง L1
CPUID EAX=8000'0005h: ข้อมูลแคช L1/TLB ใน EAX, EBX, ECX, EDX
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
7:0จำนวนรายการ TLB คำสั่ง[ c ]ขนาดของแคชไลน์ในหน่วยไบต์7:0
15:8การเชื่อมโยงคำสั่ง TLB [ d ]จำนวนบรรทัดแคชต่อแท็ก15:8
23:16จำนวนรายการ TLB ข้อมูล[ c ]การเชื่อมโยงแคช[ d ]23:16
31:24การเชื่อมโยง TLB ของข้อมูล[ d ]ขนาดแคชในหน่วยกิโลไบต์31:24
  1. ในซีพียู Cyrix และ Geode รุ่นเก่าบางรุ่น (โดยเฉพาะCyrixInsteadFamilyGeode by NSC5 รุ่น 4 เท่านั้น) ลีฟ80000005hมีอยู่แต่มีรูปแบบที่แตกต่างไปโดยสิ้นเชิง คล้ายกับลีฟ 2 [ 209 ]
  2. บนโปรเซสเซอร์ที่สามารถจัดการเฉพาะเพจขนาดเล็กใน TLB ของตนได้เท่านั้น ใบนี้จะส่งคืนค่า 0 ใน EAX (บนโปรเซสเซอร์ดังกล่าว ซึ่งรวมถึง AMD K6 และ Transmeta Crusoe เป็นต้น รายการ hugepage ในตารางเพจจะถูกแบ่งออกเป็นเพจขนาด 4K ตามความจำเป็นเมื่อเข้าสู่ TLB)บนโปรเซสเซอร์บางตัว เช่น VIA Cyrix III "Samuel" [ 210 ]ใบนี้จะส่งคืนค่า0x80000005ใน EAX ซึ่งมีความหมายเช่นเดียวกับ EAX=0 กล่าวคือไม่มี TLB hugepage
  3. 1 2บนซีพียู Transmeta ค่านี้FFhใช้เพื่อระบุ TLB ที่มี 256 รายการ
  4. 1 2 3สำหรับฟิลด์ความสัมพันธ์ของใบไม้80000005hจะใช้ค่าต่อไปนี้:
    ค่าความหมาย
    0(ที่สงวนไว้)
    1แมปโดยตรง
    2 ถึงFEhเซตแบบเชื่อมโยง N ทาง (ฟิลด์เข้ารหัส N)
    FFhการเชื่อมโยงอย่างสมบูรณ์

EAX=8000'0006h: คุณสมบัติแคช 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 B, ประเภทการเชื่อมโยง: %d, ขนาดแคช: %d KiB. \n " , lsize , assoc , cache );ส่งคืนค่า0 ; }

EAX=8000'0007h: ข้อมูลการจัดการพลังงานโปรเซสเซอร์และความสามารถของ RAS

ฟังก์ชันนี้ให้ข้อมูลเกี่ยวกับการจัดการพลังงาน การรายงานพลังงาน และความสามารถด้าน RAS ( ความน่าเชื่อถือ ความพร้อมใช้งาน และความสามารถในการให้บริการ ) ของ CPU

CPUID EAX=8000'0007h: คุณสมบัติ RAS ใน EBX และคุณสมบัติการจัดการพลังงานใน EDX
นิดหน่อยอีบีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0MCAOverflowRecovการสนับสนุนการกู้คืนข้อมูลล้นของ MCA (Machine Check Architecture)ทีเอสเซ็นเซอร์วัดอุณหภูมิ0
1ความช่วยเหลือความสามารถในการกักเก็บและกู้คืนข้อผิดพลาดที่ไม่สามารถแก้ไขได้ของซอฟต์แวร์เอฟไอดีการควบคุมรหัสความถี่1
2เอชดับเบิลยูการรองรับการตรวจสอบฮาร์ดแวร์ (MSRs C001_10C0ถึงC001_10DF)วิดีโอการควบคุมรหัสแรงดันไฟฟ้า2
3เอ็มซีเอที่ปรับขนาดได้รองรับ MCA ที่ปรับขนาดได้ทีทีพีเทอร์มทริป3
4พีเอฟเอชการจัดการข้อผิดพลาดแบบ Platform First [ 211 ]ท.รองรับการควบคุมอุณหภูมิด้วยฮาร์ดแวร์ (HTC)4
5แอลดับเบิลยูเอสเอ็มไอSMI น้ำหนักเบา[ 211 ]เอสทีซีรองรับการควบคุมความร้อนด้วยซอฟต์แวร์ (STC) [ 212 ]5
6(ที่สงวนไว้)ขั้นตอน 100MHz การควบคุมตัวคูณ100 เมกะเฮิร์ตซ์6
7(ที่สงวนไว้)เอชดับบลิวพีสเตทการควบคุมสถานะ P ของฮาร์ดแวร์ (MSRs C001_0061ถึงC001_0063)7
8(ที่สงวนไว้)TscInvariantTSC ที่ไม่เปลี่ยนแปลง — อัตรา TSC ( Time Stamp Counter ) รับประกันว่าจะไม่เปลี่ยนแปลงในทุกสถานะ P, สถานะ C และการเปลี่ยนสถานะหยุดการให้สิทธิ์8
9(ที่สงวนไว้)ซีพีบีการเพิ่มประสิทธิภาพหลัก9
10(ที่สงวนไว้)เอฟเอฟเฟรคโรอินเทอร์เฟซความถี่ที่มีประสิทธิภาพแบบอ่านอย่างเดียว (MSR C000_00E7และC000_00E8)10
11(ที่สงวนไว้)อินเทอร์เฟซ ProcFeedbackรองรับอินเทอร์เฟซการตอบรับโปรเซสเซอร์11
12(ที่สงวนไว้)การรายงาน ProcPowerรองรับอินเทอร์เฟซรายงานพลังงานโปรเซสเซอร์12
13(ที่สงวนไว้)สแตนด์บายแบบเชื่อมต่อสแตนด์บายแบบเชื่อมต่อ[ 213 ]13
14(ที่สงวนไว้)ราพพีแอลขีดจำกัดกำลังเฉลี่ยขณะวิ่ง[ 213 ]14
15(ที่สงวนไว้)ฟาสต์ซีพีพีซีรองรับ CPPC (Collaborative Processor Performance Control) อย่างรวดเร็ว[ 213 ]15
16(ที่สงวนไว้)CppcPerfPriorityลำดับความสำคัญด้านประสิทธิภาพของ CPPC [ 214 ]16
26:17 (ที่สงวนไว้)(ที่สงวนไว้)26:17 
27(ที่สงวนไว้)(สงวนไว้) []27
31:28 (ที่สงวนไว้)(ที่สงวนไว้)31:28 
  1. การแก้ไขครั้งที่ 1.00 ของข้อกำหนดลำดับความสำคัญด้านประสิทธิภาพของ CPPC ของ AMD ระบุว่าคุณสมบัตินี้ถูกระบุโดยบิตที่ 27 ของ EDX [ 215 ] - ซึ่งได้รับการแก้ไขเป็นบิตที่ 16 ในการแก้ไขครั้งต่อมา [ 214 ]

CPUID EAX=8000'0007h: ข้อมูลการตอบรับโปรเซสเซอร์ใน EAX และข้อมูลอินเทอร์เฟซการตรวจสอบพลังงานใน ECX
บิตอีเอเอ็กซ์อีซีเอ็กซ์บิต
สั้นคุณสมบัติสั้นคุณสมบัติ
7:0จำนวนจอภาพจำนวนคู่ MSR ของ Processor Feedback ที่มีอยู่ เริ่มตั้งแต่ MSR C001_0080เป็นต้นไป[ 216 ]อัตราส่วนเวลาการสุ่มตัวอย่าง CPU Powerอัตราส่วนของช่วงเวลาการสุ่มตัวอย่างของตัวสะสมพลังงานของหน่วยประมวลผลต่อช่วงเวลาของตัวนับ TSC7:0
15:8เวอร์ชั่นความสามารถในการป้อนกลับของโปรเซสเซอร์ เวอร์ชัน15:8
31:16เวลาห่อสูงสุดระยะเวลาสูงสุดระหว่างการอ่าน (ในหน่วยมิลลิวินาที) ที่ซอฟต์แวร์ควรใช้เพื่อหลีกเลี่ยงการวนซ้ำสองครั้ง31:16

EAX=8000'0008h: ขนาดที่อยู่เสมือนและที่อยู่จริง

CPUID EAX=8000'0008h: บิตคุณสมบัติใน EBX
นิดหน่อยอีบีเอ็กซ์
สั้นคุณสมบัติ
0คลอซีโร่CLZEROคำแนะนำ
1อาจารย์ที่เกษียณแล้วจำนวนคำสั่งที่เกษียณ MSR ( C000_00E9h) รองรับ
2xrstor_fp_errXRSTORแก้ไขข้อผิดพลาด FP
3อินวีแอลพีจีบีINVLPGBและTLBSYNCคำแนะนำ
4rdpruRDPRUคำแนะนำ
5(xotext)( PlayStation 5 : หน่วยความจำแบบเรียกใช้งานเท่านั้น) [ 217 ] [ a ]
6เอ็มบีการบังคับใช้แบนด์วิดท์หน่วยความจำ
7(สงวนไว้) []
8เอ็มคอมมิตMCOMMITคำแนะนำ
9wbnoinvdWBNOINVDคำแนะนำ
10LBR_EXT_V1ส่วนขยาย LBR v1 [ 211 ]
11(สงวนไว้) []
12ไอบีพีบีตัวกั้นการทำนายสาขาทางอ้อม (ดำเนินการโดยการเขียน 1 ลงในบิต 0 ของPRED_CMD(MSR 049h))
13wbinvd_intWBINVDและWBNOINVDสามารถถูกขัดจังหวะได้
14ไอบีอาร์เอสการเก็งกำไรแบบจำกัดสาขาทางอ้อม
15เอสทีบีพีโหมดการทำนายสาขาทางอ้อมแบบเธรดเดียว
16IbrsAlwaysOnโหมด IBRS ช่วยเพิ่มประสิทธิภาพการทำงานและควรเปิดใช้งานไว้ตลอดเวลา
17StibpAlwaysOnโหมด STIBP มีประสิทธิภาพการทำงานที่ดีขึ้นและควรเปิดใช้งานไว้ตลอดเวลา
18ibrs_preferredIBRS ดีกว่าซอฟต์แวร์
19การป้องกันโหมดเดียวกันของ ibrsIBRS ให้การป้องกันแบบ Same Mode
20no_efer_lmsleEFER.LMSLEไม่ได้รับการสนับสนุน[]
21invlpgb_nestedINVLPGBรองรับหน้าเว็บแบบซ้อนกัน
22(LBR_TSX)(ข้อมูล LBR TSX) [ 211 ]
23พินหมายเลขสินค้าคงคลังโปรเซสเซอร์ที่ได้รับการป้องกัน -

PPIN_CTL( C001_02F0) และPPIN( C001_02F1) MSR มีอยู่[ 213 ]

24เอสเอสบีดีการปิดใช้งานการข้ามร้านค้าเก็งกำไร
25ssbd_legacyการข้ามร้านค้าเก็งกำไร ปิดใช้งานระบบเดิม
26ssbd_noไม่จำเป็นต้องปิดใช้งานการข้ามร้านค้าแบบคาดการณ์ล่วงหน้า
27ซีพีพีซีการควบคุมประสิทธิภาพโปรเซสเซอร์แบบร่วมมือ
28psfdการปิดใช้งานการส่งต่อข้อมูลแบบคาดการณ์ล่วงหน้า
29btc_noความสับสนของประเภทสาขา: โปรเซสเซอร์ไม่ได้รับผลกระทบ
30ไอบีพีบี_เรทIBPB (ดูบิตที่ 12) ยังล้างตัวทำนายที่อยู่ส่งคืนด้วย
31การสุ่มตัวอย่างสาขาการสนับสนุนการสุ่มตัวอย่างสาขา[ 220 ]
CPUID EAX=8000'0008h: ฟิลด์ขนาดและช่วงใน EAX, ECX, EDX
บิตอีเอเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
7:0จำนวนบิตที่อยู่ทางกายภาพจำนวนเธรดทางกายภาพในโปรเซสเซอร์ (ลบ 1)จำนวนหน้าสูงสุดสำหรับINVLPGBคำแนะนำ7:0
11:8จำนวนบิตแอดเดรสเชิงเส้น(ที่สงวนไว้)11:8
15:12ขนาด APIC ID15:12
17:16ขนาดที่อยู่ทางกายภาพของแขก[ c ]ขนาดตัวนับการประทับเวลาประสิทธิภาพค่า ECX สูงสุดที่RDPRUคำสั่ง รับรู้17:16
23:18(ที่สงวนไว้)23:18
31:24(ที่สงวนไว้)31:24
  1. 1 2 3ณ เดือนมิถุนายน พ.ศ. 2568 บิตที่ 5, 7 และ 11 ของ CPUID.(EAX=8000_0008):EBXไม่ได้ระบุไว้ในเอกสารสาธารณะของ AMD ที่รู้จัก แต่พบว่ามีการตั้งค่าไว้ในโปรเซสเซอร์ AMD 4700S Desktop Kit [ 218 ]
  2. คุณสมบัติ LMSLE (Long Mode Segment Limit Enable) ไม่มีแฟล็ก CPUID ของตัวเอง และตรวจพบโดยการตรวจสอบตระกูลและรุ่นของ CPU มีการแนะนำในAuthenticAMDตระกูล 0Fh รุ่น 14h [ 219 ] (Athlon64/Opteron 90nm) และมีอยู่ใน CPU AMD รุ่นหลังทั้งหมด ยกเว้นรุ่นที่มีแฟล็ก 'no_efer_lmsle' ตั้งค่าไว้
  3. ค่า 0 บ่งชี้ว่า "ขนาดที่อยู่ทางกายภาพของแขก" เท่ากับ "จำนวนบิตที่อยู่ทางกายภาพ" ที่ระบุไว้ใน EAX[7:0]

EAX=8000'000Ah: คุณสมบัติ SVM

ส่วนนี้จะแสดงข้อมูลเกี่ยวกับคุณสมบัติของ AMD SVM ( Secure Virtual Machine ) ใน EAX, EBX, ECX และ EDX

CPUID EAX=8000'000Ah: ข้อมูล SVM ใน EAX, EBX และ ECX
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีซีเอ็กซ์บิต
2:0หมายเลขการแก้ไข SVMจำนวน ASID (ตัวระบุพื้นที่แอดเดรส) ที่ใช้งานได้(ที่สงวนไว้)2:0
3การกรองกิจกรรม PMC ของแขก[ 221 ]3
4การบันทึกการแก้ไขหน้า[ 222 ]4
5(ที่สงวนไว้)5
6x2AVIC_EXT (รองรับ vCPU จำนวน 4096 ตัวในโหมด x2AVIC)6
7(ที่สงวนไว้)7
8(ไฮเปอร์ไวเซอร์) []8
31:9(ที่สงวนไว้)31:9
CPUID EAX=8000'000Ah: แฟล็กคุณสมบัติ SVM ใน EDX
นิดหน่อยอีดีเอ็กซ์
สั้นคุณสมบัติ
0NPการจัดทำดัชนีเวอร์ชวลไลเซชันอย่างรวดเร็ว ( การแบ่งหน้าแบบซ้อน )
1แอลบีอาร์ทีอาร์ทการจำลองเสมือน LBR (Last Branch Records)
2เอสวีเอ็มแอลSVM-Lock
3เอ็นอาร์ไอพีเอสรองรับการบันทึก nRIP (ตัวชี้คำสั่งลำดับถัดไป) บน #VMEXIT
4TscRateMsrการควบคุมอัตรา TSCแบบ MSR (MSR C000_0104h)
5วีเอ็มซีบีคลีนรองรับบิตสะอาดของ VMCB (Virtual Machine Control Block)
6ฟลัชบายอาซิดเหตุการณ์การล้าง TLB (เช่น การเขียน CR3 , การสลับ CR4.PGE ) จะล้างเฉพาะรายการ TLB ของ ASID (รหัสพื้นที่แอดเดรส) ปัจจุบันเท่านั้น
7ดีโคเดสซิสต์รองรับการถอดรหัส
8พีเอ็มซีไวร์ทการจำลองเสมือน PMC (Performance Monitoring Counters)
9(SseIsa10Compat) [ b ](ที่สงวนไว้)
10ตัวกรองหยุดชั่วคราวPAUSEรองรับตัวกรองการดักจับ
11อีเอ็มพีแพทช์ไมโครโค้ดที่เข้ารหัส[ 211 ]
12เกณฑ์ตัวกรองหยุด ชั่วคราวPAUSEรองรับค่าเกณฑ์จำนวนรอบการกรอง
13เอวิครองรับ AMD Advanced Virtualized Interrupt Controller
14(ที่สงวนไว้)
15VMSAVEvirtVMSAVEและVMLOADเวอร์ชวลไลเซชัน
16วีจีเอฟการจำลองเสมือน Global Interrupt Flag (GIF)
17จีเม็ตกับดักการทำงานในโหมดผู้เยี่ยมชม
18x2AVICรองรับโหมด x2APIC สำหรับ AVIC
19SSSCheckข้อจำกัดของShadow Stackของ SVM Supervisor
20สเปคคอร์ทร์ลSPEC_CTRLเวอร์ชวลไลเซชัน (MSR 2E0h)
21ROGPTรองรับตารางหน้าผู้เยี่ยมชมแบบอ่านอย่างเดียว
22(ที่สงวนไว้)
23HOST_MCE_OVERRIDE​โหมด ผู้เยี่ยมชม- ตรวจสอบข้อยกเว้นเมื่อโฮสต์CR4.MCE=1และผู้เยี่ยมชมCR4.MCE=0ทำให้เกิดการดักจับแทนการปิดระบบ
24ทลบิคท์ลINVLPGB/ TLBSYNCเปิดใช้งานไฮเปอร์ไวเซอร์ใน VMCB และTLBSYNCรองรับการดักจับ
25วีเอ็นเอ็มไอการจำลองเสมือน NMI ( Non-Maskable interrupt )
26ไอบีเอสเวอร์ทการจำลองเสมือน IBS (Instruction-Based Sampling)
27การเปลี่ยนแปลง ค่าชดเชยระดับภายนอกพฤติกรรมการอ่าน/เขียนข้อผิดพลาดสำหรับออฟเซ็ต LVT ที่ขยาย (ที่อยู่ APIC 0x500-0x530) เปลี่ยนเป็น อ่านอนุญาต เขียน #VMEXIT [ 229 ]
28VmcbAddr ChkChgการเปลี่ยนแปลงการตรวจสอบที่อยู่ VMCB [ 229 ]
29เกณฑ์ BusLockเกณฑ์การล็อกบัส
30สกัดกั้น IdleHltการดัก จับ Idle HLT ( HLTคำสั่งที่ถูกดำเนินการในขณะที่ไม่มีการขัดจังหวะเสมือนรออยู่)
31การสกัดกั้นการปิดระบบขั้นสูงการสนับสนุน EXITINFO1 ในการดักจับการปิดระบบ และการดักจับการปิดระบบแบบซ้อนกันจะส่งผลให้การปิดระบบไม่สามารถดักจับได้[ 230 ]
  1. เอกสาร "Pacifica" ฉบับแก้ไขเบื้องต้นของ AMD ระบุว่าบิต EAX 8 เป็นบิตที่มีค่าเป็นศูนย์เสมอ ซึ่งสงวนไว้สำหรับการใช้งานไฮเปอร์ไวเซอร์ [ 223 ]

    เอกสาร AMD ฉบับต่อมา เช่น #25481 "ข้อกำหนด CPUID" ฉบับ 2.18 [ 224 ]และฉบับต่อมา ระบุเฉพาะบิตที่สงวนไว้เท่านั้น

    ในเวอร์ชัน 2.30 [ 225 ]และเวอร์ชันต่อมา มีการระบุบิตที่แตกต่างกันไว้สำหรับการใช้งานไฮเปอร์ไวเซอร์: CPUID.(EAX=1):ECX[bit 31]

  2. บิต 9 ของ EDX ปรากฏอยู่ในเอกสารฉบับเก่าบางฉบับของ AMD หมายเลข 25481 "ข้อกำหนด CPUID" และตั้งค่าไว้เฉพาะในCPU AMD Bobcat บางรุ่นเท่านั้น [ 226 ]

    Rev 2.28 ของ #25481 ระบุบิตเป็น "Ssse3Sse5Dis" [ 227 ] - ใน rev 2.34 ระบุว่าถูกลบออกจากสเปคใน rev 2.32 ภายใต้ชื่อ "SseIsa10Compat" [ 228 ]

EAX=8000'001Fh: ความสามารถในการเข้ารหัสหน่วยความจำ

CPUID EAX=8000'001Fh: บิตคุณลักษณะหน่วยความจำที่เข้ารหัสใน EAX
นิดหน่อยอีเอเอ็กซ์
สั้นคุณสมบัติ
0SMEการเข้ารหัสหน่วยความจำที่ปลอดภัย
1SEV/ CSV
  • AMD: การจำลองเสมือนที่เข้ารหัสอย่างปลอดภัย
  • Hygon : การจำลองเสมือนที่ปลอดภัยของจีน (รุ่นที่ 1) [ 231 ]
2PageFlushMSRC001_011EhรองรับPage flush MSR ( )
3SEV-ES/ CSV2  (Hygon)
  • AMD: สถานะการเข้ารหัส SEV
  • Hygon: การจำลองเสมือนที่ปลอดภัยของจีน (รุ่นที่ 2) [ 231 ]
4SEV-SNPSEV Secure Nested Paging
5วีเอ็มพีแอลระดับสิทธิ์ของ VM
6การค้นหา RMPRMPQUERYคำแนะนำที่ได้รับการสนับสนุน
7วีเอ็มพีแอลเอสเอสรองรับVMPL Supervisor shadow stack
8เซฟตี้ทีเอสซีรองรับTSCที่ปลอดภัย
9การจำลองเสมือน TscAuxการจำลองเสมือนของTSC_AUXMSR ( C000_0103) ได้รับการสนับสนุน
10HwEnfCacheCohบังคับใช้ความสอดคล้องของแคชฮาร์ดแวร์ในโดเมนการเข้ารหัส
11โฮสต์ 64 บิตการเรียกใช้งาน SEV Guest อนุญาตเฉพาะจากโฮสต์ 64 บิตเท่านั้น
12การฉีดแบบจำกัดแขกของ SEV-ES สามารถปฏิเสธการแทรกเหตุการณ์ทั้งหมด ยกเว้น #HV (ข้อยกเว้นการแทรกไฮเปอร์ไวเซอร์)
13การฉีดทางเลือกแขก SEV-ES สามารถใช้ฟิลด์ VMCB ที่เข้ารหัสสำหรับการแทรกเหตุการณ์ได้
14ดีบักไวร์ทรองรับการจำลองสถานะการดีบักแบบเต็มรูปแบบสำหรับเครื่องเสมือน SEV-ES และ SEV-SNP
15ป้องกันโฮสต์IBSป้องกันอาการลำไส้แปรปรวนในโฮสต์สำหรับแขก SEV-ES
16ลิ่มเลือดอุดตันในหลอดเลือดดำการเข้ารหัสแบบโปร่งใสเสมือนสำหรับ SEV
17พารามิเตอร์ VmgexitVMGEXITรองรับพารามิเตอร์ (โดยใช้รีจิสเตอร์ RAX)
18เวอร์จิ้นทอมเอ็มเอสอาร์C001_0135รองรับVirtual TOM (top-of-memory) MSR ( )
19IbsVirtGuestCtlการจำลองเสมือน IBS รองรับสำหรับแขก SEV-ES และ SEV-SNP
20PmcVirtGuestCtlระบบเวอร์ชวลไลเซชัน PMC รองรับการใช้งานในเครื่องเสมือน SEV-ES และ SEV-SNP
21การอ่านแบบอ่านอย่างเดียวRMPREADคำแนะนำที่ได้รับการสนับสนุน
22การควบคุมการสกัดกั้นแขกรองรับการควบคุมการดักฟังข้อมูลแขกสำหรับแขก SEV-ES
23เซกเมนต์อาร์เอ็มพีรองรับตารางแมปย้อนกลับ (Reverse-Map Table) แบบแบ่งส่วน
24วีเอ็มเอสเอรีจีโปรทรองรับการป้องกันรีจิสเตอร์ VMSA (VM Save Area)
25การป้องกัน SMTรองรับการป้องกันSMT
26เซฟเอวิครองรับ AVIC ที่ปลอดภัย
27คุณสมบัติ SEV ที่อนุญาตฟิลด์ ALLOWED_SEV_FEATURES_MASK ใน VMCB (ออฟเซ็ต138h) รองรับ
28SVSMComm PageMSRหน้าการสื่อสาร SVSM (Secure VM Service Module [ 232 ] ) MSR ( C001_F000h) รองรับ
29NestedVirt SnpMsrVIRT_RMPUPDATE( C001_F001h) และVIRT_PSMASH( C001_F002h) MSRs รองรับ
30HvInUse WrAllowed / CSV3
  • AMD: อนุญาตให้เขียนข้อมูลไปยังเพจเจอร์ที่เป็นของไฮเปอร์ไวเซอร์ได้เมื่อมีการทำเครื่องหมายว่ากำลังใช้งานอยู่
  • Hygon: การจำลองเสมือนที่ปลอดภัยของจีน (รุ่นที่ 3) [ 231 ]
31IbpbOnEntryIBPB เมื่อเข้าสู่เครื่องเสมือนได้รับการสนับสนุน
CPUID EAX=8000'001Fh: ข้อมูลคุณลักษณะหน่วยความจำที่เข้ารหัสใน EBX, ECX และ EDX
บิตอีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์บิต
5:0ตำแหน่งของ C-bit (บิตเปิดใช้งานการเข้ารหัส) ในรายการตารางเพจค่า ASID สูงสุดที่สามารถใช้สำหรับแขกที่เปิดใช้งาน SEV (จำนวนแขกที่เข้ารหัสสูงสุดที่สามารถรองรับได้พร้อมกัน)ค่า ASID ขั้นต่ำสำหรับแขกที่เปิดใช้งาน SEV แต่ไม่ได้เปิดใช้งาน SEV-ES5:0
11:6การลดความกว้างของแอดเดรสทางกายภาพเมื่อเปิดใช้งานการเข้ารหัสหน่วยความจำ11:6
15:12จำนวน VMPL (ระดับสิทธิ์การใช้งานเครื่องเสมือน) ที่รองรับ15:12
31:16(ที่สงวนไว้)31:16

EAX=8000'0021h: การระบุคุณลักษณะเพิ่มเติม

CPUID EAX=8000'0021h: บิตคุณสมบัติเพิ่มเติมใน EAX และ ECX
นิดหน่อยอีเอเอ็กซ์อีซีเอ็กซ์นิดหน่อย
สั้นคุณสมบัติสั้นคุณสมบัติ
0NoNestedDataBpโปรเซสเซอร์ไม่สนใจจุดหยุดข้อมูลแบบซ้อนกัน(ที่สงวนไว้)0
1FsGsKernelGsBase ไม่ใช่ซีเรียลไลซ์WRMSRถึงFS_BASEและGS_BASEMSRs KernelGSBaseไม่ใช่การจัดลำดับ[ 233 ]TSA_SQ_NOหากตั้งค่าแล้ว CPU จะไม่เสี่ยงต่อTSA-SQ [ 234 ]1
2LFenceAlways SerializingLFENCEการส่งแบบอนุกรมจะเกิดขึ้นเสมอTSA_L1_NOหากตั้งค่าแล้ว CPU จะไม่เสี่ยงต่อTSA-L1 [ 234 ]2
3SmmPgCfgLockรองรับการล็อกการกำหนดค่าเพจจิ้ง SMM(ที่สงวนไว้)3
4(ที่สงวนไว้)(ที่สงวนไว้)4
5VERW_CLEARVERWคำสั่งดังกล่าว เมื่อดำเนินการด้วยตัวดำเนินการหน่วยความจำใน Ring 0 สามารถใช้เพื่อล้างบัฟเฟอร์ข้อมูลไมโครสถาปัตยกรรมเพื่อช่วยลด TSA (Transient Scheduler Attacks) [ 234 ](ที่สงวนไว้)5
6NullSelect ClearsBaseการโหลดตัวเลือกเซ็กเมนต์ว่างจะล้างฐานและขีดจำกัดของรีจิสเตอร์เซ็กเมนต์ปลายทางด้วย(ที่สงวนไว้)6
7ละเว้นที่อยู่ด้านบนรองรับการละเว้นที่อยู่ด้านบน (เวอร์ชัน 1)(ที่สงวนไว้)7
8อัตโนมัติIBRSระบบ IBRS อัตโนมัติ(ที่สงวนไว้)8
9NoSmmCtlMSRSMM_CTLMSR ( C0010116h) ไม่ได้รับการสนับสนุน(ที่สงวนไว้)9
10FSRSREP STOSBรองรับระยะสั้นอย่างรวดเร็ว(ที่สงวนไว้)10
11เอฟเอสอาร์ซีREPE CMPSBรองรับระยะสั้นอย่างรวดเร็ว(ที่สงวนไว้)11
12PMC2Precise เกษียณบิตควบคุมตัวนับประสิทธิภาพ PreciseRetire (บิต MSR C0010002h43) ได้รับการสนับสนุน[ 230 ](ที่สงวนไว้)12
13PrefetchCtlMsrPrefetchControl MSR ( C0000108h) รองรับ(ที่สงวนไว้)13
14L2TlbSizeX32หากมีการตั้งค่า ขนาดของ L2 TLB (leaf 80000006h) จะถูกเข้ารหัสเป็นจำนวนเท่าของ 32(ที่สงวนไว้)14
15AMD_ERMSBโปรเซสเซอร์รองรับการใช้งาน Enhanced REP MOVSBและ ของ AMDREP STOSB(ที่สงวนไว้)15
16OPCODE_0F017_ RECLAIMสงวนรหัสปฏิบัติการ0F 01 /7สำหรับการใช้งาน AMD โดยส่งคืน #UD [ 230 ](ที่สงวนไว้)16
17CpuidUserDisCPUIDปิดใช้งานสำหรับซอฟต์แวร์ที่ไม่ได้รับสิทธิ์ (#GP)(ที่สงวนไว้)17
18EPSFรองรับการส่งต่อร้านค้าแบบคาดการณ์ขั้นสูง[ 233 ](ที่สงวนไว้)18
19FAST_REP_SCASBREP SCASBรองรับFast Short(ที่สงวนไว้)19
20พรีเฟตชี่แคชคำสั่งดึงข้อมูลล่วงหน้าPREFETCHIT0และ คำสั่ง PREFETCHIT1ที่รองรับ[ a ](ที่สงวนไว้)20
21FP512_ ดาวน์เกรดรองรับการลดระดับดาต้าพาธ 512 บิตเป็น 256 บิต[ b ](ที่สงวนไว้)21
22WL_CLASS_ SUPPORTการสนับสนุนการตอบรับเชิงฮิวริสติกตามภาระงานไปยังระบบปฏิบัติการสำหรับการตัดสินใจกำหนดตารางเวลา[ 230 ](ที่สงวนไว้)22
23AVX512_BMMคำสั่งการคูณเมทริกซ์บิต AVX-512 และการกลับบิต[ 236 ] [ 237 ](ที่สงวนไว้)23
24เอราปส์การรักษาความปลอดภัยตัวทำนายที่อยู่ส่งคืนที่ได้รับการปรับปรุง (ดู EBX[23:16] "RapSize" ด้วย)(ที่สงวนไว้)24
25(ที่สงวนไว้)(ที่สงวนไว้)25
26ที่อยู่ด้านบนละเว้น 2รองรับการละเว้นที่อยู่ด้านบน (เวอร์ชัน 2) [ 238 ](ที่สงวนไว้)26
27สบีพีบีอุปสรรคการทำนายสาขาที่เลือกได้รับการสนับสนุน[ 239 ](ที่สงวนไว้)27
28ไอบีพีบี_บีอาร์ไทป์IBPB ล้างการคาดการณ์ประเภทสาขาทั้งหมด[ 239 ](ที่สงวนไว้)28
29SRSO_NOCPU ไม่ได้รับผลกระทบจากช่องโหว่ SRSO (Speculative Return Stack Overflow) [ 239 ](ที่สงวนไว้)29
30SRSO_USER_KERNEL_NO​CPU ไม่ได้รับผลกระทบจากช่องโหว่ SRSO ข้ามขอบเขตผู้ใช้/เคอร์เนล[ 239 ](ที่สงวนไว้)30
31SRSO_MSR_FIXSRSO สามารถลดผลกระทบได้โดยการตั้งค่าบิตที่ 4 ของ BP_CFG ( MSR C001_102E) [ 239 ](ที่สงวนไว้)31
  1. บนโปรเซสเซอร์ Intel การรองรับคำสั่ง prefetch ของแคชคำสั่งจะไม่แสดงด้วย แต่จะ แสดงCPUID.(EAX=8000_0021h):EAX[20]ด้วย แทนCPUID.(EAX=7,ECX=1):EDX[14]
  2. หากเปิดใช้งานการลดระดับจากดาต้าพาธ 512 บิตเป็น 256 บิต คำสั่ง AVX-512 ที่ทำงานกับรายการข้อมูล 512 บิตจะถูกแบ่งออกเป็นสองส่วน 256 บิต ซึ่งจะถูกส่งออกไปในสองรอบการทำงานที่ต่อเนื่องกัน การลดระดับดาต้าพาธนี้สามารถช่วยปรับปรุงประสิทธิภาพการใช้พลังงานสำหรับเวิร์กโหลดบางประเภทได้ [ 235 ]
CPUID EAX=8000'0021h: ข้อมูลคุณสมบัติเพิ่มเติมใน EBX
บิตอีบีเอ็กซ์
สั้นคุณสมบัติ
15:0ขนาดแพทช์ไมโครโค้ดขนาดของแพทช์ไมโครโค้ดในหน่วยทวีคูณ 16 ไบต์ หากเป็น 0 ขนาดของแพทช์จะมีขนาดสูงสุดไม่เกิน 5568 (15C0h) ไบต์
23:16แร็พไซส์ขนาดของตัวทำนายที่อยู่ส่งคืน (Return Address Predictor Size) RapSize * 8 คือจำนวนCALLคำสั่งขั้นต่ำที่ไม่มีคำสั่งตรงกันRETซึ่งจำเป็นต่อการล้างตัวทำนายที่อยู่ส่งคืน
31:24(ที่สงวนไว้)

EAX=8000'0025h: ความสามารถในการเข้ารหัสหน่วยความจำ 2

CPUID EAX=8000'0025h: ข้อมูลคุณลักษณะหน่วยความจำที่เข้ารหัสใน EAX, EBX และ EDX
บิตอีเอเอ็กซ์อีบีเอ็กซ์อีดีเอ็กซ์บิต
สั้นคุณสมบัติสั้นคุณสมบัติสั้นคุณสมบัติ
0ขนาดเซกเมนต์ MinRmpขนาดเซ็กเมนต์ RMP ขั้นต่ำที่รองรับเซ็กเมนต์แคชจำนวนจำนวนคำจำกัดความเซ็กเมนต์ RMP ที่แคชไว้อาร์เอ็มพีโอพีRMPOPTคำแนะนำ[ 240 ]0
1การป้องกัน EnhSmtการป้องกัน SMT ที่ได้รับการปรับปรุง[ 241 ]1
2อาร์เอ็มพี เดอร์ตี้คุณสมบัติและRMPCHKDคำสั่ง สกปรกของ RMP [ 242 ]2
5:3(ที่สงวนไว้)5:3
9:6ขนาดเซกเมนต์ MaxRmpขนาดเซ็กเมนต์ RMP ที่รองรับสูงสุด(ที่สงวนไว้)9:6
10การลดจำนวนเซกจำนวนเซ็กเมนต์ RMP ลดลง(ที่สงวนไว้)10
11(ที่สงวนไว้)(ที่สงวนไว้)11
31:12 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:12 

EAX=8C86'0000h: Hygon Extended Feature Flags

ส่งคืนดัชนีของใบคุณลักษณะ Hygonสูงสุดใน EAX (ใช้ได้หากมากกว่าหรือเท่ากับ8C860000h) [ 243 ]และแฟล็กคุณลักษณะ Hygon ใน EDX [ 244 ]

CPUID EAX=8C86'0000h: แฟล็กคุณสมบัติ Hygon ใน EDX
บิตอีดีเอ็กซ์
สั้นคุณสมบัติ
0(ที่สงวนไว้)
1สม3คู่มือการใช้งาน Hygon SM3
2สเอ็ม4คู่มือการใช้งาน Hygon SM4
31:3 (ที่สงวนไว้)

EAX=8FFF'FFFEh และ EAX=8FFF'FFFFh: อีสเตอร์เอ็กส์ของ AMD

EAX=8FFF'FFFFhCPU AMD หลายรุ่นจะ ส่งคืน สตริง Easter eggใน EAX, EBX, ECX และ EDX สำหรับ CPUID [ 245 ] [ 246 ]สตริง Easter egg ที่รู้จัก ได้แก่:

โปรเซสเซอร์สตริง
เอดีเอ็ม เค6NexGenerationAMD
AMD K8IT'S HAMMER TIME
AMD Jaguar [ 247 ]HELLO KITTY! ^-^

นอกจากนี้ CPU AMD K6EAX=8FFF'FFFEh จะ ส่งคืน การอ้างอิง Easter eggถึง " DEI " ใน EAX สำหรับ CPUID [ 248 ]

EAX=C000'0000h: ฟังก์ชันขยาย สูงสุด ของเซนทอร์

ส่งคืนดัชนีของลีฟ Centaur ที่สูงที่สุดใน EAX หากค่าที่ส่งคืนใน EAX น้อยกว่าค่าที่กำหนด แสดงว่าC0000001hไม่รองรับลีฟขยายของ Centaur

มี อยู่ในซีพียูจากVIAและZhaoxin

บนซีพียู IDT WinChipCentaurHauls ( ตระกูล 5) ใบขยาย ไม่ได้เข้ารหัสฟังก์ชันเฉพาะ ของC0000001h-C0000005h Centaur แต่เป็นชื่อแทนของใบ[80000001h-80000005h 249 ]

EAX=C000'0001h: ข้อมูลคุณสมบัติของเซนทอร์

ใบไม้นี้ส่งคืนข้อมูลคุณลักษณะ Centaur (ส่วนใหญ่คือVIA/Zhaoxin PadLock ) ในรูปแบบ EDX [ 250 ] [ 251 ] [ 252 ] [ 253 ] (EAX, EBX และ ECX สงวนไว้)

CPUID EAX=C000'0001h: บิตคุณลักษณะ Centaur ใน EDX
นิดหน่อยอีดีเอ็กซ์
สั้นคุณสมบัติ
0sm2 [ a ]คำสั่ง GMI SM2ในปัจจุบัน
1sm2_en [ a ]SM2 เปิดใช้งานแล้ว
2rngมีPadLock RNGXSTOREพร้อมREP XSTOREคำแนะนำ
3อาร์เอ็นเปิดใช้งาน RNG
4ซีซีเอส[]มีคำแนะนำสำหรับ GMI SM3 / SM4ดังนี้: CCS_HASHและCCS_ENCRYPT
5ccs_en [ a ]คำสั่ง SM3/SM4 เปิดใช้งานแล้ว
6การเข้ารหัสลับมีโปรแกรมเข้ารหัสลับขั้นสูง PadLock (ACE โดยใช้ การเข้ารหัส AES ) อยู่: REP XCRYPT(ECB,CBC,CFB,OFB)คำแนะนำ
7เอ็กซ์คริปต์_เอ็นเปิดใช้งาน ACE แล้ว
8เอซ2ACE v2 นำเสนอ: REP XCRYPTCTRคำสั่งต่างๆ รวมถึงการรองรับโหมดไดเจสต์และข้อมูลที่ไม่ตรงแนวสำหรับREP XCRYPT*คำสั่ง ของ ACE
9เอซ2_เอ็นเปิดใช้งาน ACE v2 แล้ว
10เฟโปรแกรมแฮช PadLock (PHE): REP XSHA1และREP XSHA256คำแนะนำ
11phe_enPHE เปิดใช้งานแล้ว
12พีเอ็มเอ็มคู่มือการใช้งานPadLock Montgomery Multiplier (PMM):REP MONTMUL
13พีเอ็มเอ็ม_เอ็นPMM เปิดใช้งานแล้ว
14(ที่สงวนไว้)
15zx_fmaFMA สนับสนุน
16พารัลแลกซ์มีการควบคุมสถานะ Pแบบปรับตัวได้
17พาราแลกซ์_เอนเปิดใช้งานการควบคุมสถานะ P แบบปรับได้
18ความเครียดมากเกินไปมีฟีเจอร์ Overstress สำหรับการโอเวอร์คล็อกอัตโนมัติ
19ความเครียดเกินเปิดใช้งานฟีเจอร์ Overstress สำหรับการโอเวอร์คล็อกอัตโนมัติ
20tm3เครื่องตรวจสอบความร้อนหมายเลข 3 พร้อมใช้งาน
21tm3_enเปิดใช้งาน Thermal Monitor 3
22รng2RNG v2 - เครื่องกำเนิดตัวเลขสุ่มรุ่นที่สอง: REP XRNG2คำแนะนำ
23rng2_enเปิดใช้งาน RNG v2
24SMEนำเสนอคุณสมบัติ SME
25phe2PHE v2: มี SHA384 และ SHA512
26phe2_enเปิดใช้งาน PHE v2 แล้ว
27xmodxคำแนะนำ RSA ที่มีอยู่: XMODEXPและMONTMUL2คำแนะนำ
28xmodx_enคำสั่ง RSA เปิดใช้งานแล้ว
29รำคาญมีคำแนะนำ VEX อยู่
30เว็กซ์_เอ็นคำสั่ง VEX เปิดใช้งานแล้ว
31สต็อกSTK อยู่ตรงนี้
  1. 1 2 3 4บนซีพียู VIA Nehemiahและ Antaur (CentaurHaulsเฉพาะรุ่น Family 6 Model 9 เท่านั้น) [ 254 ]บิต 0, 1, 4, 5 ถูกใช้งานแตกต่างกัน:

EAX=C000'0002h: ข้อมูลประสิทธิภาพ CPUID ของ Centaur Extended

ใบนี้ส่งคืนข้อมูลเกี่ยวกับแรงดันไฟฟ้า CPU อุณหภูมิ ตัวคูณสัญญาณนาฬิกา และการตั้งค่าการเปิดเครื่องสำหรับ โปรเซสเซอร์ VIA C7ใน EAX, EBX, ECX และ EDX [ 255 ]

CPUID EAX=C000'0002h: ข้อมูลประสิทธิภาพ CPUID ขยายของ Centaur
นิดหน่อยอีเอ็กซ์[]อีบีเอ็กซ์อีซีเอ็กซ์อีดีเอ็กซ์นิดหน่อย
7:0อุณหภูมิเศษส่วนแรงดันไฟฟ้าปัจจุบัน: (16*[7:0]+700) mVแรงดันไฟฟ้าสูงสุด: (16*[7:0]+700) mV(ที่สงวนไว้)7:0
13:8อุณหภูมิปัจจุบัน (องศาเซลเซียส)ตัวคูณสัญญาณนาฬิกาปัจจุบันตัวคูณความเร็วสัญญาณนาฬิกาสูงสุด(ที่สงวนไว้)13:8
14เวกเตอร์รีเซ็ต 1MB (0=0xFFFFFFF0,1=0x000FFFF0)14
15(ที่สงวนไว้)15
17:16(ที่สงวนไว้)แรงดันไฟฟ้าต่ำสุด: (16*[23:16]+700) mVรหัสคลัสเตอร์ APIC17:16
19:18สัญญาณนาฬิกาของ Front Side Bus ขาเข้า (00=100MHz, 01=133MHz, 10=200MHz, 11=166MHz)19:18
21:20รหัสตัวแทน APIC21:20
23:22อัตราส่วนสัญญาณนาฬิกาปัจจุบัน23:22
26:24อัตราส่วนนาฬิกาต่ำสุดตัวคูณความเร็วสัญญาณนาฬิกาต่ำสุด26:24
31:27(ที่สงวนไว้)31:27
  1. บน VIA C7 หากเซ็นเซอร์วัดอุณหภูมิบนชิปถูกปิดใช้งาน EAX จะส่งค่ากลับมาเป็น 0

EAX=C000'0006h, ECX=0: ข้อมูลคุณลักษณะของ Zhaoxin

ส่วนย่อยนี้ส่งคืนข้อมูลคุณลักษณะในรูปแบบ EAX EBX, ECX และ EDX เป็นชื่อที่สงวนไว้

CPUID EAX=C000'0006h, ECX=0: บิตคุณลักษณะ Zhaoxin ใน EAX
นิดหน่อยอีเอเอ็กซ์
สั้นคุณสมบัติ
0ตัวเลือกหยุดชั่วคราวPAUSEOPTคำแนะนำ[ 256 ]
1(สงวนไว้) []
2(ที่สงวนไว้)
3(สงวนไว้) []
31:4(ที่สงวนไว้)
  1. 1 2ณ เดือนเมษายน พ.ศ. 2569 บิตที่ 1 และ 3 ของ EAX ไม่ได้ระบุไว้ในเอกสารสาธารณะของ Zhaoxin ที่รู้จัก แต่พบว่ามีการตั้งค่าไว้ในโปรเซสเซอร์ KaiXian KX-7000 "Shijidadao" บางตัว [ 257 ]

การใช้งาน CPUID จากภาษาโปรแกรมระดับสูง

การประกอบแบบอินไลน์

ข้อมูลนี้สามารถเข้าถึงได้ง่ายจากภาษาโปรแกรมอื่นๆ เช่นกัน ตัวอย่างเช่น โค้ด C สำหรับ gcc ด้านล่างนี้จะพิมพ์ค่าห้าค่าแรกที่ได้จาก cpuid:

#include <stdio.h> #include <cpuid.h>int main () { unsigned int i , eax , ebx , ecx , edx ;for ( i = 0 ; i < 5 ; i ++ ) { __cpuid ( i , eax , ebx , ecx , edx ); printf ( "InfoType %x \n EAX: %x \n EBX: %x \n ECX: %x \n EDX: %x \n " , i , eax , ebx , ecx , edx ); }ส่งคืนค่า0 ; }

ในคอมไพเลอร์ MSVC และ Borland/Embarcadero C (bcc32) ที่ใช้การเขียนโค้ดแอสเซมบลีแบบอินไลน์ ข้อมูลเกี่ยวกับการแทนที่ข้อมูลจะแฝงอยู่ในคำสั่ง:

#include <stdio.h>int main () { unsigned int a , b , c , d , i = 0 ;__asm ​​{ /* ทำการเรียก */ mov EAX , i ; cpuid ; /* บันทึกผลลัพธ์ */ mov a , EAX ; mov b , EBX ; mov c , ECX ; mov d , EDX ; }printf ( "InfoType %x \n EAX: %x \n EBX: %x \n ECX: %x \n EDX: %x \n " , i , a , b , c , d ); return 0 ; }

หากเขียนโปรแกรมเวอร์ชันใดเวอร์ชันหนึ่งด้วยภาษาแอสเซมบลีธรรมดา โปรแกรมเมอร์จะต้องบันทึกผลลัพธ์ของ EAX, EBX, ECX และ EDX ไว้ที่อื่นด้วยตนเอง หากต้องการใช้งานค่าเหล่านั้นต่อไป

ฟังก์ชัน Wrapper

GCC ยังมีเฮดเดอร์ที่เรียกว่าบนระบบที่มี CPUID เฮดเดอร์นี้เป็นมาโครที่ขยายเป็นโค้ดแอสเซมบลีแบบอินไลน์ การใช้งานทั่วไปจะเป็นดังนี้:<cpuid.h>__cpuid

#include <stdio.h> #include <cpuid.h>int main () { unsigned int eax , ebx , ecx , edx ;__cpuid ( 0 /* สตริงผู้จำหน่าย */ , eax , ebx , ecx , edx ); printf ( "EAX: %x \n EBX: %x \n ECX: %x \n EDX: %x \n " , eax , ebx , ecx , edx );ส่งคืนค่า0 ; }

แต่ถ้าหากใครร้องขอคุณสมบัติเพิ่มเติมที่ไม่มีอยู่ใน CPU นี้ พวกเขาอาจจะไม่สังเกตเห็นและอาจได้รับผลลัพธ์ที่ไม่คาดคิด นอกจากนี้ยังมีเวอร์ชันที่ปลอดภัยกว่าให้ใช้งานด้วยซึ่งจะตรวจสอบคุณสมบัติเพิ่มเติมและทำการตรวจสอบความปลอดภัยเพิ่มเติมอีก ค่าเอาต์พุตจะไม่ถูกส่งผ่านโดยใช้พารามิเตอร์มาโครแบบอ้างอิง แต่จะใช้ตัวชี้แบบทั่วไปมากกว่า<cpuid.h>

#include <stdio.h> #include <cpuid.h>int main () { unsigned int eax , ebx , ecx , edx ;/* 0x81234567 ไม่มีอยู่จริง แต่ให้ถือว่ามีอยู่ */ ถ้า( ! __get_cpuid ( 0x81234567 , & eax , & ebx , & ecx , & edx )) { printf ( "คำเตือน: คำขอ CPUID 0x81234567 ไม่ถูกต้อง! \n " ); return 1 ; }printf ( "EAX: %x \n EBX: %x \n ECX: %x \n EDX: %x \n " , eax , ebx , ecx , edx );ส่งคืนค่า0 ; }

สังเกตเครื่องหมายแอมเปอร์แซนด์ในคำสั่งเงื่อนไข หากการเรียกได้รับคำขอที่ถูกต้อง จะส่งคืนค่าที่ไม่ใช่ศูนย์ หากล้มเหลว จะส่งคืนค่าศูนย์[ 258 ]&a, &b, &c, &d__get_cpuid

คอมไพเลอร์ Microsoft Visual C มีฟังก์ชันในตัว__cpuid()ที่สามารถฝังคำสั่ง cpuid ได้โดยไม่ต้องใช้แอสเซมบลีแบบอินไลน์ ซึ่งสะดวกมากเนื่องจาก MSVC เวอร์ชัน x86-64 ไม่อนุญาตให้ใช้แอสเซมบลีแบบอินไลน์เลย โปรแกรมเดียวกันสำหรับMSVCจะเป็นดังนี้:

#include <stdio.h> #ifdef _MSC_VER #include <intrin.h> #endifint main () { unsigned int regs [ 4 ]; int i ;for ( i = 0 ; i < 4 ; i ++ ) { __cpuid ( regs , i ); printf ( "รหัส %d ให้ผลลัพธ์ %d, %d, %d, %d" , regs [ 0 ], regs [ 1 ], regs [ 2 ], regs [ 3 ]); }ส่งคืนค่า0 ; }

ภาษาสคริปต์หลายภาษา ทั้งแบบที่ตีความหรือแบบที่คอมไพล์แล้ว สามารถใช้งาน CPUID ผ่านไลบรารีFFI ได้ ตัวอย่างหนึ่งคือการใช้โมดูล Ruby FFI เพื่อเรียกใช้ภาษาแอสเซมบลีที่มีโอเปอเรเตอร์โค้ด CPUID

.NET 5 และเวอร์ชันที่ใหม่กว่ามีSystem.Runtime.Intrinsics.X86.X86base.CpuIdเมธอดนี้ ตัวอย่างเช่น โค้ด C# ด้านล่างจะแสดงยี่ห้อของโปรเซสเซอร์หากรองรับคำสั่ง CPUID:

using System.Runtime.InteropServices ; using System.Runtime.Intrinsics.X86 ; using System.Text ;namespace X86CPUID { class CPUBrandString { public static void Main ( string [] args ) { if ( ! X86Base . IsSupported ) { Console . WriteLine ( "ซีพียูของคุณไม่รองรับคำสั่ง CPUID" ); } else { Span < int > raw = stackalloc int [ 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 ); string brand = Encoding . UTF8 . GetString ( bytes ). Trim (); Console . WriteLine ( brand ); } } } }

ข้อมูลเฉพาะ CPU นอกเหนือจาก x86

สถาปัตยกรรม CPU ที่ไม่ใช่ x86 บางแบบยังให้ข้อมูลที่มีโครงสร้างเกี่ยวกับความสามารถของโปรเซสเซอร์ในรูปแบบต่างๆ โดยทั่วไปจะเป็นชุดของรีจิสเตอร์พิเศษ:

  • สถาปัตยกรรม ARMมีCPUIDรีจิสเตอร์โคโปรเซสเซอร์ซึ่งต้องใช้ระดับข้อยกเว้น EL1 หรือสูงกว่าจึงจะเข้าถึงได้[ 259 ]
  • โปรเซสเซอร์เมนเฟรมของ IBM ตั้งแต่ System/370ถึงz/Architecture มีคำสั่ง Store CPU ID ( ) เฉพาะในโหมดผู้ดูแลระบบSTIDPซึ่งให้ข้อมูลที่รวมถึงประเภทของ CPU [ 260 ] [ 261 ] : 10-147–10-149
  • โปรเซสเซอร์เมนเฟรม z/Architecture ยังมี คำสั่ง Store Facilities List ( STFL) [ 261 ] : 10 - 149 เฉพาะในโหมดผู้ดูแลระบบ และ คำสั่ง Store Facilities List Extended ( STFLE) ที่ไม่มีสิทธิ์พิเศษ : 7-394–7-395ซึ่งแสดงรายการคุณสมบัติฮาร์ดแวร์ที่ติดตั้ง
  • สถาปัตยกรรมMIPS32/64กำหนดตัวระบุโปรเซสเซอร์ ( ) ที่จำเป็นและชุดของรีจิส เตอร์การกำหนดค่าแบบPrIdลูกโซ่[ 262 ]
  • โปรเซสเซอร์ PowerPCมีรีจิสเตอร์เวอร์ชันโปรเซสเซอร์แบบอ่านอย่างเดียว 32 บิต( PVR) ที่ระบุรุ่นโปรเซสเซอร์ที่ใช้งานอยู่ คำสั่งนี้ต้องการระดับการเข้าถึงของผู้ดูแลระบบ[ 263 ]
  • สถาปัตยกรรมRISC-Vมีmcpuid"รีจิสเตอร์แบบอ่านอย่างเดียวที่มีข้อมูลเกี่ยวกับความสามารถของการใช้งาน CPU" [ 264 ]

ชิปตระกูล DSPและ ทราน สพิวเตอร์ยังไม่ได้นำคำสั่งนี้มาใช้ในลักษณะที่เห็นได้ชัดเจน แม้ว่าจะมีรูปแบบการออกแบบที่หลากหลาย (ในแง่สัมพัทธ์) ก็ตาม อาจมีวิธีการระบุตัวตนของซิลิคอนแบบอื่นอยู่ ตัวอย่างเช่น DSP จากTexas Instrumentsมีชุดรีจิสเตอร์แบบใช้หน่วยความจำสำหรับแต่ละหน่วยการทำงาน ซึ่งเริ่มต้นด้วยตัวระบุที่กำหนดประเภทและรุ่นของหน่วย การแก้ไขการออกแบบ ASICและคุณสมบัติที่เลือกในขั้นตอนการออกแบบ และต่อเนื่องด้วยรีจิสเตอร์ควบคุมและข้อมูลเฉพาะหน่วย การเข้าถึงพื้นที่เหล่านี้ทำได้โดยใช้คำสั่งโหลดและจัดเก็บที่มีอยู่แล้ว ดังนั้นสำหรับอุปกรณ์ดังกล่าว จึงไม่จำเป็นต้องขยายชุดรีจิสเตอร์เพื่อวัตถุประสงค์ในการระบุตัวตนของอุปกรณ์

ดูเพิ่มเติม

  • sandpile.orgแหล่งข้อมูลชั้นนำระดับโลกเกี่ยวกับข้อมูลทางเทคนิคของโปรเซสเซอร์ x86
  • x86-cpuid.orgฐานข้อมูล CPUID สถาปัตยกรรม x86 ที่สมบูรณ์พร้อมเครื่องมือสร้างโค้ดที่เกี่ยวข้อง ซึ่งสามารถใช้งานได้ทั้งโดยLinux KernelและXen hypervisor [ 265 ]
  • CPU-Zคือยูทิลิตี้ของ Windows ที่ใช้CPUIDในการตรวจสอบการตั้งค่าระบบต่างๆ
  • CPU-Xเป็นโปรแกรมทางเลือกแทน CPU-Z สำหรับ Linux และ FreeBSD
  • สเปกเตอร์ (ช่องโหว่ด้านความปลอดภัย)
  • การบายพาสร้านค้าเก็งกำไร (SSB)
  • /proc/cpuinfoคือไฟล์ข้อความที่สร้างขึ้นโดยระบบบางระบบ ซึ่งมีข้อมูล CPUID บางส่วนอยู่

อ่านเพิ่มเติม

  • "เทคโนโลยี AMD64 ส่วนขยายการควบคุมสาขาทางอ้อม" (PDF) (เอกสารไวท์เปเปอร์) ฉบับแก้ไข 4.10.18 บริษัท แอดวานซ์ ไมโคร ดี ไวซ์ อิงค์ (AMD) 2018 เก็บถาวร(PDF)จากต้นฉบับเมื่อ 2018-05-09 เรียกดูเมื่อ2018-05-09
  • การระบุโปรเซสเซอร์ Intel และคำสั่ง CPUID (หมายเหตุการใช้งาน 485) เวอร์ชันล่าสุดที่เผยแพร่ กล่าวกันว่าได้รวมอยู่ในคู่มือสำหรับนักพัฒนาซอฟต์แวร์สถาปัตยกรรม Intel 64 และ IA-32 ในปี 2013แต่ณ เดือนกรกฎาคม 2014คู่มือยังคงแนะนำให้ผู้อ่านดูหมายเหตุ 485
    • ข้อมูลบางส่วนในเอกสารนี้อาจถูกตีความผิดได้ง่าย โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวกับการระบุโครงสร้างของโปรเซสเซอร์
    • คู่มือขนาดใหญ่ของ Intel มักจะล้าหลังเอกสาร Intel ISA ซึ่งอยู่ด้านบนของหน้านี้โดยเอกสาร ISA จะได้รับการอัปเดตแม้กระทั่งสำหรับโปรเซสเซอร์ที่ยังไม่วางจำหน่ายอย่างเป็นทางการ และโดยปกติแล้วจึงมีข้อมูลเกี่ยวกับ CPUID มากกว่า ตัวอย่างเช่น ณ เวลาที่เขียนบทความนี้ หนังสือ ISA (ฉบับแก้ไขครั้งที่ 19 ลงวันที่พฤษภาคม 2014) ระบุถึงบิต CLFLUSHOPT ไว้ในหน้า 7 แต่คู่มือขนาดใหญ่ถึงแม้จะดูทันสมัยกว่า (ฉบับแก้ไขครั้งที่ 51 ลงวันที่มิถุนายน 2014) กลับไม่ได้กล่าวถึงบิตนี้
  • คู่มือโปรแกรมเมอร์สถาปัตยกรรม AMD64 เล่ม 3: คำสั่งทั่วไปและคำสั่งระบบ
  • โปรแกรม cpuidแบบบรรทัดคำสั่งสำหรับ Linux
  • cpuprint.com, cpuprint.exe, cpuprint.rawโปรแกรมบรรทัดคำสั่งสำหรับ Windows
  • instlatx64 - ชุดรวมข้อมูลความหน่วงของคำสั่ง, ความหน่วงของหน่วยความจำ และ CPUID สำหรับสถาปัตยกรรม x86/x64
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=CPUID&oldid=1361379324#STIBP "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ CPUID

ในสถาปัตยกรรมx86 คำสั่ง CPUID (ระบุโดยCPUIDรหัสคำสั่ง ) เป็นคำสั่งเสริมของโปรเซสเซอร์ (ชื่อมาจาก " การระบุ CPU ") ซึ่งช่วยให้ซอฟต์แวร์สามารถค้นหารายละเอียดของโปรเซสเซอร์ได้อินเทล..

ประวัติศาสตร์

ก่อนที่ CPUID คำสั่งนี้จะพร้อมใช้งานโดยทั่วไป โปรแกรมเมอร์จะเขียน โค้ดเครื่อง ที่ซับซ้อน ซึ่งใช้ประโยชน์จากความแตกต่างเล็กน้อยในพฤติกรรมของ CPU เพื่อกำหนดยี่ห้อและรุ่นของโปรเซสเซอร์ [ 2 ] [ 3 ] [ 4 ] [ 5 ] เมื่อมีการนำโปรเซสเซอร์ 80386 มาใช้ EDX...

เรียกใช้ CPUID

รหัส CPUID ปฏิบัติการคือ 0F A2 . สามารถตรวจจับการรองรับคำสั่งนี้ของโปรเซสเซอร์ได้โดยการสลับสถานะของแฟล็ก ID (บิตที่ 21) ในรี จิสเตอร์ EFLAGS ให้สำเร็จ

EAX=0: พารามิเตอร์ฟังก์ชันสูงสุดและรหัสผู้ผลิต

ฟังก์ชันนี้จะส่งคืนสตริงรหัสผู้ผลิตของ CPU ซึ่งเป็น สตริง ASCII 12 ตัวอักษรที่จัดเก็บไว้ใน EBX, EDX, ECX (ตามลำดับ) พารามิเตอร์การเรียกใช้งานพื้นฐานสูงสุด (ค่าที่มากที่สุดที่สามารถตั้งค่า EAX ได้ก่อนเรียกใช้ฟังก์ชัน) จะถูกส่งคืนใน EAX CPUID