[PR]当たる!無料占いで仕事鑑定:大人気!無料占い『スピリチュアルの館』

AleGr MEMTEST Readme 勝手に日本語化

このページはAleGr MEMTEST 2.0のReadMeを勝手に日本語化したものです。

私自身よくわかってない部分もかなりありますので、できれば原文をお読みくださるようお願いいたします。

プログラムは作者さんのページでダウンロードすることができます。

こんなページですが、スタイルシートを使っております。

意味のわからない用語は、アスキー デジタル用語辞典e-Wordsなどを使うのがよろしいかと思います。

テンプレページ

LastUpdate 01/27/2004


PC互換機向けメモリーテスト

AleGr MEMTEST


AleGr MEMTESTはIntel386あるいはそれ以降のプロセッサを基礎としたPC互換機の(DRAM)メインメモリをテストするプログラムです。バージョン2.0は現在、Widows上で実行することが可能です。

いくつかの古いメモリテスタープログラムはキャッシュのないプロセッサ向けで、最新のコンピューターに使うときにキャッシュを無効にすることを求められました。このプログラムはメモリキャッシュをもつプロセッサ上で実行するために設計されていて、システムバス、キャッシュ、 Pentium and Pentium Pro (Pentium Ⅱ,Ⅲ,4)プロセッサがどのように動いてるかを考慮しています。このプログラムでテストパターンとアクセス順序はCPUとL2キャッシュ、時としてメモリ間のバースト転送をテストするよう設計されています。なぜなら実際のアプリケーションではそのような転送が通常発生するからです。それはまた、たとえば固定された読み込む-修正する-書き込むといった動作のようないくつかの特別なアクセス周期もテストします。

DOS上では3GB,Windows上では2GBまでテストすることができます。それ以上の場合はすべてのメモリ領域をカバーするためにテスト領域をいくつかわけてテストしてください。

このプログラムは"bare(※ここでは「生」と訳します)"DOS、Windows98/ME/2000/XP上で実行することができます。NT4.0でも動くかもしれませんが、テストしたことはありません。

このプログラムはDOSとWidowsでは動作が異なります。

ライセンス条件

このMEMTESTバージョン2.0プログラムは個人用途では無料です。商業用途ではライセンス購入(※buing=buyingのtypoと解釈)とサポートについての情報を得るためにalegr@earthlink.netまでメールを送ってください。ソースコードを購入することも可能です。

警告:いかなる保証もありません。いくつかの低電力システムで、過剰な電力消費、過電流保護を引き起こし、致命的なダメージを引き起こす可能性があ ります。Windows上で実行している時、かろうじて安定を保っているシステムが多分に起こるデータの損失、OSへのダメージを起こしてクラッシュする ことを引き起こす可能性があります。

生DOS上でのこのプログラムの実行

生DOSとはHIMEM.SYSが存在しているときにすぐスタートする HIMEM.SYSと EMM386.EXE Version 2.0のようなメモリマネージャのない"リアルモード"DOSのことを意味します。

Windows 95で実行:

生のDOSセッションを始めるために、コンピューターを再起動し、"Starting Windows 95..."メッセージが現れたときSHIFT-F5を押します。フロッピーからブートすることも可能です。

Windows 98で実行:

Windows98のDOSセッションを始めるために、BIOSがすべてのドライブを認識したちょうどその後Ctrlを押しっぱなしにするとブートメニューが現れます。Shift+F5を押すとDOSが始まります。フロッピーからブートすることも可能です。

Windows MEで実行:

Windows MEは直接DOSへブートすることができません。起動ディスクを使ってください。その時は/ignorexmm (or /ig)コマンドラインオプションを使う必要があります。

Windows 2000 or XPで実行:

WindowsXPと2000は直接DOSへブートすることができません。起動ディスクを使ってください。起動ディスクはフロッピーをフォーマットするときに作ることができます。その時は/ignorexmm (or /ig)コマンドラインオプションを使う必要があります。

プログラム開始のときのコマンドラインは以下のとおりです。

MEMTEST <メモリサイズ> <テストを開始するアドレス> /プログラム スイッチ

選択可能なメモリサイズテストを開始するアドレスはメガバイトで指定します。指定しなければ、利用できるすべての範囲をテストします。プログラムが実際のメモリサイズを検出するので、実際のメモリ容量より多く指定したときより安全です。

メモリ容量が8MBより少ないとこのプログラムはテストすることができません。

コマンドラインスイッチの詳細は次のとおりです。(アンダーラインをひいてあるものは省略形です)

/row:<size> - DRAM memory array rowのサイズをキロバイトで指定します。入力できる値は4から64まで。(2の累乗だけ)デフォルトでは4から64まですべての可能なrow sizeがテストされます。このオプションはrow sizeを正確に知っている場合のみ指定してください(それはメモリチップ製造メーカーどモデルに左右され、データシートに必ず記載されてるとは限りません) もし正確な値を指定しないと、このプログラムはワード線上の最大限のノイズのためにメモリチップをテストすることはできません。

/delay <time1> <time2> - memory writeとread passの間の遅延を秒数で指定します。time1で指定された遅延は各テストごとに挿入し、デフォルトでは1秒です。time2で指定された遅延は62,63で挿入し、デフォルトでは60秒です。これは適切なDRAM refreshのままテストするために考慮しています。

/speed - プログラムにCPUクロックとL2キャッシュとメインメモリの読み込み/書き込みスピード(write-allocate mode(※CPUのキャッシュ制御機能)での書き込みを含む)を測定させます。

/readtwice - テストデータを2回コンペアさせます。

/writethru - writeback cache policy(※プロセッサのキャッシュ機能らしいです)を無効にします。

/nocache - 完全にキャッシュを無効にします。(推奨しません)

/noprefetch - キャッシュのプリフェッチ(※先読み機能)を行いません。

/nocheck - Pentium(またはそれ以降)システムのマシンチェックを無効にします。バスまたはキャッシュのパリティエラーが発生した時、マシンチェックの中断を誘発します。

/preheat -プログラムは各テストパターンを書き込む前に特別なアクセスシーケンスによってメモリチップを予熱させようとします。しかしこのオプションを使うといくつかのノートでは過電流保護を引き起こすことを覚えておいてください。

/nousblegacy -USBレガシーエミュレーション割り込みを無効にします。物理メモリの極めて最初のところでエラーが出たときこれを有効にしてください。もしこのスイッチが役に立たない場合、1メガバイトからテストを実行してください。例:"MEMTEST 512 1"

/fastdetect - 迅速なメモリサイズ検出アルゴリズムを有効にします。(精度は落ちます)

/ignorexmm - XMM(HIMEM.SYS)が検出されてもプログラムを実行します。WindowsMEの起動ディスクを使うときに必要です。

/nolargepages - 4MB pageをつかいません。標準の4KB pageだけを使います。

/pattern:<pattern1>:<pattern2> -一組の特別な32-bitパターンを定めます。<pattern1>と<pattern2>は16進数で指定します。例えば: /pat:01234567:FEDCBA98(<pattern1>と<pattern2>はお互いに反転したもの)。各値は 64ビットを形成するため二重化され、メモリには後述のデータパターンが書き込まれます。

0123456701234567
FEDCBA98FEDCBA98
0123456701234567
FEDCBA98FEDCBA98

すべての記憶域をテストした後、そのパターンは1bit右にシフトして並び替わります、そしてそのパターンは最初の値に戻るまで繰り返されます。

いったんメムテストが始まると、CPUを32-bitプロテクトモードに切り替えるので、DOSに戻ることは不可能です。テストを終わらせるには、Ctrl+Alt+Delを押すか、リセットボタンを押すか(キーボード上ではなく、ケースにある)でシステムを再起動するか、電源を切るかのいずれかであります。(リセットボタンがないときのみしか推奨しません)

このプログラムがもし実際の容量より少なく認識するなら、おそらくとても不安定な記憶域の部分が検出され、プログラムがこれ以上スキャンするのをやめることを決定したからだと推測されます。

メモリエラーメッセージが画面にすべて埋まると、このプログラムはエラーメッセージの損失を防ぐため画面出力を停止します。出力を再開するにはEnterキーを押してください。

このプログラムが動いている間、テストパスナンバーが表示されます。フルテストは64パスから成り、かかる時間はメモリサイズとCPUに左右されます。 それぞれのテストパスは36秒の遅延が含まれ、64パスのうちの2つのパスは両方とも36分の遅延を含んでいることを覚えておいてください。64パスすべて完全に終えた後、また最初から実行するには、テストを止めるためCtrl+Alt+Delを押してコンピューターを再起動する必要があります。

Windows上でのこのプログラムの実行

この機能はより現実的で全面的なシステムの安定性を提供するために付け加えられました。

Windows上で、このプログラムは複数のスレッドを平行に開始し、おのおのがそれ自身の仮想アドレスの範囲をテストします。ディスクのDMA操作がメモリデータ破壊の原因となるかどうか検査するために、ディスクのリード/ライトテストを実行することもできます。

ディスクI/Oテストを加えた理由

プログラム開始のコマンドラインは以下のとおりです。

MEMTEST <プログラムスイッチ>

コマンドラインスイッチの詳細は次のとおりです。

/time:<time limit> - テスト時間を分で指定します。

/memory:<n> - 試験領域のサイズを4-1024の範囲内でメガバイトで指定します。4つまでの/memoryコマンドラインスイッチが使え、それらおのおのはプログラムが個々のテストスレッドを始めることを引き起こします。/memoryの後ろの/patternオプションはそのスレッドのテストパターンを指定します。最大メモリサイズは約2000MBです。それ以上の容量であれば、複数にわけてテストすることになります。

/file:<directory> <n> -テストファイルの場所を指定し、ファイルサイズをメガバイトで指定します(4-64000の範囲で)。4つまでの/fileコマンドラインスイッチが使え、それらおのおのはプログラムが分割されたテストスレッドを始めることを引き起こします。ディクトリ名にスペースが入っているときは、ダブルクォートで囲んでください。ディレクトリはプログラムが実行する前に作っておいてください。

/maxerrors:<n> -テストを中止するエラー数の限度を指定します。このテストは/timeスイッチで指定した時間まで経過するか、限度のエラー数が発見されるまで実行します。

/readtwice - テストデータを2回比較(※コンペア)させます。

/nocache - 完全にキャッシュを無効にします。(推奨しません)

/preheat - プログラムは各テストパターンを書き込む前に特別なアクセスシーケンスによってメモリチップを予熱させようとします。しかしこのオプションを使うといくつかのノートでは過電流保護を引き起こすことを覚えておいてください。

/logfile:<file name> -テストログをファイルに書き込みます。ファイル名の前に'+'があるとファイルにテストログを追加して書き込みます。このログファイルは常にライトスルー(※書込み命令が実行された時に、キャッシュメモリと主記憶の両方を書き換える)方式でファイルは開かれていて、システムがクラッシュしてもログの損失 を防いでいます。

/pattern:<pattern1>: <pattern2> -一組の特別な32-bitパターンを定めます。<pattern1>と<pattern2>は16進数で指定します、例えば:/pat:01234567:FEDCBA98(<pattern1>と<pattern2>はお互いに反転したもの)。各値は64ビットを形成するため二重化され、メモリには後述のデータパターンが書き込まれます。

0123456701234567
FEDCBA98FEDCBA98
0123456701234567
FEDCBA98FEDCBA98

すべてのテスト領域の書き込み/読み込みの後、このパターンは回転し(右に1bitシフトする)、テストは繰り返される。最初の値にパターンが戻れば終了する。

メモリまたはファイルのテストスレッドそれぞれはそれ自身のテストパターンを持つことができます。例えば:

MEMTEST /mem:64 /pat:01234567:FEDCBA98 /mem:64/pat:80008000:7FFF7FFF
   /file:c:\ 256 /pat:80007FFF:7FFF8000  /file:d:\ 256/pat:0080FF7F:0080FF7F

ファイルテストのため、16ビットごとに反転するパターンを使うのは道理にかなったことです。なぜならIDEデータバスは16ビット幅だからです。 SCSIディスクには例えば8ビットSCSIバスでは8ビットごとに反転するといったように異なったテストパターンがより良いかもしれません。

異なるテストスレッドには異なるテストパターンを使うことを推奨します。

ディスクの過大な負荷を避けるため、一つの物理ドライブごとに一つのファイルを使用してください。もしRAIDディスクアレイで実行すると、コントローラチャンネルごとに一つのスレッドを使用し、ディスクは絶え間ない過大な負荷を受けることになるでしょう。

あまりに多くのテストを行うメモリ容量を指定してないか確認してください。Ctrl+Shift+Escでタスクマネージャーを開き、パフォーマンスタブにてCPUが100%になっているか確かめてください。もしそうでなければ、そのときメモリページングを存在させ(HDDのLEDの点滅も見て確認する)、テスト領域の大きさを減らす必要があります。

このテストはCtrl+Breakあるいは Ctrl+Cを押すと中止できます。しかし即時に停止しないかもしれません。


メモリテストシーケンス

最初のテストは擬似ランダムのデータのread/writeを実行します。そのデータは擬似ランダムのシーケンスジェネレーター(※シーケンスとは法則性をもったデータを連続的に送る動作のことや法則性をもった連続するデータそのもののこと。ジェネレーターとは生成するという意味)によって生成された"すべて1/すべて0"のパターンから成ります。そのテストはアドレスエラーがでるかどうかチェックします。

2番目のテストは1組の32ビットパターンを使います。おのおののパターンは64ビットを形成するため2重化されます。それら64ビットは次々と書き込まれます。

0111111111111111 0111111111111111 01111111111111110 111111111111111
1000000000000000 1000000000000000 10000000000000001 000000000000000
0111111111111111 0111111111111111 01111111111111110 111111111111111
1000000000000000 1000000000000000 10000000000000001 000000000000000

このテストパターンはプログラムのコマンドラインによって指定することができます。デフォルトのパターンは上記のように連続する0/連続する1のペアです。このテストシーケンスは最大限のノイズ状況でシステムバスをチェックすることも念頭においています。

検査される予定であるすべての記憶領域がそのパターンで満たされた後、数字の増加する(※ascendingと解釈)方向(アドレス0から最後のアドレスへ)へ読み込まれ、リファレンスデータとコンペアされます。メモリは読み込まれるととたんに、そのデータは反転されたテストパターンに置き換えられます。完全にメモリが読み込まれ反転されたパターンに置き換えられた後、数字の減少する(※descendingと解釈)方向へ読み込まれ、新しいリファレンスデータとコンペアされます。メモリが読み込まれたとたんに、データは最初の一つが右に周期的にシフト(回転)されるように次のパターンに置き換えられます。

1011111111111111 1011111111111111 1011111111111111 1011111111111111
0100000000000000 0100000000000000 0100000000000000 0100000000000000
1011111111111111 1011111111111111 1011111111111111 1011111111111111
0100000000000000 0100000000000000 0100000000000000 0100000000000000

減少する方向のパスにおいてのパターンの置き換えはキャッシュ無しの64bit変換操作で処理されます。:CMPEXCH8B それはロックされた読み込む-修正する-書き込むといったメモリ周期をテストすることを念頭においています。

そのようなテストはすべてのビットで行われます。(トータルで16)

次のテストは"すべて0/すべて1"パターンを使い、memory array row{※列}一つおきにパターンが反転するようにはたらきます。このテストはダイナミックRAM構造を活用しています。

Dynamic RAM arrayはワードあるいはrow線(row address decoderから進んでくる)とcolumn{※縦}線によって交差されています。column線の一組おのおのはread detector(※検出器)の差動入力につながっています。偶数のRowは偶数のcolumn線につながっていて、奇数のrowは奇数の線につながっています。column線はレギュラーセルに半分の電圧を充電したものであるリファレンスセルにもまたつながっています。例えば、偶数のrowが選ばれたとき、メモリーセルは偶数のcolumn線によみこまれ、リファレンスセルは奇数のcolumn線に読み込まれる。電位差(10ミリボルト)はread detectorsによって検知されロジカルな0または1に変換します。それからリードセルはいっぱいになるまで充電され、rowは解除されます。 その後、すべてのcolumn線は固定の電圧レベルまで放電されます。それは"RAS precharge"と呼ばれています。

column線への想定しうる最大のノイズ状況はすべてのセルが同じ"low"あるいは"high"状態のときに起こり、それは隣り合ったrowに反転したデータを書き込まれたのであろうということを意味します。それを実現するため、テストパターンは4から64KB(テストごとに2倍になる)ごとに反転し、データは32バイトはひとつのrow、32バイトは隣のrowというように組み合わされたrowから読み込まれます。"すべてゼロ"、"すべて1"のパターンもまた、隣り合うcolumn線の想定しうる最大のノイズを誘発することを念頭においています。

スタンドアロンモードで実行しているときに、プログラムはそれ自体をテストをパスした毎に物理メモリの中で移動します。プログラムに占められていた領域もテストするために。

スタンドアロンモードでは、一つおきのパスごとにメモリの書き込み/読み込み間に1秒の猶予を含んでいます。その猶予中はDRAMにアクセスしません。なぜならすべての命令はL1キャッシュからフェッチされているからです。それはメモリリフレッシュがどれくらい確実なのか検査することを許可します。64からの二つのパスは60秒間遅延が増えます。それらの遅延はプログラムの開始の時のコマンドラインによって指定することができます。

ウインドウズ上で実行するとき、このプログラムはパスの後ごとにそのメモリ領域を開放します。それは物理ページの開放を意味します。それは異なったページをテストするときに毎回許可します。

L2キャッシュからプロセッサへの転送をテストするため、テストのいくつかはメモリからL2キャッシュへプリフェッチした状態で実行します。そのようなプリフェッチなしに、データをメモリから直接プロセッサへ送ることも実行します。プロセッサからL2キャッシュへの転送をテストするため、いくつかのテストはテストパターンが書き込まれている間、L2キャッシュへ先読みされたデータを使って実行します。

ファイルテストシーケンス

ファイル転送テストをするため、一時ファイル(TstXX.tmpという名前)が作られます。テストファイルの場所とサイズ(4-640000MBの間で)は/fileオプションで指定されます。このプログラムは同時にread/writeを4ファイルまで実行できます。このファイルはファイルキャッシュが使用できないような状態で開始されます。

このファイルは最初指定されたパターンで書き込まれます。デフォルトの始めのパターンの組は7FFF8000/80007FFFです。その後このファイルは読み込まれ、そのパターンとコンペアされます。データが一致しない場合、エラーメッセージが記録されます。

このパターンはその後、16bitワードおのおのを個別的に周期的にシフト(回転させられる)される。例えば、7FFF8000 は DFFF4000になる。このパターンは書き込まれると同時にベリファイされる。パターンが元の値にもどるまで繰り返される。

更新履歴

2.00 (August 1, 2002). メモリスピードテストでのバグを直しました。ウインドウズ上で動くようにした。512MBのメモリサイズ上限を撤廃しました。

1.04 (August 10, 2000). メモリが960MB以上のマシンにおいて再起動する原因であったテストリロケーションのバグを直しました。/nousblegacy と /fastdetectコマンドラインオプションを追加しました。

1.03 (March 28, 1999). コンパイラをMSVC 5.0にアップグレードして発生した1.02においてのタイマー機能のバグを直しました。/preheatコマンドラインオプションを追加しました。

1.02 (Feb 25, 1999). i386とi486プロセッサの検出を見直しました。インテルP-Ⅱマザーにおいて、テストがコンピューターを再起動させる問題を直しました。P5,P6プロセッサにおいてマシンチェックで中断しないように、/nocheck コマンドラインオプションを追加しました。

1.01 (Jan 22, 1998). 再起動するためのCPUをリセットする方法を変えました。CPUをシャットダウンモードの状態にする代わりに(Pentium Pro+FX440上では動かない)、キーボードコントローラーでリセットすることを使用しました。プロテクトモードに移る前にフロッピードライブのモーター をリセットすることを追加しました。

1.0 (Dec 30, 1997). 初版.



[PR]女性が輝く公文の先生募集中!:全国で教室開設説明会開催