1

DSP アーキテクチャと命令実行におけるこの基本概念を理解しようとしています。

「ハーバード アーキテクチャに基づいて、CPU はデータと命令語を同時にフェッチできます...- 命令フェッチは前の命令実行中に行うことができ、命令実行の終了を待たずに、次の命令が実行されるまでプロセッサの動作を停止する必要もありません。取得中です。」

しかし、コンピューター アーキテクチャに関する私の知識が限られているため、次のような疑問が生じます。プログラム メモリからロードされた場合、次のサイクルで 2 つのオペランドをロードする必要があります。ロードされたインストルメントが失われたため、その実行に何が起こる可能性がある!? それとも、メモリからデータ レジスタにデータをロードすることによって実行がすぐに行われるのが間違っている!?"

** コード例: MPYF3 *(AR0)++, *(AR1)++, R0

*補遺:レジスタファイルがないため、データをレジスタにロードする必要はありません-メモリを介して直接行われます!! だから私の意見では、最初のインストの後。次のサイクルで、prev によって指定された必要なデータ (オペランド) をフェッチしました。インストルメント 機能単位によってメモリを介して操作 (instr. exec.) され、その間に次の命令が操作されます。ワードがフェッチされ、オペランドのアドレスも更新されます (実行の結果として、アドレス レジスタ ALU を介して)。すべては、この操作 (データ アクセス、算術演算、アドレス更新、命令フェッチ) のそれぞれが、独特の物理アーキテクチャを介して処理されるためです。

この私の解釈を断言できる人はいますか!? DSP ハーバード アーキテクチャで同時データおよび命令アクセスを利用するサイクルにわたって繰り返される典型的な命令の説明は、非常に高く評価されています。

前もって感謝します

4

1 に答える 1

0

ハーバード アーキテクチャは、2 つの異なるメモリ、キャッシュ、バスなどを備えたアーキテクチャです。1 つは命令用で、もう 1 つはデータ用です。これは、命令とデータ用に単一の統合メモリを持つフォン ノイマン アーキテクチャとはまったく対照的です。

余談: C/C++ ソフトウェアの一般的な問題はバッファ オーバーフローです。この場合、誰かが入力の長さをチェックしないことを期待して、悪意を持ってプログラムへの「入力データ」として大量の命令を書き込んでしまいます。そして、あなたの「データ」(実際にはデータを装ったプログラムです!)が誤ってメモリの「命令」部分を上書きすることを許可します。次に、プログラムがこれらの新しい命令に実行されると、BAM! あなたの「データ」(実際にはプログラムです)が元のプログラムを制御できるようになりました。ハーバード アーキテクチャは、2 つの別個のメモリ空間があるため、この問題に悩まされることはありません。

では、この DSP CPU はどのようにして一度に複数の処理を実行するのでしょうか? 魔法ですか?あまり。これが意味することは、単に CPU がパイプライン化されているということです。パイプライン化とは、CPU が 1 つの命令の開始、別の命令の途中、および 3 番目の命令の終了を同時に実行できることを意味します。どのように?パイプラインのあるステージの「出力」および別のステージの「入力」として機能する一連の中間結果レジスタを保持することによって。

パイプライン処理は、ハーバード/フォン ノイマン アーキテクチャとは何の関係もないことに注意してください。どちらもパイプライン化できます。

于 2012-12-18T23:37:55.550 に答える