(57)【特許請求の範囲】
【請求項１】
パーティショニングされたトランスレーションキャッシュを提供するためのメモリ管理ユニット(MMU)を備える装置であって、
それぞれが1つのアドレス変換マッピングを規定する複数のトランスレーションキャッシュエントリを提供するように構成されるトランスレーションキャッシュと、
前記トランスレーションキャッシュの対応する複数のパーティションを規定する複数のパーティションディスクリプタを提供するように構成されるパーティションディスクリプタテーブルであって、前記複数のパーティションの各パーティションは、前記複数のトランスレーションキャッシュエントリのうちの1つまたは複数のトランスレーションキャッシュエントリを含む、パーティションディスクリプタテーブルと、
パーティションリマッピングテーブルを備えるパーティション変換回路であって、
前記パーティションリマッピングテーブルは、それぞれが出力トランスレーションキャッシュパーティション識別子(TCPID)への入力TCPIDのリマッピングを規定する複数のリマッピングエントリを与えるように構成され、前記パーティション変換回路は、
要求元からメモリアクセス要求を受信し、
前記メモリアクセス要求の前記入力TCPIDを決定し、
前記複数のリマッピングエントリのうちの1つのリマッピングエントリを識別することによって前記出力TCPIDを決定し、
前記出力TCPIDに基づいて前記複数のパーティションのうちの1つまたは複数のパーティションを識別し、
前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行する
ように構成されるパーティション変換回路と
を備える、装置。
【請求項２】
前記パーティションディスクリプタテーブルは、前記複数のパーティションディスクリプタを与えるように構成され、各パーティションディスクリプタは、
前記パーティションディスクリプタによって規定される対応するパーティションの開始トランスレーションキャッシュエントリへの開始ポインタと、
前記対応するパーティションの終了トランスレーションキャッシュエントリへの終了ポインタと
を含む、請求項1に記載の装置。
【請求項３】
前記パーティションディスクリプタテーブルは、前記複数のパーティションディスクリプタを与えるように構成され、各パーティションディスクリプタは、
前記パーティションディスクリプタによって規定される対応するパーティションの開始トランスレーションキャッシュエントリへの開始ポインタと、
前記対応するパーティションの前記1つまたは複数のトランスレーションキャッシュエントリのカウントを示すカウント指示子と
を含む、請求項1に記載の装置。
【請求項４】
前記パーティション変換回路は、前記メモリアクセス要求の属性に基づいて、前記出力TCPIDを導出することによって前記出力TCPIDを決定するように構成される、請求項1に記載の装置。
【請求項５】
前記パーティション変換回路は、前記メモリアクセス要求によって与えられる要求元供給TCPIDを検索することによって前記出力TCPIDを決定するように構成される、請求項1に記載の装置。
【請求項６】
前記メモリアクセス要求は、前記要求元のソースタイプを示すソース指示子を含み、
前記パーティション変換回路は、前記ソース指示子に基づいて前記出力TCPIDを導出することによって、前記出力TCPIDを決定するように構成される、
請求項1に記載の装置。
【請求項７】
それぞれが探索制御指示子および削除制御指示子のうちの少なくとも1つを規定し、かつそれぞれが前記複数のパーティションのうちの1つまたは複数のパーティションに対応する、複数のパーティション選択エントリを含むパーティション選択テーブルをさらに備え、
前記パーティション変換回路は、前記複数のパーティション選択エントリのうちの1つのパーティション選択エントリに基づいて、前記複数のパーティションのうちの前記1つまたは複数のパーティションを識別するように構成される、
請求項1に記載の装置。
【請求項８】
前記パーティション変換回路は、前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリが、前記1つまたは複数のパーティションのための前記パーティション選択エントリの前記探索制御指示子に基づいて探索するために選択するのにふさわしいことを決定することによって、前記キャッシュ動作を実行するように構成される、請求項7に記載の装置。
【請求項９】
前記パーティション変換回路は、前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリが、前記1つまたは複数のパーティションのための前記パーティション選択エントリの前記削除制御指示子に基づいて削除するために選択するのにふさわしいことを決定することによって、前記キャッシュ動作を実行するように構成される、請求項7に記載の装置。
【請求項１０】
集積回路(IC)に組み込まれる、請求項1に記載の装置。
【請求項１１】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイル電話、セルラー電話、コンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、ビデオプレーヤからなるグループから選択されたデバイスに組み込まれる、請求項1に記載の装置。
【請求項１２】
メモリ管理ユニット(MMU)であって、
それぞれが1つのアドレス変換マッピングを規定する複数のトランスレーションキャッシュエントリを提供するための手段と、
前記MMUのトランスレーションキャッシュの対応する複数のパーティションを規定する複数のパーティションディスクリプタを提供するための手段であって、前記複数のパーティションの各パーティションは、前記複数のトランスレーションキャッシュエントリのうちの1つまたは複数のトランスレーションキャッシュエントリを含む、手段と、
要求元からメモリアクセス要求を受信するための手段と、
前記メモリアクセス要求の入力トランスレーションキャッシュパーティション識別子(TCPID)を決定するための手段と、
それぞれが出力TCPIDへの入力TCPIDのリマッピングを規定する、複数のリマッピングエントリの中の1つのリマッピングエントリを識別することによって前記出力TCPIDを決定するための手段と、
前記出力TCPIDに基づいて前記複数のパーティションのうちの1つまたは複数のパーティションを識別するための手段と、
前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行するための手段と
を備える、メモリ管理ユニット(MMU)。
【請求項１３】
パーティショニングされたトランスレーションキャッシュを提供するための方法であって、
メモリ管理ユニット(MMU)によって、要求元からメモリアクセス要求を受信するステップと、
前記メモリアクセス要求の入力トランスレーションキャッシュパーティション識別子(TCPID)を決定するステップと、
それぞれが出力TCPIDへの入力TCPIDのリマッピングを規定する、複数のリマッピングエントリの中の1つのリマッピングエントリを識別することによって前記出力TCPIDを決定するステップと、
前記出力TCPIDに基づいて前記MMUのトランスレーションキャッシュの複数のパーティションのうちの1つまたは複数のパーティションを識別するステップと、
前記1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行するステップと
を含む、方法。
【請求項１４】
前記複数のパーティションのうちの前記1つまたは複数のパーティションを識別するステップは、対応する複数のパーティションディスクリプタにさらに基づき、各パーティションディスクリプタは、
前記パーティションディスクリプタによって規定される対応するパーティションの開始トランスレーションキャッシュエントリへの開始ポインタと、
前記対応するパーティションの終了トランスレーションキャッシュエントリへの終了ポインタと
を含む、請求項13に記載の方法。
【請求項１５】
前記複数のパーティションのうちの前記1つまたは複数のパーティションを識別するステップは、対応する複数のパーティションディスクリプタにさらに基づき、各パーティションディスクリプタは、
前記パーティションディスクリプタによって規定される対応するパーティションの開始トランスレーションキャッシュエントリへの開始ポインタと、
前記対応するパーティションの前記1つまたは複数のトランスレーションキャッシュエントリのカウントを示すカウント指示子と
を含む、請求項13に記載の方法。
【請求項１６】
前記出力TCPIDを決定するステップは、前記メモリアクセス要求の属性に基づいて前記出力TCPIDを導出するステップを含む、請求項13に記載の方法。
【請求項１７】
前記出力TCPIDを決定するステップは、前記メモリアクセス要求によって与えられる要求元供給TCPIDを検索するステップを含む、請求項13に記載の方法。
【請求項１８】
前記メモリアクセス要求は、前記要求元のソースタイプを示すソース指示子を含み、
前記出力TCPIDを決定するステップは、前記ソース指示子に基づいて前記出力TCPIDを導出するステップを含む、
請求項13に記載の方法。
【請求項１９】
それぞれが探索制御指示子および削除制御指示子のうちの少なくとも1つを規定し、かつそれぞれが前記複数のパーティションのうちの1つまたは複数のパーティションに対応する、複数のパーティション選択エントリのうちの1つのパーティション選択エントリに基づいて、前記複数のパーティションのうちの前記1つまたは複数のパーティションを識別するステップをさらに含む、請求項13に記載の方法。
【請求項２０】
前記1つまたは複数のパーティションのための前記パーティション選択エントリに基づいて前記キャッシュ動作を実行するステップは、前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリが、前記1つまたは複数のパーティションのための前記パーティション選択エントリの前記探索制御指示子に基づいて探索するために選択するのにふさわしいことを決定するステップを含む、請求項19に記載の方法。
【請求項２１】
前記1つまたは複数のパーティションのための前記パーティション選択エントリに基づいて前記キャッシュ動作を実行するステップは、前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリが、前記1つまたは複数のパーティションのための前記パーティション選択エントリの前記削除制御指示子に基づいて削除するために選択するのにふさわしいことを決定するステップを含む、請求項19に記載の方法。
【請求項２２】
コンピュータ実行可能命令を記憶した非一時的コンピュータ可読記録媒体であって、前記コンピュータ実行可能命令が、プロセッサによって実行されるとき、前記プロセッサに、
要求元からメモリアクセス要求を受信させ、
前記メモリアクセス要求の入力トランスレーションキャッシュパーティション識別子(TCPID)を決定させ、
それぞれが出力TCPIDへの入力TCPIDのリマッピングを規定する、複数のリマッピングエントリの中の1つのリマッピングエントリを識別することによって前記出力TCPIDを決定させ、
前記出力TCPIDに基づいてメモリ管理ユニット(MMU)のトランスレーションキャッシュの複数のパーティションのうちの1つまたは複数のパーティションを識別させ、
前記1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行させる、
非一時的コンピュータ可読記録媒体。
【請求項２３】
前記プロセッサによって実行されるときに、前記プロセッサに、対応する複数のパーティションディスクリプタに基づいて前記複数のパーティションのうちの前記1つまたは複数のパーティションをさらに識別させるコンピュータ実行可能命令を記憶し、各パーティションディスクリプタは、
前記パーティションディスクリプタによって規定される対応するパーティションの開始トランスレーションキャッシュエントリへの開始ポインタと、
前記対応するパーティションの終了トランスレーションキャッシュエントリへの終了ポインタと
を含む、請求項22に記載の非一時的コンピュータ可読記録媒体。
【請求項２４】
前記プロセッサによって実行されるときに、前記プロセッサに、対応する複数のパーティションディスクリプタに基づいて前記複数のパーティションのうちの前記1つまたは複数のパーティションをさらに識別させるコンピュータ実行可能命令を記憶し、各パーティションディスクリプタは、
前記パーティションディスクリプタによって規定される対応するパーティションの開始トランスレーションキャッシュエントリへの開始ポインタと、
前記対応するパーティションの前記1つまたは複数のトランスレーションキャッシュエントリのカウントを示すカウント指示子と
を含む、請求項22に記載の非一時的コンピュータ可読記録媒体。
【請求項２５】
前記プロセッサによって実行されるときに、前記プロセッサに、前記メモリアクセス要求の属性に基づいて前記出力TCPIDを導出することによって、前記出力TCPIDをさらに決定させるコンピュータ実行可能命令を記憶する、請求項22に記載の非一時的コンピュータ可読記録媒体。
【請求項２６】
前記プロセッサによって実行されるときに、前記プロセッサに、前記メモリアクセス要求によって与えられる要求元供給TCPIDを検索することによって前記出力TCPIDをさらに決定させるコンピュータ実行可能命令を記憶する、請求項22に記載の非一時的コンピュータ可読記録媒体。
【請求項２７】
前記プロセッサによって実行されるときに、前記プロセッサに、前記要求元のソースタイプを示す前記メモリアクセス要求のソース指示子に基づいて前記出力TCPIDを導出することによって前記出力TCPIDをさらに決定させるコンピュータ実行可能命令を記憶する、請求項22に記載の非一時的コンピュータ可読記録媒体。
【請求項２８】
前記プロセッサによって実行されるときに、前記プロセッサに、それぞれが探索制御指示子および削除制御指示子のうちの少なくとも1つを規定し、かつそれぞれが前記複数のパーティションのうちの1つまたは複数のパーティションに対応する、複数のパーティション選択エントリのうちの1つのパーティション選択エントリに基づいて、前記複数のパーティションのうちの前記1つまたは複数のパーティションをさらに識別させるコンピュータ実行可能命令を記憶する、請求項22に記載の非一時的コンピュータ可読記録媒体。
【請求項２９】
前記プロセッサによって実行されるときに、前記プロセッサに、前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリが、前記1つまたは複数のパーティションのための前記パーティション選択エントリの前記探索制御指示子に基づいて探索するために選択するのにふさわしいことを決定することによって、前記1つまたは複数のパーティションのための前記パーティション選択エントリに基づいて前記キャッシュ動作をさらに実行させるコンピュータ実行可能命令を記憶する、請求項28に記載の非一時的コンピュータ可読記録媒体。
【請求項３０】
前記プロセッサによって実行されるときに、前記プロセッサに、前記1つまたは複数のパーティションの前記1つまたは複数のトランスレーションキャッシュエントリが、前記1つまたは複数のパーティションのための前記パーティション選択エントリの前記削除制御指示子に基づいて削除するために選択するのにふさわしいことを決定することによって、前記1つまたは複数のパーティションのための前記パーティション選択エントリに基づいて前記キャッシュ動作をさらに実行させるコンピュータ実行可能命令を記憶する、請求項28に記載の非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、参照によりその全体が本明細書に組み込まれる、2015年5月29日に出願された、"PROVIDING MEMORY MANAGEMENT UNIT (MMU) PARTITIONED TRANSLATION CACHES, AND RELATED APPARATUSES, METHODS, AND COMPUTER-READABLE MEDIA"と題する、米国特許出願第14/725,882号の優先権を主張する。
【０００２】
本開示の技術は一般に、メモリ管理ユニット(MMU)によって提供されるトランスレーションキャッシュに関する。
【背景技術】
【０００３】
仮想メモリは、最新のコンピューティングシステムによって提供されるメモリ管理技法である。仮想メモリを使用するとき、コンピューティングデバイスの中央処理ユニット(CPU)または周辺デバイスが、物理メモリ空間内の物理メモリアドレスにマッピングされる仮想メモリアドレスを用いて、メモリバッファにアクセスする場合がある。このようにして、CPUまたは周辺デバイスは、そうでない場合に可能であった物理アドレス空間より大きな物理アドレス空間をアドレス指定できる場合があり、および/または物理メモリ空間にわたって実際には物理的に連続していないメモリバッファを連続的な観点で利用することができる。
【０００４】
仮想メモリは、従来、仮想メモリアドレスを物理メモリアドレスに変換するためのメモリ管理ユニット(MMU)の使用を通して実現されてきた。MMUは、コンピューティングシステムのCPUの中に組み込まれる場合があるか(CPU MMU)、または周辺デバイスのためのメモリ管理機能を提供する別の回路を備える場合がある(システムMMU、またはSMMU)。従来の動作において、MMUは、非限定的な例として、ダイレクトメモリアクセス(DMA)エージェント、ビデオアクセラレータおよび/またはディスプレイエンジンのような「アップストリーム」デバイスからメモリアクセス要求を受信する。各メモリアクセス要求から、MMUはメモリアクセス要求に含まれる仮想メモリアドレスを、物理メモリアドレスに変換し、その後メモリアクセス要求は、変換された物理メモリアドレスを用いて処理される。
【０００５】
MMUは、短い時間間隔内で同じ仮想メモリアドレスを繰返し変換するように要求される場合があるので、MMU内にアドレス変換データをキャッシュすることによって、MMUおよびコンピューティングシステムの性能が全体として改善される場合がある。この関連で、MMUは、(トランスレーションルックアサイドバッファ、すなわち、TLBとも呼ばれる)トランスレーションキャッシュとして知られている構造を含む場合がある。トランスレーションキャッシュは、トランスレーションキャッシュエントリを提供し、その中に、後にアクセスするために、あらかじめ生成された仮想/物理メモリアドレス変換マッピングが記憶される場合がある。MMUがその後、トランスレーションキャッシュ内に記憶された仮想メモリアドレスの変換要求を受信する場合には、MMUは、仮想メモリアドレスを再変換するのではなく、トランスレーションキャッシュから対応する物理メモリアドレスを検索する場合がある。
【０００６】
しかしながら、MMUが複数のアップストリームデバイスのためのアドレス変換サービスを提供するシナリオでは、トランスレーションキャッシュの使用を通して達成される性能上の利点は失われる場合がある。アップストリームデバイスは、MMUのトランスレーションキャッシュのリソースを共有しなければならないので、限られた数のトランスレーションキャッシュエントリを巡って競合する結果として、2つ以上のアップストリームデバイスが、自らが有利になるように、他のトランスレーションキャッシュエントリを繰返し削除するという「スラッシング」が生じる場合がある。最悪のシナリオでは、スラッシングから生じるさらなるオーバーヘッドが、キャッシングの利点を相殺する場合がある。より大きなトランスレーションキャッシュは、トランスレーションキャッシュエントリを巡るデバイス間競合の影響を軽減する場合があるが、結果として、消費電力が増加し、物理的フットプリントが拡大する場合もある。
【発明の概要】
【課題を解決するための手段】
【０００７】
詳細な説明において開示される態様は、メモリ管理ユニット(MMU)パーティショニングされたトランスレーションキャッシュ、ならびに関連する装置、方法およびコンピュータ可読媒体を提供することを含む。この関連で、トランスレーションキャッシュパーティショニングを可能にするためのMMUが提供される。MMUは、トランスレーションキャッシュエントリを提供するトランスレーションキャッシュを含み、各エントリは、先行するアドレス変換動作によって決定された仮想/物理アドレスマッピングを記憶する。パーティショニングを可能にするために、MMUはパーティションディスクリプタテーブルと、オプションでパーティションリマッピングテーブルおよび/またはパーティション選択テーブルとを提供する。パーティションディスクリプタテーブルは、トランスレーションキャッシュの1つまたは複数のトランスレーションキャッシュエントリを含むパーティションをそれぞれ規定するパーティションディスクリプタを含む。要求元からメモリアクセス要求を受信すると、MMUのパーティション変換回路が、メモリアクセス要求のトランスレーションキャッシュパーティション識別子(TCPID)を決定し、TCPIDに基づいてパーティションのうちの1つまたは複数を識別する。いくつかの態様において、TCPIDを決定することは、メモリアクセス要求のTCPIDを出力TCPIDに関連付けられる入力TCPIDとして特定するために、パーティションリマッピングテーブルを使用することを含む場合がある。その後、パーティション選択テーブルを用いて1つまたは複数のパーティションを識別するために、出力TCPIDがさらに使用される場合がある。1つまたは複数のパーティションが識別されると、1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対して、キャッシュ動作(たとえば、キャッシュ探索動作および/またはキャッシュ削除動作)が実行される。このようにして、MMUのトランスレーションキャッシュは、複数の要求元の中で実質的にパーティショニングされる場合があり、結果として、トランスレーションキャッシュエントリを巡る要求元間の競合が削減される。
【０００８】
一態様において、パーティショニングされたトランスレーションキャッシュを提供するためのMMUを備える装置が提供される。MMUは、それぞれが1つのアドレス変換マッピングを規定する複数のトランスレーションキャッシュエントリを提供するように構成されるトランスレーションキャッシュを備える。MMUは、トランスレーションキャッシュの対応する複数のパーティションを規定する複数のパーティションディスクリプタを提供するように構成されるパーティションディスクリプタテーブルをさらに備え、複数のパーティションの各パーティションはまた、複数のトランスレーションキャッシュエントリのうちの1つまたは複数のトランスレーションキャッシュエントリを含む。MMUはまた、パーティション変換回路を備える。パーティション変換回路は、要求元からメモリアクセス要求を受信するように構成される。パーティション変換回路は、メモリアクセス要求のトランスレーションキャッシュパーティション識別子(TCPID)を決定するようにさらに構成される。パーティション変換回路はまた、TCPIDに基づいて複数のパーティションのうちの1つまたは複数のパーティションを識別するように構成される。パーティション変換回路は、1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行するようにさらに構成される。
【０００９】
別の態様において、MMUが提供される。MMUは、それぞれが1つのアドレス変換マッピングを規定する複数のトランスレーションキャッシュエントリを提供するための手段を備える。MMUは、トランスレーションキャッシュの対応する複数のパーティションを規定する複数のパーティションディスクリプタを提供するための手段をさらに備え、複数のパーティションの各パーティションは、複数のトランスレーションキャッシュエントリのうちの1つまたは複数のトランスレーションキャッシュエントリを含む。MMUはまた、要求元からのメモリアクセス要求を受信するための手段を備える。MMUは、メモリアクセス要求のTCPIDを決定するための手段をさらに備える。MMUは、TCPIDに基づいて複数のパーティションのうちの1つまたは複数のパーティションを識別するための手段をさらに備える。MMUはまた、1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行するための手段を備える。
【００１０】
別の態様において、パーティショニングされたトランスレーションキャッシュを提供するための方法が提供される。本方法は、MMUによって、要求元からのメモリアクセス要求を受信することを含む。本方法は、メモリアクセス要求のTCPIDを決定することをさらに含む。本方法はまた、TCPIDに基づいてMMUのトランスレーションキャッシュの複数のパーティションのうちの1つまたは複数のパーティションを識別することを含む。本方法はまた、1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行することを含む。
【００１１】
別の態様において、コンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。プロセッサによって実行されるときに、コンピュータ実行可能命令は、プロセッサに、要求元からメモリアクセス要求を受信させる。コンピュータ実行可能命令は、プロセッサに、メモリアクセス要求のTCPIDをさらに決定させる。コンピュータ実行可能命令はまた、プロセッサに、TCPIDに基づいてMMUのトランスレーションキャッシュの複数のパーティションのうちの1つまたは複数のパーティションを識別させる。コンピュータ実行可能命令は、プロセッサに、1つまたは複数のパーティションの1つまたは複数のトランスレーションキャッシュエントリのうちの1つのトランスレーションキャッシュエントリに対してキャッシュ動作をさらに実行させる。
【図面の簡単な説明】
【００１２】
【図１】アップストリームデバイスから、アドレス変換サービスを提供するメモリ管理ユニット(MMU)への通信フローを示す、例示的なコンピューティングデバイスを示すブロック図である。
【図２】パーティショニングされたトランスレーションキャッシュを提供するための例示的なMMUを示すブロック図である。
【図３Ａ】トランスレーションキャッシュパーティションを規定するための図2に示されるパーティションディスクリプタの例示的な態様を示すブロック図である。
【図３Ｂ】トランスレーションキャッシュパーティションを規定するための図2に示されるパーティションディスクリプタの例示的な態様を示すブロック図である。
【図４】メモリアクセス要求と、トランスレーションキャッシュパーティション識別子(TCPID)を決定するための図2に示されるパーティション変換回路との例示的な態様を示すブロック図である。
【図５】パーティショニングされたトランスレーションキャッシュを提供するための図2のMMUの例示的な動作を示す流れ図である。
【図６Ａ】TCPIDリマッピングと、パーティション選択エントリの使用とを含む、パーティショニングされたトランスレーションキャッシュを提供するためのさらなる例示的な動作を示す流れ図である。
【図６Ｂ】TCPIDリマッピングと、パーティション選択エントリの使用とを含む、パーティショニングされたトランスレーションキャッシュを提供するためのさらなる例示的な動作を示す流れ図である。
【図６Ｃ】TCPIDリマッピングと、パーティション選択エントリの使用とを含む、パーティショニングされたトランスレーションキャッシュを提供するためのさらなる例示的な動作を示す流れ図である。
【図７】図1のMMUを含むことができる例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１３】
次に図面を参照しながら、本開示のいくつかの例示的な態様が説明される。「例示的な」という単語は、本明細書において、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。
【００１４】
本明細書において開示されるような、MMUパーティショニングされたトランスレーションキャッシュを提供するための例示的な装置および方法を論じる前に、仮想/物理メモリアドレス変換を提供する従来のコンピューティングシステムが説明される。この関連で、図1は、例示的なコンピューティングシステム100を示すブロック図であり、中央制御ユニット(CPU)MMU102がCPU104のためのアドレス変換サービスを提供し、システムMMU(SMMU)106が、アップストリームデバイス108、110および112のためのアドレス変換サービスを提供する。コンピューティングシステム100は、数ある要素の中でも、知られているデジタル論理素子、半導体回路、処理コア、および/またはメモリ構造のいずれか1つ、またはそれらの組合せを含む場合があることを理解されたい。本明細書において説明される態様は、要素の任意の特定の構成には限定されず、開示される技法は、半導体ダイまたはパッケージ上の種々の構造およびレイアウトに容易に拡張される場合がある。
【００１５】
図1に示されるように、コンピューティングデバイス100は、インターコネクト126の対応するスレーブポート(S)120、122および124にそれぞれ接続されるマスターポート(M)114、116および118を有するアップストリームデバイス108、110および112を含む。いくつかの態様において、アップストリームデバイス108、110および112はそれぞれ、非限定的な例として、ダイレクトメモリアクセス(DMA)エージェント、ビデオアクセラレータおよび/またはディスプレイエンジンのような周辺デバイスを備える場合がある。インターコネクト126は、アップストリームデバイス108、110および112からメモリアクセス要求(図示せず)を受信する場合があり、メモリアクセス要求をマスターポート(M)128から、SMMU106のスレーブポート(S)130に転送する場合がある。各メモリアクセス要求を受信した後に、SMMU106は、仮想/物理メモリアドレス変換を実行する場合があり、アドレス変換に基づいて、システムインターコネクト136を介して、メモリ132および/またはスレーブデバイス134にアクセスする場合がある。図1に示されるように、SMMU106のマスターポート(M)138は、システムインターコネクト136のスレーブポート(S)140と通信する。システムインターコネクト136は次に、マスターポート(M)142および144を介して、メモリ132およびスレーブデバイス134のそれぞれスレーブポート(S)146および148と通信する。いくつかの態様において、メモリ132および/またはスレーブデバイス134は、非限定的な例として、システムメモリ、システムレジスタおよび/またはメモリマッピング入力/出力(I/O)デバイスを含む場合がある。SMMU106はアップストリームデバイス108、110および112にサービスを提供するが、いくつかの態様は、SMMU106が、図1に示される数より多い、または少ないアップストリームデバイスにサービスを提供する場合があることを規定する場合があることを理解されたい。
【００１６】
先に言及されたように、コンピューティングシステム100はまた、その中にCPU MMU102を組み込むCPU104を含む。CPU MMU102は、SMMU106がアップストリームデバイス108、110および112にアドレス変換サービス提供するのと概ね同じようにして、CPU MMU102のCPUメモリアクセス要求(図示せず)に対してアドレス変換サービスを提供する場合がある。CPUメモリアクセス要求の仮想/物理メモリアドレス変換を実行した後に、CPU MMU102は、システムインターコネクト136を介して、メモリ132および/またはスレーブデバイス134にアクセスする場合がある。詳細には、CPU104のマスターポート(M)150が、システムインターコネクト136のスレーブポート(S)152と通信する。その後、システムインターコネクト136は、マスターポート(M)142および144を介して、メモリ132およびスレーブデバイス134のそれぞれスレーブポート(S)146および148と通信する。
【００１７】
性能を改善するために、CPU MMU102および/またはSMMU106のようなMMUは、あらかじめ生成された仮想/物理メモリアドレス変換マッピングを記憶するためのトランスレーションキャッシュ(図示せず)を提供することができる。しかしながら、SMMU106のような複数のアップストリームデバイスの中で共有されるMMUの場合、アップストリームデバイスは、トランスレーションキャッシュの限られたリソースを巡って競合するのを余儀なくされる場合がある。この結果として、アップストリームデバイスが、自らが有利になるように他のトランスレーションキャッシュエントリを繰返し削除するようなスラッシングが生じる場合がある。最悪のシナリオでは、スラッシングによって被る余分なオーバーヘッドが、トランスレーションキャッシュの利点を相殺する場合がある。
【００１８】
この関連で、パーティショニングされたトランスレーションキャッシュを提供するための例示的なMMU200を示すために、図2が提供される。いくつかの態様において、MMU200は、CPU MMU102および/またはSMMU106の代わりに、図1のコンピューティングシステム100のようなコンピューティングシステムにおいて利用される場合がある。MMU200は、トランスレーションキャッシュエントリ204(0)〜204(X)を提供するトランスレーションキャッシュ202を含む。いくつかの態様において、トランスレーションキャッシュエントリ204(0)〜204(X)はそれぞれ、非限定的な例として、仮想/物理メモリアドレス変換マッピングのようなアドレス変換マッピング(図示せず)を規定する。いくつかの態様は、トランスレーションキャッシュ202が、図2に示される数より多い、または少ないトランスレーションキャッシュエントリ204(0)〜204(X)を含む場合があることを規定する場合があることを理解されたい。トランスレーションキャッシュ202はまた、本明細書において、「それぞれがアドレス変換マッピングを規定する複数のトランスレーションキャッシュを提供するための手段」と呼ばれる場合がある。
【００１９】
MMU200は、パーティションディスクリプタテーブル206をさらに含む。パーティションディスクリプタテーブル206は、対応するパーティション210(0)〜210(N)を規定するパーティションディスクリプタ208(0)〜208(N)を提供する。図2に示されるように、パーティション210(0)〜210(N)はそれぞれ、トランスレーションキャッシュ202のトランスレーションキャッシュエントリ204(0)〜204(X)のうちの1つまたは複数を含む。たとえば、図2の例において、パーティション210(0)は、トランスレーションキャッシュエントリ204(0)〜204(2)を含み、一方、パーティション210(1)は、トランスレーションキャッシュエントリ204(3)〜204(5)を含み、パーティション210(N)は、トランスレーションキャッシュエントリ204(6)〜204(X)を含む。いくつかの態様によれば、パーティションディスクリプタテーブル206は、図2に示される数より多い、または少ないパーティションディスクリプタ208(0)〜208(N)を含む場合がある。パーティションディスクリプタテーブル206はまた、本明細書において、「MMUのトランスレーションキャッシュの対応する複数のパーティションを規定する複数のパーティションディスクリプタを提供するための手段」と呼ばれる場合がある。対応するパーティション210(0)〜210(N)を規定するためにパーティションディスクリプタ208(0)〜208(N)によって使用される場合がある例示的な機構が、図3Aおよび図3Bに関して後にさらに詳細に論じられる。
【００２０】
いくつかの態様において、パーティション210(0)〜210(N)は、パーティションディスクリプタ208(0)〜208(N)によって規定される論理構成物とみされる場合がある。いくつかの態様は、パーティションディスクリプタ208(0)〜208(N)が設計時に構成される場合があることを規定する場合がある。したがって、そのような態様において、パーティション210(0)〜210(N)の数と、パーティション210(0)〜210(N)の各々に割り振られるトランスレーションキャッシュエントリ204(0)〜204(X)の数とは、設計時に決定される場合がある。いくつかの態様において、パーティションディスクリプタ208(0)〜208(N)は、実行時にソフトウェアによってプログラム可能な場合があり、それにより、パーティション210(0)〜210(N)の数と、パーティション210(0)〜210(N)ごとのトランスレーションキャッシュエントリ204(0)〜204(X)の数とを動的に構成できるようになる。
【００２１】
引き続き図2を参照すると、MMU200はまた、パーティション変換回路212を含む。例示的な動作において、パーティション変換回路212は、図1のアップストリームデバイス108、110および112のうちの1つのような要求元から、メモリアクセス要求(図示せず)を受信する。パーティション変換回路212はその後、メモリアクセス要求のTCPID(図示せず)を決定する場合がある。図4に関して後にさらに詳細に論じられるように、TCPIDは、メモリアクセス要求の一部として要求元によって明示的に提供される場合があり、および/またはソースタイプおよび/またはメモリアクセス要求自体の属性に基づいて、パーティション変換回路212によって導出される場合がある。パーティション変換回路212はその後、TCPIDに基づいてパーティション210(0)〜210(N)のうちの1つまたは複数を識別し、パーティション210(0)〜210(N)の識別された1つまたは複数に対応するトランスレーションキャッシュエントリ204(0)〜204(X)のうちの1つまたは複数に対してキャッシュ動作を実行する。いくつかの態様において、キャッシュ動作を実行することは、非限定的な例として、トランスレーションキャッシュエントリ204(0)〜204(X)を探索すること、トランスレーションキャッシュエントリ204(0)〜204(X)のうちの1つまたは複数に書き込むこと、および/またはトランスレーションキャッシュエントリ204(0)〜204(X)のうちの1つまたは複数のトランスレーションキャッシュエントリの内容を削除することを含む場合がある。パーティション変換回路212は、本明細書において、「要求元からメモリアクセス要求を受信するための手段」、「メモリアクセス要求のTCPIDを決定するための手段」、「TCPIDに基づいて複数のパーティションのうちの1つまたは複数のパーティションを識別するための手段」および/または「トランスレーションキャッシュエントリに対してキャッシュ動作を実行するための手段」と呼ばれる場合がある。
【００２２】
このようにして、パーティション変換回路212は、要求元からのメモリアクセス要求に応答して、パーティション変換回路212が、TCPIDによって識別されるパーティション210(0)〜210(N)のうちの1つまたは複数に関連付けられる特定のトランスレーションキャッシュエントリ204(0)〜204(X)に対してのみキャッシュ動作を実行するのを確実にする場合がある。たとえば、TCPIDがパーティション210(0)を識別する場合には、パーティション変換回路212は、パーティション210(0)に関連付けられるトランスレーションキャッシュエントリ204(0)〜204(2)に対してのみキャッシュ動作を実行できる場合がある。実際には、パーティション変換回路212は、パーティション210(0)〜210(N)を用いて、トランスレーションキャッシュエントリ204(0)〜204(X)にアクセス制御機構を提供することができ、それにより、異なるTCPIDに関連付けられる要求元が、それぞれの他のトランスレーションキャッシュエントリ204(0)〜204(X)に悪影響を及ぼすのを防ぐ。
【００２３】
いくつかの態様において、メモリアクセス要求内で受信されるか、またはメモリアクセス要求から導出されたTCPIDを、パーティション210(0)〜210(N)のうちの1つまたは複数を識別するために実際に使用される「出力」TCPIDにマッピングすることが望ましい場合がある状況が生じることがある。たとえば、TCPIDリマッピングを提供することが、パーティションディスクリプタ208(0)〜208(N)のソフトウェア再構成を容易にする場合がある。この関連で、いくつかの態様では、パーティション変換回路212は、オプションで1つまたは複数のリマッピングエントリ216(0)〜216(M)を含むパーティションリマッピングテーブル214を提供する場合がある。リマッピングエントリ216(0)〜216(M)はそれぞれ、対応する入力TCPID218(0)〜218(M)(すなわち、アップストリーム要求元がアドレス変換のために使用するように指定するトランスレーションキャッシュパーティションまたはパーティションのセットを識別するTCPID)を、対応する出力TCPID220(0)〜220(M)(すなわち、アドレス変換のために実際に使用されるトランスレーションキャッシュパーティションまたはパーティションのセットを識別するTCPID)にマッピングする。このようにして、パーティション変換回路212は、メモリアクセス要求から受信されるか、または導出されたTCPIDを決定した後に、TCPIDリマッピングを実行する場合がある。
【００２４】
そのために、パーティション変換回路212は最初に、入力TCPID218(0)〜218(M)がメモリアクセス要求のTCPIDに対応する、リマッピングエントリ216(0)〜216(M)のうちの1つを識別する。いくつかの態様において、メモリアクセス要求のTCPIDは、ソフトウェアプログラム可能な場合があるか、またはソフトウェアがメモリアクセス要求のTCPIDの値を変更できないようにハードコード化される場合がある。パーティション変換回路212はその後、入力TCPID218(0)〜218(M)を含むリマッピングエントリ216(0)〜216(M)から出力TCPID220(0)〜220(M)を検索する場合があり、出力TCPID220(0)〜220(M)を用いて、パーティション210(0)〜210(N)のうちの1つまたは複数をキャッシュ動作のターゲットとして識別する場合がある。このようにして、パーティションリマッピングテーブル214は、メモリアクセス要求の一部として受信されたTCPIDのプログラムによるリマッピングを可能にする場合があり、それにより、非限定的な例として、ソフトウェア性能最適化、システム性能調整、および/または誤った要求元指定TCPIDから生じるハードウェア問題の訂正を可能にする場合がある。
【００２５】
いくつかの態様によれば、MMU200はまた、オプションでキャッシュ探索および/またはキャッシュ削除のために有効であり、選択するのにふさわしいトランスレーションキャッシュエントリ204(0)〜204(X)の選択を容易にするために、パーティション選択テーブル222を提供する場合がある。このために、パーティション選択テーブル222は、パーティション210(0)〜210(N)に対応するパーティション選択エントリ224(0)〜224(Y)を含む。パーティション選択エントリ224(0)〜224(Y)の各々は、パーティション210(0)〜210(N)のうちの1つまたは複数に対応する場合がある。図2の例において、たとえばパーティション選択エントリ224(0)は、パーティション210(0)および210(1)に対応し、一方、パーティション選択エントリ224(Y)は、パーティション210(N)に対応する。いくつかの態様において、パーティション選択エントリ224(0)〜224(Y)は、パーティションリマッピングテーブル214から検索された出力TCPID220(0)〜220(M)のうちの1つを用いて選択される場合がある。パーティション選択エントリ224(0)〜224(Y)の各々は、探索制御指示子(SRCH)226(0)〜226(Y)および削除制御指示子(EVCT)228(0)〜228(Y)のうちの一方または両方を含む場合がある。いくつかの態様において、探索制御指示子226(0)〜226(Y)および/または削除制御指示子228(0)〜228(Y)は、当該技術分野において知られているような、ビット指示子、フラグおよび/または他の状態指示子を含む場合がある。
【００２６】
パーティション変換回路212は、1つまたは複数のパーティション210(0)〜210(N)のための対応するパーティション選択エントリ224(0)〜224(Y)に基づいて、パーティション210(0)〜210(N)のうちの1つまたは複数をキャッシュ動作のためのターゲットとして識別するように構成される場合がある。たとえば、パーティション210(0)および210(1)に対してキャッシュ探索動作を実行する前に、パーティション変換回路212は最初に、パーティション210(0)および210(1)が、パーティション210(0)および210(1)に対応するパーティション選択エントリ224(0)の探索制御指示子226(0)に基づいて探索するために選択するのにふさわしいかどうかを判定することができる。同様に、パーティション変換回路212は、パーティション210(0)および210(1)が、パーティション210(0)および210(1)に対応するパーティション選択エントリ224(0)の削除制御指示子228(0)に基づいて削除するために選択するのにふさわしいかどうかを判定することができる。
【００２７】
先に言及されたように、パーティションディスクリプタテーブル206のパーティションディスクリプタ208(0)〜208(N)は、トランスレーションキャッシュ202の対応するパーティション210(0)〜210(N)を規定するために提供される場合がある。図3Aおよび図3Bはそれぞれ、図2のパーティション210(0)(図示せず)のようなパーティションを規定するための異なる機構を示す2つの例示的なパーティションディスクリプタを示すブロック図300およびブロック図302である。図3Aおよび図3Bにおいて、図2のトランスレーションキャッシュ202は、先に論じられたようにトランスレーションキャッシュエントリ204(0)〜204(X)を与える。図3Aおよび図3Bはそれぞれ、図2のトランスレーションキャッシュエントリ204(0)〜204(2)を含むパーティション210(0)をそれぞれ規定するパーティションディスクリプタ304および306も与える。このようにして、パーティションディスクリプタ304および306は、それにより、図2のパーティションディスクリプタ208(0)に機能的に対応することができる。
【００２８】
図3Aにおいて、パーティションディスクリプタ304は、開始ポインタ308および終了ポインタ310を用いてパーティション210(0)を規定する。開始ポインタ308は、矢印312によって示されるように、パーティション210(0)のための開始トランスレーションキャッシュエントリ204(0)を示す。同様に、終了ポインタ310は、矢印314によって示されるように、パーティション210(0)のための終了トランスレーションキャッシュエントリ204(2)を示す。
【００２９】
図3Bのパーティションディスクリプタ306は、代替のパーティション規定機構を示す。図3Bにおいて、パーティションディスクリプタ306は、開始ポインタ316およびカウント指示子318を提供する。開始ポインタ316は、矢印320によって示されるように、パーティション210(0)のための開始トランスレーションキャッシュエントリ204(0)を示す。カウント指示子318は、矢印322によって示されるように、パーティション210(0)に含まれるトランスレーションキャッシュエントリ204(0)〜204(2)の場合のようなカウントを示す値("3")を与える。
【００３０】
図4は、メモリアクセス要求と、TCPIDを決定するための図2のMMU200のパーティション変換回路212との例示的な態様を示す図400を提供する。図4において、パーティション変換回路212は、要求元404からメモリアクセス要求402を受信する。いくつかの態様において、要求元404は、図1のアップストリームデバイス108、110、112のうちの1つを含む場合がある。いくつかの態様は、MMU200が第2ステージMMUであり、要求元404が第1ステージMMUであることを規定する場合がある。図4に示されるように、メモリアクセス要求は、要求元404のソースタイプを示すソース指示子406を含む場合がある。非限定的な例として、ソース指示子406は、要求元404が図1のアップストリームデバイス108、110および112のうちの1つであるかどうかを、または要求元404が第1ステージMMUであるかどうかを指示するフラグとすることができる。パーティション変換回路212はその後、ソース指示子406に基づいて、TCPIDを導出する場合がある。これにより、パーティション変換回路212は、非限定的な例として、第1ステージMMUによって排他的に使用するためのトランスレーションキャッシュ202の部分を割り振ることができるようになる場合がある。
【００３１】
メモリアクセス要求402はまた、要求元404によって与えられるオプションの要求元供給TCPID408を含む場合がある。要求元供給TCPID408が、メモリアクセス要求402の一部として受信されるとき、パーティション変換回路212は、要求元供給TCPID408を検索し、矢印412によって示されるように、そのTCPIDを、図2のパーティション210(0)〜210(N)のうちの1つまたは複数をキャッシュ動作のためのターゲットと識別するためのTCPID410として使用する場合がある。いくつかの態様は、要求元供給TCPID408をTCPID410として使用するのに加えて、またはその代わりに、矢印416によって示されるように、パーティション変換回路212が、メモリアクセス要求402の属性414に基づいて、TCPID410を導出する場合があることを規定する場合がある。非限定的な例として、TCPID410は、メモリアクセス要求402の、要求元404を一意に識別するマスター識別子(ID)属性、読出し/書込み属性、セキュア/非セキュア属性、メモリタイプ属性、キャッシュ可能性属性、および/または共有可能性属性のような1つまたは複数の属性414に基づいて決定される場合がある。いくつかの態様において、パーティション変換回路212は、オプションで矢印418によって示されるように、パーティションリマッピングテーブル214を用いてTCPID410をリマッピングする場合がある。
【００３２】
パーティショニングされたトランスレーションキャッシュを提供するための図2のMMU200の例示的な動作を示すために、図5が提供される。簡潔にするために、図5を説明する際に図2および図4の要素が参照される。図5において、MMU200(詳細には、パーティション変換回路212)が要求元404からメモリアクセス要求402を受信すること(ブロック500)から動作が開始する。いくつかの態様において、要求元404は、第1ステージMMUを含む場合があるか、図1のアップストリームデバイス108、110、112のようなアップストリームデバイスを含む場合がある。
【００３３】
パーティション変換回路212は、メモリアクセス要求402のTCPID410を決定する(ブロック502)。パーティション変換回路212は次に、TCPID410に基づいて、MMU200のトランスレーションキャッシュ202の複数のパーティション210(0)〜210(N)のうちの、パーティション210(0)〜210(1)のような1つまたは複数のパーティションを識別する(ブロック504)。パーティション変換回路212はその後、1つまたは複数のパーティション210(0)〜210(1)の1つまたは複数のトランスレーションキャッシュエントリ204(0)〜204(5)のうちのトランスレーションキャッシュエントリ204(0)のような1つのトランスレーションキャッシュエントリに対してキャッシュ動作を実行する(ブロック506)。いくつかの態様は、キャッシュ動作を実行することが、非限定的な例として、トランスレーションキャッシュエントリ204(0)〜204(5)を探索すること、トランスレーションキャッシュエントリ204(0)〜204(5)のうちの1つまたは複数に書き込むこと、および/またはトランスレーションキャッシュエントリ204(0)〜204(5)のうちの1つまたは複数の内容を削除することを含む場合があることを規定する場合がある。この例におけるトランスレーションキャッシュエントリ204(0)〜204(5)の選択は非限定的な例であること、そして、TCPID410によって識別されるパーティション210(0)〜210(N)に基づいて、他のまたはさらなるトランスレーションキャッシュエントリ204(0)〜204(X)が選択される場合があることを理解されたい。
【００３４】
図6A〜図6Cは、パーティショニングされたトランスレーションキャッシュを提供するためのさらなる例示的な動作を示す流れ図である。詳細には、図6Aは、TCPIDリマッピングのためのパーティション変換回路212の動作を含み、一方図6Bは、例示的なパーティション規定機構を使用する場合のパーティション変換回路212の動作を与える。図6Cは、キャッシュ動作を実行する際にパーティション選択エントリを利用するためのパーティション変換回路212の動作を示す。簡潔にするために、図6A〜図6Cを説明する際に、図2〜図4の要素が参照される。
【００３５】
図6Aにおいて、MMU200(詳細には、パーティション変換回路212)が要求元404からメモリアクセス要求402を受信すること(ブロック600)から動作が開始する。パーティション変換回路212は次に、メモリアクセス要求402のTCPID410を決定する(ブロック602)。いくつかの態様は、TCPID410を決定するためのブロック602の動作が、メモリアクセス要求402の属性414に基づいて、TCPID410を導出すること(ブロック604)を含む場合があることを規定する場合がある。いくつかの態様において、TCPID410を決定するためのブロック602の動作は、メモリアクセス要求402によって与えられる要求元供給TCPID408を検索すること(ブロック606)を含む場合がある。いくつかの態様によれば、TCPID410を決定するためのブロック602の動作は、出力TCPID220(0)への入力TCPID218(0)のリマッピングを規定する、複数のリマッピングエントリ216(0)〜216(M)の中の、リマッピングエントリ216(0)のようなリマッピングエントリを識別することを含む場合があり、リマッピングエントリ216(0)の入力TCPID218(0)はメモリアクセス要求402のTCPID410に対応する(ブロック608)。いくつかの態様において、TCPID410を決定するためのブロック602の動作は、要求404のソースタイプを示すメモリアクセス要求402のソース指示子406に基づいて、TCPID410を導出すること(ブロック609)を含む場合がある。
【００３６】
パーティション変換回路212は次に、TCPID410に基づいてMMU200のトランスレーションキャッシュ202の複数のパーティション210(0)〜210(N)のうちの、パーティション210(0)〜210(1)のような1つまたは複数のパーティションを識別する(ブロック610)。いくつかの態様において、パーティション210(0)〜210(1)を識別するためのブロック610の動作は、リマッピングエントリ216(0)の出力TCPID220(0)に基づく場合がある(ブロック611)。いくつかの態様はまた、1つまたは複数のパーティション210(0)〜210(1)を識別するためのブロック610の動作が、複数のパーティション選択エントリ224(0)〜224(Y)のうちのパーティション選択エントリ224(0)のような1つのパーティション選択エントリに基づく(ブロック612)場合があることを規定する場合がある。特定のパーティション選択エントリ224(0)〜224(Y)の各々が探索制御指示子226(0)および削除制御指示子228(0)のうちの少なくとも1つを規定する場合があり、非限定的な例として、複数のパーティション210(0)〜210(N)のうちの1つまたは複数のパーティション210(0)〜210(1)に対応する場合がある。いくつかの態様において、非限定的な例として、パーティション選択エントリ224(0)は、出力TCPID220(0)のような出力TCPIDに基づいて選択される場合がある。その後、処理は図6Bのブロック613において再開する場合がある。
【００３７】
ここで図6Bを参照すると、いくつかの態様によるパーティション変換回路212は、対応する複数のパーティションディスクリプタ208(0)〜208(N)にさらに基づいて、1つまたは複数のパーティション210(0)〜210(1)を識別する場合がある(ブロック613)。いくつかの態様によれば、複数のパーティションディスクリプタ208(0)〜208(N)の各々は、パーティションディスクリプタ208(0)によって規定される対応するパーティション210(0)の開始トランスレーションキャッシュエントリ204(0)への開始ポインタ308のような開始ポインタと、対応するパーティション210(0)の終了トランスレーションキャッシュエントリ204(X)への終了ポインタ310のような終了ポインタとを含む場合がある(ブロック614)。他の態様において、パーティションディスクリプタ208(0)〜208(N)の各々は、パーティションディスクリプタ208(0)によって規定される対応するパーティション210(0)の開始トランスレーションキャッシュエントリ204(0)への開始ポインタ316のような開始ポインタと、対応するパーティション210(0)の1つまたは複数のトランスレーションキャッシュエントリ204(0)〜204(X)のカウントを示すカウント指示子318のようなカウント指示子とを含む場合がある(ブロック616)。次いで、処理は図6Cのブロック620において再開する。
【００３８】
ここで図6Cを参照すると、パーティション変換回路212は次に、1つまたは複数のパーティション210(0)〜210(1)の1つまたは複数のトランスレーションキャッシュエントリ204(0)〜204(2)のうちの1つのトランスレーションキャッシュエントリ204(0)に対してキャッシュ動作を実行する(ブロック620)。いくつかの態様において、キャッシュ動作を実行するためのブロック620の動作は、要求元404のソースタイプを示すTCPID410のソース指示子406に基づく場合がある(ブロック622)。いくつかの態様は、キャッシュ動作を実行するためのブロック620の動作は、1つまたは複数のパーティション210(0)〜210(1)のためのパーティション選択エントリ224(0)に基づく場合がある(ブロック624)ことを規定する場合がある。パーティション選択エントリ224(0)に基づいてキャッシュ動作を実行するためのブロック624の動作は、いくつかの態様において、1つまたは複数のパーティション210(0)〜210(1)の1つまたは複数のトランスレーションキャッシュエントリ204(0)〜204(2)が、1つまたは複数のパーティション210(0)〜210(1)のための探索制御指示子226(0)に基づいて探索するために選択するのにふさわしいことを決定すること(ブロック626)を含む場合がある。いくつかの態様によれば、パーティション選択エントリ224(0)に基づいて、キャッシュ動作を実行するためのブロック624の動作は、1つまたは複数のパーティション210(0)〜210(1)の1つまたは複数のトランスレーションキャッシュエントリ204(0)〜204(2)が、1つまたは複数のパーティション210(0)〜210(1)のための削除制御指示子228(0)に基づいて削除するために選択するのにふさわしいことを決定すること(ブロック628)を含む場合がある。
【００３９】
本明細書において開示される態様による、MMUパーティショニングされたトランスレーションキャッシュ、ならびに関連する装置、方法およびコンピュータ可読媒体を提供することは、任意のプロセッサベースのデバイスにおいて提供されるか、または任意のプロセッサベースのデバイスに組み込まれる場合がある。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００４０】
この関連で、図7は、図2に示されるMMU200を利用する場合があるプロセッサベースシステム700の一例を示す。この例では、プロセッサベースシステム700は、各々が1つまたは複数のプロセッサ704を含む、1つまたは複数の中央処理ユニット(CPU)702を含む。CPU702は、一時的に記憶されたデータに迅速にアクセスするために、プロセッサ704に結合されたキャッシュメモリ706を有する場合がある。CPU702は、CPUメモリアクセス要求のためのアドレス変換サービスを提供するためのCPU MMU707をさらに含む。CPU702は、システムバス708に結合され、プロセッサベースシステム700に含まれるマスターデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU702は、システムバス708を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU702は、メモリユニット712(0)〜712(N)を提供するメモリシステム710にバストランザクション要求を通信することができる。図7の例において、SMMU713および714もシステムバス708に結合される。CPU MMU707ならびにSMMU713および714のうちの1つまたは複数が、図2のMMU200を含む場合があることを理解されたい。プロセッサベースシステム700は、複数のSMMU713および714を含む場合があることをさらに理解されたい。
【００４１】
SMMU713および714を介してシステムバス708に他のマスターデバイスおよびスレーブデバイスを接続することができる。図7に示されるように、これらのデバイスは、例として、メモリコントローラ715、1つまたは複数の入力デバイス716、1つまたは複数の出力デバイス718、1つまたは複数のネットワークインターフェースデバイス720、および1つまたは複数のディスプレイコントローラ722を含むことができる。入力デバイス716は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス718は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス720は、ネットワーク724との間のデータ交換を可能にするように構成された任意のデバイスとすることができる。ネットワーク724は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、専用または公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス720は、望ましい任意のタイプの通信プロトコルをサポートするように構成することができる。
【００４２】
CPU702はまた、1つまたは複数のディスプレイ726に送信される情報を制御するために、システムバス708を介してディスプレイコントローラ722にアクセスするように構成される場合がある。ディスプレイコントローラ722は、1つまたは複数のビデオプロセッサ728を介して、表示されるべき情報をディスプレイ726に送信し、ビデオプロセッサ728は、表示されるべき情報を、ディスプレイ726に適したフォーマットになるように処理する。ディスプレイ726は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００４３】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令として、またはその両方の組合せとして実現される場合があることを、当業者はさらに理解されよう。本明細書において説明されるマスターデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて利用される場合がある。本明細書において開示されるメモリは、任意のタイプおよびサイズのメモリの場合があり、望ましい任意のタイプの情報を記憶するように構成される場合がある。この互換性を明確に説明するために、上記では、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップは、概してそれらの機能に関して説明されてきた。そのような機能がどのように実現されるかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実施してもよいが、そのような実施の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４４】
本明細書において開示される態様に関連して説明される種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されるそれらの任意の組合せを用いて実現または実行される場合がある。プロセッサは、マイクロプロセッサである場合があるが、代替形態では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンの場合がある。プロセッサはまた、コンピューティングデバイスの組合せ、たとえばDSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実現される場合がある。
【００４５】
本明細書において開示される態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現される場合があり、命令は、たとえばランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態では、記憶媒体は、プロセッサと一体である場合がある。プロセッサおよび記憶媒体は、ASIC内に存在する場合がある。ASICは、リモート局内に存在する場合がある。代替形態では、プロセッサおよび記憶媒体は、リモート局、基地局、またはサーバの中で個別構成要素として存在する場合がある。
【００４６】
本明細書の例示的な態様のいずれかにおいて説明される動作ステップは、例および説明を提供するために記載されることにも留意されたい。上述の動作は、図示されたシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明された動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。さらに、例示的な態様において論じられた1つまたは複数の動作ステップは組み合わされる場合がある。流れ図に示された動作ステップは、当業者には容易に明らかであるように、多数の異なる変更を受ける場合があることを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれを使用して表される場合があることも理解されよう。たとえば、上記の説明全体を通じて参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場あるいは光粒子、またはそれらの任意の組合せによって表現される場合がある。
【００４７】
本開示のこれまでの説明は、いかなる当業者も本開示を作製または使用することが可能になるように提供される。本開示の種々の変更が、当業者には容易に明らかになり、本明細書において規定される一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用される場合がある。したがって、本開示は、本明細書において説明された例および設計には限定されず、本明細書において開示される原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００４８】
100  コンピューティングシステム
102  中央処理ユニット(CPU)MMU
104  CPU
106  システムMMU(SMMU)
108  アップストリームデバイス
110  アップストリームデバイス
112  アップストリームデバイス
114  マスターポート
116  マスターポート
118  マスターポート
120  スレーブポート
122  スレーブポート
124  スレーブポート
126  インターコネクト
128  マスターポート
130  スレーブポート
132  メモリ
134  スレーブデバイス
136  マスターデバイス
138  マスターポート
140  スレーブポート
142  マスターポート
144  マスターポート
146  スレーブポート
148  スレーブポート
150  マスターポート
152  スレーブポート
200  MMU
202  トランスレーションキャッシュ
204(0)〜204(X)  トランスレーションキャッシュエントリ
206  パーティションディスクリプタテーブル
208(0)〜208(N)  パーティションディスクリプタ
210(0)〜210(N)  パーティション
212  パーティション変換回路
214  パーティションリマッピングテーブル
216(0)〜216(M)  リマッピングエントリ
218(0)〜218(M)  入力TCPID
220(0)〜220(M)  出力TCPID
222  パーティション選択テーブル
224(0)〜224(Y)  パーティション選択エントリ
226(0)〜226(Y)  探索制御指示子
228(0)〜228(Y)  削除制御指示子
304  パーティションディスクリプタ
306  パーティションディスクリプタ
308  開始ポインタ
310  終了ポインタ
312  矢印
314  矢印
316  開始ポインタ
318  カウント指示子
320  矢印
322  矢印
402  メモリアクセス要求
404  要求元
406  ソース指示子
408  要求元供給TCPID
410  TCPID
412  矢印
414  属性
416  矢印
418  矢印
700  プロセッサベースシステム
702  中央処理ユニット(CPU)
704  プロセッサ
706  キャッシュメモリ
707  CPU MMU
708  システムバス
710  メモリシステム
712(0)〜712(N)  メモリユニット
713  SMMU
714  SMMU
715  メモリコントローラ
716  入力デバイス
718  出力デバイス
720  ネットワークインターフェースデバイス
722  ディスプレイコントローラ
724  ネットワーク
726  ディスプレイ
728  ビデオプロセッサ
【図１】
0006391855.tif 000002
【図２】
0006391855.tif 000003
【図３Ａ】
0006391855.tif 000004
【図３Ｂ】
0006391855.tif 000005
【図４】
0006391855.tif 000006
【図５】
0006391855.tif 000007
【図６Ａ】
0006391855.tif 000008
【図６Ｂ】
0006391855.tif 000009
【図６Ｃ】
0006391855.tif 000010
【図７】
0006391855.tif 000011