(57)【特許請求の範囲】
【請求項１】
画素処理のための方法であって、
第１のデータフォーマットをサポートする少なくとも１つのプロセッサから、第１のデータバッファに保存されたデータに関する要求を、グラフィックス処理ユニット（ＧＰＵ）によって受信することと、ここにおいて、前記要求は、前記データの仮想アドレスを備える、
前記第１のデータフォーマットと関連する仮想アドレス範囲内にある、前記データの前記仮想アドレスに少なくとも一部基づいて、前記少なくとも１つのプロセッサによってサポートされる前記第１のデータフォーマットをインジケートする１つまたは複数のカラービットを、前記ＧＰＵのメモリ管理ユニット（ＭＭＵ）によって、決定することと、
前記１つまたは複数のカラービットに連結される前記データの前記仮想アドレスで構成される、翻訳されたアドレスを、前記ＭＭＵによって、決定することと、
第２のデータフォーマットにある前記データを、前記翻訳されたアドレスにおける前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから、透過的フォーマット変換器（ＴＦＣ）によって、取得することと、
前記取得されたデータを前記第２のデータフォーマットから、前記翻訳されたアドレスにおける前記１つまたは複数のカラービットによってインジケートされる前記第１のデータフォーマットへ、前記ＴＦＣによって、変換することと、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに、前記ＴＦＣによって、保存することと
を備える、方法。
【請求項２】
前記第１のデータフォーマットと関連する前記仮想アドレス範囲内にある、前記データの前記仮想アドレスに少なくとも一部基づいて、前記少なくとも１つのプロセッサによってサポートされる前記第１のデータフォーマットをインジケートする前記１つまたは複数のカラービットを決定することは、
前記仮想アドレスに少なくとも一部基づいて中間物理アドレスを、第１のレベルページテーブルを使用する前記ＭＭＵによって、決定することと、
前記中間物理アドレスに少なくとも一部基づいて前記翻訳されたアドレスを、第２のレベルページテーブルを使用する前記ＭＭＵによって、決定することと
をさらに備える、請求項１に記載の方法。
【請求項３】
１つまたは複数のページテーブルのカーネルアドレス空間部分に少なくとも一部基づいて前記物理アドレスを、前記ＴＦＣによって、決定することをさらに備える、請求項１に記載の方法。
【請求項４】
前記第２のデータバッファは前記少なくとも１つのプロセッサのためのキャッシュを備える、請求項１に記載の方法。
【請求項５】
前記データは画素データを備え、
前記第１のデータフォーマットは第１の画素フォーマットを備え、
前記第２のデータフォーマットは第２の画素フォーマットを備える、請求項１に記載の方法。
【請求項６】
前記第１のデータフォーマットにある第２のデータを、前記少なくとも１つのプロセッサから前記ＴＦＣによって、受け取ることと、
前記第２のデータを前記第１のデータフォーマットから前記第２のデータフォーマットへ、前記ＴＦＣによって、変換することと、
前記第２のデータフォーマットにある前記変換されたデータを前記第１のデータバッファに、前記ＴＦＣによって、保存することと
をさらに備える、請求項１に記載の方法。
【請求項７】
第１のデータバッファと、
第２のデータバッファと、
第１のデータフォーマットをサポートする少なくとも１つのプロセッサと、
前記第１のデータバッファに保存されたデータに関する、前記少なくとも１つのプロセッサによる要求を受信すること、ここにおいて、前記要求は、前記データの仮想アドレスを備える、
を行うように構成されるグラフィックス処理ユニット（ＧＰＵ）と、
前記第１のデータフォーマットと関連する仮想アドレス範囲内にある、前記データの前記仮想アドレスに少なくとも一部基づいて、前記少なくとも１つのプロセッサによってサポートされる前記第１のデータフォーマットをインジケートする１つまたは複数のカラービットを決定することと、
前記１つまたは複数のカラービットに連結される前記データの前記仮想アドレスで構成される、翻訳されたアドレスを決定することと、
前記翻訳されたアドレスに少なくとも一部基づいて前記仮想アドレスに対応する物理アドレスを決定することと
を行うように構成される前記ＧＰＵのメモリ管理ユニット（ＭＭＵ）と、
第２のデータフォーマットにある前記データを、前記翻訳されたアドレスにおける前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから取得することと、
前記取得されたデータを前記第２のデータフォーマットから、前記翻訳されたアドレスにおける前記１つまたは複数のカラービットによってインジケートされる前記第１のデータフォーマットへ変換することと、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である前記第２のデータバッファに保存することと
を行うように構成される、前記ＧＰＵの透過的フォーマット変換器（ＴＦＣ）と
を備える、計算デバイス。
【請求項８】
前記ＭＭＵは、
第１のレベルページテーブルを使用し、前記仮想アドレスに少なくとも一部基づいて中間物理アドレスを決定し、
第２のレベルページテーブルを使用し、前記中間物理アドレスに少なくとも一部基づいて前記翻訳されたアドレスを決定する
ようにさらに構成される、請求項７に記載の計算デバイス。
【請求項９】
前記ＴＦＣは、１つまたは複数のページテーブルのカーネルアドレス空間部分に少なくとも一部基づいて前記物理アドレスを決定するようにさらに構成される、請求項７に記載の計算デバイス。
【請求項１０】
前記第２のデータバッファは前記少なくとも１つのプロセッサのためのキャッシュを備える、請求項７に記載の計算デバイス。
【請求項１１】
前記データは画素データを備え、
前記第１のデータフォーマットは第１の画素フォーマットを備え、
前記第２のデータフォーマットは第２の画素フォーマットを備える、請求項７に記載の計算デバイス。
【請求項１２】
前記ＴＦＣは、
前記第１のデータフォーマットにある第２のデータを前記少なくとも１つのプロセッサから受け取り、
前記第２のデータを前記第１のデータフォーマットから前記第２のデータフォーマットへ変換し、
前記第２のデータフォーマットにある前記変換されたデータを前記第１のデータバッファに保存する
ようにさらに構成される、請求項７に記載の計算デバイス。
【請求項１３】
第１のデータバッファに保存されたデータに関する第１のデータフォーマットをサポートする少なくとも１つのプロセッサによる要求を受信するための手段と、ここにおいて、前記要求は、前記データの仮想アドレスを備える、
前記第１のデータフォーマットと関連する仮想アドレス範囲内にある、前記データの前記仮想アドレスに少なくとも一部基づいて、前記少なくとも１つのプロセッサによってサポートされる前記第１のデータフォーマットをインジケートする１つまたは複数のカラービットを決定するための手段と、
前記１つまたは複数のカラービットに連結される前記データの前記仮想アドレスで構成される、翻訳されたアドレスを決定するための手段と、
第２のデータフォーマットにある前記データを、前記翻訳されたアドレスにおける前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから取得するための手段と、
前記取得されたデータを前記第２のデータフォーマットから、前記翻訳されたアドレスにおける前記１つまたは複数のカラービットによってインジケートされる前記第１のデータフォーマットへ変換するための手段と、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに保存するための手段と
を備える、装置。
【請求項１４】
第１のデータバッファに保存されたデータに関する要求を受信することと、ここにおいて、前記要求は、前記データの仮想アドレスを備える、
前記第１のデータフォーマットと関連する仮想アドレス範囲内にある、前記データの前記仮想アドレスに少なくとも一部基づいて、前記少なくとも１つのプロセッサによってサポートされる前記第１のデータフォーマットをインジケートする１つまたは複数のカラービットを決定することと、
前記１つまたは複数のカラービットに連結される前記データの前記仮想アドレスで構成される、翻訳されたアドレスを決定することと、
第２のデータフォーマットにある前記データを、前記翻訳されたアドレスにおける前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから取得することと、
前記取得されたデータを前記第２のデータフォーマットから、前記翻訳されたアドレスにおける前記１つまたは複数のカラービットによってインジケートされる前記第１のデータフォーマットへ変換することと、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに保存することと
を、プログラマブルプロセッサにさせるための命令を備える、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示は、透過的画素フォーマット変換器に関する。
【０００２】
[0002]  グラフィックス画像またはビデオのフレームのようなグラフィックスデータは、複数の画素から成り立ち得る。グラフィックスデータの画素に関する情報のような画素データは、１画素のデータに関連付けられたメモリのビットの数を規定し得、またこの画素のデータ内のカラー成分の順序を規定し得る、指定された画素フォーマットに従って配列され得る。指定された画素フォーマットに従ってメモリに配列される画素データはこの画素フォーマットに従って圧縮され得、またこの画素フォーマットに従ってこのメモりの複数のメモリロケーションに配列され得る。一般に、画素フォーマットは線形画素フォーマットまたはタイルベース画素フォーマットに分類される。
【発明の概要】
【０００３】
[0003]  一般に、本開示は、異なる画素フォーマット相互間で透過的に変換する透過的フォーマット変換器(ＴＦＣ)に関し、ＴＦＣがグラフィックスデータの基底(underlying)画素フォーマットにかかわらずに、処理コアによってサポートされた画素フォーマットに従うグラフィックスデータのビュー(view)をもつ処理コアを提供し得る。ＴＦＣは処理コアが、処理コアによってサポートされた画素フォーマットに従ってグラフィックスデータが整列されるようにグラフィックスデータを扱うことを可能にし得る。
【０００４】
[0004]  一態様において、本開示は画素処理のための方法に向けられている。この方法は、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにあるこのデータに関する要求を示すものであると、透過的フォーマット変換器(ＴＦＣ)によって、決定することを含み得る。方法は、第１のデータバッファに保存されたデータに関する要求に少なくとも一部基づいて、第２のデータフォーマットにあるこのデータを第１のデータバッファから、ＴＦＣによって、取得することをさらに含み得る。方法は、取得されたデータを第２のデータフォーマットから第１のデータフォーマットへ、ＴＦＣによって、変換することをさらに含み得る。方法は、第１のデータフォーマットにある変換されたデータを、少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに、ＴＦＣによって、保存することをさらに含み得る。
【０００５】
[0005]  別の態様において、本開示は計算デバイスに向けられている。 この計算デバイスは、第１のデータバッファを含み得る。計算デバイスは、第２のデータバッファをさらに含み得る。計算デバイスは、少なくとも１つのプロセッサをさらに含み得る。計算デバイスは、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにあるこのデータに関する要求を示すものであると決定し、第１のデータバッファに保存されたデータに関する要求に少なくとも一部基づいて、第２のデータフォーマットにあるこのデータを第１のデータバッファから取得し、取得されたデータを第２のデータフォーマットから第１のデータフォーマットへ変換し、第１のデータフォーマットにある変換されたデータを、少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに保存するように構成される透過的フォーマット変換器をさらに含み得る。
【０００６】
[0006]  別の態様において、本開示は装置に向けられている。この装置は、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにあるこのデータに関する要求を示すものであると決定するための手段を含み得る。装置は、第１のデータバッファに保存されたデータに関する要求に少なくとも一部基づいて、第２のデータフォーマットにあるこのデータを第１のデータバッファから取得するための手段をさらに含み得る。装置は、取得されたデータを第２のデータフォーマットから第１のデータフォーマットへ変換するための手段をさらに含み得る。装置は、第１のデータフォーマットにある変換されたデータを、少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに保存するための手段をさらに含み得る。
【０００７】
[0007]  別の態様において、本開示は命令を有するコンピュータ可読媒体に向けられている。この命令は、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにあるこのデータに関する要求を示すものであると、透過的フォーマット変換器(ＴＦＣ)によって、決定することと、第１のデータバッファに保存されたデータに関する要求に少なくとも一部基づいて、第２のデータフォーマットにあるデータを第１のデータバッファから、ＴＦＣによって、取得することと、取得されたデータを第２のデータフォーマットから第１のデータフォーマットへ、ＴＦＣによって、変換することと、第１のデータフォーマットにある変換されたデータを、少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに、ＴＦＣによって、保存することとをプログラマブルプロセッサにさせる。
【０００８】
[0008]  本開示の１つまたは複数の態様の詳細は、添付図面および以下の説明において記述される。本開示で説明される技術の他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本開示の１つまたは複数の態様を実施するように構成され得る例示的な計算デバイスを例示するブロック図である。
【図２】図２は、さらに詳細に図１のプロセッサ、ＧＰＵ、およびシステムメモリの例示的な実施形態を例示するブロック図である。
【図３】図３は、図２のＴＦＣの例示的な機能を例示する概念図である。
【図４】図４は、さらに詳細に図２のＴＦＣの例示的な実施形態を例示するブロック図である。
【図５】図５は、図４の翻訳されたアドレスの例示的なフォーマットを例示するブロック図である。
【図６】図６は、さらに詳細に図２のＴＦＣの例示的な実施形態を例示するブロック図である。
【図７】図７は、例示的な仮想アドレスを例示的な物理アドレスに翻訳するために２レベルページテーブルマッピングを利用する図２のＴＦＣを例示するブロック図である。
【図８】図８は、透過的に画素フォーマットを変換するためのプロセスを例示するフローチャートである。
【発明を実施するための形態】
【００１０】
[0017]  一般に、本開示は、異なる画素フォーマット相互間で透過的に変換する透過的フォーマット変換器(ＴＦＣ)に関し、ＴＦＣが画素データのビュー(view)を提供するようにし得る。画素データは様々な異なる画素フォーマットで保存され得る。ハードウェア設計者は、ハードウェア設計者によって設計されたハードウェアによって周知の標準画素フォーマットよりも効率的に処理され得る新たな独自画素フォーマットを作成することがよくある。例えば、タイルベース画素フォーマットが、線形画素フォーマットの代わりに、増大されたメモリ効率および効率的帯域利用効率のために作成され得る。
【００１１】
[0018]  しかしながら、画素データを操作するソフトウェアアプリケーションの開発者は、網羅的な様々な画素フォーマットを実施する代わりに、僅かな周知画素フォーマットだけについてのサポートを実施することがよくある。加えて、ハードウェア設計者によって作成されたタイルベース画素フォーマットは独自のものであって、ソフトウェア開発者がそれらタイルベース画素フォーマットの知識を持たないことがある。いくつかの例において、そのようなソフトウェアアプリケーションの稼働するオペレーティングシステムはまた、広い様々な画素フォーマットを網羅してサポートし得ない。既存のオペレーティングシステムは新規ハードウェア上で稼働するように適応されることがよくあるため、オペレーティングシステムがこうした新規ハードウェア上で実施された新規作成の画素フォーマットを継続的にサポートすることが可能でないことがよくある。
【００１２】
[0019]  本開示のＴＦＣは、第１の画素フォーマットをサポートするプロセッサが、このプロセッサによってサポートされる第１の画素フォーマットに従って代わりに配列されたものであるかのように、第２のフォーマットに従って配列された画素データを、ＴＦＣを介して、見れるよう画素フォーマット間で透過的に変換するように構成され得る。本開示の態様に従って、ＴＦＣは、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにあるこのデータに関する要求を示すものであると決定するように構成され得る。ＴＦＣは、第１のデータバッファに保存されたデータに関する要求に少なくとも一部基づいて、第２のデータフォーマットにあるこのデータを第１のデータバッファから取得するようにさらに構成され得る。ＴＦＣは、取得されたデータを第２のデータフォーマットから第１のデータフォーマットへ変換するようにさらに構成され得る。ＴＦＣは、第１のデータフォーマットにある変換されたデータを、少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに保存するようにさらに構成され得る。
【００１３】
[0020]  図１は、本開示の１つまたは複数の態様を実施するように構成され得る例示的な計算デバイスを例示するブロック図である。図１に示されるように、計算デバイス２は、ビデオデバイス、メディアプレーヤ、セットトップボックス、モバイル電話およびいわゆるスマートフォンのようなワイヤレスハンドセット、携帯情報端末（PDAｓ）、デスクトップコンピュータ、ラップトップコンピュータ、ゲーミングコンソール、ビデオ会議ユニット、タブレット計算デバイス等を、限定されずに含む計算デバイスであり得る。図１の例では、計算デバイス２は、中央処理装置（ＣＰＵ）６、システムメモリ１０、およびＧＰＵ１２を含み得る。計算デバイス２はまた、ディスプレイプロセッサ１４、トランシーバモジュール３、ユーザインタフェース４、およびディスプレイ８を含み得る。トランシーバモジュール３およびディスプレイプロセッサ１４は両方ともに、ＣＰＵ６および／またはＧＰＵ１２として同じ集積回路（ＩＣ）の一部であることができ、両方ともにＣＰＵ６および／またはＧＰＵ１２を含むＩＣまたは複数のＩＣの外部に存在することができ、またはＣＰＵ６および／またはＧＰＵ１２を含むＩＣの外部に存在するＩＣで形成され得る。
【００１４】
[0021]  計算デバイス２は、明確さのために図１に示されない追加のモジュールまたはユニットを含み得る。例えば、計算デバイス２は、どちらも図１に示されない、スピーカおよびマイクロホンを、計算デバイス２がモバイルワイヤレス電話である例において、または計算デバイス２がメディアプレーヤであるスピーカにおいて電話通信を果たすために含み得る。計算デバイス２はまた、ビデオカメラを含み得る。さらに、図２に示される様々なモジュールおよびユニットは、計算デバイス２の全ての例において必要とは限らない。例えば、ユーザインタフェース４およびディスプレイ８は、計算デバイス２が、外部ユーザインタフェースまたはディスプレイとインタフェースするように装備されるデスクトップコンピュータまたは他のコンピュータである例において計算デバイス２の外部にあり得る。
【００１５】
[0022]  ユーザインタフェース４の例は、トラックボール、マウス、キーボード、および他のタイプの入力デバイスを、限定されずに含む。ユーザインタフェース４は、タッチスクリーンであることもでき、ディスプレイ８の一部として組み込まれ得る。トランシーバモジュール３は、計算デバイス２と他のデバイスまたはネットワークとの間で無線または有線通信を可能にする回路を含み得る。トランシーバモジュール３は、変調器、復調器、増幅器、並びに有線または無線通信のための他のそうした回路を含み得る。
【００１６】
[0023]  図６は、実行のためにコンピュータプログラムの命令を処理するように構成される中央処理装置（ＣＰＵ）のような、マイクロプロセッサであり得る。プロセッサ６は、計算デバイス２の動作を制御する汎用、または専用プロセッサを備え得る。ユーザは、１つまたは複数のソフトウェアアプリケーションをプロセッサ６に実行させるために計算デバイス２に入力を提供し得る。プロセッサ６上で実行するソフトウェアアプリケーションは、例えば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインタフェースアプリケーションまたは他のプログラムを含み得る。加えて、プロセッサ６は、ＧＰＵ１２の動作を制御するためにＧＰＵドライバ２２を実行し得る。ユーザは、キーボード、マウス、マイクロフォン、タッチパッドまたはユーザインタフェース４を介して計算デバイス２に結合される他の入力デバイスのような１つまたは複数の入力デバイス（図示されない）を介して入力を計算デバイス２に提供し得る。
【００１７】
[0024]  プロセッサ６上で実行するソフトウェアアプリケーションは、ディスプレイ８に対するグラフィックスデータのレンダリングをプロセッサ６に命じる１つまたは複数のグラフィックスレンダリング命令を含み得る。いくつかの例において、ソフトウェア命令は、グラフィックスアプリケーションプログラミングインタフェース（ＡＰＩ）、例えば、オープングラフィックスライブラリ（OpenGL（登録商標））ＡＰＩ、オープングラフィックスライブラリ埋め込みシステム（Open Graphics Library Embedded Systems）（OpenGL ES）ＡＰＩ、ダイレクト３Ｄ ＡＰＩ、X３Ｄ ＡＰＩ、RenderMan ＡＰＩ、WebGL ＡＰＩ、オープンコンピューティング言語(OpenCL(トレードマーク))または任意の他のパブリックまたは独自規格グラフィックスＡＰＩ等、に準拠し得る。グラフィックスレンダリング命令を処理するため、プロセッサ６は、１つまたは複数のグラフィックスレンダリングコマンドをＧＰＵ１２に（例えば、ＧＰＵドライバ２２を通して）発行してグラフィックスデータのレンダリングのいくつか、または全てをＧＰＵ１２に行わせ得る。いくつかの例では、レンダリングされるべきグラフィックスデータが、例えば、点、線、三角形、四角形、トライアングルストライプなどのグラフィックス基本形状(graphics primitives)のリストを含み得る。
【００１８】
[0025]  ＧＰＵ１２は、ディスプレイ８に１つまたは複数のグラフィックス基本形状をレンダリングするためのグラフィックス動作を行うように構成され得る。このため、プロセッサ６上で実行するソフトウェアアプリケーションのうちの１つがグラフィックス処理を要求するとき、プロセッサ６は、ディスプレイ８へのレンダリングのためにグラフィックスコマンドおよびグラフィックスデータをＧＰＵ１２に提供し得る。グラフィックスデータは、例えば、描画コマンド（drawing commands）、ステート情報、プリミティブ情報（primitive information）、テクスチャ情報(texture information)等を含み得る。ＧＰＵ１２は、いくつかの例において、プロセッサ６に比べて複雑なグラフィック関連動作のより効率的な処理を提供する高度に並列な構造（highly-parallel structure）で構築され得る。例えば、ＧＰＵ１２は、並列方式で複数の頂点または画素について動作するように構成される、シェーダユニットのような、複数の処理要素を含み得る。ＧＰＵ１２の高度な並列性は、いくつかの例において、ＧＰＵ１２が、プロセッサ６を使用してディスプレイ８に直接シーンを描くより速くディスプレイ８上にグラフィックスイメージ（例えば、ＧＵＩsおよび２次元（２Ｄ）および／または３次元（３Ｄ）のグラフィックスシーン）を描くことを可能し得る。
【００１９】
[0026]  ＧＰＵ１２は、いくつかの例において、計算デバイス２のマザーボードに統合され得る。他の例において、ＧＰＵ１２は、計算デバイス２のマザーボード内のポートにインストールされるグラフィックスカード上に存在するか、または、そうでなければ計算デバイス２と相互運用するように構成される周辺デバイス内に組み込まれ得る。ＧＰＵ１２は、１つまたは複数のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣs）、フィールドプログラマブルゲートアレイ（ＦＰＧＡｓ）、デジタルシグナルプロセッサ（ＤＳＰs）、または他の等価な集積またはディスクリート論理回路のような１つまたは複数のプロセッサを含み得る。ＧＰＵ１２はまた、１つまたは複数のプロセッサコアを含み得、ＧＰＵ１２はマルチコアプロセッサと称され得る。
【００２０】
[0027]  グラフィックスメモリ４０はＧＰＵ１２の一部であり得る。このため、ＧＰＵ１２は、バスを使用せずに、グラフィックスメモリ４０からデータを読み取り、グラフィックスメモリ４０へデータを書き込み得る。言替えると、ＧＰＵ１２は、オフチップメモリの代わりに、ローカルストレージを使用してローカルにデータを処理し得る。このようなグラフィックスメモリ４０は、オンチップメモリと称され得る。これは、重いバストラフィックを経験し得るバスを介してデータを読み書きＧＰＵ１２の必要性を無くすことによる、より効率的な方式でＧＰＵ１２が動作することを可能にする。グラフィックスメモリ４０は、例えば、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））、フラッシュメモリ、磁気データ媒体または光学記憶媒体のような１つまたは複数の揮発性または不揮発性メモリ、または記憶デバイスを含み得る。
【００２１】
[0028]  いくつかの例において、ＧＰＵ１２は、完全に形成された画像をシステムメモリ１０に保存し得る。ディスプレイプロセッサ１４は、システムメモリ１０から画像を取り出して、ディスプレイ８の複数の画素に画像を表示するように照明させる値を出力し得る。ディスプレイ８は、ＧＰＵ１２によって生成された画像コンテンツを表示する計算デバイス２のディスプレイであり得る。ディスプレイ８は、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオードディスプレイ（ＯＬＥＤ）、または陰極線管（ＣＲＴ）ディスプレイ、プラズマディスプレイ、または他のタイプのディスプレイデバイスであり得る。
【００２２】
[0029]  図２は、さらに詳細に図１のプロセッサ６、ＧＰＵ１２、およびシステムメモリ１０の例示的な実施形態を例示するブロック図である。図２に示すように、プロセッサ６は、各々１つまたは複数のソフトウェアアプリケーションまたはサービスである、少なくとも１つのソフトウェアアプリケーション１８、グラフィックスＡＰＩ２０、ＧＰＵドライバ２２、およびメモリ管理ユニット(ＭＭＵ)２３を実行し得る。いくつかの例において、グラフィックスＡＰＩ２０およびＧＰＵドライバ２２はＣＰＵ６のハードウェアユニットとして実施され得る。
【００２３】
[0030]  プロセッサ６およびＧＰＵ１２に利用可能なメモリは、システムメモリ１０およびフレームバッファ１６を含み得る。フレームバッファ１６は、システムメモリ１０の一部であり得、またはシステムメモリ１０から分離され得る。フレームバッファ１６は、レンダリングされた画像データを保存し得る。ＭＭＵ２３は、ＣＰＵ６から、システムメモリ１０またはグラフィックスメモリ４０のようなメモリへのアクセスのための要求を扱うように構成されるハードウェアであり得る。例えば、ＭＭＵ２３はソフトウェアアプリケーション１８からのメモリアクセス要求を扱い得る。ＭＭＵ２３は、こうしたメモリアクセス要求を扱うために１つまたは複数のページテーブルまたは翻訳ルックアサイドバッファ(ＴＬＢs： translation lookaside buffers)を使用して物理メモリアドレスへの仮想メモリアドレスの翻訳を行い得る。
【００２４】
[0031]  いくつかの例において、プロセッサ６は、レベル１(Ｌ１)キャッシュ、レベル２(Ｌ２)キャッシュ、レベル３(Ｌ３)キャッシュ、などの１つまたは複数のキャッシュ１５を含む、または有し得る。１つまたは複数のキャッシュ１５はシステムメモリ１０に比べて速いメモリアクセスをプロセッサ６に提供し得、システムメモリ１０の頻繁にアクセスされるメモリロケーションからのデータのコピーを保存し得る。
【００２５】
[0032]  ソフトウェアアプリケーション１８は、ＧＰＵ１２の機能を利用する任意のアプリケーションであり得る。例えば、ソフトウェアアプリケーション１８は、グラフィカルユーザインターフェース(ＧＵＩ)アプリケーション、オペレーティングシステム、ポータブルマッピングアプリケーション、エンジニアリングまたは美術的アプリケーション（artistic applications）のためのコンピュータ支援設計プログラム（computer-aided design program）、ビデオゲームアプリケーション、または２Ｄまたは３Ｄグラフィックスを使用する他のタイプのソフトウェアアプリケーションであり得る。
【００２６】
[0033]  ソフトウェアアプリケーション１８は、ＧＵＩおよび／またはグラフィックスシーンをレンダリングするようにＧＰＵ１２に命じる１つまたは複数の描画命令を含み得る。例えば、描画命令は、ＧＰＵ１２によってレンダリングされるべき１つまたは複数のグラフィックス基本形状のセットを定義する命令を含み得る。いくつかの例において、描画命令は、ＧＵＩで使用される複数のウィンドウイングサーフェス(windowing surfaces)の全てまたは一部を集合的に定義し得る。追加の例において、描画命令は、アプリケーションによって定義されるモデル空間またはワールド空間内で１つまたは複数のグラフィックスオブジェクトを含むグラフィックスシーンの全てまたは一部を集合的に定義し得る。
【００２７】
[0034]  ソフトウェアアプリケーション１８は、１つまたは複数のグラフィックス基本形状をレンダリングして表示可能なグラフィックス画像にするためのＧＰＵ１２への１つまたは複数のコマンドを発行するためにグラフィックスＡＰＩ２０を介してＧＰＵドライバ２２を呼び出し得る。例えば、ソフトウェアアプリケーション１８は、ＧＰＵ１２に基本形状定義（primitive definition）を提供するために、グラフィックスＡＰＩ２０を介して、ＧＰＵドライバ２２を呼び出し得る。いくつかの例において、基本形状は、例えば、三角形、四角形、扇形三角形（triangle fans）、または帯状連結三角形（triangle strips）等の描画基本形状のリストの形式でＧＰＵ１２に提供され得る。基本形状定義は、レンダリングされるべき基本形状と関連する１つまたは複数の頂点を特定する頂点仕様（vertex specifications）を含み得る。頂点仕様は、各頂点についての位置座標（positional coordinates）と、いくつかの例において、頂点と関連する他の属性、例えば、カラー座標、法線ベクトル（normal vectors）、およびテクスチャ座標などと、を含み得る。基本形状定義はまた、基本形状タイプ情報（例えば、三角形、四角形、扇形三角形、帯状連結三角形等）、スケーリング情報、回転情報等も含み得る。
【００２８】
[0035]  ソフトウェアアプリケーション１８によってＧＰＵドライバ２２に発行された命令に基づき、ＧＰＵドライバ２２は、ＧＰＵ１２が基本形状をレンダリングするために行う１つまたは複数の動作を特定する１つまたは複数のコマンドを作成し（formulate）得る。ＧＰＵ１２がＣＰＵ６からのコマンドを受け取ると、グラフィックス処理パイプラインが、このコマンドを復号し、コマンドにおいて特定された動作を行うようにグラフィックス処理パイプラインを構成することをシェーダプロセッサ４８上で実行し得る。例えば、グラフィックス処理パイプラインにおける入力アセンブラは、基本形状データを読み取ることができ、グラフィックス処理パイプラインにおける他のグラフィックスパイプラインステージによる使用のためにデータを基本形状にアセンブルし得る。特定された動作を行った後、グラフィックス処理パイプラインは、ディスプレイデバイスと関連するフレームバッファ１６にレンダリングされたデータを出力する。
【００２９】
[0036]  フレームバッファ１６は、ＧＰＵ１２のための宛先画素（destination pixels）を保存する。各宛先画素は、一意的なスクリーン画素位置と関連し得る。いくつかの例において、フレームバッファ１６は、カラーコンポーネントおよび各宛先画素のための宛先アルファ値（destination alpha value）を保存し得る。例えば、フレームバッファ１６は、各画素のための赤、緑、青、アルファ（RGBA）を記憶し得、ここで「RGB」コンポーネントがカラー値に対応し、「Ａ」コンポーネントが宛先アルファ値に対応する。フレームバッファ１６およびメモリ１０が別個のメモリユニットであるものとして例示されているが、他の例において、フレームバッファ１６は、システムメモリ１０の一部であり得る。
【００３０】
[0037]  いくつかの例において、グラフィックス処理パイプラインが、１つまたは複数の頂点(vertex)シェーダステージ、ハル(hull)シェーダステージ、ドメイン(domain)シェーダステージ、ジオメトリ(geometry)シェーダステージ、および画素(pixel)シェーダステージを含み得る。グラフィックス処理パイプラインのこれらステージは考慮されたシェーダステージであり得る。これらのシェーダステージは、ＧＰＵ１２内の複数のシェーダユニット４６上で実行する１つまたは複数のシェーダプログラムとして実施され得る。シェーダユニット４６は、処理コンポーネントのプログラマブルパイプラインとして構成され得る。いくつかの例において、シェーディングユニット４６は、「シェーダプロセッサ」、または「統合シェーダ（unified shaders）」と称されることができ、グラフィックスをレンダリングするためにジオメトリ、頂点、画素、または他のシェーディング動作を行い得る。シェーダユニット４６は、各々がフェッチおよび復号動作のための１つまたは複数のコンポーネント、算術計算（arithmetic calculations）を行う１つまたは複数のＡＬＵ、１つまたは複数のメモリ、キャッシュ、およびレジスタを含み得るシェーダプロセッサ４８を含み得る。
【００３１】
[0038]  ＧＰＵ１２は、グラフィックス処理パイプラインにおける頂点シェーダステージ、ハルシェーダステージ、ドメインシェーダステージ、ジオメトリシェーダステージ、および画素シェーダステージのうちの１つまたは複数を実行するためにコマンドをシェーダユニット４６に送ることによって、頂点シェーディング、ハルシェーディング、ドメインシェーディング、ジオメトリシェーディング、画素シェーディング等のような様々なシェーディング動作を行うようにシェーダユニット４６を指定し得る。いくつかの例において、ＧＰＵドライバ２２は、１つまたは複数のシェーダプログラムをコンパイルし、コンパイルされたシェーダプログラムをＧＰＵ１２内に包含される１つまたは複数のプログラマブルシェーダユニット上にダウンロードするように構成され得る。シェーダプログラムは、例えば、OpenGLシェーディングランゲージ（ＧＬＳＬ）、ハイレベルシェーディングランゲージ（ＨＬＳＬ）、グラフィックスのためのＣ言語（C for Graphics）(Cg)シェーディングランゲージ等のような、ハイレベルシェーディングランゲージで書かれ得る。コンパイルされたシェーダプログラムは、ＧＰＵ１２内のシェーダユニット４６の動作を制御する１つまたは複数の命令を含み得る。例えば、シェーダプログラムは、頂点シェーダステージの機能を行うためにシェーダユニット４６によって実行され得る頂点シェーダプログラム、ハルシェーダステージの機能を行うためにシェーダユニット４６によって実行され得るハルシェーダプログラム、ドメインシェーダステージの機能を行うためにシェーダユニット４６によって実行され得るドメインシェーダプログラム、ジオメトリシェーダステージの機能を行うためにシェーダユニット４６によって実行され得るジオメトリシェーダプログラム、および／または画素シェーダの機能を行うためにシェーダユニット４６によって実行され得る画素シェーダプログラムを含み得る。頂点シェーダプログラムは、プログラマブル頂点シェーダユニット、または統合されたシェーダユニットの実行を制御でき、１つまたは複数の頂点単位の動作を特定する命令を含み得る。 
[0039]  グラフィックスメモリ４０は、ＧＰＵ１２の集積回路に物理的に統合されたオンチップ記憶装置、またはメモリを含み得る。グラフィックスメモリ４０がオンチップである場合、ＧＰＵ１２は、システムバスを介してシステムメモリ１０から値を読み取ること、またはシステムメモリ１０に値を書き込むことより速くグラフィックスメモリ４０から値を読み取り、またはグラフィックスメモリ４０に値を書き込むことが可能であり得る。
【００３２】
[0040]  ＧＰＵ１２はまた、透過的フォーマット変換器(ＴＦＣ)２４を含み得る。ＴＦＣ２４は、ＣＰＵ６または任意の他の処理コアをイネーブルするハードウェアであり得、グラフィックスメモリ４０に保存された画素データ４１に従う画素フォーマットをサポートしない任意の他の処理コアがあたかもＣＰＵ６によってサポートされた画素フォーマットに従ってグラフィックスメモリ４０に保存された画素データ４１を見るようにする。イネーブルするハードウェアであり得る。
言替えると、ＣＰＵ６は、ＴＦＣ２４を通じて、グラフィックスメモリ４０に保存された画素データを、それがサポートする画素フォーマットで読み書き可能である。例えば、画素データがグラフィックスメモリ４０にタイル画素フォーマットで保存される場合であって、ＣＰＵ６がＮＶ１２のような線形画素フォーマットをサポートする場合に、ＴＦＣ２４は、画素データ４１がＣＰＵ６によってサポートされるＮＶ１２のような線形フォーマットで整列されてＣＰＵ６に現れるようにして、画素データ４１の線形ベースビューをＣＰＵ６に提供し得る。ＴＦＣ２４は、ＣＰＵ６によってサポートされる画素フォーマットに従う画素データ４１に対するＣＰＵ６によるどの書き込みもそれがグラフィックメモリ４０に保存されるフォーマットに戻すように翻訳し得る。このため、ＴＦＣ２４は、画素データ４１がＣＰＵ６によってサポートされる画素フォーマットにあったかのように画素データ４１を扱うことをＣＰＵ６にイネーブルして、画素データ４１がＣＰＵ６によってサポートされない画素フォーマットでグラフィックスメモリ４０に保存される一方でＣＰＵ６が画素データ４１をＣＰＵ６によってサポートされる画素フォーマットに従って読み書きできるようにする。
【００３３】
[0041]  本開示の態様に従って、ＴＦＣ２４はグラフィックスメモリ４０に保存された画素データ４１に関する、ＣＰＵ６による要求が第１のデータフォーマットにある画素データ４１に関する要求を示すものであると決定し得る。ＴＦＣ２４は、グラフィックスメモリ４０における画素データ４１に関する要求に少なくとも一部基づいて、第２のデータフォーマットにある画素データ４１をグラフィックスメモリ４０から取得し得る。ＴＦＣ２４は、取得された画素データ４１を第２のデータフォーマットから第１のデータフォーマットへ変換し得る。ＴＦＣ２４は、第１のデータフォーマットにある変換された画素データ４１を、プロセッサ６によってアクセス可能であるキャッシュのようなメモリに保存し得る。
【００３４】
[0042]  いくつかの例において、ＴＦＣ２４はＧＰＵ１２に含まれる特定のハードウェアロジックであり得る。いくつかの他の例において、ＴＦＣ２４はシェーダユニット４６のシェーダプロセッサ４８によって実行されるシェーダコードを含み得る。他の例において、ＴＦＣ２４は計算デバイス２に含まれるものの、厳密にはＧＰＵ１２に含まれない特定のハードウェアロジックであり得る。例えば、ＴＦＣ２４はＣＰＵ６に組み込まれ得るか、またはＣＰＵ６およびＧＰＵ１２から分離された独立型ハードウェアコンポーネントであり得る。
【００３５】
[0043]  図３は、図２のＴＦＣ２４の例示的な機能を例示するブロック図である。図３に示すように、グラフィックスメモリ４０は、タイルベース画素フォーマットに従う画素データ４１を保存し得る。プロセッサ２６は、タイルベース画素フォーマットからの読み取りおよびタイルベース画素フォーマットへの書き込みのできない処理コアであり得る。例えば、プロセッサ２６は線形画素フォーマットをサポートし得るものの、タイルベース画素フォーマットをサポートし得ない。プロセッサ２６が画素データ４１に対して読み書きすることをイネーブルするために、ＴＦＣ２４は、どのように画素データ４１がグラフィックスメモリ４０に保存されているかとは無関係(independent)のプロセッサ２６にグラフィックスメモリ４０に保存された画素データ４１のビュー４３を提供し得る。ビュー４３はプロセッサ２６によってサポートされる画素フォーマットにある画素データ４１を表し、プロセッサ２６の視点から、グラフィックスデータがプロセッサ２６のサポートする、ＹＵＶ、ＮＶ１、および同等なもののような画素フォーマットに従ってビュー４３でレイアウトされるようにし得る。ＴＦＣ２４はそれゆえ、画素データ４１がグラフィックスメモリ４０に保存されるかのように、プロセッサ２６が画素データ４１に対してよみ書きをすることをイネーブルし得る。ＴＦＣ２４はプロセッサ２６から読出および書込要求を受けることができ、これら読出および書込要求を画素データ４１のタイルベース画素フォーマットのための適切な読出および書込要求に翻訳できる。
【００３６】
[0044]  プロセッサ２６にビュー４３を提示するＴＦＣ２４は、プロセッサ２６に色アパチャ(colored aperture)を提示することを含み得る。色アパチャは、特定のターゲット画素フォーマットで物理メモリをアクセスするために使用できる、物理的および／または仮想のうちのどちらかのアドレス範囲であり得る。例えば、ＴＦＣ２４は、プロセッサ２６によってサポートされる画素フォーマットにある画素データ４１をアクセスするためにプロセッサ２６がメモリアクセスし得る仮想アドレス範囲をプロセッサ２６に提示し得る。ＴＦＣ２４は、プロセッサ２６が色アパチャを読み出しまたは書き込みをしようとしているとＴＦＣ２４が決定した場合に、プロセッサ２６からのメモリ要求の仮想アドレスに基づいて、プロセッサ２６によってサポートされる画素フォーマットにある画素データ４１からの読み出しまたはへの書き込みをプロセッサ２６がしようとしていると決定可能であり得る。複数の異なるソフトウェアアプリケーションおよび／または異なるプロセッサが画素データ４１へのアクセスを要求する場合、ＴＦＣ２４が重複しない異なるソフトウェアアプリケーションおよび／または異なるプロセッサの各々ために一意の色アパチャを提供し得る。このようにして、ＴＦＣ２４は要求しているソフトウェアアプリケーションおよび／またはプロセッサを、これらソフトウェアアプリケーションおよび／またはプロセッサからの画素データ４１に関するアクセスのための要求に含まれた仮想アドレスに少なくとも一部基づいてこれらソフトウェアアプリケーションおよび／またはプロセッサによってサポートされる画素フォーマットと共に決定することが可能であり得る。
【００３７】
[0045]  図４は、図２のＴＦＣ２４の例示的な実施形態を例示するブロック図である。図４に示すように、プロセッサ５０Ａおよびプロセッサ５０Ｂは各々グラフィックスメモリ４０に保存された画素データ４１に対するアクセスを要求し得る。プロセッサ５０Ａがアクセスを要求しているグラフィックスメモリ４０に保存された画素データの基底画素フォーマットをプロセッサ５０Ａがサポートしないかまたはその知識を持たない一方で、プロセッサ５０Ｂがアクセスを要求しているグラフィックメモリ４０に保存された画素データ４１の基底画素フォーマットをサポートするおよび／またはその知識を持ち得る。プロセッサ５０Ａの例は、ＣＰＵ６を、グラフィックスメモリ４０に保存された画素データ４１の画素フォーマットをサポートしないか、またはその知識を持たない任意の他の処理ハードウェアと共に含み得る。より具体的には、プロセッサ５０ＡがＣＰＵ６である場合に、ＣＰＵ６上で実行するソフトウェアアプリケーション１８がグラフィックスメモリ４０に保存された画素データに対するアクセスを要求し得る。プロセッサ５０Ｂの例は、ＧＰＵ１２、シェーダプロセッサ４８、ビデオエンコーダ、複数のビデオデコーダ、ディスプレイプロセッサ、ディスプレイ、デジタル信号プロセッサ(DPSs)、カメラプロセッサ、ビデオプロセッサ、およびグラフィックスメモリ４０に保存された画素データの画素フォーマットをサポートするおよび／またはその知識をもつようなものを含み得る。
【００３８】
[0046]  プロセッサ５０Ａおよび５０Ｂは各々グラフィックスメモリ４０に保存された画素データ４１に対するアクセスを要求し得る。上で論じたように、プロセッサ５０Ａおよび５０Ｂがアクセスを要求する画素データ４１は、プロセッサ５０Ｂによってサポートされるもののプロセッサ５０Ａによってサポートされない特定の画素フォーマットに従って配列され得る。
【００３９】
[0047]  プロセッサ５０Ａは仮想アドレス５１Ａからデータに関する要求をでき、プロセッサ５０Ｂは仮想アドレス５１Ｂからデータに関する要求をできる。ＭＭＵ５２Ａは、プロセッサ５０Ａからのデータに関する要求を扱って仮想アドレス５１Ａを翻訳されたアドレス５３に変換するためにページテーブル５４Ａを使用し得る。例えば、プロセッサ５０ＡがＣＰＵ６である場合に、ＭＭＵ５２ＡがＭＭＵ２３であり得る。ＭＭＵ５２Ａは仮想アドレス５１Ａを、１つまたは複数のカラービットを仮想アドレス５１Ａの前に添付することを含む翻訳されたアドレス５３に変換し、翻訳されたアドレス５３の１つまたは複数の上位ビットが仮想アドレス５１を続けた１つまたは複数のカラービットを含むようにし得る。カラービットはプロセッサ５０Ａによってサポートされる画素フォーマットをＴＦＣ２４へインジケートし得る。例えば、６４ビットアドレス可能空間において、仮想アドレス５１Ａは全６４ビットをとり得ない。このため、ＭＭＵ５２Ａは６４ビット以下の翻訳アドレス５３を生成するために１つまたは複数のカラービットを仮想アドレスに連結可能であり得る。同様に、ＭＭＵ５２Ｂは、プロセッサ５０Ｂからのデータに関する要求を扱い、仮想アドレス５１Ｂを使用して物理アドレス５５Ｂを調べるためにページテーブル５４Ｂを使用し得る。プロセッサ５０Ｂはピクセルデータ４１がグラフィックスメモリ４０に保存された画素フォーマットをサポートすることから、ＭＭＵ５２は、仮想アドレス５１Ｂを翻訳されたアドレスに翻訳する代わりに、グラフィックスメモリ４０における要求されたデータの物理アドレスである物理アドレス５５Ｂへ仮想アドレス５１Ｂを直接的に翻訳できる。
【００４０】
[0048]  ＴＦＣ２４は、翻訳されたアドレス５３を受け取ることができ、ページテーブル５６へインデックスするための翻訳アドレス５３を使用することに少なくとも一部基づいて、プロセッサ５０Ａによって要求されたグラフィックスメモリ４０における画素データ４１のロケーションをインジケートする物理アドレス５５Ａを決定できる。ＴＦＣは、少なくとも物理アドレス５５Ａに一部基づいてグラフィックスメモリ４０における画素データ４１を取得でき、取得された画素データ４１を、画素データ４１がそれに従ってグラフィックスメモリ４０に保存された画素フォーマットから、プロセッサ５０Ａによってサポートされる画素フォーマットに翻訳できる。取得された画素データ４１を翻訳することは、画素データ４１を圧縮解除して、プロセッサ５０Ａ等によってサポートされる画素フォーマットに従って画素情報を再編成することを含み得る。ＴＦＣ２４は、変換された画素データ４１をプロセッサ５０Ａ内の１つまたは複数のキャッシュ(例えば、1つまたは複数のキャッシュ１５)に保存することなどで、変換された画素データ４１をプロセッサ５０Ａに戻し得る。
【００４１】
[0049]  プロセッサ５０Ａは、プロセッサ５０Ａによってサポートされる画素フォーマットに従ってその１つまたは複数のキャッシュに保存された画素データ４１に対して読み書きし得る。プロセッサ５０Ａがその１つまたは複数のキャッシュフラッシュから画素データ４１を追い出したときである、キャッシュフラッシュに応答して、ＴＦＣ２４は仮想アドレス５１Ａに少なくとも一部基づいて翻訳されたものである、翻訳されたアドレス５３と一緒にプロセッサ５０Ａから画素データ４１を受け取り得る。ＴＦＣ２４は画素データ４１をグラフィックスメモリ４０にそれが保存される画素フォーマットに戻るように変換でき、画素データ４１がグラフィックスメモリ４０に保存される画素フォーマットに画素情報を再編成すること、および画素データ４１がグラフィックスメモリ４０に保存される画素フォーマットに従って画素情報を圧縮することを含む。ＴＦＣ２４はまた、翻訳されたアドレス５３をページテーブル５６を使用して物理アドレス５５Ａに変換でき、物理アドレス５５Ａで画素データ４１をグラフィックスメモリ４０に保存できる。
【００４２】
[0050]  図５は、図４の翻訳されたアドレス５３の例示的なフォーマットを例示するブロック図である。図５に示すように、翻訳されたアドレス５３は、画素データ４１へのアクセスを要求しているプロセッサを識別する１つまたは複数の上位ビットと共にこのプロセッサによってサポートされた１つまたは複数の画素フォーマットを含み得る。翻訳されたアドレス５３は、仮想アドレス５１に連結された１つまたは複数の上位ビットを含み得る。一例において、翻訳されたアドレス５３の１つまたは複数の最上位ビットはカラービット５７を含み得る。カラービット５７は、要求しているプロセッサによってサポートされた画素フォーマットを特定する１つまたは複数のビットであり得る。他の例において、翻訳されたアドレス５３の１つまたは複数の最上位ビットは、要求しているプロセッサを識別するマスターＩＤ５８と共に、翻訳されたアドレス５３の最上位ビットが１である場合に１にセットされるビット５９を含み得る。他の例において、翻訳されたアドレス５３の１つまたは複数の最上位ビットは、同様のアクセス許可を持つ複数のプロセッサのグループ内にあるものとして要求しているプロセッサを識別する仮想マシンＩＤ６０と共に、翻訳されたアドレス５３の最上位ビットが１である場合に１にセットされるビット６１を含み得る。
【００４３】
[0051]  図６は、図２のＴＦＣ２４の例示的実施形態を例示するプロック図である。図５に示すように、ＴＦＣ２４は、タグデコーダ６６、翻訳ルックアサイドバッファ（ＴＬＢ）６８、パッキングユニット６９Ａ−６９Ｎ、(「パッキングユニット６９」)、およびアドレス計算ユニット６７を含み得る。ＴＦＣ２４はまた、メタデータサーバ６４およびハードウェアテーブルウォーカ(ＨＴＷ)サーバ６２を含み得る。
【００４４】
[0052]  上で論じたように、ＴＦＣ２４は、翻訳されたアドレス５３を物理アドレス５５Ａに翻訳し得る。ＴＦＣはまた、プロセッサによってサポートされた画素フォーマットと、グラフィックメモリ４０に保存された画素データ４１の画素フォーマットとの間の変換をし得る。タグデコーダ６６は、翻訳されたアドレス５３を復号して、グラフィックスメモリ４０における画素データ４１をアクセスすることを試みている処理コア(例えば、プロセッサ５０Ａ)によってサポートされた画素フォーマットのような、翻訳されたアドレスに含まれる情報を決定すし得る。
【００４５】
[0053]  メタデータサーバ６４は、ＴＦＣ２４によって受け取った、翻訳されたアドレス５３のために１つまたは複数のビュー定義を決定し得る。翻訳されたアドレス５３のためのビュー定義は、画素データ４１に関する要求を送ったプロセッサ５０Ａに関する情報と共に、翻訳されたアドレス５３を介して要求された画素データ４１に関する情報を含み得る。１つまたは複数のビュー定義は、要求された画素データ４１のステータス、要求された画素データ４１の開始アドレス、要求された画素データ４１の長さ、要求しているプロセッサ５０Ａによってサポートされたターゲット画素フォーマット、要求された画素データ４１のタイル幅およタイル長、要求された画素データ４１のストライド(stride)、等と共に、画素データ４１を要求しているプロセッサ５０Ａによってサポートされる画素フォーマットに変換するために必要であり得る任意の他の必要データを含み得る。いくつかの例において、メタデータサーバ６４は、それが受け取る、翻訳されたアドレス５３毎の１つまたは複数のビュー定義を含み得る。
【００４６】
[0054]  アドレス計算ユニット６７は、翻訳されたアドレス５３から物理アドレス５５Ａを決定し得る。ＴＬＢ６８は、物理アドレス翻訳に対する１つまたは複数の翻訳されたアドレスをキャッシュし得る。アドレス計算ユニット６７は、ＴＬＢ６８が翻訳されたアドレス５３の物理アドレス５５Ａをキャッシュしたかどうか決定するためにＴＬＢ６８に問い合わせ得る。ＴＬＢ６８が翻訳されたアドレス５３の物理アドレス５５Ａをキャッシュしていれば、ＴＦＣ２４がメタデータサーバ６４によって提供された画素データ４１のためのビュー定義に基づいて物理アドレス５５Ａで画素データ４１をアクセスし得る。
【００４７】
[0055]  ＴＬＢ６８が翻訳されたアドレス５３の物理アドレス５５Ａをキャッシュしていなければ、アドレス計算ユニット６７が翻訳されたアドレス５３のカラービットをはがし(strip)得、このはがされた翻訳されたアドレスを翻訳されたアドレス５３の物理アドレスを決定するためにＨＴＷサーバ６２へ提供し得る。ＨＴＷサーバ６２は、１つまたは複数のページテーブル(例えば、ページテーブル５４Ａおよび／またはページテープル５６)をアクセスし、翻訳されたアドレス５３の物理アドレス５５Ａを決定するためのハードウェアであり得る。ＨＴＷサーバ６２が翻訳されたアドレス５３の物理アドレス５５Ａを決定することに応答して、ＴＦＣ２４はメタデータサーバ６４によって提供された画素データ４１のためのビュー定義に基づいて物理アドレス５５Ａで画素データ４１をアクセスし得る。
【００４８】
[0056]  パッキングユニット６９は、要求している処理コアによってサポートされた画素フォーマットと、グラフィックスメモリ４０に保存された画素データ４１の画素フォーマットとの間の翻訳をし得る。パッキングユニット６９は、画素フォーマット間で変換するためにカラー変換、タイル貼り、タイルはがし、圧縮、圧縮解除、等を行い得る。いくつかの例において、パッキングユニット６９は固定の機能ハードウェアを含み得る。他の例において、パッキングユニット６９の機能は、ＧＰＵ１２、シェーダユニット４６、専用デジタル信号プロセッサ、等を介するような他の手段で実施され得る。いくつかの例において、ＴＦＣ２４の全機能は、シェーダユニット４６上で実行するシェーダコードで実施され得る。
【００４９】
[0057]  図７は、例示的な仮想アドレスを例示的な物理アドレスに翻訳するために２レベルページテーブルマッピングを利用する図２のＴＦＣ２４を例示するブロック図である。単一レベルページテーブルは概ね高レベルオペレーティングシステム(ＨＬＯＳ)によって管理され得ることから、２レベルページテーブルはＴＦＣ２４がアドレスの翻訳および画素フォーマットの変換をＨＬＯＳから隠すことをイネーブルし、ＭＭＵが単一ページテーブルを使用して仮想アドレスを物理アドレスに単純に翻訳することにＨＬＯＳに見えるようにできる。
【００５０】
[0058]  図７に示すように、ＭＭＵ５２Ａは、ページテーブル７０およびページテーブル７２を備える２ステージページテーブルを利用する２レベルＭＭＵであり得る。ＨＬＯＳは、ハイパーバイザーまたは仮想マシンモニタ(ＶＭＭ)がページテーブル７２を管理し得る一方でページテーブル７０を管理し得る。上で論じたように、ハイパーバイザーまたはＶＭＭがページテーブル７２を使用して第２のステージマッピングを管理し得ることから、こうした第２のレベルマッピングがＨＬＯＳから隠され得る。
【００５１】
[0059]  ページテーブル７０および７２は、ソフトウェアアプリケーション１８が画素フォーマット変換のためにノーマルページをマッピング可能であり得る場合に専用メモリセグメントを有し得る。ＭＭＵ５２Ａはまた、ページテーブル７０および７２を使用してユーザアドレス空間およびカーネルアドレス空間を管理し得る。ユーザアドレス空間は、カーネルアドレス空間がカーネルのような低レベル特権コードによってアクセス可能であり得る一方で、ＨＬＯＳ上で稼働しているソフトウェアアプリケーションによってアクセス可能であり得る。こうして、カーネルアドレス空間は無特権ソフトウェアアプリケーションによるアクセスから保護され得る。ページテーブル７０および７２は、ユーザアドレス空間仮想アドレスを翻訳するためのユーザアドレス空間部分７４およびカーネルアドレス空間仮想アドレスを翻訳するためのカーネルアドレス空間部分７６を含み得る。
【００５２】
[0060]  図７の例において、仮想アドレス５１Ａは、ユーザアドレス空間にあり得る0x7800であり得る。ＭＭＵ５２Ａは、ページテーブル７０へインデックスするための仮想アドレス５１Ａを利用して、仮想アドレス５１Ａを0xabcdの中間物理アドレス(intermediate physical address)７１へ翻訳し得る。ＩＰＡ７１は、カラービット５７のようなカラービットに連結された仮想アドレス５１Ａであり得、ＭＭＵ５２Ａはページテーブル７２へインデックスするためのＩＰＡを使用して、中間物理アドレス７１を0x1002000の中間物理アドレス７３へ翻訳し得る。ＩＰＡ７３は、その１つまたは複数の最上位ビットにあるＩＰＡ７１のカラービットに保持され得る。中間物理アドレス７３は、図４の変換されたアドレス５３と同じであり得る。
【００５３】
[0061]  ＴＦＣ２４は、0x1002000の物理アドレス７３からカラービット0x1000000をはがし、物理アドレス５５Ａを決定するために結果のアドレス0x2000をＨＴＷサーバ６２に提供し得る。結果のアドレス0x2000はカーネルアドレス空間にあり得ることから、ＨＴＷサーバ６２は、結果のアドレス0x2000を利用して、ページテーブル７２のカーネルアドレス空間部分７６へインデックスして、0xceedのアドレスをもたらし得る。ＨＴＷサーバ６２は、さらにページテーブル７２のカーネルアドレス空間部分７６へインデックスするために0xceedのアドレスを利用して0x0800の物理アドレス５５Ａをもたらし得る。ＨＴＷサーバ６２は、0x0800の物理アドレス５５ＡをＴＦＣ２４に提供でき、ＴＦＣは0x0800の物理アドレス５５Ａでグラフィックスメモリ４０をアクセスできる。こうして、ページテーブル７０および７２のカーネルアドレス空間部分７６は図４のページテーブル５６の役を務め得る。
【００５４】
[0062]  物理アドレス５５Ａを決定するためにページテーブル７０および７２のカーネルアドレス空間およびカーネルアドレス空間部分７６を利用することによって、ＴＦＣ２４はＣＰＵ６のようなプロセッサによって課せされたセキュリティ体制を使用して物理アドレス５５Ａへの仮想アドレス５１Ａの翻訳を行い得る。このセキュリティ体制はまた、複数のソフトウェアアプリケーションおよび／または複数の処理コアのための複数のカラーアパチャを生成することにおいてＴＦＣ２４をメモリ効率的にできる。
【００５５】
[0063]  図８は、透過的に画素フォーマットを変換するためのプロセスを例示するフローチャートである。図８に示すように、このプロセスは、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにあるこのデータに関する要求を示すものであると、ＴＦＣ２４によって、決定すること(１０２)を含み得る。方法は、第１のデータバッファに保存されたデータに関する要求に少なくとも一部基づいて、第２のデータフォーマットにあるこのデータを第１のデータバッファから、ＴＦＣ２４によって、取得すること(１０４)をさらに含み得る。方法は、取得されたデータを第２のデータフォーマットから第１のデータフォーマットへ、ＴＦＣ２４によって、変換すること(１０６)をさらに含み得る。方法は、第１のデータフォーマットにある変換されたデータを、少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに、ＴＦＣ２４によって、保存すること(１０８)をさらに含み得る。
【００５６】
[0064]  いくつかの例において、第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が、仮想アドレス５１Ａで保存されたデータに関する要求を含み、第２のデータフォーマットにあるこのデータを第１のデータバッファから、ＴＦＣ２４によって、取得することは、第２のデータフォーマットにあるこのデータを仮想アドレスに対応する物理アドレスで第１のデータバッファから、ＴＦＣ２４によって、取得することをさらに備える。いくつかの例において、プロセスは仮想アドレス５１Ａに少なくとも一部基づき、翻訳されたアドレス５３をＭＭＵ５２Ａによって、決定することと、翻訳されたアドレス５３に少なくとも一部基づいて、物理アドレス５５ＡをＴＦＣ２４によって、決定することとをさらに含む。
【００５７】
[0065]  いくつかの例において、翻訳されたアドレス５３の１つまたは複数の最上位ビットは、１つまたは複数のカラービットを備え、ここにおいて１つまたは複数のカラービットは１つまたは複数のプロセッサによってサポートされた少なくとも画素フォーマットをインジケートする。いくつかの例において、翻訳されたアドレス５３を決定することは、仮想アドレス５１Ａに少なくとも一部基づいて１つまたは複数のカラービットを、ＭＭＵ５２Ａによって、決定することをさらに含む。いくつかの例において、プロセスは、仮想アドレス５１Ａに少なくとも一部基づいて、第１のレベルページテーブル７０を使用するＭＭＵ５２Ａによって、中間物理アドレス７１を決定することと、中間物理アドレス７１に少なくとも一部基づいて、第２のレベルページテーブル７２を使用するＭＭＵ５２Ａによって、翻訳されたアドレス５３を決定することとをさらに含む。いくつかの例において、翻訳されたアドレス５３に少なくとも一部基づいて物理アドレス５５Ａを、ＴＦＣ２４によって、決定することは、１つまたは複数のページテーブル７０および７２のカーネルアドレス空間部分７６に少なくとも一部基づいて物理アドレス５５Ａを、ＴＦＣ２４によって、決定することさらに含む。
【００５８】
[0066]  いくつかの例において、第２のデータバッファは、少なくとも１つのプロセッサのためにキャッシュを備える。いくつかの例において、データは画素データ４１を備え、第１のデータフォーマットは第１の画素フォーマットを備え、第２のデータフォーマットは第２の画素フォーマットを備える。いくつかの例において、プロセスは、第１のデータフォーマットにある第２のデータを少なくとも１つのプロセッサから、ＴＦＣ２４によって、受け取ることと、第２のデータを第１のデータフォーマットから第２のデータフォーマットへ、ＴＦＣ２４によって、変換することと、第２のデータフォーマットにある、変換されたデータを第１のデータバッファに、ＴＦＣ２４によって、保存することとをさらに含む。
【００５９】
[0067]  １つまたは複数の例において、記載された機能は、ハードウェア、ソフトウェア、ファ−ムウェア、またはそれらの任意の組合せに実施され得る。ソフトウェアで実施される場合、機能は、コンピュータ可読媒体上における１つまたは複数の命令またはコードとして記憶または送信され得る。コンピュータ読取可能媒体は、１つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体またはコンピュータデータ記憶媒体を含みうる。データ記憶媒体は、本開示内で説明された技法の実施形態のための命令、コード、および／またはデータ構造を取り出すために、１つまたは複数のコンピュータまたは１つまたは複数のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは命令またはデータ構造の形式で所望のプログラムコードを搬送または記憶するよう使用されることができ、コンピュータによってアクセスされることができる任意の他の媒体を備えることができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、ソフトウェアがウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技法を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技法は送信媒体の定義に含まれている。ディスク（disk）およびディスク（disc）は、本明細書で使用される場合、コンパクトディスク（ＣＤ）（disc）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（ＤＶＤ）（disc）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙ（登録商標）ディスク（disc）を含み、ここで、ディスク（disk）は通常、磁気的にデータを再生し、その一方でディスク（disc）は、レーザーを用いて光学的にデータを再生する。上記の組み合わせはまた、コンピュータ可読媒体の範疇に含まれるべきである。
【００６０】
[0068]  コードは、１つまたは複数の１デジタルシグナルプロセッサ（ＤＳＰｓ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣｓ）、フィールドプログラマブル論理アレイ（ＦＰＧＡｓ）、または他の同等な集積またはディスクリートな論理回路等の、１つまたは複数のプロセッサによって実行され得る。従って、本開示で使用される場合、「プロセッサ」および「処理ユニット／処理装置」という用語は、前述の構造、または本開示に説明される技法の実施形態に適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本開示に説明される機能は、符号化および復号のために構成された専用ハードウェアおよび／またはソフトウェアモジュール内で提供され得る、あるいは組み合わせられたコーデック内に組み込まれ得る。また、技法は、１つまたは複数の回路または論理要素で完全に実施され得る。 
[0069]  本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣｓのセット（例えば、チップセット）を含む、幅広い様々なデバイスまたは装置で実施され得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を行うように構成されるデバイスの機能的な態様を強調するように本開示において説明されるが、必ずしも異なるハードウェアユニットによる実現を必要としない。むしろ、上に説明されたように、様々なユニットは、コーデックハードウェアユニットに組み合わされ得るか、または適切なソフトウェアおよび／またはファームウェアと併せて、上に説明されたような１つまたは複数のプロセッサを含む、相互運用のハードウェアユニット（interoperative hardware units）の集合によって提供され得る。
【００６１】
[0070]  本開示の様々な態様が説明されてきた。これらおよび他の態様は、特許請求の範囲の範疇にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]  画素処理のための方法であって、
第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにある前記データに関する要求を示すものであると、透過的フォーマット変換器(ＴＦＣ)によって、決定することと、
前記第１のデータバッファに保存されたデータに関する前記要求に少なくとも一部基づいて、第２のデータフォーマットにある前記データを前記第１のデータバッファから、前記ＴＦＣによって、取得することと、
前記取得されたデータを前記第２のデータフォーマットから前記第１のデータフォーマットへ、前記ＴＦＣによって、変換することと、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに、前記ＴＦＣによって、保存することと
を備える、方法。
[Ｃ２]  前記第１のデータバッファに保存されたデータに関する、前記少なくとも１つのプロセッサによる前記要求は、仮想アドレスに保存されたデータに関する要求を備え、
前記第２のデータフォーマットにある前記データを前記第１のデータバッファから、前記ＴＦＣによって、取得することは、前記第２のデータフォーマットにある前記データを、前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから、前記ＴＦＣによって、取得することをさらに備える、Ｃ１に記載の方法。
[Ｃ３]  前記仮想アドレスに少なくとも一部基づいて翻訳されたアドレスを、メモリ管理ユニット(ＭＭＵ)によって、決定することと、
前記翻訳されたアドレスに少なくとも一部基づいて前記物理アドレスを、前記ＴＦＣによって、決定することと
をさらに備える、Ｃ２に記載の方法。
[Ｃ４]  前記翻訳されたアドレスの１つまたは複数の最上位ビットは１つまたは複数のカラービットを備え、前記１つまたは複数のカラービットは前記１つまたは複数のプロセッサによってサポートされた少なくとも画素フォーマットをインジケートする、Ｃ３に記載の方法。
[Ｃ５]  前記翻訳されたアドレスを決定することは、前記仮想アドレスに少なくとも一部基づいて前記１つまたは複数のカラービットを、ＭＭＵによって、決定することをさらに備える、Ｃ３に記載の方法。
[Ｃ６]  前記仮想アドレスに少なくとも一部基づいて中間物理アドレスを、第１のレベルページテーブルを使用するＭＭＵによって、決定することと、
前記中間物理アドレスに少なくとも一部基づいて前記翻訳されたアドレスを、第２のレベルページテーブルを使用するＭＭＵによって、決定することとをさらに備える、Ｃ３に記載の方法。
[Ｃ７]  前記翻訳されたアドレスに少なくとも一部基づいて前記物理アドレスを、前記ＴＦＣによって、決定することは、１つまたは複数のページテーブルのカーネルアドレス空間部分に少なくとも一部基づいて前記物理アドレスを、前記ＴＦＣによって、決定することをさらに備える、Ｃ３に記載の方法。
[Ｃ８]  前記第２のデータバッファは前記少なくとも１つのプロセッサのためのキャッシュを備える、Ｃ１に記載の方法。
[Ｃ９]  前記データは画素データを備え、
前記第１のデータフォーマットは第１の画素フォーマットを備え、
前記第２のデータフォーマットは第２の画素フォーマットを備える、Ｃ１に記載の方法。
[Ｃ１０]  前記第１のデータフォーマットにある第２のデータを、前記少なくとも１つのプロセッサから前記ＴＦＣによって、受け取ることと、
前記第２のデータを前記第１のデータフォーマットから前記第２のデータフォーマットへ、前記ＴＦＣによって、変換することと、
前記第２のデータフォーマットにある前記変換されたデータを前記第１のデータバッファに、前記ＴＦＣによって、保存することと
をさらに備える、Ｃ１に記載の方法。
[Ｃ１１]  第１のデータバッファと、
第２のデータバッファと、
少なくとも１つのプロセッサと、
前記第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにある前記データに関する要求を示すものであると決定し、
前記第１のデータバッファに保存されたデータに関する前記要求に少なくとも一部基づいて、第２のデータフォーマットにある前記データを前記第１のデータバッファから取得し、
前記取得されたデータを前記第２のデータフォーマットから前記第１のデータフォーマットへ変換し、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である前記第２のデータバッファに保存するように構成される透過的フォーマット変換器と
を備える、計算デバイス。
[Ｃ１２]  前記第１のデータバッファに保存されたデータに関する、前記少なくとも１つのプロセッサによる前記要求は、仮想アドレスに保存されたデータに関する要求を備え、
前記ＴＦＣは、前記第２のデータフォーマットにある前記データを、前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから取得するようにさらに構成される、Ｃ１１に記載の計算デバイス。
[Ｃ１３]  前記仮想アドレスに少なくとも一部基づいて翻訳されたアドレスを決定するように構成されるメモリ管理ユニット(ＭＭＵ)をさらに備え、
前記ＴＦＣは、前記翻訳されたアドレスに少なくとも一部基づいて前記物理アドレスを決定するようにさらに構成される、Ｃ１２に記載の計算デバイス。
[Ｃ１４]  前記翻訳されたアドレスの１つまたは複数の最上位ビットは１つまたは複数のカラービットを備え、前記１つまたは複数のカラービットは前記１つまたは複数のプロセッサによってサポートされた少なくとも画素フォーマットをインジケートする、Ｃ１３に記載の計算デバイス。
[Ｃ１５]  前記ＭＭＵは、前記仮想アドレスに少なくとも一部基づいて前記１つまたは複数のカラービットを決定するようにさらに構成される、Ｃ１３に記載の計算デバイス。
[Ｃ１６]  前記ＭＭＵは、
第１のレベルページテーブルを使用し、前記仮想アドレスに少なくとも一部基づいて中間物理アドレスを決定し、
第２のレベルページテーブルを使用し、前記中間物理アドレスに少なくとも一部基づいて前記翻訳されたアドレスを決定する
ようにさらに構成される、Ｃ１３に記載の計算デバイス。
[Ｃ１７]  前記ＴＦＣは、１つまたは複数のページテーブルのカーネルアドレス空間部分に少なくとも一部基づいて前記物理アドレスを決定するようにさらに構成される、Ｃ１３に記載の計算デバイス。
[Ｃ１８]  前記第２のデータバッファは前記少なくとも１つのプロセッサのためのキャッシュを備える、Ｃ１１に記載の計算デバイス。
[Ｃ１９]  前記データは画素データを備え、
前記第１のデータフォーマットは第１の画素フォーマットを備え、
前記第２のデータフォーマットは第２の画素フォーマットを備える、Ｃ１１に記載の計算デバイス。
[Ｃ２０]  前記ＴＦＣは、
前記第１のデータフォーマットにある第２のデータを前記少なくとも１つのプロセッサから受け取り、
前記第２のデータを前記第１のデータフォーマットから前記第２のデータフォーマットへ変換し、
前記第２のデータフォーマットにある前記変換されたデータを前記第１のデータバッファに保存する
ようにさらに構成される、Ｃ１１に記載の計算デバイス。
[Ｃ２１]  第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにある前記データに関する要求を示すものであると決定するための手段と、
前記第１のデータバッファに保存されたデータに関する前記要求に少なくとも一部基づいて、第２のデータフォーマットにある前記データを前記第１のデータバッファから取得するための手段と、
前記取得されたデータを前記第２のデータフォーマットから前記第１のデータフォーマットへ変換するための手段と、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに保存するための手段と
を備える、装置。
[Ｃ２２]  前記第１のデータバッファに保存されたデータに関する、前記少なくとも１つのプロセッサによる前記要求は、仮想アドレスに保存されたデータに関する要求を備え、
前記第２のデータフォーマットにある前記データを前記第１のデータバッファから取得するための前記手段は、前記第２のデータフォーマットにある前記データを、前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから取得するための手段をさらに備える、Ｃ２１に記載の装置。
[Ｃ２３]  前記仮想アドレスに少なくとも一部基づいて翻訳されたアドレスを決定するための手段と、
前記翻訳されたアドレスに少なくとも一部基づいて前記物理アドレスを決定するための手段と
をさらに備える、Ｃ２２に記載の装置。
[Ｃ２４]  前記翻訳されたアドレスの１つまたは複数の最上位ビットは１つまたは複数のカラービットを備え、前記１つまたは複数のカラービットは前記１つまたは複数のプロセッサによってサポートされた少なくとも画素フォーマットをインジケートする、Ｃ２３に記載の装置。
[Ｃ２５]  前記翻訳されたアドレスを決定するための前記手段は、前記仮想アドレスに少なくとも一部基づいて前記１つまたは複数のカラービットを決定するための手段をさらに備える、Ｃ２３に記載の装置。
[Ｃ２６]  第１のデータバッファに保存されたデータに関する、少なくとも１つのプロセッサによる要求が第１のデータフォーマットにある前記データに関する要求を示すものであると、透過的フォーマット変換器(ＴＦＣ)によって、決定することと、
前記第１のデータバッファに保存されたデータに関する前記要求に少なくとも一部基づいて、第２のデータフォーマットにある前記データを前記第１のデータバッファから、前記ＴＦＣによって、取得することと、
前記取得されたデータを前記第２のデータフォーマットから前記第１のデータフォーマットへ、前記ＴＦＣによって、変換することと、
前記第１のデータフォーマットにある前記変換されたデータを、前記少なくとも１つのプロセッサによってアクセス可能である第２のデータバッファに、前記ＴＦＣによって、保存することと
をプログラマブルプロセッサにさせるための命令を備える、コンピュータ可読媒体。
[Ｃ２７]  前記第１のデータバッファに保存されたデータに関する、前記少なくとも１つのプロセッサによる前記要求は、仮想アドレスに保存されたデータに関する要求を備え、
前記第２のデータフォーマットにある前記データを前記第１のデータバッファから、前記ＴＦＣによって、取得することは、前記第２のデータフォーマットにある前記データを、前記仮想アドレスに対応する物理アドレスで前記第１のデータバッファから、前記ＴＦＣによって、取得することをさらに備える、Ｃ２６に記載のコンピュータ可読媒体。
[Ｃ２８]  前記仮想アドレスに少なくとも一部基づいて翻訳されたアドレスを、メモリ管理ユニット(ＭＭＵ)によって、決定することと、
前記翻訳されたアドレスに少なくとも一部基づいて前記物理アドレスを、前記ＴＦＣによって、決定することと
をさらに備える、Ｃ２７に記載のコンピュータ可読媒体。
[Ｃ２９]  前記翻訳されたアドレスの１つまたは複数の最上位ビットは１つまたは複数のカラービットを備え、前記１つまたは複数のカラービットは前記１つまたは複数のプロセッサによってサポートされた少なくとも画素フォーマットをインジケートする、Ｃ２８に記載のコンピュータ可読媒体。
[Ｃ３０]  前記翻訳されたアドレスを決定することは、前記仮想アドレスに少なくとも一部基づいて前記１つまたは複数のカラービットを、ＭＭＵによって、決定することをさらに備える、Ｃ２８に記載のコンピュータ可読媒体。
【図１】
0006271812.tif 000002
【図２】
0006271812.tif 000003
【図３】
0006271812.tif 000004
【図４】
0006271812.tif 000005
【図５】
0006271812.tif 000006
【図６】
0006271812.tif 000007
【図７】
0006271812.tif 000008
【図８】
0006271812.tif 000009