CPUID

x86アーキテクチャにおいて、CPUID命令(CPUIDオペコードで識別される)はプロセッサ補助命令(「 CPU Identification」に由来する)であり、ソフトウェアがプロセッサの詳細情報を取得できるようにします。これは、1993年にIntelによってPentiumおよび後期486プロセッサの発売時に導入されました。[ 1 ]

プログラムは を使用して、プロセッサの種類や、 MMX / SSECPUIDなどの機能が実装されているかどうかを判断できます。

歴史

この命令が一般に利用可能になる前はCPUID、プログラマーはCPUの動作のわずかな違いを利用してプロセッサーのメーカーとモデルを判別する難解なマシンコードを書いていました。 [ 2 ] [ 3 ] [ 4 ] [ 5 ] 80386プロセッサーの導入により、リセット時のEDXはリビジョンを示しましたが、これはリセット後にのみ読み取ることができ、アプリケーションが値を読み取るための標準的な方法は存在しませんでした。

x86 ファミリ以外では、開発者はほとんどの場合、CPU 設計のバリエーションを判断するために難解なプロセス (命令のタイミングや CPU 障害のトリガーを含む) を使用する必要があります。

例えば、モトローラ68000シリーズCPUIDでは、いかなる種類の命令も存在しませんでしたが、特定の命令には昇格された権限が必要でした。これらの権限によって、CPUファミリーの異なるCPUを区別することができました。モトローラ68010では、SRからのMOVE命令が特権命令になりました。68000ではSRからのMOVE命令非特権命令として提供されていたため、CPUエラー状態をトリガーすることで、2つの異なるCPUを区別することができました。

命令は x86 アーキテクチャに固有ですがCPUID、他のアーキテクチャ (ARM など) では、規定の方法で読み取って x86 命令によって提供されるのと同じ種類の情報を取得できるオンチップ レジスタが提供されることがよくありCPUIDます。

CPUIDの呼び出し

オペコードCPUIDは です0F A2

アセンブリ言語では、このCPUID命令はパラメータを取りません。EAXCPUIDレジスタを暗黙的に使用して、返される情報の主なカテゴリを決定します。Intelの最近の用語では、これはCPUIDリーフと呼ばれます。を最初CPUIDに呼び出す必要がありますEAX = 0。これは、CPUが実装する最大のEAX呼び出しパラメータ(リーフ)をEAXレジスタに格納するためです。

拡張機能情報を取得するには、CPUIDEAXの最上位ビットをセットして呼び出します。拡張機能呼び出しパラメータの最上位値を決定するには、 を呼び出しCPUIDますEAX = 80000000h

CPUIDリーフのうち3以上80000000未満のものには、モデル固有レジスタのIA32_MISC_ENABLE.BOOT_NT4 [ビット22] = 0(デフォルト)が設定されている場合にのみアクセスできます。名前が示すように、Windows NT 4.0 SP6まではこのビットが設定されていないと正常に起動しませんでしたが[ 6 ]、それ以降のバージョンのWindowsではこのビットは不要であるため、現在のWindowsシステムでは4より大きい基本リーフが表示されていると想定できます。2024年4月現在、有効な基本リーフは23hまでですが、一部のリーフから返される情報は公開されているドキュメントには記載されていません。つまり、それらは「予約済み」となっています。

最近追加されたリーフの中にはサブリーフを持つものもあり、それらは を呼び出す前に ECX レジスタを介して選択されますCPUID

EAX=0: 最高機能パラメータとメーカーID

これはCPUの製造元ID文字列(EBX、EDX、ECX(この順)に格納された12文字のASCII文字列)を返します。EAXには、呼び出し前にEAXに設定できる最大の基本呼び出しパラメータ(値CPUID)が返されます。

以下にプロセッサと実装されている最高機能の一覧を示します。

最高機能パラメータ
プロセッサ基本拡張
以前のIntel 486CPUIDは実装されていません
その後のIntel 486とPentium0x01実装されていません
Pentium ProPentium IICeleron0x02実装されていません
ペンティアムIII0x03実装されていません
ペンティアム40x020x8000 0004
ゼオン0x020x8000 0004
ペンティアムM0x020x8000 0004
ハイパースレッディング対応Pentium 40x050x8000 0008
ペンティアムD(8xx)0x050x8000 0008
ペンティアムD(9xx)0x060x8000 0008
コアデュオ0x0A0x8000 0008
コア2デュオ0x0A0x8000 0008
Xeon 3000、5100、5200、5300、54005000シリーズ0x0A0x8000 0008
Core 2 Duo 8000シリーズ0x0D0x8000 0008
Xeon 5200、5400シリーズ0x0A0x8000 0008
原子0x0A0x8000 0008
Nehalemベースのプロセッサ0x0B0x8000 0008
Ivy Bridgeベースのプロセッサ 0x0D 0x8000 0008
Skylakeベースのプロセッサ (プロセッサ ベース & 最大周波数; バス参照周波数) 0x16 0x8000 0008
システムオンチップベンダー属性列挙メインリーフ 0x17 0x8000 0008
Meteor Lakeベースのプロセッサ 0x23 0x8000 0008

既知のプロセッサ製造元 ID 文字列は次のとおりです。

以下はオープンソースのソフト CPU コアで使用される ID 文字列です。

  • "GenuineAO486" – ao486 CPU(旧型)[ 13 ] [ 14 ]
  • "MiSTer AO486" – ao486 CPU(新)[ 15 ] [ 14 ]
  • "GenuineIntel" – v586コア[ 16 ](これはIntel ID文字列と同一)

以下は仮想マシンの既知の ID 文字列です。

例えば、GenuineIntelプロセッサでは、EBX に返される値は0x756e6547、EDX に返される値は0x49656e69、ECX に返される値は です0x6c65746e。次のサンプルコードは、ベンダーID文字列と、CPU が実装する最大の呼び出しパラメータを表示します。

.intel_syntaxプレフィックスなし。文章.m0: .string "CPUID: %x\n".m1: .string "実装されている最大基本関数番号: %i\n".m2: .string "ベンダーID: %s\n".globlメイン主要:R12を押すmov eax , 1サブrsp 16cpuidlea rdi , .m0 [ rip ]mov esi eaxprintfを呼び出すxor eax eaxcpuidlea rdi , .m1 [ rip ]mov esi eaxmov r12d edxmov ebp ecxprintfを呼び出すmov 3 [ rsp ], ebxレアrsi 3 [ rsp ]lea rdi , .m2 [ rip ]mov 7 [ rsp ], r12dmov 11 [ rsp ], ebpprintfを呼び出すrspを追加16ポップr12ret.section .note.GNU -スタック"" @ progbits

一部のプロセッサでは、CPUID.(EAX=0)命令を用いて特定のMSR(モデル固有レジスタ)に新しいID文字列を書き込むことで、CPUID.(EAX=0)によって報告される製造元ID文字列を変更することが可能WRMSRです。これは、Intel以外のプロセッサにおいて、ID文字列を返さないCPU向けにソフトウェアで無効化されている機能や最適化を有効にするために利用されてきましたGenuineIntel[ 28 ]このようなMSRを持つことが知られているプロセッサには、以下のものがあります。

製造元ID MSRを持つプロセッサ
プロセッサMSR
IDTウィンチップ108h-109h[ 29 ]
C3C7経由1108h-1109h[ 30 ]
VIAナノ1206h-1207h[ 31 ]
トランスメタ・クルーソーエフィセオン80860001h-80860003h[ 32 ] [ 33 ]
AMDジオードGX、LX3000h-3001h[ 34 ]
DM&Pボルテックス86 EX252444300h-52444301h[ 35 ]

EAX=1: プロセッサ情報と機能ビット

これは、CPUのステッピング、モデル、およびファミリー情報をEAXレジスタ(CPUのシグネチャとも呼ばれる)に返し、機能フラグをEDXレジスタとECXレジスタに返し、追加の機能情報をEBXレジスタに返します。 [ 36 ]

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
予約済み 拡大家族ID 拡張モデルID 予約済み プロセッサタイプ 家族ID モデル ステッピングID
  • ステッピング ID は、エラッタの修正やその他の変更により割り当てられる製品リビジョン番号です。
  • 実際のプロセッサモデルは、モデル、拡張モデルID、およびファミリIDフィールドから算出されます。ファミリIDフィールドが6または15の場合、モデルは拡張モデルIDフィールドを4ビット左にシフトしたものとモデルフィールドの合計に等しくなります。それ以外の場合、モデルはモデルフィールドの値に等しくなります。
  • 実際のプロセッサフ​​ァミリは、ファミリIDフィールドと拡張ファミリIDフィールドから算出されます。ファミリIDフィールドが15の場合、ファミリは拡張ファミリIDフィールドとファミリIDフィールドの合計に等しくなります。それ以外の場合、ファミリはファミリIDフィールドの値に等しくなります。
  • プロセッサ タイプ フィールドの意味を以下の表に示します。
プロセッサタイプ
タイプ バイナリでのエンコード
オリジナル機器製造会社(OEM)プロセッサ 00
インテル オーバードライブ プロセッサー01
デュアルプロセッサ(Intel P5 Pentiumプロセッサのみ)[ 37 ]10
予約値 11

2023年10月現在、以下のx86プロセッサフ​​ァミリーIDが知られています。[ 38 ]

CPUID EAX=1: プロセッサフ​​ァミリーID
家族ID +拡張家族IDインテルAMD他の
六角形12月
0h0 該当なし該当なし該当なし
1h1 該当なし該当なし該当なし
2h2 該当なし該当なし該当なし
3h3 []該当なし該当なし
4h4 486486 , [ 39 ] 5x86 ,エランSC4xx/5xx [ 40 ]Cyrix 5x86 , [ 41 ] Cyrix MediaGX , [ 42 ] UMC Green CPU , [ 4 ] MCST Elbrus (ほとんどのモデル), [ 10 ] MiSTer ao486 [ 43 ]
5h5 ペンティアムペンティアムMMXクォークX1000K5K6Cyrix 6x86 , Cyrix MediaGXm , [ 42 ] Geode (NXを除く), NexGen Nx586, [ 4 ] IDT WinChip , IDT WinChip 2, IDT WinChip 3, Transmeta Crusoe , Rise mP6 , SiS 550, DM&P Vortex86 (初期), [ 44 ] RDC IAD 100, MCST Elbrus-8C2 [ 10 ]
6h6 Pentium ProPentium IIPentium IIIPentium MIntel Core(全タイプ)、Intel Atom(全タイプ)、Xeon(NetBurstタイプを除く)、Xeon Phi(KNC を除く) K7:アスロンアスロン XPCyrix 6x86 MX/MII、VIA C3VIA C7VIA Nano、DM&P Vortex86(DX3、EX2 [ 45 ])、Zhaoxin ZX-A/B/C/C+、(Centaur CNS [ 46 ])、MCST Elbrus-12C/16C/2C3 [ 10 ]
7h7 Itanium(IA-32モード) 該当なし趙信開賢、趙信開賢
8h8 [ b ]該当なし該当なし
9h9 該当なし該当なし該当なし
0Ah10 該当なし該当なし該当なし
0Bh11 Xeon Phi(ナイツコーナー)[ 48 ]該当なし該当なし
0Ch12 該当なし該当なし該当なし
0Dh13 該当なし該当なし該当なし
0Eh14 該当なし該当なし該当なし
0Fh15 ネットバースト(Pentium 4) K8/Hammer ( Athlon 64 ) トランスメタ・エフィセオン
10h16 該当なしK10 :天才該当なし
11h17 Itanium 2 [ 49 ](IA-32モード)トゥリオンX2該当なし
12h18 Intel Core(Nova Lake以降)[ 50 ]リャノ該当なし
13h19 Xeon(パンサーコーブ以降)[ 51 ]該当なし該当なし
14h20 該当なしボブキャット該当なし
15h21 該当なしブルドーザー杭打ち機蒸気ローラー掘削機該当なし
16h22 該当なしジャガープーマ該当なし
17h23 該当なし禅1禅2該当なし
18h24 該当なしハイゴン・ディヤーナ
19h25 該当なし禅3禅4該当なし
1Ah26 該当なし禅5、(禅6該当なし
  1. ^ i386プロセッサはこの命令をサポートしていませんEDX のリセット値でファミリ ID を返しますCPUID3h
  2. ^ Pentium 4プロセッサフ​​ァミリでは、Windows NT 4.0との非互換性のため、ファミリIDが意図的に回避されたと報告されています。 [ 47 ]8h
CPUID EAX=1: EBX内の追加情報
ビット EBX 有効
7:0 ブランドインデックス
15:8 CLFLUSHラインサイズ(値 * 8 = キャッシュラインサイズ(バイト単位)) CLFLUSH機能フラグが設定されている 場合。

CPUID.01.EDX.CLFSH [ビット19]= 1

23:16 この物理パッケージ内の論理プロセッサのアドレス指定可能な ID の最大数。

この値より小さくない最も近い2のべき乗の整数は、物理パッケージ内の異なる論理プロセッサをアドレス指定するために予約されている一意の初期APIC IDの数です。[ a ]

旧用法: 物理プロセッサあたりの論理プロセッサ数。ハイパースレッディングテクノロジを搭載したPentium 4プロセッサの場合は2つ。[ 54 ]

ハイパースレッディング機能フラグが設定されている 場合。

CPUID.01.EDX.HTT [ビット28]= 1

31:24 ローカルAPIC ID: 初期APIC-IDは実行中の論理プロセッサを識別するために使用されます。[ b ]Pentium 4 以降のプロセッサ。
  1. ^ 1つのパッケージに128個以上の論理プロセッサを搭載したCPU(例:Intel Xeon Phi 7290 [ 52 ]およびAMD Threadripper Pro 7995WX [ 53 ])では、ビット23:16の値は2のべき乗以外の値に設定されます。
  2. ^ローカルAPIC IDは、cpuid 0Bhリーフ(CPUID.0Bh.EDX[x2APIC-ID])でも識別できます。1つのパッケージに256個以上の論理プロセッサを搭載したCPU(例:Xeon Phi 7290)では、APIC IDが8ビットに収まらないため、リーフ0Bhを使用する必要があります。

プロセッサ情報と機能フラグは製造元によって異なりますが、通常、互換性のために他の製造元では Intel の値が使用されます。

CPUID EAX=1: EDXおよびECXの機能情報
少し EDX ECX [ a ]少し
短い特徴短い特徴
0 fpuオンボードx87 FPU sse3SSE3 (プレスコット新命令- PNI) 0
1 vme仮想8086モード拡張(VIF、VIP、PVIなど) pclmulqdqPCLMULQDQ(キャリーレス乗算)命令 1
2 デバッグ拡張機能(CR4ビット 3) dtes6464ビットデバッグストア(edxビット21) 2
3 プセページサイズ拡張(4 MB ページ) モニターMONITORおよびMWAIT指示(PNI3
4 tscタイムスタンプカウンターRDTSC指示 ds-cplCPL認定デバッグストア 4
5 msrモデル固有のレジスタRDMSR/WRMSR命令 vmx仮想マシン拡張機能5
6 ペイ物理アドレス拡張smxセーフモード拡張機能(LaGrande)(GETSEC説明) 6
7 マクマシンチェック例外EST(東部基準時強化されたスピードステップ7
8 cx8 [ b ]CMPXCHG8B比較スワップ)命令 tm2サーマルモニター28
9 アピック[ c ]オンボードの高度なプログラマブル割り込みコントローラssse3補足SSE3命令 9
10 (mtrr)[ d ](予約済み)cnxt-idL1コンテキストID 10
11 9月[ e ]SYSENTER高速SYSEXITシステムコール命令 sdbgシリコンデバッグインターフェース 11
12 mtrrメモリタイプ範囲レジスタ[ f ]FMAA融合乗算加算(FMA3) 12
13 ページCR4のページグローバル有効化ビットcx16CMPXCHG16B指示[ g ]13
14 mcaマシンチェックアーキテクチャエクスプロールタスク優先度メッセージの送信を無効にすることができます 14
15 cmov条件付き移動:CMOVFCMOVおよびFCOMI命令[ h ]PDCMパフォーマンスモニターとデバッグ機能 15
16 パットページ属性テーブル(予約済み)[ i ]16
17 pse-3636ビットページサイズ拡張PCIDプロセスコンテキスト識別子CR4ビット17) 17
18 プレイステーションプロセッサシリアル番号がサポートされ、有効になっています[ j ]dcaDMA書き込みのための直接キャッシュアクセス[ 65 ] [ 66 ]18
19 クルフシュCLFLUSHキャッシュラインフラッシュ命令(SSE2sse4.1SSE4.1命令 19
20 (nx) 実行禁止(NX)ビットItaniumのみ、他のCPUでは予約済み)[ 67 ] [ k ]sse4.2SSE4.2命令 20
21 dsデバッグストア: 実行されたジャンプのトレースを保存する x2apicx2APIC(拡張APIC) 21
22 acpiACPI用オンボード熱制御MSR動くMOVBE命令(ビッグエンディアン22
23 mmxMMX命令(64ビットSIMD) 人口POPCNT命令 23
24 fxsrFXSAVEFXRSTOR命令、CR4ビット9 TSC締め切りAPICはTSC期限値を使用してワンショット操作を実装します 24
25 sseストリーミング SIMD 拡張命令 (SSE) (別名「Katmai New Instructions」、128 ビット SIMD) アエスニAES命令セット25
26 sse2SSE2命令 xsave拡張可能なプロセッサ状態の保存/復元: XSAVE、、、命令 XRSTORXSETBVXGETBV26
27 ssCPUキャッシュは自己スヌープを実装するosxsaveXSAVEOSによって有効化 27
28 htt最大APIC ID予約フィールドは有効です[ l ]avx高度なベクトル拡張(256 ビット SIMD) 28
29 温度モニターが自動的に温度を制限します f16cFP16形式 との間の浮動小数点変換命令29
30 ia64x86をエミュレートするIA64プロセッサ[ 67 ]3番目RDRAND(オンチップ乱数発生器)機能 30
31 pbe保留中のブレーク イネーブル (PBE# ピン) ウェイクアップ機能 ハイパーバイザーハイパーバイザーあり(物理CPUでは常にゼロ)[ 70 ] [ 71 ] [ 72 ]31
  1. ^一部の古いプロセッサでは、リーフインデックス(EAX)を0より大きい値で実行するリーフインデックスを1にしてCPUID実行する前に、EBXとECXを0にすることをお勧めしますCPUID

    この動作を示すことが知られているプロセッサには、Cyrix MII [ 55 ]とIDT WinChip 2 [ 56 ]がある。

  2. ^ IDT、Transmeta、Riseのプロセッサ(ベンダーIDがCentaurHauls、 、GenuineTMx86RiseRiseRiseでは、このCMPXCHG8B命令は常にサポートされますが、この命令の機能ビットが設定されていない可能性があります。これはWindows NTのバグに対する回避策です。 [ 57 ]
  3. ^初期のAMD K5AuthenticAMDファミリー5モデル0)プロセッサのみ、EDXビット9はPGEのサポートを示していました。これはK5モデル1以降、ビット13に移動されました。 [ 58 ]
  4. ^ Intel AP-485、リビジョン006 [ 59 ]から008では、 CPUID.(EAX=1):EDX[ビット10]が「MTRR」という名前でリストされています(ただし、「予約済み」/「その値に頼らないでください」と説明されています)。この名前はAP-485の後のリビジョンで削除され、それ以降、このビットは名前なしで予約済みとしてリストされています。
  5. ^ Pentium Proのみ、EDXビット11は無効です。ビットは設定されていますが、Pentium Proでは命令はサポートされていません。 [ 60 ]GenuineIntelSYSENTERSYSEXIT
  6. ^ MTRRの場合、追加機能情報はCPUIDではなく、読み取り専用のMTRRCAPMSR(MSR0FEh)を通じて取得できます。このMSRのレイアウトは以下のとおりです。
    ビット使用法
    7:0可変範囲MTRRの数
    8固定範囲MTRRをサポート
    9(予約済み)
    10書き込み結合メモリタイプをサポート
    11SMRR(システム管理範囲レジスタ)をサポート
    12PRMRR(プロセッサ予約メモリ範囲レジスタ、SGXの一部)をサポート
    13SMRR2をサポート[ 61 ]
    14SMRRロック対応
    15SEAMRR(SEcure Arbitration Mode Range Register、 TDXの一部)をサポート[ 62 ]
    63:16(予約済み)
  7. ^初期のIntel 64プロセッサの中には、CMPXCHG16B命令をサポートしていないにもかかわらず機能ビットが設定されているものがあります。これは、GenuineIntelファミリー0Fhモデル3ステッピング4チップ(90nm Pentium 4)にのみ適用されます。 [ 63 ]
  8. ^FCMOVおよびFCOMI命令は、オンボード x87 FPU も存在する場合にのみ利用可能です (EDX ビット 0 で示されます)。
  9. ^ ECXビット16は、IntelおよびAMDの公開ドキュメントでは「予約済み」と記載されており、既知のプロセッサでは設定されていません。ただし、 Windows Vistaカーネルの一部のバージョンではこのビットをチェックしていると報告されています[ 64 ]。このビットが設定されている場合、Vistaはそれを「プロセッサチャネル」機能として認識します。
  10. ^ PSN(プロセッサシリアル番号)をサポートするIntelおよびTransmeta [ 32 ]119h CPUでは、MSR (のビット21を1に設定することでPSNを無効にすることができます。BBL_CR_CTLこれを行うと、リーフ3が削除され、 CPUID.(EAX = 1):EDX[ビット18]が0を返します。
  11. ^ Itanium以外のx86プロセッサでは、 No-executeビットのサポートはCPUID.(EAX=8000_0001):EDX[ビット 20]で示されます。
  12. ^ EDXビット28が設定されている場合、CPUID.(EAX=1):EBXのビット23:16が有効であることを示します。このビットが設定されていない場合、CPUパッケージには論理プロセッサが1つだけ含まれています。

    古いドキュメントでは、このビットは「ハイパースレッディングテクノロジー」フラグとして記載されていることがよくあります[ 68 ]。ただし、このフラグはハイパースレッディングサポートの前提条件ですが、それ自体ではハイパースレッディングのサポートを示すものではなく、マルチスレッディングテクノロジーを搭載していない多くのCPUで設定されています[ 69 ] 。

予約フィールドは、プロセッサ識別目的で使用する前にマスクする必要があります。

EAX=2: キャッシュおよびTLB記述子情報

これは、EAX、EBX、ECX、EDX レジスタ内の キャッシュおよびTLB機能を示す記述子のリストを返します。

このリーフをサポートするプロセッサでは、CPUIDEAX=2 で呼び出すと、EAX の下位バイトが01h[ a ]に設定され、EAX/EBX/ECX/EDX の残りの 15 バイトに 1 バイトずつ 15 個の記述子が格納されます。これらの記述子は、プロセッサのキャッシュ、TLB、およびプリフェッチに関する情報を提供します。通常、記述子 1 つにつき 1 つのキャッシュまたは TLB が含まれますが、一部の記述子値は他の情報も提供します。具体的には、 は00h空の記述子に使用され、リーフにFFh有効なキャッシュ情報が含まれていないため、代わりにリーフ 4h を使用する必要があることを示します。また、 はFEhリーフに有効な TLB 情報が含まれていないため、代わりにリーフ 18h を使用する必要があることを示します。記述子は任意の順序で出現できます。

4 つのレジスタ (EAX、EBX、ECX、EDX) のそれぞれについて、ビット 31 が設定されている場合、レジスタには有効な記述子が含まれているとは見なされません (たとえば、IA-32 モードの Itanium では、CPUID(EAX=2) が80000000hEDX で返されます。これは、EDX に 512K L2 キャッシュの記述子が含まれているという意味ではなく、有効な情報が含まれていないという意味と解釈されます)。

以下の表は、既知の記述子値について、その記述子値(または該当する場合はその他の情報)が示すキャッシュまたはTLBの簡潔な説明を示しています。表で使用されている接尾辞は以下のとおりです。

  • K、M、G : バイナリ キロバイト、メガバイト、ギガバイト (キャッシュの容量、TLB のページ サイズ)
  • E : エントリ(TLBの場合、例:64E = 64エントリ)
  • p : ページサイズ (例: 各エントリが 1 つの 4 KBページを記述する TLB の場合は 4Kp 、各エントリが 1 つの 4 KB ページまたは 1 つの 2 MB ヒュージページを記述できる TLB の場合は 4K/2Mp)
  • L : キャッシュラインサイズ(例:32L = 32バイトのキャッシュラインサイズ)
  • S : キャッシュセクタサイズ(例:2Sは、キャッシュがそれぞれ2つのキャッシュラインのセクタを使用することを意味します)
  • A : 連想性(例:6A = 6ウェイセットアソシエイティブ、FA = 完全連想性)
キャッシュ/TLB記述子バイトエンコーディングの凡例
レベル1命令またはデータキャッシュ レベル2キャッシュ レベル3キャッシュ 命令またはデータTLB レベル2共有TLB その他の情報 (予約済み)
CPUID EAX=2: キャッシュ/TLB記述子バイトエンコーディング
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
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
1倍 (L1D:16K、4A、32L)[ c ](L1I:16K、4A、32L)[ c ]1倍 (L2C:96K、6A、64L)[ c ]L2C: 128K、2A、64L1倍
2倍 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 ]2倍 (128バイトのプリフェッチ)[ e ]L3C: 4M、8A、64L、2SL1D: 32K、8A、64L2倍
3倍 L1I: 32K、8A、64L3倍 L2C: 128K、4A、64L、2S [ f ]L2C: 192K、6A、64L、2S [ f ]L2C: 128K、2A、64L、2S [ f ]L2C: 256K、4A、64L、2S [ f ]L2C: 384K、6A、64L、2S [ f ]L2C: 512K、4A、64L、2S [ f ]L2C: 256K, 2A, 64L [ g ]3倍
4倍 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 4倍 L2C: 3M、12A、64L L2C/L3C: [ i ] 4M、16A、64L L3C: 6M、12A、64LL3C: 8M、16A、64LL3C: 12M、12A、64LL3C: 16M、16A、64LL2C: 6M、24A、64LITLB: 32E, 4Kp [ j ]4倍
5倍 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 5倍 DTLB: 16E、4Kp、FADTLB: 32E、2M/4Mp、4ADTLB: 64E 4K/4Mp、FADTLB: 128E、4K/4Mp、FADTLB: 256E、4K/4Mp、FA5倍
6倍 L1D: 16K、8A、64LITLB: 48E、4Kp、FA2 つの DTLB: 32E、2M/4Mp、4A + 4E、1Gp、FADTLB: 512E、 4Kp、4AL1D: 8K、4A、64LL1D: 16K、4A、64L 6倍 L1D: 32K、4A、64LDTLB: 64E、4Kp、8ADTLB: 256E、4Kp、8ADTLB: 128E、2M/4Mp、8ADTLB: 16E、1Gp、FA6倍
7倍 トレースキャッシュ12K-μop、8A [ k ]トレースキャッシュ、16K-μop、8Aトレースキャッシュ、32K-μop、8Aトレースキャッシュ、64K-μop、8A [ f ][ h ]ITLB: 8E、2M/4Mp、FA [ l ](L1I: 16K、4A、64L) [ m ] [ h ]7倍 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)[ m ]L2C: 512K、 2A、64L 7倍
8倍 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 8倍 (L3C:2M、4A、64L)[ c ](L3C:4M、4A、64L)[ c ](L3C:8M、4A、64L)[ c ](L3C:3M、12A、128L)[ m ] [ n ]8倍
9倍 (ITLB:64E、FA、 4K-256Mp)[ c ](DTLB: 32E、FA、 4K-256Mp) [ c ]9倍 (DTLB:96E、FA、 4K-256Mp) [ c ]9倍
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 [ 90 ]2つのL2 STLB: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、64LL3C: 12M、24A、64LL3C: 18M、24A、64L [ 93 ]L3C: 24M、24A、64L
FX 64バイトプリフェッチ[ q ]128バイトのプリフェッチ[ q ]FX リーフ2にはTLB情報がないので、リーフ18hを使用してくださいリーフ2にはキャッシュ情報がないので、リーフ4を使用してください FX
x01個2倍3倍4倍5倍6個7倍8倍9倍xAxBxCxDxExF
  1. ^古いIntelのドキュメントでは、EAXに返される値の下位バイトは、すべてのキャッシュ/TLB記述子を取得するためにEAX=2で呼び出す必要がある回数を指定すると説明されていますこのバイトを返し、新しいIntelのドキュメント(SDM rev 053 [ 73 ]以降)では、このバイトの値は であると規定されています。CPUID01h01h
  2. ^ a b記述子とについては0Dh0EhIntel AP-485 rev 37 [ 74 ]にECCを持つと説明されているキャッシュがリストされていますが、これは rev 38 以降の Intel ドキュメントでは削除されました。
  3. ^ a b c d e f g h i記述子10h、、、、、、、、15hItaniumのIA-32動作モードについてのみ文書化さ1Ahれています。[ 75 ]88h89h8Ah90h96h9Bh
  4. ^記述子で記述されるキャッシュは21h、いくつかの場所では(例えばAP-485 rev 36 [ 76 ]、rev 37ではそうではない)、"MLC"(中間レベルキャッシュ)と呼ばれています。
  5. ^ a b c d記述子値26h27h28h81hインテルのドキュメントには記載されておらず、リリースされているCPUでは使用されていない。 (キャンセルされたインテルTimna81hのエンジニアリングサンプルで確認されている。[ 86 ] )ただし、 Windows NTカーネルv5.1(Windows XP )以降では認識されると報告されている。はv5.0( Windows 2000 )でも認識される。[ 87 ]81h
  6. ^ a b c d e f g記述子39h-3Eh73hIntel AP-485のrev 36に記載されていますが、[ 76 ] 、そのうちのいくつかはIntel CPU(主にNetburstベースのCeleron CPU、例えば「Willamette-128」[ 77 ]、「Northwood-128」[ 78 ]、「Prescott-256」[ 79 ]39h )で使用されているにもかかわらず、それ以降のIntelのドキュメントからは削除されています。3Bh3Ch
  7. ^この記述子3Fhは、2024年11月現在、Intelの既知のドキュメントには記載されていないが、Intel Tolapaiプロセッサでは使用されており[ 80 ]、Intelが提供するLinuxカーネルパッチにも記載されている。 [ 81 ]
  8. ^ a b c d VIA Cyrix III "Joshua"プロセッサ(CyrixInsteadファミリー6モデル5)のドキュメントには、このプロセッサがTLBに記述子値74hとを使用し、キャッシュに値とを使用することが記載されているが、これらの記述子値がプロセッサ内のどのキャッシュ/TLBに対応するかは指定されていない。[ 82 ]77h42h82h
  9. ^記述子は49hではレベル 3 キャッシュを示しGenuineIntel、その他の CPU ではレベル 2 キャッシュを示します。
  10. ^ IntelのCPUIDドキュメントでは、記述子で示されるITLBの連想性は規定されていない4Fh。この記述子を使用するプロセッサ(Intel Atom "Bonnell" [ 83 ])は、他の文献では、完全連想型の32エントリITLBを備えていると説明されている。 [ 84 ]
  11. ^ a b CyrixおよびGeode CPU(ベンダーIDCyrixInsteadおよびGeode by NSC)では、記述子70hおよびは80h異なる意味を持つ:[ 85 ]
    • 記述子は70h、4K ページ サイズを持つ 32 エントリの共有命令 + データ 4 ウェイ セット アソシエティブ TLB を示します。
    • 記述子は80h、4 ウェイ セット アソシアティビティと 16 バイトのキャッシュ ライン サイズを持つ 16 KB の共有命令 + データ L1 キャッシュを示します。
  12. ^記述子76hはIntel AP-485のrev 37では1MBのL2キャッシュとして記載されているが[ 74 ]、rev 38以降のすべてのIntelドキュメントでは命令TLBとして記載されている。
  13. ^ a b c記述子77h7EhItanium 28DhのIA-32動作モードについてのみ文書化されています。[ 88 ]
  14. ^ Itanium 2のIA-32動作モードでは、L3キャッシュサイズは実際のキャッシュサイズに関係なく常に3MBと報告されます。 [ 89 ]
  15. ^記述子の場合B1h、TLB 容量は 2 MB ページを使用すると 8 要素ですが、4 MB ページを使用すると 4 要素に減少します。
  16. ^記述子についてはC3h、この記述子を使用する多くのIntelプロセッサは、6ウェイ・セットアソシアティブではなく、12ウェイ・セットアソシアティブのL2 TLBを備えています。これは少なくともSkylake [ 91 ]およびWhiskey/Kaby/Coffee/Comet Lake [ 92 ]のCPUに当てはまります。
  17. ^ a b記述子によって指定されるプリフェッチはF0h、命令F1hによるメモリプリフェッチの推奨ストライドですPREFETCHNTA[ 94 ]

EAX=3: プロセッサのシリアル番号

プロセッサのシリアル番号を返します。プロセッサのシリアル番号はIntel Pentium IIIで導入されましたが、プライバシー上の懸念から、この機能は以降のモデルでは実装されていません(PSN機能ビットは常にクリアされています)。TransmetaEfficeonおよびCrusoeプロセッサもこの機能を提供しています。ただし、AMD CPUはどのCPUモデルにもこの機能を実装していません。

Intel Pentium III CPU の場合、96ビットシリアル番号の下位64ビットは EDX:ECX レジスタに返されます。Transmeta Efficeon CPU の場合、EBX:EAX レジスタに返されます。Transmeta Crusoe CPU の場合、EBX レジスタにのみ返されます。

プロセッサのシリアル番号機能が機能するには、 BIOS設定で有効にする必要があることに注意してください。

EAX=4 および EAX=8000'001Dh: キャッシュ階層とトポロジ

これら2つのリーフは、命令が実行されるプロセッサコアで利用可能なキャッシュ階層レベルに関する情報を提供するために使用されます。leafはIntelプロセッサで使用され、 leaf はAMDプロセッサで使用されます。どちらもEAX、EBX、ECX、EDXでデータを返します。データ形式は同じですが、 leaf はleaf 用に「予約済み」と見なされるいくつかの追加フィールドを返します。どちらもECXによって選択される一連のサブリーフでCPUキャッシュ情報を提供します。すべてのキャッシュレベルに関する情報を取得するには、EAX=またはとECX を0から始まる増加値(0、1、2、...)に設定して、キャッシュを記述しないサブリーフ(EAX[4:0]=0)が見つかるまで繰り返し呼び出す必要があります。キャッシュ情報を返すサブリーフは任意の順序で出現する可能性がありますが、それらはすべて、キャッシュを記述しない最初のサブリーフよりも前に出現します。 CPUID48000'001Dh48000'001DhCPUID48000'001Dh

以下の表では、リーフに対して定義されている4が、リーフに対しては定義されていないフィールドが8000'001Dh、黄色のセルの色と(#4)項目で強調表示されています。

CPUID EAX=4 および 8000'001Dh: EAX、EBX、EDX のキャッシュプロパティ情報
少し イーアックス EBX EDX [ a ]少し
0 キャッシュタイプ:
  • 0: (キャッシュはもうありません)
  • 1: データキャッシュ
  • 2: 命令キャッシュ
  • 3: 統合キャッシュ
  • 4-31: (予約済み)
システムコヒーレンスラインサイズ(バイト単位)から1を引いた値WBINVDキャッシュ無効化の実行範囲。値が0の場合、INVD/WBINVD命令は、このキャッシュを共有する兄弟プロセッサに属するキャッシュを含む、このキャッシュのすべての下位キャッシュを無効化します。値が1の場合、このキャッシュを共有している兄弟プロセッサの下位キャッシュがすべてクリアされる保証はありません。 0
1 キャッシュの包含性。1 の場合、キャッシュには下位レベルのキャッシュが含まれます。 1
2 複雑なキャッシュインデックス。1の場合、キャッシュは複雑な関数を使用してキャッシュインデックスを作成します。それ以外の場合は、キャッシュは直接マップされます。(#4)2
3 (予約済み)3
4 (予約済み)4
7時5分 キャッシュレベル(1から始まる) (予約済み)7時5分
8 自己初期化キャッシュレベル(1 = リセット後にソフトウェア初期化は不要) (予約済み)8
9 完全連想キャッシュ (予約済み)9
10 WBINVDキャッシュ無効化実行範囲)[ b ] (#4)(予約済み)10
11 (キャッシュの包含性)[ b ] (#4)(予約済み)11
13時12分 (予約済み)物理ラインパーティション(キャッシュアドレスタグを共有するキャッシュラインの数)から1を引いた数(予約済み)13時12分
21:14 このキャッシュを共有する論理プロセッサのアドレス指定可能なIDの最大数から1を引いた数(予約済み)21:14
25:22 キャッシュ連想方法、マイナス1(予約済み)25:22
31:26 物理パッケージ内のプロセッサ コアのアドレス指定可能な ID の最大数から1 を引いた値(#4)(予約済み)31:26
  1. ^ Intel AP-485、リビジョン31 [ 95 ]および32では、EDXのビット9:0が「プリフェッチストライド」フィールドとしてリストされていますが、これはリビジョン33およびそれ以降のすべてのIntelドキュメントで削除されており、この方法でEDXを使用するプロセッサは知られていません。
  2. ^ a b CPUIDリーフ4では、EAXのビット11:10はXeon Phi「Knights Corner」(GenuineIntelファミリー0Bh)プロセッサについてのみ文書化されています。[ 48 ]他のプロセッサでは、代わりにEDXのビット1:0を使用する必要があります。

有効で完全連想型ではないキャッシュの場合、ECX に返される値は、キャッシュ内のセットの数から 1 を引いた値です (完全連想型キャッシュの場合、ECX は値 0 を返すものとして扱われます)。リーフCPUIDまたは4のサブリーフで記述される任意のキャッシュの場合8000'001Dh、合計キャッシュ サイズ (バイト単位) は次のように計算できます。

CacheSize = (EBX[11:0]+1) * (EBX[21:12]+1) * (EBX[31:22]+1) * (ECX+1)

たとえば、Intel Crystalwell CPU で、EAX=4 および ECX=4 で CPUID を実行すると、プロセッサは EBX および ECX のレベル 4 キャッシュについて次のサイズ情報を返します。EBX=03C0F03FこれECX=00001FFFは、このキャッシュのキャッシュ ライン サイズが 64 バイト (EBX[11:0]+1)、タグごとに 16 のキャッシュ ライン (EBX[21:12]+1)、16 ウェイ セット アソシアティブ (EBX[31:22]+1)、8192 セット (ECX+1) であり、合計サイズが 64*16*16*8192=134217728 バイト、つまり 128 バイナリ メガバイトであることを意味します。

EAX=4 および EAX=Bh: Intel スレッド/コアおよびキャッシュ トポロジ

これら2つのリーフは、Intelマルチコア(およびハイパースレッド)プロセッサのプロセッサトポロジ(スレッド、コア、パッケージ)とキャッシュ階層の列挙に使用されます。[ 96 ] 2013年現在、AMDはこれらのリーフを使用していませんが、コア列挙を行う代替方法があります。[ 97 ]

他のほとんどのCPUIDリーフとは異なり、リーフBhはCPUID命令が実行される論理プロセッサに応じてEDXに異なる値を返します。EDXに返される値は、実際には論理プロセッサのx2APIC IDです。ただし、x2APIC ID空間は論理プロセッサに連続的にマッピングされるわけではなく、マッピングにギャップが生じる可能性があります。つまり、一部の中間x2APIC IDは必ずしもどの論理プロセッサにも対応するとは限りません。x2APIC IDをコアにマッピングするための追加情報は、他のレジスタに提供されています。リーフBhにはサブリーフ(後述するようにECXによって選択される)がありますが、EDXに返される値は、命令が実行されている論理プロセッサによってのみ影響を受け、サブリーフによって影響を受けることはありません。

リーフBhによって公開されるプロセッサトポロジは階層構造ですが、この階層における(論理)レベルの順序は、物理階層(SMT /コア/パッケージ)の順序と必ずしも一致しないという奇妙な注意点があります。ただし、すべての論理レベルは、ECXサブリーフ(Bhリーフ)として「レベルタイプ」(SMT、コア、または「無効」のいずれか)との対応を照会できます。レベルID空間は0から始まり、連続しています。つまり、あるレベルIDが無効な場合、それより上位のすべてのレベルIDも無効になります。レベルタイプはECXのビット15:08に返され、照会されたレベルの論理プロセッサの数はEBXに返されます。最後に、これらのレベルとx2APIC IDの関係は、次のレベルで一意のIDを取得するためにx2APIC IDをシフトする必要があるビット数として、EAX[4:0]に返されます。

たとえば、ハイパースレッディングが可能なデュアルコアのWestmereプロセッサ(合計 2 つのコアと 4 つのスレッドを持つ) には、4 つの論理プロセッサに対して x2APIC ID 0、1、4、5 が割り当てられます。CPUID のリーフ Bh (=EAX)、サブリーフ 0 (=ECX) は、たとえば ECX に 100h を返します。これは、レベル 0 が SMT (ハイパースレッディング) 層を表していることを意味します。また、物理コアごとに 2 つの論理プロセッサ (SMT ユニット) があるため、EBX に 2 を返します。この場合、この 0 サブリーフの EAX に返される値は 1 になります。前述の x2APIC ID を 1 ビット右にシフトすると、一意のコア番号 (レベル ID 階層の次のレベル) が割り当てられ、各コア内の SMT ID ビットが消去されるためです。この情報を解釈するより簡単な方法は、x2APIC ID の最後のビット (ビット番号 0) が、この例の各コア内の SMT/ハイパースレッディング ユニットを識別することです。サブリーフ 1 に進むと (EAX=Bh および ECX=1 で CPUID をもう一度呼び出すことにより)、たとえば ECX に 201h (これはコア タイプ レベルであることを意味します) が返され、EBX には 4 (パッケージ内に 4 つの論理プロセッサがあるため) が返されます。返される EAX は 3 より大きい任意の値になる可能性があります。これは、x2APIC ID でコアを識別するためにビット番号 2 が使用されるためです。x2APIC ID のビット番号 1 はこの例では使用されないことに注意してください。ただし、このレベルで返される EAX は 4 になる可能性があります (Clarkdale Core i3 5x0 ではたまたまそうなのですが)。これは、x2APIC ID を 4 ビットシフトすると、パッケージ レベルでも一意の ID (明らかに =0) が提供されるためです。最後に、EAX=4 のリーフが、私たちがまだ知らないことを伝えることができるのか疑問に思うかもしれません。EAX[31:26] は、パッケージ用に予約されているAPIC マスクビットを返します。この例では、ビット 0 から 2 はこのパッケージ内の論理プロセッサを識別するために使用されますが、ビット 1 も予約されていますが、論理プロセッサ識別スキームの一部としては使用されません。つまり、APIC ID 0 から 7 はパッケージ用に予約されていますが、これらの値の半分は論理プロセッサにマッピングされません。

プロセッサのキャッシュ階層は、リーフ4のサブリーフを調べることで確認できます。この階層では、APIC IDも使用され、SMTユニットとコア間で異なるレベルのキャッシュがどのように共有されているかに関する情報が伝達されます。例を続けると、Westmereでは、同じコアのSMTユニット間では共有されますが、物理コア間では共有されないL2キャッシュは、EAX[26:14]が1に設定されていることで示されます。一方、L3キャッシュがパッケージ全体で共有されている情報は、これらのビットが(少なくとも)111bに設定されていることで示されます。キャッシュの種類、サイズ、アソシエティビティなどのキャッシュの詳細は、リーフ4の他のレジスタを介して伝達されます。

インテルのアプリケーションノート485の古いバージョンには、特にマルチコアプロセッサーのコアの識別とカウントに関して、誤解を招く情報が含まれていることに注意してください。[ 98 ]この情報の誤った解釈によるエラーは、CPUIDを使用するためのMicrosoftのサンプルコード(Visual Studioの2013エディション用)にも組み込まれています。[ 99 ]また、CPUIDのsandpile.orgページにも含まれています。[ 100 ]しかし、プロセッサートポロジーを識別するためのインテルのコードサンプル[ 96 ]には正しい解釈があり、現在のインテルソフトウェア開発者マニュアルではより明確な言葉が使用されています。Wildfire Gamesの(オープンソースの)クロスプラットフォーム製品コード[ 101 ]も、インテルのドキュメントの正しい解釈を実装しています。

x2APIC がない (したがって EAX=Bh リーフを実装していない) 古い (2010 年より前の) Intel プロセッサに関するトポロジ検出の例は、2010 年の Intel プレゼンテーションで示されています。[ 102 ]古い検出方法を 2010 年以降の Intel プロセッサで使用すると、コアと論理プロセッサの数を過大評価する可能性があることに注意してください。これは、古い検出方法では APIC ID 空間にギャップがないものと想定されており、この想定は一部の新しいプロセッサ (Core i3 5x0 シリーズ以降) では違反しているためです。ただし、これらの新しいプロセッサには x2APIC も搭載されているため、EAX=Bh リーフ方法を使用してトポロジを正しく判別できます。

EAX=5: MONITOR/MWAIT機能

これは、EAX、EBX、ECX、および EDX レジスタ内の命令 に関連するMONITOR機能情報を返します。MWAIT

CPUID EAX=5: EAX、EBX、EDXのMONITOR/MWAIT機能情報
少し イーアックス 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 状態であり、必ずしもACPI C 状態と 1:1 で対応するわけではありません。
CPUID EAX=5: ECXのMONITOR/MWAIT拡張列挙
少し ECX
短い 特徴
0 EMXECX および EDX での MONITOR/MWAIT 拡張の列挙がサポートされています
1 IBEMWAIT割り込みが無効の場合でも 割り込みをブレークイベントとして扱うことをサポート
2 (予約済み)
3 モニターレス_MWAIT[ 103 ]MWAITメモリ監視を設定せずに電源管理に使用できるようにするMONITOR
31:4  (予約済み)

EAX=6: 熱と電力管理

これは、EAX レジスタの機能ビットと、EBX、ECX、および EDX レジスタの追加情報を返します。

CPUID EAX=6: EAX内の熱/電力管理機能ビット
少し イーアックス
短い 特徴
0 DTSデジタル熱センサー機能
1 インテル ターボ ブーストテクノロジーの機能
2 ARAT [ a ]常時実行APICタイマー機能
3 (予約済み)
4 PLN電力制限通知機能
5 ECMD拡張クロック変調デューティ機能
6 PTMパッケージ熱管理機能
7 HWPハードウェア制御のパフォーマンス状態。MSR が追加されました:
  • IA32_PM_ENABLE770h
  • IA32_HWP_CAPABILITIES771h
  • IA32_HWP_REQUEST774h
  • IA32_HWP_STATUS777h
8 HWP_通知動的保証パフォーマンス変更のHWP通知 - IA32_HWP_INTERRUPT( 773h) MSR
9 HWP_アクティビティ_ウィンドウHWP アクティビティウィンドウ制御 - IA32_HWP_REQUESTMSR のビット 41:32
10 HWP_エネルギーパフォーマンス設定HWP エネルギー/パフォーマンス優先制御 - IA32_HWP_REQUESTMSR のビット 31:24
11 HWP_パッケージレベルリクエストHWP パッケージレベルの制御 - IA32_HWP_REQUEST_PKG( 772h) MSR
12 (予約済み)
13 HDCハードウェアデューティ サイクリングをサポート。MSR を追加:
  • IA32_PKG_HDC_CTLDB0h
  • IA32_PM_CTL1DB1h
  • IA32_THREAD_STALLDB2h
14 インテル ターボ・ブースト・マックス・テクノロジー 3.0 が利用可能
15 IA32_HWP_CAPABILITIES.Highest_Performance(ビット7:0) の変更による割り込みをサポート
16 HWP PECIIA32_HWP_PECI_REQUEST_INFOオーバーライドをサポート - ( 775h) MSR のビット63:60
17 IA32_HWP_REQUESTフレキシブル HWP - MSR のビット 63:59
18 高速アクセスモードIA32_HWP_REQUESTMSRの高速アクセスモードをサポート[ b ]
19 ハードウェアフィードバックハードウェアフィードバックインターフェース。追加されたMSR:
  • IA32_HW_FEEDBACK_PTR17D0h
  • IA32_HW_FEEDBACK_CONFIG17D1h) (ビット0はHFIを有効にし、ビット1はIntel Thread Directorを有効にします)
20 IA32_HWP_REQUEST物理プロセッサを共有する2 つの論理プロセッサのうち 1 つだけがアクティブな場合、アイドル状態の論理プロセッサは無視されます。
21 (予約済み)
22 HWP コントロール MSRIA32_HWP_CTL776h)MSRがサポート[ 105 ]
23 Intel Thread Director をサポート。MSR を追加:
  • IA32_THREAD_FEEDBACK_CHAR17D2h
  • IA32_HW_FEEDBACK_THREAD_CONFIG17D4h
24 IA32_THERM_INTERRUPTMSRビット25をサポート
31:25  (予約済み)
  1. ^ Intel Pentium 4ファミリープロセッサのみ、EAXのビット2はARATの代わりにOPP(動作点保護) [ 104 ]を示すために使用されます。
  2. ^ MSRをサポートするCPUでMSRの高速(非シリアル化)アクセスモードを有効にするには(IA32_HWP_REQUESTのビット0を設定する必要があります。FAST_UNCORE_MSRS_CTL657h
CPUID EAX=6: EBX、ECX、EDXの熱/電力管理機能フィールド
少し EBX ECX EDX 少し
0 デジタル温度センサーの割り込みしきい値の数 有効な周波数インターフェースがサポートされています - IA32_MPERF( 0E7h) およびIA32_APERF( 0E8h) MSR ハードウェアフィードバックレポート: パフォーマンス機能レポートをサポート 0
1 (ACNT2機能)[ a ]ハードウェアフィードバックレポート: 効率機能レポートをサポート 1
2 (予約済み)(予約済み)2
3 パフォーマンスエネルギーバイアス機能 - IA32_ENERGY_PERF_BIAS( 1B0h) MSR 3
7時4分 (予約済み)(予約済み)7時4分
11時8分 ハードウェアでサポートされる Intel Thread Director クラスの数 ハードウェアフィードバックインターフェース構造のサイズ(4KB単位)から1を引いた値 11時8分
15:12 (予約済み)15:12
31:16  (予約済み)ハードウェアフィードバックインターフェース構造におけるこの論理プロセッサの行のインデックス 31:16 
  1. ^「ACNT2 Capability」ビットはIntel AP-485 rev 038 [ 106 ]および 039 に記載されているが、Intel SDMのどのリビジョンにも記載されていない。この機能は、Xeon "Harpertown" ステッピングE0など、一部のIntel CPUにのみ搭載されていることが知られている。 [ 107 ]

EAX=7、ECX=0: 拡張機能

EBX、ECX、EDXの拡張機能フラグを返します。EAXでは、EAX=7のECXの最大値を返します。

CPUID EAX=7,ECX=0: EBX、ECX、EDXの拡張機能ビット
少し EBX ECX EDX 少し
短い 特徴 短い 特徴 短い 特徴
0 fsgsベース%fs と %gs のベースへのアクセス プリフェッチwt1PREFETCHWT1命令 (sgx-tem) [ a ]? 0
1 tsc_adjustIA32_TSC_ADJUST MSR avx512-vbmiAVX-512ベクトルビット操作命令 sgxキーIntel SGX向け認証サービス1
2 sgxソフトウェアガード拡張ウミップユーザーモード命令防止 avx512-4vnniwAVX-512 4レジスタニューラルネットワーク命令 2
3 BMI1ビット操作命令セット1pkuユーザーモードページのメモリ保護キー avx512-4fマップAVX-512 4レジスタ乗算累算単精度 3
4 ホールTSXハードウェアロックエリシオン ospkeOSによって有効化されたPKU フォース速いショートREP MOVSB4
5 avx2高度なベクトル拡張 2待機パッケージ時間制限付き一時停止およびユーザーレベルの監視/待機命令(TPAUSE、、) UMONITORUMWAITユニットユーザープロセッサ間割り込み 5
6 fdp-exceptn-onlyx87 FPUデータポインタレジスタは例外時にのみ更新されます avx512-vbmi2AVX-512ベクトルビット操作命令 2 (予約済み)6
7 スメップスーパーバイザーモード実行防止cet_ss/shstk制御フロー強制(CET):シャドウスタック(SHSTK 別名) (予約済み)7
8 BMI2ビット操作命令セット2ガールフレンドガロア体命令 avx512-vp2インターセクト32/64ビット整数に対する AVX-512ベクトル交差命令8
9 えーと強化されたREP MOVSB/STOSBヴァースベクターAES命令セット(VEX-256/EVEX) srbds-ctrl特殊レジスタバッファデータサンプリング緩和策 9
10 無効INVPCID命令 vpclmulqdqCLMUL命令セット(VEX-256/EVEX) md-クリアVERW命令はCPUバッファをクリアする 10
11 rtmTSX制限付きトランザクションメモリ avx512-vnniAVX-512ベクトルニューラルネットワーク命令 rtm-always-abort [ 108 ]すべてのTSX取引は中止されました 11
12 rdt-m/pqmIntel Resource Director (RDT) モニタリングまたはAMD プラットフォーム QOS モニタリング avx512-bitalgAVX-512 BITALG の指示 (予約済み)12
13 fcs_fds_deprecationx87 FPU CSとDSは非推奨 tme_en利用可能なメモリ暗号化MSRの合計数 rtm-force-abort [ 108 ]TSX_FORCE_ABORT (MSR 0x10f) が利用可能 13
14 mpxIntel MPX (メモリ保護拡張機能) avx512-vpopcntdqAVX-512 ベクトルポピュレーションカウント ダブルワードおよびクワッドワード シリアライズSERIALIZE命令 14
15 rdt-a/pqeIntel Resource Director (RDT) の割り当てまたはAMD プラットフォーム QOS の適用 (fzm) []? ハイブリッドプロセッサトポロジにおける CPU タイプの混在 (例: Alder Lake ) 15
16 avx512-fAVX-512財団 la575レベルページング(57アドレスビット) tsxldtrkTSXロードアドレス追跡中断/再開命令(TSUSLDTRKおよびTRESLDTRK16
17 avx512-dqAVX-512ダブルワードおよびクワッドワード命令 マワウ64ビットモードで のBNDLDXおよびBNDSTXIntel MPX命令で使用されるユーザー空間MPXアドレス幅調整の値(予約済み)17
18 rdseedRDSEED命令 pconfigプラットフォーム構成(メモリ暗号化テクノロジの手順) 18
19 adxIntel ADX (多精度加算・桁上げ命令拡張) 建築最終支店記録 19
20 スマップスーパーバイザーモードアクセス防止cet-ibt制御フロー強制(CET):間接分岐追跡 20
21 avx512-ifmaAVX-512整数融合積和命令 (予約済み)21
22 (コミット)PCOMMIT命令、非推奨)[ 110 ]rdpidRDPID(プロセッサID読み取り)命令とIA32_TSC_AUX MSR amx-bf16bfloat16数値 のAMXタイル計算22
23 clflushoptCLFLUSHOPT命令 klAESキーロッカー avx512-fp16AVX-512半精度浮動小数点演算命令[ 111 ]23
24 クラウブCLWB(キャッシュラインライトバック)命令 バスロック検出バスロックデバッグ例外 amxタイルAMXタイル ロード/ストア命令 24
25 ptインテル プロセッサー トレース cldemoteCLDEMOTE(キャッシュライン降格)命令 amx-int88ビット整数の AMXタイル計算25
26 avx512-pfAVX-512プリフェッチ命令 (mprr) [ a ]? ibrs / スペックコントロール投機制御、間接分岐制御(IBC)の一部:間接分岐制限投機(IBRS)と間接分岐予測バリア(IBPB)[ 112 ] [ 113 ]26
27 avx512-erAVX-512指数および逆数命令 movdiriMOVDIRI命令 スティップシングルスレッド間接分岐予測器(IBCの一部) [ 112 ]27
28 avx512-cdAVX-512競合検出命令 movdir64bMOVDIR64B(64バイト直接ストア)命令 L1D_フラッシュIA32_FLUSH_CMD MSR 28
29 シャSHA-1およびSHA-256拡張enqcmdエンキューストアとEMQCMD/EMQCMDS命令 アーキテクチャ機能IA32_ARCH_CAPABILITIES MSR(投機的サイドチャネル緩和策をリスト[ 112 ]29
30 avx512-bwAVX-512バイトおよびワード命令 sgx-lcSGX起動構成 コア機能IA32_CORE_CAPABILITIES MSR (モデル固有のコア機能をリストします) 30
31 avx512-vlAVX-512ベクトル長拡張 PK戦スーパーバイザーモードページの保護キー ssbd投機的ストアバイパスの無効化、[ 112 ]投機的ストアバイパスの緩和策(IA32_SPEC_CTRL) 31
  1. ^ a b c 2024年4月現在、FZM、MPRR、SGX_TEMビットはIntel TDXドキュメント[ 109 ]にのみ記載されており、既知のプロセッサでは設定されていません。

EAX=7、ECX=1: 拡張機能

これにより、4 つのレジスタすべてに拡張機能フラグが返されます。

CPUID EAX=7,ECX=1: EAX、EBX、ECX、EDXの拡張機能ビット
少し イーアックス EBX ECX EDX 少し
短い特徴 短い特徴 短い特徴 短い特徴
0 sha512SHA-512拡張ピンIntel PPIN (保護されたプロセッサ インベントリ番号): IA32_PPIN_CTL ( 04Eh) および IA32_PPIN ( 04Fh) MSR。 非対称RDTモニタリング機能 (予約済み)0
1 sm3SM3ハッシュ拡張pbndkbトータル ストレージ暗号化:PBNDKB命令および TSE_CAPABILITY ( 9F1h) MSR。 非対称RDT割り当て機能 (予約済み)1
2 sm4SM4暗号拡張(予約済み)(レガシー削減ISA)(X86S、[ 114 ]キャンセル[ 115 ](予約済み)2
3 ラオイント整数に対するリモートアトミック操作: AADD、、、命令 AANDAORAXORCPUIDMAXVAL_LIM_RMV1 の場合、 のビット 22 をIA32_MISC_ENABLE1 に設定して、 によって返される値を制限することはできませんCPUID.(EAX=0):EAX[7:0](予約済み)(予約済み)3
4 avx-vnniAVXベクトルニューラルネットワーク命令(VNNI)(VEXエンコード) (予約済み)(シピ64)64 ビット SIPI (スタートアップ プロセッサ間割り込み) (キャンセルされた X86S の一部) avx-vnni-int8AVX VNNI INT8命令 4
5 avx512-bf16bfloat16数値 用のAVX-512命令(予約済み)MSR_IMMRDMSRおよびWRMSRNS指示 の即時フォームavx-ne-convertAVX 例外なし FP 変換命令 ( bfloat16 ↔FP32 およびFP16 →FP32) 5
6 リニアアドレス空間分離(CR4 ビット 27) (予約済み)(予約済み)(予約済み)6
7 cmpccxaddCMPccXADD説明書 (予約済み)(予約済み)(予約済み)7
8 アーチパフォーマンスモネクストアーキテクチャパフォーマンスモニタリング拡張リーフ (EAX=23h) (予約済み)(予約済み)amx複合体AMX の「複雑な」タイルのサポート (TCMMIMFP16PSおよびTCMMRLFP16PS) 8
9 (重複除去)[ a ]? (予約済み)(予約済み)(予約済み)9
10 fzrm高速ゼロ長 REP MOVSB(予約済み)(予約済み)avx-vnni-int16AVX VNNI INT16命令 10
11 fsrs速い短いREP STOSB(予約済み)(予約済み)(予約済み)11
12 rsrcs速くて短くREP CMPSBREP SCASB(予約済み)(予約済み)(予約済み)12
13 (予約済み)(予約済み)(予約済み)utmrユーザータイマーイベント: IA32_UINTR_TIMER ( 1B00h) MSR 13
14 (予約済み)(予約済み)(予約済み)先見の明命令キャッシュプリフェッチ命令(PREFETCHIT0およびPREFETCHIT114
15 (予約済み)(予約済み)(予約済み)ユーザー_msrユーザーモードMSRアクセス命令(URDMSRおよびUWRMSR15
16 (予約済み)(予約済み)(予約済み)(予約済み)16
17 フレッド柔軟な返品とイベント配信[ 116 ](予約済み)(予約済み)uiret-uif-from-rflags1 の場合、UIRET(ユーザー割り込みリターン) 命令は、UIF (ユーザー割り込みフラグ) をスタックからポップされた RFLAGS イメージのビット 1 の値に設定します。 17
18 キログラムLKGS指示[ 116 ](予約済み)(予約済み)cet-sss1の場合、制御フロー強制(CET)スーパーバイザーシャドウスタック(SSS)は、シャドウスタックの切り替えによって切り替え先のスタックでページフォールトが発生しない限り、早期にビジー状態にならないことが保証されます。[ 117 ] [ 118 ] [ 119 ]18
19 wrmsrnsWRMSRNS命令( MSRへの非シリアル化書き込み) (予約済み)(予約済み)avx10AVX10 収束型ベクターISA(リーフ24hも参照)[ 120 ]19
20 nmi_srcNMIの情報源による報告[ 116 ](予約済み)(予約済み)(予約済み)20
21 amx-fp16FP16数値 用のAMX命令(予約済み)(予約済み)APX_Fアドバンストパフォーマンス拡張、Foundation(REX2と拡張EVEXプレフィックスエンコーディングを追加し、32GPRをサポートするほか、いくつかの新しい命令を追加)[ 121 ]21
22 リセットHRESET命令、IA32_HRESET_ENABLE(17DAh)MSR、およびプロセッサ履歴リセットリーフ(EAX = 20h) (予約済み)(予約済み)(予約済み)22
23 avx-ifmaAVX IFMA の指示 (予約済み)(予約済み)待ってMWAIT命令[ b ]23
24 (予約済み)(予約済み)(予約済み)slsm静的ロックステップモード(MSRのビット0IA32_INTEGRITY_STATUSが使用可能) 24
25 (予約済み)(予約済み)(予約済み)(予約済み)25
26 ラムリニアアドレスマスキング (予約済み)(予約済み)(予約済み)26
27 msrlistRDMSRLISTおよびWRMSRLIST命令、およびIA32_BARRIER(02Fh)MSR (予約済み)(予約済み)(予約済み)27
28 (予約済み)(予約済み)(予約済み)(予約済み)28
29 (予約済み)(予約済み)(予約済み)(予約済み)29
30 invd_disable_post_bios_done1 の場合、INVDBIOS 完了後の命令実行防止をサポートします。 (予約済み)(予約済み)(予約済み)30
31 ムーバーズMOVRSおよびPREFETCHRST2命令のサポート(読み取り共有ヒントによるメモリ読み取り/プリフェッチ) (予約済み)(予約済み)(予約済み)31
  1. ^ 2024年4月現在、DEDUPビットはIntel TDXのドキュメント[ 109 ]にのみ記載されており、既知のプロセッサでは設定されていません。
  2. ^命令のサポートは、 CPUID.(EAX=1).ECX[3]またはCPUID.(EAX=7,ECX=1).EDX[23]MWAITのいずれかで示されます(どちらか一方、または両方が設定される場合があります。) 前者は命令のサポートも示しますが、後者は命令の存在の有無を明示的に示しません。「モニターレスMWAIT」機能をサポートするシステムでは、このフラグが存在する場合があります(この機能自体はCPUID.(EAX=5).ECX[3]で示されます)。MONITORMONITORMWAITMONITOR

EAX=7、ECX=2: 拡張機能

これは、EDX で拡張機能フラグを返します。

EAX、EBX、ECX は予約されています。

CPUID EAX=7,ECX=2: EDXの拡張機能ビット
少し EDX
短い特徴
0 psfd高速ストア転送予測器[ 122 ]無効化がサポートされています。 ( SPEC_CTRL(MSR 48h) ビット 7)
1 ipred_ctrlIPRED_DIS制御[ 123 ]がサポートされている。(SPEC_CTRLビット3と4)

IPRED_DIS は、分岐ターゲット アドレスが解決されるまで、間接分岐ターゲットでの命令の投機的実行を防止します。

2 rrsba_ctrlRRSBAの動作[ 124 ] [ 123 ]無効化がサポートされています。(SPEC_CTRLビット5と6)
3 ddpd_uデータ依存プリフェッチャー[ 125 ] 無効化がサポートされています。 (SPEC_CTRLビット8)
4 bhi_ctrlBHI_DIS_Sの動作[ 123 ]の有効化がサポートされています。(SPEC_CTRLビット10)

BHI_DIS_S は、リング 3 で実行された分岐からの分岐履歴に基づいて、リング 0/1/2 で実行された間接分岐の予測ターゲットが選択されるのを防ぎます。

5 mcdt_no設定されている場合、プロセッサはMXCSR構成に依存するタイミングを示しません。
6 UC ロック無効化機能がサポートされました。
7 モニター_mitg_no設定されている場合、MONITOR/UMONITOR命令は内部モニター追跡テーブルの容量を超える命令によって引き起こされるパフォーマンス/電力の問題の影響を受けないことを示します。[ 126 ]
31:8  (予約済み)

EAX=0Dh: XSAVE 機能と状態コンポーネント

このリーフは、XSAVE 機能と状態コンポーネントを列挙するために使用されます。

XSAVE 命令セット拡張は、CPU 拡張状態 (通常はコンテキスト スイッチング用) を保存/復元するように設計されています。この保存/復元は、OS のコンテキスト スイッチング コードが新しい拡張機能の詳細を理解する必要なく、新しい命令セット拡張機能をカバーするように拡張できます。これは、一連の状態コンポーネントを定義することによって行われます。状態コンポーネントはそれぞれ、特定の保存領域内でサイズとオフセットを持ち、ある CPU 拡張または別の CPU 拡張に必要な状態のサブセットに対応します。CPUIDEAX=0Dhリーフは、CPU がサポートする状態コンポーネントとそのサイズ/オフセットに関する情報を提供するために使用され、OS は適切な量のスペースを予約し、関連する有効ビットを設定できます。

状態コンポーネントは、ユーザー状態(アプリケーションから参照可能な状態項目、例:AVX-512ベクターレジスタ)とスーパーバイザ状態(アプリケーションに影響を与えるが、ユーザーからは直接参照できない状態項目、例:ユーザーモード割り込み設定)の2つのグループに分類できます。ユーザー状態項目はXCR0制御レジスタ内の関連ビットを設定することで有効化され、スーパーバイザ状態項目はIA32_XSS( )MSR内の関連ビットを設定することで有効化されます。これらの状態項目は、 /命令ファミリ0DA0hで保存および復元可能な状態コンポーネントとなります。 XSAVEXRSTOR

XSAVEメカニズムは、この方法で最大63個の状態コンポーネントを処理できます。状態コンポーネント0と1(それぞれx87SSE )は固定のオフセットとサイズを持ちます。状態コンポーネント2から62については、状態コンポーネントのインデックスを指定 CPUIDしてEAX=0Dh実行することで、サイズ、オフセット、およびいくつかの追加フラグを取得できます。これにより、EAX、EBX、ECX(EDXは予約済み)に以下の項目が返されます。ECX

CPUID EAX=0Dh、ECX≥2: XSAVE状態コンポーネント情報
少しイーアックスEBXECX少し
0 状態コンポーネントのバイト単位のサイズ XSAVE/XRSTOR保存領域 の開始からの状態コンポーネントのオフセット

XSAVES(スーパーバイザ状態コンポーネントの場合、このオフセットは 0 です。これは、スーパーバイザ状態コンポーネントは、圧縮を使用する/命令でのみ保存できるためですXRSTORS。)

ユーザー/スーパーバイザー状態コンポーネント:
  • 0=ユーザー状態( を通じて有効化XCR0
  • 1=スーパーバイザ状態( を通じて有効化IA32_XSS
0
1 状態保存圧縮が使用される場合、64 バイトのアライメントが有効になります。

このビットが状態コンポーネントに対して設定されている場合、状態を圧縮して保存する際に、64バイトのアライメントを確保するために、前の状態コンポーネントとこの状態コンポーネントの間に必要に応じてパディングが挿入されます。このビットが設定されていない場合、状態コンポーネントは前の状態コンポーネントの直後に保存されます。

1
31:2  (予約済み)31:2

この方法でサポートされていない状態コンポーネントを照会しようとすると、EAX、EBX、ECX、EDX がすべて 0 に設定されます。

CPUIDリーフのサブリーフ 0 と 1 は、0Dh機能情報を提供するために使用されます。

CPUID EAX=0Dh,ECX=0: XSAVE機能
EBXECXEDX:EAX
現在設定されている状態コンポーネント セットの XSAVE 保存領域の最大サイズ (バイト単位) XCR0この CPUでサポートされているすべての状態コンポーネントがXCR0同時に有効になっている場合の XSAVE 保存領域の最大サイズ (バイト単位)。 XCR0この CPU でサポートされている状態コンポーネントの 64 ビット ビットマップ。
CPUID EAX=0Dh,ECX=1: XSAVE拡張機能
イーアックスEBXEDX:ECX
XSAVE 機能フラグ(下の表を参照) XCR0現在設定され結合されているすべての状態コンポーネントを含む XSAVE 領域のサイズ (バイト単位) IA32_XSSIA32_XSSこの CPU でサポートされている状態コンポーネントの 64 ビット ビットマップ。
EAX=0Dh,ECX=1: EAXのXSAVE機能フラグ
少しイーアックス
短い特徴
0 xsaveoptXSAVEOPT命令: 前回から変更された状態コンポーネントを保存するXRSTOR
1 xsavecXSAVEC命令: 圧縮による状態の保存/復元
2 xgetbv_ecx1XGETBVECX=1サポート 付き
3 xssXSAVESおよびXRSTORS命令とIA32_XSSMSR: スーパーバイザー状態を含む、圧縮による状態の保存/復元。
4 xfdXFD(拡張機能無効化)をサポート
31:5  (予約済み)

2023 年 7 月現在、アーキテクチャ的に定義されている XSAVE 状態コンポーネントは次のとおりです。

XSAVE 状態コンポーネント
索引説明有効
0 x87状態XCR0 [ a ]
1 SSE状態: XMM0-XMM15およびMXCSRXCR0
2 AVXの状態: 上位半分YMM0からYMM15
3 MPX状態: BND0-BND3境界レジスタ
4 MPX状態:BNDCFGUおよびBNDSTATUSレジスタ
5 AVX-512状態: opmask レジスタk0-k7
6 AVX-512 "ZMM_Hi256"状態: 〜の上ZMM0半分ZMM15
7 AVX-512 "Hi16_ZMM" 状態: ZMM16-ZMM31
8 プロセッサトレース状態IA32_XSS
9 PKRU(ユーザー保護キー)レジスタXCR0
10 PASID(プロセスアドレス空間ID)状態IA32_XSS
11 CET_U 状態 (制御フロー強制テクノロジ: ユーザー モード機能 MSR)
12 CET_S 状態 (CET: リング 0、1、2 のシャドウ スタック ポインタ)
13 HDC(ハードウェアデューティサイクリング)状態
14 UINTR(ユーザーモード割り込み)状態
15 LBR(最終分岐レコード)状態
16 HWP(ハードウェアPステート制御)状態
17 AMXタイル構成状態:TILECFGXCR0
18 AMX タイルデータレジスタ: tmm0-tmm7
19 APX拡張汎用レジスタ: r16- r31[ 121 ]
20~61歳  (予約済み)
62 軽量プロファイリング (LWP) (AMD のみ)XCR0
63 (予約済み)[ b ]
  1. ^のビット 0 はXCR01 にハードワイヤードされているため、XSAVE 命令は常に x87 状態の保存/復元をサポートします。
  2. ^およびの場合、ビット 63 はビット ベクトル拡張専用に予約されています。これにより、状態コンポーネント 63 の存在が排除されます。XCR0IA32_XSS

EAX=12h: SGXの機能

このリーフは、Intel Software Guard Extensions (SGX) 機能のサポート情報を提供します。このリーフには、ECX で選択される複数のサブリーフがあります。

サブリーフ0は、EAXでサポートされているSGXリーフ機能と、EDXでサポートされている最大SGXエンクレーブサイズに関する情報を提供します。ECXは予約済みです。EBXは、SECS(SGXエンクレーブ制御構造)のMISCSELECTフィールドに設定できるビットのビットマップを提供します。このフィールドは、AEX(SGX非同期エンクレーブ出口)が発生したときにSSA(SGX保存状態領域)のMISC領域に書き込まれる情報を制御するために使用されます。

CPUID EAX=12h,ECX=0: SGXリーフ関数、MISCSELECT、最大サイズ
少し イーアックス EBX EDX 少し
短い特徴 短い特徴 短い特徴
0 sgx1SGX1リーフ機能 エクソMISCSELECT: エンクレーブ内で発生したページフォールトと一般保護例外に関する情報を報告します。 最大エンクレーブサイズ_Not64非64ビットモードでサポートされる最大エンクレーブサイズのLog2 0
1 sgx2SGX2リーフ関数 CPINFOMISCSELECT: エンクレーブ内で発生した制御保護例外に関する情報を報告します 1
2 (予約済み)(予約済み)2
3 (予約済み)(予約済み)3
4 (予約済み)(予約済み)4
5 オスENCLV葉: EINCVIRTCHILD、、EDECVIRTCHILDおよびESETCONTEXT(予約済み)5
6 ENCLS葉:ETRACKCERDINFOELDBCELDUC(予約済み)6
7 ENCLU葉:EVERIFYREPORT2(予約済み)7
8 (予約済み)(予約済み)最大エンクレーブサイズ_6464 ビット モードでサポートされる最大エンクレーブ サイズの Log2 8
9 (予約済み)(予約済み)9
10 ENCLS葉:EUPDATESVN(予約済み)10
11 ENCLU葉:EDECSSA(予約済み)11
12 256ビットSGXENCLUリーフ関数EGETKEY256EREPORT2(予約済み)12
13 (予約済み)(予約済み)13
14 (予約済み)(予約済み)14
15 (予約済み)(予約済み)15
31:16  (予約済み)(予約済み)(予約済み)31:16 

サブリーフ1は、EDX:ECX:EBX:EAXのSECSの128ビットATTRIBUTESフィールドに設定可能なビットマップを提供します(これは、ENCLS[ECREATE]リーフ関数への入力として使用されるSECSコピーに適用されます)。上位64ビット(EDX:ECXで指定)は、XFRM(X機能要求マスク)に設定可能なビットマップです。このマスクは、AEX発生時にSSAに保存されるCPU状態コンポーネント(リーフ0Dhを参照)のビットマスクです。これはXCR0制御レジスタと同じレイアウトです。その他のビットは、EAXとEBXで次のように指定されます。

CPUID EAX=12h、ECX=1: SECS.ATTRIBUTESの SGX設定可能ビット
少し イーアックス EBX 少し
短い特徴 短い特徴
0 (初期設定)(0でなければなりません)[ a ](予約済み)0
1 デバッグデバッガがエンクレーブデータの読み取りと書き込みを行えるようにEDBGRDするEDBGWR1
2 モード64ビット64ビットモードのエンクレーブ 2
3 (予約済み)3
4 プロビジョンキープロビジョニングキーは以下から入手可能ですEGETKEY4
5 EINITTOKEN_KEYEINITトークンキーは以下から入手可能EGETKEY5
6 中央ヨーロッパ標準時CET(制御フロー強制技術)属性により、 6
7 KSS鍵の分離と共有 7
8 (予約済み)8
9 (予約済み)9
10 AEXNOTIFYエンクレーブ内のスレッドはAEX通知を受信する可能性がある[ 127 ]10
31:11  (予約済み)31:11 
  1. ^エクスクレーブ内に存在するSECSのコピーの場合、SECS.ATTRIBUTESのビット0(INIT)は、そのエンクレーブが で初期化されていることを示すために使用されますENCLS[EINIT]。 への入力として与えられるSECSコピーでは、このビットは0である必要がありますENCLS[CREATE]

サブリーフ 2 以上は、SGX で EPC (Enclave Page Cache) セクションとして使用できる物理メモリ領域に関する情報を提供するために使用されます。

CPUID EAX=12h,ECX≥2: SGXエンクレーブページキャッシュセクション情報
ビット イーアックス EBX ECX EDX ビット
3:0 サブリーフタイプ:
  • 0000: 無効
  • 0001: EPCセクション
  • その他: 予約済み
EPCセクションの物理ベースアドレスのビット51:32 EPC セクションのプロパティ:
  • 0000: 無効
  • 0001: 機密性、整合性、およびリプレイ保護を備えています
  • 0010: 機密保護のみ
  • 0011: 機密性と完全性保護を備えています
  • その他: 予約済み
EPCセクションのサイズのビット51:32 3:0
11時4分  (予約済み)(予約済み)11時4分 
19時12分  EPCセクションの物理ベースアドレスのビット31:12 EPCセクションのサイズのビット31:12 19時12分 
31:20  (予約済み)(予約済み)31:20 

EAX=14h: プロセッサトレース

このリーフは、Intel Processor Trace (Real Time Instruction Trace とも呼ばれます) の機能情報を提供します。

サブリーフ0の場合、EAXに返される値は、EAX=14hのCPUIDでサポートされる最上位サブリーフのインデックスです。EBXとECXは機能フラグを提供し、EDXは予約されています。

CPUID EAX=14h,ECX=0: EBXおよびECXのプロセッサトレース機能ビット
少し EBX ECX 少し
短い特徴 短い特徴
0 cr3_フィルターCR3フィルタリングをサポート トップアウトトレースパケット用のToPA(物理アドレステーブル)出力メカニズムをサポート 0
1 サイク_acc設定可能なPSB(パケットストリーム境界)パケットレートとサイクルアキュレートモード(CYCパケット)をサポート メントリーToPAテーブルには複数の出力エントリを保持できます 1
2 IPフィルターIPフィルタリング、TraceStopフィルタリング、ウォームリセット中のPT MSRの保存をサポート sngl_rng_outシングルレンジ出力方式をサポート 2
3 mtcMTC (Mini Time Counter) タイミング パケットがサポートされ、COFI (Change of Flow Instructions) パケットの抑制がサポートされます。 トレーストランスポートサブシステムトレーストランスポートサブシステムへの出力がサポートされています 3
4 ptwritePTWRITEサポートされている命令 (予約済み)4
5 pwr_evt_trace電源イベントトレースをサポート (予約済み)5
6 pmi_preservePSBおよびPMI(パフォーマンス監視割り込み)の保存をサポート (予約済み)6
7 イベントトレースイベント トレース パケット生成をサポート (予約済み)7
8 tnt_disTNT (Branch Taken-Not-Taken) パケット生成の無効化がサポートされています。 (予約済み)8
9 PTTT(プロセッサ トレース トリガー トレース)をサポート (予約済み)9
30:10  (予約済み)(予約済み)30:10 
31 (予約済み)リップ IP ペイロードを含むトレース パケットの IP (命令ポインター) 形式:
  • 0=RIP(実効アドレスIP)
  • 1=LIP(CSベースアドレスが追加されたリニアアドレスIP)
31
CPUID EAX=14h,ECX=1: EAX、EBX、ECXのプロセッサトレースパケット生成情報
少し イーアックス EBX ECX 少し
短い特徴 短い特徴 短い特徴
0 範囲数フィルタリング用に設定可能なアドレス範囲の数 サイクルしきい値サポートされているサイクル閾値エンコーディングのビットマップ トリガーアクションアトリビューションをサポート 0
1 トリガーアクションTRACE_PAUSEとTRACE_RESUMEがサポートされています 1
2 (予約済み)2
7:3 (予約済み)(予約済み)7:3
10時8分 IA32_RTIT_TRIGGERx_CFG MSR の数。

(サポートされるトリガーの数は、この値の 4 倍です)

(予約済み)10時8分
14:11 (予約済み)(予約済み)14:11
15 (予約済み)トリガー入力DRマッチをサポート 15
31:16 mtc_rateサポートされているMTC期間エンコーディングのビットマップ psb_rateサポートされている構成可能な PSB 周波数エンコーディングのビットマップ (予約済み)31:16

EAX=15h および EAX=16h: CPU、TSC、バス、コアの水晶クロック周波数

これら 2 つのリーフは、EAX、EBX、ECX で CPU のさまざまな周波数に関する情報を提供します (EDX は両方のリーフで予約されています)。

CPUID EAX=15h: TSCおよびコアクリスタル周波数情報
イーアックスEBXECX
TSC周波数とコアクリスタルクロック周波数の比(分母) TSC周波数とコアクリスタルクロック周波数の比、分子[ a ]コア水晶クロック周波数(単位:Hz ) [ a ]
CPUID EAX=16h: プロセッサとバスの仕様周波数[ b ]
ビットイーアックスEBXECXビット
15:0 プロセッサベース周波数(MHz)[ a ]プロセッサ最大周波数(MHz)[ a ]バス/基準周波数(MHz)[ a ]15:0
31:16 (予約済み)(予約済み)(予約済み)31:16
  1. ^ a b c d eゼロの場合はフィールドは列挙されません。
  2. ^リーフ 16h によって報告される周波数値はプロセッサの仕様周波数です。これは特定のプロセッサに対して一定であり、CPUID が呼び出された時点での実際の CPU クロック速度を必ずしも反映するものではありません。

リーフ 15h の EBX と ECX に返された値が両方ともゼロ以外の場合、TSC (タイム スタンプ カウンター) 周波数 (Hz) は次のように表されますTSCFreq = ECX*(EBX/EAX)

一部のプロセッサ(例:Intel Skylake)では、CPUID_15h_ECXはゼロですが、CPUID_16h_EAXはゼロではありません。このような状況にある既知のプロセッサ[ 128 ]では、 TSC周波数はプロセッサベース周波数と等しく、コアクリスタルクロック周波数(Hz)は次のように計算できますCoreCrystalFreq = (CPUID_16h_EAX * 10000000) * (CPUID_15h_EAX/CPUID_15h_EBX)

CPUIDリーフ15hにTSC/コアクリスタルクロック比を列挙するプロセッサでは、APICタイマー周波数はコアクリスタルクロック周波数をAPICの除算構成レジスタで指定された除数で割ったものになります。[ 129 ]

EAX=17h: SoCベンダー属性列挙

このリーフは、x86 CPU IP コアが他社製SoC ( System on ChipCPUID ) に実装されているシステムに存在します。他のリーフはx86 CPU コアに関する情報を提供しますが、このリーフは SoC に関する情報を提供します。このリーフは ECX のサブリーフインデックスを取得します。

サブリーフ 0 は、EAX の最大サブリーフ インデックス (少なくとも 3) と、EBX/ECX/EDX の SoC 識別情報を返します。

CPUID EAX=17h,ECX=0: SoC識別情報
少し EBX ECX EDX 少し
15:0 SoCベンダーID SoC プロジェクト ID SoC プロジェクト内の SoC ステッピング ID 15:0
16 SoCベンダーIDスキーム
  • 0 : Intelによって割り当てられたベンダーID [ a ]
  • 1 : 業界標準の列挙方式[ b ]
16
31:17 (予約済み)31:17
  1. ^ 2024年5月現在、以下のベンダーIDがIntelによって割り当てられていることが分かっています。
    IDベンダー
    1スプレッドトルム[ 130 ]
  2. ^ 2024年5月現在、Intelのドキュメントでは、EBX[16]が設定されている場合、EBX[15:0]のベンダーIDに使用する「業界標準」列挙スキームが指定されていません。

サブリーフ1から3は、UTF-8形式の48バイトのSoCベンダーブランド文字列を返します。サブリーフ1はEAX、EBX、ECX、EDX(この順序)の最初の16バイトを返し、サブリーフ2は次の16バイトを返し、サブリーフ3は最後の16バイトを返します。文字列はヌル終端されていても構いませんが、必須ではありません。

EAX=19h: Intel Key Lockerの機能

このリーフは、EAX、EBX、ECX の Intel Key Locker の機能情報を提供します。EDX は予約済みです。

CPUID EAX=19h: EAX、EBX、ECXのキーロッカー機能ビット
少し イーアックス EBX ECX 少し
短い特徴 短い特徴 短い特徴
0 cpl0_restrictCPL0のみのキーロッカー制限がサポートされています aes_kleAES「キーロッカー」命令が有効 バックアップなしバックアップなしパラメータをLOADIWKEYサポート 0
1 暗号化制限なしキーロッカーの非暗号化制限をサポート (予約済み)rand_iwkeyKeySource エンコーディング 1 (内部ラッピングキーのランダム化) をサポート 1
2 復号化制限なしキーロッカーの非復号化制限をサポート aes_wide_klAES「ワイドキーロッカー」説明書をサポート (予約済み)2
3 (プロセス制限)[ a ](予約済み)(予約済み)3
4 (予約済み)iwkeyバックアップ「キーロッカー」MSRと内部ラッピングキーのバックアップをサポート (予約済み)4
31:5  (予約済み)(予約済み)(予約済み)31:5 
  1. ^ 2024年4月現在、「プロセス制限」ビットはIntel TDXのドキュメント[ 109 ]にのみ記載されており、既知のプロセッサでは設定されていません。

EAX=1Dh: Intel AMXタイル情報

の場合ECX=0、サポートされている最高位の「パレット」サブリーフがEAXに列挙されます。 の場合、パレットnECX≥1の情報が返されます。

CPUID EAX=1Dh,ECX≥1: AMXタイルパレットn情報
ビット イーアックス EBX ECX EDX ビット
短い特徴 短い特徴 短い特徴 短い特徴
15:0 タイルの合計バイト数すべてのタイルレジスタのサイズ(バイト単位、8192) 行あたりのバイト数(64) 最大行数(16) (予約済み)15:0
31:16 タイルあたりのバイト数1タイルのサイズ(バイト単位、1024) 最大名前数タイルレジスタの数(8) (予約済み)(予約済み)31:16

EAX=1Eh: Intel AMX タイル乗数 ( TMUL) 情報

このリーフはAMXTMUL(タイル乗数)ユニットに関する情報を返します。リーフは複数のサブリーフを備えており、ECXで選択されます。

サブリーフ 0 は、EAX でサポートされている最大のサブリーフと EBX の基本 TMUL 情報を返します。サブリーフ 1 は、EAX の追加機能情報を返します。

CPUID EAX=1Eh,ECX=0: AMXTMUL情報メインリーフ
ビット EBX ECX EDX ビット
短い特徴 短い特徴 短い特徴
7:0 tmul_maxk行または列の最大数(16) (予約済み)(予約済み)7:0
23:8 tmul_maxn列あたりの最大バイト数(64) (予約済み)(予約済み)23:8
31:24 (予約済み)(予約済み)(予約済み)31:24
CPUID EAX=1Eh,ECX=1: AMXTMUL機能情報
ビット イーアックス EBX ECX EDX ビット
短い特徴 短い特徴 短い特徴 短い特徴
0 amx-int88ビット整数のサポート (予約済み)(予約済み)(予約済み)0
1 amx-bf16bfloat16サポート (予約済み)(予約済み)(予約済み)1
2 amx複合体複素数のサポート (予約済み)(予約済み)(予約済み)2
3 amx-fp16float16のサポート (予約済み)(予約済み)(予約済み)3
4 amx-fp8float8のサポート (予約済み)(予約済み)(予約済み)4
5 (amx-転置) [ a ](転置指示サポート) (予約済み)(予約済み)(予約済み)5
6 amx-tf32tf32/fp19 サポート (予約済み)(予約済み)(予約済み)6
7 amx-avx512AMX-AVX512 サポート (予約済み)(予約済み)(予約済み)7
8 amx-movrsAMX-MOVRSサポート (予約済み)(予約済み)(予約済み)8
31:9 (予約済み)(予約済み)(予約済み)(予約済み)31:9
  1. ^以前は将来の拡張機能としてリストされていましたが、 [ 131 ]バージョン059で削除されました。 [ 132 ]

EAX=21h: TDX列挙用に予約済み

Intel TDX(信頼ドメイン拡張CPUID)がアクティブな場合、 TD(信頼ドメイン)ゲストによる命令実行の試みはTDXモジュールによって傍受されます。このモジュールは、がおよび(リーフ、サブリーフ0)CPUIDで呼び出されると、リーフでサポートされている最高のサブリーフのインデックスと、TDXモジュールベンダーID文字列をEBX、EDX、ECX(この順序)の12バイトASCII文字列として返します。Intel独自のモジュール実装は、ベンダーID文字列(末尾に4つのスペースを含む)を返します[ 133 ]。このモジュールでは、追加機能情報はを通じては利用できず、代わりにTDX固有の命令を通じて取得する必要があります。 EAX=21hECX=021h21hEAX"IntelTDX    "CPUIDTDCALL

21hこのリーフはハードウェアで予約されており、 CPU 上で直接実行されると、EAX/EBX/ECX/EDX に 0 を返します (最高の基本リーフが 以上のプロセッサの場合)。

EAX=24h、ECX=0: AVX10 統合ベクター ISA

これは、EAXでサポートされている最大のサブリーフとEBXのAVX10機能情報を返します。[ 120 ](ECXとEDXは予約されています。)

CPUID EAX=24h、ECX=0: EBXのAVX10機能ビット
少し EBX
短い 特徴
7:0 ベクターISAバージョンAVX10 コンバージドベクター ISA バージョン (≥1)
15:8 (予約済み)
18時16分 (111bとして予約)[ a ]
31:19 (予約済み)
  1. ^これらの3ビットはもともと「サポートされるベクトル幅」を示すために設計されており、ビット16は128ビットベクトルのサポート、ビット17は256ビット、ビット18は512ビットベクトルのサポートを示していた。最大128ビットのCPUは「AVX10/128」サポート、最大256ビットは「AVX10/256」サポート、最大512ビットは「AVX10/512」サポートを備えていると言われていた。スラッシュの後の数字はサポートされる最大ベクトル幅を示している。AVX10.1の発表後まもなく、Intelは開発者からの反発を受けてAVX10/128の計画を断念し、 [ 134 ]最大256ビットと512ビットのベクトル幅のみがサポートされるようになった。AVX10.2では、Intelはベクトル幅の区別を完全に廃止し、代わりに512ビットベクトルのサポートを義務付けた。出荷されたAVX10.1 CPUは、Pコアのみの設計であるGranite Rapids (後にAVX10/512も搭載)をベースにしたものだけだったため、 AVX10/256 CPUは出荷されませんでした。つまり、出荷されたAVX10搭載CPUは128ビット、256ビット、512ビットをサポートし、3ビットすべてが111bでした。これらのビットは現在、予約済みと記載されていますが、実際には111bと読み取られます。

EAX=24h、ECX=1: ディスクリート AVX10 機能

サブリーフ 1 は、バージョンにバインドされていない AVX10 機能用に予約されています。

CPUID EAX=24h、ECX=1: ECXの個別のAVX10機能
少し ECX
短い 特徴
0 (VPMM)(ベクトル拡張パック行列乗算)[ 135 ]
1 (予約済み)
2 AVX10_VNNI_INTAVX10.2 VNNI命令[ a ] [ 136 ]
31:3 (予約済み)
  1. ^ AVX10.2 VNNI命令は、AVX10バージョンが2以上(CPUID.(EAX=24h).EBX[7:0]を参照)またはAVX10_VNNI_INTビットがセットされている場合に存在します。

EAX=2000'0000h: 実装された最高のXeon Phi関数

最高位の関数はEAXに返されます。このリーフはXeon Phiプロセッサにのみ存在します。[ 137 ]

EAX=2000'0001h: Xeon Phi 機能ビット

この関数は機能フラグを返します。

CPUID EAX=2000'0001h: Xeon Phi機能ビット
少し イーアックス EBX ECX EDX 少し
短い 特徴 短い 特徴 短い 特徴 短い 特徴
3:0 (予約済み)(予約済み)(予約済み)(予約済み)3:0
4 (予約済み)(予約済み)(予約済み)k1omK1OM [ 137 ]4
31:5 (予約済み)(予約済み)(予約済み)(予約済み)31:5

命令がIntel VT-x または AMD-v 仮想化環境CPUIDで実行されると、ハイパーバイザーによってインターセプトされ、ハイパーバイザーは基盤となるハードウェアとは異なる機能フラグを返すことができます。リーフはハードウェアに実装されておらず、このインターセプト メカニズムを通じてハイパーバイザー固有の識別情報と機能情報を提供するためにハイパーバイザーによって予約されています。 CPUIDCPUID40000000h4FFFFFFFh

リーフ については40000000h、ハイパーバイザーは EAX にサポートされている最高のハイパーバイザー CPUID リーフのインデックスと、EBX、ECX、EDX (この順序で) に 12 文字のハイパーバイザー ID 文字列を返すことが期待されます。 リーフ については、ハイパーバイザーは EAX にインターフェイス識別シグネチャを返す場合があります。たとえば、 Hyper-V40000001h互換であることをアドバタイズしたいハイパーバイザーは、EAX に—を返すことができます。 [ 138 ] [ 139 ]リーフ からサポートされている最高レベルのリーフまでの形式は、それ以外はハイパーバイザー固有です。これらのリーフを実装するハイパーバイザーは通常、CPUID リーフ 1 の ECX のビット 31 も設定して、それらの存在を示します。 0x31237648"Hv#1"40000001h

複数のハイパーバイザーインターフェースを公開するハイパーバイザーは、追加インターフェースごとに100hリーフの間隔で、追加のCPUIDリーフセットを提供する場合があります。例えば、QEMUがHyper-VインターフェースとKVMインターフェースの両方を提供するように構成されている場合、CPUIDリーフから始まるHyper-V情報40000000hと、リーフから始まるKVM情報を提供します40000100h[ 140 ] [ 141 ]

リーフにハイパーバイザー ID 文字列を返すことが知られているハイパーバイザーに40000000hは、次のようなものがあります。

CPUID EAX=4000'0x00h: EBX、ECX、EDX 内の 12 文字のハイパーバイザー ID 文字列
ハイパーバイザー ID文字列(ASCII) 注記
マイクロソフトHyper-V"Microsoft Hv"[ 138 ]
Linux KVM"KVMKVMKVM\0\0\0"[ 142 ]\0 は ASCII NUL 文字を表します。
"Linux KVM Hv"[ 143 ]Hyper-Vエミュレーション[ 144 ]
バイブ"BHyVE BHyVE ""bhyve bhyve "ID文字列は2013年に大文字と小文字の混合から小文字に変更されました。[ 145 ]

小文字の文字列は、xhyveやHyperKitなどのbhyve由来のハイパーバイザーでも使用されます。[ 146 ]

ゼン"XenVMMXenVMM"[ 147 ]HVM (ハードウェア仮想マシン) モードを使用する場合のみ。
QEMU"TCGTCGTCGTCG"[ 148 ]TCG (Tiny Code Generator) が有効な場合のみ。
類似点"prl hyperv  "" lrpepyh  vr"この文字列は、Parallels Workstationのいくつかのバージョンで見られる、エンディアンを交換した文字列のバージョンです。[ 149 ]" lrpepyh  vr""prl hyperv  "
ヴイエムウェア"VMwareVMware"[ 150 ]
ACRNプロジェクト "ACRNACRNACRN"[ 151 ]
バーチャルボックス"VBoxVBoxVBox"[ 152 ]「hyperv」準仮想化プロバイダーを使用するように構成されている場合のみ。
QNXハイパーバイザー "QXNQSBMV"公式QNXドキュメント[ 153 ]で提供されているQNXハイパーバイザー検出方法は、EBXとECX(エンディアンネススワップを含む)で提供されている文字列の最初の8文字のみをチェックします。EDXは無視され、任意の値を取る可能性があります。
NetBSD NVMM"___ NVMM ___"[ 154 ]
OpenBSD VMM "OpenBSDVMM58"[ 155 ]
シーメンス刑務所 "Jailhouse\0\0\0"[ 156 ]\0 は ASCII NUL 文字を表します。
ビットディフェンダーナポカ "Napocahv    "[ 157 ]
FEX-エミュ"FEXIFEXIEMU\0"[ 158 ]\0 は ASCII NUL 文字を表します。
インテル HAXM "HAXMHAXMHAXM"[ 159 ]プロジェクトは中止されました。
インテル KGT (信頼) "EVMMEVMMEVMM"[ 160 ]Trusty OS の Intel x86 アーキテクチャ ディストリビューションに使用される KGT の「trusty」ブランチのみ(アーカイブ)

(KGTはリーフ3の署名も返しますCPUID:ECX=0x4D4D5645 "EVMM"とEDX= 0x43544E49 "INTC"

ユニシスs-Par "UnisysSpar64"[ 161 ]
ロッキード・マーティンLMHS"SRESRESRESRE"[ 162 ]

EAX=8000'0000h: 実装された最高拡張機能

最も高い呼び出しパラメータが EAX に返されます。

EBX/ECX/EDX は、AMD CPU では製造元 ID 文字列 (EAX=0 と同じ) を返しますが、Intel CPU では返しません。

EAX=8000'0001h: 拡張プロセッサ情報および機能ビット

これは、EDX および ECX の拡張機能フラグを返します。

のビットの多くEDX(ビット 0 ~ 9、12 ~ 17、23、および 24)はリーフEDXからの重複ですEAX=1。これらのビットは薄い黄色で強調表示されています。(これらの重複ビットは AMD CPU には存在しますが、Intel CPU には存在しません。)

AMD機能フラグは以下のとおりです。[ 163 ] [ 164 ]

CPUID EAX=8000'0001h: EDXとECXの機能ビット
少し EDX ECX 少し
短い 特徴 短い 特徴
0 fpuオンボードx87 FPU lahf_lmLAHF/SAHFロングモード 0
1 vme仮想モード拡張(VIF) cmp_legacyハイパースレッディングが無効です 1
2 デバッグ拡張機能(CR4ビット 3) svmセキュア仮想マシン2
3 プセページサイズ拡張エクスタピック拡張APICスペース 3
4 tscタイムスタンプカウンターcr8_legacy32ビットモードの CR84
5 msrモデル固有のレジスタアブム/lzcnt高度なビット操作 と) (LZCNTPOPCNT5
6 ペイ物理アドレス拡張sse4aSSE4a6
7 マクマシンチェック例外ずれ不整合SSEモード 7
8 CX8CMPXCHG8B比較スワップ)命令 3dnowprefetchPREFETCHおよびPREFETCHW指示 8
9 アピックオンボードの高度なプログラマブル割り込みコントローラosvwOS で確認できる回避策 9
10 (システムコール) [ a ]SYSCALL/ SYSRET、K6のみ) IBS命令ベースサンプリング10
11 システムコール[ b ]SYSCALLおよびSYSRET指示 xopXOP命令セット11
12 mtrrメモリタイプ範囲レジスタスキニットSKINIT/STGI説明書 12
13 ページCR4のページグローバル有効化ビットwdtウォッチドッグタイマー13
14 mcaマシンチェックアーキテクチャ(予約済み)14
15 cmov条件付き移動とFCMOV命令 lwp軽量プロファイリング[ 168 ]15
16 パット[ c ]ページ属性テーブルfma44オペランド融合乗算加算命令16
17 pse3636ビットページサイズ拡張tce翻訳キャッシュ拡張機能 17
18 (予約済み)(予約済み)18
19 Athlon MP」/「Sempron」CPUブランド識別[ d ]ノードID_msrノードID MSR ( C001_100C) [ 173 ]19
20 ネクスNXビット(予約済み)20
21 (予約済み)tbm末尾ビット操作21
22 mmxext拡張MMXトポエクストトポロジ拡張 22
23 mmxMMX命令 パフォーマンスコアコアパフォーマンスカウンター拡張 23
24 fxsr [ c ]FXSAVEFXRSTOR命令、CR4ビット9 パーフクトル_nbノースブリッジパフォーマンスカウンター拡張 24
25 fxsr_optFXSAVE/FXRSTOR最適化 (ストリームパフォーマンスモニタ)(ストリーミングパフォーマンスモニターのアーキテクチャ)[ e ]25
26 pdpe1gbギガバイトページ dbxデータブレークポイント拡張 26
27 rdtscpRDTSCP命令 パーフェクトパフォーマンスタイムスタンプカウンター(PTSC) 27
28 (予約済み)pcx_l2iL2I パフォーマンス カウンター拡張 28
29 映画ロングモードモニターxMONITORXおよびMWAITX指示 29
30 3dnowext拡張された3DNow!アドレスマスク拡張子命令ブレークポイントのアドレスマスクを32ビットに拡張 30
31 3dnow3Dナウ!(予約済み)31
  1. ^ /のサポートを示すための EDX ビット 10 の使用は、ファミリー 5モデル 7 CPU ( AMD K6、250nm "Little Foot")でのみ有効です。他のすべてのプロセッサでは、代わりに EDX ビット 11 を使用する必要があります。SYSCALLSYSRETAuthenticAMD

    これらの命令はモデル7で初めて導入されました[ 165 ] - これらの命令のサポートを示すCPUIDビットはモデル8( AMD K6-2 )以降はEDXビット11に移動されました[ 166 ]

  2. ^ Intel CPUでは、 /のCPUIDビット命令が64ビットモードで実行された場合にのみ設定されます。 [ 167 ]SYSCALLSYSRETCPUID
  3. ^ a b一部のプロセッサ(Cyrix MediaGXm [ 169 ]、いくつかのGeode(NatSemi Geode GXm、GXLV、GX1、AMD Geode GX1 [ 170 ])およびTransmeta Crusoe [ 171 ])では、EDXビット16と24の意味が異なります。
    • ビット16: 浮動小数点条件付き移動 ( FCMOV) をサポート
    • ビット24: 6x86MX拡張MMX命令をサポート
  4. ^ EDXビット19は、ファミリー6プロセッサのCPUブランド識別にのみ使用されます。このビットは、プロセッサ署名とFSB速度と組み合わせて、プロセッサがマルチプロセッサ対応であるか、 Sempronブランド名を持っているかを識別するために使用されます。 [ 172 ]AuthenticAMD
  5. ^ ECXビット25は、AMD APM [ 174 ]のリビジョン3.20でのみStreamPerfMonとしてリストされており、それ以降のリビジョンでは予約済みとしてリストされています。このビットはExcavatorとSteamrollerのCPUでのみセットされています。

EAX=8000'0002h,8000'0003h,8000'0004h: プロセッサブランド文字列

これらは、EAX、EBX、ECX、EDXでプロセッサブランド文字列を返します。48CPUIDバイトのASCIIプロセッサブランド文字列全体を取得するには、各パラメータを順番に発行する必要があります。[ 175 ]CPUID最初にを発行しEAX = 80000000h、返された値が以上であるかどうかを確認することで、CPUにこの機能が存在するかどうかを確認する必要があります80000004h

Intel/AMDのドキュメントでは、文字列はヌル終端されるように指定されていますが、これは常に当てはまるわけではありません(たとえば、DM&P Vortex86DX3とAMD Ryzen 7 6800HSは、リーフでヌル終端されていないブランド文字列を返すことが知られています80000002h- 80000004h[ 176 ] [ 177 ])。そのため、ソフトウェアはこれに依存しないでください。

#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 ]);if ( 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プロセッサでは、180nm Athlon以降(AuthenticAMDファミリー6モデル2以降)では、CPUIDリーフによって返されるプロセッサブランド文字列を変更することが可能です80000002h。これは、MSRに48バイトの置換文字列を書き込む命令80000004hを使用することで可能です。[ 172 ] [ 178 ] AMD Geode GX/LXでも、 MSRを使用することで同様のことが可能です。[ 179 ]WRMSRC0010030hC0010035h300Ah300Fh

CPUID によって返される文字列には80000002h80000004h先頭、末尾、または中間の複数のスペースが含まれることがよくあります。Intel/AMD CPU に見られるような、連続するスペースが多数含まれるプロセッサ ブランド文字列の例をいくつか挙げると、次のとおりです。

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

場合によっては、CPUベンダーを特定するには、CPUIDリーフ0のベンダーIDとリーフ1のCPUシグネチャだけでなく、リーフ80000002h-のプロセッサブランド文字列も調べる必要があります80000004h。既知のケースとしては、以下が挙げられます。

  • MontageMontage Jintide CPU は、Montage CPU のブランド文字列にサブ文字列が含まれていることで、ベースとなっている Intel Xeon CPU モデルと区別できます(例: Montage Jintide C2460 [ 183 ]と Intel Xeon Platinum 8160 [ 184 ]は、どちらもGenuineIntelFamily 6 Model 55h Stepping 4 として識別されるため、この方法で区別できます)。
  • CentaurHaulsファミリー 6 CPU は VIA または Zhaoxin CPU のいずれかです。これらは、ZHAOXINZhaoxin CPU のブランド文字列内のサブ文字列の存在によって区別できます (例: Zhaoxin KaiXian ZX-C+ C4580 [ 185 ]と VIA Eden X4 C4250 [ 186 ]はどちらもCentaurHaulsファミリー 6 モデル 0Fh ステッピング 0Eh として識別され、この方法で区別できます)。
  • AppleのRosetta 2 x86エミュレータ(ファミリー6として識別されます)は、Rosetta 2のブランド文字列内のGenuineIntelサブ文字列の存在によって、エミュレートしているIntel Xeonプロセッサと区別できます。[ 19 ]VirtualApple
  • マイクロソフトのx86-on-ARMエミュレーターは、64ビットモードではファミリー0Fhとして識別されますが、エミュレーターのブランド文字列にAuthenticAMDサブ文字列が存在することで、エミュレートしているAMDプロセッサーと区別できます。 [ 19 ]Virtual CPU

EAX=8000'0005h: L1キャッシュとTLB識別子

これは、EAX、EBX、ECX、EDXにおけるプロセッサのレベル1キャッシュとTLB特性に関する情報を次のように提供します。[ a ]

  • EAX: L1ヒュージページTLB(2M/4Mページに対応するエントリを保持するTLB)に関する情報[ b ]
  • EBX: L1 スモールページ TLB (4K ページに対応するエントリを保持する TLB) に関する情報
  • ECX: L1データキャッシュに関する情報
  • EDX: L1命令キャッシュに関する情報
CPUID EAX=8000'0005h: EAX、EBX、ECX、EDXのL1キャッシュ/TLB情報
ビット イーアックスEBX ECXEDX ビット
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 CPU(具体的には、Family 5 Model 4 CPUのみ)にはCyrixInsteadleafGeode by NSC80000005h存在するが、leaf 2と似た完全に異なるフォーマットになっている。 [ 187 ]
  2. ^ TLB内でスモールページしか扱えないプロセッサでは、このリーフはEAXに0を返します。(AMD K6やTransmeta Crusoeなどのそのようなプロセッサでは、ページテーブル内のヒュージページエントリは、TLBへのエントリ時に必要に応じて4Kページに分割されます。) VIA Cyrix III "Samuel" [ 188 ]などの一部のプロセッサでは、このリーフはEAXに0を返します。これはEAX=0、つまりヒュージページTLBがないのと同じ意味です。0x80000005
  3. ^ a b Transmeta CPU では、この値はFFh256 エントリの TLB を示すために使用されます。
  4. ^ a b c leaf の結合フィールドには80000005h、次の値が使用されます。
    価値意味
    0(予約済み)
    1ダイレクトマップ
    2からFEhNウェイセットアソシアティブ(フィールドはNをエンコード)
    FFh完全連想型

EAX=8000'0006h: 拡張L2キャッシュ機能

ECX の L2 キャッシュの詳細を返します。これには、バイト単位のライン サイズ (ビット 07 - 00)、連想の種類 (4 ビット フィールドでエンコード、ビット 15 - 12)、および KB 単位のキャッシュ サイズ (ビット 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 ) & 0x07 ; cache = ( ecx >> 16 ) & 0xffff ;printf ( "行サイズ: %d B、アソシエーションタイプ: %d、キャッシュサイズ: %d KB。\n " lsize assoc cache );0を返す; }

EAX=8000'0007h: プロセッサ電源管理情報とRAS機能

この機能は、CPU の 電力管理、電力レポート、および RAS (信頼性、可用性、保守性) 機能に関する情報を提供します。

CPUID EAX=8000'0007h: EBXのRAS機能とEDXの電源管理機能
少し EBX EDX 少し
短い特徴 短い特徴
0 MCAオーバーフロー回復MCA(マシンチェックアーキテクチャ)オーバーフロー回復サポート TS温度センサー 0
1 助けソフトウェアの修正不可能なエラーの抑制と回復機能 FID周波数ID制御 1
2 HWAハードウェアアサートサポート(MSRC001_10C0からC001_10DFビデオ電圧ID制御 2
3 スケーラブルMcaスケーラブルなMCAをサポート TTPサームトリップ 3
4 (予約済み)TMハードウェア熱制御(HTC)をサポート 4
5 (予約済み)STCソフトウェア熱制御(STC)対応[ 189 ]5
6 (予約済み)100MHzステップ100 MHz 乗算器制御 6
7 (予約済み)HwP状態ハードウェアPステート制御(MSRC001_0061からC001_00637
8 (予約済み)Tsc不変不変 TSC — TSC (タイムスタンプ カウンター) レートは、すべての P 状態、C 状態、および停止許可遷移にわたって不変であることが保証されます。 8
9 (予約済み)CPBコアパフォーマンスブースト 9
10 (予約済み)有効頻度RO読み取り専用有効周波数インターフェース(MSRC000_00E7およびC000_00E810
11 (予約済み)プロセスフィードバックインターフェースプロセッサフ​​ィードバックインターフェースをサポート 11
12 (予約済み)プロセスパワーレポートプロセッサ電力レポートインターフェースをサポート 12
13 (予約済み)コネクテッドスタンバイコネクトスタンバイ[ 190 ]13
14 (予約済み)ラプル走行平均パワー制限[ 190 ]14
15 (予約済み)高速CPPC高速CPPC(協調プロセッサパフォーマンス制御)をサポート[ 190 ]15
31:16  (予約済み)(予約済み)31:16 
CPUID EAX=8000'0007h: EAXのプロセッサフ​​ィードバック情報とECXの電力監視インターフェース情報
ビット イーアックス ECX ビット
短い特徴 短い特徴
7:0 モニターの数C001_0080MSR以降に利用可能なプロセッサフ​​ィードバックMSRペアの数[ 191 ]CPU電力サンプル時間比 コンピューティング ユニット電力アキュムレータのサンプル期間と TSC カウンター期間の比。 7:0
15:8 バージョンプロセッサフ​​ィードバック機能バージョン 15:8
31:16 最大ラップ時間2 回のラップを回避するためにソフトウェアが使用する読み取り間の最大時間 (ミリ秒単位)。 31:16

EAX=8000'0008h: 仮想アドレスと物理アドレスのサイズ

CPUID EAX=8000'0008h: EBXの機能ビット
少し EBX
短い特徴
0 クゼロCLZERO命令
1 退職したインストラクター廃止命令数MSR(C000_00E9h)サポート
2 xrstor_fp_errXRSTORFPエラーを復元する
3 無効INVLPGBおよびTLBSYNC指示
4 rdpruRDPRU命令
5 PS5「xotext」/実行専用メモリ)[ 192 ] [ a ]
6 ムベメモリ帯域幅の強制
7 (予約済み)[ a ]
8 mコミットMCOMMIT命令
9 wbnoinvdWBNOINVD命令
10 (予約済み)
11 (予約済み)[ a ]
12 IBPBPRED_CMD間接分岐予測バリア( MSRのビット0に1を書き込むことによって実行される049h
13 wbinvd_intWBINVD中断WBNOINVD可能
14 IBRS間接分岐制限投機
15 STIBPシングルスレッド間接分岐予測モード
16 IbrsAlwaysOnIBRSモードはパフォーマンスが向上しているため、常にオンにしておく必要があります。
17 スティブプ常時オンSTIBPモードはパフォーマンスが向上しているため、常にオンにしておく必要があります。
18 ibrs_preferredソフトウェアよりもIBRSが優先される
19 ibrs_same_mode_protectionIBRSは同一モード保護を提供します
20 いいえEFER.LMSLEサポートされていません[ b ]
21 invlpgb_nestedINVLPGBネストされたページのサポート
22 (予約済み)
23 ピン保護されたプロセッサインベントリ番号 -

PPIN_CTLC001_02F0)およびPPINC001_02F1)MSRが存在する[ 190 ]

24 ssbd投機的ストアバイパスの無効化
25 ssbd_legacy投機的ストアバイパス無効化レガシー
26 ssbd_no投機的ストアバイパスの無効化は不要
27 cppc協調型プロセッサパフォーマンス制御
28 psfd予測ストアフォワードの無効化
29 btc_noブランチタイプの混乱: プロセッサは影響を受けません
30 IBPB_RETIBPB(ビット12参照)はリターンアドレス予測器もクリアする
31 ブランチサンプリングブランチサンプリングのサポート[ 195 ]
CPUID EAX=8000'0008h: EAX、ECX、EDXのサイズと範囲フィールド
ビット イーアックス ECX EDX ビット
7:0 物理アドレスビット数 プロセッサ内の物理スレッド数(マイナス1) INVLPGB説明書 の最大ページ数7:0
11時8分 リニアアドレスビット数 (予約済み)11時8分
15:12 APIC ID サイズ 15:12
17時16分 ゲスト物理アドレスサイズ[ c ]パフォーマンスタイムスタンプカウンターのサイズ RDPRU命令 によって認識される最大ECX値17時16分
23:18 (予約済み)23:18
31:24 (予約済み)31:24
  1. ^ a b c 2025年6月現在、 CPUID.(EAX=8000_0008):EBXのビット5、7、11はAMDの既知の公開ドキュメントには記載されていないが、AMD 4700Sデスクトップキットプロセッサでは設定されていることが確認されている。[ 193 ]
  2. ^ LMSLE(Long Mode Segment Limit Enable)機能には独自のCPUIDフラグがなく、CPUファミリーとモデルをチェックすることで検出されます。この機能はAuthenticAMDファミリー0Fh モデル14h [ 194 ] (90nm Athlon64/Opteron)CPUで導入され、それ以降のすべてのAMD CPUに搭載されています(ただし、「no_efer_lmsle」フラグが設定されているものは除きます)。
  3. ^値が0の場合、「ゲスト物理アドレスサイズ」がEAX[7:0]で指定された「物理アドレスビット数」と同じであることを示します。

EAX=8000'000Ah: SVM機能

このリーフは、EAX、EBX、EDX の AMD SVM (セキュア仮想マシン) 機能に関する情報を返します。

CPUID EAX=8000'000Ah: EAX、EBX、ECXのSVM情報
ビット イーアックス EBX ECX ビット
5:0 SVM リビジョン番号 利用可能なASID (アドレス空間識別子) の数(予約済み)5:0
6 x2AVIC_EXT (x2AVIC モードで 4096 個の vCPU をサポート) 6
7 (予約済み)7
8 (ハイパーバイザー)[ a ]8
31:9 (予約済み)31:9
CPUID EAX=8000'000Ah: EDXのSVM機能フラグ
少し EDX
短い特徴
0 NP高速仮想化インデックス(ネストされたページング
1 LbrVirtLBR(Last Branch Records)仮想化
2 SVMLSVMロック
3 NRIPS#VMEXIT での nRIP (次の連続命令ポインタ) 保存がサポートされています
4 TscRateMsrMSRベースのTSCレート制御(MSR C000_0104h
5 VmcbクリーンVMCB(仮想マシン制御ブロック)クリーンビットをサポート
6 フラッシュバイアシドTLBフラッシュイベント(例:CR3書き込み、CR4.PGEトグル)は、現在のASID(アドレス空間ID)のTLBエントリのみをフラッシュします。
7 デコードアシストデコードアシストをサポート
8 PmcVirtPMC(パフォーマンス監視カウンタ)仮想化
9 (SseIsa10Compat)[ b ](予約済み)
10 一時停止フィルターPAUSEインターセプトフィルターをサポート
11 (予約済み)
12 一時停止フィルターしきい値PAUSEフィルターサイクルカウントしきい値をサポート
13 AVICAMD Advanced Virtualized Interrupt Controller をサポート
14 (予約済み)
15 VMSAVEvirtVMSAVEおよびVMLOAD仮想化
16 VGIFグローバル割り込みフラグ(GIF)仮想化
17 GMETゲストモード実行トラップ
18 x2AVICAVICでx2APICモードをサポート
19 SSSチェックSVMスーパーバイザーシャドウスタックの制限
20 スペックコントロールSPEC_CTRL(MSR 2E0h)仮想化
21 ROGPT読み取り専用ゲストページテーブルをサポート
22 (予約済み)
23 ホスト_MCE_オーバーライドホストとゲストがシャットダウンではなくインターセプトを引き起こす 場合のゲスト モードのマシン チェック例外CR4.MCE=1CR4.MCE=0
24 TLBIコントロールINVLPGBVMCBでのハイパーTLBSYNCバイザーの有効化とTLBSYNCインターセプトのサポート
25 ベトナムNMI(マスク不可能割り込み)仮想化
26 IbsVirtIBS(命令ベースサンプリング)仮想化
27 外部レベルオフセット障害変更拡張LVTオフセット(APICアドレス0x500-0x530)の読み取り/書き込み障害の動作が読み取り許可、書き込み#VMEXITに変更されました[ 202 ]
28 VmcbAddrChkChgVMCBアドレスチェックの変更[ 202 ]
29 バスロックしきい値バスロックしきい値
30 アイドルホップインターセプトアイドルHLT(HLT仮想割り込みが保留されていない間に実行される命令)インターセプト
31 強化されたシャットダウンインターセプトシャットダウンインターセプトにおけるEXITINFO1のサポートと、ネストされたシャットダウンインターセプトは、インターセプト不可能なシャットダウンをもたらします。[ 203 ]
  1. ^ AMDの「Pacifica」ドキュメントの初期の改訂版では、EAXビット8はハイパーバイザー用に予約された常にゼロのビットとして記載されていました。 [ 196 ]

    AMDのそれ以降のドキュメント、例えば#25481「CPUID仕様」rev 2.18 [ 197 ]以降では、このビットは予約済みとしてのみリストされています。

    rev 2.30 [ 198 ]以降では、別のビットがハイパーバイザー用に予約済みとしてリストされています: CPUID.(EAX=1):ECX[ビット31]。

  2. ^ EDXビット9は、AMDの文書#25481「CPUID仕様」のいくつかの古いリビジョンに簡単に記載されており、一部のAMD Bobcat CPUでのみ設定されています。 [ 199 ]

    #25481のRev 2.28では、このビットは「Ssse3Sse5Dis」としてリストされています[ 200 ]。Rev 2.34では、このビットはRev 2.32で「SseIsa10Compat」という名前で仕様から削除されたと記載されています[ 201 ] 。

EAX=8000'001Fh: 暗号化メモリ機能

CPUID EAX=8000'001Fh: EAX内の暗号化メモリ機能ビット
少し イーアックス
短い特徴
0 中小企業安全なメモリ暗号化
1 SEV安全な暗号化仮想化
2 ページフラッシュMSRページフラッシュMSR(C001_011Eh)をサポート
3 SEV-ESSEV 暗号化状態
4 SEV-SNPSEV セキュアネストページング
5 VMPLVM 権限レベル
6 RMPクエリRMPQUERYサポートされている命令
7 VmplSSSVMPLスーパーバイザシャドウスタックをサポート
8 セキュアTSCセキュアTSC対応
9 TscAux仮想化TSC_AUXMSR(C000_0103) の仮想化をサポート
10 HwEnfCacheCoh暗号化ドメイン間のハードウェアキャッシュの一貫性を強制
11 64ビットホストSEV ゲスト実行は 64 ビット ホストからのみ許可されます
12 制限された注入SEV-ES ゲストは、#HV (ハイパーバイザー インジェクション例外) を除くすべてのイベント インジェクションを拒否できます。
13 代替注入SEV-ESゲストは、イベントインジェクションのために暗号化されたVMCBフィールドを使用できる。
14 デバッグVirtSEV-ES および SEV-SNP ゲストで完全なデバッグ状態仮想化がサポートされています
15 ホストIBSの防止SEV-ESゲストのホストIBSを防止する
16 静脈血栓塞栓症SEV 向け仮想透過暗号化
17 VmgexitパラメータVMGEXITパラメータがサポートされています(RAXレジスタを使用)
18 バーチャルトムMsr仮想TOM(メモリの先頭)MSR(C001_0135)をサポート
19 IbsVirtゲストコントロールIBS仮想化はSEV-ESおよびSEV-SNPゲストでサポートされています
20 PmcVirtゲストコントロールPMC仮想化はSEV-ESおよびSEV-SNPゲストでサポートされています
21 RMPREADRMPREADサポートされている命令
22 ゲストインターセプトコントロールSEV-ESゲスト向けのゲストインターセプト制御がサポートされています
23 セグメント化されたRmpセグメント化されたRMP(リバースマップテーブル)をサポート
24 VmsaRegProtVMSA(VM保存領域)レジスタ保護をサポート
25 スマート保護SMT保護をサポート
26 セキュアアビックセキュアAVIC対応
27 許可されたSEV機能VMCBのALLOWED_SEV_FEATURES_MASKフィールド(オフセット138h)がサポートされています
28 SVSM通信ページMSRSVSM(セキュアVMサービスモジュール[ 204 ])通信ページMSR(C001_F000h)サポート
29 ネストされたVirtSnpMsrVIRT_RMPUPDATE( C001_F001h) およびVIRT_PSMASH( C001_F002h) MSR がサポートされています
30 使用不可使用中とマークされているときにハイパーバイザー所有のページへの書き込みが許可されます
31 IbpbOnEntry仮想マシンへのエントリ時のIBPBがサポートされています
CPUID EAX=8000'001Fh: EBX、ECX、EDXの暗号化メモリ機能情報
ビット EBX ECX EDX ビット
5:0 ページテーブルエントリ内のCビット(暗号化有効ビット)の位置 SEV 対応ゲストに使用できる最大 ASID 値 (同時にサポートできる暗号化ゲストの最大数) SEV が有効だが SEV-ES が有効ではないゲストの最小 ASID 値 5:0
11時6分 メモリ暗号化が有効な場合の物理アドレス幅の縮小 11時6分
15:12 サポートされる VMPL (VM 特権レベル) の数 15:12
31:16 (予約済み)31:16

EAX=8000'0021h: 拡張機能識別

CPUID EAX=8000'0021h: EAXとECXの拡張機能ビット
少し イーアックス ECX 少し
短い 特徴 短い 特徴
0 ネストなしデータBpプロセッサはネストされたデータブレークポイントを無視します (予約済み)0
1 FsGsKernelGsBaseNonSerializingWRMSR、およびMSRFS_BASEは非シリアル化です[ 205 ]GS_BASEKernelGSBaseTSA_SQ_NO設定されている場合、CPUはTSA-SQに対して脆弱ではない[ 206 ]1
2 LFenceAlwaysSerializingLFENCE常にシリアル化をディスパッチします TSA_L1_NO設定されている場合、CPUはTSA-L1に対して脆弱ではない[ 206 ]2
3 スマートページ設定ロックSMM ページング構成ロックがサポートされています (予約済み)3
4 (予約済み)(予約済み)4
5 クリアVERWこの命令は、リング0のメモリオペランドで実行されると、マイクロアーキテクチャデータバッファをクリアしてTSA(Transient Scheduler Attacks)を軽減するために使用できます。[ 206 ](予約済み)5
6 NullSelectClearsBaseヌルセグメントセレクタロードは宛先セグメントレジスタのベースとリミットもクリアします。 (予約済み)6
7 上位アドレス無視上位アドレスの無視がサポートされています (予約済み)7
8 自動IBRS自動IBRS (予約済み)8
9 いいえSmmCtlMSRSMM_CTLMSR ( C0010116h) はサポートされていません (予約済み)9
10 FSRS高速ショートREP STOSB対応 (予約済み)10
11 FSRC高速ショートREPE CMPSB対応 (予約済み)11
12 PMC2PreciseRetirePreciseRetireパフォーマンスカウンタ制御ビット(MSRC0010002hビット43)がサポートされている[ 203 ](予約済み)12
13 プリフェッチコントロールメッセージPrefetchControl MSR ( C0000108h) がサポートされています (予約済み)13
14 L2TlbSIzeX32設定されている場合、L2 TLBサイズ(リーフ80000006h)は32の倍数としてエンコードされます。 (予約済み)14
15 AMD_ERMSBプロセッサはAMDのEnhancedREP MOVSBおよびREP STOSB(予約済み)15
16 OPCODE_0F017_RECLAIM0F 01 /7AMD用にオペコードを予約し、#UDを返します。 [ 203 ](予約済み)16
17 CpuidUserDisCPUID非特権ソフトウェアを無効にする (#GP) (予約済み)17
18 EPSF拡張予測ストア転送をサポート[ 205 ](予約済み)18
19 高速REP_SCASB高速ショートREP SCASB対応 (予約済み)19
20 プリフェッチ命令キャッシュプリフェッチ命令をサポート (予約済み)20
21 FP512_ダウングレード512ビットデータパスから256ビットへのダウングレードがサポートされています。[ a ](予約済み)21
22 WL_CLASS_サポートスケジューリング決定のためのOSへのワークロードベースのヒューリスティックフィードバックのサポート[ 203 ](予約済み)22
23 AVX512_BMMAVX-512 ビット行列乗算およびビット反転命令[ 208 ](予約済み)23
24 エラプス強化されたリターンアドレス予測セキュリティ(EBX[23:16]「RapSize」も参照) (予約済み)24
25 (予約済み)(予約済み)25
26 (予約済み)(予約済み)26
27 SBPB選択分岐予測バリア対応[ 209 ](予約済み)27
28 IBPB_BRTYPEIBPBはすべての分岐予測をフラッシュする[ 209 ](予約済み)28
29 SRSO_NOCPUはSRSO(投機的リターンスタックオーバーフロー)脆弱性の影響を受けない[ 209 ](予約済み)29
30 SRSO_USER_KERNEL_NOCPUはユーザー/カーネル境界を越えたSRSO脆弱性の影響を受けない[ 209 ](予約済み)30
31 SRSO_MSR_FIXSRSOはBP_CFGのビット4を設定することで軽減できる(MSR C001_102E[ 209 ](予約済み)31
  1. ^ 512ビットから256ビットへのデータパスダウングレードが有効になっている場合、512ビットデータ項目を処理するAVX-512命令は2つの256ビット部分に分割され、2つの連続したサイクルにわたって発行されます。このデータパスダウングレードは、一部のワークロードの電力効率を向上させるのに役立ちます。 [ 207 ]
CPUID EAX=8000'0021h: EBXの拡張機能情報
少しEBX
短い特徴
15:0 マイクロコードパッチサイズマイクロコードパッチのサイズ(16バイト単位)。0の場合、パッチのサイズは最大5568(15C0h)バイトです。
23:16 ラップサイズリターン アドレス プレディクタのサイズ。RapSize * 8 は、リターン アドレス プレディクタをフラッシュするために必要な、 一致する命令のない命令の最小数です。CALLRET
31:24 (予約済み)

EAX=8FFF'FFFEh および EAX=8FFF'FFFFh: AMD イースターエッグ

いくつかのAMD CPUモデルでは、CPUIDが の場合、 EAX、EBX、ECX、EDXにイースターエッグ文字EAX=8FFF'FFFFh列が返されます。 [ 210 ] [ 211 ]既知のイースターエッグ文字列には以下のものがあります。

プロセッサ
AMD K6NexGen‍erationAMD
AMD K8IT'S HAMMER TIME
AMDジャガー[ 212 ]HELLO KITTY! ^-^

さらに、AMD K6 CPUは、CPUIDが の場合EAX=8FFF'FFFEh、EAXに「DEI 」へのイースターエッグ参照を返します。 [ 213 ]

EAX=C000'0000h: 最高ケンタウロス拡張機能

EAX 内の最上位 Centaur リーフのインデックスを返します。EAX の戻り値が 未満の場合C0000001h、Centaur 拡張リーフはサポートされません。

VIAおよびZhaoxinの CPU に搭載されています。

IDT WinChip CPU(CentaurHaulsファミリー5)では、拡張リーフはC0000001h-C0000005hCentaur固有の機能をエンコードせず、代わりにリーフのエイリアスです80000001h-80000005h[ 214 ]

EAX=C000'0001h: Centaur 機能情報

このリーフはCentaurの機能情報(主にVIA/Zhaoxin PadLock)をEDXで返します。[ 215 ] [ 216 ] [ 217 ] [ 218 ](EAX、EBX、ECXは予約済みです。)

CPUID EAX=C000'0001h: EDXのCentaur機能ビット
少し EDX
短い 特徴
0 sm2 [ a ]GMISM2命令あり
1 sm2_en []SM2対応
2 乱数PadLock RNGあり:XSTOREおよびREP XSTORE手順
3 rng_enRNGが有効
4 ccs [ a ]GMI SM3 / SM4命令が存在する:CCS_HASHおよびCCS_ENCRYPT
5 ccs_en [ a ]SM3/SM4命令が有効
6 xcryptPadLock Advanced Cryptographic Engine (ACE、AES暗号を使用) 搭載:REP XCRYPT(ECB,CBC,CFB,OFB)説明書
7 xcrypt_enACE 対応
8 エース2ACE v2 が存在:REP XCRYPTCTR命令、および ACE のREP XCRYPT*命令のダイジェスト モードと不整列データのサポート。
9 ace2_enACE v2 対応
10 フェPadLockハッシュエンジン(PHE):REP XSHA1およびREP XSHA256手順
11 phe_enPHE対応
12 午後PadLockモンゴメリ乗算器(PMM):REP MONTMUL命令
13 pmm_enPMMが有効
14 (予約済み)
15 zx_fmaFMA対応
16 視差適応型P状態制御あり
17 視差適応型P状態制御が有効
18 過度のストレス自動オーバークロックのためのオーバーストレス機能搭載
19 過度のストレス自動オーバークロックのオーバーストレス機能が有効化
20 tm3サーマルモニター3搭載
21 tm3_enサーマルモニター3有効
22 乱数2RNG v2 - 第2世代RNGの現在:REP XRNG2命令
23 rng2_enRNG v2 有効
24 セムSME機能あり
25 phe2PHE v2: SHA384とSHA512が存在
26 phe2_enPHE v2 対応
27 xmodxRSA命令が存在する:XMODEXPおよびMONTMUL2命令
28 xmodx_enRSA命令が有効
29 悩ませるVEX命令が存在する
30 vex_enVEX命令が有効
31 stkSTKが存在する
  1. ^ a b c d VIA NehemiahおよびAntaur CPU(CentaurHaulsファミリー6モデル9のみ)では、[ 219 ]ビット0、1、4、5の使用方法が異なります。

EAX=C000'0006h, ECX=0: Zhaoxin機能情報

このサブリーフは、EAX でフィーチャ情報を返します。EBX、ECX、EDX は予約されています。

CPUID EAX=C000'0006h, ECX=0: EAXのZhaoxin機能ビット
少し イーアックス
短い 特徴
0 一時停止オプションPAUSEOPT指示[ 220 ]
31:1 (予約済み)

高水準言語からのCPUIDの使用

インラインアセンブリ

この情報は他の言語からも簡単にアクセスできます。例えば、以下のgccのCコードは、cpuidによって返される最初の5つの値を出力します。

#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 ); 0 を返す; }

どちらかのバージョンが単純なアセンブリ言語で記述されている場合、値を使い続けたいときは、プログラマーは EAX、EBX、ECX、EDX の結果を別の場所に手動で保存する必要があります。

ラッパー関数

<cpuid.h>GCCは、 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 は存在しませんが、存在すると想定します */ if ( ! __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呼び出しが正しいリクエストを受け取った場合はゼロ以外の値を返し、失敗した場合はゼロを返します。[ 221 ]

Microsoft Visual C コンパイラには組み込み関数が用意されており__cpuid()、cpuid 命令をインラインアセンブリを使用せずに埋め込むことができます。これは、x86-64 版の MSVC ではインラインアセンブリが全くサポートされていないため便利です。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を返す; }

多くのインタプリタ型またはコンパイル型のスクリプト言語は、 FFIライブラリを介してCPUIDを使用できます。そのような実装の1つは、 RubyのFFIモジュールを使用してCPUIDオペコードを含むアセンブリ言語を実行する例です。

.NET 5以降のバージョンでは、このSystem.Runtime.Intrinsics.X86.X86base.CpuIdメソッドが提供されています。例えば、以下のC#コードは、CPUID命令をサポートしている場合、プロセッサのブランド名を出力します。

System.Runtime.InteropServicesを使用します。System.Runtime.Intrinsics.X86を使用します。System.Text使用しますnamespace X86CPUID { class CPUBrandString { public static void Main ( string [] args ) { if ( ! X86Base . IsSupported ) { Console . WriteLine ( "お使いのCPUは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 ) ; } } } }

x86以外のCPU固有の情報

x86 以外の CPU アーキテクチャの中には、プロセッサの機能に関する特定の形式の構造化情報を、通常は特殊レジスタのセットとして提供するものもあります。

  • ARMアーキテクチャには、アクセスに例外レベルEL1以上をCPUID必要とするコプロセッサレジスタがあります。 [ 222 ]
  • System/370からz/ArchitectureまでのIBMメインフレームプロセッサには、スーパーバイザモード専用のStore CPU IDSTIDP)命令があり、CPUタイプなどの情報を提供します。[ 223 ] [ 224 ] : 10-147–10-149
  • z/Architectureメインフレームプロセッサには、インストールされているハードウェア機能を一覧表示するスーパーバイザモード専用のStore Facilities ListSTFL[ 224 ]:10-149 命令と、非特権のStore Facilities List ExtendedSTFLE)命令、:7-394–7-395 もあります。
  • MIPS32 /64アーキテクチャは、必須のプロセッサ識別PrId)と一連のデイジーチェーン構成レジスタを定義しています。[ 225 ]
  • PowerPCプロセッサには使用中のプロセッサモデルを識別する32ビットの読み取り専用プロセッサバージョンレジスタ( )があります。この命令はスーパーバイザアクセスレベルを必要とします。 [ 226 ]PVR
  • RISC -Vアーキテクチャにはmcpuid「CPU実装の機能に関する情報を含む読み取り専用レジスタ」がある[ 227 ]

DSPトランスピュータのようなチップファミリは、設計のバリエーションが(相対的に)豊富であるにもかかわらず、この命令を目立った形で採用していません。シリコン識別の代替手段が存在する可能性があります。例えば、Texas InstrumentsのDSPには、各機能ユニットごとにメモリベースのレジスタセットが搭載されており、ユニットの種類とモデル、ASIC設計リビジョン、設計段階で選択された機能を識別する識別子から始まり、ユニット固有の制御レジスタとデータレジスタが続きます。これらの領域へのアクセスは、既存のロード命令とストア命令を使用するだけで実行されるため、このようなデバイスでは、デバイス識別のためにレジスタセットを拡張する必要はありません。

参照

参考文献

  1. ^ 「Intel 64およびIA-32アーキテクチャソフトウェア開発者マニュアル」(PDF) . Intel.com . 2013年4月11日閲覧
  2. ^ 「Intelプロセッサーの検出 - システムCPUの世代を知る」 Rcollins.org . 2013年4月11日閲覧
  3. ^ "LXR linux-old/arch/i386/kernel/head.S" . Lxr.linux.no. 2012年7月13日時点のオリジナルよりアーカイブ。 2013年4月11日閲覧
  4. ^ a b c Debbie Wiles, CPU Identification , 2006年6月4日アーカイブ
  5. ^ B-CoolWare、 TMi0SDGL x86 CPU/FPU検出ライブラリ(ソースコード付き)、v2.15、2000年6月 - CPUID以前のx86 CPU検出ルーチンの大規模なコレクションについては、/SOURCE/REALCODE.ASMを参照してください。2023年3月14日にアーカイブ。
  6. ^ 「CPUID、EAX=4 - 奇妙な結果(解決済み)」 . Software.intel.com . 2014年7月10日閲覧
  7. ^ @InstLatX64 (2019年2月28日). 「『GenuineIotel』との初遭遇(Iの後のnではなくo)」ツイート)– Twitter経由。
  8. ^ 「 Intel Xeon E3-1231 用の GenuineIotel CPUID ダンプ」。instlatx64
  9. ^ instlatx64、 RDC IAD 100のCPUIDダンプ。2022年12月22日閲覧。
  10. ^ a b c d smxi, Inxi 197号: Elbrus CPUのサポートデータと実装。2023年10月23日閲覧。2023年10月23日アーカイブ。
  11. ^ Grzegorz Mazur、「CPUID サポートによる x86 CPU の識別」 、1997年5月5日。1997年5月24日時点のオリジナルよりアーカイブ。
  12. ^ Ingo Böttcher, CPUDET.PAS v1.61、1996年10月23日 - 「AMD ISBETTER」文字列をテストするCPU識別プログラム。2024年4月26日アーカイブ。
  13. ^ sorgelig (2017年8月3日). 「ao486 CPUID命令(コミット43a2004内)」 . GitHub . 2023年12月4日時点のオリジナルよりアーカイブ。 2023年12月4日閲覧
  14. ^ a b sorgelig (2020年8月30日). “Update cpuid. · MiSTer-devel/ao486_MiSTer@82f5014” . GitHub . 2023年12月4日時点のオリジナルよりアーカイブ。 2023年12月4日閲覧
  15. ^ sorgelig (2020年8月30日). 「ao486 CPUID命令」 . GitHub . 2023年10月23日時点のオリジナルよりアーカイブ2023年12月4日閲覧。
  16. ^ 「v586: FPGA用586互換ソフトコア」GitHub2021年12月6日。
  17. ^ Peter Ferrie、「さらなる仮想マシンエミュレータへの攻撃」5ページ。2010年2月15日アーカイブ。
  18. ^ a b Amit Singh, Miscellaneous、Solarisセクションを参照。 2004年12月10日時点のオリジナルよりアーカイブ。
  19. ^ a b c d Darek Mihocka、「ARM64 Boot Camp: Understanding x86/x64 Emulation on Windows on ARM」、2024年1月28日、「CPUIDの調査」セクションを参照。2024年2月24日アーカイブ。
  20. ^ 「タイマーとcpuidを楽しむ - Jim Cownie著 - CPUの楽しみ」。2021年3月3日。
  21. ^ Insignia Solutions、『RealPC インストールおよびユーザーズガイド』、1997年、71ページ。 2015年11月28日時点のオリジナルよりアーカイブ。
  22. ^ Philippe Geneste、 (情報) Emulation PC sur Mac (フランス語)、1998 年 1 月 21 日。2025年 6 月 24 日アーカイブ。
  23. ^ Insignia Solutions、『SoftWindows 98 インストールおよびユーザーズガイド』、1998年、127ページ。 2015年11月25日時点のオリジナルよりアーカイブ。
  24. ^ VOGONS ディスカッション スレッド「386/486/586 クラ​​ス + Alpha CPU および 3dfx + S3 + SiS + Matrox + XGI + 古い ATI + NVidia GPU の SIV サポート - テスト ヘルプ」、投稿者 lolo799、2021 年 9 月 12 日 17:10 - スクリーンショットおよび文字列をリストした CPUID ダンプについては、SIV32L 添付ファイルを参照してください"Compaq FX!32"
  25. ^ virt-what ソースツリー、 tests/lx86/proc/cpuinfo - PowerVM Lx86 cpuinfo ダンプ。 2024年11月10日にアーカイブ
  26. ^ Neko Project 21/W, help/configure (日本語).2024年9月22日アーカイブ。
  27. ^ CPU-World、 「Neko Project」文字列を含むエミュレートされたNeko Project CPUのCPUID。2024年12月21日アーカイブ。
  28. ^ iXBT Labs、 VIA Nano CPUID Tricks、2010年8月26日。2010年8月29日アーカイブ。
  29. ^ IDT、 WinChip 2A データシート、v1.0、1999 年 1 月、A-3 ページ。
  30. ^ VIA、 C3 Nehemiah データシート、改訂 1.13、2004 年 9 月 29 日、A-3 ページ。
  31. ^ Agner Fog, CpuIDFake, v1.00、2010年1月22日、「Instructions.txt」を参照。2010年7月9日アーカイブ。
  32. ^ a b Transmeta、Crusoe BIOS Programmer's Guide、2004 年 1 月 23 日、63 ~ 65 ページ。
  33. ^ Transmeta、Efficeon BIOSプログラマーズガイド、2003年8月19日、セクション8.3、148ページ。
  34. ^ AMD、 Geode LXデータブック、pub.id. 33234H、2009年2月、107ページ。 2023年12月3日にアーカイブ
  35. ^ DM&P、 Vortex86EX2_A9133_Master_Data_Sheet_V11_BF、2019年5月8日、72ページ。
  36. ^ 「第3章 命令セットリファレンス、AL」(PDF) . Intel 64およびIA-32アーキテクチャソフトウェア開発者マニュアル. Intel Corporation. 2018年12月20日. 2018年12月20日閲覧
  37. ^ Intel、『Pentium プロセッサ ファミリ デベロッパーズ マニュアル』、1997 年、注文番号 241428-005、セクション 3.4.1.2 (ページ 91)、17.5.1 (ページ 489)、および付録 A (ページ 522) には、「プロセッサ タイプ」フィールドと「デュアル プロセッサ」指定の動作に関する詳細が記載されています。
  38. ^ InstLatx64、 x86、x64 命令レイテンシ、メモリレイテンシ、CPUID ダンプ、2023 年 9 月 30 日。
  39. ^ AMD、「Enhanced Am486DX Microprocessor Family」、pub.no. 20736 rev B、1997年3月、セクション9.2.2、55ページ。2023年10月18日アーカイブ。
  40. ^ AMD、 ÉlanSC400およびÉlanSC410マイクロコントローラユーザーズマニュアル、pub.no. 21030、1997、セクション3.6.2、ページ73。 2023年10月18日にアーカイブ
  41. ^ Cyrix、 5x86 BIOSライターガイド、改訂1.12、注文番号92426-00、1995年、7ページ
  42. ^ a b Cyrix、CPU 検出ガイド、改訂 1.01、1997 年 10 月 2 日、6 ページ。
  43. ^ MiSTer ao486 ソースコード、 rtl/ao486/defines.v、70行目。 2023年10月23日にアーカイブ
  44. ^ CPU-World、 Vortex86DX2 933 MHzのCPUID。2023年10月17日アーカイブ。
  45. ^ CPU-World、 Vortex86EX2のCPUID。2023年10月18日アーカイブ。
  46. ^ InstLatx64、 Centaur CNS CPUIDダンプ。2023年5月30日アーカイブ。
  47. ^ Jeff Atwood、「Nasty Software Hacks and Intel's CPUID」 Coding Horror、2005年8月16日。
  48. ^ a b Intel、「Intel Xeon Phi コプロセッサ命令セットアーキテクチャリファレンスマニュアル」、2012年9月、注文番号327364-001、付録B.8、673-674ページ。2021年8月4日アーカイブ。
  49. ^ CPU-World、 Intel Itanium 2 1.50GHzのCPUID。2023年10月17日アーカイブ。
  50. ^ 「[PATCH] x86/cpu: NovalakeのCPUモデル番号を追加 - Tony Luck」 lore.kernel.org . 2025年8月16日閲覧
  51. ^ 「[PATCH] x86/cpu: 2つのIntel CPUモデル番号を追加 - Tony Luck」 lore.kernel.org . 2024年9月24日閲覧
  52. ^ InstLatX64、72コア Intel Xeon Phi 7290 CPUIDダンプ
  53. ^ InstLatx64、96コアAMD Ryzen Threadripper Pro 7995WXのCPUIDダンプ
  54. ^ Intelプロセッサ識別とCPUID命令(PDF)、Intel、2002年5月、2021年4月17日時点のオリジナル(PDF)からアーカイブ
  55. ^ Linux 6.3 カーネルソース、 /arch/x86/include/asm /cpuid.h、69行目
  56. ^ gcc-patches メーリングリスト、 IDT Winchip 用 CPUID パッチ、2019 年 5 月 21 日
  57. ^ Geoff Chappell、「32 ビット Windows カーネルでの CMPXCHG8B サポート」、2008 年 1 月 23 日。2023年 1 月 30 日にアーカイブ
  58. ^ AMD、 AMDプロセッサ認識アプリケーションノート、出版物#20734、改訂D、1997年1月、13ページ
  59. ^ Intel、 AP-485 アプリケーションノート - Intel プロセッサ識別および CPUID 命令、注文番号 241618-006、1997 年 3 月、10 ページの表 5、ビット 10 を参照。
  60. ^ Michal Necasek、 SYSENTER、Where Are You? OS/2 Museum、2017年7月20日
  61. ^ Intel、 TDXモジュールソースコード、v1.0.03.03、2023年6月22日、src/common/helpers/smrrs.hを参照。2025年1月20日アーカイブ。
  62. ^ Intel、「Trust Domain CPU Architectural Extensions」、注文番号343754-002、2021年5月。2024年12月17日アーカイブ。
  63. ^ Intel、 Pentium 4プロセッサ90 nmプロセス仕様アップデート、注文番号302352-031、2006年9月、59ページのエラッタR85を参照。 2008年12月31日にアーカイブ
  64. ^ Geoff Chappell、「ECX」、CPUID Leaf 1より、2020年1月26日。2020年5月9日アーカイブ。
  65. ^ Huggahalli, Ram; Iyer, Ravi; Tetrick, Scott (2005). 「高帯域幅ネットワークI/Oのためのダイレクトキャッシュアクセス」. ACM SIGARCH Computer Architecture News . 33 (2): 50– 59. CiteSeerX 10.1.1.85.3862 . doi : 10.1145/1080695.1069976 . CiteSeerX : 10.1.1.91.957 . 
  66. ^ Drepper, Ulrich (2007)、「すべてのプログラマがメモリについて知っておくべきこと」CiteSeerX : 10.1.1.91.957
  67. ^ a b Intel、Itanium アーキテクチャ ソフトウェア開発者向けマニュアル、rev 2.3、ボリューム 4: IA-32 命令セット、2010 年 5 月、文書番号: 323208、表 2-5、ページ 4:81、ビット 20 と 30 を参照。2012 年 2 月 15 日にアーカイブ。
  68. ^ Intel、 AP-485、プロセッサ識別とCPUID命令フラグ、改訂第30版、2006年1月、26ページ
  69. ^ Michal Necasek、「HTT はハイパースレッディングの意味で、正しいのか?」 OS/2 Museum、2017 年 12 月 11 日
  70. ^ 「VMware仮想マシンでソフトウェアが実行されているかどうかを判断するメカニズム」。VMwareナレッジベース。VMWare 。2015年5月1日。IntelおよびAMD CPUは、CPUIDリーフ0x1のECXビット31をハイパーバイザー存在ビットとして予約しています。このビットにより、ハイパーバイザーはゲストOSに自身の存在を示すことができます。ハイパーバイザーはこのビットを設定し、物理CPU(既存および将来導入されるすべてのCPU)はこのビットを0に設定します。ゲストOSはビット31を検査することで、仮想マシン内で実行されているかどうかを検出できます。
  71. ^ Kataria, Alok; Hecht, Dan (2008-10-01). 「ハイパーバイザーCPUIDインターフェース提案」 . lore.kernel.orgのLKMLアーカイブ。2019年3月15日にオリジナルからアーカイブ。CPUIDリーフ0x1のECXのビット31。このビットは、ハイパーバイザー用にIntelとAMDによって予約されており、ハイパーバイザーの存在を示します。仮想CPU(ハイパーバイザー)はこのビットを1に設定し、物理CPU(既存および将来のすべてのCPU)はこのビットを0に設定します。ゲストソフトウェアはこのビットを調べて、仮想マシン内で実行されているかどうかを検出できます。
  72. ^ "AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming" (PDF) (3.41 ed.). Advanced Micro Devices, Inc. p. 498. 24593. 2023年9月30日時点のオリジナル(PDF)からのアーカイブ。 2023年9月9日閲覧15.2.2 ゲストモード この新しいプロセッサモードは、VMRUN命令によって開始されます。ゲストモードでは、仮想化を容易にするために一部のx86命令の動作が変更されます。CPUID機能番号4000_0000h~4000_00FFhはソフトウェア用に予約されています。ハイパーバイザーはこれらの機能番号を使用して、ハイパーバイザーからゲストに情報を渡すためのインターフェースを提供できます。これは、CPUIDを使用して物理CPUに関する情報を抽出するのと似ています。ハイパーバイザーは、CPUID Fn 400000[FF:00]ビットを使用して仮想プラットフォームを示します。機能ビットCPUID Fn0000_0001_ECX[31]は、ハイパーバイザーの存在を示すためにハイパーバイザーが使用するために予約されています。ハイパーバイザーはこのビットを1に設定し、物理CPUはこのビットを0に設定します。ゲストソフトウェアはこのビットを調べて、仮想マシン内で実行されているかどうかを検出できます。
  73. ^ Intel SDM vol 2A、注文番号253666-053、2015年1月、p. 244
  74. ^ a b Intel、「プロセッサ識別とCPUID命令アプリケーションノート485」、注文番号241618-037、2011年1月、31-32ページ。2023年10月17日アーカイブ。
  75. ^ Intel、「Itanium プロセッサ ソフトウェア開発リファレンスマニュアル」、改訂 2.0、注文番号 245320-003、2001年12月、110 ページ。2004年2月18日時点のオリジナルよりアーカイブ。
  76. ^ a b Intel、「プロセッサ識別およびCPUID命令アプリケーションノート485」、注文番号241618-036、2009年8月、26ページ。2023年10月6日にアーカイブ
  77. ^ InstLatX64、 Willamette-128 CPUIDダンプ。2019年12月7日アーカイブ。
  78. ^ InstLatX64、 Northwood-128 CPUIDダンプ。2019年12月7日アーカイブ。
  79. ^ InstLatX64、 Prescott-256 CPUIDダンプ。2019年12月6日アーカイブ。
  80. ^ InstLatX64、 Intel Tolapai CPUIDダンプ。2019年1月19日アーカイブ。
  81. ^ Jason Gaston、 (PATCH 2.6.24-rc5) x86 intel_cacheinfo.c: Intel TolapaiのCPUキャッシュ情報エントリ LKML、2007年12月20日。 2024年11月9日にアーカイブ
  82. ^ VIA-Cyrix、「アプリケーションノート120:Cyrix III CPU BIOSライターガイド」 、改訂1.1、1999年11月24日、13ページ。2000年9月29日時点のオリジナルよりアーカイブ。
  83. ^ InstlatX64、 Intel Atom 230 CPUIDダンプ。2019年12月7日アーカイブ。
  84. ^ WikiChip、 Bonnell。2017年7月16日アーカイブ。
  85. ^ Cyrix、「Cyrix CPU 検出ガイド」、改訂 1.01、1997 年 10 月 2 日、13 ページ。
  86. ^ CPU-Worldフォーラム、 Working Timna desktop 2023、2ページ目- TimnaエンジニアリングサンプルのCPUIDダンプが掲載されています。2024年11月9日アーカイブ。
  87. ^ Geoff Chappell、 CPUID Leaf 2、2020年1月26日。2023年9月4日アーカイブ。
  88. ^ Intel、 Itanium 2 プロセッサリファレンスマニュアル、注文番号 251110-003、2004年5月、192ページ。2006年12月7日時点のオリジナルよりアーカイブ。
  89. ^ Intel、 Itanium 2 プロセッサ仕様アップデート、注文番号 251141-028、2004年11月、26ページのエラータ 6。 2004年11月25日時点のオリジナルよりアーカイブ。
  90. ^ Intel、 Atom C3000プロセッサー製品ファミリー仕様アップデート、注文番号336345-020、16ページ、2023年3月。2023年10月7日にアーカイブ
  91. ^ Intel、第6世代Intelプロセッサー仕様アップデート、注文番号332689-030、2023年7月、66ページのエラッタSKL148を参照。 2023年3月8日時点のオリジナルよりアーカイブ。
  92. ^ Intel、第10世代Intel Coreプロセッサー仕様アップデート、注文番号615213-013、2023年4月、41ページのエラッタCML081を参照。 2024年7月19日にアーカイブ
  93. ^ Intel、 Xeonプロセッサー7500シリーズデータシート、注文番号323341-001、2010年3月、150ページ。2023年10月8日にアーカイブ
  94. ^ Intel,最適化リファレンスマニュアル、第1巻、注文番号248966-049、2024年1月、第9.6.3.3章、361ページ。2024年4月19日アーカイブ。
  95. ^ Intel、「プロセッサ識別とCPUID命令」、注文番号241618-031、2006年9月、32ページ。
  96. ^ a b Shih Kuo (2012年1月27日). 「Intel 64アーキテクチャ・プロセッサ・トポロジー一覧」 .
  97. ^ 「CPUIDを使用したプロセッサとコアの列挙 | AMD」 Developer.amd.com。2014年7月14日時点のオリジナルよりアーカイブ。 2014年7月10日閲覧
  98. ^ 「Sandybridgeプロセッサが誤ったコア数を報告?」 Software.intel.com. 2012年12月29日. 2014年7月10日閲覧
  99. ^ "cpuid, __cpuidex" . Msdn.microsoft.com. 2014年6月20日. 2014年7月10日閲覧
  100. ^ "x86アーキテクチャ - CPUID" . sandpile.org . 2014年7月10日閲覧
  101. ^ "topology.cpp in ps/trunk/source/lib/sysdep/arch/x86_x64 – Wildfire Games" . Trac.wildfiregames.com. 2011年12月27日. 2021年3月9日時点のオリジナルよりアーカイブ。 2014年7月10日閲覧
  102. ^ハイパースレッディングテクノロジーとマルチコアプロセッサ検出
  103. ^ Intel、「アーキテクチャ命令セット拡張プログラミングリファレンス」、注文番号319433-052、2024年3月、第17章。2024年4月7日にアーカイブ
  104. ^ Intel、「Intel プロセッサ識別および CPUID 命令 (AP-485、改訂 30)」、注文番号 241618-030、2006 年 1 月、19 ページ。
  105. ^ Intel、 Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル、注文番号 352462-079、第 3B 巻、セクション 15.4.4.4、ページ 3503
  106. ^ Intel、「プロセッサ識別とCPUID命令」、注文番号241618-038、2012年4月、p.38
  107. ^ Intel、製品変更通知108701、2008年8月1日。2023年5月11日アーカイブ
  108. ^ a b「Intel Transactional Synchronization Extensionのメモリ順序付け問題によるパフォーマンス監視への影響」(PDF) . Intel . 2023年6月. p. 8 . 2024年5月8日閲覧
  109. ^ a b c Intel、「アーキテクチャー仕様:Intel Trust Domain Extensions(Intel TDX)モジュール」、注文番号344425-001、2020年9月、120-122ページ。 2021年7月29日時点のオリジナルよりアーカイブ。
  110. ^ Intel、「PCOMMIT 命令の非推奨」、2016年9月12日。 2023年4月23日にアーカイブ
  111. ^ Intel、 AVX512-FP16アーキテクチャ仕様(PDF)、文書番号347407-001、2021年6月。2022年10月26日にアーカイブ
  112. ^ a b c d「投機的実行サイドチャネル緩和策」(PDF)。リビジョン2.0。Intel 2018年5月[2018年1月]。文書番号:336996-002 。 2018年5月26日閲覧
  113. ^ 「IBRSパッチシリーズ[LWN.net]」
  114. ^ Intel、 X86S外部アーキテクチャ仕様v1.2、2024年6月、注文番号351407-002、セクション3.5、13ページ。 2024年10月2日時点のオリジナルよりアーカイブ。
  115. ^ Intel、「簡素化されたIntelアーキテクチャの構想」(2024年12月20日時点)には、IntelがX86Sの採用を見送ったとの記述がある。2024年12月20日アーカイブ。
  116. ^ a b c Intel、「Flexible Return and Event Delivery (FRED) 仕様」、改訂 6.1、2023年12月、注文番号 346446-007、14ページ。2023年12月22日にアーカイブ。
  117. ^ Intel、『ソフトウェア開発者マニュアル』、注文番号 325462-080、2023 年 6 月 - 早期にビジー状態になるシャドウ スタックに関する情報は、第 1 巻、410 ページのセクション 17.2.3、第 2 巻 A、820 ページの表 3.8 (CPUID EAX=7、ECX=2)、第 3 巻 C、3958 ページの表 25-14、および 3984 ページのセクション 26.4.3 に記載されています。
  118. ^ Intel、「複雑なシャドウスタックの更新(Intel制御フロー実施テクノロジー)」、注文番号356628-001、2023年8月。2024年4月2日アーカイブ。
  119. ^ LKML、 Re: (PATCH v3 00/21) Enable CET Virtualization、2023年6月16日 - CET-SSSの早期ビジースタック問題が仮想化とどのように相互作用するかについての追加的な議論を提供しています。2023年8月7日アーカイブ。
  120. ^ a b Intel、「Advanced Vector Extensions 10」、改訂1.0、2023年7月、注文番号355989-001。2023年7月24日アーカイブ。
  121. ^ a b Intel、「Advanced Performance Extensions - Architecture Specification」、rev 2.0、2023年8月、注文番号355828-002、37ページ。2023年9月10日にアーカイブ。
  122. ^ Intel、「Fast Store Forwarding Predictor」、2022年2月8日。2024年4月6日アーカイブ。
  123. ^ a b c Intel、Branch History Injection および Intra-mode Branch Target Injection / CVE-2022-0001、CVE-2022-0002 / INTEL-SA-00598、2022年8月4日。2023年5月5日にアーカイブ
  124. ^ Intel、リターンスタックバッファアンダーフロー / CVE-2022-29901、CVE-2022-28693 / INTEL-SA-00702、2022年7月12日。2022年7月13日アーカイブ
  125. ^ Intel、「データ依存型プリフェッチャー」、2022年11月10日。2024年8月4日時点のアーカイブ
  126. ^ Intel、 MONITORおよびUMONITORパフォーマンスガイダンス、2024年7月10日。2024年11月27日アーカイブ。
  127. ^ Intel、「非同期エンクレーブ終了通知とEDECCSSAユーザーリーフ関数」、2022年6月30日。2022年11月21日にアーカイブ
  128. ^ Linux カーネル git コミット 604dc91、 x86/tsc: CPUID.0x16 を使用して、不足している水晶周波数を計算します、2019 年 5 月 9 日 - 周波数を指定していない CPU でのコア水晶クロック周波数の計算に関するメモと、対応する C コードが含まれています。
  129. ^ Intel、 SDM Volume 3A、注文番号253668-083、2024年3月、第11.5.4章、408ページ
  130. ^ instlatx64、 Spreadtrum SC9853I-IA CPUIDダンプ
  131. ^ 「Intel® アーキテクチャ命令セット拡張と将来の機能」(PDF) (第58版). 2025年6月. p. 41. 319433-058. 2025年7月17日時点のオリジナルよりアーカイブ(PDF) . 2025年10月30日閲覧
  132. ^ 「Intel® Architecture Instruction Set Extensions and Future Features」(PDF)(第59版)2025年10月2日、p. 41、319433-059。2025年10月3日時点のオリジナルよりアーカイブ(PDF) 。 2025年10月3日閲覧
  133. ^ Intel、「アーキテクチャ仕様:Intel Trust Domain Extensions(Intel TDX)モジュール」、注文番号344425-005、93ページ、2023年2月。2023年7月20日にアーカイブ
  134. ^ Intel、「Intel Advanced Vector Extensions 10 Architecture Specification」、注文番号355989-003US、2024年7月、13ページの改訂履歴を参照。 2024年10月8日にアーカイブ
  135. ^ Intel、「Trust Domain Extensions (Intel TDX) モジュールベースアーキテクチャ仕様」、注文番号348549-006US、2025年4月、p. 116。2025年4月24日アーカイブ。
  136. ^ Intel、「Advanced Vector Extensions 10.2 Architecture Specification」、リビジョン4.0、注文番号361050-004US、2025年5月、p. 16。2025年5月25日アーカイブ。
  137. ^ a b Intel、「Intel Xeon Phi コプロセッサー命令セットアーキテクチャーリファレンスマニュアル」、2012年9月、注文番号327364-001、付録B.8、677ページ。2021年8月4日にアーカイブ
  138. ^ a b Microsoft、「Hyper-V の機能とインターフェイスの検出」、2022年7月8日。2023年11月18日にアーカイブ
  139. ^ Geoff Chappell、 HV_HYPERVISOR_INTERFACE、2022年12月10日。2023年2月1日アーカイブ。
  140. ^ QEMUドキュメント、 Hyper-V Enlightenments。2024年4月17日アーカイブ。
  141. ^ Linux 6.8.7 カーネルソース、 /source/arch/x86/kvm /cpuid.c、1482-1488行目
  142. ^ Linuxカーネルドキュメント、 KVM CPUIDビット。2022年8月22日アーカイブ。
  143. ^ Linux 6.8.7 カーネルソース、 /arch/x86/kvm/hyperv.c、行 2793
  144. ^ Linuxカーネルドキュメント、仮想化サポート: 4.118 KVM_GET_SUPPORTED_HV_CPUID。2024年3月26日アーカイブ。
  145. ^ FreeBSDコミット560d5ed、2013年6月28日、ファイル/sys/amd64/vmm/x86.cの48行目を参照。 2024年4月22日にアーカイブ
  146. ^ HyperKitソースコード、 /src/lib/vmm/x86.cの42行目、2021年5月8日。
  147. ^ Xen、 XenへのCPUIDインターフェース。2024年4月22日アーカイブ。
  148. ^ QEMUソースコード、 fb/target/i386/cpu.c、行6475、2024年3月18日。
  149. ^ Xakep, Детектим виртуалки [仮想マシンの検出] (ロシア語), 2013年11月8日 - Parallels Workstation上のCPUID.(EAX=40000000)に対してEBX/ECX/EDXで返される値がそれぞれ0x70726c20、0x68797065、0x72762020と記載されています。これはエンディアンが入れ替わった文字列に相当します。 2015年3月25日アーカイブ" lrpepyh  vr"
  150. ^ VMWare、「VMware 仮想マシンでソフトウェアが実行されているかどうかを判断するメカニズム」、2015年5月1日。2023年6月18日アーカイブ。
  151. ^ Project ACRN、 CPUID仮想化、2022年10月20日。2023年3月25日アーカイブ。
  152. ^ VirtualBoxドキュメント、 9.30準仮想化デバッグ。2024年4月22日アーカイブ。
  153. ^ QNX、ハイパーバイザー - ゲストの環境の確認、2022年3月25日。2024年4月22日アーカイブ。
  154. ^ NetBSDソースコード、 /sys/dev/nvmm/x86/nvmm_x86_vmx.c、行1430、2023年11月6日。
  155. ^ OpenBSDソースコード、 /sys/arch/amd64/include/vmmvar.h、24行目、2024年4月9日。
  156. ^ Siemens Jailhouseハイパーバイザードキュメント、 hypervisor-interfaces.txt、39行目、2020年1月27日。 2024年7月5日にアーカイブ
  157. ^ Bitdefender Napoca ソース コード、 /napoca/kernel/guestenlight.c、293 行目、2020 年 7 月 30 日。
  158. ^ FEX-Emuドキュメント、 FEXCoreカスタムCPUID関数、2024年5月24日。
  159. ^ Intel HAXMソースコード、 /core/cpuid.c、行979、2023年1月20日。 2024年4月22日にアーカイブ
  160. ^ Intel KGT ソースコード (trusty ブランチ)、 /vmm/vmexit/vmexit_cpuid.c、17-75 行目、2019 年 5 月 15 日
  161. ^ Linuxカーネルv5.18.19ソースコード、 /source/drivers/visorbus/visorchipset.c、28行目
  162. ^ N. Moore, virt: LMHS SREゲストの検出をサポート #25594、2022年12月1日 - Lockheed Martin提供のsystemd向けプルリクエスト。LMHS SREハイパーバイザーのCPUIDハイパーバイザーID文字列を追加。2024年4月23日アーカイブ。
  163. ^ CPUID仕様、発行番号25481、改訂2.34(PDF)AMD 、2010年9月、オリジナル(PDF)から2022年8月18日にアーカイブ
  164. ^ Linuxカーネルのソースコード
  165. ^ AMD、 AMD-K6プロセッサデータシート、注文番号20695H/0、1998年3月、セクション24.2、ページ283
  166. ^ AMD、 AMD-K6プロセッサリビジョンガイド、注文番号21846H/0、1999年6月、セクション3.2.1、17ページ
  167. ^ Intel、 Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル、注文番号 325462-079、2023 年 3 月、3-238 ページの表 3-8
  168. ^軽量プロファイリング仕様(PDF)AMD、2010年8月、オリジナル(PDF)から2012年11月27日にアーカイブ、 2013年4月3日取得
  169. ^ Cyrix、 Cyrix CPU 検出ガイド、改訂 1.01、1997 年 10 月 2 日、12 ページ
  170. ^ AMD、 Geode GX1プロセッサデータブック、rev 5.0、2003年12月、202ページと226ページ。2020年4月20日アーカイブ。
  171. ^ Transmeta、プロセッサ認識、2002 年 5 月 7 日、5 ページ
  172. ^ a b AMD、「プロセッサ認識アプリケーションノート」、pub.no. 20734、rev. 3.13、2005年12月。セクション2.2.2(p.20)とセクション3(33~40ページ)では、CPUID.(EAX=8000_0001):EDX[ビット19]をプロセッサの識別にどのように使用するかについて詳しく説明されています。セクション3では、AMDのブランド名文字列MSRに関する情報も提供されています。2006年6月26日時点のオリジナルからのアーカイブ。
  173. ^ AMD、 Family 10h BKDG、文書番号31116、改訂3.62、2013年1月11日、p. 388 - NodeIdビットを記載。2019年1月16日アーカイブ。
  174. ^ AMD、 AMD64アーキテクチャプログラマーズマニュアル第3巻、出版番号24594、改訂3.20、2013年5月、579ページ - StreamPerfMonビットをリストしています
  175. ^ 「Intelプロセッサ識別とCPUID命令」(PDF) . Download.intel.com. 2012年3月6日. 2013年4月11日閲覧
  176. ^ InstLatx64、 Vortex86DX3 CPUIDダンプ、2021年9月27日。2021年10月21日アーカイブ。
  177. ^ InstLatx64、 AMD Ryzen 7 6800HS CPUIDダンプ、2022年2月21日。 2023年3月24日にアーカイブ
  178. ^ Chips and Cheese、「CPUIDを信頼できない理由」、2022年10月27日。2022年11月3日アーカイブ。
  179. ^ AMD、 Geode LXデータブック、pub.id. 33234H、2009年2月、207ページ。
  180. ^ InstLatx64、 HexaCore Intel Core i7-3960X Extreme Edition CPUIDダンプ
  181. ^ InstLatx64、 HexaCore Intel Xeon W3670 CPUIDダンプ
  182. ^ InstLatx64、 AMD EPYC 9655 CPUIDダンプ
  183. ^ InstLatx64、2x 24コア Montage Jintide C2460 CPUID ダンプ
  184. ^ InstLatx64、2x 24コア Intel Xeon Platinum 8160 CPUIDダンプ
  185. ^ InstLatx64、 Zhaoxin KaiXian ZX-C+ C4580 CPUID ダンプ
  186. ^ InstLatx64、 VIA Eden X4 C4250 CPUID ダンプ
  187. ^ Cyrix、アプリケーションノート112:Cyrix CPU検出ガイド、17ページ、1998年7月21日。
  188. ^ Instlatx64、 VIA Cyrix III "Samuel" CPUID ダンプ
  189. ^ AMD、「AMDファミリー10hプロセッサ用BKDG」、pub.no. 31116、rev 3.62、2013年1月11日、392ページ。2019年1月16日アーカイブ。
  190. ^ a b c d AMD、「AMD Family 19h Model 61h rev B1プロセッサ向けPPR」、pub.no. 56713、rev 3.05、2023年3月8日、99-100ページ。2023年4月25日アーカイブ。
  191. ^ AMD、「AMD Family 16h Models 00-0Fh processors」、pub.no. 48571、rev 3.03、2015年2月19日、482ページ。2019年1月16日アーカイブ。
  192. ^ SpecterDev、「次世代エクスプロイト:PS5のセキュリティ環境の調査」、2023年6月hardwear.ioカンファレンスのプレゼンテーションスライドデッキ、34、41、53ページ。2023年6月10日アーカイブ。
  193. ^ Instlatx64、 AMD 4700S 8コアプロセッサデスクトップキットCPUIDダンプ
  194. ^ AMD、 AMD Athlon 64 および AMD Opteron プロセッサ向け BIOS およびカーネル開発者ガイド、出版物 #26094、改訂 3.30、2006 年 2 月、29 ~ 30 ページ (LMSLE を含む Athlon 64 リビジョンの相違点を一覧表示) (2019 年 1 月 16 日にアーカイブ)、およびAMD Athlon 64 および AMD Opteron プロセッサ向けリビジョン ガイド、出版物 #25759、改訂 3.79、2009 年 7 月、7 ~ 8 ページ (Athlon 64 リビジョン ID を一覧表示) (2019 年 1 月 18 日にアーカイブ)。
  195. ^ AMD、「AMDファミリー19hモデル01h、リビジョンB1プロセッサ用PPR」、第1巻/第2巻、文書番号55898、リビジョン0.50、2021年5月27日、98ページ - 分岐サンプリングビットを記載。2022年7月24日アーカイブ
  196. ^ AMD、 AMD64仮想化コードネーム「Pacifica」テクノロジー、発行番号33047、改訂3.01、2005年5月、付録B、81ページ。2011年6月13日にアーカイブ。
  197. ^ AMD、 CPUID仕様、出版物#25481、改訂2.18、2006年1月、18ページ。
  198. ^ AMD、 CPUID仕様、出版物#25481、改訂2.34、2010年9月、5ページと11ページ。
  199. ^ Instlatx64、 AMD E-350 CPUIDダンプ- CPUID.(EAX=8000000A):EDX[9]が設定されています。
  200. ^ AMD、 CPUID仕様、出版物#25481、改訂2.28、2008年4月、21ページ。
  201. ^ AMD、 CPUID 仕様、出版物 #25481、リビジョン 2.34、2010 年 9 月、5 ページ - 「SseIsa10Compat」は 2009 年 11 月に削除されたと記載されています。
  202. ^ a b AMD、「AMD ファミリー 19h モデル 61h、リビジョン B1 プロセッサの PPR」、文書番号 56713、改訂 3.05、2023 年 3 月 8 日、102 ページ。2023年 4 月 25 日にアーカイブ。
  203. ^ a b c d AMD、「AMD ファミリー 1Ah モデル 70h、リビジョン B0 プロセッサのプロセッサプログラミングリファレンス (PPR)」、注文番号 57930、改訂 3.00、2025年4月30日、103、119、200ページ。2026年1月19日にアーカイブ
  204. ^ AMD、「SEV-SNPゲスト向けセキュアVMサービスモジュール」、pub.no #58019、rev 1.00、2023年7月、13ページ。2023年8月5日にアーカイブ
  205. ^ a b AMD、「AMD ファミリー 19h モデル 61h、リビジョン B1 プロセッサの PPR」、文書番号 56713、改訂 3.05、2023 年 3 月 8 日、116 ページ。2023年 4 月 25 日にアーカイブ。
  206. ^ a b c AMD、「一時スケジューラ攻撃の緩和に関する技術ガイダンス」、改訂2.0、2025年7月、3ページ。2025年8月14日アーカイブ。
  207. ^ AMD、「第5世代AMD EPYCプロセッサアーキテクチャ」、初版、2024年10月、9ページ。2024年12月28日アーカイブ。
  208. ^ Binutils メーリングリスト、 [PATCH] AMD znver6 プロセッサのサポートを追加、2025 年 11 月 7 日。
  209. ^ a b c d e AMD、「投機的リターンのスタックオーバーフローに関する技術アップデート」、rev 2.0、2024年2月。2024年4月12日アーカイブ。
  210. ^ Ferrie, Peter. 「仮想マシンエミュレータへの攻撃」(PDF) . Symantec . Symantec Advanced Threat Research. 2007年2月7日時点のオリジナル(PDF)からアーカイブ。 2017年3月15日閲覧
  211. ^ Sandpile、 x86アーキテクチャCPUID。2022年12月22日閲覧。
  212. ^ instlatx64、 AMD A4-5000のCPUIDダンプ、CPUIDリーフに「HELLO KITTY」文字列をリスト8FFFFFFFh。2022年12月22日閲覧。
  213. ^ Sandpile、 x86アーキテクチャCPUID。2025年7月30日閲覧。
  214. ^ IDT、 WinChip 2B プロセッサ データシート、v0.9、1999 年 4 月、第 3.3.3 章、31 ページ。
  215. ^ VIA、 PadLockプログラミングガイドrev. 1.66、2005年8月4日、5ページ。2010年5月26日時点のオリジナルからのアーカイブ。
  216. ^ OpenEuler 1.0 LTS カーネルソース、 /arch/x86/ include/ asm/cpufeatures.h の147-178行目。2023年7月30日アーカイブ。
  217. ^ Zhaoxin、「Padlock命令セットリファレンス」 、2024年12月26日。2025年3月15日時点のオリジナルよりアーカイブ。
  218. ^ Zhaoxin, GMI reference 、2024年12月26日。2025年3月15日時点のオリジナルよりアーカイブ
  219. ^ VIA、 C3 Nehemiah プロセッサ データシート、rev 1.13、2004年9月29日、21ページ
  220. ^ Zhaoxin、 PAUSEOPT 指令说明、セクション 3.1.1 (中国語)、改訂 1.0.0、2024 年 8 月 13 日。2026年 1 月 14 日にアーカイブ
  221. ^ “GCC-mirror/GCC” . GitHub . 2022年3月13日.
  222. ^ 「ARMインフォメーションセンター」 . Infocenter.arm.com . 2013年4月11日閲覧
  223. ^ IBM System/370 Principles Of Operation (PDF) (初版). IBM. 1970年6月. p. 29. GA22-7000-0.
  224. ^ a b z/Architecture Principles of Operation (PDF) (第14版). 2022年5月. SA22-7832-13.
  225. ^ 「MIPS32アーキテクチャ プログラマーズ編 第3巻:MIPS32特権リソースアーキテクチャ」(PDF)。MIPS Technologies, Inc. 2001年3月12日。
  226. ^ 「PowerPC オペレーティング環境アーキテクチャ、第 3 巻」(PDF)
  227. ^ 「RISC-V命令セットマニュアル第2巻:特権アーキテクチャバージョン1.7」(PDF)。2015年5月9日。セクション3.1.1。
  228. ^ S. Darwish, Ahmed. 「[ANNOUNCE] x86-cpuid.org: 機械可読CPUIDリポジトリ」 Linuxカーネルメーリングリストアーカイブ. 2024年7月20日閲覧

さらに読む