(57)【要約】【課題】プレフィックス付の命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にする。【解決手段】命令コードタイプを判定するデコーダ（ＰＤ０〜ＰＤ３）による判定結果に基づいてプレフィックス以外の各命令コードタイプ毎の命令を探索し、探索された各命令に、直前の命令を付加して、命令実行手段に出力する回路（ＥＸ−ＩＳＤ，ＬＳ−ＩＳＤ、ＢＲ-ＩＳＤ）を採用する。この回路は、探索対象とする複数命令単位中で目的命令コードタイプの命令を検出したとき当該検出命令と共にその直前の目的命令コードタイプ以外の命令をプレフィックスコード候補として出力し、探索対象の複数命令単位の後端で目的命令コードタイプの命令を検出できなかったときは当該後端の命令をプレフィックスコード候補として出力し、命令コード探索の先頭で目的命令コードタイプの命令を検出したときは当該先頭の命令を出力する。【選択図】図４
2010066893.tif 000002
【特許請求の範囲】
【請求項１】
後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャを有すると共にスーパースカラによる複数命令の並列的発行を行なうデータプロセッサであって、
並列的にフェッチされた複数命令コードの命令コードタイプを判定するデコーダと、
前記デコーダによる判定結果を伴って前記並列的にフェッチされた複数命令コードの単位で順次蓄積する命令キューと、
前記命令キューから出力される複数命令コード単位でプレフィックスコードを除く命令コードタイプ毎の命令コードを探索し、探索結果に基づいて対応する命令コードタイプの命令デコード及び実行部に命令を出力するディスパッチ回路とを有し、
前記ディスパッチ回路は、探索対象とする複数命令コード単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードと共にその直前の命令コードをプレフィックスコード候補として出力し、探索対象とする複数命令コード単位の後端で目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力し、命令コード探索において先頭で目的とする命令コードタイプの命令コードを検出した場合には当該先頭の命令コードを出力する、データプロセッサ。
【請求項２】
前記命令デコード及び実行部は、プレフィックスコード候補として供給された命令コードがプレフィックスコードでないときはこれを無視する、請求項１記載のデータプロセッサ。
【請求項３】
前記命令デコード及び実行部は、プレフィックスコード候補として出力された前記後端の命令コードを、その直後の命令コード探索において先頭で検出されて供給された目的命令コードタイプの命令コードのプレフィックスコード候補として用いる、請求項２記載のデータプロセッサ。
【請求項４】
前記直前の命令コード及び後端の命令コードは、夫々複数の命令コードである、請求項１記載のデータプロセッサ。
【請求項５】
後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、
前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令を含み、
前記プレフィックスコードは、前記固定レジスタ使用命令に前置されて、前記固定レジスタを、命令で指定可能な他のレジスタに置換するように、前記固定レジスタ使用命令を修飾する、データプロセッサ。
【請求項６】
後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、
前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令を含み、
前記プレフィックスコードは、前記固定レジスタ使用命令に前置されて、前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾する、データプロセッサ。
【請求項７】
後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、
前記命令セットは、オペランドに関しデータサイズを有する命令を含み、
前記プレフィックスコードは、前記オペランドサイズを有する命令に前置されて、前記命令のオペランドサイズを前記プレフィックスコードのオペランドサイズ指定フィールドで指定されるオペランドサイズの命令に変換するように、前記オペランドサイズを有する命令を修飾する、データプロセッサ。
【請求項８】
前記プレフィックスコードは前記オペランドサイズを有する命令に対してそのリテラルフィールドを拡張する修飾を併せて行う、請求項７記載のデータプロセッサ。
【請求項９】
前記プレフィックスコードは前記オペランドサイズを有する命令に対して前記指定フィールドで指定されたサイズのオペランドの上位側を符号付き又は符号無しで拡張する修飾を併せて行う、請求項７記載のデータプロセッサ。
【請求項１０】
後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記プレフィックスコードの定義が前記プレフィックスコードによって修飾される後続命令の種類によって変化する、データプロセッサ。
【請求項１１】
前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令であるとき前記プレフィックスコードは前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾し、
前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令でないとき前記プレフィックスコードはオペランドサイズを変更又はリテラルを拡張するように、前記後続命令を修飾する、請求項１０記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサやマイクロコンピュータ等のデータプロセッサに係り、データ転送頻度を低減することによる性能向上と消費電力低減を可能にする技術に関する。
【背景技術】
【０００２】
今日のプロセッサは性能最優先のPC／サーバ用プロセッサと高効率と高性能の両立が求められる組込プロセッサに大別される。そして、高効率が求められる組込プロセッサでは、高コード効率の実現可能な１６ビット固定長命令セットのRISC（Reduced Instruction Set Computer）型の組込プロセッサが普及している。高コード効率は、オフチップメモリの大容量化が進んだ現在においても、オンチップのキャッシュ、ＲＡＭやＲＯＭの有効活用には欠かせないものである。しかしながら、１６ビット固定長命令セットでは、プログラムサイズを小さく出来る反面、命令数が増加する。特に、オペランド指定の制約から、レジスタ間転送、即値転送命令の命令数が増加する。また、増加した転送命令のレイテンシを隠蔽するために、転送先レジスタの代わりに転送元レジスタの値をフォワーディングするソースフォワーディングも一般的に使われている。命令数の増加は、性能低下や電力増加の原因となる。また、性能低下を補うソースフォワーディングはクリティカルパス及び論理規模の増加を通じて、動作周波数の低下及び電力増大の一因となっている。
【０００３】
こうした問題は１６ビット固定長命令セットの命令コード空間が２１６B=６４ｋBと、３２ビット固定長命令セットの命令コード空間２３２B=４GBに比べて非常に小さいことに起因する。このため、例えば、非特許文献１のARM Thumb-２命令セットでは、１６ビット固定長命令と３２ビット固定長命令を混在させて命令コード空間を広げている。一方、特許文献１のプロセッサでは、１６ビット固定長命令セットに１６ビットプレフィックスを追加することにより命令コード空間を広げている。ここでいうプレフィックスとは、後続命令コードの意味を変えたり、後続命令コードに情報を追加したりする機能を持つ命令コードであり、プレフィックス単独では命令にはならない。尚、プレフィックスは１９８５年に発表されたインテル社のi３８６プロセッサが、それまで１６ビットアーキテクチャであったプロセッサを、上位互換性を維持しつつ３２ビットアーキテクチャにする際に使用しており、２０年以上前から公知である。そして、i３８６プロセッサでは、後続命令コードのオペランドサイズの意味を変えるためにプレフィックスを使用している。また、i３８６プロセッサやその後継機種は全て可変長命令セットのCISC（Complicated Instruction Set Computer）型のプロセッサであるため、元々命令デコード回路が複雑であり、プレフィックス追加に伴う実現回路への影響は相対的に小さいといえる。
【０００４】
特許文献１におけるプレフィックスは、２オペランド命令にオペランドを追加して３オペランドにすること、レジスタ間接アドレッシングの命令にインデックスを追加してレジスタ相対間接アドレッシングの命令に変えること、及び、２オペランドのモディファイ型命令のソースオペランドを変更して３オペランド型の命令に変えることに使われている。また、特許文献１では、命令コードを１６ビットずつデコードするスカラプロセッサを例に、実現方式を開示している。プレフィックスも１命令コードであるため、プレフィックス付き命令のデコードには２サイクルかかり、実行も２サイクルかかる。
【０００５】
特許文献２では、特許文献１のプロセッサを改良したプロセッサが開示されている。プレフィックスの機能としては、２オペランドのモディファイ型命令のデスティネーションオペランドを変更して３オペランド型に変えること、及び、リテラルオペランドのビット幅を拡張することを開示している。また、特許文献１において２サイクルかかっていたプレフィックス付き命令のデコードのうち、プレフィックスのデコードを先行命令と同時に行うことにより、プレフィックスのデコードサイクルを隠蔽し、プレフィックス付き命令の１サイクル実行を実現している。
【０００６】
１６ビット固定長命令セットで、レジスタ指定フィールドが確保できないという問題に対処するための方式として、暗黙の固定レジスタ指定がある。非特許文献２記載のSH-４Aでは、１６本の汎用レジスタのうちの１本であるR０を暗黙の固定レジスタとして使用する命令を定義している。そして、コンパイラのレジスタアロケーション時にこうした暗黙の固定レジスタ使用命令に優先的にR０を割り当てて、こうした命令を活用することにより、固定レジスタであることのデメリットを緩和している。しかし、固定オペランド指定によるレジスタ指定の自由度の低下を十分隠蔽できるとは限らない。特に、種々の命令セットアーキテクチャを同じコンパイル方式で扱おうとする複数プロセッサ向けコンパイラの提供者は、特定のアーキテクチャの長所は使用しない傾向が強い。このため、固定レジスタ使用命令の活用が不十分な場合がある。即ち、固定レジスタ使用命令は、レジスタ指定フィールドが確保できないという問題に対する十分な対応策とはいえず、更なる改善が必要であるといえる。
【０００７】
【非特許文献１】Markus Levy, "ARM Grows More Thumbs," Microprocessor Report, ６/１７/０３-０２, June ２００３.
【非特許文献２】SH-４Aソフトウェアマニュアル、Internet URL http://documentation.renesas.com/jpn/products/mpumcu/rjj09b0090_sh4a.pdf 、p.3-9〜p.3-19、表3.4,3.5, 3.6, 3.9, 3.10, 3.13（SH-４A Software Manual、Internet URL http://documentation.renesas.com/eng/products/mpumcu/rej09b0003_sh4a.pdf、pp.33-42、Table 3.4,3.5, 3.6, 3.9, 3.10, 3.13）
【特許文献１】特開２０００−２８４９６２号公報
【特許文献２】特開２００４−０３００１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述のように、１６ビット固定長命令コードの命令コード空間小ささを補うための命令コード空間拡張方式として、１６ビット固定長命令と３２ビット固定長命令を混在させて命令コード空間を広げる方式と、１６ビット固定長命令セットに１６ビットプレフィックスを追加することにより命令コード空間を広げる方式とが開示されている。そして、後者では具体的に、２オペランド命令にオペランドを追加して３オペランドにすること、レジスタ間接アドレッシングの命令にインデックスを追加してレジスタ相対間接アドレッシングの命令に変えること、２オペランドのモディファイ型命令のソースオペランドまたはデスティネーションオペランドを変更して３オペランド型の命令に変えること、及び、リテラルオペランドのビット幅を拡張することが開示されている。また、命令コード空間を拡張せずにオペランド数を確保する方式として、暗黙の固定オペランド指定方式がある。
【０００９】
本発明が解決しようとする第１の課題は、命令コード空間を拡張せずにオペランド数を確保することが可能であるという固定レジスタ使用命令の長所を生かしつつ、命令コード空間を拡張して、固定レジスタ使用命令では対応できない場合でも、転送命令出現頻度を削減し、性能向上や電力削減を実現することである。
【００１０】
前述の第１の課題を解決して命令コード空間を拡張すると、その実現方法が問題となる。背景技術の特許文献１及び特許文献２の例では、命令コード空間を広げるためにプレフィックスを定義し、その実現手段についても開示している。しかしながら、その実現方式は命令を１命令ずつ発行するスカラプロセッサを前提としたものであり、複数命令の同時発行が可能なスーパースカラ方式に対応していない。
【００１１】
本発明が解決しようとする第２の課題は、プレフィックス付の命令を含む命令セットにおいて効率的なスーパースカラ命令発行を可能にすることである。特に、プレフィクス付の命令もプレフィックスなしの命令と同等の発行効率とすることである。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１４】
第１の課題を解決するために、本発明では、固定レジスタ使用命令を定義した上でプレフィックスコードによって下記機能変換または機能拡張をする。プレフィックスコードは、前記固定レジスタ使用命令の固定レジスタを他のレジスタ又は即値に置換する機能を有する。別の第２のプレフィックスコードにおいては、固定レジスタ使用命令の定義においてサイズの直交性を維持せずに、使用頻度の低いサイズの命令は固定レジスタ使用命令、使用頻度の高いサイズの命令はレジスタフィールドでレジスタを指定する命令として命令コードサイズを圧縮し、プレフィックスによって使用頻度の高いサイズの命令のサイズを使用頻度の低いサイズに置換して、命令定義の直交性を確保する機能を備える。更に、サイズ置換に要するオペランドフィールドは少ないため、他の拡張、例えば、データの符号拡張／ゼロ拡張、即値やディスプレースメントのビット幅の拡張を、前記サイズ変更機能に加えて、一つのプレフィックスコードとすることにより、プレフィックスコードによる命令定義拡張機能を強化するものである。さらに別の観点によるプレフィックスコードは、プレフィックスコードを後続する命令の付加情報と位置づけることにより、同一のプレフィックスコードの意味を後続する命令の種別によって変えるものである。
【００１５】
上記手段によれば、例えば、レジスタ相対間接ロード命令として、使用頻度の高い３２ビットサイズの命令は、ベースアドレスレジスタ及びロードデータ格納レジスタの双方をレジスタフィールドでレジスタを指定する命令として定義し、使用頻度の低い８、１６及び６４ビットサイズの命令は、ロードデータ格納レジスタを固定レジスタとする命令として定義する。そして、３２ビットサイズの命令に８ビットオペランドフィールドのプレフィックスを付けると、プレフィックスはサイズ指定に２ビット、残りの６ビットをレジスタ相対間接アドレッシングのディスプレースメントを伸ばすために使用する。この結果、プレフィックスを使用しない場合に必要となることの多かった固定レジスタから任意のレジスタへの転送命令が不要となり、転送命令の出現頻度が低減される。また、ディスプレースメントを伸ばすことによりプレフィックスを使用しない場合にベースアドレスから届かなかったアドレスにも届くようになる。そして、届かなかった場合に対応するために、ディスプレースメント設定のための即値転送命令とインデックス相対ロード命令の２命令を使用する場合が削減され、転送命令の出現頻度が低減される。
【００１６】
第２の課題を解決するために、命令プリフェッチ後に命令コードタイプを判定するデコーダと、前記判定結果に基づく、プレフィックスを除く各命令コードタイプ毎の命令コードを探索し、探索によって検出した各命令コードに、直前の命令コードを付加して、各命令コードタイプの命令実行手段にディスパッチするディスパッチ回路を採用する。ディスパッチ回路は、探索対象とする複数命令コード単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードと共にその直前の命令コードをプレフィックスコード候補として出力し、探索対象とする複数命令コード単位の後端で目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力し、命令コード探索において先頭で目的とする命令コードタイプの命令コードを検出した場合には当該先頭の命令コードを出力する。
【発明の効果】
【００１７】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１８】
前記第１の課題を解決するための手段により、命令コード空間を拡張せずにオペランド数を確保することが可能なであるという固定レジスタ使用命令の長所を生かしつつ、更に命令コード空間を拡張して、固定レジスタ使用命令では対応できない場合でも、転送命令出現頻度を削減することが可能となる。
【００１９】
前記第２の課題を解決するための手段により、各命令タイプ毎に、プレフィクス付の命令もプレフィックスなしの命令も毎サイクル発行することが可能となり、プレフィックス付の命令を含む命令セットにおける効率的なスーパースカラ命令発行が可能となる。
【発明を実施するための最良の形態】
【００２０】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２１】
〔１〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャを有すると共にスーパースカラによる複数命令の並列的発行を行なう。このデータプロセッサは、並列的にフェッチされた複数命令コードの命令コードタイプを判定するデコーダ（ＰＤ０〜ＰＤ３）と、前記デコーダによる判定結果を伴って前記並列的にフェッチされた複数命令コードの単位で順次蓄積する命令キュー（ＧＩＱ０〜ＧＩＱ１５）と、前記命令キューから出力される複数命令コード単位でプレフィックスコードを除く命令コードタイプ毎の命令コードを探索し、探索結果に基づいて対応する命令コードタイプの命令デコード及び実行部（ＥＸＵ）に命令コードを出力するディスパッチ回路（ＥＸ−ＩＳＤ，ＬＳ−ＩＳＤ，ＢＲ−ＩＳＤ）とを有する。前記ディスパッチ回路は、探索対象とする複数命令コード単位の中で目的とする命令コードタイプの命令コードを検出したときは当該検出した命令コードと共にその直前の命令コードをプレフィックスコード候補として出力し、探索対象とする複数命令コード単位の後端で目的とする命令コードタイプの命令コードを検出できなかったときは当該後端の命令コードをプレフィックスコード候補として出力し、命令コード探索において先頭で目的とする命令コードタイプの命令コードを検出した場合には当該先頭の命令コードを出力する。
【００２２】
〔２〕項１のデータプロセッサにおいて、前記命令デコード及び実行部は、プレフィックスコード候補として供給された命令コードがプレフィックスコードでないときはこれを無視する。
【００２３】
〔３〕項２のデータプロセッサにおいて、前記命令デコード及び実行部は、プレフィックスコード候補として出力された前記後端の命令コードを、その直後の命令コード探索において先頭で検出されて供給された目的命令コードタイプの命令コードのプレフィックスコード候補として用いる。
【００２４】
〔４〕項１のデータプロセッサにおいて、前記直前の命令コード及び後端の命令コードは、夫々複数の命令コードである。プレフィックスコードは複数命令コードであってもよいからである。
【００２５】
〔５〕本発明に係るデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令（図８の命令（６）、（７）、（８））を含み、前記プレフィックスコードは前記固定レジスタ使用命令に前置されて、前記固定レジスタを、命令で指定可能な他のレジスタに置換するように、前記固定レジスタ使用命令を修飾する（図７のプレフィックスコード（１）、（２））。
【００２６】
〔６〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記命令セットには命令によって暗黙的に指定される固定レジスタ使用命令（図８の命令（６）、（７）、（８））を含み、前記プレフィックスコードは前記固定レジスタ使用命令に前置されて、前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾する（図７のプレフィックスコード（２））。
【００２７】
〔７〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、前記命令セットは、オペランドに関しデータサイズを有する命令を含み（図８の命令（８））、前記プレフィックスコードは前記オペランドサイズを有する命令に前置されて、前記命令のオペランドサイズを前記プレフィックスコードのオペランドサイズ指定フィールドで指定されるオペランドサイズの命令に変換するように、前記オペランドサイズを有する命令を修飾する（図７のプレフィックスコード（４））。
【００２８】
〔８〕項７のデータプロセッサにおいて、前記プレフィックスコードは前記オペランドサイズを有する命令に対してそのリテラルフィールドを拡張する修飾を併せて行う。
【００２９】
〔９〕項７のデータプロセッサにおいて、前記プレフィックスコードは前記オペランドサイズを有する命令に対して前記指定フィールドで指定されたサイズのオペランドの上位側を符号付き又は符号無しで拡張する修飾を併せて行う。
【００３０】
〔１０〕本発明の別の観点によるデータプロセッサは、後続命令を修飾するプレフィックスコードを有する命令セットアーキテクチャのデータプロセッサであって、同じオペレーションコードを持つ前記プレフィックスコード（図７のプレフィックスコード（１）、（４））の定義が前記プレフィックスコードによって修飾される後続命令の種類によって変化する。
【００３１】
〔１１〕項１０のデータプロセッサにおいて、前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令であるとき前記プレフィックスコード（図７のプレフィックスコード（２））は前記固定レジスタを即値に置換するように、前記固定レジスタ使用命令を修飾する。前記後続命令が命令によって暗黙的に指定される固定レジスタ使用命令でないとき前記プレフィックスコード（図７のプレフィックスコード（４））はオペランドサイズを変更又はリテラルを拡張するように、前記後続命令を修飾する。
【００３２】
２．実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００３３】
《実施形態１》
図１には本発明に係るデータプロセッサMＰＵが例示される。データプロセッサMＰＵは複数個のプロセッサコアＣＰＵを中心に、これに内部バスで接続されたメモリＭＥＭ、外部インタフェース回路ＥＩＦ、及び内蔵周辺モジュールＰＥＲ等を一個又は複数個備える。データプロセッサMＰＵは、特に制限されないが、単結晶シリコンのような１個の半導体基板に相補型ＭＯＳ集積回路製造技術等によって形成される。
【００３４】
図２には、本発明の実施形態に係るプロセッサコアＣＰＵのブロック構成が概略的に例示される。命令キャッシュＩＣ近傍には、命令フェッチユニットＩＦＵが配置され、その中には、プリデコーダＰＤ、グローバル命令キューＧＩＱ、及び分岐制御部ＢＲＣが含まれる。また、データキャッシュＤＣ近傍には、ロードストアユニットＬＳＵが配置され、その中には、ロードストア命令を保持するロードストア命令キューＬＳＩＱ、ロードストア命令デコーダＬＳＩＤ、及びロードストア命令実行部ＬＳＥが含まれる。更に、演算命令実行ユニットＥＸＵには、演算命令を保持する実行命令キューＥＸＩＱ、演算命令デコーダＥＸＩＤ、及び演算命令実行部ＥＸＥが含まれる。そして、バスインタフェースユニットＢＩＵはプロセッサコアとコア外のバスとのインタフェースである。
【００３５】
図３には、本発明の実施形態に係るプロセッサのパイプライン構成が概略的に例示される。まず、全命令共通の命令キャッシュアクセスＩＣ１及びＩＣ２、並びに、グローバル命令バッファＧＩＢステージがあり、演算命令用には、ローカル命令バッファＥＸＩＢ、ローカルレジスタリードＥＸＲＲ、演算ＥＸ、並びにレジスタライトバックＷＢステージがある。また、ロードストア命令用には、ローカル命令バッファＬＳＩＢ、ローカルレジスタリードＬＳＲＲ、アドレス計算ＬＳＡ、データキャッシュアクセスＤＣ１及びＤＣ２、並びにレジスタライトバックＷＢステージがある。更に、分岐命令用には分岐ＢＲステージがある。
【００３６】
命令キャッシュアクセスＩＣ１及びＩＣ２ステージでは、命令フェッチユニットＩＦＵが命令キャッシュＩＣから命令コードをフェッチしてプリデコーダＰＤでプリデコードした後、続くグローバル命令バッファＧＩＢステージのグローバル命令キューＧＩＱに格納する。グローバル命令バッファＧＩＢステージでは、ロードストア、演算、並びに、分岐の各カテゴリの命令を１命令ずつ抽出してディスパッチし、それぞれローカル命令バッファＬＳＩＢ及びＥＸＩＢ、並びに、分岐ＢＲステージで、それぞれロードストアユニットＬＳＵの命令キューＬＳＩＱ、命令実行ユニットＥＸＵの命令キューＥＸＩＱ、並びに、命令フェッチユニットＩＦＵの分岐制御部ＢＲＣに格納する。そして、分岐ＢＲステージでは、分岐命令を受取った場合には直ちに分岐処理が開始される。
【００３７】
演算命令用パイプラインでは、命令実行ユニットＥＸＵがローカル命令バッファＥＸＩＢステージで演算命令を１サイクルに最大１命令ずつ命令キューＥＸＩＱに受け取って、演算命令デコーダＥＸＩＤで最大１命令ずつデコードし、次のローカルレジスタリードＥＸＲＲステージでレジスタリードを行い、演算ＥＸステージで演算命令実行部ＥＸＥを用いて演算を行い、レジスタライトバックＷＢステージでレジスタライトのある命令であれば処理結果をレジスタに格納する。
【００３８】
ロードストア命令用のパイプラインでは、ロードストアユニットＬＳＵがローカル命令バッファＬＳＩＢステージでロードストア命令を１サイクルに最大１命令ずつ命令キューＬＳＩＱに受け取って、ロードストア命令デコーダＬＳＩＤで最大１命令ずつデコードし、次のローカルレジスタリードＬＳＲＲステージでレジスタリードを行い、アドレス計算ＬＳＡステージでロードストアアドレスを計算し、データキャッシュアクセスＤＣ１及びＤＣ２ステージでロードストア処理を行い、レジスタライトバックＷＢステージでレジスタライトのある命令であれば処理結果をレジスタに格納する。
【００３９】
図４には、本発明の実施形態に係るプロセッサのグローバル命令キューＧＩＱの構造が例示される。図４の例では、グローバル命令キューＧＩＱは、４命令分の命令プリデコーダＰＤ０〜３、１６命令分の命令キューエントリＧＩＱ０〜１５、書込み位置を指定するグローバル命令キューポインタＧＩＱＰ、グローバル命令キューポインタＧＩＱＰをデコードするグローバル命令キューポインタデコーダＧＩＱＰ−ＤＥＣ、演算、ロードストア、及び分岐の各カテゴリの命令の進捗に合せて進められ、読出し位置を指定する演算命令ポインタＥＸＰ、ロードストア命令ポインタＬＳＰ、分岐命令ポインタＢＲＰ、及びそれぞれのポインタに従って、それぞれ演算命令、ロードストア命令、分岐命令を探索してディスパッチする演算命令探索ディスパッチ回路ＥＸ−ＩＳＤ、ロードストア命令探索ディスパッチ回路ＬＳ−ＩＳＤ、分岐命令探索ディスパッチ回路ＢＲ−ＩＳＤ、命令フェッチ要求生成部ＩＲＥＱ−ＧＥＮから成る。
【００４０】
グローバル命令キューＧＩＱは、グローバル命令キューポインタＧＩＱＰ及び命令キャッシュ出力有効信号ＩＣＯＶから、グローバル命令キューポインタデコーダＧＩＱＰ−ＤＥＣによって生成されるグローバル命令キュー更新信号ＧＩＱＵ０〜３に従って、命令キャッシュＩＣからフェッチした４命令コードＩＣＯ０〜３をグローバル命令キューエントリグループＧＩＱ０〜３、ＧＩＱ４〜７、ＧＩＱ８〜１１、又はＧＩＱ１２〜１５にラッチする。グローバル命令キュー更新信号ＧＩＱＵ０〜３は命令キャッシュ出力有効信号ＩＣＯＶがアサートされている場合にグローバル命令キューポインタＧＩＱＰの指している命令キューエントリグループの更新信号をアサートする。また、命令キャッシュ出力有効信号ＩＣＯＶがアサートされて、フェッチした命令コードＩＣＯ０〜３がグローバル命令キューＧＩＱにラッチされた場合、グローバル命令キューポインタＧＩＱＰを更新する。このために、グローバル命令キューポインタＧＩＱＰに＋１した値を新グローバル命令キューポインタＧＩＱＰ−ＮＥＷとして出力しておき、命令キャッシュ出力有効信号ＩＣＯＶがアサートされたらこの値でグローバル命令キューポインタＧＩＱＰを更新する。
【００４１】
演算命令探索ディスパッチ回路ＥＸ−ＩＳＤは、グローバル命令キューエントリＧＩＱ０〜１５のそれぞれの出力であるグローバル命令キュー出力ＧＩＱＯ０〜１５から、演算命令ポインタＥＸＰの指す命令コードを先頭とする４個の命令コードを入力して演算命令コードを探索し、その先頭以外の命令に演算命令コードがあった場合は演算命令コード有効信号ＥＸ−ＩＶをアサートし、当該演算命令コード及びその直前の命令コードを選択して、演算命令ＥＸ−ＩＮＳＴとして出力する。直前の命令コードを選択すると、それがプレフィックスコードであったときには当該プレフィックスコードとこれが修飾する命令コードとを共に出力することができる。このとき演算プレフィックス候補有効信号ＥＸ−ＰＶはアサートされる。演算実行ユニットＥＸＵは、演算命令コード有効信号ＥＸ−ＩＶがアサートされ、且つ演算プレフィックス候補有効信号ＥＸ−ＰＶがアサートされることにより、そのときの演算命令コードの直前に供給される命令即ちプレフィックスコード候補がプレフィックスコードであるかを判別し、そうでなければ当該命令を無視する。プレフィックスコードであれば直後の演算命令を修飾して実行する。
【００４２】
演算命令探索ディスパッチ回路ＥＸ−ＩＳＤは、探索対象の前記４命令の後端で演算命令を検出できなかったときは、演算プレフィックス候補有効信号ＥＸ−ＰＶをアサートし、且つ演算命令コード有効信号ＥＸ−ＩＶをネゲートして、当該後端の命令をプレフィックスコード候補として演算実行ユニットＥＸＵに出力する。演算実行ユニットＥＸＵは演算プレフィックス候補有効信号ＥＸ−ＰＶがアサートされ、且つ演算命令コード有効信号ＥＸ−ＩＶがネゲートされることにより、そのとき供給されるプレフィックスコード候補として前記後端の命令を受取り、その処理を次のサイクルまで待つ。
【００４３】
演算命令探索ディスパッチ回路ＥＸ−ＩＳＤは、探索対象の前記４命令の先頭で演算命令コードを発見した場合は演算プレフィックス候補有効信号ＥＸ−ＰＶをネゲートし、且つ演算命令コード有効信号ＥＸ−ＩＶをアサートして、当該演算命令コードを演算実行ユニットＥＸＵに出力する。演算実行ユニットＥＸＵは演算プレフィックス候補有効信号ＥＸ−ＰＶがネゲートされ、且つ演算命令コード有効信号ＥＸ−ＩＶがアサートされることにより、その直前の探索処理の最後で前記後端の命令を演算プレフィックス候補として先に受取っているとき、当該後端の命令がプレフィックスコードであるかを判別し、そうでなければ当該命令を無視する。プレフィックスコードであれば今回受取った演算命令を当該プレフィックスコードで修飾して実行する。
【００４４】
尚、探索対象の４命令に無効な命令が含まれるのは、グローバル命令キューエントリグループＧＩＱ０〜３、ＧＩＱ４〜７、ＧＩＱ８〜１１、又はＧＩＱ１２〜１５のうち、無効な命令コードのグループを含む範囲が探索対象となった場合である。
【００４５】
以上の制御の結果、演算命令コード有効信号ＥＸ−ＩＶ及び演算プレフィックス候補有効信号ＥＸ−ＰＶが共にアサ−トされれば演算命令コードと一緒にその直前の演算プレフィックス候補が出力され、それぞれネゲート及びアサ−トであれば後端の非演算命令が演算プレフィックス候補として先行的に出力され、それぞれアサ−ト及びネゲートであれば先頭の演算命令コードだけが出力されて前記先行的に出力された演算プレフィックス候補と共に使用され、共にネゲートされれば命令コードは何も出力されない。尚、演算プレフィックス候補としてデコードされたコードが演算プレフィックスではない場合は、演算命令コードのみを使用して命令が実行される。
【００４６】
同様に、ロードストア命令探索ディスパッチ回路ＬＳ−ＩＳＤも、グローバル命令キュー出力ＧＩＱＯ０〜１５から、ロードストア命令ポインタＬＳＰに従って、ロードストア命令コード有効信号ＬＳ−ＩＶ、ロードストア命令ＬＳ−ＩＮＳＴ、ロードストアプレフィックス候補有効信号ＬＳ−ＰＶ、及び新ロードストア命令ポインタＬＳＰ−ＮＥＷを出力する。また、分岐命令探索ディスパッチ回路ＢＲ−ＩＳＤも、グローバル命令キュー出力ＧＩＱＯ０〜１５から、分岐命令ポインタＢＲＰに従って、分岐命令コード有効信号ＢＲ−ＩＶ、分岐命令ＢＲ−ＩＮＳＴ、分岐プレフィックス候補有効信号ＢＲ−ＰＶ、及び新分岐命令ポインタＢＲＰ−ＮＥＷを出力する。
【００４７】
命令フェッチ要求生成部ＩＲＥＱ−ＧＥＮは、各ポインタＧＩＱＰ、ＥＸＰ、ＬＳＰ、及びＢＲＰの値から、グローバル命令キューエントリグループＧＩＱ０〜３、ＧＩＱ４〜７、ＧＩＱ８〜１１、又はＧＩＱ１２〜１５のいずれかに１エントリグループ以上の空きがあるかどうかを判断し、空きがあれば命令フェッチ要求信号ＩＲＥＱをアサートする。空きがない状態は、グローバル命令キューポインタＧＩＱＰの指している、次にフェッチした命令コードＩＣＯ０〜３をラッチするグローバル命令キューエントリグループを、各ポインタＥＸＰ、ＬＳＰ、及びＢＲＰの何れも指していない状態である。尚、各ポインタの代わりに各新ポインタＧＩＱＰ−ＮＥＷ、ＥＸＰ−ＮＥＷ、ＬＳＰ−ＮＥＷ、及びＢＲＰ−ＮＥＷ、グローバル命令キューポインタＧＩＱＰの更新信号でもある命令キャッシュ出力有効信号ＩＣＯＶ、及び各ポインタの更新制御信号ＥＸ−ＯＫ、ＬＳ−ＯＫ、及びＢＲ−ＯＫとから命令フェッチ要求信号ＩＲＥＱを生成すれば、１サイクル早く命令フェッチ要求信号ＩＲＥＱを生成することが可能である。尚、命令フェッチ要求信号ＩＲＥＱを受ける命令キャッシュＩＣとの信号タイミング次第で、ポインタから作る方式、新ポインタから作る方式、作った後にラッチしてから命令キャッシュＩＣに送る方式等、種々のタイミングの方式が考えられる。
【００４８】
図５にはプレフィックスコードを含む命令コードフォーマットが例示される。命令コード数は命令タイプによって異なる場合が一般的であるため、本例では、ロードストア命令コードが全命令コード空間の半分を使用し、残りの半分を演算命令コードが使用し、更に残りの半分ずつを分岐命令コードとプレフィックスが使用することを想定している。そして、１６ビット固定長命令コードの最上位ビットが１ならばロードストア命令コード、上位２ビットが０１ならば演算命令コード、上位３ビットが００１ならば分岐命令コード、上位３ビットが０００ならばプレフィックスコードとする。そして、図４に例示したグローバル命令キューＧＩＱの命令プリデコーダＰＤ０〜３によって１６ビット固定長命令コードの上位３ビットをデコードし、命令コードタイプが、ロードストア、演算、分岐、またはプレフィックスのいずれであるかを判定し、命令タイプが分岐命令であるときにアサートする分岐命令ビットＢ及び命令タイプが演算命令であるときにアサートする演算命令ビットＥを付加する。また、１６ビット固定長命令コードの最上位ビットは、そのままロードストア命令ビットＬとして使用することができる。この結果、演算命令探索ディスパッチ回路ＥＸ−ＩＳＤ、ロードストア命令探索ディスパッチ回路ＬＳ−ＩＳＤ、及び分岐命令探索ディスパッチ回路ＢＲ−ＩＳＤの命令探索が容易となる。
【００４９】
図６には、図４に例示したグローバル命令キューＧＩＱの演算命令探索ディスパッチ回路ＥＸ−ＩＳＤの構造が例示される。ポインタデコーダＰ−ＤＥＣ、命令コードマルチプレクサＭ０〜Ｍ３、プライオリティエンコーダＰＥ、出力命令コードマルチプレクサＭＯＵＴ、ポインタ更新回路Ｐ−ＡＤＶから成る。ポインタデコーダＰ−ＤＥＣは、演算命令ポインタＥＸＰをデコードし、演算命令ポインタＥＸＰの指す命令コードを先頭とする４命令コードが選択されるように、命令コードマルチプレクサＭ０〜Ｍ３の制御信号Ｍ０−ＣＮＴＬ〜Ｍ３−ＣＮＴＬを生成する。命令コードマルチプレクサＭ０〜Ｍ３はそれぞれ制御信号Ｍ０−ＣＮＴＬ〜Ｍ３−ＣＮＴＬに従い、それぞれＧＩＱＯ０、４、８、及び１２、ＧＩＱＯ１、５、９、及び１３、ＧＩＱＯ２、６、１０、及び１４、ＧＩＱＯ３、７、１１、及び１５から１命令コードを選択し、それぞれ探索対象命令コードＣ０〜Ｃ３として出力する。この結果、探索対象命令コードＣ０〜Ｃ３には固定の順序が与えられず、先頭命令コードからサイクリックに命令順序が付く。プライオリティエンコーダＰＥは、プライオリティエンコーディングによって探索対象命令コードＣ０〜Ｃ３のそれぞれの演算命令ビットＥを演算命令ポインタＥＸＰの指す先頭命令コードから探索を開始し、演算命令コードを探索する。探索による演算命令ＥＸ−ＩＮＳＴ等の出力制御内容は上述の通りである。
【００５０】
尚、以上の説明では、演算命令探索ディスパッチ回路ＥＸ−ＩＳＤに４命令単位で入力される命令は全てグローバル命令キューＧＩＱにおいて有効な命令という前提に立っている。グローバル命令キューＧＩＱにおいて無効な命令、例えば、命令フェッチが間に合わずに既にリードされた命令が含まれている場合を想定する。このとき、演算命令探索ディスパッチ回路ＥＸ−ＩＳＤは以下の制御を行う。例えば、４命令に対して演算コードの探索を行い、発見した場合はその命令コードを選択し、発見しなかった場合は探索した４命令が全て有効ならば後端の命令コードを選択し、無効な命令があったときは最初の無効な命令コードを選択し、更に選択した命令コードの直前の命令コードも選択するように、出力命令コードマルチプレクサ制御信号ＭＯＵＴ−ＣＮＴＬを出力する。探索対象命令コードＣ０〜Ｃ３の順序はサイクリックであるため、発見しなかった場合に上記の命令コードを選択すると、直前の命令コードとして最後の有効な命令コードが選択され、これが演算命令のプレフィックスであっても適切に選択されて出力される。また、選択制御が、演算命令コードを発見した場合との一つと同一になり、簡素化される。前述と同様に、新たな探索対象命令を選択した際に先頭命令コードが演算命令であった場合は、演算プレフィックス候補有効信号ＥＸ−ＰＶをネゲートし、演算命令コードＥＸ−ＩＮＳＴの一部として同時に出力される演算プレフィックス候補は使用せずに、演算実行ユニットが既に保持している演算プレフィックス候補を使用するように指示する。
【００５１】
ロードストア命令探索ディスパッチ回路ＬＳ−ＩＳＤ及び分岐命令探索ディスパッチ回路ＢＲ−ＩＳＤも上記演算命令探索ディスパッチ回路ＥＸ−ＩＳＤと同様に構成される。
【００５２】
以上の制御により、第２の課題が解決され、各命令タイプ毎に、プレフィクス付の命令もプレフィックスなしの命令も毎サイクル発行することが可能となり、プレフィックス付の命令を含む命令セットにおける効率的なスーパースカラ命令発行が可能となる。また、発見した命令コードに付加する直前の命令コードを１個から複数に変えれば、複数個のプレフィックスコードを許す命令セットアーキテクチャに対しても、本制御方式を適用することが可能となり、効率的なスーパースカラ命令発行が可能となる。
【００５３】
《実施形態２》
図７には本発明の第１の課題を解決するためのプレフィックスコード定義が例示される。また、図８にはプレフィックスコードが修飾する命令が例示される。
【００５４】
図７の（１）のコードＲ０ＣＨＧ  Ｒｎ，＃ＬＩＴ４は固定レジスタ使用命令の固定レジスタを他のレジスタに置換し、更にリテラルを４ビット拡張するプレフィックスコードである。上位３ビットが０００であることは、図５に示したようにプレフィックスコードであることを示す。また、置換するレジスタを指定するレジスタフィールドＲｎを持つ。Ｒｎは４ビットフィールドであり、汎用レジスタ０〜１５の一つを指定することができる。また、ＯＰはプレフィックスの種類を示すオペレーションコードである。このコードを図８の（６）の命令に適用した場合を考える。（６）の命令ＭＯＶ．Ｂ／Ｗ／Ｄ  ＠（Ｒｍ，ＤＩＳＰ４），Ｒ０はロード命令であり、レジスタＲｍをベースアドレスとし、これに４ビットディスプレースメントＤＩＳＰ４を加算した値をメモリアクセスアドレスとして、このアドレスからロードしたバイトＢ、ワード（１６ビット）Ｗ、又はダブルロング（６４ビット）Ｄサイズの値をＲ０に格納する命令である。この命令を（１）のプレフィックスコードで修飾すると、Ｒ０をＲｎに変えることができ、４ビットディスプレースメントＤＩＳＰ４を４ビット拡張して８ビットとすることができて、命令ＭＯＶ．Ｂ／Ｗ／Ｄ  ＠（Ｒｍ，ＤＩＳＰ８），Ｒｎに変換でき、レジスタＲ０を使用しない命令になる。そして、レジスタアサインの汎用性が増すと共に、ディスプレースメントが８ビットのＤＩＳＰ８に拡張されアドレス指定の汎用性が増す。また、Ｒ０への転送及びＲ０の読み出しがなくなり、性能向上及び電力低減が達成される。
【００５５】
図７の（２）のコードＲ０ＣＨＧ  ＃ＬＩＴ８は固定レジスタ使用命令の固定レジスタを即値に置換するプレフィックスコードである。置換する即値を指定するリテラルフィールドＬＩＴ８を持つ。このコードを図８の（７）の命令に適用した場合を考える。（７）の命令ＭＯＶ．Ｂ／Ｗ／Ｄ  Ｒ０，＠（Ｒｍ，ＤＩＳＰ４）はストア命令であり、レジスタＲｍをベースアドレスとし、これに４ビットディスプレースメントＤＩＳＰ４を加算した値をメモリアクセスアドレスとして、このアドレスにレジスタＲ０の下位１バイト、下位１ワード、又はダブルロングサイズの値を格納する命令である。この命令を（２）のプレフィックスコードで修飾すると、レジスタＲ０をリテラルに変えることができ、命令ＭＯＶ．Ｂ／Ｗ／Ｄ  ＃ＬＩＴ８，＠（Ｒｍ，ＤＩＳＰ４）に変換でき、レジスタＲ０を使用しない命令になる。そして、（１）のコードと同様に、レジスタアサインの汎用性が増すと共に、性能向上及び電力低減が達成される。
【００５６】
図７の（３）のコードＲ０ＲＤＣＨＧ  Ｒｍ、Ｒｄは固定レジスタ使用命令の固定レジスタをＲｍに置換し、モディファイオペランドをリードオペランドとし、新たにデスティネーションオペランドＲｄを追加するプレフィックスコードである。置換するレジスタ及び追加するレジスタを指定するレジスタフィールドＲｍ及びＲｄを持つ。このコードを図８の（８）の命令に適用した場合を考える。（８）の命令ＤＩＶ．Ｌ  Ｒ０，Ｒｎは除算命令であり、レジスタＲｎの値をレジスタＲ０の値で割って、その結果をレジスタＲｎに格納する命令である。この命令を図７の（３）のプレフィックスコードで修飾すると、レジスタＲ０をレジスタＲｍに変え、更にデスティネーションをレジスタＲｄに変えることができ、レジスタＲｎの値をレジスタＲｍの値で割って、その結果をレジスタＲｄに格納するＲ０を使用しない３オペランド命令ＤＩＶ．Ｌ  Ｒｍ，Ｒｎ，Ｒｄとなり、レジスタアサインの汎用性が増すと共に、性能向上及び電力低減が達成される。
【００５７】
図７の（４）のコードＳＺＣＨＧ．ＢＵ／Ｂ／Ｗ／Ｄ  ＃ＬＩＴ６はデータサイズロング（３２ビット）Ｌの命令のデータサイズをバイトＢ、ワードＷ又はダブルロングＤに変換すると共に、リテラルを６ビット拡張するプレフィックスコードである。また、バイトサイズへの変換ではバイトサイズデータのレジスタ上での上位ビットへの拡張を符号なしか符号付かを選択でき、バイトサイズ符号なしはＢＵ、バイトサイズ符号付はＢと指定する。これらの４通りを２ビットのサイズフィールドＳＺで指定する。そしてリテラル拡張用のリテラルフィールドＬＩＴ６を持つ。このコードを図８の（９）の命令に適用した場合を考える。（９）の命令ＭＯＶ．Ｌ  ＠（Ｒｍ，ＤＩＳＰ４），Ｒｎはロード命令であり、レジスタＲｍをベースアドレスとし、これに４ビットディスプレースメントＤＩＳＰ４を加算した値をメモリアクセスアドレスとして、このアドレスからロードしたロングサイズの値をＲｎに格納する命令である。この命令を図７の（４）のプレフィックスコードで修飾すると、データサイズをＢＵ、Ｂ、Ｗ、又はＤに変えることができ、命令ＭＯＶ．ＢＵ／Ｂ／Ｗ／Ｄ  ＠（Ｒｍ，ＤＩＳＰ１０），Ｒｎとなり、データサイズの汎用性が増すと共に、ディスプレースメントが１０ビットのＤＩＳＰ１０に拡張され、性能向上及び電力低減が達成される。尚、図８の（９）の命令ＭＯＶ．Ｌ  ＠（Ｒｍ，ＤＩＳＰ４），Ｒｎに対応する他のサイズの１６ビット固定長命令は図８（６）の命令ＭＯＶ．Ｂ／Ｗ／Ｄ  ＠（Ｒｍ，ＤＩＳＰ４），Ｒ０である。これに図７の（１）のプレフィックスコードＲ０ＣＨＧ  Ｒｎ，＃ＬＩＴ４を適用しても固定レジスタＲ０の制約を外すことができる。しかし、ディスプレースメントの拡張は４ビットと少ないため、図７の（４）のプレフィックスコードよりは効果が小さい。
【００５８】
図７の（１）のコードＲ０ＣＨＧ  Ｒｎ，＃ＬＩＴ４は固定オペランドＲ０を持つ命令にのみ適用する意味がある。一方、図７の（４）のコードＳＺＣＨＧ．ＢＵ／Ｂ／Ｗ／Ｄ  ＃ＬＩＴ６は固定オペランドＲ０を持たない汎用性の高い命令にのみ適用する意味がある。したがって、これら２つのプレフィックスコードに同一の命令コードＯＰを割り当てても、修飾される後続命令によって使い分けることが出来る。このように、プレフィックスコードを後続する命令の付加情報と位置づけ、その解釈を修飾される後続命令に委ねることにより、プレフィックスコードの命令コードＯＰの種類を減らし、プレフィックスコード空間を縮小することができる。図７の例では命令コードＯＰに５ビット割り当てており、３２種類定義可能であるが、これほど多くのプレフィックスは不要と考えられるので、例えばプレフィックスは上位６ビットが０と定めると、プレフィックスコード空間が縮小される。８ビットオペランドであれば４種類定義可能となる。逆に、プレフィックスは上位３ビットが０という定義は変えずに、オペランドを８ビットより大きくするという選択肢もある。
【００５９】
図７の（５）のコードＬＩＴＥＸＴ＃ＬＩＴ８はこれが前置された命令のリテラルを８ビット拡張するプレフィックスコードである。固定オペランドＲ０を持つ命令と持たない命令の双方に適用され、何れの場合もプレフィックスコードの意義に変わりはない。
【００６０】
以上のようなプレフィックスコード定義により、命令コード空間を拡張せずにオペランド数を確保することが可能なであるという固定レジスタ使用命令の長所を生かしつつ、更に命令コード空間を拡張して、固定レジスタ使用命令では対応できない場合でも、転送命令出現頻度を削減することが可能となる。また、ディスプレースメントを伸ばすことによりプレフィックスを使用しない場合にベースアドレスから届かなかったアドレスにも届くようになる。そして、届かなかった場合に対応するためにディスプレースメント設定のための即値転送命令とインデックス相対ロード命令の２命令を使用する場合が削減され、転送命令の出現頻度が低減される。
【００６１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００６２】
例えば、並列パイプライン数は図３に示される３並列に限定されず、命令フェッチの単位は４命令並列に限定されず、グローバル命令キューエントリは図４の４エントリ・グループの１６個に限定されない。命令セットの命令は１６ビット長を主体とする命令長に限定されない。
【図面の簡単な説明】
【００６３】
【図１】図１は本発明に係るデータプロセッサの概略的な構成を例示するブロック図である。
【図２】図２は本発明に係るデータプロセッサにおけるプロセッサコアの構成を概略的に例示するブロック図である。
【図３】図３は本発明に係るプロセッサコアのパイプライン構造を概略的に例示する説明図である。
【図４】図４は本発明に係るプロセッサコアのグローバル命令キューの構造を概略的に例示するブロック図である。
【図５】図５は本発明に係るプロセッサコアのプレフィックスコードを含む命令コードフォーマットを概略的に例示する説明図である。
【図６】図６は本発明に係るプロセッサコアのグローバル命令キューの命令探索ディスパッチ回路の構造を概略的に例示するブロック図である。
【図７】図７は本発明に係るプロセッサコアのプレフィックスコード定義を概略的に例示する説明図である。
【図８】図８は本発明に係るプロセッサコアのプレフィックスコードによって修飾される命令を概略的に例示する説明図である。
【符号の説明】
【００６４】
MＰＵ  データプロセッサ
ＣＰＵ  プロセッサコア
ＭＥＭ  メモリ
ＥＩＦ  外部インタフェース回路
ＰＥＲ  内蔵周辺モジュール
ＩＣ  命令キャッシュ
ＩＦＵ  命令フェッチユニット
ＰＤ  プリデコーダ
ＧＩＱ  グローバル命令キュー
ＢＲＣ  分岐制御部
ＤＣ  データキャッシュ
ＬＳＵ  ロードストアユニット
ＬＳＩＱ  ロードストア命令キュー
ＬＳＩＤ  ロードストア命令デコーダ
ＬＳＥ  ロードストア命令実行部
ＥＸＵ  演算命令実行ユニット
ＥＸＩＱ  実行命令キュー
ＥＸＩＤ  演算命令デコーダ
ＥＸＥ  演算命令実行部
ＢＩＵ  バスインタフェースユニット
ＩＣ１、ＩＣ２  命令キャッシュアクセスステージ
ＧＩＢ  グローバル命令バッファステージ
ＥＸＩＢ  ローカル命令バッファステージ
ＥＸＲＲ  ローカルレジスタリードステージ
ＥＸ  演算ステージ
ＷＢ  レジスタライトバックステージ
ＬＳＩＢ  ローカル命令バッファステージ
ＬＳＲＲ  ローカルレジスタリードステージ
ＬＳＡ  アドレス計算ステージ
ＤＣ１、ＤＣ２  データキャッシュアクセスステージ
ＢＲ  分岐ステージ
ＧＩＱ０〜１５  命令キューエントリ
ＧＩＱＰ  グローバル命令キューポインタ
ＧＩＱＰ−ＤＥＣ  グローバル命令キューポインタデコーダ
ＥＸＰ  演算命令ポインタ
ＬＳＰ  ロードストア命令ポインタ
ＢＲＰ  分岐命令ポインタ
ＥＸ−ＩＳＤ  演算命令探索ディスパッチ回路
ＬＳ−ＩＳＤ  ロードストア命令探索ディスパッチ回路
ＢＲ−ＩＳＤ  分岐命令探索ディスパッチ回路
ＩＲＥＱ−ＧＥＮ  命令フェッチ要求生成部
ＩＣＯＶ  命令キャッシュ出力有効信号
ＧＩＱＵ０〜３  グローバル命令キュー更新信号
ＩＣＯ０〜３  命令キャッシュ出力命令コード
ＧＩＱＵ０〜３  グローバル命令キュー更新信号
ＧＩＱＰ−ＮＥＷ  新グローバル命令キューポインタ
ＥＸ−ＩＶ  演算命令コード有効信号
ＥＸ−ＩＮＳＴ  演算命令
ＥＸＰ−ＮＥＷ  新演算命令ポインタ
ＬＳＰ−ＮＥＷ  新ロードストア命令ポインタ
ＢＲＰ−ＮＥＷ  新分岐命令ポインタ
ＥＸ−ＰＶ  演算プレフィックス候補有効信号
ＬＳ−ＰＶ  ロードストアプレフィックス候補有効信号
ＢＲ−ＰＶ  分岐プレフィックス候補有効信号
ＩＲＥＱ  命令フェッチ要求信号
ＥＸ−ＯＫ  演算命令ポインタの更新制御信号
ＬＳ−ＯＫ  ロードストア命令ポインタの更新制御信号
ＢＲ−ＯＫ  分岐命令ポインタの更新制御信号
Ｅ  演算命令ビット
Ｌ  ロードストア命令ビット
Ｂ  分岐命令ビット
Ｐ−ＤＥＣ  ポインタデコーダ
Ｍ０〜Ｍ３  命令コードマルチプレクサ
ＰＥ  プライオリティエンコーダ
ＭＯＵＴ  出力命令コードマルチプレクサ
Ｐ−ＡＤＶポインタ更新回路
Ｍ０−ＣＮＴＬ〜Ｍ３−ＣＮＴＬ  命令コードマルチプレクサ制御信号
Ｍ０〜Ｍ３  命令コードマルチプレクサ
Ｃ０〜Ｃ３  探索対象命令コード
【図１】
2010066893.tif 000003
【図２】
2010066893.tif 000004
【図３】
2010066893.tif 000005
【図４】
2010066893.tif 000006
【図５】
2010066893.tif 000007
【図６】
2010066893.tif 000008
【図７】
2010066893.tif 000009
【図８】
2010066893.tif 000010