セミコンポータル
半導体・FPD・液晶・製造装置・材料・設計のポータルサイト

Nvidiaの成功に学ぶ(その5)

本ブログでは、先ず、GPU(Graphics Processing Unit)技術に取り組む企業が近年急増していることを示す。 GPU技術は、AIチップやNPU (Neural network Processing Unit) と共通項の多い技術であるが、それらを取り巻く技術の進化は、今後の集積回路技術に大きな影響を与えると思われる。
次いで、Computer Graphics (CG) 処理のアルゴリズムとGPU回路の違いを見てみる。「特定のアプリケーションが要求するアルゴリズム」と「そのアルゴリズムを実装する集積回路設計」の間の違いが際立つ好例であるからである。GPUの世界では、アルゴリズムをそのままロジック回路に置き換えたスタートアップが多かったが、画像処理の世界ではそれら企業の多くが姿を消した。

アクセラレータ回路

GPUは、CPU(Central Processing Unit)にとって大きな負荷となるCG (Computer Graphics)の画像処理の多くを引き受けるアクセラレータ回路として、当初PCやワークステーション向けに開発されて来た。 アクセラレータ回路としては、他に、FPU(Floating Processing Unit)や、DSP(Digital Signal Processor)が有名である。 昨今のスマートフォンやタブレットPCのプロセッサ(Application Processor)には、非常に多くのアクセラレータ回路が搭載され、CPUの動作を補完している(注1)。

但し、現代のGPUは、「単にCPUの画像処理をオフロード(Off-Load)する」というよりも、「CPUとGPUの密な連携動作によって、CPUの得意なランダムな動作はCPUが行い、GPUが得意な繰り返し動作はGPUにて行う」という分担連携動作(Co-Processing)に変わったように見える。 GPUは、「様々な要素データ間にも、共通な構造が有ること」や、「可動な物体には、共通の物理法則が作用する」等の多くの「共通なデータ処理」を行わせるのにも向く。過去にGPUがたどった進化の跡を見ることは、今後のロジック系集積回路の進化を考える上での参考になりうるのではないだろうか?

GPUの開発競争の過去と現況の概観

GPUの前身となるグラフィックアクセラレータ回路は、1980年代、グラフィックコントローラとも呼ばれる回路であった。 日本でのゲーム機ビジネスの興隆もあり、PC用チップの開発 / 製造には、多くのスタートアップ企業がチャレンジした。 但し、その多くは2000年前後までに淘汰された。

事業が行き詰まった理由は様々であったであろうが、生き残った企業には、「アルゴリズムを、そのままチップ上のカスタムロジックとして実装にする」のではなく、「プログラマブルな新回路アーキテクチャを見出した」との点が共通するように思われる。

特定のアルゴリズムは、特定用途にしか使えない。 特定用途にしか使えない集積回路は、時代遅れになりやすく、知財としても商品としても価値は持続し難い。

アルゴリズムがソフトウエア技術者の知財成果物であるのと同様に、集積回路設計者も設計の過程で知財成果物を獲得する必要がある筈である。「回路構造に関する発想」であれば、細部の違いがあっても知財としての価値がありうるし、「アーキテクチャ」のレベルでの技術革新ができれば、価値を主張できる期間も長い。

2000年前後にGPU製品を提供した企業数は、5社程度となっていたと見られる。 筆者が調べた範囲では以下の企業名が上がった。
・3dfx Interactive社(2000年に、Nvidiaが買収)、
・ATI Technologies社(2006年に、AMD社が買収)、
・Silicon Graphics社(2009年からSilicon Graphics International社、2016年にはHPE社に吸収された)
・Matrox Electronic Systems社
・Nvidia社、

現在、PC用の外付けGPUを供給するのは、Nvidia社(シェア77%)、AMD社(23%)の2社である(参考資料1)。 PC用MPU内蔵のGPUを供給するのは、Intel社とAMD社と言って良いだろう。

しかし、スマホやタブレットPC用のAPU (Application Processor Unit) 内蔵のGPUとしては、
・Qualcomm社(Qualcommの自社開発。開発チームは、旧ATI Technologiesにルーツを持つ)
・Apple社(Apple自社開発)
・Arm社(商標はMali)
・Imagination Technologies社(商標はPower VR)
の4社が知られている。加えて、韓国のSamsungは、現在AMD社との協業により自社向けに新規開発していると言われている (参考資料3,4)。

更に、現在、中国でのGPU開発企業数は急増している。 全社、スタートアップと言って良いだろう。
・兆芯社(参考資料5)
・摩爾線程(Moore Threads)社(参考資料6)
・Biren Technology社(参考資料6)
・Metax社(参考資料6)
・登臨科技(DengLin Technology)社(参考資料6)
・天数智芯半導体(Iluvatar CoreX)社(参考資料6)
・芯動科技(Innosilicon)社(参考資料6)
・ZhaoXin社(参考資料7)
・ChangSha JingJia Microelectronics社(参考資料8)
・Horizon Robotics社(参考資料9)
・Black Sesame Technologies(参考資料10)

これら企業の中には、中国製PCや中国製ゲーム機を狙って開発を進めるケースもあるが、人工知能のような比較的新しいアプリケーションをターゲットとしている企業もある。NPUやAIチップを狙ったスタートアップは、リストアップに窮する程に増えている。

GPUの進化の過程で、「CPUとGPUの間の役割分担見直しが起こった」のと同様の変化が、今後、NPUのような新たな処理回路を交えて起こるのではないだろうか? その変化のためには、ソフトウエアにも影響が及びうるので時間のかかる開発となるのではあろうが、今も、ロジック集積回路のアーキテクチャは、大きな進化の途中にあることは間違いない。

CG処理のアルゴリズム

次に、CG処理のアルゴリズムから出発し、GPUという回路アーキテクチャにたどり着いた米国Nvidia社のGPU技術を概観してみる。

尚、筆者は、画像処理アルゴリズムの専門家ではなく、本内容も画像処理の解説ではない。そのように見識の乏しい分野の表現に挑戦するのは、Nvidia社の技術が、「特定のアルゴリズムの例から、(自然界の)データを処理する集積回路の一般形を見出し、それを進化させた」という好例だと思うからである。 内容は、参考資料12〜16に基づいて、まとめている。

Computer Graphics(CG)処理は、以下のような手順(アルゴリズム)で進むとされている。(図1)

1) 背景と物体のそれぞれをモデリング(Modeling)する。
・個々の物体の表面を、多数の三角形のメッシュに分解し、物体を、「番号付けされた頂点座標(Vertex Coordinate)の群」で表わす。ここで、三角形のメッシュに分解するというのは、典型的な方式の一つでしかない。一般的には、多角形(Polygon)、もしくは曲線のメッシュで分解する。
・これによって、元の物体は、「番号付けされた頂点座標(Vertex Coordinate)の群」で表されることとなる。 元の物体の外形を分解した三角形 (一般的には多角形) をオブジェクトと呼ぶ。
2)物体の外形を分割した各三角形に、背景空間内に位置付けた座標と、その三角形の向きを意味する法線ベクトル情報を関連付ける。
3) 背景を照らす照明(発光体)を配置し、物体の陰影(Shading)を計算する。
・光源(Lighting)からの光や、各オブジェクトから反射光で照らされるオブジェクト表面の明るさと色の諧調を計算する。
・物体を分割した各三角形に、色、材質(マテリアル)、質感(テクスチャ)、透明度、反射率、屈折率、自己発光量、テクスチャ(表面の質感)、凹凸の設定、断層のような切れ目の設定など、多数の表現パラメータ情報を関連付ける。
陰影の補完 (オブジェクトを構成する三角形の継ぎ目をなだらかにする) とか、陰面消去(視点から見るオブジェクトの前後関係を割り出し、見えない部分のデータを消去する)等の処理を行う。
4)背景と物体を見る「視点」を定義し、背景と物体の全体像から「視点から見た2次元映像データ」を生成する。
5)「視点から見た2次元映像データ」をスキャンして、ピクセル単位に出力する。

これらの処理にて使われる計算としては、一般に、「線形演算(もしくは行列演算)」と「逆数を得る計算」が使われる。 背景と物体を分解した構成要素となるオブジェクトの圧縮・伸張 (比例計算) も、回転も行列演算によって表現可能だからである。

その行列計算は、一般に、{ Y=aX+b } の演算を繰り返すことで求められる。従って、上記のCGのデータ処理は、いずれも、
・ { aX+b }を計算し、返答する。
・ 逆数を得て、返答する
・ 付帯情報を関連付ける
などの比較的少ない種類の演算の組み合わせにて表現できるだろう (注2)。
また、そのような処理ができる簡単な「プログラマブルな処理回路」を用意して、「その処理回路に、CPUからデータと計算式を送り、その返答をCPUに返してもらう」ことを繰り返すことで、アルゴリズムを進めることができるはずである。

もちろん、上記のCG処理アルゴリズムは、図1Aのように、個別のステップ専用の処理回路を用意して進めても良い。また、下図1Bのように、「プログラマブルな処理回路にデータと計算式を送り、返答を受ける動作を繰り返して進める」という方法も有り得る。

PC用の3D グラフィックアクセラレータが登場した当初、多くのスタートアップが、図1Aのように、アルゴリズムをそのままロジック回路に置き換えたパイプライン回路をチップにしたが、生き残った企業のいくつかは、それでは「アルゴリズムの変化への対応能力に乏しい」と考え、図1Bのようなアーキテクチャを目指した。

Nvidia社は、図1Bの「プログラマブルな処理回路」にプログラムを駐在させているのではなく、「非常に簡単なプログラムをデータと共に受け取り付けて処理を行い、結果を返答する回路」とした(注3)。 図1Aのように、特定のアルゴリズムを論理回路とした製品は、アルゴリズムの進化に対応できなかった。


図1A アルゴリズムのパイプライン化 / 図1B GPUの進化形 プログラマブルな処理回路に、データとプログラムを一緒に送って、繰り返し処理にてアルゴリズムを進める。

図1 3Dグラフィックスの画像処理アルゴリズムをそのまま論理回路化したパイプライン(図1A)と、進化後の集積回路(図1B)
出典:図1Aは、参考資料12を元に筆者が作成。図1Bは、参考資料13を元に筆者が作成

GPUの構造とCPUと接続した場合の命令と出力データの流れ

図2 GPUの構造とCPUと接続した場合の命令と出力データの流れ
GPUは、性能がスレッドの個数に比例するスケーラブルな回路となった。 一方、CPUは、GPUの各スレッドに命令を供給する回路となった。 出典:参考資料15を元に、筆者が作成


スケーラブルな回路

図1Bの「プログラマブルな処理回路」は、非常に小さな回路であるために、1個のチップ内に搭載する個数を増やすことで、物体ごとに、もしくは表示画面の画素ごとに処理を進めることができる並列回路となった(図2)。このような方式に変わると、CPUはデータを処理する回路というよりも、GPUの各スレッドにデータとプログラムを送る制御回路となる。これは、データ処理の現場がCPUからGPUに移ったともいえる大きな変革であった。

また、GPU方式(図1B、図2)は、ソフトウエア開発者にとっての開発インフラともいえる必須のハードウエアとなり、CGアルゴリズムの世界では、設定するパラメータを増やすことで質感を改善したり、また、光線や照明が醸し出す立体感を高めたり、という工夫が加速した。 GPU方式は、ソフトウエア開発者との間で進化を加速するエコシステムを形成する基礎を提供した訳である。

更に、GPU方式は、スパコン等のHPC (High Performance Computing) にも用途を広げた。自然現象の多くは、ミクロなスケールで見た場合に線形演算の繰り返しとなるためである。 科学技術計算シミュレーションへの用途の拡大は、当初、GPU方式を発明した技術者が期待した以上の効果を事業にもたらしたのではないだろうか?図3はシリコンバレーにあるNvidiaの本社だが、三角形のメッシュを描いた屋根はGPUを象徴している。

集積回路設計者は、回路アーキテクチャのレベルでの革新競争に日夜対面させられている。GPUの歴史は、「価値ある回路アーキテクチャの発見」が企業の命運を制したという例だったのではないかと思える。


NVIDIA - A COMPUTING PLATFORM COMPANY

図3 Nvidia社本社の航空写真。多数の三角形の群でメッシュに切られた外観を持つ。
出典:Nvidia Investor Presentation Q4 FY2021


1. ビデオやオーディオデータの圧縮/伸張機能(MPEG-2 / H.264 / AAC / MP3 / WMA等)や、セキュリティ対策を始め、様々なデータ処理 / 変換、等々。アプリケーション毎に多種多様の専用データ処理回路であるアクセラレータを搭載することで、汎用データ処理回路であるCPUの動作を抑制している。
2. { Y=aX+b } の演算と逆数演算を繰り返すことで、級数展開された任意の関数も近似できる。従って、GPUが扱える演算子は非常に多い。 尚、グラフィック用途での演算は、通常、浮動小数点数値に対する演算である。
3. Nvidia社は、プログラマブルなパイプライン処理回路部分を複数搭載したGPU (商品名はGeForce 3) を2001年にリリースした。 このチップで採用した方式は、データを「パイプラインの処理回路部分」に送る時に、データと共に規模の小さな一種のプログラム(シェーダーと呼ばれる)を付けて送り、パイプライン処理回路の機能をダイナミックに変えることができるアーキテクチャの先駆けとなったと思われる。

参考資料
1. Hassan Mujtaba、”AMD Radeon RX GPUs Witnessed Market Share Gain Versus NVIDIA GeForce RTX GPUs in Q3 2020, RDNA 2 & Ampere Launches Not Yet Accounted For" (2020/12/06)
2. 「スマホのGPUとは?性能とメーカーを徹底解説」 (2019/08/19)
3. 「SamsungがARM、AMDとモバイル向けプロセッサを共同開発か?」、iPhone mania(Web記事) (2020/08/13)
4. 「SamsungとAMDの協業で生まれるGPU、詳細は6月に発表?」、iPhone mania (Web記事) (2021/02/24)
5. 「8コア/DDR4対応/GPU内蔵の中国製x86プロセッサ『開先KX-5000』」、PC Watch(Web記事)(2017/11/09)
6. 「中国でGPU開発企業への投資熱 設立100日の新興が数百億円も資金調達」、36KrJapan(Web記事) (2021/03/11)
7. Evan Federowicz、"A Chinese Competitor to Intel and AMD CPUs? Zhaoxin Might be the Answer!" (2019/12/15)
8. 「【GPU】 中国産GPU『JM9271』。GTX 1080に匹敵か」、ニッチなPCゲーマーの環境構築Z (Web記事)、(2019/08/25)
9. 「NVIDIAの中国のライバルHorizon Roboticsが約725億円の資金調達を目指す」、Tech Crunch (Web記事)、(2020/12/23)
10. 「アリババのクラウド事業「AliCloud」がGPUに投資する背景とは?」、ビジネス+ IT(Web記事)、2016/02/17
11. 「レイ トレーシングとラスタライズの違い」、Nvidia社のブログ記事、(2018/03/26)
12. ウィキペディアの「Graphics Processing Unit」、(更新 2021/02/11 14:30)
13. Chris McClanahan、“History and Evolution of GPU Architecture”、 2010年
14. 平野幸彦、「GPUコンピューティングの歴史とCUDAの誕生」、(2010/07/02)
15. 福井正博、林憲一、「GPUによるLSI設計の高速化技術」、2013年1月、電子情報通信学会2013
16. David E. Rogers、J. Alan Adams; “ Mathematical Elements for Computer Graphics, Second Edition”, McGraw-Hill. Inc., (1989/02)

月別アーカイブ