一種指令cache的故障診斷方法及系統的制作方法
【專利摘要】本發明公開了一種指令cache的故障診斷方法及系統,該方法包括對寄存器組賦予基準初始值和輔助初始值;將運算指令存放至指令cache中,連續執行N次,直至指令cache的空間被占滿;依次調用指令cache中的運算指令對基準初始值和輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果;再將逆運算指令存放至指令cache中,連續執行N次;依次調用指令cache中的逆運算指令對第一計算結果和輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果;依據第二計算結果與基準初始值是否相等來生成相應的診斷結果。該方法能夠有效判斷指令cache是否出現故障,降低了處理器的故障率,提高了處理器的運行效率。
【專利說明】
一種指令cache的故障診斷方法及系統
技術領域
[0001]本發明涉及計算機故障診斷技術領域,特別是涉及一種指令cache的故障診斷方法及系統。
【背景技術】
[0002]隨著科技的迅速發展,嵌入式處理器的應用日益廣泛。嵌入式處理器中CPU訪問其內部寄存器的速度最快,但通常情況下代碼和數據是存放在主存儲器中的。由于主存儲器的讀寫速度比較慢,因此在CHJ內部寄存器和主存儲器之間設置了一個高速的、容量相對較小的存儲器,把正在執行的指令地址附近的一部分指令或數據從主存儲器調入這個存儲器,提供給CHJ在一段時間內使用。這個高速小容量存儲器就稱為高速緩沖存儲器(cache),其存取速度比主存儲器快幾倍甚至十幾倍。
[0003]Cache作為主存儲器的一部分備份,它是否能實時反映主存儲器的數據至關重要。嵌入式處理器通常會先訪問cache中的內容,再訪問主存儲器。如果cache發生失效,使得主存儲器中的數據改變,而cache中未能實時改變,或者cache中的數據改變,而主存儲器中的數據未能實時改變,這種數據之間的不一致性將有可能導致處理器的程序無法正確運行。在具有安全完整性等級要求的工控系統中,對cache的診斷也就顯得尤為重要。Cache通常可以分為數據cache和指令cache,目前對于數據cache的診斷方法已經較成熟。而對于指令cache的診斷還沒有相應的方法,指令cache—旦失效,就會有可能造成處理器的程序無法正確運行。
[0004]因此,如何提供一種指令cache的故障診斷方法及系統是本領域技術人員目前需要解決的問題。
【發明內容】
[0005]本發明的目的是提供一種指令cache的故障診斷方法,能夠有效判斷指令cache是否出現故障,降低了處理器的故障率,提高了處理器的運行效率;本發明的另一目的是提供一種指令cache的故障診斷系統。
[0006]為解決上述技術問題,本發明提供了一種指令cache的故障診斷方法,包括:
[0007]對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值;
[0008]將預先設定好的運算指令存放至指令cache中,連續執行N次,直至所述指令cache的空間被占滿,其中,N為正整數;
[0009]依次調用所述指令cache中的運算指令對所述基準初始值和所述輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果;
[00?0]再將預先設定好的逆運算指令存放至指令cache中,連續執行N次,其中,所述逆運算指令與所述運算指令互逆;
[0011]依次調用所述指令cache中的逆運算指令對所述第一計算結果和所述輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果;
[0012]當所述第二計算結果與所述基準初始值相等時,則生成所述指令cache沒有故障的診斷結果;
[0013]當所述第二計算結果與所述基準初始值不相等時,則生成所述指令cache有故障的診斷結果。
[0014]優選地,所述對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值前,該方法還包括:
[0015]對堆棧進行檢查;
[0016]將預先選定的寄存器組中當前存放的數據進行壓棧保存,得到預先選定的清空后的所述寄存器組。
[0017]優選地,所述當所述第二計算結果與所述基準初始值不相等時,則生成所述指令cache有故障的診斷結果后,該方法還包括:
[0018]將當前存放的所述數據進行出棧處理,并將所述數據恢復至相應的所述寄存器組中。
[0019]優選地,所述運算指令為加法指令,則相對應地,所述逆運算指令為減法指令。
[0020]優選地,當所述運算指令為加法指令時,所述基準初始值為被加數,所述輔助初始值為加數;則當所述逆運算指令為減法指令時,所述第一計算結果變為被減數,所述輔助初始值變為減數。
[0021]為解決上述技術問題,本發明還提供了一種指令cache的故障診斷系統,包括:
[0022]初始值設定單元,用于對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值;
[0023]指令放置單元,用于將預先設定好的運算指令存放至指令cache中,連續執行N次,直至所述指令cache的空間被占滿,其中,N為正整數;
[0024]再將預先設定好的逆運算指令存放至指令cache中,連續執行N次,其中,所述逆運算指令與所述運算指令互逆;
[0025]處理單元,用于依次調用所述指令cache中的運算指令對所述基準初始值和所述輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果;
[0026]依次調用所述指令cache中的逆運算指令對所述第一計算結果和所述輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果;
[0027]判斷單元,用于當所述第二計算結果與所述基準初始值相等時,則生成所述指令cache沒有故障的診斷結果;
[0028]當所述第二計算結果與所述基準初始值不相等時,則生成所述指令cache有故障的診斷結果。
[0029]優選地,該系統還包括:
[0030]堆棧檢查單元,用于對堆棧進行檢查;
[0031 ]數據壓棧單元,用于將寄存器組中當前存放的數據進行壓棧保存,得到清空后的所述寄存器組。
[0032]優選地,該系統還包括:
[0033]數據出棧單元,用于將當前存放的所述數據進行出棧處理,并將所述數據恢復至相應的所述寄存器組中。
[0034]優選地,該系統還包括:
[0035]顯示單元,用于對所述指令cache沒有故障的診斷結果以及所述指令cache有故障的診斷結果進行顯示。
[0036]優選地,該系統還包括:
[0037]報警單元,用于當所述指令cache有故障時,接收并依據所述判斷單元發出的報警指令發出警報。
[0038]本發明提供了一種指令cache的故障診斷方法及系統,通過調用占滿指令cache的運算指令對基準初始值和輔助初始值進行正運算,得到第一計算結果,再通過調用占滿指令cache的逆運算指令對第一計算結果和輔助初始值進行逆運算,得到第二計算結果,最終通過判斷第二計算結果和基準初始值是否相同來判斷指令cache是否存在故障,該方法能夠有效判斷指令cache是否出現故障,降低了處理器的故障率,提高了處理器的運行效率。
【附圖說明】
[0039]為了更清楚地說明本發明實施例中的技術方案,下面將對現有技術和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0040]圖1為本發明提供的一種指令cache的故障診斷方法的過程的流程圖;
[0041]圖2為本發明提供的一種指令cache的故障診斷系統的結構示意圖。
【具體實施方式】
[0042]本發明的核心是提供一種指令cache的故障診斷方法,能夠有效判斷指令cache是否出現故障,降低了處理器的故障率,提高了處理器的運行效率;本發明的另一核心是提供一種指令cache的故障診斷系統。
[0043]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0044]請參照圖1,圖1為本發明提供的一種指令cache的故障診斷方法的過程的流程圖,該方法包括:
[0045]步驟SlOl:對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值;
[0046]作為優選地,對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值前,該方法還包括:
[0047]對堆棧進行檢查;
[0048]將預先選定的寄存器組中當前存放的數據進行壓棧保存,得到預先選定的清空后的寄存器組。
[0049]為了避免寄存器組中當前存放的數據與后面在對指令cache進行診斷過程中也會存放在寄存器組中的數據混淆從而導致處理器的程序無法正常運行的情況的發生,這里首先將預先選定的寄存器組中當前存放的數據進行壓棧保存,得到預先選定的清空后的寄存器組。
[0050]另外,這里的寄存器組包括特殊寄存器組和通用寄存器組,也即將預先選定的特殊寄存器組和通用寄存器組中當前存放的數據進行壓棧保存,然后,對清空后的寄存器組賦予基準初始值和輔助初始值。
[0051]步驟S102:將預先設定好的運算指令存放至指令cache中,連續執行N次,直至指令cache的空間被占滿,其中,N為正整數;
[0052]可以理解的是,由于處理器在一上電時,數據cache和指令cache都是關閉的,因此,要想對指令cache進行診斷,需要先開啟指令cache,然后將預先設定好的運算指令存放至指令cache中,連續執行N次,直至指令cache的空間被占滿。
[0053]本申請中,使用運算指令占滿指令cache的空間,從而使得對指令cache檢測的覆蓋率達到100%,當然,這里也可以不將指令cache的空間占滿,而只將運算指令放在指令cache的預設地址處,依次來對指令cache的特定位置進行故障診斷。
[0054]步驟S103:依次調用指令cache中的運算指令對基準初始值和輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果;
[0055]步驟S104:再將預先設定好的逆運算指令存放至指令cache中,連續執行N次,其中,逆運算指令與運算指令互逆;
[0056]步驟S105:依次調用指令cache中的逆運算指令對第一計算結果和輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果;
[0057]作為優選地,運算指令為加法指令,則相對應地,逆運算指令為減法指令。
[0058]進一步地,當運算指令為加法指令時,基準初始值為被加數,輔助初始值為加數;則當逆運算指令為減法指令時,第一計算結果變為被減數,輔助初始值變為減數。
[0059]可以理解的是,當運算指令為加法運算指令時,假設基準初始值為被加數,且被加數為0,輔助初始值為加數,且加數為I,假設N取10,則依次調用指令cache中的加法運算指令對基準初始值O和輔助初始值I進行加法運算處理直至10條加法運算指令被調用完,得到第一計算結果,則第一計算結果。
[0060]則當逆運算指令為減法運算指令時,則依次調用指令cache中的減法運算指令對第一計算結果和輔助初始值I進行逆運算處理直至10條減法運算指令被調用完,得到第二計算結果。
[0061 ]實際上,如果指令cache沒有故障的話,則第一計算結果應該為10,第二計算結果應該為O。
[0062]步驟S106:當第二計算結果與基準初始值相等時,則生成指令cache沒有故障的診斷結果;
[0063]當第二計算結果與基準初始值不相等時,則生成指令cache有故障的診斷結果。
[0064]由上述列舉的例子可看出,當指令cache沒有故障時,則第二計算結果應該為0,此時第二計算結果與基準初始值O是相等的,則此時生成指令cache沒有故障的診斷結果。
[0065]如果此時第二計算結果不為O,則此時第二計算結果與基準初始值O是不相等的,則此時生成指令cache有故障的診斷結果。
[ΟΟ??]作為優選地,可以對生成的指令cache沒有故障的診斷結果或者指令cache有故障的診斷結果進行顯示,以方便運維人員的監視。
[0067]作為優選地,當第二計算結果與基準初始值不相等時,則生成指令cache有故障的診斷結果后,該方法還包括:
[0068]將當前存放的數據進行出棧處理,并將數據恢復至相應的寄存器組中。
[0069]在對指令cache的故障診斷完成后,將之前保存在堆棧中額數據出棧,并將數據恢復至相應的寄存器組中,使得寄存器組中的數據恢復為指令cache故障診斷之前的數值。
[0070]可以理解的是,本發明提供的一種指令cache的故障診斷方法適用于各類處理器,包括PowerPC(Performance Optimizat1n With Enhanced RISC-PerformanceComputing,一種精簡指令集架構的中央處理器)處理器,當然,本發明對于該方法具體適用于哪種處理器不做限定。
[0071]本發明提供了一種指令cache的故障診斷方法,通過調用占滿指令cache的運算指令對基準初始值和輔助初始值進行正運算,得到第一計算結果,再通過調用占滿指令cache的逆運算指令對第一計算結果和輔助初始值進行逆運算,得到第二計算結果,最終通過判斷第二計算結果和基準初始值是否相同來判斷指令cache是否存在故障,該方法能夠有效判斷指令cache是否出現故障,降低了處理器的故障率,提高了處理器的運行效率。
[0072]請參照圖2,圖2為本發明提供的一種指令cache的故障診斷系統的結構示意圖,該系統包括:
[0073]初始值設定單元I,用于對預先選定的清空后的寄存器組5賦予基準初始值和輔助初始值;
[0074]指令放置單元2,用于將預先設定好的運算指令存放至指令cache6中,連續執行N次,直至指令cache 6的空間被占滿,其中,N為正整數;
[0075]再將預先設定好的逆運算指令存放至指令cache6中,連續執行N次,其中,逆運算指令與運算指令互逆;
[0076]處理單元3,用于依次調用指令cache6中的運算指令對基準初始值和輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果;
[0077]依次調用指令cache6中的逆運算指令對第一計算結果和輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果;
[0078]判斷單元4,用于當第二計算結果與基準初始值相等時,則生成指令cache6沒有故障的診斷結果;
[0079]當第二計算結果與基準初始值不相等時,則生成指令cache6有故障的診斷結果。
[0080]作為優選地,該系統還包括:
[0081]堆棧檢查單元,用于對堆棧進行檢查;
[0082]數據壓棧單元,用于將寄存器組5中當前存放的數據進行壓棧保存,得到清空后的寄存器組5。
[0083]作為優選地,該系統還包括:
[0084]數據出棧單元,用于將當前存放的數據進行出棧處理,并將數據恢復至相應的寄存器組5中。
[0085]作為優選地,該系統還包括:
[0086]顯示單元,用于對指令cache 6沒有故障的診斷結果以及指令cache 6有故障的診斷結果進行顯示。
[0087]作為優選地,該系統還包括:
[0088]報警單元,用于當指令cache6有故障時,接收并依據判斷單元4發出的報警指令發出警報。
[0089]作為優選地,該報警單元可以為蜂鳴器或者聲光報警器,當然,還可以為其他類型的報警器,本發明在此不做特別的限定。
[0090]另外,對于該系統中各個單元的具體介紹請結合上述方法實施例的介紹,本發明在此不再贅述。
[0091]本發明提供了一種指令cache的故障診斷系統,通過調用占滿指令cache的運算指令對基準初始值和輔助初始值進行正運算,得到第一計算結果,再通過調用占滿指令cache的逆運算指令對第一計算結果和輔助初始值進行逆運算,得到第二計算結果,最終通過判斷第二計算結果和基準初始值是否相同來判斷指令cache是否存在故障,該方法能夠有效判斷指令cache是否出現故障,降低了處理器的故障率,提高了處理器的運行效率。
[0092]需要說明的是,在本說明書中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0093]對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其他實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【主權項】
1.一種指令cache的故障診斷方法,其特征在于,包括: 對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值; 將預先設定好的運算指令存放至指令cache中,連續執行N次,直至所述指令cache的空間被占滿,其中,N為正整數; 依次調用所述指令cache中的運算指令對所述基準初始值和所述輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果; 再將預先設定好的逆運算指令存放至指令cache中,連續執行N次,其中,所述逆運算指令與所述運算指令互逆; 依次調用所述指令cache中的逆運算指令對所述第一計算結果和所述輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果; 當所述第二計算結果與所述基準初始值相等時,則生成所述指令cache沒有故障的診斷結果; 當所述第二計算結果與所述基準初始值不相等時,則生成所述指令cache有故障的診斷結果。2.如權利要求1中的故障診斷方法,其特征在于,所述對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值前,該方法還包括: 對堆棧進行檢查; 將預先選定的寄存器組中當前存放的數據進行壓棧保存,得到預先選定的清空后的所述寄存器組。3.如權利要求1中的故障診斷方法,其特征在于,所述當所述第二計算結果與所述基準初始值不相等時,則生成所述指令cache有故障的診斷結果后,該方法還包括: 將當前存放的所述數據進行出棧處理,并將所述數據恢復至相應的所述寄存器組中。4.如權利要求1中的故障診斷方法,其特征在于,所述運算指令為加法指令,則相對應地,所述逆運算指令為減法指令。5.如權利要求1中的故障診斷方法,其特征在于,當所述運算指令為加法指令時,所述基準初始值為被加數,所述輔助初始值為加數;則當所述逆運算指令為減法指令時,所述第一計算結果變為被減數,所述輔助初始值變為減數。6.一種指令cache的故障診斷系統,其特征在于,包括: 初始值設定單元,用于對預先選定的清空后的寄存器組賦予基準初始值和輔助初始值; 指令放置單元,用于將預先設定好的運算指令存放至指令cache中,連續執行N次,直至所述指令cache的空間被占滿,其中,N為正整數; 再將預先設定好的逆運算指令存放至指令cache中,連續執行N次,其中,所述逆運算指令與所述運算指令互逆; 處理單元,用于依次調用所述指令cache中的運算指令對所述基準初始值和所述輔助初始值進行運算處理直至N條運算指令被調用完,得到第一計算結果; 依次調用所述指令cache中的逆運算指令對所述第一計算結果和所述輔助初始值進行逆運算處理直至N條逆運算指令被調用完,得到第二計算結果; 判斷單元,用于當所述第二計算結果與所述基準初始值相等時,則生成所述指令cache沒有故障的診斷結果; 當所述第二計算結果與所述基準初始值不相等時,則生成所述指令cache有故障的診斷結果。7.如權利要求6中的故障診斷系統,其特征在于,該系統還包括: 堆棧檢查單元,用于對堆棧進行檢查; 數據壓棧單元,用于將寄存器組中當前存放的數據進行壓棧保存,得到清空后的所述寄存器組。8.如權利要求6中的故障診斷方法,其特征在于,該系統還包括: 數據出棧單元,用于將當前存放的所述數據進行出棧處理,并將所述數據恢復至相應的所述寄存器組中。9.如權利要求6中的故障診斷方法,其特征在于,該系統還包括: 顯示單元,用于對所述指令cache沒有故障的診斷結果以及所述指令cache有故障的診斷結果進行顯示。10.如權利要求6中的故障診斷方法,其特征在于,該系統還包括: 報警單元,用于當所述指令cache有故障時,接收并依據所述判斷單元發出的報警指令發出警報。
【文檔編號】G06F11/10GK105893165SQ201610190415
【公開日】2016年8月24日
【申請日】2016年3月29日
【發明人】孫永紅
【申請人】杭州和利時自動化有限公司