(57)【特許請求の範囲】
【請求項１】
データを記録した記録装置からエラー訂正コードの作成対象となるデータを読み出す読み出し処理装置であって、
前記記録装置の所定の領域に記憶されたデータの一部のデータが更新された場合に、更新されたデータと同一の領域に含まれ、エラー訂正コードの作成対象となる未更新のデータを読み出して読み出しエラーが発生したか否かを判定するエラー判定手段と、
前記エラー判定手段によって前記未更新のデータに読み出しエラーが発生したと判定された場合に、前記記録装置から前記未更新のデータを再度読み出す再読み出し手段と、
読み出しエラーの発生していない前記未更新のデータと更新されたデータとを基にしてエラー訂正コードを生成する訂正コード生成手段と
を備えたことを特徴とする読み出し処理装置。
【請求項２】
前記エラー訂正コードは、ＣＰＵ（Central  Processing  Unit）の１次キャッシュから２次キャッシュに転送されるデータのエラー訂正に使用されるエラー訂正コードであることを特徴とする請求項１に記載の読み出し処理装置。
【請求項３】
前記記録装置に記録されたデータに発生したエラーを前記エラー訂正コードに基づいて訂正する訂正手段を更に備え、前記エラー判定手段は、前記訂正手段によってエラーを訂正されたデータに対する読み出し要求を取得した場合に、読み出し対象となるデータを読み出し、当該データに読み出しエラーが発生したか否かを判定することを特徴とする請求項１または２に記載の読み出し処理装置。
【請求項４】
前記記録装置の所定の領域に含まれる更新対象となるデータは、データの演算を実行する演算装置の演算結果にかかるデータであることを特徴とする請求項１に記載の読み出し処理装置。
【請求項５】
データを記録した記録装置からエラー訂正コードの作成対象となるデータを読み出す読み出し方法であって、
前記記録装置の所定の領域に記憶されたデータの一部のデータが更新された場合に、更新されたデータと同一の領域に含まれ、エラー訂正コードの作成対象となる未更新のデータを読み出して読み出しエラーが発生したか否かを判定するエラー判定工程と、
前記エラー判定工程によって前記未更新のデータに読み出しエラーが発生したと判定された場合に、前記記録装置から前記未更新のデータを再度読み出す再読み出し工程と、
読み出しエラーの発生していない前記未更新のデータと更新されたデータとを基にしてエラー訂正コードを生成する訂正コード生成工程と
を含んだことを特徴とする読み出し方法。
【請求項６】
前記エラー訂正コードは、ＣＰＵ（Central  Processing  Unit）の１次キャッシュから２次キャッシュに転送されるデータのエラー訂正に使用されるエラー訂正コードであることを特徴とする請求項５に記載の読み出し方法。
【請求項７】
前記記録装置に記録されたデータに発生したエラーを前記エラー訂正コードに基づいて訂正する訂正工程を更に含み、前記エラー判定工程は、前記訂正工程によってエラーを訂正されたデータに対する読み出し要求を取得した場合に、読み出し対象となるデータを読み出し、当該データに読み出しエラーが発生したか否かを判定することを特徴とする請求項５または６に記載の読み出し方法。
【請求項８】
前記記録装置の所定の領域に含まれる更新対象となるデータは、データの演算を実行する演算装置の演算結果にかかるデータであることを特徴とする請求項５に記載の読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記録した記録装置からエラー訂正コードの作成対象となるデータを読み出す読み出し処理装置および読み出し方法に関するものである。
【背景技術】
【０００２】
近年、半導体技術の微細化に伴いＣＰＵ（Central  Processing  Unit）に搭載されるＲＡＭ（Random  Access  Memory）を構成する記憶素子も微細化し、ＲＡＭの記憶情報の反転が発生しやすくなってきた。また、ＲＡＭ内部の回路については、動作周波数の向上を目指して内部動作タイミングの調整値のマージンを削るようになってきており、動作可能な電圧・温度が制限されるため、電圧変動・温度変動に対する耐性が低くなってきている。
【０００３】
上記した事情により、従来では考えられなかった故障モードが発生するようになってきている。この故障モードの例としては、α線などの影響によってＲＡＭセルに間欠故障が発生し、ＲＡＭ内部の情報が壊れてしまう間欠不良、書き込み時にＲＡＭセルの値を正しく更新できないことで発生する間欠書き込み不良、ＲＡＭ回路におけるライトリカバリー不良などにより、ＲＡＭには正しい値が格納されているにもかかわらず、正しい値を読み出せない間欠読み出し不良などがある。
【０００４】
図７および図８は、ＲＡＭ回路におけるライトリカバリー不良を説明するための説明図である。ライトリカバリー不良とは、ＲＡＭ（例えばＳＲＡＭ＜Static  RAM＞）に対してデータの書き込みをおこなった直後に、データの読み出しをおこなった場合、読み出し直前の書き込みデータがビット線に残留して次サイクルの読み出しのマージンを低下させる現象である。例えば、ＳＲＡＭを設定値以上の動作サイクルで動作させる場合や、トランジスタの構造ばらつきが設計者の想像以上に大きい場合には、ライトリカバリー不良が発生してしまう。
【０００５】
ＳＲＡＭ回路の設計上は、書き込み後にデータが残留しないようビット線をプリチャージトランジスタ（図７に示すＴｒＡ、ＴｒＢ、ＴｒＣ）を用いて規定時間内でＶｄｄ（電源電圧）まで充電（ショート）させる構造となっている。すなわち、データの書き込み時には、ビット線対（図７のＢｉｔおよび／Ｂｉｔ）を書き込みデータに応じて片側（図８の波形図においてはＢｉｔ側）をＬｏｗレベルに落としセルに書き込みを行い、書き込みが終了したら次サイクルの読み出し開始までにビット線対（Ｂｉｔ、／Ｂｉｔ）をＶｄｄにショートすることで書き込みデータを一掃する。
【０００６】
しかし、プリチャージトランジスタが弱い場合には、ビット線上の電圧は、図８の上から３段目の破線で示されるような波形となり、次の読み出しが開始されても電圧がＶｄｄまで上がりきらずビット線に電位差が残ったままになってしまう。この状態で次の読み出しが開始されると本来センスアンプが取り込む振幅が減少してしまい、読み出しエラー、すなわち間欠読み出し不良が発生していた。
【０００７】
そこで、特許文献１では、各故障モードに対応すべく、データを直接演算装置に転送するモード（直接転送モード）と、ＲＡＭに記憶されたデータのエラーの検出・訂正を行い演算装置に転送するモード（訂正転送モード）とを利用して、ＲＡＭに記憶されたデータを演算装置に転送している。すなわち、迅速に演算装置に転送する必要のあるデータを直接転送モードによって演算装置に転送し、迅速に転送する必要のないデータを訂正転送モードによって演算装置に転送することで、効率よくＲＡＭに発生する故障モードの問題を解決していた。
【０００８】
【特許文献１】特開平９−１３４３１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術では、ライトリカバリー不良に起因する間欠読み出し不良に適切に対応することができないという問題があった。
【００１０】
なぜなら、間欠読み出し不良は、ＲＡＭに正確な情報が記録されている場合でも、不規則に読み出しエラーが発生する現象であるため、一度データを読み取ってエラーチェックを行いエラーが検出されなかった場合にでも、再度同じデータを読み出した際に擬似的な読み出しエラー、すなわち間欠読み出し不良が発生してしまう可能性が高いからである。
【００１１】
このような間欠読み出し不良がＣＰＵのオペランドキャッシュに対するストア（Store）時に発生した場合には、たとえ１ビットのエラーであっても訂正不能のエラー(Uncorrectable  Error)として処理され深刻なものとなっている。
【００１２】
また、ライトリカバリー不良に起因する間欠読み出し不良は、そもそもデータの読み出し元となったＲＡＭには正常なデータが記録されているため、間欠読み出し不良にかかるエラーを検出し、検出したエラーをわざわざ訂正する処理には無駄がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、ライトリカバリー不良に起因する間欠読み出し不良に適切に対応することができるエラー救済処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、データを記録した記録装置からエラー訂正コードの作成対象となるデータを読み出す読み出し処理装置であって、前記記録装置からエラー訂正コードの作成対象となるデータを読み出し、当該データに読み出しエラーが発生したか否かを判定するエラー判定手段と、前記エラー判定手段によってエラーが発生したと判定された場合に、前記記録装置から前記データと同一のデータを再度読み出す再読み出し手段と、を備えたことを特徴とする。
【００１５】
また、本発明は、データを記録した記録装置からエラー訂正コードの作成対象となるデータを読み出す読み出し方法であって、前記記録装置からエラー訂正コードの作成対象となるデータを読み出し、当該データに読み出しエラーが発生したか否かを判定するエラー判定工程と、前記エラー判定工程によってエラーが発生したと判定された場合に、前記記録装置から前記データと同一のデータを再度読み出す再読み出し工程と、を含んだことを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ストア時において、データを記録する記録装置からエラー訂正コードの作成対象となるデータを読み出し、当該データに読み出しエラーが発生したか否かを判定し、読み出しエラーが発生している場合に、記録装置から再度同一のデータを読み出すことにより、ＲＡＭの間欠読み出し不良による1ビットエラーがＵＥ(Uncorrectable  Error)に進展してしまうといった問題を解消することができるという効果を奏する。
【００１７】
また、ライトリカバリー不足に起因する読み取りエラーは、オペランドキャッシュに記録されているデータに障害が発生しているわけではないので、本発明のように、データの読み出しを再度実行するだけで正常なデータを得ることができ、エラー訂正にかかる処理を簡略化することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明にかかる読み出し処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１９】
まず、本発明の特徴について説明する。本発明では、ＣＰＵ（Central  Processing  Unit）のオペランドキャッシュ（１次キャッシュ）からデータを読み出し、読み出したデータを基にしてエラー訂正コード（ＥＣＣ＜Error  Correcting  Code＞）を作成する処理の過程で、ライトリカバリー不良に起因する読み取りエラーが発生した場合に、読み取りエラーの発生したデータに対応するデータを再度オペランドキャッシュから読み出す。
【００２０】
このように、本発明では、読み取りエラーの発生したデータに対応するデータを再度オペランドキャッシュから読み出すことによって、間欠読み出し不良によるＲＡＭの1ビットエラーがＵＥ(Uncorrectable  Error)になってしまうといった問題を解消することができる。
【００２１】
また、ライトリカバリー不足に起因する読み取りエラーは、オペランドキャッシュに記録されているデータに障害が発生しているわけではないので、本発明のように、データの読み出しを再度実行するだけで正常なデータを取得することができ、エラー訂正にかかる処理を簡略化することができる。
【００２２】
ここで、ＣＰＵの概要構成について説明しておく。図１は、ＣＰＵの概要構成を示す機能ブロック図である。同図に示すようにこのＣＰＵ１０は、セカンドキャッシュ１０、オペランドキャッシュ３０、命令キャッシュ４０、命令処理部５０、演算処理部６０を有する。また、ＣＰＵ１０はシステム全体を制御するシステムコントローラ（System  Controller）に接続されている。
【００２３】
ここで、セカンドキャッシュ２０は、システムコントローラから転送されるデータ、オペランドキャッシュ３０から転送されるデータを一時的に記録する記録装置である。オペランドキャッシュ３０は、セカンドキャッシュ２０から転送されるデータ、命令処理部５０から転送されるデータおよび演算処理部６０から転送されるデータを一時的に記録する記録装置である。
【００２４】
命令キャッシュ４０は、セカンドキャッシュ２０から転送されるデータを一時的に記録する記録装置である。なお、命令キャッシュ４０は、命令処理部５０が用いる命令のデータを記録する。命令処理部５０は、命令キャッシュ４０から命令のデータを取得して命令を解釈し、種種の演算命令を演算処理部６０におこなう装置である。演算処理部６０は、命令処理部６０から演算命令を取得し、この演算命令に基づいてオペランドキャッシュ３０からデータを読み込んで演算を実行し、演算結果をオペランドキャッシュ３０に書き込む装置である。
【００２５】
続いて、本実施例にかかるＣＰＵの構成について説明する。図２は、本実施例にかかるＣＰＵの構成を示す機能ブロック図である。同図に示すように、このＣＰＵ１５は、セカンドキャッシュ２０、ＥＣＣパリティ処理部２１、ＥＣＣ処理部２２、オペランドキャッシュ３０、ストアマージ処理部３１、Ｌ１ＥＣＣ記憶部３２、命令処理部５０、アドレス選択部５１、演算処理部６０、ストアデータ処理部６１、キャッシュ制御部７０、エラー検出部７１、エラー制御部７２を有する。
【００２６】
セカンドキャッシュ２０は、図１に示したセカンドキャッシュ２０と同様に、コントローラから転送されたデータを記録する記録装置である。また、セカンドキャッシュ２０は、データとこのデータに対応するＥＣＣとを関連付けて記憶する。セカンドキャッシュ２０は、制御部（図示しない）からのデータの転送命令を取得した場合に、転送対象のデータとＥＣＣとをＥＣＣパリティ処理部２１に転送する。
【００２７】
ＥＣＣパリティ処理部２１は、セカンドキャッシュ２０からデータおよびＥＣＣを取得し、ＥＣＣによるデータのエラーチェックおよびエラー訂正を実行すると共に、データのパリティを生成し、生成したパリティをデータに付加してオペランドキャッシュ３０に転送する装置である。
【００２８】
ＥＣＣ処理部２２は、オペランドキャッシュ３０に記録されたデータおよびＬ１ＥＣＣ記憶部３２に記録されたＥＣＣを取得し、ＥＣＣによるデータのエラーチェックおよびエラー訂正を実行すると共に、ＥＣＣによるデータのチェックおよび訂正を実行したデータをセカンドキャッシュ２０に転送する装置である。ここで、Ｌ１ＥＣＣ記憶部３２は、オペランドキャッシュ３０に記録されたデータに対応するＥＣＣを記録する装置である。
【００２９】
オペランドキャッシュ３０は、セカンドキャッシュ２０から転送されるデータなどを記録する記録装置である。オペランドキャッシュ３０は、ラインとよばれる所定の領域ごとにデータを記録している。このラインに記録されたデータラインの全てもしくは一部分が、ストアデータ処理部６１によって更新される。以下、ストアデータ処理部６１によって更新されるオペランドキャッシュ３０のデータをストア対象データと表記する。
【００３０】
ストアデータ処理部６１は、演算処理部６０から演算結果となるデータ（以下、ストアデータと表記する）を取得し、取得したストアデータによってオペランドキャッシュ３０のストア対象データを更新する装置である。演算処理部６０は、図１に示した演算処理部６０と同様に、命令処理部５０から演算命令を取得し、取得した演算命令に従って、演算処理を実行する装置である。そして、演算処理部６０は、演算結果であるストアデータをストアデータ処理部６１に渡す。
【００３１】
命令処理部５０は、図１に示した命令処理部５０と同様に、命令キャッシュ（図２では省略）からデータを取得して命令を解釈し、種種の命令をアドレス選択部５１、キャッシュ制御部７０および演算処理部６０に対して行う装置である。
【００３２】
ストアマージ処理部３１は、オペランドキャッシュ３０に記録されたデータに対応するＥＣＣを生成し、生成したＥＣＣをＬ１ＥＣＣ記憶部３２に記録する装置である。また、ストアマージ処理部３１は、ストアデータ処理部６１がオペランドキャッシュ３０のストア対象データを更新する場合に、ストアデータおよびストア対象データを含んだラインの残りデータ（ストア対象外データ）をストアデータ処理部６１およびオペランドキャッシュ３０からそれぞれ取得して結合し、結合したデータを基にＥＣＣを生成し、生成したＥＣＣをＬ１ＥＣＣ記憶部３２に記録する。
【００３３】
さらに、ストアマージ処理部３１は、ストアデータおよびストア対象外データを結合し、ＥＣＣを生成する場合に、キャッシュ制御部７０から再読み出し要求を取得した場合には、作成したＥＣＣを破棄し、再度該当ラインのデータをオペランドキャッシュ３０から読み出してＥＣＣを生成し、作成したＥＣＣをＬ１ＥＣＣ記憶部３２に記録する。なお、再読み出しを実行する場合には、ストア対象データは、ストアデータ処理部６１によって更新済みであるため、ストアマージ処理部３１は、データ結合は実行せず、ラインに記録されたデータ（更新済みのストアデータ＋ストア対象外データ）を読み出してＥＣＣを生成することになる。
【００３４】
キャッシュ制御部７０は、エラー検出部７１から読み出しエラーが発生した旨の通知を取得した場合に、ストアマージ処理部３１に対して再読み出し要求を行う装置である。ここで、エラー検出部７１は、ストアマージ処理部３１がＥＣＣを生成する場合に、ストアマージ処理部３１がオペランドキャッシュ３０から読み出したデータに読み出しエラーが発生したか否かを判定する装置である。エラー検出部７１は、読み出しエラーが発生したと判定した場合に、読み出しエラーが発生した旨をキャッシュ制御部７０に通知する。なお、エラー制御部７２は、キャッシュ制御中のエラーを処理する処理部である。
【００３５】
アドレス選択部５１は、命令処理部５０またはキャッシュ制御部７０の命令に従い、オペランドキャッシュ３０に記録されたデータのアドレスを選択する装置である。例えば、命令実行部５０が、命令キャッシュからのデータによって命令を解釈し、演算処理部６０に演算を実行させる場合には、アドレス選択部５１に命令して演算対象となるデータのアドレスを選択させる。そして、演算処理部６０は、アドレス選択部５１に選択されたアドレスのデータを読み取って演算を実行する。
【００３６】
また、キャッシュ制御部７０が、エラー検出部７１から読み出しエラーが発生した旨の通知を取得した場合に、再度オペランドキャッシュ３０に記憶されたデータをストアマージ処理部３１に読み出させるべく、読み出しエラーの発生したデータを含むラインのアドレスをアドレス選択部５１に選択させる。ストアマージ処理部３１は、アドレス選択部５１に選択されたデータを再度読み出すことで、ライトリカバリー不良に起因するエラーが救済されたデータを読み出すことができ、適切なＥＣＣを生成することができる。
【００３７】
つぎに、ストアマージ処理部３１がＥＣＣを生成する処理について説明する。図３は、ストアマージ処理部３１がＥＣＣを生成する処理を説明する説明図である。なお、図３においては、オペランドキャッシュ３０からの読み出しエラーは発生しないものとして説明をおこなう。
【００３８】
まず、図３のサイクル（cycle）「０」において、セカンドキャッシュ２０から転送されるデータとストアデータとの優先順位が決定される。ここで、セカンドキャッシュ２０から転送されるデータの優先順位がストアデータの優先順位よりも高い場合には、サイクル「１」において、オペランドキャッシュ３０にセカンドキャッシュ２０から転送されたデータが書き込まれ、ストアマージ処理部３１が、サイクル「３」において、転送されたデータのＥＣＣを生成し、生成したＥＣＣをサイクル「４」においてＬ１ＥＣＣ記憶部３２に記録する。
【００３９】
一方、サイクル「０」において、ストアデータの優先順位がセカンドキャッシュ２０から転送されるデータの優先順位よりも高い場合には、サイクル「１」においてストアデータ処理部６１がストアデータをオペランドキャッシュ３０に記録し、サイクル「２」においてストアマージ処理部３１がストアデータとストア対象外データとを結合し、サイクル「３」において結合したデータに対するＥＣＣを生成し、生成したＥＣＣをサイクル「４」においてＬ１ＥＣＣ記憶部３２に記録する。
【００４０】
続いて、ストアマージ処理部３１がおこなう処理を、読み出しエラーが発生した場合と発生しない場合とを比較して説明する。図４は、読み出しエラーが発生した場合とそうでない場合におけるストアマージ処理部３１の処理を説明するための説明図である。
【００４１】
まず、読み出しエラーが発生しない場合のストアマージ処理３１の処理について説明する。図４の上段に示すように、オペランドキャッシュ３０のラインにはエラーチェック済みのデータ（エラーのないデータ）が格納されており、このデータに対応するＥＣＣは、Ｌ１ＥＣＣ記憶部３２に格納されている。
【００４２】
そして、オペランドキャッシュ３０に対するストアが実行される場合に、ストアマージ処理部３１は、ストアデータをストアデータ処理部６１から取得し、オペランドキャッシュ３０からストア対象外データを読み出し、取得したストアデータおよびストア対象外のデータと結合して新しいＥＣＣを生成し、生成したＥＣＣをＬ１ＥＣＣ記憶部３２に記録する。
【００４３】
つぎに、ライトリカバリー不良に起因する読み出しエラーが発生した場合の処理について説明する。図４の下段に示すように、オペランドキャッシュ３０のラインにはエラーチェック済みのデータが格納されており、このデータに対応するＥＣＣは、Ｌ１ＥＣＣ記憶部３２に記録されている。
【００４４】
そして、オペランドキャッシュ３０に対するストアが実行される場合に、ストアマージ処理部３１は、ストアデータをストアデータ処理部６１から取得し、オペランドキャッシュ３０からストア対象外データを読み出す。このストア対象外データをオペランドキャッシュ３０から読み出す際に、読み出しエラーが発生した（読み出しエラーはエラー検出部７１によって検出される）場合には、キャッシュ制御部より、再度同一ラインを読み出す要求が行われ、ストアマージ処理部３１は、再度オペランドキャッシュ３０のラインに記録されたデータを読み出してＥＣＣを生成し、生成したＥＣＣをＬ１ＥＣＣ記憶部３２に記録する。
【００４５】
なお、ストアマージ処理部３１は、オペランドキャッシュ３０からデータを再度読み出してＥＣＣを生成する場合には、ストアデータとストア対象外データとの結合は実行しない。これは、オペランドキャッシュ３０のラインに対するストアデータの書込みが完了しているためである。
【００４６】
続いて、オペランドキャッシュ３０のストア対象データを更新する場合の処理をフローチャートにて説明する。図５は、オペランドキャッシュ３０のストア対象データを更新する場合の処理を示すフローチャートである。同図に示すように、キャッシュ制御部７０が、命令処理部５０からストア要求（ｓｔ１）を取得し（ステップＳ１０１）、エラー制御部７２がストア対象となるデータがオペランドキャッシュ３０に存在するか否かを判定する（ステップＳ１０２）。
【００４７】
そして、ストア対象となるデータがオペランドキャッシュ３０に存在する場合に、キャッシュ制御部７０がストア対象ラインにエラーが存在するか否かを判定する（ステップＳ１０３）。
【００４８】
そして、ストア対象ラインにエラーが存在する場合には（ステップＳ１０４，Ｙｅｓ）、エラー制御部７２はエラー処理を実行し（ステップＳ１０５）、エラーリカバリー処理を行い、再度リクエストを発行し、ステップＳ１０１に移行する。一方、ストア対象ラインにエラーが存在しない場合には（ステップＳ１０４，Ｎｏ）、キャッシュ制御部７０は、命令処理部５０からストア要求（ｓｔ２）を取得し（ステップＳ１０６）、ストアデータ処理部６１がストアデータをストア対象ラインに登録する（ステップＳ１０７）。
【００４９】
続いて、エラー検出部７１が、オペランドキャッシュ３０から読み出されたデータに読み出しエラーが発生したか否かを判定し（ステップＳ１０８）、読み出しエラーが発生していない場合には（ステップＳ１０９，Ｎｏ）、ストアマージ処理部３１がストアデータとストア対象外のデータとをマージし（ステップＳ１１０）、ＥＣＣを作成し（ステップＳ１１１）、作成したＥＣＣをＬ１ＥＣＣ記憶部３２に登録する（ステップＳ１１２）。
【００５０】
一方、エラー検出部７１が、読み出しエラーが発生したと判定した場合には（ステップＳ１０９，Ｙｅｓ）、キャッシュ制御部７０が、ストアマージ処理部３１に対してリカバリー処理（再読み出し）を要求する（ステップＳ１１３）。
【００５１】
そして、ストアマージ処理部３１は、再度、同一ラインからラインデータを読み出すと共に、当該読み出されたデータに読み出しエラーが発生したか否かをエラー検出部７１が判定する（ステップＳ１１５）。
【００５２】
そして、読み出しエラーが存在しない場合には（ステップＳ１１５，Ｎｏ）、ステップＳ１１１に移行し、読み出しエラーが発生した場合には、キャッシュ制御部７０がエラー処理を実行する（ステップＳ１１６）。このステップＳ１１６において、訂正不能なエラーであることを示すフラグを付けてエラー処理を行い、ステップＳ１０１に移行する。
【００５３】
このように、ストアマージ処理部３１は、キャッシュ制御部７０の指示に従って、オペランドキャッシュ３０に記憶されたデータの再読み出しを行うので、ライトリカバリー不良にかかる読み出しエラーを効率よく回避することができる。
【００５４】
つぎに、読み出しエラーにかかる救済フローのタイムチャートを示す。図６は、読み出しエラーにかかる救済フローのタイムチャートを示す図である。同図に示すように、サイクル「０」〜サイクル「４」において、エラー修正部７１がストア対象ラインのエラーチェックを実行する（ストア実行処理ｓｔ１）。
【００５５】
そして、ストア実行処理ｓｔ１においてエラーが検出されなければ、ストア実行処理ｓｔ２を、サイクル「５」〜サイクル「１０」において実行する。このストア実行処理ｓｔ２のサイクル「１０」において、エラー検出部７１は、読み出しエラーが発生したか否かを判定する。
【００５６】
エラー検出部７１がサイクル「１０」において読み出しエラーが発生したと判定した場合には、キャッシュ制御部７０に対して「st2_read_pe」を出力する。キャッシュ制御部７０は、「st2_read_pe」を１τ受けて、「inh_set_xxx_req」を上げて、サイクル「１２」において他のリクエストが処理されないように抑止する。また、サイクル「１２」において、キャッシュ制御部７０は、「st2_read_pe」を２τ受けて、「inh_set_xxx_req」を上げて、サイクル「１３」においてパージ以外のリクエストを流さないように抑止する。上述の「inh_set_xxx_req」によって、サイクル「１２」ではＲＡＭへの書き込みがおこらないように制御を行っており、休止サイクルを設けることにより、ライトリカバリー不足による読み出し不良回避を図っている。
【００５７】
そして、キャッシュ制御部７０は、読み出しエラー発生から２サイクルあけて、リカバリーフローのプライオリティーを取得し、サイクル「１５」において、オペランドキャッシュ３０のライン（読み出しエラーの発生したデータを格納しているライン）をアドレス選択部５１に選択させ、サイクル「１６」においてストアマージ処理部３１がＥＣＣを生成し、サイクルＬ１ＥＣＣ記憶部３２にＥＣＣを記録する。
【００５８】
上述してきたように、本実施例では、ＥＣＣの生成処理の過程において、ストアマージ処理部３１が、オペランドキャッシュ３０からストア対象外データを読み出す場合に、エラー検出部７１が、ストア対象外データに読み出しエラーが発生したか否かを判定し、読み出しエラーが発生した場合には、ストアマージ処理部３１は、再度、オペランドキャッシュ３０から該当ラインのデータを読み出して、ＥＣＣの生成を行うことにより、ＲＡＭの間欠読み出し不良による1ビットエラーによるＵＥを回避することができる。
【００５９】
また、ライトリカバリー不足に起因する読み取りエラーは、オペランドキャッシュに記録されているデータに障害が発生しているわけではないので、本実施例のように、ストアマージ処理部３１がデータの読み出しを再度実行するだけで正常なデータを得ることができ、エラー訂正にかかる処理を簡略化することができる。
【産業上の利用可能性】
【００６０】
以上のように、本発明にかかるデータ読み出し装置は、ライトリカバリー不良に起因する読み出しエラーの発生に対処する必要のある制御装置などに対して有用である。
【図面の簡単な説明】
【００６１】
【図１】図１は、ＣＰＵの概要構成を示す機能ブロック図である。
【図２】図２は、本実施例にかかるＣＰＵの構成を示す機能ブロック図である。
【図３】図３は、ストアマージ処理部がＥＣＣを生成する処理を説明する説明図である。
【図４】図４は、読み出しエラーが発生した場合とそうでない場合におけるストアマージ処理部の処理を説明するための説明図である。
【図５】図５は、オペランドキャッシュのストア対象データを更新する場合の処理を示すフローチャートである。
【図６】図６は、読み出しエラーにかかる救済フローのタイムチャートを示す図である。
【図７】図７は、ＲＡＭ回路におけるライトリカバリー不良を説明するための説明図（１）である。
【図８】図８は、ＲＡＭ回路におけるライトリカバリー不良を説明するための説明図（２）である。
【符号の説明】
【００６２】
１０  ＣＰＵ
２０  セカンドキャッシュ
２１  ＥＣＣパリティ処理部
２２  ＥＣＣ処理部
３０  データキャッシュ（オペランドキャッシュ）
３１  ストアマージ処理部
３２  Ｌ１ＥＣＣ記憶部
４０  命令キャッシュ
５０  命令処理部
５１  アドレス選択部
６０  演算処理部
６１  ストアデータ処理部
７０  キャッシュ制御部
７１  エラー検出部
７２  エラー制御部
【図１】
0004791525.tif 000002
【図２】
0004791525.tif 000003
【図３】
0004791525.tif 000004
【図４】
0004791525.tif 000005
【図５】
0004791525.tif 000006
【図６】
0004791525.tif 000007
【図７】
0004791525.tif 000008
【図８】
0004791525.tif 000009