ã¯ããã«
ããã«ã¡ã¯ã仿¥ã¯æ®éã®ããã°ã©ããŒã«ã¯ã»ãšãã©ç¥ãããŠããªãããªãåçŽãªãããã¯ã«è§ŠããããšæããŸãããçãããããããããããããã䜿çšããã§ãããã
察称åãã«ãããã»ãã·ã³ã°ïŒäžè¬çã«ã¯-SMPïŒ-ãã¹ãŠã®ãã«ãã¿ã¹ã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«èŠãããã¢ãŒããã¯ãã£ã§ããããã¡ãããããã¯äžå¯æ¬ ãªéšåã§ãã ããã»ããµã®ã³ã¢ãå€ããªãã°ãªãã»ã©ãããã»ããµã¯ãã匷åã«ãªãããšã¯èª°ããç¥ã£ãŠããŸãããããã§ãããOSã¯åæã«è€æ°ã®ã³ã¢ãã©ã®ããã«äœ¿çšã§ããŸããïŒ äžéšã®ããã°ã©ããŒã¯ããã®ã¬ãã«ã®æœè±¡åã«ã¯è³ããŸãã-圌ãã¯åã«ãããå¿
èŠãšããŸãããã誰ããSMPã®ä»çµã¿ã«èå³ããããšæããŸãã
ãã«ãã¿ã¹ã¯ãšãã®å®è£
ã³ã³ãã¥ãŒã¿ã¢ãŒããã¯ãã£ãç ç©¶ããããšããã人ã¯ãããã»ããµèªäœãäžåºŠã«è€æ°ã®ã¿ã¹ã¯ãå®è¡ã§ããªãããšãç¥ã£ãŠããŸãããã«ãã¿ã¹ã¯ã§ã¯ããããã®ã¿ã¹ã¯ãåãæ¿ããOSã®ã¿ãæäŸãããŸãã ãã«ãã¿ã¹ã¯ã«ã¯ããã€ãã®çš®é¡ããããŸãããæãé©åã§äŸ¿å©ã§åºã䜿çšãããŠããã®ã¯ããã«ãã¿ã¹ã¯ãæ··éãããããšã§ãïŒãŠã£ãããã£ã¢ã§ãã®äž»ãªåŽé¢ãèªãããšãã§ããŸãïŒã ããã¯ãåããã»ã¹ïŒã¿ã¹ã¯ïŒãç¬èªã®åªå
床ãæã£ãŠãããšããäºå®ã«åºã¥ããŠããããã®åªå
床ã¯ãããã«å²ãåœãŠãããããã»ããµæéã®éã«åœ±é¿ããŸãã åã¿ã¹ã¯ã«ã¯1ã€ã®ã¿ã€ã ã¹ã©ã€ã¹ãäžãããããã®éã«ããã»ã¹ãäœããå®è¡ããŸã;ã¿ã€ã ã¹ã©ã€ã¹ãæéåãã«ãªããšãOSã¯å¥ã®ã¿ã¹ã¯ã«å¶åŸ¡ãæž¡ããŸãã 質åãçºçããŸã-ã¡ã¢ãªãããã€ã¹ãªã©ã®ã³ã³ãã¥ãŒã¿ãŒãªãœãŒã¹ãé
åžããæ¹æ³ã ããã»ã¹éïŒ ãã¹ãŠãéåžžã«ç°¡åã§ããWindowsã¯ããèªäœãè¡ããLinuxã¯ã»ããã©ã·ã¹ãã ã䜿çšããŸãã ãã ãã1ã€ã®ã³ã¢ã¯æ·±å»ã§ã¯ãããŸããã
å²ã蟌ã¿ãšPIC
ããããããã¯ãã¥ãŒã¹ã«ãªããŸãããäžéšã¯ããã§ã¯ãããŸããããi386ã¢ãŒããã¯ãã£ïŒx86ã¢ãŒããã¯ãã£ã«ã€ããŠã¯èª¬æããŸãããARMã¯èæ
®ããŸããã ïŒäžéšã®ãµãŒãã¹ãŸãã¯åžžé§ããã°ã©ã ãäœæããã¬ãã«ã§ãïŒãOSãŸãã¯ããã°ã©ã ã«ã€ãã³ããéç¥ããããã«ãå²ã蟌ã¿ïŒããŒããŠã§ã¢å²ã蟌ã¿ãIRQã«ã€ããŠã®ã¿èª¬æããŸãïŒã䜿çšããŸãã ããšãã°ãPITã«ãã£ãŠåŒã³åºãããå²ã蟌ã¿0x8ïŒPICã®æ§ææ¹æ³ã«å¿ããŠãããšãã°0x20ãªã©ã®ä¿è·ã¢ãŒããšãã³ã°ã¢ãŒãã®å ŽåïŒããããŸããããã¯ãããšãã°ãå¿
èŠãªé »åºŠã§å²ã蟌ã¿ãçæã§ããŸãã æ¬¡ã«ãã¿ã€ã ã¹ã©ã€ã¹ã®é
åžã«å¯ŸããOSã®åäœã0ã«æžããå²ã蟌ã¿ãåŒã³åºããããšããã°ã©ã ã忢ããããšãã°ã«ãŒãã«ã«å¶åŸ¡ãäžããããçŸåšã®ããã°ã©ã ããŒã¿ïŒã¬ãžã¹ã¿ããã©ã°ãªã©ïŒãä¿åãããæ¬¡ã®ããã»ã¹ã«å¶åŸ¡ãäžããããŸãã
ãããããåç¥ã®ããã«ãå²ã蟌ã¿ãšã¯ãããæç¹ã§ãæ©åšãŸãã¯ããã°ã©ã èªäœã«ãã£ãŠåŒã³åºããã颿°ïŒãŸãã¯ããã·ãŒãžã£ïŒã§ãã åèšã§ãããã»ããµã¯2ã€ã®PICã§16ã®å²ã蟌ã¿ããµããŒãããŸãã ããã»ããµã«ã¯ãã©ã°ãããããã®ãã¡ã®1ã€ã¯ãIããã©ã°-å²ã蟌ã¿å¶åŸ¡ã§ãã ãã®ãã©ã°ã0ã«èšå®ãããšãããã»ããµã¯ããŒããŠã§ã¢ã®äžæãåŒãèµ·ãããŸããã ãã ãããããIã0ã«èšå®ãããŠããå Žåã§ããããããNMIïŒãã¹ã¯äžå¯èœãªå²ã蟌ã¿ïŒãååšããããšã«æ³šæããŠãã ãããPICããã°ã©ãã³ã°ã䜿çšãããšãå²ã蟌ã¿ããŒã¿ãç¡å¹ã«ã§ããŸãã IRET-圌ãã¯åã³çŠæ¢ãããŸããã éåžžã®ããã°ã©ã ã®äžã§ã¯ãå²ã蟌ã¿åŒã³åºãã远跡ã§ããªãããšã«æ³šæããŠãã ãã-ããã°ã©ã ã¯åæ¢ããŠãã°ããããŠããåéããŸãããããã°ã©ã ã¯æ°ã¥ãããããŸããïŒã¯ããå²ã蟌ã¿ãåŒã³åºãããããšã確èªã§ããŸã-ãªãã§ããïŒ
PIC-ããã°ã©ããã«å²ã蟌ã¿ã³ã³ãããŒã©ãŒ
ãŠã£ãããïŒ
ååãšããŠãããã¯ããã»ããµèªäœãŸãã¯ãã®ãã¬ãŒã ã®è€éãªãããã®äžéšãšããŠäœæãããé»åããã€ã¹ã§ããããã®å
¥åã¯ããŸããŸãªããã€ã¹ã®å¯Ÿå¿ããåºåã«é»æ°çã«æ¥ç¶ãããŸãã å²ã蟌ã¿ã³ã³ãããŒã©ã®å
¥åçªå·ã¯ãIRQãã§ç€ºãããŸãã ãã®çªå·ã¯ãå²ã蟌ã¿åªå
é äœãšãå²ã蟌ã¿ãã¯ãã«ã®ããŒãã«ïŒINTïŒãžã®ãšã³ããªã®çªå·ãšãåºå¥ããå¿
èŠããããŸãã ãã®ãããããšãã°ãããã»ããµã®ãªã¢ã«ã¢ãŒãïŒMS-DOSã¯ãã®ã¢ãŒãã§åäœïŒã®IBM PCã§ã¯ãæšæºããŒããŒãããã®å²ã蟌ã¿ã¯IRQ 1ãšINT 9ã䜿çšããŸãã
å
ã®IBM PCãã©ãããã©ãŒã ã¯ãéåžžã«åçŽãªå²ã蟌ã¿ã¹ããŒã ã䜿çšããŠããŸãã å²ã蟌ã¿ã³ã³ãããŒã©ãŒã¯ãç°ãªãããã€ã¹ã®ä¿¡å·ãé çªã«ç¹°ãè¿ãããæ°ããå²ã蟌ã¿ãèŠã€ãã£ããšãã«æåã«ãªã»ãããããåçŽãªã«ãŠã³ã¿ãŒã§ãã åè
ã®å Žåãããã€ã¹ã®åªå
床ã¯çãããåŸè
ã®å Žåãã·ãªã¢ã«çªå·ãå°ããïŒãŸãã¯ã«ãŠã³ãã倧ããïŒããã€ã¹ã®åªå
床ãé«ããªããŸãã
ãæ¿ç¥ã®ãšãããããã¯ããã€ã¹ãå²ã蟌ã¿èŠæ±ãéä¿¡ã§ããããã«ããé»ååè·¯ã§ãããéåžžã¯æ£ç¢ºã«2ã€ãããŸãã
ããã§ã¯ãèšäºã®ãããã¯ã«ç§»ããŸãããã
SMP
ãã®æšæºãå®è£
ããããã«ãæ°ããã¹ããŒã ããã¶ãŒããŒãã«è¿œå ããå§ããŸããïŒAPICãšACPIã æåã®è©±ãããŸãããã
APIC-é«åºŠãªããã°ã©ããã«å²ã蟌ã¿ã³ã³ãããŒã©ãŒãPICã®æ¹è¯ããŒãžã§ã³ã ãã«ãããã»ããµã·ã¹ãã ã§äœ¿çšããããã¹ãŠã®ææ°ã®Intelããã»ããµã®äžå¯æ¬ ãªéšåã§ãïŒããã³äºææ§ããããŸãïŒã APICã¯ãè€éãªå²ã蟌ã¿è»¢éããã³ããã»ããµéã®å²ã蟌ã¿éä¿¡ã«äœ¿çšãããŸãã ãããã®ããšã¯ãå€ãPIC仿§ã§ã¯äžå¯èœã§ããã
ããŒã«ã«APICããã³IO APIC
APICããŒã¹ã®ã·ã¹ãã ã§ã¯ãåããã»ããµã¯ãã³ã¢ããšãããŒã«ã«APICãã§æ§æãããŠããŸãã ããŒã«ã«APICã¯ãããã»ããµåºæã®å²ãèŸŒã¿æ§æãåŠçããŸãã ãšãããããå
éšã¯ããã¯ãããã®ä»ã®ãããŒã«ã«ãå²ã蟌ã¿ãœãŒã¹ãªã©ã®ã€ãã³ããå²ã蟌ã¿ãã¯ãã«ã«å€æããããŒã«ã«ãã¯ã¿ãŒããŒãã«ïŒLVTïŒãå«ãŸããŠããŸãïŒããšãã°ãé£çµ¡å
LocalINT1ã¯NMIäŸå€ãçºçããã 2â察å¿ããLVTå
¥åã«ïŒã
ããŒã«ã«APICã®è©³çްã«ã€ããŠã¯ãææ°ã®Intelããã»ããµã®ãã·ã¹ãã ããã°ã©ãã³ã°ã¬ã€ãããåç
§ããŠãã ããã
ããã«ãAPIC IOïŒããšãã°ãIntel 82093AAïŒããããŸããããã¯ããããã»ããã®äžéšã§ããããã¹ãŠã®ããã»ããµã®éçããã³åç察称å²ã蟌ã¿ã®äž¡æ¹ãå«ããã«ãããã»ããµå²ã蟌ã¿å¶åŸ¡ãæäŸããŸãã è€æ°ã®I / Oãµãã·ã¹ãã ãæã€ã·ã¹ãã ã§ã¯ãåãµãã·ã¹ãã ãç¬èªã®å²ã蟌ã¿ã»ãããæã€ããšãã§ããŸãã
åå²ã蟌ã¿ãã³ã¯ããšããžãŸãã¯ã¬ãã«ããªã¬ãŒãšããŠåå¥ã«ããã°ã©ã ãããŸãã å²ã蟌ã¿ãã¯ãã«ãšå²ã蟌ã¿å¶åŸ¡æ
å ±ã¯ãå²ã蟌ã¿ããšã«æå®ã§ããŸãã 鿥çãªã¬ãžã¹ã¿ã¢ã¯ã»ã¹ã¹ããŒã ã¯ãå
éšAPIC I / Oã¬ãžã¹ã¿ã«ã¢ã¯ã»ã¹ããããã«å¿
èŠãªã¡ã¢ãªç©ºéãæé©åããŸãã ã¡ã¢ãªç©ºéãå²ãåœãŠãéã®ã·ã¹ãã ã®æè»æ§ãé«ããããã«ã2ã€ã®APIC I / Oã¬ãžã¹ã¿ã¯åé
眮å¯èœã§ãããããã©ã«ãã¯0xFEC00000ã§ãã
ãããŒã«ã«ãAPICã®åæå
ããŒã«ã«APICã¯ããŒãæã«ã¢ã¯ãã£ãã«ãªããããã11 IA32_APIC_BASEïŒMSRïŒããªã»ããããããšã§ç¡å¹ã«ã§ããŸãïŒããã¯ãPentiumã«ãã®ãããªMSRããªãããããã¡ããªã5ãè¶
ããããã»ããµã§ã®ã¿æ©èœããŸãïŒã次ã«ãããã»ããµã¯äºææ§ã®ãã8259 PICããå²ã蟌ã¿ãåãåããŸãã ãã ããIntelã®ãœãããŠã§ã¢éçºã¬ã€ãã«ã¯ãIA32_APIC_BASEãä»ããŠããŒã«ã«APICãç¡å¹ã«ããåŸãå®å
šã«ãªã»ããããããŸã§æå¹ã«ã§ããªãããšãèšèŒãããŠããŸãã APO IOã¯ã8259ããã€ã¹ããšãã¥ã¬ãŒãããããã«ã¬ã¬ã·ãŒã¢ãŒãã§åäœããããã«æ§æããããšãã§ããŸãã
ããŒã«ã«APICã¬ãžã¹ã¿ã¯ãç©çããŒãžFEE00xxxã«ããããããŸãïŒè¡š8-1 Intel P4 SPGãåç
§ïŒã ãã®ã¢ãã¬ã¹ã¯ãæ§æå
ã«ååšããåããŒã«ã«APICã§åãã§ããã€ãŸããçŸåšã³ãŒããå®è¡ãããŠããããŒã«ã«APICã«ãŒãã«ã®ã¬ãžã¹ã¿ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã å®éã®APICããŒã¹ãå®çŸ©ããMSRãããããšã«æ³šæããŠãã ããïŒãã¡ããªã5ãè¶
ããããã»ããµã§ã®ã¿äœ¿çšå¯èœïŒã MADTã«ã¯ããŒã«ã«APICããŒã¹ãå«ãŸããŸãã64ãããã·ã¹ãã ã§ã¯ãããŒã¹ã¢ãã¬ã¹ã®64ãããåå®çŸ©ãæå®ãããã£ãŒã«ããå«ãŸããå Žåãããã代ããã«äœ¿çšããå¿
èŠããããŸãã ããŒã«ã«APICããŒã¹ã¯ãèŠã€ããå Žæã ãã«æ®ãããšãã奜ããªå Žæã«ç§»åããããšãã§ããŸãã æ³šïŒ4 GBã®RAMãè¶
ããŠç§»åã§ãããšã¯æããªãã
ããŒã«ã«APICãå²ã蟌ã¿ãåä¿¡ã§ããããã«ããã«ã¯ãã¹ããªã¢ã¹å²ã蟌ã¿ãã¯ãã«ã¬ãžã¹ã¿ãæ§æããå¿
èŠããããŸãã ãã®ãã£ãŒã«ãã®æ£ããå€ã¯ãäžäœ8ãããã®åœå²ã蟌ã¿ã«ãããããIRQçªå·ã§ããã8ãããç®ã1ã«èšå®ããŠAPICãå®éã«æå¹ã«ããŸãïŒè©³çްã«ã€ããŠã¯ä»æ§ãåç
§ïŒã äžäœ4ããããèšå®ãããŠããå²ã蟌ã¿çªå·ãéžæããå¿
èŠããããŸãã æãç°¡åãªæ¹æ³ã¯0xFFã䜿çšããããšã§ãã äžéšã®å€ãããã»ããµã§ã¯ããããã®å€ã®äžäœ4ãããã1ã«èšå®ããå¿
èŠããããããããã¯éèŠã§ãã
8259 PICãæ£ããç¡å¹ã«ããŸãã ããã¯ãAPICã®æ§æãšã»ãŒåããããéèŠã§ãã ããã¯2ã€ã®ã¹ãããã§è¡ããŸãããã¹ãŠã®å²ã蟌ã¿ããã¹ã¯ããIRQãåå²ãåœãŠããŸãã ãã¹ãŠã®å²ã蟌ã¿ããã¹ã¯ãããšãPICã§ããããç¡å¹ã«ãªããŸãã å²ã蟌ã¿ã®åãããã³ã°ã¯ãããããPICã䜿çšãããšãã«æ¢ã«è¡ã£ãããšã§ããäŸå€ãšã®ç«¶åãé¿ããããã«ãå²ã蟌ã¿èŠæ±ã0ã§ã¯ãªã32ã§éå§ããå¿
èŠããããŸããæåã®32åã®å²ã蟌ã¿ã¯äŸå€ã§ãïŒã 次ã«ããããã®å²ã蟌ã¿ãã¯ãã«ãä»ã®ç®çã«äœ¿çšããªãã§ãã ããã ããã¯ããã¹ãŠã®PICå²ã蟌ã¿ããã¹ã¯ããã«ããããããã誀ã£ãå²ã蟌ã¿ãã¹ããŒããå¯èœæ§ããããã«ãŒãã«ã§äŸå€ãšããŠèª€ã£ãŠåŠçãããå¯èœæ§ãããããã§ãã
SMPã«ç§»ããŸãããã
察称ãã«ãã¿ã¹ã¯ïŒåæå
èµ·åã·ãŒã±ã³ã¹ã¯ãCPUã«ãã£ãŠç°ãªããŸãã ã€ã³ãã«ããã°ã©ããŒãºã¬ã€ãïŒç¬¬7.5.4é
ïŒã«ã¯ãã€ã³ãã«Xeonããã»ããµãŒçšã®åæåãããã³ã«ãå«ãŸããŠãããå€ãããã»ããµãŒã«ã€ããŠã¯èª¬æããŠããŸããã äžè¬çãªããã¹ãŠã®ããã»ããµã¿ã€ããã¢ã«ãŽãªãºã ã«ã€ããŠã¯ãIntel Multiprocessor Specificationãåç
§ããŠãã ããã
80486ã®å ŽåïŒå€éšAPIC 8249DXã䜿çšïŒãIPIT INITã«ç¶ããŠIPIãINITã¬ãã«ã®ã¢ãµãŒãè§£é€ããSIPIãªãã§äœ¿çšããå¿
èŠããããŸãã ã€ãŸããã³ãŒãã®å®è¡ãéå§ããå ŽæïŒSIPIã®ãã¯ãã«éšåïŒãäŒããããšãã§ãããåžžã«BIOSã³ãŒãã®å®è¡ãéå§ããŸãã ãã®å ŽåãBIOSãjmp farã[0ïŒ0x0469]ãå®è¡ããããã«ãCMOS BIOSãªã»ããå€ãããã¡ãŒãžã£ã³ãã§ãŠã©ãŒã ã¹ã¿ãŒããã«èšå®ïŒã€ãŸããCMOS 0x0Fã10ã«èšå®ïŒããŠãããã»ã°ã¡ã³ããšãªãã»ãããèšå®ããŸãAPãšã³ããªãã€ã³ãã¯0x0469ã§ãã
ãINITã¬ãã«ã®ã¢ãµãŒãè§£é€ãIPIã¯æ°ããããã»ããµïŒPentium 4ããã³Intel XeonïŒã§ã¯ãµããŒããããŠãããããããã®ããã»ããµã§ã¯AFAIKã¯å®å
šã«ç¡èŠãããŸãã
æ°ããããã»ããµïŒP6ãPentium 4ïŒã§ã¯1ã€ã®SIPIã§ååã§ãããå€ãIntelããã»ããµïŒPentiumïŒãŸãã¯ä»ã®ã¡ãŒã«ãŒã®ããã»ããµã«2çªç®ã®SIPIãå¿
èŠãã©ããã¯ããããŸããã ãŸããæåã®SIPIïŒãã¹ãã€ãºãªã©ïŒã®é
ä¿¡ã«å€±æããå Žåã«ã2çªç®ã®SIPIãååšããå¯èœæ§ããããŸãã
éåžžãæåã®SIPIãéä¿¡ããŠãããAPãå®è¡äžã®ããã»ããµã®æ°ãå¢ãããã©ããã確èªããŸãã æ°ããªç§ä»¥å
ã«ãã®ã«ãŠã³ã¿ãå¢å ããªãå Žåã2çªç®ã®SIPIãéä¿¡ããŸãã ããã¯äžè¬çãªIntelã¢ã«ãŽãªãºã ïŒSIPIéã§200ãã€ã¯ãç§ã®é
å»¶ãããïŒãšã¯ç°ãªããŸãããåæããŒãäžã«200ãã€ã¯ãç§ã®é
å»¶ãæ£ç¢ºã«æž¬å®ã§ããã¿ã€ã ãœãŒã¹ãèŠã€ããããšã¯ããã»ã©ç°¡åã§ã¯ãããŸããã ãŸããå®éã®ããŒããŠã§ã¢ã§ã¯ãSIPIéã®é
å»¶ãé·ãããå ŽåïŒãããŠç§ã®æ¹æ³ã䜿çšããŠããªãå ŽåïŒãã¡ã€ã³APãOSã®åæAPèµ·åã³ãŒãã2åå®è¡ã§ããããšãããããŸããïŒãã®å ŽåãOSã¯å®éã®2åã®ããã»ããµããããŸãïŒã
ãããã®ä¿¡å·ããã¹ã§ãããŒããã£ã¹ãããŠãååšããåããã€ã¹ãéå§ã§ããŸãã ãã ããç¹å¥ã«ç¡å¹ã«ãããããã»ããµããªã³ã«ããããšãã§ããŸãïŒãæ¬ é¥ãã§ããããïŒã
MTããŒãã«ã䜿çšããŠæ
å ±ãæ€çŽ¢ãã
ãã«ãããã»ãã·ã³ã°åãã®äžéšã®æ
å ±ïŒæ°ãããã·ã³ã§ã¯å©çšã§ããªãå ŽåããããŸãïŒã æåã«ãMPæµ®åãã€ã³ã¿ãŒæ§é ãèŠã€ããå¿
èŠããããŸãã 16ãã€ãã®å¢çã«é
眮ãããã_ MP_ããŸãã¯0x5F504D5Fã®å
é ã«çœ²åãå«ãŸããŠããŸãã OSã¯EBDAãBIOS ROMã¹ããŒã¹ãããã³ãããŒã¹ã¡ã¢ãªãã®æåŸã®ãããã€ãã調ã¹ãå¿
èŠããããŸãã ããŒã¹ã¡ã¢ãªã®ãµã€ãºã¯ããããã€ãåäœã®0x413ãã1 KBãåŒãã2ãã€ãã®å€ã§æå®ãããŸãã ããã¯æ§é ãã©ã®ããã«èŠãããã§ãïŒ
struct mp_floating_pointer_structure { char signature[4]; uint32_t configuration_table; uint8_t length;
ãã€ã³ã¿ã®ãããŒãã£ã³ã°æ§é ãæãæ§æããŒãã«ã¯æ¬¡ã®ãšããã§ãã
struct mp_configuration_table { char signature[4];
æ§æããŒãã«ã®åŸã«ã¯ãentry_countãšãããšã³ããªããããããã«ã¯ã·ã¹ãã ã«é¢ãã詳现æ
å ±ãå«ãŸãããã®åŸã«æ¡åŒµããŒãã«ãç¶ããŸãã ãšã³ããªã¯ãããã»ããµã衚ã20ãã€ãããŸãã¯ä»ã®äœãã衚ã8ãã€ãã§ãã APICããã»ããµãšI / Oã¬ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
struct entry_processor { uint8_t type;
IO APICãšã³ããªã¯æ¬¡ã®ãšããã§ãã
struct entry_io_apic { uint8_t type;
APICã䜿çšããŠæ
å ±ãæ€çŽ¢ãã
MAPIããŒãã«ïŒAPICïŒã¯ACPIã«ãããŸãã ãã®è¡šã«ã¯ãããŒã«ã«APICããªã¹ããããŠããããã®æ°ã¯ããã»ããµã®ã³ã¢ã®æ°ã«å¯Ÿå¿ããŠããå¿
èŠããããŸãã ãã®è¡šã®è©³çްã¯ããã«ã¯ãããŸããããã€ã³ã¿ãŒãããã§èŠã€ããããšãã§ããŸãã
APãèµ·å
æ
å ±ãåéããããPICãç¡å¹ã«ããAPIC I / Oã®æºåãããå¿
èŠããããŸãã ãŸããããŒã«ã«APICã®BSPãæ§æããå¿
èŠããããŸãã æ¬¡ã«ãSIPIã䜿çšããŠAPãèµ·åããŸãã
ã«ãŒãã«ãèµ·åããããã®ã³ãŒãïŒèµ·åæã«æå®ãããã¯ãã«ã¯ãéå§ã¢ãã¬ã¹ã瀺ãããšã«æ³šæããŠãã ããããã¯ãã«0x8-ã¢ãã¬ã¹0x8000ããã¯ãã«0x9-ã¢ãã¬ã¹0x9000ãªã©ã§ãã
[org 0x8000] AP: jmp short bsp ; - BSP xor ax,ax mov ss,ax mov sp, 0x7c00 xor ax,ax mov ds,ax ; Mark CPU as active lock inc byte [ds:g_activeCpuCount] ; , jmp zop bsp: xor ax,ax mov ds,ax mov dword[ds:g_activeCpuCount],0 mov dword[ds:g_activeCpuCount],0 mov word [ds:0x8000], 0x9090 ; JMP 2 NOP' ; ,
ä»ãããªããçè§£ããŠããããã«ãOSãå€ãã®ã³ã¢ã䜿çšããã«ã¯ãåã³ã¢ãåã³ã¢ããã®å²ã蟌ã¿ãªã©ã«ã¹ã¿ãã¯ãæ§æããå¿
èŠããããŸãããæãéèŠãªããšã¯ã察称ãã«ãããã»ãã·ã³ã°ã䜿çšããå Žåããã¹ãŠã®ã³ã¢ãåããªãœãŒã¹ãæã£ãŠããããšã§ãïŒ1ã€ã®ã¡ã¢ãªã 1ã€ã®PCIãªã©ãOSã¯ã³ã¢éã®ã¿ã¹ã¯ã®ã¿ã䞊ååã§ããŸãã
ãã®èšäºãéå±ã§ã¯ãªããéåžžã«æçã§ããããšãé¡ã£ãŠããŸãã æ¬¡åã¯ãã·ã§ãŒããŒãã¯ãŒã«ãªãããªã«ãŒãã䜿çšããã«ãç»é¢ã«æç»ããæ¹æ³ã«ã€ããŠèª¬æã§ãããšæããŸãïŒãããŠä»ã§ã¯æç»ããŸãïŒã
é 匵ã£ãŠ