发现以前的一些记录 shutdown AP CPU
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
今天無意中發(fā)現(xiàn)我以前記錄的一些沒解決的問題。----》》
英特爾手冊(多處理器規(guī)范1.4)中記錄的方法:用80286重入實模式的方法可以關(guān)閉AP CPU,由BSP發(fā)送INIT IPI給AP CPU。下面這些數(shù)據(jù)必須先設(shè)置好!
1 :BIOS數(shù)據(jù)區(qū):0:0x467復(fù)位代碼地址:可以重入實模式
2:0:0x472復(fù)位標(biāo)致 ??(0x1234熱啟動.0x0冷啟動)
3:CMOS RAM:0xF發(fā)送0xA到這(沒有EOI的JMP遠(yuǎn)指針)這個辦法能SHUTDOWN AP。
-------------------------------------
1)向CMOS 0x0F寫入值0x0A
?2)寫入啟動地址為0x40:0x67
?3)向AP發(fā)送INIT IPI
這個規(guī)則應(yīng)該是老的CPU(使用82489DX)使用的規(guī)則,估計是486吧,不是太清楚這個。
奔騰處理器已經(jīng)內(nèi)置APIC了。82489DX的手冊上沒有看到有SIPI或STARTUP IPI的說明,應(yīng)該是486
內(nèi)置APIC的版本號都是1.x,82489dx的版本號是0.x。
----------------------------------------
晚上試試看。
看樣子不是我一個人的問題,在INTEL上查找到的:-->
https://software.intel.com/zh-cn/forums/intel-moderncode-for-parallel-architectures/topic/289483
我希望這是一個像我這樣的問題的正確論壇。
在為多核系統(tǒng)編寫一些實驗軟件的過程中,我希望能夠選擇性地停止和重新啟動各個“邏輯處理器”(線程,核心)。代碼當(dāng)前運行“裸機”,即沒有操作系統(tǒng),像啟動加載程序一樣啟動。在沒有受害處理器的協(xié)作的情況下暫停邏輯處理器應(yīng)該是可能的,即具有定義的“關(guān)閉”標(biāo)志或“關(guān)閉”IPI不是選項,因為處理器可能忽略關(guān)閉請求。
通過向AP發(fā)送INIT IPI(使AP進入等待SIPI狀態(tài)),然后是兩個STARTUP IPI(讓AP開始在向量<< 12處執(zhí)行),可以容易地實現(xiàn)停止和重新啟動AP(應(yīng)用處理器)。通過使用下面描述的熱復(fù)位矢量方法作為安全保護,這應(yīng)該適用于所有處理器,包括具有忽略STARTUP IPI的離散APIC的系統(tǒng)(這意味著它們在INIT之后立即開始執(zhí)行)。
對于BSP(自舉處理器)來說,情況更加困難。通過編程CMOS / RTC RAM偏移0xF關(guān)閉代碼0xA和熱復(fù)位向量40:67h在BDA與一些代碼的地址我想重新啟動從我可以實現(xiàn)相同的BSPs。這在多個系統(tǒng)上正常工作,包括具有Intel BIOS的D945GCLF2,具有Core2 Quad處理器和AMI BIOS的IMEI板以及使用VMWare和BOCHS的仿真平臺。
不幸的是,它不工作在富士通Celsius R570工作站與雙Xeon-5520處理器和鳳凰SecureCore BIOS。Celsius中的BIOS顯然忽略關(guān)閉代碼,并在發(fā)送到BSP的INIT之后重新啟動執(zhí)行后重置整個系統(tǒng)。
我正在尋找的是實現(xiàn)停止,然后重新啟動BSP而不影響AP的方法。重啟應(yīng)從一個AP發(fā)起,可靠地通過發(fā)送IPI到BSP。它看起來像在40:67h的熱復(fù)位向量不被現(xiàn)代BIOS使用(至少由Celsius R570)。有沒有任何替代方法?
轉(zhuǎn)載于:https://my.oschina.net/u/2601353/blog/836796
總結(jié)
以上是生活随笔為你收集整理的发现以前的一些记录 shutdown AP CPU的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平安福交了5年想退保能退多少 平安福交了
- 下一篇: [原创] GSM/GPRS 以及CDM