(57)【要約】【課題】  従来、キャッシュミス或いはメモリアクセス競合により書き込み失敗、若しくは、読み出し失敗となった場合、全てのパイプラインをストールするためデータ処理装置の性能が低下することになっていた。【解決手段】  データメモリ４１８と、該データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるノンストーリングライトバック制御回路４２５と、を備えるように構成する。【選択図】      図４
2007102333.tif 000002
【特許請求の範囲】
【請求項１】
データメモリと、
該データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるノンストーリングライトバック制御回路と、を備えることを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、前記後続命令が前記データメモリにデータを書き込む書込命令であり、且つ、キャッシュミス或いはメモリアクセス競合により書き込み失敗となった先行する書込命令と同じ書き込みアドレスを持つ場合、当該先行する書込命令を無効にすることを特徴とするデータ処理装置。
【請求項３】
データメモリと、
該データメモリからデータを読み出す読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、該読み出し失敗となった前記読出命令のアクセス内容に依存しない限り後続命令を実行し続けるノンストーリングライトバック制御回路と、を備えることを特徴とするデータ処理装置。
【請求項４】
請求項３に記載のデータ処理装置において、さらに、前記後続命令の演算結果であるデータを書き込むレジスタファイルを備え、
前記ノンストーリングライトバック制御回路は、前記後続命令の演算結果であるデータをレジスタファイルに書き込むとき、同時にキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令が最後に出したデータを該レジスタファイルに書き込むライトバック競合が発生する場合に、優先権によってライトバックデータを前記レジスタファイルに書き込むようにすることを特徴とするデータ処理装置。
【請求項５】
データメモリアクセス機能を持ち、パイプライン処理を行うデータ処理方法であって、
データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるようにしたことを特徴とするデータ処理方法。
【請求項６】
請求項５に記載のデータ処理方法において、前記後続命令が前記データメモリにデータを書き込む書込命令である場合、且つ、キャッシュミス或いはメモリアクセス競合により書き込み失敗となった先行する書込命令と同じ書き込みアドレスを持つ場合、当該先行する書込命令を無効にすることを特徴とするデータ処理方法。
【請求項７】
データメモリアクセス機能を持ち、パイプライン処理を行うデータ処理方法であって、
データメモリからデータを読み出す読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、該読み出し失敗となった前記読出命令のアクセス内容に依存しない限り後続命令を実行し続けるようにしたことを特徴とするデータ処理方法。
【請求項８】
請求項７に記載のデータ処理方法において、前記後続命令の演算結果であるデータをレジスタファイルに書き込むとき、同時にキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令が最後に出したデータを前記レジスタファイルに書き込むライトバック競合が発生する場合に、優先権によってライトバックデータを前記レジスタファイルに書き込むことを特徴とするデータ処理方法。
【請求項９】
請求項８に記載のデータ処理方法において、前記パイプラインの実行状態によってＰＳＷＡ優先権およびライトバック権を生成し、前記データメモリから読み出したデータおよび演算結果であるデータをライトバックし、保留し、或いは、廃棄することを特徴とするデータ処理方法。
【請求項１０】
請求項７に記載のデータ処理方法において、前記後続命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令のアクセス内容に依存することなく、同じライトバックアドレスを持つ場合、当該先行する読出命令を無効にすることを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびデータ処理方法に関し、特に、データメモリアクセス機能を持ち、ＲＩＳＣ（Reduced Instruction Set Computer）方式でパイプライン処理を行うデータ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
従来、ＲＩＳＣパイプラインにおけるライトバック機能を有するＲＩＳＣパイプライン処理を行うデータ処理装置が研究開発されている。
【０００３】
図１はこのようなデータ処理装置の基本構成を示すブロック図である。図１に示すデータ処理装置において、例えば、ＲＩＳＣパイプランは、ＩＦ（Instruction Fetch：命令フェッチ）、ＤＣ（Decoding：デコーディング）、ＥＸ（Execution：実行）、ＭＡ（Memory Access：メモリアクセス）、および、ＷＢ（Write Back：ライトバック）というステージを備えている。そして、各命令は、ＩＦ→ＤＣ→ＥＸ→ＭＡ→ＷＢという順序で逐次に実行される。
【０００４】
すなわち、ＩＦステージにおいて、命令アドレス生成回路１０１によって生成された命令アドレスレジスタ１０２（ＩＡ）に従って命令メモリ１０３から命令をフェッチし、命令レジスタ１０４（ＩＲ）へ書き込む。レジスタファイル１０５から演算用オペランドを読み出すためのレジスタファイルアドレスは、命令メモリ１０３からフェッチされた命令コードから抽出され、レジスタファイル１０５へ転送される。同時に、命令アドレス生成回路１０１は、インクリメントおよび分岐により次の命令アドレスを生成する。
【０００５】
ＤＣステージにおいて、命令レジスタ１０４の出力を命令デコーダ１０６（ＤＥＣ）によりデコードし、即値データ、命令種類信号、ライトバック用レジスタアドレスを出力する。レジスタファイル１０５から読み出した演算オペランドは、即値データおよび内部データバス１２１，１２２，１２３，１２４でバイパスされたデータと共に適宜選択され、演算器１１２（ＡＬＵ）の入力レジスタ１１０（ＳＡ），１１１（ＳＢ）およびデータメモリにデータを書き込む命令（書込命令）用の書き込みデータレジスタ１０９（ＳＤ）へ転送される。同時に、デコーダ１０６が出力したライトバック用レジスタアドレスおよび命令種類信号は、ＥＲレジスタ１０７（ＥＲ）およびＥＩレジスタ１０８（ＥＩ）に保存される。
【０００６】
ＥＸステージにおいて、演算器１１２は入力レジスタ１１０および１１１から演算オペランドを読み出し、ＥＩレジスタ１０８から出力された命令種類信号によって演算処理を行う。ここで、データメモリアクセス命令の場合、演算器１１２で計算されたメモリアドレスがデータメモリアドレスレジスタ１１６（ＭＡ）に保存される。同時に、書き込みデータレジスタ１０９から出力されたデータは、内部バス１２５，１２６，１２７でバイパスされたデータと共に適宜選択され、ＭＡステージ用書き込みデータレジスタ１１５（ＭＤ）に保存される。
【０００７】
また、データメモリアクセス命令ではない場合、演算器１１２で計算された演算結果が演算結果レジスタ１１７（ＥＲＤ）に保存される。ＥＲレジスタ１０７およびＥＩレジスタ１０８は、次のステージのためにＭＲレジスタ１１３（ＭＲ）およびＭＩレジスタ１１４（ＭＩ）へ内容をそのまま転送する。
【０００８】
ＭＡステージにおいて、データメモリアクセス命令ではない場合、演算結果レジスタ１１７の内容がそのままライトバックデータレジスタ１２０（ＷＤ）へ転送される。また、ＭＩレジスタ１１４から出力された命令種類信号によってデータメモリからデータを読み出す命令（読出命令）の場合、データメモリアドレスレジスタ１１６に従ってデータメモリ１１８からデータを読み出し、ライトバックデータレジスタ１２０へ転送される。
【０００９】
さらに、ＭＩレジスタ１１４から出力された命令種類信号によってデータメモリへの書込命令の場合、データメモリアドレスレジスタ１１６に従って書き込みデータレジスタ１１５の内容をデータメモリ１１８に書き込む。そして、演算命令やデータメモリからの読出命令の場合、次のステージのためにＭＲレジスタ１１３の内容がそのままライトバックアドレスレジスタ１１９（ＷＲ）へ転送される。
【００１０】
ＷＢステージにおいて、演算命令やデータメモリからの読出命令の場合、ライトバックデータレジスタ１２０の内容がライトバックアドレスレジスタ１１９に従ってレジスタファイル１０５に書き込まれる。
【００１１】
ここで、後続命令が先行命令の結果を使用する場合、先行命令の終了を待たずにその先行命令の結果を使用することができるために、内部バス１２１，１２２，１２３，１２４，１２５，１２６，１２７がそれぞれの先行命令の結果を対応するレジスタへバイパスするようになっている。
【００１２】
ところで、従来、回路規模を縮小してデータ処理を高速化するパイプラインに適したデータ処理装置として、既存のパイプラインレジスタおよびショートパスを削減し、後続命令が先行命令と同じ書込み対象を持つ場合にその先行命令の書込みを無効とし、後続命令のうちの処理結果が所定のステージよりも後のステージで確定する特定の命令をその特定の命令に先行する命令と同時に終了させるようにしたものが提案されている（例えば、特許文献１参照）。
【００１３】
さらに、従来、メモリアクセスと誤り訂正を同時に行って、通常のニブルモードのメモリアクセスの高速化を図るために、メモリ部から読み出されたデータをデータ保持部に一時的に保持し、データの読み出しと誤り訂正部の誤り訂正処理とをパイプライン処理で行うことによりアクセスを高速化するメモリアクセス制御装置も提案されている（例えば、特許文献２参照）。なお、この場合、訂正済みデータの同時書き戻しは不可能であるため、そのデータのアドレスを保持しておき、或いは、訂正済みのデータを記憶しておいて、プロセッサのメモリアクセス終了後に書き戻し処理を行うようになっている。
【００１４】
【特許文献１】特開平０９−０５０７３６号公報
【特許文献２】特開平０５−００６３１３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
図１を参照して説明した従来のデータ処理装置は、データメモリアクセス命令に対してＭＡステージでキャッシュミス或いはメモリアクセス競合によりメモリアクセス失敗となった場合、全てのパイプラインをストールしなければならなかった。なお、後続命令は、そのアクセス失敗となったデータメモリアクセス命令に関係ない場合でもブロッキングされることになっていた。
【００１６】
図２は図１に示すデータ処理装置におけるプログラムの一例を示す図である。図２において、データメモリからの読出命令ＬＤ（２００）は、レジスタファイルにあるレジスタＲ２のデータと即値データ０を加算し、演算結果をデータメモリアドレスとしてデータメモリ１１８からデータを読み出して、レジスタファイルにあるレジスタＲ１に書き込む。加算命令のＡＤＤ（２０１）は、レジスタＲ３とレジスタＲ４のデータを加算し、演算結果をレジスタＲ３に書き込む。加算命令のＡＤＤ（２０２）は、レジスタＲ４とレジスタＲ５のデータを加算し、演算結果をレジスタＲ４に書き込む。なお、命令２０２および２０３は、ＮＯＰ（No OPeration）命令である。
【００１７】
図３は図２に示すプログラムを実行した時のパイプラインの動作を説明するための図である。図３において、参照符号３００はパイプラインに対応したクロックを示し、また、３０１は命令２００に対応したパイプライン、３０２は命令２０１に対応したパイプライン、３０３は命令２０２に対応したパイプライン、３０４は命令２０３に対応したパイプライン、そして、３０５は命令２０４に対応したパイプラインを示している。なお、同じ列にあるステージは、それぞれ同じサイクルで同時に実行される。
【００１８】
図３に示されるように、ＬＤ命令２００がサイクル３で読み出し失敗となった場合、読み出し可能になるサイクル５までストールされる。さらに、後続命令２０１および２０２は、直接ＬＤ命令２００に関係なくても２サイクルブロッキングされる。従って、命令２０４と命令２０３との間には３サイクルのスロットが存在することになり、データ処理装置の性能が低下することになる。
【００１９】
本発明は上述したような課題を解決するためになされたもので、キャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行続けることができ、読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、読み出し失敗となった読出命令のアクセス内容に依存しない限り後続命令を実行し続けることができるデータ処理装置およびデータ処理方法の提供を目的とする。
【課題を解決するための手段】
【００２０】
本発明の第１の形態によれば、データメモリと、該データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるノンストーリングライトバック制御回路と、を備えることを特徴とするデータ処理装置が提供される。
【００２１】
本発明の第２の形態によれば、データメモリと、該データメモリからデータを読み出す読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、該読み出し失敗となった前記読出命令のアクセス内容に依存しない限り後続命令を実行し続けるノンストーリングライトバック制御回路と、を備えることを特徴とするデータ処理装置が提供される。
【００２２】
本発明の第３の形態によれば、データメモリアクセス機能を持ち、パイプライン処理を行うデータ処理方法であって、データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるようにしたことを特徴とするデータ処理方法が提供される。
【００２３】
本発明の第４の形態によれば、データメモリアクセス機能を持ち、パイプライン処理を行うデータ処理方法であって、データメモリからデータを読み出す読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、該読み出し失敗となった前記読出命令のアクセス内容に依存しない限り後続命令を実行し続けるようにしたことを特徴とするデータ処理方法が提供される。
【発明の効果】
【００２４】
本発明によれば、ある程度にデータメモリアクセス失敗のペナルティを隠して、パフォーマンスを向上することができる。特に、本発明によれば、データメモリへの書込命令の場合、キャッシュミスやメモリアクセス競合に関わらず、１サイクルで書込命令を完成するように遅延を隠蔽することが可能である。
【発明を実施するための最良の形態】
【００２５】
以下、本発明に係るデータ処理装置およびデータ処理方法の実施例を、添付図面を参照して詳述する。
【実施例１】
【００２６】
図４は本発明に係るデータ処理装置の第１実施例の基本構成を示すブロック図である。ここで、本第１実施例のデータ処理装置において、ＩＦステージおよびＤＣステージは、図１を参照して説明した従来のデータ処理装置と同様に構成されている。
【００２７】
すなわち、ＩＦステージにおいて、命令アドレス生成回路４０１によって生成された命令アドレスレジスタ４０２（ＩＡ）に従って命令メモリ４０３から命令をフェッチし、命令レジスタ４０４（ＩＲ）へ書き込む。レジスタファイル４０５から演算用オペランドを読み出すためのレジスタファイルアドレスは、命令メモリ４０３からフェッチされた命令コードから抽出され、レジスタファイル４０５へ転送される。同時に、命令アドレス生成回路４０１はインクリメントおよび分岐により次の命令アドレスを生成する。
【００２８】
ＤＣステージにおいて命令、レジスタ４０４の出力を命令デコーダ４０６（ＤＥＣ）によりデコードし、即値データ、命令種類信号、ライトバック用レジスタアドレスを出力する。レジスタファイル４０５から読み出した演算オペランドは、即値データおよび内部データバス４２６，４２７，４２８，４２９でバイパスされたデータと共に適宜選択され、演算器４１２（ＡＬＵ）の入力レジスタ４１０（ＳＡ），４１１（ＳＢ）およびデータメモリへの書込命令用書き込みデータレジスタ４０９（ＳＤ）へ転送される。同時に、デコーダ４０６が出力したライトバック用レジスタアドレスおよび命令種類信号は、ＥＲレジスタ４０８（ＥＲ）およびＥＩレジスタ４０７（ＥＩ）に保存される。
【００２９】
ＥＸステージにおいて、演算器４１２は入力レジスタ４１０および４１１から演算オペランドを読み出し、ＥＩレジスタ４０７から出力された命令種類信号によって演算処理を行う。ここで、データメモリアクセス命令の場合、演算器４１２で計算されたメモリアドレスがデータメモリアドレスレジスタ４１７（ＭＡ）に保存される。同時に、書き込みデータレジスタ４０９から出力されたデータは、内部バス４３０，４３１，４３２でバイパスされたデータと共に適宜選択され、ＭＡステージ用書き込みデータレジスタ４１６（ＭＤ）に保存される。
【００３０】
また、データメモリアクセス命令ではない場合、演算器４１２で計算された演算結果がＭＡステージを経由せずに直接ＷＢステージにある演算結果ライトバックレジスタ４２２（ＥＤ）に保存される。ＥＲレジスタ４０８およびＥＩレジスタ４０７も、ＭＡステージを経由せずに直接ＷＢステージにあるＷＥＲレジスタ４２３（ＷＥＲ）およびＷＥＩレジスタ４２４（ＷＥＩ）へ内容を転送する。ここでは、先行データメモリアクセス命令がキャッシュミス或いはメモリアクセス競合によりアクセス失敗となった場合でも、後続命令は失敗となった先行データメモリアクセス命令に関係ないならば、ブロックされることなく実行続けることが可能である。
【００３１】
ＤＭコントローラ４１３（ＤＭ）は、ＥＩレジスタ４０７とＭＭＩレジスタ４１４（ＭＭＩ）の命令種類信号を解析し、ＥＲレジスタ４０８とＭＭＲレジスタ４１５（ＭＭＲ）およびＭＡレジスタ４１７の内容を比較する。ＥＸステージにある命令がデータメモリへの書込命令であり、且つ、キャッシュミス或いはメモリアクセス競合により書き込み失敗となったＭＡステージに先行する書込命令と同じ書き込みアドレスを持つ場合には、ＭＡステージにある先行書込命令を無効にする。
【００３２】
また、ＥＸステージにある命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となったＭＡステージにある先行読出命令のアクセス内容に依存せず、且つ、同じライトバックアドレスを持つ場合には、ＭＡステージにある先行読出命令を無効にする。
【００３３】
ＭＡステージにおいて、ＭＭＩレジスタ４１４から出力された命令種類信号によってデータメモリへの書込命令の場合、データメモリアドレスレジスタ４１７に従って書き込みデータレジスタ４１６の内容をデータメモリ４１８に書き込む。ＭＭＩレジスタ４１４から出力された命令種類信号によってデータメモリからデータを読み出す命令（読出命令）の場合、データメモリアドレスレジスタ４１７に従ってデータメモリ４１８からデータを読み出し、読み出しデータライトバックデータレジスタ４２１（ＬＤ）へ転送する。ＭＭＩレジスタ４１４とＭＭＲレジスタ４１５の内容がそのままＷＭＩレジスタ４１９（ＷＭＲ）およびＷＭＲレジスタ（４２０）へ転送される。
【００３４】
ＷＢステージにおいて、先行読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合でも、後続命令は失敗となった先行読出命令に関係ない場合は実行を続けることができ、ＥＤレジスタ４２２にある後続命令の演算結果とＬＤレジスタ４２１にある読み出しデータを、同時にレジスタファイル４０５に書き込むというライトバック競合の発生が可能になる。ノンストーリングライトバック制御回路４２５は、ＷＭＩレジスタ４１９、ＷＭＲレジスタ４２０、ＷＥＲレジスタ４２３およびＷＥＩレジスタ４２４の内容を解析し、パイプラインをストールすることなく、演算結果であるデータおよびデータメモリから読み出来たデータをレジスタファイル４０５にライトバックし、保留し、或いは、廃棄することができる。
【００３５】
後続命令が先行命令の結果を使用する場合、先行命令の終了を待たずに先行命令の結果を使用することができるため、内部バス４２６，４２７，４２８，４２９，４３０，４３１および４３２がそれぞれの先行命令の結果を対応するレジスタへバイパスする。
【００３６】
次に、本発明に係る情報処理装置の第１実施例におけるノンストーリングライトバック回路の制御方法について説明する。
【００３７】
本第１実施例の情報処理装置のノンストーリングライトバック制御回路４２５において、ＥＤレジスタ４２２にある後続命令の演算結果とＬＤレジスタ４２１にある読み出しデータを同時にレジスタファイル４０５に書き込むというライトバック競合が発生する場合、ＥＤレジスタ４２２にある後続命令の演算結果は常に優先権を持つ。
【００３８】
ＷＢステージにおいて、ＥＤレジスタ４２２およびＬＤレジスタ４２１のどちらにもライトバックデータがない場合、ライトバック操作は行わない。
【００３９】
ＷＢステージにおいて、ＥＤレジスタ４２２およびＬＤレジスタ４２１にライトバックデータが１つしかない場合、そのデータをレジスタファイル４０５にライトバックする。
【００４０】
ＷＢステージにおいて、ＥＤレジスタ４２２およびＬＤレジスタ４２１の両方にライトバックデータがあり、且つ、ＷＥＲレジスタ４２３およびＷＭＲレジスタ４２０から出力したライトバックアドレスが同じ場合、ＥＤレジスタ４２２にあるデータをレジスタファイル４０５にライトバックし、そして、ＬＤレジスタ４２１にあるデータを廃棄する。
【００４１】
ＷＢステージにおいて、ＥＤレジスタ４２２およびＬＤレジスタ４２１の両方にライトバックデータがあり、且つ、ＷＥＲレジスタ４２３およびＷＭＲレジスタ４２０から出力したライトバックアドレスが違う場合、ＥＤレジスタ４２２にあるデータをレジスタファイル４０５にライトバックし、そして、ＬＤレジスタ４２１にあるデータをそのまま保持する。
【００４２】
図５は図４に示すデータ処理装置におけるプログラムの一例を示す図である。図５において、データメモリからの読出命令ＬＤ（５００）は、レジスタファイルにあるレジスタＲ２のデータと即値データ０を加算し、演算結果をデータメモリアドレスとしてデータメモリ４１８からデータを読み出して、レジスタファイルにあるレジスタＲ１に書き込む。
【００４３】
加算命令のＡＤＤ（５０１）は、レジスタＲ３とレジスタＲ４のデータを加算し、演算結果をレジスタＲ４に書き込む。加算命令のＡＤＤ（５０２）は、レジスタＲ５とレジスタＲ６のデータを加算し、演算結果をレジスタＲ６に書き込む。加算命令のＡＤＤ（５０３）は、レジスタＲ７とレジスタＲ８のデータを加算し、演算結果をレジスタＲ８に書き込む。加算命令のＡＤＤ（５０４）は、レジスタＲ２とレジスタＲ１のデータを加算し、演算結果をレジスタＲ１に書き込む。
【００４４】
データメモリからデータを読み出す命令（読出命令）ＬＤ（５０５）は、レジスタＲ３のデータと即値データ０を加算して、演算結果をデータメモリアドレスとしてデータメモリ４１８からデータを読み出して、レジスタＲ２に書き込む。加算命令のＡＤＤ（５０６）は、レジスタＲ９とレジスタＲ３のデータを加算し、演算結果をレジスタＲ３に書き込む。なお、命令５０７は、ＮＯＰ（No OPeration）命令である。
【００４５】
図６は図５に示すプログラムを実行した時のパイプラインの動作を説明するための図である。図６において、参照符号６００はパイプラインに対応したクロックを示し、また、６０１は命令５００に対応したパイプライン、６０２は命令５０１に対応したパイプライン、６０３は命令５０２に対応したパイプライン、６０４は命令５０３に対応したパイプライン、６０５は命令５０４に対応したパイプライン、６０６は命令５０５に対応したパイプライン、６０７は命令５０６に対応したパイプライン、そして、６０８は命令５０７に対応したパイプラインを示している。なお、同じ列にあるステージは、それぞれ同じサイクルで同時に実行される。
【００４６】
図６に示されるように、ＬＤ命令５００がサイクル３においてデータメモリ４１８から読み出し失敗となった場合でも、後続のＡＤＤ命令の実行を続ける。ＷＢステージにおいて、サイクル４にはＥＤレジスタ４２２にあるＡＤＤ命令５０１の演算結果しかないので、その演算結果をライトバックする。
【００４７】
サイクル５およびサイクル６では、ＥＤレジスタ４２２にあるＡＤＤ命令５０２および５０３の演算結果が優先権を持つので、ＥＤレジスタ４２２にあるデータをライトバックし、ＬＤレジスタ４２１にあるデータをそのまま保持する。ＡＤＤ命令５０４がＬＤ命令５００の読み出しデータを使用するので、サイクル５に内部バス４２６でバイパスされたＬＤレジスタ４２１にあるデータを使用することになる。
【００４８】
サイクル７では、ＷＭＲレジスタ４２０およびＷＥＲレジスタ４２３にあるライトバックアドレスが同じなので、ＥＤレジスタ４２２にあるデータが優先権を持ってライトバックされ、ＬＤレジスタ４２１にあるデータが廃棄される。サイクル８では、ＬＤ命令５０５がデータメモリ４１８から読み出し失敗となった場合でも、後続命令が実行を続ける。
【００４９】
サイクル９では、ＥＤレジスタ４２２にあるＡＤＤ命令５０６の演算結果しかないので、その演算結果をライトバックする。サイクル１０では、ＬＤレジスタ４２１にあるＬＤ命令５０５の読み出すデータしかないので、その読み出しデータをライトバックする。
【００５０】
上述したように、本発明に係るデータ処理装置の第１実施例によれば、サイクル３およびサイクル８において、データメモリ４１８からデータを読み出す読出命令が読み出し失敗となった場合でも、後続命令がブロックされることなくそのまま続けて実行されるので、データ処理装置の性能を向上することができる。
【実施例２】
【００５１】
図７は、本発明の第２実施例に係るデータ処理装置の基本構成を示すブロック図である。なお、図７において、参照符号７０１は命令アドレス生成回路、７０２は命令アドレスレジスタ（ＩＡ）、７０３は命令メモリ、７０４は命令レジスタ（ＩＲ）、７０６はデコーダ、および、７０７はＤＭコントローラを示している。さらに、参照符号７０９はＭＲレジスタ、７１０はＥＩレジスタ、７１１はＥＲレジスタ、７１２はＭＡレジスタ、７１３はＳＤレジスタ、７１４はＳＡレジスタ、および、７１５はＳＢレジスタを示している。
【００５２】
本第２実施例のデータ処理装置は、データメモリアクセス命令のメモリアドレスは、演算器７１７（ＡＬＵ）で計算された値ではなく、レジスタファイル７０５から読み出した値、および、内部バス７２５，７２６，７２７および７２８でバイパスされた値から適宜選択された値となるため、上述した第１実施例のデータ処理装置と比較すると、ＭＡステージおよびＥＸステージは同じステージになる。
【００５３】
ノンストーリングライトバック制御回路７２４は、ＷＭＩレジスタ７１８（ＷＭＩ）、ＷＥＩレジスタ７２３（ＷＥＩ）およびＭＩレジスタ７０８（ＭＩ）の内容を解析し、ＷＭＲレジスタ７１９（ＷＭＲ）およびＷＥＲレジスタ７２２（ＷＥＲ）のライトバックアドレスを比較して、ＰＳＷＡ優先権（Priority if Same Writeback Address：同じライトバックアドレスのときの優先権）およびライトバック権を生成する。
【００５４】
ＰＳＷＡ優先権およびライトバック権によって、ＥＤレジスタ７２１（ＥＤ）にある後続命令の演算結果とＬＤレジスタ７２０（ＬＤ）にある読み出しデータを同時にレジスタファイル７０５に書き込むというライトバック競合が発生する場合でも、パイプラインをストールすることなく、演算結果であるデータおよびデータメモリから読み出したデータをレジスタファイル７０５にライトバックし、保留し、或いは、廃棄することができる。
【００５５】
次に、本発明に係るデータ処理装置の第２実施例におけるノンストーリングライトバック回路の制御方法について説明する。
【００５６】
本第２実施例の情報処理装置のノンストーリングライトバック制御回路７２４においては、ＰＳＷＡ優先権およびライトバック権という概念がある。ＥＤレジスタ７２１にある後続命令の演算結果およびＬＤレジスタ７２０にある読み出しデータに対しては、ＷＥＲレジスタ７２２およびＷＭＲレジスタ７１９から出力したライトバックアドレスが同じ場合、ＰＳＷＡ優先権があるレジスタのデータをレジスタファイル７０５にライトバックすることができる。ライトバックアドレスが違う場合には、ライトバック権があるレジスタのデータをレジスタファイル７０５にライトバックすることができる。
【００５７】
本第２実施例の情報処理装置のノンストーリングライトバック制御回路７２４において、リセットした次のサイクルでＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００５８】
ＷＢステージにおいて、ＥＤレジスタ７２１およびＬＤレジスタ７２０のどちらにもライトバックデータがない場合、ライトバック操作は行わず、次のサイクルにＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００５９】
ＷＢステージにおいて、ＥＤレジスタ７２１およびＬＤレジスタ７２０にライトバックデータが１つしかない場合、そのデータにライトバック権を与え、次のサイクルにＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００６０】
ＷＢステージにおいて、ＥＤレジスタ７２１およびＬＤレジスタ７２０の両方にライトバックデータがあり、且つ、ＷＥＲレジスタ７２２およびＷＭＲレジスタ７１９から出力したライトバックアドレスが同じ場合、ＰＳＷＡ優先権があるレジスタのデータをライトバックし、他のデータを廃棄し、そして、次のサイクルにＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００６１】
ＷＢステージにおいて、ＥＤレジスタ７２１およびＬＤレジスタ７２０の両方にライトバックデータがあり、且つ、ＷＥＲレジスタ７２２およびＷＭＲレジスタ７１９から出力したライトバックアドレスが違う場合、もし、ＭＩステージ７０８の内容によってＭＡステージにある命令がデータメモリ７１６からの読出命令ならば、ＬＤレジスタ７２０にライトバック権を与えると共に、ＥＤレジスタ７２１にあるデータをそのまま保持し、そして、次のサイクルにＬＤレジスタ７２０にＰＳＷＡ優先権を与える。もし、ＭＩステージ７０８の内容によってＭＡステージにある命令がデータメモリからの読出命令ではないならば、ＥＤレジスタ７２１にライトバック権を与え、ＬＤレジスタ７２０にあるデータをそのまま保持し、そして、次のサイクルにＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００６２】
図８は図７に示すデータ処理装置におけるプログラムの一例を示す図である。図８において、データメモリからの読出命令ＬＤ（８００）は、レジスタファイル７０５にあるレジスタＲ２のデータをデータメモリアドレスとしてデータメモリ７１６からデータを読み出し、レジスタファイル７０５にあるレジスタＲ１に書き込む。加算命令のＡＤＤ（８０１）は、レジスタＲ２とレジスタＲ３のデータを加算し、演算結果をレジスタＲ３に書き込む。
【００６３】
加算命令のＡＤＤ（８０２）は、レジスタＲ２とレジスタＲ４のデータを加算し、演算結果をレジスタＲ４に書き込む。データメモリからの読出命令ＬＤ（８０３）は、レジスタＲ４のデータをデータメモリアドレスとしてデータメモリ７１６からデータを読み出して、レジスタＲ４に書き込む。
【００６４】
図９は図８に示すプログラムを実行した時のパイプラインの動作を説明するための図である。図９において、参照符号９００はパイプラインに対応したクロックを示し、また、９０１は命令８００に対応したパイプライン、９０２は命令８０１に対応したパイプライン、９０３は命令８０２に対応したパイプライン、そして、９０４は命令８０３に対応したパイプラインを示している。なお、同じ列にあるステージは、それぞれ同じサイクルで同時に実行される。
【００６５】
図９に示されるように、サイクル２において、ＬＤ命令８００がデータメモリ７１６から読み出し失敗となった場合でも、後続のＡＤＤ命令が実行を続ける。ＷＢステージにおいて、サイクル３では、ＥＤレジスタ７２１およびとＬＤレジスタ７２０のどちらにもライトバックデータがないので、ライトバック操作は行わず、サイクル４でＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００６６】
サイクル４では、ＥＤレジスタ７２１にあるＡＤＤ命令８０１の演算結果とＬＤレジスタ７２０（ＬＤ）にあるＬＤ命令８００の読み出しデータの両方あるが、ＷＥＲレジスタ７２２およびＷＭＲレジスタ７１９から出力したライトバックアドレスが違っており、また、ＭＩステージ７０８の内容によってＭＡステージにデータメモリ７１６からの読出命令がないので、ＥＤレジスタ７２１にライトバック権を与え、ＬＤレジスタ７２０にあるＬＤ命令８００の読み出しデータをそのまま保持し、そして、サイクル５でＥＤレジスタ７２１にＰＳＷＡ優先権を与える。
【００６７】
サイクル５では、ＥＤレジスタ７２１にあるＡＤＤ命令８０２の演算結果とＬＤレジスタ７２０にあるＬＤ命令８００の読み出しデータの両方あるが、ＷＥＲレジスタ７２２およびＷＭＲレジスタ７１９から出力したライトバックアドレスが違っており、また、ＭＩステージ７０８の内容によってＭＡステージにある命令８０３がデータメモリ７１６からの読出命令なので、ＬＤレジスタ７２０にライトバック権を与え、ＥＤレジスタ７２１にあるＡＤＤ命令８０２の演算結果をそのまま保持し、そして、サイクル６でＬＤレジスタ７２０にＰＳＷＡ優先権を与える。
【００６８】
ＬＤ命令８０３がＡＤＤ命令８０２の演算結果を使用するので、サイクル４で内部バス７２８によりバイパスされた演算器７１７の演算結果を使用する。サイクル６では、ＥＤレジスタ７２１にあるＡＤＤ命令８０２の演算結果とＬＤレジスタ７２０にあるＬＤ命令８０３の読み出しデータの両方があり、ＷＥＲレジスタ７２２およびＷＭＲレジスタ７１９から出力したライトバックアドレスが同じで、また、ＬＤレジスタ７２０がＰＳＷＡ優先権を持つため、ＬＤレジスタ７２０にあるＬＤ命令８０３の読み出しデータをライトバックし、そして、ＥＤレジスタ７２１にあるＡＤＤ命令８０２の演算結果を廃棄する。
【００６９】
上述したように、本発明に係るデータ処理装置の第２実施例によれば、サイクル２において、データメモリ７１６からの読出命令が読み出し失敗となった場合でも、後続命令がブロックされることなくそのまま続けて実行されるので、データ処理装置の性能を向上することができる。
【００７０】
（付記１）
データメモリと、
該データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるノンストーリングライトバック制御回路と、を備えることを特徴とするデータ処理装置。
【００７１】
（付記２）
付記１に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、前記後続命令が前記データメモリにデータを書き込む書込命令であり、且つ、キャッシュミス或いはメモリアクセス競合により書き込み失敗となった先行する書込命令と同じ書き込みアドレスを持つ場合、当該先行する書込命令を無効にすることを特徴とするデータ処理装置。
【００７２】
（付記３）
データメモリと、
該データメモリからデータを読み出す読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、該読み出し失敗となった前記読出命令のアクセス内容に依存しない限り後続命令を実行し続けるノンストーリングライトバック制御回路と、を備えることを特徴とするデータ処理装置。
【００７３】
（付記４）
付記３に記載のデータ処理装置において、さらに、前記後続命令の演算結果であるデータを書き込むレジスタファイルを備え、
前記ノンストーリングライトバック制御回路は、前記後続命令の演算結果であるデータをレジスタファイルに書き込むとき、同時にキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令が最後に出したデータを該レジスタファイルに書き込むライトバック競合が発生する場合に、優先権によってライトバックデータを前記レジスタファイルに書き込むようにすることを特徴とするデータ処理装置。
【００７４】
（付記５）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、前記パイプラインの実行状態によってＰＳＷＡ優先権およびライトバック権を生成し、前記データメモリから読み出したデータおよび演算結果であるデータをライトバックし、保留し、或いは、廃棄することを特徴とするデータ処理装置。
【００７５】
（付記６）
付記３に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、前記後続命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令のアクセス内容に依存することなく、同じライトバックアドレスを持つ場合、当該先行する読出命令を無効にすることを特徴とするデータ処理装置。
【００７６】
（付記７）
付記３に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＥＤレジスタにある後続命令の演算結果とＬＤレジスタにある読み出しデータを同時に前記レジスタファイルに書き込むというライトバック競合が発生する場合、前記ＥＤレジスタにある後続命令の演算結果に優先権を与えることを特徴とするデータ処理装置。
【００７７】
（付記８）
付記３に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが同じ場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータを廃棄することを特徴とするデータ処理装置。
【００７８】
（付記９）
付記３に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが違う場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータをそのまま保持することを特徴とするデータ処理装置。
【００７９】
（付記１０）
付記３に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＭＩレジスタ、ＷＥＩレジスタおよびＭＩレジスタの内容を解析し、ＷＭＲレジスタおよびＷＥＲレジスタのライトバックアドレスを比較して、ＰＳＷＡ優先権およびライトバック権を生成することを特徴とするデータ処理装置。
【００８０】
（付記１１）
付記１０に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、前記ＰＳＷＡ優先権および前記ライトバック権によって、ＥＤレジスタにある後続命令の演算結果とＬＤレジスタにある読み出しデータを同時に前記レジスタファイルに書き込むというライトバック競合が発生する場合に、演算結果であるデータおよび前記データメモリから読み出したデータを前記レジスタファイルにライトバックし、保留し、或いは、廃棄することを特徴とするデータ処理装置。
【００８１】
（付記１２）
付記１０に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタのどちらにもライトバックデータがない場合、ライトバック操作は行わず、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理装置。
【００８２】
（付記１３）
付記１０に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタにライトバックデータが１つしかない場合、そのデータに前記ライトバック権を与え、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理装置。
【００８３】
（付記１４）
付記１０に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、前記ＷＥＲレジスタおよび前記ＷＭＲレジスタから出力したライトバックアドレスが同じ場合、前記ＰＳＷＡ優先権があるレジスタのデータをライトバックし、他のデータを廃棄し、および、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理装置。
【００８４】
（付記１５）
付記１０に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、前記ＷＥＲレジスタおよび前記ＷＭＲレジスタから出力したライトバックアドレスが違う場合、
もし、ＭＩステージの内容によってＭＡステージにある命令が前記データメモリからの読出命令ならば、前記ＬＤレジスタに前記ライトバック権を与えると共に、前記ＥＤレジスタにあるデータをそのまま保持し、および、次のサイクルにＬＤレジスタに前記ＰＳＷＡ優先権を与え、
もし、前記ＭＩステージの内容によって前記ＭＡステージにある命令が前記データメモリからの読出命令ではないならば、前記ＥＤレジスタに前記ライトバック権を与え、前記ＬＤレジスタにあるデータをそのまま保持し、および、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理装置。
【００８５】
（付記１６）
データメモリアクセス機能を持ち、パイプライン処理を行うデータ処理方法であって、
データメモリにデータを書き込む書込命令がキャッシュミス或いはメモリアクセス競合により書き込み失敗となった場合に、メモリアクセス命令ではない限り後続命令を実行し続けるようにしたことを特徴とするデータ処理方法。
【００８６】
（付記１７）
付記１６に記載のデータ処理方法において、前記後続命令が前記データメモリにデータを書き込む書込命令である場合、且つ、キャッシュミス或いはメモリアクセス競合により書き込み失敗となった先行する書込命令と同じ書き込みアドレスを持つ場合、当該先行する書込命令を無効にすることを特徴とするデータ処理方法。
【００８７】
（付記１８）
データメモリアクセス機能を持ち、パイプライン処理を行うデータ処理方法であって、
データメモリからデータを読み出す読出命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった場合に、メモリアクセス命令ではない限り、または、該読み出し失敗となった前記読出命令のアクセス内容に依存しない限り後続命令を実行し続けるようにしたことを特徴とするデータ処理方法。
【００８８】
（付記１９）
付記１８に記載のデータ処理方法において、前記後続命令の演算結果であるデータをレジスタファイルに書き込むとき、同時にキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令が最後に出したデータを前記レジスタファイルに書き込むライトバック競合が発生する場合に、優先権によってライトバックデータを前記レジスタファイルに書き込むことを特徴とするデータ処理方法。
【００８９】
（付記２０）
付記１９に記載のデータ処理方法において、前記パイプラインの実行状態によってＰＳＷＡ優先権およびライトバック権を生成し、前記データメモリから読み出したデータおよび演算結果であるデータをライトバックし、保留し、或いは、廃棄することを特徴とするデータ処理方法。
【００９０】
（付記２１）
付記１８に記載のデータ処理方法において、前記後続命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令のアクセス内容に依存することなく、同じライトバックアドレスを持つ場合、当該先行する読出命令を無効にすることを特徴とするデータ処理方法。
【００９１】
（付記２２）
付記１８に記載のデータ処理方法において、ＥＤレジスタにある後続命令の演算結果とＬＤレジスタにある読み出しデータを同時に前記レジスタファイルに書き込むというライトバック競合が発生する場合、前記ＥＤレジスタにある後続命令の演算結果に優先権を与えることを特徴とするデータ処理方法。
【００９２】
（付記２３）
付記１８に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが同じ場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータを廃棄することを特徴とするデータ処理方法。
【００９３】
（付記２４）
付記１８に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが違う場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータをそのまま保持することを特徴とするデータ処理方法。
【００９４】
（付記２５）
付記１８に記載のデータ処理方法において、ＷＭＩレジスタ、ＷＥＩレジスタおよびＭＩレジスタの内容を解析し、ＷＭＲレジスタおよびＷＥＲレジスタのライトバックアドレスを比較して、ＰＳＷＡ優先権およびライトバック権を生成することを特徴とするデータ処理方法。
【００９５】
（付記２６）
付記２５に記載のデータ処理方法において、前記ＰＳＷＡ優先権および前記ライトバック権によって、ＥＤレジスタにある後続命令の演算結果とＬＤレジスタにある読み出しデータを同時に前記レジスタファイルに書き込むというライトバック競合が発生する場合に、演算結果であるデータおよび前記データメモリから読み出したデータを前記レジスタファイルにライトバックし、保留し、或いは、廃棄することを特徴とするデータ処理方法。
【００９６】
（付記２７）
付記２５に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタのどちらにもライトバックデータがない場合、ライトバック操作は行わず、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理方法。
【００９７】
（付記２８）
付記２５に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタにライトバックデータが１つしかない場合、そのデータに前記ライトバック権を与え、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理方法。
【００９８】
（付記２９）
付記２５に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、前記ＷＥＲレジスタおよび前記ＷＭＲレジスタから出力したライトバックアドレスが同じ場合、前記ＰＳＷＡ優先権があるレジスタのデータをライトバックし、他のデータを廃棄し、および、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理方法。
【００９９】
（付記３０）
付記２５に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、前記ＷＥＲレジスタおよび前記ＷＭＲレジスタから出力したライトバックアドレスが違う場合、
もし、ＭＩステージの内容によってＭＡステージにある命令が前記データメモリからの読出命令ならば、前記ＬＤレジスタに前記ライトバック権を与えると共に、前記ＥＤレジスタにあるデータをそのまま保持し、および、次のサイクルにＬＤレジスタに前記ＰＳＷＡ優先権を与え、
もし、前記ＭＩステージの内容によって前記ＭＡステージにある命令が前記データメモリからの読出命令ではないならば、前記ＥＤレジスタに前記ライトバック権を与え、前記ＬＤレジスタにあるデータをそのまま保持し、および、次のサイクルに前記ＥＤレジスタに前記ＰＳＷＡ優先権を与えることを特徴とするデータ処理方法。
【産業上の利用可能性】
【０１００】
本発明は、主としてデータメモリアクセス機能を持ち、ＲＩＳＣ方式でパイプライン処理を行うデータ処理装置に適用されるが、これに限定されず、パイプライン処理を行う様々なデータ処理装置に適用することが可能である。
【図面の簡単な説明】
【０１０１】
【図１】従来のデータ処理装置の一例の基本構成を示すブロック図である。
【図２】図１に示すデータ処理装置におけるプログラムの一例を示す図である。
【図３】図２に示すプログラムを実行した時のパイプラインの動作を説明するための図である。
【図４】本発明に係るデータ処理装置の第１実施例の基本構成を示すブロック図である。
【図５】図４に示すデータ処理装置におけるプログラムの一例を示す図である。
【図６】図５に示すプログラムを実行した時のパイプラインの動作を説明するための図である。
【図７】本発明に係るデータ処理装置の第２実施例の基本構成を示すブロック図である。
【図８】図７に示すデータ処理装置におけるプログラムの一例を示す図である。
【図９】図８に示すプログラムを実行した時のパイプラインの動作を説明するための図である。
【符号の説明】
【０１０２】
１０１，４０１，７０１    命令アドレス生成回路
１０２，４０２，７０２    命令アドレスレジスタ
１０３，４０３，７０３    命令メモリ
１０４，４０４，７０４    命令レジスタ
１０５，４０５，７０５    レジスタファイル
１０６，４０６，７０６    デコーダ
１０７，４０８，７１１    ＥＲレジスタ
１０８，４０７，７１０    ＥＩレジスタ
１０９，４０９，７１３    ＳＤレジスタ
１１０，４１０，７１４    ＳＡレジスタ
１１１，４１１，７１５    ＳＢレジスタ
１１２，４１２，７１７    演算器（ＡＬＵ）
１１３，７０９    ＭＲレジスタ
１１４，７０８    ＭＩレジスタ
１１５，４１６    ＭＤレジスタ
１１６，４１７，７１２    ＭＡレジスタ
１１７    ＥＲＤレジスタ
１１８，４１８，７１６    データメモリ
１１９    ＷＲレジスタ
１２０    ＷＤレジスタ
１２１，１２２，１２３，１２４，１２５，１２６，１２７，４２６，４２７，４２８，４２９，４３０，４３１，４３２，７２５，７２６，７２７，７２８    バイパスバス
４１３，７０７    ＤＭコントローラ
４１４    ＭＭＩレジスタ
４１５    ＭＭＲレジスタ
４１９，７１８    ＷＭＩレジスタ
４２０，７１９    ＷＭＲレジスタ
４２１，７２０    ＬＤレジスタ
４２２，７２１    ＥＤレジスタ
４２３，７２２    ＷＥＲレジスタ
４２４，７２３    ＷＥＩレジスタ
４２５，７２４    ノンストーリングライトバックコントローラ
【図１】
2007102333.tif 000003
【図２】
2007102333.tif 000004
【図３】
2007102333.tif 000005
【図４】
2007102333.tif 000006
【図５】
2007102333.tif 000007
【図６】
2007102333.tif 000008
【図７】
2007102333.tif 000009
【図８】
2007102333.tif 000010
【図９】
2007102333.tif 000011
【手続補正書】
【提出日】平成18年3月29日(2006.3.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
【特許文献１】特開平０９−０５０３７６号公報
【特許文献２】特開平０５−００６３１３号公報
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
ＭＡステージにおいて、ＭＭＩレジスタ４１４から出力された命令種類信号によってデータメモリへの書込命令の場合、データメモリアドレスレジスタ４１７に従って書き込みデータレジスタ４１６の内容をデータメモリ４１８に書き込む。ＭＭＩレジスタ４１４から出力された命令種類信号によってデータメモリからデータを読み出す命令（読出命令）の場合、データメモリアドレスレジスタ４１７に従ってデータメモリ４１８からデータを読み出し、読み出しデータライトバックデータレジスタ４２１（ＬＤ）へ転送する。ＭＭＩレジスタ４１４とＭＭＲレジスタ４１５の内容がそのままＷＭＩレジスタ４１９（ＷＭＩ）およびＷＭＲレジスタ４２０（ＷＭＲ）へ転送される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
次に、本発明に係るデータ処理装置の第１実施例におけるノンストーリングライトバック回路の制御方法について説明する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
本第１実施例のデータ処理装置のノンストーリングライトバック制御回路４２５において、ＥＤレジスタ４２２にある後続命令の演算結果とＬＤレジスタ４２１にある読み出しデータを同時にレジスタファイル４０５に書き込むというライトバック競合が発生する場合、ＥＤレジスタ４２２にある後続命令の演算結果は常に優先権を持つ。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
（付記５）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、パイプラインの実行状態によってＰＳＷＡ優先権およびライトバック権を生成し、前記データメモリから読み出したデータおよび演算結果であるデータをライトバックし、保留し、或いは、廃棄することを特徴とするデータ処理装置。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
（付記６）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、前記後続命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令のアクセス内容に依存することなく、同じライトバックアドレスを持つ場合、当該先行する読出命令を無効にすることを特徴とするデータ処理装置。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
（付記７）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＥＤレジスタにある後続命令の演算結果とＬＤレジスタにある読み出しデータを同時に前記レジスタファイルに書き込むというライトバック競合が発生する場合、前記ＥＤレジスタにある後続命令の演算結果に優先権を与えることを特徴とするデータ処理装置。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
（付記８）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが同じ場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータを廃棄することを特徴とするデータ処理装置。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
（付記９）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが違う場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータをそのまま保持することを特徴とするデータ処理装置。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００７９
【補正方法】変更
【補正の内容】
【００７９】
（付記１０）
付記４に記載のデータ処理装置において、前記ノンストーリングライトバック制御回路は、ＷＭＩレジスタ、ＷＥＩレジスタおよびＭＩレジスタの内容を解析し、ＷＭＲレジスタおよびＷＥＲレジスタのライトバックアドレスを比較して、ＰＳＷＡ優先権およびライトバック権を生成することを特徴とするデータ処理装置。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
（付記２１）
付記１９に記載のデータ処理方法において、前記後続命令がキャッシュミス或いはメモリアクセス競合により読み出し失敗となった先行する読出命令のアクセス内容に依存することなく、同じライトバックアドレスを持つ場合、当該先行する読出命令を無効にすることを特徴とするデータ処理方法。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００９１
【補正方法】変更
【補正の内容】
【００９１】
（付記２２）
付記１９に記載のデータ処理方法において、ＥＤレジスタにある後続命令の演算結果とＬＤレジスタにある読み出しデータを同時に前記レジスタファイルに書き込むというライトバック競合が発生する場合、前記ＥＤレジスタにある後続命令の演算結果に優先権を与えることを特徴とするデータ処理方法。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
（付記２３）
付記１９に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが同じ場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータを廃棄することを特徴とするデータ処理方法。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００９３
【補正方法】変更
【補正の内容】
【００９３】
（付記２４）
付記１９に記載のデータ処理方法において、ＷＢステージにおいて、ＥＤレジスタおよびＬＤレジスタの両方にライトバックデータがあり、且つ、ＷＥＲレジスタおよびＷＭＲレジスタから出力したライトバックアドレスが違う場合、前記ＥＤレジスタにあるデータを前記レジスタファイルにライトバックし、および、前記ＬＤレジスタにあるデータをそのまま保持することを特徴とするデータ処理方法。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００９４
【補正方法】変更
【補正の内容】
【００９４】
（付記２５）
付記１９に記載のデータ処理方法において、ＷＭＩレジスタ、ＷＥＩレジスタおよびＭＩレジスタの内容を解析し、ＷＭＲレジスタおよびＷＥＲレジスタのライトバックアドレスを比較して、ＰＳＷＡ優先権およびライトバック権を生成することを特徴とするデータ処理方法。