説明

メモリ制御装置

【課題】H/Wの無駄が生じることがなく、高速に処理可能なメモリ制御装置を実現する。
【解決手段】メモリ制御装置1000は、ペイロードをペイロード領域に格納し、パリティデータをパリティ領域に格納する実メモリ004を制御する。ペイロード/パリティ領域アドレス計算部001は、ペイロードとパリティデータのビット数の比をペイロード/パリティ比104として入力し、実メモリ004の領域をペイロード/パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類される領域の数を分割比103として入力し、実メモリ004のメモリアドレス長102を入力し、ペイロードのメモリアドレス101を入力し、これらを用いて、当該ペイロードに対応するパリティデータのパリティ領域でのメモリアドレスを算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ペイロードをペイロード領域に格納し、パリティデータをパリティ領域に格納するメモリ装置を制御する技術に関する。
【背景技術】
【0002】
ECC(Error Correcting Code)のコード長を可変とし、対象アプリケーションに最適なエラー訂正方法が採用できるシステムが開示されている(例えば、特許文献1及び特許文献2)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−131954号公報
【特許文献2】特開2008−41171号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
背景技術で記載したように、ECCコード長を可変長とし、ECCによって保護されるペイロード(ECCによって訂正されるデータ)と、保護に必要なコスト(冗長/パリティデータの量)のトレードオフに対し柔軟に対応可能とし、同じシステム構成であっても、入力されるデータや条件に従って最適なトレードオフポイントを設定できるシステムが提案されている。
【0005】
特許文献1では、単一のメモリをソフトウェア(以下、S/Wとも表記する)で仮想的に2つの領域に分け、選択したECCアルゴリズムに従って、単一のメモリ内におけるペイロード領域とパリティ領域の割合を可変にする方法が開示されている。
また、特許文献2では、メモリセルアレイ内のデータメモリセルアレイとパリティメモリセルアレイを、複数のECCのコード長に対応した構成にし、書き込みデータからパリティを生成する入力側パリティ生成回路と、読み出しデータからパリティを生成する出力側パリティ生成回路と、読み出しパリティビットと生成パリティビットから誤りビットを示すシンドロームビットを生成するシンドローム生成回路とを、複数のECCのコード長に応じて切り替え可能な構成とすることが開示されている。
【0006】
従来技術では以上のように構成しているので、特許文献1のように一連の処理をS/Wで行う場合は、ECC計算、およびペイロードとパリティを格納するアドレス計算など、複雑な計算をS/Wで行う必要があるため処理に時間がかかる。
また、特許文献2のようにハードウェア(以下、H/Wとも表記する)で構成する場合、S/Wと比較して高速に処理できるものの、ペイロード、パリティを配置する領域はH/Wで固定となるため、例えば、ペイロードに対して、パリティが極端に少なくてもよい場合にパリティ領域として準備したメモリが全て使われることは無く、H/W的な無駄が生じていた。
【0007】
この発明は、上記のような課題を解決することを主な目的の一つとしており、H/Wの無駄が生じることがなく、高速に処理可能なメモリ制御装置を実現することを主な目的とする。
【課題を解決するための手段】
【0008】
本発明に係るメモリ制御装置は、
誤り訂正の対象となるペイロードをペイロード領域に格納し、ペイロードの誤り訂正に用いられるパリティデータをパリティ領域に格納するメモリ装置を制御するメモリ制御装置であって、
ペイロードのビット数のパリティデータのビット数に対する比をペイロード/パリティ比として入力するペイロード/パリティ比入力部と、
ペイロードのビット数とパリティデータのビット数との合計値以上の所定数で前記メモリ装置の領域を分割して得られる複数の分割領域を前記ペイロード/パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類された分割領域の数を、分割比として入力する分割比入力部と、
前記メモリ装置のメモリアドレス長を入力するメモリアドレス長入力部と、
前記ペイロード領域内のメモリアドレスをペイロードアドレスとして入力するペイロードアドレス入力部と、
前記ペイロード/パリティ比入力部により入力されたペイロード/パリティ比と、前記分割比入力部により入力された分割比と、前記メモリアドレス長入力部により入力されたメモリアドレス長と、前記ペイロードアドレス入力部により入力されたペイロードアドレスとを用いて、前記ペイロードアドレスに格納されるペイロードに対応するパリティデータの前記パリティ領域内のメモリアドレスをパリティアドレスとして算出するパリティアドレス算出部とを有することを特徴とする。
【発明の効果】
【0009】
本発明によれば、ペイロードとパリティデータとのデータ長比の変化や、メモリ装置のサイズの変化に対して、3つのパラメータ(ペイロード/パリティ比、メモリアドレス長、分割比)を変更することで対応可能であり、分割比の設定を適切に行えば、H/Wの無駄が生じることがない。また、制御は全てH/Wで行うことができるので、高速な処理を実現できる。
【図面の簡単な説明】
【0010】
【図1】実施の形態1に係るメモリ制御装置の構成例を示す図。
【図2】実施の形態1に係るペイロード/パリティ領域アドレス計算部の構成例を示す図。
【図3】実施の形態1に係る6ビットで表現できるペイロード領域とパリティ領域の分割比を示す図。
【図4】実施の形態1に係るペイロード領域とパリティ領域の例を示す図。
【図5】実施の形態1に係るライト時タイミングチャート図。
【図6】実施の形態1に係るリード時タイミングチャート図。
【図7】実施の形態1に係るリードモディファイライト時タイミングチャート図。
【図8】実施の形態1に係るリードモディファイライトの概要を示す図。
【発明を実施するための形態】
【0011】
実施の形態1.
本実施の形態は、単一のメモリ装置内にペイロードとパリティデータを格納するためのアドレス計算を行うアドレス計算部と、メモリに対してリード/ライトするための制御信号の制御を行うシーケンス制御部とを備えたメモリ制御装置を説明する。
より詳細には、全ての制御をH/Wによって行うことで高速に処理可能とし、また、アドレス計算をメモリアドレス長と分割比とペイロード/パリティ比という3つのパラメータで行い、単一のメモリ領域に対して、分割比が表現できる最大の自然数の範囲内で任意の割合で2つの領域に分割し、ペイロードとパリティデータを別々に単一メモリ内に格納できるため、H/W的な無駄が生じることのないメモリ制御装置を説明する。
【0012】
図1は、本実施の形態1に係るメモリ制御装置等の構成例を示す。
1000は、本実施の形態に係るメモリ制御装置である。
メモリ制御装置1000は、メモリ装置である実メモリ004とECCを計算するECC計算部003に接続されている。
【0013】
メモリ制御装置1000において、ペイロード/パリティ領域アドレス計算部001は、メモリアドレス101と、メモリアドレス長102、分割比103、ペイロード/パリティ比104、ペイロード/パリティ選択信号105を入力とし、ペイロード/パリティデータを格納する実メモリ004のアドレス106を出力する。
シーケンス制御部002は、アドレス106、コマンド107、ライトデータ108、パリティデータ109を入力とし、実メモリ004への制御信号、実メモリアドレス111、実メモリコマンド112、実メモリライトデータ113を出力する。
また、実メモリリードデータ110を入力とし、内部でこれをペイロードとパリティデータを別々にバッファリングして、リードデータ(ペイロード)114とリードデータ(パリティ)115を出力する。
【0014】
ECC計算部003は、ライトデータ108を入力とし、パリティデータ109を生成する。
また、リードデータ(ペイロード)114とリードデータ(パリティ)115を入力とし、ECC実施後のリードデータ116を出力する。
【0015】
実メモリ004は、図4に例示するように、ペイロード領域とパリティ領域に区分されており、ペイロードをペイロード領域に格納し、パリティデータをパリティ領域に格納する。
【0016】
なお、メモリアドレス長102、分割比103、ペイロード/パリティ比104は、基本的に固定値である。
これらパラメータ値は、ECCアルゴリズムや、実メモリ004の容量に併せて変更するものであり、ECCアルゴリズム、メモリ容量が変更されない限り、変更されない。
例えば、システムの起動時に一度設定され、その後は変更されない。
【0017】
次に、ペイロード/パリティ領域アドレス計算部001の詳細な構成を図2に示す。
以降説明を簡単にするため、本実施の形態では、メモリアドレスを32ビットの信号線で入力し、分割比を6ビットの信号線で入力し、メモリアドレス長を20ビットの信号線で入力する。
これは説明を簡単にするためであり、構成を限定するものではない。
【0018】
ペイロードアドレス入力部121は、メモリアドレス101を表すビット列とメモリアドレス長102を入力し、メモリアドレス101をメモリアドレス長102が示すビット数分だけ有効にし、残りを“0”にマスクする。即ち、本実施の形態を例とすれば、メモリアドレス32ビットのうち、下位20ビットが有効になり、上位12ビットは“0”にマスクされる。
メモリアドレス101は、リード対象又はライト対象のペイロードのアドレス(実メモリ004のペイロード領域内のアドレス)である。
【0019】
メモリアドレス長入力部122は、メモリアドレス長102を表すビット列を入力する。
メモリアドレス長102は実メモリ004のアドレス長である。
【0020】
分割比入力部123は、分割比103を表すビット列を入力する。
なお、分割比103の詳細は後述する。
【0021】
ペイロード/パリティ比入力部124は、ペイロード/パリティ比104を入力する。
ペイロード/パリティ比104は、ペイロードのデータ長のパリティデータのデータ長に対する比を2を底とする対数をとって表現したものである。
例えば、データ長32ビットのペイロードに対し、データ長8ビットのパリティデータであれば、ペイロード/パリティ比104はlog32/8=「2」となる。
【0022】
第1のシフト部125は、メモリアドレス101を表すビット列をペイロード/パリティ比104に応じて右シフト又は左シフトする。
より具体的には、第1のシフト部125は、ペイロードのデータ長がパリティデータのデータ長より長ければ(ペイロード>パリティ)、ペイロード/パリティ比104の値に対応するビット数分、メモリアドレス101を表すビット列を右方向にシフトする。
また、ペイロードのデータ長がパリティデータのデータ長より短かければ(ペイロード<パリティ)、ペイロード/パリティ比104の値に対応するビット数分、メモリアドレス101を表すビット列を左方向にシフトする。
例えば、データ長32ビットのペイロードに対し、データ長8ビットのパリティデータであれば、ペイロード/パリティ比104は「2」であり、第1のシフト部125は、メモリアドレス101を表すビット列を2ビット分右シフトする。
逆に、8ビットのペイロードに対し、32ビットのパリティデータであれば、ペイロード/パリティ比104は「−2」であり、第1のシフト部125は、メモリアドレス101を表すビット列を2ビット分左シフトする。
なお、ペイロード/パリティが「2.2」のように整数でない場合は、整数部分のビット数分のシフトを行う。
つまり、ペイロード/パリティ比104が「2.2」の場合は、2ビット分右シフトする。
また、ペイロードのデータ長とパリティデータのデータ長が同数であれば(ペイロード=パリティ)、いずれの方向にもシフトしない。
【0023】
シフト量計算部127は、メモリアドレス長102のビット列のビット数(mビットとする)と分割比103を表すビット列のビット数(nビットとする)との差((m−n)ビット)を求める。
なお、m及びnはともに自然数である。
【0024】
第2のシフト部126は、分割比103を表すビット列を、シフト量計算部127により算出された(m−n)ビット分左方向にシフトする。
【0025】
加算器128は、第1のシフト部125によりシフト演算された後のメモリアドレス101を表すビット列と、第2のシフト部126によりシフト演算された後の分割比103を表すビット列とを加算する。
第2のシフト部126による加算結果が、メモリアドレス101で特定されるペイロードに対応するパリティデータのアドレス(実メモリ004のパリティ領域内のアドレス)である。
つまり、第一のシフト部125より出力される値はパリティデータを格納するメモリアドレスの下位部分を、第二のシフト部126から出力される値はパリティデータを格納するアドレスのメモリ先頭アドレスからのオフセットを表している。よって、これらを加算すれば、パリティデータのアドレスを算出できる事となる。
【0026】
セレクタ129は、ペイロード/パリティ選択信号105に基づいて、シーケンス制御部002に出力するアドレス106を選択する。
つまり、ペイロード/パリティ選択信号105でペイロードが指定されている場合は、メモリアドレス101をそのままアドレス106として出力する。
一方、ペイロード/パリティ選択信号105でパリティが指定されている場合は、加算器128により生成されたパリティデータのアドレスをアドレス106として出力する。
【0027】
アドレス106は、メモリアドレス101と同じサイズ(実施の形態1では32ビット)である。
アドレス106の32ビットのうち、メモリアドレス長(実施の形態1では20ビット)の中にパリティデータを収めるアドレスが含まれる。
実メモリアドレス111は、アドレス106の32ビットのうち有効な20ビット(実メモリアドレス)を示したもので、実使用上ではこの20ビットが実メモリのアドレス線につながる。
残りの12ビットは接続しない。
【0028】
なお、図2の構成において、第1のシフト部125、第2のシフト部126、シフト量計算部及び127加算器128は、パリティアドレス算出部に相当し、セレクタ129はアドレス通知部に相当する。
【0029】
次に、分割比103について説明する。
分割比103はペイロード/パリティデータを実メモリ004上でどのような割合で格納するかを表す。
換言すると、分割比103は、ペイロードのビット数とパリティデータのビット数との合計値以上の所定数で実メモリ004の領域を分割して得られる複数の分割領域をペイロード/パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類された分割領域の数である。
具体的な表現方法としては、分割比が2進数で表現可能な最大の自然数、6ビットであれば11_1111(2進)=64(10進)、でメモリを分割し、分割した領域のうちペイロードが使用する領域の数を表現する。
この表現方法によれば、実メモリ内のペイロード領域とパリティ領域の比は、次の式(1)で表される。
ペイロード領域:パリティ領域=ペイロード使用領域数:64−ペイロード使用領域数・・・(1)
従って、例えばECCのアルゴリズムが32ビットのペイロードに対し、8ビットのパリティを必要とする場合、この比に最も近くなる分割比51:13=3.92:1となるように分割比を11_0011(2進数)=51(10進数)に設定する。
【0030】
以上のように構成しているため、本実施の形態の場合、分割比は0から、分割比(6ビット)が表現可能最大の自然数、2=64の間を自由に動かすことができ、ECCのアルゴリズムが変わりペイロードとパリティの比率が変わっても柔軟に対応でき、H/W的な無駄を削減することができる。
図3に分割比6ビットで表現できるペイロード領域とパリティ領域の分割比率を示す。
【0031】
次にアドレス計算の方法について説明する。
【0032】
計算に用いるメモリアドレス長102は、本メモリ制御装置1000に繋がる実メモリ004のアドレス長を表したものであり、例えば容量512kBのメモリであれば、19(10進表記)、1MBのメモリであれば20(10進表記)である。
また、ペイロード/パリティ選択信号105は、ペイロード/パリティデータどちらの領域を示すアドレスを出力するかを示す信号である。
この信号がペイロードアドレスを出力するように指示していれば、メモリアドレス101をそのまま出力する。
パリティアドレスを出力するよう指示していれば、メモリアドレス101から、ペイロード/パリティ比104、分割比103、メモリアドレス長102を計算のパラメータとし、パリティアドレスを生成する。
【0033】
本実施の形態1におけるパリティアドレスの計算は、図2に示すように、メモリアドレス101、メモリアドレス長102、分割比103、ペイロード/パリティ比104を用い、論理シフトと加算器のみで構成でき、小回路規模で実現可能である。
【0034】
メモリアドレス長102から計算される分割比103のシフト量は、前述したように、分割比103を示すnビットのビット列と、mビットで示されるメモリアドレス長102との差である(m−n)ビットとなる。
そして、分割比103を示すnビットのビット列を(m−n)ビット分左シフトする。
つまり、分割比103を示すnビットのビット列を、mビットで示されるメモリアドレス長102から計算される入力メモリアドレス101の最上位ビット位置にシフトする。
本実施の形態では、m=20、n=6であるから、シフト量は14ビットとなり、分割比103を示すビット列を14ビット左シフトする。
また、前述したように、メモリアドレス101を表すビット列をペイロード/パリティ比104に応じて右シフト又は左シフトした結果と、左シフト後の分割比103を表すビット列とを加算して、パリティアドレスを得る。
【0035】
シーケンス制御部002は、アドレス106、コマンド107、ライトデータ108を入力とし、実メモリ004を制御するための制御信号実メモリアドレス111、実メモリコマンド112、実メモリライトデータ113を出力する。
実メモリコマンド112は、本実施の形態ではメモリ制御の一般的な制御信号を含むものとする。
メモリ制御信号としては、例えば、メモリに対するコマンドが有効であることを示すチップセレクト信号、リード/ライトを指示するリード/ライト信号、リード/ライト位置を指示するバイトコントロールなどである。
これら制御信号を、接続されるメモリの性能や規格/仕様に合わせて、各信号のアサート/ネゲート期間、および順序を制御し、メモリへのリード/ライトを可能する。
また、本実施の形態ではペイロードとパリティデータを同一メモリに格納するため、少なくとも2回のメモリアクセス(ペイロードのリード/ライト、パリティのリード/ライト)が必要である。
本実施の形態では、1回目のアクセスでペイロードのリード/ライトを行い、2回目のアクセスでパリティデータのリード/ライトを行う。
この一連のシーケンス制御をシーケンス制御部002で行う。
なお、本実施の形態ではペイロードのリード/ライトを1回目、パリティデータのリード/ライトを2回目としたが、この順序を逆にしてもよい。
【0036】
また、ECCの計算は適用するアルゴリズムに従って、決まった長さのペイロードに対して、決まった長さのパリティが必要となる。
従って、決まった長さより短い、または長いペイロードをメモリに書き込みたい場合、特別な処理が必要となる。
例えば、32ビット(4バイト)のペイロードに対して8ビット(1バイト)のパリティが必要となるECCアルゴリズムを適用している場合において、図8に示すように、あるアドレスに最初4バイトで書き込みを行った後、同じアドレスの1バイトのペイロードだけ書き換える場合を考える。
最初のアクセス(図8(a))では4バイトのペイロードが有るので、パリティは問題なく生成できる。
2番目のアクセス(図8(b))では、同じアドレスの1バイト分だけ書き換えたいが、パリティはすでに残り3バイトの冗長データを含む形で生成されているので、残りの3バイトのペイロードが無いと正しいパリティを生成できない。
そこで、この残りの3バイトのペイロード(とパリティ)をライトに先んじて読み出す。
そして、リードした3バイトのペイロードを8ビットのライトデータ(ペイロード)とマージして32ビットとしてからECCを計算する。
このようなリードモディファイライト処理も、シーケンス制御部002で行う。
【0037】
ECC計算部003は、ライトデータ108を入力とし、ECCのアルゴリズムに従ってパリティデータ109を算出する。
また、シーケンス制御部002から、リードデータ(ペイロード)114と、リードデータ(パリティ)115を入力し、リードデータ(パリティ)115を用いて、リードデータ(ペイロード)114に誤りがある場合は、訂正し、リードデータ116として出力する。
【0038】
以上のような構成をとれば、ECCのアルゴリズムが変わったことによるペイロードやパリティデータの割合の変化や、実メモリのサイズが変化しても、3つのパラメータ(メモリアドレス長と分割比、ペイロード/パリティ比)をこれに合わせて変更するだけでよく、また、ペイロード、パリティデータの格納は同一のメモリ内を領域分割して格納し、また分割の割合は分割比が表現できる最大の自然数の範囲内で任意に設定できるため、分割比の設定を適切に行えば、H/Wの無駄が生じることがない。
また、制御は全てH/Wで行うため、高速に処理可能である。
さらに、ペイロード/パリティ領域アドレス計算は、図2で示したように、論理演算とシフタだけで構成できるため、回路規模を小さくできる。
【0039】
次に、ライト時の動作、リード時の動作、リードモディファイライト時の動作を説明する。
【0040】
ライト時のタイミングチャートを、図5に示す。
ライト時の動作は、以下の(1)と(2)で構成される。
【0041】
(1)まず、メモリ制御装置1000に対するライトリクエスト(コマンド107)がシーケンス制御部002に入力される。
シーケンス制御部002は、ライトであることを認識したら、まずは、ペイロードデータをメモリに書きこむため、ペイロード/パリティ領域アドレス計算部001に対して、ペイロード/パリティ選択信号105を出力してペイロードを選択することを知らせる。
ペイロード/パリティ領域アドレス計算部001は、この知らせを受け取ると、ペイロードデータの書き込みアドレス(メモリアドレス101そのもの)をアドレス106としてシーケンス制御部002に返す。
このアドレス106に従って、シーケンス制御部002は実メモリ004にペイロードデータのライト動作を行う。
(2)上記の(1)のライトが完了したら、次にシーケンス制御部002はペイロード/パリティ領域アドレス計算部001にペイロード/パリティ選択信号105を出力してパリティデータを選択することを知らせる。
ペイロード/パリティ領域アドレス計算部001は、この知らせを受け取ると、上記した手順にてパリティデータの書き込みアドレスを生成し、パリティデータの書き込みアドレスをアドレス106としてシーケンス制御部002に返す。
このアドレス106に従って、シーケンス制御部002は実メモリ004にパリティデータ109のライト動作を行う。
【0042】
次に、リード時のタイミングチャートを、図6に示す。
ライト時の動作は、以下の(1)と(2)と(3)で構成される。
【0043】
(1)まず、メモリ制御装置1000に対するリードリクエスト(コマンド107)がシーケンス制御部002に入力される。
シーケンス制御部002は、リードであることを認識したら、まずは、ペイロードデータを実メモリ004から読み出すため、ペイロード/パリティ領域アドレス計算部001に対して、ペイロード/パリティ選択信号105を出力してペイロードを選択することを知らせる。
ペイロード/パリティ領域アドレス計算部001は、この知らせを受け取ると、ペイロードデータの読み出しアドレス(メモリアドレス101そのもの)をアドレス106としてシーケンス制御部002に返す。
このアドレス106に従って、シーケンス制御部002は実メモリ004にペイロードデータのリード動作を行う。
(2)上記(1)のリードが完了したら、次にシーケンス制御部002はペイロード/パリティ領域アドレス計算部001にペイロード/パリティ選択信号105を出力してパリティを選択することを知らせる。
ペイロード/パリティ領域アドレス計算部001は、この知らせを受け取ると、上記した手順にてパリティデータの読み出しアドレスを生成し、パリティデータの読み出しアドレスをアドレス106としてシーケンス制御部002に返す。
このアドレス106に従って、シーケンス制御部002は実メモリ004にパリティデータのリード動作を行う。
(3)最後に、ECC計算部003が、リードデータ(ペイロード)114とリードデータ(パリティ)115からECC計算を行って、計算結果をリードデータ116として出力する。
【0044】
次に、リードモディファイライト時のタイミングチャートを、図7に示す。
リードモディファイライト時の動作は、以下の(1)〜(5)で構成される。
【0045】
(1)シーケンス制御部002は、図6を参照して説明したペイロードのリード動作をマージ対象のペイロードに対して行う。
(2)同様に、シーケンス制御部002は、図6を参照して説明したパリティデータのリード動作をマージ対象のペイロードのパリティデータに対して行う。
(3)ECC計算部003が、ライトデータ108と上記の(1)で読み出したペイロードとをマージし、上記の(2)で読み出したパリティデータを用いて、新たなパリティデータを生成する。
(4)次に、シーケンス制御部002は、図5を参照して説明したペイロードのライト動作をマージ後のペイロードに対して行う。
(5)同様に、シーケンス制御部002は、図5を参照して説明したパリティのライト動作を新たなパリティデータに対して行う。
【0046】
以上、本実施の形態では、ECC(Error Check and Correct memory)を計算するECC計算部と、ECCのペイロードとパリティビットを格納するメモリアドレスを計算するアドレス計算部と、メモリに対してリード/ライトするための制御信号の制御を行うシーケンス制御部を備えたメモリ制御装置を説明した。
【0047】
また、前記アドレス計算部が、メモリアドレス長と分割比をパラメータとし、ペイロードとパリティデータを格納するメモリアドレスを計算することを説明した。
【0048】
また、前記アドレス計算部が、メモリアドレスと、ペイロード/パリティ領域のどちらのアドレスを出力するかを指示するペイロード/パリティ選択信号と、分割比を示すn(nは自然数)ビットのビット列と、m(mは自然数)ビットで示されるメモリアドレス長とペイロード/パリティ比を入力とし、ペイロード/パリティ選択信号がペイロード領域のアドレス出力を指示する場合は入力されたメモリアドレスをそのまま出力し、パリティ領域のアドレス出力を指示する場合は、分割比を示すnビットのビット列を、mビットで示されるメモリアドレス長から計算される入力メモリアドレスの最上位ビット位置にシフトし、このシフトしたnビットのビット列と、ペイロード/パリティ比で示されるビット数分右シフトしたメモリアドレスとを加算することでパリティ領域のメモリアドレスを計算することを説明した。
【符号の説明】
【0049】
001 ペイロード/パリティ領域アドレス計算部、002 シーケンス制御部、003 ECC計算部、004 実メモリ、101 メモリアドレス、102 メモリアドレス長、103 分割比、104 ペイロード/パリティ比、105 ペイロード/パリティ選択信号、106 アドレス、107 コマンド、108 ライトデータ、109 パリティデータ、110 実メモリリードデータ、111 実メモリアドレス、112 実メモリコマンド、113 実メモリライトデータ、114 リードデータ(ペイロード)、115 リードデータ(パリティ)、116 リードデータ、121 ペイロードアドレス入力部、122 メモリアドレス長入力部、123 分割比入力部、124 ペイロード/パリティ比入力部、125 第1のシフト部、126 第2のシフト部、127 シフト量計算部、128 加算器、129 セレクタ、1000 メモリ制御装置。

【特許請求の範囲】
【請求項1】
誤り訂正の対象となるペイロードをペイロード領域に格納し、ペイロードの誤り訂正に用いられるパリティデータをパリティ領域に格納するメモリ装置を制御するメモリ制御装置であって、
ペイロードのビット数のパリティデータのビット数に対する比をペイロード/パリティ比として入力するペイロード/パリティ比入力部と、
ペイロードのビット数とパリティデータのビット数との合計値以上の所定数で前記メモリ装置の領域を分割して得られる複数の分割領域を前記ペイロード/パリティ比に近似させてペイロード領域とパリティ領域とに分類した結果ペイロード領域に分類された分割領域の数を、分割比として入力する分割比入力部と、
前記メモリ装置のメモリアドレス長を入力するメモリアドレス長入力部と、
前記ペイロード領域内のメモリアドレスをペイロードアドレスとして入力するペイロードアドレス入力部と、
前記ペイロード/パリティ比入力部により入力されたペイロード/パリティ比と、前記分割比入力部により入力された分割比と、前記メモリアドレス長入力部により入力されたメモリアドレス長と、前記ペイロードアドレス入力部により入力されたペイロードアドレスとを用いて、前記ペイロードアドレスに格納されるペイロードに対応するパリティデータの前記パリティ領域内のメモリアドレスをパリティアドレスとして算出するパリティアドレス算出部とを有することを特徴とするメモリ制御装置。
【請求項2】
前記分割比入力部は、
前記分割比を表すn(nは自然数)ビットのビット列を分割比ビット列として入力し、
前記メモリアドレス長入力部は、
前記メモリアドレス長を表すm(mは自然数)ビットのビット列をメモリアドレス長ビット列として入力し、
前記パリティアドレス算出部は、
前記メモリアドレス長ビット列のビット数と前記分割比ビット列のビット数との差である(m−n)ビット分、前記分割比ビット列を左方向にシフトし、
前記ペイロードのビット数が前記パリティデータのデータ長より長ければ前記ペイロード/パリティ比の値に対応するビット数分、前記ペイロードアドレスを右方向にシフトし、前記ペイロードのビット数が前記パリティデータのデータ長より短ければ前記ペイロード/パリティ比の値に対応するビット数分、前記ペイロードアドレスを左方向にシフトし、
シフト後の前記分割比ビット列とシフト後の前記ペイロードアドレスとを加算して、前記パリティアドレスを算出することを特徴とする請求項1に記載のメモリ制御装置。
【請求項3】
前記メモリ制御装置は、更に、
ペイロードのメモリアドレスとパリティデータのメモリアドレスを問い合わせ、問い合わせに対して通知されたメモリアドレスに基づき、前記メモリ装置からのペイロード及びパリティデータの読出し及び前記メモリ装置へのペイロード及びパリティデータの書込みの少なくともいずれかを行うシーケンス制御部と、
前記シーケンス制御部からの問い合わせを入力し、前記シーケンス制御部からペイロードのメモリアドレスの問い合わせがあった場合に、前記ペイロードアドレス入力部により入力されたペイロードアドレスを前記シーケンス制御部に通知し、前記シーケンス制御部からパリティデータのメモリアドレスの問い合わせがあった場合に、前記パリティアドレス算出部により算出されたパリティアドレスを前記シーケンス制御部に通知するアドレス通知部とを有することを特徴とする請求項1又は2に記載のメモリ制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−30072(P2013−30072A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−166949(P2011−166949)
【出願日】平成23年7月29日(2011.7.29)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】