SlideShare ist ein Scribd-Unternehmen logo
1 von 31
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA にネットワーク処理を実装してきた話と、これからの話
• 船田悟史
– 1975 年 1 月 1 日生まれ、栃木県出身
– 東京工業大学情報理工学研究科計算工学専攻でした
– 東京工業大学無線研究部でした
– 今は、株式会社イーツリーズ・ジャパン 代表取締役社長
• 今日の中身
– FPGA 前夜
– FPGA でWebサーバを作る
– FPGA と CPU とイーサネット
– FPGA の大変なところ、おもしろいところ
– これから何をやりたい?
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA前夜 -  TCP/IP を聞いて知る
• アマチュア無線を使って TCP/IP 通信
– LinuxPC + TNC(Terminal Node Controller) + アマチュア無線機
• Linux には、 AF_AX25 が実装されています。
– 物理層 : アマチュア無線 430/1200MHz 帯、 1200bps(Bell202)
– リンク層 : AX.25( コールサインが MAC アドレス!)
– ネットワーク層以上 : TCP/IP, SMTP, NNTP, HTTP…
– 音声帯域 (1200Hz と 2200Hz) の2音を使って 1 と 0 を表現
– 音なので、ほかの無線機では、耳で通信の様子が聞こえる
– TCP/IP を音で感じることが出来る!
• スリーハンドシェーク  SYN-SYN/ACK-ACK
• パケットロスと、 TCP の再送
• メールの到着が、パケット通信の音でわかる。
• メールが送信されていったのが、音でわかる。
– コンピュータの気持ちがわかる。
• あー、がんばって再送しようとしてるけど、向こう側には聞こえてないんだなー
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA 前夜 -  TCP/IP を実装する (1-1)
• TNC-ZZ(1994-1995)
– もっと速いインターネット接続をアマチュア無線で実現したい! 
– イーサネットインターフェースを持った TNC( の一部分)
– FreeBSD の NE2000 デバドラのコードを参考に、アセンブラで NE2000 ドライバ
を作成
– イーサネット -AX.25 ブリッジとして動作する
NE2000
イーサネット
Z-80 系 CPU
(HD64180S)
ISA バス
Mbps シリアル
インターフェース モデム
変復調
ベースバンド
信号 アマチュア
無線機
担当範囲
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA 前夜 -  TCP/IP を実装する (1-2)
– イーサネットの勉強には最適でした。
– 毎回 UV-EPROM を書き換えるのが面倒。
• 紫外線を 20 分くらい当てるとデータが消える ROM
• 書き込みにも数分かかる。
– このあと、 BOOTP クライアントと、 TFTP クライアントも実装して、ネットブー
トする Z80 システムも作りました。 ( デバッグを早くするため)
出典「 LAN によるハードウェア制御」
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA 前夜 -  TCP/IP を実装する (2)
• picudp   (1999)
– PIC マイコンを使って、 Web サーバを実装した!という人が海外に現れる
• 世界最小の Web サーバ
• http://www-ccs.cs.umass.edu/shri/iPic.html
• まねしてみよう!
– TCP は面倒なので、とりあえず UDP のサーバ
• インターフェースは RS232C/SLIP
• IP アドレス固定 (10.0.0.1)
• 1 ビット受信すると、 1 ビット送信する
– パケット全体はバッファしない。
• http://sato-www.cs.titech.ac.jp/funada/picudp/
– Ping に答えるバージョン
• このあと、 PIC につないだサーミスタの値を UDP で返すように改造した
– UDP 温度計サーバ
» 実装したものはどっかになくしてしまいました。。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA 前夜 - まとめ
• TCP/IP, Ethernet 関連のプロトコルを実装してわかったこと。
– 入ってきたものに、 RFC 通りに正しく答えれば、動く!
• 実装方法はどうでも構わない。
• たとえ、
– C 言語でも、
– Z-80 アセンブラでも、
– PIC マイコンアセンブラでも、
– きっと FPGAでも。
• たまに RFC どおりではないものもあるが。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGAでWebサーバを作る
• なぜFPGAで作り始めたのか?
– Web での申し込みイベントが増えた
– そのたびにアクセス集中して、サービスがダウンする
– 100倍速いサーバがあればいいんじゃないか?
– FPGAで作ったら作れないか?
• 最近 10 万ゲートの FPGA が1万円くらいで買える (2000 年時点)
• メモリも安くなってきた
• CAM という特殊なメモリもある
– イーツリーズ・ジャパンでそれやろう!
• イーツリーズ・ジャパンの目標
– 100 倍速いサーバを作る。
– サービス事業者に買ってもらう。
– 過程として、上場する、ことを前提に、資金を集める。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGAでWebサーバを作る -  freeocean
• Freeocean
– HTTP プロキシ型のキャッシュサーバ
– 2006 年発売
– 50 万同時 TCP コネクション
– 出力帯域  1Gbps
– キャッシュ容量 最大 32GByte
– Name based のバーチャルホスト対応
– Hot-Hot の冗長構成対応
– IP アドレス単位、コネクション単位のトラフィックコントロール
– アクセスログ出力
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGAでWebサーバを作る
• どうやって作る?
– とにかく FPGA と、 Ethernet の PHY LSI を買う
– データシートを読む
– 基板をつくって、半田付けする
– イーサネットパケットを受信してみる
• ロジックアナライザで波形が見えればOK!
• 見えた!
– そのまま折り返しで、送信してみる
• ping と tcpdump
• PC側で送ったパケットと同じものが帰ってきた!
• 物理層OK
– イーサネットフレームを解析して、
• ARP リプライのフレームを作る回路を作る
• さきほどの送信回路につなぐ
• ARP 解決できた!
– IP と ICMP のヘッダ解析回路を作る
• ICMP応答ヘッダをつくる。データ部分はそのまま折り返す。
• IPヘッダを生成する。
• チェックサムがなかなか合わない。
• 送信回路につなぐ
• ICMP Echo Request に、FPGAが答えた!( 2001 年 3 月 )
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGAでWebサーバを作る
• ICMP echo reply まで作れれば、あとはひたすら TCP と HTTP とファイルシ
ステムをつくっていけばよい。
• 「。。。つくっていけばよい」ってそれほど簡単じゃない。
• この時点で、回路のパターン、法則性が見えてきた。
– デザインパターンのようなもの?
• すべて扱うものはパケット
– パケットが入ってきて、パケットが出て行く。
• ソフトウェアでの実装 (OS のなか)も同じ構造。
– ip_input(), ip_output(), tcp_input() など
• 回路もそう作ればよい。
– パケットが入ってきて、
– そのパケットのヘッダやデータに対して、計算や処理をして、
– パケットを出す
– 、、、の繰り返し。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA でWebサーバを作る
• UPL処理回路
– 入力を受けて、処理をして、出力する。
– 入力は1つだけ。
• 複数あると、検証のときの、入力パターンの組み合わせが爆発して大変
受信
FSM
処理
FSM
起動 送信
FSM
起動
パケットバッファ
メモリ
ヘッダ
レジスタ
ヘッダ
レジスタ
処理
ロジック
入力パケット 出力パケット
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA でWebサーバを作る
• UPLってなに?
– Universal Protocol Line
• なんでもパケットが通せる伝送路
– フロー制御付き の 片方向 の データ伝送路
• だたそれだけ。
• フロー制御はあったほうがよい
– 例
• 32bit のデータ信号線+イネーブル信号+フロー制御信号(次スライド)
• RS232C、パラレルポート
• USB
• イーサネットや、UDPや、TCPでもいい。
• RMIでもいい。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA でWebサーバを作る
– 具体的な実装例
• 32bit パラレルな UPL 伝送路
– FPGA 内部で使う
http://e-trees.jp/index.php/製品/UPLとは  より転載
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバをつくる -  UPL 処理モジュール回路合成系
• パケットの送受信部やステートマシンの定型部を書くのが面倒
• 同じ部分は、スクリプトで合成しましょう
– gene_uplmodule.awk
  .awk です。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバを作る -  gene_uplmodule
@ENTITY add_sub_module
@RECV 0 input 32
Command, 32
a, 32
b, 32
@END
@SEND 0 output 32
Result, 32
x, 32
@END
@STAGE add_sub_module
@SENSE command, a, b
@SUBST x
if( command(7 downto 0) = X”00” ) then
-- add
value_x <= value_a + value_b;
else
-- sub
value_x <= value_a – value_b;
end if;
@TO resut_output;
@END
@STAGE result_output
@SUBST result
result <= X”00”; -- success
@SEND output;
@END
Add_sub_module.vhd
受信
Add_sub_module
Result_output
送信
Reset
入力 UPL 出力 UPL
command a b result z
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA でWebサーバを作る -  UPL ユーティリティー回路ライブラリ群
• パケット合流回路
– さすがにすべての回路が1入力というわけにはいかない。
– 前提:データはいじらない
– パケット経路として、複数を1つにまとめる。
受信
FSM
送信
FSM
パケットバッファ
メモリ
入力パケット
出力パケット
受信
FSM
パケットバッファ
メモリ
入力パケット
受信
FSM
パケットバッファ
メモリ
入力パケット
アービタ
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバをつくる - UPLの利点と欠点
• 利点
– 回路同士が「電気的に」疎結合である
• 個々の回路モジュールで動作検証ができれば、全体でも動く
• 配置配線もしやすい
– 回路同士がパケットインターフェースである
• パケットでデータを捉えることが出来る
• UDP パケットにカプセル化して、外部に取り出しやすい
– Tcpdump で、回路のデバッグが出来る
• デバイス分割がやりやすい。
– FPGA間にパケットのインターフェースがあれば、とりあえずデバイス跨ぎができる。
• 欠点
– パケットに入りきらない情報の扱いが面倒
• 大きなデータはパケットに分割しないといけない
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバを作る - モジュール構成
TCP/IP
(v4/v6)
TCP/IP
(v4/v6) HTTPHTTP帯域制御帯域制御
IP フィルタIP フィルタ
コンテンツメモリ
ファイルシステム
コンテンツメモリ
ファイルシステム
キャッシュ
制御
キャッシュ
制御
コンテンツ
鮮度管理
コンテンツ
鮮度管理
負荷分散負荷分散
冗長化
負荷分散
冗長化
負荷分散
TCP
ポート転送
TCP
ポート転送
ユーザ
インターフェース
ユーザ
インターフェース
システムマネジメント
( SNMP,syslog)
システムマネジメント
( SNMP,syslog)
アクセス
ログ出力
アクセス
ログ出力
透過
フィルタ
透過
フィルタ
URL
リライト
URL
リライト
Web
Application
Firewall
Web
Application
Firewall
バーチャル
ホスト
バーチャル
ホスト
クライアント
Web
アプリケーション
サーバ
Web
アプリケーション
サーバ
ハードウェア部 ソフトウェア部
コンテンツ
アップデート
コンテンツ
アップデート
キャッシュ
ルール
キャッシュ
ルール
インターネット側からのアクセスを
すべてハードウェアにて高速処理
オリジンサーバアクセスを
ソフトウェアにより高機能化
イーサネット
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバを作る - 内部構成
Ethernet 、 IPv4/v6
TCP/Socket
HTTP
File System
Cache
Manager
Power supply
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバを作る - で、もうかってまっかー?
• 某通信事業者様の配信サーバ
– ウィルス対策ソフトウェアとパターンファイルを配信
• アイテック阪急阪神様
– 「バーストアクセス対応WEBサービス」
– http://www.itechh.ne.jp/related/burst.html
• 社内では、
– 東日本大震災のときの、放射線量情報のキャッシュ配信
– JAXA のロケットや人工衛星打ち上げのイベントの生中継
• お試しいただける装置がありますので、ぜひご活用ください。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバを作る - 苦労したところ
• TATが長い
– 1回が約2時間
• コンパイル (HDL 解析、 RTL 合成、 P&R 、 bitgen) がとにかく遅い
• 一行でも、パラメータだけでも変えると、全体コンパイル
– ソフトウェア業界と比べて、非常に遅れている。
– デバッグ、機能改善・追加に時間がかかる
• デバッグモジュールの活用、 Tcpdump ベースのデバッグ
• 物を作るのはお金がかかる
– 設計委託、製造委託で 2000 万円
• タイミングエラーは出てちゃ駄目
– これ、ちゃんと動かすための大前提です
• タスクマネージャ、タイマー等の集中管理部は作るのが大変
– 512k connection x 8timer = 4M timer の管理
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGA で Web サーバをつくる - IPコア販売
• IPコア事業始めました
– ハードウェアはお金がかかる
– ノウハウをお安く提供します
• e7cores (Xilinx 用です)
– e7ether (10/100M, 1G, 10G ) PHY とのインターフェース、イーサフレーム送受
信
– e7udpip (10/100M, 1G, 10G) UDP パケット送受信、 ARP/ICMP
– e7tcpip TCP サーバ機能、 TCP クライアント機能 ( 開発中)
– e7pcie (Gen1, Gen2) GPIO 機能、 DMA インターフェース機能、
             PC のメモリを FPGA から UPL でアクセス可能
– e7memiface MIG のコアを使って、 UPL でメモリアクセスを提供
– e7sata UPL で HDD/SSD に、メモリアクセスと同じようにアクセス ( 開発中 )
– e7lvdsiface (Spartan6, 7 シリーズ ) LVDS で 937Mbps/pair の UPL 経路を提供
014/3/10 FPGA エクストリーム・コンピューティング第5回
10GbE の取り組み
• 10GBASE-R 系は、 FPGA の高速トランシーバで対応可能
– Xilinx Vertex7, Kintex7
– Altera Stratix V, Arria V
– 10GBASE-T は、外付け PHYLSI が必要
• Xilinx は、 PCS/PMA は無料でライブラリ提供、 MAC は有償ライブラリ。
• Altera は、 PCS/PMA, MAC ともに有償ライブラリ。
• e7cores では、 Xilinx 用には MAC コアを販売可能です。
014/3/10 FPGA エクストリーム・コンピューティング第5回
10GbE への取り組み -  10G はここが大変
• ビットレートが高い
– GbE では、 8bit 125MHz
– 10GbE では、 64bit 156.25MHz
• フレーム間ギャップが短い
– GbE では、 12clock あった
– 10GbE では、 1clock しかない
• FIFO への制御をぎりぎりまで切り詰めないと難しい
• CRC計算が大変
– GbE では普通に LUT で CRC 計算できた
– 10GbE では、ビットスライスする方式が必要
– きっと、 40G,100G では、ハードマクロが必要だろう
• Altera は、すでに V シリーズで、ハードウェアで CRC 計算をサポートしている。
014/3/10 FPGA エクストリーム・コンピューティング第5回
10GbEへの取り組み - UDPエコーの動作
10GbE
ペイロードサイズ
2524 cycle
(12.620u 秒 )
251 cycle
(1.255u 秒 )
014/3/10 FPGA エクストリーム・コンピューティング第5回
これから何をやりたい?
• ハードウェアは何かとコストがかかる
– これを低減する工夫が必要!!
• どうやって?
– お金は(いっぱいは)ない、時間もあんまりない
– 少しずつ、作って、貯めて、
• ビルディングブロック構想
– 大きなFPGAのコンパイルには時間がかかる
→  小さなFPGAをいっぱい使う
– お客様ごとに、基板を作るのはお金と時間がかかる
→  小さなFPGA基板を、組み合わせて作る
– VHDLのコーディング(デバッグ)には時間がかかる
→  すでに出来上がったUPLモジュールを使いまわす
• ソフトウェアでは当たり前のことがFPGAでは出来ていない(と思う)
014/3/10 FPGA エクストリーム・コンピューティング第5回
これから何をやりたい - 今
• 少しずつ群ができつつある
– 回路設計製造業者( SI シナジーテクノロジー社、 ARKUS 社)との協業
– 機能試作を、さくっとできる環境とつくりたい
100BASE-TX 「 exStick 」
10GbE x4 「 Axpcie6031 」
Mini-ITX-FPGA 筐体SATA-FMC 「 Axfmc6040 」
1GbE x3 「 Axcmd6050 」
014/3/10 FPGA エクストリーム・コンピューティング第5回
おもう事 - イーサネットでいーさ
• FPGAとCPUをどうやってつなぐか?
– RS232C
– USB
– PCIExpress
– Ethernet
• イーサネットはデバイスドライバがいらない
– 10M から 100G まで、スケールする
– HUBを介して、複数の装置が接続できる
– アプリケーションは Socket インターフェースが使える
– インターネットを伝送路として使える
014/3/10 FPGA エクストリーム・コンピューティング第5回
おもう事 - FPGAとCPU
• CPUが得意なこと
– データはここにある。このデータをぐりぐりいじりたい
• 3GHz の ALU/ レジスタファイルは、やっぱり速い
• CPUには高性能なキャッシュメモリシステムがある
• 最先端で高速な I/O が安くつなげる
• FPGAが得意なこと
– 固定長のデータがここに流れている。このデータをちょこっといじりたい
• どんなにがんばっても 600MHz くらい。普通は 300MHz くらい
• キャッシュメモリがないので、外部メモリへのアクセスが多発すると性能が出ない
• I/O は広帯域 (1Tbps くらい ) に好きに作れる
• 演算も帯域にあわせて、いっぱい作れる。 1000 個はいける。
• 可変長データ処理はあまり得意ではない。特に文字列処理。
014/3/10 FPGA エクストリーム・コンピューティング第5回
FPGAって
• 使いこなすにはノウハウがいる
– あまりライブラリがない
• やりたいことをやるのにはいろいろ準備が必要
– ものをつくらないといけない、買ってこないといけない
• 高性能が求められる領域では、がんばれば何とかできることが多い
– 豊富な高速シリアルインターフェース
– メモリだって必要なだけつなげればいい
– パイプラインも好きに作れる
– 好きな演算器をいっぱいならべられる
• 苦労も多いけど、
やっぱりFPGAっておもしろい
014/3/10 FPGA エクストリーム・コンピューティング第5回
参考文献
• 「 PACKET RADIO TODAY( 小林直行著 ) 」で、イーサネット TNC が取り上
げられる
– CQ ham radio 1995 年10月号、 CQ 出版
• 「インターネット時代のハード制御、第2,3,4章」 (船田悟史著)
– トランジスタ技術 1999 年 7 月号、 CQ 出版
• 「イントロダクション ネットワーク I/O の世界へようこそ!」 (船田悟史
著)
– LAN によるハードウェア制御、 CQ 出版
• 「第2章 ギガビット Ethernet と FPGA の接続方法」(船田悟史著)
– FPGAマガジン No.3、CQ出版

Weitere ähnliche Inhalte

Was ist angesagt?

メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発Shinya Takamaeda-Y
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi愛美 林
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)Shinya Takamaeda-Y
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようShinya Takamaeda-Y
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6Kentaro Ebisawa
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータShinya Takamaeda-Y
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)Shinya Takamaeda-Y
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようShinya Takamaeda-Y
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向Shinya Takamaeda-Y
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)Shinya Takamaeda-Y
 
高速シリアル通信を支える技術
高速シリアル通信を支える技術高速シリアル通信を支える技術
高速シリアル通信を支える技術Natsutani Minoru
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングryos36
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出marsee101
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみたHiroki Nakahara
 

Was ist angesagt? (20)

メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
 
FPGAことはじめ
FPGAことはじめFPGAことはじめ
FPGAことはじめ
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
Pynq祭り資料
Pynq祭り資料Pynq祭り資料
Pynq祭り資料
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
 
高速シリアル通信を支える技術
高速シリアル通信を支える技術高速シリアル通信を支える技術
高速シリアル通信を支える技術
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 

Ähnlich wie 20140310 fpgax

20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-mainShotaro Uchida
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoTakefumi MIYOSHI
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 
仮想FPGAクラウド
仮想FPGAクラウド仮想FPGAクラウド
仮想FPGAクラウドEric Fukuda
 
Boost study14
Boost study14Boost study14
Boost study14fjnl
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
High speed-pc-router 201505
High speed-pc-router 201505High speed-pc-router 201505
High speed-pc-router 201505ykuga
 
Good Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLOGood Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLOIf_CQ
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理Motonori Shindo
 
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...Masanobu Saitoh
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたちt n
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobeYamauchi isamu
 

Ähnlich wie 20140310 fpgax (20)

20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
 
Fpga local 20130322
Fpga local 20130322Fpga local 20130322
Fpga local 20130322
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
仮想FPGAクラウド
仮想FPGAクラウド仮想FPGAクラウド
仮想FPGAクラウド
 
Boost study14
Boost study14Boost study14
Boost study14
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
High speed-pc-router 201505
High speed-pc-router 201505High speed-pc-router 201505
High speed-pc-router 201505
 
Good Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLOGood Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLO
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem...
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4) (and spdmem...
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
最近遊んだLinuxボードたち
最近遊んだLinuxボードたち最近遊んだLinuxボードたち
最近遊んだLinuxボードたち
 
IPv6技術動向
IPv6技術動向IPv6技術動向
IPv6技術動向
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobe
 
WalBの紹介
WalBの紹介WalBの紹介
WalBの紹介
 
POWER8ここだけの話
POWER8ここだけの話POWER8ここだけの話
POWER8ここだけの話
 
IPv6の現状
IPv6の現状IPv6の現状
IPv6の現状
 

Kürzlich hochgeladen

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Kürzlich hochgeladen (7)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

20140310 fpgax

  • 1. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA にネットワーク処理を実装してきた話と、これからの話 • 船田悟史 – 1975 年 1 月 1 日生まれ、栃木県出身 – 東京工業大学情報理工学研究科計算工学専攻でした – 東京工業大学無線研究部でした – 今は、株式会社イーツリーズ・ジャパン 代表取締役社長 • 今日の中身 – FPGA 前夜 – FPGA でWebサーバを作る – FPGA と CPU とイーサネット – FPGA の大変なところ、おもしろいところ – これから何をやりたい?
  • 2. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA前夜 -  TCP/IP を聞いて知る • アマチュア無線を使って TCP/IP 通信 – LinuxPC + TNC(Terminal Node Controller) + アマチュア無線機 • Linux には、 AF_AX25 が実装されています。 – 物理層 : アマチュア無線 430/1200MHz 帯、 1200bps(Bell202) – リンク層 : AX.25( コールサインが MAC アドレス!) – ネットワーク層以上 : TCP/IP, SMTP, NNTP, HTTP… – 音声帯域 (1200Hz と 2200Hz) の2音を使って 1 と 0 を表現 – 音なので、ほかの無線機では、耳で通信の様子が聞こえる – TCP/IP を音で感じることが出来る! • スリーハンドシェーク  SYN-SYN/ACK-ACK • パケットロスと、 TCP の再送 • メールの到着が、パケット通信の音でわかる。 • メールが送信されていったのが、音でわかる。 – コンピュータの気持ちがわかる。 • あー、がんばって再送しようとしてるけど、向こう側には聞こえてないんだなー
  • 3. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA 前夜 -  TCP/IP を実装する (1-1) • TNC-ZZ(1994-1995) – もっと速いインターネット接続をアマチュア無線で実現したい!  – イーサネットインターフェースを持った TNC( の一部分) – FreeBSD の NE2000 デバドラのコードを参考に、アセンブラで NE2000 ドライバ を作成 – イーサネット -AX.25 ブリッジとして動作する NE2000 イーサネット Z-80 系 CPU (HD64180S) ISA バス Mbps シリアル インターフェース モデム 変復調 ベースバンド 信号 アマチュア 無線機 担当範囲
  • 4. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA 前夜 -  TCP/IP を実装する (1-2) – イーサネットの勉強には最適でした。 – 毎回 UV-EPROM を書き換えるのが面倒。 • 紫外線を 20 分くらい当てるとデータが消える ROM • 書き込みにも数分かかる。 – このあと、 BOOTP クライアントと、 TFTP クライアントも実装して、ネットブー トする Z80 システムも作りました。 ( デバッグを早くするため) 出典「 LAN によるハードウェア制御」
  • 5. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA 前夜 -  TCP/IP を実装する (2) • picudp   (1999) – PIC マイコンを使って、 Web サーバを実装した!という人が海外に現れる • 世界最小の Web サーバ • http://www-ccs.cs.umass.edu/shri/iPic.html • まねしてみよう! – TCP は面倒なので、とりあえず UDP のサーバ • インターフェースは RS232C/SLIP • IP アドレス固定 (10.0.0.1) • 1 ビット受信すると、 1 ビット送信する – パケット全体はバッファしない。 • http://sato-www.cs.titech.ac.jp/funada/picudp/ – Ping に答えるバージョン • このあと、 PIC につないだサーミスタの値を UDP で返すように改造した – UDP 温度計サーバ » 実装したものはどっかになくしてしまいました。。
  • 6. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA 前夜 - まとめ • TCP/IP, Ethernet 関連のプロトコルを実装してわかったこと。 – 入ってきたものに、 RFC 通りに正しく答えれば、動く! • 実装方法はどうでも構わない。 • たとえ、 – C 言語でも、 – Z-80 アセンブラでも、 – PIC マイコンアセンブラでも、 – きっと FPGAでも。 • たまに RFC どおりではないものもあるが。
  • 7. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGAでWebサーバを作る • なぜFPGAで作り始めたのか? – Web での申し込みイベントが増えた – そのたびにアクセス集中して、サービスがダウンする – 100倍速いサーバがあればいいんじゃないか? – FPGAで作ったら作れないか? • 最近 10 万ゲートの FPGA が1万円くらいで買える (2000 年時点) • メモリも安くなってきた • CAM という特殊なメモリもある – イーツリーズ・ジャパンでそれやろう! • イーツリーズ・ジャパンの目標 – 100 倍速いサーバを作る。 – サービス事業者に買ってもらう。 – 過程として、上場する、ことを前提に、資金を集める。
  • 8. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGAでWebサーバを作る -  freeocean • Freeocean – HTTP プロキシ型のキャッシュサーバ – 2006 年発売 – 50 万同時 TCP コネクション – 出力帯域  1Gbps – キャッシュ容量 最大 32GByte – Name based のバーチャルホスト対応 – Hot-Hot の冗長構成対応 – IP アドレス単位、コネクション単位のトラフィックコントロール – アクセスログ出力
  • 9. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGAでWebサーバを作る • どうやって作る? – とにかく FPGA と、 Ethernet の PHY LSI を買う – データシートを読む – 基板をつくって、半田付けする – イーサネットパケットを受信してみる • ロジックアナライザで波形が見えればOK! • 見えた! – そのまま折り返しで、送信してみる • ping と tcpdump • PC側で送ったパケットと同じものが帰ってきた! • 物理層OK – イーサネットフレームを解析して、 • ARP リプライのフレームを作る回路を作る • さきほどの送信回路につなぐ • ARP 解決できた! – IP と ICMP のヘッダ解析回路を作る • ICMP応答ヘッダをつくる。データ部分はそのまま折り返す。 • IPヘッダを生成する。 • チェックサムがなかなか合わない。 • 送信回路につなぐ • ICMP Echo Request に、FPGAが答えた!( 2001 年 3 月 )
  • 10. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGAでWebサーバを作る • ICMP echo reply まで作れれば、あとはひたすら TCP と HTTP とファイルシ ステムをつくっていけばよい。 • 「。。。つくっていけばよい」ってそれほど簡単じゃない。 • この時点で、回路のパターン、法則性が見えてきた。 – デザインパターンのようなもの? • すべて扱うものはパケット – パケットが入ってきて、パケットが出て行く。 • ソフトウェアでの実装 (OS のなか)も同じ構造。 – ip_input(), ip_output(), tcp_input() など • 回路もそう作ればよい。 – パケットが入ってきて、 – そのパケットのヘッダやデータに対して、計算や処理をして、 – パケットを出す – 、、、の繰り返し。
  • 11. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA でWebサーバを作る • UPL処理回路 – 入力を受けて、処理をして、出力する。 – 入力は1つだけ。 • 複数あると、検証のときの、入力パターンの組み合わせが爆発して大変 受信 FSM 処理 FSM 起動 送信 FSM 起動 パケットバッファ メモリ ヘッダ レジスタ ヘッダ レジスタ 処理 ロジック 入力パケット 出力パケット
  • 12. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA でWebサーバを作る • UPLってなに? – Universal Protocol Line • なんでもパケットが通せる伝送路 – フロー制御付き の 片方向 の データ伝送路 • だたそれだけ。 • フロー制御はあったほうがよい – 例 • 32bit のデータ信号線+イネーブル信号+フロー制御信号(次スライド) • RS232C、パラレルポート • USB • イーサネットや、UDPや、TCPでもいい。 • RMIでもいい。
  • 13. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA でWebサーバを作る – 具体的な実装例 • 32bit パラレルな UPL 伝送路 – FPGA 内部で使う http://e-trees.jp/index.php/製品/UPLとは  より転載
  • 14. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバをつくる -  UPL 処理モジュール回路合成系 • パケットの送受信部やステートマシンの定型部を書くのが面倒 • 同じ部分は、スクリプトで合成しましょう – gene_uplmodule.awk   .awk です。
  • 15. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバを作る -  gene_uplmodule @ENTITY add_sub_module @RECV 0 input 32 Command, 32 a, 32 b, 32 @END @SEND 0 output 32 Result, 32 x, 32 @END @STAGE add_sub_module @SENSE command, a, b @SUBST x if( command(7 downto 0) = X”00” ) then -- add value_x <= value_a + value_b; else -- sub value_x <= value_a – value_b; end if; @TO resut_output; @END @STAGE result_output @SUBST result result <= X”00”; -- success @SEND output; @END Add_sub_module.vhd 受信 Add_sub_module Result_output 送信 Reset 入力 UPL 出力 UPL command a b result z
  • 16. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA でWebサーバを作る -  UPL ユーティリティー回路ライブラリ群 • パケット合流回路 – さすがにすべての回路が1入力というわけにはいかない。 – 前提:データはいじらない – パケット経路として、複数を1つにまとめる。 受信 FSM 送信 FSM パケットバッファ メモリ 入力パケット 出力パケット 受信 FSM パケットバッファ メモリ 入力パケット 受信 FSM パケットバッファ メモリ 入力パケット アービタ
  • 17. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバをつくる - UPLの利点と欠点 • 利点 – 回路同士が「電気的に」疎結合である • 個々の回路モジュールで動作検証ができれば、全体でも動く • 配置配線もしやすい – 回路同士がパケットインターフェースである • パケットでデータを捉えることが出来る • UDP パケットにカプセル化して、外部に取り出しやすい – Tcpdump で、回路のデバッグが出来る • デバイス分割がやりやすい。 – FPGA間にパケットのインターフェースがあれば、とりあえずデバイス跨ぎができる。 • 欠点 – パケットに入りきらない情報の扱いが面倒 • 大きなデータはパケットに分割しないといけない
  • 18. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバを作る - モジュール構成 TCP/IP (v4/v6) TCP/IP (v4/v6) HTTPHTTP帯域制御帯域制御 IP フィルタIP フィルタ コンテンツメモリ ファイルシステム コンテンツメモリ ファイルシステム キャッシュ 制御 キャッシュ 制御 コンテンツ 鮮度管理 コンテンツ 鮮度管理 負荷分散負荷分散 冗長化 負荷分散 冗長化 負荷分散 TCP ポート転送 TCP ポート転送 ユーザ インターフェース ユーザ インターフェース システムマネジメント ( SNMP,syslog) システムマネジメント ( SNMP,syslog) アクセス ログ出力 アクセス ログ出力 透過 フィルタ 透過 フィルタ URL リライト URL リライト Web Application Firewall Web Application Firewall バーチャル ホスト バーチャル ホスト クライアント Web アプリケーション サーバ Web アプリケーション サーバ ハードウェア部 ソフトウェア部 コンテンツ アップデート コンテンツ アップデート キャッシュ ルール キャッシュ ルール インターネット側からのアクセスを すべてハードウェアにて高速処理 オリジンサーバアクセスを ソフトウェアにより高機能化 イーサネット
  • 19. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバを作る - 内部構成 Ethernet 、 IPv4/v6 TCP/Socket HTTP File System Cache Manager Power supply
  • 20. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバを作る - で、もうかってまっかー? • 某通信事業者様の配信サーバ – ウィルス対策ソフトウェアとパターンファイルを配信 • アイテック阪急阪神様 – 「バーストアクセス対応WEBサービス」 – http://www.itechh.ne.jp/related/burst.html • 社内では、 – 東日本大震災のときの、放射線量情報のキャッシュ配信 – JAXA のロケットや人工衛星打ち上げのイベントの生中継 • お試しいただける装置がありますので、ぜひご活用ください。
  • 21. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバを作る - 苦労したところ • TATが長い – 1回が約2時間 • コンパイル (HDL 解析、 RTL 合成、 P&R 、 bitgen) がとにかく遅い • 一行でも、パラメータだけでも変えると、全体コンパイル – ソフトウェア業界と比べて、非常に遅れている。 – デバッグ、機能改善・追加に時間がかかる • デバッグモジュールの活用、 Tcpdump ベースのデバッグ • 物を作るのはお金がかかる – 設計委託、製造委託で 2000 万円 • タイミングエラーは出てちゃ駄目 – これ、ちゃんと動かすための大前提です • タスクマネージャ、タイマー等の集中管理部は作るのが大変 – 512k connection x 8timer = 4M timer の管理
  • 22. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGA で Web サーバをつくる - IPコア販売 • IPコア事業始めました – ハードウェアはお金がかかる – ノウハウをお安く提供します • e7cores (Xilinx 用です) – e7ether (10/100M, 1G, 10G ) PHY とのインターフェース、イーサフレーム送受 信 – e7udpip (10/100M, 1G, 10G) UDP パケット送受信、 ARP/ICMP – e7tcpip TCP サーバ機能、 TCP クライアント機能 ( 開発中) – e7pcie (Gen1, Gen2) GPIO 機能、 DMA インターフェース機能、              PC のメモリを FPGA から UPL でアクセス可能 – e7memiface MIG のコアを使って、 UPL でメモリアクセスを提供 – e7sata UPL で HDD/SSD に、メモリアクセスと同じようにアクセス ( 開発中 ) – e7lvdsiface (Spartan6, 7 シリーズ ) LVDS で 937Mbps/pair の UPL 経路を提供
  • 23. 014/3/10 FPGA エクストリーム・コンピューティング第5回 10GbE の取り組み • 10GBASE-R 系は、 FPGA の高速トランシーバで対応可能 – Xilinx Vertex7, Kintex7 – Altera Stratix V, Arria V – 10GBASE-T は、外付け PHYLSI が必要 • Xilinx は、 PCS/PMA は無料でライブラリ提供、 MAC は有償ライブラリ。 • Altera は、 PCS/PMA, MAC ともに有償ライブラリ。 • e7cores では、 Xilinx 用には MAC コアを販売可能です。
  • 24. 014/3/10 FPGA エクストリーム・コンピューティング第5回 10GbE への取り組み -  10G はここが大変 • ビットレートが高い – GbE では、 8bit 125MHz – 10GbE では、 64bit 156.25MHz • フレーム間ギャップが短い – GbE では、 12clock あった – 10GbE では、 1clock しかない • FIFO への制御をぎりぎりまで切り詰めないと難しい • CRC計算が大変 – GbE では普通に LUT で CRC 計算できた – 10GbE では、ビットスライスする方式が必要 – きっと、 40G,100G では、ハードマクロが必要だろう • Altera は、すでに V シリーズで、ハードウェアで CRC 計算をサポートしている。
  • 26. 014/3/10 FPGA エクストリーム・コンピューティング第5回 これから何をやりたい? • ハードウェアは何かとコストがかかる – これを低減する工夫が必要!! • どうやって? – お金は(いっぱいは)ない、時間もあんまりない – 少しずつ、作って、貯めて、 • ビルディングブロック構想 – 大きなFPGAのコンパイルには時間がかかる →  小さなFPGAをいっぱい使う – お客様ごとに、基板を作るのはお金と時間がかかる →  小さなFPGA基板を、組み合わせて作る – VHDLのコーディング(デバッグ)には時間がかかる →  すでに出来上がったUPLモジュールを使いまわす • ソフトウェアでは当たり前のことがFPGAでは出来ていない(と思う)
  • 27. 014/3/10 FPGA エクストリーム・コンピューティング第5回 これから何をやりたい - 今 • 少しずつ群ができつつある – 回路設計製造業者( SI シナジーテクノロジー社、 ARKUS 社)との協業 – 機能試作を、さくっとできる環境とつくりたい 100BASE-TX 「 exStick 」 10GbE x4 「 Axpcie6031 」 Mini-ITX-FPGA 筐体SATA-FMC 「 Axfmc6040 」 1GbE x3 「 Axcmd6050 」
  • 28. 014/3/10 FPGA エクストリーム・コンピューティング第5回 おもう事 - イーサネットでいーさ • FPGAとCPUをどうやってつなぐか? – RS232C – USB – PCIExpress – Ethernet • イーサネットはデバイスドライバがいらない – 10M から 100G まで、スケールする – HUBを介して、複数の装置が接続できる – アプリケーションは Socket インターフェースが使える – インターネットを伝送路として使える
  • 29. 014/3/10 FPGA エクストリーム・コンピューティング第5回 おもう事 - FPGAとCPU • CPUが得意なこと – データはここにある。このデータをぐりぐりいじりたい • 3GHz の ALU/ レジスタファイルは、やっぱり速い • CPUには高性能なキャッシュメモリシステムがある • 最先端で高速な I/O が安くつなげる • FPGAが得意なこと – 固定長のデータがここに流れている。このデータをちょこっといじりたい • どんなにがんばっても 600MHz くらい。普通は 300MHz くらい • キャッシュメモリがないので、外部メモリへのアクセスが多発すると性能が出ない • I/O は広帯域 (1Tbps くらい ) に好きに作れる • 演算も帯域にあわせて、いっぱい作れる。 1000 個はいける。 • 可変長データ処理はあまり得意ではない。特に文字列処理。
  • 30. 014/3/10 FPGA エクストリーム・コンピューティング第5回 FPGAって • 使いこなすにはノウハウがいる – あまりライブラリがない • やりたいことをやるのにはいろいろ準備が必要 – ものをつくらないといけない、買ってこないといけない • 高性能が求められる領域では、がんばれば何とかできることが多い – 豊富な高速シリアルインターフェース – メモリだって必要なだけつなげればいい – パイプラインも好きに作れる – 好きな演算器をいっぱいならべられる • 苦労も多いけど、 やっぱりFPGAっておもしろい
  • 31. 014/3/10 FPGA エクストリーム・コンピューティング第5回 参考文献 • 「 PACKET RADIO TODAY( 小林直行著 ) 」で、イーサネット TNC が取り上 げられる – CQ ham radio 1995 年10月号、 CQ 出版 • 「インターネット時代のハード制御、第2,3,4章」 (船田悟史著) – トランジスタ技術 1999 年 7 月号、 CQ 出版 • 「イントロダクション ネットワーク I/O の世界へようこそ!」 (船田悟史 著) – LAN によるハードウェア制御、 CQ 出版 • 「第2章 ギガビット Ethernet と FPGA の接続方法」(船田悟史著) – FPGAマガジン No.3、CQ出版