(57)【特許請求の範囲】
【請求項１】
電子システムであって、
プログラムの変数の記憶のためのメモリ場所を参照する仮想メモリアドレスの組を用いて前記プログラムを実行するように構成される処理サブシステムと、
コンフィギュレーションデータストリーム中で特定される回路設計を実現するように構成されるプログラマブル論理サブシステムとを備え、前記回路設計は複数の入出力回路を含み、各々の入出力回路は、それぞれの識別子を有し、かつ前記変数のそれぞれ１つにアクセスするように構成され、さらに
メモリと、
メモリ管理回路とを備え、前記メモリ管理回路は、
仮想メモリアドレスの前記組を前記メモリの物理メモリアドレスにマッピングし、かつ
前記プログラムの前記変数のそれぞれ１つにアクセスする前記複数の入出力回路の各々毎に、前記変数の前記それぞれ１つに対応する前記物理メモリアドレスに前記入出力回路のそれぞれの前記識別子をマッピングする、ように構成され、さらに
前記複数の入出力回路の少なくとも１つの入出力回路に結合される少なくとも１つのトランスレーションルックアサイドバッファを備え、前記少なくとも１つのトランスレーションルックアサイドバッファは、識別子を示すメモリアクセス要求を受信するのに応答して、前記メモリアドレス要求中に示される前記識別子に基づいて物理メモリアドレスを判定し、かつ前記識別子にマッピングされる前記物理メモリアドレスを示すメモリアクセス要求を前記メモリに与えるように構成され、
前記少なくとも１つのトランスレーションルックアサイドバッファが前記プログラマブル論理サブシステムによって実現される、電子システム。
【請求項２】
前記少なくとも１つのトランスレーションルックアサイドバッファは、１つ以上の識別子について、前記物理メモリアドレスへの前記識別子の前記マッピングを記憶するように構成されるキャッシュを含み、
前記少なくとも１つのトランスレーションルックアサイドバッファは、識別子を示すメモリアクセス要求および前記キャッシュに記憶される仮想メモリアドレスを受信するのに応答して、前記キャッシュから前記識別子にマッピングされる前記物理メモリアドレスおよび仮想メモリアドレスを取出すようにさらに構成される、請求項１に記載の電子システム。
【請求項３】
前記少なくとも１つのトランスレーションルックアサイドバッファは、識別子を示すメモリアクセス要求および前記キャッシュに含まれない仮想メモリアドレスを受信するのに応答して、前記メモリ管理回路から前記識別子にマッピングされる前記物理メモリアドレスおよび前記仮想メモリアドレスを取出すようにさらに構成される、請求項２に記載の電子システム。
【請求項４】
前記少なくとも１つのトランスレーションルックアサイドバッファは、前記メモリ管理回路から前記識別子にマッピングされた前記物理メモリアドレスおよび前記仮想メモリアドレスを取出すのに応答して、取出された前記物理メモリアドレスへの前記識別子および前記仮想メモリアドレスのマッピングをキャッシュするようにさらに構成される、請求項３に記載の電子システム。
【請求項５】
少なくとも１つのトランスレーションルックアサイドバッファは複数のトランスレーションルックアサイドバッファを含み、
前記電子システムは、前記複数のトランスレーションルックアサイドバッファから前記メモリにメモリアクセス要求を経路設定するように構成されるスイッチネットワークをさらに備える、請求項１に記載の電子システム。
【請求項６】
前記電子システムは前記処理サブシステム中のキャッシュをさらに備え、前記キャッシュは前記メモリの１つ以上の物理メモリ場所の値を記憶するように構成され、さらに前記電子システムは、
前記キャッシュに記憶される前記値と前記メモリに記憶される値との間の一貫性を維持するように構成されるキャッシュコヒーレント相互接続を備え、
前記キャッシュコヒーレント相互接続は、前記複数のトランスレーションルックアサイドバッファの少なくとも１つからメモリアクセス要求を受けるように構成される、請求項５に記載の電子システム。
【請求項７】
前記プログラマブル論理サブシステムは複数のインターフェイス回路を含み、前記複数のインターフェイス回路の各々は、前記複数の入出力回路の１つ以上から前記少なくとも１つのトランスレーションルックアサイドバッファにメモリアクセス要求を通信するように構成される、請求項１から６のいずれかに記載の電子システム。
【請求項８】
前記複数のインターフェイス回路の少なくとも１つは、前記複数の入出力回路の複数のものから前記少なくとも１つのトランスレーションルックアサイドバッファにメモリアクセス要求を通信するように構成される、請求項７に記載の電子システム。
【請求項９】
処理サブシステムおよびプログラマブル論理サブシステムを有するプログラマブルＩＣを動作させるための方法であって、
プログラムの変数の記憶のためのメモリの場所を参照する仮想メモリアドレスの組を用いて前記処理サブシステム上で前記プログラムを実行することと、
前記プログラマブル論理サブシステムをプログラミングしてコンフィギュレーションデータストリーム中で特定される回路設計を実現することとを備え、前記回路設計は複数の入出力回路を含み、各々の入出力回路は、それぞれの識別子を有し、かつ前記変数のそれぞれ１つにアクセスするように構成され、さらに
メモリ管理回路によって仮想メモリアドレスの前記組を物理メモリアドレスの組にマッピングすることと、
前記メモリ管理回路によって各々それぞれの識別子を前記変数の前記それぞれ１つに対応する前記物理メモリアドレスにマッピングすることと、
前記入出力回路の各々毎に、動作を行なうことによって対応の前記変数にアクセスすることを備え、前記動作は、
前記入出力回路から前記メモリおよびメモリ管理回路に接続される複数のトランスレーションルックアサイドバッファの１つに、前記入出力回路の前記識別子および仮想メモリアドレスを示すメモリアクセス要求を与えることと、
前記複数のトランスレーションルックアサイドバッファの前記１つを用いて、
前記対応の変数が記憶される物理メモリアドレスを前記識別子および前記仮想メモリアドレスに基づいて判定すること、ならびに
判定された前記物理メモリアドレスを含むメモリアクセス要求を前記メモリに与えることとを含み、
前記プログラマブル論理サブシステムの前記プログラミングは、前記プログラマブル論理サブシステムをプログラミングして前記複数のトランスレーションルックアサイドバッファの少なくとも１つを実現することを含む、方法。
【請求項１０】
前記対応の変数が記憶される前記物理メモリアドレスを前記識別子および前記仮想メモリアドレスに基づいて判定することは、
前記識別子を示す、前記複数のトランスレーションルックアサイドバッファの前記１つが受信する第１のメモリアクセス要求について、前記メモリ管理回路から前記識別子にマッピングされた前記物理メモリアドレスおよび前記仮想メモリアドレスを取出し、取出された前記物理メモリアドレスを前記トランスレーションルックアサイドバッファのキャッシュに記憶することと、
前記識別子を示す、前記トランスレーションルックアサイドバッファが受信する第２のメモリアクセス要求について、前記トランスレーションルックアサイドバッファの前記キャッシュから前記識別子にマッピングされた前記物理メモリアドレスおよび前記仮想メモリアドレスを取出すこととを含む、請求項９に記載の方法。
【請求項１１】
前記プログラマブル論理サブシステムをプログラミングして複数のインターフェイス回路を実現することをさらに備え、前記複数のインターフェイス回路の各々は、前記複数の入出力回路の１つ以上から前記複数のトランスレーションルックアサイドバッファのそれぞれ１つにメモリアクセス要求を通信するように構成される、請求項９に記載の方法。
【請求項１２】
前記メモリの前記物理メモリ場所の１つ以上の値をキャッシュに記憶することと、
前記複数のトランスレーションルックアサイドバッファの少なくとも１つから、前記キャッシュに接続されかつ前記キャッシュに記憶された前記値と前記メモリに記憶された値との間の一貫性を維持するように構成されるキャッシュコヒーレント相互接続にメモリアクセス要求を与えることとをさらに備える、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
開示は一般的に集積回路（ＩＣ）に関し、より特定的にはメモリ仮想化に関する。
【背景技術】
【０００２】
背景
プログラマブル集積回路（ＩＣ）は、特定される論理機能を果たすようにプログラミング可能なデバイスである。一種のプログラマブルＩＣであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は典型的にプログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入出力ブロック（ＩＯＢ）、コンフィギュラブル論理ブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）、バスまたは周辺構成要素相互接続エクスプレス（ＰＣＩｅ）およびイーサネット（登録商標）などのネットワークインターフェイスなどを含むことができる、さまざまな種類の論理ブロックを備える。
【０００３】
各々のプログラマブルタイルは、プログラマブル相互接続とプログラマブル論理との両方を含み得る。プログラマブル相互接続は典型的に、プログラマブル相互接続点（ＰＩＰ）によって相互接続される異なる長さの多数の相互接続線を含む。プログラマブル論理は、たとえば、関数発生器、レジスタ、算術論理などを含むことができるプログラマブル素子を用いてユーザ設計の論理を実現する。
【０００４】
プログラマブル相互接続およびプログラマブル論理は典型的に、プログラマブル素子をどのように構成するかを規定する内部コンフィギュレーションメモリセルの中にコンフィギュレーションデータストリームをロードすることによってプログラミングされる。コンフィギュレーションデータは、メモリから（たとえば外部ＰＲＯＭから）読出される、または外部デバイスによってＦＰＧＡに書込まれることができる。そうして、個別のメモリセルの集合的な状態がＦＰＧＡの機能を決める。
【０００５】
あるプログラマブルＩＣは、プログラムコードを実行可能な内蔵プロセッサを含む。プロセッサは、ＩＣの「プログラマブル回路構成」とも総称されるプログラマブル論理回路構成およびプログラマブル相互接続回路構成を含む同じダイの一部として作製可能である。ＩＣ上で利用可能であり得るプログラマブル回路構成の「プログラミング」または「構成」からプロセッサ内でのプログラムコードの実行を区別可能であることを認めるべきである。ＩＣのプログラマブル回路構成をプログラミングするまたは構成するという行為の結果、プログラマブル回路構成内のコンフィギュレーションデータによって特定されるような、異なる物理的回路構成の実現例が得られる。
【０００６】
ある実現例では、プログラマブルＩＣのプロセッサは、メモリ仮想化を利用してより有用なメモリをプログラムに提供し得る。プロセッサ上で実行される各々のプログラムは、たとえばランダムアクセスメモリ（ＲＡＭ）などの連続的なコンピュータメモリの大部分に対するアクセスを有するかのように動作する。プログラムが用いる物理メモリがフラグメント化され得るおよび／またはディスク記憶装置にオーバーフローし得るとしても、プログラムは、連続した一群のメモリアドレスにアクセスしているかのように動作し得る。仮想メモリにより、物理メモリの一部のみへのアクセスしか有しないにも係わらず各々の実行プログラムが任意の所与の時間にホストコンピュータの物理メモリの全体にアクセスするかのように機能できるようにもなる。
【０００７】
仮想メモリの実現例は、プログラムが利用する仮想メモリアドレス（仮想アドレス）を、プログラムの代わりにメモリを読出しメモリに書込むためにハードウェアが用いる物理メモリアドレス（物理アドレス）にプロセッサが変換するのを助けるハードウェアコンポーネントを要件とする。メモリ管理ユニットのタスクは、仮想メモリアドレスを物理メモリアドレスに変換することである。メモリ管理ユニットは、プロセッサが要求するメモリアクセスを扱う。
【発明の概要】
【課題を解決するための手段】
【０００８】
概要
処理サブシステムおよびプログラマブル論理サブシステムを含むシステムが開示される。処理サブシステムは、プログラムの変数の記憶のためのメモリ場所を参照する仮想メモリアドレスの組を用いてプログラムを実行するように構成される。プログラマブル論理サブシステムは、コンフィギュレーションデータストリーム中に特定される回路の組を実現するように構成される。回路の組の各々は複数の入出力（Ｉ／Ｏ）回路を含み、その各々はそれぞれの識別子（ＩＤ）を有しかつ変数のそれぞれ１つにアクセスするように構成される。システムは、メモリと、仮想メモリアドレスの組をメモリの物理メモリアドレスにマッピングするように構成されるメモリ管理回路とも含む。複数のＩ／Ｏ回路の各々毎に、メモリ管理回路は、Ｉ／Ｏ回路のＩＤを、Ｉ／Ｏ回路がアクセスするように構成されるそれぞれの変数の仮想メモリアドレスにマッピングされる物理アドレスにもマッピングする。システムは、Ｉ／Ｏ回路の少なくとも１つに結合される少なくとも１つのトランスレーションルックアサイドバッファ（ＴＬＢ）も含む。ＩＤを示すメモリアクセス要求を受信するのに応答して、ＴＬＢは、ＩＤにマッピングされる物理メモリアドレスを示すメモリアクセス要求をメモリに与えるように構成される。
【０００９】
処理サブシステムおよびプログラマブル論理サブシステムを有するプログラマブルＩＣを動作させるための方法も開示される。プログラムは、プログラムの変数の記憶のためのメモリの場所を参照する仮想メモリアドレスの組を用いて処理サブシステム上で実行される。プログラマブル論理サブシステムは、コンフィギュレーションデータストリーム中に特定される回路の組を実現するようにプログラミングされる。回路の組は複数のＩ／Ｏ回路を含み、その各々はそれぞれのＩＤを有しかつ変数のそれぞれ１つにアクセスするように構成される。Ｉ／Ｏ回路の各々毎に、入出力回路からメモリに接続される複数のＴＬＢの１つに、Ｉ／Ｏ回路のＩＤを示すメモリアクセス要求と仮想メモリアドレスとを与えることによって、対応の変数がアクセスされる。ＴＬＢの１つを用いて、ＩＤおよび仮想メモリアドレスに基づいて、対応の変数が記憶される物理メモリアドレスが判定される。判定された物理メモリアドレスを含むメモリアクセス要求がＴＬＢの１つからメモリに与えられる。
【００１０】
他の特徴は、以下の詳細な説明および請求項を考察することによって認識されるであろう。
【００１１】
以下の詳細な説明の検討によりおよび図面の参照により、開示される方法および回路のさまざまな局面および特徴が明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】１つ以上の実現例に従う、処理サブシステムおよびプログラマブル論理サブシステムについてアドレス変換を行なうように構成される例示的なプログラマブルＩＣを示す図である。
【図２】１つ以上の実現例に従う、プログラマブルＩＣのスタートアップ時の処理サブシステムおよびプログラマブル論理サブシステムを構成するためのプロセスを示す図である。
【図３】１つ以上の実現例に従う、プログラマブル論理サブシステムによって発行されるメモリアクセス要求に含まれる仮想メモリアドレスを変換するためのプロセスを示す図である。
【図４】１つ以上の実現例に従う、処理サブシステムおよびプログラマブル論理サブシステムについてアドレス変換を行なうように構成される別の例示的なプログラマブルＩＣを示す図である。
【図５】１つ以上の実現例に従って構成され得る別のプログラマブルＩＣを示す図である。
【発明を実施するための形態】
【００１３】
図面の詳細な説明
仮想メモリアドレスの使用は、プログラマブルＩＣの処理サブシステムで実行される回路設計のソフトウェア部分とプログラマブル論理サブシステム中で実現される回路設計のハードウェア部分との間でデータを通信するための課題を提示することがある。たとえば、変数が記憶されるメモリアドレスにアクセスすることによって、プログラマブル論理が処理サブシステム中で実行されるプログラムの変数にアクセスし得る。しかしながら、処理サブシステムが仮想メモリアドレスを用いる場合、プログラマブル論理サブシステムが、どの物理アドレスがアクセスすべき変数に対応しているかを判定することが困難なことがある。ある方策では、仮想メモリアドレス変換を行なうために処理サブシステム上でソフトウェアを実行してもよい。しかしながら、この方策は非効率的で、ソフトウェアの複雑さを増大させ、かつソフトウェアの可搬性を低下させてしまう可能性がある。
【００１４】
プログラマブル論理サブシステムが発行するメモリアクセス要求を、アクセスすべきプログラム変数に対応する物理メモリアドレスに効率的にマッピングしかつ当該メモリアクセス要求を経路設定する方法および回路が開示される。ある実現例では、プログラマブルＩＣは、プログラムの変数の記憶のためのメモリ場所を参照する仮想メモリアドレスの組を用いてプログラムを実行するように構成される処理サブシステムを含む。プログラマブルＩＣは、プログラムの１つ以上の変数へのアクセスを介してプログラムと相互動作する、コンフィギュレーションデータストリーム中に特定される回路の組を実現するように構成されるプログラマブル論理サブシステムも含む。たとえば、回路の組は複数の入出力（Ｉ／Ｏ）回路を含んでもよく、その各々はそれぞれの識別子（ＩＤ）を有し、かつプログラム変数のそれぞれ１つを読出すおよび／または修正するように構成される。
【００１５】
プログラマブルＩＣは、処理サブシステムがプログラムを実行するように初期化されると仮想メモリアドレスの組をメモリの物理メモリアドレスにマッピングするように構成されるメモリ管理回路を含む。メモリ管理回路は、Ｉ／Ｏ回路のＩＤの、アクセスすべき変数に対応する基本物理メモリアドレスへのマッピングも行なう。プログラマブルＩＣのその後の動作の際、プログラマブル論理サブシステムからのメモリアクセス要求は、アドレス変換のために１つ以上のトランスレーションルックアサイドバッファ（ＴＬＢ）に与えられる。各々のＴＬＢは、ＩＤに対応する物理メモリアドレスおよび／または受信メモリアクセス要求中に示される仮想メモリアドレスを判定するように構成される。物理メモリアドレスを判定した後、ＴＬＢは、Ｉ／Ｏ回路の代わりに、物理メモリアドレスを示すメモリアクセス要求をメモリに与える。
【００１６】
ある実現例では、ＴＬＢは、ＩＤおよび／または仮想メモリアドレスを示すメモリアクセス要求の第１のインスタンスに応答して、物理メモリアドレスへのＩＤおよび／または仮想メモリアドレスのマッピングを取出すように構成される。たとえば、マッピングはメモリ管理回路から要求され得る。ＴＬＢは、物理メモリアドレスへのＩＤおよび／または仮想メモリアドレスの取出されたマッピングを後の使用のためにキャッシュし得る。アドレスマッピングのキャッシュは、メモリ管理回路が行なわなければならないアドレス変換の負荷を低減するのを助ける。ある他の実現例では、メモリ管理回路は、メモリアドレス要求がプログラマブル論理サブシステムによって生成される前に、スタートアップ時にＴＬＢの各々にアドレスマッピングテーブルを与えるように構成されてもよい。
【００１７】
ＴＬＢはさまざまな回路を用いて実現されてもよい。ある実現例では、ＴＬＢは、コンテンツアドレス指定可能メモリ（ＣＡＭ）を用いてアドレスマッピングエントリをキャッシュしてもよい。メモリアドレスを用いてデータがアクセスされるランダムアクセスメモリ（ＲＡＭ）とは異なり、ＣＡＭは、特定された仮想メモリアドレスおよび／またはＩＤを含むエントリを求めて記憶済データを探索することができる。特定されたＩＤおよび／または仮想メモリアドレスがＣＡＭ内に見つからなければ、物理メモリアドレスをメモリマッピング回路から取出させる例外を生成することができる。
【００１８】
ある実現例では、ＴＬＢは、プログラマブルＩＣ上のプログラマブル論理およびメモリに結合されるハードワイヤード回路である。これに代えてまたはこれに加えて、プログラマブル論理サブシステム中のプログラマブルリソースは、ＴＬＢの一部または全部を形成するようにプログラミングされ得る。プログラマブルリソースを用いてＴＬＢを実現することにより、設計者は、ユーザ設計の要件を満たすように具体的にプログラマブルＩＣを構成できるようになり得る。たとえば、ある適用例については、ごく少数のメモリアクセス要求を生成して処理サブシステムとプログラマブル論理サブシステムとの間でデータを交換してもよい。そのような適用例については、単一のＴＬＢを用いてメモリアクセス要求のためのアドレス変換を行なうことが可能であり得る。ある他の適用例については、より多数のメモリアクセス要求のためのアドレス変換を行なうために多数のＴＬＢが必要となることがある。
【００１９】
ここで図に注目して、図１は、１つ以上の実現例に従う、アドレス変換を行なうように構成される例示的なプログラマブルＩＣを示す。プログラマブルＩＣ１００は、処理サブシステム１１０と、プログラマブル論理サブシステム１２０と、メモリ１９０とを含む。処理サブシステム１１０は、ソフトウェアプログラムの変数の記憶のためのメモリ１９０の場所を参照する仮想メモリアドレスの組を用いてプログラム１１２を実行するように構成され得る。プログラマブル論理サブシステム１２０は、プログラムの変数を記憶するのに用いられるメモリ１９０の物理的場所にアクセスすることによってデータをプログラム１１２と交換するように構成されるいくつかのＩ／Ｏ回路１２４および１２６を含む回路設計１２２を実現するようにも構成されてもよい。
【００２０】
プログラマブルＩＣは、プログラムが用いる仮想メモリアドレスを、プログラム変数が記憶されるメモリ１９０の物理メモリアドレスにマッピングするように構成されるメモリ管理回路１７０を含む。メモリ管理回路１７０は、Ｉ／Ｏ回路１２４および１２６のＩＤを、アクセスすべき変数に対応する物理メモリアドレスにマッピングするようにも構成される。
【００２１】
動作の際、Ｉ／Ｏ回路１２４および１２６は、読出要求または書込要求などのメモリアクセス要求を用いて、メモリ１９０に記憶される変数にアクセスする。メモリアクセス要求は、たとえば、送信元アドレスとしてのＩ／Ｏ回路のＩＤおよび宛先アドレスとしてのプログラム変数に対応する仮想メモリアドレスを示し得る。Ｉ／Ｏ回路１２４および１２６が発行するメモリアクセス要求は、アドレス変換のためにＴＬＢ１４４および１４６に与えられる。この例では、プログラマブルＩＣは、プログラム１１２の実行の際に処理サブシステム１１０が発行するメモリアクセス要求のための仮想メモリアドレスを変換するように構成されるＴＬＢ１４０も含む。
【００２２】
メモリアクセス要求が受信されると、ＴＬＢ１４０、１４４、および１４６は、仮想メモリアドレスに対応する物理メモリアドレスおよび／またはメモリアクセス要求中に示されるＩＤを判定する。たとえば、仮想メモリアドレスに対応する物理メモリアドレスおよび／またはＩＤは、メモリ管理回路から要求され得る。さまざまな実現例では、物理メモリアドレスは、ＩＤ、仮想メモリアドレス、またはその両方の関数として判定され得る。メモリアクセス要求は次に、宛先アドレスとしての判定された物理メモリアドレスを用いてメモリに与えられる。以上示されたように、ＩＤおよび仮想メモリアドレスについて物理メモリアドレスを判定した後に、ＴＬＢは、ＩＤおよび／または仮想メモリアドレスへの物理メモリアドレスのマッピングを示すエントリをキャッシュし得る。キャッシュされたエントリを後で用いて、メモリ管理回路１７０にコンタクトせずに、ＩＤおよび／または仮想メモリアドレスに対応する物理メモリアドレスを判定し得る。
【００２３】
図２は、１つ以上の実現例に従う、プログラマブルＩＣのスタートアップの際の処理サブシステムおよびプログラマブル論理サブシステムを構成するためのプロセスを示す。プログラマブルＩＣがスタートアップ２０２されると、ブロック２０４で、処理サブシステムにおいてオペレーティングシステム（ＯＳ）を起動する。ブロック２０６で、プログラマブル論理サブシステムをプログラミングして、コンフィギュレーションデータストリーム中で特定される回路を実現する。ブロック２０８で、プログラムのインスタンスをＯＳにロードする。プログラムのインスタンスのロードの一部として、実行のためにプログラムが用いる仮想メモリアドレスを物理メモリアドレスにマッピングする。ブロック２１０で、プロセスは、プログラマブル論理サブシステムにおいて実現される回路によってアクセスされるプログラムの変数を判定する。ある実現例では、たとえば、コンフィギュレーションデータストリームは、変数またはプログラマブル論理サブシステム中に形成される回路がアクセスする仮想メモリアドレスを特定し得る。ブロック２１２で、変数にアクセスする回路のＩＤを、変数が記憶される対応の基本物理メモリアドレスにマッピングする。
【００２４】
図３は、１つ以上の実現例に従う、プログラマブル論理サブシステムが発行するメモリアクセス要求中に含まれる仮想メモリアドレスを変換するためのプロセスを示す。プロセスは、ＴＬＢがメモリアクセス要求３０２を受信すると開始される。メモリアクセス要求３０２中に示されるＩＤおよび／または仮想メモリアドレスについての物理メモリアドレスがキャッシュされると、決定ブロック３０４は、プロセスをブロック３０６に向ける。ブロック３０６で、キャッシュされた物理メモリアドレスを宛先アドレスとして用いて、メモリアクセス要求をメモリに与える。そうでない場合、ブロック３０８で、変換要求をメモリ管理回路に送る。メモリ管理回路から一旦物理メモリアドレスを受信すると、プロセスはブロック３１０に進み、仮想メモリアドレスおよびＩＤへの物理メモリアドレスのマッピングをキャッシュする。ブロック３１２で、キャッシュされた物理メモリアドレスを宛先アドレスとして用いて、メモリアクセス要求をメモリに与える。
【００２５】
図４は、１つ以上の実現例に従う、処理サブシステムおよびプログラマブル論理サブシステムについてアドレス変換を行なうように構成される別の例示的なプログラマブルＩＣを示す。プログラマブルＩＣ４００は、ソフトウェアプログラムの変数の記憶のためのメモリ４９０の場所を参照する仮想メモリアドレスの組を用いてユーザプログラム４１４を実行するように構成され得る処理サブシステム４１０を含む。この例に示されるように、処理サブシステム４１０は、プログラム４１４の実行のための１つ以上のプロセッサ４１２を含んでもよい。この例では、処理サブシステム４１０は、プログラム４１４が用いるメモリ場所のローカルコピーを記憶するキャッシュ４１６も含む。ある実現例では、プログラマブルＩＣ４００は、キャッシュ４１６に記憶されたキャッシュ済メモリ場所の値とメモリ４９０に記憶された値との間の一貫性を維持するように構成されるキャッシュコヒーレント相互接続４５０を含む。
【００２６】
プログラマブルＩＣ４００は、回路設計４２４を実現するように構成され得るプログラマブル論理サブシステム４２０も含む。回路設計４２４は、プログラムの変数を記憶するのに用いられるメモリ４９０の場所にアクセスすることによってデータをプログラム４１４と交換するいくつかのＩ／Ｏ回路４２６および４２８を含む。
【００２７】
図１に示されるプログラマブルＩＣと同様に、ＩＣ４００は、プログラムが用いる仮想メモリアドレスを、プログラム変数が記憶されるメモリ４９０の物理メモリアドレスにマッピングするように構成されるメモリ管理回路４７０を含む。メモリ管理回路４７０は、Ｉ／Ｏ回路４２６および４２８のＩＤの、アクセスすべき変数に対応する基本物理メモリアドレスへのマッピングも行なう。動作の際、Ｉ／Ｏ回路４２６および４２８は、読出要求または書込要求などのメモリアクセス要求を用いて、メモリ４９０に記憶される変数にアクセスする。
【００２８】
この例では、プログラマブル論理サブシステム４２０は、インターフェイス回路４３０、４３２、４３４、および４３６の組を含む。インターフェイス回路４３０、４３２、４３４、および４３６の各々は、スイッチングネットワーク４６０または他のデータバスを介してＩ／Ｏ回路４２６および４２８の１つ以上へおよび／またはそれらからデータを通信するように構成され得る。一例として、インターフェイス回路は、ＡＸＩ通信プロトコルに従ってデータをバッファしかつ通信するように構成されるＡＸＩファブリックインターフェイス（ＡＦＩ）であってもよい。
【００２９】
ある実現例では、Ｉ／Ｏ回路４２６および４２８のＩＤは、インターフェイス回路４３０、４３２、４３４、および４３６のうちどれを用いてデータを通信するかも識別してもよい。ある例示的な実現例では、４つの最上位ビット（ｘｘｘｘ）でインターフェイス回路を一意に識別する１０ビットＩＤ（ｘｘｘｘｙｙｙｙｙｙ）を用いてもよい。６つの最下位ビット（ｙｙｙｙｙｙ）は、各々のインターフェイス回路を介して通信するユーザ設計の異なる回路を６４個まで一意に識別し得る。プログラマブルＩＣ中の他の回路を識別するのにもそのようなＩＤを用いてもよい。たとえば、４つの最上位ビット（ｘｘｘｘ）を用いて、処理サブシステム中に含まれるプロセッサ（たとえば４１２）を一意に識別してもよい。６個の最下位ビット（ｙｙｙｙｙｙ）を用いて、プロセッサ上で実行される異なるプログラムインスタンス同士を区別してもよい。
【００３０】
この例では、ＴＬＢ４４２、４４４、および４４６によってインターフェイス回路４３０、４３２、４３４、および４３６がスイッチングネットワークに接続される。図１のＴＬＢ１４４および１４６を参照して前述したように、ＴＬＢ４４２、４４４、および４４６は、インターフェイス回路４３０、４３２、４３４、および４３６から受信したメモリアクセス要求についてアドレス変換を行なうように構成される。アドレス変換は、たとえば、図３に示されるプロセスを用いてＴＬＢおよびメモリ管理回路４７０を用いて行なわれてもよい。アドレス変換を介してメモリアクセス要求について物理メモリアドレスが判定された後、ＴＬＢ４４２、４４４、または４４６は、メモリアクセス要求を修正して、判定された物理メモリアドレスを宛先アドレスとして用いる。ＴＬＢ４４２、４４４、または４４６は、修正されたメモリアドレス要求を（スイッチングネットワーク４６０を介して）メモリ４９０におよび／またはキャッシュコヒーレント相互接続４５０に与えて、所望のメモリ場所にアクセスする。上述のように、ある実現例では、プログラマブル論理サブシステム４２０のプログラマブルリソースを用いて１つ以上のＴＬＢ（たとえば４２２）を実現してもよい。
【００３１】
この例では、プログラマブルＩＣ４００は、プログラマブルＩＣ４００の１つ以上の外部データポートを介してデータを通信するのに用い得る１つ以上の外部Ｉ／Ｏ回路４８０も含む。データは、コアスイッチングネットワーク４６２を介して処理サブシステム４１０および／またはプログラマブル論理サブシステム４２０間で通信され得る。ある実現例では、外部Ｉ／Ｏ回路４８０は、仮想メモリアドレスを示すメモリアクセス要求を用いてプログラムの変数にアクセスすることによって処理サブシステム４１０と通信もし得る。ＴＬＢ４４２、４４４、および４４６を参照して説明したように、ＴＬＢ４４０は、そのようなメモリアクセス要求についてアドレス変換を行なうように構成される。
【００３２】
図５は、１つ以上の実現例に従って構成され得るプログラマブルＩＣ５０２を示す。プログラマブルＩＣはシステムオンチップ（ＳＯＣ）とも称されることがあり、これは、処理サブシステム５１０およびプログラマブル論理サブシステム５３０を含む。処理サブシステム５１０は、ユーザプログラムの実行を介してユーザ設計のソフトウェア部分を実現するようにプログラミングされ得る。プログラムはコンフィギュレーションデータストリームの一部として特定されてもよく、またはオンチップもしくはオフチップデータ記憶デバイスから取出されてもよい。処理サブシステム５１０は、１つ以上のソフトウェアプログラムを実行するためのさまざまな回路５１２、５１４、５１６、および５１８を含んでもよい。回路５１２、５１４、５１６、および５１８は、たとえば、１つ以上のプロセッサコア、浮動小数点ユニット（ＦＰＵ）、割込処理ユニット、オンチップメモリ、メモリキャッシュ、および／またはキャッシュコヒーレント相互接続を含んでもよい。
【００３３】
プログラマブルＩＣ５０２のプログラマブル論理サブシステム５３０は、ユーザ設計のハードウェア部分を実現するようにプログラミングされてもよい。たとえば、プログラマブル論理サブシステムは、コンフィギュレーションデータストリーム中に特定される回路の組を実現するようにプログラミングされ得るいくつかのプログラマブルリソース５３２を含んでもよい。プログラマブルリソース５３２は、プログラマブル相互接続回路と、プログラマブル論理回路と、コンフィギュレーションメモリセルとを含む。プログラマブル論理は、たとえば、関数生成器、レジスタ、算術論理などを含む可能性があるプログラマブル素子を用いてユーザ設計の論理を実現する。プログラマブル相互接続回路は、プログラマブル相互接続点（ＰＩＰ）によって相互接続される異なる長さの多数の相互接続線を含んでもよい。
【００３４】
プログラマブルリソース５３２は、コンフィギュレーションメモリセルにコンフィギュレーションデータストリームをロードすることによってプログラミングされてもよく、これにより、プログラマブル相互接続回路およびプログラマブル論理回路がどのように構成されるかが規定される。次に個別のメモリセルの集合的な状態によってプログラマブルリソース５３２の機能が決まる。コンフィギュレーションデータは、外部デバイスによってメモリから（たとえば外部ＰＲＯＭから）読出され得る、またはプログラマブルＩＣ５０２中に書込まれ得る。ある実現例では、プログラマブル論理サブシステム５３０中に含まれるコンフィギュレーションコントローラ５３４がコンフィギュレーションデータをコンフィギュレーションメモリセル中にロードし得る。ある他の実現例では、プロセッササブシステム５１０が実行するスタートアッププロセスによってコンフィギュレーションデータをコンフィギュレーションメモリセル中にロードしてもよい。
【００３５】
プログラマブルＩＣ５０２は、プログラマブル論理サブシステム５３０内に実現される回路構成に処理サブシステム５１０を相互接続するためのさまざまな回路を含んでもよい。この例では、プログラマブルＩＣ５０２は、処理サブシステム５１０およびプログラマブル論理サブシステム５３０のさまざまなデータポート同士の間でデータ信号を経路設定することができるコアスイッチ５２６を含む。コアスイッチ５２６は、プログラマブル論理サブシステム５３０または処理サブシステム５１０のいずれかと内部データバスなどのプログラマブルＩＣの他のさまざまな回路との間でもデータ信号を経路設定してもよい。これに代えてまたはこれに加えて、処理サブシステム５１０は、−コアスイッチ５２６をバイパスして−プログラマブル論理サブシステムに直接に接続するインターフェイスを含んでもよい。そのようなインターフェイスは、たとえば、ＡＲＭによって公開されるようなＡＭＢＡ  ＡＸＩプロトコル仕様（ＡＸＩ）を用いて実現されてもよい。
【００３６】
ある実現例では、処理サブシステム５１０およびプログラマブル論理サブシステム５３０は、メモリコントローラ５２１を介してオンチップメモリ５２２またはオフチップメモリ（図示せず）のメモリ場所も読出してもよいまたはこれに書込んでもよい。１６ビット、３２ビット、ＥＣＣ付加１６ビットなどを問わずデュアルデータレート（ＤＤＲ）２、ＤＤＲ３、低出力（ＬＰ）ＤＤＲ２型メモリを含むがそれらに限定されない１つ以上の異なる種類のメモリ回路と通信するように、メモリコントローラ５２１を実現することができる。メモリコントローラ５２１が通信可能な異なるメモリ種類の一覧は例示の目的のためにのみ与えられ、限定として意図されないまたは網羅的であることを意図されない。図５に示されるように、プログラマブルＩＣ５０２は、メモリ管理ユニット５２０と、サブシステム５１０および５３０が用いる仮想メモリアドレスを、具体的なメモリ場所にアクセスするのにメモリコントローラ５２１が用いる物理メモリアドレスに変換するためのトランスレーションルックアサイドバッファ５２４とを含み得る。
【００３７】
プログラマブルＩＣは、外部回路とのデータの通信のための入出力（Ｉ／Ｏ）サブシステム５５０を含んでもよい。Ｉ／Ｏサブシステム５５０は、たとえば、フラッシュメモリ型Ｉ／Ｏデバイス、高性能Ｉ／Ｏデバイス、低性能インターフェイス、デバッグＩ／Ｏデバイス、および／もしくはＲＡＭ  Ｉ／Ｏデバイスを含むさまざまな種類のＩ／Ｏデバイスまたはインターフェイスを含んでもよい。
【００３８】
Ｉ／Ｏサブシステム５５０は、５６０Ａおよび５６０Ｂとして図示される１つ以上のフラッシュメモリインターフェイス５６０を含んでもよい。たとえば、フラッシュメモリインターフェイス５６０の１つ以上を４ビット通信用に構成されるクワッドシリアルペリフェラルインターフェイス（ＱＳＰＩ）として実現することができる。フラッシュメモリインターフェイス５６０の１つ以上を並列８ビットＮＯＲ／ＳＲＡＭ型インターフェイスとして実現することができる。フラッシュメモリインターフェイス５６０の１つ以上を、８ビットおよび／または１６ビット通信用に構成されるＮＡＮＤインターフェイスとして実現することができる。記載の特定のインターフェイスは限定ではなく例示の目的のために与えられることを認めるべきである。異なるビット幅を有する他のインターフェイスを用いることができる。
【００３９】
Ｉ／Ｏサブシステム５５０は、メモリインターフェイス５６０よりも高レベルの性能を提供するインターフェイス５６２の１つ以上を含むことができる。インターフェイス５６２Ａ−５６２Ｃの各々はそれぞれ、ＤＭＡコントローラ５６４Ａ−５６４Ｃに結合可能である。たとえば、インターフェイス５６２の１つ以上を、ユニバーサルシリアルバス（ＵＳＢ）型インターフェイスとして実現可能である。インターフェイス５６２の１つ以上を、ギガビットイーサネット（登録商標）型インターフェイスとして実現可能である。インターフェイス５６２の１つ以上を、セキュアデジタル（ＳＤ）型インターフェイスとして実現可能である。
【００４０】
Ｉ／Ｏサブシステム５５０は、インターフェイス５６２よりも低レベルの性能を提供する、インターフェイス５６６Ａ−５６６Ｄなどの１つ以上のインターフェイス５６６も含んでもよい。たとえば、インターフェイス５６６の１つ以上を汎用Ｉ／Ｏ（ＧＰＩＯ）型インターフェイスとして実現可能である。インターフェイス５６６の１つ以上を万能非同期送受信機（ＵＡＲＴ）型インターフェイスとして実現可能である。インターフェイス５６６の１つ以上をシリアルペリフェラルインターフェイス（ＳＰＩ）バス型インターフェイスの形態で実現可能である。インターフェイス５６６の１つ以上をコントローラエリアネットワーク（ＣＡＮ）型インターフェイスおよび／またはＩ2Ｃ型インターフェイスの形態で実現可能である。インターフェイス５６６の１つ以上をトリプルタイマカウンタ（ＴＴＣ）および／またはウォッチドッグタイマ（ＷＤＴ）型インターフェイスの形態でも実現可能である。
【００４１】
Ｉ／Ｏサブシステム５５０は、プロセッサＪＴＡＧ（ＰＪＴＡＧ）インターフェイス５６８Ａおよびトレースインターフェイス５６８Ｂなどの１つ以上のデバッグインターフェイス５６８を含むことができる。ＰＪＴＡＧインターフェイス５６８Ａは、プログラマブルＩＣ５０２向けの外部デバッグインターフェイスを提供することができる。トレースインターフェイス５６８Ｂは、処理サブシステム５１０またはプログラマブル論理サブシステム５３０から、たとえばトレースなどのデバッグ情報を受信するポートを提供することができる。
【００４２】
示されるように、インターフェイス５６０、５６２、５６６、および５６８の各々をマルチプレクサ５７０に結合することができる。マルチプレクサ５７０は、プログラマブルＩＣ５０２の外部ピンに直接に経路設定または結合することができる複数の出力を提供する。それはたとえばパッケージのボールであり、その中にプログラマブルＩＣ５０２が配設される。たとえば、プログラマブルＩＣ５０２のＩ／Ｏピンをインターフェイス５６０、５６２、５６６、および５６８の間で共有することができる。ユーザは、インターフェイス５６０−５６８のうちどれを用いるか、およびしたがってマルチプレクサ５７０を介してプログラマブルＩＣ５０２のＩ／Ｏピンに結合するかを選択するように、コンフィギュレーションデータストリームを介してマルチプレクサ５７０を構成することができる。Ｉ／Ｏサブシステム５５０は、インターフェイス５６２−５６８をプログラマブル論理サブシステムのプログラマブル論理回路に接続するファブリックマルチプレクサＩ／Ｏ（ＦＭＩＯ）インターフェイス（図示せず）も含んでもよい。これに加えてまたはこれに代えて、プログラマブル論理内に１つ以上のＩ／Ｏ回路を実現するようにプログラマブル論理サブシステム５３０を構成することができる。ある実現例では、プログラマブルＩＣ５０２は、電力および／または安全管理のためのさまざまな回路を有するサブシステム５４０も含んでもよい。たとえば、サブシステム５４０は、プログラマブルＩＣ５０２のさまざまなサブシステムに電力供給するのに用いられる１つ以上の電圧ドメインをモニタしかつ維持するように構成される電力管理ユニット５４６を含んでもよい。ある実現例では、電力管理ユニット５４６は、使用中のサブシステムへの電力を不能化することなくアイドル時に電力消費を低減するように個別のサブシステムの電力を不能化してもよい。
【００４３】
サブシステム５４０は、正常な動作を確実にするようにサブシステムの状況をモニタする安全回路も含み得る。たとえば、サブシステム５４０は、（たとえばステータスレジスタ５４４に示されるような）さまざまなサブシステムの状況をモニタするように構成される１つ以上のリアルタイムプロセッサ５４２を含んでもよい。リアルタイムプロセッサ５４２は、エラーを検出するのに応答していくつかのタスクを行なうように構成されてもよい。たとえば、あるエラーについては、リアルタイムプロセッサ５４２は、エラーの検出に応答して警告を生成してもよい。別の例として、リアルタイムプロセッサ５４２はサブシステムをリセットしてサブシステムを回復させて動作を訂正するよう試みてもよい。サブシステム５４０は、さまざまなサブシステムを相互接続するのに用い得るスイッチネットワーク５４８を含む。たとえば、スイッチネットワーク５４８は、さまざまなサブシステム５１０、５３０、および５４０をＩ／Ｏサブシステム５５０のさまざまなインターフェイスに接続するように構成されてもよい。ある適用例では、スイッチネットワーク５４８は、モニタすべきサブシステムからリアルタイムプロセッサ５４２を分離するようにも用いられてもよい。そのような分離は、他のサブシステムで発生するエラーがリアルタイムプロセッサ５４２に影響を及ぼさないことを確実にするために、あるアプリケーション標準（たとえばＩＥＣ−６１５０８ＳＩＬ３またはＩＳＯ−２６２６２標準）によって要件とされることがある。
【００４４】
ある付加的な例が提供される。
一例では、処理サブシステムおよびプログラマブル論理サブシステムを含む電子システムが開示される。
【００４５】
そのような電子システムは、プログラムの変数の記憶のためのメモリ場所を参照する仮想メモリアドレスの組を用いてプログラムを実行するように構成される処理サブシステムと、コンフィギュレーションデータストリーム中で特定される回路の組を実現するように構成されるプログラマブル論理サブシステムとを含んでもよく、回路の組の各々は複数の入出力回路を含み、各々の入出力回路はそれぞれの識別子（ＩＤ）を有しかつ変数のそれぞれ１つにアクセスするように構成され、さらに電子システムは、メモリと、メモリ管理回路とを含んでもよく、メモリ管理回路は、仮想メモリアドレスの組をメモリの物理メモリアドレスにマッピングし、かつ複数の入出力回路の各々毎に、入出力回路がアクセスするように構成されるそれぞれの変数の仮想メモリアドレスにマッピングされる物理メモリアドレスに入出力回路のＩＤをマッピングするように構成され、さらに電子システムは、複数の入出力回路の少なくとも１つの入出力回路に結合される少なくとも１つのトランスレーションルックアサイドバッファ（ＴＬＢ）を含んでもよく、少なくとも１つのトランスレーションルックアサイドバッファは、ＩＤを示すメモリアクセス要求を受信するのに応答して、ＩＤにマッピングされる物理メモリアドレスを示すメモリアクセス要求をメモリに与えるように構成される。
【００４６】
あるそのような電子システムでは、少なくとも１つのＴＬＢは、１つ以上のＩＤについて、物理メモリアドレスへのＩＤのマッピングを記憶するように構成されるキャッシュを含み、少なくとも１つのＴＬＢは、ＩＤを示すメモリアクセス要求およびキャッシュに記憶される仮想メモリアドレスを受信するのに応答して、キャッシュからＩＤにマッピングされる物理メモリアドレスおよび仮想メモリアドレスを取出すようにさらに構成される。
【００４７】
あるそのような電子システムでは、少なくとも１つのＴＬＢは、ＩＤを示すメモリアクセス要求およびキャッシュに含まれない仮想メモリアドレスを受信するのに応答して、メモリ管理回路からＩＤにマッピングされる物理メモリアドレスおよび仮想メモリアドレスを取出すようにさらに構成される。
【００４８】
あるそのような電子システムでは、少なくとも１つのＴＬＢは、メモリ管理回路からＩＤにマッピングされた物理メモリアドレスおよび仮想メモリアドレスを取出すのに応答して、取出された物理メモリアドレスへのＩＤおよび仮想メモリアドレスのマッピングをキャッシュするようにさらに構成される。
【００４９】
あるそのような電子システムでは、少なくとも１つのＴＬＢは、プログラマブル論理サブシステムのプログラマブル回路を用いて実現される。
【００５０】
あるそのような電子システムでは、少なくとも１つのＴＬＢは複数のＴＬＢを含み、電子システムは、複数のＴＬＢからメモリへメモリアクセス要求を経路設定するように構成されるスイッチネットワークをさらに備える。
【００５１】
あるそのような電子システムは処理サブシステム中のキャッシュをさらに含んでもよく、キャッシュは、メモリの１つ以上の物理メモリ場所の値を記憶するように構成され、さらに電子システムは、キャッシュに記憶される値とメモリに記憶される値との間の一貫性を維持するように構成されるキャッシュコヒーレント相互接続を含んでもよく、キャッシュコヒーレント相互接続は、複数のＴＬＢの少なくとも１つからメモリアクセス要求を受信するように構成される。
【００５２】
あるそのような電子システムでは、プログラマブル論理サブシステムは複数のインターフェイス回路を含み、複数のインターフェイス回路の各々は、複数の入出力回路の１つ以上から少なくとも１つのＴＬＢにメモリアクセス要求を通信するように構成される。
【００５３】
あるそのような電子システムでは、複数のインターフェイス回路の少なくとも１つは、複数の入出力回路の複数のものから少なくとも１つのＴＬＢにメモリアクセス要求を通信するように構成される。
【００５４】
あるそのような電子システムでは、複数の入出力回路の各々毎に、ＩＤは、入出力回路から少なくとも１つのＴＬＢにメモリアクセス要求を通信する複数のインターフェイス回路の１つを一意に識別するビットの第１のサブセットを含む。
【００５５】
あるそのような電子システムでは、複数の入出力回路の各々毎に、ＩＤは、複数のインターフェイス回路の１つを介してメモリアクセス要求を通信する複数の入出力回路のサブセット内の入出力回路を一意に識別するビットの第２のサブセットを含む。
【００５６】
処理サブシステムおよびプログラマブル論理サブシステムを有するプログラマブルＩＣを動作させるための方法も開示される。
【００５７】
処理サブシステムおよびプログラマブル論理サブシステムを有するプログラマブルＩＣを動作させるためのそのような方法は、プログラムの変数の記憶のためのメモリの場所を参照する仮想メモリアドレスの組を用いて処理サブシステム上でプログラムを実行することと、プログラマブル論理サブシステムをプログラミングしてコンフィギュレーションデータストリーム中で特定される回路の組を実現することとを含んでもよく、回路の組は複数の入出力回路を含み、各々の入出力回路は、それぞれの識別子（ＩＤ）を有し、かつ変数のそれぞれ１つにアクセスするように構成され、さらに方法は、入出力回路の各々毎に、動作を行なうことによって対応の変数にアクセスすることを含んでもよく、動作は、入出力回路のＩＤおよび仮想メモリアドレスを示すメモリアクセス要求を、入出力回路からメモリに接続される複数のトランスレーションルックアサイドバッファ（ＴＬＢ）の１つに与えることと、複数のＴＬＢのうち１つを用いて、対応の変数が記憶される物理メモリアドレスをＩＤおよび仮想メモリアドレスに基づいて判定することと、判定された物理メモリアドレスを含むメモリアクセス要求をメモリに与えることとを含む。
【００５８】
あるそのような方法は、メモリ管理回路を用いることと、仮想メモリアドレスの組を物理メモリアドレスの組にマッピングすることと、入出力回路がアクセスするように構成される変数に対応する仮想メモリアドレスによってマッピングされる物理メモリアドレスにＩＤをマッピングすることとをさらに含んでもよい。
【００５９】
あるそのような方法では、対応の変数が記憶される物理メモリアドレスをＩＤおよび仮想メモリアドレスに基づいて判定することは、ＩＤを示す、複数のＴＬＢの１つが受信する第１のメモリアクセス要求について、メモリ管理回路からＩＤに対応する物理メモリアドレスおよび仮想メモリアドレスを取出すことと、取出された物理メモリアドレスをＴＬＢのキャッシュに記憶することと、ＩＤを示す、ＴＬＢが受信する第２のメモリアクセス要求について、ＴＬＢのキャッシュからＩＤに対応する物理メモリアドレスおよび仮想メモリアドレスを取出すこととを含む。
【００６０】
あるそのような方法では、プログラマブル論理サブシステムのプログラミングは、プログラマブル論理サブシステムをプログラミングして複数のＴＬＢの少なくとも１つを実現することを含む。
【００６１】
あるそのような方法は、スイッチネットワークを用いて、複数のＴＬＢからメモリへメモリアクセス要求を経路設定することをさらに含んでもよい。
【００６２】
あるそのような方法は、プログラマブル論理サブシステムをプログラミングして複数のインターフェイス回路を実現することをさらに含んでもよく、複数のインターフェイス回路の各々は、複数の入出力回路の１つ以上から複数のＴＬＢのそれぞれ１つにメモリアクセス要求を通信するように構成される。
【００６３】
あるそのような方法では、複数の入出力回路の各々毎に、ＩＤは、入出力回路から複数のＴＬＢのそれぞれ１つにメモリアクセス要求を通信する複数のインターフェイス回路の１つを一意に識別するビットの第１のサブセットを含む。
【００６４】
あるそのような方法では、複数の入出力回路の各々毎に、ＩＤは、複数のインターフェイス回路の１つを介してメモリアクセス要求を通信する複数の入出力回路のサブセット内の入出力回路を一意に識別するビットの第２のサブセットを含む。
【００６５】
あるそのような方法は、メモリの物理メモリ場所の１つ以上の値をキャッシュに記憶することと、複数のＴＬＢの少なくとも１つから、キャッシュに接続されかつキャッシュに記憶された値とメモリに記憶された値との間の一貫性を維持するように構成されるキャッシュコヒーレント相互接続にメモリアクセス要求を与えることとをさらに含んでもよい。
【００６６】
方法および回路はさまざまなシステムおよび適用例に適用可能であると考えられる。明細書の考察から、当業者には他の局面および特徴が明らかであろう。たとえば、ある場合、局面および特徴は個別の図に記載されることがあるが、組合せが明示的に示されなくてもまたは組合せとして明示的に記載されなくても、１つの図からの特徴を別の図の特徴と組合せられることが認められるであろう。明細書および図面は例示のみとして考えられ、発明の真の範囲は以下の請求項によって示されることが意図される。
【図１】
0006660374.tif 000002
【図２】
0006660374.tif 000003
【図３】
0006660374.tif 000004
【図４】
0006660374.tif 000005
【図５】
0006660374.tif 000006