chapter11- 4( 前半 )
DESCRIPTION
Chapter11- 4( 前半 ). 6311627 加藤健. 4章. システムレベル で の パイプラインの作り方. システムレベルでのパイプラインの作り方. エッジ検出アルゴリズムでの先読み → → → →. バイトバッファ配列へのアクセスが必要. パフォーマンスが低下. パイプラインレベルで の 並列 処理 を行う. 劇的にフィルタの実効 スループットが向上. システムレベル で のパイプライン の作り方. イメージフィルタアルゴリズムをサブプロセスへ分割. フィルタの複雑さが軽減 アルゴリズムのパフォーマンスが改善. - PowerPoint PPT PresentationTRANSCRIPT
Chapter11-4( 前半 )
6311627加藤健
4章
システムレベルでのパイプラインの作り方
システムレベルでのパイプラインの作り方
エッジ検出アルゴリズムでの先読み → →
→ →
バイトバッファ配列へのアクセスが必要
パフォーマンスが低下
パイプラインレベルでの並列処理を行う劇的にフィルタの実効スループットが
向上
システムレベルでのパイプラインの作り方
• イメージフィルタアルゴリズムをサブプロセスへ分割
•フィルタの複雑さが軽減•アルゴリズムのパフォーマンスが改善
システムレベルでのパイプラインの作り方
• パイプラインの動作は 7 章で説明したものと
ほぼ同様(今回は高レベル)
• パイプラインはプログラマにより設計される
(コンパイラにより自動的に生成されない)
システムレベルでのパイプラインの作り方• エッジ検出の実装には各ピクセルを処理
するために3 × 3のウインドウが必要
• 本書のアルゴリズムでは、上流のプロセスが3つのストリームとしてウインドウを生成バイトバッファとそれに対応する
循環バッファのオーバーヘッドが不要に
システムレベルでのパイプラインの作り方
1. 画像データを co_memory_readblock を使用してイメージバッファからロード。その後 co_stream_write を使用して 24 ビットのピクセルのストリームに変換
2. ジェネレータによりウインドウの各列を表すストリームを生成する。
システムレベルでのパイプラインの作り方
3. 3 つのピクセルデータは中央のピクセルの値を計算するために使われる。
この値は co_stream_write からストリーミングされる
4. co_stream_read を使用して結果のピクセルデータを呼び出し、co_memory_writeblock を使用して新しいイメージバッファに格納
システムレベルでのパイプラインの作り方
4 つのプロセスはパイプラインにより並列で動作
リアルタイム動画処理に十分な速さを実現
2 クロックサイクルの速度で処理されたピクセルを生成可能
DMA の入力プロセス• これまでのアルゴリズムでは入出力画像が 保存されているかを無視していた• 実際は、外部 RAM やハードウェアインター
フェイスを介して入出力される
• Impulse C は大量のデータを移動するための ストリームと、共有メモリのメカニズムを
提供している
DMA の入力プロセス• これまでの例ではストリームを使用
• 選択決定の要因はプラットフォーム固有• 留意する点は 4 つ
特定のアプリケーションでは共有メモリを使用するとパフォーマンスが向上
DMA の入力プロセス1. 各ストリームの処理に何サイクル必要か
• プロセッサが転送に関わっているかとCPU とバスの組み合わせに依存
• バスがストリーム上でデータを受信する際、ポーリングすると、大幅なオーバーヘッドが発生
DMA の入力プロセス2. メモリ転送のために何サイクル必要か
• 1 と同様に使用されているメモリとバスのアーキテクチャに依存している
DMA の入力プロセス3-1. CPU がキャッシュを持っているか
3-2. そのデータはキャッシュに存在するか
DMA の入力プロセス4. Impulse C のハードウェアのプロセスと 同じバス上のメモリか
• そうであるなら、 CPU へのアクセス競合をおこし、パフォーマンスが低下する
DMA の入力プロセス• 4 章においてベンチマークの例を用いてこ
れらの問題について議論した
• 今回はストリーミングデータを用いるアプローチと共有メモリを用いるアプローチの比較実験のために NiosⅡ が埋め込まれた Altera の Stratix FPGA を使用
DMA の入力プロセス• NiosⅡ が埋め込まれた Altera の Stratix FPGA
はストリームよりも DMA 転送を使用したほうが効率的な FPGA
• 他のプラットフォームにおいて Xilinx のMicroBlaze プロセッサと FSL バスを使用すると DMA 転送より高速なパフォーマンスになることもある
DMA の入力プロセス• DMA を用いた共有メモリとのアクセスは
ハードウェアが転送中、別の処理を行うと転送がブロックされる欠点がある
• 画像データを読み込み、データストリームから送信することがパイプラインの第一プロセス
データ転送が計算とオーバーラップできるように共有メモリ操作を処理するためのプロセスを含む必要があ
る
DMA の入力プロセス• 図 11 9‐ からわかること
1. to_stream プロセスは• co_signal go• co_memory imgmem• co_stream output_stream の 3 要素を持つ
DMA の入力プロセス2. プロセス実行機能では、それぞれ• co_memory_readblock 関数は共有メモリから
のピクセルデータの読み取り• co_stream_write 関数は出力ストリームへの
書き込みを行う• co_signal は CPU と同期し、画像メモリの処
理準備ができているかを確認 を行っている。
DMA の入力プロセス3. • 24bit のデータを受け入れるように設計さ
れているため 16bit のピクセルデータを受理する
• 画像データは 16bit符合なし整数として格納するが 32bit のメモリが使用されている
• DMA は配列に 1 つずつ要素を転送することで、倍のバストランザクションを必要とする
DMA の入力プロセス
• これらのプロセスは多くの種類の入力ソースと共に使用できるように変更する、あるいは手製のハードウェアブロックに置き換えることが可能