胡 蝶,吳俊敏,2
?
一種結(jié)合硬件特征的并行內(nèi)存故障檢測方案
胡 蝶1,吳俊敏1,2
(1. 中國科學(xué)技術(shù)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027;2. 中國科學(xué)技術(shù)大學(xué)蘇州研究院,蘇州 215123)
針對March類內(nèi)存檢測算法越來越復(fù)雜、檢測時(shí)間越來越長,且更適用于對嵌入式內(nèi)存芯片的檢測等問題,提出一種結(jié)合硬件特征的并行內(nèi)存故障檢測方案。該方案包括2種并行檢測方法:(1)根據(jù)DDR2的結(jié)構(gòu)和工作原理設(shè)計(jì)的芯片級(jí)并行,可以并行檢測一個(gè)DDR2內(nèi)部的多個(gè)內(nèi)存芯片。(2)根據(jù)訪存控制器的結(jié)構(gòu)和工作原理設(shè)計(jì)的訪存控制器級(jí)并行,可并行檢測多個(gè)DDR2內(nèi)存條。對于芯片級(jí)并行,訪存帶寬越大,即并行檢測的芯片個(gè)數(shù)越多,并行效果越好,從1個(gè)芯片到并行檢測8個(gè)芯片,內(nèi)存的檢測時(shí)間幾乎是呈線性遞減的。對于訪存控制器級(jí)并行,訪存控制器數(shù)量越多并行效果越好,從1個(gè)LMC到2個(gè)LMC,內(nèi)存的檢測時(shí)間幾乎減少了一倍。實(shí)驗(yàn)結(jié)果表明,2種并行檢測方法不僅能夠成倍加快檢測速度,而且更適用于用戶對內(nèi)存的檢測。
故障模型;March算法;DDR2內(nèi)存條;芯片級(jí)并行;訪存控制器級(jí)并行
內(nèi)存故障可以簡化為以下5種故障模型:固定故障 (Stuck-at Fault, SAF)[1],轉(zhuǎn)換故障(Transition Fault, TF)[2],耦合故障(Coupling Fault, CF)[3],尋址故障(Address Decoder Fault, ADF)[4],數(shù)據(jù)保留故障(Data Retention Fault, DRF)[5]。
根據(jù)故障模型,人們設(shè)計(jì)出了許多March算法,如MATS、March X、March C、March A、March Y等。隨著存儲(chǔ)技術(shù)的不斷發(fā)展,內(nèi)存芯片的密度越來越高,不僅耦合故障的發(fā)生概率越來越大,還出現(xiàn)了更難檢測的動(dòng)態(tài)故障。為了滿足需求,人們又設(shè)計(jì)出了多種更復(fù)雜的March算法,如March SR[6]、March SS[6]、March DSS[7]、March AB[8]、March MSS[9]。這些復(fù)雜的March算法雖然能夠檢測多種故障類型,檢測時(shí)間卻成倍地增長。另外,這些算法都是被設(shè)計(jì)用來檢測一個(gè)內(nèi)存芯片內(nèi)部的單元是否存在故障,并且已存在大部分并行檢測算法[10]是從硬件方面設(shè)計(jì)的,更適用于對嵌入式內(nèi)存芯片的檢測[11],并不適用于用戶。
針對以上問題,本文提出一種結(jié)合硬件特征的并行內(nèi)存故障檢測方案,它能夠有效地解決上述2個(gè)問題:既可以成倍地降低March算法的檢測時(shí)間,又能讓用戶利用March算法在短時(shí)間內(nèi)對內(nèi)存進(jìn)行檢測。該方案包含2種并行內(nèi)存檢測方法:(1)根據(jù)DDR2的結(jié)構(gòu)和工作原理而設(shè)計(jì)的芯片級(jí)并行;(2)根據(jù)訪存控制器的結(jié)構(gòu)和工作原理而設(shè)計(jì)的訪存控制器級(jí)并行。
如圖1所示,內(nèi)存條是由多個(gè)內(nèi)存芯片構(gòu)成的。內(nèi)存芯片是由4個(gè)或8個(gè)邏輯bank(L-bank)組成。圖2是內(nèi)存芯片的結(jié)構(gòu)示意圖。邏輯bank[12](L-bank)是一張以內(nèi)存單元為單位寫入的矩陣,每個(gè)內(nèi)存單元稱之為cell,一個(gè)cell的大小為4/8/16位,即內(nèi)存芯片的位寬。對于每個(gè)L-bank,只要指定一行(Row),再指定一列(Column),就可以定位到某個(gè)cell。在一個(gè)時(shí)鐘周期內(nèi),內(nèi)存芯片只允許對一個(gè)L-bank進(jìn)行操作,而不是對芯片內(nèi)所有L-bank同時(shí)操作。L-bank的地址線是通用的,只要再有一個(gè)L-bank編號(hào)加以區(qū)別就可以了(L-bank 0~L-bank 3)。
圖1 內(nèi)存芯片位寬為8位的DDR2結(jié)構(gòu)
圖2 內(nèi)存顆粒內(nèi)部結(jié)構(gòu)
目前,CPU與內(nèi)存之間(就是CPU到DIMM槽)的接口位寬是64位,即一個(gè)物理bank(P-bank),這64位由多個(gè)內(nèi)存芯片共同組成,例如位寬是8位的內(nèi)存芯片,一個(gè)P-bank由8個(gè)內(nèi)存芯片組成,如圖1所示。每次CPU與內(nèi)存條交換64位的數(shù)據(jù)時(shí),分別從所有的內(nèi)存芯片中存取一個(gè)cell。
本文根據(jù)2個(gè)硬件特征設(shè)計(jì)了2種并行內(nèi)存檢測方法:(1)根據(jù)DDR2的組成結(jié)構(gòu)和工作原理并行檢測內(nèi)存條中的多個(gè)內(nèi)存芯片,這種檢測稱為芯片級(jí)并行;(2)根據(jù)訪存控制器的設(shè)計(jì)和工作原理并行檢測多個(gè)內(nèi)存條,這種檢測稱為訪存控制器級(jí)并行。
雙列直插式存儲(chǔ)模塊(Dual-Inline-Memory-Modules, DIMM),負(fù)責(zé)訪存控制器與內(nèi)存模塊之間的數(shù)據(jù)交換。DIMM提供了64位的數(shù)據(jù)通道,這64位數(shù)據(jù)分別來自同一個(gè)物理bank(P-bank)中的所有內(nèi)存芯片,目前DDR2的P-bank通常由8個(gè)數(shù)據(jù)位寬是8位的內(nèi)存芯片組成,所以每次讀/寫內(nèi)存時(shí),相當(dāng)于從這8個(gè)內(nèi)存芯片中分別讀/寫 1個(gè)字節(jié)的數(shù)據(jù)(即一個(gè)cell)。因此,在檢測內(nèi)存時(shí),以 64位為單位,每次讀/寫8個(gè)字節(jié),并行檢測8個(gè)內(nèi)存芯片,從而成倍地提高內(nèi)存檢測的速度。
訪存操作每次處理的數(shù)據(jù)單元可以是一個(gè)字節(jié),半個(gè)字和一個(gè)字。通常,一個(gè)字節(jié)是8位。對于32位機(jī),一個(gè)字為32位,半字即16位。對于64位機(jī),一個(gè)字為64位,半字即32位。因此,根據(jù)DDR2工作原理,當(dāng)內(nèi)存芯片位寬是8位時(shí),32位機(jī)一次能夠并行讀/寫的內(nèi)存芯片個(gè)數(shù)可以是1個(gè)、2個(gè)和4個(gè);64位機(jī)一次能夠并行讀/寫的內(nèi)存芯片個(gè)數(shù)可以是1個(gè)、2個(gè)、4個(gè)和8個(gè)。把這種一次并行讀/寫個(gè)芯片的檢測方法叫作-chip(s)并行,其中=2。
實(shí)驗(yàn)環(huán)境是64位機(jī),既可以采用32位模式,也可以采用64位模式。因此,可以研究1-chip并行、2-chips并行、4-chips并行和8-chips并行之間的關(guān)系。圖3是芯片級(jí)并行檢測算法流程。
圖3 芯片級(jí)并行檢測算法流程
多核體系結(jié)構(gòu)的計(jì)算機(jī)一般會(huì)有2個(gè)或者2個(gè)以上訪存控制器(Local Memory Controller, LMC)。圖4是LMC的結(jié)構(gòu),LMC之間可以并行操作內(nèi)存,因此,可以利用多個(gè)LMC并行檢測多個(gè)DDR2內(nèi)存條。
圖4 內(nèi)存控制器結(jié)構(gòu)
這里根據(jù)Cavium Networks公司的MIPS多內(nèi)核處理器CN54/5/6/7XX具體描述怎樣并行檢測。CN54/5/6/7XX有 2個(gè)訪存控制器(LMC),每個(gè)LMC支持4個(gè)DIMM,每個(gè)DIMM最大支持2 GB的內(nèi)存條。CN54/5/6/7XX最大支持16 GB的內(nèi)存。有49根地址線,只用最低34根地址線構(gòu)成16 GB的地址空間。16 GB的內(nèi)存安排如下:
DR0: 0x0 0000 0000 0000 to 0x0 0000 0FFF FFFF = low 256 MB
DR1: 0x0 0004 1000 0000 to 0x0 0004 1FFF FFFF = mid 256 MB
DR2: 0x0 0000 2000 0000 to 0x0 0003 FFFF FFFF = upper 15.5 GB
如圖5所示,34位地址的地址映射關(guān)系如下[13]:
第7位:當(dāng)前讀/寫的字節(jié)位于哪一個(gè)訪存控制器。0:訪存控制器0,即LMC0;1:訪存控制器0,即LMC1。
第33位、第32位:當(dāng)前讀/寫的字節(jié)位于哪一個(gè)DIMM。00:DIMM0;01:DIMM1;10:DIMM2;11:DIMM3。
第31位:當(dāng)前讀/寫的字節(jié)位于哪一個(gè)Rank(物理bank)。0:Rank0,即物理bank0;1:Rank1,即物理bank1。
第2位~第0位:當(dāng)前讀/寫的字節(jié)位于哪一個(gè)內(nèi)存芯片上。000:內(nèi)存芯片0;001:內(nèi)存芯片1;010:內(nèi)存芯片2;011:內(nèi)存芯片3;100:內(nèi)存芯片4;101:內(nèi)存芯片5;110:內(nèi)存芯片6;111:內(nèi)存芯片7。
第10位~第8位:當(dāng)前讀/寫的字節(jié)位于內(nèi)存芯片的哪一個(gè)邏輯bank中。000:L-bank0;001:L-bank1;010:L-bank2;011:L-bank3;100:L-bank4;101:L-bank5;110:L-bank6;111:L-bank7。
第30位~第17位:當(dāng)前讀/寫的字節(jié)所在邏輯bank內(nèi)的行地址。
第16位~第11位和第6位~第3位:當(dāng)前/讀寫的字節(jié)所在邏輯bank內(nèi)的列地址。
圖5 34位地址的地址映射
從以上地址映射關(guān)系來看,不可以使用傳統(tǒng)的內(nèi)存檢測方法,即按照地址順序依次檢測內(nèi)存,必須按照地址的映射關(guān)系從新排序內(nèi)存的地址順序來檢測內(nèi)存。從新排序的思想就是:把每一個(gè)對應(yīng)的地址塊按照所在位置左移,然后加起來,就是新的內(nèi)存檢測的地址順序,如第7位是LMC,則把它左移7位。又因?yàn)橐粋€(gè)周期內(nèi)可以讀/寫 64位,即8個(gè)字節(jié),這8個(gè)字節(jié)又分別來自不同的內(nèi)存芯片,所以每次進(jìn)行64位讀/寫,每次對8個(gè)內(nèi)存芯片讀/寫一個(gè)字節(jié),這樣可以結(jié)合芯片級(jí)并行,從而成倍地提高內(nèi)存檢測速度。下列代碼是按照地址映射關(guān)系從新排序的內(nèi)存檢測代碼,檢測流程如圖6所示。
If( coremask == 0) //核0檢測LMC0管理的內(nèi)存
LMC = 0;
Else if( coremask == 1) //LMC1管理的內(nèi)存核1檢測
LMC = 1;
For( DIMM = 0; DIMM <= 3; DIMM++ ) //選擇DIMM
For( Rank = 0; Rank <= 1; Rank++ ) //選擇物理bank
For( Chip = 0; Chip <= 7; Chip++ ) //選擇內(nèi)存芯片
For( Bank = 0; Bank <= 7; Bank++ ) //選擇芯片內(nèi)部的//L-bank
For( Row = 0; Row < 214; Row++ ) //選擇行 //地址
For( Col = 0; Col < 210; Col++ ) //列地址
{
Addr = (LMC<<7) + (DIMM<<32) + (Rank<<31) + Chip+ (Bank<<8) + (Row<<17) + ((Col&0xF)<<3) + ((Col&0x3F0)<< (11-4));
讀/寫64位即8個(gè)字節(jié);
…
}
圖6 按照地址映射關(guān)系排序的并行檢測流程
本文實(shí)驗(yàn)基于Cavium Networks公司的MIPS多內(nèi)核處理器CN54/5/6/7XX。CN54/5/6/7XX配置了12個(gè)64位的CPU,2個(gè)訪存控制器(LMC),每個(gè)LMC支持4個(gè)DIMM,每個(gè)DIMM最大支持2 GB的內(nèi)存條。CN54/5/6/7XX最大支持16 GB的內(nèi)存。內(nèi)存條規(guī)格如表1所示。
表1 內(nèi)存條DDR2規(guī)格
實(shí)驗(yàn)主要面向3個(gè)方向:(1)面向芯片級(jí)并行,實(shí)驗(yàn)分析了1-chip并行、2-chips并行、4-chips并行和8-chips并行之間的關(guān)系;(2)面向訪存控制器級(jí)并行,由于實(shí)驗(yàn)環(huán)境只提供了2個(gè)LMC,因此只比較了1-LMC并行和2-LMC并行;(3)結(jié)合芯片級(jí)并行和訪存控制器級(jí)并行,實(shí)驗(yàn)分析了2種并行檢測方案結(jié)合的效果。
為了使實(shí)驗(yàn)具有全面性,選擇了5種具有代表性的March算法,它們分別是:MATS, March X, March C, March SR和March SS。根據(jù)表2可知,它們的復(fù)雜度依次遞增,故障覆蓋率也隨之遞增[14]。
表2 實(shí)驗(yàn)使用的5種算法
實(shí)驗(yàn)對每一種算法分別采用1-chip、2-chips、4-chips和8-chips檢測200 MB內(nèi)存所用的時(shí)間。其中,這200 MB位于同一個(gè)LMC管理下的同一個(gè)物理bank。在DDR2內(nèi)部,這200 MB分別來自8個(gè)內(nèi)存芯片,每個(gè)芯片25 MB。
圖7是1-chip、2-chips、4-chips和8-chips的檢測時(shí)間比較折線圖。無論是簡單算法還是復(fù)雜算法,從一個(gè)芯片到并行檢測8個(gè)芯片,內(nèi)存的檢測時(shí)間幾乎是成線性遞減的。得出結(jié)論:對于芯片級(jí)并行,訪存帶寬越大并行效果越好。
圖7 芯片檢測時(shí)間比較
可以利用個(gè)訪存控制器同時(shí)并行檢測個(gè)DDR2內(nèi)存條。實(shí)驗(yàn)對各個(gè)算法分別采用1-LMC和2-LMC檢測200 MB內(nèi)存的時(shí)間。其中,對于1-LMC,這200 MB位于同一個(gè)LMC(可以使LMC0或者LMC1)管理下的同一個(gè)物理bank。在DDR2內(nèi)部,這200 MB分別來自8個(gè)內(nèi)存芯片(每個(gè)芯片25 MB);對于2-LMC,這200 MB內(nèi)存位于2個(gè)LMC(即LMC0和LMC1),每個(gè)LMC管理100 MB。
圖8是各算法采用1-LMC和2-LMC的檢測時(shí)間柱狀比較,一次訪存操作的內(nèi)存位數(shù)分別為8位、16位、32位和64位。1-LMC表示200 MB內(nèi)存位于同一個(gè)LMC管理下的同一個(gè)物理bank中的8個(gè)內(nèi)存芯片,2-LMC表示 200 MB內(nèi)存位于2個(gè)LMC,每個(gè)LMC管理100 MB。
圖8 各算法檢測時(shí)間比較
無論是簡單算法還是復(fù)雜算法,從1個(gè)LMC到2個(gè)LMC,內(nèi)存檢測時(shí)間幾乎減少了一倍。得出結(jié)論:對于訪存控制器級(jí)并行,訪存控制器數(shù)量越多并行效果越好。
4.1節(jié)和4.2節(jié)的實(shí)驗(yàn)表明,芯片級(jí)并行和訪存控制器級(jí)并行都可以有效加速內(nèi)存檢測,如果把它們結(jié)合起來會(huì)達(dá)到更好的效果。根據(jù)圖9可知,對于任意算法都是64位的2-LMC檢測時(shí)間最少。2種方法結(jié)合會(huì)更有效地加快內(nèi)存檢測速度。但是,在檢測同樣大小的內(nèi)存時(shí),訪存控制器級(jí)并行必須把內(nèi)存分配到2個(gè)或更多的LMC上。
圖9 芯片級(jí)并行和訪存控制器級(jí)并行的比較
本文提出一種結(jié)合硬件特征的并行內(nèi)存故障檢測方案,該方案是根據(jù)DDR2和訪存控制器的工作原理而設(shè)計(jì)的,從2個(gè)方面加快內(nèi)存檢測速度,一個(gè)是芯片級(jí)并行,另一個(gè)是訪存控制器級(jí)并行。對于芯片級(jí)并行,訪存帶寬越大并行效果越好,從一個(gè)芯片到并行檢測8個(gè)芯片,內(nèi)存的檢測時(shí)間幾乎是呈線性遞減的。對于訪存控制器級(jí)并行,訪存控制器數(shù)量越多并行效果越好,從1個(gè)LMC到 2個(gè)LMC,內(nèi)存的檢測時(shí)間幾乎減少了一倍。若結(jié)合使用2種方法會(huì)得到更好的加速效果,但是,在檢測同樣大小的內(nèi)存時(shí),訪存控制器級(jí)并行必須把內(nèi)存分配到2個(gè)或更多的LMC上。
[1] 任愛玲, 凌 明, 吳光林, 等. 一種用于嵌入式內(nèi)存測試的高效診斷算法[J]. 應(yīng)用科學(xué)學(xué)報(bào), 2005, 23(2): 178-182.
[2] 石 磊, 王小力. 一種基于存儲(chǔ)器故障原語的March測試算法研究[J]. 微電子學(xué), 2009, 39(2): 251-255.
[3] Hamdioui S, Al-Ars Z, Goor A J. Testing Static and Dynamic Faults in Random Access Memories[C]//Proc. of the 20th IEEE VLSI Test Symposium. [S. l.]: IEEE Press, 2002: 395-400.
[4] Irobi S, Al-Ars Z, Hamdioui S. Detecting Memory Faults in the Presence of Bit Line Coupling in SRAM Devices[C]//Proc. of IEEE International Test Conference. Austin, USA: IEEE Press, 2010: 1-10.
[5] Hamdioui S, Al-Ars Z, Goor A J, et al. Linked Faults in Random Access Memories: Concept, Fault Models, Test Algorithms, and Industrial Results[J]. Computer-aided Design of Integrated Circuits and Systems, 2004, 23(5): 737-757.
[6] Hamdioui S, Goor A J, Rogers M. March SS: A Test for All Static Simple RAM Faults[C]//Proc. of IEEE International Workshop on Memory Technology, Design and Testing. [S. l.]: IEEE Press, 2002: 95-100.
[7] Al-Harbi S M, Noor F, Al-Turjman F M. March DSS: A New Diagnostic March Test for All Memory Simple Static Faults[J]. IEEE Trans. on Computer-aided Design of Integrated Circuits and Systems, 2007, 26(9): 1713-1720.
[8] Bosio A, Carlo S D, Natale G D, et al. March AB, A State- of-the-art March Test for Realistic Static Linked Faults and Dynamic Faults in SRAMs[J]. Computers & Digital Techniques, 2007, 1(3): 237-245.
[9] Harutunvan G, Vardanian V A,Zorian Y. Minimal March Tests for Unlinked Static Faults in Random Access Memories[C]// Proc. of the 23rd IEEE VLSI Test Symposium. [S. l.] IEEE Press, 2005: 53-59.
[10] 高 劍. 存儲(chǔ)器并行測試方法[J]. 電子測試, 2009, (2): 47-49.
[11] 吳光林, 胡 晨, 李 銳, 等. 一種并行內(nèi)建自測試嵌入式SRAM方案[J]. 電路與系統(tǒng)學(xué)報(bào), 2003, 10(8): 51-56.
[12] Sharma A. 先進(jìn)半導(dǎo)體存儲(chǔ)器——結(jié)構(gòu), 設(shè)計(jì)與應(yīng)用[M]. 曹 瑩, 孫 磊, 伍 冬, 等, 譯. 北京: 電子工業(yè)出版社, 2005.
[13] Cavium Networks. Cavium Networks OCTEON Plus CN54/ 5/6/7XX Hardware Reference Manual[Z]. 2009.
[14] Benso A, Member S, Bosio A. March Test Generation Revealed[J]. IEEE Trans. on Computers, 2008, 57(12): 1704- 1713.
編輯 顧逸斐
A Parallel Memory Fault Detection Scheme Combined with Hardware Characteristic
HU Die1, WU Jun-min1,2
(1. School of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China; 2. Suzhou Institute for Advanced Study, University of Science and Technology of China, Suzhou 215123, China)
March algorithms are designed very complex, and they are designed to be used to test memory chips, does not apply to the user. In order to solve above problems, this paper presents a parallel memory test method which utilizes the hardware features. It includes two parallel methods: one is chips-level parallel method which is designed according to the working principle of DDR2, and it can detect several memory chips. The other is Local Memory Controller(LMC)-level parallel method which is designed according to the working principle of memory controller, and it can detect several DDR2 memories. For chips-level parallel method, if more chips can be tested, the test time is faster. From testing one chip to eight chips, the test time is almost linearly decreasing. For LMC-level method, if there are more LMCs, the time is faster. From one LMC to two LMCs, the test time is reduced by almost doubled. Experimental results show that this method can greatly reduce the test time of the two algorithms, while still allow users to test memory.
fault model; March algorithm; DDR2 memory bank; chips-level parallel; memory controller level parallel
1000-3428(2014)03-0310-05
A
TP306
國家自然科學(xué)基金資助項(xiàng)目(61272132);中央高?;究蒲袠I(yè)務(wù)費(fèi)專項(xiàng)基金資助項(xiàng)目(WK0110000020);中國科學(xué)院計(jì)算技術(shù)研究所國家重點(diǎn)實(shí)驗(yàn)室開放基金資助項(xiàng)目(CARCH201204)。
胡 蝶(1987-),女,碩士研究生,主研方向:計(jì)算機(jī)內(nèi)存測試技術(shù);吳俊敏,副教授。
2012-12-19
2013-02-27 E-mail:hudie@mail.ustc.edu.cn
10.3969/j.issn.1000-3428.2014.03.066