(57)【要約】    【課題】  複数の演算器を持つプロセッサ上で動作するプログラムを実行性能の良いものに最適化するための作業効率が向上するプログラム最適化支援装置を提供する。    【解決手段】  プロセッサのアーキテクチャ情報を解析するアーキテクチャ情報解析手段１０１と、プロセッサ上で動作するプログラムを入力又は編集するプログラム入力／編集手段１０３と、アーキテクチャ情報解析手段１０１によって解析されたアーキテクチャ情報とプログラム入力／編集手段１０３によって入力又は編集されるプログラムとからプログラム最適化支援情報を生成するプログラム最適化支援情報生成手段１０２と、前記プログラム最適化支援情報を表示するプログラム最適化支援情報表示手段１０４とを有する。【選択図】      図１
2007087348.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器を持つプロセッサ上で動作するプログラムの最適化を支援するプログラム最適化支援装置であって、
プロセッサのアーキテクチャ情報を解析するアーキテクチャ情報解析手段と、
前記プロセッサ上で動作するプログラムを入力又は編集するプログラム入力／編集手段と、
前記アーキテクチャ情報解析手段によって解析された前記プロセッサのアーキテクチャ情報と前記プログラム入力／編集手段によって入力又は編集されるプログラムとからプログラムの最適化を支援する為のプログラム最適化支援情報を生成するプログラム最適化支援情報生成手段と、
前記プログラム最適化支援情報生成手段で生成されたプログラム最適化支援情報を表示するプログラム最適化支援情報表示手段と
を有することを特徴とするプログラム最適化支援装置。
【請求項２】
前記アーキテクチャ情報は、前記プロセッサの命令セットと命令発行制限と命令のレイテンシであることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項３】
前記アーキテクチャ情報は、前記プロセッサに内蔵されているレジスタの種類とレジスタ数であることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項４】
前記アーキテクチャ情報は、前記プロセッサに内蔵されている演算器の種類と演算器数であることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項５】
前記プログラム最適化支援情報は、命令間のデータ依存関係を表わすグラフであることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項６】
前記プログラム最適化支援情報は、命令発行制限違反の有無であることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項７】
前記プログラム最適化支援情報は、レイテンシを考慮していない命令の有無であることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項８】
前記プログラム最適化支援情報は、前記プロセッサに内蔵されているレジスタの生存区間を表わすグラフとレジスタの競合を表わすグラフであることを特徴とする請求項１記載のプログラム最適化支援装置。
【請求項９】
複数の演算器を持つプロセッサ上で動作するプログラムの最適化を支援するプログラム最適化支援装置の制御方法であって、
プロセッサのアーキテクチャ情報を解析するアーキテクチャ情報解析ステップと、
前記プロセッサ上で動作するプログラムを入力又は編集するプログラム入力／編集ステップと、
前記アーキテクチャ情報解析ステップによって解析された前記プロセッサのアーキテクチャ情報と前記プログラム入力／編集ステップによって入力又は編集されるプログラムとからプログラムの最適化を支援する為のプログラム最適化支援情報を生成するプログラム最適化支援情報生成ステップと、
前記プログラム最適化支援情報生成ステップで生成されたプログラム最適化支援情報を表示するプログラム最適化支援情報表示ステップと
を有することを特徴とするプログラム最適化支援装置の制御方法。
【請求項１０】
前記アーキテクチャ情報は、前記プロセッサの命令セットと命令発行制限と命令のレイテンシであることを特徴とする請求項９記載のプログラム最適化支援装置の制御方法。
【請求項１１】
前記アーキテクチャ情報は、前記プロセッサに内蔵されているレジスタの種類とレジスタ数であることを特徴とする請求項９記載のプログラム最適化支援装置の制御方法。
【請求項１２】
前記アーキテクチャ情報は、前記プロセッサに内蔵されている演算器の種類と演算器数であることを特徴とする請求項９記載のプログラム最適化装置の制御方法。
【請求項１３】
前記プログラム最適化支援情報は、命令間のデータ依存関係を表わすグラフであることを特徴とする請求項９記載のプログラム最適化支援装置の制御方法。
【請求項１４】
前記プログラム最適化支援情報は、命令発行制限違反の有無であることを特徴とする請求項９記載のプログラム最適化支援装置の制御方法。
【請求項１５】
前記プログラム最適化支援情報は、レイテンシを考慮していない命令の有無であることを特徴とする請求項９記載のプログラム最適化支援装置の制御方法。
【請求項１６】
前記プログラム最適化支援情報は、前記プロセッサに内蔵されているレジスタの生存区間を表わすグラフとレジスタの競合を表わすグラフであることを特徴とする請求項９記載のプログラム最適化支援装置の制御方法。
【請求項１７】
請求項９乃至１６のいずれかに記載のプログラム最適化支援装置の制御方法を実現するためのコンピュータ読み取り可能なプログラムコードを有することを特徴とする制御プログラム。
【請求項１８】
請求項９乃至１６のいずれかに記載のプログラム最適化支援装置の制御方法を実現するためのコンピュータ読み取り可能なプログラムコードを保持することを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算器を持つプロセッサ上で動作するプログラムを、実行性能の良いものに最適化するためのプログラム最適化支援装置及びその装置を制御する制御方法及び制御プログラム及びその制御プログラムを格納した記憶媒体に関する。
【背景技術】
【０００２】
近年、複数の演算器を同時に動作させて命令を実行できる方式のプロセッサが用いられている。この方式の代表的なものとして、VLIW (Very Long Instruction Word) アーキテクチャ方式を採用したプロセッサがある。
【０００３】
VLIWアーキテクチャ方式とは、１つのVLIW命令の中に並列実行可能と解析された命令を複数配置して、これら複数の命令を、それぞれ個別の演算器に実行させるものである。
【０００４】
VLIW命令中に配置された命令間には、処理するデータに依存関係があったり、演算器等のハードウェアリソースの競合があったりしてはならない。
【０００５】
VLIWアーキテクチャ方式では、コンパイラがこのような命令スケジューリングを行い、できる限り複数の命令を同時に実行できるように命令を並び換えてVLIW命令系列を生成する。そのため、VLIWアーキテクチャ方式を採用しているプロセッサのプログラム実行性能は、コンパイラの最適化技術に依存する。
【０００６】
コンパイラによって最適化されたプログラムであっても、命令スケジューリングが良好に行われないことがある。つまり、実際には、並列実行可能である命令にも拘らず、複数のVLIW命令に分けて命令が配置されてしまうことがある。
【０００７】
例えば、図３に示すような命令系列の場合に、コンパイラによってスケジューリングされて生成されるVLIW命令系列は、例えば、図４のようになる。
【０００８】
しかし、図４に示すVLIW命令系列の中には空きが多くなっており、実行性能は悪いものになっている。
【０００９】
図３に示すような命令系列の場合には、命令を図５に示すようにスケジューリングして、命令を配置し直せば、VLIW命令系列の長さが１減り、図４に示すVLIW命令系列より実行性能が良いものとなる。
【００１０】
なお、図３〜図５中の斜線及び網等は、命令間のデータの依存関係を表わしている。また、ここで考えているプロセッサは、４つの演算器１〜４を持っているものとする。
【００１１】
これ以外にも、不要な命令があったり、不要なメモリアクセスを行う命令があったりするために、実行性能が悪いVLIW命令系列がコンパイラによって生成される場合がある（例えば、特許文献１参照）。
【特許文献１】特開２００２−１４１９５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記のように、コンパイラの命令スケジューリングには限界があるため、より実行性能の良いVILW命令系列が必要な場合には、プログラム作成者が命令スケジューリングを行って、プログラムを実行性能の良いものに最適化する必要がある。
【００１３】
プログラム作成者は、後述する様々な事を考慮しなければ、実行性能の良いVLIW命令系列を得ることはできない。
【００１４】
しかし、複数の要素を考慮しながらプログラムを実行性能の良いものに最適化することは困難である。
【００１５】
本発明は、上述したような従来技術の有する問題点を解消するためになされたものである。その目的は、複数の演算器を持つプロセッサ上で動作するプログラムを実行性能の良いものに最適化するための作業効率が向上するプログラム最適化支援装置及びその制御方法及び制御プログラム及び記憶媒体を提供することである。
【課題を解決するための手段】
【００１６】
本発明は、上記目的を達成するため、本発明のプログラム最適化支援装置は、複数の演算器を持つプロセッサ上で動作するプログラムの最適化を支援するプログラム最適化支援装置であって、プロセッサのアーキテクチャ情報を解析するアーキテクチャ情報解析手段と、前記プロセッサ上で動作するプログラムを入力又は編集するプログラム入力／編集手段と、前記アーキテクチャ情報解析手段によって解析された前記プロセッサのアーキテクチャ情報と前記プログラム入力／編集手段によって入力又は編集されるプログラムとからプログラムの最適化を支援する為のプログラム最適化支援情報を生成するプログラム最適化支援情報生成手段と、前記プログラム最適化支援情報生成手段で生成されたプログラム最適化支援情報を表示するプログラム最適化支援情報表示手段とを有することを特徴とする。
【００１７】
また、上記目的を達成するために、本発明のプログラム最適化支援装置の制御方法は、複数の演算器を持つプロセッサ上で動作するプログラムの最適化を支援するプログラム最適化支援装置の制御方法であって、プロセッサのアーキテクチャ情報を解析するアーキテクチャ情報解析ステップと、前記プロセッサ上で動作するプログラムを入力又は編集するプログラム入力／編集ステップと、前記アーキテクチャ情報解析ステップによって解析された前記プロセッサのアーキテクチャ情報と前記プログラム入力／編集ステップによって入力又は編集されるプログラムとからプログラムの最適化を支援する為のプログラム最適化支援情報を生成するプログラム最適化支援情報生成ステップと、前記プログラム最適化支援情報生成ステップで生成されたプログラム最適化支援情報を表示するプログラム最適化支援情報表示ステップとを有することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、複数の演算器を持つプロセッサ上で動作するプログラムを入力又は編集すると、プロセッサのアーキテクチャ情報とプログラムとから、プログラム作成者がプログラムを実行性能の良いものに最適化するためのプログラム最適化支援情報が作成され、そのプログラム最適化支援情報がディスプレイ等に表示されるため、プログラムを実行性能の良いものに最適化するための作業効率が向上する。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施の形態について、図１及び図２を用いて説明する。
【００２０】
なお、説明の便宜上、「プログラムを実行性能の良いものに最適化する」ことを、「プログラムを最適化する」と記述する。
【００２１】
図１は、本発明の一実施の形態に係るプログラム最適化支援装置の構成を示すブロック図である。同図において、１００は外部から入力されるプロセッサのアーキテクチャ情報、１０１はアーキテクチャ情報解析手段、１０２はプログラム最適化支援情報作成手段、１０３はプログラム入力／編集手段、１０４はプログラム最適化支援情報表示手段である。
【００２２】
アーキテクチャ情報解析手段１０１は、プロセッサのアーキテクチャ情報１００を解析するものである。プログラム最適化支援情報作成手段１０２は、アーキテクチャ情報解析手段１０１により解析されたプロセッサのアーキテクチャ情報１００と、プログラム入力／編集手段１０３によって入力又は編集されるプログラムとから、プログラムの最適化を支援するためのプログラム最適化支援情報を生成するものである。プログラム入力／編集手段１０３は、前記プロセッサ上で動作するプログラムを入力又は編集するものである。プログラム最適化支援情報表示手段１０４は、プログラム最適化支援情報作成手段１０２から入力されるプログラム最適化支援情報を表示するものである。
【００２３】
次に、上記構成に成る本実施の形態に係るプログラム最適化支援装置の動作について、図２を用いて説明する。
【００２４】
図２は、プログラム作成者が本実施の形態に係るプログラム最適化支援装置を用いて、プログラムの最適化を行う場合の処理動作の流れを示すフローチャートである。
【００２５】
図２において、まず、ステップＳ２００で、プログラム作成者は、プロセッサのアーキテクチャ情報１００を図１に示すプログラム最適化支援装置に入力する。アーキテクチャ情報１００は、例えば、XML等のファイルに保持されている。また、プロセッサのアーキテクチャ情報１００とは、プロセッサの命令セット、命令発行制限、命令のレイテンシ、レジスタの種類、レジスタ数、演算器の種類及び演算器数等のことである。
【００２６】
プログラム最適化支援装置に入力されたプロセッサのアーキテクチャ情報１００は、ステップＳ２０１でアーキテクチャ情報解析手段１０１により解析される。
【００２７】
その後、ステップＳ２０２でプログラム作成者は、プログラム入力／編集手段１０３を用いてプログラムの入力又は編集を行う。プログラム入力／編集手段１０３は、例えば、エディタであり、プログラムを入力又は編集する機能を持ったものである。
【００２８】
次に、ステップＳ２０３で、アーキテクチャ情報解析手段１０１によって解析されたプロセッサのアーキテクチャ情報１００と、プログラム入力／編集手段１０３によって入力又は編集されたプログラムとから、プログラム作成者がプログラムの最適化を行うためのプログラム最適化支援情報を、プログラム最適化支援情報作成手段１０２がリアルタイム又はプログラム作成者の要求時に作成する。
【００２９】
なお、プログラム最適化支援情報については後述する。
【００３０】
前記ステップＳ２０３において作成されたプログラム最適化支援情報は、ステップＳ２０４でプログラム最適化支援情報表示手段１０４によって図示しないディスプレイ等の出力装置に表示出力される。
【００３１】
次に、ステップＳ２０５で、プログラムの入力又は編集を終了したか否かを判断する。そして、前記ステップＳ２０４において、出力装置に表示されたプログラム最適化支援情報を基に、プログラム作成者が更にプログラムの最適化を行う場合には、前記ステップＳ２０５における判断結果は否定（No）となって前記ステップＳ２０２へ戻る。また、プログラムの最適化を行わない場合には、前記ステップＳ２０５における判断結果は肯定（Yes）となって、本処理動作を終了する。
【００３２】
次に、プログラムの最適化を行う場合にプログラム作成者が考慮しなければならない事柄を列挙する。
（１）プログラム作成者は、命令間のデータ依存関係を考慮しなければならない。つまり、従来では、コンパイラが自動で行っていたことをプログラム作成者が行わなければならない。
【００３３】
しかし、VLIWアーキテクチャ方式のプロセッサは、複数の命令を並列実行することが可能であるために、複数の依存関係を同時に考慮する必要があり、それを把握することは難しい。
【００３４】
本実施の形態に係るプログラム最適化支援装置では、プログラム最適化支援情報作成手段１０２がプログラム最適化支援情報としてデータの依存関係を表わす有向グラフを作成する。そして、プログラム最適化支援情報表示手段１０４が、プログラム最適化支援情報作成手段１０２により作成されたプログラム最適化支援情報である有向グラフを視覚的に表示する。これにより、プログラム作成者は、データの依存関係を把握し易くなるため、プログラムの最適化を行うための作業効率の向上が図れる。
（２）プログラム作成者は、命令の発行制限を考慮しなければならない。
【００３５】
これは、プロセッサの演算器によっては実行できない命令があったり、VLIW命令中に同時には配置できない命令があったりするためである。
【００３６】
命令発行制限は予め決められたものであり、プログラムをコンパイルして初めて命令発行制限違反を検出するのでは、プログラム最適化の作業効率が悪い。
【００３７】
本実施の形態に係るプログラム最適化支援装置では、プログラム最適化支援情報作成手段１０２がプログラム最適化支援情報として命令発行制限の有無をリアルタイムに検出する。そして、この検出結果に基づいてプログラム最適化支援情報表示手段１０４は、命令発行制限違反となる命令に色付けする等して、プログラム作成者に通知することができるため、プログラムの最適化を行うための作業効率の向上が図れる。
（３）プログラム作成者は命令のレイテンシも考慮しなければならない。
【００３８】
これは、命令によって演算結果がレジスタに格納されるまでのサイクル数が異なることに起因する。演算結果がレジスタに格納される前に、その演算結果にアクセスしようとすると、待ちサイクルが生じてしまう可能性がある。そのため、命令のレイテンシを考慮していないプログラムの実行性能は悪い。
【００３９】
本実施の形態に係るプログラム最適化支援装置では、プログラム最適化支援情報作成手段１０２がレイテンシを考慮していない命令の有無をリアルタイムに検出する。そして、この検出結果に基づいてプログラム最適化支援情報表示手段１０４は、レイテンシを考慮していない命令に色付けする等して、プログラム作成者に通知することができるため、プログラムの最適化を行うための作業効率の向上が図れる。
（４）プログラム作成者は、ハードウェアリソース(レジスタ、演算器等)の競合や使用状況を考慮しなければならない。
【００４０】
これは、VLIW命令中に配置される命令間では、同じレジスタや演算器は使用できないためである。また、限られたハードウェアリソースを効率的に使用するための管理、即ち、レジスタや演算器の使用状況の管理も複雑になる。
【００４１】
本実施の形態に係るプログラム最適化支援装置では、プログラム作成者の要求に応じて、プログラム最適化支援情報作成手段１０２がプログラム最適化支援情報として、レジスタの生存区間やレジスタの競合を表わす有向グラフを作成する。そして、プログラム最適化支援情報表示手段１０４は、プログラム最適化支援情報作成手段１０２により作成されたプログラム最適化支援情報である有向グラフを視覚的に表示する。これにより、プログラム作成者は、レジスタの生存区間やレジスタの競合を把握し易くなるため、プログラムの最適化を行うための作業効率の向上が図れる。
【００４２】
なお、本発明は、本実施の形態に限られるものではなく、本発明の主題に基づき、どのようなものであっても適用可能である。
【００４３】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム又は装置に供給し、そのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出して実行することによっても達成されることは言うまでもない。
【００４４】
この場合、記憶媒体から読出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４５】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(ＯＳ)等が実際の処理の一部又は全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００４６】
また、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００４７】
また、上記プログラムは、上述した実施の形態の機能をコンピュータで実現することができれば良く、その形態は、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給されるスクリプトデータ等の形態を有するものでも良い。
【００４８】
また、プログラムを供給する記録媒体としては、例えば、ＲＡＭ、ＮＶ−ＲＡＭ、フロッピー（登録商標）ディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ）、磁気テープ、不揮発性のメモリカード、他のＲＯＭ等の上記プログラムを記憶できるものであれば良い。
【００４９】
更に、上記プログラムは、インターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続される不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施の形態に係るプログラム最適化支援装置の構成を示すブロック図である。
【図２】本発明の一実施の形態に係るプログラム最適化支援装置における処理動作の流れを示すフローチャートである。
【図３】スケジューリング前の一般的な命令系列の一例を示す図である。
【図４】コンパイラによってスケジューリングされた一般的なVLIW命令系列の一例を示す図である。
【図５】プログラム作成者によってスケジューリングされた一般的なVLIW命令系列の一例を示す図である。
【符号の説明】
【００５１】
１００  アーキテクチャ情報
１０１  アーキテクチャ情報解析手段
１０２  最適化支援情報作成手段
１０３  プログラム編集手段
１０４  最適化支援情報表示手段
【図１】
2007087348.tif 000003
【図２】
2007087348.tif 000004
【図３】
2007087348.tif 000005
【図４】
2007087348.tif 000006
【図５】
2007087348.tif 000007