(57)【要約】【課題】比較的簡単な手段でプログラムの並列性を向上させる。【解決手段】プログラムの現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、現在実行対象命令のオペコードの前後の少なくとも１つ以上の命令のオペコードに依存して、少なくとも１つ以上のニーモニックを割り当てる方式を備える。これにより、同一命令コード幅で定義できる命令数を増加させることによってプログラムのオブジェクトサイズを圧縮することができる。このため、比較的簡単な手段でプログラムの並列性を向上することが可能である優れた命令セットを実現することができる。【選択図】図１
2008027341.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、前記現在実行対象命令のオペコードの前後の少なくとも１つ以上の命令のオペコードに依存して、少なくとも１つ以上のニーモニックを割り当てる方式を備えることを特徴とする命令セット。
【請求項２】
現在実行対象命令のオペコードに割り当てられた少なくとも１つ以上のニーモニックの有効化、無効化を設定する手段を備えた請求項１記載の命令セット。
【請求項３】
現在実行対象命令のオペコードに割り当てられたニーモニックの割り当て方式を少なくとも２種類以上備え、前記割り当て方式を選択可能な手段を備えた請求項１または２記載の命令セット。
【請求項４】
プログラム実行順序に２種類以上の分岐条件があるとき、実現可能性のある全てのニーモニックを前記分岐条件に対応するオペコードに割り当てる手段を備えた請求項１，２または３記載の命令セット。
【請求項５】
請求項１，２，３または４記載の命令セットの命令を格納する命令格納手段と、前記命令格納手段と命令バスで接続されて前記命令セットの命令をデコードし、１つのオペコードを前後の命令から複数のニーモニックに割り当てる命令デコード手段と、
前記命令デコード手段とデコードバスで接続されて前記命令デコード手段でデコードされた結果で演算を実行する演算実行手段と、
前記演算実行手段と実行結果バスで接続されて前記演算実行手段の実行結果を格納するデータ格納手段と、
データバスで前記命令デコード手段と演算実行手段とデータ格納手段とを接続し、前記命令格納手段に格納された命令セットの命令を順次実行する手段とを備えた情報処理装置。
【請求項６】
前記命令格納手段とオペランドバスで接続されて前記命令セットの命令のオペランドの部分をデコードし、一つのオペコードを前記複数のニーモニックに割り当てる情報から複数のオペランドに割り当てるオペランドデコード手段とを備えた請求項５記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コードサイズを縮小可能な命令セットおよび、前記命令セットを用いる情報処理装置に関するものである。
【背景技術】
【０００２】
従来、命令実行の並列性を向上させるためには、ＶＬＩＷ、スーパスカラなどの方式がある。ＶＬＩＷの場合、コンパイラの性能が向上することで命令の実行性能を上げることが可能であるが、１命令の長さが従来のプロセッサに比べて長くなり、コードサイズが増大するという問題がある。また依存関係にない複数の命令を１つの命令としてまとめて同時に実行するため、データ処理系のプログラムの並列度を向上するには向いているが、制御系のプログラムでは並列度が上がりにくい（例えば、非特許文献１参照）。一方、スーパスカラでは、ハードウェアがスケジューラを備え、ハードウェアがソフトウェアに内在する依存関係を解決し、投機的実行、分岐予測などのハードウェアを搭載して、命令実行を制御する必要があった（例えば、非特許文献１参照）。
【特許文献１】岩波講座マイクロエレクトロニクスＶＬＳＩコンピュータＩ
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来の構成では、プログラムの並列度を向上させようとすると、ＶＬＩＷの場合プログラムのオブジェクトサイズが増大するという問題点があった。またスーパスカラの場合、ハードが複雑になるという問題点があった。
【０００４】
したがって、本発明の目的は、上記従来の問題点を解決するものであって、比較的簡単な手段でプログラムの並列性を向上することができる命令セットおよび情報処理装置を提供することである。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の請求項１記載の命令セットは、プログラムの現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、現在実行対象命令のオペコードの前後の少なくとも１つ以上の命令のオペコードに依存して、少なくとも１つ以上のニーモニックを割り当てる方式を備える。
【０００６】
請求項２記載の命令セットは、請求項１記載の命令セットにおいて、現在実行対象命令のオペコードに割り当てられた少なくとも１つ以上のニーモニックの有効化、無効化を設定する手段を備えた。
【０００７】
請求項３記載の命令セットは、請求項１または２記載の命令セットにおいて、現在実行対象命令のオペコードに割り当てられたニーモニックの割り当て方式を少なくとも２種類以上備え、割り当て方式を選択可能な手段を備えた。
【０００８】
請求項４記載の命令セットは、請求項１，２または３記載の命令セットにおいて、プログラム実行順序に２種類以上の分岐条件があるとき、実現可能性のある全てのニーモニックを分岐条件に対応するオペコードに割り当てる手段を備えた。
【０００９】
請求項５記載の情報処理装置は、請求項１，２，３または４記載の命令セットの命令を格納する命令格納手段と、命令格納手段と命令バスで接続されて命令セットの命令をデコードし、１つのオペコードを前後の命令から複数のニーモニックに割り当てる命令デコード手段と、命令デコード手段とデコードバスで接続されて命令デコード手段でデコードされた結果で演算を実行する演算実行手段と、演算実行手段と実行結果バスで接続されて演算実行手段の実行結果を格納するデータ格納手段と、データバスで命令デコード手段と演算実行手段とデータ格納手段とを接続し、命令格納手段に格納された命令セットの命令を順次実行する手段とを備えた。
【００１０】
請求項６記載の情報処理装置は、請求項５記載の情報処理装置において、命令格納手段とオペランドバスで接続されて命令セットの命令のオペランドの部分をデコードし、一つのオペコードを複数のニーモニックに割り当てる情報から複数のオペランドに割り当てるオペランドデコード手段とを備えた。
【発明の効果】
【００１１】
本発明の請求項１記載の命令セットによれば、プログラムの現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、現在実行対象命令のオペコードの前後の少なくとも１つ以上の命令のオペコードに依存して、少なくとも１つ以上のニーモニックを割り当てる方式を備えるので、同一命令コード幅で定義できる命令数を増加させることによってプログラムのオブジェクトサイズを圧縮することができる。このため、比較的簡単な手段でプログラムの並列性を向上することが可能である優れた命令セットを実現することができる。
【００１２】
請求項２では、請求項１記載の命令セットにおいて、現在実行対象命令のオペコードに割り当てられた少なくとも１つ以上のニーモニックの有効化、無効化を設定する手段を備えていることが好ましい。前後１命令のオペコードに依存してニーモニックが決定していることにより発生する不必要な並列実行を防ぐことができ、正しいプログラム実行が可能となる。
【００１３】
請求項３では、請求項１または２記載の命令セットにおいて、現在実行対象命令のオペコードに割り当てられたニーモニックの割り当て方式を少なくとも２種類以上備え、割り当て方式を選択可能な手段を備えていることが好ましい。プログラムに応じて最適なコードサイズを実現可能となる。
【００１４】
請求項４では、請求項１，２または３記載の命令セットにおいて、プログラム実行順序に２種類以上の分岐条件があるとき、実現可能性のある全てのニーモニックを分岐条件に対応するオペコードに割り当てる手段を備えていることが好ましい。分岐の際に並列実行性の向上を図ることが可能となる。
【００１５】
本発明の請求項５記載の情報処理装置によれば、命令格納手段と、命令格納手段と命令バスで接続されて命令セットの命令をデコードし、１つのオペコードを前後の命令から複数のニーモニックに割り当てる命令デコード手段と、命令デコード手段とデコードバスで接続されて命令デコード手段でデコードされた結果で演算を実行する演算実行手段と、演算実行手段と実行結果バスで接続されて演算実行手段の実行結果を格納するデータ格納手段と、データバスで命令デコード手段と演算実行手段とデータ格納手段とを接続し、命令格納手段に格納された命令セットの命令を順次実行する手段とを備えているので、１つのオペコードが前後の命令から複数のニーモニックに割り当てられることにより、プログラムの縮小、処理速度の向上および命令コード種類の削減を図る情報処理装置を実現することが可能となる。
【００１６】
請求項６では、請求項５記載の情報処理装置において、命令格納手段とオペランドバスで接続されて命令セットの命令のオペランドの部分をデコードし、一つのオペコードを複数のニーモニックに割り当てる情報から複数のオペランドに割り当てるオペランドデコード手段とを備えていることが好ましい。一つのオペコードが前後の命令から複数のオペランドに割り当てられるので、オペコードの縮小に加え、オペランドを多重化することで、命令メモリの使用容量を低減することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の第１の実施形態について、図１および図２を参照しながら説明する。
【００１８】
図１は、本実施形態における命令セットでオペコードにニーモニックを割り当てる方式を示す図面である。
【００１９】
この命令セットは、プログラムの現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、現在実行対象命令のオペコードの前後の少なくとも１つ以上の命令のオペコードに依存して、少なくとも１つ以上のニーモニックを割り当てる方式を備える。
【００２０】
説明を簡単にするために、現在実行対象命令のオペコードは、前後１命令のオペコードに依存するものとする。Ａ，Ｂ、Ｃは命令のオペコードを表すものとする。現在実行対象命令のオペコードが、Ａ，Ｂ，Ｃである場合、割り当てられたニーモニックはそれぞれ、ＭＯＶ、ＡＤＤ、ＳＵＢであるものとする。
【００２１】
現在実行対象命令のオペコードがＡで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００２２】
現在実行対象命令のオペコードがＡで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＤＩＶのニーモニックが割り当てられている。
【００２３】
現在実行対象命令のオペコードがＡで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【００２４】
現在実行対象命令のオペコードがＡで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【００２５】
次に現在実行対象命令のオペコードがＢで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【００２６】
現在実行対象命令のオペコードがＢで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【００２７】
現在実行対象命令のオペコードがＢで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＮＯＴのニーモニックが割り当てられている。
【００２８】
現在実行対象命令のオペコードがＢで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００２９】
次に現在実行対象命令のオペコードがＣで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【００３０】
現在実行対象命令のオペコードがＣで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【００３１】
現在実行対象命令のオペコードがＣで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【００３２】
現在実行対象命令のオペコードがＣで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【００３３】
以上のように構成された本実施形態の命令セットについて、以下、その動作を説明する。
【００３４】
図２は本実施形態の命令セットでオペコードにニーモニックを割り当てた結果とプログラム実行例とを示す図面である。
【００３５】
説明を簡単にするために、オペコードＡ、Ｂ、Ｃの順に並べられたプログラムを用いて説明する。
【００３６】
第１に実行される命令は第１のオペコードＡである。オペコードＡが現在実行対象命令である場合、ニーモニックとしてＭＯＶが割り当てられる。
【００３７】
第２に実行される命令は第２のオペコードＢである。オペコードＢが現在実行対象命令である場合、ニーモニックとしてＡＤＤが割り当てられる。１つ前の命令Ａである場合、ＡＤＤに加えてＯＲが割り当てられる。１つ後の命令がＣである場合、ＡＤＤ、ＯＲに加えてＭＵＬが割り当てられる。
【００３８】
第３に実行される命令は第３のオペコードＣである。オペコードＣが現在実行対象命令である場合、ニーモニックとしてＳＵＢが割り当てられる。１つ前の命令Ｂである場合、ＳＵＢに加えてＸＯＲが割り当てられる。
【００３９】
以上のように本実施形態によれば、前後の少なくとも１つ以上の命令のオペコードに依存して、現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、少なくとも１つ以上のニーモニックを割り当てられた命令セットを設けることにより、同一の命令コード幅で定義できる命令数を増加させることによってプログラムのオブジェクトサイズを圧縮することができる。
【００４０】
以下、本発明の第２の実施形態について、図３を参照しながら説明する。
【００４１】
図３は、本発明の第２の実施形態における命令セットでオペコードにニーモニックを割り当てた結果とプログラム実行例とを示す図面である。
【００４２】
この命令セットは、現在実行対象命令のオペコードに割り当てられた少なくとも１つ以上のニーモニックの有効化、無効化を設定する手段を備えている。
【００４３】
説明を簡単にするために、現在実行対象命令のオペコードは、前後１命令のオペコードに依存するものとする。
【００４４】
オペコードに３ビットのフィールドを設け、第１、第２、第３のビットはそれぞれ、現在実行対象命令のニーモニック、１つ前の命令に依存して割り当てられたニーモニック、１つ後の命令に依存して割り当てられたニーモニックのそれぞれを有効化、無効化の設定を行うことが可能であるとする。
【００４５】
オペコードＡ、Ｂ、Ｃの順に並べられたプログラムで、第１のオペコードＡには、ニーモニックとして、オペコードＡ本来のニーモニックであるＭＯＶが割り当てられているとする。
【００４６】
第２のオペコードＢには、ニーモニックとして、オペコードＢ本来のニーモニックであるＡＤＤ、１つ前の命令に依存して割り当てられたニーモニックとしてＯＲ、１つ後の命令に依存して割り当てられたニーモニックとしてＭＵＬが割り当てられているとする。
【００４７】
第３のオペコードＣには、オペコードＣの本来のニーモニックとしてＳＵＢ、１つ前の命令に依存して割り当てられたニーモニックとしてＸＯＲが割り当てられているとする。
【００４８】
以上のように構成された第２の実施形態の命令セットについて、以下、その動作を説明する。
【００４９】
説明を簡単にするために、オペコードＡ、Ｂ、Ｃの順に並べられたプログラムを用いて説明する。
【００５０】
オペコードＡ、Ｂ、Ｃの順に並べられたプログラムで、第１のオペコードＡには、ニーモニックとして、オペコードＡ本来のニーモニックであるＭＯＶが割り当てられており、ニーモニック有効無効設定フィールドの第１、第２、第３はそれぞれ、有効、無効、無効であるため、現在実行対象命令のニーモニックであるＭＯＶのみが実行される。
【００５１】
第２のオペコードＢには、ニーモニックとして、オペコードＢ本来のニーモニックであるＡＤＤ、１つ前の命令に依存して割り当てられたニーモニックとしてＯＲ、１つ後の命令に依存して割り当てられたニーモニックとしてＭＵＬが割り当てられおり、ニーモニック有効無効設定フィールドの第１、第２、第３はそれぞれ、有効、無効、無効であるため、現在実行対象命令のニーモニックであるＡＤＤのみが実行される。
【００５２】
第３のオペコードＣには、オペコードＣの本来のニーモニックとしてＳＵＢ、１つ前の命令に依存して割り当てられたニーモニックとしてＸＯＲが割り当てられており、ニーモニック有効無効設定フィールドの第１、第２、第３はそれぞれ、有効、無効、無効であるため、現在実行対象命令のニーモニックであるＳＵＢのみが実行される。
【００５３】
以上のように本発明の第２の実施形態によれば、現在実行対象命令のオペコードに割り当てられた少なくとも１つ以上のニーモニックの有効化、無効化手段を備えることにより、前後１命令のオペコードに依存してニーモニックが決定していることにより発生する不必要な並列実行を防ぐことができ、正しいプログラム実行が可能となる。
【００５４】
以下、本発明の第３の実施形態について、図４〜図６を参照しながら説明する。
【００５５】
図４、図５は、本発明の第３の実施形態における命令セットでオペコードにニーモニックを割り当てる方式を示す図面である。
【００５６】
この命令セットは、現在実行対象命令のオペコードに割り当てられたニーモニックの割り当て方式を少なくとも２種類以上備え、割り当て方式を選択可能な手段を備えている。
【００５７】
説明を簡単にするために、現在実行対象命令のオペコードは、前後１命令のオペコードに依存するものとする。
【００５８】
図４において、Ａ、Ｂ、Ｃは命令のオペコードを表すものとする。現在実行対象命令のオペコードが、Ａ、Ｂ、Ｃである場合、割り当てられたニーモニックはそれぞれ、ＭＯＶ、ＡＤＤ、ＳＵＢであるものとする。
【００５９】
現在実行対象命令のオペコードがＡで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００６０】
現在実行対象命令のオペコードがＡで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＤＩＶのニーモニックが割り当てられている。
【００６１】
現在実行対象命令のオペコードがＡで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【００６２】
現在実行対象命令のオペコードがＡで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＭＯＶのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【００６３】
次に現在実行対象命令のオペコードがＢで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【００６４】
現在実行対象命令のオペコードがＢで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【００６５】
現在実行対象命令のオペコードがＢで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＮＯＴのニーモニックが割り当てられている。
【００６６】
現在実行対象命令のオペコードがＢで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００６７】
次に現在実行対象命令のオペコードがＣで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【００６８】
現在実行対象命令のオペコードがＣで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【００６９】
現在実行対象命令のオペコードがＣで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【００７０】
現在実行対象命令のオペコードがＣで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【００７１】
図５において、Ａ、Ｂ、Ｃは命令のオペコードを表すものとする。現在実行対象命令のオペコードが、Ａ、Ｂ、Ｃである場合、割り当てられたニーモニックはそれぞれ、ＡＤＤ、ＳＵＢ、ＭＯＶであるものとする。
【００７２】
現在実行対象命令のオペコードがＡで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＡＤＤのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００７３】
現在実行対象命令のオペコードがＡで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＡＤＤのニーモニックの他に、ＤＩＶのニーモニックが割り当てられている。
【００７４】
現在実行対象命令のオペコードがＡで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＡＤＤのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【００７５】
現在実行対象命令のオペコードがＡで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＡＤＤのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【００７６】
次に現在実行対象命令のオペコードがＢで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＳＵＢのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【００７７】
現在実行対象命令のオペコードがＢで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＳＵＢのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【００７８】
現在実行対象命令のオペコードがＢで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＳＵＢのニーモニックの他に、ＮＯＴのニーモニックが割り当てられている。
【００７９】
現在実行対象命令のオペコードがＢで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＳＵＢのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００８０】
次に現在実行対象命令のオペコードがＣで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＭＯＶのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【００８１】
現在実行対象命令のオペコードがＣで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＭＯＶのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【００８２】
現在実行対象命令のオペコードがＣで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＭＯＶのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【００８３】
現在実行対象命令のオペコードがＣで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＭＯＶのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【００８４】
図６は本発明の第３の実施形態の命令セットでオペコードにニーモニックを割り当てた結果とプログラム実行例とを示す図面である。
【００８５】
図６に示すように、オペコードに１ビットのフィールドを設け、第１のビットは、現在実行対象命令のニーモニックを決定するのに、第１の割り当て方式を用いるか、第２の割り当て方式を用いるかの設定を行うことが可能であるとする。
【００８６】
以上のように構成された本実施形態の命令セットについて、以下、その動作を説明する。
【００８７】
説明を簡単にするために、オペコードＡ、Ｂ、Ｃの順に並べられたプログラムを用いて説明する。
【００８８】
第１に実行される命令は第１のオペコードＡで、使用するニーモニックの割り当て方式は第１の割り当て方式である。オペコードＡが現在実行対象命令である場合、ニーモニックとしてＭＯＶが割り当てられる。
【００８９】
第２に実行される命令は第２のオペコードＢで、使用するニーモニックの割り当て方式は第２の割り当て方式である。オペコードＢが現在実行対象命令である場合、ニーモニックとしてＳＵＢが割り当てられる。１つ前の命令Ａである場合、ＳＵＢに加えてＯＲが割り当てられる。１つ後の命令がＣである場合、ＳＵＢ、ＯＲに加えてＭＵＬが割り当てられる。
【００９０】
第３に実行される命令は第３のオペコードＣで、使用するニーモニックの割り当て方式は第２の割り当て方式である。オペコードＣが現在実行対象命令である場合、ニーモニックとしてＭＯＶが割り当てられる。１つ前の命令Ｂである場合、ＭＯＶに加えてＸＯＲが割り当てられる。
【００９１】
以上のように本発明の第３の実施形態によれば、前後の少なくとも１つ以上の命令のオペコードに依存して、現在実行対象命令のオペコードにニーモニックを割り当てる方式を少なくとも２種類以上備えることにより、プログラムに応じて最適なコードサイズを実現可能となる。すなわち、割り当て方式を複数備えていれば、現在実行中の命令と前後の命令から作成される命令シーケンスを１個の割り当て方式の場合より自由度を上げることができるのでより小サイズのコードサイズを実現可能である。
【００９２】
以下、本発明の第４の実施形態について、図７および図８を参照しながら説明する。
【００９３】
図７は、本発明の第４の実施形態における命令セットでオペコードにニーモニックを割り当てる方式を示す図面である。
【００９４】
この命令ステップは、プログラム実行順序に２種類以上の分岐条件があるとき、実現可能性のある全てのニーモニックを分岐条件に対応するオペコードに割り当てる手段を備えている。
【００９５】
説明を簡単にするために、現在実行対象命令のオペコードは、前後１命令のオペコードに依存するものとする。
【００９６】
図７において、Ａ，Ｂ、Ｃは命令のオペコードを表すものとする。現在実行対象命令のオペコードが、Ａ、Ｂ、Ｃである場合、割り当てられたニーモニックはそれぞれ、ＢＥＱ、ＡＤＤ、ＳＵＢであるものとする。
【００９７】
現在実行対象命令のオペコードがＡで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＢＥＱのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【００９８】
現在実行対象命令のオペコードがＡで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＢＥＱのニーモニックの他に、ＤＩＶのニーモニックが割り当てられている。
【００９９】
現在実行対象命令のオペコードがＡで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＢＥＱのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【０１００】
現在実行対象命令のオペコードがＡで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＢＥＱのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【０１０１】
次に現在実行対象命令のオペコードがＢで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【０１０２】
現在実行対象命令のオペコードがＢで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【０１０３】
現在実行対象命令のオペコードがＢで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＮＯＴのニーモニックが割り当てられている。
【０１０４】
現在実行対象命令のオペコードがＢで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【０１０５】
次に現在実行対象命令のオペコードがＣで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【０１０６】
現在実行対象命令のオペコードがＣで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【０１０７】
現在実行対象命令のオペコードがＣで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【０１０８】
現在実行対象命令のオペコードがＣで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【０１０９】
図８は本発明の第４の実施形態の命令セットでオペコードにニーモニックを割り当てた結果とプログラム実行例とを示す図面である。
【０１１０】
図８に示すように、第１のオペコードがＡで、割り当てられたニーモニックがＢＥＱであるとする。ＢＥＱは分岐命令であるので、分岐条件が成立する場合、後続の実行対象命令のオペコードがＢ、Ｃであるものとする。分岐条件が成立しない場合、後続の実行対象命令のオペコードがＣ、Ｂであるものとする。
【０１１１】
第２のオペコードには、分岐条件が成立する場合の後続の実行対象命令のオペコードＢと分岐条件が成立しない場合の後続の実行対象命令のオペコードＣが割り当てられるものとする。
【０１１２】
第３のオペコードには、分岐条件が成立する場合の後続の実行対象命令のオペコードＣと分岐条件が成立しない場合の後続の実行対象命令のオペコードＢが割り当てられるものとする。
【０１１３】
第１のオペコードの分岐条件が成立する場合を説明する。
【０１１４】
第１、第２、第３のオペコードが、それぞれＡ、Ｂ、Ｃである場合、割り当てられたニーモニックはそれぞれ、ＢＥＱ、ＡＤＤ、ＳＵＢである。
【０１１５】
現在実行対象命令のオペコードがＡで、１つ後の命令がＢである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＢＥＱのニーモニックの他に、ＤＩＶのニーモニックが割り当てられている。
【０１１６】
現在実行対象命令のオペコードがＢで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＯＲのニーモニックが割り当てられている。
【０１１７】
現在実行対象命令のオペコードがＢで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＡＤＤのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【０１１８】
現在実行対象命令のオペコードがＣで、１つ前の命令がＢである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＸＯＲのニーモニックが割り当てられている。
【０１１９】
次に第１のオペコードの分岐条件が不成立する場合を説明する。
【０１２０】
第２、第３のオペコードが、それぞれＡ、Ｃ、Ｂである場合、割り当てられたニーモニックはそれぞれ、ＳＵＢ、ＡＤＤである。
【０１２１】
現在実行対象命令のオペコードがＡで、１つ後の命令がＣである場合、現在実行対象命令のオペコードがＡには、Ａ本来のＢＥＱのニーモニックの他に、ＭＵＬのニーモニックが割り当てられている。
【０１２２】
現在実行対象命令のオペコードがＣで、１つ前の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｂ本来のＳＵＢのニーモニックの他に、ＡＮＤのニーモニックが割り当てられている。
【０１２３】
現在実行対象命令のオペコードがＣで、１つ後の命令がＡである場合、現在実行対象命令のオペコードがＣには、Ｃ本来のＳＵＢのニーモニックの他に、ＣＭＰのニーモニックが割り当てられている。
【０１２４】
現在実行対象命令のオペコードがＢで、１つ前の命令がＣである場合、現在実行対象命令のオペコードがＢには、Ｂ本来のＡＤＤのニーモニックの他に、ＮＯＴのニーモニックが割り当てられている。
【０１２５】
以上のように構成された本実施形態の命令セットについて、以下、その動作を説明する。
【０１２６】
第１に実行される命令は第１のオペコードＡで、オペコードＡが現在実行対象命令である場合、ニーモニックとしてＢＥＱが割り当てられる。
【０１２７】
使用するニーモニックの割り当ては、ＢＥＱの条件が成立する場合、第２、第３のオペコードはそれぞれＢ、Ｃ、ＢＥＱの条件が不成立の場合、第２、第３のオペコードＣ、Ｂに対してともに割り当てられるとする。オペコードＡの１つ後のオペコードがＢ、Ｃであるので、ニーモニックとして、ＢＥＱ、ＤＩＶ、ＭＵＬが割り当てられる。
【０１２８】
第２に実行される命令は第２のオペコードＢ、Ｃで、オペコードＢ、Ｃが現在実行対象命令である場合、ニーモニックとしてＡＤＤ、ＳＵＢが割り当てられる。
【０１２９】
使用するニーモニックの割り当ては、ＢＥＱの条件が成立する場合、第１のオペコードはＡ、第３のオペコードはそれぞれＣ、Ｂであることから、ニーモニックとして、ＯＲ、ＡＤＤ、ＭＵＬ、ＡＮＤ、ＳＵＢ、ＣＭＰが割り当てられる。
【０１３０】
第３に実行される命令は第３のオペコードＣ、Ｂで、オペコードＣ、Ｂが現在実行対象命令である場合、ニーモニックとしてＳＵＢ、ＡＤＤが割り当てられる。
【０１３１】
使用するニーモニックの割り当ては、ＢＥＱの条件が成立する場合、第２のオペコードはそれぞれＢ、Ｃ、であることから、ニーモニックとして、ＸＯＲ，ＳＵＢ、ＮＯＴ、ＡＤＤが割り当てられる。
【０１３２】
以上のように本発明の第４の実施形態によれば、プログラム実行順序に２種類以上の実現可能性がある場合、可能性のあるすべてのニーモニックをオペコードに割り当て可能な命令セットを備えることにより、分岐の際の並列実行性の向上を図ることが可能となる。
【０１３３】
以下、本発明の第５の実施形態について、図９を参照しながら説明する。
【０１３４】
図９は、本発明の第４の実施形態における命令セットで、命令を順次実行する手段を備えた情報処理装置である。
【０１３５】
図９において、５００は、第１〜４のいずれかの実施形態における命令セットの命令を格納する命令格納手段、５０１は、前記命令セットの命令をデコードする命令デコード手段、５０２は、命令デコード手段５０１でデコードされた結果で演算を実行する演算実行手段、５０３は、演算実行手段５０２の実行結果を格納するデータ格納手段、５０４は、命令格納手段５００と命令デコード手段５０１とを接続する命令バス、５０５は、命令デコード手段５０１と演算実行手段５０２とを接続するデコードバス、５０６は、演算実行手段５０２とデータ格納手段５０３とを接続する実行結果バス、５０７は、命令デコード手段５０１、演算実行手段５０２およびデータ格納手段５０３とを接続するデータバスである。
【０１３６】
以上のように構成された第５の実施形態の情報処理装置について、以下、その動作を説明する。
【０１３７】
命令格納手段５００には、命令セットの命令が格納されている。第１の命令、第２の命令は、それぞれ、前後の命令から複数のニーモニックに割り当て可能な１つのオペコードと、前記複数のニーモニックに対応したオペランドから構成され、命令格納手段５００に格納されている。命令格納手段５００から第１の命令が命令バス５０４を経て、命令デコード手段５０１に入力される。命令デコード手段５０１では、１つのオペコードを、前後の命令から複数のニーモニックに割り当てる。命令デコード手段５０１で生成された複数のニーモニックは、デコードバス５０５を経て、演算実行手段５０２に入力される。前記複数のニーモニックに対応したオペランドは、データバス５０７を経て、前記複数のニーモニックに応じて、演算実行手段５０２、データ格納手段５０３で処理を行い、前記複数のニーモニックに対応したオペランドに応じてデータの格納を行う。第１の命令の処理が終了すると引き続き第２の命令の処理を行う。
【０１３８】
以上のように本発明の第５の実施形態によれば、命令格納手段と、前記命令格納手段と命令バスで接続された命令デコード手段と、前記命令デコード手段とデコードバスで接続された演算実行手段と、前記演算実行手段と実行結果バスで接続されたデータ格納手段と、データバスで前記命令デコード手段と演算実行手段とデータ格納手段とを接続し、前記命令格納手段に命令セットを格納し、命令を順次実行する手段を備えることにより、１つのオペコードが前後の命令から複数のニーモニックに割り当てられるため、プログラムの縮小、処理速度の向上および命令コード種類の削減を図る情報処理装置を実現することが可能となる。
【０１３９】
以下、本発明の第６の実施形態について、図１０を参照しながら説明する。
【０１４０】
図１０は、本発明の第６の実施形態で、前記命令格納手段とオペランドバスで接続されたオペランドデコード手段を備えた情報処理装置である。
【０１４１】
図１０において、６００は、第１〜４のいずれかの実施形態における命令セットの命令を格納する命令格納手段、６０１は、命令格納手段６００に格納された命令のオペランド部分をデコードするオペランドデコード手段、６０２は、命令格納手段６００とオペランドデコード手段６０１とを接続するオペランドバスである。
【０１４２】
以上のように構成された第６の実施形態の情報処理装置について、以下、その動作を説明する。
【０１４３】
命令格納手段６００には、命令セットの命令が格納されている。第１の命令、第２の命令は、それぞれ、前後の命令から複数のニーモニックに割り当て可能な１つのオペコードと、前記複数のニーモニックに対応したオペランドを代表した１つのオペランドから構成され、命令格納手段６００に格納されている。命令格納手段６００から第１の命令が命令バス５０４を経て、命令デコード手段５０１に入力される。命令デコード手段５０１では、１つのオペコードを、前後の命令から複数のニーモニックに割り当てる。命令デコード手段５０１で生成された複数のニーモニックは、デコードバス５０５を経て、演算実行手段５０２に入力される。同時に前記複数のニーモニックに対応したオペランドを代表した１つのオペランドは、命令格納手段６００からオペランドバス６０２を経てオペランドデコード手段６０１に入力される。命令デコード手段５０１における、１つのオペコードを前後の命令から複数のニーモニックに割り当てる情報から、オペランドデコード手段６０１で、一つのオペコードを複数のオペランドに割り当てる。
【０１４４】
以上のように本発明の第６の実施形態によれば、前記命令格納手段とオペランドバスで接続されたオペランドデコード手段を備えることにより、１つのオペコードが前後の命令から複数のニーモニックに割り当てられるのに加えて、１つのオペコードが前後の命令から複数のオペランドに割り当てられるので、オペコードの縮小に加え、オペランドを多重化することで、命令メモリの使用容量を低減することができる。
【産業上の利用可能性】
【０１４５】
本発明にかかる命令セットおよび情報処理装置は、前後の少なくとも１つ以上の命令のオペコードに依存して、現在実行対象命令のオペコードに割り当てられたニーモニックに加えて、少なくとも１つ以上のニーモニックを割り当てる方式を有し、同一の命令コード幅で定義できる命令数を増加させることによってプログラムのオブジェクトサイズを圧縮する等として有用である。
【図面の簡単な説明】
【０１４６】
【図１】本発明の第１の実施形態の命令セットの説明図である。
【図２】本発明の第１の実施形態のプログラム実行例の説明図である。
【図３】本発明の第２の実施形態のプログラム実行例の説明図である。
【図４】本発明の第３の実施形態の命令セットの第１の割り当て方式の説明図である。
【図５】本発明の第３の実施形態の命令セットの第２の割り当て方式の説明図である。
【図６】本発明の第３の実施形態のプログラム実行例の説明図である。
【図７】本発明の第４の実施形態における命令セットの説明図である。
【図８】本発明の第４の実施形態のプログラム実行例の説明図である。
【図９】本発明の第５の実施形態の情報処理装置のブロック図である。
【図１０】本発明の第６の実施形態の情報処理装置のブロック図である。
【符号の説明】
【０１４７】
５００  命令格納手段
５０１  命令デコード手段
５０２  演算実行手段
５０３  データ格納手段
５０４  命令バス
５０５  デコードバス
５０６  実行結果バス
５０７  データバス
６００  命令格納手段
６０１  オペランドデコード手段
６０２  オペランドバス
【図１】
2008027341.tif 000003
【図２】
2008027341.tif 000004
【図３】
2008027341.tif 000005
【図４】
2008027341.tif 000006
【図５】
2008027341.tif 000007
【図６】
2008027341.tif 000008
【図７】
2008027341.tif 000009
【図８】
2008027341.tif 000010
【図９】
2008027341.tif 000011
【図１０】
2008027341.tif 000012