GPUやFPGAの活用で、役割が広がるプログラマブル・デバイス
現在の電子機器や情報システムは、プログラマブル・デバイスなしでは成立しません。
プログラマブル・デバイスとは、電子機器に組み込んだあとに、プログラムを書き換えることで、機能を自由自在に書き換えることができる半導体チップのこと。
パソコンやスマートフォンはもちろん、テレビや自動車なども、マイクロプロセッサ(CPU)と呼ばれるプログラマブル・デバイスでコア機能を動かしています。
ところが、そんな重要なチップに危機が迫っています。
今後の高性能化ができない可能性があるのです。
そのような不安を解消すべく、GPUとFPGAと呼ばれる別のプログラマブル・デバイスの活用に注目が集まっています。
ここでは、これからの電子機器の進化を支えるGPUとFPGAの役割について解説します。
Contents [hide]
アナログからデジタルへ|プログラマブル・デバイスの台頭
かつてのアナログ方式のテレビやオーディオ機器の内部構造は、現在のデジタル電子機器や情報システムとはまったく異なるものでした。
アナログ方式では、様々な仕様の半導体チップや電子部品がプリント基板上に実装され、雑多な部品を組み合わせて機器が構成されています。
しかし、このような手法は、開発と生産の非効率を招く要因を生んでいました。
1度、電子回路を構成してしまうと、簡単には機能の変更や不具合の修正ができないからです。
そのため、少しだけ機能を追加した新製品を作る場合にも、最初から電子回路を開発する必要がありました。
こうした数々の問題を一気に解決したのが、プログラマブル・デバイスを活用した機器構成手法です。
パソコンは、動かすプログラム次第でワープロやゲームにもなり、ネット検索や動画鑑賞もできます。
必要に応じて柔軟に機能を変えるパソコンの仕組みを、あらゆる電子機器に持ち込んだのが、現在のデジタル機器なのです。
現在のデジタル電子機器や情報システムは、機器に搭載する機能を書いたプログラムを実行するプログラマブル・デバイスと、プログラムを格納するメモリーを中心に構成されています。
回路基板の要素は、アナログ方式の電子機器に比べて、とてもすっきりとしました。
そして、開発期間が劇的に短縮され、多くの機器を迅速に市場投入できるようになりました。
さらに、製品が消費者の手に渡ったあとでも機能向上や不具合の修正が可能になり、その特徴を生かしたサービス・ビジネスが生まれるようにもなりました。
アナログ方式の電子機器とデジタル方式の電子機器や情報システムでは、電子回路の見映えが大きく異なっている。
(左)アナログ方式の電子機器の回路基板、(右)デジタル方式の電子機器の回路基板
万能チップ「マイクロプロセッサ」とは
現在のほとんどのデジタル電子機器や情報システムには、プログラマブル・デバイスとして、マイクロプロセッサが使われています。
マイクロプロセッサは、プログラムに書かれた実行すべき命令と処理対象のデータを指定された順番で読み出し、チップ上に搭載した四則演算や論理演算を実行する万能演算器で計算をするチップです。
プログラムで記述できることならば、どのような内容の処理でも実行できる、まさに万能チップだといえます。
現在のデジタル電子機器にマイクロプロセッサが多く使われる理由は、数あるプログラマブル・デバイスの中で最も汎用性が高いチップだからです。
汎用性が高いということは、より多様な機器の機能を実現できる可能性を持っていることを意味します。
さらに、汎用性を維持したまま「半導体の集積率は18か月ごとに2倍になる」という「ムーアの法則」に沿って、指数関数的に高性能化が進んでいました。
この点が、電子機器や情報システムのエンジニアにとっては何より魅力的だったのです。
しかし近年、半導体技術が進歩しても、マイクロプロセッサの性能を向上させることが困難になってきました。
トランジスタ数の増加が性能向上に結びつきにくくなり、トランジスタの動作スピードも頭打ちになったからです。
人工知能(AI)やブロックチェーン、自動運転車など、エンジニアは、今後もより高度な電子機器や情報システムを開発していかなければなりません。
そのため、マイクロプロセッサの高性能化を頼りにできなくなる状況は大きな問題です。
マイクロプロセッサの危機をGPUとFPGAが救う
マイクロプロセッサの高性能化が困難になった状況を打開し、より高性能な電子機器を作るために注目され始めたのがGPU(Graphics Processing Unit)とFPGA(Field Programmable Gate Array)という別のプログラマブル・デバイスです。
どちらも1990年代から存在していたチップですが、GPUはパソコン向けゲームを高速に動かすためのアクセラレータとして、FPGAは半導体チップを迅速に試作する開発用チップとして主に使われていました。
GPUとFPGAは、仕組みと特徴が根本的に異なります。
GPUは、マイクロプロセッサほど高い汎用性はないのですが、AIやブロックチェーンなどの社会的インパクトが大きな分野に対する適性が高いチップです。
一方、FPGAは実現したい機能を高速・低電力で実現する専用ハードウェアを自由自在にプログラミングできるという、異次元の万能性があります。
AIの普及をけん引するGPU
GPUは、グラフィックス処理や画像処理に適した内部構造を持つプロセッサであり、これらの処理で多用する積和演算器が多く並んだ内部構造を採用されています。
例えば、映像の色を調整する場合には、画像を構成する1つひとつ画素を対象に演算を行います。
GPUの内部構造は、1度により多くの画素を処理対象にするのに向いています。
同様の計算は、AIやブロックチェーンでも行われます。
例えば、AIの学習や推論では、脳神経をモデル化したニューロンのひとつひとつで積和演算を繰り返し実行します。
こうしたニューロンを数多く集めてニューラルネットワークを構成し、処理対象の膨大なデータを流し込むのですから、GPUの適性が際立つ応用だといえます。
AI関連処理への親和性を活用して、GPUは自動運転車の前段階といえる高度運転支援システム(ADAS)にも活用されるようになりました。
すでに多くの自動車メーカーがGPUを活用した自動運転システムの開発に着手しています。
効率的なデータセンターを実現するFPGA
一方、FPGAは、プログラムを書き込むことで、特定処理に最適化された専用ハードウェアを構成できるデバイスです。
ロジックセルと呼ばれる、簡単にいえば掛け算の九九の表のような演算早見表をたくさん並べ、それらを配線で相互接続した内部構造になっています。
演算早見表に書く内容と配線のルートをプログラムで書き込むことで、実現したい電子回路を自由自在に作ることができます。
マイクロプロセッサとGPUのプログラムでは、単純な命令を組み合わせて実現すべき機能を表現しています。
そして、1つの命令を処理する度に、命令と処理対象データをチップの外部から読み込みます。
ノイマン型コンピューターと呼ぶ汎用性の高いシステムを構成するための基本構造ですが、性能向上や電力削減の足かせにもなっています。
一方でFPGAは、機能を実行するための専用回路をチップ内にひと通り作り込むことができます。
このため、動作時のチップ外部とのやり取りが最小限に抑えられ、高性能化と低電力化が可能になります。
FPGAは、データセンターで大量のデータを対象にして高速に検索処理するためのエンジンとして使われるようになりました。
データセンターの高速化と低電力化は、IT企業の競争力を決める重要な要因になっているからです。
また、AI関連処理に向く専用回路も自由自在に構成できるため、こうした用途での応用の検討も進んでいます。
FPGAの活用を考える時の最大の留意点は、チップに書き込む専用回路を開発するために、半導体設計で使う言語であるハードウェア記述言語(HDL)を覚える必要があるという点です。
HDLは、マイクロプロセッサ向けのプログラムの開発に用いるC言語とは、全く異なるものです。
ただし近年、C言語ベースのヘテロジニアス(違った種類のプロセッサを混在利用する)コンピューティング向け標準規格「OpenCL」でFPGAを扱う環境の整備が進み、エンジニアにとっての敷居は低くなってきました。
FPGAを使いこなすエンジニアの需要は高く、スキルアップを目指して挑戦してみるのもよいでしょう。