ソフトウェア的にCPUを判断するには、CPUIDという命令を使う。
32bitレジスタであるEAXに値をいれてからCPUID命令を実行するとEAX,EBX,ECX,EDXのそれぞれにCPU依存の値が返るので、それを見てCPUを判断する。
一番簡単なのは、VendorIDとFamily-Model-Steppingを見て判断する方法。Intel製のCPUであれば、VenderIDには'GenuineIntel'が入り、Family以下にはCPU依存の数字が入る。例えばPentium Proであれば6-1-9。
ただし、この方法だけではCeleronとPentiumIIIなどの判断が出来ない!!その解決策は次回以降に
【Family-Model-Steppingの例(intelのみ)】
4-0-x 486 DX
4-1-x 486 DX
4-2-x 486 SX
4-3-x 487 / DX2 / DX2 OverDrive
4-4-x 486 SL
4-5-x SX2
4-7-x Write-Back Enhanced DX2
4-8-x DX4 / DX4 OverDrive
5-1-x Pentium 60 / 66
5-2-x Pentium
5-3-x Pentium OverDrive for 486
5-4-x MMX Pentium
6-1-x Pentium Pro
6-3-x Pentium II
6-5-x Pentium II / Pentium II Xeon / Celeron
6-6-x Celeron
6-7-x Pentium III / Petium III Xeon
6-8-x Pentium III / Petium III Xeon / Celeron
6-A-x Petium III Xeon
6-B-x Pentium II OverDrive
F-0-x Pentium 4
CPUID命令と返り値の例
【EAX = 0のCPUID実行結果】
12文字で表されるVenderID
EBX 0- 7bitにVendorIDの 1文字目 ex.'G'
EBX 8-15bitにVendorIDの 2文字目 ex.'e'
EBX 16-23bitにVendorIDの 3文字目 ex.'n'
EBX 24-31bitにVendorIDの 4文字目 ex.'u'
EDX 0- 7bitにVendorIDの 5文字目 ex.'i'
EDX 8-15bitにVendorIDの 6文字目 ex.'n'
EDX 16-23bitにVendorIDの 7文字目 ex.'e'
EDX 24-31bitにVendorIDの 8文字目 ex.'I'
ECX 0- 7bitにVendorIDの 9文字目 ex.'n'
ECX 8-15bitにVendorIDの10文字目 ex.'t'
ECX 16-23bitにVendorIDの11文字目 ex.'e'
ECX 24-31bitにVendorIDの12文字目 ex.'l'
【EAX = 1のCPUID実行結果】
CPUのType,Model,Familyなど
EAX 0- 3bitにCPUのStepping
EAX 4- 7bitにCPUのModel
EAX 8-11bitにCPUのFamily
EAX 12-13bitにCPUのProcessor Type
EAX 14-15bitは未使用
EAX 16-19bitにCPUのExtended Model
EAX 20-27bitにCPUのExtended Family
EAX 28-31bitは未使用
EDX 0bitは「Floating-point unit on-chip」(FPU)
EDX 1bitは「Virtual Mode Extension」(VME)
EDX 2bitは「Debugging Extension」(DE)
EDX 3bitは「Page Size Extension」(PSE)
EDX 4bitは「Time Stamp Counter」(TSC)
EDX 5bitは「Model Specific Registers」(MSR)
EDX 6bitは「Physical Address Extension」(PAE)
EDX 7bitは「Machine Check Extension」(MCE)
EDX 8bitは「CMPXCHG8 Instruction」(CXB)
EDX 9bitは「On-chip APIC Hardware」(APIC)
EDX 10bitは未使用
EDX 11bitは「Fast System Call」(SEP)
EDX 12bitは「Memory Type Range Registers」(MTRR)
EDX 13bitは「Page Global Enable」(PGE)
EDX 14bitは「Machine Check Architecture」(MCA)
EDX 15bitは「Conditional Move Instruction」(CMOV)
EDX 16bitは「Page Attribute Table」(PAT)
EDX 17bitは「36-bit Page Size Extension」(PSE-36)
EDX 18bitは「Processor serial number」(PSN)
EDX 19bitは「CLFLUSH Instruction」(CLFLUSH)
EDX 20bitは未使用
EDX 21bitは「Debug Trace Store」(DTS)
EDX 22bitは「Advcd. Configrtin. & Power Manage. I/F.」(ACPI)
EDX 23bitは「Intel Architecture MMX technology」(MMX)
EDX 24bitは「Fast floating point save and restore」(FXSR)
EDX 25bitは「Streaming SIMD Extensions」(SSE)
EDX 26bitは「Streaming SIMD Extensions 2」(SSE2)
EDX 27bitは「Self-Snoop」(SS)
EDX 28bitは未使用
EDX 29bitは「Thermal Monitor」(TM)
EDX 30bitは未使用
EDX 31bitは未使用
32bitレジスタであるEAXに値をいれてからCPUID命令を実行するとEAX,EBX,ECX,EDXのそれぞれにCPU依存の値が返るので、それを見てCPUを判断する。
一番簡単なのは、VendorIDとFamily-Model-Steppingを見て判断する方法。Intel製のCPUであれば、VenderIDには'GenuineIntel'が入り、Family以下にはCPU依存の数字が入る。例えばPentium Proであれば6-1-9。
ただし、この方法だけではCeleronとPentiumIIIなどの判断が出来ない!!その解決策は次回以降に
【Family-Model-Steppingの例(intelのみ)】
4-0-x 486 DX
4-1-x 486 DX
4-2-x 486 SX
4-3-x 487 / DX2 / DX2 OverDrive
4-4-x 486 SL
4-5-x SX2
4-7-x Write-Back Enhanced DX2
4-8-x DX4 / DX4 OverDrive
5-1-x Pentium 60 / 66
5-2-x Pentium
5-3-x Pentium OverDrive for 486
5-4-x MMX Pentium
6-1-x Pentium Pro
6-3-x Pentium II
6-5-x Pentium II / Pentium II Xeon / Celeron
6-6-x Celeron
6-7-x Pentium III / Petium III Xeon
6-8-x Pentium III / Petium III Xeon / Celeron
6-A-x Petium III Xeon
6-B-x Pentium II OverDrive
F-0-x Pentium 4
CPUID命令と返り値の例
【EAX = 0のCPUID実行結果】
12文字で表されるVenderID
EBX 0- 7bitにVendorIDの 1文字目 ex.'G'
EBX 8-15bitにVendorIDの 2文字目 ex.'e'
EBX 16-23bitにVendorIDの 3文字目 ex.'n'
EBX 24-31bitにVendorIDの 4文字目 ex.'u'
EDX 0- 7bitにVendorIDの 5文字目 ex.'i'
EDX 8-15bitにVendorIDの 6文字目 ex.'n'
EDX 16-23bitにVendorIDの 7文字目 ex.'e'
EDX 24-31bitにVendorIDの 8文字目 ex.'I'
ECX 0- 7bitにVendorIDの 9文字目 ex.'n'
ECX 8-15bitにVendorIDの10文字目 ex.'t'
ECX 16-23bitにVendorIDの11文字目 ex.'e'
ECX 24-31bitにVendorIDの12文字目 ex.'l'
【EAX = 1のCPUID実行結果】
CPUのType,Model,Familyなど
EAX 0- 3bitにCPUのStepping
EAX 4- 7bitにCPUのModel
EAX 8-11bitにCPUのFamily
EAX 12-13bitにCPUのProcessor Type
EAX 14-15bitは未使用
EAX 16-19bitにCPUのExtended Model
EAX 20-27bitにCPUのExtended Family
EAX 28-31bitは未使用
EDX 0bitは「Floating-point unit on-chip」(FPU)
EDX 1bitは「Virtual Mode Extension」(VME)
EDX 2bitは「Debugging Extension」(DE)
EDX 3bitは「Page Size Extension」(PSE)
EDX 4bitは「Time Stamp Counter」(TSC)
EDX 5bitは「Model Specific Registers」(MSR)
EDX 6bitは「Physical Address Extension」(PAE)
EDX 7bitは「Machine Check Extension」(MCE)
EDX 8bitは「CMPXCHG8 Instruction」(CXB)
EDX 9bitは「On-chip APIC Hardware」(APIC)
EDX 10bitは未使用
EDX 11bitは「Fast System Call」(SEP)
EDX 12bitは「Memory Type Range Registers」(MTRR)
EDX 13bitは「Page Global Enable」(PGE)
EDX 14bitは「Machine Check Architecture」(MCA)
EDX 15bitは「Conditional Move Instruction」(CMOV)
EDX 16bitは「Page Attribute Table」(PAT)
EDX 17bitは「36-bit Page Size Extension」(PSE-36)
EDX 18bitは「Processor serial number」(PSN)
EDX 19bitは「CLFLUSH Instruction」(CLFLUSH)
EDX 20bitは未使用
EDX 21bitは「Debug Trace Store」(DTS)
EDX 22bitは「Advcd. Configrtin. & Power Manage. I/F.」(ACPI)
EDX 23bitは「Intel Architecture MMX technology」(MMX)
EDX 24bitは「Fast floating point save and restore」(FXSR)
EDX 25bitは「Streaming SIMD Extensions」(SSE)
EDX 26bitは「Streaming SIMD Extensions 2」(SSE2)
EDX 27bitは「Self-Snoop」(SS)
EDX 28bitは未使用
EDX 29bitは「Thermal Monitor」(TM)
EDX 30bitは未使用
EDX 31bitは未使用







