RECONF / Sep. 26, 2008

[ 科学技術計算エンジンに使用するディジットシリアル浮動小数点演算器の開発 ]
多倍長演算器を構成するために word parallel ではなく、digit serial の演算器を作った。面積では圧倒的に小さくなるはずで、面積あたりの性能では、高精度の場合に DS な FP ALU のほうが有利になると考えられる。
作ったのはまず、 DS な integer multiplier と divider (これが一番大きな面積を占めるので)。 それを使って FP ALU を作った。デバイスは Rohm 0.18um.
面積あたりの FLOP 数は word parallel に比べてちょっと下がっちゃったが、まだ合成だけでレイアウトをしていないし、レイアウトをすれば word parallel が悪くなるかも。
10進演算器にも応用できる? (井口先生) → できると思うがまだ考えてません。
入力がすべてくるまで中の処理ははじまらない? (天野先生) → 指数部、仮数部、符号の LSB から入れるようにして、最初のデータがきたらすぐスタートするのだが、入出力に数サイクル掛かるのは仕方ない。
バレルシフタは所要サイクル数がデータに依存すると思うが、それによって性能が変わったりはしないの? → worst case に合わせて設計してあります。
乗算器は 1 クロックでやってるの? (泉先生) → DS でも word parallel でも、パイプラインにはしていません。
パイプライン化したらどうなる? → word parallel のほうは性能があがると思うが、入出力のポート数が少ないアドバンテージはかわらないので、そこはいいかなと。
消費電力が下がったりはしませんか? (梶原さん) → 検討させていただきます。
[ 粒度可変論理セルにおける入力粒度最適化の一検討 ]
熊大の学生さん。
VGLC (Variable Grain Logic Cell): ALU と LUT の hybrid cell.
VGLC は複数の BLE (Basic Logic Element) から成る。BLE は LUT と同等のランダムロジック表現と、misc logic という、より入力ビット数の多い (ただし論理関数空間のカバレッジが 100% ではない) 論理関数表現モードを持つ。
BLE の入力数 (入力粒度): ひとつの BLE に実装できる canonical form の入力数を変化させる。
たとえば、
入力数2: 2-LUT と同等の機能、4-misc logic まで実装可能
入力数3: 3-LUT と同等の機能、5-misc logic まで実装可能
のような感じ。
MCNC benchmark で評価。粒度を大きくすると当然使用論理セル数は減少するが、それ以上にセルの面積増加が深刻になる。また、あまり粒度を大きくしても論理セル数の減少は緩やかになって、悲しい。これは、入力ビット数が増えると misc logic で表現できる論理関数のカバレッジが急激に下がってしまうので使用される機会が減ることに一因がある模様。
でも、入力数の多い CF はメモリ使用率の向上に効く。
Elias Ahmed and Jonathan Rose: “The effect of LUT and cluster size on deep-submicron FPGA performance and density” (IEEE Trans. VLSI)という論文が要チェック。
BLE の粒度がかわると BLE の遅延が変わったりはしないの? (谷川先生) → すこしかわるけど、それほど大きく変化しないはず。
Misc と CF とどっちを優先して technology mapping する? (泉先生) → HeteroMap をもとに作っている。基本的に段数最適化。
[ 動的リコンフィギャラブルプロセッサ MuCCRA-2b の実機評価 ]
動作中の LSI は AC 成分がいろいろあるわけだが、テスタで測った電力はどれくらい正確だと思っている? (泉先生) → まあ、桁がわかっている程度かと
画像が乱れた、というのは目で確認している? → はい。いちおうロジアナでも見てますが。
複数PE分を時分割で emulation していて、配線相当分が入っていないと考えていいですか (梶原さん) → はい。でも、PE 内のは入ってます。
最高動作周波数は I/O が絡む形でやっている? (渡辺先生) → 実機評価ではメモリが外にあるので、I/Oも入ってます。FPGA の I/O 遅延も入ってしまうけど…
開発環境は -2 と -2b で同じ? (谷川先生) → 同じコンパイラで作って、(コンテキスト配送がいらないのでそこのところを) ちょっといじってる。
[ ソフトコアプロセッサの高信頼化に向けた三重冗長実装の一検討 ]
一宮さん@末吉研。
Permanent error: LUT, interconnection, RAM などで起きる SEU
Transient error: FF で起きる SEU
MicroBlaze を3つ並べて voter をつける。でも、voter をつけると CP が長くなるらしくて、2割くらい動作周波数が落ちるのと、メモリを3倍食う。
メモリは 3 つの MicroBlaze で共有することで解決するが、さらに 25% 周波数が下がり、オリジナルと比べると 41.5%…
性能を稼ぐためにキャッシュを使うアプローチも。BRAM をキャッシュとして使い、メモリは外部の DDR SDRAM. この場合は voter が DDR SDRAM コントローラの手前に入る。動作周波数はかなりいいが、SDRAM コントローラが大きいのが問題。
メモリは TMR で一番重要だと思うんだけど共有しちゃっていいの? (渡辺先生) → ECC とかあるので、いいかなーと。
SEU の試験方法に何かいいのはある? → bit file を壊してみるとか。
キャッシュを共有してvoter を入れる、というのはどうでしょう? (谷川先生) → MicroBlaze からキャッシュを切り離さないといけないので、ちょっと難しいかもしれません。
[ 書き換え可能ハードウェアを用いた体故障性能向上手法の研究 ]
山口さん。
(面白いネタをたくさん仕込むぜ!と意気込んでおられたのでばっちり録画しました。うひひ)
[ 再構成デバイス MPLD への組み合わせ回路マッピング手法の検討 ]
小田さん@広島市立大。
MPLD は他の PLD と基本構成が全然違うので、マッピングツールが必要。
コンフィギュレーションはメモリへの書き込み動作と同じなので、高速。
メモリとしても PLD としても使える。
基本要素は MLUT で、基本的には LUT と同じ機能で、DP-RAM の片方のポートをメモリ動作用、もう片方を LUT 動作用にしている。配線は固定されており、MLUT がスイッチにもなるようだ。
テクノロジ非依存最適化のところは design compiler で、2入力以下の素子しか使わないようにやる。テクノロジ依存のところ+配置配線は自前。
配線4のときは PCA の Plastic part だ! 1 bit adder とかシフトレジスタみたいに並べられるものはいいけど、配線のほうが大変じゃないかしら。論理を削減しようとして頑張っても、配置配線のほうがずっと重要になる可能性が高いと思います (泉先生) → 今回はそれほど詳しく説明してませんが、次回お楽しみに。
ひとつの MLUT のサイズは? メモリとして作ると、ある程度大きい方が効率がいい (井口先生) → 6 入出力対なので、2^6 x 6
実装例が adder とかなので、算術演算以外の (きれいじゃない) ものもやってほしい
かっこいいんだけど、配線が全部メモリを通るのはちょっと実用的にしんどいかもしれない (ふんがさん) → 実は検討してます。
あと、入出力の数が同じ、というより、入力のほうが多いのが自然かも。

RECONF / Sep.25, 2008

[ FPGA を用いた2次元液体運動シミュレーションの高速化 ]
会津大の佐藤さん (チームオクヤマ)。
無衝突系重力多体問題のベンチマーク
– Cell 125GFLOPS
– GeForce8800 653GFLOPS
– GRAPE-7 728GFLOPS (Altera Cyclone)
PROGRAPE-4 を使った。
必要最低限の演算精度の見極め。
格子を使う差分法やFEM と、ラグランジュ的に必要に応じて粒子を発生させる Smoothed Particle Hydrodynamics (SPH) 法などがある。災害シミュレーションのような、大きな形状の変化を伴うものを想定して後者を使った。粒子間の相互作用として水の動きを計算することができるが、精度を高くするためには粒子の数を増やす必要があり、計算量がしんどくなる。
2次元ダム崩壊問題を、double と 仮数部 12, 14, 16, 18 bit with 8bit exp の5つの演算精度で解き、平均自乗誤差 (MSE) で評価。仮数部 16bit で充分な精度が得られた。
(質疑)
転送はどれくらい?→ 転送オーバーヘッドを隠蔽するために粒子を使い回すようにする。一度 broadcast memory に入れたものを particle register に入れたり。水の場合は重力多体問題より狭い範囲で相互作用するので、3割くらい。
精度検証はどうやってやった? → 仮数部を AND でマスクします (うお、そうか! それなら僕らにもできそうだ・・・)。
粒子が増えたりすると必要な演算精度はかわる?→ 単純に粒子数を増やしても必要な演算精度はかわらない (指数部は必要になるかも?) が、粒子がどこまで近づくように定義するかで仮数部の必要ビット数が変わる。
ひとつの FPGA にふたつのパイプラインが載っているということだが、どれくらい演算器がのっていて、どれくらいほしいと思っている? → 理想は4パイプライン。
[ 動的再構成可能プロセッサへの JPEG エンコーダの実装と評価 ]
岡山大の古島さん (名古屋先生の学生さん)。DAP/DNA-2 に実装。DNA (reconfigurable array) に実装したのは次のふたつ:
– RGB → YCbCr 変換。Cb と Cr は情報量を落とす : 1面に4並列
– 2次元 DCT (2回の 1次元 DCT で実装。バタフライ演算) : 3面に2並列
再構成とかの制御オーバーヘッドがあるので、ふつうの CPU と比べた場合には、画像が大きい方が有利になる。でも、色変換と DCT 以外のところをやる DAP がボトルネックっぽい。エネルギー効率は x25〜52 (compared to Pentium4)。
(質疑)
どうして表色系の変換と DCT を選んだ? → ハフマン符号化とか量子化のところはメモリアクセスが複雑で、そこが DNA に向かない気がしたので。
DCT の実装が 3 つの構成情報にわかれているが、どうやって分割しているか? → バタフライ演算の4ステージが2面に分かれている。それをそれぞれ2回使って縦横でやる。
[ FPGA を用いた生化学シミュレータにおける… (以下略) ]
[ 分散共有メモリの接続を変更可能な PC クラスタ用 SW の提案 ]
必要な資源のみを結合する疎結合型の PC クラスタ。
問題の性質によって結合を変えることができれば、資源効率のよいクラスタ構成を実現できそう → 可変構造型ネットワーク。
まずは DSM をターゲットにしてみることにした。アドレス変換による仮想共有メモリ。
基本的に固定経路で、疎行列計算とかに向く (はず)。
Switching fabric を小さくしつつポート数を稼ぎたいのか? でも実際のところ、最近の問題はもはや、充分なサイズのクロスバがチップに載らないということではなくて、ピン数なんじゃないのか? とか思ったので、一応突っ込んでみた。
でも、データの使用頻度を考慮したインタコネクションというのは面白そう。
[ レーベンシュタイン距離を用いた道路標識認識アルゴリズムの FPGA 実装 ]
ITS: automatic cruise control とか lane keep system が実用化されている。
より高度な動画像認識として道路標識認識システムとか。
標識の切り出しがずれても認識は大丈夫! という仕掛けにしたいぜ。そこでレーベンシュタイン距離 (いわゆる edit distance みたいなやつ) を導入。
赤色・青色分解をしたあとに文字列変換して、テンプレートマッチング。
テンプレートマッチングは2段階。大分類 (丸とか四角とか三角とか) でまず分けて、そのあとに細かいテンプレートにあてる。
標識の数は同時にどれくらい? → いまのところひとつでやっているが、現実には複数の標識が一枚のフレームにでてくることはありうる。現在の処理時間は標識ひとつだけの場合。
車載カメラで撮ると歪まない? → わりと tolerant ではあると思うんだけど、前処理でなんとかしなければならないかも。(わし思うに、歪むのは広角のレンズで近くの標識を撮るような場合で、しかしそんな近くの標識を認識してなんかいわれても運転者は困るわけで、認識の対象はある程度遠くの標識でなければならないのではないだろうか。そういう場合にはゆがみの影響はないよね)
[ FPGA による並列計算機用2次元ネットワークの実機評価システム ]
岡山大の小畑先生チーム。
ネットワークの動きは、シミュレーションではわからないこともある (と、RHiNET-2 の論文に書いてあるらしい :p )。そこで、torus だの mesh だのをいろいろ試すためのシステム。
FPD (DVI じゃない、ちょっと昔に見かけた液晶用のコネクタ。組み込みではいまでもつかってるのかな?) のケーブルを 4 リンク使える NIC. データを記録するための global clock / reset も備える (これは通信には使わない)。
API としては、MPI のサブセットを実装。
ちゃんと並列プログラミングしたりして評価もとっており、手堅い仕事だと思う。楽しそう。
[ FPGA クラスタのためのオペレーティングシステム機能の試作 ]
広島市立大。
従来はバスによる密結合型 FPGA クラスタを扱っていた。今度は Ethernet (通信) と USB (configuration) を使った疎結合型 FPGA クラスタを構築。誰でも簡単に構築できるシステム。性能よりプログラム資産の構築を追及。
制御用独自プロセッサは 16bit で、Picoblaze より強力かつ Microblaze よりは小さい。
[ 招待講演: オペレーティングシステムとリコンフィギャラブルハードウェア ]
谷口先生。
OS には常に性能が求められているので、ハードウェア処理による性能向上を考えたい。
OS の性能低下要因: ディスク I/O とメモリ間データ転送 = 何かを作るわけではない操作なので、どちらも本質的には必要ないはず…
他にもいろいろあるのだが、なんかすごかった。