2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
2279 / 2351 ←次へ | 前へ→

【74】Re:メモリーテスト
←back ↑menu ↑top forward→
 ひよひよ  - 03/3/31(月) 13:23 -

引用なし
パスワード
   これは実に難しい問題です...

ライダーさんが C 言語の心得があるかはわかりませんが、こんな感じのコードになっています。

Memory Read
------------------------------------------------------------
    DWORD *memory = new DWORD[MemSize / 4];
    DWORD LoopLimit = MemSize / 4;
    DWORD count = 0;
    for(;FlagLoop;){
        _asm{
            ALIGN 4
            mov ebx,memory
            mov ecx,LoopLimit
            test ecx,ecx
            jz exit
iter:
            mov eax, DWORD PTR [ebx+ecx*4-4] ;; U-1
            dec ecx ;; V-1
            jnz iter ;; U-2
            add    count,1
        }
    }
    delete [] memory;
--------------------------------------------

大体ですけど。FlagLoop は外部のスレッドが一定時間経過後変更します。

もっと良いコードがあるような気がしないでもないのですが...

あと、Cache 測定は

    _asm cld;
    for(;FlagLoop;){
        _asm{
            ALIGN 8
            add    count,1
            mov    edi,memory    ;測定用配列ポインタ
            mov    ecx,LoopLimit    ;転送回数
            rep    stosd;
        }
    }

って感じです。ASM がわからない方にはなんとことかサッパリかもしれませんが。

結局のところどのようなコードで測定するかが非常に重要になってくるわけです。ただ、AMD の CPU は TwinBank にしても CPU 自体は DDR なので DDR266 とそれだけでマッチするわけで、オンボードビデオとかやらない場合はあんまり効果はないのかも知れません...(当然未確認発言です)

他のベンチも色々試してみて結果を教えていただけると大変参考になります。

86 hits

【73】メモリーテスト ライダー 03/3/28(金) 0:36
【74】Re:メモリーテスト ひよひよ 03/3/31(月) 13:23
【94】Re:メモリーテスト ライダー 03/4/27(日) 1:52
【95】Re:メモリーテスト ひよひよ 03/4/27(日) 23:13
【96】Re:メモリーテスト ライダー 03/4/27(日) 23:36
【97】Re:メモリーテスト ひよひよ 03/4/27(日) 23:59
【98】メモリ2枚仕様の06結果 ライダー 03/4/28(月) 0:45
【99】Re:メモリ2枚仕様の06結果 ひよひよ 03/4/28(月) 11:04

2279 / 2351 ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
ページ:  ┃  記事番号:   
51982
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free