(57)【要約】【課題】複数の命令セットアーキテクチャに対応した汎用的なデコード装置を実現する。【解決手段】デコード処理の対象となるデコード対象命令データを命令データ格納レジスタ１ｄに格納し、デコード対象命令データのデータ形式に対応するマスク値をマスク値格納レジスタ１ｅに格納し、デコード対象命令データのデータ形式に対応するシフト値をシフト値格納レジスタ１ｆに格納し、ＡＮＤ回路群１ａ−１〜１ａ−４がマスク値格納レジスタ１ｅに格納されたマスク値を用いて演算単位ビット数（例えば８ビット）ごとにデコード対象命令データのマスク演算を行ってビットの抽出を行い、シフト回路群１ｂ−１〜１ｂ−４がビット抽出が行われた値に対してシフト値格納レジスタ１ｆに格納されたシフト値を用いてシフト操作を行い、ＯＲ回路１ｃがシフト操作後の値をマージしてデコード結果としてデコード結果データ用レジスタ５に格納する。【選択図】        図１
2004199370.tif 000002
【特許請求の範囲】
【請求項１】
複数種のデータ形式の命令データについて、それぞれのデータ形式の命令データに対するデコード処理が可能なデコード装置であって、
デコード処理の対象となるデコード対象命令データを入力し格納するデコード対象命令データ格納部と、
デコード対象命令データのデータ形式に対応する第１の演算値を入力し格納する第１の演算値格納部と、
デコード対象命令データのデータ形式に対応する第２の演算値を入力し格納する第２の演算値格納部と、
前記デコード対象命令データ格納部に格納されたデコード対象命令データと前記第１の演算値格納部に格納された第１の演算値とを用いて第１の演算を行う第１の演算部と、
前記第１の演算部による演算結果と前記第２の演算値格納部に格納された第２の演算値とを用いて第２の演算を行う第２の演算部と、
前記第２の演算部による演算結果をデコード結果として出力するデコード結果出力部とを有することを特徴とするデコード装置。
【請求項２】
前記デコード対象命令データ格納部は、
所定の演算単位ビット数ごとに区分されたデコード対象命令データを格納し、
前記第１の演算値格納部は、演算単位ビット数ごとに区分された第１の演算値を格納し、
前記第２の演算値格納部は、
演算単位ビット数ごとに区分された第２の演算値を格納し、
前記第１の演算部は、
前記デコード対象命令データ格納部に格納された演算単位ビット数ごとに区分されたデコード対象命令データと前記第１の演算値格納部に格納された演算単位ビット数ごとに区分された第１の演算値とを用いて演算単位ビット数ごとに第１の演算を行い、
前記第２の演算部は、
前記第１の演算部による演算単位ビット数ごとの演算結果と前記第２の演算値格納部に格納された演算単位ビット数ごとに区分された第２の演算値とを用いて演算単位ビット数ごとに第２の演算を行い、
前記デコード結果出力部は、
前記第２の演算部による演算単位ビット数ごとの演算結果を組合せ、組合せた内容をデコード結果として出力することを特徴とする請求項１に記載のデコード装置。
【請求項３】
前記第１の演算値格納部は、
デコード対象命令データのデータ形式に対応する第１の演算値として、デコード対象命令データのデータ形式に対応するマスク値を格納し、
前記第２の演算値格納部は、
デコード対象命令データのデータ形式に対応する第２の演算値として、デコード対象命令データのデータ形式に対応するシフト値を格納し、
前記第１の演算部は、
前記デコード対象命令データ格納部に格納されたデコード対象命令データと前記第１の演算値格納部に格納されたマスク値とを用いてデコード対象命令データに対するマスク演算を行い、
前記第２の演算部は、
前記第１の演算部によるマスク演算結果と前記第２の演算値格納部に格納されたシフト値とを用いて前記第１の演算部によるマスク演算結果に対するシフト演算を行い、
前記デコード結果出力部は、
前記第２の演算部によるシフト演算結果をデコード結果として出力することを特徴とする請求項１に記載のデコード装置。
【請求項４】
前記デコード対象命令データ格納部は、
所定の演算単位ビット数ごとに区分されたデコード対象命令データを格納し、
前記第１の演算値格納部は、
デコード対象命令データのデータ形式に対応する第１の演算値として、演算単位ビット数ごとに区分されたマスク値を格納し、
前記第２の演算値格納部は、
デコード対象命令データのデータ形式に対応する第２の演算値として、演算単位ビット数ごとに区分されたシフト値を格納し、
前記第１の演算部は、
前記デコード対象命令データ格納部に格納された演算単位ビット数ごとに区分されたデコード対象命令データと前記第１の演算値格納部に格納された演算単位ビット数ごとに区分されたマスク値とを用いて演算単位ビット数ごとにデコード対象命令データに対するマスク演算を行い、
前記第２の演算部は、
前記第１の演算部による演算単位ビット数ごとのマスク演算結果と前記第２の演算値格納部に格納された演算単位ビット数ごとに区分されたシフト値とを用いて演算単位ビット数ごとに第１の演算部によるマスク演算結果に対するシフト演算を行い、
前記デコード結果出力部は、
前記第２の演算部による演算単位ビット数ごとのシフト演算結果を組合せ、組合せた内容をデコード結果として出力することを特徴とする請求項１に記載のデコード装置。
【請求項５】
複数種の命令セットアーキテクチャの命令データについて、それぞれの命令セットアーキテクチャの命令データに対するデコード処理が可能なデコード装置であって、
命令データのデータ形式を判定するための第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値をそれぞれ命令セットアーキテクチャごとに記憶するデータ形式判定用演算値記憶部と、
命令データに対するデコード処理を行うための第１のデコード用演算値及び第２のデコード用演算値をそれぞれ命令データのデータ形式ごとに記憶するデコード用演算値記憶部と、
デコード処理の対象となるデコード対象命令データの命令セットアーキテクチャを示す命令セットアーキテクチャ情報を入力し格納する命令セットアーキテクチャ情報格納部と、
前記命令セットアーキテクチャ情報格納部に格納された命令セットアーキテクチャ情報に対応する第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を前記データ形式判定用演算値記憶部から選択するデータ形式判定用演算値選択部と、
デコード対象命令データを入力するとともに、前記データ形式判定用演算値選択部により選択された第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を入力し、入力した第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を用いてデコード対象命令データに対する演算を行い、デコード対象命令データのデータ形式を判定するデータ形式判定部と、
前記データ形式判定部により判定されたデータ形式を示すデータ形式情報を入力し格納するデータ形式情報格納部と、
前記データ形式情報格納部に格納されたデータ形式情報に対応する第１のデコード用演算値及び第２のデコード用演算値を前記デコード用演算値記憶部から選択するデコード用演算値選択部と、
デコード対象命令データを入力するとともに、前記デコード用演算値選択部により選択された第１のデコード用演算値及び第２のデコード用演算値を入力し、入力した第１のデコード用演算値及び第２のデコード用演算値を用いてデコード対象命令データに対する演算を行い、演算結果をデコード結果として出力するデコード処理部とを有することを特徴とするデコード装置。
【請求項６】
前記データ形式判定用演算値記憶部は、
所定の演算単位ビット数ごとに区分された第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値をそれぞれ命令セットアーキテクチャごとに記憶し、
前記デコード用演算値記憶部は、
所定の演算単位ビット数ごとに区分された第１のデコード用演算値及び第２のデコード用演算値をそれぞれ命令データのデータ形式ごとに記憶し、
前記データ形式判定部は、
演算単位ビット数ごとに区分されたデコード対象命令データを入力するとともに、前記データ形式判定用演算値選択部により選択された演算単位ビット数ごとに区分された第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を入力し、入力した演算単位ビット数ごとに区分された第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を用いて演算単位ビット数ごとにデコード対象命令データに対する演算を行い、デコード対象命令データのデータ形式を判定し、
前記デコード処理部は、
演算単位ビット数ごとに区分されたデコード対象命令データを入力するとともに、前記デコード用演算値選択部により選択された演算単位ビット数ごとに区分された第１のデコード用演算値及び第２のデコード用演算値を入力し、入力した演算単位ビット数ごとに区分された第１のデコード用演算値及び第２のデコード用演算値を用いて演算ビット数ごとにデコード対象命令データに対する演算を行い、演算単位ビット数ごとの演算結果を組合せ、組合せた内容をデコード結果として出力することを特徴とする請求項５に記載のデコード装置。
【請求項７】
前記データ形式判定用演算値記憶部は、
第１のデータ形式判定用演算値としてマスク値を命令セットアーキテクチャごとに格納し、第２のデータ形式判定用演算値としてシフト値を命令セットアーキテクチャごとに記憶し、
前記デコード用演算値記憶部は、
第１のデコード用演算値としてマスク値を命令データのデータ形式ごとに格納し、第２のデコード用演算値としてシフト値を命令データのデータ形式ごとに記憶し、
前記データ形式判定部は、
デコード対象命令データを入力するとともに、前記データ形式判定用演算値選択部により選択された第１のデータ形式判定用演算値であるマスク値及び第２のデータ形式判定用演算値であるシフト値を入力し、入力したマスク値及びシフト値を用いてデコード対象命令データに対する演算を行い、デコード対象命令データのデータ形式を判定し、
前記デコード処理部は、
デコード対象命令データを入力するとともに、前記デコード用演算値選択部により選択された第１のデコード用演算値であるマスク値及び第２のデコード用演算値であるシフト値を入力し、入力したマスク値及びシフト値を用いてデコード対象命令データに対する演算を行い、演算結果をデコード結果として出力することを特徴とする請求項５に記載のデコード装置。
【請求項８】
前記データ形式判定用演算値記憶部は、
第１のデータ形式判定用演算値として演算単位ビット数ごとに区分されたマスク値を命令セットアーキテクチャごとに格納し、第２のデータ形式判定用演算値として演算単位ビット数ごとに区分されたシフト値を命令セットアーキテクチャごとに記憶し、
前記デコード用演算値記憶部は、
第１のデコード用演算値として演算単位ビット数ごとに区分されたマスク値を命令データのデータ形式ごとに格納し、第２のデコード用演算値として演算単位ビット数ごとに区分されたシフト値を命令データのデータ形式ごとに記憶し、
前記データ形式判定部は、
演算単位ビット数ごとに区分されたデコード対象命令データを入力するとともに、前記データ形式判定用演算値選択部により選択された第１のデータ形式判定用演算値であるマスク値及び第２のデータ形式判定用演算値であるシフト値を入力し、入力したマスク値及びシフト値を用いて演算単位ビット数ごとにデコード対象命令データに対する演算を行い、デコード対象命令データのデータ形式を判定し、
前記デコード処理部は、
演算単位ビット数ごとに区分されたデコード対象命令データを入力するとともに、前記デコード用演算値選択部により選択された第１のデコード用演算値であるマスク値及び第２のデコード用演算値であるシフト値を入力し、入力したマスク値及びシフト値を用いて演算単位ビット数ごとにデコード対象命令データに対する演算を行い、演算単位ビット数ごとの演算結果を組合せ、組合せた内容をデコード結果として出力することを特徴とする請求項５に記載のデコード装置。
【請求項９】
前記デコード装置は、
命令データに対するデコード処理を並列に行うために、複数のデコード用演算値記憶部と、複数の命令セットアーキテクチャ情報格納部と、複数のデータ形式判定用演算値選択部と、複数のデータ形式判定部と、複数のデータ形式情報格納部と、複数のデコード用演算値選択部と、複数のデコード処理部とを有することを特徴とする請求項５に記載のデコード装置。
【請求項１０】
前記デコード装置は、
命令データに対するデコード処理を並列に行うために、複数のデータ形式判定用演算値記憶部を有することを特徴とする請求項９に記載のデコード装置。
【請求項１１】
前記命令セットアーキテクチャ情報格納部は、
命令セットアーキテクチャ情報が格納されたレジスタを通知する命令セットアーキテクチャ情報格納レジスタ通知情報に従い該当するレジスタより命令セットアーキテクチャ情報を入力し、
前記データ形式判定部及び前記デコード処理部は、
デコード対象命令データが格納されたレジスタを通知するデコード対象命令データ格納レジスタ通知情報に従い該当するレジスタよりデコード対象命令データを入力することを特徴とする請求項５に記載のデコード装置。
【請求項１２】
複数種のデータ形式の命令データについて、それぞれのデータ形式の命令データに対するデコード処理が可能なデコード方法であって、
デコード処理の対象となるデコード対象命令データを入力し格納するデコード対象命令データ格納ステップと、
デコード対象命令データのデータ形式に対応する第１の演算値を入力し格納する第１の演算値格納ステップと、
デコード対象命令データのデータ形式に対応する第２の演算値を入力し格納する第２の演算値格納ステップと、
前記デコード対象命令データ格納ステップにより格納されたデコード対象命令データと前記第１の演算値格納ステップにより格納された第１の演算値とを用いて第１の演算を行う第１の演算ステップと、
前記第１の演算ステップによる演算結果と前記第２の演算値格納ステップにより格納された第２の演算値とを用いて第２の演算を行う第２の演算ステップと、
前記第２の演算ステップによる演算結果をデコード結果として出力するデコード結果出力ステップとを有することを特徴とするデコード方法。
【請求項１３】
複数種の命令セットアーキテクチャの命令データについて、それぞれの命令セットアーキテクチャの命令データに対するデコード処理が可能なデコード方法であって、
命令データのデータ形式を判定するための第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値をそれぞれ命令セットアーキテクチャごとに記憶するデータ形式判定用演算値記憶ステップと、
命令データに対するデコード処理を行うための第１のデコード用演算値及び第２のデコード用演算値をそれぞれ命令データのデータ形式ごとに記憶するデコード用演算値記憶ステップと、
デコード処理の対象となるデコード対象命令データの命令セットアーキテクチャを示す命令セットアーキテクチャ情報を入力し格納する命令セットアーキテクチャ情報格納ステップと、
前記命令セットアーキテクチャ情報格納ステップにより格納された命令セットアーキテクチャ情報に対応する第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を選択するデータ形式判定用演算値選択ステップと、
デコード対象命令データを入力するとともに、前記データ形式判定用演算値選択ステップにより選択された第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を入力し、入力した第１のデータ形式判定用演算値及び第２のデータ形式判定用演算値を用いてデコード対象命令データに対する演算を行い、デコード対象命令データのデータ形式を判定するデータ形式判定ステップと、
前記データ形式判定ステップにより判定されたデータ形式を示すデータ形式情報を入力し格納するデータ形式情報格納ステップと、
前記データ形式情報格納ステップにより格納されたデータ形式情報に対応する第１のデコード用演算値及び第２のデコード用演算値を選択するデコード用演算値選択ステップと、
デコード対象命令データを入力するとともに、前記デコード用演算値選択ステップにより選択された第１のデコード用演算値及び第２のデコード用演算値を入力し、入力した第１のデコード用演算値及び第２のデコード用演算値を用いてデコード対象命令データに対する演算を行い、演算結果をデコード結果として出力するデコード処理ステップとを有することを特徴とするデコード方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサにおいて、複数の命令セットアーキテクチャに対応するための命令デコード処理技術に関する。
【０００２】
【従来の技術】
マイクロプロセッサは、命令セットアーキテクチャに基づき設計されている命令デコーダにより、制御信号を生成し、命令の処理を行なっている。そして、オペコードは、命令の中の複数の個所に分散して配置されていることがある。
【０００３】
複数の命令セットアーキテクチャの命令処理を行なう場合には、オペコードに対応した処理を呼び出すために、必要なビットを取出し、シフト、他のビットとのマージといったシリアルな処理を、分散しておかれたビット列の数と同じだけ行なう必要があった。
【０００４】
また、エミュレーションを行なう場合にも同様に、必要なビットを取出し、シフト、他のビットとのマージといったシリアルな処理を、分散しておかれたビット列の数と同じだけ行なう必要があった。
【０００５】
複数の命令セットアーキテクチャの命令処理に関しては、特開平２−１９９２７号広報に、複数の命令仕様に合わせたデコーダを用意し、セレクタで選択することにより、特定の命令セットアーキテクチャに対応する技術が開示されている。
【０００６】
【特許文献１】
特開平２−１９９２７号公報
【０００７】
【発明が解決しようとする課題】
様々な命令セットアーキテクチャで作成されたプログラムを、異なる命令セットアーキテクチャのマイクロプロセッサで実行するには、複数の命令セットに対応した汎用的な命令デコーダにて、プロセッサで処理する制御信号を生成する必要がある。
【０００８】
従来の方法は、データを抽出せず、命令セットに合せたデコーダを用意するため、回路が複雑になり、結果として回路規模も大きくなる問題がある。
【０００９】
特開平２−１９９２７号の技術では、複数の命令セットアーキテクチャの命令処理を実行するために、対応する命令セット分のデコーダが必要となり、回路規模も大きくなる問題がある。
【００１０】
そこで、本発明は、上記のような問題を解決することを主目的とする。
【００１１】
【課題を解決するための手段】
本発明に係るデコード装置は、
複数種のデータ形式の命令データについて、それぞれのデータ形式の命令データに対するデコード処理が可能なデコード装置であって、
デコード処理の対象となるデコード対象命令データを入力し格納するデコード対象命令データ格納部と、
デコード対象命令データのデータ形式に対応する第１の演算値を入力し格納する第１の演算値格納部と、
デコード対象命令データのデータ形式に対応する第２の演算値を入力し格納する第２の演算値格納部と、
前記デコード対象命令データ格納部に格納されたデコード対象命令データと前記第１の演算値格納部に格納された第１の演算値とを用いて第１の演算を行う第１の演算部と、
前記第１の演算部による演算結果と前記第２の演算値格納部に格納された第２の演算値とを用いて第２の演算を行う第２の演算部と、
前記第２の演算部による演算結果をデコード結果として出力するデコード結果出力部とを有することを特徴とする。
【００１２】
【発明の実施の形態】
実施の形態１．
本発明の実施の形態について図面を参照して説明する。
図１は本発明の一実施の形態を示すブロック図である。
図において、１は複合回路、１ａ−１〜１ａ−４はＡＮＤ回路群、１ｂ−１〜１ｂ−４はシフト回路群、１ｃはＯＲ回路、１ｄは命令データ格納レジスタ、１ｅはマスク値格納レジスタ、１ｆはシフト値格納レジスタを示す。
図中の２は入力される命令データ（デコード対象命令データ）の保持レジスタを示し、３は入力される命令データの中からデータ形式の選択のためのビット抽出用マスクデータの保持レジスタを示し、４は入力される命令データの中から形式選択のためのビット抽出用シフトデータの保持レジスタを示す。
図中５は複合回路１からのデコード結果を保持するデコード結果データ用レジスタを示し、６は演算装置を制御する制御信号を示す。
【００１３】
本実施の形態では、複合回路１はデコード装置の例に相当し、複数種の命令データについてそれぞれのデータ形式の命令データに対するデコード処理が可能である。
また、命令データ格納レジスタ１ｄはデコード対象命令データ格納部の例に相当し、デコード処理の対象となる命令データ（デコード対象命令データ）を入力し格納する。命令データ格納レジスタ１ｄが格納するデコード対象命令データは所定の演算単位ビット数（例えば８ビット）ごとに区分されている。
マスク値格納レジスタ１ｅは、第１の演算値格納部の例に相当し、デコード対象命令データのデータ形式に対応するマスク値（第１の演算値）を入力し格納する。マスク値格納レジスタ１ｅが格納するマスク値はデコード対象命令データに対応させて演算単位ビット数（例えば８ビット）ごとに区分されている。
シフト値格納レジスタ１ｆは、第２の演算値格納部の例に相当し、デコード対象命令データのデータ形式に対応するシフト値（第２の演算値）を入力し格納する。シフト値格納レジスタ１ｆが格納するシフト値はデコード対象命令データに対応させて演算単位ビット数（例えば８ビット）ごとに区分されている。
ＡＮＤ回路群１ａ−１〜１ａ−４は、第１の演算部の例に相当し、マスク値格納レジスタ１ｅに格納されたマスク値を用いて演算単位ビット数ごとにデコード対象命令データに対するマスク演算（第１の演算）を行う。
シフト回路群１ｂ−１〜１ｂ−４は、第２の演算部の例に相当し、シフト値格納レジスタ１ｆに格納されたシフト値を用いて演算単位ビット数ごとにＡＮＤ回路群からの演算結果に対するシフト演算（第２の演算）を行う。
ＯＲ回路１ｃは、デコード結果出力部の例に相当し、シフト回路群からの演算単位ビットごとの演算結果を組合せ、組み合わせた結果をデコード結果として出力する。
【００１４】
次に動作について説明する。
情報処理装置のパワーオン時にサービスプロセッサ等のマイクロプロセッサ外部の処理装置（図示せず）により、マスク用レジスタ３にマスク値、シフト用レジスタ４にシフト値が書き込まれる。次に、マイクロプロセッサによるプログラムの実行が開始され、命令取り出し機構（図示せず）がデコード対象命令データを命令データ用レジスタ２へ書き込む。次に、レジスタに書き込まれたデコード対象命令データ、マスク値、シフト値は、それぞれ複合回路１の命令データ格納レジスタ１ｄ、マスク値格納レジスタ１ｅ、シフト値格納レジスタ１ｆにロードされ、複合回路による演算が行われる。ここで、マスク値格納レジスタ１ｅに格納されるマスク値及びシフト値格納レジスタ１ｆに格納されるシフト値は、デコード対象命令データのデータ形式に対応したマスク値及びシフト値である。
【００１５】
複合回路１では、例えば８ビット単位等の演算単位ビット数毎に命令データとマスク値を用いて、ＡＮＤ回路群１ａ−１〜１ａ−４がマスク演算を行いビットの抽出を行う。次に、ビットの抽出が行なわれた値（マスク演算結果）に対し、シフト値を用いて、シフト回路群１ｂ−１〜１ｂ−４が演算単位ビット数ごとにビットのシフト操作を行う。
【００１６】
演算単位ビット数毎のビットの抽出とシフト操作を行った値は、ＯＲ回路１ｃによりマージされ、必要とするデータの抽出が完了し、結果をデコード結果データ用レジスタ５に出力、格納する。そして、デコード結果データ用レジスタ５にロードされたデータから制御信号６が生成される。
【００１７】
以上のように、マスク値とシフト値を使用し、命令セットから必要とするデータを抽出し、その抽出したデータを用いて制御信号を生成する方式を取ることで、レジスタへの書込みという簡単な操作で、複数の異なる命令セットに対応した汎用命令デコード装置を実現することができる。
【００１８】
実施の形態２．
以上の実施の形態１では、外部からの制御により予め設定されたマスク値とシフト値を使用し、命令セットから必要とするデータを抽出する基本的な動作について説明したが、次に、異なる命令セットアーキテクチャに動的に対応する場合の実施の形態を示す。
【００１９】
図２はこのような場合の一実施の形態を示すブロック図である。
図において、２は入力される命令データの保持レジスタ、７はアーキテクチャ番号の保持レジスタ、１５は汎用命令デコード装置、８はアーキテクチャ番号格納レジスタ、１３は命令形式判断用テーブル、１０ａは命令形式判断用マスク値（第１のデータ形式判定用演算値）、１１ａは命令形式判断用シフト値（第２のデータ形式判定用演算値）、１２ａは、アーキテクチャ番号格納レジスタ８に格納されたアーキテクチャ番号に対応する命令形式判断用マスク値を命令形式判断用テーブルから選択するセレクタ、１２ｂは、アーキテクチャ番号格納レジスタ８に格納されたアーキテクチャ番号に対応する命令形式判断用シフト値を命令形式判断用テーブルから選択するセレクタ、１ａはセレクタ１２ａ及びセレクタ１２ｂからのデータ（命令形式判断用マスク値と命令形式判断用シフト値）とデコード対象命令データよりデコード対象命令データのデータ形式を判断し、命令形式信号を生成する複合回路、９は複合回路１ａの出力を保持する命令形式信号の保持レジスタ、１４はデータ抽出用テーブル、１０ｂはデータ抽出用マスク値（第１のデコード用演算値）、１１ｂはデータ抽出用シフト値（第２のデコード用演算値）、１２ｃは、命令形式信号の保持レジスタ９の保持内容に従いデコード対象命令データのデータ形式に対応するデータ抽出用マスク値をデータ抽出用テーブルから選択するセレクタ、１２ｄは、命令形式信号の保持レジスタ９の保持内容に従いデコード対象命令データのデータ形式に対応するデータ抽出用シフト値をデータ抽出用テーブルから選択するセレクタ、１ｂはセレクタ１２ｃ及びセレクタ１２ｄからのデータ（データ抽出用マスク値とデータ抽出用シフト値）とデコード対象命令データよりデコード対象命令データのデコード処理を行い、抽出データを生成する複合回路、６は演算装置を制御する制御信号である。
なお、複合回路１ａ及び複合回路１ｂは、実施の形態１において図１に示した複合回路１と同様の内部構成となっている。
また、命令形式判断用テーブル１３には、複数種の命令アーキテクチャについて命令アーキテクチャごとに対応するマスク値及びシフト値が用意されている。また、データ抽出用テーブル１４には、複数種のデータ形式についてデータ形式ごとに対応するマスク値及びシフト値が用意されている。
また、本実施の形態においても、実施の形態１と同様に、デコード対象命令データは所定の演算単位ビット数（例えば８ビット）ごとに区分され、マスク値及びシフト値も演算単位ビット数（例えば８ビット）ごとに区分されている。
【００２０】
本実施の形態では、汎用命令デコード装置１５はデコード装置の例に相当し、複数種の命令セットアーキテクチャについてそれぞれの命令セットアーキテクチャの命令データに対するデコード処理が可能である。
また、図２では図示していないが、汎用命令デコード装置１５には命令形式判断用テーブル１３を記憶する命令形式判断用テーブル記憶部が存在し、この命令形式判断用テーブル記憶部はデータ形式判断用演算値記憶部の例に相当する。
また、図２では図示していないが、汎用命令デコード装置１５にはデータ抽出用テーブル１４を記憶するデータ抽出用テーブル記憶部が存在し、このデータ抽出用テーブル記憶部はデコード用演算値記憶部の例に相当する。
また、アーキテクチャ番号格納レジスタ８は命令セットアーキテクチャ情報格納部の例に相当し、デコード対象命令データのアーキテクチャ番号（命令セットアーキテクチャ情報）を入力し格納する。
セレクタ１２ａ及びセレクタ１２ｂはデータ形式判定用演算値選択部の例に相当し、アーキテクチャ番号格納レジスタ８に格納されたアーキテクチャ番号に対応する命令形式判断用マスク値及び命令形式判断用シフト値を命令形式判断用テーブル１３から選択する。
また、複合装置１ａは、本実施の形態では、データ形式判定部の例に相当し、デコード対象命令データを入力するとともに、セレクタ１２ａ及びセレクタ１２ｂにより選択された命令形式判断用マスク値及び命令形式判断用シフト値を入力し、入力した命令形式判断用マスク値及び命令形式判断用シフト値を用いてデコード対象命令データに対するマスク演算及びシフト演算を行ってデコード対象命令データのデータ形式を判断し、デコード対象命令データのデータ形式を示す命令形式信号（データ形式情報）を出力する。
命令形式信号の保持レジスタ９は、データ形式情報格納部の例に相当し、複合回路１ａより出力された命令形式信号（データ形式情報）を入力し格納する。
セレクタ１２ｃ及びセレクタ１２ｄは、デコード用演算値選択部の例に相当し、命令形式信号の保持レジスタ９に格納されたデコード対象命令データのデータ形式に対応するデータ抽出用マスク値及びデータ抽出用シフト値をデータ抽出用テーブル１４から選択する。
また、複合装置１ｂは、本実施の形態では、デコード処理部の例に相当し、デコード対象命令データを入力するとともに、セレクタ１２ｃ及びセレクタ１２ｄにより選択されたデータ抽出用マスク値及びデータ抽出用シフト値を入力し、入力したデータ抽出用マスク値及びデータ抽出用シフト値を用いてデコード対象命令データに対するマスク演算及びシフト演算い、演算結果をデコード結果として出力する。
【００２１】
次に動作について説明する。
汎用命令デコード装置１５の命令形式判断用テーブル１３は、アーキテクチャ番号から命令形式信号を生成できるように、命令データに対する命令形式判断用マスク値１０ａと命令形式判断用シフト値１１ａを不揮発性メモリ（図示せず）に格納する。汎用命令デコード装置１５のデータ抽出用テーブル１４は、命令形式信号を使用し命令データの塊を取り出し、実行命令を生成できるビット位置のデータに出力するためのデータ抽出用マスク値１０ｂとデータ抽出用シフト値１１ｂを不揮発性メモリ（図示せず）に格納する。
【００２２】
情報処理装置のパワーオン時にサービスプロセッサ等のマイクロプロセッサ外部の処理装置（図示せず）により、アーキテクチャ番号用レジスタ７へアーキテクチャ番号が書き込まれると、アーキテクチャ番号格納レジスタ８へ設定される。
【００２３】
デコード対象命令データは、プログラムを開始すると命令取り出し機構（図示せず）により、命令データ用レジスタ２へ書き込まれる。
【００２４】
汎用命令デコード装置１５は、命令データ用レジスタ２にデコード対象命令データが設定されると、命令形式判断用テーブル１３の中でアーキテクチャ番号格納レジスタ８の値を使用したセレクタ１２ａで選択している命令形式判断用マスク値１０ａとセレクタ１２ｂで選択している命令形式判断用シフト値１１ａと一緒に、デコード対象命令データを用いて、複合回路１ａで演算を行なう。ここで、セレクタ１２ａ及びセレクタ１２ｂにより選択される命令形式判断用マスク値及び命令形式判断用シフト値はデコード対象命令データの命令アーキテクチャに対応するマスク値及びシフト値である。
【００２５】
複合回路１ａは、データ抽出用テーブル１４からデータ抽出用マスク値及びデータ抽出用シフト値を選択するための命令形式信号を生成し、生成した命令形式信号を、命令形式信号の保持レジスタ９に設定する。
【００２６】
次に、セレクタ１２ｃ及びセレクタ１２ｄが、命令形式信号に示されるデコード対象命令データのデータ形式に対応するデータ抽出用マスク値及びデータ抽出用シフト値をデータ抽出用テーブル１４から選択し、複合回路１ｂでは、デコード対象命令データを入力するとともに、セレクタ１２ｃ及びセレクタ１２ｄにより選択されたデータ抽出用マスク値及びデータ抽出用シフト値を入力し、入力したデータ抽出用マスク値及びデータ抽出用シフト値を用いてデコード対象命令データに対するマスク演算及びシフト演算い、デコード対象命令データからのデコード結果をデコード結果データ用レジスタ５に設定する。
【００２７】
マイクロプロセッサは、デコード結果データ用レジスタ５に設定されたデータから演算装置の制御信号６を生成する。
【００２８】
以上のように、アーキテクチャ番号を使用し、内部に保持しているアーキテクチャ固有のマスク値とシフト値から命令形式判断信号を生成し、その命令形式信号で命令形式用のマスク値とシフト値を用いて命令データからデータを抽出する方式を取ることで、アーキテクチャ番号の書込みという簡単な操作で、複数の異なる命令セットから必要とするデータを容易に抽出できる汎用命令デコーダを実現することができる。
【００２９】
実施の形態３．
以上の実施の形態２では、汎用命令デコード装置を使用し、動的に異なる命令セットアーキテクチャに対応する場合について説明したが、次に、汎用命令デコード装置を使用し、別の命令セットアーキテクチャの命令データを実行するマイクロプロセッサの命令に置き換えて処理する場合の実施の形態を示す。
【００３０】
図３はこのような場合の一実施の形態を示すブロック図である。
図において、２は入力される命令データの保持レジスタ、７はアーキテクチャ番号用レジスタ、１８は命令変換装置、１５ａ〜１５ｎは一番目からＮ番目の汎用命令デコード装置、１３ａ〜１３ｎは共通の命令形式判断用テーブル、１４ａ〜１４ｎは一番目からＮ番目のデータ抽出を行なうためのマスク値とシフト値を組み合わせた固有のデータ抽出用テーブル、１６は、命令変換装置１８の複数の出力データのビットＯＲを取るＯＲ回路、１７はＯＲ回路１６の結果を保持する実行命令レジスタを示す。なお、汎用命令デコード装置１５ａ〜１５ｎは、実施の形態３で説明した汎用命令デコード装置１５と同様の内部構成となっている。
【００３１】
次に命令データより取り出す塊が２つである場合の動作について説明する。
最初に、汎用命令デコード装置１５ａの共通の命令形式判断用テーブル１３ａは、アーキテクチャ番号から命令形式信号（図２の９参照）を生成できるように、命令データに対するマスク値とシフト値の組み合わせにより構成されたテーブルを不揮発性メモリ（図示せず）に格納する。データ抽出用テーブル１４ａには、前述の命令形式から命令データの一番目の塊を抽出し、実行命令の形式にできるビット位置のデータに出力するためのマスク値とシフト値の組み合わせにより構成されたテーブルを不揮発性メモリ（図示せず）に格納する。
【００３２】
汎用命令デコード装置１５ｂの共通の命令形式判断用テーブル１３ｂは、アーキテクチャ番号から命令形式信号（図２の９参照）を生成できるように、命令データの二番目の塊に対するマスク値とシフト値の組み合わせにより構成されたテーブルを不揮発性メモリ（図示せず）に格納する。データ抽出用テーブル１４ｂには、前述の命令形式から命令データの二番目の塊を取り出し、実行命令の形式にできるビット位置のデータに出力するためのマスク値とシフト値の組み合わせにより構成されたテーブルを不揮発性メモリ（図示せず）に格納する。また、命令データから取り出す塊の無い場合は、演算の結果”０”出力を行なうマスク値とシフト値の組み合わせを格納する。
以降、汎用命令デコード装置１５ｂと同様に、汎用命令デコード装置１５ｃ〜１５ｎの各テーブルを不揮発性メモリ（図示せず）に格納する。
【００３３】
情報処理装置のパワーオン時にサービスプロセッサ等のマイクロプロセッサ外部の処理装置（図示せず）が、アーキテクチャ番号用レジスタ７へアーキテクチャ番号を書き込む。
【００３４】
デコード対象命令データは、プログラムを開始すると命令取り出し機構（図示せず）により、命令データ用レジスタ２へ書き込まれる。
【００３５】
命令変換装置１８は、命令データ用レジスタ２にデコード対象命令データが書込まれると、汎用命令デコード装置１５ａに対し、デコード対象命令データ、アーキテクチャ番号を設定する。以下同様の操作を、並列して汎用命令デコード装置１５ｂ〜１５ｎに対して行なう。
【００３６】
汎用命令デコード装置１５ａは、レジスタに書き込まれたデコード対象命令データ、アーキテクチャ番号により、共通の命令形式判断用テーブル１３ａを使い命令形式信号（図２の９参照）を生成し、命令形式信号（図２の９参照）により選択されたデータ抽出用マスク値及びデータ抽出用シフト値を用いて、デコード対象命令データの一番目の塊のデータ抽出を行う。
【００３７】
同時に、汎用命令デコード装置１５ｂでは、レジスタに書き込まれたデコード対象命令データ、アーキテクチャ番号により、共通の命令形式判断用テーブル１３ｂを使い命令形式信号（図２の９参照）を生成し、命令形式信号（図２の９参照）により選択されたデータ抽出用マスク値及びデータ抽出用シフト値を用いて、デコード対象命令データの二番目の塊のデータ抽出を行う。
【００３８】
同時に、汎用命令デコード装置１５ｃでは、レジスタに書き込まれた命令データ、アーキテクチャ番号により、共通の命令形式判断用テーブル１３ｃを使い命令形式信号（図２の９参照）を生成し、命令形式信号（図２の９参照）により選択されたデータ抽出用マスク値及びデータ抽出用シフト値を用いて、三番目の塊のデータ抽出を行うが、該当するデータが無いため、”０”を出力する。以降、該当するデータの無い汎用命令デコード装置１５ｄ〜１５ｎも同様に、”０”を出力する。
【００３９】
命令変換装置１８から出力される複数の抽出データは、各々が変換先のビット配列に対応しており該当データが無い場合は”０”出力のため、複数の出力データをＯＲ回路１６によりビットＯＲすることで、実行可能な命令セットアーキテクチャに組み立て、実行命令レジスタ１７に設定する。
このように、複数の汎用命令デコード装置を用いることで、命令データに対するデコード処理を並列に行うことができる。
なお、以上では、汎用命令デコード装置１５ａ〜１５ｎの各々が、データ形式判断用テーブル１３ａ〜１３ｎの各々を持つようにしていたが、データ形式判断用テーブル１３ａ〜１３ｎは共通の内容を持つので、汎用命令デコード装置１５ａ〜１５ｎの各々が利用できるデータ形式判断用テーブルを１つ代表して設けるようにしてもよい。
【００４０】
以上のように、命令変換装置１８とアーキテクチャ番号を使用し、複数の異なる命令セットから必要とするデータを抽出し再構成することで、命令セットアーキテクチャを選ばない命令デコーダを実現することができる。
【００４１】
実施の形態４．
以上の実施の形態３では、汎用命令デコード装置を使用し、命令セットアーキテクチャを選ばない命令デコード装置について説明したが、次に、実施の形態３の命令デコード装置を使用し、命令エミュレーション装置を実現する場合の実施の形態を示す。
【００４２】
図４はこのような場合の一実施の形態を示すブロック図である。
図において、１９は専用命令、１９−１と１９−３は専用オペコード部、１９−２はデコード対象命令データを保持しているレジスタを示すレジスタ番号、１９−４はアーキテクチャ番号を含む制御用データを保持しているレジスタを示すレジスタ番号、２０は１９の専用命令によって示される命令データを設定したレジスタＭ、２１は１９の専用命令によって示される制御用データを設定したレジスタＮ、２１−１はアーキテクチャ番号格納部、２１−２は命令データの変換部位の選択番号格納部、１８は命令変換装置、２２は２１−２の制御用データの選択部位により制御されるセレクタを示す。
なお、専用命令１９のうち、デコード対象命令データを保持しているレジスタを示すレジスタ番号１９−２はデコード対象命令データ格納レジスタ通知情報に相当し、専用命令１９のうち制御用データを保持しているレジスタを示すレジスタ番号１９−４は命令セットアーキテクチャ情報格納レジスタ通知情報に相当する。
【００４３】
次に動作について説明する。
命令変換装置１８は、実施の形態３と同様の物であり、命令データから一番目の塊、二番目の塊、Ｎ番目の塊のデータ抽出を行なうため、動作を始める前に内部のテーブルに対し、マスク値とシフト値の設定を行なう。マスク値とシフト値は、命令変換装置１８の中の汎用命令デコード装置にて抽出されたデータが、命令エミュレーション装置で使用可能なビット配列として出力される組み合わせを不揮発性メモリ（図示せず）に格納する。
【００４４】
まず、レジスタＭ２０にデコード対象命令データを設定し、レジスタＮ２１のアーキテクチャ番号格納部２１−１にアーキテクチャ番号を、命令データの変換部位の選択番号格納部２１−２に命令データの変換部位の選択番号を設定する。次に、専用命令１９を実行する。
【００４５】
命令変換装置１８は、専用命令１９の示すレジスタＭ２０のデコード対象命令データとレジスタＮ２１のアーキテクチャ番号格納部２１−１に示されたアーキテクチャ番号を使い、命令データから一番目の塊の抽出データ、二番目の塊の抽出データ、Ｎ番目の塊の抽出データとして複数の抽出データを出力する。
【００４６】
セレクタ２２は、命令変換装置１８の出力データの中から、レジスタＮ２１の命令データの変換部位の選択番号格納部２１−２で示される部位を選択し出力する。
【００４７】
セレクタ２２からの出力は、レジスタＭ２０に格納する。命令エミュレーション装置は、レジスタＭ２０の値を使い処理を行なう。
【００４８】
以上のように、命令変換装置１８を制御する専用命令１９を使用することで、複数の異なる命令セットアーキテクチャから、エミュレーションに必要なデータを容易に抽出できる命令デコード装置が実現できる。
【００４９】
命令変換装置１８は、一つの汎用命令デコード装置（図２の１５）と、複数のデータ抽出用テーブル１４ａ〜１４ｎで構成し、命令データの変換部位の選択番号にて使用するデータ抽出用テーブル１４ａ〜１４ｎを選択する機能を付加しても、同様の効果が得られる。また、デコード結果出力先レジスタと命令データや制御用データを設定するレジスタは、異なるレジスタを使っても構わない。
【００５０】
ここで、以上の実施の形態１〜４に示したデコード装置の特徴を以下にて再言する。
【００５１】
実施の形態１に示したデコード装置は、メモリ上に格納された命令データをデコードし、その出力信号で演算装置を制御することにより処理を実行する情報処理装置の命令デコード装置において、命令データを保持する手段と、予め設定されたマスク値およびシフト量に従い、マスク、シフト、ＯＲ演算を実行する手段を備えたことを特徴とする。
【００５２】
実施の形態１に示したデコード装置は、マスク値およびシフト量を設定する手段と、それを保持する手段を有し、外部からの設定によりマスク、シフト、ＯＲ演算を実行することを特徴とする。
【００５３】
実施の形態２に示したデコード装置は、複数のマスク値、シフト量を格納する手段と、上記複数のマスク値、シフト量から一組のマスク値、シフト量を選択する手段と、上記選択したマスク値、シフト量を保持する手段を持ち、上記選択した一組のマスク値、シフト量から指定した値に基づきマスク、シフト、ＯＲ演算を行うことを特徴とする。
【００５４】
実施の形態２に示したデコード装置は、マスク値およびシフト量を設定する手段と、それを保持する手段と、マスク、シフト、ＯＲ演算複合回路を有し、命令データの一部を取り出し、選択信号を生成することを特徴とする。
【００５５】
実施の形態２に示したデコード装置は、アーキテクチャ番号を設定する手段と、それを保持する手段と、アーキテクチャ番号により命令データを解析する手段と、保持する手段を持ち、上記命令データの解析結果より選択信号を生成することを特徴とする。
【００５６】
実施の形態３に示したデコード装置は、別の命令セットアーキテクチャの命令を実行可能なマイクロプロセッサの命令デコード装置において、
複数のマスク、シフト、ＯＲ複合回路と、それを制御する値を設定し保持する手段を有し、別の命令セットアーキテクチャの命令データを実行するマイクロプロセッサの命令に置き換えて処理することを特徴とする。
【００５７】
実施の形態４に示したデコード装置は、ある命令セットアーキテクチャの命令を別の命令セットアーキテクチャのプロセッサ上で実行する命令エミュレーション装置において、
マスク、シフト、ＯＲ複合演算器と、それを制御する専用命令を有し、変換元の命令コードから、オペコード、オペランドなど命令エミュレーション処理に必要なデータを抜き出すことを特徴とする。
【００５８】
【発明の効果】
本発明によれば、複数の命令セットアーキテクチャの命令データに対するデコード処理が可能なので、従来のように命令セットアーキテクチャごとに個別の回路を用意する必要がない。
【図面の簡単な説明】
【図１】実施の形態１に係る複合回路の構成例を示す図。
【図２】実施の形態２に係る汎用命令デコード装置の構成例を示す図。
【図３】実施の形態３に係る命令変換装置の構成例を示す図。
【図４】実施の形態４に係る命令変換装置の構成例を示す図。
【符号の説明】
１  複合回路、２  命令データ用レジスタ、３  マスク用レジスタ、４  シフト用レジスタ、５  デコード結果データ用レジスタ、７  アーキテクチャ番号用レジスタ、８  アーキテクチャ番号格納レジスタ、９  命令形式信号の保持レジスタ、１３  命令形式判断用テーブル、１４  データ抽出用テーブル、１５  汎用命令デコード装置、１６  ＯＲ回路、１７  実行命令レジスタ、１８  命令変換装置。
【図１】
2004199370.tif 000003
【図２】
2004199370.tif 000004
【図３】
2004199370.tif 000005
【図４】
2004199370.tif 000006