プロセッサはどのようにして周波数よりも高い IPS を実行できるのでしょうか?

プロセッサはどのようにして周波数よりも高い IPS を実行できるのでしょうか?

これは、私には理解できないことのようです。ほぼすべての最新のプロセッサは、その周波数よりも多くの命令を 1 秒あたりに実行できます。

下位クラスのプロセッサが、その周波数よりも少ないIPSしか実行できない理由は理解できます。たとえば、ATメガ32816MHZで約16MIPSの速度で動作します(少なくとも私はそう聞いています)。Z804 MHz で 0.5 MIPS を実行します。しかし、Pentium 4 Extreme は 3.2 GHz で 9 GIPS 以上を実行できます。これは、クロック サイクルあたり約 3 つの命令です。

これはどのように行われるのか、そしてなぜこのような小さなプロセッサでは実装されないのか?AVRマイクロコントローラ?

ATmega328以外のすべての情報は、ここ

答え1

これは、最新のプロセッサの機能の組み合わせによるものです。

IPSが高くなる第一の要因は、現代のプロセッサには独立して動作できる複数の実行ユニットがあるという事実です。下の画像(Wikipedia: Intel Core マイクロアーキテクチャ) 下部を見ると、命令を同時に実行できる 8 つの実行ユニット (黄色で表示) があることがわかります。すべてのユニットが同じタイプの命令を保護できるわけではありませんが、少なくとも 5 つのユニットは ALU 操作を実行でき、3 つの SSE 対応ユニットがあります。

ここに画像の説明を入力してください

それを長い命令パイプライン命令を効率的にスタックして、それらのユニットが命令を実行できるように準備することができます(故障中(必要に応じて)これは、現代のプロセッサがいつでも大量の命令を即座に実行できることを意味します。

各命令の実行には数クロック サイクルかかる場合がありますが、その実行を効果的に並列化できれば、プロセッサの複雑さと熱出力を犠牲にして IPS を大幅に向上させることができます。

これらの大規模なパイプラインを命令で満たすには、命令とデータを事前に格納できる大規模なキャッシュも必要です。これにより、ダイのサイズが大きくなり、プロセッサが生成する熱量も増加します。

小型プロセッサでこれが行われない理由は、処理コアの周囲に必要な制御ロジックの量が大幅に増え、必要なスペースと発生する熱も増えるためです。小型で低電力、応答性に優れたプロセッサが必要な場合は、実際の機能コアの周囲に「余分な」要素があまりない短いパイプラインが必要になります。そのため、通常はキャッシュを最小限に抑え、命令の処理に必要な各タイプのユニットを 1 つだけに制限し、すべての部分の複雑さを軽減します。

彼らはできた小型プロセッサを大型プロセッサと同じくらい複雑にして、同様のパフォーマンスを実現することはできますが、その場合、消費電力と冷却要件が飛躍的に増加します。

答え2

想像するのは難しくありません。何千ものトランジスタを切り替えるのに必要なのは 1 サイクルだけです。命令が並列に並んでいる限り、1 サイクルですべてを実行できます。

自分で説明するよりも、ここが良い出発点です

答え3

Mokubai の回答よりももう少し根本的なことを述べます。

スーパースカラー CPU は、命令ストリームを分析して、命令間のデータ (およびその他の) 依存関係を調べます。相互に依存しない命令は並列に実行できます。

一般的な x86 デスクトップ CPU は、クロック サイクルごとに 16 または 32B の命令をフェッチします。Core2 以降の Intel 設計では、サイクルごとに最大 4 つの命令を発行できます。(マクロ融合できる比較分岐がある場合は 5 つ)。

実行するコードからできるだけ多くの命令レベルの並列性を抽出するというタスクを CPU が実際にどのように実行するかについてのリンクと詳細については、Mobukai の優れた回答を参照してください。

こちらもご覧くださいhttp://www.realworldtech.com/sandy-bridge/内部の仕組みについて詳しくは、他の CPU アーキテクチャに関する同様の記事を参照してください。

答え4

以前の回答では、プロセッサの「命令」の定義によって、より多くの命令が実行される方法が示されており、それが実際に質問者の意図であると想像されます。

しかし、もう 1 つの原因は、各「命令」が実際にはプロセッサによって命令入力として処理される一定量のデータであるという点です。彼の情報源のカウントがプロセッサが命令と見なすものだけをカウントする場合、次のことは何も追加しません。しかし、彼の情報源が人間が「命令」と呼ぶものすべてをカウントする場合、すべての命令が他のすべての命令と同じ物理的長さであるわけではない (1 つは 12 バイト、もう 1 つは 56 バイトなど) ことを付け加えます。したがって、各サイクルで 64 バイトの素材を「命令」としてロードし (または 64 バイトに達する前に可能な限り多くの完全な命令をロードし)、その 64 バイトに 6 つの命令がある場合、そのサイクルで 6 つの命令 (あなたや私がそう見なすもの) が完了することになります。

非常に基本的な命令 (私たちの「合理的な」定義) の多くは、8 バイトの命令長を持つ初期の頃の名残であり、非常に基本的な命令は、定義上、おそらく不均衡に使用されるため、これだけでも、頻度が許すよりも多くの「命令」を実行するのに大いに役立ちます。

関連情報