パイプライン処理から始めます。これは、複数の命令のフェッチ、デコード、実行などをオーバーラップすることで ILP を達成するための最も古くて最良のアプローチです。ILP を達成するために OOO、インオーダー、スーパースカラー、VLIW などを備えた実際の CPU もパイプライン化されることは非常に一般的です。
はい、OOOは ILP を達成します。以下の最初と 3 番目の命令は OOO を並行して実行できますが、2 番目の命令は最初の命令が完了するまで待機する必要があります ( r1のRAW ハザード)。CPU スケジューラは、3 番目の命令 OOO を動的に見つける必要があります。
ld r1, 0(r2)
add r2, r1, r3
add r4, r3, r5
順番については言及していませんが、ILPも達成できます。最初と 2 番目の命令は並行して実行できますが、3 番目の命令も r1 に RAW ハザードがあるため、最初の命令が完了するまで待機する必要があります。
ld r1, 0(r2)
add r4, r3, r5
add r2, r1, r3
スーパースカラーとVLIWは ILP にのみ存在します。VLIW は、静的コンパイル時間スケジューリングを使用して ILP を実現します。スーパースカラーは、CPU による実行時間スケジューリングと、コンパイラによるコンパイル時間スケジューリングを使用して、ILP を実現します。