JP3327818B2 - プログラム変換装置及び記録媒体 - Google Patents
プログラム変換装置及び記録媒体Info
- Publication number
- JP3327818B2 JP3327818B2 JP23514497A JP23514497A JP3327818B2 JP 3327818 B2 JP3327818 B2 JP 3327818B2 JP 23514497 A JP23514497 A JP 23514497A JP 23514497 A JP23514497 A JP 23514497A JP 3327818 B2 JP3327818 B2 JP 3327818B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- constant
- instructions
- long
- size
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 18
- 239000012536 storage buffer Substances 0.000 claims description 31
- 230000008707 rearrangement Effects 0.000 claims description 13
- 238000010977 unit operation Methods 0.000 claims description 13
- 239000000872 buffer Substances 0.000 abstract description 44
- 238000012545 processing Methods 0.000 description 35
- 238000012546 transfer Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000003780 insertion Methods 0.000 description 11
- 230000037431 insertion Effects 0.000 description 11
- 230000008878 coupling Effects 0.000 description 10
- 238000010168 coupling process Methods 0.000 description 10
- 238000005859 coupling reaction Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 239000002699 waste material Substances 0.000 description 7
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 5
- 238000012856 packing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
れたソースプログラムを翻訳し連結編集することにより
VLIWプロセッサを対象とする実行可能コードを生成
するプログラム変換装置及び記録媒体に関し、特に、ソ
ースプログラム中の定数を含む命令を分割し並列化スケ
ジューリングする技術に関する。
内部に複数の演算ユニットを備え、1個のVLIWに置
かれた複数のオペレーションを同時並列に実行する。こ
のようなVLIWは、プログラム変換装置、即ち、コン
パイラよってソースプログラムにおけるオペレーション
レベルでの並列性が検出されスケジューリングされた後
に生成されたものである。
めにコード効率が悪い。つまり、VLIW中に無効命令
(nop)や無意味なコードが挿入されることが多い。
このような無駄領域の発生を回避するプロセッサとし
て、特願平9―159058や特願平9―159059
に開示されたVLIWプロセッサがある。これらVLI
Wプロセッサは、専用の定数バッファを有し、元々1個
の命令に含まれていた定数の全部又は部分桁を分離して
抜き出したもの(以下、「分割定数」という。)が異な
るVLIWに配置されたプログラムであっても、実行時
にそれら分割定数を定数バッファに蓄積することで元の
定数に復元し、復元した定数を分岐先や演算対象として
使用する機能を有する(以下、このような機能を有する
VLIWプロセッサを「定数復元型VLIWプロセッ
サ」と呼ぶ。)。これによって、これら定数復元型VL
IWプロセッサを対象とするコンパイラはプログラム中
の長い定数を分割し、分割された定数で無駄領域を埋め
ておくことができるので、プログラムのコード効率が向
上されるという効果がある。
数復元型VLIWプロセッサに対応するコンパイラは未
だ提案されていない。このようなコンパイラに要求され
る機能は、プログラム中に現れる長い定数を分割し、複
数のVLIWに分散して適切に配置することで無駄領域
の発生を抑えた実行可能コードを生成することである
が、その前提として、複数のオペレーションが並列実行
される状況の下で、分割して配置されていた定数が必ず
復元され、予定されていた命令によって使用されること
が保証されなければならない。
されたものであり、上記定数復元型VLIWプロセッサ
を対象とするコンパイラや、定数復元型VLIWプロセ
ッサに好適な実行可能コードを提供することを目的とす
る。
に、本発明に係るコンパイラは、直列に並べられた命令
からなる命令列を複数の命令を同時並列に実行するプロ
セッサを対象とする長語命令列に変換するコンパイラで
あって、入力された前記命令列中の定数を用いた命令を
複数の命令に分割する分割ステップと、分割後の命令列
に対して各命令の実行順序に基づく依存関係を解析する
解析ステップと、解析された依存関係を遵守しつつ分割
後の前記命令列に対して同時並列に実行できる複数の命
令を単位とする前記長語命令列に並べ替える並べ替えス
テップとを含むことを特徴とする。
た前記命令が前記長語命令を構成する単位オペレーショ
ンに収まるサイズであるか否か判定する命令サイズ判定
サブステップと、単位オペレーションに収まるサイズで
ないと判定した場合に前記命令を前記単位オペレーショ
ンに収まるサイズの複数の命令に分割する分割サブステ
ップとを含むとすることができる。
サブステップにおいて分割生成された2以上の命令が前
記並べ替えステップにおける並べ替えによって同一の長
語命令に配置された場合にそれら命令を結合する結合ス
テップを含むとすることができる。また、前記命令サイ
ズ判定サブステップにおいては、前記定数の最終的なサ
イズが決定されていない場合にはそのサイズを仮定して
前記判定を行い、前記コンパイラはさらに、定数の最終
的なサイズを決定しながら複数の前記長語命令列を連結
編集する定数サイズ決定ステップと、決定された定数の
サイズが前記命令サイズ判定サブステップにおいて仮定
されたその定数のサイズよりも大きい場合にその差分サ
イズに相当する部分定数を前記記憶バッファに補充して
格納する命令を生成し前記長語命令列に挿入する挿入ス
テップとを含むとすることができる。
決定ステップの後に再び前記分割ステップを実行させ、
前記分割ステップ中の前記命令サイズ判定サブステップ
においては、前記定数サイズ決定ステップにおいて決定
された定数の最終的なサイズを考慮して前記判定を行う
とすることができる。さらに、上記目的を達成するため
に、本発明に係る実行可能コードは、複数の命令を同時
並列に実行するプロセッサを対象とする長語命令列であ
って、前記長語命令列中の一の長語命令には、前記長語
命令列中に暗黙的に指定される前記プロセッサが備える
記憶バッファに格納される定数が置かれ、前記一の長語
命令に後続し、かつ、最初に前記記憶バッファを参照す
る他の一の長語命令には、前記記憶バッファに格納され
た定数を用いる命令が置かれていることを特徴とする。
実施形態について図面を参照しながら説明する。 [動作環境]本コンパイラは、高級言語で記述されたソ
ースプログラムを翻訳し連結編集することにより後述す
るVLIWプロセッサを対象とする実行可能プログラム
を生成するクロスコンパイラであり、汎用のコンピュー
タシステム、即ち、エンジニアリングワークステーショ
ンやパソコン等で実行されるプログラムとして実現され
る。従って、本コンパイラ及び本コンパイラによって生
成されたコードは、フロッピーディスクやCD−RO
M、半導体メモリ等の記録媒体に収納されて配布され得
る。
は、高級言語で記述されたソースコードを翻訳しアセン
ブラコードを生成する狭義のコンパイラではなく、狭義
のコンパイラに加えて、アセンブラコードを翻訳し機械
語のオブジェクトコードを生成したり、それらオブジェ
クトコードを連結編集する機能を備える広義のコンパイ
ラを意味する。 [対象プロセッサ]本コンパイラの詳細を説明する前
に、本コンパイラが対象とするプロセッサが備えるべき
機能(アーキテクチャ及び命令セット)を明らかにす
る。 (アーキテクチャ)対象プロセッサは、上述の定数復元
型VLIWプロセッサである。
の一例を示すブロック図である。対象プロセッサ100
は、32ビット固定長のVLIWを実行するプロセッサ
であり、命令フェッチ回路101、命令レジスタ10
2、3個の命令解読器103〜105、最大32ビット
長の定数を蓄積し復元する専用のシフトレジスタである
定数バッファ107、16個の32ビット長レジスタR
0〜R15からなるレジスタ群108、並列に動作する
2個の演算器109、110等を備える。
数が元の命令から分離されて異なるVLIWに配置され
たプログラムであっても、実行時にそれら分割された定
数を定数バッファ107にシフトしながら蓄積すること
で元の定数に復元したり、定数バッファ107の格納値
を分岐先や演算対象として使用する機能を有する。ま
た、定数バッファ107は、その格納値が使用(参照)
されると、次の蓄積に備えるために、必ず直後にクリア
される(ゼロが格納される)。
定数全てが定数バッファ107に適切な順序で格納され
ることで必ず元の定数に復元されことや、復元された定
数が予定された命令によって必ず使用されること等は、
コンパイラの責任において保証しなければならないとす
る。つまり、このVLIWプロセッサ100を対象する
コンパイラは、命令中の定数を分割して複数のVLIW
に分散して配置した場合には、関連する他の命令との実
行順序関係等を考慮しながら、分割された定数が必ず復
元され元の命令によって使用されるようにスケジューリ
ングしVLIWを生成しなければならない。
び「長語命令」は、この対象プロセッサ100に1サイ
クルで同時並列に実行させるオペレーションの集まりを
指定したコードを指し、単なる「命令」(「長語命令」
を除く)は、1個のオペレーションに対応するコードを
指す。また、「定数」には、命令中に数値として明示さ
れた値(即値)の他にリンク時に確定するラベルも含ま
れる。
プロセッサ100が実行するVLIWの2種類のフォー
マット(3オペレーションフォーマット及び2オペレー
ションフォーマット)を示す。1個のVLIWは3つの
フィールド(8ビットの第1フィールド51、12ビッ
トの第2フィールド52、12ビットの第3フィールド
53)に分割される。
トでは、第1フィールド51にそのVLIWのフォーマ
ットを特定するフォーマット情報及び第1オペレーショ
ンが置かれ、第2フィールド52に第2オペレーション
が置かれ、第3フィールド53に第3オペレーションが
置かれる。図2(b)の2オペレーションフォーマット
では、第1フィールド51にフォーマット情報及び第1
オペレーションが置かれ、第2フィールド52と第3フ
ィールド53に跨る24ビット領域に第2オペレーショ
ンが置かれる。
マットを区別する他に、上記定数バッファ107に蓄積
して格納すべき定数のみが置かれているフィールド(第
2フィールド52、第3フィールド53又は第2及び第
3フィールド52、53)を特定するものとする。第1
オペレーションは分岐命令に限られるとする。このとき
の分岐ラベル(分岐先アドレス)は、定数バッファ10
7、第2フィールド52、第3フィールド53及びそれ
らの組み合わせによって特定されるとする。
一般の転送・演算命令とする。但し、ロード/ストア等
のメモリアクセスを伴う命令は第2及び第3オペレーシ
ョンのいずれかに限られるとする。これら分岐を除く一
般の転送・演算命令は、12ビット長と24ビット長の
2種類のいずれかである。転送・演算命令は、基本的に
は12ビットで表現されるが、ビット長の長いオペラン
ドが必要な場合には24ビットで表現される。
ーションにおける3種類のフォーマットを示す。図3
(a)はレジスタ間演算のフォーマット、図3(b)は
レジスタと4ビット定数を用いた演算のフォーマット、
図3(c)は定数バッファ107に格納する12ビット
の分割定数のみを指定したフォーマットを示す。図4
(a)及び(b)は、24ビットオペレーションにおけ
る2種類のフォーマットを示す。図4(a)はレジスタ
と16ビット定数を用いた演算のフォーマット、図4
(b)は定数バッファ107に格納する24ビットの分
割定数のみを指定したフォーマットを示す。 (命令セット)本VLIWプロセッサ100の命令セッ
トのうち主な命令を説明する。 「(例1)mov 0x1234 , R0」 16ビット長の定数0x1234(0xは16進数である
ことを示す)をレジスタR0に設定する転送命令であ
り、一般的なプロセッサの命令と同じである。
めに24ビットオペレーションに属する。従って、この
命令を含むVLIWには、もはや他の転送・演算命令を
配置することはできない。 「(例2)sfst 0x1234:12u」 16ビット定数0x1234中の上位12ビット(0x123
4:12u)を上述の定数バッファ107に設定する転送命
令であり、分割定数設定命令の一つである。
定数を暗黙的に定められた記憶領域(定数バッファ10
7)に格納する命令をいい、本VLIWプロセッサ10
0に特有の命令の一つである。また、分割定数は、具体
的には、分岐命令に用いられる分岐ラベルの全部や部分
桁、転送・演算命令に用いられる定数の部分桁等が該当
する。
の命令が置かれたフィールドには上記12ビット長の分
割定数のみ(12ビットオペレーション)を配置し、そ
の旨を指定するフォーマット情報を第1フィールド51
に配置したコードである。従って、この命令を含むVL
IWには、他の12ビットオペレーションをさらに1個
だけ含ませることができる。 「(例3)mov 0x1234:4l , R0」 既に定数バッファ107に格納されている分割定数を上
位12ビットとし、この命令で指定されている定数0x
1234の下位4ビット(0x1234:4l)を下位4ビット
として結合した16ビット長の定数をレジスタR0に設
定する転送命令であり、分割定数使用命令の一つであ
る。ここで、「分割定数使用命令」とは、暗黙的に定め
られた記憶領域(定数バッファ107)に格納された分
割定数を用いる命令をいい、本VLIWプロセッサ10
0に特有の命令の一つである。
ンに属する。従って、この命令を含むVLIWには、他
の12ビットオペレーションをさらに1個だけ含ませる
ことができる。なお、上述の例1の命令による実行結果
は、例2の命令が実行された後に例3の命令が実行され
た場合の実行結果と同一になる。従って、コンパイラ
は、例1の24ビット長命令に代えて、それを分割して
得られる2個の12ビット長命令、即ち、例2の分割定
数設定命令と例3の分割定数使用命令とを生成しておく
ことが可能となる。これによって、例えば、1個のフィ
ールド分の無駄領域が発生する場合に、その領域を上記
分割定数設定命令で埋めておくことでコード効率が向上
される。 [コンパイラの構成]図5は、本コンパイラの構成及び
関連する入出力データを示すブロック図である。
ープ、即ち、(i)高級言語で書かれたソースコード41
から直列型のアセンブラコード42を生成するグループ
(コンパイラ上流部10、アセンブラコード生成部1
1)と、(ii)直列型のアセンブラコード42に対して本
VLIWプロセッサ100に特有の並列化スケジューリ
ングを施すことで並列化されたアセンブラコード43や
そのオブジェクトコード44a〜44b等を生成するグ
ループ(定数分割部12、並列化スケジューリング部1
3、定数結合部14、コード出力部15及び並列化アセ
ンブラ部16)と、(iii)複数の再配置可能なオブジェ
クトコード44a〜44bを連結編集することにより最
終の実行可能コード46を生成するグループ(リンカ部
17)から構成される。
情報40は、それぞれリンカ部17に入力/リンカ部1
7から出力されるラベルに関する情報であって、最終的
なラベルアドレスを解決するための情報として用いられ
る他に、再び定数分割部12に入力することにより最適
なコードを生成するために用いられたりする。また、図
示されている入出力データ40〜45、その他中間言語
データは、上記コンピュータシステムのハードディスク
にファイルとして置かれたり、メモリ上に一時データと
して置かれる。 (コンパイラ上流部10)コンパイラ上流部10は、フ
ァイル形式で保存されている高級言語ソースコード41
を読み込み、構文解析及び意味解析を行なった後に内部
形式コードを生成する。更に、必要に応じて、最終的に
生成される実行可能コードのサイズやその実行時間が短
くなるようにその内部形式コードを最適化する。ここで
の処理は、通常のコンパイラ(定数復元型VLIWプロ
セッサでない一般のプロセッサを対象とするコンパイ
ラ)が有するコンパイラ上流部による処理と同一であ
る。 (アセンブラコード生成部11)アセンブラコード生成
部11は、コンパイラ上流部10により生成され最適化
された内部形式コードから直列型アセンブラコード42
を生成する。ここで、「直列型アセンブラコード」と
は、単一オペレーションのアセンブラ命令が直列に並べ
られたコードであり、通常のプロセッサ(1個の演算ユ
ニットを備えるプロセッサ)を対象とするアセンブラコ
ードをいう。ここでの処理は、通常のコンパイラが有す
るアセンブラコード生成部による処理と同一である。 (定数分割部12)定数分割部12は、アセンブラコー
ド生成部11が生成したアセンブラコード42を読み込
み、この中に含まれる全ての長定数使用命令を分割定数
設定命令と分割定数使用命令とに分割する。つまり、各
長定数使用命令を、結果的に同一の処理を行なう2種類
の命令(分割定数設定命令と分割定数使用命令)に置き
換える。このとき、長定数使用命令中の長定数の長さに
よっては、2個以上の分割定数設定命令と分割定数使用
命令に分割される場合もある。
に含まれる単位オペレーションで記述できない長さの定
数をいい、具体的には、(i)分岐命令に使用される場合
においては、第1オペレーションに収まらない定数(1
ビット以上で表現される分岐ラベル)、及び(ii)転送・
演算命令に使用される場合においては、図3(b)に示
された12ビットオペレーションに収まらない定数(5
ビット以上で表現される定数)をいう。また、「長定数
使用命令」とは、長定数を用いる命令をいう。
レーションで記述できる定数、具体的には、転送・演算
命令に使用される定数であって4ビット以下で表現され
る定数を「短定数」と呼び、短定数を用いる命令を「短
定数使用命令」と呼ぶ。なお、分割定数使用命令は、形
式的には短定数(4ビット以下の桁数の定数)を用いて
表現された命令であるので、短定数使用命令に属する。
りである。図6は、定数分割部12での処理手順を示す
フローチャートである。定数分割部12は、アセンブラ
コード生成部11が生成したアセンブラコード42中の
全ての命令について、以下の処理(ステップS2〜S
4)を繰り返す(ステップS1〜S5)。
(以下、単に「着目命令」と呼ぶ。)に含まれるラベル
のサイズ(ラベルが示すアドレスを表現するために必要
なビット数)を決定する(ステップS2)。具体的に
は、そのラベルが同じコンパイル単位のソースコード4
1内に存在するためにサイズの分かる局所ラベルである
場合や配置情報40等によってサイズが明示されている
場合にはそのサイズを、他のコンパイル単位のソースコ
ード41内に存在するためにサイズの分からない外部ラ
ベルである場合にはそのサイズを仮定してラベルにサイ
ズ情報を付加する。なお、本実施形態ではサイズの分か
らないラベルは使用頻度の最も高いアドレスサイズとし
て統計的に得られている16ビット長であると仮定する
ものとする。
判断する(ステップS3)。長定数使用命令である場合
には、その長定数使用命令を分割定数設定命令と分割定
数使用命令とに分割する(ステップS4)。具体的に
は、長定数使用命令が分岐命令である場合には、その長
定数(分岐ラベルが示すアドレス)を下位から順に12
ビット単位で分割し、得られた分割定数を上位から順に
定数バッファ107に設定する1個以上の分割定数設定
命令と1個の分割定数使用命令(分岐命令のオペコード
に相当する命令)を生成し、その着目命令をそれら分割
定数設定命令及び分割定数使用命令で置き換える。例え
ば、長定数が19ビットの場合には、リーディングゼロ
を付加した24ビット(12ビットの倍数)の定数とみ
なして上位12ビットと下位12ビットに分割し、上位
12ビットの分割定数についての分割定数設定命令、下
位12ビットの分割定数についての分割定数設定命令及
び分割定数使用命令の合計3個の命令をこの順で生成
し、これらで着目命令を置き換える。
ある場合には、その長定数のうち短定数(下位4ビット
分)を超える部分を下位から順に12ビット単位で分割
し、得られた分割定数を上位から順に定数バッファ10
7に設定する1個以上の分割定数設定命令と1個の分割
定数使用命令(転送・演算命令のオペコードと短定数を
示すオペランドを含む命令)を生成し、その着目命令を
それら分割定数設定命令及び分割定数使用命令で置き換
える。例えば、長定数が19ビットの場合には、リーデ
ィングゼロを付加した28ビット(12ビット×n+4
ビット)の定数とみなして上位12ビットと続く中位1
2ビットと下位4ビットに分割し、上位12ビットの分
割定数についての分割定数設定命令、中位12ビットの
分割定数についての分割定数設定命令及び下位4ビット
の短定数を含む分割定数使用命令の合計3個の命令をこ
の順で生成し、これらで着目命令を置き換える。
演算命令かによって長定数の分割方法を変えているの
は、分岐命令が置かれる第1フィールド51には分割定
数(分岐ラベル)を含ませることができないが、転送・
演算命令が置かれる第2及び第3フィールド52及び5
3には分割定数(短定数)を含ませることができるから
である。 (並列化スケジューリング部13)並列化スケジューリ
ング部13は、定数分割部12によって長定数使用命令
が排除された後の直列型アセンブラコードを入力とし、
アセンブラ命令レベルでの並列性を検出し、図2(a)
の3オペレーションフォーマット又は図2(b)の2オ
ペレーションフォーマットのいずれかに対応するVLI
Wにパッキングされた並列化アセンブラコードを生成す
る。ここで、「並列化アセンブラコード」とは、VLI
Wプロセッサを対象とするアセンブラコードをいい、並
列実行可能な複数のオペレーションを特定するようアセ
ンブラ命令が並列かつ直列に並べられている。
に、依存グラフ生成部20と命令並べ替え部21から成
る。 (依存グラフ生成部20)依存グラフ生成部20は、定
数分割部12から出力されたアセンブラコードについて
依存グラフを生成する。ここで、「依存グラフ」とは、
アセンブラ命令をノード(節)とし、命令間の実行順序
関係をリンク(矢、エッジとも呼ばれる)として表した
有向グラフであり、アセンブラコード中の命令の実行順
序を規定する。
下の通りである。図7は、依存グラフ生成部20での処
理手順を示すフローチャートである。依存グラフ生成部
20は、定数分割部12によって長定数使用命令が排除
された後の直列型アセンブラコード中の全ての命令につ
いて、以下の処理(ステップS12〜S27)を繰り返
す(ステップS11〜S29)。
した後に(ステップS12)、(i)レジスタ群108に
ついての排他制御に基づく依存グラフの生成(ステップ
S13〜S18)と、(ii)メモリについての排他制御に
基づく依存グラフの生成(ステップS19〜S24)
と、(iii)定数バッファ107についての排他制御に基
づく依存グラフの生成(ステップS25〜S28)を繰
り返す。その詳細は以下の通りである。
に対応するノードを生成する(ステップS12)。具体
的には、着目命令とノードを対応づける情報を生成す
る。次に、着目命令がレジスタを参照しているか否か判
定する(ステップS13)。ここで、「レジスタの参
照」とは、レジスタの値を読み出すことをいう。レジス
タを参照している場合には、直前のレジスタ定義命令
(そのレジスタを定義する命令であって、かつ、直前の
命令)を特定し、特定したその命令からこの着目命令に
入射するリンクを張る(ステップS14)。具体的に
は、特定した命令に対応するノードから着目命令に対応
するノードに入射するリンクを特定する情報を生成す
る。
タの値を破壊して新たな値を設定することをいう。ま
た、「直前の命令」とは、着目命令に先行する最も近い
命令をいう。なお、1個の命令において複数のレジスタ
を参照している場合には、依存グラフ生成部20は、そ
れぞれのレジスタに対して上記ステップS13、S14
での処理を繰り返す。このことは、以降のステップにつ
いても同様である。
命令がレジスタを定義しているか否かを判定する(ステ
ップS15)。レジスタを定義している場合には、直前
のレジスタ操作命令(そのレジスタを操作する命令であ
って、かつ、直前の命令)を特定し、特定したその命令
がレジスタ定義命令であるか否かを判定する(ステップ
S16)。ここで、「レジスタの操作」とは、レジスタ
の定義と参照を含む意味である。
は、そのレジスタ定義命令から着目命令に入射するリン
クを張る(ステップS17)。一方、レジスタ定義命令
でない場合、即ち、レジスタ参照命令である場合には、
その直前のレジスタ定義命令を特定し、そのレジスタ定
義命令が置かれている位置から着目命令が置かれている
位置までの区間に置かれた全てのレジスタ参照命令(そ
のレジスタを参照する命令)から着目命令に入射するリ
ンクを張る(ステップS18)。
(ステップS13〜S18)をメモリについても行う
(ステップS19〜24)。続いて、依存グラフ生成部
20は、着目命令が分割定数設定命令であるか否かを判
定する(ステップS25)。分割定数設定命令である場
合には、直前の定数バッファ操作命令からこの着目命令
に入射するリンクを張る(ステップS26)。ここで、
「定数バッファ操作命令」とは、定数バッファ107を
操作(定義及び参照)する命令、即ち、分割定数設定命
令と分割定数使用命令とを含む意味である。
令が分割定数使用命令であるか否かを判定する(ステッ
プS27)。分割定数使用命令である場合には、直前の
定数バッファ操作命令からこの着目命令に入射するリン
クを張る(ステップS28)。なお、レジスタに関する
依存グラフの生成処理(ステップS13〜S18)と定
数バッファ107に関する依存グラフの生成処理(ステ
ップS25〜S28)とが相違するのは、定数バッファ
107にアクセスする分割定数設定命令及び分割定数使
用命令は、いずれも定数バッファ107の参照と定義の
両方を伴う命令だからである。つまり、定数バッファ1
07はシフトレジスタから構成されるので、分割定数設
定命令はシフト&セット(参照と定義)を伴う命令であ
り、また、定数バッファ107は参照された直後に内容
がクリアされるので、分割定数使用命令は参照だけでな
く定義を伴う命令だからである。 (命令並べ替え部21)命令並べ替え部21は、依存グ
ラフ生成部20によって生成された依存グラフが示す実
行順序を遵守しつつ、定数分割部12から出力された直
列型アセンブラコード中の各命令を対象プロセッサ10
0のVLIW単位でパッキングしながら並べ替えてい
く。このとき、各命令が可能な限り並列に実行されるよ
うに、かつ、実行時間が短くなるように命令を並べ替え
る。
の通りである。図8は、命令並べ替え部21での処理手
順を示すフローチャートである。命令並べ替え部21
は、直列型アセンブラコード中の全ての命令についての
並べ替えを終える(VLIW単位でパッキングし、この
並列化スケジューリング部13から出力し終える)ま
で、以下の処理(ステップS42〜S50)を繰り返す
(ステップS41〜S51)。
を調べることで、その現時点で出力可能な全ての命令を
出力可能命令集合に入れる(ステップS42)。ここ
で、「出力可能命令」とは、依存する先行命令が無いた
めに独立して実行可能(出力が可能)と判断される命令
をいい、具体的には、(i)依存グラフにおいて、自ノー
ドへ入射するリンクが無い場合、及び、(ii)自ノードへ
入射するリンク元のノードに対応する命令が全て出力済
み又は分割定数設定命令である場合における着目命令が
該当する。
点における出力可能命令の全てを集めたものをいう。な
お、リンク元が分割定数設定命令である場合が含まれる
のは、もし分割定数設定命令と分割定数使用命令とが1
個のVLIWに含まれることとなった場合であっても、
それら命令は、後述するように、定数結合部14により
1つの命令に置き換えられるので問題が生じないからで
ある。
テップS42)、その出力可能命令集合が空となるま
で、それら命令の一つを選択し、その集合から取り除い
ていく処理(ステップS45〜S48)を繰り返す(ス
テップS43〜S49)。但し、1個のVLIWが完成
された時点をもって、その繰り返しループ(ステップS
43〜S49)を抜け、再び出力可能命令集合を生成し
直し(ステップS42)、同じ処理(ステップS45〜
S48)を繰り返す(ステップS43〜S49)。これ
は、完成されたVLIWを構成する命令が出力可能命令
集合から取り除かれた場合には、その時点において新た
な出力可能命令が発生している可能性があるためであ
る。
っている命令によって1個のVLIWが完成されるか
(これ以上の命令を入れることができないか)を判定す
る(ステップS44)。ここで、「出力予定命令」と
は、最終的に1個のVLIWを構成し得る並列実行可能
な命令をいい、「出力予定命令集合」とは、最大個数の
出力予定命令(1個のVLIWに配置可能な最大個数の
出力予定命令)を集めるための命令の一時的な置き場所
である。つまり、上記の出力可能命令集合に入れられた
後に、続いてこの出力予定命令集合に移された命令だけ
が、最終的なVLIWを構成する命令としてこの並列化
スケジューリング部13から出力されることになる。
Wが完成されないと判定された場合には、命令並べ替え
部21は、出力可能命令集合から実行時間及びコードサ
イズを短縮するのに適した命令を1つ選択する(ステッ
プS45)。具体的には、依存グラフを参照して、この
基本ブロックから生成される最終的なVLIWの総個数
を期待値として算出し、その期待値が最小となる命令を
1つ選択する。
を出力予定命令集合に入れることが可能か否か判定する
(ステップS46)。ここで、もし、その時点で出力予
定命令集合に既に入っている命令が存在する場合には、
既に入っている命令とその着目命令とを併せた命令が1
個のVLIWを構成し得るか(出力可能か)否かを判定
する(ステップS46)。
定命令集合にあり、前記ステップS45で選ばれた命令
長が24ビットであった場合には1個のVLIWに収ま
らないので、出力不可と判定する。また、自ノードへ入
射するリンク元の分割定数設定命令が出力済みでなく、
かつ、出力予定命令集合にない場合も出力不可と判定す
る。後者の場合は、分割定数設定命令が出力されずに分
割定数使用命令だけが出力されるという誤ったコードの
生成を回避するためである。
場合には、その着目命令を出力可能命令集合から出力予
定命令集合に移す(ステップS47、S48)。一方、
上記ステップS46で否定的に判定された場合には、そ
の時点において出力できる可能性が無くなったことにな
るので、その着目命令を出力可能命令集合から取り除く
(ステップS48)。
に入っている命令によって1個のVLIWが完成された
と判定された場合には、それら全ての命令を出力予定命
令集合から取り除いた後に1個のVLIWとして出力す
る(ステップS50)。なお、ステップS49からステ
ップS50に処理手順が流れた場合に、出力予定命令集
合に残された命令だけでは1個のVLIWの全てのオペ
レーションが埋まらないときが生じるが、このときに
は、空いているオペレーションに無効命令(nop)を
挿入したVLIWを出力する。
部13に入力された直列型アセンブラコードは、VLI
W単位にパッキングされた並列化アセンブラコードとな
って出力されていく。 (定数結合部14)定数結合部14は、(i)定数分割部
12による分割によって同一の長定数使用命令から生成
された分割定数設定命令と分割定数使用命令とが並列化
スケジューリング部13によって同一のVLIW(同一
のサイクル)にパッキングされた場合、及び、(ii)同様
に、同一の長定数使用命令から生成された複数の分割定
数設定命令が同一のVLIW(同一のサイクル)にパッ
キングされた場合に、それぞれ、それら2つの命令を結
合した1個の長定数使用命令、及び、1個の分割定数設
定命令に置き換える。これは、定数分割部12による分
割が無駄に終わった(複数のVLIWに跨って分割定数
を埋める必要が無かった)場合に相当する。 (コード出力部15)コード出力部15は、定数結合部
14による結合(置き換え)が行われた後のアセンブラ
コードを内部形式からテキスト形式に変換し、ファイル
(並列化アセンブラコード43)として出力する。 (並列化アセンブラ部16)並列化アセンブラ部16
は、コード出力部15が出力した並列化アセンブラコー
ド43をこのコンパイラが対象とするVLIWプロセッ
サ100専用の機械語に変換し、再配置可能なオブジェ
クトコード44a〜44bと再配置情報45a〜45b
とを生成する。このときに、VLIWの第1フィールド
51に置くフォーマット情報を決定する。例えば、分割
定数設定命令を含むVLIWであれば、分割定数のみが
置かれたフィールドと、その旨を示すフォーマット情報
に対応する機械語を生成する。
クトコード44aに用いられてるラベルの名前、そのラ
ベルが用いられている命令が置かれているアドレス、そ
のラベルのサイズを示す情報からなる。このラベルのサ
イズは、定数分割部12によって決定されたサイズ(図
6のステップS2において決定されたラベルのサイズ)
であり、外部ラベルである場合には暫定的な値(上述の
例では16ビット)である。 (リンカ部17)リンカ部17は、異なるコンパイル単
位で生成された複数の再配置可能なオブジェクトコード
44a〜44bを1つに連結編集し、中に含まれる不定
ラベルを解決し、対象とするVLIWプロセッサ100
用の最終的な実行可能コード46及び配置情報40を生
成する。
ブロック図である。リンカ部17はさらに、ラベルアド
レス算出部22、命令挿入部23及び出力部24からな
る。ラベルアドレス算出部22は、リンカ部に入力され
る複数の再配置可能なオブジェクトコード44a〜44
bをリンクした後の各ラベルの最終的なアドレスを算出
するものであり、これによりラベルのサイズも確定され
る。ここでの処理は、通常のコンパイラが有するラベル
アドレス算出部による処理と同一である。
22によって算出された最終的なラベルのサイズが再配
置情報45a〜45bに含まれるサイズ、即ち、定数分
割部12によって決定されたサイズより大きくなる場合
に、その手当をすべく、必要な分割定数設定命令を挿入
する。図10は、命令挿入部23での処理手順を示すフ
ローチャートである。
れたオブジェクトコード44a〜44b中の全てのラベ
ルについて、順次一つずつ取り出して以下の処理(ステ
ップS62〜S64)を繰り返す(ステップS61〜S
65)。まず、取り出したラベル(着目ラベル)につい
ての再配置情報をリンカ部17に入力された再配置情報
45a〜45bの中から読み出す(ステップS62)。
着目ラベルのサイズよりもラベルアドレス算出部22に
より算出されたサイズが大きいか否か判断する(ステッ
プS63)。その結果、大きい場合には、不足している
サイズに相当する定数を定数バッファ107に設定して
おくための分割定数設定命令を生成し、その分割定数設
定命令と無効命令とからなる新たなVLIWを着目ラベ
ルが使用されている命令を含むVLIWの直前の位置に
挿入する(ステップS64)。
定数分割部12による暫定的な決定が実際に必要なサイ
ズよりも小さく仮定された場合の手当が行われる。出力
部24は、ラベルアドレス算出部22によって解決され
た全てのラベルのサイズ及びそのラベルを参照している
命令のリストとからなる配置情報40を生成し、命令挿
入部23による処理を経た後の実行可能コード46と共
に出力する。 [コンパイラの具体的な動作]次に、本コンパイラの特
徴的な構成要素の動作について、具体的な命令を用いて
説明する。 [具体例1]まず、図11(a)に示される直列型アセ
ンブラコード42がアセンブラコード生成部11によっ
て生成され定数分割部12に入力された場合における、
定数分割部12及び並列化スケジューリング部13の具
体的な動作を説明する。
命令401、402の意味は以下の通りである。 「(命令401)add R1 , R2」 レジスタR1の値とレジスタR2の値とを加算し、その
結果をレジスタR2に格納する。 「(命令402)ld (label) , R3」 ラベルlabelが示すメモリアドレスに記憶された値をレ
ジスタR3にロードする。 (定数分割部12)図11(a)に示される直列型アセ
ンブラコード42が入力された場合における定数分割部
12の動作について、図6に示されたフローチャートに
沿って説明する。
た3つの命令全てについて長定数を分割するための処理
を繰り返すが(ステップS1〜S5)、この例では、命
令400及び401は、命令中にラベルや長定数を含ま
ないので変化を受けない。命令402に対しては、定数
分割部12は、ラベルlabelのサイズを決定することが
できないので、16ビットのサイズであると仮定する
(ステップS2)。
2が長定数使用命令であると判断し(ステップS3)、
この長定数使用命令402を分割定数設定命令と分割定
数使用命令との組に置き換える(ステップS4)。図1
1(b)は、図11(a)に示された直列型アセンブラ
コード42が入力された場合に定数分割部12が生成す
るコードを示す。
ける長定数使用命令402は分割定数設定命令405と
分割定数使用命令406との組に置き換えられる。 (依存グラフ生成部20)いま、図11(b)に示され
る直列型アセンブラコードが並列化スケジューリング部
13に入力されたとする。この場合における依存グラフ
生成部20の動作について、図7に示されたフローチャ
ートに沿って説明する。
示された3つの命令全てについて順次同じ処理を繰り返
す(ステップS11〜S29)。図12は、図11
(b)に示される直列型アセンブラコードが並列化スケ
ジューリング部13に入力された場合に依存グラフ生成
部20が生成する最終的な依存グラフ600を示す。 「(命令403)mov R0 , R1」 まず、依存グラフ生成部20は、この命令403に対応
するノード601を生成する(ステップS12)。
参照しているのでレジスタR0を定義する直前の命令か
ら入射するリンクを張ろうとするが(ステップS13、
S14)、ここでは、先行する命令が存在しないのでそ
のようなリンクは張られない。同様に、この命令403
はレジスタR1を定義しているのでレジスタR1を操作
する直前の命令を特定しようとするが(ステップS1
5、S16)、先行する命令が存在しないのでリンクは
張られない。
ック(1個の入口と1個の出口を持つ処理ルーチン)が
1つと仮定しているが、複数の基本ブロックを含むプロ
グラムについて依存グラフを生成する場合であれば、先
行する基本ブロックを表す仮想ノードと後続する基本ブ
ロックを表す仮想ノードを導入し拡張することで簡単に
対応することができる。 「(命令404)add R1 , R2」 次に、命令404が処理対象となり、この命令404に
対応するノード603が生成される(ステップS1
2)。
はレジスタR1を参照していることから、レジスタR1
を定義している直前の命令403を特定し、その命令4
03からこの命令404に入射するリンク602を張る
(ステップS13、S14)。続いて、この命令404
はレジスタR2を定義しているのでレジスタR2を操作
する直前の命令を特定しようとするが(ステップS1
5、S16)、そのような先行する命令が存在しないの
でリンクは張られない。 「(命令405)sfst label:12u」 次に、命令405が処理対象となり、この命令405に
対応するノード604が生成される(ステップS1
2)。
していないので、ステップS13〜S24におけるリン
クの対象とはならない。この命令405は分割定数設定
命令であるので、依存グラフ生成部20は、直前の定数
バッファ操作命令を特定しようとするが(ステップS2
5、S26)、そのような先行する命令が存在しないの
でリンクは張られない。 「(命令406)ld (label:4l) , R3」 最後に、命令406が処理対象となり、この命令406
に対応するノード606が生成される(ステップS1
2)。
いるのでレジスタR3を操作する直前の命令を特定しよ
うとするが(ステップS15、S16)、そのような先
行する命令が存在しないのでリンクは張られない。次
に、この命令406は分割定数使用命令であるので、依
存グラフ生成部20は、直前の定数バッファ操作命令4
05を特定し、その命令405からこの命令406に入
射するリンク605を張る(ステップS27、S2
8)。
に、命令403から命令404に入射するリンク602
と命令405から命令406に入射するリンク605と
が張られる。 (命令並べ替え部21)命令並べ替え部21は、図12
に示された依存グラフが示す実行順序を遵守しつつ、図
11(b)に示された直列型アセンブラコードを並列化
する。この場合における命令並べ替え部21の動作につ
いて、図8に示されたフローチャートに沿って説明す
る。
された4つの命令403〜406全てを出力し終えるま
で、出力可能命令集合を生成する処理(ステップS4
2)と、生成された出力可能命令集合の命令を1つずつ
消費していく処理(ステップS43〜S50)とからな
るスケジューリングサイクルを繰り返す(ステップS4
1〜S51)。 (第1回目)まず、第1回目のスケジューリングサイク
ルにおいて、命令並べ替え部21は、出力可能命令集合
として、3つの命令403、405及び406からなる
集合を生成する(ステップS42)。命令403及び4
05は、自ノードへ入射するリンクが無い命令に相当
し、命令406は、自ノードへ入射するリンク元のノー
ドに対応する命令が分割定数設定命令である命令に相当
するからである。
ステップS44において偽と判断し、続いて最適な命令
を1つ選択することで最初の消費サイクルに入る(ステ
ップS45)。ここでは、命令403が選択されたとす
る。そして、出力予定命令集合は空であることから、命
令並べ替え部21は、この命令403を出力予定命令集
合に入れた後に(ステップS47)、出力可能命令集合
から取り除く(ステップS48)。
05と命令406が残されているが、次に、2回目の消
費サイクルを繰り返す(ステップS44〜S48)。出
力予定命令集合は未だ1個のVLIWを生成するだけの
命令が埋まっていないので、再びステップS44におい
て偽と判断し、続いて、最適な命令として命令405を
選択したとする(ステップS45)。
合に入っている命令403とはいずれも12ビット長の
命令であり、1個のVLIWを構成し得るので、命令並
べ替え部21は、この命令405を更に出力予定命令集
合に入れた後に(ステップS47)、出力可能命令集合
から取り除く(ステップS48)。この時点で、出力可
能命令集合には命令406だけが残されているが、出力
予定命令集合には命令403と命令405が入っている
ので、命令並べ替え部21は、次のステップS44にお
いては真と判断し、それら命令403及び命令405を
出力予定命令集合から取り除いた後に最終的な1個のV
LIWとして出力する(ステップS50)。
45)において、最適な命令として命令405ではなく
命令406が選択されたとすると、この命令406は、
自ノードへ入射するリンク元の分割定数設定命令405
が出力済みでなく、かつ、出力予定命令集合にない場合
に相当するので、次のステップS46において偽と判定
され、出力可能命令集合から取り除かれることとなり、
結果的に、同一のVLIW(命令403と命令405と
からなるVLIW)が出力されることになる。
直列型アセンブラコードが並列化スケジューリング部1
3に入力された場合に命令並べ替え部21が生成するV
LIW(並列化アセンブラコード)を示す。但し、説明
の容易化のため、VLIWの第1フィールド51につい
てのコードを省略している。この第1回目のスケジュー
リングサイクルによって、図11(c)に示されたVL
IW407が生成される。 (第2回目)次に、出力可能命令集合に命令406が残
され状態で、第2回目のスケジューリングサイクルを開
始する。
を出力可能命令集合に加える(ステップS42)。命令
404は自ノードへ入射するリンク元のノードに対応す
る命令403が全て出力済みである場合における命令に
相当するからである。これによって、命令404と命令
406から構成される出力可能命令集合が生成される。
ステップS44において偽と判断し、続いて最適な命令
を1つ選択することで最初の消費サイクルに入る(ステ
ップS45)。ここでは、命令404が選択されたとす
る。そして、出力予定命令集合は空であることから、命
令並べ替え部21は、この命令404を出力予定命令集
合に入れた後に(ステップS47)、出力可能命令集合
から取り除く(ステップS48)。
06だけが残されるが、同様にして2回目の消費サイク
ルが繰り返され、その結果、この命令406も出力可能
命令集合から出力予定命令集合へ移されることになる
(ステップS44〜S48)。この時点で、出力予定命
令集合には命令404と命令406が入っているので、
命令並べ替え部21は、次のステップS44においては
真と判断し、それら命令404及び命令406を出力予
定命令集合から取り除いた後に2個目のVLIWとして
出力する(ステップS50)。つまり、この第2回目の
スケジューリングサイクルによって、図11(c)に示
されたVLIW408が生成される。
部13に入力された全ての命令がVLIW単位でパッキ
ングされて出力され、命令並べ替え部21によるスケジ
ューリングが終了する(ステップS41〜S51)。 (通常のコンパイラとの比較)以上の定数分割部12と
並列化スケジューリング部13での処理によって、図1
1(a)に示された直列型アセンブラコードから図11
(c)に示される2個のVLIWが生成されたが、これ
ら処理の特徴を明確にするために、通常のコンパイラに
よる場合と比較する。
ブロック図である。この通常のコンパイラは、本実施形
態と基本的な機能は同じであるが、本実施形態の定数分
割部12及び定数結合部14に相当する機能を備えてお
らず、従って、他の構成要素910〜917、920、
921も定数分割に関連する機能を備えていないものと
する。
図11(a)に示される直列型アセンブラコードを生成
したとすると、その直列型アセンブラコードはそのまま
並列化スケジューリング部913に入力されるので、依
存グラフ生成部920は図18に示される依存グラフ9
25を生成することになる。そして、その依存グラフに
基づいて命令並べ替え部921は図11(a)に示され
た命令の並べ替えを行なうが、図18に示されるよう
に、命令400と命令401とはその依存関係から共存
(1個のVLIWを構成)することができず、さらに、
命令402は24ビット長であるために他の命令400
及び命令401と共存することができないために、最終
的に、図19に示された3個のVLIW930〜932
を生成する。
かるように、通常のコンパイラが生成する並列化アセン
ブラコードは、本実施形態によるコードよりも1個のV
LIW分だけコードサイズが大きくなっており、従っ
て、実行時間も1サイクル分多くなっている。これは、
本実施形態のコンパイラによれば、図19におけるVL
IW932が2個の小さな命令(分割定数設定命令と分
割定数使用命令)に分割され、それぞれがVLIW93
0及びVLIW931に生じている各無駄領域を埋める
ように分散して配置されるからである。 [具体例2]次に、図13(a)に示される直列型アセ
ンブラコード42がアセンブラコード生成部11によっ
て生成され定数分割部12に入力された場合における、
リンカ部17の動作及びそれに続く最適化について説明
する。 (リンカ部17)図13(a)〜(g)は、リンカ部1
7の動作を説明するための一連の具体的なコードや関連
情報を示す図である。
11が生成した具体例2に係る直列型アセンブラコード
42を示し、図13(b)は、その直列型アセンブラコ
ード42を入力として定数分割部12が生成したコード
を示し、図13(c)は、そのコードを入力として並列
化スケジューリング部13が生成した並列化アセンブラ
コードを示し、図13(d)及び図13(e)はそれぞ
れ、その並列化アセンブラコードを入力として並列化ア
センブラ部16が生成したオブジェクトコード44a及
び再配置情報45aを示し、図13(f)及び図13
(g)は、そのオブジェクトコード44a及び再配置情
報45aを入力としてリンカ部17が生成した実行可能
コード46及び配置情報40を示す。
成部11、定数分割部12及び並列化スケジューリング
部13が生成したコードの詳細を説明するために、図1
3(a)〜(c)においては、各命令と共に生成される
付加情報を「@」に続くコードを用いて表現している。
この付加情報は、その命令を特定する識別子及び分割定
数に関する情報等からなる。
情報「@ID数字」は、それが書かれている行に存在す
る命令の識別子(命令識別子)である。また、図13
(b)に示された付加情報の一部「LbU12」、「L
bL4」はそれぞれ、ラベル「label」の上位12
ビット及び下位4ビットを示し、また、付加情報の一部
(サイズ情報)「S16」は、ラベル「label」の
サイズを16ビットと仮定して分割したことを示し、さ
らに付加情報の一部「M」は、ラベル「label」を
分割して定数バッファ107に格納する命令の中で最初
の命令に相当することを示す。
は、ラベル「label」の記憶領域(4バイト)を確
保する擬似命令である。リンカ部17に入力されるの
は、図13(d)に示されたオブジェクトコード44a
と図13(e)に示された再配置情報45aである。こ
こで、図13(d)において、オブジェクトコードの
「場所情報」は、各命令が置かれるべき相対アドレスを
示し、特定のメモリ領域(セグメントやセクション)の
先頭からのオフセット(バイト単位)で表現されてい
る。記号「0x」は、続く数値を16進数で表現してい
ることを示す。 また、「label:12u」、「la
bel:4l」はそれぞれ、ラベル「label」の上
位12ビット、下位4ビットの部分定数を意味する。
れるように、「ラベル」、そのラベルを参照している命
令が置かれている「場所情報」、その命令に付随してい
た「付加情報」により構成されている。ここで、再配置
情報45aの場所情報は、VLIWが置かれるアドレス
(32ビット刻み)と、そのVLIWにおいてラベルを
参照する命令が配置されている単位オペレーションを特
定する順番との組み合わせによって表現されている。
対アドレス「0x1000」に置かれたVLIWの第3
オペレーションに配置された命令に参照され、そのVL
IWには付加情報「ID102.LbU12.S16.
M」が添付され、さらに、相対アドレス「0x100
4」に置かれたVLIWの第3オペレーションに配置さ
れた命令にも参照され、その命令には付加情報「ID1
02.LbL4.S16」が添付されていることが示さ
れている。
13(d))と再配置情報45a(図13(e))が入
力された場合のリンカ部17の具体的な動作は以下の通
りである。いま、ラベルアドレス算出部22は、同時に
入力された他のオブジェクトコードを参照することで、
上記ラベル「label」の最終的なサイズが28ビッ
ト長であると算出したとする。
el」を着目ラベルとし(ステップS61)、リンカ部
17に入力された再配置情報45aから着目ラベル「l
abel」の再配置情報を取り出す(ステップS6
2)。次に、その再配置情報の付加情報に含まれたサイ
ズ情報「S16」と、その着目ラベルについてラベルア
ドレス算出部22が算出したサイズ「28ビット」とを
比較する(ステップS63)。
出したサイズのほうが大きいので、図13(e)に示さ
れたラベル「label」の再配置情報429及び43
0のうち「M」の付加情報がついているもの(図13
(e)の行429)を特定し、その場所情報(0x10
00.3)に係るVLIW425の直前に、無効命令
(nop)と分割定数設定命令とからなる新たなVLI
Wを挿入する(ステップS64)。
に、VLIW432の直前に新たなVLIW431が追
加挿入される。なお、このVLIW431中のラベル
「label:12u」は、28ビット長のラベル「labe
l」のうち再配置情報中のサイズ情報が示す16ビット
を超える部分、即ち、上位12ビットである。また、V
LIW432中の分割定数「label:12m」は、28ビッ
ト長のラベル「label」の中位12ビットを示す。
12による定数の分割)時において仮定されたラベルの
サイズが最終的なサイズと相違していた場合に、その差
分を補正する命令が追加挿入される。最後に、出力部2
4は、ラベルアドレス算出部22により決定されたラベ
ルサイズを含む配置情報40(図13(g))を生成
し、命令挿入部23による命令挿入が行われた後の実行
可能コード46(図13(f))と共に出力する。
36には、そのサイズ「28」と、そのラベルを参照す
る命令の識別子「@ID102」とが含まれる。ここ
で、もし、この配置情報40を使用した後述する最適化
を行なわない場合は、このリンカ部の出力が最終の実行
可能コード46となる。 (配置情報40を使用した最適化)次に、上述の配置情
報40を定数分割部12にフィードバックし、その後の
処理を繰り返すことで最適化する場合におけるコンパイ
ラの具体的な動作を説明する。
配置情報40を再び定数分割部12に入力した場合の各
構成要素が生成するコードや関連情報を示す図である。
図14(a)は、図13(a)に示される直列型アセン
ブラコード42と図13(g)に示される配置情報40
とが入力された定数分割部12が生成したコードを示
し、図14(b)は、そのコードを入力として並列化ス
ケジューリング部13が生成した並列化アセンブラコー
ドを示し、図14(c)及び図14(d)はそれぞれ、
その並列化アセンブラコードを入力として並列化アセン
ブラ部16が生成したオブジェクトコード44a及び再
配置情報45aを示し、図14(e)は、そのオブジェ
クトコード44a及び再配置情報45aを入力としてリ
ンカ部17が生成した実行可能コード46を示す。
情報40の内容を参照することで命令識別子ID102
をもつ命令の外部ラベル「label」のサイズは28
ビットであると決定し(図6のステップS2)、28ビ
ット長としてラベル「label」を分割する(ステッ
プS3、S4)。その結果、図13(a)の命令412
は図14(a)に示される3個の命令442〜444に
置き換えられる。なお、命令443の付加情報「LbM
12」は、この命令がラベル「label」の中位12
ビットを参照していることを示す。
び図8に示された手順に従って依存グラフを生成し命令
の並べ替えを実行することで、無効命令(nop)が挿
入されていない並列化アセンブラコード(図14
(b))を生成する。そして、並列化アセンブラ部16
は、その並列化アセンブラコードに対応するオブジェク
トコード44a(図14(c))と再配置情報45a
(図115(a))とを生成する。なお、図14(c)
において、「label:12m」はラベル「labe
l」の中位12ビットが入ることを表す。
ドレス算出部22はラベル「label」のサイズを前
回と同様の28ビットと算出するので、命令挿入部23
はラベル「label」に関しての命令のさらなる挿入
を行わないので(図10のステップS63)、生成され
る実行可能コード46は図14(e)に示される通りと
なる。
て分かるように、配置情報40を定数分割部12にフィ
ードバックすることで最適化した実行可能コード(図1
4(e))は、そうでない実行可能コード(図13
(f))よりも1個のVLIWだけコードサイズが小さ
くなっている。なお、このように生成された実行可能コ
ード(図14(e))をフロッピーディスクやCD−R
OM、半導体メモリ等の記録媒体に収納したり、伝送媒
体を介して通信することで、対象とするVLIWプロセ
ッサ100を備えるターゲット環境に移動させることは
可能である。 [具体例3]次に、図15(a)に示される分岐命令を
含む直列型アセンブラコード42がアセンブラコード生
成部11によって生成され定数分割部12に入力された
場合における、定数分割部12及び並列化スケジューリ
ング部13の動作について説明する。
11が生成した具体例3に係る直列型アセンブラコード
42を示す。本図に示された分岐命令473の意味は以
下の通りである。 「(命令473)call _func」 分岐ラベル_funcにVLIWプロセッサ100の実行制
御を移す。
cのサイズは12ビット長とし、関数_funcへの分岐時に
引数R1が渡されるとする。図15(b)は、図15
(a)に示された直列型アセンブラコード42が入力さ
れた場合に定数分割部12が生成するコードを示す。分
岐命令473は、12ビットの分岐ラベル_funcを伴う
ので、その分岐ラベル_funcを定数バッファ107に設
定する分割定数設定命令477と、分岐命令473のオ
ペコードcallに相当する分割定数使用命令478とに分
割される。
コードが入力された場合に依存グラフ生成部20が生成
する依存グラフを示す。なお、分岐命令478が命令4
74に依存しているのは、関数_func中で引数R1が使
用されるからである。図15(d)は、図15(b)の
コード及び図15(c)の依存グラフが入力された場合
に命令並べ替え部21が中間的に生成する出力可能命令
集合と出力予定命令集合を示す。
いて、出力予定命令集合に分岐命令(call)478が含
まれる。図15(e)は、上記命令並べ替え部21が生
成する並列化アセンブラコードを示す。但し、本図にお
いては、VLIWの第1フィールド51のコードも示さ
れている。
2及び並列化スケジューリング部13によれば、図15
(a)に示される直列型アセンブラコード42から、図
15(e)に示される2個のVLIWからなる並列化ア
センブラコードが生成される。ここで、同一の直列型ア
センブラコード42が通常のコンパイラに入力された場
合と比較する。
生成すると考えられる並列化アセンブラコードを示す。
通常のコンパイラによれば、図15(a)に示された分
岐命令473は、分割されることがないので、少なくと
も13ビット長のフィールド、即ち、連続する2個のフ
ィールドを必要とする。そのために、3個のVLIW9
40〜942からなる並列化アセンブラコードが生成さ
れ、多くの無駄領域が発生している。 [具体例4]次に、図16(a)に示される直列型アセ
ンブラコード42がアセンブラコード生成部11によっ
て生成され定数分割部12に入力された場合における、
定数結合部14の動作を中心に説明する。
11が生成した具体例4に係る直列型アセンブラコード
42を示す。なお、この例において、分岐命令803に
用いられている分岐ラベル_funcのサイズは、具体例3
と同様、12ビット長とするが、関数_funcへの分岐時
に渡される引数はないとする。
直列型アセンブラコード42が入力された場合に定数分
割部12が生成するコードを示す。具体例3と同様に、
分岐命令503は分割定数設定命令507と分割定数使
用命令508とに分割される。図16(c)は、図16
(b)に示されるコードが入力された場合に依存グラフ
生成部20が生成する依存グラフを示す。
び図16(c)の依存グラフが入力された場合に命令並
べ替え部21が中間的に生成する出力可能命令集合と出
力予定命令集合を示す。具体例3と相違し、第2回目の
スケジューリングサイクルにおいて、出力予定命令集合
に分割定数設定命令507と分割定数使用命令508が
含まれる。
が生成する並列化アセンブラコードを示す。この並列化
アセンブラコードは2個のVLIW509及び510か
らなるが、VLIW510の第1フィールド51及び第
2フィールド52には、元々1個の分岐命令503であ
ったものが分割されて生成された命令507及び508
が置かれている。
センブラコードが入力された場合に定数結合部14が生
成するコードを示す。定数結合部14は、VLIW51
0には同一の長定数使用命令(分岐命令503)から生
成された分割定数設定命令507と分割定数使用命令5
08とが配置されていることを検出し、それら2つの命
令507及び508を、それらを結合した1個の長定数
使用命令(元の分岐命令503と同じ形式の命令)に置
き換える。これによって、定数分割部12による分割が
無駄に終わった(複数のVLIWに跨って分割定数を埋
める必要が無かった)場合の手当てが行われる。
るプロセッサは、上記特願平9―159058や特願平
9―159059に開示されたVLIWプロセッサに近
いものであったが、本発明は、これらに限定されるもの
ではない。元々1個の命令であったものが分割されて複
数のVLIWに跨って配置されたプログラムを実行する
定数復元型プロセッサであればよい。
(a)及び図2(b)に示される2種類のフォーマット
のVLIWを生成したが、本発明は、これら2種類に限
定されるものではない。例えば、16ビット長のオペレ
ーション3個からなるVLIWを生成することもでき
る。本発明は、目的とするVLIWのオペレーションに
収まる定数のサイズに基づいて、命令中の定数を分割し
並列化スケジューリングする技術だからである。
るVLIWプロセッサ100は、32ビット長のシフト
レジスタ(定数バッファ107)を1個備え、この格納
値が参照されると直後にゼロが格納されたが、本発明
は、このような定数バッファ107を備えるプロセッサ
に限定されない。独立した2個以上の定数を格納する定
数バッファを備え、これら格納場所を明示的に指示する
命令や、内容をクリアする命令を備えるプロセッサであ
ってもよい。具体的には、分割定数設定命令を生成する
際に、その命令と共に格納場所を指示する命令を生成し
たり、また、分割定数使用命令を生成する際に、その命
令と共に内容をクリアする命令を生成すればよい。
ベルを含む1個の分岐命令に対して、そのラベルだけを
定数バッファ107に格納する1個の分割定数設定命令
とそのラベルを使用して分岐する1個の分割定数使用命
令とに分割したが、これに限られず、例えば、ラベルの
サイズが定数バッファ107よりも大きい場合には、さ
らにラベルを2個に分割し、それぞれを定数バッファ1
07に格納する2個の分割定数設定命令と1個の分割定
数使用命令とに分割してもよい。
12ビットという数値が固定的に用いられたが、本発明
はこれら数値に限定されない。さらに、本実施形態の定
数分割部12は、サイズの分からないラベルは使用頻度
の最も高いアドレスサイズ(16ビット長)と仮定した
が、対象プロセッサで用いられる最大のアドレスサイズ
と仮定してもよい。また、サイズの不明な定数が転送・
演算命令のオペランドである場合には、対象プロセッサ
で用いられる最大の定数サイズと仮定したり、使用頻度
の最も高い定数サイズと仮定してもよい。これら仮定さ
れるサイズは、デフォルト値としてコンパイラに予め記
憶させておいたり、コンパイラの起動時にオプションと
してユーザから指定させてもよい。
は、第1回目のスケジューリングサイクルにおいて出力
可能命令集合に残された命令406に新たな命令404
を加えることで第2回目のサイクルを継続したが、各サ
イクルごとに出力可能命令集合の要素をクリアし再計算
してもよい。
に係るコンパイラは、直列に並べられた命令からなる命
令列を複数の命令を同時並列に実行するプロセッサを対
象とする長語命令列に変換するコンパイラであって、入
力された前記命令列中の定数を用いた命令を複数の命令
に分割する分割ステップと、分割後の命令列に対して各
命令の実行順序に基づく依存関係を解析する解析ステッ
プと、解析された依存関係を遵守しつつ分割後の前記命
令列に対して同時並列に実行できる複数の命令を単位と
する前記長語命令列に並べ替える並べ替えステップとを
含むことを特徴とする。
を用いた命令は、よりサイズの小さい2以上の命令に分
割され、並列化スケジューリングが行われるので、定数
復元型VLIWプロセッサに好適なコンパイラが実現さ
れる。つまり、無駄領域を有するVLIWの生成が抑制
される。ここで、前記分割ステップは、定数を用いた前
記命令が前記長語命令を構成する単位オペレーションに
収まるサイズであるか否か判定する命令サイズ判定サブ
ステップと、単位オペレーションに収まるサイズでない
と判定した場合に前記命令を前記単位オペレーションに
収まるサイズの複数の命令に分割する分割サブステップ
とを含むとすることができる。
らないサイズの命令だけが分割され並列化スケジューリ
ングされるので、目的とするVLIWと全く無関係なサ
イズの命令を含むソースプログラムであっても、分割処
理は必要最低限の命令に対してのみ行われ、コンパイル
に要する処理時間が短縮される。また、前記分割サブス
テップにおいては、定数を用いた前記命令をその定数を
前記プロセッサが備える記憶バッファに格納する命令と
格納された前記定数を用いる命令とに分割するとするこ
とができる。
ッファに格納されるので、その定数を使用する命令中に
は定数をオペランドとして含ませる必要がなくなり、オ
ペコードのみからなる小さなサイズのオペレーションフ
ィールドを有するVLIWに対応したコンパイラが実現
される。また、前記分割サブステップにおいては、定数
を用いた前記命令をその定数を分割して得られる部分定
数を前記プロセッサが備える記憶バッファに格納する命
令と格納された前記部分定数を用いる命令とに分割する
とすることができる。
できる定数領域のサイズを超えた部分定数だけを定数バ
ッファに格納しておき、後の命令によって使用すること
ができるので、小さなサイズのオペランド指定を含むオ
ペレーションフィールドを有するVLIWに対応したコ
ンパイラが実現される。また、前記コンパイラはさら
に、前記分割サブステップにおいて分割生成された2以
上の命令が前記並べ替えステップにおける並べ替えによ
って同一の長語命令に配置された場合にそれら命令を結
合する結合ステップを含むとすることができる。
(分割する必要のなかった命令)が2以上の命令に分割
された後に異なるVLIWのオペレーションに配置され
実行されることによる実行速度の低下という不具合の発
生が回避されたり、分割定数設定命令が誤った分割定数
使用命令と結合されてしまうことが防止される。また、
前記命令サイズ判定サブステップにおいては、前記定数
の最終的なサイズが決定されていない場合にはそのサイ
ズを仮定して前記判定を行い、前記コンパイラはさら
に、定数の最終的なサイズを決定しながら複数の前記長
語命令列を連結編集する定数サイズ決定ステップと、決
定された定数のサイズが前記命令サイズ判定サブステッ
プにおいて仮定されたその定数のサイズよりも大きい場
合にその差分サイズに相当する部分定数を前記記憶バッ
ファに補充して格納する命令を生成し前記長語命令列に
挿入する挿入ステップとを含むとすることができる。
においてラベル等のサイズが解決できないために生じる
分割処理とリンク処理での不整合が解消されるので、複
数のコンパイル単位で生成されたオブジェクトモジュー
ルをリンクするようなプログラム開発に対応したコンパ
イラが実現される。また、前記命令サイズ判定サブステ
ップにおいては、前記定数の最終的なサイズが決定され
ていない場合にはそのサイズを前記プロセッサで用いら
れる最大のアドレスサイズや定数サイズと仮定したり、
使用頻度の最も高いアドレスサイズや定数サイズと仮定
することができる。
発生頻度が抑制されるので、無効命令が挿入されたVL
IWの生成頻度も抑制される。また、前記コンパイラ
は、前記定数サイズ決定ステップの後に再び前記分割ス
テップを実行させ、前記分割ステップ中の前記命令サイ
ズ判定サブステップにおいては、前記定数サイズ決定ス
テップにおいて決定された定数の最終的なサイズを考慮
して前記判定を行うとすることができる。
最終的なラベルのサイズが考慮されるので、もはや上記
命令の挿入は不要となり、コードサイズ及び実行時間が
短縮化された実行可能コードが生成される。また、前記
コンパイラは、前記再度の分割ステップに続いて再び前
記解析ステップと前記並べ替えステップとを実行させる
とすることができる。
列化スケジューリングによる最適化が繰り返されること
になるので、よりコード効率の高い実行可能コードが生
成されるという効果がある。また、本発明に係る実行可
能コードは、複数の命令を同時並列に実行するプロセッ
サを対象とする長語命令列であって、前記長語命令列中
の一の長語命令には、前記長語命令列中に暗黙的に指定
される前記プロセッサが備える記憶バッファに格納され
る定数が置かれ、前記一の長語命令に後続し、かつ、最
初に前記記憶バッファを参照する他の一の長語命令に
は、前記記憶バッファに格納された定数を用いる命令が
置かれていることを特徴とする。
定数であったものや元々1個の定数を用いた命令であっ
たものがよりサイズの小さい2以上の定数や命令に分割
されて配置され、かつ、定数復元型プロセッサによって
元の定数や命令に復元されて実行されるようスケジュー
リングされているので、定数復元型VLIWプロセッサ
に好適な実行可能コード、即ち、無駄領域を有するVL
IWの生成が抑制されたコード効率の高い実行可能コー
ドが提供される。
サ100のアーキテクチャの一例を示すブロック図であ
る。
するVLIWの2種類のフォーマットを示し、それぞ
れ、3オペレーションフォーマット(図2(a))及び
2オペレーションフォーマット(図2(b))を示す。
ットオペレーションにおける3種類のフォーマットを示
し、それぞれ、レジスタ間演算のフォーマット(図3
(a))、レジスタと4ビット定数を用いた演算のフォ
ーマット(図3(b))、定数バッファ107に格納す
る12ビットの分割定数のみを指定したフォーマット
(図3(c))を示す。
ビットオペレーションにおける2種類のフォーマットを
示し、それぞれ、レジスタと16ビット定数を用いた演
算のフォーマット(図4(a))、定数バッファ107
に格納する24ビットの分割定数のみを指定したフォー
マット(図4(b))を示す。
を示すブロック図である。
示すフローチャートである。
手順を示すフローチャートである。
順を示すフローチャートである。
すブロック図である。
順を示すフローチャートである。
連の入出力コード及び関連データを示し、それぞれ、ア
センブラコード生成部11によって生成され定数分割部
12に入力される直列型アセンブラコード42(図11
(a))、その直列型アセンブラコード42が入力され
た場合に定数分割部12が生成するコード(図11
(b))、このコードが並列化スケジューリング部13
に入力された場合に命令並べ替え部21が生成するVL
IW(図11(c))を示す。
ードが並列化スケジューリング部13に入力された場合
に依存グラフ生成部20が生成する最終的な依存グラフ
である。
連の入出力コード及び関連データを示し、それぞれ、ア
センブラコード生成部11が生成した具体例2に係る直
列型アセンブラコード42(図13(a))、その直列
型アセンブラコード42を入力として定数分割部12が
生成したコード(図13(b))、そのコードを入力と
して並列化スケジューリング部13が生成した並列化ア
センブラコード(図13(c))、その並列化アセンブ
ラコードを入力として並列化アセンブラ部16が生成し
たオブジェクトコード44a(図13(d))及び再配
置情報45a(図13(e))、そのオブジェクトコー
ド44a及び再配置情報45aを入力としてリンカ部1
7が生成した実行可能コード46(図13(f))及び
配置情報40(図13(g))を示す。
置情報40を再び定数分割部12に入力した場合の各構
成要素が生成する具体例2に係る一連の入出力コードや
関連データを示し、それぞれ、図13(a)に示される
直列型アセンブラコード42と図13(g)に示される
配置情報40とが入力された定数分割部12が生成した
コード(図14(a))、そのコードを入力として並列
化スケジューリング部13が生成した並列化アセンブラ
コード(図14(b))、その並列化アセンブラコード
を入力として並列化アセンブラ部16が生成したオブジ
ェクトコード44a(図14(c))及び再配置情報4
5a(図14(d))を示し、そのオブジェクトコード
44a及び再配置情報45aを入力としてリンカ部17
が生成した実行可能コード46(図14(e))を示
す。
連の入出力コード及び関連データを示し、それぞれ、ア
センブラコード生成部11が生成した直列型アセンブラ
コード42(図15(a))、その直列型アセンブラコ
ード42が入力された場合に定数分割部12が生成する
コード(図15(b))、そのコードが入力された場合
に依存グラフ生成部20が生成する依存グラフ(図15
(c))、そのコード及び依存グラフが入力された場合
に命令並べ替え部21が中間的に生成する出力可能命令
集合と出力予定命令集合(図15(d))、その命令並
べ替え部21が生成する並列化アセンブラコード(図1
5(e))を示す。
連の入出力コード及び関連データを示し、それぞれ、ア
センブラコード生成部11が生成した直列型アセンブラ
コード42(図16(a))、その直列型アセンブラコ
ード42が入力された場合に定数分割部12が生成する
コード(図16(b))、そのコードが入力された場合
に依存グラフ生成部20が生成する依存グラフ(図16
(c))、そのコード及び依存グラフが入力された場合
に命令並べ替え部21が中間的に生成する出力可能命令
集合と出力予定命令集合(図16(d))、その命令並
べ替え部21が生成する並列化アセンブラコード(図1
6(e))、その並列化アセンブラコードが入力された
場合に定数結合部14が生成するコード(図16
(f))を示す。
ある。
成する依存グラフを示す。
するVLIWを示す。
ードを示す。
Claims (25)
- 【請求項1】 直列に並べられた命令からなる命令列
を、複数の命令を同時並列に実行するプロセッサを対象
とする長語命令列に変換する装置であって、 入力された前記命令列中の定数を用いた命令を、その定
数を前記プロセッサが備える記憶バッファに格納する命
令と、格納された定数を使用する命令とに分割する手段
と、 分割後の命令列に対して各命令の実行順序に基づく依存
関係を、記憶バッファへの定数の格納及び定数の使用の
順序関係も含めて解析する手段と、 解析された依存関係を遵守しつつ分割後の前記命令列に
対して同時並列に実行できる複数の命令を単位とする前
記長語命令列に並べ替える手段とを備えたことを特徴と
するプログラム変換装置。 - 【請求項2】 直列に並べられた命令からなる命令列
を、複数の命令を同時並列に実行するプロセッサを対象
とする長語命令列に変換する装置であって、 入力された前記命令列中の定数を用いた命令を、その定
数を分割して得られる部分定数を前記プロセッサが備え
る記憶バッファに格納する命令と、格納された前記部分
定数を使用する命令とに分割する手段と、 分割後の命令列に対して各命令の実行順序に基づく依存
関係を、記憶バッファへの定数の格納及び定数の使用の
順序関係も含めて解析する手段と、 解析された依存関係を遵守しつつ分割後の前記命令列に
対して同時並列に実行できる複数の命令を単位とする前
記長語命令列に並べ替える手段とを備えたことを特徴と
するプログラム変換装置。 - 【請求項3】 直列に並べられた命令からなる命令列
を、複数の命令を同時並列に実行するプロセッサを対象
とする長語命令列に変換するプログラムを記録した記録
媒体であって、 入力された前記命令列中の定数を用いた命令を、その定
数を前記プロセッサが備える記憶バッファに格納する命
令と、格納された定数を使用する命令とに分割する分割
ステップと、 分割後の命令列に対して各命令の実行順序に基づく依存
関係を、記憶バッファへの定数の格納及び定数の使用の
順序関係も含めて解析する解析ステップと、 解析された依存関係を遵守しつつ分割後の前記命令列に
対して同時並列に実行できる複数の命令を単位とする前
記長語命令列に並べ替える並べ替えステップとをコンピ
ュータに実行させるためのプログラムを記録したコンピ
ュータ読み取り可能な記録媒体。 - 【請求項4】 直列に並べられた命令からなる命令列
を、複数の命令を同時並列に実行するプロセッサを対象
とする長語命令列に変換するプログラムを記録した記録
媒体であって、 入力された前記命令列中の定数を用いた命令を、その定
数を分割して得られる部分定数を前記プロセッサが備え
る記憶バッファに格納する命令と、格納された前記部分
定数を使用する命令とに分割する分割ステップと、 分割後の命令列に対して各命令の実行順序に基づく依存
関係を、記憶バッファへの定数の格納及び定数の使用の
順序関係も含めて解析する解析ステップと、 解析された依存関係を遵守しつつ分割後の前記命令列に
対して同時並列に実行できる複数の命令を単位とする前
記長語命令列に並べ替える並べ替えステップとをコンピ
ュータに実行させるためのプログラムを記録したコンピ
ュータ読み取り可能な記録媒体。 - 【請求項5】 前記分割ステップは、 定数を用いた前記命令が前記長語命令を構成する単位オ
ペレーションに収まるサイズであるか否か判定する命令
サイズ判定サブステップと、 単位オペレーションに収まるサイズでないと判定した場
合に前記命令を前記単位オペレーションに収まるサイズ
の複数の命令に分割する分割サブステップとを含むこと
を特徴とする請求項3又は4記載の記録媒体。 - 【請求項6】 前記プログラムはさらに、前記分割サブ
ステップにおいて分割生成された2以上の命令が前記並
べ替えステップにおける並べ替えによって同一の長語命
令に配置された場合にそれら命令を結合する結合ステッ
プをコンピュータに実行させることを特徴とする請求項
5記載の記録媒体。 - 【請求項7】 前記命令サイズ判定サブステップにおい
ては、前記定数のサイズを仮定して前記判定を行い、 前記プログラムはさらに、 定数の最終的なサイズを決定しながら複数の前記長語命
令列を連結編集する定数サイズ決定ステップと、 決定された定数のサイズが前記命令サイズ判定サブステ
ップにおいて仮定されたその定数のサイズよりも大きい
場合にその差分サイズに相当する部分定数を前記記憶バ
ッファに補充して格納する命令を生成し前記長語命令列
に挿入する挿入ステップとをコンピュータに実行させる
ことを特徴とする請求項6記載の記録媒体。 - 【請求項8】 前記命令サイズ判定サブステップにおい
ては、前記定数のサイズを前記プロセッサで用いられる
最大の定数サイズと仮定して前記判定を行うことを特徴
とする請求項7記載の記録媒体。 - 【請求項9】 前記命令サイズ判定サブステップにおい
ては、前記定数のサイズを使用頻度の最も高い定数サイ
ズと仮定して前記判定を行うことを特徴とする請求項7
記載の記録媒体。 - 【請求項10】 前記プログラムは、前記定数サイズ決
定ステップの後に再び前記分割ステップを実行させ、 前記分割ステップ中の前記命令サイズ判定サブステップ
においては、前記定数サイズ決定ステップにおいて決定
された定数の最終的なサイズを考慮して前記判定を行う
ことを特徴とする請求項7〜9のいずれか1項に記載の
記録媒体。 - 【請求項11】 前記プログラムは、前記再度の分割ス
テップに続いて再び前記解析ステップと前記並べ替えス
テップとを実行させることを特徴とする請求項10記載
の記録媒体。 - 【請求項12】 直列に並べられた命令からなる命令列
を、複数の命令を同時並列に実行するプロセッサを対象
とする長語命令列に変換する装置であって、 入力された前記命令列中の定数を複数の部分定数に分割
し、前記部分定数を前記プロセッサが備える記憶バッフ
ァに格納する命令と、格納された前記部分定数を使用す
る命令とを生成する生成手段と、 生成後の命令列に対して各命令の実行順序に基づく依存
関係を記憶バッファへの定数の格納及び定数の使用の順
序関係も含めて解析する手段と、 解析された依存関係を遵守しつつ生成後の前記命令列に
対して同時並列に実行できる複数の命令を単位とする前
記長語命令列に並べ替える手段とを備えたことを特徴と
するプログラム変換装置。 - 【請求項13】 直列に並べられた命令からなる命令列
を、複数の命令を同時並列に実行するプロセッサを対象
とする長語命令列に変換するプログラムを記録した記録
媒体であって、 入力された前記命令列中の定数を複数の部分定数に分割
し、前記部分定数を前記プロセッサが備える記憶バッフ
ァに格納する命令と、格納された前記部分定数を使用す
る命令とを生成する分割ステップと、 生成後の命令列に対して各命令の実行順序に基づく依存
関係を記憶バッファへの定数の格納及び定数の使用の順
序関係も含めて解析する解析ステップと、 解析された依存関係を遵守しつつ生成後の前記命令列に
対して同時並列に実行できる複数の命令を単位とする前
記長語命令列に並べ替える並べ替えステップとをコンピ
ュータに実行させるためのプログラムを記録したコンピ
ュータ読み取り可能な記録媒体。 - 【請求項14】 前記分割ステップは、 定数が前記長語命令を構成する単位オペレーションに内
で表現できるサイズであるか否か判定する命令サイズ判
定サブステップと、 単位オペレーション内で表現できるサイズでないと判定
した場合に前記定数を前記単位オペレーション内で表現
できるサイズの複数の部分定数に分割する分割サブステ
ップと項13記載の記録媒体。 - 【請求項15】 前記プログラムはさらに、前記分割ス
テップにおいて生成された2以上の命令が前記並べ替え
ステップにおける並べ替えによって同一の長語命令に配
置された場合にそれら命令を結合する結合ステップをコ
ンピュータに実行させることを特徴とする請求項14記
載の記録媒体。 - 【請求項16】 前記命令サイズ判定サブステップにお
いては、前記定数のサイズを仮定して前記判定を行い、 前記プログラムはさらに、 定数の最終的なサイズを決定しながら複数の前記長語命
令列を連結編集する定数サイズ決定ステップと、 決定された定数のサイズが前記命令サイズ判定サブステ
ップにおいて仮定されたその定数のサイズよりも大きい
場合にその差分サイズに相当する部分定数を前記記憶バ
ッファに補充して格納する命令を生成し前記長語命令列
に挿入する挿入ステップとをコンピュータに実行させる
ことを特徴とする請求項15記載の記録媒体。 - 【請求項17】 前記命令サイズ判定サブステップにお
いては、前記定数の最終的なサイズが決定されていない
場合にはそのサイズを前記プロセッサで用いられる最大
の定数サイズと仮定して前記判定を行うことを特徴とす
る請求項16記載の記録媒体。 - 【請求項18】 前記命令サイズ判定サブステップにお
いては、前記定数の最終的なサイズが決定されていない
場合にはそのサイズを使用頻度の最も高い定数サイズと
仮定して前記判定を行うことを特徴とする請求項16記
載の記録媒体。 - 【請求項19】 前記プログラムは、前記定数サイズ決
定ステップの後に再び前記分割ステップを実行させ、 前記分割ステップ中の前記命令サイズ判定サブステップ
においては、前記定数サイズ決定ステップにおいて決定
された定数の最終的なサイズを考慮して前記判定を行う
ことを特徴とする請求項16〜18のいずれか1項に記
載の記録媒体。 - 【請求項20】 前記プログラムは、前記再度の分割ス
テップに続いて再び前記解析ステップと前記並べ替えス
テップとを実行させることを特徴とする請求項19記載
の記録媒体。 - 【請求項21】 複数の命令を同時並列に実行するプロ
セッサによって実行される長語命令列が記録された記録
媒体であって、前記長語命令列は、以下の(a)及び(b)のオペレー
ションを前記プロセッサに実行させることを特徴とする
記録媒体。 (a)前記長語命令列中の一の長語命令に置かれた定数
を、前記長語命令列中に暗黙的に指定される前記プロセ
ッサが備える記憶バッファに格納させる。 (b)前記一の長語命令に後続し、かつ、最初に前記記
憶バッファを参照する他の一の長語命令に置かれた命令
を、前記記憶バッファに格納された定数を用いて実行さ
せる。 - 【請求項22】 前記一の長語命令に置かれた定数は、
分岐先アドレスであり、 前記他の一の長語命令に置かれた命令は、分岐先アドレ
スを伴わない分岐命令であることを特徴とする請求項2
1記載のコンピュータ読み取り可能な記録媒体。 - 【請求項23】 複数の命令を同時並列に実行するプロ
セッサによって実行される長語命令列が記録された記録
媒体であって、前記長語命令列は、以下の(a)及び(b)のオペレー
ションを前記プロセッサに実行させることを特徴とする
記録媒体。 (a)前記長語命令列中の一の長語命令に置かれた定数
を、前記プロセッサが備える記憶バッファに格納させ
る。 (b)前記一の長語命令に後続し、かつ、最初に前記記
憶バッファを参照する他の一の長語命令に置かれた、そ
れ自体定数を含む命令を、その定数と前記記憶バッファ
に格納された定数とが結合された定数を用いて実行させ
る。 - 【請求項24】 複数の命令を同時並列に実行するプロ
セッサによって実行される長語命令列が記録された記録
媒体であって、前記長語命令列は、以下の(a)及び(b)のオペレー
ションを前記プロセッサに実行させることを特徴とする
記録媒体。 (a)前記長語命令列に置かれた2以上の長語命令に含
まれるそれぞれの定数を、その長語命令列中に暗黙的に
指定される前記プロセッサが備える記憶バッファに結合
して格納させる。 (b)前記2以上の長語命令のいずれにも後続し、か
つ、最初に前記記憶バッファを参照する長語命令を、前
記2以上の長語命令に含まれた定数それぞれが結合され
た定数を用いて実行させる。 - 【請求項25】 複数の命令を同時並列に実行するプロ
セッサによって実行させる長語命令列が記録された記録
媒体であって、前記長語命令列は、以下のオペレーション(a)及び
(b)を前記プロセッサに実行させることを特徴とする
記録媒体。 (a)前記長語命令列に置かれた2以上の長語命令に含
まれるそれぞれの定数を、その長語命令列中に暗黙的に
指定される前記プロセッサが備える記憶バッファに結合
して格納させる。 (b)前記2以上の長語命令のいずれにも後続し、か
つ、最初に前記記憶バッファを参照する長語命令に置か
れた、それ自体定数を含む命令を、その定数と前記2以
上の長語命令に含まれた定数それぞれとが結合された定
数を用いて実行させる。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23514497A JP3327818B2 (ja) | 1997-08-29 | 1997-08-29 | プログラム変換装置及び記録媒体 |
EP98306914A EP0899656B1 (en) | 1997-08-29 | 1998-08-28 | Program conversion apparatus for constant reconstructing VLIW processor |
US09/143,269 US6367067B1 (en) | 1997-08-29 | 1998-08-28 | Program conversion apparatus for constant reconstructing VLIW processor |
DE69832932T DE69832932T2 (de) | 1997-08-29 | 1998-08-28 | Programmkonvertiergerät für konstantenrekonstruierenden VLIW Prozessor |
EP05077437A EP1628213A3 (en) | 1997-08-29 | 1998-08-28 | VLIW processor |
KR10-1998-0035360A KR100496946B1 (ko) | 1997-08-29 | 1998-08-29 | 정수복원형장어명령프로세서용프로그램변환장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23514497A JP3327818B2 (ja) | 1997-08-29 | 1997-08-29 | プログラム変換装置及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1173325A JPH1173325A (ja) | 1999-03-16 |
JP3327818B2 true JP3327818B2 (ja) | 2002-09-24 |
Family
ID=16981713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23514497A Expired - Fee Related JP3327818B2 (ja) | 1997-08-29 | 1997-08-29 | プログラム変換装置及び記録媒体 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6367067B1 (ja) |
EP (2) | EP0899656B1 (ja) |
JP (1) | JP3327818B2 (ja) |
KR (1) | KR100496946B1 (ja) |
DE (1) | DE69832932T2 (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3327818B2 (ja) | 1997-08-29 | 2002-09-24 | 松下電器産業株式会社 | プログラム変換装置及び記録媒体 |
JP2000132404A (ja) | 1998-10-22 | 2000-05-12 | Matsushita Electric Ind Co Ltd | 命令列最適化装置 |
US6457173B1 (en) * | 1999-08-20 | 2002-09-24 | Hewlett-Packard Company | Automatic design of VLIW instruction formats |
GB2358491A (en) * | 1999-09-03 | 2001-07-25 | Sgs Thomson Microelectronics | A relocation format for linking |
US6675377B1 (en) * | 1999-09-13 | 2004-01-06 | Matsushita Electric Industrial Co., Ltd. | Program conversion apparatus |
JP2002091762A (ja) * | 2000-09-14 | 2002-03-29 | Denso Corp | プログラム生成装置 |
US7331040B2 (en) * | 2002-02-06 | 2008-02-12 | Transitive Limted | Condition code flag emulation for program code conversion |
GB0202728D0 (en) * | 2002-02-06 | 2002-03-27 | Transitive Technologies Ltd | Condition code flag emulation for program code conversion |
SE521753C2 (sv) | 2002-02-08 | 2003-12-02 | Xelerated Ab | Förfarande och system för att uppfylla realtidskrav för en dataprocessor |
US8141068B1 (en) * | 2002-06-18 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Compiler with flexible scheduling |
EP1378824A1 (en) * | 2002-07-02 | 2004-01-07 | STMicroelectronics S.r.l. | A method for executing programs on multiple processors and corresponding processor system |
JP3847672B2 (ja) | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
US7574583B2 (en) | 2002-09-24 | 2009-08-11 | Silicon Hive B.V. | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor |
US7444620B2 (en) * | 2003-02-28 | 2008-10-28 | Bea Systems, Inc. | Systems and methods for a common runtime container framework |
JP2005173645A (ja) * | 2003-12-05 | 2005-06-30 | Ibm Japan Ltd | プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体 |
JP4283131B2 (ja) * | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
US7401329B2 (en) * | 2005-04-25 | 2008-07-15 | Arm Limited | Compiling computer programs to exploit parallelism without exceeding available processing resources |
US20070083736A1 (en) * | 2005-10-06 | 2007-04-12 | Aravindh Baktha | Instruction packer for digital signal processor |
JP4879589B2 (ja) * | 2006-01-20 | 2012-02-22 | パナソニック株式会社 | コンパイラ装置 |
JP5168143B2 (ja) * | 2006-06-15 | 2013-03-21 | 日本電気株式会社 | プロセッサ、および、命令制御方法 |
JP5240200B2 (ja) * | 2007-10-03 | 2013-07-17 | 日本電気株式会社 | データ処理装置および方法 |
EP2282268B1 (en) * | 2009-07-23 | 2012-11-21 | STMicroelectronics Srl | Interfacing device and method, for example for systems-on-chip |
JP5059174B2 (ja) * | 2010-08-10 | 2012-10-24 | 株式会社東芝 | プログラム変換装置、およびそのプログラム |
US9477476B2 (en) * | 2012-11-27 | 2016-10-25 | Qualcomm Incorporated | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US9424045B2 (en) | 2013-01-29 | 2016-08-23 | Arm Limited | Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US9372695B2 (en) * | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US9875107B2 (en) | 2015-01-19 | 2018-01-23 | International Business Machines Corporation | Accelerated execution of execute instruction target |
DE102018113475A1 (de) * | 2018-06-06 | 2019-12-12 | Infineon Technologies Ag | Rechenwerk zum rechnen mit maskierten daten |
CN118312221B (zh) * | 2024-06-05 | 2024-08-16 | 中国人民解放军国防科技大学 | 一种弹性可重构多维并行的多核数字信号处理器 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
JP3004108B2 (ja) * | 1991-11-27 | 2000-01-31 | 株式会社東芝 | 情報処理装置 |
JPH05197545A (ja) * | 1991-12-10 | 1993-08-06 | Mitsubishi Electric Corp | マイクロコンピュータ |
US5557761A (en) * | 1994-01-25 | 1996-09-17 | Silicon Graphics, Inc. | System and method of generating object code using aggregate instruction movement |
JP3430635B2 (ja) * | 1994-06-17 | 2003-07-28 | 富士通株式会社 | 定数参照最適化処理装置 |
JPH08161169A (ja) * | 1994-12-09 | 1996-06-21 | Toshiba Corp | Vliw方式の計算機システム及びvliwの解釈・実行方法 |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
JPH08194626A (ja) * | 1995-01-17 | 1996-07-30 | Hitachi Ltd | 即値生成方法 |
US5669001A (en) * | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
US5867711A (en) * | 1995-11-17 | 1999-02-02 | Sun Microsystems, Inc. | Method and apparatus for time-reversed instruction scheduling with modulo constraints in an optimizing compiler |
US5826054A (en) * | 1996-05-15 | 1998-10-20 | Philips Electronics North America Corporation | Compressed Instruction format for use in a VLIW processor |
US5787302A (en) * | 1996-05-15 | 1998-07-28 | Philips Electronic North America Corporation | Software for producing instructions in a compressed format for a VLIW processor |
US5805850A (en) * | 1997-01-30 | 1998-09-08 | International Business Machines Corporation | Very long instruction word (VLIW) computer having efficient instruction code format |
US6219779B1 (en) * | 1997-06-16 | 2001-04-17 | Matsushita Electric Industrial Co., Ltd. | Constant reconstructing processor which supports reductions in code size |
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
KR19990017608A (ko) * | 1997-08-25 | 1999-03-15 | 유재희 | 신호 처리 프로세서의 연산 유닛 및 입출력 장치 |
JP3327818B2 (ja) | 1997-08-29 | 2002-09-24 | 松下電器産業株式会社 | プログラム変換装置及び記録媒体 |
-
1997
- 1997-08-29 JP JP23514497A patent/JP3327818B2/ja not_active Expired - Fee Related
-
1998
- 1998-08-28 DE DE69832932T patent/DE69832932T2/de not_active Expired - Lifetime
- 1998-08-28 US US09/143,269 patent/US6367067B1/en not_active Expired - Lifetime
- 1998-08-28 EP EP98306914A patent/EP0899656B1/en not_active Expired - Lifetime
- 1998-08-28 EP EP05077437A patent/EP1628213A3/en not_active Withdrawn
- 1998-08-29 KR KR10-1998-0035360A patent/KR100496946B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE69832932T2 (de) | 2006-07-06 |
KR19990024036A (ko) | 1999-03-25 |
EP0899656A2 (en) | 1999-03-03 |
EP1628213A2 (en) | 2006-02-22 |
US6367067B1 (en) | 2002-04-02 |
EP0899656B1 (en) | 2005-12-28 |
DE69832932D1 (de) | 2006-02-02 |
JPH1173325A (ja) | 1999-03-16 |
KR100496946B1 (ko) | 2005-09-09 |
EP1628213A3 (en) | 2009-01-07 |
EP0899656A3 (en) | 2002-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3327818B2 (ja) | プログラム変換装置及び記録媒体 | |
JP3896087B2 (ja) | コンパイラ装置およびコンパイル方法 | |
US8024718B2 (en) | System and method for optimizing source code | |
US6113650A (en) | Compiler for optimization in generating instruction sequence and compiling method | |
CN100465895C (zh) | 编译器、编译方法 | |
JP3311462B2 (ja) | コンパイル処理装置 | |
JP3190773B2 (ja) | 言語処理プログラムのコンパイル処理方法 | |
JPH07234790A (ja) | プログラム変換処理装置およびプログラム変換処理方法 | |
US20020019973A1 (en) | Compiler and method for compiling easily adaptable to processor specifications | |
JP2000207223A (ja) | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 | |
US20040098709A1 (en) | Method, apparatus, and computer program for generating SIMD instruction sequence | |
JPH11232117A (ja) | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 | |
JP2015201119A (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JPH0926884A (ja) | バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置 | |
US6360355B1 (en) | Hardware synthesis method, hardware synthesis device, and recording medium containing a hardware synthesis program recorded thereon | |
JP2000132404A (ja) | 命令列最適化装置 | |
US7979853B2 (en) | Compiler device, method, program and recording medium | |
JP2006196002A (ja) | 非同期プログラムフローのモデリングを含むソフトウェアツール | |
JP4045802B2 (ja) | プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム | |
US20010039653A1 (en) | Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program | |
US20050125783A1 (en) | Program optimization with intermediate code | |
JP2003271394A (ja) | 関数と基本ブロックの配置割付装置および割付最適化プログラム | |
JP4535912B2 (ja) | データフローグラフ生成装置 | |
JP3473391B2 (ja) | プログラム処理方法、プログラム処理装置及び記録媒体 | |
JP4721975B2 (ja) | コンパイラ装置およびコンパイル方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070712 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080712 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090712 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090712 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100712 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110712 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110712 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120712 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120712 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130712 Year of fee payment: 11 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |