RTL静的解析によるFPGAアクセラレータ向けアプリケーション特化メモリプリフェッチャー
全文
(2) Vol.2013-ARC-204 No.1 2013/3/26. 情報処理学会研究報告 IPSJ SIG Technical Report. FPGA. FPGA User-defined Logic Application Memory Requester (Read/Write). On-chip RAM (BRAM). Memory Manager (Replacement). On-chip RAM Controller. I/O Controller. DRAM Controller. Peripheral Controller. DRAM. Peripherals. Application Specific Prefetcher (ASP). Application Kernel. Memory Requester (Read/Write). Memory Requester (Read/Write). Cache. Cache Controller. I/O Controller. DRAM Controller. Peripheral Controller. DRAM. Peripherals. 図 3 アプリケーション特化プリフェッチ機構をもつ FPGA アクセ 図1. マニュアルでデータ転送を行う従来型の FPGA アクセラレータ. ラレータ. ンチップメモリを利用して構成したキャッシュにキャッ. FPGA User-defined Logic. シュコントローラがデータを転送し格納する.キャッシュ. Application. を用いることにより,メモリシステムをカーネルに対して. Memory Requester (Read/Write). 抽象化しているため,開発者はデータ転送部分を実装する 必要がないため,開発は容易になる.しかし,不必要なオ フチップメモリアクセスやキャッシュラインの置き換え. Cache. Cache Controller. I/O Controller. に起因するデータ供給に遅延により,マニュアルのデータ 転送を行う場合と比べて,達成しうる性能は低くなること が多い.カーネルのメモリアクセスの特性に応じたキャッ. DRAM Controller. Peripheral Controller. DRAM. Peripherals. シュ置き換えアルゴリズムやプリフェッチ機構などを用い ることにより,より高い性能を達成することが可能である が,より良いアルゴリズムの選択および実装は,マニュア. 図 2 キャッシュを持つ FPGA アクセラレータ. ルでデータ転送を行う場合と同様に,開発者の大きな負担 となる. 我々は,キャッシュによりメモリシステムの抽象化を. 分と,そこにデータを供給しまたそこからデータを取得す. 行いながら,高いメモリ性能を達成する手法を模索する.. るメモリコントローラ,および周辺回路などのコントロー. 図 3 に,我々が提案するアプリケーションに特化したプリ. ラなどから構成される.. フェッチ機構を持つ FPGA アクセラレータの構成を示す.. カーネルの処理に持ちいられる一時データは,チップ内. アクセラレータはアプリケーションのカーネルとキャッ. のローカルメモリ(On-chip RAM)に保存される.開発. シュ,そしてアプリケーション特化プリフェッチャー (ASP:. 者は,カーネルとローカルメモリとの間のデータ転送を適. Application Specific Prefetecher) から構成される.キャッ. 切にスケジューリングし,カーネルが利用するデータを前. シュは通常のアプリケーションからのリクエストポート. もってローカルメモリに配置するようなオンチップメモ. に加えて,プリフェッチ用のリクエストポートを持つ.し. リコントローラを実装する必要がある.大容量のデータ. かしプリフェッチの場合はデータを下位のメモリ階層か. セットを扱う場合など,FPGA チップ外部に接続された. らキャッシュにデータを先行的に移動するだけであるた. DRAM を利用する際には,DRAM とローカルメモリとの. め,キャッシュからの読み出しポートを追加する必要は. 間のデータ転送,および,カーネルとオフチップメモリと. ない.アプリケーション特化プリフェッチャーは,アプリ. の間のデータ転送を適切にスケジューリングする仕組みを. ケーション内の状態遷移に同期して,プリフェッチリクエ. 実装する必要があり,これは開発者の大きな負担となる.. ストをキャッシュに対して発行する.キャッシュは,アプ. 図 3 に,キャッシュを持つ FPGA アクセラレータの一. リケーションからのリクエストがない場合はプリフェッ. 般的な構成を示す.マニュアルでデータ転送をする場合と. チャーからのリクエストに基づいて,キャッシュラインの. は異なり,カーネルからのメモリリクエストに応じて,オ. 更新を行う.. ⓒ 2013 Information Processing Society of Japan. 2.
(3) Vol.2013-ARC-204 No.1 2013/3/26. 情報処理学会研究報告 IPSJ SIG Technical Report. の変換,のステップを経て,最終的に,Verilog HDL で記 Source Codes. Module Analysis (Module / Input / Output / Inout / Parameter) Signal Analysis (Reg / Wire / Localparam). Preprocess (Resolving macros). Lexical Analysis (Separating into tokens). Bind Analysis (dataflow generation from =/<= assignments). 述されたプリフェッチャー付きのアプリケーションのコー ドが生成される. 本稿で提案するアプリケーション特化プリフェッチャー は,アプリケーション中の反復処理に含まれるメモリアク セスを対象とする.(7) にて状態遷移グラフを取得し,そ の状態遷移グラフ中からループを探し出す.次に,(8) に てループに含まれる各状態においてメモリアクセスがある かどうかを判定し,そのメモリアクセスが発生する条件を. Parse (AST generation). Definition Tree. 特定する.その後,(9) にて,ループを一周し,次に同じ 状態遷移の状態に到達するときのメモリアクセスアドレス の定義木を,アドレス信号の定義木および,その定義に用. 図 4. 前処理・字句解析・構文解析・定義木生成のフロー. いられる信号の定義と状態遷移から生成する. 本ツールの開発には Python を用いた.コード行数は, 定義木の最適化処理器や定義木および状態遷移の可視化. Definition Tree. Generating Definition Tree of Prefetcher. Control Flow Analysis (Constructing FSM). Combining Trees of Application and Prefetcher. ツールなどを含めて,現時点でおおよそ 9000 行である.. 3.2 プリフェッチャーの例 ここで,プリフェッチャーのコードの例を用いて,将来 にアクセスするであろうアドレスの値を推論方法について. Memory Access Timing Analysis Memory Address Analysis (Data Flow Analysis). 図5. Generating RTL in Verilog HDL. 解説する.図 6 にメモリアクセスを制御する状態遷移の コードの例を示す.図 6 の例の場合,状態遷移中に,状態. 1 における読み出し,および状態 4 における書き込みの 2 Source Code with Prefetcher. コントロールフロー解析・データフロー解析・プリフェッチャー 定義木生成・コード生成のフロー. つのメモリアクセスが存在する.状態 1 における読み出し 時のメモリアドレスは,変数 cnt によって定義され,状態. 4 における書き込み時のメモリアドレスもまた変数 cnt に よって定義される.また,変数 cnt は状態 6 において,4 ずつインクリメントされる. 図 7 にこの状態遷移におけるメモリアクセス情報から生. 3. アプリケーション特化プリフェッチャーと RTL 解析ツール. 成されるプリフェッチャーのコードを示す.生成されたプ. 3.1 解析およびコード生成の流れ. スコードに埋め込まれる.そのため,アプリケーション. 本章では,我々がアプリケションの RTL 記述からプリ. リフェッチャーのコードは,アプリケーションと同じソー の定義と同じの変数を参照する.プリフェッチャーでは,. フェッチャーの RTL コードを生成するために用いた,RTL. ループが 1 周し,次回同じ状態に到達したときに発生す. 解析ツールの構成と,生成されるについて述べる.アプリ. るメモリアクセスのアドレス値を,現時点における変数の. ケーション特化プリフェッチャーが生成されるまでのフ. 値を基準にオフセットを加えることによって定義する.例. ローを図 5 および図 ??に示す.プリフェッチャー回路を. の場合,アドレス信号の定義に用いられている変数 cnt は. もつアプリケーション RTL が生成されるまでの流れを以. ループを 1 周する間に,4 インクリメントされるため,プ. 下に述べる.まず,Verilog HDL で記述されたアプリケー. リフェッチャーがリクエストするアドレス値は現時点の変. ションのソースコードを入力として,(1) 前処理,(2) 字句. 数 cnt の値に 4 加えたものとなる.もし,アドレスの定義. 解析,(3) 構文解析,(4) モジュール定義解析,(5) 信号の定. に用いられている変数の変化分が外部から入力などに依存. 義解析 (6) 各信号への代入解析を行い,各信号の定義木を. し,解析できない場合にはプリフェッチは行わない.その. 生成する.次に,生成された定義木を元に,(7) コントロー. ような場合に,汎用 CPU で用いられているストライドプ. ルフロー解析による状態遷移グラフの取得,(8) 状態遷移. リフェッチャーなどを導入するなどの方法の検討が,今後. の各状態におけるメモリアクセスタイミング解析,(9) メ. の課題として挙げられる.. モリアドレスに関するデータフロー解析,(10) プリフェッ チャーの定義木生成,(11) プリフェッチャーおよびアプリ ケーションの定義木の合成, (12) 定義木から RTL コードへ ⓒ 2013 Information Processing Society of Japan. 4. 評価 本稿では,初期評価として,Verilog HDL で記述した簡. 3.
(4) Vol.2013-ARC-204 No.1 2013/3/26. 情報処理学会研究報告 IPSJ SIG Technical Report. 100.0%. 250000 191318. 150000 100000. 93.7%. 96.9%. Base. Prefetch. 80.0% Hit rate!. Cycle!. 200000. 195414. 60.0% 40.0% 20.0%. 50000. 0.0%. 0 Base. Prefetch. (a) 実行サイクル数 図 8. (b) キャッシュヒット率. 実行サイクル数とキャッシュヒット率. Read サイクルレベルのタイミングシミュレータを VPI (Verilog. Programming Interface) を介して HDL シミュレーション に組み込み使用した.キャッシュの構成は,ラインサイズ を 64 バイト,ウェイ数を 4,キャッシュ容量を 16K バイ ト,アクセスレイテンシを 1 とした.メインメモリには, アクセスレイテンシは 16 サイクル固定としたシンプルな モデルを用いた.ベクター加算の扱うデータのメモリフッ トプリントは 96K バイトとした.1 回のベクター加算の処. Write. 理には 8 サイクルのレイテンシを要するもとして,演算は パイプライン化されていないものとした. 図 8(a) に基準のアプリケーションの実行サイクル数と プリフェッチャーを用いた場合の実行サイクル数を示す. また,図 8(b) に両者のキャッシュヒット率を示す.プリ フェッチャーの導入により,2.1%の性能向上を達成した. またキャッシュヒット率が 3.1%向上した.性能向上率が. Source of Address. 伸び悩んだ理由としては,キャッシュが許可するアウトス タンディングミスの数を 1 としたため,プリフェッチリ クエストが後続の読み出しを妨害したことと,今回のプリ. 図 6. Verilog HDL で記述したメモリアクセスを制御する状態遷移. フェッチ対象が,ループ中の同状態における次回のアクセ. コード例. ス先であったため,時系列において後続のリクエストに対 する先行読み出しが行えなかったことなどが挙げられる. 前者を回避するには,アプリケーションカーネルのリクエ ストを優先し,カーネルからリクエストが発行された場合 には,プリフェッチャー側の処理をアボートするなどの処 置を施すことなどが必要である.後者を回避するには,時 系列順に次のアクセスを対象としてプリフェッチするよう なプリフェッチャーの構成を検討する必要がある.. 5. 関連研究 FPGA 向けのメモリシステムの最適化の研究としては, Samuel ら [2] による,高位合成言語で記述されたカーネル 図 7. 生成されるプリフェッチ用コード例. のコースコードを解析し,オフチップ SDRAM へのメモリ アクセスを並べ替えることにより,メモリバンド幅を有効. 単なベンチマークを用いて,提案手法による性能向上の度. 利用する方式や,Eric ら [3] による抽象度の高いメモリモ. 合いを評価する.. デルを用いてアプリケーションを記述し,外部メモリとの. 性能およびキャッシュヒット率を Icarus Verilog[1] を用. カーネルの間にキャッシュとデータ転送機構を自動的に挿. いてシミュレーションにより評価する.ベンチマークには. 入するフレームワークの CoRAM などが挙げられる.前者. ベクター加算を用いた.キャッシュには,C++で記述した. は,高位合成系をターゲットしており,またループ中のイ. ⓒ 2013 Information Processing Society of Japan. 4.
(5) Vol.2013-ARC-204 No.1 2013/3/26. 情報処理学会研究報告 IPSJ SIG Technical Report. ンデックスにのみ着目して最適化を施す点で本研究と異な. [4]. る.後者は,アプリケーションの記述を容易にする点では 本研究とは類似しているが,キャッシュのデータの先読み 等は行わない点で本研究とは異なる. また,マルチコアや SMT プロセッサ上で,本来のアプリ ケーションのスレッドとは別に,キャッシュのプリフェッ チを行うことを目的としたヘルパースレッディングという 手法がある [4], [5].本研究は,FPGA アクセラレータのア プリケーションに対するヘルパースレッディングととらえ ることも可能であり,これらの研究で提案された手法は同. [5]. Lu, J., Das, A., Hsu, W.-C., Nguyen, K. and Abraham, S. G.: Dynamic Helper Threaded Prefetching on the Sun UltraSPARC CMP Processor, Proceedings of the 38th annual IEEE/ACM International Symposium on Microarchitecture, MICRO 38, Washington, DC, USA, IEEE Computer Society, pp. 93–104 (online), DOI: 10.1109/MICRO.2005.18 (2005). Kamruzzaman, M., Swanson, S. and Tullsen, D. M.: Inter-core prefetching for multicore processors using migrating helper threads, Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems, ASPLOS ’11, New York, NY, USA, ACM, pp. 393–404 (online), DOI: 10.1145/1950365.1950411 (2011).. 様に活用できると考えられる.. 6. まとめ 本稿では,FPGA アクセラレータ向けアプリケーショ ン特化プリフェチャーの生成手法の提案および,プリフェ チャーによる性能向上率の初期評価を行った. 今後の課題として,より現実的なアプリケーションを複 数用いた評価を行うこと,プリフェチャーの回路面積など の評価などを行うことが不可欠である.また,既存のプリ フェッチ技術に対する優位性を定量的に評価する必要があ る.現状の解析ツールでは Verilog HDL のフルセットを 解析することができないため,高位合成系などで生成した. RTL 記述からプリフェッチャーを構成することができな い.より現実的な評価を行うためにはツール実装の改善が 求められる.また,より高いメモリ性能を達成するために, キャッシュの置き換えアルゴリズムやラストユース予測な どのハードウェアを静的解析の結果に基づいて構成する手 法を検討したい.. 謝辞 本研究の一部は,科学技術振興機構・戦略的創造研究 推進事業 (CREST) の「ディペンダブルネットワークオン チッププラットフォームの構築」の支援による. 参考文献 [1]. [2]. [3]. Williams, S. and Baxter, M.: Icarus verilog: opensource verilog more than a year later, Linux J., Vol. 2002, No. 99, pp. 3– (online), available from hhttp://dl.acm.org/citation.cfm?id=513581.513584i (2002). Bayliss, S. and Constantinides, G. A.: Optimizing SDRAM bandwidth for custom FPGA loop accelerators, Proceedings of the ACM/SIGDA international symposium on Field Programmable Gate Arrays, FPGA ’12, New York, NY, USA, ACM, pp. 195–204 (online), DOI: 10.1145/2145694.2145727 (2012). Chung, E. S., Hoe, J. C. and Mai, K.: CoRAM: an infabric memory architecture for FPGA-based computing, Proceedings of the 19th ACM/SIGDA international symposium on Field programmable gate arrays, FPGA ’11, New York, NY, USA, ACM, pp. 97–106 (online), DOI: 10.1145/1950413.1950435 (2011).. ⓒ 2013 Information Processing Society of Japan. 5.
(6)
関連したドキュメント
心臓核医学に心機能に関する標準はすべての機能検査の基礎となる重要な観
New Bounds for Ternary Covering Arrays Using a Parallel Simulated Annealing.. Himer Avila-George, 1 Jose Torres-Jimenez, 2 and Vicente Hern
(See [7] for a theory of the rationality of the Kontsevich integral of a knot or a boundary link.) It observes a generalisation of Casson’s formula (Equation 1) of the following
The transition between the two gate voltage levels requires a certain amount of power to be dissipated in the loop between gate driver, gate resistors and power device.
She has curated a number of major special exhibitions for the Gotoh Museum, including Meibutsu gire (From Loom to Heirloom: The World of Meibutsu-gire Textiles) in 2001,
Proceedings of EMEA 2005 in Kanazawa, 2015 International Symposium on Environmental Monitoring in East Asia ‑Remote Sensing and Forests‑.
Proceedings of EMEA 2005 in Kanazawa, 2016 International Symposium on Environmental Monitoring in East Asia ‑Remote Sensing and Forests‑.
Proceedings of EMEA 2005 in Kanazawa, 2005 International Symposium on Environmental Monitoring in East Asia ‑Remote Sensing and Forests‑.