IT系メモ

興味のあったことや、勉強したことなどをメモしていきます。

パイプライン処理

インテルのパソコンを使っていると聞くことになるパイプラインという言葉。Wikipediaを参考にすると、一つの命令を高速化するわけではなく、システム全体を高速化するためのものということだ。

ARMのAMBA2テクニカルリファレンスマニュアルを読んでいてもパイプラインという言葉が出てくる。AMBAの場合はアドレスサイクルとデータサイクルを1クロックサイクルで同時に行えるという意味のようだ。

つまりチップのある部分ではアドレスの処理をしており、同時並行でデータの処理をしているということ。


しかしまだ疑問が残る。よく言われるパイプラインの段数を増やせばクロック周波数を上げることができる、というものだ。同時並行で処理するだけならクロック周波数との関係性はわからない。

パイプラインの段数を増やすとレイテンシが増える

Wikipediaでは上のような説明があった。パイプラインを工場の組み立てラインと同じと考えてよく、パイプラインの各工程では命令の一部を完了するそうだ。その各工程のことをパイプステージと呼ぶ。

この説明で納得がいっていないのが、レイテンシがなんで増えるのかということ。パイプラインの各工程で命令の一部が実行されるのであれば、命令の実行"完了"までは遅くなりそうなのだが、発行から実行までの時間は変わらない気がする。

どうもレイテンシの考えが違っていたようだ。

  • 前:命令の発行から命令の実行までの時間のこと
  • 後:命令の発行から命令結果が返ってくるまでの時間のこと

ステージすべてを同時進行しなければならない

1クロックで1ステージが進むとして、同時に処理が行われるようにステージ間にバッファを挿入するそうだ。STAで調整するのだと思う。