AWS re:Invent 2016 で発表された F1 インスタンスの衝撃

11/30の re:Invent keynote はいろいろ盛りだくさんでもうおなかいっぱいな
感じですが、その中で一番個人的にインパクトが強かったのがF1インスタンス
でした。FPGAをクラウドで提供するというものです。

すでに Jef barr のブログでも紹介されていますが、これの半導体産業に与える
衝撃はとんでもないことになるのではという個人的な見解です。

Developer Preview ? EC2 Instances (F1) with Programmable Hardware
https://aws.amazon.com/blogs/aws/developer-preview-ec2-instances-f1-with-programmable-hardware/

単に FPGA が使えるから既存のロジックが加速できるよだけではすまない
インパクトだと思います。もちろんそれだけでも十分すごいのだけれど。

FPGA とは

物理的な論理回路の作成にかかわったことがない人には、FPGA という言葉は
初めて聞くのではないでしょうか。 詳細な説明は wikipedia に記載があります。

FPGA
https://ja.wikipedia.org/wiki/FPGA

通常半導体論理回路、典型的には CPU などは、一度製造してしまうと後から
書き換えることはできません。。しかし、FPGA はこの論理回路をいつでも
書き換えることができるのです。

つまり CPU の回路がおかしいから後から書き換えるなどは通常は不可能ですが、
FPGA なら可能です。簡単な例をあげるとスマフォなどで使われている
ARM アーキテクチャ CPU と PC で使われている INTEL アーキテクチャ を
一つの IC チップで切り替えながら使うことも可能です。

しかし、残念ながら一般的な製品に使われることは以下の理由によりそれほど
多くありません。

  1. 実行速度がASIC(書き換え不能な半導体チップ)よりも遅い。
  2. 大量生産した場合、ASIC のほうが圧倒的に安価になる。

ただ以下のような場合には広く使われています。

  1. カスタム ASIC を作成する場合の試作段階でのテスト
  2. 用途が限定されていて非常に小ロットでの製品

たとえば昔の CISCO 製品の初期バージョンでは、 FPGA で実装されていて、
フィールドでの仕様で機能的に問題ないことが確認されると、あるロットから
カスタムの ASIC に乗せかえるということがありました。

また CPU や GPU の試作段階では、FPGA で実施し、問題が無いことが確認できる
と、その結果をマスターとして ASIC を作成するということもよく行われます。
基本的に両者は論理回路としては等価なので、FPGA でデバックして ASIC として
製品化するという手順になります。

FPGA のプログラミングとは

現在の論理回路は一つずつトランジスタや抵抗を並べて設計することは通常
ありません。100万とか1000万とかの半導体素子を間違いなく接続して、正常
に動作させることは人間にはほぼ不可能です。仮にできたとしても神業の職人芸
の領域となり、産業的に成立させることは不可能です。

そのため Verilog や VHDL 等のハードウェア記述言語というものが開発されました。
この言語で記述されたものを論理合成という手順を経て、論理回路に変換するもの
です。ちょうど C 等のプログラミング言語で記載して、コンパイラを使って、
アセンブラに変換するのと似ています。

そして作成された論理回路を FPGA に転送してテストし、最終的に問題がなければ
ASIC として製品化するのが今の半導体産業の流れではないかと思います。

ソフトバンクに買収されて、一般の人にも名前が知れるようになった ARM は、
このハードウェア記述言語で書かれたプログラム(IP コア) を他社に販売して
利益を上げている会社です。購入した会社は自社の独自部分をさらに書き足して
製品として製造販売しています。スマフォでほとんどデファクトスタンダードに
なっているクアルコムの Snapdragon はまさに典型的な例で、ARM から購入した
IP コアに、自社の得意な無線通信部分を書き足して製品化したものです。

なぜ F1 インスタンスが半導体産業で強力なインパクトを与えるのか

では FPGA を搭載した F1 インスタンスが半導体産業に強力なインパクトを
与えると私が予測するのでしょうか? あくまで個人的な見解とはなりますが
以下に記述する理由になります。

論理回路は基本的に半導体の各端子の電圧が高いか、低いかを入力して別の
端子の各組にそれぞれ、電圧が高いか低いかを出力するものです。

ところが現代の半導体の端子数は非常に多くなり、その結果テストしなければ
いけない電圧の高い、低いの組み合わせが、文字通り幾何級数的に増大して
テストにかかる時間がとんでも無いことになります。
たとえば INTEL の CORE I 等は、5百本近い端子が出ており、その入出力の組
あわせは天文学的な数字になります。さらに過去の入力と現在の入力に依存する
順序回路の場合はさらに、数千倍以上になります。その結果テストを実施する
のにとんでもない時間がかかります。ソフトウェアエミュレーションでも
実施可能ですが、一般的に FPGA で実施したほうが高速だと思われるので、
FPGA が利用されることが多いのではないでしょうか。

それでも実際に現場で利用できる FPGA の数は限られています。

ところが今回の F1 インスタンスの発表で FPGA の数量制限が大幅に緩和されます。

通常、論理回路のテストは1組の入力に対して、1組の結果がでるので、
それぞれ独立して行うことが可能です。

なので、たとえば1万個の F1 インスタンスを起動してテストを平行実施して、
終わったら、捨てることが可能になります。

また全てのテストが終了する前に、論理的な誤りを検出した場合、
そこだけ直して他のテストを実施することも可能だと思います。

これは半導体の設計に関して大幅な納期短縮が期待できるのではないでしょうか。

一般的なユーザーにはあまり関係の無い話かも知れませんが、より品質の高い
半導体製品が短期間で出荷されるようになり、結果として世の中に貢献することに
なると思います。

もちろんそのためには論理合成・テストツールが AWS F1インスタンスに対応
する必要があるとおもいます。

またクラウドの新しい時代が開けたようにおもいます。

今後の発展に期待したいと思います。

投稿者プロフィール

スカイブロガー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Time limit is exhausted. Please reload CAPTCHA.