(57)【要約】【課題】パイプライン処理を行うプロセッサの性能への影響が少ないソフトエラー訂正方式を実現する。【解決手段】データアレイ４３は、データとパリティビットを記憶し、チェックビットアレイ４６は当該データのＥＣＣビットを記憶する。パリティチェック部４４は、プロセッサ１からリード要求により、リード対象データとそのパリティビットをデータアレイ４３から取得し、パリティビットを用いてリード対象データのパリティチェックを行う。データ誤りを検出した場合は、プロセッサ１に対してパイプラインストールを指示するストール指示信号を出力する。誤り訂正部４７は、パイプラインストール中に、リード対象データのＥＣＣビットをチェックビットアレイ４６から取得し、ＥＣＣビットを用いてリード対象データの誤り訂正を行い、誤り訂正後のリード対象データと、パイプラインストールの解除を指示するストール解除信号とをプロセッサ１に出力する。【選択図】図２
2011257966.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン処理が行われるプロセッサとデータを送受信するキャッシュ装置であって、
データを、パリティビットとともに記憶するデータアレイと、
前記データアレイにおいて記憶されているデータのＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）ビットを記憶するチェックビットアレイと、
前記プロセッサからリード要求があった際に、リード要求の対象であるリード対象データに対して当該リード対象データのパリティビットを用いてパリティチェックを行い、リード対象データのデータ誤りを検出した場合に、前記プロセッサに対してパイプラインストールを指示するストール指示信号を出力するパリティチェック部と、
前記パリティチェック部によりリード対象データのデータ誤りが検出された場合に、リード対象データのＥＣＣビットを用いて、リード対象データの誤り訂正を行い、誤り訂正後のリード対象データと、パイプラインストールの解除を指示するストール解除信号とを前記プロセッサに出力する誤り訂正部とを有することを特徴とするキャッシュ装置。
【請求項２】
前記誤り訂正部は、
パイプラインストール中に、リード対象データの誤り訂正を行い、誤り訂正後のリード対象データを前記プロセッサに送信することを特徴とする請求項１に記載のキャッシュ装置。
【請求項３】
パイプライン処理が行われるプロセッサとデータを送受信するキャッシュ装置であって、
データを、パリティビットとともに記憶するデータアレイと、
前記データアレイにおいて記憶されているデータのＥＣＣビットを記憶するチェックビットアレイと、
前記プロセッサからライト要求があった際に、前記データアレイに既に記憶されているデータであってライト要求の対象であるライト対象データとマージされるマージ対象データに対して当該マージ対象データのパリティビットを用いてパリティチェックを行い、マージ対象データのデータ誤りを検出した場合に、前記プロセッサに対してパイプラインストールを指示するストール指示信号を出力するパリティチェック部と、
前記パリティチェック部によりマージ対象データのデータ誤りが検出された場合に、マージ対象データのＥＣＣビットを用いて、マージ対象データの誤り訂正を行う誤り訂正部と、
誤り訂正後のマージ対象データのパリティビットを生成するパリティビット生成部とを有し、
前記パリティチェック部は、
前記パリティビット生成部により生成されたパリティビットを用いてマージ対象データにデータ誤りがないことを確認し、パイプラインストールの解除を指示するストール解除信号を前記プロセッサに出力することを特徴とするキャッシュ装置。
【請求項４】
前記誤り訂正部は、
パイプラインストール中に、マージ対象データのＥＣＣビットを用いて、マージ対象データの誤り訂正を行い、
前記パリティビット生成部は、
パイプラインストール中に、誤り訂正後のマージ対象データのパリティビットを生成し、
前記パリティチェック部は、
パイプラインストール中に、前記パリティビット生成部により生成されたパリティビットを用いてマージ対象データにデータ誤りがないことを確認することを特徴とする請求項３に記載のキャッシュ装置。
【請求項５】
前記キャッシュ装置は、更に、
前記パリティチェック部によりマージ対象データにデータ誤りがないことが確認された際に、ライト対象データとマージ対象データとをマージして前記データアレイに書き込むとともに、ライト対象データとマージ対象データとのマージデータのパリティビットを前記データアレイに書き込む書き込み部を有することを特徴とする請求項３又は４に記載のキャッシュ装置。
【請求項６】
前記キャッシュ装置は、更に、
前記パリティチェック部によりマージ対象データにデータ誤りがないことが確認された際に、ライト対象データとマージ対象データとのマージデータのＥＣＣビットを生成するＥＣＣビット生成部を有し、
前記書き込み部は、
前記ＥＣＣビット生成部により生成されたマージデータのＥＣＣビットを前記チェックビットアレイに書き込むことを特徴とする請求項５に記載のキャッシュ装置。
【請求項７】
前記書き込み部は、
マージデータのＥＣＣビットの前記チェックビットアレイへの書き込みのために設けられているパイプラインステージにおいて、前記ＥＣＣビット生成部により生成されたマージデータのＥＣＣビットを前記チェックビットアレイに書き込むことを特徴とする請求項６に記載のキャッシュ装置。
【請求項８】
請求項１〜７のいずれかに記載のキャッシュ装置を含むことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ装置においてソフトエラーを訂正する方式に関する。
【背景技術】
【０００２】
半導体プロセスの微細化が年々進展することを活用し、情報処理装置の要であるマイクロプロセッサ（以降プロセッサと記述）は、高速化・高機能化してきた。
具体的には、例えば、
１）半導体プロセスの微細化によるトランジスタや論理回路の高速化による、プロセッサの動作周波数の向上、
２）実装可能なトランジスタ数の増大によるキャッシュ装置の実装と、その容量の増大化と階層化、
３）プロセッサのアーキテクチャの進展による処理のパイプライン化とその段数の多段化、
が高性能化のための主要技術である
【０００３】
このように半導体プロセスの微細化は、プロセッサの高速化を根底からささえているが、微細化により、プロセッサの内部電圧が低下し、チップ内外からのノイズに対するマージンが少なくなってきている。
特に、キャッシュを構成するＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のマージンが少なくなり、ノイズに弱くなり、ＳＲＡＭが保持している情報（ビット）が反転し、情報が誤ってしまう現象が発生しやすくなっている。これをソフトエラーという。
ソフトエラーは、チップ内部の電圧変動や、宇宙からの中性子線などで発生する。
前述したとおり、プロセッサの高性能化には、キャッシュが不可欠であり、しかもその容量が増大傾向にある。
近年の高性能なプロセッサは、キャッシュを１次キャッシュと２次キャッシュという２つのレベルで持つことが一般的になっている。
１次キャッシュは、プロセッサに密に結合しており、高速に動作することが不可欠である。
１次キャッシュは、高速動作のために容量を大きくしにくい。
そこで、１次キャッシュに入らないデータを２次キャッシュで受ける構造をとる。
２次キャッシュは、１次キャッシュより低速動作であり、プロセッサからのアクセスも時間がかかるが、容量が大きく、キャッシュのヒット率（欲しいデータがキャッシュに入っている比率）は高い。
この１次キャッシュ、２次キャッシュがソフトエラーを発生したときに、プロセッサが誤作動しないための工夫として、従来からパリティチェックとＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）の技術がある。
【０００４】
パリティチェックは、１バイト程度のひとまとまりのデータに対して１ビットのパリティビットという冗長ビットを付加する。
データかパリティビットが１ビット反転したときに、その現象（パリティエラー）を検出することができる。しかし、どのビットが反転したかは検出できない。
ＥＣＣは、８バイト程度のひとまとまりのデータに対して複数のチェックビット（例えば８ビット）を付加する。
データかチェックビットが１ビット反転したときに、その現象を検出し、反転したビットを検出し、もとのデータを復元する（エラー訂正）ことができる。
一般的なＥＣＣ方式は、１ビットエラーの訂正と、２ビットエラーの検出が可能である。
本明細書では、２ビットエラーの検出に関する議論は本質ではないので言及しない。
パリティチェックは、エラー検出しかできないが、回路が単純で、高速動作に向いている。
一方、ＥＣＣ方式は、エラー訂正まで可能であるが、回路が複雑で、エラー検出はパリティチェックより長時間を要し、エラー訂正には、さらに多くの時間を要するので、高速動作には向いていない。
しかるに、高速性を要する１次キャッシュにはパリティチェックを利用し、容量が大きい２次キャッシュにはＥＣＣチェックビットを付加する方式が一般的であった。
さらに、特許文献１には、１次キャッシュのデータ復元を実現するために、１次キャッシュにパリティとＥＣＣチェックビットの両者を付加し、通常の１次キャッシュアクセス時はパリティチェックを行い、パリティエラーが検出されたとき、ＥＣＣチェックビットのデータを読み、データを復元する方式が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００４−５１４１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、１次キャッシュは、プロセッサのパイプラインと密接に関連しているため、パリティチェックのタイミング、パリティビットの生成のタイミング、ＥＣＣチェックビット生成のタイミング、ＥＣＣチェックビットによるデータ復元のタイミングをパイプラインのどのステージで実現するかによりプロセッサの性能とコストに影響を及ぼす。
特許文献１には、この点に関する記載がない。
本発明は、パイプライン処理を行うプロセッサに用いられるキャッシュ装置において、プロセッサ性能への影響が少ないソフトエラーの訂正方式を実現することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るキャッシュ装置は、
パイプライン処理が行われるプロセッサとデータを送受信するキャッシュ装置であって、
データを、パリティビットとともに記憶するデータアレイと、
前記データアレイにおいて記憶されているデータのＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）ビットを記憶するチェックビットアレイと、
前記プロセッサからリード要求があった際に、リード要求の対象であるリード対象データに対して当該リード対象データのパリティビットを用いてパリティチェックを行い、リード対象データのデータ誤りを検出した場合に、前記プロセッサに対してパイプラインストールを指示するストール指示信号を出力するパリティチェック部と、
前記パリティチェック部によりリード対象データのデータ誤りが検出された場合に、リード対象データのＥＣＣビットを用いて、リード対象データの誤り訂正を行い、誤り訂正後のリード対象データと、パイプラインストールの解除を指示するストール解除信号とを前記プロセッサに出力する誤り訂正部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明では、パリティチェックによりデータ誤りを検出した際にストール指示信号を出力してパイプラインをストールさせて、ＥＣＣビットを用いた誤り訂正を行っている。
データ誤りの発生頻度は低く、発生頻度の低いデータ誤りのためのＥＣＣビットのリードやＥＣＣビットを用いた誤り訂正に対して専用のパイプラインステージを設けることはせずに、データ誤りが生じた場合に限ってパイプラインをストールさせて誤り訂正を行うので、プロセッサの実装コストやパイプライン構成の複雑さの増大を抑えることができ、データ誤りのない状況において効率的にプロセッサのパイプラインを進行させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る情報処理装置の構成例を示す図。
【図２】実施の形態１に係るデータ用１次キャッシュの構成例を示す図。
【図３】実施の形態１に係るデータ用１次キャッシュの構成例を示す図。
【図４】実施の形態１に係るデータ、パリティビット、ＥＣＣチェックビット間の関係を示す図。
【図５】実施の形態１に係るデータ用１次キャッシュの読み出し動作の例を示すフローチャート図。
【図６】実施の形態１に係るデータ用１次キャッシュの書き込み動作の例を示すフローチャート図。
【図７】実施の形態１に係るデータ用１次キャッシュからのリードにおいてパリティエラーが発生しなかった際のパイプラインステージを示す図。
【図８】実施の形態１に係るデータ用１次キャッシュからのリードにおいてパリティエラーが発生した際のパイプラインステージを示す図。
【図９】実施の形態１に係るデータ用１次キャッシュへのライトにおいてパリティエラーが発生しなかった際のパイプラインステージを示す図。
【図１０】実施の形態１に係るデータ用１次キャッシュへのライトにおいてパリティエラーが発生した際のパイプラインステージを示す図。
【図１１】実施の形態２に係る情報処理装置の構成例を示す図。
【図１２】実施の形態３に係る情報処理装置の構成例を示す図。
【図１３】実施の形態４に係る情報処理装置の構成例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１〜４では、プロセッサの性能を最大限にし、コストを最小に抑えるためのプロセッサのパイプライン構成と、パリティチェック関連の機構とＥＣＣ関連の機構を説明する。
【００１１】
実施の形態１．
図１〜図１０を用いて、本実施の形態に係る情報処理装置を説明する。
図１は、本実施の形態に係る情報処理装置１００の構成例を示す。
【００１２】
図１において、１はプロセッサ、２はメモリ、３は命令用１次キャッシュ、４はデータ用１次キャッシュ、５は命令・データ共用の２次キャッシュである。
プロセッサ１はパイプライン処理を行う。
メモリ２と２次キャッシュ５は、ソフトエラー対策としてＥＣＣチェックビット（以下、ＥＣＣビットともいう）を付加している。
命令用１次キャッシュ３は、パリティのみを付加している。
なぜなら、命令用１次キャッシュの内容はプロセッサからのライトにより変更されることがないので、正しいデータが必ずメモリ２に入っていることが保障されている。
従って、命令用１次キャッシュ３でパリティエラーが検出された場合は、メモリ２から命令を取って来ることで、正しい命令を得ることができる。
一方、データ用１次キャッシュ４は、パリティビットとＥＣＣチェックビットの両方を付加する。
なぜなら、データ用１次キャッシュ４は、プロセッサからのデータ書き換えにより、２次キャッシュ５やメモリ２とは異なるデータとなること（このとき、このキャッシュラインはＤｉｒｔｙ状態という）があるため、メモリ２からデータを取ってきても、正しいデータを得られず、プロセッサは処理を正しく継続することができなくなる。
そのため、データ用１次キャッシュの１ビット誤りに対しては、訂正することができるＥＣＣチェックビットを付加することにする。
しかし、ＥＣＣチェックビットで誤り検出を行うと、プロセッサの高速動作が困難になるため、１ビット誤りがより短時間に検出できるパリティビットも付加することにする。
なお、データ用１次キャッシュ４がキャッシュ装置の例に相当する。
【００１３】
次に、データ用１次キャッシュ４の構成例を図２及び図３に示す。
図２及び図３は同じデータ用１次キャッシュ４を表しているが、図２はプロセッサ１からデータ用１次キャッシュ４に対してリード要求があった際のデータ用１次キャッシュ４内の要素間の信号の入出力関係を示しており、図３はプロセッサ１からデータ用１次キャッシュ４に対してライト要求があった際のデータ用１次キャッシュ４内の要素間の信号の入出力関係を示している。
このため、図２と図３で示されている構成要素は同じであるが、信号線の向き（矢印の向き）や入出力される信号の種類が図２と図３では異なっている。
なお、図が複雑になりすぎることを避けるため、説明上必ずしも重要度の高くない信号線は図２及び図３において図示を省略している。
【００１４】
図２及び図３において、１はプロセッサ、４はデータ用１次キャッシュ、５は２次キャッシュである。
データ用１次キャッシュ４は、タグアレイ４１、ヒット判定部４２、データアレイ４３、読み出し部４３１、書き込み部４３２、パリティチェック部４４、パリティビット生成部４５、チェックビットアレイ４６、読み出し部４６１、書き込み部４６２、誤り訂正部４７、ＥＣＣビット生成部４８から構成される。
【００１５】
図２及び図３に示される構成要素のうち、以下にて、主要な要素について説明を行う。
【００１６】
データアレイ４３は、データをパリティビットとともに記憶している。
チェックビットアレイ４６は、データアレイ４３において記憶されているデータのＥＣＣビットを記憶している。
【００１７】
パリティチェック部４４は、プロセッサ１からリード要求があった際（図２）に、リード要求の対象であるリード対象データと、当該リード対象データのパリティビットを、読み出し部４３１を介してデータアレイ４３から取得し、パリティビットを用いてリード対象データのパリティチェックを行う。
リード対象データにデータ誤りがなければ、リード対象データをプロセッサ１に出力する。
一方、リード対象データのデータ誤りを検出した場合は、プロセッサ１に対してパイプラインストールを指示するストール指示信号を出力する。
誤り訂正部４７は、パリティチェック部４４によりリード対象データのデータ誤りが検出された場合に、パイプラインストール中に、リード対象データのＥＣＣビットを読み出し部４６１を介してチェックビットアレイ４６から取得し、ＥＣＣビットを用いてリード対象データの誤り訂正を行い、誤り訂正後のリード対象データと、パイプラインストールの解除を指示するストール解除信号とをプロセッサ１に出力する。
【００１８】
また、パリティチェック部４４は、プロセッサ１からライト要求があった際（図３）に、データアレイ４３に既に記憶されているデータであってライト要求の対象であるライト対象データとマージされるマージ対象データと、当該マージ対象データのパリティビットを、読み出し部４３１を介してデータアレイ４３から取得する。
そして、パリティチェック部４４は、パリティビットを用いてマージ対象データのパリティチェックを行う。
マージ対象データにデータ誤りがなければ、パリティビット生成部４５を介して書き込み部４３２にマージ対象データを出力して、ライト対象データとマージさせる。
一方、マージ対象データのデータ誤りを検出した場合は、プロセッサ１に対してパイプラインストールを指示するストール指示信号を出力する。
誤り訂正部４７は、パリティチェック部４４によりマージ対象データのデータ誤りが検出された場合に、パイプラインストール中に、マージ対象データのＥＣＣビットを読み出し部４６１を介してチェックビットアレイ４６から取得し、ＥＣＣビットを用いてマージ対象データの誤り訂正を行う。
パリティビット生成部４５は、パイプラインストール中に、誤り訂正部４７による誤り訂正後のマージ対象データを入力し、パリティビットを生成する。
また、パリティチェック部４４は、パイプラインストール中に、パリティビット生成部４５により生成されたパリティビットを用いてマージ対象データにデータ誤りがないことを確認し、パイプラインストールの解除を指示するストール解除信号をプロセッサ１に出力する。
書き込み部４３２は、パリティチェック部４４によりマージ対象データにデータ誤りがないことが確認された際に、ライト対象データとマージ対象データとをマージしてデータアレイ４３に書き込むとともに、ライト対象データとマージ対象データとのマージデータのパリティビットをデータアレイ４３に書き込む。
ＥＣＣビット生成部４８は、パリティチェック部４４によりマージ対象データにデータ誤りがないことが確認された際に、ライト対象データとマージ対象データとのマージデータのＥＣＣビットを生成する。
書き込み部４６２は、ＥＣＣビット生成部４８により生成されたマージデータのＥＣＣビットをチェックビットアレイ４６に書き込む。
【００１９】
次に、図４に、データアレイ４３に格納されているデータとパリティビットと、チェックビットアレイ４６に格納されているＥＣＣチェックビットとの間の関連を示す。
【００２０】
データアレイ４３は、複数のラインを保持している。
例えば、キャッシュ容量３２ＫＢのとき、キャッシュラインサイズを３２バイトとすると、１Ｋ＝１０２４個のキャッシュラインを持つことになる。
図４は、そのうちの１ラインを示している。
ラインは、データ部とパリティビット部を持つ。
この例では、１ライン＝３２バイトで、１バイト（８ビット）ごとに、１ビットのパリティビットを持つ。
データの１バイト分のパリティチェックは、それに対応するパリティビットを１ビット読めば実行できる。
また、そのラインに対応してＥＣＣチェックビットを有する。
チェックビットアレイ４６の中に、それぞれのキャッシュラインに対応するＥＣＣチェックビットを３２ビットずつ持つ。
８バイト（６４ビット）のデータに８ビットのＥＣＣチェックビットを付加する構成とする。
６４ビットデータに８ビットのチェックビットを持つことで、１ビットの誤りを訂正し、２ビットの誤りを検出する方式は一般に知られている。
【００２１】
次にデータ用１次キャッシュ４の動作例を説明する。
まず、データ用１次キャッシュの読み出し動作から説明する。
図２がデータ読み出し動作における信号の入出力関係を示し、図５がデータ読み出し動作における動作フローを示す。
【００２２】
プロセッサ１から、リード要求がアドレスとともに発行されると（Ｓ１０１）、タグアレイ４１が、その該当アドレスにより読みだされ、ヒット判定部４２でキャッシュにヒットしたか否かを判定する（Ｓ１０２）。
ヒットしなかった場合（Ｓ１０３でミスの場合）は、２次キャッシュ５にデータを取りに行く（Ｓ１１１）。
ヒットした場合（Ｓ１０３でヒットの場合）は、データアレイのアドレスがデータアレイ４３に入力され、読み出し部４３１より、データがパリティビットとともに読みだされ、パリティチェック部４４でパリティの計算がなされる（Ｓ１０４）。
データに誤り（１ビットの反転）が発生していなければ（Ｓ１０５でＮＯ）、そのデータはプロセッサ１に送られる（Ｓ１１２）。
パリティ計算の結果、パリティエラーが検出されたら（Ｓ１０５でＹＥＳ）、パリティチェック部４４からプロセッサ１にパイプラインストールを指示する信号（ストール指示信号）が送信され（Ｓ１０６）、同時にＥＣＣのチェックビットアレイ４６にアレイのアドレスが入力され、読み出し部４６１よりＥＣＣチェックビットが読みだされる。
そして、１ビット誤りを含んだデータとＥＣＣチェックビットを誤り訂正部４７に入力し、誤り訂正部４７でデータが訂正されて（Ｓ１０７）、訂正されたデータが誤り訂正部４７からプロセッサ１に送信される（Ｓ１０８）。
同時に、訂正されたデータはパリティビット生成部４５に入力され、パリティビット生成部４５により正しいパリティが生成され、書き込み部４３２を経由し、データアレイ４３に書き戻す（Ｓ１０９）。
これらの処理が終了すれば、パイプラインストールの解除を指示するストール解除信号が誤り訂正部４７からプロセッサ１に送信され、パイプラインストールが解除される（Ｓ１１０）。
【００２３】
次に、データ用１次キャッシュへの書き込み動作を説明する。
図３がデータ書き込み動作における信号の入出力関係を示し、図６がデータ書き込み動作における動作フローを示す。
【００２４】
プロセッサ１から、ライト要求がアドレスとデータ（ライト対象データ）とともに発行されると（Ｓ２０１）、タグアレイ４１が、その該当アドレスにより読みだされ、ヒット判定部４２でキャッシュにヒットしたか否かを判定する（Ｓ２０２）。
ヒットしなかった場合（Ｓ２０３でミスの場合）は、データをアドレスとともに２次キャッシュ５に送信する（Ｓ２０８）。
ヒットした場合（Ｓ２０３でヒット）は、データアレイのアドレスがデータアレイ４３に入力され、読み出し部４３１より、データ（マージ対象データ）がパリティビットとともに読みだされ、パリティチェック部４４でパリティの計算がなされる。
このデータ（マージ対象データ）は、書き込みデータ（ライト対象データ）のアドレスを含む、ＥＣＣの観点でのひと塊りのデータである。この例では、８バイトのデータである。
データに誤り（１ビットの反転）が発生していなければ（Ｓ２０５でＮＯ）、そのデータ（マージ対象データ）と、ライトすべきデータ（ライト対象データ）がマージされ、マージされたデータ（マージデータ）に対するパリティビットがパリティビット生成部４５で生成され、書き込み部４３２がマージされたデータとパリティビットをデータアレイ４３に書き戻す（Ｓ２１０）。
また、ＥＣＣビット生成部４８で、そのマージされたデータ（マージデータ）に相当するＥＣＣチェックビットが生成される。
この例では６４ビットに８ビットのＥＣＣチェックビットを付加する構成であるので、１６ビットのライト要求がプロセッサ１より送られてきたとしても、データアレイ４３は６４ビット読み出し、１６ビットの変化データ（ライト対象データ）と４８ビットのもともとのデータ（マージ対象データ）をマージした合計した６４ビットのデータ（マージデータ）に対して、新しいＥＣＣチェックビットの８ビットが生成されることになる。
このＥＣＣチェックビットが書き込み部４６２によりチェックビットアレイ４６に書かれる（Ｓ２１１）。
【００２５】
パリティチェック部４４でパリティエラーが検出された場合（Ｓ２０５でＹＥＳ）は、パリティチェック部４４からプロセッサ１にパイプラインストールを指示する信号（ストール指示信号）が送信される（Ｓ２０６）。
そして、チェックビットアレイ４６とデータアレイ４３からのデータにより誤り訂正部４７によりデータを一旦正しく訂正し、また、パリティビット生成部４５が訂正されたデータから正しいパリティビットを生成し、書き込み部４３２が訂正されたデータとパリティビットをデータアレイ４３に書き戻す（Ｓ２０７）。
再度、データアレイ４３からデータ（マージ対象データ）が読み出され、パリティチェック部４４がパリティチェックを行う（Ｓ２０４）。
このときは、パリティエラーは検出されないので（Ｓ２０５でＮＯ）、パイプラインストールの解除を指示するストール解除信号がパリティチェック部４４からプロセッサ１に送信され、パイプラインストールが解除される（Ｓ２０９）。
次に、修正されたデータアレイ４３のデータ（マージ対象データ）と、ライトすべきプロセッサからのデータ（ライト対象データ）がマージされ、マージされたデータ（マージデータ）に対するパリティビットがパリティビット生成部４５で生成され、書き込み部４３２がマージされたデータとパリティビットをデータアレイ４３に書き戻す（Ｓ２１０）。
また、ＥＣＣビット生成部４８で、そのマージされたデータ（マージデータ）に相当するＥＣＣチェックビットが生成され、書き込み部４６２によりチェックビットアレイ４６に書き戻される（Ｓ２１１）。
【００２６】
以上の動作をパイプライン動作にあてはめたものが、図７〜図１０である。
パイプラインは、命令フェッチ、命令デコード、実行（データフェッチなど、命令の種類に応じて様々な機能を実現）、データライトの４ステージ構造であると想定する。
【００２７】
図７は、データ用１次キャッシュからリードしたときにパリティエラーが発生しなかったケースを示す。
図８は、データ用１次キャッシュからリードしたときにパリティエラーが発生したケースを示す。
図９は、データ用１次キャッシュへライトしたときにパリティエラーが発生しなかったケースを示す。
図１０は、データ用１次キャッシュへライトしたときにパリティエラーが発生したケースを示す。
【００２８】
図７において、対象としている命令は、ロード命令（ＬＤ命令）であり、データ用１次キャッシュ４にヒットし、このデータ用１次キャッシュ４からデータを取ってきて、プロセッサ１の汎用レジスタに格納する。
時刻＝１で、プロセッサ１は、ＬＤ命令を命令用１次キャッシュ３から取ってきて、時刻＝２で、命令がＬＤ命令であることを判定する。
時刻＝３で、データ用１次キャッシュ４でヒットし、データアレイ４３からデータをリードしてきて、パリティチェック部４４がパリティチェックを行う。
パリティエラーがないのでパイプラインのストール（停止）は、発生しない。
時刻＝４で、プロセッサ１は、データ用１次キャッシュ４から読みだされたデータを汎用レジスタに書き込む。
この例では、パイプラインのストールが発生しないので、後続の命令（時刻＝２で命令フェッチしている命令）もスムーズに処理が進む。
【００２９】
図８においても、図７と同様に、対象としている命令は、ロード命令であり、データ用１次キャッシュ４にヒットし、データ用１次キャッシュ４からデータを取ってきて、プロセッサ１の汎用レジスタに格納する。
ただし、キャッシュに誤り（ソフトエラー）があることを想定する。
時刻＝１で、プロセッサ１は、ＬＤ命令を命令用１次キャッシュ３から取ってきて、時刻＝２で、命令がＬＤ命令であることを判定する。
時刻＝３で、データ用１次キャッシュ４でヒットし、データアレイ４３からデータをリードしてきて、パリティチェック部４４がパリティチェックを行う。
ここで、キャッシュに誤りがありパリティエラーが検出されたので、プロセッサ１のパイプラインストールが発生する。
つまり、本命令は、データフェッチのステージに留まり、後続命令（時刻＝２で命令フェッチしている命令）は、命令デコードステージで停止する。
時刻＝４で、本命令に対応するデータ用１次キャッシュ４の動作は、チェックビットアレイ４６から該当チェックビットを読み出し、時刻＝５でチェックビットを使いデータを訂正し、プロセッサ１に送信するとともにストールを解除する。
時刻＝６で、本命令は、汎用レジスタにデータをライトし、後続命令は命令実行のステージを実行する。
このように、キャッシュに誤りがあるケースでは、パイプラインのストールが発生し、プロセッサの性能は低下する。
しかし、このようなエラーの発生頻度は一般的には十分低いため、システムの性能に影響を及ぼすことはない。
むしろ、ＥＣＣリードやＥＣＣ訂正の専用のパイプラインステージを設けていないので、プロセッサの実装コストや複雑さの増大を抑えられるメリットが大きい。
【００３０】
図９において、対象としている命令は、ストア命令（ＳＴ命令）であり、データ用１次キャッシュ４にヒットし、汎用レジスタのデータをこのキャッシュに格納する。
時刻＝１でプロセッサは、ＳＴ命令を命令用１次キャッシュ３から取ってきて、時刻＝２で、命令がＳＴ命令であることを判定する。
時刻＝３で、データ用１次キャッシュ４でヒットし、データアレイ４３からデータ（マージ対象データ）をリードしてきて、パリティチェック部４４がパリティチェックを行う。
パリティエラーがないのでパイプラインのストール（停止）は、発生しない。
また、同時に、汎用レジスタのデータをリードし、パリティビットを生成する。
例えば、８ビットのデータに１ビットのパリティが必要であれば、１６ビットのデータをキャッシュに書き戻すときには、２ビットのパリティビットを生成すればよい。
パリティビットは８入力のＸＯＲで生成できるので容易かつ高速に生成可能であるので、このステージで生成することは可能である。
一方、ＥＣＣのチェックビットの生成には、データアレイからのデータの読み出し、書き込むべきデータ（この場合、汎用レジスタの１６ビット）とのマージ、ＥＣＣのチェックビットの生成とチェックビットアレイへの書き戻しと、多くの処理が必要であるため、次のステージ（データライト）と、さらに次のステージ（ＥＣＣライト）を設け、これらの処理がストールなしに処理できるようにした。
時刻＝４では、データライトのステージで、ＥＣＣチェックビットを生成し、それと並行して該当データとパリティビットを１次キャッシュに書き戻す。
時刻＝５では、特別に設けられたＥＣＣチェックビットのライトのステージで、生成されたＥＣＣチェックビットをチェックビットアレイ４６に書き戻す。
この例では、パイプラインのストールが発生しないので、後続の命令（時刻＝２で命令フェッチしている命令）もスムーズに処理が進む。
汎用レジスタの内容をデータ用１次キャッシュに書き戻す処理は、通常のプログラムでは頻繁に発生する事象なので、後続命令をスムーズに処理させることは、情報処理装置の高性能化には必須である。
従って、コストをかけ、特別なステージを設けることは合理的である。
【００３１】
図１０において、対象としている命令は、ストア命令であり、データ用１次キャッシュ４にヒットし、汎用レジスタのデータをデータ用１次キャッシュ４に格納する。
但し、キャッシュに誤り（ソフトエラー）があることを想定する。
このケースは、図８の動作と図９の動作を合成したような動作となる。
時刻＝１で、プロセッサ１は、ＳＴ命令を命令用１次キャッシュ３から取ってきて、時刻＝２で、命令がＳＴ命令であることを判定する。
時刻＝３で、データ用１次キャッシュ４でヒットし、データアレイ４３からデータ（マージ対象データ）をリードしてきて、パリティチェック部４４がパリティチェックを行う。
ここで、キャッシュに誤りがありパリティエラーが検出されたので、プロセッサ１のパイプラインストールが発生する。
時刻＝４で、ＥＣＣのチェックビットアレイから該当するＥＣＣチェックビットを読みだす。
時刻＝５で、ＥＣＣのチェックビットを使いデータを訂正し、正しいパリティとともにデータをデータアレイ４３に格納する。
時刻＝６で、再び、データアレイ４３からデータリードを行い、パリティチェック部４４がパリティチェックを行う。今回は、パリティチェックの結果、パリティエラーにならないので、パイプラインストールを解除する。
時刻＝７で、データライトのステージで、ＥＣＣのチェックビットを生成し、それと並行して該当データとパリティビットをデータ用１次キャッシュ４に書き戻す。
時刻＝８で、特別に設けられたＥＣＣライトのステージで、生成されたチェックビットをチェックビットアレイに書き戻す。
このように、図８と同様に、キャッシュに誤りがあるケースでは、パイプラインのストールが発生し、プロセッサの性能は低下するが、このようなエラーの発生頻度は一般的には十分低いため、システムの性能に影響を及ぼすことはない。
むしろ、リード処理と同等の処理にすることにより、構造が単純になり、低コストで品質のよい情報処理装置が提供可能となる。
【００３２】
実施の形態２．
図１１に、別の構成の情報処理装置１００を示す。
図１１の情報処理装置１００は、２次キャッシュを持たない構成となっている。
図１１において、１はプロセッサ、２はメモリ、３は命令用の１次キャッシュ、４はデータ用の１次キャッシュである。
メモリ２は、ソフトエラー対策としてＥＣＣチェックビットを付加している。
命令用の１次キャッシュ３は、パリティビットのみを付加している。
データ用１次キャッシュ４は、パリティビットとＥＣＣチェックビットの両方を付加し、実施の形態１で説明した機能を有す。
【００３３】
実施の形態３．
図１２に、別の構成の情報処理装置１００を示す。
図１２の情報処理装置１００は、１次キャッシュを命令とデータで共用する構成である。
図１２において、１はプロセッサ、２はメモリ、４は命令・データ共用の１次キャッシュである。
メモリ２は、ソフトエラー対策としてＥＣＣチェックビットを付加している。
命令・データ共用１次キャッシュ４は、パリティビットとＥＣＣチェックビットの両方を付加し、実施の形態１で説明した機能を有す。
【００３４】
実施の形態４．
図１３に、別の構成の情報処理装置１００を示す。
図１３の情報処理装置１００は、マルチプロセッサの例である。
図１３において、１と１０１はプロセッサ、２はメモリ、３と１０３は命令用の１次キャッシュ、４と１０４はデータ用の１次キャッシュ、５と１０５は命令・データ共用の２次キャッシュである。
メモリ２と２次キャッシュ５、１０５は、ソフトエラー対策としてＥＣＣチェックビットを付加している。
命令用の１次キャッシュ３、１０３は、パリティビットのみを付加している。
データ用１次キャッシュ４、１０４は、パリティビットとＥＣＣチェックビットの両方を付加し、実施の形態１で説明した機能を有す。
【００３５】
以上の実施の形態１〜４では、
プロセッサとデータを送受信するキャッシュ装置において、
（ａ）データの書き換えが発生するデータ用キャッシュは
（ｂ）データのパリティをチェックするビットを持ち
（ｃ）データのＥＣＣをチェックするビットを持ち
（ｄ）データを読み出したときに、パリティをチェックする機能を持ち
（ｅ）パリティエラーが検出されたときに、プロセッサのパイプラインを停止させる手段を有し、
（ｆ）ＥＣＣを読み出し、ＥＣＣと（ｄ）により読みだされたデータから正しいデータを復元する手段を有し、
（ｇ）復元されたデータをプロセッサに供給手段を有し、
（ｈ）プロセッサに復元されたデータを供給したらパイプラインの停止を解除する手段を有する情報処理装置を説明した。
【００３６】
また、実施の形態１〜４では、
（ａ）プロセッサがデータをキャッシュ装置に書き戻すとき、そのデータのパリティを生成し、データにパリティビットを書き戻す機能を持ち、
（ｂ）同時にプロセッサのキャッシュラインからすべてのデータを順次読みだすためのパイプラインステージを有し、
（ｃ）書き戻されるデータをキャッシュラインのデータの一部として置き換える手段を有し、
（ｄ）ＥＣＣを再計算する手段を有し、
（ｅ）ＥＣＣを書き戻す手段を有し、
（ｆ）上記（ｃ）〜（ｅ）をパイプラインステージに割り当てた情報処理装置を説明した。
【符号の説明】
【００３７】
１  プロセッサ、２  メモリ、３  命令用１次キャッシュ、４  データ用１次キャッシュ、５  ２次キャッシュ、４１  タグアレイ、４２  ヒット判定部、４３  データアレイ、４４  パリティチェック部、４５  パリティビット生成部、４６  チェックビットアレイ、４７  誤り訂正部、４８  ＥＣＣビット生成部、１００  情報処理装置、４３１  読み出し部、４３２  書き込み部、４６１  読み出し部、４６２  書き込み部。
【図１】
2011257966.tif 000003
【図２】
2011257966.tif 000004
【図３】
2011257966.tif 000005
【図４】
2011257966.tif 000006
【図５】
2011257966.tif 000007
【図６】
2011257966.tif 000008
【図７】
2011257966.tif 000009
【図８】
2011257966.tif 000010
【図９】
2011257966.tif 000011
【図１０】
2011257966.tif 000012
【図１１】
2011257966.tif 000013
【図１２】
2011257966.tif 000014
【図１３】
2011257966.tif 000015