JP5668279B2 - 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム - Google Patents
不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims description 62
- 230000006870 function Effects 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 18
- 238000012937 correction Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 15
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000012447 hatching Effects 0.000 description 2
- 101000760620 Homo sapiens Cell adhesion molecule 1 Proteins 0.000 description 1
- 101000911772 Homo sapiens Hsc70-interacting protein Proteins 0.000 description 1
- 101000710013 Homo sapiens Reversion-inducing cysteine-rich protein with Kazal motifs Proteins 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, 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
これらのNVRAMは将来のRAMの置き換えとして期待されており、さらに不揮発であるという特徴から新しいアプリケーションも模索されている。
NVRAMに対してもECCを付加することで同様の効果が期待されている。
図2は、NANDフラッシュのページサイズとセクタデータの配置例を示す図である。
図3は、NANDフラッシュのセクタ更新時の処理フローを示す図である。
ページPG上のデータは、図2および図3に示すように、ECCを付加することで、データエラーを修正でき、ストレージとしてのデータ書き換え回数を改善することができる。
ページのデータを更新するには、図3に示すように、少なくともそこに含まれるすべてのセクタSCTのデータをECCとともに書き換える必要があるからである。
図3の例では、ページPG1のセクタSCT2の部分だけを書き換える場合、ページPG1は書込み単位であると同時にECCを計算する単位であることから、セクタSCT2の部分の新しいデータに更新したページPG1のECCを再計算する必要がある。さらにNANDフラッシュは消去が必要であるため、ブロックBLKAとは異なるブロックBLKBに更新後のデータを再計算後のECCと共に書き込む必要がある。
そのためSSDやフラッシュカードなどNANDフラッシュを応用してストレージを実現する装置では、ECCと書込み単位、さらに消去単位の違いを吸収し、セクタ単位でのランダムアクセス性能を改善するための工夫が必要となってきた。
また書き換え回数を維持するためにECCの訂正能力に対する要求が高くなってきており、ECCコードを保存するためのサイズも拡張されてきている。
したがって、メモリ側の仕様として単位となるデータサイズを規定することは、そのNVRAMを使用するアプリケーションからのアクセスの自由度を著しく下げることになってしまうという不利益がある。
そして、このNVRAMに対してアプリケーションがランダムアクセスしやすい方法でECCを付加することができる手段を提供し、データの信頼性の向上を図ることができる。
なお、説明は以下の順序で行う。
1.第1の実施形態
2.第2の実施形態
図4は、本発明の第1の実施形態に係る不揮発性ランダムアクセスメモリ(NVRAM)を搭載した不揮発性メモリシステムの構成を示す図である。
本第1の実施形態のNVRAM21は、不揮発性記憶領域211、および不揮発性記憶領域制御部212を有する。
データ領域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を介してその値を取得し、データの誤り検出や訂正を行うことができる。
本実施形態では、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を設定した状態である。
たとえば、プログラムコードであればCPUの命令キャッシュに入力する数バイト単位のアクセスであり、仮想メモリやユーザデータの場合は、512バイト、4096バイトといった単位でアクセスされることが一般的である。
また、DMAコントローラの転送サイズなど、そのシステムのハードウェア(HW)仕様によって制約される場合もある。
不揮発性記憶領域制御部212は、データ領域アドレス変換部2121、ECC領域アクセス制御部2122、レジスタ(レジスタ領域ARRG)2123、および内部不揮発性メモリとしてのレジスタ設定保存部2124を有する。
また、図6において、ABはアドレスバスを、CBは制御信号バスを、DBはデータバスを示している。
レジスタ2123は、レジスタ領域ARRGとしてメモリコントローラ22からアクセスされる。
データ領域アドレス変換部2121は、レジスタ2123に設定された各単位サイズの値に従ってNVRAM21に入力されたアドレスを内部アドレスに変換する方法を切換える機能を有している。
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のデータにアクセスする。
アドレスREG[0]は、データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」であり、データ領域ARDTのアクセス単位のサイズを設定するために使用される。
データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」は、読み出し(Read)時には、データ領域単位サイズが取得される。
データ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」は、書き込み(Write)時には、データ領域単位サイズ値が設定される。
ECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」は、読み出し(Read)には、ECC領域単位サイズが取得される。
ECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」は、書き込み(Write)時には、ECC領域単位サイズが設定される。
本レジスタが存在しない場合には、不揮発性記憶領域制御部212が不揮発性領域設定機能として、ECC領域ARECをマッピングするデータ領域ARDTのアクセス単位数に対して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に値が設定される。
したがってアドレスREG[8]、REG[12]の8バイト分の2つのECCコードレジスタ「ECC_CODE_(0,1)_REG」がECC領域ARECのアドレスECC「2」に割り当てられている。
またこれに加えて、メモリコントローラ22は、NVRAM21がECC領域単位サイズレジスタのような、ECC領域ARECのECC領域単位サイズを設定する機能を持つ場合には、ECC領域単位サイズを設定する機能も有する。
NVRAM制御部221は、ホスト装置30からのデータ書き込み時には、NVRAM21の不揮発性記憶領域211のデータ領域ARDTのデータ領域単位サイズのアクセスごとにECCコードを計算し、その結果をECC領域ARECに記録する。
NVRAM制御部221は、データ読出し時には、不揮発性記憶領域211のデータ領域ARDTからデータを、ECC領域ARECから図7に示したレジスタ経由でECCコードを読み出す。
NVRAM制御部221は、読み出したECCコードを利用してデータ領域ARDTから読みだしたデータの確認・訂正を行う。
NVRAM制御部221は、これにより、データ信頼性を向上させることができる。
図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に書込まれる。
以下に具体例を示す。
この例は、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のように使用することができる。
この例は、CPUのデータ領域として、データ領域ARDTが128バイト単位で、読み出し(Read)/書き込み(Write)アクセスする場合で、4バイトのECCが必要である場合である。
図7に示すようなレジスタ領域ARRGに対し、「DATA_UNIT_SIZE_REG」=0x80、「ECC_UNIT_SIZE_REG」=0x04を設定する。
不揮発性記憶領域設定機能は、データ領域単位サイズをデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に書き込み(ST1)、ECC領域単位サイズをECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に書き込む(ST2)。
図11は、読み出し(Read)時のデータ領域およびECC領域へのアクセス処理について説明するためのフローチャートである。
図12は、書き込み(Write)時のデータ領域およびECC領域へのアクセス処理について説明するためのフローチャートである。
なお、ここでは、NVRAM21のデータバス幅が32ビット(4バイト)であり、データ領域もECC領域もこのバス幅でアクセスされる場合を例に説明する。したがって、ホスト側も4バイトの倍数をアクセス単位のサイズとして選択する。
この読み出しは、バイトカウント値がレジスタ領域ARRGのデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズまで行われる(ST14)。
ステップST14において、バイトカウント値がデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズを越えていると判定されると、データの読み出しに続いてECC領域ARECのECCコードが読み出される。
この読み出しは、バイトカウント値がレジスタ領域ARRGのECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズまで行われる(ST18)。
ステップST18において、バイトカウント値がECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズを越えていると判定されると、データおよびECCコードの読み出しが終了される。
この書き込みは、バイトカウント値がレジスタ領域ARRGのデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズまで行われる(ST24)。
ステップST14において、バイトカウント値がデータ領域単位サイズレジスタ「DATA_UNIT_SIZE_REG」に設定されているデータ領域単位サイズを越えていると判定されると、データの書き込みに続いてECC領域ARECのECCコードが書き込まれる。
この書き込みは、バイトカウント値がレジスタ領域ARRGのECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズまで行われる(ST28)。
ステップST28において、バイトカウント値がECC領域単位サイズレジスタ「ECC_UNIT_SIZE_REG」に設定されているECC領域単位サイズを超えていると判定されると、データおよびECCコードの書き込みが終了される。
図13(A)および(B)は、データ領域単位サイズ分のデータ領域と、ECC領域単位サイズ分のECC領域に連続してアクセスする処理を説明するための図である。
図13(A)は、データ領域単位サイズ分のデータ領域と、ECC領域単位サイズ分のECC領域に連続してアクセスする処理を説明するためのフローチャートである。
図13(B)は、データ領域単位サイズ分のデータ領域と、ECC領域単位サイズ分のECC領域に連続してアクセスする処理で用いられるレジスタ領域の一例を示している。
すなわち、コマンド設定レジスタ「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領域それぞれの単位サイズは、連続アクセス処理開始以前に設定済みであるとする。
次に、コマンド設定レジスタ「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)。
図14は、データ領域ARDTのデータ領域単位サイズを設定する場合に、その設定を有効とするデータ領域のアドレス範囲を指定するための拡張を行った場合のレジスタ領域ARRGの一例を示す図である。
この場合、図14に示すように、レジスタ領域ARRGに、図7等のレジスタに加えてデータ領域開始アドレス設定レジスタ「DATA_START_ADR_REG」とデータ領域サイズレジスタ「DATA_SIZE_REG」の2つのレジスタが追加されている。
データ領域ARDT、ECC領域ARECの各単位サイズを設定するデータ領域上の先頭アドレスが設定される。
この状態で、「DATA_SIZE_REG」に書き込みを行うことによって、DATA_UNIT_SIZE_REG、ECC_UNIT_SIZE_REGに設定した各単位サイズが有効であるデータ領域ARDT上のアドレス領域のサイズの設定が可能である。
これによってメモリコントローラ22は、そのデータ領域に設定したデータ領域単位サイズを確認することが可能である。
この状態で、「DATA_UNIT_SIZE_REG」に書き込みを行うことによってデータ領域単位サイズの変更が可能である。
これによってメモリコントローラ22は、そのデータ領域に設定したECC領域単位サイズを確認することが可能である。
この状態で、「ECC_UNIT_SIZE_REG」に書き込みを行うことによってECC領域単位サイズの変更が可能である。
書き込み(Write)時には、データ領域ARDTへアクセスした際、そのデータ領域に割り当てられたECC領域ARECの値を設定する。
Xの値は、ECC_UNIT_SIZE_REGの設定として有効な最大値によって決まり、アクセス時に使用するECC_CODE_0_REG〜ECC_CODE_X_REGの範囲はそのアドレスに割り当てられたECC領域のサイズによって決まる。
保存する機能を持たない場合は、たとえば上記NVRAMを制御、管理するメモリコントローラ22がNVRAM21の初期化処理の一部としてレジスタに毎回設定する。
図15(A)および(B)は、NVRAM内の設定保存機能の有無に応じた設定情報の処理を説明するためのフローチャートである。
この場合、NVRAM21への初期化後、たとえばリセット解除後、設定保存部から自動的に設定がロードされる(ST41)。
この場合、NVRAM21にアクセスを開始する前にメモリコントローラ22がレジスタ設定を行う(ST42)。設定後、初期化し、NVRAM21にアクセスが開始される(ST43)。
図16は、本発明の第2の実施形態に係るNVRAMの構成例を示す図である。
この場合も第1の実施形態と同様に、データ領域211A−1はメモリコントローラ22から与えられたアドレスでアクセスされ、ECC領域211A−2は不揮発性記憶領域制御部212によって生成されたアドレスでアクセスされる。
バイトの単位でランダムアクセス可能なNVRAMにおいて、アプリケーションに適した仕様に従ってホスト装置側が設定できる。
ホスト装置が設定したサイズでランダムアクセスされることを前提にNVRAM内の構成を変更することができる。
ECC領域に保存されるECCコードはホスト側で計算され、読み出し時にデータエラーからの復帰を可能にすることで、結果としてNVRAMの書換え回数を改善することができる。
つまり、リードオンリ(Read Only)なデータの場合には、ECC性能は最小限あるいは不要の設定が可能であり、煩雑に書込みを行うデータの場合には、ECC性能を最大限に設定しデータの信頼性を上げるといったことが可能である。
ホスト装置は上記のような設定をメモリコントローラ内のNVM制御部を通して、NVRAMに対して設定することが可能である。
ECCコードのサイズは、対象とするデータサイズと必要とされるECCの訂正・検出能力によって決まる。
つまり本実施形態によって、その不揮発性メモリを使用するホストはその上で動作するアプリケーションに最適なアクセス単位サイズ、ECC性能によってNVRAMへのアクセス方法を決定することができる。
このアクセス単位は、もしホスト装置とメモリコントローラ間のデータ転送としてDMA転送などで高速アクセスを行う場合には、DMA転送可能なサイズに合わせて決定することも可能である。
そして、ECCコードを付加することによるデータ変更時のオーバーヘッドを小さくすることができる。
アクセスするサイズとデータ領域単位サイズが不一致のため、ECCを計算するために必ずWord(32Bit)で読み出す必要が発生する。
ここでは32Bitを例としたがこのデータ領域単位サイズが大きいほど、ECCを計算するために読み出すデータ量は増加し、オーバーヘッドが増大することでパフォーマンスを低下させる。
本実施形態によれば、データ領域単位サイズをアクセスサイズに合わせることでECC計算のために余分なデータの読出しが不要となる。
アクセスするサイズとデータ領域単位サイズは一致するが、データ境界が不一致のため、ECCを計算するために必ず2Word読み出す必要が発生する。
本実施形態によれば、データ領域単位サイズの境界を合わせることでECC計算を1回にすることができる。
Claims (13)
- ランダムアクセス可能で、データを保存するデータ領域と、エラー訂正コード(ECC)を保存するためのECC領域の2つの領域を含む不揮発性記憶領域と、
上記データ領域にアクセスする際に使用するデータサイズをデータ領域単位サイズとして外部から設定するための不揮発性記憶領域設定機能を実現し、上記設定されたデータ領域単位サイズに従って上記データ領域とECC領域を管理し、上記データ領域のデータ領域単位サイズごとに、当該データ領域の各アクセス単位にマッピングするように設定したECC領域単位サイズのECC領域を割り当てる機能を含む不揮発性記憶領域制御部と、を有し、
上記不揮発性記憶領域制御部は、
レジスタ領域として、
上記データ領域のアクセス単位のサイズである上記データ領域単位サイズを設定するためのデータ領域単位サイズレジスタと、
上記データ領域のアクセス単位に割り当てられるECC領域のサイズである上記ECC領域単位サイズを設定するためのECC領域単位サイズレジスタと、
上記ECC領域との間でECCコードを入出力するためのECCコードレジスタと、を含み、
アドレス指定された上記データ領域であって、上記データ領域単位サイズレジスタに設定されたサイズの上記データ領域へアクセスし、
アクセスする上記データ領域に割り当てられた上記ECC領域へアクセスするに際し、上記データ領域を指定するためのデータアドレスから当該割り当てられたECC領域へのアクセスアドレスを生成し、
上記ECC領域単位サイズレジスタに設定されたECC領域のECC領域単位サイズの値に従って、上記ECCコードレジスタと上記ECC領域の間でECCコードの転送を行う
不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
読み出し時には、
上記データ領域のデータの読み出しを、上記レジスタ領域の上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズまで行い、
読み出したデータサイズが、上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズを越えていると判定すると、上記ECC領域のECCコードの読み出しを、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズまで行い、
読み出したECCコードサイズが、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズを越えていると判定すると、データおよびECCコードの読み出しを終了する
請求項1記載の不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
書き込み時には、
上記データ領域へのデータの書き込みを、上記レジスタ領域の上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズまで行い、
書き込んだデータサイズが、上記データ領域単位サイズレジスタに設定されているデータ領域単位サイズを越えていると判定すると、上記ECC領域へのECCコードの書き込みを、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズまで行い、
書き込んだECCコードのサイズが、上記ECC領域単位サイズレジスタに設定されているECC領域単位サイズを超えていると判定すると、データおよびECCコードの書き込みを終了する
請求項1または2記載の不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
上記レジスタ領域に、
実行するコマンドを設定するためのコマンドレジスタと、
転送するデータを設定するためのデータ転送レジスタと、
コマンドの引数となるデータ領域のアドレスを設定するためのデータアドレスレジスタと、をさらに含み、
上記データアドレスレジスタに対してコマンドの引数となるデータ領域のアドレスを設定し、上記コマンドレジスタにコマンドを設定し、当該コマンドが読み出しコマンドの場合には、上記データ転送レジスタを繰り返し読み出すことによってデータの連続転送を行い、コマンドが書き込みコマンドの場合には、上記データレ転送ジスタに繰り返し書き込むことによってデータの連続転送を行う
請求項1不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
上記コマンドが読み出しコマンドの場合は、
上記データアドレスレジスタに読み出しを行うデータ領域のアドレスを設定し、上記コマンドレジスタに読み出しコマンドを設定して連続アクセス処理を開始し、
指定したデータ領域のアドレスから上記データ領域単位サイズのデータを上記データ転送レジスタに連続して出力させ、
当該データ領域に割り当てられたECC領域のECC領域単位サイズのデータを上記データ転送レジスタに連続して出力させ、
上記コマンドが書き込みコマンドの場合は、
上記データアドレスレジスタに書き込みを行うデータ領域のアドレスを設定し、上記コマンドレジスタに書き込みコマンドを設定して連続アクセス処理を開始し、
指定したデータ領域のアドレスに書き込み上記データ領域単位サイズのデータを上記データ転送レジスタに連続して入力し、上記データ領域に対するデータの書き込みを実行し、
当該データ領域に割り当てられたECC領域のECC領域単位サイズのECCコードのデータを上記データ転送レジスタに連続して入力し、上記ECC領域に対するECCコードの書き込みを実行する
請求項4不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
上記レジスタ領域に、
上記データ領域、上記ECC領域の各単位サイズを設定するデータ領域上の先頭アドレスを設定するためのデータ領域開始アドレス設定レジスタと、
データ領域のサイズを設定するためのデータ領域サイズレジスタと、をさらに含み、
上記データ領域開始アドレス設定レジスタにアドレス値を設定することによって、上記データ領域サイズレジスタを介して、読み出し時には、上記データ領域開始アドレス設定レジスタで指定されたアドレスを先頭とする領域のサイズを返し、
この状態で、上記データ領域サイズレジスタに書き込みを行うことによって、上記データ領域単位サイズレジスタ、上記ECC領域単位サイズレジスタに設定した各単位サイズが有効である上記データ領域のアドレス領域のサイズの設定を行う
請求項1記載の不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
上記データ領域開始アドレス設定レジスタにアドレス値を設定することによって、上記データ領域単位サイズレジスタを介して、読み出し時には、上記データ領域開始アドレス設定レジスタで指定されたアドレスのデータ領域単位サイズを返し、
この状態で、上記データ領域単位サイズレジスタに書き込みを行うことによって、データ領域単位サイズの変更を行う
請求項6記載の不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部は、
上記データ領域開始アドレス設定レジスタにアドレス値を設定することによって、上記ECC領域単位サイズレジスタを介して、読み出し時には、上記データ領域開始アドレス設定レジスタで指定されたアドレスのECC領域単位サイズを返し、
この状態で、上記ECC領域単位サイズレジスタに書き込みを行うことによってECC領域単位サイズの変更を行う
請求項6または7記載の不揮発性ランダムアクセスメモリ。 - 上記不揮発性記憶領域制御部で設定した情報を内部不揮発性記憶部に保持する機能を有する
請求項1から8のいずれか一に記載の不揮発性ランダムアクセスメモリ。 - 上記内部不揮発性記憶部に保持された設定情報を初期化処理の一部として外部からのアクセスを開始する前に、不揮発性記憶領域制御部へ読み込む機能を有する
請求項9記載の不揮発性ランダムアクセスメモリ。 - 初期化処理終了後、アプリケーションの必要に応じて再設定は可能である
請求項10記載の不揮発性ランダムアクセスメモリ。 - ランダムアクセス可能な不揮発性ランダムアクセスメモリと、
上記不揮発性ランダムアクセスメモリへのアクセスを制御するメモリコントローラと、を有し、
上記不揮発性ランダムアクセスメモリは、
ランダムアクセス可能で、データを保存するデータ領域と、エラー訂正コード(ECC)を保存するためのECC領域の2つの領域を含む不揮発性記憶領域と、
上記データ領域にアクセスする際に使用するデータサイズをデータ領域単位サイズとして外部から設定するための不揮発性記憶領域設定機能を実現し、上記設定されたデータ領域単位サイズに従って上記データ領域とECC領域を管理し、上記データ領域のデータ領域単位サイズごとに、当該データ領域の各アクセス単位にマッピングするように設定したECC領域単位サイズのECC領域を割り当てる機能を含む不揮発性記憶領域制御部と、を有し、
上記不揮発性記憶領域制御部は、
レジスタ領域として、
上記データ領域のアクセス単位のサイズである上記データ領域単位サイズを設定するためのデータ領域単位サイズレジスタと、
上記データ領域のアクセス単位に割り当てられるECC領域のサイズである上記ECC領域単位サイズを設定するためのECC領域単位サイズレジスタと、
上記ECC領域との間でECCコードを入出力するためのECCコードレジスタと、を含み、
アドレス指定された上記データ領域であって、上記データ領域単位サイズレジスタに設定されたサイズの上記データ領域へアクセスし、
アクセスする上記データ領域に割り当てられた上記ECC領域へアクセスするに際し、上記データ領域を指定するためのデータアドレスから当該割り当てられたECC領域へのアクセスアドレスを生成し、
上記ECC領域単位サイズレジスタに設定されたECC領域のECC領域単位サイズの値に従って、上記ECCコードレジスタと上記ECC領域の間でECCコードの転送を行う
不揮発性メモリシステム。 - 上記メモリコントローラは、
上記不揮発性記憶領域制御部を制御し、上記データ領域単位サイズを設定する機能と、上記ECC領域単位サイズを設定する機能を含む
請求項12記載の不揮発性メモリシステム。
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)
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)
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 | 記憶装置、データ転送制御装置、データ転送方法およびデータ転送プログラム |
-
2009
- 2009-08-06 JP JP2009183517A patent/JP5668279B2/ja not_active Expired - Fee Related
-
2010
- 2010-06-16 US US12/816,685 patent/US8429494B2/en active Active
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 |