(57)【要約】【課題】アドレスエラー発生時であってもデータの意図しない上書きを回避すること【解決手段】制御ユニット１０は、ＣＰＵ１０から所望のアドレスへのリードリクエストまたはライトリクエストを受信する。制御ユニット１０は、メモリ３０に対する読み出し処理の実行中に所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、メモリ３０の書き込み処理を禁止する。そして、制御ユニット１０は、ＣＰＵ１０への応答を保留し、当該保留期間にメモリ３０空の読み出し処理の再実行を行う。【選択図】図１
2013156821.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、プロセッサから所望のアドレスへのリードリクエストまたはライトリクエストを受信し、前記メモリへのアクセスを制御する制御ユニットと、を備え、
前記制御ユニットは、前記メモリに対する読み出し処理の実行中に前記所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、前記メモリの書き込み処理を禁止し、前記プロセッサへの応答を保留し、該保留期間に前記読み出し処理の再実行処理を行う、データ処理装置。
【請求項２】
前記制御ユニットは、前記再実行処理の実行後に、前記アドレス誤り信号に基づいてアドレスエラーを所定回数だけ検出した場合に、前記プロセッサに対して恒久的なアドレスエラーの発生を通知する通知信号を供給することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記制御ユニットは、
前記メモリに対する読み出し処理のアドレス情報を保持するアドレス保持バッファと、
前記メモリに対する処理のステートを保持するステート情報レジスタと、
前記アドレス誤り信号の入力値と、前記プロセッサから発行されたリクエストの種別と、に応じて前記ステートを所定規則に従って変更するとともに、前記アドレス保持バッファの保持する前記アドレス情報を用いて前記再実行処理を行うステート処理部と、
前記アドレス誤り信号の入力値と、前記ステートと、前記プロセッサからのリクエスト種別と、に基づいて前記メモリの書き込み処理を禁止するか否かを指示する書き込み制御信号を生成する書き込み制御信号生成部と、
前記アドレス誤り信号の入力値、及び前記ステートに基づいて前記プロセッサへの応答信号を生成する応答信号送信部と、
を備えることを特徴とする請求項１または請求項２に記載のデータ処理装置。
【請求項４】
前記アドレス誤り信号、及び前記メモリから読み出したデータ誤りを示すデータエラー信号を受信し、受信した前記アドレス誤り信号及び前記データエラー信号に基づいてエラー内容を内部レジスタに記録するエラー記録部を更に備えることを特徴とする請求項１乃至請求項３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記メモリは、アドレス情報から算出されるアドレスパリティと、誤り訂正符号と、データと、を関連付けて保持し、
前記データ処理装置は、
前記リードリクエストから算出されたアドレスパリティと、前記メモリに格納された前記アドレスパリティと、を比較し、比較結果を前記アドレス誤り信号の一種である簡易アドレス誤り信号として出力する第１パリティチェック部と、
前記メモリに格納された前記アドレスパリティを前記誤り訂正符号により訂正したパリティと、前記リードリクエストから算出されたアドレスパリティと、を比較し、比較結果を前記アドレス誤り信号の一種であるアドレス誤り確定信号として出力する第２パリティチェック部と、を更に備えることを特徴とする請求項１乃至請求項４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記制御ユニットは、
前記簡易アドレス誤り信号がアドレスエラーを示す値の場合に、前記メモリから読み出されたデータを保持するリードレジスタを備え、
アドレスエラーを示す値を持つ前記簡易アドレス誤り信号が供給された後に、アドレスエラーが生じなかったことを示す前記アドレス誤り確定信号が供給された場合に、前記リードレジスタの保持する値を前記メモリからの読み出しデータとして前記プロセッサに供給し、前記保留期間を終了することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記メモリは、前記アドレスパリティをミラーリングして保持し、
前記第１パリティチェック部は、前記ミラーリングされたアドレスパリティが全て同じ値ではない場合に、アドレスエラーが生じたことを示す前記簡易アドレス誤り信号を出力することを特徴とする請求項５または請求項６に記載のデータ処理装置。
【請求項８】
前記ステートの種別は、
前記プロセッサからのリクエストを受信していない状態を示す"ＩＤＬＥ"と、
前記プロセッサからのリードリクエストを受信した状態を示す"Ｒｅａｄ"と、
前記プロセッサからのライトリクエストを受信した状態を示す"Ｗｒｉｔｅ"と、
前記リードリクエストの処理結果として前記アドレス誤り信号によりアドレスエラーが通知された状態を示す"Ｒｅ−Ｒｅａｄ１"と、
前記"Ｒｅ−Ｒｅａｄ１"の状態に遷移した後に前記再実行処理を行った状態を示す"Ｒｅ−Ｒｅａｄ２"と、
前記再実行処理において再度のアドレスエラーが検出された状態を示す"ＳＴＯＰ"と、を含み、
前記書き込み込み制御信号生成部は、
前記アドレス誤り信号がアドレスエラーを示す値であり、前記ステートが"Ｒｅａｄ"であり、かつ前記プロセッサからライトリクエストが発行されている場合、または、
前記ステートが"Ｒｅ−Ｒｅａｄ１"であり、かつ前記プロセッサからライトリクエストが発行されている場合、または、
前記アドレス誤り信号がアドレスエラーを示す値であり、前記ステートが"Ｒｅ−Ｒｅａｄ２"であり、かつ前記プロセッサからライトリクエストが発行されている場合、または、
前記ステートが"ＳＴＯＰ"であり、かつ前記プロセッサからライトリクエストが発行されている場合、
に前記書き込み制御信号を前記メモリへの書き込みを禁止する値として出力することを特徴とする請求項３に記載のデータ処理装置。
【請求項９】
請求項１乃至請求項８のいずれか１項に記載のデータ処理装置を搭載したマイクロコンピュータ。
【請求項１０】
プロセッサから所望のアドレスへのリードリクエストまたはライトリクエストを受信し、メモリへのアクセスを制御する制御ユニットであって、
前記メモリに対する読み出し処理の実行中に前記所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、前記メモリの書き込み処理を禁止し、前記プロセッサへの応答を保留し、該保留期間に前記読み出し処理の再実行処理を行う、制御ユニット。
【請求項１１】
プロセッサと、メモリと、前記プロセッサから所望のアドレスへのリードリクエストまたはライトリクエストを受信し、前記メモリへのアクセスを制御する制御ユニットと、を備え、
前記制御ユニットは、前記メモリに対する読み出し処理の実行中に前記所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、前記メモリの書き込み処理を禁止し、前記プロセッサへの応答を保留し、該保留期間に前記読み出し処理の再実行処理を行う、データ処理装置。
【請求項１２】
プロセッサからメモリへのアクセスを制御するメモリ制御方法であって、
前記メモリからのデータ読み出し処理の実行中に所望のアドレスと異なるアドレスへのアクセスを検出した場合、後続するメモリ書き込み処理を禁止し、前記プロセッサの後続リクエストの進行を中断する保留期間に移行し、該保留期間に前記読み出し処理の再実行処理を行う、メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、制御ユニット、メモリ制御方法に関し、特にメモリ読み出し時のアドレスエラーに対応するデータ処理装置、制御ユニット、メモリ制御方法に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータ（またはマイクロコントローラ、以下、マイコンとも記載する。）内の各種処理に関する安全性の確保の要求が高まっている。すなわち、マイコン内で生じた各種のエラーを適切に検出し、検出したエラーに適切に対応することが求められている。
【０００３】
マイコン内のメモリで記憶可能なデータ量は、近年増大している。これにより、当該メモリに関するエラー発生率が高くなる傾向にある。そのため、メモリのエラー検出率の向上、及び検出したエラーに対する適切な処理が、当該メモリを含むシステムの耐故障性を高めるために重要となる。特に、メモリに関するエラーのうち、メモリアドレスに関する障害は、システムに致命的な障害をもたらす。そのため、メモリアドレスに関するエラーの検出、及び検出したエラーに対する適切な処理が、システム全体のアベイラビリティの向上に必要不可欠である。
【０００４】
以下、上述のメモリアドレスに関する障害検出に関連する技術について説明する。特許文献１には、メモリアドレスエラーを検出可能な記憶制御装置が開示されている。当該記憶制御装置では、データに対するチェックビットを生成している。一般に、チェックビットには、ｎビットの誤り訂正を行う際に使用されないビットが含まれている。そこで、当該記憶制御装置では、チェックビットに対し、メモリアクセス時のアドレスから生成したパリティビット（アドレスパリティ）を挿入する。そして、メモリへの書き込み時にデータ、及びチェックビットを書き込んでいる。当該記憶制御装置では、メモリから読み出したデータ、チェックビット、及びアドレスパリティを用いてデータ誤りの検出に加えて、メモリアドレスエラーを検出している。
【０００５】
特許文献２には、ＣＰＵからの指示に従ってバッテリバックアップされたＲＡＭチップを選択する選択回路が開示されている。当該選択回路は、電源状態を監視して、選択するＲＡＭチップを制御している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭５７−７１５９９号公報
【特許文献２】特開平２−１０１６９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の記憶制御装置では、メモリ読み出し時のアドレスエラーを検出することができる。しかしながら、特許文献１に記載の記憶制御装置では、アドレスエラーが生じた読み出し処理に後続するデータ書き込み処理を抑止することができない。このため、アドレスエラーにより読み出すことが出来なかったデータが後続するデータ書き込み処理により上書きされてしまうことがある。これにより、回復不可能な障害が発生する可能性がある。ここで、アドレスエラーを検出した時点でプロセッサが処理を終了したとしても、プロセッサは、書き込み処理の発行が終了していることが一般的である。そのため、上述の上書き処理を回避することが出来ない。
【０００８】
図２２を参照して、特許文献１に記載の記憶制御装置をはじめとする他の装置では、問題が生じるケースについて詳細に説明する。はじめに、プロセッサは、メモリ内のアドレスＡのデータの読み出しを行うために、メモリアクセス信号を送出する。ここで、メモリアクセス命令内のアドレス情報がα線等の影響によりアドレスＸに書き換わることがあり得る（メモリアドレスエラー）。これにより、プロセッサは、誤ってアドレスＸに格納されているデータＤを読み出す（図２２（１））。なお、当該メモリアドレスエラーは、読み出し処理時におけるビット反転等の一時的なものとする。
【０００９】
アドレスＡに対するメモリ読み出し処理のアドレスエラーは、特許文献１に記載の技術や他の類似技術を用いることにより検出される（図２２（２）、アドレスエラー検出）。アドレスエラーは、検出後にＣＰＵに対して通知される（図２２（３））。
【００１０】
しかし、ＣＰＵは、アドレスＡに対するメモリ読み出し処理に続いて、アドレスＡに対するメモリ書き込み処理を実行する（図２２（４））。前述したように、ＣＰＵへのアドレスエラーの通知は、一般的にメモリ書き込み処理の開始の後となる。図２２では、アドレスエラーの検出時には、ＣＰＵからのデータ書き込み処理が開始している。そのため、アドレスＡには、データ書き込み処理によりデータＣが書き込まれる。そのため、タイミングＴ１において読み出すべきデータ（データＢ）を復元することができなくなる。
【００１１】
なお、特許文献２に記載の選択回路は、上述したようなメモリアドレスに関するエラーを検出することができない。すなわち、特許文献２に記載の選択回路は、アドレス伝送路及びＲＡＭ内のアドレス線においてα線等の影響によるエラーに対応することが出来ない。
【００１２】
すなわち、上述した技術では、所望のアドレスとは異なるアドレスにアクセスするアドレスエラーがメモリ読み出し時に生じた場合に、後続するメモリ書き込みによって所望のアドレスに対して書き込みが生じてしまう。これにより、所望のアドレスに書き込み前に格納されていたデータを読み出すことが出来ないという問題が生じる。
【課題を解決するための手段】
【００１３】
本発明の第１の態様は、データ処理装置を含む。当該データ処理装置は、メモリと、プロセッサから所望のアドレスへのリードリクエストまたはライトリクエストを受信し、前記メモリへのアクセスを制御する制御ユニットと、を備え、前記制御ユニットは、前記メモリに対する読み出し処理の実行中に前記所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、メモリ書き込み処理を禁止し、前記プロセッサへの応答を保留し、該保留期間に前記読み出し処理の再実行処理を行う、ものである。
【００１４】
本発明の第２の態様は、制御ユニットを含む。当該制御ユニットは、プロセッサから所望のアドレスへのリードリクエストまたはライトリクエストを受信し、メモリへのアクセスを制御する制御ユニットであって、前記メモリに対する読み出し処理の実行中に前記所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、メモリ書き込み処理を禁止し、前記プロセッサへの応答を保留し、該保留期間に前記読み出し処理の再実行処理を行う、ものである。
【００１５】
本発明の第３の態様は、データ処理装置を含む。当該データ処理装置は、プロセッサと、メモリと、前記プロセッサから所望のアドレスへのリードリクエストまたはライトリクエストを受信し、前記メモリへのアクセスを制御する制御ユニットと、を備え、前記制御ユニットは、前記メモリに対する読み出し処理の実行中に前記所望のアドレスと異なるアドレスへのアクセスを示す値のアドレス誤り信号を受信した場合、メモリ書き込み処理を禁止し、前記プロセッサへの応答を保留し、該保留期間に前記読み出し処理の再実行処理を行う、ものである。
【００１６】
本発明の第４の態様は、メモリ制御方法を含む。当該メモリ制御方法は、プロセッサからメモリへのアクセスを制御するメモリアクセス制御方法であって、前記メモリからのデータ読み出し処理の実行中に所望のアドレスと異なるアドレスへのアクセスを検出した場合、後続するメモリ書き込み処理を禁止し、前記プロセッサの後続リクエストの進行を中断する保留期間に移行し、該保留期間に前記読み出し処理の再実行処理を行う、ものである。
【００１７】
本発明では、メモリの読み出し時のアドレスエラー検出時に、メモリ内での書き込み処理を禁止し、メモリ読み出しの再実行を行う。これにより、メモリへの再読み出し処理が行われる前にデータが上書きされることを回避することができる。また、メモリへの再読み出しを行う際にプロセッサへの応答を保留するため、プロセッサが後続の処理を進めることを回避することができる。
【発明の効果】
【００１８】
本発明では、アドレスエラー発生時であってもデータの意図しない上書きを回避することができるデータ処理装置、制御ユニット、メモリ制御方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１にかかるデータ処理装置の全体構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるデータ処理装置の構成を示すブロック図である。
【図３】本発明の実施の形態１にかかるメモリ３０の内部構成を示す概念図である。
【図４】本発明の実施の形態１にかかる制御ユニット１０の構成を示すブロック図である。
【図５】本発明の実施の形態１にかかる再処理実行部１１０の構成を示すブロック図である。
【図６】本発明の実施の形態１にかかるステートの遷移を示すステートマシン図である。
【図７】本発明の実施の形態１にかかる各処理部の出力信号の遷移条件を示す図である。
【図８】本発明の実施の形態１にかかるエラー記録レジスタ１１１０の構成を示す図である。
【図９】本発明の実施の形態１にかかるデータ処理装置の動作を示すタイミングチャートである。
【図１０】本発明の実施の形態１にかかるデータ処理装置の動作を示すタイミングチャートである。
【図１１】本発明の実施の形態１にかかるデータ処理装置の動作を示すタイミングチャートである。
【図１２】本発明の実施の形態２にかかるデータ処理装置の構成を示すブロック図である。
【図１３】本発明の実施の形態２にかかるメモリ３０の内部構成を示す概念図である。
【図１４】本発明の実施の形態２にかかる再処理実行部１１０の構成を示すブロック図である。
【図１５】本発明の実施の形態２にかかるステートの遷移を示すステートマシン図である。
【図１６】本発明の実施の形態２にかかるステートの遷移を示すステートマシン図である。
【図１７】本発明の実施の形態２にかかる各処理部の出力信号の遷移条件を示す図である。
【図１８】本発明の実施の形態２にかかるデータ処理装置の動作を示すタイミングチャートである。
【図１９】本発明の実施の形態２にかかるデータ処理装置の動作を示すタイミングチャートである。
【図２０】本発明の実施の形態２にかかるデータ処理装置の動作を示すタイミングチャートである。
【図２１】本発明の実施の形態１にかかるデータ処理装置の動作と、本発明の実施の形態２にかかるデータ処理装置の動作と、を示す概念図である。
【図２２】一般的なデータ処理装置の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００２０】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態１について説明する。図１は、本実施の形態にかかるデータ処理装置の構成を示すブロック図である。当該データ処理装置は、例えばマイクロコンピュータ内に搭載される。
【００２１】
当該データ処理装置は、制御ユニット１０と、ＣＰＵ（Central Processing Unit）２０と、メモリ３０と、パリティ生成部４０と、ＥＣＣ（誤り訂正符号）生成部５０と、フリップフロップ（ＦＦ）６０と、ＥＣＣデコーダ７０と、を備える。
【００２２】
制御ユニット１０は、ＣＰＵ２０からメモリ３０へのデータ書き込み、ＣＰＵ２０からメモリ３０のデータ読み出しを制御する処理部である。制御ユニット１０の詳細な構成及び動作は、図２、図４等を参照して後述する。
【００２３】
ＣＰＵ２０は、各種プログラム等を実行する中央演算装置である。ＣＰＵ２０は、制御ユニット１０を介して、メモリ３０へのデータ書き込み、またはメモリ３０からのデータ読み出しを行う。ＣＰＵ２０は、制御ユニット１０からの恒久的なアドレスエラーを示す第２アドレスエラー信号を受信した（第２アドレスエラー信号がハイレベルである）場合に、当該エラーに応じた処理を実行する。図２は、ＣＰＵ２０が発行する信号、受信する信号の詳細、及び他の処理部を記載したブロック図である。以下、図２を参照して、ＣＰＵ２０の送受信する信号、及び他の処理部の詳細について説明する。
【００２４】
ＣＰＵ２０は、リードリクエスト、またはライトリクエストを発行する。各リクエストには、リードリクエストであるかライトリクエストであるかを示すリクエスト種別が含まれる。リードリクエストは、読み出しアドレスを示すアドレス情報を含む。ライトリクエストには、書き込み先アドレスを示すアドレス情報、及びライトデータを含む。ＣＰＵ２０は、恒久的なアドレスエラーが生じた場合に第２アドレスエラー信号を受信する。ＣＰＵ２０は、リードリクエストの応答としてＡＣＫ（応答信号）を受信する。ＣＰＵ２０は、ＡＣＫ（応答信号）としてロウレベルの信号を受信した場合、読み出し処理が正常に行われなかったことを認識する。この場合、ＣＰＵ２０は、応答の保留が生じたものとして、ＡＣＫがハイレベルとなるまで当該リードリクエストの後続リクエスト（たとえばライトリクエスト）を再度発行する。
【００２５】
パリティ生成部４０は、ＣＰＵ２０が発行したリクエスト（リードリクエスト、ライトリクエスト）に含まれるアドレス情報からアドレスパリティを生成し、当該アドレスパリティを制御ユニット１０及びＥＣＣ生成部５０に供給する。
【００２６】
ＥＣＣ生成部５０は、ＣＰＵ２０が発行したライトリクエストに含まれるライトデータ、及びパリティ生成部４０から供給されたアドレスパリティを用いてＥＣＣ（以下、誤り訂正符号、チェックビットとも呼称する。以下、チェックビットと記載する。）を生成する。ここで、ＥＣＣ生成部５０は、特許文献１と同様に、誤り訂正に用いるチェックビットの空きビットにアドレスパリティの情報を埋め込んだチェックビットを生成する。ＥＣＣ生成部５０は、生成したチェックビットを制御ユニット１０に供給する。
【００２７】
メモリ３０は、各種データを保持する記憶装置である。メモリ３０は、内部にアドレスデコーダ３１０と、データ記憶部３２０と、を有する。アドレスデコーダ３１０は、ＣＰＵ２０から発行されたリクエストのアドレス情報をデコードしてデータ記憶部３２０に供給する。データ記憶部３２０は、例えばＲＡＭ（Random Access Memory）セルにより構成される。データ記憶部３２０は、図３に示すような形態でデータを保持する。すなわち、データ記憶部３２０は、チェックビット、データをアドレス毎に保持する。データ記憶部３２０は、制御ユニット１０から書き込み制御信号（後述）が供給されている場合（書き込み制御信号がロウレベルの場合）、データの書き込みを抑止する。リードリクエストを受信した場合、データ記憶部３２０は、当該リクエストに含まれるアドレス情報を基にチェックビット、及びデータを読み出してＥＣＣデコーダ７０に供給する。
【００２８】
フリップフロップ６０は、パリティ生成部４０が生成したアドレスパリティを制御ユニット１０を介して受信し、当該アドレスパリティをＥＣＣデコーダ７０に供給する。フリップフロップ６０は、ＥＣＣデコーダ７０のデータ取り込みのタイミングの調整に用いられる。
【００２９】
ＥＣＣデコーダ７０は、フリップフロップ６０から供給されたアドレスパリティと、メモリ３０から供給されたチェックビット及びデータと、を受信し、データエラーの検出、データ生成、及びアドレスエラーの検出を行う。当該アドレスエラーの検出及びデータ誤りの検出処理は、特許文献１と略同一の手法（または既知の手法）により行うことができる。
【００３０】
データエラー及びアドレスエラーが生じなかった場合、ＥＣＣデコーダ７０は、データ記憶部３２０から読み出したデータをＣＰＵ２０に供給する。データエラーが生じた場合、ＥＣＣデコーダ７０は、データエラー信号をＣＰＵ２０に供給する。アドレスエラーが生じた場合、ＥＣＣデコーダ７０は、第１アドレスエラー信号を制御ユニット１０に供給する（第１アドレスエラー信号をハイレベルとする）。
【００３１】
続いて、制御ユニット１０の詳細な構成について説明する。図４は、制御ユニット１０の構成を示すブロック図である。制御ユニット１０は、再処理実行部１１０と、アドレス保持バッファ１２０と、を有する。
【００３２】
アドレス保持バッファ１２０は、リードリクエストのアドレス情報、及びアドレスパリティを順次保持するバッファである。アドレス保持バッファ１２０の保持する情報（リードリクエストのアドレス情報、及びアドレスパリティ）は、再処理実行部１１０によって更新が制御される。詳細には再読み込みを行う状態（後述のステート"Ｒｅ−Ｒｅａｄ１"、"Ｒｅ−Ｒｅａｄ２"）の場合には、値の更新が行われない。すなわち、アドレス保持バッファ１２０は、リードリクエストの再実行を行う場合には、実行が失敗したリードリクエストにかかるアドレス情報、及びアドレスパリティを保持し続ける。
【００３３】
再処理実行部１１０の詳細な構成を図５に示す。再処理実行部１１０は、ステート情報レジスタ１１０１と、ステート処理部１１０２と、恒久エラー信号送信部１１０３と、応答信号送信部１１０４と、書き込み制御信号生成部１１０５と、エラー記録部１１０６と、を備える。
【００３４】
ステート情報レジスタ１１０１は、リクエスト種別、及び第１アドレスエラー信号に応じて変化するステートを保持するレジスタである。ステート処理部１１０２は、リクエスト種別、及び第１アドレスエラー信号を受信し、当該受信した情報に応じてステート情報レジスタ１１０１の保持するステートを変化させる。各ステートの内容、及びステートの変化を図６を参照して説明する。
【００３５】
ステート"ＩＤＬＥ"は、ＣＰＵ２０からのリクエストを受信していない状態である。ステート"Ｒｅａｄ"は、ＣＰＵ２０からのリードリクエストを受信した状態である。ステート"Ｗｒｉｔｅ"は、ＣＰＵ２０からのライトリクエストを受信した状態である。ステート"Ｒｅ−Ｒｅａｄ１"は、リードリクエストの実行結果として、第１アドレスエラー信号がハイレベル（アドレスエラーが生じた）となった場合の状態である。ステート"Ｒｅ−Ｒｅａｄ１"の場合、リードリクエストの再実行を行う。ステート"Ｒｅ−Ｒｅａｄ２"は、ステート"Ｒｅ−Ｒｅａｄ１"においてリード処理の再実行を行った後の状態を示す。ステート"ＳＴＯＰ"とは、リードリクエストの再実行においても第１アドレスエラー信号がハイレベル（アドレスエラーが生じた）となった場合の状態である。
【００３６】
ステート処理部１１０２は、図６に示すように、入力されたリクエストの種別、及び第１アドレスエラー信号の値、に応じてステートを変化させる。例えば、ステート"Ｒｅａｄ"の場合に、第１アドレスエラー信号がハイレベルとなった場合、ステート処理部１１０２は、ステート"Ｒｅ−Ｒｅａｄ１"に遷移させる。
【００３７】
再び、図５を参照する。ステート処理部１１０２は、ステートの書き換えに加え、ステート"Ｒｅ−Ｒｅａｄ１"の場合にリードリクエストを再発行するように制御を行う。この際に、ステート処理部１１０２は、アドレス保持バッファ１２０に格納されたアドレス及びアドレスパリティを用いてリードリクエストをメモリ３０に対して再発行する。ステート処理部１１０２は、ステート"Ｒｅａｄ"の際に受信したアドレス情報とアドレスパリティをアドレス保持バッファ１２０に格納する。ステート処理部１２０は、ステート"Ｒｅ−Ｒｅａｄ１"、"Ｒｅ−Ｒｅａｄ１"、"ＳＴＯＰ"の場合にはアドレス保持バッファ１２０の更新を停止する（値を保持し続ける）。
【００３８】
恒久エラー信号送信部１１０３には、第１アドレスエラー信号が供給される。恒久エラー信号送信部１１０３は、ステート情報レジスタ１１０１の保持するステートを読み出す。恒久エラー信号送信部１１０３は、第１アドレスエラー信号の値と、ステートの値と、に応じて第２アドレスエラー信号を生成し、当該第２アドレスエラー信号をＣＰＵ２０に供給する。
【００３９】
恒久エラー信号送信部１１０３は、以下の条件のいずれかを満たす場合に第２アドレスエラー信号をハイレベルに設定し、その他の場合にはロウレベルに設定する。
- ステート＝"Ｒｅ−Ｒｅａｄ２"  かつ  第１アドレスエラー信号がハイレベル
- ステート＝"ＳＴＯＰ"
【００４０】
応答信号送信部１１０４には、第１アドレスエラー信号が供給される。応答信号送信部１１０４には、ステート情報レジスタ１１０１の保持するステートを読み出す。応答信号送信部１１０４は、第１アドレスエラー信号の値と、ステートの値と、に応じてＡＣＫ（応答信号）を生成し、当該応答信号をＣＰＵ２０に供給する。
【００４１】
応答信号送信部１１０４は、以下の条件のいずれかを満たす場合にＡＣＫ（応答信号）をハイレベルに設定し、その他の場合にはロウレベルに設定する。
- ステート＝"Ｗｒｉｔｅ"
- ステート＝"Ｒｅａｄ"  かつ  第１アドレスエラー信号がロウレベル
- ステート＝"Ｒｅ−Ｒｅａｄ２"  かつ  第１アドレスエラー信号がロウレベル
【００４２】
書き込み制御信号生成部１１０５は、中間信号生成部１１０７と、書き込み検出部１１０８と、論理積回路１１０９と、を備える。書き込み制御信号生成部１１０５は、メモリ３０の書き込み処理の可否を通知する書き込み制御信号を生成し、生成した書き込み制御信号をメモリ３０に供給する。書き込み制御信号は、ハイレベルの場合にメモリ３０のデータ書き込みを許可し、ロウレベルの場合にメモリ３０のデータ書き込みを禁止する信号である。書き込み制御信号は、書き込み処理の開始時にハイレベルとなるが、書き込み制御信号生成部１１０５の生成した値により上書きされる（書き込み制御信号生成部１１０５がロウレベルの信号を出力する場合にはロウレベルに切り替わる）。
【００４３】
中間信号生成部１１０７には、第１アドレスエラー信号が供給される。中間信号生成部１１０７は、ステート情報レジスタ１１０１の保持するステートを読み出す。中間信号生成部１１０７は、以下の条件のいずれかを満たす場合にハイレベルとなる中間信号を生成する。中間信号生成部１１０７は、生成した中間信号を論理積回路１１０９に供給する。
‐ステート＝"Ｒｅａｄ"  かつ  第１アドレスエラー信号がハイレベル
‐ステート＝"Ｒｅ−Ｒｅａｄ１"
‐ステート＝"Ｒｅ−Ｒｅａｄ２"  かつ  第１アドレスエラー信号がハイレベル
‐ステート＝"ＳＴＯＰ"
【００４４】
書き込み検出部１１０８には、リクエスト種別が供給される。書き込み検出部１１０８は、リクエスト種別がライトリクエストである場合にのみハイレベルとなる書き込み検出信号を生成し、当該書き込み制御信号を論理積回路１１０９に供給する。なお、図７に上述の各信号がハイレベルとなる条件をまとめて記載する。
【００４５】
論理積回路１１０９は、中間信号（中間信号生成部１１０７の出力信号）の反転信号と、書き込み検出信号（書き込み検出信号１１０８の出力信号）と、の論理積を書き込み制御信号としてメモリ３０に供給する。
【００４６】
エラー記録部１１０６は、メモリ３０の操作（読み出し、書き込み）の際に生じた各種エラーを記録する処理部である。エラー記録部１１０６は、内部にエラー記録レジスタ１１１０を有する。エラー記録部１１０６には、第１アドレスエラー信号、及びデータエラーが供給される。なお、エラー記録部１１０６には、エラー（メモリ３０の読み出し時のエラー、メモリ３０への書き込み時のエラー）発生時の対象アドレス（書き込み対象アドレス、読み出し対象アドレス）の情報も供給される（図示せず）。エラー記録部１１０６は、これらの情報を基に、エラー記録レジスタ１１１０にエラーの履歴を書き込む。
【００４７】
図８は、エラー記録レジスタ１１１０の構成の一例を示す概念図である。エラー種別とは、エラーの種別を示し、"データエラー"（書き込み時に生じたデータエラー）または"アドレスエラー"が書き込まれる。対象アドレスとは、エラー発生時にメモリ３０の書き込みまたは読み出し対象となったアドレスを示す。
【００４８】
なお、エラー記録レジスタ１１１０は、これ以外の情報を保持しても良いことは勿論である。例えば、エラーが発生した時間を示す情報を合わせて保持しても良いことは勿論である。
【００４９】
続いて、本実施の形態にかかるデータ処理装置の動作について図９〜図１１のタイミングチャートを参照して説明する。図９は、アドレスエラーが生じなかった場合の各処理部の出力信号を示すタイミングチャートである。
【００５０】
タイミングＴ１において、ＣＰＵ２０は、リードリクエストを発行する。リードリクエストは、制御ユニット１０を介してメモリ３０に供給される。リクエスト種別がリードリクエストであるため、タイミングＴ２において、制御ユニット１０内のステートは、"ＩＤＬＥ"から"Ｒｅａｄ"に遷移する（図６）。
【００５１】
タイミングＴ２においてステートが"Ｒｅａｄ"となるため、制御ユニット１０は、内部のアドレス保持バッファ１２０に当該リードリクエストのアクセス先であるアドレス情報（アドレスＡ）及びアドレスパリティを格納する。タイミングＴ２において、ＣＰＵ２０は、ライトリクエストを発行する。タイミングＴ２において、リードリクエスト（アドレスＡ）に対応するデータが読み出される。この際、正しいアドレス（アドレスＡ）のデータ（データＢ）が読み出されているため、第１アドレスエラー信号は、ロウレベルとなる。第１アドレスエラー信号がロウレベルであるため、制御ユニット１０は、読み出したデータ（データＢ）に対応するＡＣＫ（応答信号）としてハイレベルをＣＰＵ２０に供給する（図７）。そして、タイミングＴ２において、ＣＰＵ２０が発行したライトリクエストの処理が継続して行われる。リクエスト種別がライトリクエストであり、第１アドレスエラー信号がロウレベルであるため、タイミングＴ２において、制御ユニット１０内のステートは、"Ｒｅａｄ"から"Ｗｒｉｔｅ"に遷移する。
【００５２】
タイミングＴ３において、ステートが"Ｗｒｉｔｅ"であるため、制御ユニット１０は、アドレス保持バッファ１２０に保持していた情報（アドレスＡ及びアドレスパリティ）を破棄する。
【００５３】
次に、図１０を参照して、一時的なアドレスエラーが生じた場合の各処理部の出力信号について説明する。タイミングＴ１において、ＣＰＵ２０は、リードリクエストを発行する。リクエスト種別がリードリクエストであるため、タイミングＴ２において、制御ユニット１０内のステートは、"ＩＤＬＥ"から"Ｒｅａｄ"に遷移する。
【００５４】
図９と同様に、アドレス保持バッファ１２０には、タイミングＴ２においてリードリクエストのアクセス先であるアドレス情報（アドレスＡ）及びアドレスパリティが格納される。タイミングＴ２において、ＣＰＵ２０は、ライトリクエストを発行する。タイミングＴ２において、リードリクエストに対するデータがメモリ３０から読み出される。ここで、リードリクエストのアドレス情報がアドレスＡであるにもかかわらず、アドレスＸからデータが読み出されている。そのため、第１アドレスエラー信号は、ハイレベルとなる。すなわち、アドレスエラーが検出されている。制御ユニット１０内の中間信号生成部１１０７が生成する中間信号は、ステートが"Ｒｅａｄ"であり、第１アドレスエラー信号がハイレベルであるため、ハイレベルに切り替わる（図７）。書き込み検出部１１０８は、タイミングＴ２においてライトリクエストが発行されているためハイレベルを出力する。論理積回路１１０９は、中間信号の反転信号と書き込み検出信号１１０８の出力信号の論理積を書き込み制御信号として出力する。そのため、書き込み処理の開始時にハイレベルとなった書き込み制御信号は、中間信号がハイレベルとなったタイミングでロウレベルに切り替わる。これにより、メモリ３０への書き込みが抑制される。さらに、制御ユニット１０内の応答信号送信部１１０４は、ステートが"Ｒｅａｄ"であり、第１アドレスエラー信号がハイレベルであるため、ＡＣＫ（応答信号）としてロウレベルをＣＰＵ２０に供給する。
【００５５】
タイミングＴ３において、制御ユニット１０内のステートは、"Ｒｅ−Ｒｅａｄ１"に変更される。制御ユニット１０は、アドレス保持バッファ１２０に保持したアドレス情報（アドレスＡ）を用いてリード処理を再実行する。制御ユニット１０は、図６に示したステートマシンの遷移に応じて、タイミングＴ４におけるステートを"Ｒｅ−Ｒｅａｄ２"に変更する。
【００５６】
タイミングＴ４において、リードリクエストに対応するデータがメモリ３０から読み出される。図１０の例では、アドレスＡからデータＢが読み出されることにより、アドレスエラーが生じない。この場合、第１アドレスエラー信号は、ロウレベルのままである。そのため、タイミングＴ４において、制御ユニット１０内の中間信号生成部１１０７は、第１アドレスエラー信号がロウレベルであるため、出力信号をロウレベルとする（図７）。これにより、書き込み処理時にハイレベルとなる書き込み制御信号は、そのままハイレベルとなる。
【００５７】
タイミングＴ５において、制御ユニット１０内のステートは、図６に示すステートマシンの遷移に従い、"Ｗｒｉｔｅ"に変更される。これにより、タイミングＴ５からメモリ３０への書き込み処理が行われる。さらに、制御ユニット１０内の応答信号送信部１１０４は、ステートが"Ｗｒｉｔｅ"に切り替わったことにより、ＡＣＫ（応答信号）をハイレベルに切り替えてＣＰＵ２０に供給する。タイミングＴ５において、ステートが"Ｗｒｉｔｅ"であるため、制御ユニット１０は、アドレス保持バッファ１２０に保持していた情報（アドレスＡ及びアドレスパリティ）を破棄する。
【００５８】
次に、図１１を参照して、恒久的なアドレスエラーが生じた場合の各処理部の出力信号について説明する。タイミングＴ１〜Ｔ３までは、図１０と同様であるため、詳細な説明は省略する。
【００５９】
タイミングＴ４における制御ユニット１０のステートは、"Ｒｅ−Ｒｅａｄ２"である。タイミングＴ４において、リードリクエストに対応するデータがメモリ３０から読み出される。図１１の例では、この読み出しの際に再度アドレスＸからデータを読み出してしまい、アドレスエラーが再度発生する。この場合、第１アドレスエラー信号は、ハイレベルとなる。制御ユニット１０内の中間信号生成部１１０７が生成する中間信号は、ステートが"Ｒｅ−Ｒｅａｄ２"であり、第１アドレスエラー信号がハイレベルであるため、ハイレベルに切り替わる（図７）。書き込み検出部１１０８は、タイミングＴ４においてライトリクエストが発行されているためハイレベルを出力する。論理積回路１１０９は、中間信号の反転信号と書き込み検出信号１１０８の出力信号の論理積を書き込み制御信号として出力する。そのため、書き込み制御信号は、中間信号がハイレベルとなったタイミングでロウレベルに切り替わる。これにより、メモリ３０への書き込みが抑制される。
【００６０】
さらに、制御ユニット１０内の応答信号送信部１１０４は、ステートが"Ｒｅ−Ｒｅａｄ２"であり、第１アドレスエラー信号がハイレベルであるため、ＡＣＫ（応答信号）としてロウレベルをＣＰＵ２０に供給する。ステートが"Ｒｅ−Ｒｅａｄ２"の状態において、第１アドレスエラー信号がハイレベルとなったため、制御ユニット１０内のステートは、タイミングＴ５において"ＳＴＯＰ"となる。
【００６１】
続いて、本実施の形態の効果について説明する。上述のように、制御ユニット１０は、メモリ３０の読み出し時のアドレスエラーの検出時に（第１アドレスエラー信号がハイレベルの場合に）、書き込み制御信号を抑止する（ロウレベルにする）ことによりメモリ３０への書き込み処理を禁止している。これにより、メモリ３０への再読み出し処理が行われる前にデータが上書きされることを回避することができる。さらに、制御ユニット１０は、ＣＰＵ２０への応答を保留（ＡＣＫ信号をロウレベルで通知）する。ＣＰＵ２０は、ＡＣＫ信号がロウレベルである間にはエラーが生じたリードリクエストの直後のリクエストを発行し続ける。このため、リクエスト順序を変化させることなく、全てのリクエストを実行することができる。
【００６２】
さらに、制御ユニット１０は、所定回数（上述の例では連続して２回）のアドレスエラー信号を検出した場合、恒久的なエラーであることをＣＰＵ２０に通知する。これにより、ＣＰＵ２０は、恒久的なエラーに対する対応を行うことができる。
【００６３】
なお、上述の説明では、制御ユニット１０は、アドレスエラーの発生時に読み出し処理の再実行を１回行い、その再実行が失敗していた場合には恒久的なアドレスエラーが生じたものと判定したが、必ずしもこれに限られない。制御ユニット１０は、アドレスエラーが所定回数連続して生じた場合に恒久的なアドレスエラーが発生したものと判定しても良い。
【００６４】
＜実施の形態２＞
本発明の実施の形態２にかかるデータ処理装置は、メモリ３０内にアドレスパリティを予め保持しておくことを特徴とする。本実施の形態にかかるデータ処理装置について、以下に説明する。なお、実施の形態１と同一名称、同一符号を付した処理部であって特に言及しない処理部は、基本的に実施の形態１と同様の処理を行う。
【００６５】
図１２は、本実施の形態にかかるデータ処理装置の構成を示すブロック図である。本実施の形態にかかるデータ処理装置は、実施の形態１の構成に加えて、第１パリティチェック部８０及び第２パリティチェック部９０を備える。なお、図１２に図示しないものの、データ処理装置がＣＰＵ２０を備えることは勿論である。
【００６６】
メモリ３０は、各アドレスにアドレスパリティ、チェックビット、及びデータを保持する。本実施の形態において、メモリ３０は、チェックビットとアドレスパリティを別データとして保持する。ここで、アドレスパリティは、ミラーリング（二重化）されている。図１３は、本実施の形態にかかるメモリ３０のデータ格納構成を示す概念図である。図示するように、アドレスパリティがアドレス毎に２つ格納されている。当該アドレスパリティは、予めアドレス毎に算出され、原則としてアドレス毎に同じ値が格納される。しかし、α線等の影響等を受けた場合には、異なる値が格納される場合が稀にある。
【００６７】
第１パリティチェック部８０は、メモリ３０に格納されたアドレスパリティと、パリティ生成部４０が生成して制御ユニット１０及びアドレスデコーダ３１０を介して入力されたアドレスパリティと、を比較する処理部である。第１パリティチェック部８０は、メモリ３０内に格納された対のアドレスパリティが同じ値であるか否かを判定する。同じ値ではない場合、第１パリティチェック部８０は、第３アドレスエラー信号をハイレベルにして制御ユニット１０に供給する。第３アドレスエラー信号は、アドレスエラーの疑いがある場合にハイレベルとなる信号である。メモリ３０内に格納された対のアドレスパリティが同じ値である場合、第１パリティチェック部８０は、パリティ生成部４０が生成したアドレスパリティと、メモリ３０内に格納された対のアドレスパリティと、が同じ値であるか否かを判定する。同じ値ではない場合、第１パリティチェック部８０は、第３アドレスエラー信号をハイレベルにして制御ユニット１０に供給する。いずれの条件にも当てはまらない場合、第１パリティチェック部８０は、第３アドレスエラー信号をロウレベルにして制御ユニット１０に供給する。
【００６８】
ＥＣＣデコーダ７０には、メモリ３０から該当アドレスに関するデータ（アドレス情報、読み出しデータ、チェックビット、アドレスパリティ）が供給される。ＥＣＣデコーダ７０は、実施の形態１と同様にチェックビットを用いたデータエラー検出を行う。それと共に、ＥＣＣデコーダ７０は、メモリ３０に格納されたアドレスパリティの訂正処理を行う。ＥＣＣデコーダ７０は、訂正済みのアドレスパリティを第２パリティチェック部９０に供給する。さらに、ＥＣＣデコーダ７０は、訂正を行った場合には訂正済みのアドレスパリティをメモリ３０に書き込む。
【００６９】
第２パリティチェック部９０は、ＥＣＣデコーダ７０から供給された訂正済みのアドレスパリティを用いて、アドレスエラーの検出を行う。すなわち、第２パリティチェック部９０は、フリップフロップ６０を介して供給されたアドレスパリティと、訂正済みのアドレスパリティを比較して、アドレスエラーの発生を検出する。アドレスエラーが生じていると判定した場合、第２パリティチェック部９０は、第１アドレスエラー信号をハイレベルにして制御ユニット１０に供給する。アドレスエラーが生じていないと判定した場合、第２パリティチェック部９０は、第１アドレスエラー信号をロウレベルにして制御ユニット１０に供給する。
【００７０】
続いて、本実施の形態にかかる再処理実行部１１０の構成及び動作について説明する。図１４は、本実施の形態にかかる再処理実行部１１０の構成を示すブロック図である。再処理実行部１１０は、図５の構成に加えて、リードバッファ１１１１を備える。再処理実行部１１０内のステート処理部１１０２及び応答信号処理部１１０４には、第３アドレスエラー信号が供給される。
【００７１】
ステート処理部１１０２は、リクエスト種別、第１アドレスエラー信号、及び第３アドレスエラー信号を受信し、受信した情報に応じてステート情報レジスタ１１０１の保持するステートを変化させる。各ステートの内容、及びステートの変化を図１５及び図１６を参照して説明する。
【００７２】
本実施の形態にかかるステート情報レジスタ１１０１の保持するステートは、実施の形態１で用いたステートと比べ、"Ｒｅ−Ｒｅａｄ１"、"Ｒｅ−Ｒｅａｄ２"というステートを持たず、"Ｗａｉｔ"、"Ｒｅ−Ｒｅａｄ"、"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"、及び"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"というステートを持つ。
【００７３】
"Ｗａｉｔ"とは、第３アドレスエラー信号が検出され（ハイレベルとなり）、第１アドレスエラー信号の供給を待機している状態である。ステートが"Ｗａｉｔ"である場合、リードバッファ１１１１に読み出したデータを保持しておくとともに、リードリクエストの再実行が行われる。
【００７４】
"Ｒｅ−Ｒｅａｄ"とは、リードリクエストの再実行し、メモリ３０へのアクセス中であることを示すステートである。
【００７５】
"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"とは、リードリクエストの再実行の結果として、第３アドレスエラー信号が検出された（ハイレベルとなった）状態である。ステートが"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"である場合、"Ｗａｉｔ"ステートとは異なり、リードリクエストの再実行は行われない。本ステートにおいて、第１アドレスエラー信号が検出された場合（ハイレベルとなった場合）、恒久的なアドレスエラーが生じたものと判定される。一方、本ステートにおいて、第１アドレスエラー信号が検出されなかった場合（ロウレベルとなった場合）、直前に生じたアドレスエラーが一時的なものであると判定される。
【００７６】
"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"とは、第３アドレスエラー信号が検出された（ハイレベルとなった）が、直後に第１アドレスエラー信号が検出されなかった（ロウレベルとなった）ステートである。ステートが"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"である場合、リードバッファ１１１１に格納された読み出しデータがＣＰＵ２０に供給される。
【００７７】
本実施の形態にかかるステート処理部１１０２は、図１５及び図１６に示すように、入力されたリクエストの種別、第１アドレスエラー信号の値、及び第３アドレスエラー信号の値、に応じてステートを変化させる。
【００７８】
再び図１４を参照する。本実施の形態にかかるステート処理部１１０２は、ステートの変更、リードリクエストの再実行、及びリードバッファ１１１１の制御を行う。ステート処理部１１０２は、ステート"Ｗａｉｔ"の場合にリードリクエストを再発行するように制御を行う。この際に、ステート処理部１１０２は、アドレス保持バッファ１２０に格納されたアドレス及びアドレスパリティを用いてリードリクエストをメモリ３０に対して再発行する。さらに、ステート処理部１１０２は、ステート"Ｗａｉｔ"、"Ｒｅ−Ｒｅａｄ"、 "Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"、及び"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"の場合に、メモリ３０から読み出したデータをリードバッファ１１１１に保持させるように制御する。
【００７９】
ステート処理部１１０２は、ステート"Ｒｅａｄ"の際に受信したアドレス情報とアドレスパリティをアドレス保持バッファ１２０に格納する。ステート処理部１２０は、ステート"Ｒｅ−Ｒｅａｄ"、"Ｗａｉｔ"、"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"の場合にはアドレス保持バッファ１２０の更新を停止する（値を保持し続ける）。
【００８０】
恒久エラー信号送信部１１０３は、以下の条件のいずれかを満たす場合に第２アドレスエラー信号をハイレベルに設定し、その他の場合にはロウレベルに設定する。
- ステート＝"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"  かつ  第１アドレスエラー信号がハイレベル
- ステート＝"ＳＴＯＰ"
【００８１】
応答信号送信部１１０４は、以下の条件のいずれかを満たす場合にＡＣＫ（応答信号）をハイレベルに設定し、その他の場合にはロウレベルに設定する。
- ステート＝"Ｗｒｉｔｅ"
- ステート＝"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"
- ステート＝"Ｒｅａｄ"かつ  第３アドレスエラー信号がロウレベル
- ステート＝"Ｒｅ−Ｒｅａｄ"かつ  第３アドレスエラー信号がロウレベル
- ステート＝"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"  かつ  第１アドレスエラー信号がロウレベル
【００８２】
中間信号生成部１１０７には、第１アドレスエラー信号及び第３アドレスエラー信号が供給される。中間信号生成部１１０７は、ステート情報レジスタ１１０１の保持するステートを読み出す。中間信号生成部１１０７は、以下の条件のいずれかを満たす場合にハイレベルとなる中間信号を生成する。中間信号生成部１１０７は、生成した中間信号を論理積回路１１０９に供給する。
- ステート＝"Ｒｅａｄ"  かつ  第３アドレスエラー信号がハイレベル
- ステート＝"Ｗａｉｔ"
- ステート＝"Ｒｅ−Ｒｅａｄ"  かつ  第３アドレスエラー信号がハイレベル
- ステート＝"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"  かつ  第１アドレスエラー信号がハイレベル
- ステート＝"ＳＴＯＰ"
【００８３】
図１７は、上述の各信号がハイレベルとなる条件を示している。図１４に示すその他の処理部の動作は、実施の形態１と同様であるため、その詳細な説明は省略する。
【００８４】
続いて、本実施の形態にかかるデータ処理装置の動作について図１８〜図２０のタイミングチャートを参照して説明する。図１８は、第３アドレスエラー信号を検出したものの、第１アドレスエラー信号を検出したかった場合の各処理部の出力信号を示すタイミングチャートである。
【００８５】
タイミングＴ１において、ＣＰＵ２０は、リードリクエストを発行する。リードリクエストは、制御ユニット１０を介してメモリ３０に供給される。リクエスト種別がリードリクエストであるため、タイミングＴ２において、制御ユニット１０内のステートは、"ＩＤＬＥ"から"Ｒｅａｄ"に遷移する。
【００８６】
タイミングＴ２においてステートが"Ｒｅａｄ"となるため、制御ユニット１０は、内部のアドレス保持バッファ１２０に当該リードリクエストのアクセス先であるアドレス情報（アドレスＡ）及びアドレスパリティを格納する。タイミングＴ２において、ＣＰＵ２０は、ライトリクエストを発行する。タイミングＴ２において、リードリクエスト（アドレスＡ）に対応するデータが読み出される。この際、第３アドレスエラー信号は、ハイレベルとなる（すなわち、メモリ３０内のアドレスパリティを用いた判定によりアドレスエラーが生じたと判定された、またはメモリ３０内においてミラーリングしているアドレスパリティに相違がある）。これに応じて、制御ユニット１０内の中間信号生成部１１０７が生成する中間信号は、ステートが"Ｒｅａｄ"であり、第３アドレスエラー信号がハイレベルであるため、ハイレベルに切り替わる。書き込み処理の開始時にハイレベルとなった書き込み制御信号は、中間信号がハイレベルとなったタイミングでロウレベルに切り替わる。これにより、メモリ３０への書き込みが抑制される。さらに、制御ユニット１０内の応答信号送信部１１０４は、ステートが"Ｒｅａｄ"であり、第３アドレスエラー信号がハイレベルであるため、ＡＣＫ（応答信号）としてロウレベルをＣＰＵ２０に供給する。
【００８７】
タイミングＴ３において、制御ユニット１０内のステートは、"Ｗａｉｔ"に変更される。制御ユニット１０は、内部のリードバッファ１１１１に、タイミングＴ２において読み出したデータ（データＢ）を保持しておく。制御ユニット１０は、リードリクエストの再実行を行う。制御ユニット１０は、アドレス保持バッファ１２０に保持したアドレス情報（アドレスＡ）を用いてリードリクエストをメモリ３０に対して再発行する。タイミングＴ３において、第１アドレスエラー信号は、ロウレベルとなる。そのため、制御ユニット１０は、タイミングＴ２において検出した第３アドレスエラー信号は誤検出であったと判定する。
【００８８】
第１アドレスエラー信号が検出されなかったため、タイミングＴ４におけるステートは、"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"に変更される。ステートが"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"に変更されたため、制御ユニット１０内の中間信号生成部１１０７が生成する中間信号は、ロウレベルとなる。制御ユニット１０内のステート処理部１１０２は、リードバッファ１１１１に保持するデータ（データＢ）をＣＰＵ２０に供給する。さらに、制御ユニット１０内の応答信号送信部１１０４は、ステートが"ｆａｌｓｅ  ｄｅｔｅｃｔｉｏｎ"であるため、ＡＣＫ（応答信号）としてハイレベルをＣＰＵ２０に供給する。
【００８９】
タイミングＴ５において、制御ユニット１０内のステートは、図１５及び図１６に示すステートマシンの遷移に従い、"Ｗｒｉｔｅ"に変更される。これにより、タイミングＴ５からメモリ３０への書き込み処理が行われる。
【００９０】
次に、図１９を参照して、アドレスエラーが生じ、読み出し処理の再実行時に読み出し処理が成功した場合の各処理部の出力信号について説明する。タイミングＴ１及びＴ２の各出力信号等は図１８と同様であるため、詳細な説明は省略する。
【００９１】
タイミングＴ３において、制御ユニット１０内のステートは、"Ｗａｉｔ"に変更される。制御ユニット１０は、リードリクエストの再実行を行う。制御ユニット１０は、アドレス保持バッファ１２０に保持したアドレス情報（アドレスＡ）を用いてリードリクエストをメモリ３０に対して再発行する。タイミングＴ３において、第１アドレスエラー信号は、ハイレベルとなる。第１アドレスエラー信号の検出により、アドレスエラーの発生が確定する。
【００９２】
ステート"Ｗａｉｔ"の状態において第１アドレスエラー信号が検出されたため、タイミングＴ４におけるステートは、"Ｒｅ−Ｒｅａｄ"に変更される。ステート"Ｗａｉｔ"の状態において行った読み出し処理の再実行結果として、第３アドレスエラー信号がロウレベルとなる。制御ユニット１０内の応答信号送信部１１０４は、ステートが"Ｒｅ−Ｒｅａｄ"であり、第３アドレスエラー信号がロウレベルとなったため、制御ユニット１０は、ＡＣＫ（応答信号）としてハイレベルをＣＰＵ２０に供給する。
【００９３】
タイミングＴ５において、制御ユニット１０内のステートは、図１５及び図１６に示すステートマシンの遷移に従い、"Ｗｒｉｔｅ"に変更される。これにより、タイミングＴ５からメモリ３０への書き込み処理が行われる。
【００９４】
次に、図２０を参照して、アドレスエラーが生じ、読み出し処理の再実行時に第３アドレスエラー信号が誤検出された場合の各処理部の出力信号について説明する。タイミングＴ１〜Ｔ３の各出力信号等は図１９と同様であるため、詳細な説明は省略する。
【００９５】
タイミングＴ４におけるステートは、"Ｒｅ−Ｒｅａｄ"である。ステート"Ｗａｉｔ"の状態において行った読み出し処理の再実行結果として、第３アドレスエラー信号がハイレベルとなる（すなわち、メモリ３０内のアドレスパリティを用いた判定によりアドレスエラーが生じたと判定された）。制御ユニット１０内の中間信号生成部１１０７が生成する中間信号は、ステートが"Ｒｅ−Ｒｅａｄ"であり、第３アドレスエラー信号がハイレベルであるため、ハイレベルに切り替わる。書き込み処理の開始時にハイレベルとなった書き込み制御信号は、中間信号がハイレベルとなったタイミングでロウレベルに切り替わる。これにより、メモリ３０への書き込みが抑制される。ここで、制御ユニット１０は、内部のリードバッファ１１１１に再実行時に読み出したデータ（データＢ）を保持しておく。
【００９６】
タイミングＴ５において、制御ユニット１０内のステートは、"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"に変更される。ステート"Ｗａｉｔ"の状態において行った読み出し処理の再実行結果として、第１アドレスエラー信号がロウレベルとなる。これにより、制御ユニット１０内のステート処理部１１０２は、タイミングＴ４において検出した第３アドレスエラー信号が誤検出であったと判定する。制御ユニット１０は、再実行時に読み出したデータ（データＢ）をＣＰＵ２０に供給する。さらに、制御ユニット１０内の応答信号送信部１１０４は、ステートが"Ｒｅ−Ｒｅａｄ  Ｗａｉｔ"であり、第１アドレスエラー信号がロウレベルであるため、ＡＣＫ（応答信号）としてハイレベルをＣＰＵ２０に供給する。
【００９７】
タイミングＴ６において、制御ユニット１０内のステートは、図１５及び図１６に示すステートマシンの遷移に従い、"Ｗｒｉｔｅ"に変更される。これにより、タイミングＴ５からメモリ３０への書き込み処理が行われる。
【００９８】
続いて、本実施の形態の効果について説明する。実施の形態１と同様に、制御ユニット１０は、メモリ３０の読み出し時のアドレスエラーの検出時または検出の疑いがある場合に（第１、または第３アドレスエラー信号がハイレベルの場合に）、書き込み制御信号を抑止する（ロウレベルにする）ことによりメモリ３０への書き込み処理を禁止している。これにより、メモリ３０への再読み出し処理が行われる前にデータが上書きされることを回避することができる。さらに、制御ユニット１０は、ＣＰＵ２０への応答を保留（ＡＣＫ信号をロウレベルで通知）する。ＣＰＵ２０は、ＡＣＫ信号がロウレベルである間にはエラーが生じたリードリクエストの直後のリクエストを発行し続ける。このため、リクエスト順序を変化させることなく、全てのリクエストを実行することができる。
【００９９】
本実施の形態にかかるデータ処理装置の更なる効果について図２１を参照して説明する。図２１は、実施の形態１におけるアドレスエラーの検出と、実施の形態２におけるアドレスエラーの検出と、を対比した概念図である。
【０１００】
実施の形態１にかかるデータ処理装置では、ＥＣＣデコーダ７０によるアドレスエラー検出が行われていた。一方、実施の形態２にかかるデータ処理装置では、メモリ３０内に格納していたアドレスパリティを用いたアドレスエラー検出（第３アドレスエラー信号の送信）を行い、続いて訂正済みのアドレスパリティを用いたアドレス検出（第１アドレスエラー信号の送信）を行っている。
【０１０１】
一般に、ＥＣＣデコーダ７０は、多段の回路により構成されおり、処理負荷が大きい（処理時間が長くかかる）。実施の形態１のＥＣＣデコーダ７０は、リードリクエストの発行から１クロック後に発行されるライトリクエストを処理するために、１クロック以内にアドレスエラーを検出しなければならない。一方、実施の形態２にかかるデータ処理装置では、第１パリティチェック部８０が、リードリクエストの発行から１クロック後にアドレスエラーの検出を行っている。第１パリティチェック部８０によるエラー検出は、ビット比較により行うため、処理負荷が小さい。すなわち、実施の形態２にかかる構成では、エラー検出までにかかる時間が短い。これにより、図２１に示すように、１クロックにかかる時間を短縮することができる。これにより、データ処理装置全体の処理を速くすることができる。
【０１０２】
第１パリティチェック部８０は、メモリ３０内にアドレスパリティを保持しておくことにより、アドレスエラーの検出を行っている。しかしながら、メモリ３０内にアドレスパリティを記憶させる際に、パリティデータがα線の影響等により反転する場合等が稀にある。すなわち、メモリ３０内が記憶するアドレスパリティが正しくないケースが存在する。本実施の形態では、メモリ３０内にアドレスパリティをミラーリングして記憶させる。そして、第１パリティチェック部８０は、メモリ３０内の全てのアドレスパリティが等しい値ではない場合には、メモリ３０内のアドレスパリティが正しくないものとしてエラー出力を行う（第３アドレスエラー信号をハイレベルにする）。そして、第２パリティチェック部９０は、訂正済みのアドレスパリティを用いたアドレスエラーの検出を行う。第２パリティチェック部９０は、訂正済みのアドレスパリティを用いることにより、正確なアドレスエラーの検出処理を行うことができる。これにより、メモリ３０内のアドレスパリティが正しくない場合であっても、アドレスエラーを正しく検出することができる。
【０１０３】
さらに、制御ユニット１０は、第３アドレスエラー信号が誤検出であった場合に、リードレジスタ１１１１に格納していたデータをＣＰＵ２０に供給する。これにより、ＣＰＵ２０は、メモリ３０の読み出し処理の再実行を省略することができ、装置全体の処理速度を早めることができる。
【０１０４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。上述のメモリは、読み出し、及び書き込みが可能な任意の記憶装置であれば良い。
【０１０５】
なお、請求項に記載のアドレス誤り信号は、上述の第１アドレスエラー信号、または第３アドレスエラー信号に対応する。請求項に記載の通知信号は、上述の第２アドレスエラー信号に対応する。請求項に記載の簡易アドレス誤り信号は、上述の第３アドレスエラー信号に対応する。請求項に記載のアドレス誤り確定信号は、上述の第１アドレスエラー信号に対応する。
【符号の説明】
【０１０６】
１０  制御ユニット
２０  ＣＰＵ
３０  メモリ
３１０  アドレスデコーダ
３２０  データ記憶部
４０  パリティ生成部
５０  ＥＣＣ生成部
６０  ＦＦ（フリップフロップ）
７０  ＥＣＣデコーダ
８０  第１パリティチェック部
９０  第２パリティチェック部
１１０  再処理実行部
１１０１  ステート情報レジスタ
１１０２  ステート処理部
１１０３  恒久エラー信号送信部
１１０４  応答信号送信部
１１０５  書き込み制御信号生成部
１１０６  エラー記録部
１１０７  中間信号生成部
１１０８  書き込み検出部
１１０９  論理積回路
１１１０  エラー記録レジスタ
１１１１  リードバッファ
１２０  アドレス保持バッファ
【図１】
2013156821.tif 000003
【図２】
2013156821.tif 000004
【図３】
2013156821.tif 000005
【図４】
2013156821.tif 000006
【図５】
2013156821.tif 000007
【図６】
2013156821.tif 000008
【図７】
2013156821.tif 000009
【図８】
2013156821.tif 000010
【図９】
2013156821.tif 000011
【図１０】
2013156821.tif 000012
【図１１】
2013156821.tif 000013
【図１２】
2013156821.tif 000014
【図１３】
2013156821.tif 000015
【図１４】
2013156821.tif 000016
【図１５】
2013156821.tif 000017
【図１６】
2013156821.tif 000018
【図１７】
2013156821.tif 000019
【図１８】
2013156821.tif 000020
【図１９】
2013156821.tif 000021
【図２０】
2013156821.tif 000022
【図２１】
2013156821.tif 000023
【図２２】
2013156821.tif 000024