108.
ビデオカード
私はある年齢あたりから、「自分の中でのポリシーの矛盾」というのを気にするようになった。片方ではこんな事をしつつ、もう片方ではそれと反するこんな事をしているという、自分の中での行動の矛盾、みたいな。
このマイコンピュータライフでは、ある程度統一した用語として、マザーボードに挿して画像出力するための周辺機器を、「ビデオカード」と書いている。ただ、この用語は、非常に表記揺れがある。前半は「ビデオ」「グラフィック」「ディスプレイ」の中から選ばれ、後半は「カード」「ボード」から選ばれる事が多い。よって、「ビデオカード」の他に、「グラフィックボード」「ディスプレイカード」「グラフィックカード」のような言い方もある。また、今はあまり使われないが、「アクセラレータ」という用語もあった。
で、ポリシーの矛盾と言うのは、フルで呼ぶ時は「ビデオカード」と書くのに、その略語としては私はいつも「グラボ」を採用している。「ビデカ」ではない。略称としてグラボを使うのであれば、フルで呼ぶ時はグラフィックボードと言えばいいものを、なぜかビデオカードで統一してしまっている。なんかこのへんが自分でも結構もどかしい。
で、私はi845Gという統合型チップセットを使ったマザーを使い、ビデオカードは買わないという選択をしたが、DirectXの時に取り上げた通り、仕事&プライベートで、Windowsのゲームを自作し始めた。そうなると、やはり描画性能が足りないのが気になるようになり、結局ビデオカードを購入した。
私が購入したのは、NVIDIAの、GeForce FX5700Ultraというチップを積んだカード(WinFast A360 Ultra TDH)だ。いわゆるGeForceFX世代のもので、ミドルレンジの製品だと見なされている奴かな。どうせハイエンドは要らないし。
ビデオカードの歴史は案外古く、IBM-PC/ATの最初からある。このマシンは、表示機能を外部に依存していた。これは非常に優れた設計だった。もっとも、他のマシンも、例えばVRAM拡張であるとかを施して、外部出力を拡張ボードから出すようにできるものもあったが、たいていはPC本体に表示機能が内包されていた。
この、最初期にPC/ATに搭載されたカードが、CGA(Color Graphics Adaptor)と呼ばれていた。640x200/2色か、320x200/4色のモードを選べたらしい。以後、EGA、PGAなどと来て、VGAとなったので、今でも解像度の基準を○○GAと表示するのは、ここから来ている(ただし、VGA以降は、AはAdaptorの頭文字ではなく、Arrayの頭文字となっている。それ自体が機械というよりも、表示規格になってきたからだろう)。
640x480/16色というVGAの時代は長く続いたが、DOSでももっと高品質なグラフィックを見たい、特にゲームユーザの要望や、あるいはWindowsの登場などによって、更に上の規格が求められるようになってきた。例えば800x600のSVGA、1024x768のXGAなどである。
また、この頃になると、ボードが負う機能は、単純に画面出力に留まらなくなってきた。例えば、線を引くとか、円を描くとかいう特定の表示機能を受け持ち、高速化したりする。それを使わない場合はCPUを使う事になるので、CPUより描画が早ければ、高速化となる。更には本体メモリとVRAMとのデータ転送や、3D表示時の頂点変換、動画再生支援なども行うようになった。私が持っていたPC-486MUも、CirrusLogic社のCL-GD5428というボードが載っていて、ある程度描画支援をしていたようだ。
このように、出力機能だけでなく、その前段階を高速化するところまで踏み込んだボードを、「グラフィックアクセラレータ」などと呼んでいた。また、そのためにはより高度なプロセッサが必要で、それらはPC本体のプロセッサをCPUと呼ぶのに対し、GPUと呼ばれるようになった。
現在では、基本的にはビデオカードは必然的にアクセラレータの役割を負っている。あまりに普遍的になったので、もはやアクセラレータという用語はあまり使われていない。
Windows95が出て、3D対応カードが出てきた前後の、代表的なカードまたはグラフィックチップを並べてみよう。
メーカー | カード/チップ名 | 発売年 |
Matrox | Millennium | 1995 |
S3 | ViRGE | 1995 |
ATi | 3D Rage | 1995 |
3dfx | Voodoo | 1997 |
NVIDIA | RIVA | 1997 |
他にも、VideoLogicのPowerVRや、RenditionのVeriteなど、有象無象がいっぱいあった。このへんは、なんか昔のビデオカードをいっぱい持っている人のサイトとかを調べて抜き出してみた。
「カードまたはグラフィックチップ」という微妙な書き方をしているのは、少し性質の違いがある。例えば上記の表では、3D RageやVoodooやRIVAは、グラフィックチップだ。これらは、チップメーカーが、各ベンダーに販売している。つまり、例えばRIVAというチップが載ったビデオカードは、NVIDIA自身も発売するけども、他のカードベンダーも発売している、という形になる。カノープスや、3DBlasterのCreativeLabsなどがそうだ。
あと、上記に書いたカードのうち、MatroxのMillenniumのみ、2D向けのカードで、3D用の機能がない(本当はちょっとあるらしい)。他は一応3D向け機能を持っている。
私の見た感じ、Windows3.1時代の、まだまだ2Dのみだった頃は、MatroxとS3が強かったかなー、という気がしている。
この時代は、まだモニタ出力がアナログだった。そのため、D/A変換の品質で、発色等も違ってきたし、また回路全体の設計によって、ノイズの有無が変わった。なので、泥臭い話ではあるが、回路の設計が丁寧なところが、高画質なグラフィック、という事でもあった。Matroxとかはそのへんが強かったのかな、と思っている。だがこれらもデジタル出力になってくると、それほど関係がなくなってくる。
その後3Dの需要が高まってくると、3dfxのVoodooが強くなってきた。特に、3D描画用のSDKとして、当時まだOpenGLやDirectXが汎用かつ貧弱だった頃に、GlideというAPIライブラリを開発した。このように独自のAPIを持つ事で、例えばVoodooチップに特殊な命令セット、仕組みを搭載したとしても、「ドライバで吸収」以上のやり方で最適化でき、例えば他社カードとDirectXのような組み合わせより圧倒的な表示性能を実現した。
しかし、Voodooはチップの供給をやめ、自社ほぼ独占でカード開発・販売までやるようになり、他カードベンダーは皆NVIDIAやATiに乗り換えてしまった。
その後は、DirectXとそれに対応したビデオカードが進化し、徐々に機能を強化していったのに対し、3dfx社はそのスピードでビデオカードとGlideの強化をしていけなかった。
そうやってやがてVoodooは没落してゆき、最終的に3dfx社はNVIDIAに買収された。3dfxの開発者は取り込まれ、その技術はNVIDIAのカードに搭載されていった。私の買ったGeForceFX世代のチップは、その3dfxのメンバーが開発したものらしい(だからFXとつく)。
やがてS3も消滅し、GPUの供給元としては、NVIDIAとATiがほぼ2強のような状態になり、またその両社が激しく性能アップしていった。NVIDIAはRIVA、RIVATNTシリーズのあと、GeForceシリーズを出した。ATiは3D Rageの後RADEONを出した。不思議な事に、両社ともモデル名の変遷はここで止まり、その後ずっと、2016年現在でも、GeForceシリーズとRADEONシリーズが販売されている。
その後は一貫して、ハイエンド市場は、3D性能を際限なく上げていった。頂点変換などの3Dの基本的な処理性能は当然の事、それより踏み込んだ部分まで、加速的に向上していった。これらの一番の用途は、もちろんゲームである。3Dの、特にFPSなどのゲームで速度と描画性能が求められるので、そこで競うように性能が上がっていった。
ハイエンドがそのように性能向上するに従い、ミドルクラスのビデオカードや、あるいはCPUやマザーのチップセットと統合されたグラフィックチップも、描画性能は向上していった。
しかし、例えば3Dゲームをやらない大半の人たちは、それだけの能力がチップに備わっていても、全く使わないケースが多かった。
その余剰パワーを遊ばせておくのももったいないので、いくつか使い道が考えられた。一つは、無理やり基本オペレーションに組み込む事で、Windows Vista/7のAeroという描画テーマでは、3Dの機能がいくつか用いられた。また、もっと根本的に、GPGPUと言って、GPUのパワーを汎用的に使う技術が考えられた。
GPUは、画像処理のためのチップなので、単純な計算を大量に行うのに向いている。そこで、それを画像処理に使うだけでなく、その他の計算のために使えるような仕組みを作ろう、という話だ。例えば、物理演算や、総当たりの検索ルーチンなど、大量の計算量が必要な時に使われる。
この用途で有名になったのは、ビットコインなど、仮想通貨あるいは暗号資産と呼ばれる仕組みである。この仕組みを細かく書くと長くなるが、以前のファイル共有の回の時に書いたような、P2P技術を用い、ネットワーク全体に暗号化された取り引き情報を流す事により、個人個人の資産状況を決定できるようにした「通貨」のシステムである。
で、P2Pと同じく、取り引き情報を記録したり流したりするのも、ネットワークのノード、つまり個人のPCなのだが、同じように、各取引情報を暗号化して個人個人の資産情報に連結させるのも、各個人である(この仕組みをブロックチェーンと言う)。そして、暗号化にはある程度計算能力を使うのだが、そこにグラボのGPGPU機能を使うのだ。
なぜ、個人が、仮想通貨の仕組みを支えるために、誰かの取引情報の暗号化を行うのかというと、これがうまいところで、それをやった人にインセンティブとしてその通貨がわずかにもらえる仕組みがあるからだ。これを比喩的に「掘る」という。で、そのインセンティブを稼ぐためには、他の人より早く、また短時間で多く「掘る」必要があり、そのために高性能のマシンが必要だった。
なんでも、中国あたりでは、GPGPU目的のグラボを4枚挿したPCを、更に数十台と並べた「採掘工場」を作って、必死に仮想通貨を掘っていたようだ。
という需要があったため、2017~2018年くらいは、グラボを中心にPCパーツの需要が高まり、値上がりする部分もあった。
DirectXの時にも書いたが、現在はNVIDIAのRTXシリーズなどで、レイトレーシングに挑んでいる。私もRTXシリーズを買ったが、追加電源を2つ挿す必要があるし、ファンは3つついているし、垂れ下がるのを防ぐために下から突っ張り棒で支える形になっている。つまり超重量級のグラボである。
CPUの世界も、Z80がどうたら言ってる時期から、現在に至るまで、その性能は数百万倍というレベルで上がりつつある。しかし、じゃあCPUの大きさが変わっているかと言うと、そこまででもなく、ただ放熱のためにヒートシンクやファンが大型化する程度である。
しかし、グラボ全体については、如実に大きくなりつつある。というか、大きいグラボが作られつつある。GPUの性能が上がるのはもちろん、積んでいるメモリも多く、速くなり、それに伴い大型のファンがつくようになり、その消費電力に耐えるために補助電源も必要となる。
そして、もうこれはだいぶ前からある技術だが、NVIDIAにしろAMDにしろ、同じグラボを2枚挿す事で、レンダリング能力を高める技術も作っている。
今後も、グラボの性能が上がり続けるのは間違いない。しかし、今のグラボ以上に大きく重くなるのだろうか? もしそうなるとしたら、もはや「ボード」という形でマザーに挿す事が、物理的に難しくなってくるだろう。そうなったら、今でもライザーケーブルでマザーから分離する事は可能だが、今後はそのような形がデフォルトになっていくのではないだろうか。さすがに薄っぺらいマザーボードに、超重量物を垂直に挿すというのが現実的ではない。
ただ、本当に、これ以上の大きさのグラボを求めているのかな、という疑問がある。このテキストが書かれてから10年後、グラボが更に大型化していたら、笑って欲しい。