專利名稱:芯片故障的檢測方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子或通信領(lǐng)域的測試技術(shù),具體涉及一種芯片故障的檢測方法。
背景技術(shù):
隨著芯片制造技術(shù)、嵌入式微處理器技術(shù)和軟件技術(shù)的發(fā)展,在電子及通信產(chǎn)品的設(shè)計中,越來越多的ASIC(專用集成電路)/VISI(超大規(guī)模的集成電路)被應(yīng)用,隨著芯片集成度的提高,單個芯片的功能越來越強,甚至發(fā)展到整個一塊板卡中只有一塊完成主要功能的ASIC和其他輔助電路。因此,為了保證產(chǎn)品的正常運行,對這類芯片的故障檢測和診斷非常重要。
實際中,通過驗證和統(tǒng)計發(fā)現(xiàn),如果芯片供電電源失效或者供電電源電壓低于門限值、芯片出現(xiàn)燒壞、短路等原因?qū)е滦酒δ苁?,芯片中的寄存器值會發(fā)生變化。對于這類故障,通常采用“寄存器巡檢”的方法對芯片進行檢測,即通過定時檢測判斷芯片的寄存器是否變化來檢測芯片的好壞。
具體操作是在系統(tǒng)啟動時將需要寫入到ASIC/VISI內(nèi)寄存器的控制、配置等數(shù)據(jù)先寫到系統(tǒng)中保留一份作為鏡像,芯片數(shù)據(jù)鏡像備份示意如圖1所示,然后再寫入到ASIC/VISI中,在正常的運行過程中為了判斷芯片的工作是否正常,定時讀取芯片中的相關(guān)寄存器中的數(shù)據(jù),并與內(nèi)存中保留的鏡像數(shù)據(jù)進行比較,如果兩者不一致則認為芯片失效。然后通過啟動系統(tǒng)預(yù)先設(shè)計好的診斷、恢復(fù)、重啟等程序,使系統(tǒng)恢復(fù)正常運行。
通常,對于一個結(jié)構(gòu)復(fù)雜的芯片,當其內(nèi)部的寄存器數(shù)量較大時,為了保證故障檢測的覆蓋率,每次都要對所有的寄存器進行巡檢,這樣就會占用較多的CPU資源,而且當寄存器數(shù)量較大時,每巡檢一次會耗用較長的時間,會影響系統(tǒng)的實時業(yè)務(wù)處理。為了減少對系統(tǒng)正常業(yè)務(wù)處理的影響,在設(shè)計時也會采用只對部分寄存器進行巡檢或延長巡檢周期的方式。
對部分寄存器進行巡檢的方式是指根據(jù)每個寄存器完成的功能不同,選取一些重要的寄存器作為代表進行定時巡檢。而芯片失效后寄存器錯亂或被修改的可能性是不確定的,有可能是一個寄存器被修改,也有可能是大量被修改,因此,這種選取部分寄存器作為代表的檢測方法只能檢測芯片的部分失效,檢測的覆蓋率較低。
延長巡檢周期的方式雖然能相對減少對CPU資源的占用,但巡檢周期太長就會影響故障檢測的靈敏度,導(dǎo)致故障發(fā)生后需要較長的時間才能檢測到。另外,雖然延長了巡檢周期,但是在一個巡檢周期內(nèi),對所有寄存器巡檢的時間是固定的,如果在此段時間內(nèi)需要及時處理其他業(yè)務(wù),則系統(tǒng)業(yè)務(wù)的實時處理能力會受到嚴重影響,并且可能導(dǎo)致巡檢結(jié)果的異常。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種芯片故障的檢測方法,以克服現(xiàn)有技術(shù)中芯片故障檢測時檢測覆蓋率及靈敏度低的缺點。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的一種芯片故障的檢測方法,包括A、建立所有芯片內(nèi)寄存器的鏡像數(shù)據(jù);B、設(shè)定第一檢測周期;C、當所述第一檢測周期開始時,隨機確定所述芯片需要檢測的寄存器;D、判斷所述需要檢測的寄存器中的數(shù)據(jù)與所述鏡像數(shù)據(jù)并確定所述需要檢測的寄存器所對應(yīng)的芯片是否出現(xiàn)故障。
所述C步驟具體包括C1、為寄存器排序并設(shè)定其序列號;
C2、從寄存器序列中隨機確定需要檢測的寄存器。
所述C步驟具體包括C1、為寄存器排序并設(shè)定其序列號;C2′、從C1步驟中的寄存器中選擇每個芯片中的重要寄存器作為需要檢測的寄存器。
所述步驟C2具體包括C21、產(chǎn)生所述寄存器序列號范圍內(nèi)的第一隨機數(shù);C22、根據(jù)所述第一隨機數(shù)確定需要檢測的寄存器。
所述步驟C22具體為將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最大值范圍內(nèi)的全部寄存器作為需要檢測的寄存器;或者將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最小值范圍內(nèi)的全部寄存器作為需要檢測的寄存器。
所述步驟C22具體為將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最大值范圍內(nèi)預(yù)定數(shù)目的寄存器作為需要檢測的寄存器;或者將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最小值范圍內(nèi)預(yù)定數(shù)目的寄存器作為需要檢測的寄存器。
所述步驟C22具體為產(chǎn)生所述需要檢測的寄存器序列號范圍內(nèi)的第二隨機數(shù);以序列號為所述第一隨機數(shù)的寄存器為起始位置,按照升序方式循環(huán)選定數(shù)目為所述第二隨機數(shù)個寄存器作為需要檢測的寄存器;或者以序列號為所述第一隨機數(shù)的寄存器為起始位置,按照降序方式循環(huán)選定數(shù)目為所述第二隨機數(shù)個寄存器作為需要檢測的寄存器。
所述步驟C22具體為
產(chǎn)生所述待檢寄存器序列號范圍內(nèi)的第二隨機數(shù);以序列號為所述第一隨機數(shù)的寄存器為起始位置,按照升序方式循環(huán)選定數(shù)目為所述第二隨機數(shù)個寄存器作為需要檢測的寄存器;或者以序列號為所述第一隨機數(shù)的寄存器為起始位置,按照降序方式循環(huán)選定數(shù)目為所述第二隨機數(shù)個寄存器作為需要檢測的寄存器。
所述步驟D包括D1、建立寄存器鏡像數(shù)據(jù)索引表;D2、讀取所述需要檢測的寄存器中的數(shù)據(jù);D3、根據(jù)所述寄存器鏡像數(shù)據(jù)索引表獲取內(nèi)存中對應(yīng)于所述需要檢測的寄存器的鏡像數(shù)據(jù);D4、比較所述讀取的寄存器中的數(shù)據(jù)與所述獲取的寄存器中的鏡像數(shù)據(jù),根據(jù)比較結(jié)果判斷所述寄存器所在的芯片是否出現(xiàn)故障。
所述寄存器鏡像數(shù)據(jù)索引表包括寄存器在芯片中的地址、寄存器鏡像數(shù)據(jù)起始地址、寄存器鏡像數(shù)據(jù)長度。
所述方法還包括E、將所有芯片內(nèi)寄存器分成預(yù)定個數(shù)的寄存器組;F、設(shè)定第二檢測周期;G、依次在每個所述第二周期開始時,分別獲取所述寄存器組中的數(shù)據(jù);H、根據(jù)所述寄存器組中的數(shù)據(jù)及所述鏡像數(shù)據(jù)判斷所述芯片是否出現(xiàn)故障。
由以上本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明方法通過在每個檢測周期隨機選取每個芯片中需要檢測的寄存器進行芯片故障檢測,相對于遍歷檢測全部寄存器來說,縮短了檢測周期,減少了對系統(tǒng)資源的占用,通過隨機選取每個芯片中重要的寄存器進行檢測,可以進一步提高故障檢測的靈敏度,及時、快速地檢測出芯片的主要故障;相對于固定選取芯片中部分寄存器作為代表進行檢測的方式,提高了故障檢測的覆蓋率。本發(fā)明方法還通過附加在一定周期內(nèi)通過采用分批任務(wù)遍歷檢測全部寄存器的檢測任務(wù),進一步提高了故障檢測的覆蓋率。
圖1是芯片數(shù)據(jù)鏡像備份示意圖;圖2是本發(fā)明第一實施例的流程圖;圖3是定時分批遍歷檢測任務(wù)中檢測周期關(guān)系示意圖;圖4是本發(fā)明方法中定時分批遍歷檢測任務(wù)的流程圖;圖5是本發(fā)明第二實施例的流程圖。
具體實施例方式
本發(fā)明的核心在于在現(xiàn)有技術(shù)基礎(chǔ)上,將現(xiàn)有技術(shù)中固定選取芯片內(nèi)部分寄存器進行檢測改為隨機選取芯片內(nèi)部分寄存器進行檢測,也就是說建立隨機檢測任務(wù)來確定發(fā)生故障的芯片;設(shè)定每個檢測周期要檢測的寄存器的數(shù)目,可以是固定數(shù)目,也可以是隨機數(shù)目;為了進一步保證檢測的覆蓋率,建立循環(huán)檢測任務(wù),即同時進行在一定周期內(nèi)分批遍歷檢測全部寄存器的檢測任務(wù),根據(jù)對全部寄存器的檢測來確定所有發(fā)生故障的芯片。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和實施方式對本發(fā)明作進一步的詳細說明。
參照圖2,圖2是本發(fā)明第一實施例的流程圖首先,在步驟201隨機檢測任務(wù)初始化,包括以下內(nèi)容(1)在系統(tǒng)內(nèi)存中分別建立所有芯片內(nèi)寄存器的鏡像數(shù)據(jù),并建立寄存器鏡像數(shù)據(jù)索引表,可參見圖1。
在一個系統(tǒng)中,比如一個板卡系統(tǒng),可能會有多個芯片,而每個芯片中又可能會有多個存儲不同功能數(shù)據(jù)的寄存器,有時某個寄存器的故障并不能導(dǎo)致芯片所有功能的失效,同樣,某個寄存器正常也不能保證芯片所有功能有效,因此在系統(tǒng)內(nèi)存中分別建立所有芯片內(nèi)寄存器的鏡像數(shù)據(jù)。在實際運行中檢測任務(wù)需要檢測哪些寄存器,從內(nèi)存中選取對應(yīng)該寄存器的鏡像數(shù)據(jù)進行比較即可。
寄存器鏡像數(shù)據(jù)索引表包括寄存器在芯片中的地址、寄存器鏡像數(shù)據(jù)起始地址、寄存器鏡像數(shù)據(jù)長度。如表1所示表1
其中,寄存器在芯片中的地址表示寄存器所在位置;寄存器鏡像數(shù)據(jù)起始地址表示內(nèi)存中存放的對應(yīng)該寄存器的鏡像數(shù)據(jù)的起始地址;(2)設(shè)置隨機檢測任務(wù)定時器。該定時器的定時時間(第一檢測周期)可根據(jù)系統(tǒng)中寄存器的數(shù)量及系統(tǒng)功能等來確定。
隨機檢測任務(wù)初始化完成后,啟動隨機檢測任務(wù)定時器,當該定時器的定時時間到達后,進到步驟202啟動隨機檢測任務(wù)。
進到步驟203選定每個芯片中的待檢寄存器??梢愿鶕?jù)每個芯片中寄存器的數(shù)量、大小及功能的不同,對寄存器進行分類和分析,對于寄存器失效或者改變后對系統(tǒng)產(chǎn)生嚴重故障的要放在重要的位置。這樣就可以根據(jù)重要性將寄存器分為幾類,選取影響最重要的寄存器作為隨機選擇的基本寄存器,然后再在這些基本寄存器中隨機選擇一部分作為每次隨機檢測的寄存器。當然,也可以選擇芯片中的全部寄存器作為待檢寄存器。
步驟204為待檢寄存器排序并設(shè)定其序列號。選定的待檢寄存器可能是全部寄存器、也可能是部分寄存器,為了簡化檢測任務(wù)的實現(xiàn)并保持這些待檢測寄存器編號的連續(xù)性,對這些選定的待檢寄存器進行排序,并設(shè)定其序列號。
為了能夠根據(jù)序列號查找到該寄存器所在的芯片,以便判斷是判斷個芯片出現(xiàn)故障,還需要建立寄存器序列號與寄存器鏡像數(shù)據(jù)索引表中的寄存器在芯片中的地址的對應(yīng)關(guān)系,可以有多種方式,比如建立一個序列號轉(zhuǎn)換表,該表包括所有待檢寄存器的序列號及與其對應(yīng)的寄存器在芯片中的地址,根據(jù)寄存器的序列號檢索該轉(zhuǎn)換表即可方便地查找到需要巡檢的寄存器;還可以將待檢寄存器的序列號添加到上述寄存器鏡像數(shù)據(jù)索引表中,在未選中作為待檢寄存器的對應(yīng)位置上填充無效位,比如“NN”,在查找寄存器所在的芯片時,以寄存器序列號作為索引即可。如表2所示表2
然后,進到步驟205從待檢寄存器序列中隨機確定需要檢測的寄存器。這樣就能保證對每個芯片都定時檢測,并且每次檢測的是重要的、有代表性的、隨機的寄存器。
隨機確定需要檢測的寄存器后,進到步驟206依次讀取需要檢測的寄存器中的數(shù)據(jù)。因為需要檢測的寄存器可能有多個,需要逐個進行檢測。
步驟207根據(jù)寄存器鏡像數(shù)據(jù)索引表獲取內(nèi)存中對應(yīng)于需要檢測的寄存器的鏡像數(shù)據(jù)。
在上述步驟205中確定了需要檢測的寄存器后,也就知道了該寄存器的序列號,在前面已經(jīng)提到,可以有多種方式建立寄存器序列號與寄存器鏡像數(shù)據(jù)索引表中的寄存器在芯片中的地址的對應(yīng)關(guān)系,根據(jù)寄存器序列號能夠獲知寄存器在芯片中的地址,再根據(jù)寄存器鏡像數(shù)據(jù)索引表獲知該寄存器鏡像數(shù)據(jù)起始地址及長度,根據(jù)這些信息從內(nèi)存中獲取對應(yīng)于該寄存器的鏡像數(shù)據(jù)。
然后,進到步驟208判斷寄存器中的數(shù)據(jù)與內(nèi)存中的鏡像數(shù)據(jù)是否相同。
如果相同,則表明寄存器所在芯片正常,進到步驟209等待下一個檢測周期。也就是說等待隨機檢測任務(wù)定時器再次到達定時時間后,重新啟動隨機檢測任務(wù),按照上述過程進行芯片故障檢測。
如果不相同,則表明寄存器所在芯片出現(xiàn)故障,進到步驟210進行故障處理。
在上述步驟205中指出了從待檢寄存器序列中隨機確定需要檢測的寄存器,其過程如下首先,產(chǎn)生待檢寄存器序列號范圍內(nèi)的一個隨機數(shù)(第一隨機數(shù))。本技術(shù)領(lǐng)域人員知道,隨機數(shù)有多種產(chǎn)生方式,可以根據(jù)系統(tǒng)實際情況,選取合適的方式,在此不再詳細描述。
然后,根據(jù)該隨機數(shù)從待檢寄存器序列中選出需要檢測的寄存器。每次檢測任務(wù)選定的寄存器的數(shù)量可以相同、也可以不同。
假設(shè)待檢寄存器共有1000個,可以根據(jù)寄存器的地址大小,對寄存器進行排序,序號為1~1000。
(1)假設(shè)每次巡檢100個,每次需要檢測時通過程序產(chǎn)生一個1~1000之間的隨機整數(shù)N,將序列號與該隨機整數(shù)相同的寄存器作為檢測的第一個寄存器,每次巡檢其后面的100個寄存器,即序列號為N至N+100的寄存器;或者每次巡檢其前面的100個寄存器N-100至N的寄存器。
如果N+100的值超出寄存器的最大序列號1000時,則可從序號N向后只檢測到序列號為1000的寄存器;也可從待檢寄存器序列中作升序循環(huán)選擇,也就是說檢測到1000后,再從1開始,總共選擇100個寄存器作為檢測對象。
同樣,如果N-100的值小于寄存器的最小序列號1時,則可從序號N向前只檢測到序號為1的寄存器;也可從待檢寄存器序列中作降序循環(huán)選擇,也就是說檢測到1后,再從1000開始,總共選擇100個寄存器作為檢測對象。
(2)假設(shè)每次巡檢的寄存器數(shù)量不同,較簡單的方式是每次需要檢測時通過程序產(chǎn)生一個1~1000之間的隨機整數(shù)N,將序列號與該隨機整數(shù)相同的寄存器作為檢測的第一個寄存器,每次巡檢序列號為N~1000的寄存器;或者每次巡檢序列號為0~N的寄存器。按照寄存器序列號由小到大或由大到小的順序檢測。
(3)如果每次巡檢的寄存器數(shù)量不同時,在產(chǎn)生第一個隨機整數(shù)N后,還可以產(chǎn)生一個待檢寄存器序列號范圍內(nèi)的第二隨機數(shù)M,作為每次巡檢寄存器的數(shù)量。
將序列號與第一隨機整數(shù)N相同的寄存器作為檢測的第一個寄存器,每次巡檢其后面的M個寄存器,即序列號為N至N+M的寄存器;或者每次巡檢其前面的M個寄存器N-M至N的寄存器。
同樣,如果N+M的值超出寄存器的最大序列號1000,或者N-100的值小于寄存器的最小序列號1時,選擇N~1000或者1~N的寄存器進行檢測;也可對待檢寄存器作循環(huán)選擇,選出M個寄存器進行檢測。
當然,還有很多其他的隨機選擇方式,其選擇過程與上述類似,在此不再詳細描述。
為了減少對系統(tǒng)資源的占用,盡可能選擇各芯片中最重要的、有代表性的寄存器進行檢測;為了提高故障檢測的靈敏度,可在系統(tǒng)允許的范圍內(nèi),盡量縮短巡檢周期,也就是設(shè)置隨機檢測任務(wù)定時器的定時時間為較小的值。
如果全部巡檢占用10ms的CPU資源,那么每次抽樣檢測10%的寄存器則只需要1ms的CPU資源。同樣的從整個資源占用率上看,如采用100ms的定時巡檢任務(wù),如果選擇全部寄存器巡檢任務(wù)的資源占用率達到10%;如果每次抽樣檢測10%的,則巡檢任務(wù)的資源占用率只有1%。
為了更好地保障故障檢測的覆蓋率,在上述隨機檢測任務(wù)的基礎(chǔ)上,附加一個定時分批遍歷檢測任務(wù)。其基本思想是將所有芯片內(nèi)寄存器分成預(yù)定個數(shù)(S)的寄存器組,然后通過定時任務(wù)依次巡檢每個數(shù)據(jù)塊,假設(shè)此定時任務(wù)的周期為t,那么在S個定時任務(wù)周期t內(nèi)就能完成對所有芯片寄存器的巡檢。巡檢完所有寄存器所花時間為T=S*t。
圖3示出了他們之間的關(guān)系在每個檢測周期開始(0、t、2t、…)后,選擇一個寄存器組,依次對該寄存器組內(nèi)的每個寄存器進行檢測,直到檢測完該寄存器組內(nèi)的所有寄存器。每個寄存器組的檢測時間只占用一個檢測周期t的很小一段。在下一個檢測周期開始后,選擇下一個寄存器組進行檢測。以此來減少對CPU資源的占用,提高故障檢測覆蓋率。
參照圖4,圖4示出上述定時分批遍歷檢測任務(wù)的流程步驟401定時分批遍歷檢測任務(wù)初始化,包括設(shè)置遍歷檢測定時器,該定時器的定時時間(第二檢測周期)可根據(jù)系統(tǒng)中寄存器的數(shù)量及系統(tǒng)功能等來確定;并初始化寄存器組X,通常從第一個寄存器組開始檢測,即X=0。當然,也可以任意選取一個寄存器組開始。
步驟402啟動定時分批遍歷檢測任務(wù)。
步驟403將所有芯片內(nèi)寄存器分成S個寄存器組。每個寄存器組可以包含相同數(shù)量的寄存器,也可包含不同數(shù)量的寄存器。假設(shè)寄存器組從0開始編號,則有0~S-1個寄存器組。
步驟404啟動遍歷檢測定時器。
步驟405獲取第X個寄存器組。
步驟406依次讀取需要檢測的寄存器中的數(shù)據(jù)。
步驟407判斷寄存器中的數(shù)據(jù)與內(nèi)存中對應(yīng)的鏡像數(shù)據(jù)是否相同。
如果寄存器中的數(shù)據(jù)與內(nèi)存中對應(yīng)的鏡像數(shù)據(jù)不同,則進到步驟411進行故障處理。
如果相同,則進到步驟408將X的值加1,也就是說選取下一個寄存器組。
然后,進到步驟409判斷X的值是否等于S,也就是說是否已檢測到最后一個寄存器組。
如果X等于S,則進到步驟410將X的值重置為0,即選擇第一個寄存器組進行檢測。如果X是從0開始,則此時表明已分時檢測完一遍系統(tǒng)內(nèi)的全部寄存器。
然后,返回步驟404啟動遍歷檢測定時器,進行下一個周期的檢測。
如果X不等于S,則直接返回到步驟404,等待下一個周期的檢測。
上述定時分批遍歷檢測任務(wù)可以在系統(tǒng)內(nèi)獨立運行,其優(yōu)點是占用CPU資源較少,能夠完成對所有寄存器的遍歷檢測,使故障檢測覆蓋率達到最大;缺點是故障檢測靈敏度較低,不能及時地檢測出整個系統(tǒng)中芯片的故障。
為了保障檢測的靈敏度和覆蓋率,在本發(fā)明方法中,將上述定時分批遍歷檢測任務(wù)與前面所述的隨機檢測任務(wù)相結(jié)合,充分發(fā)揮各自的優(yōu)點,兩個檢測任務(wù)獨立運行,完成各自的檢測,任何一個檢測任務(wù)檢測到芯片故障都認為是系統(tǒng)的異常情況。
參照圖5,圖5是本發(fā)明第二實施例的流程圖在該實施例中,兩個檢測任務(wù)相互獨立運行,完成各自的檢測。
首先,在步驟51系統(tǒng)初始化,包括以下內(nèi)容(1)在系統(tǒng)內(nèi)存中分別建立所有芯片內(nèi)寄存器的鏡像數(shù)據(jù),并建立寄存器鏡像數(shù)據(jù)索引表。對于寄存器鏡像數(shù)據(jù)索引表前面已有說明,在此不再贅述。
(2)將所有芯片內(nèi)寄存器分成預(yù)定個數(shù)的寄存器組,并建立寄存器組序列表。根據(jù)寄存器的大小及系統(tǒng)實際需要,每個寄存器組包括相同個數(shù)的寄存器或者多個不同個數(shù)的寄存器。一個較佳的分組方式是每組中都包含有各芯片的部分寄存器,這樣,就使一個檢測周期內(nèi)能夠檢測到每個芯片的部分寄存器,有利于提高檢測覆蓋率。
寄存器組序列表包括寄存器組序號、寄存器在芯片中的地址,如下表3所示。
表3
為了簡化程序處理,也可以不單獨建立寄存器組序列表,而是將寄存器組序號添加到上述寄存器鏡像數(shù)據(jù)索引表中,即將前面表2所示的寄存器鏡像數(shù)據(jù)索表改為表4
表4
(3)設(shè)置隨機檢測任務(wù)定時器和遍歷檢測定時器,其中,隨機檢測任務(wù)定時器的定時時間(第一檢測周期)為執(zhí)行隨機檢測任務(wù)的時間間隔;遍歷檢測定時器的定時時間(第二檢測周期)為執(zhí)行分批遍歷檢測任務(wù)的時間間隔。
系統(tǒng)初始化完成后,進到步驟52啟動隨機檢測任務(wù)定時器和遍歷檢測定時器。
當隨機檢測任務(wù)定時器的定時時間到達后,進到步驟511啟動隨機檢測任務(wù)。
然后,進到步驟512隨機確定系統(tǒng)中每個芯片需要檢測的寄存器。隨機確定系統(tǒng)中每個芯片需要檢測的寄存器的詳細過程可參照前面的描述。
進到步驟513根據(jù)寄存器鏡像數(shù)據(jù)索引表獲取需要檢測的寄存器對應(yīng)的內(nèi)存中的鏡像數(shù)據(jù)。
步驟514根據(jù)需要檢測的寄存器中的數(shù)據(jù)及對應(yīng)的內(nèi)存中的鏡像數(shù)據(jù)判斷芯片是否出現(xiàn)故障。
當遍歷檢測定時器的定時時間到達后,進到步驟521啟動定時分批遍歷檢測任務(wù)。
然后,進到步驟522從寄存器組序列表中選取一個寄存器組??梢詮牡谝粋€寄存器組開始,也可以任選一個寄存器組開始。
步驟523分別獲取寄存器組中不同寄存器的數(shù)據(jù)。
然后,進到步驟524根據(jù)寄存器鏡像數(shù)據(jù)索引表獲取寄存器對應(yīng)的內(nèi)存中的鏡像數(shù)據(jù)。
步驟525根據(jù)寄存器中的數(shù)據(jù)及對應(yīng)的內(nèi)存中的鏡像數(shù)據(jù)判斷芯片是否出現(xiàn)故障。
當下一個隨機檢測任務(wù)周期開始后,按照上述隨機檢測任務(wù)的檢測方式繼續(xù)進行。
當下一個定時分批遍歷檢測任務(wù)周期開始后,按照上述分批遍歷檢測任務(wù)的檢測方式繼續(xù)進行。在此需要注意的是,在每一個檢測周期,只遍厲檢測一個寄存器組。為了保證檢測的覆蓋率,需要按照寄存器組序列表逐一檢測,以便在固定周期內(nèi)全部檢測到每一個芯片中的所有寄存器。
在上述實施例的實際應(yīng)用中,為了減少軟件實現(xiàn)時的復(fù)雜度,可以將隨機檢測任務(wù)改為只檢測固定的、重要的寄存器。這樣,既能減少軟件的復(fù)雜度,又通過對固定的、重要的寄存器的檢測保障了檢測的靈敏度,同時通過分批遍歷檢測任務(wù)保證了故障檢測的覆蓋率。
雖然通過實施例描繪了本發(fā)明,本領(lǐng)域普通技術(shù)人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本發(fā)明的精神。
權(quán)利要求
1.一種芯片故障的檢測方法,其特征在于,包括A、建立所有芯片內(nèi)寄存器的鏡像數(shù)據(jù);B、設(shè)定第一檢測周期;C、當所述第一檢測周期開始時,隨機確定所述芯片需要檢測的寄存器;D、判斷所述需要檢測的寄存器中的數(shù)據(jù)與所述鏡像數(shù)據(jù)并確定所述需要檢測的寄存器所對應(yīng)的芯片是否出現(xiàn)故障。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述C步驟具體包括C1、為寄存器排序并設(shè)定其序列號;C2、從寄存器序列中隨機確定需要檢測的寄存器。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述C步驟具體包括C1、為寄存器排序并設(shè)定其序列號;C2′、從C1步驟中的寄存器中選擇每個芯片中的重要寄存器作為需要檢測的寄存器。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟C2具體包括C21、產(chǎn)生所述寄存器序列號范圍內(nèi)的第一隨機數(shù);C22、根據(jù)所述第一隨機數(shù)確定需要檢測的寄存器。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟C22具體為將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最大值范圍內(nèi)的全部寄存器作為需要檢測的寄存器;或者將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最小值范圍內(nèi)的全部寄存器作為需要檢測的寄存器。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟C22具體為將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最大值范圍內(nèi)預(yù)定數(shù)目的寄存器作為需要檢測的寄存器;或者將序列號為所述第一隨機數(shù)至需要檢測的寄存器序列號最小值范圍內(nèi)預(yù)定數(shù)目的寄存器作為需要檢測的寄存器。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟C22具體為產(chǎn)生所述需要檢測的寄存器序列號范圍內(nèi)的第二隨機數(shù);以序列號為所述第一隨機數(shù)的寄存器為起始位置,按照升序方式循環(huán)選定數(shù)目為所述第二隨機數(shù)個寄存器作為需要檢測的寄存器;或者以序列號為所述第一隨機數(shù)的寄存器為起始位置,按照降序方式循環(huán)選定數(shù)目為所述第二隨機數(shù)個寄存器作為需要檢測的寄存器。
8.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟D具體包括D1、建立寄存器鏡像數(shù)據(jù)索引表;D2、讀取所述需要檢測的寄存器中的數(shù)據(jù);D3、根據(jù)所述寄存器鏡像數(shù)據(jù)索引表獲取內(nèi)存中對應(yīng)于所述需要檢測的寄存器的鏡像數(shù)據(jù);D4、比較所述讀取的寄存器中的數(shù)據(jù)與所述獲取的寄存器中的鏡像數(shù)據(jù),根據(jù)比較結(jié)果判斷所述寄存器所在的芯片是否出現(xiàn)故障。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述寄存器鏡像數(shù)據(jù)索引表包括寄存器在芯片中的地址、寄存器鏡像數(shù)據(jù)起始地址、寄存器鏡像數(shù)據(jù)長度。
10.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述方法還包括E、將所有芯片內(nèi)寄存器分成預(yù)定個數(shù)的寄存器組;F、設(shè)定第二檢測周期;G、依次在每個所述第二周期開始時,分別獲取所述寄存器組中的數(shù)據(jù);H、根據(jù)所述寄存器組中的數(shù)據(jù)及所述鏡像數(shù)據(jù)判斷所述芯片是否出現(xiàn)故障。
全文摘要
本發(fā)明公開了一種芯片故障的檢測方法,包括在系統(tǒng)內(nèi)存中分別建立所有芯片內(nèi)寄存器的鏡像數(shù)據(jù);設(shè)定第一檢測周期;當所述第一檢測周期開始時,隨機確定所述系統(tǒng)中每個芯片需要檢測的寄存器;根據(jù)需要檢測的寄存器中的數(shù)據(jù)及所述鏡像數(shù)據(jù)判斷所述芯片是否出現(xiàn)故障。利用本發(fā)明,可以減少對系統(tǒng)CPU資源的占用,提高芯片故障檢測的覆蓋率及靈敏度。
文檔編號G06F11/22GK1725189SQ20041007082
公開日2006年1月25日 申請日期2004年7月20日 優(yōu)先權(quán)日2004年7月20日
發(fā)明者陳華 申請人:華為技術(shù)有限公司