SSブログ

Ryzenのsmuやらなにやら [PC]

はじめに、コメントで情報をくださったirusanov さん、ありがとうございます。
Thank you irusanov for the information in the comments.

K17TK的なコマンドラインツールを作って色々試してみたので簡単なまとめなど。

CPBについては論理プロっセッサー(要するにスレッドなんで3600なら12)単位で値を個別に保持しているようです、P-Stateに関してはどこかの論理プロっセッサーの値を変更するとすべての論理プロセッサーに反映されます。
結果的に、K17TKはCPBの設定以外は問題なく動作します、CPBは多分論理コア0しか変更されない・・・・。

次にsmu関連。
irusanov さんも書かれていますがK17にはパブリックなBKDGが存在しません、PPRやOpen-Source Register Referenceでは一部の項目しか説明されていません。
究極的にはBIOSをRE(リバースエンジニアリング)するしかないという事になるのですが、それはちょっと大事なので、既存のリソースからわかる範囲で引っ張り出してみました。
既存のリソースとして見つかったのはZenStates-0.7.1(ソースが公開されているバージョン)とsmu-toolのふたつですがこれがまた微妙に違うという・・・・。
以下、見難いですが・・・・。
まずアドレスまわり。
            ZenStates  smu-tool
SMU MSG Address  0x03B10528  0x3B10528
SMU RSP Address  0x03B10564  0x3B10564
SMU ARG0 Address  0x03B10598  0x3B10998
SMU ARG1 Address  0x03B1059C 0 x3B1099C
ARGxのアドレスが違うのです。
そしてmsuに与えるメッセージ(コマンド)、左からZenStates,smu-tool,irusanovさんの情報の順。
0x01           TestMessage     TestMessage
0x02           GetSmuVersion    GetSmuVersion
0x03           GetBiosIfVersion
0x04           GetNameString
0x05           EnableSmuFeatures
0x06           DisableSmuFeatures
0x09 EnableSmuFeatures  DramLogSetDramSize
0x0A DisableSmuFeatures DxioTestMessage
0x24                      EnableOverclocking
0x25                      DisableOverclocking
0x26                      SetOverclockFreqAllCore
0x27                      SetOverClockFreqPerCore
0x28                      SetOverClockVid
0x29                      SetBoostLimitFreqAllCores
0x2B                      ?
0x2C                      GetOverclockCap?
0x2F                      ?
0x31 SetPPTLimit     AcBtcEndCal
0x3A TctlOffset      SetVddOffVid
0x43 SetTDCLimit     GetSustainedPowerAndThmLimit
0x44 SetEDCLimit     SetSoftMaxCCLK
0x45 SetFITLimit     SetSoftMinCCLK
0x46 SetTjMax      SetSoftMaxGfxClk
0x48 SetFITLimitScalar  SetSoftMaxSocclkByFreq

これまた全然違います、さてどうしたものでしょうか・・・・。
そこで、データの読み出し系と思われる、TestMessage,GetSmuVersion,GetBiosIfVersion,GetOverclockCap,TctlOffsetを使って実機で確認してみました。
1600ではZenStatesのアドレスで値が取得できました。
01 arg0+1
02 0x195400
03 0x07
2C 0xDDA0B000
3A 0x00

3700U(これは第二世代?)ではsmu-toolのアドレスで値が取得できましたが、GetOverclockCapではPCがハングしました・・・・・。
01 arg0+1
02 0x41E3A00
03 0x11
3A 0x00

3600では、すべてのパターンでFailed(-1)が返ってきてしまいなにも取得できません、第三世代ではアクセス方法に変更があったのでしょうかねぇ、BKDGが無い状態でこの先はどうしようもないかな・・・・。

それに世代によってsmuのコマンドメッセージも微妙に違うようだし、BKDGがないとREするしか手が無いのですかね、情報をお持ちの方が居れば提供いただけると助かります。



nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。