(57)【要約】  メモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするためのシステムおよび方法を開示する。MMUは、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出し、トリガ条件がトリガアドレスに関連付けられ、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成し、アドレス変換のシーケンスが、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備え、複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行し、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないとき、1つまたは複数の変換キャッシュが、少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチする。
2018522331.tif 000002
【特許請求の範囲】
【請求項１】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチする方法であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するステップであって、前記トリガ条件がトリガアドレスに関連付けられる、ステップと、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するステップであって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、ステップと、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するステップと
を含み、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、方法。
【請求項２】
前記トリガ条件が、前記1つまたは複数の変換キャッシュのうちの1つにおける前記トリガアドレスのヒットを含む、請求項1に記載の方法。
【請求項３】
前記トリガアドレスに対応する第1の変換キャッシュエントリ内にプリフェッチフラグを設定して、前記第1の変換キャッシュエントリに対応するアドレス範囲のために、プリフェッチが一度だけ実行されることを保証するステップと、
前記トリガアドレスを含んでいる前記アドレス範囲に隣接する前記複数のアドレス範囲のうちの少なくとも1つに対応する第2の変換キャッシュエントリ内に前記プリフェッチフラグを設定して、前記第2の変換キャッシュエントリへの後続のヒットにおいて、プリフェッチがトリガされないことを保証するステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記トリガ条件が、前記プリフェッチフラグが設定されていないことを含む、請求項3に記載の方法。
【請求項５】
前記トリガ条件が、前記1つまたは複数の変換キャッシュ内の前記トリガアドレスのミスを含む、請求項1に記載の方法。
【請求項６】
前記方法が、
前記トリガアドレスがアクティブアドレス変換要求のシーケンス記述子内に含まれているか否かを決定するステップ
をさらに含み、
前記プリフェッチするべきアドレス変換のシーケンスを記述する前記シーケンス記述子が、前記トリガアドレスが前記アクティブアドレス変換要求の前記シーケンス記述子内に含まれていることに基づいて、生成されない、請求項1に記載の方法。
【請求項７】
前記シーケンス記述子が、前記トリガアドレスと、前記アドレス変換のシーケンスのサイズと、ストライド長サイズとを含み、前記アドレス変換のシーケンスの前記サイズが、アドレス変換がプリフェッチされる対象になるアドレスの範囲を定義し、前記アドレス変換のシーケンスの前記サイズが、前記ストライド長サイズのストライド長領域に分割され、前記シーケンス記述子が、ストライド長領域ごとに1つのアドレス変換要求を記述する、請求項1に記載の方法。
【請求項８】
前記ストライド長サイズが、下にあるキャッシュ構造に基づいて、プログラマブルであるか、固定であるか、または前記トリガアドレスのページサイズに基づいて動的に決定される、請求項7に記載の方法。
【請求項９】
前記シーケンス記述子が、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上のストライド長領域、およびそのすぐ下のストライド長領域のための、アドレス変換要求を定義する、請求項7に記載の方法。
【請求項１０】
前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上の前記ストライド長領域、および、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ下の前記ストライド長領域に対応する、1つまたは複数の変換キャッシュエントリ内のプリフェッチフラグが設定されない、請求項9に記載の方法。
【請求項１１】
アドレス変換要求がプリフェッチされる順序が、前記アドレス変換のシーケンスのうちのアドレス変換の最初のストライド長領域から順方向の順序、前記アドレス変換のシーケンスのうちのアドレス変換の最後のストライド長領域から逆方向の順序、前記トリガアドレスを含んでいるアドレス変換のストライド長領域に隣接するアドレス変換のストライド長領域から反転する順序、プログラマブルな順序、またはランダムな順序を含む、請求項7に記載の方法。
【請求項１２】
1つまたは複数のシーケンス記述子を先入れ先出し(FIFO)キュー内に記憶するステップと、
前記FIFOキューからシーケンス記述子をデキューすることを、前記デキューされるシーケンス記述子に対応するアドレス変換要求を生成するためにプリフェッチ要求生成器が利用可能であることに基づいて行うステップと
をさらに含む、請求項1に記載の方法。
【請求項１３】
前記プリフェッチ要求生成器が、前記シーケンス記述子内で定義された各アドレスのためのプリフェッチ要求を生成する、請求項12に記載の方法。
【請求項１４】
複数のプリフェッチ要求生成器が、前記FIFOキューからの複数のシーケンス記述子において並列に動作する、請求項12に記載の方法。
【請求項１５】
新しいシーケンス記述子をフルのFIFOキュー内に記憶しようと試みると、前記新しいシーケンス記述子が破棄される結果となる、請求項12に記載の方法。
【請求項１６】
新しいシーケンス記述子をフルのFIFOキュー内に記憶しようと試みると、前記FIFOキュー内の最も古いシーケンス記述子が破棄される結果となる、請求項12に記載の方法。
【請求項１７】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするための装置であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するように構成された論理であって、前記トリガ条件がトリガアドレスに関連付けられる、論理と、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するように構成された論理であって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、論理と、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するように構成された論理と
を備え、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、装置。
【請求項１８】
前記トリガ条件が、前記1つまたは複数の変換キャッシュのうちの1つにおける前記トリガアドレスのヒットを含む、請求項17に記載の装置。
【請求項１９】
前記トリガアドレスに対応する第1の変換キャッシュエントリ内にプリフェッチフラグを設定して、前記第1の変換キャッシュエントリに対応するアドレス範囲のために、プリフェッチが一度だけ実行されることを保証するように構成された論理と、
前記トリガアドレスを含んでいる前記アドレス範囲に隣接する前記複数のアドレス範囲のうちの少なくとも1つに対応する第2の変換キャッシュエントリ内に前記プリフェッチフラグを設定して、前記第2の変換キャッシュエントリへの後続のヒットにおいて、プリフェッチがトリガされないことを保証するように構成された論理と
をさらに備える、請求項17に記載の装置。
【請求項２０】
前記トリガ条件が、前記プリフェッチフラグが設定されていないことを含む、請求項19に記載の装置。
【請求項２１】
前記トリガ条件が、前記1つまたは複数の変換キャッシュ内の前記トリガアドレスのためのミスを含む、請求項17に記載の装置。
【請求項２２】
前記装置が、
前記トリガアドレスがアクティブアドレス変換要求のシーケンス記述子内に含まれているか否かを決定するように構成された論理
をさらに備え、
前記プリフェッチするべきアドレス変換のシーケンスを記述する前記シーケンス記述子が、前記トリガアドレスが前記アクティブアドレス変換要求の前記シーケンス記述子内に含まれていることに基づいて、生成されない、請求項17に記載の装置。
【請求項２３】
前記シーケンス記述子が、前記トリガアドレスと、前記アドレス変換のシーケンスのサイズと、ストライド長サイズとを含み、前記アドレス変換のシーケンスの前記サイズが、アドレス変換がプリフェッチされる対象になるアドレスの範囲を定義し、前記アドレス変換のシーケンスの前記サイズが、前記ストライド長サイズのストライド長領域に分割され、前記シーケンス記述子が、ストライド長領域ごとに1つのアドレス変換要求を記述する、請求項17に記載の装置。
【請求項２４】
前記ストライド長サイズが、下にあるキャッシュ構造に基づいて、プログラマブルであるか、固定であるか、または前記トリガアドレスのページサイズに基づいて動的に決定される、請求項23に記載の装置。
【請求項２５】
前記シーケンス記述子が、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上のストライド長領域、およびそのすぐ下のストライド長領域のための、アドレス変換要求を定義する、請求項23に記載の装置。
【請求項２６】
前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上の前記ストライド長領域、および、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ下の前記ストライド長領域に対応する、1つまたは複数の変換キャッシュエントリ内のプリフェッチフラグが設定されない、請求項25に記載の装置。
【請求項２７】
アドレス変換要求がプリフェッチされる順序が、前記アドレス変換のシーケンスのうちのアドレス変換の最初のストライド長領域から順方向の順序、前記アドレス変換のシーケンスのうちのアドレス変換の最後のストライド長領域から逆方向の順序、前記トリガアドレスを含んでいるアドレス変換のストライド長領域に隣接するアドレス変換のストライド長領域から反転する順序、プログラマブルな順序、またはランダムな順序を含む、請求項23に記載の装置。
【請求項２８】
1つまたは複数のシーケンス記述子を先入れ先出し(FIFO)キュー内に記憶するように構成された論理と、
前記FIFOキューからシーケンス記述子をデキューすることを、前記デキューされるシーケンス記述子に対応するアドレス変換要求を生成するためにプリフェッチ要求生成器が利用可能であることに基づいて行うように構成された論理と
をさらに備える、請求項17に記載の装置。
【請求項２９】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするための装置であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するための手段であって、前記トリガ条件がトリガアドレスに関連付けられる、手段と、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するための手段であって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、手段と、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するための手段と
を備え、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、装置。
【請求項３０】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするためのコンピュータ可読記録媒体であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するための少なくとも1つの命令であって、前記トリガ条件がトリガアドレスに関連付けられる、少なくとも1つの命令と、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するための少なくとも1つの命令であって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、少なくとも1つの命令と、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するための少なくとも1つの命令と
を備え、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、メモリ管理ユニット(MMU)のための変換の投機的プリフェッチに関する。
【背景技術】
【０００２】
システムオンチップ(SoC)デバイスは、1つまたは複数の中央プロセッサと、1つまたは複数の相互接続(または、バス)と、1つまたは複数の周辺デバイス(または、アップストリームデバイス)と、1つまたは複数のスレーブデバイスとを含み得る。そのようなSoCデバイスは、プロセッサに結合されたメモリ管理ユニット(MMU)と、1つまたは複数の周辺デバイスに結合された1つまたは複数のシステムMMU(SMMU)とをさらに含み得る。SMMUは、プロセッサのMMUがプロセッサメモリアクセスのためにアドレスを変換する方法とほとんど同じ方法における、周辺デバイストラフィックのためのアドレス変換サービスを提供する。
【０００３】
MMUの主要な機能には、アドレス変換、メモリ保護、および属性制御が含まれる。アドレス変換は、入力アドレスを出力アドレスに変換することである。変換情報は、MMUがアドレス変換を実行するために参照する変換テーブル内に記憶される。MMUは、次回にメモリの同じブロックへの入力アドレスが受信されるとき、変換テーブルへのアクセスを回避するために、完了した変換を変換キャッシュ内に記憶することができる。
【０００４】
MMU変換キャッシュ内のデマンドミスは、たとえば、メモリレイテンシ(遅延)の増大、帯域幅利用の低減、および遅延を隠すためのバッファリングの増大を引き起こすことによって、システム性能およびシステムコストに悪影響を及ぼす。そのようなデマンドミスの数を最小限に抑えるための現在の解決策には、どのような変換が将来に必要とされるかを「予測」し、それらを変換キャッシュに入れるように試みることが含まれる。具体的に、これらの解決策は、以前に使用された近くの変換が将来に必要とされることを予測する。そのような予測方式を良好に実行させるために、高度の時間的/空間的局所性が必要とされる。限定された空間的/時間的局所性がある場合には、予測は不正確であることが多く、結果として、予測方式が不十分に実行する。
【発明の概要】
【課題を解決するための手段】
【０００５】
以下は、メモリ管理ユニット(MMU)のための変換の投機的プリフェッチのための、本明細書で開示する機構に関連する1つまたは複数の態様および/または実施形態に関する簡略化された概要を提示する。したがって、以下の概要は、すべての企図される態様および/または実施形態に関する包括的な概観と見なされるべきではなく、また、以下の概要は、すべての企図される態様および/または実施形態に関する主要または重要な要素を識別するか、任意の特定の態様および/または実施形態に関連付けられた範囲を定めるものと見なされるべきでもない。したがって、以下の概要は、以下で提示する詳細な説明に先立って、本明細書で開示する機構に関する1つまたは複数の態様および/または実施形態に関する特定の概念を簡略化された形で提示することが唯一の目的である。
【０００６】
デバイスのMMUにおいてアドレス変換をプリフェッチする方法は、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するステップであって、トリガ条件がトリガアドレスに関連付けられる、ステップと、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するステップであって、アドレス変換のシーケンスが、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、ステップと、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行するステップとを含み、1つまたは複数の変換キャッシュが、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないことに基づいて、少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチする。
【０００７】
デバイスのMMUにおいてアドレス変換をプリフェッチするための装置は、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するように構成された論理であって、トリガ条件がトリガアドレスに関連付けられる、論理と、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するように構成された論理であって、アドレス変換のシーケンスが、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、論理と、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行するように構成された論理とを含み、1つまたは複数の変換キャッシュが、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないことに基づいて、少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチする。
【０００８】
デバイスのMMUにおいてアドレス変換をプリフェッチする装置は、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するための手段であって、トリガ条件がトリガアドレスに関連付けられる、手段と、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するための手段であって、アドレス変換のシーケンスが、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、手段と、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行するための手段とを含み、1つまたは複数の変換キャッシュが、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないことに基づいて、少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチする。
【０００９】
デバイスのMMUにおいてアドレス変換をプリフェッチするための非一時的コンピュータ可読媒体は、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するための少なくとも1つの命令であって、トリガ条件がトリガアドレスに関連付けられる、少なくとも1つの命令と、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するための少なくとも1つの命令であって、アドレス変換のシーケンスが、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、少なくとも1つの命令と、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行するための少なくとも1つの命令とを含み、1つまたは複数の変換キャッシュが、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないことに基づいて、少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチする。
【００１０】
本明細書で開示する機構に関連付けられた他の目的および利点は、添付の図面および詳細な説明に基づいて、当業者に明らかとなろう。
【００１１】
以下の詳細な説明を参照しながら、本開示を限定するためではなく、例示のためにだけ提示される添付の図面とともに考察すれば、本開示の実施形態およびその付随する利点の多くがより十分に理解されるようになるので、それらに関するより完全な諒解が容易に得られるであろう。
【図面の簡単な説明】
【００１２】
【図１】本開示の一実施形態によるワイヤレス通信システムの高レベルシステムアーキテクチャを示す図である。
【図２】本開示の一態様による、ワイヤレス技法を使用して位置を決定することができる動作環境において使用され得る例示的なモバイルデバイスを示す図である。
【図３】本開示の一実施形態によるサーバを示す図である。
【図４】本開示の一態様による例示的なシステムを示す図である。
【図５】本開示の一態様による例示的な変換テーブルを示す図である。
【図６】本開示の一態様によるアドレス変換に関わるステップを示す図である。
【図７】本開示の一態様による例示的な変換キャッシュエントリを示す図である。
【図８】本開示の一態様による例示的な2段またはネスト化された変換フローを示す図である。
【図９】本開示の一態様による例示的なプリフェッチシステムを示す図である。
【図１０】本開示の一態様による例示的なプリフェッチウィンドウを示す図である。
【図１１】本開示の一態様による、プリフェッチウィンドウサイズおよびストライド長の例を示す図である。
【図１２】本開示の一態様による、ストライド長領域が要求され得る様々な方法を示す図である。
【図１３】本開示の少なくとも1つの態様によるデバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするための例示的なフローを示す図である。
【図１４】本明細書で教示するように通信をサポートするように構成された装置のいくつかの例示的な態様の簡略ブロック図である。
【発明を実施するための形態】
【００１３】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするためのシステムおよび方法を開示する。一実施形態では、MMUは、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出し、トリガ条件がトリガアドレスに関連付けられ、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成し、アドレス変換のシーケンスが、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備え、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行し、1つまたは複数の変換キャッシュが、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないことに基づいて、少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチする。
【００１４】
本開示のこれらおよび他の態様について、本開示の特定の実施形態を対象とした以下の説明および関連する図面において説明する。本開示の範囲を逸脱することなく、代替実施形態が考案され得る。加えて、本開示の関連する詳細を曖昧にしないように、本開示のよく知られている要素については詳細に説明しないか、または省略する。
【００１５】
「例示的」および/または「例」という語は、本明細書では「例、事例、または例示として働くこと」を意味するために使用される。本明細書で「例示的」および/または「例」として説明するいかなる実施形態も、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本開示の実施形態」という用語は、本開示のすべての実施形態が、論じる特徴、利点または動作モードを含むことを必要とするとは限らない。
【００１６】
さらに、いくつかの実施形態について、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスに関して説明する。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行され得ることが認識されよう。加えて、本明細書で説明するこれらのアクションのシーケンスは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させる、対応するコンピュータ命令のセットを記憶した、任意の形態のコンピュータ可読記憶媒体内で完全に具現化されると見なされ得る。したがって、本開示の様々な態様は、特許請求される主題の範囲内にそのすべてが入ることが企図されている、いくつかの異なる形態で具現化され得る。加えて、本明細書で説明する実施形態ごとに、任意のそのような実施形態の対応する形式は、本明細書では、たとえば、説明するアクションを実行する「ように構成された論理」として説明され得る。
【００１７】
概して、別段に明示的に記載されていない限り、本開示全体にわたって使用される「ように構成された論理」という句は、ハードウェアを用いて少なくとも部分的に実装される実施形態を引き合いに出すものとし、ハードウェアから独立したソフトウェアのみの実装形態に対応付けるものではない。また、様々なブロックにおける構成された論理または「ように構成された論理」は、特定の論理ゲートまたは論理要素に限定されるのではなく、概して、本明細書で説明する機能を(ハードウェアまたはハードウェアとソフトウェアの組合せのいずれかを介して)実行するための能力を指すことが諒解されよう。したがって、様々なブロックに示す構成された論理または「ように構成された論理」は、「論理」という語を共有しているにもかかわらず、必ずしも論理ゲートまたは論理要素として実装されるとは限らない。様々なブロックにおける論理間の他の対話または協働が、以下でより詳細に説明する実施形態の検討から、当業者には明らかになるであろう。
【００１８】
本明細書ではユーザ機器(UE)と呼ばれるクライアントデバイスは、モバイルであってもまたは固定されていてもよく、かつ無線アクセスネットワーク(RAN)と通信してもよい。本明細書で使用する「UE」という用語は、互換的に「アクセス端末」または「AT」、「ワイヤレスデバイス」、「加入者デバイス」、「加入者端末」、「加入者局」、「ユーザ端末」またはUT、「モバイル端末」、「移動局」、およびそれらの変形形態と呼ばれることがある。概して、UEは、RANを介してコアネットワークと通信することができ、コアネットワークを通して、UEは、インターネットなどの外部ネットワークに接続され得る。当然、ワイヤードアクセスネットワーク、(たとえば、IEEE802.11などに基づく)WiFiネットワークなどを介してなど、コアネットワークおよび/またはインターネットに接続する他の機構も、UEにとって可能である。UEは、限定はしないが、PCカード、コンパクトフラッシュ(登録商標)デバイス、外付けまたは内蔵のモデム、ワイヤレスフォンまたは有線フォンなどを含むいくつかのタイプのデバイスのいずれかによって具現化され得る。UEが信号をRANに送ることができる通信リンクは、アップリンクチャネル(たとえば、逆方向トラフィックチャネル、逆方向制御チャネル、アクセスチャネルなど)と呼ばれる。RANが信号をUEに送ることができる通信リンクは、ダウンリンクチャネルまたは順方向リンクチャネル(たとえば、ページングチャネル、制御チャネル、ブロードキャストチャネル、順方向トラフィックチャネルなど)と呼ばれる。本明細書で使用するトラフィックチャネル(TCH)という用語は、アップリンク/逆方向トラフィックチャネル、またはダウンリンク/順方向トラフィックチャネルのいずれかを指し得る。
【００１９】
図1は、本開示の一実施形態によるワイヤレス通信システム100の高レベルシステムアーキテクチャを示す。ワイヤレス通信システム100はUE1...Nを含む。UE1...Nは、「スマートフォン」を含むセルラー電話、携帯情報端末(PDA)、ページャ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなどを含み得る。たとえば、図1において、UE1...2は発呼側セルラーフォンとして示され、UE3...5はタッチスクリーンセルラーフォンまたは「スマートフォン」として示され、UE NはデスクトップコンピュータまたはPCとして示されている。
【００２０】
図1を参照すると、UE1...Nは、図1にエアインターフェース104、106、108および/または直接ワイヤード接続として示されている物理通信インターフェースまたは物理通信レイヤを介して、アクセスネットワーク(たとえば、RAN120、アクセスポイント125など)と通信するように構成される。エアインターフェース104および106は所与のセルラー通信プロトコル(たとえば、CDMA、EVDO、eHRPD、GSM(登録商標)、EDGE、W-CDMA、LTEなど)に準拠することができ、一方、エアインターフェース108はワイヤレスIPプロトコル(たとえば、IEEE802.11)に準拠することができる。RAN120は、エアインターフェース104および106などのエアインターフェースを介してUEにサービスする複数のアクセスポイントを含む。RAN120内のアクセスポイントは、アクセスノードまたはAN、アクセスポイントまたはAP、基地局またはBS、ノードB、eノードBなどと呼ばれることがある。これらのアクセスポイントは、地上アクセスポイント(もしくは地上局)、または衛星アクセスポイントであり得る。RAN120は、RAN120によってサービスされるUEとRAN120または異なるRANによってサービスされる他のUEとの間の回線交換(CS)呼を全体的にブリッジングすることを含む様々な機能を実行することができ、インターネット175などの外部ネットワークとのパケット交換(PS)データの交換を仲介することもできる、コアネットワーク140に接続するように構成される。インターネット175は、いくつかのルーティングエージェントおよび処理エージェント(便宜上、図1には示されていない)を含む。図1で、UE Nは、インターネット175に直接(すなわち、WiFiまたは802.11ベースネットワークのイーサネット(登録商標)接続を介してなど、コアネットワーク140とは別個に)接続するように示されている。それによって、インターネット175は、コアネットワーク140を介してUE NとUE1...Nとの間のパケット交換データ通信をブリッジングするように機能し得る。図1には、RAN120とは別個であるアクセスポイント125も示されている。アクセスポイント125は、コアネットワーク140とは無関係に(たとえば、FiOS、ケーブルモデムなどの光通信システムを介して)インターネット175に接続され得る。エアインターフェース108は、一例ではIEEE802.11などのローカルワイヤレス接続を介してUE4またはUE5にサービスし得る。UE Nは、一例では(たとえば、ワイヤード接続性とワイヤレス接続性の両方を有するWiFiルータ用の)アクセスポイント125自体に対応し得るモデムまたはルータとの直接接続など、インターネット175とのワイヤード接続を有するデスクトップコンピュータとして示されている。
【００２１】
図1を参照すると、サーバ170は、インターネット175、コアネットワーク140、またはその両方に接続されるように示される。サーバ170は、構造的に別個の複数のサーバとして実装され得るか、または代替的には単一のサーバに対応し得る。以下でより詳細に説明するように、サーバ170は、コアネットワーク140および/またはインターネット175を介してサーバ170に接続することができるUEに対して1つまたは複数の通信サービス(たとえば、ボイスオーバーインターネットプロトコル(VoIP)セッション、プッシュツートーク(PTT)セッション、グループ通信セッション、ソーシャルネットワーキングサービスなど)をサポートするように、および/またはUEにコンテンツ(たとえば、ウェブページダウンロード)を提供するように構成される。
【００２２】
本開示の様々な実施形態は、図2におけるモバイルデバイス200など、様々なデバイスのいずれかにおいて実装され得る。モバイルデバイス200は、図1のUE1...Nのいずれかに対応し得る。図2を参照すると、簡潔のために、図2のブロック図に示す様々な特徴および機能は、共通バス216を使用して互いに接続されており、このことは、これらの様々な特徴および機能が、動作可能に互いに結合されることを表すことを意図している。他の接続、機構、特徴、機能などが、実際の可搬型ワイヤレスデバイスを動作可能に結合し構成するために、必要に応じて提供され適応され得ることが当業者には認識されよう。さらに、図2の例に示す特徴または機能のうちの1つまたは複数がさらに再分割され得るか、または図2に示す特徴または機能のうちの2つ以上が組み合わせられ得ることも認識されよう。
【００２３】
モバイルデバイス200などのモバイルデバイスの内部構成要素は、異なるハードウェア構成によって具現化され得るが、内部ハードウェア構成要素のための基本的な高レベルモバイルデバイス構成を図2に示す。モバイルデバイス200は、1つまたは複数のアンテナ202に接続され得る1つまたは複数のワイドエリアネットワーク(WAN)トランシーバ204を含み得る。WANトランシーバ204は、図1におけるRAN120との間で、および/またはネットワーク内の他のモバイルデバイスと直接、信号を通信し、および/または検出するための、好適なデバイス、ハードウェア、および/またはソフトウェアを備える。一態様では、WANトランシーバ204は、ワイヤレス基地局のCDMAネットワークと通信するために好適なCDMA通信システムを含み得るが、他の態様では、ワイヤレス通信システムは、たとえば、TDMAまたはGSM(登録商標)など、別のタイプのセルラーテレフォニーネットワークを含み得る。加えて、たとえば、WiMAX(IEEE802.16)など、任意の他のタイプのワイドエリアワイヤレスネットワーキング技術が使用され得る。モバイルデバイス200はまた、1つまたは複数のアンテナ202に接続され得る1つまたは複数のローカルエリアネットワーク(LAN)トランシーバ206をも含み得る。LANトランシーバ206は、図1におけるアクセスポイント125との間で、および/またはネットワーク内の他のモバイルデバイスと直接、信号を通信し、および/または検出するための、好適なデバイス、ハードウェアおよび/またはソフトウェアを備える。一態様では、LANトランシーバ206は、1つまたは複数のワイヤレスアクセスポイントと通信するために好適なWi-Fi(802.11x)通信システムを含み得るが、他の態様では、LANトランシーバ206は、別のタイプのローカルエリアネットワーク、パーソナルエリアネットワーク(たとえば、Bluetooth(登録商標))を含む。加えて、たとえば、超広帯域、ZigBee、ワイヤレスUSBなど、任意の他のタイプのワイヤレスネットワーキング技術が使用され得る。
【００２４】
本明細書で使用する「ワイヤレスアクセスポイント」(WAP)という短縮用語は、アクセスポイント125および/またはRAN120を指すために使用され得る。具体的には、以下に提示する説明において、「WAP」という用語が使用されるとき、実施形態は、複数のアクセスポイント125、複数のRAN120、またはそれら2つの任意の組合せからの信号を活用することができる、モバイルデバイス200を含み得ることを理解されたい。モバイルデバイス200によって利用されるWAPの具体的なタイプは、動作の環境に依存し得る。その上、モバイルデバイス200は、正確な位置解に到達するために、様々なタイプのWAPの間で動的に選択することができる。他の実施形態では、様々なネットワーク要素がピアツーピア方式で動作することができ、それによって、たとえば、モバイルデバイス200はWAPで置き換えられるか、またはその反対でもよい。他のピアツーピア実施形態は、1つまたは複数のWAPの代わりに作用する別のモバイルデバイス(図示せず)を含み得る。
【００２５】
SPS受信機208もまた、モバイルデバイス200内に含まれ得る。SPS受信機208は、衛星信号を受信するために1つまたは複数のアンテナ202に接続され得る。SPS受信機208は、SPS信号を受信し、処理するための任意の好適なハードウェアおよび/またはソフトウェアを備え得る。SPS受信機208は、他のシステムに対して、情報および動作を適宜要求し、モバイルデバイス200の位置を決定するために必要な計算を、任意の好適なSPSアルゴリズムによって取得された測定値を使用して実行する。
【００２６】
WANトランシーバ204、LANトランシーバ206、およびSPS受信機208によって受信された信号から導出される動きデータに依存しない運動および/または配向情報を与えるために、動きセンサー212がプロセッサ210に結合され得る。例として、動きセンサー212は、加速度計(たとえば、MEMSデバイス)、ジャイロスコープ、地磁気センサー(たとえば、コンパス)、高度計(たとえば、気圧高度計)、および/または任意の他のタイプの運動検出センサーを利用し得る。その上、動きセンサー212は、複数の異なるタイプのデバイスを含み、動き情報を与えるためにそれらの出力を組み合わせ得る。たとえば、動きセンサー212は、多軸加速度計および配向センサーの組合せを使用して、2-Dおよび/または3-D座標系での位置を計算する能力を与え得る。
【００２７】
プロセッサ210は、バス216を介して、WANトランシーバ204、LANトランシーバ206、SPS受信機208、および動きセンサー212に接続され得る。プロセッサ210は、処理機能ならびに他の計算および制御機能を提供する、1つまたは複数のマイクロプロセッサ、マイクロコントローラ、および/またはデジタル信号プロセッサを含み得る。プロセッサ210はまた、モバイルデバイス200内でプログラムされた機能を実行するためのデータおよびソフトウェア命令を記憶するためのメモリ214にも結合され得る。メモリ214は、プロセッサ210に(たとえば、同じICパッケージ内に)搭載されてもよく、および/または、メモリは、プロセッサの外部メモリであり、共通バス216(または、他のデータバス)を介して機能的に結合されてもよい。
【００２８】
プロセッサ210は、MMU230をさらに含むか、またはそれに結合され得る。MMU230は、本明細書で説明するように、アドレス変換をプリフェッチするように構成され得る。一実施形態では、MMU230は、MMU230に関連付けられた1つまたは複数の変換キャッシュ232に関係付けられたトリガ条件を検出することができ、そこで、トリガ条件は、トリガアドレスに関連付けられる。1つまたは複数の変換キャッシュ232は、MMU230に結合され得、メモリ214内に記憶され得るなどの、MMU230の構成要素であり得る。MMU230は、1つまたは複数の変換キャッシュ232にプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子をさらに生成することができ、そこで、アドレス変換のシーケンスは、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える。MMU230は、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュ232にアドレス変換要求をさらに発行することができ、そこで、1つまたは複数の変換キャッシュ232は、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ232内に存在しないことに基づいて、その少なくとも1つのアドレス変換を1つまたは複数の変換キャッシュ232にプリフェッチする。
【００２９】
モバイルデバイス200は、モバイルデバイス200とのユーザ対話を可能にするマイクロフォン/スピーカー220、キーパッド222、およびディスプレイ224など、任意の好適なインターフェースシステムを提供するユーザインターフェース218を含み得る。マイクロフォン/スピーカー220は、WANトランシーバ204および/またはLANトランシーバ206を使用して音声通信サービスを提供する。キーパッド222は、ユーザ入力のための任意の好適なボタンを備える。ディスプレイ224は、たとえば、バックライトLCDディスプレイなど、任意の好適なディスプレイを含み、追加のユーザ入力モードのためのタッチスクリーンディスプレイをさらに含み得る。
【００３０】
本明細書で使用するとき、モバイルデバイス200は、1つまたは複数のワイヤレス通信デバイスまたはネットワークから送信されたワイヤレス信号を取り込み、1つまたは複数のワイヤレス通信デバイスまたはネットワークにワイヤレス信号を送信するように構成可能である、任意の可搬型の、または移動可能なデバイスまたは機械であり得る。図2に示すように、モバイルデバイス200は、そのような可搬型ワイヤレスデバイスを表す。したがって、限定ではなく例として、モバイルデバイス200は、無線デバイス、セルラー電話デバイス、コンピューティングデバイス、パーソナル通信システム(PCS)デバイス、または他の同様の移動可能なワイヤレス通信機能搭載デバイス、アプライアンス、もしくは機械を含み得る。また、「モバイルデバイス」は、衛星信号受信、支援データ受信、および/または位置関連処理が、そのデバイスにおいて行われるか、サーバにおいて行われるか、ネットワークに関連する別のデバイスにおいて行われるかにかかわらず、インターネット、Wi-Fi、または他のネットワークなどを介してサーバと通信することが可能である、ワイヤレスデバイス、コンピュータ、ラップトップなどを含むすべてのデバイスを含むことが意図される。上記の任意の動作可能な組合せも、「モバイルデバイス」と見なされる。
【００３１】
様々な実施形態は、図3に示すサーバ300など、様々な市販サーバデバイスのいずれにおいても実装され得る。一例では、サーバ300は、図1におけるサーバ170の1つの例示的な構成に対応し得る。図3では、サーバ300は、揮発性メモリ302と、ディスクドライブ303などの大容量の不揮発性メモリとに結合された、プロセッサ301を含む。サーバ300はまた、プロセッサ301に結合された、フロッピーディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ306をも含み得る。サーバ300はまた、他のブロードキャストシステムコンピュータおよびサーバに、またはインターネットに結合されたローカルエリアネットワークなどのネットワーク307とのデータ接続を確立するための、プロセッサ301に結合されたネットワークアクセスポート304を含んでもよい。
【００３２】
プロセッサ301は、MMU330をさらに含むか、またはそれに結合され得る。MMU330は、本明細書で説明するように、アドレス変換をプリフェッチするように構成され得る。一実施形態では、MMU330は、MMU330に関連付けられた1つまたは複数の変換キャッシュ332に関係付けられたトリガ条件を検出することができ、そこで、トリガ条件は、トリガアドレスに関連付けられる。1つまたは複数の変換キャッシュ332は、MMU330に結合され得、揮発性メモリ302またはディスクドライバ303内に記憶され得るなどの、MMU330の構成要素であり得る。MMU330は、1つまたは複数の変換キャッシュ332にプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子をさらに生成することができ、そこで、アドレス変換のシーケンスは、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える。MMU330は、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュ332にアドレス変換要求をさらに発行することができ、そこで、1つまたは複数の変換キャッシュ332は、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ332内に存在しないことに基づいて、その少なくとも1つのアドレス変換を1つまたは複数の変換キャッシュ332にプリフェッチする。
【００３３】
以下の表は、本開示全体にわたって使用されるいくつかの用語のための定義を提供する。
【表１】
2018522331.tif 000003
【００３４】
図4は、本開示の一態様による例示的なシステム400を示す。システム400は、図2におけるモバイルデバイス200、または図3におけるサーバ300に組み込まれ得る。システム400の構成要素は、プロセッサ402などの1つまたは複数の中央プロセッサ(図2におけるプロセッサ210、または図3におけるプロセッサ301に対応し得る)と、相互接続412および414などの1つまたは複数の相互接続(または、バス)と、デバイス410A〜Cなどの1つまたは複数の周辺デバイス(または、アップストリームデバイス)と、メモリ406およびスレーブ408などの1つまたは複数のスレーブデバイスとを含む。デバイス410A〜Cは、MMU404/SMMU416、418から見ると「アップストリーム」であるデバイス(たとえば、図2におけるモバイルデバイス200、または図3におけるサーバ300)の任意の他の構成要素を含み得る。すなわち、デバイス410A〜Cは、そこからMMU404/SMMU416、418がコマンド/命令を受信する、システム400を具現化するデバイスの任意の構成要素であり得、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、周辺構成要素相互接続エクスプレス(PCIe)ルートコンプレックス、USBインターフェース、LANインターフェース、ユニバーサル非同期受信機/送信機(UART)などである。スレーブ408は、MMU404/SMMU416、418からの出力を受信する、システム400を具現化するデバイスの任意の「ダウンストリーム」構成要素であり得る。たとえば、スレーブ408は、システムレジスタ、メモリマップ入力/出力などを含み得る。
【００３５】
システム400は、プロセッサ402に結合されたMMU404(図2におけるMMU230、または図3におけるMMU330に対応し得る)をさらに含む。諒解されるように、図4はMMU404をプロセッサ402の一部として示すが、MMU404は、プロセッサ402の外部に結合され得る。
【００３６】
システム400はまた、SMMU416および418を含む。SMMUは、MMU404など、プロセッサのMMUがプロセッサメモリアクセスのためにアドレスを変換する方法とほとんど同じ方法における、アップストリームデバイストラフィックのためのアドレス変換サービスを提供する。図4を参照すると、各構成要素は、それがアップストリームデバイスに対する「スレーブ」、および/またはダウンストリームデバイスに対する「マスタ」であることを示す、「S」および/または「M」を含む。図4に示すように、SMMU416および418などのSMMUは、システムデバイスのマスタポートとシステムスレーブとの間に存在する。たとえば、図4に示すように、SMMU416および418は、デバイスA〜C 410A〜Cのマスタポートと、システムスレーブ、たとえば、システム相互接続412との間に存在する。
【００３７】
単一のSMMUは、システムトポロジー、スループット要件などに応じて、単一の周辺デバイスまたは複数の周辺デバイスにサービスし得る。図4は、デバイスA 410Aは専用SMMU416を有するが、デバイスB 410BおよびC 410CはSMMU418を共有する、例示的なトポロジーを示す。図4に示す矢印は、図示の構成要素間の単方向通信を示すが、これは単に、MMU404ならびにSMMU416および418を通した例示的な通信を示すためであることに留意されたい。当技術分野で知られているように、システム400内の構成要素間の通信は、双方向であり得る。
【００３８】
MMU404ならびにSMMU416および418など、MMUの主要な機能には、アドレス変換、メモリ保護、および属性制御が含まれる。アドレス変換は、入力アドレスを出力アドレスに変換することである。変換情報は、MMUがアドレス変換を実行するために参照する変換テーブル内に記憶される。アドレス変換の2つの主な利益がある。第1に、アドレス変換によって、デバイスが大きい物理アドレス空間をアドレス指定することが可能になる。たとえば、32ビットデバイス(すなわち、232個のアドレスロケーションを参照することが可能なデバイス)は、より大きいアドレス空間(36ビットアドレス空間、または40ビットアドレス空間など)を参照することができるように、そのアドレスをMMUによって変換させることができる。第2に、アドレス変換によって、メモリバッファが典型的には断片的であり、物理的に不連続であり、物理メモリ空間にわたって散乱しているという事実にもかかわらず、デバイスがメモリ内に割り振られたバッファの連続的なビューを有することが可能になる。
【００３９】
図5は、本開示の一態様による例示的な変換テーブル500を示す。変換テーブル500などの変換テーブルは、ある範囲の入力アドレスのためのアドレス変換を実行するために必要な情報を含んでいる。変換テーブルは、複数レベルの「ツリー」構造において配置された、トップレベル(または「ルート」)テーブル510と、1つまたは複数の中間レベル(または「中間」)セットのサブテーブル520と、ボトムレベル(または「リーフ」)テーブルのセット530とからなる。簡単にするために、図5は、単一の中間レベルセットのサブテーブル520を示すが、任意の数の中間レベルがあり得ることに留意されたい。レベルの数は、具体的なアーキテクチャによって指定され得る。たとえば、ARMアーキテクチャは、所与の変換レジームのために必要とされる最大数のレベルを指定する。
【００４０】
「変換テーブルエントリ」という用語は、一般的に変換テーブル内の任意のエントリを指す。「ページテーブルエントリ」という用語は、本明細書で「変換テーブルエントリ」という用語と互換的に使用される。所与のサブテーブル(たとえば、図5におけるサブテーブル520)内で、エントリは同じタイプのものである必要はない。たとえば、あるエントリは、「ブロック/ページ」記述子(そのエントリがリーフノードであり、したがって、最終的なマッピングであることを示す)であり得、隣接するエントリは、次のレベルのテーブル(たとえば、図5におけるサブテーブル520のうちの1つ)をポイントする「テーブル」記述子であり得る。言い換えれば、変換を実行するために、図5に示す3つのルックアップ(たとえば、510、520、および530)は、常に必要とされるとは限らない。いくつかのテーブルウォークは、2レベル後(たとえば、520において)、または1レベル後(たとえば、510において)でさえ、終了(すなわち、ブロック/ページ記述子に遭遇)し得る。これらの場合、ブロック/ページ記述子は、より大きい範囲の仮想アドレス空間をマップすることになる。
【００４１】
各サブテーブル520は、入力アドレスのサブセグメントを用いてインデックス付けされる。各サブテーブル510〜530は、変換テーブル記述子からなる(すなわち、「リーフ」ノードを含み得る)。3つの基本タイプの記述子があり、すなわち、1)対応する仮想アドレスのためのマッピングが存在しないことを示す、無効記述子、2)次のレベルのサブテーブルへのベースアドレスを含んでおり、ウォーク中に遭遇したすべての後続の記述子に関連する変換情報(アクセス許可など)を含み得る、テーブル記述子、および3)最終的な出力アドレスを計算するために使用されるベース出力アドレスと、ブロック記述子に関係する属性/許可とを含んでいる、ブロック記述子である。
【００４２】
アドレス変換を実行するために変換テーブルをトラバースするプロセスは、「変換テーブルウォーク」として知られている。変換テーブルウォークは、入力アドレスのサブセグメントを使用して、変換サブテーブルにインデックス付けすること、および、ブロック記述子に遭遇するまで、次のアドレスを発見することによって達成される。変換テーブルウォークは、1つまたは複数の「ステップ」からなる。変換テーブルウォークの各「ステップ」は、1)変換テーブルを読み取る(かつ、潜在的に更新する)ことを含む、変換テーブルへのアクセス、および2)(限定はしないが)参照されるべき次のアドレスを計算することを含む、変換状態を更新することを伴う。各ステップは、ウォークの前のステップの結果に依存する。最初のステップでは、アクセスされる最初の変換テーブルエントリのアドレスは、変換テーブルベースアドレスと、変換されるべき入力アドレスの一部分との関数である。各後続のステップでは、アクセスされる変換テーブルエントリのアドレスは、前のステップからの変換テーブルエントリと、入力アドレスの一部分との関数である。
【００４３】
変換テーブルウォークは、ブロック記述子に遭遇し、最終的な変換状態が計算された後、完了される。無効変換テーブル記述子に遭遇する場合、ウォークは「障害を生じ」ており、アボートされるか、または、無効変換テーブル記述子を有効なもの(ブロックまたはテーブル記述子)で置き換えるためにページテーブルが更新された後、再試行されなければならない。変換テーブルウォークのすべての前のステップから生じた、組み合わせられた情報は、「変換」の最終的な変換状態を決定し、したがって、アドレス変換の最終結果(出力アドレス、アドレス許可など)に影響を及ぼす。
【００４４】
アドレス変換は、入力アドレスおよび属性のセットを、出力アドレスおよび属性(最終的な変換状態から導出される)に変形させるプロセスである。図6は、本開示の一態様によるアドレス変換に関わるステップを示す。図6に示すフローは、SMMU416または418など、SMMUによって実行され得る。
【００４５】
610で、SMMUは、セキュリティ状態ルックアップを実行する。SMMUは、セキュア実行ドメインと非セキュア実行ドメインとの間で共有可能である。SMMUは、入って来るトランザクションがどちらのドメインに属するかを、そのトランザクションの特性に基づいて決定する。セキュア状態に関連付けられたトランザクションは、セキュアリソースと非セキュアリソースの両方にアクセスすることが可能である。非セキュア状態に関連付けられたトランザクションは、非セキュアリソースにアクセスすることのみを可能にされる。
【００４６】
620で、SMMUは、コンテキストルックアップを実行する。入ってくる各トランザクションが、「ストリームID」に関連付けられる。SMMUは、「ストリームID」をコンテキストにマッピングする。コンテキストは、どのようにSMMUがトランザクションを処理することになるかを決定し、すなわち、1)デフォルトの変形が属性に適用されるが、アドレス変換が発生しないように、アドレス変換をバイパスする(すなわち、変換テーブルが調べられない)、2)障害を生じ、それによって、ソフトウェアは典型的には障害を通知され、SMMUはトランザクションを終了し、トランザクションがその所期のターゲットへとダウンストリームに送られないようにする、または3)変換を実行し、それによって、変換テーブルが調べられて、アドレス変換が実行され、属性が定義される。変換は、(それぞれ、単段およびネスト化された変換のための)1つまたは2つのいずれかの変換コンテキストバンクのリソースを必要とする。変換コンテキストバンクは、変換のために使用される変換テーブルと、デフォルト属性と、許可とを定義する。
【００４７】
630で、SMMUは、変換テーブルウォークを実行する。トランザクションが変換を必要とする場合、変換テーブルが調べられて、入力アドレスに対応する出力アドレスおよび属性が決定される。トランザクションがバイパスコンテキストにマッピングする場合、変換は必要とされない。代わりに、デフォルト属性が適用され、アドレス変換は実行されない。
【００４８】
640で、SMMUは、許可チェックを実行する。変換プロセスは、変換されるメモリの各領域へのアクセスを管理する許可を定義する。許可は、どのタイプのアクセスが所与の領域のために可能にされるか(すなわち、読取り/書込み)と、高められた許可レベルがアクセスのために必要とされるか否か、とを示す。変換が完了しているとき、アクセスされているメモリの領域のための定義された許可が、トランザクションの属性に対して比較される。許可が、トランザクションに関連付けられたアクセスを可能にする場合、トランザクションは、その所期のターゲットへダウンストリームに伝搬することを可能にされる。トランザクションが十分な許可を有していない場合、SMMUは、障害を引き起こし、トランザクションは、ダウンストリームに伝搬することを可能にされない。
【００４９】
650で、SMMUは、属性制御を実行する。アドレス変換に加えて、SMMUは、各トランザクションに関連付けられた属性を管理する。属性は、アクセスされているメモリのタイプ(たとえば、デバイス、ノーマルなど)、メモリ領域が共有可能であるか否か、メモリ領域がキャッシュされるべきであるか否かを示すヒントなどのようなものを示す。SMMUは、1)入ってくる属性、それによって、入ってくる属性が典型的には、変換がバイパスされるときに出力属性のみに影響を及ぼす、2)SMMUレジスタ内の静的にプログラムされた値、および/または3)変換テーブルエントリなど、いくつかのソースからの情報を組み合わせる/オーバーライドすることによって、出て行くトランザクションの属性を決定する。
【００５０】
660で、SMMUは、オフセットを適用する。各変換テーブルエントリは、入力アドレスの連続範囲のための出力アドレスマッピングおよび属性を定義する。変換テーブルは、様々なサイズの入力アドレス範囲をマッピングすることができる。変換テーブルエントリ内で示された出力アドレスは、したがって、マッピングされている範囲のベース出力アドレスである。最終的な出力アドレスを計算するために、ベース出力アドレスは、入力アドレスおよび範囲サイズから決定されたオフセットと組み合わせられる。
Output_address=base_output_address+(input_address mod range_size)
言い換えれば、入力アドレスおよび出力アドレスのN個の最下位ビットは等しく、ただし、Nは、所与の変換テーブルエントリによってマッピングされたアドレス範囲のサイズによって決定される。
【００５１】
図6に示す変換プロセスの最後のステップで、得られた変換状態は、完了した変換を表す。次回にメモリの同じブロックへの入力アドレスがSMMUに発行されるとき、変換テーブルウォークのすべてのステップを実行する必要を回避するために、完了した変換が変換キャッシュ内に記憶され得る。
【００５２】
図6に示す変換テーブルプロセスの(最後のステップ以外の)任意のステップで、得られた変換状態は、部分的に完了した変換を表す。次回にメモリの同じ(または、隣接する)ブロックへの入力アドレスがSMMUに発行されるとき、変換テーブルウォークのすべての同じステップを実行する必要を回避するために、部分的に完了した変換が変換キャッシュ内に記憶され得る。部分的に完了した変換は、変換ウォークの残りのステップを実行することによって完了される。
【００５３】
トランスレーションルックアサイドバッファ(TLB)と呼ばれることがある変換キャッシュは、1つまたは複数の変換キャッシュエントリからなる。変換キャッシュは、次の形態のうちの1つまたは複数における変換テーブル情報を記憶し、すなわち、1)変換を完了するために必要なすべての情報を含んでいる、完全に完了した変換、2)残りの情報が変換テーブルもしくは他の変換キャッシュから取り出されなければならないように、変換を完了するために必要とされる情報の部分のみを含んでいる、部分的に完了した変換、および/または3)変換テーブルデータである。
【００５４】
変換キャッシュは、後続のアドレスを変換するために必要とされる平均時間を最小限に抑えることを支援し、すなわち、1)変換プロセス中に変換テーブルにアクセスするために必要とされるアクセスの平均数を低減し、2)高速記憶デバイス内で変換および/または変換テーブル情報を保つ。変換キャッシュは、通常、変換テーブルを含んでいるメインメモリストアよりもアクセスが速い。具体的には、図6を参照すると、630で変換テーブルウォークを実行するのではなく、SMMUは、要求されたアドレスが変換キャッシュ内にすでに存在するか否かを決定するために、変換キャッシュルックアップを実行することができる。そうである場合、SMMUは、630で変換テーブルウォークをスキップし、640に進むことができる。
【００５５】
図7は、本開示の一態様による例示的な変換キャッシュエントリ700を示す。変換キャッシュエントリ700は、タグセグメント710とデータセグメント720とからなる。タグセグメント710は、変換キャッシュの探索(または、ルックアップ)中に、探索被比較数(comparand)と比較され得る、1つまたは複数のフィールドを備える。これらのフィールドのうちの1つは、変換キャッシュエントリ700が有意味/有効な情報でポピュレートされるか否かを示す、有効ビット712であり得る。他のフィールドは、アドレス空間識別子、仮想マシンID、セキュリティ状態、例外レベル、および/または変換タイプを含むことがあり、そのすべてが集合的に「コンテキスト情報」714を形成する。
【００５６】
他のフィールドは、変換キャッシュエントリが有効変換情報を保持し得る(または、しなくてよい)対象になるマッチングアドレス範囲716を含み得る。アドレス範囲716は、開始および終了アドレス値として、またはアドレスおよびアドレスマスクによって符号化され得る。図示しない他のフィールドは、TLB無効化のために使用される無効化アドレス範囲を含み得る。場合によっては、無効化アドレス範囲およびマッチングアドレス範囲は、常に等価であり、したがって、1つのフィールドは同じストレージ/フィールド(たとえば、アドレス範囲716)を使用するので、一緒に表され得る。
【００５７】
データセグメント720は、変換テーブルおよび/または変換のプロセスからの情報を含んでいる、1つまたは複数のデータサブセグメント722を備える。各データサブセグメント722は、1)完全に完了した変換、2)部分的に完了した変換、または3)変換テーブルエントリのうちの1つのためのデータを記憶し得る。
【００５８】
完全に完了した変換を保持する、データサブセグメント722などのデータサブセグメントは、1つまたは複数のデータフィールドを含んでいる。これらのフィールドのうちの1つは、データサブセグメント722内に記憶されたデータが有効であるか否かを示すための有効ビット(図示せず)を含み得る。1つのデータサブセグメント722のみがある変換キャッシュエントリ内では、タグセグメント710内の有効ビット712が、データサブセグメント722が有効な情報を含んでいるか否かを示すために十分であるので、典型的には有効ビットの必要がない。データサブセグメント722は、ベースアドレス726を符号化するための1つのフィールドと、アドレス変換プロセスのすべてのステップを実行することから得られた最終的な変換状態724を符号化するための1つまたは複数のフィールドとをさらに含む。これには、1)完了した変換に関係するアクセス許可を符号化し得る1つまたは複数のフィールド、2)完了した変換に関係するメモリ属性を符号化し得る1つまたは複数のフィールド、3)完了した変換に関係するキャッシュ属性を符号化し得る1つまたは複数のフィールド、あるいは4)完了した変換に関係するシステム固有の情報を符号化し得る1つまたは複数のフィールドが含まれ得る。
【００５９】
部分的に完了した変換を保持する、データサブセグメント722などのデータサブセグメントは、1つまたは複数のデータフィールドを含んでいる。これらのフィールドのうちの1つは、サブセグメント内に記憶されたデータが有効であるか否かを示すための有効ビット(図示せず)を含み得る。1つのデータサブセグメントのみがある変換キャッシュエントリ内では、タグセグメント710内の有効ビット712が、データサブセグメント722が有効な情報を含んでいるか否かを示すために十分であるので、典型的には有効ビットの必要がない。データサブセグメント722は、ベースアドレス726を符号化するための1つのフィールドと、アドレス変換プロセスのステップのうちの1つまたは複数を実行することから得られた最終的な変換状態724を符号化するための1つまたは複数のフィールドとをさらに含む。これには、1)部分的に完了した変換に関係するアクセス許可を符号化し得る1つまたは複数のフィールド、2)部分的に完了した変換に関係するメモリ属性を符号化し得る1つまたは複数のフィールド、3)部分的に完了した変換に関係するキャッシュ属性を符号化し得る1つまたは複数のフィールド、あるいは4)部分的に完了した変換に関係するシステム固有の情報を符号化し得る1つまたは複数のフィールドが含まれ得る。
【００６０】
変換テーブルデータを保持するデータサブセグメント722は、1つまたは複数のデータフィールドを含み得る。これらのフィールドのうちの1つは、データサブセグメント722内に記憶されたデータが有効であるか否かを示すための有効ビットを含み得る。1つのデータサブセグメントのみがある変換キャッシュエントリ内では、タグセグメント内に含まれている有効ビット712が、データサブセグメント722が有効な情報を含んでいるか否かを示すために十分であるので、典型的には有効ビットの必要がない。データサブセグメント722は、変換テーブルエントリを保持/記憶するための1つのフィールドをさらに含み得る。
【００６１】
完了した変換のための完全変換キャッシュは、1つまたは複数の(たとえば、N個の)変換キャッシュエントリからなり、各変換キャッシュエントリは、1つの完了した変換のための情報を保持する。
【００６２】
変換は、単段で(1段変換)、または2段で(2段またはネスト化された変換)実行され得る。図8は、本開示の一態様による例示的な2段またはネスト化された変換フロー800を示す。2段変換では、図4におけるMMU404などのMMUは、段階1変換810とその後に続く段階2変換820とによって変換されるべき入力アドレスを受信する。2段変換は、段階1変換プロセスからのあらゆる参照が段階2変換プロセスを受ける必要があるので、「ネスト化された」変換と呼ばれる。
【００６３】
段階1変換810は、入力アドレスを受信すること、および段階1出力アドレス(段階2入力アドレスでもある)を生成することを伴う。段階1変換テーブルの変換テーブルウォークは、段階1変換810のプロセス中に必要とされ得る。段階1変換テーブルへの各ステップ/アクセスは、段階2変換820を受ける必要がある。
【００６４】
段階2変換820は、段階2入力アドレスを受信すること、および段階2出力アドレスを生成することを伴う。段階2変換テーブルの変換テーブルウォークは、段階2変換820のプロセス中に必要とされ得る。
【００６５】
MMU変換キャッシュ内のデマンドミスは、メモリレイテンシ(遅延)の増大、帯域幅利用の低減、および遅延を隠すためのバッファリングの増大を引き起こすことによって、システム性能およびシステムコストに悪影響を及ぼす。これらの悪影響は、単段変換環境において著しく、ネスト化された(2段)変換環境においてなお一層著しい。そのようなデマンドミスの数を最小限に抑えるための現在の解決策には、以前に使用された変換が将来に必要とされることを予測し、それらを変換キャッシュ内に記憶することが含まれる。これによって、変換が変換キャッシュ内で発見される場合、将来のアドレスのための変換遅延が低減される。しかしながら、変換が変換キャッシュ内で発見されない場合、将来のアドレスのためのデマンドミスが依然として生じる。「限定プリフェッチ」と呼ばれる別の解決策は、変換キャッシュ内で隣接する変換を追加することを希望して、隣接するアドレスをプリフェッチすることである。しかしながら、限定プリフェッチは、複数の隣接する変換が同時にアクセスされることをほとんど常に必要とするマルチメディアコアにとって十分ではない。
【００６６】
デマンドミスの数を最小限に抑えるために、本開示は、MMU404などのMMUが、どのアドレスがアップストリームデバイスによってアクセスされる可能性があるかを予測することを可能にし、それらのアドレスのための変換要求を発行する。したがって、変換が完了され、MMUの変換キャッシュ内に記憶されることになり、アップストリームデバイスが最初にそのアドレスにアクセスするとき、デマンドミス、または変換テーブルウォークの追加されたレイテンシを受けないようになる。開示する機構は、デマンドミスの数を低減する(または、なくす)ので、MMUを通した遅延が低減され、それによって、システム性能の改善、およびシステムコストの低減が得られる。
【００６７】
図9は、本開示の一態様による例示的なプリフェッチシステム900を示す。プリフェッチシステム900は、図2におけるMMU230、図3におけるMMU330、または図4におけるMMU404ならびにSMMU416および418など、MMUにおいて具現化され得る。上述のように、MMUは、ハードウェアまたはソフトウェア構成要素であり得る。したがって、プリフェッチシステム900の構成要素は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せであり得る。
【００６８】
図9を参照すると、プリフェッチトリガモニタ910は、いつプリフェッチを開始するべきか、およびどのアドレスのためにかを決定するために、変換キャッシュアクティビティを監視する。プリフェッチをトリガしたアドレスは、本明細書では「トリガアドレス」と呼ばれる。プリフェッチをトリガするいくつかのイベントがあり得る。たとえば、まだプリフェッチを受けていない(この状態は、キャッシュエントリのプリフェッチフラグ内に記録される)、整合されたアドレス範囲(ウィンドウ)内のアドレス(「トリガアドレス」)について、変換キャッシュヒットが検出されるとき、プリフェッチがトリガされ得る。トリガされると、トリガアドレスに対応する変換キャッシュエントリのプリフェッチフラグは、トリガアドレスを含んでいるアドレス範囲においてプリフェッチが実行されたことを示すように設定される。これによって、このウィンドウへの将来のアクセスが冗長プリフェッチ要求を開始することを防止する。
【００６９】
別の例として、プリフェッチは、変換キャッシュミスが検出されるときにトリガされ得る。この場合、更新するべきそのようなキャッシュエントリがないので、トリガアドレスに対応する変換キャッシュエントリのプリフェッチフラグは、トリガアドレスを含んでいるアドレス範囲においてプリフェッチが実行されたことを示すように設定されない。
【００７０】
プリフェッチエンジン920は、以下の構成要素、すなわち、フィルタ922と、プリフェッチスケジューラ924と、1つまたは複数のプリフェッチアドレス要求生成器(FSM)926と、アービトレータ928とを含む。フィルタ922は、冗長プリフェッチ要求を最小限に抑える。プリフェッチスケジューラ924は、プリフェッチをトリガしたアドレスに基づいて、プリフェッチアドレスのシーケンスを生成する。1つまたは複数のプリフェッチアドレス要求生成器926の各々は、プリフェッチスケジューラ924からシーケンス記述子を受け入れ、シーケンス内の各アドレスのためのプリフェッチアドレス要求を生成する。複数のプリフェッチアドレス要求生成器926は、複数のプリフェッチシーケンスを並行して処理するために、並列に動作することができる。アービトレータ928は、利用可能なプリフェッチアドレス要求の間でアービトレーションし、プリフェッチアドレス要求を、図2における変換キャッシュ232または図3における変換キャッシュ332に対応し得る、変換キャッシュ930および940に発行する。必要とはされないが、図9は、完全変換を記憶するキャッシュ(すなわち、変換キャッシュ930)と、部分的変換を記憶するキャッシュ(すなわち、変換キャッシュ940)とを区別するために、2つのキャッシュを示す。プリフェッチアドレスのための完全変換が発見されない場合、変換が実行され、変換キャッシュ930および940がそれに応じて満たされる。
【００７１】
次に、より詳細にフィルタ922を参照すると、フィルタ922は、プリフェッチ要求をフィルタ処理する。所与のトリガアドレスのためにプリフェッチがトリガされるとき、プリフェッチエンジン920内のすべての既存のプリフェッチ要求が検査される。新たにトリガされたプリフェッチ要求のトリガアドレスが、任意の既存のプリフェッチ要求のプリフェッチウィンドウ内に入る場合、新たにトリガされたプリフェッチ要求は、即時に破棄される。これによって、プリフェッチエンジン920によって要求される冗長アドレス変換の数が低減する。
【００７２】
プリフェッチがトリガされるとき、プリフェッチスケジューラ924は、プリフェッチされることになるアドレス変換のシーケンスを記述するシーケンス記述子を生成する。このシーケンス内のアドレスは、トリガアドレス、プリフェッチウィンドウサイズ、およびストライド長に基づいて生成される。図10は、本開示の一態様による例示的なプリフェッチウィンドウ1000を示す。プリフェッチウィンドウサイズは、プログラマブルであり、トリガアドレスを含んでいる整合されたアドレス範囲を定義する。プリフェッチウィンドウ1000の下限および上限は、本明細書ではそれぞれ「ウィンドウ開始」および「ウィンドウ終了」と呼ばれる。所与のプリフェッチ要求では、変換要求は、プリフェッチウィンドウ1000によって制約されたアドレスに限定される。この例外は、以下で説明する「拡張プリフェッチウィンドウ」であり、拡張プリフェッチウィンドウは、ウィンドウの上および下の要求を生成することに留意されたい。
【００７３】
プリフェッチウィンドウ1000は、「ストライド長」を有する等しいサイズのストライド長領域1010および1020A〜Cに分割される。変換要求は、領域1020A〜Cの各々のために発行されるが、トリガアドレスを含んでいるストライド長領域1010のために発行されず、その理由は、トリガアドレスへの最初のアクセスの結果として、(必要な場合)この領域のための変換がフェッチされることになるからである。プリフェッチフラグが、プリフェッチウィンドウ1000内の領域、すなわち、ストライド長領域1010および1020A〜Cのために(たとえば、「1」に)設定されることに留意されたい。
【００７４】
ストライド長は、プリフェッチ要求が発行される対象になるアドレス粒度である。ストライド長は、たとえば、固定値(たとえば、システム内の最小ページサイズにマッチするように、4kB)であるか、プログラマブルな値(たとえば、アクセスパターンのアプリオリな知識をもつクライアントが最適なストライドを選択できるようにするため)であるか、または各プリフェッチ要求について動的に決定され得る。ストライド長が動的に決定される場合には、プリフェッチが変換キャッシュヒットによってトリガされるとき、ストライド長は、たとえば、トリガアドレスに関連付けられたページサイズに基づいて設定され得る。
【００７５】
プリフェッチウィンドウ1000内で「ストライド長」間隔で変換要求を生成することに加えて、プリフェッチスケジューラ924は、ウィンドウ境界のすぐ上のアドレス(より上位のアドレス)および/またはすぐ下のアドレス(より下位のアドレス)、すなわち、領域1030A〜Bのための変換要求を生成する。これは、プログラマブルなイネーブルによって制御され得る。これらのアドレス変換をプリフェッチすることは、それらのアドレス変換が変換キャッシュ930および940内に存在するようになることを意味し、その理由は、クライアントアクセスがプリフェッチウィンドウ境界を越えてストライドするからである。しかしながら、変換キャッシュ930および940をこれらの「拡張プリフェッチウィンドウ」変換で満たすとき、キャッシュエントリのプリフェッチフラグは設定されない(たとえば、「0」のままである)。これによって、アップストリームデバイスがプリフェッチウィンドウ境界を横切り、これらのキャッシュされた変換にアクセスする場合/とき、プリフェッチが開始されるようになることが保証される。
【００７６】
図11は、本開示の一態様による、プリフェッチウィンドウサイズおよびストライド長の例1110および1120を示す。例1110では、ストライド長は16kBであり、ウィンドウサイズは32kBである。例1120では、ストライド長は16kBであり、ウィンドウサイズは64kBである。「TTE」という用語は「変換テーブルエントリ」を意味することに留意されたい。
【００７７】
プリフェッチスケジューラ924が各ストライド長領域のための変換要求を発行する順序は、プログラマブルである。図12は、本開示の一態様による、ストライド長領域が要求され得る様々な方法を示す。上述のように、トリガアドレスを含んでいるストライド長領域は、常にスキップされる。
【００７８】
プリフェッチウィンドウ1210は、「順方向」に行くことによって、ストライド長領域を選択することを示す。最初の変換要求は、「ウィンドウ開始」を含む領域のために発行され、「ウィンドウ終了」を含んでいるストライド長領域が要求されるまで、要求される各後続のアドレスが、ストライド長だけ増分される。
【００７９】
プリフェッチウィンドウ1220は、「逆方向」に行くことによって、ストライド長領域を選択することを示す。最初の変換要求は、「ウィンドウ終了」を含む領域のために発行され、ウィンドウ開始を含んでいるストライド長領域が要求されるまで、要求される各後続のアドレスが、ストライド長だけ減分される。
【００８０】
プリフェッチウィンドウ1230は、「反転する」ことによって、ストライド長領域を選択することを示す。最初の変換要求は、ターゲットアドレスのすぐ上(高いアドレス)のストライド長領域のために、次いで、ターゲットアドレスのすぐ下のストライド長領域のために、次いで、ターゲットアドレスの上の第2のストライド長のために、次いで、ターゲットアドレスの下の第2のストライド長のためになど、発行される。ウィンドウ境界に到達するとき、アクセスは、プリフェッチウィンドウ1230の反対端部にラップする。
【００８１】
ストライド長領域が要求され得る任意の数の方法があり得る。たとえば、プリフェッチスケジューラ924は、プログラミングに基づいてストライド長領域のための要求を発行し得る。すなわち、ストライド長領域のシーケンスの順序は、プログラマブルなシーケンス生成器に基づき得る。別の例として、ストライド長領域のシーケンスの順序は、プリフェッチウィンドウ内でランダムであり得る。
【００８２】
図9を参照すると、プリフェッチスケジューラ924は、先入れ先出しキュー(FIFO)内にプリフェッチシーケンス記述子を記憶する。シーケンス記述子は、プリフェッチトリガに応答して生成されるとき、FIFOにエンキューされる。FIFOがフルである場合、フロー制御の2つの方法、すなわち、最新の要求を破棄すること、および最も古い要求を破棄することがある。最新の要求を破棄することを参照すると、プッシュ(エンキュー)されるように試行中であるシーケンス記述子が代わりに破棄される。この方法は、プリフェッチトリガがプリフェッチアドレス要求を開始することを保証される場合のみ、プリフェッチトリガがサービスされることを保証するために使用され得る。最も古い要求を破棄することを参照すると、(FIFOの先頭における)最も古い要求がポップおよび破棄され、したがって、現在発行されている新しい要求のための場所が空く。シーケンス記述子は、プリフェッチアドレス要求生成器926が利用可能であるとき、デキューされる。
【００８３】
図9を参照すると、プリフェッチアドレス要求生成器926は、プリフェッチスケジューラ924からのシーケンス記述子内の各アドレスのためのプリフェッチアドレス要求を生成する。複数のプリフェッチアドレス要求生成器926は、並列に動作して、複数のシーケンス記述子の同時解決を可能にすることができる。プリフェッチアドレス要求生成器926が、利用可能な要求を有し、変換キャッシュ930および940が、プリフェッチアドレスを受け入れることが可能であるとき、要求がプリフェッチアドレス要求生成器926から変換キャッシュ930および940に送られる。所与のシーケンス記述子のための最終的なアドレス要求が、変換キャッシュ930および940に送られるとき、対応するプリフェッチアドレス要求生成器926は、新しいシーケンス記述子を受信するために利用可能になる。
【００８４】
複数のプリフェッチアドレス要求生成器926が、利用可能な要求を有する場合、アービトレータ928は、どれが変換キャッシュ930および940に送られるかを決定する。アービトレーションアルゴリズムは、以下の変形態、すなわち、ラウンドロビン、プログラマブルな優先順位(たとえば、アップストリームデバイスに基づいて優先順位を付ける)、または何らかの他の優先順位ベースの選択機構を含む。
【００８５】
プリフェッチエンジン920は、プリフェッチアドレス要求に対する応答を必要としないことに留意されたい。むしろ、プリフェッチエンジン920は、変換キャッシュ930および940を満たす目的で、要求を発行する。したがって、所与の要求が送られた後、所与の要求のために状態が追跡される必要はない。
【００８６】
図9を参照すると、アービトレータ928がプリフェッチアドレス要求を変換キャッシュ930および940に発行した後、変換キャッシュクエリ、変換テーブルウォークなどが実行されて、アドレス変換が完了する。上述のように、変換キャッシュ930および940を、プリフェッチトランザクションから開始された結果でポピュレートするとき、キャッシュエントリのプリフェッチフラグが設定されなければならない。これによって、同じプリフェッチウィンドウへの将来のアクセスが、冗長プリフェッチ要求を開始することを防止する。
【００８７】
TLB無効化を参照すると、MMUがTLB無効化コマンドを受信するとき、プリフェッチエンジン920内のすべてのプリフェッチ要求は、単に破棄される。代替的に、プリフェッチ要求を破棄することは、たとえば、TLB無効化コマンドのタイプ(たとえば、マッチ対象アドレス(match against address)、仮想マシン識別子(VMID)など)に基づいて、より区別され得る。
【００８８】
図13は、本開示の少なくとも1つの態様による、図2におけるMMU230、図3におけるMMU330、図4におけるMMU404、SMMU416、SMMU418など、MMUにおいてアドレス変換をプリフェッチするための例示的なフローを示す。
【００８９】
1310で、MMUは、図2における変換キャッシュ232、または図3における変換キャッシュ332など、MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出する。トリガ条件は、トリガアドレスに関連付けられ得、1つまたは複数の変換キャッシュのうちの1つにおけるトリガアドレスのヒットであり得る。代替的に、トリガ条件は、1つまたは複数の変換キャッシュ内のトリガアドレスのミスであり得る。
【００９０】
1320で、MMUは、1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述する、シーケンス記述子を生成する。アドレス変換のシーケンスは、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換であり得る。
【００９１】
シーケンス記述子は、トリガアドレスと、アドレス変換のシーケンスのサイズと、ストライド長サイズとを含み得る。アドレス変換のシーケンスのサイズは、アドレス変換がプリフェッチされる対象になるアドレスの範囲を定義し得、ただし、アドレス変換のシーケンスのサイズは、ストライド長サイズのストライド長領域に分割される。シーケンス記述子は、ストライド長領域ごとに1つのアドレス変換要求を記述し得る。ストライド長サイズは、下にあるキャッシュ構造に基づいて、プログラマブルであるか、固定であるか、またはトリガアドレスのページサイズに基づいて動的に決定され得る。
【００９２】
シーケンス記述子は、アドレス変換のシーケンスのサイズによって定義されたアドレスの範囲のすぐ上のストライド長領域、およびそのすぐ下のストライド長領域のための、アドレス変換要求を定義し得る。その場合、シーケンス記述子サイズによって定義されたアドレスの範囲のすぐ上のストライド長領域、および、シーケンス記述子サイズによって定義されたアドレスの範囲のすぐ下のストライド長領域に対応する、1つまたは複数の変換キャッシュエントリ内のプリフェッチフラグは、設定されなくてよい。
【００９３】
図13に図示されていないが、フローは、トリガアドレスがアクティブアドレス変換要求のシーケンス記述子内に含まれているか否かを決定することをさらに含み得る。その場合、プリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子は、トリガアドレスがアクティブアドレス変換要求のシーケンス記述子内に含まれていることに基づいて、生成されない。
【００９４】
1330で、MMUは、オプションで、1つまたは複数のシーケンス記述子をFIFOキュー内に記憶する。
【００９５】
1340で、MMUは、オプションで、FIFOキューからシーケンス記述子をデキューすることを、デキューされるシーケンス記述子に対応するアドレス変換要求を生成するためにプリフェッチ要求生成器が利用可能であることに基づいて行う。プリフェッチ要求生成器は、デキューされるシーケンス記述子内で定義された各アドレスのためのプリフェッチ要求を生成し得る。新しいシーケンス記述子をフルのFIFOキュー内に記憶しようと試みると、新しいシーケンス記述子が破棄される結果となる。代替的に、新しいシーケンス記述子をフルのFIFOキュー内に記憶しようと試みると、FIFOキュー内の最も古いシーケンス記述子が破棄される結果となる。一実施形態では、複数のプリフェッチ要求生成器が、FIFOキューからの複数のシーケンス記述子において並列に動作することができる。
【００９６】
1350で、MMUは、アドレス変換のシーケンス内の複数のアドレス変換の各々のために、1つまたは複数の変換キャッシュにアドレス変換要求を発行する。1つまたは複数の変換キャッシュは、複数のアドレス変換のうちの少なくとも1つのアドレス変換が1つまたは複数の変換キャッシュ内に存在しないことに基づいて、その少なくとも1つのアドレス変換を、1つまたは複数の変換キャッシュにプリフェッチし得る。
【００９７】
アドレス変換要求がプリフェッチされる順序は、アドレス変換のシーケンスのうちのアドレス変換の最初のストライド長領域から順方向の順序、アドレス変換のシーケンスのうちのアドレス変換の最後のストライド長領域から逆方向の順序、トリガアドレスを含んでいるアドレス変換のストライド長領域に隣接するアドレス変換のストライド長領域から反転する順序、プログラマブルな順序、またはランダムな順序であり得る。
【００９８】
図13には図示されていないが、フローは、トリガアドレスに対応する第1の変換キャッシュエントリ内にプリフェッチフラグを設定して、第1の変換キャッシュエントリに対応するアドレス範囲のために、プリフェッチが一度だけ実行されることを保証すること、および、トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲のうちの少なくとも1つに対応する第2の変換キャッシュエントリ内にプリフェッチフラグを設定して、第2の変換キャッシュエントリへの後続のヒットにおいて、プリフェッチがトリガされないことを保証することをさらに含み得る。その場合、トリガ条件は、プリフェッチフラグが設定されていないことであり得る。
【００９９】
図14は、一連の相互に関係する機能モジュールとして表された例示的なMMU装置1400を示す。検出するためのモジュール1402は、少なくともいくつかの態様では、たとえば、本明細書で説明したような図9におけるプリフェッチトリガモニタ910などのプリフェッチトリガモニタに対応し得る。生成するためのモジュール1404は、少なくともいくつかの態様では、たとえば、本明細書で説明したような図9におけるプリフェッチスケジューラ924などのプリフェッチスケジューラに対応し得る。記憶するためのオプションのモジュール1406は、少なくともいくつかの態様では、たとえば、本明細書で説明したような図9におけるプリフェッチスケジューラ924などのプリフェッチスケジューラに対応し得る。デキューするためのオプションのモジュール1408は、少なくともいくつかの態様では、たとえば、本明細書で説明したような図9におけるプリフェッチアドレス要求生成器926などのプリフェッチアドレス要求生成器に対応し得る。発行するためのモジュール1410は、少なくともいくつかの態様では、たとえば、本明細書で説明したような図9におけるプリフェッチアドレス要求生成器926などのプリフェッチアドレス要求生成器に対応し得る。
【０１００】
図14のモジュールの機能は、本明細書の教示に一致する様々な方法で実装され得る。いくつかの設計では、これらのモジュールの機能は、1つまたは複数の電気構成要素として実装され得る。いくつかの設計では、これらのブロックの機能は、1つまたは複数のプロセッサ構成要素を含む処理システムとして実装され得る。いくつかの設計では、これらのモジュールの機能は、たとえば、1つまたは複数の集積回路(たとえば、ASIC)の少なくとも一部分を使用して実装されてもよい。本明細書で説明するように、集積回路は、プロセッサ、ソフトウェア、他の関連の構成要素、またはそれらの何らかの組合せを含んでもよい。したがって、異なるモジュールの機能は、たとえば、集積回路の異なるサブセットとして実装されてもよく、ソフトウェアモジュールのセットの異なるサブセットとして実装されてもよく、またはその組合せとして実装されてもよい。また、(たとえば、集積回路の、および/またはソフトウェアモジュールのセットの)所与のサブセットが、2つ以上のモジュールのための機能の少なくとも一部分を提供し得ることが諒解されよう。
【０１０１】
加えて、図14によって表された構成要素および機能、ならびに本明細書で説明した他の構成要素および機能は、任意の好適な手段を使用して実装され得る。また、そのような手段は、少なくとも部分的に、本明細書で教示する対応する構造を使用して実装され得る。たとえば、図14の構成要素の「ためのモジュール」と併せて上記で説明した構成要素はまた、同様に指定された機能の「ための手段」に対応し得る。したがって、いくつかの態様では、そのような手段のうちの1つまたは複数は、プロセッサ構成要素、集積回路、または本明細書で教示する他の好適な構造のうちの1つまたは複数を使用して実装され得る。
【０１０２】
当業者は、情報および信号が、様々な異なる技術および技法のいずれを使用しても表現され得ることを諒解するであろう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表される場合がある。
【０１０３】
さらに、本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることが、当業者には諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、上記では、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、全般的にそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例およびシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方式によって実装してもよいが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【０１０４】
本明細書で開示する実施形態に関連して説明する様々な例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて、実装または実行され得る。汎用プロセッサはマイクロプロセッサであってもよいが、代替的に、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【０１０５】
本明細書で開示する実施形態に関して説明した方法、シーケンス、および/またはアルゴリズムは、ハードウェア内で直接、プロセッサによって実行されるソフトウェアモジュール内で、または2つの組合せで具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形の記憶媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替的に、記憶媒体は、プロセッサと一体であり得る。プロセッサおよび記憶媒体は、ASIC内に存在し得る。ASICはユーザ端末(たとえば、UE)内に存在し得る。代替的に、プロセッサおよび記憶媒体は、ユーザ端末内の個別構成要素として存在し得る。
【０１０６】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、それらの機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、コンピュータ記憶媒体と、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形式の所望のプログラムコードを搬送もしくは記憶するために使用可能であり、コンピュータによってアクセス可能な任意の他の媒体を備え得る。また、任意の接続をコンピュータ可読媒体と呼ぶことは妥当である。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１０７】
上記の開示は本開示の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本開示の範囲から逸脱することなく、本明細書において様々な変更および修正が行われ得ることに留意されたい。本明細書で説明した本開示の実施形態による方法クレームの機能、ステップおよび/またはアクションは、特定の順序で実行される必要はない。さらに、本開示の要素は、単数形において説明または特許請求がなされる場合があるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【０１０８】
100  ワイヤレス通信システム
104、106、108  エアインターフェース
120  RAN
125  アクセスポイント
140  コアネットワーク
170、300  サーバ
175  インターネット
200  モバイルデバイス
202  アンテナ
204  ワイドエリアネットワーク(WAN)トランシーバ
206  ローカルエリアネットワーク(LAN)トランシーバ
208  SPS受信機
210、301、402  プロセッサ
212  動きセンサー
214、406  メモリ
216  共通バス、バス
218  ユーザインターフェース
220  マイクロフォン/スピーカー
222  キーパッド
224  ディスプレイ
230、330、404  MMU
232、332、930、940  変換キャッシュ
302  揮発性メモリ
303  ディスクドライブ、ディスクドライバ
304  ネットワークアクセスポート
306  フロッピーディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ
307  ネットワーク
400  システム
408  スレーブ
410A  デバイス、デバイスA
410B  デバイス、デバイスB
410C  デバイス、デバイスC
412  相互接続、システム相互接続
414  相互接続
416、418  SMMU
500  変換テーブル
510  トップレベル(または「ルート」)テーブル、サブテーブル
520  中間レベル(または「中間」)セットのサブテーブル、サブテーブル
530  ボトムレベル(または「リーフ」)テーブルのセット、サブテーブル
700  変換キャッシュエントリ
710  タグセグメント
712  有効ビット
714  コンテキスト情報
716  マッチングアドレス範囲、アドレス範囲
720  データセグメント
722  データサブセグメント
724  最終的な変換状態
726  ベースアドレス
810  段階1変換
820  段階2変換
900  プリフェッチシステム
910  プリフェッチトリガモニタ
920  プリフェッチエンジン
922  フィルタ
924  プリフェッチスケジューラ
926  プリフェッチアドレス要求生成器(FSM)
928  アービトレータ
1000、1210、1220、1230  プリフェッチウィンドウ
1010  ストライド長領域
1020A〜C  ストライド長領域、領域
1030A〜B  領域
1110、1120  例
1400  MMU装置
1402  検出するためのモジュール
1404  生成するためのモジュール
1406  記憶するためのオプションのモジュール
1408  デキューするためのオプションのモジュール
1410  発行するためのモジュール
【図１】
2018522331.tif 000004
【図２】
2018522331.tif 000005
【図３】
2018522331.tif 000006
【図４】
2018522331.tif 000007
【図５】
2018522331.tif 000008
【図６】
2018522331.tif 000009
【図７】
2018522331.tif 000010
【図８】
2018522331.tif 000011
【図９】
2018522331.tif 000012
【図１０】
2018522331.tif 000013
【図１１】
2018522331.tif 000014
【図１２】
2018522331.tif 000015
【図１３】
2018522331.tif 000016
【図１４】
2018522331.tif 000017
【手続補正書】
【提出日】平成29年11月30日(2017.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチする方法であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するステップであって、前記トリガ条件がトリガアドレスに関連付けられる、ステップと、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するステップであって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、ステップと、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するステップと
を含み、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、方法。
【請求項２】
前記トリガ条件が、前記1つまたは複数の変換キャッシュのうちの1つにおける前記トリガアドレスのヒットを含む、請求項1に記載の方法。
【請求項３】
前記トリガアドレスに対応する第1の変換キャッシュエントリ内にプリフェッチフラグを設定して、前記第1の変換キャッシュエントリに対応するアドレス範囲のために、プリフェッチが一度だけ実行されることを保証するステップと、
前記トリガアドレスを含んでいる前記アドレス範囲に隣接する前記複数のアドレス範囲のうちの少なくとも1つに対応する第2の変換キャッシュエントリ内に前記プリフェッチフラグを設定して、前記第2の変換キャッシュエントリへの後続のヒットにおいて、プリフェッチがトリガされないことを保証するステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記トリガ条件が、前記プリフェッチフラグが設定されていないことを含む、請求項3に記載の方法。
【請求項５】
前記トリガ条件が、前記1つまたは複数の変換キャッシュ内の前記トリガアドレスのミスを含む、請求項1に記載の方法。
【請求項６】
前記方法が、
前記トリガアドレスがアクティブアドレス変換要求のシーケンス記述子内に含まれているか否かを決定するステップ
をさらに含み、
前記プリフェッチするべきアドレス変換のシーケンスを記述する前記シーケンス記述子が、前記トリガアドレスが前記アクティブアドレス変換要求の前記シーケンス記述子内に含まれていることに基づいて、生成されない、請求項1に記載の方法。
【請求項７】
前記シーケンス記述子が、前記トリガアドレスと、前記アドレス変換のシーケンスのサイズと、ストライド長サイズとを含み、前記アドレス変換のシーケンスの前記サイズが、アドレス変換がプリフェッチされる対象になるアドレスの範囲を定義し、前記アドレス変換のシーケンスの前記サイズが、前記ストライド長サイズのストライド長領域に分割され、前記シーケンス記述子が、ストライド長領域ごとに1つのアドレス変換要求を記述する、請求項1に記載の方法。
【請求項８】
前記ストライド長サイズが、下にあるキャッシュ構造に基づいて、プログラマブルであるか、固定であるか、または前記トリガアドレスのページサイズに基づいて動的に決定される、請求項7に記載の方法。
【請求項９】
前記シーケンス記述子が、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上のストライド長領域、およびそのすぐ下のストライド長領域のための、アドレス変換要求を定義する、請求項7に記載の方法。
【請求項１０】
前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上の前記ストライド長領域、および、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ下の前記ストライド長領域に対応する、1つまたは複数の変換キャッシュエントリ内のプリフェッチフラグが設定されない、請求項9に記載の方法。
【請求項１１】
アドレス変換要求がプリフェッチされる順序が、前記アドレス変換のシーケンスのうちのアドレス変換の最初のストライド長領域から順方向の順序、前記アドレス変換のシーケンスのうちのアドレス変換の最後のストライド長領域から逆方向の順序、前記トリガアドレスを含んでいるアドレス変換のストライド長領域に隣接するアドレス変換のストライド長領域から反転する順序、プログラマブルな順序、またはランダムな順序を含む、請求項7に記載の方法。
【請求項１２】
1つまたは複数のシーケンス記述子を先入れ先出し(FIFO)キュー内に記憶するステップと、
前記FIFOキューからシーケンス記述子をデキューすることを、前記デキューされるシーケンス記述子に対応するアドレス変換要求を生成するためにプリフェッチ要求生成器が利用可能であることに基づいて行うステップと
をさらに含む、請求項1に記載の方法。
【請求項１３】
前記プリフェッチ要求生成器が、前記シーケンス記述子内で定義された各アドレスのためのプリフェッチ要求を生成する、請求項12に記載の方法。
【請求項１４】
複数のプリフェッチ要求生成器が、前記FIFOキューからの複数のシーケンス記述子において並列に動作する、請求項12に記載の方法。
【請求項１５】
新しいシーケンス記述子をフルのFIFOキュー内に記憶しようと試みると、前記新しいシーケンス記述子が破棄される結果となる、請求項12に記載の方法。
【請求項１６】
新しいシーケンス記述子をフルのFIFOキュー内に記憶しようと試みると、前記FIFOキュー内の最も古いシーケンス記述子が破棄される結果となる、請求項12に記載の方法。
【請求項１７】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするための装置であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するように構成された論理であって、前記トリガ条件がトリガアドレスに関連付けられる、論理と、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するように構成された論理であって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、論理と、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するように構成された論理と
を備え、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、装置。
【請求項１８】
前記トリガ条件が、前記1つまたは複数の変換キャッシュのうちの1つにおける前記トリガアドレスのヒットを含む、請求項17に記載の装置。
【請求項１９】
前記トリガアドレスに対応する第1の変換キャッシュエントリ内にプリフェッチフラグを設定して、前記第1の変換キャッシュエントリに対応するアドレス範囲のために、プリフェッチが一度だけ実行されることを保証するように構成された論理と、
前記トリガアドレスを含んでいる前記アドレス範囲に隣接する前記複数のアドレス範囲のうちの少なくとも1つに対応する第2の変換キャッシュエントリ内に前記プリフェッチフラグを設定して、前記第2の変換キャッシュエントリへの後続のヒットにおいて、プリフェッチがトリガされないことを保証するように構成された論理と
をさらに備える、請求項17に記載の装置。
【請求項２０】
前記トリガ条件が、前記プリフェッチフラグが設定されていないことを含む、請求項19に記載の装置。
【請求項２１】
前記トリガ条件が、前記1つまたは複数の変換キャッシュ内の前記トリガアドレスのためのミスを含む、請求項17に記載の装置。
【請求項２２】
前記装置が、
前記トリガアドレスがアクティブアドレス変換要求のシーケンス記述子内に含まれているか否かを決定するように構成された論理
をさらに備え、
前記プリフェッチするべきアドレス変換のシーケンスを記述する前記シーケンス記述子が、前記トリガアドレスが前記アクティブアドレス変換要求の前記シーケンス記述子内に含まれていることに基づいて、生成されない、請求項17に記載の装置。
【請求項２３】
前記シーケンス記述子が、前記トリガアドレスと、前記アドレス変換のシーケンスのサイズと、ストライド長サイズとを含み、前記アドレス変換のシーケンスの前記サイズが、アドレス変換がプリフェッチされる対象になるアドレスの範囲を定義し、前記アドレス変換のシーケンスの前記サイズが、前記ストライド長サイズのストライド長領域に分割され、前記シーケンス記述子が、ストライド長領域ごとに1つのアドレス変換要求を記述する、請求項17に記載の装置。
【請求項２４】
前記ストライド長サイズが、下にあるキャッシュ構造に基づいて、プログラマブルであるか、固定であるか、または前記トリガアドレスのページサイズに基づいて動的に決定される、請求項23に記載の装置。
【請求項２５】
前記シーケンス記述子が、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上のストライド長領域、およびそのすぐ下のストライド長領域のための、アドレス変換要求を定義する、請求項23に記載の装置。
【請求項２６】
前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ上の前記ストライド長領域、および、前記アドレス変換のシーケンスの前記サイズによって定義された前記アドレスの範囲のすぐ下の前記ストライド長領域に対応する、1つまたは複数の変換キャッシュエントリ内のプリフェッチフラグが設定されない、請求項25に記載の装置。
【請求項２７】
アドレス変換要求がプリフェッチされる順序が、前記アドレス変換のシーケンスのうちのアドレス変換の最初のストライド長領域から順方向の順序、前記アドレス変換のシーケンスのうちのアドレス変換の最後のストライド長領域から逆方向の順序、前記トリガアドレスを含んでいるアドレス変換のストライド長領域に隣接するアドレス変換のストライド長領域から反転する順序、プログラマブルな順序、またはランダムな順序を含む、請求項23に記載の装置。
【請求項２８】
1つまたは複数のシーケンス記述子を先入れ先出し(FIFO)キュー内に記憶するように構成された論理と、
前記FIFOキューからシーケンス記述子をデキューすることを、前記デキューされるシーケンス記述子に対応するアドレス変換要求を生成するためにプリフェッチ要求生成器が利用可能であることに基づいて行うように構成された論理と
をさらに備える、請求項17に記載の装置。
【請求項２９】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするための装置であって、
前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出するための手段であって、前記トリガ条件がトリガアドレスに関連付けられる、手段と、
前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成するための手段であって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、手段と、
前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行するための手段と
を備え、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、装置。
【請求項３０】
デバイスのメモリ管理ユニット(MMU)においてアドレス変換をプリフェッチするためのコンピュータ可読記録媒体であって、
前記MMUに、前記MMUに関連付けられた1つまたは複数の変換キャッシュに関係付けられたトリガ条件を検出させるための少なくとも1つの命令であって、前記トリガ条件がトリガアドレスに関連付けられる、少なくとも1つの命令と、
前記MMUに、前記1つまたは複数の変換キャッシュにプリフェッチするべきアドレス変換のシーケンスを記述するシーケンス記述子を生成させるための少なくとも1つの命令であって、前記アドレス変換のシーケンスが、前記トリガアドレスを含んでいるアドレス範囲に隣接する複数のアドレス範囲に対応する複数のアドレス変換を備える、少なくとも1つの命令と、
前記MMUに、前記アドレス変換のシーケンス内の前記複数のアドレス変換の各々のために、前記1つまたは複数の変換キャッシュにアドレス変換要求を発行させるための少なくとも1つの命令と
を備え、
前記1つまたは複数の変換キャッシュが、前記複数のアドレス変換のうちの少なくとも1つのアドレス変換が前記1つまたは複数の変換キャッシュ内に存在しないことに基づいて、前記少なくとも1つのアドレス変換を、前記1つまたは複数の変換キャッシュにプリフェッチする、コンピュータ可読記録媒体。
【国際調査報告】
2018522331.tif 000018
2018522331.tif 000019