命令レベルの並列性
出力依存(output dependency)とは、命令の並べ替えによって最終的な変数の出力値が変わってしまうことを指す。以下の例では、3番と1番の命令に出力依存がある。命令を並べ替えると、Aの最終的な値が変わってしまうため、これらの命令を並列して実行することはできない。
反依存と同様、出力依存も名前依存の一種である。従って、変数名を変えることで解消できる。この例の場合、以下のように修正すればよい。
一般に、変数名に関わるデータの依存関係は、リード・アフター・ライト(真の依存)、ライト・アフター・ライト(出力依存)、ライト・アフター・リード(反依存)と呼ばれる(レジスタ・リネーミング参照)。
命令Bがその前にある命令Aに制御依存しているという場合、命令Aが命令Bを実行するか否かを決定していることを意味する。以下の例では、命令 2 は 命令 1 に対して制御依存している。