ITmedia NEWS >

VL-Bus登場前夜 GUIの要求と高精細ビデオカードの台頭“PC”あるいは“Personal Computer”と呼ばれるもの、その変遷を辿る(3/4 ページ)

» 2021年03月29日 13時34分 公開
[大原雄介ITmedia]

サードパーティー製ビデオカードの誕生

 例えばTseng Labsが1983年にリリースした「UltraPak Short」(のちに「ET-1000」に改称された)は132桁×44行のキャラクター表示が可能だったし、1987年にはXGA(1024×768ピクセル)で256色表示可能な「ET3000」も投入されている。この辺りから、アプリケーション(有名なところでは「AutoCAD」「Lotus 1-2-3」「dBASE II」など)は自前でグラフィックライブラリを抱えてグラフィック表示が可能になっており、さまざまなビデオカードがこうしたアプリケーションで自社のグラフィック表示をフルに可能にするためのドライバを提供するようになってきていた。この結果として、1980年台末から急速に「新興ビデオカードベンダーの乱立と新製品の大量発生」が沸き起こることになる。

 この頃から、急に「PC互換機」に対する性能の要求が厳しくなってきた。それまでは、端的にいえばCPUが高速であれば良く、80386を搭載していれば高速であって、できれば80386DX-33を搭載していれば完璧という程度の話で済んでいたのが、ビデオカードをより高速に駆動させる(正確にいえば、ビデオカードとメモリの間の転送性能を引き上げる)ことが要求されるようになってきた。

 この話が出てきたのは、主にビデオカードベンダーからである。まだビデオカードの上にアクセラレータを搭載するには至っておらず、DOSアプリケーションからビデオカード上のフレームバッファに表示イメージをひたすら書き込んでいくという形で利用されていたから、ここを高速化できればより高速な表示が可能になる。

 特にビデオカード側が1MBのメモリを搭載して、1024×768ピクセルの256色表示とか、1.25MBのメモリを積んで1280×960ピクセルの256色表示とかをできるようにするとなると、1画面の更新に0.75MBとか1.2MB分のデータを書き込む必要がある。これを例えば30Hz(正確にいえば当時のことだから60Hzのインタレース表示)で行おうとすると、22.5MB/secとか36MB/secとかの転送速度を必要とする計算だ。

 ところがISA Busは8.33MHz駆動の16bit幅だから、バス調停のオーバーヘッドとか無視した理論上のピーク性能でも16.7MB/sec。ところが実際には4〜5MB/secそこそこの転送速度でしかなく、ここがボトルネックになっていくことが明白であった。当然ビデオカードベンダーからすれば、より高速なビデオカードを投入すればそれだけ差別化ができるわけで、結果としてより高速なバスを求めることになった。

 実はこうした動きの先鞭をつけたのはAdaptecである。SCSIコントローラーベンダーとして有名な同社、それまではUNIXワークステーション向けのSCSIコントローラーやMacintosh向けのSCSIデバイス用チップ、あるいはSASIとSCSIの双方向変換ブリッジなどを作っていた同社が1987年に最初に投入したのが「AHA-1540/1542」である。

 もっと後の世代の「AHA-1542B/C/CF」とかになるとカスタムASICによりワンチップ化されてすっきりした構造になっているが、初代はディスクリートチップの山で、おまけにコントローラーとして8085まで載っているというフルサイズのカードである(写真5、写真6)。

photo 写真5:SCSIのプロトコルハンドリングは手前のAIC-62500Lというチップで行うが、DMA BusMasterの機能は8085とディスクリートチップで行っていた模様。出典はRecycledGoods
photo 写真6:こちらはAHA-1540のユーザーマニュアルより。基板上のジャンパー配置が分かる。完全にフルサイズのカードである

 このカードの特徴は、Bus Master DMAに対応していたことだ。ISA BusではもちろんDMAが利用可能で、使う場合はまずデバイスがマザーボード上のDMA Controller(IBM PCやIBM PC/ATだとi8057がその役割を果たしていた)に対してDMAリクエストを出し、これを受け取ったDMA Controllerがメモリとデバイスの間のDMA転送をハンドリングする。

 ところがこのi8057の処理がそれほど早くなく、それもあってISA Busの実効転送速度が4〜5MB/secに留まっていた。AHA-1540は自身がDMA Bus Materの機能を持っており(ここがISA BusというかAT Busの面白いところで、Bus Masterが複数存在できた)、自分自身でDMAの制御を行ってメモリへのDMA転送が可能であった。これを利用することで、実効転送速度を6〜7MB/secに引き上げる事が可能だったというわけだ(※1)。

※1:ここまでやってもISA BusでDMAを行う際のオーバーヘッドがシャレにならないため、CPUを高速化したi486DX2-66MHzとかを使う場合と、PIOモードでの転送しかサポートしていない(代わりにオーバーヘッドが少ない)AHA-1520の方が高速だったりしたから話が複雑なのだが

 この「カードが自前でBus Master機能を搭載する」という手法はちょっと有効で、一部ビデオカードの中にはこれを実装したものもある。ただSCSIカードと異なり、当時はまだCPUから直接ISAバス経由でビデオカード上のVRAMを操作する(※2)のが一般的だったので、DMAを利用した/できたビデオカードはごく一部でしかなかった。

※2:もともとISA BusというかIBM PC〜IBM PC/ATではVRAMのマッピングエリアとしてA0000H〜BFFFHの256KB分しか確保していなかったため、256KBを超えるVRAMは直接扱えなかった。このため通常は先頭64KB分の中にコントロールレジスターを設け、続く64KBをVRAMのMapping Windowとした。そしてコントロールレジスターを操作して、VRAMのMapping Windowが参照する先を変えながら値を書き込むという面倒くさい操作が必要になった。これもあって、DMAで一気に書き込むという手法はビデオカードでは一般的ではなかった。ちなみに「なぜ128KBではなく64KBか?」というと、8086は20bitアドレスを16bitのセグメント+16bitのオフセットとして表現する関係で、64KB以内に収めればオフセットを変えるだけで済む(これを超えるとセグメントも変更しないといけない)という制約に起因する

 それでも搭載するVRAMのアクセス速度を引き上げて、レイテンシ最小でアクセス可能にしたことで性能を引き上げたTseng LabsのET-4000のような製品もあったし、逆に当時はまだ一般的ではなかったアクセラレーター機能を搭載することでしのごうとしたメーカーもあった。S3の「86C911」とか、Weitekの「P9000」などがその代表例だ。両社のカードは、Microsoftが1990年にWindows 3.0をリリースしたことで急速にニーズが高まることになった。

Copyright © ITmedia, Inc. All Rights Reserved.