(57)【要約】【課題】  ノンブロッキング・ロード機能を備えたマイクロプロセッサであっても、非整列ロード命令が発行された場合、若しくはキャッシュアクセスにおいてキャッシュミスがあると、パイプラインストールが発生する。【解決手段】  ロード・ストア・ユニット２２は、ロード先レジスタのロード前の値を格納するＴｏｐレジスタ１０３と、命令デコード部１３より発行されたロード命令が、非整列ロード命令であるか否かを判定する非整列命令判定部１０４と、Ｔｏｐレジスタ１０３に保持されたデータを格納可能な退避レジスタ１０６とを備えており、非整列命令判定部１０４が非整列ロード命令と判定した場合に、Ｔｏｐレジスタ１０３の格納データを退避レジスタ１０６に格納し、Ｔｏｐレジスタ１０３を命令デコード部１３が発行する後続命令に使用可能とする。【選択図】  図２
2006318051.tif 000002
【特許請求の範囲】
【請求項１】
ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてメモリからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサであって、
前記ロードユニットは、
前記ロード先レジスタのロード前の値を格納する第１の入力レジスタと、
前記命令発行部より発行されたロード命令が、前記メモリから読み出したデータと前記ロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する判定部と、
前記第１の入力レジスタに保持されたデータを格納可能な退避レジスタとを備え、
前記判定部が非整列ロード命令と判定した場合に、前記第１の入力レジスタの格納データを前記退避レジスタに格納し、前記第１の入力レジスタを前記命令発行部が発行する後続命令に使用可能とすることを特徴とするマイクロプロセッサ。
【請求項２】
ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてメモリからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサであって、
前記ロードユニットは、
前記ロード命令のオペランドで指定された前記ロード先レジスタのロード前の値を格納する第１の入力レジスタと、
前記ロード命令のオペランドで指定された前記メモリの実効アドレスの生成情報を格納する第２の入力レジスタと、
前記命令発行部より発行されたロード命令が、前記メモリから読み出したデータと前記ロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する判定部と、
前記第１の入力レジスタに保持されたデータを格納可能な退避レジスタと、
前記第２の入力レジスタに格納された入力値に基づいて実効アドレスを生成するアドレス生成部と、
前記実効アドレスに基づいて前記メモリから取得したデータと、前記退避レジスタに格納されたデータとをマージするデータマージ部とを備えるマイクロプロセッサ。
【請求項３】
前記判定部が非整列ロード命令と判定した場合に、第１の入力レジスタの格納データを前記退避レジスタに退避し、前記第１の入力レジスタを前記命令発行部が発行する後続命令に使用可能とすることを特徴とする請求項２に記載のマイクロプロセッサ。
【請求項４】
前記退避レジスタに新たにデータを退避する空き領域がなく、すでに非整列ロード命令が実行状態にある場合に、前記命令発行部に対して新たなロード命令の発行の停止を指示する監視部を備える請求項１又は２に記載のマイクロプロセッサ。
【請求項５】
前記退避レジスタに退避可能な命令数は１命令であることを特徴とする請求項１又は２に記載のマイクロプロセッサ。
【請求項６】
前記メモリは、前記マイクロプロセッサ外部のメインメモリ及び前記マイクロプロセッサと前記メインメモリの間に設けられたデータキャッシュであり、
前記データキャッシュへのアクセス時にキャッシュミスが生じたロード命令を退避するフェッチキューを備え、
前記退避レジスタに退避可能な命令数は、前記フェッチキューに退避可能な命令数以上である請求項１又は２に記載のマイクロプロセッサ。
【請求項７】
ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてメモリからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサの制御方法であって、
前記命令発行部より発行されたロード命令が、前記メモリから読み出したデータと前記ロード先レジスタのロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定し、
非整列ロード命令と判定した場合に、前記ロードユニットの第１の入力レジスタに格納された前記ロード先レジスタのロード前の値を退避レジスタに格納し、前記第１の入力レジスタを前記命令発行部が発行する後続命令に使用可能とするマイクロプロセッサの制御方法。
【請求項８】
前記退避レジスタに新たにデータを退避する空き領域がなく、すでに非整列ロード命令が実行状態にある場合に、前記命令発行部に対して新たなロード命令の発行の停止を指示する請求項７に記載のマイクロプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサのアーキテクチャに関し、特に、ノンブロッキング・ロードを行うマイクロプロセッサに関する。
【背景技術】
【０００２】
マイクロプロセッサ開発者の主要な目標の１つは、マイクロプロセッサの命令処理速度を向上することにある。マイクロプロセッサの処理速度を向上する技術として、キャッシュメモリを使用することが知られている。キャッシュメモリは、マイクロプロセッサの処理速度とＤＲＡＭ等のメインメモリのデータ転送速度との速度差を解消するために用いられる。
【０００３】
しかしながら、キャッシュメモリ内に演算に使用するデータが格納されてない場合は、プロセッサ外部の低速なメインメモリからキャッシュメモリに対してデータを転送してこなければならない。このように、マイクロプロセッサで使用するデータがキャッシュメモリ内でヒットしない場合をミスヒット又はキャッシュミスと言う。キャッシュミスが生じると、メインメモリからキャッシュメモリへのデータ転送が行なわれている間キャッシュメモリへのアクセスができず、キャッシュミスのあったロード命令だけでなく後続のロード命令及びストア命令の実行も停止してしまう。パイプライン処理を行うマイクロプロセッサでは、キャッシュミスはパイプラインストールし、性能低下の原因となる。
【０００４】
このようなキャッシュミスによるパイプラインストールの発生を回避するため、ノンブロキング・ロード機能を備えたマイクロプロセッサが知られている。ノンブロッキング・ロード機能とは、先行して実行されたロード命令においてキャッシュミスが発生した場合に、キャッシュミスが発生した命令を一時的に退避し、後続のロード命令によるキャッシュメモリへのアクセスを継続して実行できるものである（例えば非特許文献１を参照）。
【０００５】
一方、マイクロプロセッサは、所定のデータ長を単位としてデータを取り扱うこととしており、現在の多くのプロセッサは、この取り扱い単位を３２ビット（４バイト）単位又は６４ビット（８バイト）単位としている。また、この取り扱い単位を「ワード」と定義している。以下では、３２ビット単位を１ワード、６４ビット単位をダブル・ワードと呼ぶ。キャッシュメモリなどの周辺の装置もマイクロプロセッサのデータ単位に従ってデータ長を統一することにより、高速処理が可能となる。例えば、キャッシュメモリのライン幅は、マイクロプロセッサのデータ長にあわせて、１ワード又はその倍数として構成されており、１回のキャッシュアクセスにより、効率よく１ワード又は１ダブル・ワードのデータをロードできるものとされている。さらにロード・ストアできるデータの単位としては８ビット（１バイト）と１６ビット（２バイト、もしくはハーフワード）があり、ワードロード、ダブルワードロードと同じようにキャッシュメモリもしくはメインメモリにアクセスすることができる。
【０００６】
１ワード未満のデータと、その他の１ワード単位のデータをキャッシュメモリに格納すると、１ワード単位の境界（ワード境界）あるいはキャッシュメモリのライン境界（キャッシュライン境界）を跨いでデータが格納される場合が生じる。以下では、ワード境界を跨いで格納されたデータを非整列データと呼ぶ。
【０００７】
このような非整列データを整列化してロードするためは、２回のキャッシュアクセス、２つ以上のレジスタ及び２回以上の論理演算処理が必要となる。しかし、例えば、代表的なＲＩＳＣ（Reduced Instruction Set Computer）型命令セットであるＭＩＰＳ（登録商標）命令セットでは、ＬＷＬ（Load Word Left）命令、ＬＷＲ（Load Word Right）命令、ＬＤＬ（Load Double-word Left）命令、ＬＤＲ（Load Double-word Right）命令等の命令を備えており、これらの命令を組み合わせて実行することによって、非整列データのロードを２回のキャッシュアクセスのみで実行可能としている。さらに使用するレジスタを１つにすることができ効率的である。
【０００８】
一例として、ＬＷＬ命令及びＬＷＲ命令による非整列データをロードする場合について、図７を用いて説明する。図７は、ビックエンディアン方式でデータを格納したキャッシュメモリから、非整列データ（Ｙ１〜Ｙ４）をロードする場合の操作を示している。
【０００９】
図７に示したＬＷＬ命令のニーモニック"LWL R18 , 0x2(R0)"は、ベースレジスタＲ０の値にオフセット値０ｘ２を加算して得られるキャッシュメモリの実効アドレスからワード境界までのデータを、ロード先レジスタＲ１８の左側に格納する命令である。具体的には、ベースレジスタＲ０の値を０ｘ０とすると、実効アドレスで指定された０ｘ２番地から左側のワード境界である０ｘ３番地までのデータＹ１、Ｙ２と、ターゲットレジスタＲ１８に元々格納されていたデータＢ２、Ｂ３とがマージされ、再びレジスタＲ１８に格納される。
【００１０】
また、ＬＷＲ命令のニーモニック"LWR R18 , 0x5(R0)"は、キャッシュメモリのワード境界からベースレジスタＲ０の値にオフセット値０ｘ５を加算して得られるキャッシュメモリの実効アドレスまでのデータを、ロード先レジスタＲ１８の右側に格納する命令である。具体的には、ベースレジスタＲ０の値を０ｘ０とすると、実効アドレスで指定された０ｘ５番地と、番地の小さい側のワード境界である０ｘ３番地との間のデータＹ３、Ｙ４が、ロード先レジスタＲ１８に元々格納されていたデータＹ１、Ｙ２とマージされ、再びレジスタＲ１８に格納される。
【００１１】
このように、ＭＩＰＳ（登録商標）命令セットであれば、１ワード未満のデータを元のデータとマージしてロードする命令であるＬＷＬ命令とＬＷＲ命令を実行することによって、非整列データ（Ｙ１〜Ｙ４）のロードを行うことができる。同様に、ＬＤＬ命令とＬＤＲ命令を実行することによって、非整列に格納されたダブル・ワード単位のデータを整列化してロードすることができる。
【００１２】
なお、以下では上述したＭＩＰＳ（登録商標）命令セットにおけるＬＷＬ命令、ＬＷＲ命令、ＬＤＬ命令、ＬＤＲ命令のような命令を非整列ロード命令と呼ぶ。つまり、非整列ロード命令とは、マイクロプロセッサの処理データ単位である１ワード未満又は１ダブル・ワード未満のデータをキャッシュメモリから読み出してロード先レジスタに格納する命令であって、キャッシュメモリから読み出したデータをロード先レジスタが保持していた元のデータ（マージ用データ）とマージし、マージ後のデータを前記ロード先レジスタに格納する命令である。
【００１３】
非整列ロード命令を実行可能であり、かつノンブロッキング・ロード機能を備えた従来のマイクロプロセッサ８の構成を図８及び図９に示す。図８はマイクロプロセッサ８の全体構成を示す図である。
【００１４】
命令フェッチ部１２は、プログラムカウンタ（不図示）の内容を命令キャッシュ１１に与え、命令を命令レジスタ（不図示）にロードする。なお、命令キャッシュ１１は、命令を格納するキャッシュメモリである。
【００１５】
命令デコード部１３は、命令をデコードし、命令の種類に応じてリザベーションステーション１５乃至１８のいずれかに命令を発行する。また、命令デコード部１３は、オペランドで指定されたレジスタ番号をレジスタファイル１４に与え、レジスタファイル１４から出力されたオペランドレジスタの内容がリザベーションステーション１５乃至１８に格納される。
【００１６】
リザベーションステーション１５乃至１８において全てのオペランドが有効になると、ロード・ストア・ユニット（ＬＳＵ）８０を含む各実行ユニットにおいて、命令が実行される。
【００１７】
非整列ロード命令を含むロード命令は、ＬＳＵ８０において実行される。ロード命令を実行するＬＳＵ８０の構成を図９に示す。
【００１８】
ＬＳＵ８０でのロード命令の実行時には、リザベーションステーション１８が保持している３つの命令オペランドの内容がＳｏｐレジスタ１０１、オフセットレジスタ１０２、Ｔｏｐレジスタ１０３にセットされる。Ｓｏｐレジスタ１０１には、キャッシュメモリの実効アドレスを生成するためのベースレジスタの値がセットされる。オフセットレジスタ１０２には、実効アドレス演算のためのオフセット値がセットされる。また、Ｔｏｐレジスタ１０３には、ロードしたデータの格納先であるロード先レジスタに、ロード命令の実行前に格納されている内容がセットされる。
【００１９】
アドレス生成部１０７は、Ｓｏｐレジスタ１０１及びオフセットレジスタ１０２の値を加算して、データキャッシュ２３の実効アドレスを生成する。
【００２０】
キャッシュ制御部１０８は、アドレス生成部１０７が生成した実効アドレスを参照し、キャッシュミスである場合は、そのロード命令をフェッチキュー１０９に退避する。これにより、メインメモリ２４からのデータロードを待たずに、後続のロード命令を実行可能になり、パイプラインストールの発生を回避できる。なお、図９では、フェッチキューに４命令を積むことができる構成を示しており、４つのキャッシュミスが発生しても、後続命令によるキャッシュアクセスを継続することができる。なお、フェッチキュー１０９に退避可能な命令数を超えるキャッシュミスが同時に発生した場合、キャッシュ制御部１０８は命令デコード部１３、リザベーションステーション１８にビジー信号を出力し、後続命令の発行が中断される。
【００２１】
上述したＬＷＬ命令、ＬＷＲ命令等の非整列ロード命令を実行する場合には、データキャッシュ２３からのリターンデータとＴｏｐレジスタ１０３にセットされたマージ用データがデータマージ部８１０においてマージされ、マージ後のデータがレジスタファイル１４のロード先レジスタに格納される。なお、非整列ロード命令を除く通常のロード命令の場合、データマージ部８１０は、データキャッシュ２３からのリターンデータをレジスタファイル１４に格納する。
【非特許文献１】John Paul Shen、Mikko H.Lipasti著、「Modern Processor Design : Fundamentals of Superscalar Processors : Beta Edition」、（米国）、McGraw-Hill、2002年7月22日、p.201-204
【発明の開示】
【発明が解決しようとする課題】
【００２２】
従来のマイクロプロセッサ８では、非整列ロード命令を実行すると、パイプラインストールが発生するという課題がある。このパイプラインストールは、非整列ロード命令においてキャッシュミスが発生した場合、メインメモリからのロード若しくはアンキャッシュ・ロードを行う場合だけでなく、キャッシュヒット時にも発生する。
【００２３】
上述したように、非整列ロード命令を除く通常のロード命令であれば、キャッシュミスがあった場合にも、フェッチキュー１０９に命令を退避することにより、データキャッシュの入れ替え中にも後続ロード命令によるキャッシュにアクセスすることが可能である。
【００２４】
しかし、ＬＷＬ命令、ＬＷＲ命令等の非整列ロード命令を実行する場合、Ｔｏｐレジスタ１０３は、データマージ部８１０によってマージ用データの参照が行われるまでマージ用データとして保持しておく必要がある。このため、非整列ロード命令を実行する場合、キャッシュヒット時でもデータキャッシュ２３からリターンデータが返ってくるまでに通常２サイクル以上かかるので、データキャッシュ２３から参照データが得られるまでの間、非整列ロード命令と後続命令との間でＴｏｐレジスタ１０３の競合が生じ、後続命令の実行が停止することになる。キャッシュミス時やアンキャッシュ・ロードを行う場合には、さらに長時間のパイプラインストールを生ずることになる。このように、非整列ロード命令を実行すると、ノンブロッキング・ロードのためのフェッチキュー１０９を備えている場合であっても、ノンブロッキング動作を継続することができず、パイプラインストールを生じてしまう。
【００２５】
なお、上述した従来のマイクロプロセッサ８では、非整列命令判定部８０４が非整列ロード命令の発行を判定すると、フェッチキュー１０９の状態に関わらず命令デコード部１３、リザベーションステーション１８にビジー信号を出力し、後続命令の実行を中断する構成となっている。
【課題を解決するための手段】
【００２６】
本発明にかかるマイクロプロセッサは、ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてデータキャッシュからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサである。ここで、前記ロードユニットは、前記ロード先レジスタのロード前の値を格納する第１の入力レジスタと、前記命令発行部より発行されたロード命令が、前記データキャッシュから読み出したデータと前記ロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する判定部と、前記第１の入力レジスタに保持されたデータを格納可能な退避レジスタとを備え、前記判定部が非整列ロード命令と判定した場合に、前記第１の入力レジスタの格納データを前記退避レジスタに格納し、前記第１の入力レジスタを前記命令発行部が発行する後続命令に使用可能とするものである。
【００２７】
このような構成により、ロード先レジスタのロード前の値を格納する第１の入力レジスタを後続命令に開放できるため、非整列ロード命令と後続命令との間で第１の入力レジスタの資源競合が生じない。したがって、キャッシュミスの有無やアンキャッシュ・ロードであるかに関わらず、非整列ロード命令の実行時におけるパイプラインストールの発生を回避することができる。
【００２８】
一方、本発明にかかるマイクロプロセッサの制御方法は、ロード命令を発行する命令発行部と、前記命令発行部より発行されるロード命令に基づいてデータキャッシュからロード先レジスタへのデータ読み出しを実行するロードユニットを備え、ノンブロッキング・ロードを行うマイクロプロセッサの制御方法である。まず、前記命令発行部より発行されたロード命令が、前記データキャッシュから読み出したデータと前記ロード先レジスタのロード前の値とをマージしたデータを前記ロード先レジスタに格納する非整列ロード命令であるか否かを判定する。次に、非整列ロード命令と判定した場合に、前記ロードユニットの入力レジスタに格納された前記ロード先レジスタのロード前の値を退避レジスタに格納し、前記第入力レジスタを前記命令発行部が発行する後続命令に使用可能とするものである。
【００２９】
このような制御方法によって、非整列ロード命令の実行時にロード先レジスタのロード前の値を格納する第１の入力レジスタを後続命令に開放できるため、非整列ロード命令と後続命令との間で第１の入力レジスタの資源競合が生じない。したがって、キャッシュミスの有無やアンキャッシュ・ロードであるかに関わらず、非整列ロード命令の実行時におけるパイプラインストールの発生を回避することができる。
【発明の効果】
【００３０】
本発明により、非整列ロード命令実行時のパイプラインストールの発生を回避できるマイクロプロセッサ及びマイクロプロセッサの制御方法を提供することができる。
【発明を実施するための最良の形態】
【００３１】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００３２】
発明の実施の形態１．
本実施の形態にかかるマイクロプロセッサ１の構成を図１及び図２を用いて説明する。図１は、マイクロプロセッサ１の全体構成を示す図である。マイクロプロセッサ１は、非整列ロード命令においてキャッシュミスがあった場合にパイプラインストールの発生を回避するよう構成されたロード・ストア・ユニット（ＬＳＵ）２２を備えていることを特徴としている。なお、ロード・ストア・ユニット２２を除くその他の部分は、従来のマイクロプロセッサ８が備える構成と同様であるため、図８のマイクロプロセッサ８と同一の記号を付して説明を省略する。
【００３３】
図２は、マイクロプロセッサ１が備えるＬＳＵ２２の構成を示す図である。ＬＳＵ２２は、退避レジスタ１０６及び退避レジスタ監視部１０５を備えている。非整列命令判定部１０４が非整列ロード命令の発行を判定すると、Ｔｏｐレジスタ１０３にセットされたマージ用データを退避レジスタ１０６に格納する。
【００３４】
退避レジスタ１０６が使用中である時にＬＳＵ２２に対して新たな非整列ロード命令が発行されると、パイプラインストールが生じることになる。したがって、退避レジスタ監視部１０５は、退避レジスタ１０６の使用状態を監視し、退避レジスタ１０６が使用中である場合、新たな非整列ロード命令の発行を停止するよう命令デコード部１３、リザベーションステーション１８にビジー信号を出力する。退避レジスタ１０６に新たなマージ用データの格納が可能になると、ビジー信号の出力を解除する。
【００３５】
データマージ部１１０は、非整列ロード命令の場合、データキャッシュ２３からのリターンデータと退避レジスタ１０６に格納されたマージ用データをマージし、マージ後のデータをレジスタファイル１４のロード先レジスタに格納する。非整列ロード命令を除く通常のロード命令の場合は、データキャッシュ２３からのリターンデータをレジスタファイル１４に格納する。
【００３６】
続いてマイクロプロセッサ１のロード命令処理手順を図３のフローチャートを用いて説明する。まず、ビジー信号がなければ、命令デコード部１３、リザベーションステーション１８から、ＬＳＵ２２に対してロード命令が発行される（ステップＳ１０１、Ｓ１０２）。ステップＳ１０３では、非整列命令判定部１４が発行された命令が非整列ロード命令であるか否かを判定し、非整列ロード命令でなければ、従来のマイクロプロセッサと同様に通常のロード命令を実行する（ステップＳ１０４）。一方、非整列ロード命令であった場合は、Ｔｏｐレジスタにセットされたマージ用データを退避レジスタ１０６に格納する（ステップＳ１０５）。退避レジスタ監視部１０５は、退避レジスタ１０６が空き領域があれば、Ｓ１０１に戻り新たな命令を受け付ける（ステップＳ１０６）。
【００３７】
退避レジスタ１０６が空き領域がなく、新たにマージ用データを格納できない状態になると、退避レジスタ監視部１０５は、ビジー信号を出力する（ステップＳ１０６、Ｓ１０７）。その後、データキャッシュ２３からデータを取得できた場合、ビジー信号の出力が解除される（ステップＳ１０８、Ｓ１０９）。また、データマージ部１１０は、退避レジスタ１０６に格納されたマージ用データとデータキャッシュ２３からのリターンデータをマージして、レジスタファイル１４に格納する。
【００３８】
以上に述べたように、本実施の形態にかかるマイクロプロセッサ１では、非整列ロード命令でのデータマージに使用するマージ用データは退避レジスタ１０６に格納される。このため非整列ロード命令の実行時に、当該非整列ロード命令と後続のロード・ストア命令との間でＴｏｐレジスタ１０３の資源競合を生じることがない。これにより、非整列ロード命令の実行時に、パイプラインストールを生じることなく後続命令を継続して実行できる。
【００３９】
マイクロプロセッサ１におけるパイプライン処理を図４に示す。図４（ａ）は従来のマイクロプロセッサ８のパイプライン処理であり、図４（ｂ）が本実施の形態にかかるマイクロプロセッサ１のパイプライン処理である。ここで、図のＩＦは、命令フェッチステージ、ＲＦはオペランドレジスタのフェッチを含む命令デコードステージ、ＥＸは実行ステージを示している。また、ＤＣはデータキャッシュへのアクセスを行うステージであり、ＷＢはデータキャッシュからのリターンデータをレジスタファイル１４に格納するライトバックを行うステージである。
【００４０】
図４（ａ）に示すように、従来のマイクロプロセッサ８では、ＬＷＬ命令１においてキャッシュミスがあると、データキャッシュ２３ではなくメインメモリ２４からデータを取得しなければならない。図のＭＥＭステージは、メインメモリからデータを取得するステージを示している。従来のマイクロプロセッサ８では、非整列ロード命令にキャッシュミスがあると、通常のロード命令を含む全てのロード命令が発行できない状態となる。このため、図４（ａ）の場合には、ＬＷＬ命令１に続く通常のロード命令（ＬＷ命令１）及びＬＷＬ命令２にパイプラインストールが生じてしまう。
【００４１】
これに対して、本実施の形態にかかるマイクロプロセッサ１であれば、ＬＷＬ命令１においてキャッシュミスがあっても、後続のＬＷ命令１にストールは生じない。なお、退避レジスタ１０６が１命令分のマージ用データを退避できる構成である場合は、後続の非整列ロード命令であるＬＷＬ命令２にはストールが生じることになる。
【００４２】
このように、退避レジスタ１０６は、少なくとも１命令分のマージ用データを格納可能な構成とすることにより、通常のロード命令に対するパイプラインストールの発生を回避することができる。なお、退避レジスタ１０６に複数命令分のマージ用データを退避可能とすれば、複数の非整列ロード命令が連続して発行される場合であっても、パイプラインストールの発生を回避することが可能である。この場合は、マージ用データを退避レジスタ１０６に格納する際に、非整列ロード命令を識別する命令ＩＤと対応付けて格納するとよい。
【００４３】
発明の実施の形態２．
本実施の形態にかかるマイクロプロセッサと前述したマイクロプロセッサ１との差分は、マージ用データを格納する退避用レジスタに、少なくともフェッチキュー１０９に退避可能な命令数分のマージ用データを退避可能とした点である。
【００４４】
本実施の形態のマイクロプロセッサが備えるＬＳＵ３２の構成を図５に示す。なお、ＬＳＵ３２を除くその他の部分は発明の実施の形態１のマイクロプロセッサ１と同様であるため、図面及び詳細な説明を省略する。
【００４５】
ＬＳＵ３２が備える退避用レジスタ２０６は、キャッシュミスのあった命令を退避するフェッチキュー１０９の退避可能数と同数のマージ用データを格納できるものである。図５では４命令分としている。
【００４６】
このような構成によって、フェッチキューに退避可能な命令数と同数の非整列ロード命令が連続した場合にも、退避用レジスタ２０６にマージ用データを退避することができる。例えば、フェッチキューに対比可能な命令数が４命令であれば、図６に示すように、４つの非整列ロード命令が連続しても、パイプラインストールを生じることなく実行可能である。このように、本実施の形態にかかるマイクロプロセッサは、非整列ロード命令を通常のロード命令と同様のサイクルで実行することができる。
【００４７】
また、本実施の形態では、ロード命令によるパイプラインストールが生じる要因は、フェッチキュー１０９に退避可能な命令数を超えて非整列ロード命令が発行された場合であり、非整列ロード命令の連続が固有のストール要因となることはない。したがって、図５に示したＬＳＵ３２では、フェッチキュー１０９の状態監視によりビジー信号の出力及び出力解除を行えばよく、退避レジスタ２０６に特有の状態監視は不要となる。このため、ＬＳＵ３２では、発明の実施の形態１のＬＳＵ２２が備えていた退避レジスタ監視部１０５を省略することができる。これにより、制御回路の構成を簡素化でき、マイクロプロセッサ設計を容易に行うことが可能となる。
【００４８】
なお、退避レジスタ２０６には、フェッチキューに格納された命令を識別するＦｔｑＩＤ及び命令ＩＤに対応付けて保存することとしてもよい。さらに、退避レジスタ２０６とフェッチキュー１０９を統合して、ＦｔｑＩＤ、命令ＩＤ及びマージ用データを対応付けて格納することしてもよい。これにより、従来から用いられているフェッチキュー１０９の拡張によって退避レジスタ２０６を容易に構成することができる。また、退避レジスタ２０６の配置に必要なマイクロプロセッサ上の領域を節約することができる。
【図面の簡単な説明】
【００４９】
【図１】本発明にかかるマイクロプロセッサの構成図である。
【図２】本発明にかかるマイクロプロセッサの構成図である。
【図３】本発明にかかるマイクロプロセッサのロード命令の処理手順を示すフローチャートである。
【図４】本発明にかかるマイクロプロセッサにおけるパイプライン処理を説明する図である。
【図５】本発明にかかるマイクロプロセッサの構成図である。
【図６】本発明にかかるマイクロプロセッサにおけるパイプライン処理を説明する図である。
【図７】非整列ロード命令を説明するための図である。
【図８】従来のマイクロプロセッサの構成図である。
【図９】従来のマイクロプロセッサの構成図である。
【符号の説明】
【００５０】
１  マイクロプロセッサ
１１  命令キャッシュ
１２  命令フェッチ部
１３  命令デコード部
１４  レジスタファイル
１５〜１８  リザベーションステーション
１９  分岐ユニット
２０  整数演算ユニット
２１  浮動小数点演算ユニット
２２  ロード・ストア・ユニット（ＬＳＵ）
２３  データキャッシュ
２４  メインメモリ
１０１  Ｓｏｐレジスタ
１０２  オフセットレジスタ
１０３  Ｔｏｐレジスタ
１０４  非整列命令判定部
１０５  退避レジスタ監視部
１０６、２０６  退避レジスタ
１０７  アドレス生成部
１０８  キャッシュ制御部
１０９  フェッチキュー
１１０  データマージ部
【図１】
2006318051.tif 000003
【図２】
2006318051.tif 000004
【図３】
2006318051.tif 000005
【図４】
2006318051.tif 000006
【図５】
2006318051.tif 000007
【図６】
2006318051.tif 000008
【図７】
2006318051.tif 000009
【図８】
2006318051.tif 000010
【図９】
2006318051.tif 000011