(57)【特許請求の範囲】
【請求項１】
誤り訂正の対象となるペイロードをペイロード領域に格納し、ペイロードの誤り訂正に用いられるパリティデータをパリティ領域に格納するメモリ装置を制御するメモリ制御装置であって、
ペイロードのビット数のパリティデータのビット数に対する比をペイロード／パリティ比として入力するペイロード／パリティ比入力部と、
ペイロードのビット数とパリティデータのビット数との合計値以上の所定数で前記メモリ装置の領域を分割して得られる複数の分割領域を前記ペイロード／パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類された分割領域の数を、分割比として入力する分割比入力部と、
前記メモリ装置のメモリアドレス長を入力するメモリアドレス長入力部と、
前記ペイロード領域内のメモリアドレスをペイロードアドレスとして入力するペイロードアドレス入力部と、
前記ペイロード／パリティ比入力部により入力されたペイロード／パリティ比と、前記分割比入力部により入力された分割比と、前記メモリアドレス長入力部により入力されたメモリアドレス長と、前記ペイロードアドレス入力部により入力されたペイロードアドレスとを用いて、前記ペイロードアドレスに格納されるペイロードに対応するパリティデータの前記パリティ領域内のメモリアドレスをパリティアドレスとして算出するパリティアドレス算出部とを有することを特徴とするメモリ制御装置。
【請求項２】
前記分割比入力部は、
前記分割比を表すｎ（ｎは自然数）ビットのビット列を分割比ビット列として入力し、
前記メモリアドレス長入力部は、
前記メモリアドレス長を表すｍ（ｍは自然数）ビットのビット列をメモリアドレス長ビット列として入力し、
前記パリティアドレス算出部は、
前記メモリアドレス長ビット列のビット数と前記分割比ビット列のビット数との差である（ｍ−ｎ）ビット分、前記分割比ビット列を左方向にシフトし、
前記ペイロードのビット数が前記パリティデータのデータ長より長ければ前記ペイロード／パリティ比の値に対応するビット数分、前記ペイロードアドレスを右方向にシフトし、前記ペイロードのビット数が前記パリティデータのデータ長より短ければ前記ペイロード／パリティ比の値に対応するビット数分、前記ペイロードアドレスを左方向にシフトし、
シフト後の前記分割比ビット列とシフト後の前記ペイロードアドレスとを加算して、前記パリティアドレスを算出することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記メモリ制御装置は、更に、
ペイロードのメモリアドレスとパリティデータのメモリアドレスを問い合わせ、問い合わせに対して通知されたメモリアドレスに基づき、前記メモリ装置からのペイロード及びパリティデータの読出し及び前記メモリ装置へのペイロード及びパリティデータの書込みの少なくともいずれかを行うシーケンス制御部と、
前記シーケンス制御部からの問い合わせを入力し、前記シーケンス制御部からペイロードのメモリアドレスの問い合わせがあった場合に、前記ペイロードアドレス入力部により入力されたペイロードアドレスを前記シーケンス制御部に通知し、前記シーケンス制御部からパリティデータのメモリアドレスの問い合わせがあった場合に、前記パリティアドレス算出部により算出されたパリティアドレスを前記シーケンス制御部に通知するアドレス通知部とを有することを特徴とする請求項１又は２に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ペイロードをペイロード領域に格納し、パリティデータをパリティ領域に格納するメモリ装置を制御する技術に関する。
【背景技術】
【０００２】
ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）のコード長を可変とし、対象アプリケーションに最適なエラー訂正方法が採用できるシステムが開示されている（例えば、特許文献１及び特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１３１９５４号公報
【特許文献２】特開２００８−４１１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
背景技術で記載したように、ＥＣＣコード長を可変長とし、ＥＣＣによって保護されるペイロード（ＥＣＣによって訂正されるデータ）と、保護に必要なコスト（冗長／パリティデータの量）のトレードオフに対し柔軟に対応可能とし、同じシステム構成であっても、入力されるデータや条件に従って最適なトレードオフポイントを設定できるシステムが提案されている。
【０００５】
特許文献１では、単一のメモリをソフトウェア（以下、Ｓ／Ｗとも表記する）で仮想的に２つの領域に分け、選択したＥＣＣアルゴリズムに従って、単一のメモリ内におけるペイロード領域とパリティ領域の割合を可変にする方法が開示されている。
また、特許文献２では、メモリセルアレイ内のデータメモリセルアレイとパリティメモリセルアレイを、複数のＥＣＣのコード長に対応した構成にし、書き込みデータからパリティを生成する入力側パリティ生成回路と、読み出しデータからパリティを生成する出力側パリティ生成回路と、読み出しパリティビットと生成パリティビットから誤りビットを示すシンドロームビットを生成するシンドローム生成回路とを、複数のＥＣＣのコード長に応じて切り替え可能な構成とすることが開示されている。
【０００６】
従来技術では以上のように構成しているので、特許文献１のように一連の処理をＳ／Ｗで行う場合は、ＥＣＣ計算、およびペイロードとパリティを格納するアドレス計算など、複雑な計算をＳ／Ｗで行う必要があるため処理に時間がかかる。
また、特許文献２のようにハードウェア（以下、Ｈ／Ｗとも表記する）で構成する場合、Ｓ／Ｗと比較して高速に処理できるものの、ペイロード、パリティを配置する領域はＨ／Ｗで固定となるため、例えば、ペイロードに対して、パリティが極端に少なくてもよい場合にパリティ領域として準備したメモリが全て使われることは無く、Ｈ／Ｗ的な無駄が生じていた。
【０００７】
この発明は、上記のような課題を解決することを主な目的の一つとしており、Ｈ／Ｗの無駄が生じることがなく、高速に処理可能なメモリ制御装置を実現することを主な目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るメモリ制御装置は、
誤り訂正の対象となるペイロードをペイロード領域に格納し、ペイロードの誤り訂正に用いられるパリティデータをパリティ領域に格納するメモリ装置を制御するメモリ制御装置であって、
ペイロードのビット数のパリティデータのビット数に対する比をペイロード／パリティ比として入力するペイロード／パリティ比入力部と、
ペイロードのビット数とパリティデータのビット数との合計値以上の所定数で前記メモリ装置の領域を分割して得られる複数の分割領域を前記ペイロード／パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類された分割領域の数を、分割比として入力する分割比入力部と、
前記メモリ装置のメモリアドレス長を入力するメモリアドレス長入力部と、
前記ペイロード領域内のメモリアドレスをペイロードアドレスとして入力するペイロードアドレス入力部と、
前記ペイロード／パリティ比入力部により入力されたペイロード／パリティ比と、前記分割比入力部により入力された分割比と、前記メモリアドレス長入力部により入力されたメモリアドレス長と、前記ペイロードアドレス入力部により入力されたペイロードアドレスとを用いて、前記ペイロードアドレスに格納されるペイロードに対応するパリティデータの前記パリティ領域内のメモリアドレスをパリティアドレスとして算出するパリティアドレス算出部とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ペイロードとパリティデータとのデータ長比の変化や、メモリ装置のサイズの変化に対して、３つのパラメータ（ペイロード／パリティ比、メモリアドレス長、分割比）を変更することで対応可能であり、分割比の設定を適切に行えば、Ｈ／Ｗの無駄が生じることがない。また、制御は全てＨ／Ｗで行うことができるので、高速な処理を実現できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るメモリ制御装置の構成例を示す図。
【図２】実施の形態１に係るペイロード／パリティ領域アドレス計算部の構成例を示す図。
【図３】実施の形態１に係る６ビットで表現できるペイロード領域とパリティ領域の分割比を示す図。
【図４】実施の形態１に係るペイロード領域とパリティ領域の例を示す図。
【図５】実施の形態１に係るライト時タイミングチャート図。
【図６】実施の形態１に係るリード時タイミングチャート図。
【図７】実施の形態１に係るリードモディファイライト時タイミングチャート図。
【図８】実施の形態１に係るリードモディファイライトの概要を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
本実施の形態は、単一のメモリ装置内にペイロードとパリティデータを格納するためのアドレス計算を行うアドレス計算部と、メモリに対してリード／ライトするための制御信号の制御を行うシーケンス制御部とを備えたメモリ制御装置を説明する。
より詳細には、全ての制御をＨ／Ｗによって行うことで高速に処理可能とし、また、アドレス計算をメモリアドレス長と分割比とペイロード／パリティ比という３つのパラメータで行い、単一のメモリ領域に対して、分割比が表現できる最大の自然数の範囲内で任意の割合で２つの領域に分割し、ペイロードとパリティデータを別々に単一メモリ内に格納できるため、Ｈ／Ｗ的な無駄が生じることのないメモリ制御装置を説明する。
【００１２】
図１は、本実施の形態１に係るメモリ制御装置等の構成例を示す。
１０００は、本実施の形態に係るメモリ制御装置である。
メモリ制御装置１０００は、メモリ装置である実メモリ００４とＥＣＣを計算するＥＣＣ計算部００３に接続されている。
【００１３】
メモリ制御装置１０００において、ペイロード／パリティ領域アドレス計算部００１は、メモリアドレス１０１と、メモリアドレス長１０２、分割比１０３、ペイロード／パリティ比１０４、ペイロード／パリティ選択信号１０５を入力とし、ペイロード／パリティデータを格納する実メモリ００４のアドレス１０６を出力する。
シーケンス制御部００２は、アドレス１０６、コマンド１０７、ライトデータ１０８、パリティデータ１０９を入力とし、実メモリ００４への制御信号、実メモリアドレス１１１、実メモリコマンド１１２、実メモリライトデータ１１３を出力する。
また、実メモリリードデータ１１０を入力とし、内部でこれをペイロードとパリティデータを別々にバッファリングして、リードデータ（ペイロード）１１４とリードデータ（パリティ）１１５を出力する。
【００１４】
ＥＣＣ計算部００３は、ライトデータ１０８を入力とし、パリティデータ１０９を生成する。
また、リードデータ（ペイロード）１１４とリードデータ（パリティ）１１５を入力とし、ＥＣＣ実施後のリードデータ１１６を出力する。
【００１５】
実メモリ００４は、図４に例示するように、ペイロード領域とパリティ領域に区分されており、ペイロードをペイロード領域に格納し、パリティデータをパリティ領域に格納する。
【００１６】
なお、メモリアドレス長１０２、分割比１０３、ペイロード／パリティ比１０４は、基本的に固定値である。
これらパラメータ値は、ＥＣＣアルゴリズムや、実メモリ００４の容量に併せて変更するものであり、ＥＣＣアルゴリズム、メモリ容量が変更されない限り、変更されない。
例えば、システムの起動時に一度設定され、その後は変更されない。
【００１７】
次に、ペイロード／パリティ領域アドレス計算部００１の詳細な構成を図２に示す。
以降説明を簡単にするため、本実施の形態では、メモリアドレスを３２ビットの信号線で入力し、分割比を６ビットの信号線で入力し、メモリアドレス長を２０ビットの信号線で入力する。
これは説明を簡単にするためであり、構成を限定するものではない。
【００１８】
ペイロードアドレス入力部１２１は、メモリアドレス１０１を表すビット列とメモリアドレス長１０２を入力し、メモリアドレス１０１をメモリアドレス長１０２が示すビット数分だけ有効にし、残りを“０”にマスクする。即ち、本実施の形態を例とすれば、メモリアドレス３２ビットのうち、下位２０ビットが有効になり、上位１２ビットは“０”にマスクされる。
メモリアドレス１０１は、リード対象又はライト対象のペイロードのアドレス（実メモリ００４のペイロード領域内のアドレス）である。
【００１９】
メモリアドレス長入力部１２２は、メモリアドレス長１０２を表すビット列を入力する。
メモリアドレス長１０２は実メモリ００４のアドレス長である。
【００２０】
分割比入力部１２３は、分割比１０３を表すビット列を入力する。
なお、分割比１０３の詳細は後述する。
【００２１】
ペイロード／パリティ比入力部１２４は、ペイロード／パリティ比１０４を入力する。
ペイロード／パリティ比１０４は、ペイロードのデータ長のパリティデータのデータ長に対する比を２を底とする対数をとって表現したものである。
例えば、データ長３２ビットのペイロードに対し、データ長８ビットのパリティデータであれば、ペイロード／パリティ比１０４はｌｏｇ２３２／８＝「２」となる。
【００２２】
第１のシフト部１２５は、メモリアドレス１０１を表すビット列をペイロード／パリティ比１０４に応じて右シフト又は左シフトする。
より具体的には、第１のシフト部１２５は、ペイロードのデータ長がパリティデータのデータ長より長ければ（ペイロード＞パリティ）、ペイロード／パリティ比１０４の値に対応するビット数分、メモリアドレス１０１を表すビット列を右方向にシフトする。
また、ペイロードのデータ長がパリティデータのデータ長より短かければ（ペイロード＜パリティ）、ペイロード／パリティ比１０４の値に対応するビット数分、メモリアドレス１０１を表すビット列を左方向にシフトする。
例えば、データ長３２ビットのペイロードに対し、データ長８ビットのパリティデータであれば、ペイロード／パリティ比１０４は「２」であり、第１のシフト部１２５は、メモリアドレス１０１を表すビット列を２ビット分右シフトする。
逆に、８ビットのペイロードに対し、３２ビットのパリティデータであれば、ペイロード／パリティ比１０４は「−２」であり、第１のシフト部１２５は、メモリアドレス１０１を表すビット列を２ビット分左シフトする。
なお、ペイロード／パリティが「２．２」のように整数でない場合は、整数部分のビット数分のシフトを行う。
つまり、ペイロード／パリティ比１０４が「２．２」の場合は、２ビット分右シフトする。
また、ペイロードのデータ長とパリティデータのデータ長が同数であれば（ペイロード＝パリティ）、いずれの方向にもシフトしない。
【００２３】
シフト量計算部１２７は、メモリアドレス長１０２のビット列のビット数（ｍビットとする）と分割比１０３を表すビット列のビット数（ｎビットとする）との差（（ｍ−ｎ）ビット）を求める。
なお、ｍ及びｎはともに自然数である。
【００２４】
第２のシフト部１２６は、分割比１０３を表すビット列を、シフト量計算部１２７により算出された（ｍ−ｎ）ビット分左方向にシフトする。
【００２５】
加算器１２８は、第１のシフト部１２５によりシフト演算された後のメモリアドレス１０１を表すビット列と、第２のシフト部１２６によりシフト演算された後の分割比１０３を表すビット列とを加算する。
第２のシフト部１２６による加算結果が、メモリアドレス１０１で特定されるペイロードに対応するパリティデータのアドレス（実メモリ００４のパリティ領域内のアドレス）である。
つまり、第一のシフト部１２５より出力される値はパリティデータを格納するメモリアドレスの下位部分を、第二のシフト部１２６から出力される値はパリティデータを格納するアドレスのメモリ先頭アドレスからのオフセットを表している。よって、これらを加算すれば、パリティデータのアドレスを算出できる事となる。
【００２６】
セレクタ１２９は、ペイロード／パリティ選択信号１０５に基づいて、シーケンス制御部００２に出力するアドレス１０６を選択する。
つまり、ペイロード／パリティ選択信号１０５でペイロードが指定されている場合は、メモリアドレス１０１をそのままアドレス１０６として出力する。
一方、ペイロード／パリティ選択信号１０５でパリティが指定されている場合は、加算器１２８により生成されたパリティデータのアドレスをアドレス１０６として出力する。
【００２７】
アドレス１０６は、メモリアドレス１０１と同じサイズ（実施の形態１では３２ビット）である。
アドレス１０６の３２ビットのうち、メモリアドレス長（実施の形態１では２０ビット）の中にパリティデータを収めるアドレスが含まれる。
実メモリアドレス１１１は、アドレス１０６の３２ビットのうち有効な２０ビット（実メモリアドレス）を示したもので、実使用上ではこの２０ビットが実メモリのアドレス線につながる。
残りの１２ビットは接続しない。
【００２８】
なお、図２の構成において、第１のシフト部１２５、第２のシフト部１２６、シフト量計算部及び１２７加算器１２８は、パリティアドレス算出部に相当し、セレクタ１２９はアドレス通知部に相当する。
【００２９】
次に、分割比１０３について説明する。
分割比１０３はペイロード／パリティデータを実メモリ００４上でどのような割合で格納するかを表す。
換言すると、分割比１０３は、ペイロードのビット数とパリティデータのビット数との合計値以上の所定数で実メモリ００４の領域を分割して得られる複数の分割領域をペイロード／パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類された分割領域の数である。
具体的な表現方法としては、分割比が２進数で表現可能な最大の自然数、６ビットであれば１１＿１１１１（２進）＝６４（１０進）、でメモリを分割し、分割した領域のうちペイロードが使用する領域の数を表現する。
この表現方法によれば、実メモリ内のペイロード領域とパリティ領域の比は、次の式（１）で表される。
ペイロード領域：パリティ領域＝ペイロード使用領域数：６４−ペイロード使用領域数・・・（１）
従って、例えばＥＣＣのアルゴリズムが３２ビットのペイロードに対し、８ビットのパリティを必要とする場合、この比に最も近くなる分割比５１：１３＝３．９２：１となるように分割比を１１＿００１１（２進数）＝５１（１０進数）に設定する。
【００３０】
以上のように構成しているため、本実施の形態の場合、分割比は０から、分割比（６ビット）が表現可能最大の自然数、２６＝６４の間を自由に動かすことができ、ＥＣＣのアルゴリズムが変わりペイロードとパリティの比率が変わっても柔軟に対応でき、Ｈ／Ｗ的な無駄を削減することができる。
図３に分割比６ビットで表現できるペイロード領域とパリティ領域の分割比率を示す。
【００３１】
次にアドレス計算の方法について説明する。
【００３２】
計算に用いるメモリアドレス長１０２は、本メモリ制御装置１０００に繋がる実メモリ００４のアドレス長を表したものであり、例えば容量５１２ｋＢのメモリであれば、１９（１０進表記）、１ＭＢのメモリであれば２０（１０進表記）である。
また、ペイロード／パリティ選択信号１０５は、ペイロード／パリティデータどちらの領域を示すアドレスを出力するかを示す信号である。
この信号がペイロードアドレスを出力するように指示していれば、メモリアドレス１０１をそのまま出力する。
パリティアドレスを出力するよう指示していれば、メモリアドレス１０１から、ペイロード／パリティ比１０４、分割比１０３、メモリアドレス長１０２を計算のパラメータとし、パリティアドレスを生成する。
【００３３】
本実施の形態１におけるパリティアドレスの計算は、図２に示すように、メモリアドレス１０１、メモリアドレス長１０２、分割比１０３、ペイロード／パリティ比１０４を用い、論理シフトと加算器のみで構成でき、小回路規模で実現可能である。
【００３４】
メモリアドレス長１０２から計算される分割比１０３のシフト量は、前述したように、分割比１０３を示すｎビットのビット列と、ｍビットで示されるメモリアドレス長１０２との差である（ｍ−ｎ）ビットとなる。
そして、分割比１０３を示すｎビットのビット列を（ｍ−ｎ）ビット分左シフトする。
つまり、分割比１０３を示すｎビットのビット列を、ｍビットで示されるメモリアドレス長１０２から計算される入力メモリアドレス１０１の最上位ビット位置にシフトする。
本実施の形態では、ｍ＝２０、ｎ＝６であるから、シフト量は１４ビットとなり、分割比１０３を示すビット列を１４ビット左シフトする。
また、前述したように、メモリアドレス１０１を表すビット列をペイロード／パリティ比１０４に応じて右シフト又は左シフトした結果と、左シフト後の分割比１０３を表すビット列とを加算して、パリティアドレスを得る。
【００３５】
シーケンス制御部００２は、アドレス１０６、コマンド１０７、ライトデータ１０８を入力とし、実メモリ００４を制御するための制御信号実メモリアドレス１１１、実メモリコマンド１１２、実メモリライトデータ１１３を出力する。
実メモリコマンド１１２は、本実施の形態ではメモリ制御の一般的な制御信号を含むものとする。
メモリ制御信号としては、例えば、メモリに対するコマンドが有効であることを示すチップセレクト信号、リード／ライトを指示するリード／ライト信号、リード／ライト位置を指示するバイトコントロールなどである。
これら制御信号を、接続されるメモリの性能や規格／仕様に合わせて、各信号のアサート／ネゲート期間、および順序を制御し、メモリへのリード／ライトを可能する。
また、本実施の形態ではペイロードとパリティデータを同一メモリに格納するため、少なくとも２回のメモリアクセス（ペイロードのリード／ライト、パリティのリード／ライト）が必要である。
本実施の形態では、１回目のアクセスでペイロードのリード／ライトを行い、２回目のアクセスでパリティデータのリード／ライトを行う。
この一連のシーケンス制御をシーケンス制御部００２で行う。
なお、本実施の形態ではペイロードのリード／ライトを１回目、パリティデータのリード／ライトを２回目としたが、この順序を逆にしてもよい。
【００３６】
また、ＥＣＣの計算は適用するアルゴリズムに従って、決まった長さのペイロードに対して、決まった長さのパリティが必要となる。
従って、決まった長さより短い、または長いペイロードをメモリに書き込みたい場合、特別な処理が必要となる。
例えば、３２ビット（４バイト）のペイロードに対して８ビット（１バイト）のパリティが必要となるＥＣＣアルゴリズムを適用している場合において、図８に示すように、あるアドレスに最初４バイトで書き込みを行った後、同じアドレスの１バイトのペイロードだけ書き換える場合を考える。
最初のアクセス（図８（ａ））では４バイトのペイロードが有るので、パリティは問題なく生成できる。
２番目のアクセス（図８（ｂ））では、同じアドレスの１バイト分だけ書き換えたいが、パリティはすでに残り３バイトの冗長データを含む形で生成されているので、残りの３バイトのペイロードが無いと正しいパリティを生成できない。
そこで、この残りの３バイトのペイロード（とパリティ）をライトに先んじて読み出す。
そして、リードした３バイトのペイロードを８ビットのライトデータ（ペイロード）とマージして３２ビットとしてからＥＣＣを計算する。
このようなリードモディファイライト処理も、シーケンス制御部００２で行う。
【００３７】
ＥＣＣ計算部００３は、ライトデータ１０８を入力とし、ＥＣＣのアルゴリズムに従ってパリティデータ１０９を算出する。
また、シーケンス制御部００２から、リードデータ（ペイロード）１１４と、リードデータ（パリティ）１１５を入力し、リードデータ（パリティ）１１５を用いて、リードデータ（ペイロード）１１４に誤りがある場合は、訂正し、リードデータ１１６として出力する。
【００３８】
以上のような構成をとれば、ＥＣＣのアルゴリズムが変わったことによるペイロードやパリティデータの割合の変化や、実メモリのサイズが変化しても、３つのパラメータ（メモリアドレス長と分割比、ペイロード／パリティ比）をこれに合わせて変更するだけでよく、また、ペイロード、パリティデータの格納は同一のメモリ内を領域分割して格納し、また分割の割合は分割比が表現できる最大の自然数の範囲内で任意に設定できるため、分割比の設定を適切に行えば、Ｈ／Ｗの無駄が生じることがない。
また、制御は全てＨ／Ｗで行うため、高速に処理可能である。
さらに、ペイロード／パリティ領域アドレス計算は、図２で示したように、論理演算とシフタだけで構成できるため、回路規模を小さくできる。
【００３９】
次に、ライト時の動作、リード時の動作、リードモディファイライト時の動作を説明する。
【００４０】
ライト時のタイミングチャートを、図５に示す。
ライト時の動作は、以下の（１）と（２）で構成される。
【００４１】
（１）まず、メモリ制御装置１０００に対するライトリクエスト（コマンド１０７）がシーケンス制御部００２に入力される。
シーケンス制御部００２は、ライトであることを認識したら、まずは、ペイロードデータをメモリに書きこむため、ペイロード／パリティ領域アドレス計算部００１に対して、ペイロード／パリティ選択信号１０５を出力してペイロードを選択することを知らせる。
ペイロード／パリティ領域アドレス計算部００１は、この知らせを受け取ると、ペイロードデータの書き込みアドレス（メモリアドレス１０１そのもの）をアドレス１０６としてシーケンス制御部００２に返す。
このアドレス１０６に従って、シーケンス制御部００２は実メモリ００４にペイロードデータのライト動作を行う。
（２）上記の（１）のライトが完了したら、次にシーケンス制御部００２はペイロード／パリティ領域アドレス計算部００１にペイロード／パリティ選択信号１０５を出力してパリティデータを選択することを知らせる。
ペイロード／パリティ領域アドレス計算部００１は、この知らせを受け取ると、上記した手順にてパリティデータの書き込みアドレスを生成し、パリティデータの書き込みアドレスをアドレス１０６としてシーケンス制御部００２に返す。
このアドレス１０６に従って、シーケンス制御部００２は実メモリ００４にパリティデータ１０９のライト動作を行う。
【００４２】
次に、リード時のタイミングチャートを、図６に示す。
ライト時の動作は、以下の（１）と（２）と（３）で構成される。
【００４３】
（１）まず、メモリ制御装置１０００に対するリードリクエスト（コマンド１０７）がシーケンス制御部００２に入力される。
シーケンス制御部００２は、リードであることを認識したら、まずは、ペイロードデータを実メモリ００４から読み出すため、ペイロード／パリティ領域アドレス計算部００１に対して、ペイロード／パリティ選択信号１０５を出力してペイロードを選択することを知らせる。
ペイロード／パリティ領域アドレス計算部００１は、この知らせを受け取ると、ペイロードデータの読み出しアドレス（メモリアドレス１０１そのもの）をアドレス１０６としてシーケンス制御部００２に返す。
このアドレス１０６に従って、シーケンス制御部００２は実メモリ００４にペイロードデータのリード動作を行う。
（２）上記（１）のリードが完了したら、次にシーケンス制御部００２はペイロード／パリティ領域アドレス計算部００１にペイロード／パリティ選択信号１０５を出力してパリティを選択することを知らせる。
ペイロード／パリティ領域アドレス計算部００１は、この知らせを受け取ると、上記した手順にてパリティデータの読み出しアドレスを生成し、パリティデータの読み出しアドレスをアドレス１０６としてシーケンス制御部００２に返す。
このアドレス１０６に従って、シーケンス制御部００２は実メモリ００４にパリティデータのリード動作を行う。
（３）最後に、ＥＣＣ計算部００３が、リードデータ（ペイロード）１１４とリードデータ（パリティ）１１５からＥＣＣ計算を行って、計算結果をリードデータ１１６として出力する。
【００４４】
次に、リードモディファイライト時のタイミングチャートを、図７に示す。
リードモディファイライト時の動作は、以下の（１）〜（５）で構成される。
【００４５】
（１）シーケンス制御部００２は、図６を参照して説明したペイロードのリード動作をマージ対象のペイロードに対して行う。
（２）同様に、シーケンス制御部００２は、図６を参照して説明したパリティデータのリード動作をマージ対象のペイロードのパリティデータに対して行う。
（３）ＥＣＣ計算部００３が、ライトデータ１０８と上記の（１）で読み出したペイロードとをマージし、上記の（２）で読み出したパリティデータを用いて、新たなパリティデータを生成する。
（４）次に、シーケンス制御部００２は、図５を参照して説明したペイロードのライト動作をマージ後のペイロードに対して行う。
（５）同様に、シーケンス制御部００２は、図５を参照して説明したパリティのライト動作を新たなパリティデータに対して行う。
【００４６】
以上、本実施の形態では、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ  ｍｅｍｏｒｙ）を計算するＥＣＣ計算部と、ＥＣＣのペイロードとパリティビットを格納するメモリアドレスを計算するアドレス計算部と、メモリに対してリード／ライトするための制御信号の制御を行うシーケンス制御部を備えたメモリ制御装置を説明した。
【００４７】
また、前記アドレス計算部が、メモリアドレス長と分割比をパラメータとし、ペイロードとパリティデータを格納するメモリアドレスを計算することを説明した。
【００４８】
また、前記アドレス計算部が、メモリアドレスと、ペイロード／パリティ領域のどちらのアドレスを出力するかを指示するペイロード／パリティ選択信号と、分割比を示すｎ（ｎは自然数）ビットのビット列と、ｍ（ｍは自然数）ビットで示されるメモリアドレス長とペイロード／パリティ比を入力とし、ペイロード／パリティ選択信号がペイロード領域のアドレス出力を指示する場合は入力されたメモリアドレスをそのまま出力し、パリティ領域のアドレス出力を指示する場合は、分割比を示すｎビットのビット列を、ｍビットで示されるメモリアドレス長から計算される入力メモリアドレスの最上位ビット位置にシフトし、このシフトしたｎビットのビット列と、ペイロード／パリティ比で示されるビット数分右シフトしたメモリアドレスとを加算することでパリティ領域のメモリアドレスを計算することを説明した。
【符号の説明】
【００４９】
００１  ペイロード／パリティ領域アドレス計算部、００２  シーケンス制御部、００３  ＥＣＣ計算部、００４  実メモリ、１０１  メモリアドレス、１０２  メモリアドレス長、１０３  分割比、１０４  ペイロード／パリティ比、１０５  ペイロード／パリティ選択信号、１０６  アドレス、１０７  コマンド、１０８  ライトデータ、１０９  パリティデータ、１１０  実メモリリードデータ、１１１  実メモリアドレス、１１２  実メモリコマンド、１１３  実メモリライトデータ、１１４  リードデータ（ペイロード）、１１５  リードデータ（パリティ）、１１６  リードデータ、１２１  ペイロードアドレス入力部、１２２  メモリアドレス長入力部、１２３  分割比入力部、１２４  ペイロード／パリティ比入力部、１２５  第１のシフト部、１２６  第２のシフト部、１２７  シフト量計算部、１２８  加算器、１２９  セレクタ、１０００  メモリ制御装置。
【図１】
0005570477.tif 000002
【図２】
0005570477.tif 000003
【図３】
0005570477.tif 000004
【図４】
0005570477.tif 000005
【図５】
0005570477.tif 000006
【図６】
0005570477.tif 000007
【図７】
0005570477.tif 000008
【図８】
0005570477.tif 000009