ªþ¿ý¤@¡@CPUID


CPUID ¬O 80486 CPU ¥H«á¡A¦b x86 «ü¥O¶°©Ò·s¼Wªº¤@­Ó«ü¥O¡A¥¦ªº¥Î³~¦b©óŲ§O CPU ºØÃþ©Î´£¨Ñ CPU ¯S©Ê¡C¦b 80386 ¥½´Á¡ACPU ¨â¤j»s³y¼t°Ó¡AINTEL »P AMD¡A±`±À¥X®É¯ß§ó°ª³t«×§ó§Öªº CPU ¬Û¤¬Ävª§¡A³o¥»¬O¥ó¦n¨Æ¡A¦ý¦³¤£¨v¼t°Ó§â¸û§C®É¯ßªº CPU ¤Wªº¼ÐÅÒ¿i±¼«á­«·s¦L»s¸û°ª®É¯ßªº¦r¼Ë¡AÂǦ¹³½¥Ø²V¯]Àò¨ú¤£¸q¤§°]¡C

¤p¤ì°¸°O±o¨º®ÉÁÙ¦³³\¦h¤åÄm±´°Q¡A¬O§_¯à§Q¥Î CPU ªº¬Y¨Ç¯S©Ê¨Ó¤À¿ë CPU ¥H¤Î¬O§_¦³¤èªk¯à¿ëÃÑ CPU ®É¯ß¡A«eªÌ±`±`¥u¯à¤À¿ë 8088¡B80286¡B80386 µ¥³oºØ¤£¦P¥@¥Nªº CPU¡A¬Æ¦ÜµLªk°Ï¤À¤£¦P¼t°Ó©Ò»s§@ªº CPU¡C¦Ü©ó«áªÌ¨ì¥Ø«e¦ü¥G¬OµL¸Ñªº¡C«á¨Ó CPU ¡y«¬¸¹¡z¤é¯q½ÆÂø¡A¦pªG¥u¬O¾a CPU ¬Y¨Ç¯S©Ê¨Ó¿ëÃÑ¡A¹ê¦b¬O¤@¥ó¤£©ö¹F¦¨ªº¥Ø¼Ð¡C¦]¦¹¡AINTEL ¦b 80486 CPU «ü¥O¶°¤¤·s¼W¤@­Ó«ü¥O¡ACPUID¡A¨Ó¿ëÃÑ CPU «¬¸¹¡A¤£¶È¶È¦p¦¹¡A¥¦ÁÙ¸Ô²Óªº¦C»s³y¼t°Ó¡B®É¯ß¡B§Ö¨úµ¥µ¥¸ê®Æ¡A©Ò¥H CPUID ¥i»¡¬O CPU ªº¨­¤ÀÃÒ¡C


Àˬd CPU ¯à§_°õ¦æ CPUID¡H

¨Ã¤£¬O©Ò¦³ªº CPU ³£¯à°õ¦æ CPUID «ü¥O¡A¨Ò¦p 8086/88¡B80286¡B80386¡A·íµM°Õ¡A²{¦b¤j·§¤]§ä¤£¨ì³o¨Ç CPU ¤F¡A¤£¹LÁÙ¬O§âÀˬdªº¤èªk»¡¤@»¡¡C®Ú¾Ú­^¯Sº¸¤åÄm¡AIntel® Processor Identification and the CPUID Instruction¡Aªº°O¸ü¡A¦pªG CPU ©µ¦ùºX¼Ð ( EFLAG ) ªº²Ä 21 ¦ì¤¸ ( ºÙ¬° ID ) ¥i¥H¥Ñ³nÅé¼g¤Jªº¸Ü¡A¨º»ò§Aªº CPU ¥i¥H°õ¦æ CPUID¡C©³¤U¬O¤@¬qÀˬdªºµ{¦¡½X¡G

;¦pªGµ{¦¡¥i¥H§ïÅÜ EFLAGE ªº²Ä 21 ¦ì¤¸¡A¨º»ò CPUID ¦³®Ä¡A§_«hµL®Ä
        pushfd                  ;¨Ï©µ¦ùºX¼Ð±À¤J°ïÅ|
        pop     eax             ;§â°ïÅ|¤¤ªº©µ¦ùºX¼Ð¼u¥X¦Ü EAX
        mov     ecx,eax         ;«O¦sªº©µ¦ùºX¼Ð
        xor     eax,200000h     ;§ïÅܱj¨î©µ¦ùºX¼Ð²Ä 21 ¦ì¤¸
        push    eax             ;§â§ïÅÜ«á·sªº©µ¦ùºX¼Ð±À¤J°ïÅ|
        popfd                   ;¦s¤J©µ¦ùºX¼Ð
        pushfd                  ;¦A¨ú¥X©µ¦ùºX¼Ð
        pop     eax
        xor     eax,ecx         ;¦pªG©µ¦ùºX¼Ðªº²Ä21¦ì¤¸¬°1¡A¨º»ò
        jz      no_cpuid        ;CPUID¦s¦b¡A§_«h¤£¦s¦b
        ¡K¡K¥i¥H°õ¦æ CPUID «ü¥O¡K¡K
no_cpuid:
        ¡K¡K¤£¯à°õ¦æ CPUID «ü¥O¡K¡K

LAHF/SAHF «ü¥O

¦b 80x86 «ü¥O¶°¤¤¦³¤@­Ó«ü¥O¥i¥Hª½±µ¨ú±oºX¼Ð¼È¦s¾¹¤§­È¡A¥¦¬O LAHF¡ALAHF §â©µ¦ùºX¼Ð¼È¦s¾¹ªº³Ì§C¤K¦ì¤¸¦s¤J AH ¼È¦s¾¹ùØ¡CSAHF ¬O§â AH ¤§­È¦s¤J©µ¦ù¼È¦s¾¹ªº³Ì§C¤K­Ó¦ì¤¸¡A¡C¤U¹Ï¬O 8086/8088 ºX¼Ð¼È¦s¾¹¦U¦ì¤¸¤À¥¬¡G

ºX¼Ð¼È¦s¾¹

¥Ñ¹Ï¤W¥iª¾¡ASAHF ·|¼vÅT CF¡BPF¡BAF¡BZF¡BSF ¤­­ÓºX¼Ð¡ALAHF ¬O§âºX¼Ð¼È¦s¾¹¤§­È¦s¤J AH ¤¤¡A¦]¦¹¤£¼vÅT­ì¨ÓªººX¼Ð¡CSAHF¡BLAHF ¤£»Ý­n¹Bºâ¤¸¡A¨ä»yªk¬O¡G

        SAHF
        LAHF

ÁöµM LAHF ¯àª½±µ¨ú±oºX¼Ð¼È¦s¾¹¡A¦ý¬O¹ï©ó­n¦s¨ú©µ¦ùºX¼Ðªº ID ¦ì¤¸«o²@µLÀ°§U¡A¥u¦nÂǧU°ïÅ|¡C

PUSHF/POPF »P PUSHFD/POPFD «ü¥O

PUSHF ¬O§â 16 ¦ì¤¸ªº 8086/8088 ºX¼Ð¼È¦s¾¹±À¤J°ïÅ|¡A¦Ó POPF «h¬O§â°ïÅ|³»ªº 16 ¦ì¤¸¸ê®Æ¼u¥X¨ì 16 ¦ì¤¸ªººX¼Ð¼È¦s¾¹¡CPUSHFD «h¬O§â 32 ¦ì¤¸ªº EFLAG ±À¤J°ïÅ|¡A32 ¦ì¤¸ªºªø«×¬OÂù¦r²Õ¡APUSHFD ªº¡yD¡z¬O double word ¤§·N¡FPOPFD «h¬O§â°ïÅ|³»ªºÂù¦r²Õ¼u¥X¨ì EFLAG¡C³o¥|­Ó«ü¥O¡A¤]³£¤£¶·¹Bºâ¤¸¡C


CPUID ¤¶²Ð

­n§Q¥Î CPUID «ü¥OÀò±o CPU ¸ê®Æ¡A¤@¯ë¬O¥H EAX ·í°µ¯Á¤Þ­È¡A©Òµ¹©wªº EAX ¯Á¤Þ­È¤£¦P¡A´N¥i¥HÀò±o¤£¦Pªº CPU ¸ê®Æ¡C³o¨Ç¯Á¤Þ­È¥i¤À¬°¨â¤jÃþ¡G°ò¥»¥\¯à ( standard function ) »P©µ¦ù¥\¯à ( extended function ) ¡A°ò¥»¥\¯àªº EAX ¯Á¤Þ­È³Ì°ª¦ì¤¸¬°¹s¡A©µ¦ù¥\¯àªº³Ì°ª¦ì¤¸¬° 1¡A¤£ºÞ¬O¨º¤@®a¤½¥q©Ò¥Í²£ªº x86 ³B²z¾¹¡A°ò¥»¥\¯à©Î©µ¦ù¥\¯à³£¦³¦n´X­Ó¡A©Ò¥H±o¥ý¨ú±o°ò¥»¥\¯à©Î©µ¦ù¥\¯àªº³Ì¤j¯Á¤Þ­È¡C¤@¯ë¬O¥ý§â EAX ³]¬° 0¡AµM«á°õ¦æ CPUID¡A´N¥i¥H¦b EAX ¤¤±o¨ì°ò¥»¥\¯àªº³Ì¤j¯Á¤Þ­È¡F¦Ó­nÀò±o©µ¦ù¥\¯àªº³Ì¤j¯Á¤Þ­È¡A¥ý¨Ï EAX ³]¬° 80000000H¡A¦A°õ¦æ CPUID¡A¦bªð¦^®É¡AEAX ´N¦s¦³³Ì¤j©µ¦ù¥\¯àªº¯Á¤Þ­È¡C±o¨ì³Ì¤j¯Á¤Þ­È«á¡AEAX ´NÀ³¸Ó¦b³o­Ó³Ì¤j­È¤º¥h¡y©I¥s¡zCPUID¡A¦pªG§A¥Î¤ñ³Ì¤j¯Á¤Þ­ÈÁÙ¤jªº¼Æ­È¦s©ó EAX¡A¥h°õ¦æ CPUID¡Aµ²ªG©M¥H³Ì¤j¯Á¤Þ­È¤@¼Ë¡C

EAX=0000 0000

·í EAX µ¥©ó 0 ¦A°õ¦æ CPUID «á¡ACPUID ·|¶Ç¦^¨âµ§¸ê®Æ¡A²Ä¤@µ§¸ê®Æ¬O¦s©ñ¦b EAX¡AEAX ·|¶Ç¦^°ò¥»¥\¯àªº³Ì¤j¯Á¤Þ­È¡A²Ä¤Gµ§¸ê®Æ¦s©ñ¦b EBX¡BECX¡BEDX ¦@ 96 ¦ì¤¸¡A¥¦­Ì¦@¦Pªí¥Ü»s³y¼t°Óªº¦WºÙ¦r¦ê¡A¦pªG¬O­^¯Sº¸ªº CPU¡A¨ä¤À¥¬¦p¤U¹Ï¡G

EAX=0®É¡AEBX¡BECX¡BEDX ¦r¦ê¤À¥¬
¥Ñ¤W¹Ï¥iª¾¡A»s³y¼t°Óªº¦WºÙ¦r¦ê¨Ì EBX¡BECX¡BEDX ¶¶§Ç¡A±q§C¦ì¤¸¶}©l¡A¹ï­^¯Sº¸³B²z¾¹¦Ó¨¥¡A»s³y¼t°Óªº¦WºÙ¦r¦ê¬O¡yGenuineIntel¡z¡F¹ï¬ü°Ó¶W·Lªº³B²z¾¹¦Ó¨¥¡A»s³y¼t°Óªº¦WºÙ¦r¦ê¬O¡yAuthenticAMD¡z¡F¹ï Cyrix ªº³B²z¾¹¦Ó¨¥¡A»s³y¼t°Óªº¦WºÙ¦r¦ê¬O¡yCyrixInstead¡z¡F¹ï IDT ªº³B²z¾¹¦Ó¨¥¡A»s³y¼t°Óªº¦WºÙ¦r¦ê¬O¡yCentaurHauls¡z¡C

EAX=0000 0001

EAX=0000 0001 ¸¹ªº°ò¥»¥\¯à¥i¥H¨ú±o CPU Äݩ󨺤@ºØµ¥¯Å¡B»sµ{¤Î¬Y¨Ç CPU ¯S©Ê¡C

EAX ªºªð¦^­È

EAX ªí¥Ü CPU ªºµ¥¯Å ( Family )¡B®Ö¤ß ( Model ) »P¤uÃÀ»s¦¨ ( Stepping )¡A¤U¹Ï¬° EAX ªºªð¦^­È¡A¦U¦ì¤¸©Ò¥Nªíªº·N¸q¡G

¨Ì¾Ú­^¯Sº¸¤â¥U¡ACPU ªº Family À³¸Ó¬O EAX ¤¤ªº Family Code »P Extended Family ¤§©M¡AModel ¬O Extended Model ¥ª²¾ 4 ¦ì¤¸¤§«á¦A¥[¤W Model Number ¤§­È¡C¤@¯ë¦Ó¨¥¡AFamily ¥Nªí¦P¤@¥N¥Í²£ªº CPU¡A¤j­P¥i¤À¬°¡G

Model ¥Î¨Ó°Ï§O¦P¤@¥N¦ý¤£¦P®Ö¤ßªº CPU¡A¨Ò¦p¡G

Stepping ªí¥Ü¦P¤@®Ö¤ß¤£¦P¤uÃÀªº²£«~¡A¨Ò¦p¡G

EBX ªºªð¦^­È

¤Uªí¬O­^¯Sº¸ªº CPU ¥H EAX=1 ¬°°Ñ¼Æ¡AEBX ªºªð¦^­È¡A¹ï AMD ªº CPU ¨Ó»¡¡A¤j­P¬Û¦P¡A¥u¦³¦ì¤¸ 4¡ã12 ©M 14¡ã22 §¡«O¯d¤£¥Î¡C

¦ì¤¸¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0¡ã7Brand ID¦b Pentium !!! ªº®É¥NùØ¡A¶}©l¥Î Brand ID ¨Ó¸É¨¬ Family¡BModel¡BStepping ªº¤£¨¬¡A¦]¦¹¥Ø«e¬°¤î¡A­n¿ëÃÑ CPU¡y¨­¤À¡z¡A¥²¶·¥Î³o¥|µ§¸ê®Æ¨Ó§PÂ_¡C
8¡ã15Chunks
16¡ã23Count
24¡ã31APIC ID

ECX ªºªð¦^­È

¤Uªí¬O­^¯Sº¸ªº CPU ¥H EAX=1 ¬°°Ñ¼Æ¡AECX ªºªð¦^­È¡A¹ï AMD ªº CPU ¨Ó»¡¡A¤j­P¬Û¦P¡A¥u¦³¦ì¤¸ 4¡ã12 ©M 14¡ã22 §¡«O¯d¤£¥Î¡C

¦ì¤¸ÁY¼g¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0SSE3Streaming SIMD Extensions 3¤ä´© Streaming SIMD Extensions 3 «ü¥O¶°
1¡ã2«O¯d
3MONITORMONITOR/MWAIT¤ä´© MONITOR »P MWAIT «ü¥O
4DS-CPLCPL Qualified Debug Store
5VMXVirtual Machine Extensions¤ä´© Virtualization §Þ³N
6«O¯d
7ESTEnhanced Intel SpeedStep® Technology´£¨Ñ²Ä¤G¥Nªº SpeedStep §Þ³N
8TM2Thermal Monitor 2´£¨Ñ Thermal Monitor 2
9SSSE3Supplemental Streaming SIMD Extension 3¤ä´© SSSE3 «ü¥O¶°
10CIDContext ID²Ä¤@¶¥§Ö¨ú¥i³Q BIOS ³]¬° adaptive ©Î shared ¼Ò¦¡
11¡ã12«O¯d
13CX16CMPXCHG16B¤ä´© CMPXCHG16B «ü¥O
14xTPRSend Task Priority Message
15¡ã17«O¯d
18DCADirect Cache Access
19¡ã31«O¯d

EDX ªºªð¦^­È

¤Uªí¬O­^¯Sº¸ªº CPU ¥H EAX=1 ¬°°Ñ¼Æ¡AEDX ªºªð¦^­È¡A¹ï AMD ªº CPU ¨Ó»¡¡A¤j­P¬Û¦P¡A¥u¦³¦ì¤¸ 18¡B20¡ã22¡B27¡B29¡ã31 §¡«O¯d¤£¥Î¡C

¦ì¤¸ÁY¼g¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0FPUFloating-point unit on-Chip³B²z¾¹¤º§t¤ä´© 80387 ¯BÂI«ü¥Oªº FPU
1VMEVirtual Mode Extension¦¹³B²z¾¹¤ä´© V86 ªº©µ¦ù¼Ò¦¡ ( extended V86 mode )
2DEDebugging Extension
3PSEPage Size Extension³B²z¾¹¤ä´© 4MB ªº¤À­¶
4TSCTime-Stamp Counter¤ä´© RDTSC «ü¥O¡ARDTSC «ü¥O¥i¥H­pºâ¥X CPU ÀW²v
5MSRModel Specific Registers¤ä´© RDMSR¡BWRMSR «ü¥O
6PAEPhysical Address Extension¤ä´©¯u¹ê¦ì§}¶W¹L 32 ¦ì¤¸
7MCEMachine Check Extension
8CX8CMPXCHG8 Instruction Support¤ä´© CMPXCHG8 «ü¥O
9APICOn-chip APIC Hardware Supported
10«O¯d
11SEPFast System CallCPU ¤ä´© Fast System Call «ü¥O¡ASYSENTER »P SYSEXIT «ü¥O
12MTRRMemory Type Range RegistersCPU ¾Ö¦³ MTRR_CAP ¼È¦s¾¹
13PGEPage Global Enable?
14MCAMachine Check Architecture?
15CMOVConditional Move Instruction SupportedCPU ¤ä´© CMOVVcc
16PATPage Attribute Table¤ä´© Page Attribute Table
17PSE-3636-bit Page Size Extension?
18PSNProcessor Serial Number¤ä´© 96 ¦ì¤¸ªº CPU §Ç¸¹
19CLFSHCLFLUSH Instruction Supported¤ä´© CLFLUSH «ü¥O
20«O¯d
21DSDebug Store?
22ACPIThermal Monitor and Software Controlled Clock Facilities Supported
23MMXMMX Supported¤ä´© MMX «ü¥O¶°
24FXSRFast Floating-point Save and Restore¤ä´©·sªº FPU «ü¥O¡AFXSAVE¡BFXRSTOR
25SSEStreaming SIMD Extensions Supported¤ä´© SSE «ü¥O¶°
26SSE2Streaming SIMD Extensions 2¤ä´© SSE2 «ü¥O¶°
27SSSelf-Snoop?
28HTTMulti-ThreadingCPU ¤ä´©¶W¹L¤@­Ó¥H¤WªºÅÞ¿è³B²z¾¹
29TMThermal Monitor SupportedCPU ´£¨Ñ·Å±±¹q¸ô
30IA64IA64 Capabilities ¦¹ CPU ¬O Intel Itanium ®a±Úªº¤@­û¡A¤ä´© IA64 ( IA64 »P AMD ©Ò´£¥X¨Óªº AMD64 ¤£¬Û®e )
31PBEPending Break Enable

EAX=0000 0002H

¹ï©ó­^¯Sº¸ªº CPU ¦Ó¨¥¡AEAX=00000002H ¥\¯à¶Ç¦^ CPU ªº§Ö¨ú¤ÎÂà´««á³Æ½w½Ä¾¹©Ê½è¡F¦ý¬O¹ï AMD ªº CPU ¦Ó¨¥¡A00000002H¡ã00000004H ¥\¯à¬O«O¯dµL¥Îªº¡A¨ä§Ö¨ú»PÂà´««á³Æ½w½Ä¾¹©Ê½èªº©Ê½è¬O¦b©µ¦ù¥\¯à 80000005H¡B80000006H ¥\¯à¡C( ¦³ÃöÂà´««á³Æ½w½Ä¾¹¡A§Y TLB [ Translation Lookaside Buffer ]¡Aªº¤¶²Ð½Ð°Ñ¦Ò zues ºô­¶¡A¡y¸ôº©º©¨ä­×»·¤¼, §^±N¤W¤U¦Ó¨D¯Á¡I¡zªº TLB ²¤¶ )

·í§Ú­Ì¥H EAX=00000002 ¬°°Ñ¼Æ°õ¦æ CPUID «á¡A·|¦b EAX¡BEBX¡BECX¡BEDX ¼È¦s¾¹·|¦s¤J§Ö¨ú¤ÎÂà´««á³Æ½w½Ä¾¹ªº¸ê®Æ¡A¦ý¬O¦³®É¸ê®Æ¶q¤Ó¤j¡A¥i¯à©ñ¤£¤U¡A¦]¦¹¦b AL ¤¤¦s¦³­n°õ¦æ´X¦¸¥H EAX=00000002 ¬°°Ñ¼Æªº CPUID ¤~¯àÀò¨ú©Ò¦³ªº§Ö¨ú¤ÎÂà´««á³Æ½w½Ä¾¹¸ê®Æ¡C³o¨Ç¸ê®Æ¨C 8 ­Ó¦ì¤¸¤@²Õ¡A»Ý¹ï·Ó¤Uªí¡A¤~¯à±oª¾¨ä·N¸q¡G

¼Æ­È§Ö¨ú©Î TLB ©Ê½è ¼Æ­È§Ö¨ú©Î TLB ©Ê½è
00HµL·N¸q 01H«ü¥O TLB¡G4 KB Pages, 4-way set associative, 32 entries
02H«ü¥O TLB¡G4 MB Pages, fully associative, 2 entries 03H¸ê®Æ TLB¡G4 KB Pages, 4-way set associative, 64 entries
04H¸ê®Æ TLB¡G4 MB Pages, 4-way set associative, 8 entries 05H¸ê®Æ TLB¡G4 MB Pages, 4-way set associative, 32 entries
06HL1 «ü¥O§Ö¨ú¡G8KB, 4-way set associative, 32 entries 08HL1 «ü¥O§Ö¨ú¡G16 KB, 4-way set associative, 32-byte line size
0AHL1 ¸ê®Æ§Ö¨ú¡G8 KB, 2-way set associative, 32-byte line size 0CHL1 ¸ê®Æ§Ö¨ú¡G16 KB, 4-way set associative, 32-byte line size
22HL3 §Ö¨ú¡G512 KB, 4-way set associative, sectored cache, 64-byte line size 23HL3 §Ö¨ú¡G1 MB, 8-way set associative, sectored cache, 64-byte line size
25HL3 §Ö¨ú¡G2 MB, 8-way set associative, sectored cache, 64-byte line size 29HL3 §Ö¨ú¡G4 MB, 8-way set associative, sectored cache, 64-byte line size
2CHL1 ¸ê®Æ§Ö¨ú¡G32 KB, 8-way set associative, 64-byte line size 30HL1 «ü¥O§Ö¨ú¡G32 KB, 8-way set associative, 64-byte line size
39HL2 §Ö¨ú¡G128 KB, 4-way set associative, sectored cache, 64-byte line size 3AHL2 §Ö¨ú¡G192 KB, 6-way set associative, sectored cache, 64-byte line size
3BHL2 §Ö¨ú¡G128 KB, 2-way set associative, sectored cache, 64-byte line size 3CHL2 §Ö¨ú¡G256 KB, 4-way set associative, sectored cache, 64-byte line size
3DHL2 §Ö¨ú¡G384 KB, 6-way set associative, sectored cache, 64-byte line size 3EHL2 §Ö¨ú¡G512 KB, 4-way set associative, sectored cache, 64-byte line size
40H¨S¦³ L2 §Ö¨ú©Î¬O¦³ L2 §Ö¨ú¦ýµL L3 §Ö¨ú 41HL2 §Ö¨ú¡G128 KB, 4-way set associative, 32-byte line size
42HL2 §Ö¨ú¡G256 KB, 4-way set associative, 32-byte line size 43HL2 §Ö¨ú¡G512 KB, 4-way set associative, 32-byte line size
44HL2 §Ö¨ú¡G1 MB, 4-way set associative, 32-byte line size 45HL2 §Ö¨ú¡G2 MB, 4-way set associative, 32-byte line size
46HL3 §Ö¨ú¡G4 MB, 4-way set associative, 64-byte line size 47HL3 §Ö¨ú¡G8 MB, 8-way set associative, 64-byte line size
49HL3 §Ö¨ú¡G4 MB, 16-way set associative, 64-byte line size (Intel Xeon processor MP, Family F, Model 6)
L2 §Ö¨ú¡G4 MB, 16-way set associative, 64-byte line size
4AHL3 §Ö¨ú¡G6 MB, 12-way set associative, 64-byte line size
4BHL3 §Ö¨ú¡G8 MB, 16-way set associative, 64-byte line size 4CHL3 §Ö¨ú¡G12 MB, 12-way set associative, 64-byte line size
4DHL3 §Ö¨ú¡G16 MB, 16-way set associative, 64-byte line size 50H«ü¥O TLB¡G4 KB, 2 MB or 4 MB pages, fully associative, 64 entries
51H«ü¥O TLB¡G4 KB, 2 MB or 4 MB pages, fully associative, 128 entries 52H«ü¥O TLB¡G4 KB, 2 MB or 4 MB pages, fully associative, 256 entries
56H¸ê®Æ TLB¡G4 MB pages, 4-way set associative, 16 entries 57H¸ê®Æ TLB¡G4 MB pages, 4-way set associative, 16 entries
5BH¸ê®Æ TLB¡G4 KB or 4 MB pages, fully associative, 64 entries 5CH¸ê®Æ TLB¡G4 KB or 4 MB pages, fully associative, 128 entries
5DH¸ê®Æ TLB¡G4 KB or 4 MB pages, fully associative, 256 entries 60HL1 ¸ê®Æ§Ö¨ú¡G16 KB, 8-way set associative, sectored cache, 64-byte line size
66HL1 ¸ê®Æ§Ö¨ú¡G8 KB, 4-way set associative, sectored cache, 64-byte line size 67HL1 ¸ê®Æ§Ö¨ú¡G16 KB, 4-way set associative, sectored cache, 64-byte line size
68HL1 ¸ê®Æ§Ö¨ú¡G32 KB, 4 way set associative, sectored cache, 64-byte line size 70HTrace §Ö¨ú¡G12 K-uops, 8-way set associative
71HTrace §Ö¨ú¡G16 K-uops, 8-way set associative 72HTrace §Ö¨ú¡G32 K-uops, 8-way set associative
73HTrace §Ö¨ú¡G64 K-uops, 8-way set associative 78HL2 §Ö¨ú¡G1 MB, 4-way set associative, 64-byte line size
79HL2 §Ö¨ú¡G128 KB, 8-way set associative, sectored cache, 64-byte line size 7AHL2 §Ö¨ú¡G256 KB, 8-way set associative, sectored cache, 64-byte line size
7BHL2 §Ö¨ú¡G512 KB, 8-way set associative, sectored cache, 64-byte line size 7CHL2 §Ö¨ú¡G1 MB, 8-way set associative, sectored cache, 64-byte line size
7DHL2 §Ö¨ú¡G2 MB, 8-way set associative, 64-byte line size 7FHL2 §Ö¨ú¡G512 KB, 2-way set associative, 64-byte line size
82HL2 §Ö¨ú¡G256 KB, 8-way set associative, 32-byte line size 83HL2 §Ö¨ú¡G512 KB, 8-way set associative, 32-byte line size
84HL2 §Ö¨ú¡G1 MB, 8-way set associative, 32-byte line size 85HL2 §Ö¨ú¡G2 MB, 8-way set associative, 32-byte line size
86HL2 §Ö¨ú¡G512 KB, 4-way set associative, 64-byte line size 87HL2 §Ö¨ú¡G1 MB, 8-way set associative, 64-byte line size
B0H«ü¥O TLB¡G4 KB Pages, 4-way set associative, 128 entries B1H«ü¥O TLB¡GMB Pages, 4-way set associative, 4 entries
«ü¥O TLB¡G2 MB Pages, 4-way set associative, 8 entries
B3H¸ê®Æ TLB¡G4 KB Pages, 4-way set associative, 128 entries B4H¸ê®Æ TLB¡GKB Pages, 4-way set associative, 256 entries

EAX=8000 0000H

·í¥H EAX=80000000H ¬°°Ñ¼Æ¡A°õ¦æ CPUID «ü¥O«á¡AEAX ·|Åܦ¨©µ¦ù¥\¯àªº³Ì¤j°Ñ¼Æ­È¡C¦Ó EBX¡BECX¡BEDX ªºªð¦^­È·|¨Ì¾Ú»s³y°Ó¤£¦P¦Ó¤£¦P¡A¹ï­^¯Sº¸ªº CPU ¨ÓÁ¿¡A³o¤T­Ó¼È¦s¾¹ªºªð¦^­ÈµL·N¸q¡F¹ï AMD ¨ÓÁ¿¡A³o¤T­Ó¼È¦s¾¹ªºªð¦^­È©M»P EAX=0 ªºªð¦^­È·N¸q¤@¼Ë¡C

EAX=8000 0001H

­^¯Sº¸

³o­Ó©µ¦ù¥\¯àªºªð¦^­È¡A¨â¤j CPU ¼t°Óªºµ²ªG¤£¦P¡C­^¯Sº¸ªº CPU ¥u¦³ ECX¡BEDX ¦³¥Î¡A¦p¤Uªí¡G


ECX ªð¦^­È

¦ì¤¸ÁY¼g¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0LAHFLAHF/SAHF¦b x86-64 ¼Ò¦¡®É¡ALAHF ©M SAHF «ü¥O¥i¥H¨Ï¥Î
1¡ã31«O¯d

EDX ªð¦^­È

0¡ã10«O¯d
11SYSCALLSYSCALL/SYSRET¤ä´© SYSCALL¡BSYSRET «ü¥O
12¡ã19«O¯d
20XD bitExecution Disable Bit¤ä´© XD Bit
21¡ã28«O¯d
29Intel® 64Intel®64 Instruction Set Architeture¤ä´© IA64
30¡ã31«O¯d

¶W·L

AMD ªº CPU ¥H EAX=80000001H ¬°°Ñ¼Æ°õ¦æ CPUID «á¡AEAX ªºªð¦^­È»P¥H 1 °õ¦æ CPUID ªºªð¦^­È¬Û¦P¡Aªí¥Ü Family¡BModel¡BStepping¡K¡K¡CEBX ªºªð¦^­È°O¿ý©µ¦ùªº Brand ID¡AECX¡BEDX ªð¦^­È«h¬O¤@¨ÇÂø¶µªº¸ê®Æ¡A¨£¤Uªí¡G


EBX ªð¦^­È

¦ì¤¸ÁY¼g¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0¡ã15Brand IDBrand ID
16¡ã27«O¯d
28¡ã31PkgTypePackage Type

ECX ªð¦^­È

¦ì¤¸ÁY¼g¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0LahfSahfLAHF/SAHF¦b x86-64 ¼Ò¦¡®É¡ALAHF ©M SAHF «ü¥O¥i¥H¨Ï¥Î¡A»P­^¯Sº¸ CPU ¬Û¦P
1CmpLegacy
2SVMSecure Virtual Machine
3ExtApicSpace
4AltMovCr8
5ABMAdvanced Bit Manipulation¤ä´© LZCNT «ü¥O
6SSE4A¤ä´© EXTRQ¡BINSERTQ¡BMOVNTSS¡BMOVNTSD «ü¥O
7MisAlignSSEMisaligned SSE Mode
83DNowPrefetch¤ä´© PREFETCH¡BPREFETCHW «ü¥O
9OSVWOS Visible Workaround¤ä´© OS-Visible Workaround
10¡ã11«O¯d
12SKINIT¤ä´© SKINIT¡BSTGI¡BDEV «ü¥O
13WDT¤ä´© Watch Dog Timer
14¡ã31«O¯d

EDX ªð¦^­È

¦ì¤¸ÁY¼g¦WºÙ »¡¡@©ú
¦¹¦ì¤¸¬° 1 ®É
0¡ã10«O¯d
11SysCallSysRetSYSCALL/SYSRET¤ä´© SYSCALL¡BSYSRET «ü¥O¡A»P­^¯Sº¸ CPU ¬Û¦P
12¡ã19«O¯d
20XD bitExecution Disable Bit¤ä´© XD Bit
21¡ã28«O¯d
29LMLong Mode
30¡ã31«O¯d

EAX=8000 0002H ¡ã 8000 0004H

³sÄò¥H 80000002H¡B80000003H¡B80000004H ¬°°Ñ¼Æ°õ¦æ CPUID ¥i¥H±o¨ì³oÁû CPU ªº»s³y¼t°Ó¦WºÙ»P CPU ªº¸Ô²Ó¦WºÙ¡A¥¦­Ìªð¦^®É¡A·|§â³o¨Ç¤å¦r¦r¦ê¦s¦b EAX¡BEBX¡BECX¡BEDX ¦r¦êùØ¡C¥H¤p¤ì°¸ªº®à¤W¾÷ Athlon 64 X2 3600+ ¬°¨Ò¡G

³Ì«á§â³o¨Ç¦r¦ê¦X°_¨Ó¡AÅܦ¨¤@­Ó´y­z CPU »s³y°Ó¤Î CPU ¦WºÙªº ASCIIZ ¦r¦ê¡A¡yAMD Athlon(tm) 64 X2 Dual Core Processor 3600+¡z¡Cª`·N¨ì¡A¦¹¤T­Ó©µ¦ùªº CPUID ¥\¯à©Ò±o¦r¦ê·|¥H 0 ·í°µµ²§À¡C

EAX=80000005H

80000005H ¥\¯à³Q­^¯Sº¸ªº CPU «O¯d¤£¨Ï¥Î¡A¦ý«o³Q AMD CPU ¥Î§@°O¿ý¨C­Ó®Ö¤ßªº²Ä¤@¶¥§Ö¨ú»P TLB ªº©Ê½è¡C©³¤Uªºªí®æ¬O³o¨Çªð¦^­È¡G


EAX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã7L1ITlb2and4MSize2MB ¤À­¶®Éªº«ü¥O TLB ¤j¤p ( ¦¹¼Æ­È¬°¥H 2MB ¤À­¶®É¡A¦³´X­Ó±ø¥Ø¶µ¥i¥Î¡F­Y±ý¨D 4MB ¤À­¶¡A«h¬°¦¹¼Æªº¤@¥b )
8¡ã15L1ITlb2and4MAssoc2MB ©Î 4MB ¤À­¶®É¡A«ü¥O TLB ªºÁp¦X¤è¦¡ ( ­Y¬° 0FFH¡Aªí¥Ü±Ä¥Î¥þÁp¦X¤è¦¡ )
16¡ã23L1DTlb2and4MSize2MB ¤À­¶®Éªº¸ê®Æ TLB ¤j¤p ( Ãþ¦ü¦ì¤¸ 8¡ã15 )
24¡ã31L1DTlb2and4MAssoc2MB ©Î 4MB ¤À­¶®É«ü¥O TLB ªºÁp¦X¤è¦¡

EBX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã7L1ITlb4KSize4KB ¤À­¶®Éªº«ü¥O TLB ¤j¤p
8¡ã15L1ITlb4KAssoc«ü¥O TLB Áp¦X¤è¦¡
16¡ã23L1DTlb4KSize4KB ¤À­¶®Éªº¸ê®Æ TLB ¤j¤p
24¡ã31L1DTlb4KAssoc4KB ¤À­¶®É¸ê®Æ TLB ªºÁp¦X¤è¦¡

ECX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã7L1DcLineSize²Ä¤@¶¥¸ê®Æ§Ö¨ú½u¤j¤p¡A¥H¦ì¤¸²Õ¬°³æ¦ì
8¡ã15L1DcLinesPerTag²Ä¤@¶¥¸ê®Æ§Ö¨ú¡A¨C tag ©Ò§t§Ö¨ú½u¦h¤Ö
16¡ã23L1DcAssoc²Ä¤@¶¥¸ê®Æ§Ö¨úªºÁp¦X¤è¦¡
24¡ã31L1DcSize²Ä¤@¶¥¸ê®Æ§Ö¨ú¤j¤p¡A¥H KB ¬°³æ¦ì

EDX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã7L1DcLineSize²Ä¤@¶¥«ü¥O§Ö¨ú½u¤j¤p¡A¥H¦ì¤¸²Õ¬°³æ¦ì
8¡ã15L1DcLinesPerTag²Ä¤@¶¥«ü¥O§Ö¨ú¡A¨C tag ©Ò§t§Ö¨ú½u¦h¤Ö
16¡ã23L1DcAssoc²Ä¤@¶¥«ü¥O§Ö¨úªºÁp¦X¤è¦¡
24¡ã31L1DcSize²Ä¤@¶¥«ü¥O§Ö¨ú¤j¤p¡A¥H KB ¬°³æ¦ì

EAX=80000006

­^¯Sº¸

80000006H ¥\¯à³Q Intel ¥Î¨Ó´y­z²Ä¤G¶¥§Ö¨úªº©Ê½è¡A³o²Ä¤G¶¥§Ö¨úªº©Ê½è¶È°O¿ý¦b ECX ùØ¡AEAX¡BEBX¡BEDX ³£«O¯d¦Ó¨S¦³¥Î¨ì¡C©³¤U¬O ECX ªºªð¦^­È¡G


ECX ªð¦^­È

¦ì¤¸»¡¡@©ú
0¡ã7²Ä¤G¶¥§Ö¨úªº Line Size¡A¥H¦ì¤¸²Õ¬°³æ¦ì
8¡ã11«O¯d¤£¥Î
12¡ã15²Ä¤G¶¥§Ö¨úªº Associativity¡G
00¡GDisable¡@¡@01¡Gª½±µ¹ïÀ³¡@¡@02¡G2 way¡@¡@04¡G4 way
06¡G8 way¡@¡@¡@08¡G16 way¡@¡@¡@0F¡GFull
16¡ã31²Ä¤G¶¥§Ö¨ú¤j¤p¡A¥H KB ¬°³æ¦ì¡C( 1KB¡×1024 ­Ó¦ì¤¸²Õ )

¶W·L

80000006H ¥\¯à³Q AMD CPU ¥Î§@°O¿ý¨C­Ó®Ö¤ßªº²Ä¤G©Î²Ä¤T¶¥§Ö¨ú»P²Ä¤G¶¥ TLB ªº©Ê½è¡C¤£¹L¦b EAX=80000006H ¥\¯àªºªð¦^­È¤¤¡AÁp¦X¤è¦¡¶È¦û¥|­Ó¦ì¤¸¡A¤£¯àª½±µ¥H¼Æ­Èªí¥ÜÁp¦X¤è¦¡¡A¦Ó¬O¥H¤Uªíªí¥Ü¡G

¼Æ­ÈÁp¦X¤è¦¡ ¼Æ­ÈÁp¦X¤è¦¡
0L2/L3/TLB ¸T¥Î 1ª½±µ¹ïÀ³
22-way associative44-way associative
68-way associative816-way associative
0Ah32-way associative0Bh48-way associative
0Ch64-way associative0Dh96-way associative
0Eh128-way associative0Fhfully associative

©³¤U´N¬O EAX=80000006H ¥\¯àªºªð¦^­È¡G


EAX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã11L2ITlb2and4MSize²Ä¤G¶¥«ü¥O TLB 2MB/4MB ªº±ø¥Ø¼Æ
12¡ã15L2ITlb2and4MAssoc²Ä¤G¶¥«ü¥O TLB 2MB/4MB ªºÁp¦X¤è¦¡
16¡ã27L2DTlb2and4MSize²Ä¤G¶¥¸ê®Æ TLB 2MB/4MB ªº±ø¥Ø¼Æ
28¡ã31L2DTlb2and4MAssoc²Ä¤G¶¥¸ê®Æ TLB 2MB/4MB ªºÁp¦X¤è¦¡

EBX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã11L2ITlb4KSize²Ä¤G¶¥«ü¥O TLB 4KB ªº±ø¥Ø¼Æ
12¡ã15L2ITlb4KAssoc²Ä¤G¶¥«ü¥O TLB 4KB ªºÁp¦X¤è¦¡
16¡ã27L2DTlb4KSize²Ä¤G¶¥¸ê®Æ TLB 4KB ªº±ø¥Ø¼Æ
28¡ã31L2DTlb4KAssoc²Ä¤G¶¥¸ê®Æ TLB 4KB ªºÁp¦X¤è¦¡

ECX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã7L2LineSize²Ä¤G¶¥§Ö¨ú½u¤j¤p¡A¥H¦ì¤¸²Õ¬°³æ¦ì
8¡ã11L2LinesPerTag²Ä¤G¶¥§Ö¨ú¤¤¡A¨C tag ©Ò§t§Ö¨ú½u¼Æ¥Ø
12¡ã15L2Assoc²Ä¤G¶¥§Ö¨úªºÁp¦X¤è¦¡
16¡ã31L2Size²Ä¤G¶¥§Ö¨úªº¤j¤p¡A¥H KB ¬°³æ¦ì

EDX ªð¦^­È

¦ì¤¸¦WºÙ»¡¡@©ú
0¡ã7L3LineSize²Ä¤T¶¥§Ö¨ú½u¤j¤p¡A¥H¦ì¤¸²Õ¬°³æ¦ì
8¡ã11L3LinesPerTag²Ä¤T¶¥§Ö¨ú¤¤¡A¨C tag ©Ò§t§Ö¨ú½u¼Æ¥Ø
12¡ã15L3Assoc²Ä¤T¶¥§Ö¨úªºÁp¦X¤è¦¡
16¡ã17«O¯d
18¡ã31L3Size²Ä¤T¶¥§Ö¨úªº¤j¤p¡A¥H KB ¬°³æ¦ì

CPUID.ASM »P¸Ñ»¡

©³¤U¤p¤ì°¸¼g¤F¤@­Óµ{¦¡¡ACPUID.ASM ¯à¦b¤u§@°Ï¤¤Åã¥Ü¥Ñ CPUID «ü¥O¶Ç¦^¨Óªº¸ê®Æ¡C³o­Óµ{¦¡¦b¤£¦Pªº CPU ¤§¤U°õ¦æµe­±¤£¦P¡A©³¤U¬O¦b¤p¤ì°¸¤@¥x CPU ¬° AMD64X2 3600¡Ï ªº®à¤W«¬¹q¸£°õ¦æ CPUID.ASM ®Éªºµe­±¡G

ŪªÌ¥i«ö¦¹³B¤U¸ü­ì©l½X¡C¸ÑÀ£ÁY«á¡A·|±o¤@ CPUID ¤l¥Ø¿ý¡A¥H¸Ó¤l¥Ø¿ýùتº CPUID.MAK ¬°°Ñ¼Æ¡A°õ¦æ NMAKE.EXE¡A§Y¥i±o CPUID.EXE¡G

E:\HomePage\SOURCE\CPUID>nmake -f cpuid.mak [Enter]

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

        rc CPUID.rc
        ml CPUID.asm /link CPUID.res
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

 Assembling: CPUID.asm
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/SUBSYSTEM:WINDOWS
"CPUID.obj"
"/OUT:CPUID.exe"
"CPUID.res"

E:\HomePage\SOURCE\CPUID>

WM_CREATE °µ¤F¨º¨Ç¨Æ

¦b³B²z WM_CREATE °T®§ùØ¡ACPUID.ASM ¥ýÀˬd CPU ¬O§_¯à°õ¦æ CPUID «ü¥O¡A±µµÛ¨ú±o¤å¦r°ª«×¡A¦s©ó tm µ²ºcÅéùØ¡A³o­ÓÅܼƱN¦b WM_PAINT °T®§¤¤¥ÎµÛ¡C¦b WM_PAINT °T®§ùØ¡ACPUID.ASM ·|§â¥Ñ CPUID ©Ò±oªº¸ê®Æ¦L¦b¿Ã¹õ¤W¡A³o¨Ç¸ê®Æ¥i¯à¤£¥u¤@¦æ¡A¨C¤@¦æ©Ò¦û¾Úªº°ª«×¬° tm.tmHeight »P tm.tmExternalLeading ¤§©M¡A¦³¤F¤å¦r°ª«×¤~¯à¨M©w²Ä¤G¡B¤T¡B¥|¡K¡Kªº¦ì¸m¡C

±µµÛ¦b WM_CREATE ³B²zªº¬O§âµøµ¡²¾¨ì¿Ã¹õªº¥¿¤¤¥¡¡C¤p¤ì°¸¹w³]¤u§@°Ï°ª«×¬O 200¡A¬Gµøµ¡°ª«×¬°¤u§@°Ï°ª«×¦A¥[¤W¼ÐÃDÄæ°ª«×¡B¿ï³æ°ª«×¤Î¤W¤U¨â­ÓÃä®Ø«p«×¡A³o¨Ç¤j¤p¥i°Ñ¦Ò²Ä 14 ³¹¦³Ãö GetSystemMetrics ªº»¡©ú¨ú±o¡Cµøµ¡¥ª¤W¨¤ªº Y ®y¼Ð§Y¬°¿Ã¹õ°ª«×´î¥hµøµ¡°ª«×¦A°£¥H 2¡C¦P²z¡Aµøµ¡¥ª¤W¨¤ªº X ®y¼Ð¤]¬O¦p¦¹¡A¥u¬Oµøµ¡¼e«×Åܦ¨¤u§@°Ï¼e«×¥[¤W¥ª¥k¨âÃ䪺Ãä®Ø«p«×¡C

WM_CREATE ±µµÛªº¤u§@¡A¬O¥H EAX=0 °õ¦æ CPUID «ü¥O¡A¨ú±o¦³´X¶µ°ò¥»¥\¯à¡A¨Ã±q EBX ¤§­È§PÂ_ CPU ¬O¨º¤@®a¼t°Óªº²£«~¡A¨Ã°O¿ý¦b bCPU ÅܼÆùØ¡C­Y bCPU¡×1¡Aªí¥Ü¬O Intel ªº CPU¡F­Y bCPU¡×2¡Aªí¥Ü¬O AMD ªº CPU¡K¡K¡C±µµÛ¦A¨Ì¾Ú EAX¡A©ó¥D¿ï³æ¤¤«Ø¥ß¤@¦W¬°¡yBasci¡zªº¼u¥X¿ï³æ¡A¨ä¤UÄݤl¿ï³æ¿ï¶µ¤À§O¬O¡y0000 0000H¡z¡B¡y0000 0001H¡zµ¥µ¥¡C·í¨Ï¥ÎªÌ«ö¤U¡y0000 0000H¡z¿ï¶µ®É¡Aªí¥Ü CPU ¥H 00000000H ¬°°Ñ¼Æ°õ¦æ CPUID «ü¥O¡AµM«á§âµ²ªGÅã¥Ü¦b¤u§@°Ï¤W¡C

WM_CREATE ±µ¤U¨Óªº¤u§@¬O«Ø¥ß¡yExtend¡z¼u¥X¿ï³æ¤Î¨ä¤l¿ï³æ¤¤ªº¿ï¶µ¡A¤£ºÞ¬O¡yBasci¡z©Î¡yExtend¡z¼u¥X¿ï³æ³£¬O©I¥s AddMenu °Æµ{¦¡§¹¦¨¡CAddMenu ¦³¤T­Ó°Ñ¼Æ¡G

AddMenu proto   dMax:DWORD,StrAddr:DWORD,Position:DWORD

dMax ¬O¥H 0 ©Î 80000000H °õ¦æ CPUID «áªº¼Æ­È¡A¥¦³Q·í§@°Ñ¼Æ¶Çµ¹ AddMenu¡A¥¦¨M©w¤F AddMenu ¦b¤l¿ï³æ¤¤¸Ó²£¥Í´X­Ó¿ï¶µ¡A¥H¤Î¦U¿ï¶µ¦WºÙ¡B¿ï¶µÃѧO½X ( ID )¡C¨Ò¦p dMax µ¥©ó 2 ®É¡AÀ³¸Ó·|¦³¡y0000 0000H¡z¡B¡y0000 0001H¡z¡B¡y0000 0002H¡z¤T­Ó¿ï¶µ¡A¨ä ID ¤À§O¬O 100H¡B101H¡B102H¡C¦ý¦pªG¬O dMax ¬° 80000008H¡A«h AddMenu ·|©¿²¤³Ì°ªªº¦ì¤¸²Õ¡A¥B¦]¬° 80000002H ¨ì 80000004H ³o¤T­Ó©µ¦ù¥\¯à¦@¦P¨ú±o CPU ªº»s³y¼t°Ó¦WºÙ»P CPU ªº¸Ô²Ó¦WºÙ¡A¦]¦¹¦b¤l¿ï³æ¤¤¥u¥Î¡y8000 0002H¡zªí¥Ü¡A¬G¦b¤l¿ï³æùØ¥X²{ªº¬O¡y8000 0000H¡z¡B¡y8000 0001H¡z¡B¡y8000 0002H¡z¡B¡y8000 0005H¡z¡B¡y8000 0006H¡z¡B¡y8000 0007H¡z¡B¡y8000 0008H¡z7 ­Ó¤l¿ï³æ¡A¨ä ID ¤À§O¬O 900H¡B901H¡B902H¡B905H¡B906H¡B907H¡B908H¡C

AddMenu ªº²Ä¤G­Ó°Ñ¼Æ¬O«ü¦V¥D¿ï³æùتº¼u¥X¿ï¶µ¦r¦ê¡A¥ç§Y¡yBasic¡z»P¡yExtend¡z¡CAddMenu ªº²Ä¤T­Ó°Ñ¼Æ¬O¼u¥X¿ï¶µ¦b¥D¿ï³æªº¦ì¸m¡A¥ç§Y¡yBasic¡z¡B¡yExtend¡z¦ì¸m¤À§O¬O 1¡B2¡A³o¬O¦]¬°¦ì¸m 0 ¬O¡y°h¥X¡z¼uªì¿ï¶µ¡C

WM_CREATE ³Ì«áªº¤u§@¬O©I¥s AddView »P help ¨â­Ó°Æµ{¦¡¡C«eªÌ¬O§â¡yÀ˵ø¡z¼u¥X¿ï¶µ¤Î¨ä¤l¿ï³æ¥[¶i¥D¿ï³æùØ¡A«áªÌ¬O§â szHelp ¦r¦êÅã¥Ü©ó¤u§@°Ï¤º¡C

WM_PAINT ªº¤u§@

·í§Ú­Ì¥H¬Y¤@°Ñ¼Æ°õ¦æ CPUID «ü¥O®É¡A±`¶Ç¦^³\¦h¸ê®Æ¡A³o¨Ç¸ê®Æ¤£¬O¥Î¤@¦C¦r¦êªí¥Ü´N¥i¥H¤F¡A³o¨Ç¸ê®Æ³Q CPUID.ASM ùتº³\¦h¹³ eax_?000_000? °Æµ{¦¡¾ã²z¦¨¼Æ­Ó¦r¦ê¡A³o¨Ç¦r¦ê³£¦s¦b szString °}¦CùØ¡Aº¸«á WM_PAINT ¦A§â³o¼Æ­Ó¦r¦êÅã¥Ü©ó¤u§@°Ï¤W¡C¨C¤@¦C¦r¦êªº°ª«×¬O tm.tmHeight¡Ïtm.tmExternalLeading¡A¦Ó¨C­Ó¦r¦êªº°_©l¦ì§}«h¦s©ó pString °}¦CùØ¡C

¥H¨Ï¥ÎªÌ«ö¤U¿ï¶µ eax_0000_0001H ¬°¨Ò¤l¡A³o®É¦b WM_COMMAND °T®§¤¤·|©I¥s°Æµ{¦¡ eax_0000_0001¡Aeax_0000_0001 °Æµ{¦¡·|¥ý§â¡y¥\¯à¡G00000001H¡z¦s¤J szString °}¦Cªº²Ä¹s­Ó¤¸¯À¡A¨Ã§â¦¹¦ì§}¦s¦b pString °}¦Cªº²Ä¹s­Ó¤¸¯ÀùØ¡C±µµÛ¬O¤@­ÓªÅ¦r¦ê¥H°µµøı¤Wªº¤À¹j¡A¦¹ªÅ¦r¦ê¦ì§}¬O szAppName+5¡A§Y¬° 0¡A¨Ã§â¦¹¦ì§}¦s¤J pString ªº²Ä¤@­Ó¤¸¯À¡ApString[4]¡AùØ¡C±µµÛ¥H 1 ¬°°Ñ¼Æ°õ¦æ CPUID «ü¥O¡A¤p¤ì°¸§â©Ò±o¸ê®Æ¦s¤J SavedEAX¡BSavedEBX¡BSavedECX¡BSavedEDX ¥|­ÓÅܼÆùØ¡AµM«á¦A¾ã²z¦¨ Family¡BModel¡Kµ¥¸ê®Æ¡C·í°õ¦æ§¹«á¡ApString °}¦C¤§¤º®e¬°¡G

004040C0                             74 44 40 00 55 41 40
004040D0  00 84 44 40 00 B3 44 40 00 D1 44 40 00 55 41 40
004040E0  00 DE 44 40 00 00 00 00 00 00 00 00 00 00 00 00
004040F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00404100  00 00 00 00 00 00 00 00 00

©³¤U«h¬O szString °}¦C³¡¥÷¤º®e¡A¥¦¬O¥Ñ¤£µ¥ªøªº¦r¦ê²Õ¦¨ªº°}¦C¡G

00404470              A5 5C AF E0 A1 47 30 30 30 30 30 30      ¥\¯à¡G000000
00404480  30 31 48 00 20 20 20 20 46 61 6D 69 6C 79 3A 30  01H.    Family:0
00404490  46 48 20 20 20 20 20 20 20 4D 6F 64 65 6C 3A 34  FH       Model:4
004044A0  42 48 20 20 20 20 20 53 74 65 70 70 69 6E 67 3A  BH     Stepping:
004044B0  32 48 00 45 78 74 2E 46 61 6D 69 6C 79 3A 30 30  2H.Ext.Family:00
004044C0  48 20 20 20 45 78 74 2E 4D 6F 64 65 6C 3A 34 48  H   Ext.Model:4H
004044D0  00 42 72 61 6E 64 20 49 44 3A 30 30 48 00 A4 E4  .Brand ID:00H.¤ä
004044E0  B4 A9 20 46 50 55 20 4D 4D 58 20 53 53 45 20 53  ´© FPU MMX SSE S
004044F0  53 45 32 20 53 53 45 33 00                       SE2 SSE3.

pString ¬O¤@­Ó¦ì§}©Ò²Õ¦¨ªº°}¦C¡A²Ä¹s­Ó¤¸¯À¡A00404474¡A´N¬O WM_PAINT ±N¦b¤u§@°Ï¤¤¦L¥Xªº²Ä¹s¦C¦r¦ê¦ì§}¡A§ä¨ì 00404474 ¦ì§}ªº¤º®e´N¬O¡y¥\¯à¡G00000001H¡z¦r¦ê¡C²Ä¤@­Ó¤¸¯À¡A00404155¡A´N¬O­n¦L¥Xªº²Ä¤@¦C¦r¦ê¦ì§}¡AÁöµM¨S¦b¤W­±Åã¥Ü¡A¦ý¬O´N¬O¤@­ÓªÅ¦r¦ê¡C²Ä¤G­Ó¤¸¯À¡A00404484¡A©Ò«üªº¦ì§}¬O¡y    Family:0FH       Model:4BH     Stepping:2H¡z¦r¦ê¡A¤]´N¬O¦b¤u§@°Ïªº²Ä¤G¦C¦r¦ê¡C¨ä¾l¨Ì¦¹Ãþ±À¤F¡C¦Ü©ó­nÅã¥Üªº¦C­z¦³´X¦C¡A«h¬O¦s©ó wLine ùØ¡C

eax_0000_0002 °Æµ{¦¡¨M©w Intel §Ö¨ú©Ê½è

ÁöµM¥H 2 ¬°°Ñ¼Æ¡A°õ¦æ CPUID «ü¥O¡A¥i¥H±o«Ü¸ÔºÉªº CPU §Ö¨ú©Ê½è¡A¤£¹L¦¹³B¤p¤ì°¸¥u¼¶¼g¯à°÷§ä¨ì L1¡BL2¡BL3 §Ö¨ú©Ê½è¡C¦]¬° Intel CPU ©Ò¶Ç¦^ªº¼Æ­È¬O¥H¤@­Ó¦ì¤¸²Õ¬°·j´M­È¥h·j´M¤@­Ó«Ü¤jªºªí®æ¨Ó¨M©w§Ö¨ú©Ê½è¡A¦P®É¨C¤@ºØ§Ö¨ú ( L1¡BL2¡BL3 µ¥ ) ªí®æªº¸ê®Æ¶µ¼Æ³£¤£¦P¡A¨Ò¦p L1 «ü¥O§Ö¨ú¦bªí®æ¤¤¶È¤T¶µ¡F¦Ó L1 ªº¸ê®Æ§Ö¨ú«h¦³ 7 ¶µ¡A©³¤U´N¬O CPUID.ASM ­ì©l½X¤¤¦³Ãöªí®æªº¸ê®Æ¡G

;­^¯Sº¸CPUªºL1«ü¥O/¸ê®Æ§Ö¨ú ¼È¦s¾¹­È ¤j¤p way lines
IntelL1i        BYTE            6h,    8,  4,  32
                BYTE            8h,   16,  4,  32
                BYTE            30h,  32,  8,  64
IntelL1d        BYTE            0ah,   8,  2,  32
                BYTE            0ch,  16,  4,  32
                BYTE            2ch,  32,  8,  64
                BYTE            60h,  16,  8,  64
                BYTE            66h,   8,  4,  64
                BYTE            67h,  16,  4,  64
                BYTE            68h,  32,  4,  64

¤p¤ì°¸¦b eax_0000_0002 °Æµ{¦¡ùØ¡A¨C¥H³£ 32 ¦ì¤¸ªº¼È¦s¾¹¥h¤ñ¹ïªí®æ¤¤ªº¸ê®Æ¡Cªí®æ¤¤¦³´X¶µ¸ê®Æ¡Bªí®æ¦ì§}¤À§O¦s¦b CL¡BESI ùØ¡A¦A¥h©I¥s find_cache_data °Æµ{¦¡¡C¦b find_cache_data °Æµ{¦¡ùØ¡A©I¥s find °Æµ{¦¡¥|¦¸¡A³o¥|¦¸¤À§O¬O¥H SavedEAX¡BSavedEBX¡BSavedECX¡BSavedEDX ¬°°Ñ¼Æ¥h¤ñ¹ï ESI ©Ò«üªºªí®æ¸ê®Æ¡C¦Ó¦b find °Æµ{¦¡¤¤«h§ó¶i¤@¨B§â 32 ¦ì¤¸ªº EAX ¤À¦¨¥|­Ó¦ì¤¸²Õ¡A¥h©I¥s check_al °Æµ{¦¡¥h·j´Mªí®æ¡C

¦pªG§ä¨ìªº¸Ü¡AESI «h·|¦s¤J§Ö¨ú¸ê®Æ¡A¨Ò¦p§Ö¨ú¤j¤p¡BÁp¦X¤è¦¡¡BLine size µ¥µ¥¡Acheck_al ÁÙ·|³]©w ZF¡AµM«á¦A¤@¼h¤@¼hªº§â ZR¡BESI ¶Ç¦^¨ì eax_0000_0002¡y¥D¡zµ{¦¡¤¤¡Aeax_0000_0002 ¤¤¦A©I¥s save_intel_cache_data °Æµ{¦¡¡A§â§ä¨ìªº§Ö¨ú¸ê®Æ¦s¤J¤@­Ó¥s°µ dCacheValue ªº°}¦CùØ¡C dCacheValue °}¦C¥Ñ¥|­ÓÂù¦r²Õ©Ò²Õ¦¨¡A¨ä°¾²¾¦ì§} 0 ¦s¤J§Ö¨ú¤j¤p¡F°¾²¾¦ì§} 4 ¦s¤JÁp¦X¤è¦¡¡F°¾²¾¦ì§} 8 ¦s¤J§Ö¨ú½u¤j¤p¡F°¾²¾¦ì§} 0CH ¦s¤J Lines per Tag¡C( Intel ªº CPU ¨Ã¨S¦³ Lines per Tag ³o¤@¶µ¡F¦ý¬O AMD ªº CPU ¦³¦¹¶µ¡C)

±µ¤U¨Ó eax_0000_0002 ·|©I¥s set_cache °Æµ{¦¡¡Aset_cache °Æµ{¦¡¥Î¨Ó§â dCacheValue ¤¤ªº§Ö¨ú©Ê½è¡AÂǥѩI¥s wsprintf API Åܦ¨¦r¦ê¡A¦s¦b szString ¦r¦êùØ¡C¤£¹L§Ö¨ú¸ê®Æ¤£¥u¤@¦C¡A¨C¤@¦Cªº¶}©l¦ì§}³£·|³Q°O¿ý¦b pString °}¦CùØ¡A¦Ó­n¦L¥Xªº¸ê®Æ¦³´X¦C¡A«h¦s©ó wLine ÅܼÆùØ¡C

´«¥y¸Ü»¡¡A¦b©I¥s§¹ eax_0000_0002 ¤§«á¡AwLine ·|¦s©ñ¤u§@°Ï»Ý­n¦L¥X´X¦C¦r¦ê¡A¦r¦ê¤º®e«h¦s©ó szString °}¦C¡Cµ¥¨ì WM_PAINT °T®§µo¥Í®É¡A¦A§â³o¨Ç¸ê®ÆÅã¥Ü©ó¤u§@°ÏùØ¡C