(57)【要約】【課題】  互いに異なる正確度を有する演算器を利用してデータを処理する方法及びその装置を提供すること。【解決手段】  入力データのうちから第１データを決定する段階と、入力データのうち第１データが除かれた第２データと第１データとを区分してコンパイルする段階と、コンパイルされた第１データ、及びコンパイルされた第２データを、それぞれ第１演算器及び第２演算器に提供する段階と、を含み、第１演算器は、第２演算器に比べて相対的に正確な演算を行う演算器を含む、データを処理する方法である。【選択図】      図１
2016100004.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する方法において、
入力データのうちから第１データを決定する段階と、
前記入力データのうち前記第１データが除かれた第２データと、前記第１データとを区分してコンパイルする段階と、
前記コンパイルされた第１データ、及び前記コンパイルされた第２データを、それぞれ第１演算器及び第２演算器に提供する段階と、を含み、
前記第１演算器は、前記第２演算器に比べて相対的に正確な演算を行う演算器である、
方法。
【請求項２】
前記コンパイルする段階は、
コンパイル部に含まれた第１ＩＳＡ（instruction  set  architecture）を利用して前記第１データをコンパイルし、前記コンパイル部に含まれた第２ＩＳＡを利用して前記第２データをコンパイルする、
請求項１に記載の方法。
【請求項３】
前記第１ＩＳＡは、前記第１演算器を使用するＩＳＡを含み、前記第２ＩＳＡは、前記第２演算器を使用するＩＳＡを含む、
請求項２に記載の方法。
【請求項４】
前記入力データは、客体のレンダリングに必要なシェーダコードを含む、
請求項１乃至３いずれか一項に記載の方法。
【請求項５】
前記決定する段階は、前記入力データに含まれたキーワードに基づいて、前記第１データを決定する、
請求項１乃至４いずれか一項に記載の方法。
【請求項６】
前記第１データは、正確な演算が要求されるデータである、
請求項１乃至５いずれか一項に記載の方法。
【請求項７】
前記第１データは、レンダリングされる客体の位置を示すデータを含む、
請求項１乃至６いずれか一項に記載の方法。
【請求項８】
前記第２データは、客体のカラーを示すデータを含む、
請求項１乃至７いずれか一項に記載の方法。
【請求項９】
前記第２演算器は、所定の関数が近似化された多項式を利用して演算を行う、
請求項１乃至８いずれか一項に記載の方法。
【請求項１０】
前記第１演算器及び前記第２演算器は、浮動小数点方式で表現された数を演算する演算器を含む、
請求項１乃至９いずれか一項に記載の方法。
【請求項１１】
請求項１乃至１０いずれか一項に記載の方法をコンピュータで実行させるためのプログラムを記録した、コンピュータで読み取り可能な記録媒体。
【請求項１２】
データを処理する装置において、
入力データのうちから第１データを決定する決定部と、
前記入力データのうち前記第１データが除かれた第２データと、前記第１データとを区分してコンパイルするコンパイル部と、
前記コンパイルされた第１データを演算する第１演算器、及び前記コンパイルが行われた第２データを演算する第２演算器を含む演算部と、を含み、
前記第１演算器は、前記第２演算器に比べて相対的に正確な演算を行う演算器である、
装置。
【請求項１３】
前記コンパイル部は、第１ＩＳＡ（instruction  set  architecture）を利用して前記第１データをコンパイルし、第２ＩＳＡを利用して前記第２データをコンパイルする、
請求項１２に記載の装置。
【請求項１４】
前記第１ＩＳＡは、前記第１演算器を使用するＩＳＡを含み、前記第２ＩＳＡは、前記第２演算器を使用するＩＳＡを含む、
請求項１３に記載の装置。
【請求項１５】
前記入力データは、客体のレンダリングに必要なシェーダコードを含む、
請求項１２乃至１４いずれか一項に記載の装置。
【請求項１６】
前記決定部は、前記入力データに含まれたキーワードに基づいて、前記第１データを決定する、
請求項１２乃至１５いずれか一項に記載の装置。
【請求項１７】
前記第１データは、正確な演算が要求されるデータである、
請求項１２乃至１６いずれか一項に記載の装置。
【請求項１８】
前記第１データは、レンダリングされる客体の位置を示すデータを含む、
請求項１２乃至１７いずれか一項に記載の装置。
【請求項１９】
前記第２データは、客体のカラーを示すデータを含む、
請求項１２乃至１８いずれか一項に記載の装置。
【請求項２０】
前記第２演算器は、所定の関数が近似化された多項式を利用して演算を行う、
請求項１２乃至１９いずれか一項に記載の装置。
【請求項２１】
前記第１演算器及び前記第２演算器は、浮動小数点方式で表現された数を演算する演算器を含む、
請求項１２乃至２０いずれか一項に記載の装置。
【請求項２２】
複数の演算器を含むプロセッサにデータを提供するコンパイル装置において、
前記コンパイル装置は、
入力データのうち第１データを決定し、
前記入力データのうち前記第１データが除かれた第２データと、前記第１データとを区分してコンパイルし、
前記コンパイルが行われた第１データ、及び前記コンパイルが行われた第２データを前記プロセッサに提供し、
前記プロセッサに含まれた第１演算器は、前記プロセッサに含まれた第２演算器に比べて相対的に正確な演算を行う演算器である、
コンパイル装置。
【請求項２３】
コンパイル装置から提供された第１データを利用して演算を行う第１演算器と、
前記コンパイル装置から提供された第２データを利用して演算を行う第２演算器と、を含み、
前記第１演算器と前記第２演算器は、互いに異なる正確度を有する、
演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに異なる正確度を有する演算器を利用してデータを処理する方法及びその装置に関する。
【背景技術】
【０００２】
浮動小数点方式で表現されたデータを演算する中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）は、データに対応する数を数理関数に代入して演算を行うことができる。
【０００３】
このとき、中央処理装置またはグラフィック処理装置は、入力可能な全てのデータの演算に必要な情報を含むルックアップテーブルを利用して、演算を行うことができる。しかし、正確な演算結果が導き出されるためには、ルックアップテーブルに保存された情報の数が多くなければならないために、膨大な保存空間が要求されるという問題がある。
【０００４】
また、中央処理装置またはグラフィック処理装置が数理関数を多項式の形態で近似化して演算を行うこともできる。しかし、正確な演算結果が導き出されるためには、高次の多項式に対する演算が要求されるから、演算時に論理ゲートのスイッチングが過度に生じるという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、互いに異なる正確度を有する演算器を利用してデータを処理する方法及びその装置を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。解決しようとする技術的課題は、前述のような技術的課題に限定されるものではなく、他の技術的課題が存在する。
【課題を解決するための手段】
【０００６】
前記課題を解決するために、本発明の一側面によるデータを処理する方法は、入力データのうちから第１データを決定する段階と、前記入力データのうち前記第１データが除かれた第２データと、前記第１データとを区分してコンパイルする段階と、前記コンパイルされた第１データ、及び前記コンパイルされた第２データを、それぞれ第１演算器及び第２演算器に提供する段階と、を含み、前記第１演算器は、前記第２演算器に比べて相対的に正確な演算を行う演算器を含む。
【０００７】
前記課題を解決するために、本発明の他の側面による、コンピュータで読み取り可能な記録媒体は、前述の方法をコンピュータで実行させるための方法を記録した記録媒体を含む。
【０００８】
前記課題を解決するために、本発明のさらに他の側面による、データを処理する装置は、入力データのうちから第１データを決定する決定部；前記入力データのうち前記第１データが除かれた第２データと、前記第１データとを区分してコンパイルするコンパイル部；並びに前記コンパイルされた第１データを演算する第１演算器、及び前記コンパイルが行われた第２データを演算する第２演算器を含む演算部；を含み、前記第１演算器は、前記第２演算器に比べて相対的に正確な演算を行う演算器を含む。
【０００９】
前記課題を解決するために、本発明のさらに他の側面による、複数の演算器を含むプロセッサにデータを提供するコンパイル装置は、入力データのうち第１データを決定し、前記入力データのうち前記第１データが除かれた第２データと、前記第１データとを区分してコンパイルし、前記コンパイルが行われた第１データ、及び前記コンパイルが行われた第２データを前記プロセッサに提供し、前記プロセッサに含まれた第１演算器は、前記プロセッサに含まれた第２演算器に比べて相対的に正確な演算を行う演算器を含む。
【００１０】
前記課題を解決するために、本発明のさらに他の側面による演算装置は、コンパイル装置から提供された第１データを利用して演算を行う第１演算器と、前記コンパイル装置から提供された第２データを利用して演算を行う第２演算器と、を含み、前記第１演算器と前記第２演算器は、互いに異なる正確度を有する。
【発明の効果】
【００１１】
本発明によれば、入力データの処理に要求される正確度のレベルによって、正確な演算を行う演算器、または近似演算を行う演算器が区分されて使用されることにより、データ処理に要求される電力の消費量及び前述の演算器が含まれた装置の面積が縮小される。
また、本発明によれば、三次元グラフィックス（graphics）に含まれた位置を示すデータと、カラーを示すデータとが区分されて処理される。
【図面の簡単な説明】
【００１２】
【図１】一実施形態によるデータ処理装置の一例を示す構成図である。
【図２】一実施形態によるデータ処理方法の一例について説明するためのフローチャートである。
【図３】一実施形態によるデータ処理方法の他の例について説明するためのフローチャートである。
【図４Ａ】一実施形態による決定部が，位置を示すデータを基準に第１データを決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。
【図４Ｂ】図４Ａに図示されたフローチャートによる一例について説明するための図面である。
【図４Ｃ】一実施形態による決定部がシェーダコードに含まれた他のキーワードを基準に第１データを決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。
【図４Ｄ】一実施形態による決定部が、シェーダコードに含まれたコンピュートシェーダ（compute  shader）を第１データとして決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。
【図４Ｅ】一実施形態による決定部がシェーダコードに含まれた高い正確度が要求される第１データを決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。
【図５】一実施形態による演算部がコンパイルされた第１データ、及びコンパイルされた第２データを演算する一例について説明するためのフローチャートである。
【図６】一実施形態によるデータ処理装置が動作する一例について説明するための図面である。
【図７】一実施形態によるコンパイル装置及び演算装置の一例を示す構成図である。
【図８】一実施形態による演算部がグラフィック処理装置（ＧＰＵ）に含まれた一例を示す構成図である。
【発明を実施するための形態】
【００１３】
以下では、図面を参照し、本発明の実施形態について詳細に説明する。本発明の下記実施形態は、本発明を具体化するためのものであり、本発明の権利範囲を制限したり限定したりするものではない。また、本発明の詳細な説明及び実施形態から、本発明が属する技術分野で当業者が容易に類推することができることは、本発明の権利範囲に属するものであると解釈される。
【００１４】
図１は、一実施形態によるデータ処理装置の一例を示す構成図である。図１を参照すれば、データ処理装置１００は、決定部１１０、コンパイル部１２０及び演算部１３０を含む。図１に図示されたデータ処理装置１００には、本実施形態と係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということを、本実施形態と係わる技術分野で当業者であるならば、理解することができるであろう。
【００１５】
図１に図示されたデータ処理装置１００の決定部１１０、コンパイル部１２０及び演算部１３０は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによっても具現され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによっても具現される。また、他の形態のハードウェアによっても具現されてよいことが、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。
【００１６】
決定部１１０は、入力データのうちから第１データを決定する。ここで、第１データは、正確な演算が要求されるデータを意味する。ここで、正確な演算が要求されるということは、所定の演算を行った結果に誤差が発生しないということを意味する。例えば、１．００＋１．０１＝２．０１のように演算されることを、正確に演算されたといい、１．００＋１．０１≒２．００のように演算されることを、近似演算されたという。また、入力データは、データ処理装置１００に入力されるデータを意味し、入力データには、多様な情報が含まれてもよい。このとき、入力データには、正確な演算が要求されるデータと、正確な演算が要求されないデータとが含まれてもよい。
【００１７】
例えば、データ処理装置１００は、客体レンダリングの遂行に利用され、データ処理装置１００に入力される入力データは、シェーダコード（shader  code）にもなる。ここで、該客体は、映像で表現されて画面に出力されるモデルであり、データ処理装置１００によってレンダリングされる対象を意味する。
【００１８】
例えば、画面に出力される客体が虎であると仮定すれば、レンダリングを介して、虎の形状、位置及びカラーなどが含まれたイメージが生成され、生成されたイメージが画面に出力される。もしデータ処理装置１００に正確な演算を行う演算器だけ含まれていると仮定すれば、イメージに含まれた虎を表現する情報（例えば、形状、位置及びカラーなど）の正確度は高くなるが（すなわち、虎が正確に表現される）、データ処理装置１００がデータを処理する過程において、電力消費量が増加する。
【００１９】
従って、データ処理装置１００が入力データ（例えば、シェーダコード）において、正確な演算が要求される第１データだけ正確な演算を行う第１演算器を利用して演算し、入力データから第１データが除かれた第２データを、近似演算を行う第２演算器を利用して演算すれば、データ処理装置１００がデータを処理する過程で生じる電力の消費量が低減される。
【００２０】
決定部１１０は、入力データに含まれたキーワードに基づいて、入力データのうち、正確な演算が要求される第１データを決定する。例えば、決定部１１０は、入力データにおいて、特定ビルトイン（built-in）または特定ＡＰＩ（application program
interface）によって指定された変数を区分し、区分された変数を含むコードを選択する。そして、選択されたコードを第１データとして決定する。
【００２１】
例えば、決定部１１０が第１データを決定するのに利用されるビルトインまたはＡＰＩによって指定された変数には、「position」、「size」、「distance」、「cooord」、「tesslevel」、またはそれらの組み合わせが含まれるが、それらに限定されるものではない。
【００２２】
もし入力データがシェーダコードであると仮定すれば、決定部１１０は、レンダリングされる客体の位置を示すデータを、第１データとして選択することができる。このとき、シェーダコードにおいて第１データが除かれた第２データには、客体のカラーを示すデータが含まれてもよい。例えば、客体が虎であると仮定すれば、虎の位置を示すデータが正確に演算されない場合、映像の品質が著しく低下する。一方、虎のカラーを示すデータは、正確に演算されないとしても、一定の正確性を有するように、近似演算が行われるならば、映像の品質は、ある程度のレベルに維持される。決定部１１０が客体の位置を示すデータを第１データとして選択することにより、演算部１３０は、コンパイルされた第１データを正確に演算し、コンパイルされた第２データを近似演算することができる。従って、データ処理装置１００は、データを処理するのに要求される電力を低減させ、データの処理速度を向上させることができる。
【００２３】
コンパイル部１２０は、入力データのうち、第１データと第２データとを区分してコンパイルする。
【００２４】
コンパイル部１２０は、複数のＩＳＡ（Instruction set architecture）を利用して、入力データのコンパイルを行う。例えば、コンパイル部１２０は、第１ＩＳＡを利用して第１データをコンパイルし、第２ＩＳＡを利用して第２データをコンパイルする。ここで、第１ＩＳＡは、第１演算器を使用するＩＳＡを意味し、第２ＩＳＡは、第２演算器を使用するＩＳＡを意味する。
【００２５】
以下、図２及び図３を参照し、データ処理装置１００がデータを処理する例について説明する。図２及び図３を参照して説明するデータ処理方法、は図１に図示されたデータ処理装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１に図示されたデータ処理装置１００について記述された内容は、図２または図３のデータ処理方法にも適用されるということが分かる。
【００２６】
図２は、一実施形態によるデータ処理方法の一例について説明するためのフローチャートである。
【００２７】
２１０段階において、決定部１１０は、入力データのうちから第１データを決定する。
【００２８】
２２０段階において、コンパイル部１２０は、入力データのうち第１データが除かれた第２データと第１データとを区分してコンパイルを行う。
２３０段階において、コンパイル部１２０は、コンパイルされた第１データ、及びコンパイルされた第２データを、それぞれ第１演算器及び第２演算器に提供する。ここで、第１演算器は、第２演算器に比べて相対的に正確な演算を行う演算器を意味する。
【００２９】
図３は、一実施形態によるデータ処理方法の他の例について説明するためのフローチャートである。
【００３０】
３１０段階において、データ処理装置１００は、データを受信する。言い換えれば、データ処理装置１００の決定部１１０にデータが入力される。
【００３１】
３２０段階において、決定部１１０は、入力データのうち正確な演算が要求される第１データを決定する。第１データの場合には、３３０段階に進み、第２データ（すなわち、入力データにおいて、第１データを除いたデータ）の場合には、３５０段階に進む。
【００３２】
３３０段階において、コンパイル部１２０は、第１データをコンパイルする。例えば、コンパイル部１２０は、第１ＩＳＡを利用して第１データをコンパイルする。
【００３３】
３４０段階において、コンパイル部１２０は、コンパイルされた第１データを第１演算器１３１に提供する。そして、第１演算器１３１は、コンパイルされた第１データを利用して正確な演算を行う。
【００３４】
３５０段階において、コンパイル部１２０は、第２データをコンパイルする。例えば、コンパイル部１２０は、第２ＩＳＡを利用して第２データをコンパイルする。
３６０段階において、コンパイル部１２０は、コンパイルされた第２データを第２演算器１３２に提供する。そして、第２演算器１３２は、コンパイルされた第２データを利用して近似演算を行う。
【００３５】
以下、図４Ａないし図４Ｅを参照し、決定部１１０が入力データにおいて第１データを決定し、コンパイル部１２０が、第１データと第２データとを区分してコンパイルする例について説明する。図４Ａないし図４Ｅを参照して説明する例は、図１に図示されたデータ処理装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１に図示されたデータ処理装置１００について記述された内容は、図４Ａないし図４Ｅに図示された例にも適用されるということが分かる。
【００３６】
図４Ａは、一実施形態による決定部が、位置を示すデータを基準に、第１データを決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。図４Ａでは、説明の便宜のために、入力データがシェーダコードであるという前提に基づく。
【００３７】
４１１段階において、決定部１１０にシェーダコードが入力される。
【００３８】
４１２段階において、決定部１１０は、シェーダコードにおいて、客体の位置を示すデータを決定する。例えば、決定部１１０は、シェーダコードにおいて、「position」を含むコードを選択することができる。しかし、前述の「position」は、シェーダコードのビルトインまたはＡＰＩによって指定された変数を示す名称の一例に過ぎず、決定部１１０は、位置を示すデータであるならば、制限なしに選択することができる。
【００３９】
決定部１１０は、シェーダコードのうち位置を示すデータを第１データとして設定し、第１データを除いた残りのデータを第２データとして設定する。
【００４０】
４１３段階において、コンパイル部１２０は、第１データをコンパイルする。例えば、コンパイル部１２０は、第１ＩＳＡを利用して第１データをコンパイルする。このとき、第１ＩＳＡは、第１演算器を使用するＩＳＡを意味し、第１演算器は、正確な演算を行う演算器を意味する。
【００４１】
４１４段階において、コンパイル部１２０は、第２データをコンパイルする。例えば、コンパイル部１２０は、第２ＩＳＡを利用して第２データをコンパイルする。このとき、第２ＩＳＡは、第２演算器を使用するＩＳＡを意味し、第２演算器は、近似演算を行う演算器を意味する。
【００４２】
４１５段階において、コンパイル部１２０は、コンパイルされたシェーダコードを生成する。４１１段階ないし４１４段階によって、決定部１１０がシェーダコードで第１データを決定し、コンパイル部１２０が第１データと第２データとを区分してコンパイルすることにより、コンパイルされたシェーダコードが生成される。コンパイルされたシェーダコードは、コンパイルされた第１データと、コンパイルされた第２データとを含む。
【００４３】
図４Ｂは、図４Ａに図示されたフローチャートによる一例について説明するための図面である。図４Ｂを参照すれば、図４Ａを参照して説明したシェーダコード４２１の一例が記載されている。シェーダコード４２１には、客体のレンダリングされるのに必要な多様なコードが含まれる。例えば、シェーダコード４２１には、客体の位置を指定する「vec4  gl_position;」及び客体の色を指定する「float  flag_color;」のようなコードが含まれる。図４Ｂでは、説明の便宜のために、シェーダコード４２１に含まれた多様なコードのうち、客体の位置を指定するコード、及び客体の色を指定するコードだけ記載した。
【００４４】
一方、図４Ｂに図示されたシェーダコード４２１の一例は、二次元及び三次元のグラフィックス標準ＡＰＩ規格（例えば、OpenGL）によるコードである。しかし、前述のコードだけでなく、客体のレンダリングを行う命令語の集合であるならば、制限なしにシェーダコード４２１の一例にもなる。
【００４５】
４２２段階において、決定部１１０は、シェーダコード４２１に含まれたキーワードを利用して、シェーダコード４２１を分離する。例えば、決定部１１０は、シェーダコード４２１のビルトインまたはＡＰＩを利用して、シェーダコード４２１を、第１データと第２データとに分離することができる。
【００４６】
例えば、決定部１１０は、シェーダコード４２１に含まれたコードのうち、キーワード「position」を含むコードを、第１データとして選択することができる。言い換えれば、決定部１１０は、シェーダコード４２１に含まれたコードのうち「vec4  gl_position;」を第１データとして選択することができる。それによって、シェーダコード４２１に含まれた残りのコードは、第２データに指定される。
【００４７】
４２３段階及び４２５段階において、コンパイル部１２０は、第１データと第２データとを区分してコンパイルする。例えば、４２３段階において、コンパイル部１２０は、「vec4  gl_position;」を、第１ＡＰＩを利用してコンパイルすることができる。そして、４２５段階において、コンパイル部１２０は、シェーダコード４２１に含まれた残りのコード（すなわち、シェーダコード４２１において、「vec4  gl_position;」を除いたコード）を、第２ＡＰＩを利用してコンパイルすることができる。
【００４８】
４２４段階において、コンパイル部１２０は、コンパイルされた第１データを出力する。例えば、コンパイル部１２０は、「vec4  gl_position;」がコンパイルされた「fmad  a0,a1」を第１データとして出力することができる。
【００４９】
４２６段階において、コンパイル部１２０は、コンパイルされた第２データを出力する。例えば、コンパイル部１２０は、「float  flag_color;」がコンパイルされた「afmad  a0,a1」を第２データとして出力することができる。
【００５０】
図４Ａ及び図４Ｂを参照して説明したところによれば、決定部１１０は、シェーダコードに含まれたコードのうち客体の位置を示すコードを第１データとして決定することができる。従って、客体の位置を示すコードは、演算部１３０によって正確な演算が行われ、シェーダコードに含まれたコードのうち客体の位置を示すコード以外のコードは、近似演算が行われる。
【００５１】
一方、シェーダコードのうち、正確な演算が行われなければならないデータ（すなわち、第１データ）は、客体の位置を示すデータに限定されるものではない。言い換えれば、シェーダコードのうち正確な演算が要求されるデータは、制限なしに第１データに該当する。
【００５２】
以下、図４Ｃを参照し、決定部１１０が、シェーダコードにおいて、第１データを決定する他の例について説明する。
【００５３】
図４Ｃは、一実施形態による決定部が、シェーダコードに含まれた他のキーワードを基準に第１データを決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。図４Ｃを参照すれば、シェーダコードには、客体の位置及びカラーを示すコード以外に、客体の大きさ（size）、客体間の距離（distance）、テッセレーションレベル（tessellation  level）または座標（coordinate）を指定するコードが含まれる。また、シェーダコードには、前述のコード以外にも、客体のレンダリングを行うのに必要な多様な情報を示すコードが含まれる。
【００５４】
４３１段階において、決定部１１０にシェーダコードが入力される。
【００５５】
４３２段階において、決定部１１０は、シェーダコードに含まれたキーワードを利用して、シェーダコードを分離する。図４Ｂを参照して説明したことによれば、決定部１１０は、シェーダコードに含まれたコードのうち、「position」を含むコードを第１データとして選択した。しかし、図４Ｃを参照すれば、決定部１１０は、シェーダコードとして、客体の大きさ（size）、客体間の距離（distance）、テッセレーションレベル（tessellation  level）または座標（coordinate）を指定するコードのうち一つ以上を第１データとして選択することができる。例えば、シェーダコードに含まれたコードのうち「position」、「size」、「distance」、「coord」、「tesslevel」、及びそれらの組み合わせのうち、いずれか一つを含むコードを第１データとして選択することができる。
【００５６】
例えば、決定部１１０は、シェーダコードに含まれたコードのうち「Float  gl_PointSize；」、「Float  gl_ClipDistance［］；」、「vec3  gl_TessCoord」、「Float  gl_TessLevelOuter」、「Float  glTess_LevelInner」、「vec4  gl_FragCoord」、「vec2  gl_SamplePosition」、「vec4  gl_FrontColor」、「vec4  gl_BackColor」、「vec4  gl_FrontSecondaryColor」、「vec4  gl_BackSecondaryColor」、「vec4  gl_TexCoord［］」または「Float  gl_FogFragCoord」を第１データとして選択することができる。それによって、シェーダコードに含まれた残りのコードは、第２データに指定される。
【００５７】
前述のコードは、二次元及び三次元のグラフィックス標準ＡＰＩ規格（例えば、OpenGL）によるコードである。しかし、前述のコードだけではなく、客体のレンダリングを行う命令語の集合であるならば、制限なしにシェーダコードの一例になる。
【００５８】
４３３段階において、コンパイル部１２０は、第１データをコンパイルする。例えば、コンパイル部１２０は、第１ＩＳＡを利用して第１データをコンパイルする。また、４３４段階において、コンパイル部１２０は、第２データをコンパイルする。例えば、コンパイル部１２０は、第２ＩＳＡを利用して第２データをコンパイルする。ここで、第１ＩＳＡ及び第２ＩＳＡの一例は、図４Ａを参照して説明した通りである。
【００５９】
４３５段階において、コンパイル部１２０は、コンパイルされたシェーダコードを生成する。４３１段階ないし４３４段階によって、決定部１１０がシェーダコードにおいて第１データを決定し、コンパイル部１２０が第１データと第２データとを区分してコンパイルすることにより、コンパイルされたシェーダコードが生成される。コンパイルされたシェーダコードは、コンパイルされた第１データと、コンパイルされた第２データとを含む。
【００６０】
図４Ｄは、一実施形態による決定部が、シェーダコードに含まれたコンピュートシェーダ（compute  shader）を第１データとして決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。
【００６１】
ここで、コンピュートシェーダは、グラフィックカードで実行されるプログラムであり、普通のレンダリング・パイプラインに含まれないシェーダを意味する。コンピュートシェーダは、超並列（massively parallel）ＧＰＧＰＵアルゴリズムや、ゲームレンダリングの一部パートを加速させるために使用される。
【００６２】
図４Ｄに図示されたシェーダコードは、図４Ａないし図４Ｃを参照して説明したシェーダコードと対応するので、詳細な説明は省略する。
【００６３】
４４１段階において、決定部１１０にシェーダコードが入力される。
【００６４】
４４２段階において、決定部１１０は、シェーダコードに含まれたコンピュートシェーダを第１データとして決定する。
【００６５】
４４３段階において、コンパイル部１２０は、第１データをコンパイルする。例えば、コンパイル部１２０は、第１ＩＳＡを利用して第１データをコンパイルする。また、４４４段階において、コンパイル部１２０は、第２データをコンパイルする。例えば、コンパイル部１２０は、第２ＩＳＡを利用して第２データをコンパイルする。ここで、第１ＩＳＡ及び第２ＩＳＡの一例は、図４Ａを参照して説明した通りである。
【００６６】
４４５段階において、コンパイル部１２０は、コンパイルされたシェーダコードを生成する。４４１段階ないし４４４段階によって、決定部１１０が、シェーダコードにおいて第１データを決定し、コンパイル部１２０が、第１データと第２データとを区分してコンパイルすることにより、コンパイルされたシェーダコードが生成される。コンパイルされたシェーダコードは、コンパイルされた第１データと、コンパイルされた第２データとを含む。
【００６７】
一方、第１データは、図４Ａないし図４Ｄを参照して説明した例に限定されるものではなく、高い正確度が要求されるデータ（すなわち、正確な演算を行う演算器によって演算されなければならないデータ）であるならば、制限なしに該当する。
【００６８】
図４Ｅは、一実施形態による決定部が、シェーダコードに含まれた高い正確度が要求される第１データを決定し、コンパイル部が、第１データ及び第２データをコンパイルする一例について説明するためのフローチャートである。図４Ｅを参照すれば、４５１段階において、決定部１１０にシェーダコードが入力される。
【００６９】
４５２段階において、決定部１１０は、シェーダコードにおいて、高い正確度が要求されるデータを決定する。ここで、高い正確度が要求されるデータは、演算器によって演算された結果の正確度が高いデータを意味する。言い換えれば、演算器が、所定の関数に基づいてデータを演算することによって生成された結果値が正確であるか、あるいは所定の誤差（例えば、１％以内）を示す場合、高い正確度を有するといえる。
入力データ（例えば、シェーダコード）において高い正確度が要求されるデータは、ユーザによってあらかじめ設定され、入力データの種類、及びデータ処理装置１００が遂行する機能によって、ユーザの介入なしにも自動的に設定される。
【００７０】
４５３段階及び４５４段階において、コンパイル部１２０が第１データと第２データとを区分してコンパイルする。
【００７１】
４５５段階において、コンパイル部１２０は、コンパイルされたシェーダコードを生成する。
【００７２】
再び図１を参照すれば、演算部１３０は、第１演算器１３１及び第２演算器１３２を含む。ここで、第１演算器１３１は、コンパイルされた第１データを演算し、第２演算器１３２は、コンパイルされた第２データを演算する。
【００７３】
第１演算器１３１は、第２演算器１３２に比べて相対的に正確な演算を行う演算器を意味する。言い換えれば、データ処理装置１００は、互いに異なる正確度を有する２個以上の演算器を含む。例えば、第１演算器１３１及び第２演算器１３２は、それぞれ浮動小数点（floating point）方式で表現された数を演算する演算器を意味するが、それらに限定されるものではない。
【００７４】
第１演算器１３１及び第２演算器１３２は、入力されたデータを利用して、数理関数を演算することができる。ここで、入力されたデータは、コンパイル部１２０から伝送されたデータを意味する。言い換えれば、第１演算器１３１及び第２演算器１３２は、レジスタ（register）を非演算子（operand）にするか、あるいは浮動小数点方式で表現された数を非演算子にして、数理関数に代入した結果を出力することができる。ここで、数理関数は、所定の関数に対する逆（reciprocal）関数、逆自乗根（reciprocal square root）関数、底が２であるログ関数、底が２である指数関数、三角関数などを意味するが、それらに限定されるものではない。このとき、数理関数に大代入される入力データが特定区間（例えば、数理関数に対応するグラフの傾きが０に近い区間）に含まれる場合であるならば、同一結果値が出力される。
【００７５】
一般的に、第１演算器１３１及び第２演算器１３２に連続的に入力されるデータは、所定の範囲に含まれる。例えば、第１演算器１３１に、第３データと第４データとが順次に入力されると仮定すれば、第３データと第４データは、所定の範囲に含まれた類似の数字でもある。
【００７６】
例えば、第３データが浮動小数点方式で表現された１０．０００００１に対応する８ビットのデータであり、第４データが浮動小数点方式で表現された１０．００００１０に対応する８ビットのデータであると仮定すれば、第３データと第４データは、下位２個のビットだけ異なり、上位６個のビットは、同一値を有する。
【００７７】
従って、第１演算器１３１が第３データを数理関数に代入した結果値と、第４データを数理関数に代入した結果値は、互いに同一であるか、あるいは非常に類似している。従って、本発明の一実施形態による演算部１３０は、高い正確度が要求されないコンパイルされた第２データを、第２演算器１３２を利用して演算することにより、データ処理装置１００の処理速度を速め、データ処理に必要な電力量を低減させることができる。
【００７８】
以下、図５を参照し、演算部１３０が動作する一例について説明する。
【００７９】
図５は、一実施形態による演算部が、コンパイルされた第１データ、及びコンパイルされた第２データを演算する一例について説明するためのフローチャートである。図５に図示されたフローチャートは、図１に図示された演算部１３０において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１に図示された演算部１３０について以上で記述された内容は、図５に図示されたフローチャートにも適用されるということが分かる。
【００８０】
５１０段階において、演算部１３０には、コンパイル部１２０から伝送されたデータが入力される。例えば、コンパイル部１２０が、シェーダコードをコンパイルすると仮定すれば、演算部１３０には、コンパイルされたシェーダコードが入力される。
【００８１】
５２０段階において、演算部１３０は、入力されたデータが、第１演算器１３１によって演算されなければならないデータであるか否かということを判断する。言い換えれば、演算部１３０は、入力されたデータが第１データであるか否かということを判断する。演算部１３０に入力されたデータが第１データである場合には、５３０段階に進み、第２データである場合には、５４０段階に進む。
【００８２】
５３０段階において、演算部１３０は、第１演算器１３１を利用して第１データを演算する。ここで、第１演算器１３１は、正確な演算を行う演算器を意味する。
【００８３】
５４０段階において、演算部１３０は、第２演算器１３２を利用して第２データを演算する。ここで、第２演算器１３２は、近似演算を行う演算器を意味する。従って、同一データが、第１演算器１３１と第２演算器１３２とにそれぞれ入力されると仮定すれば、第１演算器１３１から出力された結果は、エラーがない結果でもある。一方、第２演算器１３２から出力された結果は、第１演算器１３１から出力された結果と比較すれば、一定程度の誤差が生じた結果でもある。
【００８４】
例えば、第２演算器１３２は、第２データを数理関数と類似した多項式に代入することにより、近似演算を行うことができる。ここで、数理関数は、演算部１３０がデータの演算に利用する関数を意味する。例えば、数理関数が、底が２であるログ関数であると仮定すれば、第１演算器１３１は、ログ関数に第１データを代入することにより、演算を行うことができ、第２演算器１３２は、ログ関数と類似した多項式に、第２データを代入することにより、演算を行うことができる。このとき、多項式に含まれた係数の値は、ルックアップテーブルに保存される。
【００８５】
例えば、演算部１３０は、下記数式（１）を利用して、多項式を導出することができる。
【００８６】
【数１】
2016100004.tif 000003
前述の数式（１）において、ｆ（ｘ）は、第１演算器１３１がデータの演算に利用する数理関数を意味し、ｐ（ｘ）は、第２演算器１３２がデータの演算に利用する多項式を意味する。また、［ａ，ｂ］は、第２演算器１３２に入力されたデータ（例えば、コンパイルされた第２データ）の区間を意味し、ｗは、所定の加重値であって、あらかじめ設定された値を意味する。
【００８７】
演算部１３０は、前述の数式（１）を利用して、［ａ，ｂ］区間においてｗを加重値として設定したとき、データがｆ（ｘ）に入力された結果と、データがｐ（ｘ）に入力された結果との差が最小化されるｐ（ｘ）を導き出すことができる。
【００８８】
５５０段階において、演算部１３０は、第１演算部１３０が演算を行った結果と、第２演算部１３０が演算を行った結果とをマルチプレキシング（multiplexing）して出力する。
【００８９】
図６は、一実施形態によるデータ処理装置が動作する一例について説明するための図面である。図６は、図１に図示されたデータ処理装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１に図示されたデータ処理装置１００について、以上で記述された内容は、図６にも適用されるということが分かる。
【００９０】
入力データ（例えば、シェーダコード６１０が受信されれば、決定部１１０は、入力データ６１０として第１データ６２０を決定する。例えば、決定部１１０は、入力データ６１０に含まれた客体の位置を示すデータを、第１データ６２０として選択することができる。それによって、入力データ６１０に含まれた他のデータ（すなわち、入力データ６１０において第１データ６２０が除かれたデータ）は、第２データ６３０に指定される。
【００９１】
コンパイル部１２０は、第１
ＩＳＡを利用して、第１データ６２０をコンパイルし（６４０）、第２ ＩＳＡを利用して第２データ６３０をコンパイルする（６５０）。言い換えれば、コンパイル部１２０は、入力データ６１０を区分してコンパイルする。
【００９２】
演算部１３０は、コンパイルされた第１データ６６０と、コンパイルされた第２データ６７０とをそれぞれ演算する。例えば、演算部１３０に含まれた第１演算器１３１は、コンパイルされた第１データ６６０を正確に演算し、演算部１３０に含まれた第２演算器１３２は、コンパイルされた第２データ６７０を近似演算することができる。
【００９３】
図１ないし図６を参照して説明したところによれば、データ処理装置１００は、決定部１１０、コンパイル部１２０及び演算部１３０をいずれも含む。言い換えれば、データ処理装置１００が入力データを受信すれば、データ処理装置１００の動作によって、正確に演算された出力値と、近似演算された出力値とが生成される。
【００９４】
一方、具現例にって、データ処理装置１００に含まれた構成のうち一部が独立した装置として存在することもできる。以下、図７及び図８を参照し、データ処理装置１００に含まれた構成が他の装置によって具現される例について説明する。
【００９５】
図７は、一実施形態によるコンパイル装置及び演算装置の一例を示す構成図である。図７には、コンパイル装置７１０及び演算装置７２０が図示されている。ここで、コンパイル装置７１０と演算装置７２０は、互いに独立した装置である。コンパイル装置７１０は、決定部７１１及びコンパイル部７１２を含み、演算装置７２０は、第１演算器７２１及び第２演算器７２２を含む。
【００９６】
図７に図示されたコンパイル装置７１０及び演算装置７２０は、一つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイによっても具現され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによっても具現される。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野で当業者であるならば、理解することができるであろう。
【００９７】
図１と図７とを比較すれば、図７に図示されたコンパイル装置７１０は、図１に図示されたデータ処理装置１００から演算部１３０を除いたところと同一である。言い換えれば、データ処理装置１００に含まれた決定部１１０とコンパイル部１２０とが１つの装置を構成することができる。また、図７には図示されていないが、コンパイル装置７１０に含まれた決定部７１１とコンパイル部７１２がとそれぞれ独立した装置を構成することもできる。
【００９８】
決定部７１１は、入力データのうち正確な演算が要求される第１データを決定する。入力データには、多様な情報が含まれ、特に、正確な演算が要求されるデータ（すなわち、第１データ）と、正確な演算が要求されないデータとが含まれる。また、入力データの一例として、シェーダコードが含まれる。
【００９９】
コンパイル部７１２は、第１データと第２データとを区分してコンパイルする。コンパイル部７１２が第１データ及び第２データをコンパイルする例は、図１を参照して説明した通りである。
【０１００】
演算装置７２０は、コンパイル装置７１０からコンパイルされたデータを受信し、受信されたデータを互いに異なる正確度を有する演算器（すなわち、第１演算器７２１及び第２演算器７２２）を利用して演算する。例えば、演算装置７２０に含まれた第１演算器７２１は、正確な演算を行う演算器であり、第２演算器７２２は、近似演算を行う演算器でもある。図７に図示された第１演算器７２１及び第２演算器７２２は、それぞれ図１に図示された第１演算器１３１及び第２演算器１３２と同一である。また、第２演算器７２２が近似演算を行う一例は、図５を参照して説明した通りである。
【０１０１】
図８は、一実施形態による演算部がグラフィック処理装置（ＧＰＵ）に含まれた一例を示す構成図である。図８には、中央処理装置（ＣＰＵ）８１０、グラフィック処理装置（ＧＰＵ）８２０及びメモリ８３０が図示されている。そして、グラフィック処理装置８２０は、第１演算器８２１及び第２演算器８２２を含む。
【０１０２】
図８を参照すれば、グラフィック処理装置８２０は、第１演算器８２１及び第２演算器８２２を含む。ここで、第１演算器８２１及び第２演算器８２２は、図１に図示された第１演算器１３１及び第２演算器１３２、あるいは図７に図示された第１演算器７２１及び第２演算器７２２と同一である。従って、以下では、第１演算器８２１及び第２演算器８２２に係わる詳細な説明を省略する。
【０１０３】
中央処理装置８１０は、グラフィック処理装置８２０にデータを伝送する。ここで、中央処理装置８１０が伝送するデータは、第１演算器８２１及び第２演算器８２２が演算を行う対象であるデータを含む。言い換えれば、中央処理装置８１０は、第１演算器８２１によって正確な演算が行われるデータと、第２演算器８２２によって近似演算が行われるデータとをグラフィック処理装置８２０に伝送することができる。例えば、中央処理装置８１０が伝送するデータは、シェーダコードでもあり、コンパイルされたシェーダコードでもある。中央処理装置８１０がシェーダコードをコンパイルする例は、図１を参照して説明した通りである。
【０１０４】
メモリ８３０は、中央処理装置８１０及びグラフィック処理装置８２０がデータを処理するのに必要な情報またはデータを保存し、中央処理装置８１０及びグラフィック処理装置８２０がデータを処理した結果を保存する。
【０１０５】
前述のところによれば、入力データの処理に要求される正確度のレベルによって、正確な演算を行う演算器、または近似演算を行う演算器が区分されて使用されることにより、データ処理に要求される電力の消費量及び前述の演算器が含まれた装置の面積が縮小される。
【０１０６】
また、三次元グラフィックス（graphics）に含まれた位置を示すデータと、カラーを示すデータとが区分されて処理される。
【０１０７】
一方、前述の方法は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、磁気記録媒体（例えば、ＲＯＭ（read  only  memory）、ＲＡＭ（random  access  memory）、ＵＳＢ（universal  serial  bus）、フロッピー（登録商標）ディスク、ハードディスクなど）、光学的判読媒体（例えば、ＣＤ（compact  disc）−ＲＯＭ、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【０１０８】
本実施形態と係わる技術分野において当業者であるならば、前述の本質的な特性から逸脱しない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと均等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【０１０９】
本発明の互いに異なる正確度を有する演算器を利用してデータを処理する方法及びその装置は、例えば、データ処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１１０】
１００  データ処理装置
１１０，７１１  決定部
１２０，７１２  コンパイル部
１３０  演算部
１３１，７２１，８２１  第１演算器
１３２，７２２，８２２  第２演算器
６１０  入力データ（シェーダデータ）
６２０  第１データ
６３０  第２データ
７１０  コンパイル装置
７２０  演算装置
８１０  ＣＰＵ
８２０  ＧＰＵ
８３０  メモリ
【図１】
2016100004.tif 000004
【図２】
2016100004.tif 000005
【図３】
2016100004.tif 000006
【図４Ａ】
2016100004.tif 000007
【図４Ｂ】
2016100004.tif 000008
【図４Ｃ】
2016100004.tif 000009
【図４Ｄ】
2016100004.tif 000010
【図４Ｅ】
2016100004.tif 000011
【図５】
2016100004.tif 000012
【図６】
2016100004.tif 000013
【図７】
2016100004.tif 000014
【図８】
2016100004.tif 000015