ReConFig ’09: Day 3

– A reconfigurable architecture for stereo-assisted detection of point features for robot mapping
Active sensors: sonar or radar is effective in low density, low noise, low interference environment. (Low density というのが、なるほど、と思った)
Passive sensors like vision systems are effective in practical situations.
Dynamic programming を使ってステレオ処理をやるらしい。かっこいいぞ!
– FPGA implementation for direct kinematics of a spherical robot manipulator
ロボットアームがいまどういう状態になっていて、どういうふうに力をいれれば所望の状態に持って行けるかを計算する。行列演算。
– Parallax‐Docking and Reconfiguration of Field Programmable Robot Arrays using an Intermittently‐Powered One‐Hot Controller
Field programmable robot array!
マイクロロボットですよ。ロボットは configuration 情報をもっており、いろいろ書き換えられる。MEMS な足で動き回ったり、MRAM based な nonvolatile flip-flop とかを持っている模様。
すげえかっこいい。なんじゃこりゃー。
[ Session SC1 : Track on Reconfigurable Computing for Security and Cryptography ]
– Improving the Security of Dual Rail Logic in FPGA using Controlled Placement and Routing
消費電力からのサイドチャネルアタックを防ぐために、逆の論理で動く回路をつけて対称にするやりかたがあるわけだが、それをうまくやるための FPGA アーキテクチャと設計ツールの研究。
– Accelerating Cryptographic Applications Using Dynamically Reconfigurable Functional Units
村上先生のところの発表。フランスの人ですが。
Reconfigurable functional unit を持った ASIP (Application Specific Instruction-set Processor) を作って暗号を高速化しましょう。
– Tailoring a Reconfigurable Platform to SHA‐256 and HMAC through Custom Instructions and Peripherals.
[Session SC2 : Track on Reconfigurable Computing for Security and Cryptography]
– Observing the randomness in RO‐based TRNG
Ring oscillator based TRNG!
デバイスは STRATIX. FPL ’08 にもあったかな…
– Proof‐carrying Hardware: Towards Runtime Verification of Reconfigurable Modules
こういう研究は大事だと思うのだが、どういうタイミングから現実的なものになってくるのかね?ソフトウェアでそういうもの (つまり、実行するバイナリが安全であると証明するもの・仕掛け) があるか、といわれるとそれは微妙だったりするし、しかし、ハードウェアであるからこそ大事なのかもしれない。うーん。。。
モジュールを使う側の検証にかかる時間をなるべく少なくして、負担をモジュールを作る側に移すことが大事なのか。なるほど。

ReConFig ’09

[Opening]
– 131 submitted papers
– 42 full papers
– 35 posters
– 4 from Japan (5位くらい)
[ Keynote 1 ]
Semiconductor in transition:
– 32nm scheduled to debut by 2010
– 22nm is deemed feasible
– fewer, new architectures on the latest processes
– programmability and concurrency are the new imperatives
Parallel processing becomes Chip-level Multi-core processing (CMP)
– Power dissipation is a dominant, cross-cutting concern
Xilinx vision: fabless & programmability.
よく考えるとああいう最先端のチップを fabless vendor が作るってすごい。
SPARTAN-6 では昔のように、Parallel I/O は外周に配置されているが、Virtex-6 では内側にある。かっこいい。
消費電力は最大で 65% 減っている。
Linux 2.6.30 included the MicroBlaze architecture for the first time in a mainstream kernel release! まじか!!
QEMU + PetaLinux で、実機がなくてもデバッグできる。

Embedded Software design cost already exceeds hardware design cost.
並列プログラミングが問題。
Concurrent software compiler: enables compilation and SW development in highly parallel processing SOCs. Productivity +200% in SW. Expected in 2013.
[ General Session 1: Arithmetics ]
– FPGA implementation of decimal floating-point accurate scalar product unit with a parallel fixed-point multiplier
10進です。
iEEE754-2008 の decimal64 data format. BCD使って計算する。
Virtex-II Pro での周波数は 70MHz+ で、悪くない。パイプライン段数は 11.
“It makes me nervous to fly on airplanes, since I know they are designed using floating-point arithmetic” Alston Scott Householder.
– Runtime memory allocation in a heterogeneous reconfigurable platform
TUDelft の人。
しかしわし、こういう話はわからんちゅうに。
– Hotspot Mitigation using Dynamic Partial Reconfiguration for Improved Performance
Temperature distribution is not uniform → Temperature controlled reconfiguration をしましょう、という話。温度は ring oscillator で測るのか!
それで、しんどいところを移動させることで、全体の発熱を抑えることができるらしい。結果として速い周波数のまま動かせてスループットが上がるのか。なるほどー。
– A systolic array based architecture for implementing multivariate polynomial interpolation tasks
なんかプログラムと違うぞ、と考えていて、Session 1 と 2 がfuse されている、ということにやっときづいた。
どういうことだ・・・
[ General Session 3: New FPGA Architectures ]
– A Novel High-Density Single-Event Upset Hardened Configurable SRAM Applied to FPGA.
Xilinx の QPro シリーズでは 4SEU/Day くらい。
TMR + Scrubbing が必要かな。
SEU-hardened CSRAM というのを提案。
PMOS トランジスタを入れて、8トランジスタ/Cell になるけど、これならそれほど大きくないよね、という話。
6-T SRAM だと 29um^2 くらいだけど、このやりかただと 32um^2 くらい、だと思った。数字間違ってたらごめんなさい。でも、オーバーヘッドは 10% くらい。
SEU が起きる threshold みたいなのは MeV で測るのかしらん?
勉強しないと…
– MRAM based eFPGAs: Programming and silicon flows, …
SRAM is fast, easy to reconfigure, but volatile.
Flash is nonvolatile, but slow.
MRAM is… wow.
shadow reconfiguration: update magnetic information independently from the latch configuration (change committed later).
SR とかは普通にできるっぽい。
[ Session HPC1: Track on High-Performance Reconfigurable Computing ]
– A Traversal Cache Framework for FPGA Acceleration of Pointer Data Structures: A Case Study on Barnes-Hut N-body Simulation
FPGA を使う場合にしんどいのはポインタを使った間接アクセスで、アクセスパターンが irregular になるので遅くなる。間に traversal cache を入れて、うまくバンド幅を稼げるようにしたい。
普通の traversal cache は同じアクセスパターンが繰り返される場合に効果があるが、それではたいていはうまくいかない。そこで、似たようなアクセスパターンでも効くように改善。
n体問題ではうまくアクセスレイテンシを隠蔽できたそうだ。
濱田さんの実装も参考にしたらどうよ、と平木先生。
– Triple line-based playout for Go
碁ってよくわかってなかったんですが、なんか理解した気がする。
ひとつ石を置いたときにがらっと場がかわることがあるので、実装はけっこう難しい。
碁盤を3段ずつにわけてスキャンするのは、19×19だとでかすぎるから。
ソフトウェアの倍くらい出ているが、こういう問題では性能でなさそうなので、すごいのかも。
– Scalability Studies of the BLASTn Scan and Ungapped Extention Functions
Univ. of North Carolina at Charlotte
かなり速い。ベンチマークには env_nt とか env_nr database を使っているので、scalability issue は問題なさそうだ。処理は NCBI BLAST に準じているとのこと。データセットも現実的だし、価格対性能比なんかも示しており、非常に好感が持てる。
TimeLogic Decypher Machine というのを比較に使っているけど、これなんだろ。Quad-core Xeon と FPGA が載っているらしい。これ か。
配列関係はバンド幅が手強いのでやらずにきたんだが、最近は PCIe とかあるし、やってみるかなー。
– Low power, reconfigurable computing platform for spacecraft
High throughput, radiation tolerant and low power. Streaming 処理とかしたい。
FPPA: Field programmable processor array
NASA と組んでいる。
[ Poster 1 ]
– Prevention of hot spot development on coarse-grained DR architectures
– Floating point hardware for embedded processors in FPGAs: Design space exploration for performance and area
– A 10Gbps OTN framer implementation targeting FPGA devices
– FPGA implementations of BCD multipliers
– Matrix multiplication based on scalable macro-pipelined FPGA accelerator
– PCIREX: a fast prototyping platform for TMR DR systems
– Speeding up fault injection for asynchronous logic by FPGA-based emulation
– Base-calling in DNA pyrosequencing with reconfigurable bayesian network
最後のやつに興味があったのですが、cancel っぽい。

デザインガイア2009: Dec.04, 2009

[ FLOPS2D の設計コンセプト ]
JAXA における数値シミュレーション:
– 1980 年に M380 で二次元翼
– NS-I (1987): 1GFLOPS
– NS-II (1995): 数値風洞 : ベクトル計算機 280GFLOPS
– NS-III (2000): スカラ型 9.7TFLOPS
– JSS (2009): 140TFLOPS
二次元翼→三次元翼→オイラー全機→反応流→タービン全周解析→NS全機解析→…
三次元非定常計算の例: 液噴流コアの直接数値計算 (気液二相解析):
– 格子点: 60億
– 格子幅: 0.6um
– 5760コア、60TFLOPSで1ヶ月
– 出力総量: 153TB
100倍の計算をしようと思ったらどうするか…?
いろいろなCFDのコードがあって、メモリアクセスが主だったりディスクアクセスが主だったりする。ということは、固定されたアーキテクチャではしんどい。
リコンフィギャラブルで、「運用可能な程度にコンパクト」なシステム方式。
さきほどの乱流噴霧のだと、実行効率は4%くらいなので、もうちょっと効率よくしたい…
非定常計算が増えているのでファイル処理が問題。
柴田先生: 計算に合わせて構造を変える、というのは、つなぎかたを変えることを考えている? それともFPGAの中だけ? → 両方を考えています。現段階では機能を詰め込めるか、というところが問題。将来的にはバックプレーン的なもので専用の interconnect を作ることも考えている。
京先生: 4% くらいの実効、というボトルネックはどこにあるか解析されていますか? → 噴流の問題では通信が問題になってしまっている。実際のところスカラ型の並列計算機で 4% というのはそんなに悪くないと考えているが、ひと桁効率をあげたい。
山口先生: GPGPUでもGRAPEのような専用パイプラインでもなくFPGAなのはなぜでしょう? → GPUやCellのほうが性能は出しやすいのだが、センター運用という観点で reconfigurability に魅力を感じている。
泉先生: いまのソフトウェア実装は並列システムに適した実装 (データの空間的局所性) になっている? → はい。HPF 系の言語を使っているのでわりと楽にかけています。MPI を使う場合はデータの局所性を考えてやっている。マルチコアに関してはコンパイラに任せてスレッド並列化し、ユーザはチップ間の並列化をチューニングする感じ。
中條先生: ホストに接続できるカードの枚数は上限がある? → プロトコル的には 64 くらいまでだけど、まだ実装はしていない (し、ハードウェア的には制限がないはず)
京先生: どれくらい市場規模があるか、というのがメーカーの人間としては気になります → CFDの計算機の潜在的な需要は高いが、大規模なCFDとなるとあまり売れないと思う。それでも共通利用施設としての計算機センターとしてシステムを提供することは重要。
[ 各種暗号処理に適した2入力LUTプログラマブルロジックアーキテクチャの検討 ]
2入力LUTからなるePLXcryptと、sbox用のメモリMEMcrypt.
DES, AES, Camellia, などを実装することを考慮している。
ePLXcrypt は、配線と LUT の粒度を変えることでトランジスタ数を 40% くらい削減。
中原先生: LUTの入力サイズが2、というのが気になる。配線ふえないのはなぜ? → XOR とかが多いので。
山口先生: 結局はこれ、粗粒度アーキテクチャ的な方向なのでは? → ビットシフトとかがどれくらいうまくできるかがよくわからないので、検討していきたい。
京先生: 開発ツールは? → ePLX は専用のツールがある。ePLXcrypt はまだない。
[ マルチFPGAシステムFLOPS-2Dに向けたパイプライン構築手法の検討 ]
RER! RER!
中條先生: PCクラスタの限界というのは台数を増やしても性能が上がらないということ? →通信が飽和しちゃう。
回路を分割した場合の複数のFPGAの同期はどうしている? → そのうち…
柴田先生: 複数のFPGAに分割するときの問題にはまず通信量があるのでは? → 切り口にするところはなるべく細いところを手で探して、そこを候補点にしている。
山口先生: メモリボトルネックなのか、演算密度が高いのか、発表ではよくわからなかった →
名古屋先生: 分割したもののひとつだけが速くなっていても全体は速くなりませんよね → グローバル最適化が必要だと思います…
[ 3アドレスQDDマシン用コードの最適化アルゴリズムについて ]
Binary Decision Diagram: 論理関数を評価してシミュレーションを行う。
評価時間は平均ステップ数に依存。
MDD(k): BDDの2値変数をk個ずつグループ化した決定グラフ。
最大でBDDのk倍速くなるが、メモリ量が2^kに比例して必要。
で、QDD を評価するための専用マシンを作る。
ふんがさん: 命令長とかアドレス長は? → 命令が32bitで、アドレスが8bitくらいで3アドレッシング。ほんとはQDDだから4アドレス入れたいけど、そうするとアドレス幅が短くなりすぎて、大きな関数が評価できなくなってしまう。
柴田先生: どの変数とどの変数を合体させるのかとか評価順とかを含めて最適化している? →
[ 動的再構成型可変長複合回路の性能評価 ]
すみません、ちょっと席を外しておりました。
[ H264エンコーダのコア関数のSTPエンジンへの実装 ]
H264は動き予測が高度で、2倍以上の圧縮効率。だが、CPUでは大変。
NECの STP (Stream transpose) エンジン搭載の X-bridge に実装。
む、これって DRP か!!
泉先生: いまのチューニングは将来はコンパイラがやってくれそうか? → いまは手作業です。将来はやってくれると信じたい。
堀先生: オフロードしたのは全体のどれくらい? → 11% くらい。他の部分も同じくらいいけるかな、と思っている (が、関数を選ばないと難しい)
堀先生: 配列にアクセスできるのはふたつまで、というのは改善できる?→ DP RAM なので、たくさん使えば同時アクセス数は増やせます

デザインガイア2009: Dec.03, 2009 午後

午後の RECONF
[SRAM型FPGAの部分再構成によるエラー訂正手法の一検討]
SEUで回路が壊れたときにそこを部分再構成する。
Virtex-4 からフレーム単位で部分再構成ができるが、Xilinx のツールではできない。
九工大 中原先生: TMR自体のエラーは考えていない? → voter は壊れないものとしている。voter のところは一定時間間隔で scrubbing (書き直し?) することで信頼性を確保すればいい。
堀先生: フレーム単位での部分再構成は EDA がサポートしていない、というより、1フレームに収まるモジュールは扱えるけど、複数フレームにまたがるようなモジュールはダメ、ということであっていますか? → はい。
堀先生: Readback は誰がやっている? → 外部のPCでやっています。FPGA内部でやるよりは、同じボードにそういう回路を載せることを考えている。
[ MEMS を用いた反転・非反転ダイナミック光再構成型ゲートアレイ ]
TI のデジタルミラー (1024×768) を使用。応答時間は数 ms.
ゲートアレイのほうは、フォトダイオードの接合容量をメモリとして使うやつ。
LUT には 16 個のフォトダイオードがある。でも、照射する点の数が増えるとパワーが下がるので、なるべく照射点数は抑えたい。それで、LUT あたり 4 つのビット反転用フォトダイオードを追加して、それを使って転送ビット数を増やせるかな、という研究。
22% くらい明点を減らせて、それに従って 700ns から 600ns に再構成時間が縮みました。わほーい。
久我先生: 今回は OR 回路なので単純で、明点の数が少ないと思うんだが、実用的な回路になるとどうか → ビット反転の仕掛けで明点を削減するのは大事。複数のレーザーを使ってやる方法もある。
山口先生: 細粒度だけどいっぺんに書き換えられるからいいよね、という方向性か、粗粒度な方向にいくのか → ちょうどいま分岐点に立っていて、考えている。
[ 宇宙放射線に対して高い耐性をもつ光バッファリング手法 ]
構成情報をホログラムメモリに記録しておいて、それを使って不良部分を再プログラムする。
ホログラムメモリにノイズを付加した場合の再構成時間なども測定。
名古屋先生: フォトダイオードが一部不良でもうまくいく、というところをもうすこし詳しく教えてください → 不良になったビットが使えなくなるだけで、他は使える。
渡辺先生@岡山大: ホログラムの冗長性というのは何倍くらいあるんでしょうか? → ポスターでお願いします。
[ PCAにおける圧力の概念を用いた回路増殖法の評価 ]
どこかで集中的に回路リソースを管理するのではなくて、ローカルに混雑具合を見ながら回路をずらしたりしていって、必要なところに空き領域を作る。
構成手順は大幅に減ったけど、通信量が増える。まあ、そりゃしょうがないか。
[ スケーラブルFPGAシステムにおけるハードウェア拡張プロトコル ]
複数の FPGA にまたがる回路をどうやって同期するか?
久我先生: こういうの、どういうアプリケーションだったらうまくいくとかいかないとか、そういう知見があればぜひ…
[ 並列ふるい法とMPUを用いたウイルス検出エンジンについて ]
Snort と ClamAV: パターン数が二桁違う。Snort のほうが手の込んだ正規表現を使っている。
ClamAV では2段階マッチングをしており、パターンの先頭3文字をexact matchで見て、残りをpattern matchする。
インデックス生成関数がキモなのかな。
泉先生: 束縛変数とかを見つけるのはPCでやっているので、アップデートはFPGAの上だけじゃできない? → はい。
山口先生: 最初のexact match のところが速くなっても後ろがしんどくなる、ということはない? → そういうケースはカウンタを入れて見つけて、攻撃とみなしてしまえばいい。
[ サイドチャネル攻撃手法の評価環境の実装 ]
サイドチャネル攻撃対策を入れると回路規模がふくらんで、昔の SASEBO では入らなくなってしまったので SASEBO-GII というのを作りました。V5LX30 or 50 が載る。95,000 円 from TED で USB から configuration + 給電 (!)。
泉先生: ボードの個体差とか、このボードが持っている特性による癖のようなものはある? → 個体差はたくさん作るのでこれから調べていく。SASEBO でやったらこうで、このボードでやったらこうでした、という知識を集積していきたい。
山口先生: 130nm から 65nm になって電圧以外にかわったことは? テクノロジが変わっても対策はかわらない? → かわらない感じです。だから、昔のデバイスのほうが取りやすいし、そこで対策を考えるのもいいかも。
[ FPGA実装されたストリーム暗号 CryptMT の評価 ]
ストリーム暗号ではブロック暗号と違って、疑似乱数を送信元と受信先で作って、それとデータの XOR をとることで暗号化を行う方式。通信系で多く使われている。

デザインガイア 2009: Dec.03, 2009 午前

最初はコンピュータシステム研究会。
[ Smith-Waterman アルゴリズムにおける GPU を用いた実装方法の位置提案 ]
土肥君@長崎大の発表。
既存の GPU 実装 (CUDASW++) とか Cell 版、Xeon 版に比べて健闘している。いいね。
通信バンド幅についてきいてみた。
時間的にはスコア計算のほうが支配的で、まだバンド幅には余裕がある模様。
でも、発表後にマイク付けたまま戻っちゃダメだよ。
[ 高性能かつ低消費電力を実現する可変レベルキャッシュのモード切替アルゴリズムの改良と評価 ]
最近のマイクロプロセッサはなんと言ってもキャッシュで性能を稼ぐわけだけど、キャッシュのリーク電流の割合というのは無視できない。
ノーマルモード (ふつうのキャッシュ) と低消費電力モードがある。
キャッシュの容量が小さくてもよさそうなら低消費電力モードで動かす。低消費電力ではキャッシュの半分をスリープモードにし、そこにあるデータを使いたいときだけ起こして、L2 の中身と入れ替える。
SimpleScalar にこのモード切替コントローラを実装。
除算を使って (わりとちゃんと) 計算する版と、そうでないのと作ったが、性能差は 1% くらいなので除算器なしのほうでもいいかな。
横田先生: キャッシュの容量は変えて評価はとってないの? → はい。
三木先生: スリープモードというのはどこをどう落としたモード? → バンクごとに電圧を変えるようにしておいて、スリープにするときはデータが死なない範囲でキャッシュメモリのそのバンクの電源電圧を丸ごと下げます。
柴田先生: 連想度はどうしてますか? → 4-way です。連想度は変えずにキャッシュラインの数だけが半分になったりします。
渡辺先生@岡山大: 256kB と 512kB で評価をとっているけど、256kB だけとか 512kB だけで走らせた評価があれば教えてください → ありません。
[ 可変パイプライン段数プロセッサのためのメモリアクセスに着目した細粒度なモード切替コントローラ ]
高速モードではパイプラインを D-FF で刻み、低速モードではそれを外す。
メモリアクセスと負荷の関係があることがわかったので、それを基準 (最近の32サイクル分のload,store命令の数) にして制御をする。
あまり細かく制御すると、パイプラインを flush する回数が増えてよろしくない。
– 共有のハードウェアとして作ると、それでオーバーヘッドがあってかえって電力消費が増えるのでは → D-FF のところにマルチプレクサをつけるだけなので、それほど大変ではない
– パイプライン段数を3段階とかにもできる? → 考えてはいる。基本的にパイプラインの各ステージの遅延は同じはずなので、段数は整数倍になっていたほうがいいよね。
[ パス限定投機実行を実現するマルチコアプロセッサPALSの提案 ]
薬袋さんの ISIS-SimpleScalar がベースです!
投機がパス単位なので、メモリ周りは大変ではないかしら? メモリバッファそのものはひとつの投機状態をずっと保持している? → そうです。パス (スレッド) の実行が終了したときにはじめて共有キャッシュに反映される。

つくば藻類・プロティストフォーラム

という名前の研究集会でしゃべってきた。発表はかなり手応えがあり、いろいろな方から質問や、使ってみたい、というコメントをいただいた。
僕以外の2件は病気関係の話。病原性のある生物のゲノムは、ものすごい勢いで解読が進んでいることを実感した。
以下メモ。
[原虫における膜輸送の特殊性と多様性: 赤痢アメーバからの情報発信]
感染研の中野先生。
アメーバ赤痢の感染者5000万人、死亡4〜10万。
国内でも700人。
接着、プロテアーゼの分泌と宿主の認識、ファゴソームでの分解、貪食など、すべて膜輸送としてみることができる。
ゲノムは解読されており、20Mbp くらい。9800遺伝子。
GTPase が小胞の形成や分解に関与。
Rabタンパク質 (Ras superfamily に入る、膜融合タンパク質) の多様化:
多細胞化で組織特異的な輸送系が必要になるので、種類が増える (ゲノムにはたくさんコードされているが、ひとつの細胞で動いているやつは少ない) が、
赤痢アメーバ、テトラヒメナ、ゾウリムシ、トリコモナスではヒトより多く、種特異的なものが多い。こちらは、ゲノムにもたくさんコードされており、発現している種類も多い。
ゲノムサイズは細胞性粘菌なんかと同じくらいなのにね。
Ras ファミリ的にはアメーバ運動するやつらが Rho (アクチン細胞骨格) 遺伝子をいっぱいもっている。
Rab が多様化した連中は、Ras super family 全体が増えているわけではなく、Rab ファミリだけが増えている。特徴としては、
– オルガネラが大きく、丸い
– ファゴサイトーシスが活発で、取り込みが速い
ということがあり、つまり膜輸送が活発。
[ マラリア原虫 SERA 遺伝子ファミリーの系統進化 ]
阪大の有末先生。
年間の感染者数2〜3億、死亡者数100〜300万。ほとんどが子供。
マラリア原虫: 肝細胞で増殖して赤血球に入る。赤血球の中で増えて赤血球をぶっ壊す (ここではじめてヒトの免疫システムにさらされる)。
肝細胞期ワクチン、赤血球期ワクチン、伝搬阻止ワクチン。
SERA ワクチンは SERA タンパク質のSerine repeat のところにくっつく。
SERA タンパク質は遺伝子ファミリを形成しており、protease domain がある (基本的に serine protease だが、cysteine protease なグループもある)。
シゾントからメロゾイトがわっと出てくる過程に関与し、メロゾイトが出てこられないようにすることで感染を抑える。そこの機構は霊長類マラリアと齧歯類マラリアで異なる。
なんども感染しても SERA に対する抗体価が上がらないひとがいる。でも、SERA5 recombinant を注射で入れちゃえば上がって、ワクチンとして使える。臨床実験中。
SERA間での recombination とか gene conversion も起きている模様。

RECONF: Sep.18, 2009 at Utsunomiya U.

ホテルが駅からめちゃめちゃ遠かったため、激しく遅刻。
到着したら、最初のセッションの最後の発表でした。
[ 小容量FPGAによるスケーラブルなシステム評価環境の構築手法 ]
M-Coreアーキテクチャ (すごくたくさんの manycore) を実装するためのプラットフォーム。小さい FPGA をたくさん使うことで、メモリポート数を稼いだり、いろいろ。
ScalableCore unit / board という2種類のボードを組み合わせて mesh 状のシステムを構成する。
100 core をシミュレーションするには100枚のボードが必要? (児玉さん) → いまのところ 1 core / 1 board がシンプルなのでそうしているが、今後検討したい。
configuration とか、メモリへの書き込みはどうしているのか (ふんがさん) → configuration はひとつずつ PROM に書いている。メモリは BlockRAM に初期値を書いたり、次のバージョンでは SD カードから読み込める。
たのしそう…
[ An FPGA-based Tiny Processing System for Small Embedded System and Education ]
TinyCPU: Verilog で 200-300 行くらい。
レジスタは持っていない。完全にスタックアーキテクチャ (逆ポーランド記法で書けばなんでもできるので、コンパイラが簡単に作れる)。
やっぱり授業は大変らしい。
[ メニーコアSoC用形状適応型ネットワークオンチップの検討 ]
256 nodes で Crossbar-Torus 混成網とか。上位が torus で、下を mesh とかにする。
16 cores の中と外をつなぐところはどうなっている? crossbar なら 16+4 (東西南北) で 20×20? (吉瀨先生) → どうやらちがうらしい。外に出るところは MUX/DEMUX があるのか…
mesh mode と crossbar mode があるらしい。crossbar mode だとびゅーっと速く通過できる。局所性を利用するというよりは、低電力な mesh (バケツリレーしないといけない) で性能が足りなくなったら、crossbar (通過できる) に切り替えて高速に動かそうということだそうだ。
[ ネットワークテストベッドGtrcNET-10p3におけるパケットキャプチャおよびルータ機能の実装 ]
バンド幅や遅延をかえて、ネットワークシステムの性能評価をするためのシステム。あるいは、高精度なバンド幅測定やプロトコルのデバッグをすることもできる。
10GbE を XC2VP100 に soft core で実装。まじか。
DDR-SDRAM を 166MHz 裏表で動かすのは大変だそうです。
キャプチャフォワード:
実質的にサイズ無制限のキャプチャがほしいが、目的によってはペイロードは保存しなくてもよく、ヘッダ部分だけあればよい。3 ポートあれば、2ポートの間のヘッダだけを抽出して残りの1ポートから外に出せる。
関連研究の紹介:
NetFPGA, BEE3 など。
データのサイズが大きくなさそうなので、SRAM のほうがよさそうですがどうでしょう (吉瀨先生) → 遅延を入れたりすることを考えると、パケットをためておく必要があるので、充分なサイズが必要。1GB くらい。
[ 再構成デバイスMPLDの高密度実装に適した構成手法 ]
弘中研の学生さん。
メモリにもなる LUT を使った PLD. 高密度に実装できるところがポイント。
配置配線ツールとかもちゃんとある。
チップはフルカスタムで作った? (ふんがさん) → ほぼ手作りです。でも、規模が大きくなりすぎて検証できなくて、ちゃんと動かなかった。アナログ設計なので、nanosim なんかでシミュレーションしても不定値になるところがわからなかったりする。
[ LEDR/4相2線プロトコルコンバータを用いた非同期FPGAの構成 ]
FPGA はレジスタが多いので、クロック分配が大変 (電力食うし) 。じゃあ非同期にしましょう、というお話。
4相2線は小面積なので、演算器に向いており(FPGAはビット幅が自由なので、束データ方式は使いづらい)、LEDR (Level-Encoded Dual-Rail: 2相2線方式の一種) は長い配線に向いている (4相2線はデータ間にスペーサが必要だが、LEDRなら不要。ただし、回路的には面倒) 。
プロトコルコンバータをいれればいろいろ作れるんだな。かっこいい。
4相2線の場合はスペーサになるときに、すべてのロジックが 0 になったことを確認しないと、過渡的にへんな信号が出ることがあるので、気をつけてください (名古屋先生)
Switch block や connection block 間の配線のすべてのトラックは data x 2 + ack の3本のセットになる? つまり普通の FPGA の3倍配線が必要? (渡辺先生@岡山大) → はい。
[ レンズ結像系を用いない4コンテキストプログラマブル光再構成型ゲートアレイ用ライター ]
渡辺先生@静岡大の学生さん。
レンズを使わないで、反射型ホログラムとレーザーだけでいけるものを検討中。レンズで位置を補正できないので、回路構成情報に位置補正情報を埋め込んでしまう。
横から出す方のレーザーは位置あわせが必要? ビーム径は?(弘中先生) → SPD のサイズをあまり小さくすると感度 (というか応答時間) が下がるので、それをカバーできるくらいのものを考えている。パッケージの組み立て精度は充分に出るという前提で、パッケージをライターに入れたときは精度が怪しいから、そこを補正しようということを考えている。
[ FPGAによるHPCのためのストリーム計算に関する一検討 ~ 2次元ヤコビ法のためのスケーラブルパイプラインモジュールの設計と評価 ~ ]
Many core とかではメモリのバンド幅がボトルネック。FFTなんかはまだマシだが、計算密度が低いステンシル計算などではピーク性能の半分もでない。ものすごく長いパイプラインを作ってストリーム処理すればいい? でも、そんな都合よくいくかしら。
ステンシル計算なら、平面上の4近傍を見て計算してそれを次のタイムステップで使って・・・というところで計算密度が稼げる。
データストリームの場所場所で必要なバンド幅は異なる。しんどいところにデバイス境界がこないようにしないといけない。そうだよなあ… ここの設計手法が鍵になる気がする。
どれくらいのバンド幅が出ればいいのか、いまので充分なのか (中條先生) → 5GB/sec くらいは実現可能。メモリより太いチップ間の転送バンド幅があればいい。
2次元ヤコビ法ではうまくいきそうだけど、一般化して GPU に勝つ方向ではがんばれる? マルチチップの設計環境とかメモリの抽象化とかができるといいなあ (ふんがさん) → GPU は scale できない気がするので、性能的には勝てるかも。
[ 高精度浮動小数点演算用リコンフィギャラブルアクセラレータに用いる数学関数の実装手法に関する検討 ]
8倍長精度のアクセラレータ HP-DSFP を提案。
CORDICを使いたいけど、ビットシフトができない。ざんねん。多項式近似するぜ。
三角関数の計算には数千クロックかかるのか。むー。
8倍精度はやりすぎな気もしますが、こういうのがあってもいいね。
[ An FPGA-based Architecture for Verifying Collatz Conjecture ]
コラッツ予想: 偶数のときその数を2で割り、奇数の時3倍して1を加えると、任意の正の数が1になる。でも証明はされていない。
僕、昔それをやってたんですけど知ってますか (市川先生) → どーん。
こういう問題は、相手が無限大だからなあ。。。

RECONF: Sep.17, 2009 at Utsunomiya U.

[ FPGA を用いた回転パターンの実時間検出 ]
丸山研のひと。
FFTとかをして比較するのではなくて、回転・拡大縮小されたパターン画像との直接比較を考える。今回は拡大縮小は考えない模様。
相互相関関数をいっぱい計算するので、そこの計算量を頑張って減らしている。
VGA で 410fps, Full HD で 61fps.
– 理論的に誤差がどう、ということより、「検出できればよい」という方向だとどうか。回転の刻み角を減らしたりとか?
– ゆがみの検出とかにも適応できる? → このやり方ではむり
– 回路のうちデータを保持しておくところが大きいと思うけど、回路量のうちメモリの占める割合は? → 全部 LUT 内部でやっており、メモリは使っていない。
[ ロジックエレメントを節約したFPGAラベリング ]
ラベリング: 2値画像の連結成分の、島ごとにユニークな ID を割り当てる。
1 clock / pixel で FPGA に入力するとする。FPGA 内部に保持するのは数行分で、全部のデータを待たずに出力する。ただし、これだと数行掘り下げたときに島がくっつくかもしれないので、入力画像について制約をかける必要はある。
ある程度離れたところでつながっているものについてはあきらめちゃう、ということだが、実アプリで 20-concave というのはどうなのか (堀先生) → スキャンした文字とかだと、わりとこれでもいいかな、という感じ。
うずまきキャンディとか櫛みたいなものがベンチマークの絵で出てくると思うけど、どうでしょう (丸山先生) → 20pixel に入れば… デジタルカメラとかで、コストをかけずに何かの前処理としてラベリングができればいいかな (つまり、ラベリングがメインではないアプリケーションへの適用) と思っている。
[ FPGAアレイCubeを用いたレーベンシュタイン距離計算の性能評価 ]
よしみさんの発表。なんか元気そうで、何よりです。
Cube: XC3S4000 の一次元接続。
8×8 の短い部分文字列についてスコアを計算するモジュールをひとつの FPGA に 16 個。
CellとかGPUと比較。
パイプライン稼働率は 20% くらい。電力効率は 10〜100倍くらい。
パイプライン効率があまり上がらないのはなぜ (中條先生) → 100%出るのが対角線のときだけなので… たくさんデータセットをなげればいい。
データセットのサイズに上限はあるのか (児玉さん@AIST) → 上限はないのだが、いくつかに分割して実行しなければいけなくなる。配列長に対して実行時間の増加は linear.
[ FPGA による電源電圧制御回路の実装および制御精度の評価 ]
そえじーの発表。
ディジタル制御な DC-DC コンバータによる、データセンタとかでの DC 給電が目標。
FPGA で PID 制御をする。DC-DC converter にはどれくらい演算精度が必要か、とか。
100MHz のクロックの位相をずらして 400MHz 相当の時間分解能を手に入れた!
演算自体は4クロックで終わる。
アナログ制御の DC/DC と較べるとどうかは評価しているか (児玉さん@AIST) → PID とかよりもっと難しい (アナログではできない) 制御をやる予定なので、デジタル前提です。
いいね。
[ 配線性を利用する低消費電力指向のクラスタリング及び配置手法 ]
クラスタ外の配線をなるべくクラスタ内に取り込む方向でがんばる。
LB 間の配線数を気にしながら集めていく。
消費電力が改善したのにクリティカルパス遅延が悪化したのはなぜか。どういう状況 (谷川先生) → クラスタ段数が増えちゃうところがあるから?
配置配線にかかる時間は遅くなっているのか (ふんがさん) → あまり変わりません。
[ 実装効率改善へ向けたP同値類に基づくLUTの論理出現率に関する調査 ]
FPGAは柔軟だけど、回路によっては使われない論理ブロックがあったりもする。
でも、完全な論理表現能力がなくてもいいじゃない?
P同値類: (3入力以上とかで) 入力の順番を入れ替えると同じ関数になるもの。
これを使うと、論理関数表現から P-representative 表現にすることで、
3入力: 256 pattern / 8bit → 80 pattern / 7bit
4入力: 64k pattern / 16bit → 3,984 pattern / 12bit
のように必要なメモリ量を縮約できる。
一方でマルチプレクサや配線領域が増加することが問題。
論理関数の使用時における偏りを利用できないか?
MCNC benchmark を 117 種類、2つの異なるテクノロジマッピング手法を用いて評価。
最大105種類のP同値類。35% くらいの論理関数が P 同値類をもつ。
なかなかおもしろい。
k が大きくなるとより有効そう (弘中先生) → がんばります
6入力だけど6入力全部使わないものとかもあるわけで、そういうのをもう少し細かく分けてみたらもっといいかもしれない (児玉さん)
[ 電力を再構成可能なFlex Power FPGAチップの設計と試作 ]
Flex power FPGA の新チップ。動いてる。しかも CAD も!!
チップは 90nm.
設計はどうやっている? (ふんがさん) → 自動配置配線はまったく使っていません (!!!)
チップ製造後のテストはどうやりました? (飯田先生) → 業者に出してテストもしたけど、自分たちでやったのと違う…
製造前の見積もりと現実の違いは? (谷川先生) → 1/10 くらいになるはずだったけど、半分くらいになってしまった。速いトランジスタだと Vth 変更の効きが悪いとか、いろいろあるけどこれから検討。
動くことは確認できたわけだが、集積度が普通の FPGA に負けないこともポイントだと思う。そのへんはどうか (児玉さん) → やっぱり overhead は大きいかも…
[ Dual-Vthセルの利用による動的リコンフィギャラブルプロセッサのリーク電力削減の評価 ]
[ YAWARA: 自己最適化計算機システム・プロジェクト ]
実行前最適化処理 (コンパイラとか) の限界。複数のプログラムの同時実行や、入力データによる挙動の変化をカバーすることができない。
ユーザ透過な形で動的な最適化をすることができないか?
メタレベル計算原理に基づく柔構造計算機: プログラムの実行と並行してその挙動を把握し、その履歴に基づいて将来を予測して計算機を造り替える能力をもつ計算機。
最初は FPGA とかでやろうと思っていたが、VLIW でたくさんスレッドを走らせる方向に行っている、とのこと。それが正解だと思う。
しかし、こういうのは意外と楽しそうで、発表を聴けてよかった。

FIT ’09: Session 6C

[ よしみさん ]
なんか、発表順が大幅に変わってて、質疑応答だけきいた。すいません。
レーベンシュタイン距離を Cube で。SPARTAN-3 のクラスタ。
並列度がぐわーっと出るのが真ん中だけなので、キビシイそうです。この手の問題はみんなそうですが。
[ 差分法専用計算機におけるFPGA間時分割通信機構の遅延評価 ]
FPGA間の帯域と遅延。
差分法なのでシストリックアーキテクチャでやれる。メッシュネットワーク。
FDTD 電磁波伝搬問題, RB-SOR 熱伝導問題を解いてみた。
通信遅延の許容値とか、時分割した場合のそれとかを計算。時分割のスロット数は 32 とか、わりととれそう。
質問: FIFO がある場合とない場合で、待ち行列に入る順番が不確定になるから、性能はかわらない? 差分法なので、ちゃんとスケジュールできるわけで、問題ないです。もちろん、アプリケーションが異なれば、そのへんのスケジュールが問題になる可能性もあります。
[ 特定用途向け動的再構成回路の演算器精度最適化に関する研究 ]
テンプレートとして 32bit 精度の各再構成演算器の VHDL を食わせる。
あれ?これ整数なのか。むふー。
質問(宮本先生): 時分割になるから性能が落ちると思うんだけど、面積とかそのへんも含めてどうですか? 音声とか映像の許容性能の範囲に入ればよい。
質問(佐野先生): 精度とパイプライン段数と周波数のトレードオフがあるんじゃないかと思うのですが? いまのところ考えていません。
[ やまださん ]
スライス使用率 100% で笑いを取ってました。
質問 (宮本先生): MCS はどうやって計算してますか? 部分グラフの選び方は? MCS は、ちゃんとやるほど難しくないので、力ずくで解いています。部分グラフは、いくつかの制約を満たすようにやっている。
質問 (佐野先生): 動作周波数が低下した原因は MUX? それもあるけど、配線がしんどくなるのが原因。
[ マルチメディア応用ヘテロジニアス… ]
てゆか、FE-GA ですね。hetero だし粗粒度だし、メモリの使い方がキーなのでしょう。
[ システム実時間測定のための Lossless データ圧縮伸張方法 ]
組み込みソフトウェアの開発において、システムの挙動を観測できることは非常に有意義。
ハードウェア実装されたトレーサの生成するトレースデータを圧縮する。
ARM とか MIPS とか PPC とか SH にはそういう HW なトレーサがついていて、専用のピンからその情報をほとんどオーバーヘッドなしで取り出すことができる (知らなかった… かっこいいね)。
トレースデータの場合、時間を相対表現にすると、情報の頻度が高ければタイムスタンプの上位ビットがたくさん0になるので、run length 圧縮。
関数名に id をつけて、それもほげほげ。call/return は1ビット。
LZ 圧縮と同じくらいのスループットで、メモリや回路面積はだいぶ小さい。圧縮率は同程度。
まあ、半分にはなるんだけど、結局その大量のデータをどうするかが問題だそうです。