JP5668279B2 - 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム - Google Patents

不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム Download PDF

Info

Publication number
JP5668279B2
JP5668279B2 JP2009183517A JP2009183517A JP5668279B2 JP 5668279 B2 JP5668279 B2 JP 5668279B2 JP 2009183517 A JP2009183517 A JP 2009183517A JP 2009183517 A JP2009183517 A JP 2009183517A JP 5668279 B2 JP5668279 B2 JP 5668279B2
Authority
JP
Japan
Prior art keywords
area
data
ecc
register
data area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009183517A
Other languages
English (en)
Other versions
JP2011039585A (ja
Inventor
中西 健一
健一 中西
敬一 筒井
敬一 筒井
潤一 越山
潤一 越山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2009183517A priority Critical patent/JP5668279B2/ja
Priority to US12/816,685 priority patent/US8429494B2/en
Publication of JP2011039585A publication Critical patent/JP2011039585A/ja
Application granted granted Critical
Publication of JP5668279B2 publication Critical patent/JP5668279B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Description

本発明は、ランダムアクセス可能な不揮発性ランダムアクセスメモリおよび不揮発性メモリシステムに関するものである。
近年、揮発性ランダムアクセスメモリ(RAM)であるSRAMやDRAMのようにランダムアクセス可能でありながら、電源を切った後もデータ保持可能な不揮発性メモリ(NVRAM)としてFeRAM、PCRAMやReRAMの開発、製品化が進んでいる。
これらのNVRAMは将来のRAMの置き換えとして期待されており、さらに不揮発であるという特徴から新しいアプリケーションも模索されている。
フラッシュで代表される不揮発性メモリ(NVM)では、メモリセルの書換え・消去回数の増加に従ってデータの保持特性が低下する特徴を持つため、書き込むデータに対してエラー訂正コード(ECC)を付加することで信頼性を改善することができる。
NVRAMに対してもECCを付加することで同様の効果が期待されている。
図1は、NANDフラッシュとストレージ空間のマッピング例を示す図である。
図2は、NANDフラッシュのページサイズとセクタデータの配置例を示す図である。
図3は、NANDフラッシュのセクタ更新時の処理フローを示す図である。
NANDフラッシュは、図1に示すように、ページPG単位でアクセスするため、セクタSCT単位(512Byte)でアクセスするストレージ用途に適している。
ページPG上のデータは、図2および図3に示すように、ECCを付加することで、データエラーを修正でき、ストレージとしてのデータ書き換え回数を改善することができる。
近年、NANDフラッシュにおいて、書き込み単位としてのページサイズの増大はストレージとしてのセクタ単位のランダムアクセス性能を劣化させている。
ページのデータを更新するには、図3に示すように、少なくともそこに含まれるすべてのセクタSCTのデータをECCとともに書き換える必要があるからである。
図3の例では、ページPG1のセクタSCT2の部分だけを書き換える場合、ページPG1は書込み単位であると同時にECCを計算する単位であることから、セクタSCT2の部分の新しいデータに更新したページPG1のECCを再計算する必要がある。さらにNANDフラッシュは消去が必要であるため、ブロックBLKAとは異なるブロックBLKBに更新後のデータを再計算後のECCと共に書き込む必要がある。
そのためSSDやフラッシュカードなどNANDフラッシュを応用してストレージを実現する装置では、ECCと書込み単位、さらに消去単位の違いを吸収し、セクタ単位でのランダムアクセス性能を改善するための工夫が必要となってきた。
また書き換え回数を維持するためにECCの訂正能力に対する要求が高くなってきており、ECCコードを保存するためのサイズも拡張されてきている。
一方、上記のような新しいNVRAMでECCによって書き換え回数を改善しようとした場合、RAMとしてアクセスされることが前提となる。このため、NANDフラッシュとは異なり、ストレージのセクタに代表されるような共通の基準となるアクセス単位サイズが存在しない。
したがって、メモリ側の仕様として単位となるデータサイズを規定することは、そのNVRAMを使用するアプリケーションからのアクセスの自由度を著しく下げることになってしまうという不利益がある。
本発明は、ランダムアクセス可能でありながら電源を切った後もデータ保持可能で、アプリケーションに応じたECCの付加が可能な不揮発性ランダムアクセスメモリおよび不揮発性メモリシステムを提供することにある。
本発明の第1の観点の不揮発性ランダムアクセスメモリは、ランダムアクセス可能で、データを保存するデータ領域と、エラー訂正コード(ECC)を保存するためのECC領域の2つの領域を含む不揮発性記憶領域と、上記データ領域にアクセスする際に使用するデータサイズをデータ領域単位サイズとして外部から設定するための不揮発性記憶領域設定機能を実現し、上記設定されたデータ領域単位サイズに従って上記データ領域とECC領域を管理し、上記データ領域のデータ領域単位サイズごとに、当該データ領域の各アクセス単位にマッピングするように設定したECC領域単位サイズのECC領域を割り当てる機能を含む不揮発性記憶領域制御部と、を有し、上記不揮発性記憶領域制御部は、ジスタ領域として、上記データ領域のアクセス単位のサイズである上記データ領域単位サイズを設定するためのデータ領域単位サイズレジスタと、上記データ領域のアクセス単位に割り当てられるECC領域のサイズである上記ECC領域単位サイズを設定するためのECC領域単位サイズレジスタと、上記ECC領域との間でECCコードを入出力するためのECCコードレジスタと、を含み、アドレス指定された上記データ領域であって、上記データ領域単位サイズレジスタに設定されたサイズの上記データ領域へアクセスし、アクセスする上記データ領域に割り当てられた上記ECC領域へアクセスするに際し、上記データ領域を指定するためのデータアドレスから当該割り当てられたECC領域へのアクセスアドレスを生成し、上記ECC領域単位サイズレジスタに設定されたECC領域のECC領域単位サイズの値に従って、上記ECCコードレジスタと上記ECC領域の間でECCコードの転送を行う。
本発明の第2の観点の不揮発性メモリシステムは、ランダムアクセス可能な不揮発性ランダムアクセスメモリと、上記不揮発性ランダムアクセスメモリへのアクセスを制御するメモリコントローラと、を有し、上記不揮発性ランダムアクセスメモリは、ランダムアクセス可能で、データを保存するデータ領域と、エラー訂正コード(ECC)を保存するためのECC領域の2つの領域を含む不揮発性記憶領域と、上記データ領域にアクセスする際に使用するデータサイズをデータ領域単位サイズとして外部から設定するための不揮発性記憶領域設定機能を実現し、上記設定されたデータ領域単位サイズに従って上記データ領域とECC領域を管理し、上記データ領域のデータ領域単位サイズごとに、当該データ領域の各アクセス単位にマッピングするように設定したECC領域単位サイズのECC領域を割り当てる機能を含む不揮発性記憶領域制御部と、を有し、上記不揮発性記憶領域制御部は、ジスタ領域として、上記データ領域のアクセス単位のサイズである上記データ領域単位サイズを設定するためのデータ領域単位サイズレジスタと、上記データ領域のアクセス単位に割り当てられるECC領域のサイズである上記ECC領域単位サイズを設定するためのECC領域単位サイズレジスタと、上記ECC領域との間でECCコードを入出力するためのECCコードレジスタと、を含み、アドレス指定された上記データ領域であって、上記データ領域単位サイズレジスタに設定されたサイズの上記データ領域へアクセスし、アクセスする上記データ領域に割り当てられた上記ECC領域へアクセスするに際し、上記データ領域を指定するためのデータアドレスから当該割り当てられたECC領域へのアクセスアドレスを生成し、上記ECC領域単位サイズレジスタに設定されたECC領域のECC領域単位サイズの値に従って、上記ECCコードレジスタと上記ECC領域の間でECCコードの転送を行う。

本発明によれば、揮発性ランダムアクセスメモリ(RAM)であるSRAMやDRAMのようにランダムアクセス可能でありながら、電源を切った後もデータ保持可能な不揮発性ランダムアクセスメモリ(NVRAM)を実現できる。
そして、このNVRAMに対してアプリケーションがランダムアクセスしやすい方法でECCを付加することができる手段を提供し、データの信頼性の向上を図ることができる。
NANDフラッシュとストレージ空間のマッピング例を示す図である。 NANDフラッシュのページサイズとセクタデータの配置例を示す図である。 NANDフラッシュのセクタ更新時の処理フローを示す図である。 本発明の第1の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を搭載した不揮発性メモリシステムの構成を示す図である。 データ領域とECC領域との関係を示す図である。 本第1の実施形態に係るNVRAMの不揮発性記憶領域制御部の具体的な構成例を示す図である。 本実施形態に係るレジスタ領域の一例を示す図である。 不揮発性記憶領域のECC領域が8バイトの場合のメモリコントローラのレジスタとの関係の一例を示す図である。 メモリコントローラからみたデータ領域、レジスタ領域、ECC領域の関係の一例を示す図である。 本実施形態に係る不揮発性記憶領域設定機能の処理フローおよびレジスタ領域を示す図である。 読み出し(Read)時のデータ領域およびECC領域へのアクセス処理について説明するためのフローチャートである。 書き込み(Write)時のデータ領域およびECC領域へのアクセス処理について説明するためのフローチャートである。 データ領域単位サイズのデータ領域と、ECC領域単位サイズのECC領域に1つのコマンドで連続してアクセスする処理を説明するための図である。 データ領域のデータ領域単位サイズとECC領域のECC領域単位サイズを設定する場合に、その設定を有効とするデータ領域のアドレス範囲を指定する情報を含んだ場合の実現例のレジスタ領域を示す図である。 起動時の処理として、NVRAM内の設定保存機能の有無に応じた設定情報の処理を説明するためのフローチャートである。 本発明の第2の実施形態に係るNVRAMの構成例を示す図である。 アクセス単位によるオーバーヘッドの例を示す図である。 アドレス境界によるオーバーヘッドの例を示す図である。
以下、本発明の実施形態を図面に関連付けて説明する。
なお、説明は以下の順序で行う。
1.第1の実施形態
2.第2の実施形態
<1.第1の実施形態>
図4は、本発明の第1の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を搭載した不揮発性メモリシステムの構成を示す図である。
本第1の実施形態に係るメモリシステム10は、NVRAMを含む不揮発性メモリシステム20、および不揮発性メモリシステム20のNVRAMにアクセス可能なホスト装置30を有する。
不揮発性メモリシステム20は、NVRAM21、およびメモリコントローラ22を有する。
本第1の実施形態のNVRAM21は、不揮発性記憶領域211、および不揮発性記憶領域制御部212を有する。
不揮発性記憶領域211は、データ領域ARDTと、エラー訂正コード(ECC)を保存するための領域(ECC領域AREC)の2つの領域を含む。
図5は、データ領域ARDTとECC領域ARECとの関係を示す図である。
図5の例では、4バイトのデータ領域ARDTと1バイトのECC領域ARECが1対1対応の関係を持つ。
データ領域ARDTは、メモリコントローラから直接アドレス指定することで、4バイト(Byte)を1ワードとしてアクセス可能である。ECC領域ARECは、データ領域ARDTのようにメモリコントローラから直接アドレスを指定してアクセスできなくてもよい。本実施形態では図7にあるようなレジスタ領域ARRGのECC_CODE_REGを介してアクセスすることができる。
たとえば、データ領域ARDTのアドレスDATA[4]への書込み時は、4バイトのデータに対して計算されたECCコードは、図7のECC_CODE_0_REGに設定され、ECC領域ARECのECC1の1バイトに保存される。
また、データ領域ARDTのアドレスDATA[4]の読み出し時は、ECC領域ARECのECC1を読み出し、メモリコントローラは図7にECC_CODE_0_REGを介してその値を取得し、データの誤り検出や訂正を行うことができる。
本第1の実施形態に係るNVRAM21は、データ領域ARDTとECC領域ARECは一つの不揮発性記憶領域211に形成される。
NVRAM21の不揮発性記憶領域制御部212は、データ領域とECC領域を設定された各単位サイズで管理し、データ領域ARDTの各アクセス単位ごとにECC領域ARECのECC領域単位サイズをマッピングする機能を有する。
本実施形態では、NVRAM21の不揮発性記憶領域制御部212に対して、ホスト装置30がメモリコントローラ22を介してデータ領域ARDTにアクセスする単位として、複数バイトからなるデータ領域単位サイズを設定するための機能を有する。この機能を不揮発性記憶領域設定機能と呼ぶ。
図7の実施例では、DATA_UNIT_SIZE_REGにデータ領域単位サイズを設定する。不揮発性記憶領域制御部212は、設定されたデータ領域単位サイズに従ってデータ領域ARDTとECC領域ARECを管理し、データ領域ARDTの各アクセス単位ごとにECC領域ARECのECC領域単位サイズをマッピングする機能を有する。
図7の実施例では同様に、ECC_UNIT_SIZE_REGを使用してデータ領域ARDTの各アクセス単位にマッピングするECC領域ARECのECC領域単位サイズを外部から直接設定することができる。たとえば図5の状態のNVRAMに対して、DATA_UNIT_SIZE_REGに4、ECC_UNIT_SIZE_REGに1を設定した状態である。
データ領域ARDTに対して、どのようなサイズのアクセス単位を使用するかは、実際にはホスト装置30のオペレーティングシステム(OS)やアプリケーションによって決まる。
たとえば、プログラムコードであればCPUの命令キャッシュに入力する数バイト単位のアクセスであり、仮想メモリやユーザデータの場合は、512バイト、4096バイトといった単位でアクセスされることが一般的である。
また、DMAコントローラの転送サイズなど、そのシステムのハードウェア(HW)仕様によって制約される場合もある。
図6は、本第1の実施形態に係るNVRAMの不揮発性記憶領域制御部の具体的な構成例を示す図である。
図6の不揮発性記憶領域制御部212は、データ領域ARDTとECC領域ARECが一つの不揮発性記憶領域211上に割り当てられた場合の例を示している。
不揮発性記憶領域制御部212は、データ領域アドレス変換部2121、ECC領域アクセス制御部2122、レジスタ(レジスタ領域ARRG)2123、および内部不揮発性メモリとしてのレジスタ設定保存部2124を有する。
また、図6において、ABはアドレスバスを、CBは制御信号バスを、DBはデータバスを示している。
データ領域アドレス変換部2121は、メモリコントローラ22からのデータ領域ARDTへのアクセスに対して、アドレス変換を行う機能を有する。
レジスタ2123は、レジスタ領域ARRGとしてメモリコントローラ22からアクセスされる。
データ領域アドレス変換部2121は、レジスタ2123に設定された各単位サイズの値に従ってNVRAM21に入力されたアドレスを内部アドレスに変換する方法を切換える機能を有している。
ECC領域アクセス制御部2122は、メモリコントローラ22がデータ領域ARDTへアクセスした場合にそのデータ領域に割り当てられたECC領域ARECへアクセスする機能を有する。
ECC領域アクセス制御部2122は、外部からデータ領域ARDTを指定するために入力されたデータアドレスから変換することでECC領域ARECへのアクセスアドレスを生成する。
メモリコントローラ22はレジスタ領域ARRGの各レジスタ2123にアクセスすることで、不揮発性記憶領域制御部212に設定を行う。
ECC領域アクセス制御部2122は、不揮発性記憶領域制御部212内にあるレジスタ2123に設定されたECC領域のECC領域単位サイズの値に従って、「ECC_CODE_REG」とECC領域の間で転送を行う機能を有している。
これによって、データ領域ARDTにアクセスした場合にはそのデータ領域に割り当てられたECC領域ARECの値がレジスタ2123と不揮発性記憶領域211の間でマルチプレクサ213を介して入出力される。
メモリコントローラ22は、ECC_CODE_REGを経由して、ECC領域ARECのデータにアクセスする。
図7は、本実施形態に係るレジスタ領域の一例を示す図である。
図7の例では、4バイトのレジスタ領域ARRGが形成される。
アドレスREG[0]は、データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」であり、データ領域ARDTのアクセス単位のサイズを設定するために使用される。
データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」は、読み出し(Read)時には、データ領域単位サイズが取得される。
データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」は、書き込み(Write)時には、データ領域単位サイズ値が設定される。
アドレスREG[4]は、ECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」であり、上記データ領域ARDTのアクセス単位に割り当てられるECC領域ARECのサイズを設定するために使用される。
ECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」は、読み出し(Read)には、ECC領域単位サイズが取得される。
ECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」は、書き込み(Write)時には、ECC領域単位サイズが設定される。
本レジスタが存在しない場合には、不揮発性記憶領域制御部212が不揮発性領域設定機能として、ECC領域ARECをマッピングするデータ領域ARDTのアクセス単位数に対してECC領域を分配できるよう、ECC領域単位サイズを決定する。
アドレスREG[8]、REG[12]・・・は、ECCコードレジスタ「ECC_CODE_X_REG」であり、ECC領域とECCコードを入出力するために使用される。
使用する最終レジスタの番号(X)はECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定した値によって決まる。
ECCコードレジスタ「ECC_CODE_X_REG」は、データ領域ARDTへ読み出しアクセス直後の読み出し(Read)によって、そのデータ領域に関連するECC領域ARECの値が取得される。
ECCコードレジスタ「ECC_CODE_X_REG」の書き込み(Write)によって、それに続くデータ領域ARDTへの書込みアクセス時に、そのデータ領域に関連するECC領域ARECに値が設定される。
図8は、不揮発性記憶領域のECC領域ARECが8バイトの場合のメモリコントローラのレジスタとの関係の一例を示す図である。ECC_UNIT_SIZE_REGにはECC領域単位サイズとして8バイトを示す0x08の値が設定される。
図8の実施例では、メモリコントローラ22のレジスタ2123上の各領域は4バイトで形成される。
したがってアドレスREG[8]、REG[12]の8バイト分の2つのECCコードレジスタ「ECC_CODE_(0,1)_REG」がECC領域ARECのアドレスECC「2」に割り当てられている。
以上のように、本実施形態においては、ECC領域ARECはレジスタ領域経由でアクセスされ、データ領域ARDTのように直接アクセスできない例をあげたが、データ領域と同様に直接ECC領域のアドレスを指定しアクセスできた場合にも、本発明の効果は変わらない。
メモリコントローラ22は、NVRAM21の不揮発性記憶領域制御部212を制御し、データ領域ARDTを使用するデータ領域単位サイズを設定する機能を有する。
またこれに加えて、メモリコントローラ22は、NVRAM21がECC領域単位サイズレジスタのような、ECC領域ARECのECC領域単位サイズを設定する機能を持つ場合には、ECC領域単位サイズを設定する機能も有する。
メモリコントローラ22は、NVRAM制御部221、データバッファ222、ホスト側のRAMインタフェース223、およびNVRAM側のNVRAMインタフェース224を有する。
NVRAM制御部221は、ECCレジスタ2212を有する。
NVRAM制御部221は、ホスト装置30からのデータ書き込み時には、NVRAM21の不揮発性記憶領域211のデータ領域ARDTのデータ領域単位サイズのアクセスごとにECCコードを計算し、その結果をECC領域ARECに記録する。
NVRAM制御部221は、データ読出し時には、不揮発性記憶領域211のデータ領域ARDTからデータを、ECC領域ARECから図7に示したレジスタ経由でECCコードを読み出す。
NVRAM制御部221は、読み出したECCコードを利用してデータ領域ARDTから読みだしたデータの確認・訂正を行う。
NVRAM制御部221は、これにより、データ信頼性を向上させることができる。
図9は、メモリコントローラからみたデータ領域、レジスタ領域、ECC領域の関係の一例を示す図である。
図9の例では、各データ領域、レジスタ領域は4バイト、ECC領域は1バイトにより形成される。DATA_UNIT_SIZE_REGに設定されたデータ領域ARDTのアクセス単位は4バイト、ECC_UNIT_SIZE_REGに設定されたECC領域ARECのアクセス単位は1バイトである。ECC領域はレジスタ経由のアクセスであり、外部からは直接的に見えない。
図9の例では、アドレスDATA[8]のデータ領域ARDTのWord2にマッピングしたECC領域ARECがアドレスECC[2]のECC2であった場合のアクセス例が示されている。
この場合、アドレスDATA[8]のデータ領域のWord2への読み出しアクセス時には、アドレスECC[2]のECC2の値がECC_CODE_0_REGを経由して読み出される。
アドレスDATA[8]のデータ領域のWord2への書き込みアクセス時には、同じくECC_CODE_0_REGに設定した値がアドレスECC[2]のECC2に書込まれる。
ECC領域ARECは、図9の実施例では、レジスタを介してメモリコントローラ22から4Byte単位でアクセスされる。なお、ECC領域のECC領域単位サイズに合わせて、ワード(Word)単位、バイト(Byte)単位の他、ビット(Bit)単位でアクセス可能であってもよい。
どのようなECCコードを使用するかは、ホスト装置30側のアプリケーションによって決まる。煩雑に書き換えが発生するデータであるほど訂正能力の高いECCコードが必要とされる。
以下に具体例を示す。
[第1の具体例]
この例は、CPUのコード用として、データ領域ARDTが1ワード(Word)=4バイト(Byte)単位、読み出し専用(リードオンリ:Read Only)の場合で、ECCが不要である場合である。
図7に示すようなレジスタ領域ARRGに対し、「DATA_UNIT_SIZE_REG」=0x04、「ECC_UNIT_SIZE」=0x00が設定される。
プログラムコードのようにリードオンリであるデータについては、書換え回数が増大しないためECCコードを不要と判断し、ECC領域ARECを0に設定にする。
これにより、ECC領域ARECは未使用となり、ECCを持たない通常のROMのように使用することができる。
[第2の具体例]
この例は、CPUのデータ領域として、データ領域ARDTが128バイト単位で、読み出し(Read)/書き込み(Write)アクセスする場合で、4バイトのECCが必要である場合である。
図7に示すようなレジスタ領域ARRGに対し、「DATA_UNIT_SIZE_REG」=0x80、「ECC_UNIT_SIZE_REG」=0x04を設定する。
図10は、本実施形態に係る不揮発性記憶領域設定機能の処理フローおよびレジスタ領域ARRGを示す図である。
本実施形態では、不揮発性記憶領域制御部212に対して、ホスト装置30がメモリコントローラ22を介して主にアクセスする単位として使用する複数バイトからなるデータ領域単位サイズを設定する。
不揮発性記憶領域設定機能は、データ領域単位サイズをデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に書き込み(ST1)、ECC領域単位サイズをECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に書き込む(ST2)。
次に、読み出し(Read)および書き込み(Write)時のデータ領域ARDTおよびECC領域ARECへのアクセス処理について、図11および図12に関連付けて説明する。
図11は、読み出し(Read)時のデータ領域およびECC領域へのアクセス処理について説明するためのフローチャートである。
図12は、書き込み(Write)時のデータ領域およびECC領域へのアクセス処理について説明するためのフローチャートである。
なお、ここでは、NVRAM21のデータバス幅が32ビット(4バイト)であり、データ領域もECC領域もこのバス幅でアクセスされる場合を例に説明する。したがって、ホスト側も4バイトの倍数をアクセス単位のサイズとして選択する。
まず、読み出し(Read)時のデータ領域ARDTおよびECC領域ARECへのアクセス処理について、図11に関連付けて説明する。
データ領域ARDTのデータが0バイトから4バイトごとに読み出される(ST11〜ST13)。
この読み出しは、バイトカウント値がレジスタ領域ARRGのデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズまで行われる(ST14)。
ステップST14において、バイトカウント値がデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズを越えていると判定されると、データの読み出しに続いてECC領域ARECのECCコードが読み出される。
ECCデータ領域ARECのデータが0バイトから4バイトごとに読み出される(ST15〜ST17)。
この読み出しは、バイトカウント値がレジスタ領域ARRGのECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズまで行われる(ST18)。
ステップST18において、バイトカウント値がECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズを越えていると判定されると、データおよびECCコードの読み出しが終了される。
次に、書き込み(Write)時のデータ領域ARDTおよびECC領域ARECへのアクセス処理について、図12に関連付けて説明する。
データ領域ARDTに0バイトから4バイトごとにデータが書き込まれる(ST21〜ST23)。
この書き込みは、バイトカウント値がレジスタ領域ARRGのデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズまで行われる(ST24)。
ステップST14において、バイトカウント値がデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズを越えていると判定されると、データの書き込みに続いてECC領域ARECのECCコードが書き込まれる。
ECCデータ領域ARECに0バイトから4バイトごとにECCコードが書き込まれる(ST25〜ST27)。
この書き込みは、バイトカウント値がレジスタ領域ARRGのECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズまで行われる(ST28)。
ステップST28において、バイトカウント値がECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズを超えていると判定されると、データおよびECCコードの書き込みが終了される。
次に、データ領域単位サイズ分のデータ領域ARDTと、ECC領域単位サイズ分のECC領域ARECに連続してアクセスする処理について、図13(A)および(B)に関連付けて説明する。
図13(A)および(B)は、データ領域単位サイズ分のデータ領域と、ECC領域単位サイズ分のECC領域に連続してアクセスする処理を説明するための図である。
図13(A)は、データ領域単位サイズ分のデータ領域と、ECC領域単位サイズ分のECC領域に連続してアクセスする処理を説明するためのフローチャートである。
図13(B)は、データ領域単位サイズ分のデータ領域と、ECC領域単位サイズ分のECC領域に連続してアクセスする処理で用いられるレジスタ領域の一例を示している。
この連続アクセス処理においては、レジスタ領域ARRGに、図7等のレジスタに加えてコマンドとデータ転送とその引数を設定するためのレジスタが追加されている。
すなわち、コマンド設定レジスタ「CMD_REG」とデータ転送レジスタ「DATA_REG」とデータアドレスレジスタ「DATA_ADR_REG」の3つのレジスタが追加されている。
コマンド設定レジスタ「CMD_REG」に対する書き込みは、レジスタにコマンドを設定し、実行することを意味する。
一例として、データ領域単位サイズ分のデータ領域ARDTとECC領域単位サイズ分のECC領域ARECを連続して読み出す「READ_UNITコマンド(0x01)」と、データ領域単位サイズ分のデータ領域とECC領域単位サイズ分のECC領域を連続して書き込む「WRITE_UNITコマンド(0x02)」について説明する。
データアドレスレジスタ「DATA_ADR_REG」に対する書き込みは、コマンドの引数となるデータ領域のアドレスを設定することを意味する。
REG[0]はCMD_REGにコマンド設定後は、DATA_REGに切り替わって使用する。つまり設定したコマンドに従って、READ_UNITコマンドの場合は、DATA_REGを繰り返し読み出すことによってデータの連続転送を行い、WRITE_UNITコマンドの場合は、DATA_REGに繰り返し書き込むことによってデータの連続転送を行う。
また、データ領域、ECC領域それぞれの単位サイズは、連続アクセス処理開始以前に設定済みであるとする。
この連続アクセス処理においては、図13(A)に示すように、データアドレスレジスタ「DATA_ADR_REG」にコマンドの引数となるデータ領域ARDTのアドレスが設定される(ST31)。
次に、コマンド設定レジスタ「CMD_REG」にコマンドが設定され、実行される(ST32)。
設定されるコマンドが、「READ_UNITコマンド(0x01)」である場合には、次の処理が行われる。
第1のステップで、DATA_ADR_REGに読み出しを行うデータ領域ARDTのアドレスを設定し、第2のステップで、CMD_REGにREAD_UNITコマンドであることを示す0x01を設定し、連続アクセス処理を開始する。
第3のステップでは、指定したデータ領域ARDTのアドレスからデータ領域単位サイズのデータがDATA_REGに出力され、第4のステップではそのデータ領域ARDTに割り当てられたECC領域ARECのECC領域単位サイズのデータがDATA_REGに連続して出力される(ST33、ST34)。
設定されるコマンドが、「WRITE_UNITコマンド(0x02)」である場合、次の処理が行われる。
第1のステップで、DATA_ADR_REGに書き込みを行うデータ領域ARDTのアドレスを設定し、第2のステップで、CMD_REGにWRITE_UNITコマンドであることを示す0x02を設定し、連続アクセス処理を開始する。
第3のステップでは、指定したデータ領域ARDTのアドレスに書き込むデータ領域単位サイズのデータをDATA_REGに入力し、第4のステップではそのデータ領域に割り当てられたECC領域ARECのECC領域単位サイズのデータをDATA_REGに連続して入力し、各領域に書き込まれる(ST33、ST34)。
次に、データ領域ARDTおよびECC領域ARECの各単位サイズの設定を有効とするデータ領域ARDTのアドレス範囲を指定することが可能である場合の実現例について、図14に関連付けて説明する。
図14は、データ領域ARDTのデータ領域単位サイズを設定する場合に、その設定を有効とするデータ領域のアドレス範囲を指定するための拡張を行った場合のレジスタ領域ARRGの一例を示す図である。
本実施例の場合、上記NVRAM21は同時に異なる単位サイズを持った複数のデータ領域ARDT、ECC領域ARECを持つことができる。
この場合、図14に示すように、レジスタ領域ARRGに、図7等のレジスタに加えてデータ領域開始アドレス設定レジスタ「DATA_START_ADR_REG」とデータ領域サイズレジスタ「DATA_SIZE_REG」の2つのレジスタが追加されている。
データ領域開始アドレス設定レジスタ「DATA_START_ADR_REG」は、
データ領域ARDT、ECC領域ARECの各単位サイズを設定するデータ領域上の先頭アドレスが設定される。
「DATA_START_ADR_REG」にアドレス値を設定することによって、データ領域サイズレジスタ「DATA_SIZE_REG」は、読み出し(Read)時には、次の処理を行う。すなわち、データ領域サイズレジスタ「DATA_SIZE_REG」は、読み出し(Read)時には、「DATA_START_ADR_REG」で指定されたアドレスを先頭とする領域のサイズを返す。
この状態で、「DATA_SIZE_REG」に書き込みを行うことによって、DATA_UNIT_SIZE_REG、ECC_UNIT_SIZE_REGに設定した各単位サイズが有効であるデータ領域ARDT上のアドレス領域のサイズの設定が可能である。
「DATA_START_ADR_REG」にアドレス値を設定することによって、データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」は、読み出し(Read)時には、次の処理を行う。すなわち、データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」は、読み出し(Read)時には、「DATA_START_ADR_REG」で指定されたアドレスの、データ領域単位サイズを返す。
これによってメモリコントローラ22は、そのデータ領域に設定したデータ領域単位サイズを確認することが可能である。
この状態で、「DATA_UNIT_SIZE_REG」に書き込みを行うことによってデータ領域単位サイズの変更が可能である。
「DATA_START_ADR_REG」にアドレス値を設定することによって、ECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」は、読み出し(Read)時には、「DATA_START_ADR_REG」で指定されたアドレスの、ECC領域単位サイズを返す。
これによってメモリコントローラ22は、そのデータ領域に設定したECC領域単位サイズを確認することが可能である。
この状態で、「ECC_UNIT_SIZE_REG」に書き込みを行うことによってECC領域単位サイズの変更が可能である。
ECCコードレジスタ「ECC_CODE_0_REG」〜「ECC_CODE_X_REG」は、読み出し(Read)時には、データ領域ARDTへアクセスした際、そのデータ領域に割り当てられたECC領域ARECの値が取得される。
書き込み(Write)時には、データ領域ARDTへアクセスした際、そのデータ領域に割り当てられたECC領域ARECの値を設定する。
Xの値は、ECC_UNIT_SIZE_REGの設定として有効な最大値によって決まり、アクセス時に使用するECC_COE_0_REG〜ECC_CODE_X_REGの範囲はそのアドレスに割り当てられたECC領域のサイズによって決まる。



なお、レジスタ領域ARRGに設定した状態はNVRAM21の内部に配置される設定保存機能部としての不揮発性メモリに保持することが望ましい。
保存する機能を持たない場合は、たとえば上記NVRAMを制御、管理するメモリコントローラ22がNVRAM21の初期化処理の一部としてレジスタに毎回設定する。
図15(A)および(B)は、NVRAM内の設定保存機能の有無に応じた設定情報の処理を説明するためのフローチャートである。
図15(A)は、設定保存機能を有する場合の処理フローを示している。
この場合、NVRAM21への初期化後、たとえばリセット解除後、設定保存部から自動的に設定がロードされる(ST41)。
図15(B)は、設定保存機能を有していない場合の処理フローを示している。
この場合、NVRAM21にアクセスを開始する前にメモリコントローラ22がレジスタ設定を行う(ST42)。設定後、初期化し、NVRAM21にアクセスが開始される(ST43)。
<2.第2の実施形態>
図16は、本発明の第2の実施形態に係るNVRAMの構成例を示す図である。
本第2の実施形態に係るNVRAM21Aが第1の実施形態のNVRAM21と異なる点は、不揮発性記憶領域制御部212Aはデータ領域とECC領域が独立した不揮発性記憶領域211A−2に割り当てられていることにある。
この場合も第1の実施形態と同様に、データ領域211A−1はメモリコントローラ22から与えられたアドレスでアクセスされ、ECC領域211A−2は不揮発性記憶領域制御部212によって生成されたアドレスでアクセスされる。
本発明の実施形態の対象となるNVRAMはアドレス空間としてデータ領域とECC領域が区別可能であることが必要であり、実際に物理的なメモリセルとして分割されていることを条件としない。図6および図16はそれぞれの場合の例を示している。
上述した実施形態では、書き換え可能なNVRAMについて説明してきたが、書き換え前に消去が必要となるNVRAMについても適用可能である。
本実施形態では、ECC領域へのアクセスをレジスタ経由としたが、制御ピンや、コマンドによって実現する手法も適用することが可能である。
以上説明したように、本実施形態によれば、以下の効果を得ることができる。
バイトの単位でランダムアクセス可能なNVRAMにおいて、アプリケーションに適した仕様に従ってホスト装置側が設定できる。
ホスト装置が設定したサイズでランダムアクセスされることを前提にNVRAM内の構成を変更することができる。
ECC領域に保存されるECCコードはホスト側で計算され、読み出し時にデータエラーからの復帰を可能にすることで、結果としてNVRAMの書換え回数を改善することができる。
つまり、リードオンリ(Read Only)なデータの場合には、ECC性能は最小限あるいは不要の設定が可能であり、煩雑に書込みを行うデータの場合には、ECC性能を最大限に設定しデータの信頼性を上げるといったことが可能である。
ホスト装置は上記のような設定をメモリコントローラ内のNVM制御部を通して、NVRAMに対して設定することが可能である。
メモリコントローラは、NVRAMに対してECCコードを保存するためのデータ領域とECC領域の各単位サイズを設定することができる。
ECCコードのサイズは、対象とするデータサイズと必要とされるECCの訂正・検出能力によって決まる。
つまり本実施形態によって、その不揮発性メモリを使用するホストはその上で動作するアプリケーションに最適なアクセス単位サイズ、ECC性能によってNVRAMへのアクセス方法を決定することができる。
上記設定においてホスト装置がランダムアクセス性能を重視する場合には、そのアクセス単位に合わせてデータ領域のデータ単位を設定可能である。
このアクセス単位は、もしホスト装置とメモリコントローラ間のデータ転送としてDMA転送などで高速アクセスを行う場合には、DMA転送可能なサイズに合わせて決定することも可能である。
ホスト装置とその上で動作するアプリケーションが、本発明の実施形態に係るNVRAMに対してランダムアクセスとして期待するアクセス単位を、データ領域単位サイズとして設定することできる。
そして、ECCコードを付加することによるデータ変更時のオーバーヘッドを小さくすることができる。
図17は、アクセス単位によるオーバーヘッドの例を示す図である。
ハッチングで示す部分が実際のアクセスが発生するデータである(Half Word、16Bit)。
アクセスするサイズとデータ領域単位サイズが不一致のため、ECCを計算するために必ずWord(32Bit)で読み出す必要が発生する。
ここでは32Bitを例としたがこのデータ領域単位サイズが大きいほど、ECCを計算するために読み出すデータ量は増加し、オーバーヘッドが増大することでパフォーマンスを低下させる。
本実施形態によれば、データ領域単位サイズをアクセスサイズに合わせることでECC計算のために余分なデータの読出しが不要となる。
また、ユーザーがランダムアクセスで期待するアドレス境界に合わせてECCコードを付加する領域を提供することで、ランダムアクセスに対するECCによるオーバーヘッドを小さくすることができる。
図18は、アドレス境界によるオーバーヘッドの例を示す図である。
ハッチングで示す部分が実際のアクセスが発生するデータである(Word、32Bit)。
アクセスするサイズとデータ領域単位サイズは一致するが、データ境界が不一致のため、ECCを計算するために必ず2Word読み出す必要が発生する。
本実施形態によれば、データ領域単位サイズの境界を合わせることでECC計算を1回にすることができる。
10・・・メモリシステム、20・・・NVRAMを含む不揮発性メモリシステム、21,21A・・・NVRAM、211・・・不揮発性記憶領域、211A−1・・・データ領域(不揮発性記憶領域)、211A−2・・・ECC領域(不揮発性記憶領域)、212,212A・・・不揮発性記憶領域制御部、2121・・・データ領域アドレス変換部、2122・・・ECC領域アクセス制御部、2123・・・レジスタ(領域)、2124・・・レジスタ設定保存部、22・・・メモリコントローラ、30・・・ホスト装置30、ARDT・・・データ領域、AREC・・・ECC領域。

Claims (13)

  1. ランダムアクセス可能で、データを保存するデータ領域と、エラー訂正コード(ECC)を保存するためのECC領域の2つの領域を含む不揮発性記憶領域と、
    上記データ領域にアクセスする際に使用するデータサイズをデータ領域単位サイズとして外部から設定するための不揮発性記憶領域設定機能を実現し、上記設定されたデータ領域単位サイズに従って上記データ領域とECC領域を管理し、上記データ領域のデータ領域単位サイズごとに、当該データ領域の各アクセス単位にマッピングするように設定したECC領域単位サイズのECC領域を割り当てる機能を含む不揮発性記憶領域制御部と、を有し、
    上記不揮発性記憶領域制御部は、
    ジスタ領域として、
    上記データ領域のアクセス単位のサイズである上記データ領域単位サイズを設定するためのデータ領域単位サイズレジスタと、
    上記データ領域のアクセス単位に割り当てられるECC領域のサイズである上記ECC領域単位サイズを設定するためのECC領域単位サイズレジスタと、
    上記ECC領域との間でECCコードを入出力するためのECCコードレジスタと、を含み、
    アドレス指定された上記データ領域であって、上記データ領域単位サイズレジスタに設定されたサイズの上記データ領域へアクセスし、
    アクセスする上記データ領域に割り当てられた上記ECC領域へアクセスするに際し、上記データ領域を指定するためのデータアドレスから当該割り当てられたECC領域へのアクセスアドレスを生成し、
    上記ECC領域単位サイズレジスタに設定されたECC領域のECC領域単位サイズの値に従って、上記ECCコードレジスタと上記ECC領域の間でECCコードの転送を行う
    不揮発性ランダムアクセスメモリ。
  2. 上記不揮発性記憶領域制御部は、
    読み出し時には、
    上記データ領域のデータの読み出しを、上記レジスタ領域の上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズまで行い、
    読み出したデータサイズが、上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズを越えていると判定すると、上記ECC領域のECCコードの読み出しを、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズまで行い、
    読み出したECCコードサイズが、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズを越えていると判定すると、データおよびECCコードの読み出しを終了する
    請求項1記載の不揮発性ランダムアクセスメモリ。
  3. 上記不揮発性記憶領域制御部は、
    書き込み時には、
    上記データ領域へのデータの書き込みを、上記レジスタ領域の上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズまで行い、
    書き込んだデータサイズが、上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズを越えていると判定すると、上記ECC領域へのECCコードの書き込みを、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズまで行い、
    書き込んだECCコードのサイズが、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズを超えていると判定すると、データおよびECCコードの書き込みを終了する
    請求項1または2記載の不揮発性ランダムアクセスメモリ。
  4. 上記不揮発性記憶領域制御部は、
    上記レジスタ領域に、
    実行するコマンドを設定するためのコマンドレジスタと、
    転送するデータを設定するためのデータ転送レジスタと、
    コマンドの引数となるデータ領域のアドレスを設定するためのデータアドレスレジスタと、をさらに含み、
    上記データアドレスレジスタに対してコマンドの引数となるデータ領域のアドレスを設定し、上記コマンドレジスタにコマンドを設定し、当該コマンドが読み出しコマンドの場合には、上記データ転送レジスタを繰り返し読み出すことによってデータの連続転送を行い、コマンドが書き込みコマンドの場合には、上記データレ転送ジスタに繰り返し書き込むことによってデータの連続転送を行う
    請求項1不揮発性ランダムアクセスメモリ。
  5. 上記不揮発性記憶領域制御部は、
    上記コマンドが読み出しコマンドの場合は、
    上記データアドレスレジスタに読み出しを行うデータ領域のアドレスを設定し、上記コマンドレジスタに読み出しコマンドを設定して連続アクセス処理を開始し、
    指定したデータ領域のアドレスから上記データ領域単位サイズのデータを上記データ転送レジスタに連続して出力させ、
    当該データ領域に割り当てられたECC領域のECC領域単位サイズのデータを上記データ転送レジスタに連続して出力させ、
    上記コマンドが書き込みコマンドの場合は、
    上記データアドレスレジスタに書き込みを行うデータ領域のアドレスを設定し、上記コマンドレジスタに書き込みコマンドを設定して連続アクセス処理を開始し、
    指定したデータ領域のアドレスに書き込み上記データ領域単位サイズのデータを上記データ転送レジスタに連続して入力し、上記データ領域に対するデータの書き込みを実行し、
    当該データ領域に割り当てられたECC領域のECC領域単位サイズのECCコードのデータを上記データ転送レジスタに連続して入力し、上記ECC領域に対するECCコードの書き込みを実行する
    請求項4不揮発性ランダムアクセスメモリ。
  6. 上記不揮発性記憶領域制御部は、
    上記レジスタ領域に、
    上記データ領域、上記ECC領域の各単位サイズを設定するデータ領域上の先頭アドレスを設定するためのデータ領域開始アドレス設定レジスタと、
    データ領域のサイズを設定するためのデータ領域サイズレジスタと、をさらに含み、
    上記データ領域開始アドレス設定レジスタにアドレス値を設定することによって、上記データ領域サイズレジスタを介して、読み出し時には、上記データ領域開始アドレス設定レジスタで指定されたアドレスを先頭とする領域のサイズを返し、
    この状態で、上記データ領域サイズレジスタに書き込みを行うことによって、上記データ領域単位サイズレジスタ、上記ECC領域単位サイズレジスタに設定した各単位サイズが有効である上記データ領域のアドレス領域のサイズの設定を行う
    請求項1記載の不揮発性ランダムアクセスメモリ。
  7. 上記不揮発性記憶領域制御部は、
    上記データ領域開始アドレス設定レジスタにアドレス値を設定することによって、上記データ領域単位サイズレジスタを介して、読み出し時には、上記データ領域開始アドレス設定レジスタで指定されたアドレスのデータ領域単位サイズを返し、
    この状態で、上記データ領域単位サイズレジスタに書き込みを行うことによって、データ領域単位サイズの変更を行う
    請求項6記載の不揮発性ランダムアクセスメモリ。
  8. 上記不揮発性記憶領域制御部は、
    上記データ領域開始アドレス設定レジスタにアドレス値を設定することによって、上記ECC領域単位サイズレジスタを介して、読み出し時には、上記データ領域開始アドレス設定レジスタで指定されたアドレスのECC領域単位サイズを返し、
    この状態で、上記ECC領域単位サイズレジスタに書き込みを行うことによってECC領域単位サイズの変更を行う
    請求項6または7記載の不揮発性ランダムアクセスメモリ。
  9. 上記不揮発性記憶領域制御部で設定した情報を内部不揮発性記憶部に保持する機能を有する
    請求項1から8のいずれか一に記載の不揮発性ランダムアクセスメモリ。
  10. 上記内部不揮発性記憶部に保持された設定情報を初期化処理の一部として外部からのアクセスを開始する前に、不揮発性記憶領域制御部へ読み込む機能を有する
    請求項9記載の不揮発性ランダムアクセスメモリ。
  11. 初期化処理終了後、アプリケーションの必要に応じて再設定は可能である
    請求項10記載の不揮発性ランダムアクセスメモリ。
  12. ランダムアクセス可能な不揮発性ランダムアクセスメモリと、
    上記不揮発性ランダムアクセスメモリへのアクセスを制御するメモリコントローラと、を有し、
    上記不揮発性ランダムアクセスメモリは、
    ランダムアクセス可能で、データを保存するデータ領域と、エラー訂正コード(ECC)を保存するためのECC領域の2つの領域を含む不揮発性記憶領域と、
    上記データ領域にアクセスする際に使用するデータサイズをデータ領域単位サイズとして外部から設定するための不揮発性記憶領域設定機能を実現し、上記設定されたデータ領域単位サイズに従って上記データ領域とECC領域を管理し、上記データ領域のデータ領域単位サイズごとに、当該データ領域の各アクセス単位にマッピングするように設定したECC領域単位サイズのECC領域を割り当てる機能を含む不揮発性記憶領域制御部と、を有し、
    上記不揮発性記憶領域制御部は、
    ジスタ領域として、
    上記データ領域のアクセス単位のサイズである上記データ領域単位サイズを設定するためのデータ領域単位サイズレジスタと、
    上記データ領域のアクセス単位に割り当てられるECC領域のサイズである上記ECC領域単位サイズを設定するためのECC領域単位サイズレジスタと、
    上記ECC領域との間でECCコードを入出力するためのECCコードレジスタと、を含み、
    アドレス指定された上記データ領域であって、上記データ領域単位サイズレジスタに設定されたサイズの上記データ領域へアクセスし、
    アクセスする上記データ領域に割り当てられた上記ECC領域へアクセスするに際し、上記データ領域を指定するためのデータアドレスから当該割り当てられたECC領域へのアクセスアドレスを生成し、
    上記ECC領域単位サイズレジスタに設定されたECC領域のECC領域単位サイズの値に従って、上記ECCコードレジスタと上記ECC領域の間でECCコードの転送を行う
    不揮発性メモリシステム。
  13. 上記メモリコントローラは、
    上記不揮発性記憶領域制御部を制御し、上記データ領域単位サイズを設定する機能と、上記ECC領域単位サイズを設定する機能を含む
    請求項12記載の不揮発性メモリシステム。
JP2009183517A 2009-08-06 2009-08-06 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム Expired - Fee Related JP5668279B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009183517A JP5668279B2 (ja) 2009-08-06 2009-08-06 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム
US12/816,685 US8429494B2 (en) 2009-08-06 2010-06-16 Nonvolatile random access memory and nonvolatile memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009183517A JP5668279B2 (ja) 2009-08-06 2009-08-06 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム

Publications (2)

Publication Number Publication Date
JP2011039585A JP2011039585A (ja) 2011-02-24
JP5668279B2 true JP5668279B2 (ja) 2015-02-12

Family

ID=43535710

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009183517A Expired - Fee Related JP5668279B2 (ja) 2009-08-06 2009-08-06 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム

Country Status (2)

Country Link
US (1) US8429494B2 (ja)
JP (1) JP5668279B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012174088A (ja) * 2011-02-23 2012-09-10 Hitachi Ltd メモリ制御装置
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
US8898541B2 (en) * 2011-11-30 2014-11-25 Sony Corporation Storage controller, storage device, information processing system, and storage controlling method
TW201337936A (zh) * 2012-03-06 2013-09-16 Innodisk Corp 可提升資料校正能力之快閃記憶體裝置
JP2013242694A (ja) * 2012-05-21 2013-12-05 Renesas Mobile Corp 半導体装置、電子装置、電子システム及び電子装置の制御方法
US9819365B2 (en) * 2014-07-20 2017-11-14 HGST, Inc. Incremental error detection and correction for memories
DE102016123247B4 (de) 2015-12-01 2024-03-21 Nvidia Corporation Systeme und verfahren zur speicherverwaltung
KR20170098538A (ko) * 2016-02-22 2017-08-30 에스케이하이닉스 주식회사 반도체 장치 및 그 구동 방법
US10467020B2 (en) * 2016-02-26 2019-11-05 Toshiba Memory Corporation Memory device, and information-processing device
JPWO2022064302A1 (ja) * 2020-09-22 2022-03-31

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08137763A (ja) 1994-11-04 1996-05-31 Fujitsu Ltd フラッシュメモリ制御装置
JP3778540B2 (ja) * 1999-05-17 2006-05-24 東芝デジタルメディアエンジニアリング株式会社 信号処理回路及び情報記録装置
JP4074029B2 (ja) 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
JP2002091831A (ja) * 2000-09-12 2002-03-29 Hitachi Ltd データ処理システム及びデータ処理方法
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
JP3802411B2 (ja) * 2001-12-20 2006-07-26 株式会社東芝 不揮発性半導体記憶装置のデータコピー方法
US7664987B2 (en) * 2003-05-25 2010-02-16 Sandisk Il Ltd. Flash memory device with fast reading rate
JP2005044386A (ja) * 2003-07-22 2005-02-17 Renesas Technology Corp 半導体記憶装置及びマイクロコンピュータ
KR100546348B1 (ko) * 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
JP2006018373A (ja) 2004-06-30 2006-01-19 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006127441A (ja) 2004-09-30 2006-05-18 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006221334A (ja) 2005-02-09 2006-08-24 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US20080256415A1 (en) * 2005-09-27 2008-10-16 Nxp B.V. Error Detection/Correction Circuit as Well as Corresponding Method
JP4953648B2 (ja) * 2006-02-03 2012-06-13 パナソニック株式会社 不揮発性記憶装置およびメモリコントローラ
US7810017B2 (en) * 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7900118B2 (en) * 2007-02-12 2011-03-01 Phison Electronics Corp. Flash memory system and method for controlling the same
JP4160625B1 (ja) 2007-04-04 2008-10-01 シャープ株式会社 誤り検出制御システム
JP4672742B2 (ja) * 2008-02-27 2011-04-20 株式会社東芝 メモリコントローラおよびメモリシステム
KR101497073B1 (ko) * 2008-02-29 2015-03-02 삼성전자주식회사 메모리 셀에 저장되는 데이터의 비트 수를 결정하는 장치
JP2009259113A (ja) * 2008-04-18 2009-11-05 Toshiba Corp 不揮発性メモリ管理装置
JP2010015197A (ja) * 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
JP2010267164A (ja) * 2009-05-15 2010-11-25 Toshiba Storage Device Corp 記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラム

Also Published As

Publication number Publication date
US20110035646A1 (en) 2011-02-10
US8429494B2 (en) 2013-04-23
JP2011039585A (ja) 2011-02-24

Similar Documents

Publication Publication Date Title
JP5668279B2 (ja) 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム
US5787493A (en) Control method and apparatus for direct execution of a program on an external apparatus using a randomly accessible and rewritable memory
EP2306321B1 (en) Increasing memory performance in flash memory devices by performing simultaneous write operation to multiple devices
JP3905037B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US8606987B2 (en) Data writing method for flash memory and controller using the same
US8316176B1 (en) Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US20190220396A1 (en) Data Storage Device
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
US8489854B1 (en) Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US6728851B1 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US20050172068A1 (en) Memory card and semiconductor device
KR100780861B1 (ko) 버퍼 메모리를 내장한 플래시 메모리 장치 및 플래시메모리 시스템
JP3574078B2 (ja) 記憶装置と記憶装置制御方法
EP1898312A1 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
US8850102B2 (en) Flash memory with small data programming capability
JP5143601B2 (ja) 情報処理装置と情報処理方法およびストレージシステム
JP2001350665A (ja) ブロックアラインメント機能付き半導体記憶装置
TWI679534B (zh) 資料儲存裝置以及資料儲存方法
JP2009015364A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4316824B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
US6898680B2 (en) Minimization of overhead of non-volatile memory operation
US20240094914A1 (en) Memory system and non-volatile memory
WO2023100212A1 (ja) メモリコントローラおよびフラッシュメモリシステム
CN116225329A (zh) 存储器的性能匹配方法、存储装置及存储器控制电路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120712

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141201

R151 Written notification of patent or utility model registration

Ref document number: 5668279

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees