SlideShare a Scribd company logo
Moving Computation
to the Data
@kazunori_279
自己紹介
@kazunori_279
● クラウドやビッグデータ関連の仕事
○ appengine ja night管理人
● HDL歴は数か月
○ DE0で勉強中。やっと4bit CPUが動いた
○ FPGAエクストリームコンピューティング(勉強会)始めま
した
Disclaimer
● 専門外なので見当違いなこと書いてるかも
● 個人の研究であり、私の雇用主とは関係ありま
せん
● 引用した図には引用元のリンクが張ってありま
す
アジェンダ
●
●
●
●
●
●

なぜFPGAが気になるか
Moving Computation to the Data
最近の業界動向
金融分野はさらに先に進んでいた
そしてMemcached+FPGAが熱い
なぜMemcachedはFPGA実装で速くなる?
FPGAエクストリーム
コンピューティング
なぜFPGAが
気になるかというと...
ノイマンがボトルネックだから
皆さん順番にディスク →メモリ→キャッシュ→レジスタってコ
ピーしてきてくださいね
どんな大きいデータも 64bitずつ計算してるしOSさんも忙しい
からあと何1000クロックか待っててね

ノイマン型CPU
頭の回転は速いが
どう考えても
ここがネックだろ...
アプリ屋だってワイヤードロジックで
並列処理したい!

CPUやOSを介さず1024並列で
ワイヤスピードで処理してます(キリッ
...とか言ってみたい
FPGAのコモディティ化による
破壊的イノベーション
● いまやリコンフィギャラブルコン
ピューティングが1万円で
○ CPUもOSもTCPもとばしてFPGAでア
プリ処理を書ける
○ アプリ開発者がアプリごとに専用ハード
設計できる時代に
○ しかも自宅で
○ これってMakerムーブメントだ
○ 昔の8bitマイコンみたい
FPGAは電力性能比がケタ違いに高い
● 大規模データセンターでは電力性能比
がネック
○ データセンターに供給可能な電力量には限り
がある
○ 例えば、1か所につき数MW程度
○ データセンターが提供できる処理能力は
サーバーの電力性能比によって大きく左右さ
れる
しかしアプリ処理のフルFPGA実装は
ハードルが高い...
CPUとFPGAの適材適所がキモ
ややこしいロジックはCPUで
●
●
●

ストリーミングの前処理
認証、OLTP、トランザクション
セッション管理、例外処理、UI/CLI/API

大量・並列処理はFPGAで
●
●
●
●

CPUやOSを経ないストリーミング、RDMA
ログ集計、パース、ウィンドウ処理
ソート、ジョイン、マージ、パターンマッチング
メディア配信・画像処理・数値演算・暗号化

→ARM+FPGA混載コアがおもしろい
● Xilinx Zynq
● Altera SoC
● 既存アプリの一部分のみアクセラレーションできる
ARM+FPGAが
データセンターにやってくる
CPUとFPGAはどう連携するか?
↓
Moving Computation to the Data
Alteraいわく:
(計算機にデータを持っていくのではなくて)
データのある場所に計算を持っていく
データのある場所で計算する

データのあるストレージやネットワークに計算させよう
そんな事例が増えている:Violin Memory, IBM Netezza, HFT...
従来型のアーキテクチャ:
「ビッグデータ」の時代なのに、
あいかわらず細切れにしてCPU
で逐次処理って...
新しいアーキテクチャ:
低コスト・大容量化したFPGA
で、アプリ処理できるインテリ
ジェントなI/Oを実装
Edge-Heavy Dataに似てる
Moving Computation to the Data
っぽい最近の業界動向
IBM Netezza: ストレージ層のFPGAで
大規模データのフィルタリング
XilinxによるZynqデモ:OpenCVの動画処理を
ARM+FPGAで100倍高速化
CPUではカクカクな処理がFPGA連携時はヌルヌルに(1:30あたり)
HPの次世代サーバMoonshot
SRC Computerと連携しFPGA搭載
IBM POWER8のCAPI:
外部FPGA/ASICと高速キャッシュ同期
Seagateのkey/value Ethernet drive
HDD/SSDがそのままKey Value Storeに...!
● CPU/OS/TCPのオーバーヘッドなし
金融分野のHFTやHPCは
さらに先に進んでいた
FPGAスイッチArista 7124FXによる
High Frequency Trading
High Frequency TradingのFPGA化
● 数msの遅れが数千万、数億規模の
損失を生む
● FPGA搭載NICでトレーディング
○
○

TCPや取引アルゴリズムのFPGA実装
CPU/OSを介さず低遅延を保証

● FPGA搭載アプリケーションスイッチ
Arista 7124FX
○

株価がサーバーに届く前にスイッチが株の
売り買い
取引アルゴリズムはx86で
オーダー執行はFPGAで
株価のパケットが届き終わる前に
オーダーのパケットを送り始める(怖

執行条件に合致しなければ最後に
チェックサムずらしてパケットを破棄。市場
データ到着から25 nsで発注完了。
投機市場だけに投機実行ってことか
JP Morgan+Maxelerによる
債権リスク評価専用FPGAクラスタ
● 40台で処理時間を8時間から4分に短縮
JP Morgan+Maxelerによる
債権リスク評価専用FPGAクラスタ
“FPGAを使うことで数100段といった非常
に深い演算パイプラインと、とても細かい
粒度での並列化によるストリーム・コン
ピューティングを実現できるからだ。これに
より、CPUに比べ数100倍のスループット
を得られるケースもある。”
そして
Memcached+FPGA
が熱い
ConveyのMemcachedアプライアンス
● 2013年9月発表
ConveyのMemcachedアプライアンス
x86とFPGAのハイブリッド
ConveyのMemcachedアプライアンス
x86サーバーの7倍のスループット、遅延は1/5
ConveyのFPGAマシン
他にもいろいろ速い
● ゲノム解析
● グラフ
● 文字列の編集距離
● 文字列の近似検索
なぜMemcachedは
FPGA実装で速くなるか?
Memcached+FPGAの論文が増えた
● An FPGA memcached appliance
○ HP Labs, Univ. of Massachusetts Lowell
○ FPGA '13
○ 内容:FPGAでMemcachedを実装してみた
● Achieving 10Gbps Line-rate Key-value Stores with
FPGAs
○ Xilinx, ETH Zurich
○ HotCloud '13
○ 内容:実効レート10GbpsのMemcached(白目
Memcached+FPGAの論文が増えた
● Thin Servers with Smart Pipes: Designing SoC
Accelerators for Memcached
○ HP Labs, Facebook, ARM, Univ. of Michigan
○ ISCA 2013
○ 内容:FPGAとCPUによるハイブリッド実装の提案

HPとFacebookとARM!
x86上のMemcachedの
ボトルネックを探る
● 100台のMemcachedクライアントと5種類の負荷を再現
○
○
○
○
○

固定サイズ(128B)
マイクロブログ(平均1KB)
Wiki(平均2.8KB)
サムネイル(平均25KB)
FriendFeed(MULTI-GET)

● テスト対象サーバー
○
○

Xeonベースのハイエンドサーバー
■ 2.25GHz x 6コアXeon/12GBメモリ/10GbE NIC
Atomベースの低消費電力サーバー
■ 1.6GHz x 2コアAtom/4GBメモリ/10GbE NIC
ボトルネックその1:命令キャッシュ
●

●

命令キャッシュのボトルネック
○ SPEC CPU 2006 integerベンチマークとの比較では、Memcachedでは最
大15倍も低い。これはLinuxカーネルとネットワークスタックのコード量の大
きさによるものである
ITLBのボトルネック
○ AtomではITLBの不足によりミス率がXeonに比べてきわめて高い
ボトルネックその2:分岐予測の失敗
●

分岐予測の失敗によるボトルネック
○ マイクロブログにおける実行時間の大きい上位50個の関数のうち、予測失
敗率が10%以上のもののリスト。TCPスタック、デバイスレイヤ、NICドライ
バなど。プロトコルの複雑さ、同期時の競合発生などの理由により分岐が
不規則であり予測が困難
Memcachedのボトルネック
● ボトルネックの原因は「OSカーネル、ネットワーク・スタック、
NICドライバのコードの長さ」
○
○

命令ストリームのボトルネックが発生
仮にスループットがリニアにスケールしたとしても、1GbE帯域を使い切るに
は6コア、10GbEでは64コアのXeonが必要
CPU+FPGAによるボトルネック解消:
TSSP: Thin Server, Smart Pipe
● 複雑な処理はソフトウェア(Thin Server)で
● 簡単・大容量処理はハードウェア(Smart Pipes)で
TSSPによるMemcachedの実装
● MemcachedのGETをSoC上でハードウェア実装する
○
○

MemcachedのGET/SET比は最大30:1、GETは全体の97%を占める。
ハードウェアで実装の困難な複雑な機能はソフトウェアでカバーする
GETにはUDPを使い、SETにはTCPを使う。Memcachedはそもそもベスト
エフォートな使い方なのでUDPで問題ない

● ハッシュテーブル検索とKVSを分け、前者はハードで効率
的に実行
○

デコードされたリクエスト中のキー情報はハッシュテーブル検索ハードに渡
される
ハッシュテーブル実装
●
●

KVを保存するメモリ領域の管理はソフトウェアで
ハッシュテーブル管理はハードで
性能評価
●
●

MemcachedのFPGA実装(冒頭の論文)を用い、GETのみハードで実装
○ Altera DE4 (Stratix IV 530 FPGA), 4GB DDR2 x 2, GbE x 4
この既存実装での評価結果を元に、Zynq上でTSSPを実装した場合の電力性
能比を推量。Xeonの6倍、Atomの16倍を見込んでいる
まとめ
まとめ
● ARM+FPGAのコモディティ化のインパクト
○ しかしFPGA開発のコストは高い
○ CPUとFPGAの適材適所が焦点に

● Moving Computation to the Data
○ データのある場所で計算する、というパラダイム
○ Thin Server, Smart Pipes

● FPGAがデータセンタにやってくる
○ Memcached/MapReduceアプライアンス
○ データベース/KVS
○ … and more!
Questions?

More Related Content

Moving computation to the data (1)