JP5278538B2 - コンパイルシステム、コンパイル方法およびコンパイルプログラム - Google Patents

コンパイルシステム、コンパイル方法およびコンパイルプログラム Download PDF

Info

Publication number
JP5278538B2
JP5278538B2 JP2011505822A JP2011505822A JP5278538B2 JP 5278538 B2 JP5278538 B2 JP 5278538B2 JP 2011505822 A JP2011505822 A JP 2011505822A JP 2011505822 A JP2011505822 A JP 2011505822A JP 5278538 B2 JP5278538 B2 JP 5278538B2
Authority
JP
Japan
Prior art keywords
instruction sequence
optimized
arithmetic
optimization
actual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011505822A
Other languages
English (en)
Other versions
JPWO2010109751A1 (ja
Inventor
諭士 稗田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011505822A priority Critical patent/JP5278538B2/ja
Publication of JPWO2010109751A1 publication Critical patent/JPWO2010109751A1/ja
Application granted granted Critical
Publication of JP5278538B2 publication Critical patent/JP5278538B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、コンパイルシステム、コンパイル方法およびコンパイルプログラムに関し、特にプログラムをJITコンパイルして生成された命令列を実行する演算装置とは別の演算装置を用いてプログラムの最適化を行う技術に関する。
JIT(Just In Time)コンパイルシステムは、IR(Intermediate Representation)命令列を演算装置上で実行可能な実命令列に変換した上で、その実命令列を実行するシステムである。このようなシステムでは、プログラムを高速に実行できるようIRを最適化した上で、実命令に変換することが望ましい。しかし単一の演算装置でIRの最適化およびJITコンパイルを実行すると、プログラムの実行速度が低下する可能性がある。したがって、IRの最適化処理は、IR命令列を実命令列に変換して、その実命令列を実行する演算装置とは別の演算装置で実行することが望ましい。
このようなJITコンパイルシステムのうち、マルチプロセッサを利用したJITシステムの一例が、特許文献1〜3に記載されている。
特許文献1では、複数のプロセッサから構成されるJITコンパイルシステムにおいて、元命令をプリフェッチする処理と、元命令列の解釈実行する処理と、命令列変換および最適化処理を、それぞれ異なるCPU(Central Processing Unit)上で実行することにより、プログラム処理の性能を向上できる技術が開示されている。
また特許文献2では、1つのCPU上で実行中のプログラムに関してプロファイル情報を収集し、その情報をもとに、別のCPUで実行中に命令列の最適化を行っている。このように、命令列を実行するCPUと、命令列の最適化を行うCPUを分けることで、改善されたプログラム実行効率を提供する技術が開示されている。
さらに、特許文献3では、プログラム実行用コアとは別のコアで、静的解析結果と動的解析結果を組み合わせて精度良くプログラムブロックの重要度を見積もり、これを基に事前コンパイルを実施してプログラム実行を高速化する技術が開示されている。
しかし、特許文献1〜3に開示されている技術では、最適化されたプログラムコードを実行する時に、プログラムの実行速度を十分に向上させることができなかった。なぜなら最適化処理を行う演算装置を決定する上で、マルチコアCPUにおけるL2キャッシュのような、演算装置間で共有される共有記憶装置の存在を考慮していなかったためである。
また、特許文献4には、ソースプログラムの並列処理で排他処理により待ち状態となったブロックと他のブロックとを入れ替えるようにソースプログラムを書き換えることにより、並列プロセスがプロセス共有の資源をアクセスする際の排他制御による待ち時間を減少させる技術が開示されている。
さらに、特許文献5には、実行プロセッサが同じで同じ共有メモリにアクセス可能なプロセスをできるだけ連続してスケジュールすることで、一旦、プロセッサのキャッシュに入った共有メモリの内容をキャッシュから追い出すことなく利用することにより、プロセスの実行速度を向上する技術が開示されている。
特開2002−312180号公報 特許第4003830号公報 特開2007−334643号公報 特開平9−138781号公報 特開平9−152976号公報
背景技術として説明したように、JITコンパイルにおいては、複数の演算装置によって共有される共有記憶装置の存在を考慮していなかったため、プログラムの実行速度を十分に向上させることができていないという問題がある。
本発明の目的は、上述した課題を解決するために、プログラムの実行速度を向上することができるコンパイルシステム、コンパイル方法およびコンパイルプログラムを提供することにある。
本発明にかかるコンパイルシステムは、基本演算装置と、複数の最適化演算装置と、それぞれが前記基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置を備えたコンパイルシステムであって、前記最適化演算装置は、IR命令列から最適化実命令列を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する最適化手段を有し、前記基本演算装置は、前記基本演算装置から前記共有記憶装置へのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択手段と、前記共有記憶装置に格納された最適化実命令列を含む実命令列を実行する命令列実行手段とを有するものである。
本発明にかかるコンパイル方法は、複数の最適化演算装置から、最適化実命令列を生成する最適化演算装置を決定するコンパイル方法であって、IR命令列から前記最適化実命令列を生成するか否かを決定する最適化決定ステップと、前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択ステップとを備えたものである。
本発明にかかるコンパイルプログラムは、複数の最適化演算装置から、最適化実命令列を生成する最適化演算装置を決定するコンパイルプログラムであって、IR命令列から前記最適化実命令列を生成するか否かを決定する最適化決定ステップと、前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択ステップとをコンピュータに実行させるものである。
本発明により、プログラムの実行速度を向上することができるコンパイルシステム、コンパイル方法およびコンパイルプログラムを提供することができる。
本発明の第1の実施の形態にかかるJITコンパイルシステムの構成の概要を示すブロック図である。 本発明の第1の実施の形態にかかるJITコンパイルシステムの構成を示すブロック図である。 本発明の第1の実施の形態にかかるJITコンパイルシステムの動作を示す流れ図である。 本発明の第1の実施の形態にかかるJITコンパイル手段の詳細な動作を示す流れ図である。 本発明の第2の実施の形態にかかるJITコンパイルシステムの構成を示すブロック図である。 本発明の第2の実施の形態にかかるJITコンパイルシステムの動作を示す流れ図である。 本発明の第2の実施の形態にかかるJITコンパイル手段の詳細な動作を示す流れ図である。 本発明の第3の実施の形態にかかるJITコンパイルシステムの構成を示すブロック図である。 本発明の第3の実施の形態にかかるJITコンパイルシステムの動作を示す流れ図である。 本発明の第1の実施例にかかるJITコンパイルシステムの構成を示すブロック図である。 本発明の第1の実施例にかかるJITコンパイルシステムの命令列実行情報を示す図である。 本発明の第1の実施例にかかるJITコンパイルシステムのCPU利用率を示す図である。 本発明の第1の実施例にかかるJITコンパイルシステムの記憶装置へのアクセス時間を示す図である。 本発明の第2の実施例にかかるJITコンパイルシステムの構成を示すブロック図である。 本発明の第2の実施例にかかるJITコンパイルシステムの命令列実行情報を示す図である。 本発明の第2の実施例にかかるJITコンパイルシステムのCPU利用率を示す図である。 本発明の第2の実施例にかかるJITコンパイルシステムの記憶装置へのアクセス時間を示す図である。 本発明の第2の実施例にかかるJITコンパイルシステムの最適化演算装置情報を示す図である。 本発明の第3の実施例にかかるJITコンパイルシステムの構成を示すブロック図である。 本発明の第3の実施例にかかるJITコンパイルシステムの命令列実行情報を示す図である。 本発明の第3の実施例にかかるJITコンパイルシステムのCPU利用率を示す図である。 本発明の第3の実施例にかかるJITコンパイルシステムの記憶装置へのアクセス時間を示す図である。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかるJITコンパイルシステムの概要について説明する。図1は、本発明の第1の実施の形態にかかるJITコンパイルシステムの構成の概要を示すブロック図である。
JITコンパイルシステムは、基本演算装置030、最適化演算装置130〜n30及び共有記憶装置132〜n32を備える。
基本演算装置030は、命令列実行手段031及び最適化演算装置選択手段032を有する。
最適化演算装置130〜n30は、最適化手段131〜n31を有する。
なお、nは、1以上の正整数である。
基本演算装置030の最適化演算装置選択手段03は、IR命令列330から演算装置において実行可能であり、最適化された最適化実命令列331を生成する場合に、最適化実命令列を生成する最適化演算装置を選択する。
基本演算装置030の命令列実行手段03は、最適化演算装置130〜n30が生成して共有記憶装置132〜n32に格納した最適化実命令列を含む実命令列を実行する。
最適化演算装置130〜n30の最適化手段131〜n31は、IR命令列330から最適化実命令列331を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する。ここで、最適化演算装置n30には共有記憶装置n32が対応する。
共有記憶装置132〜n32は、IR命令列330及び最適化済実命令列331が格納される。共有記憶装置n32は、最適化演算装置n3からアクセス可能であり、基本演算装置030からもアクセス可能な記憶装置である。
続いて、図1を参照して、本発明の第1の実施の形態にかかるJITコンパイルシステムの動作の概要について説明する。
まず、基本演算装置030の最適化演算装置選択手段032は、IR命令列330から最適化実命令列331を生成する場合に、最適化実命令列331を生成する最適化演算装置を選択する。
次に、基本演算装置030に選択された最適化演算装置130〜n30の最適化手段131〜n31は、IR命令列330から最適化実命令列331を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する。
そして、基本演算装置030の命令列実行手段031は、最適化演算装置130〜n30が生成して共有記憶装置132〜n32に格納した最適化実命令列を実行する。
次に、本発明の第1の実施の形態にかかるJITコンパイルシステムについて図面を参照して詳細に説明する。
図2を参照すると、本発明の第1の実施の形態にかかるJITコンパイルシステムは、基本演算装置000、第1演算装置100から第n演算装置n00、第1共有記憶装置103から第n共有記憶装置n03を備える。なお、nは、1以上の正整数である。
第1共有記憶装置103から第n共有記憶装置n03は、基本演算装置000から第n演算装置n00によって使用されるデータを記憶するための記憶装置である。また各共有記憶装置は複数の演算装置によって共有されている。例えば、第1共有記憶装置103は、基本演算装置000と第1演算装置100で共有されるデータを記憶するための記憶装置であり、第2共有記憶装置203は、基本演算装置000から第2演算装置200で共有されるデータを記憶するための記憶装置である。
また第1共有記憶装置103から第n共有記憶装置n03は記憶階層を構成しており、基本演算装置000から第k共有記憶装置(1≦k≦n)にアクセスする時は、kの数が大きい共有データ領域にアクセスする時ほど、アクセス時間が長くなる。またこれらの共有記憶装置で管理されるデータは、特定の共有記憶装置に記憶され続けるわけではなく、各演算装置からの指示によって各共有記憶装置間でコピーが行われる。ただし、データの書き込み等があっても共有記憶装置間でデータの一貫性は保証されているものとする。
第1共有記憶装置103から第n共有記憶装置n03には、IR命令列110、実命令列111、最適化済実命令列112、命令列実行情報113が記憶される。
IR命令列110は、プログラムの動作を演算装置で直接実行することができない擬似コードで表現した命令列である。プログラムは複数のIR命令列110に分割されて共有記憶装置に記憶されている。IR命令列110は、例えば、JAVA(登録商標)のバイトコードや.NET Framework(登録商標)のCLI(Common Intermediate Language)等の中間言語における命令列である。
実命令列111は、IR命令列110を演算装置上で直接実行できる形式に変換された命令列である。
最適化済実命令列112は、IR命令列110に最適化処理が施され、さらに演算装置上で実行できる形式に変換された命令列である。最適化処理が施されているため、実命令列111より高速に実行される。
命令列実行情報113は、共有記憶装置103〜n03に記憶されているIR命令列110の実行に関するプロファイル情報や、IR命令列110から生成された実命令列111もしくは最適化済実命令列112がどれかを対応付ける情報などが記憶されている。
基本演算装置000は、プログラムをJITコンパイルするために使用される演算装置であり、内部にJITコンパイル手段001、命令列選択手段002、演算装置選択手段003、基本ローカル記憶装置004を有する。
JITコンパイル手段001は、命令列実行情報113を参照し、これから実行するIR命令列110に対応付けられた最適化済実命令列112があるかどうかを調べる。もし最適化済実命令列112が対応付けられている場合、その最適化済実命令列112を実行する。もし最適化済実命令列112が対応付けられていない場合、次に対応付けられた実命令列111があるかどうかを調べる。もし実命令列111が対応付けられている場合、その実命令列111を実行する。もし実命令列111が対応付けられていない場合、IR命令列110を実命令列111に変換し、更に変換された実命令列111を実行する。更に、IR命令列110と実命令列111の対応付けを命令列実行情報113に書き込む。JITコンパイル手段は、命令列実行手段として機能する。
命令列選択手段002は、実行中のIR命令列110に関連するIR命令列110を最適化対象として選択する。関連するIR命令列110とは、実行中のIR命令列110と関連して実行される可能性が高いIR命令列110のことである。例えば、実行中のIR命令列110そのものや、実行中のIR命令列110の分岐先であるIR命令列110、実行中のIR命令列110と分岐先のIR命令列110の両方をまとめたIR命令列群などが、関連するIR命令列110に相当する。以降、関連するIR命令列のことを、関連IR命令列と表記する。
演算装置選択手段003は、まず最適化処理を実行する演算装置を選択する。この時、選択候補の各演算装置100〜n00の利用率や、各演算装置100〜n00と基本演算装置000間で共有される共有記憶装置へのアクセス時間などを参照することで、演算装置を選択する。なお各演算装置100〜n00の利用率は各演算装置100〜n00から動的に取得する。また共有記憶装置103〜n03へのアクセス時間はあらかじめ基本演算装置000から各共有記憶装置103〜n03へアクセスを行い静的な値として取得する。なお各演算装置100〜n00の利用率、共有記憶装置103〜n03へのアクセス時間は、例えば、それらを示す情報を共有記憶装置103〜n03に格納しておくことで参照可能とする。更に演算装置選択手段003は、選択した演算装置に対して、選択されたIR命令列110を最適化するよう指示する。演算装置選択手段は、最適化演算装置選択手段として機能する。
基本ローカル記憶装置004は、基本演算装置000で処理を実行する時に使用されるデータを記憶するための記憶装置である。基本ローカル記憶装置は、例えば、基本演算装置が有するキャッシュメモリである。
第1演算装置100から第n演算装置n00は、IR命令列110の最適化処理を実行するために使用される演算装置である。第1演算装置100から第n演算装置n00は、第1最適化手段101から第n最適化手段n01と、第1ローカル記憶装置102から第nローカル記憶装置n02を有する。
第1最適化手段101から第n最適化手段n01は、まず指示されたIR命令列110に関してシステム上で高速に実行できるよう最適化を行い、最適化されたIR命令列110を最適化済実命令列112に変換する。更に、指示されたIR命令列110と最適化済実命令列112の対応を、命令列実行情報113に書き込む。
第1ローカル記憶装置102から第nローカル記憶装置n02は、各演算装置で処理を実行する時に使用されるデータを記憶するための記憶装置である。第nローカル記憶装置は、例えば、第n演算装置が有するキャッシュメモリである。
なお基本演算装置000から第n演算装置n00は、このうちのいくつかがマルチコアCPUとして一つのCPUパッケージにまとめられていても良い。例えば基本演算装置000から第3演算装置がマルチコアCPUとして一つのパッケージにまとめられていても良い。
またこれと関連して、複数の演算装置がマルチコアCPUとしてまとめられた時は、まとめられた演算装置に関連する共有記憶装置も一つにまとめられていても良い。例えば基本演算装置000から第3演算装置までがマルチコアCPUとしてまとめられている時は、第1共有記憶装置103から第3共有記憶装置303が、基本演算装置000から第3演算装置300で共有できる1つの共有記憶装置にまとめられていても良い。
また基本演算装置および、第1演算装置から第n演算装置00までの全ての演算装置は、複数の異なるノード上に配置され、ネットワークを介して接続されていても良い。
また本実施の形態では、基本演算装置000が最適化手段を持たないよう構成されているが、基本演算装置000が基本最適化手段を有し、演算装置選択手段003が基本演算装置000から第n演算装置n00の中から最適化処理を実行する演算装置を選択するよう構成されていても良い。
次に、図2および図3、図4のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
まず基本演算装置000で、JITコンパイル手段001がIR命令列110を実行する(図3のステップS10)。
このステップS10を詳細に説明すると、まずJITコンパイル手段001は、命令列実行情報113を参照して、これから実行するIR命令列110に対応付けられた最適化済実命令列112があるかどうかを調べる(図4のステップS20)。
もし最適化済実命令列112が対応付けられている場合、JITコンパイル手段001は、その最適化済実命令列112を実行する(ステップS21)。
もし最適化済実命令列112が対応付けられていない場合、JITコンパイル手段001は、次に対応付けられた実命令列111があるかどうかを調べる(ステップS22)。
もし実命令列111が対応付けられている場合、JITコンパイル手段001は、その実命令列111を実行する(ステップS23)。
もし実命令列111が対応付けられていない場合、JITコンパイル手段001は、IR命令列110を実命令列111に変換し(ステップS24)、更に変換された実命令列111を実行する(ステップS25)。更に、JITコンパイル手段001は、IR命令列110と実命令列111の対応付けを命令列実行情報113に書き込む(ステップS26)。
図3のステップS10を実行する時に、命令列選択手段002は、命令列実行情報113を参照して、JITコンパイル手段001で実行されるIR命令列110の関連IR命令列110の中に、まだ最適化処理を実行していないものがあるかどうかを判断する(図3のステップS11)。
最適化処理を実行していない関連IR命令列110がある場合、命令列選択手段002は、関連IR命令列110のうちの任意のIR命令列を最適化対象として選択する(ステップS12)。ここで、例えば、関連IR命令列110のうち、実行回数の多いIR命令列110を選択するようにしてもよい。これにより、最適化済実命令列が実行される可能性が高くなるため、よりプログラムの実行速度を向上することができる。
最適化処理を実行していない関連IR命令列110がない場合、ステップS10に戻る。
次に演算装置選択手段003は、最適化対象ブロックの最適化処理を実行する演算装置を選択する(ステップS13)。この時、選択候補の各演算装置100〜n00の利用率や、各演算装置100〜n00と基本演算装置000間で共有される共有記憶装置へのアクセス時間などを参照することで、最適化処理を実行する演算装置を選択する。具体的には、アクセス時間が少ない共有記憶装置に対応し、かつ、利用率の低い演算装置を優先して選択する。ここで、基本演算装置000と各演算装置100〜n00のうちの任意の演算装置とで共有される共有記憶装置のうち、基本演算装置000からのアクセス時間が最も短い共有記憶装置が、この任意の演算装置に対応する共有記憶装置となる。なお、本実施の形態1に制限されることなく、1つの共有記憶装置に対応する演算装置を複数備えるように構成されていてもよい。
次に、演算装置選択手段003は、選択した演算装置に対して、選択されたIR命令列110を最適化するよう指示する(ステップS14)。
これに従い、選択された演算装置の最適化手段は、指示されたIR命令列110の最適化処理を実行し、最適化済実命令列112に変換する(ステップS15)。更に、最適化手段は、IR命令列110と最適化済実命令列112の対応付けを命令列実行情報113に書き込む(ステップS16)。
こうした処理の後で、JITコンパイル手段001が選択されたIR命令列110を実行しようとする時には、命令列実行情報113を参照して、実行しようとしているIR命令列110に対応づけられた最適化済実命令列112を実行する。これは図4のステップS21に相当する。
次に、本実施の形態の効果について説明する。
本実施の形態では、演算装置選択手段003が、アクセス速度が高速な共有記憶装置を共有する演算装置から優先して最適化処理を指示するよう構成されている。これによって、このような構成をとらない場合と比べて、最適化済実命令列112が高速アクセスできる共有記憶装置に載る可能性が高くなっているため、基本演算装置000が最適化済実命令列112を実行する時にプログラムの実行速度が向上する。
また、本実施の形態では、利用率の低い演算装置から優先して最適化処理を指示するよう構成されている。これによって、このような構成をとらない場合と比べて、早く最適化処理を実行することができるため、基本演算装置000が最適化済実命令列112をより早く使用することができるようになり、プログラムの実行速度が向上する。
[第2の実施の形態]
次に、本発明の第2の実施の形態にかかるJITコンパイルシステムについて図面を参照して詳細に説明する。
図5を参照すると、本発明の第2の実施の形態にかかるJITコンパイルシステムは、第1の実施の形態と比べて、基本演算装置000が実行演算装置選択手段005を有する点、第n演算装置が第n演算装置情報書き込み手段n04と第n実行手段n05を有する点、共有記憶装置に最適化演算装置情報114を有する点が異なる。なお、それ以外の構成は第1の実施の形態と同じである。
最適化演算装置情報114には、IR命令列110がどの演算装置によって最適化されたかという情報が記憶されている。
実行演算装置選択手段005は、最適化演算装置情報114を参照してIR命令列110を最適化処理した演算装置を取得する。次に、取得した演算装置で、IR命令列10と対応づけられている最適化済実命令列112を実行するよう指示する。
第1演算装置情報書き込み手段104から第n演算装置情報書き込み手段n04は、IR命令列110と自身の演算装置識別子の対応付けを最適化演算装置情報114に書き込む。
第1実行手段105から第n実行手段n05は、指定された最適化済実命令列112をJITコンパイル手段001の代わりに実行する。
次に、図5および図6、図7のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
まず基本演算装置000で、JITコンパイル手段001がIR命令列を実行する(図6のステップS30)。
このステップS30を詳細に説明すると、まずJITコンパイル手段001は、命令列実行情報113を参照して、これから実行するIR命令列110に対応付けられた最適化済実命令列112があるかどうかを調べる(図7のステップS40)。
もし最適化済実命令列112が対応付けられている場合、実行演算装置選択手段005は、更に最適化演算装置情報114を参照してIR命令列110を最適化処理した演算装置に対して、最適化済実命令列112を実行するよう指示する(ステップS41)。これに従い、指示を受けた演算装置の実行手段は、指示された最適化済実命令列112を実行する(ステップS42)。
もしステップS40において最適化済実命令列112が対応付けられていない場合、JITコンパイル手段001は、次に対応付けられた実命令列111があるかどうかを調べる(ステップS43)。
もし実命令列111が対応付けられている場合、JITコンパイル手段001は、その実命令列111を実行する(ステップS44)。
もし実命令列111が対応付けられていない場合、JITコンパイル手段001は、IR命令列110を実命令列111に変換し(ステップS45)、更に変換された実命令列111を実行する(ステップS46)。更に、JITコンパイル手段001は、IR命令列110と実命令列111の対応付けを命令列実行情報113に書き込む(ステップS47)。
図6のステップS31からステップS36までの動作は、第1の実施の形態におけるステップS11からステップS16と同じ動作であるので、説明は省略する。
本実施の形態では、更にステップS36の動作の後に、選択された演算装置で演算装置情報書き込み手段がIR命令列110と自身の演算装置識別子の対応付けを最適化演算装置情報114に書き込む(図6のステップS37)。
次に、本実施の形態の効果について説明する。
本実施の形態では、最適化処理を行った演算装置で最適化済実命令列112を実行するよう構成されている。これによって、最適化処理を行った演算装置が、共有記憶装置より高速アクセスが可能なローカル記憶装置に記憶されている最適化済実命令列112を実行する可能性が高くなるため、本発明の第1の実施の形態よりもプログラムの実行速度が向上する。
[第3の実施の形態]
次に、本発明の第3の実施の形態にかかるJITコンパイルシステムについて図面を参照して詳細に説明する。
図8を参照すると、本発明の第3の実施の形態にかかるJITコンパイルシステムは、第1の実施の形態と比べて、基本演算装置000が命令列選択手段002と演算装置選択手段003を有さず、代わりに命令列複数選択手段006と演算装置複数選択手段007を有する点で異なる。なお、それ以外の構成は第1の実施の形態と同じである。
命令列複数選択手段006は、実行中のIR命令列110に関連するIR命令列110を最適化対象として1つ以上選択する。関連するIR命令列110とは、実行中のIR命令列110と関連して実行される可能性が高いIR命令列110のことである。例えば、実行中のIR命令列110そのものや、実行中のIR命令列110の分岐先であるIR命令列110、実行中のIR命令列110と分岐先のIR命令列110の両方をまとめたIR命令列群などが、関連するIR命令列110に相当する。
演算装置複数選択手段007は、命令列複数選択手段006で選択された1つ以上のIR命令列110を最適化するための演算装置を、選択されたIR命令列110の数だけ選択する。この時、選択候補の各演算装置100〜n00の利用率や、各演算装置100〜n00と基本演算装置000間で共有される共有記憶装置へのアクセス時間などを参照することで、演算装置を選択する。なお各演算装置100〜n00の利用率は各演算装置100〜n00から動的に取得する。また共有記憶装置103〜n03へのアクセス時間はあらかじめ基本演算装000置から各共有記憶装置103〜n03へアクセスを行い静的な値として取得する。更に、演算装置複数選択手段007は、選択した演算装置に対して、選択されたIR命令列110を最適化するよう指示する。
次に、図8および図9を参照して本実施の形態の全体の動作について詳細に説明する。
まず基本演算装置000のJITコンパイル手段001がIR命令列110を実行する(図9のステップS50。詳細は図3のステップS10と同じ)時に、命令列複数選択手段006は、命令列実行情報113を参照して、JITコンパイル手段001で実行されるIR命令列110の関連IR命令列110の中に、まだ最適化処理を実行していないものがあるかどうかを判断する(ステップS51)。
最適化処理を実行していない関連IR命令列110がある場合、命令列複数選択手段006は、関連IR命令列110のうちの任意のIR命令列を最適化対象として1つ以上選択する(ステップS53)。ここで、例えば、関連IR命令列110のうち、実行回数の多いIR命令列110から順に1つ以上選択するようにしてもよい。これにより、最適化済実命令列が実行される可能性が高くなるため、よりプログラムの実行速度を向上することができる。
最適化処理を実行していない関連IR命令列110がない場合、ステップS50に戻る。
次に、演算装置複数選択手段007は、選択された複数のIR命令列110を最適化するための演算装置を複数選択する(ステップS54)。この時、選択候補の各演算装置100〜n00の利用率や、各演算装置100〜n00と基本演算装置000間で共有される共有記憶装置へのアクセス時間などを参照することで、最適化処理を実行する演算装置を、ステップS53で選択されたIR命令列の数だけ選択する。具体的には、アクセス時間が少ない共有記憶装置に対応し、かつ、利用率の低い演算装置から順に優先して選択する。
次に演算装置複数選択手段007は、選択した各演算装置に対して、選択された各IR命令列110を最適化するよう指示する(ステップS55)。
これに従い、選択された演算装置は、指示されたIR命令列110の最適化処理を施し、最適化済実命令列112に変換する(ステップS56)。更に、IR命令列110と最適化済実命令列112の対応付けを命令列実行情報113に書き込む(ステップS57)。
こうした処理の後で、JITコンパイル手段001が選択されたIR命令列110を実行しようとする時には、命令列実行情報113を参照して、実行しようとしているIR命令列110に対応づけられた最適化済実命令列112を実行する。これは図4のステップS21に相当する。
次に、本実施の形態の効果について説明する。
本実施の形態では、命令列複数選択手段006および演算装置複数選択手段007により、実行中のIR命令列110に関連する複数のIR命令列110を同時に最適化することができるよう構成されている。これによって、JITコンパイル時に最適化済実命令列112を参照できる可能性が高まるため、本発明の第1の実施の形態よりプログラムの実行速度が向上する。
なお、本発明は上述の実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、最適化処理を指示する演算装置を選択する場合に、利用率に変えて、又は、利用率に加え、クロック数の多い演算装置から優先して選択することにより、早く最適化処理を実行することができるようにしてもよい。
また、例えば、ローカル記憶装置から最適化済実命令列112が削除された場合は、この最適化済実命令列112のIR命令列110と、演算装置の演算装置識別子の対応付けを最適化演算装置情報114から削除するようにしてもよい。
[実施例1]
次に、本発明の第1の実施例を、図10および図11を参照して説明する。かかる実施例は、本発明の第1の実施の形態に対応するものである。
図10で示すように、本実施例は、マルチコアCPU008、シングルコアCPU009を備えたJITコンパイルシステムである。
ここで、命令列実行情報323には、IR命令列320のメモリアドレス、IR命令列320の分岐先IR命令列情報、IR命令列320の実行回数、実命令列321のメモリアドレス、最適化済実命令列322のメモリアドレスが図11Aのように記憶されている。また各CPUコア020、120、220のCPU利用率が図11Bのようになっている。また基本演算装置に相当するコアAから各共有記憶装置123、223に相当するL2キャッシュ123及びメモリ223へのアクセスに掛かる時間が図11Cのようになっている。
まず、JITコンパイル手段021がIR命令列Aを実行しようとすると、命令列選択手段022は、IR命令列Aの関連IR命令列の中に、最適化処理を未実施のものがあるか判断する。命令列実行情報323を参照すると、関連IR命令列の中に最適化処理を未実施のものがあることが分かる。そのため、命令列選択手段022は、関連IR命令列のうち実行回数が多いIR命令列Bを最適化対象のIR命令列として選択する。
次に演算装置選択手段023は、最適化処理を実行する演算装置を選択するが、第k演算装置(1≦k≦n)のCPU利用率をαk(%)、基本演算装置に相当するコアAとの間で共有される共有記憶装置123、223へのアクセス時間をTk(ns)とした時に、αk+Tkの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアA020とコアB120との間で共有される共有記憶装置はL2キャッシュ123である。また、コアA020とコアC220との間で共有される共有記憶装置はメモリ223である。したがって、コアB120は計算結果が1(=0+1)であり、コアC220は計算結果が100(=0+100)となる。そのため、演算装置選択手段023は、最適化処理を実行するコアとしてコアB120を選択し、コアBに対してIR命令列Bを最適化するよう指示する。
これに従い、コアB120の第1最適化手段121は、IR命令列Bの最適化処理を施し、変換された最適化済実命令列322のメモリアドレスが0x20002000だとすると、そのメモリアドレスを命令列実行情報323に書き込む。
こうした処理の後で、コアA020のJITコンパイル手段021がIR命令列Bを実行しようとした時は、命令列実行情報323をもとに最適化済実命令列Bを実行することになる。こうして生成された最適化済実命令列Bは、JITコンパイル手段021が生成する実命令列Bよりも高速に実行することができるため、JITコンパイルシステムで実行されるプログラムの実行速度が向上することになる。
[実施例2]
次に、本発明の第2の実施例を、図12および図13を参照して説明する。かかる実施例は、本発明の第2の実施の形態に対応するものである。
図12で示すように、本実施例は、マルチコアCPU008、シングルコアCPU009を備えたJITコンパイルシステムである。
ここで、命令列実行情報323には、IR命令列320のメモリアドレス、IR命令列320の分岐先IR命令列情報、IR命令列320の実行回数、実命令列321のメモリアドレス、最適化済実命令列322のメモリアドレスが図13Aのように記憶されている。また各CPUコア020、120、220のCPU利用率が図13Bのようになっている。また基本演算装置に相当するコアAから各共有記憶装置123、223へのアクセスに掛かる時間が図13Cのようになっている。また最適化演算装置情報324が、図13Dのように記憶されている。
まず、JITコンパイル手段021がIR命令列Aを実行しようとすると、命令列選択手段022は、IR命令列Aの関連IR命令列の中に、最適化処理を未実施のものがあるか判断する。命令列実行情報323を参照すると、IR命令列Aの関連IR命令列の中に最適化処理を未実施のものがあることが分かる。そのため、演算装置選択手段023は、関連IR命令列のうち実行回数が多いIR命令列Bを最適化対象のIR命令列として選択する。
次に演算装置選択手段023は、最適化処理を実行する演算装置を選択するが、第k演算装置(1≦k≦n)のCPU利用率をαk(%)、基本演算装置に相当するコアAとの間で共有される共有記憶装置123、223へのアクセス時間をTk(ns)とした時に、αk+Tkの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアA020とコアB120との間で共有される共有記憶装置はL2キャッシュ123である。また、コアA020とコアC220との間で共有される共有記憶装置はメモリ223である。したがって、コアB12は計算結果が101(=100+1)であり、コアC220は計算結果が80(=0+80)となる。そのため、演算装置選択手段023は、最適化処理を実行するコアとしてコアC220を選択し、コアC220に対してIR命令列Bを最適化するよう指示する。
これに従い、コアC220の第2最適化手段221では、IR命令列Bの最適化を行い、変換された最適化済実命令列のメモリアドレスが0x20002000だとすると、そのメモリアドレスを命令列実行情報323に書き込む。さらに、第2演算装置情報書き込み手段224がIR命令列Bと自身の演算装置識別子"コアC"の対応付けを最適化演算装置情報324に書き込む。
こうした処理の後で、コアA020のJITコンパイル手段021がIR命令列Bを実行しようとした時に、実行演算装置選択手段025は最適化演算装置情報324を参照して、最適化済実命令列Bを最適化したコアとしてコアC220を認識し、コアC220に対して最適化済実命令列Bを実行するよう指示する。コアC220の第2実行手段225はこの指示に応じて、自身のキャッシュC222に記憶されている最適化済実命令列Bを実行することができるため、JITコンパイルシステムにおけるプログラムの実行速度が向上することになる。
[実施例3]
次に、本発明の第3の実施例を、図14および図15を参照して説明する。かかる実施例は、本発明の第3の実施の形態に対応するものである。
図14で示すように、本実施例は、マルチコアCPU008、シングルコアCPU009を備えたJITコンパイルシステムである。
ここで、命令列実行情報323には、IR命令列320のメモリアドレス、IR命令列320の分岐先IR命令列情報、IR命令列320の実行回数、実命令列321のメモリアドレス、最適化済実命令列322のメモリアドレスが図15Aのように記憶されている。また各CPUコア020、120、220のCPU利用率が図15Bのようになっている。また基本演算装置に相当するコアAから各共有記憶装置123、223へのアクセスに掛かる時間が図15Cのようになっている。また命令列複数選択手段026は、実行回数の多いIR命令列320を2つ選択するものとする。
まず、JITコンパイル手段021がIR命令列Aを実行しようとすると、命令列複数選択手段026は、IR命令列Aの関連IR命令列の中に、最適化処理を未実施のものがあるか判断する。命令列実行情報323を参照すると、IR命令列Aの関連IR命令列の中に最適化処理を未実施のものがあることが分かる。そのため、命令列複数選択手段026は、関連IR命令列のうち実行回数が多いIR命令列AそのものとIR命令列Bを、最適化対象のIR命令列として選択する。
次に演算装置複数選択手段027は、最適化処理を実行する演算装置を選択するが、第k演算装置(1≦k≦n)のCPU利用率をαk(%)、基本演算装置に相当するコアAとの間で共有される共有記憶装置123、223へのアクセス時間をTk(ns)とした時に、αk+Tkの計算結果が小さい演算装置を優先して選択することとする。本実施例では、コアA020とコアB120との間で共有される共有記憶装置はL2キャッシュ123である。また、コアA020とコアC220との間で共有される共有記憶装置はメモリ223である。したがって、コアB120は計算結果が1(=0+1)であり、コアC220は計算結果が100(=0+100)となる。そのため、演算装置複数選択手段027は、IR命令列Aの最適化を行うコアとしてコアB120を選択し、IR命令列Bの最適化を行うコアとしてコアC220を選択する。演算装置複数選択手段027は、更にそれぞれのコアに対して、それぞれのIR命令列を最適化するよう指示する。
これに従い、コアB120ではIR命令列Aの最適化を行い、変換された最適化済実命令列Aの置かれたメモリアドレスが0x20001000だとすると、そのメモリアドレスを命令列実行情報323に書き込む。同時に、コアC220ではIR命令列Bの最適化を行い、変換された最適化済実命令列Bの置かれたメモリアドレスが0x20002000だとすると、そのメモリアドレスを命令列実行情報323に書き込む。
こうした処理の後で、コアA020のJITコンパイル手段021がIR命令列Aとその分岐先であるIR命令列Bを実行しようとした時には、最適化済実命令列Aおよび最適化済実命令列Bと連続して実行することができる。そのため、JITコンパイルシステムで実行されるプログラムの実行速度が向上することになる。
以上に説明した本発明にかかるJITコンパイルシステムは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はCPU、MPU(Micro Processing Unit)がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、BD(Blu-ray Disc)、ROM(Read Only Memory)カートリッジ、バッテリバックアップ付きRAM(Random Access Memory)、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネットも含まれる。
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているOS(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
この出願は、2009年3月25日に出願された日本出願特願2009−073426を基礎とする優先権を主張し、その開示の全てをここに取り込む。
000、030 基本演算装置
001、021、031 JITコンパイル手段
002、022 命令列選択手段
003、023 演算装置選択手段
004 基本ローカル記憶装置
005、025 実行演算装置選択手段
006、026 命令列複数選択手段
007、027 演算装置複数選択手段
020 コアA
024 L1キャッシュA
031 命令列実行手段
032 最適化演算装置選択手段
120 コアB
124 L1キャッシュB
220 コアC
224 L1キャッシュC
123 L2キャッシュ
130、230、n30 最適化演算装置
131、231、n31 最適化手段
132、232、n32 共有記憶装置
100 第1演算装置
101、121 第1最適化手段
102 第1ローカル記憶装置
103 第1共有記憶装置
104、124 第1演算装置情報書き込み手段
105、125 第1実行手段
110、320、330 IR命令列
111、321 実命令列
112、322 最適化済実命令列
113、323 命令列実行情報
114、324 最適化演算装置情報
200 第2演算装置
201、221 第2最適化手段
202 第2ローカル記憶装置
203 第2共有記憶装置
204、224 第2演算装置情報書き込み手段
205、225 第2実行手段
223 メモリ
331 最適化実命令列
n00 第n演算装置
n01 第n最適化手段
n02 第nローカル記憶装置
n03 第n共有記憶装置
n04 第n演算装置情報書き込み手段
n05 第n実行手段

Claims (36)

  1. 基本演算装置と、複数の最適化演算装置と、それぞれが前記基本演算装置からアクセス可能であって、前記複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置を備え、
    前記最適化演算装置は、IR命令列から最適化実命令列を生成し、生成した最適化実命令列を自身に対応する共有記憶装置に格納する最適化手段を有し、
    前記基本演算装置は、前記基本演算装置から前記共有記憶装置へのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を選択する最適化演算装置選択手段と、
    前記共有記憶装置に格納された最適化実命令列を実行する命令列実行手段とを有するコンパイルシステム。
  2. 前記最適化演算装置選択手段は、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項1に記載のコンパイルシステム。
  3. 前記最適化演算装置選択手段は、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項1又は2に記載のコンパイルシステム。
  4. 前記最適化手段は、さらに前記IR命令列と、当該IR命令列から生成した最適化実命令列とを対応付けた命令列実行情報を前記共有記憶装置に格納し、
    前記命令列実行手段は、前記命令列実行情報に基づいて、前記IR命令列に対応する最適化実命令列があると判断したとき、前記共有記憶装置に格納された最適化実命令列を実行する請求項1乃至3のいずれかに記載のコンパイルシステム。
  5. 前記命令列実行手段は、前記IR命令列に対応する最適化実命令がないと判断したときは、前記IR命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項4に記載のコンパイルシステム。
  6. 前記命令列実行手段は、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記IR命令列と、当該IR命令列から生成された非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
    前記IR命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記IR命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項5に記載のコンパイルシステム。
  7. 前記最適化演算装置は、さらに前記生成した最適化実命令列がキャッシュされるローカル記憶装置と、
    前記最適化実命令列を生成したIR命令列と、自身とを対応付けた最適化演算装置情報を前記共有記憶装置に格納する演算装置情報格納手段と、
    前記基本演算装置は、さらに前記IR命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置に、前記ローカル記憶装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する実行演算装置選択手段を有する請求項4乃至6のいずれかに記載のコンパイルシステム。
  8. 前記基本演算装置は、さらに前記基本演算装置が実行しているIR命令列に関連して実行される可能性のある関連IR命令列から前記最適化実命令列を生成するIR命令列を選択する命令列選択手段を有する請求項1乃至7のいずれかに記載のコンパイルシステム。
  9. 前記命令列選択手段は、前記最適化実命令列を生成するIR命令列を複数選択し、
    前記最適化演算装置選択手段は、前記選択した複数のIR命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項8に記載のコンパイルシステム。
  10. 前記命令列選択手段は、前記最適化実命令列を生成するIR命令列をその実行回数に基づいて選択する請求項8又は9に記載のコンパイルシステム。
  11. 前記複数の共有記憶装置は、記憶階層を構成する請求項1乃至10のいずれかに記載のコンパイルシステム。
  12. 前記演算装置は、CPUコアであり、
    前記記憶装置は、メモリである請求項1乃至11のいずれかに記載のコンパイルシステム。
  13. IR命令列から最適化実命令列を生成するか否かを決定し、
    前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、それぞれが複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を前記複数の最適化演算装置から選択するコンパイル方法。
  14. 前記最適化演算装置の選択において、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項13に記載のコンパイル方法。
  15. 前記最適化演算装置の選択において、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項13又は14に記載のコンパイル方法。
  16. 前記コンパイル方法は、さらに前記選択された最適化演算装置が生成した最適化実命令列を自身に対応する共有記憶装置に格納し、前記IR命令列と、当該IR命令列から生成した最適化実命令列とを対応付けた命令列実行情報を格納し、
    前記命令列実行情報に基づいて、前記IR命令列に対応する最適化実命令列があると判断したとき、前記基本演算装置が、前記共有記憶装置に格納された最適化実命令列を実行する請求項13乃至15のいずれかに記載のコンパイル方法。
  17. 前記命令列の実行において、前記IR命令列に対応する最適化実命令がないと判断したときは、前記IR命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項16に記載のコンパイル方法。
  18. 前記命令列の実行において、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記IR命令列と、当該IR命令列の非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
    前記IR命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記IR命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項17に記載のコンパイル方法。
  19. 前記コンパイル方法は、さらに前記最適化演算装置が、前記生成した最適化実命令列をキャッシュし、
    前記最適化実命令列を生成したIR命令列と、当該最適化実命令列を生成した最適化演算装置とを対応付けた最適化演算装置情報を格納し、
    前記IR命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する請求項16乃至18のいずれかに記載のコンパイル方法。
  20. 前記コンパイル方法は、さらに前記基本演算装置が実行しているIR命令列に関連して実行される可能性のある関連IR命令列から前記最適化実命令列を生成するIR命令列を選択する請求項13乃至19のいずれかに記載のコンパイル方法。
  21. 前記IR命令列の選択において、前記最適化実命令列を生成するIR命令列を複数選択し、
    前記最適化演算装置の選択において、前記選択した複数のIR命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項20に記載のコンパイル方法。
  22. 前記IR命令列の選択において、前記最適化実命令列を生成するIR命令列をその実行回数に基づいて決定する請求項20又は21に記載のコンパイル方法。
  23. 前記複数の共有記憶装置は、記憶階層を構成する請求項13乃至22のいずれかに記載のコンパイル方法。
  24. 前記演算装置は、CPUコアであり、
    前記記憶装置は、メモリである請求項13乃至23のいずれかに記載のコンパイル方法。
  25. IR命令列から最適化実命令列を生成するか否かを決定する処理と、
    前記最適化実命令列を生成する場合に、それぞれが基本演算装置からアクセス可能であって、それぞれが複数の最適化演算装置のいずれかに対応付けられた複数の共有記憶装置への基本演算装置からのアクセス時間に基づいて、前記最適化実命令列を生成する最適化演算装置を前記複数の最適化演算装置から選択する処理とをコンピュータに実行させるコンパイルプログラム。
  26. 前記最適化演算装置を選択する処理において、前記アクセス時間が短い共有記憶装置に対応する最適化演算装置を優先して選択することを特徴とする請求項25に記載のコンパイルプログラム。
  27. 前記最適化演算装置を選択する処理において、さらに前記最適化演算装置の利用率に基づいて、前記最適化演算装置を選択する請求項25又は26に記載のコンパイルプログラム。
  28. 前記コンパイルプログラムは、さらに前記選択された最適化演算装置が生成した最適化実命令列を自身に対応する共有記憶装置に格納し、前記IR命令列と、当該IR命令列から生成した最適化実命令列とを対応付けた命令列実行情報を格納する処理と、
    前記命令列実行情報に基づいて、前記IR命令列に対応する最適化実命令列があると判断したとき、前記基本演算装置が、前記共有記憶装置に格納された最適化実命令列を実行する処理とを備えた請求項25乃至27のいずれかに記載のコンパイルプログラム。
  29. 前記命令列を実行する処理において、前記IR命令列に対応する最適化実命令がないと判断したときは、前記IR命令列から非最適化実命令列を生成し、生成した非最適化実命令列を実行する請求項28に記載のコンパイルプログラム。
  30. 前記命令列を実行する処理において、さらに前記生成した非最適化実命令列を共有記憶装置に格納し、前記IR命令列と、当該IR命令列の非最適化実命令列とを対応付けた情報を前記命令列実行情報に格納するとともに、
    前記IR命令列に対応する最適化実命令がないと判断したときに、前記命令列実行情報に基づいて、前記IR命令列に対応する非最適化実命令列があると判断した場合、前記共有記憶装置に格納された非最適化実命令列を実行する請求項29に記載のコンパイルプログラム。
  31. 前記コンパイルプログラムは、さらに前記最適化演算装置が、前記生成した最適化実命令列をキャッシュする処理と、
    前記最適化実命令列を生成したIR命令列と、当該最適化実命令列を生成した最適化演算装置とを対応付けた最適化演算装置情報を格納する処理と、
    前記IR命令列に対応する最適化実命令列があると判断したときに、前記最適化演算装置情報に基づいて決定した最適化演算装置にキャッシュされる最適化実命令列を実行させることにより、前記最適化実命令列を実行する処理とを有する請求項28乃至30のいずれかに記載のコンパイルプログラム。
  32. 前記コンパイルプログラムは、さらに前記基本演算装置が実行しているIR命令列に関連して実行される可能性のある関連IR命令列から前記最適化実命令列を生成するIR命令列を選択する処理を有する請求項25乃至31のいずれかに記載のコンパイルプログラム。
  33. 前記命令列を選択する処理において、前記最適化実命令列を生成するIR命令列を複数選択し、
    前記最適化演算装置を選択する処理において、前記選択した複数のIR命令列のそれぞれに対応するように、前記最適化演算装置を選択する請求項32に記載のコンパイルプログラム。
  34. 前記命令列を選択する処理において、前記最適化実命令列を生成するIR命令列をその実行回数に基づいて決定する請求項32又は33に記載のコンパイルプログラム。
  35. 前記複数の共有記憶装置は、記憶階層を構成する請求項25乃至34のいずれかに記載のコンパイルプログラム。
  36. 前記演算装置は、CPUコアであり、
    前記記憶装置は、メモリである請求項25乃至35のいずれかに記載のコンパイルプログラム。
JP2011505822A 2009-03-25 2010-02-09 コンパイルシステム、コンパイル方法およびコンパイルプログラム Active JP5278538B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011505822A JP5278538B2 (ja) 2009-03-25 2010-02-09 コンパイルシステム、コンパイル方法およびコンパイルプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009073426 2009-03-25
JP2009073426 2009-03-25
PCT/JP2010/000787 WO2010109751A1 (ja) 2009-03-25 2010-02-09 コンパイルシステム、コンパイル方法およびコンパイルプログラムを格納した記憶媒体
JP2011505822A JP5278538B2 (ja) 2009-03-25 2010-02-09 コンパイルシステム、コンパイル方法およびコンパイルプログラム

Publications (2)

Publication Number Publication Date
JPWO2010109751A1 JPWO2010109751A1 (ja) 2012-09-27
JP5278538B2 true JP5278538B2 (ja) 2013-09-04

Family

ID=42780451

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011505822A Active JP5278538B2 (ja) 2009-03-25 2010-02-09 コンパイルシステム、コンパイル方法およびコンパイルプログラム

Country Status (3)

Country Link
US (1) US20120017070A1 (ja)
JP (1) JP5278538B2 (ja)
WO (1) WO2010109751A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884664B2 (en) 2019-03-14 2021-01-05 Western Digital Technologies, Inc. Executable memory cell
US10884663B2 (en) * 2019-03-14 2021-01-05 Western Digital Technologies, Inc. Executable memory cells
CN113986239B (zh) * 2021-10-22 2024-09-20 烽火通信科技股份有限公司 分布式编译方法、装置、设备及可读存储介质
CN116991429B (zh) * 2023-09-28 2024-01-16 之江实验室 计算机程序的编译调优方法、装置和存储介质
CN118550547A (zh) * 2024-07-26 2024-08-27 武汉凌久微电子有限公司 一种gpu程序编译加速方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048186A (ja) * 2004-08-02 2006-02-16 Hitachi Ltd 動的コンパイラの生成コードを保護する言語処理系
JP2006221643A (ja) * 2005-02-08 2006-08-24 Sony Computer Entertainment Inc 命令セットのエミュレーションのための方法、装置及びシステム
JP2009009253A (ja) * 2007-06-27 2009-01-15 Renesas Technology Corp プログラム実行方法、プログラム、およびプログラム実行システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992005490A1 (en) * 1990-09-18 1992-04-02 Fujitsu Limited Exclusive control method for shared memory
US6658656B1 (en) * 2000-10-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US7383396B2 (en) * 2005-05-12 2008-06-03 International Business Machines Corporation Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048186A (ja) * 2004-08-02 2006-02-16 Hitachi Ltd 動的コンパイラの生成コードを保護する言語処理系
JP2006221643A (ja) * 2005-02-08 2006-08-24 Sony Computer Entertainment Inc 命令セットのエミュレーションのための方法、装置及びシステム
JP2009009253A (ja) * 2007-06-27 2009-01-15 Renesas Technology Corp プログラム実行方法、プログラム、およびプログラム実行システム

Also Published As

Publication number Publication date
WO2010109751A1 (ja) 2010-09-30
US20120017070A1 (en) 2012-01-19
JPWO2010109751A1 (ja) 2012-09-27

Similar Documents

Publication Publication Date Title
US8683468B2 (en) Automatic kernel migration for heterogeneous cores
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
JP6398725B2 (ja) コンパイルプログラム、コンパイル方法およびコンパイラ装置
JP6432450B2 (ja) 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
JP6245031B2 (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
JP5966509B2 (ja) プログラム、コード生成方法および情報処理装置
JP5093509B2 (ja) Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
KR100883655B1 (ko) 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
JP2015201119A (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
US11226798B2 (en) Information processing device and information processing method
JP6400296B2 (ja) マルチモード支援プロセッサ及びマルチモードを支援する処理方法
JP2008003882A (ja) コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
US8327122B2 (en) Method and system for providing context switch using multiple register file
JP2007532990A (ja) ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造
JP7025104B2 (ja) 情報処理装置、方法およびプログラム
US9104577B2 (en) Optimizing memory bandwidth consumption using data splitting with software caching
US20100199067A1 (en) Split Vector Loads and Stores with Stride Separated Words
US20150089149A1 (en) Arithmetic processing device and control method for arithmetic processing device
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
WO2018168264A1 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2018124877A (ja) コード生成装置、コード生成方法、およびコード生成プログラム
JP2022140995A (ja) 情報処理装置、コンパイルプログラムおよびコンパイル方法
JP7035751B2 (ja) コード変換装置、コード変換方法、及びコード変換プログラム
JP5240200B2 (ja) データ処理装置および方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130506

R150 Certificate of patent or registration of utility model

Ref document number: 5278538

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150