遠すぎた南橋

資源ヲ確認セヨ

 まずは,テキ(SB 互換の PCI カード)についての解説から始めます. これは特に B-right/V に限った話ではありません.

 SoundBlaster は,制御のために,次の 3 つの資源を必要とします(角カッコ [] 内は一般的なデフォルト値).

 当然ながら,B-right/V のサウンドドライバも,これらの資源を通してサウンドカードを制御しています

 PCI のカードで SB 互換を実現しようとした場合,I/O 空間については問題ないのですが, IRQ と DMA に問題があります.

割込ミヲ占有セヨ

 いわゆる「レガシー」の時代の割込みは,デバイス 1 個に 1 つずつ,固定でわりあてていました. それに対し PCI のカードの場合は,プラグ&プレイで起動ごとにわりあてを決定しているので, 他のカードの存在によって変化しますし,割込み番号も共有が基本です.

 SB 互換を PCI な板で実現するためには,固定の割り込み番号(できれば 5 番) を占有する必要があります.

DMA ヲ接続セヨ

DMA とは

 DMA については,PC の設定項目として時々耳にしていても内容は知らない, というひとも多いかと思いますので簡単な説明からはじめます.

 計算機のバスでは,通常,CPU と入出力機器のあいだ,あるいは, CPU とメモリのあいだで読み書きがなされます.しかし,大量のデータのやりとりや, 音声・動画などのストリームを扱う場合,CPU を経由せず,直接, 入出力機器とメモリのあいだでデータをやりとりすると効率が非常に良くなることがあります.

 そこで,CPU からコマンドを受け取って, 入出力機器とメモリのあいだで直接データをやりとりさせるプロセッサ ( DMA コントローラと呼ばれます)を使ってデータを転送するようにします. このような機構を DMA( Direct Memory Access )と呼びます.

 また DMA 転送で実現される想像上のデータストリームを指して, チャネルという表現を使います.しばしば,番号付けして呼ばれます. 例えば,「 PC のフロッピディスクドライブは DMA チャネル #2 を使用する」 というように言われます.

SB Pro / 16 と DMA

 SoundBlaster も,PC の DMA を利用する設計になっていて, デフォルトの設定では 8 ビット転送のためにチャネル #1 を, 16 ビット転送のためにチャネル #5 を( 16 ビット転送は SB 16 のみで SB Pro は 8 ビットのみ)使用します.

 PCI バスの機器では,基本的にバスマスタによる転送 (周辺機器がバスをのっとってメモリとやりとりする)を使用するので, SoundBlaster が使っていた旧来の PC の DMA(以下,レガシー DMA と呼びます) でのデータのやりとりができません.

 SB 互換を PCI な板で実現するためには,レガシー DMA についても, なんとかする必要があります.

攻略概観

 以上のような理由により,SB 互換が重視されるあいだはずっと, サウンドカードの PCI への移行がなかなかおこなわれず, 結果として悪名高き ISA PnP なカードがはびこる結果となったわけです.

 この事態を打開するべく Creative 社は,"SB-Link" というインタフェースを提唱しました.(「 PC Watch先週のキーワード 第 40 回」の記事等を参照)

 以下,具体的に互換音源用チップ YMF754 を参考にしながら説明します. http://www.yamaha.co.jp/english/product/lsi/us/products/pcaudio.htmlからデータシートを取ってきて適宜参照してください.なお,詳細な理由は後述しますが, 実際に音を鳴らすにはこのデータシートだけでは絶対的に情報不足です.

IRQ

Legacy interrupt (Legacy IRQ)

 これは,SB-Link には規定がありません.チップの, それ専用に用意された足を直接サウスブリッジの割込み入力につないでおき, 割込みを発生させる時は直接レガシーインタフェースの割込みを発生させる, という戦略です.

 この戦略をとるためには,別の ISA ボードを用意して ISA バス経由で割込み信号を繋ぐか, ノート PC などのようなマザーボードにオンボードの音源で最初からこれを使うように設計されている必要があります.

 当然ながら,レガシーフリー PC に PCI な板を挿して音を鳴らそうと考えているのであれば, この戦略は選択不可能です.

 逆に,音源内蔵のマザーボードやノート PC 等で,BIOS の設定に音源の SB 互換機能に関する設定がある場合,これの使用に関する設定である可能性があります.

PCI 割込み

 SB 互換機能からの割込みでも,PCI で当該カードに割当てられた割込みを使う, という戦略です.YMF754 のデータシートでは INTA (INTA#) という表現が使われています.

 互換機能以外の部分と同居させることを考えた場合,割込みハンドラ側の対応が面倒になりますが, SB 互換機能だけを使うならば,他の PCI カードに同じ割込み番号が割り当てられないようにすれば, SB 互換の割込みとして使えます.

 BIOS の設定で,うまく割込みを設定できるならば(できれば 5 番に), 非常に簡単にことが済みます.

 逆に,BIOS が 「使エネー」 だと,どうにもなりません.

Serialized IRQ

 SB-Link に規定がある IRQ の接続方法で, SB-Link の接続を使ってチップセットと通信し,割込みを起こさせます.

 音源カードとチップセット及びマザーボードが対応していれば, コネクタを接続することで使用可能にできます. 内蔵タイプの音源でも,(レガシー式ではなく)こちらを使っている可能性もあります.

DMA

PC/PCI

 SB-Link に規定がある DMA の接続方式で, SB-Link の接続を使って DMA の制御信号をチップセットとやりとりします.

 音源カードとチップセット及びマザーボードが対応していれば, コネクタを接続することで使用可能にできます.

Distributed DMA

 SB-Link に規定がある DMA の接続方式ですが, 物理的に接続するものではありません.

 レガシー DMA と協調して動作するための DMA コントローラをカード側が持ち, チップセット側にそのコントローラのアドレスを設定してやって, チップセット内のレガシー DMA に対して操作があったら, チップセットがカード側のコントローラにも制御信号を送る, という感じのものらしいのです(この説明は,正確ではないかもしれません).

 チップセットが対応していれば使用可能ですが, チップセットごとに設定方法が異なりますので,ドライバはいちいち対応しないといけません.

 省略して "D-DMA" とか "DDMA" と書かれていることもあります.

Other DMA BlackMagic

 IRQ のほうは,PCI 割込みを固定という戦略で大抵の場合なんとかなるでしょうが, DMA のほうは未対応のハードウェアだと難しいように思われます.

 しかし,私のところの YMF754 搭載カードでの実験では(YMF-754PCI)"reserved" となっているパターンに 設定したところ,うまく動いてしまいました(情報源はこのへんです).

 YAMAHA な石の他に,ALS4000 という SB 互換をウリにした石もあるのですが (嬉しいことにこちらは SB 16 互換です), The ALS4000 Maniacによると,ALS4000 では,ISA エミュレーション, ライトバック,ライトスヌープ等のワザで DMA ができるようで, おそらく動作を保証しかねるので YMF のほうではそのテの設定は隠し設定に されているものとおもわれます.(注:この件に関しては決して YAMAHA (株) に対して迷惑をかけるようなことはしないよう,特にお願いします)

 非共有型のキャッシュメモリを持つマルチプロセッサのシステムで, キャッシュ先が他のプロセッサによって更新されたことを,バスを盗み見(snoop) て検出するものがあり(ライトスルー型という前提), スヌーピーキャッシュといいます.恐らくそんな感じの機構なんだろうと思われます.

(追加予定)

余談 1 ・ PCMCIA IF

 PCMCIA インタフェースカードも,特に IRQ についてはこれと同様の問題があり, ISA と PCI それぞれ 1 枚ずつ,というインタフェースや,Serialized IRQ を使うもの等がありました.

余談 2 ・ MPU って何 ?

 MPU と聞くと,X68k 狂もといモトローラ派のひとから, マイクロプロセッシングユニットだ,といわれそうですが,SoundBlaster 関連で MPU と言った場合,ローランド製の MIDI インタフェース MPU-401 のことです(NEC PC-9801 用も IBM-PC 用も,MPU-401 という型番でした)

 SoundBlaster 16 以降いくつかのモデルに,MPU-401 互換インタフェースが搭載されていたため,SB 互換機能として MPU-401 互換機能も用意されている場合があります.