(57)【要約】      （修正有）【課題】キャッシュアクセスのパイプライン化に伴う性能低下を排除する。【解決手段】命令を取得するための命令フェッチ部と、命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部とを含んでデータ処理装置を構成する。このとき、上記命令実行部は、演算実行のために複数ステージにパイプライン化された演算パイプライン１０４と、演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて演算器による演算を配置するステージを変更可能な演算パイプライン制御部とを含む。ライトセレクタ３０４は、ＡＬＵ配置ステージの移動を実現するために設けられた。【選択図】図５
2007041999.tif 000002
【特許請求の範囲】
【請求項１】
命令を取得するための命令フェッチ部と、
上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部と、を含むデータ処理装置であって、
上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、
上記演算パイプラインでの上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、上記演算器による演算を配置するステージを変更可能な演算パイプライン制御部と、を含んで成ることを特徴とするデータ処理装置。
【請求項２】
命令を取得するための命令フェッチ部と、
上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部と、を含むデータ処理装置であって、
上記命令には、データのロードを指示するロード命令が含まれ、
上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、
上記ロード命令の実行によりロードされたデータが上記演算器による演算で利用されるポイントを、上記演算パイプラインにおいて上記データが確定するまでの待ちサイクル数に応じて変更可能な演算パイプライン制御部と、を含んで成ることを特徴とするデータ処理装置。
【請求項３】
上記演算パイプライン制御部は、上記演算パイプラインでの上記演算命令の実行に必要なデータとしてデータキャッシュのアクセス結果を取り込む請求項１又は２記載のデータ処理装置。
【請求項４】
上記演算パイプライン制御部は、上記データが確定するまでの待ちサイクル数が最小となるステージに上記演算器による演算を配置するものである請求項３記載のデータ処理装置。
【請求項５】
上記演算パイプライン制御部は、上記演算器による演算を配置しようとするステージが他の演算命令の実行によって使用される場合、さらに後のステージに上記演算器による演算を配置するものである請求項３記載のデータ処理装置。
【請求項６】
上記データキャッシュのアクセス結果を用いる演算命令の実行に必要なサイクル数は、上記演算命令より以前に実行された命令に依存して変化される請求項３記載のデータ処理装置。
【請求項７】
上記演算パイプラインは、それぞれ上記演算器での演算結果を保持可能な複数のステージ間レジスタと、
上記複数のステージ間レジスタの出力を選択可能なセレクタと、を含み、上記セレクタによる上記ステージ間レジスタの出力選択により、上記演算器による演算の配置ステージの変更を可能とする請求項３記載のデータ処理装置。
【請求項８】
上記演算パイプライン制御部は、レジスタ書き込みの有効性を示す信号と、上記演算器による演算の配置ステージの情報とを保持可能な第１パイプラインと、
上記命令によって書き込まれるレジスタ番号を保持可能な第２パイプラインと、
上記命令によって読み出されるレジスタ番号を保持可能な第３パイプラインと、
上記第１パイプラインの出力に基づいて上記第３パイプラインの出力を選択的に上記演算パイプラインに供給するための読み出しレジスタ番号生成回路と、を含んで成る請求項３記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン方式を採用したデータ処理装置に関し、例えばマイクロマイクロプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
データ処理装置の一例とされるマイクロプロセッサの動作周波数は、一般的にキャッシュアクセスの遅延によって決定される。キャッシュアクセスの遅延は、その多くが配線遅延であるため、半導体製造プロセスを微細化してもあまり減少しない。マイクロプロセッサの動作周波数向上には、キャッシュアクセスのパイプライン化が有効とされる（例えば特許文献１（図１０、図１１）などを参照）。
【０００３】
しかしキャッシュアクセスをパイプライン化すると、アクセス結果が得られるまでのサイクル数が増え、ロード結果の確定が遅くなる。一般的なプログラムでは、キャッシュアクセスのためのロード命令の結果を演算命令の入力として使うことが多い。そのため、キャッシュアクセスのパイプライン化によりロード結果の確定が遅れると、演算命令の実行に必要なデータの入力が確定するまでの待ちサイクル数が増え、その結果としてプログラムの実行に必要なサイクル数が増えてしまう。
【０００４】
このようにマイクロプロセッサの高周波数化のためにキャッシュアクセスをパイプライン化すると、演算命令の実行に必要なサイクル数が増え、高周波数化に見合う性能が得られない。高周波数化に見合う性能が得られるようにするには、キャッシュアクセスのパイプライン化でロード結果の確定が遅れても、演算命令の実行サイクル数が増えないようにする手段が必要である。
【０００５】
この対策として広く用いられる手法にアウトオブオーダ方式がある（例えば特許文献２（第２段落から第８段落）などを参照）。アウトオブオーダ方式では、後で実行される命令列を先行取得しておき、それらの命令列から実行中のロード命令の結果を利用しない命令を探し出して実行する。基本的には、命令依存、オペランド依存が発生した場合にはその依存関係が解決するまで命令実行が保留され、依存関係がない命令が、コードの記述順序を飛び越えて先行実行される。
【０００６】
しかしながら上記アウトオブオーダ方式では、命令がコードの記述順序を飛び越えて先行実行される場合があため、メモリアクセス順序などを保障する機構が必要となり、命令列の先行取得や実行命令の探索、メモリアクセス順序の保障などといった多くの付加機構が必要となるため、この方式を低価格なマイクロプロセッサに適用するのは製造コスト的に困難とされる。
【０００７】
アウトオブオーダ方式に代わる手法として、ディレイドＡＬＵ方式が知られている（例えば非特許文献１参照）。この方式は、演算命令の実行開始をロード命令の実行開始より、１サイクル後とする技術である。それによれば、演算を行うＡＬＵ（算術論理演算ユニット）による演算をキャッシュアクセスの開始ステージに配置するため、ＡＬＵの入力読み出しを１サイクル遅らせることが可能になり、キャッシュアクセスの結果を演算命令の入力に使う際の待ちサイクル数が１サイクル減少する。
【０００８】
【特許文献１】特開平０５−３１３８９３号公報
【特許文献２】特開２００１−２３６２２２号公報
【非特許文献１】M.Ozawa et al., "Pipeline Structure of SH-X Core for Achieving High Performance and Low Power", In Proc of COOL Chips VII, pp. 239-254, Apr 2004.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記のようにディレイドＡＬＵ方式では、ＡＬＵによる演算をキャッシュアクセスの開始ステージに配置するため、ＡＬＵの入力読み出しを１サイクル遅らせることが可能になり、キャッシュアクセスの結果を演算命令の入力に使う際の待ちサイクル数が１サイクル減少する。
【００１０】
しかしながら、ディレイドＡＬＵ方式について本願発明者が検討したところ、演算結果がアドレスとして用いられる場合には、ディレイドＡＬＵ方式を実施すると、演算命令の結果をアドレスとしてキャッシュをアクセスする際の性能が低下する。これは、ディレイドＡＬＵによってＡＬＵの演算が１サイクル遅れてしまうことに起因する。従って、キャッシュアクセスのパイプライン化に伴う性能低下を排除するには、ディレイドＡＬＵ方式によって生じた性能の低下を抑制する手法が必要とされる。
【００１１】
本発明の目的は、キャッシュアクセスのパイプライン化に伴う性能低下を排除することにある。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１４】
〔１〕命令を取得するための命令フェッチ部と、上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部とを含んでデータ処理装置が構成されるとき、上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、上記演算器による演算を配置するパイプラインステージを変更可能な演算パイプライン制御部と、を含んで成る。
【００１５】
上記の手段によれば、演算パイプライン制御部は、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、演算器による演算を配置するパイプラインステージを変更することにより、キャッシュアクセスのパイプライン化により増加した入力確定待ちサイクル数を削減することができる。このことが、キャッシュアクセスのパイプライン化に伴う性能低下の排除を達成する。
【００１６】
〔２〕命令を取得するための命令フェッチ部と、上記命令フェッチ部によって取得された命令をパイプライン処理によって実行する命令実行部とを含んでデータ処理装置が構成されるとき、上記命令には、データのロードを指示するロード命令が含まれ、上記命令実行部は、演算命令の演算機能を実現する演算器を備え、演算実行のために複数ステージにパイプライン化された演算パイプラインと、上記ロード命令の実行によりロードされたデータが上記演算器による演算で利用されるポイントを、上記演算パイプラインにおいて上記データが確定するまでの待ちサイクル数に応じて変更可能な演算パイプライン制御部とを含んで成る。
【００１７】
上記の手段によれば、演算パイプライン制御部は、ロード命令の実行によりロードされたデータが上記演算器による演算で利用されるポイントを、上記データが確定するまでの待ちサイクル数に応じて変更することができ、それにより、キャッシュアクセスのパイプライン化により増加した入力確定待ちサイクル数を削減することができる。このことが、キャッシュアクセスのパイプライン化に伴う性能低下の排除を達成する。
【００１８】
〔３〕上記〔１〕及び〔２〕において、上記演算パイプライン制御部は、上記演算パイプラインでの上記演算命令の実行に必要なデータとしてデータキャッシュのアクセス結果を取り込むように構成する。
【００１９】
〔４〕上記〔３〕において、上記演算パイプライン制御部は、上記データが確定するまでの待ちサイクル数が最小となるステージに上記演算器による演算を配置する。
【００２０】
〔５〕上記〔３〕において、上記演算パイプライン制御部は、上記演算器による演算を配置しようとするステージが他の演算命令の実行によって使用される場合、さらに後のステージに上記演算器による演算を配置することによって、演算配置ステージの競合を回避することができる。
【００２１】
〔６〕上記〔３〕において、上記データキャッシュのアクセス結果を用いる演算命令の実行に必要なサイクル数は、上記演算命令より以前に実行された命令に依存して変化される。
【００２２】
〔７〕上記〔３〕において上記演算パイプラインは、上記演算器での演算結果を保持可能な複数のステージ間レジスタと、上記複数のステージ間レジスタの出力を選択可能なセレクタとを含んで構成することができる。上記セレクタによる上記ステージ間レジスタの出力選択により、上記演算器による演算の配置ステージを変更することができる。
【００２３】
〔８〕上記〔３〕において上記演算パイプライン制御部は、レジスタ書き込みの有効性を示す信号と演算器による演算の配置ステージの情報とを保持可能な第１パイプラインと、上記命令によって書き込まれるレジスタ番号を保持可能な第２パイプラインと、上記命令によって読み出されるレジスタ番号を保持可能な第３パイプラインと、上記第１パイプラインの出力に基づいて上記第３パイプラインの出力を選択的に上記演算パイプラインに供給するための読み出しレジスタ番号生成回路とを含んで構成することができる。
【発明の効果】
【００２４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２５】
すなわち、ＡＬＵの演算を行うステージを動的に変更可能とすることにより、キャッシュアクセスのパイプライン化に伴う性能低下を排除することができる。
【発明を実施するための最良の形態】
【００２６】
図１には、本発明にかかるデータ処理装置の一例であるマイクロプロセッサが示される。
【００２７】
図１に示されるマイクロプロセッサ１０は、特に制限されないが、ロード命令と演算命令の実行をパイプラインで行うものとされ、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
【００２８】
図１に示されるマイクロプロセッサ１０は、特に制限されないが、図示されないメインメモリを含むコンピュータシステムに適用され、メインメモリとの間のデータ転送を制御するメモリコントローラ２０、実行すべき命令を取得するための命令フェッチ部４０、命令フェッチ部４０によってが取得された命令の演算実行をＤ、Ｅ、Ｍ１、Ｍ２、Ｓの５ステージのパイプラインで行う命令実行部５０とが、システムバス３０を介して互いに信号のやり取りが可能なように結合される。また、上記命令フェッチ部４０と上記命令実行部５０との間では、命令、命令ＶＡＬＩＤ信号、ＳＴＡＬＬ信号のやり取りが行われる。
【００２９】
図２には、上記命令実行部５０の構成例が示される。
【００３０】
命令実行部５０は、特に制限されないが、ロード命令を実行するメモリパイプライン１０１と、その制御を行うメモリパイプライン制御部１０２、演算命令を実行する演算パイプライン１０３とその制御を行う演算パイプライン制御部１０４から構成される。実行する命令は、命令フェッチ部４０から、その種別に応じてメモリパイプライン制御部１０２及び演算パイプライン制御部１０３に供給される。例えばロード命令はロードパイプライン制御部１０２に供給され、演算命令は演算パイプライン制御部１０３に供給される。命令には、当該命令が有効である際に、論理値“１”となる命令ＶＡＬＩＤ信号が付加される。逆に、メモリパイプライン制御部１０２及び演算パイプライン制御部１０３からは、命令実行を待たせたい場合に論理値“１”となるＳＴＡＬＬ信号が出力される。図１に示される命令フェッチ部４０は、ＳＴＡＬＬ信号が論理値“１”である間、同じ命令を出力し続ける。メモリパイプライン制御部１０２及び演算パイプライン制御部１０３がＳＴＡＬＬ信号を論理値“１”とする例として、命令によって読み出されるレジスタの値が利用できるまで待つ場合が挙げられる。メモリパイプライン１０１及び演算パイプライン１０４は、それぞれメモリパイプライン制御部１０２及び演算パイプライン制御部１０３から出力される制御信号の取り込みを可能とする。メモリパイプライン制御部１０２と、演算パイプライン制御部１０３との間では、それぞれ実行中の命令に関する情報を示す各種信号（Ａ−Ｅ−ＷＥ，Ａ−Ｅ−ＲＤ，Ａ−Ｅ−ＡＬＵ，Ａ−Ｍ１−ＷＥ，Ａ−Ｍ１−ＲＤ，Ａ−Ｍ１−ＡＬＵ、Ｍ−Ｅ−ＷＥ，Ｍ−Ｅ−ＲＤ，Ｍ−Ｍ１−ＷＥ，Ｍ−Ｍ１−ＲＤ）のやり取りが可能とされる。メモリパイプライン１０１は、実行した命令でキャッシュミスが発生した場合、システムバス３０との間で必要なデータ転送を行う。尚、本例では、ロード命令と演算命令との同時入力は想定しない。
【００３１】
図３には、上記メモリパイプライン１０１の構成例が示される。
【００３２】
上記メモリパイプライン１０１は、特に制限されないが、図３に示されるように、レジスタ読み出し回路（ＲＥＧＩＳＴＥＲ  ＲＥＡＤ）２０１、ステージ間レジスタ２０２Ａ，２０２Ｂ，２０２Ｃ，２０２Ｄ、データキャッシュ（ＰＩＰＥＬＩＮＥＤ  ＤＡＴＡ  ＣＡＣＨＥ）２０４，２０５、レジスタ書き込み回路（ＲＥＧＩＳＴＥＲ  ＷＲＩＴＥ）２０６を含んで成る。
【００３３】
レジスタ読み出し回路２０１は、図示されないレジスタの読み出しを行う。アドレス生成回路２０３は、上記レジスタの読み出し結果を用いてロード先アドレスを生成する。生成されたアドレスは、後述するようにＭ１とＭ２の２ステージにパイプライン化されたデータキャッシュ２０４、２０５に与えられて、読み出しが行われ、その読み出し結果がレジスタ書き込み回路２０６によりレジスタに書き込まれる。上記レジスタ読み出し回路２０１と上記アドレス生成回路２０３との間にはステージ間レジスタ２０２Ａが介在され、上記アドレス生成回路２０３と上記データキャッシュ２０４との間にはステージ間レジスタ２０２Ｂが介在され、上記データキャッシュ２０４，２０５との間にはステージ間レジスタ２０２Ｃが介在され、上記データキャッシュ２０５と上記レジスタ書き込み回路２０６との間にはステージ間レジスタ２０２Ｄが介在される。メモリパイプライン１０１の制御信号には、読み出しレジスタを指定するＲＳ信号及びＲＴ信号、書き込みレジスタを指定するＲＤ信号、レジスタへ書き込む際に論理値“１”となるＷＥ信号が含まれ、それらはメモリパイプライン制御部１０２から供給される。尚、上記レジスタ読み出し回路２０１は、一般的なレジスタフォワーディング機能を有する。
【００３４】
図４には、上記メモリパイプライン１０１でロード命令が実行される際の動作が示される。
【００３５】
先ず、Ｄステージにおいて、レジスタ読み出し回路２０１によりアドレス生成用のレジスタの読み出しが行われ、Ｅステージにおいて、アドレス生成回路２０３によりアドレスが生成される。その後、Ｍ１ステージとＭ２ステージにおいて、データキャッシュのアクセスが行われ、Ｓステージにおいてレジスタ書き込み回路２０６によりロード結果の書き込みが行われる。このようにロード命令の結果としてレジスタに書き込まれる値はＭ２ステージで確定する。そのため、ロード結果が書き込まれたレジスタの値を読み出すには、ロード命令のＭ２ステージ以後にレジスタ読み出しを行えば良い。
【００３６】
図５には、上記演算パイプライン１０４の構成例が示される。
【００３７】
上記演算パイプライン１０４は、特に制限されないが、図５に示されるようにレジスタ読み出し回路（ＲＥＧＩＳＴＥＲ  ＲＥＡＤ）３０１、ステージ間レジスタ３０２Ａ，３０２Ｂ，３０２Ｃ，３０２Ｄ、ＡＬＵ３０３、ライトセレクタ３０４、レジスタ書き込み回路（ＲＥＧＩＳＴＥＲ  ＷＲＩＴＥ）３０５を含んで成る。ここで、上記ＡＬＵ３０３は、本発明における演算器の一例とされる。
【００３８】
レジスタ読み出し回路３０１は、図示されないレジスタの読み出しを行う。ＡＬＵ３０３は、上記レジスタ読み出し回路３０１で読み出されたデータを用いて演算処理を行う。このＡＬＵ３０３での演算結果は、レジスタ書き込み回路３０５によって図示されないレジスタに書き込まれるが、書き込む値はライトセレクタ３０４により選択される。ライトセレクタ３０４は、ＡＬＵ配置ステージの移動を実現するために設けられたものであり、レジスタに書き込む値として、ステージ間レジスタ３０２Ｂの出力、ステージ間レジスタ３０２Ｃの出力、ステージ間レジスタ３０２Ｄの出力の３通りから選択する。演算パイプライン１０４の制御信号には、読み出しレジスタを指定するＲＳ信号及びＲＴ信号、書き込みレジスタを指定するＲＤ信号、レジスタへ書き込む際に論理値“１”となるＷＥ信号、ライトセレクタ３０４の選択動作を制御するためのＷＳＥＬ信号が含まれ、それらは演算パイプライン制御部１０３から供給される。尚、上記レジスタ読み出し回路２０１は、一般的なレジスタフォワーディング機能を有する。
【００３９】
図６には、上記演算パイプライン１０４で演算命令が実行される際の動作例が示される。
【００４０】
演算パイプライン１０４では、ライトセレクタ３０４（図５参照）を制御することで、その動作が図６（ａ），（ｂ），（ｃ）に示されるように３通りに変化される。
【００４１】
図６（ａ）には、ライトセレクタ３０４によってステージ間レジスタ３０２Ｄの出力が選択された場合の動作が示される。
【００４２】
Ｄステージにおいてレジスタ読み出し回路３０１により図示されないレジスタの読み出しが行われ、Ｅステージにおいて、ＡＬＵ３０３での演算が行われ、Ｍ１ステージとＭ２ステージにおいて、上記演算結果がそのまま転送され、Ｓステージにおいて、レジスタ書き込み回路３０５により、図示されないレジスタへの上記演算結果の書き込みが行われる。
【００４３】
図６（ｂ）には、ライトセレクタ３０４によってステージ間レジスタ３０２Ｃの出力が選択された場合の動作が示される。
【００４４】
Ｄステージにおいては何も行われず、Ｅステージにおいてレジスタの読み出しが行われ、Ｍ１ステージにおいてＡＬＵ３０３の演算が行われ、Ｍ２ステージにおいて上記演算結果がそのまま転送され、Ｓステージにおいて、上記演算結果がレジスタに書き込まれる。
【００４５】
図６（ｃ）には、ライトセレクタ３０４によってステージ間レジスタ３０２Ｂの出力が選択された場合の動作が示される。
【００４６】
ＤステージとＥステージにおいては何も行われず、Ｍ１ステージにおいてレジスタの読み出しが行われ、Ｍ２ステージにおいてＡＬＵ３０３の演算が行われ、Ｓステージにおいてその演算結果の書き込みが行われる。
【００４７】
このように、演算パイプライン１０４では、ライトセレクタ３０４の制御により、ＡＬＵ配置ステージをＥ、Ｍ１、Ｍ２の３通りから選択できる。このため、演算命令の結果としてレジスタに書き込まれる値が確定するステージは、ＡＬＵ配置ステージとなる。演算結果が書き込まれたレジスタを正しく読み出すには、演算命令のＡＬＵ配置ステージ以後にレジスタ読み出しを行えば良い。
【００４８】
図７には、メモリパイプライン制御部１０２の構成例が示される。
【００４９】
メモリパイプライン制御部１０２は、特に制限されないが、図７に示されるように、命令実行待ちの制御とＷＥ信号の生成を行うレジスタ書き込み有効パイプライン４０１と、ロード結果を書き込むためのレジスタ番号を保持する書き込みレジスタ番号パイプライン４０２とを含んで成る。
【００５０】
レジスタ書き込み有効パイプライン４０１は、ＲＳ，ＲＴデコーダ（ＲＳ，ＲＴ  ＤＥＣＯＤＥ）４１１、ストールチェック部（ＳＴＡＬＬ  ＣＨＥＣＫ）４１２、ストール生成アンドゲート４１３、レジスタ書き込み有効生成アンドゲート４１４、及びステージ間レジスタ４１５Ａ，４１５Ｂ，４１５Ｃ，４１５Ｄを含んで成る。このレジスタ書き込み有効パイプライン４０１は、ＤステージにおけるＲＳ，ＲＴデコーダ４１１で命令から読み出されるレジスタの番号ＲＳ，ＲＴを取り出す。このＲＳ，ＲＴは、レジスタ確定待ちの必要性を判定するストールチェック部４１２の入力と、メモリパイプライン１０１への出力信号として用いられる。ストールチェック部４１２では、Ｄステージにおいて、レジスタ番号ＲＳ，ＲＴの値が確定しているか否かが検査され、確定していない場合にＳＴ信号が論理値“１”される。有効な命令に対してＳＴ信号が論理値“１”である場合、命令実行を待つ必要があるので、ストール生成アンドゲート４１３の出力がＳＴＡＬＬ信号とされる。一方、有効な命令に対してＳＴ信号が論理値“０”である場合、命令実行を行うために、Ｓステージでのレジスタ書き込みが必要となる。そこで、レジスタ書き込み有効生成アンドゲート４１４により、レジスタ書き込みを行う際に論理値“１”となるレジスタ書き込み有効信号が生成される。この信号はステージ間レジスタ４１５Ａ〜４１５ＤによりＳステージまで保持された後、ＳステージにおいてＷＥ信号として出力され、ロード結果のレジスタ書き込み制御に使用される。メモリパイプライン１０１では、ロード結果がＭ２ステージまで確定しない。そのため、Ｅ、Ｍ１ステージにある命令によって書き込まれるレジスタの値を読み出すには待ちが必要となる。そこで、この待ちの生成用としてＥ、Ｍ１ステージのレジスタ書き込み有効信号がＭ−Ｅ−ＷＥ、Ｍ−Ｍ１−ＷＥ信号として出力される。
【００５１】
書き込みレジスタ番号パイプライン４０２は、ＲＤデコーダ（ＲＤ  ＤＥＣＯＤＥ）４２１、及びステージ間レジスタ４２２Ａ，４２２Ｂ，４２２Ｃ，４２２Ｄを含んで成る。この書き込みレジスタ番号パイプライン４０２は、ＤステージのＲＤデコーダ４２１で命令からロード結果を書き込むレジスタ番号を取り出す。その後、得られたレジスタ番号をステージ間レジスタ４２２Ａ〜４２２Ｄに書き込まれ、Ｓステージまで保持される。Ｅ、Ｍ１、Ｓステージの書き込みレジスタ番号は、Ｍ−Ｅ−ＲＤ、Ｍ−Ｍ１−ＲＤ、ＲＤ信号によって特定される。
【００５２】
図８には、上記ストールチェック回路４１２の構成例が示される。
【００５３】
ストールチェック回路４１２は、特に制限されないが、図８に示されるように、ストールチェッカー５０１Ａ，５０１Ｂと、その後段に配置されたオアゲート５０２とを含んで成る。レジスタＲＳ，ＲＴそれぞれについて、ストールチェッカー５０１Ａ，５０１Ｂで値の確定待ちの必要性が判定される。ＲＳ，ＲＴのいずれかで値の確定待ちが必要ならば命令実行を待たせることになるので、オアゲート５０２においてストールチェッカー５０１Ａ，５０１Ｂの出力（ｏ）のオア論理がオアゲート５０２で求められ、それがＳＴ信号とされる。
【００５４】
図９には、上記ストールチェッカー５０１Ａ，５０１Ｂの動作例が示される。
【００５５】
基本的な動作は、読み出そうとするレジスタＲｉｎと、メモリパイプラインと演算パイプラインのＥ、Ｍ１ステージで実行中の命令の書き込みレジスタＭ−Ｅ−ＲＤ、Ｍ−Ｍ１−ＲＤ、Ａ−Ｅ−ＲＤ、Ａ−Ｍ１−ＲＤとを比較し、両者が同じ、かつ、レジスタに書き込む値が未確定ならば、出力信号ｏが論理値“１”とされることで、読み出し待ちが必要であることが示される。このような比較は、最新のレジスタ値を得るためのものなので、より最近の命令を実行しているＥステージに関する場合（Ｓ１，Ｓ２）が、Ｍ１ステージに関する場合（Ｓ３，Ｓ４）よりも先に行われる。
【００５６】
メモリパイプライン１０１では、Ｍ２ステージでレジスタに書き込む値のロード結果が確定される（図４参照）。そのため、読み出しレジスタがメモリパイプライン１０１のＥ、Ｍ１ステージの書き込みレジスタと同じ場合に出力信号ｏが論理値“１”とされて、待ちの必要性が示される。
【００５７】
一方、演算パイプライン１０４では、レジスタに書き込む値の演算結果が確定するステージは、Ｅ、Ｍ１、Ｍ２のいずれかである（図６参照）。そのため、読み出し先レジスタが演算パイプライン１０４のＥ、Ｍ１ステージの書き込み先レジスタと同じである際の待ちの必要性は、ＡＬＵ３０３による演算をどのステージに配置したかに応じて変化する。そこで、演算パイプライン制御部１０３から、Ｅ、Ｍ１ステージにある命令のＡＬＵ配置ステージを示すＡ−Ｅ−ＡＬＵ、Ａ−Ｍ１−ＡＬＵ信号を出力し、この信号を用いて待ちの必要性を判定する（Ｓ２，Ｓ４）。すなわち、Ｅステージの書き込み先レジスタが読み出しレジスタと同じ場合、Ｅステージの命令がＡＬＵ３０３による演算をＭ１、Ｍ２ステージのいずれかに置いた場合に待ちが必要であるため、ステップＳ２においてそれについての判定が行われる。また、Ｍ１ステージの書き込み先レジスタが読み出しレジスタと同じ場合、Ｍ１ステージの命令がＡＬＵ３０３による演算をＭ２ステージに置いた場合に待ちが必要であるため、ステップＳ４において、それについての判定が行われる。
【００５８】
図１０には、上記演算パイプライン制御部１０３の構成例が示される。
【００５９】
演算パイプライン制御部１０３は、特に制限されないが、図１０に示されるように、レジスタ書き込みの有効性を示す有効信号とＡＬＵ配置ステージの情報とを保持可能なＡＬＵ位置パイプライン６０１と、命令によって書き込まれるレジスタ番号を保持可能な書き込みレジスタ番号パイプライン６０２と、命令が読み出すレジスタ番号を保持可能な読み出しレジスタ番号パイプライン６０３と、図示されない読み出しレジスタ番号生成回路（後に詳述する）とが含まれる。
【００６０】
上記ＡＬＵ位置パイプライン６０１は、ＲＳ，ＲＴデコーダ６１１、ＡＬＵ配置ステージ判定回路（ＡＬＵＰＯＳ  ＧＥＮ）６１２、ステージ間レジスタ６１３Ａ，６１３Ｂ，６１３Ｃ，６１３Ｄ、及びステージ間レジスタ６１４Ａ，６１４Ｂ，６１４Ｃ，６１４Ｄを含んで成る。
【００６１】
Ｄステージにおいて、ＲＳ，ＲＴデコーダ６１１により、読み出すレジスタの番号ＲＳ，ＲＴが命令から取り出される。ＲＳ，ＲＴはＡＬＵ配置ステージ判定回路６１２へ伝達される。ＡＬＵ配置ステージ判定回路６１２では、レジスタＲＳ，ＲＴの値が確定する時刻から、現在Ｄステージにある演算命令の実行時にＡＬＵ３０３による演算をどのステージへ配置するかを求める。本例の演算パイプライン制御によれば、演算命令の実行に必要なデータが確定するまでの待ちサイクル数が最小となるステージにＡＬＵ３０３による演算を配置することによって読み出しレジスタの確定待ちを排除できるため、ＳＴＡＬＬ信号は論理値“０”に固定されている。この結果、有効な命令は必ず実行され、Ｓステージでのレジスタ書き込みが行われる。そこで、命令ＶＡＬＩＤ信号をそのままレジスタ書き込み有効信号とし、この信号をステージ間レジスタ６１３Ａ〜６１３ＤによりＳステージまで保持する。Ｓステージのレジスタ書き込み有効信号は、ＷＥ信号として出力され、演算結果のレジスタ書き込み制御に用いられる。また、Ｅ、Ｍ１ステージにおけるレジスタ書き込み有効信号は、レジスタ確定待ちの制御用にＡ−Ｅ−ＷＥ、Ａ−Ｍ１−ＷＥ信号として出力される。レジスタ書き込み有効信号と同様、ＡＬＵ配置ステージ判定回路６１２で生成されたＡＬＵ配置もステージ間レジスタ６１４でＳステージまで保持される。本例における演算パイプラインでのＡＬＵ配置の変更は、Ｓステージでライトセレクタを制御することで行われる。そのため、Ｓステージまで保持したＡＬＵ配置をライトセレクタ制御信号ＷＳＥＬとして出力する。レジスタ書き込み有効信号と同様、Ｅ、Ｍ１ステージのＡＬＵ配置もレジスタ確定待ちの制御用にＡ−Ｅ−ＡＬＵ、Ａ−Ｍ１−ＡＬＵ信号として出力される。また、レジスタ読み出しの制御用に、Ｄステージで判定したＡＬＵ配置がＡ−Ｄ−ＡＬＵ信号として出力される。
【００６２】
上記書き込みレジスタ番号パイプライン６０２は、ＲＤデコーダ（ＲＤ  ＤＥＣＯＤＥ）６２１、及びステージ間レジスタ６２２Ａ，６２２Ｂ，６２２Ｃ，６２２Ｄを含む。
【００６３】
ＤステージにおけるＲＤデコーダ６２１により、演算結果を書き込むレジスタ番号が命令から取り出される。その後、得られたレジスタ番号がステージ間レジスタ６２２Ａ，６２２Ｂ，６２２Ｃ，６２２Ｄに順次書き込まれることで、Ｓステージまで保持される。Ｅ、Ｍ１、Ｓステージの書き込みレジスタ番号は、Ａ−Ｅ−ＲＤ、Ａ−Ｍ１−ＲＤ、ＲＤ信号によって特定される。
【００６４】
読み出しレジスタ番号パイプライン６０３は、ＤステージのＲＳ，ＲＴデコーダで取り出した読み出しレジスタ番号ＲＳ，ＲＴをステージ間レジスタ６３１でＭ１ステージまで保持する。Ｄ、Ｅ、Ｍ１ステージの読み出しレジスタ番号は、それぞれＤ−ＲＴＲＳ、Ｅ−ＲＴＲＳ、Ｍ１−ＲＴＲＳとして出力される。
【００６５】
図１１には、上記演算パイプライン制御部１０３に含まれる読み出しレジスタ番号生成回路が示される。
【００６６】
読み出しレジスタ番号生成回路は、特に制限されないが、図１１において６０４で示されるように、読み出しレジスタ選択制御回路（ＲＥＡＤ  ＲＥＧ  ＳＥＬＥＣＴ）７０１と、読み出しレジスタ番号セレクタ７０２とを含んで成る。
【００６７】
本例では、ＡＬＵ３０３による演算がＥ、Ｍ１、Ｍ２ステージのいずれかに配置されるため、それに伴いレジスタ読み出しもＤ、Ｅ、Ｍ１ステージのいずれかに配置される。そのため、読み出されるレジスタ番号のＲＳ，ＲＴをＡＬＵ配置によって切り換える必要がある。そこで、読み出しレジスタ選択制御回路７０１においては、上記ＡＬＵパイプライン６０１におけるＡ−Ｄ−ＡＬＵ、Ａ−Ｅ−ＡＬＵ、Ａ−Ｍ１−ＡＬＵに基づいて、読み出しレジスタ番号セレクタ７０２の動作制御信号が生成される。それに基づいて、読み出しレジスタ番号セレクタ７０２では、上記読み出しレジスタ番号パイプライン６０３におけるＤ−ＲＴＲＳ、Ｅ−ＲＴＲＳ、Ｍ１−ＲＴＲＳの選択が行われる。具体的には、以下のようにＤ−ＲＴＲＳ、Ｅ−ＲＴＲＳ、Ｍ１−ＲＴＲＳの選択が行われる。
【００６８】
すなわち、Ａ−Ｄ−ＡＬＵがステージＥとされる場合、読み出しレジスタ番号セレクタ７０２の端子Ｘ（Ｄ−ＲＴＲＳ）が選択され、Ａ−Ｅ−ＡＬＵがステージＭ１とされる場合、読み出しレジスタ番号セレクタ７０２の端子Ｙ（Ｅ−ＲＴＲＳ）が選択され、Ａ−Ｍ１−ＡＬＵがステージＭ２とされる場合、読み出しレジスタ番号セレクタ７０２の端子Ｚ（Ｍ１−ＲＴＲＳ）が選択され、それ以外の場合は不定とされる。このように演算パイプライン制御部１０３においては、現在レジスタ読み出しを行う演算命令があるステージが求められ、それに基づいて読み出しレジスタ番号セレクタ７０２で読み出しレジスタ番号が選択される。尚、本例には存在しないが、ＡＬＵの演算制御用などの信号が必要な場合は同様の手法で対応できる。
【００６９】
図１２には、上記ＡＬＵ配置ステージ判定回路６１２の構成例が示される。
【００７０】
ＡＬＵ配置ステージ判定回路６１２は、特に制限されないが、図１２に示されるように、ストールサイクル発生回路（ＳＴＡＬＬ  ＣＹＣＬＥ  ＧＥＮ）８０１Ａ，８０１Ｂ、最大値選択回路（ＭＡＸ）８０２、及びＡＬＵマッピング回路（ＡＬＵ  ＭＡＰＰＩＮＧ）８０３を含んで成る。レジスタ読み出しをＤステージで行う場合に必要とされる待ちサイクル数が求められ、この待ちサイクル数に対応するステージ数以上後のステージにＡＬＵ３０３が配置される。ストールサイクル発生回路８０１Ａ，８０１Ｂは、読み出しレジスタＲＳ，ＲＴのそれぞれに対し、Ｄステージで読み出す場合の待ちサイクル数を求める。最大値選択回路８０２は、ＲＳ，ＲＴそれぞれに対して求めた待ちサイクル数の最大値を選択する。ＡＬＵマッピング回路８０３は、生成された待ちサイクル数に基づいてＡＬＵの配置ステージ（Ａ−Ｄ−ＡＬＵ）を求める。
【００７１】
図１３には、ストールサイクル発生回路（ＳＴＡＬＬ  ＣＹＣＬＥ  ＧＥＮ）８０１Ａ，８０１Ｂの動作例が示される。基本的な動作は、図９に示されるストールチェッカー５０１Ａ，５０１Ｂの場合（図９参照）と同様とされるが、必要な待ちサイクル数が出力となる点で異なる。メモリパイプライン１０１の書き込み先レジスタを読み出す際の待ちサイクル数は、書き込みを行う命令がＥステージならば２サイクル、Ｍ１ステージならば１サイクルである（Ｓ１１，Ｓ１３）。しかしながら、演算パイプライン１０４の書き込み先レジスタを読み出す際は、書き込みを行う命令でＡＬＵ３０３による演算がどこに配置されるかによって待ちサイクル数が変化する。書き込みを行う演算命令がＥステージの場合、ＡＬＵ配置がＭ２ステージならば２サイクル待ち、ＡＬＵ配置がＭ１ステージならば１サイクル待ち、ＡＬＵ配置がＥステージならば０サイクル待ちとなる（Ｓ１２）。同様に、書き込みを行う演算命令がＭ１ステージの場合、ＡＬＵ配置がＭ２ステージならば１サイクル待ち、Ｍ１、Ｅステージならば０サイクル待ちとなる（Ｓ１４）。
【００７２】
図１４には、上記ＡＬＵマッピング回路８０３の動作例が示される。
【００７３】
ＡＬＵ配置動作は、演算命令の実行に必要なデータが確定するまでの待ちサイクル数、つまり、演算に必要とされるデータのレジスタ読み出し待ちのサイクル数によって異なる。
【００７４】
先ず、レジスタ読み出し待ちが２サイクル必要な場合（ＳＣ＝２）、Ｍ１ステージ以後でレジスタを読めば待ちが不要となるため、ＡＬＵ３０３による演算をＭ２ステージに配置する（Ａ−Ｄ−ＡＬＵ＝Ｍ２）。
【００７５】
次に、レジスタ読み出し待ちが１サイクル必要な場合（ＳＣ＝１）、Ｅステージ以後でレジスタを読めば待ちが不要となるため、Ｍ１ステージにＡＬＵ３０３による演算を配置できる（Ａ−Ｄ−ＡＬＵ＝Ｅ）。しかしながら、現在Ｅステージにある演算命令のＡＬＵ利用ステージがＭ２であると、２サイクル後に２命令がＡＬＵ３０３を利用してしまう。そこで、Ｅステージにある演算命令のＡＬＵ利用ステージがＭ２の場合は、ＡＬＵ３０３による演算をＭ２ステージに配置（Ａ−Ｄ−ＡＬＵ＝Ｍ２）して不都合を回避する。
【００７６】
そして、レジスタ読み出し待ちが０サイクル必要な場合には（ＳＣ＝０）、Ｄステージでレジスタの値を読み出せるため、ＥステージにＡＬＵ３０３による演算を配置できる（Ａ−Ｄ−ＡＬＵ＝Ｅ）。しかしながら、待ちが１サイクルの場合と同様、現在Ｅステージの演算命令のＡＬＵ配置がＭ１ステージの場合と、現在Ｍ１ステージの演算命令のＡＬＵ配置がＭ２ステージの場合に１サイクル後に複数命令がＡＬＵを利用してしまう。そこで、ＡＬＵ３０３による演算をＭ１ステージに配置（Ａ−Ｄ−ＡＬＵ＝Ｍ１）して不都合を回避する。ところが、現在Ｅステージの演算命令のＡＬＵ配置がＭ２ステージであると、ＡＬＵ３０３による演算をＭ１ステージに配置しても２サイクル後に複数命令がＡＬＵ３０３を利用してしまう。この場合は、ＡＬＵ配置をＭ２ステージ（Ａ−Ｄ−ＡＬＵ＝Ｍ２）として不都合を回避する。
【００７７】
次に、図１５乃至図１７を参照しながら上記命令実行部５０の主要動作を説明する。
【００７８】
図１５には、命令実行部５０において実行される命令が示され、図１６には、各命令を実行する際にＡＬＵ位置などの制御情報が生成される様子が示され、図１７には、図１６に示される制御情報に基づき命令が実行される様子が示される。命令は１、２、３、４、５の順に実行される。
【００７９】
先ず、サイクルＣ０において、演算命令１がＤステージに入力される。この命令が読み出すレジスタＲ０、Ｒ１に書き込む命令はサイクルＣ０に存在しないため、読み出し待ちサイクル数は０となる。また、実行中の命令もサイクルＣ０には存在しないため、ＡＬＵ３０３による演算はＥステージに配置される。
【００８０】
サイクルＣ１でロード命令２がＤステージに入力される。この命令が読み出すレジスタＲ０、Ｒ２に書き込む命令には演算命令１があるが、ＡＬＵ３０３による演算をＥステージに配置しているため、サイクルＣ１でＡＬＵ３０３での演算結果が得られる。そのため、ロード命令２についての待ちは不要である。
【００８１】
サイクルＣ２で演算命令３がＤステージに入力される。この命令が読み出すレジスタＲ０は演算命令１、Ｒ３はロード命令２の書き込み先となっている。Ｒ０の読み出し待ちはＡＬＵ３０３の演算が完了しているため０サイクルだが、Ｒ３の読み出し待ちはロード結果が２サイクル後に得られるため２サイクルとなる。そこで、演算命令３ではＡＬＵ３０３による演算をＭ２ステージに配置する。
【００８２】
サイクルＣ３で演算命令４がＤステージに入力される。この命令が読み出すレジスタＲ１に書き込みを行う実行中の命令は存在しないため、読み出し待ちサイクル数は０であり、ＡＬＵ３０３による演算を１サイクル後のＥステージに配置できる。実行中の命令がＡＬＵ３０３を利用する時刻は、演算命令３のサイクルＣ５以後であり、１サイクル後のサイクルＣ４にＡＬＵ３０３による演算を配置することができる。そこで、演算命令４ではＡＬＵ３０３による演算をＥステージに配置する。
【００８３】
サイクルＣ４で演算命令５がＤステージに入力される。この命令が読み出すレジスタＲ３、Ｒ２に書き込む実行中命令はロード命令２であるが、この命令はこの時刻でＭ２ステージになるため、待ちサイクル数は０であり、ＥステージにＡＬＵ３０３による演算を配置できる。しかしながら、演算命令４はＭ２ステージでＡＬＵ３０３を利用し、この時刻でＭ１ステージになるため、ＥステージにＡＬＵ３０３による演算を配置すると衝突する。そこで、演算命令５では、ＡＬＵ３０３による演算をＭ１ステージに配置して衝突を回避する。このように本例によれば、レジスタ読み出し待ちが不要なため、毎サイクル命令を実行することができ、演算処理の高速化を図ることができる。
【００８４】
上記の例によれば、以下の作用効果を得ることができる。
【００８５】
（１）アウトオブオーダ方式では、命令依存、オペランド依存発生した場合にはその依存関係が解決するまで命令実行が保留され、依存関係がない命令が、コードの記述順序を飛び越えて先行実行されるため、命令の実行順序がコードの記述順序どおりとならず、命令列の先行取得や実行命令の探索、メモリアクセス順序の保障などといった多くの付加機構が必要となることから、この方式を低価格なマイクロプロセッサに適用するのは製造コスト的に困難とされる。
【００８６】
また、ディレイドＡＬＵ方式によれば、演算結果がアドレスの場合には、ディレイドＡＬＵによってＡＬＵの演算が１サイクル遅れてしまうことに起因して、演算命令の結果をアドレスとしてキャッシュをアクセスする際の性能が低下する。
【００８７】
これに対して上記の例によれば、演算命令の入力としてデータキャッシュのアクセス結果を用いる場合に、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数に応じて、上記ＡＬＵ３０３による演算を配置するパイプラインステージを変更可能な演算パイプライン制御部１０３を含んでいるため、演算命令の実行に必要な入力の確定待ちサイクル数が最小となるステージにＡＬＵ３０３による演算を配置することにより、キャッシュアクセスのパイプライン化により増加した入力確定待ちサイクル数を削減することができるので、キャッシュアクセスのパイプライン化に伴う性能低下を排除することができる。また、上記の例においては、上記アウトオブオーダー方式、すなわち、命令依存、オペランド依存発生した場合において、その依存関係が解決するまで命令実行が保留され、依存関係がない命令が、コードの記述順序を飛び越えて先行実行される方式とは異なり、命令列の先行取得や実行命令の探索、メモリアクセス順序の保障などといった多くの付加機構が不要とされので、低価格なマイクロプロセッサに適用することが可能とされる。
【００８８】
（２）演算命令の入力としてデータキャッシュのアクセス結果を用いる場合に、上記演算命令の実行に必要なデータが確定するまでの待ちサイクル数が最小となるステージにＡＬＵ３０３による演算を配置することによって読み出しレジスタの確定待ちを排除できる。具体的には、演算命令の実行前に入力確定までの待ちサイクル数を求め、その待ちサイクル数だけ、後のステージにＡＬＵ３０３による演算を配置するようにする。これにより、演算処理を効率良く行うことができる。待ちサイクル数が大きく、ＡＬＵ３０３による演算を待ちサイクル数だけ後のステージに配置するのが困難とされる場合には、ＡＬＵ３０３による演算を可能な限り後のステージに配置すれば良い。
【００８９】
（３）２ステージ後にＡＬＵ３０３による演算を配置して実行を開始した命令の次のサイクルで１ステージ後にＡＬＵ３０３による演算を配置する命令を実行すると、１サイクル後に２命令がＡＬＵ３０３を利用することが考えられる。このように同一サイクルに複数の命令がＡＬＵ３０３を利用するおそれが有る場合には、ＡＬＵ３０３による演算を配置する際に、ＡＬＵ３０３が利用される時刻を調べ、その時刻にはＡＬＵ３０３による演算を配置しないようにする。具体的には、ＡＬＵ３０３による演算を配置したいステージで他の演算命令がＡＬＵ３０３による演算を利用する場合、さらに後のステージへＡＬＵ３０３による演算を配置すれば良い。ＡＬＵ３０３が利用される時刻は、実行中の各演算命令におけるＡＬＵ３０３による演算の配置ステージの情報から求めることができる。
【００９０】
（４）ステージ間レジスタ３０２Ｂ，３０２Ｃ，３０２Ｄの出力を選択するライトセレクタ３０４を設けることにより、ＡＬＵ配置ステージを、ステージ間レジスタ３０２Ｂの出力、ステージ間レジスタ３０２Ｃの出力、ステージ間レジスタ３０２Ｄの出力の３通りから容易に選択することができる。
【００９１】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００９２】
例えば、キャッシュのパイプライン段数がさらに多い事例がある。この場合、キャッシュのパイプライン段数に応じてＡＬＵ３０３による演算の配置可能な箇所を増加させて対応する。また、他の実施形態として、複数命令を同時実行するスーパースカラへの対応がある。スーパースカラを採用した場合、同一ステージに複数命令が存在するため、レジスタ読み出し待ちを同一ステージにある複数命令間の順序を考慮して実施すればよい。
【００９３】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロプロセッサに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種データ処理装置に広く適用することができる。
【００９４】
本発明は、少なくとも、パイプライン処理を行うことを条件に適用することができる。
【図面の簡単な説明】
【００９５】
【図１】本発明にかかるデータ処理装置の一例とされるマイクロプロセッサの構成例ブロック図である。
【図２】上記マイクロプロセッサに含まれる命令実行部の構成例ブロック図である。
【図３】上記マイクロプロセッサに含まれるメモリパイプラインの構成例ブロック図である。
【図４】上記メモリパイプラインでロード命令が実行される際の動作説明図である。
【図５】上記マイクロプロセッサに含まれる演算パイプラインの構成例ブロック図である。
【図６】上記演算パイプラインで演算命令が実行される際の動作説明図である。
【図７】上記命令実行部に含まれるメモリパイプライン制御部の構成例ブロック図である。
【図８】上記メモリパイプライン制御部に含まれるストールチェック回路の構成例回路図である。
【図９】上記ストールチェック回路における主要部の動作説明図である。
【図１０】上記命令実行部に含まれる演算パイプライン制御部の構成例ブロック図である。
【図１１】上記演算パイプライン制御部に含まれる読み出しレジスタ番号生成回路の構成例回路図である。
【図１２】上記演算パイプライン制御部に含まれるＡＬＵ配置ステージ判定回路の構成例ブロック図である。
【図１３】上記ＡＬＵ配置ステージ判定回路における主要部の動作説明図である。
【図１４】上記ＡＬＵ配置ステージ判定回路における主要部の動作説明図である。
【図１５】上記命令実行部において実行される命令の説明図である。
【図１６】上記命令実行部において命令を実行する際にＡＬＵ位置などの制御情報が生成される様子の説明図である。
【図１７】上記制御情報に基づき命令が実行される様子の説明図である。
【符号の説明】
【００９６】
１０  マイクロプロセッサ
２０  メモリコントローラ
３０  システムバス
４０  命令フェッチ部
５０  命令実行部
１０１  メモリパイプライン
１０２  メモリパイプライン制御部
１０３  演算パイプライン制御部
１０４  演算パイプライン
２０１  レジスタ読み出し部
２０２Ａ，２０２Ｂ，２０２Ｃ，２０２Ｄ  ステージ間レジスタ
２０３  アドレス生成器
２０４、２０５  データキャッシュ
２０６  レジスタ書き込み回路
３０１  レジスタ読み出し回路
３０２Ａ，３０２Ｂ，３０２Ｃ，３０２Ｄ  ステージ間レジスタ
３０３  ＡＬＵ
３０４  ライトセレクタ
３０５  レジスタ書き込み回路
４０１  レジスタ書き込み有効パイプライン
４０２  書き込みレジスタ番号パイプライン
４１１  ＲＳ，ＲＴデコーダ
４１２  ストールチェック部
４１３  ストール生成アンドゲート
４１４  レジスタ書き込み有効生成アンドゲート
４１５  ステージ間レジスタ
４２１  ＲＤデコーダ
４２２  ステージ間レジスタ
５０１Ａ，５０１Ｂ  ストールチェッカー
５０２  オアゲート
６０１  ＡＬＵ位置パイプライン
６０２  書き込みレジスタ番号パイプライン
６０３  読み出しレジスタ番号パイプライン
６１１  ＲＳ，ＲＴデコーダ
６１２  ＡＬＵ配置ステージ判定回路
６１３、６１４  ステージ間レジスタ
６２１  ＲＤデコーダ
６２２  ステージ間レジスタ
６３１  ステージ間レジスタ
７０１  読み出しレジスタ選択制御回路
７０２  読み出しレジスタ番号セレクタ
８０１Ａ，８０１Ｂ  ストールサイクル発生回路
８０２  最大値選択回路
８０３  ＡＬＵマッピング回路
【図１】
2007041999.tif 000003
【図２】
2007041999.tif 000004
【図３】
2007041999.tif 000005
【図４】
2007041999.tif 000006
【図５】
2007041999.tif 000007
【図６】
2007041999.tif 000008
【図７】
2007041999.tif 000009
【図８】
2007041999.tif 000010
【図９】
2007041999.tif 000011
【図１０】
2007041999.tif 000012
【図１１】
2007041999.tif 000013
【図１２】
2007041999.tif 000014
【図１３】
2007041999.tif 000015
【図１４】
2007041999.tif 000016
【図１５】
2007041999.tif 000017
【図１６】
2007041999.tif 000018
【図１７】
2007041999.tif 000019