(57)【要約】【課題】プログラムコード領域を縮小する。【解決手段】コードＲＡＭ２は、複数のファンクションによって構築されたプログラムを記憶する。各ファンクションには、プログラムコード領域を縮小するため、オペコードのインデックスが記述され、オペコードのアドレスデータとインデックスとの対応関係が記述される。オペコードＲＯＭ１６３，１６４は、全てのオペコードを予め記憶し、コード変換用ＲＡＭ１６１，１６２は、オペコードのアドレスデータとインデックスとの対応関係を示すＯＴを記憶する。デコード部１６０は、プログラム実行時、ファンクションの記述に従い、ＯＴをファンクション毎に書き替え、ＯＴを参照して、インデックスからアドレスデータを取得し、このアドレスデータを用いてオペコードＲＯＭ１６３，１６４からオペコードを取得する。【選択図】図４
2006079451.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理装置において、
前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたファンクションを記憶するファンクション記憶手段と、
前記対応関係情報を記憶するための対応関係情報記憶手段と、
前記プログラムの実行時、前記ファンクション毎に、前記対応関係情報記憶手段に既に記憶されている対応関係情報を、前記ファンクション記憶手段が記憶する前記対応関係情報に書き替える情報書き替え手段と、
前記命令コード書き替え手段が書き替えた前記対応関係情報記憶手段の対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するコード変換手段と、を備えた、
ことを特徴とする情報処理装置。
【請求項２】
前記対応関係情報記憶手段は、
前記プログラムに用いられる全命令コードを格納する第１の記憶手段と、
前記対応関係情報として、前記命令コードの識別情報と前記命令コードの前記第１の記憶手段における格納位置を示すアドレスデータとを対応させて記憶する第２の記憶手段と、からなり、
前記ファンクション記憶手段は、前記識別情報と前記アドレスデータとの対応関係情報が記述されたファンクションを記憶し、
前記コード変換手段は、前記第２の記憶手段に記憶された対応関係情報に従って、前記識別情報から前記アドレスデータを取得し、取得した前記アドレスデータに基づいて、前記第１の記憶手段を参照し、前記識別情報を前記命令コードに変換する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報書き替え手段は、前記プログラムの実行前、前記ファンクション記憶手段に記憶されている各ファンクションに記述されている命令コードを識別情報に書き替え、前記各ファンクションに前記対応関係情報を記述する、
ことを特徴とする１又は２に記載の情報処理装置。
【請求項４】
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理方法において、
前記ファンクションは、前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたものであって、
前記プログラムの実行時、前記ファンクション毎に、既に記憶されている対応関係情報を、前記ファンクションに記述された対応関係情報に書き替えるステップと、
書き替えた前記対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するステップと、を備えた、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び命令コードの圧縮方法に関するものである。
【背景技術】
【０００２】
従来より、命令コードの圧縮を行う情報処理装置がある（例えば、特許文献１参照）。この情報処理装置は、命令コードの使用率に従って短命令のコードに置き換えて全体のコードサイズを小さくしている。
【特許文献１】特開平１１−２２４１９９号公報（第５頁−第６頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来のこのような情報処理装置では、プログラムの一部分のみの命令コードの短縮しかできない。特に、情報処理装置として、ＶＬＩＷ方式のプロセッサを備えたものでは、その特性上、プログラムコード領域が通常のプロセッサよりも大きくなってしまう。
【０００４】
従って、ＶＬＩＷ方式のプロセッサを備えた情報処理装置においては、プログラムの一部分のみの命令コードを短縮しただけでは、すべての命令コードに対する短縮効果は現れてこない。
【０００５】
本発明は、このような従来の問題点に鑑みてなされたもので、プログラムコード領域を縮小することが可能な情報処理装置及び命令コードの圧縮方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この目的を達成するため、本発明の第１の観点に係る情報処理装置は、
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理装置において、
前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたファンクションを記憶するファンクション記憶手段と、
前記対応関係情報を記憶するための対応関係情報記憶手段と、
前記プログラムの実行時、前記ファンクション毎に、前記対応関係情報記憶手段に既に記憶されている対応関係情報を、前記ファンクション記憶手段が記憶する前記対応関係情報に書き替える情報書き替え手段と、
前記命令コード書き替え手段が書き替えた前記対応関係情報記憶手段の対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するコード変換手段と、を備えたことを特徴とする。
【０００７】
前記対応関係情報記憶手段は、
前記プログラムに用いられる全命令コードを格納する第１の記憶手段と、
前記対応関係情報として、前記命令コードの識別情報と前記命令コードの前記第１の記憶手段における格納位置を示すアドレスデータとを対応させて記憶する第２の記憶手段と、からなり、
前記ファンクション記憶手段は、前記識別情報と前記アドレスデータとの対応関係情報が記述されたファンクションを記憶し、
前記コード変換手段は、前記第２の記憶手段に記憶された対応関係情報に従って、前記識別情報から前記アドレスデータを取得し、取得した前記アドレスデータに基づいて、前記第１の記憶手段を参照し、前記識別情報を前記命令コードに変換するようにしてもよい。
【０００８】
前記情報書き替え手段は、前記プログラムの実行前、前記ファンクション記憶手段に記憶されている各ファンクションに記述されている命令コードを識別情報に書き替え、前記各ファンクションに前記対応関係情報を記述するようにしてもよい。
【０００９】
本発明の第２の観点に係る情報処理方法は、
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理方法において、
前記ファンクションは、前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたものであって、
前記プログラムの実行時、前記ファンクション毎に、既に記憶されている対応関係情報を、前記ファンクションに記述された対応関係情報に書き替えるステップと、
書き替えた前記対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するステップと、を備えたことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、プログラムコード領域を縮小することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態に係る情報処理装置を図面を参照して説明する。
本実施形態に係る情報処理装置の構成を図１に示す。
図１に示す情報処理装置は、いわゆるスタックマシンとして構成されたものであり、コア部１と、コードＲＡＭ（Random Access Memory）２と、を備える。
【００１２】
コードＲＡＭ２は、図２に示すようなアセンブリコードで記述されたプログラムを記憶する。図２に示すように、プログラムは、複数のファンクションによって構築される。コードＲＡＭ２は、例えば、ファンクション記憶手段に対応するものである。
【００１３】
function1は、そのファンクションの１つを示し、function1の中の「push」は、ファンクションコールの際にコードをスタックに退避させるための命令である。アセンブリコード「pop」は、スタックに退避させたコードを元に戻すための命令である。アセンブリコード「sotset」，「dotset」は、後述するテーブルのデータを書き換えさせるコードである。
【００１４】
また、コードＲＡＭ２は、このアセンブリコードをＶＬＩＷ（Very Long Instruction Word Processor）コードにコード化してコア部１に供給する。
【００１５】
ＶＬＩＷとは、コンパイラで静的に並列実行可能な複数のオペコードを抽出し、抽出した命令データを組み合わせてビット長の長い複合オペコードを生成するプロセッサである。
【００１６】
ＶＬＩＷコードは、図３（ａ），（ｂ）に示すように、Ｓ命令コードとＤ命令コードとからなる。Ｓ命令コードは、スタックユニットに対するオペコード、即ち、命令をスタック１３１〜１３４上で実行する演算系のオペコードである。
【００１７】
Ｓ命令コードは、図３（ａ），（ｂ）に示すように、スタック１３１〜１３４に対応するように、それぞれ、Ｓ０，Ｓ１，Ｓ２，Ｓ３のフィールドに組み込まれるものとする。ここで、Ｓ０，Ｓ１，Ｓ２，Ｓ３のフィールドを、それぞれ、Ｓ０，Ｓ１，Ｓ２，Ｓ３スロットとし、これらを総称してＳスロットとする。
【００１８】
命令フェッチ、デコードを容易にするため、Ｓ０，Ｓ１，Ｓ２，Ｓ３スロットは、それぞれ、１バイト固定で構成される。
【００１９】
Ｓ０，Ｓ１，Ｓ２，Ｓ３スロットは、図３（ｃ）に示すように、それぞれ、ＵＳ（Unit Selector）ビットと、ＴＩ（Ope Code Table Index）ビットと、ＯＳ（First Operand Selector）ビットと、からなる。
【００２０】
ＵＳビットデータは、各Ｓスロットの区切りを示すコードデータであり、１ビットで構成される。尚、Ｄスロットも、それぞれ、先頭にＵＳビットを備えており、ＳスロットのＵＳビットは０、ＤスロットのＵＳビットは１とされる。
【００２１】
ＴＩビットには、インデックスデータが格納される。インデックスデータは、オペコードを識別するための識別情報であり、オペコードテーブル（Opecode Table、以後、「ＯＴ」と記す。）に記述される。ＯＴは、インデックスデータとオペコードとの対応関係を示すテーブルである。このオペコードのエントリ数を１６エントリとすると、ＴＩビットは、４ビットで構成される。このＯＴについては後述する。
【００２２】
ＯＳビットデータは、第１オペランドを指定するためのものであり、３ビットで構成される。通常、オペランドは、第１オペランド、第２オペランドの２フィールドで構成される。しかし、本実施形態では、スタックアーキテクチャが取り入れられているため、第２オペランドは、スタック１３１〜１３４のいずれかに既に格納されている。このため、ＯＳビットは、第１オペランドのみの１フィールドで構成される。
【００２３】
尚、Ｓスロットが４つ未満の場合、ＮＯＰコードが取り除かれても、Ｓスロットと演算ユニットとの対応関係を判別できるようにＡｐｐｅｎｄコードが付加される。
【００２４】
Ｄ命令コードはデータユニットに対するオペコードであり、アドレス計算ユニット向けの命令、「Load」、「Store」といった制御系の命令を実行するためのオペコードである。
【００２５】
尚、「Load」は、データＲＡＭ（図示せず）から読み出した値をスタック１３１〜１３４のいずれかにＰＵＳＨする命令であり、「Store」はスタック１３１〜１３４をＰｏｐし、Ｐｏｐされた値をデータＲＡＭに書き込む命令である。また、Ｄ命令コードは、Ｊｕｍｐ命令のような即値を必要とする命令用にも用いられる。
【００２６】
Ｄ命令コードは、図３（ａ）のＤＡ，ＤＢで示すように、２バイトで構成されるか、図３（ｂ）のＤで示すように４バイトで構成される。
【００２７】
Ｄ命令コードについても、図３（ａ）に示すＤ命令コードＤＡ、ＤＢのフィールドを、それぞれ、ＤＡ，ＤＢスロット、図３（ｂ）に示す命令コードのフィールドを総称してＤスロットとする。
【００２８】
但し、これらのスロットの全てに並列実行可能な命令が有効に割り当てられるとは限らず、スロットが６つ未満の場合もある。スロットが６つ未満の場合、ＶＬＩＷコードが合計６４ビットで構成されるように、ＶＬＩＷコードは、ＮＯＰコードで埋め込まれる。
【００２９】
このようにして、ＶＬＩＷコードは、常に合計６４ビットで構成される。尚、本実施形態では、コードＲＡＭ２が供給するＶＬＩＷコードは、２ラインで同時に読み出しを行えるように、１２８ビット幅とされる。
【００３０】
尚、ＶＬＩＷコードは、図３に示すように構成されているとは限らず、例えば、プログラムが、Ｓ命令をあまり使用しないようなものである場合、ＶＬＩＷコードは、Ｓスロットを２つに限定して構成されてもよい。
【００３１】
コア部１は、情報処理装置の中核部であり、コントロールユニット１１と、ＡＬＵ（Arithmetic Logic Unit;算術論理演算ユニット）１２１〜１２４と、スタック１３１〜１３４と、レジスタファイルユニット１４１と、を備える。
【００３２】
ＡＬＵ１２１とスタック１３１とは、対で用いられ、１つの演算ユニットを構成する。同様に、ＡＬＵ１２２とスタック１３２、ＡＬＵ１２３とスタック１３３、ＡＬＵ１２４とスタック１３４が、それぞれ１つの演算ユニットを構成する。
【００３３】
コントロールユニット１１は、コードＲＡＭ２からＶＬＩＷコードが供給され、供給されたＶＬＩＷコードを解読するものである。
【００３４】
コントロールユニット１１は、このようなＶＬＩＷコードを解読するため、図４に示すように、フェッチ部１５０と、デコード部１６０，１７０と、を備える。
【００３５】
フェッチ部１５０は、コードＲＡＭ２から供給された１２８ビットのＶＬＩＷコードを取り出すものであり、セレクタ１５１と、ＮＯＰ非圧縮部１５２と、パイプラインレジスタ１５３と、を備える。
【００３６】
セレクタ１５１は、コードＲＡＭ２から供給された１２８ビットのＶＬＩＷコードから、６４ビットのＶＬＩＷコードを選択するものである。
ＮＯＰ非圧縮部１５２は、セレクタ１５１が選択した６４ビットのＶＬＩＷコードからＮＯＰを取り除くためのものである。
【００３７】
パイプラインレジスタ１５３は、ＮＯＰが取り除かれたＶＬＩＷコードを一時記憶するものである。パイプラインレジスタ１５３は、一時記憶したコードをデコード部１６０，１７０に供給する。
【００３８】
デコード部１６０は、パイプラインレジスタ１５３から供給されたＶＬＩＷコードを解読して、実行可能なオペコードを生成するものであり、コード変換用ＲＡＭ１６１，１６２と、オペコードＲＯＭ（Read Only Memory）１６３，１６４と、を備える。
【００３９】
コード変換用ＲＡＭ１６１，１６２は、例えば、第２の記憶手段に相当するものであり、前述のＯＴを備える。コード変換用ＲＡＭ１６１は、Ｓ命令用のものであり、コード変換用ＲＡＭ１６２は、Ｄ命令用のものである。このＯＴは、図５に示すように、ＴＩのインデックスデータと、オペコードのアドレスとの対応関係を示すテーブルである。
【００４０】
例えば、ＴＩのインデックスデータが「０」であると、デコード部１６０は、図５に示すようなＯＴを参照して、インデックスデータ「０」を、対応するオペコードのアドレスデータに変換する。このアドレスデータは、オペコードの格納位置を示す。
【００４１】
オペコードＲＯＭ１６３，１６４は、図６に示すように、プログラムの実行可能な全オペコードを記憶するものである。オペコードＲＯＭ１６３，１６４は、アドレスが指定されると、指定されたアドレスに対応するオペコードとして、半デコード状態のコードを出力する。
【００４２】
オペコードＲＯＭ１６３，１６４は、それぞれ、Ｓ命令用、Ｄ命令用のものであり、それぞれ、全オペコードとして２５６種のオペコードを記憶する。このオペコードＲＯＭ１６３，１６４は、例えば、第１の記憶手段に対応するものであり、コード変換用ＲＡＭ１６１，１６２とオペコードＲＯＭ１６３，１６４とは、対応関係情報記憶手段に対応する。
【００４３】
デコード部１６０は、プログラムの実行時に、コードＲＡＭ２から図２に示すようなプログラムが供給されると、このプログラムのアセンブリコード「sotset」，「dotset」を解読して、コード変換用ＲＡＭ１６１，１６２のＯＴを書き替える。アセンブリコード「sotset」，「dotset」は、それぞれ、コード変換用ＲＡＭ１６１，１６２のＯＴを書き替えるためのコードである。
【００４４】
図２のプログラムに示すｓｏｔ１は、１つのレジスタを示す。図７（ａ）に示すように、レジスタを４つとしてレジスタｓｏｔ０〜ｓｏｔ３は、ＯＴの各インデックスに対応し、レジスタｓｏｔ１は、図７（ｂ）に示すように、ＯＴのインデックス４〜７に対応する。そして、レジスタｓｏｔ０〜ｓｏｔ３は、それぞれ、ファンクション中の各オペコードのアドレスデータを格納する。
【００４５】
このように、ＯＴは、レジスタとしても捉えることもでき、「sotset sot1」は、レジスタｓｏｔ１のデータをコード変換用ＲＡＭ１６１のＯＴのインデックス４〜７に対応させて書き込む命令である。
【００４６】
デコード部１６０は、レジスタｓｏｔ１の内容が図７（ａ）に示すようなものである場合、図７（ｂ）に示すように、ＯＴテーブルのインデックス４〜７に対応するように、ＯＴを書き替える。このアセンブリコード「sotset」，「dotset」は、ファンクション毎に記述され、デコード部１６０は、このような処理をファンクション毎に行う。
【００４７】
オペコードは、１ファンクション中で何度も使用されるものも多く、比較的、１ファンクション中で使用されるオペコードの数は少ないものである。このため、このＯＴは、コードＲＡＭ２が記憶するプログラムコードのファンクション毎に書き替えられる。従って、コード変換用ＲＡＭ１６１は、１ファンクションで用いられるオペコードとインデックスデータとを記憶可能な程度の比較的記憶容量が小さなものでよい。
【００４８】
尚、コード変換用ＲＡＭ１６１，１６２は、スタック１３１〜１３４等の対象ブロックが使用する命令が１６種を越えるような場合、ＯＴの１６エントリ以下をバンク切り替えできるように構成されることもできる。
【００４９】
このように構成されたデコード部１６０は、ＯＴの対応関係情報に従って取得したアドレスデータを取得し、このアドレスデータに基づいてオペコードＲＯＭ１６３，１６４からオペコードを取得して、プログラムの実行可能なコードに変換する。そして、デコード部１６０は、変換したコードをデコード部１７０に引き渡す。
【００５０】
このデコード部１６０は、例えば、情報書き替え手段、コード変換手段に対応するものである。
【００５１】
デコード部１７０は、デコード部１６０から引き渡されたコードとＯＳビットデータとを用いて、各種の制御信号、即値を生成するものであり、レジスタ選択信号生成部１７１と、レジスタ１７２と、信号データ生成部１７３と、レジスタ１７４と、を備える。
【００５２】
レジスタ選択信号生成部１７１は、デコード部１６０から引き渡されたコードを用いて、レジスタ選択信号を生成するものである。
【００５３】
レジスタ１７２は、レジスタ選択信号生成部１７１が生成したレジスタ選択信号を一時記憶するものである。コントロールユニット１１は、レジスタ１７４が一時記憶したレジスタ選択信号を、図１のレジスタファイルユニット１４１に供給する。
【００５４】
信号データ生成部１７３は、スタック１３１〜１３４のいずれかに供給する即値と、演算器制御信号と、スタック動作制御信号と、Ｌｏａｄ／Ｓｔｏｒｅ信号と、を生成するものである。
【００５５】
レジスタ１７４は、信号データ生成部１７３が生成した制御信号、即値等を一時記憶するものである。コントロールユニット１１は、レジスタ１７４が一時記憶したこれらの制御信号、即値等を、図１のＡＬＵ１２１〜１２４、スタック１３１〜１３４に供給する。
【００５６】
図１に戻り、ＡＬＵ１２１〜１２４は、コントロールユニット１１から供給された演算器制御信号に基づいて、演算を実行するものである。ＡＬＵ１２１〜１２４は、それぞれ、ＶＬＩＷコードのＳ０〜Ｓ３スロットに対応している。ＡＬＵ１２１とＡＬＵ１２２、ＡＬＵ１２３とＡＬＵ１２４は、密に結合している。そして、ＡＬＵ１２１〜１２４がそれぞれ３２ビット演算を行うものであれば、ＡＬＵ１２１とＡＬＵ１２２、ＡＬＵ１２３とＡＬＵ１２４は、６４ビット演算を行うことができる。
【００５７】
スタック１３１〜１３４は、コントロールユニット１１から供給された即値を格納し、供給されたスタック動作制御信号に基づいて、格納した即値に対する演算を行う。スタック１３１〜１３４は、それぞれ、ＤＦＦ（Ｄ型フリップフロップ）によって構成されたＴＯＳ（Top Of Stack）、ＮＯＳ（Next Of Stack）を備えている。そして、スタック１３１〜１３４は、それぞれ、ＴＯＳ、ＮＯＳを用いて、レジスタファイルユニット１４１を介さずに加算演算等を行うことができる。
【００５８】
レジスタファイルユニット１４１は、汎用レジスタ、特殊レジスタ等を有するものであり、これらのレジスタのうちの動作対象のものが、コントロールユニット１１から供給されたレジスタ選択信号に基づいて選択され、動作する。レジスタファイルユニット１４１は、スタック１３１〜１３４間の共有メモリとしても用いられ、Ｄ命令によるレジスタ間加減算命令の実行用にも用いられる。
【００５９】
また、レジスタファイルユニット１４１は、アドレス信号を生成し、生成したアドレス信号をコードＲＡＭ２に供給する。コードＲＡＭ２は、供給されたアドレス信号に従って、ＶＬＩＷコードをコントロールユニット１１に供給する。
【００６０】
次に本実施形態に係る情報処理装置の動作を説明する。
コードＲＡＭ２から、プログラムがＶＬＩＷコード化されてコントロールユニット１１に供給される。
【００６１】
例えば、実際に実行するためのプログラムが、図８（ａ）に示すようなプログラムである場合、インデックス化しなければ、このプログラムは、図８（ｂ）に示すように記述される。
【００６２】
しかし、コードＲＡＭ２には、図８（ｃ）に示すように、インデックス化されたプログラムが記憶される。例えば、アセンブリコードが「add」であれば、そのオペコードは、図８（ｂ）に示すように「01」になる。しかし、コードＲＡＭ２には、コード「01」をインデックス化した「0」が記述される。このインデックスデータ「0」は、ＳスロットのＴＩビットデータに組み込まれる。
【００６３】
同様に、アセンブリコード「move」、「sub」、「mult」、「jump」が、図８（ｃ）に示すようにインデックス化されて、ＳスロットのＴＩビットデータに組み込まれる。
【００６４】
プログラム実行時、フェッチ部１５０は、ＶＬＩＷコード化されたプログラムのfuncton1から、「sotset sot1」を取り出して、デコード部１６０のコード変換用ＲＡＭ１６１に供給する。
【００６５】
レジスタｓｏｔ０には、図９（ａ）に示すように、「a1」、「0」、「a5」、「a2」が書き込まれ、レジスタｓｏｔ１には、「a3」、「a4」が書き込まれているものとする。
【００６６】
デコード部１６０は、コード変換用ＲＡＭ１６１が記憶するＯＴの対応関係情報を、図９（ｂ）に示すようなレジスタｓｏｔ０，ｓｏｔ１のアドレスデータに書き替える。
【００６７】
次に、フェッチ部１５０は、ＶＬＩＷコード化されたプログラムのfuncton1から、順次、「0x011」、「0x521」、「0x201」、「0x312」、「0x4DF」を取り出して、デコード部１６０のコード変換用ＲＡＭ１６１に供給する。
【００６８】
デコード部１６０は、このＯＴを参照して、インデックスデータからアドレスデータを取得する。インデックスデータが「０」の場合、デコード部１６０は、このＯＴを参照して、アドレスデータ「a1」を取得する。
【００６９】
同様に、インデックスデータが「２」の場合、デコード部１６０は、アドレスデータ「a5」を取得する。インデックスデータが「３」の場合、デコード部１６０は、アドレスデータ「a２」を取得する。インデックスデータが「４」の場合、デコード部１６０は、アドレスデータ「a3」を取得する。インデックスデータが「５」の場合、デコード部１６０は、アドレスデータ「a4」を取得する。
【００７０】
そして、図１０に示すように、デコード部１６１は、このアドレスデータ「a1」、「a5」、「a2」、「a3」、「a4」を用いて、オペコードＲＯＭ１６３から、順次、アセンブリコード「add」,「move」，「sub」，「mult」，「jump」にそれぞれ対応するオペコードを取得し、取得したオペコードをデコード部１７０に供給する。
【００７１】
図８（ｂ）に示すように、書き替え前の各オペコードの命令セットのコード量は、１６ビット×５（Word）＝８０ビットになる。しかし、コードを図８（ｃ）に示すように書き替えることにより、命令セットのコード量は１２ビット×５（Word）＝６０ビットになる。従って、図８（ｃ）に示すコードのデータ量は、図８（ｂ）に示すコードと比較して３／４に低減される。
【００７２】
尚、ＯＴが必要になるため、その分データ量は増える。しかし、ファンクションのサイズが小さい場合でも、コンパイラを最適化することにより、データ量の増加は、抑制される。
【００７３】
以上説明したように、本実施形態によれば、デコード部１６０は、デコード部１６０に備えられたＯＴデータを、ファンクション毎に書き替える。そして、デコード部１６０は、ＶＬＩＷコードのＴＩビットデータのインデックスデータから、ＯＴに基づいてオペコードのアドレスデータを取得し、オペコードを取得するようにした。
【００７４】
従って、すべてのオペコードについて、コード長を短縮することができ、コードＲＡＭ２におけるプログラムコード領域を縮小することができる。
【００７５】
ＲＩＳＣ、ＶＬＩＷ方式を用いたものにおいても、長命令だけでなく、全てのオペコードを一様に短縮することができるため、特に有効である。また、命令の種類がファンクション毎に偏りがあって、ある特定の命令群（ブロック）で使用されている命令の種類が全命令の部分集合でしかない場合でも、従来と本実施形態とでのプログラム全体で比較すると、短いコードに書き替えることができる。
【００７６】
また、デコード部１６０がＯＴデータをファンクション毎に書き替えるため、ＯＴデータを記憶するコード変換用ＲＡＭ１６１、１６２に、比較的容量の小さなものを用いることができる。
【００７７】
また、本実施形態の情報処理装置は、アドレスデコードを行っているものの、特許文献１に示す従来の情報処理装置のようなコード比較を必要とせず、すべての命令について短縮されたインデックスコードへの置き換えも可能である。
【００７８】
尚、本発明を実施するにあたっては、種々の形態が考えられ、上記実施の形態に限られるものではない。
例えば、上記実施形態では、ＯＴを用い、オペコードのアドレスを介して、オペコードを取得するようにしている。しかし、このような構成に限られるものではなく、インデックスから直接オペコードに変換するように構成されることもできる。
【００７９】
上記実施形態では、ファンクション毎にＯＴのデータを書き替えるようにした。しかし、同じようなオペコードが記述された複数のファンクションがあれば、一度書き替えたＯＴを次のファンクションでも用いるようにするようにしてもよい。
【００８０】
上記実施形態では、前記ＯＴのインデックスを、オペコードに順次割り付けた。しかし、例えば、オペコード順にインデックスを割り付けるようにすることもでき、インデックスからオペコードを取得しやすいようにＯＴのデータの配列を設定することもできる。
【００８１】
上記実施形態では、コードＲＡＭ２には、既に、オペコードがインデックス化されたファンクション（プログラム）が記憶されているものとして説明した。しかし、各ファンクションには、インデックス化されていないオペコードを記述しておき、デコード部１６０が、コードＲＡＭ２を参照して、オペコードをインデックスに書き替え、各ファンクションに前記対応関係情報を記述するように構成されることもできる。
【００８２】
上記実施形態では、ＶＬＩＷコードを用いた情報処理装置について説明した。しかし、情報処理装置は、ＶＬＩＷコードを用いたものでなくてもよく、例えば、ＲＩＳＣ（Reduced Instruction Set Computer）であってもよい。また、本実施形態の情報処理装置は、固定長命令セットを用いたものでなくてもよく、可変長命令セットを用いたものであってもよい。さらに、情報処理装置は、スタックマシンでなくてもよく、ノイマン型のものであってもよい。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】図１に示すコードＲＡＭが記憶するプログラムの説明図である。
【図３】図１に示すコントロールユニットに供給されるＶＬＩＷコードの説明図である。
【図４】図１に示すコントロールユニットの構成を示すブロック図である。
【図５】図４に示すコード変換用ＲＡＭが備えるＯＴを示す説明図である。
【図６】図４に示すオペコードＲＯＭが記憶しているオペコードの説明図である。
【図７】図４に示すコード変換用ＲＡＭへのデータの書き込み処理を示す説明図である。
【図８】図１に示すコードＲＡＭが記憶する具体的なプログラム例を示す説明図である。
【図９】図４に示すコード変換用ＲＡＭへの具体的なデータの書き込み例を示す説明図である。
【図１０】ＯＴを参照してオペコードを取得する具体的な動作の説明図である。
【符号の説明】
【００８４】
１    コア部
２    コードＲＡＭ
１１  コントロールユニット
１５３  パイプラインレジスタ
１６０  デコード部
１６１，１６２  コード変換用ＲＡＭ
１６３，１６４  オペコードＲＯＭ
【図１】
2006079451.tif 000003
【図２】
2006079451.tif 000004
【図３】
2006079451.tif 000005
【図４】
2006079451.tif 000006
【図５】
2006079451.tif 000007
【図６】
2006079451.tif 000008
【図７】
2006079451.tif 000009
【図８】
2006079451.tif 000010
【図９】
2006079451.tif 000011
【図１０】
2006079451.tif 000012