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