(57)【要約】【解決手段】外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供し、また、アドレス変換テーブルキャッシュを管理するための、ソフトウェアで実装されたキャッシュリフィル機能を提供し、ハードウェアで実装されたキャッシュリフィル回路およびソフトウェアで実装されたキャッシュリフィル機能を用いて、同時にアドレス変換テーブルキャッシュをリフィルする方法と発明。【選択図】図３
2009508179.tif 000002
【特許請求の範囲】
【請求項１】
外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供するステップと、
キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有する、ソフトウェアで実装されたキャッシュリフィル機能を提供するステップとを含むことを特徴とする方法。
【請求項２】
前記事前にロードするステップは、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムのメモリにおける、前記物理アドレスでアドレス指定された物理メモリ位置とを予約することを特徴とする請求項１に記載の方法。
【請求項３】
前記事前にロードするステップは、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを含むことを特徴とする請求項１に記載の方法。
【請求項４】
キャッシュミスの後、
前記ハードウェアで実装されたキャッシュリフィル回路を用いて、前記アドレス変換テーブルキャッシュのキャッシュラインを検索して、無効であり、かつ／またはロックされていないキャッシュラインを探すステップと、
前記ハードウェアで実装されたキャッシュリフィル回路を用いて、前記無効であり、かつ／またはロックされていないキャッシュラインをリフィルするステップと
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
無効であり、かつ／またはロックされていないキャッシュラインが一つも利用可能でないとき、フォールト通知のための割り込みを発行するステップをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを前記プロセッシングシステム上で動作するアプリケーションソフトウェアが決定することを許可するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを制御する前記プロセッシングシステムのオペレーティングシステムソフトウェアに対して前記アプリケーションソフトウェアがコールすることを許可するステップをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作することを前記プロセッシングシステム上で動作するアプリケーションソフトウェアが決定することを許可するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作するように制御する前記プロセッシングシステムのオペレーティングシステムソフトウェアに対して前記アプリケーションソフトウェアがコールすることを許可するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供するステップと、
前記アドレス変換テーブルキャッシュを管理するための、ソフトウェアで実装されたキャッシュリフィル機能も提供するステップと、
前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルするステップとを含むことを特徴とする方法。
【請求項１１】
外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供するステップと、
前記アドレス変換テーブルキャッシュを管理し、かつ、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードするための、ソフトウェアで実装されたキャッシュリフィル機能も提供するステップと、
前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルするステップとを含むことを特徴とする方法。
【請求項１２】
前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインは前記プロセッシングシステムのメモリの異なるセグメントを表し、
前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリにおける物理アドレスの少なくとも一部を含み、前記メモリの選択されたセグメント内のページを表すエントリのグループに属することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムの前記メモリにおける、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約することを前記ソフトウェアで実装されたキャッシュリフィル機能に許可するステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを前記ソフトウェアで実装されたキャッシュリフィル機能に許可するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記外部アドレスにベースアドレスを追加して、中間アドレスの少なくとも一部を生成するステップと、
前記中間アドレスの第１の部分を、前記セグメントテーブルキャッシュの前記キャッシュラインの一つを選択するためのポインタとして用いるステップと、
前記セグメントテーブルキャッシュの前記選択されたキャッシュラインの少なくとも一部を、前記ページテーブルキャッシュの複数のキャッシュラインへの参照として用いるステップと、
前記中間アドレスの別の部分を、前記ページテーブルキャッシュ内の参照されるエントリの一つへのポインタとして利用して、前記外部アドレスに対して前記メモリに少なくとも部分的に変換された物理アドレスを得るステップとをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記セグメントテーブルキャッシュのキャッシュラインは、
当該キャッシュラインが有効であるかどうかを示すビット、
前記ページテーブルキャッシュのページ番号を示すビット、
前記ページテーブルキャッシュのページサイズを示すビット、および
前記ページテーブルキャッシュの前記複数のキャッシュラインへの前記参照を与えるビット
の少なくとも一つを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ページテーブルキャッシュのキャッシュラインは、
当該キャッシュラインが有効であるかどうかを示すビット、
前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して前記ソフトウェアで実装されたキャッシュリフィル機能によって、キャッシュミス前に、当該キャッシュラインがロックされたかどうかを示すビット、および
前記メモリの前記物理アドレスの少なくとも一部を表すビット
の少なくとも一つを含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記物理アドレスの少なくとも一部を表す前記ページテーブルキャッシュの選択されたキャッシュラインのビットを前記中間アドレスの有意でないビットで拡張して、前記外部アドレスに対する変換後の物理アドレスを生成するステップをさらに含むことを特徴とする請求項１５の方法。
【請求項１９】
メモリに結合可能な少なくとも一つのプロセッサと、
外部デバイスから受け取った仮想アドレスを前記メモリの物理アドレスに変換する機能を有するアドレス変換回路とを含み、
前記アドレス変換回路は、
前記外部アドレスを前記物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
前記アドレス変換テーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
（ｉ）前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュを同時にリフィルする機能を有するか、または
（ｉｉ）前記ソフトウェアで実装されたキャッシュリフィル機能が、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有するか
のいずれかまたはその両方であることを特徴とする装置。
【請求項２０】
前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッサの前記メモリにおける、前記物理アドレスによってアドレス指定される物理メモリ位置とを予約する機能を有することを特徴とする請求項１９に記載の装置。
【請求項２１】
前記ソフトウェアで実装されたキャッシュリフィル機能は、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックする機能を有することを特徴とする請求項２０に記載の装置。
【請求項２２】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを制御する機能を有し、前記プロセッサ上で動作するアプリケーションソフトウェアをさらに含むことを特徴とする請求項１９に記載の装置。
【請求項２３】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを、単独であるいは前記アプリケーションソフトウェアに応答して、制御する機能を有し、前記プロセッサ上で動作するオペレーティングシステムソフトウェアをさらに含むことを特徴とする請求項２２に記載の装置。
【請求項２４】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作することを決定する機能を有し、前記プロセッサ上で動作するアプリケーションソフトウェアをさらに含むことを特徴とする請求項１９に記載の装置。
【請求項２５】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作するように、単独であるいは前記アプリケーションソフトウェアに応答して、制御する機能を有し、前記プロセッサ上で動作するオペレーティングシステムソフトウェアをさらに含むことを特徴とする請求項２４に記載の装置。
【請求項２６】
外部アドレスをメモリ空間の物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
前記アドレス変換テーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュを同時にリフィルする機能を有することを特徴とするアドレス変換回路。
【請求項２７】
前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインはプロセッシングシステムの前記メモリ空間の異なるセグメントを表し、
前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリ空間における物理アドレスの少なくとも一部を含み、前記メモリ空間の与えられたセグメント内のページを表すエントリのグループに属することを特徴とする請求項２６に記載のアドレス変換回路。
【請求項２８】
前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記メモリ空間における、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約する機能を有することを特徴とする請求項２７に記載のアドレス変換回路。
【請求項２９】
前記ソフトウェアで実装されたキャッシュリフィル機能は、キャッシュミスの後、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックする機能を有することを特徴とする請求項２８に記載のアドレス変換回路。
【請求項３０】
内部メモリ空間と、
前記メモリ空間に機能的に接続された少なくとも一つのプロセッサと、
各キャッシュラインが前記メモリ空間の異なるセグメントを表すセグメントテーブルキャッシュと、
キャッシュの各エントリが、前記メモリ空間における物理アドレスの少なくとも一部を含み、前記メモリ空間の与えられたセグメント内のページを表すエントリのグループに属する、ページテーブルキャッシュと、
前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
（ｉ）前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は同時に動作するよう構成されているか、または、  （ｉｉ）前記ソフトウェアで実装されたキャッシュリフィル機能が、キャッシュミスの前に前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを事前にロードする機能を有するか
のいずれかまたはその両方であることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアとソフトウェアで同時にキャッシュフィル（fill）する特徴を用いて、外部メモリ空間からプロセッサのメモリ空間にアドレスを変換するための方法と装置に関する。
【背景技術】
【０００２】
近年、最先端のコンピュータアプリケーションは、リアルタイムでマルチメディアを扱う機能を必要としており、コンピュータ処理のデータスループットをどこまでも高くしていくことが求められている。そのようなアプリケーションの中で、グラフィックスアプリケーションは、望ましい視覚上の結果を得るために比較的短い時間で、莫大な量のデータアクセス、データ計算、およびデータ操作を行わなければならないため、プロセッシングシステムに最大の要求を課す。こうしたアプリケーションは、１秒間に数千メガビットといった極めて高速の処理速度を必要とする。プロセッシングシステムの中には、１つのプロセッサを用いて高速な処理速度を達成するものがあるが、他のプロセッシングシステムは、高速処理のためにマルチプロセッサアーキテクチャを用いて実装されている。マルチプロセッサシステムでは、複数のサブプロセッサが並列に（または少なくとも協調して）動作することで所望の処理結果を達成することができる。
【０００３】
そのようなアプリケーションを実行するのに適したプロセッシングシステムには一つ以上のプロセッサとメモリが含まれる。あるプロセッシングシステムにおいては、外部システム（たとえば別のプロセッシングシステム、ＣＣＤなど）から当該プロセッシングシステムのメモリにデータを転送することが望ましい。外部システムに見えているメモリ空間は、プロセッシングシステムのメモリ空間に関して変換することになるから、プロセッシングシステムのメモリへのデータ転送に関連づけられた外部システムのメモリアドレスの変換が必要になる。プロセッシングシステムに対して速度目標を達成するためには、この変換を素早く行うことが求められる。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明の実施の形態は、ハードウェアとソフトウェアのキャッシュの特徴を組み合わせて用いて、マルチプロセッサベースのアーキテクチャのようなプロセッシングシステムの内部メモリ空間に外部システムからのデータを保存することができるように、外部システムのアドレスを変換するための改良技術を提供する。本発明は、多くのアプリケーションで用いることができるが、予測可能なデータアクセス（たとえば、ストリーミングビデオ）と予測できないデータアクセスの両方を円滑にするために使われるときに利点が得られる。
【０００５】
ストリーミングビデオアプリケーションまたは描画／テクスチャアプリケーションにおけるデータアクセスでは、リアルタイムの反応（および低いジッタ）が要求される。そのようなデータアクセスは比較的予測可能である。なぜなら要求元のＩ／Ｏデバイスからのアクセスアドレスとアクセスタイミングはあらかじめ決めておくことができるからである。このように、ソフトウェアで実装されたキャッシュリフィル機構を用いて（キャッシュミスの前に）データを事前にロードしておけば、処理効率を改善し、ジッタを減らすことができる。しかしながら、特にキャッシュミスのイベントが起きると、ソフトウェアで実装されたキャッシュリフィルは完了するまでに数マイクロ秒のオーダーの時間がかかる。これは、すべてのタイプのデータアクセス（特にリアルタイムや低ジッタの結果を要求するタイプのデータアクセス）に適応するには十分な速さではない。ハードウェアで実装されたキャッシュリフィル機構は一般にもっと速いリフィル速度（数百ナノ秒のオーダー）を見せる。しかしながら、これでも、性能が重要な意味をもつアクセスにとっては十分な速さではなく、たとえば、ストリーミングビデオアプリケーションに対しては無視できないジッタが発生することになるであろう。
【０００６】
本発明の実施の形態によれば、ハードウェアとソフトウェアの両方のキャッシュリフィル機構が提供され、両機構は同時に動作してもよい。たとえば、ハードウェアキャッシュリフィル機構がリフィルをサービスしているときでさえ、データの事前ロードを実行してもよい。ハードウェアとソフトウェアのキャッシュリフィル機構は同じキャッシュエントリを共有するが、各エントリはソフトウェア機構の方によってのみ制御可能なロックビットを有する。もしエントリがソフトウェアでロックされていたら、ハードウェア機構は他のキャッシュウェイを使用しなければならない。好ましい実装では、ソフトウェア機構が予測可能なデータアクセスを扱う一方、ハードウェア機構は予測できないデータアクセスを扱う。これにより処理性能が高くなり、ジッタが減り、よりリアルタイムな結果が得られるようになる。
【０００７】
ある実施の形態によれば、方法と装置は、外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供することと、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有する、ソフトウェアで実装されたキャッシュリフィル機能を提供することとを可能にする。前記事前にロードするステップは、前記アドレス変換テーブルキャッシュの一つ以上のキャッシュラインと、それに関連づけられた、前記プロセッシングシステムのメモリにおける、前記物理アドレスでアドレス指定された物理メモリ位置とを予約する。前記事前にロードするステップは、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックしてもよい。
【０００８】
ある実施の形態によれば、方法と装置は、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を用いて、前記アドレス変換テーブルキャッシュを同時にリフィルすることを可能にする。
【０００９】
ある実施の形態によれば、方法と装置は、外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供することと、前記アドレス変換テーブルキャッシュを管理し、かつ、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードするための、ソフトウェアで実装されたキャッシュリフィル機能も提供するステップと、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルすることとを可能にする。
【００１０】
前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインは前記プロセッシングシステムのメモリの異なるセグメントを表し、前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリにおける物理アドレスの少なくとも一部を含み、前記メモリの選択されたセグメント内のページを表すエントリのグループに属する。
【００１１】
この方法と装置は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムの前記メモリにおける、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約することを前記ソフトウェアで実装されたキャッシュリフィル機能に許可することを可能にする。代案としてもしくは追加として、この方法と装置は、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを前記ソフトウェアで実装されたキャッシュリフィル機能に許可することを可能にする。
【００１２】
この方法と装置は、前記外部アドレスにベースアドレスを追加して、中間アドレスの少なくとも一部を生成するステップと、前記中間アドレスの第１の部分を、前記セグメントテーブルキャッシュの前記キャッシュラインの一つを選択するためのポインタとして用いるステップと、前記セグメントテーブルキャッシュの前記選択されたキャッシュラインの少なくとも一部を、前記ページテーブルキャッシュの複数のキャッシュラインへの参照として用いるステップと、前記中間アドレスの別の部分を、前記ページテーブルキャッシュ内の参照されるエントリの一つへのポインタとして利用して、前記外部アドレスに対して前記メモリに少なくとも部分的に変換された物理アドレスを得るステップとをさらに提供してもよい。
【００１３】
前記セグメントテーブルキャッシュのキャッシュラインは、当該キャッシュラインが有効であるかどうかを示すビット、前記ページテーブルキャッシュのページ番号を示すビット、前記ページテーブルキャッシュのページサイズを示すビット、および／または前記ページテーブルキャッシュの前記複数のキャッシュラインへの前記参照を与えるビットを含んでもよい。
【００１４】
前記ページテーブルキャッシュのキャッシュラインは、当該キャッシュラインが有効であるかどうかを示すビット、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して前記ソフトウェアで実装されたキャッシュリフィル機能によって、キャッシュミス前に、当該キャッシュラインがロックされたかどうかを示すビット、および／または前記メモリの前記物理アドレスの前記少なくとも一部を表すビットを含んでもよい。
【００１５】
この方法と装置は、前記物理アドレスの前記少なくとも一部を表す前記ページテーブルキャッシュの前記選択されたキャッシュラインのビットを前記中間アドレスの有意でないビットで拡張して、前記外部アドレスに対する変換後の物理アドレスを生成するステップをさらに提供してもよい。
【００１６】
その他の態様、特徴、利点などは、添付の図面を参照しながら本発明を説明するときに当業者には明らかとなろう。以下、本発明の様々な態様を例示する目的のため、図面には好ましい形態が示されるが、本発明はここに示される正確な配置や手段に限定されるものではない。
【図面の簡単な説明】
【００１７】
【図１】本発明のある態様に適したプロセッシングシステムの構造を説明するブロック図である。
【図２】図１のシステムによって実行されるアドレス変換を説明する概念図である。
【図３】図１のプロセッシングシステムのアドレス変換機能を実装するのに適した構造を説明するブロック図である。
【図４】図３の構造で利用される、外部アドレスをベースアドレスで拡張するのに適した回路のより詳細なブロック図である。
【図５】図４の外部アドレスとベースアドレスの拡張の概念図である。
【図６】図３の構造におけるキャッシュシステムを実装するのに適した回路のより詳細なブロック図である。
【図７】拡張された外部アドレス（中間アドレス）からプロセッシングシステムの実アドレスへの変換の少なくとも一部を示す概念図である。
【図８】本発明のある態様に適した二つ以上のサブプロセッサを含むマルチプロセッシングシステムの構成を説明する図である。
【図９】本発明のさらなる態様を実装するのに利用される好ましいプロセッサエレメント（ＰＥ）を示す図である。
【図１０】本発明のさらなる態様に適した、図９のシステムの典型的なサブプロセッシングユニット（ＳＰＵ）の構成図である。
【図１１】本発明のさらなる態様に適した、図９のシステムの典型的なプロセッシングユニット（ＰＵ）の構成図である。
【発明を実施するための最良の形態】
【００１８】
同様の構成には同様の符号を付した図面を参照する。図１は、本発明の特徴を実現するのに適したプロセッシングシステム１００を示す。簡潔かつ明確にするために、図１のブロック図は、装置１００を例示するものとしてここでは参照し、説明する。しかし、この説明は、同じ効果を奏するいろいろな態様の方法にそのまま適用できることが理解されよう。
【００１９】
システム１００は、プロセッシングシステム１０２と一つ以上のバス１０６を介して互いに結合された少なくとも一つの外部システム１０４（例えばＩ／Ｏデバイス）を含む。プロセッシングシステム１０２は、バス１１４を介して互いに結合された、一つ以上のプロセッサ１０８、内部メモリ空間１１０（一つ以上のメモリユニット）、およびＩ／Ｏアドレス変換回路１１２を含む。図１の機能的な区分はあくまでも例示のためであり、他の区分を採用してもよいことに留意する。システム１００は、たとえばインタフェース回路、周辺回路など他のデバイスを含んでもよいことがわかる。しかし、簡潔かつ明確にするため、それらの構成は省略する。
【００２０】
プロセッサ１０８は、メモリ空間１１０からデータを要求し、望ましい結果を得るためにそのデータを操作することができる既知の技術を利用して実装することができる。たとえば、プロセッサ１０８は、ソフトウェアやファームウェアを実行することのできる標準的なマイクロプロセッサや分散マイクロプロセッサーなどを含む既知のマイクロプロセッサを用いて実装されてもよい。一例として、プロセッサ１０８は、データ、例えばグレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報などを含むピクセルデータを要求して操作することができるグラフィックスプロセッサであってもよい。
【００２１】
ある処理コンテクストにおいては、外部システム１０４がプロセッシングシステム１０２の内部メモリ空間１１０に対してデータの読み書きをすることがある。これに関して、アドレス変換回路１１２は、外部システム１０４から受け取る仮想アドレス（異なるメモリ空間の外部アドレス）を内部メモリ空間１１０の物理アドレスに変換する機能を有することが好ましい。実際、外部システム１０４はメモリ空間１１０と同じメモリ空間で動作することはなく、したがって、アドレス変換が必要になる。
【００２２】
図２に示すように、メモリ１１０はいくつかのセグメント、たとえばセグメント０、セグメント１、セグメント２などに分割可能であり、各セグメントは複数のページに分割可能であることが好ましい。メモリ１１０が自分自身の物理空間を持っている一方、外部システム１０４は仮想空間、たとえば、少なくともプロセッシングシステム１０２に関していえば、メモリ１１０の物理空間と一対一の同一の空間ではない仮想空間０で動作する。アドレス変換回路１１２は、仮想空間０のアドレス１２０をメモリ空間１１０の物理アドレス１２２に変換する機能を有する。一つ以上の外部システム１０４があってもよいから、アドレス変換回路１１２は、他の仮想記憶空間、たとえば仮想記憶空間Ｎのアドレス１２４を内部メモリ空間１１０の物理アドレス１２２へ変換する機能を有してもよい。仮想記憶空間０、Ｎから内部メモリ空間１１０に変換する際、仮想アドレス１２０、１２４のベースアドレスが調整され、キャッシュ機構の対象となるが、それについては以下、さらに詳細に説明する。
【００２３】
図３は、アドレス変換回路１１２の少なくとも一部の実装例を説明するブロック図である。この実施の形態では、アドレス変換回路１１２はベースアドレス調整回路１３０と一つ以上のアドレス変換キャッシュ１６０を含む。プロセッシングシステム１０２は、外部システム１０４から外部アドレス（あるいは仮想アドレス）を受け取る。ここでも、このアドレスは、プロセッシングシステム１０２のメモリ空間１１０に対するデータの読み書きの要求と関連づけられている。この読み書きの要求は、外部システム１０４（ＤＭＡのリクエスタである）によってなされるダイレクトメモリアクセス（ＤＭＡ）の要求というコンテクストでなされてもよいことに留意する。ベースアドレス調整回路１３０は、ベースアドレステーブル１３２と拡張（augmentation）回路１３４を含み、外部システム１０４から外部アドレス１２０を受け取り、それにベースアドレス（あるいはオフセット）を加え、第１の中間アドレス１５０を生成する。
【００２４】
ベースアドレス調整回路１３０を実装するのに適した回路の例は図４に例示される。拡張回路１３４は、マスク制御回路と乗算器を含み、少なくとも（ｉ）ＵＣアドレス変換レジスタ１３６の一部から複数ビット（２８ビット）、（ｉｉ）外部アドレス１２０（たとえば３２ビット）、および（ｉｉｉ）ベースアドレステーブル１３２からベースアドレス出力１４４、１４６の少なくとも一つを受け取る。
【００２５】
ＵＣアドレス変換レジスタ１３６は、中間アドレス１５０の最有意ビット（ＭＳＢ）（たとえば上位アドレスの範囲）を設定することが好ましい。中間アドレス１５０を生成する際に使われるＵＣアドレス変換レジスタ１３６の割り当て部分は、たとえば、その下位ビット（たとえば２２−２７ビット）を含む。プロセッシングシステム上で動作しているアプリケーションソフトウェアは、好ましくはオペレーティングシステムソフトウェアへのシステムコールによって、ＵＣアドレス変換レジスタ１３６のその割り当て部分の内容を、内部メモリ空間１１０（またはその一部）および／または内部メモリ空間１１０にマップされた外部メモリ空間（またはその一部）の相対サイズの関数として設定してもよい。
【００２６】
ベースアドレステーブル１３２は、外部システム１０４の識別番号（外部システムＩＤ）に基づいてベースアドレス出力１４４、１４６を生成することで、異なる外部システム１０４（ＤＭＡリクエスタである）に対して異なるベースアドレスが生成されるようになる。外部システム１０４は、サウスブリッジデバイスやＲＳＸグラフィックスプロセッシングデバイスを介してプロセッシングシステム１０２に結合された一つ以上のＤＭＡリクエスタとして実装されてもよい。そのような実装では、ＤＭＡリクエスタは、ディスクドライブ、ＵＳＢバス、イーサネット（登録商標）スイッチなどの内、一つ以上を含む。一例として、外部システムＩＤは、所定数の異なるリクエスタを表せるように５ビット長であってもよい。外部システムＩＤのビット数は望むだけ、あるいは必要なだけ調整してもよいことがわかる。例示された実施の形態では、ベースアドレステーブル１３２は一つ以上のマスクビット１４４（たとえば４ビット）と一つ以上のベースアドレスビット１４６（たとえば８ビット）を含む。この例では、ベースアドレステーブル１３２は、ＵＣアドレス変換テーブルレジスタ１３８で設定される複数のコンフィギュラブルなレジスタ（あるいは等価なストレージエレメント）を利用してもよい。このように、マスクビットとベースアドレスビットの数は、（特定のビット値と同様に）プログラムすることができる。ここでも、プロセッシングシステム上で動作しているアプリケーションソフトウェアは、好ましくはオペレーティングシステムソフトウェアへのシステムコールによって、外部システム１０４に対してマスクビット１４４とベースアドレス１４６が確立されるよう、ＵＣアドレス変換テーブルレジスタ１３８の内容を設定してもよい。ＵＣアドレス変換レジスタ１３６と同様、ＵＣアドレス変換テーブルレジスタ１３８の内容は、内部メモリ空間１１０（またはその一部）および／または内部メモリ空間１１０にマップされた外部メモリ空間（またはその一部）の相対サイズの関数として設定してもよい。外部システムＩＤは、拡張回路１３４への入力のために、適切なマスクビット１４４とベースアドレス１４６が生成されるよう、レジスタ１４０、１４２へのインデックスとして作用する。
【００２７】
図５は、図４で例示した実装例を用いて、外部アドレス１２０をマスクビット１４４とベースアドレス１４６で拡張（augmentation）する様子を概念的に示した図である。外部アドレス１２０（３２ビット）はベースアドレス変換回路１３０に入力される。外部アドレス１２０の最有意ビット（ＭＳＢ）はマスクビット１４４（この例では４ビット）でマスクされ、２８ビットは中間アドレス１５０の最も有意でないビット（ＬＳＢ）に利用するために残される。ベースアドレス１４６（この例では８ビット）が中間アドレス１５０の次に有意なビット位置に挿入される。最後に中間アドレス１５０の最有意ビットが、ＵＣアドレス変換レジスタ１３６またはその一部（この例では、６ビット）によって設定される。このように、この実施の形態では、中間アドレス１５０は６４ビット長である。
【００２８】
図３を再び参照すると、中間アドレス１５０は、アドレス変換キャッシュ１６０を通して内部メモリ空間１１０の物理アドレス１２２を得るために使われる。アドレス変換キャッシュ１６０はハードウェアで実装されたキャッシュリフィル回路１９０とソフトウェアで実装されたキャッシュリフィル機能１９２によって管理される。アドレス変換キャッシュ１６０の好ましい特徴として、ハードウェアで実装されたキャッシュリフィル回路１９０とソフトウェアで実装されたキャッシュリフィル機能１９２は、アドレス変換キャッシュ１６０をリフィル（入れ替え）するために、別々に動作してもよく、あるいは、同時に動作してもよい。好ましい実施の形態では、ソフトウェアで実装されたキャッシュリフィル機能１９２は予測可能なデータアクセスを扱う一方、ハードウェアで実装されたキャッシュリフィル回路１９０は予測できないデータアクセスを扱う。たとえば、ソフトウェアで実装されたキャッシュリフィル機能１９２はキャッシュミスの前にアドレス変換キャッシュ１６０を事前にロードする機能を有することが好ましい。これはハードウェアで実装されたキャッシュリフィル回路１９０がキャッシュリフィルをサービスしているときに同時に実行することができるようにしてもよい。
【００２９】
ハードウェアで実装されたキャッシュリフィル回路１９０とソフトウェアで実装されたキャッシュリフィル機能１９２は、プロセッシングシステム１０２上で動作するアプリケーションソフトウェアによって別個に制御されたり、起動されることが好ましい。たとえば、アプリケーションソフトウェアは、ハードウェアで実装されたキャッシュリフィル回路１９０またはソフトウェアで実装されたキャッシュリフィル機能１９２のどちらがアドレス変換キャッシュ１６０を管理する際に動作するか、また、どれくらいの時間、動作するかを決定する機能を有することが好ましい。あるいは、アプリケーションソフトウェアは、ハードウェアで実装されたキャッシュリフィル回路１９０とソフトウェアで実装されたキャッシュリフィル機能１９２がアドレス変換キャッシュ１６０を管理する際に同時に動作してもよいことを決める機能を有してもよい。実施の形態によっては、アプリケーションソフトウェアがオペレーシングシステムコールによってキャッシュ管理の前述の制御を実現することが好ましく、そのシステムコールによりハードウェアで実装されたキャッシュリフィル回路１９０とソフトウェアで実装されたキャッシュリフィル機能１９２が制御される。
【００３０】
図６を参照すると、アドレス変換キャッシュ１６０は、少なくとも一つのセグメントテーブルキャッシュ１６２と少なくとも一つのページテーブルキャッシュ１６４を用いて実装される。セグメントテーブルキャッシュ１６２は、実装の特殊事情に応じてＮウェイの連想（アソシエィティブ）キャッシュやダイレクトマップ（direct mapped）キャッシュであってもよい。セグメントテーブルキャッシュ１６２の各キャッシュライン１６６Ａ、１６６Ｂ、１６６Ｃ等は、プロセッシングシステム１００のメモリ１１０の異なるセグメントを表す。たとえば、セグメントテーブルキャッシュ１６２の一つ以上のキャッシュライン１６６は、
（ｉ）与えられたキャッシュライン１６６が有効であるかどうかを示すビット（Ｖ）、
（ｉｉ）ページテーブルキャッシュ１６４のページ番号を示すビット（ＮＰＰＴ）、
（ｉｉｉ）ページテーブルキャッシュ１６４のページサイズを示すビット（ＰＳ）、および／または
（ｉｖ）ページテーブルキャッシュ１６４の複数のキャッシュラインへの参照を与えるビット（ＩＯＰＴベースＲＰＮ）
を含む。
【００３１】
セグメントテーブルキャッシュ１６２の各キャッシュライン（またはキャッシュラインのグループ）１６６は、メモリ空間１１０の異なるセグメントを表す。
【００３２】
ページテーブルキャッシュ１６４もまた、実装の特殊事情に応じてＮウェイの連想キャッシュやダイレクトマップキャッシュであってもよい。好ましい実施の形態では、ページテーブルキャッシュ１６４はＮウェイの連想キャッシュである。ページテーブルキャッシュ１６４の各キャッシュライン１６８Ａ、１６８Ｂ、１６８Ｃ等は（もし有効であるなら）、関連づけられた外部アドレス１２０に対応するメモリ１１０の物理アドレス１２２の少なくとも一部を含む。ページテーブルキャッシュ１６４のキャッシュライン１６８の各々は、メモリ空間１１０のセグメントの一つにおける所与のページを表すキャッシュライン１６８のグループに属する。ページテーブルキャッシュ１６４のキャッシュライン１６８は、
（ｉ）当該キャッシュライン１６８が有効であるかどうかを示すビット（Ｖ）、
（ｉｉ）当該キャッシュライン１６８がロックされているかどうかを示す「ヒント」ビット（Ｈ）（詳細は以下で議論される）、
（ｉｉｉ）与えられた外部アドレス１２０と関連づけられた、メモリ空間１１０の物理アドレス１２２の少なくとも一部を表すビット（ＲＰＮ）、
（ｉｖ）Ｉ／Ｏデバイス識別番号（たとえば、外部システムＩＤ）を表すビット（ＩＯＩＤ）、
（ｖ）キャッシュコヒーレンシー情報を与えるビット（Ｍ）（たとえば、Ｍ＝１であれば、コヒーレンシーが要求される）とストレージオーダリング情報を示すビット（ＳＯ）（たとえば、ＳＯ＝１であれば、厳密なオーダリング（順序付け）が要求される）、および／または
（ｉｖ）物理アドレス１２２によってアドレスが指定されたメモリ位置がリードオンリー(read only)、ライトオンリー(write only)、リード／ライトのいずれであるかを示すビット（ＰＰ）
を含む。
【００３３】
システム１００の初期化の際、オペレーティングシステムはページテーブルキャッシュ１６４のキャッシュライン１６８のある部分を予約してもよい。この予約は、各キャッシュラインについて、有効ビットＶとヒントビットＨに対して所定の論理レベルを書き込むことによって実現される。この予約は、いずれのＩ／Ｏデバイスも内部メモリ空間１１０に読み込みおよび／または書き込みを要求していない間に、なされるべきである。また初期化の際、メモリ空間１１０の各セグメントのページサイズが、たとえばプロセッシングシステム１０２または外部システム１０４によって指定されてもよい。これはオペレーティングシステムへのシステムコールを介して実行することができる。ページサイズが指定できるとは言っても、ページサイズは、ページ間でもセグメント間でも共通であることが好ましい。
【００３４】
ソフトウェアで実装されたキャッシュリフィル機能１９２はセグメントテーブルキャッシュ１６２および／またはページテーブルキャッシュ１６４の一つ以上のキャッシュラインと、それに関連する、プロセッシングシステム１０２のメモリ空間１１０における、物理アドレスでアドレス指定された物理メモリ位置とを予約する機能を有することが好ましい。これは、キャッシュミスが起こる前、たとえば、予測可能なデータが処理されており、キャッシュ１６２、１６４の事前ロードが有用であるようなときなどに実行されることが好ましい。ソフトウェアで実装されたキャッシュリフィル機能１９２は、ハードウェアで実装されたキャッシュリフィル回路１９０によるリフィルに対抗して、ページテーブルキャッシュ１６４のキャッシュライン１６８をロックできることが好ましい。一例として、ロック機能は、Ｈビットを所定のレベル、たとえば論理値１に設定することによって実現される。
【００３５】
アドレス変換キャッシュ１６０は、セグメントテーブルキャッシュ１６２のキャッシュラインの各セットにアクセスするために、ベース値を設定するプログラマブルなセグメントテーブルアドレスレジスタ１７０を含む。中間アドレス１５０のベースアドレスの部分１４６で拡張されたセグメントテーブルアドレスレジスタ１７０のベース値は、セグメントテーブルキャッシュ１６２のキャッシュライン１６６の一つを選択するためのポインタ（インデックス）として用いてもよい。セグメントテーブルキャッシュ１６２の選択されたキャッシュラインのＩＯＰＴベースＲＰＮの部分は、ページテーブルキャッシュ１６４へのベース値インデックスを与える。中間アドレス１５０の別の割り当て部分１５２で拡張されたセグメントテーブルキャッシュ１６２の選択されたキャッシュラインのベース値インデックスは、ページテーブルキャッシュ１６４のキャッシュライン１６８の一つを選択するためのポインタ（インデックス）として用いてもよい。中間アドレス１５０のその割り当て部分１５２は、外部アドレス１２０’（マスクされていない、図５参照）のより高い有意性をもつビットに対応する。その割り当て部分１５２のビット数はページサイズに依存する。図７を参照すると、上述の例をさらに用いて、４ＫＢのページサイズは、オフセット部分１５４Ａに１２ビットを残して、１６ビットの割り当て部分１５２Ａになる。６４ＫＢのページサイズは、オフセット部分１５４Ｂに１６ビットを残して、１２ビットの割り当て部分１５２Ｂになる。１ＭＢのページサイズは、オフセット部分１５４Ｃに２０ビットを残して、８ビットの割り当て部分１５２Ｃになる。１６ＭＢのページサイズは、オフセット部分１５４Ｄに２４ビットを残して、４ビットの割り当て部分１５２Ｄになる。
【００３６】
再び図６に戻り、ページテーブルキャッシュ１６４の選択されたキャッシュライン１６８が有効である（たとえば、Ｖが論理値１である）と仮定すると、キャッシュライン１６８のＲＰＮ部分は、外部アドレス１２０に対してメモリ空間１１０への物理アドレス１２２の一部として利用される。物理アドレス１２２の残りの部分はＲＰＮ部分を中間アドレス１５０のオフセット部分１５４で拡張することによって得られる。しかしながら、もしページテーブルキャッシュ１６４の選択されたキャッシュライン１６８が有効ではない（たとえば、Ｖが論理値０である）なら、キャッシュミスが起き、ハードウェアで実装されたキャッシュリフィル回路１９０が、セグメントテーブルキャッシュ１６２および／またはページテーブルキャッシュ１６４をリフィルするために使われる。これに関して、ハードウェアで実装されたキャッシュリフィル回路１９０は、一つ以上の無効であり、かつ／または、ロックされていないキャッシュラインを検索し、そのようなキャッシュラインはリフィルする。もし無効であり、かつ／または、ロックされていないキャッシュラインが見つからなければ、フォールト通知のための割り込みが発生する。言い換えれば、ハードウェアキャッシュリフィル機構１９０とソフトウェアキャッシュリフィル機構１９２は同じキャッシュラインを共有するけれども、ページテーブルキャッシュ１６４のキャッシュラインのロックビット（Ｈ）は、ソフトウェア機構１９２によってのみ制御されるようにしてもよい。このように、もしキャッシュライン１６８がソフトウェア機構１９２によってロックされていれば、ハードウェア機構１９０は別のキャッシュウェイ（またはライン）を使わなければならなくなる。
【００３７】
ハードウェア機構１９０はＨが０であるキャッシュライン１６８だけを置き換えることが許されるから、実用的なソフトウェア機構１９２は、キャッシュライン１６８を事前にロードするためにはＨ＝１を書き込むだけで足りる。このように、ソフトウェア機構１９２がキャッシュライン１６８を予約する必要があるならば、そのソフトウェアは、ハードウェア機構１９０がリフィルする前にそのようなキャッシュライン１６８がイネーブルされるように、Ｈ＝１を書き込まなければならない。それとは対照的に、ソフトウェア機構１９２が以前に予約されたキャッシュライン１６８を解放する必要があるなら、そのソフトウェアは、そのようなキャッシュライン１６８に対してＨ＝０を書き込まなければならない。この解放の結果、それ以降は、ハードウェア機構１９０はリフィルのためにキャッシュライン１６８を使うことができるようになる。上記の機能は合同な（congruence）グループの各特定ウェイにも適用される。たとえば、Ｎウェイセットの連想キャッシュ１６４においてＮ＝４であれば、与えられた合同の各ウェイは個別にロックされる。これは下記のテーブルで表現される。
【表１】
2009508179.tif 000003
【００３８】
図８は、本発明の実施の形態を実装するのに適したマルチプロセッシングシステム１００Ａを示す。システム１００Ａは、複数のプロセッサ２０２Ａ〜２０２Ｄと、各プロセッサに付属するローカルメモリ２０４Ａ〜２０４Ｄと、バスシステム２０８で相互接続された共有メモリ２０６とを含む。共有メモリ２０６はメインメモリもしくはシステムメモリともいう。ここでは４つのプロセッサ２０２を例示するが、本発明の趣旨と権利範囲を逸脱することなく、任意の数のプロセッサを用いることができる。各プロセッサ２０２は類似の構成であってもよく、異なる構成であってもよい。
【００３９】
ここには示されていないが、システム１００Ａは、上述のアドレス変換回路１１２その他の機能を含むのが好ましい。
【００４０】
ローカルメモリ２０４は、好ましくは各プロセッサ２０２と同一チップ（同一の半導体基板）上に設けられる。もっとも、ローカルメモリ２０４は、従来のハードウェアキャッシュメモリではなく、ローカルメモリ２０４内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。
【００４１】
プロセッサ２０２は、好ましくは、プログラムを実行し、データを操作するために、バス２０８を介してシステムメモリ２０６からそれぞれのローカルメモリ２０４にデータ（プログラムデータを含んでもよい）をコピーするためのデータアクセス要求を発行する。ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）を用いてデータアクセスを容易にする機構を実装するのが好ましい。各プロセッサのＤＭＡＣは、本発明の他の特徴に関して上で議論したのと実質的に同じ能力をもつことが好ましい。
【００４２】
システムメモリ２０６は、広帯域メモリコネクション（図示しない）を介してプロセッサ２０２に接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であることが好ましい。システムメモリ１０６は、好適にはＤＲＡＭであるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装されてもよい。
【００４３】
各プロセッサ２０２は好適には、論理命令がパイプライン方式で処理されるパイプライン処理を用いて実装される。パイプラインは、命令が処理される任意の数のステージに分割されるが、一般的には、パイプラインは、一つ以上の命令をフェッチするステージ、命令をデコードするステージ、命令間の依存性をチェックするステージ、命令を発行するステージ、および命令を実行するステージを有する。この点に関連して、プロセッサ２０２は、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを含んでもよい。
【００４４】
複数のプロセッサ２０２のそれぞれのＤＭＡＣは、複数のプロセッサ２０２の一つが発行した単一のＤＭＡコマンドに応答して、共有メモリ２０６と一つ以上のローカルメモリ２０４の間で複数のデータブロックを転送する機能をもつことが好ましい。
【００４５】
実施の形態において、プロセッサ２０２、ローカルメモリ２０４、およびＤＭＡＣは、共通の半導体基板上に設けられてもよい。さらに実施の形態において、共有メモリ２０６もその共通半導体基板上に設けられもよく、それとは別の半導体基板上に分離して設けられもよい。
【００４６】
別の実施の形態において、一つ以上のプロセッサ２０２は、他のプロセッサと機能的に接続された、バス２０８を介して共有メモリ２０６と接続可能なメインプロセッサとして動作してもよい。このメインプロセッサは、他のプロセッサ２０２によるデータ処理をスケジューリングし、統括してもよい。メインプロセッサは、他のプロセッサ２０２とは違って、ハードウェアキャッシュメモリと結合してもよい。そのハードウェアキャッシュメモリにより、共有メモリ２０６およびプロセッサ２０２のローカルメモリ２０４の少なくとも１つから取得したデータをキャッシュすることができる。メインプロセッサは、プログラムを実行し、データを操作するために、ＤＭＡ技術のような既知の技術を用いて、バス２０８を介してシステムメモリ２０６からそのキャッシュメモリにデータ（プログラムデータを含んでもよい）をコピーするためのデータアクセス要求を発行してもよい。
【００４７】
ここで議論された特徴を実現するのに適した、マルチプロセッサシステムに対する好ましいコンピュータアーキテクチャをこれから説明する。実施の形態によれば、マルチプロセッサシステムは、ゲームシステム、ホームターミナル、ＰＣシステム、サーバシステム、ワークステーションのようなメディアを豊富に用いるアプリケーションをスタンドアロン型および／または分散型で処理する機能をもつシングルチップソリューションとして実装することができる。例えば、ゲームシステムやホームターミナルのようなアプリケーションの場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワーク型の画像復元、３Ｄコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能処理のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分な速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを完了できることが好ましい。
【００４８】
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール（セルともいう）から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサコンピュータシステムは、複数のコンピュータプロセッサを用いて、一つ以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、電気機器、デジタルテレビ、その他のデバイスから構成されてもよい。
【００４９】
必要に応じて、一つ以上のコンピュータシステムが一つのネットワークのメンバであってもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータを迅速に伝送することができる。またこの構造により、様々なサイズをもつネットワークのメンバを簡単に構築して各メンバの処理能力を強化することができ、これらのメンバによって処理されるアプリケーションを準備することも簡単になる。
【００５０】
図９は、基本的な処理モジュールであるプロセッサエレメント（ＰＥ）５００を示す。ＰＥ５００は、Ｉ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、および複数のサブプロセッシングユニット（ＳＰＵ）５０８、すなわち、ＳＰＵ５０８Ａ、５０８Ｂ、５０８Ｃ、５０８Ｄを含む。ローカル（すなわち内部）ＰＥバス５１２は、ＰＵ５０４、複数のＳＰＵ５０８、およびメモリインターフェース５１１間でデータおよびアプリケーションを伝送する。ローカルＰＥバス５１２は、例えば、従来のアーキテクチャであってもよいが、パケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装すると、より多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００５１】
ＰＥ５００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ５００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ５００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００５２】
ＰＥ５００は、広帯域メモリコネクション５１６を介して共有（メイン）メモリ５１４に密接に関連づけられる。このメモリ５１４は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００５３】
ＰＵ５０４および複数のＳＰＵ５０８は、それぞれ、ダイレクトメモリアクセス（ＤＭＡ）機能を有するメモリフローコントローラ（ＭＦＣ）と接続されることが望ましい。ＭＦＣは、メモリインターフェース５１１と協働して、ＤＲＡＭ５１４と、ＰＥ５００の複数のＳＰＵ５０８、ＰＵ５０４との間のデータの転送を円滑にするものである。ここで、ＤＭＡＣおよび／またはメモリインターフェース５１１は、複数のＳＰＵ５０８やＰＵ５０４と一体化してもよく、それらとは別に設置してもよい。実際に、ＤＭＡＣの機能および／またはメモリインターフェース５１１の機能は、１つ以上（好ましくはすべて）のＳＰＵ５０８およびＰＵ５０４と一体化できる。ここで、ＤＲＡＭ５１４もまた、ＰＥ５００と一体化してもよく、ＰＥ５００とは別に設置してもよい。例えば、ＤＲＡＭ５１４は図に示すようにチップ外部に設けてもよく、集積方式でチップに内蔵してもよい。
【００５４】
ＰＵ５０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ５０４は複数のＳＰＵによるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。ＳＰＵは、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ５０４の制御下で、複数のＳＰＵはデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＰＵ５０４としては、ＲＩＳＣ（Reduced Instruction-Set Computing）技術を採用したマイクロプロセッサアーキテクチャであるＰｏｗｅｒＰＣ（登録商標）コアを用いることが好ましい。ＲＩＳＣは単純な命令の組み合わせによってより複雑な命令を実行する。このようにして、プロセッサのタイミングは、より簡単でより速いオペレーションに基づくものとなり、与えられたクロック速度に対してより多くの命令を実行することが可能となる。
【００５５】
ここで、ＰＵ５０４は、複数のＳＰＵ５０８のうちの一つが、残りのＳＰＵ５０８によるデータとアプリケーションの処理をスケジューリングして統括するメインプロセッシングユニットの役割を果たすことによって実装されてもよい。さらに、ＰＥ５００内において、複数のＰＵを実装してもよい。
【００５６】
このモジュール構造によれば、ある特定のコンピュータシステムで使用されるＰＥ５００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは四つのＰＥ５００、ワークステーションは二つのＰＥ５００、ＰＤＡは一つのＰＥ５００を用いるなどである。ある特定のソフトウェアセルを処理するために割り当てられるＰＥ５００内のＳＰＵの数は、そのセル内のプログラムおよびデータの複雑さと規模に依存する。
【００５７】
図１０は、ＳＰＵ５０８の好適な構造と機能を示す図である。ＳＰＵ５０８のアーキテクチャは、汎用プロセッサ（幅広いアプリケーションにおいて高い平均性能を実現するように設計されているもの）と特殊用途のプロセッサ（一つのアプリケーションにおいて高い性能を実現するように設計されている）との間に位置するものであることが望ましい。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。ＳＰＵ５０８の機能には、グラフィックジオメトリパイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧエンコード／デコード、暗号化／復号、デバイスドライバ拡張、モデリング、ゲーム物理、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【００５８】
ＳＰＵ５０８は、二つの基本機能ユニット、すなわちＳＰＵコア５１０Ａとメモリフローコントローラ（ＭＦＣ）５１０Ｂを有する。ＳＰＵコア５１０Ａは、プログラムの実行、データの操作などを担うものであり、一方、ＭＦＣ５１０Ｂは、ＳＰＵコア５１０Ａと、当該システムのＤＲＡＭ５１４との間のデータ転送に関連する機能を担うものである。
【００５９】
ＳＰＵコア５１０Ａは、ローカルメモリ５５０と、命令（インストラクション）ユニット（ＩＵ）５５２と、レジスタ５５４と、一つ以上の浮動小数点実行ステージ５５６と、一つ以上の固定小数点実行ステージ５５８とを有する。ローカルメモリ５５０は、ＳＲＡＭのようなシングルポートのＲＡＭを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、ＳＰＵコア５１０Ａは、キャッシュではなく、比較的小さいローカルメモリ５５０を用いる。実際には、リアルタイムのアプリケーション（およびここで言及したほかのアプリケーション）のプログラマにとって、メモリアクセスのレイテンシを一貫性があって予測可能なものとするために、ＳＰＵ５０８Ａ内にキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット／ミス特性は、数サイクルから数百サイクルの範囲内でばらつきのある、不規則なメモリアクセス回数を生じさせる。このような不規則性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げてしまう。ローカルメモリＳＲＡＭ５５０においてデータ演算にＤＭＡ転送をオーバーラップさせることで、レイテンシを隠すことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。ＤＭＡ転送と関連するレイテンシおよび命令のオーバーヘッドは、キャッシュミスに対処するためのレイテンシより長いため、ＳＲＡＭローカルメモリアプローチは、ＤＭＡ転送サイズが十分大きくかつ十分予測可能である場合（例えばデータが必要となる前にＤＭＡコマンドを発行することができる場合）に、有利である。
【００６０】
複数のＳＰＵ５０８のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、そのＳＰＵと関連づけられたローカルメモリ５５０を参照する。なお、ローカルメモリ５５０の各位置にはシステム全体のメモリマップ内の実アドレス（ＲＡ；Real Address）が付与されている。これにより、特権レベルのソフトウェアがローカルメモリ５５０をあるプロセスの実効アドレス（ＥＡ；Effective Address）にマッピングすることが可能となり、二つのローカルメモリ５５０間のＤＭＡ転送が容易になる。ＰＵ５０４は、実効アドレスを用いてローカルメモリ５５０に直接アクセスすることもできる。ローカルメモリ５５０は、２５６キロバイトの容量を有し、レジスタ５５４の容量は１２８×１２８ビットであることが望ましい。
【００６１】
ＳＰＵコア５１０Ａは、演算パイプラインを用いて実装されることが望ましく、その演算パイプラインにおいて論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット５５２は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
【００６２】
命令バッファは、ローカルメモリ５５０と接続されたレジスタであって、命令がフェッチされたときにこれらの命令を一時的に格納することができるレジスタを複数有することが好ましい。命令バッファは、すべての命令が一つのグループとして（すなわち実質上同時に）レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ２または３以下となるサイズであることが好ましい。
【００６３】
通常、デコード回路は命令を細分化し、その命令の機能を実行する論理的なマイクロオペレーションを発生させる。例えば、論理的なマイクロオペレーションは、算術オペレーションと論理オペレーションの指定、ローカルメモリ５５０に対するロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび／または即値（immediate）データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび／またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【００６４】
依存性チェック回路は、与えられた命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのテストを行うデジタルロジックを含む。他の命令と依存する場合、その与えられた命令は、（例えば、依存関係にある他の命令の実行が完了するのを許すなどして）、他のオペランドが更新されるまで実行されてはならない。依存性チェック回路は、デコード回路から同時に送信されてきた複数の命令の依存関係を判定することが好ましい。
【００６５】
命令発行回路は、浮動小数点実行ステージ５５６および／または固定小数点実行ステージ５５８に命令を発行することができる。
【００６６】
レジスタ５５４は、１２８エントリのレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これにより、レジスタが枯渇するのを回避するためにレジスタのリネーム処理を行う必要がなくなるため、パイプラインを深くした高い周波数での実装が可能となる。リネーム処理のハードウェアは、一般的にプロセッシングシステムにおいて大きな実装面積を要し、また電力も消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシを補償することができる場合には、オペレーションを有利に実行することができる。
【００６７】
ＳＰＵコア５１０Ａは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。ＳＰＵコア５１０Ａは、命令バッファから同時にディスパッチされる命令の数として、例えば２と３の間の数（クロックサイクル毎に２つまたは３つの命令が発行されることを意味する）に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じて、浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の数を増減してもよい。好適な実施の形態では、浮動小数点実行ステージ５５６は毎秒３２ギガ浮動小数点オペレーション（３２ＧＦＬＯＰＳ）で動作し、固定小数点実行ステージ５５８は毎秒３２ギガオペレーション（３２ＧＯＰＳ）で動作する。
【００６８】
ＭＦＣ５１０Ｂは、バスインターフェースユニット（ＢＩＵ）５６４と、メモリマネジメントユニット（ＭＭＵ）５６２と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）５６０とを有することが望ましい。低電力消費の設計目的を達成するために、ＭＦＣ５１０Ｂは、ＤＭＡＣ５６０を除いて、ＳＰＵコア５１０Ａおよびバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。ＭＦＣ５１０Ｂは、バス５１２からＳＰＵ５０８に入るデータと命令を操作する機能を有し、ＤＭＡＣのためにアドレス変換を実行し、データ一貫性のためにスヌープオペレーションを実行する。ＢＩＵ５６４は、バス５１２とＭＭＵ５６２とＤＭＡＣ５６０の間のインターフェースを提供する。このように、ＳＰＵ５０８（ＳＰＵコア５１０ＡとＭＦＣ５１０Ｂを含む）とＤＭＡＣ５６０は、物理的および／または論理的にバス５１２と接続されている。
【００６９】
ＭＭＵ５６２は、メモリアクセスのために（ＤＭＡコマンドから取得される）実効アドレスを実アドレスへ変換する機能をもつことが望ましい。例えば、ＭＭＵ５６２は、実効アドレスの上位ビットを実アドレスのビットに変換する。一方、下位のアドレスビットについては、変換できないようにしておき、実アドレスを形成しメモリにアクセスを要求するために物理的にも論理的にも用いられるようにすることが好ましい。具体的には、ＭＭＵ５６２は、６４ビットのメモリ管理モデルにもとづいて実装され、４Ｋバイト、６４Ｋバイト、１メガバイト、１６メガバイトのページサイズと２５６ＭＢのセグメントサイズを有する２６４バイトの実効アドレス空間を提供してもよい。ＭＭＵ５６２は、ＤＭＡコマンドのために、２６５バイトまでの仮想メモリと、２４２バイト（４テラバイト）の物理メモリをサポート可能であることが好ましい。ＭＭＵ５６２のハードウェアは、８エントリの完全連想ＳＬＢ、２５６エントリの４ウェイセット連想ＴＬＢ、ＴＬＢのための４×４代替マネジメントテーブル（ＲＭＴ）を含むものとすることができる。なお、ＲＭＴはハードウェアＴＬＢミスのハンドリングに用いられるものである。
【００７０】
ＤＭＡＣ５６０は、ＳＰＵコア５１０ＡからのＤＭＡコマンドと、ＰＵ５０４および／または他のＳＰＵのような他のデバイスからのＤＭＡコマンドとを管理する機能をもつことが望ましい。ＤＭＡコマンドは下記の３つのカテゴリがある。すなわち、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるＰｕｔコマンド、共有メモリ５１４からローカルメモリ５５０へデータを移動させるＧｅｔコマンド、ＳＬＩコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、シグナルコマンド、および専用のバリアコマンドを含むものであってもよい。ＤＭＡコマンドに応じて、ＭＭＵ５６２は実効アドレスを実アドレスに変換し、この実アドレスはＢＩＵ５６４に転送される。
【００７１】
ＳＰＵコア５１０Ａはチャンネルインターフェースとデータインターフェースとを用いて、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどの送信）することが好ましい。ＳＰＵコア５１０Ａは、チャンネルインターフェースを介してＤＭＡコマンドをＤＭＡＣ５６０内のＤＭＡキューに送信する。いったん、ＤＭＡキューに格納されたＤＭＡコマンドは、ＤＭＡＣ５６０内の発行ロジックと完了ロジックにより操作される。一つのＤＭＡコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がＳＰＵコア５１０Ａに返送される。
【００７２】
図１１は、ＰＵ５０４の好ましい構造と機能を示す図である。ＰＵ５０４は、二つの基本機能ユニット、すなわちＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂを有する。ＰＵコア５０４Ａは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、ＭＦＣ５０４Ｂは、ＰＵコア５０４Ａと、当該システム１００のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【００７３】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０と、命令ユニット５７２と、レジスタ５７４と、少なくとも一つの浮動小数点実行ステージ５７６と、少なくとも一つの固定小数点実行ステージ５７８とを有する。Ｌ１キャッシュ５７０は、ＭＦＣ５１０Ｂを通じて共有メモリ１０６、プロセッサ１０２、あるいはメモリ空間の他の部分から受け取ったデータのキャッシング機能を提供する。ＰＵコア５０４Ａはスーパーパイプラインとして実装されることが好ましいため、命令ユニット５７２は、フェッチ、デコード、依存関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。ＰＵコア５０４Ａは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット５７２から２以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成において複数のステージを有する。必要とされる処理能力に応じて、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８の数を増減してもよい。
【００７４】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０と、Ｌ２キャッシュ５８２と、キャッシュ不可ユニット（ＮＣＵ；Non-Cacheable Unit）５８４と、コアインターフェースユニット（ＣＩＵ）５８６と、メモリマネジメントユニット（ＭＭＵ）５８８とを有する。低電力消費の設計目的を達成するために、ＭＦＣ５０４Ｂのほとんどの部分は、ＰＵコア５０４Ａとバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。
【００７５】
ＢＩＵ５８０は、バス５１２と、Ｌ２キャッシュ５８２と、ＮＣＵ５８４のロジックブロックとの間のインターフェースを提供する。ＢＩＵ５８０は、完全に一貫性のあるメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス５１２上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、ＢＩＵ５８０は、Ｌ２キャッシュ５８２とＮＣＵ５８４に代わって、バス５１２へのロードリクエストとストアリクエストを発信する。ＢＩＵ５８０は、バス５１２へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス５１２上のデータオペレーションは、８ビートになるように設計してもよく、したがって、ＢＩＵ５８０は、キャッシュラインが１２８バイト前後であり、一貫性と同期の粒度が１２８キロバイトとなるように設計されることが好ましい。
【００７６】
Ｌ２キャッシュ５８２（およびそれをサポートするハードウェアロジック）は、５１２ＫＢデータをキャッシュするように設計されることが好ましい。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。Ｌ２キャッシュ５８２は、８ウェイセット・アソシエイティブ・システムであることが好ましい。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（例えば６つのＲＣマシン）に合わせた６つのリロードキューと、８つの（６４バイトの幅の）ストアキューとを有することができる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ（動作中に変更）されたときに状態を復元するときに有用である。この構成は、Ｌ１キャッシュ５７０が、より少ないポートでさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる（リクエストがＬ２キャッシュ５８２で止まることができるから）。この構成は、Ｌ２キャッシュ５８２にキャッシュの一貫性管理を任せるメカニズムも提供する。
【００７７】
ＮＣＵ５８４は、インターフェースによってＣＩＵ５８６と、Ｌ２キャッシュ５８２と、ＢＩＵ５８０と接続されており、通常、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可なオペレーションをキューイングまたはバッファリングする回路として機能する。ＮＣＵ５８４は、ＰＵコア５０４Ａとの通信のうちの、Ｌ２キャッシュ５８２によって扱わない全ての通信を操作することが好ましい。ここで、Ｌ２キャッシュ５８２によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、ＮＣＵ５８４は、半分のスピードで動作することが好ましい。
【００７８】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａとの境界に設けられ、浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、ＭＭＵ５８８から渡され、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。ＰＵコア５０４ＡとＭＭＵ５８８はフルスピードで動作し、Ｌ２キャッシュ５８２とＮＣＵ５８４は２：１のスピード比で動作可能であることが好ましい。こうすることによって、ＣＩＵ５８６に周波数境界が存在することになり、この境界がもつ機能の一つは、二つの周波数領域間でリクエストを転送し、データをリロードする際に、周波数の交錯を適切に操作することである。
【００７９】
ＣＩＵ５８６は、ロードユニット、ストアユニット、リロードユニットの３つの機能ブロックから構成される。さらに、データをプリフェッチする機能がＣＩＵ５８６により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。ＣＩＵ５８６は、下記の動作を実行可能であることが好ましい：（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からロードリクエストとストアリクエストを受け取る、（ｉｉ）これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する（２：１クロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストをＬ２キャッシュ５８２へルーティングし、キャッシュ不可のリクエストをＮＣＵ５８４へルーティングする、（ｉｖ）Ｌ２キャッシュ５８２とＮＣＵ５８４へのリクエストが均等になるように調整する、（ｖ）リクエストが目標ウインドウ内で受け取られ、オーバーフローが発生しないように、Ｌ２キャッシュ５８２とＮＣＵ５８４へディスパッチされるリクエストのフロー制御を提供する、（ｖｉ）ロードリターンデータを受け取り、そのデータを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へルーティングする、（ｖｉｉ）スヌープリクエストを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へ渡す、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【００８０】
ＭＭＵ５８８は、第２レベルのアドレス変換機構のように、ＰＵコア５０４Ａのためにアドレス変換を提供することが好ましい。変換の第１レベルは、ＰＵコア５０４Ａ内において、セパレート命令と、ＭＭＵ５８８より遥かに小さくてかつ速いデータＥＲＡＴ（実効アドレスから実アドレスへの変換；Effective to Real Address Translation）アレイとにより提供されることが好ましい。
【００８１】
ＰＵ５０４は６４ビットで実装され、４〜６ＧＨz、１０ＦＯ４（Ｆａｎ−ｏｕｔ−ｏｆ−ｆｏｕｒ）で動作することが好ましい。レジスタは６４ビットの長さを有することが好ましく（特定用途のための一つ以上のレジスタは６４ビットより小さいかもしれないが）、実効アドレスは６４ビットの長さを有することが好ましい。命令ユニット５７２、レジスタ５７４、および浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、ＲＩＳＣコンピューティング技術を達成するためにＰｏｗｅｒＰＣ技術により実装されることが好ましい。
【００８２】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第６５２６４９１号公報に記載されている。
【００８３】
本発明の少なくとも１つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウェアを用いて実現することができる。そのようなハードウェアは、標準的なデジタル回路、ソフトウェアおよび／またはファームウェアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ（ＰＲＯＭ）やプログラマブル・アレイ・ロジック・デバイス（ＰＡＬ）のような１つ以上のプログラマブルなデジタルデバイス／システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装され、かつ／または、１つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウェアおよび／またはファームウェアプログラムにより実装されてもよく、それらのプログラムは、運送および／または配布の便宜のため、好適な記録媒体もしくはフロッピー（登録商標）ディスク、メモリチップなどのメディアに格納されてもよい。
【００８４】
ここでは本発明を特定の実施の形態を参照して説明したが、これらの実施の形態は単に本発明の原理と応用を示すものであることが理解されるべきである。したがって、請求項により定義された本発明の主旨および範囲から逸脱することなく、例示した実施の形態に様々な変更を加えたり、他の構成を工夫しうることが理解されるべきである。
【産業上の利用可能性】
【００８５】
本発明は、外部メモリ空間をプロセッサのメモリ空間へアドレスを変換するための技術に適用することができる。
【図１】
2009508179.tif 000004
【図２】
2009508179.tif 000005
【図３】
2009508179.tif 000006
【図４】
2009508179.tif 000007
【図５】
2009508179.tif 000008
【図６】
2009508179.tif 000009
【図７】
2009508179.tif 000010
【図８】
2009508179.tif 000011
【図９】
2009508179.tif 000012
【図１０】
2009508179.tif 000013
【図１１】
2009508179.tif 000014
【手続補正書】
【提出日】平成20年11月25日(2008.11.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を動作させるステップと、
キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有する、ソフトウェアで実装されたキャッシュリフィル機能を動作させるステップとを含むことを特徴とする方法。
【請求項２】
前記事前にロードする機能により、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムのメモリにおける、前記物理アドレスでアドレス指定された物理メモリ位置とを予約することを特徴とする請求項１に記載の方法。
【請求項３】
前記事前にロードする機能により、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを含むことを特徴とする請求項１に記載の方法。
【請求項４】
キャッシュミスの後、
前記ハードウェアで実装されたキャッシュリフィル回路を用いて、前記アドレス変換テーブルキャッシュのキャッシュラインを検索して、無効であり、かつ／またはロックされていないキャッシュラインを探すステップと、
前記ハードウェアで実装されたキャッシュリフィル回路を用いて、前記無効であり、かつ／またはロックされていないキャッシュラインをリフィルするステップと
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
無効であり、かつ／またはロックされていないキャッシュラインが一つも利用可能でないとき、フォールト通知のための割り込みを発行するステップをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを前記プロセッシングシステム上で動作するアプリケーションソフトウェアに基づいて前記プロセッシングシステムが決定することを許可するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを制御するための前記プロセッシングシステムのオペレーティングシステムソフトウェアに対して前記アプリケーションソフトウェアに基づいてコールすることを許可するステップをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作することを前記プロセッシングシステム上で動作するアプリケーションソフトウェアに基づいて前記プロセッシングシステムが決定することを許可するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作するように制御するための前記プロセッシングシステムのオペレーティングシステムソフトウェアに対してアプリケーションソフトウェアに基づいてコールすることを許可するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を動作させるステップと、
前記アドレス変換テーブルキャッシュを管理するための、ソフトウェアで実装されたキャッシュリフィル機能も動作させるステップと、
前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルするステップとを含むことを特徴とする方法。
【請求項１１】
外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を動作させるステップと、
前記アドレス変換テーブルキャッシュを管理し、かつ、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードするための、ソフトウェアで実装されたキャッシュリフィル機能も動作させるステップと、
前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルするステップとを含むことを特徴とする方法。
【請求項１２】
前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインは前記プロセッシングシステムのメモリの異なるセグメントを表し、
前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリにおける物理アドレスの少なくとも一部を含み、前記メモリの選択されたセグメント内のページを表すエントリのグループに属することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムの前記メモリにおける、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約することを前記ソフトウェアで実装されたキャッシュリフィル機能に許可するステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを前記ソフトウェアで実装されたキャッシュリフィル機能に許可するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記外部アドレスにベースアドレスを追加して、中間アドレスの少なくとも一部を生成するステップと、
前記中間アドレスの第１の部分を、前記セグメントテーブルキャッシュの前記キャッシュラインの一つを選択するためのポインタとして用いるステップと、
前記セグメントテーブルキャッシュの前記選択されたキャッシュラインの少なくとも一部を、前記ページテーブルキャッシュの複数のキャッシュラインへの参照として用いるステップと、
前記中間アドレスの別の部分を、前記ページテーブルキャッシュ内の参照されるエントリの一つへのポインタとして利用して、前記外部アドレスに対して少なくとも部分的に変換された物理アドレスを得るステップとをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記セグメントテーブルキャッシュのキャッシュラインは、
当該キャッシュラインが有効であるかどうかを示すビット、
前記ページテーブルキャッシュのページ番号を示すビット、
前記ページテーブルキャッシュのページサイズを示すビット、および
前記ページテーブルキャッシュの前記複数のキャッシュラインへの前記参照を与えるビット
の少なくとも一つを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ページテーブルキャッシュのキャッシュラインは、
当該キャッシュラインが有効であるかどうかを示すビット、
前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して前記ソフトウェアで実装されたキャッシュリフィル機能によって、キャッシュミス前に、当該キャッシュラインがロックされたかどうかを示すビット、および
前記メモリの前記物理アドレスの少なくとも一部を表すビット
の少なくとも一つを含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記物理アドレスの少なくとも一部を表す前記ページテーブルキャッシュの選択されたキャッシュラインのビットを前記中間アドレスの最下位ビットまたは最下位ビット群で拡張して、前記外部アドレスに対する変換後の物理アドレスを生成するステップをさらに含むことを特徴とする請求項１５の方法。
【請求項１９】
メモリに結合可能な少なくとも一つのプロセッサと、
外部デバイスから受け取った仮想アドレスを前記メモリの物理アドレスに変換する機能を有するアドレス変換回路とを含み、
前記アドレス変換回路は、
前記仮想アドレスを前記物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
前記アドレス変換テーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
（ｉ）前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュを同時にリフィルする機能を有するか、または
（ｉｉ）前記ソフトウェアで実装されたキャッシュリフィル機能が、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有するか
のいずれかまたはその両方であることを特徴とする装置。
【請求項２０】
前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッサの前記メモリにおける、前記物理アドレスによってアドレス指定される物理メモリ位置とを予約する機能を有することを特徴とする請求項１９に記載の装置。
【請求項２１】
前記ソフトウェアで実装されたキャッシュリフィル機能は、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックする機能を有することを特徴とする請求項２０に記載の装置。
【請求項２２】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを制御する機能を前記プロセッサに実現させるためのアプリケーションソフトウェアをさらに含むことを特徴とする請求項１９に記載の装置。
【請求項２３】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを、単独であるいはアプリケーションソフトウェアに応答して、制御する機能を前記プロセッサに実現させるためのオペレーティングシステムソフトウェアをさらに含むことを特徴とする請求項１９に記載の装置。
【請求項２４】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作することを決定する機能を前記プロセッサに実現させるためのアプリケーションソフトウェアをさらに含むことを特徴とする請求項１９に記載の装置。
【請求項２５】
前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作するように、単独であるいはアプリケーションソフトウェアに応答して、制御する機能を前記プロセッサに実現させるためのオペレーティングシステムソフトウェアをさらに含むことを特徴とする請求項１９に記載の装置。
【請求項２６】
外部アドレスをメモリ空間の物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
前記アドレス変換テーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュを同時にリフィルする機能を有することを特徴とするアドレス変換回路。
【請求項２７】
前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインはプロセッシングシステムの前記メモリ空間の異なるセグメントを表し、
前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリ空間における物理アドレスの少なくとも一部を含み、前記メモリ空間の与えられたセグメント内のページを表すエントリのグループに属することを特徴とする請求項２６に記載のアドレス変換回路。
【請求項２８】
前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記メモリ空間における、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約する機能を有することを特徴とする請求項２７に記載のアドレス変換回路。
【請求項２９】
前記ソフトウェアで実装されたキャッシュリフィル機能は、キャッシュミスの後、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックする機能を有することを特徴とする請求項２８に記載のアドレス変換回路。
【請求項３０】
内部メモリ空間と、
前記メモリ空間に機能的に接続された少なくとも一つのプロセッサと、
各キャッシュラインが前記メモリ空間の異なるセグメントを表すセグメントテーブルキャッシュと、
キャッシュの各エントリが、前記メモリ空間における物理アドレスの少なくとも一部を含み、前記メモリ空間の与えられたセグメント内のページを表すエントリのグループに属する、ページテーブルキャッシュと、
前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
（ｉ）前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は同時に動作するよう構成されているか、または、  （ｉｉ）前記ソフトウェアで実装されたキャッシュリフィル機能が、キャッシュミスの前に前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを事前にロードする機能を有するか
のいずれかまたはその両方であることを特徴とするシステム。
【国際調査報告】
2009508179.tif 000015