Amazon Web Services ブログ
開発者プレビュー ー EC2 Instances (F1) with Programmable Hardware
カスタムハードウェアベースのソリューションへの興味深いルートの1つとして、フィールドプログラマブルゲートアレイ(FPGA)が知られています。 単一の機能を念頭に置いて設計され、実装するために配線された専用チップとは対照的に、FPGAはより柔軟性があります。 これは、PCボード上のソケットに差し込まれた後、フィールドでプログラムすることができます。 各FPGAには、固定された有限個の単純な論理ゲートが含まれています。 FPGAをプログラミングするということは、論理機能(AND、OR、XORなど)または記憶素子(フリップフロップおよびシフトレジスタ)を単純に接続していく事となります。 本質的にシリアル(いくつかのパラレル要素)で、固定サイズの命令とデータパス(通常32または64ビット)を持つCPUとは異なり、FPGAは多くのオペレーションを並列に実行するようにプログラムでき、 ほとんどすべてのデータ幅、データ大小を操作できます。
今日、新しいF1インスタンスの開発者向けプレビューを開始します。 あなた自身のためにアプリケーションとサービスを構築するだけでなく、 AWS Marketplaceで販売して再利用するためにパッケージ化することができます。 すべてをまとめることで、かつてはFPGA駆動アプリケーション利用の前提条件であった資本集約かつ時間のかかるステップをすべて避けることができ、 他のソフトウェアに使用されているビジネスモデルと同様にする事ができます。 あなた自身のロジックを設計し、クラウドベースのツールを使ってそれをシミュレートして検証し、それを数日で市場に出すことができます。
- 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コードは次のとおりです。
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のプログラミング経験がある、もしくは始めることに興味がある場合は、今すぐサインアップしてください。