(57)【特許請求の範囲】
【請求項１】
仮想メモリを共有する複数の異種デバイスを有するマルチコアシステムにおける、効率的なＴＬＢシュートダウンの方法であって、
前記マルチコアシステムにおける前記複数の異種デバイスのうちの１以上の要求デバイスから、対応する１以上のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステート更新リクエストを受信する段階と、
前記１以上のＰＡＳＩＤステート更新リクエストのうちの第１のＰＡＳＩＤステート更新リクエストに対応するＰＡＳＩＤステートのアトミック修正を実行する段階であって、前記ＰＡＳＩＤステートのエントリがレイジー無効化ステートを含む段階と、
前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティブにされる前にシステムページテーブルと同期する必要があるかを判断すべく、前記対応するＰＡＳＩＤステートのレイジー無効化チェックを実行する段階と、
前記１以上のＰＡＳＩＤステート更新リクエストのうちの前記第１のＰＡＳＩＤステート更新リクエストに対応する要求デバイスに、ＰＡＳＩＤステート更新応答を送信する段階と、
前記マルチコアシステムにおけるオペレーティングシステムからのＴＬＢシュートダウンを処理する段階と、
を備え、
前記ＴＬＢシュートダウンを処理する段階は、
ＰＡＳＩＤステートエントリを読み出す段階と、
前記ＰＡＳＩＤステートエントリにおいて、要求デバイスからのＰＡＳＩＤステート更新リクエストによりアクティベートされたＰＡＳＩＤステートの数を示すアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにレイジー無効化フィールドを設定する段階と、を有する方法。
【請求項２】
前記ＴＬＢシュートダウンを処理する段階は、ＩＯＴＬＢエントリを無効化する段階を有する、請求項１に記載の方法。
【請求項３】
前記ＴＬＢシュートダウンを処理する段階は、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化する段階を備える、請求項１または２に記載の方法。
【請求項４】
前記ＴＬＢシュートダウンを処理する段階は、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、ＩＯＴＬＢエントリを無効化する段階と、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化する段階と、を有する請求項１から３の何れか１項に記載の方法。
【請求項５】
前記ＰＡＳＩＤステートエントリに前記レイジー無効化フィールドを設定する段階は、ロックド比較交換命令（locked compare-and-exchange instruction）およびアトミック読み出し／修正／書き込みの少なくとも１つであるオペレーションを使用して実行される、請求項１から４の何れか１項に記載の方法。
【請求項６】
前記ＰＡＳＩＤステートの前記アトミック修正を実行する段階は、
前記第１のＰＡＳＩＤステート更新リクエストが、非アクティベーション更新を示す場合には、アクティブリファレンスカウントをデクリメントする段階を有する、請求項１から５の何れか一項に記載の方法。
【請求項７】
前記ＰＡＳＩＤステートの前記アトミック修正を実行する段階は、
レイジー無効化フィールドを含むＰＡＳＩＤステートエントリを読み出す段階と、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントする段階と、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化フィールドをクリアする段階と、を有する、請求項１から４の何れか一項に記載の方法。
【請求項８】
読み出された前記ＰＡＳＩＤステートエントリに含まれる前記レイジー無効化フィールドが設定された場合には、ＩＯＴＬＢエントリを無効化する段階と、
読み出された前記ＰＡＳＩＤステートエントリに含まれる前記レイジー無効化フィールドが設定され、前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記第１のＰＡＳＩＤステート更新リクエストに対してデバイス同期フラグを設定する段階とを更に備える、請求項７に記載の方法。
【請求項９】
複数の仮想アドレス変換エントリを格納するＴＬＢと、
前記ＴＬＢに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のＰＡＳＩＤステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、マルチコアシステムにおける複数の異種デバイスのうちの一のデバイスから、第１のＰＡＳＩＤステート更新リクエストを受信すると、第１のＰＡＳＩＤステートエントリのアトミック修正を実行し、前記第１のＰＡＳＩＤステートエントリの前記レイジー無効化ステートを読み出して、前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスＴＬＢエントリを同期するべく、前記一のデバイスに、ＰＡＳＩＤステート更新応答を送信し、
前記メモリ管理ユニットは更に、
前記マルチコアシステムにおけるオペレーティングシステムからのＴＬＢシュートダウンを処理し、
前記ＴＬＢシュートダウンを処理することは、
ＰＡＳＩＤステートエントリを読み出すこと、および、
前記ＰＡＳＩＤステートエントリにおいて、要求デバイスからのＰＡＳＩＤステート更新リクエストによりアクティベートされたＰＡＳＩＤステートの数を示すアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにレイジー無効化フィールドを設定すること、を含む、装置。
【請求項１０】
前記第１のＰＡＳＩＤステートエントリの前記アトミック修正は、
レイジー無効化ステートを含む前記第１のＰＡＳＩＤステートエントリを読み出すこと、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントすること、および、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化ステートをクリアすること、を含む、請求項９に記載の装置。
【請求項１１】
前記メモリ管理ユニットは更に、少なくとも前記レイジー無効化ステートが読み出されると、
前記第１のＰＡＳＩＤステートエントリに対応するＴＬＢ仮想アドレス変換エントリを無効化し、および、
前記一のデバイスに送信される前記ＰＡＳＩＤステート更新応答に対する同期フラグを設定する、請求項９または１０に記載の装置。
【請求項１２】
前記ＴＬＢシュートダウンを処理することは、
ＴＬＢ仮想アドレス変換エントリを無効化することを含む、請求項９から１１の何れか１項に記載の装置。
【請求項１３】
前記ＴＬＢシュートダウンを処理することは、
前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化することを含む、請求項９から１１の何れか１項に記載の装置。
【請求項１４】
前記ＴＬＢシュートダウンを処理することは、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記ＴＬＢにおける仮想アドレス変換エントリを無効化すること、および、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、請求項９から１３の何れか１項に記載の装置。
【請求項１５】
前記ＰＡＳＩＤステートエントリに前記レイジー無効化フィールドを設定することは、ロックド比較交換命令（locked compare-and-exchange instruction）およびアトミック読み出し／修正／書き込みの少なくとも１つであるオペレーションを使用して実行される、請求項９から１３の何れか１項に記載の装置。
【請求項１６】
マルチコアプロセッサであって、
第１の複数の同種処理コアと、
異種処理デバイスと、
複数の仮想アドレス変換エントリを格納するＴＬＢと、
前記ＴＬＢに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のＰＡＳＩＤステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、マルチコアプロセッサにおける複数の異種デバイスのうちの一のデバイスから、第１のＰＡＳＩＤステート更新リクエストを受信すると、第１のＰＡＳＩＤステートエントリのアトミック修正を実行し、前記第１のＰＡＳＩＤステートエントリの前記レイジー無効化ステートを読み出して、前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスＴＬＢエントリを同期するべく、前記一のデバイスに、ＰＡＳＩＤステート更新応答を送信し、
前記メモリ管理ユニットは更に、
オペレーティングシステムからのＴＬＢシュートダウンを処理し、
前記ＴＬＢシュートダウンを処理することは、
ＰＡＳＩＤステートエントリを読み出すこと、および、
前記ＰＡＳＩＤステートエントリにおいて、要求デバイスからのＰＡＳＩＤステート更新リクエストによりアクティベートされたＰＡＳＩＤステートの数を示すアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにレイジー無効化フィールドを設定すること、を含む、マルチコアプロセッサ。
【請求項１７】
前記第１のＰＡＳＩＤステートエントリの前記アトミック修正は、
レイジー無効化ステートを含む前記第１のＰＡＳＩＤステートエントリを読み出すこと、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントすること、および、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化ステートをクリアすること、を含む、請求項１６に記載のマルチコアプロセッサ。
【請求項１８】
前記ＴＬＢシュートダウンを処理することは、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記ＴＬＢにおける仮想アドレス変換エントリを無効化すること、および、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、請求項１６または１７に記載のマルチコアプロセッサ。
【請求項１９】
前記ＰＡＳＩＤステートエントリに前記レイジー無効化フィールドを設定することは、ロックド比較交換命令（locked compare-and-exchange instruction）およびアトミック読み出し／修正／書き込みの少なくとも１つであるオペレーションを使用して実行される、請求項１６または１７に記載のマルチコアプロセッサ。
【請求項２０】
マルチコアシステムであって、
複数の仮想アドレス変換エントリを含む複数のページテーブルを格納するメモリと、
第１の複数の同種処理コアと、
異種処理デバイスと、
前記複数の仮想アドレス変換エントリを格納するＴＬＢと、
前記ＴＬＢに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のＰＡＳＩＤステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、前記マルチコアシステムにおける複数の異種デバイスのうちの一のデバイスから、第１のＰＡＳＩＤステート更新リクエストを受信すると、第１のＰＡＳＩＤステートエントリのアトミック修正を実行し、前記第１のＰＡＳＩＤステートエントリの前記レイジー無効化ステートを読み出して、前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスＴＬＢエントリを同期するべく、前記一のデバイスに、ＰＡＳＩＤステート更新応答を送信し、
前記メモリ管理ユニットは更に、
前記マルチコアシステムにおけるオペレーティングシステムからのＴＬＢシュートダウンを処理し、
前記ＴＬＢシュートダウンを処理することは、
ＰＡＳＩＤステートエントリを読み出し、
前記ＰＡＳＩＤステートエントリにおいて、要求デバイスからのＰＡＳＩＤステート更新リクエストによりアクティベートされたＰＡＳＩＤステートの数を示すアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにおけるレイジー無効化フィールドを設定することを含む、マルチコアシステム。
【請求項２１】
前記ＴＬＢシュートダウンを処理することは、
前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、請求項２０に記載のマルチコアシステム。
【請求項２２】
前記ＴＬＢシュートダウンを処理することは、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記ＴＬＢにおける仮想アドレス変換エントリを無効化すること、および、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、請求項２０または２１に記載のマルチコアシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、コンピュータおよび／または通信の分野に関する。より詳細には、マルチコアシステムにおいて、仮想メモリを共有する異種デバイスのための、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）の効率的なシュートダウンに関する。
【背景技術】
【０００２】
現代のプロセッサは多くの場合、キャッシュを設けて、命令および／またはデータのコピーを、小さく速いメモリに、最短アクセスレイテンシで提供することにより、外部メモリのアクセス性能を向上させている。更に、このようなキャッシュは、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）のようなデバイスを使用して、仮想アドレスから物理アドレスへの変更のサポートを提供してもよく、例えば、ページ化仮想メモリシステムにおけるシステムページテーブルからの、仮想−物理アドレス変換をキャッシュする。ＴＬＢにおいて、一仮想アドレスと、ＴＬＢに格納されている変換の一つとが一致するイベントは、ＴＬＢヒットと称され、読み出された物理アドレスを使用して、キャッシュまたはメインメモリへのアクセスをより速く行うことが可能となる。ＴＬＢにおいて、一仮想アドレスと、ＴＬＢに格納されている変換の一つとが一致しないイベントは、ＴＬＢミスまたはページミスと称され、メモリの対応するページテーブルを参照することにより、変換が続けられる。
【０００３】
典型的なマルチコアプロセッサまたはマルチコア処理システムは、様々な同種または異種環境の処理デバイスを有してもよく、例えば、幾つかの同種プロセッサコアを、１以上の異種のグラフィックスプロセッサまたはビデオプロセッサ等と共に有してもよい。これら同種または異種の処理デバイスは、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層（hierachies）およびＴＬＢを有してもよく、上記したように、ページ化された仮想メモリシステムにおけるシステムページテーブルから、仮想−物理アドレス変換をキャッシュする。現代のプロセッサにおいて、同種プロセッサコアはまた、ハードウェアにページミスハンドラ（ＰＭＨ）を有して、システムページテーブルのページウォーク（page walk）を高速に行ってもよい。これら同種プロセッサコアのうちの１つが、物理メモリにおいていずれにもマッピングされていない仮想メモリにおけるページにアクセスしようとすると、メモリアクセスはページフォルト（page fault）となり、オペレーティングシステムは、この問題を解決しなくてはならなくなる。
【０００４】
グラフィックスプロセッサのような異種処理デバイスも、仮想−物理アドレス変換を実行するためにＴＬＢのようなメカニズムを有してもよいが、多くの場合、同種プロセッサコアで実行されるソフトウェアが存在し、異種処理デバイス間で、ページ化された仮想メモリシステムを限定的であるが共有するために、ページテーブル等を設定する異種処理デバイスのドライバと通信を行ってもよい。しかしながら、同種プロセッサコアとは異なり、これらのマシーンの能力は限られている場合があり、例えば、ページフォルトを扱う能力を有さない場合がある。したがって、これら異種処理デバイス間で共有されるページは、メモリにロックダウンする必要があり、要求に応じて、オペレーティングシステムが、ディスクからおよびディスクにこの共有されるページをページング（paging）するのを防ぐ。この場合、サポート可能なアプリケーションの数が限られる、または、必要となる物理的メモリの量が増える。また、異種処理デバイス間でページ化された仮想メモリを共有するべく、ページテーブル等を設定するのに、同種プロセッサで実行されるソフトウェアによって、パフォーマンスオーバーヘッドが生じ、異種処理デバイスを使用する効果が低減する可能性がある。
【０００５】
同種プロセッサコアで実行されるソフトウェア（例えば、オペレーティングシステム）が、ページテーブルに変更を行うと、システム内の様々なＴＬＢにキャッシュされた対応する変換が無効化する必要がある。これは、ＴＬＢシュートダウンとして知られている。１つの簡単な解決方法は、システム内の全てのデバイスに、無効化のメッセージをブロードキャストすることであるが、この方法では、望ましくない通信の混雑状態が発生する可能性がある。更に、異種処理デバイスのために設定されたページテーブルは、同種プロセッサコアで使用されるページテーブルとは同じ出ない場合があり、異種処理デバイスで使用されるメカニズムは、自身で、ＴＬＢエントリを無効化する能力および新規のページテーブル情報を回復する能力が限定されている場合がある。
【０００６】
望ましくない通信の混雑を防ぐために、オペレーティングシステムは、レイジー無効化（lazy invalidation）スキームの形式を使用していた。オペレーティングシステムは、同種プロセッサコアで実行され、様々な同種プロセッサコアでアクティブとなっているプロセス、アプリケーションまたはスレッドへのアクセスを有することから、必要な場合に、"シュートダウン"またはＴＬＢエントリの無効化をトリガする場合がある、すなわち、ＴＬＢエントリを使用していたプロセスをアクティブに実行していたコアのＴＬＢのみ、および／または、そのＴＬＢエントリを使用するプロセスをアクティベートしたいコアのＴＬＢのみのエントリを無効化する場合がある。このようにすることで、不必要なアクティビティおよびＴＬＢシュートダウンのオーバーヘッドを回避することができる。しかしながら、オペレーティングシステムは、異種処理デバイスでは実行されないことから、異種処理デバイスが、新規ページ情報を回復可能である、および／または、ページフォルトを生成可能であると仮定しても、オペレーティングシステムは、どのプロセスがアクティブで、どのＴＬＢエントリを無効化する必要があるかについては、トラックすることができない。したがって、プロセス仮想アドレス空間を共有している可能性のある異種処理デバイスの全てに、ブロードキャストを送信する必要がある。
【０００７】
キャッシュにアクセスするまたは仮想メモリを使用する、処理コアおよびその他の異種処理デバイスの数が増加すると、複数のデバイスが仮想メモリ空間を共有する場合に、メモリの混雑および競合といった、問題が生じることが予想される。このような問題に対する解決策については、まだ調査されていない。
【０００８】
本発明を、添付の図面に例示して説明がなされるが、本発明は、これらに限定されることはない。
【図面の簡単な説明】
【０００９】
【図１】異種デバイス間で、マルチコアシステムにおける仮想メモリを共有する従来の技術を示した図である。
【００１０】
【図２】効率的なＴＬＢシュートダウンをサポートする異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するための装置の一実施形態を示した図である。
【００１１】
【図３】異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセスの一実施形態を示したフローチャートである。
【００１２】
【図４】異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセスの別の実施形態を示したフローチャートである。
【００１３】
【図５】異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセスおよび装置を使用したプロセッサの一実施形態を示した図である。
【００１４】
【図６】異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセスおよび装置を使用したシステムの一実施形態を示した図である。
【発明を実施するための形態】
【００１５】
マルチコアシステムにおける仮想メモリを共有する異種デバイスのための、効率的なＴＬＢ（トランスレーション・ルックアサイド・バッファ）シュートダウンの、方法および装置について開示する。効率的なＴＬＢシュートダウンのための装置の実施形態は、仮想アドレス変換エントリを格納するＴＬＢ、および、仮想アドレス変換エントリに対応するＰＡＳＩＤ（プロセスアドレス空間識別子）ステートエントリを保持する、ＴＬＢに接続されたメモリ管理ユニットを備える。ＰＡＳＩＤステートエントリは、アクティブリファレンスステート（active reference state）およびレイジー無効化ステート（lazy-invalidation state）を含んでもよい。メモリ管理ユニットは、マルチコアシステムのデバイスからのＰＡＳＩＤステート更新リクエストに応答して、ＰＡＳＩＤステートエントリのアトミック修正（atomic modification）を実行し、ＰＡＳＩＤステートエントリのレイジー無効化ステートの読み出しを実行してもよい。メモリ管理ユニットは、デバイスに、ＰＡＳＩＤステート更新応答を送信して、対応するレイジー無効化ステートに応答する起動の前に、ＴＬＢエントリを同期させてもよい。
【００１６】
上記およびそのほかの実施形態は、以下に説明する教示に従って実現され、本発明の範囲内において、様々な変更および改良を以下の教示において行うことが可能である。したがって、本明細書および添付の図面は、限定するものではなく例示するものであると解釈されるべきであり、本発明は、添付の特許請求の範囲および均等物によってのみ評価されうる。
【００１７】
図１には、異種デバイス間で、マルチコアシステムにおける仮想メモリを共有する従来技術が示されている。マルチコアプロセッサまたはマルチコア処理システムは、様々な同種処理デバイスまたは異種処理デバイスを備える。例えば、図１に示すシステムは、幾つかの同種プロセッサコアを備え、それらのうちの２つが、コア１０２およびコア１０４として示されており、ＧＦＸ１０６のような１以上の異種グラフィックスプロセッサ、または、例えば、デバイス１０９のようなビデオプロセッサも備える。コア１０２およびコア１０４は、デコード１３１およびデコード１５１、スレッド毎キュー１３３および１５３、浮動小数点／単一命令複数データレジスタＦＰ／ＳＩＭＤ  ＲＥＧＳ１３５ａおよびＦＰ／ＳＩＭＤ  ＲＥＧＳ１５５ａ、汎用レジスタＧＥＮ  ＲＥＧＳ１３５ｂおよびＧＥＮ  ＲＥＧＳ１５５ｂ、浮動小数点／単一命令複数データ実行ユニットＦＰ／ＳＩＭＤ  ＥＸＵ  １３７ａおよびＦＰ／ＳＩＭＤ  ＥＸＵ  １５７ａ、ならびに、整数実行ユニットＩＮＴ  ＥＸＵ  １３７ｂおよびＩＮＴ  ＥＸＵ  １５７ｂを介して、それぞれ、複数のプロセススレッドを実行する、マルチスレッドコアであってもよい。コア１０２およびコア１０４はまた、バス／インターコネクト１１５を介して、物理メモリ１０５と接続されてもよく、また、バス／インターコネクトユニットＢ／Ｉ−Ｕ１２０およびＢ／Ｉ−Ｕ１４０を介して、メモリユニットＭＥＭ−Ｕ１２５およびＭＥＭ−Ｕ１４５と接続されてもよい。コア１０２および１０４は、物理メモリ１０５およびバス／インターコネクト１１５、場合によっては、ラストレベルキャッシュＬＬＣ１１６を介して、異種処理デバイスＧＦＸ１０６およびデバイス１０９と接続されてもよい。
【００１８】
これら、同種または異種の処理デバイスは、物理メモリ１０５、および、必要に応じて、ラストレベルキャッシュＬＬＣ１１６を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、Ｉ−キャッシュ１２３、Ｄ−キャッシュ１２４、Ｌ２  １２６およびＩ−キャッシュ１４３、Ｄ−キャッシュ１４４、Ｌ２  １６６を有してもよく、更に、例えば、Ｉ−ＴＬＢ１２１、Ｄ−ＴＬＢ１２２およびＩ−ＴＬＢ１４１、Ｄ−ＴＬＢ１４２のような、システム、ＯＳ１５４、ページテーブル、ＰＴＢＬ１５２からの仮想−物理アドレス変換をキャッシュするＴＬＢを、ページ化仮想メモリシステムに有してもよい。
【００１９】
同種プロセッサコア１０２および１０４はまた、システムページテーブルＰＴＢＬ１５２のページウォークを実行するべく、ハードウェアに、ページミスハンドラＰＭＨ１３０およびＰＭＨ１５０を備えてもよい。これら同種プロセッサコア１０２および１０４のうちの１つが、物理メモリ１０５にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムＯＳ１５４は、問題の"解決（fix）"を行う。
【００２０】
グラフィックスプロセッサＧＦＸ１０６およびデバイス１０９のような異種処理デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、ＴＬＢのようなメカニズムを有してもよいが、典型的には、同種プロセッサコア１０２および１０４で実行されるソフトウェアが存在し、異種処理デバイスＧＦＸ１０６およびデバイス１０９間で、ページ化された仮想メモリシステムを限定的に共有するために、ページテーブル等を設定する異種処理デバイスＧＦＸ１０６およびデバイス１０９のドライバと通信を行ってもよい。しかしながら、同種プロセッサコア１０２および１０４とは異なり、これらのマシーンの能力は限られている場合があり、例えば、ページフォルトを扱う能力を有さない場合がある。したがって、これら異種処理デバイス間で共有されるページは、物理メモリ１０５にロックダウンする必要があり、要求に応じて、オペレーティングシステムＯＳ１５４が、ディスクからおよびディスクにこの共有されるページをページング（paging）するのを防ぐ。この場合、サポート可能なアプリケーションの数が限られる、または、必要となる物理的メモリの量が増える。また、異種処理デバイスＧＦＸ１０６およびデバイス１０９間でページ化された仮想メモリを共有するべく、ページテーブル等を設定するのに使用される、同種プロセッサ１０２または１０４で実行されるソフトウェアによって、パフォーマンスオーバーヘッドが生じ、異種処理デバイスＧＦＸ１０６およびデバイス１０９を使用する効果が低減する可能性がある。
【００２１】
同種プロセッサコア１０２および１０４で実行されるソフトウェア（例えば、オペレーティングシステムＯＳ１５４）が、ページテーブルＰＴＢＬ１５２に変更を行うと、様々なＴＬＢ、すなわち、Ｉ−ＴＬＢ１２１、Ｄ−ＴＬＢ１２２およびＩ−ＴＬＢ１４１、Ｄ−ＴＬＢ１４２、ならびに、ＧＦＸ１０６および／またはデバイス１０９内のＴＬＢにキャッシュされた対応する変換を、無効化する必要がある。システム内の全てのデバイスに、無効化メッセージをブロードキャストすると、望ましくない通信の混雑が発生する可能性がある。望ましくない通信の混雑を回避するべく、オペレーティングシステムＯＳ１５２は、レイジー無効化（lazy invalidation）スキームを使用してもよい。オペレーティングシステムＯＳ１５２は、同種プロセッサコア１０２および１０４で実行され、様々な同種プロセッサコアでアクティブとなっているプロセス、アプリケーションまたはスレッドへのアクセスを有することから、必要に応じて、"シュートダウン"またはＴＬＢエントリの無効化をトリガする場合がある、すなわち、ＴＬＢエントリを使用していたプロセスをアクティブに実行していたコアのＴＬＢ、Ｉ−ＴＬＢ１２１、 Ｄ−ＴＬＢ１２２およびＩ−ＴＬＢ１４１、Ｄ−ＴＬＢ１４２、および／または、そのＴＬＢエントリを使用するプロセスをアクティベートしたいコアのＴＬＢのみにおいて、無効化する場合がある。このようにすることで、不必要なアクティビティおよびＴＬＢシュートダウンのオーバーヘッドを回避することができるが、これは、同種プロセッサコア１０２および１０４に対してのみである。しかしながら、オペレーティングシステムＯＳ１５２は、異種処理デバイスＧＦＸ１０６およびデバイス１０９では実行されないことから、異種処理デバイスＧＦＸ１０６およびデバイス１０９が、新規ページ情報を回復可能である、および／または、ページフォルトを生成可能であると仮定しても、オペレーティングシステムＯＳ１５２は、どのプロセスがアクティブで、どのＴＬＢエントリを無効化する必要があるかについては、トラックすることができない。したがって、プロセス仮想アドレス空間を共有している可能性のある異種処理デバイスＧＦＸ１０６およびデバイス１０９の全てに、ブロードキャストを送信する必要がある。
【００２２】
キャッシュにアクセスするまたは仮想メモリを使用する、処理コアおよびその他の異種処理デバイスの数が増加すると、複数のデバイスが仮想メモリ空間を共有する場合に、メモリの混雑および競合といった、問題が生じることが予想される。
【００２３】
図２には、効率的なＴＬＢシュートダウンをサポートする異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するための装置２０１の一実施形態が示されている。装置２０１は、仮想アドレス変換エントリを格納するためのＩＯＴＬＢ２１３を備える。メモリ管理ユニットＩＯＭＭＵ２１２は、ＩＯＴＬＢ２１３およびＰＡＳＩＤステートストレージ２１４に接続されて、ＩＯＴＬＢ２１３の仮想アドレス変換エントリの少なくとも一部分に対応するＰＡＳＩＤステートエントリを維持する。ＰＡＳＩＤステートエントリの実施形態はそれぞれ、アクティブリファレンスステートおよびレイジー無効化ステートを含んでもよく、以下に詳細に説明する。例示のため、ＩＯＴＬＢ２１３およびＰＡＳＩＤステートストレージ２１４が、ＩＯＭＭＵ２１２に含まれているように示されているが、これらの一方または両方が、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、ＩＯＭＭＵ２１２の外側、例えば、メモリ２０５に存在してもよい。
【００２４】
装置２０１は、必要に応じて、ラストレベルキャッシュＬＬＣ１１６およびスケジューラ２１８を備え、これらがＩＯＭＭＵ２１２に含まれているように示されているが、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、ＩＯＭＭＵ２１２の外側に存在してもよい。
【００２５】
装置２０１は、動作可能にバス／インターコネクト２１５と接続されて、マルチコアプロセッサまたは異種デバイスを有するマルチコア処理システムとの通信を行い、異種デバイスを有するマルチコアシステムにおける仮想メモリを、メモリ２０５を介して共有する。システムは、複数の同種コアを備え、それらのうちの２つが、コア２０２およびコア２０４として示されており、ならびに、異種デバイスも備え、それらのうちの２つが、グラフィックスデバイスＧＦＸ２０６およびＧＦＸ２０８として示されており、必要に応じて、その他の異種デバイスも備え、例えば、ビデオデバイス２０７およびデバイス２０９も備えてもよい。
【００２６】
複数の同種コア２０２および２０４は、デコード２３１およびデコード２５１、スレッド毎キュー２３３および２５３、浮動小数点／単一命令複数データレジスタhomogeneous  ＲＥＧＳ２３５ａおよびＦＰ／ＳＩＭＤ  ＲＥＧＳ２５５ａ、汎用レジスタＧＥＮ  ＲＥＧＳ２３５ｂおよびＧＥＮ  ＲＥＧＳ２５５ｂ、浮動小数点／単一命令複数データ実行ユニットＦＰ／ＳＩＭＤ  ＥＸＵ  ２３７ａおよびＦＰ／ＳＩＭＤ  ＥＸＵ  ２５７ａ、ならびに、整数実行ユニットＩＮＴ  ＥＸＵ  ２３７ｂおよびＩＮＴ  ＥＸＵ  ２５７ｂを介して、それぞれ、複数のプロセススレッドを実行する、マルチスレッドコアであってもよい。コア２０２およびコア２０４はまた、バス／インターコネクト２１５を介して、メモリ２０５と接続されてもよく、また、バス／インターコネクトユニットＢ／Ｉ−Ｕ２２０およびＢ／Ｉ−Ｕ２４０を介して、メモリユニットＭＥＭ−Ｕ２２５およびＭＥＭ−Ｕ２４５と接続されてもよい。コア２０２および２０４は、メモリ２０５およびバス／インターコネクト２１５、場合によっては、ラストレベルキャッシュＬＬＣ１１６を介して、異種処理デバイスＧＦＸ２０６およびＧＦＸ２０８、ならびに、必要に応じてその他の異種デバイス、例えば、ビデオデバイス２０７およびデバイス２０９と接続されてもよい。
【００２７】
これら、同種または異種の処理デバイスは、メモリ２０５、および、必要に応じて、ラストレベルキャッシュＬＬＣ１１６を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、Ｉ−キャッシュ２２３、Ｄ−キャッシュ２２４、Ｌ２  ２２６およびＩ−キャッシュ２４３、Ｄ−キャッシュ２４４、Ｌ２  ２６６を有してもよく、更に、例えば、Ｉ−ＴＬＢ２２１、Ｄ−ＴＬＢ２２２およびＩ−ＴＬＢ２４１、Ｄ−ＴＬＢ２４２のような、システム、ＯＳ２５４、ページテーブル、ＰＴＢＬ２５２からの仮想−物理アドレス変換をキャッシュするＴＬＢを、ページ化仮想メモリシステムに有してもよい。
【００２８】
同種プロセッサコア２０２および２０４はまた、システムページテーブルＰＴＢＬ２５２のページウォークを実行するべく、ハードウェアに、ページミスハンドラＰＭＨ２３０およびＰＭＨ２５０を備えてもよい。これら同種プロセッサコア２０２および２０４のうちの１つが、物理メモリ２０５にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムＯＳ２５４は、問題の"解決（fix）"を行う。
【００２９】
グラフィックスプロセッサＧＦＸ２０６およびＧＦＸ２０８のような異種処理デバイス、ならびに、必要に応じて、ビデオデバイス２０７およびデバイス２０９のようなその他の異種デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、例えば、ＴＬＢ２６２、ＴＬＢ２８２、ＴＬＢ２７２およびＴＬＢ２９２のようなＴＬＢメカニズムを有してもよい。ＴＬＢ２６２、ＴＬＢ２８２、ＴＬＢ２７２およびＴＬＢ２９２の様々な実施形態はそれぞれ、同じ能力、または、同種プロセッサコア２０２および２０４に相当する能力を有してもよいし、有さなくてもよい。異種処理デバイスＧＦＸ２０６、ＧＦＸ２０８、および、場合によっては、ビデオデバイス２０７およびデバイス２０９は、異種処理デバイスＧＦＸ２０６、ＧＦＸ２０８、ビデオデバイス２０７およびデバイス２０９において実行するプロセススレッドをスケジュールする、スケジューラ、例えば、ＳＣＨＥＤ ２６８、ＳＣＨＥＤ２８８、ＳＣＨＥＤ２７８およびＳＣＨＥＤ２９８を有してもよい。スケジューラＳＣＨＥＤ２６８、ＳＣＨＥＤ２８８、ＳＣＨＥＤ２７８およびＳＣＨＥＤ２９８、ならびに、場合によっては、中央スケジューラＳＣＨＥＤ２１８を含めたスケジューラは、異種処理デバイスおいてプロセススレッドをアクティベートまたは非アクティベート（deactivate）するために、異種処理デバイスからのＰＡＳＩＤステート更新リクエストを発行してもよい。
【００３０】
メモリ管理ユニットＩＯＭＭＵ２１２は、マルチコアシステム内の複数の異種デバイスのうちの１以上の対応する要求デバイスから、１以上のＰＡＳＩＤステート更新リクエストを受信してもよい。要求デバイスの１つからのＰＡＳＩＤステート更新リクエストを処理する場合、ＩＯＭＭＵ２１２は、そのＰＡＳＩＤステート更新リクエストに対応するＰＡＳＩＤステートのアトミック修正を実行してもよい。このようなアトミック修正の一実施形態は、アトミック読み出し／修正／書き込みオペレーションの形式であり、ＩＯＭＭＵ２１２は、ＰＡＳＩＤステートエントリのレイジー無効化ステートを読み出し、対応するＰＡＳＩＤステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティベートされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、ＩＯＭＭＵ２１２は、ＰＡＳＩＤステート更新リクエストに対応する要求デバイスに、ＰＡＳＩＤステート更新応答を送信して、例えば、要求デバイスに、アクティベーションにする前に、レイジー無効化ステートが設定されることに応じて、デバイスのＴＬＢエントリを同期するように示す。
【００３１】
異種デバイスを有するマルチコアシステムにおける仮想メモリを共有するための、効率的なＴＬＢシュートダウンをサポートする１以上のプロセスの実施形態について、特に、図３および図４を参照して以下に詳細に説明する。
【００３２】
図３は、異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセス３０１の一実施形態を示したフローチャートである本明細書に開示されるプロセス３０１およびその他のプロセスは、専用ハードウェアまたはソフトウェア、または、汎用マシーンまたは専用マシーンもしくはこれらの組み合わせによって実行可能なファームウェアオペレーションコードを備える処理ブロックによって実行される。
【００３３】
プロセス３０１の処理ブロック３１０において、１以上のＰＡＳＩＤステート更新リクエストが、マルチコアシステムにおける複数の異種デバイスの１以上の対応する要求デバイスから受信される。処理ブロック３２０において、ＰＡＳＩＤステートのアトミック修正が、ＰＡＳＩＤステート更新リクエストのうちの１つに応じて実行され、処理ブロック３３０において、対応するＰＡＳＩＤについて、レイジー無効化チェックが実行される。アトミック修正は、アトミック読み出し／修正／書き込みオペレーションの形式であってもよく、ＩＯＭＭＵは、ＰＡＳＩＤステートエントリのレイジー無効化ステートを読み出し、対応するＰＡＳＩＤステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティブにされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、ブロック３５０において、ＰＡＳＩＤステート更新応答が、対応するＰＡＳＩＤステート更新リクエストに対応する要求デバイスに送信され、例えば、レイジー無効化ステートが設定されることに応じて、デバイスのＴＬＢエントリを同期するように要求デバイスに示す。
【００３４】
処理ブロック３６０において、マルチコアシステムのオペレーティングシステムからのＴＬＢシュートダウンの処理が行われる。ＩＯＴＬＢエントリがアクティブになると、このＩＯＴＬＢエントリを無効化することで、ＴＬＢシュートダウンの処理が開始する。このような処理は、例えば、ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントが、ゼロでない場合には、異種デバイスの１以上のデバイスＴＬＢエントリを無効化することを含んでもよい。これに替えて、ＴＬＢシュートダウンを処理することは、ＰＡＳＩＤステートエントリを読み出し、ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントが、ゼロの場合には、すなわち、このＴＬＢエントリを現在使用しているデバイスは存在しないが、あるデバイスのＴＬＢにおいては依然としてアクティブ状態である場合には、ＰＡＳＩＤステートエントリに、レイジー無効化フィールドを設定することを含んでもよい。
【００３５】
例として、プロセス３０１のある実施形態では、処理を開始させるイベントは、別の順番で発生する可能性もあり、また、別のイベント発生と同時に起こる可能性もあることは明らかである。例えば、ＴＬＢシュートダウンは、ＩＯＭＭＵがＰＡＳＩＤステート更新リクエストを処理している間、任意の時間にオペレーティングシステムから受信される。したがって、競合状態から保護し、ＰＡＳＩＤステートおよびＴＬＢエントリに対する更新の順序付けが、システムページテーブルに対する変更に関して、構造における仮想アドレス変換の正確性を維持することを確かにすることが重要である。
【００３６】
図４は、異種デバイス間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセスの別の実施形態を示したフローチャートである。
【００３７】
プロセス４０１の処理ブロック４１０において、ＰＡＳＩＤステート更新リクエストが、マルチコアシステムにおける複数の異種デバイスの要求デバイスから受信される。処理ブロック４１５において、更新リクエストが、要求デバイスに対するＰＡＳＩＤステートをアクティベートするものか、非アクティベートするものかを判断する。リクエストが、要求デバイスのＰＡＳＩＤステートをアクティベートするものである場合には、処理ブロック４２０において、ＰＡＳＩＤステートのアトミック修正が、ＰＡＳＩＤステート更新リクエストに応じて実行される。ここで、レイジー無効化ステートが読み出され、アクティブリファレンスカウントＲＣＯＵＮＴがインクリメントされ、レイジー無効化ステートがクリアされる。アトミック修正は、アトミック読み出し／修正／書き込みオペレーションの形式であってもよい。リクエストが、要求デバイスのＰＡＳＩＤステートを非アクティベートするものである場合には、処理ブロック４２５において、アクティブリファレンスカウントＲＣＯＵＮＴが、デクリメントされる。
【００３８】
処理ブロック４３０において、対応するＰＡＳＩＤステートに対して、レイジー無効化チェックが実行される。アトミック修正では、ＩＯＭＭＵは、ＰＡＳＩＤステートエントリのレイジー無効化ステートを読み出していることから、対応するＰＡＳＩＤステートのレイジー無効化チェックは、例えば、要求デバイスによってアクティブにされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかを判断するべく、前に設定されているかを確認するために読み出されたステートをチェックすることを含んでもよい。
【００３９】
上記の通りである場合、処理ブロック４４０において、ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロでなく、レイジー無効化ステートがすでに設定されていることから、ＩＯＴＬＢエントリの無効化が開始され、更に、システムページテーブルと同期が必要な１以上の異種デバイスのデバイスＴＬＢエントリを無効化する同期フラグが設定される。そして、処理ブロック４５０において、ＰＡＳＩＤステート更新応答が、同期フラグの設定と共に、特定のＰＡＳＩＤステート更新リクエストに対応する要求デバイスに送信されて、要求デバイスに対して、アクティベーションの前に、デバイスのＴＬＢエントリを同期させる必要があることを通知する。
【００４０】
上記の通りでない場合、すなわち、非アクティベーションリクエストである場合、処理ブロック４３５に移り、同期フラグはクリアされる。そして、処理ブロック４４５では、ＰＡＳＩＤステート更新応答が、特定のＰＡＳＩＤステート更新リクエストに対応する要求デバイスに送信されると同時に、同期フラグがクリアされて、要求デバイスに対して、アクティベーションの前に、デバイスのＴＬＢエントリを同期させる必要がないことを通知する。
【００４１】
処理ブロック４５５において、要求デバイスは、ＰＡＳＩＤステート更新応答における同期フラグの設定に基づいて、アクティベーションの前に、デバイスＴＬＢエントリを同期する必要がある場合がある。このように、ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントが、ゼロから１にインクリメントされ、レイジー無効化ステートが以前に設定されていると、その都度、同期フラグが設定される。レイジー無効化ステートに基づき、複数のデバイスに対する同期のその他の実施形態を使用してもよい。
【００４２】
次いで、マルチコアシステムのオペレーティングシステムからのＴＬＢシュートダウンの処理がプロセス４０２で実行され、最初に、処理ブロック４６０において、グローバルページが修正されたかを判断する。修正されている場合には、ＴＬＢシュートダウンの処理は、処理ブロック４７５において、ＩＯＴＬＢエントリおよび異種デバイスの対応するデバイスＴＬＢエントリの全てを無効化する段階を含んでもよい。修正されていない場合には、処理ブロック４６５に移り、対応するＰＡＳＩＤステートエントリが読み出される。次いで処理ブロック４７０において、ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロであるかを判断する。ゼロでない場合には、ＴＬＢシュートダウンの処理は再び、処理ブロック４７５において、ＩＯＴＬＢエントリおよび異種デバイスの対応するデバイスＴＬＢエントリの全てを無効化する段階を含む。ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、ＰＡＳＩＤステートエントリにおけるレイジー無効化フィールドが設定されて、処理ブロック４２０、４３０および４４０で説明したようなレイジー無効化がトリガされる。処理は、再び、プロセス４０１の処理ブロック４１０から繰り返される。
【００４３】
プロセス４０１および４０２のある実施形態において、プロセス４０１および４０２の処理を実行させるイベントは、別の順番で発生してもよいし、同時に発生してもよい。例えば、オペレーティングシステムから、ＴＬＢシュートダウンを任意のタイミングで受信することができ、プロセス４０２の処理を行い、同時に、ＩＯＭＭＵが、ＰＡＳＩＤステート更新リクエストを処理してもよい。したがって、競合状態から保護し、ＰＡＳＩＤステートおよびＴＬＢエントリに対する更新の順序付けが、システムページテーブルに対する変更に関して、構造における仮想アドレス変換の正確性を維持することを確かにすることが重要である。読み出し−修正−書き込みおよびテスト−設定のようなアトミックオペレーション、ロックド比較交換命令（locked compare-and-exchange instruction）、および、重要な部分（例えば、セマフォ（semaphore））を扱うその他の技術の少なくとも１つを、上記の目的を達成するべく、当業者は様々な実施形態において使用できる。
【００４４】
図５は、異種デバイス５０６−５０９間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートする装置５０１、および、例えば、プロセス３０１を使用するプロセッサ５０３の一実施形態を示した図である。プロセッサ５０３装置５０１は、仮想アドレス変換エントリを格納するＩＯＴＬＢ５１３を備える。メモリ管理ユニット（ＭＭＵ）５１２は、ＩＯＴＬＢ５１３およびＰＡＳＩＤステートストレージ５１４に接続されて、ＩＯＴＬＢ５１３の仮想アドレス変換エントリの少なくとも一部分に対応するＰＡＳＩＤステートエントリを維持する。ＰＡＳＩＤステートエントリの実施形態はそれぞれ、アクティブリファレンスステートおよびレイジー無効化ステートを含んでもよい。ＩＯＴＬＢ５１３およびＰＡＳＩＤステートストレージ５１４が、ＭＭＵ５１２に含まれているように示されているが、これらの一方または両方が、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、ＭＭＵ５１２の外側、例えば、メモリ５０５に存在してもよい。
【００４５】
プロセッサ５０３の装置５０１は、必要に応じて、ラストレベルキャッシュＬＬＣ５１６およびスケジューラ５１８を備え、これらがＭＭＵ５１２に含まれているように示されているが、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、ＭＭＵ５１２の外側に存在してもよい。
【００４６】
プロセッサ５０３の装置５０１は、動作可能にバス／インターコネクト５１５および５５１と接続されて、マルチコアプロセッサまたは異種デバイスを有するマルチコア処理システムとの通信を行い、異種デバイスを有するマルチコアシステムにおける仮想メモリを、メモリ５０５を介したメモリ制御５５３を使用して、共有する。システムは、複数の同種コアを備えてもよく、それらのうちの２つが、コア５０２およびコア５０４として示されており、ならびに、異種デバイスも備え、それらのうちの２つが、グラフィックスデバイスＧＦＸ５０６およびＧＦＸ５０８として示されており、必要に応じて、その他の異種デバイスも備え、例えば、ビデオデバイス５０７およびデバイス５０９も備えてもよい。
【００４７】
複数の同種のコア５０２および５０４は、例えば、図２を参照して上記で説明したように、実行される複数のプロセススレッドを処理するマルチスレッドコアであってもよい。コア５０２およびコア５０４は、バス／インターコネクト５１５を介して様々なデバイスと接続されてもよく、例えば、Ｉ／Ｏ拡張デバイス５３７、ＮＡＮＤ制御５５７、トランスポートプロセッサ５５８、セキュリティプロセッサ５５９、ビデオディスプレイロジック５２７、オーディオ／ビデオＩ／Ｏ５４８、オーディオデコードロジック５４９、および、必要に応じて単一命令複数データ（ＳＩＭＤ）コプロセッサ５９１と接続されてもよい。コア５０２およびコア５０４は、バス／インターコネクト５５１およびメモリ制御５５３を介して、メモリ５０５と接続されてもよい。コア５０２および５０４はまた、メモリ５０５、ならびに、バス／インターコネクト５１５および５５１を介して、場合によっては、ラストレベルキャッシュＬＬＣ５１６を介して、異種処理デバイスＧＦＸ５０６およびＧＦＸ５０８と接続されてもよく、必要に応じて、ビデオデバイス５０７およびデバイス５０９のようなその他の異種デバイスと接続されてもよい。
【００４８】
これら、同種または異種の処理デバイスは、メモリ５０５、および、必要に応じて、ラストレベルキャッシュＬＬＣ５１６を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、Ｌ２  ５２６およびＬ２  ５４６、ならびに、例えば、ＴＬＢ５２２およびＴＬＢ２４２のようなＴＬＢを含み、ページ化された仮想メモリシステムにおいて、システム、ＯＳ５５４、ページテーブル、ＰＴＢＬ５５２からの仮想−物理アドレス変換をキャッシュする。
【００４９】
同種プロセッサコア５０２および５０４はまた、システムページテーブルＰＴＢＬ５５２のページウォークを実行するべく、ハードウェアに、ページミスハンドラ（図示せず）を備えてもよい。これら同種プロセッサコア５０２および５０４のうちの１つが、物理メモリ５０５にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムＯＳ５５４は、問題の"解決"を行う。
【００５０】
グラフィックスプロセッサＧＦＸ５０６およびＧＦＸ５０８のような異種処理デバイス、ならびに、場合によっては、ビデオデバイス５０７およびデバイス５０９のようなその他の異種デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、例えば、ＴＬＢ５６２、ＴＬＢ５８２、ＴＬＢ ５７２およびＴＬＢ５９２であるＴＬＢのようなメカニズムを有してもよい。ＴＬＢ５６２、ＴＬＢ５８２、ＴＬＢ５７２およびＴＬＢ５９２の様々な実施形態はそれぞれ、同じ能力、または、同種プロセッサコア５０２および５０４に相当する能力を有してもよいし、有さなくてもよい。異種処理デバイスＧＦＸ５０６、ＧＦＸ５０８、および、場合によっては、ビデオデバイス５０７およびデバイス５０９は、異種処理デバイスＧＦＸ５０６、ＧＦＸ５０８、ビデオデバイス５０７およびデバイス５０９において実行するプロセススレッドをスケジュールする、スケジューラ、例えば、ＳＣＨ５６８、ＳＣＨ５８８、ＳＣＨ５７８およびＳＣＨ５９８を有してもよい。スケジューラＳＣＨ５６８、ＳＣＨ５８８、ＳＣＨ５７８およびＳＣＨ５９８、ならびに、場合によっては、中央スケジューラＳＣＨ５１８を含めたスケジューラは、異種処理デバイスおいてプロセススレッドをアクティベートまたは非アクティベート（deactivate）するために、異種処理デバイスからのＰＡＳＩＤステート更新リクエストを発行してもよい。
【００５１】
メモリ管理ユニット５１２は、マルチコアシステム内の複数の異種デバイスのうちの１以上の対応する要求デバイスから、１以上のＰＡＳＩＤステート更新リクエストを受信してもよい。要求デバイスの１つからのＰＡＳＩＤステート更新リクエストを処理する場合、ＭＭＵ５１２は、そのＰＡＳＩＤステート更新リクエストに対応するＰＡＳＩＤステートのアトミック修正を実行してもよい。このようなアトミック修正の一実施形態は、アトミック読み出し／修正／書き込みオペレーションの形式であり、ＭＭＵ５１２は、ＰＡＳＩＤステートエントリのレイジー無効化ステートを読み出し、対応するＰＡＳＩＤステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティベートされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、ＭＭＵ５１２は、ＰＡＳＩＤステート更新リクエストに対応する要求デバイスに、ＰＡＳＩＤステート更新応答を送信して、例えば、要求デバイスに、アクティベーションの前に、レイジー無効化ステートが設定されることに応じて、デバイスのＴＬＢエントリを同期するように示す。
【００５２】
図６は、異種デバイス６０６−６０９間で、マルチコアシステムにおける仮想メモリを共有するために、効率的なＴＬＢシュートダウンをサポートするプロセス、例えば、プロセス３０１、および、装置６０１を使用したシステム６１０の一実施形態を示した図である。
【００５３】
システム６１０は、仮想アドレス変換エントリを格納するＩＯＴＬＢ６１３を含むプロセッサ６０３の装置６０１を備える。メモリ管理ユニット６１２は、ＩＯＴＬＢ６１３およびＰＡＳＩＤステートストレージ６１４に接続されて、ＩＯＴＬＢ６１３の仮想アドレス変換エントリの少なくとも一部分に対応するＰＡＳＩＤステートエントリを維持する。ＰＡＳＩＤステートエントリの実施形態はそれぞれ、アクティブリファレンスステートおよびレイジー無効化ステートを含んでもよい。例示のため、ＩＯＴＬＢ６１３およびＰＡＳＩＤステートストレージ６１４が、ＭＭＵ６１２に含まれているように示されているが、これらの一方または両方が、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、ＭＭＵ６１２の外側、例えば、メモリ６０５に存在してもよい。
【００５４】
プロセッサ６０３の装置６０１は、必要に応じて、ラストレベルキャッシュＬＬＣ６１６およびスケジューラ６１８を備え、これらがＭＭＵ６１２に含まれているように示されているが、別個のハードウェアまたはソフトウェアデータ構造として実装されてもよく、また、ＭＭＵ６１２の外側に存在してもよい。
【００５５】
プロセッサ６０３の装置６０１は、動作可能にバス／インターコネクト６１５および６５１とと接続されて、マルチコアプロセッサ、または、異種デバイスを有するマルチコア処理システムとの通信を行い、異種デバイスを有するマルチコアシステムにおける仮想メモリを、メモリ６０５を介してメモリ制御６５３を使用して共有する。システム６１０の実施形態を、マルチコアプロセッサまたはマルチコア処理システムとの通信を行う、例えば、ＰＣＩ（Peripheral Component Interconnect）またはＰＣＩエクスプレス、もしくは、ＳＡＴＡ（Serial Advanced Technology Attachment）標準的なまたは非標準的な特許技術、インターフェース、バスまたはインターコネクト６１５および６５１を使用して実装してもよい。
【００５６】
システム６１０の別の実施形態は、標準的なまたは非標準的な特許技術、インターフェース、バスまたはインターコネクトを使用して実装してもよく、例えば、ＳＰＩ（Serial Peripheral Interface）バス、ＩＳＡ（Industry Standard Architecture）バス、ＰＣ／１０４、ＰＣ／１０４＋および拡張ＩＳＡ、ＵＳＢ（Universal Serial Bus）ＡＶＣ（Audio Video Class）、AMBA（Advanced Microcontroller Bus Architecture）（Advanced Peripheral Bus）ＡＰＢ、ファイヤーワイヤ（IEEE規格1394a-2000 High Performance Serial Bus- Amendment 1, ISBN 0-7381-1958-X; IEEE規格1394b-2002 High Performance Serial Bus-Amendment 2, ISBN 0-7381-3253-5; IEEE規格I394c-2006, 2007-06-08, ISBN 0-7381-5237-4）、ＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）、ＶＥＳＡ（Video Electronic Standards Association）のディスプレイポートおよびミニディスプレイポート、ＭＩＰＩ（登録商標）（Mobile Industry Processor Interface）アライアンスの ＳＬＥＶＩｂｕｓ（登録商標）（Serial Low-power Inter-chip Media Bus）、ＬＬＩ（Low Latency Interface、ＣＳＩ（Camera Serial Interface）ＤＳＩ（Display Serial Interface）等を使用して実装してもよい。
【００５７】
システム６１０は、複数の同種コアを備えてもよく、それらのうちの２つが、コア６０２およびコア６０４として示されており、ならびに、異種デバイスも備え、それらのうちの２つが、グラフィックスデバイスＧＦＸ６０６およびＧＦＸ６０８として示されており、必要に応じて、その他の異種デバイスも備え、例えば、ビデオデバイス６０７およびデバイス６０９も備えてもよい
【００５８】
複数の同種のコア６０２および６０４は、実行される複数のプロセススレッドを処理するマルチスレッドコアであってもよい。同種プロセッサコア６０２およびコア６０４は、バス／インターコネクト６１５を介して、様々なデバイスに接続されてもよく、例えば、ブリッジ３０、無線接続デバイス２０、モデムデバイス２６およびオーディオＩ／Ｏデバイス２８に接続されてもよい。システム６１０のある実施形態は、例えば、タブレットコンピュータまたはスマートフォンで使用される、システムオンチップとして実装されてもよい。このような実施形態では、無線接続デバイス２０は、無線ＬＡＮ（ローカルエリアネットワーク）リンクを提供し、モデムデバイス２６は、４Ｇ（第４世代）、５Ｇ（第５世代）またはそれ以降の世代の電話接続を提供し、オーディオＩＯデバイス２８は、例えば、ヘッドセット、スピーカ、ハンドセットマイク、オーディオ入出力チャネルおよびアンプを含むオーディオヒユーマンインターフェースデバイスのセットを提供してもよい。
【００５９】
同種プロセッサコア６０２および６０４は、様々なその他のシステムデバイスと通信を行うために、バス／インターコネクト６１５、ブリッジ３０およびバス／インターコネクト１８と接続され、その他のシステムデバイスとしては、これに限定されないが、無線接続デバイス２０、モデムデバイス２６、および、オーディオＩ／Ｏデバイス２８、カメラインターフェース２１、Ｆａｓｔ ＩｒＤＡ（赤外線通信協会）ポート２３、ＨＤ（high definition）マルチメディアインターフェース２４、ＵＳＢ２５、ディスプレイコントロール２７、および、代替マスターインターフェース２９が挙げられる。同種プロセッサコア６０２および６０４は、様々なその他のシステムデバイスと通信を行うために、バス／インターコネクト６１５、ブリッジ３０およびバス／インターコネクト１１と接続され、その他のシステムデバイスとしては、これに限定されないが、フラッシュメモリ１３、ＳＤ（セキュアデジタル）メモリ１６、ＭＭＣ（マルチメディアカード）１７およびＳＳＤ（半導体ドライブ）１９が挙げられる。同種プロセッサコア６０２および６０４は、様々なその他のシステムデバイスと通信を行うために、バス／インターコネクト６１５、ブリッジ３０およびバス／インターコネクト１８と接続され、その他のシステムデバイスとしては、これに限定されないが、ＵＡＲＴ（universal asynchronous receiver/transmitter）３１、カメラ制御３２、ＢｌｕｅＴｏｏｔｈ（登録商標）  ＵＡＲＴ３３、必要に応じて、Ｗｉ−Ｆｉ ８０２．１１ａ／ｂ／ｇ送受信機および／またはＧＰＳ（Global Positioning System）送受信機、キーパッド６３４、バッテリー制御３５、Ｉ／Ｏ拡張３７およびタッチスクリーン制御３９が挙げられる。
【００６０】
同種プロセッサコア６０２およびコア６０４は、バス／インターコネクト６５１およびメモリ制御６５３を介して、メモリ６０５と接続されてもよい。同種プロセッサコア６０２および６０４はまた、メモリ６０５、ならびに、バス／インターコネクト６１５および６５１を介して、場合によっては、ラストレベルキャッシュＬＬＣ６１６を介して、異種処理デバイスＧＦＸ６０６およびＧＦＸ６０８と接続されてもよく、必要に応じて、ビデオデバイス６０７およびデバイス６０９のようなその他の異種デバイスと接続されてもよい。システム６１０のメモリ６０５およびその他の有形記憶媒体は、ＯＳ６５４、ＭＭＵ６１２、ＳＣＨ６１８、６６８、６７８、６８８および６９８、ならびに、その他のデバイスおよび／またはドライバ（図示せず）の実行可能命令を含む、機能記述マテリアルを記録してもよく、これら命令は、マルチコアシステムにおける仮想メモリを異種デバイス６０６−６０９と共有するための、効率的なＴＬＢシュートダウンをサポートするべく、同種プロセッサコア６０２および６０４によって実行されてもよい。
【００６１】
システム６１０の実施形態の一部は、１つのコンピュータ内で同時に実行される複数のオペレーティングシステムが、ＰＣＩエクスプレストポロジーにネイティブＩ／Ｏ仮想化を提供するシングルルートＩ／Ｏ仮想化（ＳＲＩＯＶ）、または、複数のルートコンプレックスがＰＣＩエクスプレス階層を共有するトポロジーに、ネイティブＩ／Ｏ仮想化を提供するマルチルートＩ／Ｏ仮想化（ＭＲＩＯＶ）、のようにネイティブにデバイスを共有することを可能とする、業界標準規格に従ってもよい。システム６１０のある実施形態は、標準的なまたは非標準的な特許技術、インターフェース、バスまたはインターコネクトを含み、例えば、ＳＰＩ（Serial Peripheral Interface）バス、ＵＳＢ、ＡＭＢＡ ＡＰＢ、ＦｉｒｅＷｉｒｅ、ＨＤＭＩ（登録商標）、ミニディスプレイポート、ＭＩＰＩ ＳＬＩＭバス、ＭＩＰＩ ＬＬＩ、ＭＩＰＩ ＣＳＩ、ＭＩＰＩ ＤＳＩ等を含む。
【００６２】
これら同種または異種処理デバイスは、メモリ６０５、および、場合によっては、ラストレベルキャッシュＬＬＣ６１６を介して、仮想メモリアドレス空間を共有してもよい。典型的には、同種プロセッサコアは、キャッシュ階層構造を有してもよく、例えば、Ｌ２  ６２６およびＬ２  ６４６、ならびに、例えば、ＴＬＢ６２２およびＴＬＢ６４２のようなＴＬＢを含み、ページ化された仮想メモリシステムにおいて、ホストまたはゲストシステム、ＯＳ６５４、ページテーブル、ＰＴＢＬ６５２からの仮想−物理アドレス変換をキャッシュする。
【００６３】
同種プロセッサコア６０２および６０４はまた、システムページテーブルＰＴＢＬ６５２のページウォークを実行するべく、ハードウェアに、ページミスハンドラ（図示せず）を備えてもよい。これら同種プロセッサコア６０２および６０４のうちの１つが、物理メモリ６０５にマッピングされていない仮想メモリのページにアクセスしようとすると、メモリアクセスはページフォルトを引き起こし、オペレーティングシステムＯＳ６５４は、問題の"解決"を行う。
【００６４】
グラフィックスプロセッサＧＦＸ６０６およびＧＦＸ６０８のような異種処理デバイス、ならびに、場合によっては、ビデオデバイス６０７およびデバイス６０９のようなその他の異種デバイスも、仮想アドレスから物理アドレスへの変換を実行するべく、例えば、ＴＬＢ６６２、ＴＬＢ６８２、ＴＬＢ６７２およびＴＬＢ６９２であるＴＬＢのようなメカニズムを有してもよい。ＴＬＢ６６２、ＴＬＢ６８２、ＴＬＢ６７２およびＴＬＢ６９２の様々な実施形態はそれぞれ、同じ能力、または、同種プロセッサコア６０２および６０４に相当する能力を有してもよいし、有さなくてもよい。異種処理デバイスＧＦＸ６０６、ＧＦＸ６０８、および、場合によっては、ビデオデバイス６０７およびデバイス６０９は、異種処理デバイスＧＦＸ６０６、ＧＦＸ６０８、ビデオデバイス６０７およびデバイス６０９において実行するプロセススレッドをスケジュールする、スケジューラ、例えば、ＳＣＨ６６８、ＳＣＨ６８８、ＳＣＨ６７８およびＳＣＨ６９８を有してもよい。スケジューラ、例えば、ＳＣＨ６６８、ＳＣＨ６８８、ＳＣＨ６７８およびＳＣＨ６９８はそれぞれ、ならびに、場合によっては、中央スケジューラＳＣＨ６１８を含めたスケジューラは、異種処理デバイスおいてプロセススレッドをアクティベートまたは非アクティベート（deactivate）するために、異種処理デバイスからのＰＡＳＩＤステート更新リクエストを発行してもよい。
【００６５】
メモリ管理ユニット６１２は、マルチコアシステム内の複数の異種デバイスのうちの１以上の対応する要求デバイスから、１以上のＰＡＳＩＤステート更新リクエストを受信してもよい。要求デバイスの１つからのＰＡＳＩＤステート更新リクエストを処理する場合、ＭＭＵ６１２は、そのＰＡＳＩＤステート更新リクエストに対応するＰＡＳＩＤステートのアトミック修正を実行してもよい。このようなアトミック修正の一実施形態は、アトミック読み出し／修正／書き込みオペレーションの形式であり、ＭＭＵ６１２は、ＰＡＳＩＤステートエントリのレイジー無効化ステートを読み出し、対応するＰＡＳＩＤステートのレイジー無効化チェックを実行し、例えば、要求デバイスによってアクティベートされる前に、プロセスアドレス空間の仮想アドレス変換エントリを、システムページテーブルと同期する必要があるかをチェックする。そして、ＭＭＵ６１２は、ＰＡＳＩＤステート更新リクエストに対応する要求デバイスに、ＰＡＳＩＤステート更新応答を送信して、例えば、要求デバイスに、アクティベーションの前に、レイジー無効化ステートが設定されることに応じて、デバイスのＴＬＢエントリを同期するように示す。
【００６６】
上記の説明は、本発明の望ましい実施形態を例示することを目的としている。上記の説明は、本発明の好ましい実施形態を述べたものであり、上述された考察から、特に成長が早く更なる発展を簡単に予測できない技術分野において、本発明の原則に反することなく特許請求の範囲および均等物の範囲内において、本発明における配置や細部構成に変更または改良を加えることが可能であることは、当業者にとって明らかである。本明細書によれば、以下の各項目に記載の事項もまた開示される。
［項目１］
仮想メモリを共有する複数の異種デバイスを有するマルチコアシステムにおける、効率的なＴＬＢシュートダウンの方法であって、
前記マルチコアシステムにおける前記複数の異種デバイスのうちの１以上の要求デバイスから、対応する１以上のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステート更新リクエストを受信する段階と、
前記１以上のＰＡＳＩＤステート更新リクエストのうちの第１のＰＡＳＩＤステート更新リクエストに対応するＰＡＳＩＤステートのアトミック修正を実行する段階であって、前記ＰＡＳＩＤステートのエントリがレイジー無効化ステートを含む段階と、
前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティブにされる前にシステムページテーブルと同期する必要があるかを判断すべく、前記対応するＰＡＳＩＤステートのレイジー無効化チェックを実行する段階と、
前記１以上のＰＡＳＩＤステート更新リクエストのうちの前記第１のＰＡＳＩＤステート更新リクエストに対応する要求デバイスに、ＰＡＳＩＤステート更新応答を送信する段階と、を備える方法。
［項目２］
前記マルチコアシステムにおけるオペレーティングシステムからのＴＬＢシュートダウンを処理する段階を更に備える、項目１に記載の方法。
［項目３］
前記ＴＬＢシュートダウンを処理する段階は、ＩＯＴＬＢエントリを無効化する段階を有する、項目２に記載の方法。
［項目４］
前記ＴＬＢシュートダウンを処理する段階は、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化する段階を備える、項目２または３に記載の方法。
［項目５］
前記ＴＬＢシュートダウンを処理する段階は、
ＰＡＳＩＤステートエントリを読み出す段階と、
前記ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにレイジー無効化フィールドを設定する段階と、を有する項目２に記載の方法。
［項目６］
前記ＴＬＢシュートダウンを処理する段階は、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、ＩＯＴＬＢエントリを無効化する段階と、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化する段階と、を有する項目５に記載の方法。
［項目７］
前記ＰＡＳＩＤステートエントリに前記レイジー無効化フィールドを設定する段階は、ロックド比較交換命令（locked compare-and-exchange instruction）およびアトミック読み出し／修正／書き込みの少なくとも１つであるオペレーションを使用して実行される、項目５に記載の方法。
［項目８］
前記ＰＡＳＩＤステートの前記アトミック修正を実行する段階は、
前記第１のＰＡＳＩＤステート更新リクエストが、非アクティベーション更新を示す場合には、アクティブリファレンスカウントをデクリメントする段階を有する、項目１から６の何れか一項に記載の方法。
［項目９］
前記ＰＡＳＩＤステートの前記アトミック修正を実行する段階は、
レイジー無効化フィールドを含むＰＡＳＩＤステートエントリを読み出す段階と、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントする段階と、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化フィールドをクリアする段階と、を有する、項目１から６の何れか一項に記載の方法。
［項目１０］
読み出された前記ＰＡＳＩＤステートエントリに含まれる前記レイジー無効化フィールドが設定された場合には、ＩＯＴＬＢエントリを無効化する段階と、
読み出された前記ＰＡＳＩＤステートエントリに含まれる前記レイジー無効化フィールドが設定され、前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記第１のＰＡＳＩＤステート更新リクエストに対してデバイス同期フラグを設定する段階とを更に備える、項目９に記載の方法。
［項目１１］
複数の仮想アドレス変換エントリを格納するＴＬＢと、
前記ＴＬＢに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のＰＡＳＩＤステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、マルチコアシステムにおける複数の異種デバイスのうちの一のデバイスから、第１のＰＡＳＩＤステート更新リクエストを受信すると、第１のＰＡＳＩＤステートエントリのアトミック修正を実行し、前記第１のＰＡＳＩＤステートエントリの前記レイジー無効化ステートを読み出して、前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスＴＬＢエントリを同期するべく、前記一のデバイスに、ＰＡＳＩＤステート更新応答を送信する、装置。
［項目１２］
前記第１のＰＡＳＩＤステートエントリの前記アトミック修正は、
レイジー無効化ステートを含む前記第１のＰＡＳＩＤステートエントリを読み出すこと、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントすること、および、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化ステートをクリアすること、を含む、項目１１に記載の装置。
［項目１３］
前記メモリ管理ユニットは更に、少なくとも前記レイジー無効化ステートが読み出されると、
前記第１のＰＡＳＩＤステートエントリに対応するＴＬＢ仮想アドレス変換エントリを無効化し、および、
前記一のデバイスに送信される前記ＰＡＳＩＤステート更新応答に対する同期フラグを設定する、項目１１または１２に記載の装置。
［項目１４］
前記メモリ管理ユニットは更に、
前記マルチコアシステムにおけるオペレーティングシステムからのＴＬＢシュートダウンを処理する、項目１１または１２に記載の装置。
［項目１５］
前記ＴＬＢシュートダウンを処理することは、
ＴＬＢ仮想アドレス変換エントリを無効化することを含む、項目１４に記載の装置。
［項目１６］
前記ＴＬＢシュートダウンを処理することは、
前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化することを含む、項目１４に記載の装置。
［項目１７］
前記ＴＬＢシュートダウンを処理することは、
ＰＡＳＩＤステートエントリを読み出すこと、および、
前記ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにレイジー無効化フィールドを設定すること、を含む、項目１４に記載の装置。
［項目１８］
前記ＴＬＢシュートダウンを処理することは、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記ＴＬＢにおける仮想アドレス変換エントリを無効化すること、および、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、項目１７に記載の装置。
［項目１９］
前記ＰＡＳＩＤステートエントリに前記レイジー無効化フィールドを設定することは、ロックド比較交換命令（locked compare-and-exchange instruction）およびアトミック読み出し／修正／書き込みの少なくとも１つであるオペレーションを使用して実行される、項目１７に記載の装置。
［項目２０］
マルチコアプロセッサであって、
第１の複数の同種処理コアと、
異種処理デバイスと、
複数の仮想アドレス変換エントリを格納するＴＬＢと、
前記ＴＬＢに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のＰＡＳＩＤステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、マルチコアプロセッサにおける複数の異種デバイスのうちの一のデバイスから、第１のＰＡＳＩＤステート更新リクエストを受信すると、第１のＰＡＳＩＤステートエントリのアトミック修正を実行し、前記第１のＰＡＳＩＤステートエントリの前記レイジー無効化ステートを読み出して、前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスＴＬＢエントリを同期するべく、前記一のデバイスに、ＰＡＳＩＤステート更新応答を送信する、マルチコアプロセッサ。
［項目２１］
前記第１のＰＡＳＩＤステートエントリの前記アトミック修正は、
レイジー無効化ステートを含む前記第１のＰＡＳＩＤステートエントリを読み出すこと、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、アクティブリファレンスカウントをインクリメントすること、および、
前記第１のＰＡＳＩＤステート更新リクエストが、アクティベーション更新を示す場合には、前記レイジー無効化ステートをクリアすること、を含む、項目２０に記載のマルチコアプロセッサ。
［項目２２］
前記メモリ管理ユニットは更に、
オペレーティングシステムからのＴＬＢシュートダウンを処理する、項目２０または２１に記載のマルチコアプロセッサ。
［項目２３］
前記ＴＬＢシュートダウンを処理することは、
ＰＡＳＩＤステートエントリを読み出すこと、および、
前記ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにレイジー無効化フィールドを設定すること、を含む、項目２２に記載のマルチコアプロセッサ。
［項目２４］
前記ＴＬＢシュートダウンを処理することは、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記ＴＬＢにおける仮想アドレス変換エントリを無効化すること、および、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、項目２３に記載のマルチコアプロセッサ。
［項目２５］
前記ＰＡＳＩＤステートエントリに前記レイジー無効化フィールドを設定することは、ロックド比較交換命令（locked compare-and-exchange instruction）およびアトミック読み出し／修正／書き込みの少なくとも１つであるオペレーションを使用して実行される、項目２３に記載のマルチコアプロセッサ。
［項目２６］
マルチコアシステムであって、
複数の仮想アドレス変換エントリを含む複数のページテーブルを格納するメモリと、
第１の複数の同種処理コアと、
異種処理デバイスと、
前記複数の仮想アドレス変換エントリを格納するＴＬＢと、
前記ＴＬＢに接続され、前記複数の仮想アドレス変換エントリの一部に対応する複数のプロセスアドレス空間識別子（ＰＡＳＩＤ）ステートエントリを保持するメモリ管理ユニットとを備え、
前記複数のＰＡＳＩＤステートエントリはそれぞれ、レイジー無効化ステートを含み、
前記メモリ管理ユニットは、前記マルチコアシステムにおける複数の異種デバイスのうちの一のデバイスから、第１のＰＡＳＩＤステート更新リクエストを受信すると、第１のＰＡＳＩＤステートエントリのアトミック修正を実行し、前記第１のＰＡＳＩＤステートエントリの前記レイジー無効化ステートを読み出して、前記ＰＡＳＩＤに対応する仮想アドレス変換エントリを、アクティベーションの前にシステムページテーブルと同期する必要があるかを判断し、
前記メモリ管理ユニットは、少なくとも前記レイジー無効化ステートが読み出されると、アクティベーションの前にデバイスＴＬＢエントリを同期するべく、前記一のデバイスに、ＰＡＳＩＤステート更新応答を送信する、マルチコアシステム。
［項目２７］
前記メモリ管理ユニットは更に、
前記マルチコアシステムにおけるオペレーティングシステムからのＴＬＢシュートダウンを処理する、項目２６に記載のマルチコアシステム。
［項目２８］
前記ＴＬＢシュートダウンを処理することは、
前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、項目２７に記載のマルチコアシステム。
［項目２９］
前記ＴＬＢシュートダウンを処理することは、
ＰＡＳＩＤステートエントリを読み出し、
前記ＰＡＳＩＤステートエントリにおけるアクティブリファレンスカウントがゼロである場合には、前記ＰＡＳＩＤステートエントリにおけるレイジー無効化フィールドを設定することを含む、項目２７に記載のマルチコアシステム。
［項目３０］
前記ＴＬＢシュートダウンを処理することは、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記ＴＬＢにおける仮想アドレス変換エントリを無効化すること、および、
前記ＰＡＳＩＤステートエントリにおける前記アクティブリファレンスカウントがゼロでない場合には、前記複数の異種デバイスのうちの一のデバイスのデバイスＴＬＢエントリを無効化すること、を含む、項目２９に記載のマルチコアシステム。
【図１】
0006032855.tif 000002
【図２】
0006032855.tif 000003
【図３】
0006032855.tif 000004
【図４】
0006032855.tif 000005
【図５】
0006032855.tif 000006
【図６】
0006032855.tif 000007