2012年1月5日 星期四

memtest86 4.0a/4.0b(server) 多核心測試軟體(千呼萬喚始出來)

期待已久的多核心測試軟體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版目錄下。
待敘‧‧‧

3 則留言:

  1. 可以請教你Test#1到Test#9每個pattern的功能解說嗎?謝謝

    回覆刪除
  2. 或許未來我會另外新增文章來說明,但若是你很急,建議你自己下載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,因為你說要知道功能解說,我可以說的很簡短,但或許不是你所想要的,若要說的仔細,可能得花我不少時間!

    回覆刪除