プログラム処理装置、プログラム処理方法、およびプログラム
【課題】従来のライブラリは、プロセッサごとに最適化され、それぞれの環境に依存するものである。
【解決手段】プロセッサ条件と、事前準備プログラム識別子とを有する事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、事前準備プログラムと、プログラムとを格納し得るプログラム格納部と、プログラム識別子を有する指示を受け付ける受付部と、当該プログラムをプログラム格納部から取得するプログラム取得部と、プロセッサ情報を取得するプロセッサ情報取得部と、プロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを取得する事前準備プログラム取得部と、事前準備プログラム取得部が取得した事前準備プログラムを用いて、プログラム取得部が取得したプログラムを処理する処理部を具備するプログラム処理装置により、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。
【解決手段】プロセッサ条件と、事前準備プログラム識別子とを有する事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、事前準備プログラムと、プログラムとを格納し得るプログラム格納部と、プログラム識別子を有する指示を受け付ける受付部と、当該プログラムをプログラム格納部から取得するプログラム取得部と、プロセッサ情報を取得するプロセッサ情報取得部と、プロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを取得する事前準備プログラム取得部と、事前準備プログラム取得部が取得した事前準備プログラムを用いて、プログラム取得部が取得したプログラムを処理する処理部を具備するプログラム処理装置により、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ライブラリ等を使用するプログラム処理装置等に関するものである。
【背景技術】
【0002】
従来、様々なライブラリが開発されている(非特許文献1、非特許文献2参照)。このようなライブラリを用いることによって、ユーザは、様々なアプリケーションを開発することができた。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“OpenCV”、[online]、[2011年9月15日検索]、インターネット[URL:http://opencv.willowgarage.com/]
【非特許文献2】“LAPACK−Linear Algebra PACKage”、[online]、[2011年9月15日検索]、インターネット[URL:http://www.netlib.org/lapack/]
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のライブラリは、プロセッサごとに最適化され、それぞれの環境に依存するものであった。
【課題を解決するための手段】
【0005】
本第一の発明のプログラム処理装置は、プロセッサに関する条件である1以上のプロセッサ条件と、プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、1以上の事前準備プログラムと、1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムを格納し得るプログラム格納部と、プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、指示に含まれるプログラム識別子で識別されるプログラムを、プログラム格納部から取得するプログラム取得部と、プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、プログラム取得部が取得した1以上のプログラムを処理する処理部とを具備するプログラム処理装置である。
【0006】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0007】
また、本第二の発明のプログラム処理装置は、第一の発明に対して、プログラムは、同一の処理を行う2以上の事前準備プログラムであり、2以上の各プロセッサに対応する2以上の事前準備プログラムと、2以上の事前準備プログラムのうち、プログラムが動作するプロセッサに対応する1以上の事前準備プログラムとを使用するプログラムであり、事前準備プログラム管理情報格納部は、プロセッサに関する条件である2以上のプロセッサ条件と、各プロセッサ条件に対応する2以上の事前準備プログラム識別子とを有する1以上の事前準備プログラム管理情報を格納しており、受付部は、1以上のプログラム識別子を有するプログラムを実行する指示を受け付け、事前準備プログラム取得部は、プログラムの実行中に、プログラム取得部が取得したプログラムが使用する1以上の事前準備プログラムであり、プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得し、処理部は、プログラム取得部が取得したプログラムを、プログラムが使用する事前準備プログラムであり、事前準備プログラム取得部が取得した事前準備プログラムと共に実行するプログラム処理装置である。
【0008】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを実行することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0009】
また、本第三の発明のプログラム処理装置は、第一の発明に対して、処理部は、プログラム取得部が取得した1以上のプログラムと、事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合するプログラム処理装置である。
【0010】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを結合することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0011】
また、本第四の発明のプログラム処理装置は、第三の発明に対して、処理部は、1以上の事前準備プログラムを使用するプログラムと、1以上の事前準備プログラムとを結合した結合プログラムを格納し得る結合プログラム格納手段と、プログラム取得部が取得した1以上のプログラムと、事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合する結合手段と、プログラムと、事前準備プログラムとを結合した結合プログラムを、結合プログラム格納手段に蓄積する蓄積手段とを具備するプログラム処理装置である。
【0012】
このような構成により、プロセッサに適合する事前準備プログラムを用いて結合したプログラムを、蓄積することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【0013】
また、本第五の発明のプログラム処理装置は、第三の発明に対して、プログラム取得部は、指示に含まれるプログラム識別子で識別されるプログラムの実行時に、プログラムをプログラム格納部から取得し、事前準備プログラム取得部は、指示に含まれるプログラム識別子で識別されるプログラムの実行時に、1以上の事前準備プログラムを事前準備プログラム管理情報格納部から取得し、処理部は、プログラム取得部が取得した1以上のプログラムと、事前準備プログラム取得部が取得した1以上の事前準備プログラムとを、プログラムの実行時に結合する結合手段と、結合手段が結合した結合プログラムを実行する実行手段とを具備するプログラム処理装置である。
【0014】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【0015】
また、本第六の発明のプログラム処理装置は、第五の発明に対して、結合手段は、実行手段の結合プログラムの実行前に、プログラムと、1以上の事前準備プログラムとを結合するプログラム処理装置である。
【0016】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【0017】
また、本第七の発明のプログラム処理装置は、第五の発明に対して、結合手段は、実行手段の結合プログラムの実行中に、プログラムと、1以上の各事前準備プログラムとを結合するプログラム処理装置である。
【0018】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく生成し、実行することができる。
【0019】
また、本第八の発明のプログラム処理装置は、第一から第七いずれかの発明に対して、プロセッサ情報は、プロセッサを識別するプロセッサ識別情報であり、プロセッサ条件は、プロセッサ識別情報を有する条件であるプログラム処理装置である。
【0020】
このような構成により、プロセッサ識別情報を用いて、プロセッサを判別することができる。また、ユーザは、プログラムが動作するプロセッサに適合する事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0021】
また、本第九の発明のプログラム処理装置は、第一から第七いずれかの発明に対して、プロセッサ情報は、プロセッサの属性を示す1以上のプロセッサ属性情報であり、プロセッサ条件は、プロセッサ属性情報を有する条件であるプログラム処理装置である。
【0022】
このような構成により、プロセッサ属性情報を用いて、プロセッサを判別することができる。また、ユーザは、プログラムが動作するプロセッサに適合する事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【発明の効果】
【0023】
本発明によるプログラム処理装置等によれば、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【図面の簡単な説明】
【0024】
【図1】実施の形態1におけるプログラム処理装置1のブロック図
【図2】同プログラム処理装置1の全体動作について説明するフローチャート
【図3】同結合プログラムの生成と蓄積の処理について説明するフローチャート
【図4】同事前準備プログラム管理情報の例を示す図
【図5】同プログラムの例を示す図
【図6】同事前準備プログラム管理情報の例を示す図
【図7】同プログラムの例を示す図
【図8】同実施の形態2におけるプログラム処理装置2のブロック図
【図9】同プログラム処理装置2の全体動作について説明するフローチャート
【図10】同結合プログラムの生成と実行の処理について説明するフローチャート
【図11】同事前準備プログラム管理情報の例を示す図
【図12】同実施の形態3におけるプログラム処理装置3のブロック図
【図13】同プログラム処理装置3の全体動作について説明するフローチャート
【図14】同事前準備プログラム管理情報の例を示す図
【図15】各実施の形態におけるコンピュータシステムの概観図
【図16】各実施の形態におけるコンピュータシステムのブロック図
【発明を実施するための形態】
【0025】
以下、本発明によるプログラム処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、所定の情報が格納され得る格納部等において、当該格納部に情報が記憶される過程は問わないものとする。例えば、記録媒体を介して情報が格納部等で記憶されるようになってもよい。また、通信回線などを介して送信された情報が格納部等で記憶されるようになってもよい。さらに、入力デバイスを介して入力された情報が格納部等で記憶されるようになってもよい。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
【0026】
また、以下の実施の形態において、「プロセッサ」とは、通常、CPU(Central Processing Unit)のことであるが、例えば、GPU(Graphics Processing Unit)や、FPU(Floating Point Number Processing Unit)、MPU(Micro−Processing Unit)、DSP(Digital Signal Processor)などであってもよい。
【0027】
また、以下の実施の形態において、「プログラム」とは、コンピュータプログラムのことであり、ソースコードや、バイナリコード、オブジェクトコードなどである。また、プログラムの形態は問わない。また、これらのコードが示すものは、関数や、メソッド、クラス、命令などであり、その内容は問わない。また、当該プログラムは、通常、プログラム識別子を有しており、当該プログラム識別子により識別される。当該プログラム識別子は、例えば、ファイル名や、関数名、メソッド名、クラス名などである。
【0028】
(実施の形態1)
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと、事前準備プログラムとを結合し、蓄積するプログラム処理装置について説明する。
【0029】
なお、本実施の形態において、プログラム処理装置は、例えば、コンパイラや、リンカなどのプログラム結合装置である。
【0030】
図1は、本実施の形態におけるプログラム処理装置1のブロック図である。プログラム処理装置1は、事前準備プログラム管理情報格納部11、プログラム格納部12、受付部13、プログラム取得部14、プロセッサ情報取得部15、事前準備プログラム取得部16、処理部17を備える。処理部17は、結合プログラム格納手段171、結合手段172、蓄積手段173を備える。
【0031】
事前準備プログラム管理情報格納部11は、2以上の事前準備プログラム管理情報を格納し得る。事前準備プログラム管理情報とは、1以上のプロセッサ条件と、当該プロセッサ条件に対応する1以上の事前準備プログラムとを有する情報である。また、事前準備プログラム管理情報は、1以上のプロセッサ条件と、当該プロセッサ条件に対応する1以上の事前準備プログラム識別子とを有する情報であってもよい。
【0032】
プロセッサ条件とは、プロセッサに関する条件である。プロセッサ条件は、通常、プロセッサに関する情報であるプロセッサ情報を有する。プロセッサ情報は、例えば、プロセッサを識別するプロセッサ識別情報や、プロセッサの属性を示す1以上のプロセッサ属性情報などである。プロセッサ識別情報は、例えば、プロセッサの型番や、シリアルナンバー、プロセッサ名などである。また、プロセッサ属性情報は、例えば、製造メーカー名や、プロセッサ名、動作周波数、キャッシュメモリのサイズ、FSB(Front Side Bus)の通信速度、ソケット形状、消費電力、命令セットの種類、コア数などである。
【0033】
また、プロセッサ条件は、2以上のプロセッサ条件を連結する連結情報を有していてもよい。プロセッサ条件は、例えば、(1)「プロセッサ型番=(PRC001)orプロセッサ型番=(PRC003)」や、(2)「コア数=2〜4」や、(3)「(コア数=4)or(コア数=8)」、(4)「(コア数=2〜4)&(2次キャッシュ=256KB〜512KB)」などである。(1)は、「プロセッサの型番が『PRC001』、またはプロセッサの型番が『PRC002』」であることを示す。また、(2)は、「コア数が2個から4個」であることを示す。また、(3)は、「コア数が4個、またはコア数が8個」であることを示す。また、(4)は、「コア数が2個から4個であり、2次キャッシュメモリのサイズが256KBから512KB」であることを示す。
【0034】
また、事前準備プログラムとは、ユーザまたはシステムが事前に準備した1以上のプログラムであり、プロセッサ条件に合致するプロセッサにおいて実行され得る1以上のプログラムである。当該システムは、通常、OSである。また、事前準備プログラムは、いわゆるライブラリであってもよい。また、事前準備プログラムは、例えば、画像処理プログラムや、数値解析プログラム、流体解析プログラムなどである。なお、事前準備プログラムが行う処理の内容や対象などは問わない。また、事前準備プログラムは、事前準備プログラムを識別するプログラム識別子である事前準備プログラム識別子を有していてもよい。
【0035】
また、事前準備プログラム管理情報が、1以上のプロセッサ条件と、1以上の事前準備プログラム識別子を有する場合、事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されていてもよいし、後述のプログラム格納部12に格納されていてもよいし、任意の記憶領域(プログラム処理装置1では無い外部装置も含む)に格納されていてもよい。
【0036】
プログラム格納部12は、1以上のプログラムを格納し得る。当該プログラムは、1以上の事前準備プログラムを使用するプログラムである。ここで、「事前準備プログラムを使用する」とは、事前準備プログラムを呼び出すことや、事前準備プログラムに対応するメッセージの発行、事前準備プログラム識別子を有すること、事前準備プログラムを有することなどを含む概念であり、事前準備プログラムの使用態様は問わない。また、当該プログラムは、事前準備プログラム識別子を有していてもよい。なお、プログラム格納部12は、通常、プログラムと、当該プログラムを識別するプログラム識別子とを対応付けて格納している。
【0037】
事前準備プログラム管理情報格納部11、およびプログラム格納部12は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【0038】
受付部13は、1以上のプログラム識別子を有する指示を受け付ける。当該指示は、通常、当該プログラム識別子で識別されるプログラムと、事前準備プログラムとを結合する指示である。また、当該指示は、例えば、当該プログラム識別子で識別されるプログラムをコンパイルする指示や、当該プログラムを実行する指示などであってもよい。また、当該指示は、1以上のプログラム識別子を有するファイルのファイル名を有していてもよい。
【0039】
例えば、プログラム処理装置1が、OS上で動作するアプリケーションなどである場合、当該指示は、例えば、プログラムを示すアイコンの当該装置へのドラッグ&ドロップや、当該装置が有するボタンのクリックなどである。また、例えば、プログラム処理装置1が、プログラムが実行されるときに必ず実行されるようなミドルウェアなどである場合、当該指示は、例えば、プログラムを示すアイコンのダブルクリックや、当該アイコンのシングルクリックなどである。なお、プログラム識別子を有する指示の形式は問わない。また、指示がプログラム識別子を有する形態は問わない。
【0040】
また、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【0041】
受付部13における指示の入力手段は、マウスなどのポインティングデバイスや、キーボード、メニュー画面によるものなど、何でもよい。受付部13は、ポインティングデバイス等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェアなどで実現され得る。
【0042】
プログラム取得部14は、受付部13が受け付けた指示が有する1以上のプログラム識別子で識別されるプログラムを、プログラム格納部12から取得する。プログラム取得部14は、通常、受付部13がプログラム識別子を有する指示を受け付けると、当該プログラムを取得する。なお、以下、プログラム取得部14が取得したプログラムを、取得プログラムとする。
【0043】
プロセッサ情報取得部15は、プロセッサ情報を取得する。プロセッサ情報の取得の方法や手順などは問わない。例えば、プロセッサ情報取得部15は、システムファイルやシステム変数などのシステム情報から取得してもよいし、いわゆるファームウェアから取得してもよいし、ユーザから入力されたプロセッサ情報を取得してもよい。また、例えば、事前準備プログラム管理情報格納部11に、プロセッサ識別情報を有するプロセッサ情報が格納されている場合、プロセッサ情報取得部15は、プロセッサ識別情報を取得してもよい。また、例えば、事前準備プログラム管理情報格納部11に、プロセッサ属性情報を有するプロセッサ情報が格納されている場合、プロセッサ情報取得部15は、1以上のプロセッサ属性情報を取得してもよい。
【0044】
また、プロセッサ情報取得部15は、通常、受付部13がプログラム識別子を有する指示を受け付けた直後に、プロセッサ情報を取得する。なお、プロセッサ情報を取得する方法や手順などは、公知であるので、詳細な説明を省略する。
【0045】
事前準備プログラム取得部16は、プロセッサ情報取得部15が取得したプロセッサ情報に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。また、当該事前準備プログラムは、通常、取得プログラムが使用するプログラムである。
【0046】
例えば、プロセッサ情報取得部15が取得したプロセッサ情報が、プロセッサ識別情報である場合、事前準備プログラム取得部16は、当該プロセッサ識別情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを取得する。また、例えば、プロセッサ情報取得部15が取得したプロセッサ情報が、属性情報である場合、事前準備プログラム取得部16は、当該プロセッサ属性情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを取得する。
【0047】
ここで、「プロセッサ識別情報が合致するプロセッサ条件」とは、当該プロセッサ識別情報により、条件が満たされるプロセッサ条件のことである。つまり、例えば、プロセッサ情報取得部15が取得したプロセッサ識別情報が、プロセッサの型番「CPRC001」であり、事前準備プログラム管理情報格納部11に格納されているプロセッサ条件が、「型番={(PRC001)or(PRC002)}」である場合、当該プロセッサ条件は、「プロセッサ識別情報が合致するプロセッサ条件」である。
【0048】
また、「プロセッサ属性情報が合致するプロセッサ条件」とは、当該プロセッサ属性情報により、条件が満たされるプロセッサ情報のことである。つまり、例えば、プロセッサ情報取得部15が取得したプロセッサ属性情報が、動作周波数「3.2GHz」、コア数「8」であり、事前準備プログラム管理情報格納部11に格納されているプロセッサ条件が、「コア数=8」である場合、当該プロセッサ条件は、「プロセッサ属性情報が合致するプロセッサ条件」である。
【0049】
また、例えば、事前準備プログラム管理情報が、1以上のプロセッサ属性条件を有する場合、事前準備プログラム取得部16は、当該プロセッサ属性条件が、プロセッサ情報取得部15が取得したプロセッサ属性情報に合致するプロセッサ属性条件に対応する事前準備プログラムを取得する。
【0050】
なお、例えば、事前準備プログラム管理情報が、1以上のプロセッサ情報と、1以上の事前準備プログラム識別子とを有している場合、事前準備プログラム取得部16は、まず、プロセッサ情報取得部15が取得したプロセッサ情報に対応する1以上の事前準備プログラム識別子を取得する。そして、事前準備プログラム取得部16は、当該事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラムが格納されている記憶領域等から取得する。当該記憶領域等とは、事前準備プログラム管理情報格納部11や、プログラム格納部12、その他の任意の記憶領域などである。
【0051】
また、事前準備プログラム取得部16は、通常、プロセッサ情報取得部15が取得したプロセッサ情報に対応し、かつ、取得プログラムが有する事前準備プログラム識別子で識別される事前準備プログラムを取得することが好適である。
【0052】
事前準備プログラム取得部16は、通常、次のような処理により事前準備プログラムを取得する。
(1)プロセッサ情報取得部15が取得したプロセッサ情報に対応する1以上の事前準備プログラム識別子を、事前準備プログラム管理情報格納部11から取得する。
(2)取得プログラムから、事前準備プログラム識別子を取得する。
(3)(1)と(2)で取得した事前準備プログラム識別子のうち、重複する事前準備プログラム識別子を取得する。
(4)(3)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0053】
処理部17は、事前準備プログラム取得部16が取得した1以上の事前準備プログラムを用いて、取得プログラムを処理する。処理部17は、例えば、1以上の取得プログラムと、事前準備プログラム取得部16が取得した1以上の事前準備プログラムとを結合する。本実施の形態において、結合とは、通常、いわゆる静的リンクのことであるが、2以上のプログラムを1つのプログラムに統合することや、1以上のプログラムと他の1以上のプログラムとの関連付けを示す情報を生成することなどを含み、広く解する。関連付けを示す情報とは、例えば、1以上のプログラムが1以上のプログラムを使用することを示す情報である。なお、静的リンクの方法や手順などは、公知であるので、詳細な説明を省略する。また、取得プログラムと、事前準備プログラム取得部16が取得した事前準備プログラムとの結合の方法や手順の詳細については、後述する。
【0054】
結合プログラム格納手段171は、結合プログラムを格納し得る。結合プログラムとは、1以上の事前準備プログラムを使用するプログラムと、1以上の事前準備プログラムとを結合したプログラムである。また、事前準備プログラムを使用するプログラムとは、通常、取得プログラムである。
【0055】
結合プログラム格納手段171は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【0056】
結合手段172は、1以上の取得プログラムと、事前準備プログラム取得部16が取得した1以上の事前準備プログラムとを結合し、結合プログラムを生成する。結合手段172は、通常、まず、各取得プログラムから事前準備プログラム識別子を取得する。そして、結合手段172は、当該事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム取得部16が取得した1以上の事前準備プログラムから取得する。そして、結合手段172は、1以上の取得プログラムと、当該取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0057】
蓄積手段173は、結合手段172が生成した結合プログラムを、結合プログラム格納手段171に蓄積する。
【0058】
なお、プログラム取得部14、プロセッサ情報取得部15、事前準備プログラム取得部16、処理部17、結合手段172、蓄積手段173は、通常、プロセッサやメモリ等から実現され得る。また、プログラム取得部14などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
【0059】
次に、プログラム処理装置1の動作について説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図2は、プログラム処理装置1の全体動作を示すフローチャートである。
【0060】
(ステップS201)受付部13は、指示を受け付けたか否かを判断する。受け付けた場合は、ステップS202に進み、そうでない場合は、S201に戻る。
【0061】
(ステップS202)受付部13は、ステップS201で受け付けた指示が、プログラム識別子を有するか否かを判断する。有する場合は、ステップS203に進み、そうでない場合は、ステップS201に戻る。
【0062】
(ステップS203)プログラム取得部14は、ステップS201で受け付けた指示が有するプログラム識別子で識別される1以上のプログラムを、プログラム格納部12から取得する。
【0063】
(ステップS204)プロセッサ情報取得部15は、プロセッサ情報を取得する。
【0064】
(ステップS205)事前準備プログラム取得部16は、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0065】
(ステップS206)処理部17は、ステップS203で取得した1以上のプログラムと、ステップS205で取得した1以上の事前準備プログラムとを結合し、結合プログラムを生成し、蓄積し、ステップS201に戻る。この処理の詳細は、図3のフローチャートを用いて説明する。
【0066】
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0067】
図3は、図2のフローチャートのステップS206の結合プログラムの生成と蓄積の処理を示すフローチャートである。
【0068】
(ステップS301)結合手段172は、ステップS203で取得した1以上のプログラムを取得する。
【0069】
(ステップS302)結合手段172は、ステップS301で取得した1以上のプログラムが有する事前準備プログラム識別子を取得する。ここで、m個の事前準備プログラム識別子が取得できたものとする。
【0070】
(ステップS303)結合手段172は、ステップS205で取得した1以上の事前準備プログラムを取得する。ここで、n個の事前準備プログラムが取得できたものとする。
【0071】
(ステップS304)結合手段172は、変数countに1をセットする。
【0072】
(ステップS305)結合手段172は、カウンタiに1をセットする。
【0073】
(ステップS306)結合手段172は、カウンタjに1をセットする。
【0074】
(ステップS307)結合手段172は、事前準備プログラム識別子[i]が、事前準備プログラム管理情報[j]が有する事前準備プログラム識別子と同じであるか否かを判断する。同じである場合は、ステップS308に進み、そうでない場合は、ステップS310に進む。
【0075】
(ステップS308)結合手段172は、countを1インクリメントする。
【0076】
(ステップS309)結合手段172は、取得した取得事前準備プログラムである取得事前準備プログラム[count]に、事前準備プログラム[j]をセットする。
【0077】
(ステップS310)結合手段172は、jがnであるか否かを判断する。nである場合は、ステップS312に進み、そうでない場合は、ステップS311に進む。
【0078】
(ステップS311)結合手段172は、jを1インクリメントし、ステップS307に戻る。
【0079】
(ステップS312)結合手段172は、iがmであるか否かを判断する。mである場合は、ステップS314に進み、そうでない場合は、ステップS313に進む。
【0080】
(ステップS313)結合手段172は、iを1インクリメントし、ステップS306に戻る。
【0081】
(ステップS314)結合手段172は、ステップS301で取得したプログラムと、ステップS309で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0082】
(ステップS315)蓄積手段173は、ステップS314で生成した結合プログラムを、結合プログラム格納手段171に蓄積し、上位処理にリターンする。
【0083】
(具体例)
次に、プログラム処理装置1の動作の具体例について説明する。なお、本具体例において、プログラム処理装置1は、リンク機能を有するコンパイラであるものとする。
【0084】
(例1)
本例において、事前準備プログラム管理情報格納部11には、図4に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プログラム格納部12に格納されているプログラムが有する可能性のあるプログラム識別子(項目名:識別子)と、プロセッサ条件(項目名:プロセッサ)と、事前準備プログラム取得部16が取得し得る事前準備プログラムの識別子(項目名:プログラム)とを有する。なお、事前準備プログラム識別子(項目名:プログラム)で識別される事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されているものとする。
【0085】
まず、ユーザが、プログラムをコンパイルするために、当該プログラムのアイコンを、マウスを用いてコンパイラのアイコンの上にドラッグ&ドロップしたとする。すると、受付部13は、当該プログラムを識別するプログラム識別子を有するプログラムをコンパイルする指示を受け付ける。
【0086】
次に、プログラム取得部14は、受付部13が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部12から取得し、図5に示すプログラムを取得したものとする。当該プログラムは、1行目と2行目に、使用する事前準備プログラムのファイル名「Library.h」、「Library.hpp」が記述されている。当該ファイル名は、プログラム識別子である。
【0087】
次に、プロセッサ情報取得部15は、プロセッサ情報であるプロセッサ識別情報を取得し、プロセッサ識別情報「CPU_B」を取得したものとする。
【0088】
次に、事前準備プログラム取得部16は、まず、図5のプログラムに記述されている事前準備プログラム識別子を有する図4の「ID=012」から「ID=017」までのレコードを取得する。次に、事前準備プログラム取得部16は、図4の「ID=012」から「ID=017」までのレコードのうち、プロセッサ情報取得部15が取得したプロセッサ識別情報「CPU_B」が合致するプロセッサ条件「CPU_B」を有する「ID=013」、「ID=016」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library_B.h」、「Library_B.hpp」を取得する。そして、事前準備プログラム取得部16は、取得した事前準備プログラム識別子「Library_B.h」、「Library_B.hpp」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0089】
次に、結合手段172は、図5のプログラムと、事前準備プログラム識別子「Library_B.h」、「Library_B.hpp」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、蓄積手段173は、結合手段172が生成した結合プログラムを、結合プログラム格納手段171に蓄積する。
【0090】
(例2)
本例において、事前準備プログラム管理情報格納部11には、図6に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プロセッサ条件(項目名:プロセッサ)と、事前準備プログラム取得部16が取得し得る事前準備プログラムの識別子(項目名:プログラム)とを有する。なお、事前準備プログラム識別子(項目名:プログラム)で識別される事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されているものとする。
【0091】
まず、ユーザが、(例1−1)と同様の操作を行い、プログラム取得部14は、図7に示すプログラムを、プログラム格納部12から取得したものとする。当該プログラムは、1行目と2行目に、使用する事前準備プログラムのファイル名「Library018.h」、「Library020.h」が記述されている。当該ファイル名は、プログラム識別子である。
次に、プロセッサ情報取得部15は、プロセッサ識別情報であるプロセッサ名「CPU_C」を取得したものとする。
【0092】
次に、事前準備プログラム取得部16は、まず、プロセッサ情報取得部15が取得したプロセッサ名「CPU_C」が合致するプロセッサ条件「CPU_C」を有する図6の「ID=018」から「ID=020」までのレコードを取得する。次に、事前準備プログラム取得部16は、図6の「ID=018」から「ID=020」までのレコードのうち、図7のプログラムが有する事前準備プログラム識別子を有する「ID=013」、「ID=016」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library018.h」、「Library020.h」を取得する。そして、事前準備プログラム取得部16は、取得した事前準備プログラム識別子「Library018.h」、「Library020.h」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0093】
次に、結合手段172は、図7のプログラムと、事前準備プログラム識別子「Library018.h」、「Library020.h」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、蓄積手段173は、結合手段172が生成した結合プログラムを、結合プログラム格納手段171に蓄積する。
【0094】
なお、本具体例において、プロセッサ識別情報として、プロセッサ名を取得する例を示したが、プロセッサの型番や、シリアルナンバーなどを取得してもよい。
【0095】
また、本具体例において、事前準備プログラム管理情報は、事前準備プログラム識別子を有する例を示したが、事前準備プログラムを有していてもよい。
【0096】
また、本具体例のように、事前準備プログラム取得部16は、プログラム取得部14が取得したプログラムが使用する事前準備プログラム(当該プログラムが有する事前準備識別子で識別される事前準備プログラム)であって、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを、事前準備プログラム管理情報格納部11から取得できればよく、その方法や手順などは問わない。
【0097】
以上、本実施の形態によるプログラム処理装置1によれば、プロセッサに適合する事前準備プログラムを使用するプログラムを生成することができる。
【0098】
また、本実施の形態によるプログラム処理装置1によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【0099】
また、本実施の形態によるプログラム処理装置1によれば、ユーザは、事前準備プログラムを、プロセッサの種類や性能等を意識することなく使用することができる。
【0100】
また、本実施の形態によるプログラム処理装置1によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく生成することができる。
【0101】
(実施の形態2)
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと、事前準備プログラムとを結合し、実行するプログラム処理装置について説明する。
【0102】
なお、本実施の形態において、プログラム処理装置は、例えば、いわゆるプラットフォームや、実行環境などのプログラム実行装置である。
【0103】
図8は、本実施の形態におけるプログラム処理装置2のブロック図である。プログラム処理装置2は、事前準備プログラム管理情報格納部11、プログラム格納部12、受付部13、プログラム取得部14、プロセッサ情報取得部15、事前準備プログラム取得部26、処理部27を備える。処理部27は、結合手段271、実行手段272を備える。
【0104】
事前準備プログラム取得部26は、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。当該事前準備プログラムは、通常、取得プログラムが使用するプログラムである。また、事前準備プログラム取得部26は、通常、受付部13が受け付けた指示が有するプログラム識別子で識別されるプログラムの実行時に、事前準備プログラムを取得する。ここでの「実行時」とは、例えば、受付部13がプログラム識別子を有する指示を受け付けた直後や、後述の実行手段272が当該プログラムや結合プログラムを実行する直前、後述の実行手段272が当該プログラムや結合プログラムを実行している最中などである。また、当該事前準備プログラムを取得するタイミングは、ユーザからの指示であってもよいし、予め決められていてもよい。なお、事前準備プログラム取得部26は、事前準備プログラムを取得するタイミング以外は、事前準備プログラム取得部16と同様の方法や手順により、事前準備プログラムを取得する。
【0105】
処理部27は、事前準備プログラム取得部26が取得した1以上の事前準備プログラムを用いて、1以上の取得プログラムを処理する。処理部27は、例えば、1以上の取得プログラムと、事前準備プログラム取得部26が取得した1以上の事前準備プログラムとを結合する。本実施の形態において、結合とは、通常、いわゆる動的リンクのことであるが、2以上のプログラムを1つのプログラムに統合することや、1以上のプログラムと他の1以上のプログラムとの関連付けを示す情報を生成することなどを含み、広く解する。なお、動的リンクの方法や手順などは、公知であるので、詳細な説明を省略する。また、取得プログラムと、事前準備プログラム取得部26が取得した事前準備プログラムとの結合の方法や手順の詳細については、後述する。
【0106】
結合手段271は、1以上の取得プログラムと、事前準備プログラム取得部26が取得した1以上の事前準備プログラムとを、プログラムの実行時に結合し、結合プログラムを生成する。ここでの「実行時」とは、例えば、当該プログラムの実行の直前や、当該プログラムの実行の最中などである。また、結合手段271は、例えば、生成した結合プログラムと、事前準備プログラム取得部26が取得した1以上の事前準備プログラムとを、当該結合プログラムの実行時に結合してもよい。
【0107】
また、例えば、結合手段271は、以下のようにして結合プログラムを生成してもよい。
【0108】
(A)プログラムの実行の直前に生成する場合
(1)1以上の取得プログラムが有する1以上の事前準備プログラム識別子を、取得プログラムから取得する。
(2)(1)で取得した1以上の事前準備プログラム識別子で識別される1以上の事前準備プログラムを、事前準備プログラム取得部26が取得した1以上の事前準備プログラムから取得する。
(3)1以上の取得プログラムと、(2)で取得した1以上の事前準備プログラムとを結合する。
【0109】
(B)プログラムの実行の最中に生成する場合
(1)1以上の取得プログラムを、後述の実行手段272により実行する。
(2)(1)で実行中の1以上の取得プログラムが、事前準備プログラムを呼び出すか否かを判断する。ここでは、例えば、実行中のプログラムが有する命令が、事前準備プログラムを呼び出す命令であるか否かを判断する。
(3)(2)で呼び出す場合は、当該呼び出す事前準備プログラムを識別する事前準備プログラム識別子であり、取得プログラムが有する事前準備プログラム識別子を、実行中の取得プログラムから取得する。
(4)(3)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム取得部26が取得した1以上の事前準備プログラムから取得する。
(5)1以上の取得プログラムと、(4)で取得した事前準備プログラムとを結合する。
【0110】
また、結合手段271は、例えば、取得プログラムの実行の前に、取得プログラムから事前準備プログラム識別子が取得できるか否かを判断し、取得できる場合は、前述の(A)であると判断し、取得できない場合は、前述の(B)であると判断してもよい。
【0111】
また、結合手段271は、1以上の取得プログラムと1以上の事前準備プログラムとが結合できればよく、その方法や手順などは問わない。また、結合手段271は、結合プログラムと1以上の事前準備プログラムとが結合できればよく、その方法や手順などは問わない。
【0112】
実行手段272は、結合手段271が結合した結合プログラムを実行する。また、実行手段272は、取得プログラムを実行してもよい。なお、プログラムを実行する方法や手順などは、公知であるので、詳細な説明を省略する。
【0113】
なお、プログラム取得部14、事前準備プログラム取得部26、処理部27、結合手段271、実行手段272は、通常、プロセッサやメモリ等から実現され得る。また、プログラム取得部などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
【0114】
次に、プログラム処理装置2の動作について説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図9は、プログラム処理装置2の全体動作を示すフローチャートである。
【0115】
(ステップS901)受付部13は、指示を受け付けたか否かを判断する。受け付けた場合は、ステップS902に進み、そうでない場合は、S901に戻る。
【0116】
(ステップS902)受付部13は、ステップS901で受け付けた指示が、プログラム識別子を有するか否かを判断する。有する場合は、ステップS903に進み、そうでない場合は、ステップS901に戻る。
【0117】
(ステップS903)受付部13は、ステップS901で受け付けた指示が、プログラムを実行する指示であるか否かを判断する。プログラムを実行する指示である場合は、ステップS904に進み、そうでない場合は、ステップS901に戻る。
【0118】
(ステップS904)プログラム取得部14は、ステップS201で受け付けた指示が有するプログラム識別子で識別される1以上のプログラムを、プログラム格納部12から取得する。
【0119】
(ステップS905)プロセッサ情報取得部15は、プロセッサ情報を取得する。
【0120】
(ステップS906)事前準備プログラム取得部26は、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0121】
(ステップS907)処理部27は、ステップS904で取得した1以上のプログラムと、ステップS906で取得した1以上の事前準備プログラムとを結合し、結合プログラムを生成し、実行し、ステップS901に戻る。この処理の詳細は、図8のフローチャートを用いて説明する。
【0122】
なお、図9のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0123】
図10は、図9のフローチャートのステップS907の結合プログラムの生成と実行の処理を示すフローチャートである。
【0124】
(ステップS1001)結合手段271は、ステップS704で取得した1以上のプログラムを取得する。
【0125】
(ステップS1002)結合手段271は、ステップS706で取得した1以上の事前準備プログラムを取得する。
【0126】
(ステップS1003)結合手段271は、ステップS1001で取得したプログラムから、事前準備プログラム識別子が取得できるか否かを判断する。取得できる場合は、ステップS1004に進み、そうでない場合は、ステップS1008に進む。
【0127】
(ステップS1004)結合手段271は、ステップS1001で取得したプログラムから、事前準備プログラム識別子を取得する。
【0128】
(ステップS1005)結合手段271は、ステップS1004で取得した事前準備プログラム識別子で識別される事前準備プログラムを、ステップS1002で取得した1以上の事前準備プログラムから取得する。
【0129】
(ステップS1006)結合手段271は、ステップS1001で取得したプログラムと、ステップS1005で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0130】
(ステップS1007)実行手段272は、ステップS1006で生成した結合プログラムを実行し、上位処理にリターンする。
【0131】
(ステップS1008)実行手段272は、ステップS1001で取得したプログラムを実行する。
【0132】
(ステップS1009)結合手段271は、実行中のプログラムが、事前準備プログラムを呼び出すタイミングであるか否かを判断する。呼び出すタイミングである場合は、ステップS1010に進み、そうでない場合は、ステップS1014に進む。
【0133】
(ステップS1010)結合手段271は、実行中のプログラムが呼び出す事前準備プログラムを識別する事前準備プログラム識別子を、実行中のプログラムから取得する。
【0134】
(ステップS1011)結合手段271は、ステップS1010で取得した事前準備プログラム識別子で識別される事前準備プログラムを、ステップS1002で取得した1以上の事前準備プログラムから取得する。
【0135】
(ステップS1012)結合手段271は、実行中のプログラムと、ステップS1011で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0136】
(ステップS1013)実行手段272は、ステップS1012で生成した結合プログラムを実行する。
【0137】
(ステップS1014)実行手段272は、ステップS1013で実行した結合プログラムが実行中であるか否かを判断する。実行中である場合は、ステップS1009に戻り、そうでない場合は、上位処理にリターンする。
【0138】
(具体例)
次に、プログラム処理装置2の動作の具体例について説明する。なお、本具体例において、プログラム処理装置1は、任意のプログラムを実行するための実行環境であるものとする。また、本具体例において、事前準備プログラム管理情報格納部11には、図11に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プログラム格納部12に格納されているプログラムが有する可能性のあるプログラム識別子(項目名:識別子)と、プロセッサ条件(項目名:プロセッサ)と、事前準備プログラム取得部26が取得し得る事前準備プログラムの識別子(項目名:プログラム)とを有する。なお、プロセッサ条件は、上から順に、動作クロック、命令セットの種類、コア数の条件を示す。また、当該プロセッサ条件が有する各条件は、論理積(AND)である。また、事前準備プログラム識別子(項目名:プログラム)で識別される事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されているものとする。
【0139】
(例1)
まず、ユーザが、プログラムを実行するために、当該プログラムのアイコンを、マウスを用いてダブルクリックしたとする。すると、受付部13は、当該プログラムを識別するプログラム識別子を有するプログラムを実行する指示を受け付ける。
【0140】
次に、プログラム取得部14は、受付部13が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部12から取得し、バイナリコードであるプログラムを取得したものとする。当該プログラムは、使用する事前準備プログラムのファイル名「Library.h」を有しているものとする。
【0141】
次に、プロセッサ情報取得部15は、プロセッサ属性情報である動作クロック「3.2GHz」、2次キャッシュ「256KB」、命令セットの種類「ISA_64」、コア数「8」を取得したものとする。
【0142】
次に、事前準備プログラム取得部26は、まず、プログラム取得部14が取得したバイナリコードが有する事前準備プログラム識別子を有する図11の「ID=012」から「ID=014」までのレコードを取得する。次に、事前準備プログラム取得部26は、図11の「ID=012」から「ID=014」までのレコードのうち、プロセッサ情報取得部15が取得した動作クロック「3.2GHz」、2次キャッシュ「256KB」、命令セットの種類「ISA_64」、コア数「8」が合致するプロセッサ条件を有する「ID=013」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library_32_64_8.h」を取得する。そして、事前準備プログラム取得部26は、取得した事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0143】
次に、結合手段271は、プログラム取得部14が取得したバイナリコードと、事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、実行手段272は、結合手段271が生成した結合プログラムを実行する。
【0144】
(例2)
まず、ユーザが、(例2−1)と同様の操作を行い、プログラム取得部14は、事前準備プログラムのファイル名「Library.h」を有するバイナリコードであるプログラムを取得したものとする。
【0145】
次に、プロセッサ情報取得部15は、プロセッサ情報であるプロセッサ属性情報を取得し、動作周波数「3.2GHz」、2次キャッシュのサイズ「256KB」、命令セットの種類「ISA_64」、コア数「8」を取得したものとする。
【0146】
次に、事前準備プログラム取得部26は、プロセッサ情報取得部15が取得した動作周波数「3.2GHz」、2次キャッシュのサイズ「256KB」、命令セットの種類「ISA_64」、コア数「8」が合致するプロセッサ条件を有する「ID=013」のレコードを取得から、事前準備プログラム識別子(項目名:プログラム)「Library_32_64_8.h」を取得する。そして、事前準備プログラム取得部26は、取得した事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0147】
次に、実行手段272は、プログラム取得部14が取得したバイナリコードを実行する。そして、結合手段271は、実行中のバイナリコードが、事前準備プログラムを呼び出すか否かを判断する。ここで、結合手段271は、実行中のバイナリコードが、事前準備プログラム識別子「Library.h」を呼び出すと判断したとする。すると、結合手段271は、当該事前準備プログラム識別子を有する図11の「ID=013」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library_32_64_8.h」を取得する。そして、結合手段271は、取得した事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを、事前準備プログラム取得部26が取得した事前準備プログラムから取得する。この結果、結合手段271は、事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを取得する。
【0148】
次に、結合手段271は、実行中のバイナリコードと、事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、実行手段272は、結合手段271が生成した結合プログラムを実行する。
【0149】
なお、本具体例において、プロセッサ属性情報として、動作周波数、2次キャッシュのサイズ、命令セットの種類、コア数を取得する例を示したが、FSBの通信速度や、ソケット形状などを取得してもよい。
【0150】
また、本具体例において、事前準備プログラム管理情報は、事前準備プログラム識別子を有する例を示したが、事前準備プログラムを有していてもよい。
【0151】
また、本具体例のように、事前準備プログラム取得部26は、プログラム取得部14が取得したプログラムが使用する事前準備プログラム(当該プログラムが有する事前準備識別子で識別される事前準備プログラム)であって、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを、事前準備プログラム管理情報格納部11から取得できればよく、その方法や手順などは問わない。
【0152】
以上、本実施の形態によるプログラム処理装置2によれば、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。
【0153】
また、本実施の形態によるプログラム処理装置2によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【0154】
また、本実施の形態によるプログラム処理装置2によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく実行することができる。
【0155】
(実施の形態3)
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと共に、取得した事前準備プログラムを実行するプログラム処理装置について説明する。
【0156】
なお、本実施の形態におけるプログラム処理装置は、例えば、プログラム選択装置や、プログラム実行装置などである。
【0157】
図12は、本実施の形態におけるプログラム処理装置3のブロック図である。プログラム処理装置3は、事前準備プログラム管理情報格納部31、プログラム格納部32、受付部33、プログラム取得部34、プロセッサ情報取得部15、事前準備プログラム取得部36、処理部37、蓄積部38、取得事前準備プログラム格納部39を備える。
【0158】
事前準備プログラム管理情報格納部31は、1以上の事前準備プログラム管理情報を格納し得る。当該事前準備プログラム管理情報は、通常、2以上のプロセッサ条件と、各プロセッサ条件に対応する2以上の事前準備プログラム識別子とを有する。また、事前準備プログラム管理情報は、通常、後述のプログラムが有する可能性のある事前準備プログラム識別子と、当該識別子に対応する2以上の事前準備プログラム識別子であって、後述のプログラムが使用する可能性のある事前準備プログラムを識別する2以上の事前準備プログラム識別子とを有する。
【0159】
プログラム格納部32は、1以上のプログラムを格納し得る。当該プログラムは、通常、2以上の事前準備プログラムを有している。また、当該プログラムは、通常、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する。なお、当該プログラムは、同一の処理を行う2以上の事前準備プログラムであり、2以上の各プロセッサ上で動作する2以上の事前準備プログラムの集合を有していることが好適である。また、当該プログラムは、通常、当該事前準備プログラムのうち、当該プログラムが動作するプロセッサに対応する1以上の事前準備プログラムを使用する。
【0160】
また、プログラム格納部32は、事前準備プログラムを有していない1以上のプログラムを格納してもよい。この場合、プログラム格納部32は、通常、当該1以上のプログラムが使用する1以上の事前準備プログラムを格納する。
【0161】
受付部33は、1以上のプログラム識別子を有する指示を受け付ける。当該指示は、通常、当該プログラム識別子により識別されるプログラムを実行する指示である。なお、受付部33が受け付けるその他の指示等は、受付部13と同様であるので、説明を省略する。
【0162】
受付部33における指示の入力手段は、マウスなどのポインティングデバイスや、キーボード、メニュー画面によるものなど、何でもよい。受付部33は、ポインティングデバイス等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェアなどで実現され得る。
【0163】
プログラム取得部34は、受付部33が受け付けた指示が有する1以上のプログラム識別子で識別されるプログラムを、プログラム格納部32から取得する。プログラム取得部34は、通常、受付部33がプログラム識別子を有する指示を受け付けると、当該プログラムを取得する。なお、以下、プログラム取得部34が取得したプログラムを、取得プログラムとする。
【0164】
事前準備プログラム取得部36は、例えば、取得プログラムが1以上の事前準備プログラムを有している場合は、当該取得プログラムが有する1以上の事前準備プログラムの中から、取得プログラムが使用する1以上の事前準備プログラムを取得する(選択する)。また、事前準備プログラム取得部36は、例えば、取得プログラムが1以上の事前準備プログラムを有していない場合は、プログラム格納部32に格納されている1以上の事前準備プログラムの中から、取得プログラムが使用する1以上の事前準備プログラムを取得する。また、事前準備プログラム取得部36は、通常、後述の処理部37が取得プログラムを実行中に、事前準備プログラムを取得するが、後述の処理部37が取得プログラムの実行を開始した直後に、事前準備プログラムを取得してもよい。また、事前準備プログラム取得部36は、取得プログラムが使用する1以上の事前準備プログラムを識別する事前準備プログラム識別子を取得してもよい。
【0165】
取得プログラムが1以上の事前準備プログラムを有している場合、事前準備プログラム取得部36は、例えば、以下の(A1)または(A2)のいずれかの手順により事前準備プログラムを取得する。
【0166】
(A1)取得プログラムの実行中に事前準備プログラムを取得する場合
(1)処理部37が実行を開始する取得プログラム中の命令を取得する。
(2)(1)で取得した命令が、事前準備プログラム識別子を含むか否かを判断する。
(3)(2)で「含む」と判断した場合、(1)で取得した命令から事前準備プログラム識別子を取得する。
(4)(3)で取得した事前準備プログラム識別子を有する事前準備プログラム管理情報を、事前準備プログラム管理情報格納部31から取得する。
(5)(4)で取得した事前準備プログラム管理情報が有するプロセッサ条件が、プロセッサ情報取得部15が取得したプロセッサ情報に合致するか否かを判断する。
(6)(4)で取得した事前準備プログラム管理情報から、(5)で「合致する」と判断した事前準備プログラム管理情報を取得する。
(7)(6)で取得した事前準備プログラム管理情報が有する事前準備プログラム識別子であって、(3)で取得した事前準備プログラム識別子に対応する事前準備プログラム識別子を取得する。
(8)(7)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、取得プログラムから取得する。
【0167】
なお、(2)において、「含む」とは、一致することも含み広く解する。また、(7)において取得する事前準備プログラム識別子は、つまりは、取得プログラムが有している事前準備プログラムを識別する事前準備プログラム識別子である。また、事前準備プログラム取得部36は、(A1)の処理を行う場合、処理部37が取得プログラム中の命令を実行する度に、上記(1)〜(8)の処理を行う。
【0168】
(A2)取得プログラムの実行開始の直後に事前準備プログラムを取得する場合
(1)取得プログラムから、当該プログラムが有する1以上の命令が含む1以上の事前準備プログラム識別子を取得する。
(2)(1)で取得した各事前準備プログラム識別子を有する1以上の事前準備プログラム管理情報を、事前準備プログラム管理情報格納部31から取得する。
(3)(2)で取得した各事前準備プログラム管理情報が有するプロセッサ条件が、プロセッサ情報取得部15が取得したプロセッサ情報に合致するか否かを判断する。
(4)(2)で取得した1以上の事前準備プログラム管理情報から、(3)で「合致する」と判断した事前準備プログラム管理情報を取得する。
(5)(4)で取得した事前準備プログラム管理情報が有する事前準備プログラム識別子であって、(1)で取得した事前準備プログラム識別子に対応する事前準備プログラム識別子を取得する。
(6)(5)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、取得プログラムから取得する。
【0169】
なお、(7)において取得する事前準備プログラム識別子は、つまりは、取得プログラムが有している事前準備プログラムを識別する事前準備プログラム識別子である。また、事前準備プログラム取得部36は、(A2)の処理を行う場合、処理部37が取得プログラムの実行を開始した直後に、上記(1)〜(6)の処理を行う。
【0170】
また、取得プログラムが1以上の事前準備プログラムを有していない場合、事前準備プログラム取得部36は、例えば、以下の(B1)または(B2)のいずれかの手順により事前準備プログラムを取得する。
【0171】
(B1)取得プログラムの実行中に事前準備プログラムを取得する場合
(1)〜(7):前述の(A1)の(1)〜(7)と同様であるので、説明を省略する。
(8)(7)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、プログラム格納部32から取得する。
【0172】
(B2)取得プログラムの実行開始の直後に事前準備プログラムを取得する場合
(1)〜(5):前述の(A2)の(1)〜(5)と同様であるので、説明を省略する。
(6)(5)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、プログラム格納部32から取得する。
【0173】
なお、プロセッサ情報がプロセッサ条件を満たすか否かの判断等は、事前準備プログラム取得部16、および事前準備プログラム取得部26が行う判断と同様であるので、説明を省略する。
【0174】
処理部37は、事前準備プログラム取得部36が取得した1以上の事前準備プログラムを用いて、1以上の取得プログラムを処理する。処理部37は、例えば、1以上の取得プログラムを、事前準備プログラム取得部36が取得した事前準備プログラムと共に実行する。つまり、処理部37は、取得プログラムが、事前準備プログラム取得部36が取得した1以上の事前準備プログラムを使用するように、取得プログラムを実行する。
【0175】
例えば、取得プログラムが事前準備プログラム識別子「func」を有しているとする(例えば、取得プログラムが有する命令に、当該識別子「func」が含まれているような場合)。また、当該取得プログラムが、当該事前準備プログラム識別子に対応する事前準備プログラムであり、「func_A」、「func_B」、「func_C」のそれぞれで識別される事前準備プログラムを有しているとする。そして、事前準備プログラム取得部36が取得した事前準備プログラムの識別子が「func_B」であったとする。すると、処理部37は、取得プログラムが使用する事前準備プログラムであり、「func」に対応する事前準備プログラムとして、「func_B」で識別される事前準備プログラムを使用するように、取得プログラムを実行する。
【0176】
また、処理部37は、例えば、1以上の取得プログラムと共に実行する事前準備プログラムを、後述の取得事前準備プログラム格納部39から取得してもよい。また、処理部37は、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子を取得してもよい。これらの取得は、例えば、処理部37が過去に処理したことのある取得プログラムを、再度、処理するような場合に行う。
【0177】
例えば、取得プログラムが事前準備プログラム識別子「func」を有しているとする(例えば、取得プログラムが有する命令に、当該識別子「func」が含まれているような場合)。また、当該識別子「func」に対応する事前準備プログラム識別子「func_B」が取得事前準備プログラム格納部39に格納されている場合、処理部37は、取得プログラムが使用する事前準備プログラムであり、「func」に対応する事前準備プログラムとして、「func_B」で識別される事前準備プログラムを使用するように、取得プログラムを実行する。
【0178】
なお、プログラムの実行の方法や手順などは、公知であるので、詳細な説明を省略する。
【0179】
蓄積部38は、事前準備プログラム取得部36が取得した1以上の事前準備プログラムであり、処理部37が1以上の取得プログラムと共に実行する1以上の事前準備プログラムを、後述の取得事前準備プログラム格納部39に蓄積する。蓄積部38は、通常、処理部37が処理する1以上の取得プログラムが有する事前準備プログラム識別子と対応付けて、当該事前準備プログラムを蓄積する。また、蓄積部38は、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子を蓄積してもよい。
【0180】
取得事前準備プログラム格納部39は、事前準備プログラム取得部36が取得した1以上の事前準備プログラムであり、処理部37が1以上の取得プログラムと共に実行する1以上の事前準備プログラムを格納し得る。当該事前準備プログラムは、通常、取得プログラムが有する事前準備プログラム識別子と対応付けられている。また、取得事前準備プログラム格納部39には、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子が格納されてもよい。
【0181】
なお、事前準備プログラム管理情報格納部31、プログラム格納部32、取得事前準備プログラム格納部39は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【0182】
また、プログラム取得部34、事前準備プログラム取得部36、処理部37、蓄積部38は、通常、プロセッサやメモリ等から実現され得る。プログラム取得部34などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
【0183】
次に、プログラム処理装置3の動作について説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図13は、プログラム処理装置3の全体動作を示すフローチャートである。なお、図13において、ステップS1301からステップS1303までは、図9のステップS901からステップS903までと同様であるので、説明を省略する。
【0184】
(ステップS1304)プログラム取得部34は、ステップS1301で受け付けた指示が有するプログラム識別子で識別される1以上のプログラムを、プログラム格納部32から取得する。ここで、m個の命令を有するプログラムが取得できたものとする。
【0185】
(ステップS1305)プロセッサ情報取得部15は、プロセッサ情報を取得する。
【0186】
(ステップS1306)処理部37は、カウンタiに1をセットする。
【0187】
(ステップS1307)処理部37は、命令[i]が事前準備プログラム識別子を含むか否かを判断する。含む場合は、ステップS1308に進み、そうでない場合は、ステップS1310に進む。
【0188】
(ステップS1308)事前準備プログラム取得部36は、命令[i]が含む事前準備プログラム識別子を取得する。
【0189】
(ステップS1309)事前準備プログラム取得部36は、ステップS1305で取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムであり、ステップS1308で取得した事前準備プログラム識別子に対応する事前準備プログラムを取得する。
【0190】
(ステップS1310)処理部37は、ステップS1309で取得した事前準備プログラムを実行する。
【0191】
(ステップS1311)処理部37は、命令[i]を実行する。
【0192】
(ステップS1312)処理部37は、iがmであるか否かを判断する。mである場合は、ステップS1301に戻り、そうでない場合は、ステップS1313に進む。
【0193】
(ステップS1313)処理部37は、iを1インクリメントし、ステップS1307に戻る。
【0194】
なお、図13のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0195】
また、図13のフローチャートにおいて、ステップS1305の処理は、ステップS1309の処理の前であれば、そのタイミングは問わない。つまり、例えば、ステップS1305の処理は、ステップS1301の処理の前に行ってもよいし、ステップS1304の処理の前に行ってもよい。
【0196】
また、図13のフローチャートにおいて、ステップS1309の後に、蓄積部38が、ステップS1308で取得した事前準備プログラム識別子と、ステップS1309で取得した事前準備プログラムとを対応付けて、取得事前準備プログラム格納部39に蓄積してもよい。
【0197】
また、図13のフローチャートにおいて、ステップS1307からステップS1309までの処理により、ステップS1304が取得したプログラムが有するすべての事前準備プログラム識別子に対応する事前準備プログラムを取得し、当該取得したすべての事前準備プログラムを、ステップS1310の処理により実行してもよい。
【0198】
(具体例)
次に、プログラム処理装置3の動作の具体例について説明する。なお、本具体例において、プログラム処理装置3は、プログラムを実行するプログラム実行装置であるものとする。また、本具体例において、事前準備プログラム管理情報格納部31には、図14に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プログラム格納部32に格納されているプログラムが有する可能性のある事前準備プログラム識別子(項目名:識別子)と、プロセッサ条件(項目名:プロセッサ)と、当該プログラムが使用する可能性のある事前準備プログラムの識別子(項目名:プログラム)とを有する。また、プログラム格納部32には、1以上の事前準備プログラムを有するバイナリコードである1以上のプログラムが格納されているものとする。
【0199】
まず、ユーザが、プログラムを実行するために、当該プログラムのアイコンを、マウスを用いてダブルクリックしたとする。すると、受付部33は、当該プログラムを識別するプログラム識別子を有するプログラムを実行する指示を受け付ける。
【0200】
次に、プログラム取得部34は、受付部33が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部32から取得し、バイナリコードであるプログラムを取得する。ここで、当該プログラムは、例えば、事前準備プログラム識別子「EdgeFilter」を有しているものとする。また、当該プログラムは、事前準備プログラム識別子「EdgeFilter」に対応する事前準備プログラムであって、当該プログラムが使用する可能性のある2以上の事前準備プログラムを有しているものとする。なお、当該2以上の各事前準備プログラムを識別する事前準備プログラム識別子は、「EdgeFilter_A」、「EdgeFilter_B」、「EdgeFilter_C」であるものとする。
【0201】
次に、プロセッサ情報取得部15は、プロセッサ情報であるプロセッサ識別情報を取得し、プロセッサ識別情報「CPU_B」を取得したものとする。
【0202】
次に、事前準備プログラム取得部36は、まず、プログラム取得部34が取得したバイナリコードが有する事前準備プログラム識別子「EdgeFilter」を、当該バイナリコードから取得する。次に、事前準備プログラム識別子は、当該事前準備プログラム識別子「EdgeFilter」を有する図14の「ID=015」から「ID=017」までのレコードを取得する。次に、事前準備プログラム取得部36は、図14の「ID=015」から「ID=017」までのレコードのうち、プロセッサ識別情報「CPU_B」が合致するプロセッサ条件を有する「ID=016」のレコードを特定する。そして、事前準備プログラム取得部36は、当該「ID=016」のレコードから、事前準備プログラム識別子(項目名:プログラム)「EdgeFilter_B」を取得する。
【0203】
次に、処理部37は、プログラム取得部34が取得したバイナリコードが有する事前準備プログラム識別子「EdgeFilter」に対応する事前準備プログラムは、事前準備プログラム識別子「EdgeFilter_B」で識別される事前準備プログラムであるとして、プログラム取得部34が取得したバイナリコードを実行する。
【0204】
なお、本具体例において、プロセッサ識別情報を取得する例を示したが、プロセッサ属性情報を取得してもよい。
【0205】
また、本具体例において、プログラム取得部34が取得したプログラムが、1以上の事前準備プログラムを有する例を示したが、当該プログラムは、1以上の事前準備プログラムを有していなくてもよい。当該場合、当該1以上の事前準備プログラムは、通常、プログラム格納部32に格納されている。
【0206】
また、本具体例において、事前準備プログラム取得部36が、プログラム取得部34が取得したプログラムが使用する事前準備プログラムを識別する事前準備プログラム識別子を取得する例を示したが、事前準備プログラム取得部36は、プログラム取得部34が取得したプログラムが使用する事前準備プログラムを取得してもよい。当該場合、事前準備プログラム取得部36は、通常、プログラム取得部34が取得したプログラム、またはプログラム格納部32から、事前準備プログラムを取得する。
【0207】
以上、本実施の形態によるプログラム処理装置3によれば、プロセッサに適合する事前準備プログラムを用いて、プログラムを実行することができる。
【0208】
また、本実施の形態によるプログラム処理装置3によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【0209】
また、本実施の形態によるプログラム処理装置3によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく実行することができる。
【0210】
なお、本実施の形態において、処理部37は、通常、取得プログラムから、当該プログラムが有する命令を1つずつ取得しながら、当該命令を実行する。また、事前準備プログラム取得部36は、当該命令の取得毎に、当該命令が事前準備プログラム識別子を含むか否かを判断し、含む場合は、当該事前準備プログラム識別子に対応付けられている事前準備プログラム(事前準備プログラム識別子でもよい)であって、取得プログラムが動作するプロセッサに対応する事前準備プログラム(事前準備プログラム識別子でもよい)を取得する。
【0211】
つまり、プログラム処理装置3は、プログラムが有する命令を1つずつ実行しながら、当該命令が事前準備プログラム識別子を含むか否かを判断し、含む場合は、当該事前準備プログラム識別子に対応付けられている事前準備プログラム(事前準備プログラム識別子でもよい)であって、プログラム処理装置3、および当該プログラムが動作するプロセッサに対応する事前準備プログラム(事前準備プログラム識別子でもよい)を、実行するプログラムから取得してもよい。
【0212】
また、本実施の形態において、事前準備プログラム取得部36は、例えば、処理部37が取得プログラムの実行を開始した直後に、当該取得プログラムが有する命令が含む事前準備プログラム識別子を取得し、当該事前準備プログラム識別子に対応付けられている事前準備プログラム(事前準備プログラム識別子でもよい)であって、取得プログラムが動作するプロセッサに対応する事前準備プログラム(事前準備プログラム識別子でもよい)を取得してもよい。この場合、事前準備プログラム取得部36は、通常、取得プログラムが有する命令に含まれる事前準備プログラム識別子と、取得した事前準備プログラム識別子(事前準備プログラム識別子でもよい)とを対応付ける。また、処理部37は、通常、取得プログラムから、当該プログラムが有する命令を1つずつ取得しながら、当該命令を実行する。そして、処理部37は、実行する命令が事前準備プログラム識別子を含む場合、当該事前準備プログラム識別子を、対応付いている事前準備プログラム(事前準備プログラム識別子でもよい)に変更し、当該命令を実行する。
【0213】
また、本実施の形態において、事前準備プログラム取得部36は、例えば、処理部37が取得プログラムの実行を開始した直後に、当該取得プログラムが有する命令が含むすべての事前準備プログラム識別子を取得し、当該事前準備プログラム識別子に対応付けられている事前準備プログラムであって、取得プログラムが動作するプロセッサに対応する事前準備プログラムを取得してもよい。この場合、処理部37は、通常、取得プログラムから、当該プログラムが有する命令を1つずつ取得しながら当該命令を実行する。そして、処理部37は、実行する命令が事前準備プログラム識別子を含む場合、当該事前準備プログラム識別子に対応する事前準備プログラムを、事前準備プログラム取得部36が取得した事前準備プログラムから取得し、実行する。
【0214】
また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されてもよいことは言うまでもない。
【0215】
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0216】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【0217】
また、上記各実施の形態におけるプログラム処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報と、1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムとが格納されており、コンピュータを、当該プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理部として機能させるためのプログラムである。
【0218】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアでしか行われない処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理は少なくとも含まれない。
【0219】
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【0220】
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
【0221】
また、図15は、前述のプログラムを実行して、前述の実施の形態のプログラム処理装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
【0222】
図15において、コンピュータシステム9は、CD−ROM(Compact Disk Read Only Memory)ドライブ9011、FD(Flexible Disk)ドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
【0223】
図16は、コンピュータシステム9のブロック図である。図16において、コンピュータ901は、CD−ROMドライブ9011、FDドライブ9012に加えて、CPU(Central Processing Unit)9013と、ブートアッププログラム等のプログラムを記憶するためのROM(Read−Only Memory)9014と、CPU9013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM(Random Access Memory)9015と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク9016と、CD−ROMドライブ9011、FDドライブ9012、CPU9013等を相互に接続するバス9017とを備える。ここでは図示しないが、コンピュータ901は、さらに、LANへの接続を提供するネットワークカードを備えていてもよい。
【0224】
コンピュータシステム9に、前述の実施の形態のプログラム処理装置等の機能を実行させるプログラムは、CD−ROM9101、またはFD9102に記憶されて、CD−ROMドライブ9011またはFDドライブ9012に挿入され、さらにハードディスク9016に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク9016に記憶されてもよい。プログラムは実行の際にRAM9015にロードされる。プログラムは、CD−ROM9101、FD9102またはネットワークから直接、ロードされてもよい。
【0225】
プログラムは、コンピュータ901に、前述の実施の形態のプログラム処理装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム9がどのように動作するかは周知であり、詳細な説明は省略する。
【0226】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【0227】
以上のように、本発明にかかるプログラム処理装置は、プロセッサに依存することなく、事前準備プログラムを使用することができるという効果を有し、コンパイラや、リンカ、プログラムの実行環境として有用である。
【符号の説明】
【0228】
1、2、3 プログラム処理装置
11、31 事前準備プログラム管理情報格納部
12、32 プログラム格納部
13、33 受付部
14、34 プログラム取得部
15 プロセッサ情報取得部
16、26、36 事前準備プログラム取得部
17、27、37 処理部
171 結合プログラム格納手段
172、271 結合手段
173 蓄積手段
272 実行手段
【技術分野】
【0001】
本発明は、ライブラリ等を使用するプログラム処理装置等に関するものである。
【背景技術】
【0002】
従来、様々なライブラリが開発されている(非特許文献1、非特許文献2参照)。このようなライブラリを用いることによって、ユーザは、様々なアプリケーションを開発することができた。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“OpenCV”、[online]、[2011年9月15日検索]、インターネット[URL:http://opencv.willowgarage.com/]
【非特許文献2】“LAPACK−Linear Algebra PACKage”、[online]、[2011年9月15日検索]、インターネット[URL:http://www.netlib.org/lapack/]
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のライブラリは、プロセッサごとに最適化され、それぞれの環境に依存するものであった。
【課題を解決するための手段】
【0005】
本第一の発明のプログラム処理装置は、プロセッサに関する条件である1以上のプロセッサ条件と、プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、1以上の事前準備プログラムと、1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムを格納し得るプログラム格納部と、プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、指示に含まれるプログラム識別子で識別されるプログラムを、プログラム格納部から取得するプログラム取得部と、プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、プログラム取得部が取得した1以上のプログラムを処理する処理部とを具備するプログラム処理装置である。
【0006】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0007】
また、本第二の発明のプログラム処理装置は、第一の発明に対して、プログラムは、同一の処理を行う2以上の事前準備プログラムであり、2以上の各プロセッサに対応する2以上の事前準備プログラムと、2以上の事前準備プログラムのうち、プログラムが動作するプロセッサに対応する1以上の事前準備プログラムとを使用するプログラムであり、事前準備プログラム管理情報格納部は、プロセッサに関する条件である2以上のプロセッサ条件と、各プロセッサ条件に対応する2以上の事前準備プログラム識別子とを有する1以上の事前準備プログラム管理情報を格納しており、受付部は、1以上のプログラム識別子を有するプログラムを実行する指示を受け付け、事前準備プログラム取得部は、プログラムの実行中に、プログラム取得部が取得したプログラムが使用する1以上の事前準備プログラムであり、プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得し、処理部は、プログラム取得部が取得したプログラムを、プログラムが使用する事前準備プログラムであり、事前準備プログラム取得部が取得した事前準備プログラムと共に実行するプログラム処理装置である。
【0008】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを実行することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0009】
また、本第三の発明のプログラム処理装置は、第一の発明に対して、処理部は、プログラム取得部が取得した1以上のプログラムと、事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合するプログラム処理装置である。
【0010】
このような構成により、プロセッサに適合する事前準備プログラムを用いて、プログラムを結合することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0011】
また、本第四の発明のプログラム処理装置は、第三の発明に対して、処理部は、1以上の事前準備プログラムを使用するプログラムと、1以上の事前準備プログラムとを結合した結合プログラムを格納し得る結合プログラム格納手段と、プログラム取得部が取得した1以上のプログラムと、事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合する結合手段と、プログラムと、事前準備プログラムとを結合した結合プログラムを、結合プログラム格納手段に蓄積する蓄積手段とを具備するプログラム処理装置である。
【0012】
このような構成により、プロセッサに適合する事前準備プログラムを用いて結合したプログラムを、蓄積することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【0013】
また、本第五の発明のプログラム処理装置は、第三の発明に対して、プログラム取得部は、指示に含まれるプログラム識別子で識別されるプログラムの実行時に、プログラムをプログラム格納部から取得し、事前準備プログラム取得部は、指示に含まれるプログラム識別子で識別されるプログラムの実行時に、1以上の事前準備プログラムを事前準備プログラム管理情報格納部から取得し、処理部は、プログラム取得部が取得した1以上のプログラムと、事前準備プログラム取得部が取得した1以上の事前準備プログラムとを、プログラムの実行時に結合する結合手段と、結合手段が結合した結合プログラムを実行する実行手段とを具備するプログラム処理装置である。
【0014】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【0015】
また、本第六の発明のプログラム処理装置は、第五の発明に対して、結合手段は、実行手段の結合プログラムの実行前に、プログラムと、1以上の事前準備プログラムとを結合するプログラム処理装置である。
【0016】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく実行することができる。
【0017】
また、本第七の発明のプログラム処理装置は、第五の発明に対して、結合手段は、実行手段の結合プログラムの実行中に、プログラムと、1以上の各事前準備プログラムとを結合するプログラム処理装置である。
【0018】
このような構成により、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。また、ユーザは、当該プログラムを、当該プロセッサの種類や性能等を意識することなく生成し、実行することができる。
【0019】
また、本第八の発明のプログラム処理装置は、第一から第七いずれかの発明に対して、プロセッサ情報は、プロセッサを識別するプロセッサ識別情報であり、プロセッサ条件は、プロセッサ識別情報を有する条件であるプログラム処理装置である。
【0020】
このような構成により、プロセッサ識別情報を用いて、プロセッサを判別することができる。また、ユーザは、プログラムが動作するプロセッサに適合する事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【0021】
また、本第九の発明のプログラム処理装置は、第一から第七いずれかの発明に対して、プロセッサ情報は、プロセッサの属性を示す1以上のプロセッサ属性情報であり、プロセッサ条件は、プロセッサ属性情報を有する条件であるプログラム処理装置である。
【0022】
このような構成により、プロセッサ属性情報を用いて、プロセッサを判別することができる。また、ユーザは、プログラムが動作するプロセッサに適合する事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【発明の効果】
【0023】
本発明によるプログラム処理装置等によれば、プロセッサに適合する事前準備プログラムを用いて、プログラムを処理することができる。また、ユーザは、当該事前準備プログラムを、当該プロセッサの種類や性能等を意識することなく使用することができる。
【図面の簡単な説明】
【0024】
【図1】実施の形態1におけるプログラム処理装置1のブロック図
【図2】同プログラム処理装置1の全体動作について説明するフローチャート
【図3】同結合プログラムの生成と蓄積の処理について説明するフローチャート
【図4】同事前準備プログラム管理情報の例を示す図
【図5】同プログラムの例を示す図
【図6】同事前準備プログラム管理情報の例を示す図
【図7】同プログラムの例を示す図
【図8】同実施の形態2におけるプログラム処理装置2のブロック図
【図9】同プログラム処理装置2の全体動作について説明するフローチャート
【図10】同結合プログラムの生成と実行の処理について説明するフローチャート
【図11】同事前準備プログラム管理情報の例を示す図
【図12】同実施の形態3におけるプログラム処理装置3のブロック図
【図13】同プログラム処理装置3の全体動作について説明するフローチャート
【図14】同事前準備プログラム管理情報の例を示す図
【図15】各実施の形態におけるコンピュータシステムの概観図
【図16】各実施の形態におけるコンピュータシステムのブロック図
【発明を実施するための形態】
【0025】
以下、本発明によるプログラム処理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、所定の情報が格納され得る格納部等において、当該格納部に情報が記憶される過程は問わないものとする。例えば、記録媒体を介して情報が格納部等で記憶されるようになってもよい。また、通信回線などを介して送信された情報が格納部等で記憶されるようになってもよい。さらに、入力デバイスを介して入力された情報が格納部等で記憶されるようになってもよい。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
【0026】
また、以下の実施の形態において、「プロセッサ」とは、通常、CPU(Central Processing Unit)のことであるが、例えば、GPU(Graphics Processing Unit)や、FPU(Floating Point Number Processing Unit)、MPU(Micro−Processing Unit)、DSP(Digital Signal Processor)などであってもよい。
【0027】
また、以下の実施の形態において、「プログラム」とは、コンピュータプログラムのことであり、ソースコードや、バイナリコード、オブジェクトコードなどである。また、プログラムの形態は問わない。また、これらのコードが示すものは、関数や、メソッド、クラス、命令などであり、その内容は問わない。また、当該プログラムは、通常、プログラム識別子を有しており、当該プログラム識別子により識別される。当該プログラム識別子は、例えば、ファイル名や、関数名、メソッド名、クラス名などである。
【0028】
(実施の形態1)
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと、事前準備プログラムとを結合し、蓄積するプログラム処理装置について説明する。
【0029】
なお、本実施の形態において、プログラム処理装置は、例えば、コンパイラや、リンカなどのプログラム結合装置である。
【0030】
図1は、本実施の形態におけるプログラム処理装置1のブロック図である。プログラム処理装置1は、事前準備プログラム管理情報格納部11、プログラム格納部12、受付部13、プログラム取得部14、プロセッサ情報取得部15、事前準備プログラム取得部16、処理部17を備える。処理部17は、結合プログラム格納手段171、結合手段172、蓄積手段173を備える。
【0031】
事前準備プログラム管理情報格納部11は、2以上の事前準備プログラム管理情報を格納し得る。事前準備プログラム管理情報とは、1以上のプロセッサ条件と、当該プロセッサ条件に対応する1以上の事前準備プログラムとを有する情報である。また、事前準備プログラム管理情報は、1以上のプロセッサ条件と、当該プロセッサ条件に対応する1以上の事前準備プログラム識別子とを有する情報であってもよい。
【0032】
プロセッサ条件とは、プロセッサに関する条件である。プロセッサ条件は、通常、プロセッサに関する情報であるプロセッサ情報を有する。プロセッサ情報は、例えば、プロセッサを識別するプロセッサ識別情報や、プロセッサの属性を示す1以上のプロセッサ属性情報などである。プロセッサ識別情報は、例えば、プロセッサの型番や、シリアルナンバー、プロセッサ名などである。また、プロセッサ属性情報は、例えば、製造メーカー名や、プロセッサ名、動作周波数、キャッシュメモリのサイズ、FSB(Front Side Bus)の通信速度、ソケット形状、消費電力、命令セットの種類、コア数などである。
【0033】
また、プロセッサ条件は、2以上のプロセッサ条件を連結する連結情報を有していてもよい。プロセッサ条件は、例えば、(1)「プロセッサ型番=(PRC001)orプロセッサ型番=(PRC003)」や、(2)「コア数=2〜4」や、(3)「(コア数=4)or(コア数=8)」、(4)「(コア数=2〜4)&(2次キャッシュ=256KB〜512KB)」などである。(1)は、「プロセッサの型番が『PRC001』、またはプロセッサの型番が『PRC002』」であることを示す。また、(2)は、「コア数が2個から4個」であることを示す。また、(3)は、「コア数が4個、またはコア数が8個」であることを示す。また、(4)は、「コア数が2個から4個であり、2次キャッシュメモリのサイズが256KBから512KB」であることを示す。
【0034】
また、事前準備プログラムとは、ユーザまたはシステムが事前に準備した1以上のプログラムであり、プロセッサ条件に合致するプロセッサにおいて実行され得る1以上のプログラムである。当該システムは、通常、OSである。また、事前準備プログラムは、いわゆるライブラリであってもよい。また、事前準備プログラムは、例えば、画像処理プログラムや、数値解析プログラム、流体解析プログラムなどである。なお、事前準備プログラムが行う処理の内容や対象などは問わない。また、事前準備プログラムは、事前準備プログラムを識別するプログラム識別子である事前準備プログラム識別子を有していてもよい。
【0035】
また、事前準備プログラム管理情報が、1以上のプロセッサ条件と、1以上の事前準備プログラム識別子を有する場合、事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されていてもよいし、後述のプログラム格納部12に格納されていてもよいし、任意の記憶領域(プログラム処理装置1では無い外部装置も含む)に格納されていてもよい。
【0036】
プログラム格納部12は、1以上のプログラムを格納し得る。当該プログラムは、1以上の事前準備プログラムを使用するプログラムである。ここで、「事前準備プログラムを使用する」とは、事前準備プログラムを呼び出すことや、事前準備プログラムに対応するメッセージの発行、事前準備プログラム識別子を有すること、事前準備プログラムを有することなどを含む概念であり、事前準備プログラムの使用態様は問わない。また、当該プログラムは、事前準備プログラム識別子を有していてもよい。なお、プログラム格納部12は、通常、プログラムと、当該プログラムを識別するプログラム識別子とを対応付けて格納している。
【0037】
事前準備プログラム管理情報格納部11、およびプログラム格納部12は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【0038】
受付部13は、1以上のプログラム識別子を有する指示を受け付ける。当該指示は、通常、当該プログラム識別子で識別されるプログラムと、事前準備プログラムとを結合する指示である。また、当該指示は、例えば、当該プログラム識別子で識別されるプログラムをコンパイルする指示や、当該プログラムを実行する指示などであってもよい。また、当該指示は、1以上のプログラム識別子を有するファイルのファイル名を有していてもよい。
【0039】
例えば、プログラム処理装置1が、OS上で動作するアプリケーションなどである場合、当該指示は、例えば、プログラムを示すアイコンの当該装置へのドラッグ&ドロップや、当該装置が有するボタンのクリックなどである。また、例えば、プログラム処理装置1が、プログラムが実行されるときに必ず実行されるようなミドルウェアなどである場合、当該指示は、例えば、プログラムを示すアイコンのダブルクリックや、当該アイコンのシングルクリックなどである。なお、プログラム識別子を有する指示の形式は問わない。また、指示がプログラム識別子を有する形態は問わない。
【0040】
また、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【0041】
受付部13における指示の入力手段は、マウスなどのポインティングデバイスや、キーボード、メニュー画面によるものなど、何でもよい。受付部13は、ポインティングデバイス等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェアなどで実現され得る。
【0042】
プログラム取得部14は、受付部13が受け付けた指示が有する1以上のプログラム識別子で識別されるプログラムを、プログラム格納部12から取得する。プログラム取得部14は、通常、受付部13がプログラム識別子を有する指示を受け付けると、当該プログラムを取得する。なお、以下、プログラム取得部14が取得したプログラムを、取得プログラムとする。
【0043】
プロセッサ情報取得部15は、プロセッサ情報を取得する。プロセッサ情報の取得の方法や手順などは問わない。例えば、プロセッサ情報取得部15は、システムファイルやシステム変数などのシステム情報から取得してもよいし、いわゆるファームウェアから取得してもよいし、ユーザから入力されたプロセッサ情報を取得してもよい。また、例えば、事前準備プログラム管理情報格納部11に、プロセッサ識別情報を有するプロセッサ情報が格納されている場合、プロセッサ情報取得部15は、プロセッサ識別情報を取得してもよい。また、例えば、事前準備プログラム管理情報格納部11に、プロセッサ属性情報を有するプロセッサ情報が格納されている場合、プロセッサ情報取得部15は、1以上のプロセッサ属性情報を取得してもよい。
【0044】
また、プロセッサ情報取得部15は、通常、受付部13がプログラム識別子を有する指示を受け付けた直後に、プロセッサ情報を取得する。なお、プロセッサ情報を取得する方法や手順などは、公知であるので、詳細な説明を省略する。
【0045】
事前準備プログラム取得部16は、プロセッサ情報取得部15が取得したプロセッサ情報に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。また、当該事前準備プログラムは、通常、取得プログラムが使用するプログラムである。
【0046】
例えば、プロセッサ情報取得部15が取得したプロセッサ情報が、プロセッサ識別情報である場合、事前準備プログラム取得部16は、当該プロセッサ識別情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを取得する。また、例えば、プロセッサ情報取得部15が取得したプロセッサ情報が、属性情報である場合、事前準備プログラム取得部16は、当該プロセッサ属性情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを取得する。
【0047】
ここで、「プロセッサ識別情報が合致するプロセッサ条件」とは、当該プロセッサ識別情報により、条件が満たされるプロセッサ条件のことである。つまり、例えば、プロセッサ情報取得部15が取得したプロセッサ識別情報が、プロセッサの型番「CPRC001」であり、事前準備プログラム管理情報格納部11に格納されているプロセッサ条件が、「型番={(PRC001)or(PRC002)}」である場合、当該プロセッサ条件は、「プロセッサ識別情報が合致するプロセッサ条件」である。
【0048】
また、「プロセッサ属性情報が合致するプロセッサ条件」とは、当該プロセッサ属性情報により、条件が満たされるプロセッサ情報のことである。つまり、例えば、プロセッサ情報取得部15が取得したプロセッサ属性情報が、動作周波数「3.2GHz」、コア数「8」であり、事前準備プログラム管理情報格納部11に格納されているプロセッサ条件が、「コア数=8」である場合、当該プロセッサ条件は、「プロセッサ属性情報が合致するプロセッサ条件」である。
【0049】
また、例えば、事前準備プログラム管理情報が、1以上のプロセッサ属性条件を有する場合、事前準備プログラム取得部16は、当該プロセッサ属性条件が、プロセッサ情報取得部15が取得したプロセッサ属性情報に合致するプロセッサ属性条件に対応する事前準備プログラムを取得する。
【0050】
なお、例えば、事前準備プログラム管理情報が、1以上のプロセッサ情報と、1以上の事前準備プログラム識別子とを有している場合、事前準備プログラム取得部16は、まず、プロセッサ情報取得部15が取得したプロセッサ情報に対応する1以上の事前準備プログラム識別子を取得する。そして、事前準備プログラム取得部16は、当該事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラムが格納されている記憶領域等から取得する。当該記憶領域等とは、事前準備プログラム管理情報格納部11や、プログラム格納部12、その他の任意の記憶領域などである。
【0051】
また、事前準備プログラム取得部16は、通常、プロセッサ情報取得部15が取得したプロセッサ情報に対応し、かつ、取得プログラムが有する事前準備プログラム識別子で識別される事前準備プログラムを取得することが好適である。
【0052】
事前準備プログラム取得部16は、通常、次のような処理により事前準備プログラムを取得する。
(1)プロセッサ情報取得部15が取得したプロセッサ情報に対応する1以上の事前準備プログラム識別子を、事前準備プログラム管理情報格納部11から取得する。
(2)取得プログラムから、事前準備プログラム識別子を取得する。
(3)(1)と(2)で取得した事前準備プログラム識別子のうち、重複する事前準備プログラム識別子を取得する。
(4)(3)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0053】
処理部17は、事前準備プログラム取得部16が取得した1以上の事前準備プログラムを用いて、取得プログラムを処理する。処理部17は、例えば、1以上の取得プログラムと、事前準備プログラム取得部16が取得した1以上の事前準備プログラムとを結合する。本実施の形態において、結合とは、通常、いわゆる静的リンクのことであるが、2以上のプログラムを1つのプログラムに統合することや、1以上のプログラムと他の1以上のプログラムとの関連付けを示す情報を生成することなどを含み、広く解する。関連付けを示す情報とは、例えば、1以上のプログラムが1以上のプログラムを使用することを示す情報である。なお、静的リンクの方法や手順などは、公知であるので、詳細な説明を省略する。また、取得プログラムと、事前準備プログラム取得部16が取得した事前準備プログラムとの結合の方法や手順の詳細については、後述する。
【0054】
結合プログラム格納手段171は、結合プログラムを格納し得る。結合プログラムとは、1以上の事前準備プログラムを使用するプログラムと、1以上の事前準備プログラムとを結合したプログラムである。また、事前準備プログラムを使用するプログラムとは、通常、取得プログラムである。
【0055】
結合プログラム格納手段171は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【0056】
結合手段172は、1以上の取得プログラムと、事前準備プログラム取得部16が取得した1以上の事前準備プログラムとを結合し、結合プログラムを生成する。結合手段172は、通常、まず、各取得プログラムから事前準備プログラム識別子を取得する。そして、結合手段172は、当該事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム取得部16が取得した1以上の事前準備プログラムから取得する。そして、結合手段172は、1以上の取得プログラムと、当該取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0057】
蓄積手段173は、結合手段172が生成した結合プログラムを、結合プログラム格納手段171に蓄積する。
【0058】
なお、プログラム取得部14、プロセッサ情報取得部15、事前準備プログラム取得部16、処理部17、結合手段172、蓄積手段173は、通常、プロセッサやメモリ等から実現され得る。また、プログラム取得部14などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
【0059】
次に、プログラム処理装置1の動作について説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図2は、プログラム処理装置1の全体動作を示すフローチャートである。
【0060】
(ステップS201)受付部13は、指示を受け付けたか否かを判断する。受け付けた場合は、ステップS202に進み、そうでない場合は、S201に戻る。
【0061】
(ステップS202)受付部13は、ステップS201で受け付けた指示が、プログラム識別子を有するか否かを判断する。有する場合は、ステップS203に進み、そうでない場合は、ステップS201に戻る。
【0062】
(ステップS203)プログラム取得部14は、ステップS201で受け付けた指示が有するプログラム識別子で識別される1以上のプログラムを、プログラム格納部12から取得する。
【0063】
(ステップS204)プロセッサ情報取得部15は、プロセッサ情報を取得する。
【0064】
(ステップS205)事前準備プログラム取得部16は、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0065】
(ステップS206)処理部17は、ステップS203で取得した1以上のプログラムと、ステップS205で取得した1以上の事前準備プログラムとを結合し、結合プログラムを生成し、蓄積し、ステップS201に戻る。この処理の詳細は、図3のフローチャートを用いて説明する。
【0066】
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0067】
図3は、図2のフローチャートのステップS206の結合プログラムの生成と蓄積の処理を示すフローチャートである。
【0068】
(ステップS301)結合手段172は、ステップS203で取得した1以上のプログラムを取得する。
【0069】
(ステップS302)結合手段172は、ステップS301で取得した1以上のプログラムが有する事前準備プログラム識別子を取得する。ここで、m個の事前準備プログラム識別子が取得できたものとする。
【0070】
(ステップS303)結合手段172は、ステップS205で取得した1以上の事前準備プログラムを取得する。ここで、n個の事前準備プログラムが取得できたものとする。
【0071】
(ステップS304)結合手段172は、変数countに1をセットする。
【0072】
(ステップS305)結合手段172は、カウンタiに1をセットする。
【0073】
(ステップS306)結合手段172は、カウンタjに1をセットする。
【0074】
(ステップS307)結合手段172は、事前準備プログラム識別子[i]が、事前準備プログラム管理情報[j]が有する事前準備プログラム識別子と同じであるか否かを判断する。同じである場合は、ステップS308に進み、そうでない場合は、ステップS310に進む。
【0075】
(ステップS308)結合手段172は、countを1インクリメントする。
【0076】
(ステップS309)結合手段172は、取得した取得事前準備プログラムである取得事前準備プログラム[count]に、事前準備プログラム[j]をセットする。
【0077】
(ステップS310)結合手段172は、jがnであるか否かを判断する。nである場合は、ステップS312に進み、そうでない場合は、ステップS311に進む。
【0078】
(ステップS311)結合手段172は、jを1インクリメントし、ステップS307に戻る。
【0079】
(ステップS312)結合手段172は、iがmであるか否かを判断する。mである場合は、ステップS314に進み、そうでない場合は、ステップS313に進む。
【0080】
(ステップS313)結合手段172は、iを1インクリメントし、ステップS306に戻る。
【0081】
(ステップS314)結合手段172は、ステップS301で取得したプログラムと、ステップS309で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0082】
(ステップS315)蓄積手段173は、ステップS314で生成した結合プログラムを、結合プログラム格納手段171に蓄積し、上位処理にリターンする。
【0083】
(具体例)
次に、プログラム処理装置1の動作の具体例について説明する。なお、本具体例において、プログラム処理装置1は、リンク機能を有するコンパイラであるものとする。
【0084】
(例1)
本例において、事前準備プログラム管理情報格納部11には、図4に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プログラム格納部12に格納されているプログラムが有する可能性のあるプログラム識別子(項目名:識別子)と、プロセッサ条件(項目名:プロセッサ)と、事前準備プログラム取得部16が取得し得る事前準備プログラムの識別子(項目名:プログラム)とを有する。なお、事前準備プログラム識別子(項目名:プログラム)で識別される事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されているものとする。
【0085】
まず、ユーザが、プログラムをコンパイルするために、当該プログラムのアイコンを、マウスを用いてコンパイラのアイコンの上にドラッグ&ドロップしたとする。すると、受付部13は、当該プログラムを識別するプログラム識別子を有するプログラムをコンパイルする指示を受け付ける。
【0086】
次に、プログラム取得部14は、受付部13が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部12から取得し、図5に示すプログラムを取得したものとする。当該プログラムは、1行目と2行目に、使用する事前準備プログラムのファイル名「Library.h」、「Library.hpp」が記述されている。当該ファイル名は、プログラム識別子である。
【0087】
次に、プロセッサ情報取得部15は、プロセッサ情報であるプロセッサ識別情報を取得し、プロセッサ識別情報「CPU_B」を取得したものとする。
【0088】
次に、事前準備プログラム取得部16は、まず、図5のプログラムに記述されている事前準備プログラム識別子を有する図4の「ID=012」から「ID=017」までのレコードを取得する。次に、事前準備プログラム取得部16は、図4の「ID=012」から「ID=017」までのレコードのうち、プロセッサ情報取得部15が取得したプロセッサ識別情報「CPU_B」が合致するプロセッサ条件「CPU_B」を有する「ID=013」、「ID=016」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library_B.h」、「Library_B.hpp」を取得する。そして、事前準備プログラム取得部16は、取得した事前準備プログラム識別子「Library_B.h」、「Library_B.hpp」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0089】
次に、結合手段172は、図5のプログラムと、事前準備プログラム識別子「Library_B.h」、「Library_B.hpp」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、蓄積手段173は、結合手段172が生成した結合プログラムを、結合プログラム格納手段171に蓄積する。
【0090】
(例2)
本例において、事前準備プログラム管理情報格納部11には、図6に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プロセッサ条件(項目名:プロセッサ)と、事前準備プログラム取得部16が取得し得る事前準備プログラムの識別子(項目名:プログラム)とを有する。なお、事前準備プログラム識別子(項目名:プログラム)で識別される事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されているものとする。
【0091】
まず、ユーザが、(例1−1)と同様の操作を行い、プログラム取得部14は、図7に示すプログラムを、プログラム格納部12から取得したものとする。当該プログラムは、1行目と2行目に、使用する事前準備プログラムのファイル名「Library018.h」、「Library020.h」が記述されている。当該ファイル名は、プログラム識別子である。
次に、プロセッサ情報取得部15は、プロセッサ識別情報であるプロセッサ名「CPU_C」を取得したものとする。
【0092】
次に、事前準備プログラム取得部16は、まず、プロセッサ情報取得部15が取得したプロセッサ名「CPU_C」が合致するプロセッサ条件「CPU_C」を有する図6の「ID=018」から「ID=020」までのレコードを取得する。次に、事前準備プログラム取得部16は、図6の「ID=018」から「ID=020」までのレコードのうち、図7のプログラムが有する事前準備プログラム識別子を有する「ID=013」、「ID=016」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library018.h」、「Library020.h」を取得する。そして、事前準備プログラム取得部16は、取得した事前準備プログラム識別子「Library018.h」、「Library020.h」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0093】
次に、結合手段172は、図7のプログラムと、事前準備プログラム識別子「Library018.h」、「Library020.h」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、蓄積手段173は、結合手段172が生成した結合プログラムを、結合プログラム格納手段171に蓄積する。
【0094】
なお、本具体例において、プロセッサ識別情報として、プロセッサ名を取得する例を示したが、プロセッサの型番や、シリアルナンバーなどを取得してもよい。
【0095】
また、本具体例において、事前準備プログラム管理情報は、事前準備プログラム識別子を有する例を示したが、事前準備プログラムを有していてもよい。
【0096】
また、本具体例のように、事前準備プログラム取得部16は、プログラム取得部14が取得したプログラムが使用する事前準備プログラム(当該プログラムが有する事前準備識別子で識別される事前準備プログラム)であって、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを、事前準備プログラム管理情報格納部11から取得できればよく、その方法や手順などは問わない。
【0097】
以上、本実施の形態によるプログラム処理装置1によれば、プロセッサに適合する事前準備プログラムを使用するプログラムを生成することができる。
【0098】
また、本実施の形態によるプログラム処理装置1によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【0099】
また、本実施の形態によるプログラム処理装置1によれば、ユーザは、事前準備プログラムを、プロセッサの種類や性能等を意識することなく使用することができる。
【0100】
また、本実施の形態によるプログラム処理装置1によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく生成することができる。
【0101】
(実施の形態2)
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと、事前準備プログラムとを結合し、実行するプログラム処理装置について説明する。
【0102】
なお、本実施の形態において、プログラム処理装置は、例えば、いわゆるプラットフォームや、実行環境などのプログラム実行装置である。
【0103】
図8は、本実施の形態におけるプログラム処理装置2のブロック図である。プログラム処理装置2は、事前準備プログラム管理情報格納部11、プログラム格納部12、受付部13、プログラム取得部14、プロセッサ情報取得部15、事前準備プログラム取得部26、処理部27を備える。処理部27は、結合手段271、実行手段272を備える。
【0104】
事前準備プログラム取得部26は、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。当該事前準備プログラムは、通常、取得プログラムが使用するプログラムである。また、事前準備プログラム取得部26は、通常、受付部13が受け付けた指示が有するプログラム識別子で識別されるプログラムの実行時に、事前準備プログラムを取得する。ここでの「実行時」とは、例えば、受付部13がプログラム識別子を有する指示を受け付けた直後や、後述の実行手段272が当該プログラムや結合プログラムを実行する直前、後述の実行手段272が当該プログラムや結合プログラムを実行している最中などである。また、当該事前準備プログラムを取得するタイミングは、ユーザからの指示であってもよいし、予め決められていてもよい。なお、事前準備プログラム取得部26は、事前準備プログラムを取得するタイミング以外は、事前準備プログラム取得部16と同様の方法や手順により、事前準備プログラムを取得する。
【0105】
処理部27は、事前準備プログラム取得部26が取得した1以上の事前準備プログラムを用いて、1以上の取得プログラムを処理する。処理部27は、例えば、1以上の取得プログラムと、事前準備プログラム取得部26が取得した1以上の事前準備プログラムとを結合する。本実施の形態において、結合とは、通常、いわゆる動的リンクのことであるが、2以上のプログラムを1つのプログラムに統合することや、1以上のプログラムと他の1以上のプログラムとの関連付けを示す情報を生成することなどを含み、広く解する。なお、動的リンクの方法や手順などは、公知であるので、詳細な説明を省略する。また、取得プログラムと、事前準備プログラム取得部26が取得した事前準備プログラムとの結合の方法や手順の詳細については、後述する。
【0106】
結合手段271は、1以上の取得プログラムと、事前準備プログラム取得部26が取得した1以上の事前準備プログラムとを、プログラムの実行時に結合し、結合プログラムを生成する。ここでの「実行時」とは、例えば、当該プログラムの実行の直前や、当該プログラムの実行の最中などである。また、結合手段271は、例えば、生成した結合プログラムと、事前準備プログラム取得部26が取得した1以上の事前準備プログラムとを、当該結合プログラムの実行時に結合してもよい。
【0107】
また、例えば、結合手段271は、以下のようにして結合プログラムを生成してもよい。
【0108】
(A)プログラムの実行の直前に生成する場合
(1)1以上の取得プログラムが有する1以上の事前準備プログラム識別子を、取得プログラムから取得する。
(2)(1)で取得した1以上の事前準備プログラム識別子で識別される1以上の事前準備プログラムを、事前準備プログラム取得部26が取得した1以上の事前準備プログラムから取得する。
(3)1以上の取得プログラムと、(2)で取得した1以上の事前準備プログラムとを結合する。
【0109】
(B)プログラムの実行の最中に生成する場合
(1)1以上の取得プログラムを、後述の実行手段272により実行する。
(2)(1)で実行中の1以上の取得プログラムが、事前準備プログラムを呼び出すか否かを判断する。ここでは、例えば、実行中のプログラムが有する命令が、事前準備プログラムを呼び出す命令であるか否かを判断する。
(3)(2)で呼び出す場合は、当該呼び出す事前準備プログラムを識別する事前準備プログラム識別子であり、取得プログラムが有する事前準備プログラム識別子を、実行中の取得プログラムから取得する。
(4)(3)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、事前準備プログラム取得部26が取得した1以上の事前準備プログラムから取得する。
(5)1以上の取得プログラムと、(4)で取得した事前準備プログラムとを結合する。
【0110】
また、結合手段271は、例えば、取得プログラムの実行の前に、取得プログラムから事前準備プログラム識別子が取得できるか否かを判断し、取得できる場合は、前述の(A)であると判断し、取得できない場合は、前述の(B)であると判断してもよい。
【0111】
また、結合手段271は、1以上の取得プログラムと1以上の事前準備プログラムとが結合できればよく、その方法や手順などは問わない。また、結合手段271は、結合プログラムと1以上の事前準備プログラムとが結合できればよく、その方法や手順などは問わない。
【0112】
実行手段272は、結合手段271が結合した結合プログラムを実行する。また、実行手段272は、取得プログラムを実行してもよい。なお、プログラムを実行する方法や手順などは、公知であるので、詳細な説明を省略する。
【0113】
なお、プログラム取得部14、事前準備プログラム取得部26、処理部27、結合手段271、実行手段272は、通常、プロセッサやメモリ等から実現され得る。また、プログラム取得部などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
【0114】
次に、プログラム処理装置2の動作について説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図9は、プログラム処理装置2の全体動作を示すフローチャートである。
【0115】
(ステップS901)受付部13は、指示を受け付けたか否かを判断する。受け付けた場合は、ステップS902に進み、そうでない場合は、S901に戻る。
【0116】
(ステップS902)受付部13は、ステップS901で受け付けた指示が、プログラム識別子を有するか否かを判断する。有する場合は、ステップS903に進み、そうでない場合は、ステップS901に戻る。
【0117】
(ステップS903)受付部13は、ステップS901で受け付けた指示が、プログラムを実行する指示であるか否かを判断する。プログラムを実行する指示である場合は、ステップS904に進み、そうでない場合は、ステップS901に戻る。
【0118】
(ステップS904)プログラム取得部14は、ステップS201で受け付けた指示が有するプログラム識別子で識別される1以上のプログラムを、プログラム格納部12から取得する。
【0119】
(ステップS905)プロセッサ情報取得部15は、プロセッサ情報を取得する。
【0120】
(ステップS906)事前準備プログラム取得部26は、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0121】
(ステップS907)処理部27は、ステップS904で取得した1以上のプログラムと、ステップS906で取得した1以上の事前準備プログラムとを結合し、結合プログラムを生成し、実行し、ステップS901に戻る。この処理の詳細は、図8のフローチャートを用いて説明する。
【0122】
なお、図9のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0123】
図10は、図9のフローチャートのステップS907の結合プログラムの生成と実行の処理を示すフローチャートである。
【0124】
(ステップS1001)結合手段271は、ステップS704で取得した1以上のプログラムを取得する。
【0125】
(ステップS1002)結合手段271は、ステップS706で取得した1以上の事前準備プログラムを取得する。
【0126】
(ステップS1003)結合手段271は、ステップS1001で取得したプログラムから、事前準備プログラム識別子が取得できるか否かを判断する。取得できる場合は、ステップS1004に進み、そうでない場合は、ステップS1008に進む。
【0127】
(ステップS1004)結合手段271は、ステップS1001で取得したプログラムから、事前準備プログラム識別子を取得する。
【0128】
(ステップS1005)結合手段271は、ステップS1004で取得した事前準備プログラム識別子で識別される事前準備プログラムを、ステップS1002で取得した1以上の事前準備プログラムから取得する。
【0129】
(ステップS1006)結合手段271は、ステップS1001で取得したプログラムと、ステップS1005で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0130】
(ステップS1007)実行手段272は、ステップS1006で生成した結合プログラムを実行し、上位処理にリターンする。
【0131】
(ステップS1008)実行手段272は、ステップS1001で取得したプログラムを実行する。
【0132】
(ステップS1009)結合手段271は、実行中のプログラムが、事前準備プログラムを呼び出すタイミングであるか否かを判断する。呼び出すタイミングである場合は、ステップS1010に進み、そうでない場合は、ステップS1014に進む。
【0133】
(ステップS1010)結合手段271は、実行中のプログラムが呼び出す事前準備プログラムを識別する事前準備プログラム識別子を、実行中のプログラムから取得する。
【0134】
(ステップS1011)結合手段271は、ステップS1010で取得した事前準備プログラム識別子で識別される事前準備プログラムを、ステップS1002で取得した1以上の事前準備プログラムから取得する。
【0135】
(ステップS1012)結合手段271は、実行中のプログラムと、ステップS1011で取得した事前準備プログラムとを結合し、結合プログラムを生成する。
【0136】
(ステップS1013)実行手段272は、ステップS1012で生成した結合プログラムを実行する。
【0137】
(ステップS1014)実行手段272は、ステップS1013で実行した結合プログラムが実行中であるか否かを判断する。実行中である場合は、ステップS1009に戻り、そうでない場合は、上位処理にリターンする。
【0138】
(具体例)
次に、プログラム処理装置2の動作の具体例について説明する。なお、本具体例において、プログラム処理装置1は、任意のプログラムを実行するための実行環境であるものとする。また、本具体例において、事前準備プログラム管理情報格納部11には、図11に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プログラム格納部12に格納されているプログラムが有する可能性のあるプログラム識別子(項目名:識別子)と、プロセッサ条件(項目名:プロセッサ)と、事前準備プログラム取得部26が取得し得る事前準備プログラムの識別子(項目名:プログラム)とを有する。なお、プロセッサ条件は、上から順に、動作クロック、命令セットの種類、コア数の条件を示す。また、当該プロセッサ条件が有する各条件は、論理積(AND)である。また、事前準備プログラム識別子(項目名:プログラム)で識別される事前準備プログラムは、事前準備プログラム管理情報格納部11に格納されているものとする。
【0139】
(例1)
まず、ユーザが、プログラムを実行するために、当該プログラムのアイコンを、マウスを用いてダブルクリックしたとする。すると、受付部13は、当該プログラムを識別するプログラム識別子を有するプログラムを実行する指示を受け付ける。
【0140】
次に、プログラム取得部14は、受付部13が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部12から取得し、バイナリコードであるプログラムを取得したものとする。当該プログラムは、使用する事前準備プログラムのファイル名「Library.h」を有しているものとする。
【0141】
次に、プロセッサ情報取得部15は、プロセッサ属性情報である動作クロック「3.2GHz」、2次キャッシュ「256KB」、命令セットの種類「ISA_64」、コア数「8」を取得したものとする。
【0142】
次に、事前準備プログラム取得部26は、まず、プログラム取得部14が取得したバイナリコードが有する事前準備プログラム識別子を有する図11の「ID=012」から「ID=014」までのレコードを取得する。次に、事前準備プログラム取得部26は、図11の「ID=012」から「ID=014」までのレコードのうち、プロセッサ情報取得部15が取得した動作クロック「3.2GHz」、2次キャッシュ「256KB」、命令セットの種類「ISA_64」、コア数「8」が合致するプロセッサ条件を有する「ID=013」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library_32_64_8.h」を取得する。そして、事前準備プログラム取得部26は、取得した事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0143】
次に、結合手段271は、プログラム取得部14が取得したバイナリコードと、事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、実行手段272は、結合手段271が生成した結合プログラムを実行する。
【0144】
(例2)
まず、ユーザが、(例2−1)と同様の操作を行い、プログラム取得部14は、事前準備プログラムのファイル名「Library.h」を有するバイナリコードであるプログラムを取得したものとする。
【0145】
次に、プロセッサ情報取得部15は、プロセッサ情報であるプロセッサ属性情報を取得し、動作周波数「3.2GHz」、2次キャッシュのサイズ「256KB」、命令セットの種類「ISA_64」、コア数「8」を取得したものとする。
【0146】
次に、事前準備プログラム取得部26は、プロセッサ情報取得部15が取得した動作周波数「3.2GHz」、2次キャッシュのサイズ「256KB」、命令セットの種類「ISA_64」、コア数「8」が合致するプロセッサ条件を有する「ID=013」のレコードを取得から、事前準備プログラム識別子(項目名:プログラム)「Library_32_64_8.h」を取得する。そして、事前準備プログラム取得部26は、取得した事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを、事前準備プログラム管理情報格納部11から取得する。
【0147】
次に、実行手段272は、プログラム取得部14が取得したバイナリコードを実行する。そして、結合手段271は、実行中のバイナリコードが、事前準備プログラムを呼び出すか否かを判断する。ここで、結合手段271は、実行中のバイナリコードが、事前準備プログラム識別子「Library.h」を呼び出すと判断したとする。すると、結合手段271は、当該事前準備プログラム識別子を有する図11の「ID=013」のレコードから、事前準備プログラム識別子(項目名:プログラム)「Library_32_64_8.h」を取得する。そして、結合手段271は、取得した事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを、事前準備プログラム取得部26が取得した事前準備プログラムから取得する。この結果、結合手段271は、事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムを取得する。
【0148】
次に、結合手段271は、実行中のバイナリコードと、事前準備プログラム識別子「Library_32_64_8.h」で識別される事前準備プログラムとを結合し、結合プログラムを生成する。そして、実行手段272は、結合手段271が生成した結合プログラムを実行する。
【0149】
なお、本具体例において、プロセッサ属性情報として、動作周波数、2次キャッシュのサイズ、命令セットの種類、コア数を取得する例を示したが、FSBの通信速度や、ソケット形状などを取得してもよい。
【0150】
また、本具体例において、事前準備プログラム管理情報は、事前準備プログラム識別子を有する例を示したが、事前準備プログラムを有していてもよい。
【0151】
また、本具体例のように、事前準備プログラム取得部26は、プログラム取得部14が取得したプログラムが使用する事前準備プログラム(当該プログラムが有する事前準備識別子で識別される事前準備プログラム)であって、プロセッサ情報取得部15が取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムを、事前準備プログラム管理情報格納部11から取得できればよく、その方法や手順などは問わない。
【0152】
以上、本実施の形態によるプログラム処理装置2によれば、プロセッサに適合する事前準備プログラムを使用するプログラムを実行することができる。
【0153】
また、本実施の形態によるプログラム処理装置2によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【0154】
また、本実施の形態によるプログラム処理装置2によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく実行することができる。
【0155】
(実施の形態3)
本実施の形態において、プロセッサに適合する事前準備プログラムを取得し、ユーザ開発のプログラムと共に、取得した事前準備プログラムを実行するプログラム処理装置について説明する。
【0156】
なお、本実施の形態におけるプログラム処理装置は、例えば、プログラム選択装置や、プログラム実行装置などである。
【0157】
図12は、本実施の形態におけるプログラム処理装置3のブロック図である。プログラム処理装置3は、事前準備プログラム管理情報格納部31、プログラム格納部32、受付部33、プログラム取得部34、プロセッサ情報取得部15、事前準備プログラム取得部36、処理部37、蓄積部38、取得事前準備プログラム格納部39を備える。
【0158】
事前準備プログラム管理情報格納部31は、1以上の事前準備プログラム管理情報を格納し得る。当該事前準備プログラム管理情報は、通常、2以上のプロセッサ条件と、各プロセッサ条件に対応する2以上の事前準備プログラム識別子とを有する。また、事前準備プログラム管理情報は、通常、後述のプログラムが有する可能性のある事前準備プログラム識別子と、当該識別子に対応する2以上の事前準備プログラム識別子であって、後述のプログラムが使用する可能性のある事前準備プログラムを識別する2以上の事前準備プログラム識別子とを有する。
【0159】
プログラム格納部32は、1以上のプログラムを格納し得る。当該プログラムは、通常、2以上の事前準備プログラムを有している。また、当該プログラムは、通常、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する。なお、当該プログラムは、同一の処理を行う2以上の事前準備プログラムであり、2以上の各プロセッサ上で動作する2以上の事前準備プログラムの集合を有していることが好適である。また、当該プログラムは、通常、当該事前準備プログラムのうち、当該プログラムが動作するプロセッサに対応する1以上の事前準備プログラムを使用する。
【0160】
また、プログラム格納部32は、事前準備プログラムを有していない1以上のプログラムを格納してもよい。この場合、プログラム格納部32は、通常、当該1以上のプログラムが使用する1以上の事前準備プログラムを格納する。
【0161】
受付部33は、1以上のプログラム識別子を有する指示を受け付ける。当該指示は、通常、当該プログラム識別子により識別されるプログラムを実行する指示である。なお、受付部33が受け付けるその他の指示等は、受付部13と同様であるので、説明を省略する。
【0162】
受付部33における指示の入力手段は、マウスなどのポインティングデバイスや、キーボード、メニュー画面によるものなど、何でもよい。受付部33は、ポインティングデバイス等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェアなどで実現され得る。
【0163】
プログラム取得部34は、受付部33が受け付けた指示が有する1以上のプログラム識別子で識別されるプログラムを、プログラム格納部32から取得する。プログラム取得部34は、通常、受付部33がプログラム識別子を有する指示を受け付けると、当該プログラムを取得する。なお、以下、プログラム取得部34が取得したプログラムを、取得プログラムとする。
【0164】
事前準備プログラム取得部36は、例えば、取得プログラムが1以上の事前準備プログラムを有している場合は、当該取得プログラムが有する1以上の事前準備プログラムの中から、取得プログラムが使用する1以上の事前準備プログラムを取得する(選択する)。また、事前準備プログラム取得部36は、例えば、取得プログラムが1以上の事前準備プログラムを有していない場合は、プログラム格納部32に格納されている1以上の事前準備プログラムの中から、取得プログラムが使用する1以上の事前準備プログラムを取得する。また、事前準備プログラム取得部36は、通常、後述の処理部37が取得プログラムを実行中に、事前準備プログラムを取得するが、後述の処理部37が取得プログラムの実行を開始した直後に、事前準備プログラムを取得してもよい。また、事前準備プログラム取得部36は、取得プログラムが使用する1以上の事前準備プログラムを識別する事前準備プログラム識別子を取得してもよい。
【0165】
取得プログラムが1以上の事前準備プログラムを有している場合、事前準備プログラム取得部36は、例えば、以下の(A1)または(A2)のいずれかの手順により事前準備プログラムを取得する。
【0166】
(A1)取得プログラムの実行中に事前準備プログラムを取得する場合
(1)処理部37が実行を開始する取得プログラム中の命令を取得する。
(2)(1)で取得した命令が、事前準備プログラム識別子を含むか否かを判断する。
(3)(2)で「含む」と判断した場合、(1)で取得した命令から事前準備プログラム識別子を取得する。
(4)(3)で取得した事前準備プログラム識別子を有する事前準備プログラム管理情報を、事前準備プログラム管理情報格納部31から取得する。
(5)(4)で取得した事前準備プログラム管理情報が有するプロセッサ条件が、プロセッサ情報取得部15が取得したプロセッサ情報に合致するか否かを判断する。
(6)(4)で取得した事前準備プログラム管理情報から、(5)で「合致する」と判断した事前準備プログラム管理情報を取得する。
(7)(6)で取得した事前準備プログラム管理情報が有する事前準備プログラム識別子であって、(3)で取得した事前準備プログラム識別子に対応する事前準備プログラム識別子を取得する。
(8)(7)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、取得プログラムから取得する。
【0167】
なお、(2)において、「含む」とは、一致することも含み広く解する。また、(7)において取得する事前準備プログラム識別子は、つまりは、取得プログラムが有している事前準備プログラムを識別する事前準備プログラム識別子である。また、事前準備プログラム取得部36は、(A1)の処理を行う場合、処理部37が取得プログラム中の命令を実行する度に、上記(1)〜(8)の処理を行う。
【0168】
(A2)取得プログラムの実行開始の直後に事前準備プログラムを取得する場合
(1)取得プログラムから、当該プログラムが有する1以上の命令が含む1以上の事前準備プログラム識別子を取得する。
(2)(1)で取得した各事前準備プログラム識別子を有する1以上の事前準備プログラム管理情報を、事前準備プログラム管理情報格納部31から取得する。
(3)(2)で取得した各事前準備プログラム管理情報が有するプロセッサ条件が、プロセッサ情報取得部15が取得したプロセッサ情報に合致するか否かを判断する。
(4)(2)で取得した1以上の事前準備プログラム管理情報から、(3)で「合致する」と判断した事前準備プログラム管理情報を取得する。
(5)(4)で取得した事前準備プログラム管理情報が有する事前準備プログラム識別子であって、(1)で取得した事前準備プログラム識別子に対応する事前準備プログラム識別子を取得する。
(6)(5)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、取得プログラムから取得する。
【0169】
なお、(7)において取得する事前準備プログラム識別子は、つまりは、取得プログラムが有している事前準備プログラムを識別する事前準備プログラム識別子である。また、事前準備プログラム取得部36は、(A2)の処理を行う場合、処理部37が取得プログラムの実行を開始した直後に、上記(1)〜(6)の処理を行う。
【0170】
また、取得プログラムが1以上の事前準備プログラムを有していない場合、事前準備プログラム取得部36は、例えば、以下の(B1)または(B2)のいずれかの手順により事前準備プログラムを取得する。
【0171】
(B1)取得プログラムの実行中に事前準備プログラムを取得する場合
(1)〜(7):前述の(A1)の(1)〜(7)と同様であるので、説明を省略する。
(8)(7)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、プログラム格納部32から取得する。
【0172】
(B2)取得プログラムの実行開始の直後に事前準備プログラムを取得する場合
(1)〜(5):前述の(A2)の(1)〜(5)と同様であるので、説明を省略する。
(6)(5)で取得した事前準備プログラム識別子で識別される事前準備プログラムを、プログラム格納部32から取得する。
【0173】
なお、プロセッサ情報がプロセッサ条件を満たすか否かの判断等は、事前準備プログラム取得部16、および事前準備プログラム取得部26が行う判断と同様であるので、説明を省略する。
【0174】
処理部37は、事前準備プログラム取得部36が取得した1以上の事前準備プログラムを用いて、1以上の取得プログラムを処理する。処理部37は、例えば、1以上の取得プログラムを、事前準備プログラム取得部36が取得した事前準備プログラムと共に実行する。つまり、処理部37は、取得プログラムが、事前準備プログラム取得部36が取得した1以上の事前準備プログラムを使用するように、取得プログラムを実行する。
【0175】
例えば、取得プログラムが事前準備プログラム識別子「func」を有しているとする(例えば、取得プログラムが有する命令に、当該識別子「func」が含まれているような場合)。また、当該取得プログラムが、当該事前準備プログラム識別子に対応する事前準備プログラムであり、「func_A」、「func_B」、「func_C」のそれぞれで識別される事前準備プログラムを有しているとする。そして、事前準備プログラム取得部36が取得した事前準備プログラムの識別子が「func_B」であったとする。すると、処理部37は、取得プログラムが使用する事前準備プログラムであり、「func」に対応する事前準備プログラムとして、「func_B」で識別される事前準備プログラムを使用するように、取得プログラムを実行する。
【0176】
また、処理部37は、例えば、1以上の取得プログラムと共に実行する事前準備プログラムを、後述の取得事前準備プログラム格納部39から取得してもよい。また、処理部37は、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子を取得してもよい。これらの取得は、例えば、処理部37が過去に処理したことのある取得プログラムを、再度、処理するような場合に行う。
【0177】
例えば、取得プログラムが事前準備プログラム識別子「func」を有しているとする(例えば、取得プログラムが有する命令に、当該識別子「func」が含まれているような場合)。また、当該識別子「func」に対応する事前準備プログラム識別子「func_B」が取得事前準備プログラム格納部39に格納されている場合、処理部37は、取得プログラムが使用する事前準備プログラムであり、「func」に対応する事前準備プログラムとして、「func_B」で識別される事前準備プログラムを使用するように、取得プログラムを実行する。
【0178】
なお、プログラムの実行の方法や手順などは、公知であるので、詳細な説明を省略する。
【0179】
蓄積部38は、事前準備プログラム取得部36が取得した1以上の事前準備プログラムであり、処理部37が1以上の取得プログラムと共に実行する1以上の事前準備プログラムを、後述の取得事前準備プログラム格納部39に蓄積する。蓄積部38は、通常、処理部37が処理する1以上の取得プログラムが有する事前準備プログラム識別子と対応付けて、当該事前準備プログラムを蓄積する。また、蓄積部38は、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子を蓄積してもよい。
【0180】
取得事前準備プログラム格納部39は、事前準備プログラム取得部36が取得した1以上の事前準備プログラムであり、処理部37が1以上の取得プログラムと共に実行する1以上の事前準備プログラムを格納し得る。当該事前準備プログラムは、通常、取得プログラムが有する事前準備プログラム識別子と対応付けられている。また、取得事前準備プログラム格納部39には、当該事前準備プログラムの代わりに、当該事前準備プログラムを識別する事前準備プログラム識別子が格納されてもよい。
【0181】
なお、事前準備プログラム管理情報格納部31、プログラム格納部32、取得事前準備プログラム格納部39は、揮発性の記録媒体、または不揮発性の記録媒体で実現可能である。
【0182】
また、プログラム取得部34、事前準備プログラム取得部36、処理部37、蓄積部38は、通常、プロセッサやメモリ等から実現され得る。プログラム取得部34などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
【0183】
次に、プログラム処理装置3の動作について説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図13は、プログラム処理装置3の全体動作を示すフローチャートである。なお、図13において、ステップS1301からステップS1303までは、図9のステップS901からステップS903までと同様であるので、説明を省略する。
【0184】
(ステップS1304)プログラム取得部34は、ステップS1301で受け付けた指示が有するプログラム識別子で識別される1以上のプログラムを、プログラム格納部32から取得する。ここで、m個の命令を有するプログラムが取得できたものとする。
【0185】
(ステップS1305)プロセッサ情報取得部15は、プロセッサ情報を取得する。
【0186】
(ステップS1306)処理部37は、カウンタiに1をセットする。
【0187】
(ステップS1307)処理部37は、命令[i]が事前準備プログラム識別子を含むか否かを判断する。含む場合は、ステップS1308に進み、そうでない場合は、ステップS1310に進む。
【0188】
(ステップS1308)事前準備プログラム取得部36は、命令[i]が含む事前準備プログラム識別子を取得する。
【0189】
(ステップS1309)事前準備プログラム取得部36は、ステップS1305で取得したプロセッサ情報が合致するプロセッサ条件に対応する事前準備プログラムであり、ステップS1308で取得した事前準備プログラム識別子に対応する事前準備プログラムを取得する。
【0190】
(ステップS1310)処理部37は、ステップS1309で取得した事前準備プログラムを実行する。
【0191】
(ステップS1311)処理部37は、命令[i]を実行する。
【0192】
(ステップS1312)処理部37は、iがmであるか否かを判断する。mである場合は、ステップS1301に戻り、そうでない場合は、ステップS1313に進む。
【0193】
(ステップS1313)処理部37は、iを1インクリメントし、ステップS1307に戻る。
【0194】
なお、図13のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0195】
また、図13のフローチャートにおいて、ステップS1305の処理は、ステップS1309の処理の前であれば、そのタイミングは問わない。つまり、例えば、ステップS1305の処理は、ステップS1301の処理の前に行ってもよいし、ステップS1304の処理の前に行ってもよい。
【0196】
また、図13のフローチャートにおいて、ステップS1309の後に、蓄積部38が、ステップS1308で取得した事前準備プログラム識別子と、ステップS1309で取得した事前準備プログラムとを対応付けて、取得事前準備プログラム格納部39に蓄積してもよい。
【0197】
また、図13のフローチャートにおいて、ステップS1307からステップS1309までの処理により、ステップS1304が取得したプログラムが有するすべての事前準備プログラム識別子に対応する事前準備プログラムを取得し、当該取得したすべての事前準備プログラムを、ステップS1310の処理により実行してもよい。
【0198】
(具体例)
次に、プログラム処理装置3の動作の具体例について説明する。なお、本具体例において、プログラム処理装置3は、プログラムを実行するプログラム実行装置であるものとする。また、本具体例において、事前準備プログラム管理情報格納部31には、図14に示す事前準備プログラム管理情報が格納されているものとする。当該事前準備プログラム管理情報は、各レコードを一意に特定するためのIDと、プログラム格納部32に格納されているプログラムが有する可能性のある事前準備プログラム識別子(項目名:識別子)と、プロセッサ条件(項目名:プロセッサ)と、当該プログラムが使用する可能性のある事前準備プログラムの識別子(項目名:プログラム)とを有する。また、プログラム格納部32には、1以上の事前準備プログラムを有するバイナリコードである1以上のプログラムが格納されているものとする。
【0199】
まず、ユーザが、プログラムを実行するために、当該プログラムのアイコンを、マウスを用いてダブルクリックしたとする。すると、受付部33は、当該プログラムを識別するプログラム識別子を有するプログラムを実行する指示を受け付ける。
【0200】
次に、プログラム取得部34は、受付部33が受け付けたプログラム識別子で識別されるプログラムを、プログラム格納部32から取得し、バイナリコードであるプログラムを取得する。ここで、当該プログラムは、例えば、事前準備プログラム識別子「EdgeFilter」を有しているものとする。また、当該プログラムは、事前準備プログラム識別子「EdgeFilter」に対応する事前準備プログラムであって、当該プログラムが使用する可能性のある2以上の事前準備プログラムを有しているものとする。なお、当該2以上の各事前準備プログラムを識別する事前準備プログラム識別子は、「EdgeFilter_A」、「EdgeFilter_B」、「EdgeFilter_C」であるものとする。
【0201】
次に、プロセッサ情報取得部15は、プロセッサ情報であるプロセッサ識別情報を取得し、プロセッサ識別情報「CPU_B」を取得したものとする。
【0202】
次に、事前準備プログラム取得部36は、まず、プログラム取得部34が取得したバイナリコードが有する事前準備プログラム識別子「EdgeFilter」を、当該バイナリコードから取得する。次に、事前準備プログラム識別子は、当該事前準備プログラム識別子「EdgeFilter」を有する図14の「ID=015」から「ID=017」までのレコードを取得する。次に、事前準備プログラム取得部36は、図14の「ID=015」から「ID=017」までのレコードのうち、プロセッサ識別情報「CPU_B」が合致するプロセッサ条件を有する「ID=016」のレコードを特定する。そして、事前準備プログラム取得部36は、当該「ID=016」のレコードから、事前準備プログラム識別子(項目名:プログラム)「EdgeFilter_B」を取得する。
【0203】
次に、処理部37は、プログラム取得部34が取得したバイナリコードが有する事前準備プログラム識別子「EdgeFilter」に対応する事前準備プログラムは、事前準備プログラム識別子「EdgeFilter_B」で識別される事前準備プログラムであるとして、プログラム取得部34が取得したバイナリコードを実行する。
【0204】
なお、本具体例において、プロセッサ識別情報を取得する例を示したが、プロセッサ属性情報を取得してもよい。
【0205】
また、本具体例において、プログラム取得部34が取得したプログラムが、1以上の事前準備プログラムを有する例を示したが、当該プログラムは、1以上の事前準備プログラムを有していなくてもよい。当該場合、当該1以上の事前準備プログラムは、通常、プログラム格納部32に格納されている。
【0206】
また、本具体例において、事前準備プログラム取得部36が、プログラム取得部34が取得したプログラムが使用する事前準備プログラムを識別する事前準備プログラム識別子を取得する例を示したが、事前準備プログラム取得部36は、プログラム取得部34が取得したプログラムが使用する事前準備プログラムを取得してもよい。当該場合、事前準備プログラム取得部36は、通常、プログラム取得部34が取得したプログラム、またはプログラム格納部32から、事前準備プログラムを取得する。
【0207】
以上、本実施の形態によるプログラム処理装置3によれば、プロセッサに適合する事前準備プログラムを用いて、プログラムを実行することができる。
【0208】
また、本実施の形態によるプログラム処理装置3によれば、プロセッサに適合する画像処理プログラムを、ユーザに提供することができる。
【0209】
また、本実施の形態によるプログラム処理装置3によれば、ユーザは、事前準備プログラムを使用するプログラムを、プロセッサの種類や性能等を意識することなく実行することができる。
【0210】
なお、本実施の形態において、処理部37は、通常、取得プログラムから、当該プログラムが有する命令を1つずつ取得しながら、当該命令を実行する。また、事前準備プログラム取得部36は、当該命令の取得毎に、当該命令が事前準備プログラム識別子を含むか否かを判断し、含む場合は、当該事前準備プログラム識別子に対応付けられている事前準備プログラム(事前準備プログラム識別子でもよい)であって、取得プログラムが動作するプロセッサに対応する事前準備プログラム(事前準備プログラム識別子でもよい)を取得する。
【0211】
つまり、プログラム処理装置3は、プログラムが有する命令を1つずつ実行しながら、当該命令が事前準備プログラム識別子を含むか否かを判断し、含む場合は、当該事前準備プログラム識別子に対応付けられている事前準備プログラム(事前準備プログラム識別子でもよい)であって、プログラム処理装置3、および当該プログラムが動作するプロセッサに対応する事前準備プログラム(事前準備プログラム識別子でもよい)を、実行するプログラムから取得してもよい。
【0212】
また、本実施の形態において、事前準備プログラム取得部36は、例えば、処理部37が取得プログラムの実行を開始した直後に、当該取得プログラムが有する命令が含む事前準備プログラム識別子を取得し、当該事前準備プログラム識別子に対応付けられている事前準備プログラム(事前準備プログラム識別子でもよい)であって、取得プログラムが動作するプロセッサに対応する事前準備プログラム(事前準備プログラム識別子でもよい)を取得してもよい。この場合、事前準備プログラム取得部36は、通常、取得プログラムが有する命令に含まれる事前準備プログラム識別子と、取得した事前準備プログラム識別子(事前準備プログラム識別子でもよい)とを対応付ける。また、処理部37は、通常、取得プログラムから、当該プログラムが有する命令を1つずつ取得しながら、当該命令を実行する。そして、処理部37は、実行する命令が事前準備プログラム識別子を含む場合、当該事前準備プログラム識別子を、対応付いている事前準備プログラム(事前準備プログラム識別子でもよい)に変更し、当該命令を実行する。
【0213】
また、本実施の形態において、事前準備プログラム取得部36は、例えば、処理部37が取得プログラムの実行を開始した直後に、当該取得プログラムが有する命令が含むすべての事前準備プログラム識別子を取得し、当該事前準備プログラム識別子に対応付けられている事前準備プログラムであって、取得プログラムが動作するプロセッサに対応する事前準備プログラムを取得してもよい。この場合、処理部37は、通常、取得プログラムから、当該プログラムが有する命令を1つずつ取得しながら当該命令を実行する。そして、処理部37は、実行する命令が事前準備プログラム識別子を含む場合、当該事前準備プログラム識別子に対応する事前準備プログラムを、事前準備プログラム取得部36が取得した事前準備プログラムから取得し、実行する。
【0214】
また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されてもよいことは言うまでもない。
【0215】
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0216】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【0217】
また、上記各実施の形態におけるプログラム処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報と、1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムとが格納されており、コンピュータを、当該プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理部として機能させるためのプログラムである。
【0218】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアでしか行われない処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理は少なくとも含まれない。
【0219】
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【0220】
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
【0221】
また、図15は、前述のプログラムを実行して、前述の実施の形態のプログラム処理装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
【0222】
図15において、コンピュータシステム9は、CD−ROM(Compact Disk Read Only Memory)ドライブ9011、FD(Flexible Disk)ドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
【0223】
図16は、コンピュータシステム9のブロック図である。図16において、コンピュータ901は、CD−ROMドライブ9011、FDドライブ9012に加えて、CPU(Central Processing Unit)9013と、ブートアッププログラム等のプログラムを記憶するためのROM(Read−Only Memory)9014と、CPU9013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM(Random Access Memory)9015と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク9016と、CD−ROMドライブ9011、FDドライブ9012、CPU9013等を相互に接続するバス9017とを備える。ここでは図示しないが、コンピュータ901は、さらに、LANへの接続を提供するネットワークカードを備えていてもよい。
【0224】
コンピュータシステム9に、前述の実施の形態のプログラム処理装置等の機能を実行させるプログラムは、CD−ROM9101、またはFD9102に記憶されて、CD−ROMドライブ9011またはFDドライブ9012に挿入され、さらにハードディスク9016に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク9016に記憶されてもよい。プログラムは実行の際にRAM9015にロードされる。プログラムは、CD−ROM9101、FD9102またはネットワークから直接、ロードされてもよい。
【0225】
プログラムは、コンピュータ901に、前述の実施の形態のプログラム処理装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム9がどのように動作するかは周知であり、詳細な説明は省略する。
【0226】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【0227】
以上のように、本発明にかかるプログラム処理装置は、プロセッサに依存することなく、事前準備プログラムを使用することができるという効果を有し、コンパイラや、リンカ、プログラムの実行環境として有用である。
【符号の説明】
【0228】
1、2、3 プログラム処理装置
11、31 事前準備プログラム管理情報格納部
12、32 プログラム格納部
13、33 受付部
14、34 プログラム取得部
15 プロセッサ情報取得部
16、26、36 事前準備プログラム取得部
17、27、37 処理部
171 結合プログラム格納手段
172、271 結合手段
173 蓄積手段
272 実行手段
【特許請求の範囲】
【請求項1】
プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、
1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムを格納し得るプログラム格納部と、
当該プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、
前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、
前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、
前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、
前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理部とを具備するプログラム処理装置。
【請求項2】
前記プログラムは、同一の処理を行う2以上の事前準備プログラムであり、2以上の各プロセッサに対応する2以上の事前準備プログラムと、当該2以上の事前準備プログラムのうち、プログラムが動作するプロセッサに対応する1以上の事前準備プログラムとを使用するプログラムであり、
前記事前準備プログラム管理情報格納部は、
プロセッサに関する条件である2以上のプロセッサ条件と、各プロセッサ条件に対応する2以上の事前準備プログラム識別子とを有する1以上の事前準備プログラム管理情報を格納しており、
前記受付部は、
1以上のプログラム識別子を有するプログラムを実行する指示を受け付け、
前記事前準備プログラム取得部は、
前記プログラムの実行中に、前記プログラム取得部が取得したプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得し、
前記処理部は、
前記プログラム取得部が取得したプログラムを、当該プログラムが使用する事前準備プログラムであり、前記事前準備プログラム取得部が取得した事前準備プログラムと共に実行する請求項1記載のプログラム処理装置。
【請求項3】
前記処理部は、
前記プログラム取得部が取得した1以上のプログラムと、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合する請求項1記載のプログラム処理装置。
【請求項4】
前記処理部は、
1以上の事前準備プログラムを使用するプログラムと、1以上の事前準備プログラムとを結合した結合プログラムを格納し得る結合プログラム格納手段と、
前記プログラム取得部が取得した1以上のプログラムと、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合する結合手段と、
前記プログラムと、前記事前準備プログラムとを結合した結合プログラムを、前記結合プログラム格納手段に蓄積する蓄積手段とを具備する請求項3記載のプログラム処理装置。
【請求項5】
前記プログラム取得部は、
前記指示に含まれるプログラム識別子で識別されるプログラムの実行時に、当該プログラムを前記プログラム格納部から取得し、
前記事前準備プログラム取得部は、
前記指示に含まれるプログラム識別子で識別されるプログラムの実行時に、1以上の事前準備プログラムを前記事前準備プログラム管理情報格納部から取得し、
前記処理部は、
前記プログラム取得部が取得した1以上のプログラムと、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムとを、前記プログラムの実行時に結合する結合手段と、
前記結合手段が結合した結合プログラムを実行する実行手段とを具備する請求項3記載のプログラム処理装置。
【請求項6】
前記結合手段は、
前記実行手段の前記結合プログラムの実行前に、前記プログラムと、前記1以上の事前準備プログラムとを結合する請求項5記載のプログラム処理装置。
【請求項7】
前記結合手段は、
前記実行手段の前記結合プログラムの実行中に、前記プログラムと、前記1以上の各事前準備プログラムとを結合する請求項5記載のプログラム処理装置。
【請求項8】
前記プロセッサ情報は、プロセッサを識別するプロセッサ識別情報であり、
前記プロセッサ条件は、当該プロセッサ識別情報を有する条件である請求項1から請求項7いずれか記載のプログラム処理装置。
【請求項9】
前記プロセッサ情報は、プロセッサの属性を示す1以上のプロセッサ属性情報であり、
前記プロセッサ条件は、当該プロセッサ属性情報を有する条件である請求項1から請求項7いずれか記載のプログラム処理装置。
【請求項10】
記録媒体に、
プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報と、
1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムとが格納されており、
受付部と、プログラム取得部と、プロセッサ情報取得部と、事前準備プログラム取得部と、処理部とを用いて行われるプログラム処理方法であって、
前記受付部が、プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付ステップと、
前記プログラム取得部が、前記指示に含まれるプログラム識別子で識別されるプログラムを、前記記録媒体から取得するプログラム取得ステップと、
前記プロセッサ情報取得部が、前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得ステップと、
前記事前準備プログラム取得部が、前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得ステップと、
前記処理部が、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理ステップとを具備するプログラム処理方法。
【請求項11】
記録媒体に、
プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報と、
1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムとが格納されており、
コンピュータを、
当該プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、
前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、
前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、
前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、
前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理部として機能させるためのプログラム。
【請求項1】
プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報を格納し得る事前準備プログラム管理情報格納部と、
1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムを格納し得るプログラム格納部と、
当該プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、
前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、
前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、
前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、
前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理部とを具備するプログラム処理装置。
【請求項2】
前記プログラムは、同一の処理を行う2以上の事前準備プログラムであり、2以上の各プロセッサに対応する2以上の事前準備プログラムと、当該2以上の事前準備プログラムのうち、プログラムが動作するプロセッサに対応する1以上の事前準備プログラムとを使用するプログラムであり、
前記事前準備プログラム管理情報格納部は、
プロセッサに関する条件である2以上のプロセッサ条件と、各プロセッサ条件に対応する2以上の事前準備プログラム識別子とを有する1以上の事前準備プログラム管理情報を格納しており、
前記受付部は、
1以上のプログラム識別子を有するプログラムを実行する指示を受け付け、
前記事前準備プログラム取得部は、
前記プログラムの実行中に、前記プログラム取得部が取得したプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得し、
前記処理部は、
前記プログラム取得部が取得したプログラムを、当該プログラムが使用する事前準備プログラムであり、前記事前準備プログラム取得部が取得した事前準備プログラムと共に実行する請求項1記載のプログラム処理装置。
【請求項3】
前記処理部は、
前記プログラム取得部が取得した1以上のプログラムと、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合する請求項1記載のプログラム処理装置。
【請求項4】
前記処理部は、
1以上の事前準備プログラムを使用するプログラムと、1以上の事前準備プログラムとを結合した結合プログラムを格納し得る結合プログラム格納手段と、
前記プログラム取得部が取得した1以上のプログラムと、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムとを結合する結合手段と、
前記プログラムと、前記事前準備プログラムとを結合した結合プログラムを、前記結合プログラム格納手段に蓄積する蓄積手段とを具備する請求項3記載のプログラム処理装置。
【請求項5】
前記プログラム取得部は、
前記指示に含まれるプログラム識別子で識別されるプログラムの実行時に、当該プログラムを前記プログラム格納部から取得し、
前記事前準備プログラム取得部は、
前記指示に含まれるプログラム識別子で識別されるプログラムの実行時に、1以上の事前準備プログラムを前記事前準備プログラム管理情報格納部から取得し、
前記処理部は、
前記プログラム取得部が取得した1以上のプログラムと、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムとを、前記プログラムの実行時に結合する結合手段と、
前記結合手段が結合した結合プログラムを実行する実行手段とを具備する請求項3記載のプログラム処理装置。
【請求項6】
前記結合手段は、
前記実行手段の前記結合プログラムの実行前に、前記プログラムと、前記1以上の事前準備プログラムとを結合する請求項5記載のプログラム処理装置。
【請求項7】
前記結合手段は、
前記実行手段の前記結合プログラムの実行中に、前記プログラムと、前記1以上の各事前準備プログラムとを結合する請求項5記載のプログラム処理装置。
【請求項8】
前記プロセッサ情報は、プロセッサを識別するプロセッサ識別情報であり、
前記プロセッサ条件は、当該プロセッサ識別情報を有する条件である請求項1から請求項7いずれか記載のプログラム処理装置。
【請求項9】
前記プロセッサ情報は、プロセッサの属性を示す1以上のプロセッサ属性情報であり、
前記プロセッサ条件は、当該プロセッサ属性情報を有する条件である請求項1から請求項7いずれか記載のプログラム処理装置。
【請求項10】
記録媒体に、
プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報と、
1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムとが格納されており、
受付部と、プログラム取得部と、プロセッサ情報取得部と、事前準備プログラム取得部と、処理部とを用いて行われるプログラム処理方法であって、
前記受付部が、プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付ステップと、
前記プログラム取得部が、前記指示に含まれるプログラム識別子で識別されるプログラムを、前記記録媒体から取得するプログラム取得ステップと、
前記プロセッサ情報取得部が、前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得ステップと、
前記事前準備プログラム取得部が、前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得ステップと、
前記処理部が、前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理ステップとを具備するプログラム処理方法。
【請求項11】
記録媒体に、
プロセッサに関する条件である1以上のプロセッサ条件と、当該プロセッサにおいて実行され得るプログラムである1以上の事前準備プログラムを識別する事前準備プログラム識別子とを有する2以上の事前準備プログラム管理情報と、
1以上の事前準備プログラムと、当該1以上の事前準備プログラムのうちの1以上の事前準備プログラムを使用する1以上のプログラムとが格納されており、
コンピュータを、
当該プログラムを識別する1以上のプログラム識別子を有する指示を受け付ける受付部と、
前記指示に含まれるプログラム識別子で識別されるプログラムを、前記プログラム格納部から取得するプログラム取得部と、
前記プログラムが動作するプロセッサに関する情報であるプロセッサ情報を取得するプロセッサ情報取得部と、
前記プログラム取得部が取得した1以上のプログラムが使用する1以上の事前準備プログラムであり、前記プロセッサ情報取得部が取得したプロセッサ情報が合致するプロセッサ条件に対応する1以上の事前準備プログラム識別子により識別される事前準備プログラムを取得する事前準備プログラム取得部と、
前記事前準備プログラム取得部が取得した1以上の事前準備プログラムを用いて、前記プログラム取得部が取得した1以上のプログラムを処理する処理部として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2013−73542(P2013−73542A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−213767(P2011−213767)
【出願日】平成23年9月29日(2011.9.29)
【出願人】(508089266)株式会社フィックスターズ (2)
【Fターム(参考)】
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願日】平成23年9月29日(2011.9.29)
【出願人】(508089266)株式会社フィックスターズ (2)
【Fターム(参考)】
[ Back to top ]