(57)【要約】  本発明の課題は、キャッシュメモリのデータのエラーを正確に訂正できるようにすることである。記憶処理装置２４は、検索時にキャッシュメモリから読み出したストア対象領域外のデータからｎｔ−ＥＣＣを生成する。さらに、先行するストア命令のストアアドレスと現在のストア命令のストアアドレスが一致するか否か、データ幅が所定のデータ幅と一致するか否かを判定する。同一のストアアドレスの先行するストア命令が存在し、かつストアデータのデータ幅が所定のデータ幅未満のときには、ＥＣＣ有効情報を無効に設定し、そのＥＣＣ有効情報をｎｔ−ＥＣＣと対応づけてストアバッファ２５に格納する。
2007088597.tif 000002
【特許請求の範囲】
【請求項１】
ストア命令のストアデータをバッファに格納し、
キャッシュメモリを検索して前記ストア命令のストア対象のデータが前記キャッシュメモリに存在するか否かを判定し、
前記キャッシュメモリに前記ストア対象のデータが存在すると判定された場合に、前記キャッシュメモリの検索時に前記キャッシュメモリから読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成し、生成した前記第１のエラー訂正コードを保持し、
前記バッファの前記ストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成し、
前記第１のエラー訂正コードと前記第２のエラー訂正コードとをマージして前記ストアデータのエラー訂正コードを生成するエラー訂正コード生成方法。
【請求項２】
先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、同一のストアアドレスを有する先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記第１のエラー訂正コードが適正か否かを示すＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて記憶する請求項１記載のエラー訂正コード生成方法。
【請求項３】
前記バッファは複数のバッファからなり、前記複数のバッファに同一のストアアドレスが存在するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、前記複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記ＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて該当するバッファの前記ストアアドレスに格納する請求項２記載のエラー訂正コード生成方法。
【請求項４】
前記ＥＣＣ有効情報が有効か、無効かを判定し、前記ＥＣＣ有効情報が有効に設定されているときには、前記第１のエラー訂正コードと前記第２のエラー訂正コードをマージしてストアデータのエラー訂正コードを生成する請求項２記載のエラー訂正コード生成方法。
【請求項５】
前記バッファの前記ＥＣＣ有効情報が無効に設定された状態で、先行するストア命令が完了したときには、前記バッファの該当するストアアドレスの前記ＥＣＣ有効情報を有効に書き替える請求項２記載の請求項２記載のエラー訂正コード生成方法。
【請求項６】
ストア命令により指定されるストアデータを格納するバッファと、
キャッシュメモリを検索して前記ストア命令のストア対象のデータが前記キャッシュメモリに存在するか否かを判定する判定回路と、
前記判定回路により前記キャッシュメモリに前記ストア対象となるデータが存在すると判定された場合には、前記キャッシュメモリの検索時に前記キャッシュメモリから読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成し前記バッファに格納する第１のエラー訂正コード生成回路と、
前記バッファの前記ストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成する第２のエラー訂正コード生成回路と、
前記第１のエラー訂正コードと前記第２のエラー訂正コードとをマージして前記ストアデータのエラー訂正コードを生成するマージ回路と備えるメモリ管理装置。
【請求項７】
前記第１のエラー訂正コード生成回路は、先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、同一のストアアドレスを有する先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記第１のエラー訂正コードが適正か否かを示すＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて記憶させる請求項６記載のメモリ管理装置。
【請求項８】
前記バッファは複数のバッファからなり、
前記第１のエラー訂正コード生成回路は、前記複数のバッファに同一のストアアドレスが存在するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、前記複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記ＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて該当するバッファの前記ストアアドレスに格納する請求項７記載のメモリ管理装置。
【請求項９】
前記マージ回路は、前記ＥＣＣ有効情報が有効か、無効かを判定し、前記ＥＣＣ有効情報が有効に設定されているときには、前記第１のエラー訂正コードと前記第２のエラー訂正コードをマージして前記ストアデータのエラー訂正コードを生成する請求項７記載のメモリ管理装置。
【請求項１０】
前記ＥＣＣ有効情報が無効に設定された状態で、先行するストア命令が完了したとき、前記バッファの該当するストアアドレスの前記ＥＣＣ有効情報を有効に書き替える請求項７記載のメモリ管理装置。
【請求項１１】
ストア命令のストアデータをバッファに格納するステップと、
キャッシュメモリを検索して前記ストア命令のストア対象のデータが前記キャッシュメモリに存在するか否かを判定し、
前記キャッシュメモリに前記ストア対象のデータが存在すると判定された場合に、前記キャッシュメモリの検索時に前記キャッシュメモリから読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成し、生成した前記第１のエラー訂正コードを保持するステップと、
前記バッファの前記ストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成するステップと、
前記第１のエラー訂正コードと前記第２のエラー訂正コードとをマージして前記ストアデータのエラー訂正コードを生成するステップとからなる、コンピュータが実行可能なエラー訂正コード生成プログラム。
【請求項１２】
先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定するステップと、
同一のストアアドレスを有する先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記第１のエラー訂正コードが適正か否かを示すＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて記憶するステップとを有する請求項１１記載のエラー訂正コード生成プログラム。
【請求項１３】
前記ＥＣＣ有効情報を格納するステップは、複数の前記バッファに同一のストアアドレスが存在するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、前記複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記ＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて該当するバッファの前記ストアアドレスに格納する請求項１２記載のエラー訂正コード生成プログラム。
【請求項１４】
前記エラー訂正コードを生成するステップは、前記バッファの前記ＥＣＣ有効情報が有効か、無効かを判定し、前記ＥＣＣ有効情報が有効に設定されているときには、前記第１のエラー訂正コードと前記第２のエラー訂正コードをマージして前記ストアデータのエラー訂正コードを生成する請求項１２記載のエラー訂正コード生成プログラム。
【請求項１５】
前記ＥＣＣ有効情報を格納するステップは、前記バッファの前記ＥＣＣ有効情報が無効に設定された状態で、先行するストア命令が完了したときには、前記バッファの該当するストアアドレスの前記ＥＣＣ有効情報を有効に書き替える請求項１２記載のエラー訂正コード生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリへ書き込むデータのエラー訂正コードの生成方法及びメモリ管理装置に関する。
【背景技術】
【０００２】
メインメモリから読み出したデータをキャッシュメモリに記憶しておき、キャッシュメモリのデータをアクセスすることでＣＰＵの処理速度を高めることが行われている。キャッシュメモリのデータに対してはエラー訂正コード（Error Correcting Code）を付加してデータの保護を図っている。【０００３】
特許文献１には、チェックビット生成の対象となるデータ幅より小さいデータをメモリに書き込む場合に、それらのデータをマルチプレクサで組み合わせて１つのデータにし、ＥＣＣ生成ユニットでそのデータからチェックビットを生成してメモリに書き込みを行うことが記載されている。これにより、パーシャルライト時のリードモディファイライト動作のアクセス時間を短縮できるという効果が得られる。【０００４】
また、特許文献２には、ダブル・ワード境界を越える部分書き込みを行う場合に、該当するアドレスがキャッシュに無いときには、チャネルからのデータはスワップバッファに記憶され、部分書き込みに関連したダブル・ワードとスワップバッファのチャネルからのデータとマージされてメインメモリに書き込まれることが記載されている。【０００５】
図１６は、データＲＡＭとＥＣＣＲＡＭとを有するメモリシステムにおける、従来のエラー訂正コード生成方法の説明図である。
命令処理装置（図示せず）からストア命令が出力されると、ストア対象のデータがデータＲＡＭ（キャッシュメモリ）１３に存在するか否かを確認し、ストア対象のデータが存在する場合には、ストア対象のデータを含む８バイトのデータを読み出してエラーのチェックを行う。このとき、ストア命令に対応するストアデータはストアバッファＳＴＢ１１に書き込まれる。【０００６】
その後、命令処理装置からストア許可が発行されると、ストアバッファＳＴＢ１１のデータがライトバッファＷＢ１２に書き込まれ、さらにそのデータがデータＲＡＭ１３に書き込まれる。この書き込みと同時にデータＲＡＭ１３から８バイトのデータを読み出し、８バイトのデータの中のストア対象領域外のデータからエラー訂正コードＥＣＣ１を生成する。さらに、８バイトのデータの中のストア対象領域のデータからエラー訂正コードＥＣＣ２を生成する。この２つのＥＣＣをマージしてストア更新後のデータに対するエラー訂正コードＥＣＣを生成し、生成したエラー訂正コードをＥＣＣＲＡＭ１４に格納する。【０００７】
上記の従来のエラー訂正コード生成方法は、以下のような問題点を有している。
ストア命令を受けてキャッシュメモリを検索したときのエラーチェックではエラーが検出されず、キャッシュメモリへのデータの書き込み後に読み出したデータのエラーチェックでエラーが検出されたときには、書き込み後のデータに対するエラー訂正コードを正しく生成することができない。このときＥＣＣＲＡＭ１４に保存されているのはストア命令の実行前のデータから生成したエラー訂正コードであり、ストア命令の実行前のデータはこの時点では失われているので、エラーが検出されたとしてもデータの１ビットエラーを訂正することができないという問題点があった。【０００８】
上記のエラーは、例えば、ＳＲＡＭ（Static Random Access Memory）に対して書き込みと読み出しを行う場合に、書き込み直後に読み出しを行った場合、読み出し直前のデータがビット線に残留して次のサイクルの読み出しのマージンを低下させることが１つの原因と考えられる。設計上は、書き込み後にデータが残留しないようにビット線をプリチャージトランジスタを用いて規定時間内で電源電圧ＶＤＤまで充電させる構造となっている。具体的に説明すると、書き込み時は、メモリセルに接続されるビット線対を書き込みデータに応じて片側をローレベルにしてメモリセルに書き込みを行う。書き込みが終了したなら、次サイクルの読み出し開始時までにビット線対を電源電圧ＶＤＤにショートすることで書き込みデータを一掃している。【０００９】
しかしながら、ＳＲＡＭを設計値以上の動作サイクルで動作させたとき、あるいはトランジスタの製造バラツキによりプリチャージトランジスタの特性が悪いためにビット線対を電源電圧ＶＤＤまでプリチャージできないと、次サイクルの読み出し時にエラーが発生する。
【特許文献１】特開平１０−２３２７８９号公報
【特許文献２】特公小５８−２１３５３号公報
【発明の開示】
【００１０】
本発明の課題は、キャッシュメモリのデータのエラーを正確に訂正できるようにすることである。
本発明のメモリ管理装置は、ストア命令のストアデータを格納するバッファと、キャッシュメモリを検索して前記ストア命令のストア対象のデータがキャッシュメモリに存在するか否かを判定する判定回路と、前記判定回路により前記キャッシュメモリに前記ストア対象となるデータが存在すると判定された場合には、前記キャッシュメモリの検索時に前記キャッシュメモリから読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成し、生成した前記第1のエラー訂正コードを前記バッファに格納する第１のエラー訂正コード生成回路と、前記バッファの前記ストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成する第２のエラー訂正コード生成回路と、前記第１のエラー訂正コードと前記第２のエラー訂正コードとをマージして前記ストアデータのエラー訂正コードを生成するマージ回路と備える。
【００１１】
この発明によれば、キャッシュメモリにデータを書き込んだ後にエラーが検出された場合でも、キャッシュメモリの検索時にキャッシュメモリから読み出したストア対象領域外のデータから生成した第１のエラー訂正コードと、ストアデータのストア対象領域のデータから生成した第２のエラー訂正コードとから生成したエラー訂正コードを用いてデータのエラーを正確に訂正することができる。
【００１２】
本発明のメモリ管理装置において、前記第１のエラー訂正コード生成回路は、先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、同一のストアアドレスを有する先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記第１のエラー訂正コードが適正か否かを示すＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて記憶する。
【００１３】
このように構成することで、ＥＣＣ有効情報が有効か、無効かを判定することで、第１のエラー訂正コードが適正か否かを判定できる。
本発明のメモリ管理装置において、前記バッファは複数のバッファからなり、前記複数のバッファに同一のストアアドレスが存在するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、前記複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記ＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて該当するバッファの前記ストアアドレスに格納する。
【００１４】
このように構成することで複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、先行するストア命令が完了してから、第１のエラー訂正コードを生成し、その第１のエラー訂正コードと、ストアデータのストア対象領域のデータから生成する第２のエラー訂正コードを用いて適正なエラー訂正コードを生成することができる。
【００１５】
本発明のメモリ管理装置において、前記マージ回路は、前記バッファの前記ＥＣＣ有効情報が有効か、無効かを判定し、前記ＥＣＣ有効情報が有効に設定されているときには、前記第１のエラー訂正コードと前記第２のエラー訂正コードをマージして前記ストアデータのエラー訂正コードを生成する。
【００１６】
このように構成することでＥＣＣ有効情報が有効で適正な第１のエラー訂正コードが生成されている場合に、その第１のエラー訂正コードとストアデータから生成する第２のエラー訂正コードをマージして正しいエラー訂正コードを生成することができる。
【００１７】
本発明のメモリ管理装置において、前記バッファの前記ＥＣＣ有効情報が無効に設定された状態で、先行するストア命令が完了したときには、前記バッファの該当するストアアドレスの前記ＥＣＣ有効情報を有効に書き替える。
【００１８】
このように構成することで、同一のストアアドレスに対してデータの書き込みを行う先行するストア命令が存在する場合でも、そのストア命令が完了したときに処理の待ち時間を生じることなく、後続のストア命令のストアデータをキャッシュメモリに書き込むことができる。
【図面の簡単な説明】
【００１９】
【図１】メモリ管理装置の基本構成を示す図である。
【図２】実施の形態のエラー訂正コード生成方法の説明図である。
【図３】ストアバッファとライトバッファのデータ構成を示す図である。
【図４】ＩＵ−ＲＥＱ時の動作フローチャートである。
【図５】ＩＵ−ＲＥＱ時の動作説明図である。
【図６】ＩＵ−ＲＥＱ時の動作を示すタイムチャートである。
【図７】ＥＣＣ−ＶＡＬの設定回路のブロック図である。
【図８】ＷＢ−ＧＯ時の動作説明図である。
【図９】ＳＴ１−ＲＥＱ時の動作フローチャートである。
【図１０】ＳＴ１−ＲＥＱ時の動作説明図である。
【図１１】ＳＴ１−ＲＥＱ時の動作を示すタイムチャートである。
【図１２】ＳＴ２−ＲＥＱ時の動作フローチャートである。
【図１３】ＳＴ２−ＲＥＱ時の動作説明図である。
【図１４】ＳＴ２−ＲＥＱ時の動作を示すフローチャートである。
【図１５】ＥＣＣ生成回路のブロック図である。
【図１６】従来のエラー訂正コード生成方法の説明図である。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態を図面を参照して説明する。図１は、本発明の一実施形態に係るエラー訂正コード生成方法に従って動作するメモリ管理装置の基本構成を示す図である。【００２１】
図１において、メモリ管理装置は、判定回路１と第１のエラー訂正コード生成回路２と第２のエラー訂正コード生成回路３とマージ回路４とバッファ５とを有する。
ストア命令のストアデータはバッファ５に格納される。判定回路１は、キャッシュメモリ６を検索してストア命令のストア対象のデータがキャッシュメモリ６に存在するか否かを判定する。【００２２】
第１のエラー訂正回路２は、判定回路１によりキャッシュメモリ６にストア対象となるデータが存在すると判定された場合には、キャッシュメモリ６の検索時にキャッシュメモリ６から読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成する。【００２３】
第２のエラー訂正コード生成回路３は、バッファ５のストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成する。
マージ回路４は、第１のエラー訂正コードと第２のエラー訂正コードとをマージしてストアデータのエラー訂正コードを生成しＥＣＣメモリ７に書き込む。【００２４】
上記のメモリ管理装置によれば、キャッシュメモリ６の検索時に読み出したストア対象領域外のデータから生成した第１のエラー訂正コードと、キャッシュメモリに書き込むストアデータから生成した第２のエラー訂正コードをマージしてエラー訂正コードを生成しているので、キャッシュメモリにデータを書き込んだ後にエラーが検出された場合でも、データのエラー（例えば、１ビットのエラー）を正確に訂正することができる。【００２５】
従って、従来は、キャッシュメモリ６からのデータの読み出しは、検索時と、ストア許可後に第１のエラー訂正コードを生成する場合との２回であったが、本実施の形態では、キャッシュメモリ６からのデータの読み出しは、検索時のデータチェックと第１のエラー訂正コードの生成のための１回で良い。【００２６】
次に、図２は、実施の形態のエラー訂正コード生成方法の説明図である。この実施の形態は、キャッシュメモリを有し、パイプライン方式で命令を実行するＣＰＵに関するものである。【００２７】
命令処理装置２２からストア命令が出力され、演算器２３からストアデータが出力されと、記憶処理装置２４はストア命令に含まれるストア情報に基づいてストアバイトマークＳＴＢＭを作成し、ストアアドレスと共にストアバッファ２５に格納する。ストアバイトマークＳＴＢＭとは、所定幅のデータ（実施の形態では８バイトのデータ）のどのバイトをストアするかを示すデータでありバイト単位に作成される。【００２８】
ストア命令のストア情報には、ストアアドレス、ストアデータ幅、データを左詰に格納するか、右詰で格納するかを指定するアライン情報などが含まれる。
記憶処理装置２４は、ストア対象のキャッシュラインがデータＲＡＭ（キャッシュメモリ）２７に存在するか否かを判定する。さらに、先行するストア命令のストアアドレスと現在のストア命令のストアドレスが一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定する。同一のストアアドレスの先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、先行するストア命令が完了しないとストア対象外のデータから生成するｎｔ−ＥＣＣが確定しないので、そのストア命令をストア・ストア・インターロックＳＳＩの対象とする。ストア・ストア・インターロックの対象と判断されたストア命令は、先行するストア命令のストアが完了した後、ストア・ストア・インターロックが解除される。【００２９】
記憶処理装置２４は、データＲＡＭ２７の検索時にデータＲＡＭ２７の該当するアドレスから読み出したストア対象領域外のデータからエラー訂正コードｎｔ−ＥＣＣ（第１のエラー訂正コードに対応する）を算出して、演算器２３から出力されるストアデータと共にストアバッファ２５に書き込む。このとき、現在のストア命令がストア・ストア・インターロックの対象であるときには、先行するストア命令が完了しないと正しいｎｔ−ＥＣＣが得られないのでＥＣＣ有効情報ＥＣＣ−ＶＡＬを無効（例えば、「０」）に設定し、それ以外のときはＥＣＣ有効情報ＥＣＣ−ＶＡＬを有効（例えば、「１」）に設定する。【００３０】
図３（Ａ）、（Ｂ）は、ストアバッファ２５とライトバッファ２６のデータ構成を示す図である。
図３（Ａ）に示すように、ストアバッファ２５の各アドレスには、８バイトのデータと、その８バイトのデータのエラー訂正コードである１バイトのｎｔ−ＥＣＣと、８バイトのデータのどのバイトのデータをストアするかを示すストアバイトマークＳＴＭＢと、ストアアドレスＡＤＲＳと、キャッシュヒットしたか否かを示すＬＩＤと、ＥＣＣ有効情報ＥＣＣ−ＶＡＬとが対応づけて記憶されている。ＬＩＤには、キャッシュヒットしたとき「１」が設定され、キャッシュミスのとき「０」が設定される。ＥＣＣ有効情報ＥＣＣーＶＡＬは、ストアバッファ２５に適正なｎｔ−ＥＣＣが格納されているか否かを示す情報である。同一ストアアドレスに対する先行するストア命令が存在し、かつストアデータのデータ幅が８バイト未満のときには、先行するストア命令が完了しないと正しいｎｔ−ＥＣＣを生成することができないので、その場合にはＥＣＣ有効情報ＥＣＣ−ＶＡＬを無効（「０」）に設定し、それ以外のときは有効（「１」）に設定する。【００３１】
図８（Ｂ）に示すように、ライトバッファ２６のアドレスは、偶数（ＥＶＥＮ)アドレスと奇数(ＯＤＤ）アドレスに分けられており、それぞれ８バイトのデータと、１バイトのｎｔ−ＥＣＣと、ストアバイトマークＳＴＢＭと、ストアアドレスＡＤＲＳと、ＬＩＤと、ＥＣＣ有効情報ＥＣＣ−ＶＡＬとが記憶される。【００３２】
図２に戻り、記憶処理装置２４は、命令処理装置２２からストア許可を受け取ると、ストアバッファ２５のデータをライトバッファタ２６に書き込む。そして、ライトバッファ２６のＥＣＣ有効情報が有効（「１」）で、かつＬＩＤが「１」のとき、対応するストアデータをライトバッファ２６から読み出し、読み出したストアデータに基づいてストア対象領域のデータのエラー訂正コードｔ−ＥＣＣ（第２のエラー訂正コードに対応する）を生成する。そして、生成したｔ−ＥＣＣとライトバッファ２６に格納されているｎｔ−ＥＣＣをマージしてマージ結果をＥＣＣＲＡＭ２８に書き込む。【００３３】
次に、実施の形態のエラー訂正コード生成方法ついてより詳細に説明する。以下の説明では、記憶処理装置２４がエラー訂正コードを生成してＥＣＣＲＡＭ２８に書き込むまでの動作を、ＩＵ−ＲＥＱ（Instruction Unit-Request）と、ＷＢ−ＧＯ（Write Buffer-GO）と、ＳＴ１−ＲＥＱ（Store 1-Request）と、ＳＴ２−ＲＥＱ（Store 2-Request）の４つに分けて説明する。【００３４】
最初に、ＩＵ−ＲＥＱ時の記憶処理装置２４の動作を図４の動作フローチャートを参照して説明する。
ＩＵ−ＲＥＱ時の処理動作とは、記憶処理装置２４が命令処理装置２２からストア命令を受け取り、ｎｔ−ＥＣＣ、ＬＩＤ、ＥＣＣ有効情報等を生成してストアバッファ２５に格納するときの動作である。【００３５】
記憶処理装置２４は、命令処理装置２２からストア命令を受け取ると、ストア対象データがデータＲＡＭ２７に存在するか否か、つまりキャッシュヒットしたか否かを判定する（図４，Ｓ１１）。【００３６】
キャッシュヒットした場合には（Ｓ１１，ＹＥＳ）、ストア命令のストア情報からストアバイトマークＳＴＢＭを作成し、キャッシュヒットしたか否かを示すＬＩＤに「１」を設定し（Ｓ１２）、それらのデータをストアバッファ２５に格納する（Ｓ１３）。【００３７】
キャッシュヒットしなかった場合には（Ｓ１１，ＮＯ）、ステップＳ１４に進み、ＬＩＤに「０」を設定した後、上記のステップ１３に進み、ＬＩＤを＝０をストアバッファ２５に格納する。この場合、キャッシュミスであるのでＣＰＵにストア命令で指定されたデータをメインメモリから読み出すように指示する。【００３８】
次に、ストア命令のストアデータがストア・ストア・インターロックＳＳＩの対象か否かを判定する（Ｓ１５）。
上記のステップＳ１５の処理では、先行するストア命令のストアアドレスと現在のストア命令のストアアドレスを比較してストアアドレスが同一か否かを判定する。ストアアドレスが同一の場合、つまり複数のストアバッファ２５とライトバッファ２６に同一のストアアドレスが存在する場合には、現在のストア命令のストアデータのデータ幅が所定のデータ幅（実施の形態では、８バイトのデータ幅）と一致するか否かを判定する。ストアデータのデータ幅が所定のデータ幅と一致するか否かは、例えば、ストアバイトマークＳＴＢＭの値により行う。ストアデータのデータ幅が所定のデータ幅未満のときには、そのストア命令をストア・ストア・インターロックの対象と判断する。それ以外の場合は、ストア・ストア・インターロックの対象ではないと判断する。【００３９】
ストア命令がストア・ストア・インターロックの対象と判定されたときには（Ｓ１５，ＹＥＳ）、ステップ１６に進み、ＥＣＣ有効情報ＥＣＣ−ＶＡＬに「０」を設定してＥＣＣ有効情報を無効にした後、次のステップ１７で、設定したＥＣＣ有効情報ＥＣＣ−ＶＡＬをストアバッファ２５に格納する。【００４０】
ストアデータがストア・ストア・インターロックの対象ではないと判定されたときには（Ｓ１５，ＮＯ）、ステップＳ１８に進み、ＥＣＣ有効情報ＥＣＣ−ＶＡＬに「１」を設定する。その後、上記のステップＳ１７に進み、設定したＥＣＣ有効情報ＥＣＣ−ＶＡＬをストアバッファ２５に格納する。【００４１】
ステップＳ１１でキャッシュヒットと判定された場合には、ステップＳ１９において、キャッシュの検索時に読み出したストア対象外のデータからエラー訂正コードｎｔ−ＥＣＣを生成する。そして、生成したｎｔ−ＥＣＣをストアバッファ２５に格納する（Ｓ２０）。【００４２】
上記のようにしてｎｔ−ＥＣＣと、ＬＩＤと、ＥＣＣ有効情報ＥＣＣ−ＶＡＬをストアデータと対応づけてストアバッファ２５に格納してストアバッファ２５の状態を確定させる（Ｓ２１）。【００４３】
ここで。上述したＩＵ−ＲＥＱ時の動作を図５の動作説明図と、図６のタイムチャートを参照して説明する。
記憶処理装置２４は、命令処理装置２２からのストア命令を受け取ると、ストア対象データがデータＲＡＭ２７に存在するか否かを判定する。ストア対象データがデータＲＡＭ２７に存在する場合、つまりキャッシュヒットした場合には、さらに、先行するストア命令のストアアドレスと現在のストア命令のストアアドレスが一致するか否か、ストアデータのデータ幅が所定のデータ幅（例えば、８バイト）と一致するか否かを判定する（図６の（１））。【００４４】
他のストアバッファ２５とライトバッファ２６に同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには（例えば、８バイトのフルストアでないとき）、そのストア命令はストア・ストア・インターロックＳＳＩの対象と判定する（図６の（２）のＳＳＩの検出）。【００４５】
キャッシュヒットし、ストア・ストア・インターロックの対象でない場合には、キャッシュの検索時にデータＲＡＭ２７のストアアドレスから読み出したストア対象領域外のデータ（ストアバイトマークで指定されるデータ以外のデータ）に基づいてエラー訂正コードｎｔ−ＥＣＣを生成し、ＥＣＣ有効情報ＥＣＣ−ＶＡＬに「１」を設定し、ＬＩＤに「１」を設定する。そして、ストアバイトマークＳＴＢＭと、ｎｔ−ＥＣＣと、ＬＩＤと、ＥＣＣ有効情報とをストアデータと対応づけてストアバッファ２５に格納する（図６の（３））。【００４６】
キャッシュミスした場合、あるいはストア命令がストア・ストア・インターロックの対象の場合には、ＬＩＤを「０」に、あるいはＥＣＣ有効情報を「０」に設定し、それらのデータをストアバッファ２５に格納する（図６の（３））。【００４７】
図７は、ＥＣＣ有効情報ＥＣＣ−ＶＡＬの設定回路のブロック図である。
アドレスマッチ回路３１は、ＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアアドレスと先行するストア命令のストアアドレスが一致するか否かを判定する。このアドレスマッチ回路３１は、ＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアアドレスが先行するストア命令のストアアドレスと一致するとき「１」を、不一致のとき「０」を出力する。【００４８】
インバータ３２は、ＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアデータ幅が８バイトか否かを示す信号の反転信号を出力する。従って、インバータ３２からは、ＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアデータ幅が８バイトのとき「０」が、ストアデータのデータ幅が８バイト未満のとき「１」が出力される。【００４９】
ナンドゲート３３は、アドレスマッチ回路３１のストアアドレスの比較結果と、インバータ３２のストアデータのデータ幅が８バイトか否かを示す信号とに基づいて、ストア・ストア・インターロックの対象であるか否かを示す信号（以下、この信号をＳＳＩ検出信号と呼ぶ）を出力する。【００５０】
すなわち、ＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアアドレスと先行するストア命令のストアアドレスが一致し、かつＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアデータのデータ幅が８バイト未満のときには、ＳＳＩ検出信号を「０」にしてストア・ストア・インターロックの対象であることを示す。また、ＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアアドレスと先行するストア命令のストアアドレスが不一致、あるいはＩＵ−ＲＥＱまたはＳＴ１−ＲＥＱ時のストアデータ幅が８バイトのときには、ＳＳＩ検出信号を「１」にする。【００５１】
アンドゲート３４は、ＳＳＩ検出信号が「０」のとき、すなわち、ストアデータがストア・ストア・インターロックの対象のときには、ＥＣＣ有効情報ＥＣＣ−ＶＡＬを「０」にする。また、ＳＳＩ検出信号が「１」のとき、すなわち、ストア・ストア・インターロックの対象ではないときには、ＥＣＣ有効情報ＥＣＣ−ＶＡＬを「１」にして正しいｎｔ−ＥＣＣが設定されていることを示す。【００５２】
次に、ＷＢ−ＧＯ時の記憶処理装置２４の動作を図８の動作説明図を参照して説明する。ＷＢ−ＧＯとは、ストアバッファ２５のデータをライトバッファ２６へ書き込むときの動作である。【００５３】
記憶処理装置２４は、命令処理装置２２からストア許可を受け取ると、対象となるストアバッファ２５の処理の優先順位が最も高いか、空いているライトバッファ２６が存在するか否かを判断し、優先順次が最も高く、空いているライトバッファ２６が存在する場合には、ストアバッファ２５の対象となるデータと、ｎｔ−ＥＣＣと、ストアバイトマークＳＴＢＭと、ストアアドレスＡＤＲＳと、ＬＩＤと、ＥＣＣ有効情報をライトバッファ２６に書き込む。【００５４】
次に、ＳＴ１−ＲＥＱ時の動作を図９の動作フローチャートを参照して説明する。ＳＴ１−ＲＥＱは、ＬＩＤが「０」でキャッシュミスした場合、あるいはＥＣＣ有効情報ＥＣＣ−ＶＡＬが「０」でｎｔ−ＥＣＣが確定していない場合の処理動作である。【００５５】
ライトバッファ２６の指定されたストアアドレスのデータを読み出しライトバッファ２６の状態を確認する（図９，Ｓ３１）。
次に、ライトバッファ２６から読み出したＬＩＤが「０」か否か、ＥＣＣ有効情報ＥＣＣ−ＶＡＬが「０」か否かを判別する（Ｓ３２）。【００５６】
ＬＩＤが「０」でキャッシュミスのとき、あるいはＥＣＣ有効情報ＥＣＣ−ＶＡＬが「０」のときには（Ｓ３２，ＹＥＳ）、ステップＳ３３に進み、ＳＴ１−ＲＥＱを起動する。【００５７】
ＳＴ１−ＲＥＱが起動されると、ステップＳ３４において、キャッシュヒットしたか否かを判定する。キャッシュヒットした場合には（Ｓ３４，ＹＥＳ）、ステップＳ３５に進み、ＬＩＤに「１」を設定する。次に、「１」を設定したＬＩＤをライトバッファ２６に格納する（Ｓ３６）。ステップＳ３４でキャッシュミスと判定された場合には（Ｓ３４，ＮＯ）、ステップＳ３７に進み、ＬＩＤに「０」を設定し、上記のステップＳ３６に進み、ＬＩＤ＝０をライトバッファ２６に格納する。この場合、キャッシュミスであるのでデータをメインメモリから読み出すように命令処理装置２２に通知する。【００５８】
次に、ストア命令がストア・ストア・インターロックＳＳＩの対象か否かを判定する（Ｓ３８）。このストア・ストア・インターロックの対象か否かの判定は、同一のストアアドレスが複数のライトバッファ２６に存在するか否か、後続のストア命令のストアデータのデータ幅が所定のデータ幅未満か否かにより行う。【００５９】
ストア命令がストア・ストア・インターロックの対象の場合には（Ｓ３８，ＹＥＳ）、ステップＳ３９に進み、ＥＣＣ有効情報ＥＣＣ−ＶＡＬに「０」を設定する。そして、設定したＥＣＣ有効情報ＥＣＣ−ＶＡＬを該当するライトバッファ２６に格納する（Ｓ３９）。【００６０】
ステップＳ３８でストア命令がストア・ストア・インターロックの対象ではないと判定された場合には（Ｓ３８，ＮＯ）、ステップＳ４１に進み、ＥＣＣ有効情報ＥＣＣ−ＶＡＬに「１」を設定する。【００６１】
なお、同一のストアアドレスに対してデータの書き込みを行う先行するストア命令が存在し、後続のストア命令がストア・ストア・インターロックの対象となっている場合でも、先行するストア命令が完了すると、後続のストア命令はストア・ストア・インターロックの対象ではなくなるので、上記のステップＳ４１において、ＥＣＣ有効情報ＥＣＣ−ＶＡＬが「１」に変更される。ＥＣＣ有効情報ＥＣＣ−ＶＡＬが変更された場合には、後述するステップＳ４３及びＳ４４において、更新後のデータＲＡＭ２７のデータのストア対象領域外のデータに基づいて新たなｎｔ−ＥＣＣが生成され、生成されたｎｔ−ＥＣＣがライトバッファ２６に格納される。【００６２】
上述したＬＩＤ及びＥＣＣ有効情報ＥＣＣ−ＶＡＬの設定等によりライトバッファ２６の状態が確定する（Ｓ４２）。
ステップＳ３４でキャッシュヒットと判定された場合には、ステップＳ４３において、キャッシュの検索時にデータＲＡＭ２７のストアアドレスから読み出したストア対象外のデータのｎｔ−ＥＣＣを生成する。そして、生成したｎｔ−ＥＣＣをライトバッファ２６に格納する（Ｓ４４）。【００６３】
ここで、ＳＴ１−ＲＥＱ時の記憶処理装置２４の動作を、図１０の動作説明図と図１１のタイムチャートを参照して説明する。
記憶処理装置２４は、図１０に示すように、ライトバッファ２６のストアアドレスのＬＩＤとＥＣＣ有効情報ＥＣＣ−ＶＡＬを読み出し、ＬＩＤ＝０、またはＥＣＣ−ＶＡＬ＝０と判定した場合にはＳＴ１−ＲＥＱの動作を行う。【００６４】
キャッシュヒットしているときには、現在のストア命令のストアアドレスと同一のストアアドレスが他のライトバッファ２６に存在するか否かを判定する（図１１の（１））。
同一のストアアドレスが他のライトバッファ２６に存在する場合には、さらにストアデータのデータ幅が所定のデータ幅か否かを判定する。ストアデータのデータ幅が所定のデータ幅未満であれば、ストア・ストア・インターロックの対象と判断する（図１１の（２））。【００６５】
ストア命令がストア・ストア・インターロックの対象と判断した場合には、ライトバッファ２６の該当するストアアドレスにＥＣＣ有効情報ＥＣＣ−ＶＡＬとして「０」を書き込み、データＲＡＭ２７の該当するストアアドレスのストア対象領域外のデータから生成したｎｔ−ＥＣＣをライトバッファ２６の該当するストアアドレスに書き込む（図１１の（３））。【００６６】
次に、ＳＴ２−ＲＥＱ時の記憶処理装置２４の動作を図１２の動作フローチャートを参照して説明する。
最初に、ライトバッファ２６のＬＩＤ＝１、かつＥＣＣ−ＶＡＬ＝１か否かを判別する（図１２，Ｓ５１）。【００６７】
ＬＩＤ＝１，かつＥＣＣ−ＶＡＬ＝１のとき（Ｓ５１，ＹＥＳ）、すなわち、データＲＡＭ（キャッシュメモリ）２７にストア対象のデータが存在、かつストア命令がストア・ストア・インターロックの対象でない場合には、ステップＳ５２に進み、ＳＴ２−ＲＥＱが起動される。【００６８】
ＳＴ２−ＲＥＱが起動されると、ステップＳ５３において、ライトバッファ２６のストアデータをデータＲＡＭ２７に格納する。次に、ライトバッファ２６のストアデータに基づいてｔ−ＥＣＣを生成する（Ｓ５４）。【００６９】
次に、生成したｔ−ＥＣＣと、ライトバッファ２６の該当するストアアドレスに格納されているｎｔ−ＥＣＣをマージする（Ｓ５５）。
最後に、マージして得られるエラー訂正コードＥＣＣをＥＣＣＲＡＭ２８に格納する（Ｓ５６）。【００７０】
ここで、ＳＴ２−ＲＥＱ時の動作を図１３の動作説明図と図１４のタイムチャート並びに図１５のＥＣＣ生成回路のブロック図を参照して説明する。
記憶処理装置２４は、図１３に示すように、ライトバッファ２６の指定されたストアアドレスのＬＩＤとＥＣＣ有効情報ＥＣＣ−ＶＡＬを読み出し、ＬＩＤ＝１、かつＥＣＣ−ＶＡＬ＝１か否かを判定し、両者を「１」と判定した場合にはＳＴ２−ＲＥＱの動作を行う。【００７１】
先ず、ライトバッファ２６の該当するストアアドレスのデータに基づいてストアデータのｔ−ＥＣＣを生成する（図１４の（１））。
次に、ライトバッファ２６の該当するストアアドレスからストア対象領域外のデータのエラー訂正コードｎｔ−ＥＣＣを読み出し、そのｎｔ−ＥＣＣと、ライトバッファ２６のストアデータから生成したストア対象領域のデータのエラー訂正コードｔ−ＥＣＣをマージする（図１４の（２））。このとき、同時にライトバッファ２６のストアデータをデータＲＡＭ２７に書き込む。【００７２】
次に、ｔ−ＥＣＣとｎｔ−ＥＣＣをマージしたデータをＥＣＣＲＡＭ２８に格納する（図１４の（３））。
図１５は、ＥＣＣ生成回路のブロック図である。図１５において、ライトバッファ２６の８バイトのデータと、各バイトのストアバイトマークＳＴＢＭの値との論理積を求め、ストア対象領域外のバイトデータを「０」にする。そして、ＳＥＣ−ＤＥＤ（Single bit Error Correcting-Double bit Error Detecting）方式により、ストア領域のデータのエラー訂正コードｔ−ＥＣＣを生成して排他的論理和回路ＥＸ−ＯＲ４１に出力する。ＥＸ−ＯＲ４１の他方の入力端子には、ライトバッファ２６に格納されているｎｔ−ＥＣＣ（ＳＥＣ−ＤＥＤ方式で生成されている）が入力し、ＥＸ−ＯＲ４１はそれらのデータの排他的論理和を取り、その結果をストア後のデータのＥＣＣとしてＥＣＣＲＡＭ２８に出力する。【００７３】
上記のＥＣＣ生成回路により、ライトバッファ２６に格納されているストアデータのエラー訂正コードｔ−ＥＣＣと、データＲＡＭ２７の検索時に読み出した該当するストアアドレスのストア対象領域外のデータから生成したエラー訂正コードｎｔ−ＥＣＣがマージされ、マージ結果のエラー訂正コードＥＣＣがＥＣＣＲＡＭ２８に書き込まれる。【００７４】
上述した実施の形態は、キャッシュメモリの検索時にデータＲＡＭ（キャッシュメモリ）２７から読み出したストアアドレスのストア対象領域外のデータに基づいてエラー訂正コードｎｔ−ＥＣＣを生成し、生成したｎｔ−ＥＣＣをストアデータと対応づけてストアバッファ２５に格納する。さらに、ストアバッファ２５のストアデータとｎｔ−ＥＣＣをライトバッファ２６に書き込み、ライトバッファ２６のストアデータのストア対象領域のデータに基づいてエラー訂正コードｔ−ＥＣＣを生成する。そして、ｎｔ−ＥＣＣとｔ−ＥＣＣをマージしてマージ結果をストアデータのエラー訂正コードとしてＥＣＣＲＡＭ２８に書き込んでいる。【００７５】
上記のように構成することで、データＲＡＭ（キャッシュメモリ）２７にストアデータを書き込んだ後にエラーチェックを行ってエラーが検出された場合でも、キャッシュメモリの検索時にデータＲＡＭ２７から読み出したストア対象領域外のデータから生成したｎｔ−ＥＣＣと、データＲＡＭ２７に書き込むストアデータから生成したｔ−ＥＣＣをマージして得られるエラー訂正コードを用いてエラー訂正を行うことでデータの１ビットのエラーを正確に訂正することができる。【００７６】
さらに、先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと同一で、現在のストア命令のデータ幅が所定のデータ幅（例えば、８ビット）未満のときには、ＥＣＣ有効情報ＥＣＣ−ＶＡＬを無効（例えば、「０」）に設定し、そのＥＣＣ有効情報ＥＣＣ−ＶＡＬをｎｔ−ＥＣＣとストアデータと対応づけてストアバッファ２５に格納する。ストアアドレスが不一致またはデータ幅が所定のデータ幅と一致する場合には、ＥＣＣ有効情報ＥＣＣ−ＶＡＬを有効（例えば、「１」）に設定してストアデータとｎｔ−ＥＣＣと対応づけてストアバッファ２５に格納する。【００７７】
上記のように構成することで、例えば、同一のストアドレスを有する先行のストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満で、現在のストア命令の実行が待たされる場合でも、先行するストア命令が完了した時点で、現在のストア命令に対応するＥＣＣ有効情報ＥＣＣ−ＶＡＬを無効（「０」）から有効（「１」）に書き替えることで、ストア・ストア・インターロック制御による待ち状態から解放することができる。これにより、ストア・ストア・インターロック制御を行ったときにストア命令の実行に不要な待ち時間が発生するのを防止できる。【００７８】
本発明によれば、キャッシュメモリにデータを書き込んだ後にエラーが検出された場合でも、データを書き込む前のストア対象領域外のデータから生成した第１のエラー訂正コードと、ストアデータのストア対象領域のデータから生成した第２のエラー訂正コードから生成したエラー訂正コードを用いてデータのエラーを正確に訂正することができる。【００７９】
本発明は上述した実施の形態に限らず、問えば、以下のように構成しても良い。
（１）本発明は、キャッシュメモリを有するＣＰＵ等及びそのＣＰＵが実装された情報処理装置に適用できる。また、ＳＥＣ−ＤＥＤ方式のエラー訂正コードに限らず、他の方式のエラー訂正コードにも適用できる。実施の形態は、複数のストアバッファ２５と複数のライトバッファ２６の２種類のバッファを用いる場合について説明したが、ストアバッファ２５のみ、または、ライトバッファ２６のみを用いる場合にも本発明は適用できる。
（２）実施の形態では、記憶処理装置２４の動作をＩＵ−ＲＥＱ、ＷＢ−ＧＯ、ＳＴ１−ＲＥＱ、ＳＴ２−ＲＥＱの４つの動作に分けて説明したが、この４種の動作に限定されるものではない。
（３）また、実施の形態では、データＲＡＭ２７のストア対象領域以外のデータから生成したエラー訂正コードｎｔ−ＥＣＣをストアバッファ２５及びライトバッファ２６に格納するようにしたが、ストアバッファ２５またはライトバッファ２６以外の別のレジスタに格納するようにしても良い。
【図１】
2007088597.tif 000003
【図２】
2007088597.tif 000004
【図３】
2007088597.tif 000005
【図４】
2007088597.tif 000006
【図５】
2007088597.tif 000007
【図６】
2007088597.tif 000008
【図７】
2007088597.tif 000009
【図８】
2007088597.tif 000010
【図９】
2007088597.tif 000011
【図１０】
2007088597.tif 000012
【図１１】
2007088597.tif 000013
【図１２】
2007088597.tif 000014
【図１３】
2007088597.tif 000015
【図１４】
2007088597.tif 000016
【図１５】
2007088597.tif 000017
【図１６】
2007088597.tif 000018
【手続補正書】
【提出日】平成20年1月16日(2008.1.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストア命令のストアデータをバッファに格納し、
キャッシュメモリを検索して前記ストア命令のストア対象のデータが前記キャッシュメモリに存在するか否かを判定し、
前記キャッシュメモリに前記ストア対象のデータが存在すると判定された場合に、前記キャッシュメモリの検索時に前記キャッシュメモリから読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成し、生成した前記第１のエラー訂正コードを保持し、
前記バッファの前記ストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成し、
前記第１のエラー訂正コードと前記第２のエラー訂正コードとをマージして前記ストアデータのエラー訂正コードを生成するエラー訂正コード生成方法。
【請求項２】
先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、同一のストアアドレスを有する先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記第１のエラー訂正コードが適正か否かを示すＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて記憶する請求項１記載のエラー訂正コード生成方法。
【請求項３】
前記バッファは複数のバッファからなり、前記複数のバッファに同一のストアアドレスが存在するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、前記複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記ＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて該当するバッファの前記ストアアドレスに格納する請求項２記載のエラー訂正コード生成方法。
【請求項４】
前記ＥＣＣ有効情報が有効か、無効かを判定し、前記ＥＣＣ有効情報が有効に設定されているときには、前記第１のエラー訂正コードと前記第２のエラー訂正コードをマージしてストアデータのエラー訂正コードを生成する請求項２記載のエラー訂正コード生成方法。
【請求項５】
前記バッファの前記ＥＣＣ有効情報が無効に設定された状態で、先行するストア命令が完了したときには、前記バッファの該当するストアアドレスの前記ＥＣＣ有効情報を有効に書き替える請求項２記載のエラー訂正コード生成方法。
【請求項６】
ストア命令により指定されるストアデータを格納するバッファと、
キャッシュメモリを検索して前記ストア命令のストア対象のデータが前記キャッシュメモリに存在するか否かを判定する判定回路と、
前記判定回路により前記キャッシュメモリに前記ストア対象となるデータが存在すると判定された場合には、前記キャッシュメモリの検索時に前記キャッシュメモリから読み出したストア対象領域外のデータに基づいて第１のエラー訂正コードを生成し前記バッファに格納する第１のエラー訂正コード生成回路と、
前記バッファの前記ストアデータのストア対象領域のデータに基づいて第２のエラー訂正コードを生成する第２のエラー訂正コード生成回路と、
前記第１のエラー訂正コードと前記第２のエラー訂正コードとをマージして前記ストアデータのエラー訂正コードを生成するマージ回路と備えるメモリ管理装置。
【請求項７】
前記第１のエラー訂正コード生成回路は、先行するストア命令のストアアドレスが現在のストア命令のストアアドレスと一致するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、同一のストアアドレスを有する先行するストア命令が存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記第１のエラー訂正コードが適正か否かを示すＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて記憶させる請求項６記載のメモリ管理装置。
【請求項８】
前記バッファは複数のバッファからなり、
前記第１のエラー訂正コード生成回路は、前記複数のバッファに同一のストアアドレスが存在するか否か、現在のストア命令のストアデータのデータ幅が所定のデータ幅と一致するか否かを判定し、前記複数のバッファに同一のストアアドレスが存在し、かつ現在のストア命令のストアデータのデータ幅が所定のデータ幅未満のときには、前記ＥＣＣ有効情報を無効に設定し、該ＥＣＣ有効情報を前記ストアデータと前記第１のエラー訂正コードと対応づけて該当するバッファの前記ストアアドレスに格納する請求項７記載のメモリ管理装置。
【請求項９】
前記マージ回路は、前記ＥＣＣ有効情報が有効か、無効かを判定し、前記ＥＣＣ有効情報が有効に設定されているときには、前記第１のエラー訂正コードと前記第２のエラー訂正コードをマージして前記ストアデータのエラー訂正コードを生成する請求項７記載のメモリ管理装置。
【請求項１０】
前記ＥＣＣ有効情報が無効に設定された状態で、先行するストア命令が完了したとき、前記バッファの該当するストアアドレスの前記ＥＣＣ有効情報を有効に書き替える請求項７記載のメモリ管理装置。
【国際調査報告】
2007088597.tif 000019
2007088597.tif 000020