一種解決指令讀取異常問題的方法
【技術領域】
[0001]本發明屬于集成電路設計領域,特別涉及處理器應用過程中指令讀取異常問題的處理方法。
【背景技術】
[0002]在現實的處理器應用過程中經常會發生由于自電源的波動導致程序從程序存儲空間取指令的時候指令讀取數據錯誤。尤其是在電快速瞬變/脈沖群(EFT)事件或者工作狀態下的靜電(ESD)事件,由于程序存儲器本身的魯棒性要明顯低于數字邏輯單元的魯棒性,從而導致指令讀取錯誤。
[0003]如專利申請201210577051.1公開了一種調試中央處理器死機的方法,使用所述的調試中央處理器死機的系統,包括:開啟第一中央處理器;第一中央處理器的計數器進行倒計數;當所述計數器計數到零時,重置模塊通知所述計數器進行重置;所述重置模塊判斷所述計數器是否完成重置,若完成重置,說明所述第一中央處理器正常運行,若未完成重置,說明所述第一中央處理器異常死機,則所述重置模塊向一第二中央處理器發送一啟動指令;當接收到所述啟動指令后,第二中央處理器對所述第一中央處理器進行調試。該方法是通過重置的方法處理,這會大大延遲處理器的處理效率和速度,影響設備的正常運行。
【發明內容】
[0004]為解決上述問題,本發明的目的在于提供一種解決指令讀取異常問題的方法,該方法避免了處理器在取指令過程中因為外部干擾等因素導致的指令中的某個比特或某幾個比特出現0/1錯誤,保證讀取指令的正確性。
[0005]本發明的目的在于提供一種解決指令讀取異常問題的方法,該方法能夠快速地對讀取指令進行驗證,且實現簡便,成本低廉。
[0006]—種解決指令讀取異常問題的方法在于處理器連續從相同地址讀取N次指令,正常情況下N次指令的比特位是完全一致的。但是在異常狀況下,N次指令中的某一次或者某幾次的指令中的某些比特位會出現0/1錯誤。
[0007]考慮到這種情況,為實現上述目的,本發明的技術方案如下。
[0008]—種解決指令讀取異常問題的方法,其特征在于在讀取指令的過程中,處理器連續讀取N次指令(N2 2),對N次指令進行比較,如果比較一致的情況下,對該指令進行譯碼和指令的執行。
[0009]所述對N次指令進行比較,是通過指令濾波器通過對取的N次相同指令進行濾波,判定哪條才是正確的指令進行執行。
[0010]進一步,指令濾波器通過對取的N次相同指令進行濾波,如果比較不一致,且連續不一致的次數不超過L次(L 2 2),處理器清掉原來讀取的指令,返回再次從程序存儲器進行指令讀取;
[0011]如果比較不一致,且連續不一致的次數超過L次(L 2 2),處理器可以報錯,并根據實際的應用情況進行后續處理,例如程序停止執行并通過引腳指示錯誤或者程序待機一定時間后再重新讀取該指令等等。
[0012]指令濾波器可以通過多種方法實現。指令濾波器最終判定正確指令所需的N次不是固定的,取決于指令濾波器判定正確指令的時間。但指令濾波器有一個最小建立數M,M取決于指令濾波器的結構,且大于等于2。
[0013]—種最簡單的指令濾波器可以這樣實現。該濾波器M=2,指令為L比特,先后取的兩條指令分別為Ml、M2。
[0014]Ml與M2按位比較,如果比較結果相同,對指令M2進行譯碼和執行。如果不相同,取第3條指令M3,M2與M3按位比較,如果比較結果相同,對指令M3進行譯碼和執行。如果不相同,取第4條指令M4,M3與M4按位比較,如果比較結果相同,對M4進行譯碼和執行。以此類推。當該條指令正確執行后,從下一個地址讀取指令,通過指令濾波器對下一條指令進行濾波。以此類推,指令濾波器的結構決定了處理器抗干擾的魯棒性。
[0015]本方法避免了處理器在取指令過程中因為外部干擾等因素導致的指令中的某個比特或某幾個比特出現0/1錯誤,通過2次及以上的相同地址指令的讀取和比特位前后一致性對比,從而丟掉異常條件下讀取的不正確的指令。
【附圖說明】
[0016]圖I是本發明所實施的系統控制流程圖。
【具體實施方式】
[0017]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0018]如圖I所示,為本發明所實現解決指令讀取異常問題的方法的主要控制流程圖,圖中所示,本發明所實施的方法在讀取指令的過程中,處理器連續讀取N次指令(N2 2),對N次指令進行比較,如果比較一致的情況下,對該指令進行譯碼和指令的執行。
[0019]具體地說,對N次指令進行比較,是通過指令濾波器通過對取的N次相同指令進行濾波,判定哪條才是正確的指令進行執行。
[0020]指令濾波器通過對取的N次相同指令進行濾波,如果比較不一致,且連續不一致的次數不超過L次(L 2 2),處理器清掉原來讀取的指令,返回再次從程序存儲器進行指令讀取;
[0021]如果比較不一致,且連續不一致的次數超過L次,處理器可以報錯,并根據實際的應用情況進行后續處理,例如程序停止執行并通過引腳指示錯誤或者程序待機一定時間后再重新讀取該指令等等。
[0022]例如:指令濾波器M= 2,指令為L比特,先后取的兩條指令分別為Ml、M2。
[0023]Ml與M2按位比較,如果比較結果相同,對指令M2進行譯碼和執行。如果不相同,取第3條指令M3,M2與M3按位比較,如果比較結果相同,對指令M3進行譯碼和執行。如果不相同,取第4條指令M4,M3與M4按位比較,如果比較結果相同,對M4進行譯碼和執行。以此類推。當該條指令正確執行后,從下一個地址讀取指令,通過指令濾波器對下一條指令進行濾波。以此類推,指令濾波器的結構決定了處理器抗干擾的魯棒性。
[0024]以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種解決指令讀取異常問題的方法,其特征在于在讀取指令的過程中,處理器連續讀取N次指令,對N次指令進行比較,如果比較一致的情況下,對該指令進行譯碼和指令的執行。2.如權利要求I所述的解決指令讀取異常問題的方法,其特征在于所述對N次指令進行比較,是通過指令濾波器通過對取的N次相同指令進行濾波,判定是正確的指令才進行執行。3.如權利要求2所述的解決指令讀取異常問題的方法,其特征在于所述N次指令N2 2。4.如權利要求2所述的解決指令讀取異常問題的方法,其特征在于指令濾波器通過對取的N次相同指令進行濾波,如果比較不一致,且連續不一致的次數不超過L次,處理器清掉原來讀取的指令,返回再次從程序存儲器進行指令讀取; 如果比較不一致,且連續不一致的次數超過L次,處理器可以報錯,并根據實際的應用情況進行后續處理,例如程序停止執行并通過引腳指示錯誤或者程序待機一定時間后再重新讀取該指令等等。5.如權利要求4所述的解決指令讀取異常問題的方法,其特征在于所述L22。6.如權利要求2所述的解決指令讀取異常問題的方法,其特征在于指令濾波器有一個最小建立數M,M取決于指令濾波器的結構,且大于等于2。7.如權利要求2所述的解決指令讀取異常問題的方法,其特征在于指令濾波器M= 2,指令為L比特,先后取的兩條指令分別為Ml、M2; Ml與M2按位比較,如果比較結果相同,對指令M2進行譯碼和執行; 如果不相同,取第3條指令M3,M2與M3按位比較,如果比較結果相同,對指令M3進行譯碼和執行; 如果不相同,取第4條指令M4,M3與M4按位比較,如果比較結果相同,對M4進行譯碼和執行,以此類推,當該條指令正確執行后,從下一個地址讀取指令,通過指令濾波器對下一條指令進行濾波。
【專利摘要】本發明公開了一種解決指令讀取異常問題的方法,其特征在于在讀取指令的過程中,處理器連續讀取N次指令對N次指令進行比較,如果比較一致的情況下,對該指令進行譯碼和指令的執行。本方法避免了處理器在取指令過程中因為外部干擾等因素導致的指令中的某個比特或某幾個比特出現0/1錯誤,通過2次及以上的相同地址指令的讀取和比特位前后一致性對比,從而丟掉異常條件下讀取的不正確的指令。
【IPC分類】G06F11/07
【公開號】CN105573856
【申請號】CN201610046651
【發明人】喬愛國
【申請人】芯海科技(深圳)股份有限公司
【公開日】2016年5月11日
【申請日】2016年1月22日