(57)【要約】  本発明はＣＰＵソースコードとＧＰＵ ソースコードを含むアプリケーションのコンパイル及び実行装置に関するものである。上記装置はＣＰＵとＧＰＵを含むハードウェア、上記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成するコンパイラー及び上記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(ＴｒａｎＳｌａｔｉｏｎ)して実行するハイブリッド仮想化ブロックを含むことを特徴とする。
2013543616.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとＧＰＵを使用するシステムで、アプリケーションのコンパイル及び実行方法において、 
ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーションに対するコンパイル遂行要請を受信する段階;
前記アプリケーションのコンパイルの時、 前記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成する段階;及び
前記実行ファイルに対する実行要請受信の時、 前記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(Ｔｒａｎｓｌａｔｉｏｎ)して実行する段階を含むことを特徴とするアプリケーションのコンパイル及び実行方法。
【請求項２】
前記コンパイル段階は、
前記ＣＰＵソースコードをＣＰＵ機械語にコンパイルし、前記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルする段階;及び
前記ＣＰＵ機械語と前記ＧＰＵ仮想命令語を含む実行ファイルを生成する段階をさらに含むことを特徴とする、請求項１に記載のアプリケーションのコンパイル及び実行方法。
【請求項３】
前記実行ファイル生成段階は、
少なくとも１つのＣＰＵ機械語と、前記ＧＰＵ仮想命令語を含む少なくとも１つの仮想セクションを含む前記実行ファイルを生成することを特徴とする、請求項２に記載のアプリケーションのコンパイル及び実行方法。
【請求項４】
前記仮想セクションは、
前記仮想セクションを識別するウォーターマークを含む仮想セクションヘッダーと、ＣＰＵ機械語と、前記ＧＰＵ仮想命令語を含むことを特徴とする、請求項３に記載のアプリケーションのコンパイル及び実行方法。
【請求項５】
前記実行段階は、
前記システムのオペレーティングシステム(、ＯＳ)が前記実行ファイルを実行する段階;
前記オペレーティングシステムが例外(ｅｘｃｅｐｔｉｏｎ)発生感知の時、 前記システム制御権をハイブリッド仮想化ブロックに伝達する段階;
前記ハイブリッド仮想化ブロックが前記仮想化セクション識別の時、前記ＧＰＵ仮想命令語を前記ＧＰＵ機械語に変換し、前記システム制御権を上記オペレーティングシステムに伝達する段階;及び
前記オペレーティングシステムが上記変換されたＧＰＵ機械語を上記ＧＰＵを通して実行する段階をさらに含むことを特徴とする、請求項３に記載のアプリケーションのコンパイル及び実行方法。
【請求項６】
前記ハイブリッド仮想化ブロックはアプリケーション階層とハードウェア階層の間に位置する仮想化階層に位置することを特徴とする、請求項５に記載のアプリケーションのコンパイル及び実行方法。
【請求項７】
前記実行段階は、
前記システムのオペレーティングシステム(ＯＳ)が前記実行ファイルを実行する段階;
前記オペレーティングシステムが例外(ｅｘｃｅｐｔｉｏｎ) 発生感知の時、前記仮想化セクションを識別する段階;
前記仮想化セクション識別の時、前記ＧＰＵ仮想命令語を前記ＧＰＵ機械語に変換し、前記変換されたＧＰＵ機械語を上記ＧＰＵを通して実行する段階をさらに含むことを特徴とする、請求項３に記載のアプリケーションのコンパイル及び実行方法。
【請求項８】
前記実行段階以後に、
前記変換されたＧＰＵ機械語を前記実行ファイル内部に位置させる段階;及び
前記ＧＰＵ仮想命令語実行の時、前記実行ファイル内部に位置する変換されたＧＰＵ機械語を実行する段階をさらに含むことを特徴とする、請求項１に記載のアプリケーションのコンパイル及び実行方法。
【請求項９】
前記ＧＰＵ仮想命令語と前記ＧＰＵ機械語は、共に機械語レベル(Ｍａｃｈｉｎｅ Ｃｏｄｅ Ｌｅｖｅｌ)であることを特徴とする、請求項１に記載のアプリケーションのコンパイル及び実行方法。
【請求項１０】
ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーションのコンパイル及び実行装置において、
ＣＰＵとＧＰＵを含むハードウェア;
前記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成するコンパイラー;及び
前記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(Ｔｒａｎｓｌａｔｉｏｎ)して実行するハイブリッド仮想化ブロックを含むことを特徴とする、 アプリケーションのコンパイル及び実行装置。
【請求項１１】
前記ハイブリッド仮想化ブロックはアプリケーション階層とハードウェア階層の間に位置することを特徴とする、請求項１０に記載のアプリケーションのコンパイル及び実行装置。
【請求項１２】
前記コンパイラーは、
前記ＣＰＵソースコードをＣＰＵ機械語にコンパイルして前記ＧＰＵソースコードを ＧＰＵ仮想命令語にコンパイルし、前記ＣＰＵ機械語と前記ＧＰＵ仮想命令語を含む実行ファイルを生成することを特徴とする、請求項１０に記載のアプリケーションのコンパイル及び実行装置。
【請求項１３】
前記コンパイラーは、
少なくとも１つのＣＰＵ機械語と、前記ＧＰＵ仮想命令語を含む少なくとも１つの仮想セクションを含む上記実行ファイルを生成することを特徴とする、請求項１２に記載のアプリケーションのコンパイル及び実行装置。
【請求項１４】
前記仮想セクションは、
前記仮想セクションを識別するウォーターマークを含む仮想セクションヘッダーと、 ＣＰＵ機械語と、前記ＧＰＵ仮想命令語を含むことを特徴とする、請求項１３に記載のアプリケーションのコンパイル及び実行装置。
【請求項１５】
前記実行ファイルを実行し、例外(ｅｘｃｅｐｔｉｏｎ)発生感知の時、前記システム制御権を上記ハイブリッド仮想化ブロックに伝達するオペレーティングシステム(ＯＳ)をさらに含むことを特徴とする、請求項１３に記載のアプリケーションのコンパイル及び実行装置。
【請求項１６】
前記ハイブリッド仮想化ブロックは、
前記仮想化セクション識別の時、 前記ＧＰＵ仮想命令語を前記ＧＰＵ機械語に変換し、 前記システム制御権を上記オペレーティングシステムに伝達することを特徴とする、請求項１５に記載のアプリケーションのコンパイル及び実行装置。
【請求項１７】
前記オペレーティングシステムは、
前記変換されたＧＰＵ機械語を前記実行ファイル内部に位置させ、前記ＧＰＵ仮想命令語実行の時、前記実行ファイル内部に位置する変換されたＧＰＵ機械語を実行することを特徴とする、請求項１５に記載のアプリケーションのコンパイル及び実行装置。
【請求項１８】
前記ＧＰＵ仮想命令語と前記ＧＰＵ機械語は共に機械語レベル(Ｍａｃｈｉｎｅ Ｃｏｄｅ Ｌｅｖｅｌ)であることを特徴とする、請求項１０に記載のアプリケーションのコンパイル及び実行装置。
【請求項１９】
ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーションのコンパイル及び実行装置において、
ＣＰＵとＧＰＵを含むハードウェア;
前記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成するコンパイラー;及び
前記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(ＴｒａｎＳｌａｔｉｏｎ)して実行するオペレーティングシステム(ＯＳ)を含むことを特徴とするアプリケーションのコンパイル及び実行装置。
【請求項２０】
前記コンパイラーは、
前記ＣＰＵ ソースコードをＣＰＵ機械語にコンパイルして前記ＧＰＵソースコードを ＧＰＵ仮想命令語にコンパイルし、前記ＣＰＵ機械語と前記ＧＰＵ仮想命令語を含む実行ファイルを生成することを特徴とする、請求項１９に記載のアプリケーションのコンパイル及び実行装置。
【請求項２１】
前記コンパイラーは、
少なくとも１つのＣＰＵ機械語と、前記ＧＰＵ仮想命令語を含む少なくとも１つの仮想セクションを含む上記実行ファイルを生成することを特徴とする、 請求項２０に記載のアプリケーションのコンパイル及び実行装置。
【請求項２２】
前記仮想セクションは、
前記仮想セクションを識別するウォーターマークを含む仮想セクションヘッダーと、 ＣＰＵ機械語と、前記ＧＰＵ仮想命令語を含むことを特徴とする、 請求項２１に記載のアプリケーションのコンパイル及び実行装置。
【請求項２３】
前記オペレーティングシステムは、
前記ＧＰＵ仮想命令語を前記ＧＰＵ機械語に変換することを特徴とする、 請求項２２に記載のアプリケーションのコンパイル及び実行装置。
【請求項２４】
前記オペレーティングシステムは、
前記変換されたＧＰＵ機械語を前記実行ファイル内部に位置させ、前記ＧＰＵ仮想命令語実行の時、前記実行ファイル内部に位置する変換されたＧＰＵ機械語を実行することを特徴とする、請求項２３に記載のアプリケーションのコンパイル及び実行装置。
【請求項２５】
前記ＧＰＵ仮想命令語と前記ＧＰＵ機械語は共に機械語レベル(Ｍａｃｈｉｎｅ Ｃｏｄｅ Ｌｅｖｅｌ)であることを特徴とする、 請求項１９に記載のアプリケーションのコンパイル及び実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)とＧＰＵ(Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)を融合して使用する異種システムにおいて仮想化(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ)を用いたアプリケーションのコンパイル及び実行方法、及び装置に関するものである。より具体的に本発明はアプリケーションに含まれたソースコードコンパイルの時、上記ソースコードに含まれたＧＰＵ(Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)ソースコードをＧＰＵ仮想命令語(ｉｎｓｔｒｕｃｔｉｏｎ)にコンパイルし、実行ファイル実行の時、上記コンパイルされたＧＰＵ仮想命令語をＧＰＵ機械語(ＧＰＵ  Ｍａｃｈｉｎｅ Ｃｏｄｅ)に直接変換するアプリケーションのコンパイル及び実行に対する方法、及び装置に関するものである。
【背景技術】
【０００２】
最近仮想化(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ)技法を使用して異機種のオペレーティングシステム(Ｏｐｅｒａｔｉｎｇ ｓｙｓｔｅｍ、 ＯＳ)を１つのシステムで動作させたり保安ソフトウェアと非保安ソフトウェアを区分してシステムクラッキングに対する保安機能を付加する方法が提案されている。
【０００３】
これに関連してグラフィック処理装置(Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、ＧＰＵ)がコンピューター使用者の日常に変化をもたらしている。ＧＰＵはグラフィック演算を遂行する装置として映像コンテンツ利用量が少なかった過去にはコンピューター核心部品である中央処理装置(ＣＰＵ)の過負荷を防止する補助部品程度に認識された。
【０００４】
しかし、最近には高解像度(ＨＤ)映画やゲーム、３Ｄ映像物等の需要が高くなりながら ＧＰＵの重要性が大きくなっている。また、ＧＰＵはグラフィック処理のみならずＣＰＵの代わりを高用量演算を担当する装置としても脚光を浴びている。
【０００５】
このようにＧＰＵが重要な役目を遂行しながらより效率的にＧＰＵを活用する方法に対する論議が必要な実情である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記のような必要性を満足させるために案出されたものとして、ＣＰＵとＧＰＵを融合して使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置を提供することを目的とする。
【０００７】
より具体的に本発明はアプリケーションに含まれたソースコードコンパイルの時、上記ソースコードに含まれたＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルし、 実行ファイル実行の時、 上記コンパイルされたＧＰＵ仮想命令語をＧＰＵ機械語に直接変換して ＣＰＵとＧＰＵを效率的に使用することができる方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記のような問題点を解決するための本発明のＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)とＧＰＵ(Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)を使用するシステムでアプリケーションのコンパイル及び実行方法は、ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーションに対するコンパイル遂行要請を受信する段階、 上記アプリケーションのコンパイルの時、上記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成する段階及び上記実行ファイルに対する実行要請受信の時、上記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(Ｔｒａｎｓｌａｔｉｏｎ)して実行する段階を含むことを特徴とする。
【０００９】
また、上記のような問題点を解決するための本発明のアプリケーションのコンパイル及び実行装置はＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)とＧＰＵ(Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)を含むハードウェア、ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーション、 上記アプリケーションに対するコンパイル遂行要請受信の時、 上記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成するコンパイラー、及びアプリケーション階層とハードウェア階層の間に位置し、 上記実行ファイルに対する実行要請受信の時、上記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(Ｔｒａｎｓｌａｔｉｏｎ)して実行するハイブリッド仮想化ブロックを含むことを特徴とする。
【００１０】
また、本発明の他の実施例によるアプリケーションのコンパイル及び実行装置はＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)とＧＰＵ(Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)を含むハードウェア、 ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーション、上記アプリケーションに対するコンパイル遂行要請受信の時、上記ＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルして実行ファイルを生成するコンパイラー及び上記実行ファイルに対する実行要請受信の時、上記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(ＴｒａｎＳｌａｔｉｏｎ)して実行するオペレーティングシステム(Ｏｐｅｒａｔｉｎｇ ＳｙＳｔｅｍ、ＯＳ)を含むことを特徴とする。
【００１１】
本発明によれば、 アプリケーションに含まれたソースコードコンパイルの時、上記ソースコードに含まれたＧＰＵソースコードをＧＰＵ仮想命令語にコンパイルし、 実行ファイル実行の時、上記コンパイルされたＧＰＵ仮想命令語をＧＰＵ機械語に直接変換(Ｔｒａｎｓｌａｔｉｏｎ)する。これによってＣＰＵとＧＰＵを同時に效率的に使用することができ、 ＧＰＵ使用のためのリアルタイムコンパイル方式の問題点を補ってＧＰＵ実行效率を向上させることができる。また、本発明によれば、ＧＰＵソースコードが外部で露出されないので保安性が向上された。そして本発明で提案するＧＰＵ仮想命令語はハードウェアに中立的な命令語としてＧＰＵハードウェアを製造する製造社にかかわらず独立的に動作することができる。
【図面の簡単な説明】
【００１２】
【図１】システムプログラム(ＯＳ)でライブラリを提供してＧＰＵを使用する方法に対するシステム構造を示す図面である。
【図２】ＧＰＵを使用するコードを応用プログラムに含ませてプログラム実行時間(ｒｕ  ｎｔｉｍｅ)にＧＰＵで実行する方法を使用するシステム構造を示す図面である。
【図３】「ＯｐｅｎＣＬ」の応用プログラム実行過程を示すフローチャートである。
【図４】「ＯｐｅｎＣＬ」方式を適用したコード例題を示す図面である。
【図５】「ＯｐｅｎＣＬ」過程を遂行することができる実行ファイル(Ｂｉｎａｒｙ Ｉｍａｇｅ)構造を示す図面である。
【図６】「ＯｐｅｎＣＬ」と本発明によるアプリケーションの実行方法の差異点を比較する図面である。
【図７】本発明の実施例によってＣＰＵとＧＰＵを使用する異種コンピュータシステム構造を示す図面である。
【図８】本発明の実施例によるハイブリッド実行ファイル(Ｈｙｂｒｉｄ Ｂｉｎａｒｙ   Ｉｍａｇｅ)の構造を示す図面である。
【図９】本発明の実施例による、アプリケーションのコンパイル過程を示すフローチャートである。
【図１０】本発明の実施例によって、仮想化階層(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ Ｌａｙｅｒ)のハイブリッド仮想化ブロック７３０がハイブリッド実行ファイルを実行する過程を示すフローチャートである。
【図１１】ＧＰＵ機械語が挿入されたハイブリッド実行ファイルの構造を示す図面である。
【図１２】本発明の実施例によってさらにシステムＯＳがハイブリッド実行ファイルを実行する過程を示すフローチャートである。
【図１３】本発明の第１実施例によるシステム構造を示す図面である。
【図１４】本発明の第２実施例によるシステム構造を示す図面である。
【図１５】本発明の第２実施例によるシステム構造を示す図面である
【発明を実施するための形態】
【００１３】
以下で述べるアプリケーションとは、コンパイルされる以前の原始コード又はソースコード(Ｓｏｕｒｃｅ Ｃｏｄｅ)を含む応用プログラムを意味する。この場合、上記ソースコードはＣＰＵ演算を実行させるためのＣＰＵソースコード又はＧＰＵ演算を実行させるためのＧＰＵソースコードを含むことができる。
【００１４】
また、本発明の実行ファイルとは、コンパイラー(Ｃｏｍｐｉｌｅｒ)によって上記アプリケーションがコンパイルされ生成されたファイルを意味する。
【００１５】
以下、添付された図面を参照して本発明の好ましい実施例を詳しく説明する。この時、 添付された図面で同一の構成要素はできるだけ同一の番号を付けることに留意すべきである。なお、本発明の要旨を濁すことができる公知機能及び構成に対する詳細な説明は省略であろう。
【００１６】
アプリケーション(又は、応用プログラム)でＧＰＵを使用する方法には２つの方法が存在することができる。まず、第１の方法はＯＳのようなシステムプログラムでライブラリを提供し、上記ライブラリをアプリケーションが呼出して使用する方法である。そして第２の方法はＧＰＵを使用するためのコードをアプリケーションに含ませてプログラム実行時間(ｒｕｎｔｉｍｅ)にＧＰＵで直接実行する方法である。
【００１７】
図１は、システムプログラム(ＯＳ)でライブラリを提供してＧＰＵを使用する方法に対するシステム構造を示す図面である。
【００１８】
図１によるシステムは大きく、実際応用プログラムを含むアプリケーション階層(Ａｐｐｌｉｃａｔｉｏｎ Ｌａｙｅｒ)、 ＣＰＵ又はＧＰＵのような物理的なプロセッシングユニットを含むハードウェア階層(Ｈａｒｄｗａｒｅ Ｌａｙｅｒ)、上記アプリケーション階層とハードウェア階層の間に位置するミドルウェア階層(Ｍｉｄｄｌｅｗａｒｅ Ｌａｙｅｒ)、及びオペレーティングシステム(Ｏｐｅｒａｔｉｎｇ ｓｙｓｔｅｍ、 ＯＳ)に区分されることができる。このようなシステムによればＯＳでＧＰＵライブラリを提供し、アプリケーションが上記ＧＰＵライブラリを直接呼出して当該の機能を遂行する。
【００１９】
上記図１と同様の方法を遂行する代表的なシステムとして「ＯｐｅｎＧＬ」を例示することができる。「ＯｐｅｎＧＬ」は応用プログラムが３Ｄグラフィックを使用するためにＯｐｅｎＧＬ ＡＰＩ(Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ、関数)を呼出する方式でＧＰＵを使用する。 ＯｐｅｎＧＬ ＡＰＩは標準に指定されており、応用プログラムはこの標準によって開発される。代表的な例はＯｐｅｎＧＬを用いたゲームプログラムを挙げることができる。しかし、このような方式は標準で提供された機能だけ使用することができるという短所がある。
【００２０】
例えば、顔面認識演算のためにＧＰＵを使用しようとすれば顔面認識に対するＡＰＩが標準に指定されており、 これが当該のシステムにライブラリに具現されていなければならない。もし、顔認識演算のためのライブラリが具現されていない場合、プログラム開発者はこのような演算を遂行することができないという問題点がある。
【００２１】
一方、 図２はＧＰＵを使用するコードを応用プログラムに含ませてプログラム実行時間(ｒｕｎｔｉｍｅ)にＧＰＵで実行する方法を使用するシステム構造を示す図面である。
【００２２】
同様に図２によるシステムは大きく、実際応用プログラムを含むアプリケーション階層、 ＣＰＵ又はＧＰＵのような物理的なプロセッシングユニットを含むハードウェア階層、 上記アプリケーション階層とハードウェア階層の間に位置するミドルウェア階層、 システムを運営するオペレーティングシステムに区分されることができる。ただ、 図２のシステムと図１のシステムとの相異点はＧＰＵを動作させるためのＧＰＵコードがアプリケーションに直接挿入されるということである。
【００２３】
上記図２と同様の方法を使用する代表的なシステムとして「ＯｐｅｎＧＬ」を挙げることができる。「ＯｐｅｎＧＬ」に対する具体的な説明は下記の図３を参考して説明する。
【００２４】
図３は「ＯｐｅｎＧＬ」の応用プログラム実行過程を示すフローチャートである。
【００２５】
図３に示すように、応用プログラム、すなわちアプリケーションがＳ３０５段階で実行される。ここで実行とはアプリケーションがコンパイル(Ｃｏｍｐｉｌｅ)されて生成された実行ファイルを実行(ｒｕｎ)する意味として使用されることができる。
【００２６】
アプリケーション実行後、Ｓ３１０段階で実行ファイルにあるＣＰＵ機械語(ＣＰＵ Ｍａｃｈｉｎｅ Ｃｏｄｅ)が実行される。そして実行ファイルの実行が進行されながら、ＧＰＵを使用すべき場合はＳ３１５段階のように、明示的にＧＰＵを使用するためのソースコード(Ｓｏｕｒｃｅ Ｃｏｄｅ)レベルのコードをコンパイルするようになる。そしてＳ３２０段階で、上記コンパイル結果、生成されたＧＰＵ機械語(Ｍａｃｈｉｎｅ Ｃｏｄｅ)を実行する。そしてＧＰＵ機械語の実行が完了されればＳ３２５段階で、さらにＣＰＵ機械語実行を遂行する。
【００２７】
一方、Ｓ３１５段階に示すようにＧＰＵソースコードは実行時間(ｒｕｎｔｉｍｅ)にコンパイルするようになり、具体的な過程は図３の右側に示すフローチャートのようである。
【００２８】
すなわち、Ｓ３３０段階でＧＰＵソースコードコンパイルが開示されれば、Ｓ３３５段階の語彙分析段階(ｌｅｘｉｃａｌ-ｓｙｎｔａｘ ａｎａｌｙｓｉｓ)、Ｓ３４０段階の先処理段階(ＰｒｅｐｒｏｃｅＳｓｉｎｇ)、Ｓ３４５段階の構文分析段階(Ｓｙｎｔａｘ Ａｎａｌｙｓｉｓ)、Ｓ３５０段階の分析段階(Ａｎａｌｙｓｉｓ)、 Ｓ３５５段階の最適化段階(Ｏｐｔｉｍｉｚａｔｉｏｎ)、Ｓ３６０段階のコード生成段階(Ｃｏｄｅ Ｇｅｎｅｒａｔｉｏｎ)を経て Ｓ３６５段階でＧＰＵ機械語が生成される。
【００２９】
上記方法の長所はＧＰＵ種類(製造社等)に構わずに、すべてのＧＰＵに対して当該のＧＰＵソースコードを実行することができるということである。すなわち、この場合には共通的なＧＰＵソースコードを配布して実行時間(ｒｕｎｔｉｍｅ)にコンパイルされて特定 ＧＰＵ機械語で動作するようになる。
【００３０】
以下では「ＯｐｅｎＧＬ」方式を適用したコード例題を通じて「ＯｐｅｎＧＬ」を説明する。
【００３１】
図４は「ＯｐｅｎＧＬ」方式を適用したコード例題を示す図面である。
【００３２】
上記図４に示すアプリケーションはＣＰＵとＧＰＵで動作するためのコードを同時に有するようになる。この場合、「ｍａｉｎ」で表示されるコードが一般的にＣＰＵで動作するコードであり、「ＫｅｒｎｅｌＳｏｕｒｃｅ」に表示されるコードがＧＰＵで動作するコードである。
【００３３】
図４に示すコードをコンパイルするようになるとＣＰＵコード部分は機械語(Ｍａｃｈｉｎｅ Ｃｏｄｅ)に変換される。しかし、ＧＰＵコード部分はコンパイルされなくそのまま実行ファイルに文字列に挿入されたり外部ソースファイルに貯蔵される。上記のように、ＧＰＵソースコードは当該の応用プログラムが実行される際、コンパイルされ実行される。
【００３４】
このように、「ＯｐｅｎＧＬ」過程を遂行することができる実行ファイル(Ｂｉｎａｒｙ Ｉｍａｇｅ)構造が図５に示す。
【００３５】
図２のシステム、すなわちＧＰＵを使用するコードを応用プログラムに含ませてプログラム実行時間(ｒｕｎｔｉｍｅ)にＧＰＵで実行するシステムで使用する実行ファイルはヘッダーのようなメタデータ(図示せず)、ＣＰＵ機械語及びＧＰＵソースコードを含む。この場合、上記ＧＰＵソースコードは実行ファイルのデータ領域に挿入５１０されたり、又は実行ファイルと独立的な外部スクリプトソースファイル形式で参照５２０されることができる。
【００３６】
上記では応用プログラムでＧＰＵを使用する２つの方法に対して説明した。
【００３７】
ところが、最近ＧＰＵ機能が重要な役目を遂行することによって標準化されたＡＰＩだけ使用してＧＰＵを使用する上記の第１方法から脱して自由にＧＰＵを使用する方法に対する重要性が浮き彫りにされている 。これによって、本発明ではアプリケーションがＧＰＵを活用する方法に対して提案しようとする。
【００３８】
より具体的に説明すれば、「ＯｐｅｎＧＬ」のような技術の問題点は実行時間(ｒｕｎｔｉｍｅ)にＧＰＵソースコードに対するコンパイルを遂行するから、実行速度が顕著に落ちるということである。コンパイル作業は中間過程が多くて複雑で計算パワー(Ｃｏｍｐｕｔｉｎｇ Ｐｏｗｅｒ)が相対的に不足なエンベデッドシステム(ｅｍｂｅｄｄｅｄ)には致命的な問題点として作用することができる。
【００３９】
ここで、ＧＰＵソースコードに対するコンパイル過程を単純化すれば、 最適化されたＧＰＵ機械語を生成し難く、反対にＧＰＵ機械語最適化のためにはコンパイル演算量が増加するようになる矛盾した状況が発生する。また、「ＯｐｅｎＧＬ」のような方式はＧＰＵソースコードが図５に示すように、 実行ファイルのデータ領域に挿入されたり又は外部スクリプトファイル形式で存在するようになる。したがって、ＧＰＵソースコードが外部にそのまま露出して保安に脆弱であるという問題がある。
【００４０】
本発明は上記のような問題点を解決し、 ＣＰＵ及びＧＰＵを效率的に使用することができる方法及び装置を提供する。すなわち、 本発明は時間がたくさん所要されて複雑なＧＰＵコンパイル過程を最小化し、保安に問題になったＧＰＵソースコード露出を制御し、特定ＧＰＵだけでなくすべての種類のＧＰＵで実行可能なコンパイルされた仮想のＧＰＵ機械語を提供することをその目的とする。
【００４１】
これを解決するため、本発明ではＧＰＵ動作のためにソースコードレベル(Ｓｏｕｒｃｅ Ｃｏｄｅ Ｌｅｖｅｌ)ではない命令語レベル(Ｉｎｓｔｒｕｃｔｉｏｎ Ｌｅｖｅｌ)(又は、 機械語レベル、 Ｍａｃｈｉｎｅ Ｃｏｄｅ Ｌｅｖｅｌ)にコンパイルされたコードを使用する。本発明ではＧＰＵソースコードが命令語レベルにコンパイルされたことをＧＰＵ仮想命令語(ＧＰＵ  Ｖｉｒｔｕａｌ Ｉｎｓｔｒｕｃｔｉｏｎ)と名付ける事にする。上記ＧＰＵ仮想命令語は実際ＧＰＵハードウェアで動作する機械語ではない仮想の命令語である。上記ＧＰＵ仮想命令語は実行時間(ｒｕｎｔｉｍｅ)にＧＰＵ機械語(ＧＰＵ  Ｍａｃｈｉｎｅ Ｃｏｄｅ)でリアルタイム変換(Ｂｉｎａｒｙ ＴｒａｎＳｌａｔｉｏｎ)されて実行される。また、上記ＧＰＵ仮想命令語は特定ＧＰＵハードウェアでばかり動作するのではなく、すべての種類のＧＰＵハードウェアで動作することができる。
【００４２】
本発明によるＧＰＵ仮想命令語はコンパイルの時、仮想の命令語にコンパイルされるから実行時間(ｒｕｎｔｉｍｅ)に遂行速度が早く保安にも強いという長所を有する。
【００４３】
図６は 「ＯｐｅｎＧＬ」と本発明によるアプリケーションの実行方法の差異を比較する図面である。
【００４４】
上記のように「ＯｐｅｎＧＬ」によればＧＰＵソースコードはアプリケーションのコンパイルの時、別にコンパイルされない。代わり、実行ファイル(Ｂｉｎａｒｙ Ｉｍａｇｅ)の実行時間(ｒｕｎｔｉｍｅ)の間、ＧＰＵソースコードが語彙分析段階、先-処理段階、構文分析段階、最適化段階、コード生成段階等を経てコンパイルされ、上記コンパイル結果生成されるＧＰＵ機械語が実行された。
【００４５】
しかし、本発明ではアプリケーションのコンパイルの時、ＧＰＵソースコードは命令語レベル(ｉｎｓｔｒｕｃｔｉｏｎ ｌｅｖｅｌ)であるＧＰＵ仮想命令語でコンパイルされる。そして実行ファイルの実行時間(ｒｕｎｔｉｍｅ)の間、上記ＧＰＵ仮想命令語がＧＰＵ機械語に変換(Ｔｒａｎｓｌａｔｉｏｎ)され、上記変換されたＧＰＵ機械語が実行される。
【００４６】
すなわち、ＧＰＵソースコードが実行すべき時点で、従来方法はＧＰＵソースコードからコンパイルする過程を経なければならないが、 本発明の実施例によれば予めコンパイルされたＧＰＵ仮想命令語が単純にＧＰＵ機械語に変換される過程だけ進行する。
【００４７】
以下では本発明の実施例によるシステム構造及び動作手順を添付された図面を参考して詳細に説明する。
【００４８】
図７は本発明の実施例によってＣＰＵとＧＰＵを使用する異種コンピュータシステム構造を示す図面である。図７に示すように、本発明の異種コンピュータシステムはアプリケーション７１０、コンパイラー７２０、ハイブリッド仮想化ブロック７３０を含むことができる。
【００４９】
アプリケーション７１０はアプリケーション階層に位置し、 ＣＰＵソースコードとＧＰＵソースコードを共に含む応用プログラムである。このような応用プログラムの例題を図 4に示した事がある。
【００５０】
コンパイラー(Ｃｏｍｐｉｌｅｒ)７２０はアプリケーション７１０に含まれたＣＰＵ ソースコードとＧＰＵソースコードを機械語(Ｍａｃｈｉｎｅ Ｃｏｄｅ)にコンパイルする。この場合、コンパイラー７２０はＣＰＵソースコードの場合、上記ＣＰＵソースコードをＣＰＵ機械語にすぐコンパイルするが、ＧＰＵソースコードの場合には、上記ＧＰＵソースコードを本発明で提案するＧＰＵ仮想命令語(ＧＰＵ  Ｖｉｒｔｕａｌ Ｉｎｓｔｒｕｃｔｉｏｎ)にコンパイルする。そして上記コンパイラー７２０は上記ＣＰＵ機械語及び ＧＰＵ仮想命令語を含む実行ファイルを生成する。以下では上記のような過程によって生成された実行ファイルをハイブリッド実行ファイル(Ｈｙｂｒｉｄ Ｂｉｎａｒｙ Ｉｍａｇｅ)だと名付けることにする。上記ハイブリッド実行ファイルに対する具体的な構造は図8で後述するようにする。
【００５１】
ハイブリッド仮想化(Ｈｙｂｒｉｄ Ｖｉｒｔｕａｌｉｚａｔｉｏｎ)ブロック７３０はアプリケーション階層(Ａｐｐｌｉｃａｔｉｏｎ Ｌａｙｅｒ)とハードウェア階層(Ｈａｒｄｗａｒｅ Ｌａｙｅｒ)の間の仮想化階層(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ Ｌａｙｅｒ)に位置して実行時間(ｒｕｎｔｉｍｅ)にＧＰＵ仮想命令語を感知し、感知の時、上記ＧＰＵ仮想命令語をＧＰＵ機械語に変換(ＴｒａｎＳｌａｔｉｏｎ)する。だけでなく、 上記ハイブリッド仮想化ブロック７３０はアプリケーションの実行全般過程を調律する。
【００５２】
オペレーティングシステム７４０は少なくとも１つ以上の互いに異なる種類のオペレーティングシステムを含むことができ、システムの全般的な動作を制御する。
【００５３】
図８は本発明の実施例によるハイブリッド実行ファイル(Ｈｙｂｒｉｄ Ｂｉｎａｒｙ Ｉｍａｇｅ)の構造を示す図面である。ハイブリッド実行ファイルは従来システムとの互換性のために実行イメージ(Ｂｉｎａｒｙ Ｉｍａｇｅ)の形式による。
【００５４】
図８に示すように、ハイブリッド実行ファイルはＣＰＵ機械語(ＣＰＵ Ｍａｃｈｉｎｅ Ｃｏｄｅ)と、ＧＰＵ仮想命令語を含む仮想セクション(Ｖｉｒｔｕａｌ Ｓｅｃｔｉｏｎ)８１０を含むことができる。ここでＧＰＵ仮想セクションはさらに仮想セクションヘッダー８２０、ＣＰＵ機械語８３０、ＧＰＵ仮想命令語８４０を含むことができる。
【００５５】
上記仮想セクションヘッダー８２０は当該のセクションが仮想セクションなのかを識別するウォーターマーク(ｗａｔｅｒ-ｍａｒｋ)と、ＣＰＵ又はＧＰＵ実行時間などに対する動作情報を含むことができる。
【００５６】
ＣＰＵ機械語領域８３０は当該のシステムにＧＰＵがなかったり又はＧＰＵが異なる作業を遂行しておりＣＰＵで動作することが正しいことと判断される際、実行するＣＰＵ機械語を含む。
【００５７】
一方、ＧＰＵ仮想命令語領域８４０はＧＰＵで動作する命令語を含む。上記ＧＰＵ仮想命令語領域８４０は仮想命令語ヘッダー８５０と仮想命令語コード８６０を含むことができる。上記仮想命令語ヘッダー８５０はＧＰＵ演算を遂行するためのデータが入力又は出力されるメモリーのアドレス情報、推薦されるプロセッシング要素(Ｐｒｏｃｅｓｓｉｎｇ Ｅｌｅｍｅｎｔ、ＰＥ)の個数情報などを含むことができる。ＧＰＵ仮想命令語コードはＧＰＵで実行されるコードの仮想化された情報を含む。すなわち、上記ＧＰＵ仮想命令語コードは実質的に実行時間(ｒｕｎｔｉｍｅ)にＧＰＵ機械語に変換されるコードである。
【００５８】
図９は本発明の実施例による、アプリケーションのコンパイル過程を示すフローチャートである。
【００５９】
まず、Ｓ９１０段階で、ＣＰＵソースコードとＧＰＵソースコードを含むアプリケーションが生成されたことを仮定する。そして上記アプリケーションに対するコンパイルが要請される場合、コンパイラー７２０はＣＰＵソースコードとＧＰＵソースコードを区分してコンパイルする。
【００６０】
より具体的に、コンパイラーはＣＰＵソースコード検出の時、Ｓ９２０段階でＣＰＵソースコードをコンパイルし、Ｓ９３０段階でＣＰＵで動作することができるＣＰＵ機械語(ＣＰＵ Ｍａｃｈｉｎｅ Ｃｏｄｅ)を生成する。一方、コンパイラーはＧＰＵソースコード検出の時、Ｓ９４０段階でＧＰＵソースコードをコンパイルし、Ｓ９５０段階で仮想の ＧＰＵで動作することができるＧＰＵ仮想命令語(ＧＰＵ  Ｖｉｒｔｕａｌ Ｉｎｓｔｒｕｃｔｉｏｎ)を生成する。上記ＧＰＵ仮想命令語に対する具体的な構造は図8に示されている
【００６１】
そしてコンパイラーはＳ９６０段階で、上記生成されたＣＰＵ機械語とＧＰＵ仮想命令語をリンクさせ、Ｓ９７０段階でハイブリッド実行ファイル(Ｈｙｂｒｉｄ Ｂｉｎａｒｙ Ｉｍａｇｅ)を生成する。
【００６２】
上記のように、ハイブリッド実行ファイルはＣＰＵ機械語と仮想セクションを含む。上記ハイブリッド実行ファイルが実行される際、ＣＰＵ部分とＧＰＵ部分が仮想化階層(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ Ｌａｙｅｒ)の調律によってそれぞれ実行されるところ、 これに対しては下記の図１０を参考して説明する。
【００６３】
図１０は本発明の実施例によって、 仮想化階層(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ Ｌａｙｅｒ)のハイブリッド仮想化ブロック７３０がハイブリッド実行ファイルを実行する過程を示すフローチャートである。
【００６４】
上記の図１０ではシステムの階層的分類の時、本発明の仮想化階層(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ Ｌａｙｅｒ)の上に一般ＯＳが位置する構造を仮定する。後述するが、 本発明の仮想化階層を使用しなくてもハイブリッド実行ファイルを実行させることができるところ、これに対しては図１２で詳しく記述する。
【００６５】
図１０に示す実施例において、 ＯＳはＯＳ自分だけ実行されると感知しながらシステムを使用する。まず、ハイブリッド実行ファイルの一般的な駆動はＯＳを通して成るのでＳ１０１０段階でＯＳが実行される。それではＯＳはＳ１０１５段階でＧＰＵ仮想命令語が挿入されたハイブリッド実行ファイルを実行する。そうする間、Ｓ１０２０段階で、仮想セクションが実行されればＣＰＵで例外(ｅｘｃｅｐｔｉｏｎ)が発生する。それではシステムに対する制御権がＯＳで仮想化階層のハイブリッド仮想化ブロック７３０に移動する。
【００６６】
ハイブリッド仮想化ブロック７３０はＳ１０３０段階で、 仮想セクション内部のウォーターマークを通して仮想セクションなのか否かを判断する。もし、仮想セクションではなければ、ハイブリッド仮想化ブロック７３０はＳ１０５０段階で進行して既存の例外処理を遂行し、Ｓ１０５５段階でさらにシステム制御権をＯＳに移動させる。もし、仮想セクションであれば、ハイブリッド仮想化ブロック７３０はＳ１０３５段階でＧＰＵ仮想命令語(ＧＰＵ  Ｖｉｒｔｕａｌ Ｉｎｓｔｒｕｃｔｉｏｎ)をＧＰＵ機械語(ＧＰＵ  Ｍａｃｈｉｎｅ Ｃｏｄｅ)に変換する。そしてハイブリッド仮想化ブロック７３０はＳ１０４０段階で、上記変換されたＧＰＵ機械語を図１１のようにメモリー(又はファイル)実行領域に挿入する。
【００６７】
上記の過程を遂行したハイブリッド仮想化ブロック７３０はＳ１０４５段階で制御権をさらにＯＳに越す。その後、ＯＳはＳ１０７０段階で、当該のＧＰＵ機械語をＧＰＵを通じて実行させる。
【００６８】
一方、Ｓ１０２０段階で、例外が発生したのではなければ、Ｓ１０６０段階でＧＰＵ機械語実行なのか否かを判断し、ＧＰＵ機械語実行の場合にはＳ１０７０段階でＧＰＵ機械語を実行し、ＧＰＵ機械語ではない場合にはＳ１０６５段階でＣＰＵ機械語を遂行する。この場合、Ｓ１０６０段階及びＳ１０７０段階を通して実行されるＧＰＵ機械語はＳ１０３５段階で変換されてメモリー(又はファイル)上に存在するＧＰＵ機械語として、別途の変換過程無しに直ちに実行されることができる。
【００６９】
図１２は本発明のさらにの実施例によってシステムＯＳがハイブリッド実行ファイルを実行する過程を示すフローチャートである。
【００７０】
上記の図１０では仮想化階層(Ｖｉｒｔｕａｌｉｚａｔｉｏｎ Ｌａｙｅｒ)のハイブリッド仮想化ブロック７３０がハイブリッド実行ファイルを実行(ｒｕｎ)する実施例に対して記述した。
【００７１】
一方、図１２では別途の仮想化階層を導入せず、ＯＳがハイブリッド実行ファイルを実行する実施例に対して記述する。この場合、 ＧＰＵ仮想化命令語を生成するコンパイル過程は仮想化階層を導入するか否かに関係なく同一であるのでこれに対する説明を省略することにする。
【００７２】
まず、Ｓ１２０５段階でハイブリッド実行ファイルが実行されれば、Ｓ１２１０段階で ＣＰＵで例外(ｅｘｃｅｐｔｉｏｎ)が発生する。それではＯＳはＳ１２１５段階で、仮想セクション内部のウォーターマークを通して仮想セクションなのか否かを判断する。もし、仮想セクションではなければ、ＯＳはＳ１１２３５段階で進行して既存の例外処理を遂行し、Ｓ１２０４段階でＣＰＵ機械語を実行する。
【００７３】
もし、仮想セクションであれば、ＯＳはＳ１２２０段階でＧＰＵ仮想命令語(ＧＰＵ  Ｖｉｒｔｕａｌ Ｉｎｓｔｒｕｃｔｉｏｎ)をＧＰＵ機械語(ＧＰＵ  Ｍａｃｈｉｎｅ Ｃｏｄｅ)に変換する。そしてＯＳはＳ１２２５段階で、上記変換されたＧＰＵ機械語を図１１のようにメモリー(又はファイル)実行領域に挿入する。
【００７４】
上記の過程を遂行したＯＳはＳ１２３０段階で、当該のＧＰＵ機械語をＧＰＵを通して実行させる。
【００７５】
一方、Ｓ１２１０段階で、例外が発生したのではなければ、ＯＳはＳ１２４５段階でＧＰＵ機械語実行なのか否かを判断し、ＧＰＵ機械語実行の場合にはＳ１２３０段階でＧＰＵ機械語を実行し、 ＧＰＵ機械語ではない場合にはＳ１２４０段階でＣＰＵ機械語を遂行する。この場合、Ｓ１２４５段階及びＳ１２３０段階を通して実行されるＧＰＵ機械語は Ｓ１２２０段階で変換されてメモリー(又はファイル)上に存在するＧＰＵ機械語として、 別途の変換過程無しに直ちに実行されることができる。
【００７６】
以下では上記の本初明の２つの実施例の機能上の差異に対して記述する。  
【００７７】
まず、本発明の第１実施例によれば、実行時間(ｒｕｎｔｉｍｅ)の間、ＧＰＵ仮想命令語がＧＰＵ機械語に変換される過程は仮想化階層に位置するハイブリッド仮想化ブロック７３０によって遂行される。上記第１実施例によるシステム構造が図１３に具体的に図示される。
【００７８】
図１３に示すように、 ハイブリッド仮想化ブロック７３０はアプリケーション階層とハードウェア階層の間に、そしてＯＳ下位に位置する。上記ハイブリッド仮想化ブロック７３０でよって、上位に位置したＯＳは現在実行されるハイブリッド実行ファイルが既存の実行ファイルと同様であると認識する。すなわち、第１実施例によれば上位ＯＳを修正する必要無しにＧＰＵ仮想命令語を実行することができる。
【００７９】
一方、本発明の第２実施例によれば、 実行時間(ｒｕｎｔｉｍｅ)の間ＧＰＵ仮想命令語が ＧＰＵ機械語に変換される過程はＯＳによって直接遂行される。上記第２実施例によるシステム構造が図１４及び図１５に示す。
【００８０】
図１４及び図１５に示すように、 ハイブリッド実行ファイルを実行するためのハイブリッド仮想化ブロックはＯＳ内部に含まれる。ここで図１４に示す第１オペレーティングシステムは例えば、マイクロソフト社の「ＭＳ」であることを例示することができ、図１５で示す第２オペレーティングシステムは例えば、アップル謝意「Ａｐｐｌｅ ＯＳ」であることを例示することができる。このような第2 実施例によれば実行時間の間の例外発生の時、ＧＰＵ仮想命令語をＧＰＵ機械語で変換する手続きはＯＳによって直接処理される。
【００８１】
上記の本発明によれば、ＣＰＵとＧＰＵを同時に效率的に使用することができ、ＧＰＵ使用のためのリアルタイムコンパイル方式の問題点を補ってＧＰＵ実行效率を向上させることができる。
【００８２】
本明細書及び図面に開示された本発明の実施例は本発明の記述内容を容易に説明し、発明の理解を助けるために特定例を提示したことに過ぎず、 本発明の範囲を限定しようとすることではない。ここに開示された実施例以外にも本発明の技術的思想に基づいて他の変形例が実施可能であるということは本発明が属する技術分野で通常の知識を有する者に自明なものである。
【符号の説明】
【００８３】
７１０  アプリケーション
７２０  コンパイラー
７３０  ハイブリッド仮想化ブロック
【図１】
2013543616.tif 000003
【図２】
2013543616.tif 000004
【図３】
2013543616.tif 000005
【図４】
2013543616.tif 000006
【図５】
2013543616.tif 000007
【図６】
2013543616.tif 000008
【図７】
2013543616.tif 000009
【図８】
2013543616.tif 000010
【図９】
2013543616.tif 000011
【図１０】
2013543616.tif 000012
【図１１】
2013543616.tif 000013
【図１２】
2013543616.tif 000014
【図１３】
2013543616.tif 000015
【図１４】
2013543616.tif 000016
【図１５】
2013543616.tif 000017
【国際調査報告】
2013543616.tif 000018
2013543616.tif 000019