高可靠系統(tǒng)芯片中Cache的容錯結構及其容錯方法
【技術領域】
[0001]本發(fā)明涉及高可靠系統(tǒng)芯片中Cache的容錯設計,具體為高可靠系統(tǒng)芯片中Cache的容錯結構及其容錯方法。
【背景技術】
[0002]隨著集成電路制造工藝的不斷進步,系統(tǒng)芯片(SoC)變得越來越復雜,其功能也越來越強大。但是在在針對空間電離環(huán)境的應用中,這也導致粒子輻射、噪聲干擾等因素所導致的非物理性瞬態(tài)故障(軟錯誤)日益突出,逐漸成為了空間應用芯片失效的主要原因。在系統(tǒng)芯片中,Cache作為主控處理器訪問指令和數(shù)據的高速緩存,占據了片上大部分的存儲器資源,它在提供高性能的同時,也為整個系統(tǒng)的可靠性帶來了很大隱患。由于Cache對瞬態(tài)故障非常敏感,因此對它進行容錯保護至關重要。
[0003]目前,針對Cache存儲部件的容錯保護普遍采用基于ECC的信息冗余技術,它按照某種校驗算法對原始數(shù)據進行編碼,從而生成額外的輔助信息,并將這些信息也保存起來;當要讀取原始數(shù)據時,通過這些輔助信息來判斷所讀取的數(shù)據是否發(fā)生了錯誤,如果有錯誤還要能夠進行糾正。這種ECC保護技術需要花費很大的硬件資源,例如對于每個32位的數(shù)據,為了實現(xiàn)糾一檢二的容錯能力,按照BCH算法則至少需要7位的輔助信息,當實現(xiàn)糾二檢四的容錯能力時,則需要多達18位的輔助信息,由于輔助信息本身也保存在存儲器中,也會發(fā)生錯誤,因此它占的資源越多,對可靠性的負面影響也就越大。另外,ECC機制需要同時進行檢錯和糾錯處理,控制復雜度相對較高,帶來的延遲和功耗開銷都比較大。
[0004]另一種結構級的容錯技術(參見文獻《面向尚效能容錯Cache設計的精確有效的AVF預測研究》,計算機科學與技術學報,2011,26(3) =504-519)則對傳統(tǒng)的ECC保護技術進行了改進,它基于體系結構脆弱因子(Architectural Vulnerability Factor, AVF)的實時預測,通過與可靠性判斷閾值進行比較,從而動態(tài)選擇是否對Cache進行ECC保護。該技術能夠在滿足可靠性要求的前提下有效降低ECC保護帶來的功耗和性能開銷,但是要實現(xiàn)對AVF的快速、有效的預測,也并不是一件容易的事情。
[0005]還有一種最簡單最保守的方法就是在對可靠性要求比較高時,直接關閉Cache,因此不管Cache存儲器是否發(fā)生錯誤,處理器都不使用它的指令和數(shù)據,而是直接訪問外部存儲器。雖然這種做法可以完全避免因Cache錯誤而導致的芯片失效問題,但是它從根本上否定了 Cache存在的意義,使得處理器的執(zhí)行性能大打折扣,這并不是一種有效的容錯手段,通常都不會采用。
[0006]由此可見,在實現(xiàn)高可靠的系統(tǒng)芯片時,針對Cache的容錯技術要么消耗了太多的硬件資源、要么設計難度太大、或者是嚴重影響了處理器的執(zhí)行性能。如何能簡單有效的進行Cache的容錯,并在可靠性、輔助開銷以及性能上都達到平衡,則成為了系統(tǒng)芯片設計者們所要解決的一個重要問題,經檢索相關文獻和專利,尚未發(fā)現(xiàn)有解決該問題的方法。
【發(fā)明內容】
[0007]針對現(xiàn)有技術中存在的問題,本發(fā)明提供一種可靠性高,功耗低,復雜度低,能確保處理器保持較高性能的高可靠系統(tǒng)芯片中Cache的容錯結構及其容錯方法。
[0008]本發(fā)明是通過以下技術方案來實現(xiàn):
[0009]高可靠系統(tǒng)芯片中Cache的容錯方法,當系統(tǒng)芯片中的主控處理器訪問Cache存儲器,請求所需的指令或數(shù)據時,Cache存儲器中的信息將以交叉分組的形式進行奇偶校驗解碼,實現(xiàn)Cache存儲器的容錯;若發(fā)現(xiàn)校驗錯誤,則直接將本次訪問當作缺失處理,Cache進行更新操作,按照LRU策略向Cache存儲器重新寫入正確數(shù)據,并對寫入數(shù)據進行交叉分組形式的奇偶校驗編碼,實現(xiàn)Cache存儲器的容錯;若未發(fā)現(xiàn)校驗錯誤,認為Cache存儲器中的信息正確,據此進行命中判斷操作。
[0010]優(yōu)選的,Cache存儲器為采用N路組相聯(lián)映射的方式,其中每路Cache存儲器中的TAG存儲器和DATA存儲器都分別對應有自己的校驗編碼存儲陣列PTAG和PDATA ;以交叉分組的形式分別對Cache存儲器中TAG陣列和DATA陣列的奇偶校驗編碼。
[0011]進一步,當系統(tǒng)芯片中在進行Cache存儲器訪問時,分如下兩個步驟來完成Cache的命中判斷,
[0012]步驟一,對讀出的每路Cache存儲器中的TAG存儲器和DATA存儲器內的TAG值和DATA值進行奇偶校驗,當任何一路的TAG值或者DATA值出現(xiàn)校驗錯誤,則表示本次訪問沒有命中,并將所要請求的Cache數(shù)據做缺失處理;當所有路中的TAG值和DATA值都校驗正確時,執(zhí)行步驟二 ;
[0013]步驟二,進行TAG的比較;如果只有一路的TAG產生匹配,則本次訪問屬于正常情況下的Cache命中;如果出現(xiàn)多個TAG匹配或所有TAG都未發(fā)生匹配,則表示本次訪問沒有命中,并將所要請求的Cache數(shù)據做缺失處理。
[0014]高可靠系統(tǒng)芯片中Cache的容錯結構,包括對Cache存儲器中每一路中的TAG值和校驗編碼存儲陣列PTAG進行校驗的TAG校驗邏輯模塊,對DATA值和校驗編碼存儲陣列PDATA進行校驗的DATA校驗邏輯模塊,對TAG校驗邏輯模塊和DATA校驗邏輯模塊的輸出值進行或邏輯處理的一級或門,對所有的一級或門輸出結果進行或邏輯處理的二級或門,對每一路中的TAG值與當前的Cache訪問地址ADDR進行比較的比較邏輯模塊,對所有比較邏輯模塊輸出的比較信號進行確定TAG匹配個數(shù)操作的匹配數(shù)目檢測邏輯模塊,對二級或門輸出結果與匹配數(shù)目檢測邏輯模塊輸出結果進行邏輯與處理的與門;與門輸出Cache訪問命中或缺失信號hit。
[0015]優(yōu)選的,當僅存在一個TAG匹配,則匹配數(shù)目檢測邏輯模塊生成缺失的omatch信號,若存在兩個及兩個以上TAG匹配或不存在TAG匹配,omatch信號無效。
[0016]與現(xiàn)有技術相比,本發(fā)明具有以下有益的技術效果:
[0017]本發(fā)明針對高可靠應用需求的系統(tǒng)芯片,實現(xiàn)了一種簡單有效的Cache容錯結構及其容錯方法,所達到的效果如下:
[0018](1)采用只檢錯不糾錯的容錯策略,極大的降低了系統(tǒng)設計的復雜度及其邏輯延遲,避免已經處于處理器關鍵路徑上的Cache在增加容錯結構后對處理器的主頻造成更大影響。
[0019](2)容錯機制所需的輔助編碼位寬明顯減少,傳統(tǒng)的ECC技術在實現(xiàn)32位數(shù)據的糾一檢二和糾二檢四功能時分別需要7位和18位的編碼,但本發(fā)明采用奇偶校驗檢錯算法則只需4位編碼,這使得片上輔助存儲資源分別減少了 43%和78%,同時,它也在很大程度上降低了系統(tǒng)功耗。
[0020](3)奇偶校驗算法采用交叉分組的組織形式,使得連續(xù)的四位數(shù)據錯誤都能夠被檢測出來,從而大幅度提升了系統(tǒng)的容錯能力。這一點對如今的深亞微米工藝設計尤為重要,因為隨著工藝尺寸的不斷縮小,單個粒子輻射所導致連續(xù)多位數(shù)據出錯的概率隨之增加,采用交叉分組的校驗方式可靠性更高。
[0021](4)系統(tǒng)的整體執(zhí)行性能并沒有多大影響,由于Cache只是在偶發(fā)的校驗錯誤或者出現(xiàn)多個TAG匹配的情況下才不可信,當成缺失來處理,其它絕大部分時間都能正常的高速緩存指令和數(shù)據,因此它不會帶來明顯的性能損失。
[0022](5)針對Cache校驗出錯或者發(fā)生多個TAG匹配的特殊情況,通過統(tǒng)一的Cache行刷新操作就可以消除這些不可信的指令或者數(shù)據所帶來的負面影響,而且刷新操作實施起來也非常方便。
【附圖說明】
[0023]圖1為本發(fā)明實例中所述的系統(tǒng)芯片中Cache的容錯方法的邏輯框圖。
[0024]圖2a為本發(fā)明實例中所述的Cache存儲器的寫入結構示意圖;圖2b為本發(fā)明實例中所述的Cache存儲器的讀出結構示意圖。
[0025]圖3為本發(fā)明實例中所述的交叉分組編碼算法示意圖。
[0026]圖4為本發(fā)明實例中所述的Cache命中判斷邏輯結構示意圖。
【具體實施方式】
[0027]下面結合具體的實施例對本發(fā)明做進一步的詳細說明,所述是對本發(fā)明的解釋而不是限定。
[0028]本發(fā)明通過一種簡單的奇偶交叉編碼校驗算法來減少額外的輔助信息,從而降低硬件資源和功耗開銷;采用對Cache只檢錯不糾錯的容錯策略、并配合交叉分組的編碼思想可以保證整個系統(tǒng)的可靠性,同時也能在很大程度上降低設計的復雜度;由于Cache存儲器仍然能對指令和數(shù)據進行高速緩存,只是在校驗出錯時才按照缺失來處理,因此系統(tǒng)的總體執(zhí)行性能并沒有明顯的損失。在系統(tǒng)芯片設計中,實現(xiàn)了一種高可靠的Cache容錯結構,同時又不引入明顯的硬件資源、功耗開銷、設計復雜度以及處理器的性能損失。
[0029]本發(fā)明采用對Cache只檢錯不糾錯的容錯策略。由于Cache只是作為整個系統(tǒng)芯片中指令和數(shù)據的中間緩存,即使檢測出Cache存儲器發(fā)生錯誤,也無需進行糾正,因為處理器可以向最終的外部存儲器去請求所需的指令或數(shù)據,畢竟外部存儲器才是真正的存儲源頭,它通過檢錯和糾錯機制已經保證了所有存儲內容的正確性。
[0030]同時,以交叉分組的形式分別實現(xiàn)Cache存儲器中TAG陣列和DATA陣列的奇偶校驗編碼。所謂交叉分組,就是將原始的數(shù)據分成若干組,依次從每組中選擇一位來進行編碼,例如,針對32位的數(shù)據D [31:0],如果每八位進行一次奇偶校驗,那么就將數(shù)據分成八組 D [31:28]、D [27:24]、D [23:20]、D [19:16]、D [15:12]D [11:8]、D [7:4]、D [3:0],每組中對應位置的數(shù)據組合在一起進行奇偶校驗,本優(yōu)選實例中以偶校驗來表示,從而得到4位的校驗元P [3:0]分別為,
[0031]P[3] = D[31] ~D[27] ~D[23] ~D[19] ~D[15] ~D[11] ~D[7] ~D[3]
[0032]P[2] = D[30] ~D[26] ~D[22] ~D[18] ~D[14] ~D[10] ~D[6] ~D[2]
[0033]P[l] = D[29] ~D[25] ~D[21] ~D[17] ~D[13] ~D[9] ~D[5] ~D[1]
[0034]P [0] = D [28] 'D [24] 'D [20] ~D [16] ~D [12] 'D [8] 'D [4] 'D [0]
[0035]按照這種編碼規(guī)則,針對TAG陣列和DATA陣列所生成的校驗元編碼信息則分別存儲在一個