CPUID 指令是一條 x86 架構中的的擴充套件指令（此處的擴充套件指相對 i80386），其操作碼助記符縮寫於 CPU 識別（CPU Identification），其作用是返回特定的 CPU 資訊，使得軟體可以在執行時檢測 CPU 的硬體特性，以便於識別並決定執行哪些程式碼。首批支援 CPUID 指令的處理器是 1993 年釋出的奔騰（i586）和 486SL。 透過使用 CPUID，軟體可以確定處理器的型別和特性支援（例如 MMXSSE）。CPUID 操作碼為 0Fh、A2h。在呼叫 CPUID 前 EAX 暫存器內的值作為其輸入引數，Intel64 指令集手冊中稱其為 葉（Leaf，AMD64 指令集手冊中稱 功能碼（Function Number），執行 CPUID 後，返回值將被寫入 EAX，EBX，ECX 和 EDX 暫存器內。此外，在使用一些特殊的輸入引數時，必須同時於 ECX 內寫入第二個輸入引數，否則無法得到有意義的返回值。第二個引數也被稱為 子葉（Sub Leaf）或 子功能碼（Sub Function）。 歷史 CPUID 前判斷處理器型號的方法 在 CPUID 指令被引入前，若要在執行時確定 CPU 的型號，需要編寫晦澀的組合語言程式碼以判斷某些指令被執行後處理器的行為。 1990 年以前，對於如何判斷 CPU 的型號沒有官方說明與實現方法，但軟硬體工程師們總結了一套利用 PUSHFPOPF 指令檢測 CPU 行為以判斷其架構的方法。此方法在廣泛應用的同時引起了巨大爭議，反對者認為其並非萬無一失，在某些需要高可靠性的軟體平臺上若處理器型號判斷錯誤，則有可能造成巨大損失，但英特爾在 1990 年釋出了《i486 微處理器程式設計師參考手冊》（i486 Microprocessor Programmers Reference Manual Intel Corp 1990），其中在手冊的第 2210 節中使用了上述方法判斷 CPU 代數，並且英特爾聲稱 程式碼序列已經過 Intel 驗證，可以檢測 CPUID、數學協處理器功能，並進行相應的初始化。任何其他方法都可能在未來的處理器中產生不可預測的結果。此後該方法被應用於大多數作業系統核心中。 以下所介紹之方法為英特爾手冊中的官方演算法。 該演算法的核心是利用 PUSHFPOPF 指令將標誌暫存器中的特定位設為 1 或 0，並觀察處理器隨後的行為，每一代處理器的具體行為均有所不同。 判斷 808680286 80868088 系列處理器在清除標誌暫存器的 1215 位後，無論向其中寫入何值，處理器將始終把它們設為 1，其檢測方式如下 pushf 將標誌暫存器內容壓棧 pop ax 將標誌暫存器內容送入 AX mov cx ax 將標誌暫存器內容送入 CX 備份 and ax 0fffh 將 AX 的 1215 位置零 push ax 將標誌暫存器的新值壓棧 popf 送入 FLAG pushf 獲取彈棧後標誌暫存器的內容 pop ax 存入 AX and ax 0f000h 如果 1215 位被處理器置 1 則為 80868088 cmp ax 0f000h je end_cpu_type_8688 跳轉至對應程式碼 對於 80286 系列處理器，在真實模式下這些位始終被清零，在保護模式下，其用於 IO 特權級別和巢狀任務（NT），其檢測方法如下，程式碼接上述程式碼執行 or cx 0f000h 將 1215 位置 1 push cx 壓棧 popf 將棧內容彈入標誌暫存器 pushf 獲取標誌暫存器並存入 AX pop ax and ax 0f000h 若 1215 位位 0 則為 286 jz end_cpu_type_286 判斷 8038680486 檢測 386486 處理器的原理與上述程式碼相同，但檢測的位有所區別，486 處理器中引入了一個 AC 標誌位，並將把它置 1，其對於 386 而言是無效的，故 386 處理器將其置零，其實現如下 pushfd；EFLAGS 壓棧 pop eax ；獲取原始 EFLAGS mov ecx eax ；儲存原來的 EFLAGS xor eax 40000h 翻轉 EFLAGS 中的 AC 位 push eax ；將新的 EFLAGS 壓棧 popfd 中；替換當前的 EFLAGS 值 pushfd；獲取新的 EFLAGS pop eax ；將新的 EFLAGS 儲存在 EAX xor eax ecx 中；無法反轉 AC 則為 386 jz end_cpu_type_386 ；如果 80386 處理器 此外，80386 處理器的 EDX 暫存器在處理器被硬體復位後將被初始化為處理器的修訂版本號。 檢測 80486 或奔騰（i586） 奔騰處理器支援使用 CPUID 指令，因此其標誌位中設定了一個被稱為 ID 的特殊標誌，若該標誌存在，則對應的處理器支援 CPUID，檢測實現如下 mov eax ecx 獲取原始 EFLAGS xor eax 200000h ；翻轉 EFLAGS 中的 ID 位 push eax ；將新的 EFLAGS 值儲存在堆疊 popfd 中；替換當前的 EFLAGS 值 pushfd ；獲取新的 EFLAGS pop eax ；將新的 EFLAGS 儲存在 EAX xor eax ecx 中；可切換則為奔騰或 486SL jne end_cpu_type_586 關於上述方法的注意事項 該演算法無法檢測 80186 處理器（雖然其並未被廣泛使用），8018688 處理器包 80286 中包含的大部分新指令和異常，包括 PUSHAPOPA、PUSH、SHL 和無效操作碼異常。8018688 中唯一沒有實現的是專門用於保護模式的指令和異常。未能檢測到此處理器可能會禁止使用某些可以利用這些新指令和異常的軟體。 同時，由於 PUSHFPOPF 是 Ring0 指令，故該演算法只能在真實模式中執行，保護模式作業系統中執行的應用程式無法使用這個方法，除非處理器以及作業系統支援虛擬模式擴充套件（VME）。 以上演算法僅供參考與學習，在使用非英特爾處理器，完全軟體虛擬化（Full emulation）的虛擬機器或其他平臺上，該演算法很有可能無法正確判斷處理器支援的指令集。考慮到奔騰已經是近 30 年前的處理器，除非有必要在古老的計算機上檢測 CPU，否則不應該再使用這種演算法，而是直接呼叫 CPUID 指令。 對於非 x86 架構的 CPU，仍然需要精心設計的程式碼判斷其差別（例如使用 MOVE 的特權要求判斷摩托羅拉 68000 和 68010），但大多數架構都要求具體實現者提供相應的暫存器以提供區分和判斷處理器（例如 ARM64 的 ID_AA64 暫存器）。 呼叫 CPUID CPUID 指令的操作碼是 0F A2。CPUID 沒有顯式的運算元，其隱式使用 EAX 或 EAX 與 ECX 中的值作為引數，以確定要獲取的資訊。在英特爾指令集手冊中，CPUID 的輸入引數（EAX），被稱為 葉（Leaf），AMD 稱其為 功能碼（Function Number），執行 CPUID 後，返回值將被寫入 EAX，EBX，ECX 和 EDX 暫存器內。此外，在使用一些特殊的輸入引數時，必須同時於 ECX 內寫入第二個輸入引數，否則無法得到有意義的返回值。第二個引數也被稱為 子葉（Sub Leaf）或 子功能碼（Sub Function）。 注意，當且僅當 MSR 暫存器 IA32_MISC_ENABLEBOOT_NT4 的第 22 位為 0 時，EAX 大於 3 的輸入才是有意義的。當且僅當該位被設為 1 時，Windows NT 40 SP6 以前的作業系統才能正常啟動。 截止到 2022 年，對於一些常見的處理器架構，最大的有效的基礎輸入是 0x20 GoldenCove），0x10（Zen4 最大有效的擴充套件輸入是 0x80000008（GoldenCove），0x80000028（Zen4）。 EAX0 最高基礎輸入引數與製造商 ID 輸入引數位 0 時，CPUID 返回對當前處理器有意義的（即被當前架構所實現的）最大輸入引數以及 ASCII 編碼的製造商 ID（Manufacturer ID）。 最大輸入引數被寫入 EAX 暫存器中，對於英特爾和 AMD 處理器，已知的返回值如下表所示： 英特爾處理器架構所實現的最高 CPUID 輸入 架構 基礎輸入 擴充套件輸入 80486 及以前 不支援 CPUID 指令 不支援 CPUID 指令 486 和 P5 0x01 不支援 P6 0x02 不支援 P6（奔騰 III） 0x03 不支援 Netbrust 0x02 0x8000 0004 Netbrust（64 位） 0x05 0x8000 0008 Core 0x0A 0x8000 0008 Core（Penryn） 0x0D 0x8000 0008 Bonnell 0x0A 0x8000 0008 Nehalem 0x0B 0x8000 0008 Sandy Bridge 0x0D 0x8000 0008 Skylake 0x16 0x8000 0008 SunnyCove 0x1B 0x8000 0008 SunnyCove Alder Lake 0x20 0x8000 0008 SunnyCove Sapphire Rapids 0x8000 0008 AMD 處理器架構所實現的最高 CPUID 輸入 架構 基礎輸入 擴充套件輸入 K5 以前 不支援 CPUID 指令 不支援 CPUID 指令 K5 0x1 不支援 K5（Krypton） 0x1 0x8000 0005 K6 0x1 0x8000 0006 K7 0x1 0x8000 0007 K8 0x1 0x8000 0018 K10 0x5 0x8000 001B K10（Llanro） 0x6 0x8000 001B Bulldozer 0xD 0x8000 001E Zen 0xD 0x8000 001F Zen2 0x10 0x8000 0020 Zen3 0x10 0x8000 0023 Zen4 0x10 0x8000 0028 製造商 ID 含有 12 個字元，以 EBXEDXECX 的順序拼接，例如在英特爾處理器上將返回 GenuineIntel，具體的返回值如下表所示： 暫存器 16 進位制值 ASCII EBX 756E6547 Genu ECX 6C65746E ntel EDX 49656E69 ineI 已知的製造商以及其 ID 如下： AMDisbetter AMD K5 的早期工程樣品 AuthenticAMD AMD CentaurHauls IDT 半人馬座（Centaur） 兆芯 CyrixInstead Cyrix 意法半導體 IBM GenuineIntel 英特爾 TransmetaCPU 全美達 GenuineTMx86 全美達 Geode by NSC 國家半導體 NexGenDriven NexGen RiseRiseRise Rise SiS SiS SiS 矽統 UMC UMC UMC 聯華電子（臺聯電） VIA VIA VIA 威盛 Vortex86 SoC DMP Vortex86 Shanghai 兆芯 HygonGenuine 海光 Genuine RDC RDC E2K MACHINE MCST Elbrus 已知的軟核 x86 處理器 ID MiSTer AO486 ao486 GenuineIntel v586 已知的 x86 虛擬機器 ID bhyve bhyve bhyve KVMKVMKVM KVM TCGTCGTCGTCG QEMU Microsoft Hv HyperV MicrosoftXTA 微軟 x86 到 ARM 轉譯器 lrpepyh vr Parallels VMwareVMware VMware XenVMMXenVMM Xen HVM ACRNACRNACRN Project ACRN QNXQVMBSQG QNX GenuineIntel 蘋果 羅塞塔 2 x86 到 ARM 轉譯器 VirtualApple 蘋果 羅塞塔 2 x86 到 ARM 轉譯器 使用 GNU 格式組合語言獲取製造商 ID 和最高輸入的例子： data s0 asciz CPUID xn s1 asciz Largest basic function number implemented in s2 asciz Vendor ID 12sn text align 32 globl main main pushq rbp movq rsp rbp subq 16 rsp movl 1 eax cpuid leaq s0 rip rdi movl eax esi xorl eax eax call printf pushq rbx xorl eax eax cpuid movl ebx8 rsp movl edx12 rsp movl ecx16 rsp popq rbx leaq s1 rip rdi movl eax esi xorl eax eax call printf leaq s2 rip rdi movq rsp rsi xorl eax eax call printf movq rbp rsp popq rbp ret movl 1 eax int 0x80 EAX1 處理器資訊和特性 該引數在 EAX 中返回處理器的版本資訊，這些資訊也被稱為 簽名（signature），一般而言，對於使用同一工藝製造的同一架構的處理器，其簽名是相同的，故該資訊可被用於判斷架構和工藝。其包含的內容以及意義如下： EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX EAX 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 保留 0 保留 0 保留 0 保留 0 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件系列號（Extended Family ID） 擴充套件型號（Extended Model） 擴充套件型號（Extended Model） 擴充套件型號（Extended Model） 擴充套件型號（Extended Model） 保留 0 保留 0 處理器型別（Type） 處理器型別（Type） 系列號（Family） 系列號（Family） 系列號（Family） 系列號（Family） 型號（Model） 型號（Model） 型號（Model） 型號（Model） 步進（Stepping） 步進（Stepping） 步進（Stepping） 步進（Stepping） 關於版本資訊的注意事項： 若系列號部分為 0xF，則實際的系列號為 EAX 中系列號欄位和擴充套件系列號欄位的和，反之實際系列號與 EAX 中欄位相同。 若系列號部分為 0xF 或 6，則實際的型號為 EAX 中擴充套件型號欄位左移四位後與型號欄位的和，反之實際型號與 EAX 中欄位相同。 上述內容用偽程式碼表示： IF Family_ID 0FH THEN DisplayFamily Family_ID ELSE DisplayFamily Extended_Family_ID Family_ID END IF Family_ID 06H or Family_ID 0FH THEN DisplayModel Extended_Model_ID 4 Model_ID ELSE DisplayModel Model_ID END 步進表示對處理器的修正或使用不同工藝製造，其具體意義應當參考處理器廠商所釋出的手冊。 其中，處理器型別（Type）的編碼如下： 型別 二進位制編碼 預設，一般 OEM 處理器 00 Overdrive 處理器 01 雙處理器 10 保留 11 EBX 中返回處理器的附加資訊，其內容被分為以下幾個欄位： 欄位 EBX 說明 70 處理器名稱索引號（Brand Index） 158 CLFLUSH 指令清除快取的大小 僅當 CPU 支援 CLFLUSH 指令時 （CPUID01EDXCLFSH bit 19 1）有效 2316 對於 AMD 處理器，若 HTT 標誌（位於 CPUID Fn0000_0001_EDX）為 1，則該欄位為該處理器的邏輯核心（即執行緒）數，反之，該欄位無意義且為 0。 對於 Intel 處理器，若與上述相同位置的 HT 標誌有效，則該欄位代表該架構處理器中可定址的最大 APIC ID 數量，（注意：這個值不是邏輯處理器數），在奔騰 4HT 及以前的處理器中，該欄位代表每個物理核心對應的邏輯處理器數量。 無論是何種處理器，該欄位只在 HT 標誌有效時有意義。 3124 初始 Local APIC ID 該值已被 x2APIC ID 取代 ECX 和 EDX 返回處理器實現的功能，一個二進位制位代表一個功能，該位為 1 是表示處理器支援該功能，反之則不支援，各位對應功能或指令如下： 位 EDX EDX ECX ECX 位 簡稱 描述 簡稱 描述 0 fpu 整合 FPU（Onboard x87 FPU） sse3 流式 SIMD 擴充套件 3（SSE3 或 Prescott 新指令（PNI）） 1 vme 虛擬 8086 模式擴充套件（Virtual 8086 mode extensions） pclmulqdq PCLMULQDQ 指令 2 de 除錯擴充套件（Debugging extensions CR4 bit 3 dtes64 64 位 Debug store edx bit 21 3 pse 頁尺寸擴充套件（Page Size Extension） monitor MONITOR 和 MWAIT 指令 4 tsc 時鐘週期計數器（Time Stamp Counter） dscpl CPL qualified debug store 5 msr 特殊模組暫存器（ModelSpecific Registers） vmx 虛擬機器擴充套件（Virtual Machine eXtensions，VMX） 6 pae 物理地址擴充套件（Physical Address Extension） smx 安全模式擴充套件（Safer Mode Extensions） 7 mce 機器檢查異常（Machine Check Exception） est 增強 SpeedStep（Enhanced Intel SpeedStep，EIST） 8 cx8 CMPXCHG8 指令 tm2 溫度感測器 2（Thermal Monitor 2） 9 apic 整合高階可程式設計中斷控制器（Advanced Programmable Interrupt Controller） ssse3 流式 SIMD 擴充套件 3 補充指令集（Supplemental SSE3，SSSE3） 10 保留 保留 cnxtid 一級快取上下文 ID（L1 Context ID） 11 sep SYSENTER 和 SYSEXIT 指令 sdbg Silicon Debug interface 12 mtrr 記憶體類型範圍暫存器（Memory Type Range Registers） fma 3 運算元融合乘加（Fused multiplyadd 3，FMA3 13 pge 全域性分頁控制位（Page Global Enable bit in CR4） cx16 CMPXCHG16B 指令 14 mca 機器檢查架構（Machine check architecture） xtpr Can disable sending task priority messages 15 cmov 條件傳送指令（CMOV） pdcm Perfmon debug capability 16 pat 頁屬性表（Page Attribute Table） 保留 保留 17 pse36 36 位頁尺寸擴充套件（36bit page size extension） pcid Process context identifiers CR4 bit 17 18 psn 處理器序列號（Processor Serial Number） dca Direct cache access for DMA writes 19 clfsh CLFLUSH 指令 sse41 流式 SIMD 擴充套件 41（SSE41） 20 保留 保留 sse42 流式 SIMD 擴充套件 42（SSE42） 21 ds 除錯儲存（Debug store） x2apic x2APIC 22 acpi 整合 ACPI 溫控暫存器（Onboard thermal control MSRs for ACPI） movbe MOVBE 指令 23 mmx 多媒體擴充套件（MMX） popcnt POPCNT 指令 24 fxsr FXSAVE，FXRESTOR 指令 tscdeadline APIC implements oneshot operation using a TSC deadline value 25 sse 流式 SIMD 擴充套件（SSE 或 Katmai 新指令） aes AES 指令集 26 sse2 流式 SIMD 擴充套件 2（SSE2） xsave XSAVE XRESTOR XSETBV XGETBV 指令 27 ss 自窺探快取（selfsnoop cache） osxsave 作業系統啟用 XSAVE 28 htt 超執行緒（Hyperthreading） avx 高階向量擴充套件（Advanced Vector Extensions，AVX） 29 tm 自控溫溫度感測器（Thermal monitor automatically limits temperature） f16c F16C 指令集 30 ia64 基於 IA64 架構的處理器 rdrnd 整合隨機數發生器 onchip random number generator） 31 pbe 掛起中斷（Pending Break Enable） hypervisor 當前為虛擬機器環境 EAX2 快取和 TLB 資訊（英特爾） 對於英特爾處理器，EAX2 將返回處理器快取，TLB 和預取器資訊，這些資訊被編碼為數個 1 位元組資訊返回於 EAX，EBX，ECX 和 EDX 四個暫存器中，編碼規則如下： EAX 暫存器返回值的最低位（LSB）一定是 1，它不代表任何資訊，軟體讀取時應當將其忽略。 每個暫存器返回值的最高位（MSB）代表該暫存器中的值是否有效，若 MSB 為 0，則該暫存器包含有意義的資訊，反之則代表該暫存器為保留值且無意義。 若某一暫存器內的返回值有意義，則其應當被分割為 4 個等長部分，每部分長度為 8 為，即一位元組，每部分代表了一個快取 TLB 或預取器的資訊，具體編碼見英特爾所發行的官方手冊 Intel 64 and IA32 Architectures Software Developer Manuals 卷 2A 中關於 CPUID 指令的表 312。（截至 20232，該表位於 Vol2A，3245 到 3248 頁）。 關於 EAX2 的注意事項 代表快取 TLB 預取的編碼位元組沒有特定的順序，不存在 某個暫存器的某個位元組對應於哪一級別的快取。 使用 EAX2 是獲取英特爾處理器快取資訊的傳統方法，但由於快取型別迅速增多，使用該方法已經無法高效的獲取資訊，故對於較新的（一般認為是 Core 及以後）的英特爾處理器，返回值的編碼中可能包含類似 0xFF 或 0 的空描述符，對於此種情況，應當使用更新的方法（EAX4）獲取快取資訊。 對於 AMD 處理器，EAX2 是保留項。四個暫存器都將返回 0。 EAX3 處理器序列號（英特爾） 以 3 作為輸入引數時，CPUID 將在 ECX 和 EDX 暫存器中返回處理器序列號。 關於 EAX3 的注意事項 該引數僅在使用核心代號為 Katmai 和 Coppermine 的奔騰 III 處理器上可用，處理器序列號是一個獨一無二的 96 位長的二進位制數（實際只使用了 64 位），每個處理器僅對應一個序列號，透過序列號可用追蹤該處理器從生產到銷售使用的全部流程，英特爾自稱引入該功能的原因是 為了提高電子商務安全性，例如只能在某臺電腦上使用某張銀行卡，但其在中美歐等多個國家和地區引起了強烈的隱私和國家安全問題爭議，民間認為該功能侵犯了使用者隱私權，居心不良者可用該功能追蹤他人的計算機，且一旦英特爾的序列號資料庫洩露，將帶來難以估量的損失，而多國的國家安全機關認為，敵對國家的情報部門可以使用該功能輕而易舉的記錄並分析計算機活動，迫於市場壓力，英特爾從核心代號 Tulatin 的奔騰 III 處理器開始停用了這一功能，且在奔騰 4 以及 Core 處理器等後續產品上再未使用過該功能。 對於 AMD 處理器，EAX3 是保留項。四個暫存器都將返回 0。 EAX4 快取引數（英特爾） 以 4 作為 EAX 輸入引數時，CPUID 依據 ECX 暫存器中輸入的第二個引數（也稱為子葉）返回處理器快取資訊。 EAX 返回快取型別資訊，值分為以下幾個欄位 EAX EAX EAX 位 內容 備註 40 快取型別 00：空 01：資料快取 10：指令快取 11：資料和指令快取 75 快取級別 從 1 開始 8 自初始化快取標誌 為 1 則支援自初始化，反之需要軟體初始化 9 全相聯快取標誌 同上 1310 保留 0 保留 0 2514 最大共享此快取的執行緒數 1 指邏輯處理器，需考慮超執行緒 2 為最大值，不一定代表真實值 3 用於計算時將該欄位值 1 3126 最大可定址的核心 ID 同上 EBX，ECX 返回快取尺寸資訊，返回值各個欄位如下： EBX EBX EBX 位 內容 備註 110 快取線尺寸（Line Size，L） 1 以位元組為單位 2 真實值為該欄位 1 2112 物理快取分割槽數（Physical Line partitions，P） 真實值為該欄位 1 3122 快取組行數（Ways of associativity，W） 同上 ECX 返回組相聯快取的的組數（Sets，S）。 關於 EAX4 的注意事項 關於子葉的意義以及最大支援的子葉 英特爾並未在其釋出的官方手冊中定義子葉與快取的絕對對應關係，也未說明最大支援的子葉，上述關係表格只是軟硬體工程師的總結，但截止到 2023 年的 SunnyCove 架構，所有的英特爾處理器都遵守這一對應關係。 在面對一個全新的英特爾架構時，應當假定上述對應關係與最大子葉數不存在，並透過該指令判斷，其中對應關係由上述 EAX 中的返回值相應欄位確定，最大子葉值由以下方法判斷：在 EAX 輸入 4，ECX 中的初始值為 0 並執行 CPUID 指令，每次執行後將 ECX 內值加 1，EAX 仍為 4，直到四個暫存器的返回值全部為 0，則使返回值不為 0 的最大 ECX 輸入就是最大支援的子葉。 對於 AMD 處理器，EAX3 是保留項。四個暫存器都將返回 0。 關於快取尺寸的計算 英特爾 SDM 手冊中未直接給出讀取快取尺寸的方法，但可以透過如下公式計算： CW1P1L1S1 其中 C 為以位元組為單位的快取大小，W，P，L，S 為讀取該快取時返回值的相應欄位。 x86 外的特定 CPU 識別資訊 一些非 x86 的 CPU 架構也提供了有關處理器能力的某種形式的結構化資訊，通常作為一組特殊暫存器： ARM 架構有一個 CPUID 協處理器暫存器。 大型機處理器自 1983 年的起支援 Store CPU ID（STIDP）指令，用於查詢處理器 ID。 MIPS32 架構定義了一個強制性的 Processor Identification（PrId）和一系列菊花鏈 配置暫存器。 PowerPC 處理器有 32 位只讀的 PVR 暫存器來識別使用的處理器型號。 參見 CPUZ，一個使用 CPUID 等資訊識別系統配置的 Windows 實用工具。 CPUX，一個使用 CPUID 等資訊識別系統配置的 Linux 實用工具。 cpuid，類 Unix 作業系統下的讀取 CPUID 的實用工具。 參考資料 CategoryX86 架構 Category 機器碼