本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種高速緩沖存儲器的故障檢測方法及裝置。
背景技術(shù):
高速緩沖存儲器(Cache)是位于中央處理器(Central Processing Unit,CPU)和主存儲器之間的存儲器,Cache的容量較小,但是數(shù)據(jù)傳輸速度很快。由于CPU的處理速度遠(yuǎn)大于主存儲器的數(shù)據(jù)傳輸速度,因此CPU直接從主存儲器中存取數(shù)據(jù)時需要較長的等待時間。Cache可以保存CPU剛剛使用或循環(huán)使用的部分?jǐn)?shù)據(jù),當(dāng)CPU需要再次使用該部分?jǐn)?shù)據(jù)時可直接從Cache中調(diào)用,這樣就避免了重復(fù)存取數(shù)據(jù),減少了CPU的等待時間,提高了系統(tǒng)效率。
高速緩沖存儲器可分為一級高速緩沖存儲器(L1Cache)、二級高速緩沖存儲器(L2Cache)或者更高級別的高速緩沖存儲器。
以如圖1所示的CPU、L1Cache、L2Cache與主存儲器之間的連接關(guān)系為例,L2Cache是計算機(jī)系統(tǒng)中必不可少的存儲器,L2Cache的存取速度比L1Cache的存取速度慢,但L2Cache的容量比L1Cache的容量大,可用于L1Cache和主存儲器的數(shù)據(jù)交換。L2Cache存在故障時會導(dǎo)致系統(tǒng)復(fù)位,因而需要對L2Cache進(jìn)行故障檢測。
L2Cache的內(nèi)部邏輯結(jié)構(gòu)可如圖2所示,圖2中,L201表示主存儲器通過寫邏輯電路向L2Cache傳輸數(shù)據(jù)的過程,L202表示L2Cache通過讀邏輯電路向L1Cache傳輸數(shù)據(jù)的過程。現(xiàn)有技術(shù)中只存在對L2Cache的內(nèi)部存儲單元的故障檢測方法,針對L2Cache中寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸?shù)膱鼍?,現(xiàn)有技術(shù)中沒有檢測寫邏輯電路與讀邏輯電路之間干擾故障的方法,比如寫邏輯電路與讀邏輯電路之間存在干擾故障時會導(dǎo)致L2Cache傳輸?shù)臄?shù)據(jù)發(fā)生比特位跳變現(xiàn)象。
綜上,目前沒有檢測L2Cache或者更高級別的高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間干擾故障的技術(shù)方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種高速緩沖存儲器的故障檢測方法及裝置,用以實現(xiàn)對高速緩沖存儲器中的寫邏輯電路與讀邏輯電路之間干擾故障的檢測,該高速緩沖存儲器可以為L2Cache或者更高級別的高速緩沖存儲器。
第一方面,本發(fā)明實施例提供一種高速緩沖存儲器的故障檢測方法,該方法包括如下步驟:
將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元中存儲的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,再將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元中;當(dāng)目的內(nèi)存中執(zhí)行過上述寫入第二數(shù)據(jù)操作的存儲單元中存在一個存儲單元,該存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元中存儲的數(shù)據(jù)不一致時,則可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
其中,源內(nèi)存中的初始化數(shù)據(jù)包括第二數(shù)據(jù)。目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元存在一一對應(yīng)關(guān)系,即目的內(nèi)存中的至少一個存儲單元的數(shù)量與源內(nèi)存中的至少一個存儲單元的數(shù)量相同,且目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元是一一對應(yīng)的:按照上述一一對應(yīng)關(guān)系,目的內(nèi)存的任意一個存儲單元與該任意一個存儲單元對應(yīng)的源內(nèi)存中的存儲單元映射在高速緩沖存儲器中的不同的存儲單元。將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
采用上述方案,由于將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊,相當(dāng)于通過高速緩沖存儲器中的寫邏輯電路向目的內(nèi)存的至少一個存儲單元寫入第一數(shù)據(jù)的過程,與通過高速緩沖存儲器中的讀邏輯電路讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。因此,如果高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間存在干擾故障,則向目的內(nèi)存的至少一個存儲單元中寫入的第一數(shù)據(jù)和從源內(nèi)存的至少一個存儲單元中讀取的第二數(shù)據(jù)會產(chǎn)生比特位跳變。
上述方案中,在讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)后,又將讀取到的第二數(shù)據(jù)寫入了目的內(nèi)存的至少一個存儲單元,那么目的內(nèi)存的至少一個存儲單元中存儲的數(shù)據(jù)即為讀取到的第二數(shù)據(jù)。由于高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間存在干擾故障時,從源內(nèi)存的至少一個存儲單元中讀取的第二數(shù)據(jù)會產(chǎn)生比特位跳變,因而會導(dǎo)致讀取到的第二數(shù)據(jù)與源內(nèi)存的至少一個存儲單元中原本存儲的數(shù)據(jù)不同,即導(dǎo)致目的內(nèi)存的至少一個存儲單元中存儲的第二數(shù)據(jù)與源內(nèi)存的至少一個存儲單元中原本存儲的數(shù)據(jù)不同。
因此,采用上述方案,可以通過比較目的內(nèi)存的至少一個存儲單元中存儲的數(shù)據(jù)與源內(nèi)存中至少一個存儲單元存儲的數(shù)據(jù)是否相同來判斷高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間是否存在干擾故障,即當(dāng)目的內(nèi)存中執(zhí)行過上述寫入第二數(shù)據(jù)操作的存儲單元中存在一個存儲單元,該存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元中存儲的數(shù)據(jù)不一致時,可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
上述第一方面中,實現(xiàn)將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊的實現(xiàn)方式有多種,比如通過定時器實現(xiàn)或者通過計數(shù)器實現(xiàn)。以通過定時器實現(xiàn)的方式為例,包括:在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元時啟動定時器;當(dāng)定時器的當(dāng)前時長為零時,讀取源內(nèi)存的至少一個存儲單元的第二數(shù)據(jù);其中,定時器設(shè)置的時長滿足:將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
在一種可能的實現(xiàn)方式中,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊,可以有多種情況,例如:第一種情況,在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中,發(fā)生讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程;第二種情況,在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中開始讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程,但在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程結(jié)束時,讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程還未結(jié)束。
針對上述第一種情況,由于在發(fā)生將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中發(fā)生讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程,因而兩個過程的發(fā)生時間重疊的時間最長,從而發(fā)生寫邏輯電路與讀邏輯電路間的干擾故障的可能性最大,能更準(zhǔn)確地檢測高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障。
在一種可能的實現(xiàn)方式中,當(dāng)目的內(nèi)存中寫入第二數(shù)據(jù)的至少一個存儲單元中的每個存儲單元存儲的數(shù)據(jù),與按照一一對應(yīng)關(guān)系每個存儲單元對應(yīng)的源內(nèi)存中的每個存儲單元存儲的數(shù)據(jù)均一致時,則可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間不存在干擾故障。
在一種可能的實現(xiàn)方式中,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元,可通過以下方式實現(xiàn):
分別將目的內(nèi)存的至少一個存儲單元中的任意一個存儲單元作為目的內(nèi)存的當(dāng)前存儲單元,并將目的內(nèi)存的當(dāng)前存儲單元對應(yīng)的源內(nèi)存的至少一個存儲單元中的一個存儲單元作為源內(nèi)存的當(dāng)前存儲單元,針對每個目的內(nèi)存的當(dāng)前存儲單元和源內(nèi)存的當(dāng)前存儲單元執(zhí)行如下步驟:將第一子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元,讀取源內(nèi)存的當(dāng)前存儲單元的第二子數(shù)據(jù),并將第二子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元。
其中,寫入目的內(nèi)存的至少一個存儲單元中的每個存儲單元的第一子數(shù)據(jù)組成第一數(shù)據(jù),讀取源內(nèi)存的至少一個存儲單元中的每個存儲單元的第二子數(shù)據(jù)組成第二數(shù)據(jù)。
上述可能的實現(xiàn)方式中,通過循環(huán)執(zhí)行在目的內(nèi)存的當(dāng)前存儲單元中寫入第一子數(shù)據(jù)、讀取源內(nèi)存中當(dāng)前存儲單元的第二子數(shù)據(jù)、在目的內(nèi)存的當(dāng)前存儲單元中寫入第二子數(shù)據(jù)的過程,可以使得寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸這一場景發(fā)生的次數(shù)等于目的內(nèi)存中執(zhí)行過寫入第二子數(shù)據(jù)的存儲單元的個數(shù)(也就是源內(nèi)存中執(zhí)行過讀取第二子數(shù)據(jù)的存儲單元的個數(shù))。在具體實現(xiàn)時,僅需保證多次循環(huán)執(zhí)行上述過程后,目的內(nèi)存的至少一個存儲單元中的每個存儲單元均執(zhí)行過寫入第一子數(shù)據(jù)和寫入第二子數(shù)據(jù)的過程即可,對于目的內(nèi)存的至少一個存儲單元中哪個存儲單元先執(zhí)行,哪個存儲單元后執(zhí)行不做限制;同樣地,僅需保證多次循環(huán)執(zhí)行上述過程后,源內(nèi)存的至少一個存儲單元中的每個存儲單元均執(zhí)行過過讀取第二子數(shù)據(jù)的過程即可,對于源內(nèi)存的至少一個存儲單元中哪個存儲單元先執(zhí)行,哪個存儲單元后執(zhí)行不做限制。
采用上述方案,由于高速緩沖存儲器中的寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸這一場景發(fā)生的次數(shù)等于目的內(nèi)存中執(zhí)行過寫入第二子數(shù)據(jù)的存儲單元的個數(shù)(也就是源內(nèi)存中執(zhí)行過讀取第二子數(shù)據(jù)的存儲單元的個數(shù)),因而可以更充分地檢測高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障,檢測結(jié)果更準(zhǔn)確,檢測效果更好。
在一種可能的實現(xiàn)方式中,目的內(nèi)存中的初始化數(shù)據(jù)和源內(nèi)存中的初始化數(shù)據(jù)互相取反。
具體實現(xiàn)時,目的內(nèi)存中的初始化數(shù)據(jù)和源內(nèi)存中的初始化數(shù)據(jù)互相取反的一種可能的實現(xiàn)方式是:在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元之前,高速緩沖存儲器的故障檢測方法還包括:將目的內(nèi)存的初始化數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;對目的內(nèi)存的初始化數(shù)據(jù)取反操作得到源內(nèi)存的初始化數(shù)據(jù),按照一一對應(yīng)關(guān)系將源內(nèi)存的初始化數(shù)據(jù)寫入源內(nèi)存的至少一個存儲單元。
采用上述方案,如果在執(zhí)行高速緩沖存儲器的故障檢測方法時,如果在數(shù)據(jù)讀寫過程中某個比特位發(fā)生了漏讀或漏寫,那么在比較源內(nèi)存中存在比特位漏讀或漏寫情況的存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的目的內(nèi)存的存儲單元存儲的數(shù)據(jù)時,由于這兩個存儲單元的初始化數(shù)據(jù)本就互相取反,因而在進(jìn)行數(shù)據(jù)比較時這兩個存儲單元的數(shù)據(jù)不可能完全一致,從而可以檢測出寫邏輯電路和讀邏輯電路間存在干擾故障。
需要說明的是,寫入初始化數(shù)據(jù)的操作可以視為高速緩沖存儲器的故障檢測方法的前期準(zhǔn)備步驟,與計算機(jī)領(lǐng)域傳統(tǒng)的初始化操作的含義不同。
在一種可能的實現(xiàn)方式中,上述故障檢測方法可以應(yīng)用于二級高速緩沖存儲器或者三級高速緩沖存儲器,或者應(yīng)用于隨時技術(shù)發(fā)展出現(xiàn)的更高級別的高速緩沖存儲器。
第二方面,本發(fā)明實施例提供一種高速緩沖存儲器的故障檢測裝置,該裝置包括數(shù)據(jù)讀寫單元和故障檢測單元。其中,
數(shù)據(jù)讀寫單元,用于將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元。
其中,源內(nèi)存中的初始化數(shù)據(jù)包括第二數(shù)據(jù);目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元存在一一對應(yīng)關(guān)系,即目的內(nèi)存的至少一個存儲單元的數(shù)量與源內(nèi)存的至少一個存儲單元的數(shù)量相同,且目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元是一一對應(yīng)的。按照上述一一對應(yīng)關(guān)系,目的內(nèi)存的任意一個存儲單元與該任意一個存儲單元對應(yīng)的源內(nèi)存中的存儲單元映射在高速緩沖存儲器中的不同的存儲單元;特別地,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
故障檢測單元,用于當(dāng)目的內(nèi)存中數(shù)據(jù)讀寫單元寫入第二數(shù)據(jù)的至少一個存儲單元中存在一個存儲單元,該存儲單元存儲的數(shù)據(jù)與按照一一對應(yīng)關(guān)系該存儲單元對應(yīng)的源內(nèi)存中的存儲單元存儲的數(shù)據(jù)不一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
采用上述方案,由于將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊,相當(dāng)于通過高速緩沖存儲器中的寫邏輯電路向目的內(nèi)存的至少一個存儲單元寫入第一數(shù)據(jù)的過程,與通過高速緩沖存儲器中的讀邏輯電路讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。因此,如果高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間存在干擾故障,則數(shù)據(jù)讀寫單元向目的內(nèi)存的至少一個存儲單元中寫入的第一數(shù)據(jù)和從源內(nèi)存的至少一個存儲單元中讀取的第二數(shù)據(jù)會產(chǎn)生比特位跳變。
上述方案中,在數(shù)據(jù)讀寫單元讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)后,又將讀取到的第二數(shù)據(jù)寫入了目的內(nèi)存的至少一個存儲單元,那么目的內(nèi)存的至少一個存儲單元中存儲的數(shù)據(jù)即為讀取到的第二數(shù)據(jù)。由于高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間存在干擾故障時,數(shù)據(jù)讀寫單元從源內(nèi)存的至少一個存儲單元中讀取的第二數(shù)據(jù)會產(chǎn)生比特位跳變,因而會導(dǎo)致數(shù)據(jù)讀寫單元讀取到的第二數(shù)據(jù)與源內(nèi)存的至少一個存儲單元中原本存儲的數(shù)據(jù)不同,即導(dǎo)致目的內(nèi)存的至少一個存儲單元中存儲的第二數(shù)據(jù)與源內(nèi)存的至少一個存儲單元中原本存儲的數(shù)據(jù)不同。
因此,故障檢測單元可以通過比較目的內(nèi)存的至少一個存儲單元中存儲的數(shù)據(jù)與源內(nèi)存中至少一個存儲單元存儲的數(shù)據(jù)是否相同來判斷高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間是否存在干擾故障:當(dāng)目的內(nèi)存中執(zhí)行過上述寫入第二數(shù)據(jù)操作的存儲單元中存在一個存儲單元,該存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元中存儲的數(shù)據(jù)不一致時,故障檢測單元可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
在一種可能的實現(xiàn)方式中,數(shù)據(jù)讀寫單元在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)時,可采用以下方式實現(xiàn):啟動定時器,并將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;當(dāng)定時器的當(dāng)前時長為零時,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù);其中,定時器設(shè)置的時長滿足:將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
采用上述方案,通過設(shè)置定時器來實現(xiàn)第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。除了通過設(shè)置定時器來實現(xiàn)兩個過程的時間重疊,還可通過計數(shù)器來實現(xiàn)兩個過程的時間重疊,具體實現(xiàn)方式在此不再贅述。
在一種可能的實現(xiàn)方式中,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊,可以有多種情況,例如:第一種情況,在將所述第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中,發(fā)生讀取所述源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程;第二種情況,在將所述第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中開始讀取所述源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程,但在將所述第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程結(jié)束時,讀取所述源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程還未結(jié)束。
針對上述第一種情況,由于在發(fā)生將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中發(fā)生讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程,因而兩個過程的發(fā)生時間重疊的時間最長,從而發(fā)生寫邏輯電路與讀邏輯電路間的干擾故障的可能性最大,能更準(zhǔn)確地檢測高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障。
在一種可能的實現(xiàn)方式中,故障檢測單元還用于:當(dāng)目的內(nèi)存中數(shù)據(jù)讀寫單元寫入第二數(shù)據(jù)的至少一個存儲單元中的每個存儲單元存儲的數(shù)據(jù),與按照一一對應(yīng)關(guān)系每個存儲單元對應(yīng)的源內(nèi)存中的每個存儲單元存儲的數(shù)據(jù)均一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間不存在干擾故障。
在一種可能的實現(xiàn)方式中,數(shù)據(jù)讀寫單元在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元時,可通過以下方式實現(xiàn):分別將目的內(nèi)存的至少一個存儲單元中的任意一個存儲單元作為目的內(nèi)存的當(dāng)前存儲單元,并將目的內(nèi)存的當(dāng)前存儲單元對應(yīng)的源內(nèi)存的至少一個存儲單元中的一個存儲單元作為源內(nèi)存的當(dāng)前存儲單元,針對每個目的內(nèi)存的當(dāng)前存儲單元和源內(nèi)存的當(dāng)前存儲單元執(zhí)行如下步驟:將第一子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元,讀取源內(nèi)存的當(dāng)前存儲單元的第二子數(shù)據(jù),并將第二子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元。
其中,寫入目的內(nèi)存的至少一個存儲單元中的每個存儲單元的第一子數(shù)據(jù)組成第一數(shù)據(jù),讀取源內(nèi)存的至少一個存儲單元中的每個存儲單元的第二子數(shù)據(jù)組成第二數(shù)據(jù)。
采用上述方案,由于循環(huán)執(zhí)行在目的內(nèi)存的當(dāng)前存儲單元中寫入第一子數(shù)據(jù)、讀取源內(nèi)存中當(dāng)前存儲單元的第二子數(shù)據(jù)、在目的內(nèi)存的當(dāng)前存儲單元中寫入第二子數(shù)據(jù)的過程,因而寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸這一場景發(fā)生的次數(shù)等于目的內(nèi)存中執(zhí)行過寫入第二子數(shù)據(jù)的存儲單元的個數(shù)(也就是源內(nèi)存中執(zhí)行過讀取第二子數(shù)據(jù)的存儲單元的個數(shù)),從而可以更充分地檢測高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障,檢測效果更好。
在一種可能的實現(xiàn)方式中,目的內(nèi)存中的初始化數(shù)據(jù)和源內(nèi)存中的初始化數(shù)據(jù)互相取反。具體實現(xiàn)時,高速緩沖存儲器的故障檢測裝置還可以包括初始化單元。初始化單元用于對目的內(nèi)存的至少一個存儲單元和源內(nèi)存的至少一個存儲單元進(jìn)行初始化操作,具體操作過程如下:在數(shù)據(jù)讀寫單元將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元之前,將目的內(nèi)存的初始化數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,對目的內(nèi)存的初始化數(shù)據(jù)取反操作得到源內(nèi)存的初始化數(shù)據(jù),按照一一對應(yīng)關(guān)系將源內(nèi)存的初始化數(shù)據(jù)寫入源內(nèi)存的至少一個存儲單元。
采用上述方案,如果高速緩沖存儲器的數(shù)據(jù)讀寫單元在數(shù)據(jù)讀寫過程中某個比特位發(fā)生了漏讀或漏寫,那么故障檢測單元在比較源內(nèi)存中存在比特位漏讀或漏寫現(xiàn)象的存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的目的內(nèi)存的存儲單元存儲的數(shù)據(jù)時,由于這兩個存儲單元的初始化數(shù)據(jù)本就互相取反,因而故障檢測單元在進(jìn)行數(shù)據(jù)比較時這兩個存儲單元的數(shù)據(jù)不可能完全一致,從而故障檢測單元可以檢測出寫邏輯電路和讀邏輯電路間存在干擾故障。
在一種可能的實現(xiàn)方式中,高速緩沖存儲器的故障檢測裝置可用于檢測二級高速緩沖存儲器或者三級高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障。當(dāng)然,若隨著技術(shù)的發(fā)展出現(xiàn)更高級別的高速緩沖存儲器,高速緩沖存儲器的故障檢測裝置也可用于檢測更高級別的高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障。
附圖說明
圖1為現(xiàn)有技術(shù)提供的CPU、L1Cache、L2Cache與主存儲器之間的連接關(guān)系的示意圖;
圖2為現(xiàn)有技術(shù)提供的L2Cache的內(nèi)部邏輯結(jié)構(gòu)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例提供的一種高速緩沖存儲器的故障檢測方法的流程圖;
圖4為本發(fā)明實施例提供的另一種高速緩沖存儲器的故障檢測方法的流程圖;
圖5為本發(fā)明實施例提供的一種高速緩沖存儲器的故障檢測裝置的結(jié)構(gòu)示意圖。
具體實施方式
為了更好地理解本發(fā)明實施例的上述目的、方案和優(yōu)勢,下文提供了詳細(xì)描述。該詳細(xì)描述通過使用框圖、流程圖等附圖和/或示例,闡明了裝置和/或方法的各種實施方式。在這些框圖、流程圖和/或示例中,包含一個或多個功能和/或操作。本領(lǐng)域技術(shù)人員將理解到:這些框圖、流程圖或示例內(nèi)的各個功能和/或操作,能夠通過各種各樣的硬件、軟件、固件單獨或共同實施,或者通過硬件、軟件和固件的任意組合實施。
本發(fā)明實施例提供一種高速緩沖存儲器的故障檢測方法及裝置,用以實現(xiàn)對高速緩沖存儲器中的寫邏輯電路與讀邏輯電路之間干擾故障的檢測。
下面,對本發(fā)明實施例涉及的基本概念進(jìn)行解釋。需要說明的是,這些解釋是為了讓本發(fā)明實施例更容易被理解,而不應(yīng)該視為對本發(fā)明所要求的保護(hù)范圍的限定。
一、主存儲器、CPU和Cache
本發(fā)明實施例中,涉及CPU通過Cache向主存儲器寫入數(shù)據(jù)的過程以及CPU通過Cache從主存儲器讀取數(shù)據(jù)的過程。其中,主存儲器是計算機(jī)中用于存放指令和數(shù)據(jù)的硬件設(shè)備。
其中,主存儲器可以是一種易失性存儲器,即系統(tǒng)斷電或出現(xiàn)其它故障后,主存儲器中保存的數(shù)據(jù)會丟失,或者主存儲器是指CPU尋址空間地址對應(yīng)的存儲空間。本發(fā)明實施例中,作為主存儲器的存儲介質(zhì)可以包括:同步動態(tài)隨機(jī)存儲器(Synchronous Dynamic Random Access Memory,SDRAM)、雙倍數(shù)據(jù)率同步動態(tài)隨機(jī)存儲器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM)、第二代雙倍數(shù)據(jù)率同步動態(tài)隨機(jī)存取存儲器(Double-Data-Rate Two Synchronous Dynamic Random Access Memory,DDR2 SDRAM)、第三代雙倍數(shù)據(jù)率同步動態(tài)隨機(jī)存取存儲器(Double-Data-Rate Three Synchronous Dynamic Random Access Memory,DDR2SDRAM)、或第四代雙倍數(shù)據(jù)率同步動態(tài)隨機(jī)存取存儲器(Double-Data-Rate Fourth Synchronous Dynamic Random Access Memory,DDR2SDRAM)。
CPU是向主存儲器發(fā)送數(shù)據(jù)讀寫操作指令的設(shè)備。CPU向主存儲器中寫入數(shù)據(jù)或者從主存儲器中讀取數(shù)據(jù)的過程均需要通過Cache進(jìn)行,Cache中保存了CPU經(jīng)常使用或修改的數(shù)據(jù),可供CPU直接從Cache中直接讀取或?qū)懭?。由于Cache傳輸數(shù)據(jù)的速度遠(yuǎn)大于主存儲器傳輸數(shù)據(jù)的速度,因而CPU通過Cache向主存儲器寫入CPU經(jīng)常修改的數(shù)據(jù),可以提高CPU寫入數(shù)據(jù)的速度,避免寫入數(shù)據(jù)的過程占用過多系統(tǒng)資源。CPU通過Cache從主存儲器中讀取CPU經(jīng)常使用的數(shù)據(jù),可以提高CPU讀取數(shù)據(jù)的速度,避免讀取數(shù)據(jù)的過程占用過多系統(tǒng)資源。
其中,CPU通過Cache向主存儲器中寫入數(shù)據(jù)的過程為:當(dāng)CPU要將數(shù)據(jù)a寫入主存儲器中地址為A的存儲單元時,CPU首先在Cache中查詢Cache中是否保存有主存儲器中地址A的存儲單元的數(shù)據(jù)。若是,則在Cache中將該數(shù)據(jù)改寫為a,然后再通過Cache將a寫入主存儲器中地址A的存儲單元中;若否,則主存儲器將主存儲器中地址A的存儲單元的數(shù)據(jù)發(fā)送給Cache,CPU在Cache中將該數(shù)據(jù)改寫為a,然后再通過Cache將a寫入主存儲器中地址A的存儲單元。
其中,CPU通過Cache從主存儲器中讀取數(shù)據(jù)的過程為:當(dāng)CPU要讀取主存儲器中地址為B的存儲單元的數(shù)據(jù)時,CPU首先在Cache中查詢Cache中是否保存有主存儲器中地址B的存儲單元的數(shù)據(jù),若是,則直接從Cache中讀取該數(shù)據(jù),若否,Cache從主存儲器中讀取地址B的存儲單元的數(shù)據(jù),然后CPU再從Cahce中讀取該數(shù)據(jù)。
需要說明的是,本發(fā)明實施例中向主存儲器中寫入數(shù)據(jù)或者從主存儲器中讀取數(shù)據(jù)的過程均通過Cache進(jìn)行。
本發(fā)明實施例中,Cache可以為L2Cache,也可以是L3Cahce。當(dāng)然,如果隨著技術(shù)的發(fā)展出現(xiàn)更高級別的高速緩沖存儲器,比如四級高速緩沖存儲器或者五級高速緩沖存儲器等,本發(fā)明實施例中的高速緩沖存儲器也可以是該更高級別的高速緩沖存儲器。
本發(fā)明實施例提供的高速緩沖存儲器的故障檢測方法可由CPU執(zhí)行,也可以由軟件程序執(zhí)行,其中,該軟件程序可安裝在CPU中,或者安裝在除CPU外的其他設(shè)備上;本發(fā)明實施例提供的高速緩沖存儲器的故障檢測裝置可以是配置在CPU中的裝置,也可以是單獨配置的裝置。
二、存儲區(qū)域和存儲單元
存儲單元是主存儲器或高速緩沖存儲器中可以編址的最小單元,即主存儲器中,每一個存儲單元具有唯一一個存儲地址。
在一個存儲單元中,根據(jù)CPU位寬的不同,可以存放不同位數(shù)的數(shù)據(jù)。例如,當(dāng)CPU的位寬為16位時,該CPU對應(yīng)的主存儲器中,每個存儲單元用于存放16位數(shù)據(jù);當(dāng)CPU的位寬為32位時,該CPU對應(yīng)的主存儲器中,每個存儲單元用于存放32位數(shù)據(jù)。
存儲區(qū)域由若干個存儲單元構(gòu)成,是主存儲器或高速緩沖存儲器中用于存儲數(shù)據(jù)的區(qū)域。
三、目的內(nèi)存和源內(nèi)存
目的內(nèi)存和源內(nèi)存是本發(fā)明實施例中定義的主存儲器中的兩個存儲區(qū)域。目的內(nèi)存和源內(nèi)存是主存儲器映射在高速緩沖存儲器中的兩個存儲區(qū)域,目的內(nèi)存和源內(nèi)存均包括至少一個存儲單元。目的內(nèi)存包含的至少一個存儲單元的數(shù)量與源內(nèi)存包含的至少一個存儲單元的數(shù)量相同。在本發(fā)明實施例中,源內(nèi)存主要用于從中讀取第二數(shù)據(jù),因而為了便于理解,將其命名為“源內(nèi)存”;目的內(nèi)存主要用于將第二數(shù)據(jù)寫入其中,因而為了便于理解,將其命名為“目的內(nèi)存”。
本發(fā)明實施例中,可以對目的內(nèi)存和源內(nèi)存進(jìn)行初始化。較優(yōu)地,目的內(nèi)存的至少一個存儲單元的初始化數(shù)據(jù)和源內(nèi)存的至少一個存儲單元的初始化數(shù)據(jù)互相取反,即目的內(nèi)存的至少一個存儲單元中任一個存儲單元的初始化數(shù)據(jù),與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元的初始化數(shù)據(jù)互相取反。以初始化數(shù)據(jù)為二進(jìn)制數(shù)據(jù)為例,如果目的內(nèi)存中某個存儲單元的初始化數(shù)據(jù)為0100,那么該存儲單元對應(yīng)的源內(nèi)存的存儲單元的初始化數(shù)據(jù)為1011。
本發(fā)明實施例中,目的內(nèi)存和源內(nèi)存中用于執(zhí)行本發(fā)明實施例所提供的故障檢測方法的存儲單元,在本發(fā)明實施例的執(zhí)行過程中不用作其他用途。
下面,結(jié)合附圖對本發(fā)明實施例進(jìn)行詳細(xì)介紹。
本發(fā)明實施例提供一種高速緩沖存儲器的故障檢測方法,如圖3所示,該方法包括:
S301:將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元。
其中,源內(nèi)存中的初始化數(shù)據(jù)包括第二數(shù)據(jù);按照一一對應(yīng)關(guān)系,目的內(nèi)存的一個存儲單元映射在高速緩沖存儲器中的存儲單元與對應(yīng)的源內(nèi)存的一個存儲單元映射在高速緩沖存儲器中的存儲單元不同;將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
源內(nèi)存的初始化數(shù)據(jù)包括第二數(shù)據(jù)的含義是:在初始化源內(nèi)存時,可以對源內(nèi)存的全部或部分存儲單元進(jìn)行初始化,而S301中讀取的源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)時,可以讀取源內(nèi)存的初始化數(shù)據(jù)的部分?jǐn)?shù)據(jù)或全部數(shù)據(jù)作為第二數(shù)據(jù)。以讀取源內(nèi)存的初始化數(shù)據(jù)的部分?jǐn)?shù)據(jù)作為第二數(shù)據(jù)為例,假設(shè)源內(nèi)存包含10個存儲單元,在初始化源內(nèi)存時,可以僅對源內(nèi)存中的8個存儲單元進(jìn)行初始化操作;若源內(nèi)存的至少一個存儲單元的數(shù)量為6個,那么,S301中在讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)時,讀取的第二數(shù)據(jù)為進(jìn)行過初始化操作的8個存儲單元中的某6個存儲單元的數(shù)據(jù)。即初始化數(shù)據(jù)包含源內(nèi)存中的8個存儲單元的數(shù)據(jù),而第二數(shù)據(jù)只包含這8個存儲單元中6個存儲單元的數(shù)據(jù),因而源內(nèi)存的初始化數(shù)據(jù)包括第二數(shù)據(jù)。
S302:當(dāng)目的內(nèi)存中寫入第二數(shù)據(jù)的至少一個存儲單元中存在一個存儲單元,該一個存儲單元存儲的數(shù)據(jù)與按照一一對應(yīng)關(guān)系該一個存儲單元對應(yīng)的源內(nèi)存中的一個存儲單元存儲的數(shù)據(jù)不一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
其中,目的內(nèi)存中寫入第二數(shù)據(jù)的至少一個存儲單元中存在一個存儲單元,該一個存儲單元存儲的數(shù)據(jù)與按照一一對應(yīng)關(guān)系該一個存儲單元對應(yīng)的源內(nèi)存中的一個存儲單元存儲的數(shù)據(jù)不一致的具體含義是:執(zhí)行過S301的目的內(nèi)存的存儲單元中,如果某個存儲單元存儲的數(shù)據(jù),與該存儲單元對應(yīng)的源內(nèi)存的存儲單元存儲的數(shù)據(jù)不同,那么可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
可選地,當(dāng)目的內(nèi)存中寫入所述第二數(shù)據(jù)的至少一個存儲單元中的每個存儲單元存儲的數(shù)據(jù),與按照一一對應(yīng)關(guān)系每個存儲單元對應(yīng)的源內(nèi)存中的每個存儲單元存儲的數(shù)據(jù)均一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間不存在干擾故障。
S302中確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障的方式可以理解為:只要目的內(nèi)存中執(zhí)行過S301的任一個存儲單元中存儲的數(shù)據(jù),與該存儲單元對應(yīng)的源內(nèi)存中存儲的數(shù)據(jù)不一致時,則確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。只有當(dāng)目的內(nèi)存中寫入所述第二數(shù)據(jù)的至少一個存儲單元中的每個存儲單元存儲的數(shù)據(jù),與按照一一對應(yīng)關(guān)系每個存儲單元對應(yīng)的源內(nèi)存中的每個存儲單元存儲的數(shù)據(jù)均一致時,才能確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間不存在干擾故障。
假設(shè)目的內(nèi)存中執(zhí)行過S301的存儲單元為M1、M2、M3和M4,源內(nèi)存中執(zhí)行過S301的存儲單元為Y1、Y2、Y3和Y4,其中,M1、M2、M3、M4與Y1、Y2、Y3、Y4的一一對應(yīng)關(guān)系為下面以三種情況舉例說明,如何判斷高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間是否存在干擾故障。
第一種情況:
在執(zhí)行過S301后,如果M1、M2、M3和M4中存儲的數(shù)據(jù)分別為0100、1000、1001和1100,Y1、Y2、Y3和Y4中存儲的數(shù)據(jù)分別為1100、1000、1001和1100,那么,由于M1中存儲的數(shù)據(jù)與其對應(yīng)的存儲單元Y1中存儲的數(shù)據(jù)不一致,則可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
第二種情況:
在執(zhí)行過S301后,如果M1、M2、M3和M4中存儲的數(shù)據(jù)分別為1100、1001、1011和1100,Y1、Y2、Y3和Y4中存儲的數(shù)據(jù)分別為1100、1000、1001和1100,那么,由于M2中存儲的數(shù)據(jù)與其對應(yīng)的存儲單元Y2中存儲的數(shù)據(jù)不一致,M3中存儲的數(shù)據(jù)與其對應(yīng)的存儲單元Y3中存儲的數(shù)據(jù)也不一致,因而可以確定高速緩沖存儲器中的寫邏輯電路與讀邏輯電路之間存在干擾故障。
第三種情況:
在執(zhí)行過S301后,如果M1、M2、M3和M4中存儲的數(shù)據(jù)分別為1100、1000、1001和1100,Y1、Y2、Y3和Y4中存儲的數(shù)據(jù)分別為1100、1000、1001和1100,那么,由于M1、M2、M3和M4中存儲的數(shù)據(jù)與其分別對應(yīng)的存儲單元Y1、Y2、Y3和Y4中存儲的數(shù)據(jù)完全一致,則可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間不存在干擾故障。
當(dāng)S302中確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障后,可以針對該干擾故障發(fā)出告警或者針對該干擾故障發(fā)出停止通過高速緩沖器進(jìn)行數(shù)據(jù)讀寫操作的指令,從而避免因?qū)戇壿嬰娐放c讀邏輯電路之間存在的干擾故障影響數(shù)據(jù)讀寫操作的準(zhǔn)確性。
本發(fā)明實施例中,第一數(shù)據(jù)是指寫入目的內(nèi)存的至少一個存儲單元的數(shù)據(jù)的整體,即寫入目的內(nèi)存的至少一個存儲單元中每個存儲單元的數(shù)據(jù)共同組成第一數(shù)據(jù)。比如目的內(nèi)存中用于執(zhí)行圖3所示方法的存儲單元為M1、M2、M3和M4,在執(zhí)行S301時,寫入M1、M2、M3和M4的數(shù)據(jù)分別為Data1、Data2、Data3和Data4,那么第一數(shù)據(jù)是指Data1、Data2、Data3和Data4這一數(shù)據(jù)的整體;同樣,第二數(shù)據(jù)也是指讀取的源內(nèi)存中的至少一個存儲單元的數(shù)據(jù)的整體,此處不再贅述。
本發(fā)明實施例中,目的內(nèi)存和源內(nèi)存是為了執(zhí)行圖3所示的高速緩沖存儲器的故障檢測方法而在主存儲器中劃分出來的兩個存儲區(qū)域。目的內(nèi)存和源內(nèi)存中的全部或部分存儲單元用于執(zhí)行圖3所示的方法。
當(dāng)目的內(nèi)存和源內(nèi)存中的全部存儲單元用于執(zhí)行圖3所示的方法時,目的內(nèi)存包括的存儲單元的數(shù)量與源內(nèi)存包括的存儲單元的數(shù)量相同;當(dāng)目的內(nèi)存和源內(nèi)存中的部分存儲單元用于執(zhí)行圖3所示的方法時,對目的內(nèi)存包括的存儲單元的數(shù)量和源內(nèi)存包括的存儲單元的數(shù)量不做限制,但為了滿足一一對應(yīng)關(guān)系,需滿足目的內(nèi)存中用于執(zhí)行圖3所示方法的存儲單元(即目的內(nèi)存的至少一個存儲單元)的數(shù)量,與源內(nèi)存中用于執(zhí)行圖3所示方法的存儲單元(即源內(nèi)存的至少一個存儲單元)的數(shù)量相同。
此外,在執(zhí)行S301時,對目的內(nèi)存的至少一個存儲單元的執(zhí)行順序和源內(nèi)存的至少一個存儲單元的執(zhí)行順序均不做限制,只需保證目的內(nèi)存中的至少一個存儲單元和對應(yīng)的源內(nèi)存中的至少一個存儲單元均執(zhí)行過S301即可。比如,對于將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元這一操作,假設(shè)目的內(nèi)存中用于執(zhí)行圖3所示方法的存儲單元為M1、M2、M3和M4,在執(zhí)行S301時,寫入M1、M2、M3和M4的第一數(shù)據(jù)為Data1、Data2、Data3和Data4這一數(shù)據(jù)的整體,那么在分別將Data1、Data2、Data3和Data4寫入M1、M2、M3和M4時,可以先將Data1寫入M1,也可以先將Data3寫入M3,只需保證執(zhí)行S301后M1、M2、M3和M4分別存儲有Data1、Data2、Data3和Data4即可。同樣地,對于讀取源內(nèi)存的至少一個存儲單元的第二數(shù)據(jù)的操作,對存儲單元的執(zhí)行順序也不做限制,此處不再贅述。
目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元在按照一一對應(yīng)關(guān)系對應(yīng)時,目的內(nèi)存中的至少一個存儲單元和源內(nèi)存中的至少一個存儲單元可以按照存儲單元地址遞加的順序一一對應(yīng),也可以不按照存儲單元地址遞加的順序一一對應(yīng)。比如,假設(shè)目的內(nèi)存中的四個存儲單元為M1、M2、M3和M4,源內(nèi)存中的四個存儲單元為Y1、Y2、Y3和Y4,其一一對應(yīng)關(guān)系可以是也可以是也可以是
本發(fā)明實施例中需滿足:目的內(nèi)存中任一個存儲單元與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元映射在高速緩沖存儲器中的存儲單元不同即可,比如當(dāng)目的內(nèi)存中的四個存儲單元和源內(nèi)存中的四個存儲單元的一一對應(yīng)關(guān)系為時,應(yīng)保證M1和Y1映射到高速緩沖存儲器中的不同的存儲單元,M2和Y3映射到高速緩沖存儲器中的不同的存儲單元,M3和Y2映射到高速緩沖存儲器中的不同的存儲單元,M4和Y4映射到高速緩沖存儲器中的不同的存儲單元。
需要注意的是,目的內(nèi)存中的至少一個存儲單元和源內(nèi)存中的至少一個存儲單元在一一對應(yīng)后需滿足:目的內(nèi)存中任一個存儲單元與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元映射在高速緩沖存儲器中的存儲單元不同。
本發(fā)明實施例中,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。即相當(dāng)于圖2所示的高速緩沖存儲器的內(nèi)部邏輯結(jié)構(gòu)中L201的傳輸過程與L202的傳輸過程存在時間重疊。比如,當(dāng)將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程發(fā)生在1s~10s,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程發(fā)生在3s~8s時,兩個過程存在時間重疊;當(dāng)將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程發(fā)生在1s~10s,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程發(fā)生在7s~12s時,兩個過程也存在時間重疊。
采用圖3所示的高速緩沖存儲器的故障檢測方法,由于S301中將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊,相當(dāng)于通過高速緩沖存儲器中的寫邏輯電路向目的內(nèi)存的至少一個存儲單元寫入第一數(shù)據(jù)的過程,與通過高速緩沖存儲器中的讀邏輯電路讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。因此,如果高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間存在干擾故障,則向目的內(nèi)存的至少一個存儲單元中寫入的第一數(shù)據(jù)和從源內(nèi)存的至少一個存儲單元中讀取的第二數(shù)據(jù)會產(chǎn)生比特位跳變。
由于圖3所示的高速緩沖存儲器的故障檢測方法中,在讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)后,又將讀取到的第二數(shù)據(jù)寫入了目的內(nèi)存的至少一個存儲單元,那么目的內(nèi)存的至少一個存儲單元中存儲的數(shù)據(jù)即為讀取到的第二數(shù)據(jù)。由于高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間存在干擾故障時,從源內(nèi)存的至少一個存儲單元中讀取的第二數(shù)據(jù)會產(chǎn)生比特位跳變,因而會導(dǎo)致讀取到的第二數(shù)據(jù)與源內(nèi)存的至少一個存儲單元中原本存儲的數(shù)據(jù)不同,進(jìn)一步導(dǎo)致目的內(nèi)存的至少一個存儲單元中存儲的第二數(shù)據(jù)與源內(nèi)存的至少一個存儲單元中原本存儲的數(shù)據(jù)不同。
因此,S302中,可以通過比較目的內(nèi)存的至少一個存儲單元中存儲的數(shù)據(jù)與源內(nèi)存中至少一個存儲單元存儲的數(shù)據(jù)是否相同來判斷高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間是否存在干擾故障,即當(dāng)目的內(nèi)存中執(zhí)行過上述寫入第二數(shù)據(jù)操作的存儲單元中存在一個存儲單元,該存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的源內(nèi)存中的存儲單元中存儲的數(shù)據(jù)不一致時,可以確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
S301中,實現(xiàn)將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊的方式有多種,比如通過定時器實現(xiàn)或者通過計數(shù)器實現(xiàn),其中通過定時器實現(xiàn)的實現(xiàn)方式可以是:在執(zhí)行S301時,啟動定時器并將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;當(dāng)所述定時器的當(dāng)前時長為零時,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)。
其中,所述定時器設(shè)置的時長滿足:將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
在通過定時器實現(xiàn)上述兩個過程的時間重疊時,定時器設(shè)置的時長由CPU、Cache和主存儲器所在的計算機(jī)設(shè)備的硬件配置、軟件參數(shù)和數(shù)據(jù)傳輸速度等因素共同決定。對于不同的計算機(jī)設(shè)備,定時器設(shè)置的時長的具體值可以不同。
通過計數(shù)器實現(xiàn)將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊的方式與通過上述通過定時器實現(xiàn)的方式類似,此處不再贅述。
S301中,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊可以有多種情況,例如:第一種情況,在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中,發(fā)生讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程。比如,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程發(fā)生在1s~10s,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程發(fā)生在3s~8s。第二種情況,在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中開始讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程,但在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程結(jié)束時,讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程還未結(jié)束。比如,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程發(fā)生在1s~10s,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程發(fā)生在7s~12s。
其中,由于上述第一種情況中,兩個過程存在時間重疊的時間最長,因而在檢測高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間是否存在的干擾故障時,采用第一種重疊方式比采用第二種重疊方式檢測的效果更好。
可選地,S301中將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元這一步驟的實現(xiàn)方式有多種,該步驟的實現(xiàn)方式可以有多種,下面僅列舉其中兩種實現(xiàn)方式。
第一種實現(xiàn)方式:
分別將目的內(nèi)存的至少一個存儲單元中的任意一個存儲單元作為目的內(nèi)存的當(dāng)前存儲單元,并將目的內(nèi)存的當(dāng)前存儲單元對應(yīng)的源內(nèi)存的至少一個存儲單元中的一個存儲單元作為源內(nèi)存的當(dāng)前存儲單元,針對每個目的內(nèi)存的當(dāng)前存儲單元和源內(nèi)存的當(dāng)前存儲單元執(zhí)行:
將第一子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元,讀取源內(nèi)存的當(dāng)前存儲單元的第二子數(shù)據(jù),并將第二子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元。
其中,寫入目的內(nèi)存的至少一個存儲單元中的每個存儲單元的第一子數(shù)據(jù)組成第一數(shù)據(jù),讀取源內(nèi)存的至少一個存儲單元中的每個存儲單元的第二子數(shù)據(jù)組成第二數(shù)據(jù)。
為了便于理解,下面舉例說明S301的第一種實現(xiàn)方式:假設(shè)目的內(nèi)存中用于執(zhí)行S301的存儲單元為M1和M2,源內(nèi)存中用于執(zhí)行S301的存儲單元為Y1和Y2,目的內(nèi)存的存儲單元與源內(nèi)存的存儲單元的一一對應(yīng)關(guān)系為
在采用第一種實現(xiàn)方式執(zhí)行S301時,先將目的內(nèi)存中的存儲單元M1作為當(dāng)前存儲單元,將第一子數(shù)據(jù)Data1寫入M1,讀取Y1中的第二子數(shù)據(jù)Data2,將第二子數(shù)據(jù)Data2寫入M1,其中將第一子數(shù)據(jù)Data1寫入M1的過程與讀取Y1中的第二子數(shù)據(jù)Data2的過程存在時間重疊。然后將目的內(nèi)存中的存儲單元M2作為當(dāng)前存儲單元,將第一子數(shù)據(jù)Data3寫入M2,讀取Y2中的第二子數(shù)據(jù)Data4,將第二子數(shù)據(jù)Data4寫入M2,其中,將第一子數(shù)據(jù)Data3寫入M2的過程與讀取Y2中的第二子數(shù)據(jù)Data4的過程存在時間重疊。通過執(zhí)行如上步驟,完成S301。
在上述舉例中,第一子數(shù)據(jù)Data1和第一子數(shù)據(jù)Data3共同組成第一數(shù)據(jù),第二子數(shù)據(jù)Data2和第二子數(shù)據(jù)Data4共同組成第二數(shù)據(jù)。
在S301的第一種實現(xiàn)方式中,通過循環(huán)執(zhí)行在目的內(nèi)存的當(dāng)前存儲單元中寫入第一子數(shù)據(jù)、讀取源內(nèi)存中當(dāng)前存儲單元的第二子數(shù)據(jù)、在目的內(nèi)存的當(dāng)前存儲單元中寫入第二子數(shù)據(jù)的過程完成S301。在這種實現(xiàn)方式中,高速緩沖存儲器中發(fā)生寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸這一場景的次數(shù)等于目的內(nèi)存中執(zhí)行過寫入第二子數(shù)據(jù)的存儲單元的個數(shù)(也就是源內(nèi)存中執(zhí)行過讀取第二子數(shù)據(jù)的存儲單元的個數(shù))。
第二種實現(xiàn)方式:
先將第一數(shù)據(jù)包括的至少一個第一子數(shù)據(jù)分別寫入目的內(nèi)存的至少一個存儲單元,然后再讀取源內(nèi)存中的至少一個存儲單元存儲的至少一個第二子數(shù)據(jù),最后再將至少一個第二子數(shù)據(jù)分別寫入目的內(nèi)存的至少一個存儲單元。在這種實現(xiàn)方式中,高速緩沖存儲器中發(fā)生寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸這一場景的次數(shù)等于一,即在將最后一個第一子數(shù)據(jù)寫入目的內(nèi)存的最后一個存儲單元的過程和讀取源內(nèi)存中的第一個存儲單元中的第二子數(shù)據(jù)的過程中,寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸。
為了便于理解,下面舉例說明S301的第二種實現(xiàn)方式:假設(shè)目的內(nèi)存中用于執(zhí)行S301的存儲單元為M1和M2,源內(nèi)存中用于執(zhí)行S301的存儲單元為Y1和Y2,目的內(nèi)存的存儲單元與源內(nèi)存的存儲單元的一一對應(yīng)關(guān)系為在采用第二種實現(xiàn)方式執(zhí)行S301時,先將第一子數(shù)據(jù)Data1寫入M1,再將第一子數(shù)據(jù)Data3寫入M2;然后讀取Y1中的第二子數(shù)據(jù)Data2,再讀取Y2中的第二子數(shù)據(jù)Data4;其中,將第一子數(shù)據(jù)Data3寫入M2的過程與讀取Y1中的第二子數(shù)據(jù)Data2的過程存在時間重疊;然后將第二子數(shù)據(jù)Data2寫入M1,再將第二子數(shù)據(jù)Data4寫入M2。
在上述舉例中,第一子數(shù)據(jù)Data1和第一子數(shù)據(jù)Data3共同組成第一數(shù)據(jù),第二子數(shù)據(jù)Data2和第二子數(shù)據(jù)Data4共同組成第二數(shù)據(jù)。
通過第一種實現(xiàn)方式和第二種實現(xiàn)方式的對比不難看出,采用S301的第一種實現(xiàn)方式,寫邏輯電路與讀邏輯電路間同時存在數(shù)據(jù)傳輸?shù)倪@一場景的次數(shù)更多,因而可以更充分地檢測高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障,檢測結(jié)果更準(zhǔn)確,檢測效果更好。
優(yōu)選地,目的內(nèi)存中的初始化數(shù)據(jù)和源內(nèi)存中的初始化數(shù)據(jù)互相取反,具體實現(xiàn)時,可以在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元之前,將目的內(nèi)存的初始化數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;對目的內(nèi)存的初始化數(shù)據(jù)取反操作得到源內(nèi)存的初始化數(shù)據(jù),按照一一對應(yīng)關(guān)系將源內(nèi)存的初始化數(shù)據(jù)寫入源內(nèi)存的至少一個存儲單元。
其中,該初始化步驟應(yīng)視為本發(fā)明實施例所提供的故障檢測方法的前期準(zhǔn)備步驟,和計算機(jī)領(lǐng)域中傳統(tǒng)的初始化操作的含義不同。
在對目的內(nèi)存的至少一個存儲單元和源內(nèi)存的至少一個存儲單元進(jìn)行初始化時,需要先對目的內(nèi)存的至少一個存儲單元進(jìn)行初始化,然后再對源內(nèi)存的至少一個存儲單元進(jìn)行初始化,其原因是:
初始化步驟即寫入數(shù)據(jù)的步驟,通過前面介紹的CPU通過Cache向主存儲器中寫入數(shù)據(jù)的過程可以知道,CPU通過高速緩沖存儲器向主存儲器中的存儲單元寫入數(shù)據(jù)后,高速緩沖存儲器中會存儲有該存儲單元的數(shù)據(jù)。若先對源內(nèi)存的至少一個存儲單元進(jìn)行初始化,再對目的內(nèi)存的至少一個存儲單元進(jìn)行初始化,則高速緩沖存儲器中會保存有源內(nèi)存的至少一個存儲單元的數(shù)據(jù)。那么在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元時,就可以直接在高速緩沖存儲器中寫入,而不會發(fā)生主存儲器向高速緩沖存儲器發(fā)送目的內(nèi)存的至少一個存儲單元存儲的數(shù)據(jù)的過程,即圖2所示的高速緩沖存儲器的內(nèi)部邏輯結(jié)構(gòu)中L201的傳輸過程,也就不會發(fā)生寫邏輯電路與讀邏輯電路同時進(jìn)行數(shù)據(jù)傳輸?shù)倪^程,因而也就無法檢測高速緩沖存儲器中的寫邏輯電路與讀邏輯電路間是否存在干擾故障。
在對目的內(nèi)存的至少一個存儲單元和源內(nèi)存的至少一個存儲單元進(jìn)行初始化時,二者的初始化數(shù)據(jù)可以互相取反,這是因為:如果在執(zhí)行圖3所示方法的過程中某個比特位發(fā)生了漏讀或漏寫,那么在比較源內(nèi)存中存在比特位漏讀或漏寫情況現(xiàn)象的存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的目的內(nèi)存的存儲單元存儲的數(shù)據(jù)時,由于這兩個存儲單元的初始化數(shù)據(jù)本就互相取反,因而在進(jìn)行數(shù)據(jù)比較時這兩個存儲單元的數(shù)據(jù)不可能完全一致,從而可以檢測出寫邏輯電路和讀邏輯電路間存在干擾故障。
需要說明的是,目的內(nèi)存中的初始化數(shù)據(jù)和源內(nèi)存中的初始化數(shù)據(jù)也可以不互相取反,比如,若第一數(shù)據(jù)與源內(nèi)存中的初始化數(shù)據(jù)互相取反,也可達(dá)到目的內(nèi)存中的初始化數(shù)據(jù)和源內(nèi)存中的初始化數(shù)據(jù)互相取反所達(dá)到的效果。因為在S301中已經(jīng)將第一數(shù)據(jù)寫入了目的內(nèi)存的至少一個存儲單元,因此,如果在執(zhí)行圖3所示方法的過程中某個比特位發(fā)生了漏讀或漏寫,那么在比較源內(nèi)存中存在比特位漏讀或漏寫情況現(xiàn)象的存儲單元存儲的數(shù)據(jù)與該存儲單元對應(yīng)的目的內(nèi)存的存儲單元存儲的數(shù)據(jù)時,由于第一數(shù)據(jù)與源內(nèi)存的初始化數(shù)據(jù)本就互相取反,因而在進(jìn)行數(shù)據(jù)比較時這兩個存儲單元的數(shù)據(jù)不可能完全一致,從而可以檢測出寫邏輯電路和讀邏輯電路間存在干擾故障。
在圖3所示方法中,通過對目的內(nèi)存的至少一個存儲單元和源內(nèi)存的至少一個存儲單元執(zhí)行S301操作,使得高速緩沖存儲器中的寫邏輯電路和讀邏輯電路間同時存在數(shù)據(jù)傳輸,從而通過判斷目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元存儲的數(shù)據(jù)是否一致來判斷高速緩沖存儲器中的寫邏輯電路和讀邏輯電路間是否存在干擾故障。
前面已經(jīng)提到,在執(zhí)行S301時,對目的內(nèi)存的至少一個存儲單元的執(zhí)行順序和源內(nèi)存的至少一個存儲單元的執(zhí)行順序均不做限制,只需保證目的內(nèi)存中的至少一個存儲單元和對應(yīng)的源內(nèi)存中的至少一個存儲單元均執(zhí)行過S301即可。但是在具體應(yīng)用中,在執(zhí)行S301時,目的內(nèi)存的至少一個存儲單元的執(zhí)行順序和源內(nèi)存的至少一個存儲單元的執(zhí)行順序遵循存儲單元的地址遞增的執(zhí)行順序是比較常見的實現(xiàn)方式。
下面,結(jié)合圖4,給出一種遵循存儲單元的地址遞增的執(zhí)行順序的高速緩沖存儲器的故障檢測方法。圖4所示的高速緩沖存儲器的故障檢測方法可視為圖3所示的高速緩沖存儲器的故障檢測方法的一種優(yōu)選的實現(xiàn)方式。
如圖4所示,該方法包括:
S401:將第一子數(shù)據(jù)寫入目的內(nèi)存中第一地址指向的存儲單元;
S402:經(jīng)過設(shè)定時長后,讀取源內(nèi)存中第二地址指向的存儲單元中的第二子數(shù)據(jù);
其中,目的內(nèi)存和源內(nèi)存是高速緩沖存儲器映射在主存儲器中的兩個存儲區(qū)域,目的內(nèi)存的初始化數(shù)據(jù)和源內(nèi)存的初始化數(shù)據(jù)互相取反,第一地址的存儲單元和第二地址的存儲單元映射到高速緩沖存儲器中不同的存儲單元;設(shè)定時長的設(shè)置滿足:將第一子數(shù)據(jù)寫入目的內(nèi)存中第一地址的存儲單元的過程與讀取源內(nèi)存中第二地址的存儲單元中的第二子數(shù)據(jù)的過程存在時間重疊。
S403:將第二子數(shù)據(jù)寫入第一地址指向的存儲單元;
S404:將第一地址加一,并將第二地址加一;
其中,加一后的第一地址指向目的內(nèi)存中的下一個存儲單元,加一后的第二地址指向源內(nèi)存中的下一個存儲單元。
S405:判斷是否滿足以下條件:第一地址加一的次數(shù)和第二地址加一的次數(shù)均等于設(shè)定次數(shù);如果不滿足,則返回執(zhí)行S401,如果滿足,則執(zhí)行S406;
其中,S401~S405相當(dāng)于前述的S301的第一種實現(xiàn)方式,S401~S405也可以采用前述的S301的第二種實現(xiàn)方式,此處不再贅述。
其中,假設(shè)目的內(nèi)存包括的存儲單元個數(shù)與源內(nèi)存包括的存儲單元的個數(shù)均為N,那么設(shè)定次數(shù)可以大于N,可以小于N,也可以等于N,圖4所示的高速緩沖存儲器的故障檢測方法中對設(shè)定次數(shù)不做限制。
在介紹圖3所示的高速緩沖存儲器的故障檢測方法時提到,目的內(nèi)存和源內(nèi)存中的全部或部分存儲單元用于執(zhí)行圖3所示的方法。同樣地,用于執(zhí)行圖4所示方法的也可以是目的內(nèi)存和源內(nèi)存的全部或部分存儲單元,目的內(nèi)存和源內(nèi)存中有多少個存儲單元用于執(zhí)行圖4所示的方法可以由設(shè)定次數(shù)決定。假設(shè)目的內(nèi)存包括的存儲單元個數(shù)與源內(nèi)存包括的存儲單元的個數(shù)均為N,那么針對不同的設(shè)定次數(shù),目的內(nèi)存和源內(nèi)存中有多少個存儲單元用于執(zhí)行圖4所示的方法可分為以下幾種情況:
第一種情況:
當(dāng)設(shè)定次數(shù)大于N時,相當(dāng)于目的內(nèi)存和源內(nèi)存的全部存儲單元均執(zhí)行了該方法,并且目的內(nèi)存和源內(nèi)存中各有至少一個存儲單元執(zhí)行了兩次或兩次以上。
第二種情況:
當(dāng)設(shè)定次數(shù)等于N時,相當(dāng)于目的內(nèi)存和源內(nèi)存的全部存儲單元均將該方法執(zhí)行了一次。
第三種情況:
當(dāng)設(shè)定次數(shù)小于N時,代表目的內(nèi)存和源內(nèi)存中的部分存儲單元用于執(zhí)行該方法。特別地,當(dāng)設(shè)定次數(shù)等于1時,代表目的內(nèi)存的一個存儲單元和源內(nèi)存的一個存儲單元執(zhí)行該方法后即對檢測結(jié)果進(jìn)行判斷。
S406:當(dāng)目的內(nèi)存中執(zhí)行過寫入第二子數(shù)據(jù)操作的存儲單元存儲的數(shù)據(jù)與源內(nèi)存中執(zhí)行過讀取第二子數(shù)據(jù)操作的存儲單元存儲的數(shù)據(jù)不完全一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
圖4所示的高速緩沖存儲器的故障檢測方法可視為圖3所示的高速緩沖存儲器的故障檢測方法的一種優(yōu)選的實現(xiàn)方式,圖4所示高速緩沖存儲器的故障檢測方法中未詳細(xì)解釋的內(nèi)容詳見圖3所示高速緩沖存儲器的故障檢測方法中的相關(guān)描述。
在圖4所示方法中,通過設(shè)定次數(shù)的設(shè)置,使得循環(huán)執(zhí)行S401~S403的次數(shù)等于設(shè)定次數(shù),即高速緩沖存儲器中寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸過程的次數(shù)等于設(shè)定次數(shù),從而通過判斷目的內(nèi)存中執(zhí)行過寫入第二子數(shù)據(jù)操作的存儲單元存儲的數(shù)據(jù)與源內(nèi)存中執(zhí)行過讀取第二子數(shù)據(jù)操作的存儲單元存儲的數(shù)據(jù)是否完全一致,來對高速緩沖存儲器中寫邏輯電路與讀邏輯電路間的干擾故障進(jìn)行檢測。
本發(fā)明實施例提供一種高速緩沖存儲器的故障檢測裝置,該裝置可用于執(zhí)行上述圖3所示的高速緩沖存儲器的故障檢測方法,或者用于執(zhí)行圖4所示的高速緩沖存儲器的故障檢測方法。如圖5所示,該高速緩沖存儲器的故障檢測裝置500包括:
數(shù)據(jù)讀寫單元501,用于將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元。
其中,源內(nèi)存的初始化數(shù)據(jù)包括第二數(shù)據(jù);按照一一對應(yīng)關(guān)系,目的內(nèi)存的一個存儲單元映射在高速緩沖存儲器中的存儲單元與對應(yīng)的源內(nèi)存的一個存儲單元映射在高速緩沖存儲器中的存儲單元不同;將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
故障檢測單元502,用于當(dāng)目的內(nèi)存中數(shù)據(jù)讀寫單元501寫入第二數(shù)據(jù)的至少一個存儲單元中存在一個存儲單元,一個存儲單元存儲的數(shù)據(jù)與按照一一對應(yīng)關(guān)系一個存儲單元對應(yīng)的源內(nèi)存中的一個存儲單元存儲的數(shù)據(jù)不一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間存在干擾故障。
可選地,數(shù)據(jù)讀寫單元501在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)時,具體用于:啟動定時器,并將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;當(dāng)定時器的當(dāng)前時長為零時,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)。
其中,定時器設(shè)置的時長滿足:將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊。
可選地,將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程與讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù)的過程存在時間重疊,具體為:在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元的過程中,發(fā)生讀取源內(nèi)存中至少一個存儲單元的第二數(shù)據(jù)的過程。
可選地,故障檢測單元502還用于:當(dāng)目的內(nèi)存中數(shù)據(jù)讀寫單元501寫入第二數(shù)據(jù)的至少一個存儲單元中的每個存儲單元存儲的數(shù)據(jù),與按照一一對應(yīng)關(guān)系每個存儲單元對應(yīng)的源內(nèi)存中的每個存儲單元存儲的數(shù)據(jù)均一致時,確定高速緩沖存儲器中寫邏輯電路與讀邏輯電路之間不存在干擾故障。
可選地,數(shù)據(jù)讀寫單元501在將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,讀取源內(nèi)存中的至少一個存儲單元的第二數(shù)據(jù),并按照目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元之間的一一對應(yīng)關(guān)系,將第二數(shù)據(jù)寫入到目的內(nèi)存的至少一個存儲單元時,具體用于:
分別將目的內(nèi)存的至少一個存儲單元中的任意一個存儲單元作為目的內(nèi)存的當(dāng)前存儲單元,并將目的內(nèi)存的當(dāng)前存儲單元對應(yīng)的源內(nèi)存的至少一個存儲單元中的一個存儲單元作為源內(nèi)存的當(dāng)前存儲單元,針對每個目的內(nèi)存的當(dāng)前存儲單元和源內(nèi)存的當(dāng)前存儲單元執(zhí)行:將第一子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元,讀取源內(nèi)存的當(dāng)前存儲單元的第二子數(shù)據(jù),并將第二子數(shù)據(jù)寫入目的內(nèi)存的當(dāng)前存儲單元。
其中,寫入目的內(nèi)存的至少一個存儲單元中的每個存儲單元的第一子數(shù)據(jù)組成第一數(shù)據(jù),讀取源內(nèi)存的至少一個存儲單元中的每個存儲單元的第二子數(shù)據(jù)組成第二數(shù)據(jù)。
可選地,目的內(nèi)存的初始化數(shù)據(jù)和源內(nèi)存的初始化數(shù)據(jù)互相取反。
可選地,高速緩沖存儲器的故障檢測裝置500還包括:初始化單元,用于在數(shù)據(jù)讀寫單元501將第一數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元之前,將初始化數(shù)據(jù)寫入目的內(nèi)存的至少一個存儲單元;以及,對初始化數(shù)據(jù)取反操作,按照一一對應(yīng)關(guān)系將取反操作后的初始化數(shù)據(jù)寫入源內(nèi)存的至少一個存儲單元。
可選地,高速緩沖存儲器為二級高速緩沖存儲器或者三級高速緩沖存儲器。
通過圖5所示的高速緩沖存儲器的故障檢測裝置500中的數(shù)據(jù)讀寫單元501對目的內(nèi)存的至少一個存儲單元和源內(nèi)存的至少一個存儲單元進(jìn)行數(shù)據(jù)讀寫操作,使得高速緩沖存儲器中的寫邏輯電路與讀邏輯電路同時存在數(shù)據(jù)傳輸,因而故障檢測單元502能夠通過判斷目的內(nèi)存的至少一個存儲單元與源內(nèi)存的至少一個存儲單元存儲的數(shù)據(jù)是否一致來判斷寫邏輯電路和讀邏輯電路間是否存在干擾故障,從而對寫邏輯電路和讀邏輯電路間的干擾故障進(jìn)行檢測。
圖5所示的高速緩沖存儲器的故障檢測裝置500中,數(shù)據(jù)讀寫單元501可用于執(zhí)行圖3所示的高速緩沖存儲器的故障檢測方法或圖4所示的高速緩沖存儲器的故障檢測方法中的數(shù)據(jù)讀寫操作,故障檢測單元502可用于執(zhí)行圖3所示的高速緩沖存儲器的故障檢測方法或圖4所示的高速緩沖存儲器的故障檢測方法中的故障檢測操作,初始化單元可用于執(zhí)行圖3所示的高速緩沖存儲器的故障檢測方法或圖4所示的高速緩沖存儲器的故障檢測方法中的初始化操作。圖5所示的高速緩沖存儲器的故障檢測裝置500中未詳盡描述的實現(xiàn)方式可參照圖3所示的高速緩沖存儲器的故障檢測方法或圖4所示的高速緩沖存儲器的故障檢測方法中的相關(guān)描述。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進(jìn)行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。