JP4196614B2 - 命令スケジューリング方法、命令スケジューリング装置、及びプログラム - Google Patents

命令スケジューリング方法、命令スケジューリング装置、及びプログラム Download PDF

Info

Publication number
JP4196614B2
JP4196614B2 JP2002241877A JP2002241877A JP4196614B2 JP 4196614 B2 JP4196614 B2 JP 4196614B2 JP 2002241877 A JP2002241877 A JP 2002241877A JP 2002241877 A JP2002241877 A JP 2002241877A JP 4196614 B2 JP4196614 B2 JP 4196614B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
target
constraint
program
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.)
Expired - Fee Related
Application number
JP2002241877A
Other languages
English (en)
Other versions
JP2004078824A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2002241877A priority Critical patent/JP4196614B2/ja
Priority to CN03154654.4A priority patent/CN1253790C/zh
Priority to US10/645,871 priority patent/US20040083468A1/en
Publication of JP2004078824A publication Critical patent/JP2004078824A/ja
Application granted granted Critical
Publication of JP4196614B2 publication Critical patent/JP4196614B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、命令スケジューリング方法、及び命令スケジューリング装置に関し、特に、命令を処理するハードウェア資源固有の制約条件を考慮して命令をスケジューリングする技術に関する。
【0002】
【従来の技術】
従来の並列処理プロセッサを対象として命令をスケジューリングする命令スケジューリング装置は、入力プログラム中に記述された複数命令それぞれの好適な実行時期を決定する。
このような命令スケジューリング装置は、並列プロセッサを対象とする従来のコンパイラ装置に一般に備えられており、コンパイル後のプログラムに含まれる各命令の好適な実行時期を決定し、当該決定された実行時期に従って各命令を並べ換えることにより、並列最適化された目的プログラムを生成する。
【0003】
従来のある種の命令スケジューリング装置は、リストスケジューリングと呼ばれる方法を用いて命令スケジューリングを行う。当該方法は、入力プログラム中の各命令に命令間に存するデータ依存関係にのみ基づいて優先順位(本願発明に係る優先順位と特に区別する場合、先行制約順位と称する)を算出し、実行時期未決定なる命令のうち最高の先行制約順位を算出された命令の実行時期を決定する処理を、全ての命令の実行時期が決定されるまで繰り返す。
【0004】
ここで、データ依存関係とは、同一のハードウェア資源により処理される命令間に存する順序関係を言い、従来、(1)入力プログラムにおいて先に記述された命令(先行命令と称する)が定義した資源を、同じく後に記述された命令(後続命令と称する)が参照する真の依存関係、(2)先行命令が参照した資源を後続命令が定義する逆依存関係、及び(3)先行命令が定義した資源を後続命令がさらに定義する出力依存関係の3種類に分類されている。
【0005】
これらの関係にある命令間の実行順序を変更すると、プログラムの実行結果の同一性が保証されなくなるため、命令スケジューリング装置は、データ依存関係にある命令間の実行順序が維持されるよう各命令の実行時期を決定する。
図14は、従来装置が行う命令スケジューリング処理の一例を示すフローチャートである。従来の命令スケジューリング処理は、大きく、データ依存グラフ生成処理S910、優先順位算出処理S920、及び実行時期決定処理S930に分けて実行される。
(データ依存グラフ生成処理S910)
従来装置は、まず、入力プログラムにおける命令間のデータ依存関係を表すデータ依存グラフを生成する。当該データ依存グラフは、有向非循環グラフであり、入力プログラムの個々の命令に対応してそのノードが設けられ、データ依存関係があると判定された命令に対応するノード間に、先行命令から後続命令に向かうアークが設けられる。
【0006】
図15は、従来装置に入力される入力プログラムの一例である。
図16は、図15の入力プログラムに対して従来装置が生成するデータ依存グラフである。
(優先順位算出処理S920)
従来装置は、個々の命令に先行制約順位を算出する。算出される先行制約順位は、一例として、(1)データ依存関係にある後続命令を持たない命令に対して1、(2)逆依存関係又は出力依存関係にある1つ以上の後続命令を持つ命令に対して、当該後続命令に算出された最大値、及び(3)真の依存関係にある1つ以上の後続命令を持つ命令に対して、当該後続命令に算出された最大値よりも1大きい値であり、数値が大きいほど高い順位を表す。
【0007】
この先行制約順位は、具体的に、まず前述したデータ依存グラフにおいて真の依存関係、逆依存関係、及び出力依存関係を表すアークに、それぞれ、1、0、及び0なる重み値を付与し、次に各ノードからデータ依存関係にある後続命令を終端ノードまで辿るパス上のアークに付与された重み値を累計し、さらに1を加えることによって算出される。終端ノードに至るパスが複数あり、複数の値が算出される場合、その最大値を採用する。
【0008】
図16において、算出される先行制約順位を各ノードに付記する。
先行制約順位の値は、真の依存関係、逆依存関係、及び出力依存関係にある命令間のレイテンシを、それぞれ一律に1、0、及び0とし、かつ、データ依存関係にある命令間の実行順序を維持する限りにおいて、各パス上の先頭命令を含む実行時期未決定なる命令を全て実行するための最小所要時間に相当する。
【0009】
当該値が最大のパスは、クリティカルパスと呼ばれる。従来装置は、クリティカルパスの先頭命令(即ち、最大の優先順位を算出された命令)をできるだけ早い時期に実行させるようにスケジューリングすることにより、全命令の実行所要時間を極小化する。
(実行時期決定処理S930)
従来装置は、データ依存関係にある命令の実行順序を維持するために、データ依存関係にある先行命令が存在しないか、又は存在するならば全て実行時期決定済である命令のみを配置可能と判断する。
【0010】
そして、各命令の配置可否判断、配置可能と判断された命令のうち最も高い先行制約順位を算出された命令の選択、及び、当該選択された命令の実行時期決定処理を、全ての命令の実行時期が決定されるまで繰り返す。
命令の実行時期は、具体的には、当該命令を実行すべきクロックサイクルとして決定される。命令の実行時期をあるクロックサイクルに決定することを、命令をそのクロックサイクルに配置するとも言う。
【0011】
従来装置は、命令を、(1)逆依存関係又は出力依存関係にある先行命令が配置されたクロックサイクルと同じかそれ以降、かつ真の依存関係にある先行命令が配置されたクロックサイクルよりも後で、(2)ハードウェア資源が当該命令を処理可能な最先のクロックサイクルに配置する。
従来装置は、これにより、プログラムの実行結果の同一性を保つと共に、全命令を極小のクロックサイクルに配置する。
【0012】
図17は、対象プロセッサに備えられた命令デコーダ、演算部、及びメモリアクセス部が、1つのクロックサイクルあたり、それぞれ2命令、2命令、及び1命令を並行して処理可能である場合に、図15のプログラムの各命令が配置されるクロックサイクルを示している。同図中、クロックサイクル欄901は、クロックサイクルを相対番号で示し、命令1欄902及び命令2欄903は、各クロックサイクルに配置された命令と、それが何回目の決定によって配置されたかを示している。
【0013】
メモリアクセス部により処理される命令E、命令F、及び命令Gは、一クロックサイクルあたり一命令のみを実行可能である。そのため、これらの命令はサイクル3、サイクル4、及びサイクル5に配置され、その結果、サイクル4には、命令Fのみが配置される。
従来のコンパイラは、このようにして配置された命令をクロックサイクルの早い順に並べると共に、各クロックサイクルの末尾の命令に、クロックサイクルの境界を示す境界情報を付加することにより、並列最適化された目的プログラムを生成する。当該境界情報は、例えば1ビットのフラグ情報として表される。対象プロセッサは、当該境界情報を付加された命令とその次の命令とを、それぞれ異なるクロックサイクルにおいて実行する。
【0014】
図17の例について言えば、各命令は再び図15に示した順序で出力されると共に、命令A、命令C、命令E、命令F、及び命令Gに当該境界情報が付加される。
並列最適化された目的プログラムは、対象プロセッサにおいて、並列最適化されないプログラムに比べて、より少ないクロックサイクルで実行されることが期待される。
【0015】
【発明が解決しようとする課題】
しかしながら、上記従来の命令スケジューリング技術によれば、全命令が必ずしも最小のクロックサイクルに配置されない、即ち並列最適化が十分に行われない場合があるという問題がある。
例えば、図15の例について言えば、第2決定において命令Eを選択してサイクル2に配置すれば、命令F、及び命令Gが、サイクル3、及びサイクル4にそれぞれ配置できるとともに、命令B、命令C、及び命令Dもまた、サイクル2、サイクル3、及びサイクル4にそれぞれ配置でき、全命令が4クロックサイクルに配置されることとなる(図5参照)。
【0016】
しかしながら、従来技術によれば、先行制約順位をデータ依存関係にのみ基づいて算出するので、第2決定において命令Eが選択されるような先行制約順位は算出され得ず、このような最適な配置は行われない。
上記の問題に鑑み、本発明は、従来よりも少ないクロックサイクルに全命令を配置できる命令スケジューリング方法、及び命令スケジューリング装置の提供を目的とする。
【0017】
【課題を解決するための手段】
上記問題を解決するため、本発明の命令スケジューリング方法は、対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令に、自命令を処理するハードウェア資源固有の制約条件と、当該ハードウェア資源によって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出ステップと、最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定ステップとを含む。
【0018】
また、本発明の命令スケジューリング方法は、対象プログラム中に記述された複数命令の実行時期をそれぞれ決定する命令スケジューリング方法であって、第1命令の実行時期を決定した場合、第2命令の実行時期を所定期間に含まれるように決定できなくなるか否かを、当該第2命令を処理するハードウェア資源固有の制約条件に基づいて判断する決定可否判断ステップと、当該決定ができなくなると判断された場合、当該第1命令の実行時期の決定を撤回すると共に、当該第1命令と異なる命令の実行時期を決定する再決定ステップとを含んでもよい。
【0019】
また、本発明の命令スケジューリング装置は、対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令に、自命令を処理するハードウェア資源固有の制約条件と、当該ハードウェア資源によって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出手段と、最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定手段とを備える。
【0020】
また、本発明の命令スケジューリング装置は、対象プログラム中に記述された複数命令の実行時期をそれぞれ決定する命令スケジューリング装置であって、第1命令の実行時期を決定した場合、第2命令の実行時期を所定期間に含まれるように決定できなくなるか否かを、当該第2命令を処理するハードウェア資源固有の制約条件に基づいて判断する決定可否判断手段と、当該決定ができなくなると判断された場合、当該第1命令の実行時期の決定を撤回すると共に、当該第1命令と異なる命令の実行時期を決定する再決定手段とを備えてもよい。
【0021】
【発明の実施の形態】
(第1の実施の形態)
第1の実施の形態における命令スケジューリング装置は、入力プログラム中に記述された複数命令の各々に、データ依存関係と、ハードウェア資源固有の制約条件とに基づいて優先順位を算出し、算出された優先順位を用いて命令の選択と配置とを行う。
【0022】
より詳細には、データ依存関係にあって、かつ同一の先行制約順位を算出される2つの命令について、対象プロセッサにおけるハードウェア資源が両者を並行して処理可能か否かを判断する。そして、否と判断された場合その先行命令に対して当該先行制約順位を繰上げて得られる順位を本発明に係る優先順位とし、それ以外の命令に対して当該先行制約順位を本実施の形態に係る優先順位とする。そして、最も高い優先順位を算出された未配置命令の選択と配置とを、全ての命令が配置されるまで繰り返す。
【0023】
本命令スケジューリング装置は、言うなれば、先行制約順位としては同一値を算出されるが、ハードウェア資源に関する制約のために並行して処理されない2つの命令について、その先行命令の優先順位を従来の先行制約順位よりも高く算出することで、資源制約のために生じるクリティカルパスを発見する。従来装置は、資源制約のために生じるクリティカルパスを発見していなかった。
【0024】
本命令スケジューリング装置は、そのようなクリティカルパス上の先頭命令をできるだけ早いクロックサイクルに配置するので、資源制約のために並行処理されない命令を含む全命令を、従来よりも少ないクロックサイクルに配置できる。
(全体構成)
図1は、第1の実施の形態におけるコンパイラ装置100の全体構成を示す機能ブロック図である。コンパイラ装置100は、命令スケジューリング部130として、第1の実施の形態に係る命令スケジューリング装置を含んでいる。
【0025】
コンパイラ装置100は、ソースファイル101からソースプログラムを取得し、当該ソースプログラムをコンパイルして得られたプログラムから、並列最適化された目的プログラムを生成し、当該目的プログラムを目的ファイル102へ出力する。
コンパイラ装置100は、コンパイラ上流部110、アセンブラコード生成部120、命令スケジューリング部130、及び出力部170から構成される。命令スケジューリング部130は、データ依存関係解析部140、優先順位算出部150、及び実行時期決定部160から構成される。優先順位算出部150は、先行制約順位算出部151、及び資源制約評価部152を含み、実行時期決定部160は、命令選択部161を含む。
【0026】
コンパイラ装置100は、具体的にはプロセッサ、プログラムを記憶しているROM(Read Only Memory)、作業用のRAM(Random Access Memory)、ディスク装置等のソフトウェア及びハードウェアにより実現される。前記各部の機能は、プロセッサがROMに記憶されているプログラムを実行することにより実現される。前記各部の間におけるデータの受け渡しは、RAM、ディスク装置等のハードウェアを介して行われる。
【0027】
コンパイラ上流部110は、ソースファイル101からソースプログラムを読み出し、字句解析処理及び構文解析処理を行うことにより、中間コード列を生成する。
アセンブラコード生成部120は、コンパイラ上流部110により生成された中間コード列から、アセンブラコード列を生成する。
【0028】
命令スケジューリング部130は、アセンブラコード生成部120により生成されたアセンブラコード列に含まれる各命令に、他の命令との間のデータ依存関係と、自命令を処理するハードウェア資源固有の制約条件とに基づいて優先順位を算出する。そして、実行時期未決定なる命令のうち最も高い優先順位を算出された命令を選択し、選択された命令の実行時期を決定する処理を、全ての命令の実行時期が決定されるまで繰り返す。命令スケジューリング部130の詳細について、後述する。
【0029】
出力部170は、各命令を、配置されたクロックサイクルの早い順に、従来技術の項で述べた境界情報と共に出力する。
以下、コンパイラ装置100が対象とするプロセッサの構成について説明し、その後、命令スケジューリング部130の詳細を説明する。
(対象プロセッサ)
図2は、コンパイラ装置100が対象とするプロセッサの一構成例を示す機能ブロック図である。本図は、本願発明に言うハードウェア資源固有の制約条件の一具体例を説明するために掲げられ、当該説明に必要な部分のみを簡略に示している。
【0030】
プロセッサ800は、大きく分けて、命令供給部810、解読部820、実行部830から構成される。
命令供給部810は、IA(Instruction Address)バス、及びID(Instruction data)バスを介して、命令フェッチ部811により、図示しない外部メモリから命令をフェッチし、フェッチされた命令を第1命令レジスタ812及び第2命令レジスタ813に保持すると共に、1つのクロックサイクルに2命令を並行して解読部820へ供給する。
【0031】
解読部820は、第1命令デコーダ821及び第2命令デコーダ822を含み、1つのクロックサイクルに2命令を並行して解読し、その解読結果に応じた制御信号を実行部830へ供給する。
実行部830は、解読部820から供給された制御信号に応じて動作する。第1演算部831と第2演算部832とは、それぞれ専用のバスラインでレジスタファイル833、及び条件フラグレジスタ834と接続され、1つのクロックサイクルに2つの命令に関する演算処理を並行して行う。メモリアクセス部835は、OA(Operand Address)バス、及びOD(Operand data)バスを介して、1つのクロックサイクルに1つの命令に関するメモリアクセス処理を行う。
【0032】
プロセッサ800は、このような構成を有するため、1つのクロックサイクルに、演算部を用いて処理される命令であれば最大2つ、メモリアクセスユニットを用いて処理される命令であれば最大1つを処理可能である。これが、プロセッサ800の資源制約条件となる。
(命令スケジューリング部130の詳細)
第1の実施の形態における命令スケジューリング部130の詳細についてフローチャートを参照しながら説明する。
【0033】
図3は、第1の実施の形態における命令スケジューリング処理を示すフローチャートである。
(ステップS101)データ依存関係解析部140は、アセンブラコード生成部120により生成されたアセンブラコード列に含まれる命令間のデータ依存関係を表すデータ依存グラフを、従来技術と同様にして生成する。
【0034】
(ステップS102)先行制約順位算出部151は、データ依存関係解析部140により生成されたデータ依存グラフにおいて、真の依存関係、逆依存関係、及び出力依存関係を表す各アークに、それぞれ1、0、及び0なる重み値を付与する。この処理は、従来技術において先行制約順位を算出する処理に相当する。(ステップS103)重み値0を付与された各アークについて、ステップS106までを実行する。
【0035】
(ステップS104)資源制約評価部152は、当該アークの両端の命令、即ち、先行制約値として同一値を算出される命令について、ハードウェア資源が当該命令を並行して処理可能か否か判断する。否と判断された場合、ステップS105を実行する。
(ステップS105)当該アークの重み値を1に変更する。
【0036】
(ステップS106)ステップS103から繰り返す。
(ステップS107)優先順位算出部150は、各ノードからデータ依存関係にある後続命令を終端ノードまで辿るパス上のアークに付与され、資源制約評価部152によって変更された後の重み値を累計し、さらに1を加えることにより、ノード毎に優先順位を算出する。ステップS105において変更した重み値を累計することで、先行制約順位を繰上げて得られる優先順位が算出される。
【0037】
(ステップS108)実行時期未決定なる命令がある間、ステップS111までを実行する。
(ステップS109)命令選択部161は、実行時期未決定なる命令に対応するノードのうち、優先順位算出部150により最も高い優先順位を算出されたノードを選択する。
【0038】
(ステップS110)実行時期決定部160は、命令選択部161により選択されたノードに対応する命令を、(1)命令と逆依存関係又は出力依存関係にある先行命令が配置されたクロックサイクルと同じかそれよりも後、かつ当該命令と真の依存関係にある先行命令が配置されたクロックサイクルよりも後で、(2)ハードウェア資源が当該命令を処理可能な最も早いクロックサイクルに当該命令を配置する。
【0039】
(ステップS111)ステップS108から繰り返す。
(具体例)
図4は、図15のプログラムから、データ依存関係解析部140によって生成され、先行制約順位算出部151によって各アークに重み付けされたデータ依存グラフを示している。かっこ内の数値は、各アークに付与された重み値を示す。
【0040】
資源制約評価部152は、重み値0を付与されたアークの両端の命令、即ち命令E及び命令F、並びに命令F及び命令Gが、何れもメモリアクセスユニットを用いて処理される命令であることから、同一のクロックサイクルにおいて並行して処理不可能であると判断し、重み値をそれぞれ1に変更する。図4において、(0→1)なる表記は重み値の変更を示す。
【0041】
優先順位算出部150は、当該変更後の重み値を累計することにより優先順位を算出する。図4において、各ノードに付記した数値は、当該算出された優先順位を示す。ノードAの優先順位は、パスAEFGから算出された4が採られる。図5は、図4のデータ依存グラフから算出された優先順位を用いて行われる命令の配置を示している。表記法は図17と同様である。命令Eの優先順位が3と算出され、第2決定で命令Eがサイクル2に配置されることによって、図17の配置よりも1クロックサイクル少ない4クロックサイクルに全ての命令が配置される。
(第1のまとめ)
以上述べたように、第1の実施の形態における命令スケジューリング装置は、データ依存関係にあって、かつ同一の先行制約順位を算出される2つの命令が、対象プロセッサにおけるハードウェア資源によって並行処理されない場合、その先行命令の優先順位を従来の先行制約順位よりも高く算出する。
【0042】
これにより、従来の技術では発見されなかった資源制約のために生じるクリティカルパスを発見し、そのようなクリティカルパス上の先頭命令をできるだけ早いクロックサイクルに配置するので、資源制約のために並行処理されない命令を含む全命令を、従来よりも少ないクロックサイクルに配置できる。
(第2の実施の形態)
第2の実施の形態における命令スケジューリング装置は、まず、入力プログラム中に記述された複数命令の各々に先行制約順位を算出する。そして、配置可能な命令の各々に、自命令を処理するハードウェア資源によって処理される未配置命令の総数を、当該ハードウェア資源が並行して処理可能な最大命令数で除して得られる資源制約値を算出し、当該資源制約値及び前記先行制約順位の何れか大きい方を優先順位とし、最も高い優先順位を持つ命令の選択と配置とを、全ての命令が配置されるまで繰り返す。
【0043】
資源制約値は、当該ハードウェア資源によって処理される未配置命令を全て実行するための最小所要時間に相当する。
本命令スケジューリング装置は、この資源制約値を算出する点、及び、命令が配置されるたびに優先順位を算出し直す点で、第1の実施の形態と異なる。
以下、第1の実施の形態と同一の事項については説明を省略し、異なる事項について主に説明する。
(全体構成)
第2の実施の形態におけるコンパイラ装置は、第1の実施の形態のコンパイラ装置と同一の全体構成(図1参照)を有している。命令スケジューリング部130として、第2の実施の形態に係る命令スケジューリング装置を含み、その詳細な動作が、第1の実施の形態と異なる。
(命令スケジューリング部130の詳細)
第2の実施の形態における命令スケジューリング部130の詳細について、フローチャートを参照しながら説明する。
【0044】
図6は、第2の実施の形態における命令スケジューリング処理を示すフローチャートである。
(ステップS201)データ依存関係解析部140は、アセンブラコード生成部120により生成されたアセンブラコード列に含まれる命令間のデータ依存関係を表すデータ依存グラフを生成する。
【0045】
(ステップS202)先行制約順位算出部151は、データ依存関係解析部140により生成されたデータ依存グラフにおいて、真の依存関係、逆依存関係、及び出力依存関係を表す各アークに、それぞれ、1、0、及び0なる重み値を付与し累計することにより、先行制約順位を算出する。
(ステップS203)未配置命令がある間ステップS213までを実行する。
【0046】
(ステップS204)命令スケジューリング部130は、データ依存関係にある先行命令を持たないか、持つならば全て配置済となっている命令を配置可能命令と認識して、そのリストを作成する。
(ステップS205)作成されたリスト中の各命令についてステップS210までを実行する。
【0047】
(ステップS206)資源制約評価部152は、当該命令に対し、自命令を処理するハードウェア資源によって処理される未配置命令の数を、当該ハードウェア資源が並行して処理可能な最大命令数で除して得られる資源制約値を算出する。
(ステップS207)算出された資源制約値が、当該命令に算出された先行制約順位よりも大きい場合、ステップS208を実行し、その他の場合、ステップS209を実行する。
【0048】
(ステップS208)当該資源制約値を、当該命令の優先順位とする。
(ステップS209)当該先行制約順位を、当該命令の優先順位とする。
(ステップS210)ステップS205から繰り返す。
(ステップS211)命令選択部161は、実行時期未決定なる命令に対応するノードのうち、優先順位算出部150により最も高い優先順位を算出されたノードを選択する。
【0049】
(ステップS212)実行時期決定部160は、命令選択部161により選択されたノードに対応する命令を、(1)命令と逆依存関係又は出力依存関係にある先行命令が配置されたクロックサイクルと同じかそれよりも後、かつ当該命令と真の依存関係にある先行命令が配置されたクロックサイクルよりも後で、(2)ハードウェア資源が当該命令を処理可能な最も早いクロックサイクルに当該命令を配置する。
【0050】
(ステップS213)ステップS203から繰り返す。
(具体例)
再び、図15のプログラムを例に説明する。第2の実施の形態におけるデータ依存関係解析部140は、図16に示した従来と同様のデータ依存グラフを生成し、先行制約順位算出部151は、当該データ依存グラフから従来の優先順位である先行制約順位を算出する。
【0051】
図7及び図8は、命令スケジューリング部130による各命令の配置過程を示している。
両図中、命令欄301は各命令を符号で示し、使用資源欄302は当該命令の処理に使用される資源がメモリアクセス部、又は演算部であることを、それぞれ記号M、Aで示し、先行制約順位欄303は、当該命令に算出される先行制約順位を示している。
【0052】
第1決定欄310乃至第7決定欄370は、配置の決定順に、それぞれの決定について、決定前の配置状態、算出される資源制約値、算出される優先順位を示している。配置状態について、未配置でかつその回に配置不可、未配置でかつその回に配置可能、及び配置済である状態が、未決定、配置可能、及び決定されたサイクル番号により、それぞれ表される。
【0053】
配置結果欄380は、最終的に各命令が配置されるサイクル番号を示している。
以下、各回の決定について、詳細に説明する。
(第1決定)命令スケジューリング部130は、データ依存関係にある先行命令を持たない命令Aを唯一の配置可能命令と認識し、Aのみを要素とするリスト{A}を作成する。
【0054】
資源制約評価部152は、命令Aに対し、資源制約値を算出する。命令Aは、メモリアクセス部によって処理される命令である。この時点で実行時期未決定なる命令のうちメモリアクセス部によって処理される命令は、命令A、命令E、命令F、及び命令Gの4つであり、その数をメモリアクセス部が並行して処理可能な最大命令数1で除して得られる4を命令Aの資源制約値とする。
【0055】
当該資源制約値は、先行制約順位よりも大きいため、当該資源制約値4が命令Aの優先順位とされる。
命令選択部161は、命令Aを選択し、実行時期決定部160は、命令Aをサイクル1に配置する。
(第2決定)命令Aが配置済となったことで、優先順位算出部150は命令B、命令C、及び命令Eを配置可能命令と認識し、リスト{A、C、E}を作成する。
【0056】
資源制約評価部152は、命令Bに対し、資源制約値を算出する。命令Bは、演算部によって処理される命令である。この時点で演算部によって処理される未配置命令は、命令B、命令C、及び命令Dの3つであり、その数を演算部が並行して処理可能な最大命令数2で除して得られる1.5を命令Bの資源制約値とする。
【0057】
当該資源制約値は、先行制約順位よりも大きくないため、先行制約順位2が命令Bの優先順位とされる。
資源制約評価部152は、命令Cの優先順位を、命令Bと同様にして2と算出する。
資源制約評価部152は、命令Eに対し、資源制約値を算出する。命令Eは、メモリアクセス部によって処理される命令である。この時点でメモリアクセス部によって処理される未配置命令は、命令E、命令F、及び命令Gの3つであり、その数をメモリアクセス部が並行して処理可能な最大命令数1で除して得られる3を命令Eの資源制約値とする。
【0058】
当該資源制約値は、先行制約順位よりも大きいため、優先順位算出部150は、当該資源制約値3を命令Eの優先順位とする。
命令選択部161は、最大の優先順位を算出された命令Eを選択し、実行時期決定部160は、命令Eを、命令Aが配置されたサイクルの次サイクル以降、最先のサイクル2に配置する。
【0059】
(第3決定)命令A及び命令Eが配置済となったことで、優先順位算出部150は、それらを先行命令とする命令B、命令C、及び命令Fを配置可能命令と認識し、リスト{A、C、F}を作成する。
資源制約評価部152は、命令C、及び命令Bに対し、第2決定と同様にして優先順位2を算出する。
【0060】
資源制約評価部152は、命令Fに対し資源制約値2を算出する。当該資源制約値は先行制約順位よりも大きいため、優先順位算出部150は当該資源制約値2を命令Fの優先順位とする。
命令B、命令C、及び命令Fに同一の優先順位が算出されるため、命令選択部161は、元のプログラムにおける記述順に従って命令Bを選択する。実行時期決定部160は、命令Aが配置されたサイクル1の次サイクル以降、最先のサイクルに配置する。対象プロセッサにおいて、命令Bと、第2決定でサイクル2に配置された命令Eとが、各構成の動作並列度数の最大値を超えることなく並行して処理可能であると判断されることから、この最先のサイクルはサイクル2と決定される。
【0061】
(第4決定)以下、簡略に説明する。優先順位算出部150は、配置可能命令のリスト{C、F}を作成する。資源制約評価部152は、命令C、及び命令Fにそれぞれ資源制約値1、及び2を算出し、優先順位算出部150は、命令C、及び命令Fにそれぞれ優先順位2を算出する。
命令選択部161は、元のプログラムにおける記述順に従って命令Cを選択し、実行時期決定部160は、命令Cをサイクル3に配置する。
【0062】
(第5決定)優先順位算出部150は、配置可能命令のリスト{D、F}を作成する。資源制約評価部152は、命令D、及び命令Fにそれぞれ資源制約値0.5、及び2を算出し、優先順位算出部150は、命令D、及び命令Fにそれぞれ優先順位1、及び2を算出する。
命令選択部161は、命令Fを選択し、実行時期決定部160は、命令Fをサイクル3に配置する。
【0063】
(第6決定)優先順位算出部150は、配置可能命令のリスト{D、G}を作成する。資源制約評価部152は、命令D、及び命令Gにそれぞれ資源制約値0.5、及び1を算出し、優先順位算出部150は、命令D、及び命令Gにそれぞれ優先順位1を算出する。
命令選択部161は、元のプログラムにおける記述順に従って命令Dを選択し、実行時期決定部160は、命令Dをサイクル4に配置する。
【0064】
(第7決定)優先順位算出部150は、配置可能命令のリスト{G}を作成する。優先順位算出部150は、命令Gに優先順位1を算出する。
命令選択部161は、命令Gを選択し、実行時期決定部160は、命令Gをサイクル4に配置する。
このような配置過程から、第1の実施の形態と同様の命令の配置(図5参照)が決定される。
(第2のまとめ)
以上述べたように、第2の実施の形態における命令スケジューリング装置は、配置可能な命令の各々に、資源制約値と先行制約順位の何れか大きい方を優先順位として算出し、最も高い優先順位を算出された命令の選択と配置とを、全ての命令が配置されるまで繰り返す。
【0065】
これにより、資源制約の厳しい命令を従来よりも早いクロックサイクルに配置するので、そのような命令を含む全命令を従来よりも少ないクロックサイクルに配置できる。
特に、並列処理可能な命令数の小さな資源によって処理される多数の未配置命令があって、それらがデータ依存関係にない場合に、そのような命令に大きな資源制約値が算出されるので、早いクロックサイクルに適切に配置されるという、特有の効果が生じる。第1の実施の形態の命令スケジューリング装置は、データ依存関係にある命令間においてのみ、資源制約に応じて先行命令の優先順位を繰上げるので、そのような場合を適切に処理できない。
(第3の実施の形態)
第3の実施の形態における命令スケジューリング装置は、まず、入力プログラム中に記述された複数命令の各々に対し、先行制約順位を算出する。
【0066】
そして、以下に述べる処理を繰り返すことにより、所定目標数のクロックサイクルに命令の配置を試みる。
配置可能命令のうち最大の先行制約順位を算出された命令を配置し、その後、各未配置命令について、当該命令を配置可能なクロックサイクルの残数と、資源制約値とを算出する。当該資源制約値と当該残数との大小関係に基づいて、前記目標数のクロックサイクルに全未配置命令が配置可能か否かを判断する。
【0067】
否と判断された場合、直前に行った命令の配置を撤回すると共に、その命令を配置可能命令から除外し、他の配置可能命令の配置を試みる。
本命令スケジューリング装置は、資源制約値を用いて未配置命令の配置可否を判断し、否と判断された場合、直前の配置を撤回して他の命令の配置を試みる点で、第2の実施の形態と異なる。
【0068】
以下、第2の実施の形態と同一の事項については説明を省略し、異なる事項について主に説明する。
(全体構成)
図9は、第3の実施の形態におけるコンパイラ装置400の全体構成を示す機能ブロック図である。コンパイラ装置400は、命令スケジューリング部430として、第3の実施の形態に係る命令スケジューリング装置を含んでいる。
【0069】
コンパイラ装置400は、コンパイラ装置100と同様、ソースファイル101に保持されているソースプログラムから、並列最適化された目的プログラムを生成して目的ファイル102へ出力する。
コンパイラ装置400は、第1の実施の形態におけるコンパイラ装置100と共通の構成要素を含んでいる。同図中、そのような共通の構成要素を、図1に付した符号と同一の符号を用いて示す。
【0070】
コンパイラ装置400は、コンパイラ上流部110、アセンブラコード生成部120、命令スケジューリング部430、及び出力部170から構成される。命令スケジューリング部430は、データ依存関係解析部140、先行制約順位算出部151、及び実行時期決定部460から構成される。実行時期決定部460は、命令選択部161、決定可否判断部462、及び再決定制御部464を含む。決定可否判断部462は、資源制約評価部152を含む。
【0071】
コンパイラ装置400は、具体的にはプロセッサ、プログラムを記憶しているROM(Read Only Memory)、作業用のRAM(Random Access Memory)、ディスク装置等のソフトウェア及びハードウェアにより実現される。前記各部の機能は、プロセッサがROMに記憶されているプログラムを実行することにより実現される。前記各部の間におけるデータの受け渡しは、RAM、ディスク装置等のハードウェアを介して行われる。
【0072】
コンパイラ上流部110、アセンブラコード生成部120、及び出力部170は、第1の実施の形態と共通のため説明を省略し、以下、命令スケジューリング部430について説明する。
(命令スケジューリング部430の詳細)
第3の実施の形態における命令スケジューリング部430の詳細についてフローチャートを参照しながら説明する。
【0073】
図10は、第3の実施の形態における命令スケジューリング処理を示すフローチャートである。
(ステップS401)データ依存関係解析部140は、アセンブラコード生成部120により生成されたアセンブラコード列に含まれる命令間のデータ依存関係を表すデータ依存グラフを生成する。
【0074】
(ステップS402)先行制約順位算出部151は、データ依存関係解析部140により生成されたデータ依存グラフにおいて、真の依存関係、逆依存関係、及び出力依存関係を表す各アークに、それぞれ、1、0、及び0なる重み値を付与し累計することにより、先行制約順位を算出する。
(ステップS403)未配置命令がある間ステップS414までを実行する。
【0075】
(ステップS404)命令スケジューリング部430は、データ依存関係にある先行命令を持たないか、持つならば全て配置済となっている命令を配置可能命令と認識して、そのリストを作成する。
(ステップS405)命令選択部161は、当該リストから、最大の先行制約順位を算出された命令を選択し、実行時期決定部460は、(1)命令と逆依存関係又は出力依存関係にある先行命令が配置されたクロックサイクルと同じかそれよりも後、かつ当該命令と真の依存関係にある先行命令が配置されたクロックサイクルよりも後で、(2)ハードウェア資源が当該命令を処理可能な最も早いクロックサイクルに配置する。
【0076】
(ステップS406)命令スケジューリング部430は、当該命令を当該リストから除外する。
(ステップS407)ステップS405において行われた決定によって新たに配置可能となった命令を含む各配置可能命令について、ステップS411までを実行する。
【0077】
(ステップS408)資源制約評価部152は、当該命令を処理するハードウェア資源によって処理される未配置命令の数を、当該ハードウェア資源が並行して処理可能な最大命令数で除して得られる資源制約値を算出する。
決定可否判断部462は、当該命令を配置する余地があるクロックサイクルの数を残サイクル数として算出する。この算出には、対象プロセッサにおいて全ての命令を共通して処理する資源(例えば命令デコーダ)が、1クロックサイクルあたり並行して処理できる命令の最大数(以降、共通最大数と称する)が用いられる。前述のプロセッサ800の例では、この共通最大数は2である。
【0078】
当該残サイクル数は、具体的に、(1)所定目標数のクロックサイクルの中で、(2)当該命令と逆依存関係又は出力依存関係にある先行命令が配置されたクロックサイクルと同じかそれよりも後、かつ当該命令と真の依存関係にある先行命令が配置されたクロックサイクルよりも後において、(3)配置済の命令数が共通最大数に達していないクロックサイクルの数として求められる。
【0079】
(ステップS409)当該資源制約値が当該残サイクル数を上回っていれば、ステップS410へ進み、そうでなければ、ステップS413へ進む。
(ステップS410)当該リストが空なら、ステップS412へ進み、そうでなければ、ステップS411へ進む。
(ステップS411)再決定制御部464は、ステップS405において行われた決定を撤回する。ステップS405へ戻って他の命令の配置を試みる。
【0080】
(ステップS412)全命令を所定目標数のクロックサイクルに配置できないと判定し、命令スケジューリング処理を終了する。
(ステップS413)ステップS407から繰り返す。
(ステップS414)ステップS403から繰り返す。
(具体例)
再び、図15のプログラムを例に、クロックサイクルの目標数を4とした場合について説明する。第3の実施の形態におけるデータ依存関係解析部140は、図16に示した従来と同様のデータ依存グラフを生成し、先行制約順位算出部151は、当該データ依存グラフから従来の優先順位である先行制約順位を算出する。
【0081】
図11及び図12は、命令スケジューリング部430による各命令の配置過程を示している。
両図中、命令欄501は各命令を符号で示し、使用資源欄502は当該命令の処理に使用される資源がメモリアクセス部、又は演算部であることを、それぞれ記号M、Aで示し、先行制約順位欄503は、当該命令に算出される先行制約順位を示している。
【0082】
第1決定欄510乃至第7決定欄580は、配置の決定順に、それぞれの決定について、配置状態、算出される残サイクル数、算出される資源制約値を示している。配置状態欄について、未配置でかつその回に配置不可、未配置でかつその回に配置可能、及び配置済である状態が、未決定、配置可能、及び決定されたサイクル番号により、それぞれ表されると共に、その回において1つの配置可能命令に決定されるサイクル番号が付記される。
【0083】
配置結果欄590は、最終的に各命令が配置されるサイクル番号を示している。
以下、各回の決定について、詳細に説明する。
(第1決定)命令スケジューリング部430は、データ依存関係にある先行命令を持たない命令Aを唯一の配置可能命令と認識し、Aのみを要素とするリスト{A}を作成する。命令選択部161は、命令Aを選択し、実行時期決定部460は、命令Aをサイクル1に配置し、命令スケジューリング部430は、Aを当該リストから除外する。
【0084】
命令Aが配置された後の配置可能命令は、命令B、命令C、及び命令Eの3つである。これらの命令は、対象プロセッサにおいて、それぞれ演算部、演算部、及びメモリアクセス部により処理される。この時点で、演算部によって処理される未配置命令は、命令B、命令C、及び命令Dの3つであり、メモリアクセス部によって処理される未配置命令は、命令E、命令F、及び命令Gの3つである。
【0085】
命令Bに対し、資源制約評価部152は、演算部によって処理される未配置命令の数3を、演算部が並行して処理可能な最大命令数2で除して得られる資源制約値1.5を算出する。
また、決定可否判断部462は、命令Bと真の依存関係にある命令Aが配置されたサイクル1よりも後で、配置済の命令数が前記共通最大数に達していないクロックサイクルが、サイクル2、サイクル3、及びサイクル4の3つであることを認識し、残サイクル数3を算出する。
【0086】
同様に、命令Cに対し、資源制約評価部152は、資源制約値1.5を算出し、決定可否判断部462は、残サイクル数3を算出する。
命令Eに対し、資源制約評価部152は、メモリアクセス部によって処理される未配置命令の数3を、メモリアクセス部が並行して処理可能な最大命令数1で除して得られる資源制約値3を算出する。
【0087】
また、決定可否判断部462は、命令Eと真の依存関係にある命令Aが配置されたサイクル1よりも後で、配置済の命令数が前記共通最大数に達していないクロックサイクルが、サイクル2、サイクル3、及びサイクル4の3つであることを認識し、残サイクル数3を算出する。
何れの命令についても資源制約値が残サイクル数を上回らないので、第2決定処理へ進む。
【0088】
(第2決定)第2決定において、命令Bがサイクル2に配置される。当該配置後、配置可能である命令C及び命令Eについて、同様に、資源制約値と残サイクル数とが算出される。何れの命令についても資源制約値が残サイクル数を上回らないので、第3決定処理へ進む。
(第3決定)命令スケジューリング部430は、全ての先行命令が配置済となった命令C及び命令Eを配置可能命令と認識し、リスト{C、E}を作成する。命令選択部161は、命令Cを選択し、実行時期決定部460は、命令Cをサイクル2に配置し、命令スケジューリング部430は、Cを当該リストから除外する。
【0089】
命令Cが配置された後の配置可能命令は、命令D及び命令Eの2つである。これらの命令は、対象プロセッサにおいて、それぞれ演算部及びメモリアクセス部により処理される。この時点で、演算部によって処理される未配置命令は、命令Dのみであり、メモリアクセス部によって処理される未配置命令は、命令E、命令F、及び命令Gの3つである。
【0090】
命令Dに対し、資源制約評価部152は、演算部によって処理される未配置命令の数1を、演算部が並行して処理可能な最大命令数2で除して得られる資源制約値0.5を算出する。
また、決定可否判断部462は、命令Dと真の依存関係にある命令Cが配置されたサイクル2よりも後において、配置済の命令数が前記共通最大数に達していないクロックサイクルが、サイクル3、及びサイクル4の2つであることを認識し、残サイクル数2を算出する。
【0091】
命令Eに対し、資源制約評価部152は、メモリアクセス部によって処理される未配置命令の数3を、メモリアクセス部が並行して処理可能な最大命令数1で除して得られる資源制約値3を算出する。
また、決定可否判断部462は、命令Eと真の依存関係にある命令Aが配置されたサイクル1よりも後で、配置済の命令数が前記共通最大数に達していないクロックサイクルが、サイクル3、及びサイクル4の2つであることを認識し、残サイクル数2を算出する。
【0092】
ここで、命令Eについても資源制約値が残サイクル数を上回るので、再決定制御部464は、命令Cについて行われた決定を撤回して、他の命令の配置を試みる。
(第3決定−再試行)第3決定の再試行において、前記リストが{E}となっており、命令Eがサイクル2に配置される。
【0093】
命令Eが配置された後の配置可能命令は、決定を撤回された命令C、及び命令Fの2つである。これらの命令は、対象プロセッサにおいて、それぞれ演算部及びメモリアクセス部により処理される。この時点で、演算部によって処理される未配置命令は、命令C、及び命令Dの2つであり、メモリアクセス部によって処理される未配置命令は、命令F、及び命令Gの2つである。
【0094】
命令Cに対し、資源制約評価部152は、資源制約値1を算出し、決定可否判断部462は、残サイクル数2を算出する。
命令Eに対し、資源制約評価部152は、資源制約値2を算出し、決定可否判断部462は、残サイクル数2を算出する。
何れの命令についても資源制約値が残サイクル数を上回らないので、第4決定処理へ進む。
【0095】
(第4決定乃至第7決定)第4決定乃至第7決定において、決定の再試行は発生しない。図12に示した決定が各回に行われる。
図13は、このような配置過程から得られる命令の配置であり、目標の4クロックサイクルへの全ての命令の配置に成功している。
各命令が配置されるクロックサイクルは、第1及び第2の実施の形態における配置(図5参照)と同様であるが、決定の順序が一部異なる。
(第3のまとめ)
以上述べたように、第3の実施の形態における命令スケジューリング装置は、所定目標数のクロックサイクルに命令の配置を試みる。このために、先行制約順位を用いて各命令を配置し、配置が行われるごとに未配置命令が当該目標数のクロックサイクルに配置できなくなるか否か資源制約を考慮して判断し、否と判断される場合、直前の配置を撤回すると共に他の命令の配置を試みる。
【0096】
本命令スケジューリング装置は、資源制約を考慮して未配置命令の配置可否判断を行い、それに応じて配置の再試行を制御するので、同様の判断をデータ依存関係にのみ基づいて行い配置の再試行を制御する方法に比べてより多くの場合、資源制約の厳しい命令を含む全命令の配置に成功する。
(その他の変形例)
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)本発明は、実施の形態で説明したステップを含む方法であるとしてもよい。また、これらの方法を、コンピュータシステムを用いて実現するためのコンピュータプログラムであるとしてもよいし、前記プログラムを表すデジタル信号であるとしてもよい。
【0097】
また、本発明は、前記プログラム又は前記デジタル信号を記録したコンピュータ読取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、半導体メモリ等であるとしてもよい。
また、本発明は、電気通信回線、無線又は有線通信回線、若しくはインターネットに代表されるネットワーク等を経由して伝送される前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【0098】
また、本発明は、マイクロプロセッサ及びメモリを備えたコンピュータシステムであり、前記メモリは前記プログラムを記憶しており、前記マイクロプロセッサは前記メモリに記憶されている前記プログラムに従って動作することにより、前記方法を実現するとしてもよい。
また、前記プログラム又は前記デジタル信号は、前記記録媒体に記録されて移送され、若しくは、前記ネットワーク等を経由して移送され、独立した他のコンピュータシステムにおいて実施されるとしてもよい。
(2)本発明を説明するために例示したプログラム(図15参照)は、ソースプログラムをコンパイルして得られた並列最適化前のプログラムの総体であってもよく、また、そのようなプログラムの一つの基本ブロックに対応する部分であってもよい。これらの何れの場合も、本発明に含まれる。
(3)第3の実施の形態において、ステップS411で直前の命令の配置が撤回された場合、ステップS405へ戻ってリスト中の他の命令の配置を試行し、リスト中の各命令の配置に失敗した場合、ステップS412で目標クロックサイクルへの命令の配置はできないと判定するとした。
【0099】
しかしながら、別法として、ステップS404で過去に生成された配置可能命令のリストを記録すると共に、現在のリスト中の各命令の配置の再試行に失敗した場合、直ちに目標クロックサイクルへ配置不能と判定せず、過去のリストから決定された命令の配置を撤回し、その過去のリスト中の他の命令の配置を試行してもよい。
【0100】
このような処理は、いわゆるバックトラックアルゴリズムとして従来一般化されており、当該アルゴリズムの一具体化として容易に実施可能である。過去のリストを記録すると共に、あるリスト中の各命令の配置に失敗した場合に、過去のリストをバックトラックする場合も、本発明に含まれる。
【0101】
【発明の効果】
本発明の命令スケジューリング方法は、対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令に、自命令を処理するハードウェア資源固有の制約条件と、当該ハードウェア資源によって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出ステップと、最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定ステップとを含む。
【0102】
この方法によれば、ハードウェア資源固有の制約条件が考慮された前記優先順位を命令の選択と配置に用いることにより、資源制約の厳しい命令を優先的に早いクロックサイクルに配置できる。これにより、そのような命令を含む全命令を、従来よりも少ないクロックサイクルに配置できる。
また、前記命令スケジューリング方法において、前記優先順位算出ステップは、前記各対象命令に対し、前記データ依存関係にのみ基づいて先行制約順位を算出する先行制約順位算出サブステップと、前記各対象命令が、自命令と同一の先行制約順位を算出され、かつ前記データ依存関係にある後続命令を持つ場合、自命令とその後続命令とを前記ハードウェア資源が並行して処理可能か否かを判断する資源制約評価サブステップとを含み、否と判断された各対象命令に対し、前記算出された先行制約順位を繰り上げて得られる優先順位を算出し、その他の各対象命令に対し、前記算出された先行制約順位と等しい優先順位を算出してもよい。
【0103】
この方法によれば、データ依存関係にあって、かつ同一の先行制約順位を算出される2つの命令が、対象プロセッサにおけるハードウェア資源によって並行処理されない場合、その先行命令の優先順位を従来の先行制約順位よりも高く算出するので、従来の技術では発見されなかった資源制約のために生じるクリティカルパスを発見することができる。
【0104】
そして、そのようなクリティカルパス上の先頭命令をできるだけ早いクロックサイクルに配置するので、資源制約のために並行処理されない命令を含む全命令を、従来よりも少ないクロックサイクルに配置できる。
また、前記命令スケジューリング方法において、前記優先順位算出ステップは、前記各対象命令に対し、(1)前記データ依存関係にある後続命令を持たない場合1、(2)逆依存関係又は出力依存関係にある1つ以上の後続命令を持つ場合、当該後続命令に算出された最大値、及び(3)真の依存関係にある1つ以上の後続命令を持つ場合、当該後続命令に算出された最大値よりも1大きい値を、それぞれ先行制約順位として算出する先行制約順位算出サブステップと、前記各対象命令に対し、自命令を処理するハードウェア資源によって処理され実行時期未決定なる命令の総数を、当該ハードウェア資源が並行して処理可能な最大命令数で除して得られる資源制約値を算出する資源制約評価サブステップとを含み、当該資源制約値が当該先行制約順位よりも大きい場合、前記対象命令に当該資源制約値を優先順位として算出し、その他の場合、前記対象命令に当該先行制約順位を優先順位として付与し、前記実行時期決定ステップは、最も大きい優先順位を算出された対象命令の実行時期を決定してもよい。
【0105】
この方法によれば、前記各対象命令に、資源制約値と先行制約順位の何れか大きい方を優先順位として算出し、最も高い優先順位を算出された命令を選択して配置することにより、資源制約の厳しい命令を従来よりも早いクロックサイクルに配置することができるので、そのような命令を含む全命令を従来よりも少ないクロックサイクルに配置できる。
【0106】
特に、並列処理可能な命令数の小さな資源によって処理される多数の未配置命令があって、それらがデータ依存関係にない場合に、そのような命令に大きな資源制約値が算出されるので、早いクロックサイクルに適切に配置されるという特有の効果が生じる。
本発明の命令スケジューリング方法は、対象プログラム中に記述された複数命令の実行時期をそれぞれ決定する命令スケジューリング方法であって、第1命令の実行時期を決定した場合、第2命令の実行時期を所定期間に含まれるように決定できなくなるか否かを、当該第2命令を処理するハードウェア資源固有の制約条件に基づいて判断する決定可否判断ステップと、当該決定ができなくなると判断された場合、当該第1命令の実行時期の決定を撤回すると共に、当該第1命令と異なる命令の実行時期を決定する再決定ステップとを含む。
【0107】
また、前記命令スケジューリング方法において、前記所定期間は、クロックサイクル数により示され、前記決定可否判断ステップは、前記第2命令を処理するハードウェア資源によって処理され実行時期未決定なる命令の総数を、当該ハードウェア資源が並行して処理可能な最大命令数で除して得られる資源制約値を算出する資源制約評価サブステップを含み、当該資源制約値が前記クロックサイクル数よりも大きければ、前記決定ができなくなると判断してもよい。
【0108】
これらの方法によれば、命令の実行時期を所定期間に含まれるように決定できなくなるか否か資源制約を考慮して判断し、否と判断される場合、直前の配置を撤回すると共に他の命令の配置を行うので、同様の判断をデータ依存関係にのみ基づいて行い配置の撤回を制御する方法に比べてより多くの場合、資源制約の厳しい命令を含む全命令の配置に成功する。
【0109】
本発明のプログラム変換方法は、入力プログラムを、複数命令によって記述された中間プログラムに変換し、当該中間プログラムに対して前述の何れかの命令スケジューリング方法を適用することにより、当該複数命令の実行時期を決定することを特徴とする。
この方法によれば、前述の命令スケジューリング方法を当該中間プログラムに適用するので、従来よりも高度に並列最適化された目的プログラムが生成可能となる。
【0110】
本発明の命令スケジューリング装置は、対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令に、自命令を処理するハードウェア資源固有の制約条件と、当該ハードウェア資源によって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出手段と、最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定手段とを備える。
【0111】
本発明の命令スケジューリング装置は、対象プログラム中に記述された複数命令の実行時期をそれぞれ決定する命令スケジューリング装置であって、第1命令の実行時期を決定した場合、第2命令の実行時期を所定期間に含まれるように決定できなくなるか否かを、当該第2命令を処理するハードウェア資源固有の制約条件に基づいて判断する決定可否判断手段と、当該決定ができなくなると判断された場合、当該第1命令の実行時期の決定を撤回すると共に、当該第1命令と異なる命令の実行時期を決定する再決定手段とを備える。
【0112】
これらの構成によれば、前述と同様効果を有する命令スケジューリング装置を実現できる。
本発明のプログラムは、命令スケジューリングをコンピュータを用いて行うための、コンピュータ実行可能なプログラムであって、対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令に、自命令を処理するハードウェア資源固有の制約条件と、当該ハードウェア資源によって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出ステップと、最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定ステップとを前記コンピュータに実行させる。
【0113】
本発明のプログラムは、対象プログラム中に記述された複数命令の実行時期を、コンピュータを用いてそれぞれ決定するための、コンピュータ実行可能なプログラムであって、第1命令の実行時期を決定した場合、第2命令の実行時期を所定期間に含まれるように決定できなくなるか否かを、当該第2命令を処理するハードウェア資源固有の制約条件に基づいて判断する決定可否判断ステップと、当該決定ができなくなると判断された場合、当該第1命令の実行時期の決定を撤回すると共に、当該第1命令と異なる命令の実行時期を決定する再決定ステップとを前記コンピュータに実行させる。
【0114】
これらのプログラムによれば、前述と同様の効果を有する命令スケジューリング処理をコンピュータに実行させることができる。
本発明のプログラム記録媒体は、コンピュータ読み取り可能な記録媒体であって、前述のプログラムを記録していることを特徴とする。
このプログラム記録媒体によれば、前述した効果を有するプログラムを移送し所期のコンピュータにおいて実行させることができる。
【図面の簡単な説明】
【図1】コンパイラ装置100の全体構成を示す機能ブロック図である。
【図2】コンパイラ装置100が対象とするプロセッサの一構成例である。
【図3】命令スケジューリング処理を示すフローチャートである。
【図4】データ依存関係解析部140によって生成されるデータ依存グラフの一例である。
【図5】命令の配置の一例である。
【図6】命令スケジューリング処理を示すフローチャートである。
【図7】各命令の配置過程の一例である。
【図8】各命令の配置過程の一例である。
【図9】コンパイラ装置400の全体構成を示す機能ブロック図である。
【図10】命令スケジューリング処理を示すフローチャートである。
【図11】各命令の配置過程の一例である。
【図12】各命令の配置過程の一例である。
【図13】命令の配置の一例である。
【図14】従来装置が行う命令スケジューリング処理の一例を示すフローチャートである。
【図15】従来装置に入力される入力プログラムの一例である。
【図16】入力プログラムに対して従来装置が生成するデータ依存グラフである。
【図17】入力プログラムの各命令が配置されるクロックサイクルの一例である。
【符号の説明】
100 コンパイラ装置
101 ソースファイル
102 目的ファイル
110 コンパイラ上流部
120 アセンブラコード生成部
130 命令スケジューリング部
140 データ依存関係解析部
150 優先順位算出部
151 先行制約順位算出部
152 資源制約評価部
160 実行時期決定部
161 命令選択部
170 出力部
301 命令欄
302 使用資源欄
303 先行制約順位欄
310〜370 第1決定欄〜第7決定欄
380 配置結果欄
400 コンパイラ装置
430 命令スケジューリング部
460 実行時期決定部
462 決定可否判断部
464 再決定制御部
501 命令欄
502 使用資源欄
503 先行制約順位欄
510〜580 第1決定欄〜第7決定欄
590 配置結果欄
800 プロセッサ
810 命令供給部
811 命令フェッチ部
812 第1命令レジスタ
813 第2命令レジスタ
820 解読部
821 第1命令デコーダ
822 第2命令デコーダ
830 実行部
831 第1演算部
832 第2演算部
833 レジスタファイル
834 条件フラグレジスタ
835 メモリアクセス部
901 クロックサイクル欄
902 命令1欄
903 命令2欄

Claims (6)

  1. 処理対象となる対象プログラムを記憶するメモリを含み、命令実行用ハードウェアが実行する前記対象プログラム中の命令の実行時期を決定する命令スケジューリング装置における、前記命令スケジューリング装置が前記対象プログラム中の命令の実行時期を決定するための命令スケジューリング方法であって、
    前記命令実行用ハードウェアは、複数の命令実行部を含み、各命令実行部は、互いに種別の異なる命令を実行し、
    前記命令スケジューリング方法は、
    前記対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令について、自命令を処理する命令実行部によって処理される全対象命令中の命令の命令数と、当該命令実行部が前記自命令と同種の命令を並行して処理できる命令数とから導かれる制約条件と、前記命令実行用ハードウェアによって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出ステップと、
    最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定ステップと
    を含むことを特徴とする命令スケジューリング方法。
  2. 前記優先順位算出ステップは、
    前記各対象命令に対し、前記データ依存関係にのみ基づいて先行制約順位を算出する先行制約順位算出サブステップと、
    前記各対象命令が、自命令と同一の先行制約順位を算出され、かつ前記データ依存関係にある後続命令を持つ場合、自命令とその後続命令とを当該自命令を処理する命令実行部が並行して処理可能か否かを判断する資源制約評価サブステップとを含み、
    否と判断された各対象命令に対し、前記算出された先行制約順位を繰り上げて得られる優先順位を算出し、その他の各対象命令に対し、前記算出された先行制約順位と等しい優先順位を算出する
    ことを特徴とする請求項1に記載の命令スケジューリング方法。
  3. 前記優先順位算出ステップは、
    前記各対象命令に対し、(1)前記データ依存関係にある後続命令を持たない場合、(2)逆依存関係又は出力依存関係にある1つ以上の後続命令を持つ場合、当該後続命令に算出された最大値、及び(3)真の依存関係にある1つ以上の後続命令を持つ場合、当該後続命令に算出された最大値よりも1大きい値を、それぞれ先行制約順位として算出する先行制約順位算出サブステップと、
    前記各対象命令に対し、自命令を処理する命令実行部によって処理され実行時期未決定なる命令の総数を、当該命令実行部が並行して処理可能な最大命令数で除して得られる資源制約値を算出する資源制約評価サブステップとを含み、
    当該資源制約値が当該先行制約順位よりも大きい場合、前記対象命令に当該資源制約値を優先順位として算出し、その他の場合、前記対象命令に当該先行制約順位を優先順位として付与し、
    前記実行時期決定ステップは、最も大きい優先順位を算出された対象命令の実行時期を決定する
    ことを特徴とする請求項1に記載の命令スケジューリング方法。
  4. 処理対象となる対象プログラムを記憶するメモリを含み、命令実行用ハードウェアが実行する前記対象プログラム中の命令の実行時期を決定するコンパイラ装置であって、
    入力プログラムを、複数命令によって記述された中間プログラムに変換し、当該中間プログラムを対象プログラムとして出力する対象プログラム生成手段と、
    請求項1乃至の何れかに記載の命令スケジューリング方法に基づき、前記複数命令の実行時期を決定する命令スケジューリング手段とを備える
    ことを特徴とするコンパイラ装置。
  5. 処理対象となる対象プログラムを記憶するメモリを含み、命令実行用ハードウェアが実行する前記対象プログラム中の命令の実行時期を決定する命令スケジューリング装置であって、
    前記命令実行用ハードウェアは、複数の命令実行部を含み、各命令実行部は、互いに種別の異なる命令を実行し、
    前記命令スケジューリング装置は、
    前記対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令について、自命令を処理する命令実行部によって処理される全対象命令中の命令の命令数と、当該命令実行部が前記自命令と同種の命令を並行して処理できる命令数とから導かれる制約条件と、前記命令実行用ハードウェアによって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出手段と、
    最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定手段と
    を含むことを特徴とする命令スケジューリング装置。
  6. 複数の命令実行部を含み、各命令実行部は、互いに種別の異なる命令を実行する命令実行用ハードウェアに実行させる対象プログラム中の命令の実行時期を決定する命令スケジューリングをコンピュータを用いて行うための、コンピュータ実行可能なプログラムであって、
    前記対象プログラム中に記述された複数命令のうち1つ以上の命令を対象命令とし、各対象命令に、自命令を処理する命令実行部によって処理される全対象命令中の命令の命令数と、当該実行部が前記自命令と同種の命令を並行して処理できる命令数とから導かれる制約条件と、当該ハードウェア資源によって処理される他命令との間に存するデータ依存関係とに基づいて優先順位を算出する優先順位算出ステップと、
    最も高い優先順位を算出された対象命令の実行時期を決定する実行時期決定ステップと
    を前記コンピュータに実行させることを特徴とするプログラム。
JP2002241877A 2002-08-22 2002-08-22 命令スケジューリング方法、命令スケジューリング装置、及びプログラム Expired - Fee Related JP4196614B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002241877A JP4196614B2 (ja) 2002-08-22 2002-08-22 命令スケジューリング方法、命令スケジューリング装置、及びプログラム
CN03154654.4A CN1253790C (zh) 2002-08-22 2003-08-22 指令调度方法和指令调度设备
US10/645,871 US20040083468A1 (en) 2002-08-22 2003-08-22 Instruction scheduling method, instruction scheduling device, and instruction scheduling program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002241877A JP4196614B2 (ja) 2002-08-22 2002-08-22 命令スケジューリング方法、命令スケジューリング装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2004078824A JP2004078824A (ja) 2004-03-11
JP4196614B2 true JP4196614B2 (ja) 2008-12-17

Family

ID=32024230

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002241877A Expired - Fee Related JP4196614B2 (ja) 2002-08-22 2002-08-22 命令スケジューリング方法、命令スケジューリング装置、及びプログラム

Country Status (3)

Country Link
US (1) US20040083468A1 (ja)
JP (1) JP4196614B2 (ja)
CN (1) CN1253790C (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257807B2 (en) * 2003-09-22 2007-08-14 Lsi Corporation Method for optimizing execution time of parallel processor programs
CN101189580B (zh) * 2005-06-03 2010-05-19 Nxp股份有限公司 对至少一个独占资源的使用进行调度的数据处理***和方法
US8612957B2 (en) * 2006-01-26 2013-12-17 Intel Corporation Scheduling multithreaded programming instructions based on dependency graph
EP2016489A4 (en) * 2006-03-30 2009-05-06 Atostek Oy METHOD FOR GENERATING PARALLEL PROGRAMS
JP2008059279A (ja) * 2006-08-31 2008-03-13 Internatl Business Mach Corp <Ibm> 文字列出力処理を最適化する技術
US8037466B2 (en) 2006-12-29 2011-10-11 Intel Corporation Method and apparatus for merging critical sections
JP4327864B2 (ja) * 2007-03-23 2009-09-09 株式会社東芝 録画予約処理装置および録画予約処理方法ならびに録画装置
CN100451953C (zh) * 2007-03-27 2009-01-14 威盛电子股份有限公司 程序指令调整方法
US8484651B2 (en) * 2007-05-04 2013-07-09 Avaya Inc. Distributed priority queue that maintains item locality
CN101472258B (zh) * 2007-12-28 2010-07-14 ***通信集团公司 业务运营支撑***调度归属位置寄存器指令的方法及装置
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7870368B2 (en) * 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7865700B2 (en) * 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US8387001B2 (en) * 2008-04-17 2013-02-26 Infosys Technologies Limited Method for finding an impact on a computer generated code
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9021241B2 (en) 2010-06-18 2015-04-28 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction for instruction blocks
CN102063288A (zh) * 2011-01-07 2011-05-18 四川九洲电器集团有限责任公司 一种面向dsp芯片的指令调度方法
US9003383B2 (en) * 2011-09-15 2015-04-07 You Know Solutions, LLC Analytic engine to parallelize serial code
KR101254911B1 (ko) 2012-01-31 2013-04-18 서울대학교산학협력단 다중 경로를 통해 데이터 입출력을 수행하기 위한 방법, 시스템 및 컴퓨터 판독 가능 기록 매체
US9215597B2 (en) * 2012-03-16 2015-12-15 Alcatel Lucent Method of coordinating concurrent sector optimizations in a wireless communication system
KR102204282B1 (ko) * 2013-11-25 2021-01-18 삼성전자주식회사 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
EP3343351B1 (en) * 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
CN109992307B (zh) * 2017-12-29 2020-05-05 上海寒武纪信息科技有限公司 指令列表调度方法、装置、计算机设备及存储介质
CN108198124B (zh) * 2017-12-27 2023-04-25 上海联影医疗科技股份有限公司 医学图像处理方法、装置、计算机设备和存储介质
CN110377340B (zh) * 2019-07-24 2021-06-01 中科寒武纪科技股份有限公司 运算方法、装置及相关产品

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816871B2 (ja) * 1990-12-07 1996-02-21 富士ゼロックス株式会社 プログラム翻訳装置およびプログラム翻訳方法
US6718541B2 (en) * 1999-02-17 2004-04-06 Elbrus International Limited Register economy heuristic for a cycle driven multiple issue instruction scheduler

Also Published As

Publication number Publication date
CN1253790C (zh) 2006-04-26
CN1485735A (zh) 2004-03-31
US20040083468A1 (en) 2004-04-29
JP2004078824A (ja) 2004-03-11

Similar Documents

Publication Publication Date Title
JP4196614B2 (ja) 命令スケジューリング方法、命令スケジューリング装置、及びプログラム
JP4957729B2 (ja) プログラム並列化方法、プログラム並列化装置及びプログラム
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US7146300B2 (en) Method of co-simulating a digital circuit
US8266610B2 (en) Extension of swing modulo scheduling to evenly distribute uniform strongly connected components
KR101335001B1 (ko) 프로세서 및 인스트럭션 스케줄링 방법
KR101553655B1 (ko) 재구성가능 프로세서에 대한 명령어 스케줄링 장치 및 방법
CA2433379A1 (en) Modulo scheduling of multiple instruction chains
KR20150040662A (ko) 모듈로 스케줄링 방법, 모듈로 스케줄링 장치, 모듈로 스케줄링에 따라서 동작하는 재구성 가능한 프로세서 및 재구성 가능한 프로세서의 동작 방법
JP3237693B2 (ja) 言語処理装置および言語処理方法
JP5576605B2 (ja) プログラム変換装置およびプログラム変換方法
US20060107267A1 (en) Instruction scheduling method
JP4770657B2 (ja) パイプライン合成システム、方法及びプログラム
EP1785857A2 (en) Data processing system and method
JP2005129001A (ja) プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
JP2008176804A (ja) タスクスケジューリングシステム、方法、およびプログラム
JP5228546B2 (ja) 動作合成装置、および、プログラム
KR101273469B1 (ko) 프로세서 및 인스트럭션 프로세싱 방법
JP2005275967A (ja) システムlsiの設計支援システム及び設計支援方法
KR101670916B1 (ko) 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
JP2008250838A (ja) ソフトウェア生成装置、方法、およびプログラム
GB2366414A (en) A method of identifying false paths in circuit synthesis
US6532584B1 (en) Circuit synthesis method
JP6776914B2 (ja) 並列化方法、並列化ツール

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080710

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: 20080826

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080922

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111010

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121010

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131010

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees