IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧 ▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特開2024-45385ストリーミングトランスレーションルックアサイドバッファ
<>
  • 特開-ストリーミングトランスレーションルックアサイドバッファ 図1
  • 特開-ストリーミングトランスレーションルックアサイドバッファ 図2
  • 特開-ストリーミングトランスレーションルックアサイドバッファ 図3
  • 特開-ストリーミングトランスレーションルックアサイドバッファ 図4A
  • 特開-ストリーミングトランスレーションルックアサイドバッファ 図4B
  • 特開-ストリーミングトランスレーションルックアサイドバッファ 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024045385
(43)【公開日】2024-04-02
(54)【発明の名称】ストリーミングトランスレーションルックアサイドバッファ
(51)【国際特許分類】
   G06F 12/0862 20160101AFI20240326BHJP
   G06F 12/1027 20160101ALI20240326BHJP
【FI】
G06F12/0862 100
G06F12/1027
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2024014140
(22)【出願日】2024-02-01
(62)【分割の表示】P 2019546180の分割
【原出願日】2018-02-13
(31)【優先権主張番号】15/442,487
(32)【優先日】2017-02-24
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17159125.8
(32)【優先日】2017-03-03
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ウェイド ケイ. スミス
(72)【発明者】
【氏名】コスタンティノス ダニー クリスティディス
(57)【要約】      (修正有)
【課題】データストリームに対して低レイテンシのメモリアドレス変換を実行するトランスレーションルックアサイドバッファを使用する方法を提供する。
【解決手段】メモリシステムのクライアントは、先ず、変換プリフェッチストリームの初期化を要求することによって、アドレス変換キャッシュ階層を準備する。変換プリフェッチストリームが初期化された後、キャッシュ階層は、完了の確認応答をクライアントに返し、次いで、クライアントは、メモリへのアクセスを開始する。プリフェッチストリームは、アドレス範囲で指定され、仮想メモリアドレス空間の大きな連続した部分に対して実行される。
【選択図】図3
【特許請求の範囲】
【請求項1】
メモリに記憶されたデータにアクセスする方法であって、
メモリ管理コントローラが、
クライアントのメモリアドレス範囲に関するトランスレーションルックアサイドバッファ(TLB)プリフェッチストリームを初期化することであって、前記初期化することは、前記メモリアドレス範囲内の仮想メモリアドレスから物理メモリアドレスへの変換をTLBにフェッチするための複数のプリフェッチ操作を継続して実行することを含む、ことと、
前記初期化が行われた後に、前記仮想メモリアドレスから物理メモリアドレスへの変換のプリフェッチ操作を継続している間に、
前記TLBプリフェッチストリームによって仮想メモリアドレスから物理メモリアドレスへの変換が前記TLBに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求を前記クライアントから受信することと、
前記仮想メモリアドレスから物理メモリアドレスへの変換に基づいて、前記仮想アドレスを物理アドレスに変換することと、
前記メモリアクセス要求及び前記物理アドレスに基づいてメモリにアクセスすることと、
前記クライアントからの要求に応じて、前記仮想メモリアドレスから物理メモリアドレスへの変換を無効化することと、を含む、
方法。
【請求項2】
前記TLBプリフェッチストリームを初期化する要求を前記クライアントから受信することであって、前記初期化することは、前記TLBプリフェッチストリームを初期化する要求に応じて実行される、ことを含む、
請求項1の方法。
【請求項3】
前記TLBプリフェッチストリームが初期化されていることに応じて、確認応答信号を前記クライアントに送信することを含む、
請求項2の方法。
【請求項4】
前記クライアントは、前記確認応答信号を受信したことに応じて、前記メモリアクセス要求を送信するように構成されている、
請求項3の方法。
【請求項5】
前記TLBプリフェッチストリームを初期化することは、前記メモリアドレス範囲を指定することを含み、
前記方法は、追加のプリフェッチ操作を実行して、前記TLBプリフェッチストリームに対する追加のメモリアドレス変換をプリフェッチすることを含み、
前記追加のメモリアドレス変換は、仮想メモリアドレス空間内、及び、前記メモリアドレス範囲内で、前記TLBプリフェッチストリームの初期化のための前記仮想メモリアドレスから物理メモリアドレスへの変換の後に行われる、
請求項1の方法。
【請求項6】
前記追加のプリフェッチ操作を実行することは、前記TLB内の仮想メモリアドレスから物理メモリアドレスへの変換を先入れ先出し置換ポリシーで置き換えることを含む、
請求項5の方法。
【請求項7】
前記追加のプリフェッチ操作を実行することは、オーバーフェッチ操作を実行することを含み、
前記オーバーフェッチ操作を実行することは、
1つのトランザクションで仮想メモリアドレスから物理メモリアドレスへの複数の変換をフェッチすることと、
前記仮想メモリアドレスから物理メモリアドレスへの複数の変換を前記TLBに記憶することと、を含む、
請求項5の方法。
【請求項8】
前記クライアントによるメモリアクセスのための仮想メモリアドレスから物理メモリアドレスへの変換を提供しながら前記追加のプリフェッチ操作を実行するためのダブルバッファリング操作を実行することを含む、
請求項5の方法。
【請求項9】
前記クライアントは、処理のために、ビデオフレームデータを記憶するバッファからメモリの異なる部分にデータをコピーするように構成されたカメラコントローラと、ビデオエンコーダと、ビデオデコーダと、グラフィックス処理ユニットと、割り込みコントローラと、のうち1つを含む、
請求項1の方法。
【請求項10】
メモリシステムであって、
1つ以上のメモリと、
前記1つ以上のメモリに記憶されたページテーブルと、
トランスレーションルックアサイドバッファ(TLB)を含むメモリ管理コントローラと、を備え、
前記メモリ管理コントローラは、
クライアントのメモリアドレス範囲に関するTLBプリフェッチストリームを初期化することであって、前記初期化することは、前記メモリアドレス範囲内の仮想メモリアドレスから物理メモリアドレスへの変換を前記ページテーブルから前記TLBにフェッチするための複数のプリフェッチ操作を継続して実行することを含む、ことと、
前記初期化が行われた後に、前記仮想メモリアドレスから物理メモリアドレスへの変換のプリフェッチ操作を継続している間に、
仮想メモリアドレスから物理メモリアドレスへの変換が前記TLBに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求を前記クライアントから受信することと、
前記仮想メモリアドレスから物理メモリアドレスへの変換に基づいて、前記仮想アドレスを物理アドレスに変換することと、
前記メモリアクセス要求及び前記物理アドレスに基づいてメモリにアクセスすることと、
前記クライアントからの要求に応じて、前記仮想メモリアドレスから物理メモリアドレスへの変換を無効化することと、
を行うように構成されている、
メモリシステム。
【請求項11】
前記メモリ管理コントローラは、
前記TLBプリフェッチストリームを初期化する要求を前記クライアントから受信することであって、前記初期化することは、前記TLBプリフェッチストリームを初期化する要求に応じて実行される、ことを行うように構成されている、
請求項10のメモリシステム。
【請求項12】
前記メモリ管理コントローラは、
前記TLBプリフェッチストリームが初期化されていることに応じて、確認応答信号を前記クライアントに送信することを行うように構成されている、
請求項11のメモリシステム。
【請求項13】
前記クライアントは、前記確認応答信号を受信したことに応じて、前記メモリアクセス要求を送信するように構成されている、
請求項12のメモリシステム。
【請求項14】
前記メモリ管理コントローラは、前記メモリアドレス範囲を指定することによって、前記TLBプリフェッチストリームを初期化することを行うように構成されており、
前記メモリ管理コントローラは、追加のプリフェッチ操作を実行して、前記TLBプリフェッチストリームに対する追加のメモリアドレス変換をプリフェッチすることを行うように構成されており、
前記追加のメモリアドレス変換は、仮想メモリアドレス空間内、及び、前記メモリアドレス範囲内で、前記TLBプリフェッチストリームの初期化のための前記仮想メモリアドレスから物理メモリアドレスへの変換の後に行われる、
請求項10のメモリシステム。
【請求項15】
前記メモリ管理コントローラは、前記TLB内の仮想メモリアドレスから物理メモリアドレスへの変換を先入れ先出し置換ポリシーで置き換えることによって、前記追加のプリフェッチ操作を実行することを行うように構成されている、
請求項14のメモリシステム。
【請求項16】
前記メモリ管理コントローラは、オーバーフェッチ操作を実行することによって、前記追加のプリフェッチ操作を実行することを行うように構成されており、
前記オーバーフェッチ操作は、1つのトランザクションで仮想メモリアドレスから物理メモリアドレスへの複数の変換をフェッチすることと、前記仮想メモリアドレスから物理メモリアドレスへの複数の変換を前記TLBに記憶することと、を含む、
請求項14のメモリシステム。
【請求項17】
前記メモリ管理コントローラは、
前記クライアントによるメモリアクセスのための仮想メモリアドレスから物理メモリアドレスへの変換を提供しながら前記追加のプリフェッチ操作を実行するためのダブルバッファリング操作を実行することを行うように構成されている、
請求項14のメモリシステム。
【請求項18】
前記クライアントは、処理のために、ビデオフレームデータを記憶するバッファからメモリの異なる部分にデータをコピーするように構成されたカメラコントローラと、ビデオエンコーダと、ビデオデコーダと、グラフィックス処理ユニットと、割り込みコントローラと、のうち1つを含む、
請求項10のメモリシステム。
【請求項19】
コンピュータシステムであって、
クライアントと、
メモリシステムと、を備え、
前記メモリシステムは、
1つ以上のメモリと、
前記1つ以上のメモリに記憶されたページテーブルと、
トランスレーションルックアサイドバッファ(TLB)を含むメモリ管理コントローラと、を備え、
前記メモリ管理コントローラは、
クライアントのメモリアドレス範囲に関するTLBプリフェッチストリームを初期化することであって、前記初期化することは、前記メモリアドレス範囲内の仮想メモリアドレスから物理メモリアドレスへの変換を前記ページテーブルから前記TLBにフェッチするための複数のプリフェッチ操作を継続して実行することを含む、ことと、
前記初期化が行われた後に、前記仮想メモリアドレスから物理メモリアドレスへの変換のプリフェッチ操作を継続している間に、
前記TLBプリフェッチストリームによって仮想メモリアドレスから物理メモリアドレスへの変換が前記TLBに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求を前記クライアントから受信することと、
前記仮想メモリアドレスから物理メモリアドレスへの変換に基づいて、前記仮想アドレスを物理アドレスに変換することと、
前記メモリアクセス要求及び前記物理アドレスに基づいてメモリにアクセスすることと、
前記クライアントからの要求に応じて、前記仮想メモリアドレスから物理メモリアドレスへの変換を無効化することと、
を行うように構成されている、
コンピュータシステム。
【請求項20】
前記メモリ管理コントローラは、前記メモリアドレス範囲を指定することによって、前記TLBプリフェッチストリームを初期化することを行うように構成されており、
前記メモリ管理コントローラは、追加のプリフェッチ操作を実行して、前記TLBプリフェッチストリームに対する追加のメモリアドレス変換をプリフェッチすることを行うように構成されており、
前記追加のメモリアドレス変換は、仮想メモリアドレス空間内、及び、前記メモリアドレス範囲内で、前記TLBプリフェッチストリームの初期化のための前記仮想メモリアドレスから物理メモリアドレスへの変換の後に行われる、
請求項19のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2017年2月24日に出願された米国特許出願第15/442,487号及び2017年3月3日に出願された欧州特許出願第17159125.8号の利益を主張するものであり、その内容は、引用することによって本明細書に完全に記載されているかのように本明細書に組み込まれる。
【0002】
開示された実施形態は、概して、仮想メモリアドレス変換に関し、特に、ストリーミングトランスレーションルックアサイドバッファに関する。
【背景技術】
【0003】
仮想メモリアドレッシングは、セキュリティ及びメモリ管理を容易にするために、システムがメモリ位置の物理アドレスを隠すメカニズムである。例えば、オペレーティングシステムは、アプリケーションが仮想アドレスを介してデータにアクセスし、他のアプリケーション又はオペレーティングシステムのデータにアクセスできないように、仮想アドレスマッピングを制御する。別の例では、オペレーティングシステムは、物理アドレス間でデータを移動させながら、当該データに対して同じ仮想アドレスを維持することができ、これにより、アプリケーションからメモリ管理操作を隠すことができる。
【0004】
仮想メモリアドレッシングは、アドレス変換ステップを必要とする。具体的には、仮想アドレスを介してメモリにアクセスするために、先ず、仮想アドレスを物理アドレスに変換し、当該物理アドレスに基づいてメモリにアクセスする。アドレス変換はページテーブルに記憶されるが、ページテーブルは非常に大きくなる可能性がある。アドレス変換をフェッチすることに関連するレイテンシを短縮するために、トランスレーションルックアサイドバッファと呼ばれるアドレス変換キャッシュが提供される。
【0005】
添付の図面と共に例として挙げられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0006】
図1】1つ以上の開示された実施形態を実施し得る例示的なデバイスのブロック図である。
図2】一例による、メモリ管理コントローラの詳細を示すブロック図である。
図3】一例による、クライアント、トランスレーションルックアサイドバッファ、ページテーブル及びメモリの動作の詳細を示す図である。
図4A】一例による、トランスレーションルックアサイドバッファの追加の態様を示す図である。
図4B】一例による、トランスレーションルックアサイドバッファの追加の態様を示す図である。
図5】一例による、メモリアドレス変換をプリフェッチし、それらの変換を使用して、メモリに記憶されたデータにアクセスする方法のフロー図である。
【発明を実施するための形態】
【0007】
データストリームに対して低レイテンシのメモリアドレス変換を提供するために、トランスレーションルックアサイドバッファを使用する技術が提供される。コンピュータシステム内の一部のクライアントは、連続する仮想アドレスを有するメモリの大部分に記憶されたデータを順次処理する等の「ストリーミング」メモリ操作を実行する。このようなクライアントの場合、クライアントがアドレス変換キャッシュ階層を横断することによって変換される仮想アドレスを介して行われるメモリアクセス要求を行う従来のメモリアクセスモデルでは、アドレス変換キャッシュ階層でミスが発生する可能性がある。このようなミスによって、リアルタイムアプリケーションにとって許容できないパフォーマンスをもたらす可能性のあるメモリアクセスレイテンシが発生する。
【0008】
本開示は、メモリアクセスのための異なるモデルを提供する。メモリシステムのクライアントは、先ず、アドレス変換プリフェッチストリームの開始を要求することによって、アドレス変換キャッシュ階層を準備する。ストリームが初期化された後、キャッシュ階層は、完了の確認応答をクライアントに返し、クライアントは、ストリームに指定されたアドレスに対応するアドレスでメモリアクセスを開始する。クライアントは、仮想メモリアドレスに関して単調に増加する方法でメモリアクセスを実行する。クライアントがメモリアクセスを実行すると、アドレス変換キャッシュ階層は、新たな変換をプリフェッチするために、既に使用されている変換を破棄し、クライアントによって実行されるメモリアクセスよりも先行することを試みる。
【0009】
アドレス変換キャッシュ階層は、オーバーフェッチ(ページテーブルからの読み出しが、読み出しが発生する最小単位よりも変換が小さいために、複数の変換を返すという事実)を利用してページテーブルからアドレス変換をストリーミングし、フェッチ速度を向上させる。アドレス変換キャッシュ階層は、二重バッファリングを使用してプリフェッチレイテンシを隠す。二重バッファリングは、クライアントのアドレス変換を実行しながら、クライアントのアドレス変換をプリフェッチすることを含む。
【0010】
図1は、本開示の1つ以上の態様が実施される例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージデバイス106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含む。デバイス100は、図1に示されていない追加のコンポーネントを含み得ることが理解されるであろう。
【0011】
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ等)を含む。
【0012】
ストレージデバイス106は、固定又は着脱可能なストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイデバイス、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の照明、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
【0013】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信するのを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信するのを可能にする。出力ドライバ114は、ディスプレイデバイス118に接続されたアクセラレーテッド処理デバイス(APD)116を含む。APD116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受信し、計算コマンド及びグラフィックスレンダリングコマンドを処理して、表示のためにピクセル出力をディスプレイデバイス118に提供するように構成されている。
【0014】
APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理装置を含む。しかしながら、APD116によって実行されるものとして説明した機能は、SIMDパラダイムに従ってデータを処理しない処理デバイスによって実行されてもよい。
【0015】
プロセッサ102及び他のユニットに接続されたメモリ管理コントローラ120は、アドレス変換ストリームを介したメモリへのアクセスを支援する。具体的には、プロセッサ102は、メモリアクセス要求の受信に応じて、仮想アドレスから物理アドレスへの変換を実行し、変換された物理アドレスに基づいてメモリにアクセスする。
【0016】
図2は、一例による、メモリ管理コントローラ120の詳細を示すブロック図である。いくつかのクライアント202が示されている。クライアント202は、デバイス100のユニット又はデバイス100に取り付けられたユニットを表し、メモリ204にアクセスして、様々な目的のためにデータを処理する。クライアント202の例は、グラフィック処理ユニット(GPU)、ビデオエンコーダ、ビデオデコーダ、カメラセンサデータを読み出し、そのセンサデータをメモリ204に書き込むカメラコントローラ、組み込み汎用マイクロコントローラ、割り込みコントローラ、汎用ダイレクトメモリアクセス(DMA)エンジン、又は、メモリ内のデータを読み書きする他のユニットを含む。メモリ204は、クライアント202及び場合によっては他のユニットによる処理のためにデータを記憶する1つ以上のメモリユニットを含む。
【0017】
いくつかのクライアント202は、「高性能」であり、非常に短い時間でメモリの大部分にアクセスする。一例では、60フレーム/秒のカメラは、高解像度のデータフレームをバッファに取り込む。カメラコントローラ(クライアント202の1つ)は、例えば、プロセッサ102によって実行されているアプリケーションが処理するために、データをバッファからメモリ204の一部(システムメモリ104等)に読み出す。
【0018】
データアクセスの一部には、メモリアドレス変換が含まれる。具体的には、ユニットは、物理アドレスではなく仮想アドレスを介してメモリにアクセスすることが多い。仮想アドレッシングは、オペレーティングシステムが、アプリケーション及びユーザ空間で動作するアプリケーションや他のエンティティの物理メモリ空間を隠すメカニズムである。アプリケーションが仮想アドレスを使用してデータにアクセスするので、オペレーティングシステムは、物理メモリ内のデータを制御及び移行することができるだけでなく、アプリケーションがシステムデータ又は他のアプリケーションのデータにアクセスするのを抑制することができる。
【0019】
メモリアドレス変換は、最終的に物理アドレスを介してアクセスされるデータの読み書きができるように、仮想アドレスを物理アドレスに変換することを含む。メモリ204に記憶されたページテーブル206は、仮想アドレスを物理アドレスに関連付けるアドレス変換を記憶する。ページテーブル206は、メモリ空間内の様々なページに対するマッピングを記憶する。ページ数が非常に多くなる可能性があるため、ページテーブル206は、システムメモリ104等の汎用メモリに記憶され、キャッシュ等の専用メモリと比較して大容量であるがレイテンシが長いことを特徴とする。このため、他のメモリアドレス変換よりも、現在の処理タスクに関連するメモリアドレス変換を記憶するために、トランスレーションルックアサイドバッファ210(TLB)が設けられる。トランスレーションルックアサイドバッファ210は、システムメモリ104又は他のメモリ204等の汎用メモリよりも容量を少なくすることで、より低いレイテンシ及びより速いアクセス速度を有する等のいくつかの点で、キャッシュメモリとして機能する。
【0020】
トランスレーションルックアサイドバッファ210は、クライアント202からの複数のストリーム212を処理する。各ストリーム212は、メモリアドレス変換の特定のセットを使用するメモリ操作のセットを表す。ストリームは、特定のクライアント202を一意に識別するクライアント識別子214と、ストリーム212の開始仮想メモリアドレス及び終了仮想メモリアドレスを定義する仮想アドレス範囲216と、によって定義される。ストリームに関連する変換メモリ218は、当該ストリーム212に関連付けられたクライアント202が使用するための変換を記憶するメモリ要素を含む。
【0021】
一例では、ストリーム212は、カメラセンサに関連するバッファ内のデータを読み出し、そのデータをシステムメモリ104に書き込むためのメモリ操作のセットを含む。このデータを読み出し及び書き込み可能にする前に、そのデータを参照する仮想メモリアドレスのアドレス変換がメモリ104からフェッチされ、ストリーム212に関連する変換メモリ218に記憶される。アドレス変換がフェッチされた後、クライアント202は、関連する変換メモリ218に記憶された仮想アドレスに基づいて物理アドレスを要求し、次いで、これらの変換に基づいてシステムメモリ104内のデータにアクセスすることによって、メモリアクセスを実行する。
【0022】
ストリームのためにトランスレーションルックアサイドバッファ210によってフェッチされたアドレス変換は、仮想メモリアドレス空間内で連続している(勿論、物理メモリアドレス空間内では必ずしも連続しているわけではない)。仮想メモリアドレス空間の連続部分は、アドレス変換がフェッチされる開始仮想メモリアドレス及び終了仮想メモリアドレスを定義するアドレス範囲216を介して定義される。仮想メモリアドレス空間の特定の連続セグメントのメモリ操作(読み出し又は書き込み等)を開始する前に、クライアント202は、仮想メモリアドレス空間の連続部分のアドレス変換をTLB210内の変換メモリ218にプリフェッチさせるストリームを初期化するように、TLB210に明示的に要求する。TLB210は、ストリームを初期化すると、初期化が完了したことをクライアント202に通知する。このとき、クライアント202は、仮想アドレスに基づくメモリ204へのアクセス要求をメモリ管理コントローラ120に送信することによってメモリ操作を実行し、メモリ管理コントローラ120は、TLB210に記憶された変換を使用して、クライアント202に要求された操作を実行する。クライアント202がストリーム内を進むにつれて、TLB210は、ストリーム内の次のアクセスのためにアドレス変換のプリフェッチを継続し、プリフェッチの深さによって指定された変換の数によってクライアント202より先行することを試みる。TLB210は、ストリーム内の次のアドレスの変換を書き込むために、既に使用された変換を上書きする。クライアントがストリームを終了した後、クライアント202は、ストリーム212の情報を記憶するために使用されたデータ構造を他のストリーム212用に使用することができるように、ストリーム212の無効化を要求する。
【0023】
TLB210は、特定の期間内に(例えば、同時に又はほぼ同時に)複数のストリーム212のメモリアドレス変換をフェッチすることができる。したがって、TLB210は、ページテーブル206をプローブして異なるストリーム212のメモリアドレス変換を得ることができる複数のフェッチハードウェアリソースを含む。
【0024】
図3は、一例による、クライアント202、TLB210、ページテーブル206及びメモリ204の動作の詳細を示す図である。クライアント202は、メモリにアクセスするために、ストリーム設定要求302をTLB210に送信する。ストリーム設定要求302は、変換が所望される仮想メモリアドレスの範囲を指定する。TLB210は、ストリーム設定要求に応じて、トランザクション304において、ページテーブル206からの変換を要求する(これは、変換キャッシュ階層でTLB210よりも高い1つ以上のキャッシュ(例えば、レベル2アドレス変換キャッシュ等)を介して発生する場合がある)。ページテーブル206は、この変換の要求に応じて、トランザクション306において、要求された変換をTLB210に提供し、TLB210は、特定のストリーム212(ここでも、ストリーム212は、クライアントID214及びアドレス範囲216によって定義される)に関連する変換メモリ218に変換を記憶する。変換メモリ218は、ストリーム212の全ての変換を記憶するのに十分な大きさではないため、TLB210は、変換メモリ218を満たすのに十分な変換をフェッチする。その後、変換がクライアント202によって使用されると、TLB210は、新たな変換をフェッチし、先入れ先出し方式で古い変換を置き換える。この連続的なプリフェッチは、ストリーム212について指定された仮想メモリアドレス範囲を通して、単調に増加する方法で順次行われる。
【0025】
TLB210は、ページテーブル206から特定のストリーム212の初期アドレス変換を受信すると、トランザクション308において、ストリームが初期化されたことを示す確認応答メッセージをクライアント202に送信する。クライアント202は、この確認応答に応じて、トランザクション310において、変換がTLB210に現在記憶されている仮想アドレスによって参照されるデータへのアクセスを要求する。メモリ管理コントローラ120は、これに応じて、TLB210に現在記憶されているエントリを介して仮想アドレスを変換し、トランザクション312において、変換されたアドレスに基づいてメモリ204内のデータにアクセスする。メモリ204は、トランザクション314において、要求された動作を実行し、及び/又は、要求されたデータをクライアント202に提供する。TLB210は、トランザクション316において、ストリームを進めるために新たな変換をプリフェッチする。具体的には、TLB210が、トランザクション310において、メモリアクセス要求のための変換を実行した後、これらの変換はクライアント202にとって不要となる。したがって、TLB210は、新たな変換をフェッチしてストリーム212を進める。フェッチされた新たな変換は、直前に実行されたメモリアクセスに関連するメモリアドレスの直後のメモリアドレスの変換である。トランザクション318において、ページテーブル206は、要求された変換をTLB210内に記憶するために提供し、古い変換を先入れ先出し方式で置き換える。トランザクション310~318は、クライアント202がストリーム212を終了するまでループする。クライアントが、ストリーム212について指定された仮想メモリアドレスの範囲のデータにアクセスした場合、又は、ストリーム212が完了したことを示す何らかの他のイベントが発生した場合に、クライアントはストリーム212を終了する。ストリームが完了した後、クライアント202は、トランザクション320において、ストリームの無効化を要求する。この無効化トランザクションは、アドレス範囲、クライアント識別子及び変換等のストリームのデータを無効化し、当該データをTLB210内に記憶するメモリを別のストリーム212用に使用できるようにする。
【0026】
図3に示す動作のシーケンスは、プロセッサ102によって行われるような、より「ランダムアクセス」パターンを示すメモリアクセス要求を処理するメモリ管理ユニット(MMU)に関連するトランスレーションルックアサイドバッファ等のように、仮想メモリアドレス空間の連続ストリームを提供しないトランスレーションルックアサイドバッファに使用されるものとは異なる。具体的には、このようなTLBは、(プロセッサ102等の)クライアントと直接通信するのではなく、MMUによって行われる仮想メモリアドレス変換のためのキャッシュとして単に機能する。このような状況では、クライアントは、メモリにアクセスするために、特定の仮想メモリアドレスに基づくメモリへのアクセスを、MMUを介して単に要求する。MMUは、これに応じて、利用可能であれば、TLBに記憶された変換を使用し、必要に応じてアドレス変換キャッシュ階層を上がり、必要な変換が何れのアドレス変換キャッシュ階層レベルにも記憶されていない場合には最終的にページテーブルウォークを実行して、仮想メモリアドレスを変換する。MMUは、クライアントによって指定された仮想メモリアドレスの変換を取得すると、メモリアドレスを物理メモリアドレスに変換し、要求されたメモリアクセスを実行し、データ及び/又はアクセスの確認応答をクライアントに返す。このようなTLB及びメモリアクセスパターンでは、クライアントは、プリフェッチストリームの初期化を要求せず、プリフェッチストリームが初期化されたという確認応答を受信せず、アクセスを実行する前にストリーム初期化の完了の確認応答を待機しない。代わりに、クライアントは、実際にTLBに記憶されている内容に関係なく、メモリアクセス要求のみを行う。本明細書で説明するように、高性能アプリケーションの場合、このようなタイプのアクセスパターンに関連するTLBのミスは、許容できないメモリアクセスレイテンシをもたらす可能性がある。
【0027】
図4A図4Bは、実施例による、TLB210のさらなる態様を示す図である。図4Aは、異なるストリーム212についてTLB210に記憶されたエントリ402の編成例を示している。各エントリ402は、変換記憶の単位を表し、1つ以上の変換を含むことができる。いくつかの実施態様では、各エントリ402は、同じ数の変換を記憶する。TLB210内では、各ストリーム212には特定の数のエントリ402が割り当てられており、これらのエントリは、まとめて変換メモリ218を構成する。クライアントが特定のストリーム212のプリフェッチを要求したことに応じて、TLB210は、当該ストリーム212にエントリ402を割り当て、要求された変換を、当該ストリーム212に割り当てられたエントリ402にフェッチする。クライアント202がエントリの無効化を要求したことに応じて(クライアントが、特定のストリーム212の変換によって指定された物理メモリアドレスに対するメモリアクセスを実行した後)、TLB210は、エントリ402を無効化し、後で、無効化されたエントリ402を新たなストリーム212に割り当てることができる。
【0028】
図4Bは、一例による、TLB210に関連するさらなる動作を示す図である。キャッシュは、置換ポリシーを使用して、エントリ402のセット内の何れの特定のエントリ402を、新たなキャッシュデータのために上書きするかを決定する。本明細書に記載のTLB210は、最長未使用時間(least-recently-used)置換ポリシー等のようにより複雑なものではなく、単純な先入れ先出し方式の置換ポリシーを使用する。具体的には、何れの特定のストリーム212も、どのような変換が必要であるかをTLB210に明示的に指示するので、最も単純な置換ポリシー(すなわち、TLB210が、ストリーム212に割り当てられたエントリ402を循環バッファとして扱う置換ポリシー)で十分である。エントリ402を循環バッファとして扱うことは、TLB210が、連続的な方法でエントリを書き込み、最後のエントリ402が特定の変換メモリ218に書き込まれた場合に、かかるメモリの最初に「ラップアラウンド」することを意味する。
【0029】
また、アクセスの連続性のために、TLB210は、「オーバーフェッチ」を使用してページテーブル206から変換をフェッチし、要求された変換をTLB210に記憶するために、実行される動作の数を減らす。具体的には、異なるエントリが非連続な仮想メモリアドレスの変換を記憶するTLBでは、単一の変換に必要なデータ量よりも多いデータ量に対してメモリ要求及びアクセスがコンピュータシステム内で発生するという事実のために、ページテーブル206から変換を取得する動作は、通常、複数の変換用のデータを取得する。この過剰な取得によって「オーバーフェッチ」が発生し、フェッチされたデータの多くが破棄される。本明細書に記載されたTLB210では、変換が仮想アドレス空間の連続部分に対するものであるため、それ以外の場合には、オーバーフェッチをもたらすフェッチは、代わりにメモリの連続部分に対する複数の変換の取得を単にもたらす。したがって、単一の変換以外の全てのデータを破棄する代わりに、TLB210は、単一のフェッチ操作で取得されたより多くの変換を保持することができる。この方法で変換を保持すると、特定の数の変換を取得するために必要なフェッチ操作の数が減少する。
【0030】
また、図4Bは、特定のエントリ402のセットがプリフェッチされる一方で、異なるエントリ402のセットがメモリアクセスのための変換に使用される「ダブルバッファリング」操作を示している。具体的には、操作のレイテンシを減らし、変換が利用可能であることを保証するために、TLB210は、単一のストリームに対して2つの異なる変換メモリ218を使用する。第1変換メモリ218が、ページテーブル206から変換をフェッチする一方で、第2変換メモリ218が、メモリアドレスの変換を実行するためにクライアント202によって使用される。図4Bでは、ストリーム1 212(1)がプリフェッチに使用され、ストリーム2 212(2)が変換に使用される。TLB210が単一の変換メモリ218を満たした場合、当該変換メモリ218内の変換がクライアント202に利用可能となり、TLB210は、他の変換メモリ218用の変換のフェッチを開始する。クライアント202が第1変換メモリ218を介してメモリにアクセスする間、変換が第2変換メモリ218にフェッチされる。2つの変換メモリ218の役割は、クライアント202が、第1変換メモリ218に記憶された変換に関するメモリアクセスの実行を終了したときに切り替えられる。
【0031】
図5は、一例による、メモリアドレス変換をプリフェッチし、これらの変換を使用してメモリに記憶されたデータにアクセスする方法500のフロー図である。図1図3及び図4A図4Bに関連して図示及び説明したシステムに関して説明されているが、技術的に実行可能な任意の順序で方法を実行するように構成された任意のシステムが本発明の範囲内にあることを理解されたい。
【0032】
方法500は、ステップ502で開始し、クライアント202は、一連の連続する仮想メモリアドレスに対するアドレス変換のために、プリフェッチストリーム212の初期化を要求する。要求は、仮想メモリアドレス範囲を定義する開始仮想アドレス及び終了仮想アドレスを含む。クライアント202は、これらのプリフェッチを要求する際に、プリフェッチされているアドレス変換を使用して、メモリ204からデータを読み出す準備をしている。プリフェッチを明示的に要求することで、このようなプリフェッチがない場合に発生する可能性のあるTLB内のキャッシュミスに関連するレイテンシを回避することができる。
【0033】
ステップ504において、TLB210は、プリフェッチストリームを初期化する要求に応じて、要求された変換をページテーブル206からフェッチし、当該変換をTLB210に記憶する。フェッチされたアドレス変換が、連続する仮想メモリアドレスに対するものであり、連続する仮想メモリアドレスに対する変換が、少なくとも部分的に連続してページテーブル206に記憶されていることから、TLB210は、アドレス変換をフェッチする要求が複数の変換をフェッチするオーバーフェッチを有利に使用することができる。ステップ506において、TLB210は、要求された変換を記憶した後、要求された変換がTLB210に記憶されているという確認応答を、プリフェッチ要求を行ったクライアント202に送信する。ステップ508において、クライアント202は、これに応じて、フェッチされた変換の仮想アドレスによって参照されるデータに対してメモリアクセスを実行する。これらのメモリアクセスは、仮想アドレス及びアクセスタイプ(例えば、読み出し、書き込み等)をメモリ管理コントローラ120に提供することを含み、メモリ管理コントローラ120は、TLB210で変換を検索する。TLB210内で(プリフェッチのためにTLBに記憶されている)変換が見つかると、メモリ管理コントローラ120は、変換によって指定された物理アドレスを取得し、指定されたメモリにアクセスする。ステップ510において、TLB210は、ストリームが完了したかどうかを判別する。クライアント202が、ストリーム212について指定された範囲内の全てのメモリにアクセスした場合に、ストリームが完了する。ストリームが完了すると、方法はステップ514に進み、クライアント202はストリームを無効にする。ストリームが完了していない場合、方法はステップ512に進む。ステップ512において、TLB210は、ストリーム212の次の部分の変換をプリフェッチする。図5では特定のシーケンスで示されているが、ステップ508,510,512は、「重複期間」で発生し得る。例えば、TLB210がストリームの次の部分の変換をプリフェッチする間、クライアント202は、(例えば、上述したダブルバッファリング方式で)ストリームの既にフェッチされた部分を使用してメモリアクセスを実行する。
【0034】
異なるタイプのクライアントの例示的なアクセスパターンを簡単に説明する。グラフィックス処理ユニット(GPU)は、3次元グラフィックスレンダリング(汎用の単一命令多重データベースの計算)に関連するデータをフェッチし、そのデータを処理して、レンダリングされた画像又は他の結果を出力する。多くの場合、GPUによってアクセスされるデータは、連続して仮想的にアドレス指定されたメモリの大部分に含まれる。このような状況では、GPUは、単調に増加する仮想アドレス順でデータにアクセスする。GPUは、このようなアクセスのために、上述したストリーミング技術を使用する。
【0035】
ビデオエンコーダ及びビデオデコーダは、連続して仮想的にアドレス指定されたアドレスの大部分にアクセスする。ビデオエンコーダは、1つのフォーマットのビデオデータを取得し、そのビデオデータを符号化して符号化ビデオを提供し、そのビデオを出力する。ビデオデコーダは、符号化ビデオデータを取得し、そのビデオデータに対して復号化を行い、復号化されたビデオを出力する。GPUと同様に、ビデオエンコーダ及びビデオデコーダは、データの大部分を処理し、そのデータについての変換をプリフェッチするためのストリーム212を生成する。
【0036】
メモリに記憶されたデータにアクセスする方法が提供される。方法は、クライアントのためのTLBプリフェッチストリームを初期化することを含み、初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をTLBにフェッチするプリフェッチ操作を実行することを含む。また、方法は、変換がTLBに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求をクライアントから受信することを含む。さらに、方法は、変換に基づいて、仮想アドレスを物理アドレスに変換することを含む。また、方法は、メモリアクセス要求及び物理アドレスに基づいてメモリにアクセスすることを含む。
【0037】
メモリシステムも提供される。メモリシステムは、1つ以上のメモリと、1つ以上のメモリに記憶されたページテーブルと、TLBを含むメモリ管理コントローラと、を含む。メモリ管理コントローラは、クライアントのTLBプリフェッチストリームを初期化するように構成されており、初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をページテーブルからTLBへフェッチするプリフェッチ操作を実行することを含む。メモリ管理コントローラは、変換がTLBに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求をクライアントから受信するように構成されている。メモリ管理コントローラは、変換に基づいて、仮想アドレスを物理アドレスに変換するように構成されている。メモリ管理コントローラは、メモリアクセス要求及び物理アドレスに基づいてメモリにアクセスするように構成されている。
【0038】
コンピュータシステムが提供される。コンピュータシステムは、クライアントと、メモリシステムと、を含む。メモリシステムは、1つ以上のメモリと、1つ以上のメモリに記憶されたページテーブルと、TLBを含むメモリ管理コントローラと、を含む。メモリ管理コントローラは、クライアントのTLBプリフェッチストリームを初期化するように構成されており、初期化することは、仮想メモリアドレスから物理メモリアドレスへの変換をページテーブルからTLBへフェッチするプリフェッチ操作を実行することを含む。メモリ管理コントローラは、変換がTLBに記憶されている仮想アドレスに記憶されたデータにアクセスするためのメモリアクセス要求をクライアントから受信するように構成されている。メモリ管理コントローラは、変換に基づいて、仮想アドレスを物理アドレスに変換するように構成されている。メモリ管理コントローラは、メモリアクセス要求及び物理アドレスに基づいてメモリにアクセスするように構成されている。
【0039】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素は、特定の組み合わせで上述したように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
【0040】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【0041】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD-ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。
図1
図2
図3
図4A
図4B
図5