基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)及其卷回恢復(fù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)故障恢復(fù)技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]檢查點(diǎn)恢復(fù)技術(shù)是當(dāng)前最常用的故障恢復(fù)技術(shù),當(dāng)故障檢測機(jī)制發(fā)現(xiàn)錯(cuò)誤后回滾至最近的備份現(xiàn)場,恢復(fù)之前備份的狀態(tài)并重新運(yùn)行程序,避免了程序從頭重新執(zhí)行,減少時(shí)間開銷,避免計(jì)算資源浪費(fèi)。
[0003]目前檢查點(diǎn)故障恢復(fù)方式多基于軟件方法實(shí)現(xiàn),時(shí)間和空間開銷巨大,通用性、透明性和可移植性難以兼得。也有學(xué)者提出了基于硬件實(shí)現(xiàn)的檢查點(diǎn)故障恢復(fù)方式,但基于硬件方法受限于硬件資源,需要根據(jù)檢查點(diǎn)記錄格式準(zhǔn)確估算片內(nèi)非易失性存儲(chǔ)的大小并設(shè)計(jì)良好的檢查點(diǎn)設(shè)置規(guī)則,否則片內(nèi)非易失性存儲(chǔ)不足,無法保存檢查點(diǎn)信息導(dǎo)致恢復(fù)機(jī)制失效。因此,高可用的存儲(chǔ)結(jié)構(gòu)、存儲(chǔ)策略和恢復(fù)機(jī)制對提高處理器瞬時(shí)故障恢復(fù)性能至關(guān)重要。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是為了解決基于硬件方法實(shí)現(xiàn)多核處理器檢查點(diǎn)故障恢復(fù)受限于硬件資源的問題,本發(fā)明提供一種基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)及其卷回恢復(fù)方法。
[0005]本發(fā)明的基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng),
[0006]所述系統(tǒng)包括高可用性硬件檢查點(diǎn)備份模塊和多核處理器卷回恢復(fù)模塊;
[0007]所述高可用性硬件檢查點(diǎn)備份模塊包括寫操作計(jì)數(shù)器、檢查點(diǎn)備份控制部件和檢查點(diǎn)存儲(chǔ)塊;
[0008]所述寫操作計(jì)數(shù)器,用于控制檢查點(diǎn)設(shè)置間隔,并發(fā)送設(shè)置的檢查點(diǎn)間隔;
[0009]所述檢查點(diǎn)備份控制部件,用于接收設(shè)置的檢查點(diǎn)間隔,并根據(jù)檢查點(diǎn)間隔向處理器的每個(gè)內(nèi)核發(fā)送檢查點(diǎn)備份信號(hào);
[0010]所述檢查點(diǎn)存儲(chǔ)塊包括全局存儲(chǔ)塊和地址內(nèi)容存儲(chǔ)塊;
[0011]所述全局存儲(chǔ)塊,用于備份存儲(chǔ)處理器的每個(gè)內(nèi)核檢查點(diǎn)的所有運(yùn)行上下文信息,其中不包括處理器的每個(gè)內(nèi)核檢查點(diǎn)的寫內(nèi)存操作地址和內(nèi)容;
[0012]所述地址內(nèi)容存儲(chǔ)塊,用于備份存儲(chǔ)處理器的每個(gè)內(nèi)核檢查點(diǎn)的寫內(nèi)存操作地址和內(nèi)容;
[0013]所述多核處理器卷回恢復(fù)模塊包括故障檢測部件和檢查點(diǎn)恢復(fù)控制部件;
[0014]所述故障檢測部件,用于檢測故障并發(fā)送故障信號(hào);
[0015]所述檢查點(diǎn)恢復(fù)控制部件,用于接收故障信號(hào),根據(jù)所述故障信號(hào)向處理器的每個(gè)內(nèi)核發(fā)送檢查點(diǎn)恢復(fù)信號(hào)。
[0016]所有運(yùn)行上下文信息包括程序計(jì)數(shù)器PC、程序狀態(tài)字、指令計(jì)數(shù)器、寄存器內(nèi)容、流水線鎖存器內(nèi)容和存儲(chǔ)器寫指令內(nèi)容和地址。
[0017]所述地址內(nèi)容存儲(chǔ)塊在存儲(chǔ)寫內(nèi)存操作的地址和內(nèi)容時(shí),采用集中式記錄方式,相同寫操作只保留第一次的地址和內(nèi)容。
[0018]基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)的卷回恢復(fù)方法,所述方法包括如下步驟:
[0019]步驟一:處理器通過系統(tǒng)總線進(jìn)行寫內(nèi)存操作,高可用性硬件檢查點(diǎn)備份模塊將每個(gè)內(nèi)核的檢查點(diǎn)文件備份到檢查點(diǎn)存儲(chǔ)塊;
[0020]步驟二:故障檢測部件檢測到瞬時(shí)故障,發(fā)出故障信號(hào)給檢查點(diǎn)恢復(fù)控制部件;
[0021]步驟三:檢查點(diǎn)恢復(fù)控制部件接收到信號(hào)后發(fā)送瞬時(shí)故障恢復(fù)信號(hào);
[0022]步驟四:處理器的每個(gè)內(nèi)核分別打開相應(yīng)檢查點(diǎn)存儲(chǔ)塊中備份的檢查點(diǎn)文件;若打開錯(cuò)誤,結(jié)束檢查點(diǎn)卷回恢復(fù),否則,轉(zhuǎn)入步驟五;
[0023]步驟五:處理器的每個(gè)內(nèi)核暫停目標(biāo)進(jìn)程并利用內(nèi)核函數(shù)flUSh_0ld_eXeC()函數(shù)釋放目標(biāo)進(jìn)程占用資源;
[0024]步驟六:處理器的每個(gè)內(nèi)核分別順序讀取相應(yīng)的全局存儲(chǔ)塊中備份的檢查點(diǎn)文件,同步恢復(fù)到目標(biāo)進(jìn)程中;
[0025]步驟七:目標(biāo)進(jìn)程基本信息同步恢復(fù)完畢后,目標(biāo)進(jìn)程繼續(xù)執(zhí)行;
[0026]步驟八:處理器的每個(gè)內(nèi)核讀取地址內(nèi)容存儲(chǔ)塊中的信息并集中恢復(fù)到被改寫的內(nèi)存區(qū)域,結(jié)束檢查點(diǎn)的卷回恢復(fù)。
[0027]所述步驟一包括如下步驟:
[0028]步驟一一:處理器通過系統(tǒng)總線進(jìn)行寫內(nèi)存操作,同時(shí)寫操作計(jì)數(shù)器計(jì)數(shù);
[0029]步驟一二:根據(jù)設(shè)置的檢查點(diǎn)間隔,到達(dá)檢查點(diǎn)后,寫操作計(jì)數(shù)器發(fā)出信號(hào)ck_flag給檢查點(diǎn)備份控制部件;
[0030]步驟一三:檢查點(diǎn)備份控制部件接收信號(hào)ck_flag并向處理器的每個(gè)內(nèi)核發(fā)送檢查點(diǎn)備份信號(hào)ck_backup ;
[0031]步驟一四:判斷每個(gè)內(nèi)核的檢查點(diǎn)文件的文件描述符fd(i)是否有效,若有效,則轉(zhuǎn)入步驟一五,若無效,結(jié)束檢查點(diǎn)備份;
[0032]步驟一五:獲取每個(gè)內(nèi)核的目標(biāo)進(jìn)程的進(jìn)程描述符pr0_StrUCt并暫停目標(biāo)進(jìn)程;
[0033]步驟一六:通過進(jìn)程描述符pr0_StrUCt獲得目標(biāo)進(jìn)程的所有運(yùn)行上下文信息,并進(jìn)行備份,存儲(chǔ)到相應(yīng)的檢查存儲(chǔ)塊中,轉(zhuǎn)入步驟一七;
[0034]步驟一七:運(yùn)行目標(biāo)進(jìn)程,結(jié)束檢查點(diǎn)備份。
[0035]本發(fā)明的有益效果在于,具有更好的透明性、通用性,能夠提高處理器瞬時(shí)故障恢復(fù)性能。同時(shí),本發(fā)明相對于傳統(tǒng)單核處理器芯片檢查點(diǎn)結(jié)構(gòu),提出了一種高可用性多核處理器芯片硬件檢查點(diǎn)結(jié)構(gòu),能夠解決多核處理器的瞬時(shí)故障恢復(fù)問題。
【附圖說明】
[0036]圖1為【具體實(shí)施方式】一中4核處理器芯片的硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)的原理不意圖;
[0037]圖2為本發(fā)明提供的多核處理器硬件檢查點(diǎn)備份的原理示意圖;
[0038]圖3為本發(fā)明提供的多核處理器硬件檢查點(diǎn)的瞬時(shí)故障恢復(fù)的原理示意圖。
【具體實(shí)施方式】
[0039]【具體實(shí)施方式】一:結(jié)合圖1至圖3說明本實(shí)施方式,本實(shí)施方式所述的基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng),所述系統(tǒng)包括高可用性硬件檢查點(diǎn)備份模塊和多核處理器卷回恢復(fù)模塊;
[0040]所述高可用性硬件檢查點(diǎn)備份模塊包括寫操作計(jì)數(shù)器、檢查點(diǎn)備份控制部件和檢查點(diǎn)存儲(chǔ)塊;
[0041]所述寫操作計(jì)數(shù)器,用于控制檢查點(diǎn)設(shè)置間隔,并發(fā)送設(shè)置的檢查點(diǎn)間隔;
[0042]所述檢查點(diǎn)備份控制部件,用于接收設(shè)置的檢查點(diǎn)間隔,并根據(jù)檢查點(diǎn)間隔向處理器的每個(gè)內(nèi)核發(fā)送檢查點(diǎn)備份信號(hào);
[0043]所述檢查點(diǎn)存儲(chǔ)塊包括全局存儲(chǔ)塊和地址內(nèi)容存儲(chǔ)塊;
[0044]所述全局存儲(chǔ)塊,用于備份存儲(chǔ)處理器的每個(gè)內(nèi)核檢查點(diǎn)的所有運(yùn)行上下文信息,其中不包括處理器的每個(gè)內(nèi)核檢查點(diǎn)的寫內(nèi)存操作地址和內(nèi)容;
[0045]所述地址內(nèi)容存儲(chǔ)塊,用于備份存儲(chǔ)處理器的每個(gè)內(nèi)核檢查點(diǎn)的寫內(nèi)存操作地址和內(nèi)容;
[0046]所述多核處理器卷回恢復(fù)模塊包括故障檢測部件和檢查點(diǎn)恢復(fù)控制部件;
[0047]所述故障檢測部件,用于檢測故障并發(fā)送故障信號(hào);
[0048]所述檢查點(diǎn)恢復(fù)控制部件,用于接收故障信號(hào),根據(jù)所述故障信號(hào)向處理器的每個(gè)內(nèi)核發(fā)送檢查點(diǎn)恢復(fù)信號(hào)。
[0049]本實(shí)施方式中以4核的處理器芯片硬件檢查點(diǎn)的備份與恢復(fù)為例進(jìn)行說明,4核處理器芯片的硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)的原理示意圖如圖1所示,4核處理器芯片的硬件檢查點(diǎn)備份的原理示意圖如圖2所示。圖2中,內(nèi)核0、內(nèi)核1、內(nèi)核2和內(nèi)核3形成了一個(gè)4核處理器。
[0050]【具體實(shí)施方式】二:本實(shí)施方式是對【具體實(shí)施方式】一所述的基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)的進(jìn)一步限定,所有運(yùn)行上下文信息包括程序計(jì)數(shù)器PC、程序狀態(tài)字、指令計(jì)數(shù)器、寄存器內(nèi)容、流水線鎖存器內(nèi)容和存儲(chǔ)器寫指令內(nèi)容和地址。
[0051]【具體實(shí)施方式】三:本實(shí)施方式是對【具體實(shí)施方式】一所述的基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)的進(jìn)一步限定,所述地址內(nèi)容存儲(chǔ)塊在存儲(chǔ)寫內(nèi)存操作的地址和內(nèi)容時(shí),采用集中式記錄方式,相同寫操作只保留第一次的地址和內(nèi)容。
[0052]【具體實(shí)施方式】四:本實(shí)施方式是基于【具體實(shí)施方式】一所述的基于高可用性硬件檢查點(diǎn)的多核處理器卷回恢復(fù)系統(tǒng)的卷回恢復(fù)方法,所述方法包括如下步驟:
[0053]步驟一:處理器通過系統(tǒng)總線進(jìn)行寫內(nèi)存操作,高可用性硬件檢查點(diǎn)備份模塊將每個(gè)內(nèi)核的檢查點(diǎn)文件備份到檢查點(diǎn)存儲(chǔ)塊;
[0054]步驟二:故障檢測部件檢測到瞬時(shí)故障,發(fā)出故障信號(hào)給檢查點(diǎn)恢復(fù)控制部件;
[0055]步驟三:檢查點(diǎn)恢復(fù)控制部件接收到信號(hào)后發(fā)送瞬時(shí)故障恢復(fù)信號(hào);