(57)【要約】【課題】誤り訂正を行うメモリ制御装置であり、メモリ容量の増加を抑制するメモリ制御装置を提供する。【解決手段】本発明に係るメモリ制御装置は、誤り訂正符号１３２を含むデータをメモリ１３０から読み出すメモリ制御装置１２０であって、誤り訂正符号１３２に基づき、データの誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正を行ったデータを外部に送出する誤り訂正部１２２と、メモリ１３０から読み出したデータを誤り訂正部１２２へ送出するか、メモリ１３０から読み出したデータを外部へ送出するかを選択するセレクタ１２１とを備える。【選択図】図１
2008139908.tif 000002
【特許請求の範囲】
【請求項１】
誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であって、
前記誤り訂正符号に基づき、前記データの誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正を行ったデータを外部に送出する誤り訂正手段と、
前記メモリから読み出した前記データを前記誤り訂正手段へ送出するか、前記メモリから読み出した前記データを外部へ送出するかを選択するセレクタとを備える
ことを特徴とするメモリ制御装置。
【請求項２】
前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、
前記メモリ制御装置は、さらに、
前記誤り訂正符号を前記ＣＰＵの動作には関係のない命令に置き換えて外部へ送出する命令置き換え手段を備える
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記メモリ制御装置は、さらに、
外部から入力されたアドレスを、前記誤り訂正符号が格納される領域を含む前記メモリ上のアドレスに変換するアドレス変換手段を備える
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項４】
前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、
前記セレクタは、前記マイコンブロックからのプログラムデータの読み出しの際に第１の論理となる命令読み出し信号が前記第１の論理である場合に、前記メモリから読み出した前記データを前記誤り訂正手段へ送出し、前記命令読み出し信号が前記第１の論理でない場合に、前記メモリから読み出した前記データを前記マイコンブロックへ送出し、
前記アドレス変換手段は前記命令読み出し信号が前記第１の論理である場合に、前記マイコンブロックから入力されたアドレスを、前記誤り訂正符号が格納される領域を含む前記メモリ上のアドレスに変換する
ことを特徴とする請求項３記載のメモリ制御装置。
【請求項５】
前記メモリ制御装置は、さらに、
外部から入力されたデータに対し誤り訂正符号を生成する誤り訂正符号生成手段と、
外部から入力されたアドレスが所定のアドレス範囲に含まれるか否かを判定するアドレス判定手段と、
前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれると判定された場合に、外部から入力されたデータを前記誤り訂正符号生成手段に送出し、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれないと判定された場合に、前記データを前記メモリに送出する第２セレクタとを備え、
前記セレクタは、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれると判定された場合に、前記メモリから読み出した前記データを前記誤り訂正手段へ送出し、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれないと判定された場合に、前記メモリから読み出した前記データを外部へ送出し、
前記アドレス変換手段は、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれると判定された場合に、外部から入力されたアドレスを、前記誤り訂正符号が格納される領域を含む前記メモリ上のアドレスに変換する
ことを特徴とする請求項３記載のメモリ制御装置。
【請求項６】
前記メモリ制御装置は、さらに、
前記所定のアドレス範囲を決定するための値を固定値として保持するアドレス記憶手段を備え、
前記アドレス判定手段は、前記アドレス記憶手段が保持する前記所定のアドレス範囲を決定するための値に基づき、外部から入力されたアドレスが前記所定のアドレス範囲に含まれるか否かを判定する
ことを特徴とする請求項５記載のメモリ制御装置。
【請求項７】
前記メモリ制御装置は、さらに、
外部から入力された前記所定のアドレス範囲を決定するための値を保持するアドレス記憶手段を備え、
前記アドレス判定手段は、前記アドレス記憶手段が保持する前記所定のアドレス範囲を決定するための値に基づき、外部から入力されたアドレスが前記所定のアドレス範囲に含まれるか否かを判定する
ことを特徴とする請求項５記載のメモリ制御装置。
【請求項８】
前記メモリ制御装置は、少なくともＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）制御装置からの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、
前記セレクタは、前記ＤＭＡ制御装置からの読み出し命令の場合に、前記メモリから読み出した前記データ及び前記誤り訂正符号を前記ＤＭＡ制御装置に送出する
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項９】
前記メモリ制御装置は、ＣＰＵを備えるマイコンブロック及びＤＭＡ制御装置からの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、
前記セレクタは、前記マイコンブロックからのプログラムデータの読み出しの際に第１の論理となる命令読み出し信号が前記第１の論理である場合、又は前記ＤＭＡ制御装置からのデータの読み出しの際に第２の論理となるＤＭＡ読み出し信号が前記第２の論理である場合に、前記メモリから読み出した前記データを前記誤り訂正手段へ送出し、前記命令読み出し信号が前記第１の論理でなく、かつ前記ＤＭＡ読み出し信号が前記第２の論理でない場合に、前記メモリから読み出した前記データを前記マイコンブロック又は前記ＤＭＡ制御装置へ送出する
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項１０】
前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、
前記マイコンブロックは、前記ＣＰＵからの命令を前記メモリ制御装置又は他の装置に振り分けるバスコントロールユニットと、
前記バスコントロールユニットの振り分け先を決定するための情報を保持するレジスタとを備え、
前記メモリ制御装置は、さらに、
前記誤り訂正手段が誤りを検出した場合に、前記レジスタが保持する情報を変更するレジスタ設定変更手段を備える
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項１１】
前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、
前記ＣＰＵは、プログラムの配置場所を示す情報を保持するレジスタを備え、
前記メモリ制御装置は、さらに、
前記誤り訂正手段が誤りを検出した場合に、前記レジスタが保持する情報を変更するレジスタ設定変更手段を備える
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項１２】
請求項１記載のメモリ制御装置と、
プログラムソースをコンパイルしたオブジェクトに所定のサイズのデータ領域を挿入するデータ領域挿入手段と、
前記データ領域挿入手段が挿入した前記データ領域を含めて前記オブジェクトにおけるオペランドのアドレス解決を行うアドレス解決手段と、
前記オブジェクトの誤り訂正符号を算出する誤り訂正符号算出手段と、
前記誤り訂正符号算出手段により算出された誤り訂正符号を、前記データ領域に書き込む誤り訂正符号書き込み手段とを備え、
前記メモリ制御装置は、前記誤り訂正符号書き込み手段により、誤り訂正符号を前記データ領域に書き込まれたオブジェクトを前記メモリに書き込む
ことを特徴とするコンピュータシステム。
【請求項１３】
メモリと、
前記メモリにデータの書き込み及び読み出しを行う請求項１〜１１のいずれか１項に記載のメモリ制御装置と、
前記メモリ制御装置に前記メモリへのデータの書き込み及び読み出し命令を送るマイコンブロックとを備える
ことを特徴とするコンピュータシステム。
【請求項１４】
請求項１２又は１３記載のコンピュータシステムを備える
ことを特徴とするデータ再生記録装置。
【請求項１５】
請求項１記載のメモリ制御装置により前記メモリに書き込まれるプログラムデータの生成方法であって、
プログラムソースをコンパイルしたオブジェクトに所定のサイズのデータ領域を挿入するデータ領域挿入ステップと、
前記データ領域挿入ステップにおいて挿入された前記データ領域を含めて前記オブジェクトにおけるオペランドのアドレス解決を行うアドレス解決ステップと、
前記オブジェクトの誤り訂正符号を算出する誤り訂正符号算出ステップと、
前記誤り訂正符号算出ステップにおいて算出された誤り訂正符号を、前記データ領域に書き込む誤り訂正符号書き込みステップとを含む
ことを特徴とするプログラムデータの生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、コンピュータシステム及びデータ再生記録装置に関し、特に、データ及び誤り訂正符号をメモリから読み出すメモリ制御装置に関する。
【背景技術】
【０００２】
半導体メモリチップでは電気的ノイズ、メモリセルの欠陥及び宇宙線の飛来等により記録データに誤りが発生する。記録データの誤りの発生確率は極僅かである。しかしながら、近年の半導体の微細化技術発展により、単位面積当たりのメモリセル数が増大しており、結果としてデータ誤りの発生確率は無視できなくなっている。
【０００３】
この誤りを検出し、訂正する方法としては誤り訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ：ＥＣＣ）を用いた誤り訂正機構が知られている。ＥＣＣは、記録するデータ長に応じたハミング符号を用いた誤り訂正符号である。ＥＣＣを用いた誤り訂正機構では、データと共にＥＣＣをメモリに保存する。メモリからデータを読み出す際にデータ及びＥＣＣを読み出し、データ及びＥＣＣより読み出したデータの誤り検出、及び訂正を行う。例えば、６４ビットのデータについて８ビットのＥＣＣを用いることで、１ビットの誤りを訂正できる。
【０００４】
図１３は、従来のＥＣＣを用いた誤り訂正機構を利用した一般的なコンピュータシステムの構成を示す図である。図１３に示すコンピュータシステム１０００では、６４ビットのデータに対して８ビットのＥＣＣを用いる。コンピュータシステム１０００は、メモリモジュール１００１と、チップセット１００２と、ＣＰＵ１００３とを備える。ＣＰＵ１００３は、チップセット１００２にデータの読み出し及び書き込み命令を送る。チップセット１００２は、ＣＰＵ１００３からの命令に応じて、メモリモジュール１００１へのデータの読み出し及び書き込みを行う。チップセット１００２は、データ読み出し時には、メモリモジュール１００１から６４ビットのデータ及び８ビットのＥＣＣを読み出し、読み出したデータの誤り検出及び訂正を行う。また、チップセット１００２は、データ書き込み時には、ＣＰＵ１００３からの６４ビットの書き込みデータに基づき、８ビットのＥＣＣを生成し、データ及びＥＣＣをメモリモジュール１００１に書き込む。
【０００５】
メモリモジュール１００１は、複数のメモリチップ１００４を備える。各メモリチップ１００４は、８ビットのデータ用ビット線１００５と、１ビットのＥＣＣ用ビット線１００６とを備える。チップセット１００２によるデータの書き込み及び読み出しにはデータ用ビット線１００５が用いられ、ＥＣＣの書き込み及び読み出しにはＥＣＣ用ビット線１００６が用いられる。
【０００６】
しかしながら、ＥＣＣ用のビット線を備えたメモリチップは、通常のメモリチップに比べコストが高いという問題がある。このために、ＥＣＣによる誤り訂正機構は高価なサーバシステムでのみ使用されている。
【０００７】
これに対して、通常のメモリチップを用い、誤り訂正を実施するメモリ制御装置に関する技術が開示されている（例えば、特許文献１参照）。
【０００８】
図１４は、特許文献１記載の従来のメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図１４に示すコンピュータシステム１１００は、マイコンブロック１１１０と、メモリ制御装置１１２０と、通常のメモリチップで構成されるメモリ１１３０とを備える。マイコンブロック１１１０は、メモリ制御装置１１２０にメモリ１１３０に対するデータの読み出し及び書き込み命令を送る。メモリ制御装置１１２０は、データ書き込み時には、６４ビットのデータ１１３１毎に誤り訂正符号１１３２を付与し、メモリ１１３０に書き込む。メモリ制御装置１１２０は、誤り訂正符号１１３２を、データ１１３１と同様にメモリマップ上に配置する。また、メモリ制御装置１１２０は、データ読み出し時には、データ１１３１と誤り訂正符号１１３２とを時系列で読み出し、読み出した誤り訂正符号を用いてデータ１１３１の誤り訂正を行う。
【０００９】
このように、特許文献１記載のメモリ制御装置は、データと誤り訂正符号との読み出し及び書き込みをデータ用のビット線を使って行う。これにより、通常のメモリチップを用い、誤り訂正を実施することができる。
【特許文献１】特開２００５−１８２６１３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１記載のメモリ制御装置１１２０は、メモリ１１３０の全領域のデータに対して誤り訂正符号１１３２が付与されているために、メモリ１１３０は、データ及び誤り訂正符号を格納するメモリ容量が必要となり、メモリ容量が増加するという問題がある。これにより、メモリ容量が限られている組み込みシステムでの実現が困難であった。
【００１１】
本発明では上記の問題点を鑑みてなされたものであり、誤り訂正を行うメモリ制御装置であり、メモリ容量の増加を抑制するメモリ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明に係るメモリ制御装置は、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であって、前記誤り訂正符号に基づき、前記データの誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正を行ったデータを外部に送出する誤り訂正手段と、前記メモリから読み出した前記データを前記誤り訂正手段へ送出するか、前記メモリから読み出した前記データを外部へ送出するかを選択するセレクタとを備える。
【００１３】
この構成によれば、メモリに格納された誤り訂正符号を付与されたデータに対しては、誤り訂正手段が誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正後のデータを外部に出力することができる。また、メモリに格納された誤り訂正符号を付与されていないデータに対しては、誤り検出及び誤り訂正を行わずに、外部にデータを出力することができる。これにより、高い信頼性が必要なデータに対しては誤り訂正符号を付与し、高い信頼性が必要でないデータに対しては誤り訂正符号を付与していないでメモリに格納することができる。よって、高い信頼性が必要でないデータに対する誤り訂正符号のデータ領域を削減することができるので、メモリの全データに対して余り訂正符号を付与する場合に比べてメモリ容量を削減することができる。すなわち、本発明は、誤り訂正を行うメモリ制御装置であり、メモリ容量の増加を抑制するメモリ制御装置を提供することができる。
【００１４】
また、前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、前記メモリ制御装置は、さらに、前記誤り訂正符号を前記ＣＰＵの動作には関係のない命令に置き換えて外部へ送出する命令置き換え手段を備えてもよい。
【００１５】
この構成によれば、命令置き換え手段により、読み出された誤り訂正符号は、ＣＰＵの動作には関係のない命令に置き換えられて、マイコンブロックへ送出される。これにより、マイコンブロックにおいて誤り訂正符号を識別する処理等を行わなくとも、システム動作に支障をきたさない。よって、マイコンブロックにおける処理量を低減することができる。
【００１６】
また、前記メモリ制御装置は、さらに、外部から入力されたアドレスを、前記誤り訂正符号が格納される領域を含む前記メモリ上のアドレスに変換するアドレス変換手段を備えてもよい。
【００１７】
この構成によれば、外部の装置は、誤り訂正符号が格納される領域を考慮したアドレスを指定しなくても、誤り検出及び誤り訂正が行われたデータを読み出すことができる。よって、外部の装置は、誤り訂正符号の領域分を考慮することなくデータにアクセスすることができるので、外部の装置における処理量を低減することができる。
【００１８】
また、前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、前記セレクタは、前記マイコンブロックからのプログラムデータの読み出しの際に第１の論理となる命令読み出し信号が前記第１の論理である場合に、前記メモリから読み出した前記データを前記誤り訂正手段へ送出し、前記命令読み出し信号が前記第１の論理でない場合に、前記メモリから読み出した前記データを前記マイコンブロックへ送出し、前記アドレス変換手段は前記命令読み出し信号が前記第１の論理である場合に、前記マイコンブロックから入力されたアドレスを、前記誤り訂正符号が格納される領域を含む前記メモリ上のアドレスに変換してもよい。
【００１９】
この構成によれば、マイコンブロックによる命令読み出しの時のみアドレス変換手段によるアドレス変換、及び誤り訂正手段による誤り検出及び誤り訂正が行われる。よって、高い信頼性が必要なプログラムデータに対してのみ誤り訂正符号を付与しメモリに格納することができる。
【００２０】
また、前記メモリ制御装置は、さらに、外部から入力されたデータに対し誤り訂正符号を生成する誤り訂正符号生成手段と、外部から入力されたアドレスが所定のアドレス範囲に含まれるか否かを判定するアドレス判定手段と、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれると判定された場合に、外部から入力されたデータを前記誤り訂正符号生成手段に送出し、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれないと判定された場合に、前記データを前記メモリに送出する第２セレクタとを備え、前記セレクタは、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれると判定された場合に、前記メモリから読み出した前記データを前記誤り訂正手段へ送出し、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれないと判定された場合に、前記メモリから読み出した前記データを外部へ送出し、前記アドレス変換手段は、前記アドレス判定手段により外部から入力されたアドレスが前記所定のアドレス範囲に含まれると判定された場合に、外部から入力されたアドレスを、前記誤り訂正符号が格納される領域を含む前記メモリ上のアドレスに変換してもよい。
【００２１】
この構成によれば、外部から入力されたアドレスがメモリ内の所定のアドレス範囲内にあるか否かによって、誤り訂正手段により誤り検出及び訂正が行われる。これにより、プログラムデータに加え、プログラムのスタックデータなどシステム動作に影響を与える重要なデータにも誤り訂正符号を付与し、メモリに格納することができる。よって、システム動作に影響を与える重要なデータを誤り訂正符号により保護し、システムの堅牢性を向上させることができる。また、誤り訂正符号を付加すべき領域をメモリ内の所定のアドレス範囲内に抑える事ができるため、メモリ容量を削減することができる。
【００２２】
また、前記メモリ制御装置は、さらに、前記所定のアドレス範囲を決定するための値を固定値として保持するアドレス記憶手段を備え、前記アドレス判定手段は、前記アドレス記憶手段が保持する前記所定のアドレス範囲を決定するための値に基づき、外部から入力されたアドレスが前記所定のアドレス範囲に含まれるか否かを判定してもよい。
【００２３】
この構成によれば、メモリ内の誤り訂正符号を付与したデータを格納するアドレス範囲をシステム毎に自由に設定することが可能となり、様々な装置に応用することができる。
【００２４】
また、前記メモリ制御装置は、さらに、外部から入力された前記所定のアドレス範囲を決定するための値を保持するアドレス記憶手段を備え、前記アドレス判定手段は、前記アドレス記憶手段が保持する前記所定のアドレス範囲を決定するための値に基づき、外部から入力されたアドレスが前記所定のアドレス範囲に含まれるか否かを判定してもよい。
【００２５】
この構成によれば、メモリ内の誤り訂正符号を付与したデータを格納するアドレス範囲をシステム毎に自由に設定することが可能となり、様々な装置に応用することができる。
【００２６】
また、前記メモリ制御装置は、少なくともＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）制御装置からの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、前記セレクタは、前記ＤＭＡ制御装置からの読み出し命令の場合に、前記メモリから読み出した前記データ及び前記誤り訂正符号を前記ＤＭＡ制御装置に送出してもよい。
【００２７】
この構成によれば、外部のデバッガソフトからメモリの内容をダンプする場合に、誤り訂正手段を介さなくともデバッガソフトにて誤り検出及び誤り訂正を行うことができる。これにより、デバッガソフトは、メモリが保持するデータを正常にダンプすることができる。
【００２８】
また、前記メモリ制御装置は、ＣＰＵを備えるマイコンブロック及びＤＭＡ制御装置からの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、前記セレクタは、前記マイコンブロックからのプログラムデータの読み出しの際に第１の論理となる命令読み出し信号が前記第１の論理である場合、又は前記ＤＭＡ制御装置からのデータの読み出しの際に第２の論理となるＤＭＡ読み出し信号が前記第２の論理である場合に、前記メモリから読み出した前記データを前記誤り訂正手段へ送出し、前記命令読み出し信号が前記第１の論理でなく、かつ前記ＤＭＡ読み出し信号が前記第２の論理でない場合に、前記メモリから読み出した前記データを前記マイコンブロック又は前記ＤＭＡ制御装置へ送出してもよい。
【００２９】
この構成によれば、外部のデバッガソフトからメモリの内容をダンプする場合に、ＤＭＡ読み出し信号を制御信号とすることで、メモリ制御装置内にて誤り検出及び誤り訂正が行われる。これにより、デバッガソフトでの誤り検出及び誤り訂正の処理が不要となり、デバッガソフトにおける処理量を低減することができる。
【００３０】
また、前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、前記マイコンブロックは、前記ＣＰＵからの命令を前記メモリ制御装置又は他の装置に振り分けるバスコントロールユニットと、前記バスコントロールユニットの振り分け先を決定するための情報を保持するレジスタとを備え、前記メモリ制御装置は、さらに、前記誤り訂正手段が誤りを検出した場合に、前記レジスタが保持する情報を変更するレジスタ設定変更手段を備えてもよい。
【００３１】
この構成によれば、読み出したデータに誤りが検出された場合に、本来メモリ上にあるプログラムデータを用いず、メモリバスとは異なるシステムバス上に配置されたプログラムＲＯＭ等からプログラムデータを読み出し、処理を実行することがきる。すなわち、誤りが発生したメモリを使用することなく処理の実行が可能となり、システムの堅牢性を向上させることができる。
【００３２】
また、前記メモリ制御装置は、ＣＰＵを備えるマイコンブロックからの命令により、誤り訂正符号を含むデータをメモリから読み出すメモリ制御装置であり、前記ＣＰＵは、プログラムの配置場所を示す情報を保持するレジスタを備え、前記メモリ制御装置は、さらに、前記誤り訂正手段が誤りを検出した場合に、前記レジスタが保持する情報を変更するレジスタ設定変更手段を備えてもよい。
【００３３】
この構成によれば、読み出したデータに誤りが検出された場合に、本来メモリ上にあるプログラムデータを用いず、メモリバスとは異なるシステムバス上に配置されたプログラムＲＯＭ等からプログラムデータを読み出し、処理を実行することがきる。すなわち、誤りが発生したメモリを使用することなく処理の実行が可能となり、システムの堅牢性を向上させることができる。
【００３４】
また、本発明に係るコンピュータシステムは、前記メモリ制御装置と、プログラムソースをコンパイルしたオブジェクトに所定のサイズのデータ領域を挿入するデータ領域挿入手段と、前記データ領域挿入手段が挿入した前記データ領域を含めて前記オブジェクトにおけるオペランドのアドレス解決を行うアドレス解決手段と、前記オブジェクトの誤り訂正符号を算出する誤り訂正符号算出手段と、前記誤り訂正符号算出手段により算出された誤り訂正符号を、前記データ領域に書き込む誤り訂正符号書き込み手段とを備え、前記メモリ制御装置は、前記誤り訂正符号書き込み手段により、誤り訂正符号を前記データ領域に書き込まれたオブジェクトを前記メモリに書き込む。
【００３５】
この構成によれば、誤り訂正符号を付加しても、プログラム内のオペランドは、誤り訂正符号の領域を考慮してアドレス解決がなされている。よって、外部の装置は、アドレス変換をせずにメモリに保持されたデータにアクセスすることができる。
【００３６】
また、本発明に係るコンピュータシステムは、メモリと、前記メモリにデータの書き込み及び読み出しを行う前記メモリ制御装置と、前記メモリ制御装置に前記メモリへのデータの書き込み及び読み出し命令を送るマイコンブロックとを備える。
【００３７】
この構成によれば、メモリに格納された誤り訂正符号を付与されたデータに対しては、誤り訂正手段が誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正後のデータを外部に出力することができる。また、メモリに格納された誤り訂正符号を付与されていないデータに対しては、誤り検出及び誤り訂正を行わずに、外部にデータを出力することができる。これにより、高い信頼性が必要なデータに対しては誤り訂正符号を付与し、高い信頼性が必要でないデータに対しては誤り訂正符号を付与していないでメモリに格納することができる。よって、高い信頼性が必要でないデータに対する誤り訂正符号のデータ領域を削減することができるので、メモリの全データに対して余り訂正符号を付与する場合に比べてメモリ容量を削減することができる。すなわち、本発明は、誤り訂正を行うコンピュータシステムであって、メモリ容量の増加を抑制するコンピュータシステムを提供することができる。
【００３８】
また、本発明に係るデータ再生記録装置は、前記コンピュータシステムを備える。
【００３９】
この構成によれば、メモリに格納された誤り訂正符号を付与されたデータに対しては、誤り訂正手段が誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正後のデータを外部に出力することができる。また、メモリに格納された誤り訂正符号を付与されていないデータに対しては、誤り検出及び誤り訂正を行わずに、外部にデータを出力することができる。これにより、高い信頼性が必要なデータに対しては誤り訂正符号を付与し、高い信頼性が必要でないデータに対しては誤り訂正符号を付与していないでメモリに格納することができる。よって、高い信頼性が必要でないデータに対する誤り訂正符号のデータ領域を削減することができるので、メモリの全データに対して余り訂正符号を付与する場合に比べてメモリ容量を削減することができる。すなわち、本発明は、誤り訂正を行うデータ再生装置であって、メモリ容量の増加を抑制するデータ再生記録装置を提供することができる。
【００４０】
また、本発明に係るプログラムデータの生成方法は、前記メモリ制御装置により前記メモリに書き込まれるプログラムデータの生成方法であって、プログラムソースをコンパイルしたオブジェクトに所定のサイズのデータ領域を挿入するデータ領域挿入ステップと、前記データ領域挿入ステップにおいて挿入された前記データ領域を含めて前記オブジェクトにおけるオペランドのアドレス解決を行うアドレス解決ステップと、前記オブジェクトの誤り訂正符号を算出する誤り訂正符号算出ステップと、前記誤り訂正符号算出ステップにおいて算出された誤り訂正符号を、前記データ領域に書き込む誤り訂正符号書き込みステップとを含む。
【００４１】
これによれば、誤り訂正符号を付加しても、プログラム内のオペランドは、誤り訂正符号の領域を考慮してアドレス解決がなされている。よって、外部の装置は、アドレス変換をせずにメモリに保持されたデータにアクセスすることができる。
【発明の効果】
【００４２】
本発明は、誤り訂正を行うメモリ制御装置であり、メモリ容量の増加を抑制するメモリ制御装置を提供することができる。
【発明を実施するための最良の形態】
【００４３】
以下、本発明の実施例におけるメモリ制御装置について、図面を参照しながら説明する。
【００４４】
（実施の形態１）
本発明の実施の形態１に係るメモリ制御装置は、メモリから読み出したデータに対して選択的に、誤り検出及び誤り訂正を行う。これにより、誤り訂正符号が付与されたデータと、誤り訂正符号が付与されていないデータとをメモリから読み出すことができる。
【００４５】
まず、本発明の実施の形態１に係るメモリ制御装置の構成を説明する。
【００４６】
図１は、本発明の実施の形態１に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。
【００４７】
図１に示すコンピュータシステム１００は、例えば、ＤＶＤレコーダ等のデータ再生記録装置に用いられるコンピュータシステムである。コンピュータシステム１００は、マイコンブロック１１０と、メモリ制御装置１２０と、メモリ１３０とを備える。
【００４８】
メモリ１３０は、例えば、６４ビット単位でデータ読み出し及び書き込みが可能なＲＡＭ等である。メモリ１３０は、複数のプログラムデータ１３１と、各プログラムデータ１３１に対応する誤り訂正符号１３２と、プログラム以外のデータ１３３とを保持する。ここで、プログラム以外のデータ１３３は、例えば、ビデオデータ及びオーディオデータ等の誤り訂正が必要ではないデータである。
【００４９】
マイコンブロック１１０は、メモリ制御装置１２０に、メモリ１３０へのデータの読み出し及び書き込み命令を送る。マイコンブロック１１０は、バスコントロールユニット（Ｂｕｓ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：ＢＣＵ）１１１と、マイコンコア１１２と、ＣＰＵコア１１５と、ＣＩバス１１６と、ＣＤバス１１７を備える。
【００５０】
バスコントロールユニット１１１は、ＣＩバス１１６及びＣＤバス１１７の制御を行う。
【００５１】
マイコンコア１１２は、プログラムデータの読み出し命令の場合（命令読み出し時）にアクティブとなる命令読み出し信号１２４を生成する。マイコンコア１１２は、命令キャッシュ１１３と、データキャッシュ１１４とを備える。命令キャッシュ１１３は、メモリ制御装置１２０等に対する命令を保持する。データキャッシュ１１４は、命令に従って書き込み又は読み出しを行うデータを保持する。ＣＰＵコア１１５は、命令の発行等のマイコンブロック１１０の制御を行う。
【００５２】
ＣＩバス１１６は、命令キャッシュ１１３とバスコントロールユニット１１１との間のバスである。ＣＤバス１１７は、データキャッシュ１１４と、バスコントロールユニット１１１との間のバスである。
【００５３】
メモリ制御装置１２０は、マイコンブロック１１０からの命令により、メモリ１３０へのプログラムデータ１３１、誤り訂正符号１３２及びプログラム以外のデータ１３３の書き込み及び読み出しを行う。メモリ制御装置１２０は、セレクタ１２１と、誤り訂正部１２２と、命令置き換え部１２３とを備える。
【００５４】
セレクタ１２１は、命令読み出し信号１２４に応じて、メモリ１３０から読み出したデータ（プログラムデータ１３１、誤り訂正符号１３２及びプログラム以外のデータ１３３）を、誤り訂正部１２２へ送出するか、マイコンブロック１１０に送出するかを選択する。具体的には、セレクタ１２１は、命令読み出し信号１２４がアクティブの場合に、メモリ１３０から読み出したデータを誤り訂正部１２２に送出する。セレクタ１２１は、命令読み出し信号１２４が、非アクティブの場合に、メモリ１３０から読み出したデータを誤り訂正部１２２及び命令置き換え部１２３を介さずに、マイコンブロック１１０に送出する。
【００５５】
誤り訂正部１２２は、メモリ１３０から読み出したプログラムデータ１３１及び誤り訂正符号１３２に基づき、メモリ１３０から読み出したプログラムデータ１３１の誤り検出及び誤り訂正を行う。誤り訂正部１２２は、誤り検出及び誤り訂正を行ったプログラムデータ１３１と、誤り訂正符号とを、命令置き換え部１２３に送出する。
【００５６】
命令置き換え部１２３は、誤り訂正部１２２が送出する誤り訂正符号１３２をＣＰＵコア１１５の動作には関係のない命令に置き換えてマイコンブロック１１０へ送出する。例えば、命令置き換え部１２３は、誤り訂正部１２２が送出する誤り訂正符号１３２をｎｏｐ命令に置き換えてマイコンブロック１１０へ送出する。また、命令置き換え部１２３は、誤り訂正部１２２により誤り訂正されたデータをマイコンブロック１１０へ送出する。なお、誤り訂正部１２２は、誤り検出及び誤り訂正を行ったプログラムデータ１３１を、命令置き換え部１２３を介さずに、マイコンブロック１１０に送出してもよい。
【００５７】
次に、コンピュータシステム１００の動作を説明する。
【００５８】
まず、プログラムデータ１３１をメモリ１３０に書き込む動作を説明する。
【００５９】
マイコンブロック１１０は、メモリ１３０に書き込むプログラムデータ１３１に誤り訂正符号１３２を付与したプログラムイメージ１３４を生成する。以下に、マイコンブロック１１０によるプログラムイメージ１３４の生成の処理を詳細に説明する。例えば、マイコンブロック１１０は、ソフトウェア処理によりプログラムイメージ１３４を生成する。
【００６０】
図２は、メモリ１３０に配置するプログラムイメージ１３４の生成方法の流れを示すフローチャートである。図３は、プログラムイメージ１３４の生成方法を説明するための図である。
【００６１】
まず、マイコンブロック１１０は、プログラムソースをコンパイルした後の所定のサイズのオブジェクト１４０毎に、所定のサイズのデータ領域１４１を挿入する（Ｓ１０１）。例えば、図３に示すように、ｊｍｐ命令１４２と、ｊｍｐ命令１４２の飛び先を示すラベル１４３の間にデータ領域１４１が挿入される。ここで、所定のサイズのデータ領域の大きさは、所定のサイズのオブジェクトに対する誤り訂正符号と同じ大きさである。例えば、所定のサイズのオブジェクト１４０は、５１２ビットのオブジェクトであり、所定のサイズのデータ領域１４１は、６４ビットのデータ領域である。次に、マイコンブロック１１０は、ステップＳ１０１において挿入されたデータ領域１４１を含めてオブジェクト１４０におけるオペランドのアドレス解決を行う（Ｓ１０２）。具体的には、図３示す例では、ｊｍｐ命令１４２のオペランドは、ｊｍｐ命令１４２の位置から所定のサイズのデータ領域１４１の領域分を含めたラベル１４３までの距離を考慮してアドレス解決される。次に、マイコンブロック１１０は、所定のサイズのオブジェクト１４０毎の誤り訂正符号１３２を算出する（Ｓ１０３）。次に、マイコンブロック１１０は、ステップＳ１０３において算出された誤り訂正符号１３２を、データ領域１４１に書き込む（Ｓ１０４）。
【００６２】
以上の処理により、所定のサイズのプログラムデータ１３１毎に所定のサイズのプログラムデータ１３１に対する誤り訂正符号１３２が配置されたプログラムイメージ１３４が生成される。
【００６３】
また、ステップＳ１０２において、データ領域１４１の領域分を考慮したアドレス解決が行われるので、データ領域１４１に対して誤り訂正符号１３２が書き込まれた場合でも、所定のサイズのデータ領域１４１と誤り訂正符号１３２のサイズとは同じであるから、ｊｍｐ命令１４２のオペランドは誤り訂正符号１３２の領域分を考慮してアドレス解決された状態となる。
【００６４】
次に、マイコンブロック１１０は、生成したプログラムイメージ１３４及び書き込み命令をメモリ制御装置１２０に送出する。メモリ制御装置１２０は、プログラムイメージ１３４をメモリ１３０に書き込む。以上により、誤り訂正符号１３２を付与したプログラムデータ１３１がメモリ１３０に書き込まれる。
【００６５】
次に、プログラム以外のデータ１３３をメモリ１３０に書き込む動作を説明する。
【００６６】
マイコンブロック１１０は、プログラム以外のデータ１３３及び書き込み命令をメモリ制御装置１２０に送出する。メモリ制御装置１２０は、プログラム以外のデータ１３３をメモリ１３０に書き込む。以上により、誤り訂正符号１３２が付与されないプログラム以外のデータ１３３がメモリ１３０に書き込まれる。
【００６７】
次に、プログラムデータ１３１をメモリ１３０から読み出す動作を説明する。
【００６８】
マイコンブロック１１０は、メモリ制御装置１２０に、プログラムデータ１３１の読み出し命令を送出する。また、マイコンブロック１１０は、命令読み出し信号１２４をアクティブにする。
【００６９】
メモリ制御装置１２０は、マイコンブロック１１０からの命令により、プログラムデータ１３１と対応する誤り訂正符号１３２を読み出す。セレクタ１２１は、命令読み出し信号１２４がアクティブなので、読み出したプログラムデータ１３１及び誤り訂正符号１３２を誤り訂正部１２２に送出する。
【００７０】
誤り訂正部１２２は、プログラムデータ１３１及び誤り訂正符号１３２に基づき、プログラムデータ１３１の誤り検出及び誤り訂正を行う。命令置き換え部１２３は、誤り訂正部１２２が送出する誤り訂正符号１３２をＣＰＵコア１１５の動作には関係のない命令に置き換えてマイコンブロック１１０へ送出する。また、命令置き換え部１２３は、誤り訂正部１２２により誤り訂正されたプログラムデータ１３１をマイコンブロック１１０へ送出する。
【００７１】
以上により、メモリ１３０からプログラムデータ１３１が読み出される。また、誤りが発生した場合に、誤り訂正部１２２により誤り訂正が行われたプログラムデータ１３１が読み出される。
【００７２】
次に、プログラム以外のデータ１３３をメモリ１３０から読み出す動作を説明する。
【００７３】
マイコンブロック１１０は、メモリ制御装置１２０に、プログラム以外のデータ１３３の読み出し命令を送出する。また、マイコンブロック１１０は、命令読み出し信号１２４を非アクティブにする。
【００７４】
メモリ制御装置１２０は、マイコンブロック１１０からの命令により、プログラム以外のデータ１３３を読み出す。セレクタ１２１は、命令読み出し信号１２４が非アクティブなので、読み出したプログラム以外のデータ１３３を誤り訂正部１２２及び命令置き換え部１２３を介さずに、マイコンブロック１１０に送出する。以上により、メモリ１３０からプログラム以外のデータ１３３が読み出される。
【００７５】
以上、本発明の実施の形態１に係るメモリ制御装置１２０は、メモリ１３０に格納された誤り訂正符号１３２が付与されたプログラムデータ１３１に対しては、誤り訂正部１２２が誤り検出及び誤り訂正を行い、誤り検出及び誤り訂正後のプログラムデータ１３１をマイコンブロック１１０に出力する。また、メモリ１３０に格納された誤り訂正符号１３２が付与されていないプログラム以外のデータ１３３に対しては、誤り検出及び誤り訂正を行わずに、マイコンブロック１１０にデータを出力する。これにより、高い信頼性が必要なプログラムデータ１３１に対しては誤り訂正符号１３２を付与し、高い信頼性が必要でないプログラム以外のデータ１３３に対しては誤り訂正符号１３２を付与していないでメモリ１３０に格納することができる。よって、高い信頼性が必要でないプログラム以外のデータ１３３に対する誤り訂正符号１３２のデータ領域を削減することができるので、メモリの全データに対して誤り訂正符号を付与する場合に比べてメモリ容量を削減することができる。すなわち、本発明は、誤り訂正を行うメモリ制御装置であり、メモリ容量の増加を抑制するメモリ制御装置１２０を提供することができる。また、本発明は、誤り訂正を行うコンピュータシステムであり、メモリ容量の増加を抑制するコンピュータシステム１００を提供することができる。さらに、本発明は、コンピュータシステム１００を備えるメモリ容量の増加を抑制したＤＶＤレコーダ等のデータ再生記録装置を実現することができる。
【００７６】
また、メモリ１３０に書き込まれるプログラムイメージ１３４は誤り訂正符号領域分を考慮してアドレス解決がなされる。よって、マイコンブロック１１０は、誤り訂正符号領域分のアドレスを考慮する必要がない。すなわち、マイコンブロック１１０は、アドレス変換をせずにメモリ１３０に保持されたデータにアクセスすることができる。
【００７７】
また、命令置き換え部１２３により、読み出された誤り訂正符号１３２は、ＣＰＵコア１１５の動作には関係のない命令に置き換えられて、マイコンブロック１１０へ送出される。これにより、マイコンブロック１１０において誤り訂正符号１３２を識別する処理等を行わなくとも、システム動作に支障をきたさない。
【００７８】
また、セレクタ１２１は、命令読み出し時にアクティブとなる命令読み出し信号１２４により制御される。よって、高い信頼性が必要なプログラムデータ１３１に対してのみ誤り訂正符号１３２を付与しメモリに格納することができる。
【００７９】
なお、図３ではｊｍｐ命令１４２のアドレス解決を例に説明したが、他のメモリ上のアドレスを参照する命令（例えば、分岐命令等）において、命令と参照先アドレスとの間にデータ領域１４１が挿入される場合でも同様のアドレス解決を行えばよい。
【００８０】
また、上記説明では、マイコンブロック１１０が、図２に示す処理により、メモリ１３０に配置するプログラムイメージ１３４を生成するとしたが、外部のコンピュータシステムがプログラムイメージ１３４を生成し、マイコンブロック１１０にて実行される専用の書込みプログラム又はデバッガソフトにより、プログラムイメージ１３４をメモリ１３０に書き込んでもよい。
【００８１】
また、上記説明では、メモリ１３０は、６４ビット単位でデータ読み出し及び書き込みが行われるとしたが、メモリ１３０の構成はこれに限定されるものではない。メモリ１３０は、バイト単位又はワード単位（複数バイト単位）でデータの読み出し及び書き込みが行われてもよい。
【００８２】
また、メモリ１３０に保持される柄所定のサイズのプログラムデータ１３１に対する誤り訂正符号１３２のサイズは、任意のサイズを設定することができる。
【００８３】
（実施の形態２）
本発明の実施の形態２に係るメモリ制御装置は、マイコンブロックからのアドレスを誤り訂正符号が保持される領域を考慮したメモリ上のアドレスに変換する。これにより、マイコンブロックは、通常のメモリへのアクセスと同様に誤り訂正符号が付与されたデータにアクセスすることができる。
【００８４】
まず、本発明の実施の形態２に係るメモリ制御装置の構成を説明する。
【００８５】
図４は本発明の実施の形態２に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図４に示すコンピュータシステム２００は、図１に示す実施の形態１に係るコンピュータシステム１００に対して、メモリ制御装置２２０の構成が異なる。なお、図１と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【００８６】
メモリ制御装置２２０は、セレクタ１２１と、誤り訂正部２２２と、アドレス変換部２２３とを備える。
【００８７】
セレクタ１２１は、命令読み出し信号１２４に応じて、メモリ１３０から読み出したデータ（プログラムデータ１３１、誤り訂正符号１３２及びプログラム以外のデータ１３３）を、誤り訂正部２２２へ送出するか、マイコンブロック１１０に送出するかを選択する。具体的には、セレクタ１２１は、命令読み出し信号１２４がアクティブの場合に、メモリ１３０から読み出したデータを誤り訂正部２２２に送出する。セレクタ１２１は、命令読み出し信号１２４が、非アクティブの場合に、メモリ１３０から読み出したデータを誤り訂正部２２２を介さずに、マイコンブロック１１０に送出する。
【００８８】
誤り訂正部２２２は、メモリ１３０から読み出したプログラムデータ１３１及び誤り訂正符号１３２に基づき、メモリ１３０から読み出したプログラムデータ１３１の誤り検出及び誤り訂正を行う。また、誤り訂正部２２２は、誤り検出及び誤り訂正を行ったプログラムデータをマイコンブロック１１０に送出する。なお、誤り訂正部２２２は、誤り訂正符号１３２をマイコンブロック１１０に出力しない。
【００８９】
アドレス変換部２２３は、マイコンブロック１１０から入力されたアクセス要求アドレス２２４を、所定の計算式に則り、誤り訂正符号１３２が格納される領域を含むメモリ１３０上のメモリアドレス２２５に変換する。また、アドレス変換部２２３は、命令読み出し信号１２４により制御される。具体的には、アドレス変換部２２３は、命令読み出し信号１２４がアクティブの場合に、所定の計算式に則り、アクセス要求アドレス２２４をメモリ１３０上のメモリアドレス２２５に変換する。アドレス変換部２２３は、命令読み出し信号１２４が非アクティブの場合に、アクセス要求アドレス２２４を変換せず、メモリ１３０へ送出する。
【００９０】
図５は、アドレス変換部２２３の詳細な構成を示す図である。
【００９１】
アドレス変換部２２３は、メモリアドレス算出部２２６を備える。メモリアドレス算出部２２６は、アクセス要求アドレス２２４からメモリ１３０上のメモリアドレス２２５へ所定の計算式によりアドレス変換を行う。
【００９２】
図６は、メモリ１３０のメモリアドレス２２５とアクセス要求アドレス２２４と関係を模式的に示す図である。
【００９３】
図６において、メモリ１３０は６４ビットのデータ幅であり、６４ビットのデータ毎に８ビットの誤り訂正符号１３２が付与されている。よって、メモリアドレス２２５は、アクセス要求アドレス２２４の０ｘ４０ビット毎に８ビットずれることになる。よって、メモリアドレス算出部２２６は、下記式（１）によりメモリアドレス２２５を算出する。
【００９４】
ＡＤＤＲ＝ａｄｄｒ＋（ａｄｄｒ／０ｘ４０）×８      ・・・（１）
【００９５】
ここで、ＡＤＤＲはメモリアドレス２２５を表し、ａｄｄｒはアクセス要求アドレス２２４を表す。また（ａｄｄｒ／０ｘ４０）はａｄｄｒを０ｘ４０で割った商である。また、０ｘ４０等のアドレスは、ビット単位のアドレスである。例えば、上記式（１）により、アクセス要求アドレス２２４が０ｘ４０の場合に、メモリアドレス２２５は０ｘ４８となる。
【００９６】
なお、メモリ１３０のデータ幅及び何ビットのデータ毎に誤り訂正符号１３２を付与するかによってメモリアドレス算出部２２６が用いる計算式がきまる。図７は、データ幅が３２ビットであり、３２ビットのデータごとに８ビットの誤り訂正符号が付与されている場合のメモリ１３０のメモリアドレス２２５とアクセス要求アドレス２２４と関係を模式的に示す図である。例えば、図７に示すように、メモリ１３０のデータ幅が３２ビットであり、３２ビットのデータごとに８ビットの誤り訂正符号が付与されている場合に、メモリアドレス２２５はアクセス要求アドレス２２４の０ｘ２０ビット毎に８ビットだけずれることになる。よって、メモリアドレス算出部２２６で実行される計算式は下記式（２）となる。
【００９７】
ＡＤＤＲ＝ａｄｄｒ＋（ａｄｄｒ／０ｘ２０）×８      ・・・（２）
【００９８】
すなわち、メモリ１３０のデータバス幅が変わっても同様にメモリアドレス２２５を算出することができる。
【００９９】
なお、上記説明において、アクセス要求アドレス２２４及びメモリアドレス２２５として、ビット単位のアドレスを用いたが、バイト単位又は複数バイト単位（ワード単位）等のアドレスであってもよい。
【０１００】
次に、プログラムデータ１３１をメモリ１３０から読み出す動作を説明する。なお、アクセス要求アドレス２２４が０ｘ４０であるとする。
【０１０１】
まず、マイコンブロック１１０は、メモリ制御装置２２０に、プログラムデータ１３１の読み出し命令を送出する。マイコンブロック１１０は、読み出すプログラムデータ１３１のアドレスであるアクセス要求アドレス２２４として０ｘ４０を送出する。また、マイコンブロック１１０は、命令読み出し信号１２４をアクティブにする。
【０１０２】
アドレス変換部２２３は、命令読み出し信号１２４がアクティブなので、アクセス要求アドレス２２４を、メモリ１３０上のメモリアドレス２２５に変換する。メモリアドレス算出部２２６は、上記式（１）によりアクセス要求アドレス２２４を変換し、メモリアドレス２２５として０ｘ４８を算出する。メモリ制御装置２２０は、算出したメモリアドレス２２５（０ｘ４８）のプログラムデータ１３１を読み出す。また、メモリ制御装置２２０は、読み出したプログラムデータ１３１に対応する誤り訂正符号１３２を読み出す（例えば、メモリアドレス２２５が０ｘ８８のデータを読み出す。）。
【０１０３】
セレクタ１２１は、命令読み出し信号１２４がアクティブなので、読み出したプログラムデータ１３１及び誤り訂正符号１３２を誤り訂正部２２２に送出する。
【０１０４】
誤り訂正部２２２は、プログラムデータ１３１及び誤り訂正符号１３２に基づき、プログラムデータ１３１の誤り検出及び誤り訂正を行う。誤り訂正部２２２は、誤り検出及び誤り訂正を行ったプログラムデータをマイコンブロック１１０に送出する。
【０１０５】
以上により、メモリ１３０からプログラムデータ１３１が読み出される。また、誤りが発生した場合に、誤り訂正部２２２により誤り訂正が行われたプログラムデータ１３１が読み出される。
【０１０６】
次に、プログラム以外のデータ１３３をメモリ１３０から読み出す動作を説明する。
【０１０７】
マイコンブロック１１０は、メモリ制御装置２２０に、プログラム以外のデータ１３３の読み出し命令を送出する。また、マイコンブロック１１０は、命令読み出し信号１２４を非アクティブにする。
【０１０８】
メモリアドレス算出部２２６は、命令読み出し信号１２４が非アクティブなので、アクセス要求アドレス２２４を変換しない。メモリ制御装置２２０は、アクセス要求アドレス２２４をメモリアドレス２２５としてプログラム以外のデータ１３３を読み出す。
【０１０９】
セレクタ１２１は、命令読み出し信号１２４が非アクティブなので、読み出したプログラム以外のデータ１３３をマイコンブロック１１０に送出する。以上により、メモリ１３０からプログラム以外のデータ１３３が読み出される。
【０１１０】
次に、プログラムデータ１３１をメモリ１３０に書き込む動作を説明する。なお、アクセス要求アドレス２２４が０ｘ４０であるとする。
【０１１１】
まず、マイコンブロック１１０は、メモリ制御装置２２０に、プログラムデータ１３１の書き込み命令を送出する。マイコンブロック１１０は、書き込むプログラムデータ１３１のアドレスであるアクセス要求アドレス２２４として０ｘ４０を送出する。また、マイコンブロック１１０は、命令読み出し信号１２４をアクティブにする。
【０１１２】
アドレス変換部２２３は、命令読み出し信号１２４がアクティブなので、アクセス要求アドレス２２４をメモリ１３０上のメモリアドレス２２５に変換する。メモリアドレス算出部２２６は、上記式（１）によりアクセス要求アドレス２２４を変換し、メモリアドレス２２５として０ｘ４８を算出する。メモリ制御装置２２０は、算出したメモリアドレス２２５（０ｘ４８）のデータ書き込み前のプログラムデータ１３１を読み出す。メモリ制御装置２２０は、読み出したプログラムデータ（例えば、６４ビット）と、書き込み命令を受けたプログラムデータ（例えば、８ビット）とから、メモリ１３０に書き込むプログラムデータ（例えば、６４ビット）及び誤り訂正符号（例えば、８ビット）を算出する。メモリ制御装置２２０は、算出したプログラムデータ及び誤り訂正符号をメモリ１３０に書き込む。以上により、誤り訂正符号１３２を付与したプログラムデータ１３１がメモリ１３０に書き込まれる。なお、書き込みにおける誤り訂正符号の生成については後述の実施の形態３にて説明する。
【０１１３】
次に、プログラム以外のデータ１３３をメモリ１３０に書き込む動作を説明する。
【０１１４】
マイコンブロック１１０は、メモリ制御装置２２０に、プログラム以外のデータ１３３の書き込み命令を送出する。また、マイコンブロック１１０は、命令読み出し信号１２４を非アクティブにする。
【０１１５】
メモリアドレス算出部２２６は、命令読み出し信号１２４が非アクティブなので、アクセス要求アドレス２２４を変換しない。メモリ制御装置２２０は、アクセス要求アドレス２２４をメモリアドレス２２５としてプログラム以外のデータ１３３をメモリ１３０に書き込む。以上により、誤り訂正符号１３２が付与されないプログラム以外のデータ１３３がメモリ１３０に書き込まれる。
【０１１６】
以上、本発明の実施の形態２に係るコンピュータシステム２００は、マイコンブロック１１０から誤り訂正符号１３２の領域を含めたアドレス解決をしていないプログラムイメージ２３４に対してアクセスする際、アドレス変換部２２３によって誤り訂正符号１３２の領域分のアドレス補正を行う。これにより、マイコンブロック１１０は、誤り訂正符号１３２の領域分を考慮することなくプログラムデータ１３１にアクセスすることができる。よって、マイコンブロック１１０における処理量を低減することができる。
【０１１７】
また、本発明の実施の形態２に係るコンピュータシステム２００は、マイコンブロック１１０による命令読み出しの時のみに、アドレス変換部２２３によるアドレス変換、及び誤り訂正部２２２による誤り検出及び誤り訂正が行われる。よって、プログラムデータ１３１に対してのみ誤り訂正符号１３２を付与しメモリ１３０に格納することができる。
【０１１８】
また、本発明の実施の形態２に係るコンピュータシステム２００は、高い信頼性が必要なプログラムデータ１３１に対してのみ誤り訂正符号１３２を付与し、メモリ１３０に書き込む。また、ビデオデータ及びオーディオデータ等の誤り訂正符号が必要ではないプログラム以外のデータ１３３に対する誤り訂正符号を付与せずに、メモリ１３０に書き込む。これにより、プログラム以外のデータ１３３に対する誤り訂正符号のデータ領域を削減することができ、メモリの全データに対して余り訂正符号を付与する場合に比べてメモリ容量を削減することができる。
【０１１９】
（実施の形態３）
本発明の実施の形態３に係るメモリ制御装置は、マイコンブロックからのアドレスにより、書き込み又は読み出しを行うデータが、誤り訂正符号を付加したデータであるか、誤り訂正符号を付加しないデータであるかを判定する。これにより、マイコンブロックは、アドレスのみを指定するだけで、誤り訂正符号を付加する、又は付加しないを指定し、メモリにデータを保持することができる。
【０１２０】
まず、本発明の実施の形態３に係るメモリ制御装置の構成を説明する。
【０１２１】
図８は、本発明の実施の形態３に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図８に示すコンピュータシステム３００は、図４に示す実施の形態２に係るコンピュータシステム２００に対して、メモリ制御装置３２０の構成が異なる。なお、図３と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１２２】
メモリ制御装置３２０は、セレクタ１２１と、誤り訂正部２２２と、アドレス変換部２２３と、誤り訂正符号生成部３２１と、第２セレクタ３２２と、アドレス記憶部３２３と、領域判定部３２４とを備える。
【０１２３】
誤り訂正符号生成部３２１は、マイコンブロック１１０から入力された書き込みデータに対し誤り訂正符号を生成する。
【０１２４】
アドレス記憶部３２３は、メモリ１３０上の境界アドレス３３１を固定値として保持する。境界アドレス３３１は、誤り訂正符号１３２を付加したデータを格納する領域のアドレス範囲を決定するための値である。例えば、図８に示すように、メモリ１３０では境界アドレス３３１の値より小さいアドレスを誤り訂正符号１３２を付加したデータを格納するＥＣＣ有り領域とし、境界アドレス３３１の値より大きいアドレスを誤り訂正符号１３２を付加しないデータを格納するＥＣＣ無し領域とする。
【０１２５】
領域判定部３２４は、アドレス記憶部３２３が保持する境界アドレス３３１に基づき、マイコンブロック１１０から入力されたアクセス要求アドレス２２４が、アドレス記憶部３２３が保持する誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれるか否かを判定する。具体的には、領域判定部３２４は、マイコンブロック１１０からのアクセス要求アドレス２２４とアドレス記憶部３２３が保持する境界アドレス３３１とを比較し、アクセス要求アドレス２２４が、アドレス記憶部３２３が保持するアドレス範囲に含まれるか否かを判定する。領域判定部３２４は、判定結果を領域判定信号３２５として出力する。アドレス変換部２２３、セレクタ１２１及び第２セレクタ３２２は、領域判定部３２４が出力する領域判定信号３２５により制御される。
【０１２６】
第２セレクタ３２２は、領域判定部３２４が出力する領域判定信号３２５に基づき、マイコンブロック１１０から入力された書き込みデータを誤り訂正符号生成部３２１又はメモリ１３０に送出する。具体的には、第２セレクタ３２２は、領域判定部３２４によりアクセス要求アドレス２２４が誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれると判定された場合に、マイコンブロック１１０から入力された書き込みデータを誤り訂正符号生成部３２１へ送出する。第２セレクタ３２２は、領域判定部３２４によりアクセス要求アドレス２２４が誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれないと判定された場合に、マイコンブロック１１０から入力された書き込みデータを、誤り訂正符号生成部３２１を介さずにメモリ１３０へ送出する。
【０１２７】
アドレス変換部２２３は、領域判定部３２４によりアクセス要求アドレス２２４が誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれると判定された場合に、マイコンブロック１１０からのアクセス要求アドレス２２４を誤り訂正符号１３２が格納される領域を含むメモリ１３０上のメモリアドレス２２５に変換し、メモリ１３０に送出する。アドレス変換部２２３は、領域判定部３２４によりアクセス要求アドレス２２４が誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれないと判定された場合に、マイコンブロック１１０からのアクセス要求アドレス２２４を変換せずメモリアドレス２２５として、メモリ１３０に送出する。
【０１２８】
セレクタ１２１は、領域判定部３２４によりアクセス要求アドレス２２４が誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれると判定された場合に、メモリ１３０からの読み出しデータを誤り訂正部２２２に送出する。セレクタ１２１は、領域判定部３２４によりアクセス要求アドレス２２４が誤り訂正符号１３２を付加したデータを格納するアドレス範囲に含まれないと判定された場合に、メモリ１３０からの読み出しデータを、誤り訂正部２２２を介さずにマイコンブロック１１０に送出する。
【０１２９】
次に、コンピュータシステム３００の動作を説明する。
【０１３０】
まず、プログラムデータ１３１をメモリ１３０から読み出す動作（ＥＣＣ有りの領域のデータを読み出す動作）を説明する。
【０１３１】
まず、マイコンブロック１１０は、メモリ制御装置３２０に、プログラムデータ１３１の読み出し命令を送出する。また、マイコンブロック１１０は、読み出すプログラムデータ１３１のアドレスであるアクセス要求アドレス２２４として境界アドレス３３１より小さいアドレスを送出する。
【０１３２】
領域判定部３２４は、アクセス要求アドレス２２４とアドレス記憶部３２３が保持する境界アドレス３３１とを比較する。ここで、アクセス要求アドレス２２４は、境界アドレスより小さいので、領域判定部３２４は、アクセス要求アドレス２２４が境界アドレスより小さいことを示す論理（例えば、アクティブ）の領域判定信号３２５を出力する。
【０１３３】
メモリアドレス算出部２２６は、領域判定信号３２５がアクティブなので、アクセス要求アドレス２２４をメモリ１３０上のメモリアドレス２２５に変換する。メモリ制御装置３２０は、変換したメモリアドレス２２５のプログラムデータ１３１、及び対応する誤り訂正符号１３２を読み出す。なお、アドレス変換の処理は、実施の形態２と同様であり詳細な説明は省略する。
【０１３４】
セレクタ１２１は、領域判定信号３２５がアクティブなので、読み出したプログラムデータ１３１及び誤り訂正符号１３２を誤り訂正部２２２に送出する。誤り訂正部２２２は、読み出したプログラムデータ１３１及び誤り訂正符号１３２から、読み出したプログラムデータ１３１の誤り検出及び誤り訂正を行う。誤り訂正部２２２は、誤り検出及び誤り訂正を行ったプログラムデータ１３１をマイコンブロック１１０に送出する。
【０１３５】
以上により、メモリ１３０からプログラムデータ１３１が読み出される。また、誤りが発生した場合に、誤り訂正部１２２により誤り訂正が行われたプログラムデータ１３１が読み出される。
【０１３６】
次に、プログラム以外のデータ１３３をメモリ１３０から読み出す動作（ＥＣＣ無しの領域のデータを読み出す動作）を説明する。
【０１３７】
マイコンブロック１１０は、メモリ制御装置３２０に、プログラム以外のデータ１３３の読み出し命令を送出する。また、マイコンブロック１１０は、読み出すプログラムデータ１３１のアドレスであるアクセス要求アドレス２２４として境界アドレス３３１より大きいアドレスを送出する。
【０１３８】
領域判定部３２４は、アクセス要求アドレス２２４とアドレス記憶部３２３が保持する境界アドレス３３１とを比較する。ここで、アクセス要求アドレス２２４は、境界アドレスより大きいので、領域判定部３２４は、アクセス要求アドレス２２４が境界アドレスより大きいことを示す論理（例えば、非アクティブ）の領域判定信号３２５を出力する。
【０１３９】
メモリアドレス算出部２２６は、領域判定信号３２５が非アクティブなので、アクセス要求アドレス２２４を変換しない。メモリ制御装置３２０は、アクセス要求アドレス２２４をメモリアドレスとしてプログラム以外のデータ１３３を読み出す。
【０１４０】
セレクタ１２１は、領域判定信号３２５が非アクティブなので、読み出したプログラム以外のデータ１３３をマイコンブロック１１０に送出する。以上により、メモリ１３０からプログラム以外のデータ１３３が読み出される。
【０１４１】
次に、プログラムデータ１３１をメモリ１３０に書き込む動作（ＥＣＣ有りの領域にデータを書き込む動作）を説明する。
【０１４２】
まず、マイコンブロック１１０は、メモリ制御装置３２０に、プログラムデータ１３１の書き込み命令を送出する。また、マイコンブロック１１０は、書き込むプログラムデータ１３１のアドレスであるアクセス要求アドレス２２４として境界アドレス３３１より小さいアドレスを送出する。
【０１４３】
領域判定部３２４は、アクセス要求アドレス２２４とアドレス記憶部３２３が保持する境界アドレス３３１とを比較する。ここで、アクセス要求アドレス２２４は、境界アドレスより小さいので、領域判定部３２４は、アクセス要求アドレス２２４が境界アドレスより小さいことを示す論理（例えば、アクティブ）の領域判定信号３２５を出力する。
【０１４４】
メモリアドレス算出部２２６は、領域判定信号３２５がアクティブなので、アクセス要求アドレス２２４をメモリ１３０上のメモリアドレス２２５に変換する。
【０１４５】
第２セレクタは、領域判定信号３２５がアクティブなので、マイコンブロック１１０からの書き込みプログラムデータ１３１を誤り訂正符号生成部３２１に送出する。誤り訂正符号生成部３２１は、書き込みプログラムデータ１３１から誤り訂正符号１３２を生成する。
【０１４６】
メモリ制御装置３２０は、変換したメモリアドレス２２５にマイコンブロック１１０からのプログラムデータ１３１と、誤り訂正符号生成部３２１が生成した誤り訂正符号１３２とを書き込む。以上により、誤り訂正符号１３２を付与したプログラムデータ１３１がメモリ１３０に書き込まれる。
【０１４７】
次に、プログラム以外のデータ１３３をメモリ１３０に書き込む動作（ＥＣＣ無しの領域にデータを書き込む動作）を説明する。
【０１４８】
マイコンブロック１１０は、メモリ制御装置３２０に、プログラム以外のデータ１３３の書き込み命令を送出する。また、マイコンブロック１１０は、書き込むプログラムデータ１３１のアドレスであるアクセス要求アドレス２２４として境界アドレス３３１より大きいアドレスを送出する。
【０１４９】
領域判定部３２４は、アクセス要求アドレス２２４とアドレス記憶部３２３が保持する境界アドレス３３１とを比較する。ここで、アクセス要求アドレス２２４は、境界アドレスより大きいので、領域判定部３２４は、アクセス要求アドレス２２４が境界アドレスより大きいことを示す論理（例えば、非アクティブ）の領域判定信号３２５を出力する。
【０１５０】
メモリアドレス算出部２２６は、領域判定信号３２５が非アクティブなので、アクセス要求アドレス２２４を変換しない。第２セレクタは、領域判定信号３２５が非アクティブなので、マイコンブロック１１０からの書き込みプログラムデータ１３１をメモリ１３０に送出する。
【０１５１】
メモリ制御装置３２０は、マイコンブロック１１０からのアクセス要求アドレス２２４をメモリアドレス２２５として、マイコンブロック１１０からのプログラム以外のデータ１３３を書き込む。以上により、誤り訂正符号１３２が付与されないプログラム以外のデータ１３３がメモリ１３０に書き込まれる。
【０１５２】
以上、本発明の実施の形態３に係るコンピュータシステム３００は、アクセス要求アドレス２２４がＥＣＣ有りの領域のアドレス範囲内にある場合のデータ読み出し時に、アドレス変換部２２３によりアドレス変換を行い、誤り訂正部２２２にて誤り検出及び訂正を行う。また、コンピュータシステム３００は、アクセス要求アドレス２２４がＥＣＣ有りの領域のアドレス範囲内にある場合のデータ書き込み時に、アドレス変換部２２３によりアドレス変換を行い、誤り訂正符号生成部３２１により誤り訂正符号１３２を生成する。これにより、上述した実施の形態１及び２で示したようなプログラムイメージのみならず、プログラムのスタックデータなどシステム動作に影響を与える重要なデータにも誤り訂正符号１３２を付加し、メモリ１３０に格納することができる。よって、システム動作に影響を与える重要なデータを誤り訂正符号１３２により保護し、システムの堅牢性を向上させることができる。また、誤り訂正符号１３２を付加すべき領域をメモリ１３０内の所定のアドレス範囲内に抑える事ができるため、メモリ容量を削減することができる。
【０１５３】
また、本発明の実施の形態３に係るコンピュータシステム３００は、ＥＣＣ有りの領域のアドレス範囲を決定するための値を保持するアドレス記憶部３２３を備える。これにより、メモリ１３０内の誤り訂正符号１３２を付与したデータを格納するアドレス範囲をシステム毎に自由に設定することが可能となり、様々な装置に応用することができる。
【０１５４】
なお、上記説明では、境界アドレス３３１を１つに定め、アクセス要求アドレス２２４が境界アドレス３３１より小さい場合にＥＣＣ有りの領域のアドレス範囲内としたが、アクセス要求アドレス２２４が境界アドレス３３１より大きい場合にＥＣＣ有りの領域のアドレス範囲内としてもよい。また、境界アドレス３３１を２つとして、２つの境界アドレスで挟まれたアドレス領域をＥＣＣ有りの領域のアドレス範囲としてもよい。さらに、境界アドレスを３つ以上として、さらに細かくＥＣＣ有りの領域のアドレス範囲を指定してもよい。
【０１５５】
また、上記説明において、アドレス記憶部３２３は、境界アドレス３３１を固定値として保持するとしたが、アドレス記憶部３２３に保持する境界アドレス３３１をユーザ側で任意に設定してもよい。すなわち、アドレス記憶部３２３は、外部から入力された境界アドレス３３１を保持してもよい。
【０１５６】
（実施の形態４）
本発明の実施の形態４に係るメモリ制御装置は、デバッガソフトからの読み出し時には、誤り訂正符号及びプログラムデータをデバッガソフトに出力する。これにより、デバッガソフトは、誤り訂正符号及びプログラムデータから誤り検出及び誤り訂正を行い、デバッグを行うことができる。
【０１５７】
図９は、本発明の実施の形態４に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図９に示すコンピュータシステム４００は、図４に示す実施の形態２に係るコンピュータシステム２００に対して、マイコンブロック４１０の構成と、ＰＣ（パーソナルコンピュータ）４４０とを備える点とが異なる。なお、図４と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１５８】
マイコンブロック４１０は、バスコントロールユニット１１１と、マイコンコア１１２と、ＤＭＡ制御装置（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ：ＤＭＡＣ）４１１とを備える。
【０１５９】
ＤＭＡ制御装置４１１は、マイコンコア１１２と同様にバスコントロールユニット１１１を介してメモリ１３０が保持するデータを読み出す。ＤＭＡ制御装置４１１は、読み出したプログラムデータ１３１及び誤り訂正符号１３２をＰＣ４４０に送出する。
【０１６０】
コンピュータシステム４００において、メモリ制御装置２２０は、マイコンコア１１２及びＤＭＡ制御装置４１１からの命令により、誤り訂正符号１３２を含むデータをメモリ１３０から読み出す。
【０１６１】
ＰＣ４４０は、デバッガソフト４４１を備える。デバッガソフト４４１は、デバッグユニット（不図示）を経由して、マイコンブロック４１０と接続される。デバッガソフト４４１は、ＤＭＡ制御装置４１１を介して、メモリ１３０からの読み出しを行い、メモリ１３０が保持するデータのデバッグを行う。また、デバッガソフト４４１は、読み出したプログラムデータ１３１及び誤り訂正符号１３２から、読み出したプログラムデータ１３１の誤り検出及び誤り訂正を行う。
【０１６２】
セレクタ１２１は、ＤＭＡ制御装置４１１からの読み出しの場合に、メモリ１３０から読み出したプログラムデータ１３１及び誤り訂正符号１３２を、誤り訂正部２２２を介さずにマイコンブロック４１０のＤＭＡ制御装置４１１に送出する。
【０１６３】
以上の構成より、デバッガソフト４４１は、ＤＭＡ制御装置４１１及びメモリ制御装置３２０を介して、メモリ１３０が保持するプログラムデータ１３１及び誤り訂正符号１３２を読み出すことができる。また、デバッガソフト４４１は、読み出したプログラムデータ１３１及び誤り訂正符号１３２から、読み出したプログラムデータ１３１の誤り検出及び誤り訂正を行う。
【０１６４】
以上、本発明の実施の形態４に係るコンピュータシステム４００は、ＰＣ４４０上のデバッガソフト４４１によりメモリ１３０の保持するデータを読み出す場合に、デバッガソフト４４１にてプログラムデータ１３１の誤り検出及び誤り訂正を行う。これにより、メモリ制御装置２２０にハードウェアを追加しなくてもデバッガソフト４４１にてメモリ１３０のプログラムデータ１３１を誤りなくダンプし、デバッグを行うことができる。
【０１６５】
（実施の形態５）
本発明の実施の形態５に係るメモリ制御装置は、デバッガソフトからの読み出し時には、誤り検出及び誤り訂正を行い、プログラムデータのみをデバッガソフトに出力する。これにより、デバッガソフトでの誤り検出及び誤り訂正を行わなくてもよい。
【０１６６】
図１０は、本発明の実施の形態５に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図１０に示すコンピュータシステム５００は、図９に示す実施の形態４に係るコンピュータシステム４００に対して、ＰＣ４４０が備えるデバッガソフト５４１及びマイコンブロック１１０が備えるＤＭＡ制御装置５１１の構成と、メモリ制御装置２２０のセレクタ１２１及びアドレス変換部２２３の制御方法とが異なる。なお、図９と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１６７】
ＤＭＡ制御装置５１１は、マイコンコア１１２と同様にバスコントロールユニット１１１を介してメモリ１３０が保持するデータを読み出す。また、ＤＭＡ制御装置５１１は、ＤＭＡ制御装置５１１からのメモリ１３０に保持されるデータの読み出し時にアクティブとなり、ＤＭＡ制御装置５１１からのメモリ１３０に保持されるデータの読み出し時以外に非アクティブとなるＤＭＡ読み出し信号５１０を生成する。
【０１６８】
コンピュータシステム５００において、メモリ制御装置２２０は、マイコンコア１１２及びＤＭＡ制御装置５１１からの命令により、誤り訂正符号１３２を含むデータをメモリ１３０から読み出す。
【０１６９】
デバッガソフト５４１は、デバッグユニット（不図示）を経由して、マイコンブロック４１０と接続される。デバッガソフト５４１は、ＤＭＡ制御装置５１１を介して、メモリ１３０からの読み出しを行い、メモリ１３０が保持するデータのデバッグを行う。
【０１７０】
セレクタ１２１は、ＤＭＡ制御装置５１１からのＤＭＡ読み出し信号５１０、及び命令読み出し信号１２４の少なくとも一方がアクティブの場合に、メモリ１３０から読み出したプログラムデータ１３１及び誤り訂正符号１３２を、誤り訂正部２２２に送出する。セレクタ１２１は、ＤＭＡ読み出し信号５１０、及び命令読み出し信号１２４が共に非アクティブの場合に、メモリ１３０から読み出したデータを、誤り訂正部２２２を介さずにマイコンブロック４１０に送出する。
【０１７１】
アドレス変換部２２３は、ＤＭＡ読み出し信号５１０及び命令読み出し信号１２４の少なくとも一方がアクティブの場合に、マイコンブロック４１０からのアクセス要求アドレス２２４をメモリ１３０上のメモリアドレス２２５に変換し、メモリ１３０に送出する。アドレス変換部２２３は、ＤＭＡ読み出し信号５１０、及び命令読み出し信号１２４が共に非アクティブの場合に、マイコンブロック１１０からのアクセス要求アドレス２２４を変換せずメモリアドレス２２５として、メモリ１３０に送出する。
【０１７２】
以上の構成により、ＰＣ４４０上のデバッガソフト５４１によりメモリ１３０が保持するデータを読み出す場合に、ＤＭＡ制御装置５１１は、ＤＭＡ読み出し信号５１０をアクティブにする。これにより、アドレス変換部２２３は、アクセス要求アドレス２２４をメモリ１３０上のメモリアドレス２２５に変換する。メモリ制御装置２２０は、変換したメモリアドレス２２５のプログラムデータ１３１及び誤り訂正符号１３２を読み出す。セレクタ１２１は、読み出したプログラムデータ１３１及び誤り訂正符号１３２を誤り訂正部２２２に送出する。誤り訂正部２２２は、読み出したプログラムデータ１３１及び誤り訂正符号１３２から、プログラムデータ１３１の誤り検出及び誤り訂正を行う。誤り訂正部２２２は、誤り検出及び誤り訂正を行ったプログラムデータ１３１をマイコンブロック４１０に送出する。ＤＭＡ制御装置５１１は、誤り訂正部２２２からの誤り検出及び誤り訂正を行ったプログラムデータ１３１を、バスコントロールユニット１１１を介して取得し、デバッガソフト５４１に送出する。以上より、誤り検出及び誤り訂正を行ったプログラムデータ１３１がデバッガソフト５４１に送出される。
【０１７３】
上述した実施の形態２に係るコンピュータシステム２００では、命令読み出し信号１２４による制御のみでメモリ１３０から読み出したデータを誤り訂正部２２２へ送出するか、直接的にマイコンブロック１１０へ送出するかを選択していた。よって、デバッガソフト５４１からメモリ１３０が保持するデータを読み出すとプログラムデータ１３１と誤り訂正符号１３２とが読み出される。プログラムをデバッグしたいユーザにとって、誤り訂正符号１３２は不必要なデータである。一方、実施の形態５に係るコンピュータシステム５００は、セレクタ１２１及びアドレス変換部２２３が、命令読み出し信号１２４及びＤＭＡ読み出し信号５１０により制御される。よって、デバッガソフト５４１からメモリ１３０が保持するデータを読み出した場合に、誤り検出及び誤り訂正後のプログラムデータ１３１が読み出される。
【０１７４】
以上、本発明の実施の形態５に係るコンピュータシステム５００は、デバッガソフト５４１からメモリ１３０の内容を読み出しても、通常のメモリ（ＥＣＣ無しのメモリ）と同様にプログラムデータのみを読み出すことができる。また、メモリ制御装置２２０が誤り検出及び訂正を行うのでデバッガソフト５４１上で誤り検出及び誤り訂正の処理を行う必要がない。
【０１７５】
（実施の形態６）
本発明の実施の形態６に係るメモリ制御装置は、メモリが保持するプログラムデータに誤りが検出された場合に、バスコントロールユニットを制御することで、プログラムデータを参照にいくメモリを変更する。これにより、マイコンブロックは、誤りが発生した場合に、他のメモリからプログラムデータを読み出すことができる。
【０１７６】
図１１は、本発明の実施の形態６に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図１１に示すコンピュータシステム６００は、図４に示す実施の形態２に係るコンピュータシステム２００に対して、メモリ制御装置６２０及びマイコンブロック６１０の構成と、システムバス６１４及びプログラムＲＯＭ６１５を備える点とが異なる。なお、図４と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１７７】
マイコンブロック６１０は、バスコントロールユニット６１１と、マイコンコア１１２と、システムバスコントローラ（Ｓｙｓｔｅｍ  Ｂｕｓ  Ｃｏｎｔｒｏｌｌｅｒ:ＳＢＣ）６１２とを備える。
【０１７８】
システムバスコントローラ６１２は、システムバス６１４を制御する。プログラムＲＯＭ６１５は、システムバス６１４上に配置される。
【０１７９】
バスコントロールユニット６１１は、ＣＩバス１１６及びＣＤバス１１７を介して送出されるマイコンコア１１２からのアクセス要求をメモリ制御装置６２０、又はシステムバスコントローラ６１２に振り分ける。具体的には、バスコントロールユニット６１１は、ＣＩバス１１６及びＣＤバス１１７からのアクセス要求のアドレス値によって、アクセス要求をメモリ制御装置６２０、又はシステムバスコントローラ６１２に振り分ける。バスコントロールユニット６１１は、バス制御レジスタ６１３を備える。バス制御レジスタ６１３は、バスコントロールユニット６１１のアクセス要求の振り分け先を決定するための情報を保持する。
【０１８０】
メモリ制御装置６２０は、セレクタ１２１と、誤り訂正部６２２と、アドレス変換部２２３と、レジスタ設定変更部６２４とを備える。
【０１８１】
誤り訂正部６２２は、メモリ１３０から読み出したプログラムデータ１３１及び誤り訂正符号１３２に基づき、メモリ１３０から読み出したプログラムデータ１３１の誤り検出及び誤り訂正を行う。さらに、誤り訂正部６２２は、データに誤りを検出すると誤り検出信号６２５をアクティブにする。
【０１８２】
レジスタ設定変更部６２４は、誤り検出信号６２５がアクティブになった場合（誤り訂正部６２２が誤りを検出した場合）に、バス制御レジスタ６１３が保持する情報を変更する。具体的には、レジスタ設定変更部６２４は、バス制御レジスタ６１３に保持されるメモリ１３０のアドレスを、システムバスコントローラ６１２のアドレスに変更する。これにより、バスコントロールユニット６１１は、本来メモリ１３０に対して行われるＣＩバス１１６又はＣＤバス１１７からのアクセス要求をシステムバスコントローラ６１２に対して行う。
【０１８３】
以上のように、本発明の実施の形態６に係るコンピュータシステム６００は、誤り訂正部６２２がメモリ１３０上のプログラムデータ１３１の誤りを検出した場合に、バス制御レジスタ６１３の設定が変更される。これにより、メモリ１３０へのアクセスがシステムバスコントローラ６１２へ渡される。よって、システムバス６１４上にプログラムＲＯＭ６１５を配置することで、誤りが発生したメモリを使用せずにプログラムＲＯＭ６１５のデータを使用することでシステムの動作を継続することができる。よって、コンピュータシステム６００の堅牢性を向上させることができる。
【０１８４】
（実施の形態７）
本発明の実施の形態７に係るメモリ制御装置は、メモリが保持するプログラムデータに誤りが検出された場合に、ＣＰＵコアを制御することで、プログラムデータを参照にいくメモリを変更する。これにより、マイコンブロックは、誤りが発生した場合に、他のメモリからプログラムデータを読み出すことができる。
【０１８５】
図１２は、本発明の実施の形態７に係るメモリ制御装置を備えるコンピュータシステムの構成を示す図である。図１２に示すコンピュータシステム７００は、図１１に示す実施の形態６に係るコンピュータシステム６００に対して、マイコンブロック７１０のＣＰＵコア７１５の構成と、メモリ制御装置６２０のレジスタ設定変更部７２４の構成とが異なる。なお、図１１と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１８６】
マイコンブロック７１０は、バスコントロールユニット１１１と、マイコンコア７１２とを備える。マイコンコア７１２は、命令キャッシュ１１３と、データキャッシュ１１４と、ＣＰＵコア７１５とを備える。ＣＰＵコア７１５は、トラップベースレジスタ（ＴＢＲ）７１６を備える。
【０１８７】
トラップベースレジスタ７１６は、プログラムの配置場所を示す情報を保持するレジスタである。具体的には、トラップベースレジスタ７１６は、割り込みハンドラのアドレスを示す割り込みベクタの配置場所を示す情報を保持する。ここで、割り込みハンドラとは、ＣＰＵコア７１５の処理において割り込みが発生した際の、現在実行中の処理を中断して、割り込み処理を行うために分岐する特殊なプログラムである。通常時にはメモリ１３０上に割り込みベクタが配置されるために、トラップベースレジスタ７１６には、システム起動時にメモリ１３０上のアドレスを示す情報が設定される。
【０１８８】
レジスタ設定変更部７２４は、誤り検出信号６２５がアクティブになった場合（誤り訂正部６２２が誤りを検出した場合）に、トラップベースレジスタ７１６の保持する情報を変更する。具体的には、レジスタ設定変更部７２４は、誤り検出信号６２５がアクティブになると、トラップベースレジスタ７１６の設定をシステムバス上のプログラムＲＯＭ等のアドレスに変更する。
【０１８９】
以上のように、本発明の実施の形態７に係るコンピュータシステム７００は、誤り訂正部６２２が誤りを検出し、誤り検出割り込みが発生した場合に、トラップベースレジスタ７１６の値を変更する。これにより、マイコンブロック７１０は、誤りが発生したメモリ１３０を使用せずに割り込み処理を実行できる。よって、コンピュータシステム７００の堅牢性を向上させることができる。
【産業上の利用可能性】
【０１９０】
本発明は、メモリ制御装置に適用でき、特に、メモリから読み出したデータの誤り訂正が行われるＤＶＤレコーダ等のデータ再生記録装置に適用できる。
【図面の簡単な説明】
【０１９１】
【図１】本発明の実施の形態１に係るコンピュータシステムの構成を示す図である。
【図２】本発明の実施の形態１に係るコンピュータシステムにおけるプログラムイメージの生成方法の流れを示すフローチャートである。
【図３】本発明の実施の形態１に係るコンピュータシステムにおけるプログラムイメージの生成方法を説明するための図である。
【図４】本発明の実施の形態２に係るコンピュータシステムの構成を示す図である。
【図５】本発明の実施の形態２に係るコンピュータシステムのアドレス変換部の構成を示す図である。
【図６】メモリのメモリアドレスとアクセス要求アドレスと関係を模式的に示す図である。
【図７】メモリのメモリアドレスとアクセス要求アドレスと関係を模式的に示す図である。
【図８】本発明の実施の形態３に係るコンピュータシステムの構成を示す図である。
【図９】本発明の実施の形態４に係るコンピュータシステムの構成を示す図である。
【図１０】本発明の実施の形態５に係るコンピュータシステムの構成を示す図である。
【図１１】本発明の実施の形態６に係るコンピュータシステムの構成を示す図である。
【図１２】本発明の実施の形態７に係るコンピュータシステムの構成を示す図である。
【図１３】従来のコンピュータシステムの構成を示す図である。
【図１４】従来のコンピュータシステムの構成を示す図である。
【符号の説明】
【０１９２】
１００、２００、３００、４００、５００、６００、７００、１０００、１１００  コンピュータシステム
１１０、４１０、６１０、７１０、１１１０  マイコンブロック
１１１、６１１  バスコントロールユニット
１１２、７１２  マイコンコア
１１３  命令キャッシュ
１１４  データキャッシュ
１１５、７１５  ＣＰＵコア
１１６  ＣＩバス
１１７  ＣＤバス
１２０、２２０、３２０、６２０、１１２０  メモリ制御装置
１２１  セレクタ
１２２、２２２、６２２  誤り訂正部
１２３  命令置き換え部
１２４  命令読み出し信号
１３０、１１３０  メモリ
１３１  プログラムデータ
１３２、１１３２  誤り訂正符号
１３３  プログラム以外のデータ
１３４、２３４  プログラムイメージ
１４０  オブジェクト
１４１  データ領域
１４２  ｊｍｐ命令
１４３  ラベル
２２３  アドレス変換部
２２４  アクセス要求アドレス
２２５  メモリアドレス
２２６  メモリアドレス算出部
３２１  誤り訂正符号生成部
３２２  第２セレクタ
３２３  アドレス記憶部
３２４  領域判定部
３２５  領域判定信号
３３１  境界アドレス
４１１、５１１  ＤＭＡ制御装置
４４０  ＰＣ
４４１、５４１  デバッガソフト
５１０  ＤＭＡ読み出し信号
６１２  システムバスコントローラ
６１３  バス制御レジスタ
６１４  システムバス
６１５  プログラムＲＯＭ
６２４、７２４  レジスタ設定変更部
６２５  誤り検出信号
７１６  トラップベースレジスタ
１００１  メモリモジュール
１００２  チップセット
１００３  ＣＰＵ
１００４  メモリチップ
１００５  データ用ビット線
１００６  ＥＣＣ用ビット線
１１３１  データ
【図１】
2008139908.tif 000003
【図２】
2008139908.tif 000004
【図３】
2008139908.tif 000005
【図４】
2008139908.tif 000006
【図５】
2008139908.tif 000007
【図６】
2008139908.tif 000008
【図７】
2008139908.tif 000009
【図８】
2008139908.tif 000010
【図９】
2008139908.tif 000011
【図１０】
2008139908.tif 000012
【図１１】
2008139908.tif 000013
【図１２】
2008139908.tif 000014
【図１３】
2008139908.tif 000015
【図１４】
2008139908.tif 000016