0

この命令フロー図を検討してください....

命令フェッチ→命令デコード→オペランドフェッチ→命令実行→ライトバック

をサポートするプロセッサを想定します。

cisc と risc の両方... intel 486 のように

ここで、risc 命令を発行すると、実行に 1 クロック サイクルかかるため、問題はありません...しかし、cisc 命令を発行すると、実行に時間がかかります...

そのため、cisc 命令を実行するのに 3 クロック サイクルかかり、実行前の段階でそれぞれ 1 クロック サイクルかかるとします。

現在、スーパースカラー構造では、最初の命令が処理されている間に発行された 2 つの命令が、利用可能な他の機能ユニットに迂回されます...しかし、命令の実行に利用できる機能ユニットは 1 つだけであるため、単純なパイプラインではそのような迂回は不可能です....

では、単純なパイプライン処理で命令の輻輳を回避するにはどうすればよいでしょうか?

4

1 に答える 1

1

技術的に言えば、x86 は RISC プロセッサではありません。CISC プロセッサです。時間がかからない命令もありますが、それらは RISC 命令ではありません。Intel は内部的に命令を RISC 命令に変換していると思いますが、それはあまり関係ありません。

異なる時間がかかる命令がある場合、それは CISC プロセッサになります。CISC プロセッサをパイプライン処理することはほぼ不可能です。私の知る限り、誰も実行したことがありません。アウトオブオーダー実行など、実行を高速化するために CPU 自体の内部で実行できることはたくさんあります。したがって、すべての命令を順番に実行する必要があるため、パイプラインの輻輳が発生することはありません。

ここで、risc 命令を発行すると、実行に 1 クロック サイクルかかるため、問題はありません...しかし、cisc 命令を発行すると、実行に時間がかかります...

RISC 命令は必ずしも 1 クロック サイクルかかるとは限りません。MIPS では 5 かかります。ただし、パイプライン処理のポイントは、1 つの命令を実行した後、現在の命令が終了してから 1 クロック サイクル後に次の命令が完了することです。

現在、スーパースカラー構造では、最初の命令が処理されている間に発行された 2 つの命令が、利用可能な他の機能ユニットに転用されます...

スーパースカラー アーキテクチャでは、2 つの命令が同時に実行され、終了します。純粋なスーパースカラー アーキテクチャでは、サイクルは次のようになります (F = フェッチ、D = デコード、X = 実行、M = メモリ、W = ライトバック)。

(inst. 1) F D X M W
(inst. 2) F D X M W
(inst. 3)          F D X M W
(inst. 4)          F D X M W

しかし、命令の実行に使用できる機能ユニットは 1 つだけなので、単純なパイプライン処理ではそのような転用は不可能です....

そうですね、サイクルは次のようになります。

(inst. 1) F D X M W
(inst. 2)   F D X M W
(inst. 3)     F D X M W
(inst. 4)       F D X M W

ここで、さまざまな時間がかかる命令 (CISC コンピューター) がある場合、実行ユニットが 1 つしかないため、パイプライン処理が難しくなり、前の命令の実行が完了するまで待機する必要がある場合があります。この例では、命令 1 は 2 実行サイクル、命令 2 は 5 実行サイクル、命令 3 は 2 実行サイクル、命令 4 は 1 実行サイクルしかかかりません。

(inst. 1) F D X X M W
(inst. 2)         F D X X X X X M W
(inst. 3)                       F D X X M W
(inst. 4)                               F D X M W

したがって、実際には CISC プロセッサをパイプライン処理することはできません。次の命令に進む前に、実行サイクルが終了するまで待機する必要があります。MIPS ではこれを行う必要はありません。デコード フェーズで命令が分岐であり、宛先であるかどうかを判断できるからです。

于 2011-06-17T18:43:13.637 に答える