(57)【要約】【課題】  複数の命令の組合せで表されたメモリ転送ルーチンを検出し、検出したメモリ転送ルーチンをメモリ転送用実行ユニットで実行する。【解決手段】  メモリ転送ルーチン検出回路１２は、命令バッファ１１に格納された命令列の命令コード及びオペランドコードを検査することにより、データキャッシュ２９内でのデータ転送処理を表す命令の組合せを検出する。メモリ転送ルーチン検出回路１２が検出したデータキャッシュ２９内でのデータ転送処理を表す命令群は、メモリ転送ユニット２７に割り当てて実行する。【選択図】  図１
2006313422.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリ内でのデータ転送指示を複数の命令の組合せとして取得する演算処理装置であって、
実行予定の命令列の命令コード及びオペランドコードを検査することにより、前記命令列から前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せを検出するメモリ転送ルーチン検出回路と、
前記キャッシュメモリ内でのデータ転送処理を実行するメモリ転送ユニットとを備え、
前記メモリ転送ルーチン検出回路が検出した前記命令の組合せを前記メモリ転送ユニットに割り当てて実行する演算処理装置。
【請求項２】
前記メモリ転送ルーチン検出回路が検出した前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せは、１つの内部命令に変換されて前記メモリ転送ユニットに発行される請求項１に記載の演算処理装置。
【請求項３】
前記メモリ転送ユニットは、前記内部命令の実行中に例外処理が発生した場合に前記内部命令の実行を中断し、前記命令の組合せ中の中断時の処理に対応する命令の情報を生成する請求項２に記載の演算処理装置。
【請求項４】
前記メモリ転送ユニットは、前記キャッシュメモリのライン幅を単位として前記キャッシュメモリに対するデータの書き込み及び読み出しを行う請求項１に記載の演算処理装置。
【請求項５】
前記メモリ転送ルーチン検出回路は、前記命令列の中に、
（１）ループを構成する命令が存在すること、
（２）前記ループ内に１又は複数のロード命令と前記ロード命令と同数のストア命令とが存在し、前記ロード命令のオペランドにより指定されるロードデータの転送先レジスタと、前記ストア命令のオペランドにより指定されるストアデータの転送元レジスタとが同一であること、
（３）複数の前記ロード命令及び複数の前記ストア命令が存在する場合、複数の前記ロード命令及び複数の前記ストア命令は、それぞれ前記キャッシュメモリの連続するアドレスにアクセスする命令であること、
（４）前記ロード命令のロードアドレスを指定するオペランド及び前記ストア命令のストアアドレスを指定するオペランドに対する加算命令が存在すること、
を検査して、前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せを検出する請求項１に記載の演算処理装置。
【請求項６】
キャッシュメモリ内でのデータ転送処理が複数の命令の組合せで表されている場合のデータ転送処理の実行方法であって、
実行予定の命令列の中に前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せが存在することを検出し、
前記命令の組合せを、前記キャッシュメモリ内でのデータ転送処理用の実行ユニットにおいて実行するデータ転送処理の実行方法。
【請求項７】
前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せの検出は、前記命令列に含まれる命令の命令コード及びオペランドコードを検査することにより行う請求項６に記載のデータ転送処理の実行方法。
【請求項８】
前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せの検出は、前記命令列の中に、
（１）ループを構成する命令が存在すること、
（２）前記ループ内に１又は複数のロード命令と前記ロード命令と同数のストア命令とが存在し、前記ロード命令のロードデータの転送先レジスタと、前記ストア命令のストアデータ転送元レジスタとが同一であること、
（３）複数の前記ロード命令及び複数の前記ストア命令が存在する場合、複数の前記ロード命令及び複数の前記ストア命令は、それぞれ前記キャッシュメモリの連続するアドレスにアクセスする命令であること、
（４）前記ロード命令のロードアドレス及び前記ストア命令のストアアドレスを加算する命令が存在すること、
を判定することにより行う請求項６に記載のデータ転送処理の実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令列からメモリ転送ルーチンを検出し、当該メモリ転送ルーチンをメモリ転送用実行ユニットで処理を行う演算処理装置に関する。
【背景技術】
【０００２】
従来から、並列に動作可能な複数の実行ユニットとアウトオブオーダ実行機能を備えたスーパースカラプロセッサが知られている。スーパースカラプロセッサは、命令間の依存性に基づいて命令を再配列し、依存関係のない命令を並行して実行することにより、プロセッサの処理速度の向上を図るものである。
【０００３】
これらのプロセッサで行われる処理の１つに、データキャッシュ内でのデータ移動を行う処理（以下ではメモリ転送と呼ぶ）がある。メモリ転送は、データキャッシュのデータをレジスタに格納するロード命令と、レジスタのデータをデータキャッシュに書き込むストア命令を繰り返し実行することにより実現される。図７は、ＲＩＳＣ（Reduced Instruction Set Computer）方式の命令セットにおけるメモリ転送を示す命令シーケンスの例を示している。
【０００４】
図７（ａ）の１行目から４行目の命令はロード命令を示している。例えば、１行目の"ｌｗ ｖ０，０（ｔ１）"は、レジスタｔ１の格納値をベースアドレス、アドレスオフセット値を０とし、データキャッシュの（ｔ１＋０）番地から１ワード（３２ビット）のデータをターゲットレジスタｖ０にロードするための命令である。
【０００５】
図７（ａ）の６行目から９行目の命令はストア命令を示している。例えば、６行目の"ｓｗ ｖ０，０（ａ３）"は、レジスタａ３の格納値をベースアドレス、アドレスオフセット値を０とし、ターゲットレジスタｖ０に格納された１ワードのデータをデータキャッシュの（ａ３＋０）番地に格納する命令である。
【０００６】
また、図７（ａ）の１０行目及び１１行目の命令は、データ転送元を示すベースアドレス値であるレジスタｔ１とデータ転送先を示すベースアドレス値であるレジスタａ３をインクリメントし、処理を１ループ分進めるための加算命令である。
【０００７】
最後に、図７（ａ）の５行目の減算命令と１２行目の分岐命令によってループが形成されている。１２行目のｂｎｅｚ命令は、レジスタｔ０の値が０でない場合に１２行前の命令に戻ることを表す分岐命令である。
【０００８】
図７（ａ）のように、メモリ転送命令はロード命令、ストア命令、アドレス加算命令及び分岐命令を含む複数の命令の組み合わせによって表現される。なお、メモリ転送を示す命令ルーチンは、図７（ａ）のルーチン以外にも様々な表現が可能である。例えば図７（ｂ）は、ロード命令及びストア命令の数が図７（ａ）とは異なっているが、図７（ａ）と同じくメモリ転送を表すものである。一般に、メモリ転送がどのような基本命令の組合せで表現されるかは、ソースコードをアセンブリ言語に変換するコンパイラに依存するものである。
【０００９】
このようなメモリ転送処理では、ロード命令及びストア命令を逐次実行する必要があるため、アウトオブオーダ実行による処理速度の向上に適していない。このため、メモリ転送処理を独立した実行ユニットで行うことが、従来から提案されている（例えば特許文献１及び２を参照）。
【００１０】
なお、特許文献１等に開示された従来技術は、ＣＩＳＣ（Complex Instruction Set Computer）方式のプロセッサに関するものである。つまり、ＭＯＶＥ命令等の１つの複合命令としてメモリ転送命令が定義されている場合に、命令デコードステージにおいて複合命令をデコードすると、メモリ転送専用の実行ユニットに当該命令を発行するものである。
【００１１】
一方、ＲＩＳＣ方式のプロセッサの場合、図７に示したように、メモリ転送処理は複数の命令の組合せによって表現される。したがって、特許文献１等のＣＩＳＣ方式のプロセッサと異なり、命令デコードステージにおいて単一のメモリ転送命令を識別することができない。
【特許文献１】特開２００１−１８４２５９号公報
【特許文献２】特開昭５２−１５５９３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述したように、ＲＩＳＣ方式のプロセッサでは、メモリ転送処理が複数の命令の組合せとなっているため、メモリ転送処理を認識し、メモリ転送処理をメモリ転送処理用の実行ユニットに割り当てることが困難であるという課題がある。
【課題を解決するための手段】
【００１３】
本発明にかかる演算処理装置は、キャッシュメモリ内でのデータ転送指示を複数の命令の組合せとして取得する演算処理装置であって、実行予定の命令列の命令コード及びオペランドコードを検査することにより、前記命令列から前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せを検出するメモリ転送ルーチン検出回路と、前記キャッシュメモリ内でのデータ転送処理を実行するメモリ転送ユニットとを備え、前記メモリ転送ルーチン検出回路が検出した前記命令の組合せを前記メモリ転送ユニットに割り当てて実行するものである。
【００１４】
一方、本発明にかかるデータ転送処理の実行方法は、キャッシュメモリ内でのデータ転送処理が複数の命令の組合せで表されている場合のデータ転送処理の実行方法であって、実行予定の命令列の中に前記キャッシュメモリ内でのデータ転送処理を表す命令の組合せが存在することを検出し、前記命令の組合せを、前記キャッシュメモリ内でのデータ転送処理用の実行ユニットにおいて実行するものである。
【００１５】
上述した本発明の演算処理装置及びデータ転送処理の実行方法によれば、命令デコード段階において実行予定の命令の中に複数の命令の組合せで表現されたメモリ転送ルーチンの存在を検出できるため、検出したメモリ転送処理をメモリ転送処理用の実行ユニットに割り当てて実行することができる。
【発明の効果】
【００１６】
本発明により、複数の命令の組合せで表されたメモリ転送ルーチンを検出し、検出したメモリ転送ルーチンをメモリ転送用実行ユニットで実行することが可能な演算処理装置及びデータ転送処理の実行方法を提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。なお、以下に説明する実施の形態は、１クロックサイクル当たり２命令をフェッチしてアウトオブオーダ実行を行うスーパースカラプロセッサに本発明を適用したものである。
【００１８】
本実施の形態にかかるプロセッサ１の構成を図１に示す。命令バッファ１１は、命令キャッシュ（不図示）からフェッチされた命令列が格納されるレジスタである。メモリ転送ルーチン検出回路１２は、命令バッファ１１に格納された命令列からメモリ転送を示す命令ルーチンを検出する回路である。
【００１９】
リネーミング部１３は、レジスタ資源の競合を回避してアウトオブオーダ実行可能な命令を増やすため、命令オペランドによって指定される論理レジスタとレジスタファイル１５の物理レジスタとの動的な対応付けを行う制御部である。また、メモリ転送ルーチン検出回路１２においてメモリ転送ルーチンが検出された場合は、メモリ転送を示す命令群を１つの擬似的な内部命令とし、当該内部命令を単位として物理レジスタの割り当てが行われる。
【００２０】
命令ディスパッチ部１４は、リネーミング後の命令を再配列し、命令の種類に応じてリザベーションステーション１６乃至２１のいずれかに発行する。また、命令ディスパッチ部１４は、命令のオペランドで指定されたレジスタ番号をレジスタファイル１５に与え、レジスタファイル１５から出力されたオペランドレジスタの内容がリザベーションステーション１６乃至２１に格納される。
【００２１】
リザベーションステーション１６乃至２１おいて全てのオペランドが有効になるとメモリ転送ユニット２７を含む各実行ユニットにおいて命令が実行される。メモリ転送ルーチン検出回路１２で変換されたメモリ転送命令は、メモリ転送処理専用のメモリ転送ユニット２７において実行される。
【００２２】
また、エラーＰＣ値生成回路２９は、メモリ転送ユニットにおいてメモリ転送処理を実行している途中で、アドレスエラー、ＴＬＢ（Translation Look-aside Buffer）ミス、割り込み等の例外が発生した場合、例外処理終了後の再開時に必要な実行済み命令のＰＣ（Program Counter）値を生成し、エラーＰＣレジスタ（不図示）に格納する。これによりメモリ転送命令として処理を行っている場合であっても、例外処理の終了後にエラーＰＣ値レジスタを参照することにより、メモリ転送命令としてパックされていた命令のうち未実行の命令に復帰して、正常に再開することができる。
【００２３】
次に、図２及び図３を用いて、メモリ転送ルーチン検出回路１２の構成及び動作を説明する。図２は、メモリ転送ルーチン検出回路１２の構成図を示すものである。メモリ転送ルーチン検出回路１２は、メモリ転送を示す命令群の存在を判定するため、ループ判定部１２１、ロード・ストア命令対判定部１２２、連続アクセス判定部１２３及び加算命令判定部１２４と、これらの判定部による判定結果の論理積を出力するＡＮＤ回路１２５を備えている。ループ判定部１２１は、命令バッファ１１に格納された命令列の中にループ構成が存在するか否かを判定する。具体的には、命令列の命令コード部分をチェックし、ループを構成するための命令の存在を検出することにより行う。例えば、図７（ａ）の命令群であれば、１２行目のｂｎｅｚ命令を検出することによりループ構成の存在を検出することができる。
【００２４】
ロード・ストア命令対判定部１２２は、ターゲットレジスタが共通するロード命令とストア命令のペアがループ内に存在するか否かを判定する。具体的には、命令列の命令コード部分及びターゲットレジスタを示すオペランドをチェックすることにより行う。例えば、図７（ａ）の命令群であれば、１行目のロード命令と６行目のストア命令のようにターゲットレジスタｔ０が共通する命令対の存在を検出する。
【００２５】
連続アクセス判定部１２３は、ロード命令及びストア命令が複数存在する場合に、それらが連続するキャッシュアドレスにアクセスする命令であるか否かを判定する。具体的には、複数のロード命令又はストア命令のオペランドにおいて、ベースアドレスが共通していること、オフセット値が一定幅でインクリメントされていることを検出することにより判定することができる。命令コード部分及びターゲットレジスタを示すオペランドをチェックすることにより行う。例えば、図７（ａ）の命令群であれば、ベースアドレスレジスタが同一（レジスタｔ０又はａ３）であり、オフセット値が４バイト（１ワード）単位でインクリメントされている１〜４行目のロード命令及び６〜９行目ストア命令の存在を検出した場合に判定結果が真となる。
【００２６】
加算命令判定部１２４は、ロード命令及びストア命令のベースアドレスオペランドに対する加算命令が存在し、その加算値がロード命令及びストア命令のデータ幅（例えば１ワード）の整数倍であるか否かを判定する。具体的には、命令列をチェックし、即値加算命令を示す命令コードを有する命令が存在し、当該命令のターゲットレジスタオペランドとソースレジスタオペランドが同一であること、かつ、そのオペランドがロード命令及びストア命令のベースアドレスオペランドと同一であることを検出することによって判定が可能である。例えば、図７（ａ）の命令群であれば、１０行目及び１１行目の加算命令の存在を検出した場合に判定結果が真となる。
【００２７】
上述した判定は、複雑な演算処理を必要とせず、命令コード及びオペランドをチェックすることによって行うことができる。このため判定回路１２１乃至１２４は、簡単な組合せ論理回路により構成することができる。
【００２８】
判定回路１２１乃至１２４の判定結果は、ＡＮＤ回路１２５を介して擬似命令生成回路１２６に入力される。擬似命令生成回路１２６は、判定部１２１乃至１２４の判定結果が全て真であった場合に、メモリ転送ルーチンを示す命令群を１つの擬似的な命令であるメモリ転送命令としてリネーミング部１３に出力する。
【００２９】
メモリ転送命令のオペランドには、メモリ転送元の先頭アドレス値、メモリ転送先の先頭アドレス値、メモリ転送データサイズが指定される。図４は、メモリ転送命令への変換例を示すものである。メモリ転送を示す命令群が変換されたメモリ転送命令のニーモニックは、"ｍｅｍ ａ２，ｔ２，２０４８"等の形式で表される。ここで、オペランドで指定されたレジスタｔ２は転送元の先頭アドレス、レジスタａ２は転送先の先頭アドレスを示し、即値２０４８は、メモリ転送を行うデータサイズを表している。なお、オペランドを拡張し、メモリ転送元の先頭アドレス値、メモリ転送先の先頭アドレス値、１ループ当りの転送データサイズ、ループ回数を指定し、後述するメモリ転送ユニット２７において転送データ全体のデータサイズを求めることとしてもよい。
【００３０】
リネーミング部１３は、メモリ転送ルーチン判定回路１２からメモリ転送命令を受信した場合は、メモリ転送命令に対して物理レジスタの割り当てを行う。
【００３１】
図３は、上述したメモリ転送ルーチン判定回路１２及びリネーミング部１３の処理をフローチャートにより示したものである。まず、ステップＳ１０１では、メモリ転送ルーチン判定回路１２が命令バッファ１１から命令を取得する。メモリ転送ルーチン判定回路１２は、ループが存在するか否か（Ｓ１０２）、ターゲットレジスタが共通するロード命令とストア命令が存在するか否か（Ｓ１０３）、複数のロード命令及びストア命令は、連続するキャッシュアドレスにアクセスするものであるか否か（Ｓ１０４）、ロード命令及びストア命令のベースアドレスに対する加算命令が存在するか否か（Ｓ１０５）を判定する。Ｓ１０２乃至Ｓ１０４の判定を全て満足する場合は、Ｓ１０６において、リネーミング部１３がメモリ転送命令に対するレジスタリネーミングを行う。他方、Ｓ１０２乃至Ｓ１０４の判定のいずれか１つでも満足しない場合、リネーミング部１３は通常の命令としてレジスタリネーミングを行う（Ｓ１０７）。
【００３２】
このように、メモリ転送ルーチン検出回路１２において命令バッファ１１に格納された命令列を静的に監査し、（１）ループを示す分岐命令の存在、（２）ロード・ストア命令対の存在、（３）データキャッシュ２８に対する連続アクセスする命令の存在、（４）次のループのためのベースアドレス加算命令の存在を検出することにより、メモリ転送ルーチンの存在を検出することができる。このような検出処理によって、個別の命令として複数の実行ユニットで独立に実行された命令群をメモリ転送命令として専用の実行ユニットに個別に振り分けることが可能となる。
【００３３】
次に、メモリ転送ユニット２７の処理について詳しく説明する。メモリ転送命令がメモリ転送ユニット２７に対して発行されると、メモリ転送命令は、他の実行ユニットでの処理が介在することなくメモリ転送ユニット２７のみで実行される。したがって、メモリ転送ユニット２７は、汎用レジスタを介して実行ユニット間でデータをやりとりする従来のプロセッサアーキテクチャに制限されることなく、メモリ転送処理を行うことが可能である。
【００３４】
従来のプロセッサにおいてメモリ転送ルーチンを実行する場合は、プロセッサの命令セットアーキテクチャの制約を受けていた。例えばＭＩＰＳ（登録商標）命令セットアーキテクチャでは、プロセッサ内でのデータ処理単位が３２ビット（１ワード）単位又は６４ビット（１ダブル・ワード）単位に制限されている。このため、メモリ転送ルーチンは、１ワード単位で構成された汎用レジスタを用いたロード命令、ストア命令の繰り返しにより実行しなければならない。したがって、キャッシュメモリのライン幅は１２８ビットや２５６ビット等、ロード・ストア命令の処理単位を超えて拡大しているにもかかわらず、依然としてプロセッサ内でのデータ処理単位である１ワード、１ダブル・ワード等の単位でしかロード・ストアを行うことができず、メモリ転送を高速に実行できないという問題があった。
【００３５】
これに対して、本実施の形態のマイクロプロセッサ１は、メモリ転送ルーチンをメモリ転送ユニット２７において一括して実行するため、汎用レジスタのデータ幅の制約を受けることなく、キャッシュメモリ２８のライン幅単位でデータの転送を行うことができる。このため、従来のプロセッサに比べてメモリ転送ルーチンを迅速に実行することができる。これにより、メモリ転送命令と依存性を有する後続命令を迅速に処理することができ、パイプラインストールの発生時間を短縮することができる。
【００３６】
図５は、図７（ａ）に示した一連のメモリ転送ルーチンの処理における従来のプロセッサと本実施の形態にかかるプロセッサ１との比較を示したものである。ここで、フェッチ、リネーム等の各ステージの番号は、図７（ａ）の命令番号を示している。例えば（ａ）従来の処理の時刻Ｔ１のフェッチステージでは、図７（ａ）の１行目及び２行目の２つのロード命令がフェッチされることを示している。
【００３７】
図５（ａ）は、図７（ａ）の２ループ分の処理を表しており、２ループの処理に時刻Ｔ１からＴ２２までの２２サイクルを要することを示している。また、４ワード（１２８ビット）のデータ転送を行う１つのループの実行から完了までには、８〜９サイクルを必要とする。
【００３８】
一方、図５（ｂ）に示したメモリ転送ユニット２７における処理であっても１ループ目の処理は従来のものと同様に行われる。これは、処置開始当初は、メモリ転送ルーチン検出回路１２がメモリ転送ルーチンを検出するために十分な命令が命令バッファ１１に格納されておらず、メモリ転送ルーチン検出回路１２がメモリ転送を検出する前に命令が発行されるためである。しかしながら、メモリ転送ルーチンの２ループ目以降は、メモリ転送ルーチン検出回路１２が命令バッファ１１に格納された命令列からメモリ転送ルーチンを検出できるため、時刻Ｔ８においてメモリ転送命令（ｍｅｍ）がフェッチされる。１ループ目の実行完了を待って時刻Ｔ１５にメモリ転送命令が発行されると、データキャッシュ２８のライン幅単位でのデータ転送を２サイクルごとに完了することができる。つまり、データキャッシュ２８のライン幅が２５６ビット（８ワード）であれば、２サイクルごとに２５６ビットのデータ転送を行うことが可能である。（ａ）従来の処理では、２５６ビットのデータ転送に１６〜１８サイクルを要するのに比べて、メモリ転送ユニット２７による処理は８〜９倍の高速化が可能である。データキャッシュ２８のライン幅を拡張すれば、本発明の処理がさらに優位となる。
【００３９】
続いて以下では、エラーＰＣ値生成回路２９の動作について説明する。図６は、メモリ転送ユニット２７及びエラーＰＣ値生成回路２９の状態遷移図を示している。メモリ転送ユニット２７は、アイドル状態６１、メモリ転送実行状態６２及びエラーＰＣ生成状態６３の間を遷移する。ここで、アイドル状態６１は、メモリ転送命令の発行待ち状態であり、メモリ転送命令が発行されるまで、アイドル状態６１を継続する（Ｓ６１１）。アイドル状態６１においてメモリ転送命令が発行されるとメモリ転送命令実行状態６２に遷移し（Ｓ６１２）、メモリ転送命令を実行する（Ｓ６１３）。メモリ転送ユニット２７は、メモリ転送実行状態６２においてメモリ転送命令が正常に完了すると、再びアイドル状態６１に遷移する（Ｓ６１４）。
【００４０】
一方、メモリ転送実行状態６１においてＴＬＢミス等の例外が発生すると、メモリ転送ユニット２７はエラーＰＣ生成状態６３に遷移する。エラーＰＣ生成状態６３では、エラーＰＣ値生成回路２９が、実行済み命令のＰＣ（Program Counter）値を生成してエラーＰＣレジスタ（不図示）に格納する。エラーＰＣ値の出力が完了すると、メモリ転送ユニット２７はアイドル状態６１に遷移する（Ｓ６１６）。
【００４１】
メモリ転送命令はプロセッサ１の内部で生成された擬似的な命令であるため、例外処理終了後に正常に処理を再開するためには、例外処理による中断時までに完了している元のロード命令等のエラーＰＣ値を、発行元に対して通知する必要がある。本実施の形態のプロセッサ１では、エラーＰＣ値生成回路２９が実行済みの元命令に相当するエラーＰＣ値を生成してエラーＰＣレジスタ（不図示）に格納することにより、例外処理後の復旧動作を正常に行うことができる。
【００４２】
以上に述べたように、本実施の形態のマイクロプロセッサ１は、従来のＲＩＳＣ型命令セットに準じた命令列からメモリ転送処理を示す命令の組合せを識別し、識別したメモリ転送ルーチンを専用の実行ユニットにおいて実行するものである。これにより、プロセッサ１は、既存の命令セットアーキテクチャとの互換性を保ちながら、メモリ転送処理を迅速に処理可能なマイクロアーキテクチャを実現することができる。
【００４３】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、ＴＬＰ（thread-level parallelism）技術によって複数のスレッドをプロセッサ内において同時に実行可能なプロセッサに本発明を適用すれば、メモリ転送ルーチンをメモリ転送ユニットで実行することにより空いた実行ユニットを他のスレッドに割り当てることにより、実行リソースの使用効率をさらに高めることができる。
【図面の簡単な説明】
【００４４】
【図１】本発明にかかるプロセッサの構成図である。
【図２】メモリ転送ルーチン検出回路の構成図である。
【図３】メモリ転送ルーチンの検出処理のフローチャートである。
【図４】メモリ転送命令への変換例を示す図である。
【図５】メモリ転ユニットの処理を説明する図である。
【図６】メモリ転送ユニットの状態遷移図である。
【図７】従来のメモリ転送を示す命令群の一例を示す図である。
【符号の説明】
【００４５】
１  マイクロプロセッサ
１１  命令バッファ
１２  メモリ転送ルーチン検出回路
１３  リネーミング部
１４  命令ディスパッチ部
１５  レジスタファイル
１６〜２１  リザベーションステーション
２２  分岐ユニット
２３  整数演算ユニット
２４  浮動小数点演算ユニット
２５、２６  ロード・ストア・ユニット（ＬＳＵ）
２７  メモリ転送ユニット
２８  データキャッシュ
２９  エラーＰＣ値生成回路
１２１  ループ判定部
１２２  ロード・ストア命令対判定部
１２３  連続アクセス判定部
１２４  加算命令判定部
１２５  ＡＮＤ回路
１２６  擬似命令生成回路
【図１】
2006313422.tif 000003
【図２】
2006313422.tif 000004
【図３】
2006313422.tif 000005
【図４】
2006313422.tif 000006
【図５】
2006313422.tif 000007
【図６】
2006313422.tif 000008
【図７】
2006313422.tif 000009