(57)【要約】【課題】  動的データ構成のための方法及び装置を提供する。【解決手段】  コンパイル装置は、バイナリコードを実行する実行装置がサポートするデータフォーマットのうちバイナリコードが実行されるとき最適の性能を発揮するデータフォーマットを選択し、選択されたデータフォーマットを用いるバイナリコードを生成する。実行装置は、コンパイル装置から提供されたバイナリコードを実行する。【選択図】      図１２
2014038624.tif 000002
【特許請求の範囲】
【請求項１】
コンパイル装置がソースコードをコンパイルすることによってバイナリコードを生成する方法において、
予測された処理性能に基づいて複数のデータフォーマットのうち前記バイナリコードを実行するプロセッサに適するデータフォーマットを選択するステップと、
前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するステップと、
を含むことを特徴とするバイナリコード生成方法。
【請求項２】
前記プロセッサは、単一命令語多重データ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ、Ｍｕｌｔｉｐｌｅ−Ｄａｔａ：ＳＩＭＤ）プロセッサであり、
前記複数のデータフォーマットは、それぞれ前記プロセッサがＳＩＭＤ方式によりデータを並列処理するために用いられるデータフォーマットであることを特徴とする請求項１に記載のバイナリコード生成方法。
【請求項３】
前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうち１つ以上を含むことを特徴とする請求項１または２に記載のバイナリコード生成方法。
【請求項４】
前記選択するステップは、
前記複数のデータフォーマットそれぞれの性能を予測するステップと、
前記予測された複数のデータフォーマットそれぞれの性能に基づいて前記複数のデータフォーマットのうち最高の性能を提供するデータフォーマットを前記バイナリコードを選択するステップと、
を含むことを特徴とする請求項１に記載のバイナリコード生成方法。
【請求項５】
前記選択されたデータフォーマットを示す情報を生成するステップをさらに含むことを特徴とする請求項１または４に記載のバイナリコード生成方法。
【請求項６】
前記プロセッサを用いて前記バイナリコードを実行するステップをさらに含むことを特徴とする請求項１、４、５のいずれか一項に記載のバイナリコード生成方法。
【請求項７】
前記実行するステップは、
前記選択されたデータフォーマットに基づいてデータをロードするステップと、
前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、
前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップと、
を含むことを特徴とする請求項６に記載のバイナリコード生成方法。
【請求項８】
前記選択されたデータフォーマットを示す情報を生成するステップと、
前記生成された情報に基づいて前記プロセッサを用いて前記バイナリコードを実行するステップと、
をさらに含むことを特徴とする請求項１または請求項４ないし７いずれか一項に記載のバイナリコード生成方法。
【請求項９】
実行装置がバイナリコードを実行する方法において、
予測された処理性能に基づいて前記バイナリコード及び選択されたデータフォーマットを示す情報を受信するステップと、
プロセッサを用いて前記バイナリコードを実行するステップと、
を含み、
最高の予測された処理性能を有する前記データフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち各データフォーマットの前記予測された処理性能に基づいて選択された１つのデータフォーマットであることを特徴とするバイナリコード実行方法。
【請求項１０】
前記実行するステップは、
前記選択されたデータフォーマットに基づいてデータをロードするステップと、
前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、
前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップと、
を含むことを特徴とする請求項９に記載のバイナリコード実行方法。
【請求項１１】
請求項１ないし１０のいずれか一項に記載の方法を実行するプログラムを収録したコンピュータ読み出し可能記録媒体。
【請求項１２】
複数のデータフォーマットのうちバイナリコードを実行するプロセッサに適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するコンパイル装置と、
前記プロセッサを用いて前記バイナリコードを実行する実行装置と、
を備えることを特徴とするコンピュータシステム。
【請求項１３】
前記コンパイル装置は、前記選択されたデータフォーマットを示す情報を生成し、
前記実行装置は前記情報に基づいて前記プロセッサを用いて前記バイナリコードを実行することを特徴とする請求項１２に記載のコンピュータシステム。
【請求項１４】
ソースコードを格納する格納部と、
前記格納部から前記ソースコードを読み出し、予測された処理性能に基づいて複数のデータフォーマットのうちバイナリコードを実行する実行装置に適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するプロセッサと、
を備えることを特徴とするコンパイル装置。
【請求項１５】
前記実行装置のプロセッサは、単一命令語多重データプロセッサであり、
前記複数のデータフォーマットは、それぞれ前記実行装置のプロセッサがＳＩＭＤ方式でデータを並列処理するために用いられるデータフォーマットであることを特徴とする請求項１４に記載のコンパイル装置。
【請求項１６】
前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうちの１つ以上を含むことを特徴とする請求項１４または１５に記載のコンパイル装置。
【請求項１７】
前記プロセッサは、前記選択されたデータフォーマットを示す情報を生成することを特徴とする請求項１４ないし１６のいずれか一項に記載のコンパイル装置。
【請求項１８】
前記バイナリコード及び前記選択されたデータフォーマットを示す情報を前記実行装置に送信する送受信部をさらに備えることを特徴とする請求項１４ないし１７のいずれか一項に記載のコンパイル装置。
【請求項１９】
バイナリコード及び選択されたデータフォーマットを示す情報を受信する送受信部（前記選択されたデータフォーマットは予測された処理性能に基づいて選択される）と、
前記バイナリコードを実行するプロセッサと、
を備え、
前記選択されたデータフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち１つのデータフォーマットであることを特徴とする実行装置。
【請求項２０】
前記プロセッサは、前記選択されたデータフォーマットに基づいてデータをロードし、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理し、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納することを特徴とする請求項１９に記載の実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は動的データ構成のための方法及び装置に関し、より詳細にはＳＩＭＤプロセッサで用いられる動的データを構成する方法及び装置に関する。
【背景技術】
【０００２】
単一命令語多重データ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ、Ｍｕｌｔｉｐｌｅ−Ｄａｔａ；ＳＩＭＤ）プロセッサは、単一命令語を用いて複数のデータを同時に処理することで処理能力を向上させるプロセッサである。
【０００３】
ＳＩＭＤは、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；ＣＰＵ）及びグラフィックス処理装置（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；ＧＰＵ）などのような多様なプロセッサの性能を向上させるために用いられる方式である。ＣＰＵ及びＧＰＵはＳＩＭＤプロセッサの例であってもよく、ＳＩＭＤプロセッサはＳＩＭＤスキームを採用してもよい。ＣＰＵ、ＧＰＵ及びこれと類似するものはサーバ、ラップトップ（ｌａｐｔｏｐ）、デスクトップ（ｄｅｓｋｔｏｐ）、タブレット（ｔａｂｌｅｔ）、及び電話（ｐｈｏｎｅ）のようなモバイルコンピュータデバイスで活用され得る。
【０００４】
ＳＩＭＤプロセッサがデータを処理するためには、命令語によって処理される複数のデータが構成されなければならない。ＳＩＭＤプロセッサは、構成された複数のデータを１つの命令語を用いて処理することによってコンピュータシステムの性能を向上させることができる。
【０００５】
ＳＩＭＤプロセッサの特性に応じて、データを処理するために適するデータフォーマットがサポートされる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、ＳＩＭＤプロセッサで用いられる動的データを構成する方法及び装置を提供する。
【課題を解決するための手段】
【０００７】
本発明の一側面によると、コンパイル装置がソースコードをコンパイルすることによってバイナリコードを生成する方法において、予測された処理性能に基づいて複数のデータフォーマットのうち前記バイナリコードを実行するプロセッサに適するデータフォーマットを選択するステップと、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するステップとを含むバイナリコード生成方法が提供される。
【０００８】
前記プロセッサは、単一命令語多重データ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ、Ｍｕｌｔｉｐｌｅ−Ｄａｔａ：ＳＩＭＤ）プロセッサであってもよい。
【０００９】
前記複数のデータフォーマットは、それぞれ前記プロセッサがＳＩＭＤ方式によりデータを並列処理するために用いられるデータフォーマットであってもよい。
【００１０】
前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうち１つ以上を含んでもよい。
【００１１】
前記選択するステップは、前記複数のデータフォーマットそれぞれの性能を予測するステップと、前記予測された複数のデータフォーマットそれぞれの性能に基づいて前記複数のデータフォーマットのうち最高の性能を提供するデータフォーマットを前記バイナリコードを選択するステップとを含む。
【００１２】
バイナリコード生成方法は、前記選択されたデータフォーマットを示す情報を生成するステップをさらに含んでもよい。バイナリコード生成方法は、前記プロセッサを用いて前記バイナリコードを実行するステップをさらに含んでもよい。
【００１３】
前記実行するステップは、前記選択されたデータフォーマットに基づいてデータをロードするステップと、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップとを含んでもよい。
【００１４】
バイナリコード生成方法は、前記選択されたデータフォーマットを示す情報を生成するステップと、前記生成された情報に基づいて前記プロセッサを用いて前記バイナリコードを実行するステップとをさらに含んでもよい。
【００１５】
本発明の一実施形態によると、実行装置がバイナリコードを実行する方法において、予測された処理性能に基づいて前記バイナリコード及び選択されたデータフォーマットを示す情報を受信するステップと、プロセッサを用いて前記バイナリコードを実行するステップとを含み、最高の予測された処理性能を有する前記データフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち各データフォーマットの前記予測された処理性能に基づいて選択された１つのデータフォーマットであるバイナリコード実行方法が提供される。
【００１６】
前記実行するステップは、前記選択されたデータフォーマットに基づいてデータをロードするステップと、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップとを含んでもよい。
【００１７】
本発明の一実施形態によると、複数のデータフォーマットのうちバイナリコードを実行するプロセッサに適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するコンパイル装置と、前記プロセッサを用いて前記バイナリコードを実行する実行装置とを備えるコンピュータシステムが提供される。
【００１８】
前記コンパイル装置は、前記選択されたデータフォーマットを示す情報を生成し、前記実行装置は前記情報に基づいて前記プロセッサを用いて前記バイナリコードを実行してもよい。
【００１９】
本発明の一実施形態によると、ソースコードを格納する格納部と、前記格納部から前記ソースコードを読み出し、予測された処理性能に基づいて複数のデータフォーマットのうち前記バイナリコードを実行する実行装置に適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するプロセッサとを備えるコンパイル装置が提供される。
【００２０】
前記実行装置のプロセッサは、単一命令語多重データプロセッサであり、前記複数のデータフォーマットは、それぞれ前記実行装置のプロセッサがＳＩＭＤ方式でデータを並列処理するために用いられるデータフォーマットであってもよい。
【００２１】
前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうちの１つ以上を含んでもよい。
【００２２】
前記プロセッサは、前記選択されたデータフォーマットを示す情報を生成してもよい。
【００２３】
前記コンパイル装置は、前記バイナリコード及び前記選択されたデータフォーマットを示す情報を前記実行装置に送信する送受信部をさらに備えてもよい。
【００２４】
本発明の一実施形態によると、バイナリコード及び選択されたデータフォーマットを示す情報を受信する送受信部（前記選択されたデータフォーマットは予測された処理性能に基づいて選択される）と、前記バイナリコードを実行するプロセッサとを備え、前記選択されたデータフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち１つのデータフォーマットである実行装置が提供される。
【００２５】
前記プロセッサは、前記選択されたデータフォーマットに基づいてデータをロードし、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理し、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納してもよい。
【発明の効果】
【００２６】
本発明によると、データフォーマットに対する作業がコンパイル装置によって自動処理されることでプログラマーに便利な開発環境を提供することができ、実行装置のプロセッサの効率が向上される。
【００２７】
また、実施形態は、ＯｐｅｎＧＬ及びＯｐｅｎＧＬ｜ＥＳなどのようなプログラマーによるデータフォーマットの変換ができない標準言語についても内部的なデータフォーマットの変換を提供することによって実行装置のプロセッサの効率を向上させることができる。
【００２８】
また、プロセッサの効率が向上されることで処理時間が短縮され、使用電力も減少し得る。
【図面の簡単な説明】
【００２９】
【図１】一実施形態に係るコンピュータシステムの構造図である。
【図２】一実施形態に係るコンパイル装置のブロック図である。
【図３】一実施形態に係る実行装置のブロック図である。
【図４】一例に係るＡｏＳフォーマットを説明する。
【図５】一例に係るＳｏＡフォーマットを説明する。
【図６】一例に係るＡｏＳ方式の処理が実行された場合における性能を説明する。
【図７】一例に係るＳｏＡ方式の処理が実行された場合における性能を説明する。
【図８】一例に係るコンパイル装置のプロセッサのブロック図である。
【図９】一例に係るグラフィック作業を処理するソースコードである。
【図１０】一例に係る条件分岐文を含むソースコードである。
【図１１】一例に係る実行装置のプロセッサのブロック図である。
【図１２】一実施形態に係るバイナリコード処理方法のフローチャートである。
【発明を実施するための形態】
【００３０】
以下、添付する図面を参照しながら実施形態を詳細に説明する。各図面に提示された同一の参照符号は同一の部材を示す。
【００３１】
以下のピクセルに対する説明はバーテックスにも適用され得る。また、バーテックスに対する説明はピクセルにも適用されてもよい。
【００３２】
図１は、一実施形態に係るコンピュータシステムの構造図である。
【００３３】
コンピュータシステム１００は、ソースコード内のアルゴリズムの特性をソースコードのコンパイル段階で前もって分析することができる。コンピュータシステム１００は、分析に基づいて並列処理するための効率的なデータフォーマットを選択する。選択されたデータフォーマットを用いる並列処理方式（ｓｃｈｅｍｅ）（並列処理構成）によってコンピュータシステム１００の処理能力が極大化される。ここで、並列処理方式は、ＳＩＭＤ方式（ＳＩＭＤ構成）の並列処理を含んでもよい。アルゴリズムの特性の例は、ＳＩＭＤ処理が適用される命令語、前記命令語の実行条件及び、実行が条件付きの状態に依存する命令語、または命令語のブロックを含んでもよい。したがって、分岐はアルゴリズムの特性である。
【００３４】
コンピュータシステム１００は、コンパイル装置１１０及び実行装置１２０を備える。コンパイル装置１１０は、ソースコードをコンパイルすることによってバイナリコード（ｂｉｎａｒｙ  ｃｏｄｅ）を生成する。コンパイル装置１１０は、コンパイラを実行することによってソースコードに基づいてバイナリコードを生成するコンピュータであってもよい。
【００３５】
コンパイル装置１１０は、複数のデータフォーマットのうちバイナリコードを実行する実行装置１２０、またはプロセッサに適するデータフォーマットを選択する。コンパイル装置１１０は、ソースコードをコンパイルすることによって選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成してもよく、選択されたデータフォーマットを示す情報を生成してもよい。バイナリコードを実行するプロセッサは実行装置１２０のプロセッサであってもよい。実行装置１２０のプロセッサはＣＰＵまたはＧＰＵを含んでもよい。ＣＰＵまたはＧＰＵはＳＩＭＤ方式（構成）を採用してもよい。
【００３６】
コンパイル装置１１０は、生成されたバイナリコード及び選択されたデータフォーマットを示す情報を実行装置１２０に提供する。実行装置１２０はバイナリコードを実行する。実行装置１２０は、バイナリコードを実行するコンピュータであってもよい。実行装置１２０は、選択されたデータフォーマットを示す情報に基づいてプロセッサを用いてバイナリコードを実行する。コンパイル装置１１０及び実行装置１２０は、物理的に同一の１つ装置であってもよい。
【００３７】
図２は、一実施形態に係るコンパイル装置のブロック図である。コンパイル装置１１０は、プロセッサ２１０、格納部２２０及び送受信部２３０を備える。格納部２２０は、ソースコード及びバイナリコードを格納する。
【００３８】
プロセッサ２１０は、ソースコードをコンパイルすることによってバイナリコード及びデータフォーマットを示す情報を生成する。プロセッサ２１０は、格納部２２０からソースコードを読み出す。プロセッサ２１０は、生成されたバイナリコード及びデータフォーマットを示す情報を格納部２２０内に格納する。
【００３９】
プロセッサ２１０は、プロセッサ２１０に入力されたソースコードに対応する最も効率的なデータフォーマットを決定する。プロセッサ２１０は、複数のデータフォーマットのうちバイナリコードを実行する実行装置１２０またはプロセッサに適するデータフォーマットを選択する。プロセッサ２１０は、ソースコードをコンパイルすることによって選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成し、選択されたデータフォーマットを示す情報を生成する。バイナリコードを実行するプロセッサは、実行装置１２０のプロセッサであってもよい。送受信部２３０は、バイナリコード及びデータフォーマットを示す情報を実行装置１２０に送信する。
【００４０】
図３は、一実施形態に係る実行装置のブロック図である。実行装置１２０は、プロセッサ３１０及び送受信部３２０を備える。送受信部３２０は、コード及びデータフォーマットを示す情報をコンパイル装置１１０から受信する。
【００４１】
プロセッサ３１０はＣＰＵまたはＧＰＵを含んでもよい。ＣＰＵまたはＧＰＵは、ＳＩＭＤ方式（構成）を採用してもよい。プロセッサ３１０は、データフォーマットを示す情報に基づいてプロセッサを用いてバイナリコードを実行する。ＣＰＵ、ＧＰＵ及びこれと類似するものはサーバ、ラップトップ、デスクトップ、タブレット、及びフォンのようなモバイル・コンピューティングデバイスで活用され得る。
【００４２】
複数のデータフォーマットそれぞれは、プロセッサ３１０によって処理されなければならないデータをグルーピングする方式に対応する。複数のデータフォーマットは、それぞれ実行装置１２０のプロセッサ３１０がＳＩＭＤ方式（構成）にデータを並列処理するために用いられるデータフォーマットであってもよい。
【００４３】
複数のデータフォーマットは、構造体の配列（Ａｒｒａｙ  ｏｆ  Ｓｔｒｕｃｔｕｒｅ；ＡｏＳ）フォーマット及び配列の構造体（Ｓｔｒｕｃｔｕｒｅ  ｏｆ  Ａｒｒａｙ；ＳｏＡ）フォーマットのうちの１つ以上を含む。ＡｏＳフォーマットは、ＡｏＳ方式（ＡｏＳ構成）で用いられるデータフォーマットであってもよい。ＳｏＡフォーマットは、ＳｏＡ方式（ＳｏＡ構成）で用いられるデータフォーマットであってもよい。ＡｏＳフォーマット及びＳｏＡフォーマットそれぞれに対して下記で図４及び図５を参照して詳細に説明する。
【００４４】
プロセッサ３１０によって用いられる複数のデータフォーマットはスカラー（ｓｃａｌａｒ）フォーマットをさらに含んでもよい。ここで、スカラーフォーマットは、プロセッサ３１０のＳＩＭＤアーキテクチャーのためのフォーマットを使用しないフォーマットである。ＳＩＭＤアーキテクチャーのためのフォーマットは、ＡｏＳフォーマット及びＳｏＡフォーマットなどを含む。
【００４５】
スカラーフォーマットは、ＡｏＳフォーマット、ＳｏＡフォーマット及びそれと類似するものを含む、ＳＩＭＤデータフォーマットの使用の利益がない場合に、または算出された時間または算出された電力を含むＳＩＭＤフォーマット使用の追加的な費用（追加的なリソース）がＳＩＭＤフォーマットの使用の利益よりも大きい場合、プロセッサ３１０によって選択される。すべてのデータまたはプログラム命令語がＳＩＭＤ命令語を用いるプロセシングに対して適したり有益を得られない場合があるため、スカラーフォーマットが用いられる。
【００４６】
複数のデータフォーマットそれぞれは、実行装置１２０のプロセッサ３１０によってサポートされるデータフォーマットであってもよい。実行装置１２０のプロセッサ３１０は、ＡｏＳフォーマット及びＳｏＡフォーマットなどを同時または選択的に処理するように設計される。また、プロセッサ３１０は、ＡｏＳフォーマット、ＳｏＡフォーマット及びそれと類似するものなどを含むＳＩＭＤフォーマット使用の利益がない場合、または、算出された時間または算出された電力を含むＳＩＭＤフォーマットの使用の追加的な費用（追加的なリソース）がＳＩＭＤフォーマットの使用の利益よりも大きい場合スカラーフォーマットを選択的に処理するように設計される。
【００４７】
選択されたデータフォーマットを示す情報は１つ以上のビットであってもよい。例えば、選択されたデータフォーマットを示す情報の値が２進値「００」である場合、選択されたデータフォーマットはスカラーフォーマットであってもよい。選択されたデータフォーマットを示す情報の値が２進値「０１」である場合、選択されたデータフォーマットはＡｏＳフォーマットであってもよい。選択されたデータフォーマットを示す情報の値が２進値「１０」である場合、選択されたデータフォーマットはＳｏＡフォーマットであってもよい。さらに、選択されたデータフォーマットを示す情報の値が２進値「１１」である場合、異なるＳＩＭＤフォーマットが選択されるように決定されてもよい。
【００４８】
図４は、一例に係るＡｏＳフォーマットを説明する。ＡｏＳ方式（ＡｏＳ構成）は３次元（Ｄｉｍｅｎｓｉｏｎａｌ；Ｄ）グラフィックス分野で用いられる。
【００４９】
ＡｏＳ方式は、グラフィックオブジェクトの位置またはカラーを１つの構造体にグルーピングしてもよく、前記構造体を同時に処理してもよい。ここで、グラフィックオブジェクトは、ピクセルまたはバーテックス（ｖｅｒｔｅｘ）であってもよい。位置の構成要素は、ｘ座標値、ｙ座標値、ｚ座標値及びｗ座標値であってもよい。カラーの構成要素は、赤（Ｒｅｄ；Ｒ）値、緑（Ｇｒｅｅｎ；Ｇ）値、青（Ｂｌｕｅ；Ｂ）値及びアルファ（Ａｌｐｈａ；Ａ）値であってもよい。
【００５０】
図４において、各行は実行される命令語に対応する。各列は行が示す命令語により実行装置１２０のプロセッサ３１０が処理するデータを示す。例えば、プロセッサ３１０がＳＩＭＤで一回に３２ビットのデータを処理できる場合、４個の行はそれぞれＳＩＭＤで処理される８ビットのデータを示す。
【００５１】
例えば、図４において、第１行の「ｘ１」、「ｙ１」、「ｚ１」及び「ｗ１」はそれぞれ第１命令語によって処理される第１ピクセルのｘ座標値、ｙ座標値、ｗ座標値及びｚ座標値を示す。以下、第２行の記号、第３行の記号及び第４行の記号はそれぞれ第２命令語、第３命令語及び第４命令語によって処理される座標値を示す。
【００５２】
ＡｏＳ方式が用いられる場合、プロセッサ３１０は１つのピクセルのｘ、ｙ、ｚ及びｗに対する演算を一回に処理してもよく、順次複数のピクセルそれぞれに対する演算を処理してもよい。ＡｏＳ方式は、単に１つの命令語をピクセルのすべての（または複数の）要素（例えば、ｘ、ｙ、ｚ及びｗ）に適用する利点を有する。ＡｏＳスキームが用いられるときの１つのＳＩＭＤ命令語に関連するピクセルの個数は、ＳｏＡ方式が用いられるときの命令語に関連するピクセルの数よりも少ない場合もある。
【００５３】
ＡｏＳ方式は、３Ｄグラフィックス上でデータを自然に処理する長所を有する。ＡｏＳ方式は３Ｄグラフィックスで、ピクセルの４Ｄ位置及びカラーを自然に表現することができる。しかし、ＡｏＳ方式は、３Ｄグラフィックスの演算過程ですべての構成要素が使用されない場合、低い効率を示す短所がある。ＡｏＳ方式は１つの命令語がピクセル４個の構成要素に同時に適用されなければ、実行装置１２０の効率が低下する。特に、数個のアプリケーションにおいて、ＡｏＳスキームでｗ−座標値は使用されないことがある。しかし、ＡｏＳフォーマットでコードを実行するためのＳＩＭＤ方式は、ｘ−値、ｙ−値、ｚ−値及びｗ−値を一回に処理するＳＩＭＤ構成であるため、ｗ−値に対するスロットは割り当てられなければならない。したがって、ｗ−値は数個のアプリケーションでダミー（ｄｕｍｍｙ）値であり、３Ｄグラフィックスの動作ですべての構成要素が使用されなくてもよい。
【００５４】
図５は、一例に係るＳｏＡフォーマットを説明する。ＳｏＡ方式（ＳｏＡ構成）は３Ｄグラフィックス分野で用いられる。
【００５５】
ＳｏＡ方式は、実行装置１２０のプロセッサ３１０によって処理されなければならないピクセルまたはバーテックスの構成要素を１つの構造体にグルーピングしてもよく、構造体を同時に処理してもよい。構成要素は位置の構成要素またはカラーの構成要素であってもよい。位置の構成要素はｘ、ｙ、ｚまたはｗであってもよい。カラーの構成要素はＲ、Ｇ、ＢまたはＡのうちの１つであってもよい。
【００５６】
図５において、各行は実行される命令語に対応する。各列は行が示す命令語により実行装置１２０のプロセッサ３１０が処理するデータを示す。例えば、プロセッサ３１０がＳＩＭＤで一回に３２ビットデータを処理する場合、４個の行はそれぞれＳＩＭＤで処理される８ビットのデータを示す。
【００５７】
例えば、図５において、第１行の「ｘ１」、「ｘ２」、「ｘ３」及び「ｘ４」はそれぞれ第１命令語によって処理される第１ピクセルのｘ座標値、第２ピクセルのｘ座標値、第３ピクセルのｘ座標値、及び第４ピクセルのｘ座標値を示す。第２行の記号は、第２命令語によって処理される第１ピクセルないし第４ピクセルのｙ座標値を示す。第３行の記号は、第３命令語によって処理される第１ピクセルないし第４ピクセルのｚ座標値を示す。第４行の記号は、第４命令語によって処理される第１ピクセルないし第４ピクセルのｗ座標値を示す。
【００５８】
ＳｏＡ方式は、プロセッサ３１０が複数のピクセルまたは複数のバーテックスに対して同じ命令語を行う場合、実行装置１２０の効率を最大向上させる長所を有し得る。１つのアレイに同じ演算が適用される場合、ＳｏＡ方式は並列命令語を用いて前記同じ演算を行うことにおいて極めて効率的である。ここで、アレイはピクセルなどのアレイであってもよい。例えば、ｗ−値を含まないアプリケーションで、ｗ−値のために割り当てられなければならないスロットはない。代わりに、ｘ−値の他のグループ、ｙ−値のためのグループ、またはｚ−値のためのグループがＳｏＡ方式を用いて並列処理される。しかし、ＳｏＡ方式は、実行コード内で条件文（ｃｏｎｄｉｔｉｏｎａｌ  ｓｔａｔｅｍｅｎｔ）による分岐が発生する場合、データ処理の制御が困難になり実行装置１２０の性能が低下するという短所がある。例えば、ＳｏＡ方式は、条件に応じてアレイの一部に適用される演算を行うことにおいて実行装置１２０の性能を低下させることがある。
【００５９】
図６及び図７は、一例に係るＡｏＳ方式及びＳｏＡ方式の性能を比較する。
【００６０】
図６及び図７において、実行装置１２０のプロセッサ３１０は１つの命令語を用いて最大１６個のデータを同時に処理する。図６及び図７は、それぞれＡｏＳ方式を用いてデータを処理する場合の演算流れ（ｏｐｅｒａｔｉｏｎ  ｆｌｏｗ）及びＳｏＡ方式を用いてデータを処理する場合の演算流れを示す。
【００６１】
図６は、一例に係るＡｏＳ方式の処理が実行された場合における性能を説明する。
【００６２】
ＡｏＳ方式が用いられる場合、プロセッサ３１０は４個のピクセルのｘ座標値、ｙ座標値、ｚ座標値及びｗ座標値を一回に処理する。しかし、図６で示すように、実際に処理されるデータがピクセルのｘ座標値、ｙ座標値及びｚ座標値である場合、命令語によって処理される１６個のデータのうち１２個のデータのみが有効なものである。
【００６３】
図６において、プロセッサ３１０は、３回の段階を介して１２個のピクセルのｘ座標値、ｙ座標値及びｚ座標値に対する演算を実行する。ここで、最初の４個のピクセルは第１ステージに対応し、中間の４個のピクセルは第２ステージに対応し、最後の４個のピクセルは第３ステージに対応する。さらに、図６において、３つの相異なるタイプのラインが示されている。図６において、ラインの各タイプは単一ＳＩＭＤ命令語のターゲットを示す。図６の例として、同じ命令語がすべてのｘ−座標に適用され、同じ命令語がすべてのｙ−座標に適用され、同じ命令語がすべてのｚ−座標に適用される。しかし、すべてのｘ−座標に適用される命令語はすべてのｙ−座標に適用される命令語と互いに異なってもよく、すべてのｙ−座標に適用される命令語はすべてのｚ−座標に適用される命令語と互いに異なってもよい。しかし、２つ以上の命令語は同じ命令語であってもよい。
【００６４】
図７は、一例に係るＳｏＡ方式の処理が実行された場合における性能を説明する。
【００６５】
ＳｏＡ方式が用いられる場合、プロセッサ３１０は最大１６個のピクセルのｘ座標値、ｙ座標値、ｚ座標値、またはｗ座標値を一回に処理する。しかし、図７に示すように、実際に処理されるデータが１２個のピクセルのｘ座標値、ｙ座標値またはｚ座標値である場合、命令語によって処理される１６個のデータのうち１２個のデータのみが有効なものである。
【００６６】
図７におけるプロセッサ３１０は、３回の段階にかけて１２個のピクセルのｘ座標値、ｙ座標値及びｚ座標値それぞれに対する演算を実行する。ここで、第１ステージはすべてのｘピクセルの実行であり、第２ステージはすべてのｙピクセルの実行であり、第３ステージはすべてのｚピクセルの実行である。図７において、３つの相異なるタイプのラインが示されている。図７におけるラインの各タイプは、１つのＳＩＭＤ命令語のターゲットを示す。図７の例として、同じ命令語がすべてのｘ−座標に適用され、同じ命令語がすべてのｙ−座標に適用され、同じ命令語がすべてのｚ−座標に適用される。しかし、すべてのｘ−座標に適用される命令語はすべてのｙ−座標に適用される命令語と互いに異なってもよく、すべてのｙ−座標に適用される命令語はすべてのｚ−座標に適用される命令語と互いに異なってもよい。しかし、２つ以上の命令語は同じ命令語であってもよい。
【００６７】
図８は、一例に係るコンパイル装置のプロセッサのブロック図である。
【００６８】
プロセッサ２１０は、ＳＩＭＤプロセッサに基づく実行装置１２０がＳＩＭＤを効率的に利用できるようにデータフォーマットを判別する。プロセッサ２１０は、その判別のために複数の分析部及び比較部８４０を備える。複数の分析部の一例として、第１分析部８１０、第２分析部８２０及び第３分析部８３０が示されている。しかし、実施形態は３つの分析部に制限されず、追加的な分析部がプロセッサ２１０に含まれてもよい。
【００６９】
複数の分析部は、複数のデータフォーマットそれぞれの性能を動的に予測することができる。複数の分析部それぞれは複数のデータフォーマットのうち１つのデータフォーマットの性能を予測する。ここで、データフォーマットの性能は前記データフォーマットを用いてデータを処理するバイナリコードが実行装置１２０で実行される場合に処理装置またはバイナリコードの性能であってもよい。
【００７０】
例えば、第１分析部８１０はスカラー分析部であってもよい。第１分析部８１０は、スカラー方式を用いるバイナリコードを処理することに対する処理性能（処理効率）を予測することによって実行装置１２０の性能を分析する。スカラー方式を用いるバイナリコードは実行装置１２０によって実行される。第２分析部８２０はＡｏＳ分析部であってもよい。第２分析部８２０は、ＡｏＳ方式を用いるバイナリコードを処理することに対する処理性能（処理効率）を予測することで実行装置１２０の性能を分析する。ＡｏＳ方式を用いるバイナリコードは実行装置１２０によって実行される。第３分析部８３０はＳｏＡ分析部であってもよい。第３分析部８３０は、ＳｏＡ方式を用いるバイナリコードを処理することに対する処理性能（処理効率）を予測することによって実行装置１２０の性能を分析する。ＳｏＡ方式を用いるバイナリコードは実行装置１２０によって実行される。
【００７１】
複数の分析部は、ソースコードを用いて各データフォーマットごとにバイナリコードを生成する。複数の分析部は、生成されたバイナリコードを用いることによって実行装置１２０の性能の分析し予測する。
【００７２】
前記性能の分析及び予測のためにバイナリコードそれぞれに対してコンパイルステップの分析方式が適用される。言い換えれば、複数の分析部それぞれは自身が複数のデータフォーマットのうち１つのデータフォーマットを適用して生成したバイナリコードにコンパイルステップの分析方式を適用することで、生成したバイナリコードの性能を分析または予測することができる。コンパイルステップの分析方式は、１）命令語使用率、及び２）条件分岐による追加的な費用（追加的なリソース）の１つ以上を含んでもよい。複数の分析部は性能を予測するために、代表的に用いられる命令語の使用率及び条件分岐による追加費用を用いる。追加的な費用は、追加的な算出された時間または算出された電力であってもよい。性能の予測に対して下記の図９及び図１０を参照して詳細に説明する。
【００７３】
比較部８４０は、複数の分析部によって分析または予測された複数のデータフォーマットそれぞれの性能に基づいて、複数のデータフォーマットのうち最高または最適の性能を提供するデータフォーマットをバイナリコードを実行する実行装置１２０、または実行装置１２０のプロセッサ３１０に適するデータフォーマットとして選択する。
【００７４】
複数の分析部は、バイナリコードを比較部８４０に提供する。比較部８４０は、バイナリコードのうち選択されたデータフォーマットに対応するバイナリコードを選択する。比較部８４０は選択されたバイナリコードを出力する。
【００７５】
選択的に、複数の分析部及び比較部８４０ではないコンパイル装置１１０のユーザが複数のデータフォーマットのうちバイナリコードを実行する実行装置１２０、またはプロセッサ３１０に適する１つのデータフォーマットを選択する。プロセッサ２１０は、ユーザによって選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成し、ユーザによって選択されたデータフォーマットを示す情報を生成する。ここで、ユーザは、ソースコードのプログラマーであってもよい。
【００７６】
複数の分析部、第１分析部８１０、第２分析部８２０、第３分析部８３０、及び比較部８４０それぞれはプロセッサ２１０で行われる関数、ライブラリー、サービス、プロセス、スレッド、またはモジュールを示す。
【００７７】
図９は、一例に係るグラフィック作業を処理するソースコードである。図９に示すソースコードをコンパイルしてバイナリコードを生成することにおいて、比較部８４０は命令語使用率を性能予測のために用いる。命令語使用率は、構成要素ごとに用いられたリソースの使用率を意味する。
【００７８】
ＧＰＵで頻繁に用いられるピクセルシェーダ（ｓｈａｄｅｒ）のように、４Ｄを示す構成要素のうち３Ｄに対応する構成要素のみが主に用いられる。ＡｏＳ方式が用いられる場合、図６に示すように全体の使用可能なリソースのうち７５％のリソースのみが用いられる。一方、ＳｏＡ方式が用いられる場合、全体の使用可能なリソースが１００％の全てが用いられる。したがって、図９に示すソースコードはＳｏＡ方式を用いることによって効率的に処理され得る。
【００７９】
図１０は、一例に係る条件分岐文を含むソースコードである。図１０に示すソースコードをコンパイルしてバイナリコードを生成することにおいて、比較部８４０は、ソースコード内の条件分岐による追加的な費用を性能予測するために用いる。
【００８０】
条件分岐文は、並列処理のために用いられる方式において最も難しい問題のうち１つである。特定の命令語が与えられた条件に応じて実行されるかの有無は、実行時間に決定され、命令語が実行されるかの有無は予め予測され難い。
【００８１】
実行有無の予測を通した性能向上のために多くの研究が行われてきた。比較部８４０は、従来における多様な研究結果を条件分岐による追加的な費用を算出するために用いる。
【００８２】
以下、単純な条件分岐を含む図１０に示すコードに対する追加的な費用算出の一例を説明する。
【００８３】
ＡｏＳ方式が用いられる場合、分岐によって一回のみ関数が実行される。ここで、実行される関数は「ｆｕｎｃ＿Ａ」または「ｆｕｎｃ＿Ｂ」であってもよい。
【００８４】
ＳｏＡ方式が用いられる場合、最悪の場合に関数「ｆｕｎｃ＿Ａ」及び「ｆｕｎｃ＿Ｂ」のすべてが実行される。ＳｏＡ方式に対応する分析部は、関数それぞれで要求されるリソースを分析する。この分析に基づいて、ＳｏＡ方式に対応する分析部は、関数すべてが実行されたときの命令語使用率及び１つの関数のみが実行されたときの命令語使用率それぞれに対して適する確率関数を代入することによって追加的な費用を算出することができる。ここで、ＳｏＡ方式に対応する分析部は、複数の分析部のうちＳｏＡフォーマットを用いるバイナリコードの性能を予測する分析部である。
【００８５】
複数の分析部は、それぞれ対応するデータフォーマットを用いるバイナリコードの条件分岐による追加的な費用を算出する。比較部８４０は、複数のデータフォーマットの追加的な費用を比較することによって、バイナリコードを実行するプロセッサ３１０に適するデータフォーマットを選択する。
【００８６】
図１１は、一例に係る実行装置のプロセッサのブロック図である。
【００８７】
実行装置１２０のプロセッサ３１０は動的ＳＩＭＤアーキテクチャーのプロセッサである。プロセッサ３１０は、命令語パッチ部１１１０、データロード部１１２０及びデータ格納部１１３０を備える。バイナリコードは、命令語パッチ部１１１０に提供され、選択されたデータフォーマットを示す情報はデータロード部１１２０及びデータ格納部１１３０に提供される。
【００８８】
プロセッサ３１０は、従来におけるＳＩＭＤプロセッサに選択されたデータフォーマットに基づいてデータのロード及び格納を動的に制御する機能を追加したプロセッサであってもよい。動的制御は、プロセッサにより命令語レベルのロード及び／または格納のフォーマットを変換する方式により提供される。また、動的制御は、関連するハードウェアインターフェースまたは関数インターフェース部分でフォーマットを変換して格納する方式により提供される。
【００８９】
プロセッサ３１０は、算術演算に対して選択されたデータフォーマットと関係なく、同じ方式で命令語を処理する。ここで、算術演算は「たし算（Ａｄｄ）」または「乗算（Ｍｕｌ）」などであってもよい。
【００９０】
プロセッサ３１０は、ロード演算及び格納演算に対して選択されたデータフォーマットに応じて処理方法を提供する。図４及び図５に示すように、ＡｏＳフォーマット及びＳｏＡフォーマット間の関係は前置行列の変換に対応する。すなわち、前置できるようにロード命令語及び格納命令語が設計され得る。プロセッサ３１０は、選択されたデータフォーマットにより動的に演算に要求されるデータが備えられることをサポートする。また、プロセッサ３１０は、処理しようとするアルゴリズムの特性に応じて処理するデータの入力フォーマット及び結果フォーマットを変換する。例えば、プロセッサ３１０がＣＰＵである場合、プロセッサ３１０で行われる入力及び／または出力が決定されないことがある。入力及び／または出力が決定されない場合、ロード及び／または格納命令語レベルでのフォーマット変換が提供されてもよく、演算が行われるときにデータフォーマットにより演算が行われてもよい。一方、プロセッサ３１０がＧＰＵである場合、プロセッサ３１０によって行われる入力及び／または出力が確定されてもよい。入力及び／または出力が確定された場合、プロセッサ３１０は、シェーダが入力されたデータに対する処理を行う前に入力されたデータのデータフォーマットを変換することによって処理されるデータを備える。また、プロセッサ３１０は、内部的な算術演算に対しては従来の命令語をそのまま用いることによって処理する。
【００９１】
命令語パッチ部１１１０は、バイナリコードから命令語をパッチする。データロード部１１２０は、選択されたデータフォーマットに基づいてデータをロードする。例えば、データのロードは、プロセッサ３１０のレジスタ（ｒｅｇｉｓｔｅｒ）のうち被演算子（ｏｒｅｒａｎｄ）の部分にデータを充填する。レジスタの被演算子の部分は複数であってもよい。レジスタはアキュムレータ（ａｃｃｕｍｕｌａｔｏｒ）であってもよい。被演算子の部分はビットで構成されてもよい。
【００９２】
データがロードされた後、プロセッサ３１０はロードされたデータにパッチされた命令語が示す演算を適用することによってロードされたデータを処理する。例えば、プロセッサ３１０は、ロードされたデータにパッチされた命令語が示す演算を適用することによって、演算の適用された更新されたデータをレジスタまたはアキュムレータ内に格納する。更新されたデータが格納されたレジスタまたはアキュムレータは、データがロードされたレジスタまたはアキュムレータと同一であってもよく、互いに異なってもよい。
【００９３】
データ格納部１１３０は、処理されたデータを選択されたデータフォーマットに基づいて格納する。ここで、処理されたデータの格納は、レジスタまたはアキュムレータ内のデータをメモリ内に格納する。
【００９４】
図１２は、一実施形態に係るバイナリコード処理方法のフローチャートである。ステップＳ１２１０において、コンパイル装置１１０のプロセッサ２１０は格納部２２０からソースコードを読み出す。
【００９５】
ステップＳ１２２０において、プロセッサ２１０は、複数のデータフォーマットのうちバイナリコードを実行する実行装置１２０のプロセッサ３１０に適するデータフォーマットを選択する。ステップＳ１２２０は、ステップＳ１２２２及びステップＳ１２２４を含んでもよい。ステップＳ１２２２において、プロセッサ２１０の複数の分析部は、複数のデータフォーマットそれぞれの性能を予測する。
【００９６】
ステップＳ１２２４において、比較部８４０は、予測された複数のデータフォーマットそれぞれの性能に基づいて複数のデータフォーマットのうち最高の性能を提供するデータフォーマットを、バイナリコードを実行する実行装置１２０のプロセッサ３１０に適するデータフォーマットとして決定する。
【００９７】
複数のデータフォーマットは、実行装置１２０のプロセッサ３１０がＳＩＭＤ方式でデータを並列処理するために用いられるデータフォーマットであってもよい。しかし、もし、ＳＩＭＤ方式で用いられるデータフォーマットの使用において利益がなければ、スカラーフォーマットがデータを処理するために使用されてもよい。実行装置１２０の送受信部３２０は、プロセッサ３１０が処理できる複数のデータフォーマットを示す情報をコンパイル装置１１０の送受信部２３０に送信してもよい（図示せず）。
【００９８】
ステップＳ１２３０において、プロセッサ２１０は、選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成する。ステップＳ１２４０において、プロセッサ２１０は、選択されたフォーマットを示す情報を生成する。
【００９９】
ステップＳ１２５０において、コンパイル装置１１０の送受信部２３０は、バイナリコードを実行装置１２０の送受信部３２０に送信する。ステップＳ１２５５において、コンパイル装置１１０の送受信部２３０は、選択されたデータフォーマットを示す情報を実行装置１２０の送受信部３２０に送信する。ステップＳ１２５０及びステップＳ１２５５は同時に行われてもよい。
【０１００】
ステップＳ１２６０において、実行装置１２０のプロセッサ３１０は、バイナリコードを実行する。ステップＳ１２６０は、ステップＳ１２６２、ステップＳ１２６４及びステップＳ１２６６を含んでもよい。
【０１０１】
ステップＳ１２６２において、実行装置１２０のデータロード部１１２０は、選択されたデータフォーマットに基づいてデータをロードする。
【０１０２】
ステップＳ１２６４において、実行装置１２０のプロセッサ３１０は、ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理する。
【０１０３】
ステップＳ１２６６において、実行装置１２０のデータ格納部１１３０は、処理されたデータを選択されたデータフォーマットに基づいて格納する。
【０１０４】
前述されたステップＳ１２１０、Ｓ１２２０、Ｓ１２２２、Ｓ１２２４、Ｓ１２３０、Ｓ１２４０、Ｓ１２５０、Ｓ１２５５、Ｓ１２６０、Ｓ１２６２、Ｓ１２６４及びＳ１２６６のうちの１つ以上のステップは示されたものと異なる順に実行されてもよく、並列に実行されてもよい。
【０１０５】
実施形態は、ＳＩＭＤプロセッサに基づいた演算を行う装置及びシステムで応用することができる。応用の一例として、オープンＧＬ（ＯｐｅｎＧＬ）、オープンＧＬ｜ＥＳ（ＯｐｅｎＧＬ｜ＥＳ）などのようなレンダリングシステム（ｒｅｎｄｅｒｉｎｇ  ｓｙｓｔｅｍ）があり、オープンＣＬ（ＯｐｅｎＣＬ）及びＣＵＤＡなどのような並列コンピュータシステムがある。
【０１０６】
実施形態によると、データフォーマットに対する作業がコンパイル装置によって自動処理されることで、プログラマーに便利な開発環境が開発されることができ、実行装置１２０のプロセッサ３１０の効率が向上される。
【０１０７】
また、実施形態は、ＯｐｅｎＧＬ及びＯｐｅｎＧＬ｜ＥＳなどのようなプログラマーによるデータフォーマットの変換ができない標準言語についても内部的なデータフォーマットの変換を提供することによって実行装置１２０のプロセッサ３１０の効率を向上させることができる。
【０１０８】
また、プロセッサ３１０の効率が向上することで処理時間が短縮され、使用電力も減少し得る。
【０１０９】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータ読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち１つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、光ディスクのような光磁気媒体、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。
【０１１０】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【０１１１】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【０１１２】
１１０：コンパイル装置
１２０：実行装置
【図１】
2014038624.tif 000003
【図２】
2014038624.tif 000004
【図３】
2014038624.tif 000005
【図４】
2014038624.tif 000006
【図５】
2014038624.tif 000007
【図６】
2014038624.tif 000008
【図７】
2014038624.tif 000009
【図８】
2014038624.tif 000010
【図９】
2014038624.tif 000011
【図１０】
2014038624.tif 000012
【図１１】
2014038624.tif 000013
【図１２】
2014038624.tif 000014