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