JP4243318B2 - ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置 - Google Patents

ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置 Download PDF

Info

Publication number
JP4243318B2
JP4243318B2 JP2008511341A JP2008511341A JP4243318B2 JP 4243318 B2 JP4243318 B2 JP 4243318B2 JP 2008511341 A JP2008511341 A JP 2008511341A JP 2008511341 A JP2008511341 A JP 2008511341A JP 4243318 B2 JP4243318 B2 JP 4243318B2
Authority
JP
Japan
Prior art keywords
cache
implemented
address
refill
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008511341A
Other languages
English (en)
Other versions
JP2009508179A (ja
Inventor
活志 大塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2009508179A publication Critical patent/JP2009508179A/ja
Application granted granted Critical
Publication of JP4243318B2 publication Critical patent/JP4243318B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、ハードウェアとソフトウェアで同時にキャッシュフィル(fill)する特徴を用いて、外部メモリ空間からプロセッサのメモリ空間にアドレスを変換するための方法と装置に関する。
近年、最先端のコンピュータアプリケーションは、リアルタイムでマルチメディアを扱う機能を必要としており、コンピュータ処理のデータスループットをどこまでも高くしていくことが求められている。そのようなアプリケーションの中で、グラフィックスアプリケーションは、望ましい視覚上の結果を得るために比較的短い時間で、莫大な量のデータアクセス、データ計算、およびデータ操作を行わなければならないため、プロセッシングシステムに最大の要求を課す。こうしたアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。プロセッシングシステムの中には、1つのプロセッサを用いて高速な処理速度を達成するものがあるが、他のプロセッシングシステムは、高速処理のためにマルチプロセッサアーキテクチャを用いて実装されている。マルチプロセッサシステムでは、複数のサブプロセッサが並列に(または少なくとも協調して)動作することで所望の処理結果を達成することができる。
そのようなアプリケーションを実行するのに適したプロセッシングシステムには一つ以上のプロセッサとメモリが含まれる。あるプロセッシングシステムにおいては、外部システム(たとえば別のプロセッシングシステム、CCDなど)から当該プロセッシングシステムのメモリにデータを転送することが望ましい。外部システムに見えているメモリ空間は、プロセッシングシステムのメモリ空間に関して変換することになるから、プロセッシングシステムのメモリへのデータ転送に関連づけられた外部システムのメモリアドレスの変換が必要になる。プロセッシングシステムに対して速度目標を達成するためには、この変換を素早く行うことが求められる。
本発明の実施の形態は、ハードウェアとソフトウェアのキャッシュの特徴を組み合わせて用いて、マルチプロセッサベースのアーキテクチャのようなプロセッシングシステムの内部メモリ空間に外部システムからのデータを保存することができるように、外部システムのアドレスを変換するための改良技術を提供する。本発明は、多くのアプリケーションで用いることができるが、予測可能なデータアクセス(たとえば、ストリーミングビデオ)と予測できないデータアクセスの両方を円滑にするために使われるときに利点が得られる。
ストリーミングビデオアプリケーションまたは描画/テクスチャアプリケーションにおけるデータアクセスでは、リアルタイムの反応(および低いジッタ)が要求される。そのようなデータアクセスは比較的予測可能である。なぜなら要求元のI/Oデバイスからのアクセスアドレスとアクセスタイミングはあらかじめ決めておくことができるからである。このように、ソフトウェアで実装されたキャッシュリフィル機構を用いて(キャッシュミスの前に)データを事前にロードしておけば、処理効率を改善し、ジッタを減らすことができる。しかしながら、特にキャッシュミスのイベントが起きると、ソフトウェアで実装されたキャッシュリフィルは完了するまでに数マイクロ秒のオーダーの時間がかかる。これは、すべてのタイプのデータアクセス(特にリアルタイムや低ジッタの結果を要求するタイプのデータアクセス)に適応するには十分な速さではない。ハードウェアで実装されたキャッシュリフィル機構は一般にもっと速いリフィル速度(数百ナノ秒のオーダー)を見せる。しかしながら、これでも、性能が重要な意味をもつアクセスにとっては十分な速さではなく、たとえば、ストリーミングビデオアプリケーションに対しては無視できないジッタが発生することになるであろう。
本発明の実施の形態によれば、ハードウェアとソフトウェアの両方のキャッシュリフィル機構が提供され、両機構は同時に動作してもよい。たとえば、ハードウェアキャッシュリフィル機構がリフィルをサービスしているときでさえ、データの事前ロードを実行してもよい。ハードウェアとソフトウェアのキャッシュリフィル機構は同じキャッシュエントリを共有するが、各エントリはソフトウェア機構の方によってのみ制御可能なロックビットを有する。もしエントリがソフトウェアでロックされていたら、ハードウェア機構は他のキャッシュウェイを使用しなければならない。好ましい実装では、ソフトウェア機構が予測可能なデータアクセスを扱う一方、ハードウェア機構は予測できないデータアクセスを扱う。これにより処理性能が高くなり、ジッタが減り、よりリアルタイムな結果が得られるようになる。
ある実施の形態によれば、方法と装置は、外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供することと、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有する、ソフトウェアで実装されたキャッシュリフィル機能を提供することとを可能にする。前記事前にロードするステップは、前記アドレス変換テーブルキャッシュの一つ以上のキャッシュラインと、それに関連づけられた、前記プロセッシングシステムのメモリにおける、前記物理アドレスでアドレス指定された物理メモリ位置とを予約する。前記事前にロードするステップは、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックしてもよい。
ある実施の形態によれば、方法と装置は、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を用いて、前記アドレス変換テーブルキャッシュを同時にリフィルすることを可能にする。
ある実施の形態によれば、方法と装置は、外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を提供することと、前記アドレス変換テーブルキャッシュを管理し、かつ、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードするための、ソフトウェアで実装されたキャッシュリフィル機能も提供するステップと、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルすることとを可能にする。
前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインは前記プロセッシングシステムのメモリの異なるセグメントを表し、前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリにおける物理アドレスの少なくとも一部を含み、前記メモリの選択されたセグメント内のページを表すエントリのグループに属する。
この方法と装置は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムの前記メモリにおける、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約することを前記ソフトウェアで実装されたキャッシュリフィル機能に許可することを可能にする。代案としてもしくは追加として、この方法と装置は、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを前記ソフトウェアで実装されたキャッシュリフィル機能に許可することを可能にする。
この方法と装置は、前記外部アドレスにベースアドレスを追加して、中間アドレスの少なくとも一部を生成するステップと、前記中間アドレスの第1の部分を、前記セグメントテーブルキャッシュの前記キャッシュラインの一つを選択するためのポインタとして用いるステップと、前記セグメントテーブルキャッシュの前記選択されたキャッシュラインの少なくとも一部を、前記ページテーブルキャッシュの複数のキャッシュラインへの参照として用いるステップと、前記中間アドレスの別の部分を、前記ページテーブルキャッシュ内の参照されるエントリの一つへのポインタとして利用して、前記外部アドレスに対して前記メモリに少なくとも部分的に変換された物理アドレスを得るステップとをさらに提供してもよい。
前記セグメントテーブルキャッシュのキャッシュラインは、当該キャッシュラインが有効であるかどうかを示すビット、前記ページテーブルキャッシュのページ番号を示すビット、前記ページテーブルキャッシュのページサイズを示すビット、および/または前記ページテーブルキャッシュの前記複数のキャッシュラインへの前記参照を与えるビットを含んでもよい。
前記ページテーブルキャッシュのキャッシュラインは、当該キャッシュラインが有効であるかどうかを示すビット、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して前記ソフトウェアで実装されたキャッシュリフィル機能によって、キャッシュミス前に、当該キャッシュラインがロックされたかどうかを示すビット、および/または前記メモリの前記物理アドレスの前記少なくとも一部を表すビットを含んでもよい。
この方法と装置は、前記物理アドレスの前記少なくとも一部を表す前記ページテーブルキャッシュの前記選択されたキャッシュラインのビットを前記中間アドレスの有意でないビットで拡張して、前記外部アドレスに対する変換後の物理アドレスを生成するステップをさらに提供してもよい。
その他の態様、特徴、利点などは、添付の図面を参照しながら本発明を説明するときに当業者には明らかとなろう。以下、本発明の様々な態様を例示する目的のため、図面には好ましい形態が示されるが、本発明はここに示される正確な配置や手段に限定されるものではない。
本発明のある態様に適したプロセッシングシステムの構造を説明するブロック図である。 図1のシステムによって実行されるアドレス変換を説明する概念図である。 図1のプロセッシングシステムのアドレス変換機能を実装するのに適した構造を説明するブロック図である。 図3の構造で利用される、外部アドレスをベースアドレスで拡張するのに適した回路のより詳細なブロック図である。 図4の外部アドレスとベースアドレスの拡張の概念図である。 図3の構造におけるキャッシュシステムを実装するのに適した回路のより詳細なブロック図である。 拡張された外部アドレス(中間アドレス)からプロセッシングシステムの実アドレスへの変換の少なくとも一部を示す概念図である。 本発明のある態様に適した二つ以上のサブプロセッサを含むマルチプロセッシングシステムの構成を説明する図である。 本発明のさらなる態様を実装するのに利用される好ましいプロセッサエレメント(PE)を示す図である。 本発明のさらなる態様に適した、図9のシステムの典型的なサブプロセッシングユニット(SPU)の構成図である。 本発明のさらなる態様に適した、図9のシステムの典型的なプロセッシングユニット(PU)の構成図である。
同様の構成には同様の符号を付した図面を参照する。図1は、本発明の特徴を実現するのに適したプロセッシングシステム100を示す。簡潔かつ明確にするために、図1のブロック図は、装置100を例示するものとしてここでは参照し、説明する。しかし、この説明は、同じ効果を奏するいろいろな態様の方法にそのまま適用できることが理解されよう。
システム100は、プロセッシングシステム102と一つ以上のバス106を介して互いに結合された少なくとも一つの外部システム104(例えばI/Oデバイス)を含む。プロセッシングシステム102は、バス114を介して互いに結合された、一つ以上のプロセッサ108、内部メモリ空間110(一つ以上のメモリユニット)、およびI/Oアドレス変換回路112を含む。図1の機能的な区分はあくまでも例示のためであり、他の区分を採用してもよいことに留意する。システム100は、たとえばインタフェース回路、周辺回路など他のデバイスを含んでもよいことがわかる。しかし、簡潔かつ明確にするため、それらの構成は省略する。
プロセッサ108は、メモリ空間110からデータを要求し、望ましい結果を得るためにそのデータを操作することができる既知の技術を利用して実装することができる。たとえば、プロセッサ108は、ソフトウェアやファームウェアを実行することのできる標準的なマイクロプロセッサや分散マイクロプロセッサーなどを含む既知のマイクロプロセッサを用いて実装されてもよい。一例として、プロセッサ108は、データ、例えばグレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報などを含むピクセルデータを要求して操作することができるグラフィックスプロセッサであってもよい。
ある処理コンテクストにおいては、外部システム104がプロセッシングシステム102の内部メモリ空間110に対してデータの読み書きをすることがある。これに関して、アドレス変換回路112は、外部システム104から受け取る仮想アドレス(異なるメモリ空間の外部アドレス)を内部メモリ空間110の物理アドレスに変換する機能を有することが好ましい。実際、外部システム104はメモリ空間110と同じメモリ空間で動作することはなく、したがって、アドレス変換が必要になる。
図2に示すように、メモリ110はいくつかのセグメント、たとえばセグメント0、セグメント1、セグメント2などに分割可能であり、各セグメントは複数のページに分割可能であることが好ましい。メモリ110が自分自身の物理空間を持っている一方、外部システム104は仮想空間、たとえば、少なくともプロセッシングシステム102に関していえば、メモリ110の物理空間と一対一の同一の空間ではない仮想空間0で動作する。アドレス変換回路112は、仮想空間0のアドレス120をメモリ空間110の物理アドレス122に変換する機能を有する。一つ以上の外部システム104があってもよいから、アドレス変換回路112は、他の仮想記憶空間、たとえば仮想記憶空間Nのアドレス124を内部メモリ空間110の物理アドレス122へ変換する機能を有してもよい。仮想記憶空間0、Nから内部メモリ空間110に変換する際、仮想アドレス120、124のベースアドレスが調整され、キャッシュ機構の対象となるが、それについては以下、さらに詳細に説明する。
図3は、アドレス変換回路112の少なくとも一部の実装例を説明するブロック図である。この実施の形態では、アドレス変換回路112はベースアドレス調整回路130と一つ以上のアドレス変換キャッシュ160を含む。プロセッシングシステム102は、外部システム104から外部アドレス(あるいは仮想アドレス)を受け取る。ここでも、このアドレスは、プロセッシングシステム102のメモリ空間110に対するデータの読み書きの要求と関連づけられている。この読み書きの要求は、外部システム104(DMAのリクエスタである)によってなされるダイレクトメモリアクセス(DMA)の要求というコンテクストでなされてもよいことに留意する。ベースアドレス調整回路130は、ベースアドレステーブル132と拡張(augmentation)回路134を含み、外部システム104から外部アドレス120を受け取り、それにベースアドレス(あるいはオフセット)を加え、第1の中間アドレス150を生成する。
ベースアドレス調整回路130を実装するのに適した回路の例は図4に例示される。拡張回路134は、マスク制御回路と乗算器を含み、少なくとも(i)UCアドレス変換レジスタ136の一部から複数ビット(28ビット)、(ii)外部アドレス120(たとえば32ビット)、および(iii)ベースアドレステーブル132からベースアドレス出力144、146の少なくとも一つを受け取る。
UCアドレス変換レジスタ136は、中間アドレス150の最有意ビット(MSB)(たとえば上位アドレスの範囲)を設定することが好ましい。中間アドレス150を生成する際に使われるUCアドレス変換レジスタ136の割り当て部分は、たとえば、その下位ビット(たとえば22−27ビット)を含む。プロセッシングシステム上で動作しているアプリケーションソフトウェアは、好ましくはオペレーティングシステムソフトウェアへのシステムコールによって、UCアドレス変換レジスタ136のその割り当て部分の内容を、内部メモリ空間110(またはその一部)および/または内部メモリ空間110にマップされた外部メモリ空間(またはその一部)の相対サイズの関数として設定してもよい。
ベースアドレステーブル132は、外部システム104の識別番号(外部システムID)に基づいてベースアドレス出力144、146を生成することで、異なる外部システム104(DMAリクエスタである)に対して異なるベースアドレスが生成されるようになる。外部システム104は、サウスブリッジデバイスやRSXグラフィックスプロセッシングデバイスを介してプロセッシングシステム102に結合された一つ以上のDMAリクエスタとして実装されてもよい。そのような実装では、DMAリクエスタは、ディスクドライブ、USBバス、イーサネット(登録商標)スイッチなどの内、一つ以上を含む。一例として、外部システムIDは、所定数の異なるリクエスタを表せるように5ビット長であってもよい。外部システムIDのビット数は望むだけ、あるいは必要なだけ調整してもよいことがわかる。例示された実施の形態では、ベースアドレステーブル132は一つ以上のマスクビット144(たとえば4ビット)と一つ以上のベースアドレスビット146(たとえば8ビット)を含む。この例では、ベースアドレステーブル132は、UCアドレス変換テーブルレジスタ138で設定される複数のコンフィギュラブルなレジスタ(あるいは等価なストレージエレメント)を利用してもよい。このように、マスクビットとベースアドレスビットの数は、(特定のビット値と同様に)プログラムすることができる。ここでも、プロセッシングシステム上で動作しているアプリケーションソフトウェアは、好ましくはオペレーティングシステムソフトウェアへのシステムコールによって、外部システム104に対してマスクビット144とベースアドレス146が確立されるよう、UCアドレス変換テーブルレジスタ138の内容を設定してもよい。UCアドレス変換レジスタ136と同様、UCアドレス変換テーブルレジスタ138の内容は、内部メモリ空間110(またはその一部)および/または内部メモリ空間110にマップされた外部メモリ空間(またはその一部)の相対サイズの関数として設定してもよい。外部システムIDは、拡張回路134への入力のために、適切なマスクビット144とベースアドレス146が生成されるよう、レジスタ140、142へのインデックスとして作用する。
図5は、図4で例示した実装例を用いて、外部アドレス120をマスクビット144とベースアドレス146で拡張(augmentation)する様子を概念的に示した図である。外部アドレス120(32ビット)はベースアドレス変換回路130に入力される。外部アドレス120の最有意ビット(MSB)はマスクビット144(この例では4ビット)でマスクされ、28ビットは中間アドレス150の最も有意でないビット(LSB)に利用するために残される。ベースアドレス146(この例では8ビット)が中間アドレス150の次に有意なビット位置に挿入される。最後に中間アドレス150の最有意ビットが、UCアドレス変換レジスタ136またはその一部(この例では、6ビット)によって設定される。このように、この実施の形態では、中間アドレス150は64ビット長である。
図3を再び参照すると、中間アドレス150は、アドレス変換キャッシュ160を通して内部メモリ空間110の物理アドレス122を得るために使われる。アドレス変換キャッシュ160はハードウェアで実装されたキャッシュリフィル回路190とソフトウェアで実装されたキャッシュリフィル機能192によって管理される。アドレス変換キャッシュ160の好ましい特徴として、ハードウェアで実装されたキャッシュリフィル回路190とソフトウェアで実装されたキャッシュリフィル機能192は、アドレス変換キャッシュ160をリフィル(入れ替え)するために、別々に動作してもよく、あるいは、同時に動作してもよい。好ましい実施の形態では、ソフトウェアで実装されたキャッシュリフィル機能192は予測可能なデータアクセスを扱う一方、ハードウェアで実装されたキャッシュリフィル回路190は予測できないデータアクセスを扱う。たとえば、ソフトウェアで実装されたキャッシュリフィル機能192はキャッシュミスの前にアドレス変換キャッシュ160を事前にロードする機能を有することが好ましい。これはハードウェアで実装されたキャッシュリフィル回路190がキャッシュリフィルをサービスしているときに同時に実行することができるようにしてもよい。
ハードウェアで実装されたキャッシュリフィル回路190とソフトウェアで実装されたキャッシュリフィル機能192は、プロセッシングシステム102上で動作するアプリケーションソフトウェアによって別個に制御されたり、起動されることが好ましい。たとえば、アプリケーションソフトウェアは、ハードウェアで実装されたキャッシュリフィル回路190またはソフトウェアで実装されたキャッシュリフィル機能192のどちらがアドレス変換キャッシュ160を管理する際に動作するか、また、どれくらいの時間、動作するかを決定する機能を有することが好ましい。あるいは、アプリケーションソフトウェアは、ハードウェアで実装されたキャッシュリフィル回路190とソフトウェアで実装されたキャッシュリフィル機能192がアドレス変換キャッシュ160を管理する際に同時に動作してもよいことを決める機能を有してもよい。実施の形態によっては、アプリケーションソフトウェアがオペレーシングシステムコールによってキャッシュ管理の前述の制御を実現することが好ましく、そのシステムコールによりハードウェアで実装されたキャッシュリフィル回路190とソフトウェアで実装されたキャッシュリフィル機能192が制御される。
図6を参照すると、アドレス変換キャッシュ160は、少なくとも一つのセグメントテーブルキャッシュ162と少なくとも一つのページテーブルキャッシュ164を用いて実装される。セグメントテーブルキャッシュ162は、実装の特殊事情に応じてNウェイの連想(アソシエィティブ)キャッシュやダイレクトマップ(direct mapped)キャッシュであってもよい。セグメントテーブルキャッシュ162の各キャッシュライン166A、166B、166C等は、プロセッシングシステム100のメモリ110の異なるセグメントを表す。たとえば、セグメントテーブルキャッシュ162の一つ以上のキャッシュライン166は、
(i)与えられたキャッシュライン166が有効であるかどうかを示すビット(V)、
(ii)ページテーブルキャッシュ164のページ番号を示すビット(NPPT)、
(iii)ページテーブルキャッシュ164のページサイズを示すビット(PS)、および/または
(iv)ページテーブルキャッシュ164の複数のキャッシュラインへの参照を与えるビット(IOPTベースRPN)
を含む。
セグメントテーブルキャッシュ162の各キャッシュライン(またはキャッシュラインのグループ)166は、メモリ空間110の異なるセグメントを表す。
ページテーブルキャッシュ164もまた、実装の特殊事情に応じてNウェイの連想キャッシュやダイレクトマップキャッシュであってもよい。好ましい実施の形態では、ページテーブルキャッシュ164はNウェイの連想キャッシュである。ページテーブルキャッシュ164の各キャッシュライン168A、168B、168C等は(もし有効であるなら)、関連づけられた外部アドレス120に対応するメモリ110の物理アドレス122の少なくとも一部を含む。ページテーブルキャッシュ164のキャッシュライン168の各々は、メモリ空間110のセグメントの一つにおける所与のページを表すキャッシュライン168のグループに属する。ページテーブルキャッシュ164のキャッシュライン168は、
(i)当該キャッシュライン168が有効であるかどうかを示すビット(V)、
(ii)当該キャッシュライン168がロックされているかどうかを示す「ヒント」ビット(H)(詳細は以下で議論される)、
(iii)与えられた外部アドレス120と関連づけられた、メモリ空間110の物理アドレス122の少なくとも一部を表すビット(RPN)、
(iv)I/Oデバイス識別番号(たとえば、外部システムID)を表すビット(IOID)、
(v)キャッシュコヒーレンシー情報を与えるビット(M)(たとえば、M=1であれば、コヒーレンシーが要求される)とストレージオーダリング情報を示すビット(SO)(たとえば、SO=1であれば、厳密なオーダリング(順序付け)が要求される)、および/または
(iv)物理アドレス122によってアドレスが指定されたメモリ位置がリードオンリー(read only)、ライトオンリー(write only)、リード/ライトのいずれであるかを示すビット(PP)
を含む。
システム100の初期化の際、オペレーティングシステムはページテーブルキャッシュ164のキャッシュライン168のある部分を予約してもよい。この予約は、各キャッシュラインについて、有効ビットVとヒントビットHに対して所定の論理レベルを書き込むことによって実現される。この予約は、いずれのI/Oデバイスも内部メモリ空間110に読み込みおよび/または書き込みを要求していない間に、なされるべきである。また初期化の際、メモリ空間110の各セグメントのページサイズが、たとえばプロセッシングシステム102または外部システム104によって指定されてもよい。これはオペレーティングシステムへのシステムコールを介して実行することができる。ページサイズが指定できるとは言っても、ページサイズは、ページ間でもセグメント間でも共通であることが好ましい。
ソフトウェアで実装されたキャッシュリフィル機能192はセグメントテーブルキャッシュ162および/またはページテーブルキャッシュ164の一つ以上のキャッシュラインと、それに関連する、プロセッシングシステム102のメモリ空間110における、物理アドレスでアドレス指定された物理メモリ位置とを予約する機能を有することが好ましい。これは、キャッシュミスが起こる前、たとえば、予測可能なデータが処理されており、キャッシュ162、164の事前ロードが有用であるようなときなどに実行されることが好ましい。ソフトウェアで実装されたキャッシュリフィル機能192は、ハードウェアで実装されたキャッシュリフィル回路190によるリフィルに対抗して、ページテーブルキャッシュ164のキャッシュライン168をロックできることが好ましい。一例として、ロック機能は、Hビットを所定のレベル、たとえば論理値1に設定することによって実現される。
アドレス変換キャッシュ160は、セグメントテーブルキャッシュ162のキャッシュラインの各セットにアクセスするために、ベース値を設定するプログラマブルなセグメントテーブルアドレスレジスタ170を含む。中間アドレス150のベースアドレスの部分146で拡張されたセグメントテーブルアドレスレジスタ170のベース値は、セグメントテーブルキャッシュ162のキャッシュライン166の一つを選択するためのポインタ(インデックス)として用いてもよい。セグメントテーブルキャッシュ162の選択されたキャッシュラインのIOPTベースRPNの部分は、ページテーブルキャッシュ164へのベース値インデックスを与える。中間アドレス150の別の割り当て部分152で拡張されたセグメントテーブルキャッシュ162の選択されたキャッシュラインのベース値インデックスは、ページテーブルキャッシュ164のキャッシュライン168の一つを選択するためのポインタ(インデックス)として用いてもよい。中間アドレス150のその割り当て部分152は、外部アドレス120’(マスクされていない、図5参照)のより高い有意性をもつビットに対応する。その割り当て部分152のビット数はページサイズに依存する。図7を参照すると、上述の例をさらに用いて、4KBのページサイズは、オフセット部分154Aに12ビットを残して、16ビットの割り当て部分152Aになる。64KBのページサイズは、オフセット部分154Bに16ビットを残して、12ビットの割り当て部分152Bになる。1MBのページサイズは、オフセット部分154Cに20ビットを残して、8ビットの割り当て部分152Cになる。16MBのページサイズは、オフセット部分154Dに24ビットを残して、4ビットの割り当て部分152Dになる。
再び図6に戻り、ページテーブルキャッシュ164の選択されたキャッシュライン168が有効である(たとえば、Vが論理値1である)と仮定すると、キャッシュライン168のRPN部分は、外部アドレス120に対してメモリ空間110への物理アドレス122の一部として利用される。物理アドレス122の残りの部分はRPN部分を中間アドレス150のオフセット部分154で拡張することによって得られる。しかしながら、もしページテーブルキャッシュ164の選択されたキャッシュライン168が有効ではない(たとえば、Vが論理値0である)なら、キャッシュミスが起き、ハードウェアで実装されたキャッシュリフィル回路190が、セグメントテーブルキャッシュ162および/またはページテーブルキャッシュ164をリフィルするために使われる。これに関して、ハードウェアで実装されたキャッシュリフィル回路190は、一つ以上の無効であり、かつ/または、ロックされていないキャッシュラインを検索し、そのようなキャッシュラインはリフィルする。もし無効であり、かつ/または、ロックされていないキャッシュラインが見つからなければ、フォールト通知のための割り込みが発生する。言い換えれば、ハードウェアキャッシュリフィル機構190とソフトウェアキャッシュリフィル機構192は同じキャッシュラインを共有するけれども、ページテーブルキャッシュ164のキャッシュラインのロックビット(H)は、ソフトウェア機構192によってのみ制御されるようにしてもよい。このように、もしキャッシュライン168がソフトウェア機構192によってロックされていれば、ハードウェア機構190は別のキャッシュウェイ(またはライン)を使わなければならなくなる。
ハードウェア機構190はHが0であるキャッシュライン168だけを置き換えることが許されるから、実用的なソフトウェア機構192は、キャッシュライン168を事前にロードするためにはH=1を書き込むだけで足りる。このように、ソフトウェア機構192がキャッシュライン168を予約する必要があるならば、そのソフトウェアは、ハードウェア機構190がリフィルする前にそのようなキャッシュライン168がイネーブルされるように、H=1を書き込まなければならない。それとは対照的に、ソフトウェア機構192が以前に予約されたキャッシュライン168を解放する必要があるなら、そのソフトウェアは、そのようなキャッシュライン168に対してH=0を書き込まなければならない。この解放の結果、それ以降は、ハードウェア機構190はリフィルのためにキャッシュライン168を使うことができるようになる。上記の機能は合同な(congruence)グループの各特定ウェイにも適用される。たとえば、Nウェイセットの連想キャッシュ164においてN=4であれば、与えられた合同の各ウェイは個別にロックされる。これは下記のテーブルで表現される。
Figure 0004243318
図8は、本発明の実施の形態を実装するのに適したマルチプロセッシングシステム100Aを示す。システム100Aは、複数のプロセッサ202A〜202Dと、各プロセッサに付属するローカルメモリ204A〜204Dと、バスシステム208で相互接続された共有メモリ206とを含む。共有メモリ206はメインメモリもしくはシステムメモリともいう。ここでは4つのプロセッサ202を例示するが、本発明の趣旨と権利範囲を逸脱することなく、任意の数のプロセッサを用いることができる。各プロセッサ202は類似の構成であってもよく、異なる構成であってもよい。
ここには示されていないが、システム100Aは、上述のアドレス変換回路112その他の機能を含むのが好ましい。
ローカルメモリ204は、好ましくは各プロセッサ202と同一チップ(同一の半導体基板)上に設けられる。もっとも、ローカルメモリ204は、従来のハードウェアキャッシュメモリではなく、ローカルメモリ204内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。
プロセッサ202は、好ましくは、プログラムを実行し、データを操作するために、バス208を介してシステムメモリ206からそれぞれのローカルメモリ204にデータ(プログラムデータを含んでもよい)をコピーするためのデータアクセス要求を発行する。ダイレクト・メモリ・アクセス・コントローラ(DMAC)を用いてデータアクセスを容易にする機構を実装するのが好ましい。各プロセッサのDMACは、本発明の他の特徴に関して上で議論したのと実質的に同じ能力をもつことが好ましい。
システムメモリ206は、広帯域メモリコネクション(図示しない)を介してプロセッサ202に接続されるダイナミックランダムアクセスメモリ(DRAM)であることが好ましい。システムメモリ106は、好適にはDRAMであるが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装されてもよい。
各プロセッサ202は好適には、論理命令がパイプライン方式で処理されるパイプライン処理を用いて実装される。パイプラインは、命令が処理される任意の数のステージに分割されるが、一般的には、パイプラインは、一つ以上の命令をフェッチするステージ、命令をデコードするステージ、命令間の依存性をチェックするステージ、命令を発行するステージ、および命令を実行するステージを有する。この点に関連して、プロセッサ202は、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを含んでもよい。
複数のプロセッサ202のそれぞれのDMACは、複数のプロセッサ202の一つが発行した単一のDMAコマンドに応答して、共有メモリ206と一つ以上のローカルメモリ204の間で複数のデータブロックを転送する機能をもつことが好ましい。
実施の形態において、プロセッサ202、ローカルメモリ204、およびDMACは、共通の半導体基板上に設けられてもよい。さらに実施の形態において、共有メモリ206もその共通半導体基板上に設けられもよく、それとは別の半導体基板上に分離して設けられもよい。
別の実施の形態において、一つ以上のプロセッサ202は、他のプロセッサと機能的に接続された、バス208を介して共有メモリ206と接続可能なメインプロセッサとして動作してもよい。このメインプロセッサは、他のプロセッサ202によるデータ処理をスケジューリングし、統括してもよい。メインプロセッサは、他のプロセッサ202とは違って、ハードウェアキャッシュメモリと結合してもよい。そのハードウェアキャッシュメモリにより、共有メモリ206およびプロセッサ202のローカルメモリ204の少なくとも1つから取得したデータをキャッシュすることができる。メインプロセッサは、プログラムを実行し、データを操作するために、DMA技術のような既知の技術を用いて、バス208を介してシステムメモリ206からそのキャッシュメモリにデータ(プログラムデータを含んでもよい)をコピーするためのデータアクセス要求を発行してもよい。
ここで議論された特徴を実現するのに適した、マルチプロセッサシステムに対する好ましいコンピュータアーキテクチャをこれから説明する。実施の形態によれば、マルチプロセッサシステムは、ゲームシステム、ホームターミナル、PCシステム、サーバシステム、ワークステーションのようなメディアを豊富に用いるアプリケーションをスタンドアロン型および/または分散型で処理する機能をもつシングルチップソリューションとして実装することができる。例えば、ゲームシステムやホームターミナルのようなアプリケーションの場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワーク型の画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能処理のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分な速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを完了できることが好ましい。
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(セルともいう)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサコンピュータシステムは、複数のコンピュータプロセッサを用いて、一つ以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、電気機器、デジタルテレビ、その他のデバイスから構成されてもよい。
必要に応じて、一つ以上のコンピュータシステムが一つのネットワークのメンバであってもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータを迅速に伝送することができる。またこの構造により、様々なサイズをもつネットワークのメンバを簡単に構築して各メンバの処理能力を強化することができ、これらのメンバによって処理されるアプリケーションを準備することも簡単になる。
図9は、基本的な処理モジュールであるプロセッサエレメント(PE)500を示す。PE500は、I/Oインターフェース502、プロセッシングユニット(PU)504、および複数のサブプロセッシングユニット(SPU)508、すなわち、SPU508A、508B、508C、508Dを含む。ローカル(すなわち内部)PEバス512は、PU504、複数のSPU508、およびメモリインターフェース511間でデータおよびアプリケーションを伝送する。ローカルPEバス512は、例えば、従来のアーキテクチャであってもよいが、パケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装すると、より多くのハードウェアが必要になるが、利用可能な帯域が広がる。
PE500はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、PE500はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE500はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
PE500は、広帯域メモリコネクション516を介して共有(メイン)メモリ514に密接に関連づけられる。このメモリ514は好適にはダイナミックランダムアクセスメモリ(DRAM)であるが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
PU504および複数のSPU508は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と接続されることが望ましい。MFCは、メモリインターフェース511と協働して、DRAM514と、PE500の複数のSPU508、PU504との間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインターフェース511は、複数のSPU508やPU504と一体化してもよく、それらとは別に設置してもよい。実際に、DMACの機能および/またはメモリインターフェース511の機能は、1つ以上(好ましくはすべて)のSPU508およびPU504と一体化できる。ここで、DRAM514もまた、PE500と一体化してもよく、PE500とは別に設置してもよい。例えば、DRAM514は図に示すようにチップ外部に設けてもよく、集積方式でチップに内蔵してもよい。
PU504は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU504は複数のSPUによるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。SPUは、好適には、一命令複数データ(SIMD)プロセッサである。PU504の制御下で、複数のSPUはデータおよびアプリケーションの処理を並列に、かつ独立して行う。PU504としては、RISC(Reduced Instruction-Set Computing)技術を採用したマイクロプロセッサアーキテクチャであるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによってより複雑な命令を実行する。このようにして、プロセッサのタイミングは、より簡単でより速いオペレーションに基づくものとなり、与えられたクロック速度に対してより多くの命令を実行することが可能となる。
ここで、PU504は、複数のSPU508のうちの一つが、残りのSPU508によるデータとアプリケーションの処理をスケジューリングして統括するメインプロセッシングユニットの役割を果たすことによって実装されてもよい。さらに、PE500内において、複数のPUを実装してもよい。
このモジュール構造によれば、ある特定のコンピュータシステムで使用されるPE500の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは四つのPE500、ワークステーションは二つのPE500、PDAは一つのPE500を用いるなどである。ある特定のソフトウェアセルを処理するために割り当てられるPE500内のSPUの数は、そのセル内のプログラムおよびデータの複雑さと規模に依存する。
図10は、SPU508の好適な構造と機能を示す図である。SPU508のアーキテクチャは、汎用プロセッサ(幅広いアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(一つのアプリケーションにおいて高い性能を実現するように設計されている)との間に位置するものであることが望ましい。SPU508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。SPU508の機能には、グラフィックジオメトリパイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化/復号、デバイスドライバ拡張、モデリング、ゲーム物理、コンテンツ制作、音声合成および音声処理などを挙げることができる。
SPU508は、二つの基本機能ユニット、すなわちSPUコア510Aとメモリフローコントローラ(MFC)510Bを有する。SPUコア510Aは、プログラムの実行、データの操作などを担うものであり、一方、MFC510Bは、SPUコア510Aと、当該システムのDRAM514との間のデータ転送に関連する機能を担うものである。
SPUコア510Aは、ローカルメモリ550と、命令(インストラクション)ユニット(IU)552と、レジスタ554と、一つ以上の浮動小数点実行ステージ556と、一つ以上の固定小数点実行ステージ558とを有する。ローカルメモリ550は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPUコア510Aは、キャッシュではなく、比較的小さいローカルメモリ550を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマにとって、メモリアクセスのレイテンシを一貫性があって予測可能なものとするために、SPU508A内にキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス特性は、数サイクルから数百サイクルの範囲内でばらつきのある、不規則なメモリアクセス回数を生じさせる。このような不規則性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げてしまう。ローカルメモリSRAM550においてデータ演算にDMA転送をオーバーラップさせることで、レイテンシを隠すことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドは、キャッシュミスに対処するためのレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きくかつ十分予測可能である場合(例えばデータが必要となる前にDMAコマンドを発行することができる場合)に、有利である。
複数のSPU508のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、そのSPUと関連づけられたローカルメモリ550を参照する。なお、ローカルメモリ550の各位置にはシステム全体のメモリマップ内の実アドレス(RA;Real Address)が付与されている。これにより、特権レベルのソフトウェアがローカルメモリ550をあるプロセスの実効アドレス(EA;Effective Address)にマッピングすることが可能となり、二つのローカルメモリ550間のDMA転送が容易になる。PU504は、実効アドレスを用いてローカルメモリ550に直接アクセスすることもできる。ローカルメモリ550は、256キロバイトの容量を有し、レジスタ554の容量は128×128ビットであることが望ましい。
SPUコア510Aは、演算パイプラインを用いて実装されることが望ましく、その演算パイプラインにおいて論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット552は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
命令バッファは、ローカルメモリ550と接続されたレジスタであって、命令がフェッチされたときにこれらの命令を一時的に格納することができるレジスタを複数有することが好ましい。命令バッファは、すべての命令が一つのグループとして(すなわち実質上同時に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるサイズであることが好ましい。
通常、デコード回路は命令を細分化し、その命令の機能を実行する論理的なマイクロオペレーションを発生させる。例えば、論理的なマイクロオペレーションは、算術オペレーションと論理オペレーションの指定、ローカルメモリ550に対するロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値(immediate)データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
依存性チェック回路は、与えられた命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのテストを行うデジタルロジックを含む。他の命令と依存する場合、その与えられた命令は、(例えば、依存関係にある他の命令の実行が完了するのを許すなどして)、他のオペランドが更新されるまで実行されてはならない。依存性チェック回路は、デコード回路から同時に送信されてきた複数の命令の依存関係を判定することが好ましい。
命令発行回路は、浮動小数点実行ステージ556および/または固定小数点実行ステージ558に命令を発行することができる。
レジスタ554は、128エントリのレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これにより、レジスタが枯渇するのを回避するためにレジスタのリネーム処理を行う必要がなくなるため、パイプラインを深くした高い周波数での実装が可能となる。リネーム処理のハードウェアは、一般的にプロセッシングシステムにおいて大きな実装面積を要し、また電力も消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシを補償することができる場合には、オペレーションを有利に実行することができる。
SPUコア510Aは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPUコア510Aは、命令バッファから同時にディスパッチされる命令の数として、例えば2と3の間の数(クロックサイクル毎に2つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じて、浮動小数点実行ステージ556と固定小数点実行ステージ558の数を増減してもよい。好適な実施の形態では、浮動小数点実行ステージ556は毎秒32ギガ浮動小数点オペレーション(32GFLOPS)で動作し、固定小数点実行ステージ558は毎秒32ギガオペレーション(32GOPS)で動作する。
MFC510Bは、バスインターフェースユニット(BIU)564と、メモリマネジメントユニット(MMU)562と、ダイレクトメモリアクセスコントローラ(DMAC)560とを有することが望ましい。低電力消費の設計目的を達成するために、MFC510Bは、DMAC560を除いて、SPUコア510Aおよびバス512の半分の周波数(半分のスピード)で動作することが好ましい。MFC510Bは、バス512からSPU508に入るデータと命令を操作する機能を有し、DMACのためにアドレス変換を実行し、データ一貫性のためにスヌープオペレーションを実行する。BIU564は、バス512とMMU562とDMAC560の間のインターフェースを提供する。このように、SPU508(SPUコア510AとMFC510Bを含む)とDMAC560は、物理的および/または論理的にバス512と接続されている。
MMU562は、メモリアクセスのために(DMAコマンドから取得される)実効アドレスを実アドレスへ変換する機能をもつことが望ましい。例えば、MMU562は、実効アドレスの上位ビットを実アドレスのビットに変換する。一方、下位のアドレスビットについては、変換できないようにしておき、実アドレスを形成しメモリにアクセスを要求するために物理的にも論理的にも用いられるようにすることが好ましい。具体的には、MMU562は、64ビットのメモリ管理モデルにもとづいて実装され、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264バイトの実効アドレス空間を提供してもよい。MMU562は、DMAコマンドのために、265バイトまでの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU562のハードウェアは、8エントリの完全連想SLB、256エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
DMAC560は、SPUコア510AからのDMAコマンドと、PU504および/または他のSPUのような他のデバイスからのDMAコマンドとを管理する機能をもつことが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ550から共有メモリ514へデータを移動させるPutコマンド、共有メモリ514からローカルメモリ550へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、シグナルコマンド、および専用のバリアコマンドを含むものであってもよい。DMAコマンドに応じて、MMU562は実効アドレスを実アドレスに変換し、この実アドレスはBIU564に転送される。
SPUコア510Aはチャンネルインターフェースとデータインターフェースとを用いて、DMAC560内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPUコア510Aは、チャンネルインターフェースを介してDMAコマンドをDMAC560内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC560内の発行ロジックと完了ロジックにより操作される。一つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がSPUコア510Aに返送される。
図11は、PU504の好ましい構造と機能を示す図である。PU504は、二つの基本機能ユニット、すなわちPUコア504Aとメモリフローコントローラ(MFC)504Bを有する。PUコア504Aは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC504Bは、PUコア504Aと、当該システム100のメモリスペースとの間のデータ転送に関連する機能を担うものである。
PUコア504Aは、L1キャッシュ570と、命令ユニット572と、レジスタ574と、少なくとも一つの浮動小数点実行ステージ576と、少なくとも一つの固定小数点実行ステージ578とを有する。L1キャッシュ570は、MFC510Bを通じて共有メモリ106、プロセッサ102、あるいはメモリ空間の他の部分から受け取ったデータのキャッシング機能を提供する。PUコア504Aはスーパーパイプラインとして実装されることが好ましいため、命令ユニット572は、フェッチ、デコード、依存関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PUコア504Aは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット572から2以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン構成において複数のステージを有する。必要とされる処理能力に応じて、浮動小数点実行ステージ576と固定小数点実行ステージ578の数を増減してもよい。
MFC504Bは、バスインターフェースユニット(BIU)580と、L2キャッシュ582と、キャッシュ不可ユニット(NCU;Non-Cacheable Unit)584と、コアインターフェースユニット(CIU)586と、メモリマネジメントユニット(MMU)588とを有する。低電力消費の設計目的を達成するために、MFC504Bのほとんどの部分は、PUコア504Aとバス512の半分の周波数(半分のスピード)で動作することが好ましい。
BIU580は、バス512と、L2キャッシュ582と、NCU584のロジックブロックとの間のインターフェースを提供する。BIU580は、完全に一貫性のあるメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス512上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU580は、L2キャッシュ582とNCU584に代わって、バス512へのロードリクエストとストアリクエストを発信する。BIU580は、バス512へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス512上のデータオペレーションは、8ビートになるように設計してもよく、したがって、BIU580は、キャッシュラインが128バイト前後であり、一貫性と同期の粒度が128キロバイトとなるように設計されることが好ましい。
L2キャッシュ582(およびそれをサポートするハードウェアロジック)は、512KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ582は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ582は、8ウェイセット・アソシエイティブ・システムであることが好ましい。L2キャッシュ582は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ582は、L1キャッシュ570の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときに状態を復元するときに有用である。この構成は、L1キャッシュ570が、より少ないポートでさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる(リクエストがL2キャッシュ582で止まることができるから)。この構成は、L2キャッシュ582にキャッシュの一貫性管理を任せるメカニズムも提供する。
NCU584は、インターフェースによってCIU586と、L2キャッシュ582と、BIU580と接続されており、通常、PUコア504Aとメモリシステム間のキャッシュ不可なオペレーションをキューイングまたはバッファリングする回路として機能する。NCU584は、PUコア504Aとの通信のうちの、L2キャッシュ582によって扱わない全ての通信を操作することが好ましい。ここで、L2キャッシュ582によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、NCU584は、半分のスピードで動作することが好ましい。
CIU586は、MFC504BとPUコア504Aとの境界に設けられ、浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、MMU588から渡され、L2キャッシュ582とNCU584へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PUコア504AとMMU588はフルスピードで動作し、L2キャッシュ582とNCU584は2:1のスピード比で動作可能であることが好ましい。こうすることによって、CIU586に周波数境界が存在することになり、この境界がもつ機能の一つは、二つの周波数領域間でリクエストを転送し、データをリロードする際に、周波数の交錯を適切に操作することである。
CIU586は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU586により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU586は、下記の動作を実行可能であることが好ましい:(i)PUコア504AとMMU588からロードリクエストとストアリクエストを受け取る、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストをL2キャッシュ582へルーティングし、キャッシュ不可のリクエストをNCU584へルーティングする、(iv)L2キャッシュ582とNCU584へのリクエストが均等になるように調整する、(v)リクエストが目標ウインドウ内で受け取られ、オーバーフローが発生しないように、L2キャッシュ582とNCU584へディスパッチされるリクエストのフロー制御を提供する、(vi)ロードリターンデータを受け取り、そのデータを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へルーティングする、(vii)スヌープリクエストを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へ渡す、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
MMU588は、第2レベルのアドレス変換機構のように、PUコア504Aのためにアドレス変換を提供することが好ましい。変換の第1レベルは、PUコア504A内において、セパレート命令と、MMU588より遥かに小さくてかつ速いデータERAT(実効アドレスから実アドレスへの変換;Effective to Real Address Translation)アレイとにより提供されることが好ましい。
PU504は64ビットで実装され、4〜6GHz、10FO4(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(特定用途のための一つ以上のレジスタは64ビットより小さいかもしれないが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット572、レジスタ574、および浮動小数点実行ステージ576と固定小数点実行ステージ578は、RISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。
本発明の少なくとも1つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウェアを用いて実現することができる。そのようなハードウェアは、標準的なデジタル回路、ソフトウェアおよび/またはファームウェアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ(PROM)やプログラマブル・アレイ・ロジック・デバイス(PAL)のような1つ以上のプログラマブルなデジタルデバイス/システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装され、かつ/または、1つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウェアおよび/またはファームウェアプログラムにより実装されてもよく、それらのプログラムは、運送および/または配布の便宜のため、好適な記録媒体もしくはフロッピー(登録商標)ディスク、メモリチップなどのメディアに格納されてもよい。
ここでは本発明を特定の実施の形態を参照して説明したが、これらの実施の形態は単に本発明の原理と応用を示すものであることが理解されるべきである。したがって、請求項により定義された本発明の主旨および範囲から逸脱することなく、例示した実施の形態に様々な変更を加えたり、他の構成を工夫しうることが理解されるべきである。
本発明は、外部メモリ空間をプロセッサのメモリ空間へアドレスを変換するための技術に適用することができる。

Claims (30)

  1. 外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を動作させるステップと、
    キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有する、ソフトウェアで実装されたキャッシュリフィル機能を動作させるステップとを含むことを特徴とする方法。
  2. 前記事前にロードする機能により、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムのメモリにおける、前記物理アドレスでアドレス指定された物理メモリ位置とを予約することを特徴とする請求項1に記載の方法。
  3. 前記事前にロードする機能により、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを含むことを特徴とする請求項1に記載の方法。
  4. キャッシュミスの後、
    前記ハードウェアで実装されたキャッシュリフィル回路を用いて、前記アドレス変換テーブルキャッシュのキャッシュラインを検索して、無効であり、かつ/またはロックされていないキャッシュラインを探すステップと、
    前記ハードウェアで実装されたキャッシュリフィル回路を用いて、前記無効であり、かつ/またはロックされていないキャッシュラインをリフィルするステップと
    をさらに含むことを特徴とする請求項3に記載の方法。
  5. 無効であり、かつ/またはロックされていないキャッシュラインが一つも利用可能でないとき、フォールト通知のための割り込みを発行するステップをさらに含むことを特徴とする請求項4に記載の方法。
  6. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを前記プロセッシングシステム上で動作するアプリケーションソフトウェアに基づいて前記プロセッシングシステムが決定することを許可するステップをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを制御するための前記プロセッシングシステムのオペレーティングシステムソフトウェアに対して前記アプリケーションソフトウェアに基づいてコールすることを許可するステップをさらに含むことを特徴とする請求項6に記載の方法。
  8. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作することを前記プロセッシングシステム上で動作するアプリケーションソフトウェアに基づいて前記プロセッシングシステムが決定することを許可するステップをさらに含むことを特徴とする請求項1に記載の方法。
  9. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作するように制御するための前記プロセッシングシステムのオペレーティングシステムソフトウェアに対してアプリケーションソフトウェアに基づいてコールすることを許可するステップをさらに含むことを特徴とする請求項1に記載の方法。
  10. 外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を動作させるステップと、
    前記アドレス変換テーブルキャッシュを管理するための、ソフトウェアで実装されたキャッシュリフィル機能も動作させるステップと、
    前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルするステップとを含むことを特徴とする方法。
  11. 外部アドレスをプロセッシングシステムの物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路を動作させるステップと、
    前記アドレス変換テーブルキャッシュを管理し、かつ、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードするための、ソフトウェアで実装されたキャッシュリフィル機能も動作させるステップと、
    前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能を利用して、前記アドレス変換テーブルキャッシュを同時にリフィルするステップとを含むことを特徴とする方法。
  12. 前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインは前記プロセッシングシステムのメモリの異なるセグメントを表し、
    前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリにおける物理アドレスの少なくとも一部を含み、前記メモリの選択されたセグメント内のページを表すエントリのグループに属することを特徴とする請求項11に記載の方法。
  13. 前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッシングシステムの前記メモリにおける、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約することを前記ソフトウェアで実装されたキャッシュリフィル機能に許可するステップをさらに含むことを特徴とする請求項12に記載の方法。
  14. 前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックすることを前記ソフトウェアで実装されたキャッシュリフィル機能に許可するステップをさらに含むことを特徴とする請求項13に記載の方法。
  15. 前記外部アドレスにベースアドレスを追加して、中間アドレスの少なくとも一部を生成するステップと、
    前記中間アドレスの第1の部分を、前記セグメントテーブルキャッシュの前記キャッシュラインの一つを選択するためのポインタとして用いるステップと、
    前記セグメントテーブルキャッシュの前記選択されたキャッシュラインの少なくとも一部を、前記ページテーブルキャッシュの複数のキャッシュラインへの参照として用いるステップと、
    前記中間アドレスの別の部分を、前記ページテーブルキャッシュ内の参照されるエントリの一つへのポインタとして利用して、前記外部アドレスに対して少なくとも部分的に変換された物理アドレスを得るステップとをさらに含むことを特徴とする請求項12に記載の方法。
  16. 前記セグメントテーブルキャッシュのキャッシュラインは、
    当該キャッシュラインが有効であるかどうかを示すビット、
    前記ページテーブルキャッシュのページ番号を示すビット、
    前記ページテーブルキャッシュのページサイズを示すビット、および
    前記ページテーブルキャッシュの前記複数のキャッシュラインへの前記参照を与えるビット
    の少なくとも一つを含むことを特徴とする請求項15に記載の方法。
  17. 前記ページテーブルキャッシュのキャッシュラインは、
    当該キャッシュラインが有効であるかどうかを示すビット、
    前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して前記ソフトウェアで実装されたキャッシュリフィル機能によって、キャッシュミス前に、当該キャッシュラインがロックされたかどうかを示すビット、および
    前記メモリの前記物理アドレスの少なくとも一部を表すビット
    の少なくとも一つを含むことを特徴とする請求項15に記載の方法。
  18. 前記物理アドレスの少なくとも一部を表す前記ページテーブルキャッシュの選択されたキャッシュラインのビットを前記中間アドレスの最下位ビットまたは最下位ビット群で拡張して、前記外部アドレスに対する変換後の物理アドレスを生成するステップをさらに含むことを特徴とする請求項15の方法。
  19. メモリに結合可能な少なくとも一つのプロセッサと、
    外部デバイスから受け取った仮想アドレスを前記メモリの物理アドレスに変換する機能を有するアドレス変換回路とを含み、
    前記アドレス変換回路は、
    前記仮想アドレスを前記物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
    前記アドレス変換テーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
    (i)前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュを同時にリフィルする機能を有するか、または
    (ii)前記ソフトウェアで実装されたキャッシュリフィル機能が、キャッシュミスの前に前記アドレス変換テーブルキャッシュを事前にロードする機能を有するか
    のいずれかまたはその両方であることを特徴とする装置。
  20. 前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記プロセッサの前記メモリにおける、前記物理アドレスによってアドレス指定される物理メモリ位置とを予約する機能を有することを特徴とする請求項19に記載の装置。
  21. 前記ソフトウェアで実装されたキャッシュリフィル機能は、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックする機能を有することを特徴とする請求項20に記載の装置。
  22. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを制御する機能を前記プロセッサに実現させるためのアプリケーションソフトウェアをさらに含むことを特徴とする請求項19に記載の装置。
  23. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路または前記ソフトウェアで実装されたキャッシュリフィル機能のどちらが動作するかを、単独であるいはアプリケーションソフトウェアに応答して、制御する機能を前記プロセッサに実現させるためのオペレーティングシステムソフトウェアをさらに含むことを特徴とする請求項19に記載の装置。
  24. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作することを決定する機能を前記プロセッサに実現させるためのアプリケーションソフトウェアをさらに含むことを特徴とする請求項19に記載の装置。
  25. 前記アドレス変換テーブルキャッシュを管理する際、前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能が同時に動作するように、単独であるいはアプリケーションソフトウェアに応答して、制御する機能を前記プロセッサに実現させるためのオペレーティングシステムソフトウェアをさらに含むことを特徴とする請求項19に記載の装置。
  26. 外部アドレスをメモリ空間の物理アドレスに変換するために使われるデータを格納したアドレス変換テーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
    前記アドレス変換テーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
    前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュを同時にリフィルする機能を有することを特徴とするアドレス変換回路。
  27. 前記アドレス変換テーブルキャッシュはセグメントテーブルキャッシュを含み、前記セグメントテーブルキャッシュの各キャッシュラインはプロセッシングシステムの前記メモリ空間の異なるセグメントを表し、
    前記アドレス変換テーブルキャッシュはページテーブルキャッシュを含み、前記ページテーブルキャッシュの各エントリは、前記メモリ空間における物理アドレスの少なくとも一部を含み、前記メモリ空間の与えられたセグメント内のページを表すエントリのグループに属することを特徴とする請求項26に記載のアドレス変換回路。
  28. 前記ソフトウェアで実装されたキャッシュリフィル機能は、前記アドレス変換テーブルキャッシュのキャッシュラインと、それに関連づけられた、前記メモリ空間における、前記物理アドレスによってアドレス指定された物理メモリ位置とを予約する機能を有することを特徴とする請求項27に記載のアドレス変換回路。
  29. 前記ソフトウェアで実装されたキャッシュリフィル機能は、キャッシュミスの後、前記ハードウェアで実装されたキャッシュリフィル回路によるリフィルに対抗して、前記アドレス変換テーブルキャッシュのキャッシュラインをロックする機能を有することを特徴とする請求項28に記載のアドレス変換回路。
  30. 内部メモリ空間と、
    前記メモリ空間に機能的に接続された少なくとも一つのプロセッサと、
    各キャッシュラインが前記メモリ空間の異なるセグメントを表すセグメントテーブルキャッシュと、
    キャッシュの各エントリが、前記メモリ空間における物理アドレスの少なくとも一部を含み、前記メモリ空間の与えられたセグメント内のページを表すエントリのグループに属する、ページテーブルキャッシュと、
    前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを管理するための、ハードウェアで実装されたキャッシュリフィル回路と、
    前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを管理するためのソフトウェアで実装されたキャッシュリフィル機能とを含み、
    (i)前記ハードウェアで実装されたキャッシュリフィル回路および前記ソフトウェアで実装されたキャッシュリフィル機能は同時に動作するよう構成されているか、または、
    (ii)前記ソフトウェアで実装されたキャッシュリフィル機能が、キャッシュミスの前に前記セグメントテーブルキャッシュおよび前記ページテーブルキャッシュを事前にロードする機能を有するか
    のいずれかまたはその両方であることを特徴とするシステム。
JP2008511341A 2006-05-24 2007-05-24 ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置 Active JP4243318B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US80817006P 2006-05-24 2006-05-24
US11/444,803 US7886112B2 (en) 2006-05-24 2006-06-01 Methods and apparatus for providing simultaneous software/hardware cache fill
PCT/JP2007/000556 WO2007135783A1 (en) 2006-05-24 2007-05-24 Methods and apparatus for providing simultaneous software/hardware cache fill

Publications (2)

Publication Number Publication Date
JP2009508179A JP2009508179A (ja) 2009-02-26
JP4243318B2 true JP4243318B2 (ja) 2009-03-25

Family

ID=38723097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008511341A Active JP4243318B2 (ja) 2006-05-24 2007-05-24 ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置

Country Status (5)

Country Link
US (1) US7886112B2 (ja)
EP (1) EP2021929B1 (ja)
JP (1) JP4243318B2 (ja)
CN (1) CN101326500B (ja)
WO (1) WO2007135783A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100876084B1 (ko) * 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7886112B2 (en) * 2006-05-24 2011-02-08 Sony Computer Entertainment Inc. Methods and apparatus for providing simultaneous software/hardware cache fill
US8179161B1 (en) 2009-05-05 2012-05-15 Cypress Semiconductor Corporation Programmable input/output circuit
US8487655B1 (en) * 2009-05-05 2013-07-16 Cypress Semiconductor Corporation Combined analog architecture and functionality in a mixed-signal array
US20120131305A1 (en) * 2010-11-22 2012-05-24 Swamy Punyamurtula Page aware prefetch mechanism
US9009410B2 (en) * 2011-08-23 2015-04-14 Ceva D.S.P. Ltd. System and method for locking data in a cache memory
CN103019954A (zh) * 2011-09-22 2013-04-03 瑞昱半导体股份有限公司 高速缓存装置与高速缓存数据存取方法
US8954672B2 (en) * 2012-03-12 2015-02-10 Advanced Micro Devices, Inc. System and method for cache organization in row-based memories
US9047198B2 (en) 2012-11-29 2015-06-02 Apple Inc. Prefetching across page boundaries in hierarchically cached processors
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
GB2528842B (en) * 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
US9665743B2 (en) * 2015-02-26 2017-05-30 Whitecanyon Software, Inc. Selective storage device wiping system and method
EP3274824B1 (en) 2015-03-27 2021-03-17 Intel Corporation Efficient address translation
US10552756B2 (en) * 2015-11-12 2020-02-04 University Of Rochester Superconducting system architecture for high-performance energy-efficient cryogenic computing
US10282308B2 (en) * 2016-06-23 2019-05-07 Advanced Micro Devices, Inc. Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems
US10579526B2 (en) * 2017-02-08 2020-03-03 Arm Limited Responding to snoop requests
US10613764B2 (en) 2017-11-20 2020-04-07 Advanced Micro Devices, Inc. Speculative hint-triggered activation of pages in memory
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US20230333990A1 (en) * 2022-04-18 2023-10-19 Samsung Electronics Co., Ltd. Systems and methods for address translation

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5918250A (en) * 1995-05-05 1999-06-29 Intel Corporation Method and apparatus for preloading default address translation attributes
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US6134633A (en) * 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
EP1182571B1 (en) * 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
US6938252B2 (en) * 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality
JP3681647B2 (ja) 2001-02-21 2005-08-10 株式会社半導体理工学研究センター キャッシュメモリシステム装置
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US6854046B1 (en) * 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7103748B2 (en) 2002-12-12 2006-09-05 International Business Machines Corporation Memory management for real-time applications
JP3655908B2 (ja) * 2003-02-26 2005-06-02 株式会社東芝 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム
US7139892B2 (en) * 2003-05-02 2006-11-21 Microsoft Corporation Implementation of memory access control using optimizations
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US20050182903A1 (en) * 2004-02-12 2005-08-18 Mips Technologies, Inc. Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
JP4520790B2 (ja) * 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
KR100611305B1 (ko) * 2004-11-25 2006-08-10 삼성전자주식회사 주소 맵핑 방법 및 장치
US20060179236A1 (en) * 2005-01-13 2006-08-10 Hazim Shafi System and method to improve hardware pre-fetching using translation hints
US7558939B2 (en) * 2005-03-08 2009-07-07 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
US20070022250A1 (en) * 2005-07-19 2007-01-25 International Business Machines Corporation System and method of responding to a cache read error with a temporary cache directory column delete
US8327075B2 (en) * 2005-12-08 2012-12-04 International Business Machines Corporation Methods and apparatus for handling a cache miss
US7389400B2 (en) * 2005-12-15 2008-06-17 International Business Machines Corporation Apparatus and method for selectively invalidating entries in an address translation cache
US7886112B2 (en) * 2006-05-24 2011-02-08 Sony Computer Entertainment Inc. Methods and apparatus for providing simultaneous software/hardware cache fill

Also Published As

Publication number Publication date
WO2007135783A1 (en) 2007-11-29
EP2021929B1 (en) 2014-12-03
EP2021929A1 (en) 2009-02-11
CN101326500B (zh) 2012-05-02
CN101326500A (zh) 2008-12-17
US20070277000A1 (en) 2007-11-29
US7886112B2 (en) 2011-02-08
JP2009508179A (ja) 2009-02-26
EP2021929A4 (en) 2010-10-27

Similar Documents

Publication Publication Date Title
JP4243318B2 (ja) ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置
JP3802042B2 (ja) キャッシュメモリ実装方法および装置、キャッシュメモリシステム
US7386687B2 (en) Methods and apparatus for managing a shared memory in a multi-processor system
JP4386373B2 (ja) ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置
JP4346612B2 (ja) 情報処理方法および装置
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
EP1861790B1 (en) Methods and apparatus for virtualizing an address space
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
KR100881810B1 (ko) 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
JP2006260556A (ja) ラッチポイントを制御することにより、演算処理能力を改善する方法、装置ならびにシステム
JP4024271B2 (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
JP2006286002A (ja) 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置
JP2006260555A (ja) 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081209

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081226

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4243318

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140109

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250