(57)【要約】  本発明は、物理メモリアドレスを問い合わせる方法及び装置を提供する。ここで、本方法は、スタンバイバッファに記憶されている、アドレス指定を実行するべき第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、仮想アドレスを伝達し、第２のスレッドによって送信されるメモリアドレス指定要求メッセージを受信するステップと、バイパス変換バッファ及びプリフェッチバッファにおいて、仮想アドレスに従って、対応する物理アドレスを問い合わせるステップとを含む。本発明において提供される、物理メモリアドレスを問い合わせる方法及び装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
2016528640.tif 000002
【特許請求の範囲】
【請求項１】
物理メモリアドレスを問い合わせる方法であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、前記スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
前記第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、前記メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせるステップと
を含む、方法。
【請求項２】
前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせる前記ステップが、
前記仮想アドレスに対応する第１の物理アドレスが、前記バイパス変換バッファに存在する場合、前記第１の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行するステップ、又は、
前記仮想アドレスに対応する第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記第２の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行するステップ
を含む、請求項１に記載の方法。
【請求項３】
前記方法が、
前記仮想アドレスに対応する前記第１の物理アドレスが、前記バイパス変換バッファに存在せず、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在しない場合、前記仮想アドレスに対応する第３の物理アドレスについて前記メモリに問い合わせるステップ
をさらに含む、請求項２に記載の方法。
【請求項４】
前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記方法は、
前記仮想アドレス及び前記第２の物理アドレスに対応し、前記プリフェッチバッファに記憶されているページテーブルエントリを前記バイパス変換バッファ内に記憶し、前記仮想アドレス及び前記第２の物理アドレスに対応する前記ページテーブルエントリを前記プリフェッチバッファから削除するステップ
をさらに含む、請求項２に記載の方法。
【請求項５】
前記方法が、
前記仮想アドレス及び前記第３の物理アドレスに対応し、前記メモリ内に発見されるページテーブルエントリを前記バイパス変換バッファ内に記憶するステップ
をさらに含む、請求項３に記載の方法。
【請求項６】
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶する前記ステップの前に、前記方法が、
前記バイパス変換バッファに記憶されたページテーブルエントリの数が、前記バイパス変換バッファの記憶容量を超える場合、前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶するステップと、前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記バイパス変換バッファから削除するステップと
をさらに含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶する前記ステップの後に、前記方法が、
前記スタンバイバッファに記憶されたページテーブルエントリの数が、前記スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリを前記スタンバイバッファから削除するステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶する前記ステップが、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量以下である場合、前記スタンバイバッファに記憶されている、前記第２のスレッドの全ての前記ページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記スタンバイバッファに記憶されている前記第２のスレッドの、前記プリフェッチバッファの前記記憶容量に等しい数のページテーブルエントリを前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きするステップ
を含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの前記数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記方法が、
前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記プリフェッチバッファに記憶された前記ページテーブルエントリを除いて、前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリのうちの１つのページテーブルエントリを、前記プリフェッチバッファ内に記憶するステップ
をさらに含む、請求項８に記載の方法。
【請求項１０】
メモリ内の物理アドレスを問い合わせる装置であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、前記スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
前記第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、前記メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
を備える、装置。
【請求項１１】
前記問い合わせモジュールが、
前記仮想アドレスに対応する第１の物理アドレスが、前記バイパス変換バッファに存在する場合、前記第１の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行する、又は、
前記仮想アドレスに対応する第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記第２の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行する
ように具体的に構成される、請求項１０に記載の装置。
【請求項１２】
前記問い合わせモジュールが、
前記仮想アドレスに対応する前記第１の物理アドレスが、前記バイパス変換バッファに存在せず、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在しない場合、前記仮想アドレスに対応する第３の物理アドレスについて前記メモリに問い合わせる
ようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記問い合わせモジュールが、
前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記仮想アドレス及び前記第２の物理アドレスに対応し、前記プリフェッチバッファに記憶されているページテーブルエントリを前記バイパス変換バッファ内に記憶し、前記仮想アドレス及び前記第２の物理アドレスに対応する前記ページテーブルエントリを前記プリフェッチバッファから削除する
ようにさらに構成される、請求項１１又は１２に記載の装置。
【請求項１４】
前記問い合わせモジュールが、
前記仮想アドレス及び前記第３の物理アドレスに対応し、前記メモリ内に発見されるページテーブルエントリを前記バイパス変換バッファ内に記憶する
ようにさらに構成される、請求項１２に記載の装置。
【請求項１５】
前記実行モジュールが、
スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリが、前記プリフェッチバッファ内に記憶される前に、前記バイパス変換バッファに記憶されたページテーブルエントリの数が、前記バイパス変換バッファの記憶容量を超える場合、前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶し、前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記バイパス変換バッファから削除する
ようにさらに構成される、請求項１０から１４のいずれか一項に記載の装置。
【請求項１６】
前記実行モジュールが、
前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリが、前記スタンバイバッファ内に記憶された後に、前記スタンバイバッファに記憶されたページテーブルエントリの数が、前記スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリを前記スタンバイバッファから削除する
ようにさらに構成される、請求項１５に記載の装置。
【請求項１７】
前記実行モジュールが、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量以下である場合、前記スタンバイバッファに記憶されている、前記第２のスレッドの全ての前記ページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きする、又は、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記スタンバイバッファに記憶されている前記第２のスレッドの、前記プリフェッチバッファの前記記憶容量に等しい数のページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きする
ように具体的に構成される、請求項１０から１６のいずれか一項に記載の装置。
【請求項１８】
前記実行モジュールが、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの前記数が、前記プリフェッチバッファの記憶容量よりも大きく、前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記プリフェッチバッファに記憶された前記ページテーブルエントリを除いて、前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリのうちの１つのページテーブルエントリを、前記プリフェッチバッファ内に記憶する
ようにさらに構成される、請求項１７に記載の装置。
【請求項１９】
メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
前記メモリは、命令を記憶するように構成され、
前記バイパス変換バッファは、変換索引バッファＴＬＢを記憶するように構成され、
前記スタンバイバッファは、前記バイパス変換バッファに記憶されている前記ＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
前記プリフェッチバッファは、前記スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
前記プロセッサは、前記メモリ内に記憶された前記命令を実行して、請求項１から９のいずれか一項に記載の、物理メモリアドレスを問い合わせる前記方法を実行するように構成される、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１３年８月２０に中国特許庁に出願され、「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＱＵＥＲＹＩＮＧ  ＰＨＹＳＩＣＡＬ  ＭＥＭＯＲＹ  ＡＤＤＲＥＳＳ」と題された中国特許出願第２０１３１０３６４４１７．１号の優先権を主張し、この中国特許出願は、その全体が参照によって本明細書に組み込まれる。
【０００２】
本発明は、情報技術の分野に関し、特に、物理メモリアドレスを問い合わせる方法及び装置に関する。
【背景技術】
【０００３】
現在のところ、プロセッサは、主に、仮想アドレス（Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ，略してＶＡ）を使用して、メモリアドレス指定を実行し、実際の物理アドレス（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ，略してＰＡ）空間よりもずっと大きいアドレス指定空間は、仮想アドレス技術を使用することによって生成され得る。仮想メモリを使用するプロセッサは、主に、ページング（Ｐａｇｉｎｇ）メカニズムを使用する。仮想アドレス空間は、ページ（Ｐａｇｅ）単位で分割される。それに応じて、物理アドレス空間も、ページ（Ｐａｇｅ）単位で分割される。仮想アドレスを使用することによってメモリアドレス指定を実行するプロセスにおいて、プロセッサ内のメモリ管理ユニット（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ，略してＭＭＵ）は、受信された仮想アドレスを物理アドレスに変換する必要がある。現在のところ、プロセッサは、主に、バイパス変換バッファを使用する。バイパス変換バッファは、プロセッサによって最近アクセスされたメモリの仮想アドレスと物理アドレスとの間のマッピング関係を含む変換索引バッファ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ，略してＴＬＢ）である。ＴＬＢ内にバッファリングされるデータは、メモリページテーブルエリアに記憶されるデータと一致する。メモリページテーブルエリアにおいて、仮想アドレスと物理アドレスとの間のマッピング関係を含む各レコードは、ページテーブルエントリ（Ｐａｇｅ  Ｔａｂｌｅ  Ｅｎｔｒｙ，略してＰＴＥ）と称される。同様に、ＴＬＢも、ページテーブルエントリＰＴＥのうちの一部又は全部さえもバッファリングする。
【０００４】
メモリアドレス指定が、仮想アドレスを使用することによって実行される場合、アプリケーションプログラムによって送信された仮想アドレスを受信した後、まず、メモリ管理ユニットＭＭＵは、バイパス変換バッファのＴＬＢにおいて検索を実行する。ＴＬＢが、仮想アドレスに対応するページテーブルエントリをバッファリングする場合、すなわち、ＴＬＢがヒットした（Ｈｉｔ）場合、メモリ管理ユニットは、レベル１キャッシュ（Ｌｅｖｅｌ  １  Ｃａｃｈｅ）におけるデータアクセスを、ページテーブルエントリ内の物理アドレスを使用することによって実行する。物理アドレスに対応するデータが、レベル１キャッシュに存在しない場合、メモリ管理ユニットは、レベル２キャッシュ（Ｌｅｖｅｌ  ２  Ｃａｃｈｅ）におけるデータアクセスを実行する。物理アドレスに対応するデータが、レベル２キャッシュに存在しない場合、メモリ管理ユニットは、メモリにおけるデータアクセスを実行する。ＴＬＢが、仮想アドレスに対応するページテーブルエントリを含まない場合、すなわち、ＴＬＢがミスした（Ｍｉｓｓ）場合、ソフトウェア又はオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ，略してＯＳ）は、仮想アドレスに対応する物理アドレスを検索し、仮想アドレスと物理アドレスとの間のマッピング関係をページテーブルエントリとして使用し、ページテーブルエントリをＴＬＢ内に記憶する必要があり、それにより、メモリ管理ユニットＭＭＵが、後続の検索を実行し得る。
【０００５】
従来技術において、プリフェッチバッファ（Ｐｒｅｆｅｔｃｈ  Ｂｕｆｆｅｒ，略してＰＢ）は、メモリ管理ユニットＭＭＵに配置される。メモリ管理ユニットＭＭＵにおいて、ＰＢは、複数のページテーブルエントリを記憶する。物理メモリアドレスのアドレス指定が実行される場合、まず、ＴＬＢが、対応する物理アドレスについて検索され、ＴＬＢがミスした後、ＰＢが、対応する物理アドレスについて検索され続ける。対応する物理アドレスが、ＰＢに存在する場合、データアクセスは、物理アドレスを使用することによって実行され、ヒットしたページテーブルエントリは、ＴＬＢ内に記憶される。対応する物理アドレスが、ＰＢに存在しない場合、メモリ内の複数のページテーブルエントリは、ＰＢ内に記憶されて、ＰＢに現在記憶されているデータが上書きされる。
【０００６】
しかしながら、マルチスレッドプロセッサの場合、複数のハードウェアスレッドは、１つのＴＬＢを共有し、ＴＬＢの容量は限られているため、ハードウェアスレッドの数が、比較的大きい場合、ＴＬＢにおけるページテーブルエントリの数は、マルチスレッド要件を満たすことができない。結果として、各ハードウェアスレッドが、仮想アドレスを使用することによってメモリアドレス指定を実行する場合、ＴＬＢのミス率は、比較的高くなる。ＴＬＢがミスした後に初めて、仮想アドレスに対応するページテーブルエントリが、メモリから取得され、次いで、バッファリングされ得る。そのため、アドレス指定時間は、比較的長くなる。
【発明の概要】
【０００７】
本発明は、物理メモリアドレスを問い合わせる方法及び装置を提供して、アドレス指定時間が従来技術において比較的長くなるという問題を解決する。
【０００８】
第１の態様によれば、本発明は、物理メモリアドレスを問い合わせる方法であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップと
を含む方法を提供する。
【０００９】
第１の態様の第１の取り得る実装手法において、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップは、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、第１の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ、又は、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、第２の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ
を含む。
【００１０】
第１の態様の第１の取り得る実装手法によれば、第２の取り得る実装手法において、本方法は、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第３の物理アドレスについてメモリに問い合わせるステップ
をさらに含む。
【００１１】
第１の態様の第１の取り得る実装手法及び第２の取り得る実装手法によれば、第３の取り得る実装手法において、仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、本方法は、
仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第２の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ
をさらに含む。
【００１２】
第１の態様の第２の取り得る実装手法によれば、第４の取り得る実装手法において、本方法は、
仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶するステップ
をさらに含む。
【００１３】
第１の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、及び第４の取り得る実装手法によれば、第５の取り得る実装手法において、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップの前に、本方法は、
バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップと、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除するステップ
をさらに含む。
【００１４】
第１の態様の第５の取り得る実装手法によれば、第６の取り得る実装手法において、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップの後に、本方法は、
スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除するステップ
をさらに含む。
【００１５】
第１の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、第４の取り得る実装手法、第５の取り得る実装手法、及び第６の取り得る実装手法によれば、第７の取り得る実装手法において、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ
を含む。
【００１６】
第１の態様の第７の取り得る実装手法によれば、第８の取り得る実装手法において、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、本方法は、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリを、プリフェッチバッファ内に記憶するステップ
をさらに含む。
【００１７】
第２の態様によれば、本発明は、物理メモリアドレスを問い合わせる装置であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
第２のスレッドに対応するメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
を備える装置を提供する。
【００１８】
第２の態様の第１の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、第１の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する、又は、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、第２の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する
ように具体的に構成される。
【００１９】
第２の態様の第１の取り得る実装手法によれば、第２の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第３の物理アドレスについてメモリに問い合わせる
ようにさらに構成される。
【００２０】
第２の態様の第１の取り得る実装手法及び第２の取り得る実装手法によれば、第３の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第２の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除する
ようにさらに構成される。
【００２１】
第２の態様の第２の取り得る実装手法によれば、第４の取り得る実装手法において、問い合わせモジュールは、
仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する
ようにさらに構成される。
【００２２】
第２の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、及び第４の取り得る実装手法によれば、第５の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成される。
【００２３】
第１の態様の第５の取り得る実装手法によれば、第６の取り得る実装手法において、実行モジュールは、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成される。
【００２４】
第２の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、第４の取り得る実装手法、第５の取り得る実装手法、及び第６の取り得る実装手法によれば、第７の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする、又は、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする
ように具体的に構成される。
【００２５】
第２の態様の第７の取り得る実装手法によれば、第８の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリを、プリフェッチバッファ内に記憶する
ようにさらに構成される。
【００２６】
第３の態様によれば、本発明は、メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
メモリは、命令を記憶するように構成され、
バイパス変換バッファは、変換索引バッファＴＬＢを記憶するように構成され、
スタンバイバッファは、バイパス変換バッファに記憶されているＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
プリフェッチバッファは、スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
プロセッサは、メモリ内に記憶された命令を実行して、第１の態様に係る、物理メモリアドレスを問い合わせる方法を実行するように構成される、
装置を提供する。
【００２７】
本発明において提供される、物理メモリアドレスを問い合わせる方法及び装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００２８】
本発明の実施形態又は従来技術における技術的解決策をより明確に説明するために、下記は、実施形態又は従来技術を説明するために必要とされる添付の図面を簡単に紹介する。明らかに、添付の図面は、下記の説明において、本発明のいくつかの実施形態を示し、当業者は、創作的努力なしに、これらの添付の図面から他の図面をさらに導き出し得る。
【図面の簡単な説明】
【００２９】
【図１】本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。
【図２】本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。
【図３】バイパス変換バッファの変換索引バッファＴＬＢにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。
【図４】対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファＰＢ内に記憶するステップの概略図である。
【図５】仮想アドレスＶＡに従って物理メモリアドレスのアドレス指定をするステップの概略図である。
【図６】本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。
【図７】本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。
【発明を実施するための形態】
【００３０】
本発明の実施形態の目的、技術的解決策、及び利点をより明確にするために、下記は、本発明の実施形態における技術的解決策を、本発明の実施形態において添付の図面を参照しつつ、明確かつ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の一部ではあるが、全部ではない。創作的努力なしに本発明の実施形態に基づいて当業者によって得られる全ての他の実施形態は、本発明の保護範囲内に収まるべきものである。
【００３１】
図１は、本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。図１に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、ＰＣ、ＰＡＤ、及び携帯電話に対して適用可能であり得る。下記のステップは、前述の様々な端末デバイスにおける中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，略してＣＰＵ）によって実行され得、具体的には、ＣＰＵにおけるメモリ管理ユニットＭＭＵなどによって実行され得る。本方法は、具体的には、下記を含む：
【００３２】
Ｓ１０１：プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
【００３３】
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第１のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第２のスレッドは、第１のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
【００３４】
Ｓ１０２：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００３５】
具体的には、アドレス指定を実行するべき、Ｓ１０１に従って判定されるスレッド、すなわち、第２のスレッドは、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファＰＢ内に記憶する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。プリフェッチバッファＰＢに記憶されるページテーブルエントリは、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき各対応するスレッドのＩＤを含む。
【００３６】
本明細書において留意すべきことは、スタンバイバッファの数が１つ又は複数となり得ることである。例えば、各スレッドは、１つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、１つ又は複数となり得る。例えば、各スレッドは、１つのバイパス変換バッファ及び１つのプリフェッチバッファに対応し得る。
【００３７】
Ｓ１０３：第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
【００３８】
具体的には、アドレス指定を実行するべきスレッド、すなわち、第２のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスＶＡを伝達する。
【００３９】
Ｓ１０４：仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
【００４０】
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファＰＢに記憶されたページテーブルエントリは、仮想アドレスＶＡに従って、同時に問い合わせをされ得る。仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファ又はプリフェッチバッファＰＢに存在する場合、データアクセスは、この物理アドレスを使用することによって実行される。仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファＰＢにも存在しない場合、メモリに問い合わせがされて、仮想アドレスＶＡに対応する物理アドレスが得られる。
【００４１】
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００４２】
図２は、本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。図２に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、ＰＣ、ＰＡＤ、及び携帯電話に対して適用可能であり得る。下記のステップは、中央演算処理装置ＣＰＵによって実行され得、具体的には、ＣＰＵにおけるメモリ管理ユニットＭＭＵなどによって実行され得る。本方法は、具体的には、下記を含む：
【００４３】
Ｓ２０１：プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
【００４４】
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第１のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第２のスレッドは、第１のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
【００４５】
Ｓ２０２：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００４６】
下記のステップＳ２０３又はＳ２０４は、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数と、プリフェッチバッファＰＢの記憶容量との間の関係に従って、ここでは選択的に実行され得る。
【００４７】
Ｓ２０３：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
【００４８】
Ｓ２０４：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
【００４９】
具体的には、アドレス指定を実行するべき、Ｓ２０１に従って判定されるスレッド、すなわち、第２のスレッドは、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの一部又は全部をプリフェッチバッファＰＢ内に記憶し、ＰＢに現在記憶されているデータを削除する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００５０】
随意的な実装手法として、各スレッドは、１つのスタンバイバッファに対応し得、各スタンバイバッファに記憶されるページテーブルエントリは、ＴＬＢにおいて設定時間内に問い合わせをされない、対応するスレッドのページテーブルエントリであり得る。図３は、バイパス変換バッファの変換索引バッファＴＬＢにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。図３に示されるように、バイパス変換バッファの変換索引バッファＴＬＢに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。各スレッドに対応するスタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応を含む。スタンバイバッファ選択ユニットは、設定時間内に問い合わせをされず、ＴＬＢに記憶されるページテーブルエントリ及び対応するスレッドＩＤを受信し、このスレッドＩＤに従って、対応するスレッドのスタンバイバッファ内にページテーブルエントリを記憶する。
【００５１】
図４は、対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファＰＢ内に記憶するステップの概略図である。図４に示されるように、スタンバイバッファ選択ユニットは、アドレス指定を実行するべき判定済みのスレッドに従って、対応するスレッドＩＤと、アドレス指定を実行するべきスレッドのスタンバイバッファ内のページテーブルエントリの一部又は全部とを、プリフェッチバッファＰＢ内に記憶し、それにより、プリフェッチバッファＰＢは、ＴＬＢにおいて置換される、アドレス指定を実行するべきスレッドのページテーブルエントリを記憶する。ＴＬＢにおいて置換されるこれらのページテーブルエントリのうちの大部分は、ページテーブルエントリが必要とされるという理由で置換されるのではなく、ＴＬＢの記憶容量が限定されており、スレッドの数が大きいため、いくつかのスレッドのよく使用されるページテーブルエントリが置換されるという理由で置換される。
【００５２】
本明細書においては、３２個のスレッドが、１２８個のページテーブルエントリの記憶容量を有する１つのバイパス変換バッファを共有し、各スレッドに対応するスタンバイバッファの記憶容量及び各スレッドに対応するプリフェッチバッファＰＢの記憶容量が、３２個のページテーブルエントリに設定され得、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の全てのページテーブルエントリが、プリフェッチバッファＰＢ内に記憶され得、プリフェッチバッファＰＢに現在記憶されているデータは削除され得る、と仮定される。バイパス変換バッファ及びプリフェッチバッファＰＢは、仮想アドレスＶＡ間の比較を、連想記憶メモリ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ，略してＣＡＭ）を使用することによって完了させ得る。プリフェッチバッファＰＢの記憶容量の増加は、チップ消費電力を増加させ得、したがって、比較的小さい記憶容量を有するプリフェッチバッファＰＢ、例えば、８個のページテーブルエントリの記憶容量を有するプリフェッチバッファＰＢが選択され得る。それにより、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の最短の記憶時間を有する８個のページテーブルエントリが、プリフェッチバッファＰＢ内に記憶され得、プリフェッチバッファＰＢに現在記憶されているデータは削除され得る。
【００５３】
Ｓ２０５：第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
【００５４】
具体的には、アドレス指定を実行するべきスレッド、すなわち、第２のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスＶＡを伝達する。
【００５５】
Ｓ２０６：仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
【００５６】
下記のステップＳ２０７、Ｓ２０８、又はＳ２０９は、バイパス変換バッファ及びプリフェッチバッファＰＢにおけるアドレス指定結果に従って、ここでは選択的に実行され得る。
【００５７】
Ｓ２０７：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、第１の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ。
【００５８】
Ｓ２０８：仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、第２の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行し、仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリをバイパス変換バッファに記憶し、仮想アドレス及び第２の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ。
【００５９】
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
【００６０】
Ｓ２０９：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第３の物理アドレスについてメモリに問い合わせをし、仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する。
【００６１】
具体的には、図５は、仮想アドレスＶＡに従って物理メモリアドレスのアドレス指定をするステップの概略図である。図５に示されるように、バイパス変換バッファに記憶されるページテーブルエントリ及びプリフェッチバッファＰＢに記憶されるページテーブルエントリは、仮想アドレスＶＡに従って、同時に問い合わせをされ得る。
【００６２】
仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファに存在する場合、すなわち、バイパス変換バッファのＴＬＢがヒットした（ＴＬＢ−Ｈｉｔ）場合、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在してもしなくても、すなわち、プリフェッチバッファＰＢが、ヒットしても（ＰＢ−Ｈｉｔ）又はミスしても（ＰＢ−Ｍｉｓｓ）、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第１の物理アドレスＰＡ１に従って実行される。
【００６３】
仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファに存在しない、すなわち、バイパス変換バッファのＴＬＢがミスした（ＴＬＢ−Ｍｉｓｓ）が、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在する、すなわち、プリフェッチバッファＰＢがヒットした（ＰＢ−Ｈｉｔ）場合、データアクセスは、プリフェッチバッファＰＢ内に発見される物理アドレス、すなわち、第２の物理アドレスＰＡ２に従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリが、バイパス変換バッファのＴＬＢ内に記憶される。プリフェッチバッファＰＢが、スタンバイバッファ内の第２のスレッドのページテーブルエントリの一部のみを記憶する場合、例えば、前述のプリフェッチバッファＰＢが、第２のスレッドの、スタンバイバッファにおける最短の記憶時間を有する８個のページテーブルエントリのみを記憶する場合、プリフェッチバッファＰＢ内のヒットしたページテーブルエントリは、ＴＬＢ内に記憶され、第２のスレッドの、比較的短い記憶時間を有する次のページテーブルエントリは、スタンバイバッファから抽出され、プリフェッチバッファＰＢ内に記憶され得る。
【００６４】
仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファＰＢにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファＰＢとの双方がミスした（ＴＬＢ−Ｍｉｓｓ及びＰＢ−Ｍｉｓｓ）場合、仮想アドレスＶＡと、仮想アドレスＶＡに対応する物理アドレスについての対応するスレッドＩＤ、すなわち、第３の物理アドレスＰＡ３とに従って、ページテーブル走査ユニットを使用することによって、メモリに問い合わせがされる。データアクセスは、発見された第３の物理アドレスＰＡ３に従って実行される。発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリ、及び対応するスレッドＩＤは、バイパス変換バッファのＴＬＢ内に同時に記憶される。
【００６５】
ステップＳ２０８又はＳ２０９について、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリは、スタンバイバッファ内に記憶され、設定時間内に問い合わせをされないページテーブルエントリは、バイパス変換バッファから削除される。
【００６６】
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
【００６７】
スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、スタンバイバッファから削除される。
【００６８】
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し（Ｆｉｒｓｔ  Ｉｎｐｕｔ  Ｆｉｒｓｔ  Ｏｕｔｐｕｔ，略してＦＩＦＯ）」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
【００６９】
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００７０】
図６は、本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。図６に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置６０は、物理メモリアドレスを問い合わせる前述の方法を実行する特定のエンティティであり、具体的には、判定モジュール６１と、実行モジュール６２と、受信モジュール６３と、問い合わせモジュール６４とを含む。
【００７１】
判定モジュール６１は、プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するように構成される。
【００７２】
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第１のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第２のスレッドは、第１のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
【００７３】
実行モジュール６２は、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００７４】
具体的には、下記の２つのケースが、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数とプリフェッチバッファＰＢの記憶容量との間の関係に従って存在する。
【００７５】
ケース１：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
【００７６】
ケース２：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
【００７７】
具体的には、アドレス指定を実行するべき、判定モジュール６１によって判定されるスレッド、すなわち、第２のスレッドに従って、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの一部又は全部が、プリフェッチバッファＰＢ内に記憶される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。プリフェッチバッファＰＢに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき対応するスレッドのＩＤを含む。
【００７８】
ここで留意するべきことは、スタンバイバッファの数が１つ又は複数であり得ることである。例えば、各スレッドは、１つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、１つ又は複数であり得る。例えば、各スレッドは、１つのバイパス変換バッファ及び１つのプリフェッチバッファに対応し得る。
【００７９】
受信モジュール６３は、第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成される。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
【００８０】
具体的には、アドレス指定を実行するべきスレッド、すなわち、第２のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスＶＡを伝達する。
【００８１】
問い合わせモジュール６４は、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成される。
【００８２】
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファＰＢに記憶されたページテーブルエントリは、仮想アドレスＶＡに従って、同時に問い合わせをされ得る。下記の３つのケースは、ここでは、バイパス変換バッファ及びプリフェッチバッファＰＢにおけるアドレス指定結果に従って存在し得る。
【００８３】
ケース１：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、メモリは、第１の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。
【００８４】
具体的には、仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファに存在する場合、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在してもしなくても、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第１の物理アドレスに従って実行される。
【００８５】
ケース２：仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、メモリは、第２の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは、バイパス変換バッファ内に記憶され、仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは削除される。
【００８６】
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファには存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
【００８７】
具体的には、仮想アドレスＶＡに対応する物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在する場合、データアクセスは、プリフェッチバッファＰＢ内に発見される物理アドレス、すなわち、第２の物理アドレスに従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページエントリは、バイパス変換バッファのＴＬＢ内に記憶される。プリフェッチバッファＰＢが、スタンバイバッファ内の第２のスレッドのページテーブルエントリのうちの一部のみを記憶する場合、プリフェッチバッファＰＢ内のヒットしたページテーブルエントリが、ＴＬＢ内に記憶された後に、１つのページテーブルエントリが、スタンバイバッファから読み出され、プリフェッチバッファＰＢ内に記憶され得る。
【００８８】
ケース３：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、メモリは、仮想アドレスに対応する第３の物理アドレスについて問い合わせをされ、仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリは、バイパス変換バッファ内に記憶される。
【００８９】
具体的には、仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファＰＢにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファＰＢとの双方がミスした場合、メモリは、仮想アドレスＶＡに対応する物理アドレス、すなわち、第３の物理アドレスについて問い合わせをされる必要があり、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリは、バイパス変換バッファのＴＬＢ内に記憶される。
【００９０】
さらに、実行モジュール６２は、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成され得る。
【００９１】
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
【００９２】
さらに、実行モジュール６２は、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成され得る。
【００９３】
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し（ＦＩＦＯ）」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
【００９４】
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００９５】
図７は、本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。図７に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置は、メモリ７１と、バイパス変換バッファ７２と、スタンバイバッファ７３と、プリフェッチバッファ７４と、プロセッサ７５とを含む。
【００９６】
メモリ７１は、命令を記憶するように構成される。
【００９７】
バイパス変換バッファ７２は、変換索引バッファＴＬＢを記憶するように構成される。
【００９８】
スタンバイバッファ７３は、バイパス変換バッファに記憶されるＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成される。
【００９９】
プリフェッチバッファ７４は、スタンバイバッファに記憶される、対応するスレッドのページテーブルエントリを記憶するように構成される。
【０１００】
プロセッサ７５は、メモリに記憶された命令を実行して、図１又は図２に示される、物理メモリアドレスを問い合わせる方法を実行するように構成される。
【０１０１】
具体的には、メモリ７１は、高速ＲＡＭメモリを含み得、又は不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）、例えば、少なくとも１つのディスクメモリを含み得る。随意的に、メモリ７１は、少なくとも１つの記憶装置を含み得る。メモリ７１は、命令を記憶し、物理メモリアドレスを問い合わせる装置が実行される場合、プロセッサ７５は、メモリ７１と通信し、プロセッサ７５は、命令を実行し、それにより、物理メモリアドレスを問い合わせる装置は、本発明の実施形態において提供される、物理メモリアドレスを問い合わせる方法を実行することができる。
【０１０２】
スタンバイバッファ７３は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのＩＤを含み得る。バイパス変換バッファ７２は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのＩＤを含み得る。プリフェッチバッファ７４は、仮想アドレスとの間の対応を含むページテーブルエントリを記憶し、アドレス指定を実行するべき対応するスレッドのＩＤを含み得る。
【０１０３】
ここで留意すべきことは、スタンバイバッファ７３の数が１つ又は複数であり得ることである。例えば、各スレッドは、１つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファ７２の数とプリフェッチバッファ７４の数との双方は、１つ又は複数であり得る。例えば、各スレッドは、１つのバイパス変換バッファ及び１つのプリフェッチバッファに対応し得る。
【０１０４】
この実施形態におけるプロセッサは、集積回路チップであってもよく、信号処理能力を有する。実装プロセスにおいて、前述の方法におけるステップは、プロセッサ内のハードウェアの集積論理回路又はソフトウェアの形式の命令を使用することによって完了され得る。前述のプロセッサは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向けプロセッサ（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは別のプログラマブルロジックコンポーネント、ディスクリートゲート若しくはトランジスタロジックコンポーネント、又はディスクリートハードウェアコンポーネントであってもよく、これらは、本発明の実施形態において開示された方法、ステップ、及び論理ブロック図を実装又は実行し得る。前述のプロセッサは、マイクロプロセッサであってもよく、又は前述のプロセッサは、任意の従来のプロセッサなどであってもよい。本発明の実施形態を参照しつつ開示された方法のステップは、ハードウェアプロセッサを用いて直接実行及び完了されてもよく、又はプロセッサ内のハードウェアモジュールとソフトウェアモジュールとの組み合わせを用いて実行及び完了されてもよい。ソフトウェアモジュールは、本技術分野における成熟した記憶媒体、例えば、ランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的消去可能プログラマブルメモリ、又はレジスタなどに位置し得る。記憶媒体は、メモリに位置し、プロセッサは、メモリ内の情報を読出し、前述の方法におけるステップを、プロセッサのハードウェアとの組み合わせにおいて完了する。
【０１０５】
本発明の実施形態は、チップをさらに提供する。ここで、チップは、物理メモリアドレスを問い合わせるように構成され、チップは、前述のプロセッサを含み得る。
【０１０６】
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、プロセッサ７５は、メモリ７１に記憶される命令を実行し、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、バイパス変換バッファ及びプリフェッチバッファに同時に問い合わせをする。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【０１０７】
当業者は、前述の方法実施形態のステップの全部又は一部がプログラム命令関連ハードウェアによって実装され得ることを理解し得る。前述のプログラムは、コンピュータ読取可能な媒体に記憶され得る。プログラムが実行されると、前述の方法実施形態のステップが実行される。前述の記憶媒体は、プログラムコードを記憶することができる任意の媒体、例えば、ＲＯＭ、ＲＡＭ、磁気ディスク、又は光ディスクなどを含む。
【０１０８】
最後に、留意すべきことは、前述の実施形態が本発明の技術的解決策を説明することを意図されたものに過ぎず、本発明を限定することを意図されたものではないことである。本発明は、前述の実施形態を参照しつつ詳細に説明されているが、当業者は、当業者が前述の実施形態において説明された技術的解決策に対して変形を行い得ること、又はその技術的特徴の一部若しくは全部に対して均等な置換を行い得ることを理解するべきである。しかしながら、こうした変形又は置換は、対応する技術的解決策の本質を、本発明の実施形態における技術的解決策の範囲から逸脱させるものではない。
【図１】
2016528640.tif 000003
【図２】
2016528640.tif 000004
【図３】
2016528640.tif 000005
【図４】
2016528640.tif 000006
【図５】
2016528640.tif 000007
【図６】
2016528640.tif 000008
【図７】
2016528640.tif 000009
【手続補正書】
【提出日】平成28年3月29日(2016.3.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリ内の物理アドレスを問い合わせる方法であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、前記スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
前記第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、前記メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせるステップと
を含む、方法。
【請求項２】
前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせる前記ステップが、
前記仮想アドレスに対応する第１の物理アドレスが、前記バイパス変換バッファに存在する場合、前記第１の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行するステップ、又は、
前記仮想アドレスに対応する第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記第２の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行するステップ
を含む、請求項１に記載の方法。
【請求項３】
前記方法が、
前記仮想アドレスに対応する前記第１の物理アドレスが、前記バイパス変換バッファに存在せず、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在しない場合、前記仮想アドレスに対応する第３の物理アドレスについて前記メモリに問い合わせるステップ
をさらに含む、請求項２に記載の方法。
【請求項４】
前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記方法は、
前記仮想アドレス及び前記第２の物理アドレスに対応し、前記プリフェッチバッファに記憶されているページテーブルエントリを前記バイパス変換バッファ内に記憶し、前記仮想アドレス及び前記第２の物理アドレスに対応する前記ページテーブルエントリを前記プリフェッチバッファから削除するステップ
をさらに含む、請求項２に記載の方法。
【請求項５】
前記方法が、
前記仮想アドレス及び前記第３の物理アドレスに対応し、前記メモリ内に発見されるページテーブルエントリを前記バイパス変換バッファ内に記憶するステップ
をさらに含む、請求項３に記載の方法。
【請求項６】
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶する前記ステップの前に、前記方法が、
前記バイパス変換バッファに記憶されたページテーブルエントリの数が、前記バイパス変換バッファの記憶容量を超える場合、前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶するステップと、前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記バイパス変換バッファから削除するステップと
をさらに含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶する前記ステップの後に、前記方法が、
前記スタンバイバッファに記憶されたページテーブルエントリの数が、前記スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリを前記スタンバイバッファから削除するステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶する前記ステップが、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量以下である場合、前記スタンバイバッファに記憶されている、前記第２のスレッドの全ての前記ページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記スタンバイバッファに記憶されている前記第２のスレッドの、前記プリフェッチバッファの前記記憶容量に等しい数のページテーブルエントリを前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きするステップ
を含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの前記数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記方法が、
前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記プリフェッチバッファに記憶された前記ページテーブルエントリを除いて、前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリのうちの１つのページテーブルエントリを、前記プリフェッチバッファ内に記憶するステップ
をさらに含む、請求項８に記載の方法。
【請求項１０】
メモリ内の物理アドレスを問い合わせる装置であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
スタンバイバッファに記憶されている前記第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、前記スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
前記第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、前記メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
前記仮想アドレスに従って、前記バイパス変換バッファに記憶されたページテーブルエントリ及び前記プリフェッチバッファに記憶された前記ページテーブルエントリにおいて、前記仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
を備える、装置。
【請求項１１】
前記問い合わせモジュールが、
前記仮想アドレスに対応する第１の物理アドレスが、前記バイパス変換バッファに存在する場合、前記第１の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行する、又は、
前記仮想アドレスに対応する第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記第２の物理アドレスを使用することによって前記メモリにアクセスして、データアクセスを実行する
ように具体的に構成される、請求項１０に記載の装置。
【請求項１２】
前記問い合わせモジュールが、
前記仮想アドレスに対応する前記第１の物理アドレスが、前記バイパス変換バッファに存在せず、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在しない場合、前記仮想アドレスに対応する第３の物理アドレスについて前記メモリに問い合わせる
ようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記問い合わせモジュールが、
前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記仮想アドレス及び前記第２の物理アドレスに対応し、前記プリフェッチバッファに記憶されているページテーブルエントリを前記バイパス変換バッファ内に記憶し、前記仮想アドレス及び前記第２の物理アドレスに対応する前記ページテーブルエントリを前記プリフェッチバッファから削除する
ようにさらに構成される、請求項１１又は１２に記載の装置。
【請求項１４】
前記問い合わせモジュールが、
前記仮想アドレス及び前記第３の物理アドレスに対応し、前記メモリ内に発見されるページテーブルエントリを前記バイパス変換バッファ内に記憶する
ようにさらに構成される、請求項１２に記載の装置。
【請求項１５】
前記実行モジュールが、
スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリが、前記プリフェッチバッファ内に記憶される前に、前記バイパス変換バッファに記憶されたページテーブルエントリの数が、前記バイパス変換バッファの記憶容量を超える場合、前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記スタンバイバッファ内に記憶し、前記設定時間内に問い合わせをされない前記ページテーブルエントリを前記バイパス変換バッファから削除する
ようにさらに構成される、請求項１０から１４のいずれか一項に記載の装置。
【請求項１６】
前記実行モジュールが、
前記バイパス変換バッファにおいて前記設定時間内に問い合わせをされない前記ページテーブルエントリが、前記スタンバイバッファ内に記憶された後に、前記スタンバイバッファに記憶されたページテーブルエントリの数が、前記スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリを前記スタンバイバッファから削除する
ようにさらに構成される、請求項１５に記載の装置。
【請求項１７】
前記実行モジュールが、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量以下である場合、前記スタンバイバッファに記憶されている、前記第２のスレッドの全ての前記ページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きする、又は、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの数が、前記プリフェッチバッファの記憶容量よりも大きい場合、前記スタンバイバッファに記憶されている前記第２のスレッドの、前記プリフェッチバッファの前記記憶容量に等しい数のページテーブルエントリを、前記プリフェッチバッファ内に記憶し、前記プリフェッチバッファに現在記憶されているデータを上書きする
ように具体的に構成される、請求項１０から１６のいずれか一項に記載の装置。
【請求項１８】
前記実行モジュールが、
前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリの前記数が、前記プリフェッチバッファの記憶容量よりも大きく、前記仮想アドレスに対応する前記第１の物理アドレスは、前記バイパス変換バッファに存在しないが、前記仮想アドレスに対応する前記第２の物理アドレスが、前記プリフェッチバッファに存在する場合、前記プリフェッチバッファに記憶された前記ページテーブルエントリを除いて、前記スタンバイバッファに記憶されている前記第２のスレッドの前記ページテーブルエントリのうちの１つのページテーブルエントリを、前記プリフェッチバッファ内に記憶する
ようにさらに構成される、請求項１７に記載の装置。
【請求項１９】
メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
前記メモリは、命令を記憶するように構成され、
前記バイパス変換バッファは、変換索引バッファＴＬＢを記憶するように構成され、
前記スタンバイバッファは、前記バイパス変換バッファに記憶されている前記ＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
前記プリフェッチバッファは、前記スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
前記プロセッサは、前記メモリ内に記憶された前記命令を実行して、請求項１から９のいずれか一項に記載の、物理メモリアドレスを問い合わせる前記方法を実行するように構成される、
装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報技術の分野に関し、特に、物理メモリアドレスを問い合わせる方法及び装置に関する。
【背景技術】
【０００２】
現在のところ、プロセッサは、主に、仮想アドレス（Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ，略してＶＡ）を使用して、メモリアドレス指定を実行し、実際の物理アドレス（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ，略してＰＡ）空間よりもずっと大きいアドレス指定空間は、仮想アドレス技術を使用することによって生成され得る。仮想メモリを使用するプロセッサは、主に、ページング（Ｐａｇｉｎｇ）メカニズムを使用する。仮想アドレス空間は、ページ（Ｐａｇｅ）単位で分割される。それに応じて、物理アドレス空間も、ページ（Ｐａｇｅ）単位で分割される。仮想アドレスを使用することによってメモリアドレス指定を実行するプロセスにおいて、プロセッサ内のメモリ管理ユニット（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ，略してＭＭＵ）は、受信された仮想アドレスを物理アドレスに変換する必要がある。現在のところ、プロセッサは、主に、バイパス変換バッファを使用する。バイパス変換バッファは、プロセッサによって最近アクセスされたメモリの仮想アドレスと物理アドレスとの間のマッピング関係を含む変換索引バッファ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ，略してＴＬＢ）である。ＴＬＢ内にバッファリングされるデータは、メモリページテーブルエリアに記憶されるデータと一致する。メモリページテーブルエリアにおいて、仮想アドレスと物理アドレスとの間のマッピング関係を含む各レコードは、ページテーブルエントリ（Ｐａｇｅ  Ｔａｂｌｅ  Ｅｎｔｒｙ，略してＰＴＥ）と称される。同様に、ＴＬＢも、ページテーブルエントリＰＴＥのうちの一部又は全部さえもバッファリングする。
【０００３】
メモリアドレス指定が、仮想アドレスを使用することによって実行される場合、アプリケーションプログラムによって送信された仮想アドレスを受信した後、まず、メモリ管理ユニットＭＭＵは、バイパス変換バッファのＴＬＢにおいて検索を実行する。ＴＬＢが、仮想アドレスに対応するページテーブルエントリをバッファリングする場合、すなわち、ＴＬＢがヒットした（Ｈｉｔ）場合、メモリ管理ユニットは、レベル１キャッシュ（Ｌｅｖｅｌ  １  Ｃａｃｈｅ）におけるデータアクセスを、ページテーブルエントリ内の物理アドレスを使用することによって実行する。物理アドレスに対応するデータが、レベル１キャッシュに存在しない場合、メモリ管理ユニットは、レベル２キャッシュ（Ｌｅｖｅｌ  ２  Ｃａｃｈｅ）におけるデータアクセスを実行する。物理アドレスに対応するデータが、レベル２キャッシュに存在しない場合、メモリ管理ユニットは、メモリにおけるデータアクセスを実行する。ＴＬＢが、仮想アドレスに対応するページテーブルエントリを含まない場合、すなわち、ＴＬＢがミスした（Ｍｉｓｓ）場合、ソフトウェア又はオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ，略してＯＳ）は、仮想アドレスに対応する物理アドレスを検索し、仮想アドレスと物理アドレスとの間のマッピング関係をページテーブルエントリとして使用し、ページテーブルエントリをＴＬＢ内に記憶する必要があり、それにより、メモリ管理ユニットＭＭＵが、後続の検索を実行し得る。
【０００４】
従来技術において、プリフェッチバッファ（Ｐｒｅｆｅｔｃｈ  Ｂｕｆｆｅｒ，略してＰＢ）は、メモリ管理ユニットＭＭＵに配置される。メモリ管理ユニットＭＭＵにおいて、ＰＢは、複数のページテーブルエントリを記憶する。物理メモリアドレスのアドレス指定が実行される場合、まず、ＴＬＢが、対応する物理アドレスについて検索され、ＴＬＢがミスした後、ＰＢが、対応する物理アドレスについて検索され続ける。対応する物理アドレスが、ＰＢに存在する場合、データアクセスは、物理アドレスを使用することによって実行され、ヒットしたページテーブルエントリは、ＴＬＢ内に記憶される。対応する物理アドレスが、ＰＢに存在しない場合、メモリ内の複数のページテーブルエントリは、ＰＢ内に記憶されて、ＰＢに現在記憶されているデータが上書きされる。
【０００５】
しかしながら、マルチスレッドプロセッサの場合、複数のハードウェアスレッドは、１つのＴＬＢを共有し、ＴＬＢの容量は限られているため、ハードウェアスレッドの数が、比較的大きい場合、ＴＬＢにおけるページテーブルエントリの数は、マルチスレッド要件を満たすことができない。結果として、各ハードウェアスレッドが、仮想アドレスを使用することによってメモリアドレス指定を実行する場合、ＴＬＢのミス率は、比較的高くなる。ＴＬＢがミスした後に初めて、仮想アドレスに対応するページテーブルエントリが、メモリから取得され、次いで、バッファリングされ得る。そのため、アドレス指定時間は、比較的長くなる。
【発明の概要】
【０００６】
本発明は、物理メモリアドレスを問い合わせる方法及び装置を提供して、アドレス指定時間が従来技術において比較的長くなるという問題を解決する。
【０００７】
第１の態様によれば、本発明は、物理メモリアドレスを問い合わせる方法であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップと、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、記憶するステップと、
第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信するステップと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップと
を含む方法を提供する。
【０００８】
第１の態様の第１の取り得る実装手法において、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップは、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、第１の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ、又は、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、第２の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ
を含む。
【０００９】
第１の態様の第１の取り得る実装手法によれば、第２の取り得る実装手法において、本方法は、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第３の物理アドレスについてメモリに問い合わせるステップ
をさらに含む。
【００１０】
第１の態様の第１の取り得る実装手法及び第２の取り得る実装手法によれば、第３の取り得る実装手法において、仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、本方法は、
仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第２の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ
をさらに含む。
【００１１】
第１の態様の第２の取り得る実装手法によれば、第４の取り得る実装手法において、本方法は、
仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶するステップ
をさらに含む。
【００１２】
第１の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、及び第４の取り得る実装手法によれば、第５の取り得る実装手法において、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップの前に、本方法は、
バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップと、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除するステップ
をさらに含む。
【００１３】
第１の態様の第５の取り得る実装手法によれば、第６の取り得る実装手法において、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶するステップの後に、本方法は、
スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除するステップ
をさらに含む。
【００１４】
第１の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、第４の取り得る実装手法、第５の取り得る実装手法、及び第６の取り得る実装手法によれば、第７の取り得る実装手法において、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ、又は、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ
を含む。
【００１５】
第１の態様の第７の取り得る実装手法によれば、第８の取り得る実装手法において、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、本方法は、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリを、プリフェッチバッファ内に記憶するステップ
をさらに含む。
【００１６】
第２の態様によれば、本発明は、物理メモリアドレスを問い合わせる装置であって、
プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するように構成された判定モジュールと、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成された実行モジュールであって、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する、実行モジュールと、
第２のスレッドに対応するメモリアドレス指定要求メッセージを受信するように構成された受信モジュールであって、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する、受信モジュールと、
仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成された問い合わせモジュールと
を備える装置を提供する。
【００１７】
第２の態様の第１の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、第１の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する、又は、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、第２の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行する
ように具体的に構成される。
【００１８】
第２の態様の第１の取り得る実装手法によれば、第２の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第３の物理アドレスについてメモリに問い合わせる
ようにさらに構成される。
【００１９】
第２の態様の第１の取り得る実装手法及び第２の取り得る実装手法によれば、第３の取り得る実装手法において、問い合わせモジュールは、
仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されているページテーブルエントリをバイパス変換バッファ内に記憶し、仮想アドレス及び第２の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除する
ようにさらに構成される。
【００２０】
第２の態様の第２の取り得る実装手法によれば、第４の取り得る実装手法において、問い合わせモジュールは、
仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する
ようにさらに構成される。
【００２１】
第２の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、及び第４の取り得る実装手法によれば、第５の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されたページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成される。
【００２２】
第２の態様の第５の取り得る実装手法によれば、第６の取り得る実装手法において、実行モジュールは、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成される。
【００２３】
第２の態様の第１の取り得る実装手法、第２の取り得る実装手法、第３の取り得る実装手法、第４の取り得る実装手法、第５の取り得る実装手法、及び第６の取り得る実装手法によれば、第７の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする、又は、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きする
ように具体的に構成される。
【００２４】
第２の態様の第７の取り得る実装手法によれば、第８の取り得る実装手法において、実行モジュールは、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリを、プリフェッチバッファ内に記憶する
ようにさらに構成される。
【００２５】
第３の態様によれば、本発明は、メモリと、バイパス変換バッファと、スタンバイバッファと、プリフェッチバッファと、プロセッサとを備える、物理メモリアドレスを問い合わせる装置であって、
メモリは、命令を記憶するように構成され、
バイパス変換バッファは、変換索引バッファＴＬＢを記憶するように構成され、
スタンバイバッファは、バイパス変換バッファに記憶されているＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成され、
プリフェッチバッファは、スタンバイバッファに記憶されている、対応するスレッドのページテーブルエントリを記憶するように構成され、
プロセッサは、メモリ内に記憶された命令を実行して、第１の態様に係る、物理メモリアドレスを問い合わせる方法を実行するように構成される、
装置を提供する。
【００２６】
本発明において提供される、物理メモリアドレスを問い合わせる方法及び装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００２７】
本発明の実施形態又は従来技術における技術的解決策をより明確に説明するために、下記は、実施形態又は従来技術を説明するために必要とされる添付の図面を簡単に紹介する。明らかに、添付の図面は、下記の説明において、本発明のいくつかの実施形態を示し、当業者は、創作的努力なしに、これらの添付の図面から他の図面をさらに導き出し得る。
【図面の簡単な説明】
【００２８】
【図１】本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。
【図２】本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。
【図３】バイパス変換バッファの変換索引バッファＴＬＢにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。
【図４】対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファＰＢ内に記憶するステップの概略図である。
【図５】仮想アドレスＶＡに従って物理メモリアドレスのアドレス指定をするステップの概略図である。
【図６】本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。
【図７】本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。
【発明を実施するための形態】
【００２９】
本発明の実施形態の目的、技術的解決策、及び利点をより明確にするために、下記は、本発明の実施形態における技術的解決策を、本発明の実施形態において添付の図面を参照しつつ、明確かつ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の一部ではあるが、全部ではない。創作的努力なしに本発明の実施形態に基づいて当業者によって得られる全ての他の実施形態は、本発明の保護範囲内に収まるべきものである。
【００３０】
図１は、本発明に係る、物理メモリアドレスを問い合わせる方法の実施形態の概略フローチャートである。図１に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、ＰＣ、ＰＡＤ、及び携帯電話に対して適用可能であり得る。下記のステップは、前述の様々な端末デバイスにおける中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，略してＣＰＵ）によって実行され得、具体的には、ＣＰＵにおけるメモリ管理ユニットＭＭＵなどによって実行され得る。本方法は、具体的には、下記を含む：
【００３１】
Ｓ１０１：プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
【００３２】
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第１のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第２のスレッドは、第１のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
【００３３】
Ｓ１０２：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００３４】
具体的には、アドレス指定を実行するべき、Ｓ１０１に従って判定されるスレッド、すなわち、第２のスレッドは、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファＰＢ内に記憶する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。プリフェッチバッファＰＢに記憶されるページテーブルエントリは、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき各対応するスレッドのＩＤを含む。
【００３５】
本明細書において留意すべきことは、スタンバイバッファの数が１つ又は複数となり得ることである。例えば、各スレッドは、１つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、１つ又は複数となり得る。例えば、各スレッドは、１つのバイパス変換バッファ及び１つのプリフェッチバッファに対応し得る。
【００３６】
Ｓ１０３：第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
【００３７】
具体的には、アドレス指定を実行するべきスレッド、すなわち、第２のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスＶＡを伝達する。
【００３８】
Ｓ１０４：仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
【００３９】
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファＰＢに記憶されたページテーブルエントリは、仮想アドレスＶＡに従って、同時に問い合わせをされ得る。仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファ又はプリフェッチバッファＰＢに存在する場合、データアクセスは、この物理アドレスを使用することによって実行される。仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファＰＢにも存在しない場合、メモリに問い合わせがされて、仮想アドレスＶＡに対応する物理アドレスが得られる。
【００４０】
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００４１】
図２は、本発明に係る、物理メモリアドレスを問い合わせる方法の別の実施形態の概略フローチャートである。図２に示されるように、下記の方法実施形態において提供される方法は、様々なタイプの端末デバイス、例えば、ＰＣ、ＰＡＤ、及び携帯電話に対して適用可能であり得る。下記のステップは、中央演算処理装置ＣＰＵによって実行され得、具体的には、ＣＰＵにおけるメモリ管理ユニットＭＭＵなどによって実行され得る。本方法は、具体的には、下記を含む：
【００４２】
Ｓ２０１：プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するステップ。
【００４３】
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第１のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第２のスレッドは、第１のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
【００４４】
Ｓ２０２：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するステップ。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００４５】
下記のステップＳ２０３又はＳ２０４は、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数と、プリフェッチバッファＰＢの記憶容量との間の関係に従って、ここでは選択的に実行され得る。
【００４６】
Ｓ２０３：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
【００４７】
Ｓ２０４：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリを、プリフェッチバッファ内に記憶し、プリフェッチバッファに現在記憶されているデータを上書きするステップ。
【００４８】
具体的には、アドレス指定を実行するべき、Ｓ２０１に従って判定されるスレッド、すなわち、第２のスレッドは、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの一部又は全部をプリフェッチバッファＰＢ内に記憶し、ＰＢに現在記憶されているデータを削除する。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００４９】
随意的な実装手法として、各スレッドは、１つのスタンバイバッファに対応し得、各スタンバイバッファに記憶されるページテーブルエントリは、ＴＬＢにおいて設定時間内に問い合わせをされない、対応するスレッドのページテーブルエントリであり得る。図３は、バイパス変換バッファの変換索引バッファＴＬＢにおいて、設定時間内に問い合わせをされないページテーブルエントリを、対応するスレッドのスタンバイバッファ内に記憶するステップの概略図である。図３に示されるように、バイパス変換バッファの変換索引バッファＴＬＢに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。各スレッドに対応するスタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応を含む。スタンバイバッファ選択ユニットは、設定時間内に問い合わせをされず、ＴＬＢに記憶されるページテーブルエントリ及び対応するスレッドＩＤを受信し、このスレッドＩＤに従って、対応するスレッドのスタンバイバッファ内にページテーブルエントリを記憶する。
【００５０】
図４は、対応するスレッドのスタンバイバッファにおけるページテーブルエントリをプリフェッチバッファＰＢ内に記憶するステップの概略図である。図４に示されるように、スタンバイバッファ選択ユニットは、アドレス指定を実行するべき判定済みのスレッドに従って、対応するスレッドＩＤと、アドレス指定を実行するべきスレッドのスタンバイバッファ内のページテーブルエントリの一部又は全部とを、プリフェッチバッファＰＢ内に記憶し、それにより、プリフェッチバッファＰＢは、ＴＬＢにおいて置換される、アドレス指定を実行するべきスレッドのページテーブルエントリを記憶する。ＴＬＢにおいて置換されるこれらのページテーブルエントリのうちの大部分は、ページテーブルエントリが必要とされるという理由で置換されるのではなく、ＴＬＢの記憶容量が限定されており、スレッドの数が大きいため、いくつかのスレッドのよく使用されるページテーブルエントリが置換されるという理由で置換される。
【００５１】
本明細書においては、３２個のスレッドが、１２８個のページテーブルエントリの記憶容量を有する１つのバイパス変換バッファを共有し、各スレッドに対応するスタンバイバッファの記憶容量及び各スレッドに対応するプリフェッチバッファＰＢの記憶容量が、３２個のページテーブルエントリに設定され得、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の全てのページテーブルエントリが、プリフェッチバッファＰＢ内に記憶され得、プリフェッチバッファＰＢに現在記憶されているデータは削除され得る、と仮定される。バイパス変換バッファ及びプリフェッチバッファＰＢは、仮想アドレスＶＡ間の比較を、連想記憶メモリ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ，略してＣＡＭ）を使用することによって完了させ得る。プリフェッチバッファＰＢの記憶容量の増加は、チップ消費電力を増加させ得、したがって、比較的小さい記憶容量を有するプリフェッチバッファＰＢ、例えば、８個のページテーブルエントリの記憶容量を有するプリフェッチバッファＰＢが選択され得る。それにより、アドレス指定を実行するべきスレッドが、アドレス指定を実行する前に、アドレス指定を実行するべきスレッドに対応するスタンバイバッファ内の最短の記憶時間を有する８個のページテーブルエントリが、プリフェッチバッファＰＢ内に記憶され得、プリフェッチバッファＰＢに現在記憶されているデータは削除され得る。
【００５２】
Ｓ２０５：第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するステップ。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
【００５３】
具体的には、アドレス指定を実行するべきスレッド、すなわち、第２のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスＶＡを伝達する。
【００５４】
Ｓ２０６：仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるステップ。
【００５５】
下記のステップＳ２０７、Ｓ２０８、又はＳ２０９は、バイパス変換バッファ及びプリフェッチバッファＰＢにおけるアドレス指定結果に従って、ここでは選択的に実行され得る。
【００５６】
Ｓ２０７：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、第１の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行するステップ。
【００５７】
Ｓ２０８：仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、第２の物理アドレスを使用することによってメモリにアクセスして、データアクセスを実行し、仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリをバイパス変換バッファに記憶し、仮想アドレス及び第２の物理アドレスに対応するページテーブルエントリをプリフェッチバッファから削除するステップ。
【００５８】
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
【００５９】
Ｓ２０９：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、仮想アドレスに対応する第３の物理アドレスについてメモリに問い合わせをし、仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリをバイパス変換バッファ内に記憶する。
【００６０】
具体的には、図５は、仮想アドレスＶＡに従って物理メモリアドレスのアドレス指定をするステップの概略図である。図５に示されるように、バイパス変換バッファに記憶されるページテーブルエントリ及びプリフェッチバッファＰＢに記憶されるページテーブルエントリは、仮想アドレスＶＡに従って、同時に問い合わせをされ得る。
【００６１】
仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファに存在する場合、すなわち、バイパス変換バッファのＴＬＢがヒットした（ＴＬＢ−Ｈｉｔ）場合、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在してもしなくても、すなわち、プリフェッチバッファＰＢが、ヒットしても（ＰＢ−Ｈｉｔ）又はミスしても（ＰＢ−Ｍｉｓｓ）、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第１の物理アドレスＰＡ１に従って実行される。
【００６２】
仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファに存在しない、すなわち、バイパス変換バッファのＴＬＢがミスした（ＴＬＢ−Ｍｉｓｓ）が、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在する、すなわち、プリフェッチバッファＰＢがヒットした（ＰＢ−Ｈｉｔ）場合、データアクセスは、プリフェッチバッファＰＢ内に発見される物理アドレス、すなわち、第２の物理アドレスＰＡ２に従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリが、バイパス変換バッファのＴＬＢ内に記憶される。プリフェッチバッファＰＢが、スタンバイバッファ内の第２のスレッドのページテーブルエントリの一部のみを記憶する場合、例えば、前述のプリフェッチバッファＰＢが、第２のスレッドの、スタンバイバッファにおける最短の記憶時間を有する８個のページテーブルエントリのみを記憶する場合、プリフェッチバッファＰＢ内のヒットしたページテーブルエントリは、ＴＬＢ内に記憶され、第２のスレッドの、比較的短い記憶時間を有する次のページテーブルエントリは、スタンバイバッファから抽出され、プリフェッチバッファＰＢ内に記憶され得る。
【００６３】
仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファＰＢにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファＰＢとの双方がミスした（ＴＬＢ−Ｍｉｓｓ及びＰＢ−Ｍｉｓｓ）場合、仮想アドレスＶＡと、仮想アドレスＶＡに対応する物理アドレスについての対応するスレッドＩＤ、すなわち、第３の物理アドレスＰＡ３とに従って、ページテーブル走査ユニットを使用することによって、メモリに問い合わせがされる。データアクセスは、発見された第３の物理アドレスＰＡ３に従って実行される。発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリ、及び対応するスレッドＩＤは、バイパス変換バッファのＴＬＢ内に同時に記憶される。
【００６４】
ステップＳ２０８又はＳ２０９について、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリは、スタンバイバッファ内に記憶され、設定時間内に問い合わせをされないページテーブルエントリは、バイパス変換バッファから削除される。
【００６５】
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
【００６６】
スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、スタンバイバッファから削除される。
【００６７】
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し（Ｆｉｒｓｔ  Ｉｎｐｕｔ  Ｆｉｒｓｔ  Ｏｕｔｐｕｔ，略してＦＩＦＯ）」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
【００６８】
この実施形態において提供される、物理メモリアドレスを問い合わせる方法によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００６９】
図６は、本発明に係る、物理メモリアドレスを問い合わせる装置の実施形態の概略構造図である。図６に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置６０は、物理メモリアドレスを問い合わせる前述の方法を実行する特定のエンティティであり、具体的には、判定モジュール６１と、実行モジュール６２と、受信モジュール６３と、問い合わせモジュール６４とを含む。
【００７０】
判定モジュール６１は、プリセットされたスレッド切り替えポリシーに従って、メモリアドレス指定動作が、第１のスレッドから第２のスレッドへ将来の設定時間内に切り替えられると判定するように構成される。
【００７１】
具体的には、スレッド切り替えポリシーは、端末デバイスの実行中の各期間内にメモリアドレス指定動作を実行するスレッドを使用することを含む。本発明のこの実施形態において、第１のスレッドは、先行する期間内にメモリアドレス指定動作を実行するスレッドであり、第２のスレッドは、第１のスレッドの後にメモリアドレス指定動作を実行するスレッド、すなわち、アドレス指定を実行するべきスレッドである。
【００７２】
実行モジュール６２は、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリをプリフェッチバッファ内に記憶するように構成される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。
【００７３】
具体的には、下記の２つのケースが、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数とプリフェッチバッファＰＢの記憶容量との間の関係に従って存在する。
【００７４】
ケース１：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量以下である場合、スタンバイバッファに記憶されている、第２のスレッドの全てのページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
【００７５】
ケース２：スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きい場合、スタンバイバッファに記憶されている第２のスレッドの、プリフェッチバッファの記憶容量に等しい数のページテーブルエントリが、プリフェッチバッファ内に記憶され、プリフェッチバッファに現在記憶されているデータは上書きされる。
【００７６】
具体的には、アドレス指定を実行するべき、判定モジュール６１によって判定されるスレッド、すなわち、第２のスレッドに従って、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの一部又は全部が、プリフェッチバッファＰＢ内に記憶される。ここで、スタンバイバッファは、バイパス変換バッファに記憶されている変換索引バッファＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶する。随意的に、スタンバイバッファに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。同様に、バイパス変換バッファに記憶されるページテーブルエントリも、具体的には、仮想アドレスと物理アドレスとの間の対応、及び各対応するスレッドのＩＤを含む。プリフェッチバッファＰＢに記憶されるページテーブルエントリは、具体的には、仮想アドレスと物理アドレスとの間の対応、及びアドレス指定を実行するべき対応するスレッドのＩＤを含む。
【００７７】
ここで留意するべきことは、スタンバイバッファの数が１つ又は複数であり得ることである。例えば、各スレッドは、１つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファの数とプリフェッチバッファの数との双方は、１つ又は複数であり得る。例えば、各スレッドは、１つのバイパス変換バッファ及び１つのプリフェッチバッファに対応し得る。
【００７８】
受信モジュール６３は、第２のスレッドによって送信されたメモリアドレス指定要求メッセージを受信するように構成される。ここで、メモリアドレス指定要求メッセージは、仮想アドレスを伝達する。
【００７９】
具体的には、アドレス指定を実行するべきスレッド、すなわち、第２のスレッドによって送信されたメモリアドレス指定要求メッセージが受信される。ここで、メモリアドレス指定要求メッセージは、アドレス指定されるべき仮想アドレスＶＡを伝達する。
【００８０】
問い合わせモジュール６４は、仮想アドレスに従って、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファに記憶されたページテーブルエントリにおいて、仮想アドレスに対応する物理アドレスを問い合わせるように構成される。
【００８１】
具体的には、バイパス変換バッファに記憶されたページテーブルエントリ及びプリフェッチバッファＰＢに記憶されたページテーブルエントリは、仮想アドレスＶＡに従って、同時に問い合わせをされ得る。下記の３つのケースは、ここでは、バイパス変換バッファ及びプリフェッチバッファＰＢにおけるアドレス指定結果に従って存在し得る。
【００８２】
ケース１：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在する場合、メモリは、第１の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。
【００８３】
具体的には、仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファに存在する場合、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在してもしなくても、データアクセスは、バイパス変換バッファ内に発見される物理アドレス、すなわち、第１の物理アドレスに従って実行される。
【００８４】
ケース２：仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、メモリは、第２の物理アドレスを使用することによってアクセスされて、データアクセスが実行される。仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは、バイパス変換バッファ内に記憶され、仮想アドレス及び第２の物理アドレスに対応し、プリフェッチバッファに記憶されるページテーブルエントリは削除される。
【００８５】
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリの数が、プリフェッチバッファの記憶容量よりも大きく、仮想アドレスに対応する第１の物理アドレスは、バイパス変換バッファには存在しないが、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在する場合、プリフェッチバッファに記憶されたページテーブルエントリを除いて、スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリのうちの１つのページテーブルエントリが、プリフェッチバッファ内に記憶される。
【００８６】
具体的には、仮想アドレスＶＡに対応する物理アドレスは、バイパス変換バッファに存在しないが、仮想アドレスＶＡに対応する物理アドレスが、プリフェッチバッファＰＢに存在する場合、データアクセスは、プリフェッチバッファＰＢ内に発見される物理アドレス、すなわち、第２の物理アドレスに従って実行され、発見されたページテーブルエントリ、すなわち、ヒットしたページエントリは、バイパス変換バッファのＴＬＢ内に記憶される。プリフェッチバッファＰＢが、スタンバイバッファ内の第２のスレッドのページテーブルエントリのうちの一部のみを記憶する場合、プリフェッチバッファＰＢ内のヒットしたページテーブルエントリが、ＴＬＢ内に記憶された後に、１つのページテーブルエントリが、スタンバイバッファから読み出され、プリフェッチバッファＰＢ内に記憶され得る。
【００８７】
ケース３：仮想アドレスに対応する第１の物理アドレスが、バイパス変換バッファに存在せず、仮想アドレスに対応する第２の物理アドレスが、プリフェッチバッファに存在しない場合、メモリは、仮想アドレスに対応する第３の物理アドレスについて問い合わせをされ、仮想アドレス及び第３の物理アドレスに対応し、メモリ内に発見されるページテーブルエントリは、バイパス変換バッファ内に記憶される。
【００８８】
具体的には、仮想アドレスＶＡに対応する物理アドレスが、バイパス変換バッファにもプリフェッチバッファＰＢにも存在しない場合、すなわち、バイパス変換バッファとプリフェッチバッファＰＢとの双方がミスした場合、メモリは、仮想アドレスＶＡに対応する物理アドレス、すなわち、第３の物理アドレスについて問い合わせをされる必要があり、発見されたページテーブルエントリ、すなわち、ヒットしたページテーブルエントリは、バイパス変換バッファのＴＬＢ内に記憶される。
【００８９】
さらに、実行モジュール６２は、
スタンバイバッファに記憶されている第２のスレッドのページテーブルエントリが、プリフェッチバッファ内に記憶される前に、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリをスタンバイバッファ内に記憶し、設定時間内に問い合わせをされないページテーブルエントリをバイパス変換バッファから削除する
ようにさらに構成され得る。
【００９０】
具体的には、バイパス変換バッファに記憶されるページテーブルエントリの数が、バイパス変換バッファの記憶容量を超える場合、最も低いヒット率を有するページテーブルエントリ、すなわち、設定時間内にミスしたページテーブルエントリは、スタンバイバッファ内に優先的に記憶され、設定時間内にミスしたページテーブルエントリは削除される。
【００９１】
さらに、実行モジュール６２は、
バイパス変換バッファにおいて設定時間内に問い合わせをされないページテーブルエントリが、スタンバイバッファ内に記憶された後に、スタンバイバッファに記憶されたページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリをスタンバイバッファから削除する
ようにさらに構成され得る。
【００９２】
具体的には、スタンバイバッファ内のページテーブルエントリのより長い記憶時間は、そのページテーブルエントリのより低いヒット率を示し、したがって、「先入れ先出し（ＦＩＦＯ）」の記憶モードが、スタンバイバッファにおいて使用され得る。すなわち、スタンバイバッファに記憶されるページテーブルエントリの数が、スタンバイバッファの記憶容量を超える場合、最長の記憶時間を有するページテーブルエントリは、優先的に削除される。
【００９３】
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、バイパス変換バッファ及びプリフェッチバッファは、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、同時に問い合わせをされる。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【００９４】
図７は、本発明に係る、物理メモリアドレスを問い合わせる装置の別の実施形態の概略構造図である。図７に示されるように、この実施形態における、物理メモリアドレスを問い合わせる装置は、メモリ７１と、バイパス変換バッファ７２と、スタンバイバッファ７３と、プリフェッチバッファ７４と、プロセッサ７５とを含む。
【００９５】
メモリ７１は、命令を記憶するように構成される。
【００９６】
バイパス変換バッファ７２は、変換索引バッファＴＬＢを記憶するように構成される。
【００９７】
スタンバイバッファ７３は、バイパス変換バッファに記憶されるＴＬＢにおいて設定時間内に問い合わせをされないページテーブルエントリを記憶するように構成される。
【００９８】
プリフェッチバッファ７４は、スタンバイバッファに記憶される、対応するスレッドのページテーブルエントリを記憶するように構成される。
【００９９】
プロセッサ７５は、メモリに記憶された命令を実行して、図１又は図２に示される、物理メモリアドレスを問い合わせる方法を実行するように構成される。
【０１００】
具体的には、メモリ７１は、高速ＲＡＭメモリを含み得、又は不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）、例えば、少なくとも１つのディスクメモリを含み得る。随意的に、メモリ７１は、少なくとも１つの記憶装置を含み得る。メモリ７１は、命令を記憶し、物理メモリアドレスを問い合わせる装置が実行される場合、プロセッサ７５は、メモリ７１と通信し、プロセッサ７５は、命令を実行し、それにより、物理メモリアドレスを問い合わせる装置は、本発明の実施形態において提供される、物理メモリアドレスを問い合わせる方法を実行することができる。
【０１０１】
スタンバイバッファ７３は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのＩＤを含み得る。バイパス変換バッファ７２は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、各対応するスレッドのＩＤを含み得る。プリフェッチバッファ７４は、仮想アドレスと物理アドレスとの間の対応を含むページテーブルエントリを記憶し、アドレス指定を実行するべき対応するスレッドのＩＤを含み得る。
【０１０２】
ここで留意すべきことは、スタンバイバッファ７３の数が１つ又は複数であり得ることである。例えば、各スレッドは、１つのスタンバイバッファに対応し得る。ここで、スタンバイバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされないスレッドのページテーブルエントリを記憶するために使用される。同様に、バイパス変換バッファ７２の数とプリフェッチバッファ７４の数との双方は、１つ又は複数であり得る。例えば、各スレッドは、１つのバイパス変換バッファ及び１つのプリフェッチバッファに対応し得る。
【０１０３】
この実施形態におけるプロセッサは、集積回路チップであってもよく、信号処理能力を有する。実装プロセスにおいて、前述の方法におけるステップは、プロセッサ内のハードウェアの集積論理回路又はソフトウェアの形式の命令を使用することによって完了され得る。前述のプロセッサは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向けプロセッサ（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは別のプログラマブルロジックコンポーネント、ディスクリートゲート若しくはトランジスタロジックコンポーネント、又はディスクリートハードウェアコンポーネントであってもよく、これらは、本発明の実施形態において開示された方法、ステップ、及び論理ブロック図を実装又は実行し得る。前述のプロセッサは、マイクロプロセッサであってもよく、又は前述のプロセッサは、任意の従来のプロセッサなどであってもよい。本発明の実施形態を参照しつつ開示された方法のステップは、ハードウェアプロセッサを用いて直接実行及び完了されてもよく、又はプロセッサ内のハードウェアモジュールとソフトウェアモジュールとの組み合わせを用いて実行及び完了されてもよい。ソフトウェアモジュールは、本技術分野における成熟した記憶媒体、例えば、ランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的消去可能プログラマブルメモリ、又はレジスタなどに位置し得る。記憶媒体は、メモリに位置し、プロセッサは、メモリ内の情報を読出し、前述の方法におけるステップを、プロセッサのハードウェアとの組み合わせにおいて完了する。
【０１０４】
本発明の実施形態は、チップをさらに提供する。ここで、チップは、物理メモリアドレスを問い合わせるように構成され、チップは、前述のプロセッサを含み得る。
【０１０５】
この実施形態において提供される、物理メモリアドレスを問い合わせる装置によれば、プロセッサ７５は、メモリ７１に記憶される命令を実行し、第２のスレッドのアドレス指定されるべき仮想アドレスに従って、バイパス変換バッファ及びプリフェッチバッファに同時に問い合わせをする。ここで、プリフェッチバッファは、バイパス変換バッファにおいて設定時間内に問い合わせをされない、第２のスレッドのページテーブルエントリを記憶し、それによって、仮想アドレスに対応する物理アドレスを問い合わせるヒット率を増加させ、アドレス指定時間を短縮する。
【０１０６】
当業者は、前述の方法実施形態のステップの全部又は一部がプログラム命令関連ハードウェアによって実装され得ることを理解し得る。前述のプログラムは、コンピュータ読取可能な媒体に記憶され得る。プログラムが実行されると、前述の方法実施形態のステップが実行される。前述の記憶媒体は、プログラムコードを記憶することができる任意の媒体、例えば、ＲＯＭ、ＲＡＭ、磁気ディスク、又は光ディスクなどを含む。
【０１０７】
最後に、留意すべきことは、前述の実施形態が本発明の技術的解決策を説明することを意図されたものに過ぎず、本発明を限定することを意図されたものではないことである。本発明は、前述の実施形態を参照しつつ詳細に説明されているが、当業者は、当業者が前述の実施形態において説明された技術的解決策に対して変形を行い得ること、又はその技術的特徴の一部若しくは全部に対して均等な置換を行い得ることを理解するべきである。しかしながら、こうした変形又は置換は、対応する技術的解決策の本質を、本発明の実施形態における技術的解決策の範囲から逸脱させるものではない。
【国際調査報告】
2016528640.tif 000010
2016528640.tif 000011
2016528640.tif 000012
2016528640.tif 000013