(57)【要約】  各態様は、仮想メモリページ共有可能性を管理するシステムおよび方法を含む。プロセッサまたはメモリ管理ユニットが、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定してもよい。プロセッサまたはメモリ管理ユニットは、アウタードメインプロセッサが仮想メモリページにアクセスすることを試みるかまたは試みたときに監視されてもよい。プロセッサは、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して、仮想メモリページに対して仮想メモリページ動作を実行してもよい。
2017530436.tif 000002
【特許請求の範囲】
【請求項１】
仮想メモリページ共有可能性を管理する方法であって、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視するステップと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップとを含む方法。
【請求項２】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップは、前記仮想メモリページに対して仮想メモリページ動作を実行するステップを含む、請求項1に記載の方法。
【請求項３】
前記仮想メモリページに対して仮想メモリページ動作を実行するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するステップを含む、請求項2に記載の方法。
【請求項４】
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するステップを含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するステップは、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するステップを含む、請求項3に記載の方法。
【請求項５】
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットを設定するステップを含み、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更するステップを含む、請求項4に記載の方法。
【請求項６】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するステップをさらに含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するステップは、前記割込みに基づいて前記ページテーブル内の前記表示を変更するステップを含む、請求項3に記載の方法。
【請求項７】
前記仮想メモリページに対して仮想メモリページ動作を実行するステップは、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定するステップを含む、請求項2に記載の方法。
【請求項８】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するステップをさらに含み、
前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定するステップは前記割込みに基づく、請求項7に記載の方法。
【請求項９】
前記仮想メモリページに関する前記アクセス許可を決定するステップは、前記割込みを許可違反に変換するステップと、前記アウタードメインプロセッサ上で実行される命令を停止するステップと、前記仮想メモリページの前記アクセス許可を変更するステップとのうちの少なくとも1つをさらに含む、請求項8に記載の方法。
【請求項１０】
前記仮想メモリページに対して仮想メモリページ動作を実行するステップは、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成するステップを含む、請求項2に記載の方法。
【請求項１１】
前記仮想メモリページに対して仮想メモリページ動作を実行するステップは、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに対する管理動作を実行するステップを含む、請求項2に記載の方法。
【請求項１２】
前記仮想メモリページに対する前記管理動作は、前記仮想メモリページをピニングするかどうかを判定することと、前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することとの少なくとも一方を含む、請求項11に記載の方法。
【請求項１３】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガするステップを含む、請求項1に記載の方法。
【請求項１４】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップは、メモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせるステップを含む、請求項13に記載の方法。
【請求項１５】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップは、前記アウタードメインプロセッサの少なくとも一部をストールさせるステップを含む、請求項13に記載の方法。
【請求項１６】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップは、前記アウタードメインプロセッサにコンテキスト切替え動作を実行させるステップを含む、請求項13に記載の方法。
【請求項１７】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するステップは、メモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させるステップを含む、請求項13に記載の方法。
【請求項１８】
前記特定のポリシーは、読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含む、請求項17に記載の方法。
【請求項１９】
ホストプロセッサに前記ページフォールトを通知するステップをさらに含む、請求項13に記載の方法。
【請求項２０】
ホストプロセッサに通知するステップは、ホストOSプロセッサに対する割込みをトリガするステップを含む、請求項19に記載の方法。
【請求項２１】
ホストプロセッサに通知するステップは、メモリに値を書き込むステップを含む、請求項19に記載の方法。
【請求項２２】
ホストプロセッサに通知するステップは、レジスタに値を書き込むステップを含む、請求項19に記載の方法。
【請求項２３】
コンピューティングデバイスであって、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するための手段と、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視するための手段と、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段とを備えるコンピューティングデバイス。
【請求項２４】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段は、前記仮想メモリページに対して仮想メモリページ動作を実行するための手段を含む、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記仮想メモリページに対して仮想メモリページ動作を実行するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するための手段を備える、請求項24に記載のコンピューティングデバイス。
【請求項２６】
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するための手段を備え、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するための手段は、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するための手段を含む、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットを設定するための手段を備え、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更するための手段を備える、請求項26に記載のコンピューティングデバイス。
【請求項２８】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するための手段をさらに備え、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するための手段は、前記割込みに基づいて前記ページテーブル内の前記表示を変更するための手段を備える、請求項25に記載のコンピューティングデバイス。
【請求項２９】
前記仮想メモリページに対して仮想メモリページ動作を実行するための手段は、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定するための手段を備える、請求項24に記載のコンピューティングデバイス。
【請求項３０】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するための手段をさらに備え、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定することは、前記割込みに基づく、請求項29に記載のコンピューティングデバイス。
【請求項３１】
前記仮想メモリページに関する前記アクセス許可を決定するための手段は、前記割込みを許可違反に変換するための手段と、前記アウタードメインプロセッサ上で実行される命令を停止するための手段と、前記仮想メモリページの前記アクセス許可を変更するための手段とのうちの少なくとも1つをさらに備える、請求項30に記載のコンピューティングデバイス。
【請求項３２】
前記仮想メモリページに対して仮想メモリページ動作を実行するための手段は、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成するための手段を備える、請求項24に記載のコンピューティングデバイス。
【請求項３３】
前記仮想メモリページに対して仮想メモリページ動作を実行するための手段は、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに対する管理動作を実行するための手段を備える、請求項24に記載のコンピューティングデバイス。
【請求項３４】
前記仮想メモリページに対する前記管理動作は、前記仮想メモリページをピニングするかどうかを判定することと、前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することの少なくとも一方を含む、請求項33に記載のコンピューティングデバイス。
【請求項３５】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガするための手段を備える、請求項23に記載のコンピューティングデバイス。
【請求項３６】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段は、メモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせるための手段を備える、請求項35に記載のコンピューティングデバイス。
【請求項３７】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段は、前記アウタードメインプロセッサの少なくとも一部をストールさせるための手段を備える、請求項35に記載のコンピューティングデバイス。
【請求項３８】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段は、前記アウタードメインプロセッサにコンテキスト切替え動作を実行させるための手段を備える、請求項35に記載のコンピューティングデバイス。
【請求項３９】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行するための手段は、メモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させるための手段を備える、請求項35に記載のコンピューティングデバイス。
【請求項４０】
前記特定のポリシーは、読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含む、請求項39に記載のコンピューティングデバイス。
【請求項４１】
ホストプロセッサに前記ページフォールトを通知するための手段をさらに備える、請求項35に記載のコンピューティングデバイス。
【請求項４２】
ホストプロセッサに通知するための手段は、ホストOSプロセッサに対する割込みをトリガするための手段を備える、請求項41に記載のコンピューティングデバイス。
【請求項４３】
ホストプロセッサに通知するための手段は、メモリに値を書き込むための手段を備える、請求項41に記載のコンピューティングデバイス。
【請求項４４】
ホストプロセッサに通知するための手段は、レジスタに値を書き込むための手段を備える、請求項41に記載のコンピューティングデバイス。
【請求項４５】
コンピューティングデバイスであって、
動作を実行するようにプロセッサ実行可能な命令によって構成されたプロセッサを備え、前記動作は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することとを含むコンピューティングデバイス。
【請求項４６】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記仮想メモリページに対して仮想メモリページ動作を実行することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項45に記載のコンピューティングデバイス。
【請求項４７】
前記プロセッサは、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項４８】
前記プロセッサは、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することを含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項47に記載のコンピューティングデバイス。
【請求項４９】
前記プロセッサは、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットに設定することを含み、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項48に記載のコンピューティングデバイス。
【請求項５０】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成され、
前記プロセッサは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記割込みに基づいて前記ページテーブル内の前記表示を変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項47に記載のコンピューティングデバイス。
【請求項５１】
前記プロセッサは、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５２】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成され、
前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定することは前記割込みに基づく、請求項51に記載のコンピューティングデバイス。
【請求項５３】
前記プロセッサは、前記仮想メモリページに関する前記アクセス許可を決定することが、前記割込みを許可違反に変換することと、前記アウタードメインプロセッサ上で実行される命令を停止することと、前記仮想メモリページの前記アクセス許可を変更することとのうちの少なくとも1つをさらに含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項52に記載のコンピューティングデバイス。
【請求項５４】
前記プロセッサは、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５５】
前記プロセッサは、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに対する管理動作を実行することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５６】
前記仮想メモリページに対する前記管理動作は、前記仮想メモリページをピニングするかどうかを判定することと、前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することとの少なくとも一方を含む、請求項55に記載のコンピューティングデバイス。
【請求項５７】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガすることを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項45に記載のコンピューティングデバイス。
【請求項５８】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、メモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせることを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項57に記載のコンピューティングデバイス。
【請求項５９】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記アウタードメインプロセッサの少なくとも一部をストールさせることを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項57に記載のコンピューティングデバイス。
【請求項６０】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記アウタードメインプロセッサにコンテキスト切替え動作を実行させることを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項57に記載のコンピューティングデバイス。
【請求項６１】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、メモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させることを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項57に記載のコンピューティングデバイス。
【請求項６２】
前記特定のポリシーは、読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含む、請求項61に記載のコンピューティングデバイス。
【請求項６３】
前記プロセッサは、ホストプロセッサに前記ページフォールトを通知することをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項57に記載のコンピューティングデバイス。
【請求項６４】
前記プロセッサは、ホストプロセッサに通知することが、ホストOSプロセッサに対する割込みをトリガすることを含むように動作を実行するためのプロセッサ実行可能な命令によって構成される、請求項63に記載のコンピューティングデバイス。
【請求項６５】
前記プロセッサは、ホストプロセッサに通知することが、メモリに値を書き込むことを含むように動作を実行するためのプロセッサ実行可能な命令によって構成される、請求項63に記載のコンピューティングデバイス。
【請求項６６】
前記プロセッサは、ホストプロセッサに通知することが、レジスタに値を書き込むことを含むように動作を実行するためのプロセッサ実行可能な命令によって構成される、請求項63に記載のコンピューティングデバイス。
【請求項６７】
仮想メモリページ共有可能性を管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することとを含む非一時的コンピュータ可読記憶媒体。
【請求項６８】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記仮想メモリページに対して仮想メモリページ動作を実行することを含むようにプロセッサに動作を実行させるように構成される、請求項67に記載の非一時的コンピュータ可読記憶媒体。
【請求項６９】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することを含むようにプロセッサに動作を実行させるように構成される、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７０】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することを含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することを含むようにプロセッサに動作を実行させるように構成される、請求項69に記載の非一時的コンピュータ可読記憶媒体。
【請求項７１】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットを設定することを含み、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更することを含むようにプロセッサに動作を実行させるように構成される、請求項70に記載の非一時的コンピュータ可読記憶媒体。
【請求項７２】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作をプロセッサに実行させるように構成され、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記割込みに基づいて前記ページテーブル内の前記表示を変更することを含む、請求項69に記載の非一時的コンピュータ可読記憶媒体。
【請求項７３】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定することを含むようにプロセッサに動作を実行させるように構成される、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７４】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作をプロセッサに実行させるように構成され、
前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定することは前記割込みに基づく、請求項73に記載の非一時的コンピュータ可読記憶媒体。
【請求項７５】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに関する前記アクセス許可を決定することが、前記割込みを許可違反に変換することと、前記アウタードメインプロセッサ上で実行される命令を停止することと、前記仮想メモリページの前記アクセス許可を変更することとのうちの少なくとも1つをさらに含むようにプロセッサに動作を実行させるように構成される、請求項74に記載の非一時的コンピュータ可読記憶媒体。
【請求項７６】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成することを含むようにプロセッサに動作を実行させるように構成される、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７７】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに対して仮想メモリページ動作を実行することが、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに対する管理動作を実行することを含むようにプロセッサに動作を実行させるように構成される、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７８】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに対する前記管理動作が、前記仮想メモリページをピニングするかどうかを判定することと、前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することとの少なくとも一方を含むようにプロセッサに動作を実行させるように構成される、請求項77に記載の非一時的コンピュータ可読記憶媒体。
【請求項７９】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガすることを含むようにプロセッサに動作を実行させるように構成される、請求項67に記載の非一時的コンピュータ可読記憶媒体。
【請求項８０】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することは、メモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせることを含む、請求項79に記載の非一時的コンピュータ可読記憶媒体。
【請求項８１】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記アウタードメインプロセッサの少なくとも一部をストールさせることを含むようにプロセッサに動作を実行させるように構成される、請求項79に記載の非一時的コンピュータ可読記憶媒体。
【請求項８２】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、前記アウタードメインプロセッサにコンテキスト切替え動作を実行させることを含むようにプロセッサに動作を実行させるように構成される、請求項79に記載の非一時的コンピュータ可読記憶媒体。
【請求項８３】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して動作を実行することが、メモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させることを含むようにプロセッサに動作を実行させるように構成される、請求項79に記載の非一時的コンピュータ可読記憶媒体。
【請求項８４】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記特定のポリシーが読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含むようにプロセッサに動作を実行させるように構成される、請求項83に記載の非一時的コンピュータ可読記憶媒体。
【請求項８５】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、ホストプロセッサに前記ページフォールトを通知することをさらに含む動作をプロセッサに実行させるように構成される、請求項79に記載の非一時的コンピュータ可読記憶媒体。
【請求項８６】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、ホストプロセッサに通知することが、ホストOSプロセッサに対する割込みをトリガすることを含むようにプロセッサに動作を実行させるように構成される、請求項85に記載の非一時的コンピュータ可読記憶媒体。
【請求項８７】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、ホストプロセッサに通知することが、メモリに値を書き込むことを含むようにプロセッサに動作を実行させるように構成される、請求項85に記載の非一時的コンピュータ可読記憶媒体。
【請求項８８】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、ホストプロセッサに通知することが、レジスタに値を書き込むことを含むようにプロセッサに動作を実行させるように構成される、請求項85に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、その内容全体が参照によって本明細書に組み込まれる、2014年7月18日に出願された「On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory」という名称の米国仮出願第62/026,319号の優先権の利益を主張する。
【背景技術】
【０００２】
異種共有アーキテクチャ(HSA)において、共有仮想メモリ(SVM)は、複数のプロセッサが仮想メモリロケーションにアクセスするのを可能にするメモリ管理手法である。共有仮想メモリを使用して、中央プロセッサユニット(CPU)などの1つのプロセッサ上で動作するアプリケーションからの単一プロセス仮想アドレス空間が、グラフィックスプロセッサユニット(GPU)またはデジタル信号プロセッサ(DSP)などの別のプロセッサ上で動作する他のスレッドまたはカーネル間で共有される場合がある。様々なプロセッサが、仮想物理アドレス変換に関する各アプリケーション用の単一のページテーブルを共有する場合があり、これは、各プロセッサ用のページテーブルを複製することよりも効率的な手法である。
【０００３】
フルメモリ共有仮想メモリでは、スレッドまたはカーネルにメモリが割り振られるときに、データが複数のプロセッサと共有されるかどうかを判定することは不可能である。この結果、すべてのユーザアプリケーションメモリが異種コンピューティングに関して共有可能とマーク付けされる場合がある。メモリ一貫性を維持するために、共有可能とマーク付けされたメモリはスヌープ活動に関連付けられ、スヌープ活動は、共有可能とマーク付けされるメモリの量が増すにつれて増大する。しかし、実際には、スレッド間ではずっと少ない量のメモリが共有されるので、すべてのユーザメモリに共有可能とマーク付けするのは非効率的である。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な態様は、仮想メモリページ共有可能性をより有効に管理することによってコンピューティングデバイスの性能および機能を向上させる方法であって、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップと、アウタードメインプロセッサによる仮想メモリページにアクセスする試みを監視するステップと、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して動作を実行するステップとを含んでもよい方法を含む。一態様では、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して動作を実行するステップは、その仮想メモリページに対して仮想メモリページ動作を実行するステップを含んでもよい。さらなる態様では、仮想メモリページに対して仮想メモリページ動作を実行するステップは、仮想メモリページがアウタードメインプロセッサと共有可能であることを示すようにページテーブル内の表示を変更するステップを含んでもよい。
【０００５】
一態様では、仮想メモリページがアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップは、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブルの既存のページテーブルフィールド内に設定するステップを含んでもよく、仮想メモリページがアウタードメインプロセッサと共有可能であることを示すようにページテーブル内の表示を変更するステップは、ページテーブルの既存のページテーブルフィールド内の表示を変更するステップを含んでもよい。一態様では、仮想メモリページがアウタードメインプロセッサと共有可能ではないことの表示をページテーブルの既存のページテーブルフィールド内に設定するステップは、仮想メモリページがアウタードメインプロセッサと共有可能ではないことを示す少なくとも1つの既存のビットをページテーブルのページテーブルフィールド内に設定するステップを含んでもよく、ページテーブルの既存のページテーブルフィールド内の表示を変更するステップは、仮想メモリページがアウタードメインプロセッサと共有可能であることを示すページテーブルのページテーブルフィールドの少なくとも1つの既存のビットを変更するステップを含んでもよい。
【０００６】
さらなる態様では、この方法は、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して割込みを生成するステップを含んでもよく、仮想メモリページがアウタードメインプロセッサと共有可能であることを示すようにページテーブル内の表示を変更するステップは、割込みに基づいてページテーブル内の表示を変更するステップを含んでもよい。一態様では、仮想メモリページに対して仮想メモリページ動作を実行するステップは、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すように仮想メモリページに関するアクセス許可を決定するステップを含んでもよい。
【０００７】
さらなる態様では、この方法は、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して割込みを生成するステップを含んでもよく、その場合、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すように仮想メモリページに関するアクセス許可を決定するステップは、割込みに基づく。一態様では、仮想メモリページに関するアクセス許可を決定するステップは、割込みを許可違反に変換するステップと、アウタードメインプロセッサ上で実行される命令を停止するステップと、仮想メモリページのアクセス許可を変更するステップとのうちの少なくとも1つをさらに含んでもよい。一態様では、仮想メモリページに対して仮想メモリページ動作を実行するステップは、仮想メモリページに対して試みられたアクセスに基づいて仮想メモリページに関するデバッギング情報を生成するステップを含んでもよい。
【０００８】
一態様では、仮想メモリページに対して仮想メモリページ動作を実行するステップは、仮想メモリページに対して試みられたアクセスに基づいて仮想メモリページに関する管理動作を実行するステップを含んでもよく、仮想メモリページに対して試みられたアクセスに基づいて仮想メモリページに関する管理動作を実行するステップは、仮想メモリページをピニングするかどうかを判定するステップと、仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定するステップとのうちの少なくとも一方を含んでもよい。一態様では、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して動作を実行するステップは、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答してページフォールトをトリガするステップを含んでもよい。
【０００９】
一態様では、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して動作を実行するステップは、メモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせるステップ、アウタードメインプロセッサの少なくとも一部をストールさせるステップと、アウタードメインプロセッサにコンテキスト切替え動作を実行させるステップ、および/またはメモリ管理ユニットに、特定のポリシーを有するアウタードメインプロセッサへのさらなるデータ応答を生成させるステップを含んでもよい。一態様では、特定のポリシーは、読取りに関してゼロ値を返すことと書込みを無視することの一方を含んでもよい。さらなる態様では、この方法は、ホストプロセッサにページフォールトを通知してもよい。いくつかの態様では、ホストプロセッサに通知するステップは、ホストOSプロセッサへの割込みをトリガするステップ、メモリに値を書き込むステップ、および/またはレジスタに値を書き込むステップを含んでもよい。
【００１０】
さらなる態様は、上で説明した態様方法の動作の機能を実行するための手段を含むコンピューティングデバイスを含む。さらなる態様は、上で説明した態様方法の動作を実行するようにプロセッサ実行可能命令によって構成されたプロセッサを有するコンピューティングデバイスを含む。さらなる態様は、上で説明した態様方法の動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令が記憶された非一時的プロセッサ可読記憶媒体を含む。
【００１１】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示す。上記の概略的な説明および下記の発明を実施するための形態とともに、図面は、開示する態様を限定するのではなく、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１２】
【図１】様々な態様を実装するコンピューティングデバイスにおいて使用される場合がある例示的なシステムオンチップ(SOC)アーキテクチャを示す構成要素ブロック図である。
【図２】様々な態様を実装するために使用される場合がある例示的なマルチコアプロセッサアーキテクチャを示す機能ブロック図である。
【図３】例示的な共有仮想メモリシステムを示す機能ブロック図である。
【図４】仮想メモリページ共有可能性を管理する態様方法を示すプロセスフロー図である。
【図５】仮想メモリページ共有可能性を管理する別の態様方法を示すプロセスフロー図である。
【図６Ａ】仮想メモリページ共有可能性を管理する別の態様方法を示すプロセスフロー図である。
【図６Ｂ】仮想メモリページ共有可能性を管理する別の態様方法を示すプロセスフロー図である。
【図７】様々な態様とともに使用するのに適した例示的なモバイルデバイスの構成要素ブロック図である。
【図８】様々な態様とともに使用するのに適した例示的なサーバの構成要素ブロック図である。
【図９】様々な態様とともに使用するのに適した例示的なラップトップコンピュータの構成要素ブロック図である。
【発明を実施するための形態】
【００１３】
添付の図面を参照しながら、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。特定の例および実装形態になされる参照は、例示の目的のためであり、特許請求の範囲を限定することを意図していない。
【００１４】
「例示的な」という単語は、本明細書では、「例、実例、または例証として働く」を意味するのに使用される。本明細書において「例示的」として説明されるいかなる実装形態も、必ずしも他の実施態様よりも好ましいか、または有利であると解釈されるべきではない。
【００１５】
「モバイルデバイス」および「コンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤー、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、プログラム可能プロセッサおよびメモリを含む同様の電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では交換可能に使用される。様々な態様は、比較的限られた処理電力および/または電力蓄積容量を有する場合があるセルラー電話および他の携帯コンピューティングプラットフォームなどのモバイルデバイスにおいて特に有用であるが、これらの態様は、概して、スレッド、プロセス、または命令の他のシーケンスを処理デバイスまたは処理コアに割り振る任意のコンピューティングデバイスにおいても有用である。
【００１６】
「システムオンチップ」(SOC)という用語は、本明細書では、単一の基板上に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すために使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能のための回路を含んでもよい。単一のSOCは、任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)も含んでもよい。SOCはまた、統合されたリソースおよびプロセッサを制御するための、また周辺デバイスを制御するためのソフトウェアを含んでもよい。
【００１７】
「マルチコアプロセッサ」という用語は、本明細書では、プログラム命令を読み取り、実行するように構成された2つ以上の独立した処理デバイスまたは処理コア(たとえば、CPUコア)を含む単一の集積回路(IC)チップまたはチップパッケージを指すために使用される。SOCは、複数のマルチコアプロセッサを含んでもよく、SOCにおける各プロセッサは、「コア」または「処理コア」と呼ばれる場合がある。「マルチプロセッサ」という用語は、本明細書では、プログラム命令を読み取り、実行するように構成された2つ以上の処理ユニットを含むシステムまたはデバイスを指すために使用される。「プロセス」という用語は、本明細書では、プロセッサ上で実行することができる命令のシーケンスを指すために使用される。
【００１８】
本出願で使用する「構成要素」、「モジュール」、「システム」などの用語は、限定はされないが、特定の動作もしくは機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどの、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよいが、それらに限定されない。例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素は、プロセスおよび/または実行スレッドの中に存在する場合があり、1つの構成要素は、1つのプロセッサまたはコアに存在する場合があり、ならびに/あるいは2つ以上のプロセッサまたはコアの間に分散する場合がある。加えて、これらの構成要素は、様々な命令および/またはデータ構造が記憶された様々な非一時的コンピュータ可読媒体から実行されてもよい。各構成要素は、ローカルおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているコンピュータ、プロセッサ、および/または通信方法に関するプロセスによって通信してもよい。
【００１９】
増大する消費者の要求に追従するために、モバイルデバイスは、より機能が豊富になり、今や一般的に、複数の処理デバイス、マルチコアプロセッサ、システムオンチップ(SOC)、およびモバイルデバイスのユーザがモバイルデバイスにおいて複雑なソフトウェアアプリケーション(たとえば、ビデオおよびオーディオストリーミングならびに/または処理アプリケーション、ネットワークゲーミングアプリケーションなど)を実行することを可能にする他のリソースを含む。複雑なソフトウェアアプリケーションの実行では、ますます異種共有アーキテクチャ(HSA)におけるマルチスレッド処理技法が使用されるようになっている。共有仮想メモリ(SVMとも呼ばれる)は、複数の処理デバイスが、いくつかの処理デバイス間で共有される単一の仮想メモリ空間にアクセスするのを可能にする。たとえば、CPUなどの1つのプロセッサ上で動作するアプリケーションからの単一プロセス仮想アドレス空間が、GPUまたはDSPなどの別のプロセッサ上で動作する他のスレッドまたはカーネル間で共有される場合がある。各プロセッサ用のページテーブルを複製することと比較して効率を高め、かつソフトウェア管理をより容易にするように、コンピューティングデバイス内の様々なプロセッサが、仮想物理アドレス変換に関する各アプリケーション用の単一のページテーブルを共有する場合がある。
【００２０】
フルメモリ共有仮想メモリでは、一般に、メモリがスレッドまたはカーネルに割り振られるときにデータが複数のプロセッサと共有されるかどうかを事前に判定することは不可能である。この結果、すべてのユーザアプリケーションメモリが異種コンピューティングに関して共有可能とマーク付けされる場合がある。プロセッサ間で共有される場合があるメモリは、共有可能とマーク付けされるメモリの量が増すにつれて増大する場合がある、スヌーピングまたは他のコヒーレンシ動作などのコヒーレンシオーバーヘッドを伴う。実際には、スレッド間ではずっと少ない量のメモリが実際に共有されるので、すべてのユーザメモリに共有可能とマーク付けするのは非効率的である。
【００２１】
共有仮想メモリの非効率的な割振りに対する以前の可能な解決策では、ページテーブルにおける追加のフィールドが必要であり、それによって、変更後のページテーブルが標準化されたチップアーキテクチャと矛盾することがあった。そのような可能な解決策ではまた、オペレーティングシステムが、トランスレーションルックアサイドバッファ(TLB)ミスなど、メモリアドレス変換を見つけるのを失敗した場合に対処する必要があり、メモリアドレス変換(たとえば、ページウォークプロセス)を判定するために不必要にプロセッサリソースが消費された。さらに、追加のメタデータまたは追加のデータ構造などの追加の情報が必要であるので、決定が遅れ、かつ当該の仮想メモリロケーションへのアクセス速度が低下する。
【００２２】
様々な態様では、仮想メモリページ共有可能性を管理するシステムおよび方法を提供することによってコンピューティングデバイスの機能を向上させる。いくつかの態様では、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示がページテーブル内に設定される場合がある。アウタードメインプロセッサが仮想メモリページへのアクセスを試みていると判定される場合があり、その判定に基づいて、仮想メモリページに対して仮想メモリページ動作が実行される場合がある。いくつかの態様では、複数の仮想メモリページの各々がアウタードメインプロセッサと共有可能ではないことの表示がページテーブル内に設定されてもよい。この表示は、ページテーブル内に表される実質的にすべての仮想メモリページについて設定されてもよい。
【００２３】
いくつかの態様では、アウタードメインプロセッサが仮想メモリページへのアクセスを試みたときに割込みが生成されてもよく、その場合、その仮想メモリページがアウタードメインプロセッサと共有可能ではないことの表示が設定される。たとえば、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに基づいて、メモリ管理ユニット(MMU)またはシステムメモリ管理ユニット(SMMU)が、ページテーブル(たとえば、ページテーブルフィールド)には仮想メモリページが外部共有可能ではないことの表示が含まれると判定してもよい。いくつかの態様では、MMUはプロセッサに内蔵されてもよい。いくつかの態様では、SMMUはプロセッサの外部ユニットであってもよい。MMUおよび/またはSMMUは、様々な他の構成で設けられてもよい。MMUおよびSMMUは広くメモリ管理ユニットと呼ばれる場合がある。ページテーブルエントリのそのような判定に応答して、MMUまたはSMMUが割込みを生成する場合があり、アウタードメインプロセッサのMMUまたはSMMUが、アウタードメインプロセッサ上のページフォールトを生じさせる(トリガする)ことがある。そのような場合、アウタードメインプロセッサがストールすることがあり、あるいはアウタードメインプロセッサがコンテキストを別のプロセスまたはスレッドに切り替えることがある。いくつかの態様では、アウタードメインプロセッサのストールは、直接ページフォールトに応答して生じる場合がある。あるいは、SMMUまたはMMUが、トランザクションをストールさせ、ページフォールトを生じさせることによって間接的にアウタードメインプロセッサのストールを生じさせることがあり、この場合、アウタードメインプロセッサとSMMUまたはMMUとの間ならびにアウタードメインプロセッサおよびSMMUまたはMMU内のトランザクションパイプラインおよび/またはキューの輻輳が増大することがある。MMUまたはSMMUは、たとえば、ホストオペレーティングシステムプロセッサにページフォールトを通知するために、ホストオペレーティングシステムプロセッサに割込みを送信してもよい。ホストオペレーティングシステムプロセッサは、割込みを受信したことに応答して、割込みハンドラまたは割込みサービスルーチンをトリガしてもよい。次いで、1つまたは複数の仮想メモリページ動作を仮想メモリページに対して実行してもよい。
【００２４】
いくつかの態様では、仮想メモリページ動作は、仮想メモリページをアウタードメインプロセッサと共有するようにページテーブル表示を変更してもよい。たとえば、ページテーブル内に表示を設定することは、仮想メモリページがアウタードメインプロセッサと共有可能ではないことの表示をページテーブルの既存のページテーブルフィールド内に設定し、ページテーブルの既存のページテーブルフィールドにおいて仮想メモリページをアウタードメインプロセッサと共有することの表示を変更することをさらに含んでもよい。いくつかの態様では、ページテーブルのページテーブルフィールド内の少なくとも1つの既存のビットが、仮想メモリページがアウタードメインプロセッサと共有可能であるかまたは共有可能ではないことを示してもよい。共有可能性の表示を変更するには、ページテーブルのページテーブルフィールドの少なくとも1つの既存のビットが仮想メモリページをアウタードメインプロセッサと共有するように変更されてもよい。上述のように、いくつかの態様では、アウタードメインプロセッサが仮想メモリページへのアクセスを試みたと判定されたときに割込みが生成されてもよい。そのような判定に応答して、ページテーブル表示が、割込みに基づいて仮想メモリページをアウタードメインプロセッサと共有するように変更されてもよい。
【００２５】
代替または追加として、いくつかの態様では、仮想メモリページ動作は、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すように仮想メモリページに関するアクセス許可を決定することを含んでもよい。いくつかの態様では、アウタードメインプロセッサが仮想メモリページにアクセスするのを試みたと判定されたときに割込みが生成されてもよく、仮想メモリページに関するアクセス許可が、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すように割込みに基づいて決定されてもよい。
【００２６】
代替または追加の態様では、仮想メモリページに対して試みられたアクセスに基づいて、仮想メモリページに関してデバッギング情報が生成されてもよい。追加または代替として、仮想メモリページに対して試みられたアクセスに基づいて仮想メモリページに対して管理動作が実行されてもよい。仮想メモリページに対する管理動作の例には、仮想メモリページをピニングするかどうかを判定すること、および仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することが含まれる。
【００２７】
代替または追加の態様では、仮想メモリページ動作は、MMUまたはSMMUに、特定のポリシーを有するアウタードメインプロセッサへのさらなるデータ応答を生成させることを含んでもよい。特定のポリシーは、読取りに対してゼロ値を返すことおよび書込みを無視すること(リードアズゼロ(read-as-zero)、ライトイグノア(write-ignore)、またはRAZ/WIとも呼ばれる)を含んでもよい。
【００２８】
様々な態様は、システムオンチップ(SOC)を含む、多数の単一プロセッサおよびマルチプロセッサのコンピュータシステム上で実装されてもよい。図1は、様々な態様を実装するコンピューティングデバイス内で使用される場合がある例示的なシステムオンチップ(SOC)100アーキテクチャを示す。SOC100は、デジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異種プロセッサを含んでもよい。SOC100はまた、異種プロセッサ102、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含んでもよい。各プロセッサ102、104、106、108、110は、1つまたは複数のコア(たとえば、処理コア(図示せず))を含んでもよく、各プロセッサ/コアは、他のプロセッサ/コアとは独立に動作を実行してもよい。SOC100は、実行のための1つまたは複数の処理コアに対して、スレッド、プロセス、またはデータフローなどの、命令のシーケンスをスケジュールするように構成されたスケジューラを備えるオペレーティングシステム(たとえば、FreeBSD、LINUX、OS X、Microsoft Windows 8など)を実行するプロセッサを含んでもよい。
【００２９】
SOC100はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ウェブブラウザにおいてレンダリングするための符号化されたオーディオ信号およびビデオ信号の処理のような、他の特殊な動作を実行するための、アナログ回路およびカスタム回路114を含んでもよい。SOC100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、およびコンピューティングデバイス上で実行されているプロセッサおよびソフトウェアプログラムをサポートするために使用される他の同様の構成要素のような、システム構成要素およびリソース116をさらに含んでもよい。
【００３０】
システム構成要素およびリソース116および/またはカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースするための回路を含んでもよい。プロセッサ102、104、106、108は、相互接続/バスモジュール124を介して、互いに通信するとともに、1つまたは複数のメモリ要素112、システム構成要素およびリソース116、およびカスタム回路114と通信してもよく、相互接続/バスモジュール124は、再構成可能な論理ゲートのアレイを含み、ならびに/あるいはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装してもよい。通信は、高性能ネットワークオンチップ(NoC)などの高度な相互接続によって実現されてもよい。
【００３１】
SOC100は、クロック118および電圧調整器120のような、SOCの外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含んでもよい。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP102、モデムプロセッサ104、グラフィックスプロセッサ106、アプリケーションプロセッサ108など)の2つ以上によって共有されてもよい。
【００３２】
上述のSOC100に加えて、様々な態様が、複数のプロセッサ、マルチコアプロセッサ、またはこれらの任意の組合せを含む場合がある多種多様なコンピューティングシステムに実装されてもよい。
【００３３】
図2は、様々な態様を実装するために使用される場合がある例示的なマルチコアプロセッサアーキテクチャを示す。マルチコアプロセッサ202は、(たとえば、単一の基板、ダイ、集積チップ上などで)極めて近接した2つ以上の独立した処理コア204、206、230、232を含んでもよい。処理コア204、206、230、232が近接していることによって、メモリは、信号をチップから送出する必要がある場合に可能な周波数/クロック速度よりもはるかに高い周波数/クロック速度で動作することが可能になる。処理コア204、206、230、232が近接していることによって、オンチップメモリおよびリソース(たとえば、電圧レール)の共有、ならびにコア間のより調整された協調が可能になる。図2は4つの処理コアを示すが、これは限定ではなく、マルチコアプロセッサが4つよりも多いかまたは4つよりも少ない処理コアを含んでもよいことが諒解されよう。
【００３４】
マルチコアプロセッサ202は、レベル1(L1)キャッシュ212、214、238、および240と、レベル2(L2)キャッシュ216、226、および242とを含むマルチレベルキャッシュを含んでもよい。マルチコアプロセッサ202はまた、バス/相互接続インターフェース218と、メインメモリ220と、入力/出力モジュール222とを含んでもよい。L2キャッシュ216、226、242は、L1キャッシュ212、214、238、240よりも大きい(かつ、遅い)が、メインメモリユニット220よりも小さい(かつ、はるかに速い)ことがある。各処理コア204、206、230、232は、L1キャッシュ212、214、238、240へのプライベートアクセスを有する処理ユニット208、210、234、236を含んでもよい。処理コア204、206、230、232は、L2キャッシュ(たとえば、L2キャッシュ242)へのアクセス権を共有してもよく、または、独立したL2キャッシュ(たとえば、L2キャッシュ216、226)へのアクセスが可能であってもよい。
【００３５】
L1およびL2キャッシュは、処理ユニットによって頻繁にアクセスされるデータを記憶するために使用されてもよく、一方、メインメモリ220は、処理コア204、206、230、232によってアクセスされる、より大きいファイルおよびデータユニットを記憶するために使用されてもよい。マルチコアプロセッサ202は、処理コア204、206、230、232がメモリから順番にデータを探し、最初にL1キャッシュに、次いで、L2キャッシュに問い合わせ、次に、情報がキャッシュに記憶されていない場合にはメインメモリに問い合わせるように構成されてもよい。情報がキャッシュにもメインメモリ220にも記憶されていない場合、マルチコアプロセッサ202は、外部メモリおよび/またはハードディスクメモリ224から情報を探索してもよい。
【００３６】
処理コア204、206、230、232は、バス/相互接続インターフェース218を介して互いに通信してもよい。各処理コア204、206、230、232は、いくつかのリソースに対して排他的制御権を有し、他のリソースを他のコアと共有してもよい。
【００３７】
処理コア204、206、230、232は、互いに同等であっても、異質であってもよく、ならびに/あるいは様々な専用の機能を実装してもよい。したがって、処理コア204、206、230、232は、オペレーティングシステムの観点から対称である必要はなく(たとえば、それぞれに異なるオペレーティングシステムを実行してもよい)、あるいはハードウェアの観点からも対称である必要はない(たとえば、それぞれに異なる命令セット/アーキテクチャを実装してもよい)。
【００３８】
図1および図2を参照して上記において説明したようなマルチプロセッサハードウェア設計は、同じパッケージの内部の、多くの場合同じシリコン片上に、それぞれに異なる機能を有する複数の処理コアを含んでもよい。対称な多重処理ハードウェアは、単一のオペレーティングシステムによって制御される単一の共有されたメインメモリに接続された2つ以上の同一のプロセッサを含む。非対称のまたは「緩く結合された」多重処理ハードウェアは、独立したオペレーティングシステムによって各々制御され1つまたは複数の共有されたメモリ/リソースに接続される場合がある、2つ以上の異種プロセッサ/コアを含んでもよい。
【００３９】
図3は、例示的な共有仮想メモリシステムを示す機能ブロック図300である。ホストプロセッサ301およびアウタードメインプロセッサまたはデバイス303は、図2に示すマルチコアプロセッサアーキテクチャを含んでもよい。ホストプロセッサ301は、メモリ管理ユニット(MMU)302を含んでもよく、アウタードメインプロセッサ303はMMU305を含んでもよい。さらに、システムメモリ管理ユニット(SMMU)304は、スタンドアロンデバイスとして実装されてもよく、あるいはアウタードメインプロセッサ303などのプロセッサと一体化されてもよい。したがって、システムは、一体化されたMMU305、またはSMMU304、またはその両方を含んでもよい。ホストプロセッサ301および/またはアウタードメインプロセッサ303上でアプリケーションが実行されてもよい。いくつかの態様では、ホストプロセッサは、ホストオペレーティングシステム(OS)プロセッサを含んでもよい。
【００４０】
いくつかの態様では、MMU302は、CPUの一部として実装されてもよく、あるいは別個の集積回路などの別個のハードウェアデバイスとして実装されてもよい。いくつかの態様では、MMU305は、アウタードメインプロセッサ303に含まれてもよく、SMMU304は、アウタードメインプロセッサの外部に実装されてもよい。MMU302および305は、仮想メモリアドレスと物理メモリアドレスとの間のアドレス変換を含む仮想メモリ管理動作ならびにメモリ保護、キャッシュ制御、および通信バス調停を含む他の管理機能を実行してもよい。MMU302および305と同様に、SMMU304は、仮想メモリアドレスと物理メモリアドレスとの間のアドレス変換を含む仮想メモリ管理動作を実行してもよい。様々な処理デバイス間のアドレスマッピングプロセスおよびアドレスコヒーレンシプロセスを管理するためにMMU302、MMU305、およびSMMU304の各々に対してメモリマッピングマネージャまたは同様の動作が実施されてもよい。
【００４１】
動作時には、MMU302は、図3に計算アプリケーションAおよびBとして示されている、CPUによって実行される1つまたは複数のプロセスの代わりに仮想メモリ管理動作を実行してもよい。ホストプロセッサ301によって命令が実行されたときに、1つまたは複数のページテーブルを使用して仮想メモリにおける読取り動作および/または書込み動作を可能にするためにMMU302によって仮想アドレス変換が実行されてもよい。計算アプリケーションAおよびBの各々はそれぞれ、仮想メモリページを物理メモリページにマップするためにページテーブルAおよびページテーブルBなどのページテーブルに関連付けられてもよい。ページテーブルは、マッピングを可能にするための情報を提供する複数のフィールドを含んでもよい。SMMU304および/またはMMU305は、図3に計算ジョブA1、A2、B、およびCとして示されている、アウタードメインプロセッサ303によって実行される1つまたは複数のプロセスの代わりに仮想メモリ管理動作を実行してもよい。
【００４２】
MMU302、MMU305、およびSMMU304は、共有仮想メモリアドレス空間のメモリロケーションにアクセスしてもよい。共有仮想メモリアドレス空間は、ページ、一般には仮想メモリの連続するブロックとして区分されてもよく、ページは、メモリ割振りおよび読取り/書込み動作が実行される場合のデータ単位として働いてもよい。いくつかの態様では、MMU302、MMU305、およびSMMU304は、メモリロケーション306にアクセスするためにページテーブルAなどのページテーブルを共有してもよく、あるいは別の例として、メモリロケーション308にアクセスするためにページテーブルBを共有してもよい。したがって、ある処理デバイス上で動作するアプリケーションからの仮想アドレス空間が、別の処理デバイス上で動作する他のスレッドまたはカーネル間で共有されてもよい。ページテーブルを共有することは、処理デバイスごとにページテーブルを複製することよりも効率的である。
【００４３】
数あるメモリ管理機能のうちで特に、仮想メモリページの共有可能性が判定され、様々な処理デバイスにおいて実行されるプロセスのニーズに応じて変更されてもよい。一態様では、ページ共有可能性を管理することを目的として、CPUの処理デバイス(たとえば、ホストプロセッサ301)がインナードメインと見なされてもよく、他のプロセッサの処理デバイス(たとえば、GPUまたはDSPを含む場合があるアウタードメインプロセッサ303)がアウタードメインと見なされてもよい。インナードメインの処理デバイス(たとえば、ホストプロセッサ301)をインナードメインプロセッサと呼ぶ場合があり、アウタードメインの処理デバイス(たとえば、アウタードメインプロセッサ303)をアウタードメインプロセッサと呼ぶ場合がある。各仮想メモリページがインナー処理ドメインとアウター処理ドメインとの間で共有可能であるかあるいは共有可能ではないと示されてもよい。一例として、ARM命令セットアーキテクチャ内では、メモリアクセスが一貫性を維持し(すなわち、予測可能であり)かつコヒーレントである場合がある共有可能性ドメインが定義されてもよい。一態様では、内部共有可能とマーク付けされた仮想メモリページは、マルチプロセッサCPU間で共有されてもよく、一方、外部共有可能とマーク付けされた仮想メモリページは、CPUと他の処理デバイスとの間で共有されてもよい。したがって、ARM命令セットおよびMMU/SMMUアーキテクチャ内では、既存のページテーブルフォーマットは、ページテーブルフォーマットに対する変更または追加を必要とせずにかつページテーブルの別個のコピーを必要とせずに様々な態様において使用することができる共有可能性属性をすでに含んでいる。一例として、ページテーブルのARM外部共有可能属性が様々な態様において使用されてもよい。しかし、様々な態様は、ARM外部共有可能属性またはARMアーキテクチャシステムのいずれにも限定されず、ページテーブルに適切な属性を加える他のアーキテクチャにおいて様々な態様が使用されてもよい。
【００４４】
図4は、仮想メモリページ共有可能性をより有効に管理することによってコンピューティングデバイスの機能を向上させるようにプロセッサまたはメモリ管理ユニットによって実行される場合がある態様方法400を示すプロセスフロー図である。ブロック402において、プロセッサまたはメモリ管理ユニットは、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示を、ページテーブルAなどのページテーブル内に設定してもよい。一般に、メモリがスレッドまたはカーネルに割り振られるときにデータが複数のプロセッサと共有されるかどうかを事前に判定することは不可能である。しかし、場合によっては共有可能なすべての仮想メモリページ(一例として、ユーザアプリケーションメモリページ)を異種コンピューティングに関してアウタードメインプロセッサと共有可能に設定すると、メモリコヒーレンシを維持するのに必要なメッセージング動作および処理動作に伴うオーバーヘッドが増大する場合がある。一態様では、追加のメタデータまたは追加のデータ構造などの追加の情報を使用せずにページテーブル内のフィールドの既存のビットを使用して表示が設定されてもよい。この表示は、たとえば、ホストプロセッサ301、MMU302、アウタードメインプロセッサ303、アウタードメインプロセッサMMU305、SMMU304、または別の同様のデバイスもしくは機能によってページテーブル内に設定されてもよい。
【００４５】
一例として、ブロック402において、プロセッサまたはメモリ管理ユニットは最初、実質的にすべてのアプリケーションページ(すなわち、共有可能性表示に関連するアプリケーションページ)を「内部共有可能、外部共有不能」、すなわち、内部共有可能ドメインの処理デバイス間では共有可能であり(内部共有可能)、外部共有可能ドメインのプロセッサ間では共有不能である(外部共有不能)とマーク付けしてもよい。現在のアーキテクチャ標準と矛盾しない共有可能性表示をページテーブルフィールド内に加えると、既存の標準的なメモリアーキテクチャと矛盾しないページテーブルを維持することができる。より具体的には、一態様では、内部共有可能でありかつ外部共有可能であることを示すページテーブル内の既存のビットを使用してCPU共有専用領域および異種共有領域(すなわち、アウタードメイン処理デバイスとの共有が可能である)を表してもよい。既存のページテーブルフィールドを使用することによって、追加のフィールドのレンダリングが不要になり、さらに、仮想メモリページの共有可能性を示すうえで追加のメタデータまたはデータ構造が不要になる。さらに、ページアクセスが試みられたときにMMUまたはSMMUによって割込みを生成すると、現在のメモリ管理ユニットアーキテクチャの拡張が表される。
【００４６】
ブロック404において、プロセッサまたはメモリ管理ユニット(たとえば、プロセッサ303、MMU305、またはSMMU304)は、あるアウタードメインプロセッサによる、このアウタードメインプロセッサとの共有が可能ではないと示されている仮想メモリページにアクセスする試みまたはそのようなアクセスを求める要求を検出してもよい。一態様では、非CPU処理デバイスからの仮想メモリページにアクセスする試みまたは要求がMMU305またはSMMU304によって検出されてもよい。一例として、アウタードメインプロセッサは、仮想メモリページへのアクセスを必要とするジョブまたはその他のプロセスを実行してもよく、アウタードメインプロセッサが仮想メモリページの読取りを試みたときに、MMU305またはSMMU304は、要求された仮想メモリページに、アウタードメインプロセッサとの共有が可能ではないことの表示が付されていることを検出してもよい。
【００４７】
ブロック406において、プロセッサまたはメモリ管理ユニットは、判定に基づいて仮想メモリページに対して仮想メモリページ動作を実行してもよい。一態様では、プロセッサまたはメモリ管理ユニットによって実行される仮想メモリページ動作は、仮想メモリページをアウタードメインプロセッサと共有するようにページテーブル表示を変更することを含んでもよく、ページテーブル表示を変更することは、仮想メモリページがアウタードメインプロセッサと共有可能であることを示すようにページテーブルのページテーブルフィールド内の少なくとも1つの既存のビットを変更することを含んでもよい。代替または追加として、プロセッサまたはメモリ管理ユニットによって実行される仮想メモリページ動作は、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すように仮想メモリページに関するアクセス許可を決定することを含んでもよい。代替または追加の態様では、仮想メモリページに対して試みられたアクセスに基づいて、仮想メモリページに関してデバッギング情報が生成されてもよい。追加または代替として、仮想メモリページに対して試みられたアクセスに基づいてプロセッサまたはメモリ管理ユニットによって仮想メモリページに対して管理動作が実行されてもよい。仮想メモリページに対する管理動作の例には、仮想メモリページをピニングするかどうかを判定すること、および仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することが含まれる。プロセッサまたはメモリ管理ユニットは、仮想メモリページ動作を実行した後、ブロック404において仮想メモリページにアクセスする別の試みの有無を監視する。
【００４８】
いくつかの態様では、ページテーブルのページテーブルフィールドの既存のビットが、仮想メモリページがアウタードメインプロセッサと共有可能であるかまたは共有可能ではないことを示すように変更されてもよい。共有されたページテーブルの既存のデータ構造を使用することは、ソフトウェアプロセスと通信するか、または追加のメタデータを使用するか、または追加のデータ構造を使用して仮想メモリページの共有可能性を示すことよりも実質的に高速であり得る。したがって、追加のメタデータまたは追加のデータ構造の使用を回避すると、ページ共有可能性を管理するうえでのコンピューティングデバイスの効率および速度を向上させることができる。
【００４９】
図5は、仮想メモリページ共有可能性をより有効に管理することによってコンピューティングデバイスの機能を向上させるようにプロセッサまたはメモリ管理ユニットによって実行される場合がある別の態様方法500を示すプロセスフロー図である。ブロック502において、プロセッサまたはメモリ管理ユニットは、複数の仮想メモリページがアウタードメインプロセッサと共有可能ではないことを示すように、ページテーブル内の表示を設定してもよい。たとえば、場合によっては共有可能な実質的にすべての仮想メモリページが最初に、あるアウタードメインプロセッサと共有可能ではないとプロセッサまたはメモリ管理ユニットによってマーク付けされてもよい。動作時には、特定の仮想メモリページが、CPUまたはGPUバッファなどの別の処理デバイス、あるいは処理デバイスに割り振られる他の専用メモリ空間と共有されることがない場合もある。したがって、一態様では、プロセッサまたはメモリ管理ユニットが最初に、場合によっては共有可能な仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことを示してもよい。一態様では、プロセッサまたはメモリ管理ユニットが、追加のメタデータまたは追加のデータ構造などの追加の情報を使用せずにページテーブル内のフィールドの既存のビットを使用して表示を設定してもよい。
【００５０】
ブロック504において、プロセッサまたはメモリ管理ユニットは、あるアウタードメインプロセッサと共有可能ではないと示されている複数の仮想メモリページのうちのある仮想メモリページに対してこのアウタードメインプロセッサがアクセスする試みまたは要求があったときに、そのような試みまたは要求があったと判定してもよい。一態様では、MMU305またはSMMU304は、要求された仮想メモリページに、その仮想メモリページがアウタードメインプロセッサと共有可能ではないことの表示が付されていることを検出するように構成されてもよい。
【００５１】
ブロック506において、プロセッサまたはメモリ管理ユニットは、判定に基づいて仮想メモリページに対して仮想メモリページ動作を実行してもよい。一態様では、プロセッサまたはメモリ管理ユニットによって実行される仮想メモリページ動作は、仮想メモリページをアウタードメインプロセッサと共有するようにページテーブル表示を変更すること、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すように仮想メモリページに対するアクセス許可を決定すること、仮想メモリページに関するデバッギング情報を生成すること、仮想メモリページに対して試みられたアクセスに基づいて仮想メモリページに対する管理動作を実行することを含んでもよい。プロセッサまたはメモリ管理ユニットは、仮想メモリページ動作を実行した後、ブロック504において同じ仮想メモリページまたは別の仮想メモリページにアクセスする別の試みの有無を監視する。
【００５２】
図6Aは、仮想メモリページ共有可能性を管理するためにプロセッサまたはメモリ管理ユニットによって実行される場合がある態様方法600Aを示すプロセスフロー図である。上述の方法400と同様に、ブロック402において、プロセッサまたはメモリ管理ユニットは、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示を、ページテーブルAなどのページテーブル内に設定してもよい。一態様では、プロセッサまたはメモリ管理ユニットが、追加のメタデータまたは追加のデータ構造などの追加の情報を使用せずにページテーブル内のフィールドの既存のビットを使用して表示を設定してもよい。この表示は、たとえば、ホストプロセッサ301、MMU302、アウタードメインプロセッサMMU305、SMMU304、または別の同様の機能によってページテーブル内に設定されてもよい。
【００５３】
判定ブロック404において、プロセッサまたはメモリ管理ユニット(たとえば、プロセッサ303、MMU305、またはSMMU304)は、あるアウタードメインプロセッサが、このアウタードメインプロセッサとの共有が可能ではないと示されている仮想メモリページへのアクセスを試みたかどうかを判定してもよい。判定ブロック404における監視は、あるアウタードメインプロセッサが仮想メモリページへのアクセスを試みるまで(すなわち、判定ブロック404=「いいえ」である限り)連続的または周期的に実行されてもよい。
【００５４】
プロセッサまたはメモリ管理ユニットは、あるアウタードメインプロセッサが仮想メモリページにアクセスする試みまたは要求を行ったとの判定(すなわち、判定ブロック404=「はい」)に応答して、ブロック602において割込みを生成してもよい。たとえば、そのアウタードメインプロセッサが仮想メモリページにアクセスすることを試みるプロセスを実行したときに、MMUまたはSMMUは、仮想メモリページがそのアウタードメインプロセッサと共有可能ではないことの表示を検出し、アウタードメインプロセッサによって実行されるプロセスを停止または中止させるための割込みを生成してもよい。一態様では、MMUまたはSMMUは、仮想メモリページがアウタードメインプロセッサと共有可能ではないことを示す、ページテーブルのページテーブルフィールド内に設定された既存のビットを検出してもよく、ページテーブル内のビットパターンの検出に基づいて割込みを生成してもよい。アウタードメインプロセッサによってページアクセスが試みられたときにMMUまたはSMMUによって割込みを生成することは、現在のメモリ管理ユニットアーキテクチャと矛盾しない場合がある。一態様では、プログラム可能なレジスタを使用して割込みを有効化または無効化してもよい。割込みはフォールトであってもよく、SMMUまたはMMUのフォールトシンドロームレジスタにおいて報告されてもよい。
【００５５】
ブロック604において、プロセッサまたはメモリ管理ユニットは、アウタードメインプロセッサによるアクセスの試みに応答して要求された仮想メモリページに対して実行すべき1つまたは複数の仮想メモリページ動作を決定してもよい。たとえば、MMUまたはSMMUによって割込みが生成されたときに、割込みハンドラが、MMUまたはSMMUによって生成された割込みを受信してもよく、割込みハンドラは、要求された仮想メモリページに対して(ブロック606〜612を参照して説明される)1つまたは複数の仮想メモリページ動作を実行すべきであると判定してもよい。
【００５６】
一態様では、ブロック604において、プロセッサまたはメモリ管理ユニットは、ブロック606において仮想メモリページをアウタードメインプロセッサと共有するようにページテーブル表示を変更すべきであると判定してもよい。いくつかの態様では、ページテーブル表示を変更することは、ページテーブルのページテーブルフィールド内の少なくとも1つの既存のビットを、仮想メモリページがアウタードメインプロセッサと共有可能であることを示すように変更することを含んでもよい。
【００５７】
代替または追加として、ブロック604において、プロセッサまたはメモリ管理ユニットは、アウタードメインプロセッサが仮想メモリページにアクセスしてもよいかどうかを示すようにブロック608において仮想メモリページに関するアクセス許可を決定すべきであると判定してもよい。たとえば、割込みハンドラは、CPUからの差別化されたアクセス許可を実施してもよい。差別化されたアクセス許可は、アウタードメインプロセッサに要求された仮想メモリページへの読取り専用アクセス、読取りおよび書込みアクセスなどを許可してもよいかどうかを判定することを含んでもよい。一態様では、割込みハンドラは、差別化されたアクセス許可を実施するために、割込みを許可違反に変換するか、またはアウタードメインプロセッサによって実行されているプロセスを停止するか、または同様の手順を実行してもよい。
【００５８】
追加または代替として、ブロック604において、プロセッサまたはメモリ管理ユニットは、ブロック610において仮想メモリページに関するデバッギング情報を生成すべきであると判定してもよい。いくつかの態様では、仮想メモリページに対して試みられたアクセスに基づいて、仮想メモリページに関してデバッギング情報が生成されてもよい。たとえば、割込みハンドラが割込みを検出したときに、アウタードメイン処理デバイス上で実行されているプロセスと要求された仮想メモリページ上に記憶されたデータとの関係を表すデバッギング情報が生成されてもよい。この情報は、たとえば、あらかじめ定義されたフォーマットに符号化され、記憶されならびに/あるいは評価できるように出力されてもよい。
【００５９】
追加または代替として、ブロック604において、プロセッサまたはメモリ管理ユニットは、ブロック612において試みられたアクセスに基づいて仮想メモリページに対する管理動作を実行すべきであると判定してもよい。仮想メモリページに対する管理動作の例には、仮想メモリページをピニングするかどうかを判定すること、および仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することが含まれる。
【００６０】
追加または代替として、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答して動作を実行することは、アウタードメインプロセッサによる仮想メモリページにアクセスする試みに応答してページフォールトをトリガすることを含んでもよい。一態様では、ページフォールトをトリガすることは、アクセスしないようにアウタードメインプロセッサまたはスレッドをストールさせることによってページフォールトに対処するためにホストオペレーティングシステム(OS)プロセッサに対する割込みをトリガすること、ページフォールトに対処するためにホストOSプロセッサに対する割込みをトリガし、アウタードメインプロセッサにコンテキストを別のスレッドまたはプロセスに切り替えさせること、および/またはメモリ管理ユニットに、特定のポリシーを有するアウタードメインプロセッサへのさらなるデータ応答を生成させることを含んでもよい。たとえば、プロセッサは、1つまたは複数のコンテキストをストールさせてもよく、ならびに/あるいはプロセッサは、1つまたは複数のコンテキストを切り替えてもよい。
【００６１】
図6Bは、仮想メモリページ共有可能性を管理するためにプロセッサまたはメモリ管理ユニットによって実行される場合がある別の態様方法600Bを示すプロセスフロー図である。上述の方法400と同様に、ブロック402において、プロセッサまたはメモリ管理ユニットは、ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示を、ページテーブルAなどのページテーブル内に設定してもよい。一態様では、プロセッサまたはメモリ管理ユニットが、追加のメタデータまたは追加のデータ構造などの追加の情報を使用せずにページテーブル内のフィールドの既存のビットを使用して表示を設定してもよい。この表示は、たとえば、ホストプロセッサ301、MMU302、アウタードメインプロセッサMMU305、SMMU304、または別の同様の機能によってページテーブル内に設定されてもよい。
【００６２】
判定ブロック404において、プロセッサ303、MMU305、またはSMMU304は、あるアウタードメインプロセッサが、このアウタードメインプロセッサとの共有が可能ではないと示されている仮想メモリページへのアクセスを試みたかどうかを判定してもよい。判定ブロック404における監視は、あるアウタードメインプロセッサが仮想メモリページへのアクセスを試みるまで(すなわち、判定ブロック404=「いいえ」である限り)連続的または周期的に実行されてもよい。
【００６３】
プロセッサまたはメモリ管理ユニットは、あるアウタードメインプロセッサが仮想メモリページにアクセスする試みまたは要求を行ったとの判定(すなわち、判定ブロック404=「はい」)に応答して、ブロック616においてMMU305、アウタードメインプロセッサ303、またはSMMU304内でページフォールト条件をトリガしてもよい。
【００６４】
一態様では、ページフォールト条件に応答して、ブロック616において、MMU305またはSMMU304は、アウタードメインプロセッサ303において、ページフォールトを生じさせているトランザクション(すなわち、メモリ動作)、および場合によっては他のいくつかのトランザクションの処理をストールさせてもよい。トランザクションをストールさせると、アウタードメインプロセッサ303およびMMU305またはSMMU304内およびアウタードメインプロセッサ303とMMU305またはSMMU304との間のトランザクションパイプラインおよび/またはキューにおける輻輳が増大することに起因して、直ちにまたは最終的に、アウタードメインプロセッサもさらなる処理をストールさせる。ページフォールトが解決した後(たとえば、図5に示す方法500および/または図6Aに示す方法600Aを介して解決した後)、MMU305またはSMMU304は、トランザクション処理を再開し、MMU305、SMMU304、またはアウタードメインプロセッサ303のストールを終了させてもよい。
【００６５】
追加または代替として、ページフォールト条件に応答して、ブロック620において、MMU305またはSMMU304は、特定のポリシーを有するアウタードメインプロセッサへのさらなるデータ応答を生成してもよい。特定のポリシーは、1つまたは複数のコンテキストに関して、読取りに対してゼロ値を返すことおよび/または書込みを無視すること(リードアズゼロ(read-as-zero)、ライトイグノア(write-ignore)、またはRAZ/WIとも呼ばれる)を含んでもよい。ページフォールトが解決した後(たとえば、方法500および/または方法600Aを介して解決した後)、MMU305またはSMMU304は、通常の処理を再開し、特定のポリシーを有するさらなるデータ応答を返してもよい。
【００６６】
追加または代替として、ページフォールト条件に応答して、ブロック620において、アウタードメインプロセッサ303の一部または全体が命令のさらなる処理をストールさせてもよい。アウタードメインプロセッサをストールさせることは、処理されることによって仮想メモリページへのアクセスが試みられるスレッドまたはプロセスの少なくとも一部をストールさせることを含むことができる。ページフォールトが(方法500または600Aを介して)解決された後、アウタードメインプロセッサは通常の処理を再開するようにプログラムされてもよい。
【００６７】
追加または代替として、ページフォールト条件に応答して、ブロック622において、アウタードメインプロセッサ303の一部または全体がコンテキスト切替え動作を実行してもよく、コンテキスト切替え動作は、処理を別のスレッドまたはプロセスに切り替えることを含んでもよい。コンテキスト切替えは、アウタードメインプロセッサが、ページフォールトを生じさせたコンテキストを保存し、ページフォールトを有さない別のコンテキストの実行に切り替えるのを可能にすることができる。ページフォールトが(方法500または600Aを介して)解決された後、アウタードメインプロセッサは、前に保存されたコンテキストを復元し、通常の処理を再開する。
【００６８】
いくつかの態様では、方法600Bは、方法500および/または600Aとは独立に実行されてもあるいは方法500および/または600Aとともに実行されてもよい。いくつかの態様では、図6Bに示す様々な動作は、割込みを生成することによるかそれとも別の方法によるかにかかわらず、ホストオペレーティングシステムへの通知とは独立に実行されてもよい。
【００６９】
いくつかの態様では、メモリ管理ユニットは、ホストOSプロセッサへの割込みをトリガしてホストOSプロセッサにページフォールトを通知してもよい。ホストOSプロセッサにページフォールトを通知することは、プロセス間割込みを介してホストOSプロセッサに通知することを含んでもよく、この通知はホストOSプロセッサ上のプロセスをトリガしてもよい。ホストOSプロセッサにページフォールトを通知することはまた、メモリ値を書き込むことを含んでもよく、このメモリ値は、ホストOSプロセッサ上のプロセスによってポーリングされてもよい。ホストOSプロセッサにページフォールトを通知することは、プロセスによってポーリングされる場合もある、あるいはホストOSプロセッサ上のプロセスをトリガする場合もあるレジスタに書込みを行うことを含んでもよい。上記のことのうちの1つまたは複数の組合せを含む、ホストOSプロセッサにページフォールトを通知するための他のプロセスまたは機構も考えられる。
【００７０】
いくつかの態様では、メモリ管理ユニットは、割込みをトリガせずにホストOSプロセッサにページフォールトを通知してもよい。たとえば、アウタードメインプロセッサ(および/またはメモリ管理ユニット)は、共有メモリロケーションに書込みを行ってもよく(たとえば、カウンタを更新してもよく)、この共有メモリロケーションは、ホストOSプロセッサによって(たとえば、ホストOSプロセッサのサービスルーティングによって)周期的にポーリングまたはチェックされてもよい。したがって、仮想メモリページ動作は、アウタードメインプロセッサが共有メモリロケーションへのアクセスを試みた頻度をプロファイリングすることを含んでもよい。
【００７１】
ホストOSプロセッサに通知することによって、ホストOSプロセッサ上のプロセスがトリガまたは実行されてもよい。トリガされるプロセスは、仮想ページの1つまたは複数の属性を変更することを含んでもよく、この変更は、仮想ページの共有可能性の表示を変更することを含んでもよい。トリガされるプロセスは、別のメモリ、ディスク、または他のストレージに1つまたは複数のページをコピーすることならびに/あるいは別のメモリ、ディスク、または他のストレージから1つまたは複数のページをコピーすることを含んでもよい。トリガされるプロセスは、デバッガを起動することまたはデバッガ動作を呼び出すことなどのデバッギングアクションをトリガすることを含んでもよい。トリガされるプロセスは、たとえばプロファイリングを目的としてメモリまたはレジスタに値を記録することを含んでもよい。上記のことのうちの1つまたは複数の組合せを含め、他の例も考えられる。
【００７２】
プロセッサまたはメモリ管理ユニットは、判定ブロック404においてアウタードメインプロセッサによる仮想メモリページにアクセスする別の試みを監視することによってこれらの動作をループ状に繰り返してもよい。
【００７３】
様々な態様では、ページテーブルのページテーブルフィールドにおける既存のビットが、仮想メモリページがアウタードメインプロセッサと共有可能であるかまたは共有可能ではないことを示すようにプロセッサまたはメモリ管理ユニットによって変更されてもよい。共有されたページテーブルの既存のデータ構造を使用することは、ソフトウェアプロセスと通信するか、または追加のメタデータを使用するか、または追加のデータ構造を使用して仮想メモリページの共有可能性を示すことよりも実質的に高速である。したがって、追加のメタデータまたは追加のデータ構造の使用を回避すると、ページ共有可能性を管理するうえでの効率および速度を向上させる。仮想メモリページの共有可能性マーキングを変更するかどうかを判定するうえでオペレーティングシステムが呼び出されることもあるいはドライバが呼び出されることもあるいは追加のソフトウェアが呼び出されることもなくてよい。動作時には、プロセッサまたはメモリ管理ユニットが、仮想メモリページをアウタードメインプロセッサと共有するようにページテーブル表示を変更すべきであると判定したときに、表示を変更するためにオペレーティングシステムプロセスが呼び出されてもよい。
【００７４】
様々な態様が、種々のモバイルコンピューティングデバイス上に実装されてもよく、それらの一例が図7に示されている。具体的には、図7は、態様のいずれかとともに使用するのに適したスマートフォン/セルフォン700の形態の、モバイルトランシーバデバイスのシステムブロック図である。セルフォン700は、内部メモリ702と、ディスプレイ703と、スピーカー708とに結合されたプロセッサ701を含んでもよい。加えて、セルフォン700は、プロセッサ701に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ705に接続されてもよい、電磁放射を送信および受信するためのアンテナ704を含んでもよい。セルフォン700は、通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ706も含む。
【００７５】
一般的なセルフォン700はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットへとデジタル化し、受信された音のデータパケットを復号し、音を発生するために、スピーカー708に供給されるアナログ信号を生成する音声符号化/復号(CODEC)回路713を含む。また、プロセッサ701、ワイヤレストランシーバ705、およびCODEC713のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含んでもよい。セルフォン700はさらに、ワイヤレスデバイス間の低電力短距離通信のためのZigBeeトランシーバ(すなわち、IEEE 802.15.4トランシーバ)713、または他の同様の通信回路(たとえば、Bluetooth(登録商標)またはWiFiプロトコルなどを実装する回路)を含んでもよい。
【００７６】
様々な態様は、図8に示すサーバ800のような、種々の市販のサーバデバイスのいずれに実装されてもよい。そのようなサーバ800は、通常、揮発性メモリ802と、ディスクドライブ803のような大容量の不揮発性メモリとに結合されたプロセッサ801を含む。サーバ800はまた、プロセッサ801に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ811を含んでもよい。サーバ800はまた、他の通信システムコンピュータおよびサーバに結合されたローカルエリアネットワークなどのネットワーク805とデータ接続を確立するための、プロセッサ801に結合されたネットワークアクセスポート806を含んでもよい。
【００７７】
他の形態のコンピューティングデバイスも、様々な態様の恩恵を受ける場合がある。そのようなコンピューティングデバイスは、通常、例示的なパーソナルラップトップコンピュータ900を示す図9に示された構成要素を含む。そのようなパーソナルコンピュータ900は、一般に、揮発性メモリ902、およびディスクドライブ903などの大容量不揮発性メモリに結合されたプロセッサ901を含む。コンピュータ900はまた、プロセッサ901に結合されたコンパクトディスク(CD)および/またはDVDドライブ904を含んでもよい。コンピュータデバイス900はまた、プロセッサ901をネットワークに結合するためのネットワーク接続回路905などの、データ接続を確立するか、または外部メモリデバイスを受け入れるための、プロセッサ901に結合された、いくつかのコネクタポートを含む場合がある。コンピュータ業界ではよく知られているように、コンピュータ900はさらに、キーボード908、マウスなどのポインティングデバイス910、およびディスプレイ909に結合されてもよい。
【００７８】
プロセッサ701、801、901は、以下で説明する様々な態様の機能を含む、様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成することができる、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つまたは複数の多重プロセッサチップであってもよい。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするなどして、複数のプロセッサ701が設けられ得る。通常、ソフトウェアアプリケーションは、アクセスされてプロセッサ701、801、901にロードされる前に、内部メモリ702、802、902に記憶され得る。プロセッサ701、801、901は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【００７９】
様々な態様は、任意の数のシングルプロセッサシステムまたはマルチプロセッサシステムで実装され得る。一般に、複数のプロセスが単一のプロセッサで同時に実行されているように見えるように、プロセスがプロセッサ上で短いタイムスライスの間に実行される。プロセスがタイムスライスの終わりにおいてプロセッサから除去されると、プロセスの現在の動作状態に関する情報がメモリに記憶されるので、プロセスは、プロセッサ上での実行に戻るときに、シームレスに動作を再開することができる。この動作状態データは、プロセスのアドレス空間、スタック空間、仮想アドレス空間、レジスタセットイメージ(たとえば、プログラムカウンタ、スタックポインタ、命令レジスタ、プログラムステータス語など)、アカウンティング情報、パーミッション、アクセス制限、および状態情報を含んでもよい。
【００８０】
プロセスは他のプロセスをスポーンすることがあり、スポーンされたプロセス(すなわち、子プロセス)は、スポーンしたプロセス(すなわち、親プロセス)の許可およびアクセス制限(すなわち、コンテキスト)の一部を受け継ぐことがある。プロセスは、複数の軽量のプロセスまたはスレッドを含む重量のプロセスであってもよく、軽量のプロセスは、そのコンテキスト(たとえば、アドレス空間、スタック、許可、および/またはアクセス制限など)のすべてまたは部分を他のプロセス/スレッドと共有するプロセスである。したがって、単一のプロセスは、単一のコンテキスト(すなわち、プロセッサのコンテキスト)を共有する、それへのアクセス権を有する、ならびに/あるいはその中で動作する、複数の軽量のプロセスまたはスレッドを含んでもよい。
【００８１】
前述の方法の説明、およびプロセスフロー図は、単に例示的な例として提供され、様々な態様のブロックが提示された順序で実行されなければならないことを必要とするまたは意味するものではない。当業者により諒解されるように、前述の態様におけるブロックの順序は、どのような順序で実行されてもよい。「後」、「次いで」、「次に」などの単語は、ブロックの順序を限定するものではなく、これらの単語は、方法の説明を通して読者を案内するために使用されるにすぎない。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形での請求要素へのいかなる言及も、要素を単数形に限定するものとして解釈されるべきではない。
【００８２】
本明細書で開示された態様に関して説明した、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムブロックは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよい。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびブロックについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアまたはソフトウェアのどちらとして実装されるのかは、特定の応用例とシステム全体に課せられる設計制約とに依存する。当業者は、上述の機能を、特定の各応用例に関して様々な形で実施してもよいが、そのような実装形態が、本発明の範囲からの逸脱を生じさせるものと解釈されてはならない。
【００８３】
本明細書で開示した態様に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。また、プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合もある。代替的には、いくつかのブロックまたは方法は、所与の機能に固有の回路によって実行されてもよい。
【００８４】
1つまたは複数の例示的な態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装されてもよい。ソフトウェアに実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶されてもよい。本明細書で開示した方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在する場合があるプロセッサ実行可能ソフトウェアモジュールにおいて具体化されてもよい。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされる場合がある任意の記憶媒体であってもよい。例として、限定はしないが、そのような非一時的コンピュータ可読またはプロセッサ可読記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形態において所望のプログラムコードを記憶するために使用される場合があり、かつコンピュータによってアクセスされる場合がある任意の他の媒体を含んでもよい。ディスク(disk)およびディスク(disc)は、本明細書において使用されるとき、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、非一時的コンピュータ可読記憶媒体および非一時的プロセッサ可読記憶媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれる場合がある、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読記憶媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在する場合がある。
【００８５】
開示した態様の上記の説明は、任意の当業者が本発明を作成または使用することができるように提供される。これらの態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の要旨または範囲から逸脱することなく、他の態様に適用される場合がある。したがって、本発明は、本明細書に示した態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示した原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００８６】
100  システムオンチップ(SOC)
102  デジタル信号プロセッサ(DSP)
104  モデムプロセッサ
106  グラフィックスプロセッサ
108  アプリケーションプロセッサ
110  コプロセッサ
112  メモリ
114  アナログ回路およびカスタム回路
116  システム構成要素およびリソース
118  クロック
120  電圧調整器
124  相互接続/バスモジュール
202  マルチコアプロセッサ
204  処理コア
206  処理コア
208  処理ユニット
210  処理ユニット
212  L1キャッシュ
214  L1キャッシュ
216  L2キャッシュ
218  バス/相互接続インターフェース
220  メインメモリ
222  入力/出力モジュール
224  外部メモリ/ハードディスク
226  L2キャッシュ
230  処理コア
232  処理コア
234  処理ユニット
236  処理ユニット
238  L1キャッシュ
240  L1キャッシュ
242  L2キャッシュ
301  ホストプロセッサ
302  MMU
303  アウタードメインプロセッサまたはデバイス
304  SMMU
305  MMU
306  メモリロケーション
308  メモリロケーション
700  スマートフォン/セルフォン
701  プロセッサ
702  内部メモリ
703  ディスプレイ
704  アンテナ
705  ワイヤレスデータリンクおよび/またはセルラー電話トランシーバ
706  ロッカースイッチ
708  スピーカー
713  音声符号化/復号回路(CODEC)、ZigBeeトランシーバ
800  サーバ
801  プロセッサ
802  揮発性メモリ
803  ディスクドライブ
805  ネットワーク
806  ネットワークアクセスポート
811  フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
900  パーソナルコンピュータ
901  プロセッサ
902  揮発性メモリ
903  ディスクドライブ
904  コンパクトディスク(CD)および/またはDVDドライブ
905  ネットワーク接続回路
908  キーボード
909  ディスプレイ
910  ポインティングデバイス
【図１】
2017530436.tif 000003
【図２】
2017530436.tif 000004
【図３】
2017530436.tif 000005
【図４】
2017530436.tif 000006
【図５】
2017530436.tif 000007
【図６Ａ】
2017530436.tif 000008
【図６Ｂ】
2017530436.tif 000009
【図７】
2017530436.tif 000010
【図８】
2017530436.tif 000011
【図９】
2017530436.tif 000012
【手続補正書】
【提出日】平成29年1月19日(2017.1.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想メモリページ共有可能性を管理する方法であって、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視するステップと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して前記仮想メモリページに対して仮想メモリページ動作を実行するステップとを含み、
前記仮想メモリページ動作は、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定すること、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成すること、前記仮想メモリページをピニングするかどうかを判定すること、および前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することからなるグループから選択される方法。
【請求項２】
前記仮想メモリページに対して前記仮想メモリページ動作を実行するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するステップを含む、請求項1に記載の方法。
【請求項３】
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するステップを含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するステップは、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するステップを含む、請求項2に記載の方法。
【請求項４】
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットを設定するステップを含み、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するステップは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更するステップを含む、請求項3に記載の方法。
【請求項５】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するステップをさらに含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するステップは、前記割込みに基づいて前記ページテーブル内の前記表示を変更するステップを含む、請求項2に記載の方法。
【請求項６】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するステップをさらに含み、
前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定するステップは前記割込みに基づく、請求項1に記載の方法。
【請求項７】
前記仮想メモリページに関する前記アクセス許可を決定するステップは、前記割込みを許可違反に変換するステップと、前記アウタードメインプロセッサ上で実行される命令を停止するステップと、前記仮想メモリページの前記アクセス許可を変更するステップとのうちの少なくとも1つをさらに含む、請求項6に記載の方法。
【請求項８】
仮想メモリページ共有可能性を管理する方法であって、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するステップと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視するステップと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガするステップとを含む方法。
【請求項９】
前記トリガされたページフォールトに応答してメモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせるステップをさらに含む、請求項8に記載の方法。
【請求項１０】
前記トリガされたページフォールトに応答して前記アウタードメインプロセッサの少なくとも一部をストールさせるステップをさらに含む、請求項8に記載の方法。
【請求項１１】
前記トリガされたページフォールトに応答して前記アウタードメインプロセッサにコンテキスト切替え動作を実行させるステップをさらに含む、請求項8に記載の方法。
【請求項１２】
前記トリガされたページフォールトに応答してメモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させるステップをさらに含む、請求項8に記載の方法。
【請求項１３】
前記特定のポリシーは、読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含む、請求項12に記載の方法。
【請求項１４】
ホストプロセッサに前記ページフォールトを通知するステップをさらに含む、請求項8に記載の方法。
【請求項１５】
ホストプロセッサに通知するステップは、ホストOSプロセッサに対する割込みをトリガするステップを含む、請求項14に記載の方法。
【請求項１６】
ホストプロセッサに通知するステップは、メモリに値を書き込むステップを含む、請求項14に記載の方法。
【請求項１７】
ホストプロセッサに通知するステップは、レジスタに値を書き込むステップを含む、請求項14に記載の方法。
【請求項１８】
コンピューティングデバイスであって、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するための手段と、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視するための手段と、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して前記仮想メモリページに対して仮想メモリページ動作を実行するための手段とを備え、
前記仮想メモリページ動作は、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定すること、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成すること、前記仮想メモリページをピニングするかどうかを判定すること、および前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することからなるグループから選択されるコンピューティングデバイス。
【請求項１９】
前記仮想メモリページに対して前記仮想メモリページ動作を実行するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するための手段を備える、請求項18に記載のコンピューティングデバイス。
【請求項２０】
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するための手段を備え、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するための手段は、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するための手段を含む、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットを設定するための手段を備え、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更するための手段は、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更するための手段を備える、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するための手段をさらに備え、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更するための手段は、前記割込みに基づいて前記ページテーブル内の前記表示を変更するための手段を備える、請求項19に記載のコンピューティングデバイス。
【請求項２３】
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成するための手段をさらに備え、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定することは、前記割込みに基づく、請求項18に記載のコンピューティングデバイス。
【請求項２４】
前記仮想メモリページに関する前記アクセス許可を決定するための手段は、前記割込みを許可違反に変換するための手段と、前記アウタードメインプロセッサ上で実行される命令を停止するための手段と、前記仮想メモリページの前記アクセス許可を変更するための手段とのうちの少なくとも1つをさらに備える、請求項23に記載のコンピューティングデバイス。
【請求項２５】
コンピューティングデバイスであって、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定するための手段と、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視するための手段と、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガするための手段とを備えるコンピューティングデバイス。
【請求項２６】
前記トリガされたページフォールトに応答してメモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせるための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記トリガされたページフォールトに応答して前記アウタードメインプロセッサの少なくとも一部をストールさせるための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２８】
前記トリガされたページフォールトに応答して前記アウタードメインプロセッサにコンテキスト切替え動作を実行させるための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２９】
前記トリガされたページフォールトに応答してメモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させるための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項３０】
前記特定のポリシーは、読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含む、請求項29に記載のコンピューティングデバイス。
【請求項３１】
ホストプロセッサに前記ページフォールトを通知するための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項３２】
ホストプロセッサに通知するための手段は、ホストOSプロセッサに対する割込みをトリガするための手段を備える、請求項31に記載のコンピューティングデバイス。
【請求項３３】
ホストプロセッサに通知するための手段は、メモリに値を書き込むための手段を備える、請求項31に記載のコンピューティングデバイス。
【請求項３４】
ホストプロセッサに通知するための手段は、レジスタに値を書き込むための手段を備える、請求項31に記載のコンピューティングデバイス。
【請求項３５】
コンピューティングデバイスであって、
動作を実行するようにプロセッサ実行可能な命令によって構成されたプロセッサを備え、前記動作は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して前記仮想メモリページに対して仮想メモリページ動作を実行することとを含み、
前記仮想メモリページ動作は、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定すること、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成すること、前記仮想メモリページをピニングするかどうかを判定すること、および前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することからなるグループから選択されるコンピューティングデバイス。
【請求項３６】
前記プロセッサは、前記仮想メモリページに対して前記仮想メモリページ動作を実行することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項35に記載のコンピューティングデバイス。
【請求項３７】
前記プロセッサは、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することを含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項36に記載のコンピューティングデバイス。
【請求項３８】
前記プロセッサは、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットに設定することを含み、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項37に記載のコンピューティングデバイス。
【請求項３９】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成され、
前記プロセッサは、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記割込みに基づいて前記ページテーブル内の前記表示を変更することを含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項36に記載のコンピューティングデバイス。
【請求項４０】
前記プロセッサは、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成され、
前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定することは前記割込みに基づく、請求項35に記載のコンピューティングデバイス。
【請求項４１】
前記プロセッサは、前記仮想メモリページに関する前記アクセス許可を決定することが、前記割込みを許可違反に変換することと、前記アウタードメインプロセッサ上で実行される命令を停止することと、前記仮想メモリページの前記アクセス許可を変更することとのうちの少なくとも1つをさらに含むように動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項40に記載のコンピューティングデバイス。
【請求項４２】
コンピューティングデバイスであって、
動作を実行するようにプロセッサ実行可能な命令によって構成されたプロセッサを備え、前記動作は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガすることとを含むコンピューティングデバイス。
【請求項４３】
前記プロセッサは、前記トリガされたページフォールトに応答してメモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせることをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項42に記載のコンピューティングデバイス。
【請求項４４】
前記プロセッサは、前記トリガされたページフォールトに応答して前記アウタードメインプロセッサの少なくとも一部をストールさせることをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項42に記載のコンピューティングデバイス。
【請求項４５】
前記プロセッサは、前記トリガされたページフォールトに応答して前記アウタードメインプロセッサにコンテキスト切替え動作を実行させることをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項42に記載のコンピューティングデバイス。
【請求項４６】
前記プロセッサは、前記トリガされたページフォールトに応答してメモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させることをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項42に記載のコンピューティングデバイス。
【請求項４７】
前記特定のポリシーは、読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含む、請求項46に記載のコンピューティングデバイス。
【請求項４８】
前記プロセッサは、ホストプロセッサに前記ページフォールトを通知することをさらに含む動作を実行するようにプロセッサ実行可能な命令によって構成される、請求項42に記載のコンピューティングデバイス。
【請求項４９】
前記プロセッサは、ホストプロセッサに通知することが、ホストOSプロセッサに対する割込みをトリガすることを含むように動作を実行するためのプロセッサ実行可能な命令によって構成される、請求項48に記載のコンピューティングデバイス。
【請求項５０】
前記プロセッサは、ホストプロセッサに通知することが、メモリに値を書き込むことを含むように動作を実行するためのプロセッサ実行可能な命令によって構成される、請求項48に記載のコンピューティングデバイス。
【請求項５１】
前記プロセッサは、ホストプロセッサに通知することが、レジスタに値を書き込むことを含むように動作を実行するためのプロセッサ実行可能な命令によって構成される、請求項48に記載のコンピューティングデバイス。
【請求項５２】
仮想メモリページ共有可能性を管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して前記仮想メモリページに対して仮想メモリページ動作を実行することとを含み、
前記仮想メモリページ動作は、前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関するアクセス許可を決定すること、前記仮想メモリページに対して試みられたアクセスに基づいて前記仮想メモリページに関するデバッギング情報を生成すること、前記仮想メモリページをピニングするかどうかを判定すること、および前記仮想メモリページを異なるアクセスレートのメモリロケーションに移動させるかどうかを判定することからなるグループから選択される非一時的コンピュータ可読記憶媒体。
【請求項５３】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに対して前記仮想メモリページ動作を実行することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することを含むようにプロセッサに動作を実行させるように構成される、請求項52に記載の非一時的コンピュータ可読記憶媒体。
【請求項５４】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することを含み、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することを含むようにプロセッサに動作を実行させるように構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項５５】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことの前記表示を前記ページテーブルの既存のページテーブルフィールド内に設定することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能ではないことを示す前記ページテーブルの前記ページテーブルフィールド内の少なくとも1つの既存のビットを設定することを含み、
前記ページテーブルの前記既存のページテーブルフィールド内の前記表示を変更することが、前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示す前記ページテーブルの前記ページテーブルフィールドの前記少なくとも1つの既存のビットを変更することを含むようにプロセッサに動作を実行させるように構成される、請求項54に記載の非一時的コンピュータ可読記憶媒体。
【請求項５６】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作をプロセッサに実行させるように構成され、
前記仮想メモリページが前記アウタードメインプロセッサと共有可能であることを示すように前記ページテーブル内の前記表示を変更することが、前記割込みに基づいて前記ページテーブル内の前記表示を変更することを含む、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項５７】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答して割込みを生成することをさらに含む動作をプロセッサに実行させるように構成され、
前記アウタードメインプロセッサが前記仮想メモリページにアクセスしてもよいかどうかを示すように前記仮想メモリページに関する前記アクセス許可を決定することは前記割込みに基づく、請求項52に記載の非一時的コンピュータ可読記憶媒体。
【請求項５８】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記仮想メモリページに関する前記アクセス許可を決定することが、前記割込みを許可違反に変換することと、前記アウタードメインプロセッサ上で実行される命令を停止することと、前記仮想メモリページの前記アクセス許可を変更することとのうちの少なくとも1つをさらに含むようにプロセッサに動作を実行させるように構成される、請求項57に記載の非一時的コンピュータ可読記憶媒体。
【請求項５９】
仮想メモリページ共有可能性を管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作は、
ある仮想メモリページがあるアウタードメインプロセッサと共有可能ではないことの表示をページテーブル内に設定することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みを監視することと、
前記アウタードメインプロセッサによる前記仮想メモリページにアクセスする試みに応答してページフォールトをトリガすることとを含む非一時的コンピュータ可読記憶媒体。
【請求項６０】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記トリガされたページフォールトに応答してメモリ管理ユニットをメモリ動作の処理を継続しないようにストールさせることをさらに含む動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的コンピュータ可読記憶媒体。
【請求項６１】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記トリガされたページフォールトに応答して前記アウタードメインプロセッサの少なくとも一部をストールさせることをさらに含む動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的コンピュータ可読記憶媒体。
【請求項６２】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記トリガされたページフォールトに応答して前記アウタードメインプロセッサにコンテキスト切替え動作を実行させることをさらに含む動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的コンピュータ可読記憶媒体。
【請求項６３】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記トリガされたページフォールトに応答して、メモリ管理ユニットに、特定のポリシーを有する前記アウタードメインプロセッサへのさらなるデータ応答を生成させることをさらに含む動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的コンピュータ可読記憶媒体。
【請求項６４】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、前記特定のポリシーが読取りに対してゼロ値を返すことと、書込みを無視することとの一方を含むようにプロセッサに動作を実行させるように構成される、請求項63に記載の非一時的コンピュータ可読記憶媒体。
【請求項６５】
前記記憶されたプロセッサ実行可能なソフトウェア命令は、ホストプロセッサに前記ページフォールトを通知することをさらに含む動作をプロセッサに実行させるように構成される、請求項59に記載の非一時的コンピュータ可読記憶媒体。
【請求項６６】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、ホストプロセッサに通知することが、ホストOSプロセッサに対する割込みをトリガすることを含むようにプロセッサに動作を実行させるように構成される、請求項65に記載の非一時的コンピュータ可読記憶媒体。
【請求項６７】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、ホストプロセッサに通知することが、メモリに値を書き込むことを含むようにプロセッサに動作を実行させるように構成される、請求項65に記載の非一時的コンピュータ可読記憶媒体。
【請求項６８】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、ホストプロセッサに通知することが、レジスタに値を書き込むことを含むようにプロセッサに動作を実行させるように構成される、請求項65に記載の非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2017530436.tif 000013
2017530436.tif 000014