專利名稱:一種用于多核多線程處理器的單線程復(fù)位方法
技術(shù)領(lǐng)域:
本發(fā)明涉及復(fù)位技術(shù),尤其涉及用于多核多線程處理器的單線程復(fù)位方法。
背景技術(shù):
高性能多核多線程處理器得到了越來越廣泛的應(yīng)用,以RMI公司的XLR 系列處理器為例,該系列處理器集成了高達8個RMI增強型MIPS64 RISC CPU 內(nèi)核,每個內(nèi)核支持4個線程,因此XLR處理器最高可支持32個線程,即一 個多核處理器的處理能力相當于32個并行的單核處理器。
在通常的單核處理器系統(tǒng)出現(xiàn)異常時,可以依靠看門狗復(fù)位或者軟件熱啟 動復(fù)位整個系統(tǒng),及時復(fù)位可以很好的保證系統(tǒng)穩(wěn)定性和可靠性;而在多核多 線程處理器系統(tǒng)中,由于多核處理器多個內(nèi)核的不同線程可以獨立運行相同或 不同的嵌入式操作系統(tǒng)以及應(yīng)用程序,雖然某 一 時刻某個內(nèi)核的某個線程可能 會出現(xiàn)異常,而此時其他所有內(nèi)核中的線程仍然能正常工作,因此出現(xiàn)異常的 內(nèi)核線程的業(yè)務(wù)可以被分擔到其他正常工作的內(nèi)核線程,不影響系統(tǒng)的正常運 行。如果為了恢復(fù)異常線程采用整個系統(tǒng)復(fù)位的方法,雖然系統(tǒng)得到了恢復(fù), 但會極大的影響了整個系統(tǒng)的可靠性和穩(wěn)定性。
專利申請CN200610127590.X "多核系統(tǒng)中的監(jiān)控方法、監(jiān)控裝置以及多核 系統(tǒng)"公開在多核系統(tǒng)中監(jiān)控多核處理器異常的方法,以及針對每個核分別設(shè) 置不同的復(fù)位策略,但并沒有給出針對多核多線程處理器中具體的單線程復(fù)位 的方法。
綜上所述,現(xiàn)有的多核多線程處理器的復(fù)位技術(shù)無法針對單線程進行復(fù)位,
從而極大的影響了系統(tǒng)的可靠性和穩(wěn)定性。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種用于多核多線程處理器的單線程復(fù)位方法,用于 克服在多核多線程處理器中具體的單線程出現(xiàn)問題時對整個系統(tǒng)進行復(fù)位的問 題。
為了實現(xiàn)上述發(fā)明目的,本發(fā)明具體是這樣實現(xiàn)的
一種用于多核多線程處理器的單線程復(fù)位方法,包括如下步驟
A,主控內(nèi)核線程和非主控內(nèi)核線程啟動后,主控內(nèi)核線程主動向非主控內(nèi)
核線程發(fā)送心跳檢測報文,若在規(guī)定的時間內(nèi)沒有收到非主控內(nèi)核線程心跳應(yīng)
答,則向丟失心跳的非主控內(nèi)核線程發(fā)送非屏蔽中斷;
B,收到非屏蔽中斷的非主控內(nèi)核線程轉(zhuǎn)入指定地址執(zhí)行代碼。
所述的用于多核多線程處理器的單線程復(fù)位方法,還包括
C,主控內(nèi)核線程根據(jù)記錄的非主控內(nèi)核線程的信息,重新加載代碼段、數(shù)
據(jù)段以及物理地址、物理虛擬地址空間的映射關(guān)系,發(fā)送啟動消息至非主控內(nèi)
核線程。
所述的用于多核多線程處理器的單線程復(fù)位方法中,所述非主控內(nèi)核線程 的啟動具體是這樣實現(xiàn)的
收到主控內(nèi)核線程發(fā)送的啟動消息后,非主控內(nèi)核線程設(shè)置各自的物理虛 擬地址空間的映射關(guān)系,轉(zhuǎn)入指定地址執(zhí)行代碼,更新內(nèi)核線程。
接上述方案,所述非主控內(nèi)核線程還重新設(shè)置堆棧指針。
所述的用于多核多線程處理器的單線程復(fù)位方法中,所述主控內(nèi)核線程在 發(fā)送啟動消息之前進行如下處理過程
主控內(nèi)核線程上電啟動;
加載非主控內(nèi)核線程代碼到內(nèi)存,并解析加載的代碼信息; 分配代碼加載空間,記錄非主控內(nèi)核線程的信息。 所述的用于多核多線程處理器的單線程復(fù)位方法中,所述主控線程向非主 控內(nèi)核線程發(fā)送的啟動消息中帶有非主控內(nèi)核線程運行的起始地址、物理虛擬
地址空間的映射關(guān)系和堆棧指針;
所述記錄的各非主控內(nèi)核線程的信息包括,非主控內(nèi)核線程的代碼段、數(shù) 據(jù)段、物理地址以及物理地址虛擬空間的映射關(guān)系。
所述的用于多核多線程處理器的單線程復(fù)位方法中,非主控內(nèi)核線程根據(jù) 接收到的主控內(nèi)核線程發(fā)送的啟動消息,設(shè)置各自的物理虛擬地址空間的映射 關(guān)系,轉(zhuǎn)入指定地址執(zhí)行代碼,更新內(nèi)核線程相關(guān)信息。
所述的用于多核多線程處理器的單線程復(fù)位方法中,所述轉(zhuǎn)入指定地址執(zhí) 行代碼,是指完成非主控內(nèi)核線程的關(guān)鍵寄存器配置,緩存初始化以及更新內(nèi) 核線程相關(guān)信息,并等待主控內(nèi)核線程發(fā)送啟動消息。
采用本發(fā)明所述方法,與現(xiàn)有技術(shù)相比,克服了在多核多線程處理器系統(tǒng) 中某個內(nèi)核線程出現(xiàn)異常時復(fù)位整個系統(tǒng)的缺點,在內(nèi)核線程出現(xiàn)異常時僅復(fù) 位具體的單線程,而不影響其他內(nèi)核線程的運行,可以避免整個系統(tǒng)復(fù)位,保 證出現(xiàn)異常的內(nèi)核線程及時有效的恢復(fù)運行,這種復(fù)位方法不僅系統(tǒng)開銷少, 復(fù)位時間短,而且具有不干擾其他內(nèi)核線程的獨立性,極大地提高了多核多線 程處理器系統(tǒng)運行的穩(wěn)定性和可靠性。
圖1是本發(fā)明所述方法的內(nèi)核線程運行代碼空間示意圖; 圖2是本發(fā)明所述方法的流程圖。
具體實施例方式
下面結(jié)合附圖和具體實施方式
對本發(fā)明進行詳細說明。 如圖1所示,系統(tǒng)上電后,主控內(nèi)核線程為其他非主控內(nèi)核線程分配內(nèi)存 空間,并分別加載代碼段和數(shù)據(jù)段,主控內(nèi)核線程記錄各內(nèi)核線程已分配的物
理地址和物理虛擬地址的映射關(guān)系,這樣重新加載時無需重新分配內(nèi)存空間, 縮短了重啟內(nèi)核線程的時間,也節(jié)省了內(nèi)存空間。 如圖2所示為本發(fā)明所述方法的復(fù)用流程圖。S201,系統(tǒng)上電。5202, 根據(jù)線程號判斷是否為主控內(nèi)核線程,若是,則轉(zhuǎn)入S203,否則, 為非主控內(nèi)核線程,循環(huán)等待主控內(nèi)核線程啟動。5203, 主控內(nèi)核線程啟動后進行關(guān)鍵寄存器配置、緩存初始化、內(nèi)存初始 化以及系統(tǒng)配置等工作。5204, 主控內(nèi)核線程加載非主控內(nèi)核線程代碼到內(nèi)存,解析加載的代碼信 息,分配代碼段、數(shù)據(jù)段空間,記錄各非主控內(nèi)核線程的代碼段、數(shù)據(jù)段以及 物理地址、物理虛擬地址空間的映射關(guān)系,并向非主控內(nèi)核線程發(fā)送啟動消息。所述主控內(nèi)核線程將非主控內(nèi)核線程運行的起始地址、物理虛擬地址空間 的映射關(guān)系和堆棧指針通過啟動消息發(fā)送至該非主控內(nèi)核線程。5205, 主控內(nèi)核線程等待非主控內(nèi)核線程的啟動。5206, 非主控內(nèi)核線程根據(jù)接收到的主控內(nèi)核線程發(fā)送的啟動消息,設(shè)置 各自的物理虛擬地址空間映射關(guān)系,轉(zhuǎn)入指定的代碼地址開始執(zhí)行,更新內(nèi)核 線程相關(guān)信息,并根據(jù)需要重新設(shè)置堆棧指針,完成啟動工作,開始運行。5207, 主控內(nèi)核線程定時向非主控內(nèi)核線程發(fā)送心跳檢測報文。S208,判斷非主控內(nèi)核線程是否丟失心跳,若是,則轉(zhuǎn)入S209,否則轉(zhuǎn)入 S207。主控內(nèi)核線程定時發(fā)送心跳檢測報文,檢測非主控內(nèi)核線程是否正常運行, 當非主控內(nèi)核線程收到心跳檢測報文后,會主動做出應(yīng)答,主控內(nèi)核線程據(jù)此 認為該非主控內(nèi)核線程運行正常, 一旦心跳應(yīng)答超過^見定的間隔,主控內(nèi)核線 程據(jù)此判斷該丟失心跳的非主控內(nèi)核線程出現(xiàn)異常。S209,主控內(nèi)核線程向丟失心跳的非主控內(nèi)核線程發(fā)送非屏蔽中斷。 S210,非主控內(nèi)核線程收到非屏蔽中斷后,轉(zhuǎn)入指定地址執(zhí)行代碼,主要 完成該內(nèi)核線程的關(guān)鍵寄存器配置,援存初始化以及更新內(nèi)核線程相關(guān)信息, 并循環(huán)等待主控內(nèi)核線程重新發(fā)送的啟動消息。S211,非主控內(nèi)核線程判斷是否收到主控內(nèi)核線程發(fā)送的啟動消息,若收 到,則轉(zhuǎn)入S212,否則等待主控內(nèi)核線程重新發(fā)送啟動消息,重復(fù)S211。S212,主控內(nèi)核線程根據(jù)記錄的非主控內(nèi)核線程的信息,重新加載代碼段、 數(shù)據(jù)_纟殳以及物理地址、物理虛擬地址空間的映射關(guān)系,并將該內(nèi)核線程運行的 起始地址、物理虛擬地址空間映射關(guān)系以及堆棧指針通過啟動消息重新發(fā)送給 該非主控內(nèi)核線程。S213,非主控內(nèi)核線程收到重新發(fā)送的啟動消息,重新開始運行。
權(quán)利要求
1、 一種用于多核多線程處理器的單線程復(fù)位方法,其特征在于,包括如下步驟A,主控內(nèi)核線程和非主控內(nèi)核線程啟動后,主控內(nèi)核線程主動向非主控內(nèi) 核線程發(fā)送心跳檢測報文,若在規(guī)定的時間內(nèi)沒有收到非主控內(nèi)核線程心跳應(yīng) 答,則向丟失心跳的非主控內(nèi)核線程發(fā)送非屏蔽中斷;B ,收到非屏蔽中斷的非主控內(nèi)核線程轉(zhuǎn)入指定地址執(zhí)行代碼。
2、 如權(quán)利要求1所述的用于多核多線程處理器的單線程復(fù)位方法,其特征 在于,還包括C,主控內(nèi)核線程根據(jù)記錄的非主控內(nèi)核線程的信息,重新加載代碼段、數(shù) 據(jù)段以及物理地址、物理虛擬地址空間的映射關(guān)系,發(fā)送啟動消息至非主控內(nèi) 核線程。
3、 如權(quán)利要求1或2所述的用于多核多線程處理器的單線程復(fù)位方法,其 特征在于,所述非主控內(nèi)核線程的啟動具體是這樣實現(xiàn)的收到主控內(nèi)核線程發(fā)送的啟動消息后,非主控內(nèi)核線程設(shè)置各自的物理虛 擬地址空間的映射關(guān)系,轉(zhuǎn)入指定地址執(zhí)行代碼,更新內(nèi)核線程。
4、 如權(quán)利要求3所述的用于多核多線程處理器的單線程復(fù)位方法,其特征 在于所述非主控內(nèi)核線程重新設(shè)置堆棧指針。
5、 如權(quán)利要求3所述的用于多核多線程處理器的單線程復(fù)位方法,其特征 在于所述主控內(nèi)核線程在發(fā)送啟動消息之前進行如下處理過程 主控內(nèi)核線程上電啟動;加載非主控內(nèi)核線程代碼到內(nèi)存,并解析加載的代碼信息; 分配代碼加載空間,記錄非主控內(nèi)核線程的信息。
6、 如權(quán)利要求2或5所述的用于多核多線程處理器的單線程復(fù)位方法,其 特征在于所述主控線程向非主控內(nèi)核線程發(fā)送的啟動消息中帶有非主控內(nèi)核線程運 行的起始地址、物理虛擬地址空間的映射關(guān)系和堆棧指針;所述記錄的各非主控內(nèi)核線程的信息包括,非主控內(nèi)核線程的代碼段、數(shù) 據(jù)段、物理地址以及物理地址虛擬空間的映射關(guān)系。
7、 如權(quán)利要求6所述的用于多核多線程處理器的單線程復(fù)位方法,其特征 在于非主控內(nèi)核線程根據(jù)接收到的主控內(nèi)核線程發(fā)送的啟動消息,設(shè)置各自的 物理虛擬地址空間映射關(guān)系,轉(zhuǎn)入指定地址執(zhí)行代碼,更新內(nèi)核線程相關(guān)信息。
8、 如權(quán)利要求3所述的用于多核多線程處理器的單線程復(fù)位方法,其特征 在于所述轉(zhuǎn)入指定地址執(zhí)行代碼,是指完成非主控內(nèi)核線程的關(guān)鍵寄存器配置, 緩存初始化以及更新內(nèi)核線程相關(guān)信息,并等待主控內(nèi)核線程發(fā)送啟動消息。
全文摘要
本發(fā)明公開了一種用于多核多線程處理器的單線程復(fù)位方法,包括,主控內(nèi)核線程和非主控內(nèi)核線程啟動后,主控內(nèi)核線程主動向非主控內(nèi)核線程發(fā)送心跳檢測報文,若在規(guī)定的時間內(nèi)沒有收到非主控內(nèi)核線程心跳應(yīng)答,則向丟失心跳的非主控內(nèi)核線程發(fā)送非屏蔽中斷;收到非屏蔽中斷的非主控內(nèi)核線程轉(zhuǎn)入指定地址執(zhí)行代碼;主控內(nèi)核線程根據(jù)記錄的非主控內(nèi)核線程的信息,重新加載代碼段、數(shù)據(jù)段以及物理地址、物理虛擬地址空間的映射關(guān)系,發(fā)送啟動消息至非主控內(nèi)核線程。本發(fā)明復(fù)位方法不僅系統(tǒng)開銷少,復(fù)位時間短,而且具有不干擾其他內(nèi)核線程的獨立性,極大地提高了多核多線程處理器系統(tǒng)運行的穩(wěn)定性和可靠性。
文檔編號G06F9/48GK101122869SQ20071015226
公開日2008年2月13日 申請日期2007年9月20日 優(yōu)先權(quán)日2007年9月20日
發(fā)明者陽 趙, 過仕好 申請人:中興通訊股份有限公司