マイクロコンピュータのハーバードアーキテクチャとは何ですか?

「ハーバードアーキテクチャ」とはどういう意味ですか?

マイコンはコマンドやデータを処理しますが、昔のマイコンではバスがコマンドやデータと共有されていました。この場合、CPUは命令の読み取り時にバスを使用するため、データにアクセスできず、読み取り命令の終了後にデータにアクセスします。この方法を使用したバス構成のコンピュータアーキテクチャは、「フォンノイマンアーキテクチャ」と呼ばれます。

一方、バスのコマンドとデータを分離して独立させるバス構成方式があります。この方法を使用すると、CPUが命令を読み取った場合でも、データバスを使用してデータにアクセスできます。そのため、マイクロコンピュータの性能はノイマン型よりも高くなる可能性があります(図1参照)。このバス構成を使用するコンピュータアーキテクチャは「ハーバードアーキテクチャ」です。
ここに画像の説明を挿入

ただし、ハーバードモデルにはバスが2つ内蔵されているため、マイクロコンピュータのハードウェア規模がノイマンモデルよりも大きく、コストが高くなるというデメリットがあります。

ノイマン型

簡単に言えば、コマンドバスとデータバスを同時に使用して、マイクロコンピュータのハードウェアを効果的に構成できるアーキテクチャです。バスはマイクロコンピュータの内部でいっぱいになっているので、マイクロコンピュータのコストを抑えるには、できるだけ数を少なくすることが有益です。ただし、バスが1つしかないため、コマンドとデータを同時に処理することはできず、マイクロコンピュータの計算性能に影響を与えます。これを「ノイマンボトルネック」と呼びますが、このボトルネックのため、高性能を追求するマイコンには使用されていません。一方、性能よりもコストを重視するマイクロコンピュータの方が便利であり、コストを重視するマイクロコンピュータで広く使用されています。例としてARMCortex-Mプロセッサを取り上げます。これには、Cortex-M0とCortex-M0 +が適しています。低価格市場向けに開発されたプロセッサーであるため、コストを優先します。

ハーバード

ノイマンボトルネックを解消するために、コマンドとデータに応じてバスを分離し、独立させる方法はハーバードタイプです。このようにして、CPUが命令を読み取っている間でも、データバスを使用してデータにアクセスできます。そのため、マイコンの性能はノイマン型よりも高くなる可能性があります。ただし、命令バスとデータバスを分離する必要があるため、マイクロコンピュータのハードウェアが大きくなり、コストも高くなります。そのため、コストよりも性能を重視したマイクロコンピュータが広く使われています。例としてARMCortex-Mプロセッサを取り上げます。Cortex-M3、Cortex-M4、およびCortex-M7は、このタイプのプロセッサに属します。高性能プロセッサは、高性能アプリケーション市場向けに開発されています。
ここに画像の説明を挿入

これは、「命令読み取り(F)」、「命令デコード(デコード/変換)(D)」、「操作および書き込み結果(E)」の3つのステップで構成されます。各プロセスは、サイクルに1回実行されます。読み取り命令はステップ「F」です。データへのアクセスは「E」ステップです。図2-aの場合、3番目のサイクルの後、「F」と「E」は常に同時に実行されます。ノイマン型の場​​合、命令フェッチとデータアクセスを同時に行うことはできないため、どちらの側もバスの使用を待つ必要があります。ラウンドロビン方式(代替)を使用してバスの権利を仲介すると、「F」と「E」が交互になります。したがって、図2-bに示すように、コマンドの実行効率は非常に低くなります。ハーバードタイプの場合、パイプライン処理はサイクルごとに1つの命令を実行できます。

ハーバードの欠点は、バスのハードウェアサイズをノイマンモデルの2倍にする必要があるため、マイクロコンピューターのコストが高くなることです。32ビットマイクロコンピュータの場合、命令とデータは両方とも32ビットであるため、64ビットバスと同等である必要があります。それはバスの範囲だけではありません。CPUは2つのバスの回路を制御する必要があるため、CPU内のハードウェアも大きくなります。

リアルハーバードアーキテクチャ

ここでは、STM32F1シリーズのSTM32F103を例として取り上げます。
ここに画像の説明を挿入

図の左側にあるCortex-M3とDMA(ダイレクトメモリアクセス)はバスマスターです。Cortex-M3のコマンドバスはICodeバスです。また、データバスには、DCodeバスとシステムインターフェイスバスの2種類があります。STM32F103のデータバスはバスマトリックス構成であるため、バスマスターはCortex-M3 Dcodeバス、システムインターフェイスバス、およびDMAデータバスに接続されます。バススレーブ側のすべてのデータバスはバスマトリックスに接続されています。データはフラッシュメモリに保存される可能性があるため、フラッシュメモリもバスマトリックスに接続されます。Cortex-M3のICodeバスは、バスマトリックスではなく、フラッシュメモリインターフェイス回路を介して内蔵フラッシュメモリに接続されています。

この写真だけを見ると、フラッシュメモリからしか実行できないように見えますが、Cortex-M3の場合はデータバスからも実行できるので、RAMや周辺機器で接続された外部メモリからも実行できます。機能。

おすすめ

転載: blog.csdn.net/qq_18191333/article/details/107559326