RAM和DDR測試方法的原理與測試案例設(shè)計_第1頁
RAM和DDR測試方法的原理與測試案例設(shè)計_第2頁
RAM和DDR測試方法的原理與測試案例設(shè)計_第3頁
RAM和DDR測試方法的原理與測試案例設(shè)計_第4頁
RAM和DDR測試方法的原理與測試案例設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

RAMtestmethod----WarriorZhu目錄RAM模塊根底知識RAM測試的標(biāo)準(zhǔn)Memtest86的思想Memtest86的算法測試工程的描述測試程式的使用及注意點RAM模塊根底知識在正式講RAM的測試方法之前,我們先了解一下RAM模塊的根底知識,它對我們理解后面的測試原理局部非常有幫助。當(dāng)然關(guān)于RAM的知識還有很多,限于篇幅和講課時間,我們只介紹對理解測試原理有用的局部,其余的可以到網(wǎng)上查找學(xué)習(xí)。RAM模塊根底知識在RAM的每一個根本存儲單位都只能存儲0或者1這樣的數(shù)據(jù),而CPU存取數(shù)據(jù)的時候是按照字節(jié)〔也就是8bit〕來存儲的,那么RAM究竟如何滿足CPU的這樣的要求呢?首先為了能存儲1字節(jié)(8bit)的信息,就需要8個1bitRAM根本存儲單元堆疊在一起,這也意味著這8顆芯片被賦予了同樣的地址。下面的示意圖可以幫助你比較形象的了解這一點〔以以下圖所示的圖例中僅僅畫了4個存儲單元,大家當(dāng)成8個來看就可以了〕RAM模塊根底知識通常這8顆1bit芯片是通過地址總線和數(shù)據(jù)總線在PCB〔印刷電路板〕上連接而成的,對于CPU來說它就是一顆8bit的RAM芯片,而不再是獨立的8個1bit芯片。在上圖所示的地址總線位寬是22bit,這樣這個地址總線所能控制的存儲模塊的容量應(yīng)該是222=4194304bit,也就是4MB的容量;數(shù)據(jù)總線的位寬是8bit,就是通過剛剛提到的8個1bit的根本存儲單元的Dout并聯(lián)在一起實現(xiàn)的--這樣也能夠滿足CPU的要求了?!矊τ谶@種存儲顆粒我們稱之為4194304x8模塊或者4Mx8,注意這里的“M〞不是“MByte〞而是“Mbit〞〕。RAM模塊根底知識關(guān)于Bank的問題前面我們講述的都是8bit的內(nèi)存,現(xiàn)在這種東西我們根本上都接觸不到了,更常用的是32bit、64bit或者128bit。由于前面我們已經(jīng)講到了4Mx1bit模塊實現(xiàn)bit輸入輸出的方法,所以我們很容易想到我們把足夠多的芯片放在一個模塊中就可以了。不過在實際應(yīng)用中,僅僅這樣做還是不行的,這里就需要引入bank的概念,bank是由多個模塊組成的。請看右邊的示意圖:RAM模塊根底知識上面的示意圖顯示的是由4組8bit模塊組成的一個bank,如果構(gòu)成模塊的是4194304x1芯片,那么每個模塊的架構(gòu)應(yīng)該是4194304x8(4MB),這樣4個模塊就能組成一個位寬為32bit的bank,容量為16MB。當(dāng)存儲數(shù)據(jù)的時候,第一模塊存儲字節(jié)1,第二個模塊存儲字節(jié)2,第三個模塊存儲字節(jié)3,第四個模塊存儲字節(jié)4,第五個模塊存儲字節(jié)5……如此循環(huán)知道到達(dá)內(nèi)存所能到達(dá)的最高容量到這里,我們應(yīng)該能知道,當(dāng)我們的系統(tǒng)使用這種類型的內(nèi)存時,可以通過兩種方式來增加這種類型內(nèi)存的容量。第一種就是通過增加每一個獨立模塊的容量來增加bank的容量,另外一個方法就是增加bank的數(shù)目。這樣如果讓這種類型的內(nèi)存的容量提升到32MB,可以把每個模塊的容量從4MB提升到8MB或者增加bank的數(shù)目。RAM測試的標(biāo)準(zhǔn)對RAM的測試,業(yè)界有兩大標(biāo)準(zhǔn)。一、RST〔RAMStressTest〕,它由Ultra-X公司開發(fā),主要用于RAM制造廠商測試。二、Memtest86,它是一個開源組織GPL公布的。我們可以去它的網(wǎng)站(:///)了解詳細(xì)信息。其它的RAM測試程式或多或少的都帶有這兩者的印記。RAM測試的標(biāo)準(zhǔn)我們的RAM測試程式也是基于memtest86的標(biāo)準(zhǔn)開發(fā)的,所以下面我們著重介紹memtest86的標(biāo)準(zhǔn)。Memtest86的思想關(guān)于RAM測試的程式有很多,但大局部程式只是向RAM寫入一個pattern再讀出來檢查而已,而沒有考慮RAM的結(jié)構(gòu)以及如何將錯誤偵測出來。這些程式很難發(fā)現(xiàn)RAM的間歇性錯誤〔intermittenterrors〕?;赗AM測試的BIOS功能,如果用來發(fā)現(xiàn)間歇性錯誤也是無效的。Memtest86的思想RAM由大量的排列整齊的memorycell組成,這些根本的cell對應(yīng)著數(shù)據(jù)的bit位。絕大多數(shù)的間歇性錯誤〔intermittentfailures〕都是由memorycell之間的的交互作用〔interaction〕引起的,溫度高的時候尤其明顯。所以,當(dāng)向cell寫入一個值時,鄰近的cell經(jīng)常被寫成相同的值。Memtest86的思想一個有效的RAM測試應(yīng)該試著去測試這個條件。所以一個理想的RAM測試策略應(yīng)該試著去下面的事情。writeacellwithazerowritealloftheadjacentcellswithaone,oneormoretimescheckthatthefirstcellstillhasazeroMemtest86的算法為了到達(dá)上面講的理想的RAM測試策略,Memtest86設(shè)計了兩套算法。MovinginversionsModulo-XMemtest86的算法

--Movinginversions1)Fillmemorywithapattern2)Startingatthelowestaddress 2acheckthatthepatternhasnotchanged 2bwritethepatternscomplement 2cincrementtheaddress repeat2a-2c3)Startingatthehighestaddress 3acheckthatthepatternhasnotchanged 3bwritethepatternscomplement 3cdecrementtheaddress repeat3a-3cMemtest86的算法

--Movinginversions這個算法已經(jīng)很接近理想測試策略了,但它有一些局限性。今天大局部的存儲chip可以存儲4-16bit的數(shù)據(jù),這些chip不能一次只讀或?qū)懸粋€bit的數(shù)據(jù),我們就不能保證所有鄰近cell都測試到了interaction,我們只能設(shè)計特殊的pattern來鄰近的cell。Memtest86的算法

--Movinginversions還有caching,buffering,以及指令的非順序執(zhí)行也會降低Movinginversions算法的有效性。我們可以關(guān)閉cache,但高性能chip的buffer卻沒方法關(guān)閉。于是就有了下面的算法Modulo-X。Memtest86的算法

--Modulo-X1)Forstartingoffsetsof0-20do 1awriteevery20thlocationwithapattern 1bwriteallotherlocationswiththepatternscomplement repeat1boneormoretimes 1ccheckevery20thlocationforthepatternMemtest86的算法

--Modulo-X這個算法和Movinginversions的鄰近測試的水準(zhǔn)很接近,但它不受cache和buffer的影響。1a和1b分開,1c完成時,我們可以確保所有cache和buffer被清空。選擇20作為跳躍的點,是因為它是速度和完整性之間的一個折中點。測試工程的描述1.Addresstest,walkingones2.Movinginversions,ones&zeros3.Addresstest,ownaddress4.Movinginversions,8bitpattern5.Movinginversions,32bitpattern6.Blockmove,64moves7.Modulo20,ones&zeros8.Movinginversions,0&1,uncached測試工程的描述1.Addresstest,walkingones用填“1〞的方式快速測試每一個bank中測試所有地址位,只用于報告錯誤地址。2.Movinginversions,ones&zerosMovinginversions算法的直接展示,分別全部填入“0〞和“1〞測試兩次。這時cache是翻開的,用于快速檢查一些嚴(yán)重的錯誤。測試工程的描述測試工程的描述5.Movinginversions,32bitpattern對Movinginversions算法作了變更,寫入每個連續(xù)的地址位中的pattern都會左移1位,每32位上下位作轉(zhuǎn)換,同時每個循環(huán)pattern自己也在變化,這樣就能很有效的檢查每個cell的錯誤,當(dāng)然這個測試耗的時間也很長。6.Blockmove,64moves有點像RST,先用每8Byte倒置的pattern對RAM作初始化。然后以8MB為單位,將最下面的64bit〔8B〕移到最上面,剩余的8MB-8B數(shù)據(jù)整體向下移動64bit。檢查兩通道的RAM錯誤有奇效。這個工程完成后,RAM的溫度會升得很高。測試工程的描述7.Modulo20,ones&zeros就是用Modulo-X算法來檢查Movinginversions沒方法發(fā)現(xiàn)的錯誤,分別填入“00000000h〞和“FFFFFFFFh〞,檢查兩次。8.Movinginversions,0&1,uncached與第二項測試相同,只是將cache關(guān)了,但可以發(fā)現(xiàn)的錯誤大大增加了。測試程式的使用及注意點DOS環(huán)境下鍵入memtest/?得到幫助信息:

MemTestV2.10(C)2006ArimaComputerCorp,Ltd. Author:WarriorZhu Usage:MEMTEST/I=<item>/L=<loop>/T=<time>/F=<logfile> 1.Addresstest,walkingones 2.Movinginversions,ones&zeros 3.Addresstest,ownaddress 4.Movinginversions,8bitpattern 5.Movinginversions,32bitpattern 6.Blockmove,64moves

7.Modulo20,ones&zeros 8.Movinginversions,0&1,uncached Testthememoryabove1M,theupperboundis4G. Return1ifanyerrorfound. /I=<item>assigntestitem(1,2,3,4,5,6,7,8) /L=<loop>assignloopsbetween1..65535 /T=<time>forceprocesstoexitafter<time>elapsed

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論