Next: , Previous: , Up: Assembly Coding   [Index]


15.8.8 ソフトウェアパイプライン

ソフトウェアパイプラインは,ループ内の分岐点周りのスケジューリングのための命令から構成されています。例えば,ループ内で,今の反復ではなく,次の反復でロード命令を発行する予定がある場合,メモリからデータを届けるための余分なサイクルを発生させたりできます。

当然,これが望まれるのは,終了までに数サイクル要するロード命令や乗算を実行したり,CPUが複数の関数ユニットを持ち,他の仕事をついでに実行できるような環境であったりした場合に限られます。

複数ステージを持つパイプラインは,実行中も各ステージでデータ値を持ち,ループの反復中もステージに沿ってデータを移動します。まるでお手玉のように。

命令のレイテンシがループの時間より長いのであれば,ループを展開する必要が出てくるでしょう。その結果,他の(多数の場合もあり)レジスタが実行中であっても,一つのレジスタがいつでも使える結果を持つことができるようになります(see Assembly Loop Unrolling).