(57)【要約】【課題】被演算データごとの有効データ幅を予め命令コードに設定しておくことなく、演算命令の実行時に被演算データごとの有効データ幅から導かれる最適な命令実行サイクル数を適宜選択することができるデータ処理装置を提供する。【解決手段】演算命令の命令コードをデコードする命令デコード部１と、命令デコード部１によるデコード結果から演算命令で処理すべき被演算データの有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定する制御ロジック部３と、制御ロジック部３が決定した命令実行サイクル数で演算命令を実行するＡＬＵ部４とを備える。【選択図】　　　　図１
2004102532.tif 000002
【特許請求の範囲】
【請求項１】
演算命令の命令コードをデコードする命令デコード部と、
上記命令デコード部によるデコード結果から上記演算命令で処理すべき被演算データの有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定する制御部と、
上記制御部が決定した命令実行サイクル数で上記演算命令を実行する演算部と
を備えたデータ処理装置。
【請求項２】
演算命令の命令コード中にその命令実行サイクル数を制御する命令コード情報が設定されており、
制御部は、命令デコード部がデコード結果として抽出した上記命令コード情報に基づいて、上記演算命令で処理すべき被演算データの有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
演算命令の命令コード中に、命令コード情報として被演算データの符号の有無を指定するデータタイプ情報が設定されており、
制御部は、上記データタイプ情報で特定される被演算データの符号の有無に応じてその有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項２記載のデータ処理装置。
【請求項４】
演算命令の命令コード中に、命令コード情報として被演算データの有効データ幅を検出する際のサーチ範囲の上限値を指定するサイズ上限値情報が設定されており、
制御部は、上記被演算データのうち上記サイズ上限値情報で指定された上限値に基づくデータ範囲をサーチしてその有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項２記載のデータ処理装置。
【請求項５】
演算命令の命令実行サイクル数を制御する命令コード情報を格納する記憶部を備え、
制御部は、上記記憶部から読み出した上記命令コード情報に基づいて、上記演算命令で処理すべき被演算データの有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項１記載のデータ処理装置。
【請求項６】
記憶部は、命令コード情報として被演算データの符号の有無を指定するデータタイプ情報を格納し、
制御部は、上記データタイプ情報で特定される被演算データの符号の有無に応じてその有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項５記載のデータ処理装置。
【請求項７】
記憶部は、命令コード情報として被演算データの有効データ幅を検出する際のサーチ範囲の上限値を指定するサイズ上限値情報を格納し、
制御部は、上記被演算データのうち上記サイズ上限値情報で指定された上限値に基づくデータ範囲をサーチしてその有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項５記載のデータ処理装置。
【請求項８】
記憶部は、制御部が被演算データの有効データ幅を検出すべきか否かを指定する処理設定情報を格納し、
制御部は、上記記憶部から読み出した処理設定情報に、上記有効データ幅の検出を実行しない旨が指定されていると、命令コード情報に基づいて規定されるデータ幅を有効データ幅として設定し、当該有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項５記載のデータ処理装置。
【請求項９】
処理設定情報に命令コード情報が有効か無効かが指定されており、
制御部は、上記処理設定情報に有効データ幅の検出を実行しない旨及び命令コード情報が無効である旨が指定されていると、予め定めたデータ幅を被演算データの有効データ幅として設定し、当該有効データ幅に応じた命令実行サイクル数を決定することを特徴とする請求項８記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は除算命令や剰余命令などの各種演算命令を実行するデータ処理装置に係り、特に演算命令の実行時に被演算データから検出した有効データ幅に応じて命令実行サイクル数を設定し、当該命令実行サイクル数で演算処理を実行するデータ処理装置に関するものである。
【０００２】
【従来の技術】
従来のデータ処理装置においては、データサイズ情報を格納するためのサイズフィールドを持つ命令コードを取り扱い、当該命令コードのサイズフィールドＳに格納されている被除数データサイズ情報を基に、除算命令および剰余命令の演算処理ループ回数などの命令実行サイクル数を決定し設定する（例えば、特許文献１参照）。
【０００３】
【特許文献１】
特開２００１−０３４４７２
【０００４】
【発明が解決しようとする課題】
上記特許文献１に示すように、従来のデータ処理装置では、ソースコードがコンパイルされて当該命令コードによる演算命令が配置される前に、被演算データのデータサイズ（有効データ幅）を、命令コード内に設けた被演算データのサイズ情報フィールドに設定しておく必要があるという課題があった。つまり、被演算データの有効データ幅から導かれる最適な命令実行サイクル数を選択しようとする場合、被演算データごとの有効データ幅を予め決定しておかなければならない。
【０００５】
この発明は上記のような課題を解決するためになされたもので、演算命令の実行時に被演算データからその有効データ幅を検出する手段を設けることで、被演算データごとの有効データ幅を予め命令コードに設定しておくことなく、演算命令の実行時に被演算データごとの有効データ幅から導かれる最適な命令実行サイクル数を適宜選択することができるデータ処理装置を得ることを目的とする。
【０００６】
【課題を解決するための手段】
この発明に係るデータ処理装置は、演算命令の命令コードをデコードする命令デコード部と、命令デコード部によるデコード結果から演算命令で処理すべき被演算データの有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定する制御部と、制御部が決定した命令実行サイクル数で演算命令を実行する演算部とを備えるものである。
【０００７】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるデータ処理装置の構成を示すブロック図であり、例えば除算処理を実行するハードウェアを示している。図において、命令デコード部１は、処理すべき命令コードを受け取ってデコードし、当該デコード結果を制御ロジック部３に送出する。ここで、命令コードをデコードした結果として得られる情報としては、演算の種類（除算命令、剰余命令など）を特定する情報の他に、被演算データの符号有無を特定するデータタイプ（データタイプ情報）や後述するサイズ上限値Ｌなどのように命令実行サイクル数を決定する上で使用する、いわゆる命令実行サイクル数を制御する情報（命令コード情報）が挙げられる。また、汎用レジスタファイル２は、複数のレジスタを有するレジスタ群から構成され、演算処理にて取り扱う被演算データが格納される。制御ロジック部（制御部）３は、サイズ情報検出回路６やループ処理終了検出部７を含んで構成され、除算命令及び剰余命令の動作を制御する。
【０００８】
ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ　ａｎｄ　Ｌｏｇｉｃａｌ　Ｕｎｉｔ）部（演算部）４は、２つの被演算データとどの演算を実行すべきかを特定する情報とを取り込んで演算処理を実行するＡＬＵ９、及び拡張レジスタ１１を含む剰余レジスタ１０から構成される。シフタ部５は、制御ロジック部３からの制御信号に応じて被除数データのシフトを実行する。なお、図示の例では、制御ロジック部３からシフタ部５に入力される制御信号ＳＦ１や制御信号ＣＴＳに記号＊を付しているが、これは制御ロジック部３とシフタ部５の接続関係を示している。例えば、記号＊＊は制御ロジック部３からシフタ部５に制御信号ＳＦ１が直接入力されることを表している。
【０００９】
また、サイズ情報検出回路（制御部）６は、除算命令及び剰余命令の実行時に被除数データのサイズ情報（有効データ幅）ｎを検出し、有効データ幅としてループ処理終了検出部７に出力する。このサイズ情報検出回路６は、例えばプライオリティエンコーダにより構成する。制御ロジック部３内のループ処理終了検出部７は、サイズ情報検出回路６からの被除数データの有効データ幅ｎ及びカウンタ８のカウント値に基づいて除算処理のループの終了時点を検出する。ここで、カウンタ８は、除算処理のループが終了するごとにインクリメントされる。さらに、６４ビットの剰余レジスタ１０は、ＡＬＵ９による除算処理の際に生じる演算データを逐次格納し、シフタ部５がシフトさせた被除数データを格納する拡張レジスタ１１を有する。
【００１０】
図２は図１中のデータ処理装置で扱われる命令フォーマットを示す図であり、例えば除算命令及び剰余命令の命令コードを示している。図において、第１オペコード部ＯＰ１及び第２オペコード部ＯＰ２は、実行すべき演算命令の種類（例えば、除算命令、剰余命令など）を指定する情報が設定される。また、オペコード部ＯＰ１，ＯＰ２には、デスティネーションレジスタ指定部Ｒ１やソースレジスタ指定部Ｒ２で指定したレジスタに格納されるデータのデータタイプ（データタイプ情報）を命令の一部として定義しておく。ここで、データタイプとは、演算対象となるオペランドを符号付き（ｓｉｇｎｅｄ）あるいは符号なし（ｕｎｓｉｇｎｅｄ）のいずれで取り扱うかを指定する情報である。
【００１１】
なお、当該データタイプを指定する情報は、命令コード内のオペコード部以外のビット位置に配置するようにしてもよい。デスティネーションレジスタ指定部Ｒ１には、汎用レジスタファイル２内のレジスタ群のうち被除数を格納したレジスタを指定する情報が設定される。また、ソースレジスタ指定部Ｒ２には、汎用レジスタファイル２内のレジスタ群のうち除数データを格納したレジスタを指定する情報が設定される。さらに、命令コード中の定数部Ｃには、従来の技術と異なり除算命令及び剰余命令における被除数データのサイズ情報は設定されない。
【００１２】
図３は図１中のデータ処理装置で扱われるデータフォーマットを示す図であり、３２ビットのデータフォーマットで上段が符号ビットを有さない場合を示し、下段に符号ビットを有する場合を示している。図において、上段の符号ビットがないデータフォーマットでは、最上位の第０番目のビットからサーチして最初に論理値１が検出されたビット位置を第ｋ番目と定義する。一方、下段図のｓｇｎは符号ビットを示している。この符号ビットｓｇｎを有するデータフォーマットでは、符号ビットｓｇｎを除いた第１番目のビットからサーチして最初に符号ビットの反転が検出されたビット位置を第ｋ番目と定義する。下段の図は、３２ビットデータフォーマットの第ｋ番目のビットから第３１番目のビットまでに有効なデータを配置した場合を示している。
【００１３】
次に動作について説明する。
図４は実施の形態１のデータ処理装置による命令実行サイクル数の設定動作を示すフロー図であり、後述する引き放し法による除算の前処理に相当する。この図に沿って除算命令及び剰余命令における被除数データのサイズ情報（有効データ幅）ｎの検出処理を説明する。例えば、データ長が３２ビットであるデータ処理装置では、ｎが０＜ｎ≦３２を満たす整数となる。以下、説明の簡単のために、当該データ処理装置で扱うデータのデータ長を３２ビットとする。
【００１４】
先ず、命令デコード部１は、ソースコードをコンパイルして生成された命令コードを受け取ると、当該命令コードをデコードする。これにより、ソースコードに記述された命令が当該演算ハードウェアに配置されることとなる。このとき、当該命令コードの第１オペコード部ＯＰ１及び第２オペコード部ＯＰ２に設定された、命令の種類（例えば、除算命令及び剰余命令など）や、演算対象となるオペランドのデータタイプなどが命令コード情報として取り出される。
【００１５】
この命令コード情報であるデコード結果は、命令デコード部１から制御ロジック部３に転送される。制御ロジック部３では、内部のサイズ情報検出回路６に当該デコード結果を入力する。これにより、本実施の形態１のデータ処理装置による除算命令の実行が開始される。
【００１６】
次に、制御ロジック部３は、デコード結果内のデスティネーションレジスタ指定部Ｒ１に設定された情報に基づいて汎用レジスタファイル２内のレジスタから被除数データを読み出してバスＳ１に転送すると共に、サイズ情報検出回路６にも転送する。ここまでの処理がステップＳＴ１に相当する。
【００１７】
サイズ情報検出回路６では、デコード結果の命令コード情報から取り出した被除数データのデータタイプに基づいて被除数データの符号の有無を判定する（ステップＳＴ２）。このとき、当該被除数データが符号なしであれば、サイズ情報検出回路６は、図３に示すように、最上位の第０番目のビットからサーチして最初に論理値１が出現するビット位置ｋ（第ｋ番目のビット）を検出する（ステップＳＴ３）。ここで、論理値１を有するビットが検出されなかった場合、サイズ情報検出回路６は、当該被除数データの値が０であると判断する。
【００１８】
一方、被除数データが符号有りであると、サイズ情報検出回路６は、符号が正か負かいずれの属性であるかを判定する（ステップＳＴ４）。ここで、符号が正の場合、つまり、被除数データの第０番目の位置する符号ビットが論理値０であると、サイズ情報検出回路６は、当該符号ビットの反転値（即ち、論理値１）が最初に出現するビット位置ｋを検出する（ステップＳＴ５）。また、符号が負の場合、つまり、被除数データの第０番目の位置する符号ビットが論理値１であると、サイズ情報検出回路６は、当該符号ビットの反転値（即ち、論理値０）が最初に出現するビット位置ｋを検出する（ステップＳＴ６）。
【００１９】
上述のようにしてビット位置ｋが検出されると、サイズ情報検出回路６は、当該除算処理の命令実行サイクル数を決定する被除数データのデータサイズ情報ｎとして、本実施の形態１によるデータ処理装置が扱うデータ長３２ビットのデータからビット位置ｋまでのデータを差し引いた（３２−ｋ）を算出する。この演算結果である被除数データのデータサイズ情報ｎは、有効データ幅としてサイズ情報検出回路６からループ処理終了検出部７に転送される。また、サイズ情報検出回路６は、第０番目のビット（符号ビットを含む）から第（ｋ−１）番目のビットまでは演算対象でなく、有効なデータではないことから被除数データのシフト幅をｋとし、当該シフト幅ｋを指定する制御信号ＳＦ１を生成してバスＳ２に出力する。ここまでの処理がステップＳＴ７に相当する。
【００２０】
次に引き放し法による除算処理について説明する。
図５はデータ処理装置による除算命令の処理動作を示すフロー図であり、この図に沿って引き放し法によって除算命令を実行する場合のアルゴリズムを説明する。
先ず、シフタ部５は、パスＳＦ１，ＳＦ２を経由して、制御ロジック部３からの制御信号ＳＦ１により指定されるシフト幅ｋと、制御ロジック部３による制御にて被除数データを取得する。さらに、シフタ部５は、制御ロジック部３から出力される制御信号ＣＴＳによってシフト方向が「左」と指示される。続いて、シフタ部５は、被除数データをシフト幅ｋで左にシフトする。図３に示すように、第０番目のビット（符号ビットを含む）から第（ｋ−１）番目のビットまでは演算対象でなく、有効なデータではない。即ち、シフト幅ｋで被除数データを左にシフトすることで、当該被除数データ中の不要なデータが除かれることとなる。
【００２１】
上述したシフタ部５でのシフト結果は、パスＳＦ３を経由して剰余レジスタ１０内の拡張レジスタ１１に格納される。そして、剰余レジスタ１０の左半分（３２ビット）には０がセットされる。このシフタ部５が制御ロジック部３からのシフト幅と被除数データを取得してから剰余レジスタ１０の左半分（３２ビット）に０がセットされるまでの動作がステップＳＴ１ａに相当する。
【００２２】
次に、制御ロジック部３は、制御信号ＣＴ１と制御信号ＣＴ２を剰余レジスタ１０に出力し、剰余レジスタ１０に格納しているデータを１ビット左へシフトさせる（ステップＳＴ２ａ）。ここで、制御信号ＣＴ１は、従来の技術で説明したものと同様に、剰余レジスタ１０のシフト方向を制御する信号である。また、制御信号ＣＴ２は、剰余レジスタのＬＳＢ（Ｌｅａｓｔ　Ｓｉｇｎｉｆｉｃａｎｔ
Ｂｉｔ）に格納するデータを指示する信号である。
【００２３】
続いて、ループ処理終了検出部７がカウンタ８に初期値０をセットすることで、引き放し法による除算の繰り返し処理を開始する。
先ず、ＡＬＵ部４は、ソースレジスタ指定部Ｒ２に設定された情報に基づく制御ロジック部３からの制御により、汎用レジスタファイル２に格納されている除数データを内部バスＳ２に読み出し、パスＡＵ２を経由してＡＬＵ９に転送する。さらに、ＡＬＵ９では、パスＡＵ１を介して剰余レジスタ１０の左半分（３２ビット）のデータを取得する。次に、ＡＬＵ９は、制御ロジック部３で生成され出力される制御信号ＣＴＡを受けると、パスＡＵ１のデータからパスＡＵ２の除数データを引く減算処理を実行する。当該減算結果は、ＡＬＵ９から剰余レジスタ１０の左半分（３２ビット）に格納される。ここまでがステップＳＴ３ａに相当する。
【００２４】
上述した減算処理が実行されると、制御ロジック部３は、剰余がゼロ以上であるか否かを判定する（ステップＳＴ４ａ）。具体的に説明すると、従来の技術で説明したものと同様に、制御ロジック部３は、ＡＬＵ９での演算結果のＭＳＢ（Ｍｏｓｔ　Ｓｉｇｎｉｆｉｃａｎｔ　Ｂｉｔ）を制御信号ＤＶＳＧＮとして取り出す。このとき、制御信号ＤＶＳＧＮが０であれば、剰余≧０であるので、制御ロジック部３は、制御信号ＣＴ１を「左へ１ビットシフト」としてＡＬＵ部４に出力し、剰余レジスタ１０内のデータを左に１ビットシフトさせる。そして、制御信号ＣＴ２＝１として、剰余レジスタ１０のＬＳＢ（Ｌｅａｓｔ　Ｓｉｇｎｉｆｉｃａｎｔ　Ｂｉｔ）を１にセットする（ステップＳＴ５ａ）。即ち、剰余レジスタ１０内のデータが左に１ビットシフトされると、剰余レジスタ１０内の右端の新しいビットは、１に設定される。
【００２５】
一方、制御信号ＤＶＳＧＮが１であれば、剰余＜０であるので、制御ロジック部３は、パスＡＵ２を経由して、内部バスＳ２からＡＬＵ９に除数データを転送する。さらに、パスＡＵ１には、剰余レジスタ１０内の左半分の値がセットされる。このあと、ＡＬＵ９は、パスＡＵ１のデータとパスＡＵ２のデータを加算し、演算結果を剰余レジスタ１０の左半分（３２ビット）内に格納する。つまり、剰余レジスタ１０の左半分に汎用レジスタファイル２内の除数データの値を加えることにより、剰余レジスタ１０は、上述した減算処理の実行前の値に戻ることとなる。
【００２６】
次に、制御ロジック部３は、制御信号ＣＴ１を「左へ１ビットシフト」としてＡＬＵ部４に出力し、剰余レジスタ１０内のデータを左に１ビットシフトさせる。続いて、制御信号ＣＴ２＝０として、剰余レジスタ１０のＬＳＢ（ＬｅａｓｔＳｉｇｎｉｆｉｃａｎｔ　Ｂｉｔ）を０にセットする。即ち、剰余レジスタ１０を左にシフトし、剰余レジスタ１０内の右端の新しいビットに０を設定する。ここまでがステップＳＴ６ａに相当する。
【００２７】
このあと、制御ロジック部３は、繰り返し回数の判定を行う（ステップＳＴ７ａ）。具体的には、ループ処理終了検出部７が、上述した引き放し法による除算の繰り返し処理を１回実行する度に、カウンタ８を１だけインクリメントする。このあと、ループ処理終了検出部７は、引き放し法における繰り返し処理の終了回数として保持しておいた被除数データのサイズ情報ｎと当該カウンタ８のカウント値を比較する。このとき、カウンタ８のカウント値がｎ未満、つまり、ｎ回未満の繰り返し回数であったら、上述した繰り返し処理を再び実行する。
【００２８】
一方、カウンタ８のカウント値がｎ回で繰り返し処理が終了していたら、制御ロジック部３は、制御信号ＣＴ１を「右へ１ビットシフト」としてＡＬＵ部４に出力し、剰余レジスタ１０内のデータを右へ１ビットシフトさせる（ステップＳＴ８ａ）。そして、除算命令を実行した場合には、拡張レジスタ１１内に格納されているデータ（商）をパスＯＵＴ１を経由して、内部バスＤ１に出力させる。また、剰余命令を実行した場合には、剰余レジスタ１０の上位３２ビットに格納されているデータ（剰余）をパスＯＵＴ２を経由して内部バスＤ１に出力させる。最終的に、当該データ処理装置による演算結果は、内部バスＤ１を経由して汎用レジスタファイル２内のレジスタ（命令コードのデスティネーションレジスタ指定部で指定されたレジスタ）に転送され、格納される。
【００２９】
以上のように、この実施の形態１によれば、除算命令の実行時に被除数データのサイズ情報を当該被除数データから直接検出するサイズ情報検出回路６を備えたので、除算命令の実行時に、被除数データごとの有効データ幅に最適な命令実行サイクル数を選択することができる。
【００３０】
実施の形態２．
図６はこの発明の実施の形態２によるデータ処理装置の構成を示すブロック図であり、例えば除算処理を実行するハードウェアを示している。図において、サイズ情報検出回路（制御部）６ａは、被除数データのサイズ上限値Ｌを含む命令コードのデコード結果に基づいて、除算命令及び剰余命令の実行時に被除数データのサイズ情報（有効データ幅）ｎを検出し、有効データ幅としてループ処理終了検出部７に出力する。このサイズ情報検出回路６ａは、例えばサイズ上限値ＬによりＬビット幅だけをサーチ対象としたプライオリティエンコーダから構成する。なお、図１と同一構成要素には同一符号を付して重複する説明を省略する。
【００３１】
図７は図６中のデータ処理装置で扱われる命令フォーマットを示す図であり、例えば除算命令及び剰余命令の命令コードを示している。図において、第１オペコード部ＯＰ１及び第２オペコード部ＯＰ２は、実行すべき命令の種類（例えば、除算命令、剰余命令など）を指定する情報が設定される。また、オペコード部ＯＰ１，ＯＰ２には、デスティネーションレジスタ指定部Ｒ１やソースレジスタ指定部Ｒ２で指定したレジスタに格納されるデータのデータタイプ（データタイプ情報）を命令の一部として定義しておく。ここで、データタイプとは、上記実施の形態１と同様に、演算対象となるオペランドを符号付き（ｓｉｇｎｅｄ）あるいは符号なし（ｕｎｓｉｇｎｅｄ）のいずれで取り扱うかを指定する情報である。なお、データタイプを指定する情報は、命令コード内のオペコード部以外のビット位置に配置するようにしてもよい。
【００３２】
また、デスティネーションレジスタ指定部Ｒ１には、汎用レジスタファイル２内のレジスタ群のうち被除数を格納したレジスタを指定する情報が設定される。さらに、ソースレジスタ指定部Ｒ２には、汎用レジスタファイル２内のレジスタ群のうち除数を格納したレジスタを指定する情報が設定される。命令コード中の定数部Ｃの一部に設けたサイズフィールドＵＬ（サイズ上限値情報）は、被除数データのサイズ上限値Ｌを指定する情報が設定される。例えば、データ長が３２ビットであるデータ処理装置では、Ｌが０＜Ｌ≦３２を満たす整数となる。
【００３３】
図８は図６中のデータ処理装置で扱われるデータフォーマットを示す図であり、サイズ上限値Ｌが１６ビットに指定された３２ビットのデータフォーマットで上段が符号ビットを有さない場合を示し、下段に符号ビットを有する場合を示している。図において、ＤＩＶＵＨ，ＤＩＶＨは除算命令のニーモニックであって、それぞれ符号なしの除算命令及び符号有りの除算命令を示している。また、被除数データのサイズ上限値Ｌが１６ビットに指定されているので、ニーモニックＤＩＶＵＨ，ＤＩＶＨに対応するデータフォーマットでは、最上位の第０番目のビットから第１５番目のビットまでの値が無効なデータとして取り扱われる。
【００３４】
次に動作について説明する。
図９は実施の形態２のデータ処理装置による命令実行サイクル数の設定動作を示すフロー図であり、後述する引き放し法による除算の前処理に相当する。この図に沿って除算命令及び剰余命令を実行する際における被除数データのサイズ情報ｎの検出処理を説明する。例えば、データ長が３２ビットであるデータ処理装置では、ｎが０＜ｎ≦３２を満たす整数となる。以下、説明の簡単のために、当該データ処理装置で扱うデータのデータ長を３２ビットとする。
【００３５】
先ず、命令デコード部１は、ソースコードをコンパイルして生成された命令コードを受け取ると、当該命令コードをデコードする。これにより、ソースコードに記述された命令が当該演算ハードウェアに配置されることとなる。このとき、当該命令コードの第１オペコード部ＯＰ１及び第２オペコード部ＯＰ２に設定された、命令の種類（例えば、除算命令及び剰余命令など）、演算対象となるオペランドのデータタイプや、サイズフィールドＵＬに設定された被除数データのサイズ上限値Ｌ（＝１６ビット）などが命令コード情報として取り出される。
【００３６】
この命令コード情報であるデコード結果は、命令デコード部１から制御ロジック部３に転送される。制御ロジック部３では、内部のサイズ情報検出回路６ａに当該デコード結果を入力する。これにより、本実施の形態２のデータ処理装置による除算命令の実行が開始される。
【００３７】
次に、制御ロジック部３は、デコード結果内のデスティネーションレジスタ指定部Ｒ１に設定された情報に基づいて汎用レジスタファイル２内のレジスタから被除数データを読み出してバスＳ１に転送すると共に、サイズ情報検出回路６ａにも転送する。ここまでの処理がステップＳＴ１に相当する。
【００３８】
サイズ情報検出回路６ａでは、デコード結果の命令コード情報から取り出した被除数データのデータイプに基づいて被除数データの符号の有無を判定する（ステップＳＴ２）。このとき、当該被除数データが符号なしであれば、サイズ情報検出回路６ａは、被除数データのサイズ上限値Ｌに基づいて、図８に示すように、最上位の第０番目のビットから第（３１−Ｌ）番目までを無効なデータとして取り扱い、第（３２−Ｌ）番目のビットから第３１番目のビットまでサーチして最初に論理値１が出現するビット位置ｋ（第ｋ番目のビット）を検出する（ステップＳＴ３ｂ）。ここで、論理値１を有するビットが検出されなかった場合、サイズ情報検出回路６ａは、当該被除数データの値が０であると判断する。
【００３９】
一方、被除数データが符号有りであると、サイズ情報検出回路６ａは、符号が正か負かいずれの属性であるかを判定する（ステップＳＴ４）。ここで、被除数データのサイズ上限値がＬで、符号が正の場合、つまり、被除数データの第（３２−Ｌ）番目に位置する符号ビットが論理値０であると、サイズ情報検出回路６ａは、第（３２−Ｌ＋１）番目のビットから第３１番目のビットをサーチして当該符号ビットの反転値（即ち、論理値１）が最初に出現するビット位置ｋを検出する（ステップＳＴ５ｂ）。
【００４０】
また、符号が負の場合、つまり、被除数データの第（３２−Ｌ）番目の位置する符号ビットが論理値１であると、サイズ情報検出回路６ａは、第（３２−Ｌ＋１）番目のビットから第３１番目のビットをサーチして当該符号ビットの反転値（即ち、論理値０）が最初に出現するビット位置ｋを検出する（ステップＳＴ６ｂ）。図８の下段に示す例では、第１６番目の符号ビット（論理値Ｓ）から第２３番目のビットまでが符号ビットと同一値Ｓを示しており、第２４番目から第３１番目までが有効なデータとなっている。
【００４１】
上述のようにしてビット位置ｋが検出されると、サイズ情報検出回路６ａは、被除数データのデータサイズ情報ｎ及び繰り返し処理回数として、本実施の形態２によるデータ処理装置が扱うデータ長３２ビットのデータからビット位置ｋまでのデータを差し引いた（３２−ｋ）を算出する。この演算結果である被除数データのデータサイズ情報（有効データ幅）ｎは、有効データ幅としてサイズ情報検出回路６ａからループ処理終了検出部７に転送される。
【００４２】
また、サイズ情報検出回路６ａは、第０番目のビット（符号ビットを含む）から第（ｋ−１）番目のビットまでは演算対象でなく、有効なデータではないことから被除数データのシフト幅をｋとし、当該シフト幅ｋを指定する制御信号ＳＦ１を生成してバスＳ２に出力する。ここまでの処理がステップＳＴ７に相当する。
以降の引き放し法による除算処理については、上記実施の形態１と同様であるので重複する説明を省略する。
【００４３】
以上のように、この実施の形態２によれば、被除数データのサイズ情報を検出する際のサーチ範囲を規定するサイズ上限値Ｌを命令コードに設定したので、被除数データのサイズ情報の検出処理を高速化することができる。また、サイズ上限値Ｌで指定された範囲以外のビット位置にあるデータは全て無効になることから、データ格納時に３２ビットデータに補正する必要がない。
【００４４】
実施の形態３．
図１０はこの発明の実施の形態３によるデータ処理装置の構成を示すブロック図であり、例えば除算処理を実行するハードウェアを示している。図において、モードレジスタ（記憶部）１２は、被除数データのデータタイプ（データタイプ情報）を指定する情報及びそのサイズ上限値Ｌ（サイズ上限値情報）を格納する。なお、図１及び図６と同一構成要素には同一符号を付して重複する説明を省略する。
【００４５】
先ず、本実施の形態３によるデータ処理装置で扱われる命令フォーマットは、上記実施の形態１と同様であり、命令コード中の定数部Ｃに除算命令及び剰余命令における被除数データのサイズ情報が設定されない。また、データフォーマットは、上記実施の形態２と同様であり、サイズ上限値Ｌで指定された範囲以外のビット位置にあるデータは全て無効になる。
【００４６】
次に動作について説明する。
ここでは、除算命令及び剰余命令を実行する際における被除数データのサイズ情報ｎの検出処理を説明する。例えば、データ長が３２ビットであるデータ処理装置では、ｎが０＜ｎ≦３２を満たす整数となる。以下、説明の簡単のために、当該データ処理装置で扱うデータのデータ長を３２ビットとする。
【００４７】
先ず、命令デコード部１は、ソースコードをコンパイルして生成された命令コードを受け取ると、当該命令コードをデコードする。これにより、ソースコードに記述された命令が当該演算ハードウェアに配置されることとなる。このとき、当該命令コードの第１オペコード部ＯＰ１及び第２オペコード部ＯＰ２に設定された、命令の種類（例えば、除算命令及び剰余命令など）や、演算対象となるオペランドのデータタイプなどが命令コード情報として取り出される。
【００４８】
この命令コード情報であるデコード結果は、命令デコード部１から制御ロジック部３に転送される。制御ロジック部３では、内部のサイズ情報検出回路６ａに当該デコード結果を入力する。
【００４９】
次に、制御ロジック部３は、汎用レジスタファイル２内のレジスタから被除数データを読み出してバスＳ１に転送すると共に、サイズ情報検出回路６ａにも転送する。さらに、制御ロジック部３は、モードレジスタ１２から上記被除数データに対応するデータタイプ及びサイズ上限値Ｌを読み込み、サイズ情報検出回路６ａに転送する。これにより、本実施の形態３のデータ処理装置による除算命令の実行が開始される。
【００５０】
サイズ情報検出回路６ａでは、モードレジスタ１２からのデータイプに基づいて被除数データの符号の有無を判定する。このとき、当該被除数データが符号なしであれば、サイズ情報検出回路６ａは、モードレジスタ１２からのサイズ上限値Ｌに基づいて、最上位の第０番目のビットから第（３１−Ｌ）番目までを無効なデータとして取り扱い、第（３２−Ｌ）番目のビットから第３１番目のビットまでサーチして最初に論理値１が出現するビット位置ｋ（第ｋ番目のビット）を検出する。
【００５１】
一方、被除数データが符号有りであると、サイズ情報検出回路６ａは、符号が正か負かいずれの属性であるかを判定する。ここで、被除数データのサイズ上限値がＬで、符号が正の場合、つまり、被除数データの第（３２−Ｌ）番目に位置する符号ビットが論理値０であると、サイズ情報検出回路６ａは、第（３２−Ｌ＋１）番目のビットから第３１番目のビットをサーチして当該符号ビットの反転値（即ち、論理値１）が最初に出現するビット位置ｋを検出する。
【００５２】
また、符号が負の場合、つまり、被除数データの第（３２−Ｌ）番目の位置する符号ビットが論理値１であると、サイズ情報検出回路６ａは、第（３２−Ｌ＋１）番目のビットから第３１番目のビットをサーチして当該符号ビットの反転値（即ち、論理値０）が最初に出現するビット位置ｋを検出する。
【００５３】
上述のようにしてビット位置ｋが検出されると、サイズ情報検出回路６ａは、被除数データのデータサイズ情報ｎ及び繰り返し処理回数として、本実施の形態３によるデータ処理装置が扱うデータ長３２ビットのデータからビット位置ｋまでのデータを差し引いた（３２−ｋ）を算出する。この演算結果である被除数データのデータサイズ情報（有効データ幅）ｎは、有効データ幅としてサイズ情報検出回路６ａからループ処理終了検出部７に転送される。
【００５４】
また、サイズ情報検出回路６ａは、第０番目のビット（符号ビットを含む）から第（ｋ−１）番目のビットまでは演算対象でなく、有効なデータではないことから被除数データのシフト幅をｋとし、当該シフト幅ｋを指定する制御信号ＳＦ１を生成してバスＳ２に出力する。ここまでの処理がステップＳＴ７に相当する。
以降の引き放し法による除算処理については、上記実施の形態１と同様であるので重複する説明を省略する。
【００５５】
以上のように、この実施の形態３によれば、被除数データのデータタイプやそのサイズ上限値Ｌを設定するモードレジスタ１２を備えたので、命令フォーマットにサイズ情報フィールドを設けることなく、上記実施の形態２と同様の効果を得ることができる。
【００５６】
なお、上記実施の形態１から上記実施の形態３まででは、除算処理に関するハードウェアや演算方法について説明したが、本発明はこれに限定されるものではない。つまり、本発明の適用対象は、被演算データの有効データ幅によって命令実行サイクル数が規定される演算処理を行うものであればよい。例えば、命令コード情報として、被演算データのサイズ上限値の他にその下限値を設定することで、命令実行サイクル数の下限を制御したり、演算結果の下限値を制御することができる。
【００５７】
実施の形態４．
図１１はこの発明の実施の形態４によるデータ処理装置の構成を示すブロック図であり、例えば除算処理を実行するハードウェアを示している。図において、モードレジスタ（記憶部）１２ａは、サイズ情報検出回路６ｂによる被除数データの有効データ幅の検出処理を実行すべきか否かを指定する処理設定情報を格納する。なお、図１及び図６と同一構成要素には同一符号を付して重複する説明を省略する。
【００５８】
本実施の形態４によるデータ処理装置は、上記実施の形態１で示した命令実行サイクル数の決定・設定処理の他に、モードレジスタ１２ａに格納した処理設定情報によって、上記実施の形態２や上記実施の形態３で示した処理を選択したり、予め定めておいたデータ幅から命令実行サイクル数を決定するようにしたものである。
【００５９】
次に動作について説明する。
ここでは、除算命令及び剰余命令を実行する際における被除数データのサイズ情報ｎの検出処理を説明する。例えば、データ長が３２ビットであるデータ処理装置では、ｎが０＜ｎ≦３２を満たす整数となる。以下、説明の簡単のために、当該データ処理装置で扱うデータのデータ長を３２ビットとする。
【００６０】
先ず、命令デコード部１は、ソースコードをコンパイルして生成された命令コードを受け取ると、当該命令コードをデコードする。これにより、ソースコードに記述された命令が当該演算ハードウェアに配置されることとなる。このとき、当該命令コードの第１オペコード部ＯＰ１及び第２オペコード部ＯＰ２に設定された、命令の種類（例えば、除算命令及び剰余命令など）や、演算対象となるオペランドのデータタイプなどが命令コード情報として取り出される。
【００６１】
この命令コード情報であるデコード結果は、命令デコード部１から制御ロジック部３に転送される。制御ロジック部３では、内部のサイズ情報検出回路６ｂに当該デコード結果を入力する。次に、制御ロジック部３は、デコード結果内のデスティネーションレジスタ指定部Ｒ１に設定された情報に基づいて汎用レジスタファイル２内のレジスタから被除数データを読み出してバスＳ１に転送すると共に、サイズ情報検出回路６ｂにも転送する。
【００６２】
このとき、サイズ情報検出回路６ｂは、モードレジスタ１２ａから処理設定情報を入力し、当該情報に基づいて被除数データの有効データ幅の検出処理を実行すべきか否かを判断する。具体的には、処理設定情報としてサイズ情報検出回路６ｂによる被除数データの有効データ幅の検出機能を有効又は無効にするディジタル値を設定しておく。サイズ情報検出回路６ｂは、処理設定情報の値を基にして自己の上記機能の有効又は無効を判断する。
【００６３】
ここで、被除数データの有効データ幅の検出機能が有効である場合、サイズ情報検出回路６ｂは、デコード結果の演算種類やデータタイプを用いて、上記実施の形態１と同様に処理を行い、当該除算処理の命令実行サイクル数に相当する被除数データの有効データ幅ｎを算出する。有効データ幅ｎをループ処理終了検出部７に設定した以降の処理は、上記実施の形態１と同様である。
【００６４】
一方、被除数データの有効データ幅の検出機能が無効である旨が処理設定情報に指定されている場合、サイズ情報検出回路６ｂは、被除数データの有効データ幅ｎを検出せずに、プロセッサのデータ長３２ビットを予め定めた有効データ幅ｎとしてループ処理終了検出部７に設定する。以降の処理は、上記実施の形態１と同様である。
この構成が本実施の形態４を上記実施の形態１に適用した場合に相当する。
【００６５】
図１２は図１１中の制御ロジック部及びその周辺構成部を示すブロック図であり、この図を用いて本実施の形態４を上記実施の形態１から３までのいずれかの構成に適用した場合について説明する。図に示すように、本実施の形態４の構成を上記実施の形態２や３に適用した場合、サイズ情報検出回路６ｂは、命令コードのデコード結果又はモードレジスタ１２から被除数データのサイズ上限値Ｌを入力する。なお、被除数データのサイズ上限値Ｌは、処理設定情報と共にモードレジスタ１２ａに格納しておいても良い。
【００６６】
ここで、被除数データの有効データ幅の検出機能が有効である旨が処理設定情報に指定されている場合、サイズ情報検出回路６ｂは、上記実施の形態２又は３と同様な処理を行い、当該除算処理の命令実行サイクル数に相当する被除数データの有効データ幅ｎを算出する。有効データ幅ｎをループ処理終了検出部７に設定した以降の処理は、上記実施の形態２又は３と同様である。
【００６７】
一方、被除数データの有効データ幅の検出機能が無効である旨が処理設定情報に指定されている場合、サイズ情報検出回路６ｂは、被除数データの有効データ幅ｎを検出せずに、被除数データのサイズ上限値Ｌを予め定めた有効データ幅ｎとして設定する。有効データ幅ｎをループ処理終了検出部７に設定した以降の処理は、上記実施の形態２又は３と同様である。
【００６８】
なお、モードレジスタ１２ａに格納する処理設定情報としては、サイズ情報検出回路６ｂによる被除数データの有効データ幅の検出処理を実行すべきか否かを指定する情報の他に、被除数データのサイズ上限値Ｌなどの命令コード情報を使用すべきか否かを指定する情報を設定するようにしてもよい。
【００６９】
具体的に説明すると、図１２に示すように、サイズ情報検出回路６ｂは、被除数データのサイズ上限値Ｌ及びプロセッサのデータ長を保持しておく。このとき、処理設定情報において、被除数データの有効データ幅の検出機能が無効である旨が指定されており、且つ被除数データのサイズ上限値Ｌなどの命令コード情報の使用を無効とする旨が指定されている場合、サイズ情報検出回路６ｂは、被除数データのサイズ上限値Ｌを有効データ幅ｎとせずに、プロセッサのデータ長３２ビットを予め定めた有効データ幅ｎとしてループ処理終了検出部７に設定する。
【００７０】
また、被除数データの有効データ幅の検出機能が無効である旨が処理設定情報に指定されており、且つ被除数データのサイズ上限値Ｌなどの命令コード情報の使用を有効とする旨が指定されている場合、サイズ情報検出回路６ｂは、被除数データのサイズ上限値Ｌを有効データ幅ｎを予め定めた有効データ幅ｎとしてループ処理終了検出部７に設定する。
【００７１】
以上のように、この実施の形態４によれば、モードレジスタ１２ａに格納した処理設定情報によって、上記実施の形態１から上記実施の形態３までで示した被除数データの有効データ幅から命令実行サイクル数を決定する処理と、予め定めておいたデータ幅から命令実行サイクル数を決定する処理とを選択するように構成したので、命令フォーマットにサイズ情報フィールドを設けることなく、上記実施の形態２と同様の効果を得ることができる。また、命令実行サイクル数の決定方法を適宜選択でき、演算命令の種類などに応じて柔軟に適切な命令実行サイクル数を決定することができる。
【００７２】
【発明の効果】
以上のように、この発明によれば、演算命令の命令コードをデコードする命令デコード部と、命令デコード部によるデコード結果から演算命令で処理すべき被演算データの有効データ幅を検出すると共に、当該有効データ幅に応じた命令実行サイクル数を決定する制御部と、制御部が決定した命令実行サイクル数で演算命令を実行する演算部とを備えるので、被演算データごとの有効データ幅を予め命令コードに設定しておく必要がなく、演算命令の実行時に被演算データごとの有効データ幅から導かれる最適な演算処理の命令実行サイクル数を適宜選択することができるという効果がある。
【００７３】
この発明によれば、装置内の記憶部に、演算命令の命令実行サイクル数を制御する命令コード情報を設定しておき、当該命令コード情報に基づいて、上記演算命令で処理すべき被演算データの有効データ幅に応じた命令実行サイクル数を決定するので、モードレジスタなどの記憶部に命令実行サイクル数を制御する命令コード情報を保持し、当該内容を用いて演算処理の制御を行うので、命令コードに対する制約をなくすことができるという効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるデータ処理装置の構成を示すブロック図である。
【図２】図１中のデータ処理装置で扱われる命令フォーマットを示す図である。
【図３】図１中のデータ処理装置で扱われるデータフォーマットを示す図である。
【図４】実施の形態１のデータ処理装置による命令実行サイクル数の設定動作を示すフロー図である。
【図５】データ処理装置による除算命令の処理動作を示すフロー図である。
【図６】この発明の実施の形態２によるデータ処理装置の構成を示すブロック図である。
【図７】図６中のデータ処理装置で扱われる命令フォーマットを示す図である。
【図８】図６中のデータ処理装置で扱われるデータフォーマットを示す図である。
【図９】実施の形態２のデータ処理装置による命令実行サイクル数の設定動作を示すフロー図である。
【図１０】この発明の実施の形態３によるデータ処理装置の構成を示すブロック図である。
【図１１】この発明の実施の形態４によるデータ処理装置の構成を示すブロック図である。
【図１２】図１１中の制御ロジック部及びその周辺構成部を示すブロック図である。
【符号の説明】
１　命令デコード部、２　汎用レジスタファイル、３　制御ロジック部（制御部）、４　ＡＬＵ部（演算部）、５　シフタ部、６，６ａ，６ｂ　サイズ情報検出回路（制御部）、７　ループ処理終了検出部、８　カウンタ、９　ＡＬＵ、１０　剰余レジスタ、１１　拡張レジスタ、１２，１２ａ　モードレジスタ（記憶部）。
【図１】
2004102532.tif 000003
【図２】
2004102532.tif 000004
【図３】
2004102532.tif 000005
【図４】
2004102532.tif 000006
【図５】
2004102532.tif 000007
【図６】
2004102532.tif 000008
【図７】
2004102532.tif 000009
【図８】
2004102532.tif 000010
【図９】
2004102532.tif 000011
【図１０】
2004102532.tif 000012
【図１１】
2004102532.tif 000013
【図１２】
2004102532.tif 000014