命令レベルの並列性
反依存(anti-dependency)は、命令が後で更新される値を必要とする場合を指す。以下の例では、3番の命令は2番の命令に反依存している。これらの命令を順番を変えたり、同時に並列して実行すると、最終的な A の値が期待したものとは変わってしまう可能性があるため、逐次的にしか実行できない。
反依存は「名前依存; name dependency」の一種でもある。すなわち、変数名を変えてやることで依存関係が解消される。以下に例を示す。
新たな変数 B2 を導入して B を代入する命令 N を追加する。すると、2 と 3 の反依存は解消され、これらを並列して実行可能となる。しかし、この修正によって新たな依存関係が生じている。2番の命令は N に真の依存をしており、N は1番に真の依存をしている。真の依存であるため、これらは解消できない。