JP2011518398A - 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ - Google Patents

混合精度命令実行を伴うプログラマブルストリーミングプロセッサ Download PDF

Info

Publication number
JP2011518398A
JP2011518398A JP2011506397A JP2011506397A JP2011518398A JP 2011518398 A JP2011518398 A JP 2011518398A JP 2011506397 A JP2011506397 A JP 2011506397A JP 2011506397 A JP2011506397 A JP 2011506397A JP 2011518398 A JP2011518398 A JP 2011518398A
Authority
JP
Japan
Prior art keywords
data
graphics
precision
instructions
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011506397A
Other languages
English (en)
Other versions
JP5242771B2 (ja
Inventor
ドゥ、ユン
ユ、チュン
ジャオ、グオファン
モロイ、スティーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=41001956&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2011518398(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011518398A publication Critical patent/JP2011518398A/ja
Application granted granted Critical
Publication of JP5242771B2 publication Critical patent/JP5242771B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

本開示は、異なる実行ユニットを使用して、混合精度(例えば完全精度、半精度)命令を実行することが可能なプログラマブルストリーミングプロセッサに関する。様々な実行ユニットは、それぞれがグラフィックスデータを使用して指定の精度レベルで命令を実行することが可能である。例示的なプログラマブルシェーダプロセッサは、コントローラと、複数の実行ユニットとを含む。コントローラは、実行のための命令を受け取り、命令の実行に対するデータ精度の指示を受け取るために構成されている。コントローラは、また、実行されると、命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する個別の変換命令を受け取るために構成されている。実施可能な場合、コントローラは、示されたデータ精度に基づいて実行ユニットのうちの1つを選択する。コントローラは、その後、選択された実行ユニットに、命令に関連付けられたグラフィックスデータを用いて、示されたデータ精度で命令を実行させる。
【選択図】 図2B

Description

本開示は、グラフィックス処理、より詳しくは、グラフィックスプロセッサアーキテクチャに関する。
背景
グラフィックスデバイスが、ビデオゲーム、グラフィックスプログラム、コンピュータ支援設計(CAD)アプリケーション、シミュレーションおよび視覚化ツール、イメージングなどの様々なアプリケーションに関して2D(2次元)イメージおよび3D(3次元)イメージを描画するために広く使用されている。グラフィックスデバイスは、イメージを描画する様々なグラフィックス操作を実行するとしてもよい。グラフィックス操作は、ラスタ化、ステンシル/深度試験(stencil and depth tests)、テクスチャマッピング、シェーディングなどを含むとしてもよい。3Dイメージは、表面を使用してモデル化されるとしてもよく、各表面は、三角形などの多角形で近似されるとしてもよい。レンダリング目的で3Dイメージを表すのに使用される三角形の数は、表面の複雑度、ならびにイメージの所望の解像度に依存する。
各三角形は、3つの頂点によって規定されるとしてもよく、各頂点は、空間座標、色値、およびテクスチャ座標などの様々な属性に関連付けられる。グラフィックスデバイスが、レンダリングプロセス中に頂点プロセッサを使用する場合、頂点プロセッサは、これらの様々な三角形の頂点を処理するとしてもよい。各三角形もピクチャ要素(ピクセル)から成る。グラフィックスデバイスが、レンダリングプロセス中にピクセルプロセッサも使用する、またはピクセルプロセッサを別個に使用する場合、ピクセルプロセッサは、三角形内の各ピクセルの成分の値を判定することによって、各三角形を描画する。
多くの事例において、グラフィックスデバイスは、シェーダプロセッサを利用して、シェーディングなどのいくつかのグラフィックス操作を実行するとしてもよい。シェーディングは、照明およびシャドウイングを含む非常に複雑なグラフィックス操作である。シェーダプロセッサは、レンダリングを実行する際に様々な異なる命令を実行する必要があるとしてもよく、これらの命令の実行を助ける1以上の実行ユニットを通常、含む。例えば、シェーダプロセッサは、算術論理ユニット(ALU)および/または初等関数ユニット(EFU)を実行ユニットとして含むとしてもよい。しばしば、これらの実行ユニットは、完全(フル)データ精度回路を使用して命令を実行することができる。しかし、そのような回路は、しばしば、より多くのパワーを要求し、さらにこれらの実行ユニットは、グラフィックスデバイスによって使用されるシェーダプロセッサ集積回路内でより多くの物理的スペースを占める場合がある。
概要
概ね、本開示は、異なる実行ユニットを使用して混合精度命令(例えば、完全精度、半精度)を実行することが可能なグラフィックスデバイスのプログラマブルストリーミングプロセッサに関する。例えば、プログラマブルプロセッサは、1以上の半精度実行ユニットに加えて1以上の完全精度実行ユニットを含むとしてもよい。バイナリ命令とこの命令の実行に関するデータ制度の指示の受け取りに基づいて、プロセッサは、指示されたデータ精度を伴なう受け取られた命令を実行するための適当な実行ユニットを選択することが可能である。プロセッサは、モバイルグラフィックスアプリケーションに対する命令ベースの適応ストリーミングプロセッサを具備するとしてもよい。
そうすることにより、プロセッサは、単一の実行ユニットを使用して、各種の異なるデータ精度を持つ命令を実行することを回避することができる。この結果、必要ない精度プロモーションは、削減又は削除できる。加えて、アプリケーションプログラマは、異なるアプリケーション命令に対して異なるデータ精度レベルを指定することができ、異なるアプリケーション命令は、さらに、プロセッサによって実行される1以上のバイナリ命令にコンパイルされる。
ある態様において、本開示は、プログラマブルストリーミングプロセッサ内で実行するためにグラフィックス命令を受け取ること、前記グラフィックス命令の実行に関するデータ精度の指示を受け取ること、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、を含む方法について指導される。前記方法は、前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの1つを選択すること、前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、をさらに備える。
ある態様において、本開示は、プログラマブルストリーミングプロセッサに、前記プロセッサ内での実行のためのグラフィックス命令を受け取ること、前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、を行わせるための命令を備えるコンピュータ可読媒体について指導される。前記コンピュータ可読媒体は、前記プロセッサに、前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの1つを選択すること、前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、を行わせるための命令をさらに備える。
ある態様において、本開示は、コントローラと複数の実行ユニットを含むプログラマブルストリーミングプロセッサについて指導される。前記コントローラは、実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取るために構成される。前記コントローラは、さらに、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成される。実施可能な場合、前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの1つを選択する。前記コントローラは、その後、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる。
他の態様において、本開示は、プロセッサに、グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、その実行のための第1のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第1のデータ精度レベルを指定する1または複数の対応するコンパイルされた命令を生成すること、を行わせるための命令を含むコンピュータ可読媒体について指導される。前記コンピュータ可読媒体は、前記プロセッサに、前記1または複数のコンパイルされた命令が実行されると、第2の、異なるデータ精度レベルから前記第1のデータ精度レベルへグラフィックスデータを変換するための1または複数の変換命令を生成することを行わせるための命令をさらに具備する。
ある態様において、本開示は、プログラマブルストリーミングプロセッサによって実行されると、グラフィックスアプリケーションの1または複数の機能をサポートし、それぞれがその実行のための第1のデータ精度レベルを指定する、1または複数の第1の実行可能命令を持つコンピュータ可読データ記憶媒体について指導される。前記コンピュータ可読データ記憶媒体は、前記プロセッサによって実行されると、前記グラフィックスアプリケーションの1または複数の機能をサポートし、それぞれがその実行のための第1のデータ精度レベルから異なっている第2のデータ精度レベルを指定する、1または複数の第2の実行可能命令をさらに含む。前記コンピュータ可読データ記憶媒体は、前記プロセッサによって実行されると、前記グラフィックスアプリケーションの1または複数の機能をサポートし、前記1または複数の第1の実行可能命令が実行されると、前記第2のデータ精度レベルから前記第1のデータ精度レベルへグラフィックスデータを変換する、1または複数の第3の実行可能命令をさらに含む。
本開示の1または複数の態様の詳細は、添付されている図面と以下の説明において述べる。他の特徴、目的、および効果は、説明および図面、ならびに請求項から明白である。
図1は、本開示の一態様に係る、グラフィックス処理システム内に含まれる場合がある様々な構成要素を示すブロック図である。 図2Aは、本開示の一態様に係る、プログラマブルシェーダプロセッサを含む例示的なグラフィックス処理システムを示すブロック図である。 図2Bは、本開示の一態様に係る、図2Aに示されるシェーダプロセッサのさらなる詳細を示すブロック図である。 図2Cは、本開示の一態様に係る、図2Bに示される実行ユニットおよびレジスタバンクのさらなる詳細を示すブロック図である。 図3は、本開示の一態様に係る、図2A〜図2Bに示されるシェーダプロセッサによって実行される場合がある例示的な方法を示す流れ図である。 図4は、本開示の一態様に係る、図1に示されるストリーミングプロセッサ、または図2A〜図2Bに示されるシェーダプロセッサによって実行されるべきグラフィックス命令を生成するために使用される場合があるコンパイラを示すブロック図である。
詳細な説明
図1は、本開示の一態様による、グラフィックス処理システム内に含まれることが可能である様々な構成要素を示すブロック図である。このグラフィックス処理システムは、スタンドアロンのシステムであっても、コンピューティングシステムもしくは無線通信デバイス(無線通信デバイスハンドセットなどの)などの、より大きいシステムの一部、またはディジタルカメラもしくは他のビデオデバイスの一部であってもよい。図1に示される例示的なシステムは、1つまたは複数のグラフィックスアプリケーション102A〜102N、グラフィックスデバイス100、および外部メモリ104を含むとしてもよい。グラフィックスデバイス100は、外部メモリ104、ならびにグラフィックスアプリケーション102A〜102Nのそれぞれに通信するように結合されるとしてもよい。一態様では、グラフィックスデバイス100は、1つまたは複数の集積回路またはチップの上に含められるとしてもよい。
グラフィックスアプリケーション102A〜102Nは、ビデオゲームアプリケーション、ビデオアプリケーション、カメラアプリケーション、または他のグラフィックスアプリケーションもしくはストリーミングアプリケーションなどの、様々な異なるアプリケーションを含むとしてもよい。これらのグラフィックスアプリケーション102A〜102Nは、同時に実行されるとしてもよく、それぞれ、所望される結果を実現する実行のスレッドを生成することができる。スレッドは、1つまたは複数のグラフィックス命令のシーケンスを使用して実行されるとしてもよい特定のタスクを示す。スレッドは、グラフィックスアプリケーション102A〜102Nが、同時に実行される複数のタスクを有すること、およびリソースを共有することを許す。
グラフィックスデバイス100は、グラフィックスアプリケーション102A〜102Nからスレッドを受け取り、これらのスレッドによって示されるタスクを実行する。図1に示される態様において、グラフィックスデバイス100は、プログラマブルストリーミングプロセッサ106、1つまたは複数のグラフィックスエンジン108A〜108N、および1つまたは複数のメモリモジュール110A〜110Nを含む。プロセッサ106は、シェーディングなどの様々なグラフィックス操作を実行するとしてもよい、さらにいくつかのアプリケーションに関する超越初等関数(transcendental elementary function)を計算するとしてもよい。一態様において、プロセッサ106は、モバイルグラフィックスアプリケーションに関する命令ベースの適応ストリーミングプロセッサを備えるとしてもよい。グラフィックスエンジン108A〜108Nは、テクスチャマッピングなどの他のグラフィックス操作を実行するとしてもよい。メモリモジュール110A〜110Nは、プロセッサ106およびグラフィックスエンジン108A〜108Nのためにデータおよびグラフィックス命令を格納する1つまたは複数のキャッシュを含むとしてもよい。
グラフィックスエンジン108A〜108Nは、三角形セットアップ、ラスタ化、ステンシル/深度試験、属性セットアップ、および/またはピクセル補間などの様々なグラフィックス操作を実行する1つまたは複数のエンジンを含むとしてもよい。外部メモリ104は、メモリモジュール110A〜110Nと比べて大型の、より遅いメモリであるとしてもよい。一態様において、外部メモリ104は、グラフィックスデバイス100からさらに遠くに(例えば、オフチップ(off-chip)で)配置される。外部メモリ104は、メモリモジュール110A〜110Nの1つまたは複数にロードされるとしてもよいデータおよびグラフィックス命令を格納する。
一態様において、プロセッサ106は、異なるグラフィックスアプリケーション102A〜102Nが、ALU精度、ALUパフォーマンス、およびALU入力/出力フォーマットに関して異なる要件を有する場合があることから、異なる実行ユニットを使用して混合精度(例えば、完全精度、半精度)グラフィックス命令を実行することができる。例として、プロセッサ106は、1つまたは複数の部分精度実行ユニットとともに1つまたは複数の完全精度実行ユニットを含むとしてもよい。部分精度実行ユニットは、例えば、半精度実行ユニットであるとしてもよい。プロセッサ106は、プロセッサ106の実行ユニットを使用して、グラフィックスアプリケーション102A〜102Nの1つまたは複数に関するグラフィックス命令を実行するとしてもよい。バイナリ命令(例えば、外部メモリ104、またはメモリモジュール110A〜110Nの1つからの)、およびグラフィックス命令の実行に関するデータ精度の指示を受け取ると、プロセッサ106は、受け取られた命令を、グラフィックスデータを使用して、示されたデータ精度で実行するために適切な実行ユニットを選択するとしてもよい。また、プロセッサ106は、実行されると、グラフィックス命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する別個の変換命令を受け取るとしてもよい。一態様において、この変換命令は、グラフィックス命令とは異なる別個の命令である。
グラフィックスデータは、グラフィックスアプリケーション102A〜102Nによって供給されても、外部メモリ104またはメモリモジュール110A〜110Nの1つから取り出されても、グラフィックスエンジン108A〜108Nの1つまたは複数によって供給されてもよい。示されたデータ精度に基づいて、異なる実行ユニットにおいて命令を選択的に実行することによって、プロセッサ106は、単一の実行ユニットを使用して、完全精度命令と半精度命令の両方を実行することを回避することができる。さらに、グラフィックスアプリケーション102A〜102Nのプログラマは、アプリケーションコードを書く際の、より高い柔軟性を得ることができる。例えば、アプリケーションプログラマは、プロセッサ106によって処理される1つまたは複数のバイナリ命令にその後コンパイルされる、アプリケーション命令に関するデータ精度レベルを指定するとしてもよい。プロセッサ106は、バイナリ命令を実行する適切な実行ユニットを、実行ユニットおよびバイナリ命令に関連付けられたデータ精度に基づいて、選択する。さらに、プロセッサ106は、受け取られた変換命令を実行して、必要とされる場合、その命令に関連付けられたグラフィックスを、示されるデータ精度に変換するとしてもよい。例えば、供給されるグラフィックスデータが、示されるデータ精度とは異なるデータ精度を有する場合、プロセッサ106は、グラフィックス命令が、選択された実行ユニットによって実行されることができるように、グラフィックスデータを、示されるデータ精度に変換するための変換命令を実行するとしてもよい。
図2Aは、一態様による、プログラマブルシェーダプロセッサ206を含む例示的なグラフィックス処理システムを示すブロック図である。この態様において、図2Aに示されるグラフィックス処理システムは、図1に示される、より一般的なシステムの例示的な具体化である。一態様において、シェーダプロセッサ206は、ストリーミングプロセッサである。図2Aにおいて、例示的なシステムは、グラフィックスデバイス200にそれぞれ通信するように結合された2つのグラフィックスアプリケーション202Aおよび202Bを含む。図2Aの例において、グラフィックスアプリケーション202Aは、グラフィックスイメージングピクセルデータを処理すること、および管理することができるピクセルアプリケーションである。図2Aの例において、グラフィックスアプリケーション202Bは、グラフィックスイメージング頂点データを処理すること、および管理することができる頂点アプリケーションである。一態様において、グラフィックスピクセルアプリケーション202Aは、ピクセル処理アプリケーションを備え、グラフィックス頂点アプリケーション202Bは、頂点処理アプリケーションを備える。
多くの事例において、グラフィックスピクセルアプリケーション202Aは、より低い精度の(半精度などの)データフォーマットを使用する多くの機能を実装するが、より高い精度の(完全精度などの)データフォーマットを使用するいくつかの機能を実施するとしてもよい。また、グラフィックスピクセルアプリケーション202Aは、ピクセルデータに関する命令のクワッドベースの(quad-based)実行を指定するとしてもよい。通常、グラフィックス頂点アプリケーション202Bは、より高い精度のデータフォーマットを使用して機能を実施するが、頂点データに関する命令のクワッドベースの実行を指定しないとしてもよい。このため、グラフィックスデバイス200に対するアプリケーション202Aおよび202Bなどの異なるアプリケーション、ならびに対応するAPIは、異なるデータ精度要件を指定するとしてもよい。さらに、所与のアプリケーション202Aまたは202B(および対応するAPI)内部で、混合精度命令の実行が指定されるとしてもよい。例えば、グラフィックスピクセルアプリケーション202Aに関するシェーディング言語が、シェーダプロセッサ206によって実行されるべきシェーダ命令に関する精度修飾子を提供するとしてもよい。このため、いくつかの命令が、実行に関して1つの精度レベルを指定するとしてもよい一方で、他の命令は、別の精度レベルを指定するとしてもよい。グラフィックスデバイス200内部のシェーダプロセッサ206は、混合精度命令を一様に実行することができる。
一態様において、シェーダプロセッサ206は、1つまたは複数のアプリケーションプログラミングインターフェース、つまり、API(図示せず)を介してグラフィックスアプリケーション202Aおよび202Bと対話する。例えば、グラフィックスピクセルアプリケーション202Aが、第1のAPIを介してシェーダプロセッサ206と対話するとしてもよく、グラフィックス頂点アプリケーション202Bが、第2のAPIを介してシェーダプロセッサ206と対話するとしてもよい。第1のAPIと第2のAPIは、一態様では、共通のAPIを備えるとしてもよい。APIは、グラフィックスアプリケーション202Aおよび202Bによって使用される1つまたは複数の標準プログラミング仕様を定義し、グラフィックスデバイス200に、シェーダプロセッサ206によって実行されることができるシェーディング操作を含む、様々なグラフィカル操作を実行することを行わせるとしてもよい。
グラフィックスデバイス200は、シェーダプロセッサ206を含む。シェーダプロセッサ206は、シェーディング操作を実行することができる。シェーダプロセッサ206は、グラフィックスピクセルアプリケーション202Aを相手にピクセルデータを交換することができ、グラフィックス頂点アプリケーション202Bを相手に頂点データを交換することがさらにできる。
図2Aの例において、シェーダプロセッサ206は、テクスチャエンジン208およびキャッシュメモリシステム210とも通信する。テクスチャエンジン208は、テクスチャ関連の操作を実行することができ、さらにキャッシュメモリシステム210に通信するように結合される。キャッシュメモリシステム210は、メインメモリ204に結合される。キャッシュメモリシステム210は、或る態様において命令キャッシュとデータキャッシュの両方を含む。命令および/またはデータは、メインメモリ204からキャッシュメモリシステム210にロードされることが可能であり、次に、ロードされた命令および/またはデータは、テクスチャエンジン208およびシェーダプロセッサ206が利用できるようにされる。シェーダプロセッサ206は、同期インターフェースまたは非同期インターフェースを介して外部デバイスまたは外部構成要素と通信するとしてもよい。
一態様において、シェーダプロセッサ206は、様々な実行ユニットを使用して混合精度グラフィックス命令を実行することができる。この態様において、シェーダプロセッサ206は、1つまたは複数の半精度実行ユニットとともに1つまたは複数の完全精度実行ユニットを含む。シェーダプロセッサ206は、グラフィックスアプリケーション202Aおよび202Bの片方、または両方に関するグラフィックス命令を実行するようにプロセッサ206の実行ユニットを呼び出すとしてもよい。バイナリ命令(キャッシュメモリシステム210などからの)を受け取り、さらに命令の実行に関するデータ精度の指示も受け取ると、シェーダプロセッサ206は、受け取られた命令を、グラフィックスデータを使用して、示されたデータ精度で実行するために適切な実行ユニットを選択することができる。グラフィックスピクセルアプリケーション202Aが、例えば、ピクセルデータをシェーダプロセッサ206に供給するとしてもよく、グラフィックス頂点アプリケーションn202Bが頂点データをシェーダプロセッサ206に供給するとしてもよい。
また、シェーダプロセッサは、実行されると、グラフィックス命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する別個の変換命令を受け取るとしてもよい。一態様において、変換命令は、グラフィックス命令とは異なる別個の命令である。
また、グラフィックスデータが、メインメモリ204またはキャッシュメモリシステム210からロードされるとしてもよく、あるいはテクスチャエンジン208によって供給されるとしてもよい。グラフィックスピクセルアプリケーション202Aおよび/またはグラフィックス頂点アプリケーション202Bが、シェーダプロセッサ206に、実行のためにキャッシュメモリシステム210から1つまたは複数のバイナリ命令をロードさせる実行のスレッドを呼び出す。一態様において、ロードされた各命令は、その命令の実行に関するデータ精度を示す。さらに、シェーダプロセッサ206が、受け取られた変換命令を実行して、必要とされる場合、その命令に関連付けられたグラフィックスデータを、示されるデータ精度に変換するとしてもよい。例えば、供給されたグラフィックスデータが、示されるデータ精度とは異なるデータ精度を有する場合、シェーダプロセッサ206は、グラフィックス命令が、選択された実行ユニットによって実行されることができるように、グラフィックスデータを、示されるデータ精度に変換するための変換命令を実行するとしてもよい。示されたデータ精度に基づいて、異なる実行ユニットにおいて命令を選択的に実行することによって、シェーダプロセッサ206は、単一の実行ユニットを使用して、完全精度命令と半精度命令の両方を実行することを回避することができる。
図2Bは、一態様による、図2Aに示されるシェーダプロセッサ206のさらなる詳細を示すブロック図である。シェーダプロセッサ206内部で、シーケンサ222が、グラフィックスアプリケーション202Aおよび202Bからスレッドを受け取り、これらのスレッドをスレッドスケジューラ−コンテキストレジスタ224に供給する。一態様において、シーケンサ222は、MUX(多重化装置)を備える。一態様において、シーケンサ222は、いずれのスレッドが受け入れられるべきかを判定し、さらに受け入れられた各スレッドに複数精度レジスタ空間および/またはその他のリソースを割り当てるとしてもよい。例えば、シーケンサ222は、半精度命令にレジスタ空間を割り当てるとしてもよく、さらに完全精度命令にレジスタ空間を割り当てるとしてもよい。
一態様において、グラフィックスピクセルアプリケーション202Aから受け取られるピクセルデータは、ピクセルクワッドベースの(すなわち、4ピクセルずつの)フォーマットの属性情報を含む。この態様において、実行ユニット234は、4ピクセルずつ処理することができる。一態様において、実行ユニット234は、グラフィックス頂点アプリケーション202Bからのデータを1頂点ずつ処理するとしてもよい。
スレッドスケジューラ224は、スレッドの実行をスケジュールし、管理する様々な機能を実行し、さらにスレッドの実行シーケンスを制御するとしてもよい。各スレッドに関して、スレッドスケジューラ224は、一態様によれば、そのスレッドに要求されるリソースの準備ができているかどうかを判定し、そのスレッドに関して準備のできていないリソース(例えば、命令、レジスタファイル、またはテクスチャ読取り)が存在する場合、そのスレッドをスリープキューに入れ、リソースのすべての準備ができると、そのスレッドをスリープキューから活性キューに移すとしてもよい。スレッドスケジューラ224は、スレッドに関する複数のリソースを同期させるため、ロード制御ユニット226とインターフェースをとる。一態様において、スレッドスケジューラ224は、コントローラ225の一部である。図2Bは、コントローラ225の例を示す。コントローラ225は、シェーダプロセッサ206内の命令およびデータの処理と関係する様々な機能を制御するとしてもよい。図2Bの例において、コントローラ225は、スレッドスケジューラ224、ロード制御ユニット226、およびマスタエンジン220を含む。いくつかの態様において、コントローラ225は、マスタエンジン220、スレッドスケジューラ224、およびロード制御ユニット226のうち少なくとも1つを含む。
スレッドスケジューラ224は、スレッドの実行も管理する。スレッドスケジューラ224は、命令キャッシュ230から各スレッドに関する命令をフェッチし、必要とされる場合、各命令を復号し、さらにそのスレッドに関するフロー制御を実行する。スレッドスケジューラ224は、実行のために活性のスレッドを選択し、選択されたスレッドの間で読取り/書込みポート競合がないか調べ、競合が全く存在しない場合、1つのスレッドに関する命令を実行ユニット234に送り、さらに別のスレッドに関する命令をロード制御ユニット226に送る。スレッドスケジューラ224は、各スレッドに関してプログラム/命令カウンタを保持し、命令が実行される、またはプログラムフローが変更されると、このカウンタを更新する。また、スレッドスケジューラ224は、欠落している命令を命令キャッシュ230からフェッチする要求も発行し、さらに完了したスレッドを除去する。
一態様において、スレッドスケジューラ224は、マスタエンジン220と対話する。この態様において、スレッドスケジューラ224は、いくつかの責任をマスタエンジン220に委託するとしてもよい。一態様において、スレッドスケジューラ224は、実行のために命令を復号するとしてもよく、または各スレッドに関してプログラム/命令カウンタを保持して、命令が実行されると、このカウンタを更新するとしてもよい。一態様において、マスタエンジン220は、命令実行に関する状態をセットアップし、さらに命令実行中に命令更新シーケンスを制御するとしてもよい。
命令キャッシュ230は、スレッドに関する命令を格納する。これらの命令は、各スレッドに関して実行されるべき特定の操作を示す。各操作は、例えば、算術操作、初等関数、メモリアクセス操作、または別の形態の命令であることが可能である。命令キャッシュ230には、ロード制御ユニット226を介して、必要に応じて、キャッシュメモリシステム210またはメインメモリ204(図2A)からの命令がロードされるとしてもよい。これらの命令は、一態様による、グラフィックスアプリケーションコードからコンパイルされたバイナリ命令である。各バイナリ命令は、シェーダプロセッサ206内でその命令の実行のために使用されるデータ精度を示す。例えば、その命令に関連する命令タイプが、その命令が完全精度命令であるか、または半精度命令であるかを示すとしてもよい。あるいは、1つの例示的な態様によれば、その命令内の或る特定のフラグまたはフィールドが、その命令が完全精度命令であるか、半精度命令であるかを示すとしてもよい。スレッドスケジューラ224は、命令を復号すること、および各命令に関するデータ精度(完全精度または半精度などの)を特定することができるとしてもよい。次に、スレッドスケジューラ224は、各命令を、示されたデータ精度でその命令を実行することができる実行ユニットにルーティングすることができる。この実行ユニットは、命令実行のために必要とされるグラフィックスデータを、後段でより詳細に説明される、定数バッファ232またはレジスタバンク242からロードする。
図2Bに示される態様において、実行ユニット234は、1つまたは複数の完全精度ALU(算術論理ユニット)236、1つまたは複数の半精度ALU240、および超越初等演算を実行する初等関数ユニット238を含む。ALU236および240は、浮動計算を可能にする1つまたは複数の浮動小数点ユニット、および/または整数演算および論理演算を可能にする1つまたは複数の整数論理ユニットを含むとしてもよい。必要な場合、実行ユニット234は、命令実行中に定数バッファ232またはレジスタバンク242から、グラフィックスデータなどのデータをロードする。完全精度ALU236と半精度ALU240はともに、算術演算(加算、減算、乗算、乗累算などの)、を実行することができ、さらに論理演算(AND、OR、XORなどの)も実行することができる。各ALUユニットは、一態様によれば、単一のクワッドALUまたは4つのスカラーALUを備えるとしてもよい。4つのスカラーALUが使用される場合、4ピクセルに関する属性が、ALUによって並行に処理されるとしてもよい。クワッドALUは、或るピクセル、または或る頂点に関する4つの属性を並行に処理するのに使用されるとしてもよい。しかし、完全精度ALU236が、完全精度計算を使用して命令を実行するのに対して、半精度ALU240は、半精度計算を使用して命令を実行する。
初等関数ユニット238は、シェーダ命令において広く使用される、サイン、コサイン、逆数、対数、指数、平方根、または平方根逆数などの超越初等関数を計算することが可能である。初等関数ユニット238は、単純な命令を使用して初等関数の多項式近似を実行するのに要求されるよりはるかに少ない時間でそれらの初等関数を計算することによって、シェーダパフォーマンスを向上させるとしてもよい。初等関数ユニット238は、本開示の一態様によれば、完全精度で命令を実行することができるだけではなく、計算結果を半精度フォーマットに変換することができるとしてもよい。
図2Bに示される例示的な態様におけるコントローラ225の一部であるロード制御ユニット226は、シェーダプロセッサ206内部の様々な構成要素に関するデータおよび命令の流れを制御する。一態様において、ロード制御ユニット226は、シェーダプロセッサ206の超過の内部データを外部メモリ(例えば、キャッシュメモリシステム210)に退去させるとしてもよく、さらに命令、バッファ、またはテクスチャデータなどの外部リソースを、テクスチャエンジン208および/またはキャッシュメモリシステム210からフェッチするとしてもよい。ロード制御ユニット226は、キャッシュメモリシステム210とインターフェースをとり、命令キャッシュ230、定数バッファ232(グラフィックスアプリケーション202Aおよび/または202Bに関する命令実行中に使用される一様なデータを格納することが可能な)、およびレジスタバンク242にキャッシュメモリシステム210からのデータおよび命令をロードする。また、ロード制御ユニット226は、レジスタバンク242からの出力データをキャッシュメモリシステム210に供給するとしてもよい。レジスタバンク242は、1つまたは複数の実行ユニット234からの出力データを受け取るとしてもよく、複数の実行ユニット234の間で共有されることが可能である。また、ロード制御ユニット226は、テクスチャエンジン208ともインターフェースをとる。いくつかの事例では、テクスチャエンジン208が、ロード制御ユニット226を介してシェーダプロセッサ206にデータ(テクセルデータなどの)を供給するとしてもよく、いくつかの事例では、ロード制御ユニット226が、テクスチャエンジン208にデータ(テクスチャ座標データなどの)および/または命令(サンプラID命令などの)を供給するとしてもよい。
図2Bの例において、ロード制御ユニット226は、精度コンバータ228も含む。ロード制御ユニット226の中に読み込まれるデータ、またはユニット226から書き出されるデータは、異なるデータ精度(例えば、完全精度、半精度)を有するとしてもよいため、ロード制御ユニット226は、或るデータを異なる構成要素に(レジスタバンク242またはキャッシュメモリシステム210などに)ルーティングするのに先立って、そのデータを異なるデータ精度レベルに変換する必要があるとしてもよい。精度コンバータ228は、ロード制御ユニット226内部でそのようなデータ変換を管理する。
一態様において、精度コンバータ228は、シェーダプロセッサ206によって、受け取られた変換命令が実行されると、グラフィックスデータを1つの精度レベルから別の精度レベルに変換するように動作する。実行されると、変換命令は、受け取られたグラフィックス命令に関連付けられたグラフィックスデータを、示されるデータ精度に変換する。例えば、変換命令は、半精度フォーマットのデータを完全精度フォーマットに変換すること、または完全精度フォーマットのデータを半精度フォーマットに変換するとしてもよい。
コンスタントバッファ232は、命令実行中に実行ユニット234によって使用される定数値を格納することが可能である。レジスタバンク242は、実行されたスレッドに関して実行ユニット234からの一時的結果、ならびに最終結果を格納する。レジスタバンク242は、1つまたは複数の完全精度レジスタバンク244、および1つまたは複数の半精度レジスタバンク246を含む。最終実行結果は、ロード制御ユニット226によってレジスタバンク242から読み取られることが可能である。さらに、ディストリビュータ248が、レジスタバンク242から、実行されたスレッドに関する最終結果を受け取り、これらの結果を、グラフィックス頂点アプリケーション202Bとグラフィックスピクセルアプリケーション202Aの少なくとも1つに分配するとしてもよい。
アプリケーション202Aおよび202Bなどのグラフィックスアプリケーションは、異なる精度レベルを使用してデータを処理することを要求するとしてもよい。例えば、一態様において、グラフィックス頂点アプリケーション202Bは、完全精度データフォーマットを使用して頂点データを処理するのに対して、グラフィックスピクセルアプリケーション202Aは、半精度フォーマットを使用してピクセルデータを処理する。一態様において、グラフィックスピクセルアプリケーション202Aは、或る情報を、半精度フォーマットを使用して処理するが、他の情報は、完全精度フォーマットを使用して処理する。グラフィックス頂点アプリケーション202Bおよびグラフィックスピクセルアプリケーション202Aからのスレッドの実行中、シェーダプロセッサ206は、実行に関して異なるデータ精度レベルを使用する命令を命令キャッシュ230から受け取り、処理する。
このため、図2Bに示される態様において、スレッドスケジューラ224は、命令キャッシュ230からロードされた所与の命令とともに示される、またはそのような命令に関連付けられたデータ精度を識別して、その命令を適切な実行ユニットにルーティングする。例えば、その命令が完全精度命令として復号された(命令内に含まれる命令タイプまたはフィールド/ヘッダによる指示などを介して)場合、スレッドスケジューラ224は、その命令を、実行のために完全精度ALU236の1つにルーティングすることができる。完全精度ALU236からの実行結果は、完全精度レジスタバンク244の1つまたは複数の中に格納されて、ディストリビュータ248を介してグラフィックスアプリケーション(グラフィックス頂点アプリケーション202Bなどの)に戻されるとしてもよい。しかし、命令キャッシュ230からの命令が、半精度命令としてスレッドスケジューラ224によって復号された場合、スレッドスケジューラ224は、その命令を、実行のために半精度ALU240の1つにルーティングすることができる。半精度ALU240からの実行結果は、半精度レジスタバンク246の1つまたは複数の中に格納されて、ディストリビュータ248を介してグラフィックスアプリケーション(グラフィックスピクセルアプリケーション202Aなどの)に戻されるとしてもよい。
図2Cは、一態様による、図2Bに示される実行ユニット234およびレジスタバンク242のさらなる詳細を示すブロック図である。前述したとおり、実行ユニット234は、様々な異なるタイプの実行ユニットを含む。図2Cの例において、実行ユニット234は、1つまたは複数の完全精度ALU236A〜236N、1つまたは複数の半精度ALU240A〜240N、および1つまたは複数の初等関数ユニット238を含む。各完全精度ALU236A〜236Nは、データを使用して、完全精度計算を使用する命令を実行することができる。命令実行中に使用される入力データは、完全精度レジスタバンク244A〜244N(レジスタバンク242内部の)の1つまたは複数から取り出されるとしてもよい。さらに、完全精度ALU236A〜236Nによる命令実行中に生成された計算結果は、完全精度レジスタバンク244A〜244Nの1つまたは複数の中に格納されるとしてもよい。
同様に、各半精度ALU240A〜240Nは、データを使用して、半精度計算を使用する命令を実行することができる。命令実行中に使用される入力データは、半精度レジスタバンク246A〜246Nの1つまたは複数から取り出されるとしてもよい。さらに、半精度ALU240A〜240Nによる命令実行中に生成された計算結果は、半精度レジスタバンク246A〜246Nの1つまたは複数の中に格納されるとしてもよい。
前述したとおり、初等関数ユニット238は、完全精度を実行することができるが、半精度フォーマットで結果を格納することができる。一態様において、初等関数ユニット238は、完全精度フォーマットまたは半精度フォーマットで結果データを格納することができる。その結果、初等関数ユニット238は、完全精度レジスタバンク244A〜244Nに通信するように結合され、さらに半精度レジスタバンク246A〜246Nにも通信するように結合される。初等関数ユニット238は、一態様によれば、レジスタバンク242内のレジスタのうちの任意のレジスタから中間データを取り出すとしてもよく、任意のレジスタに最終結果データを格納するとしてもよい。
さらに、初等関数ユニット238は、精度コンバータ239を含む。初等関数ユニット238が完全精度データフォーマットと半精度データフォーマットの間で変換を行う事例において、ユニット238は、精度コンバータ239を使用して、この変換を実行するとしてもよい。例えば、ユニット238は、半精度レジスタバンク246Aから入力グラフィックスデータをロードし、このデータを使用して完全精度命令を実行するとしてもよい。精度コンバータ239は、この入力データを半精度フォーマットから完全精度フォーマットに変換するとしてもよい。次に、ユニット238は、この変換されたデータを使用して、完全精度命令を実行するとしてもよい、結果データが半精度レジスタバンク246Aの中に再び格納されるべき場合、精度コンバータ239は、変換された結果データが半精度レジスタバンク246Aの中に格納されることができるように、結果データを完全精度フォーマットから半精度フォーマットに変換するとしてもよい。代替として、結果データが完全精度レジスタバンク244A〜244Nの1つの中に格納されるべき場合、完全精度フォーマットの結果データは、これらのレジスタの1つの中に直接に格納されるとしてもよい。
スレッドスケジューラ224(図2B)は、バイナリ命令が、その命令に関連付けられたデータ精度に基づいて、命令キャッシュ230から実行ユニット234の1つにロードされ、実行されるようにすることができる。例えば、スレッドスケジューラ224は、完全精度ALU236A〜236Nの1つまたは複数に完全精度命令をルーティングするとしてもよく、半精度ALU240A〜240Nの1つまたは複数に半精度命令をルーティングするとしてもよい。スレッドスケジューラ224は、初等命令を、実行のために初等関数ユニット238にルーティングするとしてもよい。結果データは、レジスタバンク242内の対応するレジスタの中に格納されるとしてもよい。一態様において、完全精度ALU236A〜236N、初等関数ユニット238、および半精度ALU240A〜240Nの間のデータ遷移は、レジスタバンク242を通過する。
一態様において、各半精度レジスタバンク246A〜246Nは、各完全精度レジスタバンク244A〜244Nと比べて、より少ないレジスタ記憶空間を含み、集積回路上で、より小さい物理的スペースを占める。このため、例えば、半精度レジスタバンク246Aは、完全精度レジスタバンク244Aと比べて、より小さいレジスタ記憶空間を含み、より小さい物理的スペースを占める。一態様において、1つの完全精度レジスタバンク(バンク244Aなどの)は、2つの半精度レジスタバンク(バンク246Aとバンク246Bを合わせるなどの)と実質的に同一の量のレジスタ空間を含むとしてもよく、実質的に同一の量の物理的スペースを占めるとしてもよい。
同様に、各完全精度ALU236A〜236Nは、各半精度ALU240A〜240Nと比べて、集積回路内でより多くの物理的スペースを占めるとしてもよい。さらに、各完全精度ALU236A〜236Nは、通常、各半精度ALU240A〜240Nと比べて、より多くの動作電力を使用するとしてもよい。その結果、いくつかの態様において、使用される完全精度ALUおよび完全精度レジスタバンクの数を制限し、使用される半精度ALUおよび半精度レジスタバンクの数を増やして、集積回路サイズを最小限に抑え、電力消費要件を低減するようにすることが所望される可能性がある。これらの態様は、シェーダプロセッサ206が、移動体通信デバイスもしくは無線通信デバイス(例えば、移動体無線電話機もしくは無線通信デバイスハンドセットなどの)、あるいはディジタルカメラまたはビデオデバイスなどの、いくつかの電力制約を有する、より小さいコンピューティングデバイスの一部である場合に、特に適切である、または有益である可能性がある。
したがって、一態様において、実行ユニット234は、1つだけしか完全精度ALU236Aを含まないとしてもよく、レジスタバンク242は、1つだけしか完全精度レジスタバンク244Aを含まないとしてもよい。この態様において、実行ユニット234は、4つの半精度ALU240A〜240Dをさらに含むとしてもよい一方で、レジスタバンク242は、4つの半精度レジスタバンク246A〜246Dを含むとしてもよい。その結果、実行ユニット234は、少なくとも1つの半精度命令、および1つの完全精度命令を並行に実行可能としてもよい。例えば、4つの半精度ALU240A〜240Dは、一度に4つのピクセルの属性に関する命令を実行するとしてもよい。1つだけの完全精度ALU236Aが使用されるため、一態様によれば、ALU236Aは、一度に1つの頂点に関する命令を実行することができる。その結果、シェーダプロセッサ206は、一態様によれば、頂点パッキングバッファを利用して、複数の頂点に関するデータをパックする必要がない。この事例において、頂点に関するベクトルベースの属性データは、そのデータをスカラーフォーマットに変換する必要なしに、直接に処理されるとしてもよい。
別の態様において、実行ユニット234は、4つの完全精度ALU236A〜236Dを含むとしてもよく、レジスタバンク242は、4つの完全精度レジスタバンク244A〜244Dを含むとしてもよい。この態様において、実行ユニット234は、8つの半精度ALU240A〜240Hをさらに含むとしてもよい一方で、レジスタバンク242は、8つの半精度レジスタバンク246A〜246Hを含むとしてもよい。その結果、実行ユニット234は、例えば、2クワッド上の2つの半精度命令と、1クワッド上の1つの完全精度命令とを並行に実行することができる。各クワッド、またはスレッドは、4つのピクセルまたは4つの頂点のグループである。
別の態様において、実行ユニット234は、4つの完全精度ALU236A〜236Dを含むとしてもよく、レジスタバンク242は、4つの完全精度レジスタバンク244A〜244Dを含むとしてもよい。この態様において、実行ユニット234は、4つの半精度ALU240A〜240Hをさらに含む一方で、レジスタバンク242は、4つの半精度レジスタバンク246A〜246Hを含む。完全精度ALU236A〜236N、完全精度レジスタバンク244A〜244N、半精度ALU240A〜240N、および半精度レジスタバンク246A〜246Nの他の様々な組合せが、使用されるとしてもよい。
一態様において、シェーダプロセッサ206は、スレッドスケジューラ224を使用して、完全精度ALU236A〜236Nの1つまたは複数、および完全精度レジスタバンク244A〜244Nの1つまたは複数に関して、選択的に電源を切る、またはディセーブルにすることができるとしてもよい。この態様において、シェーダプロセッサ206は、1つまたは複数の集積回路内に様々な完全精度構成要素(完全精度ALU236A〜236Nおよび完全精度レジスタバンク244A〜244Nなどの)を含むものの、これらの完全精度構成要素の1つまたは複数に関して、その1つまたは複数の構成要素が使用されていない場合に、選択的に電源を切る、またはディセーブルにすることによって、電力消費を節約する、または低減するとしてもよい。例えば、いくつかのシナリオにおいて、シェーダプロセッサ206は、これらの構成要素の1つまたは複数が使用されていないことを、ロードされた様々なバイナリ命令が半精度ALU240A〜240Nの1つまたは複数によって実行されることになることから、判定するとしてもよい。このため、これらのタイプのシナリオにおいて、シェーダプロセッサ206は、電力節約のために完全精度構成要素の1つまたは複数に関して、選択的に電源を切る、またはディセーブルにするとしてもよい。このようにして、シェーダプロセッサ206は、所与の時点で処理されている命令のタイプおよび数に応じて動的に、1つまたは複数の完全精度構成要素に関して、選択的に電源を切る、またはディセーブルにするとしてもよい。
一態様において、シェーダプロセッサ206は、スレッドスケジューラ224を使用して、半精度ALU240A〜240Nの1つまたは複数、および半精度レジスタバンク246A〜246Nの1つまたは複数に関して、選択的に電源を切る、またはディセーブルにすることもできるとしてもよい。この態様において、シェーダプロセッサ206は、これらの半精度構成要素の1つまたは複数に関して、その1つまたは複数の構成要素が使用されていない、または必要とされていない場合に、選択的に電源を切る、またはディセーブルにすることによって、電力消費を節約する、または低減するとしてもよい。
シェーダプロセッサ206は、様々な利益および利点を提供するとしてもよい。例えば、シェーダプロセッサ206は、完全精度命令や半精度命令などの混合精度命令の実行に関する様々な要件を満たす非常に柔軟性があり、適応性のあるインターフェースを提供するとしてもよい。シェーダプロセッサ206は、混合精度命令の実行中に不必要な精度昇格を回避することによって、電力消費を大幅に低減するとしてもよい。(精度昇格は、シェーダプロセッサ206が、半精度フォーマットなどの、より低い精度のフォーマットから、完全精度フォーマットなどの、より高い精度のフォーマットにデータを動的に変換する際に行われるとしてもよい。精度昇格は、シェーダプロセッサ206内部でさらなる回路を要求することが可能であり、さらにシェーダコアプロセスにさらなるクロックサイクルを費やさせるとしてもよい。)スレッドスケジューラ224は、命令キャッシュ230からロードされたバイナリ命令に関連付けられたデータ精度を認識することができるため、スレッドスケジューラ224は、命令を、実行のために、完全精度ALU236Aまたは半精度ALU240Aなどの実行ユニット234内の適切な実行ユニットにルーティングすることができる。
また、シェーダプロセッサ206は、より少ない数の完全精度構成要素を利用すること、およびより多くの半精度構成要素(例えば、ALUおよびレジスタバンク)を代わりに利用することによって、レジスタバンク242における全体的なレジスタファイルサイズ、および実行ユニット234におけるALUサイズを低減することができる。さらに、シェーダプロセッサ206は、処理容量を増加させることによって全体的なシステムパフォーマンスを向上させることができる。
より低い電力消費、およびより高いパフォーマンスと関係する様々な潜在的利益に鑑みて、シェーダプロセッサ206は、無線通信デバイス、ディジタルカメラデバイス、ビデオ記録デバイスもしくはビデオ表示デバイス、ビデオゲームデバイス、または他のグラフィックスデバイスおよびマルチメディアデバイスなどの、様々な異なるタイプのシステムまたはデバイスにおいて使用されることができる。そのようなデバイスは、シェーダプロセッサ206を使用して生成されたグラフィックスコンテンツを提示するディスプレイを含むとしてもよい。一態様において、シェーダプロセッサ206によって提供される精度柔軟性は、プロセッサ206が、他のいくつかのグラフィックスアプリケーションと比べて、より低い精度の計算を提供すること、またはより低い電力要件を有することができる、マルチメディアデバイスを含む様々なデバイスで使用されることを許す。
図3は、本開示の一態様による、図2A〜図2Bに示されるシェーダプロセッサ206によって実行されることが可能である例示的な方法を示す流れ図である。この態様において、例示的な方法は、動作300、302、303、306、308、310、および312を含み、判定ポイント304も含む。
動作300で、シェーダプロセッサ206が、バイナリグラフィックス命令、ならびにこの命令の実行に関するデータ精度の指示を受け取る。例えば、前述したとおり、スレッドスケジューラ224が、この命令を命令キャッシュ230(図2B)からロードするとしてもよい。一態様において、スレッドスケジューラ224による、この命令を復号することが、この命令の実行に関するデータ精度についての情報をもたらす。例えば、この命令は、完全精度命令または半精度命令であるとしてもよい。
動作302で、シェーダプロセッサ206が、このバイナリ命令に関連付けられたグラフィックスデータを受け取る。例えば、シーケンサ222が、グラフィックス頂点アプリケーション202Bから頂点データを受け取り、さらに/またはグラフィックスピクセルアプリケーションn202Aからピクセルデータを受け取るとしてもよい。いくつかのシナリオにおいて、ロード制御ユニット226が、この命令に関連付けられたグラフィックスデータをキャッシュメモリシステム210からロードするとしてもよい。動作303で、シェーダプロセッサ206は、実行された場合、このバイナリ命令に関連付けられたグラフィックスデータを、示されたデータ精度に変換する変換命令をさらに受け取る。
判定ポイント304で、シェーダプロセッサ206が、この命令が完全精度命令であるか、半精度命令であるかを判定する。前述したとおり、一態様において、スレッドスケジューラ224が、この命令を復号して、この命令が完全精度命令であるか、半精度命令であるかを判定するとしてもよい。
命令が完全精度命令である場合、シェーダプロセッサ206は、動作306で、必要とされる場合、受け取られた任意のグラフィックスデータを半精度フォーマットから完全精度フォーマットに変換する。いくつかの事例において、キャッシュメモリシステム210の中に格納されていた、またはグラフィックスアプリケーション202Aまたは202Bから処理された、受け取られたグラフィックスデータは、半精度フォーマットを有するとしてもよい。この事例において、グラフィックスデータは、完全精度命令の実行中に使用され得るように完全精度フォーマットに変換される。一態様において、ロード制御ユニット226の精度コンバータ228が、受け取られた変換命令がシェーダプロセッサ206によって実行される際、データフォーマット変換を管理するとしてもよい。動作308で、シェーダプロセッサ206が、そのグラフィックスデータを使用してバイナリ命令を実行する、ユニット236A(図2C)などの完全精度ユニットを選択する。
しかし、命令が半精度命令である場合、シェーダプロセッサは、動作310で、必要とされる場合、任意のデータを完全精度フォーマットから半精度フォーマットに変換する。一態様において、精度コンバータ228が、受け取られた変換命令がシェーダプロセッサ206によって実行される際、データフォーマット変換を管理するとしてもよい。次に、動作312で、シェーダプロセッサ206が、そのグラフィックスデータを使用してバイナリ命令を実行する、ユニット240A(図2C)などの半精度ユニットを選択する。
図4は、一態様による、図1に示されるストリーミングプロセッサ106、または図2A〜図2Bに示されるシェーダプロセッサ206によって実行されるべき命令を生成するのに使用されることができるコンパイラ402を示すブロック図である。一態様において、コンパイラ402は、シェーダプロセッサ206によって実行されるべき命令を生成するのに使用される。この態様において、アプリケーション開発者は、コンパイラ402を使用して、シェーダプロセッサ206によって実行されるようにバイナリ命令(コード)を生成するとしてもよい。シェーダプロセッサ206は、グラフィックスデバイス200(図2A)の一部である。アプリケーション開発者は、グラフィックスデバイス200で使用するためのアプリケーション開発プラットフォームにアクセスを有することができ、さらにグラフィックスピクセルアプリケーション202Aおよび/またはグラフィックス頂点アプリケーション202Bのためにアプリケーションレベルソフトウェアを作成することができる。そのようなアプリケーションレベルソフトウェアは、図4に示されるグラフィックスアプリケーション命令400を含む。グラフィックスアプリケーション命令400は、DirectX(登録商標)、OpenGL(登録商標)、OpenVG(商標)、または他の言語に準拠する、もしくはそのような言語に翻訳可能な高レベルシェーディング言語で書かれた命令を含むとしてもよい。一態様において、これらのシェーディング言語は、グラフィックス操作を実行するプログラミングコードを開発するために使用されることが可能な1つまたは複数の標準のAPIを定義する。
コンパイラ402は、ソースコード命令を受け取って、処理し、そのような命令をコンパイルして、コンパイルされた命令(例えば、バイナリの、実行可能な機械命令の形態の)を生成するようにプロセッサによって実行されるコンパイラソフトウェアによって、少なくとも部分的に、サポートされるとしてもよい。したがって、コンパイラ402は、コンパイラソフトウェアに関連するコンピュータ可読命令を実行する1つまたは複数のプロセッサによって形成されるとしてもよい。一態様において、これらの1つまたは複数のプロセッサは、アプリケーション開発者によって使用されるアプリケーション開発プラットフォームの一部、または内に実装されるとしてもよい。コンパイルされた命令は、ストリーミングプロセッサ106またはシェーダプロセッサ206などの1つまたは複数のプロセッサによって取り出され、実行されるように、コンピュータ可読データ記憶媒体上に格納されるとしてもよい。例えば、本開示は、1つまたは複数の第1の実行可能命令、1つまたは複数の第2の実行可能命令、および1つまたは複数の第3の実行可能命令を含むコンピュータ可読データ記憶媒体を企図している。
第1の実行可能命令は、プロセッサによって実行されると、グラフィックスアプリケーションの1つまたは複数の機能をサポートするとしてもよい。さらに、第1の実行可能命令のそれぞれは、その命令の実行に関する第1のデータ精度レベルを示すとしてもよい。第2の実行可能命令は、プロセッサによって実行されると、グラフィックスアプリケーションの1つまたは複数の機能をサポートするとしてもよい。さらに、第2の実行可能命令のそれぞれは、その命令の実行に関する、第1のデータ精度レベルとは異なる第2のデータ精度レベルを示すとしてもよい。第3の実行可能命令もまた、プロセッサによって実行されると、グラフィックスアプリケーションの1つまたは複数の機能をサポートするとしてもよく、第3の実行可能命令のそれぞれは、1つまたは複数の第1の実行可能命令が実行される際、グラフィックスデータを、第2のデータ精度レベルから第1のデータ精度レベルに変換する。
コンパイラ402は、グラフィックスアプリケーション命令400をバイナリグラフィックス命令404にコンパイルすることができるとしてもよく、命令404は、その後、シェーダプロセッサ206によって実行されることが可能である。シェーダプロセッサ206は、メモリまたはデータ記憶デバイスなどのデータ記憶媒体からそのような命令を取り出し、これらの命令を実行して、グラフィックスアプリケーションをサポートする計算、およびその他の操作を実行するとしてもよい。グラフィックスアプリケーション命令400のいくつかは、実行に関して或る特定のデータ精度レベルを指定するとしてもよい。例えば、いくつかの命令は、それらの命令が完全精度の操作もしくは計算を使用すること、または半精度の操作もしくは計算を使用することを指定するとしてもよい。コンパイラ402は、コンパイルプロセス中にグラフィックスアプリケーション命令400を分析し、解析する規則406を適用し、命令404の実行に関するデータ精度レベルを示す、対応するバイナリ命令グラフィックス404を生成するために構成されるとしてもよい。
このため、グラフィックスアプリケーション命令400の1つが、完全精度の操作もしくは計算を指定する場合、コンパイラ402の規則406は、完全精度命令であるバイナリ命令404の1つまたは複数を生成するとしてもよい。グラフィックスアプリケーション命令400の別の1つが、半精度の操作もしくは計算を指定する場合、規則406は、半精度命令であるバイナリ命令404の1つまたは複数を生成する。一態様において、バイナリ命令404はそれぞれ、その命令が完全精度命令であるか、半精度命令であるかを示す「オペコード」を含むとしてもよい。一態様において、バイナリ命令404はそれぞれ、シェーダプロセッサ206によって復号されることができる命令の別の事前定義されたフィールド、フラグ、またはヘッダの中に含まれる情報を使用して、その命令の実行に関するデータ精度を示すとしてもよい。一態様において、データ精度は、実行されるべき命令のタイプに基づいて推測されるとしてもよい。
また、コンパイラ402は、異なるデータ精度レベルの間で変換を行うバイナリ変換命令410を生成することができる規則408も含む。コンパイル中、コンパイラ402のこれらの規則408は、そのような変換が、バイナリ命令404の実行中に必要である可能性があると判定するとしてもよい。例えば、規則408は、データを完全精度フォーマットから半精度フォーマットに変換する1つまたは複数の命令を、変換命令410内で生成することが可能である。この変換は、シェーダプロセッサ206が、グラフィックス命令404内で半精度命令を実行する際に要求されるとしてもよい。また、規則408は、データを半精度フォーマットから完全精度フォーマットに変換する1つまたは複数の命令を、変換命令410内で生成するとしてもよく、そのような変換は、シェーダプロセッサ206が、グラフィックス命令404内で完全精度命令を実行する際に要求されるとしてもよい。
コンパイラ402の規則408が変換命令410を生成すると、一態様によれば、シェーダプロセッサ206は、これらの変換命令410を実行して、対応するグラフィックス命令404の実行中にデータ精度変換を管理するとしてもよい。この態様において、変換命令410の実行は、そのような精度変換を管理して、シェーダプロセッサ206が、データを1つの精度レベルから別の精度レベルに変換するのに、いくつかのハードウェア変換機構を必ずしも使用しなくてもよいようにする。また、変換命令410は、完全精度ALU236や半精度ALU240など、異なる精度レベルを使用するALUへの、より効率的なデータ転送速度を許すとしてもよい。
本明細書で説明される構成要素および技術は、ハードウェアで、ソフトウェアで、ファームウェアで、または以上の任意の組合せで実施されるとしてもよい。モジュールまたは構成要素として説明されるいずれの特徴も、統合された論理デバイス内で一緒に実装されても、別個の、ただし、相互運用可能な複数の論理デバイスとして別々に実装されてもよい。様々な態様において、そのような構成要素は、少なくとも部分的には、集積回路チップまたは集積回路チップセットなどの、集積回路デバイスとひとまとめに呼ばれるとしてもよい1つまたは複数の集積回路デバイスとして形成されるとしてもよい。そのような集積回路デバイスは、任意の様々なグラフィックスアプリケーションおよびグラフィックスデバイスにおいて使用されるとしてもよい。いくつかの態様において、例えば、そのような構成要素は、無線通信デバイスハンドセットなどの移動デバイスの一部を形成するとしてもよい。
ソフトウェアで実施される場合、これらの技術は、1つまたは複数のプロセッサによって実行されると、前述した方法の1つまたは複数を実行する命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現されるとしてもよい。コンピュータ可読媒体は、実装材料を含むとしてもよいコンピュータプログラム製品の一部を形成するとしてもよい。コンピュータ可読媒体は、SDRAM(シンクロナスダイナミックランダムアクセスメモリ)などのRAM(ランダムアクセスメモリ)、ROM(読取り専用メモリ)、NVRAM(不揮発性ランダムアクセスメモリ)、EEPROM(電気的に消去可能なプログラマブル読取り専用メモリ)、FLASHメモリ、磁気データ記憶媒体もしくは光データ記憶媒体を備えるとしてもよい。
これらの技術は、さらに、または代替として、命令またはデータ構造の形態で符号を伝送し、もしくは通信し、1つまたは複数のプロセッサによってアクセスされ、読み取られ、さらに/または実行されることが可能なコンピュータ可読通信媒体によって少なくとも部分的に実現されるとしてもよい。任意の接続が、コンピュータ可読媒体と適宜呼ばれるとしてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、DSL(ディジタル加入者線)、あるいは赤外線、無線、およびマイクロ波などの無線技術を使用してウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、DSL、あるいは赤外線、無線、およびマイクロ波などの無線技術が、媒体の定義に含められる。また、以上の媒体の組合せも、コンピュータ可読媒体の範囲内に含められなければならない。
利用される任意のソフトウェアが、1つまたは複数のDSP(ディジタル信号プロセッサ)、汎用マイクロプロセッサ、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、または他の均等の統合された論理回路もしくはディスクリートの論理回路などの、1つまたは複数のプロセッサによって実行されるとしてもよい。したがって、本明細書で使用される「プロセッサ」または「コントローラ」という用語は、前述の構造、あるいは本明細書で説明される技術の実施に適した他の任意の構造のいずれを指すとしてもよい。このため、本開示はまた、本開示で説明される技術の1つまたは複数を実施する回路を含む様々な集積回路デバイスのいずれも企図している。そのような回路は、単一の集積回路チップデバイスで提供されることも、複数の相互運用可能な集積回路チップデバイスで提供されるとしてもよい。
本開示の様々な態様が、説明されてきた。これらの態様、およびその他の態様は、添付の特許請求の範囲に含まれる。

Claims (71)

  1. プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取ること、
    前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
    前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
    前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの1つを選択すること、
    前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
    を備える方法。
  2. 前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
    前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
    前記計算結果を出力として提供すること、
    をさらに備える請求項1の方法。
  3. 前記複数の実行ユニットの1つを選択することは、
    前記示されたデータ精度が第1のデータ精度である場合、前記グラフィックスデータを使用して前記第1のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1または複数の実行ユニットの第1のセットの1つを選択すること、
    前記示されたデータ精度が、前記第1のデータ精度とは異なる第2のデータ精度である場合、前記グラフィックスデータを使用して前記第2のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第2のセットの1つを選択すること、
    を備える請求項1の方法。
  4. 前記第1のデータ精度は、完全データ精度を備え、前記第2のデータ精度は、半データ精度を備える、請求項3の方法。
  5. 前記実行ユニットは、前記グラフィックスデータを使用して第1のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第1のセットを含み、前記グラフィックスデータを使用して、前記第1のデータ精度とは異なる第2のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第2のセットをさらに含む、請求項1の方法。
  6. 前記示されるデータ精度に基づいて、前記プロセッサ内の前記複数の実行ユニットの1つを選択することは、前記第1のセットの中の前記実行ユニットの1つを選択することを備え、
    前記選択された実行ユニットを使用して前記グラフィックス命令を実行することは、前記第1のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを備える、
    請求項5の方法。
  7. 前記プロセッサ内での実行のための第2のグラフィックス命令を受け取ること、
    前記第2のグラフィックス命令の実行に対する前記第2のデータ精度の指示を受け取ること、
    前記プロセッサによって実行されると、前記第2のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第2のデータ精度に変換する、前記第2のグラフィックス命令とは異なる第2の変換命令を受け取ること、
    前記示された第2のデータ精度に基づいて、前記第2のセットの中の前記実行ユニットの1つを選択すること、
    前記第2のセットの中の前記選択された実行ユニットを使用して、前記第2のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第2のデータ精度で前記第2のグラフィックス命令を実行すること、
    をさらに備える請求項6の方法。
  8. 前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることは、前記グラフィックス命令を復号して、前記データ精度を判定することを備える、請求項1の方法。
  9. 前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することは、
    前記グラフィックスデータを前記示されたデータ精度に変換すること、および
    前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
    を備える請求項1の方法。
  10. 前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも1つを備える、請求項1の方法。
  11. プログラマブルストリーミングプロセッサに、
    前記プロセッサ内での実行のためのグラフィックス命令を受け取ること、
    前記グラフィックス命令の実行に対するデータ精度の指示を受け取ること、
    前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取ること、
    前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの1つを選択すること、
    前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
    を行わせるための命令を備えるコンピュータ可読媒体。
  12. 前記プロセッサに、
    前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取ること、
    前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成すること、
    前記計算結果を出力として提供すること、
    を行わせるための命令をさらに備える、請求項11のコンピュータ可読媒体。
  13. 前記プロセッサに、前記複数の実行ユニットの1つを選択することを行わせるための前記命令は、
    前記プロセッサに、
    前記示されたデータ精度が第1のデータ精度である場合、前記グラフィックスデータを使用して前記第1のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1または複数の実行ユニットの第1のセットの1つを選択すること、
    前記示されたデータ精度が、前記第1のデータ精度とは異なる第2のデータ精度である場合、前記グラフィックスデータを使用して前記第2のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第2のセットの1つを選択すること、
    を行わせるための命令を備える、請求項11のコンピュータ可読媒体。
  14. 前記第1のデータ精度は、完全データ精度を備え、前記第2のデータ精度は、半データ精度を備える、請求項13のコンピュータ可読媒体。
  15. 前記実行ユニットは、前記グラフィックスデータを使用して第1のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第1のセットを含み、前記グラフィックスデータを使用して、前記第1のデータ精度とは異なる第2のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第2のセットをさらに含む、請求項11のコンピュータ可読媒体。
  16. 前記プロセッサに、前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの1つを選択することを行わせるための前記命令は、前記プロセッサに、前記第1のセットの中の前記実行ユニットの1つを選択することを行わせるための命令を備え、
    前期プロセッサに、前記選択された実行ユニットを使用して前記グラフィックス命令を実行することを行わせるための前記命令は、前記プロセッサに、前記第1のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための命令を備える、
    請求項15のコンピュータ可読媒体。
  17. 前記プロセッサに、
    前記プロセッサ内での実行のための第2のグラフィックス命令を受け取ること、
    前記第2のグラフィックス命令の実行に対する前記第2のデータ精度の指示を受け取ること、
    前記プロセッサによって実行されると、前記第2のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第2のデータ精度に変換する、前記第2のグラフィックス命令とは異なる第2の変換命令を受け取ること、
    前記示された第2のデータ精度に基づいて、前記第2のセットの中の前記実行ユニットの1つを選択すること、
    前記第2のセットの中の前記選択された実行ユニットを使用して、前記第2のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第2のデータ精度で前記第2のグラフィックス命令を実行すること、
    を行わせるための命令をさらに備える、請求項16のコンピュータ可読媒体。
  18. 前記プロセッサに、前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取ることを行わせるための前記命令は、前記プロセッサに、前記グラフィックス命令を復号して、前記データ精度を判定することを行わせるための命令を備える、請求項11のコンピュータ可読媒体。
  19. 前記プロセッサに、前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行することを行わせるための前記命令は、
    前記プロセッサに、
    前記グラフィックスデータを前記示されたデータ精度に変換すること、
    前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行すること、
    を行わせるための命令を備える、請求項11のコンピュータ可読媒体。
  20. 前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも1つを備える、請求項11のコンピュータ可読媒体。
  21. プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成されるコントローラと、
    前記プロセッサ内の複数の実行ユニットと、
    を具備し、
    前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの1つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、デバイス。
  22. 前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第1の実行ユニットと、前記示されたデータ精度とは異なる第2のデータ精度で命令を実行するために構成された第2の実行ユニットとを含み、前記コントローラは、前記第1の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、請求項21のデバイス。
  23. 前記複数の実行ユニットは、1または複数の完全精度実行ユニットと少なくとも4つの半精度実行ユニットとを含む、請求項21のデバイス。
  24. 前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの1つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項23のデバイス。
  25. 前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの1つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項23のデバイス。
  26. 前記少なくとも1つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも1つの完全精度レジスタバンクと、
    前記少なくとも4つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも4つの半精度レジスタバンクと、
    をさらに具備する、請求項23のデバイス。
  27. 前記複数の実行ユニットは、少なくとも1つの完全精度実行ユニットと少なくとも1つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも1つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも1つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、請求項21のデバイス。
  28. 前記プロセッサは、シェーダプロセッサを具備する、請求項21のデバイス。
  29. 前記デバイスは、無線通信デバイスハンドセットを具備する、請求項21のデバイス。
  30. 前記デバイスは、1または複数の集積回路デバイスを具備する、請求項21のデバイス。
  31. プログラマブルストリーミングプロセッサ内での実行のためのグラフィックス命令を受け取るための手段と、
    前記グラフィックス命令の実行に対するデータ精度の指示を受け取るための手段と、
    前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るための手段と、
    前記示されたデータ精度に基づいて、前記プロセッサ内の複数の実行ユニットの1つを選択するための手段と、
    前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
    を備えるデバイス。
  32. 前記グラフィックス命令に関連付けられた前記グラフィックスデータを受け取るための手段と、
    前記選択された実行ユニットによる前記グラフィックス命令の実行中に、前記示されたデータ精度で計算結果を生成するための手段と、
    前記計算結果を出力として提供するための手段と、
    をさらに備える、請求項31のデバイス。
  33. 前記複数の実行ユニットの1つを選択するための手段は、
    前記示されたデータ精度が第1のデータ精度である場合、前記グラフィックスデータを使用して前記第1のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1または複数の実行ユニットの第1のセットの1つを選択するための手段と、
    前記示されたデータ精度が、前記第1のデータ精度とは異なる第2のデータ精度である場合、前記グラフィックスデータを使用して前記第2のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第2のセットの1つを選択するための手段と、
    を備える、請求項31のデバイス。
  34. 前記第1のデータ精度は、完全データ精度を備え、前記第2のデータ精度は、半データ精度を備える、請求項33のデバイス。
  35. 前記実行ユニットは、前記グラフィックスデータを使用して第1のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第1のセットを含み、前記グラフィックスデータを使用して、前記第1のデータ精度とは異なる第2のデータ精度で命令をそれぞれが実行する前記プロセッサ内の1つまたは複数の実行ユニットの第2のセットをさらに含む、請求項31のデバイス。
  36. 前記示されるデータ精度に基づいて前記プロセッサ内の前記複数の実行ユニットの1つを選択するための手段は、前記第1のセットの中の前記実行ユニットの1つを選択するための手段を備え、
    前記選択された実行ユニットを使用して前記グラフィックス命令を実行するための手段は、前記第1のセットの中の前記選択された実行ユニットを使用して、前記グラフィックス命令に関連付けられた前記グラフィックスデータを使用して、前記示されたデータ精度で前記グラフィックス命令を実行するための手段を備える、
    請求項35のデバイス。
  37. 前記プロセッサ内での実行のための第2のグラフィックス命令を受け取るための手段と、
    前記第2のグラフィックス命令の実行に対する前記第2のデータ精度の指示を受け取るための手段と、
    前記プロセッサによって実行されると、前記第2のグラフィックス命令に関連付けられたグラフィックスデータを、前記示された第2のデータ精度に変換する、前記第2のグラフィックス命令とは異なる第2の変換命令を受け取るための手段と、
    前記示された第2のデータ精度に基づいて、前記第2のセットの中の前記実行ユニットの1つを選択するための手段と、
    前記第2のセットの中の前記選択された実行ユニットを使用して、前記第2のグラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示された第2のデータ精度で前記第2のグラフィックス命令を実行するための手段、
    をさらに備える、請求項36のデバイス。
  38. 前記グラフィックス命令の実行に対する前記データ精度の前記指示を受け取るための手段は、前記グラフィックス命令を復号して、前記データ精度を判定するための手段を備える、請求項31のデバイス。
  39. 前記選択された実行ユニットを使用して、前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段は、
    前記グラフィックスデータを前記示されたデータ精度に変換するための手段と、
    前記選択された実行ユニットを使用して、前記変換されたグラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行するための手段と、
    を備える、請求項31のデバイス。
  40. 前記グラフィックス命令に関連付けられた前記グラフィックスデータは、頂点グラフィックスデータとピクセルグラフィックスデータとのうちの少なくとも1つを備える、請求項31のデバイス。
  41. プログラマブルストリーミングプロセッサと、
    前記プロセッサと連結されている少なくとも1つのメモリモジュールと
    を具備し、
    前記プロセッサは、
    前記少なくとも1つのメモリモジュールから実行のためのグラフィックス命令を受け取り、前記グラフィックス命令の実行に対するデータ精度の指示を受け取り、前記プロセッサによって実行されると、前記グラフィックス命令に関連付けられたグラフィックスデータを、前記示されたデータ精度に変換する、前記グラフィックス命令とは異なる変換命令を受け取るために構成されるコントローラと、
    命令を実行するために構成されている複数の実行ユニットと、
    を具備し、
    前記コントローラは、前記示されたデータ精度に基づいて、前記実行ユニットのうちの1つを選択するために構成されており、前記選択された実行ユニットに、前記グラフィックス命令に関連付けられた前記グラフィックスデータを用いて、前記示されたデータ精度で前記グラフィックス命令を実行させる、デバイス。
  42. 前記プロセッサに連結されている少なくとも1つのグラフィックスエンジンをさらに具備する、請求項41のデバイス。
  43. 前記複数の実行ユニットは、前記示されたデータ精度で命令を実行するために構成された第1の実行ユニットと、前記示されたデータ精度とは異なる第2のデータ精度で命令を実行するために構成された第2の実行ユニットとを含み、前記コントローラは、前記第1の実行ユニットを選択して、前記グラフィックスデータを用いて、前記指示されたデータ精度で前記グラフィックス命令を実行するために構成されている、請求項41のデバイス。
  44. 前記複数の実行ユニットは、1または複数の完全精度実行ユニットと少なくとも4つの半精度実行ユニットとを含む、請求項41のデバイス。
  45. 前記グラフィックス命令の実行のための前記示されるデータ精度が、完全精度を具備する場合に、前記コントローラは、前記完全精度実行ユニットのうちの1つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項44のデバイス。
  46. 前記グラフィックス命令の実行のための前記示されるデータ精度が、半精度を具備する場合に、前記コントローラは、前記半精度実行ユニットのうちの1つを選択して、前記グラフィックデータを用いて、前記グラフィックス命令を実行する、請求項44のデバイス。
  47. 前記プロセッサは、
    前記少なくとも1つの完全精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも1つの完全精度レジスタバンクと、
    前記少なくとも4つの半精度実行ユニットが命令を実行する場合に、計算結果を記憶するための少なくとも4つの半精度レジスタバンクと、
    をさらに具備する、請求項44のデバイス。
  48. 前記複数の実行ユニットは、少なくとも1つの完全精度実行ユニットと少なくとも1つの半精度実行ユニットとを含み、前記グラフィックス命令の実行に対する前記示されるデータ精度が半精度を具備する場合、前記コントローラは、前記少なくとも1つの完全精度実行ユニットに対する電源をシャットダウンするために構成されており、前記少なくとも1つの半精度実行ユニットに、前記グラフィックスデータを用いて、前記グラフィックス命令を実行させる、請求項41のデバイス。
  49. 前記プロセッサは、シェーダプロセッサを具備する、請求項41のデバイス。
  50. 前記デバイスは、無線通信デバイスハンドセットを具備する、請求項41のデバイス。
  51. 前記デバイスは、1または複数の集積回路デバイスを具備する、請求項41のデバイス。
  52. グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
    その実行のための第1のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第1のデータ精度レベルを指定する1または複数の対応するコンパイルされた命令を生成すること、
    前記1または複数のコンパイルされた命令が実行されると、第2の、異なるデータ精度レベルから前記第1のデータ精度レベルへグラフィックスデータを変換するための1または複数の変換命令を生成すること、
    を具備する方法。
  53. 前記第1のデータ精度レベルは、完全データ精度レベルを具備し、前記第2のデータ精度レベルは、半データ精度レベルを具備する、請求項52の方法。
  54. 前記1または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する1または複数のコンパイルされた命令を生成することを具備する、請求項52の方法。
  55. 前記1または複数のコンパイルされた命令を生成することは、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する1または複数のコンパイルされた命令を生成することを具備する、請求項52の方法。
  56. 前記1または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第1のデータ精度レベルを指定する場合に、それぞれが前記第1のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項52の方法。
  57. 後の実行のために前記1または複数のコンパイルされた命令をメモリに記憶することをさらに具備する、請求項52の方法。
  58. プロセッサに、
    グラフィックスアプリケーションに対する複数のアプリケーション命令を解析すること、
    その実行のための第1のデータ精度レベルを指定する各アプリケーション命令に対して、それぞれがその実行のための前記第1のデータ精度レベルを指定する1または複数の対応するコンパイルされた命令を生成すること、
    前記1または複数のコンパイルされた命令が実行されると、第2の、異なるデータ精度レベルから前記第1のデータ精度レベルへグラフィックスデータを変換するための1または複数の変換命令を生成すること、
    を行わせるための命令を具備するコンピュータ可読媒体。
  59. 前記第1のデータ精度レベルは、完全データ精度レベルを具備し、前記第2のデータ精度レベルは、半データ精度レベルを具備する、請求項58のコンピュータ可読媒体。
  60. 前記プロセッサに、前記1または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記1または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、請求項58のコンピュータ可読媒体。
  61. 前記プロセッサに、前記1または複数のコンパイルされた命令を生成することを行わせるための命令は、前記プロセッサに、対応するアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記1または複数のコンパイルされた命令を生成することを行わせるための命令を具備する、請求項58のコンピュータ可読媒体。
  62. 前記1または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第1のデータ精度レベルを指定する場合に、それぞれが前記第1のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項58のコンピュータ可読媒体。
  63. 前記プロセッサに、後の実行のために前記1または複数のコンパイルされた命令をメモリに記憶することを行わせるための命令をさらに具備する、請求項58のコンピュータ可読媒体。
  64. 複数のグラフィックスアプリケーション命令を解析するための手段と、
    その実行のための第1のデータ精度レベルを指定する各グラフィックスアプリケーション命令に対して、それぞれがその実行のための前記第1のデータ精度レベルを指定する1または複数の対応するコンパイルされた命令を生成するための手段と、
    前記1または複数のコンパイルされた命令が実行されると、第2の、異なるデータ精度レベルから前記第1のデータ精度レベルへグラフィックスデータを変換するための1または複数の変換命令を生成するための手段と、
    を具備する装置。
  65. 前記第1のデータ精度レベルは、完全データ精度レベルを具備し、前記第2のデータ精度レベルは、半データ精度レベルを具備する、請求項64の装置。
  66. 前記1または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための完全データ精度レベルを指定する場合に、それぞれが前記完全データ精度レベルを指定する前記1または複数のコンパイルされた命令を生成するための手段を具備する、請求項64の装置。
  67. 前記1または複数のコンパイルされた命令を生成するための手段は、対応するグラフィックスアプリケーション命令がその実行のための半データ精度レベルを指定する場合に、それぞれが前記半データ精度レベルを指定する前記1または複数のコンパイルされた命令を生成するための手段を具備する、請求項64の装置。
  68. 前記1または複数のコンパイルされた命令は、前記対応するアプリケーション命令がその実行のための前記第1のデータ精度レベルを指定する場合に、それぞれが前記第1のデータ精度レベルを示す情報を含む予め定義されているフィールドを含む、請求項64の装置。
  69. 後の実行のために前記1または複数のコンパイルされた命令をメモリに記憶するための手段をさらに具備する、請求項64の装置。
  70. プログラマブルストリーミングプロセッサによって実行されると、グラフィックスアプリケーションの1または複数の機能をサポートし、それぞれがその実行のための第1のデータ精度レベルを指定する、1または複数の第1の実行可能命令と、
    前記プロセッサによって実行されると、前記グラフィックスアプリケーションの1または複数の機能をサポートし、それぞれがその実行のための第1のデータ精度レベルから異なっている第2のデータ精度レベルを指定する、1または複数の第2の実行可能命令と、
    前記プロセッサによって実行されると、前記グラフィックスアプリケーションの1または複数の機能をサポートし、前記1または複数の第1の実行可能命令が実行されると、前記第2のデータ精度レベルから前記第1のデータ精度レベルへグラフィックスデータを変換する、1または複数の第3の実行可能命令と、
    を具備するコンピュータ可読データ記憶媒体。
  71. 前記第1のデータ精度レベルは、完全データ精度レベルを具備し、前記第2のデータ精度レベルは、半データ精度レベルを具備する、請求項70のコンピュータ可読データ記憶媒体。
JP2011506397A 2008-04-21 2009-04-21 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ Active JP5242771B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/106,654 2008-04-21
US12/106,654 US8633936B2 (en) 2008-04-21 2008-04-21 Programmable streaming processor with mixed precision instruction execution
PCT/US2009/041268 WO2009132013A1 (en) 2008-04-21 2009-04-21 Programmable streaming processor with mixed precision instruction execution

Publications (2)

Publication Number Publication Date
JP2011518398A true JP2011518398A (ja) 2011-06-23
JP5242771B2 JP5242771B2 (ja) 2013-07-24

Family

ID=41001956

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011506397A Active JP5242771B2 (ja) 2008-04-21 2009-04-21 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ

Country Status (8)

Country Link
US (1) US8633936B2 (ja)
EP (1) EP2281277A1 (ja)
JP (1) JP5242771B2 (ja)
KR (1) KR101321655B1 (ja)
CN (1) CN102016926B (ja)
CA (1) CA2721396A1 (ja)
TW (1) TW201001328A (ja)
WO (1) WO2009132013A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016100004A (ja) * 2014-11-24 2016-05-30 三星電子株式会社Samsung Electronics Co.,Ltd. 互いに異なる正確度を有する演算器を利用してデータを処理する方法及びその装置
JP2017162487A (ja) * 2014-02-10 2017-09-14 ヴィア アライアンス セミコンダクター カンパニー リミテッド 過度の近似計算誤差から回復するプロセッサ

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8487450B2 (en) 2007-05-01 2013-07-16 Micron Technology, Inc. Semiconductor constructions comprising vertically-stacked memory units that include diodes utilizing at least two different dielectric materials, and electronic systems
US8553040B2 (en) * 2009-06-30 2013-10-08 Apple Inc. Fingerprinting of fragment shaders and use of same to perform shader concatenation
US8771064B2 (en) 2010-05-26 2014-07-08 Aristocrat Technologies Australia Pty Limited Gaming system and a method of gaming
US9330430B2 (en) 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9195501B2 (en) 2011-07-12 2015-11-24 Qualcomm Incorporated Instruction culling in graphics processing unit
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US9465620B2 (en) 2012-12-20 2016-10-11 Intel Corporation Scalable compute fabric
US9760966B2 (en) * 2013-01-08 2017-09-12 Nvidia Corporation Parallel processor with integrated correlation and convolution engine
US9280845B2 (en) * 2013-12-27 2016-03-08 Qualcomm Incorporated Optimized multi-pass rendering on tiled base architectures
US9389863B2 (en) * 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US9471305B2 (en) * 2014-05-09 2016-10-18 Samsung Electronics Co., Ltd. Micro-coded transcendental instruction execution
WO2016090641A1 (zh) * 2014-12-12 2016-06-16 上海兆芯集成电路有限公司 绘图处理系统及其电源门控方法
US10489197B2 (en) 2015-06-01 2019-11-26 Samsung Electronics Co., Ltd. Highly efficient inexact computing storage device
KR102444240B1 (ko) 2015-07-29 2022-09-16 삼성전자주식회사 텍스쳐 처리 방법 및 장치
US9652235B1 (en) 2015-11-24 2017-05-16 International Business Machines Corporation Method of synchronizing independent functional unit
US20170315807A1 (en) * 2016-05-02 2017-11-02 Oracle International Corporation Hardware support for dynamic data types and operators
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN107977227A (zh) * 2016-10-21 2018-05-01 超威半导体公司 包括不同指令类型的独立硬件数据路径的管线
CN108268940B (zh) * 2017-01-04 2022-02-18 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10417734B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10417731B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN107291420B (zh) 2017-06-27 2020-06-05 上海兆芯集成电路有限公司 整合算术及逻辑处理的装置
CN107315710B (zh) 2017-06-27 2020-09-11 上海兆芯集成电路有限公司 全精度及部分精度数值的计算方法及装置
US11620130B2 (en) * 2018-02-13 2023-04-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11455766B2 (en) * 2018-09-18 2022-09-27 Advanced Micro Devices, Inc. Variable precision computing system
CN111488176B (zh) * 2019-01-25 2023-04-18 阿里巴巴集团控股有限公司 一种指令调度方法、装置、设备及存储介质
US20220179787A1 (en) 2019-03-15 2022-06-09 Intel Corporation Systems and methods for improving cache efficiency and utilization
US11823052B2 (en) * 2019-10-11 2023-11-21 Qualcomm Incorporated Configurable MAC for neural network applications
US11935175B2 (en) * 2022-04-07 2024-03-19 Huawei Technologies Co., Ltd. Apparatus, method, and computer-readable medium for image processing using variable-precision shading

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6297031A (ja) * 1985-10-23 1987-05-06 Nec Corp 仮数部のビツト数整合方式
JPH04135277A (ja) * 1990-09-27 1992-05-08 Fujitsu Ltd コンパイル処理方式
JPH05303498A (ja) * 1992-04-27 1993-11-16 Fujitsu Ltd 符号なし整数と実数の型変換方式
JP2005293386A (ja) * 2004-04-02 2005-10-20 Internatl Business Mach Corp <Ibm> コンパイラ、コンパイラプログラム、記録媒体、制御方法、及び中央処理装置
JP2007079844A (ja) * 2005-09-13 2007-03-29 Toshiba Corp コンパイル装置
JP2007514209A (ja) * 2003-09-18 2007-05-31 エヌヴィディア コーポレイション 手持ち式携帯デバイスのための高質・高性能3dグラフィックスアーキテクチャ
US20070186082A1 (en) * 2006-02-06 2007-08-09 Boris Prokopenko Stream Processor with Variable Single Instruction Multiple Data (SIMD) Factor and Common Special Function
JP2009140491A (ja) * 2007-12-07 2009-06-25 Nvidia Corp 融合型積和演算機能ユニット

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06297031A (ja) 1993-04-12 1994-10-25 Nippon Steel Corp 伸線方法
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US6044216A (en) * 1996-06-24 2000-03-28 Oracle Corporation Method and apparatus for implementing cursor variables for accessing data from database
US5953237A (en) * 1996-11-25 1999-09-14 Hewlett-Packard Company Power balancing to reduce step load
US5784588A (en) * 1997-06-20 1998-07-21 Sun Microsystems, Inc. Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions
GB0315844D0 (en) * 2003-07-04 2003-08-13 Transitive Ltd Method and apparatus for performing adjustable precision exception handling
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US9070213B2 (en) 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US8421794B2 (en) * 2007-03-23 2013-04-16 Qualcomm Incorporated Processor with adaptive multi-shader

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6297031A (ja) * 1985-10-23 1987-05-06 Nec Corp 仮数部のビツト数整合方式
JPH04135277A (ja) * 1990-09-27 1992-05-08 Fujitsu Ltd コンパイル処理方式
JPH05303498A (ja) * 1992-04-27 1993-11-16 Fujitsu Ltd 符号なし整数と実数の型変換方式
JP2007514209A (ja) * 2003-09-18 2007-05-31 エヌヴィディア コーポレイション 手持ち式携帯デバイスのための高質・高性能3dグラフィックスアーキテクチャ
JP2005293386A (ja) * 2004-04-02 2005-10-20 Internatl Business Mach Corp <Ibm> コンパイラ、コンパイラプログラム、記録媒体、制御方法、及び中央処理装置
JP2007079844A (ja) * 2005-09-13 2007-03-29 Toshiba Corp コンパイル装置
US20070186082A1 (en) * 2006-02-06 2007-08-09 Boris Prokopenko Stream Processor with Variable Single Instruction Multiple Data (SIMD) Factor and Common Special Function
JP2009140491A (ja) * 2007-12-07 2009-06-25 Nvidia Corp 融合型積和演算機能ユニット

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017162487A (ja) * 2014-02-10 2017-09-14 ヴィア アライアンス セミコンダクター カンパニー リミテッド 過度の近似計算誤差から回復するプロセッサ
JP2016100004A (ja) * 2014-11-24 2016-05-30 三星電子株式会社Samsung Electronics Co.,Ltd. 互いに異なる正確度を有する演算器を利用してデータを処理する方法及びその装置

Also Published As

Publication number Publication date
TW201001328A (en) 2010-01-01
WO2009132013A1 (en) 2009-10-29
CN102016926A (zh) 2011-04-13
CA2721396A1 (en) 2009-10-29
JP5242771B2 (ja) 2013-07-24
US8633936B2 (en) 2014-01-21
KR20110002098A (ko) 2011-01-06
KR101321655B1 (ko) 2013-10-30
US20090265528A1 (en) 2009-10-22
EP2281277A1 (en) 2011-02-09
CN102016926B (zh) 2014-01-08

Similar Documents

Publication Publication Date Title
JP5242771B2 (ja) 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
CN109564700B (zh) 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
US10636112B2 (en) Graphics processor register data re-use mechanism
US10191724B2 (en) Compiler-based instruction scoreboarding
US10552934B2 (en) Reducing memory latency in graphics operations
US20170372448A1 (en) Reducing Memory Access Latencies During Ray Traversal
US9477477B2 (en) System, method, and computer program product for executing casting-arithmetic instructions
US20150205589A1 (en) System, method, and computer program product for improved power efficiency during program code execution
US10409571B1 (en) Apparatus and method for efficiently accessing memory when performing a horizontal data reduction
US10699362B2 (en) Divergent control flow for fused EUs
JP2006318404A (ja) 図形描画装置
US10037625B2 (en) Load-balanced tessellation distribution for parallel architectures
WO2017074377A1 (en) Boosting local memory performance in processor graphics
US20180121202A1 (en) Simd channel utilization under divergent control flow
US20180122037A1 (en) Offloading fused kernel execution to a graphics processor
TW201724010A (zh) 對於具有較寬單指令多資料(simd)執行寬度之3d管線增加執行緒酬載的技術
US20170032486A1 (en) Packet Processing on Graphics Processing Units Using Continuous Threads
CN108292426B (zh) 基于部分跨度的光栅化
US10127707B2 (en) Discard mechanism for tile-based rendering
US10121277B2 (en) Progressively refined volume ray tracing
US20190228511A1 (en) Tone-mapping high dynamic range images
US9953395B2 (en) On-die tessellation distribution
US20180032431A1 (en) Banking Graphics Processor Shared Local Memory
US10410399B2 (en) Determining n-dimensional Euclidian distance in graphics for improved texture sampling and level of detail
CN117350911A (zh) 一种着色器输入数据的处理方法和图形处理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130403

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5242771

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250