(57)【特許請求の範囲】
【請求項１】
パイプライン段数がｎ段で機械語命令をパイプライン処理する処理手段と、
前記処理手段の中にあって、ｎ以下のｉ段目の処理結果をｉ以下のｋ段目の入力に転送する第１の転送手段と、
前記処理手段の中にあって、ｎ以下でかつｉより大きいｊ段目の処理結果をｋ段目の入力に転送する第２の転送手段と、
前記処理手段の中にあって、前記第１の転送手段の転送結果と前記第２の転送結果との何れかを選択してｋ段目の入力とする切り替え手段と、
パイプライン処理される命令のｋ段目の入力が、前記命令に先行する命令のパイプライン処理におけるｉ段目で決定される内容を必要とする第１の状態と、前記命令に先行する命令のパイプライン処理におけるｊ段目で決定される内容を必要とする第２の状態とを検出する検出手段と、
所定の条件に応じて、
前記検出手段が前記第１の状態を検出した場合にのみ、前記切り替え手段に対して前記第１の転送結果を選択する第１の指示を与えるか、または、
前記検出手段が前記第１および第２の状態を検出した場合に、前記切り替え手段に対して前記第２の転送結果を選択する第２の指示を与える  選択制御手段とを備え、
前記選択制御手段は、
前記機械語命令の組合せが、前記第１の状態を多く発生させるか、前記第２の状態を多く発生させるかを指定する指定手段を更に備え、
前記指定手段により、
前記第１の状態を多く発生させると指定された場合には、前記切り替え手段に対して前記第１の指示を与え、
前記第２の状態を多く発生させると指定された場合には、前記切り替え手段に対して前記第２の指示を与える
ことを特徴とするデータ処理装置。
【請求項２】
請求項１記載の指定手段は、
その指定内容を示すフラグを保持するフリップフロップ、その指定内容を示すデータを保持するレジスタ、その指定内容を示す論理値を入力する入力端子、その指定内容を示す内部信号の何れかである
ことを特徴とするデータ処理装置。
【請求項３】
請求項１記載の指定手段は、
前記機械語命令の組合せが、前記第１の状態を多く発生させるか、前記第２の状態を多く発生させるかを示す特定命令の解読または実行に基づいて指定される
ことを特徴とするデータ処理装置。
【請求項４】
請求項１ないし３記載の何れかの処理手段は、少なくとも、
１つのパイプライン段数で命令フェッチを行う命令フェッチ部と、
１つのパイプライン段数でフェッチされた命令の解読を行う命令解読部と、
前段部と後段部の２つのパイプライン段数で命令を実行する命令実行部とからなり、
第１の転送手段は、前記命令実行部の前記前段部の実行結果を前記前段部の入力に転送し、
第２の転送手段は、前記命令実行部の前記後段部の実行結果を前記前段部の入力に転送し、
切り替え手段は、前記命令実行部の前記前段部の実行結果と前記後段部の実行結果との何れかを選択して前記前段部の入力とする
ことを特徴とするデータ処理装置。
【請求項５】
キャッシュメモリのアクセスを行う段を含む複数の段からなり、機械語命令をパイプライン処理する処理手段を有するデータ処理装置であって、
前記キャッシュメモリのアクセスを行う段の段数がａ段とａより大きいｂ段とに可変であり、
前記データ処理装置はさらに、  前記キャッシュメモリのアクセスを行う段の段数がａ段，ｂ段の時に処理手段のパイプライン段数をそれぞれｎ段と（ｎ＋ｂ−ａ）段とに切り替える切り替え手段を備えることを特徴とするデータ処理装置。
【請求項６】
請求項５記載の処理手段は、命令フェッチステージ、命令解読ステージ及び命令実行ステージの少なくとも３段のパイプライン段数を持ち、
前記キャッシュメモリは前記命令実行ステージにおいてアクセスされる
ことを特徴とするデータ処理装置。
【請求項７】
前記キャッシュメモリのアクセスの処理内容は、シーケンシャルなｂ個の部分処理に分割可能であり、
前記キャッシュメモリをａ段でアクセスする場合にはｂ個の部分処理のうちの（ｂ−ａ）個を隣合う他のａ個の部分処理と同一の段で処理し、
前記キャッシュメモリをｂ段でアクセスする場合には各部分処理をそれぞれ１段で処理する
ことを特徴とする請求項５または６記載のデータ処理装置。
【請求項８】
前記各段はそれぞれ個別の処理部が実行し、
それら処理部の少なくとも１つは、
前記部分処理を実行する複数の部分処理部と、
部分処理部と次段の部分処理部との間に設けられ、前記キャッシュメモリをａ段でアクセスする場合には当該部分処理結果を透過出力し、前記キャッシュメモリをｂ段でアクセスする場合には当該部分処理結果を保持し次の段に出力する複数の透過保持部とを備える
ことを特徴とする請求項７記載のデータ処理装置。
【請求項９】
前記各透過保持部は、
部分処理部からの部分処理結果を保持するパイプラインラッチと、
前記キャッシュメモリをａ段でアクセスする場合は当該部分処理結果を選択し、前記キャッシュメモリをｂ段でアクセスする場合はパイプラインラッチの出力を選択して次段の部分処理部に出力するセレクタと
を有することを特徴とする請求項８記載のデータ処理装置。
【請求項１０】
前記部分処理の１つにタグメモリ部のアクセスを含み、前記部分処理の他の１つにデータメモリ部のアクセスを含む
ことを特徴とする請求項７から９のいずれかに記載のデータ処理装置。
【請求項１１】
請求項５ないし１０記載の何れかのデータ処理装置は、さらに、
前記キャッシュメモリをａ段でアクセスする場合の前記アクセスの最終段の処理結果を、前記処理手段の予め定めた段の入力に転送する第１の転送手段と、
前記キャッシュメモリをｂ段でアクセスする場合の前記アクセスの最終段の処理結果を、前記予め定めた段の入力に転送する第２の転送手段と、
パイプライン処理される命令の前記予め定めた段の入力が、前記命令に先行する命令の前記キャッシュメモリのアクセス結果を必要とする状態を検出する検出手段とを備え、
前記検出手段が前記状態を検出した場合に、
前記切り替え手段が切り替えるパイプライン段数に対応して前記第１の転送手段の転送結果と前記第２の転送結果との何れかを選択し、前記予め定めた段の入力とする
ことを特徴とするデータ処理装置。
【請求項１２】
前記切り替え手段は、
データ処理装置が第１の動作環境にあるか第２の動作環境にあるかを指定する指定手段と、
第１の動作環境にあると指定された場合には、前記キャッシュメモリをａ段でアクセスさせ、第２の動作環境にあると指定された場合には、前記キャッシュメモリをｂ段でアクセスさせるパイプライン制御手段とを備え、
前記第１の動作環境にあるか第２の動作環境にあるかは、データ処理装置に供給される動作クロックの周波数と、データ処理装置に供給される電源電圧との何れかに応じて区別される
ことを特徴とする請求項５から１１のいずれかに記載のデータ処理装置。
【請求項１３】
請求項１２記載の指定手段は、
その指定内容を示すフラグを保持するフリップフロップ、その指定内容を示すデータを保持するレジスタ、その指定内容を示す論理値を入力する入力端子、その指定内容を示す内部信号の何れかである
ことを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ中の命令に従ってデータをパイプライン処理するデータ処理装置に関する。
【０００２】
【従来の技術】
近年の電子技術の発展により、半導体回路の高速化、高集積化が可能となり、また命令の処理を少なくとも読出し、解読、実行のステージに分け、これらを並列に実行し命令の見かけ上の実行時間の短縮を図るパイプライン構造による高速化により、データを高速に処理するプロセッサの実現が可能になった。しかし連続した命令を処理する場合において、直前の命令の実行結果を用いて次の命令を処理するため、次の命令が実行できないためにパイプライン処理をロックするレジスタ干渉が発生し、このため性能劣化を引き起こすことがある。このレジスタ干渉の発生を最小限に抑えるために、例えば演算を行う演算ステージ、メモリに対してロード・ストアを行うメモリアクセスステージ等複数のステージに分割され、前段のステージの処理を効率よく行うため後段のステージから処理結果を転送するバイパスを設けることが一般的である。
【０００３】
図６と図９とに、２つの従来のデータ処理装置のブロック図を示す。
まず図６において、データ処理装置は、中央演算処理装置５とデータキャッシュ６と外部メモリ６３とから構成される。同図において、中央演算処理装置５は命令フェッチステージ（以下、IFステージ）、命令解読ステージ（以下、DECステージ）、命令実行ステージ（以下、EXステージ）、メモリアクセスステージ（MEMステージ）、レジスタ書込ステージ（WBステージ）の５つのステージからなる５段パイプライン構造を成している。命令フェッチ回路５１はIFステージで動作しメモリ（図外）から命令の読出しを行う。命令解読回路５２はDECステージで動作し命令フェッチ回路５１で読出された命令を解読する。命令実行回路５３はEXステージとMEMステージとWBステージとで動作し命令解読回路５２によって制御され、演算のオペランドを格納するレジスタ５３１と、レジスタ５３１から読出したデータまたはレジスタ５３１に格納するデータを載せるバス５３２ａ〜５３２ｄと、バス５３２ａとセレクタ５４１の出力値とを選択するセレクタ５３３と、バス５３２ｂによって転送されるデータとセレクタ５３３の出力値とを用いて演算を行う演算器５３４と、クロック同期で演算器５３４の出力値を保持する第１EXラッチ５３５と、クロック同期でセレクタ５３３の出力値を保持する第２EXラッチ５３６と、第１EXラッチ５３５の出力値とデータキャッシュ６の出力データとを選択するセレクタ５３７と、第１EXラッチ５３５の出力値とデータキャッシュ６の出力データとを選択するセレクタ５３８と、クロック同期でセレクタ５３７の出力値を保持する第１MEMラッチ５３９と、クロック同期でセレクタ５３８の出力値を保持する第２MEMラッチ５４０と、検出されたレジスタ干渉によってレジスタ干渉検出回路５５０が第１EXラッチ５３５か第２MEMラッチ５４０かを選択して有効なフォワーディングパスを決定するセレクタ５４１からなる。パイプライン処理制御回路５４は命令フェッチ回路５１と命令解読回路５２と命令実行回路５３とをパイプライン処理を行い、レジスタ干渉検出回路５５０を内包する。レジスタ干渉検出回路５５０はパイプライン処理制御回路５４の中でレジスタ干渉を検出し、その検出結果に基づいて有効なフォワーディングパスを決定するためにセレクタ５４１を制御する。データキャッシュ６は、アドレスバス６１１よりアドレスを入力し予めキャッシュメモリ６２に保持するデータのアドレスを保持しその入力アドレスと保持アドレスとを比較することによりキャッシュに格納されているかどうか（以下、格納されている場合はキャッシュヒット、格納されていない場合はキャッシュミスヒット）を判別するとともにキャッシュメモリ６２にアドレスを出力しキャッシュミスヒットの場合はキャッシュメモリ６２と外部メモリ６３とにアドレスを出力するとともに入力アドレスを保持アドレスに変更するキャッシュヒット検出回路６１と、キャッシュヒットの場合キャッシュヒット検出回路６１からアドレスを入力しキャッシュヒットの場合そのアドレスのメモリからデータを出力しキャッシュミスヒットの場合外部メモリ６３よりデータを入力しそのデータを出力すると共にキャッシュヒット検出回路６１からアドレスを入力したアドレスのメモリからデータを書き込むキャッシュメモリ６２とからな��、中央演算処理装置５からアドレスをキャッシュヒット検出回路６１へ転送するアドレスバス６１１と、キャッシュヒット検出回路６１からアドレスを外部メモリ６３へ転送するアドレスバス６１２と、外部メモリ６３からデータをキャッシュメモリ６２へ転送するデータバス６１３と、キャッシュメモリ６２からデータを中央演算処理装置５へ転送するデータバス６１４と接続する。外部メモリ６３は、アドレスバス６１２よりアドレスを入力しそのアドレスのメモリからデータを出力しデータバス６１３へデータを出力する。
【０００４】
以上の構成をもつ従来のデータ処理装置について、図７、図８に示すタイムチャートを用いて、ここでは２つのフォワーディングパス（バイパス）について動作を説明する。
（１）MEMステージからEXステージへのバイパス
アドレスをインクリメント処理しながらキャッシュからデータをロードし、連続してロードしたデータを用いて加算を実行する処理を例示する。例示プログラムを以下に示す。
命令１：MOV  （A0+),D1(アドレスA0からデータをロードしながらアドレスA0をインクリメント処理を行い、そのロードデータをD1レジスタに、インクリメント処理を行ったアドレスをA0に格納する)命令２：ADD  D0,D1(D0レジスタとD1レジスタの加算を行い、その結果をD1レジスタに格納する)
図７に示したタイムチャートを用いて説明する。ここでは、データキャッシュ６はロードするデータを保持すると仮定する。
【０００５】
はじめに命令１の動作をタイミング順に説明する。タイミング１において命令フェッチ回路５１によって読出された命令1（IFステージ：７ナノ秒）は、タイミング２において命令解読回路５２で解読され（DECステージ：９ナノ秒）、タイミング３において命令実行回路５３でアドレスのインクリメント処理が実行され（EXステージ：９ナノ秒）、タイミング４においてデータキャッシュ６にアクセスされ（MEMステージ：１０ナノ秒）、タイミング５において命令実行回路５３で演算結果を転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、オペランドデータがレジスタ５３１から読出されバス５３２ａに載せられ、バス５３２ａを選択するセレクタ５３３の出力を入力とを用いて演算器５３４でインクリメント処理されて、その演算結果が第１EXラッチ５３５に格納され、セレクタ５３３の出力が第２EXラッチ５３６に格納される。MEMステージの詳細については、第１EXラッチ５３５の出力値はセレクタ５３７に選択されて第１MEMラッチ５３９に格納されると共に、第２EXラッチ５３６の出力値はアドレスバス６１１を介してデータキャッシュ６のキャッシュヒット検出回路６１に転送される。キャッシュヒット検出回路６１は入力データのキャッシュヒットかキャッシュミスヒットかを判別し、入力アドレスをキャッシュメモリ６２に出力する。キャッシュメモリ６２は入力アドレスに格納されているデータを出力して、データをデータバス６１４を介して中央演算処理装置５に転送する。図７ではキャッシュヒット検出回路６１とキャッシュメモリ６２とが処理する時間をキャッシュ読出しと記している。セレクタ５３８はデータキャッシュ６から転送されたデータを選択する。第２MEMラッチ５４０はセレクタ５３８の出力値を格納する。WBステージの詳細については、第１MEMラッチ５３９と第２MEMラッチ５４０とに格納された演算結果及びデータがバス５３２ｃ及びバス５３２ｄを介してレジスタ５３１に格納される。
【０００６】
次に命令２の動作をタイミング順に説明する。タイミング２において命令フェッチ回路５１によって読出された命令２（IFステージ：７ナノ秒）は、タイミング３において命令解読回路５２で解読され（DECステージ：９ナノ秒）ると共にレジスタ干渉検出回路５５０で命令１とのレジスタ干渉が検出され、タイミング４においてパイプライン処理制御装置５４でレジスタ干渉による実行待ちとなるように制御され、タイミング５において命令実行回路５３で加算演算が実行され（EXステージ：９ナノ秒）、タイミング６において演算結果が転送され（MEMステージ：１ナノ秒）、タイミング７において命令実行回路５３で演算結果を転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージ詳細については、レジスタ干渉検出回路５５０はMEMステージからEXステージへのバイパスがレジスタ干渉に対して有効であることを検出してセレクタ５４１が第２MEMラッチ５４０を選択するように制御し、オペランドデータがレジスタ５３１から読出されバス５３２ａ及びバス５３２ｂに載せられ、バス５３２ｂとセレクタ５４１を選択するセレクタ５３３の出力とを入力に用いて演算器５３４で加算演算されて、その演算結果が第１EXラッチ５３５に格納される。MEMステージの詳細については、第１EXラッチ５３５の出力値はセレクタ５３７に選択されて第１MEMラッチ５３９に格納される。WBステージの詳細については、第１MEMラッチ５３９に格納された演算結果がバス５３２ｃを介してレジスタ５３１に格納される。
（２）EXステージからEXステージへのバイパス
アドレスをインクリメント処理しながらキャッシュからデータをロードし、連続してインクリメント処理したデータを用いて加算を実行する処理を例示する。例示プログラムを以下に示す。
命令１：MOV  （A0+),D1(アドレスA0からデータをロードしながらアドレスA0をインクリメント処理を行い、そのロードデータをD1レジスタに、インクリメント処理を行ったアドレスをA0に格納する)命令２：ADD  D0,A0(D0レジスタとA0レジスタの加算を行い、その結果をA0レジスタに格納する)
図８に示したタイムチャートを用いて説明する。ここでは、データキャッシュ６にロードするデータを保持すると仮定する。
【０００７】
はじめに命令１の動作をタイミング順に説明する。タイミング１において命令フェッチ回路５１によって読出された命令１（IFステージ：７ナノ秒）は、タイミング２において命令解読回路５２で解読され（DECステージ：９ナノ秒）、タイミング３において命令実行回路５３でアドレスのインクリメント処理が実行され（EXステージ：９ナノ秒）、タイミング４においてデータキャッシュ６にアクセスされ（MEMステージ：１０ナノ秒）、タイミング５において命令実行回路５３で演算結果を転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、オペランドデータがレジスタ５３１から読出されバス５３２ａに載せられ、バス５３２ａを選択するセレクタ５３３の出力を入力とを用いて演算器５３４でインクリメント処理されて、その演算結果が第１EXラッチ５３５に格納され、セレクタ５３３の出力が第２EXラッチ５３６に格納される。MEMステージの詳細については、第１EXラッチ５３５の出力値はセレクタ５３７に選択されて第１MEMラッチ５３９に格納されると共に、第２EXラッチ５３６の出力値はアドレスバス６１１を介してデータキャッシュ６のキャッシュヒット検出回路６１に転送される。キャッシュヒット検出回路６１は入力データのキャッシュヒットかキャッシュミスヒットかを判別し、入力アドレスをキャッシュメモリ６２に出力する。キャッシュメモリ６２は入力アドレスに格納されているデータを出力して、データをデータバス６１４を介して中央演算処理装置５に転送する。セレクタ５３８はデータキャッシュ６から転送されたデータを選択する。図８ではキャッシュヒット検出回路６１とキャッシュメモリ６２とが処理する時間をキャッシュ読出しと記している。第２MEMラッチ５４０はセレクタ５３８の出力値を格納する。WBステージの詳細については、第１MEMラッチ５３９と第２MEMラッチ５４０とに格納された演算結果及びデータがバス５３２ｃ及びバス５３２ｄを介してレジスタ５３１に格納される。
【０００８】
次に命令２の動作をタイミング順に説明する。タイミング２において命令フェッチ回路５１によって読出された命令２（IFステージ：７ナノ秒）は、タイミング３において命令解読回路５２で解読され（DECステージ：９ナノ秒）ると共にレジスタ干渉検出回路５５０で命令１とのレジスタ干渉が検出され、タイミング４において命令実行回路５３で加算演算が実行され（EXステージ：９ナノ秒）、タイミング５において演算結果が転送され（MEMステージ：１ナノ秒）、タイミング６において命令実行回路５３で演算結果を転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、レジスタ干渉検出回路５５０はEXステージからEXステージへのバイパスがレジスタ干渉に対して有効であることを検出してセレクタ５４１が第１EXラッチ５３５を選択するように制御し、オペランドデータがレジスタ５３１から読出されバス５３２ａ及びバス５３２ｂに載せられ、バス５３２ｂとセレクタ５４１を選択するセレクタ５３３の出力とを入力に用いて演算器５３４で加算演算されて、その演算結果が第１EXラッチ５３５に格納される。MEMステージの詳細については、第１EXラッチ５３５の出力値はセレクタ５３７に選択されて第１MEMラッチ５３９に格納される。WBステージの詳細については、第１MEMラッチ５３９に格納された演算結果がバス５３２ｃを介してレジスタ５３１に格納される。
【０００９】
続いて２つ目の従来のデータ処理装置について説明する。
図９において、中央演算処理装置７は、IFステージで動作しメモリ（図外）から命令の読出しを行う命令フェッチ回路７１と、DECステージで動作し命令フェッチ回路７１で読出された命令を解読する命令解読回路７２と、EXステージとメモリアクセス第１ステージ（以下、MEM1ステージ）とメモリアクセス第２ステージ（以下、MEM2ステージ）とWBステージとで動作し命令解読回路７２によって制御される命令実行回路７３と、命令フェッチ回路７１と命令解読回路７２と命令実行回路７３とをパイプライン処理を行うパイプライン処理制御回路７４を備え、上記６つのステージからなる６段パイプライン構造を成している。さらに、命令実行回路７３は、演算のオペランドとメモリアクセス時のアドレス及びデータとを格納するレジスタ７３１と、レジスタ７３１から読出したデータまたはレジスタ７３１に格納するデータを載せるバス７３２ａ〜７３２ｃと、バス７３２ａとMEM2ラッチ７３８の出力値とを選択するセレクタ７３３と、バス７３２ｂによって転送されるデータとセレクタ７３３が選択するとデータに基づいて演算を行う演算器７３４と、クロック同期で演算器７３４の出力値を保持するEXラッチ７３５と、クロック同期でセレクタ７３３の出力値を保持するMEM1ラッチ７３６と、MEM1ラッチ７３６の出力値とデータキャッシュ８の出力データとを選択するセレクタ７３７と、クロック同期でセレクタ７３７の出力値を保持するMEM2ラッチ７３８とからなり、EXラッチ７３５の出力値をデータキャッシュ８へ転送するアドレスバス８１１と、データキャッシュ８のデータ出力をセレクタ７３７の入力へ転送するデータバス８１４とを介してデータキャッシュ８と接続する。データキャッシュ８は、アドレスバス８１１よりアドレスを入力し予めキャッシュメモリ８３に保持するデータのアドレスを保持しその入力アドレスと保持アドレスとを比較することによりキャッシュのキャッシュヒットかキャッシュミスヒットかを判別するとともにキャッシュメモリ８３にアドレスを出力しキャッシュミスヒットの場合はキャッシュメモリ８３と外部メモリ８４とにアドレスを出力するとともに入力アドレスを保持アドレスに変更するキャッシュヒット検出回路８１と、クロック同期でキャッシュヒット検出回路８１から出力されるアドレスを保持するMEM1ラッチ８２と、キャッシュヒットの場合MEM1ラッチ８２からアドレスを入力しキャッシュヒットの場合そのアドレスのメモリからデータを出力しキャッシュミスヒットの場合外部メモリ８４よりデータを入力しそのデータを出力すると共にMEM1ラッチ８２からアドレスを入力したアドレスのメモリからデータを書き込むキャッシュメモリ８３とからなり、中央演算処理装置７からアドレスをキャッシュヒット検出回路８１へ転送するアドレスバス８１１と、キャッシュヒット検出回路８１からアドレスを外部メモリ８４へ転送するアドレスバス８１２と、外部メモリ８４からデータをキャッシュメモリ８３へ転送するデータバス８１３と、キャッシュメモリ８３からデータを中央演算処理装置７へ転送するデータバス８１４と接続する。外部メモリ８４は、アドレスバス８１２よりアドレスを入力しそのアドレスのメモリからデータを出力しデータバス８１３へデータを出力する。
【００１０】
以上の構成をもつ従来のデータ処理装置について、図１０、図１１に示すタイムチャートを用いてその動作を説明する。ここでは２つの動作クロックでの動作について、キャッシュメモリからのデータをロードし、その結果を用いて連続して加算を実施する処理を例示する。例示プログラムを以下に示す。
命令１：MOV  (A0),D1(A0レジスタの値のアドレスに格納されるデータをD1レジスタに格納する)命令２：ADD  D0,D1(D0レジスタとD1レジスタの加算を行い、その結果をD0レジスタに格納する)（１）動作クロックが１００メガヘルツの場合
図１０に示したタイムチャートを用いて説明する。ここでは、１ステージ１０ナノ秒となる。またデータキャッシュ８はロードするデータを保持すると仮定する。
【００１１】
はじめに命令１の動作をタイミング順に説明する。タイミング１において命令フェッチ回路７１によって読み出された命令１（IFステージ：７ナノ秒）は、タイミング２において命令解読回路７２で解読され（DECステージ：９ナノ秒）、タイミング３において命令実行回路７３でアドレスを読出され（EXステージ：５ナノ秒）、タイミング４において命令実行回路７３からデータキャッシュ８にアドレスを転送されキャッシュヒットを検出され（MEM1ステージ：８ナノ秒）、タイミング５においてはデータキャッシュ８でデータを読出しデータキャッシュ８から命令実行回路７３にデータを転送され（MEM2ステージ：９ナノ秒）、タイミング６において命令実行回路７３でデータが転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、命令によって指示されたアドレスが、レジスタ７３１から読出され、バス７３２ａを介して演算器７３４を通過してEXラッチ７３５に格納される（５ナノ秒）。MEM1ステージの詳細については、EXラッチ７３５に格納されたアドレスがアドレスバス８１１を介してキャッシュヒット検出回路８１に転送され（３ナノ秒）、キャッシュヒット検出回路８１において入力したアドレスがキャッシュメモリ８２に格納されているかどうかを判別されると共に、キャッシュヒット検出回路８１を通過してMEM1ラッチ８２に格納される（５ナノ秒）。MEM2ステージの詳細については、MEM1ラッチ８２に格納されたアドレスをキャッシュメモリ８３に入力され、キャッシュメモリ８３において入力されたアドレスに格納されるデータを読出され（５ナノ秒）、このデータはデータバス８１４を介してセレクタ７３７に転送される（３ナノ秒）。セレクタ７３７はキャッシュメモリ８３からのデータを選択し、MEM2ラッチ７３８はセレクタ７３７の出力を格納する（１ナノ秒）。WBステージの詳細については、MEM2ラッチ７３８に格納された演算結果がバス７３２ｃからレジスタ７３１に格納される。
【００１２】
次に命令２の動作をタイミング順に説明する。タイミング２において命令フェッチ回路７１によって読出された命令２（IFステージ：７ナノ秒）は、タイミング３において命令解読回路７２で解読され（DECステージ：９ナノ秒）ると共にパイプライン処理制御回路７４で命令１とのレジスタ干渉が検出され、タイミング４及びタイミング５においてパイプライン処理制御回路７４でレジスタ干渉による実行待ちとなるように制御され、タイミング６において命令実行回路７３で加算演算が実行され（EXステージ：９ナノ秒）、タイミング７において命令実行回路７３で演算結果が転送され（MEM1ステージ：０ナノ秒）、タイミング８において命令実行回路７３で演算結果が転送され（MEM2ステージ：１ナノ秒）、タイミング９において命令実行回路７３で演算結果を転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、オペランドデータがレジスタ７３１から読出されバス７３２ａ及びバス７３２ｂに載せられ、パイプライン処理制御回路７４はMEM2ステージからEXステージへのバイパスがレジスタ干渉に対して有効であることを検出してセレクタ７３３がMEM2ラッチ７３８を選択するように制御し、バス７３２ｂとセレクタ７３３の出力とを入力に用いて演算器７３４で加算演算されて、その演算結果がEXラッチ７３５に格納される。MEM1ステージの詳細については、EXラッチ７３５に格納された演算結果がMEM1ラッチ７３６に格納される（このステージに要する時間は無視できるので０ナノ秒とする）。MEM2ステージの詳細については、MEM1ラッチ７３６に格納された演算結果がセレクタ７３７に選択され、MEM2ラッチ７３８に格納される（１ナノ秒）。WBステージの詳細については、MEM2ラッチ７３８に格納された演算結果がバス７３２ｃを介してレジスタ７３１に格納される。
（２）動作クロックが５０メガヘルツの場合
図１１に示したタイムチャートを用いて説明する。ここでは、１ステージ２０ナノ秒となる。またデータキャッシュ８はロードするデータを保持すると仮定する。
【００１３】
はじめに命令１の動作をタイミング順に説明する。タイミング１において命令フェッチ回路７１によって読出された命令１（IFステージ：７ナノ秒）は、タイミング２において命令解読回路７２で解読され（DECステージ：９ナノ秒）、タイミング３において命令実行回路７３でアドレスを読出され（EXステージ：５ナノ秒）、タイミング４において命令実行回路７３からデータキャッシュ８にアドレスを転送されキャッシュヒットを検出され（MEM1ステージ：８ナノ秒）、タイミング５においてはデータキャッシュ８でデータを読出しデータキャッシュ８から命令実行回路７３にデータを転送され（MEM2ステージ：９ナノ秒）、タイミング６において命令実行回路７３でデータが転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、命令によって指示されたアドレスが、レジスタ７３１から読出され、バス７３２ａを介して演算器７３４を通過してEXラッチ７３５に格納される（５ナノ秒）。MEM1ステージの詳細については、EXラッチ７３５に格納されたアドレスがアドレスバス８１１を介してキャッシュヒット検出回路８１に転送され（３ナノ秒）、キャッシュヒット検出回路８１において入力したアドレスがキャッシュメモリ８３に格納されているかどうかを判別されると共に、キャッシュヒット検出回路８１を通過してMEM1ラッチ８２に格納される（５ナノ秒）。MEM2ステージの詳細については、MEM1ラッチ８２に格納されたアドレスをキャッシュメモリ８３に入力され、キャッシュメモリ８３において入力されたアドレスに格納されるデータを読出され（５ナノ秒）、このデータはデータバス８１４を介してセレクタ７３７に転送される（３ナノ秒）。セレクタ７３７はキャッシュメモリ８３からのデータを選択し、MEM2ラッチ７３８はセレクタ７３７の出力を格納する（１ナノ秒）。WBステージの詳細については、MEM2ラッチ７３８に格納された演算結果がバス７３２ｃからレジスタ７３１に格納される。
【００１４】
次に命令２の動作をタイミング順に説明する。タイミング２において命令フェッチ回路７１によって読出された命令２（IFステージ：７ナノ秒）は、タイミング３において命令解読回路７２で解読され（DECステージ：９ナノ秒）ると共にパイプライン処理制御回路７４で命令１とのレジスタ干渉が検出され、タイミング４及びタイミング５においてパイプライン処理制御回路７４でレジスタ干渉による実行待ちとなるように制御され、タイミング６において命令実行回路７３で加算演算が実行され（EXステージ：９ナノ秒）、タイミング７において命令実行回路７３で演算結果が転送され（MEM1ステージ：０ナノ秒）、タイミング８において命令実行回路７３で演算結果が転送され（MEM2ステージ：１ナノ秒）、タイミング９において命令実行回路７３で演算結果を転送された上でレジスタに格納される（WBステージ：５ナノ秒）。EXステージの詳細については、オペランドデータがレジスタ７３１から読出されバス７３２ａ及びバス７３２ｂに載せられ、パイプライン処理制御回路７４はMEM2ステージからEXステージへのバイパスがレジスタ干渉に対して有効であることを検出してセレクタ７３３がMEM2ラッチ７３８を選択するように制御し、バス７３２ｂとセレクタ７３３の出力とを入力に用いて演算器７３４で加算演算されて、その演算結果がEXラッチ７３５に格納される。MEM1ステージの詳細については、EXラッチ７３５に格納された演算結果がMEM1ラッチ７３６に格納される（このステージに要する時間は無視できるので０ナノ秒とする）。MEM2ステージの詳細については、MEM1ラッチ７３６に格納された演算結果がセレクタ７３７に選択され、MEM2ラッチ７３８に格納される（１ナノ秒）。WBステージの詳細については、MEM2ラッチ７３８に格納された演算結果がバス７３２ｃを介してレジスタ７３１に格納される。
【００１５】
また、データキャッシュ８にロードするデータを保持しない場合、外部メモリ８４にアクセスする必要があり、これには中央演算処理装置７の１ステージに比べ多大なアクセス時間が必要となり、この結果パイプライン処理制御回路７４はキャッシュヒット検出回路８１よりパイプラインロック要求を受けてパイプライン処理を停止させ、セレクタ７３７にデータが転送されたことを確認して再実行する。
【００１６】
【発明が解決しようとする課題】
ところで、図６に示した従来のデータ処理装置のように、パイプライン処理制御装置にレジスタ干渉を検出するレジスタ干渉検出回路を実装し、この検出結果によって各ステージからのバイパスを決定する。従来例で示したMOV  （A0+),D1の命令直後にA0,D1の演算を行う場合上記の検出回路によってバイパスを決定するが、多くの命令列はコンパイラによるスケジューリング等を行うことによって、MEMステージからEXステージへのバイパスとEXステージからEXステージへのバイパスとの一方が他方に比べて偏って使われるようにチューニングすることができる。このような場合、いずれのバイパスを使用するかを検出するレジスタ干渉検出回路を設けてもほとんど機能せず、その分のコスト及び消費電力が無駄になるという問題点がある。
【００１７】
また、図９に示した従来のデータ処理装置のように、キャッシュ等へのメモリアクセスのように処理時間の長い処理に関しては、パイプライン段数を増やすことによって動作クロックが高速化に対応している。しかし動作クロックが低い場合、処理時間が短くなり増やしたパイプライン段数より短い段数で処理できる。このような場合インタロックによる性能劣化を引き起こす問題点がある。さらに、処理時間の長い後段の処理の結果を用いて連続して前段の処理を行う場合、フォワーディングできるバイパスを設けるが、動作クロックが低い場合でも増やしたパイプラインステージの後段からバイパスを設けるために前段の処理を行うまでのインタロックが増えて性能劣化を引き起こす問題点がある。
【００１８】
本発明はかかる課題に鑑み、データ依存検出手段を設けてバイパスを切り替えることを不要とし、その分のコスト及び消費電力を削減したデータ処理装置を提供することを目的とする。また、キャッシュの動作周波数に応じてパイプライン段数を変化させインタロックによる性能劣化が生じないデータ処理装置を提供することを目的とする。さらに、パイプライン段数を変化させるとともにフォワーディングパスを切り替えることによりインタロック期間が短縮でき性能が一層改善するデータ処理装置を提供することを目的とする。
【００１９】
【課題を解決するための手段】この課題を解決するため本発明のデータ処理装置は、パイプライン段数がｎ段で機械語命令をパイプライン処理する処理手段と、前記処理手段の中にあって、ｎ以下のｉ段目の処理結果をｉ以下のｋ段目の入力に転送する第１の転送手段と、前記処理手段の中にあって、ｎ以下でかつｉより大きいｊ段目の処理結果をｋ段目の入力に転送する第２の転送手段と、前記処理手段の中にあって、前記第１の転送手段の転送結果と前記第２の転送結果との何れかを選択してｋ段目の入力とする切り替え手段と、  パイプライン処理される命令のｋ段目の入力が、前記命令に先行する命令のパイプライン処理におけるｉ段目で決定される内容を必要とする第１の状態と、前記命令に先行する命令のパイプライン処理におけるｊ段目で決定される内容を必要とする第２の状態とを検出する検出手段と、所定の条件に応じて、前記検出手段が前記第１の状態を検出した場合にのみ、前記切り替え手段に対して前記第１の転送結果を選択する第１の指示を与えるか、または、前記検出手段が前記第１および第２の状態を検出した場合に、前記切り替え手段に対して前記第２の転送結果を選択する第２の指示を与える選択制御手段とを備え、前記選択制御手段は、前記機械語命令の組合せが、前記第１の状態を多く発生させるか、前記第２の状態を多く発生させるかを指定する指定手段を更に備え、前記指定手段により、前記第１の状態を多く発生させると指定された場合には、前記切り替え手段に対して前記第１の指示を与え、前記第２の状態を多く発生させると指定された場合には、前記切り替え手段に対して前記第２の指示を与える。
【００２０】
また、指定手段は、その指定内容を示すフラグを保持するフリップフロップ、その指定内容を示すデータを保持するレジスタ、その指定内容を示す論理値を入力する入力端子、その指定内容を示す内部信号の何れかであるように構成してもよい。
【００２１】
また、指定手段は、前記機械語命令の組合せが、前記第１の状態を多く発生させるか、前記第２の状態を多く発生させるかを示す特定命令の解読または実行に基づいて指定されるように構成してもよい。
【００２２】
そして、処理手段は、少なくとも、１つのパイプライン段数で命令フェッチを行う命令フェッチ部と、１つのパイプライン段数でフェッチされた命令の解読を行う命令解読部と、前段部と後段部の２つのパイプライン段数で命令を実行する命令実行部とからなり、第１の転送手段は、前記命令実行部の前記前段部の実行結果を前記前段部の入力に転送し、第２の転送手段は、前記命令実行部の前記後段部の実行結果を前記前段部の入力に転送し、切り替え手段は、前記命令実行部の前記前段部の実行結果と前記後段部の実行結果との何れかを選択して前記前段部の入力とするように構成してもよい。
【００２３】
また本発明のデータ処理装置は、キャッシュメモリのアクセスを行う段を含む複数の段からなり、機械語命令をパイプライン処理する処理手段を有するデータ処理装置であって、  前記キャッシュメモリのアクセスを行う段の段数がａ段とａより大きいｂ段とに可変であり、前記データ処理装置はさらに、前記キャッシュメモリのアクセスを行う段の段数がａ段，ｂ段の時に処理手段のパイプライン段数をそれぞれｎ段と（ｎ＋ｂ−ａ）段とに切り替える切り替え手段を備えている。
【００２４】
ここで、処理手段は、命令フェッチステージ、命令解読ステージ及び命令実行ステージの少なくとも３段のパイプライン段数を持ち、前記キャッシュメモリは前記命令実行ステージにおいてアクセスされるように構成してもよい。
【００２５】
そして、前記キャッシュメモリのアクセスの処理内容は、シーケンシャルなｂ個の部分処理に分割可能であり、前記キャッシュメモリをａ段でアクセスする場合にはｂ個の部分処理のうちの（ｂ−ａ）個を隣合う他のａ個の部分処理と同一の段で処理し、前記キャッシュメモリをｂ段でアクセスする場合には各部分処理をそれぞれ１段で処理するように構成してもよい。
【００２６】
また、前記各段はそれぞれ個別の処理部が実行し、それら処理部の少なくとも１つは、前記部分処理を実行する複数の部分処理部と、部分処理部と次段の部分処理部との間に設けられ、前記キャッシュメモリをａ段でアクセスする場合には当該部分処理結果を透過出力し、前記キャッシュメモリをｂ段でアクセスする場合には当該部分処理結果を保持し次の段に出力する複数の透過保持部とを備えるように構成してもよい。
【００２７】
さらに、各透過保持部は、部分処理部からの部分処理結果を保持するパイプラインラッチと、前記キャッシュメモリをａ段でアクセスする場合は当該部分処理結果を選択し、前記キャッシュメモリをｂ段でアクセスする場合はパイプラインラッチの出力を選択して次段の部分処理部に出力するセレクタとを有するように構成してもよい。
【００２８】
そして、前記部分処理の１つにタグメモリ部のアクセスを含み、前記部分処理の他の１つにデータメモリ部のアクセスを含むように構成してもよい。
【００２９】
そして、データ処理装置は、さらに、前記キャッシュメモリをａ段でアクセスする場合の前記アクセスの最終段の処理結果を、前記処理手段の予め定めた段の入力に転送する第１の転送手段と、前記キャッシュメモリをｂ段でアクセスする場合の前記アクセスの最終段の処理結果を、前記予め定めた段の入力に転送する第２の転送手段と、パイプライン処理される命令の前記予め定めた段の入力が、前記命令に先行する命令の前記キャッシュメモリのアクセス結果を必要とする状態を検出する検出手段とを備え、前記検出手段が前記状態を検出した場合に、前記切り替え手段が切り替えるパイプライン段数に対応して前記第１の転送手段の転送結果と前記第２の転送結果との何れかを選択し、前記予め定めた段の入力とするように構成してもよい。
【００３０】
そして、切り替え手段は、データ処理装置が第１の動作環境にあるか第２の動作環境にあるかを指定する指定手段と、第１の動作環境にあると指定された場合には、前記キャッシュメモリをａ段でアクセスさせ、第２の動作環境にあると指定された場合には、前記キャッシュメモリをｂ段でアクセスさせるパイプライン制御手段とを備え、前記第１の動作環境にあるか第２の動作環境にあるかは、データ処理装置に供給される動作クロックの周波数と、データ処理装置に供給される電源電圧との何れかに応じて区別されるように構成してもよい。
【００３１】
さらに、指定手段は、その指定内容を示すフラグを保持するフリップフロップ、その指定内容を示すデータを保持するレジスタ、その指定内容を示す論理値を入力する入力端子、その指定内容を示す内部信号の何れかであるように構成してもよい。
【００３２】
【発明の実施の形態】
以下、本発明の実施の形態について、図１から図５を用いて説明する。
【００３３】
図１は、本発明の第一の実施の形態におけるデータ処理装置の構成を表すブロック図を示す。
【００３４】
本データ処理装置は、中央演算処理装置１とデータキャッシュ２と外部メモリ２３とから構成される。同図において、中央演算処理装置１はIFステージ、DECステージ、EXステージ、MEMステージ、WBステージの５つのステージからなる５段パイプライン構造を成している。命令フェッチ回路１１はIFステージで動作しメモリ（図外）から命令の読出しを行う。命令解読回路１２はDECステージで動作し命令フェッチ回路１１で読出された命令を解読する。命令実行回路１３はEXステージとMEMステージとWBステージとで動作し命令解読回路１２によって制御され、演算のオペランドを格納するレジスタ１３１と、レジスタ１３１から読出したデータまたはレジスタ１３１に格納するデータを載せるバス１３２ａ〜１３２ｄと、バス１３２ａとセレクタ１４１の出力値とを選択するセレクタ１３３と、バス１３２ｂによって転送されるデータとセレクタ１３３の出力値とを用いて演算を行う演算器１３４と、クロック同期で演算器１３４の出力値を保持する第１EXラッチ１３５と、クロック同期で演算器１３４の出力値を保持する第２EXラッチ１３６と、第１EXラッチ１３５の出力値とデータキャッシュ２の出力データとを選択するセレクタ１３７と、第１EXラッチ１３５の出力値とデータキャッシュ２の出力データとを選択するセレクタ１３８と、クロック同期でセレクタ１３７の出力値を保持する第１MEMラッチ１３９と、クロック同期でセレクタ１３８の出力値を保持する第２MEMラッチ１４０と、第１EXラッチ１３５の出力値と第２MEMラッチ１４０の出力値とを選択するセレクタ１４１とからなる。パイプライン処理制御回路１４は命令フェッチ回路１１と命令解読回路１２と命令実行回路１３とをパイプライン処理を行う。バイパス切替フラグ１５は、本中央演算処理装置１に対してどのステージからバイパスするデータを転送するかを示すフラグを保持する。本実施の形態ではEXステージからバイパスするときにフラグがセットされ、MEMステージからバイパスするときにフラグがクリアされるものとする。データキャッシュ２は、アドレスバス２１１よりアドレスを入力しキャッシュメモリ２２に保持するデータのアドレスを保持しその入力アドレスと保持アドレスとを比較することによりキャッシュヒットかキャッシュミスヒットかを判別するとともにキャッシュメモリ２２にアドレスを出力しキャッシュミスヒットの場合はキャッシュメモリ２２と外部メモリ２３とにアドレスを出力するとともに入力アドレスを保持アドレスに変更するキャッシュヒット検出回路２１と、キャッシュヒットの場合キャッシュヒット検出回路２１からアドレスを入力しキャッシュヒットの場合そのアドレスのメモリからデータを出力しキャッシュミスヒットの場合外部メモリ２３よりデータを入力しそのデータを出力すると共にキャッシュヒット検出回路２１からアドレスを入力したアドレスのメモリからデータを書き込むキャッシュメモリ２２とからなり、中央演算処理装置１からアドレスをキャッシュヒット検出回路２１へ転送するアドレスバス２１１と、キャッシュヒット検出回路２１からアドレスを外部メモリ２３へ転送するアドレスバス２１２と、外部メモリ２３からデータをキャッシュメモリ２２へ転送するデータバス２１３と、キャッシュメモリ２２からデータを中央演算処理装置１へ転送するデータバス２１４と接続する。外部メモリ２３は、アドレスバス２１２よりアドレスを入力しそのアドレスのメモリからデータを出力しデータバス２１３へデータを出力する。
【００３５】
以上のように構成された本発明の第一の実施の形態による情報処理装置について、その動作を説明する。ここではアドレスをインクリメント処理しながらキャッシュからデータをロードし、連続して加算を実行する処理を例示する。ここでは予めコンパイラによるスケジューリングによってEXステージからのフォワーディングが使用されるよう偏って命令を配置する。また、データキャッシュ２はロードするデータを保持すると仮定する。例示プログラムを以下に示す。
命令１：MOV  （A0+),D1(アドレスA0からデータをロードしながらアドレスA0をインクリメント処理を行い、そのロードデータをD1レジスタに、インクリメント処理を行ったアドレスをA0に格納する)命令２：ADD  D0,A0(D1レジスタとA0レジスタの加算を行い、その結果をA0レジスタに格納する)
EXステージからバイパスするときの動作について説明する。この場合バイパス切替フラグ１５はフラグがセットされる。図２に示したタイムチャートを用いて説明する。
【００３６】
（タイミング１）命令１：命令フェッチ回路１１は命令を読出す（処理時間は７ナノ秒）。
【００３７】
（タイミング２）命令１：読出された命令が命令解読回路１２で解読される（同９ナノ秒）。
命令２：命令フェッチ回路１１は命令を読出す（同７ナノ秒）。
【００３８】
（タイミング３）命令１：命令によって指示されたオペランドデータがレジスタ１３１から読出されバス１３２ａに載せられ、バス１３２ａを選択するセレクタ１３３の出力を入力とを用いて演算器１３４でインクリメント処理されて、その演算結果が第１EXラッチ１３５に格納され、セレクタ１３３の出力が第２EXラッチ１３６に格納される（同９ナノ秒）。
命令２：読出された命令が命令解読回路１２で解読される（同９ナノ秒）。
【００３９】
（タイミング４）命令１：第１EXラッチ１３５の出力値はセレクタ１３７に選択されて第１MEMラッチ１３９に格納されると共に、第２EXラッチ１３６の出力値はアドレスバス２１１を介してデータキャッシュ２のキャッシュヒット検出回路２１に転送される。キャッシュヒット検出回路２１は入力データのキャッシュヒットかキャッシュミスヒットかを判別し、入力アドレスをキャッシュメモリ２２に出力する。キャッシュメモリ２２は入力アドレスに格納されているデータを出力して、データをデータバス２１４を介して中央演算処理装置１に転送する。セレクタ１３８はデータキャッシュ２から転送されたデータを選択する。図２ではキャッシュヒット検出回路２１とキャッシュメモリ２２とが処理する時間をキャッシュ読出しと記している。第２MEMラッチ１４０はセレクタ１３８の出力値を格納する（同１０ナノ秒）。
命令２：バイパス切替フラグ１５がセットされているので、第１EXラッチ１３５の出力がセレクタ１４１に選択され、オペランドデータがレジスタ１３１から読出されバス１３２ａ及びバス１３２ｂに載せられ、セレクタ１３３がセレクタ１４１の出力を選択され、演算器１３４がバス１３２ｂとセレクタ１３３の出力とを入力に用いて加算演算されて、その演算結果が第１EXラッチ１３５に格納される（同９ナノ秒）。
【００４０】
（タイミング５）命令１：第１MEMラッチ１３９と第２MEMラッチ１４０とに格納された演算結果及びデータがバス１３２ｃ及びバス１３２ｄを介してレジスタ１３１に格納される（同５ナノ秒）。
命令２：第１EXラッチ１３５の演算結果はセレクタ１３７に選択されて第１MEMラッチ１３９に格納される（同１ナノ秒）。
【００４１】
（タイミング６）命令２：第１MEMラッチ１３９に格納された演算結果がバス１３２ｃを介してレジスタ１３１に格納される（同５ナノ秒）。
【００４２】
このように、予めスケジューリングによってEXステージからのフォワーディングが有効となるように命令を配置されているためにレジスタ干渉検出回路によるバイパス指定をする必要がないのでこれに必要なハードウエアを削減することができる。またここではEXステージからのフォワーディングが有効となるように命令を配置しEXステージからEXステージへのバイパスを用いたが、同様に予めスケジューリングによってMEMステージからのフォワーディングが有効となるように命令を配置し、MEMステージからEXステージへのバイパスを用いてもレジスタ干渉検出回路によるバイパス指定をする必要がないのでこれに必要なハードウエアを削減することができる。
【００４３】
図３は、本発明の第二の実施の形態におけるデータ処理装置の構成を表すブロック図を示す。
【００４４】
本データ処理装置は、中央演算処理装置３とデータキャッシュ４と外部メモリ４５とから構成される。同図において、中央演算処理装置３はIFステージ、DECステージ、EXステージ、MEM1ステージ、MEM2ステージ、WBステージの６つのステージからなる６段パイプライン構造を成している。命令フェッチ回路３１はIFステージで動作しメモリ（図外）から命令の読出しを行う。命令解読回路３２はDECステージで動作し命令フェッチ回路３１で読出された命令を解読する。命令実行回路３３はEXステージとMEM1ステージとMEM2ステージとWBステージとで動作し命令解読回路３２によって制御され、演算のオペランドとメモリアクセス時のアドレス及びデータを格納するレジスタ３３１と、レジスタ３３１から読出したデータまたはレジスタ３３１に格納するデータを載せるバス３３２ａ〜３３２ｃと、バス３３２ａとセレクタ３４０の出力値とを選択するセレクタ３３３と、バス３３２ｂによって転送されるデータとセレクタ３３３の出力値とを用いて演算を行う演算器３３４と、レジスタ３３１よりデータを読出されてから１動作クロック後に演算器３３４の出力値を保持するEXラッチ３３５と、EXラッチ３３５の出力値とデータキャッシュ４の出力データとを選択するセレクタ３３６と、クロック同期でセレクタ３３６の出力値を保持するMEM1ラッチ３３７と、MEM1ラッチ３３７の出力値とデータキャッシュ４の出力データとを選択するセレクタ３３８と、クロック同期でセレクタ３３８の出力値を保持するMEM2ラッチ３３９と、高速ピッチフラグ３５が０のときMEM1ラッチ３３７の出力値を選択し高速ピッチフラグ３５が１のときMEM2ラッチ３３９の出力値を選択するセレクタ３４０とからなり、EXラッチ３３５の出力値をデータキャッシュ４へ転送するアドレスバス４１１と、データキャッシュ４のデータ出力をセレクタ３３６とセレクタ３３８の入力へ転送するデータバス４１４とを介してデータキャッシュ４と接続する。
【００４５】
パイプライン処理制御回路３４は命令フェッチ回路３１と命令解読回路３２と命令実行回路３３とをパイプライン処理を行う。高速ピッチフラグ３５は、本中央演算処理装置３に供給されている動作クロックの周波数が、高速クロックか低速クロックかを示すフラグを保持する。本実施の形態では動作クロックの周波数が５０メガヘルツより高いときにフラグがセットされ、５０メガヘルツ以下のときクリアされるものとする。データキャッシュ４は、アドレスバス４１１よりアドレスを入力しキャッシュメモリ４４に保持するデータのアドレスを保持しその入力アドレスと保持アドレスとを比較することによりキャッシュヒットかキャッシュミスヒットかを判別するとともにアドレスをMEM1ラッチ４２とセレクタ４３とに出力しキャッシュミスヒットの場合はキャッシュメモリ４４と外部メモリ４５とにアドレスを出力するとともに入力アドレスを保持アドレスに変更するキャッシュヒット検出回路４１と、クロック同期でキャッシュヒット検出回路４１の出力アドレスを保持するMEM1ラッチ４２と、高速ピッチフラグ３５が０のときキャッシュヒット検出回路４１の出力アドレスを選択し高速ピッチフラグ３５が１のときMEM1ラッチ４２の出力アドレスを選択するセレクタ４３と、キャッシュヒットの場合セレクタ４３からの出力アドレスを入力しキャッシュヒットの場合そのアドレスのメモリからデータを出力しキャッシュミスヒットの場合外部メモリ４５よりデータを入力しそのデータを出力すると共にセレクタ４３からの出力アドレスを入力したアドレスのメモリからデータを書き込むキャッシュメモリ４４とからなり、中央演算処理装置３からアドレスをキャッシュヒット検出回路４１へ転送するアドレスバス４１１と、キャッシュヒット検出回路４１からアドレスを外部メモリ４５へ転送するアドレスバス４１２と、外部メモリ４５からデータをキャッシュメモリ４４へ転送するデータバス４１３と、キャッシュメモリ４４からデータを中央演算処理装置３へ転送するデータバス４１４と接続する。外部メモリ４５は、アドレスバス４１２よりアドレスを入力しそのアドレスのメモリからデータを出力しデータバス４１３へデータを出力する。
【００４６】
以上のように構成された本発明の第二の実施の形態による情報処理装置について、クロック周波数が低速の場合の高速の場合とに分けてその動作を説明する。ここでは加算を連続で実行する処理を例示する。例示プログラムを以下に示す。命令１：MOV  (A0),D1(A0レジスタの値のアドレスに格納されるデータをD1レジスタに格納する)命令２：ADD  D0,D1(D0レジスタとD1レジスタの加算を行い、その結果をD1レジスタに格納する)なお、データキャッシュ４はロードするデータを保持すると仮定する。
（１）クロック周波数が５０メガヘルツを超え１００メガヘルツ以下の場合
図４はクロックの周波数が１００メガヘルツ、即ちマシンサイクルが１０ナノ秒で動作する例を示している。この場合高速ピッチフラグ３５はセットされている。命令実行回路３３のメモリアクセスはMEM2ステージで処理が完了する。同図は、パイプラインのIFステージ、DECステージ、EXステージ、MEM1ステージ、MEM2ステージ、WBステージの処理時間とデータキャッシュの処理時間をマシンサイクル毎に示している。
【００４７】
（タイミング１）命令１：命令フェッチ回路３１は命令を読出す（処理時間は７ナノ秒）。
【００４８】
（タイミング２）命令１：読出された命令が命令解読回路３２で解読される（同９ナノ秒）。
命令２：命令フェッチ回路３１は命令を読出す（同７ナノ秒）。
【００４９】
（タイミング３）命令１：命令によって指示されたメモリアクセス時のアドレスデータが、レジスタ３３１から読出され、バス３３２ａを介し、セレクタ３３３においてバス３３２ａを選択されて、EXラッチ３３５に格納される（同５ナノ秒）。
命令２：読出された命令が命令解読回路３２で解読される（同９ナノ秒）。
【００５０】
（タイミング４）命令１：EXラッチ３３５に格納されたアドレスがアドレスバス４１１を介してデータキャッシュ４のキャッシュヒット検出回路４１に転送される。キャッシュヒット検出回路４１において入力したアドレスがキャッシュメモリ４４に格納されているかどうかを判別されると共に、キャッシュヒット検出回路４１を通過してMEM1ラッチ４２に格納される（同８ナノ秒）。キャッシュヒット検出回路４１は入力データのキャッシュヒットかキャッシュミスヒットかを判別し、入力アドレスをキャッシュメモリ４４に出力する。キャッシュメモリ４４は入力アドレスに格納されているデータを出力中でこのステージが終了する。セレクタ３３６はデータキャッシュ４から転送されたデータを選択するがこのデータは任意の値を持つ。MEM1ラッチ３３７はセレクタ３３６の出力値（任意データ）に格納される（同８ナノ秒）。
命令２：入力データが未だメモリアクセス中なので演算実行待ちにされる。
【００５１】
（タイミング５）命令１：高速ピッチフラグ３５が１なのでセレクタ４３はMEM1ラッチ４２に格納されたアドレスを選択し、キャッシュメモリ４４においてセレクタ４３より入力されたアドレスに格納されるデータが読出され、このデータはデータバス４１４を介して中央演算処理装置３に転送される。セレクタ３３８はデータキャッシュ４からのデータを選択し、MEM2ラッチ３３９はセレクタ３３８の出力データを格納する（同１０ナノ秒）。
命令２：高速ピッチフラグ３５がセットされているので、パイプライン制御回路３４により命令実行回路３３は、入力データが未だメモリアクセス中なので演算実行待ちにされる。
【００５２】
（タイミング６）命令１：MEM2ラッチ３３９に格納されたデータがバス３３２ｃからレジスタ３３１に格納される（同５ナノ秒）。
命令２：高速ピッチフラグ３５がセットされているので、パイプライン制御回路３４により命令実行回路３３は、MEM2ラッチ３３９に格納されているデータをバイパスしセレクタ３４０に転送され、セレクタ３４０は高速ピッチフラグ１５の値１によりMEM2ラッチ３３９を選択し、命令によって指示されたオペランドデータが、レジスタ３３１から読出され、バス３３２ａとセレクタ３４０の出力値を選択するセレクタ３３３の出力とを入力とを用いて演算器３３４で加算されてその演算結果がEXラッチ３３５に格納される（同９ナノ秒）。
【００５３】
（タイミング７）命令２：EXラッチ３３５に格納された演算結果をセレクタ３３６に転送され、セレクタ３３６はEXラッチ３３５の出力値を選択し、セレクタ３３６の出力値はMEM1ラッチ３３７に格納される（同１ナノ秒）。
【００５４】
（タイミング８）命令２：MEM1ラッチ３３７に格納された演算結果をセレクタ３３８に転送され、セレクタ３３８はMEM1ラッチ３３７の出力値を選択し、セレクタ３３６の出力値はMEM2ラッチ３３９に格納される（同１ナノ秒）。
【００５５】
（タイミング９）命令２：MEM1ラッチ３３７に格納された演算結果がバス３３２ｃからレジスタ３３１に格納される（同５ナノ秒）。
（２）クロック周波数が５０メガヘルツ以下（低速）の場合
図５に示したように、クロックの周波数が５０メガヘルツ、即ちマシンサイクルが２０ナノ秒で動作する例を示している。この場合高速ピッチフラグ３５はクリアされている。命令実行回路３３のメモリアクセスはMEM1ステージで演算処理が完了する。同図は、メモリアクセスの前後のパイプラインのEXステージ、MEM1ステージ、MEM2ステージ、WBステージの処理時間とデータキャッシュの処理時間をマシンサイクル毎に示している。
【００５６】
（タイミング１）命令１：命令フェッチ回路３１は命令を読出す（処理時間は７ナノ秒）。
【００５７】
（タイミング２）命令１：読出された命令が命令解読回路３２で解読される（同９ナノ秒）。
命令２：命令フェッチ回路３１は命令を読出す（同７ナノ秒）。
【００５８】
（タイミング３）命令１：命令によって指示されたメモリアクセス時のアドレスデータが、レジスタ３３１から読出され、バス３３２ａとバス３３２ｂを選択するセレクタ３３３の出力と入力とを用いて演算器３３４を転送してEXラッチ３３５に格納される（同５ナノ秒）。
命令２：読出された命令が命令解読回路３２で解読される（同９ナノ秒）。
【００５９】
（タイミング４）命令１：EXラッチ３３５の出力値はアドレスバス４１１を介してデータキャッシュ４のキャッシュヒット検出回路４１に転送される。キャッシュヒット検出回路４１において入力したアドレスがキャッシュメモリ４４に格納されているかどうかを判別されると共に、キャッシュヒット検出回路４１を通過し、セレクタ４３において高速ピッチフラグ３５が０なのでキャッシュヒット検出回路４１から出力されたアドレスが選択され、キャッシュメモリ４４においてセレクタ４３より入力されたアドレスに格納されるデータを読出される。キャッシュメモリ４４の出力データがデータバス４１４を介して中央演算処理装置３のセレクタ３３６に転送される。セレクタ３３６はデータキャッシュ４から転送されたデータを選択する。MEM1ラッチ３３７はセレクタ３３６の出力値に格納される（同１８ナノ秒）。
命令２：入力データが未だメモリアクセス中なので演算実行待ちにされる。
【００６０】
（タイミング５）命令１：セレクタ３３８においてデータキャッシュ４から転送されたデータが選択され、MEM2ラッチ３３９に格納される（同１ナノ秒）。
命令２：高速ピッチフラグ３５がクリアされているので、パイプライン制御回路３４により命令実行回路３３は、MEM1ラッチ３３７に格納されているデータをバイパスしセレクタ３４０に転送され、セレクタ３４０は高速ピッチフラグ３５の値０によりMEM1ラッチ３３７を選択し、命令によって指示されたオペランドデータが、レジスタ３３１から読出され、バス３３２ａとセレクタ３４０の出力値を選択するセレクタ３３３の出力と入力とを用いて演算器３３４で加算されてその演算結果がEXラッチ３３５に格納される（同９ナノ秒）。
【００６１】
（タイミング６）命令１：MEM2ラッチ３３９に格納されたデータがバス３３２ｃからレジスタ３３１に格納される（同５ナノ秒）。
命令２：EXラッチ３３５に格納された演算結果をセレクタ３３６に転送され、セレクタ３３６はEXラッチ３３５の出力値を選択し、セレクタ３３６の出力値はMEM1ラッチ３３７に格納される（同１ナノ秒）。
【００６２】
（タイミング７）命令２：MEM1ラッチ３３７に格納された演算結果をセレクタ３３８に転送され、セレクタ３３８はMEM1ラッチ３３７の出力値を選択し、セレクタ３３６の出力値はMEM2ラッチ３３９に格納される（同１ナノ秒）。
【００６３】
（タイミング８）命令２：MEM1ラッチ３３７に格納された演算結果がバス３３２ｃからレジスタ３３１に格納される（同５ナノ秒）。
【００６４】
以上のように本発明の第二の実施の形態によれば、高速ピッチフラグ３５をセットすることにより、キャッシュの動作周波数に応じてパイプライン段数を変化させインタロックによる性能劣化が生じないようにすることができる。さらに、パイプライン段数を変化させるとともにフォワーディングパスを切り替えることによりインタロック期間が短縮でき性能を一層改善することができる。
【００６５】
なお、本発明の第二の実施の形態において、MEM2ステージとWBステージを１つのステージで行ってもよい。この場合パイプライン段数は５となり、クロック周波数が５０メガヘルツを超える場合はWBステージを１マシンサイクルだけ伸張して２マシンサイクルで完結するようにしてもよい。
【００６６】
また、本発明の第一の実施の形態では、バイパスを切り替えるセレクタ１４１はバイパス切替フラグ１５によって切り替えているが、この切り替え方法はパイプライン処理制御回路１４の内部信号によって切り替えてもよいし、外部端子で切り替えてもよいし、またバイパスが必要な特定命令によって切り替えてもよい。
【００６７】
また、以上の本発明の実施の形態では、いずれもパイプラインにおける実行ステージの処理時間が他のステージに比べて長くなる場合について述べているが、律則するステージが実行ステージのほか、命令解読ステージを含めいかなるステージであっても本発明が応用可能であることは言うまでもない。
【００６８】
また、上記実施の形態では、高速ピッチフラグ３５は、動作クロックの周波数が所定の周波数（５０MHz）を越えるか以下かにより設定された。これ以外にも供給される電源電圧値に応じて設定してもよい。というのは、一般に電源電圧が高いと回路の遅延時間が小さく、低いと大きくなるので、例えばデータ処理装置の電源電圧が５Ｖの場合と３Ｖの場合とで高速ピッチフラグ３５の設定を使い分ければよい。
【００６９】
【発明の効果】
以上のように本発明に係るデータ処理装置は、パイプライン段数がｎ段で機械語命令をパイプライン処理する処理手段と、前記処理手段の中にあって、ｎ以下のｉ段目の処理結果をｉ以下のｋ段目の入力に転送する第１の転送手段と、前記処理手段の中にあって、ｎ以下でかつｉより大きいｊ段目の処理結果をｋ段目の入力に転送する第２の転送手段と、前記処理手段の中にあって、前記第１の転送手段の転送結果と前記第２の転送結果との何れかを選択してｋ段目の入力とする切り替え手段と、パイプライン処理される命令のｋ段目の入力が、前記命令に先行する命令のパイプライン処理におけるｉ段目で決定される内容を必要とする第１の状態と、前記命令に先行する命令のパイプライン処理におけるｊ段目で決定される内容を必要とする第２の状態とを検出する検出手段と、所定の条件に応じて、前記検出手段が前記第１の状態を検出した場合にのみ、前記切り替え手段に対して前記第１の転送結果を選択する第１の指示を与えるか、または、前記検出手段が前記第１および第２の状態を検出した場合に、前記切り替え手段に対して前記第２の転送結果を選択する第２の指示を与える選択制御手段とを備え、前記選択制御手段は、前記機械語命令の組合せが、前記第１の状態を多く発生させるか、前記第２の状態を多く発生させるかを指定する指定手段を更に備え、前記指定手段により、前記第１の状態を多く発生させると指定された場合には、前記切り替え手段に対して前記第１の指示を与え、前記第２の状態を多く発生させると指定された場合には、前記切り替え手段に対して前記第２の指示を与える。この構成によれば、データの依存性を検出して第１の転送手段と第２の転送手段とを切り替える手段が不要になり、その分のハードウェアコスト及び消費電力が削減できる。また、第１の転送手段と第２の転送手段とのいずれかが他に比べて遅延時間の長い、いわゆるクリティカルパスであることが判明した場合、意図的にその転送手段を利用しないように設定することで動作周波数の向上が図れる。
【００７０】
また、本発明に係るデータ処理装置は、キャッシュメモリのアクセスを行う段を含む複数の段からなり、機械語命令をパイプライン処理する処理手段を有するデータ処理装置であって、前記キャッシュメモリのアクセスを行う段の段数がａ段とａより大きいｂ段とに可変であり、前記データ処理装置はさらに、前記キャッシュメモリのアクセスを行う段の段数がａ段，ｂ段の時に処理手段のパイプライン段数をそれぞれｎ段と（ｎ＋ｂ−ａ）段とに切り替える切り替え手段を備える。この構成によれば、キャッシュメモリのアクセスをｂ段にすることで動作周波数が向上する。また、動作周波数が低い場合は、キャッシュメモリのアクセスをａ段にすることによりデータ依存によるインタロック期間が短縮でき性能が改善される。
【図面の簡単な説明】
【図１】本発明の第一の実施の形態におけるデータ処理装置の構成を示すブロック図
【図２】同実施形態によるデータ処理装置の動作タイミング図
【図３】本発明の第二の実施の形態におけるデータ処理装置の構成を示すブロック図
【図４】同実施形態におけるデータ処理装置の動作タイミング図
【図５】同動作タイミング図
【図６】従来のデータ処理装置の構成を示すブロック図
【図７】従来のデータ処理装置の動作タイミング図
【図８】同動作タイミング図
【図９】従来のデータ処理装置の構成を示すブロック図
【図１０】従来のデータ処理装置の動作タイミング図
【図１１】同動作タイミング図
【符号の説明】
１  中央演算処理装置
２  データキャッシュ
３  中央演算処理装置
４  データキャッシュ
１１  命令フェッチ回路
１２  命令解読回路
１３  命令実行回路
１４  パイプライン処理制御回路
１５  バイパス切替フラグ
２１  キャッシュヒット検出回路
２２  キャッシュメモリ
２３  外部メモリ
３１  命令フェッチ回路
３２  命令解読回路
３３  命令実行回路
３４  パイプライン処理制御回路
３５  高速ピッチフラグ
４１  キャッシュヒット検出回路
４２  MEM1ラッチ
４３  セレクタ
４４  キャッシュメモリ
４５  外部メモリ
１３１  レジスタ
１３２ａ〜１３２ｄ  バス
１３３  セレクタ
１３４  演算器
１３５  第１EXラッチ
１３６  第２EXラッチ
１３７  セレクタ
１３８  セレクタ
１３９  第１MEMラッチ
１４０  第２MEMラッチ
１４１  セレクタ
２１１  アドレスバス
２１２  アドレスバス
２１３  データバス
２１４  データバス
３３１  レジスタ
３３２ａ〜３３２ｄ  バス
３３３  セレクタ
３３４  演算器
３３５  EXラッチ
３３６  セレクタ
３３７  MEM1ラッチ
３３８  セレクタ
３３９  MEM2ラッチ
３４０  セレクタ
４１１  アドレスバス
４１２  アドレスバス
４１３  データバス
４１４  データバス
【図１】
0003541623.tif 000002
【図２】
0003541623.tif 000003
【図３】
0003541623.tif 000004
【図４】
0003541623.tif 000005
【図５】
0003541623.tif 000006
【図６】
0003541623.tif 000007
【図７】
0003541623.tif 000008
【図８】
0003541623.tif 000009
【図９】
0003541623.tif 000010
【図１０】
0003541623.tif 000011
【図１１】
0003541623.tif 000012