(57)【要約】【課題】ハードウエア増加を抑えて、ＲＡＭのソフトエラーに対するデータ訂正能力を向上させるマイコンを提供する。【解決手段】プログラムに従って処理を行うマイコンであって、ＣＰＵ１と、ＣＰＵ１が処理するデータを記憶するＲＡＭ３とを有し、ＲＡＭ３に多重領域３１，３３を定義して、その領域へのアクセスに対してはＣＰＵ１が出力するアドレスへのアクセスと、そのアドレスに一定の値を加算もしくは減算して得られるアドレスへのコピーアクセスとを行うことにより、同一データを複数箇所で保持して信頼性を向上させる。【選択図】図１
2007148779.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、前記ＣＰＵが処理するデータを記憶するＲＡＭとを有するマイクロコントローラであって、
前記ＲＡＭを指定するアドレス空間のうち少なくとも１つの領域を多重領域として定義し、
前記多重領域へのアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの少なくとも１回のコピーアクセスとを行うことを特徴とするマイクロコントローラ。
【請求項２】
請求項１に記載のマイクロコントローラにおいて、
前記ＲＡＭの多重領域を指定するレジスタを有し、
前記レジスタは、前記多重領域の先頭アドレスと、前記多重領域の容量と、前記コピーアクセスのために前記ＣＰＵが出力するアドレスに加算もしくは減算する一定の値とを情報として持つことを特徴とするマイクロコントローラ。
【請求項３】
請求項１に記載のマイクロコントローラにおいて、
前記ＲＡＭの多重領域を指定するレジスタを有し、
前記レジスタは、前記多重領域の先頭アドレスと、前記多重領域の容量と、前記コピーアクセスの領域の先頭アドレスとを情報として持つことを特徴とするマイクロコントローラ。
【請求項４】
請求項１〜３のいずれか１項に記載のマイクロコントローラにおいて、
前記多重領域のアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの１回のコピーアクセスとを行い、
書き込みアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとに同一のデータを書き込み、
読み出しアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとからデータを読み出して値が同一であるかどうかの検査を行い、一致する場合には正常データであるとして読み出しデータとし、不一致の場合にはエラー信号を前記ＣＰＵに通知することを特徴とするマイクロコントローラ。
【請求項５】
請求項１〜３のいずれか１項に記載のマイクロコントローラにおいて、
前記多重領域のアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに異なる２種の値を加算もしくは減算して得られる２つのアドレスへの２回のコピーアクセスとを行い、
書き込みアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスの２つのアドレスとに同一のデータを書き込み、
読み出しアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスの２つのアドレスとからデータを読み出して値が同一であるかどうかの検査を行い、２つ以上のデータが一致する場合にはその一致するデータを読み出しデータとし、３つのデータがすべて不一致の場合にはエラー信号を前記ＣＰＵに通知することを特徴とするマイクロコントローラ。
【請求項６】
請求項５に記載のマイクロコントローラにおいて、
前記多重領域からの読み出しアクセスにおいて２つのデータが一致する場合には、前記２つのデータを不一致であったアドレスへ書き戻すことを特徴とするマイクロコントローラ。
【請求項７】
請求項１〜３のいずれか１項に記載のマイクロコントローラにおいて、
前記ＲＡＭは、データの誤りを検出するためのパリティビットを有し、
前記多重領域のアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの１回のコピーアクセスとを行い、
書き込みアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとに同一のデータとパリティビットを書き込み、
読み出しアクセスの場合には、前記ＣＰＵが出力するアドレスからデータとパリティビットを読み出してパリティ検査を行い、結果が正常なら読み出しデータとして読み出しアクセスを完了し、異常なら前記コピーアクセスのアドレスからデータとパリティビットを読み出してパリティ検査を行い、結果が正常なら読み出しデータとして読み出しアクセスを完了し、異常ならエラー信号を前記ＣＰＵに通知することを特徴とするマイクロコントローラ。
【請求項８】
請求項７に記載のマイクロコントローラにおいて、
前記多重領域からの読み出しアクセスにおいて前記ＣＰＵが出力するアドレスのデータのパリティ検査結果が異常で、前記コピーアクセスのアドレスのデータのパリティ検査結果が正常の場合、前記コピーアクセスのアドレスのデータを前記ＣＰＵが出力するアドレスへ書き戻すことを特徴とするマイクロコントローラ。
【請求項９】
請求項１〜３のいずれか１項に記載のマイクロコントローラにおいて、
前記ＲＡＭは、データの誤りを検出するためのパリティビットを有し、
前記多重領域のアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの１回のコピーアクセスとを行い、
書き込みアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとに同一のデータとパリティビットを書き込み、
読み出しアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとからデータとパリティビットを読み出してパリティ検査を行い、少なくとも一方の結果が正常なら読み出しデータとして読み出し、正常なデータを異常があったアドレスに書き戻してアクセスを完了し、２つとも異常ならエラー信号を前記ＣＰＵに通知することを特徴とするマイクロコントローラ。
【請求項１０】
請求項１〜３のいずれか１項に記載のマイクロコントローラにおいて、
前記ＲＡＭは、データの誤りを検出・訂正するためのＥＣＣビットを有し、
前記多重領域のアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの１回のコピーアクセスとを行い、
書き込みアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとに同一のデータとＥＣＣビットを書き込み、
読み出しアクセスの場合には、前記ＣＰＵが出力するアドレスからデータとＥＣＣビットを読み出して誤り訂正を行い、データが正常もしくは訂正できた場合には読み出しデータとして読み出しアクセスを完了し、異常なら前記コピーアクセスのアドレスからデータとＥＣＣビットを読み出して誤り訂正を行い、結果が正常もしくは訂正できた場合には読み出しデータとして読み出しアクセスを完了し、訂正できなかった場合にはエラー信号を前記ＣＰＵに通知することを特徴とするマイクロコントローラ。
【請求項１１】
請求項１０に記載のマイクロコントローラにおいて、
前記多重領域からの読み出しアクセスにおいて前記ＣＰＵが出力するアドレスのデータがＥＣＣ誤り訂正できず、前記コピーアクセスのアドレスのデータが正常もしくはＥＣＣ誤り訂正できた場合には、前記コピーアクセスのアドレスのデータを前記ＣＰＵが出力するアドレスへ書き戻すことを特徴とするマイクロコントローラ。
【請求項１２】
請求項１〜３のいずれか１項に記載のマイクロコントローラにおいて、
前記ＲＡＭは、データの誤りを検出・訂正するためのＥＣＣビットを有し、
前記多重領域のアクセスに対しては、前記ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの１回のコピーアクセスとを行い、
書き込みアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスとに同一のデータとＥＣＣビットを書き込み、
読み出しアクセスの場合には、前記ＣＰＵが出力するアドレスと、前記コピーアクセスのアドレスからデータとＥＣＣビットを読み出して誤り訂正を行い、少なくとも一方のデータが正常もしくは訂正できた場合には読み出しデータとして読み出し、前記読み出しデータをエラー訂正できなかったアドレスに書き戻してアクセスを完了し、いずれもエラー訂正できなかった場合にはエラー信号を前記ＣＰＵに通知することを特徴とするマイクロコントローラ。
【請求項１３】
請求項１〜１２のいずれか１項に記載のマイクロコントローラにおいて、
前記多重領域への書き込みデータを一時保存するバッファを有し、
前記多重領域へのアクセスは、前記ＣＰＵが出力するアドレスへの書き込みと、前記バッファへの書き込みとによって完了させ、
前記コピーアクセスのアドレスへは、前記バッファのデータを使って書き込みを行うことを特徴とするマイクロコントローラ。
【請求項１４】
請求項１３に記載のマイクロコントローラにおいて、
前記多重領域への書き込みの後、同一アドレスからの読み出しを行う場合には、前記ＲＡＭからデータを読み出さず、前記バッファからデータを読み出すことを特徴とするマイクロコントローラ。
【請求項１５】
請求項１〜１４のいずれか１項に記載のマイクロコントローラにおいて、
前記多重領域のコピーアクセスを前記マイクロコントローラの外部メモリに行うことを特徴とするマイクロコントローラ。
【請求項１６】
請求項１〜１２のいずれか１項に記載のマイクロコントローラにおいて、
前記ＲＡＭとは別に前記多重領域を容量とするコピー専用ＲＡＭを有し、
前記多重領域へのアクセスは、前記コピー専用ＲＡＭに対して同時に行うことを特徴とするマイクロコントローラ。
【請求項１７】
アドレス空間のうち少なくとも１つの領域を多重領域として定義し、
前記多重領域へのアクセスに対しては、ＣＰＵが出力するアドレスへのアクセスと、前記ＣＰＵが出力するアドレスに一定の値を加算もしくは減算して得られるアドレスへの少なくとも１回のコピーアクセスとを行うことを特徴とするＲＡＭ。
【請求項１８】
請求項１７に記載のＲＡＭにおいて、
前記多重領域を指定するレジスタを有し、
前記レジスタは、前記多重領域の先頭アドレスと、前記多重領域の容量と、前記コピーアクセスのために前記ＣＰＵが出力するアドレスに加算もしくは減算する一定の値とを情報として持つことを特徴とするＲＡＭ。
【請求項１９】
請求項１８に記載のＲＡＭにおいて、
前記多重領域を指定するレジスタを有し、
前記レジスタは、前記多重領域の先頭アドレスと、前記多重領域の容量と、前記コピーアクセスの先頭アドレスとを情報として持つことを特徴とするＲＡＭ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに係わり、特に高い信頼性を必要とする制御機器において使用されるマイクロコントローラに適用して有効な技術に関する。
【背景技術】
【０００２】
マイクロコントローラ（以下「マイコン」という）は、家電製品、ＡＶ機器、携帯電話、自動車、産業機械等の機器に組み込まれ、メモリに記憶されているプログラムにしたがって処理を行うことで、それぞれの機器の制御を行う装置である。
【０００３】
マイコンは、機器に組み込まれて利用されるというその性質上、機器の制御を行うために必要な性能を備え、かつ、安価であることが要求される。さらに、動作保証される使用条件の下で、正常に動作するという信頼性に対する要求も強い。
【０００４】
近年、機器制御の複雑化・高度化に伴ってＣＰＵが処理するデータ量が増大し、マイコンに内蔵されるＲＡＭ容量が増加している。一方、製造プロセスの微細化とマイコンの電源の低電圧化に伴って、記憶素子の電荷が中性子線などの影響で一時的に反転するソフトエラーが問題となってきている。特にＲＡＭは微細であるため、他の素子に比べてソフトエラーの影響を受けやすい。ＲＡＭの記憶データの中には、機器の制御に直接影響する重要なデータがあり、ソフトエラーの影響を受けにくくすることが望まれる。
【０００５】
従来から用いられているＲＡＭの高信頼化技術としてＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）がある（例えば特許文献１，２）。ＥＣＣは本来のデータに検査ビットを付加して記憶しておくことにより、１ビット誤りが生じた場合でも元の正しいデータを復元でき、２ビット誤りが生じた場合には復元はできないが誤りがあることを検出することができる技術である。また、通信機器などデータに高い信頼性が求められる機器では、ＲＡＭを多重化して同一データを複数のＲＡＭに記憶しておき、読み出す時に値を照合するというミラーリング処理をハードウエアで自動的に実行するものもある。
【特許文献１】特開平９−２８８６１９号公報
【特許文献２】特開平５−８８９８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、前述した従来の診断技術のうち、ＥＣＣは現在広く一般に用いられており有効な技術であるが、２ビット以上の誤りに対しては訂正することができない。ミラーリング処理は、同一データを複数のＲＡＭに記憶するため、同一のデータが複数箇所で同時に誤る可能性が極めて低いため、ＥＣＣと組み合わせることによってデータを訂正できる確率が飛躍的に向上すると思われる。しかしながら、低コストが要求されるマイコンに適用することは困難である。
【０００７】
そこで、本発明の目的は、ハードウエア増加を抑えて、ＲＡＭのソフトエラーに対するデータ訂正能力を向上させるマイコンを提供することにある。
【０００８】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１０】
本発明は、プログラムに従って処理を行うマイコンであって、ＣＰＵと、ＣＰＵが処理するデータを記憶するＲＡＭとを有し、ＲＡＭに多重領域を定義して、その領域へのアクセスに対してはＣＰＵが出力するアドレスへのアクセスと、そのアドレスに一定の値を加算もしくは減算して得られるアドレスへのコピーアクセスとを行うことにより、同一データを複数箇所で保持して信頼性を向上させることが可能なマイコンが提供される。
【００１１】
これにより、ＲＡＭを多重化することなく、ＲＡＭの多重領域に信頼性が必要とされるデータを置くことにより、書き込みの場合にはコピーが自動的に生成され、読み出しの場合にはコピーを利用したエラー検出・訂正が行われる。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１３】
本発明によれば、高信頼データ用として必要な容量をＲＡＭの多重領域として設定でき、同一データを複数箇所で持つことにより、データが誤る確率を減らし、信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１５】
（第１の実施例）
図１は、本発明を適用した第１の実施例のマイコンの構成の一例を示す図である。図１では、第１の実施例として、誤り検出・訂正機能の無いＲＡＭを使用し、その多重領域として複写元に対し１つの複写先を持つことにより、誤り検出を行えるようにしたものである。第１の実施例のマイコンは、ＣＰＵ１と、コントローラ２と、ＲＡＭ３から構成される。
【００１６】
ＣＰＵ１は、コントローラ２を介してＲＡＭ３をアクセスする。ＲＡＭ３は、多重領域（複写元）３１、多重領域（複写先）３３、多重領域以外の領域（以下「非多重領域」という）３０，３２，３４に分かれている。多重領域（複写元）３１と多重領域（複写先）３３は同じ容量であり、ＣＰＵ１が多重領域（複写元）３１をアクセスした場合には、多重領域（複写先）３３もアクセスされる。非多重領域３０，３２，３４をアクセスした場合には、そのアドレスだけがアクセスされる。多重領域（複写先）３３は多重領域（複写元）３１のコピーであるため、ＣＰＵ１が直接アクセスことは想定していない。アクセス禁止領域としてハードウエア的にアクセス不可とする、あるいは書き込みのみハードウエア的にアクセス不可とするなどの方法が考えられる。
【００１７】
次に、ＣＰＵ１とコントローラ２のインタフェース信号について説明する。４０は、ＣＰＵ１のアクセスコマンドであり、アイドル（アクセスしない）、読み出し、書き込み、アクセスのサイズなどの情報を持つ。４１はＣＰＵ１のアドレス、４２は書き込みデータ、４３は読み出しデータである。４４は、ＣＰＵ１のアクセスを１サイクルで完了できない場合に、ＣＰＵ１のアクセスを延長させるためのバスウエイト信号である。４５は、ＣＰＵ１の読み出しデータが誤った場合に出力するエラー信号である。
【００１８】
コントローラ２は、ＣＰＵ１のアクセスに対して、ＲＡＭ３の読み出しおよび書き込みの制御を行う。多重領域設定レジスタ２０は、ＲＡＭ３の多重領域（複写元）３１および多重領域（複写先）３３を設定するレジスタであり、ＣＰＵ１がその設定を行う。アドレス変換機構２１は、ＣＰＵ１のアドレス４１をＲＡＭアドレス５１に変換する。ＲＡＭ３の多重領域（複写元）３１へのアクセスの場合には、ＣＰＵ１のアドレス４１をＲＡＭアドレス５１としてＲＡＭ３をアクセスした後、多重領域（複写先）３３のアドレスに変換してＲＡＭ３をアクセスする。ＲＡＭ３の非多重領域３０，３２，３４へのアクセスの場合にはＣＰＵアドレス４１をそのまま出力する。データ検査機構２３は、ＲＡＭ３の多重領域からの読み出しにおいて、多重領域（複写元）３１と多重領域（複写先）３３の値の照合を行う。
【００１９】
次に、コントローラ２とＲＡＭ３のインタフェースについて説明する。５０はＲＡＭ３へのアクセスコマンド、５１はアドレス、５２は書き込みデータ、５３は読み出しデータである。
【００２０】
図２は、図１におけるＲＡＭ３の多重領域設定の方法を示す図である。コントローラ２における多重領域設定レジスタ２０は、複写元開始アドレスレジスタ２００、多重領域サイズレジスタ２０１、複写先開始アドレスレジスタ２０２から成る。これら３つのレジスタがＲＡＭ３の多重領域３１，３３を指定する様子を示している。複写元開始アドレスレジスタ２００は、多重領域（複写元）３１の先頭アドレスを指す。複写先開始アドレスレジスタ２０２は、多重領域（複写先）３３の先頭アドレスを指す。多重領域サイズレジスタ２０１は、多重領域３１，３３の容量を示す。
【００２１】
尚、多重領域の設定方法は、図２に示す以外の方法も考えられる。例えば、多重領域（複写元）３１の先頭アドレス、多重領域３１，３３のサイズ、多重領域（複写元）３１と多重領域（複写先）３３の距離（アドレスの差分）である。また、多重領域も複数組持つことが考えられる。この場合は、図２における多重領域設定レジスタ２００，２０１，２０２を複数組持つことで対応可能になる。
【００２２】
図３は、図１におけるＣＰＵ１のＲＡＭ３への書き込みを示す図である。（１）（２）は多重領域への書き込みを、（３）は非多重領域への書き込みを示す。
【００２３】
（１）は、ＣＰＵ１がＲＡＭ３の多重領域への書き込みを実行しており、アドレス変換機構２１はＣＰＵ１のアドレス４１をそのままＲＡＭアドレス５１に出力する。また、次のサイクルでは多重領域（複写先）３３への書き込みを行うため、ＣＰＵ１に対してバスウエイト（バスウエイト信号）４４を出力する。コントローラ２は、ＣＰＵ１の書き込みデータ４２をＲＡＭ書き込みデータ５２に出力し、多重領域（複写元）３１に書き込む。
【００２４】
（２）は、前のサイクルのバスウエイト４４によって、ＣＰＵ１の書き込みを待たせ、ＲＡＭ３の多重領域（複写先）３３への書き込みを行っている状態を示す。多重領域（複写先）へのアクセスはこのサイクルで完了するため、バスウエイト４４は出力しない。コントローラ２は、ＣＰＵ１が出力する書き込みデータ４２をＲＡＭ書き込みデータ５２に出力し、多重領域（複写先）３３に書き込む。
【００２５】
（３）は、ＣＰＵ１がＲＡＭ３の非多重領域３２への書き込みを実行しており、アドレス変換機構２１はＣＰＵ１のアドレス４１をそのままＲＡＭアドレス５１に出力する。また、書き込みはこのサイクルで完了するため、バスウエイト４４は出力しない。
【００２６】
図４は、図３で説明したＲＡＭ３の各領域（多重領域（複写元）、多重領域（複写先）、非多重領域）への書き込みを示すタイムチャートである。ＮおよびＮ＋１サイクルは多重領域への書き込み、Ｎ＋２サイクルは非多重領域への書き込みである。バスウエイト４４は、次のサイクルで多重領域（複写先）へのアクセスがある場合に出力される（Ｎサイクル）。これにより、ＣＰＵ１のアクセスを待たせ、多重領域（複写先）への書き込みを実行する（Ｎ＋１サイクル）。
【００２７】
図５は、図１におけるＣＰＵ１のＲＡＭ３からの読み出しを示す図である。（１）（２）は多重領域からの読み出しを、（３）は非多重領域からの読み出しを示す。
【００２８】
（１）は、ＣＰＵ１がＲＡＭ３の多重領域から読み出しを実行しており、アドレス変換機構２１はＣＰＵ１のアドレス４１をそのままＲＡＭアドレス５１に出力する。また、次のサイクルでは多重領域（複写先）３３から読み出しを行うため、ＣＰＵ１に対してバスウエイト４４を出力する。データ検査機構２３は、多重領域（複写元）３１からの読み出しデータ５３を内部のバッファに保持する。このサイクルではＣＰＵ１への読み出しデータ４３は確定していない。
【００２９】
（２）は、前のサイクルのバスウエイト４４によって、ＣＰＵ１の読み出しを待たせ、ＲＡＭ３の多重領域（複写先）３３から読み出しを行っている状態を示す。多重領域（複写先）へのアクセスはこのサイクルで完了するため、バスウエイト４４は出力しない。データ検査機構２３は、多重領域（複写先）３３からの読み出しデータ５３を、前のサイクルで読み出してバッファに保持している多重領域（複写元）３１のデータと比較する。これらが一致していれば、多重領域からの読み出しデータ４３としてＣＰＵ１に読み込まれる。不一致の場合には、多重領域の一方に誤りがあると判断し、エラー信号４５を出力する。
【００３０】
（３）は、ＣＰＵ１がＲＡＭ３の非多重領域３２からの読み出しを実行しており、アドレス変換機構２１はＣＰＵ１のアドレス４１をそのままＲＡＭアドレス５１に出力する。また、読み出しはこのサイクルで完了するため、バスウエイト４４は出力しない。
【００３１】
図６は、図５で説明したＲＡＭ３の各領域（多重領域（複写元）、多重領域（複写先）、非多重領域）からの読み出しを示すタイムチャートである。ＮおよびＮ＋１サイクルは多重領域からの読み出し、Ｎ＋２サイクルは非多重領域からの読み出しである。バスウエイト４４は、次のサイクルで多重領域（複写先）へのアクセスがある場合に出力される（Ｎサイクル）。これにより、ＣＰＵ１のアクセスを待たせ、多重領域（複写先）からの読み出しを実行する（Ｎ＋１サイクル）。複写元と複写先のデータが不一致の場合はエラーを出力する（４５−２）。
【００３２】
図７は、図１におけるアドレス変換機構２１の構成を示す図である。複写元開始アドレスレジスタ２００、多重領域サイズレジスタ２０１、複写先開始アドレスレジスタ２０２、ＣＰＵアドレス４１を、アクセス領域判定部２１０に入力し、ＣＰＵアドレス４１が図１におけるＲＡＭ３の多重領域（複写元）３１であるかどうかを判定する。多重領域（複写元）３１にある条件は次の（式１）となる。
【００３３】
多重領域開始アドレス
≦ＣＰＵアドレス＜多重領域開始アドレス＋多重領域サイズ…（式１）
多重領域（複写元）３１である場合は、ＣＰＵへのバスウエイト４４を出力する。また、図１におけるデータ検査機構２３において、バッファに保持している多重領域（複写元）のデータとＲＡＭから読み出した多重領域（複写先）のデータとの比較を行うための制御信号２１３を出力する。複写先アドレス計算部２１１は、多重領域設定レジスタ２００，２０１，２０２およびＣＰＵアドレス４１を入力し、多重領域（複写先）アドレスを計算する。多重領域（複写先）アドレスは次の（式２）で計算できる。
【００３４】
多重領域（複写先）アドレス
＝ＣＰＵアドレス＋複写先開始アドレス−複写元開始アドレス…（式２）
アドレス選択部２１２は、ＣＰＵアドレス４１と複写先アドレス計算部２１１の出力を入力し、アクセス領域判定部２１０の指示に従いアドレスを選択する。
【００３５】
図８は、図１におけるデータ検査機構２３の構成を示す図である。２３０は、ＲＡＭ読み出しデータ５３を保持するバッファである。比較器２３１は、ＲＡＭ読み出しデータ５３とバッファ２３０を比較する。比較はデータ検査制御信号２１３が有効の場合に行う。多重領域（複写元）からの読み出されたデータ５３はバッファ２３０に保持される。次のサイクルで多重領域（複写先）から読み出されたデータ５３とバッファ２３０が比較器２３１で比較され、不一致の場合にはエラー信号４５が出力される。
【００３６】
以上により、第１の実施例によれば、ＲＡＭを多重化することなく、ＲＡＭの多重領域に信頼性が必要とされるデータを置くことにより、書き込みの場合にはコピーが自動的に生成され、読み出しの場合にはコピーを利用したエラー検出・訂正（データの照合による誤りの検出または訂正）が行われる。特に、必要な容量だけＲＡＭに多重領域を設定して、同一データを複数箇所で記憶することで、ソフトエラーが発生して一方のデータが訂正できない場合でも、正しいデータに訂正できるようになる。
【００３７】
この結果、高信頼データ用として必要な容量をＲＡＭの多重領域として設定でき、同一データを複数箇所で持つことにより、データが誤る確率を減らし、信頼性を向上させることができる。
【００３８】
（第２の実施例）
図９は、本発明を適用した第２の実施例のマイコンの構成の一例を示す図である。図９では、第２の実施例として、誤り検出・訂正機能の無いＲＡＭを使用し、その多重領域として複写元に対し２つの複写先を持つことにより、誤り訂正を行えるようにしたものである。
【００３９】
前述した図１の第１の実施例との違いは、ＲＡＭ３の多重領域（複写先）が３３と３５の２つになった点である。また、コントローラ２において、多重領域設定レジスタ２０、アドレス変換機構２１、データ検査機構２３が異なる。
【００４０】
図１０は、図９におけるＲＡＭ３の多重領域設定の方法を示す図である。多重領域設定レジスタ２０は、複写元開始アドレスレジスタ２００、多重領域サイズレジスタ２０１、複写先１開始アドレスレジスタ２０２、複写先２開始アドレスレジスタ２０３から成る。これら４つのレジスタがＲＡＭ３の多重領域３１，３３，３５を指定する様子を示している。複写元開始アドレスレジスタ２００は、多重領域（複写元）３１の先頭アドレスを指す。複写先１開始アドレスレジスタ２０２は、多重領域（複写先１）３３の先頭アドレスを指す。複写先２開始アドレスレジスタ２０３は、多重領域（複写先２）３５の先頭アドレスを示す。多重領域サイズレジスタ２０１は、多重領域３１，３３，３５の容量を示す。
【００４１】
アドレス変換機構２１は、前述した図７の構成に対して、複写先アドレス開始レジスタ２０２が２つになり、２つの多重領域（複写先１，２）のアドレスを計算できるようにした点が異なる。２つの多重領域（複写先１，２）アドレスは次の（式３）（式４）で計算できる。
【００４２】
多重領域（複写先１）アドレス
＝ＣＰＵアドレス＋複写先１開始アドレス−複写元開始アドレス…（式３）
多重領域（複写先２）アドレス
＝ＣＰＵアドレス＋複写先２開始アドレス−複写元開始アドレス…（式４）
図１１は、図９におけるデータ検査機構２３の構成を示す図である。２３０，２３１は、ＲＡＭ読み出しデータ５３を保持するバッファである。多数決回路２３２は、ＲＡＭ読み出しデータ５３とバッファ２３０，２３１を比較する。２つ以上のデータが一致する場合、多数のデータをＣＰＵ読み出しデータ４３として出力する。３つのデータが異なる場合はエラー信号４５を出力する。多数決はデータ検査制御信号２１３が有効の場合に行う。多重領域（複写元）からの読み出されたデータ５３はバッファ２３０に保持される。次のサイクルで多重領域（複写先１）から読み出されたデータ５３はバッファ２３１に保持される。次のサイクルで多重領域（複写先２）から読み出されたデータ５３とバッファ２３０，２３１が多数決回路２３２で比較され、不一致の場合にはエラー信号４５が出力される。
【００４３】
図１２は、図１１で説明したＲＡＭ３の多重領域（複写元、複写先１、複写先２）からの読み出しを示すタイムチャートである。Ｎ，Ｎ＋１，Ｎ＋２サイクルはそれぞれ複写元、複写先１、複写先２からの読み出しである。バスウエイト４４は、次のサイクルで多重領域（複写先１、複写先２）へのアクセスがある場合に出力される（Ｎサイクル、Ｎ＋１サイクル）。これにより、ＣＰＵ１のアクセスを待たせ、多重領域（複写先１、複写先２）からの読み出しを実行する（Ｎ＋１サイクル、Ｎ＋２サイクル）。複写元と複写先のデータがすべて不一致の場合はエラーを出力する（４５−３）。
【００４４】
以上により、第２の実施例によれば、前述の第１の実施例と同様の効果が得られるとともに、読み出しデータの多数決による比較を行うことで、第１の実施例に比べてより一層の信頼性の向上が可能となる。
【００４５】
（第３の実施例）
図１３は、本発明を適用した第３の実施例のマイコンの構成の一例を示す図である。図１３では、第３の実施例として、誤り検出機能のあるＲＡＭを使用し、その多重領域として複写元に対し１つの複写先を持つことにより、誤り訂正を行えるようにしたものである。ＲＡＭ３は、データビットとパリティビットを持っており、読み出しにおいてパリティ検査を行い、パリティエラー信号５５を出力する。
【００４６】
多重領域からの読み出しは３つの方法が考えられる。第１の方法は、多重領域（複写元）３１の読み出しでパリティエラーが無ければ、そのデータをＣＰＵ１への読み出しデータ４３としてアクセスを完了させる。この場合、多重領域（複写先）の読み出しは行わない。多重領域（複写元）３１の読み出しでパリティエラーがあれば、多重領域（複写先）３３の読み出しを行い、パリティエラーが無ければそのデータをＣＰＵへの読み出しデータ４３としてアクセスを完了する。パリティエラーがあればエラー信号４５を出力する。第２の方法は、第１の方法において多重領域（複写元）がパリティエラーありで、多重領域（複写先）がパリティエラー無しの場合に、そのデータを多重領域（複写元）に書き戻す方法である。第３の方法は、第１の方法において多重領域（複写元）にパリティエラーが無い場合でも、多重領域（複写先）を読み出して、パリティエラーがあった領域に正しいデータを書き戻す方法である。これらの方法では、第１、第２、第３の順で、読み出しに時間がかかるようになるが、データが故障する確率を小さくできる。性能と信頼性のトレードオフにより、読み出し方式を選択することができる。
【００４７】
以上により、第３の実施例によれば、読み出しにおいてパリティ検査を行うことで、前述の第１の実施例と同様の効果を得ることができる。
【００４８】
以上、本発明者によってなされた発明を発明の実施の形態に基づき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００４９】
例えば、第３の実施例では、ＲＡＭの誤り検出機能としてパリティを例に上げたが、ＥＣＣでも同様である。ＥＣＣは１ビット誤りを訂正でき、２ビット誤りを検出できる。ＥＣＣで２ビット誤りが検出された場合に、多重領域を利用して正しいデータを読み出すことができ、また正しいデータを２ビット誤りが検出された領域に書き戻すことが可能である。
【００５０】
これまで述べた３つの実施例について、多重領域への書き込みを高速化することも可能である。ＲＡＭ３への書き込みデータを一時的に保持するバッファを持ち、多重領域（複写元）への書き込みが完了したら、ＣＰＵ１の書き込みアクセスを完了させる。次に書き込みがあるまでの間、ＣＰＵ１のＲＡＭ３へのアクセスが無いタイミングでバッファから多重領域（複写先）へ書き込むようにする。多重領域への書き込みが連続する場合など、バッファから多重領域（複写先）への書き込みとＣＰＵ１のＲＡＭ３への書き込みが重なった場合は、ＣＰＵ１にバスウエイトを出力してアクセスを待たせることで対応できる。
【００５１】
多重領域への書き込みの後に同じアドレスを読み出す場合に、読み出しを高速化することも可能である。この場合、ＲＡＭ３からデータを読み出さずに、多重領域への書き込み用バッファにあるデータを読み出させる。
【００５２】
また、多重領域（複写先）は多重領域（複写元）と必ずしも同じＲＡＭである必要は無い。多重領域と同じ容量のＲＡＭを別に持ち、通常のＲＡＭと独立にアクセスできるように構成することで、多重領域へのアクセスを１回でできるようになる。また、多重領域（複写先）を外部メモリに設定することも可能である。さらに、外部メモリに多重領域を設定して利用することもできる。
【００５３】
以上述べた実施例はマイコンへの適用例であるが、図１、図９、図１３におけるコントローラ２の機能を単体メモリ部品に組み入れることで、高信頼なＲＡＭなどのメモリを構成することが可能になる。
【産業上の利用可能性】
【００５４】
本発明は、高い信頼性を必要とする制御機器において使用されるマイコンやメモリに適用して有効である。
【図面の簡単な説明】
【００５５】
【図１】本発明を適用した第１の実施例のマイコンの構成の一例を示す図である。
【図２】図１におけるＲＡＭの多重領域設定の方法を示す図である。
【図３】図１におけるＣＰＵのＲＡＭへの書き込みを示す図である。
【図４】図３で説明したＲＡＭの各領域（多重領域（複写元）、多重領域（複写先）、非多重領域）への書き込みを示すタイムチャートである。
【図５】図１におけるＣＰＵのＲＡＭからの読み出しを示す図である。
【図６】図５で説明したＲＡＭの各領域（多重領域（複写元）、多重領域（複写先）、非多重領域）からの読み出しを示すタイムチャートである。
【図７】図１におけるアドレス変換機構の構成を示す図である。
【図８】図１におけるデータ検査機構の構成を示す図である。
【図９】本発明を適用した第２の実施例のマイコンの構成の一例を示す図である。
【図１０】図９におけるＲＡＭの多重領域設定の方法を示す図である。
【図１１】図９におけるデータ検査機構の構成を示す図である。
【図１２】図１１で説明したＲＡＭの多重領域（複写元、複写先１、複写先２）からの読み出しを示すタイムチャートである。
【図１３】本発明を適用した第３の実施例のマイコンの構成の一例を示す図である。
【符号の説明】
【００５６】
１…ＣＰＵ、２…コントローラ、３…ＲＡＭ、２０…多重領域設定レジスタ、２１…アドレス変換機構、２３…データ検査機構、３０，３２，３４，３６…非多重領域、３１…多重領域（複写元）、３３，３５…多重領域（複写先）、４０…ＣＰＵのバスコマンド、４１…ＣＰＵのアドレス、４２…ＣＰＵの書き込みデータ、４３…ＣＰＵの読み出しデータ、４４…バスウエイト信号、４５…エラー信号、５１…ＲＡＭアドレス、５２…ＲＡＭ書き込みデータ、５３…ＲＡＭ読み出しデータ、５５…パリティエラー信号。
【図１】
2007148779.tif 000003
【図２】
2007148779.tif 000004
【図３】
2007148779.tif 000005
【図４】
2007148779.tif 000006
【図５】
2007148779.tif 000007
【図６】
2007148779.tif 000008
【図７】
2007148779.tif 000009
【図８】
2007148779.tif 000010
【図９】
2007148779.tif 000011
【図１０】
2007148779.tif 000012
【図１１】
2007148779.tif 000013
【図１２】
2007148779.tif 000014
【図１３】
2007148779.tif 000015