SWEST/DAS共同特別講演2 「動的再構成プロセッサDRP向け統合開発環境」 【講演者】粟島 亨 (日本電気) 【座 長】枝廣 正人 (日本電気) 【会場規模】300席 【参加者数】250人 動的再構成可能プロセッサDRPのツール開発全般的な話について。 ■発表内容  DRPとは  アーキテクチャ  コンパイラ(コンセプト、コンパイルフロー、フロントエンド合成、バック エンド合成)  統合開発環境  オンチップ・デバッガ  デモンストレーション  まとめ ■DRPとは  DRP=Dynamically Reconfigurable Processor  NECとNECエレが開発したリコンフィギャラブル型IPコア  コンテキストを動的に変更できる  データバスを自分活で変更することで様々な機能を実現できる  これにより、ソフトウエア並みの柔軟かつ短TATな開発環境を提供 ■ソフトウェアとハードウェアのギャップ  設計後の可変性…ソフト○、ハード×  設計短TAT…ソフト数日、ハード数年  性能[GIPS/Watt]…ソフト1以下、ハード100程度  並列度… ■性能と設計生産性の両立  既存のソリューションは厳しい立場  乱立、進展する規格への追従、  半年程度の製品寿命、多品種少量生産、大量なマルチメディアデータの低電 力高速処理 ■ソフトとハードのいいとこ取り=DRP?  使い勝手はソフト、性能はハード、、、といったモノを夢見ている。  達成の手段;  ソフト:Cベース動作合成技術 ■動作合成技術とアーキテクチャ技術の融合  並列性の抽出は難しい。(アーキテクチャ)  C言語→HW(動作合成) ■性能と設計生産性の両立  マーケットニーズに近い:DRP  現在、様々なアーキテクチャが提案IPFlex etc...  Design Wave 8月号特集記事「ポストDFP?ポストFPGA?それともきわものか?」 --- DRPのアーキテクチャについて ■アーキテクチャ  アーキテクチャの最小構成:タイル  8bit粒度PEのアレイ(8*8)、状態遷移コントローラ(STC)、ワード構成可変 なデータメモリイメージとしては、STCが制御するプロセッサ ■スケーラビリティ  タイルを縦横に並べれば様々なサイズのプラットフォームを提供可能  個々のタイルにSTCがある。個々のSTCが64PEを制御。 ■プロセッサエレメント  8bitALUが主体  命令メモリを複数持ち、そのうちの1つを指す(マルチコンテキスト型デバイス)  プロトタイプでは16コンテキスト持つ ■コンテキスト制御イメージ  STC内には状態遷移マシンがプログラムされている  STCがPEへコンテキスト番号を設定、PEからイベント信号を受け取る  言葉:コンテキスト=コンフィギュレーション=プレーン=構成面。。。 例:  STC内の状態が#3→コンテキスト番号に3を設定→回路を再構成 DRP:毎サイクルの再構成も可能  演算段数1段分の時間で再構成可能=再構成時間は必要ない ■動作モデル ・複数処理のコンテキスト切り替え実行  各コンテキストごとに処理に適したデータパスを構成  制御信号により複数の処理を切り替える。同時には使われない処理を切り替 える=実装がコンパクトになる ・複数ステップ処理のマルチコンテキスト処理  処理に複数ステップ必要なアプリケーション  各ステップに適した回路へ再構成   →1サイクル内の動的再構成を積極活用 ・パイプライン処理のコンテキスト分割  例:12ステージのパイプライン処理   DRPを用いた場合、各ステージごとに再構成すれば逐次処理になる。   つまり、   DRPを用いれば、面積・性能トレードオフを選択可能 ■プロトタイプチップ  64PEのタイルを8枚=512PE  全体で2MBitのメモリ  各タイルがSTCを持つ  外部メモリ、PCIとのインターフェース ■データフロー  ストリーミング処理を意識したアーキテクチャになっている ■DRP評価PCIボード --- ここで、一旦質疑。 座長コメント:プロトタイプチップでは16面のプレーンがある --- コンパイラについて ■コンパイラ基本コンセプト ・リコンフィギャラブルHW 専用ハード並みの高スループット、低電力 ソフトウェア並みのプログラマビリティ ・コンパイラの基本コンセプト ハードウェア合成技術に基づいた開発環境 ユーザの視点からはあくまでも『コンパイラ』 そのために。。。 C言語ベースの動作合成をフロントエンド合成に採用 バックエンド合成と有機的に統合 ■HDL設計・検証フローの問題点 ■DRP設計・検証フロー  アルゴリズムはCで書き、HDL自動合成  回路規模、タイミングにもどづく自動スケジューラ  全体の思想としては、Cで書き実機で検証! ■コンパイルフロー  アルゴリズムをCで書く(BDL)  動作合成により、制御回路とデータパス回路に分割  バックエンド合成部で制御回路(FSM)をSTCに。  バックエンド合成部でデータパスコード=>PEアレイコード ■動作合成とは  データフロー解析、スケジューリング、リソース割当て、データパス合成  制御回路、データパス回路をSTC,PEアレイに直接マッピングされる ■マッピングイメージ ■FSMの状態に基づくコンテキスト分割  各状態→各コンテキスト:1状態1コンテキストマッピング  いくつかの状態→1コンテキスト:多状態1コンテキストマッピング  これにより、効率の良いコンテキスト分割が可能 ■合成制約  演算器制約スケジューリング  遅延制約スケジューリング  リソース共有 ■データフロー解析 (高位合成での例) ■FSM生成  状態信号=セレクタの選択信号になる。 ■FSM生成(DRPの場合)  状態信号=コンテキストを切り替える。 ■バックエンド合成  マッピング、自動配置配線、etc... 自動配置配線:  共有リソースは同一位置に割り当てる。  これはすなわち、3次元配置問題となる。 --- 統合開発環境について ■GUI  ソフトエンジニアが抵抗無くハードウェアを設計=DRPの宿命  フロントエンド合成、バックエンド合成をシームレスに統合  フィードバック、チューニングはCソースに集約  ソフトウェア並みの柔軟性、短TATを目指す ■視覚化の例:メモリアクセススケジューリング (実際のGUIを例に説明) ■視覚化の例:クリティカルパス解析 (実際のGUIを例に説明)  動くコードを書くのは簡単。  最適化のためのチューニングの技法が重要。  方法論の具体化が重要。  ボトルネックになる部分をCソース上で示す。 --- オンチップデバッガ  CPU上のソフトウェアと同様に実チップで高速動作検証やデバッグが可能 STC:コンテキストのシーケンシャルな動作を規定するビルトイン機構、ホスト  に対して可制御性、可観測性の高いコントロールポイントを提供 ■デバッガ機能例:C言語変数による値の参照 (実際のGUIを例に説明) ■統合開発環境のデモ (Cから配置配線までのデモのムービー) ■ソースレベルデバッグのデモ (状態図をリアルタイム設定、ブレークポイントを設定、、、etc) ■アプリケーションデモ(画像フィルタ)  8種類のフィルタを切り替える例  フィルタごとにコンフィギュレーション ■パケット処理例:IPv4フォワーディング  外部メモリアクセスに基づくスケジューリング  メモリアクセスが重ならないようにスケジューリング ■マルチコンテキスト化の影響 7*7フィルタを例に コンテキストを1,4,8の場合において、面積、周波数、スループットを比較 --- まとめ  動的再構成可能プロセッサDRPの開発環境について。  ソフトウェア並みの柔軟な開発環境を実現可能。 ■課題  アプリケーション開発方法論の確立→アプリ評価推進  コンパイラ最適化機能向上→コード最適化  ソフトとの協調設計→C言語関数オフローダ  動的再構成によるハードウェアリソースの仮想化  評価キットの限定リリース(有償)  応用開発のプロポーサルを受けている --- 質疑 ・Aさん Q:ビット数について A:マルチコンテキストを1bit単位で実現した場合、コンフィギュレーションが 爆発してしまう。しかしハードウェアとしては1bitの演算資源を持っている。 ・Bさん Q:チューニングでは物足りない。手動でやる場合とどれくらい差があるか? A:過去の知見を使えば、自動スケジューラを利用する際に効果的なスケジュー リングを得ることができる。 ・Cさん Q:コンテキスト間での受け渡しでレジスタを利用とあるが、PEの周りのメモリ  を用いる場合と外で受け渡す場合のポリシーはあるのか? A:変数を渡すだけならPEを使う。距離的な問題から。 Q:DRPのタイル構成、メモリは全てのPEと接続されているのか? A:はい。ただし、距離に応じて遅延が生じる。 【記録者の感想】 代表的な動的再構成可能プロセッサDRPの全体的な開発環境の話で、個人的には とても興味深く聞くことができた。開発環境の簡単なデモもあり、是非使って みたいという気になった。 動的再構成可能プロセッサの分野は最近注目されている分野の一つであり、 今後の研究動向に注目したいと思う。