ãã®ããŒãã§ã¯ãã€ã³ãã«Â®IA-32ã¢ãŒããã¯ãã£ãŒã®1ã€ã®åœä»€ãCPUIDã«ã€ããŠèª¬æããŸããããã¯ãããã»ããµãŒã§å®£èšãããæ¡åŒµæ©èœã®ãªã¹ãçšã«ç¹å¥ã«å°å ¥ããããã®ã§ãã 圌女ãç»å Žããåã«äœãèµ·ãã£ãã®ãã圌女ã¯ã©ã®ãããªé©ããåŸ ã£ãŠããã®ããã©ã®ãœãããŠã§ã¢ã圌女ã®è§£éã解éã§ããã®ããäŒããæ¹æ³ãç¥ã£ãŠããããšã«ã€ããŠå°ãã

ç»åãœãŒã¹ïŒ[1]
ç©èª
æåã®éšåã§è¿°ã¹ãããã«ã次ã®åŸåããããŸããããã»ããµã®æ§è³ªããåã蟌ãŸãããã»ã©ããã®ã¢ãŒããã¯ãã£ã«åã蟌ãŸããèå¥ã®æ©äŒãå°ãªããªããŸãã äœããã®çç±ã§ãçµã¿èŸŒã¿ã·ã¹ãã ã®äœæè ã¯ããã€ããªã³ãŒãã®ç§»æ€æ§ã«ã€ããŠå¿é ããŸããã
Intel 8086ãäŸå€ã§ã¯ãããŸããã§ããã1970幎代ã®ãã€ã¯ãããã»ããµã¯ããèšç®æ©ãã·ãªãŒãº8008ã8080ã8085ããçºå±ããŸãããæåã¯ãèå¥æ段ã¯çµã¿èŸŒãŸããŠããŸããã§ããã
808386ãããã¢ãã«ãã¹ãããã³ã°ãããã³ãã¡ããªã«é¢ããæ å ±ãããªããŒãïŒRESETä¿¡å·ã®åä¿¡ïŒã®çŽåŸã«EDXã¬ãžã¹ã¿ã§å ±åãããããã«ãªããŸããã ãã€ã0x0f 0xa2ã§ãšã³ã³ãŒããããCPUIDåœä»€ã¯ãããã»ããµ80486ã§å°å ¥ãããŸãããCPUIDã®ååšã¯ãå¯èœã§ããã°ãã©ã°ã¬ãžã¹ã¿ã®ããã21ã«æžã蟌ãããšã§èªèã§ããŸãã å€ãCPUã§ã®äœæ¥ããµããŒãããã«ã¯ã8086ãã80386ã®ããã»ããµãåºå¥ããããã«éåžžã«æŽç·Žãããæ¹æ³ã䜿çšããå¿ èŠããããŸããã
CPUIDã¢ã«ãŽãªãºã æŠäºïŒ1996ïŒ
1996幎ã®èšäº[2]ã§ãRobert Collinsã¯ãåœæååšããŠãããã¹ãŠã®Intel IA-32補åãåºå¥ããã¢ã«ãŽãªãºã ãææ¡ããŸããã 圌ã¯ãæ®éçã§ã¯ãªããããPUSH SPåœä»€ã®åäœã®éãã®ã¿ã«åºã¥ããŠãIntelã®å
¬åŒã®èå¥æ¹æ³ã«æºè¶³ããŠããŸããïŒããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãïŒã ãããŒãã¯èªèº«ã®ç 究ã§ã次ã®è¿œå ã®ããªãã¯ã䜿çšããããšãææ¡ããŸããã
80386ã®ã¹ãããå®è¡ã«é¢ããæ å ±ãååŸããã«ã¯ãRESETã®çŽåŸã«EDXå€ãèªã¿åãå¿ èŠããããŸãã ããããçŸæç¹ã§ã¯ãBIOSãåäœãéå§ããå¶åŸ¡ããŠãŒã¶ãŒã³ãŒãã«è»¢éãããåã«ããããããã®ã¬ãžã¹ã¿ãäžæžããããŸãã ãã ããããã§ãããŒãã¯ããªããŒãããã»ã¹ã欺ããŠå¶åŸ¡ãåŸãããã«ãæªåé«ãA20ã©ã€ã³ãæäœããããªãããŒãªã¹ããŒã ãçºæãã説æããŠããŸãã
å ã®èšäºã«èšèŒãããŠããææ³ã¯ãäž»ã«Intel CPUã§ãã¹ããããŸããã ãã®èšäºã§ã¯ãèè ã¯ä»ã®ã¡ãŒã«ãŒã®x86ã¯ããŒã³ã®ä¿¡é Œã§ããåé¡ãèš±å¯ããŠããªãããšãèªããŠããŸãã
- ãã¹ãŠã®ããã»ããµã«ååšããªãåœä»€ãå®è¡ããïŒUDäŸå€ããã£ããããŸãã ã©ã®åœä»€ãäŸå€ãã¹ããŒããªãã£ãããç¥ããšãããã»ããµãââã¡ããªã決å®ã§ããŸãã ãã ãã8086/8088ã§ã¯ããµããŒããããŠããªãããŒã ã®åäœãå®çŸ©ãããŠããªãããããã®ã¢ãããŒãã¯æ©èœããŸããã
- PUSH SPåœä»€ã®åäœã¯ã8086ãš80286ã§ç°ãªããŸããæåã®CPUã§ã¯ãSPã¬ãžã¹ã¿ã®å€ã¯ãå€ãå€ãããŸã§ã¹ã¿ãã¯ã«ãããããŸãã 80286ã§ããã®ãšã©ãŒã¯ä¿®æ£ãããŸããã
ãiAPX 286ã¯ãPUSH SPã®ã¹ã¿ãã¯ã«iAPX 86/88ãšã¯ç°ãªãå€ãããã·ã¥ããŸããã - 80186ãééã£ãSPå€ãã¹ã¿ãã¯ã«ããã·ã¥ããŸãããCPUIDã¯åŒãç¶ããµããŒãããŸãã
- 8086ããã»ããµã§ãªãã»ãã0xffffïŒã€ãŸããã¢ãã¬ã¹æå®ãããæåŸã®ãã€ãããå§ãŸãïŒã®ã»ã°ã¡ã³ãã«ã¯ãŒãïŒ16ãããïŒãæžã蟌ããšããã®ã¯ãŒãã®2çªç®ã®ãã€ãããªãã»ãã0ã§ã¡ã¢ãªã«å ¥ãã80186ã§ãã®ãã€ããæµ·å€ã«ç§»åããŸããªãã»ãã0x10000ã®ã»ã°ã¡ã³ãã
- äžéšã®Intel Pentiumã¯ããŒã³ã¯CPUIDããµããŒãããŠããŸãããããã©ã°ã¬ãžã¹ã¿ã®ããã21ã䜿çšããŠãããå ±åããŸããã§ãããããã¯ããã¥ã¡ã³ããšççŸããããããŒãåŸã«ãã®åœä»€ã®ãµããŒããåçã«æå¹ã«ããããšãèš±å¯ããŸããã
- åããçªå·ããæã€ããã»ããµã¢ãã«ïŒããšãã°ã80386 DXãš808386 SXãCXãEXãSLãŸãã¯Intel Pentium P5ãP54CãOverDriveïŒãåºå¥ããã«ã¯ããµããŒããããŠããæ¡åŒµæ©èœã®éããæ éã«æ€èšããå¿ èŠããããŸããã
- 80386 DXãšSXã¯ãCR0ã¬ãžã¹ã¿ã®å€æŽããããããã®æ°ã®éãã«ãã£ãŠåºå¥ã§ããŸãã
- I / OããŒãã§ææžåãããäžé£ã®æäœïŒIN / OUTåœä»€ïŒã䜿çšããŠãäžéšã®èå¥æ å ±ãååŸã§ããŸãã
- 80486ã¢ãã«ã®éãã¯ã80487æ°åŠã³ããã»ããµãŒã®å¯çšæ§ã確èªããããšã§ååŸã§ããŸãã
80386ã®ã¹ãããå®è¡ã«é¢ããæ å ±ãååŸããã«ã¯ãRESETã®çŽåŸã«EDXå€ãèªã¿åãå¿ èŠããããŸãã ããããçŸæç¹ã§ã¯ãBIOSãåäœãéå§ããå¶åŸ¡ããŠãŒã¶ãŒã³ãŒãã«è»¢éãããåã«ããããããã®ã¬ãžã¹ã¿ãäžæžããããŸãã ãã ããããã§ãããŒãã¯ããªããŒãããã»ã¹ã欺ããŠå¶åŸ¡ãåŸãããã«ãæªåé«ãA20ã©ã€ã³ãæäœããããªãããŒãªã¹ããŒã ãçºæãã説æããŠããŸãã
å ã®èšäºã«èšèŒãããŠããææ³ã¯ãäž»ã«Intel CPUã§ãã¹ããããŸããã ãã®èšäºã§ã¯ãèè ã¯ä»ã®ã¡ãŒã«ãŒã®x86ã¯ããŒã³ã®ä¿¡é Œã§ããåé¡ãèš±å¯ããŠããªãããšãèªããŠããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹
ã·ã¹ãã ããã°ã©ãã®å Žåãæ¡åŒµæ©èœãèå¥ããäœæ¥ã¯éåžžãã¬ãžã¹ã¿EAXïŒãªãŒããè±èªãªãŒãïŒããã³ECXïŒãµããªã¹ããè±èªãµããªãŒãïŒã«å ¥åå€ãèšå®ããCPUIDãå®è¡ãã4ã€ã®ã¬ãžã¹ã¿EAXãEBXãECXãEDXã§çµæãèªã¿åãããšã§æ§æãããŸãã åºåã¬ãžã¹ã¿ã®åå¥ã®ããããã£ãŒã«ãã«ã¯ãç¹å®ã®ããã»ããµã³ã¢ã®é¢é£ããã¢ãŒããã¯ãã£ãã©ã¡ãŒã¿ã®å€ã«é¢ããæ å ±ãå«ãŸããŸãã
å ¥åã·ãŒããšåºåã®4ã€ã®ã¬ãžã¹ã¿ã®ãã¹ãŠã®æå¹ãªçµã¿åãããCPUIDããŒãã«ã圢æããŸãã ææ°ã®ããã»ããµã§ã¯ã4ã€ã®32ãããåãããªãçŽ12è¡ãå«ãŸããŸãã
ãã®è¡šã®å ¬åŒã«èª¬æãããŠãããã¹ãŠã®ãã£ãŒã«ãã«ã€ããŠã¯è©³ãã説æããŸããã èå³ã®ãã人ã¯ãã€ã§ãIntel SDMã§èŠã€ããããšãã§ããŸã[1]ïŒå¿è匷ããå§ãããŸã-CPUIDã«ã€ããŠã®çŽ40ããŒãžã®ããã¹ãïŒã ããã«ãæ¢ã«çºè¡šãããŠãããç©ç補åã§ãŸã ãªãªãŒã¹ãããŠããªãISAæ¡åŒµã«ã€ããŠã¯ã察å¿ããæ°ããCPUIDãã£ãŒã«ãã[3]ã«ãããŸãã 代ããã«ããã®åœä»€ã®åºåããæœåºã§ããæ å ±ãåé¡ããŸãã ããŒãã«ã®ããããã£ãŒã«ãã瀺ãããã«ã CPUID.leaf.subleaf.reg [bitstartïŒbitend]ã®è¡šèšã䜿çšããŸãã ããšãã°ãCPUID.0.EBX [31ïŒ0]-ãããã¯ãã·ãŒã0ãå ¥åãšããŠåãåã£ãCPUIDã®å®è¡åŸã®EBXåºåã¬ãžã¹ã¿ã®ããã0ã31ã§ãïŒEAX = 0ïŒã ãµããªã¹ãïŒå ¥åECXå€ïŒã¯ç¡èŠããããããæå®ãããŸããã
ã·ãŒãé å
ãµããŒããããŠããªãå ¥åEAXããã³ECXå€ã¯äŸå€ãçºçãããŸãããã代ããã«4ã€ãã¹ãŠã®ã¬ãžã¹ã¿ãŸãã¯ãã¬ããŒãžãïŒä»æ§ã«å¿ããå¥ã®ã·ãŒãã®å€ïŒã«ãŒããè¿ããŸãã ã·ãŒããšãµãã·ãŒãã®èš±å®¹å¯èœãªçµã¿åããã¯ã3ã€ã®é£ç¶ããé åã圢æããŸãã

- éåžžã®é å-ãŒãããå§ãŸããCPUID.0.EAX [31ïŒ0]ã«çããæ倧å€ãŸã§ã®çªå·ãæã€ãã¹ãŠã®ã·ãŒãã æ倧ã·ãŒãæ°ã¯åžžã«å¢å ããŠãããé·ãéããã10ãè¶ ããŠããŸãã
- æ¡åŒµé å-0x80000000ããå§ãŸããCPUID.0x80000000.EAX [31ïŒ0]ã«çããæ倧å€ãŸã§ã®ãã¹ãŠã®ã·ãŒãã ããªãé·ãéããã®æ倧å€ã¯0x80000008ã®ãŸãŸã§ãã ããã¥ã¡ã³ã¿ãªãŒã®èšŒæ ã¯èŠã€ãããŸããã§ããããæ¡åŒµã·ãŒãã®ç¯å²ã®å€èŠ³ã¯ãAMDã«ããIA-32ã¢ãŒããã¯ãã£ã®64ãããæ¡åŒµã®å°å ¥ã«é¢é£ããŠãããšæããŠããŸãã
- ã·ãŒãç¯å²0x40000000-0x4fffffffã¯äºçŽæžã¿ãšèŠãªãããŸãã CPUIDã«ãã£ãŠè¿ãããå€ã¯åžžã«ãŒãã«ãªãããšãçŽæãããŠããŸãã ãã ããããã¯ãäžéšã®ãŠãŒã¶ãŒãããŒãºã«å¿ããŠäœ¿çšããããšã劚ããŸããã ããšãã°ãKVMä»®æ³ãã·ã³ã¯ãã·ãŒã0x40000000ã§4ã€ã®æ°å€[0ã0x4b4d564bã0x564b4d56ã0x4d]ãè¿ããŸãã
é衚瀺ã®ããã¹ãããã¯ASCIIæååãKVMKVMKVMãã§ã
ISA
CPUIDã§ãšã³ã³ãŒããããéæ¥å»ã«ãšã£ãŠæãéèŠãªããŒã¿ã¯ããµããŒããããŠããåœä»€ã»ããã®ãã©ã°ã§ãã åŸæ¥ãCPUID.1.ECXããã³CPUID.1.EDXã®ãããããã®ããã«å²ãåœãŠãããŠããŸããã 以äžã«ããã€ãã®äŸã瀺ããŸãã
- CPUID.1.ECX [0]-SSE3-ãã¯ãã«åœä»€ã
- CPUID.1.ECX [9]-SSSE3-ãã®ä»ã®ãã¯ãã«åœä»€ã
- CPUID.1.ECX [7]-EIST-匷åãããIntelSpeedStep®ãããã»ããµãŒã®åšæ³¢æ°ãåçã«å€æŽããŸãã
- CPUID.1.EDX [25]-SSE-ããå€ãã®ãã¯ãã«åœä»€ã
- CPUID.1.EDX [26]-SSE2-åã³ãã¯ãã«åœä»€ã
ãã ããçŸåšãã·ãŒã1ã®å®¹éã䜿ãæããããŠãããããISAæ¡åŒµã¯ä»ã®ã·ãŒãã®ãããã§ç€ºãããšãã§ããŸãã
- CPUID.6.EAX [1]-Intel Turbo BoostããªãŒããŒã¯ããã¯ã§ãç®±ããåºããŠãã
- CPUID.7.0.EBX [4]-ããŒããŠã§ã¢ããã¯ãšãªã¢ãCPUID.7.0.EBX [11]-å¶éä»ããã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãª- ãã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãªããµããŒãããIntelã®2ã€ã®æ¡åŒµæ©èœã
- CPUID.0x80000001.ECX [5]-LZCNTãæäžäœãŒããããã®æ°ãã«ãŠã³ãããããã®åœä»€ã§ãBSRãšåæ§ïŒå€ãããïŒã
ãã©ã³ãæåå
ãã¡ããããã³ããŒã¯ã補åã®IDã§ååãæ°žç¶åããæ©äŒãéããŸããã ãããŠããããæ°åãšããŠã ãã§ãªããASCIIæååãå ¥åããããšããå§ãããŸãïŒå°ãªããšããUnicodeã§ã¯ãããŸããïŒã
IA-32ã§ã¯ãCPUIDããã¹ãã¯å°ãªããšã2ã€ã®ã°ã«ãŒãã®ã·ãŒãã«ãããŸãã CPUID.0.EBXãECXãEDXã«ã¯ãåãã³ããŒã«åºæã®12ãã€ãã®ASCIIæååãå«ãŸããŠããŸãã Intelã®å Žåãããã¯ãã¡ãããGenuineIntelãã§ãã ãŸããCPUID.0x80000002-0x80000004ã®3æã®ã·ãŒãã¯ããããããã©ã³ãæååãASCIIã§ãšã³ã³ãŒãããããã«æ倧48ãã€ããæäŸããŸãã ããã¯ãLinuxã§cat / proc / cpuinfoããªã¹ããããšãã«è¡šç€ºããããã®ã§ãã ãŸãããã®åœ¢åŒã¯å€å°æšæºåãããŠããŸãããããã³ããŒãã©ã³ãã®CPUã·ãªãŒãº@åšæ³¢æ°ãã§ãããããã°ã©ã ã³ãŒãã®å 容ã決å®ããããšã¯åŒ·ããå§ãããŸããã ãã®å 容ã¯éåžžã«å€§ããç°ãªãå¯èœæ§ããããŸãïŒåšæ³¢æ°ã¯MHzãŸãã¯GHzã§ç€ºãããšãã§ããŸãïŒãã ããå®éã«ã¯åçãã¥ãŒãã³ã°ã«ããå®å šã«ç°ãªãå ŽåããããŸãïŒãã¹ããŒã¹ã¯äœçœ®ãå€æŽã§ããã·ãã¥ã¬ãŒã¿ãŒãŸãã¯ä»®æ³ãã·ã³ã¯ããã«äœã§ã代çšã§ããŸãã ãã©ã³ãæååããã®ãã¹ãŠã®æ å ±ã¯ãããä¿¡é Œæ§ã®é«ãæ¹æ³ã§ããã°ã©ã ã§èŠã€ããããšãã§ããŸãã
ãã£ãã·ã¥
ã¿ã€ããéã容éããžãªã¡ããªãã³ã¢éã®åé¢å¯èœæ§ãªã©ã®ãã£ãã·ã¥ã«é¢ããæ å ±ã¯ãBLASã©ã€ãã©ãªïŒåºæ¬ç·åœ¢ä»£æ°ã·ã¹ãã ïŒãªã©ã®é«æ§èœæ°åŠãœãããŠã§ã¢ã®ãã¥ãŒãã³ã°ã«åœ¹ç«ã¡ãŸãã
åœåããã£ãã·ã¥ã®æ§æã¯ã·ãŒã2ã§èª¬æãããŠããŸããã ãã®äžã®æ å ±ããšã³ã³ãŒãããããã®ãã©ãŒãããã¯ãæãæè»ã§ã¯ãªããå°æ¥çã«ã¯ãããã€ãã®ã¬ãã«ã®ãã£ãã·ã¥ã®ããªã¥ãŒã ãšæ§æã®çµ¶ãéãªãå€æŽããµããŒãããããšãã§ããŸããã§ããã çŸåšãã·ãŒã2ã®æ å ±ã®äœ¿çšã¯æšå¥šãããŠããŸããã0xFF-kiãååšããå ŽåããããŸãã
ã·ãŒã0x80000006ãæ¡åŒµç¯å²å ã«ãããšããäºå®ããå€æãããšïŒãŸã ææžã«ãã蚌æ ãèŠã€ãã£ãŠããªããã©ããã¯ããããŸãããïŒãIntelã«ãã£ãŠè¿œå ãããããã§ã¯ãããŸããã ããã䜿çšããŠããœãããŠã§ã¢éçºè ãå¿ èŠãšãããã£ãã·ã¥ã®æ§é ã«é¢ããããŒã¿ãã·ãŒã2ã®æ å ±ã«è¿œå ããè©Šã¿ãè¡ãããŸããã åæã«ãåã³ãæé·ã®ããã®ã¹ããŒã¹ãæäŸããæå³ã¯ãããŸããã§ããã
ã·ãŒã4ã¯ããã£ãã·ã¥ããŒã¿ã®ææ°ãã€æãæè»ãªè¡šçŸã§ãã ãã®äŸ¡æ Œã¯ãECLãšã³ã³ãŒããµãã·ãŒãã®æŠå¿µãè¿œå ãããã®ã§ãã åãµããªã¹ãã¯ãããŒã¿ãã³ãŒãããŸãã¯çµåããã1ã€ã®ãã£ãã·ã¥ãèšè¿°ãããã®ã¬ãã«ã容éãªã©ã決å®ããŸãã 4æç®ã®ã·ãŒãã¯é·æéç¶ããŸããïŒ
ããããžãŒ
ããã§èšããããããžããšã¯ããã¡ããæ°åŠã®ã»ã¯ã·ã§ã³ã§ã¯ãªããçŸåšã®ããã»ããµã«ãããåã ã®ã³ã¢ãšãã€ããŒã¹ã¬ããïŒIntel HyperThreadingããµããŒããããŠããå ŽåïŒã®çžå¯Ÿçãªäœçœ®ã«é¢ããæ å ±ãæå³ããŸãã ææ°ã®IntelãµãŒããŒããã»ããµã§ã¯ã次ã®éå±€ã¬ãã«ãåºå¥ãããŸãã
- SMTã¯ãã€ããŒã¹ããªãŒã ã®ã¬ãã«ã§ãããåã ã®ã¢ãŒããã¯ãã£ç¶æ ïŒã¬ãžã¹ã¿ïŒãå«ããšã³ãã£ãã£ã§ãããã¢ã¯ãã¥ãšãŒã¿ãä»ã®ã¹ããªãŒã ïŒ1ã€ã®ã³ã¢ã®äžéšïŒããåé¢ããå¯èœæ§ããããŸãã
- ã³ã¢ïŒã³ã¢ïŒ-ã³ã³ãã¥ãŒãã£ã³ã°ããã€ã¹ïŒå ç®åšãä¹ç®åšãªã©ïŒã®åã ã®ã»ãããå«ããšã³ãã£ãã£ã 1ã€ã®ã³ã¢ã«ã¯ã1ã€ã2ã€ïŒãã€ããŒã¹ã¬ããã£ã³ã°ãåããCPUã®å ŽåïŒãŸãã¯4ã€ïŒXeon Phiã®å ŽåïŒã®ãã€ããŒã¹ã¬ãããå«ããããšãã§ããŸãã
- ããã±ãŒãžïŒããã±ãŒãžïŒã¯ãã¹ãã¢ã§è³Œå ¥ããããã¶ãŒããŒãã®ãœã±ããïŒãœã±ããïŒã«æ¿å ¥ãããããŒããŠã§ã¢ã§ãã å°ãªããšã1ã€ã®ã³ã¢ããããŸãã ãã«ãããã»ããµãµãŒããŒã·ã¹ãã ã¯ãè€æ°ã®ããã±ãŒãžãæã€ããšãã§ããŸãã
ãè«çããã»ããµãã®æŠå¿µã¯ãã·ã¹ãã ã«ååšããæäœã¬ãã«ã«å¯Ÿå¿ããŠããŸãã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãèªèããã®ã¯ãããã§ãã ãããã®éã®ããã»ã¹ç§»è¡ã®ã³ã¹ããããŒã¿è»¢éã®é 延ããã£ãã·ã¥å¹æãNUMAã¡ã¢ãªæ§æãªã©ã¯ã2ã€ã®è«çããã»ããµãçžå¯Ÿçã§ãããã©ããïŒã€ãŸããããããåãã³ã¢ãŸãã¯ããã±ãŒãžã®äžéšã§ãããã©ããïŒã«äŸåããŸãã ãã®ãããããããžããŒã¿ãCPUIDã·ãŒã0xBãšãã®ãµãã·ãŒãã«å«ãŸããŠããŸãã
ããã«ãåšèŸºæ©åšãä»ã®ããã»ããµããå²ã蟌ã¿ãé ä¿¡ããã¿ã¹ã¯ã«å¯ŸåŠããããã«ãåè«çããã»ããµã«ã¯ããããæ©èœããããŸãã APIC ID-ã·ã¹ãã å ã®äžæã®çªå·ã ããããžã¯ããããã®æ°å€ãå€ãã®ã¢ã¯ãã£ããªååæ žã«çºè¡ãããæ³åŸã«åœ±é¿ãäžããŸãã ãããã¯åžžã«äžè²«ããŠããããã§ã¯ãããŸããã ããšãã°ããã€ããŒã¹ã¬ããã£ã³ã°ããªãã«ãªã£ãŠããã·ã¹ãã ã§ã¯ããã¹ãŠã®APIC IDãåçã«ãªããŸãã
ã¯ã©ã·ãã¯APIC IDã¯CPUID.1.EBX [31:24]ãã£ãŒã«ãã«ä¿åãããŸãã ããã¯8ãããã®ã¿ã§ãããããã«ããè«çããã»ããµã®æ°ã256ã«å¶éãããŸãããããã¯ãã¡ããçŸä»£ã®çŸå®ã§ã¯ååã§ã¯ãããŸããã ãã®ãããCPUID.0xB.EDX [31ïŒ0]ã«ä¿åãããŠããX2APIC IDãšããæ¡åŒµåããããŸãã ãããã®32ãããã¯ãããé·ãæéã«ããã£ãŠååã ãšæããŸãã
åè«çããã»ããµã®ã座æšãã¯ããã®ããã±ãŒãžã®ããããžã§äžæã§ãã ãã®ãããè€æ°ã®CPUIDã·ãŒããé£ç¶ããŠèªã¿åãã¹ã¬ããã«ã¢ãã£ããã£ãæäŸããããã«æ³šæããŠãã ãããããããªããšãç°ãªãã³ã¢ããå€ãååŸãããªã¹ã¯ãçããŸãã
ç·šéå¯èœãªãã£ãŒã«ã
ããããžã«åé¡ãã»ãšãã©ãªãå Žåã¯ãCPUIDããŒãã«ã®å 容èªäœãã·ã¹ãã æäœäžã«åçã«å€åããå¯èœæ§ãããããšãæ¥ãã§å ±åããŸãã ãã¡ããããã¹ãŠã®ãã£ãŒã«ããå€æŽã§ããããã§ã¯ãããŸããã ããã§ããBIOSèšå®ãããOSã䜿çšãããŠããCPUã®æ©èœã®äžéšãèŠããã©ããã«çŽæ¥åœ±é¿ãäžããããšãã§ããŸãã ãã®ãã¡ã®ããã€ãã ãããããŸãã
- CR4ã¬ãžã¹ã¿ã®ããã18ã¯CPUID.1ïŒECX.OSXSAVE [27]ã«åœ±é¿ããXSAVEåœä»€ã®ãµããŒãã瀺ããŸãã
- IA32_MISC_ENABLEã¬ãžã¹ã¿ãã£ãŒã«ãã¯ãããã€ãã®CPUIDãã£ãŒã«ãã«äžåºŠã«åœ±é¿ããŸããããã3-TM1ããã³TM2ãã£ãŒã«ããããã16-EISTãã£ãŒã«ããããã34-XDãã£ãŒã«ãïŒå®è¡ç¡å¹ïŒãªã©ã
- IA32_MISC_ENABLEã¬ãžã¹ã¿ã®ããã22ãå«ãããšãéåžžã3çªç®ããå€ãCPUIDããŒãã«ã®ãã¹ãŠã®ã·ãŒãããã«ãããªãããããŸãïŒæããã«ãããã¯Windows NT4ãšã®äºææ§ã®ããã«è¡ãããŸããã
éå€
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãCPUIDããŒã ã®æŽå²ãšä»äºã«é¢é£ããä»ã®èå³æ·±ãç¹ãéããŸããã
ããã»ããµãŒã®ã·ãªã¢ã«çªå·
Pentium IIIã®å®è¡äžãåããã»ããµã¯CPUID.3.ECXããã³CPUID.3.EDXã«å«ãŸããäžæã®ã·ãªã¢ã«çªå·ãåãåããŸãã[7]ã ãã®ãããªæ©èœããã³ããŒããã®ãœãããŠã§ã¢ä¿è·ã®ããŒãºã«ã©ã®ããã«åœ¹ç«ã€ãã¯å®¹æã«æ³åã§ããŸãã ãããã1999幎ã«æ¬§å·å ±åäœã¯ ããã®ãããªæ©èœããã®ãããªã·ã¹ãã ã®ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãæãªãããšãåççã«æããŠæè°ããŸãã ã ãã§ã«Intel Pentium IVã§ã·ãªã¢ã«çªå·ãåé€ãããã·ãŒã3ã¯ãŒããè¿ããŸãã
ãã³ããŒãšCPUID
éåžžã«èå³æ·±ãè¡š[5]ã¯ãç°ãªããã³ããŒãCPUIDã®ç°ãªãã·ãŒãã«ä¿åããïŒãŸãã¯éå»ã«ä¿åããïŒãã®ã瀺ããŠããŸãã ããšãã°ãAMD K8ããã»ããµãæååIT'S HAMMER TIMEãè¿ããç¹å®ã®ãã¹ããªãŒã¬ãã«0x8fffffffãèšè¿°ãããŠããŸãã
ISAãŠã©ãŒãºã®Agner Fog
IA-32åœä»€ã»ããã®æ¡åŒµã®æŽå²ã¯ãããã€ãã®äŒæ¥éã®ç«¶äºãèæ¯ã«ããŠããŸã[4]ã æ°ããåœä»€ãè¿œå ããããšã¯åžžã«CPUIDã«åœ±é¿ãåãŒããåžžã«æ£ããå®è¡ããæ¹æ³ã«ã€ããŠå šå¡ãåæã§ãããšã¯éããŸããã
圌ãã¯CPUIDãå°ç¡ãã«ããŸããïŒ IA32_BIOS_SIGN_ID
CPUIDåœä»€ã¯ããã®ç°¡æœãªã€ã³ã¿ãŒãã§ã€ã¹ãšé©ãããªããããåžžã«æ°ã«å ¥ã£ãŠããŸãããå ¥åã«1ã€ã®ã¬ãžã¹ã¿ãåºåã«4ã€ã®ã¬ãžã¹ã¿ããããŸãã ãã®åäœã«ã¯äŸå€ããªããã¡ã¢ãªã¢ã¯ã»ã¹ãããã©ã°ã¬ãžã¹ã¿ã®èªã¿åã/å€æŽããããŸããããã¬ãã£ãã¯ã¹ã®åœ±é¿ãåããããã¹ãŠã®ããã»ããµã¢ãŒãã§åäœããŸãã IAC-32 CISCåç©åãšæ¯èŒãããšãã»ãŒçæ³çã§ããã
...ã·ãŒããšã·ãŒãããšã³ã³ãŒãããã«ã¯ãå ¥åçšã«2ã€ã®ã¬ãžã¹ã¿ããã¡ã€ã«ããå¿ èŠãããããšãå€æãããŸã§ã ããŠãããŸãè¯ããããŸããã ããŠãå°ãªããšãåºåã¬ãžã¹ã¿ã¯äºåã«ç¥ãããŠãããåžžã«å€æŽãããŸã...
ãããŠã æã«ã¯ CPUIDãå¥ã®ã¬ãžã¹ã¿ïŒIA32_BIOS_SIGN_IDïŒãå€æŽããçŸåšã®ããã»ããµãã€ã¯ãã³ãŒãããã°ã©ã ã®çœ²åããã®äžã«ä¿åããããšãå€æããŸããã ããã¯ãããã»ããµã®ãã¡ãŒã ãŠã§ã¢ã以åã«æŽæ°ãããå Žåã«çºçããŸãã äœããã®çç±ã§ããã®æé ã«é¢ããæ å ±ã¯ããã¥ã¢ã«[1]ã«èšèŒãããŠããããã«åããŒãžã«æ£ãã°ã£ãŠãããããéåžžã«é·ãéç§ãé¿ããŠããŸããã
CPUIDãèªã¿åãããã®ãœãããŠã§ã¢
ä»ã®ããã€ãã®ã¢ãŒããã¯ãã£ãšã¯ç°ãªããIA-32ã§ã¯CPUIDåœä»€ã¯ç¹æš©ããããŸããã OSã«ãŒãã«ã ãã§ãªãããŠãŒã¶ãŒãœãããŠã§ã¢ã«ãã£ãŠå®è¡ã§ããŸãã ãããã£ãŠãéåžžã®ããã°ã©ã ã¯ãCPUãå®è¡ããæ©èœãèªç±ã«æ¢çŽ¢ã§ããŸãã ãã¡ãããçŽãããããã€ããªæ å ±CPUIDã人éã«åªãã圢åŒã§è¡šãããã«ãå€ãã®ããŒã«ãäœæãããŠããŸãã ããã«ããã€ããªã¹ãããŸãã
- CPU-Z www.cpuid.com/softwares/cpu-z.html Windowsçšã®éåžžã«äººæ°ã®ããèå¥ã¢ããªã±ãŒã·ã§ã³ã ç§ã®å¥œã¿ã«åãããŠãããŸãã«ãç°¡æœã
- CPUIDãšã¯ã¹ãããŒã©ãŒã www.flounder.com/cpuid_explorer2.htm ãã詳现ã§ããããã£ãŠWindowsçšã®äŸ¿å©ãªã¢ããªã±ãŒã·ã§ã³ã æ®å¿µãªãããé·ãéæŽæ°ãããŠããªããããææ°ã®CPUIDãã£ãŒã«ãã«ã€ããŠã¯ç¥ããŸããã ã¡ãªã¿ã«ãããã¯ãã®ã¿ã€ãã®ãã¹ãŠã®ããã°ã©ã ã«å ±éã®åé¡ã§ã-ãããã¯éåžžã«æ©ãå»æ¢ãããŸãã
- Windowsçšã€ã³ãã«Â®ããã»ããµãŒèå¥ãŠãŒãã£ãªãã£ãŒïŒ www.intel.com/support/processors/tools/piu/sb/CS-014921.htm ãã ããIntelã®å ¬åŒã¢ããªã±ãŒã·ã§ã³ã¯ããŸãèœåããããŸããã
- Intel Open-source Technology Centerã®msr-toolsïŒ 01.org/msr-tools CPUIDå€ãšMSRã¬ãžã¹ã¿ãååŸããããã®ããã°ã©ã ã ç§ãç解ã§ããªãçç±ã®ããã«ãCPUIDãèªã¿åãã«ã¯ã«ãŒãæš©éãå¿ èŠã§ãã ããã«ãåœä»€ãçŽæ¥åŒã³åºã代ããã«ãæãä¿¡é Œæ§ã®é«ãLinuxã«ãŒãã«ã€ã³ã¿ãŒãã§ã€ã¹ã¯äœ¿çšãããŸããã
- Linuxçšã®å¥ã®cpuidïŒ www.etallen.com/cpuid.html ç§ãèŠã€ããããšãã§ããæé«ã®ãµã³ãã«ã ãã¹ãŠã®è«çããã»ããµäžã®ãã¹ãŠã®ãã©ã°ã«é¢ãã詳现æ å ±ãåºåããŸãã
- ç§ã¯èªåã®èªè»¢è»ggg-cpuid [6]ãæžãå§ããŸããã ä»ã®ã¢ããªã±ãŒã·ã§ã³ãšã¯ç°ãªããç§ã®ãããžã§ã¯ãã®ç®æšã¯ãIA-32ã ãã§ãªããããŸããŸãªã¢ãŒããã¯ãã£ã®ããã»ããµã§èå¥æ å ±ãåéã§ããããã«ããããšã§ãã IA-32ãIA-64ãããã³ARMã§åäœããããã«ãªããŸããã å¯èœãªéããæéã®ãããšããã§ãããŸããŸãªã·ã¹ãã ãè¿œå ããŸãã
æåŠ
- Intel Corporationã ã€ã³ãã«Â®64ããã³IA-32ã¢ãŒããã¯ãã£ãŒãœãããŠã§ã¢éçºè ããã¥ã¢ã«ã ããªã¥ãŒã 1ã3ã2014ãwww.intel.com / content / www / us / en / processors / architectures-software-developer-manuals.html
- ãããŒãã»Rã»ã³ãªã³ãºã CPUIDã¢ã«ãŽãªãºã ã®æŠäºã å士 Dobbs Journalã1996幎11æãwww.drdobbs.com/ database / cpuid-algorithm-wars / 184410005
- ã€ã³ãã«Â®ã¢ãŒããã¯ãã£ãŒåœä»€ã»ããæ¡åŒµããã°ã©ãã³ã°åç §ã software.intel.com/en-us/intel-isa-extensions
- ã¢ã°ããŒã»ãã©ã°ã åœä»€ã»ããã®æŠäºãåæ¢ããŸãã Agnerã®CPUããã°ã www.agner.org/optimize/blog/read.php?i=25
- x86ã¢ãŒããã¯ãã£ã®CPUIDã sandpile.org/x86/cpuid.htm
- ã°ãªãŽãªãŒã»ã¬ãã¹ããã Intel IA-32ãIA-64ãããã³ãã®ä»ã®ã·ã¹ãã çšã®CPUèå¥ããŒã«ã®ã»ããã github.com/grigory-rechistov/ggg-cpuid
- Intelããã»ããµã®èå¥ãšCPUIDåœä»€ã AP-485ã¢ããªã±ãŒã·ã§ã³ããŒãã1999幎ãnetwinder.osuosl.org/ pub / misc / docs / i386 / 24161812.pdf