やじうまPC Watch

24万トランジスタの自作GPU「TinyGPU v2.0」が稼働。実際の半導体として誕生

 今やコンピュータの世界と切っても切れない関係にあるのがGPUだ。しかしCPUの自作はよく聞くが、GPUの自作はあまり聞かない。これは、3D処理をさせようとすると膨大な回路に対してデータを配って回収するパラレル処理が大変で、たとえそこをクリアしたとしても、近代的なHDMIやDisplayPortといった高速インターフェイスに対して映像出力するのが非常に困難だからだ。

 だが、その困難を乗り越えて自作しようとするプロジェクトがある。それが「TinyGPU v2.0」だ。このプロジェクトを率いるアマチュアのASIC/FPGAデザイナーで、ゲーミングハードウェアやGPUを設計するpongsagon vichit氏は7月31日、TinyGPU v2.0が実際に動作したことを報告した。

 TinyGPU v2.0の仕様だが、以下の通りとなっている。

  • 座標変換とライティング(いわゆるT&L)、ラスタライズに対応
  • 4bitダブルバッファ、QSPI RAMに8bit深度バッファをストア
  • 最大1,000トライアングル
  • 背面カリング対応
  • 1つの動的な平行光源、フラットシェーディング対応
  • アフィン・テクスチャマッピング対応
  • ゲームパッドでモデルを変形またはライティングを回転
  • 25MHzで駆動。製造時のトランジスタは約24万個

 このTinyGPU v2.0を用いて、解像度320×240ドット、4bitカラーで1,000トライアングルをレンダリングしたところ6.5fpsで動作したという。テクスチャ解像度は256×256、4bitだった。今となっては非力なスペックだが、アマチュアが趣味で作り上げた“同人GPU”がここまで動作するのは驚きだろう。

 そして今回の報告のキモは、AMD(元Xilinx)の「Artix 7」というFPGA(Field Programmable Gate Array)を搭載したボード「Basys3」で動作検証した後、Tiny Tapeoutというプロジェクトを通して、実際のASIC(機能固定の半導体)に落とし込んだことだ。つまり、FPGAをGPUとして仕立て上げたのではなく、正真正銘のGPUとして製造され、GPUとしてしか動作しない半導体である。

 そんなTinyGPU v2.0だが、現在はGitHub上でApache 2.0ライセンスのもと公開されており、誰でも自作GPUにチャレンジできる状態となっている。興味があるユーザーはぜひチャレンジしてみてほしい。

 しかも、実はすでに次の「TinyGPU v3.0」の開発が進んでいるようだ。v2.0は固定パイプラインだったが、v3.0では31種類のピクセルシェーダー命令をサポートする。また、シェーダー実行をZバッファアクセスと並行処理することでレイテンシを隠蔽するという。今のところのボトルネックはRAMの速度が遅い点にあるようだ。