組み込み RISC プロセッサを使用しています。私が理解するのに問題がある基本的なことが1つあります。
CPU のマニュアルには、命令ld r1, [p1]
(C では r1 = *p1) に 1 サイクルかかることが明記されています。レジスタ r1 のサイズは 32 ビットです。ただし、メモリ バスは 16 ビット幅しかありません。では、1 サイクルですべてのデータを取得するにはどうすればよいでしょうか。
組み込み RISC プロセッサを使用しています。私が理解するのに問題がある基本的なことが1つあります。
CPU のマニュアルには、命令ld r1, [p1]
(C では r1 = *p1) に 1 サイクルかかることが明記されています。レジスタ r1 のサイズは 32 ビットです。ただし、メモリ バスは 16 ビット幅しかありません。では、1 サイクルですべてのデータを取得するにはどうすればよいでしょうか。
クロック タイムは、全幅ゼロ ウェイト ステート メモリを想定しています。コアがその命令を実行するのにかかる時間は、1 クロック サイクルです。
各命令が異なる数のクロック サイクルを必要とする時期がありました。メモリも比較的高速で、通常は待機状態はゼロでした。パイプラインの前にも、クロック サイクルのフェッチ、クロック サイクルのデコード、クロック サイクルの実行、さらに可変長命令用の追加のクロック サイクルと、命令にメモリ操作がある場合の追加のクロック サイクルをバーンする必要があった時期がありました。
今日、クロック速度は高速で、チップの不動産は比較的安価であるため、パイプラインやキャッシュと同様に、1 クロック サイクルの加算または乗算が標準になっています。プロセッサーのクロック速度は、もはやパフォーマンスの決定要因ではありません。メモリは比較的高価で低速です。したがって、キャッシュ (構成、数、およびサイズ)、バス サイズ、メモリ速度、周辺機器の速度によって、システムの全体的なパフォーマンスが決まります。通常、プロセッサのクロック速度を上げても、メモリや周辺機器ではなく、パフォーマンスの向上は最小限に抑えられますが、場合によっては遅くなる可能性があります。
メモリサイズと待機状態は、リファレンスマニュアルのクロック実行仕様の一部ではありません.コア自体が各命令のクロック単位であなたにかかるコストについてのみ話しています. 命令バスとデータバスが分離しているハーバードアーキテクチャの場合、メモリサイクルで1クロックが可能です。命令のフェッチは、少なくともその前のクロック サイクルで発生するため、クロック サイクルの開始時に命令の準備が整い、デコード、および実行 (メモリの読み取りサイクル) が終了の 1 クロックの間に発生します。 1 クロック サイクルで、読み取りの結果がレジスタにラッチされます。命令バスとデータ バスが共有されている場合、それでも 1 クロック サイクルで終了すると主張できますが、次の命令をフェッチすることができないため、そこで少しストールが発生します。
私の理解は次のとおりです。一部の命令が1サイクルかかると言うとき、命令が1サイクルで終了するわけではありません。命令pipe-lineのカウントを考慮する必要があります。CPU に 5 ステージのパイプラインがあるとします。その命令は、順番に実行すると 5 サイクルかかります。