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

【796】CrystalCPUID 3.3 感想&要望&バグ報告 ひよひよ 04/3/3(水) 0:17

【827】多段電圧変更 ひよひよ 04/3/9(火) 0:30
【828】Re:多段電圧変更 tsukasam 04/3/10(水) 0:19
【830】Re:多段電圧変更 ひよひよ 04/3/10(水) 0:35
【835】Re:多段電圧変更 tsukasam 04/3/10(水) 14:02
【836】Re:多段電圧変更 ひよひよ 04/3/10(水) 16:10

【827】多段電圧変更
←back ↑menu ↑top forward→
 ひよひよ  - 04/3/9(火) 0:30 -

引用なし
パスワード
   ▼tsukasamさん:
>その後のさらなる改造で多段のVID変更要求でも自身で1段ずつ変更できるようになりました。ただし20ms/段の時間を必要とします。20ms/段ってのは長すぎだろーって自分でも思ってますが、確実に動作させたかったのでとりあえず。
>それで、3.3.7.152の LoveHammer()の case 7:の倍率上げ時の P->SysInfo->SetData(LH_SET_FID, FID); の直前に、if(flag){Sleep((vid-VID)*20);} をつっこみました。
先ほどはなるほどと思ったのですが、電圧の変更は CpuInfo.cpp の SetData で呼び出した先で行っており、SetData を呼び出す直前にスリープしても特に意味はありません。詳細は CpuInfo.cpp ですが、一部を抜粋すると

{
if( data == 15 || data == 31 ){
    break;
}
DWORD count = 32;
while( count-- ){
    DWORD CurrentVID = 0;
    DWORD NextVID = 0;

    ReadMSR(0xC0010042,&EAX,&EDX);
    CurrentVID = EDX & 0x1F;
    if(data > CurrentVID){
        NextVID = CurrentVID + 1;
        if( NextVID == 15 ){
            NextVID++;
        }
    }else if(data < CurrentVID){
        NextVID = CurrentVID - 1;
        if( NextVID == 15 ){
            NextVID--;
        }
    }else{
        break;
    }

    if( NextVID == 31 || NextVID < 0 || NextVID > 31 ){
        break;
    }

    ReadMSR(0xC0010041,&EAX,&EDX);
    EAX &= 0xFFFFE0FF;
    EAX |= 0x00020000; // Set bit 17  (VID)
    EAX &= 0xFFFEFFFF; // Clear bit 16 (FID)
    EDX = 0x64;    // Allow minimum 100 ms settling time
    EAX |= ( NextVID << 8 );
    WriteMSR(0xC0010041,&EAX,&EDX);
    do{
        ReadMSR(0xC0010042,&EAX,&EDX);
    }while( (EAX >> 31) & 0x1 );
}

}

って感じです。一段階の電圧を変化させる度に、
do{
    ReadMSR(0xC0010042,&EAX,&EDX);
}while( (EAX >> 31) & 0x1 );
で電圧が安定するのを待っています。(詳細は BIOS & Kernel Developer's Manual 参照)

多段階電圧変更を一段ずつ行うようになったのは SysInfo.dll 148 からなので、それ以前のバージョンに比べると一部の環境で安定度が増したと思われます。

【828】Re:多段電圧変更
←back ↑menu ↑top forward→
 tsukasam  - 04/3/10(水) 0:19 -

引用なし
パスワード
   ▼ひよひよさん:
>で電圧が安定するのを待っています。(詳細は BIOS & Kernel Developer's Manual 参照)
>
>多段階電圧変更を一段ずつ行うようになったのは SysInfo.dll 148 からなので、それ以前のバージョンに比べると一部の環境で安定度が増したと思われます。

そうですよね。変なのは当方のM/Bなのです。

「BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors」を見てみたのですが、p234にあるVSTってのが、ReadMSR(0xC0010042,&EAX,&EDX)の EAXの MSBが'1'になるための待ち時間なのでしょうか?
当方のM/Bは電圧変更なんてなにも考慮されてないはずなので、この値がデフォルトの100usになってるのかも。そして100usでは電源が追いつかなくてフリーズしてるのかも。この値が確認できたらいいですね。

それと、もうひとつ教えてください。
ソースのcpuinfoフォルダ内のプロジェクトはcpuinfo.dllを作ると思うのですが、リリースされた実行ファイル群にはcpuinfo.dllが見当たらないのですが、他のファイルに吸収されているのでしょうか?

【830】Re:多段電圧変更
←back ↑menu ↑top forward→
 ひよひよ  - 04/3/10(水) 0:35 -

引用なし
パスワード
   ▼tsukasamさん:
>そうですよね。変なのは当方のM/Bなのです。
>「BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors」を見てみたのですが、p234にあるVSTってのが、ReadMSR(0xC0010042,&EAX,&EDX)の EAXの MSBが'1'になるための待ち時間なのでしょうか?
>当方のM/Bは電圧変更なんてなにも考慮されてないはずなので、この値がデフォルトの100usになってるのかも。そして100usでは電源が追いつかなくてフリーズしてるのかも。この値が確認できたらいいですね。
3.3 でもフリーズしますか?あそこに Sleep() を入れても電圧変更には影響がなくて、電圧を一段変更する度に Sleep() するというのなら話はわかるのですが...
まぁ、なんにせよちょっと余分に wait があっても良いかもしれませんね。

>それと、もうひとつ教えてください。
>ソースのcpuinfoフォルダ内のプロジェクトはcpuinfo.dllを作ると思うのですが、リリースされた実行ファイル群にはcpuinfo.dllが見当たらないのですが、他のファイルに吸収されているのでしょうか?
えーと、CpuInfo.dll は SysInfo.dll から CPU 関連だけを抜き出したもので 2.x で利用していました。3.x では SysInfo.dll に再統合されました。詳細は、SysInfo.txt や 2.x に入っている CpuInfo.txt を読めばわかるかと思います。

CpuInfo.dll は修正版 BSD ライセンスにするために存在です。

【835】Re:多段電圧変更
←back ↑menu ↑top forward→
 tsukasam  - 04/3/10(水) 14:02 -

引用なし
パスワード
   ▼ひよひよさん:
>3.3 でもフリーズしますか?あそこに Sleep() を入れても電圧変更には影響がなくて、電圧を一段変更する度に Sleep() するというのなら話はわかるのですが...
あ、フリーズするのは電圧変更操作自体ではなくて、その後の倍率UP変更時です。
電圧変更操作のみで倍率UPなしならばフリーズしません。
それで倍率UPする直前のSleep()に適当な引数を入れてみたらフリーズしなくなったと。
当方の電源がCPU負荷に対してすばやくついていけないのかもしれません。

Cpuinfo.cppがSysinfo.dllに含まれていること、了解しました。
ついでに、3.3.8.154Beta バグ報告
AMD K7/K8 Multiplier ダイアログ上から1.250Vから1.700Vまで0.025V単位で変更して確認しました。
・電圧のCurrent Startup Maxが起動直後はDesk電圧だが、一度電圧変更するとmobile電圧になる。
・1.475Vはそれ以前の電圧から変化なし。
以上2点を発見しました。

感想:desktop電圧で変更できるのは判り易くてとても良いです。M/B改造でテーブル変換するつもりでしたが、やる気を失いました。(^^;

【836】Re:多段電圧変更
←back ↑menu ↑top forward→
 ひよひよ  - 04/3/10(水) 16:10 -

引用なし
パスワード
   ▼tsukasamさん:
>あ、フリーズするのは電圧変更操作自体ではなくて、その後の倍率UP変更時です。
>電圧変更操作のみで倍率UPなしならばフリーズしません。
>それで倍率UPする直前のSleep()に適当な引数を入れてみたらフリーズしなくなったと。
>当方の電源がCPU負荷に対してすばやくついていけないのかもしれません。
あっ、なるほど。勘違いしていました。CrystalCPUID.ini には SleepTimeLH=xxx という項目がありますが、そこで Sleep 時間を設定できるようにしておきます。(いままでもできるのですが一部なんですよね…)

>・電圧のCurrent Startup Maxが起動直後はDesk電圧だが、一度電圧変更するとmobile電圧になる。
直しておきます。

>・1.475Vはそれ以前の電圧から変化なし。
えと、Mobile 版と比較していただけるとわかると思うのですが 1.475 は Mobile では無効になっているんですよね。一応デスクトップモードに切り替えたときは動かすようにしているつもりなんですがまだ問題があるのかもしれませんし、そういうものなのかもしれません。今晩にでもソースを上げておくのでチェックしてみてください。

>以上2点を発見しました。
どうもです。


>感想:desktop電圧で変更できるのは判り易くてとても良いです。M/B改造でテーブル変換するつもりでしたが、やる気を失いました。(^^;

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