"メモリ制御装置であって、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データをアドレス空間で分割し格納するメモリデバイスと、該誤り訂正データを読み出して誤り訂正を行なうメモリコントローラを有し、前記誤り訂正データは前記メモリデバイスからデータと冗長データを連続的に読み出すことを特徴とするメモリ制御装置。メモリ制御装置であって、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データをアドレス空間で分割し格納するメモリデバイスと、該メモリデバイスに対して書き込みと読み出しを行なうメモリコントローラを有し、該メモリコントローラは、前記少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データを生成し、前記メモリデバイスに書き込みを行ない、また、前記メモリコントローラは、前記誤り訂正データを前記メモリデバイスから読み出して誤り訂正を行なうものであって、前記メモリデバイスに対して書き込み、あるいは読み出しを行なう誤り訂正データは、データと冗長データが連続的に転送されることを特徴とするメモリ制御装置。メモリ制御装置であって、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データをアドレス空間で分割し格納するメモリデバイスと、該メモリデバイスに対して書き込みと読み出しを行なうメモリコントローラを有し、該メモリコントローラは、前記少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データを生成し、また、前記メモリコントローラは、前記誤り訂正データを前記メモリデバイスから読み出して誤り訂正を行なうものであって、前記アドレス空間を分割するための情報を指定するレジスタがあることを特徴とするメモリ制御装置。請求項3に記載のメモリ制御装置であって、前記アドレス空間を分割するための情報を指定するレジスタは、アドレス空間を示す先頭アドレスと、アドレス空間を示す空間サイズと、前記少なくとも2種類以上のデータ長を示す情報があることを特徴とするメモリ制御装置。メモリ制御装置であって、複数の空間に分割され、各空間には互いに異なるデータ長のデータに対して冗長なデータを付加した誤り訂正データを格納すると共に、空間ごとに冗長なデータを当該空間内の別領域に格納し、あるいは前記データと一体に格納するメモリデバイスと、該メモリデバイスに対して書き込みと読み出しを行なうとともに、前記メモリデバイスの分割された各空間の先頭アドレスと、各空間の大きさと、前記冗長なデータの格納手法を示す誤り訂正タイプとを記憶し、誤り訂正タイプに応じて書き込みと読み出しを制御するメモリコントローラとを含むことを特徴とするメモリ制御装置。請求項5に記載のメモリ制御装置において、前記メモリデバイスの第1の空間には冗長なデータを当該空間内の別領域に格納しており、前記メモリコントローラは、先頭アドレスが第1の空間である場合に、冗長なデータを当該空間内の別領域に格納する予め決められたデータ長の誤り訂正タイプであると判断し、前記データ長になるまでデータアクセス単位長での書き込みあるいは、読み出しを繰り返し、その後冗長データ領域にそれまでに求めた冗長データを書き込みあるいは読み出しエラー訂正を実行することを特徴とするメモリ制御装置。請求項5に記載のメモリ制御装置において、前記メモリデバイスの第2の空間には2のべき乗の長さの前記データと、これに付加する冗長なデータが連続して格納されており、前記メモリコントローラは、先頭アドレスが第2の空間である場合に、2のべき乗の長さの前記データと、これに付加する冗長なデータが連続して格納された誤り訂正タイプであると判断し、一度のデータアクセス単位長での処理により、2のべき乗の長さの前記データと、これに付加する冗長なデータが得られない場合には、再度データアクセス単位長での処理を実行することを特徴とするメモリ制御装置。請求項5に記載のメモリ制御装置において、前記メモリデバイスの第3の空間には2のべき乗の長さの範囲内に前記データとこれに付加する冗長なデータが連続して格納されており、前記メモリコントローラは、先頭アドレスが第3の空間である場合に、2のべき乗の長さの範囲内に前記データとこれに付加する冗長なデータが連続して格納された誤り訂正タイプであると判断し、データアクセス単位長での処理を実行することを特徴とするメモリ制御装置。メモリ制御装置であって、複数の空間に分割され、各空間には互いに異なるデータ長のデータに対して冗長なデータを付加した誤り訂正データを格納すると共に、空間ごとに冗長なデータを当該空間内の別領域に格納し、あるいは前記データと一体に連続して格納するメモリデバイスと、該メモリデバイスに対して書き込みと読み出しを行なうとともに、前記メモリデバイスの分割された各空間の先頭アドレスと、各空間の大きさと、前記冗長なデータの格納手法を示す誤り訂正タイプとを記憶し、誤り訂正タイプに応じて書き込みと読み出しを変更して制御するメモリコントローラとを含み、前記メモリデバイスは、冗長なデータを当該空間内の別領域に格納する第1の空間と、2のべき乗の長さの前記データとこれに付加する冗長なデータが連続して格納された第2の空間と、2のべき乗の長さの範囲内に前記データとこれに付加する冗長なデータが連続して格納された第3の空間のうち、2つ以上の空間を備えていることを特徴とするメモリ制御装置。請求項9に記載のメモリ制御装置において、前記メモリコントローラは、第1の空間の処理のときにこの空間でのデータ長になるまでデータアクセス単位長での書き込みあるいは、読み出しを繰り返し、第2の空間の処理のときに前記データアクセス単位長での書き込みあるいは、読み出しを実行し、第3の空間の処理のときに、必要に応じてデータアクセス単位長での書き込みあるいは、読み出しを再実行し、前記誤り訂正タイプに応じて書き込みと読み出しを変更して制御することを特徴とするメモリ制御装置。本発明においては、2のべき乗の記憶素子からなるメモリデバイスを用い、誤り訂正符号で誤りを訂正する高信頼なシステムをメモリ効率が最大になるように構築することを大前提としている。係るメモリ効率最大という観点から、前述の特許文献を検討すると、それぞれ以下のことが言える。特許文献1ならびに、特許文献2には一般的な4バイトのデータに対する誤り訂正、誤り検出を行なうメモリ制御装置が記されている。仮に16ビットのメモリデバイスを使用する場合、4バイトのデータに対して3個のメモリデバイスを使用することになるので、48ビット中の9ビットのデータは無駄になってしまう。また、メモリデバイスの容量に関係なく3個のメモリデバイスが必要であり、必要なメモリ容量が少ない場合には無駄が大きくなる。特許文献3には、120ビットのデータに、8ビットの冗長なデータを付加し128ビットの情報を記憶する効率の良い方法が記されている。しかし、120ビット単位にデータを扱う場合は良いが、それ以外では効率良くメモリをアクセスすることができない。例えば、32ビットのデータは120ビットとして扱われ、128ビットのデータとして格納される。特許文献5には、不揮発メモリの一部の記憶領域をデータの重要度に応じて誤り訂正するデータ処理方法が示されている。プログラムにより誤り訂正のための冗長なデータを生成し付加するので、誤り訂正しないデータには冗長なデータを付加しなくて良く、無駄を省くことができる。ここでは、データの重要度、書き換え保証回数により誤り訂正能力を選択することが記されているが、さまざまなデータ長のデータに対してメモリデバイスの使用効率を最大にすることは考慮していない。以上の特許文献の方式には、メモリ効率最大という観点からみると一長一短があるが、実際のメモリデバイスにおいては、特許文献4にあるように、ホスト計算機からのセクターデータ512バイト、マイクロプロセッサのプログラムやデータである4バイトデータなど、各種管理テーブルに格納されるさまざまなデータ長のデータを取り扱うことが多い。本発明では、係る使用の場面においても効率良くメモリデバイス上に割り付け、ハードウェアで高速にアクセスするメモリ制御装置を提供することを目的としている。上記課題を解決するために、本発明のメモリ制御装置は、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データをアドレス空間で分割し格納するメモリデバイスと、誤り訂正データを読み出して誤り訂正を行なうメモリコントローラを有し、誤り訂正データはメモリデバイスからデータと冗長データを連続的に読み出す。また、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データをアドレス空間で分割し格納するメモリデバイスと、メモリデバイスに対して書き込みと読み出しを行なうメモリコントローラを有し、メモリコントローラは、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データを生成し、メモリデバイスに書き込みを行ない、メモリコントローラは、誤り訂正データをメモリデバイスから読み出して誤り訂正を行なうものであって、メモリデバイスに対して書き込み、あるいは読み出しを行なう誤り訂正データは、データと冗長データが連続的に転送する。上記課題を解決するために、本発明のメモリ制御装置は、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データをアドレス空間で分割し格納するメモリデバイスと、メモリデバイスに対して書き込みと読み出しを行なうメモリコントローラを有し、メモリコントローラは、少なくとも2種類以上のデータ長のデータに対して冗長なデータを付加した誤り訂正データを生成し、メモリコントローラは、誤り訂正データをメモリデバイスから読み出して誤り訂正を行なうものであって、アドレス空間を分割するための情報を指定するレジスタがある。また、アドレス空間を分割するための情報を指定するレジスタは、アドレス空間を示す先頭アドレスと、アドレス空間を示す空間サイズと、少なくとも2種類以上のデータ長を示す情報がある。上記課題を解決するために、本発明のメモリ制御装置は、複数の空間に分割され、各空間には互いに異なるデータ長のデータに対して冗長なデータを付加した誤り訂正データを格納すると共に、空間ごとに冗長なデータを当該空間内の別領域に格納し、あるいは前記データと一体に格納するメモリデバイスと、メモリデバイスに対して書き込みと読み出しを行なうとともに、メモリデバイスの分割された各空間の先頭アドレスと、各空間の大きさと、冗長なデータの格納手法を示す誤り訂正タイプとを記憶し、誤り訂正タイプに応じて書き込みと読み出しを制御するメモリコントローラとを含む。また、メモリデバイスの第1の空間には冗長なデータを当該空間内の別領域に格納しており、メモリコントローラは、先頭アドレスが第1の空間である場合に、冗長なデータを当該空間内の別領域に格納する予め決められたデータ長の誤り訂正タイプであると判断し、データ長になるまでデータアクセス単位長での書き込みあるいは、読み出しを繰り返し実行する。また、メモリデバイスの第2の空間には2のべき乗の長さの前記データと、これに付加する冗長なデータが連続して格納されており、メモリコントローラは、先頭アドレスが第2の空間である場合に、2のべき乗の長さの前記データと、これに付加する冗長なデータが連続して格納された誤り訂正タイプであると判断し、一度のデータアクセス単位長での処理により、2のべき乗の長さのデータと、これに付加する冗長なデータが得られない場合には、再度データアクセス単位長での処理を実行する。また、メモリデバイスの第3の空間には2のべき乗の長さの範囲内にデータとこれに付加する冗長なデータが連続して格納されており、メモリコントローラは、先頭アドレスが第3の空間である場合に、2のべき乗の長さの範囲内にデータとこれに付加する冗長なデータが連続して格納された誤り訂正タイプであると判断し、データアクセス単位長での処理を実行する。上記課題を解決するために、本発明のメモリ制御装置は、複数の空間に分割され、各空間には互いに異なるデータ長のデータに対して冗長なデータを付加した誤り訂正データを格納すると共に、空間ごとに冗長なデータを当該空間内の別領域に格納し、あるいは前記データと一体に連続して格納するメモリデバイスと、メモリデバイスに対して書き込みと読み出しを行なうとともに、メモリデバイスの分割された各空間の先頭アドレスと、各空間の大きさと、冗長なデータの格納手法を示す誤り訂正タイプとを記憶し、誤り訂正タイプに応じて書き込みと読み出しを変更して制御するメモリコントローラとを含み、メモリデバイスは、冗長なデータを当該空間内の別領域に格納する第1の空間と、2のべき乗の長さの前記データとこれに付加する冗長なデータが連続して格納された第2の空間と、2のべき乗の長さの範囲内に前記データとこれに付加する冗長なデータが連続して格納された第3の空間のうち、2つ以上の空間を備えている。また、メモリコントローラは、第1の空間の処理のときにこの空間でのデータ長になるまでデータアクセス単位長での書き込みあるいは、読み出しを繰り返し、第2の空間の処理のときにデータアクセス単位長での書き込みあるいは、読み出しを実行し、第3の空間の処理のときに、必要に応じてデータアクセス単位長での書き込みあるいは、読み出しを再実行し、誤り訂正タイプに応じて書き込みと読み出しを変更して制御する。本発明によれば、512バイトや4バイトのような、さまざまなデータ長で誤り訂正するデータを効率良くメモリデバイス上に割り付け、ハードウェアで高速にアクセスするメモリ制御装置を提供することができる。さらに本発明の実施例によれば、システムの仕様によりデータの割り付けを最適にできるようなメモリ制御装置を提供することができる。また本発明の実施例によれば、メモリデバイスが、連続した記憶素子の一部を連続的に外部ピンに入出力するものであるとき、高性能にメモリ制御装置を提供することができる。以上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。以下、本発明の実施例を、図面を用いて説明する。本実施例では、メモリデバイスを4つの領域に分割したメモリ制御装置1の例を説明する。図1は、本実施例のメモリ制御装置1の構成例を示している。メモリ制御装置1は、マイコン10、メモリコントローラ20、SCSIsmallcomputersysteminterfaceコネクタ30、メモリデバイス200から構成される。マイコン10は、メモリ制御装置1を所定のプログラムに従って制御するプロセッサである。所定のプログラムは、マイコン10内部のROM図示せずに書き込まれている。マイコン10は、メモリコントローラ20を介してメモリデバイス200や、メモリコントローラ20の内部レジスタにアクセスすることができる。メモリコントローラ20は、メモリ制御回路100と、例えば3組のリクエスタから構成される。3組のリクエスタは、512Bバイト単位リクエスタ300、4B単位リクエスタ400、26ビット単位リクエスタ500である。SCSIコネクタ30は、ホスト計算機図示せずと接続し、ホスト計算機からのコマンド、データのやり取りをするポートである。ホスト計算機からは、SCSIコネクタ30を介して512バイトのデータが書き込まれ、あるいは読みだされる。ホスト計算機から、512バイトのデータが書き込まれるときは、信号線L1を介して512B単位リクエスタ300が一旦512バイトのデータを受け取り、そのデータが正しいか確認する。それから信号線L2、メモリ制御回路100を介してメモリデバイス200に書き込みを行なう。ホスト計算機から512バイトのデータの読み出しを行なう場合には、メモリ制御回路100、信号線L2を介して512バイトのデータを読み出し、一旦512B単位リクエスタ300に格納し、誤りがある場合には格納されているデータを訂正し、信号線L1、SCSIコネクタ30を介してホスト計算機に出力する。4B単位リクエスタ400は、マイコン10からのメモリデバイス200に対する書き込み、読み出しを制御する。4バイトの書き込みでは、4B単位リクエスタ400は、マイコン10から信号線L3を介して書き込むデータを受け取り、信号線L4を介してメモリ制御回路100に書き込みの要求を出力する。また、4バイトの読み出しでは、4B単位リクエスタ400は、信号線L4を介してメモリ制御回路100に読み出し要求を出し、読み出したデータを信号線L3経由でマイコン10に出力する。26ビット単位リクエスタ500は、メモリデバイス200上に定義するアクセス単位が26ビットのデータに対してマイコン10からの書き込み、読み出しを制御する。この場合、信号線L5、L6が使用される。このように、メモリ制御回路100は512B単位リクエスタ300、4B単位リクエスタ400、26ビット単位リクエスタ500からの書き込み、読み出し要求を受け取り、それぞれに対応するエラー訂正を行なってメモリデバイス200に対して制御信号を生成する。なお、メモリ制御回路100とマイコン10は、メモリ制御回路内のアドレスレジスタ110をアクセスするため信号線L7により直接接続されている。メモリデバイス200は、2のべき乗のデータを入出力する信号線L8例えば16ビットでメモリコントローラ20と接続されている。本実施例では、メモリデバイス200は一般的なダイナミックメモリを想定しており、メモリの記憶素子を2次元状に配置し、行アドレスで読み出した連続するデータから列アドレスで指定されたデータを対象に書き込み、あるいは読み出しするものである。当然、一般的なRAMを用いても問題ない。メモリデバイス200は、例えば4個の空間図1メモリマップ太枠内に分けてアクセスされる。各空間では、データと冗長データを、領域を分けて格納する場合と、データと冗長データを連続するデータとして扱う場合とがある。図1では、512B単位データと4B単位データが、領域を分けて格納する場合を示しており、それ以外は連続するデータとして扱う場合を示している。なお、4B単位データは、連続するデータとして扱い、格納領域を分割しない方式とすることもできる。領域210は、512バイト単位のデータを書き込み、あるいは読み出す空間である。領域210に対して、通常512B単位リクエスタ300からの要求で512バイト単位の書き込み、あるいは読み出しが行われ、その512バイトの冗長データを領域211に格納、あるいは読み出して訂正する。領域210と領域211により、4個の空間のうちの1つの空間を形成する。この空間は512バイト単位のデータのための空間である。領域212は、4バイト単位のデータの書き込み、あるいは読み出す空間である。領域213は、領域212の4バイトデータに対する冗長データを格納する空間である。但し、本実施例では冗長データは領域213に配置するのではなく、領域212の先頭から4バイトのデータに1バイトの冗長データを付加したものを領域213の最後まで配置したものとなる。領域212と領域213により、4個の空間のうちの2つ目の空間を形成する。この空間は4バイト単位のデータのための空間である。領域214は、26ビット単位のデータに6ビットの冗長データを付加し、4バイト単位にしてメモリに配置した空間である。これが3つ目の空間である。領域215は、32ビットの誤り訂正を行なわない、冗長データの無い書き込み、あるいは読み出しを行なう空間である。ここでは、マイコン10とメモリ制御回路100を直接接続した信号線L7を介してマイコン10から読み出し、あるいは書き込みを行なうものとする。これが4つ目の空間である。これら4個の空間は、メモリ制御回路100内に配置するアドレスレジスタ110によって定義できる。ここでは、4個の空間の先頭アドレスが、AD1、AD2、AD3、AD4と定義されている。ところで、本実施例のメモリ制御装置1は、SCSIインタフェースの半導体ストレージドライブを想定して記載をしており、マイコン10は、半導体ストレージドライブのシステムを制御するように動作する。半導体ストレージドライブでは、マイコン10はメモリコントローラ20の内部に配置されていることも多いが、ここでは、メモリコントローラ20の外部に配置する構成を記した。メモリ制御回路100は、マイコン10、3個のリクエスタ300、400、500と、信号線L2、L4、L6、L7で接続されており、このための4個のポートを持つ。また、4個に分けたメモリデバイス上の空間210と211、212と213、214、215に、それぞれのデータ単位512バイト、4バイト、26ビット、32ビットに従って書き込み、あるいは読み出しの制御を行なう。このため、予め各データの空間が決まっていれば前記空間を分割するためのアドレスレジスタ110は必要ない。しかし、別のシステムにメモリコントローラ20を使用する場合などを考えると、メモリデバイス200の空間の分割を変更する手段は必要である。次に、図2を用いてメモリ制御回路100をより詳細に説明する。メモリ制御回路100は、各リクエスタ300、400、500からのアクセス要求を調停するアービタ112、アドレスレジスタ110を含む誤り訂正選択レジスタ111、選択されたリクエスタからの書き込むデータや、読み出したデータを操作するデータ制御部113から構成される。さらに、データ制御部113は、書き込みデータから誤り訂正のための冗長データを算出するECC生成部114、読み出したデータの誤り訂正を行なうECC訂正部115を含んでいる。各リクエスタ300、400、500とメモリ制御回路100の間の信号線には、図2には示していないが、リード、ライトを要求する信号が印加され、アービタ112に対してアドレスREQA1、REQA2、REQA3とともに出力される。なお、REQA1、REQA2、REQA3は、それぞれ各リクエスタ300、400、500の与えるアドレスを意味する。アービタ112は、適切な調停法方、例えばラウンドロビンにより各リクエスタ300、400、500からのアクセス要求を調停する。これにより選択されたアドレスREQ_ADRが、誤り訂正選択レジスタ111に送られ、アドレスレジスタ110に格納されているアドレスAD1、AD2、AD3、AD4と比較し誤り訂正するデータ長が選択される。なお、図1に示したマイコン10からの信号は簡単化のため省略してある。基本的には、4B単位リクエスタ400と同じであると考えて良い。本実施例においては、誤り訂正選択レジスタ111には、4個のメモリ領域ごとにアドレス空間サイズSIZE1、SIZE2、SIZE3、SIZE4と、データの単位長を示す誤り訂正タイプTYPE1、TYPE2、TYPE3、TYPE4を格納するレジスタがあり、メモリ領域ごとの先頭アドレスAD1、AD2、AD3、AD4と対比して記憶されている。これにより、アービタ112により選択されたアドレスREQ_ADRが、アドレスレジスタ110に格納されているアドレスAD1、AD2、AD3、AD4と比較され、さらにはアドレス空間サイズSIZE1、SIZE2、SIZE3、SIZE4と、データの単位長を示す誤り訂正タイプTYPE1、TYPE2、TYPE3、TYPE4が参照される。これに基づいて、アドレス指定のエラーADR_ERR、データを書き込むあるいは読み出すデータアドレスDATA_ADR、冗長データの書き込みあるいは読み出す冗長アドレスRDATA_ADR、誤り訂正タイプRTYPEを出力する。なお、アドレス空間サイズSIZE1、SIZE2、SIZE3、SIZE4は、ある誤り訂正タイプの有効なアドレス範囲を示すもので、例えばAD1であれば、AD1からAD1SIZE1×データの単位長の空間が、TYPE1の誤り訂正の範囲となる。また、誤り訂正タイプTYPE1、TYPE2、TYPE3、TYPE4には、図1に示したように512バイト単位、4バイト単位、26ビット単位、32ビット非冗長などが指定できる。他に、8バイト単位のデータに8ビットの冗長データを付加して誤り訂正する誤り訂正タイプや、120ビットのデータを1単位として扱う誤り訂正タイプ、16バイトに2バイトの冗長データを付加する誤り訂正タイプが考えられる。26ビット単位や、57ビット単位、120ビット単位等のように、冗長データを含んで2のべき乗のアドレス範囲になる場合は、冗長データ領域を設けなくとも良いが、それ以外の誤り訂正タイプでは、図1のメモリマップに示すように冗長データ領域512バイト単位の冗長データ211、4バイト単位の冗長データ213が必要になる。各リクエスタ300、400、500から要求されるアドレスが、アドレスレジスタ110の示す誤り訂正タイプの先頭アドレスからアドレス空間サイズの示す領域以外になる場合、アドレス指定のエラーADR_ERRが検出され出力される。次に、データ制御部113について説明する。データ制御部113は、誤り訂正選択レジスタ111からのデータアドレスDATA_ADR、冗長アドレスRDATA_ADR、誤り訂正タイプRTYPEに基づいて、メモリデバイス200へのアドレスMEMADR、制御信号MEMCONT、マスクデータMEMDMを生成し、アービタ112からのライトデータ116に基づいてメモリデバイス200へのライトデータを生成する。また、メモリデバイス200が出力するリードデータから誤り訂正の復号をECC訂正部115で行い、読み出しデータ117としてアービタ112を介して各リクエスタ300、400、500にREQRD信号で出力する。誤り訂正でエラーになった場合は、DATA_ERR信号を発生し、システムにデータリードでエラーが発生したことを通知する。次に、このデータ制御部113について更に詳細に説明する。図3は、メモリデバイス200のインタフェースを説明する図である。ここに示す本実施例のメモリデバイス200は、一般的なSDRAMを想定している。メモリデバイス200と、データ制御部113の間の信号線L8には、メモリアドレスMEMADRと、制御信号MEMCONTと、マスクデータMEMDMとメモリデータMEMDATAとが印加され、図3のタイミングでデータ制御が実行される。書き込みの場合、データ制御部113は、時刻t1においてメモリアドレスMEMADRと制御信号MEMCONTに行アドレスRA1、ACTを指定する。次いで時刻t2において、メモリアドレスMEMADRに列アドレスCA1を指定し、制御信号MEMCONTにライトコマンドWTを指定する。これにより、メモリデバイス200は、データのライトを開始する。このときのライト開始位置は、行アドレスRA1、ACTと列アドレスCA1で指定されたデータ位置とされる。具体的には、ライトコマンドWTを指定した一定時間T1後に、メモリデータMEMDATA信号にライトデータDを、またマスクデータMEMDMにデータマスク信号Lレベルを与えることで、データマスク信号がLレベルの期間にライトが行われる。逆に言えば、データマスク信号がHレベルの期間には、ライトが阻止される。このことから明らかなように、前述の一定時間T1は、メモリデータの当該行において、ライトする列位置CA1に応じて定められる。通常データマスク信号MEMDMは、1バイト単位に指定できる。図3では、アドレスRA1、CA1に対してデータD10、D11、D12、D13をライトし、時刻t3で与えたアドレスRA1、CA2に対してデータD20をライトした例を示している。なお、実際には、MEMDATAは16ビット2バイトのデータであるから、MEMDMは2ビットになる。また、図3ではバースト数を4で説明したが、以降はバースト数を8として説明している。なお、メモリデバイス200のリードは、列アドレスRAを指定する時の制御信号をリードコマンドにすることでその一定時間後にMEMDATA信号にリードデータが出力される。次に、データ制御部113の制御フローを図4に示す。このフローのどのパスの処理を実行するのかは、誤り訂正タイプで決まる。この誤り訂正タイプは、図2の誤り訂正選択レジスタ111において、アービタ112により選択されたアドレスREQ_ADR、つまりアクセス要求のあったアドレスに応じてレジスタ111を参照して決定されたものである。この誤り訂正タイプは、アクセスするアドレスに応じて、データの長さと、連続するデータとして取り扱うか、別に取り扱うのかを定めたものということができる。なお、メモリデバイス200は、上述のように、2バイトのバス幅で、8回のバーストを基本としたアクセスを行なうため、16バイトを基本アクセスとして説明している。つまり、1回のデータアクセスで取り扱う長さこれをデータアクセス単位長とするを、以下の例では16バイトとする例で説明する。まず、処理S121では、図2の誤り訂正タイプTYPEが、冗長データを別アドレスとして処理する場合に処理S126に分岐する。処理S126に分岐された場合には、処理S126、処理S127、処理S128からなる一連のパスを実行する。冗長データを別アドレスとして処理するケースとしては、図1の512バイト単位データが、これに相当する。これは、例えば512バイト単位のアクセスの場合、連続した512バイトのデータは、512バイトのメモリ境界図1の領域210に配置し、その冗長データ2バイトは別の冗長領域図1の領域211に書き込むための分岐である。なお、4バイト単位データの場合には、冗長データを別アドレスとすることも、連続データとすることもできる。以下の例では、512バイト単位のアクセスを例にして、別アドレスとして処理するケースを説明する。この実施例では、書き込みあるいは、読み出しのデータは16バイト単位にアクセスされる。このため、処理S126において、16バイト単位にアクセスされ取り出されたデータは、処理S127において、アクセスデータ総量が512バイトになるまで、繰り返し計数される。512バイト処理した後、処理S128で、冗長データ領域211にそれまでに求める2バイトの冗長データを書き込む、または、読み出しエラー訂正する。なお、冗長データを別アドレスとしたときの4バイト単位データの取り扱いの場合には、処理S127において繰り返し処理をするのではなく、直ちに処理S128に移り、冗長データ領域213に冗長データを書き込む、または、読み出しエラー訂正の処理をする。次に、誤り訂正タイプTYPEが冗長データを連続したデータとして処理する場合には、処理S122に分岐し、これを実行する。図1のメモリマップの例では、領域214,215のデータの処理が処理S122の対象となる。また、4バイト単位データであっても、冗長データの格納領域を分割せずに連続データとしている場合には、この処理ルートに入ってくる。処理S122では、誤り訂正タイプが冗長データを2のべき乗のデータとは別に持つ1バイトの冗長なのでECC奇数と表記場合、処理S123に分岐する。2のべき乗のデータである4バイト32ビットとは別に、7ビット1バイトの冗長データを付加する場合がこれにあたる。逆に、2のべき乗の範囲内のデータとする場合、あるいは2のべき乗の範囲内に冗長データとデータを含む場合には、処理S125に分岐する。2のべき乗の範囲内のデータとする場合としては、26ビットのデータを4バイト32ビットで処理する場合がこれにあたる。また、2のべき乗の範囲内に冗長データとデータを含む場合としては、57ビット、120ビットのデータなどを8バイト、16バイトで処理する場合がこれにあたる。処理S125に分岐した場合、2のべき乗の範囲この例では16バイト内に冗長データとデータを含むので、16バイトを単位として処理すればよい。これに対し処理S123では、2のべき乗のデータ例えば4バイトとは別に、冗長データ1バイトを有するので、奇数バイトになっている。これを16バイト処理すると、16バイトのデータの境界を越えることがある。このことから、処理S124では、境界をまたぐ時もう一度処理S123を実行するようにしている。図5には、この処理S123のときのメモリデータMEMDATAの内容を示している。図5の上は、4バイトのアクセスデータD10、D11、D12、D13に対して7ビットの冗長データD1Eダミー1ビットを付加して1バイトが、バイトアドレスの下位が3から7の範囲に書き込まれ、あるいは読み出す場合を示している。図5の下には、4バイトのアクセスデータD20、D21、D22、D23と冗長データD2Eが、16バイトのアドレス境界をまたいでいるケースを示している。バイトアドレスの下位が0からB十進の11までは、1回のメモリアクセス列アドレス、制御信号の出力で処理が完了するが、バイトアドレスの下位がC十進の12以降は、2回メモリアクセスする。なお、ここで言うバイトアドレスは、メモリデバイス200に与えるアドレスである。アービタ112の出力するREQ_ADRに基づいて算出するなら、AD2REQ_ADR-AD2÷4×5となる但し、REQ_ADR、AD2は4の倍数とする。なお、図5でMは、ライト時にデータをマスクしていることを示す。図5のデータパターンにおいて、バイトアドレス0からFまでが1つの列を形成しており、今回のライトはバイトアドレス3から7に行うので、バイトアドレス0から2の期間、バイトアドレス8からFの期間をマスクする。図3において、列アドレスCA2指定後の一定時間T1は、バイトアドレス0から2の期間に相当しており、この期間のライトを阻止することで、バイトアドレス3から7のライトを有意の処理とする。図6は、8バイトの単位のデータアクセスで、1バイト8ビットの冗長データを付加した例を示している。バイトアドレス境界が0から7の場合に1回のメモリアクセスで良く、8からF十進の15の時、2回のメモリアクセスとなる。図7は、26ビット単位のデータアクセスDATA26で6ビットの冗長データECC6を付加し、合せて4バイト単位にアクセスする場合の16バイトのメモリ配置例を示している。4バイト単位にアクセスするため、16バイト境界をまたぐことはない。前述のように、図4の分岐処理S122では、誤り訂正のための冗長データを含め4バイト、8バイト、16バイトアクセスを行なう誤り訂正タイプの場合は、処理S125における1回のメモリアクセスを行なうことで、処理を終了する。図8は、512バイト単位にアクセスする場合のメモリマップと冗長データの関係を示している。データ書き込みの場合の処理S126では、先頭アドレスAD1から始まるメモリエリア210に、16バイト単位で512バイトのデータを格納する。同時に誤り訂正符号の冗長データを算出し、処理S128で冗長データエリア211に求めた冗長データを格納する。冗長データは、アドレスレジスタ110に設定した先頭アドレスAD1に、データサイズSIZE1×512バイトを加えたアドレスから冗長データサイズSIZE1×2となる。データ読み出しの場合も同様に、処理S126で16バイト単位にデータを読み出し、冗長データを算出しながらアービタ112に読み出しデータを送出する。最後の転送が終了した処理S128では、冗長データ211から該当する冗長データを読み出し、これまで算出してきた冗長データと排他的論理和EXORをとることで誤り訂正がある場合の誤りのビット位置を求めることができる。なお、メモリ制御回路100に、誤ったビットを訂正する機能を持たせることも可能であるが、512バイト単位のアクセスを行なうリクエスタ1には、512バイトのバッファがあるため、メモリ制御回路100からは、誤り訂正するビット位置を送出することにする。図9に示すハミング符号を用いれば、処理S128で最後に求められる値は、0の時誤りなし、0以外は誤り訂正するビット位置そのものを示す。ただし、パリティに矛盾があれば訂正できないエラーと判定し、DATA_ERRをアサートする。最後に、図9と図10を用いてハミング符号を用いた冗長データを算出する方法を示す。図9は左に入力データ書き込むデータまたは読み出したデータの1ビットB0からB4095が記され、それに対応するシンドロームS0からS7、512バイトのシンドロームは13ビット必要でありS0からS12までとなるを右側に記した。シンドロームは、1ビットだけの値は、それ自身の誤りを示す。また、1、2、4、8、は除き、図のように、2ビット以上の1か、3、5、6、7、9が順次入力データのビット位置B0、B1、B2、B3、に割りつけられる。さらに、入力データの1を計数しパリティを求め、メモリ書き込み時は、シンドロームを含めてパリティを生成する。図3に示したように、メモリデバイス200とのインタフェースでは、メモリデバイス200とのデータバス幅16ビット単位にデータを出力、あるいは入力するため、図9のシンドロームを求める表は、一度に16ビット分参照し、演算できれば良く、誤り訂正タイプによって共通に使用することができる。512バイトの場合、256個の13ビットのシンドロームを16個出力する表をハードウェアで実装すれば良い。例えば、512バイトのデータの内N回目の16ビットがそれぞれ1の時のシンドロームは、Nが0の時3、Nが1の時は0x16、Nが2の時は0x27と全てのケースについて予め求められる。これを指定してハードウェアを合成し、生成することができる。ここで、0xはそれ以降の数字が16進数であることを表している。あるいは、この条件を整理してNによってシンドロームを算出することもできる。即ち、シンドロームの値は、シンドローム自身に1ビットだけの誤りがある場合を除いて数えた入力ビット列の順番であるから、N×16にNで決まる値を加算すればよい。具体的には、入力の0ビット目では、この加算する値はN=0で3、N=1で6、N=2と3で7、N=4から7で8、N=8から15までで9、N=16から31までで10、N=32から63までで11、N=64から127までで12、N=128から255までで13となる。このような対応関係を、2ビット目から16ビット目まで記述すれば16ビット分のシンドロームを生成することができる。Nに対する16個のシンドロームを表で表しても良いが、N×16にNで決まる加算値を加える方が、記述性が良く、ハードウェアで合成する際も最適化を容易に行える。実際表で表す場合、256個のNに対して16個のシンドロームを指定するので4096個の値を指定する必要がある。一方、N×16にNで決まる加算値を加える記述では、Nで決まる加算値を約9個の条件で指定できるので、16ビット分の160個以内の値で指定することができる。実際合成した結果は、512バイトのデータに必要な8ビットのNに対して、16個のシンドロームを出力する回路が表で表す場合約6000ゲートのところ、Nで決まる値を求める方法では約4000ゲート実現できた。図10は、入力された16ビットB15-B0の個数をカウンタNで求め、カウンタNと、誤り訂正タイプで求められる16個のシンドロームを該入力された16ビットで選択したものを全て順次排他的論理和EXORすることで512バイトのシンドロームを求める回路を示している。この回路は、適宜入力のビットをマスクすれば基本的に何ビットでも共通に使用できる。"