(57)【特許請求の範囲】
【請求項１】
データプロセッサであって、
前記データプロセッサは少なくとも２つのモードを有し、
前記少なくとも２つのモードのうちの第１モードでは、前記データプロセッサは、第１の命令長の命令コードからなる第１の命令長の第１の種類の命令のみを実行するものであり、
前記少なくとも２つのモードのうちの第２モードでは、前記データプロセッサは、前記第１の種類の命令と、プレフィックスコードと前記第１の命令長の前記命令コードからなる第２の命令長の第２の種類の命令のいずれをも実行しうるものであり、
前記データプロセッサは、
入力された命令が、前記第１の命令長の前記命令コードか、前記プレフィックスコードかを判定するためのプリデコードを行う第１、第２、第３及び第４プリデコーダと、
第１プレフィックスコードデコード部及び第１固定長命令デコード部を有する第１パイプラインと、
第２プレフィックスコードデコード部及び第２固定長命令デコード部を有する第２パイプラインと、
前記第１、第２、第３及び第４プリデコーダの出力から一つを選択して前記第１固定長命令デコード部へ出力するための第１セレクタと、
前記第１、第２、第３及び第４プリデコーダの出力から一つを選択して前記第２固定長命令デコード部へ出力するための第２セレクタと、
前記第１、第２、第３及び第４プリデコーダの出力から一つを選択して前記第１プレフィックスコードデコード部へ出力するための第３セレクタと、
前記第１、第２、第３及び第４プリデコーダの出力から一つを選択して前記第２プレフィックスコードデコード部へ出力するための第４セレクタとを有するものであり、
前記第１モードにおいては、
前記第１、第２、第３及び第４プリデコーダのいずれも、前記第１の命令長の前記命令コードが入力されて、入力された前記第１の命令長の前記命令コードをプリデコードするものであり、
前記第１セレクタは、前記第１、第２、第３及び第４プリデコーダのそれぞれの出力から１つを選択して前記第１固定長命令デコード部に出力するものであり、
前記第２セレクタは、前記第１、第２、第３及び第４プリデコーダのそれぞれの出力から１つを選択して前記第２固定長命令デコード部に出力するものであり、
前記第２モードにおいては、
前記第１、第２、第３及び第４プリデコーダのいずれも、前記第１の命令長の前記命令コードまたは前記プレフィックスコードのいずれかが入力されて、入力された前記第１の命令長の前記命令コードまたは前記プレフィックスコードをプリデコードするものであり、
前記第３セレクタは、前記第１、第２、第３及び第４プリデコーダのうち、前記プレフィックスコードをプリデコードした１つのプリデコーダの出力を選択して前記第１プレフィックスコードデコード部に出力するものであり、
前記第４セレクタは、前記第１、第２、第３及び第４プリデコーダのうち、前記プレフィックスコードをプリデコードした他の１つのプリデコーダの出力を選択して前記第２プレフィックスコードデコード部に出力するものであり、
前記第１セレクタは、前記第１、第２、第３及び第４プリデコーダのうち、前記第１の命令長の前記命令コードをプリデコードした１つのプリデコーダの出力を選択して前記第１固定長命令デコード部に出力するものであり、
前記第２セレクタは、前記第１、第２、第３及び第４プリデコーダのうち、前記第１の命令長の前記命令コードをプリデコードした他の１つのプリデコーダの出力を選択して前記第２固定長命令デコード部に出力するものである、データプロセッサ。
【請求項２】
前記第１モードにおいて、前記第１及び第２プレフィックスコードデコード部への電力供給が遮断される、請求項１記載のデータプロセッサ。
【請求項３】
前記第１、第２、第３及び第４プリデコーダのいずれも、前記入力された命令の属性を示す命令属性信号を出力するものであり、
前記命令属性信号は、少なくとも、前記入力された命令が前記第１の命令長の前記命令コードであることと、前記入力された命令が前記プレフィックスコードであることを示しうるものである、請求項１記載のデータプロセッサ。
【請求項４】
前記第１モードにおいて、前記第１及び第２プレフィックスコードデコード部の動作を停止し、又は前記第１及び第２プレフィックスコードデコード部を無効化する設定をするためのモードレジスタをさらに有する、請求項１記載のデータプロセッサ。
【請求項５】
第１のコード長の命令コードから成る第１の命令と、後続される前記命令コードをプレフィックスコードで修飾した第２のコード長の第２の命令とを、実行可能な命令セットとして有するデータプロセッサであって、
複数個を単位として命令をフェッチする命令レジスタ部と、
前記命令レジスタ部にフェッチされた複数個の命令を夫々解読して、前記第１の命令における命令コード、前記第２の命令における命令コード、又は前記第２の命令におけるプレフィックスコードの何れであるかを判別するプリデコーダと、
前記命令レジスタ部にフェッチされた命令の前記命令コードを解読する第１のデコーダと、
前記命令レジスタ部にフェッチされた命令の前記プレフィックスコードをデコードする第２のデコーダと、
前記プリデコーダによる判別結果に基づいて前記命令コードを前記第１のデコーダに供給し前記プレフィックスコードを前記第２のデコーダに供給する選択部と、を有し、
前記選択部は、前記第１の命令に対してはその命令コードを前記第１のデコーダに供給し、前記第２の命令に対してはそのプレフィックスコードを前記第２のデコーダに供給した後に、当該プレフィックスコードで修飾される命令コードを前記第１のデコーダに供給する、データプロセッサ。
【請求項６】
複数のパイプラインで命令を実行するために前記第１のデコーダ及び第２のデコーダのペアをパイプラインの数に応じて備え、
前記選択部は、前記プリデコーダによる判別結果に基づいて、前記第２の命令を構成する命令コード及びプレフィックスコードを同じパイプラインの第１のデコーダ及び第２のデコーダに供給する制御を行う、請求項５記載のデータプロセッサ。
【請求項７】
前記第１の命令だけを実行する第１モードにおいて前記第２のデコーダは動作電源の供給が遮断され又は回路動作の非活性化が指示される、請求項５記載のデータプロセッサ。
【請求項８】
前記プリデコーダは、第１の命令における命令コード、前記第２の命令における命令コード、又は前記第２の命令におけるプレフィックスコードの何れであるかを示す属性信号を出力する、請求項５記載のデータプロセッサ。
【請求項９】
前記第１の命令だけを実行する第１のモード又は前記第１の命令及び第２の命令の双方を実行する第２のモードを指定するモードレジスタを有する、請求項５記載のデータプロセッサ。
【請求項１０】
第１のコード長の第１の命令コードから成る第１の命令と、後続される前記第１の命令コードをプレフィックスコードで修飾した第２のコード長の第２の命令と、第２のコード長の第２の命令コードから成る第３の命令とを、実行可能な命令セットとするデータプロセッサであって、
複数個を単位として命令をフェッチする命令レジスタ部と、
前記命令レジスタ部にフェッチされた複数個の命令を夫々解読して、前記第１の命令における第１の命令コード、前記第２の命令における第１の命令コード、前記第２の命令におけるプレフィックスコード、又は第３の命令における第２の命令コードの何れであるかを判別するプリデコーダと、
前記命令レジスタ部にフェッチされた前記第１の命令コードを解読する第１のデコーダと、
前記命令レジスタ部にフェッチされた第２の命令の前記プレフィックスコードをデコードする第２のデコーダと、
前記命令レジスタ部にフェッチされた前記第２の命令コードを解読する第３のデコーダと、
前記プリデコーダによる判別結果に基づいて前記第１の命令コードを前記第１デコーダに供給し、前記プレフィックスコードを前記第２のデコーダに供給し、前記第２の命令コードを前記第３デコーダに供給する選択部と、を有し、
前記選択部は、第１の命令に対してはその第１の命令コードを前記第１のデコーダに供給し、前記第２の命令に対してはそのプレフィックスコードを前記第２のデコーダに供給した後に、当該プレフィックスコードで修飾される第１の命令コードを前記第１デコーダに供給し、第３の命令に対してはその第２の命令コードを前記第３のデコーダに供給する、データプロセッサ。
【請求項１１】
複数のパイプラインで命令を実行するために前記第１のデコーダ及び第２のデコーダのペアをパイプラインの数に応じて備え、
前記選択部は、前記プリデコーダによる判別結果に基づいて、前記第２の命令を構成する第１の命令コード及びそれに対応するプレフィックスコードを同じパイプラインの第１のデコーダ及び第２のデコーダに供給する制御を行う、請求項１０記載のデータプロセッサ。
【請求項１２】
前記第１の命令だけを実行する動作モードにおいて前記第２のデコーダ及び第３のデコーダは動作電源の供給が遮断され又は回路動作の非活性化が指示され、前記第１の命令及び第２の命令だけを実行する動作モードにおいて前記第３のデコーダは動作電源の供給が遮断され又は回路動作の非活性化が指示される、請求項１０記載のデータプロセッサ。
【請求項１３】
前記プリデコーダは、第１の命令における第１の命令コード、前記第２の命令における第１の命令コード、前記第２の命令におけるプレフィックスコード、又は第３の命令における第２の命令コードの何れであるかを示す属性信号を出力する、請求項１０記載のデータプロセッサ。
【請求項１４】
前記第１の命令だけを実行する第１モード、前記第１の命令及び第２の命令の双方を実行する第２モード又は前記第１の命令乃至第３の命令の何れも実行する第３モードを指定するモードレジスタを有する、請求項１０記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の命令長の命令が混在するマイクロプロセッサやマイクロコンピュータ等のデータプロセッサに係り、例えば、プレフィックスコードによって拡張された命令を実行可能なデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
今日のプロセッサは性能最優先のＰＣ／サーバ用プロセッサと高効率と高性能の両立が求められる組込プロセッサに大別される。そして、高効率が求められる組込プロセッサでは、高コード効率の実現可能な１６ビット固定長命令セットのＲＩＳＣ（Reduced Instruction Set Computer）型の組込プロセッサが普及している。高コード効率は、オフチップメモリの大容量化が進んだ現在においても、オンチップのキャッシュ、ＲＡＭやＲＯＭの有効活用には欠かせないものである。しかしながら、１６ビット固定長命令セットでは、プログラムサイズを小さく出来る反面、命令数が増加する。特に、オペランド指定の制約から、レジスタ間転送、即値転送命令の命令数が増加する。また、増加した転送命令のレイテンシを隠蔽するために、転送先レジスタの代わりに転送元レジスタの値をフォワーディングするソースフォワーディングも一般的に使われている。命令数の増加は、性能低下や電力増加の原因となる。また、性能低下を補うソースフォワーディングはクリティカルパス及び論理規模の増加を通じて、動作周波数の低下及び電力増大の一因となっている。
【０００３】
こうした問題は１６ビット固定長命令セットの命令コード空間が２１６B=６４ｋBと、３２ビット固定長命令セットの命令コード空間２３２B=４GBに比べて非常に小さいことに起因する。このため、例えば、非特許文献１のARM Thumb-２命令セットでは、１６ビット固定長命令と３２ビット固定長命令を混在させて命令コード空間を広げている。一方、特許文献１のプロセッサでは、１６ビット固定長命令セットに１６ビットプレフィックスを追加することにより命令コード空間を広げている。ここでいうプレフィックスとは、後続の命令コードの意味を変えたり、後続の命令コードに情報を追加したりする機能を持つ命令コードであり、プレフィックス単独では命令にはならない。尚、プレフィックスは１９８５年に発表されたインテル社のi３８６プロセッサが、それまで１６ビットアーキテクチャであったプロセッサを、上位互換性を維持しつつ３２ビットアーキテクチャにする際に使用しており、２０年以上前から公知である。そして、i３８６プロセッサでは、後続命令コードのオペランドサイズの意味を変えるためにプレフィックスを使用している。また、i３８６プロセッサやその後継機種は全て可変長命令セットのＣＩＳＣ（Complicated Instruction Set Computer）型のプロセッサであるため、元々命令デコード回路が複雑であり、プレフィックス追加に伴う実現回路への影響は相対的に小さいと言える。
【０００４】
特許文献１におけるプレフィックスは、２オペランド命令にオペランドを追加して３オペランドにすること、レジスタ間接アドレッシングの命令にインデックスを追加してレジスタ相対間接アドレッシングの命令に変えること、及び、２オペランドのモディファイ型命令のソースオペランドを変更して３オペランド型の命令に変えることに使われている。また、特許文献１では、命令コードを１６ビットずつデコードするスカラプロセッサを例に、実現方式を開示している。プレフィックスも１命令コードであるため、プレフィックス付き命令のデコードには２サイクルかかり、実行も２サイクルかかる。
【０００５】
特許文献２では、特許文献１のプロセッサを改良したプロセッサが開示されている。プレフィックスの機能としては、２オペランドのモディファイ型命令のデスティネーションオペランドを変更して３オペランド型に変えること、及び、リテラルオペランドのビット幅を拡張することを開示している。また、特許文献１において２サイクルかかっていたプレフィックス付き命令のデコードのうち、プレフィックスのデコードを先行命令と同時に行うことにより、プレフィックスのデコードサイクルを隠蔽し、プレフィックス付き命令の１サイクル実行を実現している。
【０００６】
１６ビット固定長命令セットで、レジスタ指定フィールドが確保できないという問題に対処するための方式として、暗黙の固定レジスタ指定がある。非特許文献２、３に記載のＳＨ-４Ａでは、１６本の汎用レジスタのうちの１本のレジスタＲ０を暗黙の固定レジスタとして使用する命令を定義している。そして、コンパイラのレジスタアロケーション時にこうした暗黙の固定レジスタ使用命令に優先的にＲ０を割り当てる。こうした命令を活用することにより、固定レジスタであることのデメリットを緩和している。しかし、固定オペランド指定によるレジスタ指定の自由度の低下を十分隠蔽できるとは限らない。特に、種々の命令セットアーキテクチャを同じコンパイル方式で扱おうとする複数プロセッサ向けコンパイラの提供者は、特定のアーキテクチャの長所は使用しない傾向が強い。このため、固定レジスタ使用命令の活用が不十分な場合がある。即ち、固定レジスタ使用命令は、レジスタ指定フィールドが確保できないという問題に対する十分な対応策とはいえず、更なる改善が必要であると言える。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２８４９６２号公報
【特許文献２】特開２００４−０３００１５号公報
【非特許文献】
【０００８】
【非特許文献１】Markus Levy， “ARM Grows More Thumbs,” Microprocessor Report， ６/１７/０３-０２， June ２００３.
【非特許文献２】SH-４Aソフトウェアマニュアル、[２00９年１0月１９日検索]、Internet URL http://documentation.renesas.com/jpn/products/mpumcu/rjj0９b00９0_sh４a.pdf 、p.３-９〜p.３-１９、表３.４,３.５, ３.６, ３.９, ３.１0, ３.１３
【非特許文献３】SH-４A Software Manual、[２00９年１0月１９日検索]、Internet URL http://documentation.renesas.com/eng/products/mpumcu/rej0９b000３_sh４a.pdf、pp.３３-４２、Table ３.４,３.５, ３.６, ３.９, ３.１0, ３.１３
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述のように、１６ビット固定長命令コードの命令コード空間の小ささを補うための命令コード空間拡張方式として、１６ビット固定長命令と３２ビット固定長命令を混在させて命令コード空間を広げる方式と、１６ビット固定長命令セットに１６ビットプレフィックスを追加することにより命令コード空間を広げる方式とが開示されている。そして、後者では具体的に、２オペランド命令にオペランドを追加して３オペランドにすること、レジスタ間接アドレッシングの命令にインデックスを追加してレジスタ相対間接アドレッシングの命令に変えること、２オペランドのモディファイ型命令のソースオペランドまたはデスティネーションオペランドを変更して３オペランド型の命令に変えること、及び、リテラルオペランドのビット幅を拡張することが開示されている。また、命令コード空間を拡張せずにオペランド数を確保する方式として、暗黙の固定オペランド指定方式がある。
【００１０】
しかしながら、命令コード空間を拡張せずにオペランド数を確保することが可能であるという固定レジスタ使用命令の長所を生かそうとしても固定レジスタ使用命令だけでは対応できない場合に、命令コード空間を拡張したとき、転送命令の出現頻度を削減し、性能を向上し、消費電力を削減するには、上記引用文献では充分ではなかった。
【００１１】
本発明が解決しようとする第１の課題は、命令コードを修飾するプレフィックスコードによって命令コード空間を拡張したとき、転送命令の出現頻度の削減、性能の向上、消費電力の削減に資することができる命令デコード機能を備えたデータプロセッサを提供することにある。
【００１２】
本発明が解決しようとする第２の課題は、プレフィックス付きの命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にすること、即ち、プレフィックス付きの命令もプレフィックス無しの命令と同等の発行効率とすることができる命令デコード機能を備えたデータプロセッサを提供することにある。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１５】
すなわち、第１の課題を解決するために、本発明では、下記機能変換または機能拡張をするプレフィックスコードを効率良くデコードするように、プレフィックスコードのデコード部と固定長命令のデコード部とを別々に備えてデコード機能を実現する。プレフィックスコードは、例えば前記固定レジスタ使用命令の固定レジスタを他のレジスタ又は即値に置換する機能を有する。別のプレフィックスコードにおいては、固定レジスタ使用命令の定義においてサイズの直交性を維持せずに、使用頻度の低いサイズの命令は固定レジスタ使用命令、使用頻度の高いサイズの命令はレジスタフィールドでレジスタを指定する命令として命令コードサイズを圧縮し、プレフィックスによって使用頻度の高いサイズの命令サイズを使用頻度の低いサイズに置換して、命令定義の直交性を確保する機能を備える。さらに、サイズ置換に要するオペランドフィールドは少ないため、他の拡張、たとえば、データの符号拡張／ゼロ拡張、即値やディスプレースメントのビット幅の拡張を、前記サイズ変更機能に加えて、一つのプレフィックスコードとすることにより、プレフィックスコードによる命令定義拡張機能を強化するものである。さらに別の観点によるプレフィックスコードは、プレフィックスコードを後続する命令の種別によって変えるものである。
【００１６】
上記手段によれば、例えば、プレフィックス付きの命令をデコードするために、プレフィックス無しの固定長命令のデコーダに、プレフィックスコードのデコーダが追加される。このように、既存の固定長命令デコード構成はそのままに、プレフィックスコードのデコーダが追加された構成であるので、既存の固定長命令の実行に対して影響を無くすことができる。また、固定長命令の実行時には、プレフィックスコードのデコーダの動作を停止させることで電力消費を抑えることができる。そして、製品の多品種展開時、プレフィックスコードが不要である場合は、デコードモジュールが分けられていることにより、論理を合成する時に、削除することで、プロセッサの面積及び消費電力を削減できる。
【００１７】
第２の課題を解決するために、固定長命令の命令コードか、プレフィックスコードかを判定し、その判定結果と前記命令コードとを出力する命令フェッチ部を採用すると共に、その判別結果に基づいて命令コードとプレフィックスコードを夫々別々にデコードするデコーダを採用する。さらに、プレフィックスはこれが修飾する固定長命令コードよりも先にデコーダに供給されることにより、プレフィックスコードのデコード結果によって固定長命令のデコード動作を修飾することができる。前記プレフィックスコードは後続の固定長命令コードを修飾するから、プレフィックスコードに後続する固定長命令コードは、対応するプレフィックスコードのデコーダと同じパイプラインのデコーダに供給される。
【発明の効果】
【００１８】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１９】
すなわち、命令コードを修飾するプレフィックスコードによって命令コード空間を拡張したとき、転送命令の出現頻度の削減、性能の向上、消費電力の削減に資することができる。
【００２０】
また、プレフィックス付きの命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にすることができる。
【図面の簡単な説明】
【００２１】
【図１】図１はプレフィックスコードを利用して可変長命令を実行可能なデータプロセッサにおける命令フェッチユニット及び命令デコードユニットを例示する実施の形態１のブロック図である。
【図２】図２は命令フェッチユニットＦＴＣにおける属性信号と選択信号を生成する構成を概略的に示すブロック図である。
【図３】図３は選択制御回路による選択信号の生成形態を例示する説明図である。
【図４】図４はデータプロセッサ内の動作モード制御部として、固定長命令動作モードと可変長命令動作モードの切り替えを制御するモード制御論理の構成を例示するブロック図である。
【図５】図５は図１の命令デコードユニットを採用したデータプロセッサの全体的な構成を例示するブロック図である。
【図６】図６は論理合成に際して図1のデータプロセッサに対してその機能を縮減した場合の命令フェッチユニットの例を示す実施の形態２のブロック図である。
【図７】図７は論理合成に際して図1のデータプロセッサに対してその機能を縮減した場合のさらに別の命令フェッチユニットの例を示す実施の形態３のブロック図である。
【図８】図８は論理合成に際して図1のデータプロセッサに対してその機能を縮減した場合のさらに別の命令フェッチユニットの例を示す実施の形態４のブロック図である。
【図９】図９は１６ビット固定長命令のほかにプレフィックス付き可変長命令及び非プレフィックス可変長命令を実行可能なデータプロセッサにおける命令フェッチユニット及び命令デコードユニットが例示される実施の形態５のブロック図である。
【図１０】図１０は図９の命令フェッチユニットにおける属性信号と選択信号を生成する構成が概略的に示されるブロック図である。
【図１１】図１１は図１０の選択制御回路による選択信号の生成形態を例示する説明図である。
【図１２】図１２は論理合成に際して図９のデータプロセッサに対してその機能を縮減した場合の命令デコードユニットの例を示す実施の形態６のブロック図である。
【図１３】図１３は論理合成に際して図９のデータプロセッサに対してその機能を縮減した場合の別の命令デコードユニットの例を示す実施の形態７のブロック図である。
【図１４】図１４は論理合成に際して図９のデータプロセッサに対してその機能を縮減した場合のさらに別の命令デコードユニットの例を示す実施の形態８のブロック図である。
【図１５】実施の形態７，８の場合においてタイミング制御回路ＳＴＭＧＥが実現するように選択信号Ｓ０〜Ｓ３の選択形態を例示する説明図である。
【発明を実施するための形態】
【００２２】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２３】
〔１〕本発明の代表的な実施の形態に係るデータプロセッサは、第１の命令長の固定長命令に対応する第１モード、及び前記第１の命令長の固定長命令にプレフィックスを付して第２の命令長とする可変長命令に対応する第２モードを有する。このデータプロセッサは、入力された命令が、前記第１モードにおける固定長命令か、前記第２モードにおける可変長命令の一部である固定長命令か、又は前記第２モードにおける可変長命令の一部であるプレフィックスかを判定するためのプリデコードを行う第１、第２、第３及び第４プリデコーダ（ＦＰＤ０〜ＦＰＤ３）と、第１プレフィックスコードデコード部（ＤＢ０，ＰＲＦＤＥＣ１）及び第１固定長命令デコード部（ＤＢ１，ＢＤＹＤＥＣ１）を有する第１パイプライン（Ｐｉｐｅ１）と、第２プレフィックスコードデコード部（ＤＢ２，ＰＲＦＤＥＣ２）及び第２固定長命令デコード部（ＤＢ３，ＢＤＹＤＥＣ２）を有する第２パイプライン（Ｐｉｐｅ２）と、前記第１、第２、第３又は第４プリデコーダの出力から一つを選択して前記第１固定長命令デコード部へ出力するための第１セレクタ（ＳＥＬＢ）と、前記第１、第２、第３又は第４プリデコーダの出力から一つを選択して前記第２固定長命令デコード部へ出力するための第２セレクタ（ＳＥＬＤ）と、前記第１、第２、第３又は第４プリデコーダの出力から一つを選択して前記第１プレフィックスコードデコード部へ出力するための第３セレクタ（ＳＥＬＡ）と、前記第１、第２、第３又は第４プリデコーダの出力から一つを選択して前記第２プレフィックスコードデコード部へ出力するための第４セレクタ（ＳＥＬＣ）とを有する。
【００２４】
前記第１モードにおいては、前記第１プリデコーダに第１固定長命令が入力され、前記第２プリデコーダに第２固定長命令が入力され、前記第３プリデコーダに第３固定長命令が入力され、前記第４プリデコーダに第４固定長命令が入力され、前記第１プリデコーダは前記第１固定長命令をプリデコードし、前記第２プリデコーダは前記第２固定長命令をプリデコードし、前記第３プリデコーダは前記第３固定長命令をプリデコードし、前記第４プリデコーダは前記第４固定長命令をプリデコードし、前記第１セレクタは、前記第１から第４プリデコーダの出力から１つを選択し前記第１固定長命令デコード部へ出力し、前記第２セレクタは、前記第１から第４プリデコーダの出力から１つを選択し前記第２固定長命令デコード部へ出力する。
【００２５】
前記第２モードにおいては、前記第１プリデコーダに、第１可変長命令の一部である第１プレフィックス、前記第１可変長命令の一部である第３固定長命令、第２可変長命令の一部である第２プレフィックス又は前記第２可変長命令の一部である第４固定長命令が入力され、前記第２プリデコーダに、前記第１可変長命令の一部である第１プレフィックス、前記第１可変長命令の一部である第３固定長命令、第２可変長命令の一部である第２プレフィックス又は前記第２可変長命令の一部である第４固定長命令が入力され、前記第３プリデコーダに、前記第１可変長命令の一部である第１プレフィックス、前記第１可変長命令の一部である第３固定長命令、第２可変長命令の一部である第２プレフィックス又は前記第２可変長命令の一部である第４固定長命令が入力され、前記第４プリデコーダに、前記第１可変長命令の一部である第１プレフィックス、前記第１可変長命令の一部である第３固定長命令、第２可変長命令の一部である第２プレフィックス又は前記第２可変長命令の一部である第４固定長命令が入力され、前記第１プリデコーダは、前記第１プレフィックス、前記第３固定長命令、前記第２プレフィックス又は前記第４固定長命令をプリデコードし、前記第２プリデコーダは、前記第１プレフィックス、前記第３固定長命令、前記第２プレフィックス又は前記第４固定長命令をプリデコードし、前記第３プリデコーダは、前記第１プレフィックス、前記第３固定長命令、前記第２プレフィックス又は前記第４固定長命令をプリデコードし、前記第４プリデコーダは前記第１プレフィックス又は前記第３固定長命令又は前記第２プレフィックス又は前記第４固定長命令をプリデコードし、前記第３セレクタ又は前記第４セレクタは、前記第１プリデコーダ、前記第２プリデコーダ、前記第３プリデコーダ又は前記第４プリデコーダの出力から１つを選択し前記第１プレフィックスコードデコード部又は前記第２プレフィックスコードデコード部へ出力し、前記第１セレクタ又は前記第２セレクタは、前記第１プリデコーダないしは前記第４プリデコーダの出力から１つを選択し前記第１固定長命令デコード部又は前記第２固定長命令デコード部へ出力する。
【００２６】
〔２〕項１のデータプロセッサは、前記第１モードにおいて、前記第１及び第２プレフィックスコードデコード部への電力供給が遮断される。
【００２７】
〔３〕項１のデータプロセッサにおいて、前記第１、第２、第３、及び第４プリデコーダには、前記入力された命令が、前記第１モードにおける固定長命令か、前記第２モードにおける可変長命令の一部である固定長命令か、又は前記第２モードにおける可変長命令の一部であるプレフィックスかを示す命令属性信号を出力する。
【００２８】
〔４〕項１のデータプロセッサは、前記第１モードにおいて、前記第１及び第２プレフィックスコードデコード部の動作を停止し、又は前記第１及び第２プレフィックスコードデコード部を無効化する設定をするためのモードレジスタをさらに有する。
【００２９】
〔５〕本発明の別の実施の形態に係るデータプロセッサは、第１のコード長の命令コードから成る第１の命令と、後続される前記命令コードをプレフィックスコードで修飾した第２のコード長の第２の命令とを、実行可能な命令セットとして有する。このデータプロセッサは、複数個を単位として命令をフェッチする命令レジスタ部（ＩＲＥＧ０〜ＩＲＥＧ３）と、前記命令レジスタ部にフェッチされた複数個の命令を夫々解読して、前記第１の命令における命令コード、前記第２の命令における命令コード、又は前記第２の命令におけるプレフィックスコードの何れであるかを判別するプリデコーダ（ＦＰＤ０〜ＦＰＤ３）と、前記命令レジスタ部にフェッチされた命令の前記命令コードを解読する第１のデコーダ（ＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２）と、前記命令レジスタ部にフェッチされた命令の前記プレフィックスコードをデコードする第２のデコーダ（ＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２）と、前記プリデコーダによる判別結果（Ａ０〜Ａ３）に基づいて前記命令コードを前記第１のデコーダに供給し前記プレフィックスコードを前記第２のデコーダに供給する選択部（ＳＥＬ０〜ＳＥＬ３，ＳＥＬＡ〜ＳＥＬＤ）とを有する。前記選択部は、前記第１の命令に対してはその命令コードを前記第１のデコーダに供給し、前記第２の命令に対してはそのプレフィックスコードを前記第２のデコーダに供給した後に、当該プレフィックスコードで修飾される命令コードを前記第１のデコーダに供給する。
【００３０】
これによれば、プレフィックス付きの命令をデコードするために、プレフィックス無しの命令のデコーダはそのままにして、プレフィックスコードのデコーダを追加したから、既存の固定長命令の実行に対する影響を無くすことができる。また、プレフィックスコードはこれが修飾する固定長の命令コードよりも先にデコーダに供給されることにより、プレフィックスコードのデコード結果によって固定長命令のデコード動作を修飾することができる。
【００３１】
〔６〕項５のデータプロセッサにおいて、複数のパイプライン（Ｐｉｐｅ１，Ｐｉｐｅ２）で命令を実行するために前記第１のデコーダ及び第２のデコーダのペアをパイプラインの数に応じて備えるとき、前記選択部は、前記プリデコーダによる判別結果に基づいて、前記第２の命令を構成する命令コード及びプレフィックスコードを同じパイプラインの第１のデコーダ及び第２のデコーダに供給する制御を行う。前記プレフィックスコードは後続の固定長の命令コードを修飾するから、プレフィックスコードの後続の命令コードが、プレフィックスコードのデコーダと同じパイプラインのデコーダに供給されることによって、プレフィックス付きの命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にすることができる。
【００３２】
〔７〕項５のデータプロセッサにおいて、前記第１の命令だけを実行する第１モードにおいて前記第２の命令デコーダは動作電源の供給が遮断され又は回路動作の非活性化が指示される。これにより、データプロセッサによる電力消費を抑えることができる。また、製品の多品種展開時、プレフィックスコードが不要である場合は、命令コードとプレフィックスコードとの間でデコーダが分けられているから、論理を合成する時に、プレフィックスコードのデコーダを削除することで、プロセッサの面積及び消費電力を削減することができる。
【００３３】
〔８〕項５のデータプロセッサにおいて、前記プリデコーダは、第１の命令における命令コード、前記第２の命令における命令コード、又は前記第２の命令におけるプレフィックスコードの何れであるかを示す属性信号（Ａ０〜Ａ３）を出力する。この属性信号を用いることによって前記選択部は命令コードとプレフィックスコードの供給先の制御を容易に行うことができる。
【００３４】
〔９〕項５のデータプロセッサにおいて、前記第１の命令だけを実行する第１のモード又は前記第１の命令及び第２の命令の双方を実行する第２のモードを指定するモードレジスタ（ＭＲ１，ＭＲ２）を有する。ダイナミックに動作モードの切り替えを行うことが可能になる。
【００３５】
〔１０〕本発明の更に別の実施の形態に係るデータプロセッサは、第１のコード長の第１の命令コードから成る第１の命令と、後続される前記第１の命令コードをプレフィックスコードで修飾した第２のコード長の第２の命令と、第２のコード長の第２の命令コードから成る第３の命令とを、実行可能な命令セットとする。このデータプロセッサは、複数個を単位として命令をフェッチする命令レジスタ部（ＩＲＥＧ０〜ＩＲＥＧ３）と、前記命令レジスタ部にフェッチされた複数個の命令を夫々解読して、前記第１の命令における第１の命令コード、前記第２の命令における第１の命令コード、前記第２の命令におけるプレフィックスコード、又は第３の命令における第２の命令コードの何れであるかを判別するプリデコーダ（ＦＰＤ０〜ＦＰＤ３）と、前記命令レジスタ部にフェッチされた前記第１の命令コードを解読する第１のデコーダ（ＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２）と前記命令レジスタ部にフェッチされた第２の命令の前記プレフィックスコードをデコードする第２のデコーダ（ＰＲＥＤＥＣ１，ＰＲＥＤＥＣ２）と、前記命令レジスタ部にフェッチされた前記第２の命令コードを解読する第３のデコーダ（３２ＵＤＥＣ，３２ＬＤＥＣ）と、前記プリデコーダ（ＦＰＤＥ０〜ＦＰＤＥ３）による判別結果（Ａ０〜Ａ３）に基づいて前記第１の命令コードを前記第１デコーダに供給し、前記プレフィックスコードを前記第２のデコーダに供給し、前記第２の命令コードを前記第３デコーダに供給する選択部（ＳＥＬ０〜ＳＥＬ３、ＳＥＬＡ〜ＳＥＬＤ）とを有する。前記選択部は、第１の命令に対してはその第１の命令コードを前記第１のデコーダに供給し、前記第２の命令に対してはそのプレフィックスコードを前記第２のデコーダに供給した後に、当該プレフィックスコードで修飾される第１の命令コードを前記第１デコーダに供給し、第３の命令に対してはその第２の命令コードを前記第３のデコーダに供給する。
【００３６】
第２の命令に対するネイティブ命令としての第３の命令が混在しても、それに対応して項５と同様の作用効果を奏する。
【００３７】
〔１１〕項１０のデータプロセッサにおいて、複数のパイプライン（Ｐｉｐｅ１，Ｐｉｐｅ２）で命令を実行するために前記第１のデコーダ及び第２のデコーダのペアをパイプラインの数に応じて備える。前記選択部は、前記プリデコーダによる判別結果に基づいて、前記第２の命令を構成する第１の命令コード及びそれに対応するプレフィックスコードを同じパイプラインの第１のデコーダ及び第２のデコーダに供給する制御を行う。
【００３８】
〔１２〕項１０のデータプロセッサは、前記第１の命令だけを実行する動作モードにおいて前記第２の命令デコーダ及び第３の命令デコーダは動作電源の供給が遮断され又は回路動作の非活性化が指示され、前記第１の命令及び第２の命令だけを実行する動作モードにおいて前記第３の命令デコーダは動作電源の供給が遮断され又は回路動作の非活性化が指示される。
【００３９】
〔１３〕項１０のデータプロセッサにおいて、前記プリデコーダは、第１の命令における第１の命令コード、前記第２の命令における第１の命令コード、前記第２の命令におけるプレフィックスコード、又は第３の命令における第２の命令コードの何れであるかを示す属性信号（Ａ０〜Ａ３）を出力する。
【００４０】
〔１４〕項１０のデータプロセッサはさらに、前記第１の命令だけを実行する第１モード、前記第１の命令及び第２の命令の双方を実行する第２モード又は前記第１の命令乃至第３の命令の何れも実行する第３モードを指定するモードレジスタを有する。
【００４１】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４２】
《実施の形態１》
先ず、第１のコード長例えば１６ビットの第１の命令コード（固定長命令コード）から成る第１の命令（固定長命令）と、後続される前記第１の命令コードをプレフィックスコード（例えば１６ビット）で修飾した第２のコード長（３２ビット）の第２の命令（可変長命令、プレフィックス付き可変長命令）とを、実行可能な命令セットとして有するデータプロセッサについて説明する。ここでは特に、上記第１の命令と第２の命令との双方に対応可能な可変長命令デコードユニットについて説明する。概略的には、既存の固定長命令デコード部に可変長命令デコード部を追加することで、必要時に可変長命令デコード部を動作させ、プレフィックス付きの命令を実行可能に命令デコードユニットを構成する。これにより、既存の固定長命令実行に対する影響は無い。固定長命令実行時はデコード論理の一部である可変長命令デコード部のみ動作を停止させることが可能となり、データプロセッサの低消費電力化に寄与する。さらには可変長命令が不要な場合は、命令デコードユニットの論理合成に際して可変長命令デコード部を削除することも容易になる。以下、詳細に説明する。
【００４３】
図１はプレフィックスコードを利用して可変長命令を実行可能なデータプロセッサにおける命令フェッチユニットＦＴＣ及び命令デコードユニットＤＥＣが例示される。
【００４４】
命令フェッチユニットＦＴＣは、特に制限されないが、夫々１６ビットの４個の命令レジスタＩＲＥＧ０〜ＩＲＥＧ３を有する。便宜上、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３にフェッチされたコードをＩ０〜Ｉ３として表す。命令レジスタＩＲＥＧ０〜ＩＲＥＧ３には図示を省略する命令フェッチ制御ロジックの動作に従って命令フェッチサイクル単位で夫々命令がフェッチされる。特に制限されないが、ここでは理解を容易化するために、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３に対する命令フェッチは固定長命令と可変長命令が混在されてもよいが、可変長命令は、当該６４ビットの中で連続的に完結しなければならないものとする。要するに、３２ビットの一つの可変長命令はプレフィックスコードに修飾されるべき１６ビットの命令コードの直前に配置され、１回でフェッチされる命令レジスタＩＲＥＧ０〜ＩＲＥＧ３中に存在されなければならない、したがってレジスタＩＲＥＧ３にはプレフィックスコードはフェッチされない。命令フェッチユニットＦＴＣは、コードＩ０〜Ｉ３と共に、そのコードの属性を示す属性信号Ａ０〜Ａ３及び選択信号Ｓ０〜Ｓ３を命令デコードユニットＤＥＣに出力する。属性信号Ａ０〜Ａ３及び選択信号Ｓ０〜Ｓ３については命令デコードユニットＤＥＣと共に説明する。
【００４５】
命令デコードユニットＤＥＣは、コードＩ０〜Ｉ３毎にプリデコーダＤＰＤ０〜ＤＰＤ３を有する。プリデコーダＤＰＤ０〜ＤＰＤ３は夫々、プリデコードロジックＰＲＤＥＣと属性信号Ａ０〜Ａ３の分配回路ＤＳＢを有する。特に制限されないが、プリデコーダＤＰＤ０〜ＤＰＤ３は、命令フェッチユニット（ＦＴＣ、）内のプリデコーダ（ＦＰＤ０〜ＦＰＤ３）からの属性信号（Ａ０〜Ａ３）を基に、入力された命令が、前記第１のコード長の固定長命令か、前記第２のコード長の可変長命令の一部である固定長命令か、又は前記第２のコード長の可変長命令の一部であるプレフィックスかの判定を行い、固定長１６ビット命令の実行時にタイミング制約が厳しくなる１６ビットの命令コード、及びプレフィックス付き命令実行時にタイミング制約が厳しくなるプレフィックスコードに対して予め一部のデコードを行う。プレフィックスコードのプリデコードでは、プレフィック付き命令の特定の種類（例えば、固定レジスタを他のレジスタ又は即値に置換する場合）のプレフィックスコードをデコードし、プレフィックス付き命令実行に必要となる制御信号等が予めプリデコーダで生成される。
【００４６】
プリデコーダＤＰＤ０〜ＤＰＤ３の出力及びそれに対応する前記属性情報Ａ０〜Ａ３は次に説明するデコーダによって解読されて実行されることになる。命令デコードユニットＤＥＣは、固定長命令コードをデコードする固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２と、プレフィックスコードをデコードするプレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２とを別々に備える。ここで説明するデータプロセッサは２本のパイプラインＰｉｐｅ１，Ｐｉｐｅ２で命令を実行する２ウェイ形態のスーパースカラプロセッサとして構成され、固定長命令デコーダＢＤＹＤＥＣ１及びプレフィックスデコーダＰＲＦＤＥＣ１はパイプラインＰｉｐｅ１に対応され、固定長命令デコーダＢＤＹＤＥＣ２及びプレフィックスデコーダＰＲＦＤＥＣ２はパイプラインＰｉｐｅ２に対応される。固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２と、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２の前段に配置されたＤＢ１，ＤＢ３とＤＢ０，ＤＢ２はプリデコーダＤＰＤ０〜ＤＰＤ３の出力及び対応する前記属性情報Ａ０〜Ａ３を受取るバッファとされ、デコーダの入力バッファ、或いはセレクタの出力バッファと理解して差し支えない。尚、デコーダＰＲＦＤＥＣ１，ＢＤＹＤＥＣ１，ＰＲＦＤＥＣ２，ＢＤＹＤＥＣ２に入力されるデコード対象は便宜上Ｉｈ〜Ｉｋとして図示され、前記属性情報は便宜上Ａｈ〜Ａｋとして図示される。
【００４７】
プリデコーダＤＰＤ０〜ＤＰＤ３とデコーダＰＲＦＤＥＣ１，ＢＤＹＤＥＣ１，ＰＲＦＤＥＣ２，ＢＤＹＤＥＣ２との間にはセレクタＳＥＬ０〜ＳＥＬ３、ＳＥＬＡ〜ＳＥＬＤが配置される。セレクタＳＥＬ０〜ＳＥＬ３、ＳＥＬＡ〜ＳＥＬＤはコードＩｈ，Ｉi，Ｉｊ，ＩｋとコードＩ０，Ｉ１，Ｉ２，Ｉ３との対応を決定し、属性信号Ａｈ，Ａｉ，Ａｊ，Ａｋと属性信号Ａ０，Ａ１，Ａ２，Ａ３，との対応を決定する。セレクタＳＥＬ０，ＳＥＬＡによる選択状態は選択信号Ｓ０によって決定され、セレクタＳＥＬ１，ＳＥＬＢによる選択状態は選択信号Ｓ１によって決定され、セレクタＳＥＬ２，ＳＥＬＣによる選択状態は選択信号Ｓ２によって決定され、セレクタＳＥＬ３，ＳＥＬＤによる選択状態は選択信号Ｓ３によって決定される。
【００４８】
図２には命令フェッチユニットＦＴＣにおける属性信号Ａ０〜Ａ３と選択信号Ｓ０〜Ｓ３を生成する構成が概略的に示される。属性信号Ａ０〜Ａ３は、コードＩ０〜Ｉ３を１６ビット単位で夫々プリデコードするプリデコーダＦＰＤ０〜ＦＰＤ３によって生成される。プリデコーダＦＰＤ０〜ＦＰＤ３は、入力された１６ビットのコードＩ０〜Ｉ３が、１６ビット固定長命令コードであるか、１６ビットのプレフィックスコードであるか、もしくは、３２ビットのネイティブ命令（非プレフィックスコードの可変長命令コード）であるかを判定し、その判定結果に応じたコードの属性信号Ａ０〜Ａ３を出力する。特に制限されないが、入力された命令コードが固定長命令コードである場合は、固定長命令コードを示すビットパターン（例えば３’b00１）を出力する。同様に、命令コードがプレフィックスコードである場合は、プレフィックスコードを示すビットパターン（例えば３’b１00）、非プレフィックスコードの可変長命令コードである場合は、非プレフィックス３２ビット命令コードを示すビットパターン（例えば３’b0１0）を出力する。
【００４９】
選択信号Ｓ０〜Ｓ３は、特に制限されないが、属性信号Ａ０〜Ａ３とその他の制御信号ＣＨＧに基づいて選択制御回路ＳＴＭＧが生成する。
【００５０】
図３には選択制御回路ＳＴＭＧによる選択信号Ｓ０〜Ｓ３の生成形態が例示される。２ウェイスーパースカラにおける各パイプラインでの命令実行サイクルを１サイクルとし、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３にフェッチされた命令は２サイクル単位で実行されていくものとすると、パイプラインＰｉｐｅ１のデコーダＢＤＹＤＥＣ１，ＰＲＦＤＥＣ１とパイプラインＰｉｐｅ２のデコーダＢＤＹＤＥＣ２，ＰＲＦＤＥＣ２とは１サイクル単位で１個ずつコードを入力してデコードを行う。ここでは、１６ビット固定長命令又はプレフィックスを用いた３２ビット可変長命令だけを実行することを想定するから、前述の命令レジスタＩＲＥＧ０〜ＩＲＥＧ３の命令フェッチの条件に従えば、フェッチの態様はＡ〜Ｅの５態様とされ、そのフェッチの態様に従ってサイクルＣＹＣ１とサイクルＣＹＣ２で順次命令コードと属性情報がセレクタで選択された対応するデコーダに供給される。ＣＹＣ１，ＣＹＣ２は夫々命令実行サイクルの１サイクルを意味する。図３の標記においてＩ１６（ｘ）のＩ１６は固定長命令コードを意味し、（ｘ）はそのコードが命令レジスタＩＲＥＧｘに格納されたものであることを意味する。Ｉｐｒｆ（ｘ）のＩｐｒｆはそれがプレフィックスコードであることを意味し、（ｘ）は上記同様である。態様Ｂ，Ｃ，Ｄ，Ｅに例示されるように、プレフィックスコードを用いた３２ビットの可変長命令に対しては、そのプレフィックスコードを先にプレフィックスデコーダＰＲＦＤＥＣ１又はＰＲＦＤＥＣ２に供給した後に、当該プレフィックスコードで修飾される命令コードを対応するパイプラインの命令デコードＢＤＹＤＥＣ１又はＢＤＹＤＥＣ２に供給する。これによれば、プレフィックス付きの命令をデコードするために、プレフィックス無しの命令のデコーダはそのままにして、プレフィックスコードのデコーダを追加したから、既存の固定長命令の実行に対する影響を無くすことができる。また、プレフィックスコードはこれが修飾する固定長の命令コードよりも先にデコーダに供給されることにより、プレフィックスコードのデコード結果によって固定長命令のデコード動作を修飾することができる。
【００５１】
制御信号ＣＨＧは例えばパイプラインＰｉｐｅ１に供給する命令とパイプラインＰｉｐｅ２に供給する命令との切り替えなどに用いられる。例えば態様ＡにおいてＩ１６（０），Ｉ１６（１）をパイプラインＰｉｐｅ２に、Ｉ１６（２），Ｉ１６（３）をパイプラインＰｉｐｅ１にするように、制御信号ＣＨＧで指示することができる。選択制御回路ＳＴＭＧは便宜上フェッチユニットＦＴＣに配置されているが、デコードユニットＤＥＣ等に配置してよいことは言うまでもいない。
【００５２】
命令デコーダＰＲＦＤＥＣ１，ＢＤＹＤＥＣ１，ＰＲＦＤＥＣ２，ＢＤＹＤＥＣ２は属性情報Ａｈ〜Ａｋを受取ることによって、入力されたコードの種別を認識してデコード動作を行うことが可能になる。例えば、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２はＡｈ，Ａｊによってプレフィックスコードであることが通知されない場合にその動作を停止する。これにより、プレフィックス付き命令の使用頻度が低い場合にプレフィックスを利用する可変長命令の不使用時にクロック入力を停止させることで、消費電力を抑えることが可能となる。更に、制御精度を高め、動的に可変長命令デコード部のオン／オフを制御することで消費電力の最適化を図ることも可能となる。これと同様の低消費電力制御を命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２も同様に属性情報Ａｉ，Ａｋを利用して行うことができる。
【００５３】
図４にはデータプロセッサ内の動作モード制御部として、固定長命令動作モードと可変長命令動作モードの切り替えを制御するモード制御論理の構成が例示される。この論理は、３個のモードレジスタＭＲ１〜ＭＲ３を持ち、モードレジスタＭＲ１〜ＭＲ３の出力を入力して、設定された動作モードを検出する検出器ＤＴを備える。モードレジスタＭＲ１〜ＭＲ３は、データプロセッサの動作モードの種類を示しており、図４の例では、次の３つのモードを制御する。ＭＲ１は固定長命令のみ実行可能な動作モードを指定するモードレジスタ、ＭＲ２は固定長命令及びプレフィックス付き命令を実行可能な動作モードを指定するモードレジスタ、ＭＲ３は固定長命令、プレフィックス付き命令、及び非プレフィックス可変長命令を実行可能な動作モードを指定するモードレジスタである。各モードレジスタＭＲ１〜ＭＲ３は、どれか１つのみが設定される場合もあれば、複数のモードレジスタが設定される場合もある。複数のモードレジスタが設定されている時は、検出器ＤＴがモード選択を決める必要がある。例えば、モードレジスタ番号が小さい方を選択する場合もあれば、逆にモードレジスタ番号が大きい方を選択する場合もある。
【００５４】
各モードレジスタＭＲ１〜ＭＲ３がセットされている場合について説明する。モードレジスタはどれか１つのみが設定される場合を想定する。モードレジスタＭＲ１が設定されている時は、固定長命令のみ実行可能な動作モードである。この時、検出器ＤＴからは、プレフィックス無効信号ＰＲＦＤＥＣｉｎｖとネイティブ命令無効信号３２ｂＤＥＣｉｎｖが共にイネーブルにされて出力される。モードレジスタＭＲ２が設定されている時は、固定長命令とプレフィックス付き命令が実行可能なモードにされる。この時、検出器ＤＴからは、３２ｂＤＥＣｉｎｖがイネーブルとして出力される。モードレジスタＭＲ３が設定されている時は、固定長命令とプレフィックス付き命令、及び非プレフィックス可変長命令が実行可能なモードである。この時、検出器ＤＴはプレフィックス無効信号ＰＲＦＤＥＣｉｎｖとネイティブ命令無効信号３２ｂＤＥＣｉｎｖの双方を無効にする。ＰＲＦＤＥＣｉｎｖは、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２の動作を止める、もしくは、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２の動作を無効化する信号であり、この信号ＰＲＦＤＥＣｉｎｖが有効にされると、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２のクロック入力が停止され、或いは動作電源の入力を遮断する。特に図１の構成では関係ないが（後述する図９，１２，１３，１４の構成において関係する）、３２ｂＤＥＣｉｎｖは、非プレフィックスコードの可変長命令コードデコード部の動作を停止し、或いは無効化する信号であり、３２ｂＤＥＣｉｎｖが有効にされると、非プレフィックスコードの可変長命令コードデコード部は、入力クロックを停止し動作を止め、もしくは、非プレフィックスコードの可変長命令コードデコード部への電源供給を遮断する。これらの動作により、前記属性信号に基づく低消費電力に加えて、さらにデータプロセッサの消費電力を抑えることができる。
【００５５】
図５には上記命令デコードユニットを採用したデータプロセッサの全体的な構成が例示される。データプロセッサMＰＵは複数個のプロセッサコアＣＰＵを中心に、これに内部バスで接続されたメモリＭＥＭ、外部インタフェース回路ＥＩＦ、及び内蔵周辺モジュールＰＥＲ等を一個又は複数個備える。データプロセッサMＰＵは、特に制限されないが、単結晶シリコンのような１個の半導体基板に相補型ＭＯＳ集積回路製造技術等によって形成される。夫々のプロセッサコアＣＰＵは、上記命令デコードユニットを採用し、命令をフェッチして実行することによって所要のプログラム処理機能を実現する。
【００５６】
《実施の形態２》
図６は論理合成に際して図１のデータプロセッサに対してその機能を縮減した場合の命令フェッチユニット及び命令デコードユニットの例が示される。図１と異なる点は、プレフィックスコードをデコードするための構成が省かれ、命令フェッチユニットの命令レジスタ数も２個に縮減している点である。例えば、データプロセッサの論理合成に際して、ＲＴＬ（Register Transfer Logic）記述におけるオプション記述、例えば、固定長命令以外の命令セットが不要な時に、固定長命令デコード部以外の論理が合成されず、命令レジスタ数も半減させるようなオプション記述をすることによって、固定長命令セットしか使わないデータプロセッサにおいて、固定長命令デコード部のみが合成されたフェッチユニット及び命令デコードユニットが構成される。図６にはこの例が示される。
【００５７】
図６の構成は、固定長命令のみが存在するデータプロセッサに含まれ、不要なデコード論理が削除され、デコードユニットにおいてデコーダは２つの固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２、プリデコーダＤＰＤ１，ＤＰＤ３、及びセレクタＳＥＬ１，ＳＥＬＢ，ＳＥＬ３，ＳＥＬＤで構成される。命令フェッチユニットは命令レジスタＩＲＥＧ１，ＩＲＥＧ３を備えると共に、属性信号Ａ１，Ａ３と選択信号Ｓ１，Ｓ３の生成機能を備える。この場合、タイミング制御回路ＳＴＭＧは、Ｉ１６（１）をＢＤＹＤＥＣ１に、Ｉ１６（３）をＢＤＹＤＥＣ２に供給する選択形態、又は、Ｉ１６（１）をＢＤＹＤＥＣ２に、Ｉ１６（３）をＢＤＹＤＥＣ１に供給する選択形態を採ればよい。何れを選択するかは制御信号ＣＨＧで制御すればよい。その他の点は実施の形態１と同様であるからその詳細な説明は省略する。
【００５８】
《実施の形態３》
図７は論理合成に際して図1のデータプロセッサに対してその機能を縮減した場合のさらに別の命令フェッチユニット及び命令デコードユニットの例が示される。図１と異なる点は、固定長命令だけしか実行できないようにしたものであり、命令レジスタの規模は図１と同等としたものである。例えば、データプロセッサの論理合成に際して、ＲＴＬ（Register Transfer Logic）記述におけるオプション記述、例えば、固定長命令以外の命令セットが不要な時には、固定長命令デコード部以外の論理が合成されないようなオプション記述をすることなどによって、固定長命令セットしか使わないデータプロセッサにおいて、固定長命令デコード部のみが合成されたフェッチユニット及び命令デコードユニットが構成される。図７にはこの例が示される。
【００５９】
図７の構成は、固定長命令のみが存在するデータプロセッサに含まれ、不要なデコード論理が削除され、デコードユニットにおいてデコーダは２つの固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２とされ、プリデコーダＤＰＤ０〜ＤＰＤ３、及びセレクタＳＥＬ０〜ＳＥＬ３，ＳＥＬＡ〜ＳＥＬＤはそのままにされ、デコーダＢＤＹＤＥＣ１の入力にはＤＢ０，ＤＢ１の出力が共通接続され、デコーダＢＤＹＤＥＣ２の入力にはＤＢ２，ＤＢ３の出力が共通接続されて構成される。この場合、タイミング制御回路ＳＴＭＧは、図３のＡの態様を実現できればよい。上記同様に制御信号ＣＨＧを用いて命令を供給するパイプラインをそれとは逆に制御してよいことは言うまでもない。尚、論理合成時のオプション記述等によって、ＤＢ０〜ＤＢ３は固定長命令コードであることを示すコードが入力されていないとき、命令コード及び属性情報の出力を高インピーダンス状態に制御する機能が付加されている。その他の点は実施の形態１と同様であるからその詳細な説明は省略する。
【００６０】
《実施の形態４》
図８は論理合成に際して図1のデータプロセッサに対してその機能を縮減した場合のさらに別の命令フェッチユニット及び命令デコードユニットの例が示される。図１と異なる点は、固定長命令だけしか実行できないようにし、さらに、ＤＢ０〜ＤＢ３と命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２との間に命令分配回路ＳＤＢを配置し、命令レジスタの規模は図１と同等としたものである。上述と同様に、データプロセッサの論理合成に際して、ＲＴＬ（Register Transfer Logic）記述におけるオプション記述などによって、図８の構成が実現される。
【００６１】
図８の構成は、固定長命令のみが存在するデータプロセッサに含まれ、不要なデコード論理が削除され、デコードユニットにおいてデコーダは２つの固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２とされ、プリデコーダＤＰＤ０〜ＤＰＤ３、及びセレクタＳＥＬ０〜ＳＥＬ３，ＳＥＬＡ〜ＳＥＬＤはそのままにされ、デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２の入力にはそれぞれ、ＤＢ０，ＤＢ１，ＤＢ２，ＤＢ３の出力が共通接続されて構成される。この場合、タイミング制御回路ＳＴＭＧは、図３のＡの態様を実現できればよい。この場合には、ＤＢ０〜ＤＢ３に対する高インピーダンス制御を要しない。命令分配回路ＳＤＢが命令実行のための同期クロックに従って図３の態様Ａに従った命令分配制御を行えばよい。要するに、選択信号Ｓ０〜Ｓ３を命令分配回路ＳＤＢに供給し、その代わりに、プリデコーダＤＰＤ０〜ＤＰＤ３の出力を直接命令分配回路ＳＤＢに供給するように構成すればよく、論理合成時にその指示を前述と同様にＲＴＬのオプション記述で行うようにしてもよい。上記同様に制御信号ＣＨＧを用いて命令を供給するパイプラインをそれとは逆に制御してよいことは言うまでもない。その他の点は実施の形態１と同様であるからその詳細な説明は省略する。
【００６２】
《実施の形態５》
次に、第１のコード長例えば１６ビットの第１の命令コード（固定長命令コード）から成る第１の命令（固定長命令）と、後続される前記第１の命令コードをプレフィックスコード（例えば１６ビット）で修飾した第２のコード長（３２ビット）の第２の命令（プレフィックス付き可変長命令）と、第２のコード長の第２の命令コードから成る第３の命令（非プレフィックス可変長命令、３２ビットネイティブ命令、）とを、実行可能な命令セットとするデータプロセッサについて説明する。ここでは特に、上記第１の命令、第２の命令及び第３の命令の夫々に対応可能な可変長命令デコードユニットについて説明する。概略的には、既存の１６ビット固定長命令デコード部にプレフィックス付き可変長命令デコード部と非プレフィックス可変長命令デコード部を追加することで、必要に応じてプレフィックス付き可変長命令デコード部又は非プレフィックス可変長命令デコード部を動作させ、プレフィックス付きの命令と非プレフィックス可変長命令を実行可能とするように命令デコードユニットを構成する。これにより、既存の固定長命令実行に対する影響は無い。固定長命令実行時はデコード論理の一部であるプレフィックス付き可変長命令デコード部及び非プレフィックス可変長命令デコード部の動作を停止させることが可能となり、データプロセッサの低消費電力化に寄与する。さらにはプレフィックス付き可変長命令又は非プレフィックス可変長命令が不要な場合は、命令デコードユニットの論理合成に際してそれらに対応する可変長命令デコード部を削除することも容易になる。以下、詳細に説明する。
【００６３】
図９は１６ビット固定長命令のほかにプレフィックス付き可変長命令及び非プレフィックス可変長命令を実行可能なデータプロセッサにおける命令フェッチユニットＦＴＣＥ及び命令デコードユニットＤＥＣＥが例示される。
【００６４】
命令フェッチユニットＦＴＣＥは、特に制限されないが、夫々１６ビットの４個の命令レジスタＩＲＥＧ０〜ＩＲＥＧ３を有する。便宜上、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３にフェッチされたコードをＩ０〜Ｉ３として表す。命令レジスタＩＲＥＧ０〜ＩＲＥＧ３には図示を省略する命令フェッチ制御ロジックの動作に従って命令フェッチサイクル単位で夫々命令がフェッチされる。特に制限されないが、ここでは理解を容易化するために、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３に対する命令フェッチは１６ビット固定長命令、プレフィックス付き可変長命令及び非プレフィックス可変長命令が混在されてもよいが、可変長命令は、当該６４ビットの中で連続的に完結しなければならないものとする。要するに、３２ビットの一つの可変長命令はプレフィックスコードに修飾されるべき１６ビットの命令コードの直前に配置され、１回でフェッチされる命令レジスタＩＲＥＧ０〜ＩＲＥＧ３中に存在されなければならない。したがってレジスタＩＲＥＧ３にはプレフィックスコードはフェッチされない。非プレフィックス可変長命令についても同様である。命令フェッチユニットＦＴＣＥは、コードＩ０〜Ｉ３と共に、そのコードの属性を示す属性信号Ａ０〜Ａ３及び選択信号Ｓ０〜Ｓ３を命令デコードユニットＤＥＣに出力する。属性信号Ａ０〜Ａ及び選択信号Ｓ０〜Ｓ３については命令デコードユニットＤＥＣと共に説明する。
【００６５】
命令デコードユニットＤＥＣＥは、コードＩ０〜Ｉ３毎にプリデコーダＤＰＤ０〜ＤＰＤ３を有する。プリデコーダＤＰＤ０〜ＤＰＤ３は夫々、プリデコードロジックＰＲＤＥＣと属性信号Ａ０〜Ａ３の分配回路ＤＳＢを有する。プリデコーダＤＰＤ０〜ＤＰＤ３は、特に制限されないが、命令フェッチユニット（ＦＴＣＥ）内のプリデコーダからの属性信号（Ａ０〜Ａ３）を基に、入力された命令が、前記第１のコード長の固定長命令か、前記第２のコード長の可変長命令の一部である固定長命令か、又は前記第２のコード長の可変長命令の一部であるプレフィックスかの判定を行い、１６ビット固定長命令の実行時にタイミング制約が厳しくなる１６ビット固定長命令、３２ビットの非プレフィックス可変長命令の実行時にタイミング制約が厳しくなる非プレフィックス可変長命令、及びプレフィックス付きか変調命令の実行時にタイミング制約が厳しくなるプレフィックス付き可変長命令に対して予め一部のデコードを行う。プレフィックスコードのプリデコードでは、プレフィック付き命令の特定の種類（例えば、固定レジスタを他のレジスタ又は即値に置換する場合）のプレフィックスコードをデコードし、プレフィックス付き命令実行に必要となる制御信号等が予めプリデコーダで生成される。
【００６６】
プリデコーダＤＰＤ０〜ＤＰＤ３の出力及びそれに対応する前記属性情報Ａ０〜Ａ３はデコーダによって解読されて処理されることになる。命令デコードユニットＤＥＣＥはデコーダとして、１６ビット固定長命令コードをデコードする固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２、１６ビットのプレフィックスコードをデコードするプレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２、及び３２ビットの非プレフィックス可変長命令をデコードする３２ビットデコーダ３２ｂ−Ｄとを別々に備える。図９において３２ビットデコーダ３２ｂ−Ｄは上位側３２ＵＤＤＥＣと下位側３２ＬＤＥＤＣに分けて図示されているが、上位及び下位の双方を併せて単一のデコード論理を構成するものであることは言うまでもない。
【００６７】
ここで説明するデータプロセッサは、１６ビット固定長命令及びプレフィックス付き可変長命令の実行に関しては２本のパイプラインＰｉｐｅ１，Ｐｉｐｅ２で命令を実行する２ウェイ形態のスーパースカラプロセッサとして構成され、固定長命令デコーダＢＤＹＤＥＣ１及びプレフィックスデコーダＰＲＦＤＥＣ１はパイプラインＰｉｐｅ１に対応され、固定長命令デコーダＢＤＹＤＥＣ２及びプレフィックスデコーダＰＲＦＤＥＣ２はパイプラインＰｉｐｅ２に対応される。固定長命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２と、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２の前段に配置されたＤＢ１，ＤＢ３とＤＢ０，ＤＢ２はプリデコーダＤＰＤ０〜ＤＰＤ３の出力及び対応する前記属性情報Ａ０〜Ａ３を受取るバッファとされ、デコーダの入力バッファ、或いはセレクタの出力バッファと理解して差し支えない。３２ビットデコーダ３２ｂ−Ｄの上位側３２ＵＤＥＣにはバッファＤＢ１を介してプリデコーダＤＰＤ０〜ＤＰＤ３の出力及び対応する前記属性情報Ａ０〜Ａ３が供給され、３２ビットデコーダ３２ｂ−Ｄの下位側３２ＬＤＥＣにはバッファＤＢ２を介してプリデコーダＤＰＤ０〜ＤＰＤ３の出力及び対応する前記属性情報Ａ０〜Ａ３が供給される。尚、デコーダＰＲＦＤＥＣ１，ＢＤＹＤＥＣ１，ＰＲＦＤＥＣ２，ＢＤＹＤＥＣ２，３２ｂ−Ｄに入力されるデコード対象は便宜上Ｉｈ〜Ｉｋとして図示され、前記属性情報は便宜上Ａｈ〜Ａｋとして図示される。
【００６８】
プリデコーダＤＰＤ０〜ＤＰＤ３とデコーダＰＲＦＤＥＣ１，ＢＤＹＤＥＣ１，ＰＲＦＤＥＣ２，ＢＤＹＤＥＣ２，３２ｂ−Ｄとの間にはセレクタＳＥＬ０〜ＳＥＬ３、ＳＥＬＡ〜ＳＥＬＤが配置される。セレクタＳＥＬ０〜ＳＥＬ３、ＳＥＬＡ〜ＳＥＬＤはＩｈ，Ｉi，Ｉｊ，ＩｋとＩ０，Ｉ１，Ｉ２，Ｉ３との対応を決定し、Ａｈ，Ａｉ，Ａｊ，ＡｋとＡ０，Ａ１，Ａ２，Ａ３，との対応を決定する。セレクタＳＥＬ０，ＳＥＬＡによる選択状態は選択信号Ｓ０によって決定され、セレクタＳＥＬ１，ＳＥＬＢによる選択状態は選択信号Ｓ１によって決定され、セレクタＳＥＬ２，ＳＥＬＣによる選択状態は選択信号Ｓ２によって決定され、セレクタＳＥＬ３，ＳＥＬＤによる選択状態は選択信号Ｓ３によって決定される。
【００６９】
図１０には図９の命令フェッチユニットＦＴＣＥにおける属性信号Ａ０〜Ａ３と選択信号Ｓ０〜Ｓ３を生成する構成が概略的に示される。属性信号Ａ０〜Ａ３は、コードＩ０〜Ｉ３を１６ビット単位で夫々プリデコードするプリデコーダＦＰＤＥ０〜ＦＰＤＥ３によって生成される。プリデコーダＦＰＤＥ０〜ＦＰＤＥ３は、入力された１６ビットのコードＩ０〜Ｉ３が、１６ビット固定長命令コードであるか、１６ビットのプレフィックスコードであるか、もしくはそれ以外（３２ビットの非プレフィック可変長命令）であるかを判定し、その判定結果し応じたコードの属性信号Ａ０〜Ａ３を出力する。特に制限されないが、入力された命令コードが固定長命令コードである場合は、固定長命令コードを示すビットパターン（例えば３’b00１）を出力する。同様に、命令コードがプレフィックスコードである場合は、プレフィックスコードを示すビットパターン（例えば３’b１00）、非プレフィックスコードの可変長命令コードである場合は、非プレフィックス３２ビット命令コードを示すビットパターン（例えば３’b0１0）を出力する。
【００７０】
選択信号Ｓ０〜Ｓ３は、特に制限されないが、属性信号Ａ０〜Ａ３とその他の制御信号ＣＨＧに基づいて選択制御回路ＳＴＭＧＥが生成する。
【００７１】
図１１には選択制御回路ＳＴＭＧＥによる選択信号Ｓ０〜Ｓ３の生成形態が例示される。２ウェイスーパースカラにおける各パイプラインでの命令実行サイクルを１サイクルとし、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３にフェッチされた命令は２サイクル単位で実行されていくものとすると、パイプラインＰｉｐｅ１のデコーダＢＤＹＤＥＣ１，ＰＲＦＤＥＣ１とパイプラインＰｉｐｅ２のデコーダＢＤＹＤＥＣ２，ＰＲＦＤＥＣ２とは１サイクル単位で１個ずつコードを入力してデコードを行う。３２ビットの非プレフィックス可変長命令については、デコーダＢＤＹＤＥＣ１と３２ＵＤＥＣがコードの入力経路を共用し、デコーダＢＤＹＤＥＣ２と３２ＬＤＥＣがコードの入力経路を共用している関係から、命令レジスタＩＲＥＧ０〜ＩＲＥＧ３に２個の３２ビット非プレフィックス可変長命令がフェッチされている場合は、命令毎にサイクル単位で命令が３２ビットデコーダ３２ｂ−Ｄに供給される。それ以外の場合には、１６ビット毎にサイクル単位で別々に上位３２ＵＤＥＣ、下位３２ＬＤＥＣに供給され、３２ビットデコーダ３２ｂ−Ｄへの命令供給には２サイクルを要する。
【００７２】
よって、前述の命令レジスタＩＲＥＧ０〜ＩＲＥＧ３の命令フェッチの条件に従えば、フェッチの態様はＡ〜Ｋの１１態様とされ、そのフェッチの態様に従ってサイクルＣＹＣ１とサイクルＣＹＣ２で順次命令コードと属性情報がセレクタで選択された対応するデコーダに供給される。図１１の標記においてＩ１６（ｘ）のＩ１６は固定長命令コードを意味し、（ｘ）はそのコードが命令レジスタＩＲＥＧｘに格納されたものであることを意味する。Ｉｐｒｆ（ｘ）のＩｐｒｆはそれがプレフィックスコードであることを意味し、（ｘ）は上記同様である。Ｉ３２Ｕ（ｘ）のＩ３２Ｕは非プレフィックス可変長命令の上位１６ビットを意味し、同じく、Ｉ３２Ｌ（ｘ）のＩ３２Ｌは非プレフィックス可変長命令の上位１６ビットを意味する。
【００７３】
態様Ａ〜Ｅは図３同じである。態様Ｂ，Ｃ，Ｄ，Ｅ，Ｉ，Ｊに例示されるように、プレフィックスコードを用いた３２ビットの可変長命令に対しては、そのプレフィックスコードを先にプレフィックスデコーダＰＲＦＤＥＣ１又はＰＲＦＤＥＣ２に供給した後に、当該プレフィックスコードで修飾される命令コードを対応するパイプラインの命令デコードＢＤＹＤＥＣ１又はＢＤＹＤＥＣ２に供給する。これによれば、プレフィックス付きの命令をデコードするために、プレフィックス無しの命令のデコーダはそのままにして、プレフィックスコードのデコーダを追加したから、既存の固定長命令の実行に対する影響を無くすことができる。また、プレフィックスコードはこれが修飾する固定長の命令コードよりも先にデコーダに供給されることにより、プレフィックスコードのデコード結果によって固定長命令のデコード動作を修飾することができる。
【００７４】
態様Ｆ，Ｇ，Ｈ，Ｉ，Ｊに示されるように、３２ビットの非プレフィックス可変長命令とその他の命令が混在してレジスタＩＲＥＧ０〜ＩＲＥＧ３にフェッチされている場合には、非プレフィックス可変長命令は２サイクルを要してデコーダ３２ｂ−Ｄに供給される。態様Ｋに示されるように、３２ビットの非プレフィックス可変長命令が２命令連続してレジスタＩＲＥＧ０〜ＩＲＥＧ３にフェッチされている場合には、夫々の非プレフィックス可変長命令は１サイクル毎にデコーダ３２ｂ−Ｄに供給される。
【００７５】
制御信号ＣＨＧは例えばパイプラインＰｉｐｅ１に供給する命令とパイプラインＰｉｐｅ２に供給する命令との切り替えなどに用いられる。例えば態様ＡにおいてＩ１６（０），Ｉ１６（１）をパイプラインＰｉｐｅ２に、Ｉ１６（２），Ｉ１６（３）をパイプラインＰｉｐｅ１にするように、制御信号ＣＨＧで指示することができる。選択制御回路ＳＴＭＧＥは便宜上フェッチユニットＦＴＣＥに配置されているが、デコードユニットＤＥＣＥ等に配置してもよいことは言うまでもいない。
【００７６】
命令デコーダＰＲＦＤＥＣ１，ＢＤＹＤＥＣ１，ＰＲＦＤＥＣ２，ＢＤＹＤＥＣ２，３２ｂ−Ｄは属性情報Ａｈ〜Ａｋを受取ることによって、入力されたコードの種別を認識してデコード動作を行うことが可能になる。例えば、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２はＡｈ，Ａｋによってプレフィックスコードであることが通知されない場合にその動作を停止する。これにより、プレフィックス付き命令使用頻度が低い場合にプレフィックスを利用する可変長命令の不使用時にクロック入力を停止させることで、消費電力を抑えることが可能となる。更に、制御精度を高め、動的に可変長命令デコード部のオンオフを制御することで消費電力の最適化を図ることも可能となる。これと同様の低消費電力制御を命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２，３２ｂ−Ｄも同様に属性情報Ａｉ，Ａｊを利用して行うことができる。
【００７７】
図９に基づいて説明している実施の形態５のデータプロセッサは既に図４に基づいて説明した動作モード制御部として、固定長命令動作モードと可変長命令動作モードの切り替えを制御するモード制御論理を備える。前述のように、ＭＲ１は固定長命令のみ実行可能な動作モードを指定するモードレジスタ、ＭＲ２は固定長命令及びプレフィックス付き命令を実行可能な動作モードを指定するモードレジスタ、ＭＲ３は固定長命令、プレフィックス付き命令、及び非プレフィックス可変長命令を実行可能な動作モードを指定するモードレジスタである。モードレジスタＭＲ１が設定されている時は、固定長命令のみ実行可能な動作モードであり、プレフィックス無効信号ＰＲＦＤＥＣｉｎｖとネイティブ命令無効信号３２ｂＤＥＣｉｎｖが共にイネーブルにされ、プレフィックスデコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２と３２ビットデコーダ３２ｂ−Ｄのクロック入力が停止され、或いは動作電源の入力が遮断される。モードレジスタＭＲ２が設定されている時は、固定長命令とプレフィックス付き命令が実行可能なモードであり、３２ｂＤＥＣｉｎｖがイネーブルとして出力され、３２ビットデコーダ３２ｂ−Ｄのクロック入力が停止され、或いは動作電源の入力が遮断される。モードレジスタＭＲ３が設定されている時は、固定長命令とプレフィックス付き命令、及び非プレフィックス可変長命令が実行可能なモードとされ、プレフィックス無効信号ＰＲＦＤＥＣｉｎｖとネイティブ命令無効信号３２ｂＤＥＣｉｎｖの双方が無効にされ、デコーダＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２，３２ｂ−Ｄ、ＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２へのクロック入力又は動作電源の入力は遮断されない。これらの動作により、前記属性信号に基づく低消費電力に加えて、さらにデータプロセッサの消費電力を抑えることができる。
【００７８】
図９のデータプロセッサも代表的に図５で説明したモジュール構成を採ることができる。
【００７９】
《実施の形態６》
図１２は論理合成に際して図９のデータプロセッサに対してその機能を縮減した場合の命令フェッチユニット及び命令デコードユニットの例が示される。図９と異なる点は、ＤＢ０〜ＤＢ３と命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２、ＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２，３２ｂ−Ｄとの間に命令分配回路ＳＤＢＥを配置したものである。上述と同様に、データプロセッサの論理合成に際して、ＲＴＬ（Register Transfer Logic）記述におけるオプション記述などによって、図１２の構成が実現される。この場合、命令分配回路ＳＤＢＥは単なる２次的なバッファであってもよいし、選択信号Ｓ０〜Ｓ３によって選択動作を行うセレクタＳＥＬ０〜ＳＥＬ３の全体と同様の選択動作を再度行ってもよい。その他の点は実施の形態５と同様であるからその詳細な説明は省略する。
【００８０】
《実施の形態７》
図１３は論理合成に際して図９のデータプロセッサに対してその機能を縮減した場合の別の命令フェッチユニット及び命令デコードユニットの例が示される。図９と異なる点は、プレフィックスコードをデコードするための構成が省かれている点である。例えば、データプロセッサの論理合成に際して、ＲＴＬ（Register Transfer Logic）記述におけるオプション記述、例えば、プレフィックス付き可変長命令の命令セットが不要な時に、プレフィックス付き可変長命令のデコード論理が合成されないようなオプション記述をすることによって、１６ビット固定長命令及び非プレフィックス可変長命令の命令セットしか使わないデータプロセッサの命令デコードユニットが構成される。図１３にはこの例が示される。特にこの例では、固定長命令のデコーダＢＤＹＤＥＣ１がバッファＤＢ０に、固定長命令のデコーダＢＤＹＤＥＣ２がバッファＤＢ３に接続されている。この場合、タイミング制御回路ＳＴＭＧＥは、図１５に例示される態様を実現するように選択信号Ｓ０〜Ｓ３を生成すればよい。前述同様に１６ビット固定長命令を供給するパイプラインＰｉｐｅ１，Ｐｉｐｅ２の切換えは制御信号ＣＨＧで指示すればよい。その他の点は実施の形態５と同様であるからその詳細な説明は省略する。
【００８１】
《実施の形態８》
図１４は論理合成に際して図９のデータプロセッサに対してその機能を縮減した場合のさらに別の命令フェッチユニット及び命令デコードユニットの例が示される。図１４の構成は図１３に対して、ＤＢ０〜ＤＢ３と命令デコーダＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２，３２ｂ−Ｄとの間に命令分配回路ＳＤＢＥを配置したものである。上述と同様に、データプロセッサの論理合成に際して、ＲＴＬ（Register Transfer Logic）記述におけるオプション記述などによって、図１４の構成が実現される。この場合、命令分配回路ＳＤＢＥは単なる２次的なバッファであってもよいし、選択信号Ｓ０〜Ｓ３によって選択動作を行うセレクタＳＥＬ０〜ＳＥＬ３の全体と同様の選択動作を再度行ってもよい。選択信号Ｓ０〜Ｓ３による選択論理は図１５で説明した論理と同じである。その他の点は実施の形態５と同様であるからその詳細な説明は省略する。
【００８２】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８３】
例えば、固定長命令の命令コードは１６ビットに限定されず３２ビット等であってもよく、また、プレフィックスコードも１６ビットに限定されず３２ビット等であってもよい。命令フェッチユニットにおける命令レジスタの数は固定長命令の４個分に限定されず、８個等であってもよい。また、パイプライン本数も２本に限定されず４本などであってもよい。命令の属性情報に従って命令レジスタの命令を供給する供給先にはプリデコーダがあってもよい。前記供給先のデコーダはプリデコーダであっても本デコーダであってもよい。命令属性を判別し属性信号を出力するプリデコーダはフェッチユニットに配置する場合に限定されず、命令デコードユニット又はその他の回路ユニットに配置してもよい。ＤＢ０〜ＤＢ３やＳＤＢに代表されるバッファは省略可能である。
【符号の説明】
【００８４】
ＦＴＣ、ＦＴＣＥ  命令フェッチユニット
ＤＥＣ、ＤＥＣＥ  命令デコードユニット
ＩＲＥＧ０〜ＩＲＥＧ３  命令レジスタ
Ｉ０〜Ｉ３  フェッチされたコード
Ａ０〜Ａ３  属性信号
Ｓ０〜Ｓ３  選択信号
ＤＰＤ０〜ＤＰＤ３  プリデコーダ
ＢＤＹＤＥＣ１，ＢＤＹＤＥＣ２  固定長命令デコーダ
ＰＲＦＤＥＣ１，ＰＲＦＤＥＣ２  プレフィックスデコーダ
Ｐｉｐｅ１，Ｐｉｐｅ２  パイプライン
ＳＥＬ０〜ＳＥＬ３、ＳＥＬＡ〜ＳＥＬＤ  セレクタ
Ｉｈ，Ｉi，Ｉｊ，Ｉｋ  選択されたコード
Ａｈ，Ａｉ，Ａｊ，Ａｋ  選択された属性信号
ＦＰＤ０〜ＦＰＤ３、ＦＰＤＥ０〜ＦＰＤＥ３  属性信号を得るプリデコーダ
ＳＴＭＧ、ＳＴＭＧＥ  選択制御回路
ＭＲ１〜ＭＲ３  モードレジスタ
ＰＲＦＤＥＣｉｎｖ  プレフィックス無効信号
３２ｂＤＥＣｉｎｖ  ネイティブ命令無効信号
３２ｂ−Ｄ  ３２ビットフルデコーダ
３２ＵＤＥＣ  ３２ビットフルデコーダの上位論理
３２ＬＤＥＣ  ３２ビットフルデコーダの下位論理
【図１】
0005496602.tif 000002
【図２】
0005496602.tif 000003
【図３】
0005496602.tif 000004
【図４】
0005496602.tif 000005
【図５】
0005496602.tif 000006
【図６】
0005496602.tif 000007
【図７】
0005496602.tif 000008
【図８】
0005496602.tif 000009
【図９】
0005496602.tif 000010
【図１０】
0005496602.tif 000011
【図１１】
0005496602.tif 000012
【図１２】
0005496602.tif 000013
【図１３】
0005496602.tif 000014
【図１４】
0005496602.tif 000015
【図１５】
0005496602.tif 000016