基于SoC的實時信號處理系統(tǒng)中存儲系統(tǒng)的容錯設計
在現(xiàn)代信息社會中,嵌入式系統(tǒng)由于其靈活性及方便性得到了越來越廣泛的使用。采用SoC技術可以將整個系統(tǒng)集成到單個芯片之中,其具有體積小、重量輕、功耗小、IP復用等優(yōu)點。SoC技術目前正成為嵌入式實時系統(tǒng)發(fā)展的一個趨勢,得到越來越廣泛的應用。
系統(tǒng)的糾錯和容錯能力具有十分重要的意義。這里的容錯是指當部分存儲器件損壞無法工作時,系統(tǒng)可以有效地利用冗余器件,通過硬件檢測或軟件指令配置,使存儲系統(tǒng)能夠繼續(xù)正常工作。糾錯是指當讀寫數(shù)據中出現(xiàn)一位或多位數(shù)據出錯時,系統(tǒng)自動計算出正確數(shù)據的機制,通常情況下,是通過被動硬件冗余防止故障造成差錯。常用的方法有三模冗余(TMR)、N模冗余、表決技術等。但此類方法所需附加硬件多,花費代價非常昂貴,同時造成功耗、重量及體積增大很多。當系統(tǒng)發(fā)生故障時,通過對整個系統(tǒng)進行替換來保證整個存儲系統(tǒng)的可靠性;另一方面,此類方法由于欠缺靈活性,如果多個冗余部分同一位置上的芯片都發(fā)生故障,則整個系統(tǒng)仍然無法使用,備份效率也不是很高。
本文針對潛入式實時數(shù)字信號處理系統(tǒng)的特點,重新組織DDR存儲顆粒的結構,添加冗余顆粒和相關寄存器,改寫控制IP,設計了一種新的具有容錯糾錯自適應功能的二級冗余存儲體系結構。它僅需增加少量的冗余器件就可以容忍系統(tǒng)中較多數(shù)目的器件故障。在系統(tǒng)沒有故障的情況下,存儲顆??梢圆捎煤C鞔a等EDAC碼進行糾錯;當系統(tǒng)中部分器件出現(xiàn)故障時,系統(tǒng)可以通過軟件配置或硬件自動檢測,自動利用冗余模塊進行容錯;當故障進一步增多時,可以適當降低系統(tǒng)的糾錯能力,若錯誤過多,還可以將原先用于糾錯的顆粒改為用于容錯,使系統(tǒng)能夠繼續(xù)正常地工作。通過數(shù)學模型的量化分析,新的存儲系統(tǒng)容錯方案可以有效地提高存儲系統(tǒng)的可靠性。
存儲系統(tǒng)容錯方案系統(tǒng)結構
容錯存儲系統(tǒng)工作流程
冗余存儲顆粒排放方式采用二級冗余的組織形式,整個存儲系統(tǒng)容錯方案的工作流程如圖1所示。
該容錯方案具有以下幾個特點:
(1)可變的糾錯能力。系統(tǒng)支持海明碼或CRC等EDAC碼,并且當系統(tǒng)出現(xiàn)部分不可逆轉故障時,可以自動降低糾錯能力。比如,原先系統(tǒng)可以支持每16bit糾1bit錯的能力,當存儲顆粒出現(xiàn)部分錯誤時,可以降低為每32bit糾1bit錯。
(2)系統(tǒng)自檢和容錯系統(tǒng)自修復。當系統(tǒng)出現(xiàn)不可逆轉故障時,系統(tǒng)可以通過簡單的軟件命令實現(xiàn)系統(tǒng)錯誤自檢,并自動利用冗余模塊啟動容錯功能,使系統(tǒng)仍然保持正常工作。
(3)糾錯能力與容錯能力之間的轉換。當系統(tǒng)故障的模塊過多,冗余模塊已經不能保證系統(tǒng)的正常工作,則系統(tǒng)可以自動將部分原先用于糾錯的存儲顆粒改為用于容錯功能。這時,系統(tǒng)的糾錯能力會下降或被放棄,但至少能保證系統(tǒng)繼續(xù)基本正常的工作。
(4)采用行列二級冗余形式,首先利用冗余的行冗余進行糾錯,行冗余消耗完畢再利用列冗余進行糾錯。
容錯存儲系統(tǒng)的硬件支持
具有容錯糾錯能力的存儲系統(tǒng)的結構圖如圖2所示。存儲系統(tǒng)的容錯方案和不考慮容錯的存儲系統(tǒng)相比,需要在原有模塊的基礎上進行修改并增加一些設計。主要包含以下幾個方面:
(1)增加存儲顆粒。為了實現(xiàn)存儲系統(tǒng)的容錯和糾錯能力,增加一定數(shù)量的存儲顆粒是必須的。在存儲顆粒陣列中增加冗余的行列按照行列的二級冗余存儲形式組織。為了適應SoC實時信號處理系統(tǒng)的特點,需要對存儲系統(tǒng)顆粒陣列的信號連線進行有針對性的修改,從而使系統(tǒng)能通過軟件配置或硬件自檢來實現(xiàn)糾錯或容錯,并有效地支持包含糾錯容錯轉換的總體方案。
(2)在寄存器堆中為容錯系統(tǒng)分配一定的寄存器地址空間。這些寄存器地址空間由多個部分組成,主要包括系統(tǒng)工作狀態(tài)寄存器,記錄系統(tǒng)各個存儲期間的狀態(tài);系統(tǒng)糾錯方案配置寄存器,配置系統(tǒng)可以采用的糾錯方式和糾錯能力。
(3)增加糾錯碼編碼解碼模塊具有容錯功能的地址生成。糾錯碼可以采用多種方式,如海明碼、CRC碼等。具有容錯功能的地址生成模塊使系統(tǒng)可以根據容錯寄存器的內容,重新生成數(shù)據的寫入地址和讀出地址。
(4)增加自測邏輯生成模塊。當軟件命令配置了寄存器開始進行自檢時,自測邏輯不再處理總線上接收的命令,自動生成測試用代碼和地址進行寫讀檢測,使系統(tǒng)可以根據對存儲顆粒的工作狀態(tài)進行有效的分析,并且當發(fā)現(xiàn)硬件故障時,就修改寄存器空間中的相關寄存器,以便系統(tǒng)自動啟動糾錯和容錯功能。
(5)修改地址變換和數(shù)據重組功能模塊。修改后的數(shù)據重組需要依據寄存器空間中的故障情況對數(shù)據進行重新組織,以便達到容錯和糾錯的功能。
冗余存儲顆粒的組織
為了實現(xiàn)存儲系統(tǒng)的容錯,在存儲顆粒陣列中采用行列二級冗余組織模式。但是根據SoC系統(tǒng)的特點,需要對存儲系統(tǒng)顆粒陣列的信號連線進行有針對性的修改,從而使系統(tǒng)能通過軟件配置或硬件自檢來實現(xiàn)糾錯或容錯,并有效地支持包含糾錯容錯轉換的總體方案。設計具有糾錯容錯功能的存儲系統(tǒng)主要需要考慮以下幾個方面:①系統(tǒng)的糾錯能力。②系統(tǒng)的容錯能力。由于存儲系統(tǒng)受到輻射的影響,可能會發(fā)生不可逆轉的硬件錯誤,這時候可以啟動系統(tǒng)中的冗余模塊來實現(xiàn)容錯功能。容錯系統(tǒng)正常工作的概率是系統(tǒng)容錯能力的衡量標準。③冗余存儲顆粒的數(shù)目。加入冗余顆粒是實現(xiàn)容錯存儲系統(tǒng)的必要條件,但是冗余顆粒的位置、連接方式和控制策略等方面都會影響整體的容錯能力,用盡量少的冗余存儲顆粒實現(xiàn)盡量強的容錯功能是系統(tǒng)的設計目標。④需要增加的管腳數(shù)目。存儲顆粒的數(shù)目以及存儲顆粒的組織方式都會影響實時信號處理系統(tǒng)需要外連的管腳數(shù)目。
在綜合考慮了以上四個方面以后,形成了具有容錯糾錯的存儲系統(tǒng)中顆粒的排放方式。在原系統(tǒng)中,共有16片512Mbit的存儲顆粒,組織方式如圖3所示。
在容錯顆粒組織方式中,冗余存儲模塊的基本排放采用的是行列二級冗余模式。為了適應實時信號處理器的特點,新方案對存儲系統(tǒng)顆粒陣列的信號連線進行了有針對性的修改,從而使系統(tǒng)能通過軟件配置或硬件自檢來實現(xiàn)糾錯或容錯,并有效地支持了包含糾錯容錯轉換的總體方案。設在系統(tǒng)中增加i排j列存儲顆粒,則用Mem(i,j)表示此時的容錯存儲系統(tǒng)。信號線所需要的改動包括如下幾個部分:
(1)每列的顆粒。需要新的8bit數(shù)據線,新的地址線低2bit,每列增加一根DQS信號線。
(2)每排增加的顆粒。數(shù)據和地址與已有的每排顆粒復用,每排增加一根CS片選信號。
(3)除CS之外,所有顆粒共用所有控制信號。存儲系統(tǒng)增加冗余存儲顆粒后,存儲顆粒、信號連線和所占管腳都需要相應地增加。Mem(i,j)存儲系統(tǒng)中關于顆粒需要增加的資源包括:①共需要8i+2j+ij個冗余顆粒。②共需增加i根CS信號,j根DQS信號,2j根低位地址信號,8j根數(shù)據信號。這樣對于實時信號處理器,共需增加管腳數(shù)為i+11j,Mem(i,j)存儲系統(tǒng)所具有的容錯能力以及Mem(i,j)的選擇將在第4節(jié)進行詳細討論。
邏輯設計對容錯的支持
為了實現(xiàn)糾錯容錯方案,必須在邏輯設計上作出相應的改動,主要包括:①為容錯系統(tǒng)分配一定的寄存器地址空間。②增加糾錯碼生成、糾錯碼解碼模塊,具有容錯功能的地址生成。③增加自測邏輯生成模塊。④修改地址變換和數(shù)據重組功能模塊。
容錯系統(tǒng)的相關寄存器
為了實現(xiàn)整個存儲系統(tǒng)的容錯和糾錯,需要在寄存器堆中為容錯系統(tǒng)分配一定的寄存器地址空間。這些寄存器地址空間由多個部分組成,主要包括:系統(tǒng)工作狀態(tài)寄存器,記錄系統(tǒng)各個存儲期間的狀態(tài);系統(tǒng)糾錯方案配置寄存器,配置系統(tǒng)可以采用的糾錯方式和糾錯能力。相關寄存器的功能定義如表1所示(以Mem(i,j)為例)。
數(shù)據重組和地址重新生成
該糾錯容錯邏輯采用了多種方法進行容錯,主要包括采用行冗余模塊實現(xiàn)容錯、降低糾錯能力進行容錯、將用于糾錯的模塊用于容錯等。當自檢模塊發(fā)現(xiàn)存儲顆粒出現(xiàn)故障時,將Mem_state寄存器的相應位置為1。而存儲系統(tǒng)的數(shù)據組合以及地址生成都是與Mem_state寄存器相關的可配置邏輯。
(1)采用行冗余模塊實現(xiàn)容錯。當自測邏輯發(fā)現(xiàn)某個顆粒出現(xiàn)故障時,首先選擇采用行冗余模塊進行容錯的方法。CS片選信號可以看作地址信號的一部分,當寄存器Mem_state中存在一位為1,則出現(xiàn)故障的顆粒所在的存儲顆粒行就會被關閉(拉高CS信號),同時打開冗余行(拉低CS信號),其他信號不變。
(2)將用于糾錯的模塊用于容錯。當自測邏輯發(fā)現(xiàn)某個顆粒出現(xiàn)故障且所有的冗余行都已經啟用,可以適當將糾錯的模塊用于容錯。這時需要在地址方面和數(shù)據重組方面都進行一定的改動,主要包括:①在故障顆粒所在的行內,故障顆粒的地址和數(shù)據都被轉發(fā)到空閑顆粒。②所有的數(shù)據線依然直接與控制器模塊相連,但在模塊內部,數(shù)據重組邏輯自動將冗余顆粒的數(shù)據通路重組到故障顆粒的數(shù)據通路上來。③糾錯碼編解碼邏輯自動調整編解碼方案。根據相關寄存器的值,糾錯碼的編解碼邏輯自動降低糾錯能力,數(shù)據重組邏輯也自動定向糾錯碼的數(shù)據通路。圖4為數(shù)據重組示意圖。
系統(tǒng)糾錯容錯能力分析
假設各個DDR顆粒之間發(fā)生錯誤的概率是互相獨立的,設每個顆粒發(fā)生錯誤的概率恒定為λ,則每個DDR顆粒的可靠性符合泊松分布,其可靠性為Rm=e-λt。在Mem(i,j)系統(tǒng)中,每行的可靠性為
整個系統(tǒng)的可靠性為
重構前后系統(tǒng)可靠性的變化如圖5所示。
由此,可以根據故障概率λ計算出系統(tǒng)的整體可靠性Rsystem,根據系統(tǒng)要求的可靠性可以反向計算出所需要的i,j,從而構建出完整的Mem(i,j)容錯存儲系統(tǒng)。
結論
針對SoC實時數(shù)字信號處理系統(tǒng)的特點,設計了一種新的具有自適應容錯糾錯能力的二級冗余存儲體系結構。詳細論述了系統(tǒng)在存儲顆粒組織排列和信號連接方面對于糾錯容錯能力的支持、系統(tǒng)在邏輯設計上對糾錯容錯能力的支持等。新的存儲系統(tǒng)容錯方案可以有效地提高存儲系統(tǒng)的可靠性,下一步的工作將集中在整個系統(tǒng)的低功耗優(yōu)化方面。
評論