ハーバード・アーキテクチャとは
ハーバード・アーキテクチャは、
コンピュータの設計における重要な概念の一つで、命令とデータを物理的に分離した
記憶装置と信号経路を持つ構造を指します。具体的には、プログラムの命令を格納するメモリ領域と、データを格納するメモリ領域がそれぞれ独立して存在し、異なる
アドレス空間を持つ点が特徴です。このアーキテクチャは、
ノイマン型アーキテクチャとは対照的な設計思想に基づいており、それぞれの特徴が異なる用途に適しています。
起源
ハーバード・アーキテクチャという名前は、初期の
コンピュータであるHarvard Mark Iに由来します。このマシンでは、プログラムの命令は穿孔テープから読み込まれ、データはリレーのON/OFFによって記録されていました。命令とデータが異なる媒体に格納されていたことが、このアーキテクチャの原型となっています。
ハーバード・アーキテクチャの利点
ハーバード・アーキテクチャの最大の利点は、命令とデータの同時アクセスが可能であるという点です。
ノイマン型アーキテクチャでは、
CPUが主記憶から命令とデータを同じ信号経路で読み書きするため、メモリへのアクセスがボトルネックとなり、
CPUの高速化を妨げる要因となっていました。これに対して、ハーバード・アーキテクチャでは、命令とデータの読み込みを並行して行うことができるため、処理速度の向上が期待できます。特に、組み込みシステムやデジタル信号処理などの分野で、高速な処理が求められる場合に有効です。
ハーバード・アーキテクチャの活用例
現在では、ユーザーがプログラムを頻繁に変更する必要がない、あるいはアクセスを制限したい
コンピュータで、ハーバード・アーキテクチャが採用されることが多くなっています。具体的には、
マイクロコントローラが代表例で、Atmel社のAVRシリーズや
マイクロチップ・テクノロジー社のPICなどが挙げられます。これらのプロセッサでは、プログラムメモリにフラッシュメモリ、ワーキングメモリにSRAMを使用し、それぞれの特性を活かしています。
また、
デジタルシグナルプロセッサ(DSP)などの特殊用途プロセッサでも、ハーバード・アーキテクチャは広く採用されています。TIのTMS32010やAnalog Devices社の
Blackfinなどがその例です。
キャッシュメモリにおけるハーバード・アーキテクチャ
興味深いことに、
ノイマン型アーキテクチャにおいても、
キャッシュメモリの実装においてハーバード・アーキテクチャの考え方が取り入れられています。最近の高性能プロセッサでは、命令キャッシュとデータキャッシュを分離することで、
CPU内部ではハーバード・アーキテクチャに近い動作を実現しています。ただし、
CPU全体として見た場合は、外部の主記憶との接続は従来通りの
ノイマン型アーキテクチャとなっています。
命令/データ分離キャッシュの問題点
命令キャッシュとデータキャッシュを分離した際には、いくつかの問題点も生じます。特に、プログラムの動的ローディングや自己書き換えコードを実行する場合に、キャッシュの一貫性(コヒーレンシ)が問題となることがあります。これらの技術は、プログラム自身が命令を書き換えるという
ノイマン型アーキテクチャの特徴を利用しているため、単純に命令用とデータ用のキャッシュを分離しただけでは、予期せぬ動作を引き起こす可能性があります。そのため、
キャッシュコヒーレンシを維持するための特別な対策が必要となります。
まとめ
ハーバード・アーキテクチャは、命令とデータを分離することで、
コンピュータの処理速度を向上させるための有効な手段です。初期の
コンピュータから現在まで、様々な分野で活用されており、その設計思想は現代のプロセッサにも影響を与え続けています。