図面 (/)
課題
解決手段
本発明に係る半導体装置9は、メモリにデータを格納するための第1のアドレスに基づいて、誤り検出符号を格納するための第2のアドレスを生成するアドレス変換回路91と、第1のアドレスにデータを書き込み、第2のアドレスに誤り検出符号を書き込む書込回路92と、第1のアドレスからデータを読み出し、第2のアドレスから誤り検出符号を読み出し、データと誤り検出符号とに基づいてエラーを検出する読出回路93を備える。アドレス変換回路は、第1のアドレスの少なくとも1つのビットの値を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを第2のアドレスとして生成する。
概要
背景
特許文献1には、その図4において、従来例として、メモリ制御回路が開示されている。このメモリ制御回路は、アドレス/コントロール線制御回路と、ECC回路とを有する。CPUからアドレス及びデータがメモリ制御回路に送られると、ECC回路は、データからECCデータを生成し、メモリの指定されたアドレスに書き込む。データを読み出す際、ECC回路は、メモリから読み出されたデータから新たなECCデータを作成し、メモリから読み出されたECCデータと新たに作成したECCデータとを比較して、データの誤り検出及び修正を行う。
しかしながら、このメモリ制御回路では、アドレス/コントロール線制御回路からメモリに対してアドレスを指定するためのアドレス信号線のいずれかにおいて、その値が固着する故障が発生した場合におけるアドレス間違いを検出することができないという問題がある。その理由は、メモリに対して指定されたアドレスに、データと、そのデータから作成したECCデータとを書き込むようにしているからである。そのため、期待と異なるアドレスから、データとECCデータとを読み出したとしても、読み出されたECCデータと新たに作成したECCデータとの比較で不一致として検出されることは無いからである。
ここで、この問題に対して、特許文献1に開示の計算機システムでは、データを書き込むアドレスと、ECCデータを書き込むアドレスとを別々に指定するようにしている。しかしながら、この技術は、上記のような問題を解決するために、本明細書において開示されている技術とは全く異なるものである。
概要
メモリアクセスに関して、アドレス信号系の故障を検出すること。本発明に係る半導体装置9は、メモリにデータを格納するための第1のアドレスに基づいて、誤り検出符号を格納するための第2のアドレスを生成するアドレス変換回路91と、第1のアドレスにデータを書き込み、第2のアドレスに誤り検出符号を書き込む書込回路92と、第1のアドレスからデータを読み出し、第2のアドレスから誤り検出符号を読み出し、データと誤り検出符号とに基づいてエラーを検出する読出回路93を備える。アドレス変換回路は、第1のアドレスの少なくとも1つのビットの値を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを第2のアドレスとして生成する。
目的
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
メモリにデータを格納するための第1のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第2のアドレスを生成するアドレス変換回路と、前記第1のアドレスに対して前記データの書き込みが要求された場合、前記第1のアドレスに前記データを書き込むとともに、前記第2のアドレスに前記誤り検出符号を書き込む書込回路と、前記第1のアドレスに格納された前記データの読み出しが要求された場合、前記第1のアドレスから前記データを読み出すとともに、前記第2のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する読出回路と、を備え、前記アドレス変換回路は、前記第1のアドレスの少なくとも1つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第2のアドレスとして生成する、半導体装置。
請求項2
前記アドレス変換回路は、前記所定数ビットの値を反転したアドレスを前記第2のアドレスとして生成する、請求項1に記載の半導体装置。
請求項3
前記アドレス変換回路は、前記所定数ビットを並べ替えたアドレスを前記第2のアドレスとして生成する、請求項1に記載の半導体装置。
請求項4
請求項5
前記アドレス変換回路は、前記所定数ビットの並び順を反転したアドレスを前記第2のアドレスとして生成する、請求項3に記載の半導体装置。
請求項6
前記アドレス変換回路は、前記第1のアドレスの少なくとも1つのビット以外のビットのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第2のアドレスとして生成する、請求項1に記載の半導体装置。
請求項7
前記アドレス変換回路は、前記第1のアドレスのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第2のアドレスとして生成する、請求項1に記載の半導体装置。
請求項8
前記データの書き込み及び前記データの読み出しは、バスマスタから要求されるものであり、前記第1のアドレスは、前記バスマスタから指定されるものであり、前記半導体装置は、さらに、前記バスマスタから指定された第1のアドレスが、前記第2のアドレスが取り得る範囲として予め定められた範囲に含まれる場合、前記バスマスタから指定されたアドレスを、前記第1のアドレスが取り得るアドレスとして予め定められたアドレスに補正するアドレス制限回路を備えた、請求項7に記載の半導体装置。
請求項9
前記アドレス変換回路は、第1のモードが指定されている場合、前記第1のアドレスの少なくとも1つのビット以外のビットを、所定のオフセットビット数だけ下位方向にシフトしたアドレスを前記第2のアドレスとして生成し、第2のモードが指定されている場合、前記第1のアドレスの少なくとも1つのビット以外のビットのうち、下位から前記オフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第2のアドレスとして生成する、請求項1に記載の半導体装置。
請求項10
前記アドレス変換回路は、第1のモードが指定されている場合、前記第1のアドレスの少なくとも1つのビット以外のビットの値を反転したアドレスを前記第2のアドレスとして生成し、第2のモードが指定されている場合、前記第1のアドレスの少なくとも1つのビット以外のビットの値を反転し、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更する、請求項1に記載の半導体装置。
請求項11
前記アドレス変換回路は、第1のモードが指定されている場合、前記第1のアドレスの少なくとも1つのビット以外のビットの値を反転したアドレスを前記第2のアドレスとして生成し、第2のモードが指定されている場合、前記第1のアドレスの少なくとも1つのビット以外のビットのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第2のアドレスとして生成する、請求項1に記載の半導体装置。
請求項12
前記データの書き込みは、バスマスタから要求されるものであり、前記バスマスタは、前記データの書き込みが行われる単位時間の間、前記データの書き込みを有効にするイネーブル信号を前記メモリに出力し、前記半導体装置は、さらに、前記バスマスタからの前記データの書き込みを有効にするイネーブル信号に応じて、前記単位時間の間、前記バスマスタの動作を許容する第1のウエイト信号に代えて、前記バスマスタの動作を抑止する第2のウエイト信号を前記バスマスタに出力する制御回路を備え、前記書込回路は、前記第2のウエイト信号の出力に応じて、前記第1のアドレスに前記データを書き込み、その後の前記第1のウエイト信号の出力に応じて、前記第2のアドレスに前記誤り検出符号を書き込む、請求項1に記載の半導体装置。
請求項13
前記メモリは、前記アドレス変換回路から入力されるアドレス信号が示すアドレスに、前記書込回路から入力されるライトデータを格納するものであり、前記アドレス変換回路は、前記第2のウエイト信号の出力に応じて、前記第1のアドレスを示すアドレス信号を前記メモリに出力するとともに、その後の前記第1のウエイト信号の出力に応じて、前記第2のアドレスを示すアドレス信号を前記メモリに出力し、前記書込回路は、前記第2のウエイト信号の出力に応じて、前記ライトデータとして、前記データをメモリに出力し、その後の前記第1のウエイト信号の出力に応じて、前記ライトデータとして、前記誤り検出符号をメモリに出力する、請求項12に記載の半導体装置。
請求項14
前記第2のウエイト信号は、前記第1のアドレスの少なくとも1つのビットの値として利用され、前記第1のウエイト信号は、前記第1のアドレスの少なくとも1つのビットの値の変更後の値として利用される、請求項12に記載の半導体装置。
請求項15
前記データの読み出しは、バスマスタから要求されるものであり、前記バスマスタは、前記データの読み出しが行われる単位時間の間、前記データの読み出しを有効にするイネーブル信号を前記メモリに出力し、前記半導体装置は、さらに、前記バスマスタからの前記データの読み出しを有効にするイネーブル信号に応じて、前記単位時間の間、前記バスマスタの動作を許容する第1のウエイト信号に代えて、前記バスマスタの動作を抑止する第2のウエイト信号を、前記バスマスタに出力する制御回路を備え、前記読出回路は、前記第2のウエイト信号の出力に応じて、前記第1のアドレスから前記データを読み出し、その後の前記第1のウエイト信号の出力に応じて、前記第2のアドレスから前記誤り検出符号を読み出す、請求項1に記載の半導体装置。
請求項16
前記読出回路は、前記第2のウエイト信号の出力に応じて、前記メモリから読み出したデータを保持し、その後の前記第1のウエイト信号の出力に応じて、前記メモリから読み出した誤り検出符号と、前記保持したデータとに基づいてエラーを検出する、請求項15に記載の半導体装置。
請求項17
前記データの書き込み及び前記データの読み出しの各々は、バスマスタから前記第1のアドレスを示す第1のパケットを受信することで、前記バスマスタから要求されるものであり、前記半導体装置は、さらに、前記バスマスタから受信した第1のパケットを格納するバッファと、前記第1のパケットが示すアドレスに基づいて、前記データの書き込み又は前記データの読み出しを実行するインタフェース回路と、を備え、前記アドレス変換回路は、前記バッファに格納された第1のパケットが示す第1のアドレスに基づいて、前記第2のアドレスを示す第2のパケットを生成し、前記書込回路は、前記バスマスタから受信した前記第1のパケットを前記インタフェース回路に送信し、前記アドレス変換回路が生成した前記第2のパケットを前記インタフェース回路に送信することで、前記第1のアドレスへの前記データの書き込みと、前記第2のアドレスへの前記誤り検出符号の書き込みとを実行し、前記読出回路は、前記バスマスタから受信した前記第1のパケットを前記インタフェース回路に送信し、前記アドレス変換回路が生成した前記第2のパケットを前記インタフェース回路に送信することで、前記第1のアドレスからのデータの読み出しと、前記第2のアドレスからの前記誤り検出符号の読み出しとを実行する、請求項1に記載の半導体装置。
請求項18
前記アドレス変換回路は、前記所定数ビットの値を反転したアドレスを前記第2のアドレスとして生成し、前記インタフェース回路は、セットアソシアティブ方式で前記メモリのデータをキャッシュするキャッシュメモリを有しており、前記キャッシュメモリの各ウェイは、前記所定数ビットの少なくとも1つを含むビットでタグ付けされている、請求項17に記載の半導体装置。
請求項19
前記半導体装置は、さらに、前記第1のモード又は前記第2のモードを示す値が設定される記憶部を有し、前記記憶部に設定された前記第1のモード又は前記第2のモードを前記アドレス変換回路に指定するモード制御回路を備えた、請求項9に記載の半導体装置。
請求項20
メモリにデータを格納するための第1のアドレスに対して前記データの書き込みが要求された場合、前記第1のアドレスに前記データを書き込む第1の書込ステップと、前記第1のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第2のアドレスを生成し、生成した第2のアドレスに前記誤り検出符号を書き込む第2の書込ステップと、前記第1のアドレスに格納された前記データの読み出しが要求された場合、前記第1のアドレスから前記データを読み出す第1の読出ステップと、前記第1のアドレスに基づいて前記第2のアドレスを生成し、生成した第2のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する第2の読出ステップと、を備え、前記第2の書込ステップ及び前記第2の読出ステップの各々は、前記第1のアドレスの少なくとも1つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第2のアドレスとして生成する、メモリアクセス制御方法。
技術分野
0001
本発明は、半導体装置及びメモリアクセス制御方法に関し、例えば、データと、そのデータから生成された誤り検出符号とをメモリに格納する技術に関する。
背景技術
0002
特許文献1には、その図4において、従来例として、メモリ制御回路が開示されている。このメモリ制御回路は、アドレス/コントロール線制御回路と、ECC回路とを有する。CPUからアドレス及びデータがメモリ制御回路に送られると、ECC回路は、データからECCデータを生成し、メモリの指定されたアドレスに書き込む。データを読み出す際、ECC回路は、メモリから読み出されたデータから新たなECCデータを作成し、メモリから読み出されたECCデータと新たに作成したECCデータとを比較して、データの誤り検出及び修正を行う。
0003
しかしながら、このメモリ制御回路では、アドレス/コントロール線制御回路からメモリに対してアドレスを指定するためのアドレス信号線のいずれかにおいて、その値が固着する故障が発生した場合におけるアドレス間違いを検出することができないという問題がある。その理由は、メモリに対して指定されたアドレスに、データと、そのデータから作成したECCデータとを書き込むようにしているからである。そのため、期待と異なるアドレスから、データとECCデータとを読み出したとしても、読み出されたECCデータと新たに作成したECCデータとの比較で不一致として検出されることは無いからである。
0004
ここで、この問題に対して、特許文献1に開示の計算機システムでは、データを書き込むアドレスと、ECCデータを書き込むアドレスとを別々に指定するようにしている。しかしながら、この技術は、上記のような問題を解決するために、本明細書において開示されている技術とは全く異なるものである。
先行技術
0005
特開平5−88992号公報
発明が解決しようとする課題
課題を解決するための手段
0008
一実施の形態によれば、半導体装置は、データを格納するための第1のアドレスの少なくとも1つのビットの値を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを、誤り検出符号を格納するための第2のアドレスとして生成するものである。
発明の効果
0009
前記一実施の形態によれば、メモリアクセスに関して、アドレス信号系の故障を検出することができる。
図面の簡単な説明
0010
実施の形態1に係るCPUシステムの構成を示すブロック図である。
実施の形態1に係るI/F変換回路の構成を示すブロック図である。
実施の形態1に係るADR反転回路の構成を示すブロック図である。
実施の形態1に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態1に係るI/F変換回路の動作を示す概念図である。
ADR反転を行わない場合における動作を示す概念図である。
実施の形態1に係るStuck−at故障発生時のアドレス信号の値の変化を示す図である。
ADR反転を行わない場合におけるStuck−at故障発生時のアドレス信号の値の変化を示す図である。
実施の形態2に係るI/F変換回路の構成を示すブロック図である。
実施の形態2に係るADRローテーション回路の構成を示すブロック図である。
実施の形態2に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態2に係るI/F変換回路の動作(第1の例)を示す概念図である。
実施の形態2に係るStuck−at故障発生時のアドレス信号の値の変化(第1の例)を示す図である。
実施の形態2に係るI/F変換回路の動作(第2の例)を示す概念図である。
ADR反転を行う場合における動作(第2の例)を示す概念図である。
実施の形態2に係るStuck−at故障発生時のアドレス信号の値の変化(第2の例)を示す図である。
ADR反転を行う場合におけるStuck−at故障発生時のアドレス信号の値の変化(第2の例)を示す図である。
実施の形態3に係るADRローテーション回路の構成を示すブロック図である。
実施の形態3に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態3に係るStuck−at故障発生時のアドレス信号の値の変化を示す図である。
実施の形態3に係る他のStuck−at故障発生時のアドレス信号の値の変化を示す図である。
実施の形態4に係るI/F変換回路の構成を示すブロック図である。
実施の形態4に係るADRビット順逆転回路の構成を示すブロック図である。
実施の形態4に係る他のADRビット順逆転回路の構成を示すブロック図である。
2ビットのアドレスのアドレスビット入れ替えのパターンを示す図である。
3ビットのアドレスのアドレスビット入れ替えのパターンを示す図である。
4ビットのアドレスのアドレスビット入れ替えのパターンを示す図である。
アドレスビット入れ替えのパターン数を算出する式を示す図である。
実施の形態5に係るADRローテーション回路の構成を示すブロック図である。
実施の形態5に係る他のADRローテーション回路の構成を示すブロック図である。
実施の形態5に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態6に係るI/F変換回路の構成を示すブロック図である。
実施の形態6に係るADRシフト&オフセット設定回路の構成を示すブロック図である。
N=4ビットの場合のADRシフト&オフセット設定回路の構成を示すブロック図である。
実施の形態6に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態6に係るStuck−at故障発生時のアドレス信号の値の変化を示す図である。
実施の形態7に係るI/F変換回路におけるADR変換回路の構成を示すブロック図である。
実施の形態7に係るADRシフト&オフセット設定回路の構成を示すブロック図である。
実施の形態7に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態8に係るADRシフト&オフセット設定回路の構成を示すブロック図である。
実施の形態9に係るI/F変換回路の構成を示すブロック図である。
実施の形態9に係るADR反転シフト&オフセット設定回路の構成を示すブロック図である。
実施の形態10に係るADRシフト&オフセット回路の構成を示すブロック図である。
実施の形態10に係るADR選択回路の構成を示すブロック図である。
実施の形態11に係るCPUシステムの構成を示すブロック図である。
実施の形態11に係る変換回路の構成を示すブロック図である。
実施の形態11の効果を説明するための図である。
実施の形態12に係るI/F変換回路の構成を示すブロック図である。
実施の形態12に係る内蔵メモリのメモリマップのイメージ図である。
実施の形態12に係るアドレス変換によるアドレスの変化を示す図である。
実施の形態1〜12の概略構成となる半導体装置を示す図である。
実施例
0011
以下に図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項については、適宜、省略及び簡略化がなされている。
0012
<実施の形態1>
まず、実施の形態1について、図面を用いて、その構成と動作を説明する。図1を参照して、本実施の形態1に係るCPU(Central Processing Unit)システム1の構成について説明する。図1に示すように、CPUシステム1は、CPU10と、コントロール入力I/F11と、コマンド出力I/F12と、I/F変換回路13と、内蔵メモリ14と、DMAC(Direct Memory Access Controller)15と、その他周辺回路16と、その他I/F17とを有する。
0013
CPU10、コントロール入力I/F11、コマンド出力I/F12、I/F変換回路13、DMAC15、その他周辺回路16、及び、その他I/F17は、システムバスを介して相互に接続されている。また、内蔵メモリ14は、I/F変換回路13を介してシステムバスと接続されている。
0014
本実施の形態1では、CPUシステム1が、自動車に搭載される車載制御システムである例について説明するが、これに限られない。CPUシステム1は、CPUシステム1に対してデータを入力する入力ユニットと、CPUシステム1が入力ユニットから入力されたデータに基づいて制御する制御ユニットとを有する任意の機器(例えば、自動車又はオートバイ等の輸送機器、重機等の建設機器、もしくは、製造ロボット等の産業機器)に搭載してもよい。また、CPUシステム1は、メモリと、メモリにアクセスする装置(例えばCPU)とを有する機器であれば、それ以外の機器(例えばパーソナルコンピューター又はスマートフォン等の情報機器)に搭載される情報処理システムであってもよい。
0015
また、CPUシステム1は、例えば、マイクロコントローラ(半導体装置)に構築される。そして、このCPUシステム1は、他のマイクロコントローラ(図1では「サブマイコン」)と連携をとり、自動車を制御することが可能である。
0016
入力ユニットは、自動車に搭載されている装置である。入力ユニットは、ユーザから制御ユニットの制御を指示する入力を受ける。入力ユニットは、例えば、キーユニット又はスイッチ(図1では「SW」)等である。入力ユニットは、ユーザからの入力に応じて、その入力内容を示す入力データをCPUシステム1に送信する。
0017
制御ユニットは、自動車に搭載されている装置である。制御ユニットは、CPUシステム1によって制御される。制御ユニットは、例えば、ドア又はミラー等である。CPUシステム1は、入力ユニットから受信した入力データが示す入力内容に基づいて、制御ユニットの制御内容を示す制御データであるコマンドを生成し、制御ユニットに送信する。制御ユニットは、CPUシステム1からのコマンドに応じて、そのコマンドが示す制御内容で動作する。
0018
CPU10は、入力ユニットからの入力データに基づいて、制御データを生成する。例えば、CPU10は、ドアに対する制御データであれば、制御内容として、ドアの開閉を指示する制御データを生成する。また、例えば、CPU10は、ミラーに対する制御データであれば、制御内容として、ミラーの位置の調整を指示する制御データを生成する。
0019
コントロール入力I/F11は、入力ユニットとシステムバスとを接続するインタフェース回路である。すなわち、コントロール入力I/F11は、入力ユニットから制御ユニットを制御するための入力データが入力される。コマンド出力I/F12は、制御ユニットとシステムバスとを接続するインタフェース回路である。すなわち、コマンド出力I/F12は、制御ユニットを制御するためのコマンドを、制御ユニットに出力する。
0020
I/F変換回路13は、内蔵メモリ14とシステムバスとを接続するインタフェース回路である。I/F変換回路13は、CPU10及びDMAC15の各々からのデータの書き込みの要求に応じて、内蔵メモリ14にデータを書き込む。I/F変換回路13は、CPU10及びDMAC15の各々からのデータの読み出しの要求に応じて、内蔵メモリ14からデータを読み出す。また、I/F変換回路13は、CPU10及びDMAC15の各々からの要求に応じて、内蔵メモリ14にアクセス(データの書き込み又はデータの読み出し)をする際に、データ信号系及びアドレス信号系の故障を検出するための処理を実行する。
0021
より具体的には、I/F変換回路13は、内蔵メモリ14に対してデータを書き込む際に、そのデータから生成したECC(Error Correcting Code:エラー訂正符号)も内蔵メモリ14に書き込む。また、I/F変換回路13は、内蔵メモリ14からデータを読み出す際に、読み出したデータからECCを生成し、生成したECCと、そのデータと共に内蔵メモリ14に書き込んでいたECCとを比較することで故障を検出する。本実施の形態1では、後述するように、データを格納するアドレスからECCを格納するアドレスを生成することで、データ信号系の故障のみならず、アドレス信号系の故障も検出可能とする。
0022
内蔵メモリ14は、各種データが格納される記憶回路である。すなわち、内蔵メモリ14には、例えば、上述の入力データ、制御データ(コマンド)及びECC等が格納される。
0023
DMAC15は、システムバスに接続された各回路10〜13、16、17の間でのデータ転送を実現する。例えば、DMAC15は、入力ユニットからコントロールI/F11に入力された入力データをI/F変換回路13に転送し、転送した入力データの内蔵メモリ14への書き込みをI/F変換回路13に要求する。また、例えば、DMAC15は、内蔵メモリ14からのコマンドの読み出しをI/F変換回路13に要求し、I/F変換回路13が読み出したコマンドをコマンド出力I/F12に転送する。これにより、コマンドが制御ユニットに出力される。
0024
ここで、CPU10は、DMAC15によって内蔵メモリ14に格納された入力データの読み出しをI/F変換回路13に要求し、I/F変換回路13が読み出した入力データを取得する。CPU10は、取得した入力データに基づいてコマンドを生成し、生成したコマンドの内蔵メモリ14への書き込みをI/F変換回路13に要求する。これにより、内蔵メモリ14に格納されたコマンドは、上述したようにDMAC15によって転送される。
0025
CPUシステム1は、その他周辺回路16として任意の回路を備えるようにしてよい。その他I/F17は、サブマイコン等の車載制御システムが備える他のユニットとシステムバスとを接続するためのインタフェース回路である。
0027
続いて、図2を参照して、本実施の形態1に係るI/F変換回路13の構成について説明する。図2に示すように、I/F変換回路13は、I/F制御回路110と、ADR変換回路120と、WDT変換回路130と、RDT変換回路140とを有する。ここで、「ADR」はアドレスを示し、「WDT」は書き込みデータを示し、「RDT」は読み出しデータを示す略称である。
0028
バスマスタは、イネーブル(セレクト)信号、ライト/リード信号、アドレス信号及びライトデータを、システムバスを介してI/F変換回路13に出力する。I/F変換回路13は、ウエイト#信号、リードデータ及びエラー通知信号を、システムバスを介してバスマスタに出力する。I/F変換回路13及び内蔵メモリ14は、クロック生成回路(図示せず)から入力されるクロック信号に基づいて動作する。なお、ウエイト#信号の「#」は、ウエイト#信号がローアクティブな信号であることを示す記号である。
0029
なお、ここでは、イネーブル信号が1ビットであり、ライト/リード信号が1ビットであり、アドレス信号がNビットであり(Nは所定の正整数)、ライトデータが8ビットであり、ウエイト#信号が1ビットであり、リードデータが8ビットであり、エラー通知信号が1ビットである例について説明する。
0030
バスマスタは、内蔵メモリ14に対してデータを書き込む場合、データの書き込みを要求する信号として、アサートしたイネーブル信号(例えば値は“1”)と、データの書き込みを指定するライト/リード信号(例えば値は“0”)と、データを書き込むアドレスを示すアドレス信号と、書き込むデータとなるライトデータとを、I/F変換回路13に出力する。これに応じて、I/F変換回路13は、内蔵メモリ14のうち、アドレス信号が示すアドレスにライトデータを書き込む。また、この際、I/F変換回路13は、そのライトデータから生成したECCも内蔵メモリ14に書き込む。
0031
また、バスマスタは、内蔵メモリ14からデータを読み出す場合、アサートしたイネーブル信号(例えば値は“1”)と、データの読み出しを指定するライト/リード信号(例えば値は“1”)と、データを読み出すアドレスを示すアドレス信号とを、I/F変換回路13に出力する。これに応じて、I/F変換回路13は、内蔵メモリ14のうち、アドレス信号が示すアドレスに格納されたデータを読み出し、リードデータとしてバスマスタに出力する。また、この際に、I/F変換回路13は、そのデータに対応するECCを内蔵メモリ14から読み出し、読み出したECCとデータとに基づいて、データに誤りが発生しているか否かを判定する。I/F変換回路13は、この判定によってデータの誤りが検出された場合、エラーを通知するエラー通知信号をバスマスタに出力する。ただし、1ビット誤りの場合には、バスマスタに出力するリードデータを訂正する。
0032
I/F制御回路110は、バスマスタが内蔵メモリ14に対してアクセスする場合に、バスマスタに対して1クロックサイクル分だけウエイトをかけることで、そのアクセスを2クロックサイクルまで延ばす。そして、I/F制御回路110は、ADR変換回路120、WDT変換回路130及びRDT変換回路140を、1クロックサイクル目ではデータに関する動作を行わせ、2クロックサイクル目ではECCに関する動作を行わせるように制御する。すなわち、I/F制御回路110は、バスマスタからの信号の出力を2クロックサイクル目まで延ばすことで、2クロックサイクル目でその信号に基づいたECCに関する動作を可能とする。
0034
イネーブル信号保持回路111は、バスマスタが内蔵メモリ14に対してアクセスした際に、クロック信号に基づいて、1クロックサイクル目でアサートされたイネーブル信号の値を保持し、2クロックサイクル目で保持した値の反転出力となる信号をウエイト信号生成回路112に出力する。すなわち、バスマスタから出力されたイネーブル信号は、I/F変換回路13を介して内蔵メモリ14にそのまま入力されるとともに、I/F制御回路110にも入力される。イネーブル信号保持回路111は、例えば、FF(Flip-Flop)回路である。
0035
すなわち、イネーブル信号保持回路111は、1クロックサイクル目では、その1クロックサイクル前のデアサートされたイネーブル信号(例えば値は“0”)に基づいて、その反転出力となる信号(例えば値は“1”)をウエイト信号生成回路112に出力する。次に、イネーブル信号保持回路111は、2クロックサイクル目では、その1クロックサイクル前(1クロックサイクル目)のアサートされたイネーブル信号(例えば値は“1”)に基づいて、その反転出力となる信号(例えば値は“0”)をウエイト信号生成回路112に出力する。
0036
ここで、イネーブル信号は、データの書き込み及び読み出しを有効にするか無効にするかを指示する信号である。イネーブル信号は、データの書き込み及び読み出しを有効にする場合、アサートされる。イネーブル信号は、データの書き込み及び読み出しを無効にする場合、デアサートされる。
0037
内蔵メモリ14は、アサートされたイネーブル信号が入力されている場合、後述するようにI/F変換回路13から入力されるライト/リード信号(書き込み指定)、アドレス信号及びライトデータに基づいて、内蔵メモリ14にデータを書き込む。一方、内蔵メモリ14は、デアサートされたイネーブル信号が入力されている場合、ライト/リード信号、アドレス信号及びライトデータの入力に関わらず、内蔵メモリ14へのデータの書き込みは行わない。
0038
また、内蔵メモリ14は、アサートされたイネーブル信号が入力されている場合、後述するようにI/F変換回路13から入力されるライト/リード信号(読み出し指定)及びアドレス信号に基づいて、内蔵メモリ14からデータを読み出す。一方、内蔵メモリ14は、デアサートされたイネーブル信号が入力されている場合、ライト/リード信号及びアドレス信号の入力に関わらず、内蔵メモリ14からのデータの読み出しは行わない。
0039
ウエイト信号生成回路112は、バスマスタから入力されるイネーブル信号と、イネーブル信号保持回路111から入力される信号のNAND演算結果となる信号を、ウエイト#信号としてバスマスタに出力する。ウエイト信号生成回路112は、例えば、NAND(否定的論理積)回路である。
0040
すなわち、ウエイト信号生成回路112は、1クロックサイクル目では、アサートされたイネーブル信号(例えば値は“1”)と、イネーブル信号保持回路111からからの信号(例えば値は“1”)とに基づいて、アサートされたウエイト#信号(例えば値は“0”)をバスマスタに出力する。このアサートされたウエイト#信号が入力されている間、バスマスタは、その動作を停止する。次に、ウエイト信号生成回路112は、2クロックサイクル目では、アサートされたままのイネーブル信号(例えば値は“1”)と、イネーブル信号保持回路111からの信号(例えば値は“0”)とに基づいて、デアサートされたウエイト#信号(例えば値は“1”)をバスマスタに出力する。このデアサートされたウエイト#信号が入力されると、バスマスタは、その動作を再開する。
0041
このように、バスマスタが内蔵メモリ14にアクセスした際に、1クロックサイクル分だけ、アサートされたウエイト#信号を入力することで、そのアクセスサイクルが延ばされる。そして、バスマスタによる内蔵メモリ14に対するアクセスは、2クロックサイクルで完了することになる。よって、バスマスタが内蔵メモリ14にアクセスする際における、イネーブル信号、ライト/リード信号、アドレス信号及びライトデータの出力は、2クロックサイクルの間、維持されることになる。
0042
また、ウエイト#信号は、ADR変換回路120、WDT変換回路130及びRDT変換回路140の動作を切り替えるデータ/ECC信号としても機能する。すなわち、ウエイト信号生成回路112は、ウエイト#信号を、データ/ECC信号として、ADR変換回路120、WDT変換回路130及びRDT変換回路140の各々に出力する。
0043
また、ウエイト#信号は、内蔵メモリ14にデータを書き込むアドレス、又は、内蔵メモリ14からデータを読み出すアドレスの最上位ビットの値を示す信号としても機能する。すなわち、ウエイト信号生成回路112は、ウエイト#信号を、アドレスの最上位ビットを示す信号として内蔵メモリ14に出力する。
0044
ADR変換回路120は、1クロックサイクル目では、データを書き込む又は読み出すアドレスを内蔵メモリ14に対して指定するために、バスマスタから入力されるアドレス信号をそのまま内蔵メモリ14に出力する。一方、ADR変換回路120は、2クロックサイクル目では、書き込むデータ又は読み出すデータとペアとなるECCを書き込む又は読み出すアドレスを内蔵メモリ14に対して指定するために、バスマスタから入力されるアドレス信号に基づいて、ECCを書き込む又は読み出すアドレスを示すアドレス信号を生成し、内蔵メモリ14に出力する。
0045
ADR変換回路120は、ADR反転回路121と、セレクタ122とを有する。ADR反転回路121には、バスマスタから出力されるアドレス信号が入力される。ADR反転回路121は、入力されたアドレス信号が示すアドレスの全てのビットの各々の値を反転し、セレクタ122に出力する。セレクタ122は、バスマスタからのアドレス信号、及び、ADR反転回路121からのアドレス信号が入力される。セレクタ122は、バスマスタからのアドレス信号、及び、ADR反転回路121からのアドレス信号のうち、いずれか1つを選択し、内蔵メモリ14に出力する。
0046
セレクタ122は、ウエイト信号生成回路112からデータ/ECC信号(例えば値は“0”)が入力されている1クロックサイクル目の場合、バスマスタから入力されるアドレス信号を選択し、内蔵メモリ14に出力する。一方、セレクタ122は、ウエイト信号生成回路112からデータ/ECC信号(例えば値は“1”)が入力されている2クロックサイクル目の場合、ADR反転回路121から入力されるアドレス信号を選択し、内蔵メモリ14に出力する。
0047
これにより、最終的に内蔵メモリ14に入力される(N+1)ビットのアドレス信号のうち、下位Nビットは、ADR変換回路120が出力するNビットのアドレス信号となり、上位1ビットは、ウエイト信号生成回路112が出力するデータ/ECC信号となる。
0048
そして、内蔵メモリ14は、1クロックサイクル目では、(N+1)ビットのアドレス信号が示すアドレスに対して、データの書き込み又は読み出しを行う。内蔵メモリ14は、2クロックサイクル目では、(N+1)ビットのアドレス信号が示すアドレスに対して、ECCの書き込み又は読み出しを行う。
0049
WDT変換回路130は、1クロックサイクル目では、データを内蔵メモリ14に対して書き込むために、バスマスタから入力されるライトデータをそのまま内蔵メモリ14に出力する。一方、WDT変換回路130は、2クロックサイクル目では、そのライトデータとペアとなるECCを内蔵メモリ14に対して書き込むために、バスマスタから入力されるライトデータに基づいて、ECCを生成し、内蔵メモリ14に出力する。
0050
WDT変換回路130は、ECC生成回路131と、セレクタ132とを有する。ECC生成回路131には、バスマスタからのライトデータが入力される。ECC生成回路131は、入力されたライトデータからECCを生成し、セレクタ132に出力する。
0051
セレクタ132は、バスマスタからのライトデータ、及び、ECC生成回路131からのECCが入力される。セレクタ132は、バスマスタからのライトデータ、及び、ECC生成回路131からのECCのうち、いずれか1つを選択し、内蔵メモリ14に出力する。
0052
セレクタ132は、ウエイト信号生成回路112からデータ/ECC信号(例えば値は“0”)が入力されている1クロックサイクル目の場合、バスマスタから入力されるライトデータを選択し、内蔵メモリ14に出力する。一方、セレクタ132は、ウエイト信号生成回路112からデータ/ECC信号(例えば値は“1”)が入力されている2クロックサイクル目の場合、ECC生成回路131から入力されるECCを選択し、内蔵メモリ14に出力する。
0053
これにより、内蔵メモリ14は、データの書き込みを指定するライト/リード信号が入力されている場合、1クロックサイクル目では、バスマスタから入力されるライトデータを、(N+1)ビットのアドレス信号が示すアドレスに格納する。内蔵メモリ14は、2クロックサイクル目では、WDT変換回路130から入力されるECC(厳密には、後述するようにダミービットとECCを含むデータ)を、(N+1)ビットのアドレス信号が示すアドレスに格納する。なお、バスマスタから出力されたライト/リード信号は、I/F変換回路13を介して、そのまま内蔵メモリ14に入力される。
0054
一方、内蔵メモリ14は、データの読み出しを指定するライト/リード信号が入力されている場合、1クロックサイクル目では、(N+1)ビットのアドレス信号が示すアドレスに格納されたデータを、リードデータとしてRDT変換回路140に出力する。内蔵メモリ14は、2クロックサイクル目では、(N+1)ビットのアドレス信号が示すアドレスに格納されたECCをRDT変換回路140に出力する。
0055
RDT変換回路140は、バスマスタが内蔵メモリ14からデータを読み出す際に、内蔵メモリ14から入力されたリードデータ及びECCに基づいて、リードデータに誤りが発生しているか否かを判定する。RDT変換回路140は、リードデータに誤りが発生していない場合、内蔵メモリ14から入力されたリードデータを、そのままバスマスタに出力する。一方、RDT変換回路140は、リードデータに誤りが発生している場合、内蔵メモリ14から入力されたリードデータにおける誤りをECCに基づいて訂正してからバスマスタに出力する。
0057
データ保持回路141は、バスマスタが内蔵メモリ14に対してアクセスした際に、クロック信号に基づいて、1クロックサイクル目で内蔵メモリ14から入力されたリードデータを取り込み、2クロックサイクル目で保持したリードデータをECCチェック回路142及びエラー訂正回路143に出力する。データ保持回路141は、例えば、FF回路である。
0058
ECCチェック回路142は、1クロックサイクル目では動作せず、2クロックサイクル目で、データ保持回路141から入力されるリードデータと、内蔵メモリ14から入力されるECCとに基づいて、データの誤りが発生しているか否かを判定する。
0059
すなわち、ECCチェック回路142は、1クロックサイクル目で、ウエイト信号生成回路112からデータ/ECC信号(例えば値は“0”)が入力されている場合、故障の判定は行わない。一方、ECCチェック回路142は、2クロックサイクル目で、ウエイト信号生成回路112からデータ/ECC信号(例えば値は“1”)が入力されている場合、データの誤りが発生しているか否かを判定する。言い換えると、データ/ECC信号は、ECCチェック回路142の動作を有効にするか無効にするかを指示するイネーブル信号として機能する。
0060
ECCチェック回路142は、データのいずれか1ビットに誤りが発生していると判定した場合、そのビット位置を示すエラー訂正信号をエラー訂正回路143に出力する。ECCチェック回路142は、データに訂正不能な2ビット以上の誤りが発生していると判定した場合、エラーであることを通知する信号として、アサートされたエラー通知信号(例えば値は“1”)をバスマスタに出力する。一方、ECCチェック回路142は、データに訂正不能な2ビット以上の誤りが発生していないと判定した場合、エラーでないことを通知する信号として、デアサートされたエラー通知信号(例えば値は“0”)をバスマスタに出力する。
0061
エラー訂正回路143は、データに誤りが発生していない場合、2クロックサイクル目でデータ保持回路141から入力されるリードデータを、そのままバスマスタに出力する。一方、エラー訂正回路143は、データに誤りが発生している場合、2クロックサイクル目でデータ保持回路141から入力されるリードデータの誤りを訂正してからバスマスタに出力する。より具体的には、エラー訂正回路143は、データ保持回路141から入力されるリードデータのうち、ECCチェック回路142から入力されるエラー訂正信号が示すビット位置の値を反転させた結果となるデータを、エラー訂正後のリードデータとしてバスマスタに出力する。エラー訂正回路143は、例えば、N個のXOR(排他的論理和)回路を有する。
0062
続いて、図3を参照して、本実施の形態1に係るADR変換回路120が有するADR反転回路121の構成について説明する。図3に示すように、ADR変換回路120は、N個のビット値反転回路1210を有する。ここでは、アドレス信号がNビットである例について説明する。
0063
N個のビット値反転回路1210の各々は、Nビットのアドレス信号の各ビットA0、A1、A2、・・・、A(N−1)に対応する。N個のビット値反転回路1210の各々は、アドレス信号のうち、自身に対応するビットの値を反転し、反転後の値を出力する。N個のビット値反転回路1210の各々から出力された各ビットA’0、A’1、A’2、・・・、A’(N−1)は、Nビットのアドレス信号としてまとめられ、内蔵メモリ14に出力される。ここで、“A”に続く数字は、数字が大きくなるほど上位のビットであることを示している。すなわち、N個のビットにおいて、“0”は最下位ビットであることを示し、“N−1”は最上位ビットであることを示している。以降も同様である。ビット値反転回路1210は、例えば、NOT(論理否定)回路である。
0064
続いて、図4を参照して、本実施の形態1に係る内蔵メモリ14のメモリマップについて説明する。ここでは、内蔵メモリ14のデータ幅は8ビットであり、内蔵メモリ14のアドレス幅は(N+1)ビットであり、内蔵メモリ14のデータ容量が(8×2(N+1))ビットであり、N=3である例について説明する。
0065
内蔵メモリ14は、図4における下位半分を本来のデータを格納する領域、上位半分を本来のデータとペアになるECCを格納する領域として使用する。つまり、内蔵メモリ14における領域は、そのアドレス空間において、アドレスの最上位ビット(図4ではA3)の値が“0”となる場合はデータが格納される領域として、“1”となる場合はECCが格納される領域として区別される。本実施の形態1では、データを格納するアドレスの下位Nビット(図4ではA2〜A0)の値に対して、そのデータとペアになるECCを格納するアドレスの下位Nビットの値は、図3に示したADR反転回路121の動作によりビット値を反転した値(図4においてA2〜A0の値を「ADR反転」と示している部分)になっている。
0066
すなわち、図4に示すように、アドレスADR−0(“0000”)のデータ(“DATA0”)と、アドレスADR−F(“1111”)のECC(“ECC0”)とがペアになる。アドレスADR−1(“0001”)のデータ(“DATA1”)と、アドレスADR−E(“1110”)のECC(“ECC1”)がペアになる。アドレスADR−2(“0010”)のデータ(“DATA2”)と、アドレスADR−D(“1101”)のECC(“ECC2”)がペアになる。アドレスADR−3(“0011”)のデータ(“DATA3”)と、アドレスADR−C(“1100”)のECC(“ECC3”)がペアになる。アドレスADR−4(“0100”)のデータ(“DATA4”)と、アドレスADR−B(“1011”)のECC(“ECC4”)がペアとなる。アドレスADR−5(“0101”)のデータ(“DATA5”)と、アドレスADR−A(“1010”)のECC(“ECC5”)がペアとなる。アドレスADR−6(“0110”)のデータ(“DATA6”)と、アドレスADR−9(“1001”)のECC(“ECC6”)がペアとなる。アドレスADR−7(“0111”)のデータ(“DATA7”)と、アドレスADR−8(“1000”)の(“ECC7”)がペアになる。
0067
ここで、図4に示す「ADR−n」の「n」にあたる部分は、アドレスを16進数表記したものである。すなわち、「ADR−0」は、アドレスが“0000”であることを意味し、「ADR−F」は、アドレスが“1111”であることを意味する。
0068
なお、8ビットのデータから生成されるECCは5ビットであるため、そのECCは上位3ビットにダミービット(例えば値は“0”)を付加して8ビットのデータとされた後で内蔵メモリ14に格納される。
0069
内蔵メモリ14は、以上に説明したように構成されており、その内蔵メモリ14に対して設けているI/F変換回路13も以上に説明した通りに動作する。そのため、内蔵メモリ14に書き込んだデータのいずれかのビットに誤りが発生した場合には、そのデータを読み出す際に、I/F変換回路13のRDT変換回路140で、そのデータの誤りが検出される。そして、1ビット誤りが検出された場合には、エラーが訂正される。2ビット以上の誤りが検出された場合には、エラー通知信号でエラー訂正不能であることが通知される。
0070
よって、I/F変換回路13のWDT変換回路130から内蔵メモリ14に出力するライトデータ(8ビット)の8本の信号線のうち、いずれか1本以上の故障(断線)によりStuck−at故障(0または1への固着)が発生した場合、相互にペアを成すデータとECCの両方において、故障した信号線に対応するビット位置の値が本来の値と異なる値(反転した値)になる。そのため、そのデータを読み出す際に、ECCチェック回路142で1ビットの誤り、または、2ビット以上の誤りとして、その値の変化が確実に検出される。I/F変換回路13のRDT変換回路140が内蔵メモリ14から入力するリードデータ(8ビット)の8本の信号線のうち、いずれか1本以上の故障(断線)によりStuck−at故障(0または1への固着)が発生した場合も同様である。
0071
一方、I/F変換回路13のADR変換回路120から内蔵メモリ14に入力するアドレス信号(Nビット)のN本の信号線のうち、いずれか1本以上の故障(断線)によりStuck−at故障(0または1に固着)が発生した場合については、以下に説明する通りとなる。
0072
図5を参照して、内蔵メモリ14に入力するアドレス信号(Nビット)のうち、A2ビットにStuck−at1故障(1への固着)が発生した場合の動作について説明する。なお、内蔵メモリ14は、図4に示したように、N=3であるものとする。また、ここでは、以下の流れでデータの書き込みと読み出しが行われる場合について説明する。
0073
(1)データ(“DATA5”)がアドレスADR−5(“0101”)に書き込まれており、そのデータとペアになるECC(“ECC5”)がアドレスADR−A(“1010”)に書き込まれている。図では、括弧付きで“DATA5”と“ECC5”を示している。
(2)新たに、データ(“DATA1”)をアドレスADR−1(“0001”)に、そのデータとペアになるECC(“ECC1”)を、アドレスADR−E(“1110”)に書き込む。
(3)ここで、アドレスのA2ビットに対応するアドレス信号線にStuck−at1故障が発生する。そのため、内蔵メモリ14のアドレスADR−0〜ADR−3とADR−8〜ADR−Bのアドレスにはアクセスできなくなる。
(4)上記の(2)で書き込んだデータ(“DATA1”)と、そのデータとペアになるECC(“ECC1”)を読み出そうとする。
(4)’このとき、実際には、上記の(3)で発生したアドレス信号線の故障により、データ(“DATA1”)が格納されているアドレスADR−1(“0001”)からではなく、内蔵メモリ14のアドレスADR−5(“0101”)からデータ(“DATA5”)が読み出される。一方、ECC(“ECC1”)が格納されているアドレスADR−E(“1110”)は、このアドレス信号線の故障による影響を受けないため、正常にECC(“ECC1”)が読み出される。つまり、上記の(2)で書き込んだデータではないデータ(“DATA5”)と、そのデータとはペアが崩れたECC(“ECC1”)が読み出される。
(5)その結果、RDT変換回路140が有するECCチェック回路142で1ビットの誤り、又は、2ビット以上の誤りとして、Stuck−at1故障が確実に検出される。このように、アドレス信号系の故障の検出も可能であるため、本実施の形態1は、機能安全の観点から優れていると言える。
0074
また、図6を参照して、ECCを格納する領域に対して「ADR反転」を行わないケース(つまり、図2に示したI/F変換回路13におけるADR変換回路120を無くしたケース)で、図5と同じデータの書き込みと読み出しが行われる場合の動作について説明する。
0075
(1)データ(“DATA5”)がアドレスADR−5(“0101”)に書き込まれており、そのデータとペアになるECC(“ECC5”)がADR−D(“1101”)に書き込まれている。図では、括弧付きで“DATA5”と“ECC5”を示している。
(2)新たに、データ(“DATA1”)をアドレスADR−1(“0001”)に、そのデータとペアになるECC(“ECC1”)をアドレスADR−9(“1001”)に書き込む。
(3)ここで、アドレスのA2ビットに対応するアドレス信号線にStuck−at1故障が発生する。そのため、内蔵メモリ14のアドレスADR−0〜ADR−3とADR−8〜ADR−Bのアドレスにはアクセスできなくなる。
(4)上記の(2)で書き込んだデータ(“DATA1”)と、そのデータとペアになるECC(“ECC1”)を読み出そうとする。
(4)’このとき、実際には、上記の(3)で発生したアドレス信号線の故障により、データ(“DATA1”)が格納されているアドレスADR−1(“0001”)からではなく、内蔵メモリ14のアドレスADR−5(“0101”)からデータ(“DATA5”)が読み出される。また、ECC(“ECC1”)が格納されているアドレスADR−9(“1001”)も、このアドレス信号線の故障による影響を受けるため、内蔵メモリ14のアドレスADR−D(“1101”)からECC(“ECC5”)が読み出される。つまり、上記の(2)で書き込んだデータではないデータ(“DATA5”)と、そのデータとペアを成すECC(“ECC5”)が読み出される。
(5)その結果、RDT変換回路140が有するECCチェック回路142では、正常なデータ(“DATA5”)とECC(“ECC5”)のペアに見えるため、データにビット誤りが発生していない限り、1ビットの誤り、又は、2ビット以上の誤りとして故障を検出することはできない。
0076
なお、図5は、内蔵メモリ14に入力するアドレス信号のうち、A2ビットにStuck−at1故障(1への固着)が発生した場合の動作を示したものであった。しかし、そのA2ビットにStuck−at0故障(0への固着)が発生した場合や、他のアドレス(具体的には、A1ビットとA0ビット)にStuck−at1故障またはStuck−at0故障が発生した場合であっても、本実施の形態1によれば同様にアドレス信号線の故障を検出可能である。
0077
図7は、図4に示したN=3の場合について、“DATA0”と“ECC0”、“DATA1”と“ECC1”、・・・、“DATA7”と“ECC7”という8通りのペアについて、アドレス信号の下位3ビットA2〜A0の値を、8行(上から順番に“0”〜“7”と番号付け)にわたって示した表である。図7では、データを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(データ)」として示し、ECCを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(ECC)」として示している。
0078
この表の左から右に向かって、
(1)アドレスの全ビットに故障が発生していない場合
(2)アドレスのA2ビットにStuck−at1故障が発生した場合(これが、図5に示したものに相当する)、
(3)アドレスのA2ビットにStuck−at0故障が発生した場合
(4)アドレスのA1ビットにStuck−at1故障が発生した場合
(5)アドレスのA1ビットにStuck−at0故障が発生した場合
(6)アドレスのA0ビットにStuck−at1故障が発生した場合
(7)アドレスのA0ビットにStuck−at0故障が発生した場合
の7通りを示している。
0079
なお、A2〜A0の値として、各ビット位置の値(0または1)を3つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
0080
図7に示した表の2行目(番号は1)は、図5の(2)において書き込むデータ(“DATA1”)と、そのデータとペアになるECC(“ECC1”)の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ADR−1の下位3ビット(“001”)とADR−Eの下位3ビット(“110”)となる。図7の表において、この2つのA2〜A0の値のペアを実線で囲んで示している。
0081
ここで、A2ビットにStuck−at1故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス(データ)のADR−1は故障による影響を受けて別のADR−5(下位3ビットは“101”)となり、アドレス(ECC)のADR−E(下位3ビットは“110”)は故障による影響を受けずにADR−Eのままとなる。この2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この2つのA2〜A0の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス(データ)及びアドレス(ECC)を、表において実線で囲むとともに太実線で接続して示している。これによって、データ(“DATA5”)とECC(“ECC1”)がアクセスされる。すなわち、図5の(4)’で説明した通り、データとECCのペアが崩れていることが分かる。
0082
同じく、さらに右に進むにつれて、他の例として、A1ビットにStuck−at1故障が発生した場合と、A0ビットにStuck−at1故障が発生した場合についても、2つのA2〜A0の値のペアについて、上記と同様の形で示しているが、いずれの場合も、データとECCのペアが崩れていることが分かる。
0083
また、さらに、他の例として、図7に示した表の7行目(番号は6)における、データ(“DATA6”)と、そのデータとペアとなるECC(“ECC6”)の各々が格納されるアドレスに関して、同様に、A2ビットにStuck−at0故障が発生した場合、A1ビットにStuck−at0故障が発生した場合、A0ビットにStuck−at0故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとECCのペアは崩れている。この表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、確実に故障が検出できることが分かる。
0084
また、図8は、ECCを格納する領域に対して「ADR反転」を行わないケース(つまり、図2に示したI/F変換回路13におけるADR変換回路120を無くしたケース)で、図7と同様にアドレス(データ)とアドレス(ECC)の下位3ビットであるA2〜A0の値を示した表である。この表の2行目(番号は1)で左から2通り目にあるアドレスのA2ビットにStuck−at1故障が発生した場合が、図6に示したものに相当する。
0085
このケースの場合、図8に示した表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、その影響によりアクセスできなくなるアドレスのデータとECCのペアは、それとは別のアドレスのデータとECCのペアとして認識される(つまり、アドレスが縮退される)。そのため、そのデータを読み出す際に、アドレス信号線の故障を検出することはできない。
0086
以上の説明では、バスマスタから入力されるNビットのアドレス信号の全てのビットの値を反転する例について説明したが、これに限られない。例えば、Nビットのアドレス信号のうちの所定数ビット(Nビット〜1ビットのいずれか)の値を反転するようにしても一定の効果が得られる。なお、この所定数ビットは、Nビットにおいて、上位から所定数のビットでもよく、下位から所定数のビットでもよい。また、この所定数ビットは、Nビットにおいて、連続したビットでもよく、非連続のビットでもよい。しかしながら、好ましくは、上述したように、Nビットのアドレス信号の全てのビットの値を反転することで、より多くの故障を検出することが可能となる。
0087
以上に説明したように、本実施の形態1では、ADR変換回路120は、内蔵メモリ14にデータを格納するための第1のアドレスに基づいて、データから生成された誤り検出符号を格納するための第2のアドレスを生成する。WDT変換回路130は、第1のアドレスに対してデータの書き込みが要求された場合、第1のアドレスにデータを書き込むとともに、第2のアドレスに誤り検出符号を書き込む。RDT変換回路104は、第1のアドレスに対してデータの読み出しが要求された場合、第1のアドレスからデータを読み出すとともに、第2のアドレスから誤り検出符号を読み出し、そのデータとその誤り検出符号とに基づいてエラーを検出する。
0088
ここで、I/F制御回路110は、第1のアドレス((N+1)ビットのアドレスに対応)の少なくとも1つのビットの値((N+1)ビットのアドレスの最上位ビットに対応)を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにしている。ADR変換回路120は、それ以外のビット(下位Nビットに対応)のうちの所定数ビットの値が反転したアドレスを第2のアドレスとして生成している。上述の例では、ADR変換回路120は、それ以外のビットの全て(Nビット)の値を反転したアドレスを第2のアドレスとして生成するようにしている。
0089
これによれば、データと、そのデータから生成したECCのペアを内蔵メモリ14に書き込んだ後で、内蔵メモリ14に対するアドレス信号線のいずれか1本にStuck−at故障(0または1への固着)が発生した場合、その書き込み済みのデータを読み出す際に、アドレス信号線の故障検出が可能となる。
0090
これは、2本以上のアドレス信号線の故障に対しても同様に有効である。また、内蔵メモリ14に入力するアドレス信号を生成して出力するADR変換回路120や、内蔵メモリ14の中のアドレス信号処理回路(図示せず)で起きたアドレスの値に影響が出る故障も検出可能である。
0091
また、本実施の形態1では、バスマスタは、データの書き込み又は読み出しが行われる単位時間(クロックサイクルに対応)の間、データの書き込み又は読み出しを有効にするイネーブル信号を内蔵メモリ14に出力する。I/F制御回路110は、バスマスタからのデータの書き込み又は読み出しを有効にするイネーブル信号に応じて、単位時間の間、バスマスタの動作を許容するウエイト信号に代えて、バスマスタの動作を抑止するウエイト信号をバスマスタに出力する。
0092
WDT変換回路130は、I/F制御回路110からのバスマスタの動作を抑止するウエイト信号に応じて、第1のアドレスにデータを書き込み(第1のクロックサイクルに対応)、その後のI/F制御回路110からのバスマスタの動作を許容するウエイト信号に応じて、第2のアドレスに誤り検出符号を書き込む(第2のクロックサイクルに対応)ようにしている。
0093
RDT変換回路140は、I/F制御回路110からのバスマスタの動作を抑止するウエイト信号に応じて、その後の第1のアドレスからデータを読み出し、I/F制御回路110からのバスマスタの動作を許容するウエイト信号に応じて、第2のアドレスから誤り検出符号を読み出すようにしている。
0094
これによれば、バスマスタによるデータの書き込み又は読み出しの要求を継続させることができるとともに、その継続させた時間を利用して誤り検出符号を内蔵メモリ14に書き込む又は内蔵メモリ14から読み出すことができる。また、データの書き込みの要求の継続と、データの書き込み及び誤り検出符号の書き込みの切り替えとを、ウエイト信号を流用して、より簡易な構成で実現することができる。また、データの読み出しの要求の継続と、データの読み出し及び誤り検出符号の読み出しの切り替えとを、ウエイト信号を流用して、より簡易な構成で実現することができる。
0095
また、本実施の形態1では、バスマスタの動作を抑止するウエイト信号は、第1のアドレスの少なくとも1つのビットの値として利用される。また、バスマスタの動作を許容するウエイト信号は、第1のアドレスの少なくとも1つのビットの値の変更後の値として利用されるようにしている。
0096
これによれば、データの書き込み又は読み出しの要求の継続と、データの格納位置に対する誤り検出符号の格納位置のオフセットとを、ウエイト信号を流用して、より簡易な構成で実現することができる。
0097
また、本実施の形態1では、RDT変換回路140は、I/F制御回路110からのバスマスタの動作を抑止するウエイト信号に応じて、内蔵メモリ14から読み出したデータを保持し、その後のI/F制御回路110からのバスマスタの動作を許容するウエイト信号に応じて、内蔵メモリ14から読み出した誤り検出符号と、保持したデータとに基づいてエラーを検出するようにしている。
0098
これによれば、データの書き込み又は読み出しの要求の継続と、エラー検出のための動作の切り替えとを、ウエイト信号を流用して、より簡易な構成で実現することができる。
0099
<実施の形態2>
続いて、実施の形態2について、図面を用いて、その構成と動作を説明する。本実施の形態2に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態2では、CPUシステム1が有するI/F変換回路13の一部の構成と動作が、実施の形態1に係るI/F変換回路13とは異なる。
0100
続いて、図9を参照して、本実施の形態2に係るI/F変換回路13の構成について説明する。本実施の形態2に係るI/F変換回路13は、実施の形態1に係るI/F変換回路13と比較して、ADR変換回路120におけるADR反転回路121に代えて、ADRローテーション回路123を有する。なお、本実施の形態2に係るI/F制御回路110、WDT変換回路130及びRDT変換回路140の構成及び動作は、実施の形態1に係るそれらと同様である。
0101
ADRローテーション回路123には、バスマスタから出力されるアドレス信号が入力される。ADRローテーション回路123は、入力されたアドレス信号が示すアドレスの全てのビットをローテーション(シフト)して、セレクタ122に出力する。よって、本実施の形態2では、セレクタ122は、バスマスタから出力されるアドレス信号、及び、ADRローテーション回路123から出力されるアドレス信号のうち、いずれか1つを選択し、内蔵メモリ14に出力する。
0102
続いて、図10を参照して、本実施の形態2に係るADR変換回路120が有するADRローテーション回路123の構成について説明する。ここでは、アドレス信号がNビットである例について説明する。
0103
図10に示すように、ADRローテーション回路123は、Nビットのアドレス信号の各ビットの位置を入れ替えるために、そのアドレス信号が示すアドレスを左方向に(上位ビット方向に)1ビットだけローテーションする。すなわち、ADRローテーション回路123は、アドレス信号のNビットを1ビットだけ左シフトして溢れた最上位ビットを最下位ビットに移す。
0104
これは、図10に示すように、ADRローテーション回路123において、Nビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ADRローテーション回路123に入力されたNビットのアドレス信号の各ビットA0、A1、A2、・・・、A(N−1)を、ADRローテーション回路123から出力されるNビットのアドレス信号の各ビットA’1、A’2、・・・、A’(N−1)、A’0とする。なお、このADRローテーション回路123では、Nビットのアドレス信号線の各ビットの信号を、N個のバッファ1230の各々で受けた後に、その接続先のビット位置をずらすようにしている。
0105
続いて、図11を参照して、実施の形態2に係る内蔵メモリ14のメモリマップについて説明する。ここでは、図4に示した実施の形態1に係る内蔵メモリ14と同様に、内蔵メモリ14のデータ幅は8ビットであり、内蔵メモリ14のアドレス幅は(N+1)ビットであり、内蔵メモリ14のデータ容量が(8×2(N+1))ビットであり、N=3である例について説明する。
0106
本実施の形態2では、データを格納するアドレスの下位Nビット(図11ではA2〜A0)の値に対して、そのデータとペアになるECCを格納するアドレスの下位Nビットの値は、図10に示したADRローテーション回路123の動作により各ビット値が入れ替えられたもの(図11においてA2〜A0の値を「ADRローテーション」と示している部分)になっている。
0107
すなわち、図11に示すように、アドレスADR−0(“0000”)のデータ(“DATA0”)と、アドレスADR−8(“1000”)のECC(“ECC0”)とがペアになる。アドレスADR−1(“0001”)のデータ(“DATA1”)と、アドレスADR−A(“1010”)のECC(“ECC1”)がペアになる。アドレスADR−2(“0010”)のデータ(“DATA2”)と、アドレスADR−C(“1100”)のECC(“ECC2”)がペアになる。アドレスADR−3(“0011”)のデータ(“DATA3”)と、アドレスADR−E(“1110”)のECC(“ECC3”)がペアとなる。アドレスADR−4(“0100”)のデータ(“DATA4”)と、アドレスADR−9(“1001”)のECC(“ECC4”)がペアとなる。アドレスADR−5(“0101”)のデータ(“DATA5”)と、アドレスADR−B(“1011”)のECC(“ECC5”)がペアとなる。アドレスADR−6(“0110”)のデータ(“DATA6”)と、アドレスADR−D(“1101”)のECC(“ECC6”)がペアとなる。アドレスADR−7(“0111”)のデータ(“DATA7”)と、アドレスADR−F(“1111”)のECC(“ECC7”)がペアになる。
0108
なお、実施の形態1と同様に、ECCは上位3ビットにダミービット(例えば値は“0”)を付加して8ビットのデータとされた後で内蔵メモリ14に格納される。また、実施の形態1と同様に、I/F変換回路13のWDT変換回路130が内蔵メモリ14に出力するライトデータ(8ビット)の8本の信号線のうち、いずれか1本以上に故障(断線)によりStuck−at故障(0または1への固着)が発生した場合、相互にペアを成すデータとECCの両方において、故障した信号線に対応するビット位置の値が本来の値と異なる値(反転した値)になる。そのため、そのデータを読み出す際に、ECCチェック回路142で1ビットの誤り、または、2ビット以上の誤りとして、その値の変化が確実に検出される。I/F変換回路13のRDT変換回路140が内蔵メモリ14から入力するリードデータ(8ビット)の8本の信号線のうち、いずれか1本以上の故障(断線)によりStuck−at故障(0または1への固着)が発生した場合も同様である。
0109
一方、I/F変換回路13のADR変換回路120から内蔵メモリ14に入力するアドレス信号(Nビット)のN本の信号線のうち、いずれか1本以上の故障(断線)によりStuck−at故障(0または1に固着)が発生した場合については、以下に説明する通りとなる。
0110
図12を参照して、実施の形態1の場合の図5と同様に、内蔵メモリ14に入力するアドレス信号(Nビット)のうち、A2ビットにStuck−at1故障(1への固着)が発生した場合の動作について説明する。なお、内蔵メモリ14は、図11に示したように、N=3であるものとする。また、ここでは、以下の流れでデータの書き込みと読み出しが行われる場合について説明する。
0111
(1)データ(“DATA3”)がアドレスADR−3(“0011”)に、そのデータとペアになるECC(“ECC3”)がアドレスADR−E(“1110”)に書き込まれている。また、データ(“DATA5”)がアドレスADR−5(“0101”)に、そのデータとペアになるECC(“ECC5”)がアドレスADR−B(“1011”)に書き込まれている。図では、括弧付きでこれらを示している。
(2)新たに、データ(“DATA1”)をアドレスADR−1(“0001”)に、そのデータとペアになるECC(“ECC1”)をアドレスADR−A(“1010”)に書き込む。
(3)ここで、アドレスのA2ビットに対応するアドレス信号線にStuck−at1故障が発生する。そのため、内蔵メモリ14のアドレスADR−0〜ADR−3とADR−8〜ADR−Bのアドレスにはアクセスできなくなる。
(4)上記の(2)で書き込んだデータ(“DATA1”)と、そのデータとペアになるECC(“ECC1”)を読み出そうとする。
(4)’このとき、実際には、上記の(3)で発生したアドレス信号線の故障により、データ(“DATA1”)が格納されているアドレスADR−1(“0001”)からではなく、内蔵メモリ14のアドレスADR−5(“0101”)からデータ(“DATA5”)が読み出される。また、ECC(“ECC1”)が格納されているアドレスADR−A(“1010”)からではなく、アドレスADR−E(“1110”)からECC(“ECC3”)が読み出される。つまり、上記の(2)で書き込んだデータではないデータ(“DATA5”)と、そのデータとはペアが崩れたECC(“ECC3”)が読み出される。
(5)その結果、RDT変換回路140が有するECCチェック回路142で1ビットの誤り、又は、2ビット以上の誤りとして、Stuck−at1故障が確実に検出される。このように、アドレス信号系の故障の検出も可能であるため、本実施の形態2は、機能安全の観点から優れていると言える。
0112
なお、図12は、内蔵メモリ14に入力するアドレス信号のうち、A2ビットにStuck−at1故障(1への固着)が発生した場合の動作を示したものであった。しかし、そのA2ビットにStuck−at0故障(0への固着)が発生した場合や、他のアドレス(具体的には、A1ビットとA0ビット)にStuck−at1故障またはStuck−at0故障が発生した場合であっても、本実施の形態2によれば同様にアドレス信号線の故障を検出可能である。
0113
図13は、図11に示したN=3の場合について、“DATA0”と“ECC0”、“DATA1”と“ECC1”、・・・、“DATA7”と“ECC7”という8通りのペアについて、アドレス信号の下位3ビットA2〜A0の値を、8行(上から順番に“0”〜“7”と番号付け)にわたって示した表である。図13では、データを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(データ)」として示し、ECCを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(ECC)」として示している。
0114
この表の左から右に向かって、
(1)アドレスの全ビットに故障が発生していない場合
(2)アドレスのA2ビットにStuck−at1故障が発生した場合(これが、図12に示したものに相当する)、
(3)アドレスのA2ビットにStuck−at0故障が発生した場合
(4)アドレスのA1ビットにStuck−at1故障が発生した場合
(5)アドレスのA1ビットにStuck−at0故障が発生した場合
(6)アドレスのA0ビットにStuck−at1故障が発生した場合
(7)アドレスのA0ビットにStuck−at0故障が発生した場合
の7通りを示している。
0115
なお、A2〜A0の値として、各ビット位置の値(0または1)を3つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
0116
図13に示した表の2行目(番号は1)は、図12の(2)において書き込むデータ(“DATA1”)と、そのデータとペアになるECC(“ECC1”)の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ADR−1の下位3ビット(“001”)とADR−Aの下位3ビット(“010”)となる。図13の表において、この2つのA2〜A0の値のペアを実線で囲んで示している。
0117
ここで、A2ビットにStuck−at1故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス(データ)のADR−1は故障による影響を受けて別のADR−5(下位3ビットは“101”)となり、アドレス(ECC)のADR−Aも故障による影響を受けて別のADR−E(下位3ビットは“110”)となる。この2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この2つのA2〜A0の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス(データ)及びアドレス(ECC)を、表において実線で囲むとともに太実線で接続して示している。これによって、データ(“DATA5”)とECC(“ECC3”)がアクセスされる。すなわち、図12の(4)’で説明した通り、データとECCのペアが崩れていることが分かる。
0118
同じく、さらに右に進むにつれて、他の例として、A1ビットにStuck−at1故障が発生した場合と、A0ビットにStuck−at1故障が発生した場合についても、2つのA2〜A0の値のペアについて、上記と同様の形で示しているが、いずれの場合も、データとECCのペアが崩れていることが分かる。
0119
また、さらに、他の例として、図13に示した表の7行目(番号は6)における、データ(“DATA6”)と、そのデータとペアとなるECC(“ECC6”)の各々が格納されるアドレスに関して、同様に、A2ビットにStuck−at0故障が発生した場合、A1ビットにStuck−at0故障が発生した場合、A0ビットにStuck−at0故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとECCのペアは崩れている。この表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、確実に故障が検出できることが分かる。
0120
さらに、本実施の形態2では、I/F変換回路13におけるADR変換回路120が内蔵メモリ14に入力するアドレス信号(Nビット)のN本の信号線のうち、いずれか1本に故障(断線)によりStuck−at故障(0または1への固着)が発生した後に、データの書き込みと読み出しが行われる場合であっても、以下に説明する通り、故障が検出できる。
0121
図14を参照して、内蔵メモリ14に入力するアドレス信号(Nビット)のうち、A2ビットにStuck−at1故障(1への固着)が発生した後に、データの書き込みと読み出しが行われる場合の動作について説明する。なお、内蔵メモリ14は、図11に示したように、N=3であるものとする。また、ここでは、以下の流れでデータの書き込みと読み出しが行われる場合について説明する。
0122
(1)データ(“DATA3”)がアドレスADR−3(“0011”)に、そのデータとペアになるECC(“ECC3”)がADR−E(“1110”)に書き込まれている。また、データ(“DATA5”)がアドレスADR−5(“0101”)に、そのデータとペアになるECC(“ECC5”)がADR−B(“1011”)に書き込まれている。また、データ(“DATA1”)がアドレスADR−1(“0001”)に、そのデータとペアになるECC(“ECC1”)がADR−A(“1010”)に書き込まれている。図では、括弧付きでこれらを示している。
(2)ここで、アドレスのA2ビットに対応するアドレス信号線にStuck−at1故障が発生する。そのため、内蔵メモリ14のアドレスADR−0〜ADR−3とADR−8〜ADR−Bのアドレスにはアクセスできなくなる。
(3)新たに、データ(“DATA2”)をアドレスADR−2(“0010”)に、そのデータとペアになるECC(“ECC2”)をアドレスADR−C(“1100”)に書き込もうとする。このとき、実際には、上記の(2)で発生したアドレス信号線の故障により、内蔵メモリ14のアドレスADR−2(“0010”)ではなく、アドレスADR−6(“0110”)にデータ(“DATA2”)が書き込まれる。一方、ECC(“ECC2”)は正常にアドレスADR−C(“1100”)に書き込まれる。
(4)続いて、データ(“DATA6”)をアドレスADR−6(“0110”)に、そのデータとペアになるECC(“ECC6”)をアドレスADR−D(“1101”)に書き込もうとする。このときは、上記の(2)で発生したアドレス信号線の故障を受けず、データ(“DATA6”)とECC(“ECC6”)は両方とも正常なアドレスに書き込まれる。
(4)’このとき、上記の(3)でアドレスADR−6(“0110”)に書き込まれたデータ(“DATA2”)が、データ(“DATA6”)で上書きされる。
(5)上記の(3)で書き込んだデータ(“DATA2”)と、そのデータとペアになるECC(“ECC2”)を読み出そうとする。
(5)’このとき、実際には、データ(“DATA2”)が格納されているはずのアドレスADR−2(“0010”)からではなく、内蔵メモリ14のアドレスADR−6(“0110”)からデータ(“DATA6”)が読み出される。このアドレスADR−6(“0110”)には、上記の(3)で一旦データ(“DATA2”)が書き込まれたものの、上記の(4)’でデータ(“DATA6”)に上書きされたためである。また、ECC(“ECC2”)が格納されているアドレスADR−C(“1100”)から正常にECC(“ECC2”)は読み出される。そのため、データ(“DATA6”)と、そのデータとはペアが崩れたECC(“ECC2”)が読み出される。
(6)その結果、RDT変換回路140が有するECCチェック回路142で1ビットの誤り、又は、2ビット以上の誤りとして、Stuck−at1故障が確実に検出される。このように、アドレス信号系の故障の検出も可能であるため、本実施の形態2は、機能安全の観点から優れていると言える。
0124
(1)データ(“DATA5”)がアドレスADR−5(“0101”)に、そのデータとペアになるECC(“ECC5”)がアドレスADR−A(“1010”)に書き込まれている。また、データ(“DATA1”)がアドレスADR−1(“0001”)に、そのデータとペアになるECC(“ECC1”)がアドレスADR−E(“1110”)に書き込まれている。図では、括弧付きでこれらを示している。
(2)ここで、アドレスのA2ビットに対応するアドレス信号線にStuck−at1故障が発生する。そのため、内蔵メモリ14のアドレスADR−0〜ADR−3とADR−8〜ADR−Bのアドレスにはアクセスできなくなる。
(3)新たに、データ(“DATA2”)をアドレスADR−2(“0010”)に、そのデータとペアになるECC(“ECC2”)をアドレスADR−D(“1101”)に書き込もうとする。このとき、実際には、上記の(2)で発生したアドレス信号線の故障により、内蔵メモリ14のアドレスADR−2(“0010”)ではなく、アドレスADR−6(“0110”)にデータ(“DATA2”)が書き込まれる。一方、ECC(“ECC2”)は正常にアドレスADR−D(“1101”)に書き込まれる。
(4)続いて、データ(“DATA6”)をアドレスADR−6(“0110”)に、そのデータとペアになるECC(“ECC6”)をアドレスADR−9(“1001”)に書き込もうとする。このとき、実際には、上記の(2)で発生したアドレス信号線の故障により、内蔵メモリ14のアドレスADR−9(“1001”)ではなく、アドレスADR−D(“1101”)にECC(“ECC6”)が書き込まれる。一方、データ(“DATA6”)は正常にアドレスADR−6(“0110”)に書き込まれる。
(4)’このとき、上記の(3)でアドレスADR−6(“0110”)に書き込まれたデータ(“DATA2”)が、データ(“DATA6”)で上書きされる。また、アドレスADR−D(“1101”)に書き込まれたECC(“ECC2”)が、ECC(“ECC6”)で上書きされる。
(5)上記の(3)で書き込んだデータ(“DATA2”)と、そのデータとペアになるECC(“ECC2”)を読み出そうとする。
(5)’このとき、実際には、データ(“DATA2”)が格納されているはずのアドレスADR−2(“0010”)からではなく、内蔵メモリ14のアドレスADR−6(“0110”)からデータ(“DATA6”)が読み出される。このADR−6(“0110”)は、上記の(3)で一旦データ(“DATA2”)が書き込まれたものの、上記の(4)’でデータ(“DATA6”)に上書きされたためである。また、ECC(“ECC2”)が格納されているはずのアドレスADR−D(“1101”)からECC(“ECC6”)が読み出される。このアドレスADR−D(“1101”)には、上記の(3)で一旦ECC(“ECC2”)が書き込まれたものの、上記の(4)’でECC(“ECC6”)に上書きされたためである。そのため、上記の(3)で書き込んだデータではないデータ(“DATA6”)と、そのデータとペアを成すECC(“ECC6”)が読み出される。
(6)その結果、RDT変換回路140が有するECCチェック回路142では、正常なデータ(“DATA6”)とECC(“ECC6”)のペアに見えるため、データにビット誤りが発生していない限り、1ビットの誤り、又は、2ビット以上の誤りとして故障を検出することはできない。
0125
なお、図14は、内蔵メモリ14に入力するアドレス信号のうち、A2ビットにStuck−at1故障(1への固着)が発生した場合の動作を示したものであった。しかし、そのA2ビットにStuck−at0故障(0への固着)が発生した場合や、他のアドレス(具体的には、A1ビットとA0ビット)にStuck−at1故障またはStuck−at0故障が発生した場合であっても、本実施の形態2によれば同様にアドレス信号線の故障を検出可能である。
0126
図16は、図11に示したN=3の場合について、“DATA0”と“ECC0”、“DATA1”と“ECC1”、・・・、“DATA7”と“ECC7”という8通りのペアについて、アドレス信号の下位3ビットA2〜A0の値を、8行(上から順番に“0”〜“7”と番号付け)にわたって示した表である。図16では、データを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(データ)」として示し、ECCを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(ECC)」として示している。この表の左から右に向かって、図13と同様に、上記(1)〜(7)の7通りの故障が発生した場合について示している。この表の3行目(番号は2)で左から2通り目にあるアドレスのA2ビットにStuck−at1故障が発生した場合が、図14に示したものに相当する。
0127
なお、A2〜A0の値として、各ビット位置の値(0または1)を3つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
0128
図16に示した表の3行目(番号は2)は、図14の(3)において書き込むデータ(“DATA2”)と、そのデータとペアになるECC(“ECC2”)の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ADR−2の下位3ビット(“010”)とADR−Cの下位3ビット(“100”)となる。図16の表において、この2つのA2〜A0の値のペアを点線で囲んで示している。
0129
ここで、A2ビットにStuck−at1故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス(データ)のADR−2は故障による影響を受けて別のADR−6(下位3ビットは“110”)となり、アドレス(ECC)のADR−C(下位3ビットは“100”)は故障による影響を受けずにADR−Cのままとなる。この2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この2つのA2〜A0の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス(データ)及びアドレス(ECC)を、表において実線で囲むとともに太実線で接続して示している。これによって、データ(“DATA6”)とECC(“ECC2”)がアクセスされる。すなわち、図14の(5)’で説明した通り、データとECCのペアが崩れていることが分かる。
0130
また、この3行目における2つのA2〜A0の値のペアの故障による影響を受けた後の値に加えて、1行目、5行目及び7行目についても、2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示している。しかしながら、これら4行に示されている2つのA2〜A0の値のペアは、アドレス(データ)がADR−6(その下位3ビットは“110”)またはADR−4(その下位3ビットは“100”)、アドレス(ECC)がADR−C(その下位3ビットは“100”)またはADR−D(その下位3ビットは“101”)である4通りの組み合わせになっている。そのため、図14の(4)’で説明した通り、本来のペアとは異なるアドレス(データ)とアドレス(ECC)にデータとECCのペアを書き込んだ場合であっても、本来のペアにおけるデータとECCのどちらか一方が上書きされてしまうことはあるが、データとECCの両方が上書きされてしまうことはない。
0131
同じ3行目の右の方には、他の例として、A1ビットにStuck−at1故障が発生した場合と、A0ビットにStuck−at1故障が発生した場合についても、2つのA2〜A0の値のペアについて、上記と同様の形で示しているが、いずれの場合もデータとECCのペアが崩れていることが分かる。また、データとECCの両方に対する上書きは発生しないことが分かる。
0132
さらに、他の例として、図16に示した表の6行目(番号は5)には、データ(“DATA5”)と、そのデータとペアとなるECC(“ECC5”)の各々が格納されるアドレスに関して、同様に、A2ビットにStuck−at0故障が発生した場合、A1ビットにStuck−at0故障が発生した場合、A0ビットにStuck−at0故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとECCのペアは崩れている。また、本来のペアにおけるデータとECCの両方に対する上書きは発生しない。この表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、確実に故障が検出できることが分かる。
0133
また、図17は、ECCを格納する領域に対して「ADR反転」を行う実施の形態1のケースについて、図16と同様にアドレス(データ)とアドレス(ECC)の下位3ビットであるA2〜A0の値を示した表である。この表の3行目(番号は2)で左から2通り目にあるアドレスのA2ビットにStuck−at1故障が発生した場合が、図15に示したものに相当する。
0134
このケースの場合、図17に示した表から、アドレスのいずれかのビットにStuck−at故障が発生した後に、データの書き込みと読み出しが行われる場合、アドレス(データ)とアドレス(ECC)のペアが本来のペアとは異なるものとなるが、それとは違うもう1つのアドレス(データ)とアドレス(ECC)のペアと一致してしまう(つまり、アドレスが縮退される)。そのため、そのデータを読み出す際に、アドレス信号線の故障を検出することができない場合がある。
0135
なお、このケースでは、2通りのアドレス(データ)とアドレス(ECC)のペアが1つに縮退されることが原因で、アドレス信号線の故障を見逃す場合があることが分かる。しかし、その縮退される前の2通りのペアの各々のアドレス(データ)またはアドレス(ECC)のA2〜A0の3ビットのアドレスパリティを算出すると、一方は値が“0”となり、他方は値が“1”になる。そのため、これを利用することで、両者の区別が可能となる。すなわち、このケースでも確実に故障が検出できるように工夫することは可能である。
0136
例えば、5ビットのECCに対して上位3ビットに付加されるダミービットとして、このアドレスパリティの値(0または1)を3つ並べた3ビットを用いるようにする。すなわち、アドレス(データ)のA2〜A0の3ビットのアドレスにおいて、“1”が奇数含まれている場合はダミービットとして“111”が生成され、“1”が偶数含まれている場合はダミービットとして“000”が生成される。ECCチェック回路142は、ECCを読み出した際にその3ビットの各ビットの値において多数決で最も多い値をアドレスパリティの値として判定する。そして、ECCチェック回路142は、その判定した値が“0”なのか“1”なのかによって、データとECCのペアが正しいものなのか、それともアドレス信号線の故障により本来のペアにおけるデータとECCが両方とも上書きされてしまったものかどうかを識別して、アドレス信号線の故障を検出する。
0137
より具体的には、この故障検出方法を採用する場合には、バスマスタから入力されるアドレス信号を、ECC生成回路131と、ECCチェック回路142にも入力されるようにする。そして、ECC生成回路131は、入力されたアドレス信号が示すアドレスに基づいて、ダミービットを生成する。また、ECCチェック回路142は、入力されたアドレス信号が示すアドレスに基づいてアドレスパリティを生成し、生成したアドレスパリティと、内蔵メモリ14から入力されたECCに付加されたダミービットから判定されたアドレスパリティが一致するか否かを判定する。そして、ECCチェック回路142は、比較したアドレスパリティが一致しない場合、アドレス信号線が故障していると判定し、エラーを通知するエラー通知信号(例えば値は“1”)を出力する。
0138
ここで、ECC生成回路131は、3ビットのダミービットの全てではなく、いずれか1ビット又は2ビットにアドレスパリティの値を設定してもよい。そして、ECCチェック回路142は、その1ビット又は2ビットのいずれかの値を参照して、アドレスパリティの値を判定してもよい。しかしながら、この場合は、データは訂正可能であるが、アドレスパリティの値が変更されてしまう1ビットの誤りが発生した場合に、訂正不能な誤りが発生したことを通知するエラー通知信号(例えば値は“1”)が通知されてしまう。よって、好ましくは、上述したように、ダミービットの3ビットの全てにアドレスパリティの値を設定するとよい。
0139
以上の説明では、バスマスタから入力されるNビットのアドレス信号の全てのビットをローテーション(シフト)する例について説明したが、これに限られない。例えば、Nビットのアドレス信号のうちの所定数ビット(Nビット〜1ビットのいずれか)をローテーションするようにしても一定の効果が得られる。なお、この所定数ビットは、上述同様に、上位のビットでもよく、下位のビットでもよく、連続したビットでもよく、非連続のビットでもよい。しかしながら、好ましくは、上述したように、Nビットのアドレス信号の全てのビットをローテーションすることで、より多くの故障を検出することが可能となる。
0140
以上に説明したように、本実施の形態2では、ADR変換回路120は、第1のアドレス(N+1ビットのアドレスに対応)の少なくとも1つのビットの値以外のビット(下位Nビットに対応)のうちの所定数ビットを並べ替えたアドレスを第2のアドレスとして生成している。上述の例では、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を並べ替えたアドレスを第2のアドレスとして生成している。より具体的には、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を上位方向に所定のビット数(上記例では1ビット)だけシフトしたアドレスを第2のアドレスとして生成するようにしている。
0141
これによれば、データと、そのデータから生成したECCのペアを内蔵メモリ14に書き込んだ後で、内蔵メモリ14に対するアドレス信号線のいずれか1本にStuck−at故障(0または1への固着)が発生した場合、その書き込み済みのデータを読み出す際に、アドレス信号線の故障検出が可能となる。
0142
これは、2本以上のアドレス信号線の故障に対しても同様に有効である。また、内蔵メモリ14に入力するアドレス信号を生成して出力するADR変換回路120や、内蔵メモリ14の中のアドレス信号処理回路で起きたアドレスの値に影響が出る故障も検出可能である。
0143
さらに、本実施の形態2によれば、アドレス信号線のいずれか1本にStuck−at故障(0または1への固着)が発生した後に、データの書き込みと読み出しが行われる場合であっても、データとECCの両方が上書きされてしまうことによってアドレス信号線の故障を見逃すことはなく、確実に故障が検出できる。
0144
<実施の形態3>
続いて、本実施の形態3について、図面を用いて、その構成と動作を説明する。本実施の形態3に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態3に係るI/F変換回路13の構成と動作については、図9に示した実施の形態2に係るI/F変換回路13の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態3では、I/F変換回路13において、ADR変換回路120が有するADRローテーション回路123の構成と動作が、実施の形態2に係るADRローテーション回路123とは異なる。
0145
続いて、図18を参照して、本実施の形態3に係るADRローテーション回路123の構成について説明する。ここでは、アドレス信号がNビットである例について説明する。以下、実施の形態2と実施の形態3とでアドレスのローテーションを区別するために、実施の形態3におけるアドレスのビットのローテーションを「ADRローテーション2」と示し、実施の形態2におけるアドレスのビットのローテーションを「ADRローテーション」と示す。
0146
実施の形態2に係るADRローテーション回路123では、Nビットのアドレス信号線の各ビットの位置を入れ替えるために、そのアドレス信号が示すアドレスを左方向に(上位ビット方向に)1ビットだけローテーションしていた。それに対して、本実施の形態3では、アドレスを逆方向にローテーションする。すなわち、本実施の形態3に係るADRローテーション回路123は、アドレスを右方向に(下位ビット方向に)1ビットだけローテーションするものである。
0147
これは、図18に示すように、ADRローテーション回路123において、Nビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ADRローテーション回路123に入力されたNビットのアドレス信号の各ビットA0、A1、A2、・・・、A(N−1)を、ADRローテーション回路123から出力されるNビットのアドレス信号の各ビットA’(N−1)、A’0、A’1、・・・、A’(N−2)とする。なお、このADRローテーション回路123でも、Nビットのアドレス信号線の各ビットの信号を、N個のバッファ1230の各々で受けた後に、その接続先のビット位置をずらすようにしている。
0148
続いて、図19を参照して、実施の形態3に係る内蔵メモリ14のメモリマップについて説明する。ここでは、図11に示した実施の形態2に係る内蔵メモリ14と同様に、内蔵メモリ14のデータ幅は8ビットであり、内蔵メモリ14のアドレス幅は(N+1)ビットであり、内蔵メモリ14のデータ容量が(8×2(N+1))ビットであり、N=3である例について説明する。
0149
本実施の形態3では、データを格納するアドレスの下位Nビット(図19ではA2〜A0)の値に対して、そのデータとペアになるECCを格納するアドレスの下位Nビットの値は、図18に示したADRローテーション回路123の動作により各ビット値が入れ替えられたもの(図19においてA2〜A0の値を「ADRローテーション2」と示している部分)になっている。
0150
すなわち、図19に示すように、アドレスADR−0(“0000”)のデータ(“DATA0”)と、アドレスADR−8(“1000”)のECC(“ECC0”)とがペアになる。アドレスADR−1(“0001”)のデータ(“DATA1”)と、アドレスADR−C(“1100”)のECC(“ECC1”)がペアになる。アドレスADR−2(“0010”)のデータ(“DATA2”)と、アドレスADR−9(“1001”)のECC(“ECC2”)がペアになる。アドレスADR−3(“0011”)のデータ(“DATA3”)と、アドレスADR−D(“1101”)のECC(“ECC3”)がペアとなる。アドレスADR−4(“0100”)のデータ(“DATA4”)と、アドレスADR−A(“1010”)のECC(“ECC4”)がペアとなる。アドレスADR−5(“0101”)のデータ(“DATA5”)と、アドレスADR−E(“1110”)のECC(“ECC5”)がペアとなる。アドレスADR−6(“0110”)のデータ(“DATA6”)と、アドレスADR−B(“1011”)のECC(“ECC6”)がペアとなる。アドレスADR−7(“0111”)のデータ(“DATA7”)と、アドレスADR−F(“1111”)のECC(“ECC7”)がペアになる。
0151
なお、実施の形態1、2と同様に、ECCは上位3ビットにダミービット(値が0)を付加して8ビットのデータとされた後で内蔵メモリ14に格納される。また、実施の形態1、2と同様に、データを読み出す際に、ECCチェック回路142で1ビットの誤り、または、2ビット以上の誤りとして、ライトデータ(8ビット)の8本の信号線のうち、いずれか1本以上が故障(断線)による値の変化が確実に検出される。また、リードデータ(8ビット)の8本の信号線の故障(断線)に関しても同様である。
0152
図20は、図19に示したN=3の場合について、“DATA0”と“ECC0”、“DATA1”と“ECC1”、・・・、“DATA7”と“ECC7”という8通りのペアについて、アドレス信号の下位3ビットA2〜A0の値を、8行(上から順番に“0”〜“7”と番号付け)にわたって示した表である。図20では、データを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(データ)」として示し、ECCを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(ECC)」として示している。
0153
この表の左から右に向かって、
(1)アドレスの全ビットに故障が発生していない場合
(2)アドレスのA2ビットにStuck−at1故障が発生した場合
(3)アドレスのA2ビットにStuck−at0故障が発生した場合
(4)アドレスのA1ビットにStuck−at1故障が発生した場合
(5)アドレスのA1ビットにStuck−at0故障が発生した場合
(6)アドレスのA0ビットにStuck−at1故障が発生した場合
(7)アドレスのA0ビットにStuck−at0故障が発生した場合
の7通りを示している。
0154
なお、A2〜A0の値として、各ビット位置の値(0または1)を3つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
0155
図20に示した表の2行目(番号は1)は、データ(“DATA1”)と、そのデータとペアになるECC(“ECC1”)の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ADR−1の下位3ビット(“001”)とADR−Cの下位3ビット(“100”)となる。図20の表において、この2つのA2〜A0の値のペアを実線で囲んで示している。
0156
ここで、A2ビットにStuck−at1故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス(データ)のADR−1は故障による影響を受けて別のADR−5(下位3ビットは“101”)となり、アドレス(ECC)のADR−C(下位3ビットは“100”)は故障による影響を受けない。この2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この2つのA2〜A0の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス(データ)及びアドレス(ECC)を、表において実線で囲むとともに太実線で接続して示している。これによって、データ(“DATA5”)とECC(“ECC1”)がアクセスされる。すなわち、データとECCのペアが崩れていることが分かる。
0157
同じく、さらに右に進むにつれて、他の例として、A1ビットにStuck−at1故障が発生した場合と、A0ビットにStuck−at1故障が発生した場合についても、2つのA2〜A0の値のペアについて、上記と同様の形で示しているが、いずれの場合もデータとECCのペアが崩れていることが分かる。
0158
また、さらに、他の例として、図20に示した表の7行目(番号は6)には、データ(“DATA6”)と、そのデータとペアとなるECC(“ECC6”)の各々が格納されるアドレスに関して、同様に、A2ビットにStuck−at0故障が発生した場合、A1ビットにStuck−at0故障が発生した場合、A0ビットにStuck−at0故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとECCのペアは崩れている。この表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、確実に故障が検出できることが分かる。
0159
また、図21は、図19に示したN=3の場合について、“DATA0”と“ECC0”、“DATA1”と“ECC1”、・・・、“DATA7”と“ECC7”という8通りのペアについて、アドレス信号の下位3ビットA2〜A0の値を、8行(上から順番に“0”〜“7”と番号付け)にわたって示した表である。図21では、データを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(データ)」として示し、ECCを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(ECC)」として示している。この表の左から右に向かって、図20と同様に、上記(1)〜(7)の7通りの故障が発生した場合について示している。
0160
図21に示した表の3行目(番号は2)は、データ(“DATA2”)と、そのデータとペアになるECC(“ECC2”)の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ADR−2の下位3ビット(“010”)とADR−9の下位3ビット(“001”)となる。図21の表において、この2つのA2〜A0の値のペアを点線で囲んで示している。
0161
ここで、A2ビットにStuck−at1故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス(データ)のADR−2は故障による影響を受けて別のADR−6(下位3ビットは“110”)となり、アドレス(ECC)のADR−9(下位3ビットは“001”)も故障による影響を受けて別のADR−D(下位3ビットは“101”)となる。この2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この2つのA2〜A0の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス(データ)及びアドレス(ECC)を、表において実線で囲むとともに太実線で接続して示している。これによって、データ(“DATA6”)とECC(“ECC3”)がアクセスされる。すなわち、データとECCのペアが崩れていることが分かる。
0162
また、この3行目における2つのA2〜A0の値のペアの故障による影響を受けた後の値に加えて、4行目、7行目及び8行目についても、2つのA2〜A0の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示している。しかしながら、これら4行に示されている2つのA2〜A0の値のペアは、アドレス(データ)がADR−6(その下位3ビットは“110”)またはADR−7(その下位3ビットは“111”)、アドレス(ECC)がADR−D(その下位3ビットは“101”)またはADR−F(その下位3ビットは“111”)である4通りの組み合わせになっている。そのため、本来のペアとは異なるアドレス(データ)とアドレス(ECC)にデータとECCのペアを書き込んだ場合であっても、本来のペアにおけるデータとECCのどちらか一方が上書きされてしまうことはあるが、データとECCの両方が上書きされてしまうことはない。
0163
同じ3行目の右の方には、他の例として、A1ビットにStuck−at1故障が発生した場合と、A0ビットにStuck−at1故障が発生した場合についても、2つのA2〜A0の値のペアについて、上記と同様の形で示しているが、いずれの場合もデータとECCのペアが崩れていることが分かる。また、データとECCの両方に対する上書きは発生しないことが分かる。
0164
さらに、他の例として、図21に示した表の6行目(番号は5)には、データ(“DATA5”)と、そのデータとペアとなるECC(“ECC5”)の各々が格納されるアドレスに関して、同様に、A2ビットにStuck−at0故障が発生した場合、A1ビットにStuck−at0故障が発生した場合、A0ビットにStuck−at0故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとECCのペアは崩れている。また、本来のペアにおけるデータとECCの両方に対する上書きは発生しない。この表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、確実に故障が検出できることが分かる。
0165
なお、本実施の形態3でも、実施の形態2でも説明したように、Nビットのアドレス信号のうちの所定数ビット(Nビット〜1ビットのいずれか)をローテーションしてもよい。
0166
以上に説明したように、本実施の形態3では、ADR変換回路120は、第1のアドレス(N+1ビットのアドレスに対応)の少なくとも1つのビットの値以外のビット(下位Nビットに対応)のうちの所定数ビットを並べ替えたアドレスを第2のアドレスとして生成している。上述の例では、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を並べ替えたアドレスを第2のアドレスとして生成している。より具体的には、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を下位方向に所定のビット数(上記例では1ビット)だけシフトしたアドレスを第2のアドレスとして生成するようにしている。
0167
これによれば、実施の形態2と同じ効果が得られる。すなわち、データと、そのデータから生成したECCのペアを内蔵メモリ14に書き込んだ後で、内蔵メモリ14に対するアドレス信号線のいずれか1本にStuck−at故障(0または1への固着)が発生した場合、その書き込み済みのデータを読み出す際に、アドレス信号線の故障検出が可能となる。
0168
さらに、本実施の形態3によれば、アドレス信号線のいずれか1本にStuck−at故障(0または1への固着)が発生した後に、データの書き込みと読み出しが行われる場合であっても、データとECCの両方が上書きされてしまうことによってアドレス信号線の故障を見逃すことはなく、確実に故障が検出できる。
0169
<実施の形態4>
続いて、本実施の形態4について、図面を用いて、その構成と動作を説明する。本実施の形態4に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態4では、CPUシステム1が有するI/F変換回路13の一部の構成と動作が、実施の形態1に係るI/F変換回路13とは異なる。
0170
続いて、図22を参照して、本実施の形態4に係るI/F変換回路13の構成について説明する。本実施の形態4に係るI/F変換回路13は、実施の形態1に係るI/F変換回路13と比較して、ADR変換回路120におけるADR反転回路121に代えて、ADRビット順逆転回路124を有する。なお、本実施の形態4に係るI/F制御回路110、WDT変換回路130及びRDT変換回路140の構成及び動作は、実施の形態1に係るそれらと同様である。
0171
ADRビット順逆転回路124には、バスマスタから出力されるアドレス信号が入力される。ADRビット順逆転回路124は、入力されたアドレス信号が示すアドレスの全てのビットの並び順を反転して、セレクタ122に出力する。よって、本実施の形態4では、セレクタ122は、バスマスタから出力されるアドレス信号、及び、ADRビット順逆転回路124から出力されるアドレス信号のうち、いずれか1つを選択し、内蔵メモリ14に出力する。
0172
続いて、図23を参照して、本実施の形態4に係るADR変換回路120が有するADRビット順逆転回路124の構成について説明する。ここでは、アドレス信号がNビットである例について説明する。
0173
実施の形態2では、Nビットあるアドレス信号の各ビットを入れ替えるために、アドレスを左方向に(上位ビット方向に)1ビットだけローテーションし、実施の形態3では、アドレスを右方向に(下位ビット方向に)1ビットだけローテーションしていた。それに対し、本実施の形態4では、アドレス信号の各ビットの位置を上下逆方向に入れ替えて、ビット順を反転させる。すなわち、ADRビット順逆転回路124は、アドレス信号のNビットの並び順を反転する。
0174
これは、図23に示すように、ADRビット順逆転回路124において、Nビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ADRビット順逆転回路124に入力されたNビットのアドレス信号の各ビットA0、A1、A2、・・・、A(N−2)、A(N−1)を、ADRビット順逆転回路124から出力されるNビットのアドレス信号の各ビットA’(N−1)、A’(N−2)、・・・、A’2、A’1、A’0とする。なお、このADRビット順逆転回路124では、Nビットのアドレス信号線の各ビットの信号を、N個のバッファ1240の各々で受けた後に、その接続先のビット位置をずらすようにしている。
0175
ただし、Nビットあるアドレスの全てのビットの位置が入れ替わるようにする必要がある。そのため、本実施の形態4ではNが偶数であることを前提としている。例えば、N=4の場合、ADRビット順逆転回路124は、図24に示す構成になる。
0176
なお、本実施の形態4でも、実施の形態2及び実施の形態3でも説明したように、Nビットのアドレス信号のうちの所定数ビット(Nビット〜1ビットのいずれか)を並び替えるようにしてもよい。
0177
以上に説明したように、本実施の形態4では、ADR変換回路120は、第1のアドレス(N+1ビットのアドレスに対応)の少なくとも1つのビットの値以外のビット(下位Nビットに対応)のうちの所定数ビットを並べ替えたアドレスを第2のアドレスとして生成している。上述の例では、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を並べ替えたアドレスを第2のアドレスとして生成している。より具体的には、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)の並び順を反転したアドレスを第2のアドレスとして生成するようにしている。
0178
これによれば、実施の形態2及び実施の形態3と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。
0179
なお、以上に説明した実施の形態2、実施の形態3及び実施の形態4では、データとペアになるECCに対するアドレスを、ADRローテーション回路123又はADRビット順逆転回路124というアドレス入替回路で変換している点が共通する。
0180
Nビットあるアドレスの全てのビットの位置が入れ替わるようにするアドレス入替えの方法は、複数通り存在する。ここで、その数をSNとする(SNにおける「N」は、上述したI/F変換回路13に入力されるアドレス信号のビット数である)。N=2の場合は、図25に示す1通りのみ(S2=1)で、N=3の場合は、図26に示す2通り(S3=2)である。図26の上から1番目は実施の形態2で示した「ADRローテーション」に対応し、図26の2番目は実施の形態3で示した「ADRローテーション2」に対応する。
0181
また、N=4の場合は、図27に示す9通り(S4=9)となる。その左側の列の上から1番目が実施の形態2での「ADRローテーション」に相当し、2番目が実施の形態3での「ADRローテーション2」に相当し、3番目が実施の形態4での「ADRビット順逆転」に相当する。ここで、図26の最下行に示した3通りは、2ビットずつアドレスのビットを入れ替えたものが2セットになっているものである。そのため、そのどちらかの1セットに含まれる2ビットのアドレス信号線の両方に故障が発生した場合には、故障検出が行えないという制約がある。
0182
なお、一般的に、Nビット(ただし、N≧3)のアドレスに対するアドレス入替えの方法の数は、図28に示す式1の通りとなる。
0183
すなわち、ADR変換回路120において実施するアドレスの各ビットの位置の入れ替えは、図27でも例示するように、実施の形態2〜4で説明した「ADRローテーション」、「ADRローテーション2」及び「ADRビット順逆転」のみに限られない。次の実施の形態5として、図27の最下行の真ん中で「ADRローテーション3」として示すアドレス入れ替え方法について説明する。
0184
<実施の形態5>
さらに、本実施の形態5について、図面を用いて、その構成と動作を説明する。本実施の形態5に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態5に係るI/F変換回路13の構成と動作については、図9に示した実施の形態2に係るI/F変換回路13の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態5では、I/F変換回路13において、ADR変換回路120が有するADRローテーション回路123の構成と動作が、実施の形態2及び実施の形態3に係るADRローテーション回路123とは異なる。
0185
続いて、図29を参照して、本実施の形態5に係るADRローテーション回路123の構成について説明する。ここでは、アドレス信号がNビットである例について説明する。以下、本実施の形態5に係るアドレスのローテーションを「ADRローテーション3」と示す。
0186
実施の形態2に係るADRローテーション回路123では、Nビットのアドレス信号線の各ビットの位置を入れ替えるために、そのアドレス信号が示すアドレスを左方向に(上位ビット方向に)1ビットだけローテーションしていた。また、実施の形態3では、アドレスを右方向に(下位ビット方向に)1ビットだけローテーションしていた。しかし、本実施の形態5では、アドレスを右方向に(上位ビット方向に)2ビットだけローテーションする。
0187
これは、図29に示すように、ADRローテーション回路123において、Nビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ADRローテーション回路123に入力されたNビットのアドレス信号の各ビットA0、A1、A2、・・・、A(N−1)を、ADRローテーション回路123から出力されるNビットのアドレス信号の各ビットA’(N−2)、A’(N−1)、A’0、A’1、・・・、A’(N−3)とする。なお、このADRローテーション回路123でも、Nビットのアドレス信号線の各ビットの信号を、N個のバッファ1230の各々で受けた後に、その接続先のビット位置をずらすようにしている。
0188
ここで、N=4の場合は、図30に示す構成になる。この図30から明らかなように、N=4の場合は、アドレスを左方向に(下位ビット方向に)2ビットだけローテーションすることと同等である。これは、ちょうど、図27の最下行の真ん中で、「ADRローテーション3」として示したものに対応する。
0189
続いて、図31を参照して、実施の形態5に係る内蔵メモリ14のメモリマップについて説明する。ここでは、内蔵メモリ14のデータ幅は8ビットであり、内蔵メモリ14のアドレス幅は(N+1)ビットであり、内蔵メモリ14のデータ容量が(8×2(N+1))ビットであり、N=4である例について説明する。
0190
内蔵メモリ14は、図31における左半分を本来のデータを格納する領域として使用し、右半分を本来のデータとペアになるECCを格納する領域として使用する。つまり、内蔵メモリ14における領域は、そのアドレス空間において、アドレスの最上位ビット(図31ではA4)の値が、“0”となる場合はデータが格納される領域として、“1”となる場合はECCが格納される領域として区別される。
0191
本実施の形態5では、データを格納するアドレスの下位Nビット(図31ではA3〜A0)の値に対して、そのデータとペアになるECCを格納するアドレスの下位Nビットの値は、図30に示したADRローテーション回路123の動作により各ビット値が入れ替えられたもの(図31においてA3〜A0の値を「ADRローテーション3」と示している部分、A4=1として右半分に示している領域)になっている。
0192
すなわち、図31に示すように、アドレスADR−00(“00000”)のデータ(“DATA0”)と、アドレスADR−10(“10000”)のECC(“ECC0”)とがペアになる。アドレスADR−01(“00001”)のデータ(“DATA1”)と、アドレスADR−14(“10100”)のECC(“ECC1”)がペアになる。アドレスADR−02(“00010”)のデータ(“DATA2”)と、アドレスADR−18(“11000”)のECC(“ECC2”)がペアになる。アドレスADR−03(“00011”)のデータ(“DATA3”)と、アドレスADR−1C(“11100”)のECC(“ECC3”)がペアになる。アドレスADR−04(“00100”)のデータ(“DATA4”)と、アドレスADR−11(“10001”)のECC(“ECC4”)がペアになる。アドレスADR−05(“00101”)のデータ(“DATA5”)と、アドレスADR−15(“10101”)のECC5がペアになる。アドレスADR−06(“00110”)のデータ(“DATA6”)とアドレスADR−19(“11001”)のECC(“ECC6”)がペアになる。アドレスADR−07(“00111”)のデータ(“DATA7”)と、アドレスADR−1D(“11101”)のECC(“ECC7”)がペアになる。他のアドレスのデータ(“DATA8”)〜(“DATAF”)の各々と、他のアドレスのECC(“ECC8”)〜(“ECCF”)の各々とがペアになる対応関係も、同様に、この図31から分かるため、詳細な説明は省略する。
0193
実施の形態2及び実施の形態3では、N=3とした場合、図11及び図19に示したように、内蔵メモリ14が、データと、そのデータに対応するECCの各々を格納するアドレスとして8個(アドレスの下位3ビットA2〜A0の組み合わせ)を有する例について説明した。それに対して、本実施の形態5では、N=4とした場合、図31に示すように、データと、そのデータに対応するECCの各々を格納するアドレスとして、その2倍の16個を有する例を図示している。
0194
なお、本実施の形態5でも、実施の形態2及び実施の形態3でも説明したように、Nビットのアドレス信号のうちの所定数ビット(Nビット〜1ビットのいずれか)をローテーションするようにしてもよい。
0195
以上に説明したように、本実施の形態5では、ADR変換回路120は、第1のアドレス(N+1ビットのアドレスに対応)の少なくとも1つのビットの値以外のビット(下位Nビットに対応)のうちの所定数ビットを並べ替えたアドレスを第2のアドレスとして生成している。上述の例では、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を並べ替えたアドレスを第2のアドレスとして生成している。より具体的には、ADR変換回路120は、第1のアドレスの少なくとも1つのビットの値以外のビットの全て(Nビット)を上位方向に所定のビット数(上記例では2ビット)だけシフトしたアドレスを第2のアドレスとして生成するようにしている。
0196
これによれば、実施の形態2〜実施の形態4と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。
0197
<実施の形態6>
続いて、本実施の形態6について、図面を用いて、その構成と動作を説明する。本実施の形態6に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態6では、CPUシステム1が有するI/F変換回路13の一部の構成と動作が、実施の形態1に係るI/F変換回路13とは異なる。
0198
続いて、図32を参照して、本実施の形態6に係るI/F変換回路13の構成について説明する。本実施の形態6に係るI/F変換回路13は、実施の形態1に係るI/F変換回路13と比較して、ADR変換回路120におけるADR反転回路121に代えて、ADRシフト&オフセット設定回路125を有する。なお、本実施の形態6に係るI/F制御回路110、WDT変換回路130及びRDT変換回路140の構成及び動作は、実施の形態1に係るそれらと同様である。
0199
ADRシフト&オフセット設定回路125には、バスマスタから出力されるアドレス信号と、2ビットのオフセット信号が入力される。ADRシフト&オフセット設定回路125は、入力されたアドレス信号のうち、所定の複数ビットのビットをシフトし、他の複数ビットをオフセット信号が示すオフセット値に変更してから、そのアドレス信号をセレクタ122に出力する。よって、本実施の形態6では、セレクタ122は、バスマスタから出力されるアドレス信号、及び、ADRシフト&オフセット設定回路125から出力されるアドレス信号のうち、いずれか1つを選択し、内蔵メモリ14に出力する。
0200
続いて、図33を参照して、本実施の形態6に係るADR変換回路120が有するADRシフト&オフセット設定回路125の構成について説明する。ここでは、アドレス信号がNビットであり、オフセット信号がMビットであり、M=2ビットである例について説明する。
0201
図33に示すように、本実施の形態6に係るADRシフト&オフセット設定回路125は、図29に示した実施の形態5に係るADRローテーション回路123と比較して、下位2ビット(A1、A0)を上位2ビットに移動させるのではなく、その2ビットは使用せず、代わりにオフセット信号が示す2ビットを上位2ビットに使用する点が異なる。
0202
すなわち、ADRシフト&オフセット設定回路125は、オフセット設定レジスタ1251を有している。オフセット設定レジスタ1251には、2ビットのオフセット信号がオフセット値として取り込まれる。オフセット設定レジスタ1251に格納される2ビットのオフセット値の各々は、Nビットのアドレス信号の上位2ビットとして、ADRシフト&オフセット設定回路125から出力される。
0203
よって、ADRシフト&オフセット設定回路125に入力されたNビットのアドレス信号が示すアドレスのうち、上位(N−M)ビットの各々A2、・・・、A(N−1)を、ADRシフト&オフセット設定回路125から出力されるNビットのアドレス信号のうち、下位(N−M)ビットの各々A’0、A’1、・・・、A’(N−3)とする。また、ADRシフト&オフセット設定回路125に入力されたオフセット信号が示すオフセット値の各ビットB(N−2)、B(N−1)を、ADRシフト&オフセット設定回路125から出力するNビットのアドレス信号のうち、残りの上位Mビットの各々A’(N−2)、A’(N−1)とする。
0204
なお、このADRシフト&オフセット設定回路125でも、A2〜A(N−1)までの(N−M)ビットのアドレス信号線の各ビットの信号を、(N−M)個のバッファ1250の各々で受けた後に、その接続先のビット位置をずらすようにしている。
0205
ここで、N=4の場合、ADRシフト&オフセット設定回路125は、図34に示す通りの構成になる。すなわち、ADRシフト&オフセット設定回路125に入力されるアドレス信号の上位2ビットA2、A3の各々は、ADRシフト&オフセット設定回路125から出力されるアドレス信号の下位2ビットA’0、A’1となる。また、ADRシフト&オフセット設定回路125に入力されるオフセット信号の2ビットB2、B3の各々は、ADRシフト&オフセット設定回路125から出力されるアドレス信号の上位2ビットA’2、A’3となる。
0206
続いて、図35を参照して、実施の形態6に係る内蔵メモリ14のメモリマップについて説明する。ここでは、内蔵メモリ14のデータ幅は8ビットであり、内蔵メモリ14のアドレス幅は(N+1)ビットであり、内蔵メモリ14のデータ容量が(8×2(N+1))ビットであり、N=4である例について説明する。
0207
内蔵メモリ14は、図35における左半分を本来のデータを格納する領域として使用し、右半分のうちの一部を本来のデータとペアになるECCを格納する領域として使用する。つまり、内蔵メモリ14における領域は、そのアドレス空間において、アドレスの最上位ビット(図35ではA4)の値が、“0”となる場合はデータが格納される領域として、“1”となる場合はECCが格納される領域として区別される。
0208
本実施の形態6では、データを格納するアドレスの下位Nビット(図35ではA3〜A0)の値に対して、そのデータとペアになるECCを格納するアドレスの下位Nビットの値は、図34に示したADRシフト&オフセット設定回路125の動作により各ビット値が変換されたもの(図35においてA3〜A0の値を「ADRシフト&オフセット設定」と示している部分、A4=1として右半分のうちの一部に示している領域のうち、A3=1及びA2=1として示している領域)になっている。すなわち、オフセット信号が示す2ビットのオフセット値の各ビットB2、B3が両方とも“1”に設定されている例について示している。
0209
すなわち、図35に示すように、アドレスADR−00(“00000”)〜ADR−03(“00011”)のデータ(“DATA0”〜“DATA3”)と、アドレスADR−1C(“11100”)のECC(“ECC0(0、1、2、3)”)とがペアになる。アドレスADR−04(“00100”)〜ADR−07(“00111”)のデータ(“DATA4”〜“DATA7”)と、アドレスADR−1D(“11101”)のECC(“ECC1(4、5、6、7)”)がペアになる。アドレスADR−08(“01000”)〜ADR−0B(“01011”)のデータ(“DATA8”〜“DATAB”)と、アドレスADR−1E(“11110”)のECC(“ECC2(8、9、A、B)”)がペアになる。アドレスADR−0C(“01100”)〜ADR−0F(“01111”)のデータ(“DATAC”〜“DATAF”)と、アドレスADR−1F(“11111”)のECC(“ECC3(C、D、E、F)”)がペアになる。すなわち、オフセット値の2ビットの各々が両方とも“1”に設定されているため、ADR−10(“10000”)〜ADR−1B(“11011”)の12アドレスは使用されない。
0210
ここで、実施の形態1〜実施の形態5では、8ビットのデータから5ビットのECCを生成し、その生成したECCの上位3ビットにダミービット(値は0)を付加して8ビットのデータとした後で内蔵メモリ14に格納していた。しかし、本実施の形態6では、32ビット(4アドレス)のデータから7ビットのECCを生成し、その生成したECCの上位1ビットにダミービット(値は0)を付加して8ビットとした後で内蔵メモリ14に格納する。
0211
よって、本実施の形態6では、バスマスタは、32ビットのデータを内蔵メモリ14に書き込む場合、その32ビットのデータを8ビットずつ4回に分けて連続したアドレスを指定して書き込む。例えば、32ビットのデータ(“DATA0”〜“DATA3”)を内蔵メモリ14に書き込む場合、1回目では、バスマスタは、アドレスADR−00(“00000”)を示すアドレス信号と、ライトデータ(“DATA0”)をI/F変換回路13に出力する。2回目では、バスマスタは、アドレスADR−01(“00001”)を示すアドレス信号と、ライトデータ(“DATA1”)をI/F変換回路13に出力する。3回目では、バスマスタは、アドレスADR−02(“00010”)を示すアドレス信号と、ライトデータ(“DATA2”)をI/F変換回路13に出力する。4回目では、バスマスタは、アドレスADR−03(“00011”)を示すアドレス信号と、ライトデータ(“DATA3”)をI/F変換回路13に出力する。
0212
ECC生成回路131は、4回の書き込みで入力された4つのライトデータを結合することで、32ビットのデータを生成し、生成した32ビットのデータに基づいて、ECCを生成する。ECC生成回路131は、生成したECCを、最後(4回目)の書き込み時に出力することで内蔵メモリ14に書き込む。よって、1回目〜3回目で不定の値が、ADR−1C(“11100”)に書き込まれたとしても、4回目の書き込み時に32ビットのデータから生成されたECCで上書きされるため問題はない。
0213
また、本実施の形態6では、バスマスタは、32ビットのデータを内蔵メモリ14から読み出す場合、その32ビットのデータを8ビットずつ4回に分けて連続したアドレスを指定して読み出す。例えば、32ビットのデータ(“DATA0”〜“DATA3”)を内蔵メモリ14から読み出す場合、1回目では、バスマスタは、アドレスADR−00(“00000”)を示すアドレス信号をI/F変換回路13に出力する。2回目では、バスマスタは、アドレスADR−01(“00001”)を示すアドレス信号をI/F変換回路13に出力する。3回目では、バスマスタは、アドレスADR−02(“00010”)を示すアドレス信号をI/F変換回路13に出力する。4回目では、バスマスタは、アドレスADR−03(“00011”)をI/F変換回路13に出力する。
0214
ECCチェック回路142及びエラー訂正回路143は、4回の読み出しで入力された4つのリードデータを結合することで、32ビットのデータを生成する。ECCチェック回路142は、生成した32ビットのデータに基づいてECCを生成し、生成したECCと、4回目で読み出したECCとに基づいて、その32ビットのデータの誤りを検出する。そして、エラー訂正回路143は、ECCチェック回路142による判定結果に応じて、32ビットのデータをそのまま、又は、32ビットのデータを訂正してリードデータとしてバスマスタに出力する。ただし、本実施の形態6では、エラー訂正回路143から出力する32ビットのリードデータは、8ビットずつ4回にわたってバスマスタに出力される。
0215
図36は、図35に示したN=4の場合について、“DATA0”〜“DATA3”と“ECC0”、“DATA4”〜“DATA7”と“ECC1”、“DATA8”〜“DATAB”と“ECC2”、“DATAC”〜“DATAF”と“ECC3”という4通りのペアについて、アドレス信号の下位4ビットA3〜A0の値を、4行にわたって示した表である。図36では、データを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(データ)」として示し、ECCを読み出す際に内蔵メモリ14に入力されるアドレス信号が示すアドレスを「アドレス(ECC)」として示している。
0216
この表の左から右に向かって、
(1)アドレスの全ビットに故障が発生していない場合
(2)アドレスのA3ビットにStuck−at1故障が発生した場合
(3)アドレスのA3ビットにStuck−at0故障が発生した場合
(4)アドレスのA2ビットにStuck−at1故障が発生した場合
(5)アドレスのA2ビットにStuck−at0故障が発生した場合
(6)アドレスのA1ビットにStuck−at1故障が発生した場合
(7)アドレスのA1ビットにStuck−at0故障が発生した場合
の7通りを示している。
0217
なお、アドレスのA0ビットにStuck−at1故障が発生した場合、及び、アドレスのA0ビットにStuck−at0故障が発生した場合の各々は、アドレスのA1ビットにStuck−at1故障が発生した場合、及び、アドレスのA1ビットにStuck−at0故障が発生した場合の各々と同様となるため、この表から省略している。また、A3〜A0の値として、各ビット位置の値(0または1)を4つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
0218
図36に示した表の2行目(番号は4〜7)は、データ(“DATA4”〜“DATA7”)と、そのデータとペアになるECC(“ECC1”)の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ADR−04〜ADR−07の下位4ビット(“0100”〜“0111”)とADR−Aの下位4ビット(“1101”)となる。図36の表において、このアドレス(データ)の4アドレスと、アドレス(ECC)の1アドレスとの2つのペアを実線で囲んで示している。
0219
ここで、A3ビットにStuck−at1故障が発生した場合のアドレスは、アドレスADR−04〜ADR−07(その下位4ビットは“0100”〜“0111”)が故障による影響を受けて別のADR−0C〜ADR−0F(その下位4ビットは“1100”〜“1111”)となり、アドレスADR−1D(その下位4ビットは“1101”)は故障による影響を受けない。このA3〜A0の値の2つのペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、このA3〜A0の値の2つのペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス(データ)及びアドレス(ECC)を、表において実線で囲むとともに太実線で接続して示している。これによって示すように、4行目のデータ(“DATAC”〜“DATAF”)と、2行目のECC(“ECC2”)がアクセスされる。すなわち、データとECCのペアが崩れていることが分かる。
0220
同じ2行目の右の方には、他の例として、A3ビットにStuck−at0故障が発生した場合についても、このA3〜A0の値の2つのペアについて、上記と同様の形で示している。この場合は、アドレスADR−1D(その下位4ビットは“1101”)が故障による影響を受けて別のアドレスADR−15(その下位4ビットは“0101”)となり、そのアドレスはECC格納のために使用されないアドレスである。そのため、データとECCのペアが崩れていることが分かる。
0221
また、同じ2行目の一番右には、さらに、他の例として、A1ビットにStuck−at0故障が発生した場合についても、このA3〜A0の値の2つのペアについて、上記と同様の形で示している。この場合は、アドレスADR−04〜ADR−07(その下位4ビットは“0100”〜“0111”)が、2つのアドレスADR−04、ADR−05(その下位4ビットは“0100”、“0101”)に縮退される。よって、アドレスADR−06、ADR07に格納されているデータ(“DATA6”)とデータ(“DATA7”)が読み出し不能となるため、データとECCのペアが崩れることが分かる。
0222
また、さらに、他の例として、図36に示した表の3行目における、データ(“DATA8”〜“DATAB”)と、そのデータとペアになるECC(“ECC2”)の各々が格納されるアドレスに関して、同様に、A2ビットにStuck−at1故障が発生した場合、A2ビットにStuck−at0故障が発生した場合、A1ビットにStuck−at1故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとECCのペアは崩れている。この表から、アドレスのいずれかのビットにStuck−at故障が発生した場合には、確実に故障が検出できることが分かる。なお、オフセット(2ビット)が両方とも“1”に設定されている場合について説明したが、他の値“0”に設定されている場合であっても以上と同様になることは明らかであるため、詳細な説明は省略する。
0223
さらに、アドレスのいずれかのビットにStuck−at故障が発生した後に、データの書き込みと読み出しが行われる場合、アドレス(データ)とアドレス(ECC)のペアが本来のペアとは異なるものとなるが、それとは違うもう1つのアドレス(データ)とアドレス(ECC)のペアと一致してしまう(つまり、アドレスが縮退される)ことはないことも分かる。そのため、データとECCの両方に対する上書きは発生せず、アドレスのいずれかのビットにStuck−at故障が発生した後であっても、確実に故障が検出できることが分かる。
0224
以上に説明したように、本実施の形態6では、第1のアドレス(N+1ビットのアドレスに対応)の少なくとも1つのビット以外のビット(下位Nビットに対応)のうち、下位から所定のオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット(Mビットに対応)を、設定されたオフセット値に変更したアドレスを前記第2のアドレスとして生成するようにしている。
0225
これによれば、実施の形態2〜実施の形態5と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。
0226
<実施の形態7>
続いて、本実施の形態7について、図面を用いて、その構成と動作を説明する。本実施の形態7に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態7に係るI/F変換回路13の構成と動作については、図32に示した実施の形態6に係るI/F変換回路13の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態7では、I/F変換回路13において、ADR変換回路120の一部の構成と動作が、実施の形態6に係るADR変換回路120とは異なる。なお、本実施の形態7に係るI/F制御回路110、WDT変換回路130及びRDT変換回路140の構成及び動作は、実施の形態6に係るそれらと同様である。
0227
続いて、図37を参照して、本実施の形態7に係るADR変換回路120の構成について説明する。
0229
ADR範囲制限回路126は、アドレス(データ)を制限する回路である。バスマスタから入力されたアドレス信号は、ADR範囲制限回路126に入力される。ADR範囲制限回路126は、入力されたアドレス信号が示すアドレスが、データを格納可能であるとして予め定められた範囲に含まれない場合、その範囲内に収まるようにアドレスを変更し、変更後のアドレスを示すアドレス信号を、セレクタ122及びADRシフト&オフセット設定回路125に出力する。一方、ADR範囲制限回路126は、入力されたアドレス信号が示すアドレスが、データを格納可能であるとして予め定められた範囲に含まれる場合、そのアドレス信号を、そのままセレクタ122及びADRシフト&オフセット設定回路125に出力する。
0230
続いて、図38を参照して、本実施の形態7に係るADRシフト&オフセット設定回路125の構成について説明する。ここでは、N=4である例について説明する。
0231
図38に示すように、本実施の形態7に係るADRシフト&オフセット設定回路125は、図34に示した実施の形態6に係るADRシフト&オフセット設定回路125と比較して、オフセット設定レジスタ1251を有さない点が異なる。すなわち、本実施の形態7に係るADRシフト&オフセット設定回路125では、実施の形態6では任意に設定可能としていたオフセット(2ビット)の各ビット値を、予め定められた値(ここでは“1”である場合を例示)に固定している。
0232
よって、ADRシフト&オフセット設定回路125に入力されたNビットのアドレス信号が示すアドレスのうち、上位(N−M)ビットの各々A2、A3を、ADRシフト&オフセット設定回路125から出力されるNビットのアドレス信号が示すアドレスのうち、下位(N−M)ビットの各々A’0、A’1とする。また、所定のオフセット値の各ビットB2、B3(どちらも値は“1”)を、ADRシフト&オフセット設定回路125から出力するNビットのアドレス信号のうち、残りの上位Mビットの各々A’(N−2)=A’2、A’(N−1)=A’3とする。
0233
続いて、図39を参照して、本実施の形態7に係る内蔵メモリ14のメモリマップについて説明する。ここでは、内蔵メモリ14のデータ幅は8ビットであり、内蔵メモリ14のアドレス幅はNビットであり、内蔵メモリ14のデータ容量が(8×2N)ビットであり、N=4である例について説明する。すなわち、本実施の形態7では、ウエイト#信号は、アドレスの最上位ビットを示す信号としては利用されない。
0234
内蔵メモリ14は、図39における先頭から12アドレスをデータが格納される領域として使用し、それに続く4アドレスをECCが格納される領域として使用する。つまり、内蔵メモリ14における領域は、データを格納するアドレスのNビット(図39ではA3〜A0)の値に対して、そのデータとペアになるECCを格納するアドレスのNビットの値は、図38に示したADRシフト&オフセット設定回路125の動作により変換されたもの(図39においてA3〜A0の値を「ADRシフト&オフセット設定」と示している部分、末尾から4アドレスの領域)になっている。
0235
すなわち、図39に示すように、アドレスADR−0(“0000”)〜ADR−3(“0011”)のデータ(“DATA0”〜“DATA3”)と、アドレスADR−C(“1100”)のECC(“ECC0(0、1、2、3)”)がペアになる。アドレスADR−4(“0100”)〜ADR−7(“0111”)のデータ(“DATA4”〜“DATA7”)と、アドレスADR−D(“1101”)のECC(“ECC1(4、5、6、7)”)がペアになる。アドレスADR−8(“1000”)〜ADR−B(“1011”)のデータ(“DATA8”〜“DATAB”)と、アドレスADR−E(“1110”)のECC(“ECC2(8、9、A、B)”)がペアになる。最後のアドレスADR−F(“1111”)の領域は使用されない。
0236
よって、ADR範囲制限回路126は、アドレス信号が示すアドレスが、ECCが格納されるアドレスADR−C(“1100”)〜ADR−F(“1111”)のいずれかのアドレスを示している場合、そのアドレスをデータが格納されるアドレスADR−0(“0000”〜ADR−B(“1011”)のうち、いずれかの予め定められたアドレスに変更する。
0237
以上に説明したように、本実施の形態7では、第1のアドレス(Nビットのアドレスに対応)のうち、下位から所定のオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット(Mビットに対応)を、設定されたオフセット値に変更したアドレスを第2のアドレスとして生成するようにしている。
0238
これによれば、実施の形態2〜実施の形態6と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。また、本実施の形態7によれば、内蔵メモリ14において使用されないアドレスの領域を減らすことができる。
0239
また、本実施の形態7では、ADR範囲制限回路126は、バスマスタから指定された第1のアドレスが、第2のアドレスが取り得る範囲として予め定められた範囲に含まれる場合、バスマスタから指定されたアドレスを、第1のアドレスが取り得るアドレスとして予め定められたアドレスに補正するようにしている。
0240
これによれば、本実施の形態7に係る構成のように、バスマスタがECCが格納されるアドレスを指定してデータの書き込みが可能であっても、バスマスタがECCが格納されるアドレスに対してECC以外のデータを書き込むことを抑止することができる。
0241
<実施の形態8>
続いて、本実施の形態8について、図面を用いて、その構成と動作を説明する。本実施の形態8に係るCPUシステム1の構成と動作については、図1に示した実施の形態1に係るCPUシステム1の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態8に係るI/F変換回路13の構成と動作については、図32に示した実施の形態6に係るI/F変換回路13の構成と動作と基本的に同様である。ただし、本実施の形態8では、I/F変換回路13において、ADR変換回路120が有するADRシフト&オフセット設定回路125の一部の構成と動作が、実施の形態6に係るADRシフト&オフセット設定回路125とは異なる。
0242
本実施の形態8では、ECCモードを、2つのECCモードのうちのいずれかに切り替え可能である。第1のECCモードは、バスマスタが内蔵メモリ14に対して8ビットのデータの書き込み及び読み出しを行うものであり、その8ビットのデータに対して5ビットのECCが生成されて内蔵メモリ14に格納される。第2のECCモードは、バスマスタが内蔵メモリ14に対して32ビットのデータの書き込み及び読み出しを行うものであり、その32ビットのデータに対して7ビットのECCが生成されて内蔵メモリ14に格納される。
0243
本実施の形態8に係るADRシフト&オフセット設定回路125は、図29に示した実施の形態5に係るADRローテーション回路123としての動作と、図33に示した実施の形態6に係るADRシフト&オフセット設定回路125としての動作とのいずれかに、その動作を切り替え可能である。
0244
すなわち、本実施の形態8に係るADR変換回路120は、設定されたECCモードに応じて、「ADRローテーション」と「ADRシフト&オフセット設定」のいずれかの動作に切り替え可能である。
0245
続いて、図40を参照して、本実施の形態8に係るADRシフト&オフセット設定回路125の構成について説明する。
0246
図40に示すように、本実施の形態8に係るADRシフト&オフセット設定回路125は、実施の形態6に係るADRシフト&オフセット設定回路125と比較して、さらに、オフセット信号のビット数分のセレクタ1252を有する。アドレス信号がNビットであり、オフセット信号がMビットであり、M=2である例について説明する。
0247
ADRシフト&オフセット設定回路125に入力されるアドレス信号の下位MビットA0、A1の各々は、2つのセレクタ1252の各々に入力される。オフセット設定レジスタ1251に格納された2ビットのオフセット値を示すオフセット信号B(N−2)、B(N−1)の各々は、2つのセレクタ1252の各々に入力される。
0248
セレクタ1252の各々は、バスマスタから入力されたアドレス信号の下位MビットA0、A1の各々、及び、オフセット設定レジスタ1251から入力されたオフセット信号B(N−2)、B(N−1)の各々のいずれかを選択し、選択した信号をADRシフト&オフセット設定回路125から出力するアドレス信号の上位MビットA’(N−2)、A’(N−1)として出力する。
0249
セレクタ1252の各々には、ECCモードを指定するECCモード信号が入力される。セレクタ1252の各々は、第1のECCモードを指定するECCモード信号(“0”)が入力されている場合、アドレス信号の下位MビットA0、A1の各々を選択する。一方、セレクタ1252の各々は、第2のECCモードを指定するECCモード信号(“1”)が入力されている場合、オフセット信号B(N−2)、B(N−1)の各々を選択する。
0250
ADRシフト&オフセット設定回路125に入力されたアドレス信号のうち、上位(N−M)ビットA2、・・・、A(N−1)の各々は、ADRシフト&オフセット設定回路125から出力されるアドレス信号のうち、下位(N−M)ビットA’0、A’1、・・・、A’(N−3)の各々となる。すなわち、これについては、図29に示した実施の形態5に係るADRローテーション回路123と、図33に示した実施の形態6に係るADRシフト&オフセット設定回路125と同様である。なお、このADRシフト&オフセット設定回路125でも、A0〜A(N−1)までのNビットのアドレス信号線の各ビットの信号は、N個のバッファ1250の各々で受けた後に使用するようにしている。
0251
以上に説明したように、本実施の形態8では、ADRシフト&オフセット設定回路125は、第1のモードが指定されている場合、第1のアドレス(N+1ビットのアドレスに対応)の少なくとも1つのビット以外のビットの全てを、所定のオフセットビット数だけ下位方向にシフトしたアドレスを第2のアドレスとして生成するようにしている。また、ADRシフト&オフセット設定回路125は、第2のモードが指定されている場合、第1のアドレスの少なくとも1つのビット以外のビットのうち、下位からオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット(Mビットに対応)を、設定されたオフセット値に変更したアドレスを第2のアドレスとして生成するようにしている。
0252
これによれば、第1のECCモード時には、実施の形態5と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。また、第2のECCモード時にも、実施の形態6と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。