(57)【要約】  本開示は、異なる実行ユニットを使用して、混合精度（例えば完全精度、半精度）命令を実行することが可能なプログラマブルストリーミングプロセッサに関する。様々な実行ユニットは、それぞれがグラフィックスデータを使用して指定の精度レベルで命令を実行することが可能である。例示的なプログラマブルシェーダプロセッサは、コントローラと、複数の実行ユニットとを含む。コントローラは、実行のための命令を受け取り、命令の実行に対するデータ精度の指示を受け取るために構成されている。コントローラは、また、実行されると、命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する個別の変換命令を受け取るために構成されている。実施可能な場合、コントローラは、示されたデータ精度に基づいて実行ユニットのうちの１つを選択する。コントローラは、その後、選択された実行ユニットに、命令に関連付けられたグラフィックスデータを用いて、示されたデータ精度で命令を実行させる。【選択図】  図２Ｂ
2011518398.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取ること、
前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を備える方法。
【請求項２】
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
前記計算結果を出力として提供すること、
をさらに備える請求項１の方法。
【請求項３】
前記複数の実行ユニットの１つを選択することは、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択すること、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択すること、
を備える請求項１の方法。
【請求項４】
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、請求項３の方法。
【請求項５】
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、請求項１の方法。
【請求項６】
前記示されるデータ精度に基づいて、前記プロセッサ内の前記複数の実行ユニットの１つを選択することは、前記第１のセットの中の前記実行ユニットの１つを選択することを備え、
前記選択された実行ユニットを使用して前記グラフィックス命令を実行することは、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを備える、
請求項５の方法。
【請求項７】
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取ること、
前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取ること、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択すること、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行すること、
をさらに備える請求項６の方法。
【請求項８】
前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることは、前記グラフィックス命令を復号して、前記データ精度を判定することを備える、請求項１の方法。
【請求項９】
前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することは、
前記グラフィックスデータを前記示されたデータ精度に変換すること、および
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を備える請求項１の方法。
【請求項１０】
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、請求項１の方法。
【請求項１１】
プログラマブルストリーミングプロセッサに、
前記プロセッサ内での実行のためのグラフィックス命令を受け取ること、
前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を行わせるための命令を備えるコンピュータ可読媒体。
【請求項１２】
前記プロセッサに、
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
前記計算結果を出力として提供すること、
を行わせるための命令をさらに備える、請求項１１のコンピュータ可読媒体。
【請求項１３】
前記プロセッサに、前記複数の実行ユニットの１つを選択することを行わせるための前記命令は、
前記プロセッサに、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択すること、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択すること、
を行わせるための命令を備える、請求項１１のコンピュータ可読媒体。
【請求項１４】
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、請求項１３のコンピュータ可読媒体。
【請求項１５】
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、請求項１１のコンピュータ可読媒体。
【請求項１６】
前記プロセッサに、前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの１つを選択することを行わせるための前記命令は、前記プロセッサに、前記第１のセットの中の前記実行ユニットの１つを選択することを行わせるための命令を備え、
前期プロセッサに、前記選択された実行ユニットを使用して前記グラフィックス命令を実行することを行わせるための前記命令は、前記プロセッサに、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための命令を備える、
請求項１５のコンピュータ可読媒体。
【請求項１７】
前記プロセッサに、
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取ること、
前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取ること、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択すること、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行すること、
を行わせるための命令をさらに備える、請求項１６のコンピュータ可読媒体。
【請求項１８】
前記プロセッサに、前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることを行わせるための前記命令は、前記プロセッサに、前記グラフィックス命令を復号して、前記データ精度を判定することを行わせるための命令を備える、請求項１１のコンピュータ可読媒体。
【請求項１９】
前記プロセッサに、前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための前記命令は、
前記プロセッサに、
前記グラフィックスデータを前記示されたデータ精度に変換すること、
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を行わせるための命令を備える、請求項１１のコンピュータ可読媒体。
【請求項２０】
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、請求項１１のコンピュータ可読媒体。
【請求項２１】
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成されるコントローラと、
前記プロセッサ内の複数の実行ユニットと、
を具備し、
前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの１つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、デバイス。
【請求項２２】
前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第１の実行ユニットと、前記示されたデータ精度とは異なる第２のデータ精度で命令を実行するために構成された第２の実行ユニットとを含み、前記コントローラは、前記第１の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、請求項２１のデバイス。
【請求項２３】
前記複数の実行ユニットは、１または複数の完全精度実行ユニットと少なくとも４つの半精度実行ユニットとを含む、請求項２１のデバイス。
【請求項２４】
前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項２３のデバイス。
【請求項２５】
前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項２３のデバイス。
【請求項２６】
前記少なくとも１つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも１つの完全精度レジスタバンクと、
前記少なくとも４つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも４つの半精度レジスタバンクと、
をさらに具備する、請求項２３のデバイス。
【請求項２７】
前記複数の実行ユニットは、少なくとも１つの完全精度実行ユニットと少なくとも１つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも１つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも１つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、請求項２１のデバイス。
【請求項２８】
前記プロセッサは、シェーダプロセッサを具備する、請求項２１のデバイス。
【請求項２９】
前記デバイスは、無線通信デバイスハンドセットを具備する、請求項２１のデバイス。
【請求項３０】
前記デバイスは、１または複数の集積回路デバイスを具備する、請求項２１のデバイス。
【請求項３１】
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取るための手段と、
前記グラフィックス命令の実行に対するデータ精度の指示を受け取るための手段と、
前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るための手段と、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択するための手段と、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
を備えるデバイス。
【請求項３２】
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取るための手段と、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成するための手段と、
前記計算結果を出力として提供するための手段と、
をさらに備える、請求項３１のデバイス。
【請求項３３】
前記複数の実行ユニットの１つを選択するための手段は、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択するための手段と、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択するための手段と、
を備える、請求項３１のデバイス。
【請求項３４】
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、請求項３３のデバイス。
【請求項３５】
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、請求項３１のデバイス。
【請求項３６】
前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの１つを選択するための手段は、前記第１のセットの中の前記実行ユニットの１つを選択するための手段を備え、
前記選択された実行ユニットを使用して前記グラフィックス命令を実行するための手段は、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行するための手段を備える、
請求項３５のデバイス。
【請求項３７】
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取るための手段と、
前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取るための手段と、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取るための手段と、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択するための手段と、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行するための手段、
をさらに備える、請求項３６のデバイス。
【請求項３８】
前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取るための手段は、前記グラフィックス命令を復号して、前記データ精度を判定するための手段を備える、請求項３１のデバイス。
【請求項３９】
前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段は、
前記グラフィックスデータを前記示されたデータ精度に変換するための手段と、
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
を備える、請求項３１のデバイス。
【請求項４０】
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、請求項３１のデバイス。
【請求項４１】
プログラマブルストリーミングプロセッサと、
前記プロセッサと連結されている少なくとも１つのメモリモジュールと
を具備し、
前記プロセッサは、
前記少なくとも１つのメモリモジュールから実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成されるコントローラと、
命令を実行するために構成されている複数の実行ユニットと、
を具備し、
前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの１つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、デバイス。
【請求項４２】
前記プロセッサに連結されている少なくとも１つのグラフィックスエンジンをさらに具備する、請求項４１のデバイス。
【請求項４３】
前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第１の実行ユニットと、前記示されたデータ精度とは異なる第２のデータ精度で命令を実行するために構成された第２の実行ユニットとを含み、前記コントローラは、前記第１の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、請求項４１のデバイス。
【請求項４４】
前記複数の実行ユニットは、１または複数の完全精度実行ユニットと少なくとも４つの半精度実行ユニットとを含む、請求項４１のデバイス。
【請求項４５】
前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項４４のデバイス。
【請求項４６】
前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項４４のデバイス。
【請求項４７】
前記プロセッサは、
前記少なくとも１つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも１つの完全精度レジスタバンクと、
前記少なくとも４つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも４つの半精度レジスタバンクと、
をさらに具備する、請求項４４のデバイス。
【請求項４８】
前記複数の実行ユニットは、少なくとも１つの完全精度実行ユニットと少なくとも１つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも１つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも１つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、請求項４１のデバイス。
【請求項４９】
前記プロセッサは、シェーダプロセッサを具備する、請求項４１のデバイス。
【請求項５０】
前記デバイスは、無線通信デバイスハンドセットを具備する、請求項４１のデバイス。
【請求項５１】
前記デバイスは、１または複数の集積回路デバイスを具備する、請求項４１のデバイス。
【請求項５２】
グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成すること、
を具備する方法。
【請求項５３】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項５２の方法。
【請求項５４】
前記１または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する１または複数のコンパイルされた命令を生成することを具備する、請求項５２の方法。
【請求項５５】
前記１または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する１または複数のコンパイルされた命令を生成することを具備する、請求項５２の方法。
【請求項５６】
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項５２の方法。
【請求項５７】
後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶することをさらに具備する、請求項５２の方法。
【請求項５８】
プロセッサに、
グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成すること、
を行わせるための命令を具備するコンピュータ可読媒体。
【請求項５９】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項５８のコンピュータ可読媒体。
【請求項６０】
前記プロセッサに、前記１または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、請求項５８のコンピュータ可読媒体。
【請求項６１】
前記プロセッサに、前記１または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、請求項５８のコンピュータ可読媒体。
【請求項６２】
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項５８のコンピュータ可読媒体。
【請求項６３】
前記プロセッサに、後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶することを行わせるための命令をさらに具備する、請求項５８のコンピュータ可読媒体。
【請求項６４】
複数のグラフィックスアプリケーション命令を解析するための手段と、
その実行のための第１のデータ精度レベルを指定する各グラフィックスアプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成するための手段と、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成するための手段と、
を具備する装置。
【請求項６５】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項６４の装置。
【請求項６６】
前記１または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成するための手段を具備する、請求項６４の装置。
【請求項６７】
前記１または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成するための手段を具備する、請求項６４の装置。
【請求項６８】
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項６４の装置。
【請求項６９】
後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶するための手段をさらに具備する、請求項６４の装置。
【請求項７０】
プログラマブルストリーミングプロセッサによって実行されると、グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルを指定する、１または複数の第１の実行可能命令と、
前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルから異なっている第２のデータ精度レベルを指定する、１または複数の第２の実行可能命令と、
前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、前記１または複数の第１の実行可能命令が実行されると、前記第２のデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換する、１または複数の第３の実行可能命令と、
を具備するコンピュータ可読データ記憶媒体。
【請求項７１】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項７０のコンピュータ可読データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、グラフィックス処理、より詳しくは、グラフィックスプロセッサアーキテクチャに関する。
【背景】
【０００２】
グラフィックスデバイスが、ビデオゲーム、グラフィックスプログラム、コンピュータ支援設計（ＣＡＤ）アプリケーション、シミュレーションおよび視覚化ツール、イメージングなどの様々なアプリケーションに関して２Ｄ（２次元）イメージおよび３Ｄ（３次元）イメージを描画するために広く使用されている。グラフィックスデバイスは、イメージを描画する様々なグラフィックス操作を実行するとしてもよい。グラフィックス操作は、ラスタ化、ステンシル／深度試験（stencil and depth tests）、テクスチャマッピング、シェーディングなどを含むとしてもよい。３Ｄイメージは、表面を使用してモデル化されるとしてもよく、各表面は、三角形などの多角形で近似されるとしてもよい。レンダリング目的で３Ｄイメージを表すのに使用される三角形の数は、表面の複雑度、ならびにイメージの所望の解像度に依存する。
【０００３】
各三角形は、３つの頂点によって規定されるとしてもよく、各頂点は、空間座標、色値、およびテクスチャ座標などの様々な属性に関連付けられる。グラフィックスデバイスが、レンダリングプロセス中に頂点プロセッサを使用する場合、頂点プロセッサは、これらの様々な三角形の頂点を処理するとしてもよい。各三角形もピクチャ要素（ピクセル）から成る。グラフィックスデバイスが、レンダリングプロセス中にピクセルプロセッサも使用する、またはピクセルプロセッサを別個に使用する場合、ピクセルプロセッサは、三角形内の各ピクセルの成分の値を判定することによって、各三角形を描画する。
【０００４】
多くの事例において、グラフィックスデバイスは、シェーダプロセッサを利用して、シェーディングなどのいくつかのグラフィックス操作を実行するとしてもよい。シェーディングは、照明およびシャドウイングを含む非常に複雑なグラフィックス操作である。シェーダプロセッサは、レンダリングを実行する際に様々な異なる命令を実行する必要があるとしてもよく、これらの命令の実行を助ける１以上の実行ユニットを通常、含む。例えば、シェーダプロセッサは、算術論理ユニット（ＡＬＵ）および／または初等関数ユニット（ＥＦＵ）を実行ユニットとして含むとしてもよい。しばしば、これらの実行ユニットは、完全（フル）データ精度回路を使用して命令を実行することができる。しかし、そのような回路は、しばしば、より多くのパワーを要求し、さらにこれらの実行ユニットは、グラフィックスデバイスによって使用されるシェーダプロセッサ集積回路内でより多くの物理的スペースを占める場合がある。
【概要】
【０００５】
概ね、本開示は、異なる実行ユニットを使用して混合精度命令（例えば、完全精度、半精度）を実行することが可能なグラフィックスデバイスのプログラマブルストリーミングプロセッサに関する。例えば、プログラマブルプロセッサは、１以上の半精度実行ユニットに加えて１以上の完全精度実行ユニットを含むとしてもよい。バイナリ命令とこの命令の実行に関するデータ制度の指示の受け取りに基づいて、プロセッサは、指示されたデータ精度を伴なう受け取られた命令を実行するための適当な実行ユニットを選択することが可能である。プロセッサは、モバイルグラフィックスアプリケーションに対する命令ベースの適応ストリーミングプロセッサを具備するとしてもよい。
【０００６】
そうすることにより、プロセッサは、単一の実行ユニットを使用して、各種の異なるデータ精度を持つ命令を実行することを回避することができる。この結果、必要ない精度プロモーションは、削減又は削除できる。加えて、アプリケーションプログラマは、異なるアプリケーション命令に対して異なるデータ精度レベルを指定することができ、異なるアプリケーション命令は、さらに、プロセッサによって実行される１以上のバイナリ命令にコンパイルされる。
【０００７】
ある態様において、本開示は、プログラマブルストリーミングプロセッサ内で実行するためにグラフィックス命令を受け取ること、前記グラフィックス命令の実行に関するデータ精度の指示を受け取ること、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、を含む方法について指導される。前記方法は、前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、をさらに備える。
【０００８】
ある態様において、本開示は、プログラマブルストリーミングプロセッサに、前記プロセッサ内での実行のためのグラフィックス命令を受け取ること、前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、を行わせるための命令を備えるコンピュータ可読媒体について指導される。前記コンピュータ可読媒体は、前記プロセッサに、前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、を行わせるための命令をさらに備える。
【０００９】
ある態様において、本開示は、コントローラと複数の実行ユニットを含むプログラマブルストリーミングプロセッサについて指導される。前記コントローラは、実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取るために構成される。前記コントローラは、さらに、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成される。実施可能な場合、前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの１つを選択する。前記コントローラは、その後、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる。
【００１０】
他の態様において、本開示は、プロセッサに、グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、を行わせるための命令を含むコンピュータ可読媒体について指導される。前記コンピュータ可読媒体は、前記プロセッサに、前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成することを行わせるための命令をさらに具備する。
【００１１】
ある態様において、本開示は、プログラマブルストリーミングプロセッサによって実行されると、グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルを指定する、１または複数の第１の実行可能命令を持つコンピュータ可読データ記憶媒体について指導される。前記コンピュータ可読データ記憶媒体は、前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルから異なっている第２のデータ精度レベルを指定する、１または複数の第２の実行可能命令をさらに含む。前記コンピュータ可読データ記憶媒体は、前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、前記１または複数の第１の実行可能命令が実行されると、前記第２のデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換する、１または複数の第３の実行可能命令をさらに含む。
【００１２】
本開示の１または複数の態様の詳細は、添付されている図面と以下の説明において述べる。他の特徴、目的、および効果は、説明および図面、ならびに請求項から明白である。
【図面の簡単な説明】
【００１３】
【図１】図１は、本開示の一態様に係る、グラフィックス処理システム内に含まれる場合がある様々な構成要素を示すブロック図である。
【図２Ａ】図２Ａは、本開示の一態様に係る、プログラマブルシェーダプロセッサを含む例示的なグラフィックス処理システムを示すブロック図である。
【図２Ｂ】図２Ｂは、本開示の一態様に係る、図２Ａに示されるシェーダプロセッサのさらなる詳細を示すブロック図である。
【図２Ｃ】図２Ｃは、本開示の一態様に係る、図２Ｂに示される実行ユニットおよびレジスタバンクのさらなる詳細を示すブロック図である。
【図３】図３は、本開示の一態様に係る、図２Ａ〜図２Ｂに示されるシェーダプロセッサによって実行される場合がある例示的な方法を示す流れ図である。
【図４】図４は、本開示の一態様に係る、図１に示されるストリーミングプロセッサ、または図２Ａ〜図２Ｂに示されるシェーダプロセッサによって実行されるべきグラフィックス命令を生成するために使用される場合があるコンパイラを示すブロック図である。
【詳細な説明】
【００１４】
図１は、本開示の一態様による、グラフィックス処理システム内に含まれることが可能である様々な構成要素を示すブロック図である。このグラフィックス処理システムは、スタンドアロンのシステムであっても、コンピューティングシステムもしくは無線通信デバイス（無線通信デバイスハンドセットなどの）などの、より大きいシステムの一部、またはディジタルカメラもしくは他のビデオデバイスの一部であってもよい。図１に示される例示的なシステムは、１つまたは複数のグラフィックスアプリケーション１０２Ａ〜１０２Ｎ、グラフィックスデバイス１００、および外部メモリ１０４を含むとしてもよい。グラフィックスデバイス１００は、外部メモリ１０４、ならびにグラフィックスアプリケーション１０２Ａ〜１０２Ｎのそれぞれに通信するように結合されるとしてもよい。一態様では、グラフィックスデバイス１００は、１つまたは複数の集積回路またはチップの上に含められるとしてもよい。
【００１５】
グラフィックスアプリケーション１０２Ａ〜１０２Ｎは、ビデオゲームアプリケーション、ビデオアプリケーション、カメラアプリケーション、または他のグラフィックスアプリケーションもしくはストリーミングアプリケーションなどの、様々な異なるアプリケーションを含むとしてもよい。これらのグラフィックスアプリケーション１０２Ａ〜１０２Ｎは、同時に実行されるとしてもよく、それぞれ、所望される結果を実現する実行のスレッドを生成することができる。スレッドは、１つまたは複数のグラフィックス命令のシーケンスを使用して実行されるとしてもよい特定のタスクを示す。スレッドは、グラフィックスアプリケーション１０２Ａ〜１０２Ｎが、同時に実行される複数のタスクを有すること、およびリソースを共有することを許す。
【００１６】
グラフィックスデバイス１００は、グラフィックスアプリケーション１０２Ａ〜１０２Ｎからスレッドを受け取り、これらのスレッドによって示されるタスクを実行する。図１に示される態様において、グラフィックスデバイス１００は、プログラマブルストリーミングプロセッサ１０６、１つまたは複数のグラフィックスエンジン１０８Ａ〜１０８Ｎ、および１つまたは複数のメモリモジュール１１０Ａ〜１１０Ｎを含む。プロセッサ１０６は、シェーディングなどの様々なグラフィックス操作を実行するとしてもよい、さらにいくつかのアプリケーションに関する超越初等関数（transcendental elementary function）を計算するとしてもよい。一態様において、プロセッサ１０６は、モバイルグラフィックスアプリケーションに関する命令ベースの適応ストリーミングプロセッサを備えるとしてもよい。グラフィックスエンジン１０８Ａ〜１０８Ｎは、テクスチャマッピングなどの他のグラフィックス操作を実行するとしてもよい。メモリモジュール１１０Ａ〜１１０Ｎは、プロセッサ１０６およびグラフィックスエンジン１０８Ａ〜１０８Ｎのためにデータおよびグラフィックス命令を格納する１つまたは複数のキャッシュを含むとしてもよい。
【００１７】
グラフィックスエンジン１０８Ａ〜１０８Ｎは、三角形セットアップ、ラスタ化、ステンシル／深度試験、属性セットアップ、および／またはピクセル補間などの様々なグラフィックス操作を実行する１つまたは複数のエンジンを含むとしてもよい。外部メモリ１０４は、メモリモジュール１１０Ａ〜１１０Ｎと比べて大型の、より遅いメモリであるとしてもよい。一態様において、外部メモリ１０４は、グラフィックスデバイス１００からさらに遠くに（例えば、オフチップ（off-chip）で）配置される。外部メモリ１０４は、メモリモジュール１１０Ａ〜１１０Ｎの１つまたは複数にロードされるとしてもよいデータおよびグラフィックス命令を格納する。
【００１８】
一態様において、プロセッサ１０６は、異なるグラフィックスアプリケーション１０２Ａ〜１０２Ｎが、ＡＬＵ精度、ＡＬＵパフォーマンス、およびＡＬＵ入力／出力フォーマットに関して異なる要件を有する場合があることから、異なる実行ユニットを使用して混合精度（例えば、完全精度、半精度）グラフィックス命令を実行することができる。例として、プロセッサ１０６は、１つまたは複数の部分精度実行ユニットとともに１つまたは複数の完全精度実行ユニットを含むとしてもよい。部分精度実行ユニットは、例えば、半精度実行ユニットであるとしてもよい。プロセッサ１０６は、プロセッサ１０６の実行ユニットを使用して、グラフィックスアプリケーション１０２Ａ〜１０２Ｎの１つまたは複数に関するグラフィックス命令を実行するとしてもよい。バイナリ命令（例えば、外部メモリ１０４、またはメモリモジュール１１０Ａ〜１１０Ｎの１つからの）、およびグラフィックス命令の実行に関するデータ精度の指示を受け取ると、プロセッサ１０６は、受け取られた命令を、グラフィックスデータを使用して、示されたデータ精度で実行するために適切な実行ユニットを選択するとしてもよい。また、プロセッサ１０６は、実行されると、グラフィックス命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する別個の変換命令を受け取るとしてもよい。一態様において、この変換命令は、グラフィックス命令とは異なる別個の命令である。
【００１９】
グラフィックスデータは、グラフィックスアプリケーション１０２Ａ〜１０２Ｎによって供給されても、外部メモリ１０４またはメモリモジュール１１０Ａ〜１１０Ｎの１つから取り出されても、グラフィックスエンジン１０８Ａ〜１０８Ｎの１つまたは複数によって供給されてもよい。示されたデータ精度に基づいて、異なる実行ユニットにおいて命令を選択的に実行することによって、プロセッサ１０６は、単一の実行ユニットを使用して、完全精度命令と半精度命令の両方を実行することを回避することができる。さらに、グラフィックスアプリケーション１０２Ａ〜１０２Ｎのプログラマは、アプリケーションコードを書く際の、より高い柔軟性を得ることができる。例えば、アプリケーションプログラマは、プロセッサ１０６によって処理される１つまたは複数のバイナリ命令にその後コンパイルされる、アプリケーション命令に関するデータ精度レベルを指定するとしてもよい。プロセッサ１０６は、バイナリ命令を実行する適切な実行ユニットを、実行ユニットおよびバイナリ命令に関連付けられたデータ精度に基づいて、選択する。さらに、プロセッサ１０６は、受け取られた変換命令を実行して、必要とされる場合、その命令に関連付けられたグラフィックスを、示されるデータ精度に変換するとしてもよい。例えば、供給されるグラフィックスデータが、示されるデータ精度とは異なるデータ精度を有する場合、プロセッサ１０６は、グラフィックス命令が、選択された実行ユニットによって実行されることができるように、グラフィックスデータを、示されるデータ精度に変換するための変換命令を実行するとしてもよい。
【００２０】
図２Ａは、一態様による、プログラマブルシェーダプロセッサ２０６を含む例示的なグラフィックス処理システムを示すブロック図である。この態様において、図２Ａに示されるグラフィックス処理システムは、図１に示される、より一般的なシステムの例示的な具体化である。一態様において、シェーダプロセッサ２０６は、ストリーミングプロセッサである。図２Ａにおいて、例示的なシステムは、グラフィックスデバイス２００にそれぞれ通信するように結合された２つのグラフィックスアプリケーション２０２Ａおよび２０２Ｂを含む。図２Ａの例において、グラフィックスアプリケーション２０２Ａは、グラフィックスイメージングピクセルデータを処理すること、および管理することができるピクセルアプリケーションである。図２Ａの例において、グラフィックスアプリケーション２０２Ｂは、グラフィックスイメージング頂点データを処理すること、および管理することができる頂点アプリケーションである。一態様において、グラフィックスピクセルアプリケーション２０２Ａは、ピクセル処理アプリケーションを備え、グラフィックス頂点アプリケーション２０２Ｂは、頂点処理アプリケーションを備える。
【００２１】
多くの事例において、グラフィックスピクセルアプリケーション２０２Ａは、より低い精度の（半精度などの）データフォーマットを使用する多くの機能を実装するが、より高い精度の（完全精度などの）データフォーマットを使用するいくつかの機能を実施するとしてもよい。また、グラフィックスピクセルアプリケーション２０２Ａは、ピクセルデータに関する命令のクワッドベースの（quad-based）実行を指定するとしてもよい。通常、グラフィックス頂点アプリケーション２０２Ｂは、より高い精度のデータフォーマットを使用して機能を実施するが、頂点データに関する命令のクワッドベースの実行を指定しないとしてもよい。このため、グラフィックスデバイス２００に対するアプリケーション２０２Ａおよび２０２Ｂなどの異なるアプリケーション、ならびに対応するＡＰＩは、異なるデータ精度要件を指定するとしてもよい。さらに、所与のアプリケーション２０２Ａまたは２０２Ｂ（および対応するＡＰＩ）内部で、混合精度命令の実行が指定されるとしてもよい。例えば、グラフィックスピクセルアプリケーション２０２Ａに関するシェーディング言語が、シェーダプロセッサ２０６によって実行されるべきシェーダ命令に関する精度修飾子を提供するとしてもよい。このため、いくつかの命令が、実行に関して１つの精度レベルを指定するとしてもよい一方で、他の命令は、別の精度レベルを指定するとしてもよい。グラフィックスデバイス２００内部のシェーダプロセッサ２０６は、混合精度命令を一様に実行することができる。
【００２２】
一態様において、シェーダプロセッサ２０６は、１つまたは複数のアプリケーションプログラミングインターフェース、つまり、ＡＰＩ（図示せず）を介してグラフィックスアプリケーション２０２Ａおよび２０２Ｂと対話する。例えば、グラフィックスピクセルアプリケーション２０２Ａが、第１のＡＰＩを介してシェーダプロセッサ２０６と対話するとしてもよく、グラフィックス頂点アプリケーション２０２Ｂが、第２のＡＰＩを介してシェーダプロセッサ２０６と対話するとしてもよい。第１のＡＰＩと第２のＡＰＩは、一態様では、共通のＡＰＩを備えるとしてもよい。ＡＰＩは、グラフィックスアプリケーション２０２Ａおよび２０２Ｂによって使用される１つまたは複数の標準プログラミング仕様を定義し、グラフィックスデバイス２００に、シェーダプロセッサ２０６によって実行されることができるシェーディング操作を含む、様々なグラフィカル操作を実行することを行わせるとしてもよい。
【００２３】
グラフィックスデバイス２００は、シェーダプロセッサ２０６を含む。シェーダプロセッサ２０６は、シェーディング操作を実行することができる。シェーダプロセッサ２０６は、グラフィックスピクセルアプリケーション２０２Ａを相手にピクセルデータを交換することができ、グラフィックス頂点アプリケーション２０２Ｂを相手に頂点データを交換することがさらにできる。
【００２４】
図２Ａの例において、シェーダプロセッサ２０６は、テクスチャエンジン２０８およびキャッシュメモリシステム２１０とも通信する。テクスチャエンジン２０８は、テクスチャ関連の操作を実行することができ、さらにキャッシュメモリシステム２１０に通信するように結合される。キャッシュメモリシステム２１０は、メインメモリ２０４に結合される。キャッシュメモリシステム２１０は、或る態様において命令キャッシュとデータキャッシュの両方を含む。命令および／またはデータは、メインメモリ２０４からキャッシュメモリシステム２１０にロードされることが可能であり、次に、ロードされた命令および／またはデータは、テクスチャエンジン２０８およびシェーダプロセッサ２０６が利用できるようにされる。シェーダプロセッサ２０６は、同期インターフェースまたは非同期インターフェースを介して外部デバイスまたは外部構成要素と通信するとしてもよい。
【００２５】
一態様において、シェーダプロセッサ２０６は、様々な実行ユニットを使用して混合精度グラフィックス命令を実行することができる。この態様において、シェーダプロセッサ２０６は、１つまたは複数の半精度実行ユニットとともに１つまたは複数の完全精度実行ユニットを含む。シェーダプロセッサ２０６は、グラフィックスアプリケーション２０２Ａおよび２０２Ｂの片方、または両方に関するグラフィックス命令を実行するようにプロセッサ２０６の実行ユニットを呼び出すとしてもよい。バイナリ命令（キャッシュメモリシステム２１０などからの）を受け取り、さらに命令の実行に関するデータ精度の指示も受け取ると、シェーダプロセッサ２０６は、受け取られた命令を、グラフィックスデータを使用して、示されたデータ精度で実行するために適切な実行ユニットを選択することができる。グラフィックスピクセルアプリケーション２０２Ａが、例えば、ピクセルデータをシェーダプロセッサ２０６に供給するとしてもよく、グラフィックス頂点アプリケーションｎ２０２Ｂが頂点データをシェーダプロセッサ２０６に供給するとしてもよい。
【００２６】
また、シェーダプロセッサは、実行されると、グラフィックス命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する別個の変換命令を受け取るとしてもよい。一態様において、変換命令は、グラフィックス命令とは異なる別個の命令である。
【００２７】
また、グラフィックスデータが、メインメモリ２０４またはキャッシュメモリシステム２１０からロードされるとしてもよく、あるいはテクスチャエンジン２０８によって供給されるとしてもよい。グラフィックスピクセルアプリケーション２０２Ａおよび／またはグラフィックス頂点アプリケーション２０２Ｂが、シェーダプロセッサ２０６に、実行のためにキャッシュメモリシステム２１０から１つまたは複数のバイナリ命令をロードさせる実行のスレッドを呼び出す。一態様において、ロードされた各命令は、その命令の実行に関するデータ精度を示す。さらに、シェーダプロセッサ２０６が、受け取られた変換命令を実行して、必要とされる場合、その命令に関連付けられたグラフィックスデータを、示されるデータ精度に変換するとしてもよい。例えば、供給されたグラフィックスデータが、示されるデータ精度とは異なるデータ精度を有する場合、シェーダプロセッサ２０６は、グラフィックス命令が、選択された実行ユニットによって実行されることができるように、グラフィックスデータを、示されるデータ精度に変換するための変換命令を実行するとしてもよい。示されたデータ精度に基づいて、異なる実行ユニットにおいて命令を選択的に実行することによって、シェーダプロセッサ２０６は、単一の実行ユニットを使用して、完全精度命令と半精度命令の両方を実行することを回避することができる。
【００２８】
図２Ｂは、一態様による、図２Ａに示されるシェーダプロセッサ２０６のさらなる詳細を示すブロック図である。シェーダプロセッサ２０６内部で、シーケンサ２２２が、グラフィックスアプリケーション２０２Ａおよび２０２Ｂからスレッドを受け取り、これらのスレッドをスレッドスケジューラ−コンテキストレジスタ２２４に供給する。一態様において、シーケンサ２２２は、ＭＵＸ（多重化装置）を備える。一態様において、シーケンサ２２２は、いずれのスレッドが受け入れられるべきかを判定し、さらに受け入れられた各スレッドに複数精度レジスタ空間および／またはその他のリソースを割り当てるとしてもよい。例えば、シーケンサ２２２は、半精度命令にレジスタ空間を割り当てるとしてもよく、さらに完全精度命令にレジスタ空間を割り当てるとしてもよい。
【００２９】
一態様において、グラフィックスピクセルアプリケーション２０２Ａから受け取られるピクセルデータは、ピクセルクワッドベースの（すなわち、４ピクセルずつの）フォーマットの属性情報を含む。この態様において、実行ユニット２３４は、４ピクセルずつ処理することができる。一態様において、実行ユニット２３４は、グラフィックス頂点アプリケーション２０２Ｂからのデータを１頂点ずつ処理するとしてもよい。
【００３０】
スレッドスケジューラ２２４は、スレッドの実行をスケジュールし、管理する様々な機能を実行し、さらにスレッドの実行シーケンスを制御するとしてもよい。各スレッドに関して、スレッドスケジューラ２２４は、一態様によれば、そのスレッドに要求されるリソースの準備ができているかどうかを判定し、そのスレッドに関して準備のできていないリソース（例えば、命令、レジスタファイル、またはテクスチャ読取り）が存在する場合、そのスレッドをスリープキューに入れ、リソースのすべての準備ができると、そのスレッドをスリープキューから活性キューに移すとしてもよい。スレッドスケジューラ２２４は、スレッドに関する複数のリソースを同期させるため、ロード制御ユニット２２６とインターフェースをとる。一態様において、スレッドスケジューラ２２４は、コントローラ２２５の一部である。図２Ｂは、コントローラ２２５の例を示す。コントローラ２２５は、シェーダプロセッサ２０６内の命令およびデータの処理と関係する様々な機能を制御するとしてもよい。図２Ｂの例において、コントローラ２２５は、スレッドスケジューラ２２４、ロード制御ユニット２２６、およびマスタエンジン２２０を含む。いくつかの態様において、コントローラ２２５は、マスタエンジン２２０、スレッドスケジューラ２２４、およびロード制御ユニット２２６のうち少なくとも１つを含む。
【００３１】
スレッドスケジューラ２２４は、スレッドの実行も管理する。スレッドスケジューラ２２４は、命令キャッシュ２３０から各スレッドに関する命令をフェッチし、必要とされる場合、各命令を復号し、さらにそのスレッドに関するフロー制御を実行する。スレッドスケジューラ２２４は、実行のために活性のスレッドを選択し、選択されたスレッドの間で読取り／書込みポート競合がないか調べ、競合が全く存在しない場合、１つのスレッドに関する命令を実行ユニット２３４に送り、さらに別のスレッドに関する命令をロード制御ユニット２２６に送る。スレッドスケジューラ２２４は、各スレッドに関してプログラム／命令カウンタを保持し、命令が実行される、またはプログラムフローが変更されると、このカウンタを更新する。また、スレッドスケジューラ２２４は、欠落している命令を命令キャッシュ２３０からフェッチする要求も発行し、さらに完了したスレッドを除去する。
【００３２】
一態様において、スレッドスケジューラ２２４は、マスタエンジン２２０と対話する。この態様において、スレッドスケジューラ２２４は、いくつかの責任をマスタエンジン２２０に委託するとしてもよい。一態様において、スレッドスケジューラ２２４は、実行のために命令を復号するとしてもよく、または各スレッドに関してプログラム／命令カウンタを保持して、命令が実行されると、このカウンタを更新するとしてもよい。一態様において、マスタエンジン２２０は、命令実行に関する状態をセットアップし、さらに命令実行中に命令更新シーケンスを制御するとしてもよい。
【００３３】
命令キャッシュ２３０は、スレッドに関する命令を格納する。これらの命令は、各スレッドに関して実行されるべき特定の操作を示す。各操作は、例えば、算術操作、初等関数、メモリアクセス操作、または別の形態の命令であることが可能である。命令キャッシュ２３０には、ロード制御ユニット２２６を介して、必要に応じて、キャッシュメモリシステム２１０またはメインメモリ２０４（図２Ａ）からの命令がロードされるとしてもよい。これらの命令は、一態様による、グラフィックスアプリケーションコードからコンパイルされたバイナリ命令である。各バイナリ命令は、シェーダプロセッサ２０６内でその命令の実行のために使用されるデータ精度を示す。例えば、その命令に関連する命令タイプが、その命令が完全精度命令であるか、または半精度命令であるかを示すとしてもよい。あるいは、１つの例示的な態様によれば、その命令内の或る特定のフラグまたはフィールドが、その命令が完全精度命令であるか、半精度命令であるかを示すとしてもよい。スレッドスケジューラ２２４は、命令を復号すること、および各命令に関するデータ精度（完全精度または半精度などの）を特定することができるとしてもよい。次に、スレッドスケジューラ２２４は、各命令を、示されたデータ精度でその命令を実行することができる実行ユニットにルーティングすることができる。この実行ユニットは、命令実行のために必要とされるグラフィックスデータを、後段でより詳細に説明される、定数バッファ２３２またはレジスタバンク２４２からロードする。
【００３４】
図２Ｂに示される態様において、実行ユニット２３４は、１つまたは複数の完全精度ＡＬＵ（算術論理ユニット）２３６、１つまたは複数の半精度ＡＬＵ２４０、および超越初等演算を実行する初等関数ユニット２３８を含む。ＡＬＵ２３６および２４０は、浮動計算を可能にする１つまたは複数の浮動小数点ユニット、および／または整数演算および論理演算を可能にする１つまたは複数の整数論理ユニットを含むとしてもよい。必要な場合、実行ユニット２３４は、命令実行中に定数バッファ２３２またはレジスタバンク２４２から、グラフィックスデータなどのデータをロードする。完全精度ＡＬＵ２３６と半精度ＡＬＵ２４０はともに、算術演算（加算、減算、乗算、乗累算などの）、を実行することができ、さらに論理演算（ＡＮＤ、ＯＲ、ＸＯＲなどの）も実行することができる。各ＡＬＵユニットは、一態様によれば、単一のクワッドＡＬＵまたは４つのスカラーＡＬＵを備えるとしてもよい。４つのスカラーＡＬＵが使用される場合、４ピクセルに関する属性が、ＡＬＵによって並行に処理されるとしてもよい。クワッドＡＬＵは、或るピクセル、または或る頂点に関する４つの属性を並行に処理するのに使用されるとしてもよい。しかし、完全精度ＡＬＵ２３６が、完全精度計算を使用して命令を実行するのに対して、半精度ＡＬＵ２４０は、半精度計算を使用して命令を実行する。
【００３５】
初等関数ユニット２３８は、シェーダ命令において広く使用される、サイン、コサイン、逆数、対数、指数、平方根、または平方根逆数などの超越初等関数を計算することが可能である。初等関数ユニット２３８は、単純な命令を使用して初等関数の多項式近似を実行するのに要求されるよりはるかに少ない時間でそれらの初等関数を計算することによって、シェーダパフォーマンスを向上させるとしてもよい。初等関数ユニット２３８は、本開示の一態様によれば、完全精度で命令を実行することができるだけではなく、計算結果を半精度フォーマットに変換することができるとしてもよい。
【００３６】
図２Ｂに示される例示的な態様におけるコントローラ２２５の一部であるロード制御ユニット２２６は、シェーダプロセッサ２０６内部の様々な構成要素に関するデータおよび命令の流れを制御する。一態様において、ロード制御ユニット２２６は、シェーダプロセッサ２０６の超過の内部データを外部メモリ（例えば、キャッシュメモリシステム２１０）に退去させるとしてもよく、さらに命令、バッファ、またはテクスチャデータなどの外部リソースを、テクスチャエンジン２０８および／またはキャッシュメモリシステム２１０からフェッチするとしてもよい。ロード制御ユニット２２６は、キャッシュメモリシステム２１０とインターフェースをとり、命令キャッシュ２３０、定数バッファ２３２（グラフィックスアプリケーション２０２Ａおよび／または２０２Ｂに関する命令実行中に使用される一様なデータを格納することが可能な）、およびレジスタバンク２４２にキャッシュメモリシステム２１０からのデータおよび命令をロードする。また、ロード制御ユニット２２６は、レジスタバンク２４２からの出力データをキャッシュメモリシステム２１０に供給するとしてもよい。レジスタバンク２４２は、１つまたは複数の実行ユニット２３４からの出力データを受け取るとしてもよく、複数の実行ユニット２３４の間で共有されることが可能である。また、ロード制御ユニット２２６は、テクスチャエンジン２０８ともインターフェースをとる。いくつかの事例では、テクスチャエンジン２０８が、ロード制御ユニット２２６を介してシェーダプロセッサ２０６にデータ（テクセルデータなどの）を供給するとしてもよく、いくつかの事例では、ロード制御ユニット２２６が、テクスチャエンジン２０８にデータ（テクスチャ座標データなどの）および／または命令（サンプラＩＤ命令などの）を供給するとしてもよい。
【００３７】
図２Ｂの例において、ロード制御ユニット２２６は、精度コンバータ２２８も含む。ロード制御ユニット２２６の中に読み込まれるデータ、またはユニット２２６から書き出されるデータは、異なるデータ精度（例えば、完全精度、半精度）を有するとしてもよいため、ロード制御ユニット２２６は、或るデータを異なる構成要素に（レジスタバンク２４２またはキャッシュメモリシステム２１０などに）ルーティングするのに先立って、そのデータを異なるデータ精度レベルに変換する必要があるとしてもよい。精度コンバータ２２８は、ロード制御ユニット２２６内部でそのようなデータ変換を管理する。
【００３８】
一態様において、精度コンバータ２２８は、シェーダプロセッサ２０６によって、受け取られた変換命令が実行されると、グラフィックスデータを１つの精度レベルから別の精度レベルに変換するように動作する。実行されると、変換命令は、受け取られたグラフィックス命令に関連付けられたグラフィックスデータを、示されるデータ精度に変換する。例えば、変換命令は、半精度フォーマットのデータを完全精度フォーマットに変換すること、または完全精度フォーマットのデータを半精度フォーマットに変換するとしてもよい。
【００３９】
コンスタントバッファ２３２は、命令実行中に実行ユニット２３４によって使用される定数値を格納することが可能である。レジスタバンク２４２は、実行されたスレッドに関して実行ユニット２３４からの一時的結果、ならびに最終結果を格納する。レジスタバンク２４２は、１つまたは複数の完全精度レジスタバンク２４４、および１つまたは複数の半精度レジスタバンク２４６を含む。最終実行結果は、ロード制御ユニット２２６によってレジスタバンク２４２から読み取られることが可能である。さらに、ディストリビュータ２４８が、レジスタバンク２４２から、実行されたスレッドに関する最終結果を受け取り、これらの結果を、グラフィックス頂点アプリケーション２０２Ｂとグラフィックスピクセルアプリケーション２０２Ａの少なくとも１つに分配するとしてもよい。
【００４０】
アプリケーション２０２Ａおよび２０２Ｂなどのグラフィックスアプリケーションは、異なる精度レベルを使用してデータを処理することを要求するとしてもよい。例えば、一態様において、グラフィックス頂点アプリケーション２０２Ｂは、完全精度データフォーマットを使用して頂点データを処理するのに対して、グラフィックスピクセルアプリケーション２０２Ａは、半精度フォーマットを使用してピクセルデータを処理する。一態様において、グラフィックスピクセルアプリケーション２０２Ａは、或る情報を、半精度フォーマットを使用して処理するが、他の情報は、完全精度フォーマットを使用して処理する。グラフィックス頂点アプリケーション２０２Ｂおよびグラフィックスピクセルアプリケーション２０２Ａからのスレッドの実行中、シェーダプロセッサ２０６は、実行に関して異なるデータ精度レベルを使用する命令を命令キャッシュ２３０から受け取り、処理する。
【００４１】
このため、図２Ｂに示される態様において、スレッドスケジューラ２２４は、命令キャッシュ２３０からロードされた所与の命令とともに示される、またはそのような命令に関連付けられたデータ精度を識別して、その命令を適切な実行ユニットにルーティングする。例えば、その命令が完全精度命令として復号された（命令内に含まれる命令タイプまたはフィールド／ヘッダによる指示などを介して）場合、スレッドスケジューラ２２４は、その命令を、実行のために完全精度ＡＬＵ２３６の１つにルーティングすることができる。完全精度ＡＬＵ２３６からの実行結果は、完全精度レジスタバンク２４４の１つまたは複数の中に格納されて、ディストリビュータ２４８を介してグラフィックスアプリケーション（グラフィックス頂点アプリケーション２０２Ｂなどの）に戻されるとしてもよい。しかし、命令キャッシュ２３０からの命令が、半精度命令としてスレッドスケジューラ２２４によって復号された場合、スレッドスケジューラ２２４は、その命令を、実行のために半精度ＡＬＵ２４０の１つにルーティングすることができる。半精度ＡＬＵ２４０からの実行結果は、半精度レジスタバンク２４６の１つまたは複数の中に格納されて、ディストリビュータ２４８を介してグラフィックスアプリケーション（グラフィックスピクセルアプリケーション２０２Ａなどの）に戻されるとしてもよい。
【００４２】
図２Ｃは、一態様による、図２Ｂに示される実行ユニット２３４およびレジスタバンク２４２のさらなる詳細を示すブロック図である。前述したとおり、実行ユニット２３４は、様々な異なるタイプの実行ユニットを含む。図２Ｃの例において、実行ユニット２３４は、１つまたは複数の完全精度ＡＬＵ２３６Ａ〜２３６Ｎ、１つまたは複数の半精度ＡＬＵ２４０Ａ〜２４０Ｎ、および１つまたは複数の初等関数ユニット２３８を含む。各完全精度ＡＬＵ２３６Ａ〜２３６Ｎは、データを使用して、完全精度計算を使用する命令を実行することができる。命令実行中に使用される入力データは、完全精度レジスタバンク２４４Ａ〜２４４Ｎ（レジスタバンク２４２内部の）の１つまたは複数から取り出されるとしてもよい。さらに、完全精度ＡＬＵ２３６Ａ〜２３６Ｎによる命令実行中に生成された計算結果は、完全精度レジスタバンク２４４Ａ〜２４４Ｎの１つまたは複数の中に格納されるとしてもよい。
【００４３】
同様に、各半精度ＡＬＵ２４０Ａ〜２４０Ｎは、データを使用して、半精度計算を使用する命令を実行することができる。命令実行中に使用される入力データは、半精度レジスタバンク２４６Ａ〜２４６Ｎの１つまたは複数から取り出されるとしてもよい。さらに、半精度ＡＬＵ２４０Ａ〜２４０Ｎによる命令実行中に生成された計算結果は、半精度レジスタバンク２４６Ａ〜２４６Ｎの１つまたは複数の中に格納されるとしてもよい。
【００４４】
前述したとおり、初等関数ユニット２３８は、完全精度を実行することができるが、半精度フォーマットで結果を格納することができる。一態様において、初等関数ユニット２３８は、完全精度フォーマットまたは半精度フォーマットで結果データを格納することができる。その結果、初等関数ユニット２３８は、完全精度レジスタバンク２４４Ａ〜２４４Ｎに通信するように結合され、さらに半精度レジスタバンク２４６Ａ〜２４６Ｎにも通信するように結合される。初等関数ユニット２３８は、一態様によれば、レジスタバンク２４２内のレジスタのうちの任意のレジスタから中間データを取り出すとしてもよく、任意のレジスタに最終結果データを格納するとしてもよい。
【００４５】
さらに、初等関数ユニット２３８は、精度コンバータ２３９を含む。初等関数ユニット２３８が完全精度データフォーマットと半精度データフォーマットの間で変換を行う事例において、ユニット２３８は、精度コンバータ２３９を使用して、この変換を実行するとしてもよい。例えば、ユニット２３８は、半精度レジスタバンク２４６Ａから入力グラフィックスデータをロードし、このデータを使用して完全精度命令を実行するとしてもよい。精度コンバータ２３９は、この入力データを半精度フォーマットから完全精度フォーマットに変換するとしてもよい。次に、ユニット２３８は、この変換されたデータを使用して、完全精度命令を実行するとしてもよい、結果データが半精度レジスタバンク２４６Ａの中に再び格納されるべき場合、精度コンバータ２３９は、変換された結果データが半精度レジスタバンク２４６Ａの中に格納されることができるように、結果データを完全精度フォーマットから半精度フォーマットに変換するとしてもよい。代替として、結果データが完全精度レジスタバンク２４４Ａ〜２４４Ｎの１つの中に格納されるべき場合、完全精度フォーマットの結果データは、これらのレジスタの１つの中に直接に格納されるとしてもよい。
【００４６】
スレッドスケジューラ２２４（図２Ｂ）は、バイナリ命令が、その命令に関連付けられたデータ精度に基づいて、命令キャッシュ２３０から実行ユニット２３４の１つにロードされ、実行されるようにすることができる。例えば、スレッドスケジューラ２２４は、完全精度ＡＬＵ２３６Ａ〜２３６Ｎの１つまたは複数に完全精度命令をルーティングするとしてもよく、半精度ＡＬＵ２４０Ａ〜２４０Ｎの１つまたは複数に半精度命令をルーティングするとしてもよい。スレッドスケジューラ２２４は、初等命令を、実行のために初等関数ユニット２３８にルーティングするとしてもよい。結果データは、レジスタバンク２４２内の対応するレジスタの中に格納されるとしてもよい。一態様において、完全精度ＡＬＵ２３６Ａ〜２３６Ｎ、初等関数ユニット２３８、および半精度ＡＬＵ２４０Ａ〜２４０Ｎの間のデータ遷移は、レジスタバンク２４２を通過する。
【００４７】
一態様において、各半精度レジスタバンク２４６Ａ〜２４６Ｎは、各完全精度レジスタバンク２４４Ａ〜２４４Ｎと比べて、より少ないレジスタ記憶空間を含み、集積回路上で、より小さい物理的スペースを占める。このため、例えば、半精度レジスタバンク２４６Ａは、完全精度レジスタバンク２４４Ａと比べて、より小さいレジスタ記憶空間を含み、より小さい物理的スペースを占める。一態様において、１つの完全精度レジスタバンク（バンク２４４Ａなどの）は、２つの半精度レジスタバンク（バンク２４６Ａとバンク２４６Ｂを合わせるなどの）と実質的に同一の量のレジスタ空間を含むとしてもよく、実質的に同一の量の物理的スペースを占めるとしてもよい。
【００４８】
同様に、各完全精度ＡＬＵ２３６Ａ〜２３６Ｎは、各半精度ＡＬＵ２４０Ａ〜２４０Ｎと比べて、集積回路内でより多くの物理的スペースを占めるとしてもよい。さらに、各完全精度ＡＬＵ２３６Ａ〜２３６Ｎは、通常、各半精度ＡＬＵ２４０Ａ〜２４０Ｎと比べて、より多くの動作電力を使用するとしてもよい。その結果、いくつかの態様において、使用される完全精度ＡＬＵおよび完全精度レジスタバンクの数を制限し、使用される半精度ＡＬＵおよび半精度レジスタバンクの数を増やして、集積回路サイズを最小限に抑え、電力消費要件を低減するようにすることが所望される可能性がある。これらの態様は、シェーダプロセッサ２０６が、移動体通信デバイスもしくは無線通信デバイス（例えば、移動体無線電話機もしくは無線通信デバイスハンドセットなどの）、あるいはディジタルカメラまたはビデオデバイスなどの、いくつかの電力制約を有する、より小さいコンピューティングデバイスの一部である場合に、特に適切である、または有益である可能性がある。
【００４９】
したがって、一態様において、実行ユニット２３４は、１つだけしか完全精度ＡＬＵ２３６Ａを含まないとしてもよく、レジスタバンク２４２は、１つだけしか完全精度レジスタバンク２４４Ａを含まないとしてもよい。この態様において、実行ユニット２３４は、４つの半精度ＡＬＵ２４０Ａ〜２４０Ｄをさらに含むとしてもよい一方で、レジスタバンク２４２は、４つの半精度レジスタバンク２４６Ａ〜２４６Ｄを含むとしてもよい。その結果、実行ユニット２３４は、少なくとも１つの半精度命令、および１つの完全精度命令を並行に実行可能としてもよい。例えば、４つの半精度ＡＬＵ２４０Ａ〜２４０Ｄは、一度に４つのピクセルの属性に関する命令を実行するとしてもよい。１つだけの完全精度ＡＬＵ２３６Ａが使用されるため、一態様によれば、ＡＬＵ２３６Ａは、一度に１つの頂点に関する命令を実行することができる。その結果、シェーダプロセッサ２０６は、一態様によれば、頂点パッキングバッファを利用して、複数の頂点に関するデータをパックする必要がない。この事例において、頂点に関するベクトルベースの属性データは、そのデータをスカラーフォーマットに変換する必要なしに、直接に処理されるとしてもよい。
【００５０】
別の態様において、実行ユニット２３４は、４つの完全精度ＡＬＵ２３６Ａ〜２３６Ｄを含むとしてもよく、レジスタバンク２４２は、４つの完全精度レジスタバンク２４４Ａ〜２４４Ｄを含むとしてもよい。この態様において、実行ユニット２３４は、８つの半精度ＡＬＵ２４０Ａ〜２４０Ｈをさらに含むとしてもよい一方で、レジスタバンク２４２は、８つの半精度レジスタバンク２４６Ａ〜２４６Ｈを含むとしてもよい。その結果、実行ユニット２３４は、例えば、２クワッド上の２つの半精度命令と、１クワッド上の１つの完全精度命令とを並行に実行することができる。各クワッド、またはスレッドは、４つのピクセルまたは４つの頂点のグループである。
【００５１】
別の態様において、実行ユニット２３４は、４つの完全精度ＡＬＵ２３６Ａ〜２３６Ｄを含むとしてもよく、レジスタバンク２４２は、４つの完全精度レジスタバンク２４４Ａ〜２４４Ｄを含むとしてもよい。この態様において、実行ユニット２３４は、４つの半精度ＡＬＵ２４０Ａ〜２４０Ｈをさらに含む一方で、レジスタバンク２４２は、４つの半精度レジスタバンク２４６Ａ〜２４６Ｈを含む。完全精度ＡＬＵ２３６Ａ〜２３６Ｎ、完全精度レジスタバンク２４４Ａ〜２４４Ｎ、半精度ＡＬＵ２４０Ａ〜２４０Ｎ、および半精度レジスタバンク２４６Ａ〜２４６Ｎの他の様々な組合せが、使用されるとしてもよい。
【００５２】
一態様において、シェーダプロセッサ２０６は、スレッドスケジューラ２２４を使用して、完全精度ＡＬＵ２３６Ａ〜２３６Ｎの１つまたは複数、および完全精度レジスタバンク２４４Ａ〜２４４Ｎの１つまたは複数に関して、選択的に電源を切る、またはディセーブルにすることができるとしてもよい。この態様において、シェーダプロセッサ２０６は、１つまたは複数の集積回路内に様々な完全精度構成要素（完全精度ＡＬＵ２３６Ａ〜２３６Ｎおよび完全精度レジスタバンク２４４Ａ〜２４４Ｎなどの）を含むものの、これらの完全精度構成要素の１つまたは複数に関して、その１つまたは複数の構成要素が使用されていない場合に、選択的に電源を切る、またはディセーブルにすることによって、電力消費を節約する、または低減するとしてもよい。例えば、いくつかのシナリオにおいて、シェーダプロセッサ２０６は、これらの構成要素の１つまたは複数が使用されていないことを、ロードされた様々なバイナリ命令が半精度ＡＬＵ２４０Ａ〜２４０Ｎの１つまたは複数によって実行されることになることから、判定するとしてもよい。このため、これらのタイプのシナリオにおいて、シェーダプロセッサ２０６は、電力節約のために完全精度構成要素の１つまたは複数に関して、選択的に電源を切る、またはディセーブルにするとしてもよい。このようにして、シェーダプロセッサ２０６は、所与の時点で処理されている命令のタイプおよび数に応じて動的に、１つまたは複数の完全精度構成要素に関して、選択的に電源を切る、またはディセーブルにするとしてもよい。
【００５３】
一態様において、シェーダプロセッサ２０６は、スレッドスケジューラ２２４を使用して、半精度ＡＬＵ２４０Ａ〜２４０Ｎの１つまたは複数、および半精度レジスタバンク２４６Ａ〜２４６Ｎの１つまたは複数に関して、選択的に電源を切る、またはディセーブルにすることもできるとしてもよい。この態様において、シェーダプロセッサ２０６は、これらの半精度構成要素の１つまたは複数に関して、その１つまたは複数の構成要素が使用されていない、または必要とされていない場合に、選択的に電源を切る、またはディセーブルにすることによって、電力消費を節約する、または低減するとしてもよい。
【００５４】
シェーダプロセッサ２０６は、様々な利益および利点を提供するとしてもよい。例えば、シェーダプロセッサ２０６は、完全精度命令や半精度命令などの混合精度命令の実行に関する様々な要件を満たす非常に柔軟性があり、適応性のあるインターフェースを提供するとしてもよい。シェーダプロセッサ２０６は、混合精度命令の実行中に不必要な精度昇格を回避することによって、電力消費を大幅に低減するとしてもよい。（精度昇格は、シェーダプロセッサ２０６が、半精度フォーマットなどの、より低い精度のフォーマットから、完全精度フォーマットなどの、より高い精度のフォーマットにデータを動的に変換する際に行われるとしてもよい。精度昇格は、シェーダプロセッサ２０６内部でさらなる回路を要求することが可能であり、さらにシェーダコアプロセスにさらなるクロックサイクルを費やさせるとしてもよい。）スレッドスケジューラ２２４は、命令キャッシュ２３０からロードされたバイナリ命令に関連付けられたデータ精度を認識することができるため、スレッドスケジューラ２２４は、命令を、実行のために、完全精度ＡＬＵ２３６Ａまたは半精度ＡＬＵ２４０Ａなどの実行ユニット２３４内の適切な実行ユニットにルーティングすることができる。
【００５５】
また、シェーダプロセッサ２０６は、より少ない数の完全精度構成要素を利用すること、およびより多くの半精度構成要素（例えば、ＡＬＵおよびレジスタバンク）を代わりに利用することによって、レジスタバンク２４２における全体的なレジスタファイルサイズ、および実行ユニット２３４におけるＡＬＵサイズを低減することができる。さらに、シェーダプロセッサ２０６は、処理容量を増加させることによって全体的なシステムパフォーマンスを向上させることができる。
【００５６】
より低い電力消費、およびより高いパフォーマンスと関係する様々な潜在的利益に鑑みて、シェーダプロセッサ２０６は、無線通信デバイス、ディジタルカメラデバイス、ビデオ記録デバイスもしくはビデオ表示デバイス、ビデオゲームデバイス、または他のグラフィックスデバイスおよびマルチメディアデバイスなどの、様々な異なるタイプのシステムまたはデバイスにおいて使用されることができる。そのようなデバイスは、シェーダプロセッサ２０６を使用して生成されたグラフィックスコンテンツを提示するディスプレイを含むとしてもよい。一態様において、シェーダプロセッサ２０６によって提供される精度柔軟性は、プロセッサ２０６が、他のいくつかのグラフィックスアプリケーションと比べて、より低い精度の計算を提供すること、またはより低い電力要件を有することができる、マルチメディアデバイスを含む様々なデバイスで使用されることを許す。
【００５７】
図３は、本開示の一態様による、図２Ａ〜図２Ｂに示されるシェーダプロセッサ２０６によって実行されることが可能である例示的な方法を示す流れ図である。この態様において、例示的な方法は、動作３００、３０２、３０３、３０６、３０８、３１０、および３１２を含み、判定ポイント３０４も含む。
【００５８】
動作３００で、シェーダプロセッサ２０６が、バイナリグラフィックス命令、ならびにこの命令の実行に関するデータ精度の指示を受け取る。例えば、前述したとおり、スレッドスケジューラ２２４が、この命令を命令キャッシュ２３０（図２Ｂ）からロードするとしてもよい。一態様において、スレッドスケジューラ２２４による、この命令を復号することが、この命令の実行に関するデータ精度についての情報をもたらす。例えば、この命令は、完全精度命令または半精度命令であるとしてもよい。
【００５９】
動作３０２で、シェーダプロセッサ２０６が、このバイナリ命令に関連付けられたグラフィックスデータを受け取る。例えば、シーケンサ２２２が、グラフィックス頂点アプリケーション２０２Ｂから頂点データを受け取り、さらに／またはグラフィックスピクセルアプリケーションｎ２０２Ａからピクセルデータを受け取るとしてもよい。いくつかのシナリオにおいて、ロード制御ユニット２２６が、この命令に関連付けられたグラフィックスデータをキャッシュメモリシステム２１０からロードするとしてもよい。動作３０３で、シェーダプロセッサ２０６は、実行された場合、このバイナリ命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する変換命令をさらに受け取る。
【００６０】
判定ポイント３０４で、シェーダプロセッサ２０６が、この命令が完全精度命令であるか、半精度命令であるかを判定する。前述したとおり、一態様において、スレッドスケジューラ２２４が、この命令を復号して、この命令が完全精度命令であるか、半精度命令であるかを判定するとしてもよい。
【００６１】
命令が完全精度命令である場合、シェーダプロセッサ２０６は、動作３０６で、必要とされる場合、受け取られた任意のグラフィックスデータを半精度フォーマットから完全精度フォーマットに変換する。いくつかの事例において、キャッシュメモリシステム２１０の中に格納されていた、またはグラフィックスアプリケーション２０２Ａまたは２０２Ｂから処理された、受け取られたグラフィックスデータは、半精度フォーマットを有するとしてもよい。この事例において、グラフィックスデータは、完全精度命令の実行中に使用され得るように完全精度フォーマットに変換される。一態様において、ロード制御ユニット２２６の精度コンバータ２２８が、受け取られた変換命令がシェーダプロセッサ２０６によって実行される際、データフォーマット変換を管理するとしてもよい。動作３０８で、シェーダプロセッサ２０６が、そのグラフィックスデータを使用してバイナリ命令を実行する、ユニット２３６Ａ（図２Ｃ）などの完全精度ユニットを選択する。
【００６２】
しかし、命令が半精度命令である場合、シェーダプロセッサは、動作３１０で、必要とされる場合、任意のデータを完全精度フォーマットから半精度フォーマットに変換する。一態様において、精度コンバータ２２８が、受け取られた変換命令がシェーダプロセッサ２０６によって実行される際、データフォーマット変換を管理するとしてもよい。次に、動作３１２で、シェーダプロセッサ２０６が、そのグラフィックスデータを使用してバイナリ命令を実行する、ユニット２４０Ａ（図２Ｃ）などの半精度ユニットを選択する。
【００６３】
図４は、一態様による、図１に示されるストリーミングプロセッサ１０６、または図２Ａ〜図２Ｂに示されるシェーダプロセッサ２０６によって実行されるべき命令を生成するのに使用されることができるコンパイラ４０２を示すブロック図である。一態様において、コンパイラ４０２は、シェーダプロセッサ２０６によって実行されるべき命令を生成するのに使用される。この態様において、アプリケーション開発者は、コンパイラ４０２を使用して、シェーダプロセッサ２０６によって実行されるようにバイナリ命令（コード）を生成するとしてもよい。シェーダプロセッサ２０６は、グラフィックスデバイス２００（図２Ａ）の一部である。アプリケーション開発者は、グラフィックスデバイス２００で使用するためのアプリケーション開発プラットフォームにアクセスを有することができ、さらにグラフィックスピクセルアプリケーション２０２Ａおよび／またはグラフィックス頂点アプリケーション２０２Ｂのためにアプリケーションレベルソフトウェアを作成することができる。そのようなアプリケーションレベルソフトウェアは、図４に示されるグラフィックスアプリケーション命令４００を含む。グラフィックスアプリケーション命令４００は、ＤｉｒｅｃｔＸ（登録商標）、ＯｐｅｎＧＬ（登録商標）、ＯｐｅｎＶＧ（商標）、または他の言語に準拠する、もしくはそのような言語に翻訳可能な高レベルシェーディング言語で書かれた命令を含むとしてもよい。一態様において、これらのシェーディング言語は、グラフィックス操作を実行するプログラミングコードを開発するために使用されることが可能な１つまたは複数の標準のＡＰＩを定義する。
【００６４】
コンパイラ４０２は、ソースコード命令を受け取って、処理し、そのような命令をコンパイルして、コンパイルされた命令（例えば、バイナリの、実行可能な機械命令の形態の）を生成するようにプロセッサによって実行されるコンパイラソフトウェアによって、少なくとも部分的に、サポートされるとしてもよい。したがって、コンパイラ４０２は、コンパイラソフトウェアに関連するコンピュータ可読命令を実行する１つまたは複数のプロセッサによって形成されるとしてもよい。一態様において、これらの１つまたは複数のプロセッサは、アプリケーション開発者によって使用されるアプリケーション開発プラットフォームの一部、または内に実装されるとしてもよい。コンパイルされた命令は、ストリーミングプロセッサ１０６またはシェーダプロセッサ２０６などの１つまたは複数のプロセッサによって取り出され、実行されるように、コンピュータ可読データ記憶媒体上に格納されるとしてもよい。例えば、本開示は、１つまたは複数の第１の実行可能命令、１つまたは複数の第２の実行可能命令、および１つまたは複数の第３の実行可能命令を含むコンピュータ可読データ記憶媒体を企図している。
【００６５】
第１の実行可能命令は、プロセッサによって実行されると、グラフィックスアプリケーションの１つまたは複数の機能をサポートするとしてもよい。さらに、第１の実行可能命令のそれぞれは、その命令の実行に関する第１のデータ精度レベルを示すとしてもよい。第２の実行可能命令は、プロセッサによって実行されると、グラフィックスアプリケーションの１つまたは複数の機能をサポートするとしてもよい。さらに、第２の実行可能命令のそれぞれは、その命令の実行に関する、第１のデータ精度レベルとは異なる第２のデータ精度レベルを示すとしてもよい。第３の実行可能命令もまた、プロセッサによって実行されると、グラフィックスアプリケーションの１つまたは複数の機能をサポートするとしてもよく、第３の実行可能命令のそれぞれは、１つまたは複数の第１の実行可能命令が実行される際、グラフィックスデータを、第２のデータ精度レベルから第１のデータ精度レベルに変換する。
【００６６】
コンパイラ４０２は、グラフィックスアプリケーション命令４００をバイナリグラフィックス命令４０４にコンパイルすることができるとしてもよく、命令４０４は、その後、シェーダプロセッサ２０６によって実行されることが可能である。シェーダプロセッサ２０６は、メモリまたはデータ記憶デバイスなどのデータ記憶媒体からそのような命令を取り出し、これらの命令を実行して、グラフィックスアプリケーションをサポートする計算、およびその他の操作を実行するとしてもよい。グラフィックスアプリケーション命令４００のいくつかは、実行に関して或る特定のデータ精度レベルを指定するとしてもよい。例えば、いくつかの命令は、それらの命令が完全精度の操作もしくは計算を使用すること、または半精度の操作もしくは計算を使用することを指定するとしてもよい。コンパイラ４０２は、コンパイルプロセス中にグラフィックスアプリケーション命令４００を分析し、解析する規則４０６を適用し、命令４０４の実行に関するデータ精度レベルを示す、対応するバイナリ命令グラフィックス４０４を生成するために構成されるとしてもよい。
【００６７】
このため、グラフィックスアプリケーション命令４００の１つが、完全精度の操作もしくは計算を指定する場合、コンパイラ４０２の規則４０６は、完全精度命令であるバイナリ命令４０４の１つまたは複数を生成するとしてもよい。グラフィックスアプリケーション命令４００の別の１つが、半精度の操作もしくは計算を指定する場合、規則４０６は、半精度命令であるバイナリ命令４０４の１つまたは複数を生成する。一態様において、バイナリ命令４０４はそれぞれ、その命令が完全精度命令であるか、半精度命令であるかを示す「オペコード」を含むとしてもよい。一態様において、バイナリ命令４０４はそれぞれ、シェーダプロセッサ２０６によって復号されることができる命令の別の事前定義されたフィールド、フラグ、またはヘッダの中に含まれる情報を使用して、その命令の実行に関するデータ精度を示すとしてもよい。一態様において、データ精度は、実行されるべき命令のタイプに基づいて推測されるとしてもよい。
【００６８】
また、コンパイラ４０２は、異なるデータ精度レベルの間で変換を行うバイナリ変換命令４１０を生成することができる規則４０８も含む。コンパイル中、コンパイラ４０２のこれらの規則４０８は、そのような変換が、バイナリ命令４０４の実行中に必要である可能性があると判定するとしてもよい。例えば、規則４０８は、データを完全精度フォーマットから半精度フォーマットに変換する１つまたは複数の命令を、変換命令４１０内で生成することが可能である。この変換は、シェーダプロセッサ２０６が、グラフィックス命令４０４内で半精度命令を実行する際に要求されるとしてもよい。また、規則４０８は、データを半精度フォーマットから完全精度フォーマットに変換する１つまたは複数の命令を、変換命令４１０内で生成するとしてもよく、そのような変換は、シェーダプロセッサ２０６が、グラフィックス命令４０４内で完全精度命令を実行する際に要求されるとしてもよい。
【００６９】
コンパイラ４０２の規則４０８が変換命令４１０を生成すると、一態様によれば、シェーダプロセッサ２０６は、これらの変換命令４１０を実行して、対応するグラフィックス命令４０４の実行中にデータ精度変換を管理するとしてもよい。この態様において、変換命令４１０の実行は、そのような精度変換を管理して、シェーダプロセッサ２０６が、データを１つの精度レベルから別の精度レベルに変換するのに、いくつかのハードウェア変換機構を必ずしも使用しなくてもよいようにする。また、変換命令４１０は、完全精度ＡＬＵ２３６や半精度ＡＬＵ２４０など、異なる精度レベルを使用するＡＬＵへの、より効率的なデータ転送速度を許すとしてもよい。
【００７０】
本明細書で説明される構成要素および技術は、ハードウェアで、ソフトウェアで、ファームウェアで、または以上の任意の組合せで実施されるとしてもよい。モジュールまたは構成要素として説明されるいずれの特徴も、統合された論理デバイス内で一緒に実装されても、別個の、ただし、相互運用可能な複数の論理デバイスとして別々に実装されてもよい。様々な態様において、そのような構成要素は、少なくとも部分的には、集積回路チップまたは集積回路チップセットなどの、集積回路デバイスとひとまとめに呼ばれるとしてもよい１つまたは複数の集積回路デバイスとして形成されるとしてもよい。そのような集積回路デバイスは、任意の様々なグラフィックスアプリケーションおよびグラフィックスデバイスにおいて使用されるとしてもよい。いくつかの態様において、例えば、そのような構成要素は、無線通信デバイスハンドセットなどの移動デバイスの一部を形成するとしてもよい。
【００７１】
ソフトウェアで実施される場合、これらの技術は、１つまたは複数のプロセッサによって実行されると、前述した方法の１つまたは複数を実行する命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現されるとしてもよい。コンピュータ可読媒体は、実装材料を含むとしてもよいコンピュータプログラム製品の一部を形成するとしてもよい。コンピュータ可読媒体は、ＳＤＲＡＭ（シンクロナスダイナミックランダムアクセスメモリ）などのＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読取り専用メモリ）、ＮＶＲＡＭ（不揮発性ランダムアクセスメモリ）、ＥＥＰＲＯＭ（電気的に消去可能なプログラマブル読取り専用メモリ）、ＦＬＡＳＨメモリ、磁気データ記憶媒体もしくは光データ記憶媒体を備えるとしてもよい。
【００７２】
これらの技術は、さらに、または代替として、命令またはデータ構造の形態で符号を伝送し、もしくは通信し、１つまたは複数のプロセッサによってアクセスされ、読み取られ、さらに／または実行されることが可能なコンピュータ可読通信媒体によって少なくとも部分的に実現されるとしてもよい。任意の接続が、コンピュータ可読媒体と適宜呼ばれるとしてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、ＤＳＬ（ディジタル加入者線）、あるいは赤外線、無線、およびマイクロ波などの無線技術を使用してウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、ＤＳＬ、あるいは赤外線、無線、およびマイクロ波などの無線技術が、媒体の定義に含められる。また、以上の媒体の組合せも、コンピュータ可読媒体の範囲内に含められなければならない。
【００７３】
利用される任意のソフトウェアが、１つまたは複数のＤＳＰ（ディジタル信号プロセッサ）、汎用マイクロプロセッサ、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、または他の均等の統合された論理回路もしくはディスクリートの論理回路などの、１つまたは複数のプロセッサによって実行されるとしてもよい。したがって、本明細書で使用される「プロセッサ」または「コントローラ」という用語は、前述の構造、あるいは本明細書で説明される技術の実施に適した他の任意の構造のいずれを指すとしてもよい。このため、本開示はまた、本開示で説明される技術の１つまたは複数を実施する回路を含む様々な集積回路デバイスのいずれも企図している。そのような回路は、単一の集積回路チップデバイスで提供されることも、複数の相互運用可能な集積回路チップデバイスで提供されるとしてもよい。
【００７４】
本開示の様々な態様が、説明されてきた。これらの態様、およびその他の態様は、添付の特許請求の範囲に含まれる。
【図１】
2011518398.tif 000003
【図２Ａ】
2011518398.tif 000004
【図２Ｂ】
2011518398.tif 000005
【図２Ｃ】
2011518398.tif 000006
【図３】
2011518398.tif 000007
【図４】
2011518398.tif 000008
【手続補正書】
【提出日】平成22年12月21日(2010.12.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取ること、
前記グラフィックス命令内に含まれている、前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
コンパイラによって予め生成され、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を備える方法。
【請求項２】
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
前記計算結果を出力として提供すること、
をさらに備える請求項１の方法。
【請求項３】
前記複数の実行ユニットの１つを選択することは、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択すること、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択すること、
を備える請求項１の方法。
【請求項４】
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、請求項３の方法。
【請求項５】
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、請求項１の方法。
【請求項６】
前記示されるデータ精度に基づいて、前記プロセッサ内の前記複数の実行ユニットの１つを選択することは、前記第１のセットの中の前記実行ユニットの１つを選択することを備え、
前記選択された実行ユニットを使用して前記グラフィックス命令を実行することは、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを備える、
請求項５の方法。
【請求項７】
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取ること、
前記第２のグラフィックス命令内に含まれている、前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取ること、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択すること、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行すること、
をさらに備える請求項６の方法。
【請求項８】
前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることは、前記グラフィックス命令を復号して、前記データ精度を判定することを備える、請求項１の方法。
【請求項９】
前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することは、
前記変換命令の実行を経て、前記グラフィックスデータを前記示されたデータ精度に変換すること、および
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を備える請求項１の方法。
【請求項１０】
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、請求項１の方法。
【請求項１１】
プログラマブルストリーミングプロセッサに、
前記プロセッサ内での実行のためのグラフィックス命令を受け取ること、
前記グラフィックス命令内に含まれている、前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
コンパイラによって予め生成され、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を行わせるための命令を備えるコンピュータ可読媒体。
【請求項１２】
前記プロセッサに、
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
前記計算結果を出力として提供すること、
を行わせるための命令をさらに備える、請求項１１のコンピュータ可読媒体。
【請求項１３】
前記プロセッサに、前記複数の実行ユニットの１つを選択することを行わせるための前記命令は、
前記プロセッサに、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択すること、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択すること、
を行わせるための命令を備える、請求項１１のコンピュータ可読媒体。
【請求項１４】
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、請求項１３のコンピュータ可読媒体。
【請求項１５】
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、請求項１１のコンピュータ可読媒体。
【請求項１６】
前記プロセッサに、前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの１つを選択することを行わせるための前記命令は、前記プロセッサに、前記第１のセットの中の前記実行ユニットの１つを選択することを行わせるための命令を備え、
前期プロセッサに、前記選択された実行ユニットを使用して前記グラフィックス命令を実行することを行わせるための前記命令は、前記プロセッサに、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための命令を備える、
請求項１５のコンピュータ可読媒体。
【請求項１７】
前記プロセッサに、
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取ること、
前記第２のグラフィックス命令内に含まれている、前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取ること、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択すること、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行すること、
を行わせるための命令をさらに備える、請求項１６のコンピュータ可読媒体。
【請求項１８】
前記プロセッサに、前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることを行わせるための前記命令は、前記プロセッサに、前記グラフィックス命令を復号して、前記データ精度を判定することを行わせるための命令を備える、請求項１１のコンピュータ可読媒体。
【請求項１９】
前記プロセッサに、前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための前記命令は、
前記プロセッサに、
前記変換命令の実行を経て、前記グラフィックスデータを前記示されたデータ精度に変換すること、
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を行わせるための命令を備える、請求項１１のコンピュータ可読媒体。
【請求項２０】
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、請求項１１のコンピュータ可読媒体。
【請求項２１】
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取るための手段と、
前記グラフィックス命令内に含まれている、前記グラフィックス命令の実行に対するデータ精度の指示を受け取るための手段と、
コンパイラによって予め生成され、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るための手段と、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択するための手段と、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
を備えるデバイス。
【請求項２２】
前記デバイスは、
前記プログラマブルストリーミングプロセッサ内での実行のための前記グラフィックス命令を受け取り、前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられた前記グラフィックスデータを、前記示されたデータ精度に変換する前記変換命令を受け取るために構成されるコントローラと、
前記プロセッサ内の前記複数の実行ユニットと、
を具備し、
前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの１つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、
請求項２１のデバイス。
【請求項２３】
前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第１の実行ユニットと、前記示されたデータ精度とは異なる第２のデータ精度で命令を実行するために構成された第２の実行ユニットとを含み、前記コントローラは、前記第１の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、請求項２２のデバイス。
【請求項２４】
前記複数の実行ユニットは、１または複数の完全精度実行ユニットと少なくとも４つの半精度実行ユニットとを含む、請求項２２のデバイス。
【請求項２５】
前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項２４のデバイス。
【請求項２６】
前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項２４のデバイス。
【請求項２７】
前記少なくとも１つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも１つの完全精度レジスタバンクと、
前記少なくとも４つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも４つの半精度レジスタバンクと、
をさらに具備する、請求項２４のデバイス。
【請求項２８】
前記複数の実行ユニットは、少なくとも１つの完全精度実行ユニットと少なくとも１つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも１つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも１つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、請求項２２のデバイス。
【請求項２９】
前記プロセッサは、シェーダプロセッサを具備する、請求項２２のデバイス。
【請求項３０】
前記デバイスは、無線通信デバイスハンドセットを具備する、請求項２２のデバイス。
【請求項３１】
前記デバイスは、１または複数の集積回路デバイスを具備する、請求項２２のデバイス。
【請求項３２】
前記プロセッサは、
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取り、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成し、
前記計算結果を出力として提供する、
ためにさらに構成される、請求項２２のデバイス。
【請求項３３】
前記コントローラは、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択し、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択する、
ために構成される、請求項２２のデバイス。
【請求項３４】
前記コントローラは、前記グラフィックス命令を復号して、前記データ精度を判定するために構成される、請求項２２のデバイス。
【請求項３５】
前記プロセッサは、
前記変換命令の実行を経て、前記グラフィックスデータを前記示されたデータ精度に変換し、
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行する、
ためにさらに構成される、請求項２２のデバイス。
【請求項３６】
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、請求項２２のデバイス。
【請求項３７】
前記プロセッサと連結されている少なくとも１つのメモリモジュール、
をさらに具備し、
前記コントローラは、
前記少なくとも１つのメモリモジュールから実行のための前記グラフィックス命令を受け取るために構成される、請求項２２のデバイス。
【請求項３８】
コンパイラによって、グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、前記コンパイラによって、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、
前記コンパイラによって、前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成すること、
を具備する方法。
【請求項３９】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項３８の方法。
【請求項４０】
前記１または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する１または複数のコンパイルされた命令を生成することを具備する、請求項３８の方法。
【請求項４１】
前記１または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する１または複数のコンパイルされた命令を生成することを具備する、請求項３８の方法。
【請求項４２】
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項３８の方法。
【請求項４３】
後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶することをさらに具備する、請求項３８の方法。
【請求項４４】
プロセッサに、
コンパイラによって、グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、前記コンパイラによって、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、
前記コンパイラによって、前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成すること、
を行わせるための命令を具備するコンピュータ可読媒体。
【請求項４５】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項４４のコンピュータ可読媒体。
【請求項４６】
前記プロセッサに、前記１または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、請求項４４のコンピュータ可読媒体。
【請求項４７】
前記プロセッサに、前記１または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、請求項４４のコンピュータ可読媒体。
【請求項４８】
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項４４のコンピュータ可読媒体。
【請求項４９】
前記プロセッサに、後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶することを行わせるための命令をさらに具備する、請求項４４のコンピュータ可読媒体。
【請求項５０】
複数のグラフィックスアプリケーション命令を解析するための手段と、
その実行のための第１のデータ精度レベルを指定する各グラフィックスアプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成するための手段と、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成するための手段と、
を具備する装置。
【請求項５１】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項５０の装置。
【請求項５２】
前記１または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成するための手段を具備する、請求項５０の装置。
【請求項５３】
前記１または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成するための手段を具備する、請求項５０の装置。
【請求項５４】
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項５０の装置。
【請求項５５】
後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶するための手段をさらに具備する、請求項５０の装置。
【請求項５６】
コンパイラによって生成され、プログラマブルストリーミングプロセッサによって実行されると、グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルを指定する、１または複数の第１の実行可能命令と、
前記コンパイラによって生成され、前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルから異なっている第２のデータ精度レベルを指定する、１または複数の第２の実行可能命令と、
前記コンパイラによって生成され、前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、前記１または複数の第１の実行可能命令が実行されると、前記第２のデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換する、１または複数の第３の実行可能命令と、
を具備するコンピュータ可読データ記憶媒体。
【請求項５７】
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、請求項５６のコンピュータ可読データ記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
本開示の様々な態様が、説明されてきた。これらの態様、およびその他の態様は、添付の特許請求の範囲に含まれる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取ること、
前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を備える方法。
［２］
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
前記計算結果を出力として提供すること、
をさらに備える［１］の方法。
［３］
前記複数の実行ユニットの１つを選択することは、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択すること、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択すること、
を備える［１］の方法。
［４］
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、［３］の方法。
［５］
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、［１］の方法。
［６］
前記示されるデータ精度に基づいて、前記プロセッサ内の前記複数の実行ユニットの１つを選択することは、前記第１のセットの中の前記実行ユニットの１つを選択することを備え、
前記選択された実行ユニットを使用して前記グラフィックス命令を実行することは、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを備える、
［５］の方法。
［７］
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取ること、
前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取ること、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択すること、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行すること、
をさらに備える［６］の方法。
［８］
前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることは、前記グラフィックス命令を復号して、前記データ精度を判定することを備える、［１］の方法。
［９］
前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することは、
前記グラフィックスデータを前記示されたデータ精度に変換すること、および
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を備える［１］の方法。
［１０］
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、［１］の方法。
［１１］
プログラマブルストリーミングプロセッサに、
前記プロセッサ内での実行のためのグラフィックス命令を受け取ること、
前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択すること、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を行わせるための命令を備えるコンピュータ可読媒体。
［１２］
前記プロセッサに、
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
前記計算結果を出力として提供すること、
を行わせるための命令をさらに備える、［１１］のコンピュータ可読媒体。
［１３］
前記プロセッサに、前記複数の実行ユニットの１つを選択することを行わせるための前記命令は、
前記プロセッサに、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択すること、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択すること、
を行わせるための命令を備える、［１１］のコンピュータ可読媒体。
［１４］
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、［１３］のコンピュータ可読媒体。
［１５］
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、［１１］のコンピュータ可読媒体。
［１６］
前記プロセッサに、前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの１つを選択することを行わせるための前記命令は、前記プロセッサに、前記第１のセットの中の前記実行ユニットの１つを選択することを行わせるための命令を備え、
前期プロセッサに、前記選択された実行ユニットを使用して前記グラフィックス命令を実行することを行わせるための前記命令は、前記プロセッサに、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための命令を備える、
［１５］のコンピュータ可読媒体。
［１７］
前記プロセッサに、
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取ること、
前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取ること、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取ること、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択すること、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行すること、
を行わせるための命令をさらに備える、［１６］のコンピュータ可読媒体。
［１８］
前記プロセッサに、前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることを行わせるための前記命令は、前記プロセッサに、前記グラフィックス命令を復号して、前記データ精度を判定することを行わせるための命令を備える、［１１］のコンピュータ可読媒体。
［１９］
前記プロセッサに、前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための前記命令は、
前記プロセッサに、
前記グラフィックスデータを前記示されたデータ精度に変換すること、
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
を行わせるための命令を備える、［１１］のコンピュータ可読媒体。
［２０］
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、［１１］のコンピュータ可読媒体。
［２１］
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成されるコントローラと、
前記プロセッサ内の複数の実行ユニットと、
を具備し、
前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの１つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、デバイス。
［２２］
前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第１の実行ユニットと、前記示されたデータ精度とは異なる第２のデータ精度で命令を実行するために構成された第２の実行ユニットとを含み、前記コントローラは、前記第１の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、［２１］のデバイス。
［２３］
前記複数の実行ユニットは、１または複数の完全精度実行ユニットと少なくとも４つの半精度実行ユニットとを含む、［２１］のデバイス。
［２４］
前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、［２３］のデバイス。
［２５］
前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、［２３］のデバイス。
［２６］
前記少なくとも１つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも１つの完全精度レジスタバンクと、
前記少なくとも４つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも４つの半精度レジスタバンクと、
をさらに具備する、［２３］のデバイス。
［２７］
前記複数の実行ユニットは、少なくとも１つの完全精度実行ユニットと少なくとも１つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも１つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも１つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、［２１］のデバイス。
［２８］
前記プロセッサは、シェーダプロセッサを具備する、［２１］のデバイス。
［２９］
前記デバイスは、無線通信デバイスハンドセットを具備する、［２１］のデバイス。
［３０］
前記デバイスは、１または複数の集積回路デバイスを具備する、［２１］のデバイス。
［３１］
プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取るための手段と、
前記グラフィックス命令の実行に対するデータ精度の指示を受け取るための手段と、
前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るための手段と、
前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの１つを選択するための手段と、
前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
を備えるデバイス。
［３２］
前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取るための手段と、
前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成するための手段と、
前記計算結果を出力として提供するための手段と、
をさらに備える、［３１］のデバイス。
［３３］
前記複数の実行ユニットの１つを選択するための手段は、
前記示されたデータ精度が第１のデータ精度である場合、前記グラフィックスデータを使用して前記第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１または複数の実行ユニットの第１のセットの１つを選択するための手段と、
前記示されたデータ精度が、前記第１のデータ精度とは異なる第２のデータ精度である場合、前記グラフィックスデータを使用して前記第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットの１つを選択するための手段と、
を備える、［３１］のデバイス。
［３４］
前記第１のデータ精度は、完全データ精度を備え、前記第２のデータ精度は、半データ精度を備える、［３３］のデバイス。
［３５］
前記実行ユニットは、前記グラフィックスデータを使用して第１のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第１のセットを含み、前記グラフィックスデータを使用して、前記第１のデータ精度とは異なる第２のデータ精度で命令をそれぞれが実行する前記プロセッサ内の１つまたは複数の実行ユニットの第２のセットをさらに含む、［３１］のデバイス。
［３６］
前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの１つを選択するための手段は、前記第１のセットの中の前記実行ユニットの１つを選択するための手段を備え、
前記選択された実行ユニットを使用して前記グラフィックス命令を実行するための手段は、前記第１のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行するための手段を備える、
［３５］のデバイス。
［３７］
前記プロセッサ内での実行のための第２のグラフィックス命令を受け取るための手段と、
前記第２のグラフィックス命令の実行に対する前記第２のデータ精度の指示を受け取るための手段と、
前記プロセッサによって実行されると、前記第２のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第２のデータ精度に変換する、前記第２のグラフィックス命令とは異なる第２の変換命令を受け取るための手段と、
前記示された第２のデータ精度に基づいて、前記第２のセットの中の前記実行ユニットの１つを選択するための手段と、
前記第２のセットの中の前記選択された実行ユニットを使用して、前記第２のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第２のデータ精度で前記第２のグラフィックス命令を実行するための手段、
をさらに備える、［３６］のデバイス。
［３８］
前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取るための手段は、前記グラフィックス命令を復号して、前記データ精度を判定するための手段を備える、［３１］のデバイス。
［３９］
前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段は、
前記グラフィックスデータを前記示されたデータ精度に変換するための手段と、
前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
を備える、［３１］のデバイス。
［４０］
前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも１つを備える、［３１］のデバイス。
［４１］
プログラマブルストリーミングプロセッサと、
前記プロセッサと連結されている少なくとも１つのメモリモジュールと
を具備し、
前記プロセッサは、
前記少なくとも１つのメモリモジュールから実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成されるコントローラと、
命令を実行するために構成されている複数の実行ユニットと、
を具備し、
前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの１つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、デバイス。
［４２］
前記プロセッサに連結されている少なくとも１つのグラフィックスエンジンをさらに具備する、［４１］のデバイス。
［４３］
前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第１の実行ユニットと、前記示されたデータ精度とは異なる第２のデータ精度で命令を実行するために構成された第２の実行ユニットとを含み、前記コントローラは、前記第１の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、［４１］のデバイス。
［４４］
前記複数の実行ユニットは、１または複数の完全精度実行ユニットと少なくとも４つの半精度実行ユニットとを含む、［４１］のデバイス。
［４５］
前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、［４４］のデバイス。
［４６］
前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの１つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、［４４］のデバイス。
［４７］
前記プロセッサは、
前記少なくとも１つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも１つの完全精度レジスタバンクと、
前記少なくとも４つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも４つの半精度レジスタバンクと、
をさらに具備する、［４４］のデバイス。
［４８］
前記複数の実行ユニットは、少なくとも１つの完全精度実行ユニットと少なくとも１つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも１つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも１つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、［４１］のデバイス。
［４９］
前記プロセッサは、シェーダプロセッサを具備する、［４１］のデバイス。
［５０］
前記デバイスは、無線通信デバイスハンドセットを具備する、［４１］のデバイス。
［５１］
前記デバイスは、１または複数の集積回路デバイスを具備する、［４１］のデバイス。
［５２］
グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成すること、
を具備する方法。
［５３］
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、［５２］の方法。
［５４］
前記１または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する１または複数のコンパイルされた命令を生成することを具備する、［５２］の方法。
［５５］
前記１または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する１または複数のコンパイルされた命令を生成することを具備する、［５２］の方法。
［５６］
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、［５２］の方法。
［５７］
後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶することをさらに具備する、［５２］の方法。
［５８］
プロセッサに、
グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
その実行のための第１のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成すること、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成すること、
を行わせるための命令を具備するコンピュータ可読媒体。
［５９］
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、［５８］のコンピュータ可読媒体。
［６０］
前記プロセッサに、前記１または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、［５８］のコンピュータ可読媒体。
［６１］
前記プロセッサに、前記１または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、［５８］のコンピュータ可読媒体。
［６２］
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、［５８］のコンピュータ可読媒体。
［６３］
前記プロセッサに、後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶することを行わせるための命令をさらに具備する、［５８］のコンピュータ可読媒体。
［６４］
複数のグラフィックスアプリケーション命令を解析するための手段と、
その実行のための第１のデータ精度レベルを指定する各グラフィックスアプリケーション命令に対して、それぞれがその実行のための前記第１のデータ精度レベルを指定する１または複数の対応するコンパイルされた命令を生成するための手段と、
前記１または複数のコンパイルされた命令が実行されると、第２の、異なるデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換するための１または複数の変換命令を生成するための手段と、
を具備する装置。
［６５］
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、［６４］の装置。
［６６］
前記１または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成するための手段を具備する、［６４］の装置。
［６７］
前記１または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記１または複数のコンパイルされた命令を生成するための手段を具備する、［６４］の装置。
［６８］
前記１または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第１のデータ精度レベルを指定する場合に、それぞれが前記第１のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、［６４］の装置。
［６９］
後の実行のために前記１または複数のコンパイルされた命令をメモリに記憶するための手段をさらに具備する、［６４］の装置。
［７０］
プログラマブルストリーミングプロセッサによって実行されると、グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルを指定する、１または複数の第１の実行可能命令と、
前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、それぞれがその実行のための第１のデータ精度レベルから異なっている第２のデータ精度レベルを指定する、１または複数の第２の実行可能命令と、
前記プロセッサによって実行されると、前記グラフィックスアプリケーションの１または複数の機能をサポートし、前記１または複数の第１の実行可能命令が実行されると、前記第２のデータ精度レベルから前記第１のデータ精度レベルへグラフィックスデータを変換する、１または複数の第３の実行可能命令と、
を具備するコンピュータ可読データ記憶媒体。
［７１］
前記第１のデータ精度レベルは、完全データ精度レベルを具備し、前記第２のデータ精度レベルは、半データ精度レベルを具備する、［７０］のコンピュータ可読データ記憶媒体。
【国際調査報告】
2011518398.tif 000009
2011518398.tif 000010