Download presentation
Presentation is loading. Please wait.
1
Chapter11-4(前半) 加藤健
2
4章 システムレベルでの パイプラインの作り方
3
システムレベルでのパイプラインの作り方 エッジ検出アルゴリズムでの先読み → → バイトバッファ配列へのアクセスが必要 パフォーマンスが低下
パイプラインレベルでの並列処理を行う 先読みでは、 劇的にフィルタの実効スループットが向上
4
システムレベルでのパイプラインの作り方 イメージフィルタアルゴリズムをサブプロセスへ分割 フィルタの複雑さが軽減
アルゴリズムのパフォーマンスが改善 そこで
5
システムレベルでのパイプラインの作り方 パイプラインの動作は7章で説明したものと ほぼ同様(今回は高レベル)
ほぼ同様(今回は高レベル) パイプラインはプログラマにより設計される (コンパイラにより自動的に生成されない) 並行処理を行う際
6
システムレベルでのパイプラインの作り方 エッジ検出の実装には各ピクセルを処理するために3×3のウインドウが必要
本書のアルゴリズムでは、上流のプロセスが3つのストリームとしてウインドウを生成 バイトバッファとそれに対応する 循環バッファのオーバーヘッドが不要に 実装のおはなし
7
システムレベルでのパイプラインの作り方 画像データをco_memory_readblockを使用してイメージバッファからロード。その後co_stream_writeを使用して24ビットのピクセルのストリームに変換 ジェネレータによりウインドウの各列を表すストリームを生成する。 4つのプロセスのパイプライン
8
システムレベルでのパイプラインの作り方 3つのピクセルデータは中央のピクセルの値を計算するために使われる。
この値はco_stream_writeからストリーミングされる 4. co_stream_readを使用して結果のピクセルデータを呼び出し、co_memory_writeblockを使用して新しいイメージバッファに格納
9
システムレベルでのパイプラインの作り方 4つのプロセスはパイプラインにより並列で動作 リアルタイム動画処理に十分な速さを実現
4つのプロセスはパイプラインにより並列で動作 リアルタイム動画処理に十分な速さを実現 2クロックサイクルの速度で 処理されたピクセルを生成可能
10
DMAの入力プロセス これまでのアルゴリズムでは入出力画像が 保存されているかを無視していた
保存されているかを無視していた 実際は、外部RAMやハードウェアインターフェイスを介して入出力される Impulse C は大量のデータを移動するための ストリームと、共有メモリのメカニズムを提供している DMA=ダイレクトメモリアクセス(CPUを介さないで直接データ転送)
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のStratix FPGAはストリームよりもDMA転送を使用したほうが効率的なFPGA 他のプラットフォームにおいてXilinxのMicroBlazeプロセッサとFSLバスを使用するとDMA転送より高速なパフォーマンスになることもある
18
DMAの入力プロセス DMAを用いた共有メモリとのアクセスはハードウェアが転送中、別の処理を行うと転送がブロックされる欠点がある
画像データを読み込み、データストリームから送信することがパイプラインの第一プロセス データ転送が計算とオーバーラップできるように 共有メモリ操作を処理するためのプロセスを含む必要がある 第一プロセスです。で、このページは終わる
19
DMAの入力プロセス 図11‐9からわかること to_streamプロセスは co_signal go co_memory imgmem
co_stream output_stream の3要素を持つ 11-9を参照しつつ説明
20
DMAの入力プロセス 2. プロセス実行機能では、それぞれ
2. プロセス実行機能では、それぞれ co_memory_readblock関数は共有メモリからのピクセルデータの読み取り co_stream_write関数は出力ストリームへの書き込みを行う co_signalはCPUと同期し、画像メモリの処理準備ができているかを確認 を行っている。
21
DMAの入力プロセス 3. 24bitのデータを受け入れるように設計されているため16bitのピクセルデータを受理する
3. 24bitのデータを受け入れるように設計されているため16bitのピクセルデータを受理する 画像データは16bit符合なし整数として格納するが32bitのメモリが使用されている DMAは配列に1つずつ要素を転送することで、倍のバストランザクションを必要とする バストランザクション=バスによるデータ転送において、データ転送に関わる細かい情報を省略してデータ転送動作を記述した物
22
DMAの入力プロセス これらのプロセスは多くの種類の入力ソースと共に使用できるように変更する、あるいは手製のハードウェアブロックに置き換えることが可能
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.