Which is better?
Each architecture has its advantages: 他の条件が同じであれば、ハーバード モデルがパフォーマンスで優位に立ちます。
現代のハイブリッド
最近、ほとんどの汎用コンピュータ(PC、Macなど)は、両方のアーキテクチャの長所を取り入れたハイブリッド設計になっています。 CPU の奥深くでは、パフォーマンスを最大化するために、命令とデータに別々のキャッシュを使用するハーバード モデルで動作します。 しかし、命令キャッシュとデータキャッシュは、共通のメモリ空間から自動的にロードされます。 プログラミングの観点からは、これらのコンピューターは、何ギガバイトもの仮想ストレージを持つ純粋なフォン・ノイマン・マシンのように見えます。 汎用コンピュータとは異なり、組み込みプロセッサは通常、確実かつ効率的に実行しなければならない明確なタスクがあり、最小限のコストで、マイクロコントローラの設計はむしろスパルタンなものになる傾向があります。 多層キャッシングやディスクベースの仮想メモリ システムのような贅沢はせず、タスクに不可欠なものにこだわります。
ハーバード モデルが組み込みアプリケーションに適していることがわかり、Arduino UNO で使用されている Atmega 328 は、比較的純粋なハーバード アーキテクチャを使用しています。 プログラムはフラッシュメモリに、データはSRAMに格納されます。
ほとんどの場合、コンパイラとランタイムシステムがこれらを管理してくれますが、物事が厳しくなり始めると、ボンネットの下で物事がどのように動いているかを認識するのに役立ちます。
まったく異なるスケール
これらのマイクロコントローラと汎用コンピューターとの最大の違いは、利用可能なメモリの量です。 Arduino UNOは32Kバイトのフラッシュメモリと2KバイトのSRAMしか持っていません。 これはローエンドPCの10万分の1以下の物理メモリしかありません! しかも、ディスクドライブはカウントされていません!
。