一種建立處理器Cache檢查點(diǎn)的方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種建立處理器Cache檢查點(diǎn)的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]在計(jì)算機(jī)系統(tǒng)中,處理器高速緩沖存儲(chǔ)器(CPU Cache)是用于減少處理器訪問(wèn)內(nèi)存所需平均時(shí)間的部件,其容量遠(yuǎn)小于內(nèi)存,但速度卻可以接近處理器的頻率。同時(shí),某個(gè)進(jìn)程周期性地保存執(zhí)行程序的狀態(tài)至穩(wěn)定存儲(chǔ)器,系統(tǒng)在失效后能夠根據(jù)這些信息得以恢復(fù),每一個(gè)被保存的程序狀態(tài)稱為檢查點(diǎn),目前檢查點(diǎn)技術(shù)廣泛用于系統(tǒng)的容錯(cuò)設(shè)計(jì)中。則Cache檢查點(diǎn)就是針對(duì)Cache建立的檢查點(diǎn),它保存了某一時(shí)刻的整個(gè)Cache狀態(tài),在故障遷移和狀態(tài)恢復(fù)中,如果可以使用Cache檢查點(diǎn)恢復(fù)Cache狀態(tài),那么處理器就不用初始化Cache,節(jié)約了大量的Cache重建時(shí)間,加快了系統(tǒng)故障恢復(fù)和狀態(tài)遷移的速度。
[0003]在現(xiàn)有技術(shù)中,建立Cache檢查點(diǎn)的方法,是在處理器工作的過(guò)程中,利用Cache的空閑時(shí)間導(dǎo)出建立過(guò)程開(kāi)始時(shí)刻的Cache狀態(tài)到壓縮器中,從而建立Cache檢查點(diǎn)。在Cache檢查點(diǎn)建立過(guò)程中,如果沒(méi)有對(duì)Cache的更新操作,所有的Cache內(nèi)容會(huì)按照Cache地址順序依次導(dǎo)出到壓縮器中。但是如果有對(duì)Cache的更新操作,并且更新操作對(duì)應(yīng)的Cache行中的原有內(nèi)容尚未導(dǎo)出,就需要暫停處理器操作,將此Cache行原有的內(nèi)容先導(dǎo)出到壓縮器,然后再啟動(dòng)處理器更新該Cache行,即在需要更新未導(dǎo)出區(qū)域的數(shù)據(jù)時(shí),需要首先保存原有數(shù)據(jù),也就需要延遲處理器更新數(shù)據(jù)的操作,暫停流水線或者暫停訪存操作。因此,現(xiàn)有技術(shù)建立處理器Cache檢查點(diǎn)的方法存在影響處理器運(yùn)行的情況,影響系統(tǒng)的正常運(yùn)行。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明實(shí)施例的主要目的是提供一種建立處理器Cache檢查點(diǎn)的方法、裝置及系統(tǒng),以解決現(xiàn)有技術(shù)中建立處理器Cache檢查點(diǎn)的方法存在影響處理器運(yùn)行的情況,影響系統(tǒng)的正常運(yùn)行的問(wèn)題。
[0005]為解決上述問(wèn)題,本發(fā)明提供的技術(shù)方案如下:
[0006]第一方面,本發(fā)明提供了一種建立處理器Cache檢查點(diǎn)的方法,所述方法包括:
[0007]在將Cache中的內(nèi)容逐行導(dǎo)出的過(guò)程中,當(dāng)接收到處理器寫Cache信號(hào)時(shí),檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分,則執(zhí)行處理器寫Cache操作,并同時(shí)將所述寫Cache操作寫入Cache行中的內(nèi)容進(jìn)行導(dǎo)出;
[0008]當(dāng)接收到處理器寫Cache信號(hào)時(shí),檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分,則執(zhí)行處理器寫Cache操作,并暫停將Cache中的內(nèi)容進(jìn)行導(dǎo)出;
[0009]當(dāng)接收到處理器讀Cache信號(hào)時(shí),執(zhí)行處理器讀Cache操作,并暫停將Cache中的內(nèi)容進(jìn)行導(dǎo)出。
[0010]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0011]當(dāng)接收到的處理器讀Cache信號(hào)時(shí),檢測(cè)確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行,則執(zhí)行處理器讀Cache操作,并同時(shí)將所述讀Cache操作對(duì)應(yīng)的Cache行中的內(nèi)容進(jìn)行導(dǎo)出。
[0012]結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0013]控制地址生成器由Cache行地址范圍的一端開(kāi)始生成第一地址。
[0014]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述將Cache中的內(nèi)容逐行導(dǎo)出的過(guò)程具體為:將所述第一地址所對(duì)應(yīng)的Cache行中的內(nèi)容導(dǎo)出到壓縮器內(nèi)存儲(chǔ),每導(dǎo)出一 Cache行后則控制所述地址生成器將第一地址變化為下一Cache行地址。
[0015]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述判斷所述寫操作對(duì)應(yīng)的Cache行是否是已導(dǎo)出的Cache行,包括:
[0016]所述檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分,包括:
[0017]接收比較器的比較結(jié)果,所述比較器用于比較處理器寫Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大小;
[0018]當(dāng)所述地址生成器由Cache行地址范圍的低地址端開(kāi)始生成第一地址時(shí),所述比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址小于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分;
[0019]當(dāng)所述地址生成器由Cache行地址范圍的高地址端開(kāi)始生成第一地址時(shí),所述比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址大于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分。
[0020]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分,包括:
[0021]接收比較器的比較結(jié)果,所述比較器用于比較處理器寫Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大??;
[0022]當(dāng)所述地址生成器由Cache行地址范圍的低地址端開(kāi)始生成第一地址時(shí),所述比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址大于或等于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分;
[0023]當(dāng)所述地址生成器由Cache行地址范圍的高地址端開(kāi)始生成第一地址時(shí),所述比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址小于或等于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分。
[0024]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述檢測(cè)確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行,包括:
[0025]接收比較器的比較結(jié)果,所述比較器還用于比較所述處理器讀Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大小;
[0026]所述比較結(jié)果為處理器讀Cache操作對(duì)應(yīng)的Cache行地址等于當(dāng)前第一地址,確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行。
[0027]第二方面,本發(fā)明提供了一種建立處理器Cache檢查點(diǎn)的裝置,所述裝置包括:
[0028]接收單元,用于在將Cache中的內(nèi)容逐行導(dǎo)出的過(guò)程中,接收處理器寫Cache信號(hào)或者接收處理器讀Cache信號(hào);
[0029]第一確定單元,用于在所述接收單元接收到處理器寫Cache信號(hào)時(shí),檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分;
[0030]第一處理單元,用于在所述第一確定單元檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分時(shí),執(zhí)行處理器寫Cache操作;
[0031]第一導(dǎo)出單元,用于在所述第一確定單元檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分時(shí),將所述寫Cache操作寫入Cache行中的內(nèi)容進(jìn)行導(dǎo)出;
[0032]第二確定單元,用于在所述接收單元接收到處理器寫Cache信號(hào)時(shí),檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分;
[0033]第二處理單元,用于在所述第二確定單元檢測(cè)確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分時(shí),執(zhí)行處理器寫Cache操作,并暫停將Cache中的內(nèi)容進(jìn)行導(dǎo)出;
[0034]第三處理單元,用于在所述接收單元接收到處理器讀Cache信號(hào)時(shí),執(zhí)行處理器讀Cache操作,并暫停將Cache中的內(nèi)容進(jìn)行導(dǎo)出。
[0035]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0036]第三確定單元,用于在所述接收單元接收到處理器讀Cache信號(hào)時(shí),檢測(cè)確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行;
[0037]第四處理單元,用于在所述第三確定單元檢測(cè)確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行時(shí),執(zhí)行處理器讀Cache操作;
[0038]第二導(dǎo)出單元,用于在所述第三確定單元檢測(cè)確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行時(shí),將所述讀Cache操作對(duì)應(yīng)的Cache行中的內(nèi)容進(jìn)行導(dǎo)出。
[0039]結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0040]控制單元,用于控制地址生成器由Cache行地址范圍的一端開(kāi)始生成第一地址。
[0041]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述將Cache中的內(nèi)容逐行導(dǎo)出的過(guò)程具體為:將所述控制單元控制地址生成器生成的第一地址所對(duì)應(yīng)的Cache行中的內(nèi)容導(dǎo)出到壓縮器內(nèi)存儲(chǔ),每導(dǎo)出一 Cache行后則所述控制單元控制所述地址生成器將第一地址變化為下一 Cache行地址。
[0042]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第一確定單元包括:
[0043]接收子單元,用于接收比較器的比較結(jié)果,所述比較器用于比較處理器寫Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大??;
[0044]第一確定子單元,用于當(dāng)所述地址生成器由Cache行地址范圍的低地址端開(kāi)始生成第一地址時(shí),所述接收子單元接收到的比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址小于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分;
[0045]第二確定子單元,用于當(dāng)所述地址生成器由Cache行地址范圍的高地址端開(kāi)始生成第一地址時(shí),所述接收子單元接收到的比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址大于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分。
[0046]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述第二確定單元包括:
[0047]接收子單元,用于接收比較器的比較結(jié)果,所述比較器用于比較處理器寫Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大??;
[0048]第三確定子單元,用于當(dāng)所述地址生成器由Cache行地址范圍的低地址端開(kāi)始生成第一地址時(shí),所述接收子單元接收到的比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址大于或等于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分;
[0049]第四確定子單元,用于當(dāng)所述地址生成器由Cache行地址范圍的高地址端開(kāi)始生成第一地址時(shí),所述接收子單元接收到的比較結(jié)果為處理器寫Cache操作對(duì)應(yīng)的Cache行地址小于或等于當(dāng)前第一地址,確定處理器寫Cache操作對(duì)應(yīng)的Cache行在Cache的未導(dǎo)出部分。
[0050]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述第三確定單元包括:
[0051]接收子單元,用于接收比較器的比較結(jié)果,所述比較器還用于比較所述處理器讀Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大小;
[0052]第五確定子單元,用于所述接收子單元接收的比較結(jié)果為處理器讀Cache操作對(duì)應(yīng)的Cache行地址等于當(dāng)前第一地址,確定處理器讀Cache操作對(duì)應(yīng)的Cache行是下一被導(dǎo)出的Cache行。
[0053]第三方面,本發(fā)明提供了一種建立處理器Cache檢查點(diǎn)的系統(tǒng),所述系統(tǒng)包括:
[0054]導(dǎo)出控制器,是本發(fā)明第二方面所述的建立處理器Cache檢查點(diǎn)的裝置;
[0055]地址生成器,用于根據(jù)所述導(dǎo)出控制器的控制生成第一地址;
[0056]比較器,用于比較處理器寫Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大小,比較所述處理器讀Cache操作對(duì)應(yīng)的Cache行地址與當(dāng)前第一地址的大小,并將比較結(jié)果發(fā)送給所述導(dǎo)出控制器;
[0057]壓縮器,用于存儲(chǔ)Cache行的內(nèi)容。
[0058]由此可見(jiàn),本發(fā)明實(shí)施例具有如下有益效果:
[0059]本發(fā)明實(shí)施例在將Cache中的內(nèi)容逐行導(dǎo)出的過(guò)程中,如果檢測(cè)確定處理器需要寫Cache且寫Cache操作對(duì)應(yīng)的Cache行在Cache的已導(dǎo)出部分,則執(zhí)行處理器寫Cache操作,并同時(shí)將所述寫Cache操作寫入Cache行中的內(nèi)容進(jìn)行導(dǎo)出;如果檢測(cè)確定處理器需要寫Cache且寫Cache操作對(duì)應(yīng)的Ca