(57)【要約】データストリームに対して低レイテンシのメモリアドレス変換を提供するために、トランスレーションルックアサイドバッファを使用する技術が提供される。メモリシステムのクライアントは、先ず、変換プリフェッチストリームの初期化を要求することによって、アドレス変換キャッシュ階層を準備する。変換プリフェッチストリームが初期化された後、キャッシュ階層は、完了の確認応答をクライアントに返し、次いで、クライアントは、メモリへのアクセスを開始する。プリフェッチストリームは、アドレス範囲で指定され、仮想メモリアドレス空間の大きな連続した部分に対して実行される。【選択図】図３
2020508525.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶されたデータにアクセスする方法であって、
クライアントのトランスレーションルックアサイドバッファ（ＴＬＢ）プリフェッチストリームを初期化することであって、前記初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をＴＬＢにフェッチするプリフェッチ操作を実行することを含む、ことと、
変換が前記ＴＬＢに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求を前記クライアントから受信することと、
前記変換に基づいて、前記仮想アドレスを物理アドレスに変換することと、
前記メモリアクセス要求及び前記物理アドレスに基づいてメモリにアクセスすることと、を含む、
方法。
【請求項２】
前記ＴＬＢプリフェッチストリームを初期化する要求を前記クライアントから受信することであって、前記初期化することは、前記ＴＬＢプリフェッチストリームを初期化する要求に応じて実行される、ことを含む、
請求項１の方法。
【請求項３】
前記ＴＬＢプリフェッチストリームが初期化されていることに応じて、確認応答信号を前記クライアントに送信することを含む、
請求項２の方法。
【請求項４】
前記クライアントは、前記確認応答信号を受信したことに応じて、前記メモリアクセス要求を送信するように構成されている、
請求項３の方法。
【請求項５】
前記ＴＬＢプリフェッチストリームを初期化することは、前記ＴＬＢプリフェッチストリームに対する仮想メモリアドレス範囲を指定することを含み、
前記方法は、追加のプリフェッチ操作を実行して、前記ＴＬＢプリフェッチストリームに対する追加のメモリアドレス変換をプリフェッチすることを含み、
前記追加のメモリアドレス変換は、前記仮想メモリアドレス空間内、及び、前記ＴＬＢプリフェッチストリームに指定された前記仮想メモリアドレス範囲内で、前記ＴＬＢプリフェッチストリームの初期化のための前記メモリアドレス変換の後に続く、
請求項１の方法。
【請求項６】
前記追加のプリフェッチ操作を実行することは、前記ＴＬＢ内の変換を先入れ先出し置換ポリシーで置き換えることを含む、
請求項５の方法。
【請求項７】
前記追加のプリフェッチ操作を実行することは、オーバーフェッチ操作を実行することを含み、
前記オーバーフェッチ操作を実行することは、
１つのトランザクションで仮想メモリアドレスから物理メモリアドレスへの複数の変換をフェッチすることと、
前記仮想メモリアドレスから物理メモリアドレスへの複数の変換を前記ＴＬＢに記憶することと、を含む、
請求項５の方法。
【請求項８】
前記クライアントによるメモリアクセスのためのメモリアドレス変換を提供しながら前記追加のプリフェッチ操作を実行することを含む、ダブルバッファリング操作を実行することを含む、
請求項５の方法。
【請求項９】
前記クライアントは、処理のために、ビデオフレームデータを記憶するバッファからメモリの異なる部分にデータをコピーするように構成されたカメラコントローラと、ビデオエンコーダと、ビデオデコーダと、グラフィックス処理ユニットと、割り込みコントローラと、のうち１つを含む、
請求項１の方法。
【請求項１０】
メモリシステムであって、
１つ以上のメモリと、
前記１つ以上のメモリに記憶されたページテーブルと、
トランスレーションルックアサイドバッファ（ＴＬＢ）を含むメモリ管理コントローラと、を備え、
前記メモリ管理コントローラは、
クライアントのＴＬＢプリフェッチストリームを初期化することであって、前記初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換を前記ページテーブルから前記ＴＬＢにフェッチするプリフェッチ操作を実行することを含む、ことと、
変換が前記ＴＬＢに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求を前記クライアントから受信することと、
前記変換に基づいて、前記仮想アドレスを物理アドレスに変換することと、
前記メモリアクセス要求及び前記物理アドレスに基づいてメモリにアクセスすることと、
を行うように構成されている、
メモリシステム。
【請求項１１】
前記メモリ管理コントローラは、
前記ＴＬＢプリフェッチストリームを初期化する要求を前記クライアントから受信することであって、前記初期化することは、前記ＴＬＢプリフェッチストリームを初期化する要求に応じて実行される、ことを行うように構成されている、
請求項１０のメモリシステム。
【請求項１２】
前記メモリ管理コントローラは、
前記ＴＬＢプリフェッチストリームが初期化されていることに応じて、確認応答信号を前記クライアントに送信することを行うように構成されている、
請求項１１のメモリシステム。
【請求項１３】
前記クライアントは、前記確認応答信号を受信したことに応じて、前記メモリアクセス要求を送信するように構成されている、
請求項１２のメモリシステム。
【請求項１４】
前記メモリ管理コントローラは、前記ＴＬＢプリフェッチストリームに対する仮想メモリアドレス範囲を指定することによって、前記ＴＬＢプリフェッチストリームを初期化することを行うように構成されており、
前記メモリ管理コントローラは、追加のプリフェッチ操作を実行して、前記ＴＬＢプリフェッチストリームに対する追加のメモリアドレス変換をプリフェッチすることを行うように構成されており、
前記追加のメモリアドレス変換は、前記仮想メモリアドレス空間内、及び、前記ＴＬＢプリフェッチストリームに指定された前記仮想メモリアドレス範囲内で、前記ＴＬＢプリフェッチストリームの初期化のための前記メモリアドレス変換の後に続く、
請求項１０のメモリシステム。
【請求項１５】
前記メモリ管理コントローラは、前記ＴＬＢ内の変換を先入れ先出し置換ポリシーで置き換えることによって、前記追加のプリフェッチ操作を実行することを行うように構成されている、
請求項１４のメモリシステム。
【請求項１６】
前記メモリ管理コントローラは、オーバーフェッチ操作を実行することによって、前記追加のプリフェッチ操作を実行することを行うように構成されており、
前記オーバーフェッチ操作は、１つのトランザクションで仮想メモリアドレスから物理メモリアドレスへの複数の変換をフェッチすることと、前記仮想メモリアドレスから物理メモリアドレスへの複数の変換を前記ＴＬＢに記憶することと、を含む、
請求項１４のメモリシステム。
【請求項１７】
前記メモリ管理コントローラは、
前記クライアントによるメモリアクセスのためのメモリアドレス変換を提供しながら前記追加のプリフェッチ操作を実行することを含む、ダブルバッファリング操作を実行することを行うように構成されている、
請求項１４のメモリシステム。
【請求項１８】
前記クライアントは、処理のために、ビデオフレームデータを記憶するバッファからメモリの異なる部分にデータをコピーするように構成されたカメラコントローラと、ビデオエンコーダと、ビデオデコーダと、グラフィックス処理ユニットと、割り込みコントローラと、のうち１つを含む、
請求項１０のメモリシステム。
【請求項１９】
コンピュータシステムであって、
クライアントと、
メモリシステムと、を備え、
前記メモリシステムは、
１つ以上のメモリと、
前記１つ以上のメモリに記憶されたページテーブルと、
トランスレーションルックアサイドバッファ（ＴＬＢ）を含むメモリ管理コントローラと、を備え、
前記メモリ管理コントローラは、
クライアントのＴＬＢプリフェッチストリームを初期化することであって、前記初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換を前記ページテーブルから前記ＴＬＢにフェッチするプリフェッチ操作を実行することを含む、ことと、
変換が前記ＴＬＢに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求を前記クライアントから受信することと、
前記変換に基づいて、前記仮想アドレスを物理アドレスに変換することと、
前記メモリアクセス要求及び前記物理アドレスに基づいてメモリにアクセスすることと、
を行うように構成されている、
コンピュータシステム。
【請求項２０】
前記メモリ管理コントローラは、前記ＴＬＢプリフェッチストリームに対する仮想メモリアドレス範囲を指定することによって、前記ＴＬＢプリフェッチストリームを初期化することを行うように構成されており、
前記メモリ管理コントローラは、追加のプリフェッチ操作を実行して、前記ＴＬＢプリフェッチストリームに対する追加のメモリアドレス変換をプリフェッチすることを行うように構成されており、
前記追加のメモリアドレス変換は、前記仮想メモリアドレス空間内、及び、前記ＴＬＢプリフェッチストリームに指定された前記仮想メモリアドレス範囲内で、前記ＴＬＢプリフェッチストリームの初期化のための前記メモリアドレス変換の後に続く、
請求項１９のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１７年２月２４日に出願された米国特許出願第１５／４４２，４８７号及び２０１７年３月３日に出願された欧州特許出願第１７１５９１２５．８号の利益を主張するものであり、その内容は、引用することによって本明細書に完全に記載されているかのように本明細書に組み込まれる。
【０００２】
開示された実施形態は、概して、仮想メモリアドレス変換に関し、特に、ストリーミングトランスレーションルックアサイドバッファに関する。
【背景技術】
【０００３】
仮想メモリアドレッシングは、セキュリティ及びメモリ管理を容易にするために、システムがメモリ位置の物理アドレスを隠すメカニズムである。例えば、オペレーティングシステムは、アプリケーションが仮想アドレスを介してデータにアクセスし、他のアプリケーション又はオペレーティングシステムのデータにアクセスできないように、仮想アドレスマッピングを制御する。別の例では、オペレーティングシステムは、物理アドレス間でデータを移動させながら、当該データに対して同じ仮想アドレスを維持することができ、これにより、アプリケーションからメモリ管理操作を隠すことができる。
【０００４】
仮想メモリアドレッシングは、アドレス変換ステップを必要とする。具体的には、仮想アドレスを介してメモリにアクセスするために、先ず、仮想アドレスを物理アドレスに変換し、当該物理アドレスに基づいてメモリにアクセスする。アドレス変換はページテーブルに記憶されるが、ページテーブルは非常に大きくなる可能性がある。アドレス変換をフェッチすることに関連するレイテンシを短縮するために、トランスレーションルックアサイドバッファと呼ばれるアドレス変換キャッシュが提供される。
【０００５】
添付の図面と共に例として挙げられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【０００６】
【図１】１つ以上の開示された実施形態を実施し得る例示的なデバイスのブロック図である。
【図２】一例による、メモリ管理コントローラの詳細を示すブロック図である。
【図３】一例による、クライアント、トランスレーションルックアサイドバッファ、ページテーブル及びメモリの動作の詳細を示す図である。
【図４Ａ】一例による、トランスレーションルックアサイドバッファの追加の態様を示す図である。
【図４Ｂ】一例による、トランスレーションルックアサイドバッファの追加の態様を示す図である。
【図５】一例による、メモリアドレス変換をプリフェッチし、それらの変換を使用して、メモリに記憶されたデータにアクセスする方法のフロー図である。
【発明を実施するための形態】
【０００７】
データストリームに対して低レイテンシのメモリアドレス変換を提供するために、トランスレーションルックアサイドバッファを使用する技術が提供される。コンピュータシステム内の一部のクライアントは、連続する仮想アドレスを有するメモリの大部分に記憶されたデータを順次処理する等の「ストリーミング」メモリ操作を実行する。このようなクライアントの場合、クライアントがアドレス変換キャッシュ階層を横断することによって変換される仮想アドレスを介して行われるメモリアクセス要求を行う従来のメモリアクセスモデルでは、アドレス変換キャッシュ階層でミスが発生する可能性がある。このようなミスによって、リアルタイムアプリケーションにとって許容できないパフォーマンスをもたらす可能性のあるメモリアクセスレイテンシが発生する。
【０００８】
本開示は、メモリアクセスのための異なるモデルを提供する。メモリシステムのクライアントは、先ず、アドレス変換プリフェッチストリームの開始を要求することによって、アドレス変換キャッシュ階層を準備する。ストリームが初期化された後、キャッシュ階層は、完了の確認応答をクライアントに返し、クライアントは、ストリームに指定されたアドレスに対応するアドレスでメモリアクセスを開始する。クライアントは、仮想メモリアドレスに関して単調に増加する方法でメモリアクセスを実行する。クライアントがメモリアクセスを実行すると、アドレス変換キャッシュ階層は、新たな変換をプリフェッチするために、既に使用されている変換を破棄し、クライアントによって実行されるメモリアクセスよりも先行することを試みる。
【０００９】
アドレス変換キャッシュ階層は、オーバーフェッチ（ページテーブルからの読み出しが、読み出しが発生する最小単位よりも変換が小さいために、複数の変換を返すという事実）を利用してページテーブルからアドレス変換をストリーミングし、フェッチ速度を向上させる。アドレス変換キャッシュ階層は、二重バッファリングを使用してプリフェッチレイテンシを隠す。二重バッファリングは、クライアントのアドレス変換を実行しながら、クライアントのアドレス変換をプリフェッチすることを含む。
【００１０】
図１は、本開示の１つ以上の態様が実施される例示的なデバイス１００のブロック図である。デバイス１００は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージデバイス１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、入力ドライバ１１２及び出力ドライバ１１４をオプションで含む。デバイス１００は、図１に示されていない追加のコンポーネントを含み得ることが理解されるであろう。
【００１１】
プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアは、ＣＰＵ又はＧＰＵであってもよい。メモリ１０４は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２とは別に配置されてもよい。メモリ１０４は、揮発性又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ、キャッシュ等）を含む。
【００１２】
ストレージデバイス１０６は、固定又は着脱可能なストレージデバイス（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等）を含む。入力デバイス１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用の無線ローカルエリアネットワークカード）を含む。出力デバイス１１０は、ディスプレイデバイス、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上の照明、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用の無線ローカルエリアネットワークカード）を含む。
【００１３】
入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８から入力を受信するのを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信するのを可能にする。出力ドライバ１１４は、ディスプレイデバイス１１８に接続されたアクセラレーテッド処理デバイス（ＡＰＤ）１１６を含む。ＡＰＤ１１６は、プロセッサ１０２から計算コマンド及びグラフィックスレンダリングコマンドを受信し、計算コマンド及びグラフィックスレンダリングコマンドを処理して、表示のためにピクセル出力をディスプレイデバイス１１８に提供するように構成されている。
【００１４】
ＡＰＤ１１６は、単一命令複数データ（ＳＩＭＤ）パラダイムに従って計算を実行するように構成された１つ以上の並列処理装置を含む。しかしながら、ＡＰＤ１１６によって実行されるものとして説明した機能は、ＳＩＭＤパラダイムに従ってデータを処理しない処理デバイスによって実行されてもよい。
【００１５】
プロセッサ１０２及び他のユニットに接続されたメモリ管理コントローラ１２０は、アドレス変換ストリームを介したメモリへのアクセスを支援する。具体的には、プロセッサ１０２は、メモリアクセス要求の受信に応じて、仮想アドレスから物理アドレスへの変換を実行し、変換された物理アドレスに基づいてメモリにアクセスする。
【００１６】
図２は、一例による、メモリ管理コントローラ１２０の詳細を示すブロック図である。いくつかのクライアント２０２が示されている。クライアント２０２は、デバイス１００のユニット又はデバイス１００に取り付けられたユニットを表し、メモリ２０４にアクセスして、様々な目的のためにデータを処理する。クライアント２０２の例は、グラフィック処理ユニット（ＧＰＵ）、ビデオエンコーダ、ビデオデコーダ、カメラセンサデータを読み出し、そのセンサデータをメモリ２０４に書き込むカメラコントローラ、組み込み汎用マイクロコントローラ、割り込みコントローラ、汎用ダイレクトメモリアクセス（ＤＭＡ）エンジン、又は、メモリ内のデータを読み書きする他のユニットを含む。メモリ２０４は、クライアント２０２及び場合によっては他のユニットによる処理のためにデータを記憶する１つ以上のメモリユニットを含む。
【００１７】
いくつかのクライアント２０２は、「高性能」であり、非常に短い時間でメモリの大部分にアクセスする。一例では、６０フレーム／秒のカメラは、高解像度のデータフレームをバッファに取り込む。カメラコントローラ（クライアント２０２の１つ）は、例えば、プロセッサ１０２によって実行されているアプリケーションが処理するために、データをバッファからメモリ２０４の一部（システムメモリ１０４等）に読み出す。
【００１８】
データアクセスの一部には、メモリアドレス変換が含まれる。具体的には、ユニットは、物理アドレスではなく仮想アドレスを介してメモリにアクセスすることが多い。仮想アドレッシングは、オペレーティングシステムが、アプリケーション及びユーザ空間で動作するアプリケーションや他のエンティティの物理メモリ空間を隠すメカニズムである。アプリケーションが仮想アドレスを使用してデータにアクセスするので、オペレーティングシステムは、物理メモリ内のデータを制御及び移行することができるだけでなく、アプリケーションがシステムデータ又は他のアプリケーションのデータにアクセスするのを抑制することができる。
【００１９】
メモリアドレス変換は、最終的に物理アドレスを介してアクセスされるデータの読み書きができるように、仮想アドレスを物理アドレスに変換することを含む。メモリ２０４に記憶されたページテーブル２０６は、仮想アドレスを物理アドレスに関連付けるアドレス変換を記憶する。ページテーブル２０６は、メモリ空間内の様々なページに対するマッピングを記憶する。ページ数が非常に多くなる可能性があるため、ページテーブル２０６は、システムメモリ１０４等の汎用メモリに記憶され、キャッシュ等の専用メモリと比較して大容量であるがレイテンシが長いことを特徴とする。このため、他のメモリアドレス変換よりも、現在の処理タスクに関連するメモリアドレス変換を記憶するために、トランスレーションルックアサイドバッファ２１０（ＴＬＢ）が設けられる。トランスレーションルックアサイドバッファ２１０は、システムメモリ１０４又は他のメモリ２０４等の汎用メモリよりも容量を少なくすることで、より低いレイテンシ及びより速いアクセス速度を有する等のいくつかの点で、キャッシュメモリとして機能する。
【００２０】
トランスレーションルックアサイドバッファ２１０は、クライアント２０２からの複数のストリーム２１２を処理する。各ストリーム２１２は、メモリアドレス変換の特定のセットを使用するメモリ操作のセットを表す。ストリームは、特定のクライアント２０２を一意に識別するクライアント識別子２１４と、ストリーム２１２の開始仮想メモリアドレス及び終了仮想メモリアドレスを定義する仮想アドレス範囲２１６と、によって定義される。ストリームに関連する変換メモリ２１８は、当該ストリーム２１２に関連付けられたクライアント２０２が使用するための変換を記憶するメモリ要素を含む。
【００２１】
一例では、ストリーム２１２は、カメラセンサに関連するバッファ内のデータを読み出し、そのデータをシステムメモリ１０４に書き込むためのメモリ操作のセットを含む。このデータを読み出し及び書き込み可能にする前に、そのデータを参照する仮想メモリアドレスのアドレス変換がメモリ１０４からフェッチされ、ストリーム２１２に関連する変換メモリ２１８に記憶される。アドレス変換がフェッチされた後、クライアント２０２は、関連する変換メモリ２１８に記憶された仮想アドレスに基づいて物理アドレスを要求し、次いで、これらの変換に基づいてシステムメモリ１０４内のデータにアクセスすることによって、メモリアクセスを実行する。
【００２２】
ストリームのためにトランスレーションルックアサイドバッファ２１０によってフェッチされたアドレス変換は、仮想メモリアドレス空間内で連続している（勿論、物理メモリアドレス空間内では必ずしも連続しているわけではない）。仮想メモリアドレス空間の連続部分は、アドレス変換がフェッチされる開始仮想メモリアドレス及び終了仮想メモリアドレスを定義するアドレス範囲２１６を介して定義される。仮想メモリアドレス空間の特定の連続セグメントのメモリ操作（読み出し又は書き込み等）を開始する前に、クライアント２０２は、仮想メモリアドレス空間の連続部分のアドレス変換をＴＬＢ２１０内の変換メモリ２１８にプリフェッチさせるストリームを初期化するように、ＴＬＢ２１０に明示的に要求する。ＴＬＢ２１０は、ストリームを初期化すると、初期化が完了したことをクライアント２０２に通知する。このとき、クライアント２０２は、仮想アドレスに基づくメモリ２０４へのアクセス要求をメモリ管理コントローラ１２０に送信することによってメモリ操作を実行し、メモリ管理コントローラ１２０は、ＴＬＢ２１０に記憶された変換を使用して、クライアント２０２に要求された操作を実行する。クライアント２０２がストリーム内を進むにつれて、ＴＬＢ２１０は、ストリーム内の次のアクセスのためにアドレス変換のプリフェッチを継続し、プリフェッチの深さによって指定された変換の数によってクライアント２０２より先行することを試みる。ＴＬＢ２１０は、ストリーム内の次のアドレスの変換を書き込むために、既に使用された変換を上書きする。クライアントがストリームを終了した後、クライアント２０２は、ストリーム２１２の情報を記憶するために使用されたデータ構造を他のストリーム２１２用に使用することができるように、ストリーム２１２の無効化を要求する。
【００２３】
ＴＬＢ２１０は、特定の期間内に（例えば、同時に又はほぼ同時に）複数のストリーム２１２のメモリアドレス変換をフェッチすることができる。したがって、ＴＬＢ２１０は、ページテーブル２０６をプローブして異なるストリーム２１２のメモリアドレス変換を得ることができる複数のフェッチハードウェアリソースを含む。
【００２４】
図３は、一例による、クライアント２０２、ＴＬＢ２１０、ページテーブル２０６及びメモリ２０４の動作の詳細を示す図である。クライアント２０２は、メモリにアクセスするために、ストリーム設定要求３０２をＴＬＢ２１０に送信する。ストリーム設定要求３０２は、変換が所望される仮想メモリアドレスの範囲を指定する。ＴＬＢ２１０は、ストリーム設定要求に応じて、トランザクション３０４において、ページテーブル２０６からの変換を要求する（これは、変換キャッシュ階層でＴＬＢ２１０よりも高い１つ以上のキャッシュ（例えば、レベル２アドレス変換キャッシュ等）を介して発生する場合がある）。ページテーブル２０６は、この変換の要求に応じて、トランザクション３０６において、要求された変換をＴＬＢ２１０に提供し、ＴＬＢ２１０は、特定のストリーム２１２（ここでも、ストリーム２１２は、クライアントＩＤ２１４及びアドレス範囲２１６によって定義される）に関連する変換メモリ２１８に変換を記憶する。変換メモリ２１８は、ストリーム２１２の全ての変換を記憶するのに十分な大きさではないため、ＴＬＢ２１０は、変換メモリ２１８を満たすのに十分な変換をフェッチする。その後、変換がクライアント２０２によって使用されると、ＴＬＢ２１０は、新たな変換をフェッチし、先入れ先出し方式で古い変換を置き換える。この連続的なプリフェッチは、ストリーム２１２について指定された仮想メモリアドレス範囲を通して、単調に増加する方法で順次行われる。
【００２５】
ＴＬＢ２１０は、ページテーブル２０６から特定のストリーム２１２の初期アドレス変換を受信すると、トランザクション３０８において、ストリームが初期化されたことを示す確認応答メッセージをクライアント２０２に送信する。クライアント２０２は、この確認応答に応じて、トランザクション３１０において、変換がＴＬＢ２１０に現在記憶されている仮想アドレスによって参照されるデータへのアクセスを要求する。メモリ管理コントローラ１２０は、これに応じて、ＴＬＢ２１０に現在記憶されているエントリを介して仮想アドレスを変換し、トランザクション３１２において、変換されたアドレスに基づいてメモリ２０４内のデータにアクセスする。メモリ２０４は、トランザクション３１４において、要求された動作を実行し、及び／又は、要求されたデータをクライアント２０２に提供する。ＴＬＢ２１０は、トランザクション３１６において、ストリームを進めるために新たな変換をプリフェッチする。具体的には、ＴＬＢ２１０が、トランザクション３１０において、メモリアクセス要求のための変換を実行した後、これらの変換はクライアント２０２にとって不要となる。したがって、ＴＬＢ２１０は、新たな変換をフェッチしてストリーム２１２を進める。フェッチされた新たな変換は、直前に実行されたメモリアクセスに関連するメモリアドレスの直後のメモリアドレスの変換である。トランザクション３１８において、ページテーブル２０６は、要求された変換をＴＬＢ２１０内に記憶するために提供し、古い変換を先入れ先出し方式で置き換える。トランザクション３１０〜３１８は、クライアント２０２がストリーム２１２を終了するまでループする。クライアントが、ストリーム２１２について指定された仮想メモリアドレスの範囲のデータにアクセスした場合、又は、ストリーム２１２が完了したことを示す何らかの他のイベントが発生した場合に、クライアントはストリーム２１２を終了する。ストリームが完了した後、クライアント２０２は、トランザクション３２０において、ストリームの無効化を要求する。この無効化トランザクションは、アドレス範囲、クライアント識別子及び変換等のストリームのデータを無効化し、当該データをＴＬＢ２１０内に記憶するメモリを別のストリーム２１２用に使用できるようにする。
【００２６】
図３に示す動作のシーケンスは、プロセッサ１０２によって行われるような、より「ランダムアクセス」パターンを示すメモリアクセス要求を処理するメモリ管理ユニット（ＭＭＵ）に関連するトランスレーションルックアサイドバッファ等のように、仮想メモリアドレス空間の連続ストリームを提供しないトランスレーションルックアサイドバッファに使用されるものとは異なる。具体的には、このようなＴＬＢは、（プロセッサ１０２等の）クライアントと直接通信するのではなく、ＭＭＵによって行われる仮想メモリアドレス変換のためのキャッシュとして単に機能する。このような状況では、クライアントは、メモリにアクセスするために、特定の仮想メモリアドレスに基づくメモリへのアクセスを、ＭＭＵを介して単に要求する。ＭＭＵは、これに応じて、利用可能であれば、ＴＬＢに記憶された変換を使用し、必要に応じてアドレス変換キャッシュ階層を上がり、必要な変換が何れのアドレス変換キャッシュ階層レベルにも記憶されていない場合には最終的にページテーブルウォークを実行して、仮想メモリアドレスを変換する。ＭＭＵは、クライアントによって指定された仮想メモリアドレスの変換を取得すると、メモリアドレスを物理メモリアドレスに変換し、要求されたメモリアクセスを実行し、データ及び／又はアクセスの確認応答をクライアントに返す。このようなＴＬＢ及びメモリアクセスパターンでは、クライアントは、プリフェッチストリームの初期化を要求せず、プリフェッチストリームが初期化されたという確認応答を受信せず、アクセスを実行する前にストリーム初期化の完了の確認応答を待機しない。代わりに、クライアントは、実際にＴＬＢに記憶されている内容に関係なく、メモリアクセス要求のみを行う。本明細書で説明するように、高性能アプリケーションの場合、このようなタイプのアクセスパターンに関連するＴＬＢのミスは、許容できないメモリアクセスレイテンシをもたらす可能性がある。
【００２７】
図４Ａ〜図４Ｂは、実施例による、ＴＬＢ２１０のさらなる態様を示す図である。図４Ａは、異なるストリーム２１２についてＴＬＢ２１０に記憶されたエントリ４０２の編成例を示している。各エントリ４０２は、変換記憶の単位を表し、１つ以上の変換を含むことができる。いくつかの実施態様では、各エントリ４０２は、同じ数の変換を記憶する。ＴＬＢ２１０内では、各ストリーム２１２には特定の数のエントリ４０２が割り当てられており、これらのエントリは、まとめて変換メモリ２１８を構成する。クライアントが特定のストリーム２１２のプリフェッチを要求したことに応じて、ＴＬＢ２１０は、当該ストリーム２１２にエントリ４０２を割り当て、要求された変換を、当該ストリーム２１２に割り当てられたエントリ４０２にフェッチする。クライアント２０２がエントリの無効化を要求したことに応じて（クライアントが、特定のストリーム２１２の変換によって指定された物理メモリアドレスに対するメモリアクセスを実行した後）、ＴＬＢ２１０は、エントリ４０２を無効化し、後で、無効化されたエントリ４０２を新たなストリーム２１２に割り当てることができる。
【００２８】
図４Ｂは、一例による、ＴＬＢ２１０に関連するさらなる動作を示す図である。キャッシュは、置換ポリシーを使用して、エントリ４０２のセット内の何れの特定のエントリ４０２を、新たなキャッシュデータのために上書きするかを決定する。本明細書に記載のＴＬＢ２１０は、最長未使用時間（least-recently-used）置換ポリシー等のようにより複雑なものではなく、単純な先入れ先出し方式の置換ポリシーを使用する。具体的には、何れの特定のストリーム２１２も、どのような変換が必要であるかをＴＬＢ２１０に明示的に指示するので、最も単純な置換ポリシー（すなわち、ＴＬＢ２１０が、ストリーム２１２に割り当てられたエントリ４０２を循環バッファとして扱う置換ポリシー）で十分である。エントリ４０２を循環バッファとして扱うことは、ＴＬＢ２１０が、連続的な方法でエントリを書き込み、最後のエントリ４０２が特定の変換メモリ２１８に書き込まれた場合に、かかるメモリの最初に「ラップアラウンド」することを意味する。
【００２９】
また、アクセスの連続性のために、ＴＬＢ２１０は、「オーバーフェッチ」を使用してページテーブル２０６から変換をフェッチし、要求された変換をＴＬＢ２１０に記憶するために、実行される動作の数を減らす。具体的には、異なるエントリが非連続な仮想メモリアドレスの変換を記憶するＴＬＢでは、単一の変換に必要なデータ量よりも多いデータ量に対してメモリ要求及びアクセスがコンピュータシステム内で発生するという事実のために、ページテーブル２０６から変換を取得する動作は、通常、複数の変換用のデータを取得する。この過剰な取得によって「オーバーフェッチ」が発生し、フェッチされたデータの多くが破棄される。本明細書に記載されたＴＬＢ２１０では、変換が仮想アドレス空間の連続部分に対するものであるため、それ以外の場合には、オーバーフェッチをもたらすフェッチは、代わりにメモリの連続部分に対する複数の変換の取得を単にもたらす。したがって、単一の変換以外の全てのデータを破棄する代わりに、ＴＬＢ２１０は、単一のフェッチ操作で取得されたより多くの変換を保持することができる。この方法で変換を保持すると、特定の数の変換を取得するために必要なフェッチ操作の数が減少する。
【００３０】
また、図４Ｂは、特定のエントリ４０２のセットがプリフェッチされる一方で、異なるエントリ４０２のセットがメモリアクセスのための変換に使用される「ダブルバッファリング」操作を示している。具体的には、操作のレイテンシを減らし、変換が利用可能であることを保証するために、ＴＬＢ２１０は、単一のストリームに対して２つの異なる変換メモリ２１８を使用する。第１変換メモリ２１８が、ページテーブル２０６から変換をフェッチする一方で、第２変換メモリ２１８が、メモリアドレスの変換を実行するためにクライアント２０２によって使用される。図４Ｂでは、ストリーム１  ２１２（１）がプリフェッチに使用され、ストリーム２  ２１２（２）が変換に使用される。ＴＬＢ２１０が単一の変換メモリ２１８を満たした場合、当該変換メモリ２１８内の変換がクライアント２０２に利用可能となり、ＴＬＢ２１０は、他の変換メモリ２１８用の変換のフェッチを開始する。クライアント２０２が第１変換メモリ２１８を介してメモリにアクセスする間、変換が第２変換メモリ２１８にフェッチされる。２つの変換メモリ２１８の役割は、クライアント２０２が、第１変換メモリ２１８に記憶された変換に関するメモリアクセスの実行を終了したときに切り替えられる。
【００３１】
図５は、一例による、メモリアドレス変換をプリフェッチし、これらの変換を使用してメモリに記憶されたデータにアクセスする方法５００のフロー図である。図１〜図３及び図４Ａ〜図４Ｂに関連して図示及び説明したシステムに関して説明されているが、技術的に実行可能な任意の順序で方法を実行するように構成された任意のシステムが本発明の範囲内にあることを理解されたい。
【００３２】
方法５００は、ステップ５０２で開始し、クライアント２０２は、一連の連続する仮想メモリアドレスに対するアドレス変換のために、プリフェッチストリーム２１２の初期化を要求する。要求は、仮想メモリアドレス範囲を定義する開始仮想アドレス及び終了仮想アドレスを含む。クライアント２０２は、これらのプリフェッチを要求する際に、プリフェッチされているアドレス変換を使用して、メモリ２０４からデータを読み出す準備をしている。プリフェッチを明示的に要求することで、このようなプリフェッチがない場合に発生する可能性のあるＴＬＢ内のキャッシュミスに関連するレイテンシを回避することができる。
【００３３】
ステップ５０４において、ＴＬＢ２１０は、プリフェッチストリームを初期化する要求に応じて、要求された変換をページテーブル２０６からフェッチし、当該変換をＴＬＢ２１０に記憶する。フェッチされたアドレス変換が、連続する仮想メモリアドレスに対するものであり、連続する仮想メモリアドレスに対する変換が、少なくとも部分的に連続してページテーブル２０６に記憶されていることから、ＴＬＢ２１０は、アドレス変換をフェッチする要求が複数の変換をフェッチするオーバーフェッチを有利に使用することができる。ステップ５０６において、ＴＬＢ２１０は、要求された変換を記憶した後、要求された変換がＴＬＢ２１０に記憶されているという確認応答を、プリフェッチ要求を行ったクライアント２０２に送信する。ステップ５０８において、クライアント２０２は、これに応じて、フェッチされた変換の仮想アドレスによって参照されるデータに対してメモリアクセスを実行する。これらのメモリアクセスは、仮想アドレス及びアクセスタイプ（例えば、読み出し、書き込み等）をメモリ管理コントローラ１２０に提供することを含み、メモリ管理コントローラ１２０は、ＴＬＢ２１０で変換を検索する。ＴＬＢ２１０内で（プリフェッチのためにＴＬＢに記憶されている）変換が見つかると、メモリ管理コントローラ１２０は、変換によって指定された物理アドレスを取得し、指定されたメモリにアクセスする。ステップ５１０において、ＴＬＢ２１０は、ストリームが完了したかどうかを判別する。クライアント２０２が、ストリーム２１２について指定された範囲内の全てのメモリにアクセスした場合に、ストリームが完了する。ストリームが完了すると、方法はステップ５１４に進み、クライアント２０２はストリームを無効にする。ストリームが完了していない場合、方法はステップ５１２に進む。ステップ５１２において、ＴＬＢ２１０は、ストリーム２１２の次の部分の変換をプリフェッチする。図５では特定のシーケンスで示されているが、ステップ５０８，５１０，５１２は、「重複期間」で発生し得る。例えば、ＴＬＢ２１０がストリームの次の部分の変換をプリフェッチする間、クライアント２０２は、（例えば、上述したダブルバッファリング方式で）ストリームの既にフェッチされた部分を使用してメモリアクセスを実行する。
【００３４】
異なるタイプのクライアントの例示的なアクセスパターンを簡単に説明する。グラフィックス処理ユニット（ＧＰＵ）は、３次元グラフィックスレンダリング（汎用の単一命令多重データベースの計算）に関連するデータをフェッチし、そのデータを処理して、レンダリングされた画像又は他の結果を出力する。多くの場合、ＧＰＵによってアクセスされるデータは、連続して仮想的にアドレス指定されたメモリの大部分に含まれる。このような状況では、ＧＰＵは、単調に増加する仮想アドレス順でデータにアクセスする。ＧＰＵは、このようなアクセスのために、上述したストリーミング技術を使用する。
【００３５】
ビデオエンコーダ及びビデオデコーダは、連続して仮想的にアドレス指定されたアドレスの大部分にアクセスする。ビデオエンコーダは、１つのフォーマットのビデオデータを取得し、そのビデオデータを符号化して符号化ビデオを提供し、そのビデオを出力する。ビデオデコーダは、符号化ビデオデータを取得し、そのビデオデータに対して復号化を行い、復号化されたビデオを出力する。ＧＰＵと同様に、ビデオエンコーダ及びビデオデコーダは、データの大部分を処理し、そのデータについての変換をプリフェッチするためのストリーム２１２を生成する。
【００３６】
メモリに記憶されたデータにアクセスする方法が提供される。方法は、クライアントのためのＴＬＢプリフェッチストリームを初期化することを含み、初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をＴＬＢにフェッチするプリフェッチ操作を実行することを含む。また、方法は、変換がＴＬＢに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求をクライアントから受信することを含む。さらに、方法は、変換に基づいて、仮想アドレスを物理アドレスに変換することを含む。また、方法は、メモリアクセス要求及び物理アドレスに基づいてメモリにアクセスすることを含む。
【００３７】
メモリシステムも提供される。メモリシステムは、１つ以上のメモリと、１つ以上のメモリに記憶されたページテーブルと、ＴＬＢを含むメモリ管理コントローラと、を含む。メモリ管理コントローラは、クライアントのＴＬＢプリフェッチストリームを初期化するように構成されており、初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をページテーブルからＴＬＢへフェッチするプリフェッチ操作を実行することを含む。メモリ管理コントローラは、変換がＴＬＢに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求をクライアントから受信するように構成されている。メモリ管理コントローラは、変換に基づいて、仮想アドレスを物理アドレスに変換するように構成されている。メモリ管理コントローラは、メモリアクセス要求及び物理アドレスに基づいてメモリにアクセスするように構成されている。
【００３８】
コンピュータシステムが提供される。コンピュータシステムは、クライアントと、メモリシステムと、を含む。メモリシステムは、１つ以上のメモリと、１つ以上のメモリに記憶されたページテーブルと、ＴＬＢを含むメモリ管理コントローラと、を含む。メモリ管理コントローラは、クライアントのＴＬＢプリフェッチストリームを初期化するように構成されており、初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をページテーブルからＴＬＢへフェッチするプリフェッチ操作を実行することを含む。メモリ管理コントローラは、変換がＴＬＢに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求をクライアントから受信するように構成されている。メモリ管理コントローラは、変換に基づいて、仮想アドレスを物理アドレスに変換するように構成されている。メモリ管理コントローラは、メモリアクセス要求及び物理アドレスに基づいてメモリにアクセスするように構成されている。
【００３９】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素は、特定の組み合わせで上述したように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
【００４０】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令、及び、ネットリストを含む他の中間データ（このような命令はコンピュータ可読媒体に記憶され得る）の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００４１】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体（ＣＤ−ＲＯＭディスク等）、デジタル多用途ディスク（ＤＶＤ）等が含まれる。
【図１】
2020508525.tif 000003
【図２】
2020508525.tif 000004
【図３】
2020508525.tif 000005
【図４Ａ】
2020508525.tif 000006
【図４Ｂ】
2020508525.tif 000007
【図５】
2020508525.tif 000008
【国際調査報告】
2020508525.tif 000009
2020508525.tif 000010