(57)【要約】  プログラムの実行速度を向上することができるコンパイルシステム、コンパイル方法およびコンパイルプログラムを提供する。本発明にかかるコンパイルシステムは、基本演算装置０３０と、複数の最適化演算装置１３０〜ｎ３０と、それぞれが基本演算装置０３０からアクセス可能であって、複数の最適化演算装置１３０〜ｎ３０のいずれかに対応付けられた複数の共有記憶装置１３２〜ｎ３２を備える。最適化演算装置ｎ３０は、ＩＲ命令列３３０から最適化実命令列３３１を生成して自身に対応する共有記憶装置に格納する最適化手段ｎ３１を有する。基本演算装置０３０は、基本演算装置０３０から共有記憶装置へのアクセス時間に基づいて、最適化実命令列３３１を生成する最適化演算装置を選択する最適化演算装置選択手段０３２と、共有記憶装置に格納された最適化実命令列３３１を含む実命令列を実行する命令列実行手段０３１を有する。
2010109751.tif 000002
【特許請求の範囲】
【請求項１】
基本演算装置と、複数の最適化演算装置と、それぞれが前記基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置を備え、
前記最適化演算装置は、ＩＲ命令列から最適化実命令列を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する最適化手段を有し、
前記基本演算装置は、前記基本演算装置から前記共有記憶装置へのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択手段と、
前記共有記憶装置に格納された最適化実命令列を含む実命令列を実行する命令列実行手段とを有するコンパイルシステム。
【請求項２】
前記最適化演算装置選択手段は、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項１に記載のコンパイルシステム。
【請求項３】
前記最適化演算装置選択手段は、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項１又は２に記載のコンパイルシステム。
【請求項４】
前記最適化手段は、さらに前記ＩＲ命令列と、当該ＩＲ命令列から生成した最適化実命令列とを対応付けた命令列実行情報を前記共有記憶装置に格納し、
前記命令列実行手段は、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する最適化実命令列があると判断したとき、前記共有記憶装置に格納された最適化実命令列を実行する請求項１乃至３のいずれかに記載のコンパイルシステム。
【請求項５】
前記命令列実行手段は、前記ＩＲ命令列に対応する最適化実命令がないと判断したときは、前記ＩＲ命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項４に記載のコンパイルシステム。
【請求項６】
前記命令列実行手段は、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列から生成された非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
前記ＩＲ命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項５に記載のコンパイルシステム。
【請求項７】
前記最適化演算装置は、さらに前記生成した最適化実命令列がキャッシュされるローカル記憶装置と、
前記最適化実命令列を生成したＩＲ命令列と、自身とを対応付けた最適化演算装置情報を前記共有記憶装置に格納する演算装置情報格納手段と、
前記基本演算装置は、さらに前記ＩＲ命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置に、前記ローカル記憶装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する実行演算装置選択手段を有する請求項４乃至６のいずれかに記載のコンパイルシステム。
【請求項８】
前記基本演算装置は、さらに前記基本演算装置が実行しているＩＲ命令列に関連して実行される可能性のある関連ＩＲ命令列から前記最適化実命令列を生成するＩＲ命令列を選択する命令列選択手段を有する請求項１乃至７のいずれかに記載のコンパイルシステム。
【請求項９】
前記命令列選択手段は、前記最適化実命令列を生成するＩＲ命令列を複数選択し、
前記最適化演算装置選択手段は、前記選択した複数のＩＲ命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項８に記載のコンパイルシステム。
【請求項１０】
前記命令列選択手段は、前記最適化実命令列を生成するＩＲ命令列をその実行回数に基づいて選択する請求項８又は９に記載のコンパイルシステム。
【請求項１１】
前記複数の共有記憶装置は、記憶階層を構成する請求項１乃至１０のいずれかに記載のコンパイルシステム。
【請求項１２】
前記演算装置は、ＣＰＵコアであり、
前記記憶装置は、メモリである請求項１乃至１１のいずれかに記載のコンパイルシステム。
【請求項１３】
ＩＲ命令列から最適化実命令列を生成するか否かを決定し、
前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、それぞれが複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を前記複数の最適化演算装置から選択するコンパイル方法。
【請求項１４】
前記最適化演算装置の選択において、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項１３に記載のコンパイル方法。
【請求項１５】
前記最適化演算装置の選択において、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項１３又は１４に記載のコンパイル方法。
【請求項１６】
前記コンパイル方法は、さらに前記選択された最適化演算装置が生成した最適化実命令列を自身に対応する共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列から生成した最適化実命令列とを対応付けた命令列実行情報を格納し、
前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する最適化実命令列があると判断したとき、前記基本演算装置が、前記共有記憶装置に格納された最適化実命令列を実行する請求項１３乃至１５のいずれかに記載のコンパイル方法。
【請求項１７】
前記命令列の実行において、前記ＩＲ命令列に対応する最適化実命令がないと判断したときは、前記ＩＲ命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項１６に記載のコンパイル方法。
【請求項１８】
前記命令列の実行において、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列の非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
前記ＩＲ命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項１７に記載のコンパイル方法。
【請求項１９】
前記コンパイル方法は、さらに前記最適化演算装置が、前記生成した最適化実命令列をキャッシュし、
前記最適化実命令列を生成したＩＲ命令列と、当該最適化実命令列を生成した最適化演算装置とを対応付けた最適化演算装置情報を格納し、
前記ＩＲ命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する請求項１６乃至１８のいずれかに記載のコンパイル方法。
【請求項２０】
前記コンパイル方法は、さらに前記基本演算装置が実行しているＩＲ命令列に関連して実行される可能性のある関連ＩＲ命令列から前記最適化実命令列を生成するＩＲ命令列を選択する請求項１３乃至１９のいずれかに記載のコンパイル方法。
【請求項２１】
前記ＩＲ命令列の選択において、前記最適化実命令列を生成するＩＲ命令列を複数選択し、
前記最適化演算装置の選択において、前記選択した複数のＩＲ命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項２０に記載のコンパイル方法。
【請求項２２】
前記ＩＲ命令列の選択において、前記最適化実命令列を生成するＩＲ命令列をその実行回数に基づいて決定する請求項２０又は２１に記載のコンパイル方法。
【請求項２３】
前記複数の共有記憶装置は、記憶階層を構成する請求項１３乃至２２のいずれかに記載のコンパイル方法。
【請求項２４】
前記演算装置は、ＣＰＵコアであり、
前記記憶装置は、メモリである請求項１３乃至２３のいずれかに記載のコンパイル方法。
【請求項２５】
ＩＲ命令列から最適化実命令列を生成するか否かを決定する処理と、
前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、それぞれが複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を前記複数の最適化演算装置から選択する処理とをコンピュータに実行させるコンパイルプログラムが格納された記憶媒体。
【請求項２６】
前記最適化演算装置を選択する処理において、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項２５に記載のコンパイルプログラムが格納された記憶媒体。
【請求項２７】
前記最適化演算装置を選択する処理において、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項２５又は２６に記載のコンパイルプログラムが格納された記憶媒体。
【請求項２８】
前記コンパイルプログラムは、さらに前記選択された最適化演算装置が生成した最適化実命令列を自身に対応する共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列から生成した最適化実命令列とを対応付けた命令列実行情報を格納する処理と、
前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する最適化実命令列があると判断したとき、前記基本演算装置が、前記共有記憶装置に格納された最適化実命令列を実行する処理とを備えた請求項２５乃至２７のいずれかに記載のコンパイルプログラムが格納された記憶媒体。
【請求項２９】
前記命令列を実行する処理において、前記ＩＲ命令列に対応する最適化実命令がないと判断したときは、前記ＩＲ命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項２８に記載のコンパイルプログラムが格納された記憶媒体。
【請求項３０】
前記命令列を実行する処理において、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列の非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
前記ＩＲ命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項２９に記載のコンパイルプログラムが格納された記憶媒体。
【請求項３１】
前記コンパイルプログラムは、さらに前記最適化演算装置が、前記生成した最適化実命令列をキャッシュする処理と、
前記最適化実命令列を生成したＩＲ命令列と、当該最適化実命令列を生成した最適化演算装置とを対応付けた最適化演算装置情報を格納する処理と、
前記ＩＲ命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する処理とを有する請求項２８乃至３０のいずれかに記載のコンパイルプログラムが格納された記憶媒体。
【請求項３２】
前記コンパイルプログラムは、さらに前記基本演算装置が実行しているＩＲ命令列に関連して実行される可能性のある関連ＩＲ命令列から前記最適化実命令列を生成するＩＲ命令列を選択する処理を有する請求項２５乃至３１のいずれかに記載のコンパイルプログラムが格納された記憶媒体。
【請求項３３】
前記命令列を選択する処理において、前記最適化実命令列を生成するＩＲ命令列を複数選択し、
前記最適化演算装置を選択する処理において、前記選択した複数のＩＲ命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項３２に記載のコンパイルプログラムが格納された記憶媒体。
【請求項３４】
前記命令列を選択する処理において、前記最適化実命令列を生成するＩＲ命令列をその実行回数に基づいて決定する請求項３２又は３３に記載のコンパイルプログラムが格納された記憶媒体。
【請求項３５】
前記複数の共有記憶装置は、記憶階層を構成する請求項２５乃至３４のいずれかに記載のコンパイルプログラムが格納された記憶媒体。
【請求項３６】
前記演算装置は、ＣＰＵコアであり、
前記記憶装置は、メモリである請求項２５乃至３５のいずれかに記載のコンパイルプログラムが格納された記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンパイルシステム、コンパイル方法およびコンパイルプログラムを格納した記憶媒体に関し、特にプログラムをＪＩＴコンパイルして生成された命令列を実行する演算装置とは別の演算装置を用いてプログラムの最適化を行う技術に関する。
【背景技術】
【０００２】
ＪＩＴ(Just In Time)コンパイルシステムは、ＩＲ(Intermediate Representation)命令列を演算装置上で実行可能な実命令列に変換した上で、その実命令列を実行するシステムである。このようなシステムでは、プログラムを高速に実行できるようＩＲを最適化した上で、実命令に変換することが望ましい。しかし単一の演算装置でＩＲの最適化およびＪＩＴコンパイルを実行すると、プログラムの実行速度が低下する可能性がある。したがって、ＩＲの最適化処理は、ＩＲ命令列を実命令列に変換して、その実命令列を実行する演算装置とは別の演算装置で実行することが望ましい。【０００３】
このようなＪＩＴコンパイルシステムのうち、マルチプロセッサを利用したＪＩＴシステムの一例が、特許文献１〜３に記載されている。
特許文献１では、複数のプロセッサから構成されるＪＩＴコンパイルシステムにおいて、元命令をプリフェッチする処理と、元命令列の解釈実行する処理と、命令列変換および最適化処理を、それぞれ異なるＣＰＵ(Central Processing Unit)上で実行することにより、プログラム処理の性能を向上できる技術が開示されている。【０００４】
また特許文献２では、１つのＣＰＵ上で実行中のプログラムに関してプロファイル情報を収集し、その情報をもとに、別のＣＰＵで実行中に命令列の最適化を行っている。このように、命令列を実行するＣＰＵと、命令列の最適化を行うＣＰＵを分けることで、改善されたプログラム実行効率を提供する技術が開示されている。【０００５】
さらに、特許文献３では、プログラム実行用コアとは別のコアで、静的解析結果と動的解析結果を組み合わせて精度良くプログラムブロックの重要度を見積もり、これを基に事前コンパイルを実施してプログラム実行を高速化する技術が開示されている。【０００６】
しかし、特許文献１〜３に開示されている技術では、最適化されたプログラムコードを実行する時に、プログラムの実行速度を十分に向上させることができなかった。なぜなら最適化処理を行う演算装置を決定する上で、マルチコアＣＰＵにおけるＬ２キャッシュのような、演算装置間で共有される共有記憶装置の存在を考慮していなかったためである。【０００７】
また、特許文献４には、ソースプログラムの並列処理で排他処理により待ち状態となったブロックと他のブロックとを入れ替えるようにソースプログラムを書き換えることにより、並列プロセスがプロセス共有の資源をアクセスする際の排他制御による待ち時間を減少させる技術が開示されている。【０００８】
さらに、特許文献５には、実行プロセッサが同じで同じ共有メモリにアクセス可能なプロセスをできるだけ連続してスケジュールすることで、一旦、プロセッサのキャッシュに入った共有メモリの内容をキャッシュから追い出すことなく利用することにより、プロセスの実行速度を向上する技術が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−３１２１８０号公報
【特許文献２】特許第４００３８３０号公報
【特許文献３】特開２００７−３３４６４３号公報
【特許文献４】特開平９−１３８７８１号公報
【特許文献５】特開平９−１５２９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
背景技術として説明したように、ＪＩＴコンパイルにおいては、複数の演算装置によって共有される共有記憶装置の存在を考慮していなかったため、プログラムの実行速度を十分に向上させることができていないという問題がある。【００１１】
本発明の目的は、上述した課題を解決するために、プログラムの実行速度を向上することができるコンパイルシステム、コンパイル方法およびコンパイルプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明にかかるコンパイルシステムは、基本演算装置と、複数の最適化演算装置と、それぞれが前記基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置を備えたコンパイルシステムであって、前記最適化演算装置は、ＩＲ命令列から最適化実命令列を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する最適化手段を有し、前記基本演算装置は、前記基本演算装置から前記共有記憶装置へのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択手段と、前記共有記憶装置に格納された最適化実命令列を含む実命令列を実行する命令列実行手段とを有するものである。【００１３】
本発明にかかるコンパイル方法は、複数の最適化演算装置から、最適化実命令列を生成する最適化演算装置を決定するコンパイル方法であって、ＩＲ命令列から前記最適化実命令列を生成するか否かを決定する最適化決定ステップと、前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択ステップとを備えたものである。【００１４】
本発明にかかるコンパイルプログラムは、複数の最適化演算装置から、最適化実命令列を生成する最適化演算装置を決定するコンパイルプログラムであって、ＩＲ命令列から前記最適化実命令列を生成するか否かを決定する最適化決定ステップと、前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択ステップとをコンピュータに実行させるものである。
【発明の効果】
【００１５】
本発明により、プログラムの実行速度を向上することができるコンパイルシステム、コンパイル方法およびコンパイルプログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムの構成の概要を示すブロック図である。
【図２】本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムの動作を示す流れ図である。
【図４】本発明の第１の実施の形態にかかるＪＩＴコンパイル手段の詳細な動作を示す流れ図である。
【図５】本発明の第２の実施の形態にかかるＪＩＴコンパイルシステムの構成を示すブロック図である。
【図６】本発明の第２の実施の形態にかかるＪＩＴコンパイルシステムの動作を示す流れ図である。
【図７】本発明の第２の実施の形態にかかるＪＩＴコンパイル手段の詳細な動作を示す流れ図である。
【図８】本発明の第３の実施の形態にかかるＪＩＴコンパイルシステムの構成を示すブロック図である。
【図９】本発明の第３の実施の形態にかかるＪＩＴコンパイルシステムの動作を示す流れ図である。
【図１０】本発明の第１の実施例にかかるＪＩＴコンパイルシステムの構成を示すブロック図である。
【図１１Ａ】本発明の第１の実施例にかかるＪＩＴコンパイルシステムの命令列実行情報を示す図である。
【図１１Ｂ】本発明の第１の実施例にかかるＪＩＴコンパイルシステムのＣＰＵ利用率を示す図である。
【図１１Ｃ】本発明の第１の実施例にかかるＪＩＴコンパイルシステムの記憶装置へのアクセス時間を示す図である。
【図１２】本発明の第２の実施例にかかるＪＩＴコンパイルシステムの構成を示すブロック図である。
【図１３Ａ】本発明の第２の実施例にかかるＪＩＴコンパイルシステムの命令列実行情報を示す図である。
【図１３Ｂ】本発明の第２の実施例にかかるＪＩＴコンパイルシステムのＣＰＵ利用率を示す図である。
【図１３Ｃ】本発明の第２の実施例にかかるＪＩＴコンパイルシステムの記憶装置へのアクセス時間を示す図である。
【図１３Ｄ】本発明の第２の実施例にかかるＪＩＴコンパイルシステムの最適化演算装置情報を示す図である。
【図１４】本発明の第３の実施例にかかるＪＩＴコンパイルシステムの構成を示すブロック図である。
【図１５Ａ】本発明の第３の実施例にかかるＪＩＴコンパイルシステムの命令列実行情報を示す図である。
【図１５Ｂ】本発明の第３の実施例にかかるＪＩＴコンパイルシステムのＣＰＵ利用率を示す図である。
【図１５Ｃ】本発明の第３の実施例にかかるＪＩＴコンパイルシステムの記憶装置へのアクセス時間を示す図である。
【発明を実施するための形態】
【００１７】
［第１の実施の形態］
まず、図１を参照して、本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムの概要について説明する。図１は、本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムの構成の概要を示すブロック図である。
【００１８】
ＪＩＴコンパイルシステムは、基本演算装置０３０、最適化演算装置１３０〜ｎ３０及び共有記憶装置１３２〜ｎ３２を備える。
基本演算装置０３０は、命令列実行手段０３１及び最適化演算装置選択手段０３２を有する。
最適化演算装置１３０〜ｎ３０は、最適化手段１３１〜ｎ３１を有する。
なお、ｎは、１以上の正整数である。
【００１９】
基本演算装置０３０の最適化演算装置選択手段０３１は、ＩＲ命令列３３０から演算装置において実行可能であり、最適化された最適化実命令列３３１を生成する場合に、最適化実命令列を生成する最適化演算装置を選択する。
基本演算装置０３０の命令列実行手段０３２は、最適化演算装置１３０〜ｎ３０が生成して共有記憶装置１３２〜ｎ３２に格納した最適化実命令列を含む実命令列を実行する。
最適化演算装置１３０〜ｎ３０の最適化手段１３１〜ｎ３１は、ＩＲ命令列３３０から最適化実命令列３３１を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する。ここで、最適化演算装置ｎ３０には共有記憶装置ｎ３２が対応する。
共有記憶装置１３２〜ｎ３２は、ＩＲ命令列３３０及び最適化済実命令列３３１が格納される。共有記憶装置ｎ３２は、最適化演算装置ｎ３２からアクセス可能であり、基本演算装置０３０からもアクセス可能な記憶装置である。
【００２０】
続いて、図１を参照して、本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムの動作の概要について説明する。
【００２１】
まず、基本演算装置０３０の最適化演算装置選択手段０３２は、ＩＲ命令列３３０から最適化実命令列３３１を生成する場合に、最適化実命令列３３１を生成する最適化演算装置を選択する。
次に、基本演算装置０３０に選択された最適化演算装置１３０〜ｎ３０の最適化手段１３１〜ｎ３１は、ＩＲ命令列３３０から最適化実命令列３３１を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する。
そして、基本演算装置０３０の命令列実行手段０３１は、最適化演算装置１３０〜ｎ３０が生成して共有記憶装置１３２〜ｎ３２に格納した最適化実命令列を実行する。
【００２２】
次に、本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムについて図面を参照して詳細に説明する。
図２を参照すると、本発明の第１の実施の形態にかかるＪＩＴコンパイルシステムは、基本演算装置０００、第１演算装置１００から第ｎ演算装置ｎ００、第１共有記憶装置１０３から第ｎ共有記憶装置ｎ０３を備える。なお、ｎは、１以上の正整数である。
【００２３】
第１共有記憶装置１０３から第ｎ共有記憶装置ｎ０３は、基本演算装置０００から第ｎ演算装置ｎ００によって使用されるデータを記憶するための記憶装置である。また各共有記憶装置は複数の演算装置によって共有されている。例えば、第１共有記憶装置１０３は、基本演算装置０００と第１演算装置１００で共有されるデータを記憶するための記憶装置であり、第２共有記憶装置２０３は、基本演算装置０００から第２演算装置２００で共有されるデータを記憶するための記憶装置である。
【００２４】
また第１共有記憶装置１０３から第ｎ共有記憶装置ｎ０３は記憶階層を構成しており、基本演算装置０００から第ｋ共有記憶装置（１≦ｋ≦ｎ）にアクセスする時は、ｋの数が大きい共有データ領域にアクセスする時ほど、アクセス時間が長くなる。またこれらの共有記憶装置で管理されるデータは、特定の共有記憶装置に記憶され続けるわけではなく、各演算装置からの指示によって各共有記憶装置間でコピーが行われる。ただし、データの書き込み等があっても共有記憶装置間でデータの一貫性は保証されているものとする。
第１共有記憶装置１０３から第ｎ共有記憶装置ｎ０３には、ＩＲ命令列１１０、実命令列１１１、最適化済実命令列１１２、命令列実行情報１１３が記憶される。
【００２５】
ＩＲ命令列１１０は、プログラムの動作を演算装置で直接実行することができない擬似コードで表現した命令列である。プログラムは複数のＩＲ命令列１１０に分割されて共有記憶装置に記憶されている。ＩＲ命令列１１０は、例えば、ＪＡＶＡ(登録商標)のバイトコードや.ＮＥＴ Ｆｒａｍｅｗｏｒｋ(登録商標)のＣＬＩ(Common Intermediate Language)等の中間言語における命令列である。
実命令列１１１は、ＩＲ命令列１１０を演算装置上で直接実行できる形式に変換された命令列である。
最適化済実命令列１１２は、ＩＲ命令列１１０に最適化処理が施され、さらに演算装置上で実行できる形式に変換された命令列である。最適化処理が施されているため、実命令列１１１より高速に実行される。
命令列実行情報１１３は、共有記憶装置１０３〜ｎ０３に記憶されているＩＲ命令列１１０の実行に関するプロファイル情報や、ＩＲ命令列１１０から生成された実命令列１１１もしくは最適化済実命令列１１２がどれかを対応付ける情報などが記憶されている。
【００２６】
基本演算装置０００は、プログラムをＪＩＴコンパイルするために使用される演算装置であり、内部にＪＩＴコンパイル手段００１、命令列選択手段００２、演算装置選択手段００３、基本ローカル記憶装置００４を有する。
ＪＩＴコンパイル手段００１は、命令列実行情報１１３を参照し、これから実行するＩＲ命令列１１０に対応付けられた最適化済実命令列１１２があるかどうかを調べる。もし最適化済実命令列１１２が対応付けられている場合、その最適化済実命令列１１２を実行する。もし最適化済実命令列１１２が対応付けられていない場合、次に対応付けられた実命令列１１１があるかどうかを調べる。もし実命令列１１１が対応付けられている場合、その実命令列１１１を実行する。もし実命令列１１１が対応付けられていない場合、ＩＲ命令列１１０を実命令列１１１に変換し、更に変換された実命令列１１１を実行する。更に、ＩＲ命令列１１０と実命令列１１１の対応付けを命令列実行情報１１３に書き込む。ＪＩＴコンパイル手段は、命令列実行手段として機能する。
【００２７】
命令列選択手段００２は、実行中のＩＲ命令列１１０に関連するＩＲ命令列１１０を最適化対象として選択する。関連するＩＲ命令列１１０とは、実行中のＩＲ命令列１１０と関連して実行される可能性が高いＩＲ命令列１１０のことである。例えば、実行中のＩＲ命令列１１０そのものや、実行中のＩＲ命令列１１０の分岐先であるＩＲ命令列１１０、実行中のＩＲ命令列１１０と分岐先のＩＲ命令列１１０の両方をまとめたＩＲ命令列群などが、関連するＩＲ命令列１１０に相当する。以降、関連するＩＲ命令列のことを、関連ＩＲ命令列と表記する。
【００２８】
演算装置選択手段００３は、まず最適化処理を実行する演算装置を選択する。この時、選択候補の各演算装置１００〜ｎ００の利用率や、各演算装置１００〜ｎ００と基本演算装置０００間で共有される共有記憶装置へのアクセス時間などを参照することで、演算装置を選択する。なお各演算装置１００〜ｎ００の利用率は各演算装置１００〜ｎ００から動的に取得する。また共有記憶装置１０３〜ｎ０３へのアクセス時間はあらかじめ基本演算装置０００から各共有記憶装置１０３〜ｎ０３へアクセスを行い静的な値として取得する。なお各演算装置１００〜ｎ００の利用率、共有記憶装置１０３〜ｎ０３へのアクセス時間は、例えば、それらを示す情報を共有記憶装置１０３〜ｎ０３に格納しておくことで参照可能とする。更に演算装置選択手段００３は、選択した演算装置に対して、選択されたＩＲ命令列１１０を最適化するよう指示する。演算装置選択手段は、最適化演算装置選択手段として機能する。
【００２９】
基本ローカル記憶装置００４は、基本演算装置０００で処理を実行する時に使用されるデータを記憶するための記憶装置である。基本ローカル記憶装置は、例えば、基本演算装置が有するキャッシュメモリである。
第１演算装置１００から第ｎ演算装置ｎ００は、ＩＲ命令列１１０の最適化処理を実行するために使用される演算装置である。第１演算装置１００から第ｎ演算装置ｎ００は、第１最適化手段１０１から第ｎ最適化手段ｎ０１と、第１ローカル記憶装置１０２から第ｎローカル記憶装置ｎ０２を有する。
【００３０】
第１最適化手段１０１から第ｎ最適化手段ｎ０１は、まず指示されたＩＲ命令列１１０に関してシステム上で高速に実行できるよう最適化を行い、最適化されたＩＲ命令列１１０を最適化済実命令列１１２に変換する。更に、指示されたＩＲ命令列１１０と最適化済実命令列１１２の対応を、命令列実行情報１１３に書き込む。
第１ローカル記憶装置１０２から第ｎローカル記憶装置ｎ０２は、各演算装置で処理を実行する時に使用されるデータを記憶するための記憶装置である。第ｎローカル記憶装置は、例えば、第ｎ演算装置が有するキャッシュメモリである。
【００３１】
なお基本演算装置０００から第ｎ演算装置ｎ００は、このうちのいくつかがマルチコアＣＰＵとして一つのＣＰＵパッケージにまとめられていても良い。例えば基本演算装置０００から第３演算装置がマルチコアＣＰＵとして一つのパッケージにまとめられていても良い。
またこれと関連して、複数の演算装置がマルチコアＣＰＵとしてまとめられた時は、まとめられた演算装置に関連する共有記憶装置も一つにまとめられていても良い。例えば基本演算装置０００から第３演算装置までがマルチコアＣＰＵとしてまとめられている時は、第１共有記憶装置１０３から第３共有記憶装置３０３が、基本演算装置０００から第３演算装置３００で共有できる１つの共有記憶装置にまとめられていても良い。
【００３２】
また基本演算装置および、第１演算装置から第ｎ演算装置０００までの全ての演算装置は、複数の異なるノード上に配置され、ネットワークを介して接続されていても良い。
また本実施の形態では、基本演算装置０００が最適化手段を持たないよう構成されているが、基本演算装置０００が基本最適化手段を有し、演算装置選択手段００３が基本演算装置０００から第ｎ演算装置ｎ００の中から最適化処理を実行する演算装置を選択するよう構成されていても良い。
【００３３】
次に、図２および図３、図４のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００３４】
まず基本演算装置０００で、ＪＩＴコンパイル手段００１がＩＲ命令列１１０を実行する（図３のステップＳ１０）。
このステップＳ１０を詳細に説明すると、まずＪＩＴコンパイル手段００１は、命令列実行情報１１３を参照して、これから実行するＩＲ命令列１１０に対応付けられた最適化済実命令列１１２があるかどうかを調べる（図４のステップＳ２０）。
もし最適化済実命令列１１２が対応付けられている場合、ＪＩＴコンパイル手段００１は、その最適化済実命令列１１２を実行する（ステップＳ２１）。
もし最適化済実命令列１１２が対応付けられていない場合、ＪＩＴコンパイル手段００１は、次に対応付けられた実命令列１１１があるかどうかを調べる（ステップＳ２２）。
【００３５】
もし実命令列１１１が対応付けられている場合、ＪＩＴコンパイル手段００１は、その実命令列１１１を実行する（ステップＳ２３）。
もし実命令列１１１が対応付けられていない場合、ＪＩＴコンパイル手段００１は、ＩＲ命令列１１０を実命令列１１１に変換し（ステップＳ２４）、更に変換された実命令列１１１を実行する（ステップＳ２５）。更に、ＪＩＴコンパイル手段００１は、ＩＲ命令列１１０と実命令列１１１の対応付けを命令列実行情報１１３に書き込む（ステップＳ２６）。
【００３６】
図３のステップＳ１０を実行する時に、命令列選択手段００２は、命令列実行情報１１３を参照して、ＪＩＴコンパイル手段００１で実行されるＩＲ命令列１１０の関連ＩＲ命令列１１０の中に、まだ最適化処理を実行していないものがあるかどうかを判断する（図３のステップＳ１１）。
最適化処理を実行していない関連ＩＲ命令列１１０がある場合、命令列選択手段００２は、関連ＩＲ命令列１１０のうちの任意のＩＲ命令列を最適化対象として選択する（ステップＳ１２）。ここで、例えば、関連ＩＲ命令列１１０のうち、実行回数の多いＩＲ命令列１１０を選択するようにしてもよい。これにより、最適化済実命令列が実行される可能性が高くなるため、よりプログラムの実行速度を向上することができる。
最適化処理を実行していない関連ＩＲ命令列１１０がない場合、ステップＳ１０に戻る。
【００３７】
次に演算装置選択手段００３は、最適化対象ブロックの最適化処理を実行する演算装置を選択する（ステップＳ１３）。この時、選択候補の各演算装置１００〜ｎ００の利用率や、各演算装置１００〜ｎ００と基本演算装置０００間で共有される共有記憶装置へのアクセス時間などを参照することで、最適化処理を実行する演算装置を選択する。具体的には、アクセス時間が少ない共有記憶装置に対応し、かつ、利用率の低い演算装置を優先して選択する。ここで、基本演算装置０００と各演算装置１００〜ｎ００のうちの任意の演算装置とで共有される共有記憶装置のうち、基本演算装置０００からのアクセス時間が最も短い共有記憶装置が、この任意の演算装置に対応する共有記憶装置となる。なお、本実施の形態１に制限されることなく、１つの共有記憶装置に対応する演算装置を複数備えるように構成されていてもよい。
次に、演算装置選択手段００３は、選択した演算装置に対して、選択されたＩＲ命令列１１０を最適化するよう指示する（ステップＳ１４）。
【００３８】
これに従い、選択された演算装置の最適化手段は、指示されたＩＲ命令列１１０の最適化処理を実行し、最適化済実命令列１１２に変換する（ステップＳ１５）。更に、最適化手段は、ＩＲ命令列１１０と最適化済実命令列１１２の対応付けを命令列実行情報１１３に書き込む（ステップＳ１６）。
こうした処理の後で、ＪＩＴコンパイル手段００１が選択されたＩＲ命令列１１０を実行しようとする時には、命令列実行情報１１３を参照して、実行しようとしているＩＲ命令列１１０に対応づけられた最適化済実命令列１１２を実行する。これは図４のステップＳ２１に相当する。
【００３９】
次に、本実施の形態の効果について説明する。
本実施の形態では、演算装置選択手段００３が、アクセス速度が高速な共有記憶装置を共有する演算装置から優先して最適化処理を指示するよう構成されている。これによって、このような構成をとらない場合と比べて、最適化済実命令列１１２が高速アクセスできる共有記憶装置に載る可能性が高くなっているため、基本演算装置０００が最適化済実命令列１１２を実行する時にプログラムの実行速度が向上する。
【００４０】
また、本実施の形態では、利用率の低い演算装置から優先して最適化処理を指示するよう構成されている。これによって、このような構成をとらない場合と比べて、早く最適化処理を実行することができるため、基本演算装置０００が最適化済実命令列１１２をより早く使用することができるようになり、プログラムの実行速度が向上する。
【００４１】
［第２の実施の形態］
次に、本発明の第２の実施の形態にかかるＪＩＴコンパイルシステムについて図面を参照して詳細に説明する。
図５を参照すると、本発明の第２の実施の形態にかかるＪＩＴコンパイルシステムは、第１の実施の形態と比べて、基本演算装置０００が実行演算装置選択手段００５を有する点、第ｎ演算装置が第ｎ演算装置情報書き込み手段ｎ０４と第ｎ実行手段ｎ０５を有する点、共有記憶装置に最適化演算装置情報１１４を有する点が異なる。なお、それ以外の構成は第１の実施の形態と同じである。
【００４２】
最適化演算装置情報１１４には、ＩＲ命令列１１０がどの演算装置によって最適化されたかという情報が記憶されている。
実行演算装置選択手段００５は、最適化演算装置情報１１４を参照してＩＲ命令列１１０を最適化処理した演算装置を取得する。次に、取得した演算装置で、ＩＲ命令列１００と対応づけられている最適化済実命令列１１２を実行するよう指示する。
第１演算装置情報書き込み手段１０４から第ｎ演算装置情報書き込み手段ｎ０４は、ＩＲ命令列１１０と自身の演算装置識別子の対応付けを最適化演算装置情報１１４に書き込む。
第１実行手段１０５から第ｎ実行手段ｎ０５は、指定された最適化済実命令列１１２をＪＩＴコンパイル手段００１の代わりに実行する。
【００４３】
次に、図５および図６、図７のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
まず基本演算装置０００で、ＪＩＴコンパイル手段００１がＩＲ命令列を実行する（図６のステップＳ３０）。
このステップＳ３０を詳細に説明すると、まずＪＩＴコンパイル手段００１は、命令列実行情報１１３を参照して、これから実行するＩＲ命令列１１０に対応付けられた最適化済実命令列１１２があるかどうかを調べる（図７のステップＳ４０）。
【００４４】
もし最適化済実命令列１１２が対応付けられている場合、実行演算装置選択手段００５は、更に最適化演算装置情報１１４を参照してＩＲ命令列１１０を最適化処理した演算装置に対して、最適化済実命令列１１２を実行するよう指示する（ステップＳ４１）。これに従い、指示を受けた演算装置の実行手段は、指示された最適化済実命令列１１２を実行する（ステップＳ４２）。
もしステップＳ４０において最適化済実命令列１１２が対応付けられていない場合、ＪＩＴコンパイル手段００１は、次に対応付けられた実命令列１１１があるかどうかを調べる（ステップＳ４３）。
【００４５】
もし実命令列１１１が対応付けられている場合、ＪＩＴコンパイル手段００１は、その実命令列１１１を実行する（ステップＳ４４）。
もし実命令列１１１が対応付けられていない場合、ＪＩＴコンパイル手段００１は、ＩＲ命令列１１０を実命令列１１１に変換し（ステップＳ４５）、更に変換された実命令列１１１を実行する（ステップＳ４６）。更に、ＪＩＴコンパイル手段００１は、ＩＲ命令列１１０と実命令列１１１の対応付けを命令列実行情報１１３に書き込む（ステップＳ４７）。
【００４６】
図６のステップＳ３１からステップＳ３６までの動作は、第１の実施の形態におけるステップＳ１１からステップＳ１６と同じ動作であるので、説明は省略する。
本実施の形態では、更にステップＳ３６の動作の後に、選択された演算装置で演算装置情報書き込み手段がＩＲ命令列１１０と自身の演算装置識別子の対応付けを最適化演算装置情報１１４に書き込む（図６のステップＳ３７）。
【００４７】
次に、本実施の形態の効果について説明する。
本実施の形態では、最適化処理を行った演算装置で最適化済実命令列１１２を実行するよう構成されている。これによって、最適化処理を行った演算装置が、共有記憶装置より高速アクセスが可能なローカル記憶装置に記憶されている最適化済実命令列１１２を実行する可能性が高くなるため、本発明の第１の実施の形態よりもプログラムの実行速度が向上する。
【００４８】
［第３の実施の形態］
次に、本発明の第３の実施の形態にかかるＪＩＴコンパイルシステムについて図面を参照して詳細に説明する。
図８を参照すると、本発明の第３の実施の形態にかかるＪＩＴコンパイルシステムは、第１の実施の形態と比べて、基本演算装置０００が命令列選択手段００２と演算装置選択手段００３を有さず、代わりに命令列複数選択手段００６と演算装置複数選択手段００７を有する点で異なる。なお、それ以外の構成は第１の実施の形態と同じである。
【００４９】
命令列複数選択手段００６は、実行中のＩＲ命令列１１０に関連するＩＲ命令列１１０を最適化対象として１つ以上選択する。関連するＩＲ命令列１１０とは、実行中のＩＲ命令列１１０と関連して実行される可能性が高いＩＲ命令列１１０のことである。例えば、実行中のＩＲ命令列１１０そのものや、実行中のＩＲ命令列１１０の分岐先であるＩＲ命令列１１０、実行中のＩＲ命令列１１０と分岐先のＩＲ命令列１１０の両方をまとめたＩＲ命令列群などが、関連するＩＲ命令列１１０に相当する。
【００５０】
演算装置複数選択手段００７は、命令列複数選択手段００６で選択された１つ以上のＩＲ命令列１１０を最適化するための演算装置を、選択されたＩＲ命令列１１０の数だけ選択する。この時、選択候補の各演算装置１００〜ｎ００の利用率や、各演算装置１００〜ｎ００と基本演算装置０００間で共有される共有記憶装置へのアクセス時間などを参照することで、演算装置を選択する。なお各演算装置１００〜ｎ００の利用率は各演算装置１００〜ｎ００から動的に取得する。また共有記憶装置１０３〜ｎ０３へのアクセス時間はあらかじめ基本演算装０００置から各共有記憶装置１０３〜ｎ０３へアクセスを行い静的な値として取得する。更に、演算装置複数選択手段００７は、選択した演算装置に対して、選択されたＩＲ命令列１１０を最適化するよう指示する。
【００５１】
次に、図８および図９を参照して本実施の形態の全体の動作について詳細に説明する。
まず基本演算装置０００のＪＩＴコンパイル手段００１がＩＲ命令列１１０を実行する（図９のステップＳ５０。詳細は図３のステップＳ１０と同じ）時に、命令列複数選択手段００６は、命令列実行情報１１３を参照して、ＪＩＴコンパイル手段００１で実行されるＩＲ命令列１１０の関連ＩＲ命令列１１０の中に、まだ最適化処理を実行していないものがあるかどうかを判断する（ステップＳ５１）。
最適化処理を実行していない関連ＩＲ命令列１１０がある場合、命令列複数選択手段００６は、関連ＩＲ命令列１１０のうちの任意のＩＲ命令列を最適化対象として１つ以上選択する（ステップＳ５３）。ここで、例えば、関連ＩＲ命令列１１０のうち、実行回数の多いＩＲ命令列１１０から順に１つ以上選択するようにしてもよい。これにより、最適化済実命令列が実行される可能性が高くなるため、よりプログラムの実行速度を向上することができる。
最適化処理を実行していない関連ＩＲ命令列１１０がない場合、ステップＳ５０に戻る。
【００５２】
次に、演算装置複数選択手段００７は、選択された複数のＩＲ命令列１１０を最適化するための演算装置を複数選択する（ステップＳ５４）。この時、選択候補の各演算装置１００〜ｎ００の利用率や、各演算装置１００〜ｎ００と基本演算装置０００間で共有される共有記憶装置へのアクセス時間などを参照することで、最適化処理を実行する演算装置を、ステップＳ５３で選択されたＩＲ命令列の数だけ選択する。具体的には、アクセス時間が少ない共有記憶装置に対応し、かつ、利用率の低い演算装置から順に優先して選択する。
次に演算装置複数選択手段００７は、選択した各演算装置に対して、選択された各ＩＲ命令列１１０を最適化するよう指示する（ステップＳ５５）。
これに従い、選択された演算装置は、指示されたＩＲ命令列１１０の最適化処理を施し、最適化済実命令列１１２に変換する（ステップＳ５６）。更に、ＩＲ命令列１１０と最適化済実命令列１１２の対応付けを命令列実行情報１１３に書き込む（ステップＳ５７）。
【００５３】
こうした処理の後で、ＪＩＴコンパイル手段００１が選択されたＩＲ命令列１１０を実行しようとする時には、命令列実行情報１１３を参照して、実行しようとしているＩＲ命令列１１０に対応づけられた最適化済実命令列１１２を実行する。これは図４のステップＳ２１に相当する。
【００５４】
次に、本実施の形態の効果について説明する。
本実施の形態では、命令列複数選択手段００６および演算装置複数選択手段００７により、実行中のＩＲ命令列１１０に関連する複数のＩＲ命令列１１０を同時に最適化することができるよう構成されている。これによって、ＪＩＴコンパイル時に最適化済実命令列１１２を参照できる可能性が高まるため、本発明の第１の実施の形態よりプログラムの実行速度が向上する。
【００５５】
なお、本発明は上述の実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、最適化処理を指示する演算装置を選択する場合に、利用率に変えて、又は、利用率に加え、クロック数の多い演算装置から優先して選択することにより、早く最適化処理を実行することができるようにしてもよい。
また、例えば、ローカル記憶装置から最適化済実命令列１１２が削除された場合は、この最適化済実命令列１１２のＩＲ命令列１１０と、演算装置の演算装置識別子の対応付けを最適化演算装置情報１１４から削除するようにしてもよい。
【００５６】
[実施例１]
次に、本発明の第１の実施例を、図１０および図１１を参照して説明する。かかる実施例は、本発明の第１の実施の形態に対応するものである。
図１０で示すように、本実施例は、マルチコアＣＰＵ００８、シングルコアＣＰＵ００９を備えたＪＩＴコンパイルシステムである。
【００５７】
ここで、命令列実行情報３２３には、ＩＲ命令列３２０のメモリアドレス、ＩＲ命令列３２０の分岐先ＩＲ命令列情報、ＩＲ命令列３２０の実行回数、実命令列３２１のメモリアドレス、最適化済実命令列３２２のメモリアドレスが図１１Ａのように記憶されている。また各ＣＰＵコア０２０、１２０、２２０のＣＰＵ利用率が図１１Ｂのようになっている。また基本演算装置に相当するコアＡから各共有記憶装置１２３、２２３に相当するＬ２キャッシュ１２３及びメモリ２２３へのアクセスに掛かる時間が図１１Ｃのようになっている。
【００５８】
まず、ＪＩＴコンパイル手段０２１がＩＲ命令列Ａを実行しようとすると、命令列選択手段０２２は、ＩＲ命令列Ａの関連ＩＲ命令列の中に、最適化処理を未実施のものがあるか判断する。命令列実行情報３２３を参照すると、関連ＩＲ命令列の中に最適化処理を未実施のものがあることが分かる。そのため、命令列選択手段０２２は、関連ＩＲ命令列のうち実行回数が多いＩＲ命令列Ｂを最適化対象のＩＲ命令列として選択する。
【００５９】
次に演算装置選択手段０２３は、最適化処理を実行する演算装置を選択するが、第ｋ演算装置（１≦ｋ≦ｎ）のＣＰＵ利用率をαｋ（％）、基本演算装置に相当するコアＡとの間で共有される共有記憶装置１２３、２２３へのアクセス時間をＴｋ（ｎｓ）とした時に、αｋ＋Ｔｋの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアＡ０２０とコアＢ１２０との間で共有される共有記憶装置はＬ２キャッシュ１２３である。また、コアＡ０２０とコアＣ２２０との間で共有される共有記憶装置はメモリ２２３である。したがって、コアＢ１２０は計算結果が１（＝０＋１）であり、コアＣ２２０は計算結果が１００（＝０＋１００）となる。そのため、演算装置選択手段０２３は、最適化処理を実行するコアとしてコアＢ１２０を選択し、コアＢに対してＩＲ命令列Ｂを最適化するよう指示する。
【００６０】
これに従い、コアＢ１２０の第１最適化手段１２１は、ＩＲ命令列Ｂの最適化処理を施し、変換された最適化済実命令列３２２のメモリアドレスが０ｘ２０００２０００だとすると、そのメモリアドレスを命令列実行情報３２３に書き込む。
こうした処理の後で、コアＡ０２０のＪＩＴコンパイル手段０２１がＩＲ命令列Ｂを実行しようとした時は、命令列実行情報３２３をもとに最適化済実命令列Ｂを実行することになる。こうして生成された最適化済実命令列Ｂは、ＪＩＴコンパイル手段０２１が生成する実命令列Ｂよりも高速に実行することができるため、ＪＩＴコンパイルシステムで実行されるプログラムの実行速度が向上することになる。
【００６１】
[実施例２]
次に、本発明の第２の実施例を、図１２および図１３を参照して説明する。かかる実施例は、本発明の第２の実施の形態に対応するものである。
図１２で示すように、本実施例は、マルチコアＣＰＵ００８、シングルコアＣＰＵ００９を備えたＪＩＴコンパイルシステムである。
【００６２】
ここで、命令列実行情報３２３には、ＩＲ命令列３２０のメモリアドレス、ＩＲ命令列３２０の分岐先ＩＲ命令列情報、ＩＲ命令列３２０の実行回数、実命令列３２１のメモリアドレス、最適化済実命令列３２２のメモリアドレスが図１３Ａのように記憶されている。また各ＣＰＵコア０２０、１２０、２２０のＣＰＵ利用率が図１３Ｂのようになっている。また基本演算装置に相当するコアＡから各共有記憶装置１２３、２２３へのアクセスに掛かる時間が図１３Ｃのようになっている。また最適化演算装置情報３２４が、図１３Ｄのように記憶されている。
【００６３】
まず、ＪＩＴコンパイル手段０２１がＩＲ命令列Ａを実行しようとすると、命令列選択手段０２２は、ＩＲ命令列Ａの関連ＩＲ命令列の中に、最適化処理を未実施のものがあるか判断する。命令列実行情報３２３を参照すると、ＩＲ命令列Ａの関連ＩＲ命令列の中に最適化処理を未実施のものがあることが分かる。そのため、演算装置選択手段０２３は、関連ＩＲ命令列のうち実行回数が多いＩＲ命令列Ｂを最適化対象のＩＲ命令列として選択する。
【００６４】
次に演算装置選択手段０２３は、最適化処理を実行する演算装置を選択するが、第ｋ演算装置（１≦ｋ≦ｎ）のＣＰＵ利用率をαｋ（％）、基本演算装置に相当するコアＡとの間で共有される共有記憶装置１２３、２２３へのアクセス時間をＴｋ（ｎｓ）とした時に、αｋ＋Ｔｋの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアＡ０２０とコアＢ１２０との間で共有される共有記憶装置はＬ２キャッシュ１２３である。また、コアＡ０２０とコアＣ２２０との間で共有される共有記憶装置はメモリ２２３である。したがって、コアＢ１２１は計算結果が１０１（＝１００＋１）であり、コアＣ２２０は計算結果が８０（＝０＋８０）となる。そのため、演算装置選択手段０２３は、最適化処理を実行するコアとしてコアＣ２２０を選択し、コアＣ２２０に対してＩＲ命令列Ｂを最適化するよう指示する。
【００６５】
これに従い、コアＣ２２０の第２最適化手段２２１では、ＩＲ命令列Ｂの最適化を行い、変換された最適化済実命令列のメモリアドレスが０ｘ２０００２０００だとすると、そのメモリアドレスを命令列実行情報３２３に書き込む。さらに、第２演算装置情報書き込み手段２２４がＩＲ命令列Ｂと自身の演算装置識別子"コアＣ"の対応付けを最適化演算装置情報３２４に書き込む。
【００６６】
こうした処理の後で、コアＡ０２０のＪＩＴコンパイル手段０２１がＩＲ命令列Ｂを実行しようとした時に、実行演算装置選択手段０２５は最適化演算装置情報３２４を参照して、最適化済実命令列Ｂを最適化したコアとしてコアＣ２２０を認識し、コアＣ２２０に対して最適化済実命令列Ｂを実行するよう指示する。コアＣ２２０の第２実行手段２２５はこの指示に応じて、自身のキャッシュＣ２２２に記憶されている最適化済実命令列Ｂを実行することができるため、ＪＩＴコンパイルシステムにおけるプログラムの実行速度が向上することになる。
【００６７】
[実施例３]
次に、本発明の第３の実施例を、図１４および図１５を参照して説明する。かかる実施例は、本発明の第３の実施の形態に対応するものである。
図１４で示すように、本実施例は、マルチコアＣＰＵ００８、シングルコアＣＰＵ００９を備えたＪＩＴコンパイルシステムである。
【００６８】
ここで、命令列実行情報３２３には、ＩＲ命令列３２０のメモリアドレス、ＩＲ命令列３２０の分岐先ＩＲ命令列情報、ＩＲ命令列３２０の実行回数、実命令列３２１のメモリアドレス、最適化済実命令列３２２のメモリアドレスが図１５Ａのように記憶されている。また各ＣＰＵコア０２０、１２０、２２０のＣＰＵ利用率が図１５Ｂのようになっている。また基本演算装置に相当するコアＡから各共有記憶装置１２３、２２３へのアクセスに掛かる時間が図１５Ｃのようになっている。また命令列複数選択手段０２６は、実行回数の多いＩＲ命令列３２０を２つ選択するものとする。
【００６９】
まず、ＪＩＴコンパイル手段０２１がＩＲ命令列Ａを実行しようとすると、命令列複数選択手段０２６は、ＩＲ命令列Ａの関連ＩＲ命令列の中に、最適化処理を未実施のものがあるか判断する。命令列実行情報３２３を参照すると、ＩＲ命令列Ａの関連ＩＲ命令列の中に最適化処理を未実施のものがあることが分かる。そのため、命令列複数選択手段０２６は、関連ＩＲ命令列のうち実行回数が多いＩＲ命令列ＡそのものとＩＲ命令列Ｂを、最適化対象のＩＲ命令列として選択する。
【００７０】
次に演算装置複数選択手段０２７は、最適化処理を実行する演算装置を選択するが、第ｋ演算装置（１≦ｋ≦ｎ）のＣＰＵ利用率をαｋ（％）、基本演算装置に相当するコアＡとの間で共有される共有記憶装置１２３、２２３へのアクセス時間をＴｋ（ｎｓ）とした時に、αｋ＋Ｔｋの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアＡ０２０とコアＢ１２０との間で共有される共有記憶装置はＬ２キャッシュ１２３である。また、コアＡ０２０とコアＣ２２０との間で共有される共有記憶装置はメモリ２２３である。したがって、コアＢ１２０は計算結果が１（＝０＋１）であり、コアＣ２２０は計算結果が１００（＝０＋１００）となる。そのため、演算装置複数選択手段０２７は、ＩＲ命令列Ａの最適化を行うコアとしてコアＢ１２０を選択し、ＩＲ命令列Ｂの最適化を行うコアとしてコアＣ２２０を選択する。演算装置複数選択手段０２７は、更にそれぞれのコアに対して、それぞれのＩＲ命令列を最適化するよう指示する。
【００７１】
これに従い、コアＢ１２０ではＩＲ命令列Ａの最適化を行い、変換された最適化済実命令列Ａの置かれたメモリアドレスが０ｘ２０００１０００だとすると、そのメモリアドレスを命令列実行情報３２３に書き込む。同時に、コアＣ２２０ではＩＲ命令列Ｂの最適化を行い、変換された最適化済実命令列Ｂの置かれたメモリアドレスが０ｘ２０００２０００だとすると、そのメモリアドレスを命令列実行情報３２３に書き込む。
【００７２】
こうした処理の後で、コアＡ０２０のＪＩＴコンパイル手段０２１がＩＲ命令列Ａとその分岐先であるＩＲ命令列Ｂを実行しようとした時には、最適化済実命令列Ａおよび最適化済実命令列Ｂと連続して実行することができる。そのため、ＪＩＴコンパイルシステムで実行されるプログラムの実行速度が向上することになる。
【００７３】
以上に説明した本発明にかかるＪＩＴコンパイルシステムは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はＣＰＵ、ＭＰＵ(Micro Processing Unit)がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＤＶＤ(Digital Versatile Disc)、ＢＤ(Blu-ray Disc)、ＲＯＭ(Read Only Memory)カートリッジ、バッテリバックアップ付きＲＡＭ(Random Access Memory)、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネットも含まれる。
【００７４】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているＯＳ(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【００７５】
この出願は、２００９年３月２５日に出願された日本出願特願２００９−０７３４２６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００７６】
０００、０３０ 基本演算装置
００１、０２１、０３１ ＪＩＴコンパイル手段
００２、０２２ 命令列選択手段
００３、０２３ 演算装置選択手段
００４ 基本ローカル記憶装置
００５、０２５ 実行演算装置選択手段
００６、０２６ 命令列複数選択手段
００７、０２７ 演算装置複数選択手段
０２０ コアＡ
０２４ Ｌ１キャッシュＡ
０３１ 命令列実行手段
０３２ 最適化演算装置選択手段
１２０ コアＢ
１２４ Ｌ１キャッシュＢ
２２０ コアＣ
２２４ Ｌ１キャッシュＣ
１２３ Ｌ２キャッシュ
１３０、２３０、ｎ３０ 最適化演算装置
１３１、２３１、ｎ３１ 最適化手段
１３２、２３２、ｎ３２ 共有記憶装置
１００ 第１演算装置
１０１、１２１ 第１最適化手段
１０２ 第１ローカル記憶装置
１０３ 第１共有記憶装置
１０４、１２４ 第１演算装置情報書き込み手段
１０５、１２５ 第１実行手段
１１０、３２０、３３０ ＩＲ命令列
１１１、３２１ 実命令列
１１２、３２２ 最適化済実命令列
１１３、３２３ 命令列実行情報
１１４、３２４ 最適化演算装置情報
２００ 第２演算装置
２０１、２２１ 第２最適化手段
２０２ 第２ローカル記憶装置
２０３ 第２共有記憶装置
２０４、２２４ 第２演算装置情報書き込み手段
２０５、２２５ 第２実行手段
２２３ メモリ
３３１ 最適化実命令列
ｎ００ 第ｎ演算装置
ｎ０１ 第ｎ最適化手段
ｎ０２ 第ｎローカル記憶装置
ｎ０３ 第ｎ共有記憶装置
ｎ０４ 第ｎ演算装置情報書き込み手段
ｎ０５ 第ｎ実行手段
【図１】
2010109751.tif 000003
【図２】
2010109751.tif 000004
【図３】
2010109751.tif 000005
【図４】
2010109751.tif 000006
【図５】
2010109751.tif 000007
【図６】
2010109751.tif 000008
【図７】
2010109751.tif 000009
【図８】
2010109751.tif 000010
【図９】
2010109751.tif 000011
【図１０】
2010109751.tif 000012
【図１１Ａ】
2010109751.tif 000013
【図１１Ｂ】
2010109751.tif 000014
【図１１Ｃ】
2010109751.tif 000015
【図１２】
2010109751.tif 000016
【図１３Ａ】
2010109751.tif 000017
【図１３Ｂ】
2010109751.tif 000018
【図１３Ｃ】
2010109751.tif 000019
【図１３Ｄ】
2010109751.tif 000020
【図１４】
2010109751.tif 000021
【図１５Ａ】
2010109751.tif 000022
【図１５Ｂ】
2010109751.tif 000023
【図１５Ｃ】
2010109751.tif 000024
【手続補正書】
【提出日】平成23年9月21日(2011.9.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
基本演算装置と、複数の最適化演算装置と、それぞれが前記基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置を備え、
前記最適化演算装置は、ＩＲ命令列から最適化実命令列を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する最適化手段を有し、
前記基本演算装置は、前記基本演算装置から前記共有記憶装置へのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択手段と、
前記共有記憶装置に格納された最適化実命令列を実行する命令列実行手段とを有するコンパイルシステム。
【請求項２】
前記最適化演算装置選択手段は、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項１に記載のコンパイルシステム。
【請求項３】
前記最適化演算装置選択手段は、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項１又は２に記載のコンパイルシステム。
【請求項４】
前記最適化手段は、さらに前記ＩＲ命令列と、当該ＩＲ命令列から生成した最適化実命令列とを対応付けた命令列実行情報を前記共有記憶装置に格納し、
前記命令列実行手段は、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する最適化実命令列があると判断したとき、前記共有記憶装置に格納された最適化実命令列を実行する請求項１乃至３のいずれかに記載のコンパイルシステム。
【請求項５】
前記命令列実行手段は、前記ＩＲ命令列に対応する最適化実命令がないと判断したときは、前記ＩＲ命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項４に記載のコンパイルシステム。
【請求項６】
前記命令列実行手段は、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列から生成された非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
前記ＩＲ命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項５に記載のコンパイルシステム。
【請求項７】
前記最適化演算装置は、さらに前記生成した最適化実命令列がキャッシュされるローカル記憶装置と、
前記最適化実命令列を生成したＩＲ命令列と、自身とを対応付けた最適化演算装置情報を前記共有記憶装置に格納する演算装置情報格納手段と、
前記基本演算装置は、さらに前記ＩＲ命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置に、前記ローカル記憶装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する実行演算装置選択手段を有する請求項４乃至６のいずれかに記載のコンパイルシステム。
【請求項８】
前記基本演算装置は、さらに前記基本演算装置が実行しているＩＲ命令列に関連して実行される可能性のある関連ＩＲ命令列から前記最適化実命令列を生成するＩＲ命令列を選択する命令列選択手段を有する請求項１乃至７のいずれかに記載のコンパイルシステム。
【請求項９】
前記命令列選択手段は、前記最適化実命令列を生成するＩＲ命令列を複数選択し、
前記最適化演算装置選択手段は、前記選択した複数のＩＲ命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項８に記載のコンパイルシステム。
【請求項１０】
前記命令列選択手段は、前記最適化実命令列を生成するＩＲ命令列をその実行回数に基づいて選択する請求項８又は９に記載のコンパイルシステム。
【請求項１１】
前記複数の共有記憶装置は、記憶階層を構成する請求項１乃至１０のいずれかに記載のコンパイルシステム。
【請求項１２】
前記演算装置は、ＣＰＵコアであり、
前記記憶装置は、メモリである請求項１乃至１１のいずれかに記載のコンパイルシステム。
【請求項１３】
ＩＲ命令列から最適化実命令列を生成するか否かを決定し、
前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、それぞれが複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を前記複数の最適化演算装置から選択するコンパイル方法。
【請求項１４】
前記最適化演算装置の選択において、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項１３に記載のコンパイル方法。
【請求項１５】
前記最適化演算装置の選択において、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項１３又は１４に記載のコンパイル方法。
【請求項１６】
前記コンパイル方法は、さらに前記選択された最適化演算装置が生成した最適化実命令列を自身に対応する共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列から生成した最適化実命令列とを対応付けた命令列実行情報を格納し、
前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する最適化実命令列があると判断したとき、前記基本演算装置が、前記共有記憶装置に格納された最適化実命令列を実行する請求項１３乃至１５のいずれかに記載のコンパイル方法。
【請求項１７】
前記命令列の実行において、前記ＩＲ命令列に対応する最適化実命令がないと判断したときは、前記ＩＲ命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項１６に記載のコンパイル方法。
【請求項１８】
前記命令列の実行において、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列の非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
前記ＩＲ命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項１７に記載のコンパイル方法。
【請求項１９】
前記コンパイル方法は、さらに前記最適化演算装置が、前記生成した最適化実命令列をキャッシュし、
前記最適化実命令列を生成したＩＲ命令列と、当該最適化実命令列を生成した最適化演算装置とを対応付けた最適化演算装置情報を格納し、
前記ＩＲ命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する請求項１６乃至１８のいずれかに記載のコンパイル方法。
【請求項２０】
前記コンパイル方法は、さらに前記基本演算装置が実行しているＩＲ命令列に関連して実行される可能性のある関連ＩＲ命令列から前記最適化実命令列を生成するＩＲ命令列を選択する請求項１３乃至１９のいずれかに記載のコンパイル方法。
【請求項２１】
前記ＩＲ命令列の選択において、前記最適化実命令列を生成するＩＲ命令列を複数選択し、
前記最適化演算装置の選択において、前記選択した複数のＩＲ命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項２０に記載のコンパイル方法。
【請求項２２】
前記ＩＲ命令列の選択において、前記最適化実命令列を生成するＩＲ命令列をその実行回数に基づいて決定する請求項２０又は２１に記載のコンパイル方法。
【請求項２３】
前記複数の共有記憶装置は、記憶階層を構成する請求項１３乃至２２のいずれかに記載のコンパイル方法。
【請求項２４】
前記演算装置は、ＣＰＵコアであり、
前記記憶装置は、メモリである請求項１３乃至２３のいずれかに記載のコンパイル方法。
【請求項２５】
ＩＲ命令列から最適化実命令列を生成するか否かを決定する処理と、
前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、それぞれが複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を前記複数の最適化演算装置から選択する処理とをコンピュータに実行させるコンパイルプログラム。
【請求項２６】
前記最適化演算装置を選択する処理において、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項２５に記載のコンパイルプログラム。
【請求項２７】
前記最適化演算装置を選択する処理において、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項２５又は２６に記載のコンパイルプログラム。
【請求項２８】
前記コンパイルプログラムは、さらに前記選択された最適化演算装置が生成した最適化実命令列を自身に対応する共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列から生成した最適化実命令列とを対応付けた命令列実行情報を格納する処理と、
前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する最適化実命令列があると判断したとき、前記基本演算装置が、前記共有記憶装置に格納された最適化実命令列を実行する処理とを備えた請求項２５乃至２７のいずれかに記載のコンパイルプログラム。
【請求項２９】
前記命令列を実行する処理において、前記ＩＲ命令列に対応する最適化実命令がないと判断したときは、前記ＩＲ命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項２８に記載のコンパイルプログラム。
【請求項３０】
前記命令列を実行する処理において、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記ＩＲ命令列と、当該ＩＲ命令列の非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
前記ＩＲ命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記ＩＲ命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項２９に記載のコンパイルプログラム。
【請求項３１】
前記コンパイルプログラムは、さらに前記最適化演算装置が、前記生成した最適化実命令列をキャッシュする処理と、
前記最適化実命令列を生成したＩＲ命令列と、当該最適化実命令列を生成した最適化演算装置とを対応付けた最適化演算装置情報を格納する処理と、
前記ＩＲ命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する処理とを有する請求項２８乃至３０のいずれかに記載のコンパイルプログラム。
【請求項３２】
前記コンパイルプログラムは、さらに前記基本演算装置が実行しているＩＲ命令列に関連して実行される可能性のある関連ＩＲ命令列から前記最適化実命令列を生成するＩＲ命令列を選択する処理を有する請求項２５乃至３１のいずれかに記載のコンパイルプログラム。
【請求項３３】
前記命令列を選択する処理において、前記最適化実命令列を生成するＩＲ命令列を複数選択し、
前記最適化演算装置を選択する処理において、前記選択した複数のＩＲ命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項３２に記載のコンパイルプログラム。
【請求項３４】
前記命令列を選択する処理において、前記最適化実命令列を生成するＩＲ命令列をその実行回数に基づいて決定する請求項３２又は３３に記載のコンパイルプログラム。
【請求項３５】
前記複数の共有記憶装置は、記憶階層を構成する請求項２５乃至３４のいずれかに記載のコンパイルプログラム。
【請求項３６】
前記演算装置は、ＣＰＵコアであり、
前記記憶装置は、メモリである請求項２５乃至３５のいずれかに記載のコンパイルプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、コンパイルシステム、コンパイル方法およびコンパイルプログラムに関し、特にプログラムをＪＩＴコンパイルして生成された命令列を実行する演算装置とは別の演算装置を用いてプログラムの最適化を行う技術に関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
基本演算装置０３０の最適化演算装置選択手段０３２は、ＩＲ命令列３３０から演算装置において実行可能であり、最適化された最適化実命令列３３１を生成する場合に、最適化実命令列を生成する最適化演算装置を選択する。
基本演算装置０３０の命令列実行手段０３１は、最適化演算装置１３０〜ｎ３０が生成して共有記憶装置１３２〜ｎ３２に格納した最適化実命令列を含む実命令列を実行する。
最適化演算装置１３０〜ｎ３０の最適化手段１３１〜ｎ３１は、ＩＲ命令列３３０から最適化実命令列３３１を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する。ここで、最適化演算装置ｎ３０には共有記憶装置ｎ３２が対応する。
共有記憶装置１３２〜ｎ３２は、ＩＲ命令列３３０及び最適化済実命令列３３１が格納される。共有記憶装置ｎ３２は、最適化演算装置ｎ３０からアクセス可能であり、基本演算装置０３０からもアクセス可能な記憶装置である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
また基本演算装置および、第１演算装置から第ｎ演算装置ｎ００までの全ての演算装置は、複数の異なるノード上に配置され、ネットワークを介して接続されていても良い。
また本実施の形態では、基本演算装置０００が最適化手段を持たないよう構成されているが、基本演算装置０００が基本最適化手段を有し、演算装置選択手段００３が基本演算装置０００から第ｎ演算装置ｎ００の中から最適化処理を実行する演算装置を選択するよう構成されていても良い。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
最適化演算装置情報１１４には、ＩＲ命令列１１０がどの演算装置によって最適化されたかという情報が記憶されている。
実行演算装置選択手段００５は、最適化演算装置情報１１４を参照してＩＲ命令列１１０を最適化処理した演算装置を取得する。次に、取得した演算装置で、ＩＲ命令列１１０と対応づけられている最適化済実命令列１１２を実行するよう指示する。
第１演算装置情報書き込み手段１０４から第ｎ演算装置情報書き込み手段ｎ０４は、ＩＲ命令列１１０と自身の演算装置識別子の対応付けを最適化演算装置情報１１４に書き込む。
第１実行手段１０５から第ｎ実行手段ｎ０５は、指定された最適化済実命令列１１２をＪＩＴコンパイル手段００１の代わりに実行する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
次に演算装置選択手段０２３は、最適化処理を実行する演算装置を選択するが、第ｋ演算装置（１≦ｋ≦ｎ）のＣＰＵ利用率をαｋ（％）、基本演算装置に相当するコアＡとの間で共有される共有記憶装置１２３、２２３へのアクセス時間をＴｋ（ｎｓ）とした時に、αｋ＋Ｔｋの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアＡ０２０とコアＢ１２０との間で共有される共有記憶装置はＬ２キャッシュ１２３である。また、コアＡ０２０とコアＣ２２０との間で共有される共有記憶装置はメモリ２２３である。したがって、コアＢ１２０は計算結果が１０１（＝１００＋１）であり、コアＣ２２０は計算結果が８０（＝０＋８０）となる。そのため、演算装置選択手段０２３は、最適化処理を実行するコアとしてコアＣ２２０を選択し、コアＣ２２０に対してＩＲ命令列Ｂを最適化するよう指示する。
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2010109751.tif 000025
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2010109751.tif 000026
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2010109751.tif 000027
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2010109751.tif 000028
【手続補正１２】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2010109751.tif 000029
【手続補正１３】
【補正対象書類名】図面
【補正対象項目名】図１２
【補正方法】変更
【補正の内容】
【図１２】
2010109751.tif 000030
【手続補正１４】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2010109751.tif 000031
【国際調査報告】
2010109751.tif 000032
2010109751.tif 000033