0

命令レベルの並列処理で使用される方法と、それらの違いについて学習しようとしています。ここでの私の質問は、最初は命令レベルの並列処理なしでプロセッサで実行するように作成された命令セットを考えると、新しいプロセッサで命令レベルの並列処理を実現するためにこれらの方法のどれを使用できるか、およびその理由と方法です。新しいプロセッサは、元のプロセッサと同じ命令セットを実行し、同じプログラム バイナリを実行しますが、パフォーマンスは向上します。オプションは次のとおりです。

1)アウトオブオーダー実行(トマスロアルゴリズム)

2)パイプライン

3)スーパースカラー

4)VLIW

4

2 に答える 2

0

パイプライン処理から始めます。これは、複数の命令のフェッチ、デコード、実行などをオーバーラップすることで 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 を実現します。

于 2020-01-13T21:34:22.470 に答える