(57)【要約】【課題】プリフィックス命令の命令コードに配置するフラグにより、ターゲット命令の機能を拡張する機構を備えるマイクロコンピュータを提供すること。【解決手段】デコーダ２１０と、命令レジスタ２１１と、レジスタファイル２１３と、演算器２１４を有するマイクロコンピュータであって、前記デコーダ２１０でプリフィックス命令の命令コードに配置したフラグを、プリフィックス命令入力後のターゲット命令のオペコードに対応してデコードするとともに、前記フラグに基づいてターゲット命令の機能を拡張する命令機能拡張実行回路２４１、２４２をそれぞれ前記レジスタファイル２１３と前記演算器２１４の内部に備える。【選択図】　図２
2004038521.tif 000002
【特許請求の範囲】
【請求項１】
ターゲット命令の直前に該命令を修飾するプリフィックス命令を配置するとともに、前記プリフィックス命令の命令コード内に１つ以上のフラグを備え、該フラグの状態を前記ターゲット命令のオペコードを参照して解読してフラグの状態を前記ターゲット命令に反映することで該ターゲット命令のオペレーションコードで指定された機能とは異なる機能を実行可能とすることを特徴とするマイクロコンピュータ。
【請求項２】
前記プリフィックス命令の命令コードに含まれているフラグが、使用する汎用レジスタの番号を選択する請求項１項記載のマイクロコンピュータ。
【請求項３】
前記プリフィックス命令の命令コードに含まれているフラグが、前記ターゲット命令が除算命令の場合、剰余算出有無を選択する請求項１項記載のマイクロコンピュータ。
【請求項４】
前記プリフィックス命令の命令コードに含まれているフラグが、前記ターゲット命令が加算命令もしくは減算命令の場合、演算結果の飽和判定の有無を選択する請求項１項記載のマイクロコンピュータ。
【請求項５】
前記プリフィックス命令の命令コードに含まれているフラグが、符号つきのデータと符号無しのデータのどちらかを選択する請求項１項記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータに係り、特に、命令の直前に該命令を修飾するプリフィックス命令を挿入して、これにより命令の機能を拡張する場合に、プリフィックス命令の命令コードに含まれているフラグを制御することにより命令の機能を拡張し、多様な命令が容易に実現できる技術に関する。
【０００２】
【従来の技術】
従来、ＲＩＳＣ方式のマイクロコンピュータでは、固定長ビット幅の命令コードが用いられている。これは、可変長ビット幅の命令コードを用いる場合と比較すると、命令のデコードに要する時間を短縮でき、かつ回路規模を小さくすることができるからである。
【０００３】
命令コード体系を決定した後に新規の命令機能を有した命令コードを追加しようとした場合、従来とのオブジェクト互換性を保つために、新命令コードの割付が困難であるという問題が生じてくる。すなわち、新規に命令を追加しようとした場合、ビット数制限の中で割り振られた従来の命令コード体系との互換性を保つために、空いている数少ない命令コードに割り付ける必要があるため、新規の命令機能を有した命令コードを大量に割り付けることが困難であった。
【０００４】
この不具合を解決するために、例えば特開平９−２３１０７０号公報記載の如く、ターゲット命令の入力直前に該ターゲット命令の機能を拡張するためのプリフィックス命令を入力することで、該ターゲット命令の即値を拡張したり、オペランドの数を増加させることで命令機能の拡張を行っている。
【０００５】
【発明が解決しようとする課題】
前記従来技術による命令機能の拡張は、プリフィックス命令入力直後のターゲット命令の即値及びオペランドに対する拡張であり、プリフィックス命令自体の機能の拡張ではない。
【０００６】
このため、従来の命令コード体系で割り当てられた命令の機能とは異なる命令を新規に追加しようとする場合には、従来技術によるプリフィックス命令の命令機能の拡張では不可能である。そのため、空いている数少ない命令コードに割り付ける必要が有り、新規に命令を追加することは困難である。
【０００７】
本発明の目的は、前記従来技術による不具合を除去することであり、命令自体の機能を拡張することが可能なプリフィックス命令を提供することである。
【０００８】
【課題を解決するための手段】
前記目的を達成するため、ターゲット命令の直前に挿入されたプリフィックス命令を実行することでターゲット命令を修飾し、ターゲット命令のオペレーション内容を拡張するマイクロコンピュータの制御方法において、前記プリフィックス命令の命令コード内に１つ以上のフラグを備え、該フラグの状態をターゲット命令に反映することでターゲット命令のオペレーションコードで指定された機能に別の機能を付加することによりターゲット命令の機能を拡張する。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態を、例を用いて図面により詳細に説明する。
【００１０】
図１は、本発明の実施例に係るプリフィックス命令とこの直後に表れるターゲット命令の関係を示す図である。プリフィックス命令１００は１６ビット固定長であり、プリフィックス命令１００の命令コードは、ビット１５からビット８に８ビットのオペコードを指定する領域１０６と、ビット７からビット４にそれぞれ１ビットのフラグＦ１からＦ４を指定する領域１０２〜１０５と、ビット３からビット０に４ビットのオペコードを指定する領域１０７とを有している。ターゲット命令はオペコードとこのオペコードの実行に必要な情報を持つ領域とからなっている。
【００１１】
Ｆ１からＦ４のフラグを命令コードの中に配置したプリフィックス命令１００の直後に表れるターゲット命令１１０を実行する場合、ターゲット命令１１０のオペコードに応じてセレクタ１１１により、前記フラグ１０２〜１０５のいずれかが選択され、他のフラグに対応する信号は“０”に強制される。すなわち、プリフィックス命令１００は直後に表れるターゲット命令１１０と対応して所定の機能を果たすことができるものである。本発明では、領域１０２〜１０５のフラグ（Ｆ１からＦ４）の設定によってプリフィックス命令１００を汎用的なものとして使用できるものとされているから、直後に表れるターゲット命令１１０のオペコードに応じてフラグ（Ｆ１からＦ４）のいずれか１つを選択することでターゲット命令１１０の機能に別の機能を付加することが必要となる。
【００１２】
図１では、フラグ１０２（Ｆ１）によりターゲット命令に機能を付加している例を模式的に示す。プリフィックス命令１００の領域１０２〜１０５のフラグＦ１からＦ４は、ターゲット命令１１０のオペコードに応じて、フラグＦ１が選択されており、選択されなかったフラグに対応する選択信号は全て“０”とされる。選択されたフラグは、その内容に応じて“０”か“１”が出力される。
【００１３】
フラグの選択に応じて、ターゲット命令の機能は付加された機能を実行できることになるが、この実施例では、表１に示す機能がフラグに対応して実行可能となるものとした。
【００１４】
【表１】
2004038521.tif 000003
図１の例では、プリフィックス命令のフラグを指定する領域が４ビットしか割り当てていないが、フラグを指定する領域は４ビットに固定するものではなく、命令コードの割り当てスペースが空いていればフラグを指定する領域は４ビット以上に割り当てることが可能である。また、これを単純にフラグ対応とするのではなく、４ビットでコード化されたものとして処理するものとすれば、２４個の種類の機能とできる。
【００１５】
このように、本発明の特徴であるプリフィックス命令のフラグが、一つのプリフィックス命令に複数配置できることから、それぞれ独立に、且つ、一度に、ターゲット命令に対する機能の付加が可能となる。そのため、本発明によれば、プリフィックス命令のみ命令コードに割り当てることで、命令コードの消費を最小限に抑えられ、命令の機能拡張が可能となる。なお、本実施例では、プリフィックス命令が１６ビット固定長として説明したが、プリフィックス命令の命令ビット長は１６ビットに固定されるものではない。
【００１６】
次に、マイクロコンピュータを例に取り、本発明のプリフィックス命令を実現するための構成の一例について説明する。
【００１７】
図２は、本発明の実施例に係るＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）とその周辺の構成を示すブロック図である。ＣＰＵ２００はデータバス２０３、データアドレスバス２０４、命令データバス２０５、および命令アドレスバス２０６に、それぞれ、接続されている。図では、ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）２０１は、命令データバス２０５および命令アドレスバス２０６に、また、ＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）２０２は、データバス２０３およびデータアドレスバス２０４に、それぞれ、接続されている。データバス２０３、データアドレスバス２０４、命令データバス２０５および命令アドレスバス２０６は、メモリ以外の外部デバイスに接続される構成も可能であるが、本実施例では省略する。前記ＲＯＭ２０１には、ＣＰＵ２００に実行させる処理を記述した命令コードが格納されており、前記プリフィックス命令の命令コードも含んでいる。前記ＲＡＭ２０２は、実行に使用するデータを格納している。
【００１８】
前記ＣＰＵ２００は、デコーダ２１０、命令レジスタ２１１、レジスタファイル２１３および演算器２１４を有する。また、本発明のプリフィックス命令を実現するための機構として、前記デコーダ２１０の中にプリフィックス命令をデコードするプリフィックス命令専用デコーダ２４０を、前記レジスタファイル２１３および前記演算器２１４の中に命令機能拡張実行回路２４１および２４２を、それぞれ、設ける。ここで、前記デコーダ２１０の機能には、図１で説明したセレクタ１１１に対応する機能を果たす機能が含まれる。
【００１９】
命令レジスタ２１１は、前記ＲＯＭ２０１から、命令データバス２０５を介して入力された命令コードを格納する。デコーダ２１０は、命令レジスタ２１１に格納された命令コードを解読し、実行に必要な制御信号２３２をレジスタファイル２１３に、制御信号２３３を演算器２１４に出力する。
【００２０】
演算器２１４は、前記デコーダ２１０から出力された制御信号２３３に基づき、レジスタファイル２１３のレジスタに格納された値や前記ＲＡＭ２０２のデータに対して、算術演算、論理演算あるいはシフト演算を実行し、その結果を必要なら、演算結果２３５をレジスタファイル２１３にフィードバックする。
【００２１】
本発明の特徴であるプリフィックス命令専用デコーダ２４０は、デコーダ２１０が、プリフィックス命令の命令コードに配置したフラグの状態をターゲット命令のオペコードに対応して解読、判断して実行に必要な制御信号２５１を命令機能拡張実行回路２４１に、制御信号２５２を命令機能拡張実行回路２４２に出力する。
【００２２】
以上のような方法で、プリフィックス命令のフラグによりターゲット命令の機能を拡張することが可能となる。
【００２３】
（第１の実施形態）
図３（Ａ）は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【００２４】
図３は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能をフラグ１０２（Ｆ１）に割り当てた場合で、かつターゲット命令の命令コードで汎用レジスタを指定するビット数が４ビットである場合を例とした。
フラグ１０２の値が“０”のときは、ターゲット命令の命令コードで指定した汎用レジスタの番号が０〜１５のいずれかを使用する。フラグ１０２の値が“１”のときは、ターゲット命令の命令コードで指定した汎用レジスタの番号が１６〜３１のいずれかを使用する。
【００２５】
次に、図３（Ｂ）を参照して動作の具体例を説明する。レジスタファイル２１３はレジスタ群３６１と命令機能拡張実行回路２４１を有する。デコーダ２１０でターゲット命令コードを解読し、汎用レジスタの番号を示した４ビットのコード領域３２３を、４ビットの制御信号３３２を介して４ビットの領域３４１に読み出す。同様に、汎用レジスタの番号を示した４ビットのコード領域３２４を、４ビットの制御信号３３３を介して４ビットの領域３４３に読み出す。その後、命令機能拡張実行回路２４１で領域３４１と領域３４３のＭＳＢ（Ｍｏｓｔ　Ｓｉｇｎｉｆｉｃａｎｔ　Ｂｉｔ）側に新たにプリフィックス命令１００の前記フラグ１０２（Ｆ１）を付加する。ここでは、図１で説明したようにフラグ１０２（Ｆ１）が選択されているので、他のフラグについての表示は省略した。生成された５ビットの汎用レジスタ指定領域は、制御信号３５１、３５２を介してレジスタ群３６１に出力される。
【００２６】
（第２の実施形態）
図４（Ａ）は、ターゲット命令が除算命令の時に、剰余の算出の有無を選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【００２７】
図４は剰余の算出の有無を選択できる機能を有するフラグＦ２を１０３に割り当てた場合を例とした。また、除算命令の商と剰余は３２ビット以下の数で表す場合を例とした。フラグ１０３（Ｆ２）の値が“０”のときは、除算命令を実行した場合、剰余をレジスタに格納しない。フラグ１０３（Ｆ２）の値が“１”のときは、除算命令を実行した場合、剰余をレジスタに格納する。
【００２８】
次に、図４（Ｂ）、図５を参照して動作の具体例を説明する。演算器２１４は除算回路４４１と命令機能拡張実行回路２４２を有する。除算回路４４１は３２ビットの商データ４５２と３２ビットの剰余データ４５１を出力する。除算回路４１４で出力された３２ビットの商データ４５２は命令機能拡張実行回路２４２の入力となるデータ４５３と、レジスタファイルへ出力されるデータ４５４に伝達される。データ４５４は除算回路４４１の商をレジスタへ格納する役割を果たしている。命令機能拡張実行回路２４２は、除算回路４４１から出力された剰余データ４５１と、商データ４５３と、プリフィックス命令１００のフラグ１０３を入力とし、実行結果であるデータ４５５あるいは除算回路４４１の商データ４５４を図２における制御信号２３５に対応するものとしてレジスタファイル２１３へ格納する。ここでも、図１で説明したようにフラグ１０３（Ｆ２）が選択されているので、他のフラグについての表示は省略した。
【００２９】
図５は、図４で示した命令機能拡張実行回路２４２の機能ブロックの一例を示す図である。命令機能拡張実行回路２４２は、フラグ１０３（Ｆ２）の信号値により剰余データ４５１と商データ４５３を選択するセレクタ５１０を有している。フラグ１０３が“０”の場合、セレクタ５１０は商データ４５３をセレクタ５１０の出力４５５とすることで、剰余のレジスタへの格納を妨げている。フラグ１０３（Ｆ２）が“１”の場合、セレクタ５１０は剰余データ４５３をセレクタ５１０の出力４５５とする。なお、剰余の算出を行わない場合に商データ４５３を出力する理由は、セレクタ５１０の出力データ４５５と、除算回路４４１から出力された商データ４５４が等しい場合には、剰余の算出を行っていないと簡単に判断できるため、デバッグが容易になるからである。
【００３０】
（第３の実施形態）
図６（Ａ）は、ターゲット命令が加算命令もしくは減算命令の時に、飽和判定の有無を選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【００３１】
図６は飽和判定の有無を選択できる機能を有するフラグＦ３を１０４に割り当てた場合を例とした。フラグ１０４（Ｆ３）の値が“０”のときは、ターゲット命令に加算命令もしくは減算命令を実行した場合、飽和判定を行わない。フラグ１０４（Ｆ３）の値が“１”のときは、ターゲット命令に加算命令もしくは減算命令を実行した場合、飽和判定を行う。
【００３２】
次に、図６（Ｂ）、図７を参照して動作の具体例を説明する。演算器２１４はＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ　Ｌｏｇｉｃ　Ｕｎｉｔ）６４１と命令機能拡張実行回路２４２を有する。ＡＬＵ６４１は演算結果を３２ビットのデータ６５１に出力する。命令機能拡張実行回路２４２は、ＡＬＵ６４１から出力されたデータ６５１と、レジスタファイル２１３から出力されたデータ２３４と、プリフィックス命令１００のフラグ１０３を入力とし、実行結果であるデータ６５２を図２における制御信号２３５に対応するものとしてレジスタファイル２１３へ格納する。ここでも、図１で説明したようにフラグ１０４（Ｆ３）が選択されているので、他のフラグについての表示は省略した。
【００３３】
図７は、図６（Ｂ）で示した命令機能拡張実行回路２４２の機能ブロック図である。命令機能拡張実行回路２４２は、飽和判定回路７００とセレクタ７０１を有している。飽和判定回路７００は、ＡＬＵの出力データ７１０と、レジスタファイル２１３から出力されたデータ２３４を入力としている。飽和判定回路７００は、入力データが飽和値を超えていた場合飽和値をデータ７１１に出力し、飽和値を超えていなかった場合には入力データをそのままデータ７１１に出力する。飽和値については、予めレジスタファイル２１３内のレジスタに格納した値を飽和値とみなし、データ２３４として読み出されて使用される。そして、セレクタ７０１は、フラグ１０４（Ｆ３）の制御信号により、ＡＬＵの出力データ７１０と飽和判定回路出力データ７１１を選択する。フラグ１０４（Ｆ３）が“０”の場合、飽和の判定を行わないので、セレクタ７０１はＡＬＵデータ７１０を出力する。フラグ１０４（Ｆ３）が“１”の場合、飽和の判定を行うので、セレクタ７０１は飽和判定回路７００の出力データ７１１を出力する。セレクタ７０１で選択された出力６５２を図２におけるデータ２３４に対応するものとしてレジスタファイル２１３へ格納する。
【００３４】
（第４の実施形態）
図８（Ａ）は、符号付きと無符号のデータを選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図である。
【００３５】
図８は符号付きと無符号のデータを選択できる機能を有するフラグＦ４を１０５に割り当てた場合を例とした。フラグ１０５（Ｆ４）の値が“０”のときは、無符号のデータを用いる。フラグ１０５（Ｆ４）の値が“１”のときは、符号付きのデータを用いる。ここでも、図１で説明したようにフラグ１０４（Ｆ３）が選択されているので、他のフラグについての表示は省略した。
【００３６】
次に図８（Ｂ）、図９を参照して、動作の具体例を説明する。レジスタファイル２１３は命令機能拡張実行回路２４１とレジスタ８４０を有する。命令機能拡張実行回路２４１は、データバスから出力されたデータ２２６と、プリフィックス命令１００のフラグ１０５（Ｆ４）を入力とし、実行結果であるデータ８５１をレジスタ８４０へ転送する。
【００３７】
図９は、図８（Ｂ）で示した命令機能拡張実行回路２４１の機能ブロック図である。命令機能拡張実行回路２４１は、符号拡張実行回路９００、ゼロ拡張実行回路９０１およびセレクタ９０２を有している。符号拡張実行回路９００は、データバス２０３からのデータ２２６が８ビットの場合には、ビット７の値をビット８からビット３１に、データバス２０３からのデータ２２６が１６ビットの場合には、ビット１５の値をビット１６からビット３１に付加することで、３２ビットの符号付きデータを生成する。ゼロ拡張実行回路９０１は、データバス２０３からのデータ２２６が８ビットの場合には、ビット８からビット３１まで“０”を、データバス２０３からのデータ２２６が１６ビットの場合には、ビット１６からビット３１まで“０”を付加することで、３２ビットの無符号のデータを生成する。データバス２０３からのデータ２２６が３２ビットの場合には、符号拡張実行回路９００、ゼロ拡張実行回路９０１とも、入力と同じデータを出力する。セレクタ９０２は、フラグ１０５（Ｆ４）の制御信号により、符号拡張実行回路出力データ９１３とゼロ拡張実行回路出力データ９１４とのいずれかを選択する。フラグ１０５（Ｆ４）が“０”の場合、無符号のデータを取り扱うので、セレクタ９０２はゼロ拡張実行回路９０１の出力データ９１４を出力する。フラグ１０５（Ｆ４）が“１”の場合、符号付きのデータを取り扱うので、セレクタ７０１は符号拡張実行回路９００の出力データ９１３を出力する。セレクタ９０２で選択された出力８５１をレジスタ８４０へ格納する。
【００３８】
以上、本発明の具体的な実施形態を述べてきたが、それらに制限される訳ではない。プリフィックス命令の命令コードに配置したフラグによるターゲット命令の機能拡張との本発明の思想を逸脱しない範囲で様々な実施形態が考えられる。
【００３９】
【発明の効果】
以上、本発明によれば、プリフィックス命令の命令コードに配置したフラグを用いることで、命令コードのスペースを消費することなく、プリフィックス命令後に入力したターゲット命令自体の機能を拡張することが容易となる。
【図面の簡単な説明】
【図１】本発明の実施例に係るプリフィックス命令とこの直後に表れるターゲット命令の関係を示す図。
【図２】本発明の実施例に係るＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）とその周辺の構成を示すブロック図。
【図３】（Ａ）は、ターゲット命令の命令コードで指定する汎用レジスタの番号を選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図４】（Ａ）は、ターゲット命令が除算命令の時に、剰余の算出の有無を選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図５】図４（Ｂ）で示した命令機能拡張実行回路２４２の機能ブロックの一例を示す図。
【図６】（Ａ）は、ターゲット命令が加算命令もしくは減算命令の時に、飽和判定の有無を選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図７】図６（Ｂ）で示した命令機能拡張実行回路２４２の機能ブロックの一例を示す図。
【図８】（Ａ）は、符号付きと無符号のデータを選択できる機能を有するフラグの詳細仕様を示す表、（Ｂ）はそのフラグを命令コード内に配置したプリフィックス命令の動作を説明する図。
【図９】図８（Ｂ）で示した命令機能拡張実行回路２４１の機能ブロックの一例を示す図。
【符号の説明】
１００：プリフィックス命令、１０２，１０３，１０４，１０５：フラグ、１０６，１０７：オペコード、１１０：ターゲット命令、２００：ＣＰＵ、２０１：ＲＯＭ、２０２：ＲＡＭ、２０３：データバス、２０４：データアドレスバス、２０５：命令データバス、２０６：命令アドレスバス、２１０：デコーダ、２１１：命令レジスタ、２１３：レジスタファイル、２１４：演算器、２３４，２３５，４５１〜４５５，６５１，６５２，７１０，７１１，８５１，９１３，９１４：データ線、２３２，２３３，２５１，２５２，３３２，３３３，３５１，３５２：制御信号、２４０：プリフィックス命令専用デコーダ、２４１，２４２：命令機能拡張実行回路、３２３，３４１：Ｒｍ、３２４，３４３：Ｒｎ、３６１：レジスタ群、４４１：除算回路、５１０，７０１，９０２：セレクタ、６４１：ＡＬＵ、７００：飽和判定回路、８４０：レジスタ、９００：符号拡張実行回路、９０１：ゼロ拡張実行回路。
【図１】
2004038521.tif 000004
【図２】
2004038521.tif 000005
【図３】
2004038521.tif 000006
【図４】
2004038521.tif 000007
【図５】
2004038521.tif 000008
【図６】
2004038521.tif 000009
【図７】
2004038521.tif 000010
【図８】
2004038521.tif 000011
【図９】
2004038521.tif 000012