/*****************************************************************************
*                                                                            *
*                         CrystalCPUID 4.x.y.z                               *
*                   Copyright (C) 2002-2006 hiyohiyo                         *
*                                                                            *
*                                            mail: hiyohiyo@crystalmark.info *
*                                            web :   http://crystalmark.info *
*****************************************************************************/

------------------------------------------------------------------------------
■ はじめに
------------------------------------------------------------------------------
  CrystalCPUID は CPU の詳細な情報の取得やシステム情報を取得するフリーソフトで
す。新しい CPU を購入したときのチェックや日々のオーバークロック記録等に使って
いただけると幸いです。情報を取得するだけでなく一部の環境ではオーバークロックや
静穏化に役立つ機能も搭載してます。危険を伴う機能もあるのでこのファイルに書かれ
ていることには一通り目を通しておいてください。

------------------------------------------------------------------------------
■ インストール
------------------------------------------------------------------------------
・任意のディレクトリにダウンロードしたファイルを解凍してください。

------------------------------------------------------------------------------
■ アンインストール
------------------------------------------------------------------------------
・インストールしたディレクトリを削除してください。
※レジストリには一切情報を書き込んでおりません。
※設定は CrystalCPUID.ini に保存しています。

------------------------------------------------------------------------------
■ 略語
------------------------------------------------------------------------------
 - QPC = QueryPerformanceCounter
 - MMT = Multimedia Timer
 - WT  = Windows Timer
 - x64 = AMD64 と EM64T(IA-32e) の総称
 - EIST= Enhanced Intel SpeedStep Technology
 - ODCM= On Demand Clock Modulation

------------------------------------------------------------------------------
■ 動作環境
------------------------------------------------------------------------------
対応 OS ：Windows Vista/2003/XP/2000/NT4/Me/98/95
対応機種：PC/AT 互換機 および PC-98 シリーズ
対応 CPU：Intel 386 以降 および x64 対応プロセッサ
フォント：MS UI Gothic (9pt)
          Tahoma (9pt)
          MS Sans Serif (8pt)

※クロック周波数を測定するには RDTSC 命令をサポートしている必要があります。
-> Pentium 以降で搭載されています。

※MS UI Gothic は NT4SP4/98 以降でサポートされています。95 ユーザーは
http://www.microsoft.com/japan/win95/library/default.asp
から「MS UI Gothic パッチ」をダウンロードしてください。

※NT4/98/95 で BIOS 情報を表示するためには
WMI 1.5 (Windows Management Instrumentation) が必要です。
http://www.microsoft.com/downloads/release.asp?ReleaseID=23142

※Windows 95/98/Me でより正確に CPU 使用率を取得したい方は
Windows 95 Kernel Toys Set
http://www.microsoft.com/windows95/downloads/contents/WUToys/W95KernelToy/
をダウンロードし、その中に含まれている WinTop.vxd を CrystalCPUID と
同じフォルダに入れてください。

------------------------------------------------------------------------------
■ コンテンツ 通常版
------------------------------------------------------------------------------
ファイル名            |bit| 説明
----------------------+---+---------------------------------------------------
ReadMeCpuidJ.txt      | - | ReadMe (日本語)
ReadMeCpuid.txt       | - | ReadMe (英語)
CrystalCPUID.txt      | - | CrystalCPUID.exe に関する情報
SysInfo.txt           | - | SysInfo.dll に関する情報
COPYRIGHT-ja.txt      | - | License (日本語)
COPYRIGHT.txt         | - | License (英語)
CrystalCPUID.exe      | 32| 実行ファイル (x86用)
SysInfo.dll           | 32| CPU の情報を提供する DLL ファイル (x86用)
SysInfo.sys           | 32| デバイスドライバ (NT5.x以降用)
SysInfoX64.sys        | 64| デバイスドライバ (NT5.x以降用)
SysInfoNT4.sys        | 32| デバイスドライバ (NT4用)
SysInfo.vxd           | 32| デバイスドライバ (9x用)
                     
------------------------------------------------------------------------------
■ コンテンツ Pure x64 Edition
------------------------------------------------------------------------------
ファイル名            |bit| 説明
----------------------+---+---------------------------------------------------
ReadMeCpuidJ.txt      | - | ReadMe (日本語)
ReadMeCpuid.txt       | - | ReadMe (英語)
CrystalCPUID.txt      | - | CrystalCPUIDx64.exe に関する情報
SysInfo.txt           | - | SysInfoX64.dll に関する情報
COPYRIGHT-ja.txt      | - | License (日本語)
COPYRIGHT.txt         | - | License (英語)
CrystalCPUIDx64.exe   | 64| 実行ファイル (x64用)
SysInfoX64.dll        | 64| CPU の情報を提供する DLL ファイル (x64用)
SysInfoX64.sys        | 64| デバイスドライバ(x64用)

------------------------------------------------------------------------------
■ 使用ライブラリ
------------------------------------------------------------------------------
 Microsoft Foundation Classes C++ library (MFC)
 Copyright (C) 1992-1998 Microsoft Corporation

 PCI Debug Library for Win32
 kashiwano masahiro (http://www.otto.to/~kasiwano/)
 Customized by hiyohiyo

 libpng version 1.2.7
 Copyright (c) 1998-2004 Glenn Randers-Pehrson

 Zlib 1.2.1
 Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler

 Dib Section & libpng wrapper
 Copyright (c) 2000 Chihiro.SAKAMOTO (HyperWorks)

 MatrixStatic
 Copyright (C) 2002 by Nic Wilson  http://www.nicsoft.com.au
 Written by Nic Wilson nicw@bigpond.net.au
 All rights reserved

------------------------------------------------------------------------------
■ 主な機能
------------------------------------------------------------------------------
・クロック周波数の測定
・動作倍率および System Clock の表示
・オーバークロック率の表示 (一部 CPU のみ)
・キャッシュ情報の表示
・サポート拡張機能の表示
・Feature Flags の表示
・CPUID 命令の結果表示
・プロセスルールの表示
・マルチプロセッサ対応
・取得データをテキストで保存/コピー/プレビュー
・実行画面のキャプチャ画像の保存( BMP, PNG )
・Intel EIST/ODCM 対応プロセッサの倍率/電圧変更 ( 自己責任で実行のこと )
・AMD K6/K7/K8 の倍率/電圧変更 ( 自己責任で実行のこと )
・VIA CyrixIII/C3 の倍率変更 ( 自己責任で実行のこと )
・倍率変更用ショートカットの作成
・メインダイアログのフォント変更
・背景変更 ( BMP, JPEG, GIF, PNG )
・リアルタイムクロック表示
・AMD64 対応
・EM64T(IA-32e) 対応
・負荷に応じたクロック変更機能 ( 自己責任で実行のこと )
　等

------------------------------------------------------------------------------
■ タスクトレイアイコン
------------------------------------------------------------------------------
・左クリック = メインダイアログの表示/非表示
・右クリック = ポップアップメニューの通り

------------------------------------------------------------------------------
■ カスタマイズ機能について (ファイル > カスタマイズ)
------------------------------------------------------------------------------
現在サポートしているカスタマイズ機能
・背景画像の変更および背景画像のグレースケール化(ファイル本体は変更されません)
・フォント色の変更
・LCD 色の変更 (ON/OFF/Grid)
・Real Time Clock のクロック測定方法、測定周期、最前面表示
★メインダイアログのフォント変更
 ・ フォント変更後はメインダイアログを再構築します。
 ＋ フォントの種類、サイズを自由に設定できます!!
 − Bold & Italic にも対応していますが、描画が多少乱れることがあります。

------------------------------------------------------------------------------
■ [重要] FSB を変更した場合のクロック周波数の測定について
------------------------------------------------------------------------------
　クロック周波数は基本的に QPC を用いて測定してますが、この機能は FSB を変更し
た場合も変更前の結果を返すという問題があります(Windows の仕様です)。
　FSB を変更した場合は『必ず』MMT を使って測定を行う必要があります。

QPC + MMT (QPC と MMT の両方で測定) では

　Clock (MMT 使用)  * 0.995 < Clock (QPC 使用) < Clock (MMT 使用) * 1.005

の条件を満たすときは QPC を使用して測定した Clock を返し、この条件を満たさない
場合は MMT を使用して測定した Clock を返します。

------------------------------------------------------------------------------
■ クロック周波数の測定について
------------------------------------------------------------------------------
・クロック周波数の測定時間
　F5 QPC + MMT (default)     =  500ms + (500ms※) MMT の場合誤差は ±0.2% 程度
　F6 Windows Timer           = 1000ms + (500ms※) 誤差は非常に大きいです
　F7 Multimedia Timer        = 1000ms + (500ms※) 誤差は ±0.1% 程度
　F8 QueryPerformanceCounter =  100ms + (500ms※) 誤差はほぼ 0 
　F9 QPC (No Load)           =  100ms             クロック可変 CPU 用
　※可変クロック CPU のみ
　QPC を使った場合はほとんど誤差がありません。

------------------------------------------------------------------------------
■ リアルタイムクロック (Real Time Clock) 機能について
------------------------------------------------------------------------------
ファイル > カスタマイズ > Real Time Clock の設定

・No Load ( QPC + MMT ) = 低負荷。QPC と MMT を併用
・No Load ( MMT )       = 低負荷。FSB 変更時はこちらを!!
・No Load ( QPC )       = 低負荷。
・With Load ( QPC )     = 負荷有。(一部のノートパソコン用)

　クロックが正確に測定できない場合はカスタマイズにて With Load (QPC) を選択し
てください。若干負荷は増えますが、クロックが正確に測定できるようになります。
　リアルタイムクロックダイアログのクライアント領域(クロックが表示されている部
分)をクリックするとメインダイアログの表示/非表示を切り替えることが出来ます。

------------------------------------------------------------------------------
■ オリジナルクロックやオーバークロック率に関する制限事項
------------------------------------------------------------------------------
□ 一般的に
・クロック周波数の測定ができない CPU (386/486等) やソフトウェアから倍率を取得
　できない CPU (Pentium等) ではオリジナルクロックやオーバークロック率は表示さ
　れません。
・一部の CPU を除いて倍率を変更した場合には対応していません。基本的に本機能は
　システムクロックの変更にのみ対応しています。

□ Intel 編
・Pentium II の初期バージョンおよびエンジニアリングサンプル等で倍率を変更した
　場合は正確なオーバークロック率を取得することができません。
・Pentium PRO ではシステムクロックが 50/60/66 かを識別できないため
　オリジナルクロックおよびオーバークロック率は表示されません。

□ AMD 編
・Athlon (Thunderbird) などオリジナルシステムクロックが複数存在 (100/133) する
　プロセッサでは正確な情報が得られないことがあります。

□ VIA 編
・VIA CyrixIII/C3 Multiplier で倍率を変更した場合、誤ったオーバークロック率を
　表示することになるので、「オリジナルクロックと倍率を表示しない」オプションを
　有効にしています。表示する必要がある場合は倍率変更後手動で表示してください。

□ まとめ
・不正確な情報が表示される場合もあるかと思いますが、多くの場合は現状では対応で
　きないものがほとんどかと思います。キャプチャ画像を利用する際は、
　「オリジナルクロックと倍率を表示しない」機能を有効にしてください。

------------------------------------------------------------------------------
■ Multiplier Management について for Power Users.
------------------------------------------------------------------------------
　この機能は Intel の EIST/ODCM、AMD の PowerNow!/Cool'n'Quiet および VIA の 
LongHaul を使って、CPU の動作倍率や電圧を CPU 負荷に応じて変更します。メーカー
純正のドライバが利用できない方のために用意しました。
　/HIDE と /CQ オプションを付けてスタートアップに入れておけば、メインダイアログ
を表示することなくタスクトレイに格納された状態で起動するので、常駐させる場合は
このオプションで!!

※必ず各動作倍率/電圧が正常に動作することをあらかじめ確認しておいてください。

------------------------------------------------------------------------------
■ Intel Enhanced SpeedStep Control について for Power Users.
------------------------------------------------------------------------------
 この機能は EIST および ODCM に対応しており、BIOS が倍率変更に対応している必要
があるため必ずしも全ての環境で動作するわけではありません。
　また、この機能は電源オプションの設定や BIOS の設定によっては再起動やフリーズ
する可能性があります。
　全てのアプリケーションを終了し、「自己責任」で実行してください。

動作する可能性がある CPU 一覧
・Intel Core (Yonah)
・Pentium M (Banias/Dothan)
・Pentium 4 6xx (Prescott-2M)
・Xeon (Nocona)

------------------------------------------------------------------------------
■ AMD K6/K7/K8 Multiplier について for Power Users.
------------------------------------------------------------------------------
　この機能は PowerNow! もしくは Cool'n'Quiet に対応しており、BIOS が倍率変更に
対応している必要があるため必ずしも全ての環境で動作するわけではありません。
BIOS のアップデートによって倍率変更に対応できる場合もあるようなので、各自調べ
てみてください。
　また、この機能は電源オプションの設定や BIOS の設定によっては再起動やフリーズ
する可能性があります。
　全てのアプリケーションを終了し、「自己責任」で実行してください。

動作する可能性がある CPU 一覧
K6: K6-2+, K6-III+
K7: Mobile Athlon XP-M, Mobile Athlon 4, Athlon XP (LV), Mobile Duron (Morgan)
K8: Athlon 64 FX, Athlon 64, Mobile(DTR) Athlon 64, (Opteron)

　K6 では 2.0 - 6.0 倍まで選択できますが、K7/K8 と異なり電圧や Startup 時の倍
率を取得することができません。

　K7 では 3.0 - 24.0 倍, K8 では  4.0 - 25.0 倍がリストボックスから選択できま
すが、プロセッサが定義している最大倍率を超えることはできません。また、K7 にお
いては倍率の表示順序がソートされておりませんが、これは FID の並びと合わせてい
るためです。仕様ということでご了承ください。

　K7 では、現在の倍率と最大倍率を改造によって変更することが可能な場合がありま
すが、一般的な CPUID 系ソフトでは現在の倍率しか取得することができません。
CrystalCPUID では最大倍率を取得することができるため、改造の成否を確認すること
ができるかと思います。また、環境(BIOS)に依存するかとは思いますが、
Athlon XP -> Mobile Athlon XP-M ＋ 最大倍率 x24.0 化の改造を施すことで、x3.0
から x24.0 まで自由に変更できるという報告があります。(Thanks HIROSHI 氏)

　K8 では倍率変更後、System Clock が 200MHz に強制変更されることがあります。
これは CrystalCPUID の仕様ではなく、CPU の仕様です。(恐らく BIOS が強制的に
200MHz にしてくれるんだと思います)また、System Clock が 200MHz 以上に設定して
いる状態で、倍率変更を行うとマザーによっては再起動することがあるとの報告もあ
ります。しかし、電源を切るまで変更した倍率は維持されるマザーもあるという報告
もあるので、再度 BIOS から System Clock を変更できる可能性はあります...

　基本的に、動作倍率を初期値以上に設定することはできません。が、
Athlon 64 FX-51 は初期倍率 11.0 に対して最大設定可能倍率が 25.0 となっている
ためオーバークロックが可能です。すばらしい!!

例...
・Athlon 64 3200+ (200x10.0) => 4.0x - 10.0x
・Athlon 64 FX-51 (200x11.0) => 4.0x - 25.0x(!!)
・Mobile Athlon XP-M 1500+ (133x10.0) => 3.0x - 10.0x

------------------------------------------------------------------------------
    | Current FID | Startup FID | Max FID | Currnet VID | Start VID | Max VID 
----+-------------+-------------+---------+-------------+-----------+---------
 K6 |      OK     |      NG     |    OK   |      NG     |     NG    |    NG   
 K7 |      OK     |      OK     |    OK   |      OK     |     OK    |    OK   
 K8 |      OK     |      OK     |    OK   |      OK     |     OK    |    OK   
------------------------------------------------------------------------------

for K8
Core Voltage = Base Voltage (0.800V - 1.550V)
             + RVO1 (0.000V - 0.175V)
             + RVO2 (0.000V - 0.075V)
            => 0.800V - 1.800V

for K8 Low Voltage (*)
 Core Voltage = Base Voltage (0.700V - 1.450V)
              + RVO1 (0.000V - 0.175V)
              + RVO2 (0.000V - 0.075V)
             => 0.700V - 1.800V

 - RVO = Ramp Voltage Offset
 - RVO1/2 remains as it is. (ゲタ部分はいじっていないのでそのままのはず)

  K8 では電圧を変更することが可能ですが、マザーボードによっては電圧ゲタ機能が
有効になっているため 0.000 - 0.250V 程度異なる場合があります。相対的な関係は
維持されていると思うので、各自脳内で電圧を補完してください。

(*) K8 Low Voltage Table を使用するためには、/K8LV オプションをつけるか、
CrystalCPUID.ini で K8LowVoltage=1 としてください。

  Desktop 版マザーに Mobile Athlon XP-M (改造版含む) を搭載する場合は
/K7D オプションを付けるか CrystalCPUID.ini で K7DesktopVoltage=1 としてください。

------------------------------------------------------------------------------
■ VIA CyrixIII/C3 Multiplier について for Power Users.
------------------------------------------------------------------------------
　BIOS セットアップメニューで倍率変更に対応していないマザーボードでも倍率変更
できる可能性があります。
(当方 ASUS CUSL2 [1006A] + Ezra 133x6.5 および Samuel 2 133x5.5 で確認済み)
　指定した倍率と異なる倍率に変更される可能性があります。予期せぬ高倍率になる可
能性があるためご注意ください。あらかじめ FSB66MHz で変更後の倍率を確認しておく
のがよいでしょう。

 - Samuel / Samuel 2 Stepping 0
   3.0x - 8.0x
 - Samuel 2 Stepping 1 or later / Ezra
   3.0x - 12.0x
 - Ezra-T
   3.0x - 16.0x
 - Nehemiah
   4.0x - 16.0x

------------------------------------------------------------------------------
■ コマンドラインオプション
------------------------------------------------------------------------------

□一般
/Q    = 起動時に PNG 形式で画像を保存します。(temp.png)
/S    = 起動時に TEXT 形式で保存します。(temp.txt)
/Pxx  = 情報を取得する CPU を選択します。(xx は CPU 番号 1-32)
/R    = 起動時に Real Time Clock ダイアログも表示します。
/E    = /Q, /S, /F, /V, /P を処理した後そのまま終了します。

/CQ   = Multiplier Management (開発コード:Crystal'n'Quiet) を有効にします。
/HIDE = メインダイアログを表示せずに起動します。
/RESI = (常駐) タスクトレイアイコンからのみ終了できるようになります。

/K7D  = K7 デスクトップ電圧テーブルを利用する(デフォルトはモバイル電圧テーブル)
/K8LV = K8 低電圧テーブルを利用する

/VT310DP = VIA VT-310DP 専用オプションです。
           パイプライン設定を変更し、本来の演算性能を取り戻すことが可能です。

□K7/K8/CyrixIII/C3 専用
/Fxx  = 倍率変更 (xx は FID, 0-15/31)
□K7/K8 専用
/Vxx  = 電圧変更 (xx は VID, 0-15)

 例.
・K7 環境で 11.0x に変更したあと終了
  C:\CrystalMark.exe /F0 /P1 /E

・K8 環境で 5.5x に変更したあと起動
  C:\CrystalMark.exe /F3 /P1

・K7 環境で 10.0x & 1.100V に変更したあと終了
  C:\CrystalCPUID.exe /F14 V23 /P1 /E

・プロセッサ 2 の情報を Text/Image で保存したあと起動
   C:\CrystalCPUID.exe /S /Q /P2

□ ini ファイル(設定ファイル)の選択
 /INI=(FileName)
 例. 
   /INI=hiyohiyo.ini
   /INI=C:\test\hiyohiyo.ini

※デフォルトファイル名は CrystalCPUID.ini です。

------------------------------------------------------------------------------
■ 倍率変更の詳細情報 for K7/K8
------------------------------------------------------------------------------

□K6 の倍率テーブル (K6-2+/III+)
   4.5,  5.0,  4.0,  5.5,  2.0,  3.0,  6.0,  3.5

□K7 の倍率テーブル

  11.0, 11.5, 12.0, 12.5,  5.0,  5.5,  6.0,  6.5,
   7.0,  7.5,  8.0,  8.5,  9.0,  9.5, 10.0, 10.5,
   3.0, 19.0,  4.0, 20.0, 13.0, 13.5, 14.0, 21.0,
  15.0, 22.0, 16.0, 16.5, 17.0, 18.0, 23.0, 24.0,

 例.
 - FID =  0 => 11.0x
 - FID = 23 => 21.0x

□K8 の倍率

 Multiplier = FID / 2.0 + 4.0

 例.
 - FID =  7 =>  7.5x (  7 / 2.0 + 4.0 )
 - FID = 20 => 14.0x ( 20 / 2.0 + 4.0 )

------------------------------------------------------------------------------
■ 電圧変更の詳細情報 for K7/K8
------------------------------------------------------------------------------

□Mobile K7 の電圧テーブル (デフォルト)

  2.000, 1.950, 1.900, 1.850, 1.800, 1.750, 1.700, 1.650,
  1.600, 1.550, 1.500, 1.450, 1.400, 1.350, 1.300,     0,
  1.275, 1.250, 1.225, 1.200, 1.175, 1.150, 1.125, 1.100,
  1.075, 1.050, 1.025, 1.000, 0.975, 0.950, 0.925,     0,

□Desktop K7 の電圧テーブル (/K7D オプションか CrystalCPUID.ini を編集)

  1.850, 1.825, 1.800, 1.775, 1.750, 1.725, 1.700, 1.675,
  1.650, 1.625, 1.600, 1.575, 1.550, 1.525, 1.500, 1.475,
  1.450, 1.425, 1.400, 1.375, 1.350, 1.325, 1.300, 1.275,
  1.250, 1.225, 1.200, 1.175, 1.150, 1.125, 1.100,     0,

□K8 の電圧

  Base Voltage = 1.550 - VID * 0.025

□K8 [LV] の電圧

  Base Voltage = 1.450 - VID * 0.025

------------------------------------------------------------------------------
■ バージョン情報
------------------------------------------------------------------------------
・詳細は CrystalCPUID.txt / SysInfo.txt を参照してください。

  CrystalCPUID のバージョン規約は

    (Major).(Minor).(Revision).(SysInfo のバージョン)

  となっています。

