初版2004.7.29 最終更新2023.5.26 まりも
CバスSCSIボードをいまさらMS-DOSで使ってみると、その遅さに愕然とすると思います。 それは単にSCSI転送速度が 10MB/sのFast SCSIどまりだからというだけでは ありません。Cバスボード上でのROMのアクセス速度は一般に非常に遅く設計されており、 BIOSコードの実行自体がそれにより遅くなっています。しかしRAM上で動かせば もっと速くなるのです。PC-9801RA以降のPC-9800シリーズでは、ROMの領域に シャドウRAMが存在しており、一部のSCSI専用スロットのアダプタ(PC-9821A-E10) ではシャドウRAMにROMがコピーされているため、動作が速くなっていることが 知られています。しかし一般のSCSIボードではそのような方式はとられていません。
試しに、E10ボードと同様にCバスSCSIアダプタのBIOSをシャドウRAMに移すプログラム "SCSI_RAM"(ダウンロードは本文書の終わりで) を作ってみたところ、BIOSの動作の高速化が確認できました。拙作DOS版 ハードディスクベンチマークテストソフト"HDB98"を使って、本プログラムの 組み込みの有無などを変えて調べてみた結果を掲げておきます。 RAM化すると、とくに細かいディスクアクセスでの速度向上があり、これは体感でもわかります。 SMITボードの場合は高速化ユーティリティが付属していますが、 これと本プログラムは併用でき、さらに高速化することがわかります。 効果の度合いとしては、本プログラムのほうが大きいです。
なお、EMM386を使ってSCSI BIOSをRAM化(movehdbiosオプションをつけるか、 それなりのユーティリティソフトが必要)した場合は、本ソフトはとくに 意味はなくなります。実はこれが最速です。仮想86モードでRAM化した場合が 速い理由は、そこで使われるメモリは1MB以上のアドレスで、リードライトともに キャッシュが効く場所だからです。本プログラムでRAM化した場合は、ROMと同じアドレス を使用していますが、拡張ROM領域のアドレスにはキャッシュが効かない うえに、シャドウRAMへのアクセス速度はメインメモリより遅くなっているようです。 単純に拡張スロット上のROMよりはオンボードのRAMはいくらか速いというだけの高速化です。
ご注意:WindowsではデバイスドライバはRAM上で動作していますし、 BIOSは使用されませんので、BIOSをシャドウRAM化しても、Windowsでのディスクアクセスが高速化することにはなりません。
ハードウェアはすべて同一条件で、本体はPC-9821An、使用ハードディスクは玄人志向YUによるIDE変換ドライブ(IBM IC35L 120GBを32GBクリップ)です。SCSIアダプタはメルコ製 SMIT 方式の IFC-NN BIOS ver. 1.10 です。
★例1 なにもしない場合 Machine name[83]: PC-9821 An(hires) K6-2 333MHz Disk interface : IFC-NN V1.10 ROM BIOS Disk drive name : ATA→SCSI [ SCSI固定ディスク ID #0 A0h 総容量 32253(MB)] Grain size: 32768 16384 8192 4096 2048 1024 512 (B) ------------------------------------------------------------------------ Speed(top): 2340 1880 1340 861 498 270 140 (KB/sec) Speed(end): 2340 1880 1350 862 498 270 140 (KB/sec) Seek time : 1193 points.
★例2 SMIT付属の高速化ソフトを使った場合 Machine name[83]: PC-9821 An(hires) K6-2 333MHz Disk interface : IFC-NN V1.10 FASTSMITのみ使用 Disk drive name : ATA→SCSI [ SCSI固定ディスク ID #0 A0h 総容量 32253(MB)] Grain size: 32768 16384 8192 4096 2048 1024 512 (B) ------------------------------------------------------------------------ Speed(top): 3890 3380 2670 1880 1170 672 357 (KB/sec) Speed(end): 3890 3380 2670 1880 1170 672 357 (KB/sec) Seek time : 853 points.
★例3 本プログラムSCSI_RAMを使った場合 Machine name[83]: PC-9821 An(hires) K6-2 333MHz Disk interface : IFC-NN V1.10 SCSI_RAMによるRAMBIOS化 Disk drive name : ATA→SCSI [ SCSI固定ディスク ID #0 A0h 総容量 32253(MB)] Grain size: 32768 16384 8192 4096 2048 1024 512 (B) ------------------------------------------------------------------------ Speed(top): 3900 3590 3080 2390 1650 1010 560 (KB/sec) Speed(end): 3900 3590 3080 2390 1650 1010 560 (KB/sec) Seek time : 859 points.
★例4 本プログラムとSMIT付属品を併用した場合(最も速い) Machine name[83]: PC-9821 An(hires) K6-2 333MHz Disk interface : IFC-NN V1.10 RAMBIOS by SCSI_RAM and FASTSMIT Disk drive name : [ SCSI固定ディスク ID #0 A0h 総容量 32253(MB)] Grain size: 32768 16384 8192 4096 2048 1024 512 (B) ------------------------------------------------------------------------ Speed(top): 4300 4070 3670 3050 2260 1490 858 (KB/sec) Speed(end): 4300 4070 3670 3050 2260 1490 858 (KB/sec) Seek time : 836 points.
★例5 仮想86モード(EMM386)でBIOSをRAM化した場合 Machine name[83]: PC-9821 An(hires) K6-2 V86 mode Disk interface : IFC-NN V1.10 EMM386 RAMBIOS(4KB) Disk drive name : ATA→SCSI [ SCSI固定ディスク ID #0 A0h 総容量 32253(MB)] Grain size: 32768 16384 8192 4096 2048 1024 512 (B) ------------------------------------------------------------------------ Speed(top): 4340 4170 3830 3300 2550 1750 1030 (KB/sec) Speed(end): 4340 4190 3830 3300 2550 1760 1030 (KB/sec) Seek time : 833 points.
SCSI_RAM.BIN はIPLwareです。別途IPLware.exeを入手して、ハードディスクに組み込んで下さい。IPLwareアプリケーションの組み込み方などは、別途IPLwareのドキュメントを参照してください。ここではこれ以上説明しません。ハイレゾモードで使う場合は、IPLwareはバージョン3.31かそれ以上が必要です。
SCSIアダプタのROMアドレスは、ノーマルモードでは DC000h〜に、ハイレゾモードではEE000h〜に設定してください(これはデフォルトです)。これ以外のアドレスにすると、本プログラムは動作しません。ROMアドレス以外のリソースは、競合が無い限り任意に設定できます。
対応するSCSIアダプタについては、全てを所有しているわけではないのでなんとも言えませんが、基本的に55/92互換のSCSIアダプタのほとんどでSCSI_RAMは動作すると考えられます。2020年9月8日現在、取り消し線部は古い情報となったので削除します。
です。古い製品の正常動作は期待しないほうがよいでしょう。PC-9801-55/L/UやPC-9801-92、およびその互換SCSIアダプタでは使用できず、ハングアップします。バスマスタと呼ばれる転送方式のCバスSCSIアダプタのほとんどでもおそらく使用できません。 バスマスタ世代やそれ以前のSCSIアダプタは、CPUが速いほど動作しない可能性が高いと思われますし、そもそも大容量のハードディスクを繋いだときに誤動作する可能性が高いです。
2018-11-10追記:PC-9801-92およびこれの完全互換品では、ROMバンク切り替わり動作があるため、RAM化はできないと考えられます。
2019-6-3追記:一部の機種では、IDE BIOSが隠れてしまいハングアップしたり、サウンドBIOSが誤って出現するためにPARITY ERRORを引き起こしたりという不具合が発生する可能性があります。これは内蔵SCSIやIDE BIOSの実装方法が機種毎に大きく異なることによるものです。全ての機種を保有しているわけではないので完全な対応はできません。動作確認が取れているのは以下の機種です。
・PC-9801BX3(BA3もたぶんOK)
・PC-9821Xs(Xp,Xe,XnもたぶんOK)
・PC-9821An,Ap3(その他A-mnate全般に動作するはず)
・B-mate,Fellowなどでも動作するようになりました(バージョン1.10から)。
2019-7-8追記:バージョン1.10となり、適用機種が拡大しました。適用でない条件の場合にハングアップしたり、サウンドBIOSが取り消されるなどの問題も解消されているはずで、IPLwareに入れっぱなしとしていてもほとんどの機種では問題ありません。H98では絶対に動作しませんのでH98を使う場合はIPLwareから取り外してください。
2020-3-20追記:バージョン1.11ではH98で「正しく動作回避」されるようにしました。IPLwareに入れっぱなしでH98で使用しても構いません。
2020-9-8追記:バージョン2.00では SCSI BIOS ROMの上位バンク側をRAM化する機構が判明したため、ほとんどの55/92互換のSCSIアダプタに対応となりました。i486アーキテクチャ機では、メモリウィンドウの9D00:0からの4KBに上位バンクのROMデータをコピーしておくと、SCSIアダプタ制御でROMバンク切り替えの要求(I/O CC0hに30h, CC2hに4xh)が来たときに、DC00:0に上位バンク側が出現するという機能があるようです。SCSIボードへの制御なのに98本体が応答するという謎の仕様ですが、よく作られていると思います。
2021-12-30追記:システム共通域の利用でIDE_LBAと併用しやすくしました。本体内蔵のBIOS ROMのいずれかがRAM化されているときに勝手にRAM出現を取り消さないようになるはずです。
2022-10-17追記:SCSI_RAMとE10PATを統合しました。
このプログラムの著作権は主張しておきますが、基本的にフリーソフト ウェアです。各自の責任のもとお使い下さい。なおソースファイルも添付されて います。
←元に戻る