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

อ่าน 51 นาที

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

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

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

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

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

พารามิเตอร์ฟังก์ชันสูงสุด
โปรเซสเซอร์พื้นฐานขยาย
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 Bridge0x0D 0x8000 0008
โปรเซสเซอร์ที่ใช้สถาปัตยกรรม Skylake (ความถี่พื้นฐานและความถี่สูงสุดของโปรเซสเซอร์; ความถี่อ้างอิงของบัส) 0x16 0x8000 0008
การแจงนับคุณลักษณะของผู้จำหน่าย ระบบบนชิป (System-on-Chip Vendor Attribute Enumeration) ใบหลัก (Main Leaf) 0x17 0x8000 0008
โปรเซสเซอร์ที่ใช้สถาปัตยกรรม Meteor Lake0x23 0x8000 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
อีเอเอ็กซ์
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ที่สงวนไว้ รหัสประจำตัวครอบครัวขยาย รหัสรุ่นขยาย ที่สงวนไว้ ประเภทโปรเซสเซอร์ รหัสครอบครัว แบบอย่าง รหัสขั้นตอน
  • รหัสรุ่น (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 []ไม่มีข้อมูลไม่มีข้อมูล
4h4 486486 , [ 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 ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Bh11 Xeon Phi (Knights Corner) [ 47 ]ไม่มีข้อมูลไม่มีข้อมูล
0Ch12 ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Dh13 ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Eh14 ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
0Fh15 เน็ตเบิร์สต์ (เพนเทียม 4) K8/Hammer ( Athlon 64 ) ทรานส์เมตา เอฟฟิเซียน
10h16 ไม่มีข้อมูลK10 : ปรากฏการณ์ไม่มีข้อมูล
11h17 อิทาเนียม 2 [ 48 ] (ในโหมด IA-32)ทูเรียน X2ไม่มีข้อมูล
12h18 Intel Core (Nova Lake ขึ้นไป) [ 49 ]ลลาโนไม่มีข้อมูล
13h19 Xeon (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:8 CLFLUSHขนาดบรรทัด (ค่า * 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คำแนะนำ ดีเอส-ซีพีแอลร้านค้าดีบักที่ผ่านการรับรอง CPL 4
5 ม.ส.รีจิสเตอร์ และRDMSR/หรือWRMSRคำสั่ง เฉพาะรุ่นวีเอ็มเอ็กซ์ส่วนขยายเครื่องเสมือน5
6 paeส่วนขยายที่อยู่ทางกายภาพsmxส่วนขยายโหมดปลอดภัย ( LaGrande ) ( GETSECคำแนะนำ) 6
7 เอ็มซีข้อผิดพลาดในการตรวจสอบเครื่องจักรestSpeedStepที่ได้รับการปรับปรุง7
8 cx8 [ b ]CMPXCHG8Bคำสั่ง ( เปรียบเทียบและสลับ ) tm2เครื่องตรวจสอบอุณหภูมิ 28
9 apic [ c ]ตัวควบคุมการขัดจังหวะแบบโปรแกรมได้ขั้นสูงในตัวssse3คำแนะนำ เพิ่มเติมสำหรับ SSE39
10 (mtrr) [ d ](ที่สงวนไว้)cnxt-idรหัสบริบท L1 10
11 แยก[ e ]SYSENTERและSYSEXITคำสั่งเรียกใช้ระบบอย่างรวดเร็ว เอสดีบีจีอินเทอร์เฟซ Silicon Debug 11
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
18 พีเอสเอ็นหมายเลขซีเรียลของโปรเซสเซอร์ที่รองรับและเปิดใช้งาน[ 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 บิต 9 tsc-deadlineAPIC ดำเนินการแบบครั้งเดียวโดยใช้ค่ากำหนดเวลา TSC 24
25 sseคำสั่ง Streaming SIMD Extensions (SSE) (หรือที่รู้จักกันในชื่อ " คำสั่งใหม่ ของ Katmai "; SIMD 128 บิต) เอส-นิชุดคำสั่ง AES25
26 sse2คำแนะนำ SSE2xsaveคำ สั่ง บันทึก/กู้คืนสถานะโปรเซสเซอร์ที่ขยายได้: XSAVE, XRSTOR, XSETBV,XGETBV26
27 เอสเอสแคช CPU ใช้กลไกการตรวจสอบ ตัวเองosxsaveXSAVEเปิดใช้งานโดยระบบปฏิบัติการ 27
28 httฟิลด์ที่สงวนไว้สำหรับรหัส APIC สูงสุดคือ Valid [ l ]เอวีเอ็กซ์ส่วนขยายเวกเตอร์ขั้นสูง (SIMD 256 บิต) 28
29 tmเครื่องวัดอุณหภูมิจะจำกัดอุณหภูมิโดยอัตโนมัติ เอฟ16ซีคำสั่งแปลงค่าจุดลอยตัวไป/กลับจากรูปแบบ FP1629
30 ia64โปรเซสเซอร์ 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 รุ่นแรก ( ตระกูล 5 รุ่น 0) บิต 9 ของ EDX เคยใช้เพื่อระบุการสนับสนุน PGE แทน ซึ่งได้ย้ายไปที่บิต 13 ตั้งแต่ K5 รุ่น 1 เป็นต้นไป [ 57 ]AuthenticAMD
  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 การรองรับบิตห้ามเรียกใช้งานจะแสดงใน CPUID.(EAX=8000_0001):EDX[bit 20]แทน
  12. ^บิต EDX ที่ 28 หากถูกตั้งค่า แสดงว่าบิต 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, 32L0x L1I: 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
2x L2C: 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
3x L1I: 32K, 8A, 64L3x L2C: 128K, 4A, 64L, 2S [ f ]L2C: 192K, 6A, 64L, 2S [ f ]L2C: 128K, 2A, 64L, 2S [ f ]L2C: 256K, 4A, 64L, 2S [ f ]L2C: 384K, 6A, 64L, 2S [ f ]L2C: 512K, 4A, 64L, 2S [ f ]L2C: 256K, 2A, 64L [กรัม]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, 64L 4x L2C: 3M, 12A, 64L L2C/L3C: [ i ] 4M,16A,64LL3C: 6M, 12A, 64LL3C: 8M, 16A, 64LL3C: 12M, 12A, 64LL3C: 16M, 16A, 64LL2C: 6M, 24A, 64LITLB: 32E, 4Kp [ j ]4x
5x ITLB: 64E,FA, 4K/2M/4MpITLB: 128E,FA, 4K/2M/4MpITLB: 256E,FA, 4K/2M/4MpITLB: 7E, 2M/4Mp, FADTLB: 16E, 4Mp, 4ADTLB: 16E, 4Kp, 4A 5x DTLB: 16E, 4Kp, FADTLB: 32E, 2M/4Mp, 4ADTLB: 64E 4K/4Mp, FADTLB: 128E, 4K/4Mp, FADTLB: 256E, 4K/4Mp, FA5x
6x L1D: 16K, 8A, 64LITLB: 48E, 4Kp, FADTLB สองตัว: 32E, 2M/4Mp, 4A + 4E, 1Gp, FADTLB: 512E, 4Kp, 4AL1D: 8K, 4A, 64LL1D: 16K, 4A, 64L 6x L1D: 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) [. ] [ชม. ]7x L2C: 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, 64L 7x
8x L2C: 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, 64L 8x (L3C: 2M, 4A, 64L) [ c ](L3C: 4M, 4A, 64L) [ c ](L3C: 8M, 4A, 64L) [ c ](L3C: 3M, 12A, 128L) [ m ] [ n ]8x
9x (ITLB: 64E,FA, 4K-256Mp) [ c ](DTLB: 32E,เอฟเอ, 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, 4A L2TLB: 1024E, 4K/2Mp, 8A DTLB: 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. ^ a bสำหรับคำอธิบาย0Dhและ0EhIntel AP-485 rev 37 [ 73 ]แสดงรายการแคชที่พวกเขาอธิบายว่ามีECC - ซึ่งถูกลบออกใน rev 38 และเอกสาร Intel ในภายหลัง
  3. ^ a b c d e f g h iคำอธิบาย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. ^ a b c dค่าตัวอธิบาย26h, 27h, 28hและ81hไม่ได้ระบุไว้ในเอกสารของ Intel และไม่ได้ใช้ใน CPU ที่วางจำหน่ายใดๆ ที่รู้จัก ( 81hพบเห็นได้ในตัวอย่างทางวิศวกรรมของIntel Timnaที่ ถูกยกเลิก [ 85 ] ) อย่างไรก็ตาม มีรายงานว่าได้รับการยอมรับโดยเคอร์เนล Windows NT เวอร์ชัน 5.1 ( Windows XP ) และสูงกว่า นอกจากนี้ 81hยังได้รับการยอมรับโดยเวอร์ชัน 5.0 ( Windows 2000 ) [ 86 ]
  6. ^ a b c d e f gคำอธิบาย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. ^ a b c dเอกสารประกอบสำหรับโปรเซสเซอร์ 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. ^ a bบน CPU 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. ^ a b cคำอธิบาย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. ^ a bการดึงข้อมูลล่วงหน้าที่ระบุโดยตัวอธิบาย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. ^บิต EDX 4 ไม่ได้ระบุไว้ในเอกสารสาธารณะของ Intel ที่รู้จัก แต่พบว่ามีการตั้งค่าสำหรับแคชระดับ 2 ของโปรเซสเซอร์ Intel Xeon Phi x200 ("Knights Landing") [ 99 ]
  3. ^ a bสำหรับ CPUID leaf 4 บิต 11:10 ของ EAX ได้รับการบันทึกไว้สำหรับโปรเซสเซอร์ Xeon Phi "Knights Corner" ( GenuineIntelFamily 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 ]ณ ปี 2013 AMD ไม่ได้ใช้ใบเหล่านี้ แต่มีวิธีการอื่นในการระบุคอร์[ 101 ]

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

โทโพโลยีของโปรเซสเซอร์ที่แสดงโดยลีฟ Bh เป็นแบบลำดับชั้น แต่มีข้อแม้ที่แปลกประหลาดคือ ลำดับของระดับ (เชิงตรรกะ) ในลำดับชั้นนี้ไม่จำเป็นต้องตรงกับลำดับในลำดับชั้นทางกายภาพ ( SMT /core/package) อย่างไรก็ตาม ทุกระดับเชิงตรรกะสามารถสอบถามได้ในฐานะซับลีฟ ECX (ของลีฟ Bh) เพื่อตรวจสอบความสอดคล้องกับ "ประเภทระดับ" ซึ่งอาจเป็น SMT, core หรือ "ไม่ถูกต้อง" พื้นที่รหัสระดับเริ่มต้นที่ 0 และต่อเนื่องกัน หมายความว่าหากรหัสระดับไม่ถูกต้อง รหัสระดับที่สูงกว่าทั้งหมดก็จะไม่ถูกต้องเช่นกัน ประเภทระดับจะถูกส่งคืนในบิต 15: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 (ที่สงวนไว้)
4 PLNความสามารถในการแจ้งเตือนขีดจำกัดพลังงาน
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การควบคุมหน้าต่างกิจกรรม HWP - บิตที่ 41:32 ของIA32_HWP_REQUESTMSR
10 การตั้งค่าประสิทธิภาพพลังงาน HWP_Energy_Performance_Preferenceการควบคุมการตั้งค่าพลังงาน/ประสิทธิภาพของ 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)
16 HWP_PECI_OVERRIDEรองรับการแทนที่ PECIของ HWP - บิต 63:60 ของIA32_HWP_PECI_REQUEST_INFO( 775h) MSR
17 ยืดหยุ่น_HWPHWP ที่ยืดหยุ่น - บิตที่ 63:59 ของIA32_HWP_REQUESTMSR
18 HWP_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)
20 HWP_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) MSR 3
7:4 (ที่สงวนไว้)(ที่สงวนไว้)7:4
11:8 จำนวนคลาส Intel Thread Director ที่รองรับโดยฮาร์ดแวร์ ขนาดของโครงสร้างอินเทอร์เฟซการตอบรับฮาร์ดแวร์ (ในหน่วย 4 KiB) ลบ 1 11: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
1 tsc_adjustIA32_TSC_ADJUST MSR avx512-vbmiคำสั่งการจัดการบิตเวกเตอร์ AVX-512คีย์ sgxบริการรับรองเอกสารสำหรับIntel SGX1
2 sgxส่วนขยาย Software Guardอุมิปการป้องกันคำสั่งในโหมดผู้ใช้ avx512-4vnniwคำสั่งเครือข่ายประสาทเทียม AVX-512แบบ 4 รีจิสเตอร์ 2
3 ดัชนีมวลกาย1ชุดคำสั่งการจัดการบิต 1พีเคยูปุ่มป้องกันหน่วยความจำสำหรับหน้าโหมดผู้ใช้ avx512-4fmapsAVX-512 4 รีจิสเตอร์ การคูณและการสะสม ความแม่นยำเดี่ยว 3
4 hleTSX Hardware Lock Elision ospkePKU เปิดใช้งานโดยระบบปฏิบัติการ เอฟอาร์เอ็มเร็ว สั้น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
11 rtmหน่วยความจำธุรกรรมที่จำกัด ของ TSXavx512-vnniคำสั่ง AVX-512สำหรับโครงข่ายประสาทเทียมแบบเวกเตอร์ rtm-always-abort [ 111 ]ธุรกรรม TSX ทั้งหมดถูกยกเลิก 11
12 rdt-m/pqmการตรวจสอบโดย Intel Resource Director (RDT) หรือการตรวจสอบคุณภาพการบริการ (QOS) ของแพลตฟอร์ม AMD avx512-bitalgคู่มือการใช้งาน AVX-512 BITALG (ที่สงวนไว้)12
13 fcs_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
15 rdt-a/pqeการจัดสรรทรัพยากร Intel Resource Director (RDT) หรือการบังคับใช้คุณภาพการบริการ (QOS) ของแพลตฟอร์ม AMD (fzm) [ a ]? ไฮบริดการผสมผสานซีพียูหลายประเภทในโครงสร้างโปรเซสเซอร์ (เช่นAlder Lake ) 15
16 avx512-fAVX-512มูลนิธิ ลา57ระบบเพจจิ้ง 5 ระดับ (57 บิตแอดเดรส) tsxldtrkคำแนะนำการระงับ/ดำเนินการต่อการติดตามที่อยู่โหลดTSXTSUSLDTRK ( และTRESLDTRK) 16
17 avx512-dqคำสั่ง AVX-512 Doubleword และ Quadword มาวาวค่าการปรับความกว้างที่อยู่ MPX ในพื้นที่ผู้ใช้ที่ใช้โดย คำสั่ง MPXBNDLDXของ Intel ในโหมด 64 บิต BNDSTX(ที่สงวนไว้)17
18 rdseedRDSEEDคำแนะนำ pconfigการกำหนดค่าแพลตฟอร์ม (คำแนะนำเกี่ยวกับเทคโนโลยีการเข้ารหัสหน่วยความจำ) 18
19 แอดเอ็กซ์Intel ADX (ส่วนขยายคำสั่งบวกและทดแบบความแม่นยำสูง) แอลบีอาร์บันทึกสาขาสถาปัตยกรรมสุดท้าย 19
20 แผนที่สแมปการป้องกันการเข้าถึงโหมดผู้ดูแลระบบเซท-ไอบีทีการบังคับใช้การควบคุมการไหลของโปรแกรม (CET): การติดตามสาขาทางอ้อม 20
21 avx512-ifmaคำสั่งคูณและบวกแบบรวมจำนวนเต็ม AVX-512(ที่สงวนไว้)21
22 (pcommit)( คำสั่ง PCOMMITเลิกใช้แล้ว) [ 113 ]rdpidRDPIDคำสั่ง (อ่านรหัสโปรเซสเซอร์) และ IA32_TSC_AUX MSR แอมเอ็กซ์-บีเอฟ16การคำนวณไทล์ AMXบนตัวเลข bfloat1622
23 คลัฟลูชอปท์CLFLUSHOPTคำแนะนำ klตู้เก็บกุญแจ AES avx512-fp16 คำสั่งการคำนวณเลขทศลอยความแม่นยำครึ่งหนึ่งAVX-512 [ 114 ]23
24 คลับบีCLWBคำสั่ง (การเขียนกลับไปยังแคชไลน์) ตรวจจับการล็อกบัสข้อผิดพลาดในการดีบักการล็อกบัส แอมซ์-ไทล์คำแนะนำการขนถ่าย/จัดเก็บกระเบื้อง AMX24
25 พีทีการติดตามโปรเซสเซอร์ Intel คลิเดโมทCLDEMOTEคำสั่ง (ลดระดับแคชไลน์) แอมเอ็กซ์-อินท์8การคำนวณไทล์ AMXบนจำนวนเต็ม 8 บิต 25
26 avx512-pfคำสั่งดึงข้อมูลล่วงหน้า AVX-512(mprr) [ a ]? ibrs / spec_ctrlการควบคุมการเก็งกำไร ซึ่งเป็นส่วนหนึ่งของการควบคุมสาขาทางอ้อม (IBC): การเก็งกำไรที่จำกัดสาขาทางอ้อม (IBRS) และอุปสรรคการคาดการณ์สาขาทางอ้อม (IBPB) [ 115 ] [ 116 ]26
27 avx512-erคำสั่งเลขชี้กำลังและส่วนกลับ AVX-512มอฟดีรีMOVDIRIคำแนะนำ สติปป์ตัวทำนายสาขาทางอ้อมแบบเธรดเดี่ยว ส่วนหนึ่งของ IBC [ 115 ]27
28 avx512-cdคำแนะนำการตรวจจับความขัดแย้ง AVX-512movdir64bMOVDIR64Bคำสั่ง (การจัดเก็บโดยตรง 64 ไบต์) L1D_FLUSHIA32_FLUSH_CMD MSR 28
29 ชาส่วนขยาย SHA-1 และ SHA-256เอนคิวซีเอ็มดีเข้าคิวร้านค้าและEMQCMD/หรือEMQCMDSคำแนะนำ ความสามารถด้านสถาปัตยกรรมIA32_ARCH_CAPABILITIES MSR (แสดงรายการการลดผลกระทบจากช่องทางด้านข้างแบบคาดการณ์[ 115 ] ) 29
30 avx512-bwคำสั่งไบต์และเวิร์ด AVX-512sgx-lcการกำหนดค่าการเปิดใช้งาน SGXความสามารถหลักIA32_CORE_CAPABILITIES MSR (แสดงรายการความสามารถหลักเฉพาะรุ่น) 30
31 avx512-vlส่วนขยายความยาวเวกเตอร์ AVX-512แพ็คส์คีย์ป้องกันสำหรับหน้าเว็บโหมดผู้ดูแลระบบ เอสเอสบีดีปิดใช้งาน Speculative Store Bypass [ 115 ]เพื่อบรรเทาผลกระทบจากSpeculative Store Bypass (IA32_SPEC_CTRL) 31
  1. ^ a b cณ เดือนเมษายน 2024 บิต 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) MSRs อาร์ดีที_เอ็ม_เอซิมความสามารถในการตรวจสอบ RDT แบบไม่สมมาตร (ที่สงวนไว้)0
1 สม3ส่วนขยายแฮช SM3พีบีเอ็นดีเคบีการเข้ารหัสพื้นที่จัดเก็บทั้งหมด: PBNDKBคำสั่งและ TSE_CAPABILITY ( 9F1h) MSR อาร์ดีทีเอเอเอซิมความสามารถในการจัดสรร RDT แบบไม่สมมาตร (avx512-vnni-fp16)? []1
2 สเอ็ม4ส่วนขยายการเข้ารหัส SM4(ที่สงวนไว้)(Legacy_reduced_isa)(X86S, [ 117 ]ยกเลิก[ 118 ] ) (avx512-vnni-int8)? []2
3 ราโอ-อินท์การดำเนินการอะตอมิกแบบระยะไกลบนจำนวนเต็ม: คำสั่ง AADD, AAND, AOR,AXORCPUIDMAXVAL_LIM_RMVถ้าเป็น 1 แสดงว่าบิตที่ 22 IA32_MISC_ENABLEไม่สามารถตั้งค่าเป็น 1 เพื่อจำกัดค่าที่ส่งคืนโดยCPUID.(EAX=0):EAX[7:0]. (ที่สงวนไว้)(avx512-ne-convert)? []3
4 avx-vnniคำสั่งเครือข่ายประสาทเวกเตอร์ AVX (VNNI) (เข้ารหัส VEX) (ที่สงวนไว้)(sipi64)SIPI (Startup InterProcessor Interrupt) 64 บิต (ส่วนหนึ่งของ X86S ที่ถูกยกเลิก) avx-vnni-int8คำสั่ง AVX VNNI INT8 4
5 avx512-bf16คำสั่ง AVX-512สำหรับตัวเลข bfloat16(ที่สงวนไว้)เอ็มเอสอาร์_ไอเอ็มเอ็มรูปแบบRDMSRและWRMSRNSคำแนะนำ ในทันทีavx-ne-convertคำสั่งแปลงค่า FP แบบไม่มีข้อยกเว้นของ AVX ( bfloat16 ↔ FP32 และFP16 → FP32) 5
6 สาวน้อยการแยกพื้นที่แอดเดรสเชิงเส้น (CR4 บิต 27) (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)6
7 cmpccxaddCMPccXADDคำแนะนำ (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)7
8 archperfmonextระบบตรวจสอบประสิทธิภาพทางสถาปัตยกรรมแบบขยาย (EAX=23h) (ที่สงวนไว้)(ที่สงวนไว้)แอมเอ็กซ์คอมเพล็กซ์AMXรองรับไทล์ "ที่ซับซ้อน" ( TCMMIMFP16PSและTCMMRLFP16PS) 8
9 (ลดความซ้ำซ้อน) [ b ]? (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)9
10 เอฟเอสอาร์เอ็มความยาวศูนย์ที่รวดเร็ว REP MOVSB(ที่สงวนไว้)(ที่สงวนไว้)avx-vnni-int16คำสั่ง AVX VNNI INT16 10
11 เอฟอาร์เอสเร็ว สั้นREP STOSB(ที่สงวนไว้)เอซส่วนขยายการประมวลผล AI (avx512-vnni-int16)? []11
12 อาร์เอสอาร์ซีรวดเร็ว สั้นREP CMPSBและREP SCASB(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)12
13 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)ยูทีเอ็มอาร์เหตุการณ์ตัวจับเวลาของผู้ใช้: IA32_UINTR_TIMER ( 1B00h) MSR 13
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
18 lkgsLKGSคำแนะนำ[ 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
21 amx-fp16คำแนะนำ AMX สำหรับหมายเลข FP16(ที่สงวนไว้)(ที่สงวนไว้)เอพีเอ็กซ์_เอฟส่วนขยายประสิทธิภาพขั้นสูงพื้นฐาน (เพิ่ม การเข้ารหัสคำนำ หน้า REX2 และ EVEX ที่ขยาย เพื่อรองรับ GPR 32 ตัว รวมทั้งคำสั่งใหม่บางคำสั่ง) [ 124 ]21
22 รีเซ็ตHRESETคำสั่ง IA32_HRESET_ENABLE ( 17DAh) MSR และ Processor History Reset Leaf (EAX=20h) (ที่สงวนไว้)(ที่สงวนไว้)การรับรอง SEC_TEE_ATTESTATIONถ้าเป็น 1 เทคโนโลยีสภาพแวดล้อมการประมวลผลที่เชื่อถือได้ ( Intel TDXและIntel SGX ) จะรองรับการรับรองความถูกต้องที่ฝังอยู่ในกลไกความปลอดภัยบนชิป 22
23 avx-ifmaคำแนะนำ AVX IFMA (ที่สงวนไว้)(ที่สงวนไว้)เอ็มเวทคำแนะนำ MWAIT [ d ]23
24 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)slsmโหมดล็อคสเต็ปคงที่ (บิต 0 ของIA32_INTEGRITY_STATUSMSR พร้อมใช้งาน) 24
25 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)25
26 แลมการมาสก์ที่อยู่เชิงเส้น (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)26
27 msrlistRDMSRLISTและWRMSRLISTคำแนะนำ และ IA32_BARRIER ( 02Fh) MSR (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)27
28 (ที่สงวนไว้)(mpsadbw_512)? [](ที่สงวนไว้)(ที่สงวนไว้)28
29 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)29
30 invd_disable_post_bios_doneถ้าเป็น 1 จะรองรับINVDการป้องกันการดำเนินการคำสั่งหลังจาก BIOS เสร็จสิ้น (avx512-rao-fp)? [](ที่สงวนไว้)(ที่สงวนไว้)30
31 มูฟร์สMOVRSและPREFETCHRST2คำสั่งที่รองรับ (การอ่านหน่วยความจำ/การดึงข้อมูลล่วงหน้าพร้อมคำแนะนำการอ่านร่วมกัน) (avx512-rao-fp)? [](ที่สงวนไว้)(ที่สงวนไว้)31
  1. ^ a b c d e f g hณ เดือนเมษายน 2026 บิต "mpsadbw_512", "avx512-rao-fp", "avx-rao-fp", "avx512-vnni-fp16", "avx512-vnni-int8", "avx512-ne-convert", "avx512-vnni-int16" และ "avx512-bf16-ne" ปรากฏอยู่ในตาราง ABI ของโมดูล Intel TDX เพียงชุดเดียวตั้งแต่เดือนเมษายน 2026 [ 125 ]และไม่ได้ถูกตั้งค่าในโปรเซสเซอร์ที่รู้จักใดๆ
  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
นิดหน่อย อีดีเอ็กซ์
สั้นคุณสมบัติ
0 psfdตัวทำนายการส่งต่อร้านค้าอย่างรวดเร็ว[ 126 ]ปิดใช้งานรองรับ ( SPEC_CTRL(MSR 48h) บิต 7)
1 ipred_ctrlการควบคุม IPRED_DIS [ 127 ]ได้รับการสนับสนุน ( SPEC_CTRLบิต 3 และ 4)

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

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

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

5 mcdt_noหากตั้งค่าไว้ โปรเซสเซอร์จะไม่แสดงการกำหนดเวลาขึ้นอยู่กับการกำหนดค่า MXCSR
6 UC_LOCK_DISABLEรองรับการปิดใช้งานฟีเจอร์ UC-lock (โดยรายงานข้อยกเว้น UC-lock เป็น #AC)
7 มอนิเตอร์_มิทจี_โนหากตั้งค่าไว้ แสดงว่า คำสั่ง 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
2 XFD รองรับการเกิดข้อผิดพลาดสำหรับส่วนประกอบสถานะ 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
นิดหน่อยอีเอเอ็กซ์
สั้นคุณสมบัติ
0 xsaveoptXSAVEOPTคำสั่ง: บันทึกส่วนประกอบสถานะที่ได้รับการแก้ไขตั้งแต่ครั้งล่าสุดXRSTOR
1 xsavecXSAVECคำแนะนำ: บันทึก/กู้คืนสถานะด้วยการบีบอัดข้อมูล
2 xgetbv_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. ^บิตที่ 0XCR0ถูกกำหนดให้เป็น 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 และขนาดสูงสุด
นิดหน่อย อีเอเอ็กซ์ อีบีเอ็กซ์ อีดีเอ็กซ์ นิดหน่อย
สั้นคุณสมบัติ สั้นคุณสมบัติ สั้นคุณสมบัติ
0 sgx1ฟังก์ชันใบไม้ SGX1 เอ็กซ์อินโฟMISCSELECT: รายงานข้อมูลเกี่ยวกับข้อผิดพลาดในการเข้าถึงเพจและข้อยกเว้นการป้องกันทั่วไปที่เกิดขึ้นภายในเอนเคลฟ MaxEnclaveSize_Not64ค่า log2 ของขนาดเอนเคลฟสูงสุดที่รองรับในโหมดที่ไม่ใช่ 64 บิต 0
1 sgx2ฟังก์ชันใบไม้ SGX2 ซีพินโฟMISCSELECT: รายงานข้อมูลเกี่ยวกับข้อยกเว้นการป้องกันการควบคุมที่เกิดขึ้นภายในเอนเคลฟ 1
2 (ที่สงวนไว้)(ที่สงวนไว้)2
3 (ที่สงวนไว้)(ที่สงวนไว้)3
4 (ที่สงวนไว้)(ที่สงวนไว้)4
5 OSS []ENCLVใบไม้: EINCVIRTCHILD, EDECVIRTCHILD, และESETCONTEXT(ที่สงวนไว้)5
6 ENCLS_C [ a ] ​​[ 132 ]ENCLSออกจาก: ETRACKC, ERDINFO, ELDBC,ELDUC(ที่สงวนไว้)6
7 เอเวอไรฟีรีพอร์ต2ENCLUใบไม้:EVERIFYREPORT2(ที่สงวนไว้)7
8 (ที่สงวนไว้)(ที่สงวนไว้)MaxEnclaveSize_64ค่า Log2 ของขนาดเอนเคลฟสูงสุดที่รองรับในโหมด 64 บิต 8
9 (ที่สงวนไว้)(ที่สงวนไว้)9
10 อีอัปเดตเอสวีเอ็นENCLSใบไม้:EUPDATESVN(ที่สงวนไว้)10
11 เอเดคส์ซาENCLUใบไม้:EDECCSSA(ที่สงวนไว้)11
12 256 บิตเอสจีเอ็กซ์ENCLUหน้าที่ของใบไม้EGETKEY256และEREPORT2(ที่สงวนไว้)12
13 (ที่สงวนไว้)(ที่สงวนไว้)13
14 (ที่สงวนไว้)(ที่สงวนไว้)14
15 (ที่สงวนไว้)(ที่สงวนไว้)15
31:16  (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:16 
  1. ^ a bบิตส่วนขยายการสมัครสมาชิกเกิน 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 คีย์ไอนิตโทเค็นEINITสามารถรับรหัสโทเค็นได้จาก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_exclave_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 ของขนาดส่วน EPC 3:0
11:4  (ที่สงวนไว้)(ที่สงวนไว้)11:4 
19:12  บิตที่ 31:12 ของที่อยู่ฐานทางกายภาพของส่วน EPC บิตที่ 31:12 ของขนาดส่วน EPC 19:12 
31:20  (ที่สงวนไว้)(ที่สงวนไว้)31:20 

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

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

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

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 Reset sngl_rng_outรองรับรูปแบบเอาต์พุตช่วงเดียว 2
3 เอ็มทีซีรองรับแพ็กเก็ตจับเวลา MTC (Mini Time Counter) และรองรับการระงับแพ็กเก็ต COFI (Change of Flow Instructions) ระบบย่อยติดตามการขนส่งเอาต์พุตไปยังระบบย่อยการติดตามการขนส่งได้รับการสนับสนุน 3
4 ptwritePTWRITEคำแนะนำที่ได้รับการสนับสนุน (ที่สงวนไว้)4
5 pwr_evt_traceรองรับการติดตามเหตุการณ์ด้านพลังงาน (ที่สงวนไว้)5
6 pmi_preserveรองรับการรักษา PSB และ PMI (การขัดจังหวะการตรวจสอบประสิทธิภาพ) (ที่สงวนไว้)6
7 การติดตามเหตุการณ์รองรับการสร้างแพ็กเก็ต Event Trace (ที่สงวนไว้)7
8 tnt_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_ICNT 0
1 ทริกเกอร์_หยุดชั่วคราวรองรับการดำเนินการทริกเกอร์ TRACE_PAUSE และ TRACE_RESUME 1
2 (ที่สงวนไว้)2
7:3 (ที่สงวนไว้)(ที่สงวนไว้)7:3
10:8 ทริกเกอร์_ซีเอฟจี_ซีเอ็นทีจำนวนของ IA32_RTIT_TRIGGERx_CFG MSRs

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

(ที่สงวนไว้)10:8
14:11 (ที่สงวนไว้)(ที่สงวนไว้)14:11
15 (ที่สงวนไว้)ทริกเกอร์_DR_แมตช์รองรับการจับคู่ 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. ^ a b c d eฟิลด์จะไม่ถูกระบุหากเป็นศูนย์
  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 ภายในโปรเจ็กต์ SoC 15:0
16 แผนการระบุผู้จำหน่าย SoC
  • 0 : รหัสผู้จำหน่ายที่กำหนดโดย Intel [ a ]
  • 1 : แผนการแจงนับมาตรฐานอุตสาหกรรม[]
16
31:17 (ที่สงวนไว้)31:17
  1. ^ณ เดือนพฤษภาคม 2024 รหัสผู้ผลิต (Vendor ID) ต่อไปนี้ได้รับการกำหนดโดย Intel แล้ว:
    รหัสประจำตัวผู้ขาย
    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
3 1GB_ENTRIESTLB รองรับรายการสำหรับ hugepage ขนาด 1GByte 3
4 (ที่สงวนไว้)4
7:5 จำนวนระดับระดับแคชการแปล (เริ่มต้นที่ 1) 7:5
8 การแบ่งพาร์ติชัน การแบ่งพาร์ติชัน TLB:
  • 0: การแบ่งพาร์ติชันแบบอ่อนระหว่างโปรเซสเซอร์เชิงตรรกะที่ใช้ TLB ร่วมกัน
  • 1-7: สงวนสิทธิ์
ฟูลลี่_แอสโซซิเอท TLB ที่เชื่อมโยงอย่างสมบูรณ์ 8
10:9 (ที่สงวนไว้)10:9
13:11 (ที่สงวนไว้)13:11
15:14 MAX_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
นิดหน่อย อีเอเอ็กซ์ อีบีเอ็กซ์ อีซีเอ็กซ์ นิดหน่อย
สั้นคุณสมบัติ สั้นคุณสมบัติ สั้นคุณสมบัติ
0 cpl0_จำกัดข้อจำกัดของ 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 (ที่สงวนไว้)การสำรองข้อมูลคีย์รองรับระบบ 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:0 tmul_maxkจำนวนแถวหรือคอลัมน์สูงสุด (16) (ที่สงวนไว้)(ที่สงวนไว้)7:0
23:8 tmul_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
3 amx-fp16รองรับ float16(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)3
4 amx-fp8รองรับ float8 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)4
5 (amx-transpose) [ a ](การสนับสนุนคำแนะนำการสลับตำแหน่ง) (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)5
6 amx-tf32รองรับ tf32/fp19 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)6
7 amx-avx512รองรับ AMX-AVX512 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)7
8 amx-movrsการสนับสนุน AMX-MOVRS (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)8
31:9 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:9
  1. ^ก่อนหน้านี้ระบุว่าเป็นส่วนขยายในอนาคต [ 137 ]แต่ถูกลบออกในเวอร์ชัน 059 [ 138 ]

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 เองจะส่งคืนสตริงรหัสผู้จำหน่าย(พร้อมช่องว่างสี่ช่องต่อท้าย) [ 139 ] - สำหรับโมดูลนี้ ข้อมูลคุณสมบัติเพิ่มเติมจะไม่สามารถใช้งานได้ผ่าน และต้องได้รับผ่าน คำสั่ง เฉพาะของ 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 เวกเตอร์_isa_เวอร์ชัน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 [ 140 ] น่าจะเป็นเพราะได้รับการต่อต้านจากนักพัฒนาทำให้เหลือเพียงความกว้างของเวกเตอร์สูงสุด 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 (วีพีเอ็มเอ็ม)(การคูณเมทริกซ์แบบแพ็คส่วนขยายเวกเตอร์) [ 141 ]
1 (ที่สงวนไว้)
2 AVX10_VNNI_INTคำสั่ง AVX10.2 VNNI [ a ] ​​[ 142 ]
3 AVX10_V2_AUXคำสั่งเสริม AVX10.2 [ 143 ]
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 เท่านั้น [ 144 ]

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

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

CPUID EAX=2000'0001h: บิตคุณสมบัติ Xeon Phi
นิดหน่อย อีเอเอ็กซ์ อีบีเอ็กซ์ อีซีเอ็กซ์ อีดีเอ็กซ์ นิดหน่อย
สั้น คุณสมบัติ สั้น คุณสมบัติ สั้น คุณสมบัติ สั้น คุณสมบัติ
3:0 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)3:0
4 (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)k1omK1OM [ 144 ]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 [ 145 ] [ 146 ]รูปแบบของ leaf 40000001hและ leaf ที่รองรับสูงสุดนั้นขึ้นอยู่กับไฮเปอร์ไวเซอร์ ไฮเปอร์ไวเซอร์ที่ใช้งาน leaf เหล่านี้โดยปกติจะตั้งค่าบิตที่ 31 ของ ECX สำหรับ leaf CPUID 1 เพื่อระบุการมีอยู่ของ leaf เหล่านั้น

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

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

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

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

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

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

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

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

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) [ 171 ]

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

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

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
6 paeส่วนขยายที่อยู่ทางกายภาพsse4aเอสเอสอี4เอ6
7 เอ็มซีข้อผิดพลาดในการตรวจสอบเครื่องจักรการจัดแนวที่ไม่ตรงกันโหมด SSEที่ไม่ตรงแนว7
8 ซีเอ็กซ์8CMPXCHG8Bคำสั่ง ( เปรียบเทียบและสลับ ) 3dnowprefetchPREFETCHและPREFETCHWคำแนะนำ 8
9 อะพิคตัวควบคุมการขัดจังหวะแบบโปรแกรมได้ขั้นสูงในตัวosvwวิธีแก้ปัญหาที่มองเห็นได้บนระบบปฏิบัติการ 9
10 (syscall) [ a ]( SYSCALL/ SYSRET, เฉพาะ K6 เท่านั้น) ไอบีเอสการสุ่มตัวอย่างตามคำแนะนำ10
11 syscall [ b ]SYSCALLและSYSRETคำแนะนำ xop [ c ]ชุดคำสั่ง XOP11
12 เอ็มทีอาร์อาร์รีจิสเตอร์ช่วงประเภทหน่วยความจำสกินอิทSKINITและSTGIคำแนะนำ 12
13 พีจีเอบิตเปิดใช้งานทั่วโลกของหน้าในCR4ดับเบิลยูดีทีตัวจับเวลาเฝ้าระวัง13
14 เอ็มซีเอสถาปัตยกรรมตรวจสอบเครื่องจักร(tbm0) (การสนับสนุนคำสั่ง TBM0) [ d ]14
15 ซีเอ็มโอวีการเคลื่อนไหวแบบมีเงื่อนไขและFCMOVคำแนะนำ แอลดับเบิลยูพีการกำหนดโปรไฟล์น้ำหนักเบา[ 181 ]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) [ 188 ]19
20 เอ็นเอ็กซ์บิต NX (บิตห้ามเรียกใช้งานตารางเพจ) (ที่สงวนไว้)20
21 (เซม) ? [ฉัน]ทีบีเอ็มการจัดการบิตท้าย21
22 มมxเอ็กซ์MMX ส่วนขยาย (ส่วนย่อยที่ไม่ใช่ XMM ของSSE1 ) โทโปเอ็กซ์ทส่วนขยายโทโพโลยี (ใบ CPUID 80000001Dและ80000001E) 22
23 มมมxคำแนะนำ MMXเพอร์ฟคทร์_คอร์ส่วนขยายตัวนับประสิทธิภาพหลัก 23
24 fxsr [ e ]FXSAVEFXRSTORคำแนะนำ, CR4 บิต 9 perfctr_nbส่วนขยายตัวนับประสิทธิภาพ Northbridge24
25 fxsr_optFXSAVE/ FXRSTORการปรับปรุงประสิทธิภาพ (สตรีมเพอร์ฟมอน)(สถาปัตยกรรมมอนิเตอร์ประสิทธิภาพการสตรีม) [ j ]25
26 พีดีพี1จีบีกิกะไบต์เพจ dbxการขยายจุดแบ่งข้อมูล 26
27 rdtscpRDTSCPคำแนะนำ เพอร์ฟท์สตัวนับเวลาการแสดงผล (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
30 3dnowext3DNow! เวอร์ชันขยายที่อยู่_มาสก์_ส่วนขยายการขยายมาสก์แอดเดรสเป็น 32 บิตสำหรับเบรกพอยต์คำสั่ง 30
31 3dnow3DNow!(สงวนสิทธิ์) []31
  1. ^การใช้บิต EDX 10 เพื่อระบุการสนับสนุนสำหรับSYSCALL/SYSRETนั้นใช้ได้เฉพาะกับซีพียูAuthenticAMDตระกูล 5 รุ่น 7 ( AMD K6 , 250nm "Little Foot") เท่านั้น สำหรับโปรเซสเซอร์อื่นๆ ควรใช้บิต EDX 11 แทน คำสั่งเหล่านี้ได้รับการแนะนำครั้งแรกในรุ่น 7 [ 174 ] — บิต CPUID เพื่อระบุการสนับสนุนถูกย้าย [ 175 ]ไปยังบิต EDX 11 ตั้งแต่รุ่น 8 ( AMD K6-2 ) เป็นต้นไป

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

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

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

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

เอกสารของ Intel/AMD ระบุว่าสตริงต้องลงท้ายด้วยค่าว่างอย่างไรก็ตาม นี่ไม่ใช่กรณีเสมอไป (เช่น DM&P Vortex86DX3และ AMD Ryzen 7 6800HSเป็นที่ทราบกันดีว่าส่งคืนสตริงแบรนด์ที่ไม่ลงท้ายด้วยค่าว่างในใบ80000002h- 80000004h[ 197 ] [ 198 ] ) และซอฟต์แวร์ไม่ควรพึ่งพาสตริงดังกล่าว

#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 [ 171 ] [C0010030h 199 C0010035h] นอกจากนี้ยังสามารถทำได้บน AMD Geode GX/LX แม้ว่าจะใช้MSRs ก็ตาม[ 200 ]300Ah300Fh

สตริงที่ส่งคืนโดย CPUID 80000002hมัก80000004hจะมีช่องว่างหลายช่องอยู่ด้านหน้า ด้านหลัง หรือตรงกลาง ตัวอย่างของสตริงยี่ห้อโปรเซสเซอร์ที่มีช่องว่างติดกันหลายช่องซึ่งพบในซีพียู Intel/AMD ได้แก่:

  •        Intel(R) Core(TM) i7-3960X CPU @ 3.30GHz[ 201 ]
  • Intel(R) Xeon(R) CPU           W3670  @ 3.20GHz[ 202 ]
  • AMD EPYC 9655 96-Core Processor                [ 203 ]

ในบางกรณี การระบุผู้ผลิต 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 [ 204 ]และ Intel Xeon Platinum 8160 [ 205 ] - ซึ่งทั้งสองระบุตัวเองว่าเป็นGenuineIntelFamily 6 Model 55h Stepping 4 - สามารถแยกแยะได้ด้วยวิธีนี้)
  • CentaurHaulsซีพียูตระกูล 6 อาจเป็นซีพียู VIA หรือ Zhaoxin ก็ได้ โดยสามารถแยกแยะได้จากการมีสตริงย่อยZHAOXINในสตริงแบรนด์ของซีพียู Zhaoxin (เช่น Zhaoxin KaiXian ZX-C+ C4580 [ 206 ]และ VIA Eden X4 C4250 [ 207 ]ซึ่งทั้งสองระบุตัวเองว่าเป็น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 [ 208 ]
  2. ^บนโปรเซสเซอร์ที่สามารถจัดการเฉพาะเพจขนาดเล็กใน TLB ของตนได้เท่านั้น ใบนี้จะส่งคืนค่า 0 ใน EAX (บนโปรเซสเซอร์ดังกล่าว ซึ่งรวมถึง AMD K6 และ Transmeta Crusoe เป็นต้น รายการ hugepage ในตารางเพจจะถูกแบ่งออกเป็นเพจขนาด 4K ตามความจำเป็นเมื่อเข้าสู่ TLB)บนโปรเซสเซอร์บางตัว เช่น VIA Cyrix III "Samuel" [ 209 ]ใบนี้จะส่งคืนค่า0x80000005ใน EAX ซึ่งมีความหมายเช่นเดียวกับ EAX=0 กล่าวคือไม่มี TLB hugepage
  3. ^ a bบนซีพียู Transmeta ค่านี้FFhใช้เพื่อระบุ TLB ที่มี 256 รายการ
  4. ^ a b cสำหรับฟิลด์ความสัมพันธ์ของใบไม้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
นิดหน่อย อีบีเอ็กซ์ อีดีเอ็กซ์ นิดหน่อย
สั้นคุณสมบัติ สั้นคุณสมบัติ
0 MCAOverflowRecovการสนับสนุนการกู้คืนข้อมูลล้นของ MCA (Machine Check Architecture) ทีเอสเซ็นเซอร์วัดอุณหภูมิ 0
1 ความช่วยเหลือความสามารถในการกักเก็บและกู้คืนข้อผิดพลาดที่ไม่สามารถแก้ไขได้ของซอฟต์แวร์ เอฟไอดีการควบคุมรหัสความถี่ 1
2 เอชดับเบิลยูการรองรับการตรวจสอบฮาร์ดแวร์ (MSRs C001_10C0ถึงC001_10DF) วิดีโอการควบคุมรหัสแรงดันไฟฟ้า 2
3 เอ็มซีเอที่ปรับขนาดได้รองรับ MCA ที่ปรับขนาดได้ ทีทีพีเทอร์มทริป 3
4 พีเอฟเอชการจัดการข้อผิดพลาดแบบ Platform First [ 210 ]ท.รองรับการควบคุมอุณหภูมิด้วยฮาร์ดแวร์ (HTC) 4
5 แอลดับเบิลยูเอสเอ็มไอSMI น้ำหนักเบา[ 210 ]เอสทีซีรองรับการควบคุมความร้อนด้วยซอฟต์แวร์ (STC) [ 211 ]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 (ที่สงวนไว้)อินเทอร์เฟซฟีดแบ็กโปรเซสรองรับอินเทอร์เฟซการตอบรับโปรเซสเซอร์ 11
12 (ที่สงวนไว้)โปรซีพาวเวอร์รีพอร์ตติ้งรองรับอินเทอร์เฟซรายงานพลังงานโปรเซสเซอร์ 12
13 (ที่สงวนไว้)คอนเน็กเต็ด สแตนด์บายสแตนด์บายแบบเชื่อมต่อ[ 212 ]13
14 (ที่สงวนไว้)ราพพีแอลขีดจำกัดกำลังเฉลี่ยขณะวิ่ง[ 212 ]14
15 (ที่สงวนไว้)ฟาสต์ซีพีพีซีรองรับ CPPC (Collaborative Processor Performance Control) อย่างรวดเร็ว[ 212 ]15
16 (ที่สงวนไว้)CppcPerfPriorityลำดับความสำคัญด้านประสิทธิภาพของ CPPC [ 213 ]16
26:17  (ที่สงวนไว้)(ที่สงวนไว้)26:17 
27 (ที่สงวนไว้)(สงวนไว้) []27
31:28  (ที่สงวนไว้)(ที่สงวนไว้)31:28 
  1. ^การแก้ไขครั้งที่ 1.00 ของข้อกำหนดลำดับความสำคัญด้านประสิทธิภาพของ CPPC ของ AMD ระบุว่าคุณสมบัตินี้ถูกระบุโดยบิตที่ 27 ของ EDX [ 214 ] - ซึ่งได้รับการแก้ไขเป็นบิตที่ 16 ในการแก้ไขครั้งต่อมา [ 213 ]

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

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

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

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

24 เอสเอสบีดีการปิดใช้งานการข้ามร้านค้าเก็งกำไร
25 ssbd_legacyการข้ามร้านค้าเก็งกำไร ปิดใช้งานระบบเดิม
26 ssbd_noไม่จำเป็นต้องปิดใช้งานการข้ามร้านค้าแบบคาดการณ์ล่วงหน้า
27 ซีพีพีซีการควบคุมประสิทธิภาพโปรเซสเซอร์แบบร่วมมือ
28 psfdการปิดใช้งานการส่งต่อข้อมูลแบบคาดการณ์ล่วงหน้า
29 btc_noความสับสนของประเภทสาขา: โปรเซสเซอร์ไม่ได้รับผลกระทบ
30 ไอบีพีบี_เรทIBPB (ดูบิตที่ 12) ยังล้างตัวทำนายที่อยู่ส่งคืนด้วย
31 การสุ่มตัวอย่างสาขาการสนับสนุนการสุ่มตัวอย่างสาขา[ 219 ]
CPUID EAX=8000'0008h: ฟิลด์ขนาดและช่วงใน EAX, ECX, EDX
บิต อีเอเอ็กซ์ อีซีเอ็กซ์ อีดีเอ็กซ์ บิต
7:0 จำนวนบิตที่อยู่ทางกายภาพ จำนวนเธรดทางกายภาพในโปรเซสเซอร์ (ลบ 1) จำนวนหน้าสูงสุดสำหรับINVLPGBคำแนะนำ 7:0
11:8 จำนวนบิตแอดเดรสเชิงเส้น (ที่สงวนไว้)11:8
15:12 ขนาด APIC ID 15:12
17:16 ขนาดที่อยู่ทางกายภาพของแขก[ c ]ขนาดตัวนับการประทับเวลาประสิทธิภาพ ค่า ECX สูงสุดที่RDPRUคำสั่ง รับรู้17:16
23:18 (ที่สงวนไว้)23:18
31:24 (ที่สงวนไว้)31:24
  1. ^ a b cณ เดือนมิถุนายน พ.ศ. 2568 บิตที่ 5, 7 และ 11 ของCPUID.(EAX=8000_0008):EBXไม่ได้ระบุไว้ในเอกสารสาธารณะของ AMD ที่รู้จัก แต่พบว่ามีการตั้งค่าไว้ในโปรเซสเซอร์ AMD 4700S Desktop Kit [ 217 ]
  2. ^คุณสมบัติ LMSLE (Long Mode Segment Limit Enable) ไม่มีแฟล็ก CPUID ของตัวเอง และตรวจพบโดยการตรวจสอบตระกูลและรุ่นของ CPU มีการแนะนำในAuthenticAMDตระกูล 0Fh รุ่น 14h [ 218 ] (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 ของแขก[ 220 ]3
4 การบันทึกการแก้ไขหน้า[ 221 ]4
5 (ที่สงวนไว้)5
6 x2AVIC_EXT (รองรับ vCPU จำนวน 4096 ตัวในโหมด x2AVIC) 6
7 (ที่สงวนไว้)7
8 (ไฮเปอร์ไวเซอร์) []8
31:9 (ที่สงวนไว้)31:9
CPUID EAX=8000'000Ah: แฟล็กคุณสมบัติ SVM ใน EDX
นิดหน่อย อีดีเอ็กซ์
สั้นคุณสมบัติ
0 NPการจัดทำดัชนีเวอร์ชวลไลเซชันอย่างรวดเร็ว ( การแบ่งหน้าแบบซ้อน )
1 แอลบีอาร์ทีอาร์ทการจำลองเสมือน LBR (Last Branch Records)
2 เอสวีเอ็มแอลSVM-Lock
3 เอ็นอาร์ไอพีเอสรองรับการบันทึก nRIP (ตัวชี้คำสั่งลำดับถัดไป) บน #VMEXIT
4 TscRateMsrการควบคุมอัตรา 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 อีเอ็มพีแพทช์ไมโครโค้ดที่เข้ารหัส[ 210 ]
12 เกณฑ์ตัวกรองหยุดชั่วคราวPAUSEรองรับเกณฑ์จำนวนรอบการกรอง
13 เอวิครองรับ AMD Advanced Virtualized Interrupt Controller
14 (ที่สงวนไว้)
15 VMSAVEvirtVMSAVEและVMLOADเวอร์ชวลไลเซชัน
16 วีจีเอฟการจำลองเสมือน Global Interrupt Flag (GIF)
17 จีเม็ตกับดักการทำงานในโหมดผู้เยี่ยมชม
18 x2AVICรองรับโหมด x2APIC สำหรับ AVIC
19 SSSCheckข้อจำกัดของ Shadow Stackของ SVM Supervisor
20 สเปคคอร์ทร์ลSPEC_CTRLเวอร์ชวลไลเซชัน (MSR 2E0h)
21 ROGPTรองรับตารางหน้าผู้เยี่ยมชมแบบอ่านอย่างเดียว
22 (ที่สงวนไว้)
23 โฮสต์_เอ็มซี_โอเวอร์ไรด์โหมด ผู้เยี่ยมชม- ตรวจสอบข้อยกเว้นเมื่อโฮสต์CR4.MCE=1และผู้เยี่ยมชมCR4.MCE=0ทำให้เกิดการดักจับแทนการปิดระบบ
24 ทลบิคท์ลINVLPGB/ TLBSYNCเปิดใช้งานไฮเปอร์ไวเซอร์ใน VMCB และTLBSYNCรองรับการดักจับ
25 วีเอ็นเอ็มไอการจำลองเสมือน NMI ( Non-Maskable interrupt )
26 ไอบีเอสเวอร์ทการจำลองเสมือน IBS (Instruction-Based Sampling)
27 ExtLvtOffsetFaultChgพฤติกรรมการอ่าน/เขียนข้อผิดพลาดสำหรับออฟเซ็ต LVT ที่ขยาย (ที่อยู่ APIC 0x500-0x530) เปลี่ยนเป็นอนุญาตให้อ่าน เขียน #VMEXIT [ 228 ]
28 VmcbAddrChkChgการเปลี่ยนแปลงการตรวจสอบที่อยู่ VMCB [ 228 ]
29 เกณฑ์การล็อกบัสเกณฑ์การล็อกบัส
30 IdleHltInterceptการดัก จับ Idle HLT ( HLTคำสั่งที่ถูกดำเนินการในขณะที่ไม่มีการขัดจังหวะเสมือนรออยู่)
31 การสกัดกั้นการปิดระบบขั้นสูงการสนับสนุน EXITINFO1 ในการดักจับการปิดระบบ และการดักจับการปิดระบบแบบซ้อนกันจะส่งผลให้การปิดระบบไม่สามารถดักจับได้[ 229 ]
  1. ^เอกสาร "Pacifica" ฉบับแก้ไขเบื้องต้นของ AMD ระบุว่าบิต EAX 8 เป็นบิตที่มีค่าเป็นศูนย์เสมอ ซึ่งสงวนไว้สำหรับการใช้งานไฮเปอร์ไวเซอร์ [ 222 ]

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

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

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

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

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

CPUID EAX=8000'001Fh: บิตคุณลักษณะหน่วยความจำที่เข้ารหัสใน EAX
นิดหน่อย อีเอเอ็กซ์
สั้นคุณสมบัติ
0 SMEการเข้ารหัสหน่วยความจำที่ปลอดภัย
1 SEV/ CSV
  • AMD: การจำลองเสมือนที่เข้ารหัสอย่างปลอดภัย
  • Hygon : การจำลองเสมือนที่ปลอดภัยของจีน (รุ่นที่ 1) [ 230 ]
2 PageFlushMSRC001_011Ehรองรับ Page flush MSR ( )
3 SEV-ES/ CSV2 (Hygon)
  • AMD: สถานะการเข้ารหัส SEV
  • Hygon: การจำลองเสมือนที่ปลอดภัยของจีน (รุ่นที่ 2) [ 230 ]
4 SEV-SNPSEV Secure Nested Paging
5 วีเอ็มพีแอลระดับสิทธิ์ของ VM
6 การค้นหา RMPRMPQUERYคำแนะนำที่ได้รับการสนับสนุน
7 วีเอ็มพีแอลเอสเอสรองรับ VMPL Supervisor shadow stack
8 เซฟตี้ทีเอสซีรองรับ TSCที่ปลอดภัย
9 TscAuxVirtualizationการจำลองเสมือนของTSC_AUXMSR ( C000_0103) ได้รับการสนับสนุน
10 HwEnfCacheCohบังคับใช้ความสอดคล้องของแคชฮาร์ดแวร์ในโดเมนการเข้ารหัส
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 ( )
19 IbsVirtGuestCtlการจำลองเสมือน IBS รองรับสำหรับแขก SEV-ES และ SEV-SNP
20 PmcVirtGuestCtlระบบเวอร์ชวลไลเซชัน PMC รองรับการใช้งานในเครื่องเสมือน SEV-ES และ SEV-SNP
21 การอ่านแบบอ่านอย่างเดียวRMPREADคำแนะนำที่ได้รับการสนับสนุน
22 การควบคุมการสกัดกั้นแขกรองรับการควบคุมการดักฟังข้อมูลแขกสำหรับแขก SEV-ES
23 เซกเมนต์อาร์เอ็มพีรองรับ RMP แบบแบ่งส่วน (ตารางแมปย้อนกลับ)
24 วีเอ็มเอสเอรีจีโปรทรองรับการป้องกันรีจิสเตอร์ VMSA (VM Save Area)
25 การป้องกัน SMTรองรับการป้องกัน SMT
26 เซฟเอวิครองรับ AVIC ที่ปลอดภัย
27 คุณสมบัติ SEV ที่อนุญาตฟิลด์ ALLOWED_SEV_FEATURES_MASK ใน VMCB (ออฟเซ็ต138h) รองรับ
28 SVSMCommPageMSRหน้าการสื่อสาร SVSM (Secure VM Service Module [ 231 ] ) MSR ( C001_F000h) รองรับ
29 NestedVirtSnpMsrVIRT_RMPUPDATE( C001_F001h) และVIRT_PSMASH( C001_F002h) MSRs รองรับ
30 HvInUseWrAllowed/ CSV3
  • AMD: อนุญาตให้เขียนข้อมูลไปยังเพจเจอร์ที่เป็นของไฮเปอร์ไวเซอร์ได้เมื่อมีการทำเครื่องหมายว่ากำลังใช้งานอยู่
  • Hygon: การจำลองเสมือนที่ปลอดภัยของจีน (รุ่นที่ 3) [ 230 ]
31 IbpbOnEntryIBPB เมื่อเข้าสู่เครื่องเสมือนได้รับการสนับสนุน
CPUID EAX=8000'001Fh: ข้อมูลคุณลักษณะหน่วยความจำที่เข้ารหัสใน EBX, ECX และ EDX
บิต อีบีเอ็กซ์ อีซีเอ็กซ์ อีดีเอ็กซ์ บิต
5:0 ตำแหน่งของ C-bit (บิตเปิดใช้งานการเข้ารหัส) ในรายการตารางเพจ ค่า ASID สูงสุดที่สามารถใช้สำหรับแขกที่เปิดใช้งาน SEV (จำนวนแขกที่เข้ารหัสสูงสุดที่สามารถรองรับได้พร้อมกัน) ค่า ASID ขั้นต่ำสำหรับแขกที่เปิดใช้งาน SEV แต่ไม่ได้เปิดใช้งาน SEV-ES 5:0
11:6 การลดความกว้างของแอดเดรสทางกายภาพเมื่อเปิดใช้งานการเข้ารหัสหน่วยความจำ 11:6
15:12 จำนวน VMPL (ระดับสิทธิ์การใช้งานเครื่องเสมือน) ที่รองรับ 15:12
31:16 (ที่สงวนไว้)31:16

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

CPUID EAX=8000'0021h: บิตคุณสมบัติเพิ่มเติมใน EAX และ ECX
นิดหน่อย อีเอเอ็กซ์ อีซีเอ็กซ์ นิดหน่อย
สั้น คุณสมบัติ สั้น คุณสมบัติ
0 NoNestedDataBpโปรเซสเซอร์ไม่สนใจจุดหยุดข้อมูลแบบซ้อนกัน (ที่สงวนไว้)0
1 FsGsKernelGsBaseNonSerializingWRMSRถึงFS_BASEและMSRs ไม่ใช่การจัดGS_BASEลำดับ[ 232 ]KernelGSBaseTSA_SQ_NOหากตั้งค่าแล้ว CPU จะไม่เสี่ยงต่อTSA-SQ [ 233 ]1
2 LFenceAlwaysSerializingLFENCEการส่งแบบอนุกรมจะเกิดขึ้นเสมอ TSA_L1_NOหากตั้งค่าแล้ว CPU จะไม่เสี่ยงต่อTSA-L1 [ 233 ]2
3 SmmPgCfgLockรองรับการล็อกการกำหนดค่าเพจจิ้ง SMM (ที่สงวนไว้)3
4 (ที่สงวนไว้)(ที่สงวนไว้)4
5 VERW_CLEARVERWคำสั่งดังกล่าว เมื่อดำเนินการด้วยตัวดำเนินการหน่วยความจำใน Ring 0 สามารถใช้เพื่อล้างบัฟเฟอร์ข้อมูลไมโครสถาปัตยกรรมเพื่อช่วยลด TSA (Transient Scheduler Attacks) [ 233 ](ที่สงวนไว้)5
6 NullSelectClearsBaseการโหลดตัวเลือกเซ็กเมนต์ว่างจะล้างฐานและขีดจำกัดของรีจิสเตอร์เซ็กเมนต์ปลายทางด้วย (ที่สงวนไว้)6
7 ละเว้นที่อยู่ด้านบนรองรับการละเว้นที่อยู่ด้านบน (เวอร์ชัน 1) (ที่สงวนไว้)7
8 อัตโนมัติไอบีอาร์เอสระบบ IBRS อัตโนมัติ (ที่สงวนไว้)8
9 NoSmmCtlMSRSMM_CTLMSR ( C0010116h) ไม่ได้รับการสนับสนุน (ที่สงวนไว้)9
10 FSRSREP STOSBรองรับ ระยะสั้นอย่างรวดเร็ว(ที่สงวนไว้)10
11 เอฟเอสอาร์ซีREPE CMPSBรองรับ ระยะสั้นอย่างรวดเร็ว(ที่สงวนไว้)11
12 PMC2PreciseRetireบิตควบคุมตัวนับประสิทธิภาพ PreciseRetire (บิต MSR C0010002h43) ได้รับการสนับสนุน[ 229 ](ที่สงวนไว้)12
13 PrefetchCtlMsrPrefetchControl MSR ( C0000108h) รองรับ (ที่สงวนไว้)13
14 L2TlbSizeX32หากมีการตั้งค่า ขนาดของ L2 TLB (leaf 80000006h) จะถูกเข้ารหัสเป็นจำนวนเท่าของ 32 (ที่สงวนไว้)14
15 AMD_ERMSBโปรเซสเซอร์รองรับการใช้งาน Enhanced REP MOVSBและ ของ AMDREP STOSB(ที่สงวนไว้)15
16 OPCODE_0F017_RECLAIMสงวนรหัสปฏิบัติการ0F 01 /7สำหรับการใช้งาน AMD โดยส่งคืน #UD [ 229 ](ที่สงวนไว้)16
17 CpuidUserDisCPUIDปิดใช้งานสำหรับซอฟต์แวร์ที่ไม่ได้รับสิทธิ์ (#GP) (ที่สงวนไว้)17
18 EPSFรองรับการส่งต่อร้านค้าแบบคาดการณ์ขั้นสูง[ 232 ](ที่สงวนไว้)18
19 FAST_REP_SCASBREP SCASBรองรับ Fast Short(ที่สงวนไว้)19
20 พรีเฟตชี่แคชคำสั่งดึงข้อมูลล่วงหน้าPREFETCHIT0และ คำสั่ง PREFETCHIT1ที่รองรับ[ a ](ที่สงวนไว้)20
21 FP512_ดาวน์เกรดรองรับการลดระดับดาต้าพาธ 512 บิตเป็น 256 บิต[ b ](ที่สงวนไว้)21
22 WL_CLASS_SUPPORTการสนับสนุนการตอบรับเชิงฮิวริสติกตามภาระงานไปยังระบบปฏิบัติการสำหรับการตัดสินใจกำหนดตารางเวลา[ 229 ](ที่สงวนไว้)22
23 AVX512_BMMคำสั่งการคูณเมทริกซ์บิต AVX-512 และการกลับบิต[ 235 ] [ 236 ](ที่สงวนไว้)23
24 เอราปส์การรักษาความปลอดภัยตัวทำนายที่อยู่ส่งคืนที่ได้รับการปรับปรุง (ดู EBX[23:16] "RapSize" ด้วย) (ที่สงวนไว้)24
25 (ที่สงวนไว้)(ที่สงวนไว้)25
26 ละเว้นที่อยู่ด้านบน2รองรับการละเว้นที่อยู่ด้านบน (เวอร์ชัน 2) [ 237 ](ที่สงวนไว้)26
27 สบีพีบีอุปสรรคการทำนายสาขาที่เลือกได้รับการสนับสนุน[ 238 ](ที่สงวนไว้)27
28 ไอบีพีบี_บีอาร์ไทป์IBPB ล้างการคาดการณ์ประเภทสาขาทั้งหมด[ 238 ](ที่สงวนไว้)28
29 SRSO_NOCPU ไม่ได้รับผลกระทบจากช่องโหว่ SRSO (Speculative Return Stack Overflow) [ 238 ](ที่สงวนไว้)29
30 SRSO_USER_KERNEL_NOCPU ไม่ได้รับผลกระทบจากช่องโหว่ SRSO ข้ามขอบเขตผู้ใช้/เคอร์เนล[ 238 ](ที่สงวนไว้)30
31 SRSO_MSR_FIXSRSO สามารถลดผลกระทบได้โดยการตั้งค่าบิตที่ 4 ของ BP_CFG ( MSR C001_102E) [ 238 ](ที่สงวนไว้)31
  1. ^บนโปรเซสเซอร์ Intel การรองรับคำสั่ง prefetch ของแคชคำสั่งจะไม่แสดงด้วย แต่จะ แสดงCPUID.(EAX=8000_0021h):EAX[20]ด้วย แทนCPUID.(EAX=7,ECX=1):EDX[14]
  2. ^หากเปิดใช้งานการลดระดับจากดาต้าพาธ 512 บิตเป็น 256 บิต คำสั่ง AVX-512 ที่ทำงานกับรายการข้อมูล 512 บิตจะถูกแบ่งออกเป็นสองส่วน 256 บิต ซึ่งจะถูกส่งออกไปในสองรอบการทำงานที่ต่อเนื่องกัน การลดระดับดาต้าพาธนี้สามารถช่วยปรับปรุงประสิทธิภาพการใช้พลังงานสำหรับเวิร์กโหลดบางประเภทได้ [ 234 ]
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คำแนะนำ[ 239 ]0
1 การป้องกันขั้นสูงการป้องกัน SMT ที่ได้รับการปรับปรุง[ 240 ]1
2 อาร์เอ็มพี เดอร์ตี้คุณสมบัติและRMPCHKDคำสั่ง สกปรกของ RMP [ 241 ]2
5:3 (ที่สงวนไว้)5:3
9:6 MaxRmpSegSizeขนาดเซ็กเมนต์ RMP ที่รองรับสูงสุด (ที่สงวนไว้)9:6
10 การลดจำนวนเซกจำนวนเซ็กเมนต์ RMP ลดลง (ที่สงวนไว้)10
11 (ที่สงวนไว้)(ที่สงวนไว้)11
31:12  (ที่สงวนไว้)(ที่สงวนไว้)(ที่สงวนไว้)31:12 

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

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

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 [ 244 ] [ 245 ]สตริง Easter egg ที่รู้จัก ได้แก่:

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

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

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

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

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

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

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

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

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

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

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

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รหัสคลัสเตอร์ APIC 17:16
19:18 สัญญาณนาฬิกาของ Front Side Bus ขาเข้า (00=100MHz, 01=133MHz, 10=200MHz, 11=166MHz) 19:18
21:20 รหัสตัวแทน APIC 21: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คำแนะนำ[ 255 ]
1 (สงวนไว้) []
2 (ที่สงวนไว้)
3 (สงวนไว้) []
31:4 (ที่สงวนไว้)
  1. ^ a bณ เดือนเมษายน พ.ศ. 2569 บิตที่ 1 และ 3 ของ EAX ไม่ได้ระบุไว้ในเอกสารสาธารณะของ Zhaoxin ที่รู้จัก แต่พบว่ามีการตั้งค่าไว้ในโปรเซสเซอร์ KaiXian KX-7000 "Shijidadao" บางตัว[ 256 ]

การใช้งาน 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.h>บนระบบที่มี CPUID เฮดเดอร์นี้__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 ; }

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

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

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

ดูเพิ่มเติม

  • sandpile.orgแหล่งข้อมูลชั้นนำระดับโลกเกี่ยวกับข้อมูลทางเทคนิคของโปรเซสเซอร์ x86
  • x86-cpuid.orgฐานข้อมูล CPUID สถาปัตยกรรม x86 ที่สมบูรณ์พร้อมเครื่องมือสร้างโค้ดที่เกี่ยวข้อง ซึ่งสามารถใช้งานได้ทั้งโดยLinux KernelและXen hypervisor [ 264 ]
  • 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=1360063338 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ 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 ได้ก่อนเรียกใช้ฟังก์ชัน CPUID ) จะถูกส่งคืนใน EAX