2

私のIntelx86Pentiumハンドブックでは、SAL / SHRのようなADDとシフトは1クロックかかるJMPやMOVのようなものと比較して、1/3クロックかかると書かれています。これは、一連の追加とシフトが一連のmovよりも3倍速くなるというのは本当に本当ですか?

ウェブ上に「PentiumM」を示す「レイテンシー」の表があり、タイミングは1/3ではありませんが、1/2であるため、私は二重に混乱していると思います。これは私の本が古く、新しいPentiumsシフトがJMPと同じ速度であるためですか?

4

2 に答える 2

9

「レイテンシ」と「相互スループット」を混同しないでください。

  • レイテンシーは、命令の1つのインスタンスを実行するのにかかるサイクル数です。
  • 相互スループットは、プロセッサが維持できる1サイクルあたりの命令数です。

あなた1/3が見ているのは待ち時間ではありません。これは相互スループットです。プロセッサは、サイクルごとに3つのADDを維持できます。(それらがすべて独立している場合)しかし、それぞれが実行するのに少なくとも1サイクルかかります。

レイテンシー1と相互スループットがの場合1/3、プロセッサーは最大3つのADDを同時に実行できることを意味します。しかし、それぞれがまだ1サイクルかかります。


歴史的に、ほとんどのIntelプロセッサ(Pentium以降?)には、追加やシフトなどの基本的な操作をすべて実行できる3つの主要な実行ユニットがあります。そのため、これらのほとんどは1/3相互スループットです。

登録間MOVもである必要があります1/3。しかし、メモリに触れるMOV(つまり、ロードとストア)は、歴史的に1サイクルのみです。(最近、Sandy Bridge以降で、これは増加しています。)

于 2012-10-05T15:31:24.273 に答える
3

これが元のPentiumに関するものであると仮定すると(つまり、Pentium Pro以降ではない)、1/3「3分の1」(またはそのようなもの)を意味するものではありません。つまり、命令のスループットは1サイクル、レイテンシは3サイクルです(つまり、サイクルごとに1つの命令を開始し、サイクルごとに終了することができますが、命令には3つのパイプラインステージが必要であるため、開始と終了の間に3サイクルの遅延があります。特定の指示)。

元のPentiumには実行ユニットが2つしかなく、アウトオブオーダー実行はありませんでした。特定のクロックサイクルで、次の命令はUパイプラインで実行されます。適切な条件が満たされた場合、その後の命令はVパイプラインで実行できます。どのような状況でも、特定のサイクルで2つを超える命令が実行されることはなく、1つのパイプラインのクロックごとに複数の命令が実行されることもありませんでした。

後のプロセッサ(Pentium Pro以降)は、順不同の命令スケジューリングを追加し、1サイクルで3つ以上の命令を実行する機能を追加しました(かなり多くの「飛行中」になる可能性がありますが、サイクルごとに3つを廃止することに制限されていました)。Pentium IVは、2つの非常に単純な命令(レジスタからレジスタへAND、OR、NOT、ADD、SUB、シングルビットシフト)を同じ実行ユニットで単一のクロックサイクルで実行する機能を追加しました(つまり、実行ユニットには実際には定格クロック速度の2倍で動作していたため、たとえば2.8 GHzプロセッサでは、少量の回路が実際には5.6GHzで動作していました。

于 2012-10-05T20:17:55.233 に答える