計算のストリーミングモデルの例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/02 17:19 UTC 版)
「再構成可能コンピューティング」の記事における「計算のストリーミングモデルの例」の解説
問題: 長さ256のchar型配列 A[] と B[] があり、配列 C[] を C[i]=B[B[B[B[B[B[B[B[A[i]]]]]]]]] となるよう計算する。この問題は仮想的なものだが、実世界の問題にも似たような例はある。 ソフトウェアで解く場合、C言語では次のようなコードになる。 for(int i=0;i<256;i++){char a=A[i];for(int j=0;j<8;j++)a=B[a];C[i]=a;} このプログラムの実行には 256*10*CPI サイクルかかる。ここでCPIとは、1命令あたりのサイクル数である。 これを例えばFPGAなどハードウェアで実装した場合を示す。その場合、配列 'A' の各要素がマイクロプロセッサによって「ストリーム」化され、サイクル毎にFPGA上の回路に送り込まれる。配列 'B' はROM、例えばFPGAのBRAMに実装されるものとする。'B' とラベル付けされたROMに入っていく線はアドレス線であり、出てくる線はそのアドレスに格納されていた値を出力するものである。青い四角形は一時的な値を格納するレジスタである。見ての通り、これはパイプライン構造であり、8サイクルで C[i] の値を出力する。入力がストリーム化されていれば、出力もストリームとなる。 このハードウェア実装では、256+8 サイクルかかる。したがって、ソフトウェア実装に対して 10*CPI のぶんだけ高速化できると期待される。ただし、FPGAはクロック周波数が低いので、性能向上の度合いはそれよりも小さくなる。
※この「計算のストリーミングモデルの例」の解説は、「再構成可能コンピューティング」の解説の一部です。
「計算のストリーミングモデルの例」を含む「再構成可能コンピューティング」の記事については、「再構成可能コンピューティング」の概要を参照ください。
- 計算のストリーミングモデルの例のページへのリンク