本申請基于2014年9月16日提出的日本專利申請2014-187659號、以及2015年5月14日提出的日本專利申請2015-99035號,在此分別引用其記載內(nèi)容。
技術(shù)領(lǐng)域
本發(fā)明涉及具備針對寫入存儲器后被讀取的數(shù)據(jù)進行錯誤檢測以及錯誤糾正的錯誤檢測糾正電路的存儲器診斷電路。
背景技術(shù):
例如在使用DRAM等的存儲器的情況下,為了提高數(shù)據(jù)的可靠性,設(shè)置了錯誤檢測糾正電路(ECC:Error Check and Correct)。錯誤檢測糾正電路具有針對從存儲器中讀出的數(shù)據(jù)進行檢測錯誤并糾正的功能。但是,考慮到錯誤檢測糾正電路本身也有可能發(fā)生故障,則有必要采取對策。例如,專利文獻1中公開了如下的微型計算機:將存儲器以及錯誤檢測電路全部雙重化,通過比較兩個錯誤檢測電路的檢測結(jié)果,從而選擇使用哪個存儲器側(cè)的數(shù)據(jù),實現(xiàn)可靠性的提高。
然而,如專利文獻1那樣,全部雙重化的構(gòu)成冗余,不能避免系統(tǒng)規(guī)模大型化、成本提高。
現(xiàn)有技術(shù)文獻
專利文獻
專利文獻1:日本特開2004-5627號公報
技術(shù)實現(xiàn)要素:
本公開提供一種能夠以更簡單的結(jié)構(gòu)檢測錯誤檢測糾正電路的故障的存儲器診斷電路。
在本公開的一實施方式中,存儲器診斷電路具備:錯誤檢測糾正電路,針對寫入到存儲器中并被讀取的數(shù)據(jù)進行N比特以上的錯誤檢測以及(N-1)比特以下的錯誤糾正;第一數(shù)據(jù)緩存器,保存從上述存儲器讀出并通過上述錯誤檢測糾正電路糾正錯誤后的數(shù)據(jù);第二數(shù)據(jù)緩存器,直接保存從上述存儲器讀出的數(shù)據(jù);比較器,比較上述第一數(shù)據(jù)緩存器以及上述第二數(shù)據(jù)緩存器中分別保存的數(shù)據(jù)值;以及錯誤檢測糾正監(jiān)視電路。在上述比較器的比較結(jié)果是雙方的數(shù)據(jù)值為(N-1)比特以下不同,并且上述錯誤檢測糾正電路進行錯誤糾正的情況下,上述錯誤檢測糾正監(jiān)視電路將上述第一數(shù)據(jù)緩存器中所保存的數(shù)據(jù)值設(shè)為有效,在i)上述比較器的比較結(jié)果是雙方的數(shù)據(jù)值為(N-1)比特以下不同,并且上述錯誤檢測糾正電路沒有進行錯誤糾正,或ii)在確認上述雙方的數(shù)據(jù)值不是(N-1)比特以下不同但上述錯誤檢測糾正電路進行了錯誤糾正,或iii)在確認上述比較器的比較結(jié)果是雙方的數(shù)據(jù)值為N比特以上不同,或iv)在確認上述錯誤檢測糾正電路進行錯誤檢測的情況下,上述錯誤檢測糾正監(jiān)視電路將上述第一數(shù)據(jù)緩存器中所保存的數(shù)據(jù)設(shè)為無效,輸出異常信號。其中,上述N為2以上的自然數(shù)。
如此這樣,通過比較器將兩個數(shù)據(jù)緩存器中所保存的數(shù)據(jù)值進行比較,從而能夠簡單地判斷錯誤檢測糾正電路的異常的有無。
附圖說明
關(guān)于本公開的上述目的以及其他目的、特征、優(yōu)點,通過參照附圖以及下述的詳細說明,將變得更明確。
圖1是表示本公開的第一實施方式的存儲器診斷電路的結(jié)構(gòu)的功能框圖。
圖2是表示本公開的第二實施方式的存儲器診斷電路的結(jié)構(gòu)的功能框圖,表示CPU讀取第二檢查數(shù)據(jù)時的各信號的狀態(tài)。
圖3是表示CPU讀取第一檢查數(shù)據(jù)時的各信號的狀態(tài)的圖。
圖4是表示CPU讀取ECC比特中有錯誤的第一檢查數(shù)據(jù)的情況下的各信號的狀態(tài)的圖。
具體實施方式
(第一實施方式)
如圖1所示,本實施方式的存儲器診斷電路1被配置在存儲器2與未圖示的CPU之間。存儲器2,例如是DRAM、SRAM、EEPROM、閃存ROM等。存儲器診斷電路1具備ECC電路3作為錯誤檢測糾正電路。ECC電路3在CPU向存儲器2進行寫訪問時,基于該寫入的數(shù)據(jù)生成多個ECC比特作為錯誤檢測用數(shù)據(jù),并與寫入的數(shù)據(jù)一起寫入存儲器2中。此外,ECC電路3在CPU向存儲器2進行讀訪問時,將ECC比特與數(shù)據(jù)一起從存儲器2中讀取,并針對讀取的數(shù)據(jù)和ECC比特進行邏輯運算,進行N(≥2)比特以上的錯誤檢測(錯誤),以及(N-1)比特以下的錯誤糾正。另外,以下以N=2進行說明。
錯誤/糾正結(jié)果輸出部4,根據(jù)在CPU進行讀訪問時讀取的ECC比特的值,輸出表示是否進行了一比特的錯誤糾正、二比特以上的錯誤檢測的信號。此外,當CPU對存儲器2進行讀訪問時,作為檢測以及糾正對象數(shù)據(jù)而從存儲器2讀取的數(shù)據(jù),如上所述經(jīng)由ECC電路3被讀取,被保存至作為BUF1的第一數(shù)據(jù)緩存器5。在ECC電路3檢測出一比特的錯誤的情況下,進行了錯誤糾正后的數(shù)據(jù)被保存至第一數(shù)據(jù)緩存器5。此外,CPU讀取暫時保存在第一數(shù)據(jù)緩存器5中的數(shù)據(jù)。
此外,在讀訪問時從存儲器2讀取的數(shù)據(jù)同時不經(jīng)由ECC電路3而被直接保存至作為BUF2的第二數(shù)據(jù)緩存器6。作為幅值比較器的比較器7中分別輸入第一數(shù)據(jù)緩存器5、第二數(shù)據(jù)緩存器6中所保存的數(shù)據(jù)。比較器7將兩個輸入數(shù)據(jù)進行比較,如果有一比特的錯誤時,則將高電平信號向作為錯誤檢測糾正(ECC)監(jiān)視電路的一部分的異或門(EXOR門)8的一個輸入端子輸出。此外,在有二比特以上的錯誤的情況下,比較器7將高電平信號(錯誤)向作為ECC監(jiān)視電路的一部分的或門(OR門)9的3輸入端子的一個端子輸出。
在ECC電路3進行一比特的錯誤糾正時,錯誤/糾正結(jié)果輸出部4將高電平信號向異或門8的另一個輸入端子輸出。此外,在ECC電路3進行二比特以上的錯誤檢測時,錯誤/糾正結(jié)果輸出部4將高電平信號向或門9的輸入端子的其他一個端子輸出。此外,或門9的輸入端子的其他一另個端子與異或門8的輸出端子連接。
或門9的輸出端子和與門(AND門)10的輸入端子的一個連接。與門10的輸入端子的另一個被供給通過CPU向未圖示的寄存器進行寫入從而控制從與門10的信號輸出的信號。上述控制信號,在包含CPU、存儲器診斷電路1以及存儲器2在內(nèi)的微型計算機進行通常動作時,被設(shè)定為高電平(H)。有關(guān)將控制信號設(shè)置為低電平(L)的情況(功能檢測時)將在第二實施方式中敘述。當與門10的輸出信號為高電平時,成為表示ECC電路3異常的異常檢測信號,例如成為將微型計算機重置的信號(RESET)、或用于對上位控制裝置報告異常檢測的信號。
接著,說明本實施方式的作用。在CPU向存儲器2進行讀訪問時,被讀取的數(shù)據(jù)如前所述,被保存至第二數(shù)據(jù)緩存器6中,并且經(jīng)由ECC電路3進行的錯誤糾正處理而被保存至第一數(shù)據(jù)緩存器5中。此外,比較器7將各數(shù)據(jù)緩存器5、6中所保存的數(shù)據(jù)進行比較。如果從存儲器2中讀取的數(shù)據(jù)中沒有錯誤,則從比較器7以及錯誤/糾正結(jié)果輸出部4輸出的各信號都表示低電平,因此,與門10的輸出信號也為低電平。另外,以下的“正?!?、“異?!笔怯嘘P(guān)ECC電路3的動作的評價。
(A)<正常時:糾正一比特錯誤>
ECC電路3在檢測從存儲器2讀取的數(shù)據(jù)有一比特錯誤時糾正該錯誤,被糾正后的數(shù)據(jù)被保存至第一數(shù)據(jù)緩存器5。其結(jié)果,由于與第二數(shù)據(jù)緩存器6中所保存的數(shù)據(jù)產(chǎn)生一比特的不同,因此,比較器7向異或門8輸出高電平信號。此外,由于ECC電路3進行了糾正處理,錯誤/糾正結(jié)果輸出部4也向異或門8輸出高電平信號。因此,異或門8的輸出信號為低電平。
另外,根據(jù)CPU執(zhí)行的讀訪問的定時,如果需要屏蔽正常動作時的異或門8的輸出信號的期間,則在異或門8和或門9之間適當追加邏輯電路即可。
(B)<異常時:不進行糾正而產(chǎn)生一比特的不同>
另一方面,數(shù)據(jù)緩存器5、6中所保存的數(shù)據(jù)中有一比特的差別,比較器7向異或門8輸出高電平信號,但如果ECC電路3不進行糾正處理,則錯誤/糾正結(jié)果輸出部4輸出低電平的信號。因此,異或門8的輸出信號為高電平,經(jīng)由或門9而與門10的輸出信號為高電平,故障被檢出。
在該情況下,第二數(shù)據(jù)緩存器6中所保存的數(shù)據(jù)的值與ECC電路3從存儲器2讀取的數(shù)據(jù)的值不相同的可能性高,存在ECC電路3發(fā)生故障的可能性。據(jù)此,避免CPU將沒有正確性保障的第一數(shù)據(jù)緩存器5中的數(shù)據(jù)讀取并使用的情況。
(C)<異常時:有糾正而沒有一比特的不同>
與(B)的情況相反,在比較器7向異或門8輸出低電平信號、但ECC電路3進行糾正處理的情況下,異或門8的輸出信號為高電平,因此與門10的輸出信號為高電平,故障被檢出。在該情況下,雖然數(shù)據(jù)緩存器5、6中所保存的數(shù)據(jù)有一比特的不同,但是ECC電路3進行糾正處理后的結(jié)果是設(shè)想雙方的數(shù)據(jù)一致。
此外,由于ECC電路3在CPU的讀取數(shù)據(jù)中沒有錯誤、相應(yīng)的ECC比特產(chǎn)生一比特錯誤的情況下,也同樣進行錯誤糾正,因此與案例(C)為同樣的狀態(tài)。但是,該情況下,第一數(shù)據(jù)緩存器5中所保存的數(shù)據(jù)必須為有效。產(chǎn)生了一比特錯誤,如果參照ECC比特則能夠判別讀取的數(shù)據(jù)、ECC比特中的哪個發(fā)生了一比特的錯誤。
例如,從ECC比特生成三比特的狀態(tài)位,將其定義如下,并賦予錯誤/糾正結(jié)果輸出部4。
第一位:二比特以上的錯誤→輸出“錯誤”
第二位:一比特的數(shù)據(jù)錯誤→輸出“糾正”
第三位:一比特的ECC比特錯誤→不輸出“糾正”
錯誤/糾正結(jié)果輸出部4參照上述的狀態(tài)位決定是輸出錯誤或糾正的任一個。(C)的情況下,設(shè)立了第三位,因此向異或門8輸出的信號為低電平。
(D)<正常時:檢測二比特以上的錯誤>
在ECC電路3檢測從存儲器2中讀取的數(shù)據(jù)中有二比特的錯誤的情況下,錯誤/糾正結(jié)果輸出部4向或門9輸出高電平信號(錯誤)。因此,與門10的輸出信號為高電平,故障被檢出。在該情況下,避免了CPU讀取第一數(shù)據(jù)緩存器5的數(shù)據(jù)并使用。
(E)<異常時:雙方的數(shù)據(jù)中有二比特以上的不同>
在數(shù)據(jù)緩存器5、6中所保存的數(shù)據(jù)中存在二比特的不同的情況下,比較器7向或門9輸出高電平信號。因此,與門10的輸出信號為高電平,故障被檢出。在該情況下,與(B)的案例相同,第二數(shù)據(jù)緩存器6中所保存的數(shù)據(jù)的值與ECC電路從存儲器2讀取的數(shù)據(jù)的值不同,存在ECC電路3發(fā)生故障的可能性。
根據(jù)以上的本實施方式,在存儲器診斷電路1中,ECC電路3針對寫入存儲器2中并被讀取的數(shù)據(jù),進行二比特以上的錯誤檢測以及一比特的錯誤糾正。第一數(shù)據(jù)緩存器5中保存從存儲器2讀取且由ECC電路3進行了錯誤糾正后的數(shù)據(jù),第二數(shù)據(jù)緩存器6中直接保存從存儲器2中讀取的數(shù)據(jù)。并且,比較器7將分別保存在第一數(shù)據(jù)緩存器5以及第二數(shù)據(jù)緩存器6中的數(shù)據(jù)進行比較。
如果比較器7的比較結(jié)果是雙方的數(shù)據(jù)值有一比特不同且ECC電路3進行錯誤糾正,則由異或門8以及或門9構(gòu)成的ECC監(jiān)視電路將第一數(shù)據(jù)緩存器5中所保存的數(shù)據(jù)值作為有效,上述異常時的案例(B)、(C)、(E)以及正常時的案例(D),設(shè)為第一數(shù)據(jù)緩存器5中所保存的數(shù)據(jù)值無效。因此,能夠簡單地判別ECC電路3的異常的有無。
此外,在第一數(shù)據(jù)緩存器5中所保存的數(shù)據(jù)中沒有錯誤,與所述數(shù)據(jù)對應(yīng)的ECC比特中有一比特錯誤,并進行該糾正的情況下,錯誤/糾正結(jié)果輸出部4不向異或門8輸出“糾正”信號而屏蔽。因此,能夠避免將第一數(shù)據(jù)緩存器5中所保存的沒有錯誤的數(shù)據(jù)作為無效。而且,由此使得外部邏輯結(jié)構(gòu)變得簡單。
在此,錯誤/糾正結(jié)果輸出部4將上述的狀態(tài)位保存在寄存器等中并保持,在診斷后,通過上位的控制裝置等將被保持的狀態(tài)位讀取,從而能夠判別發(fā)生了“錯誤”、“糾正”的哪一個。此外,也能夠判別“錯誤”或者“糾正”發(fā)生了錯誤比特幾次。
因此,例如在“N”的值較大的情況下,外部的控制裝置等能夠?qū)⒆鳛镋CC電路3實施了錯誤糾正后的結(jié)果而正常工作的狀態(tài)識別為“錯誤”發(fā)生以前。據(jù)此,能夠?qū)ⅰ肮收稀敝暗恼幼鞯碾A段發(fā)生錯誤作為警報而事前實施例如存儲器2的交換等的處理。
進而,根據(jù)狀態(tài)位比較錯誤比特數(shù),由此能夠容易地進行不良解析。而且,錯誤/糾正結(jié)果輸出部4保持ECC電路3糾正了的比特位置,從而能夠進行更詳細的不良解析。
(第二實施方式)
以下,對于與第一實施方式相同的部分賦予相同的符號并省略說明,針對不同的部分進行說明。如圖2所示,在第二實施方式中,在代替存儲器2的存儲器11中設(shè)置檢查數(shù)據(jù)存儲區(qū)域12。在檢查數(shù)據(jù)存儲區(qū)域中預(yù)先存儲有第一檢查數(shù)據(jù)、第二檢查數(shù)據(jù)。這些第一檢查數(shù)據(jù)、第二檢查數(shù)據(jù)被用于在包含存儲器診斷電路1的系統(tǒng)啟動時,執(zhí)行用于確認ECC電路3的功能是否正常的檢查序列。
第一檢查數(shù)據(jù)被設(shè)定為表示讀取的數(shù)據(jù)與ECC比特有1比特錯誤的組合,第二檢查數(shù)據(jù)被設(shè)定為表示雙方有二比特以上的錯誤的組合。此外,在該情況下,CPU使作為ECC監(jiān)視電路的一部分的與門10的輸入端子的一個為低電平,阻止重置信號被輸出。
如圖2所示,在CPU讀取第二檢查數(shù)據(jù)的情況下,如果第一數(shù)據(jù)緩存器5、第二數(shù)據(jù)緩存器6中所保存的數(shù)據(jù)一致,但ECC電路3正常,則錯誤/糾正結(jié)果輸出部4輸出“錯誤”。因此,或門9的輸出信號為高電平。
如圖3所示,在CPU讀取第一檢查數(shù)據(jù)的情況下,如果ECC電路3正常則檢測一比特錯誤并進行糾正,因此錯誤/糾正結(jié)果輸出部4輸出“糾正”。此外,比較器7檢測一比特的不同。因此,或門9的輸出信號為低電平。
此外,如圖4所示,當CPU讀取被設(shè)定為ECC比特有一比特錯誤的第一檢查數(shù)據(jù)時,如果ECC電路3正常則糾正該一比特錯誤,因此第一數(shù)據(jù)緩存器5、第二數(shù)據(jù)緩存器6中所保存的數(shù)據(jù)一致。在該情況下,如第一實施方式中所說明的,錯誤/糾正結(jié)果輸出部4不輸出“糾正”而屏蔽。因此,與圖3所示的案例相同,或門9的輸出信號為低電平。
如上所述,如果針對各案例確認各信號的輸出狀態(tài),則能夠確認ECC電路3的功能是否正常。
根據(jù)上述的第二實施方式,存儲器11中具備預(yù)先存儲了第一檢查數(shù)據(jù)、以及第二檢查數(shù)據(jù)的檢查數(shù)據(jù)存儲區(qū)域12,在啟動時,CPU從檢查數(shù)據(jù)存儲區(qū)域12中讀取第一檢查數(shù)據(jù)、以及第二檢查數(shù)據(jù),在執(zhí)行確認ECC電路3是否按所期望的進行動作的檢查序列時,賦予與門10的輸入端子的一個低電平信號,將存儲器診斷電路1的功能無效化。因此,能夠不向外部輸出重置信號而確認ECC電路3的功能是否正常。
本公開并不限定于上述、或者附圖中所記載的實施方式,也可以是以下的變形或展開。如果將僅是ECC比特中發(fā)生一比特錯誤的案例無視而沒有問題的情況下,也可以在(C)中作為異常來處理。此外,也可以將錯誤/糾正結(jié)果輸出部4的功能內(nèi)置于ECC電路3中。此外,也可以是將N作為“3”以上。此外,也可是與門10的輸出信號不設(shè)為重置信號,例如使CPU發(fā)生中斷,將以后的處理交由CPU(例如如果上述中斷發(fā)生多次,則輸出重置)。
本公開雖然以實施例為基準進行了描述,但應(yīng)理解為本公開并不限定于該實施例或該結(jié)構(gòu)。本公開也包括各種變形或等同范圍內(nèi)的變形。而且,各種組合或形式、進而,各種的組合或形態(tài)、還有在它們中僅包含一個要素、其以上或以下的其他組合或形態(tài)也包含在本公開的范疇或思想范圍中。