計算機アーキテクチャ特論Chapter.6.6~6.9

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

太原研究室 M1 割田臣一.  既に述べたように、イメージフィルタは一般に、 動作しているイメージデータの画面に作用する。 ◦ この例では、 3×3 ウィンドウ上でフィルタを作用させる。 ◦ 処理においては 3 つの新しい値と、先程のピクセルの計 算で用いた 6 つの同じ値を使う。  カラム(
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Chapter11-4(前半) 加藤健.
Capter9 Creating an Embedded Test Bench ( )
計算機システムⅡ 主記憶装置とALU,レジスタの制御
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
データ構造とアルゴリズム 第10回 mallocとfree
LMNtalからC言語への変換の設計と実装
テープ(メモリ)と状態で何をするか決める
LMNtalからC言語への変換の設計と実装
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
第4章 Impulse C の導入 安達ほのか シグナルやストリーム 、メモリーは型だからそのまま訳す.
プログラムはなぜ動くのか.
オペレーティングシステム i386アーキテクチャ(2)
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
型付きアセンブリ言語を用いた安全なカーネル拡張
OpenMPハードウェア動作合成システムの検証(Ⅰ)
高速剰余算アルゴリズムとそのハードウェア実装についての研究
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
並列計算システム特論演習 SCS特別講義 平成13年10月15日.
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
マルチスレッド処理 マルチプロセス処理について
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
レジスタの割付け 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第12章5節.
通信機構合わせた最適化をおこなう並列化ンパイラ
ディジタル回路の設計と CADによるシステム設計
一時的な型 長谷川啓
情報処理Ⅱ 第2回:2003年10月14日(火).
Javaへの変換による 安全なC言語の実装
情報とコンピュータ 静岡大学工学部 安藤和敏
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
参照されないリテラル 長谷川啓
Handel-Cを用いた パックマンの設計
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
コンピュータアーキテクチャ 第 5 回.
パイプラインとは何か? マイクロプロセッサ(MPU)の高速化手法の一つのこと。
Cソースコード解析による ハード/ソフト最適分割システムの構築
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
アルゴリズムとデータ構造1 2009年6月15日
R8C I/Oポートの仕組み SFR定義ファイルの中身.
ネットワーク・プログラミング Cプログラミングの基礎.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
情報処理Ⅱ 2005年10月28日(金).
コンピュータアーキテクチャ 第 11 回.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
アルゴリズムとデータ構造 2010年6月17日
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
情報処理Ⅱ 第2回 2004年10月12日(火).
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
並列処理プロセッサへの 実数演算機構の開発
情報処理Ⅱ 小テスト 2005年2月1日(火).
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

計算機アーキテクチャ特論Chapter.6.6~6.9 6311636 篠原辰哉

6.6 HARDWARE GENERATION NOTES 命令レベルのプラグマ 命令・ブロックレベルの最適化はCソースコードの段 階で以下のプラグマを用いて行われる ・CO PIPELINE ・CO UNROLL ・CO SET stageDelay

6.6 HARDWARE GENERATION NOTES CO PIPELINEプラグマ 命令のパイプライン化は、次のような宣言が必要 for(i=0;i<10;i++){ #pragma CO PIPELINE sum+=i<<1; } この時、PIPELINEプラグマはループの先頭になけれ ばいけなく、又入れ子のループを含んではいけない

6.6 HARDWARE GENERATION NOTES CO UNROLLプラグマ ループのアンロールは次のような宣言が必要 for(tap=0;tap<TAPS;tap++){ #pragma CO UNROLL accum+=fribuffer[tap]+coef[tap]; } PIPELINEプラグマ同様ループの先頭になければい けない

6.6 HARDWARE GENERATION NOTES CO UNROLLプラグマ ループのアンロールはループの回数だけハードウェ ア上に重複して実装されることになる。 従って、ハードウェアサイズを考慮し、比較的繰り返し の少ないループに使うのが重要。 また、ハードウェア上で並行に実装できないような相 互依存の計算を含んではいけない。

6.6 HARDWARE GENERATION NOTES CO SET stageDelayプラグマ このプラグマは1ステージに組み合わせゲートでかか る遅延の最大値を指定する。 1ステージ中の宣言は1クロックで実装されるので、 Stage Delayを制御して1クロックに行われる処理を 分割して動作周波数を向上できることもある。

6.7 MAKING EFFICIENT USE OF THE OPTIMIZERS Impulse Cの処理を書くとき、Cコードがハードウェア 生成時にコンパイラやオプティマイザがどのように並 列化を行うか基本的な理解が必要。 これを理解すれば、実行速度と回路サイズ両方の点 において最適なコードが書ける。 このセクションでは、Impulse Cオプティマイザの動作 を一般的に説明し、ハードウェア生成のためのCを書 くためのいくつかの制約を説明する。

6.7 MAKING EFFICIENT USE OF THE OPTIMIZERS Stage Masterオプティマイザ Impulse Cのオプティマイザ(Stage Master)はコンパ イラによって生成されたCコードの基本ブロックに動作 して、命令ステージ数を最小にするよう命令をスケジ ューリングする。 次のような場所は必ずステージが遷移する If判定やループの条件制御 既に現在のステージで使われているメモリや配列 へのアクセス

6.7 MAKING EFFICIENT USE OF THE OPTIMIZERS Stage Masterオプティマイザ 例えば for(i=0;i<10;i++) sum+=i<<1; これをパイプライン化すると for(i=0;i<10;i++){ #pragma CO PIPELINE } 遅延 10*(delay(adder)+delay(shifter)) 遅延 10*max(delay(adder),delay(shifter))

6.7 MAKING EFFICIENT USE OF THE OPTIMIZERS メモリアクセスの影響 オプティマイザは同じバンクのメモリにアクセスするス テージを並列化できないので、並列処理を最大限活 かすためにはデータの独立性が重要。 そのため、大きな配列の一部をローカルストレージに 移動するといったことが必要になる。

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES Impulse CはANSI Cと互換性があるが、ハードウェ アを記述するとき、汎用のCコードにいくつかの制約 がある。

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES 関数呼び出しの非サポート Impulse Cのプロセスはコンパイル時に作られスタテ ィックなので、通常の方法ではハードウェアにコンパイ ルされたImpulse Cプロセスは他の関数やプロセスを 呼ぶことはできない。 #pragma CO PRIMITIVEで可能になった?

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES 整数演算 +, -, *, ++は1サイクルの計算としてサポートされる。 /を用いた除算演算は1ビット毎に1サイクル必要とす る複数サイクル演算。

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES シフト演算 シフト演算のオペランドは定数値のみ 例えば、次のループは iFlags = 0; for(i=0;i<8;i++){ if(afCubeVal[i] <= FTARGETVALUE) iFlags |=1<<I; }

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES シフト演算 iFlags = 0; bit=1; for(i=0;i<8;i++){ if(afCubeVal[i] <= FTARGETVALUE) iFlags |=bit; bit=bit<<1; } このように書きなおさなければいけない。

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES データ型の制限 Impulse Cコンパイラは構造体や共用体のような複雑 なデータ型をサポートしない。 また、これを書いている時点では、浮動小数点型もサ ポートされていないが、後のリリースでサポートされる だろう。

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES ポインタの制限 Impulse Cでのポインタの利用はコンパイル時点で 解決できる特定のメモリ位置への参照でなければな らなく、次のような状況に限られる

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES ポインタの制限 1.<pointer>=&<array element> 例:p=&(a[4]); 2.<pointer>++ 例:p++; 3.<pointer>=<pointer>+<integer expression> 例:p=p+2;

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES ポインタの制限 また、ポインタは複数の配列を指してはいけない。 次は許可される p=&(a[2]); … p=&(a[3]); が、次のような割り当ては許可されない p=&(b[3]);

6.8 LANGUAGE CONSTRAINTS FOR HARDWARE PROCESSES 多次元配列へのポインタの利用 入れ子のループを使用するよりも、次のようにポイン タを利用した方が効率的である p=&(a[0][0]); for(i=0;i<4*5;i++){ …//Access the array elements using p p++; }

6.9 SUMMARY このチャプタでは、FPGAハードウェアがImpulse Cコ ンパイラによってどのように作られるのかを見てきた。 以降のチャプタでは、ハードウェア生成と最適化に関 する重要なトピックスについて検討していく。

おわり