(57)【要約】  キャッシュメモリ制御部は、演算器より送信された８バイトのストアデータを保持する複数のＳＴＢと、複数のＷＢと、ＤＡＴＡ−ＲＡＭと、ＦＣＤＲと、ＥＣＣ−ＲＡＭとを備える。このような構成において、キャッシュメモリ制御部は、ストア対象外となるデータをＤＡＴＡ−ＲＡＭから取得してＦＣＤＲに格納し、格納したデータを、演算器より出力されてＳＴＢまたはＷＢに格納されているストアデータのストア対象データとマージして新たなストアデータを生成する。そして、キャッシュメモリ制御部は、生成した新たなストアデータをＤＡＴＡ−ＲＡＭに書き込むとともに、新たなストアデータからＥＣＣを生成してＥＣＣ−ＲＡＭに書き込む。
2008155850.tif 000002
【特許請求の範囲】
【請求項１】
演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成するキャッシュメモリ制御装置であって、  前記演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出するデータ検出手段と、  前記データ検出手段により検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定するデータ判定手段と、  前記データ判定手段により書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、前記データ検出手段によって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する対象外既存データ取得手段と、  前記対象外既存データ取得手段によって取得されたストア対象外既存データと、前記データ検出手段によって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、前記データ検出手段によって検出された書込みアドレスに書き込むストアデータ書込手段と、  前記ストアデータ書込手段によって生成された新たなストアデータから、前記ストアデータ書込手段によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するＥＣＣ生成手段と、  を備えたことを特徴とするキャッシュメモリ制御装置。
【請求項２】
前記データ判定手段によって前記キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、前記ストア対象のデータを登録した後に、前記データ検出手段によって検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出するデータ再検出手段をさらに備え、  前記ストアデータ書込手段は、前記データ再検出手段によって前記キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、前記新たなストアデータと前記格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出手段によって検出された書込みアドレスに書き込み、  前記ＥＣＣ生成手段は、前記ストアデータ書込手段によって生成されたさらに新たなストアデータから、前記ストアデータ書込手段によってキャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成することを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項３】
前記データ検出手段は、前記演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、  前記データ判定手段は、前記データ検出手段によって検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、  前記ストアデータ書込手段は、前記データ判定手段によって当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致すると判定された場合に、前記ストア対象外既存データと、前記ストア対象データと、前記データ検出手段によって検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、前記キャッシュメモリ上の書込みアドレスに書き込み、  前記ＥＣＣ生成手段は、前記ストアデータ書込手段によって生成された新たなストアデータから、前記ストアデータ書込手段によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成することを特徴とする請求項１または２に記載のキャッシュメモリ制御装置。
【請求項４】
演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成することに適するキャッシュメモリ制御方法であって、  前記演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出するデータ検出ステップと、  前記データ検出ステップにより検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定するデータ判定ステップと、  前記データ判定ステップにより書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、前記データ検出ステップによって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する対象外既存データ取得ステップと、  前記対象外既存データ取得ステップによって取得されたストア対象外既存データと、前記データ検出ステップによって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、前記データ検出ステップによって検出された書込みアドレスに書き込むストアデータ書込ステップと、  前記ストアデータ書込ステップによって生成された新たなストアデータから、前記ストアデータ書込ステップによってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するＥＣＣ生成ステップと、  を含んだことを特徴とするキャッシュメモリ制御方法。
【請求項５】
前記データ判定ステップによって前記キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、前記ストア対象のデータを登録した後に、前記データ検出ステップによって検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出するデータ再検出ステップをさらに備え、  前記ストアデータ書込ステップは、前記データ再検出ステップによって前記キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、前記新たなストアデータと前記格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出ステップによって検出された書込みアドレスに書き込み、  前記ＥＣＣ生成ステップは、前記ストアデータ書込ステップによって生成されたさらに新たなストアデータから、前記ストアデータ書込ステップによってキャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成することを特徴とする請求項４に記載のキャッシュメモリ制御方法。
【請求項６】
前記データ検出ステップは、前記演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、  前記データ判定ステップは、前記データ検出ステップによって検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、  前記ストアデータ書込ステップは、前記データ判定ステップによって当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致すると判定された場合に、前記ストア対象外既存データと、前記ストア対象データと、前記データ検出ステップによって検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、前記キャッシュメモリ上の書込みアドレスに書き込み、  前記ＥＣＣ生成ステップは、前記ストアデータ書込ステップによって生成された新たなストアデータから、前記ストアデータ書込ステップによってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成することを特徴とする請求項４または５に記載のキャッシュメモリ制御方法。
【請求項７】
演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成することをコンピュータに実行させるキャッシュメモリ制御プログラムであって、  前記演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出するデータ検出手順と、  前記データ検出手順により検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定するデータ判定手順と、  前記データ判定手順により書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、前記データ検出手順によって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する対象外既存データ取得手順と、  前記対象外既存データ取得手順によって取得されたストア対象外既存データと、前記データ検出手順によって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、前記データ検出手順によって検出された書込みアドレスに書き込むストアデータ書込手順と、  前記ストアデータ書込手順によって生成された新たなストアデータから、前記ストアデータ書込手順によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するＥＣＣ生成手順と、  をコンピュータに実行させることを特徴とするキャッシュメモリ制御プログラム。
【請求項８】
前記データ判定手順によって前記キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、前記ストア対象のデータを登録した後に、前記ストア対象のデータを登録した後に、前記データ検出手順によって検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出するデータ再検出手順をさらに備え、  前記ストアデータ書込手順は、前記データ再検出手順によって前記キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、前記新たなストアデータと前記格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出手順によって検出された書込みアドレスに書き込み、  前記ＥＣＣ生成手順は、前記ストアデータ書込手順によって生成されたさらに新たなストアデータから、前記ストアデータ書込手順によってキャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成することを特徴とする請求項７に記載のキャッシュメモリ制御プログラム。
【請求項９】
前記データ検出手順は、前記演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、  前記データ判定手順は、前記データ検出手順によって検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、  前記ストアデータ書込手順は、前記データ判定手順によって当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致すると判定された場合に、前記ストア対象外既存データと、前記ストア対象データと、前記データ検出手順によって検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、前記キャッシュメモリ上の書込みアドレスに書き込み、  前記ＥＣＣ生成手順は、前記ストアデータ書込手順によって生成された新たなストアデータから、前記ストアデータ書込手順によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成することを特徴とする請求項７または８に記載のキャッシュメモリ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  この発明は、演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成するキャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラムに関する。
【背景技術】
【０００２】  従来より、データ用キャッシュメモリ(ＤＡＴＡ−ＲＡＭ)は、８バイトのデータ毎に１バイトのＥＣＣ（Error  Check  and  Correct）を付加してデータ保護を行っている。また、ＥＣＣは、ＤＡＴＡ−ＲＡＭとは別にＥＣＣ専用に設けられたＥＣＣ用キャッシュメモリ(ＥＣＣ−ＲＡＭ)に格納される。このＥＣＣ−ＲＡＭは、キャッシュメモリへの登録とキャッシュメモリへの書き込みで更新される。【０００３】  ここで、図１７を用いてＥＣＣを生成する一般的な手法について説明する。図１７に示すように、キャッシュメモリへの書き込みは、まず、命令処理装置からストア命令が記憶処理装置に要求される。そして、この要求を受信した記憶処理装置は、ストア対象のキャッシュラインがキャッシュメモリに存在するかどうかを確認し、同時にストア対象のキャッシュラインのデータをキャッシュメモリから読み出してデータエラーのチェックを行う。ここで、演算器などから発行されたストアデータは、ストアバッファ（ＳＴＢ）に書き込まれる。【０００４】  その後、命令処理装置からストア許可が発行されれば、記憶処理装置は、ストアバッファのデータをライトバッファ（ＷＢ）に書き込み、さらに、ライトバッファからＤＡＴＡ−ＲＡＭへとストアデータを書き込む。この時、記憶処理装置は、書き込むと同時に、ＤＡＴＡ−ＲＡＭから読み出した８バイトのフェッチデータの中のストア対象外バイトのデータからＥＣＣを生成（ＥＣＣ生成１）する。さらに、記憶処理装置は、８バイトのストアデータの中のストア対象バイトのデータからＥＣＣを生成（ＥＣＣ生成２）する。そして、記憶処理装置は、この２つのＥＣＣをマージして、ストア更新後のデータに対するＥＣＣを作成し、作成したＥＣＣをＥＣＣ−ＲＡＭに格納する。【０００５】  ところが、ストア要求によるキャッシュメモリの検索アクセスでキャッシュメモリのエラーチェックを行った時のＤＡＴＡ−ＲＡＭの読み出し結果と、ストア許可後にキャッシュメモリへの書き込みアクセスでＥＣＣの生成のためにＤＡＴＡ−ＲＡＭの読み出した結果とで、１ビットエラーの発生状況に差がある可能性が発生ある。つまり、検索実行時にエラーチェックを行ったときにはエラーが検出されず、書き込み実行時に読み出したときにエラーがあると、書き込み後のデータに対応するＥＣＣを正しく生成できない。また、この時点で残っているＥＣＣは書き込み前のデータに対応するＥＣＣであり、書き込み前のデータが失われているため、故障ビットの訂正ができない。このため、書き込み実行時の読み出しでは、１ビットエラーが訂正不能なエラーとなる。この訂正不能なエラーが発生する原因として、ＤＡＴＡ−ＲＡＭを２回読み出しているためにそれぞれの結果が異なる可能性が存在することがあげられる。【０００６】  そこで、１回の読み出しで、エラーチェックとＥＣＣ生成までを実行する手法が開示されている（図１８参照）。つまり、書き込み実行時には、ＤＡＴＡ−ＲＡＭから読みだしたデータを使用しない記憶処理装置の構造が開示されている。具体的には、既に格納されているデータから作成されたＥＣＣを、ＳＴＢに入力されたストアデータに付加して新たなストアデータを生成する。このようにして生成した新たなス��アデータからＥＣＣを生成する（特許文献１〜４参照）。【０００７】
【特許文献１】特開平１−１８５７５３号公報
【特許文献１】特開平３−１０８０４１号公報
【特許文献１】特開平１０−２３２７８９号公報
【特許文献１】特開２００４−５１４１８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】  しかしながら、上記した従来の技術は、同一アドレスで８バイト以下の連続ストアが発生した場合、ＳＳＩ（Store-Store-interlock）が発生して性能が低下するという課題があった。具体的には、この構造を用いた記憶処理装置では、ストア対象外のデータをＥＣＣとして保持しているため、先行するストア命令が後続のストア命令と同一領域への書き込みを行う場合、先行するストアの終了を待たないとＥＣＣが作成されないため、８バイトフルストアを除く他のストアデータにおいてＳＳＩを検出し、次のストアを実行することができなかった。【０００９】  そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することが可能であるとともに、正確なＥＣＣを生成することが可能であるキャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】  上述した課題を解決し、目的を達成するため、請求項１に係る発明は、演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成するキャッシュメモリ制御装置であって、前記演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出するデータ検出手段と、前記データ検出手段により検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定するデータ判定手段と、前記データ判定手段により書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、前記データ検出手段によって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する対象外既存データ取得手段と、前記対象外既存データ取得手段によって取得されたストア対象外既存データと、前記データ検出手段によって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、前記データ検出手段によって検出された書込みアドレスに書き込むストアデータ書込手段と、前記ストアデータ書込手段によって生成された新たなストアデータから、前記ストアデータ書込手段によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するＥＣＣ生成手段と、を備えたことを特徴とする。【００１１】  また、請求項２に係る発明は、上記の発明において、前記データ判定手段によって前記キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、前記ストア対象のデータを登録した後に、前記データ検出手段によって検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出するデータ再検出手段をさらに備え、前記ストアデータ書込手段は、前記データ再検出手段によって前記キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、前記新たなストアデータと前記格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出手段によって検出された書込みアドレスに書き込み、前記ＥＣＣ生成手段は、前記ストアデータ書込手段によって生成されたさらに新たなストアデータから、前記ストアデータ書込手段によってキャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成することを特徴とする。【００１２】  また、請求項３に係る発明は、上記の発明において、前記データ検出手段は、前記演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、前記データ判定手段は、前記データ検出手段によって検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、前記ストアデータ書込手段は、前記データ判定手段によって当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致すると判定された場合に、前記ストア対象外既存データと、前記ストア対象データと、前記データ検出手段によって検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、前記キャッシュメモリ上の書込みアドレスに書き込み、前記ＥＣＣ生成手段は、前記ストアデータ書込手段によって生成された新たなストアデータから、前記ストアデータ書込手段によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成することを特徴とする。【００１３】  また、請求項４に係る発明は、演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成することに適するキャッシュメモリ制御方法であって、前記演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出するデータ検出ステップと、前記データ検出ステップにより検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定するデータ判定ステップと、前記データ判定ステップにより書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、前記データ検出ステップによって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する対象外既存データ取得ステップと、前記対象外既存データ取得ステップによって取得されたストア対象外既存データと、前記データ検出ステップによって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、前記データ検出ステップによって検出された書込みアドレスに書き込むストアデータ書込ステップと、前記ストアデータ書込ステップによって生成された新たなストアデータから、前記ストアデータ書込ステップによってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するＥＣＣ生成ステップと、を含んだことを特徴とする。【００１４】  また、請求項５に係る発明は、上記の発明において、前記データ判定ステップによって前記キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、前記ストア対象のデータを登録した後に、前記ストアデータ書込ステップによって前記新たなストアデータが書き込まれた後に、前記データ検出ステップによって検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出するデータ再検出ステップをさらに備え、前記ストアデータ書込ステップは、前記データ再検出ステップによって前記キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、前記新たなストアデータと前記格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出ステップによって検出された書込みアドレスに書き込み、前記ＥＣＣ生成ステップは、前記ストアデータ書込ステップによって生成されたさら��新たなストアデータから、前記ストアデータ書込ステップによってキャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成することを特徴とする。【００１５】  また、請求項６に係る発明は、上記の発明において、前記データ検出ステップは、前記演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、前記データ判定ステップは、前記データ検出ステップによって検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、前記ストアデータ書込ステップは、前記データ判定ステップによって当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致すると判定された場合に、前記ストア対象外既存データと、前記ストア対象データと、前記データ検出ステップによって検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、前記キャッシュメモリ上の書込みアドレスに書き込み、前記ＥＣＣ生成ステップは、前記ストアデータ書込ステップによって生成された新たなストアデータから、前記ストアデータ書込ステップによってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成することを特徴とする。【００１６】  また、請求項７に係る発明は、演算部から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成することをコンピュータに実行させるキャッシュメモリ制御プログラムであって、前記演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出するデータ検出手順と、前記データ検出手順により検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定するデータ判定手順と、前記データ判定手順により書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、前記データ検出手順によって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する対象外既存データ取得手順と、前記対象外既存データ取得手順によって取得されたストア対象外既存データと、前記データ検出手順によって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、前記データ検出手順によって検出された書込みアドレスに書き込むストアデータ書込手順と、前記ストアデータ書込手順によって生成された新たなストアデータから、前記ストアデータ書込手順によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するＥＣＣ生成手順と、をコンピュータに実行させることを特徴とする。【００１７】  また、請求項８に係る発明は、上記の発明において、前記データ判定手順によって前記キャッシュメモリの書込みアドレスに��トア対象のデータが存在しないと判定された場合に、前記ストア対象のデータを登録した後に、前記ストア対象のデータを登録した後に、前記データ検出手順によって検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出するデータ再検出手順をさらに備え、前記ストアデータ書込手順は、前記データ再検出手順によって前記キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、前記新たなストアデータと前記格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出手順によって検出された書込みアドレスに書き込み、前記ＥＣＣ生成手順は、前記ストアデータ書込手順によって生成されたさらに新たなストアデータから、前記ストアデータ書込手順によってキャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成することを特徴とする。【００１８】  また、請求項９に係る発明は、上記の発明において、前記データ検出手順は、前記演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、前記データ判定手順は、前記データ検出手順によって検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、前記ストアデータ書込手順は、前記データ判定手順によって当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致すると判定された場合に、前記ストア対象外既存データと、前記ストア対象データと、前記データ検出手順によって検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、前記キャッシュメモリ上の書込みアドレスに書き込み、前記ＥＣＣ生成手順は、前記ストアデータ書込手順によって生成された新たなストアデータから、前記ストアデータ書込手順によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成することを特徴とする。
【発明の効果】
【００１９】  本発明によれば、演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出し、検出された書込みアドレスに既に書き込まれているストア対象のデータが存在するか否かを判定し、書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得し、取得されたストア対象外既存データと、検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、検出された書込みアドレスに書き込み、生成された新たなストアデータから、キャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するので、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することが可能であるとともに、正確なＥＣＣを生成することが可能である。【００２０】  また、本発明によれば、キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、ストア対象のデータを登録した後に、検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出し、キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、新たなストアデータと格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出手段によって検出された書込みアドレスに書き込み、生成されたさらに新たなストアデータから、キャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成するので、キャッシュミスが発生した場合でも、正確なＥＣＣを生成することが可能である。【００２１】  また、本発明によれば、演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、当該ストアデータの書込みアドレスと、先行ストアデータの書込みアドレスとが一致すると判定された場合に、ストア対象外既存データと、ストア対象データと、検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、キャッシュメモリ上の書込みアドレスに書き込み、成された新たなストアデータから、キャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するので、先行するストアデータを考慮して新たなストアデータおよびＥＣＣを生成することができる結果、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生をより確実に抑止することが可能であるとともに、より正確なＥＣＣを生成することが可能である。
【図面の簡単な説明】
【００２２】
【図１】図１は、実施例１に係るキャッシュメモリ制御装置の全体構成を示すシステム構成図である。
【図２】図２は、実施例１に係るキャッシュメモリ制御部の構成を示すブロック図である。
【図３】図３は、ＳＴＢに記憶される情報の構成例を示す図である。
【図４】図４は、ＷＢに記憶される情報の構成例を示す図である。
【図５】図５は、ＦＣＤＲに記憶される情報の構成例を示す図である。
【図６】図６は、実施例１に係るキャッシュメモリ制御部における処理の流れを示すフローチャートである。
【図７】図７は、ＩＵ−ＲＥＱ処理におけるデータの流れを示す図である。
【図８】図８は、ＷＢ−ＧＯ処理におけるデータの流れを示す図である。
【図９】図９は、ＳＴ１−ＲＥＱ処理におけるデータの流れを示す図である。
【図１０】図１０は、ＳＴ２−ＲＥＱ処理におけるデータの流れを示す図である。
【図１１】図１１は、ＩＵ−ＲＥＱ処理の流れを示すフローチャートである。
【図１２】図１２は、ＷＢ−ＧＯ処理の流れを示すフローチャートである。
【図１３】図１３は、ＳＴ１−ＲＥＱ処理の流れを示すフローチャートである。
【図１４】図１４は、ＳＴ２−ＲＥＱ処理の流れを示すフローチャートである。
【図１５】図１５は、ストアデータのマージ例を示す図である。
【図１６】図１６は、データをマージする際に優先するデータ順位の例を示す図である。
【図１７】図１７は、従来技術を説明するための図である。
【図１８】図１８は、従来技術を説明するための図である。
【符号の説明】
【００２３】  １０  キャッシュメモリ制御部  １１  ＤＡＴＡ−ＲＡＭ  １２  ＥＣＣ−ＲＡＭ  １３  データ保持部  １４  ＳＴＢ  １５  ＷＢ  １６  ＦＣＤＲ  ２０  処理部  ２１  データ検出部  ２２  データ判定部  ２３  対象外既存データ取得部  ２４  ストアデータ書込部  ２５  ＥＣＣ生成部
【発明を実施するための最良の形態】
【００２４】  以下に添付図面を参照して、この実施例に係るキャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラムの実施例を詳細に説明する。なお、以下では、本実施例に係るキャッシュ制御部の概要および特徴、キャッシュ制御部の構成および処理の流れを順に説明し、最後に本実施例に対する種々の変形例を説明する。
【実施例１】
【００２５】［キャッシュメモリ制御装置の概要および特徴］  まず最初に、図１を用いて、実施例に係るキャッシュメモリ制御装置の概要および特徴を説明する。図１は、実施例１に係るキャッシュメモリ制御装置の全体構成を示すシステム構成図である。【００２６】  図１に示すように、このキャッシュメモリ制御装置は、演算器と命令処理部とに接続されて中央処理部（ＣＰＵまたはＭＰＵ）を構成している。また、中央処理部は、メインメモリに対してデータの読出しや書込みを行うメモリ制御部に接続されている。キャッシュメモリ制御部に接続される命令処理部は、ストアアドレス、ストアデータ幅、アライン情報などのストアに関する情報を付加したストア命令をキャッシュメモリ制御部に送信する。また、演算器は、８バイトのストアデータをキャッシュメモリ制御部に送信する。【００２７】  そして、キャッシュメモリ制御部は、演算器より送信された８バイトのストアデータを保持する複数のＳＴＢ（ストアバッファ）と、ＤＡＴＡ−ＲＡＭにストアする（書き込む）ストアデータを一時的に保持する複数のＷＢ（ライトバッファ）と、８バイトのストアデータを記憶するキャッシュメモリであるＤＡＴＡ−ＲＡＭと、ＤＡＴＡ−ＲＡＭから出力されたデータを保持する複数のＦＣＤＲ（フェッチデータレジスタ：Fetch  Data  Register）と、ＤＡＴＡ−ＲＡＭに記憶される８バイトのストアデータに対応したＥＣＣを記憶するＥＣＣ−ＲＡＭとを備える。【００２８】  このような構成において、このキャッシュメモリ制御部は、演算器から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成することを概要とするものであり、特に、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することが可能であるとともに、正確なＥＣＣを生成することが可能である点に主たる特徴がある。【００２９】  この主たる特徴を具体的に説明すると、キャッシュメモリ制御部は、演算器からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上のアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出する（図１の（１）参照）。具体的に例を挙げると、ＤＡＴＡ−ＲＡＭへの格納対象（ストア対象）となる６バイトのデータと格納対象外（ストア対象外）となる２バイトのデータから構成される８バイトのストアデータが演算器から送信された場合に、キャッシュメモリ制御部は、当該ストアデータがストアされる先のＤＡＴＡ−ＲＡＭ上のアドレス「アドレスＡ」と、当該ストアデータからストア対象となるストア領域「６バイト」と、ストア対象外となるストア対象外領域「２バイト」などを検出して当該ストアデータをＳＴＢに保持するとともに、ストアデータをＷＢに出力する。【００３０】  続いて、キャッシュメモリ制御部は、検出されたキャッシュメモリ上のアドレスに既に書き込まれている他のデータが存在するか否かを判定する（図１の（２）参照）。上記した例で具体的に説明すると、キャッシュメモリ制御部は、検出されたＤＡＴＡ−ＲＡＭ上のアドレス「アドレスＡ」を参照して、既に他のデータが書き込まれているか否かを判定する（キャッシュ検索を行う）。【００３１】  そして、キャッシュメモリ制御部は、キャッシュメモリのアドレスに他のデータが存在すると判定された場合に当該アドレスに書き込まれているデータのうち、先に検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する（図１の（３）参照）。上記した例で具体的に説明すると、キャッシュメモリ制御部は、ＤＡＴＡ−ＲＡＭのアドレス「アドレスＡ」に他のデータが存在すると判定された場合に、つまり、キャッシュヒットした場合に、当該アドレスに書き込まれているデータのうち、検出されたストア対象外領域「２バイト」に書き込まれているデータをストア対象外既存データ（ここでは、２バイトのデータ）としてＦＣＤＲに格納する。なお、「２バイト」のストア対象外領域のデータだけでなく、この「２バイト」を含む「８バイト」全体をＦＣＤＲに格納するようにしてもよい。【００３２】  その後、キャッシュメモリ制御部は、取得されたストア対象外既存データと、先に検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、検出されたキャッシュメモリ上のアドレスに書き込む（図１の（４）参照）。上記した例で具体的に説明すると、キャッシュメモリ制御部は、ＦＣＤＲに保持されている取得されたストア対象外既存データ「２バイト」をＷＢに読み出して格納するとともに、このストア対象外既存データとストア対象データ「６バイト」とをマージして新たなストアデータ「８バイト」を生成してＷＢに格納する。そして、キャッシュメモリ制御部は、新たなストアデータ「８バイト」をＷＢから読み出して、検出されたＤＡＴＡ−ＲＡＭ上のアドレス「アドレスＡ」に書き込む。【００３３】  続いて、キャッシュメモリ制御部は、生成された新たなストアデータから、キャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成する（図１の（５）参照）。上記した例で具体的に説明すると、キャッシュメモリ制御部は、生成されてＷＢに保持される新たなストアデータ「８バイト」から、ＤＡＴＡ−ＲＡＭに書き込まれた新たなストアデータの１バイトのＥＣＣを生成して、ＥＣＣ−ＲＡＭに格納する。【００３４】  このように、実施例１に係るキャッシュメモリ制御部は、ＤＡＴＡ−ＲＡＭに既に格納されているデータから作成されたＥＣＣではなく、ストア対象外領域のデータ（ストアデータにより上書きされない領域のデータ）そのものを、ストア実行前にＷＢに保持しておき、ストア対象データとストア対象外領域のデータとをマージして新たなストアデータとＥＣＣとを生成することができる結果、上記した主たる特徴のごとく、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することが可能であるとともに、正確なＥＣＣを生成することが可能である点に主たる特徴がある。【００３５】［キャッシュメモリ制御装置の構成］  次に、図２を用いて、図１に示したキャッシュメモリ制御部の構成を説明する。図２は、実施例１に係るキャッシュメモリ制御部の構成を示すブロック図である。図２に示すように、このキャッシュメモリ制御部１０は、ＤＡＴＡ−ＲＡＭ１１、ＥＣＣ−ＲＡＭ１２と��データ保持部１３と、処理部２０とから構成される。【００３６】  ＤＡＴＡ−ＲＡＭ１１は、８バイト単位で複数のデータを記憶するキャッシュメモリであり、具体的には、命令処理部によって、演算器から出力されたデータを記憶したり、記憶されているデータが読み出されたりする。【００３７】  ＥＣＣ−ＲＡＭ１１は、後述するＥＣＣ生成部２５によって生成されたＥＣＣデータを記憶するメモリであり、具体的には、ＤＡＴＡ−ＲＡＭ１１に記憶されるデータそれぞれに対してＥＣＣ生成部２５によって生成された１バイトのＥＣＣデータを、それぞれのデータに対応付けて記憶する。【００３８】  データ保持部１３は、演算器から送信されたストアデータに対して後述する処理部２０が各処理を実施するために、当該ストアデータを一時的に保持するバッファであり、特に本実施例に密接に関連するものとしては、ＳＴＢ１４と、ＷＢ１５と、ＦＣＤＲ１６とを備える。【００３９】  ＳＴＢ１４は、演算器から送信されたストアデータを一時的に保持するバッファである。具体的に例を挙げれば、ＳＴＢ１４は、演算器からストアデータが送信され、命令処理部からストア命令とともにストアアドレス、ストアデータ幅、アライン情報などのストアに関する情報が出力されると、図３に示すように、後述するデータ検出部２１によって検出（作成）されて格納されたストアデータのどのバイトをストアするかを示すストア対象データ（ストアバイトマーク：ＳＴＢＭ）と、ＤＡＴＡ−ＲＡＭ上のどこにストアするかを示すストアアドレス（ＡＤＲＳ）とを記憶する。なお、図３は、ＳＴＢに記憶される情報の構成例を示す図である。【００４０】  ＷＢ１５は、ＳＴＢ１４からＤＡＴＡ−ＲＡＭ１１にストアデータを格納する際に、ストアデータ領域、ストア対象外領域、ストアアドレスが検出されると、ＳＴＢ１４から出力されたストアデータを保持する。例えば、ＷＢ１５は、図４に示すように、ＳＴＢ１４と同様、ストア対象データ（ストアバイトマーク：ＳＴＢＭ）と、ストアアドレス（ＡＤＲＳ）とを、ＥＶＥＮとＯＤＤとのそれぞれに対応付けて保持する。なお、図４は、ＷＢに記憶される情報の構成例を示す図である。【００４１】  ＦＣＤＲ１６は、ＤＡＴＡ−ＲＡＭ１１から出力されたストア対象外領域に書き込まれているデータをストア対象外既存データとして一時的に保持するバッファである。具体的には、ＦＣＤＲ１６には、データ検出部２１によって検出された当該ストアデータからストア対象外となるストア対象外領域に書き込まれているストア対象外既存データが、対象外既存データ取得部２３によって当該ストアデータがストアされるＤＡＴＡ−ＲＡＭ１１上のアドレスから読み出されて格納される。例えば、ＦＣＤＲ１６は、図５に示すように、８バイトの領域にＤＡＴＡ−ＲＡＭ１１から読み出されたストア対象外既存データを保持する。なお、図５は、ＦＣＤＲに記憶される情報の構成例を示す図である。【００４２】  処理部２０は、種々の処理を実行する処理部であり、特に本実施例に密接に関連するものとしては、データ検出部２１と、データ判定部２２と、対象外既存データ取得部２３と、ストアデータ書込部２４と、ＥＣＣ生成部２５とを備える。【００４３】  デ���タ検出部２１は、演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上のアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出する。具体的には、データ検出部２１は、演算器から８バイトのストアデータが送信されると、当該ストアデータからストア対象データ（ストアバイトマーク：ＳＴＢＭ）と、ストアアドレス（ＡＤＲＳ）とをＳＴＢ１４に格納するとともに、ストア対象外となるストア対象外領域を検出して、当該ストアデータをＷＢ１５に送信する。例えば、データ検出部２１は、演算器から送信されたストアデータからストア対象領域（６バイト）のＳＴＢＭと、ストアアドレス（ＡＤＲＳ＝アドレスＡ）とをＳＴＢ１４に保持するとともに、ストア対象外となるストア対象外領域（２バイト）を検出して、当該ストアデータをＷＢ１５に送信する。【００４４】  データ判定部２２は、データ検出部２１により検出されたキャッシュメモリ上のアドレスに既に書き込まれている他のデータが存在するか否かを判定する。具体的に例を挙げると、データ検出部２１により検出されてＳＴＢ１４に格納されるＤＡＴＡ−ＲＡＭ１１上のアドレス「ＡＤＲＳ」を参照して、既に他のデータが書き込まれているか否かを判定し、判定した結果を後述する対象外既存データ取得部２３に通知する。【００４５】  対象外既存データ取得部２３は、データ判定部２２によりキャッシュメモリのアドレスに他のデータが存在すると判定された場合に、当該アドレスに書き込まれているデータのうち、データ検出部２１によって検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得する。上記した例で具体的に説明すると、対象外既存データ取得部２３は、ＤＡＴＡ−ＲＡＭ１１上のアドレス「ＡＤＲＳ（例えば、アドレスＡ）」に他のデータが存在するとデータ判定部２２から通知された場合に、つまり、キャッシュヒットした場合に、当該アドレスに書き込まれているデータのうち、検出されたストア対象外領域（２バイト）に書き込まれているデータをストア対象外既存データ（ここでは、２バイトのデータ）としてＦＣＤＲ１６に格納する。【００４６】  ストアデータ書込部２４は、対象外既存データ取得部２３によって取得されたストア対象外既存データと、データ検出部２１によって検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、データ検出部２１によって検出されたキャッシュメモリ上のアドレスに書き込む。上記した例で具体的に説明すると、ストアデータ書込部２４は、ＦＣＤＲ１６に格納されているストア対象外既存データ「２バイト」とＷＢ１５に格納されているストア対象領域のストア対象データ「６バイト」とをＷＢ１５上でマージ（例えば、ＥＯＲ回路による処理）して新たなストアデータ「８バイト」を生成してＷＢ１５に格納する。そして、ストアデータ書込部２４は、ＷＢ１５から新たなストアデータ「８バイト」を読み出して、検出されたＤＡＴＡ−ＲＡＭ１１上のアドレス「ＡＤＲＤ（例えば、アドレスＡ）」に書き込む。【００４７】  ＥＣＣ生成部２５は、ストアデータ書込部２４によっ��生成された新たなストアデータから、ストアデータ書込部２４によってキャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成する。上記した例で具体的に説明すると、ＥＣＣ生成部２５は、ストアデータ書込部２４によって生成されてＷＢ１５に格納される新たなストアデータ「８バイト」を読み出し、ＤＡＴＡ−ＲＡＭに書き込まれた新たなストアデータの１バイトのＥＣＣを生成して、ＥＣＣ−ＲＡＭ１２に格納する。【００４８】［キャッシュメモリ制御部による処理］  次に、図６を用いて、キャッシュメモリ制御部による処理を説明する。図６は、実施例１に係るキャッシュメモリ制御部における処理の流れを示すフローチャートである。【００４９】  図６に示すように、演算器からストアデータが送信されると（ステップＳ６０１肯定）、キャッシュメモリ制御部１０のデータ検出部２１は、当該ストアデータからストア対象データ（ストアバイトマーク：ＳＴＢＭ）と、ストアアドレス（ＡＤＲＳ）とを、ＳＴＢ１４に格納するとともに、ストア対象外となるストア対象外領域を検出して、当該ストアデータをＷＢ１５に送信する（ステップＳ６０２）。【００５０】  続いて、データ判定部２２は、データ検出部２１により検出されてＳＴＢ１４に保持されるＤＡＴＡ−ＲＡＭ１１上のアドレス「ＡＤＲＳ」を参照して、既に他のデータが書き込まれているか否かを判定する、つまり、キャッシュ検索を実施する（ステップＳ６０３）。【００５１】  そして、既に他のデータが書き込まれている（キャッシュヒットした）場合（ステップＳ６０４肯定）、対象外既存データ取得部２３は、当該アドレスに書き込まれているデータのうち、検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとしてＤＡＴＡ−ＲＡＭ１１から取得し、取得したストア対象外既存データをＦＣＤＲ１６に格納する（ステップＳ６０５）。【００５２】  その後、ストアデータ書込部２４は、ＦＣＤＲ１６に格納されているストア対象外既存データをＷＢ１５に読み出して、ＷＢ１５に保持されているストア対象領域のストア対象データとＷＢ１５上でマージして新たなストアデータを生成し、検出されたＤＡＴＡ−ＲＡＭ１１上のアドレスに書き込む（ステップＳ６０６）。【００５３】  そして、ＥＣＣ生成部２５は、ストアデータ書込部２４によって生成された新たなストアデータから、ストアデータ書込部２４によってＤＡＴＡ−ＲＡＭ１１に書き込まれた新たなストアデータのＥＣＣを生成してＥＣＣ−ＲＡＭ１２に格納する（ステップＳ６０７）。【００５４】  一方、ステップＳ６０４に戻り、ストア対象のデータが書き込まれていない（キャッシュミスした）場合（ステップＳ６０４否定）、ストデータ書き込み対象のデータを登録し（ステップＳ６０８）、再び、キャッシュ検索を実施する。（ステップＳ６０３）。【００５５】［実施例１による効果］  このように、実施例１によれば、演算部からストアデータが送信された場合に、当該ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該ストアデータからストア対象となるストア領域と、ストア対象外となるストア対象外領域とを検出し、検出された書込みアドレスに既に書き込まれているスト���対象のデータが存在するか否かを判定し、書込みアドレスにストア対象のデータが存在すると判定された場合に、当該書込みアドレスに書き込まれているデータのうち、検出されたストア対象外領域に書き込まれているデータをストア対象外既存データとして取得し、取得されたストア対象外既存データと、検出されたストア対象領域のストア対象データとをマージして生成した新たなストアデータを、検出された書込みアドレスに書き込み、生成された新たなストアデータから、キャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するので、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することが可能であるとともに、正確なＥＣＣを生成することが可能である。【００５６】  具体的には、ＤＡＴＡ−ＲＡＭに既に記憶されているデータから生成されるＥＣＣを用いずに、ＤＡＴＡ−ＲＡＭに記憶されているデータそのものを用いて、新たなストアデータを生成するとともに、ＥＣＣを生成するので、先行するストアデータがＥＣＣを作成するのを待たずに処理することができる結果、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することが可能であるとともに、正確なＥＣＣを生成することが可能である。また、ＲＡＭ１ビットエラー完全救済が可能である。
【実施例２】
【００５７】  ところで、実施例１では、ＤＡＴＡ−ＲＡＭに既に格納されているストア対象外領域のデータそのものを、ストア実行前にＦＣＤＲ又は、ＷＢに保持しておき、ストアデータとストア対象外領域のデータとをマージして新たなストアデータとＥＣＣとを生成する場合について説明したが、本実施例はこれに限定されるものではなく、先行するストアデータが同じアドレスにストアされる場合に、この先行するストアデータのストア対象領域を予め考慮して、新たなストアデータとＥＣＣとを生成することもできる。【００５８】  そこで、実施例２では、図７〜図１４を用いて、ストアデータが処理されるバッファであるＳＴＢ、ＷＢ、ＦＣＤＲやストアデータやＥＣＣが格納されるＤＡＴＡ−ＲＡＭ、ＥＣＣ−ＲＡＭとの間でやり取りされるデータの流れについて、詳細に説明するとともに、先行するストアデータが同じアドレスにストアされる場合に、この先行するストアデータのストア対象領域を予め考慮して、新たなストアデータとＥＣＣとを生成する。【００５９】［各処理におけるデータの流れ］（演算器／命令処理部からのストア要求）  まず、図７を用いて、演算器／命令処理部からのストア要求が送信されると、実施されるＩＵ−ＲＥＱ（Instruction  Unit-Request）処理の流れについて説明する。図７は、ＩＵ−ＲＥＱ処理におけるデータの流れを示す図である。【００６０】  図７に示すように、命令処理部は、ストアアドレス、ストアデータ幅、アライン情報などのストアに関するストア情報が付随したストア命令をキャッシュメモリ制御部に送信（発行）する。このストア命令の発行を受けたキャッシュメモリ制御部では、これらのストア情報からＳＴＢＭを作成し、ＡＤＲＳとともにＳＴＢに格納する。【００６１】  続いて、キャッシュメモリ制御部は、ストア命令をパイプラインへと投入し、ストア対象のキャッシュラインがキャッシュメモリ(ＤＡＴＡ−ＲＡＭ)に存在するかどうかを確認する。また、キャッシュメモリ制御部は、ストアアドレスにより８バイトのデータキャッシュメモリから読み出すと同時に、このデータのエラーチェックを行う。そして、キャッシュヒットした場合、キャッシュメモリ制御部は、読み出したストア領域のデータをＦＣＤＲにセットし、キャッシュミスした場合は、主記憶（メインメモリ）に対してデータを要求する。【００６２】（ＳＴＢからＷＢへの書き込み）  次に、図８を用いて、ＳＴＢからＷＢへストアデータが書き込まれるＷＢ−ＧＯ（Write-Buffer-GO）処理の流れについて説明する。図８は、ＷＢ−ＧＯ処理におけるデータの流れを示す図である。【００６３】  図８に示すように、キャッシュメモリ制御部は、命令処理部からストア許可を受け取り、対象のＳＴＢの優先順位が最も高く、空きのＷＢがあった場合に、ＷＢ−ＧＯ（書き込みリクエスト）を発行する。すると、キャッシュメモリ制御部は、ストア対象領域のデータをＳＴＢから、ストア対象外領域のデータをＦＣＤＲから、それぞれ読み出してＷＢへ更新する。なお、キャッシュメモリ制御部は、ＳＴＢ−ＳＴＢＭからストア対象領域を判断する。【００６４】  ここで、キャッシュメモリ制御部は、現在ストア対象となっているストアデータのＷＢ−ＧＯ−ＡＤＲＳ（ＷＢ−ＧＯ��象のＳＴＢ−ＡＤＲＳ）と、現在のストアデータよりも先に演算器から送信されたストアデータを示す先行ストアデータのＳＴ２−ＡＤＲＳ（ＳＴ２−ＲＥＱのアドレス）がアドレスマッチして、ＷＢ−ＧＯとＳＴ２−ＲＥＱのタイミングが同一の場合、ＳＴ２−ＳＴＢＭを参照してＳＴ２−ＤＡＴＡもさらにマージしてＷＢに書き込む。つまり、ここで、キャッシュメモリ制御部は、先行する先行ストアデータがストアされるＤＡＴＡ−ＲＡＭのアドレスと、現地点でのストアデータがストアされるＤＡＴＡ−ＲＡＭのアドレスとが一致する場合に、先行ストアデータのストア対象データをＷＢから取得して、現地点でのストア対象データとＦＣＤＲから取得したストア対象外既存データと先行ストアデータのストア対象データとをマージしてＷＢに書き込むこととなる。【００６５】（キャッシュメモリ検索）  次に、図９を用いて、図７においてキャッシュミスが発生した場合に実施されるＳＴ１−ＲＥＱ（Store1-Request）処理の流れについて説明する。図９は、ＳＴ１−ＲＥＱ処理におけるデータの流れを示す図である。【００６６】  図９に示すように、キャッシュメモリ制御部は、ストアデータがＷＢに格納されても、ストア対象の領域がＤＡＴＡ−ＲＡＭにまだ存在しない場合は、ＷＢからＳＴ１−ＲＥＱを起動する。すると、キャッシュメモリ制御部は、ＷＢ−ＡＤＲＳを用いて、キャッシュメモリを検索する。そして、キャッシュヒットし、かつ、ＤＡＴＡ−ＲＡＭにエラーがない場合、キャッシュメモリ制御部は、ＷＢ−ＳＴＢＭにより、ストア対象外領域のデータのみをＷＢに書き込み、キャッシュミスした場合は、主記憶に対してデータ要求する。【００６７】（キャッシュメモリへの書き込み）  次に、図１０を用いて、ＷＢからキャッシュメモリへストアデータを書き込む際またはＥＣＣを生成する際に実施されるＳＴ２−ＲＥＱ（Store2-Request）処理の流れについて説明する。図１０は、ＳＴ２−ＲＥＱ処理におけるデータの流れを示す図である。【００６８】  図１０に示すように、キャッシュメモリ制御部は、ストア対象の領域がキャッシュメモリに存在する場合は、ＷＢからＳＴ２−ＲＥＱを起動する。そして、キャッシュメモリ制御部は、ＳＴ２−ＲＥＱを起動すると、ＳＴ２−ＲＥＱ対象のＷＢからストアデータを取り出し、ＤＡＴＡ−ＲＡＭに更新する。そして、キャッシュメモリ制御部は、このデータから８バイトデータに対する１バイトのＥＣＣを作成してＥＣＣ−ＲＡＭに書き込む。【００６９】  ここで、キャッシュメモリ制御部は、ＳＴ２-ＡＤＲＳとＳＴＢ−ＡＤＲＳ（各ストアバッファのアドレス）がアドレスマッチした場合、対象のＦＣＤＲへこのストアデータを反映する。その場合、キャッシュメモリ制御部は、ＳＴ２−ＳＴＢＭによりストア対象領域のみ更新する。また、キャッシュメモリ制御部は、ＳＴ２−ＡＤＲＳと他のＷＢ−ＡＤＲＳ（ＳＴ２を実行する以外の各ＷＢのアドレス）とがアドレスマッチした場合に、対象のＷＢへとストアデータを反映する。このときも、キャッシュメモリ制御部は、ＳＴ２−ＳＴＢＭによりストア対象領域のみ更新する。【００７０】  さらに、ＳＴ２−ＲＥＱが連続した場合、キャッシュメモリ制御部は、先行するストアのデータを後続のストアを実行するＷＢに反映することができないので、ＥＣＣの生成前に１τ前の先行するストアのアドレスであるＳＴ２−ＡＤＲＳとＳＴ２−ＡＤＲＳがマッチした場合は、１τ前の先行するストアのデータとマージする。【００７１】［各処理のおける処理フロー］  次に、図１１〜図１４を用いて、上記した各処理「演算器／命令処理部からのストア要求（ＩＵ−ＲＥＱ）」、「ＳＴＢからＷＢへの書き込み（ＷＢ−ＧＯ）」、「キャッシュメモリ検索（ＳＴ１−ＲＥＱ）」、「キャッシュメモリへの書き込み（ＳＴ２−ＲＥＱ）」の処理フローについて説明する。なお、各処理のフローチャートで用いる「ＬＩＤ」とは、ストアする領域がキャッシュメモリに排他型で存在することを示しており、この「ＬＩＤ」とは、キャッシュヒットした場合に更新され、ＳＴＢ、ＷＢに格納される。【００７２】（ＩＵ−ＲＥＱ処理フロー）  まず、図１１を用いて、図７に示したＩＵ−ＲＥＱ処理フローについて説明する。図１１は、ＩＵ−ＲＥＱ処理の流れを示すフローチャートである。【００７３】  図１１に示すように、命令処理部からストア命令が送信（発行）されると（ステップＳ１１０１肯定）、キャッシュメモリ制御部は、ストア対象のデータがＤＡＴＡ−ＲＡＭに既に記憶されているか否か（キャッシュ検索）を判定する（ステップＳ１１０２）。【００７４】  そして、キャッシュヒットしなかった場合（ステップＳ１１０２肯定）、キャッシュメモリ制御部は、「ＬＩＤ」を「１」に更新し（ステップＳ１１０３）、受信したストアデータからＳＴＢＭを作成し、ＡＤＲＳとともにＳＴＢに格納する（ステップＳ１１０４）と同時に、キャッシュヒットしたストア対象データをＤＡＴＡ−ＲＡＭから読み出してＦＣＤＲに格納する（ステップＳ１１０５）。【００７５】  一方、キャッシュヒットしなかった場合（ステップＳ１１０２否定）、キャッシュメモリ制御部は、「ＬＩＤ」を「０」に更新して、受信したストアデータからＳＴＢＭを作成し、ＡＤＲＳとともにＳＴＢに格納する（ステップＳ１１０６）。【００７６】（ＷＢ−ＧＯ処理フロー）  次に、図１２を用いて、図８に示したＷＢ−ＧＯ処理フローについて説明する。図１２は、ＷＢ−ＧＯ処理の流れを示すフローチャートである。【００７７】  図１２に示すように、命令処理部からストア許可を受信すると（ステップＳ１２０１肯定）、キャッシュメモリ制御部は、ＷＢ−ＧＯリクエストを発行してＷＢ−ＧＯ処理を実行する（ステップＳ１２０２）。【００７８】  すると、キャッシュメモリ制御部は、ＳＴＢから取得したストア対象領域のデータであるストア対象データと、ＦＣＤＲから取得したストア対象外領域のデータであるストア対象外既存データと、ＷＢ−ＧＯとＳＴ２がアドレスマッチした場合に取得した他のＷＢのストア対象データ（先行ストアデータのストア対象データ）と、ＷＢ−ＧＯと同一ＷＢとがアドレスマッチした場合に取得した同一ＷＢのストア対象データ（先行ストアデータのストア対象データ）とをマージして（ステップＳ１２０３〜ステップＳ１２０８）、マージしたストアデータをＷＢに格納する（ステップＳ１２０９）。【００７９】（ＳＴ１−ＲＥＱ処理フロー）  次に、図１３を用いて、図９に��したＳＴ１−ＲＥＱ処理フローについて説明する。図１３は、ＳＴ１−ＲＥＱ処理の流れを示すフローチャートである。【００８０】  図１３に示すように、キャッシュミスが発生すると（ステップＳ１３０１肯定）、キャッシュメモリ制御部は、ＷＢの状態を確認する（ステップＳ１３０２）。【００８１】  そして、ＷＢのＬＩＤが「０」である場合（ステップＳ１３０３肯定）、キャッシュメモリ制御部は、ＳＴ１−ＲＥＱを起動する（ステップＳ１３０４）。【００８２】  そして、キャッシュメモリ制御部は、演算器から受信したストアデータのキャッシュ検索を再度行い（ステップＳ１３０５）、キャッシュヒットすると（ステップＳ１３０５肯定）、ＬＩＤを「１」に更新するとともに、キャッシュヒットしたストア対象データをＤＡＴＡ−ＲＡＭから読み出してＷＢに格納する（ステップＳ１３０６）。【００８３】  一方、キャッシュヒットしなかった場合（ステップＳ１３０５否定）、キャッシュメモリ制御部は、受信したストアデータを主記憶に要求するとともに（ステップＳ１３０８）、当該ストアデータをＤＡＴＡ−ＲＡＭに書き込み（ステップＳ１３０９）、ステップＳ１３０２以降の処理を実施する。【００８４】  ステップＳ１３０３に戻り、ＷＢのＬＩＤが「０」でない場合（ステップＳ１３０３否定）、キャッシュメモリ制御部は、ＳＴ２−ＲＥＱを起動する（ステップＳ１３０７）。【００８５】（ＳＴ２−ＲＥＱ処理フロー）  次に、図１４を用いて、図１０に示したＳＴ２−ＲＥＱ処理フローについて説明する。図１４は、ＳＴ２−ＲＥＱ処理の流れを示すフローチャートである。【００８６】  図１４に示すように、キャッシュメモリ制御部は、ＷＢの状態を確認し（ステップＳ１４０１）、ＬＩＤが「１」である場合に（ステップＳ１４０２肯定）、ＳＴ２−ＲＥＱを起動する（ステップＳ１４０３）。【００８７】  すると、キャッシュメモリ制御部は、ＷＢのストアデータをＤＡＴＡ−ＲＡＭに格納する（ステップＳ１４０４）。同時に、キャッシュメモリ制御部は、ＷＢ−ＧＯとＳＴ２とのアドレスがマッチする場合に（ステップＳ１４０５肯定）、ストア対象領域のデータを他のＷＢに格納するとともに（ステップＳ１４０６）、ＳＴＢとＳＴ２とのアドレスがマッチする場合に（ステップＳ１４０７肯定）、ストア対象領域のデータをＦＣＤＲに格納し（ステップＳ１４０８）、他のＷＢとＳＴ２とのアドレスがマッチする場合に（ステップＳ１４０９肯定）、ストア対象領域のデータを他のＷＢに格納し（ステップＳ１４１０）、１τ前のＳＴ２とＳＴ２とのアドレスがマッチする場合に（ステップＳ１４１１肯定）、１τ前のデータと現地点でのストアデータとをマージして（ステップＳ１４１２）、当該マージしたストアデータからＥＣＣを作成してＥＣＣ−ＲＡＭに格納する（ステップＳ１４１３）。【００８８】  一方、ステップＳ１４０２に戻り、ＬＩＤが「１」でない場合に（ステップＳ１４０２否定）、計算機は、ＳＴ１−ＲＥＱを起動する（ステップＳ１４１４）。【００８９】［実施例２による効果］  このように、実施例２によれば、キャッシュメモリの書込みアドレスにストア対象のデータが存在しないと判定された場合に、ストア対象を登録した後に��検出されたキャッシュメモリ上のアドレスに既に格納されている格納済みデータを検出し、キャッシュメモリ上の書込みアドレスに既に格納されている格納済みデータが検出された場合に、新たなストアデータと格納済みデータとをマージして生成したさらに新たなストアデータを、前記データ検出手段によって検出された書込みアドレスに書き込み、生成されたさらに新たなストアデータから、キャッシュメモリに書き込まれたさらに新たなストアデータのＥＣＣを生成するので、キャッシュミスが発生した場合でも、正確なＥＣＣを生成することが可能である。【００９０】  また、実施例２によれば、演算部からストアデータが送信された場合に、当該ストアデータより先に演算部から送信された先行する先行ストアデータがストアされるキャッシュメモリ上の書込みアドレスと、当該先行ストアデータからストア対象となる先行ストア領域とをさらに検出し、検出された当該ストアデータの書込みアドレスと、前記先行ストアデータの書込みアドレスとが一致するか否かをさらに判定し、当該ストアデータの書込みアドレスと、先行ストアデータの書込みアドレスとが一致すると判定された場合に、ストア対象外既存データと、ストア対象データと、検出された先行ストア領域の先行ストア対象データとをマージして生成した新たなストアデータを、キャッシュメモリ上の書込みアドレスに書き込み、成された新たなストアデータから、キャッシュメモリに書き込まれた新たなストアデータのＥＣＣを生成するので、先行するストアデータを考慮して新たなストアデータおよびＥＣＣを生成することができる結果、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生をより確実に抑止することが可能であるとともに、より正確なＥＣＣを生成することが可能である。
【実施例３】
【００９１】  ところで、実施例２では、現地点でのストアデータと、先行するストアデータや現地点でのストアデータを格納する先のＷＢに既に格納されているストアデータなどをマージして、新たなストアデータとを生成する場合について説明したが、本実施例では、マージする際にどのデータを優先するかについて説明する。【００９２】  まず、図１５を用いて、ストアデータのマージが発生する場合について説明する。図１５は、ストアデータのマージ例を示す図である。なお、図１５で示す「ＷＢ０」と「ＷＢ１」とは、物理的に異なるライトバッファであることを示している。【００９３】  例えば、キャッシュメモリ制御部は、演算器から送信されたストアデータのストア対象データと、当該ストア対象外領域に対応するＤＡＴＡ−ＲＡＭに既に記憶されているデータであるストア対象外既存データとのデータマージを行う（図１５の（１）参照）。【００９４】  また、演算器から現地点で送信されたストアデータの書き込み先アドレスと、現地点で受信したストアデータより先にＷＢに格納されている先行ストアデータの書き込み先アドレスとが一致する場合に、キャッシュメモリ制御部は、演算器から送信されたストアデータのストア対象データと、当該ストア対象外領域に対応するＤＡＴＡ−ＲＡＭに既に記憶されているデータであるストア対象外既存データと、先行ストアデータのストア対象データとのデータマージを行う（図１５の（２）参照）。【００９５】  また、ＷＢ０に格納されているストアデータの書き込み先アドレスと、ＷＢ１に格納されているストアデータの書き込み先アドレスとが一致する場合に、キャッシュメモリ制御部は、ＷＢ０に格納されているストアデータのストア対象データと、ＷＢ１に格納されているストアデータのストア対象データとのデータマージを行う（図１５の（３）参照）。【００９６】  また、演算器から現地点で送信されたストアデータの書き込み先アドレスと、演算器から現地点で送信されたストアデータの格納先であるＷＢ０に格納されているストアデータの書き込み先アドレスとが一致する場合に、キャッシュメモリ制御部は、演算器から送信されたストアデータのストア対象データと、当該ストア対象外領域に対応するＤＡＴＡ−ＲＡＭに既に記憶されているデータであるストア対象外既存データと、ＷＢ０に格納されているストアデータのストア対象データとのデータマージを行ってＷＢ１に格納する（図１５の（４）参照）。【００９７】  また、図１５の（４）で当該ストア対象外領域に対応するＤＡＴＡ−ＲＡＭに既に記憶されているデータであるストア対象外既存データと、ＷＢ０に格納されているストアデータのストア対象データとのデータマージを行ってＷＢ１に格納する際に、新たに生成したストアデータの書き込み先アドレスと、新たに生成したストアデータの格納先であるＷＢ１に既に格納されているストアデータの書き込み先アドレスとが一致する場合に、キャッシュメモリ制御部は、新たに生成したストアデータのストア対象データと、ＷＢ１に既に保存されているストアデータのストア対象データとのデータマージを行ってＷＢ１に新たなストアデータを格納する（図１５の（５）参照）。【００９８】  次に、図１６を用��て、上記した図１５の（１）〜（５）において、マージする際に優先するストアデータについて説明する。なお、図１６は、データをマージする際に優先するデータ順位の例を示す図である。【００９９】  図１６の（１）に示すように、データマージの優先順位として「ＳＴＢ−ＤＡＴＡ（ＷＢ−ＧＯ）」に格納されるストアデータが最も優先され、順に「ＷＢ−ＤＡＴＡ」、「ＳＴ２−ＤＡＴＡ（ＳＴ２−ＲＥＱ）」、「ＦＣＤＲ−ＤＡＴＡ（ＷＢ−ＧＯ）」に格納されるストアデータが優先される。この優先度を適用すると、図１５に示した各例では、図１６の（２）に示したようなストアデータが作成されることとなる。
【実施例４】
【０１００】  さて、これまで本実施例について説明したが、本実施例は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、（１）マージ処理データ選択、（２）システム構成等にそれぞれ区分けして異なる実施例を説明する。【０１０１】（１）マージ処理選択  例えば、実施例２では、ＤＡＴＡ−ＲＡＭに既に記憶されるデータや、キャッシュミスした後に再検索して検索されたデータや、先行するストアデータなどを、演算器により送信されたデータと全てマージする場合について説明したが、本実施例はこれに限定されるものではなく、いずれかのデータのみをマージするなど、マージ対象とするデータを任意に指定することもできる。（２）システム構成等  また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理（例えば、演算器からストアデータ出力処理など）の全部または一部を手動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、図３〜図５）については、特記する場合を除いて任意に変更することができる。【０１０２】  また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合（例えば、データ検出部とデータ判定部とを統合するなど）して構成することができる。
【産業上の利用可能性】
【０１０３】  以上のように、本キャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラムは、演算器から送信されるストアデータをキャッシュメモリに書き込むとともに、当該ストアデータのＥＣＣを生成することに有用であり、特に、同一アドレスで８バイト以下の連続ストアが発生した場合でも、ＳＳＩの発生を抑止することと、正確なＥＣＣを生成することに適する。
【図１】
2008155850.tif 000003
【図２】
2008155850.tif 000004
【図３】
2008155850.tif 000005
【図４】
2008155850.tif 000006
【図５】
2008155850.tif 000007
【図６】
2008155850.tif 000008
【図７】
2008155850.tif 000009
【図８】
2008155850.tif 000010
【図９】
2008155850.tif 000011
【図１０】
2008155850.tif 000012
【図１１】
2008155850.tif 000013
【図１２】
2008155850.tif 000014
【図１３】
2008155850.tif 000015
【図１４】
2008155850.tif 000016
【図１５】
2008155850.tif 000017
【図１６】
2008155850.tif 000018
【図１７】
2008155850.tif 000019
【図１８】
2008155850.tif 000020
【国際調査報告】
2008155850.tif 000021
2008155850.tif 000022