最近モチベーションが下がっている。ネットを徘徊していたら、ちょっと面白いネタを見つけた:

文字通り「ネットワークがコンピューター」な金融HFTでのFPGAの使われ方

ここ数年HFTの分野では、FPGAで処理を実装するのがはやってきている、ということ。リンク先の記事からもリンクされている、Parallel Scientific: The Awesome Haskell FPGA Compilerは以前すこし眺めていたが、今回の記事を読んで全体像の理解が少し進んだ。なるほど、こんなところでも回路設計をしてしまう時代になったのね、という感じ。

10Gbpsのネットワークスイッチに入れてしまうというのであれば、当然Alteraで言えばStratixクラスの1個何十万もするFPGAを使うのだろう。外付けメモリもDDRみたいなレイテンシの大きいものではなく、RLDRAMやQDRといった、個人的には使用しているのをあまり見聞きしないタイプのメモリを使っているのではなかろうか。

もしこういったものがTCP/IPで通信をしているとすれば、Ethernet MACのIPから出てくるパケットをステートマシンでTCP/IP部分をデコードしてやり、中身のデータに基づいてガリガリ計算し、その結果に基づいてこれまたステートマシンでEthernet MAC IPに売買パケットを流し込む、というような流れになっているのだろう。そして売買の結果は、メモリに書き込んでおき、ログとして保存。これでソフトウェアは一切介在せずに株式やら為替の売買を実行する、と。もちろん、売買条件の設定などの初期化操作はソフトウェアで行うはずだが。

妄想するとなかなか面白そうな分野だなぁ。クオンツの元でブイブイ(死語)いわせるプログラマのイメージが。なるほど、金融業界は計算機分野でも、とにかく最新の技術に貪欲なのだと思う。関数型言語を使ってみたり、FPGAを使ってみたり、と。

# ひょっとしたらFPGAはAltera, Xilinxという大手ではなく、TabulaとかAchronixみたいな新興ベンダーを使ったりするのだろうか。

リンク先の記事だと、高位合成でうまくいっているのは少ない、とあるが、最近はAlteraもXilinxも高位合成分野に取り組んでいるので、HFT界隈に広まるのももうすぐだろう。というより、もう既に分野によってはASICでは高位合成は結構普通に使われているようだから、HFTであまり使われていない、というほうが個人的には驚き。

高位合成を使わず、手でHDLを書くのは、確かに熟練が要求される。初心者でも少し勉強すれば最低限は書けるようにはなると思うが、

  • 高速かつ複雑な論理でも安定して動作して
  • 外部モジュールとのインタフェースがしっかりしている
というふうに書けるようになるには、数年かかると思う(自分の経験上)。大体何MHzで動作させるためには、1クロックで何段くらいの論理までか、といったイメージもないと、高速な回路は書けない。このあたりは結局経験して感覚をつかまないといけない。

でも、繰り返しになるけれど、こういった職人的なやり方は、高位合成がもうすぐ一般化して少しずつ廃れていくのだと思うけど。

Comments