検索に移動この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(2011年12月)ハーバード・アーキテクチャの図ハーバード・アーキテクチャとは、命令用とデータ用に物理的に分割された記憶装置と信号通路を持ち、命令用とデータ用で主記憶のアドレス空間が分かれているコンピュータ・アーキテクチャのことで、ノイマン型アーキテクチャと対比される。使われたアーキテクチャであることに由来する。リレーのON/OFFで読み書き可能な形で実現した。ハーバード・アーキテクチャの利点[編集]当時のコンピュータは単一プログラムの実行が主目的であり、命令をプログラムの実行中に書き換える必要は必ずしもなかった。ハーバード・アーキテクチャでは、命令をメモリから読むこととデータをメモリから読むことは競合せず、命令の処理が完了すると同時に次の命令を読み込むよう作ることができるため、アドレスバス、データバスを複数もたせる等すれば、高速化が可能であるというのが利点である。同じ信号経路を使用するメモリから命令とデータの読み書きを行う場合、アクセスを同時にすることはできないため、ボトルネックとなった。CPUのクロック周波数がどんどん高速化するのに比し、主記憶のアクセス速度は追いつけなくなり、主記憶へのアクセスが足を引っぱるようになった。ノイマン型アーキテクチャにおけるフォンノイマンの隘路フォン・ノイマン・ボトルネックである。現在でも,プログラムをユーザーが入れ換える必要がない、あるいはユーザーにアクセスさせたくないタイプのコンピュータ、たとえばマイクロコントローラの多くがハーバード・アーキテクチャをベースとしている。シリーズ、マイクロチップ・テクノロジー社のPIC[1]などがその例である。これらのプロセッサはプログラムメモリとワーキングメモリのアドレス空間を別にしており、プログラムメモリにはフラッシュメモリなど大容量(数K〜百数十KBytes)だが書き換えに時間がかかるものを、ワーキングメモリにはわずか(十数B〜数KBytes)だが高速でリフレッシュの必要のないSRAMをチップに内蔵している。Devices社のBlackfinなどでも使われている。ノイマン型アーキテクチャにおいても,キャッシュメモリの実装方法において、インストラクションキャッシュとデータキャッシュという分け方をすることで、ハーバード・アーキテクチャを取り入れていると考えることができるケースもある。最近の高性能プロセッサ(具体的にはインテルx86ならペンティアム以降)では、マイクロプロセッサ内のプロセッサコアとキャッシュメモリの構成を見るとハーバード・アーキテクチャになっているというものである。キャッシュメモリを含めてCPUとして見た場合は、外部の主記憶との構成は従来通りノイマン型アーキテクチャである。命令/データ分離キャッシュの問題[編集]命令キャッシュとデータキャッシュを分離し、ライトバック方式(キャッシュメモリの項目を参照)を採用した場合に、次のような問題がある。基本的には、プロセッサの命令プリフェッチやDMAで起こる問題と同質である。Trampoline)による実行など(後に挙げたものほど深刻である)、ノイマン型アーキテクチャの、プログラムの命令自身をプログラム自身により書き換え可能である、という性質を利用した技術がある。これらの実行において、単純に命令用とデータ用のキャッシュが分離されているのは、キャッシュコヒーレンシがおかしい状態にあるのと同じことである。よって何らかの対処がされている。gatingこの項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。