本發(fā)明涉及數(shù)字計算機技術領域,特別是一種適用于PowerPC處理器的高可靠指令Cache。
背景技術:
通常情況下,計算機程序是放在內存中的,處理器從內存讀取指令并執(zhí)行。但內存的訪問速度較慢,對于目前的流水線處理器,執(zhí)行一條指令的時間是1個處理器時鐘周期,而訪問內存的時間是30-100個處理器時間周期。為了解決內存訪問速度慢的問題,最常用的方法是在處理器和內存之間設置一個容量較小,但訪問速度快的高速存儲器,即Cache。
對于PowerPC等RISC處理器,存儲體系結構一般采用哈佛結構,即程序的指令存儲和數(shù)據(jù)存儲分開,因此在處理器的取指單元和內存之間設置指令Cache,在處理器的數(shù)據(jù)載入/存儲單元與內存之間設置數(shù)據(jù)Cache,兩者獨立。對于PowerPC處理器,因其指令長度固定,而數(shù)據(jù)長度可以在字節(jié)和四字之間變化,指令Cache和數(shù)據(jù)Cache的設計存在一定的差異。
在一些應用場合,如航天應用場合,因外太空輻射的影響,Cache的存儲體可能在輻射作用下出現(xiàn)翻轉,即Cache存儲體中的值因單粒子事件出錯,導致程序執(zhí)行出現(xiàn)錯誤,因此需要一種高可靠的Cache。
技術實現(xiàn)要素:
本發(fā)明解決的技術問題是:克服現(xiàn)有技術的不足,提供了一種適用于PowerPC處理器的高可靠指令Cache,克服了現(xiàn)有的Cache不適用于航天、軍事、工業(yè)控制等工作環(huán)境較惡劣領域,容易導致存儲數(shù)據(jù)出現(xiàn)錯誤的問題。
本發(fā)明的技術解決方案是:一種適用于PowerPC處理器的高可靠指令Cache,包括AXI總線接口單元、指令Cache塊緩存器、指令Cache控制器、指令Cache的數(shù)據(jù)存儲體、命中檢查器、指令寄存器、指令校驗電路、指令校驗碼讀出寄存器、校驗碼生成邏、校驗碼緩存器、檢驗碼存儲體,其中
AXI總線接口單元,從外部PowerPC處理器的內存中讀取指令后送至指令Cache塊緩存器、校驗碼生成邏輯;
指令Cache塊緩存器,當命中檢查為否時,接收指令后進行緩存,然后將指令送至指令寄存器,同時將當前指令對應的新標簽添加至標簽存儲CAM,進而更新標簽存儲CAM中的標簽,將當前指令送至指令Cache的數(shù)據(jù)存儲體中新標簽對應的地址存儲;所述的指令均與唯一的標簽對應,標簽包括指令在指令Cache的數(shù)據(jù)存儲體中的存儲地址、校驗碼;
指令Cache控制器,控制命中檢查器進行命中檢查,如果命中檢查為是,則讀取指令Cache的數(shù)據(jù)存儲體中的指令送至指令寄存器,如果命中檢查為否,則控制AXI總線接口單元從PowerPC處理器的內存中讀取指令后送至指令Cache塊緩存器、校驗碼生成邏輯;
指令Cache的數(shù)據(jù)存儲體,存儲指令;
命中檢查器,讀取外部PowerPC處理器中地址生成器生成的地址,然后取外部PowerPC處理器中標簽存儲CAM中的標簽進行比對,如果比對一致,則輸出命中檢查為是,否則輸出命中檢查為否;
指令寄存器,接收指令后進行存儲;
指令校驗電路,讀取指令寄存器存儲的指令,同時讀取指令校驗碼讀出寄存器存儲的校驗碼,然后進行ECC+Parity校驗,將校驗通過的指令送至PowerPC處理器使用;
指令校驗碼讀出寄存器,接收校驗碼并存儲;
校驗碼生成邏輯,接收指令后使用ECC+Parity生成校驗碼,并送至校驗碼緩存器存儲;
校驗碼緩存器,接收校驗碼生成邏輯發(fā)送的校驗碼,將校驗碼依次送至檢驗碼存儲體存儲;
檢驗碼存儲體,當命中檢查為是時,將當前命中檢查標簽對應的校驗碼送至指令校驗碼讀出寄存器,當命中檢查為否時,讀取校驗碼緩存器中的校驗碼并送至指令校驗碼讀出寄存器。
本發(fā)明與現(xiàn)有技術相比的優(yōu)點在于:
(1)本發(fā)明指令Cache裝置,克服了現(xiàn)有的Cache不適用于航天、軍事、工業(yè)控制等工作環(huán)境較惡劣領域,容易導致存儲數(shù)據(jù)出現(xiàn)錯誤的問題,通過指令Cache的檢錯糾錯功能增強了PowerPC處理器在惡劣工作環(huán)境的適應性,提高PowerPC處理器的可靠性;
(2)本發(fā)明指令Cache裝置通過擴展ECC+Parity校驗碼數(shù)據(jù)通路,提高了指令Cache的可靠性,另外,本發(fā)明指令Cache裝置中ECC+Parity校驗碼的生成在寫指令Cache之前生成,校驗碼的檢查在指令寄存器之后進行,不會影響指令Cache的訪問時間,在提高PowerPC處理器可靠性的同時,不會降低PowerPC處理器的性能。
附圖說明
圖1為本發(fā)明一種適用于PowerPC處理器的高可靠指令Cache結構圖;
圖2為本發(fā)明Cache中指令Cache數(shù)據(jù)存儲體的訪問時序圖;
圖3為本發(fā)明一種適用于PowerPC處理器的高可靠指令Cache信息流程圖。
具體實施方式
本發(fā)明針對現(xiàn)有技術的不足,提出一種適用于PowerPC處理器的高可靠指令Cache,克服了現(xiàn)有的Cache不適用于航天、軍事、工業(yè)控制等工作環(huán)境較惡劣領域,容易導致存儲數(shù)據(jù)出現(xiàn)錯誤的問題,通過指令Cache的檢錯糾錯功能增強了PowerPC處理器在惡劣工作環(huán)境的適應性,提高PowerPC處理器的可靠性,另外本發(fā)明指令Cache裝置通過擴展ECC+Parity校驗碼數(shù)據(jù)通路,提高了指令Cache的可靠性,而且ECC+Parity校驗碼的生成在寫指令Cache之前生成,校驗碼的檢查在指令寄存器之后進行,不會影響指令Cache的訪問時間,在提高PowerPC處理器可靠性的同時,不會降低PowerPC處理器的性能,下面結合附圖對本發(fā)明進行詳細說明。
如圖1為本發(fā)明一種適用于PowerPC處理器的高可靠指令Cache結構圖,包括指令單元的取指地址生成器1.1、指令寄存器1.3、指令校驗碼讀出寄存器1.4、指令校驗邏輯1.2、指令Cache控制器2.1、指令Cache存儲體中的標簽存儲體CAM3.1、命中檢查器3.2、指令Cache的數(shù)據(jù)存儲RAM3.3、指令Cache塊緩存器3.4、校驗碼生成邏輯3.5、校驗碼緩存器3.6、校驗碼存儲器RAM3.7、AXI總線接口單元4,其中
1.1是指令單元的取指地址生成器,計算下一條指令的取指地址,并寄存輸出給指令Cache控制器和指令Cache存儲體。
2.1是指令Cache控制器,根據(jù)取指地址、Cache存儲器反饋的命中情況,控制是否需要將取指地址輸出給總線接口單元,請求總線接口單元從內存讀取Cache塊,以及控制Cache存儲體的替換策略。
3.1是指令Cache存儲體中的標簽存儲體CAM,CAM按多路組相聯(lián)的組織結構保存Cache塊的標簽信息,包括Cache塊的有效性、Cache塊地址等,標簽存儲體CAM根據(jù)取指地址進行索引,產生多路命中信號。
3.2是命中檢查邏輯,檢查標簽存儲體CAM輸出的命中信號,是否有命中,以及是否有多路命中等情況。
3.3是指令Cache的數(shù)據(jù)存儲RAM,也是本發(fā)明進行可靠性設計的保護對象,指令Cache的數(shù)據(jù)存儲RAM以Cache塊為單元進行組織管理,數(shù)據(jù)RAM的組織結構與CAM的組織結構完全一致,每個Cache塊為32字節(jié)。在根據(jù)取指地址索引查找CAM時,也會索引查找數(shù)據(jù)存儲RAM,然后根據(jù)CAM的命中情況選擇一路Cache塊數(shù)據(jù)輸出。
當Cache不命中時
4.1是總線接口單元,負責從內存讀數(shù)據(jù),并寄存輸出給指令Cache存儲體的寫指令Cache塊緩存器;
3.4是指令Cache存儲器的寫指令Cache塊緩存器,暫存將寫入指令Cache存儲體的指令數(shù)據(jù),由于Cache塊通常為32字節(jié),而總線接口單元的總線寬度為64位或128位,因此總線接口單元需要4次或2次傳輸將能將完整的Cache塊寫入指令Cache塊緩存器;
3.5是校驗碼生成邏輯,根據(jù)總線接口單元輸出給指令Cache塊緩存器的指令數(shù)據(jù),計算ECC+PARITY校驗碼,校驗碼生成邏輯位于總線接口單元的輸出寄存器和校驗碼緩存器寄存器之間,不需要數(shù)據(jù)通路花額外的時間來計算校驗碼;
3.6是校驗碼緩存器,與3.4指令Cache塊緩存器對應,即指令Cache塊緩存器中的每一條32位指令,對應有8位ECC+PARITY校驗碼;
3.7是校驗碼存儲器RAM,其組織結構與數(shù)據(jù)RAM一致,根據(jù)指令Cach控制器的替換控制信號,指令Cache塊緩存器和校驗碼緩存器的內容同時寫入指令Cache的數(shù)據(jù)RAM和校驗碼RAM中。
為了減小Cache不命中情況下的取指訪問延時,寫指令Cache塊緩存器中的指令可以旁路數(shù)據(jù)RAM,指令Cache控制器根據(jù)命中情況選擇數(shù)據(jù)RAM還是指令Cache塊緩存器旁路的數(shù)據(jù)輸出給指令寄存器。
1.2指令校驗邏輯,根據(jù)從指令Cache存儲體讀出的指令和校驗碼執(zhí)行校驗計算,如果指令Cache存儲體因單粒子事件等原因,導致讀出的指令有1位錯誤,指令校驗邏輯可以自動糾正這位錯誤,如果有2位或2位以上的錯誤,則指令校驗邏輯直接產生校驗錯誤,并作為觸發(fā)Maching Check異常條件之一,產生Maching Check異常,由異常處理程序進行錯誤處理。
1.3是指令單元的指令寄存器,暫存從指令Cache存儲體讀出的指令數(shù)據(jù)。
1.4是指令校驗碼讀出寄存器,與指令寄存器按相同的時序暫存指令Cache存儲體輸出的指令和指令校驗碼,如圖2所示為指令Cache數(shù)據(jù)存儲體的訪問時序;
1.5是指令寄存器,同時也是流水線譯碼級寄存器,暫存從指令Cache讀出的指令,指令寄存器暫存的指令數(shù)一般與指令發(fā)射寬度一致,即對于雙發(fā)射處理器,指令寄存器暫存2條指令。
1.6~1.10是擴展的ECC+Parity校驗碼數(shù)據(jù)通路,其中,
1.6是校驗碼生成邏輯,對于32位指令,校驗碼生成邏輯生成7位ECC校驗碼和1位奇偶校驗碼,共8位校驗碼。
1.7是校驗碼寄存器,暫存將寫入校驗碼存儲體的數(shù)據(jù)。校驗碼寄存器與指令Cache塊緩存器是一一對應的,即Cache塊緩存器的[0:31]位對應校驗碼寄存器的[0:7]位,依次類推。校驗碼寄存器的載入控制信號也與Cache塊緩存器的載入控制信號一一對應。
1.8是檢驗碼存儲體,校驗碼存儲器的邏輯組織結構與數(shù)據(jù)存儲器的邏輯組織結構相同。
1.9是指令校驗碼讀出寄存器,暫存從校驗碼存儲體讀出的校驗碼信息。指令校驗碼讀出寄存器的載入信號與指令寄存器的載入信號一致,故指令校驗碼讀出寄存器中的校驗碼與指令寄存器中的指令存在對應關系。
1.10是指令校驗電路,檢查從指令Cache的數(shù)據(jù)存儲器是否出現(xiàn)了數(shù)據(jù)錯誤。如果有1位錯誤,則糾正該位錯誤,如果有2位或多位錯誤,則產生中斷,由中斷處理程序進行錯誤處理。
本發(fā)明Cache中32位指令的ECC校驗碼按海明碼的編碼規(guī)則進行編碼,在1.10指令校驗電路按下面的規(guī)則進行糾錯和檢錯,如果奇偶校驗位沒有錯誤,且ECC校驗碼也沒有錯誤,則從指令Cache的數(shù)據(jù)存儲器讀出的數(shù)據(jù)沒有錯誤,校驗電路輸出指令,同時輸出的校驗結果驅動為0;如果奇偶校驗位錯誤,但ECC校驗碼無誤,則認為數(shù)據(jù)沒有出現(xiàn)錯誤,校驗電路輸出指令,同時輸出的校驗結果驅動為0;如果奇偶校驗位錯誤,且ECC校驗碼也檢出1位錯誤,則糾正對應的錯誤數(shù)據(jù)位,輸出糾正后的指令,同時輸出的校驗結果驅動為0;如果ECC校驗碼檢出2位或多位錯誤,則輸出NOP指令,同時輸出的校驗結果驅動為1;指令校驗電路輸出的校驗結果反饋給處理器的異常處理邏輯,異常處理邏輯將產生機器檢查異常。指令檢驗碼的生成發(fā)生在寫指令Cache數(shù)據(jù)存儲器的前一級寄存器,指令校驗發(fā)生在讀指令Cache數(shù)據(jù)存儲器的后一級寄存器,檢驗碼的生成和檢查不會對Cache存儲器的訪問延時造成影響。也就是說,指令檢驗碼對流水線取指級不會產生影響。在現(xiàn)在的處理器中,取指級通常是流水線中的關鍵路徑。指令檢驗會影響流水線譯碼級處理的延時路徑,但通過指令預譯碼處理等,可以化解譯碼級處理增加的路徑延時。
在對指令Cache擴展校驗碼進行可靠性設計時,校驗碼的生成和校驗都是在訪問Cache的流水級之外執(zhí)行,因此不會對指令Cache的訪問時序產生負面影響。通常情況下,Cache訪問時序路徑是處理器設計的關鍵時序路徑,因此本發(fā)明實現(xiàn)了在不影響處理器時序特性的情況下,提高了指令Cache的可靠性。
如圖3所示為一種適用于PowerPC處理器的高可靠指令Cache信息流程圖,PowerPC處理器的接口總線是128位,Cache塊大小為32字節(jié),指令單元每個周期從指令Cache取2條指令,AXI總線接口單元從內存讀取128位數(shù)據(jù),并寄存輸出給指令Cache。在寫入256位的指令Cache塊緩存寄存器的同時,128位數(shù)據(jù)以32位為一組,分別產生8位校驗碼,其中校驗碼的最高位是奇偶校驗碼,余下的7位是海明碼編碼的ECC校驗碼。每個Cache塊為32字節(jié),即8條指令,故每個Cache塊對應的校驗碼為64位。從指令Cache讀指令時,每次從指令Cache讀出一個Cache塊的數(shù)據(jù),然后從Cache塊中選擇2條指令輸出,并保存在指令寄存器中。指令寄存器中的指令在進行譯碼前,先執(zhí)行檢錯糾錯計算,如果出現(xiàn)錯誤位多余一位,則產生校驗錯誤,并報告處理器內部的異常處理電路,產生機器檢查異常,有異常處理程序決定刷新指令Cache或停機。
本發(fā)明說明書中未作詳細描述的內容屬本領域技術人員的公知技術。