PC-9801-92 / NEC


インターフェイス:SCSI-2 (50pin SE 10MB/s)

転送モード:DMA/FIFO

Bus:C Bus (16bit)

コントローラ:WD33C93BJM / Western Digital + 148714-002 SAGAT 777 / NEC

対応機種:PC-9800シリーズ

動作確認マシン:PC-9821As2/U8W


 NEC純正としては第三世代のCバス対応SCSIボード。

 時期的にはPC-9821Mate A初代およびPC-9801FELLOWと同期の製品で、従ってPnP非対応である。

 これはPC-9801-55の後継に位置付けられており、55系互換モードを備えるなどPC側から見た互換性に対する配慮は可能な限り払われているが、ネイティブモードは55系と大幅にかけ離れた仕様で、これ以後55互換に対して92互換という言葉を生んだ程の変革を伴ってターニングポイントとなった重要なボードである。

 先行するPC-H98用PC-H98-B12ボードやPC-H98 Model 105/U105の内蔵SCSIインターフェイスで既に実施されていたが、このボードではCバス用純正SCSIボードとしては初めて、「55パラメータ」と俗称される理不尽なディスクパラメータ(注1)が漸くサードパーティ製品並の常識的な容量計算法に切り替わる(注2)という非常に重要な仕様変更が実施されており、ここで制定された「92パラメータ」と便宜上呼ばれる新ディスクパラメータは98最後の新規公式サポートOSとなったWindows 2000まで変更無しに利用され続ける事となった。

 性能的には、98本体内蔵の低速なDMAコントローラに依存するDMA転送に加え、CPUが直接転送に関わるFIFO転送が漸く追加されたお陰でDMA転送オンリーの55系に比べて格段の高速化を実現したが、この頃市場のトレンドは既に次なるバスマスタ転送にフォーカスしつつあり、そのソフト/ハード仕様の確定に果たした役割の大きさにもかかわらず市場での売れ行きは思わしくなかった様で、その知名度の高さの割にお目にかかる機会の少ないボードであった。

 NESAバス対応のPC-H98-B12ではより高速なバスマスタ転送が実装されていたのに、Cバス対応のこのボードでFIFO転送に留められたのは、他のボードの項でも記したが、Cバスの信号線でサポートされるメモリアドレス領域が16MB分に限定される為、これを上回るアドレス空間にボード側DMAコントローラが直接アクセスする手段が存在せず、一旦アンダー16MB領域に転送してからCPUが再度目的のオーバー16MB空間に転送するダブルバッファリングという対策を講じる必要があり、これを行うとパフォーマンスが低下する(注3)為であった。

 この16MBの壁は以後のCバスSCSIボードの高速化にあたって大きな障害となり、最終的にアンダー16MB空間にメモリマップドIO領域を確保して高速なCPUに直接転送させる(注4)SMIT転送という解が得られるまで、各社を悩ませる事となった。

 これは以後のバスマスタ転送対応ボードやSMIT対応ボード群の性能を見慣れた目には凡庸な性能にしか見えないが、流石に安定度や各種OSでの互換性は抜群で、純正品に求められる資質を満遍なく備えたボードであった。

 もっとも、同時期の姉妹モデルであるPC-9821A-E10ならばその固有性故に利用する理由は幾らでも見つかるのに対し、汎用なるが故にほぼ全ての点で上回るSMIT/バスマスタ転送対応ボードが存在するCバス汎用SCSIボード市場においては、この製品の利用価値は皆無と言って良い所まで低下しているのだが・・・。


 (注1):初期のNEC製HDDの挙動に最適化された仕様であった。具体的には、SCSI HDDの容量計算の方法の1つとしてMODE SENCEコマンドを発行し、セクタ長・シリンダ数・ヘッド数・シリンダ毎のセクタ数というHDDの容量を示す4要素を取得する方法があるのだが、初期のNEC製SCSI HDDではセクタ数について何故か交代セクタを含まない値を返す様になっていて実際に使える容量が直に取得出来る事から、PC-9801-55/55U/55L・PC-9801FA-02・PC-H98-B03等ではMODE SENCEで返されたパラメータを何も考えずにそのままディスクパラメータとして用いていた。ところが、NEC以外の大半のメーカーが製造するHDDではMODE SENCEコマンドに対しては交代セクタを含む値を返す為、この種のドライブをPC-9801-55系ボードに接続するとあり得ない容量を確保しようとしてしまい、当然ながら正常動作しない(最悪データ破壊の危険性すらある)という事になる。NECがPC-9801-55で囂々たる非難を浴びつつもINQUIRY時にHDDのベンダチェックを実施する(目的が危険回避であった為、問題の生じないHDD以外は一切ベンダチェックしていない。この点はOSのインストーラやフォーマッタ等でHDDのみならずCD-ROMドライブまでかなり厳しくチェックしていたAppleとは違う事を強調しておこう)BIOSの搭載を強行したのは正にこの問題が原因で、望むと望まざるとにかかわらず、当時のNECにはベンダチェックを行う以外の選択肢は無かった訳である。無論、根本的にはSASI時代のままMODE SENCEで交代セクタ数を無視する様なドライブを作った(逆に言えばこの辺についてSASI時代と同じ挙動を示すので、ソフトウェア互換性維持は楽であったようだが)ハードディスク部門の方にこそ深刻な問題があったとも言えるが、SCSI HDD開発開始当時はSCSI規格自体まだSCSI-2はおろかその基本となったCCS(Common Command Set:共通コマンドセット)も存在せず、SASI時代以来のベンダユニークコマンドを許容していたから、一概にHDD製造部門を責める訳にも行くまい。余談だが、この種のベンダチェックはAppleも行っていて、特に理由もないままにPower Macintosh 8600/9600シリーズまでずっと継続していた事を考えると、一人NECだけが責められるというのもおかしな話ではある。

 (注2):セクタ長512byte、8ヘッド、32セクタとパラメータを固定した上で、READ CAPACITYコマンド(余談だが、初期のNEC製SCSI HDDはこのコマンドに対応していない。容量計算でMODE SENCEを使わねばならなかった理由の1つがこれである)を発行してドライブから返される論理ブロック数から逆算で正しいシリンダ数を取得する。ちなみに、このパラメータが登場するまでの他社製独自パラメータも同様の方法で容量取得していたが、固定される各パラメータの値が各社間で不統一であった為、サードパーティ各社間でも相互互換性が無かった。なお、このパラメータの採用によって諸悪の根元となった初期のNEC製HDDは新パラメータでの認識が当然不可能となった訳だが、対策として55ボードと同様に起動時にベンダチェックを実施し、その結果当該対象ドライブであると判別された場合にのみ自動的にそのドライブを55パラメータで取り扱う機能が実装されている。つまり、このボードでは本質的にはベンダチェックそのものは廃止されていないのである。ちなみにCバスSCSIボードでよく見られるHDD容量の「8GBの壁」はこの92パラメータで許容される最大値(セクタ長512バイト*65536シリンダ*8ヘッド*32セクタ=8589934592byte=8GB。ただし厳密には8GB丁度に指定すると桁溢れが起きる(容量が0MBと見なされてしまう様だ)為、例えばDOSでのフォーマット時には8191MBに指定しないと正常動作しない)に由来し、PCIバス対応SCSIカードの「32GBの壁」も同様の理由(こちらは8GBを超える容量の場合は自動判別でシリンダ毎のセクタ数を128セクタと見なす様になっている)によるものである。

 (注3):もっとも、それでもCPUパワーさえ充分ならば16MB以上メモリを搭載していても純然たるFIFO転送よりは余程高速なのだが。

 (注4):それ故にバスマスタ転送と違いメモリ搭載量に転送性能が左右されないという大きな特徴がある。但し、その代償として転送時にかなりのCPUパワーを消費する為、486以上のCPU、特にPentium以上の高速なCPUの下での利用が推奨されている。


インデックス

一応、当ページの内容の無断転載等を禁止します