期待已久的多核心測試軟體Memtest86 Original版已經出版,而且還分(工作站/伺服機Server版本),可見不久的未來,Memtest86+版也會update到這個多核心的功能。記憶體容量越做越大,測試時間也會相對的增加,軟體工程早已支援多核心架構,但記憶體測試軟體由於演算法及定址等特殊因素,不能與當下多核心執行架構完全相同,雖然RST已經有釋出多核測試版本。但memtest卻遲遲未跟上。這也不能怪它,畢竟是Free版。雖然目前版本還沒有像Memtest86+可以compile後,加上Exe的執行檔頭,製作程DOS Env下的執行檔,但我覺得這應該不是難事,總之先Try看看,到底時間可以省多少,嚴謹度是否有差異,都是須要作比對分析的。
以下就來說明如何製作成DOS環境下的Exe執行檔:
1.首先我們須先download memtest86+ 4.20版的source code。解壓縮之後呢,找到ma86+_loader.asm並存放到我們現在所要作的memtest86 4.0a版目錄下。
待敘‧‧‧
可以請教你Test#1到Test#9每個pattern的功能解說嗎?謝謝
回覆刪除或許未來我會另外新增文章來說明,但若是你很急,建議你自己下載source code,並查閱main.c的這個陣列,由於版本關係,此陣列的內容及元素順序會不太一樣。
回覆刪除const struct tseq tseq[]={
{1,5,4,0,"[Address test, walking ones]"},
{1,6,4,0,"[Address test, own address]"},
{1,0,4,0,"[Moving inversions, ones & zeros]"},
{1,1,2,0,"[Moving inversions, 8 bit pattern]"},
{1,10,50,0,"[Moving inversions, random pattern] "},
{1,7,80,0,"[Block move, 80 moves]"},
{1,2,2,0,"[Moving inversions,32 bit pattern]"},
{1,9,30,0,"[Random number sequence]"},
{1,11,6,0,"[Modulo 20, Random pattern]"},
{1,8,1,0,"[Bit fade test,90 min, 2 patterns]"},
{0,0,0,0,NULL}
};
你會發現共有11個元素,扣除最後一個{0,0,0,0,NULL},那還有10個pattern,但memtest預設狀況只會值行pattern1~9,而pattern0其實也是存在的,只是沒有被選取罷了。
接下來,在main.c中找到:
switch(tseq[v->test].pat) {
/* Now do the testing according to the selected pattern */
case 0: /* Moving inversions, all ones and zeros (test #2) */
p1 = 0;
p2 = ~p1;
movinv1(c_iter,p1,p2);
BAILOUT;
/* Switch patterns */
p2 = p1;
p1 = ~p2;
movinv1(c_iter,p1,p2);
BAILOUT;
break;
.......
.......
這裡只列出pattern0做了什麼事,重點就是那個movinv1以及代入的參數囉;至於movinv1就在test.c,你可能要自己先看一下code,因為你說要知道功能解說,我可以說的很簡短,但或許不是你所想要的,若要說的仔細,可能得花我不少時間!
謝謝你的解答
回覆刪除