(57)【特許請求の範囲】
【請求項１】
グラフィックプロセシングユニット(GPU)と、
メモリと、
前記メモリおよび前記GPUに結合されたシステムメモリ管理ユニット(MMU)と
を備えるワイヤレスモバイルデバイスであって、
前記システムMMUは、
複数の物理コンテキストバンクと、
コンテンツのアクセスストリームと関連付けられたGPUコンテキストが、前記複数の物理コンテキストバンクの1つ内に記憶されないときに、ソフトウェア命令と独立して、
前記複数の物理コンテキストバンクの選択された1つのコンテンツを追い出し、
前記システムMMUのハードウェアリソースベースアドレスレジスタに従って、前記複数の物理コンテキストバンクの前記選択された1つの前記コンテンツを、前記メモリに記憶し、
前記GPUの実行スレッドによって発行されたコンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを、前記メモリから、前記複数の物理コンテキストバンクの前記選択された1つに復元する
ように構成されたハードウェアコントローラと
を備える、ワイヤレスモバイルデバイス。
【請求項２】
グラフィックプロセシングユニット(GPU)と、
メモリと、
前記メモリおよび前記GPUに結合されたシステムメモリ管理ユニット(MMU)と
を備えるワイヤレスモバイルデバイスであって、
前記システムMMUは、
複数の物理コンテキストバンクと、
前記複数の物理コンテキストバンクの各々がコンテンツのアクティブなアクセスストリームと関連付けられる場合に、前記GPUの実行スレッドにより発行されたコンテンツのアクセスストリームを阻止し、
前記コンテンツのアクセスストリームと関連付けられたGPUコンテキストが、前記複数の物理コンテキストバンクの1つ内に記憶されないとき、前記GPUの実行スレッドによって発行されたコンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを、前記メモリから、前記複数の物理コンテキストバンクの物理コンテキストバンクに復元する
ようにソフトウェア命令と独立して構成されたハードウェアコントローラと
を備える、ワイヤレスモバイルデバイス。
【請求項３】
前記複数の物理コンテキストバンクは、複数のレジスタを含む物理コンテキストバンクを備える、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項４】
前記ハードウェアコントローラはさらに、
前記システムMMUのストリームマッチングテーブル内で、前記GPUの前記実行スレッドによって発行されたコンテンツの前記アクセスストリームのストリーム識別子をルックアップして、コンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストが前記複数の物理コンテキストバンクの1つ内に記憶されるかどうかを決定するように構成される、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項５】
前記ハードウェアコントローラはさらに、前記実行スレッドによって発行されたコンテンツの前記アクセスストリームを変換するように構成される、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項６】
前記GPUの前記実行スレッドによって発行されたコンテンツの前記アクセスストリームは、メモリアクセス要求を備える、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項７】
前記ハードウェアコントローラはさらに、コンテンツの非アクティブなアクセスストリームと関連付けられた前記複数の物理コンテキストバンクの1つを選択するように構成される、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項８】
前記ハードウェアコントローラはさらに、前記複数の物理コンテキストバンクのうちの物理コンテキストバンクを活性化するためにスイッチを更新するように構成される、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項９】
携帯電話、セットトップボックス、ミュージックプレーヤ、ビデオプレーヤ、エンタテインメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または固定位置データユニットに組み込まれる、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項１０】
前記ワイヤレスモバイルデバイスの表現が非一時的コンピュータ可読媒体に記憶される、請求項1または2に記載のワイヤレスモバイルデバイス。
【請求項１１】
システムメモリ管理ユニット(MMU)内でのハードウェア支援コンテキストバンク復元の方法であって、
ソフトウェア命令と独立したシステムMMUによって、コンテンツの非アクティブなアクセスストリームと関連付けられた複数の物理コンテキストバンクの1つを選択するステップと、
グラフィックプロセシングユニット(GPU)の実行スレッドによって発行されたコンテンツのアクセスストリームと関連付けられたGPUコンテキストが複数の物理コンテキストバンクの1つ内に記憶されないとき、前記複数の物理コンテキストバンクの前記選択された1つのコンテンツを追い出すステップと、
前記システムMMUのハードウェアリソースベースアドレスレジスタに従って、前記複数の物理コンテキストバンクの前記選択された1つのコンテンツを、メモリに記憶するステップと、
コンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを、前記メモリから、前記複数の物理コンテキストバンクの前記選択された1つに復元するステップとを備える、方法。
【請求項１２】
システムメモリ管理ユニット(MMU)内でのハードウェア支援コンテキストバンク復元の方法であって、
複数の物理コンテキストバンクの各々が、コンテンツのアクティブなアクセスストリームと関連付けられる場合に、グラフィックプロセシングユニット(GPU)の実行スレッドによって発行されたコンテンツのアクセスストリームを阻止するステップと、
ソフトウェア命令と独立したシステムMMUによって、前記GPUの実行スレッドによって発行された前記コンテンツのアクセスストリームと関連付けられたGPUコンテキストが前記複数の物理コンテキストバンクの1つ内に記憶されないとき、前記複数の物理コンテキストバンクの選択された1つのコンテンツを追い出すステップと、
コンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを、メモリから、前記複数の物理コンテキストバンクの前記選択された１つに復元するステップと
を備える、方法。
【請求項１３】
前記システムMMUのストリームマッチングテーブル内で、前記GPUの前記実行スレッドによって発行されたコンテンツの前記アクセスストリームのストリーム識別子をルックアップして、コンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストが、前記複数の物理コンテキストバンクの1つ内に記憶されるかどうかを決定するステップをさらに備える、請求項11または12に記載の方法。
【請求項１４】
前記実行スレッドによって発行されたコンテンツの前記アクセスストリームを変換するステップをさらに備える、請求項11または12に記載の方法。
【請求項１５】
前記GPUの前記実行スレッドによって発行されたコンテンツの前記アクセスストリームは、メモリアクセス要求を備える、請求項11または12に記載の方法。
【請求項１６】
グラフィックプロセシングユニット(GPU)と、
メモリと、
前記メモリおよび前記GPUに結合されたシステムメモリ管理ユニット(MMU)と
を備えるワイヤレスモバイルデバイスであって、
前記システムMMUは、
複数の物理コンテキストバンクと、
ソフトウェア命令と独立して、コンテンツのアクセスストリームと関連付けられたGPUコンテキストが前記複数の物理コンテキストバンクの1つ内に記憶されないとき、前記GPUの実行スレッドによって発行されたコンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを前記メモリから前記複数の物理コンテキストバンクの物理コンテキストバンクに復元するための手段と、
コンテンツの非アクティブなアクセスストリームと関連付けられた前記複数の物理コンテキストバンクの1つを選択するための手段と、
前記システムMMUのハードウェアリソースベースアドレスレジスタに従って、前記複数の物理コンテキストバンクの前記選択された1つのコンテンツを、前記メモリに記憶するための手段と
を備える、ワイヤレスモバイルデバイス。
【請求項１７】
グラフィックプロセシングユニット(GPU)と、
メモリと、
前記メモリおよび前記GPUに結合されたシステムメモリ管理ユニット(MMU)と
を備えるワイヤレスモバイルデバイスであって、
前記システムMMUは、
複数の物理コンテキストバンクと、
前記複数の物理コンテキストバンクの各々が、アクティブなアクセスストリームと関連付けられる場合に、前記GPUの実行スレッドによって発行されたコンテンツのアクセスストリームを阻止するための手段と
ソフトウェア命令と独立して、前記コンテンツのアクセスストリームと関連付けられたGPUコンテキストが前記複数の物理コンテキストバンクの1つ内に記憶されないとき、前記GPUの実行スレッドによって発行されたコンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを前記メモリから前記複数の物理コンテキストバンクの選択された1つに復元するための手段と
を備える、ワイヤレスモバイルデバイス。
【請求項１８】
携帯電話、セットトップボックス、ミュージックプレーヤ、ビデオプレーヤ、エンタテインメントユニット、ナビゲーションデバイス、コンピュータ、ハンドヘルドパーソナル通信システム(PCS)ユニット、ポータブルデータユニット、および/または固定位置データユニットに組み込まれる、請求項16または17に記載のワイヤレスモバイルデバイス。
【請求項１９】
ワイヤレスモバイルデバイスのためのコンピュータプログラムであって、
プログラムコードを備え、前記プログラムコードは、
コンテンツの非アクティブなアクセスストリームと関連付けられた複数の物理コンテキストバンクの1つを選択するための、ソフトウェア命令と独立したプログラムコードと、
グラフィックプロセシングユニット(GPU)の実行スレッドによって発行されたコンテンツのアクセスストリームと関連付けられたGPUコンテキストが複数の物理コンテキストバンクの1つ内に記憶されないときに、前記複数の物理コンテキストバンクの前記選択された1つのコンテンツを追い出すためのプログラムコードと、
前記システムMMUのハードウェアリソースベースアドレスレジスタに従って、前記複数の物理コンテキストバンクの前記選択された1つのコンテンツを、メモリに記憶するためのプログラムコードと、
コンテンツの前記アクセスストリームと関連付けられた前記GPUコンテキストを前記メモリから前記複数の物理コンテキストバンクの前記選択された1つに復元するためのプログラムコードと
を備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、その全体が参照によって本明細書に組み込まれる、「METHOD AND APPARATUS TO SAVE AND RESTORE SYSTEM MEMORY MANAGEMENT UNIT (MMU) CONTEXTS」と題する、2013年3月15日に出願された米国特許出願第13/834,380号の優先権を主張する。
【０００２】
本開示は概して、集積回路設計に関する。特に、本開示は、システムメモリ管理ユニット(MMU:system memory management unit)変換コンテキスト(translation contexts)を保存および復元することに関する。
【背景技術】
【０００３】
シングルユーザコンピュータの性能を促進する機能の1つは、コンピュータグラフィックスである。高性能コンピュータグラフィックスをサポートすることは、コンピュータゲームおよびワークステーションにおいて重要であるだけでなく、パーソナルコンピュータの市場にわたっても重要である。高性能コンピュータコンピュータグラフィックスをサポートするためのメモリ仕様は、性能を改善するためのボトルネックとなることがある。
【０００４】
グラフィックデバイスにおいて性能を改善し、さらには最適化するための1つの技術は、仮想および物理アドレス空間の使用である。仮想アドレス空間は、他のアプリケーションのメモリ利用を考慮せずに、アプリケーションが望むだけメモリを使用することを可能にする。性能を改善し、さらには最適化するために、アプリケーションは、仮想アドレスを使用して命令およびデータを取り出し、記憶し、メモリシステムは、物理アドレスを使用して物理メモリ内の命令およびデータを取り出し、記憶する。したがって、仮想メモリ空間のアドレス指定と物理メモリ空間のアドレス指定との間の変換は、コンピューティングシステムによって実行される。その結果、アプリケーションおよびデータは、アプリケーションを再コード化することなく、メモリ内で、および異なるタイプのメモリ間で移動され得る。
【０００５】
高性能コンピュータグラフィックスアプリケーションのメモリ仕様を満たすための別の技術は、仮想マシンの使用である。仮想マシン(VM)は、物理マシンのようなプログラムを実行するマシン(すなわち、コンピュータ)のソフトウェア実装である。仮想マシンは、仮想メモリを含む仮想環境を提供するために、実世界のコンピュータのコンピュータアーキテクチャの仕様および機能に基づいていてよい。技術が進化するにつれ、仮想メモリ(仮想化に関して)は、1つの物理コンピュータ上の複数の仮想マシンの間でのメモリ共有を管理するために、メモリオーバーコミットメント(over-commitment)を使用する。たとえば、メモリオーバーコミットメントは、利用可能な物理アドレス空間よりも大きい仮想アドレス空間を提供することができる。
【０００６】
仮想メモリおよび仮想マシンなどの技術は、ワイヤレスモバイルデバイスによってサポートされないことがある。本明細書で説明されるように、ワイヤレスモバイルデバイスは、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、GPS対応デバイス、ナビゲーションデバイス、セットトップボックス、ミュージックプレーヤ、ビデオプレーヤ、エンタテインメントユニット、メータ読取装置などの固定位置データユニットもしくはデータもしくはコンピュータ命令を記憶もしくは取り出す任意の他のバッテリ駆動デバイス、または任意のそれらの組み合わせを含むが、それらに限定されない。
【発明の概要】
【課題を解決するための手段】
【０００７】
本開示の一態様によれば、ワイヤレスモバイルデバイスは、グラフィックプロセシングユニット(GPU)と、メモリと、メモリおよびGPUに結合されたシステムMMUとを含む。システムMMUは、複数のハードウェアリソースを含む。システムMMUはまた、GPUの実行スレッドによって発行されたコンテンツのアクセスストリームと関連付けられたハードウェアリソースを復元するように構成されたハードウェアコントローラを含む。関連付けられたハードウェアリソースは、コンテンツのアクセスストリームと関連付けられたハードウェアリソースが、複数のハードウェアリソースの1つの中に記憶されないとき、メモリから、複数のハードウェアリソースの物理ハードウェアリソースに復元され得る。
【０００８】
本開示の別の態様によれば、システムメモリ管理ユニット(MMU)内でのハードウェア支援コンテキストバンク復元のための方法が説明される。方法は、グラフィックプロセシングユニット(GPU)の実行スレッドによって発行された、コンテンツのアクセスストリームと関連付けられたハードウェアリソースが、複数の物理ハードウェアリソースの1つの中に記憶されないとき、複数の物理ハードウェアリソースの選択された1つを追い出す(evict)ステップを含む。方法はまた、コンテンツのアクセスストリームと関連付けられたハードウェアリソースを、メモリから、複数の物理ハードウェアリソースの選択された1つに復元するステップを含む。
【０００９】
本開示の一態様によれば、ワイヤレスモバイルデバイスは、グラフィックプロセシングユニット(GPU)と、メモリと、メモリおよびGPUに結合されたシステムメモリ管理ユニット(MMU)とを含む。システムMMUは、複数のハードウェアリソースを含む。システムMMUはまた、GPUの実行スレッドによって発行されたコンテンツのアクセスストリームと関連付けられたハードウェアリソースを復元するための手段を含む。関連付けられたハードウェアリソースは、コンテンツのアクセスストリームと関連付けられたハードウェアリソースが、複数のハードウェアリソースの1つの中に記憶されないとき、メモリから、複数のハードウェアリソースの物理ハードウェアリソースに復元され得る。
【００１０】
本開示の追加的な態様によれば、ワイヤレスモバイルデバイスに対するコンピュータプログラム製品が説明される。コンピュータプログラム製品は、その上にプログラムコードを記録した非一時的可読媒体を含む。プログラムコードは、グラフィックプロセシングユニット(GPU)の実行スレッドによって発行されたコンテンツのアクセスストリームと関連付けられたハードウェアリソースが、複数の物理ハードウェアリソースの1つの中に記憶されないとき、複数の物理ハードウェアリソースの選択された1つを追い出すためのプログラムコードを含む。プログラムコードはまた、コンテンツのアクセスストリームと関連付けられたハードウェアリソースを、メモリから、複数の物理ハードウェアリソースの選択された1つに復元するためのプログラムコードを含む。
【００１１】
開示の追加的な特徴および利点は、以下で説明される。本開示の同一の目的を遂行するための他の構造を修正または設計することを根拠としてこの開示が容易に利用され得ることは当業者によって理解されるべきである。また、そのような均等の構造が添付の特許請求の範囲で示されるような開示の教示から逸脱しないことは、当業者なら理解されたい。さらなる目的および利点とともにその構成および動作の方法の両方について、開示の特徴であると信じられる新規の特徴が、添付図面とともに考慮されるとき、以下の発明を実施するための形態からよりよく理解されるであろう。しかしながら、各図が例示および説明のためだけに提供されており、本開示の限定の定義として意図されていないことを明確に理解されることになる。
【００１２】
本開示のより十分な理解のために、添付図面を併用して、以下の発明を実施するための形態への参照がなされる。
【図面の簡単な説明】
【００１３】
【図１】開示の一態様による、グラフィックスプロセシングユニット(GPU)を有するマルチプロセッサシステムを含むワイヤレスモバイルデバイスのブロック図である。
【図２】開示のさらなる態様による、図1のグラフィックスプロセシングユニット(GPU)をさらに例示するブロック図である。
【図３】開示のさらなる態様による、図2のシステムメモリ管理ユニット(MMU)をさらに例示するブロック図である。
【図４】本開示の例示的な態様による、システムメモリ管理ユニット(MMU)コンテキストを保存および復元するための方法を示すプロセスフローチャートである。
【図５】開示の態様が有利に採用され得る、例示的なワイヤレス通信システムを示すブロック図である。
【図６】本開示の態様による、半導体部品の回路、レイアウトおよび論理設計に使用される設計ワークステーションを例示するブロック図である。
【発明を実施するための形態】
【００１４】
添付図面とともに以下で示される発明を実施するための形態は、種々の構成の説明として意図され、本明細書で説明される概念が実施され得る構成のみを表すことを意図されない。発明を実施するための形態は、種々の概念の完全な理解を提供する目的の詳細な説明を含む。しかしながら、これらの概念は、これらの詳細な説明なしに実施され得ることは、当業者にとって明らかである。一部の例では、そのような概念を不明確にすることを回避するために、既知の構造および部品がブロック図の形式で示される。本明細書で説明されるように、用語「および/または」の使用は、「包含的論理和(inclusive OR)」を表すことを意図し、用語「または」の使用は、「排他的論理和(exclusive OR)」を表すことを意図する。
【００１５】
グラフィックスベースのユーザフレンドリーなアプリケーションプログラムおよびオペレーティングシステムの開発は、コンピュータにおけるグラフィックスの使用を飛躍的に増大させた。専用のグラフィックスプロセシングユニット(GPU)は、集中したグラフィックスコンピューティングの要求の一部を、中央処理装置(CPU)からそれらの専用のGPUにオフロードするために、コンピュータ部品の製造者によって開発された。従来のコンピューティングシステムは、これらのGPUを周辺デバイスとして実装することができる。たとえば、GPUは、カード自体にローカルグラフィックスメモリ(本明細書では、ビデオメモリとも称される)を含むPeripheral Component Interconnect(PCI)互換カードとして実装され得る。ローカルビデオメモリは、GPUがより高速にグラフィックスを処理することを可能にする。
【００１６】
GPUの動作の間、GPUの現在の状態およびコンテキストは、内部レジスタ、Zバッファコンテキスト、フレームバッファコンテンツ、およびテクスチャマッピング記憶バッファの互いに素である集合(disjoint set)によって記憶される。1つまたは複数のGPUは、コンテキスト切り替えを実行することによって、複数のアプリケーション間で共有され得る。すなわち、GPUの効率的な共有は、GPUコンテキスト間で効率的に切り替えることを含み、これは困難であり得る。単一のオペレーティングシステムイメージ内でのコンテキスト切り替えは、ソフトウェア(たとえば、オペレーティングシステム)によって編成された数個の一連のステップを含む。GPUは、動作が完了したとき、内部状態を自動的に保存および復元し、オペレーティングシステムに通知する。
【００１７】
GPUの動作の間のアドレス変換は、クライアント要求者にそれぞれの現在の状態およびGPUコンテキストへのアクセスを提供するために実行され得る。GPUは、アドレス変換を提供するシステムメモリ管理ユニット(MMU)を含み得る。特に、システムMMUは、複数のクライアント要求者に代わってアドレス変換機能を提供し得る。本明細書で説明されるように、クライアント要求者は、システムMMUの物理コンテキストバンク内に記憶されるコンテンツのアクセスストリームを発行する独立した実行スレッドであり得る。本明細書で説明されるように、コンテンツのアクセスストリームは、クライアント要求者によって発行されたメモリアクセス要求を含み、コンテンツの各アクセスストリームは、コンテンツのアクセスストリームに一意なストリーム識別子(ID)と関連付けられる。たとえば、クライアント要求者は、GPU(たとえば、ウェブブラウザインスタンス(すなわち、タブ)、ゲームなど)における複数のデュアルコンテキストクライアント要求者であり得る。クライアント要求者は各々、コンテキストの1つまたは複数のストリームの代わりに、システムMMUに要求を提示することが可能である。各ストリームは、ストリームに一意なストリームIDと関連付けられ得る。
【００１８】
システムMMUは、コンテキストバンクの数個の物理インスタンスを含み、各物理コンテキストバンクは、複数のハードウェアレジスタを含む。システムMMUコンテキストバンクは各々、そのバンクをターゲットとする要求に対するアドレス変換機能を統制するための状態を含み得る。加えて、コンテキストバンクの物理インスタンスの総数は、システムMMUと関連付けられたクライアント要求者のすべてにわたって使用中のストリームIDの総数未満であり得る。数個のクライアント要求者が、システムMMU内の利用可能な物理コンテキストバンクの数を上回るとき、ソフトウェア介入が発生し得る。従来は、現在の実行スレッド(たとえば、クライアント要求者)のアクセスストリームに対する物理コンテキストバンクを追い出すためにソフトウェアが使用される。
【００１９】
本開示の一態様では、ソフトウェア介入なしに、物理コンテキストバンクを保存および復元して、アクティブな実行スレッドに対する利用可能なコンテキストバンクを提供するためにハードウェアリソースが使用される。たとえば、システムMMUは、メモリの領域への物理コンテキストバンクのコンテンツを自動的に保存し、およびメモリの第2の領域から、新たなコンテンツの組を物理コンテキストバンクに読み出し得る。この構成では、システムMMUの変換コンテキストの保存および復元動作は、物理コンテキストバンクの1つと現在関連していないストリームID(たとえば、コンテンツの非アクティブなストリーム)を示す要求を、クライアント要求者から受信したことに応答して、実行される。それに応じて、システムMMUは、ソフトウェアからの介入なしに、コンテキストバンク状態の保存/復元動作を実行する。
【００２０】
図1は、開示の一態様による、グラフィックスプロセシングユニット(GPU)200を有するマルチプロセッサシステムを含むワイヤレスモバイルデバイス100のブロック図を示す。ワイヤレスモバイルデバイス100は、1つまたは複数のワイヤレス通信システムを監視し、および/またはそれと通信し得る。受信経路上では、アンテナ108は、基地局および/または衛星によって送信された信号を受信し、受信された信号を受信機(RCVR)104に提供する。受信機104は、受信された信号を処理し(たとえば、フィルタリングし、増幅し、周波数ダウンコンバートし、およびデジタル化する)、さらなる処理のためにサンプルを特定用途向け集積回路(ASIC)102に提供する。送信経路上では、ASIC102は、送信されることになるデータを処理し、データを送信機(TMTR)106に提供する。送信機106は、データを処理し(たとえば、アナログに変換し、フィルタリングし、増幅し、および周波数アップコンバートする)、アンテナ108を介して送信される、変調信号を生成する。
【００２１】
ASIC102は、マルチスレッドグラフィックス動作をサポートする種々のプロセシングユニットを含む。図1に示す構成の場合、ASIC102は、デジタルシグナルプロセッサ(DSP)コア118Aおよび118Bと、プロセッサコア120Aおよび120Bと、クロススイッチ116と、コントローラ110と、内部メモリ112と、外部インターフェースユニット114とを含む。DSPコア118Aおよび118B、ならびにプロセッサコア120Aおよび120Bは、ビデオ、オーディオ、グラフィックス、およびゲームなどの種々の機能をサポートする。各プロセッサコアは、RISC(縮小命令セットコンピューティング)マシン、マイクロプロセッサ、または一部の他のタイプのプロセッサであり得る。
【００２２】
この構成では、コントローラ110は、ASIC102内でのプロセシングユニットの動作を制御する。内部メモリ112は、ASIC102内でプロセシングユニットによって使用されるデータおよびプログラムコードを記憶する。外部インターフェースユニット114は、ASIC102の外部にある他のユニットとインターフェースをとる。概して、ASIC102は、図1に示したよりも少ない、多い、および/または異なるプロセシングユニットを含み得る。ASIC102に含まれるプロセシングユニットの数およびプロセシングユニットのタイプは、ワイヤレスモバイルデバイス100のマルチプロセッサシステムによってサポートされる通信システム、アプリケーションおよび機能などの種々の因子に依存する。示されていないが、ワイヤレスモバイルデバイス100は、バッテリ駆動である。
【００２３】
マルチスレッドグラフィックス動作は、種々の方法で実装され得る。たとえば、これらの技術は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装され得る。ハードウェアの実装形態の場合、テクスチャコーディング技術は、1つまたは複数のASIC、DSP、PLD、FPGA、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、本明細書で説明される機能を実行するために設計された他の電子ユニット、またはそれらの組み合わせ内で実装され得る。マルチスレッドグラフィックス動作の或る態様は、説明される機能を実行するソフトウェアモジュール(たとえば、手順、機能など)で実装され得る。ソフトウェアコードは、メモリ(たとえば、図1におけるメモリ101および/または内部メモリ112)に記憶され得、プロセッサ(たとえば、DSPコア118Aおよび/または118B)によって実行され得る。メモリは、プロセッサ内で、またはプロセッサの外部で実装され得る。
【００２４】
ASIC102はさらに、マルチスレッドグラフィックス命令を記憶するメモリ101に結合される。図1に示される構成の場合、各プロセシングコアは、命令を実行し得る。この構成では、ASIC102は、図2および図3でさらに例示されるように、システムメモリ管理ユニット(MMU)300を含む、グラフィックスプロセシングユニット(GPU)200を含む。
【００２５】
図2は、開示の一態様による、図1のGPU200を例示するブロック図である。GPU200の最上位のハードウェアブロックは、コマンドプロセッサ230と、レジスタ基幹マネージャ(RBBM:register backbone manager)232とを含む。コマンドプロセッサ230は、システムMMU300からのGPUコマンドをスケジューリングし、RBBM232は、中央処理装置220へのインターフェース234を提供する。プリミティブ制御(PC:primitive control)236は、グラフィックスパイプラインにおける第1のブロックであり、グラフィックスラスタライザ(GRAS)238およびバーテックスパラメータキャッシュ(vertex parameter cash)252に通信可能に結合される。プリミティブ制御236は、RBBM232を通じてコマンドプロセッサ230から描画コマンド(draw commands)を受信する。
【００２６】
GPU200のグラフィックスパイプラインはまた、復号されたバーテックスを高レベルシーケンサキュー(HLSQ:high level sequencer queue)248に提供する、バーテックスフェッチャ/デコーダ(VFD:vertex fetcher-decoder)246を含む。ストリームプロセッサ250は、テクスチャプロセッサ244と、HLSQ248と、バーテックスパラメータキャッシュ252と、グラフィックスパイプラインの一部としてのレンダリングされたバックエンド254とに結合される。アービトレータ242(242-1、・・・、244-N)は、統合キャッシュ(UCHE)240へのアクセスを制御する。GPU200のグラフィックスパイプラインはまた、グラフィックスラスタライザ238と統合キャッシュ240との間で結合された可視性ストリームコンポーザ(VSC:visibility stream composer)258を含む。GPU200はまた、グラフィックスメモリ256とともに、進歩型拡張可能インターフェース(AXI:advance extensible interface)バス260を通じてGPU200に結合された外部メモリ201を含む。外部メモリ201は、パケットバッファ262と、可視性ストリームバッファ264と、インデックスバッファ266と、バーテックスオブジェクト270と、テクスチャオブジェクト272と、フレームバッファ274とを含む。
【００２７】
この構成では、システムMMU300は、AXIバス260と、統合キャッシュ240、コマンドプロセッサ230、およびプリミティブ制御236との間にある。システムMMU300はさらに、図3で例示される。
【００２８】
図3は、開示のさらなる態様による、図2のシステムMMU300をさらに例示するブロック図である。この構成では、システムMMU300は、数個のハードウェアリソース、たとえば、各ハードウェアコンテキストバンクがハードウェアレジスタ(図示せず)の組を含む、ハードウェアコンテキストバンク386(386-0、・・・、386-N)を含む。システムMMU300のハードウェアコンテキストバンク386は各々、バンクをターゲットとする要求に対するアドレス変換機能を統制するための状態を含み得る。しかしながら、ハードウェアコンテキストバンク386の総数は、システムMMUと関連付けられたクライアント要求者のすべてにわたって使用中のストリームIDの総数未満であり得る。
【００２９】
クライアント要求者の数が、システムMMU内での利用可能な物理コンテキストバンクの数を上回るとき、ソフトウェア介入が発生し得る。現在のARM(アドバンスドRISC(縮小命令セットコンピューティング)マシン)技術では、HLOS(高レベル出力仕様)は、200以上の数のGPUアプリケーションを指定し得る。現在のシステムMMU標準は単に、128の物理コンテキストバンクをサポートするにすぎないので、この使用ケースを満たすために、十分な数の物理コンテキストバンクが供給されないことがある。
【００３０】
GPU動作の間、HLOSは、新たな処理に合致するために、システムMMUコンテキストバンクにセルフプログラミングを行う(self-program)GPU命令を発行するソフトウェアドライバを使用することによって、新たなGPUアプリケーションへの切り替えを指定する。すなわち、GPUソフトウェア命令は、現在の実行スレッド(たとえば、クライアント要求者)のアクセスストリームに対する物理コンテキストバンクを追い出すために発行される。たとえば、GPUコマンドは、GPU動作の前の組の終わりにおける、物理コンテキストバンクの作成に同期させるために発行され得る。GPUドライバは、ASID(アドレス空間識別子)切り替えの間、新たなコンテキストバンクを作成するために一連のGPUコマンドを発行し得る。
【００３１】
しかしながら、システムMMUコンテキストバンクをオンザフライで(on the fly)作成するためのGPU命令の従来の使用は問題がある。特に、オンザフライでシステムMMUコンテキストバンクを作成することは、GPUコンテキスト切り替え時間を増大させる。たとえば、GPUコンテキスト切り替え時間は、GPUがシステムMMU構成空間において14のレジスタを更新するのに要するのと同等の時間、増大することがある。加えて、オンザフライでシステムMMUコンテキストバンクを作成することは、GPUプログラミングモデルを複雑にし、およびGPUコンテキストの間で切り替えるためのタイミング問題を生じさせる。
【００３２】
すべてのGPUコンテキストを収容するための物理コンテキストバンクが利用可能であった場合、オンザフライで物理コンテキストバンクを作成することが回避され得る。しかしながら、ワイヤレスモバイルデバイス上に最大で256のGPUコンテキストが存在し得る。ワイヤレスモバイルデバイスに256の物理コンテキストバンクを供給することは、費用効率的ではない。加えて、現在のシステムMMU仕様は、128の物理コンテキストバンクの制限を有する。
【００３３】
本開示の一態様では、ソフトウェア介入なしで、物理コンテキストバンクを保存および復元して、アクティブな実行スレッドに対する利用可能なコンテキストバンクを提供するために、ハードウェアリソースが使用される。図3に示すように、システムMMU300のハードウェアコントローラ390は、ハードウェアコンテキストバンク386のコンテンツを、外部メモリ301(たとえば、ダイナミックランダムアクセスメモリ(DRAM))の領域に自動的に保存し得る。保存されると、ハードウェアコントローラ390は、外部メモリ301内の保存されたコンテキストバンク392(392-0、・・・、392-N)から、新たなコンテンツの組をハードウェアコンテキストバンクに読み出す。この構成では、システムMMU変換コンテキストの保存および復元動作は、ハードウェアコンテキストバンク386の1つと現在関連していないストリームID382を示す要求をクライアント要求者から受信したことに応答して実行される。それに応じて、システムMMU300のハードウェアコントローラ390は、たとえば、図4に説明されるように、ソフトウェアからの介入なしに、コンテキストバンク状態の保存/復元動作を実行する。
【００３４】
図4は、本開示の例示的な態様による、システムMMU変換コンテキストを保存および復元するための方法400を示すプロセスフローチャートである。ブロック410では、コンテンツのアクセスストリームがグラフィックプロセシングユニット(GPU)によって発行されるかが決定される。コンテンツのアクセスストリームの発行が検出されたとき、ブロック412において、コンテンツの発行されたアクセスストリームと関連付けられたコンテキストバンクが、ハードウェアコンテキストバンクの組の1つ内で記憶されるかが決定される。
【００３５】
たとえば、図3で示されるように、システムMMU300のハードウェアコントローラ390は、GPUにおいて、デュアルコンテキストクライアント要求者(たとえば、ウェブブラウザインスタンス(タブ)、ゲームなど)によって発行されたアクセスストリームを検出し得る。ハードウェアコントローラ390は、コンテンツの発行されたアクセスストリームと関連付けられたストリーム識別子(ID)382を使用して、ストリームマッチングテーブル380にアクセスし得る。ストリームID 382およびストリームマッチングテーブル380を使用して、ハードウェアコントローラ390は、コンテンツの発行されたアクセスストリームと関連付けられたコンテキストバンクが、ハードウェアコンテキストバンク386の1つ内に記憶されるかどうかを決定する。
【００３６】
図4を再度参照すると、コンテンツアクセスストリームと関連付けられたコンテキストバンクが物理コンテキストバンク内に記憶されないとき、ブロック414が実行される。ブロック414では、物理コンテキストバンクの1つが選択される。たとえば、図3で示されるように、ハードウェアコントローラ390は、コンテンツの非アクティブなアクセスストリームと関連付けられたハードウェアコンテキストバンク386の1つを選択し得る。ハードウェアコンテキストバンク386の各々がコンテンツのアクティブなアクセスストリームと関連付けられるとき、ハードウェアコントローラは、クライアント要求者(たとえば、GPUの実行スレッド)によって発行されたアクセスストリームを阻止(block)し得る。
【００３７】
ブロック416では、選択された物理コンテキストバンクの情報状況(information state)は、外部メモリに追い出される。ブロック418では、GPUの実行スレッドによって発行されたアクセスストリームと関連付けられたコンテキストバンクが、外部メモリから、追い出された物理コンテキストバンクに復元される。ブロック420では、GPUの実行スレッドによって発行されたアクセスストリームと関連付けられたコンテキストバンクへの切り替えが実行される。この構成では、ターゲットコンテキストバンクの情報状況が物理コンテキストバンク内に記憶されるとき、処理ブロック414〜418がスキップされる。ブロック420におけるターゲットコンテキストバンクへのコンテキストバンク切り替えを実行するための動作は、単一のクロックサイクルで実行され得る。
【００３８】
たとえば、図3で示されるように、ハードウェアコントローラ390は、保存されたコンテキストバンクベースアドレスレジスタ388に従って、選択されたハードウェアコンテキストバンク386の情報状況を、外部メモリ301の保存されたコンテキストバンク392に記憶する。これは、ストリームマッチングテーブル380が、外部メモリ301における保存されたコンテキストバンク392-1・・・392-Nを示すときに行われる。保存されると、ストリームマッチングテーブル380によって識別された、保存されたコンテキストバンク392の情報状況が、追い出されたハードウェアコンテキストバンク386に復元される。たとえば、ハードウェア制御は、追い出されたハードウェアコンテキストバンク386への、保存されたコンテキストバンク392に対する情報状況のライトバックを実行し得る。復元されると、ハードウェアコントローラ390は、追い出されたハードウェアコンテキストバンク386を活性化するために、スイッチ384を更新する。
【００３９】
本開示のさらなる態様によれば、グラフィックプロセシングユニット(GPU)を含むワイヤレスモバイルデバイスは、システムMMU変換コンテキストを保存および復元するためのシステムメモリ管理ユニット(MMU)を有する。ワイヤレスモバイルデバイスは、メモリおよびGPUに結合されたシステムMMUを含む。システムMMUは、ハードウェアリソースの組を含む。ハードウェアリソースの組は、ハードウェアコンテキストバンクの組となり得、ハードウェアコンテキストバンクの各々は、レジスタの組を有する。システムMMUはまた、GPUの実行スレッドによって発行されたコンテンツのアクセスストリームと関連付けられたハードウェアリソースを復元するための手段を含む。関連付けられたハードウェアリソースは、コンテンツのアクセスストリームと関連付けられたハードウェアリソースがハードウェアリソースの組の1つ内に記憶されないとき、メモリから物理ハードウェアリソースに復元され得る。復元する手段は、システムMMU300のハードウェアコントローラ390であり得る。別の態様では、上述した手段は、上述した手段によって定義された機能を実行するように構成された任意のモジュールまたは任意の装置であり得る。
【００４０】
図5は、開示の態様が有利に採用され得る、例示的なワイヤレス通信システム500を示すブロック図である。例示を目的に、図5は、3つのリモートユニット520、530、および550と、2つの基地局540とを示す。ワイヤレス通信システムは、さらに多くのリモートユニットおよび基地局を有し得ることが認識されるであろう。リモートユニット520、530、および550は、開示されたシステムMMU回路を含む、ICデバイス525A、525Cおよび525Bを含む。ICを含む任意のデバイスはまた、基地局と、スイッチングデバイスと、ネットワーク機器とを含む、開示されたシステムMMU回路を含み得ることが認識されるであろう。図5は、2つの基地局540からリモートユニット520、530および550へのフォワードリンク信号580、およびリモートユニット520、530、および550から2つの基地局540へのリバースリンク信号590を示す。
【００４１】
図5では、リモートユニット520の1つが携帯電話として示され、リモートユニット530の1つがポータブルコンピュータとして示され、リモートユニット550の1つがワイヤレスローカルループシステムにおける固定位置リモートユニットとして示される。たとえば、リモートユニットは、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、GPS対応デバイス、ナビゲーションデバイス、セットトップボックス、ミュージックプレーヤ、ビデオプレーヤ、エンタテインメントユニット、メータ読取装置などの固定位置データユニット、もしくはデータもしくはコンピュータ命令を記憶もしくは取り出す任意の他のデバイス、またはそれらの任意の組み合わせであり得る。図5は、開示の教示に従って、リモートユニットを例示するが、開示は、これらの例示的に示されたユニットに限定されない。開示の態様は、システムMMUを含む任意のデバイスに適切に採用され得る。
【００４２】
図6は、上記開示されたようなシステムMMU回路などの半導体部品の回路、レイアウト、および論理設計に使用される設計ワークステーションを例示するブロック図である。設計ワークステーション600は、オペレーティングシステムソフトウェアと、サポートファイルと、CadenceまたはOrCADなどのデザインソフトウェアとを含むハードディスク601を含む。設計ワークステーション600はまた、システムMMU回路を有するパッケージ化集積回路などの回路設計610または半導体部品612を促進するためのディスプレイを含む。回路設計610または半導体部品612を有形的に記憶するために記憶媒体604が提供される。回路設計610または半導体部品612は、GDSIIまたはGERBERなどのファイル形式で記憶媒体604に記憶され得る。記憶媒体604は、CD-ROM、DVD、ハードディスク、フラッシュメモリ、または他の適切なデバイスであり得る。さらに、設計ワークステーション600は、記憶媒体604からの入力を受け付け、または記憶媒体604に出力を書き出すための駆動装置603を含む。
【００４３】
記憶媒体604上に記録されたデータは、論理回路構成、フォトリソグラフィマスクのためのパターンデータ、または電子ビームリソグラフィなどのシリアル書き込みツールのためのマスクパターンデータを指定し得る。データはさらに、タイミング図などの論理検証データまたは論理シミュレーションと関連付けられたネット回路を含む。記憶媒体604上にデータを提供することは、半導体ウエハを設計するための処理の数を減少させることによって、回路設計610または半導体部品612の設計を促進する。
【００４４】
ファームウェアおよび/またはソフトウェア実装形態の場合、本明細書で説明された機能を実行するモジュール(たとえば、手順、機能など)で方法論が実装され得る。命令を明確に具体化する任意の機械可読媒体が、本明細書で説明された方法論を実装するのに使用され得る。たとえば、ソフトウェアコードは、メモリに記憶され得、プロセッサユニットによって実行され得る。メモリは、プロセッサユニット内で、またはプロセッサユニットの外部で実装され得る。本明細書で使用されるように、用語「メモリ」は、長期、短期、揮発性、不揮発性、または他のメモリの任意のタイプを差し、任意の特定のメモリのタイプもしくは任意の特定のメモリの数、またはメモリが記憶される任意の特定の媒体のタイプに限定されない。
【００４５】
ファームウェアおよび/またはソフトウェアで実装される場合、コンピュータ可読媒体上に1つまたは複数の命令またはコードとして機能が記憶され得る。例は、データ構造とともに符号化されたコンピュータ可読媒体と、コンピュータプログラムとともに符号化されたコンピュータ可読媒体とを含む。コンピュータ可読媒体は、物理コンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。例として、非限定的に、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形式での所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。本明細書で使用されるように、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組み合わせは、コンピュータ可読媒体の範囲内に含まれるべきである。
【００４６】
コンピュータ可読媒体上の記憶に加え、命令および/またはデータは、通信装置に含まれる送信媒体上の信号として提供され得る。たとえば、通信装置は、命令およびデータを示す信号を有する送受信機を含み得る。命令およびデータは、1つまたは複数のプロセッサに、特許請求の範囲で要点が述べられる機能を実装するように構成される。
【００４７】
特定の回路が示されてきたが、開示された回路のすべてが、開示を実施するために必要とされないことは当業者によって理解されるであろう。さらに、開示に集中し続けるために、或る既知の回路が説明されていない。
【００４８】
本開示およびその利点が詳細に説明されてきたが、添付の特許請求の範囲によって定義されるような開示の技術から逸脱することなく、種々の変更、置換および修正が本明細書でなされ得ることが理解されるべきである。さらに、本出願の範囲は、明細書で説明された処理、マシン、製造物、組成物、手段、方法およびステップの特定の態様に限定されることが意図されない。当業者の一人が開示から容易に理解するように、現在存在し、または後に開発されることになる、本明細書で説明された対応する態様と実質的に同一の機能を実行し、または実質的に同一の結果を達成する、処理、マシン、製造物、組成物、手段、方法およびステップが、本開示に従って利用され得る。したがって、添付の特許請求の範囲は、そのような処理、マシン、製造物、組成物、手段、方法またはステップをその範囲内で含むことが意図される。
【符号の説明】
【００４９】
100  ワイヤレスモバイルデバイス
108  アンテナ
384  スイッチ
400  方法
500  ワイヤレス通信システム
520  リモートユニット
525A  ICデバイス
525B  ICデバイス
525C  ICデバイス
530  リモートユニット
540  基地局
550  リモートユニット
580  フォワードリンク信号
590  リバースリンク信号
600  設計ワークステーション
601  ハードディスク
602  ディスプレイ
603  駆動装置
604  記憶媒体
610  回路設計
612  半導体部品
【図１】
0005969725.tif 000002
【図２】
0005969725.tif 000003
【図３】
0005969725.tif 000004
【図４】
0005969725.tif 000005
【図５】
0005969725.tif 000006
【図６】
0005969725.tif 000007