ノイマン型とハーバード型の違い:命令とデータの扱いを比較
ノイマン型のアーキテクチャでは、命令とデータが1つのメモリと1本のバスを共有するので、プロセッサは、命令の取り出しとデータのアクセスを同時にはできません。この制約が、ノイマンボトルネックです。ハーバード型のアーキテクチャでは、命令とデータが別々のメモリにあり、別々のバスを持つので、同時にアクセスできます。現代のほとんどのCPUは、この2つを組み合わせています。メインメモリは共通ですが、L1キャッシュは、命令用とデータ用に分かれています。これを、修正ハーバード型と呼びます。
| 項目 | ノイマン型 | ハーバード型 |
|---|---|---|
| メモリ | 1つのメモリに、命令とデータの両方がある | 命令用とデータ用で、別々のメモリ |
| バス | 共有の1本 | 別々のバス |
| 命令の取り出しとデータのアクセス | 同じバスを取り合う(ノイマンボトルネック) | 同時にできる |
| スループット | 同じバスの速度なら低い | 高い。並列にアクセスできる |
| 柔軟性 | 高い。プログラムがデータなので、読み込み、生成、変更が簡単 | 低め。コードとデータが分かれている |
| メモリの割り当て | コードとデータの割合を柔軟に変えられる | それぞれのメモリの大きさが固定 |
| ハードウェアの複雑さ | 単純 | 複雑。2つのメモリと2本のバス |
| 代表的な機器 | 汎用のコンピュータ | デジタル信号処理プロセッサと、多くのマイコン(AVRやPICなど) |
| 現代のCPUでは | 共通のメインメモリ | L1の命令キャッシュとデータキャッシュが分かれている(修正ハーバード型) |
数値は代表的な目安で、世代や製品によって異なります。