Amazon Web Services ブログ

開発者プレビュー ー EC2 Instances (F1) with Programmable Hardware

あなたは汎用ツールと非常に特殊な目的のために作られたツール、どちらかを決めなければならない経験をしたことはありませんか? 汎用ツールは、さまざまな問題を解決するために使用できますが、特定な用途に最適な選択ではないかもしれません。目的に合ったツールは1つのタスクに優れていますが、頻繁にその特定のタスクを実行する必要があります。
コンピュータエンジニアは、アーキテクチャと命令セットを設計するときに、この問題に直面し、非常に広い範囲のワークロードにわたって良好なパフォーマンスを実現するアプローチを常に追求しています。 時々新しいタイプの作業負荷と作業条件が発生し、カスタムハードウェアによって最もよく対処されます。 これにはもう1つのバランスのとれた行動、すなわち信じられないほどのパフォーマンスと、四半期または何年もかかる開発ライフサイクルの潜在的なトレードオフをする必要があります。 
 
FPGAへ
カスタムハードウェアベースのソリューションへの興味深いルートの1つとして、フィールドプログラマブルゲートアレイ(FPGA)が知られています。 単一の機能を念頭に置いて設計され、実装するために配線された専用チップとは対照的に、FPGAはより柔軟性があります。 これは、PCボード上のソケットに差し込まれた後、フィールドでプログラムすることができます。 各FPGAには、固定された有限個の単純な論理ゲートが含まれています。 FPGAをプログラミングするということは、論理機能(AND、OR、XORなど)または記憶素子(フリップフロップおよびシフトレジスタ)を単純に接続していく事となります。 本質的にシリアル(いくつかのパラレル要素)で、固定サイズの命令とデータパス(通常32または64ビット)を持つCPUとは異なり、FPGAは多くのオペレーションを並列に実行するようにプログラムでき、 ほとんどすべてのデータ幅、データ大小を操作できます。
この高度に並列化されたモデルは、数値計算の問題を処理するカスタムアクセラレータを構築するのに理想的です。 適切にプログラミングされたFPGAは、多くのタイプのゲノム解析、地震解析、財務リスク分析、大規模なデータ検索、暗号化アルゴリズムとアプリケーションに対して30倍のスピードを提供する可能性があります。
私はこれが素晴らしいことであると願うとともに、独自アプリケーションをスピードアップするために、あなたがFPGAを使いたくなることを願います! 長い道のりの中でいくつかの面白いチャレンジがあります。 第一に、FPGAは伝統的に、より大規模な専用システムのコンポーネントとなっています。 単にあなたが購入してデスクトップに接続することはできませんが、代わりにFPGAが提供ものにはハードウェアプロトタイピング、ハードウェアアプライアンスの構築、大量生産、長期にわたるセールス&デプロイメントサイクルといったソリューションが含まれています。 リードタイムはFPGAの適用範囲を制限する可能性があり、また、ムーアの法則はCPUベースのソリューションを費用対効果に優れたものにするには時間がかかることも意味します。
 
私たちはこの分野をより良くすることができると思います!
 
新しいF1 Instance
今日、新しいF1インスタンスの開発者向けプレビューを開始します。 あなた自身のためにアプリケーションとサービスを構築するだけでなく、 AWS Marketplaceで販売して再利用するためにパッケージ化することができます。 すべてをまとめることで、かつてはFPGA駆動アプリケーション利用の前提条件であった資本集約かつ時間のかかるステップをすべて避けることができ、 他のソフトウェアに使用されているビジネスモデルと同様にする事ができます。 あなた自身のロジックを設計し、クラウドベースのツールを使ってそれをシミュレートして検証し、それを数日で市場に出すことができます。
Intel Broadwell E5 2686 v4プロセッサ搭載(全コアにてベース 2.3 GHz、ターボモード 2.7 GHz、3.0 GHzターボモード 1コア)、最大976 GiBのメモリ、最大4 TBのNVMe SSDストレージ、 1から8個までのFPGAであるF1インスタンスは、コアおよびFPGAベースのロジックを補完する豊富なリソースを提供します。 各FPGAは各インスタンスが専有し、マルチテナント環境でも分離されています。FPGAの仕様は次のとおりです(1つのF1インスタンスに最大8つあります):

  • Xilinx UltraScale+ VU9P (16 nm製造プロセス)
  • 288bit幅のバスをもった64 GiBのECC機能付きメモリを搭載 (4つのDDR4 channels)
  • CPUへの専有PCIe x16インターフェースをサポート
  • 約2.5億のロジックエレメント
  • 約6,800のDigital Signal Processing (DSP) エンジン
  • デバッグ用仮想JTAGインターフェース

複数のFPGAを搭載したインスタンスの場合、専用のPCIeファブリックを使用すると、FPGAが同じメモリアドレス空間を共有し、各方向に最大12 GbpsのPCIeファブリックを介して相互に通信できます。 インスタンス内のFPGAは、低レイテンシ、高帯域幅通信用の400 Gbps双方向リングへのアクセスを共有します(この高度な機能を利用するには独自のプロトコルを定義する必要があります)。

FPGA開発プロセス

開発者プレビューの一環として、FPGA開発者のAMIも利用可能です。 このAMIは開発およびシミュレーション用で、メモリ最適化インスタンスまたはコンピューティング最適化インスタンスで起動し、F1インスタンスを使用して最終的なデバッグおよびテストを行うことができます。

このAMIには、無料でAWS Cloudで使用できる一連の開発ツールが含まれています。 VHDLまたはVerilogを使用してFPGAコードを作成し、 Xilinx Vivado Design Suiteのツールを使用してコンパイル、シミュレート、および検証を行います(サードパーティシミュレータ、高級言語コンパイラ、グラフィカルプログラミングツール、およびFPGA IP librariesも使用できます)。

単純な8ビットカウンタのVerilogコードは次のとおりです。

C
module up_counter(out, enable, clk, reset);
output [7:0] out;
input enable, clk, reset;
reg [7:0] out;
always @(posedge clk)
if (reset) begin
  out <= 8'b0;
end else if (enable) begin
  out <= out + 1;
end
endmodule

これらの言語は、しばしばCのような構文を使用して記述されていますが(その為コードのスタイライズを使用しています)、既存のコードを使用してFPGAで再コンパイルできることを意味している訳ではありません。 代わりに、FPGAプログラミングモデルの理解を深め、ブール代数を学び、伝播遅延やクロックエッジなどを学び始める必要があります。 これを基盤として、お客様の環境でのFPGA利用を考え始めることができます。これがあなたにとってレイヤーが低すぎる場合は、OpenCLを含む多くの既存のHigh Level Synthesisツールを使用してFPGAをプログラミングすることができます。

インスタンスを起動した後、ログインしてパッケージをインストールし、ライセンスマネージャをセットアップしてVivadoツールを実行できるようにしました。 それから、デスクトップにRDP接続し、ターミナルウィンドウを開き、GUIモードでVivadoを起動しました:

サンプルプロジェクト(counter.xpr)を開き、FPGAをどのように設計し、プログラムするかを見てみました。

少しの調査の後、私は最初のFPGAを合成しました(この時点では興味がある要素をクリックしたにすぎず、私は初心者でさえありません)。

ここから、自分のデザインをテストし、Amazon FPGA Image(AFI)としてパッケージ化し、それを自分のアプリケーションに使用したり、AWS Marketplaceにリストすることができます。 数週間以内にこれらのことをすべて行う方法を示せるようにしたいと思っています。

F1ハードウェア開発キット
私がF1インスタンスについて学んだ後、最初の質問の1つは、FPGA、CPU、およびメインメモリ間におけるインターフェイスの関係でした。 F1ハードウェア開発キット(HDK)には、ホストからFPGA、FPGAからメモリ、FPGAからFPGAを含む複数の通信方式用に事前設定されたI / Oインターフェイスとサンプルアプリケーションが含まれています。 また、コンパイルスクリプト、リファレンス例、およびフィールド内デバッグツールセットも含まれています。

最後に
ここで重要な点は、F1インスタンス、クラウドベースの開発ツール、およびFPGAによるアプリケーションの販売が可能であること、その組み合わせがユニークで強力であることです。 AWSのすべてのユーザは、FPGAモデルのパワーと柔軟性を利用できるようになりました。私は、これがまったく新しいタイプのアプリケーションやビジネスに影響を与えると確信しています。

今日から始められます
先に述べたように、本日より米国東部(バージニア北部)リージョン(2017年の早期にインスタンスが一般公開された後、複数の地域に展開する予定です)にて開発者プレビューを開始します。以前にFPGAのプログラミング経験がある、もしくは始めることに興味がある場合は、今すぐサインアップしてください。

Jeff; (翻訳はSA益子が担当しました。原文はこちら)