專利名稱:可編微程序設(shè)備代碼簽名的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體涉及一種可編微程序設(shè)備,具體涉及一種被配置用來執(zhí)行代碼、同時 檢查代碼未被損壞(corrupt)的可編微程序設(shè)備。
背景技術(shù):
眾所周知,可編微程序設(shè)備是一種包括下述元件的電子設(shè)備處理器;存儲軟件 和/或固件代碼的代碼存儲器,當(dāng)所述可編微程序設(shè)備使用時,所述處理器執(zhí)行該代碼;和 數(shù)據(jù)存儲器,在執(zhí)行該代碼時所使用的變量的值被存儲在數(shù)據(jù)存儲器中。眾所周知,可編微程序設(shè)備的代碼存儲器的內(nèi)容(即,代碼)可因可編微程序設(shè)備 所暴露的電磁干擾(EMI)而被改變(即,損壞)。為確定代碼的損壞,因而循環(huán)計算代碼簽名并將其與參考簽名相比較。更具體地,簽名計算包括涉及所有存儲在代碼存儲器中的要素的數(shù)字_邏輯計 算,并且該計算是由處理器基于簽名計算函數(shù)而進行的,該簽名計算函數(shù)構(gòu)成存儲在代碼 存儲器中的代碼的一部分。另一方面,參考簽名在編譯可編微程序設(shè)備代碼時被計算,并且與代碼同時被存 儲在可編微程序設(shè)備代碼存儲器中。簽名計算函數(shù)由處理器周期性地執(zhí)行,并且通常具有最低的優(yōu)先級,S卩,當(dāng)處理器 不執(zhí)行其他代碼函數(shù)時才執(zhí)行簽名計算函數(shù)。如果處理器計算的簽名與存儲在代碼存儲器中的參考簽名不符,可編微程序設(shè)備 即被禁用以防止損害。但是,申請人已觀察到,當(dāng)代碼被損壞時,不可能預(yù)測代碼執(zhí)行的進展 (development),這意味著,當(dāng)代碼被損壞時,不再能確保簽名計算函數(shù)的執(zhí)行。更具體地,當(dāng)代碼被損壞時,簽名可能被錯誤地計算,更嚴(yán)重的是,可能停止被處 理器計算,因而代碼的損壞可能永不被檢測到。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種可以削弱(alleviate)上述缺陷的可編微程序 設(shè)備。該目的是通過本發(fā)明來實現(xiàn)的,其中本發(fā)明涉及一種可編微程序電子設(shè)備,該設(shè) 備包括存儲包含許多指令的軟件和/或固件代碼的代碼存儲器,所述可編微程序電子設(shè)備 被配置用來計算存儲在代碼存儲器中的代碼的簽名;和基于所計算出的簽名來檢測存儲在代碼存儲器中的代碼的任何損壞;所述可編微程序電子設(shè)備的特征在于,其被進一步配置用來根據(jù)指令周期操作,每個指令周期被分成各自的第一操作階段和各自的第二操作 階段;
在指令周期的第一操作階段從代碼存儲器中讀取第一指令;在所述指令周期的第二操作階段解碼并執(zhí)行所讀取的第一指令;在所述指令周期的第二操作階段從所述代碼存儲器中讀取第二指令;基于所讀取的第二指令計算所述簽名。
為更好地理解本發(fā)明,現(xiàn)將參考附圖(未按比例繪制)來描述優(yōu)選的實施方式,該 實施方式僅是示例性的并且不能被解釋為對本發(fā)明的限制,其中圖1顯示由本發(fā)明的可編微程序電子設(shè)備進行的各種操作關(guān)于指令周期和該可 編微程序電子設(shè)備的時鐘(clock)的時序圖;圖2顯示本發(fā)明優(yōu)選實施方式的可編微程序電子設(shè)備的操作結(jié)構(gòu)圖。
具體實施例方式以下描述用來使本領(lǐng)域技術(shù)人員制造和使用本發(fā)明。對這些實施方式的各種修改 對于本領(lǐng)域技術(shù)人員來說將是顯而易見的,且不背離要求保護的本發(fā)明的范圍。因此,本發(fā)明不限于所顯示的實施方式,而應(yīng)給予與本文公開的原理和特征相一 致的且在所附權(quán)利要求中限定出的最大范圍。根據(jù)本發(fā)明,其提供一種可編微程序電子設(shè)備,該設(shè)備包括存儲包含多個指令的 軟件和/或固件代碼的代碼存儲器,所述可編微程序電子設(shè)備被配置用來計算存儲在代碼存儲器中的代碼的簽名;和基于所計算出的簽名來檢測存儲在代碼存儲器中的代碼的任何損壞。本發(fā)明的可編微程序電子設(shè)備的特征在于,其進一步被配置用來根據(jù)指令周期操作,每個指令周期被分成各自的第一操作階段和各自的第二操作 階段;在指令周期的第一操作階段從代碼存儲器中讀取第一指令;在所述指令周期的第二操作階段解碼并執(zhí)行所讀取的第一指令;在所述指令周期的第二操作階段從所述代碼存儲器中讀取第二指令;基于所讀取的第二指令計算所述簽名。根據(jù)本發(fā)明,代碼中的每個指令的執(zhí)行因而被分成兩個操作階段,如同兩級輸送
管道一樣。也就是說,在指令周期的第一操作階段,代碼存儲器被用來讀取代碼的指令,并且 在該指令周期的第二操作階段,當(dāng)所讀取的指令被解碼和執(zhí)行時,代碼存儲器被用來讀取 用于簽名計算的指令。更具體地,本發(fā)明的可編微程序電子設(shè)備包括簽名計算單元,該簽名計算單元被 配置用來在所述指令周期的第二操作階段從所述代碼存儲器中讀取所述第二指令;基于所讀取的第二指令計算所述簽名;和基于所計算出的簽名來檢測存儲在代碼存儲器中的代碼的任何損壞。所述簽名計算單元優(yōu)選也被配置用來
將所述計算出的簽名與參考簽名比較;和如果所述計算出的簽名與參考簽名不同,禁用所述可編微程序電子設(shè)備的操作。所述簽名計算單元也被便利地配置用來從所述代碼存儲器中讀取所述參考簽名。為更清楚地理解本發(fā)明,圖1顯示了由本發(fā)明可編微程序電子設(shè)備進行的各種操 作的關(guān)于指令周期和該可編微程序電子設(shè)備的時鐘的時序圖。更具體地,圖1時序圖從上至下顯示可編微程序電子設(shè)備的時鐘的時距圖;可編微程序電子設(shè)備對應(yīng)于時鐘的時距圖的指令周期Cl、C2、C3和C4 ;從可編微程序電子設(shè)備的代碼存儲器提取第一指令I(lǐng)I、12、13和14的第一提取 操作FETCH II、FETCH 12、FETCH 13禾口 FETCH 14相對于指令周期Cl、C2、C3、C4以及可編 微程序電子設(shè)備的時鐘的時間安排,所述第一提取操作FETCH II、FETCH 12、FETCH 13和 FETCH 14是由可編微程序電子設(shè)備的提取單元進行的;從代碼存儲器提前第二指令Wl、W2、W3和W4的第二提取操作FETCH WUFETCH W2、 FETCH W3和FETCH W4相對于指令周期C1、C2、C3、C4以及可編微程序電子設(shè)備的時鐘的時 間安排,所述第二提取操作FETCH WUFETCH W2、FETCH W3和FETCH W4是由可編微程序電 子設(shè)備的簽名計算單元進行的;和所述第一指令I(lǐng)I、12、13和14的解碼和執(zhí)行操作D&E II、D&E 12、D&E 13和D&E 14相對于指令周期C1、C2、C3、C4以及可編微程序電子設(shè)備的時鐘的時間安排,所述解碼和 執(zhí)行操作D&E IUD&E I2、D&E 13和D&E 14是由可編微程序電子設(shè)備的解碼和執(zhí)行單元進 行的。更具體地,如圖1所示,可編微程序電子設(shè)備的時鐘頻率是指令周期C1、C2、C3、C4 的頻率的兩倍,每個指令周期包含第一操作階段(在圖1中分別標(biāo)示為cn、c21、c31、c41)和 第二操作階段(在圖1中分別標(biāo)示為ci2、C22, C32、C42)。而且,如圖1所示,在第一操作階段Cn、C21、C31、C41,可編微程序電子設(shè)備的提取單 元進行從代碼存儲器中提取第一指令I(lǐng)1、I2、I3和14的第一提取操作FETCH IUFETCH 12、 FETCH 13和FETCH 14,即,在代碼存儲起中搜索和讀取第一指令I(lǐng)I、12、13和14。在第二操作階段C12、C22、C32、C42,簽名計算單元進行從代碼存儲器中提取第二指令 Wl、W2、W3 禾口 W4 的第二提取操作 FETCH WU FETCHW2、FETCH W3 禾口 FETCH W4,即,簽名計算 單元在代碼存儲起中搜索和讀取第二指令W1、W2、W3和W4,同時,解碼和執(zhí)行操作單元進行 所述第一指令I(lǐng)I、12、13和14的解碼和執(zhí)行操作D&E II、D&E 12、D&E 13和D&E 14。為更加清楚地理解本發(fā)明,除圖1之外,圖2顯示了根據(jù)本發(fā)明的優(yōu)選實施方式的 可編微程序電子設(shè)備20的操作結(jié)構(gòu)圖。更具體地,可編微程序電子設(shè)備20包括提取單元21;復(fù)用器22 ;存儲包含多個指令的代碼的代碼存儲器23 ;鎖存器24;解碼和執(zhí)行單元25 ;和
簽名計算單元26。更具體地,提取單元21被配置用來從代碼存儲器23中取回要被執(zhí)行的指令,從而 為復(fù)用器22提供程序計數(shù)器,即,提供要被執(zhí)行的指令的指示器(即,地址)。同樣地,數(shù)字計算單元26被配置用來從代碼存儲器23中取回要被用于代碼簽名 計算的指令,從而為復(fù)用器22提供要被用于代碼簽名計算的指令的地址。復(fù)用器22受控制信號控制,因而要被執(zhí)行的或要被用于代碼簽名計算的指令在 存儲器23中被讀取,即,要被執(zhí)行的指令或要被用于代碼簽名計算的指令被從代碼存儲器 23中取回。例如,參考圖1和圖2,復(fù)用器22可方便地被可編微程序電子設(shè)備的時鐘控制,從 而在時鐘的上升沿(rising edge)將從代碼存儲器23中讀取第一指令I(lǐng)I、12、13和14替 代為讀取第二指令Wl、W2、W3和W4。更具體地,在第一操作階段Cn、C21、C31、C41,復(fù)用器22允許從代碼存儲器23中讀取 /取回第一指令I(lǐng)I、12、13和14,并存儲在鎖存器24中,并且在第二操作階段C12, C22, C32, C42,復(fù)用器22允許簽名計算單元26從代碼存儲器23中讀取/取回第二指令W1、W2、W3和 W4。在第二操作階段C12、C22, C32> C42,解碼和執(zhí)行單元25也讀取和解碼并執(zhí)行存儲在 鎖存器24中的第一指令I(lǐng)I、12、13和14。解碼和執(zhí)行單元25隨后更新提取單元21的程序計數(shù)器以指向要被執(zhí)行的另一個 指令,該另一個指令在邏輯上遵循剛被執(zhí)行的那個指令。 最終,在基于存儲在代碼存儲器23中的所有指令計算簽名后,簽名計算單元26將 計算出的簽名與存儲在代碼存儲器23中的參考簽名比較。如果所計算出的簽名不同于參考簽名,簽名計算單元26禁用可編微程序電子設(shè) 備20的操作(即使該設(shè)備失效),從而防止其引起任何損害。簽名計算單元26為計算簽名并將計算出的簽名與參考簽名比較而進行的操作可 優(yōu)選地基于循環(huán)冗余校驗(CRC)法,例如CRC-32 (32位)??删幬⒊绦螂娮釉O(shè)備20可便利地包括被配置用來執(zhí)行提取單元21、鎖存器24和 解碼和執(zhí)行單元25的第一處理器,以及被配置用來執(zhí)行數(shù)字計算單元26的協(xié)處理器。在 這種情況下,處理器和協(xié)處理器通過復(fù)用器22共用代碼存儲器23。本發(fā)明的優(yōu)點由于以上描述而變得清楚。特別地,重要的是要注意到,用于計算本發(fā)明的簽名的時間是如何可預(yù)測的,并且 該時間等于存儲在代碼存儲器中的指令的數(shù)目乘以指令周期的長度(即操作階段的長度 的2倍)。另一個優(yōu)點在于,當(dāng)代碼被損壞時,數(shù)字的正確計算未受代碼存儲器的內(nèi)容或代 碼存儲器的內(nèi)容的任何損壞的影響。明顯地,可對本發(fā)明作出改變,但是不背離如所附權(quán)利要求書界定出的本發(fā)明的 范圍。
權(quán)利要求
一種可編微程序電子設(shè)備,其包括存儲有包含許多指令的軟件和/或固件代碼的代碼存儲器(23),所述可編微程序電子設(shè)備被配置用來計算存儲在所述代碼存儲器(23)中的代碼的簽名;和基于所計算出的簽名來檢測存儲在所述代碼存儲器(23)中的代碼的任何損壞;所述可編微程序電子設(shè)備的特征在于,其被進一步配置用來根據(jù)指令周期(C1、C2、C3、C4)操作,每個指令周期被分成各自的第一操作階段(C11;C21;C31;C41)和各自的第二操作階段(C12;C22;C32;C42);在指令周期(C1、C2、C3、C4)的第一操作階段(C11;C21;C31;C41)從所述代碼存儲器(23)中讀取第一指令(I1;I2;I3;I4);在所述指令周期(C1、C2、C3、C4)的第二操作階段(C12;C22;C32;C42)解碼并執(zhí)行所讀取的第一指令(I1;I2;I3;I4);在所述指令周期(C1、C2、C3、C4)的第二操作階段(C12;C22;C32;C42)從所述代碼存儲器(23)中讀取第二指令(W1;W2;W3;W4);基于所讀取的第二指令(W1;W2;W3;W4)計算所述簽名。
2.如權(quán)利要求1所述的可編微程序電子設(shè)備,其還包括簽名計算單元(26),所述簽名 計算單元被配置用來在所述指令周期(C1、C2、C3、C4)的第二操作階段(C12 ;C22 ;C32 ;C42)從所述代碼存儲器 (23)中讀取所述第二指令(Wl ;W2 ;W3 ;W4);基于所讀取的第二指令(Wl ;W2 ;W3 ;W4)計算所述簽名;和基于所計算出的簽名來檢測存儲在代碼存儲器(23)中的代碼的任何損壞。
3.如權(quán)利要求2所述的可編微程序電子設(shè)備,其中所述簽名計算單元(26)還被配置用來還基于存儲在所述代碼存儲器(23)中的參考簽名來檢測存儲在所述代碼存儲器(23) 中的代碼的所述任何損壞。
4.如權(quán)利要求3所述的可編微程序電子設(shè)備,其中所述簽名計算單元(26)還被配置用來將所述計算出的簽名與所述參考簽名比較;和如果所述計算出的簽名與所述參考簽名不同,檢測存儲在所述代碼存儲器(23)中的 代碼的所述任何損壞。
5.如權(quán)利要求3所述的可編微程序電子設(shè)備,其中所述簽名計算單元(26)還被配置用來從所述代碼存儲器(23)中讀取所述參考簽名。
6.如權(quán)利要求2所述的可編微程序電子設(shè)備,其中所述簽名計算單元(26)還被配置用來如果檢測到存儲在所述代碼存儲器(23)中的代碼的所述任何損壞,則禁用所述可編 微程序電子設(shè)備的操作。
7.如權(quán)利要求2所述的可編微程序電子設(shè)備,其中所述簽名計算單元(26)還被配置用來基于循環(huán)冗余校驗(CRC)法計算所述簽名。
8.一種用于可編微程序電子設(shè)備的電子處理裝置,其被配置成權(quán)利要求2所述的數(shù)字 計算單元(26)。
9.一種包含指令的軟件和/或固件產(chǎn)品,當(dāng)所述指令被可編微程序電子設(shè)備的可編程 處理裝置執(zhí)行時,所述指令使得所述可編程處理裝置變得被配置成權(quán)利要求2所述的簽名 計算單元(26)。
全文摘要
本發(fā)明公開一種可編微程序電子設(shè)備,其具有存儲包含許多指令的軟件和/或固件代碼的代碼存儲器(23)。所述可編微程序電子設(shè)備被配置用來計算存儲在代碼存儲器(23)中的代碼的簽名,并基于所計算出的簽名檢測存儲在代碼存儲器(23)中的代碼的任何損壞??删幬⒊绦螂娮釉O(shè)備的特征在于,其進一步被配置用來根據(jù)指令周期(C1、C2、C3、C4)操作,每個指令周期被分成各自的第一操作階段(C11;C21;C31;C41)和各自的第二操作階段(C12;C22;C32;C42);用來在指令周期(C1、C2、C3、C4)的第一操作階段(C11;C21;C31;C41)從所述代碼存儲器(23)中讀取第一指令(I1;I2;I3;I4);用來在所述指令周期(C1、C2、C3、C4)的第二操作階段(C12;C22;C32;C42)解碼并執(zhí)行所讀取的第一指令(I1;I2;I3;I4);用來在所述指令周期(C1、C2、C3、C4)的第二操作階段(C12;C22;C32;C42)從所述代碼存儲器(23)中讀取第二指令(W1;W2;W3;W4);以及用來基于所讀取的第二指令(W1;W2;W3;W4)計算所述簽名。
文檔編號G06F9/22GK101989188SQ20101024977
公開日2011年3月23日 申請日期2010年8月3日 優(yōu)先權(quán)日2009年8月3日
發(fā)明者克勞迪奧·根塔, 阿爾貝托·曼佐尼 申請人:C.R.F.阿西安尼顧問公司