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

【995】CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/5/31(月) 0:26

【1103】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/8/27(金) 7:47
【1104】Re:CrystalCPUID 感想&要望&バグ報告 To 04/8/28(土) 9:51
【1105】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/8/28(土) 11:27
【1106】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 04/8/28(土) 14:23
【1112】Re:CrystalCPUID 感想&要望&バグ報告 To 04/8/29(日) 11:12
【1119】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 04/8/30(月) 2:15
【1121】Re:CrystalCPUID 感想&要望&バグ報告 To 04/8/30(月) 8:47
【1138】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 04/9/6(月) 0:43
【1139】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 04/9/6(月) 1:05
【1140】Re:CrystalCPUID 感想&要望&バグ報告 Kazuma 04/9/8(水) 21:42
【1141】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/9(木) 13:15
【1142】Re:CrystalCPUID 感想&要望&バグ報告 Kazuma 04/9/9(木) 22:38
【1146】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/11(土) 1:46
【1143】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/9(木) 23:10
【1144】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/10(金) 9:33
【1145】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/10(金) 22:39
【1147】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/11(土) 4:53
【1148】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/11(土) 9:02
【1149】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/11(土) 12:06
【1150】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/11(土) 23:22
【1151】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 2:23
【1152】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 10:43
【1153】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 12:47
【1154】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 15:53
【1155】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 16:27
【1156】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 16:58
【1157】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 17:08
【1158】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 21:52
【1163】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/20(月) 0:58
【1582】Re:CrystalCPUID 感想&要望&バグ報告 bit_d 05/4/19(火) 16:57
【1583】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 05/4/21(木) 0:19
【1584】Re:CrystalCPUID 感想&要望&バグ報告 bit_d 05/4/24(日) 1:28
【1589】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 05/4/28(木) 0:58
【1597】Re:CrystalCPUID 感想&要望&バグ報告 bit_d 05/5/1(日) 3:06
【1706】Re:CrystalCPUID 感想&要望&バグ報告 x64 User 05/6/14(火) 5:52
【1707】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 05/6/14(火) 23:45
【1113】Re:CrystalCPUID 感想&要望&バグ報告 To 04/8/29(日) 11:25
【1108】Re:CrystalCPUID 感想&要望&バグ報告 きたむら 04/8/28(土) 14:33
【1109】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/8/28(土) 14:46
【1114】Re:CrystalCPUID 感想&要望&バグ報告 To 04/8/29(日) 13:07
【1115】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/8/29(日) 23:36
【1122】Re:CrystalCPUID 感想&要望&バグ報告 To 04/8/31(火) 9:37
【1123】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/1(水) 1:16
【1124】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/1(水) 2:21
【1125】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/1(水) 7:48
【1126】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/1(水) 8:49
【1127】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/1(水) 8:55
【1131】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/2(木) 8:31
【1132】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/2(木) 9:41
【1133】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/3(金) 0:21
【1134】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/4(土) 15:58
【1135】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/5(日) 13:49

【1103】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/8/27(金) 7:47 -

引用なし
パスワード
   ▼Toさん:
>公開成されている、ソースツリー中の "SysInfo"部分が どうにもうまくコンパイルできないんです。
>元がVC7で作られたようで、自分のVC6環境下だとソースプロジェクトの構成自体が把握できません。(VC7 持って無いんで仕方無いんですけど)
申し訳ない。以前は VC6 のプロジェクトファイルをつけていたのですが、ファイル構成の同期が取れずに放置されていた時期があったのですっぱり削除しています。

実は vcproj は XML 形式のファイルなので中を見れば必要なファイルは確認できるかと思います。../CpuInfo/CpuInfo.cpp など SysInfo 以外のディレクトリのファイルを参照しているのがミソです。

>VC6だと無理なんでしょうか? 
>この部分以外は ”VC6環境”で作られている様に見えますが・・・
コンパイルできます。

古いバージョン 2.x?? のソースには VC6 プロジェクトファイルが入っていたと思うので参考にしてください。今度ソースを更新するときに VC6 のプロジェクトファイルも入れておこうと思います。

【1104】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/8/28(土) 9:51 -

引用なし
パスワード
   >古いバージョン 2.x?? のソースには VC6 プロジェクトファイルが入っていたと思うので参考にしてください。今度ソースを更新するときに VC6 のプロジェクトファイルも入れておこうと思います。

以下、長文にて失礼致します。
----

ご返答ありがとうございます。
試行錯誤のすえ、ようやくVC6環境でコンパイルできました。
"CrystalCPUID"は 簡単なキャス・トエラーが数個程度で問題ないのですが、
"SysInfo", "CpuInfo" は結構難儀しました。

特に、ドライバ:"CpuInfo.sys"ですが、
これは "CpuInfo\sys\"下のソースから作るとうまくいきません。
(実装ファンクションも必要分に足らないし・・・)
ファイル名は違いますが、ソースを見る限りでは"SysInfo\sys"の方がそれらしいので
此方をベースに試行錯誤、
結果ようやくコンパイルでき、それなり動きました。

ドライバ周り、一度整理なされた方が宜しいかと思います。
("extern "C"対:ファイル名:"xxx.c"の関係とか、ソースツリーとか)
ドライバ、".sys"の作成もVC6環境下で出来ます("BUILD.exe"を使わず)ので、
コマンド・ラインから作成するよりも、こちらの方が便利です。
------

で本題ですが、
 倍率を変えても変化しない”QPF値”
に関する問題。

これが何とか成らないか、と思い調べておりました。
長くなりますので、結果だけお知らせします。

この値の元は:”HAL.DLL"が持っている変数です。
で、この値を書き換えると、当然
"KeQueryPerformanceCounter"
が返す値を変更する事が出来ます。
 周波数格納場所: ”Win2k FS:000000A4(QDWORD)”、”WinXP FS:000000A4(DWORD)”

結果、この上位に位置する"QueryPerformanceCounter(Frequency)"もこれに従います。
"HAL.DLL"の中をのぞくと、
 マルチ・プロセッサ用”HAL”: CPUクロック速度と"RDTSC"を返す。
  ユニ・プロセッサ用”HAL”: "3.57xxxxMHz"系の値とタイマー系の値を返す。
の差異があるようです。
こ差異により、マルチ・プロセッサ用”HAL”を使用した場合が、倍率変更の影響を受けるものと思われます。
(3.57xxxxMHz系は、もともと固定値で倍率変更とは関係ありませんし、
 また、マルチ・HALが返す"RDTSC"も倍率変更により誤った値を返しているわけでもありません。
 マルチ・HALが返すもう一つの値
  ”CPU周波数”
 が、ブート時の値固定になっている事が、倍率変更による不整合を起こす要因と思われます。)


私自身、過去ログにあったような ”倍率変更により動作が変になるアプリケーション”
を有している訳ではありませんので、”副作用/効果”の程はわかりませんが、
 "CrystalCPUID"/"WcpuID"
では、変更後の周波数値を示す事は確認できました。

【1105】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/8/28(土) 11:27 -

引用なし
パスワード
   ▼Toさん:
コンパイルお疲れ様でした(^_^;;;

>ご返答ありがとうございます。
>試行錯誤のすえ、ようやくVC6環境でコンパイルできました。
> "CrystalCPUID"は 簡単なキャス・トエラーが数個程度で問題ないのですが、
> "SysInfo", "CpuInfo" は結構難儀しました。
えぇ〜っと。事情は複雑なのですが、
CrystalCPUID 2.x 時代の CpuInfo.sys と今の CpuInfo.sys は別物でして、今の CpuInfo.sys は SysInfo.sys と同じものです。ファイル名とドライバ名(?)のみ違います。これは、現在ドライバのロード部分に問題があり複数のプロセスから同じ名前のドライバをロードできないため、CrystalMark 用の SysInfo.sys と CrystalCPUID 用の CpuInfo.sys に分けているのです。CpuInfo.sys の作り方は SysInfo.sys 用のソース内にあるドライバ名をしているする部分を変更してビルドして、ファイル名を CpuInfo.sys にしているだけです。ふぅ。わかりにくい説明だ...

>ドライバ周り、一度整理なされた方が宜しいかと思います。
>("extern "C"対:ファイル名:"xxx.c"の関係とか、ソースツリーとか)
>ドライバ、".sys"の作成もVC6環境下で出来ます("BUILD.exe"を使わず)ので、
>コマンド・ラインから作成するよりも、こちらの方が便利です。
ドライバは kashiwano masahiro の PCI Debug Library for Win32(http://www.otto.to/~kasiwano/) に MSR 関連の機能を追加しただけのものです(それでもだいぶ苦労しておりますが)。

もし、デバイスドライバの複数プロセスからの利用方法をご存知でしたら、ソース付きで教えてくだされば嬉しいのですが。

>で本題ですが、
> 倍率を変えても変化しない”QPF値”
>に関する問題。
>
>これが何とか成らないか、と思い調べておりました。
>長くなりますので、結果だけお知らせします。
貴重な情報ありがとうございます。
HAL.dll を解析されるとは・・・。

倍率変更後に色々問題が起こる現象は、タイマー関連の使い方に問題があるソフトや互換性の低い(倍率変更を考慮していない)ハードウェアを用いた場合のみ起こるような気がします。SpeedStep や PowerNow! などが普及してきたので、倍率の変更で動作がおかしくなるソフトは今後減っていくと思います。

近いうちに説明足らずなソースをなんとかしときます。

【1106】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら E-MAIL  - 04/8/28(土) 14:23 -

引用なし
パスワード
   >> 倍率を変えても変化しない”QPF値”
>>に関する問題。

私も API を動的に差し替えて QPF の値を変えられないかと細々と試行錯誤していたのですが、カーネル変数を直接書き換えたほうが安全そうですね。すばらしい。

--

>倍率変更後に色々問題が起こる現象は、タイマー関連の使い方に問題があるソフトや互換性の低い(倍率変更を考慮していない)ハードウェアを用いた場合のみ起こるような気がします。SpeedStep や PowerNow! などが普及してきたので、倍率の変更で動作がおかしくなるソフトは今後減っていくと思います。

逆にいろいろなソフトがおかしくなるので最近 (といっても随分前から) の UP HAL では
3.58MHz 系のタイマーを再利用して CPU クロックに依存しないカウンタを提供する方向に
なってきているというのが実情な気がします。(おそらく今後は Dual 以上でもそうなるの
でしょう。)

(でも倍率変更を考慮していないハードウェアで無理やり倍率を変更できるのが魅力なわけで。)

【1108】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら  - 04/8/28(土) 14:33 -

引用なし
パスワード
   ▼ひよひよさん:

> 現在ドライバのロード部分に問題があり複数のプロセスから同じ名前のドライバをロードできないため、CrystalMark 用の SysInfo.sys と CrystalCPUID 用の CpuInfo.sys に分けているのです。CpuInfo.sys の作り方は SysInfo.sys 用のソース内にあるドライバ名をしているする部分を変更してビルドして、ファイル名を CpuInfo.sys にしているだけです。ふぅ。わかりにくい説明だ...

上記は、(実質上) 同じドライバのインスタンスが複数存在していて、お互いに排他せずに動い
ているということなのでしょうか ?

# ドライバのことはよくわからないのですが、必要なときだけオープンするとかできないのでしょうか ?

【1109】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/8/28(土) 14:46 -

引用なし
パスワード
   ▼きたむらさん:
>上記は、(実質上) 同じドライバのインスタンスが複数存在していて、お互いに排他せずに動い
>ているということなのでしょうか ?
SysInfo.sys : CrystalMark 06/08/2004, CrystalDMI
CpuInfo.sys : CrystalCPUID

となっています。CrystalCPUID は Multiplier Mangement の関係上ずっとドライバをロードし続けておく必要がありますが、他は必要に応じて(起動時のみ)ドライバをロードし、不必要になった時点でアンロードしています。

WCPUID や CPU-Z は複数のプロセスを立ち上げられますが、CrystalCPUID が一個しか起動できないのはこのドライバロードに関する制限が大きいのです。

【1112】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/8/29(日) 11:12 -

引用なし
パスワード
   ▼きたむらさん:
>
>私も API を動的に差し替えて QPF の値を変えられないかと細々と試行錯誤していたのですが、カーネル変数を直接書き換えたほうが安全そうですね。すばらしい。
>

はい、"CrystalCPUID"に組み込もうかと、ソースツリーのコンパイルから始めていましたが、
結局、該当する"HAL.DLL"ファイルそのものを変更したほうが楽、且つ汎用性がありそう
なので、こちらの方法で対処する事にしました。

"HAL.DLL"を追ってみると、もともと "3.58系"/"RDTSC系"の両方のコードが実装されているようで、この動作は切り替えは、特定の変数で行っているようです。
結局、該当ファイルの この1Byteのみ(実際は1Bitのみ)の変更ですみました。

この改変ファイルを、"BOOT.INI"内で
 multi(0)disk(0)rdisk(0)partition(7)\WinNT="Windows 2000.." /HAL=xxxx.dll
として、起動エントリを追加 必要に応じて使い分けています。
(今のところ不都合がないので、実際は切り替えてはいませんが・・・)

ただ、私の"Win2000"環境だとブート時に
 NTLDRに "ファイルが壊れています・・・" と改変ファイルを指摘され
蹴られてしまいますので、ここは適当に逃げました。

同様の操作を行っても、何故かWinXP環境では、蹴られません。
こっちの方がチェックが甘いでしょうかね?

----
以上の通り、"QPF”の件は 自分なりに満足の行く結果となりました。

【1113】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/8/29(日) 11:25 -

引用なし
パスワード
   ▼きたむらさん:

という事で、以下結果の報告です。

----------------------------------------------------------------
CrystalCPUID 3.5.17.193 (C) 2002-2004 hiyohiyo
          Crystal Dew World [http://crystalmark.info/]
----------------------------------------------------------------

       OS : Windows 2000 Professional SP4 [ 5.0 Build 2195 ]
      Date : 2004/08/29 11:20:28

    CPU Name : AMD Mobile Athlon XP-M (Barton)
 Vendor String : AuthenticAMD
  Name String : AMD Athlon(tm) Processor
  Architecture : x86
  Process Rule : 0.13 um
    Platform : Socket A
    CPU Type : Original OEM processor [0]
Number(Logical) : 2 <--ここ
     Family : 6
   Generation : 7
     Model : A
    Stepping : 0
    Feature : MMX SSE MMX+ 3DNow! 3DNow!+
PowerManagement : PowerNow!/Cool'n'Quiet

          Current    Original
     Clock : 1991.22 MHz   3200.00 MHz
  System Clock : 132.75 MHz   133.33 MHz
   System Bus : 265.50 MHz   266.67 MHz
   Multiplier :  15.00      24.00
   Data Rate :  DDR
   Over Clock : -37.77 %

   L1 I-Cache :  64 KB
   L1 D-Cache :  64 KB
    L2 Cache : 512 KB [Full:1991.22 MHz]

    CPUID  : EAX   EBX   ECX   EDX
    ----------------------------------------------
    00000000 : 00000001 68747541 444D4163 69746E65
    00000001 : 000006A0 00000000 00000000 0383FBFF
    80000000 : 80000008 68747541 444D4163 69746E65
    80000001 : 000007A0 00000000 00000000 C1CBFBFF
    80000002 : 20444D41 6C687441 74286E6F 5020296D
    80000003 : 65636F72 726F7373 00000000 00000000
    80000004 : 00000000 00000000 00000000 00000000
    80000005 : 0408FF08 FF20FF10 40020140 40020140
    80000006 : 00000000 41004100 02008140 00000000
    80000007 : 00000000 00000000 00000000 00000007
    80000008 : 00002022 00000000 00000000 00000000

    MSR   : EAX1   EDX1   EAX2   EDX2
        : 00011000 00000000 001F0018 00000000
    QPF   : 1.193182 MHz <--ここ

----------------------------------------------------------------
Chipset Information
----------------------------------------------------------------
    Chipset : AMD-760MP
  North Bridge : [1022:700C.11] AMD-762 (IGD4-2P)
  South Bridge : [1022:7410.02] AMD-766 (ViperPlus)
   Video Chip : [1002:4151.00] ATI RADEON 9600

----------------------------------------------------------------
BIOS Information by WMI (Windows Management Interface)
----------------------------------------------------------------
  BIOS Vendor : Phoenix Technologies Ltd.
  BIOS Caption : Default System BIOS
  BIOS Version : Phoenix ServerBIOS 2 Release 6.0  
   BIOS Date : 12/12/2002
SM BIOS Caption : PGNA02-8 
SM BIOS Version : 2.3
 Mother Vendor : Tyan
Mother Product : Guinness
Mother Version : EVT1    
 System Vendor : Tyan
  System Model : Guinness

----------------------------------------------------------------
System Information by DMI (Desktop Management Interface)
----------------------------------------------------------------
SM BIOS Version : 2.3
  BIOS Vendor : Phoenix Technologies Ltd.
  BIOS Version : PGNA02-8 
   BIOS Date : 12/12/2002
 BIOS ROM Size : 256 KB
 Mother Vendor : Tyan
Mother Product : Guinness
Mother Version : EVT1    
   CPU Socket : CPU1
   CPU Vendor : AMD
  CPU Version : AMD Athlon(tm)
 Current Clock : 0 MHz
External Clock : 1 MHz
   Max Clock : 2000 MHz

【1114】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/8/29(日) 13:07 -

引用なし
パスワード
   ▼ひよひよさん:
>貴重な情報ありがとうございます。
>HAL.dll を解析されるとは・・・。
>
デバッガで、追っていくと "KERNEL32" -> "NTDLL" -> "HAL.DLL"
と行くようです。("NTDLL" -> "HAL.DLL"の部分はデバッガでは追えないので、推測ですが・・・)
で を試しに"HAL.DLL"逆汗してみると、意外にもラベル付きで出力。
思いの外 簡単にわかりました。

ネットで見つけた逆汗なので 大した期待はしていなかったのですが
期待以上に出来が良かったようです。

とこんなところです。

----
それと、"RealTimeClock"の表示(計測)ですが、MPの場合
物理的に同一のCPUから"RDTSC"で値を拾わないとおかしくなると思います。
”SetThreadAffinityMask”で値を拾うCPUを固定しないと、
 初の取得はAのCPU、
 後の取得がBのCPU
といった場合や、その逆の場合も考えらます。
たとえABの周波数が全く同一であっても、カウンタの位相まで合っているとは限りません。
結果おかしくなる”ハズ”だと思いますが、どうでしょうか?
(過去ログを見ると、電源関係の問題対応のため倍率変更にタイムラグを設けておられようで、
 これによっても位相ずれは 生じると思います。)

P4;HTの場合は 物理CPUが一個のみのですのでこのような問題ないと思いますが、
物理的なCPUを複数個もつ、本物のMP構成ではこのような配慮も必要ではないでしょうか?

-----
>もし、デバイスドライバの複数プロセスからの利用方法をご存知でしたら、ソース付きで教えてくだされば嬉しいのですが。

状況はなんと無く理解できましたが、具体的にはどういう問題でしょうか?
ソースコードを公開なされておりますので、
 ”このファイルのこの部分、でこのようなエラーになる。”
等と、具体的言ってもらうと、何か判る事があるかも知れません。

---
ex.ご紹介頂いた”ガジマル”さんの成果は、だいぶ前から存じておりまして、
  私もありがたく利用させてもらっています。

【1115】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/8/29(日) 23:36 -

引用なし
パスワード
   ▼Toさん:
>それと、"RealTimeClock"の表示(計測)ですが、MPの場合
>物理的に同一のCPUから"RDTSC"で値を拾わないとおかしくなると思います。
>”SetThreadAffinityMask”で値を拾うCPUを固定しないと、
> 初の取得はAのCPU、
> 後の取得がBのCPU
>といった場合や、その逆の場合も考えらます。
>たとえABの周波数が全く同一であっても、カウンタの位相まで合っているとは限りません。
確かに。本日選択した CPU で RDTSC を常に実行するように変更しておきました。

>>もし、デバイスドライバの複数プロセスからの利用方法をご存知でしたら、ソース付きで教えてくだされば嬉しいのですが。
>
>状況はなんと無く理解できましたが、具体的にはどういう問題でしょうか?
>ソースコードを公開なされておりますので、
> ”このファイルのこの部分、でこのようなエラーになる。”
>等と、具体的言ってもらうと、何か判る事があるかも知れません。
CrystalCPUID を二個起動しようとすると(今は Mutex で制限しているので二個は起動できませんが)、二個目はドライバのロードに失敗してしまうのです。昔かなりの時間をかけて調査したのですが、DDK に入っているサンプルドライバも複数起動した際、一個しかドライバはロードできなかったので、困っているのです。

ガジマルさんにも問い合わせたのですが、バグなのだが、本業が忙しくて修正できないといった感じだったので、自分でなんとかしたいとは思っていたのですが・・・。未だに改善できず。WCPUID や CPU-Z は複数起動できるので羨ましいなと。

多分些細なことだとは思うのですがねぇ。

【1119】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら  - 04/8/30(月) 2:15 -

引用なし
パスワード
   ▼Toさん:
>"HAL.DLL"を追ってみると、もともと "3.58系"/"RDTSC系"の両方のコードが実装されているようで、この動作は切り替えは、特定の変数で行っているようです。
>結局、該当ファイルの この1Byteのみ(実際は1Bitのみ)の変更ですみました。

なるほど。なぜそんなコードが未だに残っているのか google してみると /USE8254 という
オプションがありましたね。(ほんとは google するまでもなく明らかなんですが ...)

そういえば昔そんなオプションがあるんだなぁと思いましたが、まさかこんな時に使うもの
だったとは ...

ただし CrystalCPUID3.5.18.194 では /USE8254 しても Real Time Clock がうまく動かないようです。

# いま Win2k 環境がない (NT4 使ってます) ので Sandra がどうなるかは不明ですが ...

--
----------------------------------------------------------------
CrystalCPUID 3.5.18.194 (C) 2002-2004 hiyohiyo
          Crystal Dew World [http://crystalmark.info/]
----------------------------------------------------------------
       OS : Windows NT4 Workstation SP6 [ 4.0 Build 1381 ]
      Date : 2004/08/30 2:07:17
    CPU Name : AMD Mobile Athlon XP-M (Barton)
Number(Logical) : 2
    QPF   : 1.193182 MHz

【1121】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/8/30(月) 8:47 -

引用なし
パスワード
   ▼きたむらさん:
>▼Toさん:
>>"HAL.DLL"を追ってみると、もともと "3.58系"/"RDTSC系"の両方のコードが実装されているようで、この動作は切り替えは、特定の変数で行っているようです。
>>結局、該当ファイルの この1Byteのみ(実際は1Bitのみ)の変更ですみました。
>
>なるほど。なぜそんなコードが未だに残っているのか google してみると /USE8254 という
>オプションがありましたね。(ほんとは google するまでもなく明らかなんですが ...)
>
コードが残っているので、どっかにオプションが有るんだろうと思うっていましたが、
それでしたか。(やっぱり、有ったんだ。)

で、こちらでも
 Win2K/WinXP
の量環境で試してみましたが利きません。NT4だけに限定した話ですかね?
という事で、私の環境では 上オプション "/USE8254"は、効果ありませんでした。

----
>Real Time Clock がうまく動かないようです。
これ、別スレで作者の方に報告しておきましたが、そのせいではないかと思います。

ただ、NT4環境は持っていないので 実際の所は判りません。

【1122】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/8/31(火) 9:37 -

引用なし
パスワード
   >ガジマルさんにも問い合わせたのですが、バグなのだが、本業が忙しくて修正できないといった感じだったので、自分でなんとかしたいとは思っていたのですが・・・。未だに改善できず。WCPUID や CPU-Z は複数起動できるので羨ましいなと。
>
>多分些細なことだとは思うのですがねぇ。
-----

>”ドライバのロードに失敗”
という抽象的な表現のため、問題を性格に把握できていないかもしれませんが、
以下の内容を確認いたしました。

[内容]
ドライバー(SysInfo.sys?)が、排他の設定でコーディングのされているため、
サービスの共有ができません。
(ガジマルさん現状公開の物はこうは なっていませんよね?)

該当部分を修正すると、"WCPUID"程度のレベルにはなります。

--Ex.--
"WCPUID"でも次のような場合ロードに失敗しますので、
それほで厳密に実装しているようでもないようです。
 一個目を立ち上げる (”A”)
 2個目を立ち上げる (”B”)
 ”A”をクローズする。
 これ以降は、”B”をクローズしない限り、全ての立ち上げが失敗します。

もしかして問題は、こちらのほうですか?

----
ガジマルの物をベースになされているようですが、
現状公開なされている物に対して、割り込み部分を相当追加なされているようです。
これって何を目的にした追加ですかね?
CrystalCPUIDで使っているようには見えませんが・・・・

【1123】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/1(水) 1:16 -

引用なし
パスワード
   ▼Toさん:
>>”ドライバのロードに失敗”
>という抽象的な表現のため、問題を性格に把握できていないかもしれませんが、
>以下の内容を確認いたしました。
>
>[内容]
>ドライバー(SysInfo.sys?)が、排他の設定でコーディングのされているため、
>サービスの共有ができません。
>(ガジマルさん現状公開の物はこうは なっていませんよね?)
なんだか色々参考にしているうちにごっちゃになっているんですよね。
で、排他設定ってどこのことを言っているのでしょうか?

>該当部分を修正すると、"WCPUID"程度のレベルにはなります。

>--Ex.--
>"WCPUID"でも次のような場合ロードに失敗しますので、
>それほで厳密に実装しているようでもないようです。
> 一個目を立ち上げる (”A”)
> 2個目を立ち上げる (”B”)
> ”A”をクローズする。
> これ以降は、”B”をクローズしない限り、全ての立ち上げが失敗します。
>
>もしかして問題は、こちらのほうですか?
そうです。B をクローズしない限り全ての立ち上げに失敗するという問題が以前からありました。いつの間にやらさらに悪化して複数プロセスから全く利用できなくなったのですが、オリジナルの PCI Debug Library for Win32 はまさに上記のパターンでした。この件についてメールしたのですが、前回書いたように本業が忙しくて修正できずとのことでした。
私はデバイスドライバに精通しているわけではないので、正直何をどうすれば CPU-Z のように複数プロセスから利用できるようになるのかわからないのです。というわけで、できる人が掲示板に現れるたびにヘルプ信号を発信してるのです。いつか、ソースを改造して「これでいいんじゃないの?」って感じで提案してくれる神が降臨すると良いのですが。

ちなみに、今確認したところ WCPUID は”B”をクローズしたあとも普通に動作するようですよ。あぁ〜うらやましい。

>現状公開なされている物に対して、割り込み部分を相当追加なされているようです。
>これって何を目的にした追加ですかね?
>CrystalCPUIDで使っているようには見えませんが・・・・
私は TECHI PCIデバイス設計入門 CQ出版 に付属していたバージョンをベースにしています。割り込みに関しては自分で追加なんてできないので、Web で入手できるバージョンと書籍についていたバージョンでは違うのかも知れませんね。(未確認)

どうぞよろしく♪

【1124】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/1(水) 2:21 -

引用なし
パスワード
   >で、排他設定ってどこのことを言っているのでしょうか?
>
該当部分です。

  Status = IoCreateDevice(               // Create it.
          DriverObject,
          sizeof(LOCAL_DEVICE_INFO),
          &NtDeviceName,
          DeviceType,
          0,
          TRUE,           // Not Exclusive
          ppDevObj
          );

ちなみに、上のはコメントも逆のようですが…、
ヘルプを見ても、サンプルを見ても下が正解と思います。
          TRUE,           // This is  an exclusive device
          FALSE,           // This isn't an exclusive device

----

>ちなみに、今確認したところ WCPUID は”B”をクローズしたあとも普通に動作するようですよ。あぁ〜うらやましい。

直したのかな? 先の現象を確認した物は "Ver3.3" となっています。
”B”クローズした後も”A”が問題なく動き続けるのは当然ですが、
”A”をクローズ後”B”を開いたままで、新しいものが立ち上がるようでしたら
きっと、それなりの対応なされたのでしょう? どのバージョンでしょうか?

>CPU-Z…
使った事が無いのでよくわかりませんが、早速ご紹介頂いた物を見てみました。
こちらは丁寧に実装なされている様で、上のようなクローズにまつわる不都合点は
見当たりません。

暇をみて調べてみます。

【1125】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/1(水) 7:48 -

引用なし
パスワード
   ▼Toさん:
>>で、排他設定ってどこのことを言っているのでしょうか?
>>
>該当部分です。
>
>  Status = IoCreateDevice(               // Create it.
>          DriverObject,
>          sizeof(LOCAL_DEVICE_INFO),
>          &NtDeviceName,
>          DeviceType,
>          0,
>          TRUE,           // Not Exclusive
>          ppDevObj
>          );
>
>ちなみに、上のはコメントも逆のようですが…、
>ヘルプを見ても、サンプルを見ても下が正解と思います。
>          TRUE,           // This is  an exclusive device
>          FALSE,           // This isn't an exclusive device
>
>----
ありがとうございます。早速調査してみます。

>>ちなみに、今確認したところ WCPUID は”B”をクローズしたあとも普通に動作するようですよ。あぁ〜うらやましい。


>直したのかな? 先の現象を確認した物は "Ver3.3" となっています。
>”B”クローズした後も”A”が問題なく動き続けるのは当然ですが、
>”A”をクローズ後”B”を開いたままで、新しいものが立ち上がるようでしたら
>きっと、それなりの対応なされたのでしょう? どのバージョンでしょうか?
3.1a です(古… 3.3 で確認したところ確かにこの現象を確認できました。何か改悪されたのでしょうかね。

>暇をみて調べてみます。
ホント暇なときでいいんでぜひ!!
私も再調査してみます。

【1126】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/1(水) 8:49 -

引用なし
パスワード
   >3.1a です(古… 3.3 で確認したところ確かにこの現象を確認できました。何か改悪されたのでしょうかね。
>
改めにて、3.1a調べてみました。
3.3と同一の症状です。環境依存でしょうかね?。(環境はWin2k:SP4です。)

【1127】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/1(水) 8:55 -

引用なし
パスワード
   ▼Toさん:
>>3.1a です(古… 3.3 で確認したところ確かにこの現象を確認できました。何か改悪されたのでしょうかね。
>>
>改めにて、3.1a調べてみました。
>3.3と同一の症状です。環境依存でしょうかね?。(環境はWin2k:SP4です。)
かもしれませんね。うちは XPSP1 です。

【1131】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/2(木) 8:31 -

引用なし
パスワード
   ▼Toさん:
>>で、排他設定ってどこのことを言っているのでしょうか?
>>
>該当部分です。
>
>  Status = IoCreateDevice(               // Create it.
>          DriverObject,
>          sizeof(LOCAL_DEVICE_INFO),
>          &NtDeviceName,
>          DeviceType,
>          0,
>          TRUE,           // Not Exclusive
>          ppDevObj
>          );
>
>ちなみに、上のはコメントも逆のようですが…、
>ヘルプを見ても、サンプルを見ても下が正解と思います。
>          TRUE,           // This is  an exclusive device
>          FALSE,           // This isn't an exclusive device
今朝確認したところ確かに同時にドライバにアクセスできるようになりました。あとは、ドライバロードの部分を修正すればちゃんと動くようになるはず...がんばるか。

【1132】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/2(木) 9:41 -

引用なし
パスワード
   >今朝確認したところ確かに同時にドライバにアクセスできるようになりました。あとは、ドライバロードの部分を修正すればちゃんと動くようになるはず...がんばるか。

実装方法の内容/品質は別として、
 ”B”クローズした後も”A”
 ”A”をクローズ後”B” ・・・・・
の問題に関しては、解決しております。
もし情報が必要であれば、声でもかけてみて下さい。

---
追:WCPUID:3.1aは、こちらXPSP1環境でもだめでした。(まあ、どうでもよい事ですが。)

【1133】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/3(金) 0:21 -

引用なし
パスワード
   ▼Toさん:
>>今朝確認したところ確かに同時にドライバにアクセスできるようになりました。あとは、ドライバロードの部分を修正すればちゃんと動くようになるはず...がんばるか。
>
>実装方法の内容/品質は別として、
> ”B”クローズした後も”A”
> ”A”をクローズ後”B” ・・・・・
>の問題に関しては、解決しております。
>もし情報が必要であれば、声でもかけてみて下さい。
ぜひお願いします!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
メールでアドバイス(ソース)を送ってくださったりすると激しく感激なのでよろしくお願いいたします。

【1134】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/4(土) 15:58 -

引用なし
パスワード
   >>もし情報が必要であれば、声でもかけてみて下さい。
>ぜひお願いします!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>メールでアドバイス(ソース)を送ってくださったりすると激しく感激なのでよろしくお願いいたします。

先ほど、プロジェクト・ツリーごと送らせていただきました。
”A/B”の件、もし役に立つようで有れば、どうぞご自由に。

個人的には、この ”A/B”の件よりも
MP構成における”HALとタイマーの問題”が解決できた事の方が大きな収穫でした。

今回は、色々とお付き合い頂き ありがとうございました。

【1135】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/5(日) 13:49 -

引用なし
パスワード
   ▼Toさん:
>>>もし情報が必要であれば、声でもかけてみて下さい。
>>ぜひお願いします!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>メールでアドバイス(ソース)を送ってくださったりすると激しく感激なのでよろしくお願いいたします。
>先ほど、プロジェクト・ツリーごと送らせていただきました。
>”A/B”の件、もし役に立つようで有れば、どうぞご自由に。
本当にありがとうございました。CrystalMark/CrystalCPUID の開発は非常に多くの人の助けがあって成り立っておりますが、随分悩まされた問題がようやく解決して本当に嬉しいです。

改めてソースコードを公開していて本当に良かったなと思います。ただ、To さんに指摘されたように、ビルドするために手間がかかりすぎるという問題もあるので、現在 x64 版との兼ね合いも含めて調整しています。

CrystalCPUID の About ダイアログおよび SysInfo.txt のスペシャルサンクスのコーナーに掲載させていただいたのですが、To 様は Web サイト等はお持ちではないのでしょうか?

【1138】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら  - 04/9/6(月) 0:43 -

引用なし
パスワード
   ▼Toさん:
> Win2K/WinXP
>の量環境で試してみましたが利きません。NT4だけに限定した話ですかね?
>という事で、私の環境では 上オプション "/USE8254"は、効果ありませんでした。

すいません。検索したページに NT, Win2000, XP などと書かれていたのですが、良く読むとこのオプションは NT 限定と取れる書き方でした。

# strings すると w2k HAL には文字列は残ってますね ...

【1139】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら  - 04/9/6(月) 1:05 -

引用なし
パスワード
   ▼Toさん:
>>Real Time Clock がうまく動かないようです。
>これ、別スレで作者の方に報告しておきましたが、そのせいではないかと思います。
>
>ただ、NT4環境は持っていないので 実際の所は判りません。

3.6.0.200 で NT4 の /USE8254 指定時の正常動作を確認しました。

【1140】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 Kazuma  - 04/9/8(水) 21:42 -

引用なし
パスワード
   ▼Toさん:

こんにちは。

QPC に関しての情報ありがとうございました。
おかげさまでようやくCrystalCPUIDによる倍率変更の後の、
一部アプリケーションの動作異常が直りました。
何とかならないかと、ちょこちょこと見てはいたのですが、
なかなか分からず、そのままになっていました。
でも、これで随分快適になりました。
情報ありがとうございました。

ちなみに、HAL.DLL変更後、ntldrに改変を指摘される件ですが、
当方はVC付属の「rebase.exe」で解決できました。
もしかしたご存知かもしれませんが、ご紹介まで。

えーと、ひよひよさん、ちょっと脇道にそれたような発言でごめんなさい。
でも、おかげさまでより一層CrystalCPUIDが貴重な存在になりました。
これからも感謝して使わせていただきます。
ありがとうございました。

最後に当方の環境を簡単に...
A7M266-D / Athlon XP-M 2600+ × 2 / 512MB
Windows 2000SP4

【1141】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/9(木) 13:15 -

引用なし
パスワード
   ▼Kazumaさん:

結果ご連絡 ありがとうございました。

>情報ありがとうございました。
公式なDualで倍率可変セット自体、あまり聞いた事がないので、
実際 この状況に遭遇するのは、AthlonXP-Mの人だけでしょうかね。

>ちなみに、HAL.DLL変更後、ntldrに改変を指摘される件ですが、
>当方はVC付属の「rebase.exe」で解決できました。
>もしかしたご存知かもしれませんが、ご紹介まで。

はい、Webを調べると判で押したようにご紹介のツールが出てきます。
そして、同じように、この数字は何と言う疑問が残ります。
 SUMを更新したいだけなのに・・・

Kazumaさんのディスクにも入っているかと思いますが、
 "editbin.exe /RELEASE"
がそのものズバリです。お試しあれ

----

上とは、直接関係ありませんが、最近 "WindowsXP 64Bit Edition" で遊んでまして、
シングルですが、これも 上と同じくQPF=CPU-Clockのようです。
ただ、こいつは普段使わないし、すでに興味も薄らいでいるので、この件は後回し。

今は、ドライバ周りをゴニョゴニョとして遊んでいます。

---
ところで、
  ”一部アプリケーション”
て何でしょうか?

【1142】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 Kazuma  - 04/9/9(木) 22:38 -

引用なし
パスワード
   ▼Toさん:

> "editbin.exe /RELEASE"
>がそのものズバリです。お試しあれ

なるほど、rebase.exeを使わなくてもこれでOKのようですね。
と言うより、rebase.exe を使用するよりは、こちらを使用するのが正解なんですね。
どうもありがとうございました。

>ところで、
>  ”一部アプリケーション”
>て何でしょうか?

うちでは映像系のアプリや、ゲーム等でで異常が発生しました。
例えば、Real Player は倍率変更後の映像がコマ送りになってしまいます。
音声はOKですし、起動時の倍率に戻せば映像も問題ありません。
また、PowerDVDも時々映像がカクカクとなります。
CPUパワーが足りないように見受けられるのですが、倍率を上げても改善されませんでした。
CPU換装前(MP1200×2)ではこのような事がなかったので、やはりQPFの影響ではないか?と考えています。
(PowerDVDに関してはただ今手元にDVDがないため、今回の改造により問題が解消したかどうか確認できていません)
RealPlayに関しては正常に再生されるようになりました。
もしかしたら他にも影響を受けていたソフトがあったのかもしれませんが、確認できているところではこんなところです。

【1143】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/9(木) 23:10 -

引用なし
パスワード
   ▼Toさん:
>今は、ドライバ周りをゴニョゴニョとして遊んでいます。
現時点では、64bit ドライバは PCI や物理メモリマッピングができないのでそのあたりでしょうか?

【1144】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/10(金) 9:33 -

引用なし
パスワード
   ▼ひよひよさん:
>▼Toさん:
>>今は、ドライバ周りをゴニョゴニョとして遊んでいます。
>現時点では、64bit ドライバは PCI や物理メモリマッピングができないのでそのあたりでしょうか?

ガジマルさんの "Pcidebug.c" を x86-64のネィティブコード(64Bit)でコンパイルする。
という事であれば、そのフェーズは終わってます。

結果、"CrystalCPUID.exe"(32Bit版)はドライバ以下を際変える事で、
"WindowsXP 64Bit Edition"環境で そのまま動いています。

ご質問の内容は、こういう事でしょうか?

【1145】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/10(金) 22:39 -

引用なし
パスワード
   ▼Toさん:
>ガジマルさんの "Pcidebug.c" を x86-64のネィティブコード(64Bit)でコンパイルする。
>という事であれば、そのフェーズは終わってます。
>
>結果、"CrystalCPUID.exe"(32Bit版)はドライバ以下を際変える事で、
>"WindowsXP 64Bit Edition"環境で そのまま動いています。
>
>ご質問の内容は、こういう事でしょうか?
左様でございます。私はまだ対応作業中(実際は放置)なので、
64bit 対応版ソースを送っていただけると幸いです。
速攻でマージさせていただきたいと思います。

お世話になってばかりですがよろしくお願いいたします。

【1146】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/11(土) 1:46 -

引用なし
パスワード
   ▼Kazumaさん:

ご説明ありがとうございました。

実は、所有のTigerMPは騒音が大きく普段は使用しておりませんでして、
実際の処 どのアプリでどのような不都合があるのか判りませんでした。

ご紹介頂いたソフトウェアにて、症状と効果を確認してみます。

----

【1147】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/11(土) 4:53 -

引用なし
パスワード
   2度手間になるので、ソースファイルのアップデートをお願いします。

【1148】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/11(土) 9:02 -

引用なし
パスワード
   ▼Toさん:
>2度手間になるので、ソースファイルのアップデートをお願いします。
了解です。
今日中に最新版のソースをアップしておきます。

【1149】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/11(土) 12:06 -

引用なし
パスワード
   ▼ひよひよさん:
>▼Toさん:
>>2度手間になるので、ソースファイルのアップデートをお願いします。
>了解です。
>今日中に最新版のソースをアップしておきます。

実際、日記に書かれている
    YAMAHA か Roland のどちらかが 64 ドライバを書いてくれれば
    (といってもコンパイルし直してテストをするだけのはずだが)
通りです。
ご自身でやられては 如何ですか?

【1150】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/11(土) 23:22 -

引用なし
パスワード
   ■To 様
少々苦労しましたが、無事 64bit 化が(ほぼ)完了しました。
ついに 64bit 環境でも PCI にアクセスできるようになりました。

ご存知かとは思いますが

AMD64 開発者情報
http://www.amd64dev.com/

が大変参考になりました。

ただ、ドライバのビルド時に HalGetInterruptVector なんて関数知らんぞ。と怒られてしまったので、コメントアウトしていたりします。

http://www.osr.com/ddk/kmarch/k103_25de.htm

によると廃止される予定みたいですね。Crystal シリーズは割り込み関連使ってないし、今後も遣う予定もないのでバッサリ消してしまった方が良いのかも...

【1151】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 2:23 -

引用なし
パスワード
   >少々苦労しましたが、無事 64bit 化が(ほぼ)完了しました。
>ついに 64bit 環境でも PCI にアクセスできるようになりました。
>
ご苦労さまでした。

64bit化という言葉に、つい "ドライバ構造が変わったんだろう" と構えてしまいますが、
基本的には、日記で、述べられている通り
単にx86-64環境で再コンパイルするだけです。

細かいテクの紹介ばかりで、この事をストレートに紹介しているページが少なく
結果 遠回りしてがちですが、
本質がわかってしまえば、後はポインタ長に注意してソースを見直す作業という程度です。

>ご存知かとは思いますが
>
>AMD64 開発者情報
>http://www.amd64dev.com/
>
>が大変参考になりました。
>
私には、__readmsr();と __writemsr(); の方が参考になりました。
調べてみると、その他にもCPUに1対1の命令が結構あったります。
基本的に、アセンブラは使うなという事なんでしょうな。

>ただ、ドライバのビルド時に HalGetInterruptVector なんて関数知らんぞ。と怒られてしまったので、コメントアウトしていたりします。
>http://www.osr.com/ddk/kmarch/k103_25de.htm
>
今後、本当に外されるのかは判りませんが、現状のライブラリにはそのまま残っていますので、
コンパイル&リンクは可能です。(もっとも動作の程は判りませんが・・・)

>によると廃止される予定みたいですね。Crystal シリーズは割り込み関連使ってないし、今後も遣う予定もないのでバッサリ消してしまった方が良いのかも...

使う予定が無いのであれば、外した方がよいと思います。
そうすると、IOとMEM-Map & msr程度だけになってしまうので、もっとスッキリします。
必要な物だけにして、新たに書き直した方がよいのでは?

【1152】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 10:43 -

引用なし
パスワード
   ▼Toさん:
>私には、__readmsr();と __writemsr(); の方が参考になりました。
>調べてみると、その他にもCPUに1対1の命令が結構あったります。
>基本的に、アセンブラは使うなという事なんでしょうな。
CpuInfoX64 ディレクトリには cpuid.asm が入っているように、readmsr, writemsr, rdtsc に対応する命令があるにもかかわらず何故か cpuid に対応する命令がない!?

http://www.osr.com/ddk/kmarch/64bitamd_28fb.htm

この問題には 64bit 化に取り掛かかり始めたときに結構苦労しています。百歩譲ってインラインアセンブラが使えないのはいいとしても、書き方が昔(386)とだいぶ違うので難儀しました。

>>によると廃止される予定みたいですね。Crystal シリーズは割り込み関連使ってないし、今後も遣う予定もないのでバッサリ消してしまった方が良いのかも...
>使う予定が無いのであれば、外した方がよいと思います。
>そうすると、IOとMEM-Map & msr程度だけになってしまうので、もっとスッキリします。
>必要な物だけにして、新たに書き直した方がよいのでは?
そのうち挑戦してみたいと思います。

【1153】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 12:47 -

引用なし
パスワード
   >CpuInfoX64 ディレクトリには cpuid.asm が入っているように、readmsr, writemsr, rdtsc に対応する命令があるにもかかわらず何故か cpuid に対応する命令がない!?
>

ん、これじゃないの?
何で、頭に "__temp"なんてのがついているか判りませんが。
最適化 /Og(Free Buildのデフォ)を指定すると第2パラメータが消失するようだし、
これも 何れなくなるのかな?

-----
; 391 :     ULONG dwEAX;
; 392 :     ULONG dwREGs[4];
; 393 :

; 394 :     dwEAX = 1;   // 適当な数字
 00023    c7 44 24 18 01
    00 00 00     mov     DWORD PTR dwEAX$[rsp], 1

; 395 :     __temp_cpuid(&dwREGs[0], dwEAX);
 0002b    8b 44 24 18     mov     eax, DWORD PTR dwEAX$[rsp] <- 消失します。
 0002f    0f a2         cpuid
 00031    44 8b c3     mov     r8d, ebx
 00034    4c 8d 4c 24 08     lea     r9, QWORD PTR dwREGs$[rsp]
 00039    41 89 01     mov     DWORD PTR [r9], eax
 0003c    48 8d 44 24 08     lea     rax, QWORD PTR dwREGs$[rsp]
 00041    44 89 40 04     mov     DWORD PTR [rax+4], r8d
 00045    48 8d 44 24 08     lea     rax, QWORD PTR dwREGs$[rsp]
 0004a    89 48 08     mov     DWORD PTR [rax+8], ecx
 0004d    48 8d 44 24 08     lea     rax, QWORD PTR dwREGs$[rsp]
 00052    89 50 0c     mov     DWORD PTR [rax+12], edx

----

>この問題には 64bit 化に取り掛かかり始めたときに結構苦労しています。百歩譲ってインラインアセンブラが使えないのはいいとしても、書き方が昔(386)とだいぶ違うので難儀しました。
>
同感です。せっかくレジスタが増えたのに・・
ml64.exe も多言語とインターフェリス周りを含めてイマイチだし

【1154】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 15:53 -

引用なし
パスワード
   ▼Toさん:
>; 395 :     __temp_cpuid(&dwREGs[0], dwEAX);
えっ?こんな関数ありましたか?
う〜む Platform SDK のバージョンが違うのかも・・・。最新版をダウンロードしてきたので、早速アップデートしてみます。

>>この問題には 64bit 化に取り掛かかり始めたときに結構苦労しています。百歩譲ってインラインアセンブラが使えないのはいいとしても、書き方が昔(386)とだいぶ違うので難儀しました。
>同感です。せっかくレジスタが増えたのに・・
>ml64.exe も多言語とインターフェリス周りを含めてイマイチだし
デバイスドライバやインラインアセンブラを使っていないソフトは本当にコンパイルしなおすだけって感じだと思うのですが、インラインアセンブラが使えない&ml64 の書式がだいぶ 386 時代と異なるというわけで敷居が高すぎです。こうやって本質とは関係ないところで苦労する時間が非常に長かった・・・。

【1155】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 16:27 -

引用なし
パスワード
   >>; 395 :     __temp_cpuid(&dwREGs[0], dwEAX);
>えっ?こんな関数ありましたか?
>う〜む Platform SDK のバージョンが違うのかも・・・。最新版をダウンロードしてきたので、早速アップデートしてみます。

Server 2003 Driver Development Kit(Build 3790) というやつです。(一年ほど前の)
が、マニュアルを見て調べている訳ではないので、このバージョンの説明にも
記載されているのかどうかわかりません。

実際の処、先ほどご紹介頂くまで
 >http://www.osr.com/ddk/kmarch/64bitamd_28fb.htm
なる存在も知りませんでした。
 __readmsr();も __writemsr(); も
ご自身で独自に調査さ解析された物だと思っていました。(なかなか"ヤルナー"と感心)

【1156】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 16:58 -

引用なし
パスワード
   ▼Toさん:
>Server 2003 Driver Development Kit(Build 3790) というやつです。(一年ほど前の)
>が、マニュアルを見て調べている訳ではないので、このバージョンの説明にも
>記載されているのかどうかわかりません。
DDK の方でしたか。早速確認してみます。

>実際の処、先ほどご紹介頂くまで
> >http://www.osr.com/ddk/kmarch/64bitamd_28fb.htm
>なる存在も知りませんでした。
> __readmsr();も __writemsr(); も
>ご自身で独自に調査さ解析された物だと思っていました。(なかなか"ヤルナー"と感心)
えと、今は MSDN で検索しても出てこないような気がするのですが、少なくとも以前はMSDN でAMD64へ移植するための注意点をまとめたページがあって、そこに rdmsr wrmsr はわざわざインラインアセンブラしなくても組み込み関数用意しときましたよ!!って感じの紹介がされていました。探し方がまずいだけで本当はあると思うのですが・・・。

【1157】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 17:08 -

引用なし
パスワード
   探したらありました。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch/hh/kmarch/64bitamd_b20adad8-0921-4166-ba42-25edcb65277f.xml.asp

ここを参考にしたわけです。当時と URL は変わっていますが...

【1158】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 21:52 -

引用なし
パスワード
   >ここを参考にしたわけです。当時と URL は変わっていますが...

色々とご紹介頂きありがとうございました。

で、
 __temp_cpuid( , );
は、最新版では無くなっておりますでしょうか?(名前からしていかにも怪しいし・・)

----

上のCPUID命令は個人的には、殆ど使わないので実害は無いのですが、
"UnDocumented" といいながら今でも健在。
個人的にも、色々とお世話になっていた、
 void Ke386SetIoAccessMap(int, IOPM *);
 void Ke386QueryIoAccessMap(int, IOPM *);
 void Ke386IoSetAccessProcess(PEPROCESS, int);
は奇麗サッパリ無くなっています。(これ痛い!)

代替案でも考えないと、来年辺りには今までみたいに手軽に遊べなくなってしまうが痛い。
(純なソフトの話では無く、電気工作がらみの事ですけど・・・)

【1163】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/20(月) 0:58 -

引用なし
パスワード
   ▼Toさん:
> __temp_cpuid( , );
>は、最新版では無くなっておりますでしょうか?(名前からしていかにも怪しいし・・)
Windows DDK 3790.1069 と Windows DDK 3790.1069 で試してみたのですが、__temp_cpuid 関数はありませんでした。もう、cpuid 命令は発行できるので必要はないのですが、標準であるのなら ASM しなくても良くて便利かなと。

【1582】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 bit_d  - 05/4/19(火) 16:57 -

引用なし
パスワード
   最近、SocketAデュアルマザーボードにてGeodeNX 1750+を使用し始めたbit_dと申します。
環境は以下の通りです。

M/B: ASUS A7M266-D
CPU: GeodeNX 1750+ (1.45V動作) ×2
MEM: 1024MB
OS : WindowsXP Media Center Edition 2005 (Service Pack 2)
S/W: CrystalCPUID 4.3.14.248

CrystalCPUIDで倍率変更をしている場合に限り、WindowXP MCEのMedia Centerで
テレビを視聴する際、先に皆さんが経験されている動作遅延(映像がカクカクと
コマ落ち状態になり、音声も途切れる状態)が発生してしまいます。

▼Toさん:
>"HAL.DLL"を追ってみると、もともと "3.58系"/"RDTSC系"の両方のコードが実装されているようで、この動作は切り替えは、特定の変数で行っているようです。
>結局、該当ファイルの この1Byteのみ(実際は1Bitのみ)の変更ですみました。

対策としてToさんが紹介されているHAL.DLLの改造を行ってみたいと思います。
具体的にどういった調べ方でパッチ位置を特定すればよいかを教えていただけない
でしょうか。

HAL.DLLのバージョンは以下になります。
5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)

もしくは、HAL.DLL改造および下駄による起動時倍率変更以外に、(できればS/W対応
のみで)マルチプロセッサ環境におけるQPF/QPCの問題を回避する手段をどなたか
ご存じないでしょうか…?

質問ばかりですみませんが、よろしくお願いします。

【1583】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら  - 05/4/21(木) 0:19 -

引用なし
パスワード
   ▼bit_dさん:
>CrystalCPUIDで倍率変更をしている場合に限り、WindowXP MCEのMedia Centerで
>テレビを視聴する際、先に皆さんが経験されている動作遅延(映像がカクカクと
>コマ落ち状態になり、音声も途切れる状態)が発生してしまいます。
>
>▼Toさん:
>>"HAL.DLL"を追ってみると、もともと "3.58系"/"RDTSC系"の両方のコードが実装されているようで、この動作は切り替えは、特定の変数で行っているようです。
>>結局、該当ファイルの この1Byteのみ(実際は1Bitのみ)の変更ですみました。
>
>対策としてToさんが紹介されているHAL.DLLの改造を行ってみたいと思います。
>具体的にどういった調べ方でパッチ位置を特定すればよいかを教えていただけない
>でしょうか。

Toさんではありませんが ...

どのあたりかまでは 16 進ダンプすればわかると思いますが、その先は ...


>HAL.DLLのバージョンは以下になります。
>5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)
>
>もしくは、HAL.DLL改造および下駄による起動時倍率変更以外に、(できればS/W対応
>のみで)マルチプロセッサ環境におけるQPF/QPCの問題を回避する手段をどなたか
>ご存じないでしょうか…?

切り替えられる構造になっているということは Windows が何らかの判定を
行って切り替える場合があるということだと思います。

# NT4 には切り替える起動オプションがあったのですが ...

(W2k 以降にも切り替えるための隠し API あるいはレジストリがあるのかも ?)


--
Windows の使用許諾上問題のない方法は API を差し替える方法だと思うのですが、以前少し試したかぎりではうまくいきませんでした。

【1584】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 bit_d  - 05/4/24(日) 1:28 -

引用なし
パスワード
   bit_dです。お返事が遅くてすみません。

▼きたむらさん:
>どのあたりかまでは 16 進ダンプすればわかると思いますが、その先は ...

やはり、x86アセンブラの知識が必要でしょうし、EULAを乗り越えることになるので
いろいろとアレなんでしょうね。理解はしてます。

ほかの皆さんの発言からある程度まで追うことはできるとわかってはいるのですが、
もし前例があってパッチデータが存在しているのであれば、At Your Own Riskで
実行するという都合の良いことを考えておりました…。

>切り替えられる構造になっているということは Windows が何らかの判定を
>行って切り替える場合があるということだと思います。
>
># NT4 には切り替える起動オプションがあったのですが ...

/USE8254オプションですね。これがXPでも使えるのなら解決になるのですが…。

>(W2k 以降にも切り替えるための隠し API あるいはレジストリがあるのかも ?)

私には解析のスキルがないので、海外のサイトを漁る程度しかできないですが、
望みがあるのであれば探してみようかと思います。

下駄による倍率固定では、CrystalCPUIDによるクロック降下ができないことになって
おもしろくないので、何とかならないか今も思案中です。

【1589】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 きたむら  - 05/4/28(木) 0:58 -

引用なし
パスワード
   ▼bit_dさん:

>やはり、x86アセンブラの知識が必要でしょうし、EULAを乗り越えることになるので
>いろいろとアレなんでしょうね。理解はしてます。

そこまでおわかりになっているのなら、Win2k の HAL のパッチ箇所と似たような箇所を探せばすぐにわかると思います。

チェックサムを合わせる必要があるので注意してください。(合わせるツールがあるのですがコマンド名を忘れてしまいました。)

>/USE8254オプションですね。これがXPでも使えるのなら解決になるのですが…。

これで解決かと思ったのですが QPF の値が SMP HAL では CPU クロックに近いことを勝手に期待している場合があるみたい ? です。


>下駄による倍率固定では、CrystalCPUIDによるクロック降下ができないことになって
>おもしろくないので、何とかならないか今も思案中です。

メディア関係のプログラムの動作時は倍率固定で良いのであれば BIOS に patch をあててその倍率で起動しておけば良いのではないでしょうか。

# しかし下駄で起動倍率変更するとクロック下げられないんですか ... ブリッジいじる場合と微妙に違うんですね。

【1597】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 bit_d  - 05/5/1(日) 3:06 -

引用なし
パスワード
   ▼きたむらさん:
>そこまでおわかりになっているのなら、Win2k の HAL のパッチ箇所と似たような箇所を探せばすぐにわかると思います。
>
>チェックサムを合わせる必要があるので注意してください。(合わせるツールがあるのですがコマンド名を忘れてしまいました。)

おお…そういうアプローチがありますね。
パッチデータのうち、後半のデータがチェックサムなんですね。こちらの計算がわからないな…。
時間を見つけてチャレンジしてみます。ありがとうございます。

>メディア関係のプログラムの動作時は倍率固定で良いのであれば BIOS に patch をあててその倍率で起動しておけば良いのではないでしょうか。

こちらも調べてみます。
何せ中身の仕掛けを理解しないままで発言してましたので、恥じ入りながら勉強してきます…。

># しかし下駄で起動倍率変更するとクロック下げられないんですか ... ブリッジいじる場合と微妙に違うんですね。

いえ、仮に下駄でCPU定格上限まで起動倍率を上げたとしても、CrystalCPUIDの機能を使って倍率変更をするとやっぱりメディア系のソフトに不都合がでると思って、先の発言をしています。これも実際にやってみないと何が起きるかわかりませんね。

結果が出たらまたこちらに書き込みます。
きたむらさん、ありがとうございました。

【1706】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 x64 User  - 05/6/14(火) 5:52 -

引用なし
パスワード
   >/USE8254オプションですね。これがXPでも使えるのなら解決になるのですが…。
XPでは/USE8254オプションは効果がないみたいですが、代わりに/USEPMTIMERというオプションがあります。
http://support.microsoft.com/kb/835730/en-US
x64版XPではユニプロセッサカーネルもパフォーマンスカウンタにCPUクロックを使うため、一部アプリケーションの動作速度がおかしくなったりしていたのですが、/USEPMTIMERオプションの指定で解消しました。
SMPやHyperThreadingなPCは持っていないので、マルチプロセッサカーネルでは試していません。

【1707】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 05/6/14(火) 23:45 -

引用なし
パスワード
   ▼x64 Userさん:
>http://support.microsoft.com/kb/835730/en-US
これは貴重な情報の予感。私は全然困っていませんが、困っている方はぜひお試しくだされ!!

こういう情報が寄せられるということがとても嬉しいです。本当にありがとうございます。

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