(57)【要約】【課題】分岐命令の分岐先の命令を圧縮可能にする。【解決手段】圧縮プログラムを実行する情報処理装置（１０Ａ）は、命令バッファ（３０１）と、命令バッファ（３０１）の出力を分割したものから一つを出力するセレクタ（３０２）と、セレクタ（３０２）の出力から元の命令を伸長する命令伸長部（３０４）と、命令バッファ（３０１）に圧縮された命令が格納されていないとき、命令バッファ（３０１）の出力を、それ以外のとき、命令伸長部（３０４）の出力をそれぞれ出力するセレクタ（３０３）と、セレクタ（３０３）の出力のデコード結果に基づいて命令分岐の発生の有無を示す信号（Ｓ２）を出力する命令デコード部（３０５）と、信号（Ｓ２）によって命令分岐の発生が示されているとき、セレクタ（３０２）に対して、複数の入力信号の中から所定のものを選択するように指示する制御部（３０６）とを備えている。【選択図】図１
2007226615.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されている圧縮された命令を含む圧縮プログラムを実行する情報処理装置であって、
前記メモリから読み出された所定ビット長の信号を一時的に格納するための命令バッファと、
前記命令バッファから信号を受け、当該信号を所定ビット長単位で分割したものの中からいずれか一つを選択的に出力する第１のセレクタと、
前記第１のセレクタから信号を受け、当該信号によって表される元の命令を伸長する命令伸長部と、
前記命令バッファ及び前記命令伸長部からそれぞれ信号を受け、前記命令バッファに圧縮された命令が格納されていないとき、前者を出力する一方、前記命令バッファに圧縮された命令が格納されているとき、後者を出力する第２のセレクタと、
前記第２のセレクタから信号を受け、当該信号をデコードし、当該デコードの結果に基づいて、命令分岐の発生の有無を示す第１の信号を出力する命令デコード部と、
前記第１の信号を受け、前記第１の信号によって命令分岐の発生が示されているとき、前記第１のセレクタに対して、前記複数の入力信号の中から所定のものを選択するように指示する制御部とを備えた
ことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記圧縮プログラムの各命令ビットフィールドの所定箇所には、当該命令ビットフィールドに圧縮された命令が格納されているか否かを示す識別子が記録されており、
前記命令バッファは、前記識別子に基づいて、圧縮された命令を格納している否かを示す第２の信号を出力するものであり、
前記第２のセレクタは、前記第２の信号に基づいて、前記二つの入力信号のいずれか一方を選択するものである
ことを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置において、
前記圧縮プログラムの各命令ビットフィールドの所定箇所には、当該命令ビットフィールドに圧縮された命令が格納されているか否かを示す識別子が付加されており、
前記命令バッファは、前記識別子に基づいて、圧縮された命令を格納している否かを示す第２の信号を出力するものであり、
前記制御部は、前記第２の信号を受け、前記第２のセレクタに対して、前記第２の信号が前記命令バッファに圧縮された命令が含まれていないことを示しているとき、前記命令バッファからの信号を選択するように指示する一方、前記第２の信号が前記命令バッファに圧縮された命令が含まれていることを示しているとき、前記命令伸長部からの信号を選択するように指示するものである
ことを特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置において、
前記圧縮プログラムにおける分岐命令の命令ビットフィールドの所定箇所には、分岐先の命令を格納する命令ビットフィールドにおける当該分岐先の命令の格納位置を示す情報が付加されており、
前記命令デコード部は、前記分岐命令を表す信号をデコードしたとき、前記情報に基づいて、前記分岐命令の分岐先を前記第１の信号として出力するものであり、
前記制御部は、前記第１のセレクタに対して、前記複数の入力信号の中から、前記第１の信号によって示された分岐先に対応するものを選択するように指示するものである
ことを特徴とする情報処理装置。
【請求項５】
原プログラムに含まれる命令を圧縮して圧縮プログラムを生成する方法であって、
前記原プログラムを順次スキャンして、前記原プログラムの中から連続所定個の圧縮対象命令を選択するステップと、
前記選択された連続所定個の圧縮対象命令のうち所定番目以外のものに分岐先を示すラベルが付与されているか否かを判定するステップと、
前記ラベルが付与されていることが判定されたとき、前記圧縮プログラムにおける一つの命令ビットフィールドに、前記選択された連続所定個の圧縮対象命令のうち先頭のものを圧縮せずに格納する一方、前記ラベルが付与されていないことが判定されたとき、前記命令ビットフィードに、前記選択された連続所定個の圧縮対象命令のそれぞれを圧縮して格納するステップと、
前記圧縮プログラムにおける各命令ビットフィールドの所定箇所に、当該命令ビットフィールドに圧縮された命令が含まれているか否かを示す情報を付加するステップとを備えた
ことを特徴とする圧縮プログラム生成方法。
【請求項６】
原プログラムに含まれる命令を圧縮して圧縮プログラムを生成する方法であって、
前記原プログラムを順次スキャンして、前記原プログラムの中から連続所定個の圧縮対象命令を選択するステップと、
前記選択された連続所定個の圧縮対象命令のそれぞれを圧縮して前記圧縮プログラムにおける一つの命令ビットフィールドに格納するステップと、
前記圧縮プログラムにおける各命令ビットフィールドの所定箇所に、当該命令ビットフィールドに圧縮された命令が含まれているか否かを示す情報を付加するステップと、
前記圧縮プログラムを読み込んで、分岐命令の分岐先の命令を格納する命令ビットフィールドにおける当該分岐先の命令の格納位置を求めるステップと、
前記分岐命令が格納された命令ビットフィールドの所定箇所に、前記分岐先の命令の格納位置を示す情報を付加するステップとを備えた
ことを特徴とする圧縮プログラム生成方法。
【請求項７】
請求項５に記載の圧縮プログラム生成方法を実施する圧縮プログラム生成装置と、
請求項１に記載の情報処理装置とを備えた
ことを特徴とする情報処理システム。
【請求項８】
請求項６に記載の圧縮プログラム生成方法を実施する圧縮プログラム生成装置と、
請求項４に記載の情報処理装置とを備えた
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関し、特に、圧縮された命令を実行する情報処理装置及びそのような圧縮プログラムの生成技術に関する。
【背景技術】
【０００２】
メモリに格納されたプログラムを順次実行する情報処理システムでは、メモリサイズ削減のために命令を圧縮状態でメモリに格納しておき、命令実行時に、圧縮された命令を元の命令に伸長することが行われている。圧縮方式としては、ハフマン符号化を用いた方式や高速処理をするためのテーブル変換方式などが提案されている。
【０００３】
このうちテーブル変換方式によると、圧縮対象の命令として、例えば、使用頻度の高い命令には所定の命令ビット長よりも短いビット長が割り当てられ、テーブルによって当該命令の圧縮前後のビット情報が関連付けられて管理される。すなわち、当該命令は圧縮された状態でメモリに格納され、実行時に上記テーブルを参照して元の命令に伸長される。これにより、プログラムを格納するメモリのサイズ削減を図っている。
【０００４】
従来、テーブル変換方式において、命令の圧縮率を向上させるために、一つの命令についての使用頻度ではなく連続する複数（二つ）の命令の使用頻度を考慮して圧縮対象の命令を選出することが行われている（例えば、特許文献１参照）。
【特許文献１】特開２０００―２６７８４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
プログラム圧縮に関してすべての命令が圧縮対象となるわけではない。特に、分岐命令の分岐先に当たる命令は単純に圧縮することはできない。通常、圧縮された命令は圧縮プログラムにおける一つの命令ビットフィールドに複数個まとめて格納されているが、これら命令の中に分岐命令の分岐先が含まれる場合、どの命令にジャンプすべきか判断することができなくなってしまう。したがって、分岐先を示すラベル（以下、分岐ラベルとも称する。）が付与された命令は、たとえ圧縮対象であっても圧縮せずにメモリに格納する必要がある。このため、特に、分岐ラベルが付与された命令を多く含むプログラムについては、圧縮率を上げにくいという問題がある。
【０００６】
上記問題に鑑み、本発明は、圧縮プログラムを生成してこれを実行する情報処理システムにおいて、分岐命令の分岐先の命令を圧縮可能にすることを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明が講じた手段は、メモリに格納されている圧縮された命令を含む圧縮プログラムを実行する情報処理装置として、メモリから読み出された所定ビット長の信号を一時的に格納するための命令バッファと、命令バッファから信号を受け、この信号を所定ビット長単位で分割したものの中からいずれか一つを選択的に出力する第１のセレクタと、第１のセレクタから信号を受け、この信号によって表される元の命令を伸長する命令伸長部と、命令バッファ及び命令伸長部からそれぞれ信号を受け、命令バッファに圧縮された命令が格納されていないとき、前者を出力する一方、命令バッファに圧縮された命令が格納されているとき、後者を出力する第２のセレクタと、第２のセレクタから信号を受け、この信号をデコードし、このデコードの結果に基づいて、命令分岐の発生の有無を示す第１の信号を出力する命令デコード部と、第１の信号を受け、第１の信号によって命令分岐の発生が示されているとき、第１のセレクタに対して、複数の入力信号の中から所定のものを選択するように指示する制御部とを備えたものとする。
【０００８】
これによると、命令デコード部によって命令分岐の発生が検出された場合において、命令バッファに圧縮された命令が格納されているとき、第１のセレクタに入力された複数の信号の中から所定のものが選択され、命令伸長部によって元の命令に伸長され、この伸長された命令が分岐先の命令として第２のセレクタを経由して命令デコード部に与えられる。したがって、圧縮プログラムにおいて分岐先の命令を圧縮格納することが可能となる。
【０００９】
具体的には、上記の情報処理装置において、圧縮プログラムの各命令ビットフィールドの所定箇所には、その命令ビットフィールドに圧縮された命令が格納されているか否かを示す識別子が記録されており、命令バッファは、この識別子に基づいて、圧縮された命令を格納している否かを示す第２の信号を出力するものであり、第２のセレクタは、第２の信号に基づいて、二つの入力信号のいずれか一方を選択するものである。
【００１０】
また、具体的には、上記の情報処理装置において、圧縮プログラムの各命令ビットフィールドの所定箇所には、その命令ビットフィールドに圧縮された命令が格納されているか否かを示す識別子が付加されており、命令バッファは、この識別子に基づいて、圧縮された命令を格納している否かを示す第２の信号を出力するものであり、制御部は、第２の信号を受け、第２のセレクタに対して、第２の信号が命令バッファに圧縮された命令が含まれていないことを示しているとき、命令バッファからの信号を選択するように指示する一方、第２の信号が命令バッファに圧縮された命令が含まれていることを示しているとき、命令伸長部からの信号を選択するように指示するものである。
【００１１】
また、好ましくは、上記の情報処理装置において、圧縮プログラムにおける分岐命令の命令ビットフィールドの所定箇所には、分岐先の命令を格納する命令ビットフィールドにおけるその分岐先の命令の格納位置を示す情報が付加されており、命令デコード部は、分岐命令を表す信号をデコードしたとき、上記の情報に基づいて、分岐命令の分岐先を第１の信号として出力するものであり、制御部は、第１のセレクタに対して、複数の入力信号の中から、第１の信号によって示された分岐先に対応するものを選択するように指示するものである。
【００１２】
これによると、たとえ分岐命令の分岐先の命令の格納位置を示す情報に基づいて、所望の命令にジャンプすることができる。したがって、分岐先の命令の圧縮に係る制約が緩和され、命令の圧縮率を向上することができる。
【００１３】
一方、本発明が講じた手段は、原プログラムに含まれる命令を圧縮して圧縮プログラムを生成する方法として、原プログラムを順次スキャンして、原プログラムの中から連続所定個の圧縮対象命令を選択するステップと、選択された連続所定個の圧縮対象命令のうち所定番目以外のものに分岐先を示すラベルが付与されているか否かを判定するステップと、ラベルが付与されていることが判定されたとき、圧縮プログラムにおける一つの命令ビットフィールドに、選択された連続所定個の圧縮対象命令のうち先頭のものを圧縮せずに格納する一方、ラベルが付与されていないことが判定されたとき、命令ビットフィードに、選択された連続所定個の圧縮対象命令のそれぞれを圧縮して格納するステップと、圧縮プログラムにおける各命令ビットフィールドの所定箇所に、その命令ビットフィールドに圧縮された命令が含まれているか否かを示す情報を付加するステップとを備えたものとする。
【００１４】
これによると、原プログラムにおける連続所定個の命令であって、その所定番目以外に分岐先を示すラベルが付与されていないものについては、圧縮プログラムにおける一つの命令ビットフィールドに圧縮格納されるため、分岐先の命令をメモリに圧縮して格納することができる。また、圧縮プログラムにおける各命令ビットフィールドの所定箇所には、その命令ビットフィールドに圧縮された命令が含まれているか否かを示す情報が付加されるため、当該圧縮プログラムを実行する情報処理装置において、メモリから読み出した命令が圧縮されているか否かの判定が容易となる。
【００１５】
また、本発明が講じた手段は、原プログラムに含まれる命令を圧縮して圧縮プログラムを生成する方法として、原プログラムを順次スキャンして、原プログラムの中から連続所定個の圧縮対象命令を選択するステップと、選択された連続所定個の圧縮対象命令のそれぞれを圧縮して圧縮プログラムにおける一つの命令ビットフィールドに格納するステップと、圧縮プログラムにおける各命令ビットフィールドの所定箇所に、その命令ビットフィールドに圧縮された命令が含まれているか否かを示す情報を付加するステップと、圧縮プログラムを読み込んで、分岐命令の分岐先の命令を格納する命令ビットフィールドにおけるその分岐先の命令の格納位置を求めるステップと、分岐命令が格納された命令ビットフィールドの所定箇所に、分岐先の命令の格納位置を示す情報を付加するステップとを備えたものとする。
【００１６】
これによると、分岐命令を格納する命令ビットフィールドの所定箇所に、分岐先の命令が格納された命令ビットフィールドにおける当該分岐先の命令の格納位置が付加される。したがって、特に制約なく分岐先の命令を圧縮することができ、圧縮率がより向上する。
【発明の効果】
【００１７】
以上のように本発明によると、分岐命令の分岐先の命令までもが圧縮可能となるため、原プログラムの圧縮率を向上することができ、圧縮プログラムを格納するためのメモリのサイズを削減することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。なお、以下に示す実施形態はあくまでも一例であって、本発明は必ずしも以下の実施形態に限定されるものではない。
【００１９】
（第１の実施形態）
図１は、第１の実施形態に係る情報処理システムの構成を示す。本情報処理システムは、原プログラムに含まれる命令を圧縮して圧縮プログラムを生成する圧縮プログラム生成装置１０Ａ、及び圧縮プログラムを実行する情報処理装置３０Ａから構成される。
【００２０】
圧縮プログラム生成装置１０Ａは、圧縮対象選択手段１０１、分岐ラベル判定手段１０２、命令圧縮格納手段１０３、及び圧縮識別子付加手段１０４を備えている。圧縮対象選択手段１０１は、入力された原プログラムを順次スキャンし、連続するＮ（Ｎは２以上の正数）個の圧縮対象命令を選択する。分岐ラベル判定手段１０２は、選択された連続Ｎ個の圧縮対象命令のうち２番目以降のいずれかに分岐ラベルが付与されているか否かを判定する。命令圧縮格納手段１０３は、分岐ラベルが付与されていることが判定されたとき、圧縮プログラムにおける一つの命令ビットフィールドに、選択された連続Ｎ個の圧縮対象命令のうち先頭のものを圧縮せずに格納する。一方、命令圧縮格納手段１０３は、分岐ラベルが付与されていないことが判定されたとき、圧縮プログラムにおける一つの命令ビットフィールドに、選択された連続Ｎ個の圧縮対象命令を圧縮して格納する。圧縮識別子付加手段１０４は、圧縮プログラムにおける各命令ビットフィールドの所定箇所に、圧縮された命令が含まれているか否かを示す情報（以下、圧縮識別子とも称する。）を付加する。
【００２１】
図２のフローチャートを参照しながら、圧縮プログラム生成装置１０Ａによる圧縮プログラムの生成手順について説明する。まず、ステップＳ１０１において、原プログラムの処理開始位置としてＭ＝１が設定される。続くステップＳ１０２では、原プログラムにおけるＭ番目から連続Ｎ個の命令、すなわち、Ｍ＋Ｎ−１番目のまでの命令が選択される。ここで、Ｎは圧縮プログラムにおける一つの命令ビットフィールドに圧縮して格納可能な命令の数であり、２以上の整数である。続くステップＳ１０３で、選択された命令がすべて圧縮対象命令であるか否かが判定される。具体的には、選択された各命令が上述したテーブル中に存在するか否かで当該命令が圧縮対象か否かを判定することができる。選択された命令がすべて圧縮対象命令である場合、ステップＳ１０４に進み、Ｍ＋１番目以降の命令について分岐ラベルが付与されているか否かが検査される。分岐ラベルが付与されていないことが検出された場合（ステップＳ１０５のＮＯ肢）、ステップＳ１０６で、選択された連続Ｎ個の命令が、圧縮プログラムの一つの命令ビットフィールドに圧縮格納される。その後、Ｍの値をＭ＋Ｎに更新し（ステップＳ１０７）、ステップＳ１０８で、圧縮された命令が格納されていることを示す圧縮識別子が圧縮プログラムの命令ビットフィールド中の所定箇所に付加される。続くステップＳ１０９で、原プログラムの処理がすべて終了したか否かが判定され、終了していない場合にはステップＳ１０２に戻り、終了した場合には圧縮プログラム生成処理は終了する。
【００２２】
一方、ステップＳ１０２で選択された命令の中に圧縮対象ではない命令が含まれている場合、ステップＳ１０３のＮＯ肢に進み、ステップＳ１１０で、Ｍ番目の命令が圧縮されずに圧縮プログラムの一つの命令ビットフィールドに格納される。その後、Ｍの値をインクリメントして（ステップＳ１１１）、ステップＳ１０８に進む。この場合、ステップＳ１０８では、Ｍ番目の命令が格納された命令ビットフィールド中の所定箇所に、圧縮された命令が格納されていないことを示す圧縮識別子が付加される。
【００２３】
また、ステップＳ１０４での検査の結果、Ｍ＋１番目以降の命令に分岐ラベルが付与されていることが検出された場合（ステップＳ１０５のＹＥＳ肢）、ステップＳ１１０に進み、Ｍ番目の命令が圧縮されずに圧縮プログラムに格納される。このように、圧縮対象命令がＮ個連続するにもかかわらずこれらを圧縮しない理由は、当該圧縮プログラム生成方法では、当該圧縮プログラムを実行する情報処理装置において命令が分岐するときに、その分岐先が圧縮されている場合には命令ビットフィールドの先頭に格納された命令、すなわち、当該命令ビットフィールドに圧縮格納された命令が元の命令に伸長された場合に最初に実行される命令にジャンプすることを前提としており、Ｍ＋１番目以降の命令にはジャンプできないからである。
【００２４】
なお、圧縮プログラムを実行する情報処理装置において命令が分岐するときに、圧縮プログラムにおける命令ビットフィールドの１以外の所定番目に圧縮された命令にジャンプすることを前提とする場合、ステップＳ１０４を、ステップＳ１０２で選択されたＭ番目からＭ＋Ｎ−１番目までの命令のうち当該所定番目の命令以外のものに分岐ラベルが付与されているか否かを検査するように変更すればよい。
【００２５】
図３は、原プログラム及びこれから圧縮プログラム生成装置１０Ａによって生成された圧縮プログラムの例を示す。なお、原プログラム中の連続する２個の命令が圧縮されるものとして説明する。まず、原プログラム中の命令１及び命令２が選択され、これら命令はいずれも圧縮対象命令であり、かつ、命令２には分岐ラベルが付与されていないことから、これら命令は圧縮され、圧縮プログラムにおける一つの命令ビットフィールドに圧縮命令１及び圧縮命令２としてそれぞれ格納される。そして、圧縮プログラムにおける命令ビットフィールドのＭＳＢには圧縮識別子として例えば“１”が設定される。また、原プログラム中で命令１に付与されていた分岐ラベルＬＡＢＥＬ１は、圧縮プログラムにおいて圧縮命令１を含む命令ビットフィールドに対して付与される。続いて原プログラム中の命令３及び命令４が選択され、これら命令は、圧縮プログラムの一つの命令ビットフィールドに圧縮命令３及び圧縮命令４としてそれぞれ格納される。
【００２６】
次に、原プログラム中の命令５及び命令６が選択される。これら命令はいずれも圧縮対象命令ではあるが命令６に分岐ラベルＬＡＢＥＬ３が付与されていることから、これら命令は圧縮されずに圧縮プログラムに格納される。すなわち、命令５及び命令６は、それぞれ、非圧縮命令５及び非圧縮命令６として、圧縮プログラムにおける異なる命令ビットフィールドに格納される。なお、これら非圧縮命令５及び非圧縮命令６については、命令ビットフィールドのＭＳＢに圧縮識別子として例えば“０”が設定されるとともに分岐ラベルＬＡＢＥＬ２及びＬＡＢＥＬ３がそれぞれ付与される。原プログラム中の分岐命令は圧縮されずに圧縮プログラムに格納される。分岐命令中の分岐先アドレスを示すオフセット（本例では分岐ラベルＬＡＢＥＬ１，ＬＡＢＥＬ２及びＬＡＢＥＬ３）は、圧縮プログラム生成後に再計算され、設定される。
【００２７】
図１に戻り、情報処理装置３０Ａについて説明する。情報処理装置３０Ａは、圧縮プログラムを格納するためのメモリ２０、命令バッファ３０１、セレクタ３０２及び３０３、命令伸長部３０４、命令デコード部３０５、制御部３０６、及び命令実行部３０７を備えている。なお、説明の便宜上、メモリ２０に格納されている圧縮プログラムに関して、圧縮されていない命令のビット長は３１ビットであり、圧縮された命令のビット長は１５ビットであり、一つの命令ビットフィールドには２個の圧縮された命令が上位ビット側から実行順に格納されており、圧縮識別子は命令ビットフィールドのＭＳＢに格納されているとする。
【００２８】
命令バッファ３０１は、メモリ２０から読み出された３２ビット長［３１：０］の信号を一時的に保持する。また、命令バッファ３０１は、下位３１ビット［３０：０］を命令を含む信号として、ＭＳＢを圧縮識別信号Ｓ１としてそれぞれ出力する。セレクタ３０２は、命令バッファ３０１から出力された３１ビット長［３０：０］の信号を１５ビット単位で分割したもの、すなわち、上位１５ビット長［１５：２９］及び下位１５ビット長［１４：０］の信号を受け、これらのいずれか一方を選択的に出力する。命令伸長部３０４は、セレクタ３０２から受けた信号、すなわち、圧縮された命令から元の命令を伸長する。セレクタ３０３は、命令バッファ３０１から３１ビット長［３０：０］の信号、すなわち、非圧縮の命令と、命令伸長部３０４から伸長された命令をそれぞれ受け、これらのいずれか一方を選択的に出力する。命令デコード部３０５は、セレクタ３０３によって選択された命令を受け、これをデコードして制御信号を出力する。また、命令デコード部３０５は、デコード結果から命令分岐が発生するか否かを判断し、命令分岐の発生の有無を示す分岐識別信号Ｓ２を出力する。命令実行部３０７は、命令デコード部３０５から受けた制御信号に従って所定の動作をする。
【００２９】
制御部３０６は、命令バッファ３０１から圧縮識別信号Ｓ１を、命令デコード部３０５から分岐識別信号Ｓ２をそれぞれ受け、これら信号に基づいて、セレクタ３０２及び３０３における選択動作を制御する。具体的には、圧縮識別信号Ｓ１によって命令が圧縮されていないことが示されているとき、制御部３０６は、セレクタ３０３に対して、命令バッファ３０１からの出力を選択するように指示する。一方、分岐識別信号Ｓ２によって命令分岐の発生が示され、かつ、圧縮識別信号Ｓ１によってその分岐先の命令が圧縮されていることが示されているとき、制御部３０６は、セレクタ３０２に対して、上位１５ビット長［２９：１５］の信号を選択するように指示するとともに、セレクタ３０３に対して、命令伸長部３０４の出力を選択するように指示する。
【００３０】
次に、図３に示した圧縮プログラムを例に、情報処理装置３０Ａの動作、特に、分岐命令実行時の動作について説明する。命令デコード部３０５において、分岐ラベルＬＡＢＥＬ１へ分岐する分岐命令がデコードされたとき、分岐識別信号Ｓ２によって分岐命令の発生が示されるとともに、命令バッファ３０１に、その分岐先である分岐ラベルＬＡＢＥＬ１が付与された圧縮命令１及び圧縮命令２が読み込まれる。このとき、圧縮識別信号Ｓ１として“１”が出力され、命令バッファ３０１に格納されている命令は圧縮されていることが示される。これにより、制御部３０６は、セレクタ３０２に対して、上位１５ビット長［２９：１５］の信号、すなわち、圧縮命令１を選択するように指示するとともに、セレクタ３０３に対して、命令伸長部３０４の出力を選択するように指示する。
【００３１】
一方、命令デコード部３０５において、分岐ラベルＬＡＢＥＬ２へ分岐する分岐命令がデコードされたとき、分岐識別信号Ｓ２によって分岐命令の発生が示されるとともに、命令バッファ３０１に、その分岐先である分岐ラベルＬＡＢＥＬ２が付与された非圧縮命令５が読み込まれる。このとき、圧縮識別信号Ｓ１として“０”が出力され、命令バッファ３０１に格納されている命令は圧縮されていないことが示される。これにより、制御部３０６は、セレクタ３０３に対して、命令バッファ３０１の上位３１ビット長［３０：０］の信号、すなわち、非圧縮命令５を選択するように指示する。
【００３２】
以上、本実施形態によると、分岐命令の分岐先の命令の一部を圧縮してメモリに格納することができ、また、分岐先の命令が圧縮格納されている圧縮プログラムを正しく実行することができる。これにより、命令の圧縮率が向上し、圧縮プログラムを格納するためのメモリのサイズを低減することができる。
【００３３】
（第２の実施形態）
図４は、第２の実施形態に係る情報処理システムの構成を示す。本情報処理システムは、原プログラムに含まれる命令を圧縮して圧縮プログラムを生成する圧縮プログラム生成装置１０Ｂ、及び圧縮プログラムを実行する情報処理装置３０Ｂから構成される。以下、第１の実施形態と異なる点についてのみ説明する。
【００３４】
圧縮プログラム生成装置１０Ｂは、圧縮対象選択手段１０１、命令圧縮格納手段１０３、格納位置情報付加手段１０５、及び圧縮識別子付加手段１０４を備えている。圧縮対象選択手段１０１は、入力された原プログラムを順次スキャンし、連続するＮ（Ｎは２以上の正数）個の圧縮対象命令を選択する。命令圧縮格納手段１０３は、選択された連続Ｎ個の圧縮対象命令を、圧縮プログラムにおける一つの命令ビットフィールドに圧縮して格納する。また、命令圧縮格納手段１０３は、分岐命令などの非圧縮対象命令は、非圧縮状態で圧縮プログラムにおける一つの命令ビットフィールドに格納する。圧縮識別子付加手段１０４は、圧縮プログラムにおける各命令ビットフィールドの所定箇所に圧縮識別子を付加する。格納位置情報付加手段１０５は、圧縮プログラムを順次スキャンし、分岐先の命令を格納している命令ビットフィールドにおけるその分岐先の命令の格納位置を求め、圧縮プログラムにおいて分岐命令が格納された命令ビットフィールドの所定箇所に、その格納位置を示す情報（以下、格納位置情報とも称する。）を付加する。
【００３５】
図５のフローチャートを参照しながら、圧縮プログラム生成装置１０Ｂによる圧縮プログラムの生成手順について詳細に説明する。ステップＳ１０１〜Ｓ１１１は上述したとおりであるため、説明を省略する。ステップＳ１０９で、現プログラムの処理がすべて終了した場合、ステップＳ２０１で圧縮プログラムの読み込みが開始され、ステップＳ２０２で圧縮プログラムの処理開始位置としてＬ＝１が設定される。続くステップＳ２０３で、圧縮プログラムにおけるＬ番目の命令が選択される。続くステップＳ２０４で、選択された命令が分岐命令であるか否かが判定される。選択された命令が分岐命令である場合、ステップＳ２０５に進み、分岐先の命令の命令ビットフィールドにおける当該分岐先の命令の格納位置が算出される。続くステップＳ２０６で、選択された分岐命令を格納する命令ビットフィールドの所定箇所に格納位置情報が付加される。その後、Ｌの値をインクリメントし（ステップＳ２０７）、ステップＳ２０８で、圧縮プログラムの処理がすべて終了したか否かが判定され、終了していない場合にはステップＳ２０３に戻り、終了した場合には圧縮プログラムの分岐処理は終了する。なお、ステップＳ２０４でＮＯ肢に進んだ場合、ステップＳ２０７にジャンプする。
【００３６】
図６は、原プログラム及びこれから圧縮プログラム生成装置１０Ｂによって生成された圧縮プログラムの例を示す。なお、原プログラム中の連続する２個の命令が圧縮されるものとして説明する。まず、原プログラム中の命令１及び命令２が選択され、これら命令はいずれも圧縮対象命令であることから、これら命令は圧縮され、圧縮プログラムにおける一つの命令ビットフィールドに圧縮命令１及び圧縮命令２としてそれぞれ格納される。そして、圧縮プログラムにおける命令ビットフィールドのＭＳＢには圧縮識別子として例えば“１”が設定される。続いて原プログラム中の命令３及び命令４が選択され、これら命令はいずれも圧縮対象命令であることから、これら命令は圧縮され、圧縮プログラムにおける一つの命令ビットフィールドに圧縮命令３及び圧縮命令４として格納される。また、原プログラムにおける命令３及び命令４にはそれぞれ分岐ラベルＬＡＢＥＬ１及びＬＡＢＥＬ２が付与されているため、圧縮プログラムにおいて圧縮命令３及び圧縮命令４を格納する命令ビットフィールドには、分岐ラベルＬＡＢＥＬ１及びＬＡＢＥＬ２が付与される。
【００３７】
原プログラム中の分岐命令は、非圧縮対称の命令とするため圧縮されずに圧縮プログラムに格納される。ここで、原プログラムにおける分岐ラベルＬＡＢＥＬ１に当たる命令３は、圧縮プログラムにおいては圧縮されているため、圧縮プログラムの命令ビットフィールドにおける圧縮命令３の格納位置が算出される。圧縮命令３は命令ビットフィールドの上位側先頭に位置するため、その格納位置は“１”である。したがって、原プログラムにおける分岐ラベルＬＡＢＥＬ１への分岐命令は、圧縮プログラムでは、格納位置情報として例えば“１”が付加される。同様に、原プログラムにおける分岐ラベルＬＡＢＥＬ２への分岐命令は、圧縮プログラムでは、格納位置情報として例えば“２”が付加される。なお、分岐命令中の分岐先アドレスを示すオフセット（本例では分岐ラベルＬＡＢＥＬ１及びＬＡＢＥＬ２）は、圧縮プログラム生成後に再計算され、設定される。
【００３８】
図４に戻り、情報処理装置３０Ｂについて説明する。情報処理装置３０Ｂは、基本的には図１に示した情報処理装置３０Ａと同様の構成をしている。命令デコード部３０５は、分岐識別信号Ｓ２に加えて、上記の格納位置情報として格納位置信号Ｓ３を出力する。制御部３０６は、分岐識別信号Ｓ２によって命令分岐の発生が示され、かつ、圧縮識別信号Ｓ１によってその分岐先の命令が圧縮されていることが示されているとき、セレクタ３０２に対して、二つの入力信号のうち格納位置信号Ｓ３によって示された方を選択するように指示する。
【００３９】
次に、図６に示した圧縮プログラムを例に、情報処理装置３０Ｂの動作、特に、分岐命令実行時の動作について説明する。命令デコード部３０５において、圧縮命令３へ分岐する分岐命令がデコードされたとき、分岐識別信号Ｓ２によって分岐命令の発生が示され、また、格納位置信号Ｓ３によって分岐先の命令の格納位置が示されるとともに、命令バッファ３０１に、その分岐先である分岐ラベルＬＡＢＥＬ１が付与された圧縮命令３及び圧縮命令４が読み込まれる。このとき、圧縮識別信号Ｓ１として“１”が出力され、命令バッファ３０１に格納されている命令は圧縮されていることが示される。また、格納位置信号Ｓ３によって分岐先命令の格納位置が“１”であることが示される。これにより、制御部３０６は、セレクタ３０２に対して、上位１５ビット長［２９：１５］の信号、すなわち、圧縮命令３を選択するように指示するとともに、セレクタ３０３に対して、命令伸長部３０４の出力を選択するように指示する。
【００４０】
一方、命令デコード部３０５において、圧縮命令４へ分岐する分岐命令がデコードされたとき、分岐識別信号Ｓ２によって分岐命令の発生が示され、また、格納位置信号Ｓ３によって分岐先の命令の格納位置が示されるとともに、命令バッファ３０１に、その分岐先である分岐ラベルＬＡＢＥＬ２が付与された圧縮命令３及び圧縮命令４が読み込まれる。このとき、圧縮識別信号Ｓ１として“１”が出力され、命令バッファ３０１に格納されている命令は圧縮されていることが示される。また、格納位置信号Ｓ３によって分岐先命令の格納位置が“２”であることが示される。これにより、制御部３０６は、セレクタ３０２に対して、下位１５ビット長［１４：０］の信号、すなわち、圧縮命令４を選択するように指示するとともに、セレクタ３０３に対して、命令伸長部３０４の出力を選択するように指示する。
【００４１】
以上、本実施形態によると、第１の実施形態よりも、命令の圧縮率がより向上し、圧縮プログラムを格納するためのメモリのサイズを大幅に削減することができる。
【００４２】
なお、上記の各実施形態において、圧縮識別子をそのまま圧縮識別信号Ｓ１として出力しなくてもよい。すなわち、圧縮識別子は、圧縮プログラムにおける命令ビットフィールドのＭＳＢでなくてもよく、また、１ビット長でなくてもよい。圧縮識別子として特異なビット列、例えば、圧縮プログラムにおける命令ビットフィールドの上位４ビット［３１：２８］がすべて“１”のとき、圧縮識別信号Ｓ１を所定の値にして、命令バッファ３０１に圧縮された命令が格納されている旨を伝達するようにしてもよい。なお、この場合、圧縮後の命令の上位４ビットがすべて“１”にならないようにすることで、圧縮された命令のビット長は１６ビットにすることができる。
【００４３】
また、上記の各実施形態において、セレクタ３０３は、圧縮識別信号Ｓ１によって直接制御するようにしてもよい。すなわち、セレクタ３０３は、圧縮識別信号Ｓ１が命令バッファ３０１に圧縮された命令が格納されていることを示しているとき、命令伸長部３０４の出力を選択する一方、圧縮識別信号Ｓ１が命令バッファ３０１に圧縮された命令が格納されていないことを示しているとき、命令バッファ３０１の出力を選択するようにしてもよい。
【産業上の利用可能性】
【００４４】
本発明に係る情報処理システムは、原プログラムの圧縮率が高く、圧縮プログラムを格納するためのメモリのサイズを削減することができるため、特に大規模な原プログラムによって制御されるプロセッサ組み込み機器に有用である。
【図面の簡単な説明】
【００４５】
【図１】第１の実施形態に係る情報処理システムの構成図である。
【図２】図１に示した圧縮プログラム生成装置による処理フローを示す図である。
【図３】原プログラム及びこれから図１に示した圧縮プログラム生成装置によって生成された圧縮プログラムの例を示す図である。
【図４】第２の実施形態に係る情報処理システムの構成図である。
【図５】図４に示した圧縮プログラム生成装置による処理フローを示す図である。
【図６】原プログラム及びこれから図４に示した圧縮プログラム生成装置によって生成された圧縮プログラムの例を示す図である。
【符号の説明】
【００４６】
１０Ａ，１０Ｂ  圧縮プログラム生成装置
２０  メモリ
３０Ａ，３０Ｂ  情報処理装置
３０１  命令バッファ
３０２  セレクタ（第１のセレクタ）
３０３  セレクタ（第２のセレクタ）
３０４  命令伸長部
３０５  命令デコード部
３０６  制御部
【図１】
2007226615.tif 000003
【図２】
2007226615.tif 000004
【図３】
2007226615.tif 000005
【図４】
2007226615.tif 000006
【図５】
2007226615.tif 000007
【図６】
2007226615.tif 000008