(57)【特許請求の範囲】
【請求項１】
複数の所定の容量のラインを有し命令をライン単位でメモリからプリフェッチする命令キャッシュ装置を用いて実行されるプログラムを生成するコンパイル装置であって、
メモリに記憶されている手続きの命令群をライン単位でプリフェッチして前記命令キャッシュ装置のラインに格納すると前記手続きの命令群の先頭の命令が前記命令キャッシュのラインバウンダリの先頭になるように前記プログラム内で前記手続きの命令群を配置する手段と、
前記プログラム内の第１の命令群であって、実行時に前記ラインのうちの第１のラインに格納されることになる前記プログラム内の位置を有する第１の命令群と、前記第１の命令群から前記プログラム内で所定のバイト数だけ後に位置する第２の命令群であって、実行時に前記ラインのうちの第２のラインに格納されることになる前記プログラム内の位置を有し、前記所定のバイト数は前記ラインのサイズの所定の整数倍であるような第２の命令群との間に分岐命令が存在するか否かを判断し、分岐命令が存在しないと判断されたときに前記第２の命令群をプリフェッチする命令を生成し、前記第１の命令群に属するＮＯＰ命令を前記生成された前記プリフェッチする命令によって置き換える手段と
を有するコンパイル装置。
【請求項２】
複数の所定の容量のラインを有し命令をライン単位でメモリからプリフェッチする命令キャッシュ装置を用いて実行されるプログラムを生成するコンパイル装置であって、
メモリに記憶されている手続きの命令群をライン単位でプリフェッチして前記命令キャッシュ装置のラインに格納すると前記手続きの命令群の先頭の命令が前記命令キャッシュのラインバウンダリの先頭になるように前記プログラム内で前記手続きの命令群を配置する手段と、
前記プログラム内の第１の命令群であって、実行時に前記ラインのうちの第１のラインに格納されることになる前記プログラム内の位置を有する第１の命令群の中に所定の分岐命令が含まれているか否かを判断し、所定の分岐命令が含まれていると判断された場合には、当該分岐命令の分岐先の命令をプリフェッチする命令を生成し、前記第１の命令群から前記プログラム内で所定のバイト数だけ前に位置する第２の命令群であって、実行時に前記ラインのうちの第２のラインに格納されることになる前記プログラム内の位置を有し、前記所定のバイト数は前記ラインのサイズの所定の整数倍であるような第２の命令群の中のＮＯＰ命令を前記生成された前記プリフェッチする命令によって置き換える手段と
を有するコンパイル装置。
【請求項３】
複数の所定の容量のラインを有し命令をライン単位でメモリからプリフェッチする命令キャッシュ装置を用いて実行されるプログラムを生成するコンパイラを格納したコンピュータ読み取り可能な記録媒体であって、
前記コンパイラは、コンピュータを、メモリに記憶されている手続きの命令群をライン単位でプリフェッチして前記命令キャッシュ装置のラインに格納すると前記手続きの命令群の先頭の命令が前記命令キャッシュのラインバウンダリの先頭になるように前記プログラム内で前記手続きの命令群を配置する手段と、
前記プログラム内の第１の命令群であって、実行時に前記ラインのうちの第１のラインに格納されることになる前記プログラム内の位置を有する第１の命令群と、前記第１の命令群から前記プログラム内で所定のバイト数だけ後に位置する第２の命令群であって、実行時に前記ラインのうちの第２のラインに格納されることになる前記プログラム内の位置を有し、前記所定のバイト数は前記ラインのサイズの所定の整数倍であるような第２の命令群との間に分岐命令が存在するか否かを判断し、分岐命令が存在しないと判断されたときに前記第２の命令群をプリフェッチする命令を生成し、前記第１の命令群に属するＮＯＰ命令を前記生成された前記プリフェッチする命令によって置き換える手段と
して機能させるコンピュータ読み取り可能な記録媒体。
【請求項４】
複数の所定の容量のラインを有し命令をライン単位でメモリからプリフェッチする命令キャッシュ装置を用いて実行されるプログラムを生成するコンパイラを格納したコンピュータ読み取り可能な記録媒体であって、
前記コンパイラは、コンピュータを、メモリに記憶されている手続きの命令群をライン単位でプリフェッチして前記命令キャッシュ装置のラインに格納すると前記手続きの命令群の先頭の命令が前記命令キャッシュのラインバウンダリの先頭になるように前記プログラム内で前記手続きの命令群を配置する手段と、
前記プログラム内の第１の命令群であって、実行時に前記ラインのうちの第１のラインに格納されることになる前記プログラム内の位置を有する第１の命令群の中に所定の分岐命令が含まれているか否かを判断し、所定の分岐命令が含まれていると判断された場合には、当該分岐命令の分岐先の命令をプリフェッチする命令を生成し、前記第１の命令群から前記プログラム内で所定のバイト数だけ前に位置する第２の命令群であって、実行時に前記ラインのうちの第２のラインに格納されることになる前記プログラム内の位置を有し、前記所定のバイト数は前記ラインのサイズの所定の整数倍であるような第２の命令群の中のＮＯＰ命令を前記生成された前記プリフェッチする命令によって置き換える手段と
して機能させるコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令をメモリからプリフェッチしてキャッシュに格納させる命令キャッシュ装置および記録媒体に関するものである。
【０００２】
【従来の技術】
ＲＩＳＣ型計算機における問題は、メモリアクセスに費やす時間をどれだけ短縮することができるかが重要な要素である。ハードウェアで、１次キャッシュおよび２次キャッシュが装備されていても、有効にこれらキャッシュにプリフェッチしないことには命令待ち時間を短縮することができない。
【０００３】
【発明が解決しようとする課題】
従来から存在するハードウェアによるプリフェッチは、ミスヒットを契機にターゲットとなるメモリの先を予めフェッチする機能で、コントロールフローを意識したプリフェッチではないため、機能を最大限に生かすことができないという問題があった。以下図８を例にとって説明する。
【０００４】
図８の（ａ）において、Ａ３の命令を実行しようとした時に、キャッシュミスヒットが発生（１次／２次キャッシュメモリ上にＡ３の命令が格納されていなくキャッシュミスヒットが発生）した場合、従来は、ハードウェアによるプリフェッチによりＡ４の命令があるラインをプリフェッチ（メモリからキャッシュに格納）するが、制御の流れでＡ３の次に実行される命令がＢ１と分岐してしまうと無駄なプリフェッチになってしまうという問題がある。また、実行しようとする命令があるライン（１ラインには例えば８命令格納できるとする）の直前のラインで命令をプリフェッチしたのでは、次のラインの命令実行時までに低速動作なメモリから命令を読み出してキャッシュに格納するプリフェッチが完了していなく、待ち時間が発生してしまう問題もあった。このため、コントロールフローを意識したプリフェッチを行い、Ｂ１、Ｂ２を最適なタイミングでプリフェッチすることが望まれている。ここで、図８の（ａ）の左側はメインの関数の流れを示し、右側は左側のメインの流れから呼び出された関数の流れを示す。Ａ１ないしＡ４、Ｂ１ないしＢ３は命令を表す。図８の（ｂ）は、１次キャッシュ（命令）の例を示す。Ａ１、Ａ２・・・、Ｂ１、Ｂ２・・・は、図８の（ａ）の命令が１次キャッシュ（命令）に格納されている様子をイメージ的に示す。
【０００５】
本発明は、これらの問題を解決するため、並列実行命令のコンパイル時にコントロールフローを意識した最適なタイミングで命令をプリフェッチする命令を生成して並列実行命令中のＮＯＰ命令を置き換え、実行ステップを増大させずあるいは増大を最小限に抑えてキャッシュヒット率を向上させて実行性能の向上を図ることを目的としている。
【０００６】
【課題を解決するための手段】
図１を参照して課題を解決するための手段を説明する。
図１において、ソースプログラム１は、コンパイル対象のソースプログラム（高級言語で記述したプログラム）である。
【０００７】
コンパイラ２は、ソースプログラム１をコンパイル（翻訳）して実行可能形式のオブジェクトプログラム７を生成するものであって、ここでは、スケジューリング手段５などから構成されるものである。
【０００８】
スケジューリング手段５は、本発明に係るものであって、命令キャッシュにコントロールフローを意識した最適なタイミングで命令をプリフェッチする命令を生成して並列実行命令中のＮＯＰ命令を置き換えたりなどするものである。
【０００９】
次に、コンパイル時の動作を説明する。
スケジューリング手段５が実行時にメモリからプリフェッチした手続きの命令群の先頭をキャッシュのラインバウンダリから格納させると共に、キャシュ上の処理対象の現命令から所定ライン先迄の間に分岐命令がないときに当該所定ライン先の命令アドレスをプリフェッチする命令を生成して現ライン中のＮＯＰ命令と置き換えるようにしている。
【００１０】
また、スケジューリング手段５が実行時にメモリからプリフェッチした手続きの命令群の先頭をキャッシュのラインバウンダリから格納させると共に、キャシュ上の処理対象の現命令が所定の分岐命令であったときに現命令の所定ライン前のＮＯＰ命令を、当該分岐命令の分岐先の命令アドレスをキャッシュにプリフェッチする命令を生成して置き換えるようにしている。
【００１１】
また、スケジューリング手段５が実行時にメモリからプリフェッチした手続きの命令群の先頭をキャッシュのラインバウンダリから格納させると共に、キャシュ上の処理対象の現命令でプリフェッチが指定されると、指定された命令アドレスをキャッシュにプリフェッチする命令を現命令の位置あるいは現命令のライン中のＮＯＰ命令と置き換えるようにしている。
【００１２】
これらの際に、実行時にメモリからプリフェッチした手続きの命令群の先頭を少なくともＣＰＵが直接にアクセスする１次キャッシュのラインバウンダリから格納させるようにしている。
【００１３】
従って、並列実行命令のコンパイル時にコントロールフローを意識した最適なタイミングで命令をプリフェッチする命令を生成して並列実行命令中のＮＯＰ命令を置き換えることにより、実行ステップを増大させずあるいは増大を最小限に抑えてキャッシュヒット率を向上させて実行性能の向上を図ることが可能となる。
【００１４】
【発明の実施の形態】
次に、図１から図７を用いて本発明の実施の形態および動作を順次詳細に説明する。
【００１５】
図１は、本発明のシステム構成図を示す。
図１において、コンパイラ２は、既述したように、ソースプログラム１をコンパイル（翻訳）して実行可能形式のオブジェクトプログラム６を生成するものであって、ソースプログラム解析手段３、最適化実施手段４、スケジューリング手段５、コード生成手段６などから構成されるものである。
【００１６】
ソースプログラム解析手段３は、ソースプログラム１を公知の形態素解析、構文解析などを行い、内部で解析結果を使用して処理のし易い中間言に変換するものである。以下中間言をもとに各種処理を行うが、説明を判りやすくするためにソースプログラム（あるいはプログラム）について各種処理を行うとして説明する。
【００１７】
最適化実施手段４は、ソースプログラムの公知の各種最適化（高速実行を可能にする各種最適化）を行うものである。
スケジューリング手段５は、本発明に係るものであって、命令キャッシュにコントロールフローを意識した最適なタイミングで命令をプリフェッチする命令を生成して並列実行命令中のＮＯＰ命令を置き換えたりなどするものである（図３を用いて後述する）。
【００１８】
コード生成手段６は、スケージュリング手段５によってスケジューリングされた後の命令列について、実行可能なコード（機械語）を生成してオブジェクトプログラム７を生成するものである。
【００１９】
オブジェクトプログラム７は、実行可能形式のプログラムである。
以下図２ないし図７を用いて図１の構成およびその動作に使用する命令キャッシュなどを順次詳細に説明する。
【００２０】
図２は、本発明のキャッシュ（命令）説明図を示す。これは、図１のコンパイラ２によってコンパイルしたオブジェクトプログラム７が実行時に使用する命令キャッシュの例を示す。
【００２１】
図２の（ａ）は、１次キャッシュ（命令）の例を示す。ここでは、２ｗａｙ（ウェイ）であって、１ラインが１２８バイトで合計６４Ｋバイトの例を示す。各マス目が１ラインの１２８バイト（８命令）をイメージ的に示す。この１次キャッシュ（命令）は、ＣＰＵが直接にアクセスするキャッシュであって、１２８バイト単位で登録（フェッチ、プリフェッチ）するようにしている。
【００２２】
図２の（ｂ）は、２次キャッシュ（命令）の例を示す。ここでは、４ウェイであって、５１２バイトを単位として、合計２Ｍバイトの例を示す。この２次キャッシュは、後述する図２の（ｃ）のメモリと図２の（ａ）の１次キャッシュ（命令）との間に設けたものであって、５１２バイト単位で登録（フェッチ、プリフェッチ）するようにしている。
【００２３】
図２の（ｃ）は、メモリの例を示す。ここでは、保持する命令を、５１２バイト単位で２次キャッシュ（命令）に登録（プリフェッチ、フェッチ）するようにしている。以下当該図２の命令キャッシュ（１次キャッシュ、２次キャッシュ）を実行時に使用することを前提に、コンパイル時の動作を順次詳細に説明する。
【００２４】
図３は、本発明の動作説明フローチャートを示す。これは、図１のコパイラ２がコンパイル時に実行する処理を示す。
図３において、Ｓ１は、ソースプログラムの読み込みを行う。
【００２５】
Ｓ２は、解析する。
Ｓ３は、スケジューリングする。これは、ソースプログラムの解析結果をもとに最適化を行った後、命令列のスケジューリングとして並列実行できる命令を並列に配置したり、並列実行できない部分にはＮＯＰ命令を配置したりする。このスケジューリングに続いて、本発明に係る命令のキャッシュへのプリフェッチを行えるようにＳ４ないしＳ１１の処理を行う。
【００２６】
Ｓ４は、現命令から２ライン先迄の間に分岐命令がないか判別する。これは、後述する図４の（ａ）の現命令（例えば命令Ａ１）から２ライン先迄の間に分岐命令（図中ではＣＡＬＬ）がないか判別する。ＹＥＳの場合には、Ｓ５を実行する。ＮＯの場合には、Ｓ６に進む。
【００２７】
Ｓ５は、２ライン先の命令アドレスをプリフェッチする命令と、ＮＯＰ命令とを置き換える。これは、図４の（ａ）の現命令である例えば命令Ａ１から２ライン先迄の間に分岐命令「ＣＡＬＬ」がないと判明した場合に、２ライン先の命令アドレスをプリフェッチする命令（例えば後述する図５の（ｂ）の命令「ＬＤＩＣ  Ｂ」）を生成してこの命令と、現命令のライン中のＮＯＰ命令とを置き換える。そして、Ｓ６に進む。
【００２８】
Ｓ６は、オブジェクトコードを生成する。
以上のＳ４のＹＥＳ、Ｓ５、Ｓ６によって、現ラインを処理中に２ライン先迄の間に分岐命令が見つからなかったときに、現ライン中のＮＯＰ命令を「ＬＤＩＣ命令」で置換して埋め込み、実行時に当該埋め込んだ命令により、分岐命令の実行時までにその分岐先の命令をプリフェッチするようにコンパイル時に設定することが可能となる。
【００２９】
Ｓ７は、対象となる分岐命令があるか判別する。これは、現在処理中のライン内に、プリフェッチ対象となる分岐命令があるか判別する。ＹＥＳの場合には、Ｓ８に進む。ＮＯの場合には、Ｓ６に進む。
【００３０】
Ｓ８は、現命令の２ライン前付近に空きスロット（ＮＯＰ命令）があるか判別する。ＹＥＳの場合には、Ｓ９に進む。ＮＯの場合には、Ｓ６に進む。
Ｓ９は、分岐先の命令アドレスをキャッシュにローディング（プリフェッチ）する命令（ＬＤＩＣ）とＮＯＰ命令とを置き換える。
【００３１】
以上のＳ７のＹＥＳ、Ｓ８のＹＥＳ、Ｓ９、Ｓ６によって、例えば現ライン中で分岐命令「ＣＡＬＬ」が見つかったときに、２ライン前の図５の（ｂ）のライン中のＮＯＰ命令を「ＬＤＩＣ命令」で置換して埋め込み、実行時に図５の（ｄ）のＣＡＬＬ命令の実行時までにその分岐先の命令をプリフェッチするようにコンパイル時に設定することが可能となる。
【００３２】
Ｓ１０は、ユーザ指定があるか判別する。ＹＥＳの場合には、Ｓ１１に進む。ＮＯの場合には、Ｓ６に進む。
Ｓ１１は、パラメタに指定されたラベルの命令アドレスをキャッシュにローディング（プリフェッチ）する命令を現位置に埋め込む。そして、Ｓ６に進む。
【００３３】
以上のＳ１０のＹＥＳ、Ｓ１１、Ｓ６によって、現ラインの命令を処理中に当該命令で利用者からパラメタで指定されたラベルの命令アドレスをキャッシュにプリフェッチする命令を現位置あるいは現ライン中のＮＯＰ命令の位置に埋め込み、実行時に当該埋め込んだ命令によりプリフェッチするようにコンパイル時に設定することが可能となる。
【００３４】
図４は、本発明の説明図を示す。
図４の（ａ）は、関数を構成する命令群を１次キャッシュのラインバウンダリの先頭から順に格納する様子を示す。ここでは、Ａ１、Ａ２、Ａ３、Ａ４などの命令からなる関数をラインバウンダリの先頭からキャッシュに格納（フェッチ）、および分岐命令ＣＡＬＬで呼び出される命令Ｂ１、Ｂ２、Ｂ３などを１次キャッシュのラインバウンダリの先頭から順に格納する様子を示す。図中の「ＬＤＩＣ」命令は、２ライン先の命令アドレスをプリフェッチするために埋め込んだ命令である。
【００３５】
図４の（ｂ）は、２ウェイの１次キャッシュ（命令）を模式的に表した例を示す。ここでは、箱１つが１２８バイトで全体６４Ｋバイトの２ウェイの１次キャッシュ（命令）を示す。
【００３６】
図５は、本発明の説明図（手続き・分岐を意識した命令プリフェッチ）を示す。
図５の（ａ）は、関数Ａの先頭（１２８バイト境界）を示す。ここでは、１ラインは、１２８バイトである。
【００３７】
図５の（ｂ）は、２ライン前を示す。この２ライン前は、関数Ａの先頭（図５の（ａ）の先頭のアドレス）に、１ライン分の１２８バイトを加算した「先頭＋１２８バイト」である。
【００３８】
図５の（ｃ）は、１ライン前を示す。この１ライン前は、関数Ａの先頭（図５の（ａ）の先頭のアドレス）に、２ライン分の２５６バイトを加算した「先頭＋２５６バイト」である。
【００３９】
図５の（ｄ）は、現ラインを示す。この現ラインは、ここでは、関数Ａの先頭（図５の（ａ）の先頭のアドレス）に、３ライン分の３８４バイトを加算した「先頭＋３８４バイト」である。そして、現ラインの２ライン前の図５の（ｂ）のＮＯＰ命令（右端）を「ＬＤＩＣ  Ｂ」命令に変更し、実行時に図５の（ｄ）のＣＡＬＬ  Ｂ命令の分岐先の命令アドレスのプリフェッチすることが可能となる。
【００４０】
図６は、本発明の説明図（キャッシュラインを意識した命令プリフェッチを示す。
図６の（ａ）は、関数Ａの先頭（１２８バイト境界）を示す。ここでは、１ラインは、１２８バイトである。
【００４１】
図６の（ｂ）は、現ラインを示す。この現ラインは、関数Ａの先頭（図６の（ａ）の先頭のアドレス）に、１ライン分の１２８バイトを加算した「先頭＋１２８バイト」である。ここでは、現ライン中のＮＯＰ命令を「ＬＤＩＣ  Ａ３」に変更し、実行時に、２ライン先の図６の（ｄ）の先頭アドレスをプリフェッチする。
【００４２】
図６の（ｃ）は、１ライン先を示す。この１ライン先は、関数Ａの先頭（図６の（ａ）の先頭のアドレス）に、２ライン分の２５６バイトを加算した「先頭＋２５６バイト」である。
【００４３】
図６の（ｄ）は、２ライン先を示す。この２ライン先は、ここでは、関数Ａの先頭（図６の（ａ）の先頭のアドレス）に、３ライン分の３８４バイトを加算した「先頭＋３８４バイト」である。
【００４４】
図７は、本発明の簡単なプログラミング例を示す。ここでは、右側に記載したように、Ｂ関数の先頭アドレスをプリフェッチする命令（ＬＤＩＣ  Ｂ）を図示の位置に埋め込む。これにより、実行時に下段のＢ関数の呼出し時までに命令がプリフェッチされることとなる。
【００４５】
次に、本発明の機能について判りやすく説明する。
（１）  空スロット（ＮＯＰ命令）にプリフェッチ命令を埋め込む：ＶＬＩＷ型アーキテクチャは同時に複数命令を発行できる。これらはコンパイラにより並列実行できる部分を自動的に認識し、最適にスケジューリングされる。最適にスケジューリングされても、全てのスロットに有効な命令が生成されるわけではなく、逐次的に実行せざるを得ない場合などは、ＮＯＰ命令（なにもしない命令）を生成する。本発明では、このＮＯＰ命令にプリフェッチ命令を埋め込む（置換する）ことで、命令のプリフェッチを行っても命令のステップ数を増やすあるいは増えても最小限にすることを実現するものである。
（２）  キャッシュラインを意識した命令のプリフェッチを行う：手続きや関数の先頭を１次キャッシュのラインのバウンダリ境界（先頭）に調整し、現ラインから２ライン先の命令をプリフェッチする命令をＮＯＰ命令に置換して埋め込む。ここで、次のラインの命令をプリフェッチしないのは、１ライン（ＶＬＩＷ方式では１命令１２８バイト、１ライン８命令）を実行している時間で、後続のキャッシュラインの命令をプリフェッチすることができない場合があるため、確実にプリフェッチするためには、直後のラインよりも次の２ライン先の命令をプリフェッチする方が効果的である。例えば１ライン内にメモリからローディングするような命令を含んだ場合、１ラインの８命令の実行中にメモリから命令をプリフェッチできないことが生じる場合がある。
（３）  手続き呼出しを意識した命令プリフェッチを行う。：関数呼出しの命令が実施されると、２ライン前の位置に連続する２ラインのプリフェッチする命令をＮＯＰ命令に置換する。連続する２ラインをプリフェッチするのは、呼出し先の命令の次のラインの命令は、プリフェッチされるタイミングが無いため、呼出し元で予めプリフェッチする必要が生じるためである。また、１ライン命令中に分岐、関数呼出しなどが存在した場合や、スケジューリングの処理単位に跨がる場合は、その処理単位の切れた命令の後の空スロット（ＮＯＰ命令）に、連続する２ラインのプリフェッチする命令を挿入する。
（４）  分岐を意識した命令プリフェッチを行う。：ループの判定のように、上位アドレスに分岐するような場合は、既にキャッシュにロードされている可能性が高いので、上位アドレスに対するプリフェッチは行わない。上記以外の分岐で、２ライン以上先（下位アドレス）に分岐するような場合は、そのアドレスに対してプリフェッチする命令をブランチする命令の１ライン前の空スロット（ＮＯＰ命令）に、連続する２ラインのプリフェッチする命令で置換する。
（５）  使用者が陽に命令プリフェッチ位置を指示する場合：使用者が最適化指示行などにより、陽にプリフェッチ位置をコンパイラに指示することにより、その位置にプリフェッチ命令を生成して埋め込むことにより、実行性能の向上を図る。例えば
0003913895.tif 000002
【００４６】
0003913895.tif 000003
【００４７】
【発明の効果】
以上説明したように、本発明によれば、並列実行命令のコンパイル時にコントロールフローを意識した最適なタイミングで命令をプリフェッチする命令を生成して並列実行命令中のＮＯＰ命令を置き換えるなどの構成を採用しているため、実行ステップを増大させずあるいは増大を最小限に抑えてキャッシュヒット率を向上させて実行性能の向上を図ることができる。これらにより、
（１）  キャッシュミスヒットを最小限に抑えることができる。
（２）  キャッシュミスヒット時のメモリからキャッシュへのローディング時間を最小限に抑えることができる。
（３）  データローディングの立ち上がり時間を、他命令とオーバーラップさせることができる。
【図面の簡単な説明】
【図１】本発明のシステム構成図である。
【図２】本発明のキャッシュ（命令）説明図である。
【図３】本発明の動作説明フローチャートである。
【図４】本発明の説明図である。
【図５】本発明の説明図（手続き・分岐を意識して命令プリフェッチ）である。
【図６】本発明の説明図（キャッシュラインを意識した命令プリフェッチ）である。
【図７】本発明の簡単なプログラミング例である。
【図８】従来技術の説明図である。
【符号の説明】
１：ソースプログラム
２：コンパイラ
３：ソースプログラム解析手段
４：最適化実施手段
５：スケジューリング手段
６：コード生成手段
７：オブジェクトプログラム
【図１】
0003913895.tif 000004
【図２】
0003913895.tif 000005
【図３】
0003913895.tif 000006
【図４】
0003913895.tif 000007
【図５】
0003913895.tif 000008
【図６】
0003913895.tif 000009
【図７】
0003913895.tif 000010
【図８】
0003913895.tif 000011