(57)【要約】  ２次キャッシュ（２００ｃ）は、１次キャッシュにリプレースが発生し、書き戻し対象となるＭＯデータを取得した場合に、このＭＯデータの記録位置に対するＭＩデータの新規登録処理が完了しているか否かを、レジスタ（２２２）の制御フラグに設定された情報を基にして判定する。そして、新規登録処理が完了していない場合に、この新規登録処理をキャンセルして、新規登録処理の要求がパイプライン（２１０）に出力されないように抑制する。
2007096981.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御装置であって、
前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定手段と、
前記判定手段によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御手段と、
を備えたことを特徴とする記録制御装置。
【請求項２】
前記判定手段によって、前記第２のデータが前記記録位置に記録されていないと判定された時点で、前記記録位置に対する前記第２のデータの記録が開始されている場合に、前記第１のデータを前記記録位置に繰り返し記録させる記録手段を更に備えたことを特徴とする請求項１に記載の記録制御装置。
【請求項３】
前記第１のデータが書き戻される前記第２のキャッシュの記録位置に対する前記第２のデータの記録状況を管理し、当該第２のデータの記録状況の情報を記録する管理手段を更に備え、前記判定手段は、前記第２のデータの記録状況を基にして、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第２のデータが既に記録されているか否かを判定することを特徴とする請求項２に記載の記録制御装置。
【請求項４】
前記記録手段は、前記第２のデータの記録状況を基にして、前記記録位置に対する前記第２のデータの記録が開始されているか否かを判定し、当該第２のデータの記録が開始されている場合に、前記第１のデータを前記記録位置に繰り返し記録させることを特徴とする請求項３に記載の記録制御装置。
【請求項５】
プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御方法であって、
前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定工程と、
前記判定工程によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御工程と、
を含んだことを特徴とする記録制御方法。
【請求項６】
前記判定工程によって、前記第２のデータが前記記録位置に記録されていないと判定された時点で、前記記録位置に対する前記第２のデータの記録が開始されている場合に、前記第１のデータを前記記録位置に繰り返し記録させる記録工程を更に含んだことを特徴とする請求項５に記載の記録制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御装置および記録制御方法に関するものである。
【背景技術】
【０００２】
近年、プロセッサは、その内部にキャッシュを設置し、メモリに記録されたデータを一旦キャッシュに記録させることによって、メモリアクセスにかかる処理速度を向上させている（例えば、特許文献１参照）。ここで、従来にかかるプロセッサの構成について説明する。【０００３】
図８は、従来のプロセッサの構成を示す機能ブロック図である。同図に示すように、このプロセッサ１０は、プロセッサコア２０，３０と、ＳＣ（System  Controller）４０と、メインメモリ５０とを備えて構成される。なお、ここでは、説明の便宜上、プロセッサコア２０，３０のみを示すが、このプロセッサは、複数のプロセッサコアを有する（複数のプロセッサコアがＳＣ４０に接続されている）。【０００４】
このうち、ＳＣ４０は、主に、プロセッサコア２０，３０からのデータ要求に応じて、メインメモリ５０に記録されたデータを取得し、取得したデータをプロセッサコア２０，３０に渡す装置であり、メインメモリ５０は、プロセッサコア２０，３０が用いるデータ（命令および演算対象となるデータなど）を記録する記録装置である。【０００５】
プロセッサコア２０，３０は、メインメモリ５０に記録されたデータを取得し、所定の処理を実行する装置である。プロセッサコア２０，３０の構成要素は同一であるため、ここでは、プロセッサコア２０を用いて説明すると、プロセッサコア２０は、制御部（命令制御部／演算部）２５ａと、１次キャッシュ２５ｂと、２次キャッシュ２５ｃとを備えて構成される。【０００６】
制御部２５ａは、メインメモリ５０に記録されたデータを、２次キャッシュ２５ｃおよび１次キャッシュ２５ｂを介して取得し、命令を解釈して、所定の処理（命令に対応する演算処理など）を実行する装置である。【０００７】
続いて、従来の２次キャッシュ２５ｃの構成について説明する。図９は、従来の２次キャッシュ２５ｃの構成を示す機能ブロック図である。同図に示すように、この２次キャッシュ２５ｃは、ＭＩポート６０と、調停回路６１，６２と、パイプライン６３と、キャッシュタグ部６４と、ムーブインバッファ６５と、ＭＯポート６６と、ＭＯデータバッファ部６７と、キャッシュデータ部６８とを備えて構成される。【０００８】
ここで、２次キャッシュ２５ｃの構成要素の各処理を説明すると、ＭＩポート６０は、（図８に示した１次キャッシュ２５ｂが、制御部２５ａからのデータ要求に対応するデータを記録していない場合に、）１次キャッシュ２５ｂからのデータ要求（以下、ＭＩリクエスト）を受付け、このＭＩリクエストを、調停回路６１を介して、パイプライン６３に出力する。【０００９】
パイプライン６３は、ＭＩリクエストを取得した場合に、ＭＩリクエストに該当するデータが２次キャッシュ２５ｃに存在するか否かをキャッシュタグ部６４に基づいて判定し、ＭＩリクエストに該当するデータが存在する場合には、該当するデータをキャッシュデータ部６８から検索し、１次キャッシュ２５ｂに出力する。【００１０】
一方、ＭＩリクエストに該当するデータが存在しない場合には、ＭＩリクエストに該当するデータが存在しない旨の情報をムーブインバッファ６５に出力する。この場合、ムーブインバッファ６５は、ＭＩリクエストに対応するデータをＳＣ４０に要求する（ＳＣリクエストをＳＣ４０に出力する）。そして、ムーブインバッファ６５は、ＳＣ４０からＳＣリクエストに対応するデータ（以下、ＭＩデータ）を取得すると、ＭＩデータをＭＩデータバッファ６５ａに書き込むと同時に、そのままＭＩデータを１次キャッシュ２５ｂに転送する。【００１１】
その後、ムーブインバッファ６５は、ＭＩデータをキャッシュデータ部６８に記録する準備が整うと、新規登録処理を起動し、ＭＩデータバッファ６５ａに記録されたＭＩデータをキャッシュデータ部６８に登録する。【００１２】
ところで、ＭＩデータを取得した１次キャッシュ２５ｂは、ＭＩデータを制御部２５ａに渡した後に、制御部２５ａによる演算結果がストアされるなどして、２次キャッシュ２５ｃと比べて最新のデータを保持する場合がある。この状態で、１次キャッシュ２５ｂのリプレースが発生すると、２次キャッシュ２５ｃへの書き戻し（ライトバック）が発生する。【００１３】
１次キャッシュ２５ｂからの書き戻し要求（以下、ＭＯリクエスト）は、ＭＯポート６６が取得し、ＭＯポート６６は、書き戻し処理の要求（ライトバックリクエスト；ＷＲＢＫ）を、調停回路６１を介してパイプライン６３に出力する。なお、書き戻し対象となるデータ（以下、ＭＯデータ）は、ＭＯデータバッファ６７に登録される。【００１４】
パイプライン６３は、書き戻し処理の要求を取得した場合に、ＭＯデータバッファ６７に記録されたＭＯデータを、調停回路６２を介してキャッシュデータ部６８に登録することで、キャッシュデータ部６８に最新のデータ（ＭＯデータ）が登録されることになる。【００１５】
【特許文献１】特開平１１−１３４２５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、上述した従来技術では、１次キャッシュ２５ｂから２次キャッシュ２５ｃに対してデータが書き戻される際に、ムーブインバッファ６５による新規登録処理が何らかの原因で完了していない場合があり、キャッシュデータ部６８に登録された最新のデータが消失してしまうという問題があった。【００１７】
図１０は、従来技術にかかる問題を説明するための説明図である。同図に示すように、ムーブインバッファ６５は、ＳＣ４０からＭＩデータを取得し、ＭＩデータバッファ６５ａにＭＩデータを登録する。同時に、このＭＩデータは、１次キャッシュ２５ｂに転送される。ここで、ムーブインバッファ６５は、何らかの原因（例えば、ＭＩデータの他に処理すべきデータが複数存在する場合など）で、ＭＩデータをキャッシュデータ部６８へ登録する新規登録処理が遅れることがある。【００１８】
この間に、ＭＩデータに対して演算結果が反映されるなどした最新のデータ（ＭＯデータ）が、１次キャッシュ２５ｂのリプレース処理により、書き戻される（ライトバック）と、２次キャッシュ２５ｃ上では、キャッシュデータ部６８にＭＯデータが記録された後にＭＩデータが記録される、すなわち、最新のデータが、古いデータによって上書きされてしまうという問題があった。【００１９】
本発明は、上記に鑑みてなされたものであって、新規登録処理が遅れた場合であっても、１次キャッシュから書き戻される最新のデータが消失してしまうことを効率よく防止することができる記録制御装置および記録制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するために、本発明は、プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御装置であって、前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定手段と、前記判定手段によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御手段と、を備えたことを特徴とする。【００２１】
また、本発明は、プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御方法であって、前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定工程と、前記判定工程によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御工程と、を含んだことを特徴とする。
【発明の効果】
【００２２】
本発明によれば、第１のキャッシュに記録された第１のデータを第２のキャッシュに書き戻す場合に、第１のデータが書き戻される第２のキャッシュの記録位置に、第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定し、当該第２のデータが記録位置に記録されていないと判定した場合に、第２のデータが記録位置に記録されることを抑制し、第１のデータを記録位置に記録するので、最新のデータである第１のデータが、古いデータである第２のデータによって上書きされてしまう問題を解消することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の特徴を説明するための説明図である。
【図２】図２は、すれ違いのケースが発生した場合の本発明の処理を説明するための説明図である。
【図３】図３は、本発明にかかるプロセッサの構成を示す機能ブロック図である。
【図４】図４は、本実施例２にかかる２次キャッシュの構成を示す機能ブロック図である。
【図５】図５は、ムーブインバッファの構成を示す機能ブロック図である。
【図６】図６は、制御フラグに保持される情報を説明するための説明図である。
【図７】図７は、図６において説明した処理を実行するための回路の一例を示す図である。
【図８】図８は、従来のプロセッサの構成を示す機能ブロック図である。
【図９】図９は、従来の２次キャッシュの構成を示す機能ブロック図である。
【図１０】図１０は、従来技術にかかる問題を説明するための説明図である。
【図１１】図１１は、第１の従来技術を説明するための説明図である。
【図１２】図１２は、第２の従来技術を説明するための説明図である。
【図１３】図１３は、従来技術にかかるムーブインバッファの構成を示す機能ブロック図である。
【符号の説明】
【００２４】
１０，１００    プロセッサ
２０，３０，２００，３００    プロセッサコア
２５ａ，２００ａ  制御部（命令制御部／演算部）
２５ｂ，２００ｂ  １次キャッシュ
２５ｃ，２００ｃ  ２次キャッシュ
４０    ＳＣ
５０    メインメモリ
６０    ＭＩポート
６１，６２    調停回路
６３，２１０    パイプライン
６４    キャッシュタグ部
６５，２２０    ムーブインバッファ
６５ａ，２２０ａ  ＭＩデータバッファ
６６    ＭＯポート
６７    ＭＯデータバッファ
６８    キャッシュデータ部
７０，２２１    アドレス比較回路
７１，２２２    レジスタ
２２３    リトライ判定回路
２３０，２３１，２３２，２３３    セット／リセット回路
２４０，２４１，２４２    ＯＲ回路
２５０，２５１，２５２    ＡＮＤ回路
【発明を実施するための最良の形態】
【００２５】
以下に、本発明にかかる記録制御装置および記録制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２６】
まず、本発明の特徴について従来技術と比較して説明する。従来技術では、図８に示した１次キャッシュ２５ｂから２次キャッシュ２５ｃに対してデータが書き戻される際に、図９に示したムーブインバッファ６５による新規登録処理が何らかの原因で完了していない場合があり、キャッシュデータ部６８に登録された最新のデータが古いデータによって上書きされてしまうという問題があった。そこで、従来では、この問題を解消すべく、様々な技術が考案されている。ここでは、その一例として、２つの従来技術を示す。【００２７】
まず、第１の従来技術について説明する。図１１は、第１の従来技術を説明するための説明図である。同図に示すように、この第１の従来技術では、１次キャッシュ２５ｂから２次キャッシュ２５ｃへの書き戻し処理時に、ＭＩデータバッファ６５ａに記録されているＭＩデータをＭＯデータによって上書きする。このように、ＭＩデータバッファ６５ａに記録されたＭＩデータをＭＯデータで上書きすることによって、ムーブインバッファ６５の新規登録処理が遅れた場合であっても、最終的にＭＯデータがキャッシュデータ部６８に書き込まれることになり、問題解決となる。【００２８】
続いて、第２の従来技術について説明する。図１２は、第２の従来技術を説明するための説明図である。同図に示すように、この第２の従来技術では、ムーブインバッファ６５による新規登録処理の後に同一ブロックの書き戻し処理（ライトバック）が必ず処理されるように、新規登録処理が終了するまで、書き戻し処理をリトライさせる。あるいは、簡単のため、ムーブインバッファ６５が開放されるまで書き戻し処理をリトライさせることによって、最終的にＭＯデータがキャッシュデータ部６８に書き込まれるようにする。【００２９】
ところで、上述した、第１の従来技術および第２の従来技術のいずれにおいても、問題回避を行うか否かの検出機構が必要である。ここで、従来技術にかかるムーブインバッファ６５の構成について説明する。図１３は、従来技術にかかるムーブインバッファ６５の構成を示す機能ブロック図である。同図に示すように、このムーブインバッファ６５は、ＭＩデータバッファ６５ａと、アドレス比較回路７０と、レジスタ７１とを備えて構成される。【００３０】
ここで、図１３に示した各構成要素の各処理を説明すると、レジスタ７１は、パイプライン６３によってキャッシュミスと判定された場合に、キャッシュミスが検出された旨の情報およびＭＩデータのアドレスからなるパイプライン結果情報をパイプライン６３から取得し、有効情報（VALID）と、ＭＩデータのアドレスを示す要求アドレスと、新規登録処理の実行時に参照する制御フラグをセットする（この時点で、ムーブインバッファ６５は、ＳＣ４０に対してＳＣリクエストを出力する）。【００３１】
ＳＣ４０から出力されるＭＩデータは、ＭＩデータバッファ６５ａに登録される。そして、ＭＩデータバッファ６５ａは、ＭＩデータのキャッシュデータ部６８に対する登録準備が完了した場合に、その旨の情報をレジスタ７１に出力する。レジスタ７１は、ＭＩデータバッファ６５ａから、ＭＩデータの登録準備が完了した旨の情報を取得すると、制御フラグに反映させる（例えば、制御フラグの内容を「登録準備中」から「登録準備完了」に変更する）。ムーブインバッファ６５は、レジスタ７１の制御フラグにより、新規登録処理が可能であると判定すると、新規登録処理の要求をパイプライン６３に出力する。【００３２】
一方、２次キャッシュ２５ｃに対する書き戻し（ライトバック）が発生した場合には、書き戻し処理の要求がパイプライン６３に出力されるとともに、ライトバック対象となるＭＯデータのアドレス情報を有するパイプライン投入情報が、アドレス比較部７０に出力される。【００３３】
アドレス比較部７０は、パイプライン投入情報を取得すると、ＭＯデータのアドレスと要求アドレスに登録されたＭＩデータのアドレスとを比較して、双方のアドレスが一致するか否かを判定する。そして、双方のアドレスが一致した場合（すなわち、ＭＯデータの記録位置とＭＩデータの記録位置が一致する場合）には、ＭＯデータのアドレスと、ＭＩデータのアドレスとが一致した旨の情報（アドレス一致情報）をパイプライン６３に出力する。【００３４】
ここで、図１１に示した第１の従来技術では、書き戻し処理の要求がパイプライン６３に入力された場合に、アドレス一致情報を受け取ることで、ＭＩデータバッファ６５ａに存在する同一ブロックのデータ（ＭＩデータ）を最新のデータ（ＭＯデータ）に上書きする必要があることを検出することができる。【００３５】
また、図１２に示した第２の従来技術では、書き戻し処理の要求がパイプライン６３に入力された場合に、アドレス一致情報を受け取ることで、ムーブインバッファ６５が開放されるまで（新規登録処理が完了するまで）、ＭＯデータの書き戻し処理をリトライすることを検出することができる。【００３６】
続いて、上述した第１の従来技術、第２の従来技術の順で、その従来技術の問題点について説明する。まず、第１の従来技術では、ＭＯデータバッファ６７に記録されたＭＯデータをＭＩデータバッファ６５ａに上書きする場合に、図９の破線で示すような新たなデータパスを用意しなければならず、余分なコストがかかってしまうという問題があった。また、ライトバックリクエストがパイプライン６３に入力された直後に、新規登録処理の要求が入力されるようなケースでは、ライトバックによるＭＩデータバッファ６５ａの上書きが間に合わずに新規登録処理が実行されてしまうため、最終的に、古いデータ（ＭＩデータ）がキャッシュデータ部６８に登録されてしまうという問題があった。【００３７】
このため、書き戻し処理の要求が、パイプライン６３に入力された直後は、パイプライン６３に対する新規登録処理の出力を禁止するなどして、上記した問題を解決しているが、ムーブインバッファ６５の処理が滞ってしまうなどの新たな問題が発生していた。【００３８】
一方、第２の従来技術では、新規登録処理が完了するまで、書き戻し処理をリトライさせるものであったが、この場合、新規登録処理が完了するまで、あるいは、ムーブインバッファ６５が開放されるまで、ＭＯボート６６の資源を占有することになり、後続の処理が迅速に実行できないなどの問題があった。【００３９】
そこで、本発明では、上述した従来技術による問題を解消する。図１は、本発明の特徴を説明するための説明図である。同図に示すように、１次キャッシュから２次キャッシュへの書き戻し処理によりキャッシュデータ部に最新のデータ（ＭＯデータ）が書き込まれる場合に、該当ブロックに対する新規登録処理が未完了であることを検出すると、ムーブインバッファに対して新規登録処理のキャンセルを要求する。このように、新規登録処理をキャンセルすることによって、新規登録処理が実行されないので、キャッシュデータ部に古いデータ（ＭＩデータ）が書き込まれるといった問題を解消することができる。【００４０】
また、新規登録処理をキャンセルする時点で、既に、新規登録処理がパイプラインに出力されているケース（すれ違いのケース）が考えられる。図２は、すれ違いのケースが発生した場合の本発明の処理を説明するための説明図である。同図に示すように、本発明では、書き戻し処理がパイプラインに入力された際に、当該ブロックに対する新規登録処理が完了していないことを検出して、新規登録処理のキャンセルを行い、ＭＯデータをキャッシュデータ部に書き込む。【００４１】
一方、新規登録処理は、既に、パイプラインに出力済みであるが、新規登録処理のキャンセル要求をムーブインバッファに出力しているため、新規登録処理のリトライは起こりえない。このような場合には、書き戻し処理をリトライさせることによって、最終的にキャッシュデータ部に最新のデータ（ＭＯデータ）を書き込むことを可能とする。【００４２】
次に、本発明にかかるプロセッサの構成について説明する。図３は、本発明にかかるプロセッサ１００の構成を示す機能ブロック図である。同図に示すように、このプロセッサ１００は、プロセッサコア２００，３００と、ＳＣ４０と、メインメモリ５０とを備えて構成される。なお、図８において示した構成要素と同一の構成要素には同一の符号を付して説明を省略する。【００４３】
プロセッサコア２００，３００は、メインメモリ５０に記録されたデータを取得し、所定の処理を実行する装置である。プロセッサコア２００，３００の構成要素は同一であるため、ここでは、プロセッサコア２００を用いて説明すると、プロセッサコア２００は、制御部（命令制御部／演算部）２００ａと、１次キャッシュ２００ｂと、２次キャッシュ２００ｃとを備えて構成される。【００４４】
制御部２００ａは、メインメモリ５０に記録されたデータを、２次キャッシュ２００ｃおよび１次キャッシュ２００ｂを介して取得し、命令を解釈して、所定の処理（命令に対応する演算処理など）を実行する装置である。【００４５】
続いて、本実施例にかかる２次キャッシュ２００ｃの構成について説明する。図４は、本実施例２にかかる２次キャッシュ２００ｃの構成を示す機能ブロック図である。同図に示すように、この２次キャッシュ２００ｃは、ＭＩポート６０と、調停回路６１，６２と、パイプライン２１０と、キャッシュタグ部６４と、ムーブインバッファ２２０と、ＭＯポート６６と、ＭＯデータバッファ部６７と、キャッシュデータ部６８とを備えて構成される。なお、図９において説明した構成要素と同一の構成要素には同一の符号を付して説明を省略する。【００４６】
パイプライン２１０は、本実施例では主に、ＭＩリクエスト、書き戻し処理の要求（ライトバックリクエスト）、あるいは新規登録処理の要求などを取得し、取得したリクエストに対応する処理を並列して実行する装置である。以下、パイプライン２１０の処理を順に説明する。【００４７】
パイプライン２１０は、ＭＩリクエストを取得した場合に、ＭＩリクエストに該当するデータが２次キャッシュ２００ｃに存在するか否かをキャッシュタグ部６４に基づいて判定し、ＭＩリクエストに該当するデータが存在する場合には、該当するデータをキャッシュデータ部６８から検索し、１次キャッシュ２００ｂに出力する。【００４８】
一方、ＭＩリクエストに該当するデータが存在しない場合には、キャッシュミスが検出された旨の情報およびＭＩデータのアドレスからなるパイプライン結果情報をムーブインバッファ２２０に出力する。この場合、ムーブインバッファ２２０は、ＳＣリクエストをＳＣ４０に出力することになる。【００４９】
また、パイプライン２１０は、書き戻し処理の要求を取得した場合には、ムーブインバッファ２２０と協働して、ＭＯデータの書き戻し処理をリトライするか否かを判定し、判定結果に基づいた処理を実行する。そして、パイプライン２１０は、ＭＯデータの書き戻し処理をリトライする場合には、ＭＯデータバッファ６７に記録されたＭＯデータをキャッシュデータ部６８に書き戻す処理をリトライさせる。すなわち、パイプライン２１０は、ＭＯデータバッファ６７に記録されたＭＯデータを繰り返し、キャッシュデータ部６８に記録させる。【００５０】
ムーブインバッファ２２０は、ＳＣ４０から出力されるＭＩデータを記録する記録装置である。また、ムーブインバッファ２２０は、新規登録処理をキャンセルするか否か、あるいは、ＭＯデータの書き戻し処理をリトライするか否かの判断基準となる情報を管理している。【００５１】
図５は、ムーブインバッファ２２０の構成を示す機能ブロック図である。同図に示すように、このムーブインバッファ２２０は、ＭＩデータバッファ２２０ａと、アドレス比較回路２２１と、レジスタ２２２と、リトライ判定回路２２３とを備えて構成される。【００５２】
このうち、アドレス比較回路２２１は、書き戻し対象となるＭＯデータのアドレス情報を有するパイプライン投入情報を取得すると、ＭＯデータのアドレスと、レジスタ２２２に保持されたＭＩデータのアドレスとを比較して、双方のアドレスが一致するか否かを判定する装置である。そして、アドレス比較回路２２１は、ＭＯデータのアドレスと、ＭＩデータのアドレスが一致すると判定した場合（ＭＯデータの記録位置とＭＩデータの記録位置とが一致した場合）には、アドレスが一致した旨の情報（アドレス一致情報）をレジスタ２２２およびリトライ判定回路２２３に出力する。【００５３】
レジスタ２２２は、有効情報（VALID）と、ＭＩデータのアドレスを示す要求アドレスと、書き戻し処理をリトライするか否か、あるいは新規登録処理を実行するか否かを示す制御フラグとを保持・管理する装置である。このレジスタ２２２は、アドレス比較回路２２１からアドレス一致情報を取得した場合には、新規登録処理をキャンセルするための処理を実行する。この場合、レジスタ２２２は、制御フラグを操作して、この制御フラグに新規登録処理の完了フラグを強制的にセットする。（別途、新規登録処理のキャンセルにより、強制的に新規登録処理が完了したことを示すフラグを設けてもよい。）【００５４】
レジスタ２２２の制御フラグに新規登録処理の完了フラグを強制的にセットすることによって、ＭＩデータバッファ２２０ａからＭＩデータの登録準備が完了した旨の情報をレジスタ２２２が受け取った時点で、本来実行される新規登録処理がキャンセルされることになり、ムーブインバッファ２２０は、新規登録処理の要求をパイプライン２１０に出力することはなく、キャッシュデータ部６８に古いデータ（ＭＩデータ）が記録されることを抑制することができる。【００５５】
リトライ判定回路２２３は、アドレス一致情報をアドレス比較回路２２１から取得した場合に、書き戻し処理と新規登録処理とのすれ違いにより、書き戻し処理をリトライする必要があるか否かをレジスタ２２２の制御フラグに基づいて判定する装置である。リトライ判定回路２２３は、書き戻し処理をリトライする必要があると判定した場合には、リトライ要求をパイプライン２１０に出力する。リトライ判定部２２３は、制御フラグに保持される情報によって、書き戻し処理をリトライするか否かを判定することになるが、制御フラグに保持される情報は刻々と変化する。【００５６】
ここで、制御フラグに保持される情報について説明する。図６は、制御フラグに保持される情報を説明するための説明図である。同図に示すように、この図では、パイプライン２１０によって実行される書き戻し処理および新規登録処理の各ステージＸＰｎ（ｎの数字は、処理が何段目かを示す）と、制御フラグに保持される情報との関係を示している。また、制御フラグに保持される情報には、「新規登録処理実行中」、「新規登録処理完了」、「新規登録処理強制完了」あるいは「リトライ期間」のうち、いずれかの情報が設定される。なお、図５に示したアドレス比較回路２２１が、アドレスの比較を行うタイミングは、書き戻し処理のＸＰ２で実行されるものとする。【００５７】
ここで、「新規登録処理実行中」は、ムーブインバッファ２２０が、新規登録処理の要求をパイプライン２１０に発行してから、パイプライン２１０から新規登録処理の結果が返るまで制御フラグに設定される情報であり、新規登録処理が実行中である旨を示す。【００５８】
「新規登録処理完了」は、新規登録処理がパイプライン２１０によって処理され、ＭＩデータがキャッシュデータ部６８に対する登録が完了してから、ムーブインバッファ２２０が開放されるまで制御フラグに設定される情報であり、新規登録処理の起動を抑止するとともに、新規登録処理が完了したことによるムーブインバッファ２２０の開放条件として使用される。【００５９】
「新規登録処理強制完了」は、本発明により、書き戻し処理によって、同一ブロックにおける未処理の新規登録情報をキャンセルするために制御フラグに設定される情報であり、書き戻し処理による新規登録処理のキャンセル以降、ムーブインバッファ２２０が開放されるまで有効となる。書き戻し処理による新規登録処理のキャンセルは、レジスタ２２２がアドレス比較回路２２１からアドレス一致情報を取得した時点（書き戻し処理におけるＸＰ２の時点）で発生するので、この新規登録処理強制完了の情報は、書き戻し処理のＸＰ３からムーブインバッファ２２０が開放されるまで制御フラグに設定される。この新規登録処理強制完了の情報が制御フラグに設定されると、以降の新規登録処理はキャンセルされる。【００６０】
「リトライ期間」は、図５に示したＭＩデータバッファ２２０ａによってＭＩデータをキャッシュデータ部６８に登録する準備が整ってから、新規登録処理の要求がパイプライン２１０に発行されるまで制御フラグに設定される情報である。制御フラグに「リトライ期間」が設定されている期間は、パイプライン２１０は、書き戻し処理をリトライする。【００６１】
ところで、図６に示す（１）〜（４）は、書き戻し処理に対してその前後で新規登録処理の要求がパイプライン２１０に出力された場合の動作を、新規登録処理の要求がパイプライン２１０に出力されたタイミング別に表したものである。【００６２】
（１）のケースでは、新規登録処理の後に、書き戻し処理が実行されるため、問題は無い。なぜなら、新規登録処理によってＭＩデータがキャッシュデータ部６８に記録された後に、書き戻し処理によってＭＯデータがキャッシュデータ部６８に記録されるため、最終的に、最新のデータがキャッシュデータ部６８に登録されるためである。また、（１）のケース以前に、新規登録処理が実行される場合も当然問題とならない。【００６３】
一方、（２）〜（４）のケースでは、書き戻し処理の要求（ライトバックリクエスト）がパイプライン２１０に出力された後に、新規登録処理の要求がパイプライン２１０に出力される場合のケースを示しているが、書き戻し処理のＸＰ３のタイミング以降は、制御フラグに「新規登録処理強制完了」が設定されているため、（４）以降のケースでは、新規登録処理の要求がパイプライン２１０に出力されることは無いため、問題とならない。【００６４】
すなわち、（２）、（３）に示すケースにおいてすれ違い（新規登録処理のキャンセルが間に合わず、書き戻し処理が行われた後に、新規登録処理が実行されてしまうケース）が発生する。この期間だけ、書き戻し処理のリトライを行うようにする。リトライ判定を行うタイミングは、書き戻し処理におけるＸＰ２のタイミングであるため、このタイミングで、リトライ判定回路２２３が制御フラグを参照した場合に、制御フラグに「リトライ期間」が設定されているように制御フラグを操作してやればよい。【００６５】
なお、新規登録処理のキャンセルによって、新規登録処理が抑止された場合には、制御フラグに設定された情報が「リトライ期間」から「新規登録処理実行中」に変更されない。その場合には、新規登録処理のキャンセル時にアドレス比較回路２２１から入力されるアドレス一致情報をレジスタ２２２が取得するタイミングで、レジスタ２２２は、制御フラグに設定される情報を「リトライ期間」から「新規登録処理実行中」に変更する。【００６６】
なお、（４）のケースにおいて、書き戻し処理の要求がパイプライン２１０に出力される際に、ＭＩデータバッファ２２０ａによるＭＩデータの登録準備が既に整っている場合には、制御フラグに「リトライ期間」が設定されているので、この場合には、書き戻し処理を１回のみリトライする。書き戻し処理によるアドレス処理回路２２１の比較処理によって、「リトライ期間」が解除され、それ以上、書き戻し処理がリトライされることはない。【００６７】
続いて、図６において説明した処理を実行するための回路について説明する。図７は、図６において説明した処理を実行するための回路の一例を示す図である。この回路は、例えば、図５に示したレジスタ２２２に内蔵されているものとする。図７に示すように、この回路は、セット／リセット回路２３０〜２３３と、ＯＲ回路２４０〜２４２と、ＡＮＤ回路２５０〜２５２とを備えて構成される。【００６８】
セット／リセット回路２３０は、ＭＩデータバッファ２２０ａにおけるＭＩデータの登録準備が完了した場合に、「High」を出力し、ＯＲ回路２４１から「High」を入力された時点で「Low」を出力する装置である。【００６９】
セット／リセット回路２３１は、新規登録処理の要求がパイプライン２１０に出力された時点で、「High」を出力し、新規登録処理が図６に示したＸＰ５まで移行した時点で、「Low」を出力する装置である。このセット／リセット回路２３１から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「新規登録処理実行中」が設定される。【００７０】
セット／リセット回路２３２は、新規登録処理が完了した時点（新規登録処理が図６に示したＸＰ５まで移行した時点）で、「High」を出力し、ムーブインバッファ２２０が開放された時点で、「Low」を出力する装置である。このセット／リセット回路２３２から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「新規登録処理完了」が設定される。【００７１】
セット／リセット回路２３３は、アドレス比較回路２２１からアドレス一致情報が出力された時点（図６に示す書き戻し処理のＸＰ２のタイミング）で、「High」を出力し、ムーブインバッファ２２０が開放された時点で、「Low」を出力する装置である。このセット／リセット回路２３３から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「新規登録処理強制完了」が設定される。【００７２】
ＯＲ回路２４０は、セット／リセット回路２３１またはセット／リセット回路２３２からの出力が「High」となった場合に、「High」を出力し、セット／リセット回路２３１およびセット／リセット回路２３２からの出力が双方とも「Low」となった場合に、「Low」を出力する装置である。【００７３】
ＯＲ回路２４１は、セット／リセット回路２３２またはセット／リセット回路２３３からの出力が「High」となった場合に、「High」を出力し、セット／リセット回路２３２およびセット／リセット回路２３３からの出力が双方とも「Low」となった場合に、「Low」を出力する装置である。【００７４】
ＯＲ回路２４２は、セット／リセット回路２３１、セット／リセット回路２３２またはセットリセット回路２３３のいずれか一つの出力が「High」となった場合に、「High」を出力し、セット／リセット回路２３１、セット／リセット回路２３２およびセットリセット回路２３３のすべての出力が「Low」となった場合に、「Low」を出力する装置である。なお、ＯＲ回路２４２から「High」が出力されている期間中は、新規登録処理が抑制される。【００７５】
ＡＮＤ回路２５０は、セット／リセット回路２３０からの出力が「High」となり、かつＯＲ回路２４０からの出力が「Low」となった場合に、「High」を出力し、それ以外の場合には、「Low」を出力する装置である。なお、ＡＮＤ回路２５０から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「リトライ期間」が設定される。【００７６】
ＡＮＤ回路２５１は、ＡＮＤ回路２５０からの出力が「High」となり、かつ、アドレス比較回路２２１からアドレス一致情報が出力された時点（図６に示す書き戻し処理のＸＰ２のタイミング）で、「High」を出力し、それ以外は、「Low」を出力する装置である。ＡＮＤ回路２５１から「High」が出力された時点で、ムーブインバッファ２２０はパイプライン２１０にリトライ要求を出力する。【００７７】
ＡＮＤ回路２５２は、セット／リセット回路２３０からの出力が「High」となり、かつ、ＯＲ回路２４２からの出力が「Low」となった場合に「High」を出力し、それ以外は、「Low」を出力する回路である。ＡＮＤ回路２５２から「High」が出力された時点で、新規登録処理の要求が、パイプライン２１０に出力される。【００７８】
図７に示すように、回路を構成することによって、本発明にかかる新規登録処理のキャンセルと、書き戻し処理のリトライを適切に実行することができる。【００７９】
上述してきたように、本実施例にかかる２次キャッシュ２００ｃは、１次キャッシュ２００ｂにリプレースが発生し、書き戻し対象となるＭＯデータを取得した場合に、このＭＯデータの記録位置に対するＭＩデータの新規登録処理が完了しているか否かを、制御フラグに設定された情報を基にして判定し、新規登録処理が完了していない場合に、この新規登録処理をキャンセルして、新規登録処理の要求がパイプライン２１０に出力されないように抑制するので、キャッシデータ部６８に登録された最新のデータ（ＭＯデータ）が古いデータ（ＭＩデータ）によって上書きされ、消失してしまうという問題を解消することができる。【００８０】
また、本実施例によれば、２次キャッシュ２００ｃは、新規登録処理のキャンセルが間に合わない場合には、パイプライン２１０が、書き戻し処理を何度も実行し、キャッシュデータ部６８にＭＯデータを何度も書き込むので、新規登録処理が遅れた場合であっても、最終的に、キャッシュデータ部６８に最新のデータ（ＭＯデータ）が記録されることになり、最新のデータが消失してしまうという問題を解消することができる。【００８１】
また、本実施例によれば、上述した処理を、特別なデータパスなどを使用することなく実現することができるので、プロセッサにかかる製造コストを抑えることができる。【００８２】
また、本実施例によれば、複数の処理を並列処理可能なパイプライン２１０が、書き戻し処理をリトライさせるので、ＭＯポート６６を占有してしまうことを防止し、迅速にリトライ処理以外の処理も実行することができる。
【産業上の利用可能性】
【００８３】
以上のように、本発明にかかる記録制御装置および記録制御方法は、１次キャッシュにリプレースが発生し、１次キャッシュのデータを２次キャッシュに書き戻す処理を実行するプロセッサなどに有用であり、特に、２次キャッシュの処理が遅れた場合でも、最新のデータを消失させることなく適切に２次キャッシュに記録させる場合に適している。
【図１】
2007096981.tif 000003
【図２】
2007096981.tif 000004
【図３】
2007096981.tif 000005
【図４】
2007096981.tif 000006
【図５】
2007096981.tif 000007
【図６】
2007096981.tif 000008
【図７】
2007096981.tif 000009
【図８】
2007096981.tif 000010
【図９】
2007096981.tif 000011
【図１０】
2007096981.tif 000012
【図１１】
2007096981.tif 000013
【図１２】
2007096981.tif 000014
【図１３】
2007096981.tif 000015
【手続補正書】
【提出日】平成20年5月2日(2008.5.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御装置であって、
前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定手段と、
前記判定手段によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御手段と、
を備えたことを特徴とする記録制御装置。
【請求項２】
前記判定手段によって、前記第２のデータが前記記録位置に記録されていないと判定された時点で、前記記録位置に対する前記第２のデータの記録が開始されている場合に、前記第１のデータを前記記録位置に繰り返し記録させる記録手段を更に備えたことを特徴とする請求項１に記載の記録制御装置。
【請求項３】
前記第１のデータが書き戻される前記第２のキャッシュの記録位置に対する前記第２のデータの記録状況を管理し、当該第２のデータの記録状況の情報を記録する管理手段を更に備え、前記判定手段は、前記第２のデータの記録状況を基にして、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第２のデータが既に記録されているか否かを判定することを特徴とする請求項２に記載の記録制御装置。
【請求項４】
前記記録手段は、前記第２のデータの記録状況を基にして、前記記録位置に対する前記第２のデータの記録が開始されているか否かを判定し、当該第２のデータの記録が開始されている場合に、前記第１のデータを前記記録位置に繰り返し記録させることを特徴とする請求項３に記載の記録制御装置。
【請求項５】
プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御方法であって、
前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定工程と、
前記判定工程によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御工程と、
を含んだことを特徴とする記録制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御装置および記録制御方法に関するものである。
【背景技術】
【０００２】
近年、プロセッサは、その内部にキャッシュを設置し、メモリに記録されたデータを一旦キャッシュに記録させることによって、メモリアクセスにかかる処理速度を向上させている（例えば、特許文献１参照）。ここで、従来にかかるプロセッサの構成について説明する。
【０００３】
図８は、従来のプロセッサの構成を示す機能ブロック図である。同図に示すように、このプロセッサ１０は、プロセッサコア２０，３０と、ＳＣ（System  Controller）４０と、メインメモリ５０とを備えて構成される。なお、ここでは、説明の便宜上、プロセッサコア２０，３０のみを示すが、このプロセッサは、複数のプロセッサコアを有する（複数のプロセッサコアがＳＣ４０に接続されている）。
【０００４】
このうち、ＳＣ４０は、主に、プロセッサコア２０，３０からのデータ要求に応じて、メインメモリ５０に記録されたデータを取得し、取得したデータをプロセッサコア２０，３０に渡す装置であり、メインメモリ５０は、プロセッサコア２０，３０が用いるデータ（命令および演算対象となるデータなど）を記録する記録装置である。
【０００５】
プロセッサコア２０，３０は、メインメモリ５０に記録されたデータを取得し、所定の処理を実行する装置である。プロセッサコア２０，３０の構成要素は同一であるため、ここでは、プロセッサコア２０を用いて説明すると、プロセッサコア２０は、制御部（命令制御部／演算部）２５ａと、１次キャッシュ２５ｂと、２次キャッシュ２５ｃとを備えて構成される。
【０００６】
制御部２５ａは、メインメモリ５０に記録されたデータを、２次キャッシュ２５ｃおよび１次キャッシュ２５ｂを介して取得し、命令を解釈して、所定の処理（命令に対応する演算処理など）を実行する装置である。
【０００７】
続いて、従来の２次キャッシュ２５ｃの構成について説明する。図９は、従来の２次キャッシュ２５ｃの構成を示す機能ブロック図である。同図に示すように、この２次キャッシュ２５ｃは、ＭＩポート６０と、調停回路６１，６２と、パイプライン６３と、キャッシュタグ部６４と、ムーブインバッファ６５と、ＭＯポート６６と、ＭＯデータバッファ部６７と、キャッシュデータ部６８とを備えて構成される。
【０００８】
ここで、２次キャッシュ２５ｃの構成要素の各処理を説明すると、ＭＩポート６０は、（図８に示した１次キャッシュ２５ｂが、制御部２５ａからのデータ要求に対応するデータを記録していない場合に、）１次キャッシュ２５ｂからのデータ要求（以下、ＭＩリクエスト）を受付け、このＭＩリクエストを、調停回路６１を介して、パイプライン６３に出力する。
【０００９】
パイプライン６３は、ＭＩリクエストを取得した場合に、ＭＩリクエストに該当するデータが２次キャッシュ２５ｃに存在するか否かをキャッシュタグ部６４に基づいて判定し、ＭＩリクエストに該当するデータが存在する場合には、該当するデータをキャッシュデータ部６８から検索し、１次キャッシュ２５ｂに出力する。
【００１０】
一方、ＭＩリクエストに該当するデータが存在しない場合には、ＭＩリクエストに該当するデータが存在しない旨の情報をムーブインバッファ６５に出力する。この場合、ムーブインバッファ６５は、ＭＩリクエストに対応するデータをＳＣ４０に要求する（ＳＣリクエストをＳＣ４０に出力する）。そして、ムーブインバッファ６５は、ＳＣ４０からＳＣリクエストに対応するデータ（以下、ＭＩデータ）を取得すると、ＭＩデータをＭＩデータバッファ６５ａに書き込むと同時に、そのままＭＩデータを１次キャッシュ２５ｂに転送する。
【００１１】
その後、ムーブインバッファ６５は、ＭＩデータをキャッシュデータ部６８に記録する準備が整うと、新規登録処理を起動し、ＭＩデータバッファ６５ａに記録されたＭＩデータをキャッシュデータ部６８に登録する。
【００１２】
ところで、ＭＩデータを取得した１次キャッシュ２５ｂは、ＭＩデータを制御部２５ａに渡した後に、制御部２５ａによる演算結果がストアされるなどして、２次キャッシュ２５ｃと比べて最新のデータを保持する場合がある。この状態で、１次キャッシュ２５ｂのリプレースが発生すると、２次キャッシュ２５ｃへの書き戻し（ライトバック）が発生する。
【００１３】
１次キャッシュ２５ｂからの書き戻し要求（以下、ＭＯリクエスト）は、ＭＯポート６６が取得し、ＭＯポート６６は、書き戻し処理の要求（ライトバックリクエスト；ＷＲＢＫ）を、調停回路６１を介してパイプライン６３に出力する。なお、書き戻し対象となるデータ（以下、ＭＯデータ）は、ＭＯデータバッファ６７に登録される。
【００１４】
パイプライン６３は、書き戻し処理の要求を取得した場合に、ＭＯデータバッファ６７に記録されたＭＯデータを、調停回路６２を介してキャッシュデータ部６８に登録することで、キャッシュデータ部６８に最新のデータ（ＭＯデータ）が登録されることになる。
【００１５】
【特許文献１】特開平１１−１３４２５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、上述した従来技術では、１次キャッシュ２５ｂから２次キャッシュ２５ｃに対してデータが書き戻される際に、ムーブインバッファ６５による新規登録処理が何らかの原因で完了していない場合があり、キャッシュデータ部６８に登録された最新のデータが消失してしまうという問題があった。
【００１７】
図１０は、従来技術にかかる問題を説明するための説明図である。同図に示すように、ムーブインバッファ６５は、ＳＣ４０からＭＩデータを取得し、ＭＩデータバッファ６５ａにＭＩデータを登録する。同時に、このＭＩデータは、１次キャッシュ２５ｂに転送される。ここで、ムーブインバッファ６５は、何らかの原因（例えば、ＭＩデータの他に処理すべきデータが複数存在する場合など）で、ＭＩデータをキャッシュデータ部６８へ登録する新規登録処理が遅れることがある。
【００１８】
この間に、ＭＩデータに対して演算結果が反映されるなどした最新のデータ（ＭＯデータ）が、１次キャッシュ２５ｂのリプレース処理により、書き戻される（ライトバック）と、２次キャッシュ２５ｃ上では、キャッシュデータ部６８にＭＯデータが記録された後にＭＩデータが記録される、すなわち、最新のデータが、古いデータによって上書きされてしまうという問題があった。
【００１９】
本発明は、上記に鑑みてなされたものであって、新規登録処理が遅れた場合であっても、１次キャッシュから書き戻される最新のデータが消失してしまうことを効率よく防止することができる記録制御装置および記録制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するために、本発明は、プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御装置であって、前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定手段と、前記判定手段によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御手段と、を備えたことを特徴とする。
【００２１】
また、本発明は、プロセッサが備える第１のキャッシュおよび第２のキャッシュに対するデータの記録制御を行う記録制御方法であって、前記第１のキャッシュに記録された第１のデータを前記第２のキャッシュに書き戻す場合に、前記第１のデータが書き戻される前記第２のキャッシュの記録位置に、前記第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定する判定工程と、前記判定工程によって、前記第２のデータが前記記録位置に記録されていないと判定された場合に、前記第２のデータが前記記録位置に記録されることを抑制し、前記第１のデータを当該記録位置に記録する記録制御工程と、を含んだことを特徴とする。
【発明の効果】
【００２２】
本発明によれば、第１のキャッシュに記録された第１のデータを第２のキャッシュに書き戻す場合に、第１のデータが書き戻される第２のキャッシュの記録位置に、第１のデータの更新前のデータである第２のデータが既に記録されているか否かを判定し、当該第２のデータが記録位置に記録されていないと判定した場合に、第２のデータが記録位置に記録されることを抑制し、第１のデータを記録位置に記録するので、最新のデータである第１のデータが、古いデータである第２のデータによって上書きされてしまう問題を解消することができる。
【発明を実施するための最良の形態】
【００２３】
以下に、本発明にかかる記録制御装置および記録制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２４】
まず、本発明の特徴について従来技術と比較して説明する。従来技術では、図８に示した１次キャッシュ２５ｂから２次キャッシュ２５ｃに対してデータが書き戻される際に、図９に示したムーブインバッファ６５による新規登録処理が何らかの原因で完了していない場合があり、キャッシュデータ部６８に登録された最新のデータが古いデータによって上書きされてしまうという問題があった。そこで、従来では、この問題を解消すべく、様々な技術が考案されている。ここでは、その一例として、２つの従来技術を示す。
【００２５】
まず、第１の従来技術について説明する。図１１は、第１の従来技術を説明するための説明図である。同図に示すように、この第１の従来技術では、１次キャッシュ２５ｂから２次キャッシュ２５ｃへの書き戻し処理時に、ＭＩデータバッファ６５ａに記録されているＭＩデータをＭＯデータによって上書きする。このように、ＭＩデータバッファ６５ａに記録されたＭＩデータをＭＯデータで上書きすることによって、ムーブインバッファ６５の新規登録処理が遅れた場合であっても、最終的にＭＯデータがキャッシュデータ部６８に書き込まれることになり、問題解決となる。
【００２６】
続いて、第２の従来技術について説明する。図１２は、第２の従来技術を説明するための説明図である。同図に示すように、この第２の従来技術では、ムーブインバッファ６５による新規登録処理の後に同一ブロックの書き戻し処理（ライトバック）が必ず処理されるように、新規登録処理が終了するまで、書き戻し処理をリトライさせる。あるいは、簡単のため、ムーブインバッファ６５が開放されるまで書き戻し処理をリトライさせることによって、最終的にＭＯデータがキャッシュデータ部６８に書き込まれるようにする。
【００２７】
ところで、上述した、第１の従来技術および第２の従来技術のいずれにおいても、問題回避を行うか否かの検出機構が必要である。ここで、従来技術にかかるムーブインバッファ６５の構成について説明する。図１３は、従来技術にかかるムーブインバッファ６５の構成を示す機能ブロック図である。同図に示すように、このムーブインバッファ６５は、ＭＩデータバッファ６５ａと、アドレス比較回路７０と、レジスタ７１とを備えて構成される。
【００２８】
ここで、図１３に示した各構成要素の各処理を説明すると、レジスタ７１は、パイプライン６３によってキャッシュミスと判定された場合に、キャッシュミスが検出された旨の情報およびＭＩデータのアドレスからなるパイプライン結果情報をパイプライン６３から取得し、有効情報（VALID）と、ＭＩデータのアドレスを示す要求アドレスと、新規登録処理の実行時に参照する制御フラグをセットする（この時点で、ムーブインバッファ６５は、ＳＣ４０に対してＳＣリクエストを出力する）。
【００２９】
ＳＣ４０から出力されるＭＩデータは、ＭＩデータバッファ６５ａに登録される。そして、ＭＩデータバッファ６５ａは、ＭＩデータのキャッシュデータ部６８に対する登録準備が完了した場合に、その旨の情報をレジスタ７１に出力する。レジスタ７１は、ＭＩデータバッファ６５ａから、ＭＩデータの登録準備が完了した旨の情報を取得すると、制御フラグに反映させる（例えば、制御フラグの内容を「登録準備中」から「登録準備完了」に変更する）。ムーブインバッファ６５は、レジスタ７１の制御フラグにより、新規登録処理が可能であると判定すると、新規登録処理の要求をパイプライン６３に出力する。
【００３０】
一方、２次キャッシュ２５ｃに対する書き戻し（ライトバック）が発生した場合には、書き戻し処理の要求がパイプライン６３に出力されるとともに、ライトバック対象となるＭＯデータのアドレス情報を有するパイプライン投入情報が、アドレス比較部７０に出力される。
【００３１】
アドレス比較部７０は、パイプライン投入情報を取得すると、ＭＯデータのアドレスと要求アドレスに登録されたＭＩデータのアドレスとを比較して、双方のアドレスが一致するか否かを判定する。そして、双方のアドレスが一致した場合（すなわち、ＭＯデータの記録位置とＭＩデータの記録位置が一致する場合）には、ＭＯデータのアドレスと、ＭＩデータのアドレスとが一致した旨の情報（アドレス一致情報）をパイプライン６３に出力する。
【００３２】
ここで、図１１に示した第１の従来技術では、書き戻し処理の要求がパイプライン６３に入力された場合に、アドレス一致情報を受け取ることで、ＭＩデータバッファ６５ａに存在する同一ブロックのデータ（ＭＩデータ）を最新のデータ（ＭＯデータ）に上書きする必要があることを検出することができる。
【００３３】
また、図１２に示した第２の従来技術では、書き戻し処理の要求がパイプライン６３に入力された場合に、アドレス一致情報を受け取ることで、ムーブインバッファ６５が開放されるまで（新規登録処理が完了するまで）、ＭＯデータの書き戻し処理をリトライすることを検出することができる。
【００３４】
続いて、上述した第１の従来技術、第２の従来技術の順で、その従来技術の問題点について説明する。まず、第１の従来技術では、ＭＯデータバッファ６７に記録されたＭＯデータをＭＩデータバッファ６５ａに上書きする場合に、図９の破線で示すような新たなデータパスを用意しなければならず、余分なコストがかかってしまうという問題があった。また、ライトバックリクエストがパイプライン６３に入力された直後に、新規登録処理の要求が入力されるようなケースでは、ライトバックによるＭＩデータバッファ６５ａの上書きが間に合わずに新規登録処理が実行されてしまうため、最終的に、古いデータ（ＭＩデータ）がキャッシュデータ部６８に登録されてしまうという問題があった。
【００３５】
このため、書き戻し処理の要求が、パイプライン６３に入力された直後は、パイプライン６３に対する新規登録処理の出力を禁止するなどして、上記した問題を解決しているが、ムーブインバッファ６５の処理が滞ってしまうなどの新たな問題が発生していた。
【００３６】
一方、第２の従来技術では、新規登録処理が完了するまで、書き戻し処理をリトライさせるものであったが、この場合、新規登録処理が完了するまで、あるいは、ムーブインバッファ６５が開放されるまで、ＭＯボート６６の資源を占有することになり、後続の処理が迅速に実行できないなどの問題があった。
【００３７】
そこで、本発明では、上述した従来技術による問題を解消する。図１は、本発明の特徴を説明するための説明図である。同図に示すように、１次キャッシュから２次キャッシュへの書き戻し処理によりキャッシュデータ部に最新のデータ（ＭＯデータ）が書き込まれる場合に、該当ブロックに対する新規登録処理が未完了であることを検出すると、ムーブインバッファに対して新規登録処理のキャンセルを要求する。このように、新規登録処理をキャンセルすることによって、新規登録処理が実行されないので、キャッシュデータ部に古いデータ（ＭＩデータ）が書き込まれるといった問題を解消することができる。
【００３８】
また、新規登録処理をキャンセルする時点で、既に、新規登録処理がパイプラインに出力されているケース（すれ違いのケース）が考えられる。図２は、すれ違いのケースが発生した場合の本発明の処理を説明するための説明図である。同図に示すように、本発明では、書き戻し処理がパイプラインに入力された際に、当該ブロックに対する新規登録処理が完了していないことを検出して、新規登録処理のキャンセルを行い、ＭＯデータをキャッシュデータ部に書き込む。
【００３９】
一方、新規登録処理は、既に、パイプラインに出力済みであるが、新規登録処理のキャンセル要求をムーブインバッファに出力しているため、新規登録処理のリトライは起こりえない。このような場合には、書き戻し処理をリトライさせることによって、最終的にキャッシュデータ部に最新のデータ（ＭＯデータ）を書き込むことを可能とする。
【００４０】
次に、本発明にかかるプロセッサの構成について説明する。図３は、本発明にかかるプロセッサ１００の構成を示す機能ブロック図である。同図に示すように、このプロセッサ１００は、プロセッサコア２００，３００と、ＳＣ４０と、メインメモリ５０とを備えて構成される。なお、図８において示した構成要素と同一の構成要素には同一の符号を付して説明を省略する。
【００４１】
プロセッサコア２００，３００は、メインメモリ５０に記録されたデータを取得し、所定の処理を実行する装置である。プロセッサコア２００，３００の構成要素は同一であるため、ここでは、プロセッサコア２００を用いて説明すると、プロセッサコア２００は、制御部（命令制御部／演算部）２００ａと、１次キャッシュ２００ｂと、２次キャッシュ２００ｃとを備えて構成される。
【００４２】
制御部２００ａは、メインメモリ５０に記録されたデータを、２次キャッシュ２００ｃおよび１次キャッシュ２００ｂを介して取得し、命令を解釈して、所定の処理（命令に対応する演算処理など）を実行する装置である。
【００４３】
続いて、本実施例にかかる２次キャッシュ２００ｃの構成について説明する。図４は、本実施例２にかかる２次キャッシュ２００ｃの構成を示す機能ブロック図である。同図に示すように、この２次キャッシュ２００ｃは、ＭＩポート６０と、調停回路６１，６２と、パイプライン２１０と、キャッシュタグ部６４と、ムーブインバッファ２２０と、ＭＯポート６６と、ＭＯデータバッファ部６７と、キャッシュデータ部６８とを備えて構成される。なお、図９において説明した構成要素と同一の構成要素には同一の符号を付して説明を省略する。
【００４４】
パイプライン２１０は、本実施例では主に、ＭＩリクエスト、書き戻し処理の要求（ライトバックリクエスト）、あるいは新規登録処理の要求などを取得し、取得したリクエストに対応する処理を並列して実行する装置である。以下、パイプライン２１０の処理を順に説明する。
【００４５】
パイプライン２１０は、ＭＩリクエストを取得した場合に、ＭＩリクエストに該当するデータが２次キャッシュ２００ｃに存在するか否かをキャッシュタグ部６４に基づいて判定し、ＭＩリクエストに該当するデータが存在する場合には、該当するデータをキャッシュデータ部６８から検索し、１次キャッシュ２００ｂに出力する。
【００４６】
一方、ＭＩリクエストに該当するデータが存在しない場合には、キャッシュミスが検出された旨の情報およびＭＩデータのアドレスからなるパイプライン結果情報をムーブインバッファ２２０に出力する。この場合、ムーブインバッファ２２０は、ＳＣリクエストをＳＣ４０に出力することになる。
【００４７】
また、パイプライン２１０は、書き戻し処理の要求を取得した場合には、ムーブインバッファ２２０と協働して、ＭＯデータの書き戻し処理をリトライするか否かを判定し、判定結果に基づいた処理を実行する。そして、パイプライン２１０は、ＭＯデータの書き戻し処理をリトライする場合には、ＭＯデータバッファ６７に記録されたＭＯデータをキャッシュデータ部６８に書き戻す処理をリトライさせる。すなわち、パイプライン２１０は、ＭＯデータバッファ６７に記録されたＭＯデータを繰り返し、キャッシュデータ部６８に記録させる。
【００４８】
ムーブインバッファ２２０は、ＳＣ４０から出力されるＭＩデータを記録する記録装置である。また、ムーブインバッファ２２０は、新規登録処理をキャンセルするか否か、あるいは、ＭＯデータの書き戻し処理をリトライするか否かの判断基準となる情報を管理している。
【００４９】
図５は、ムーブインバッファ２２０の構成を示す機能ブロック図である。同図に示すように、このムーブインバッファ２２０は、ＭＩデータバッファ２２０ａと、アドレス比較回路２２１と、レジスタ２２２と、リトライ判定回路２２３とを備えて構成される。
【００５０】
このうち、アドレス比較回路２２１は、書き戻し対象となるＭＯデータのアドレス情報を有するパイプライン投入情報を取得すると、ＭＯデータのアドレスと、レジスタ２２２に保持されたＭＩデータのアドレスとを比較して、双方のアドレスが一致するか否かを判定する装置である。そして、アドレス比較回路２２１は、ＭＯデータのアドレスと、ＭＩデータのアドレスが一致すると判定した場合（ＭＯデータの記録位置とＭＩデータの記録位置とが一致した場合）には、アドレスが一致した旨の情報（アドレス一致情報）をレジスタ２２２およびリトライ判定回路２２３に出力する。
【００５１】
レジスタ２２２は、有効情報（VALID）と、ＭＩデータのアドレスを示す要求アドレスと、書き戻し処理をリトライするか否か、あるいは新規登録処理を実行するか否かを示す制御フラグとを保持・管理する装置である。このレジスタ２２２は、アドレス比較回路２２１からアドレス一致情報を取得した場合には、新規登録処理をキャンセルするための処理を実行する。この場合、レジスタ２２２は、制御フラグを操作して、この制御フラグに新規登録処理の完了フラグを強制的にセットする。（別途、新規登録処理のキャンセルにより、強制的に新規登録処理が完了したことを示すフラグを設けてもよい。）
【００５２】
レジスタ２２２の制御フラグに新規登録処理の完了フラグを強制的にセットすることによって、ＭＩデータバッファ２２０ａからＭＩデータの登録準備が完了した旨の情報をレジスタ２２２が受け取った時点で、本来実行される新規登録処理がキャンセルされることになり、ムーブインバッファ２２０は、新規登録処理の要求をパイプライン２１０に出力することはなく、キャッシュデータ部６８に古いデータ（ＭＩデータ）が記録されることを抑制することができる。
【００５３】
リトライ判定回路２２３は、アドレス一致情報をアドレス比較回路２２１から取得した場合に、書き戻し処理と新規登録処理とのすれ違いにより、書き戻し処理をリトライする必要があるか否かをレジスタ２２２の制御フラグに基づいて判定する装置である。リトライ判定回路２２３は、書き戻し処理をリトライする必要があると判定した場合には、リトライ要求をパイプライン２１０に出力する。リトライ判定部２２３は、制御フラグに保持される情報によって、書き戻し処理をリトライするか否かを判定することになるが、制御フラグに保持される情報は刻々と変化する。
【００５４】
ここで、制御フラグに保持される情報について説明する。図６は、制御フラグに保持される情報を説明するための説明図である。同図に示すように、この図では、パイプライン２１０によって実行される書き戻し処理および新規登録処理の各ステージＸＰｎ（ｎの数字は、処理が何段目かを示す）と、制御フラグに保持される情報との関係を示している。また、制御フラグに保持される情報には、「新規登録処理実行中」、「新規登録処理完了」、「新規登録処理強制完了」あるいは「リトライ期間」のうち、いずれかの情報が設定される。なお、図５に示したアドレス比較回路２２１が、アドレスの比較を行うタイミングは、書き戻し処理のＸＰ２で実行されるものとする。
【００５５】
ここで、「新規登録処理実行中」は、ムーブインバッファ２２０が、新規登録処理の要求をパイプライン２１０に発行してから、パイプライン２１０から新規登録処理の結果が返るまで制御フラグに設定される情報であり、新規登録処理が実行中である旨を示す。
【００５６】
「新規登録処理完了」は、新規登録処理がパイプライン２１０によって処理され、ＭＩデータがキャッシュデータ部６８に対する登録が完了してから、ムーブインバッファ２２０が開放されるまで制御フラグに設定される情報であり、新規登録処理の起動を抑止するとともに、新規登録処理が完了したことによるムーブインバッファ２２０の開放条件として使用される。
【００５７】
「新規登録処理強制完了」は、本発明により、書き戻し処理によって、同一ブロックにおける未処理の新規登録情報をキャンセルするために制御フラグに設定される情報であり、書き戻し処理による新規登録処理のキャンセル以降、ムーブインバッファ２２０が開放されるまで有効となる。書き戻し処理による新規登録処理のキャンセルは、レジスタ２２２がアドレス比較回路２２１からアドレス一致情報を取得した時点（書き戻し処理におけるＸＰ２の時点）で発生するので、この新規登録処理強制完了の情報は、書き戻し処理のＸＰ３からムーブインバッファ２２０が開放されるまで制御フラグに設定される。この新規登録処理強制完了の情報が制御フラグに設定されると、以降の新規登録処理はキャンセルされる。
【００５８】
「リトライ期間」は、図５に示したＭＩデータバッファ２２０ａによってＭＩデータをキャッシュデータ部６８に登録する準備が整ってから、新規登録処理の要求がパイプライン２１０に発行されるまで制御フラグに設定される情報である。制御フラグに「リトライ期間」が設定されている期間は、パイプライン２１０は、書き戻し処理をリトライする。
【００５９】
ところで、図６に示す（１）〜（４）は、書き戻し処理に対してその前後で新規登録処理の要求がパイプライン２１０に出力された場合の動作を、新規登録処理の要求がパイプライン２１０に出力されたタイミング別に表したものである。
【００６０】
（１）のケースでは、新規登録処理の後に、書き戻し処理が実行されるため、問題は無い。なぜなら、新規登録処理によってＭＩデータがキャッシュデータ部６８に記録された後に、書き戻し処理によってＭＯデータがキャッシュデータ部６８に記録されるため、最終的に、最新のデータがキャッシュデータ部６８に登録されるためである。また、（１）のケース以前に、新規登録処理が実行される場合も当然問題とならない。
【００６１】
一方、（２）〜（４）のケースでは、書き戻し処理の要求（ライトバックリクエスト）がパイプライン２１０に出力された後に、新規登録処理の要求がパイプライン２１０に出力される場合のケースを示しているが、書き戻し処理のＸＰ３のタイミング以降は、制御フラグに「新規登録処理強制完了」が設定されているため、（４）以降のケースでは、新規登録処理の要求がパイプライン２１０に出力されることは無いため、問題とならない。
【００６２】
すなわち、（２）、（３）に示すケースにおいてすれ違い（新規登録処理のキャンセルが間に合わず、書き戻し処理が行われた後に、新規登録処理が実行されてしまうケース）が発生する。この期間だけ、書き戻し処理のリトライを行うようにする。リトライ判定を行うタイミングは、書き戻し処理におけるＸＰ２のタイミングであるため、このタイミングで、リトライ判定回路２２３が制御フラグを参照した場合に、制御フラグに「リトライ期間」が設定されているように制御フラグを操作してやればよい。
【００６３】
なお、新規登録処理のキャンセルによって、新規登録処理が抑止された場合には、制御フラグに設定された情報が「リトライ期間」から「新規登録処理実行中」に変更されない。その場合には、新規登録処理のキャンセル時にアドレス比較回路２２１から入力されるアドレス一致情報をレジスタ２２２が取得するタイミングで、レジスタ２２２は、制御フラグに設定される情報を「リトライ期間」から「新規登録処理実行中」に変更する。
【００６４】
なお、（４）のケースにおいて、書き戻し処理の要求がパイプライン２１０に出力される際に、ＭＩデータバッファ２２０ａによるＭＩデータの登録準備が既に整っている場合には、制御フラグに「リトライ期間」が設定されているので、この場合には、書き戻し処理を１回のみリトライする。書き戻し処理によるアドレス処理回路２２１の比較処理によって、「リトライ期間」が解除され、それ以上、書き戻し処理がリトライされることはない。
【００６５】
続いて、図６において説明した処理を実行するための回路について説明する。図７は、図６において説明した処理を実行するための回路の一例を示す図である。この回路は、例えば、図５に示したレジスタ２２２に内蔵されているものとする。図７に示すように、この回路は、セット／リセット回路２３０〜２３３と、ＯＲ回路２４０〜２４２と、ＡＮＤ回路２５０〜２５２とを備えて構成される。
【００６６】
セット／リセット回路２３０は、ＭＩデータバッファ２２０ａにおけるＭＩデータの登録準備が完了した場合に、「High」を出力し、ＯＲ回路２４１から「High」を入力された時点で「Low」を出力する装置である。
【００６７】
セット／リセット回路２３１は、新規登録処理の要求がパイプライン２１０に出力された時点で、「High」を出力し、新規登録処理が図６に示したＸＰ５まで移行した時点で、「Low」を出力する装置である。このセット／リセット回路２３１から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「新規登録処理実行中」が設定される。
【００６８】
セット／リセット回路２３２は、新規登録処理が完了した時点（新規登録処理が図６に示したＸＰ５まで移行した時点）で、「High」を出力し、ムーブインバッファ２２０が開放された時点で、「Low」を出力する装置である。このセット／リセット回路２３２から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「新規登録処理完了」が設定される。
【００６９】
セット／リセット回路２３３は、アドレス比較回路２２１からアドレス一致情報が出力された時点（図６に示す書き戻し処理のＸＰ２のタイミング）で、「High」を出力し、ムーブインバッファ２２０が開放された時点で、「Low」を出力する装置である。このセット／リセット回路２３３から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「新規登録処理強制完了」が設定される。
【００７０】
ＯＲ回路２４０は、セット／リセット回路２３１またはセット／リセット回路２３２からの出力が「High」となった場合に、「High」を出力し、セット／リセット回路２３１およびセット／リセット回路２３２からの出力が双方とも「Low」となった場合に、「Low」を出力する装置である。
【００７１】
ＯＲ回路２４１は、セット／リセット回路２３２またはセット／リセット回路２３３からの出力が「High」となった場合に、「High」を出力し、セット／リセット回路２３２およびセット／リセット回路２３３からの出力が双方とも「Low」となった場合に、「Low」を出力する装置である。
【００７２】
ＯＲ回路２４２は、セット／リセット回路２３１、セット／リセット回路２３２またはセットリセット回路２３３のいずれか一つの出力が「High」となった場合に、「High」を出力し、セット／リセット回路２３１、セット／リセット回路２３２およびセットリセット回路２３３のすべての出力が「Low」となった場合に、「Low」を出力する装置である。なお、ＯＲ回路２４２から「High」が出力されている期間中は、新規登録処理が抑制される。
【００７３】
ＡＮＤ回路２５０は、セット／リセット回路２３０からの出力が「High」となり、かつＯＲ回路２４０からの出力が「Low」となった場合に、「High」を出力し、それ以外の場合には、「Low」を出力する装置である。なお、ＡＮＤ回路２５０から「High」が出力されている期間中は、レジスタ２２２が保持する制御フラグに「リトライ期間」が設定される。
【００７４】
ＡＮＤ回路２５１は、ＡＮＤ回路２５０からの出力が「High」となり、かつ、アドレス比較回路２２１からアドレス一致情報が出力された時点（図６に示す書き戻し処理のＸＰ２のタイミング）で、「High」を出力し、それ以外は、「Low」を出力する装置である。ＡＮＤ回路２５１から「High」が出力された時点で、ムーブインバッファ２２０はパイプライン２１０にリトライ要求を出力する。
【００７５】
ＡＮＤ回路２５２は、セット／リセット回路２３０からの出力が「High」となり、かつ、ＯＲ回路２４２からの出力が「Low」となった場合に「High」を出力し、それ以外は、「Low」を出力する回路である。ＡＮＤ回路２５２から「High」が出力された時点で、新規登録処理の要求が、パイプライン２１０に出力される。
【００７６】
図７に示すように、回路を構成することによって、本発明にかかる新規登録処理のキャンセルと、書き戻し処理のリトライを適切に実行することができる。
【００７７】
上述してきたように、本実施例にかかる２次キャッシュ２００ｃは、１次キャッシュ２００ｂにリプレースが発生し、書き戻し対象となるＭＯデータを取得した場合に、このＭＯデータの記録位置に対するＭＩデータの新規登録処理が完了しているか否かを、制御フラグに設定された情報を基にして判定し、新規登録処理が完了していない場合に、この新規登録処理をキャンセルして、新規登録処理の要求がパイプライン２１０に出力されないように抑制するので、キャッシデータ部６８に登録された最新のデータ（ＭＯデータ）が古いデータ（ＭＩデータ）によって上書きされ、消失してしまうという問題を解消することができる。
【００７８】
また、本実施例によれば、２次キャッシュ２００ｃは、新規登録処理のキャンセルが間に合わない場合には、パイプライン２１０が、書き戻し処理を何度も実行し、キャッシュデータ部６８にＭＯデータを何度も書き込むので、新規登録処理が遅れた場合であっても、最終的に、キャッシュデータ部６８に最新のデータ（ＭＯデータ）が記録されることになり、最新のデータが消失してしまうという問題を解消することができる。
【００７９】
また、本実施例によれば、上述した処理を、特別なデータパスなどを使用することなく実現することができるので、プロセッサにかかる製造コストを抑えることができる。
【００８０】
また、本実施例によれば、複数の処理を並列処理可能なパイプライン２１０が、書き戻し処理をリトライさせるので、ＭＯポート６６を占有してしまうことを防止し、迅速にリトライ処理以外の処理も実行することができる。
【産業上の利用可能性】
【００８１】
以上のように、本発明にかかる記録制御装置および記録制御方法は、１次キャッシュにリプレースが発生し、１次キャッシュのデータを２次キャッシュに書き戻す処理を実行するプロセッサなどに有用であり、特に、２次キャッシュの処理が遅れた場合でも、最新のデータを消失させることなく適切に２次キャッシュに記録させる場合に適している。
【図面の簡単な説明】
【００８２】
【図１】図１は、本発明の特徴を説明するための説明図である。
【図２】図２は、すれ違いのケースが発生した場合の本発明の処理を説明するための説明図である。
【図３】図３は、本発明にかかるプロセッサの構成を示す機能ブロック図である。
【図４】図４は、本実施例２にかかる２次キャッシュの構成を示す機能ブロック図である。
【図５】図５は、ムーブインバッファの構成を示す機能ブロック図である。
【図６】図６は、制御フラグに保持される情報を説明するための説明図である。
【図７】図７は、図６において説明した処理を実行するための回路の一例を示す図である。
【図８】図８は、従来のプロセッサの構成を示す機能ブロック図である。
【図９】図９は、従来の２次キャッシュの構成を示す機能ブロック図である。
【図１０】図１０は、従来技術にかかる問題を説明するための説明図である。
【図１１】図１１は、第１の従来技術を説明するための説明図である。
【図１２】図１２は、第２の従来技術を説明するための説明図である。
【図１３】図１３は、従来技術にかかるムーブインバッファの構成を示す機能ブロック図である。
【符号の説明】
【００８３】
１０，１００  プロセッサ
２０，３０，２００，３００  プロセッサコア
２５ａ，２００ａ  制御部（命令制御部／演算部）
２５ｂ，２００ｂ  １次キャッシュ
２５ｃ，２００ｃ  ２次キャッシュ
４０  ＳＣ
５０  メインメモリ
６０  ＭＩポート
６１，６２  調停回路
６３，２１０  パイプライン
６４  キャッシュタグ部
６５，２２０  ムーブインバッファ
６５ａ，２２０ａ  ＭＩデータバッファ
６６  ＭＯポート
６７  ＭＯデータバッファ
６８  キャッシュデータ部
７０，２２１  アドレス比較回路
７１，２２２  レジスタ
２２３  リトライ判定回路
２３０，２３１，２３２，２３３  セット／リセット回路
２４０，２４１，２４２  ＯＲ回路
２５０，２５１，２５２  ＡＮＤ回路
【国際調査報告】
2007096981.tif 000016
2007096981.tif 000017
2007096981.tif 000018