"複数のスロットを有する命令を処理する演算処理装置であって、前記各スロットには、それぞれオペレーションと当該オペレーションの圧縮/非圧縮情報を含むデータが格納され、前記演算処理装置は、第1命令の第1スロットに格納された第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、圧縮された前記第1オペレーションのデータに従って、前記第1命令よりも前の第2命令における第2スロットのオペレーションを参照し、前記第1オペレーションを合成するデコードユニットを有する、ことを特徴とする演算処理装置。さらに、前記第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、前記デコードユニットにより合成された前記第1オペレーションのデータを選択し、前記第1オペレーションの圧縮/非圧縮情報が非圧縮を示す場合、非圧縮の前記第1オペレーションのデータを選択するセレクタを有する、ことを特徴とする請求項1に記載の演算処理装置。前記デコードユニットは、前記複数のスロットを有する命令を受け取って、前記各スロットに格納されたオペレーションを分配する命令分配機と、前記各スロットに対して設けられ、該各スロットに格納されたオペレーションが圧縮されているときに、当該スロットのオペレーションを合成する複数の命令合成ブロックと、を有する、ことを特徴とする請求項1または請求項2に記載の演算処理装置。前記デコードユニットは、さらに、前記各スロットに対してそれぞれ設けられた複数の命令バッファ,複数の命令カウンタおよび複数のオペレーションバッファを有し、前記各命令合成ブロックは、前記複数の命令バッファの出力および前記複数の命令カウンタの出力を受け取ってオペレーションの合成を行う、ことを特徴とする請求項3に記載の演算処理装置。前記デコードユニットは、前記第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、前記第2命令における第2スロットの命令バッファおよび命令カウンタの情報を、前記第1スロットの命令バッファおよび命令カウンタにコピーし、それらの情報から前記第1オペレーションを合成し、次の命令を合成するために前記第1スロットの命令カウンタの値をインクリメントする、ことを特徴とする請求項4に記載の演算処理装置。前記デコードユニットは、さらに、前記各スロットに対してそれぞれ設けられた複数のオペレーションバッファを有し、前記各命令合成ブロックは、前記複数のオペレーションバッファの出力を受け取ってオペレーションの合成を行う、ことを特徴とする請求項3に記載の演算処理装置。前記デコードユニットは、前記第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、前記第2命令における第2スロットのオペレーションバッファの情報を、前記第1スロットのオペレーションバッファに設定して前記第1オペレーションを合成する、ことを特徴とする請求項6に記載の演算処理装置。前記命令合成ブロックによる圧縮されたオペレーションの合成は、オペレーションの種類ごとに決まった規則に従って行う、ことを特徴とする請求項3乃至請求項7のいずれか1項に記載の演算処理装置。複数のスロットを有する命令を圧縮する命令圧縮方法であって、圧縮対象としている第1命令の第1オペレーションと、当該第1オペレーションよりも前の第2命令の第2オペレーションを比較し、前記第1オペレーションと前記第2オペレーションが同じ種類であり、且つ、前記第1オペレーションと前記第2オペレーションのオペランドの差分が種類ごとに定められている値と等しいときに、前記第1オペレーションを圧縮する、ことを特徴とする命令圧縮方法。複数のスロットを有する命令を圧縮する命令圧縮プログラムであって、コンピュータに、圧縮対象としている第1命令の第1オペレーションと、当該第1オペレーションよりも前の第2命令の第2オペレーションを比較する手順と、前記第1オペレーションと前記第2オペレーションが同じ種類であり、且つ、前記第1オペレーションと前記第2オペレーションのオペランドの差分が種類ごとに定められている値と等しいときに、前記第1オペレーションを圧縮する手順と、を実行させることを特徴とする命令圧縮プログラム。上述したように、家電製品などに組み込まれるコンピュータシステムである組み込み機器において、小さなチップサイズ,電力対性能比およびプログラミングの柔軟性等を満たすものとして、VLIW方式のプロセッサが利用されている。ここで、VLIWプロセッサの命令は、複数のスロットに分割され、それぞれのスロットには、処理内容であるオペレーションが格納される。これにより、1つのVLIW命令を実行することで複数のオペレーションを並列に実行することができ、通常のプロセッサと比較して高い性能を得ることが可能になる。また、VLIW命令を処理するVLIWプロセッサは、スーパースカラプロセッサと異なり、実行時にプログラムから並列性を抽出する必要がないため、消費電力を低減することができる。しかしながら、VLIWプロセッサは、例えば、命令間の依存関係やスロットで実行できる命令の種類の制約のために、無効オペレーションを入れざるを得ない場合が発生する。また、コンパイラは、ソースコード中にループを見つけるとアンローリングし、ソフトウェアパイプライン化して性能を引き出そうとする。このとき、1回のループが2つ3つに展開される。すなわち、VLIWプロセッサは、例えば、無効オペレーションが入り、或いは、コンパイラが行う最適化によって、命令コードのサイズが増加する傾向にある。このように、命令コードのサイズが増加すると、少ない消費電力で高い性能を引き出すことが可能なVLIWプロセッサでも、消費電力の低減の効果が損なわれることにもなる。すなわち、命令コードのサイズが大きいと、それを格納するために大きな容量の命令メモリを用意しなければならず、チップ面積が大きくなるため、コストの増大を招く。また、チップ面積が大きくなると、それに伴って消費する電力も増加し、さらに、多くの命令を読み出すには電力を要するため、消費電力が増大することになる。一実施形態によれば、複数のスロットを有する命令を処理する演算処理装置であって、前記各スロットには、それぞれオペレーションと当該オペレーションの圧縮/非圧縮情報を含むデータが格納され、デコードユニットを有する演算処理装置が提供される。前記デコードユニットは、第1命令の第1スロットに格納された第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、圧縮された前記第1オペレーションのデータに従って、前記第1オペレーションを合成する。この第1オペレーションの合成は、前記第1命令よりも前の第2命令における第2スロットのオペレーションを参照し、前記第1オペレーションを合成する。開示の演算処理装置によれば、小さいサイズの命令コードを適用可能とすることによって、チップ面積および消費電力を低減することができるという効果を奏する。まず、演算処理装置、命令圧縮方法および命令圧縮プログラムの実施例を詳述する前に、VLIW命令、および、VLIW命令のフォーマットを説明する。図1は、VLIW命令の一例を説明するための図である。図1に示されるように、VLIW方式の演算処理装置に適用されるVLIW命令は、複数のスロットに分割され、各スロットには、それぞれ処理内容であるオペレーションA~Dが格納される。VLIWプロセッサは、図1に示されるような1つのVLIW命令を実行することで、複数のオペレーションA~Dを並列に実行することができ、通常のプロセッサと比較して高い性能を得ることができる。図2は、図1のVLIW命令のフォーマットを説明するための図である。図2および図2に示されるように、VLIW命令のフォーマットとしては、2種類考えられる。すなわち、図2に示されるVLIW命令のフォーマットは、例えば、4つのオペレーションA~Dに対して、オペレーションの圧縮/非圧縮情報A1~D1を命令の先頭にまとめて格納し、その後に、オペレーションA2~D3を格納するものである。また、図2に示されるVLIW命令のフォーマットは、例えば、4つのオペレーションA~Dに対して、スロットごとにオペレーションの圧縮/非圧縮情報A1~D1とオペレーションA2~D2を順に並べて格納するものである。以下、演算処理装置、命令圧縮方法および命令圧縮プログラムの実施例を、添付図面を参照して詳述する。なお、本実施例は、上述した図2に示すようなスロットごとにオペレーションの圧縮/非圧縮情報とオペレーションを順に並べて格納する命令フォーマットを対象とする。まず、本実施例に適用するアーキテクチャの例を説明する。本実施例の記載では、4スロットのVLIW命令、および、4スロットのVLIW命令を処理するVLIWプロセッサを例として説明する。ただし、本実施例の適用は、このような4スロットのVLIW命令およびそれを処理するVLIWプロセッサに限定されるものではなく、様々な変形が可能なのはいうまでもない。次に、本実施例に適用する命令コードの例を説明する。図3は、本実施例の演算処理装置に適用される命令コードの表現方法の一例を説明するための図である。ここで、前述したように、圧縮/非圧縮情報は、スロットごとに格納されるようになっている。図3に示されるように、圧縮/非圧縮情報は、1ビットの情報とされ、オペレーションが圧縮されている場合、例えば、直前の命令の4つのスロットから1つのスロットを参照するために2ビットの圧縮オペレーションを形成する。なお、オペレーションが圧縮されていない場合には、オペレーションの機械語を形成する。さらに、非圧縮オペレーションは31ビットとされ、オペコードに7ビット、ソースオペランド1に8ビット、ソースオペランド2に8ビット、そして、デスティネーションオペランドに8ビットを割り当てるようになっている。図4は、本実施例の演算処理装置に適用される命令の例を説明するための図である。本実施例に適用される命令としては、例えば、NOP命令、LD命令、ADD命令、ADD-I命令、および、CMP命令が定義される。NOP命令は、オペコードが0で、何もしない命令であり、LD命令は、オペコードが1で、ソースオペランド1のレジスタで指定されるアドレスからメモリの内容を読み込んで、デスティネーションオペランドのレジスタに格納する命令である。また、ADD命令は、オペコードが2で、ソースオペランド1とソースオペランド2のレジスタの内容を加算し、デスティネーションオペランドのレジスタに格納する命令である。さらに、ADD-I命令は、オペコードが3で、ソースオペランド1の即値とソースオペランド2のレジスタの内容を加算し、デスティネーションオペランドに格納する命令である。そして、CMP命令は、オペコードが4で、ソースオペランド1とソースオペランド2のレジスタの内容を比較し、等しければ0を、等しくなければ1をデスティネーションオペランドのレジスタに格納する命令である。もちろん、これらの命令は、単なる例であり、他の様々な命令を定義することも可能である。次に、図5および図6を参照して、圧縮された命令を作成するためのアセンブラの実施例を説明する。すなわち、図5を参照して、プログラムを含むコンパイラツールチェインの処理を示し、その後、図6を参照して、アセンブラ内部の処理を説明する。図5は、本実施例の演算処理装置におけるオブジェクトファイルの生成の一例を説明するためのフローチャートであり、図6は、本実施例の演算処理装置におけるアセンブラの処理の一例を説明するためのフローチャートである。図5に示されるように、オブジェクトファイルの生成は、ST11~ST13の3つのステップに分かれている。まず、コンパイルステップST11では、ソースコードを解析して、機械語に直接対応するアセンブリ表現のコードを出力する。次に、アセンブリステップST12に進んで、アセンブリ表現のコードを受け取り、再配置可能なオブジェクトコードを出力する。さらに、リンクステップST13に進んで、複数のオブジェクトコードを受け取り、マシン実行可能なオブジェクトファイルを生成する。なお、図5に示すフローチャートは、単なる例であり、ソースコードからマシン実行可能なオブジェクトファイルを作成する方法は、様々なものが存在するのはいうまでもない。次に、図6に示されるように、アセンブラの処理は、ST21~ST25の5つのステップに分かれている。初めの構文解析ステップST21では、与えられたアセンブリ表現のコードを解析する。この段階で機械語の命令列の内容が明らかになる。ただし、分岐先アドレスについては、アドレスの計算が終了していないため、この段階では不定である。次に、フロー解析ステップST22に進んで、分岐と合流を解析する。つまり、命令列のどの部分で分岐が発生し、どの部分で合流するのかを解析する。この段階で、分岐と合流が発生しない区間、いわゆる基本ブロックとなる命令列が確定する。さらに、基本ブロックの変換ステップST23に進んで、得られた基本ブロックの命令を、後述する方法により圧縮する。この段階で、各基本ブロックの長さが確定する。次に、分岐先アドレスの生成ステップST24に進んで、基本ブロックの長さの情報から分岐先アドレスを生成する。この段階で、全ての命令列の内容が明らかになる。最後に、オブジェクトコードの出力ステップST25において、命令列の機械語表現を出力してアセンブラの処理を終了する。図7は、図6における基本ブロックの変換処理を実現する基本ブロック変換部の一例を示すブロック図であり、図8は、図7の基本ブロック変換部における処理をより詳細に説明するためのフローチャートである。図7に示されるように、基本ブロック変換部は、命令バッファ11,前命令バッファ12,変換機構13,圧縮判定機構14,選択機構16,出力命令バッファ17および出力バッファ18を有する。なお、圧縮判定機構14は、オペレーションバッファ15を含む。前述したように、基本ブロックの変換ステップST23では、基本ブロックの命令を受け取って処理を実行する。すなわち、基本ブロック変換部では、処理を開始すると、出力バッファ18を初期化した後、基本ブロックのアセンブリコードの列を受け取って、アセンブリコードの1つの命令を命令バッファ11に読み込む。さらに、その命令バッファ11のアセンブリコードを、変換機構13により機械語に変換して出力する。ここで、命令を圧縮しない場合は、この機械語がそのまま出力される。ここで、命令バッファ11の内容は、前命令バッファ12にコピーされ、圧縮判定機構15により処理すべきコードが残っているかどうかを判定する。そして、処理すべきコードが残っていると判定すると、ステップST36に進んで、次のアセンブリコードの1つの命令を命令バッファ11に読み込む。そして、圧縮判定機構15は、命令バッファ11と前命令バッファ12の命令のオペレーションを比較し、命令バッファ11中の命令のそれぞれのオペレーションが圧縮できるかどうかを判定して処理を行う。すなわち、圧縮判定機構15が圧縮できると判定すると、その情報と、圧縮の参照元となる前命令のスロット番号を選択機構16に送る。なお、圧縮判定機構16の処理については、後に詳述する。選択機構16は、圧縮しない場合の機械語、並びに、圧縮可能情報とスロット番号を受け取り、圧縮可能であればスロット番号を選択し、また、圧縮不可能であれば機械語を選択して、出力命令バッファ17に格納する。圧縮/非圧縮の判定はオペレーションごとに行うため、それらの出力を蓄えるバッファが必要になる。それが、出力命令バッファ17である。ここで、1命令分の処理が終了すると、出力命令バッファ17の内容を出力バッファ18に追記する。そして、基本ブロック全ての命令の変換が終了すると、ステップST38に進んで、出力バッファ18の内容とその大きさを、前述したステップST24の分岐先アドレスの生成に出力する。図9は、図8における命令圧縮処理をより詳細に説明するためのフローチャートであり、図8のステップST37の処理を詳述するためのものである。命令圧縮処理を開始すると、出力バッファ18を初期化した後、ステップST42~ステップST48の処理を1からスロット数まで繰り返す。すなわち、ステップST43では、命令バッファ11のS番目のスロットオペレーションを圧縮判定機構14に設けられたオペレーションバッファ15に保存して、ステップST44に進む。ステップST44では、オペレーションバッファ15に保存されたオペレーションと前命令バッファ12のそれぞれのオペレーションを比較し、圧縮できるオペレーションを探す。そして、ステップST45において、圧縮できるオペレーションが見つかった場合には、ステップST46に進んで、圧縮を表す符号と継続元のスロット番号を出力命令バッファバッファ17に保存する。一方、圧縮できるオペレーションが見つからなかった場合には、ステップST47に進んで、非圧縮を表す符号とオペレーションバッファ15に保存されたオペレーションに対応する機械語を出力命令バッファバッファ17に保存する。このようにして、ステップST42~ステップST48の処理をS番目のスロットまで繰り返して終了した場合には、ステップST49に進んで、出力命令バッファバッファ17の内容を出力バッファ18に出力する。次に、圧縮判定機構14を図10および図11を参照して説明する。図10は、図7における圧縮判定機構の一例を示すブロック図であり、図11は、図10の圧縮判定機構における処理を説明するためのフローチャートである。図10に示されるように、圧縮判定機構14は、オペコード比較部21,オペランドの差分取得部22,圧縮判定テーブル23および差分比較部24を含む。ここで、圧縮判定の対象としている命令のオペレーションは、例えば、圧縮判定機構14に設けられたオペレーションバッファ15から取得し、また、前の命令のオペレーションは、前命令バッファ12から取得する。圧縮判定機構14は、現オペレーションと前オペレーションをそれぞれ比較し、圧縮が可能かどうかを判定する。ここで、圧縮が可能な場合は、例えば、次の2つの条件を満たすことで判定する。すなわち、ステップST51の現オペレーションと前オペレーションが同じ種類かどうか、並びに、ステップST52の現オペレーションと前オペレーションのオペランドの差分が種類ごとに定められている値と等しいかどうかにより判定する。従って、現オペレーションと前オペレーションが同じ種類であって、且つ、現オペレーションと前オペレーションのオペランドの差分が種類ごとに定められている値に等しい場合に、ステップST53に進んで、圧縮可能と判定する。なお、現オペレーションと前オペレーションの種類が異なる、または、現オペレーションと前オペレーションのオペランドの差分が種類ごとに定められている値とは相違する場合には、ステップST54に進んで、圧縮不可能と判定する。ただし、上述した圧縮判定方法は、単なる例であり、他の様々な圧縮判定方法を適用することも可能である。具体的に、現オペレーションと前オペレーションのオペランドの差分に関して、初めの差分は2にしておき、残りの差分は1とするといった差分の値に変化を持たせ、或いは、圧縮判定の規則をオペレーションの種類ごとに予め決めることもできる。図12は、オペランドの差分の規定値の例を示す図であり、LDオペレーション,ADDオペレーション,ADD-Iオペレーション,CMPオペレーションおよびNOPオペレーションに関する差分の規定値を示している。すなわち、図12は、圧縮判定テーブル23の例を示し、この圧縮判定テーブル23には、オペコードごとに、圧縮が可能なオペランドの差分が格納されている。例えば、LDオペレーションの場合、第1オペランドと第3オペランドのそれぞれが1だけ変化するオペレーション同士であれば圧縮可能と判定する。また、ADDオペレーションの場合、第1オペランド~第3オペランドの全てが1だけ変化するオペレーション同士であれば圧縮可能と判定する。さらに、ADD-Iオペレーションの場合、第1オペランドおよび第2オペランドは変化せず、第3オペランドが1だけ変化するオペレーション同士であれば圧縮が可能と判定する。そして、COMPオペレーションの場合、第2オペランドと第3オペランドのそれぞれが1だけ変化するオペレーション同士であれば圧縮可能と判定する。なお、NOPオペレーションのようにオペランドを持たないオペレーションの場合には、オペコードの種類が一致するだけで圧縮が可能と判定すればよい。図13は、圧縮対象のアセンブリ列の一例を示す図である。図13に示されるように、圧縮対象のアセンブリ列が、例えば、4つのスロット0~スロット3を有する命令1~命令4の場合を考える。図14は、図13のアセンブリ列に対応する圧縮しない場合の命令の長さを示す図であり、図15は、図13のアセンブリ列に対応する、本実施例の命令圧縮方法により圧縮した場合の命令の長さを示す図である。なお、図14および図15における上位2ビットの0xは、16進数であることを示すためのものである。従って、各スロットにおける非圧縮命令は、4ビット×8=32ビットとなる。まず、LDオペレーションに注目すると、図13に示されるように、命令1のスロット0ではLD1,5、命令2のスロット0ではLD2,6、命令3のスロット0ではLD3,7,命令4のスロット0ではLD4,8と変化している。なお、LDオペレーションに関しては、第1オペランドおよび第3オペランドの2つのオペランドが示されている。ここで、LDオペレーションは、図12を参照して説明したように、第1オペランドと第3オペランドのそれぞれが1だけ変化するオペレーション同士であれば圧縮可能と判定する。従って、LDオペレーションに関しては、命令2のスロット0,命令3のスロット0および命令4のスロット0で圧縮することができる。すなわち、図15に示されるように、LDオペレーションに関して、命令2のスロット0,命令3のスロット0および命令4のスロット0は、全て前の命令のスロット0を参照するため、全て100として3ビットデータに圧縮される。ここで、圧縮された3ビットデータ100において、最上位ビットが圧縮/非圧縮情報を示し、1のときは圧縮可能なオペレーションであることを示す。さらに、最上位ビットが1のとき、それに続く下位2ビットが前の命令のどのスロットのオペレーションを参照するかを示す。従って、圧縮された命令2のスロット0の100は、命令1のスロット0のオペレーションを参照することを示し、圧縮された命令3のスロット0の100は、命令2のスロット0のオペレーションを参照することを示す。さらに、圧縮された命令4のスロット0の100は、命令3のスロット0のオペレーションを参照することを示す。次に、ADD-Iオペレーションに注目すると、図13に示されるように、命令1のスロット1ではADD-I8,4,12、命令2のスロット1ではADD-I8,4,13と変化している。また、例えば、命令3のスロット2ではADD-I8,4,14、命令4のスロット2ではADD-I8,4,15と変化している。ここで、ADD-Iオペレーションは、図12を参照して説明したように、第1オペランドおよび第2オペランドは変化せず、第3オペランドが1だけ変化するオペレーション同士であれば圧縮が可能と判定する。従って、ADD-Iオペレーションに関しては、命令2のスロット1,命令3のスロット2および命令4のスロット2で圧縮することができる。すなわち、図15に示されるように、ADD-Iオペレーションに関して、命令2のスロット1,命令3のスロット2は、前の命令のスロット1を参照するため、101として圧縮され、また、命令4のスロット2は、前の命令のスロット2を参照するため、110として圧縮される。従って、圧縮された命令2のスロット1の101は、命令1のスロット2のオペレーションを参照することを示し、圧縮された命令4のスロット2の110は、命令3のスロット2のオペレーションを参照することを示す。また、ADDオペレーションに注目すると、図13に示されるように、命令1のスロット2ではADD8,9,10、命令1のスロット3ではADD4,8,0、命令2のスロット3ではADD5,9,1と変化している。ここで、ADDオペレーションは、図12を参照して説明したように、第1オペランド~第3オペランドの全てが1だけ変化するオペレーション同士であれば圧縮可能と判定する。従って、ADDオペレーションに関しては、命令2のスロット3で圧縮することができる。すなわち、図15に示されるように、ADDオペレーションに関して、命令2のスロット3は、命令1のスロット2に対しては圧縮可能と判定されないが、命令1のスロット3に対しては圧縮可能と判定され、111として圧縮される。従って、圧縮された命令2のスロット3の111は、命令1のスロット3のオペレーションを参照することを示す。さらに、CMPオペレーションに注目すると、図13に示されるように、命令3のスロット1ではCMP8,9,11、命令4のスロット1ではCMP8,10,12と変化している。ここで、CMPオペレーションは、図12を参照して説明したように、第2オペランドと第3オペランドのそれぞれが1だけ変化するオペレーション同士であれば圧縮可能と判定する。すなわち、図15に示されるように、CMPオペレーションに関して、命令4のスロット1は、前の命令のスロット1を参照するため、101として圧縮される。従って、圧縮された命令4のスロット1の101は、命令3のスロット1のオペレーションを参照することを示す。なお、NOPオペレーションは、オペコードの種類が一致するだけで圧縮可能と判定するため、図15に示されるように、命令3のスロット3で110として圧縮することができ、また、命令4のスロット3で111として圧縮することができる。このように、各スロットの最上位ビットは、圧縮/非圧縮情報を示すものであり、1のときは圧縮可能なオペレーションであることを示し、0のときは圧縮不可能なオペレーションであることを示す。そして、各スロットの最上位ビットが1のとき、それに続く下位2ビットが1つ前の命令のどのスロットのオペレーションを参照するかを示す。すなわち、下位2ビットが00のときはスロット0、01のときはスロット1、10のときはスロット3、そして、11のときはスロット4のオペレーションを参照することを示す。以上において、圧縮対象のアセンブリ列で最初に現れるオペレーション、並びに、圧縮可能となる判定条件を満たさないオペレーションは、圧縮されることなくそのまま機械語に変換される。次に、本実施例の命令圧縮方法を適用した場合と適用しない場合の命令の長さを比較する。まず、図14に示されるように、圧縮しない場合の命令1~命令4の長さは、図13のアセンブリ列をそのまま機械語に変換するため、例えば、32ビット×16=512ビットになる。すなわち、前述したように、上位2ビットの0xは、16進数であることを示すため、各スロットにおける非圧縮のオペレーションは、4ビット×8=32ビットであり、それが16スロットあるため、512ビットとなる。一方、図15に示されるように、図13のアセンブリ列に対して、上述した各オペレーションの圧縮処理を実施すると、命令1はそのままで圧縮することはできないが、命令2では、LD,ADD-IおよびADDの各オペレーションを圧縮することができる。さらに、図15に示されるように、命令3では、LD,ADD-IおよびNOPの各オペレーションを圧縮することができ、また、命令4では、LD,CMP,ADD-IおよびNOPの各オペレーションを圧縮することができる。従って、本実施例の命令圧縮方法を適用して圧縮した場合の命令1~命令4の長さは、32ビット×63ビット×10=222ビットとなり、圧縮しない場合の512ビットの半分以下に低減させることが可能になる。その結果、後述するように、圧縮された命令と処理する本実施例の演算処理装置では、小さいサイズの命令コードを適用可能とすることによって、チップ面積および消費電力を低減することができることになる。以上の説明は、1つの命令が4つのスロットを有し、圧縮対象とする命令がその直前の命令を参照する場合を説明したが、1つの命令に含まれるスロット数は4スロットに限定されるものではなく、参照する命令も直前の命令でなくてもよい。具体的に、1つの命令に含まれるスロット数が4スロットではなく8スロットの場合には、例えば、参照するスロットを指定するためのビット数が2ビットから3ビットに増えることになる。また、参照する命令が直前の命令ではなく、直前の命令とさらにその前の命令の場合には、例えば、その直前の2つの命令のどちらの命令を参照するかを指定するビットが増えることになる。このように、本実施例は、4スロットを有する命令および直前の1つの命令を参照するものに限定されず、複数のスロットを有する命令および前の命令を参照して行う命令圧縮方法、並びに、その圧縮命令を処理する演算処理装置に幅広く適用することができる。図16は、本実施例の演算処理装置が適用されるシステムの一例を示すブロック図であり、図17は、本実施例の演算処理装置の一例を示すブロック図である。図16に示されるように、本実施例の演算処理装置1は、例えば、バス4を経由して様々な外部入出力装置5と繋がれると共に、専用の配線を経由して命令メモリ2およびデータメモリ3と繋がれる。命令メモリ2は、プロセッサ1が実行するプログラムの命令を格納するメモリであり、この中には、前述のようにして圧縮された命令列が格納されている。もちろん、命令メモリ2の中には、圧縮ができない場合には、その圧縮されていない命令列も格納されている。そして、プロセッサ1は、命令メモリ2に対して命令アドレスを入力し、その命令アドレスに対応する命令を受け取る。データメモリ3は、プログラムのデータを格納する装置であり、プロセッサ1は、プログラムの命令を解析し、命令に従った動作を実行する。すなわち、プロセッサ1は、データメモリ3にデータアドレスを入力し、そのデータアドレスに対応するメモリ領域に対してデータの書き込みおよび読み出しを行う。外部入出力装置5は、このアーキテクチャの外部からの入力と出力を表し、例えば、磁気記憶装置、ネットワークインターフェース、各種センサ類およびディスプレイ等であり、形態は様々である。バス4は、プロセッサ1と上記の様々な外部入出力装置4とを接続するためのものである。なお、図16に示すプロセッサを用いたシステムは、単なる例であり、本実施例は、様々なシステムに対して幅広く適用することができるのはいうまでもない。次に、上述のようにして圧縮された命令列を解釈および実行する、すなわち、命令実行手段を備える本実施例のプロセッサを、図17を参照して説明する。図17に示されるように、プロセッサ1は、デコードユニット101,実行ユニット102,レジスタファイル103,および,ロードストアユニット104を含む。さらに、プロセッサ1は、命令長検出部105,プログラムカウンタ106,セレクタ107,および,パイプラインレジスタ181~184を含む。ここで、プロセッサ1は、パイプラインレジスタ181~184により区切られた5段のパイプラインステージを有する。この5段のパイプラインステージは、命令フェッチ,命令デコード,命令実行,メモリアクセス,および,レジスタライトバックの各ステージである。まず、命令フェッチステージでは、プログラムカウンタ106で指定されたアドレスに従って命令メモリ2から命令を読み取り、パイプラインレジスタ181を経由して命令デコードユニット101に送る。なお、1つの命令の長さは、各スロットのオペレーションが圧縮されているため、命令ごとに異なる。そこで、ILブロック105で読み取った命令の実際の長さに従って、その長さに対応させてプログラムカウンタ106の値を更新する。なお、プログラムカウンタ106の入力には、ILブロック105からの命令の実際の長さのほかに、分岐先アドレスも与えられ、これらは、セレクタ107により選択してプログラムカウンタ106に入力される。命令デコードステージでは、圧縮された命令を展開し、命令の実行に応じて必要なデータをレジスタファイル103から読み取る。この命令デコードステージの詳細は、後に詳述する。命令実行ステージでは、展開された命令を実行する。なお、プロセッサ1は、VLIWプロセッサなので、例えば、4つのオペレーションを実行可能である。また、オペレーションの内容によっては、LD/STユニット104にアクセスし、データメモリ3にリクエストを出し、或いは、プログラムカウンタ106の値を更新するといった処理を実行する。メモリアクセスステージでは、データメモリ3から読み出したデータを受け取る。そして、最後のレジスタライトバックステージでは、命令の実行結果をレジスタファイル103に格納し、命令の実行を完了する。図18は、図17におけるデコードユニットの一例を示すブロック図である。図18に示されるように、デコードユニット101は、命令分配機111,および,スロット0~スロット3に対応した複数の命令合成ブロック1120~1123を含む。さらに、デコードユニット101は、スロット0~スロット3に対応した複数の命令バッファ1130~1133,複数の命令カウンタ1140~1143,および,複数のオペレーションバッファ1150~1153を含む。命令フェッチステージから送られた命令は、命令分配機111に入力され、ここで、命令はスロットごとの圧縮オペレーションに分割される。そして、それぞれの圧縮オペレーションは、スロットごとの命令合成ブロック0~3に入力され、実行ユニットが解釈できるように命令が展開される。スロットごとの命令合成ブロック1120~1123には、それぞれ前述した圧縮オペレーションのほかに、前のサイクルで全ての命令合成ブロック1120~1123が出力したInstBUFR0~InstBUFR3およびInstCNTR0~InstCNTR3が入力される。そして、命令合成ブロック1120~1123は、圧縮オペレーションの内容に応じて、新たなInstBUFR0~InstBUFR3およびInstCNTR0~InstCNTR3、並びに、実行ユニットが解釈可能なOperationR0~OperationR3を出力する。なお、この命令合成ブロック1120~1123は、後に詳述する。ここで、InstBUFR0~InstBUFR3は、命令バッファ1130~1133に格納され、InstCNTR0~InstCNTR3は、命令カウンタ1140~1143に格納され、そして、OperationR0~OperationR3は、オペレーションバッファ1150~1153に格納される。すなわち、命令バッファ1130~1133は、オペレーションを展開する元となるオペレーションInstBUFR0~InstBUFR3を格納する。本実施例では、元となるオペレーションを、オペレーションの種類ごとに決まった規則で変化させ、オペランドが異なるオペレーションの系列を作成する。従って、InstBUFR0~InstBUFR3には、その系列の初めのオペレーションが格納される。命令カウンタ1140~1143は、オペレーションが変化する系列のうち、現在展開するオペレーションが何番目にあるのかを示すInstCNTR0~InstCNTR3を格納する。この値は、例えば、初めのオペレーションの次のオペレーションについては1となる。命令バッファ1130~1133に格納されたInstBUFR0~InstBUFR3および命令カウンタ1140~1143に格納されたInstCNTR0~InstCNTR3は、パイプラインレジスタ182を経由して後段の命令実行ステージに送られる。このようにすることで、例外が起きたときに、その例外が発生したステージのInstBUFRおよびInstCNTRを保存し、復帰する時にそれらの値も復帰させることにより、基本ブロックの途中からでも命令の実行を再開することが可能になる。図19は、図18における命令合成ブロックの一例を示すブロック図である。図19に示されるように、命令合成ブロック112は、セレクタ201~205,合成部206,零設定部207,および,1加算部208を含む。ここで、命令合成ブロック112は、命令分配機111から各スロットに与えられるオペレーションが、圧縮オペレーションか否かにより処理の内容が変わる。なお、圧縮オペレーションであるか否かは、オペレーションの最初の位置で判定する。具体的に、各スロットの最上位ビットが0であれば、圧縮されていないと判定し、逆に、各スロットの最上位ビットが1であれば、圧縮されていると判定する。また、前に図15を参照して詳述したように、各スロットの最上位ビットが1のとき、圧縮された3ビットのデータにおける最上位ビットに続く下位2ビットが1つ前の命令のどのスロットのオペレーションを参照するかを指定する。具体的に、1つの命令が4つのスロット0~スロット3を含む場合、下位2ビットが00のときはスロット0、01のときはスロット1、10のときはスロット3、そして、11のときはスロット4のオペレーションを参照する。まず、オペレーションが圧縮されていない場合、命令合成ブロック112から出力されるInstBUFR,InstCNTRおよびOperationRは、次のように処理して求められる。すなわち、オペレーションが圧縮されていない場合、OperationRは、入力オペレーションの圧縮ビットを除いた部分、InstBUFRは、入力オペレーションの圧縮ビットを除いた部分、そして、InstCNTRは1となる。次に、オペレーションが圧縮されている場合、入力側のそれぞれ4つのInstBUFR0~InstBUFR3およびInstCNTR0~InstCNTR3から1つずつ選択し、それらから命令を合成する。すなわち、オペレーションが圧縮されている場合、セレクタ201によりInstBUFR0~InstBUFR3のうち、圧縮された3ビットのデータにおける下位2ビットにより指定された1つ前の命令のスロットのオペレーションを選択して出力する。さらに、オペレーションが圧縮されている場合、セレクタ202によりInstCNTR0~InstCNTR3のうち、圧縮された3ビットのデータにおける下位2ビットにより指定された1つ前の命令のスロットのオペレーションを選択して出力する。このように、オペレーションが圧縮されている場合には、入力オペレーションのビットにおける下位2ビットの値をキーにしてセレクタ201および202で選択し、それらを合成部206で合成する。合成部206は、セレクタ201および202で選択された圧縮オペレーションのInstBUFRおよびInstCNTRを受け取り、前述した図12に示すオペランドの差分の規定値に従ってオペレーションを合成してセレクタ204に出力する。すなわち、図12には、オペランドの差分が示されているため、それらとInstCNTRとの積を合成後のオペレーションのオペランドの差分とし、InstBUFRのオペランドに加算することでオペレーションの合成を行うことができる。ここで、カウンタの情報を持つことにより、特定の回数にあるオペレーションのみ差分を変えるといった実装も可能である。セレクタ205は、初期値として零設定部207からの値0を選択し、それ以降は、セレクタ202の出力を選択して、1加算部208に出力する。1加算部208では、入力された値に対して1だけインクリメントし、InstCNTRとして出力する。図20は、図18および図19を参照して説明したにおけるデコードユニットによるスロット3の動作を説明するための図である。すなわち、図20は、入力されたオペレーションのバイナリ列と、その命令を展開した後のInstBUFR3,InstCNTR3およびOperationR3の値を表している。具体的に、図20は、図15におけるスロット3のオペレーションが与えられた場合におけるデコードユニット101の動作を説明するためのものである。なお、他のスロットの動作も本質的に変わらないため、スロット3のみを説明する。図15および図20に示されるように、命令1のスロット3では、非圧縮のオペレーション0x02040800が入力されるため、InstBUFR3およびOperationR3には、入力されたオペレーションの圧縮ビットを除いた部分がそのまま入る。ここで、InstCNTR3には1が入る。次に、命令2のスロット3では、圧縮されたオペレーション111が入力される。すなわち、最上位ビットの1により圧縮されていることが分かる。また、この圧縮された3ビットデータ111の下位2ビット11により指定スロットがスロット3であることが分かる。従って、スロット3のInstBUFR3とInstCNTR3から命令を生成する。図20に示されるように、命令のオペコードは0x02であり、ADDオペレーションであることが分かる。また、図12から、ADDオペレーションのオペランド差分の規定値は1,1,1なので、それぞれのオペランドに1加算して0x02050901のOperationR3を得る。命令3のスロット3では、圧縮されたオペレーション110が入力されるが、下位2ビットが10なので、指定スロットはスロット2となる。従って、スロット2からオペレーションを生成する。ここで、スロット2には、NOPオペレーションがあるため、このNOPオペレーションから次のオペレーションを生成する。ただし、NOPオペレーションはオペランドを持たないため、同じオペレーションが続くことになる。なお、カウンタの値は、スロット2での値を継承して2となる。最後の命令4のスロット3も、圧縮されたオペレーション111が入力されるが、下位2ビットが11なので、指定スロットは、スロット3となる。従って、前のNOPオペレーションをそのまま生成する。なお、カウンタの値は、1インクリメントして3となる。以上のようにして、命令を順に展開して、実行する。図21は、図17におけるデコードユニットの他の例を示すブロック図である。前述した図18のデコードユニット101では、圧縮された命令を展開するために、InstBUFRおよびInstCNTRの2つの情報を使用していた。これに対して、図21に示すデコードユニット101’では、これら2つの情報InstBUFRおよびInstCNTRを不要としている。すなわち、2つの情報を削減することでオペランドの差分が固定になってしまうが、図21に示すデコードユニット101’では、使用する命令バッファ1130~1133および命令カウンタ1140~1143を削減することができる。これにより、回路の占有面積を低減することが可能になる。なお、プロセッサ1およびその周辺回路は、前述した図18のデコードユニット101を適用する場合と同様であるが、図17を参照した命令デコードステージが異なっている。すなわち、図21に示されるように、デコードユニット101’は、命令分配機111,命令合成ブロック1120~1123,および,オペレーションバッファ1150~1153を含む。命令フェッチステージから送られた命令は、命令分配機111に入力され、ここで、命令はスロットごとの圧縮オペレーションに分割される。そして、それぞれの圧縮オペレーションは、スロットごとの命令合成ブロック0~3に入力され、実行ユニットが解釈できるように命令が展開される。スロットごとの命令合成ブロック1120~1123には、それぞれ前述した圧縮オペレーションのほかに、前のサイクルで全ての命令合成ブロック1120~1123が出力したOperationR0~OperationR3が入力される。すなわち、命令合成ブロック1120~1123は、入力されたオペレーションと展開されたオペレーションから、次に実行すべきオペレーションを得るようになっている。図22は、図21における命令合成ブロックの一例を示すブロック図である。図22に示されるように、命令合成ブロック112’は、セレクタ201,204および合成部209を含む。ここで、命令合成ブロック112’は、命令分配機111から各スロットに与えられるオペレーションが、圧縮オペレーションか否かにより処理の内容が変わるのは、図19を参照して説明した命令合成ブロック112と同様である。すなわち、オペレーションが圧縮されていなければ、入力されたオペレーションをセレクタ204で選択してそのまま出力する。また、オペレーションが圧縮されていれば、前のサイクルで出力したオペレーションを命令圧縮コードから選択し、図12のように、オペレーションの種類ごとに予め定められているオペランドの差分を加算してオペレーションを出力する。図23は、図21および図22を参照して説明したにおけるデコードユニットによるスロット3の動作を説明するための図である。すなわち、図23は、入力されたオペレーションのバイナリ列と、その命令を展開した後のOperationR3の値を表している。具体的に、図23は、図15におけるスロット3のオペレーションが与えられた場合におけるデコードユニット101の動作を説明するためのものである。なお、他のスロットの動作も本質的に変わらないため、スロット3のみを説明する。図15および図23に示されるように、命令1のスロット3では、非圧縮のオペレーション0x02040800が入力されるため、OperationR3には、入力されたオペレーションの圧縮ビットを除いた部分がそのまま入る。次に、命令2のスロット3では、圧縮されたオペレーション111が入力される。すなわち、最上位ビットの1により圧縮されていることが分かり、また、下位2ビット11により指定スロットがスロット3であることが分かる。従って、スロット3のOperationR3から命令を生成する。図23に示されるように、命令のオペコードは0x02であり、ADDオペレーションであることが分かる。また、図12から、ADDオペレーションのオペランド差分の規定値は1,1,1なので、それぞれのオペランドに1加算して0x02050901のOperationR3を得る。命令3のスロット3では、圧縮されたオペレーション110が入力されるが、下位2ビットが10なので、指定スロットはスロット2となる。従って、スロット2からオペレーションを生成する。ここで、スロット2には、NOPオペレーションがあるため、このNOPオペレーションから次のオペレーションを生成する。ただし、NOPオペレーションはオペランドを持たないため、同じオペレーションが続くことになる。なお、カウンタの値は、スロット2での値を継承して2となる。最後の命令4のスロット3も、圧縮されたオペレーション111が入力されるが、下位2ビットが11なので、指定スロットは、スロット3となる。従って、前のNOPオペレーションをそのまま生成する。以上のようにして、命令を順に展開して、実行する。以上のように、本実施例の演算処理装置によれば、小さいサイズの命令コードを適用可能とすることによって、チップ面積および消費電力を低減することができる。図24は、本実施例の命令圧縮プログラムを実行するコンピュータの一例を示す図である。図24において、参照符号310は処理装置、320はプログラム提供者、そして、330は可搬型記録媒体を示している。本実施例は、例えば、図24に示すようなコンピュータ310に対するプログラムとして与えられ、コンピュータ310により実行される。コンピュータ310は、プロセッサを含むコンピュータ本体311、および、コンピュータ本体311に対してプログラムを与え或いは処理された結果を格納するメモリやハードディスク312等を備える。コンピュータ310に提供されたプログラムは、ローディングされてコンピュータ310のメインメモリ上で実行される。プログラム提供者320は、プログラムを格納する手段321を有し、例えば、インターネット等の回線を介してプログラムをコンピュータ310に提供する。或いは、CD-ROMやDVD等の光ディスクまたは磁気ディスクや磁気テープといった可搬型記録媒体330を介してコンピュータ310に提供する。本実施例の命令圧縮プログラムを記録した媒体は、コンピュータ310側のメモリ312、回線先メモリ321、および、可搬型記録媒体330等の様々なものを含むのはいうまでもない。以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。付記1複数のスロットを有する命令を処理する演算処理装置であって、前記各スロットには、それぞれオペレーションと当該オペレーションの圧縮/非圧縮情報を含むデータが格納され、前記演算処理装置は、第1命令の第1スロットに格納された第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、圧縮された前記第1オペレーションのデータに従って、前記第1命令よりも前の第2命令における第2スロットのオペレーションを参照し、前記第1オペレーションを合成するデコードユニットを有する、ことを特徴とする演算処理装置。付記2さらに、前記第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、前記デコードユニットにより合成された前記第1オペレーションのデータを選択し、前記第1オペレーションの圧縮/非圧縮情報が非圧縮を示す場合、非圧縮の前記第1オペレーションのデータを選択するセレクタを有する、ことを特徴とする付記1に記載の演算処理装置。付記3前記第2命令は、前記第1命令の1つ前の命令である、ことを特徴とする付記1または付記2に記載の演算処理装置。付記4前記オペレーションの圧縮/非圧縮情報は、対応する前記各スロットの先頭の位置に格納されている、ことを特徴とする付記1乃至付記3のいずれか1項に記載の演算処理装置。付記5前記デコードユニットは、前記複数のスロットを有する命令を受け取って、前記各スロットに格納されたオペレーションを分配する命令分配機と、前記各スロットに対して設けられ、該各スロットに格納されたオペレーションが圧縮されているときに、当該スロットのオペレーションを合成する複数の命令合成ブロックと、を有する、ことを特徴とする付記1乃至付記4のいずれか1項に記載の演算処理装置。付記6前記デコードユニットは、さらに、前記各スロットに対してそれぞれ設けられた複数の命令バッファ,複数の命令カウンタおよび複数のオペレーションバッファを有し、前記各命令合成ブロックは、前記複数の命令バッファの出力および前記複数の命令カウンタの出力を受け取ってオペレーションの合成を行う、ことを特徴とする付記5に記載の演算処理装置。付記7前記命令合成ブロックは、前記第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、前記第2命令における第2スロットの命令バッファおよび命令カウンタの情報を、前記第1スロットの命令バッファおよび命令カウンタにコピーし、それらの情報から前記第1オペレーションを合成し、次の命令を合成するために前記第1スロットの命令カウンタの値をインクリメントする、ことを特徴とする付記6に記載の演算処理装置。付記8前記デコードユニットは、さらに、前記各スロットに対してそれぞれ設けられた複数のオペレーションバッファを有し、前記各命令合成ブロックは、前記複数のオペレーションバッファの出力を受け取ってオペレーションの合成を行う、ことを特徴とする付記5に記載の演算処理装置。付記9前記命令合成ブロックは、前記第1オペレーションの圧縮/非圧縮情報が圧縮を示す場合、前記第2命令における第2スロットのオペレーションバッファの情報を、前記第1スロットのオペレーションバッファに設定して前記第1オペレーションを合成する、ことを特徴とする付記8に記載の演算処理装置。付記10前記命令合成ブロックによる圧縮されたオペレーションの合成は、オペレーションの種類ごとに決まった規則に従って行う、ことを特徴とする付記5乃至付記9のいずれか1項に記載の演算処理装置。付記11前記演算処理装置は、VLIW方式のプロセッサである、ことを特徴とする付記1乃至付記10のいずれか1項に記載の演算処理装置。付記12複数のスロットを有する命令を圧縮する命令圧縮方法であって、圧縮対象としている第1命令の第1オペレーションと、当該第1オペレーションよりも前の第2命令の第2オペレーションを比較し、前記第1オペレーションと前記第2オペレーションが同じ種類であり、且つ、前記第1オペレーションと前記第2オペレーションのオペランドの差分が種類ごとに定められている値と等しいときに、前記第1オペレーションを圧縮する、ことを特徴とする命令圧縮方法。付記13前記第1オペレーションを圧縮するとき、対応するスロットの最初の位置に当該第1オペレーションの圧縮/非圧縮情報を格納すると共に、それに続く後続位置に前記第2オペレーションに対応する第2スロットの情報を格納する、ことを特徴とする付記12に記載の命令圧縮方法。付記14前記第2命令は、前記第1命令の1つ前の命令である、ことを特徴とする付記12または付記13に記載の命令圧縮方法。付記15複数のスロットを有する命令を圧縮する命令圧縮プログラムであって、コンピュータに、圧縮対象としている第1命令の第1オペレーションと、当該第1オペレーションよりも前の第2命令の第2オペレーションを比較する手順と、前記第1オペレーションと前記第2オペレーションが同じ種類であり、且つ、前記第1オペレーションと前記第2オペレーションのオペランドの差分が種類ごとに定められている値と等しいときに、前記第1オペレーションを圧縮する手順と、を実行させることを特徴とする命令圧縮プログラム。"