このページの本文へ

前へ 1 2 3 次へ

ロードマップでわかる!当世プロセッサー事情 第76回

仮想メモリーを支えるもうひとつのキャッシュ TLB

2010年11月08日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

キャッシュにハーバード・アーキテクチャーを
採用する損得

 最後にハーバード・アーキテクチャーの話に触れておこう。もともと語源の由来は、米ハーバード大が購入した(製造はIBM)「Harvard Mark I」というリレー式計算機に、この技術が採用されたことに起因する。

 本来のハーバード・アーキテクチャーの意味は、「命令とデータの物理的な分離」である。CPU一般の話として、基本的に命令やデータはすべてメモリーに置かれている。これがひとつの場所に置かれていると、例えば命令を読み込み中にはデータへのアクセスはできないし、逆にデータへのアクセス中に次の命令を読み出すこともできない(当初はこれが一般的な方法であり、これをノイマンズ・アーキテクチャーと呼ぶ)。

 ハーバード・アーキテクチャーでは命令格納用メモリーとデータ格納用メモリーを物理的に分割する。データアクセスしながら次の命令の取り込みもできるようにすることで、メモリー帯域がボトルネックになる、という問題を解決したわけだ。

 とはいえ、この方式だと物理的に2つの記憶領域が必要になるため、コスト面では不利である。結果として、高性能が必要とされる用途はともかく、マイコンなどでは長らくハーバード・アーキテクチャーは無視されてきた。

 しかし、プロセッサーにも高速化のためにキャッシュが搭載できるようになったことで、命令用のキャッシュとデータ用のキャッシュを分離すれば、キャッシュへのアクセスがボトルネックになる心配がなくなることに、どこかのエンジニアが気がついた。その結果、Pentium世代以降のx86プロセッサーのほとんどが、1次キャッシュにハーバード・アーキテクチャーを採用している。

 例外はCyrixの「M2」シリーズで、これは64KBのユニファイド・キャッシュ(命令/データを区別しない)方式だった(関連記事)。ハーバード・アーキテクチャーの欠点は、常に2つのキャッシュがフルに使われるとは限らないことだ。命令かデータのどちらか一方に、もう少しキャッシュを割り当てた方が高速になる、というシーンがランダムに現れるのが一般的であり、結果としてユニファイド・キャッシュの方が効果的に1次キャッシュを使えるという信念に基づいた選択であった。

 ただし、そうなると当然パイプラインで命令フェッチとデータフェッチが競合するケースがありえる。これを避けるために、1次キャッシュと命令フェッチの間に256Byteのバッファを挟む形で回避していた。つまり、これが事実上の命令1次キャッシュとして作用していたようなものである。

 もっとも、ハーバード・アーキテクチャーですべてを構成すると、必要なキャッシュがどんどん増えてゆくし、実際利用効率もよくない。そのため2次キャッシュ以降はユニファイド・キャッシュの構成になっているのが一般的だし、(先も述べたとおり)Core iシリーズでは2次TLBすらユニファイド構成になっている。このあたりの損得もまた、判断が難しいところなのだ。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン