Cyrix486用キャッシュ状態表示、ならびにIPLware版キャッシュユーティリティ

CX486Display 2.20

Copyright (C) 2024 まりも

1.このプログラムの目的

  80286/386搭載機では CYRIX 486DLC,SLC および SRX2,DRx2 を直接載せ換え、あるいはこれらを使ったCPUアクセラレータに載せ替えていることがあります。サードパーティ製品では何らかのキャッシュユーティリティも付属しています。しかしどのような設定になっているのかがよく分からなかったり、そもそもアクセラレータ製品の場合、キャッシュ制御をどこまでハードウェアで行っているのか不明な場合があります。またハイレゾリューションモードでキャッシュ禁止領域の設定が適切に為されているのか不明でもあります。

 そこでこれらのCYRIX製386互換 CPUのキャッシュ関連レジスタの内容をとにかく全部表示しようというのが、本プログラムです。

2.使い方

  別のキャッシュユーティリティがインストールされそれが実行された後の段階で、DOSでコマンドラインから CX486D.EXE を実行してください。仮想86モード下でも一応動作します。ただしMELWARE付属のMELEMM.386などでは情報が取得できずに 不正な内容で表示されるなど、動作可能なものは全てではありません。

3.表示内容

 なんらかのキャッシュユーティリティ実行後は例えばこのような表示になります、お使いのCPUアクセラレータ、キャッシュユーティリティの設定により異なります。まさにそこを調べたいというわけです。


------------------------------------------
 Cyrix486系 CPUキャッシュの状態表示 Ver. 2.20  Copyright(C) 2024 まりも 
    CCR1,CCR0の設定
    CCR1  0   RPLSET/RPLVAL# ピン 無効  
    bit7  0   SUSP#ピン無効
    bit2  0   A20MASK# ピン 無効  
    bit3  0   KEN# ピン 無効  
    bit4  0   FLUSH# ピン 無効  
  bit5  1   HOLD ステートでフラッシュする(安全だが遅くなる)
    bit6  0   キャッシュ方式 2-way associative  
    bit0  0   1MB空間毎の最初の64KBをキャッシュ無効にしない
    bit1  0   基本的に 640KB-1MB キャッシュ有効  
    Non cache regionの設定
    NCR1 : 00080000 , size 256KB (注)バンク/メモリウィンドウエリア,VRAM前半
    NCR2 : 000C0000 , size 128KB (注)VRAM後半と拡張BIOS域はキャッシュ禁止
    NCR3 : 000E0000 , size 32KB  (注)16色用VRAM はキャッシュ禁止
    NCR4 : 000F8000 , size 32KB  (注)SYSTEM BIOSの後半はキャッシュ禁止  
------------------------------------------
キャッシュユーティリティ無しでの起動、あるいはCPUリセット後には、
    NCR1 : 00000000 , 4GB(つまり全域でキャッシュ無効)
と表示されます。このとき他の項目は表示が何であっても全て無効となっている 状態にありますのでご注意ください。

 とくに注意する必要があるのは、

    bit5  1   HOLD ステートでフラッシュする(安全だが遅くなる) 

の項目です。これが

    bit5  0   HOLD ステートでフラッシュしない  

となっているときは要注意です。 ディスク(FD,HD)の読み書きではDMA転送が発生しますが、「HOLD ステートでフラッシュしない」のときはDMA転送のたびにCPUとの間でデータの不整合が生じ、最悪の場合ディスクのデータがおかしくなります。ただし付属のCX486IPLを実行後には、

   bit5  0   HOLD ステートでフラッシュしない      ※ CX486IPL によるDISK割込みフック済み
のように DISK割込みフック済み という情報が追加されます。いっぽう
「HOLD ステートでフラッシュする(安全だが遅くなる) 」

はその通りなのですが、動作が遅くなり、ほとんどキャッシュを機能させていないに等しくなってしまいます。

 このため各メーカのキャッシュドライバでは DISK BIOSに介入してディスク動作を検出し、その都度ソフト的にキャッシュを捨てるということを行っています。つまり、「HOLD ステートでフラッシュしない」はDISK BIOSまたは DISK関連I/O への監視がないと成立しないというわけです。

 なおハイレゾリューションモード(事実上PC-98RLのみ)では NCR1〜NCR4はノーマルモード時と異なるのが正しいと思われます。例えばCX486IPLをIPLwareで実行済みの場合、下記のような表示となります。


------------------------------------------
    Non cache regionの設定
    NCR1 : 00080000 , size 256KB    (注)08..0Bメモリウィンドウはキャッシュ禁止
    NCR2 : 000C0000 , size 128KB    (注)G-VRAMはキャッシュ禁止
    NCR3 : 000E0000 , size 128KB    (注)T-GVRAM,拡張BIOS域,SYSTEM BIOSはキャッシュ禁止
    NCR4 : 00100000 , size 256KB    (注)メモリウィンドウに投影される領域はキャッシュ禁止
ひょっとすると 次のようにキャッシュ無効領域を1つにまとめている可能性もあります。安全寄りの設定ですがDOSのcommand.comやBIOSの動作が遅くなるでしょう。

    Non cache regionの設定
    NCR1 : 00080000 , size 512KB
    NCR2 :   ---    , 設定されていません
    NCR3 :   ---    , 設定されていません
    NCR4 :   ---    , 設定されていません
------------------------------------------

4.そのほか

 CX486IPL.COM (バージョン1.20)というプログラムも添付しています。各社、各製作者によるキャッシュユーティリティがない場合や、IPLwareとして使いたいという場合に試してみてください。DOS起動後の本来のキャッシュユーティリティの動作やEMMの動作に影響を与える可能性もあります。CX486IPL.COM では DISK BIOSへの介入(フック)を行い、キャッシュを破棄するようにしていますので、「HOLD ステートでフラッシュしない」のほうに設定が可能となっています。

 詳しいことは CX486IPL.TXT をお読みください。なおCPUアクセラレータ製品では、一般にそれに付属するユーティリティを使うべきですが、IPLwareであることでこれまでにない使い方ができると思います。

5.免責事項

 このソフトウェアはフリーソフトウェアです。自由に使っていただいて構いませんが、作者は、このプログラムの動作結果や影響に対して、一切責任は負いません。著作権は作者である「まりも」が保有するものとします。不特定多数がダウンロードできる場所への転載はお断りします。連絡先メールアドレスは、ホームページ上に記載してあります。

改版履歴

2024-05-18 1.90 コンソール画面表示の改良、適用機種判定法の改良

2024-05-20 2.00 適用機種判定法の改良、ソースファイルの構成の変更

2024-05-25 2.10 CX486IPL 1.10 ハイレゾモード時の不具合を回避,EMS対応

2024-10-06 2.20 CX486IPLのNCRの設定が誤っていたバグと説明の修正

まりも  (連絡先メールアドレスはホームページ上で)

[戻る]