【はーばーどあーきてくちゃ】

ハーバードアーキテクチャ とは?

最終更新:
💡 命令とデータの通り道を分ける設計

ハーバードアーキテクチャとは、命令用メモリとデータ用メモリを物理的に分離し、それぞれ独立したバスでCPUと接続するコンピュータの設計方式のこと。命令の読み出しとデータへのアクセスを並行できる方式で、フォン・ノイマン型との違いも解説。

📌 このページのポイント
ハーバード構造:命令とデータの道を分ける共用する構造(フォン・ノイマン型の略図)命令・データCPU共用の道分ける構造(純粋なハーバード型)命令メモリーデータメモリーCPU命令の道データの道修正型:キャッシュは別・下位の記憶は共用など分離する階層や、待ちが生じる条件は異なる
線はメモリーとCPUを結ぶバスの構造を表し、転送方向や全動作を表すものではありません。修正ハーバード型では、どの階層まで分けるかが設計によって異なります。
ひよこ ひよこ
命令とデータのメモリを分けるって、どういうこと?
ペンギン先生 ペンギン先生
単純化したフォン・ノイマン型では、命令(プログラム)もデータも同じメモリに入れて同じ通路(バス)で運ぶんだ。ハーバード型は命令用とデータ用のメモリと通路を完全に分けるんだよ
ひよこ ひよこ
分けると何がいいの?
ペンギン先生 ペンギン先生
たとえば1車線の道路だと、荷物を運ぶトラックと通勤の車が同じ道を使うから渋滞するよね。ハーバード型は荷物専用道路と通勤専用道路を別に作るから、別々の流れを並行させられるんだ。ただし各道路の混雑までなくなるわけではないよ。CPUが命令を読みながら同時にデータも読み書きできるよ
ひよこ ひよこ
じゃあ全部ハーバード型にすればいいんじゃない?
ペンギン先生 ペンギン先生
分離すると、容量の配分や配線、命令領域へのアクセス方法に制約が生じる場合があるよ。ただし実際のCPUは単純な二択ではなく、分ける階層や共有する部分が違う。用途だけで優劣を決めず、その製品のメモリやキャッシュの構成を確認しよう。
ひよこ ひよこ
じゃあハーバード型はどこで使われてるの?
ペンギン先生 ペンギン先生
例えばMicrochipのPIC24やdsPICは修正ハーバード型で、命令用とデータ用のバスが分かれているよ。命令の読み出しとデータの処理を並行させる実装なんだ。ただし、この方式というだけで、すべての処理が期限内に終わると保証されるわけではないよ。
ひよこ ひよこ
最近のパソコンのCPUはどっちなの?
ペンギン先生 ペンギン先生
実装によって違うけれど、主記憶を共有し、CPUに近い命令キャッシュとデータキャッシュを分ける構成があるよ。Armもこれを修正ハーバード型と説明している。純粋なハーバード型と、キャッシュなど一部の階層で分ける構成を区別すると理解しやすいね。
もっと詳しく知りたい人へ

キャッシュを分ければメモリ待ちはなくなるの?

なくならないよ。命令とデータが別々のキャッシュにある間は並行してアクセスしやすいけど、キャッシュミスで共有する下位メモリへアクセスすれば待ちが発生し得る。どの階層を分離しているか確認しよう。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハーバードアーキテクチャ」って出てきたら「命令とデータのメモリ・バスを分けて同時アクセスできる設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Harvard Architecture」 = ハーバード方式の設計
💬 Harvardはハーバード大学の名前。方式を理解するときは、命令とデータの保存領域・経路が分かれている点に注目しよう

参考資料

← 用語集にもどる