=============================================================================== Ftune2 is SH7305 CPG&BSC tuning utility for fx-9860GII-2 v1.20 copyright(c)2014/2015/2016/2017/2019 by sentaro21 e-mail sentaro21@pm.matrix.jp =============================================================================== CASIOのfx-9860GII-2はSH7305と称されるSH4Aが採用されています。 このアドインはCPU(SH7305)をいじって限界までオーバークロックしてしまおうという非常に危険極まりないツールです。 (一応安全に動作するように作られてはいますが保障は出来ません。) fx-CG10/20のオーバークロックツールであるところのPover(Ashbad氏作成)を参考にあれこれと試行錯誤した結果、生まれたのがこのツールです。 ・特徴  200MHz以上まで簡単にオーバークロックできます。  メモリの動作限界周波数を自動的に測定します。  周波数/ウエイト設定をファンクションキーに保存できます。  設定をセーブしておけば次回起動時に自動的に読み込まれます。 ・欠点  速度アップに応じて消費電流が増えます。  十分にテストされてないので未知の不具合が起こっても不思議ではありません。 ========================== 注意!!! ============================================ このツールは安全に動作するように十分注意して作成されていますが、 あなたの電卓に重大なダメージを与える恐れがあります。 ほとんどの場合はリセットで復帰できますが、電卓のシステムがフラッシュROMにあるゆえに、 BIOSまたはOS領域への誤書込が起きた場合には確実に再起不能に陥ります。 ツールの使用はバックアップをとった上であなたの責任においてお願いいたします。 作者はこのツールの使用の結果においていかなる責任も負わないものとさせていただきます。 =============================================================================== ------------------------------------------------------------------------------- CPU ------------------------------------------------------------------------------- SH7305 ルネサスのSH7724(およびSH7730)に非常によく似たCPUですが、 電卓用にカスタマイズされたCPUです。 キャッシュはインストラクション、データともに32KB、 2本のパイプを持つスーパースカラCPUです。 細部の詳しい説明、構造はルネサスのPDF(SH7724,SH7730等)を参照してください。 ここでは違っている(と思われる)部分だけを説明します。 ------------------------------------------------------------------------------- CPG(クロックパルスジェネレータ) 参照元: SH7724 データシート ------------------------------------------------------------------------------- FLL FLL回路の逓倍率。 FLL回路は32.768KHzを逓倍して基本クロックを生成します。 FLLの逓倍率はデフォルトで900です。 SH7305の基本クロックは32.768KHzを900倍して1/2にしたした14.7456MHzが FLL回路より出力されます。 SH7724のマニュアルでは20MHz〜33MHzまでとありますが、 20MHz以下、33MHz以上でも動作可能なようです。 PLL PLL回路の逓倍率。 FLL回路より出力される基本クロックを逓倍して各種クロックの元になるクロックを生成します。 デフォルトは16倍に設定されています。 14.7456MHz * 16 = 235.9296MHz 1倍〜64倍まで設定できます。 ただし、生成されるクロックが800MHzを超えるあたりから半分の速度に落ちてしまいます。 PLLはすべての元となるクロックを生成する必要があるので 限界値よりかなり余裕を持って設定してください。 IFC CPUクロックの分周率。 PLLで生成されたクロックを分周してCPUコアに供給するクロックを生成します。 fx-9860GII-2ではデフォルトで1/8に設定されていて29.49MHzで動作しています。 固体差によっては300MHzオーバーまで動作可能なようです。 SFC Sクロックの分周率。 PLLで生成されたクロックを分周してSuperHywayバスに供給するクロックを生成します。 デフォルトで1/8に設定されていて29.49MHzで動作しています。 最大200MHz程度まで動作可能なようですが160MHz程度までにした方が安全です。 BFC メモリバスクロックの分周率。 PLLで生成されたクロックを分周してメモリバスに供給するクロックを生成します。 デフォルトでは1/8に設定されていて29.49MHzで動作しています。 最大200MHz程度まで動作可能なようですが130MHzを超えるとUSBが認識されないなどの不具合が起きます。 PFC 周辺クロックの分周率。 PLLで生成されたクロックを分周してI/Oに供給するクロックを生成します。(RS232C等) デフォルトでは1/16に設定されていて14.75MHzで動作しています。 40MHz以上でも動作可能ですがフラッシュメモリの書込みに影響があるので、 出来るだけデフォルトに近いところ、最大でも30MHz以下に設定するのが安全です。 IFC,SFC,BFC,PFCの分周率はSH7724やSH7730とは違って1/2の倍数のみです。 0000: 1/2 0001: 1/4 0010: 1/8 IFC,SFC,BFC デフォルト 0011: 1/16 PFC デフォルト 0100: 1/32 0101: 1/64 各分周比は IFC >= SFC >= BFC >= PFC の関係を保たないと予期せぬ動作を引き起こします。 それぞれの比率がかけ離れても予期せぬ動作が起きる可能性があります。 このツールでは正常動作する範囲内に自動調整します。 ------------------------------------------------------------------------------- BSC(バスステートコントローラ) 参照元: SH7724 データシート ------------------------------------------------------------------------------- バスステートコントローラは各種ウエイト等の設定を行います。 レジスタの構成はSH7724と同じだと思われます。 CS0BCR, CS0WCR : FLASH ROM エリア CS2BCR, CS2WCR : main RAM エリア CS5ABCR,CS5AWCR : LCDC その他のレジスタに使われ方は不明です。 ROM アクセスタイム70〜100nsのNOR型フラッシュROMが採用されており OSやアドインの格納場所として使用されています。 通常使用では書き込みはあまり起きないですが、 電源オフで自動的にフラッシュROMにメインメモリの内容をバックアップするので 電源オフで毎回フラッシュの書き込みが発生します。 ウエイト値の設定が低すぎると読み込みや書き込みコマンドにエラーが発生し、 BIOSやOSエリアに間違って書き込みが発生すると確実にフラッシュメモリの内容が 破壊されてしまいます。 このツールではそうならないようなウエイト値に自動設定しますが、 ウエイト値に余裕がない場合には誤動作する可能性があります。 RAM アクセスタイム70ns〜80ns?のSRAMが採用されており、 メインメモリやアドインのワークエリアとして使用されます。 ウエイト値が低すぎる場合は読み書きエラーとなりメモリ内容が破壊されます。 このツールではそうならないようなウエイト値を自動設定しますが、 ウエイト値に余裕がない場合には誤動作する可能性があります。 ROMでのアクセスエラーに比べると電卓が壊れる可能性は低いです。 CSn空間バスコントロールレジスタ(CSnBCR) (n=0,2,3,4,5A,5B,6A,6B) IWW: ライト−リード/ライト−ライトサイクルアイドルサイクル指定。 000: アイドルサイクル無し 001: 1 アイドルサイクル挿入 010: 2 アイドルサイクル挿入 011: 4 アイドルサイクル挿入 100: 6 アイドルサイクル挿入 101: 8 アイドルサイクル挿入 110: 10 アイドルサイクル挿入 111: 12 アイドルサイクル挿入 デフォルトでは 2 アイドルサイクル挿入ですが、減らすと速度アップします。 IWRWD: 別空間リード−ライトサイクルアイドルサイクル指定。 000: アイドルサイクル無し 001: 1 アイドルサイクル挿入 010: 2 アイドルサイクル挿入 011: 4 アイドルサイクル挿入 100: 6 アイドルサイクル挿入 101: 8 アイドルサイクル挿入 110: 10 アイドルサイクル挿入 111: 12 アイドルサイクル挿入 デフォルトでは 2 アイドルサイクル挿入ですが、減らしても効果が確認できません。 IWRWS: 同一空間リード−ライトサイクルアイドルサイクル指定。 000: アイドルサイクル無し 001: 1 アイドルサイクル挿入 010: 2 アイドルサイクル挿入 011: 4 アイドルサイクル挿入 100: 6 アイドルサイクル挿入 101: 8 アイドルサイクル挿入 110: 10 アイドルサイクル挿入 111: 12 アイドルサイクル挿入 デフォルトでは 2 アイドルサイクル挿入ですが、減らしても効果が確認できません。 IWRRD: 別空間リード−リードサイクルアイドルサイクル指定。 000: アイドルサイクル無し 001: 1 アイドルサイクル挿入 010: 2 アイドルサイクル挿入 011: 4 アイドルサイクル挿入 100: 6 アイドルサイクル挿入 101: 8 アイドルサイクル挿入 110: 10 アイドルサイクル挿入 111: 12 アイドルサイクル挿入 デフォルトでは 2 アイドルサイクル挿入ですが、減らしても効果が確認できません。 IWRRS: 同一空間リード−リードサイクルアイドルサイクル指定。 000: アイドルサイクル無し 001: 1 アイドルサイクル挿入 010: 2 アイドルサイクル挿入 011: 4 アイドルサイクル挿入 100: 6 アイドルサイクル挿入 101: 8 アイドルサイクル挿入 110: 10 アイドルサイクル挿入 111: 12 アイドルサイクル挿入 デフォルトでは 2 アイドルサイクル挿入ですが、減らすと速度アップします。 CSn空間ウエイトコントロールレジスタ (CSnWCR) (n=0,2,3,4,5A,5B,6A,6B) WW: ライトアクセスウエイトサイクル数 000: リードアクセスウエイト(WR)と同じサイクル 001: 0 サイクル 010: 1 サイクル 011: 2 サイクル 100: 3 サイクル 101: 4 サイクル 110: 5 サイクル 111: 6 サイクル デフォルトではリードウエイトと同じ設定ですが、 メモリアクセスにおいてはライトアクセスを独立で設定した方が速くなります。 WR: リードアクセスウエイトサイクル数 0000: 0 サイクル 1000: 10 サイクル 0001: 1 サイクル 1001: 12 サイクル 0010: 2 サイクル 1010: 14 サイクル 0011: 3 サイクル 1011: 18 サイクル 0100: 4 サイクル 1100: 24 サイクル 0101: 5 サイクル 0110: 6 サイクル 0111: 8 サイクル ウエイトを減らすと速度アップします。 SW: アドレス、CSnアサートRD→WEnアサート遅延サイクル数 00: 0.5サイクル 01: 1.5サイクル 10: 2.5サイクル 11: 3.5サイクル デフォルトは0.5サイクルです。 HW: アドレス、RD,WEnネゲート→アドレス、CSnネゲート遅延サイクル数 00: 0.5サイクル 01: 1.5サイクル 10: 2.5サイクル 11: 3.5サイクル デフォルトは0.5サイクルです。 ウエイト フラッシュROM,RAMのアクセス時に挿入されるウエイト値。 ROMのデフォルトウエイト値 3 (fx-CG10/20) ROMのデフォルトウエイト値 18 (fx-9860GII-2) RAMのデフォルトウエイト値 2 fx-9860GII-2のROMのウエイト18はさすがに多すぎます。あり得ない多さです。 適正な設定値は2でしょうが、先代のfx-9860Gやfx-CG10/20との速度差の調整のためか 異様に多いウエイト値となっています。 メモリのウエイトやメモリ間アクセスのアイドルタイム等、詰められるところを 改善するだけで実行速度は3割〜5割増になります。 ========================== 注意!!! ============================================ このツールは安全に動作するように十分注意して作成されていますが、 あなたの電卓に重大なダメージを与える恐れがあります。 ほとんどの場合はリセットで復帰できますが、電卓のシステムがフラッシュROMにあるゆえに、 BIOSまたはOS領域への誤書込が起きた場合には確実に再起不能に陥ります。 ツールの使用はバックアップをとった上であなたの責任においてお願いいたします。 作者はこのツールの使用の結果においていかなる責任も負わないものとします。 =============================================================================== ------------------------------------------------------------------------------- メイン画面 ------------------------------------------------------------------------------- ---------------------------------- FLL:x900 * 14.75MHz PLL:x16 *235.93MHz IFC:1/8 CPU * 29.98MHz SFC:1/8 RoR 18 * 29.49MHz BFC:1/8 RaR 2 * 29.49MHz PFC:/16 RaW =R * 14.75MHz messeage area / benchmark score [function key] ----------------------------------- RoR: ROMリードアクセスウエイトサイクル数 反転:要注意範囲。 RaR: RAMリードアクセスウエイトサイクル数 反転:要注意範囲。 RaW: RAMライトアクセスウエイトサイクル数 反転:要注意範囲。 ------------------------------------------------------------------------------- 使用方法 ------------------------------------------------------------------------------- -[UP] どこをいじるか選択します。 (FLL,PLL,SFC,BFC,PFC) -[DOWN] -[LEFT] 一段階上げます。 -[RIGHT] 一段階下げます。 -[SHIFT]+[UP] FLLの変更が可能になります。(セットアップにて+[SHIFT]無しに変更できます。) -[F1] 電卓リセット時のデフォルトに戻します。 CPU 29MHz, PLLx16, bus 29MHz -[F2] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 59MHz, PLLx16, bus 29MHz, fx-CG10/20と同じ設定 -[F3] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 29MHz, PLLx16, bus 29MHz, SH3モデルと同じ設定。 -[F4] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 118MHz, PLLx32, bus 58MHz, ウエイト削減 -[F5] F2キーに記憶させた設定を呼び出します。 初期設定=> CPU 236MHz, PLLx32, bus 118MHz, ウエイト削減 -[F6] 簡単なベンチマークを行います。 CPUのスコアはfx-9860Gのadd-in "UTIL"と同様のタイマー設定によるループ回数をカウントします。 このツールでは100ms間でのループ回数を1/100にした値です。 50ms間のメモリアクセス(ROM,RAM,I/O)の回数をカウントします。 切り替えでPutDsipDDを1秒間に何回呼び出せるかの回数を計測します。(fps) -[SHIFT] -[F1] メインメモリにセーブします。次回起動時に自動的に読み込まれます。 -[F2] 現在の設定をF2キーに記憶させます。 -[F3] 現在の設定をF3キーに記憶させます。 -[F4] 現在の設定をF4キーに記憶させます。 -[F5] 現在の設定をF5キーに記憶させます。 -[F6] メインメモリよりロードします。 -[OPTN] 各ウエイトにおける限界周波数を一覧表示します。 -[F4] 設定を初期化します。 -[F5] ROM/RAMの限界周波数およびRAMおリード/ライト限界周波数一覧表示します。 RAMのライト限界周波数はあるところから伸びなくなり頭打ちになりますがそこがSクロック&バスクロックの限界となります。 -[F6] 各ウエイトにおける最大動作周波数を自動的に計測します。 -[VARS] -[F1] register display FRQCR -[F2] register display BCR/WCR 押すたびに切り替わります。 -[F3] (ROM)CS0BCR (RAM)CS2BCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値の初期化します。 -[F4] (ROM)CS0WCR (RAM)CS2WCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値を初期化します。 -[F5] CS5ABCR CS5BBCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値の初期化します。 -[F6] CS5AWCR CS5BWCRのウエイト設定をします。 カーソルキーで選択 -[F1] + -[F2] - -[F4] ウエイト値を初期化します。 -[PRGM] -[F1] CS3BCR CS4BCRレジスタ設定をします。 -[F2] CS3WCR CS4WCRレジスタ設定をします。 -[F3] CS5ABCR CS5BBCRレジスタ設定をします。 -[F4] CS5AWCR CS4BWCRレジスタ設定をします。 -[F5] CS6ABCR CS6BBCRレジスタ設定をします。 -[F6] CS6AWCR CS6BWCRレジスタ設定をします。 -[EXIT] exit -[AC] 画面を初期化します。 -[EXE] ベンチマークが選択されている場合に再度実行します。 -[*] ROMのウエイト値を増やします。 -[/] ROMのウエイト値を減らします。 さらに下げられる場合は、メモリチェックが始まります。 エラーが出た場合はウエイト値は減らせません。 -[+] RAMのリードウエイト値を増やします。 -[-] RAMのリードウエイト値を減らします。 さらに下げられる場合は、メモリチェックが始まります。 エラーが出た場合はウエイト値は減らせません。 -[SHIFT]+[+] RAMのライトウエイト値WWを増やします。 "=R" リードウエイト値と同じです。 -[SHIFT]+[-] RAMのライトウエイト値WWを減らします  "=R" リードウエイト値と同じです。 -[SETUP] 初期設定 ROM計測時の動作マージン設定 0-15%  5% ( 1%以下の設定は危険です。) ウエイト周波数一覧はリセットされません。 RAM計測時の動作マージン設定 0-15%  5% ( 1%以下の設定は危険です。) ウエイト周波数一覧はリセットされません。 PLL周波数最大値設定 800MHz CPU周波数最大値設定 285MHz Shw周波数最大値設定 180MHz Bus周波数最大値設定 134MHz I/O周波数最大値設定 30MHz スタートアップ時のメモリチェック on F1キーを押した場合のyes/no チェック off ウエイトを自動的に下げる on RAM WWを自動的に上げ下げする on ROM IWWを自動的に下げる on PFCを自動的に上げる on シフト無しでFLL表示する off 電池電圧表示 off ------------------------------------------------------------------------------- 最大メモリ動作周波数の自動計測 ------------------------------------------------------------------------------- このツールにおいてはメモリの動作限界を計測することが重要です。 計即時にはまず最初にどのエリア(全体の中の64KB)が一番遅いかを計測します。 その一番遅いエリアで各ウエイト値における限界周波数を計測します。 計測といっても単純なもので、同じアドレスを連続して二度読みして違いがなければOk、 違いがあればNGということにしてあります。 ライト速度の測定は4KBのメモリ領域で読み書きテストを行います。 最初にリード測定をして速度差補正値を取得します。 メモリ速度はUSB電源で動作しているときには2〜3%速くなります。 ので、電池動作時に計測してください。 ------------------------------------------------------------------------------- 注意 ------------------------------------------------------------------------------- USBは130MHz程度以上で認識されなくなります。 これの回避策は今のところ見つけていません。 何か情報お持ちの方いらっしゃいましたら教えていただけると幸いです。 RS232CはI/Oクロックに依存します。通信する場合はI/Oクロックを同じにしてください。 ------------------------------------------------------------------------------- 謝辞 ------------------------------------------------------------------------------- このツールはPover(Ashbad氏作成)ソースを元に拡張して、 PrizmSDK 0.3(Ptune2) CASIO公式SDK1.00 (Ftune2) にて作成されています。 fxReverse project documentation, SuperH-based fx calculators, Cemetech WikiPrizm, 先輩ユーザーの皆様の各種解析結果に感謝いたします。 このツールが皆様のお役に立てれば幸いです。 ------------------------------------------------------------------------------- ライセンス ------------------------------------------------------------------------------- このソフトウエアはフリーソフトウエアです。 ライセンスはGPLv2に準じます。 ------------------------------------------------------------------------------- v1.20 2019.8.31 電池電圧表示値を補正しました。 v1.11a 2017.10.20 メモリテストの設定値を変更しました。(以前のバージョンでメモリテストが上手くいかない場合はこのバージョンをお試しください。) v1.11 2016. 7.31 バージョン表記が1.10のままになっていたのを修正しました。 2016. 7.20 隠しRAM領域もメモリテスト範囲に含めました。 v1.10 2016. 4.24 セットアップにてメモリウエイトマージン設定を変更した場合に計測値がリセットされず再計測が必要なくなりました。 デフォルトのメモリ周波数設定値を変更しました。 v1.02 2015. 6.20 起動時にCPUチェックを行いSH3機の場合は起動しないようにしました。 Ftuneと区別しやすいようにアイコンを少し変えました。 v1.01 2015. 2.28 FLL回路の耐性が低くRAM耐性が高い場合にRAMメモリチェックで止まる不具合を修正しました。 ソースファイルを一部書き直しました。結果、若干ファイルサイズ削減しました。 v1.00b 2014.12.21 CPUベンチマークの値が正しくでなくなっていたのを修正しました。(アライメント調整) RAMライトウエイトでの反転表示の範囲を90%から95%に変更しました。 デフォルトのプリセット値を変更しました。 (F3=>F4 F3=>SH3モデルと同じ設定。) v1.00a 2014.11.27    機能的、動作的な変更は何もありません。 些細なスペル&記述ミスの修正のみです。(^^; v1.00 2014.11.14 初版