1 / 22

Chapter11- 4( 前半 )

Chapter11- 4( 前半 ). 6311627 加藤健. 4章. システムレベル で の パイプラインの作り方. システムレベルでのパイプラインの作り方. エッジ検出アルゴリズムでの先読み → → → →. バイトバッファ配列へのアクセスが必要. パフォーマンスが低下. パイプラインレベルで の 並列 処理 を行う. 劇的にフィルタの実効 スループットが向上. システムレベル で のパイプライン の作り方. イメージフィルタアルゴリズムをサブプロセスへ分割. フィルタの複雑さが軽減 アルゴリズムのパフォーマンスが改善.

lee-rocha
Download Presentation

Chapter11- 4( 前半 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter11-4(前半) 6311627 加藤健

  2. 4章 システムレベルでの パイプラインの作り方

  3. システムレベルでのパイプラインの作り方 エッジ検出アルゴリズムでの先読み → → → → バイトバッファ配列へのアクセスが必要 パフォーマンスが低下 パイプラインレベルでの並列処理を行う 劇的にフィルタの実効スループットが向上

  4. システムレベルでのパイプラインの作り方 • イメージフィルタアルゴリズムをサブプロセスへ分割 • フィルタの複雑さが軽減 • アルゴリズムのパフォーマンスが改善

  5. システムレベルでのパイプラインの作り方 • パイプラインの動作は7章で説明したものと ほぼ同様(今回は高レベル) • パイプラインはプログラマにより設計される (コンパイラにより自動的に生成されない)

  6. システムレベルでのパイプラインの作り方 • エッジ検出の実装には各ピクセルを処理するために3×3のウインドウが必要 • 本書のアルゴリズムでは、上流のプロセスが3つのストリームとしてウインドウを生成 バイトバッファとそれに対応する 循環バッファのオーバーヘッドが不要に

  7. システムレベルでのパイプラインの作り方 • 画像データをco_memory_readblockを使用してイメージバッファからロード。その後co_stream_writeを使用して24ビットのピクセルのストリームに変換 • ジェネレータによりウインドウの各列を表すストリームを生成する。

  8. システムレベルでのパイプラインの作り方 • 3つのピクセルデータは中央のピクセルの値を計算するために使われる。  この値はco_stream_writeからストリーミングされる 4.co_stream_readを使用して結果のピクセルデータを呼び出し、co_memory_writeblockを使用して新しいイメージバッファに格納

  9. システムレベルでのパイプラインの作り方 4つのプロセスはパイプラインにより並列で動作 リアルタイム動画処理に十分な速さを実現 2クロックサイクルの速度で 処理されたピクセルを生成可能

  10. DMAの入力プロセス • これまでのアルゴリズムでは入出力画像が 保存されているかを無視していた • 実際は、外部RAMやハードウェアインターフェイスを介して入出力される • Impulse C は大量のデータを移動するための ストリームと、共有メモリのメカニズムを提供している

  11. DMAの入力プロセス • これまでの例ではストリームを使用 • 選択決定の要因はプラットフォーム固有 • 留意する点は4つ 特定のアプリケーションでは 共有メモリを使用するとパフォーマンスが向上

  12. DMAの入力プロセス • 各ストリームの処理に何サイクル必要か • プロセッサが転送に関わっているかとCPUとバスの組み合わせに依存 • バスがストリーム上でデータを受信する際、ポーリングすると、大幅なオーバーヘッドが発生

  13. DMAの入力プロセス • メモリ転送のために何サイクル必要か • 1と同様に使用されているメモリとバスのアーキテクチャに依存している

  14. DMAの入力プロセス 3-1.CPUがキャッシュを持っているか 3-2. そのデータはキャッシュに存在するか

  15. DMAの入力プロセス 4.Impulse Cのハードウェアのプロセスと 同じバス上のメモリか • そうであるなら、CPUへのアクセス競合をおこし、パフォーマンスが低下する

  16. DMAの入力プロセス • 4章においてベンチマークの例を用いてこれらの問題について議論した • 今回はストリーミングデータを用いるアプローチと共有メモリを用いるアプローチの比較実験のためにNiosⅡが埋め込まれたAlteraのStratix FPGAを使用

  17. DMAの入力プロセス • NiosⅡが埋め込まれたAlteraのStratixFPGAはストリームよりもDMA転送を使用したほうが効率的なFPGA • 他のプラットフォームにおいてXilinxのMicroBlazeプロセッサとFSLバスを使用するとDMA転送より高速なパフォーマンスになることもある

  18. DMAの入力プロセス • DMAを用いた共有メモリとのアクセスはハードウェアが転送中、別の処理を行うと転送がブロックされる欠点がある • 画像データを読み込み、データストリームから送信することがパイプラインの第一プロセス データ転送が計算とオーバーラップできるように 共有メモリ操作を処理するためのプロセスを含む必要がある

  19. DMAの入力プロセス • 図11‐9からわかること • to_streamプロセスは • co_signal go • co_memoryimgmem • co_streamoutput_stream の3要素を持つ

  20. DMAの入力プロセス 2. プロセス実行機能では、それぞれ • co_memory_readblock関数は共有メモリからのピクセルデータの読み取り • co_stream_write関数は出力ストリームへの書き込みを行う • co_signalはCPUと同期し、画像メモリの処理準備ができているかを確認  を行っている。

  21. DMAの入力プロセス 3. • 24bitのデータを受け入れるように設計されているため16bitのピクセルデータを受理する • 画像データは16bit符合なし整数として格納するが32bitのメモリが使用されている • DMAは配列に1つずつ要素を転送することで、倍のバストランザクションを必要とする

  22. DMAの入力プロセス • これらのプロセスは多くの種類の入力ソースと共に使用できるように変更する、あるいは手製のハードウェアブロックに置き換えることが可能

More Related