JP2012164072A - Memory controller - Google Patents
Memory controller Download PDFInfo
- Publication number
- JP2012164072A JP2012164072A JP2011023021A JP2011023021A JP2012164072A JP 2012164072 A JP2012164072 A JP 2012164072A JP 2011023021 A JP2011023021 A JP 2011023021A JP 2011023021 A JP2011023021 A JP 2011023021A JP 2012164072 A JP2012164072 A JP 2012164072A
- Authority
- JP
- Japan
- Prior art keywords
- data
- error correction
- host
- memory
- bit number
- 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.)
- Withdrawn
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
本発明の実施形態は、メモリコントローラに関する。 Embodiments described herein relate generally to a memory controller.
近年、NAND型フラッシュメモリは、メモリセルに多値技術を適用することで記憶容量を増加させている。このようなNAND型フラッシュメモリにおける信頼性の向上を図るため、ホストおよびNAND型フラッシュメモリに接続可能でNAND型フラッシュメモリを管理するメモリコントローラにおいて、エラー検査・訂正(ECC:Error Checking and Correction)を行うECC回路技術が提案されている。 In recent years, NAND flash memories have increased storage capacity by applying multilevel technology to memory cells. In order to improve the reliability of such a NAND flash memory, error checking and correction (ECC) is performed in a memory controller that can be connected to a host and the NAND flash memory and manages the NAND flash memory. ECC circuit technology to perform has been proposed.
通常、ECCを行うメモリコントローラは、エラー訂正ビット数を固定にしている。このため、フラッシュメモリの信頼性によってはエラー訂正ビット数が過剰となる。その結果、エラー訂正処理時間および消費電力が必要以上に掛かってしまう。また、エラー訂正用のデータも余分に必要になる。 Usually, a memory controller that performs ECC fixes the number of error correction bits. For this reason, the number of error correction bits becomes excessive depending on the reliability of the flash memory. As a result, the error correction processing time and power consumption are more than necessary. Also, extra data for error correction is required.
エラー訂正処理時間の短縮、消費電力の削減、およびエラー訂正用データの削減を図るメモリコントローラを提供する。 A memory controller that shortens error correction processing time, reduces power consumption, and reduces error correction data is provided.
本実施形態によるメモリコントローラは、ホストからのコマンドに従って2値または多値での書き込み、読み出し、および消去可能な複数のメモリセルを有するメモリを制御するメモリコントローラであって、前記ホストとの間でコマンドおよびデータをアクセスするホストインターフェイスと、前記メモリとの間でコマンドおよびデータをアクセスするメモリインターフェイスと、前記ホストインターフェイスを介して前記ホストからのコマンドに従って前記メモリインターフェイスを制御する制御部と、を具備し、前記メモリインターフェイスは、前記ホストからのデータを前記メモリに書きこむ際、前記メモリへの書き込みが2値書き込みの場合、前記ホストからのデータに対してiビットの第1エラー訂正ビット数を設定し、前記メモリへの書き込みが多値書き込みの場合、前記ホストからのデータに対してjビット(i<j)の第2エラー訂正ビット数を設定するエラー訂正ビット数設定部と、前記エラー訂正ビット数設定部により、前記第1エラー訂正ビット数が設定された場合、kバイトの第1エラー訂正コードを生成して前記ホストからのデータに付加し、前記第2エラー訂正ビット数が設定された場合、l(k<l)バイトの第2エラー訂正コードを生成して前記ホストからのデータに付加するエラー訂正コード生成付加部と、を備える。 The memory controller according to the present embodiment is a memory controller that controls a memory having a plurality of memory cells that can be written, read, and erased in binary or multi-value according to a command from the host. A host interface for accessing commands and data; a memory interface for accessing commands and data to and from the memory; and a control unit for controlling the memory interface according to commands from the host via the host interface. When the memory interface writes the data from the host into the memory, if the write to the memory is binary writing, the memory interface sets the first error correction bit number of i bits to the data from the host. Set When the multi-level write is performed, the error correction bit number setting unit for setting the second error correction bit number of j bits (i <j) for the data from the host, and the error correction bit number setting When the first error correction bit number is set by the unit, a first error correction code of k bytes is generated and added to the data from the host, and when the second error correction bit number is set, an error correction code generation / addition unit that generates a second error correction code of l (k <l) bytes and adds the second error correction code to data from the host.
本実施形態を以下に図面を参照して説明する。図面において、同一部分には同一の参照符号を付す。 The present embodiment will be described below with reference to the drawings. In the drawings, the same parts are denoted by the same reference numerals.
<構成例>
以下に、図1乃至図5を用いて、本実施形態におけるメモリコントローラ100の構成について説明する。図1は、本実施形態におけるメモリコントローラ100の構成例を示すブロック図である。
<Configuration example>
Hereinafter, the configuration of the
図1に示すように、メモリコントローラ100は、ホスト200およびNAND型フラッシュメモリ(以下、単にフラッシュメモリと称す)300に接続可能である。このメモリコントローラ100は、ホスト200に接続されたとき、電源が供給されて動作し、ホスト200からのアクセスに応じた処理を行う。例えば、メモリコントローラ100は、フラッシュメモリ300に対するデータの書き込み、データの読み出し、およびデータの消去等のアクセスにおいて、フラッシュメモリ300を管理し、制御する。
As shown in FIG. 1, the
ホスト200は、接続されるフラッシュメモリ300にアクセスするためのハードウェアおよびソフトウェア(システム)を備えている。このホスト200は、メモリコントローラ100を介してフラッシュメモリ300に対して、データの書き込み、データの読み出し、およびデータの消去等のアクセスを行う。
The
メモリコントローラ100は、ホストインターフェイス110、MPU(Micro Processing Unit)120、データバッファ130、およびフラッシュメモリインターフェイス140を有している。
The
ホストインターフェイス110は、メモリコントローラ100とホスト200との間のコマンドやデータ等のアクセスを行うために設けられ、これらの間のインターフェイス処理を行う。
The
データバッファ130は、ホスト200から送られてくるデータをフラッシュメモリ300へ書き込む際に、MPUからのコマンドに従い、一定量(例えば、1ページ分)のデータを一時的に記憶する。また、データバッファ130は、フラッシュメモリ300から読み出されるデータをホスト200へ送り出す際に、MPUからのコマンドに従い、一定量のデータを一時的に記憶したりする。
The
MPU120は、メモリコントローラ100全体の動作を制御する。このMPU120は、例えばメモリコントローラ100に電源が供給された場合、MPU120に格納されているファームウェア(制御プログラム)に従って処理を開始する。すなわち、MPU120は、処理に必要な各種テーブル(管理データ)を作成したり、ホスト200からの書き込みコマンド、読み出しコマンド、および消去コマンド等を受信してフラッシュメモリ300上の該当領域をアクセスしたりする。また、MPU120は、フラッシュメモリ300をアクセスするにあたってホスト200からの論理アドレスと物理アドレスとを変換したり、データバッファ130を介してデータ転送処理を制御したりする。なお、以下において、ホスト200から与えられるメモリコントローラ100のアドレスを論理アドレスと称し、フラッシュメモリ300内における実際のアドレスを物理アドレスと称す。
The MPU 120 controls the overall operation of the
フラッシュメモリインターフェイス140は、メモリコントローラ100とフラッシュメモリ300との間でコマンドやデータ等の送受信を行うために設けられ、これらの間のインターフェイス処理を行う。また、フラッシュメモリインターフェイス140は、ECCを行うECC回路150を有している。ECC回路150の詳細については後述する。
The
図2は、図1におけるフラッシュメモリ300の構成例を示すブロック図である。
FIG. 2 is a block diagram showing a configuration example of the
図2に示すように、フラッシュメモリ300は、メモリセルアレイ310、ページバッファ320を有している。
As shown in FIG. 2, the
メモリセルアレイ310は、複数のメモリブロックBLK0〜BLKn(nは自然数)を含んでいる。また、各メモリブロックBLKは、複数のメモリセルトランジスタを備えている。本例のメモリセルアレイ310は、1つのメモリセルトランジスタに多ビットのデータを記録することが可能な多値NAND型フラッシュメモリである場合を一例として説明する。なお、以下の説明において、メモリブロックBLK0〜BLKnを単にメモリブロックBLKと称することがある。
The
ここで、メモリセルトランジスタに多ビットのデータを書き込むモードを多値モード、メモリセルトランジスタに1ビットのデータを書き込むモードを2値モードと称する。この際、2値モードでデータが書き込まれたメモリセルトランジスタを多値モードで再度書きこむことが可能である。 Here, a mode in which multi-bit data is written into the memory cell transistor is referred to as a multi-value mode, and a mode in which 1-bit data is written into the memory cell transistor is referred to as a binary mode. At this time, the memory cell transistor in which data is written in the binary mode can be written again in the multi-value mode.
データの消去は、メモリブロックBLK単位で行われる。すなわち、同一メモリブロックBLK内のデータは一括して消去される。各メモリブロックBLKは、複数のメモリセルトランジスタを備えている。また、メモリブロックBLK内には、複数のワード線WL0、WL1、…(以下、ワード線WLと称する)と、ワード線WLに直交するビット線BL0、BL1、…(以下、ビット線BLと称する)とが設けられている。そして、同一行にあるメモリセルトランジスタは、同一のワード線に共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線BLに共通接続されている。 Data is erased in units of memory blocks BLK. That is, the data in the same memory block BLK is erased collectively. Each memory block BLK includes a plurality of memory cell transistors. In the memory block BLK, a plurality of word lines WL0, WL1,... (Hereinafter referred to as word lines WL) and bit lines BL0, BL1,... (Hereinafter referred to as bit lines BL) orthogonal to the word lines WL. ) And are provided. The memory cell transistors in the same row are commonly connected to the same word line. The memory cell transistors in the same column are commonly connected to the bit line BL in units of a plurality of memory cell transistors.
データの書き込みおよび読み出しは、複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を1ページと呼ぶ。なお、読み出し時および書き込み時において、ロウアドレスによっていずれかのワード線WLが選択され、カラムアドレスによっていずれかのビット線BLが選択される。 Data writing and reading are performed for each set of a plurality of memory cell transistors, and this set of memory cell transistors is called one page. At the time of reading and writing, one of the word lines WL is selected by the row address, and one of the bit lines BL is selected by the column address.
ページバッファ320は、メモリセルアレイ310へのデータ入出力を行い、データを一時的に保持する。ページバッファ320が保持可能なデータサイズは、各メモリブロックBLKのページサイズと同じである。データ書き込みなどの際、ページバッファ320は、メモリセルアレイ310に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
The
ここで、本実施形態におけるフラッシュメモリ300へのデータの書き込みにおいて、ブロック単位のデータ書き込みを行う場合、全てが空いているブロックBLKを確保してそのブロックBLKの先端ページから書き込みを行う。一方、ページ単位のデータ書き込みを行う場合、全てが空いているブロックBLKを確保してそのブロックBLKの先端ページから書き込みを行う、または、一部の領域が空いているブロックBLKを確保してそのブロックBLKの空いている領域の先端ページから書き込みを行う。
Here, in writing data to the
また、メモリコントローラ100は、フラッシュメモリ300のブロックBLKそれぞれの消去回数を記憶して管理し、ホスト200からのデータをブロックBLKに書き込む時において、その書き込みブロックBLKの消去回数データをフラッシュメモリ300に記憶する。さらに、メモリコントローラ100は、一部の領域が空いているブロックBLKそれぞれの読み出し回数を記憶して管理し、ホスト200からのデータの書き込み時において、その書き込みブロックBLKの読み出し回数データをフラッシュメモリ300に記憶する。この際、フラッシュメモリ300は、ブロックBLKの空いている領域の先端ページのアドレス情報も記憶する。
In addition, the
図3は、フラッシュメモリ300の2値(SLC:Single Level Cell)モードおよび多値(MLC:Multi Level Cell)モードについて説明するための図である。なお、本例では、多値モードのうち、4値モードを一例に挙げて説明する。また、図3において、横軸が閾値電圧Vthを示し、縦軸がメモリセルの存在確率を示している。
FIG. 3 is a diagram for explaining a binary (SLC: Single Level Cell) mode and a multi-level (MLC: Multi Level Cell) mode of the
まず、4値モードについて説明する。図3に示すように、メモリセルトランジスタは、閾値電圧Vthの低い順に“11”、“01”、“10”、“00”の4つのデータを保持できる。“11”データを保持するメモリセルトランジスタの閾値電圧Vthは、Vth<0Vである。“01”データを保持するメモリセルトランジスタの閾値電圧Vthは、0V<Vth<Vth1である。“10”データを保持するメモリセルトランジスタの閾値電圧Vthは、Vth1<Vth<Vth2である。“00”データを保持するメモリセルトランジスタの閾値電圧Vthは、Vth2<Vth<Vth3である。 First, the quaternary mode will be described. As shown in FIG. 3, the memory cell transistor can hold four data of “11”, “01”, “10”, and “00” in ascending order of the threshold voltage Vth. The threshold voltage Vth of the memory cell transistor holding “11” data is Vth <0V. The threshold voltage Vth of the memory cell transistor holding “01” data is 0V <Vth <Vth1. The threshold voltage Vth of the memory cell transistor holding “10” data is Vth1 <Vth <Vth2. The threshold voltage Vth of the memory cell transistor holding “00” data is Vth2 <Vth <Vth3.
次に、2値モードについて説明する。図示するようにメモリセルトランジスタは、閾値電圧Vthの低い順に“1”、“0”の2つのデータを保持できる。“1”データを保持するメモリセルトランジスタの閾値電圧Vthは、Vth<0Vである。“0”データを保持するメモリセルトランジスタの閾値電圧Vthは、Vth1<Vth<Vth2である。すなわち、“1”データは4値モードにおける“11”データに等しく、“0”データは4値モードにおける“10”データに等しい閾値電圧を有する。 Next, the binary mode will be described. As shown in the figure, the memory cell transistor can hold two data of “1” and “0” in ascending order of the threshold voltage Vth. The threshold voltage Vth of the memory cell transistor holding “1” data is Vth <0V. The threshold voltage Vth of the memory cell transistor holding “0” data is Vth1 <Vth <Vth2. That is, “1” data has a threshold voltage equal to “11” data in the 4-level mode, and “0” data has a threshold voltage equal to “10” data in the 4-level mode.
すなわち、言い換えると、2値モードとは、4値モードにおける2ビットデータのうち、下位ページのみを用いた動作モードと言うことができる。より具体的には、2ビットデータの下位ビットには下位ページアドレスが割り当てられ、上位ビットには上位ページアドレスが割り当てられる。メモリセルトランジスタに対して2値モードでデータを書き込む場合、メモリコントローラ100は、これらのページアドレスのうち下位ページアドレスのみを使用してフラッシュメモリ300にデータを書き込む。メモリセルトランジスタに対して多値モードでデータを書き込む場合、メモリコントローラ100は、上位ページアドレスと下位ページアドレスの両方を使用してフラッシュメモリ300にデータを書き込む。
In other words, the binary mode can be said to be an operation mode using only the lower page of the 2-bit data in the quaternary mode. More specifically, a lower page address is assigned to lower bits of 2-bit data, and an upper page address is assigned to upper bits. When writing data to the memory cell transistor in the binary mode, the
データの書き込みは、まず下位ページから行われる。消去状態を“11”(“−−”、−は不定の意味)とすると、まず下位ページが書き込まれることにより、メモリセルトランジスタは“11”(“−1”)、または“10”(“−0”)を保持する。2値モードの場合には、以上で書き込みは終了である。4値モードで書き込む場合には、次に上位ページが書き込まれる。その結果、“11”(“−1”)を保持するメモリセルトランジスタは、“11”または“01”を保持し、“10”(“−0”)を保持するメモリセルトランジスタは“10”または“00”を保持する。その他の8値モード、16値モード等についても同様である。以下、フラッシュメモリ300のメモリ領域のうち、メモリコントローラ100が2値モードでデータを書き込む領域をSLC領域と称し、メモリコントローラ100が多値モードでデータを書き込む領域をMLC領域と称する。
Data is written first from the lower page. If the erase state is “11” (“−−”, − means indefinite), first, the lower page is written, so that the memory cell transistor becomes “11” (“−1”) or “10” (“ −0 ″). In the binary mode, the writing is completed. When writing in the 4-value mode, the upper page is written next. As a result, the memory cell transistor holding “11” (“−1”) holds “11” or “01”, and the memory cell transistor holding “10” (“−0”) is “10”. Or, “00” is held. The same applies to the other 8-value mode and 16-value mode. Hereinafter, of the memory area of the
メモリセルトランジスタに対して2値モードでデータを書き込むか、または4値モードでデータを書き込むかについては、メモリコントローラ100が制御する。例えば、ホスト200から与えられるメモリコントローラ100の論理アドレスに応じて、メモリコントローラ100はその論理アドレスに対応するフラッシュメモリ300の物理アドレスに2値モードで書き込むか4値モードで書き込むかを判断する。
The
図4は、図1におけるECC回路150の構成例を示すブロック図である。
FIG. 4 is a block diagram showing a configuration example of the
図4に示すように、ECC回路150は、書き込み回路160および読み出し回路170を有している。書き込み回路160は、ホスト200からフラッシュメモリ300にデータの書き込みを行う際に動作し、エラー訂正ビット数設定部161およびエラー訂正コード生成付加部162を有している。読み出し回路170は、フラッシュメモリ300からホスト200にデータの読み出しを行う際に動作し、エラー訂正部171を有している。
As shown in FIG. 4, the
エラー訂正ビット数設定部161は、ホスト200からフラッシュメモリ300にデータの書き込みを行う際、そのデータに対するエラー訂正ビット数を必要に応じて変更して設定する。より具体的には、エラー訂正ビット数設定部161は、MPU120からのコマンドに従い、書き込まれるフラッシュメモリ300の信頼性や書き込まれるデータの重要性に応じて、エラー訂正ビット数を設定する。ここで、エラー訂正ビット数とは、データに付加されるエラー訂正コードを用いて訂正可能なデータ中のエラービット数である。すなわち、本実施形態において、エラー訂正ビット数は、可変であり、種々の条件によって設定される。例えば、エラー訂正ビット数は、書き込まれるフラッシュメモリ300の領域がSLC領域かMLC領域か、書き込まれるフラッシュメモリ300のブロックBLKの消去回数が閾値以上か否か、または書き込まれるデータが重要なデータであるか否か等、によって設定される。
When writing data from the
エラー訂正コード生成付加部162は、ホスト200からフラッシュメモリ300にデータの書き込みを行う際、エラー訂正ビット数設定部161で設定されたエラー訂正ビット数に応じたエラー訂正コード(エラー訂正用データ)を作成し、フラッシュメモリ300に書き込まれるデータに付加する。このエラー訂正コードのデータ量は、エラー訂正ビット数に応じて変更する。より具体的には、エラー訂正コードのデータ量は、エラー訂正ビット数が減少すれば減少し、エラー訂正ビット数が増加すれば増加する。
When writing data from the
エラー訂正部171は、フラッシュメモリ300からホスト200にデータを読み出す際、エラー訂正コード生成付加部162で生成付加されたエラー訂正コードに基づいて、データのエラー訂正を行う。
When the
図5(a)は、本実施形態におけるフラッシュメモリ300に書き込まれるデータ構成の比較例を示すブロック図であり、図5(b)は、本実施形態におけるフラッシュメモリ300に書き込まれるデータ構成を示すブロック図である。
FIG. 5A is a block diagram showing a comparative example of the data configuration written in the
図5(a)および(b)に示すように、フラッシュメモリ300に書き込まれるデータは、データ400,500、データ以外に必要な情報(例えば、管理データ)410,510、およびエラー訂正用データ420,520で構成されている。
As shown in FIGS. 5A and 5B, data written to the
比較例において、データ400はxバイト(例えば、512バイト)、データ以外に必要な情報410はyバイト(例えば、8バイト)、エラー訂正用データ420はzバイト(例えば、22バイト)である。これに対し、本実施形態において、データ500はxバイト、データ以外に必要な情報510はy+nバイト、エラー訂正用データ520はz−nバイトである。すなわち、比較例に対して、エラー訂正用データ520がnバイト削減され、データ以外に必要な情報510がnバイト増加することができる。これは、上述したように、エラー訂正ビット数を減少させることにより、エラー訂正用データ520が減少するためである。
In the comparative example, the
<書き込み動作>
以下に、図6および図7を用いて、本実施形態における書き込み動作について説明する。図6は、本実施形態における書き込み動作のフローチャートである。
<Write operation>
The write operation in this embodiment will be described below with reference to FIGS. FIG. 6 is a flowchart of the write operation in this embodiment.
図6に示すように、まず、ステップS11において、メモリコントローラ100は、ホスト200から入力されたデータをホストインターフェイス110を介して受信し、データバッファ130に記憶する。
As shown in FIG. 6, first, in step S <b> 11, the
次に、ステップS12において、メモリコントローラ100は、ホスト200から入力されたパラメータ設定コマンドをホストインターフェイス110を介して受信し、MPU120に記憶する。このパラメータ設定コマンドは、データバッファ130に記憶されたデータが重要であるか否かを通知するものである。パラメータ設定コマンドは、例えば、ホスト200から入力されたデータの有効ビット数、データの数、およびデータの圧縮方法等のパラメータが設定されたコマンドである。MPU120は、パラメータ設定コマンドを受信することにより、データが重要であるか否かを判断する。
Next, in step S <b> 12, the
次に、ステップS13において、メモリコントローラ100は、ホスト200から入力されたメモリコントローラ100の書き込み論理アドレスをホストインターフェイス110を介して受信し、MPU120に記憶する。MPU120は、この論理アドレスに基づいて、データバッファ130に記憶されたデータをSLCとして書き込むか、MLCとして書き込むかを判断する。その後、MPU120は、論理アドレスを書き込まれるフラッシュメモリ300の物理アドレスに変換する。
Next, in step S <b> 13, the
次に、ステップS14において、メモリコントローラ100は、ホスト200から入力された書き込みコマンドをホストインターフェイス110を介して受信する。その後、MPU120は、データバッファ130に記憶されたデータをフラッシュメモリインターフェイス140へと転送していく。
Next, in step S <b> 14, the
次に、ステップS15において、エラー訂正ビット数設定部161は、データバッファ130から転送されたデータのエラー訂正ビット数を設定する。ステップS15の詳細については、図7を用いて後述する。
Next, in step S15, the error correction bit
次に、ステップS16において、エラー訂正コード生成付加部162は、エラー訂正ビット数設定部161により設定されたエラー訂正ビット数に基づいて、エラー訂正コードを生成する。このエラー訂正コードのデータ量は、エラー訂正ビット数が大きければ大きくなり、エラー訂正ビット数が小さければ小さくなる。その後、エラー訂正コード生成付加部162は、エラー訂正コードをデータバッファ130から転送されたデータに付加する。
Next, in step S <b> 16, the error correction code generation /
次に、ステップS17において、エラー訂正コードが付加されたデータが指定されたフラッシュメモリ300の物理アドレスに書き込まれる。このようにして、ホスト200からフラッシュメモリ300への書き込み動作が行われる。
Next, in step S17, the data with the error correction code added is written to the designated physical address of the
図7は、図6におけるステップS15における動作の詳細を示すフローチャートである。 FIG. 7 is a flowchart showing details of the operation in step S15 in FIG.
図7に示すように、エラー訂正ビット数を設定する際、まず、ステップS21において、最大エラー訂正ビット数を設定する。この最大エラー訂正ビット数は、書き込まれるデータに対してエラー訂正され得る最大のビット数である。ここでは、一例として、最大エラー訂正ビット数を16ビットとする。 As shown in FIG. 7, when setting the number of error correction bits, first, in step S21, the maximum number of error correction bits is set. The maximum number of error correction bits is the maximum number of bits that can be error-corrected with respect to data to be written. Here, as an example, the maximum number of error correction bits is 16 bits.
次に、ステップS22において、アクセスするメモリ領域がMLC領域であるかSLC領域であるかを判断する。MLC領域であるかSLC領域であるかの判断は、図6におけるステップS13において受信された論理アドレスに基づいて行われる。 Next, in step S22, it is determined whether the memory area to be accessed is an MLC area or an SLC area. The determination as to whether it is the MLC area or the SLC area is made based on the logical address received in step S13 in FIG.
ステップS22においてアクセスするメモリ領域がSLC領域であると判断された場合(ステップS22のNo)、次に、ステップS23において設定されたエラー訂正ビット数を減少する。これは、フラッシュメモリ300においてSLC領域は、MLC領域よりも信頼性が高い領域であり、エラービット数が少なく済むためである。
If it is determined in step S22 that the memory area to be accessed is the SLC area (No in step S22), then the number of error correction bits set in step S23 is decreased. This is because the SLC region in the
なお、図2および図3において説明したように、フラッシュメモリ300においてメモリセルアレイ310内でSLC領域とMLC領域とは分かれておらず、各メモリセルをSLCまたはMLCとして機能させることができる。
As described with reference to FIGS. 2 and 3, in the
次に、ステップS24において、書き込まれるデータが重要なデータであるか否かを判断する。重要なデータであるか否かの判断は、図6におけるステップS12において受信されたパラメータ設定コマンドに基づいて行われる。なお、重要なデータとは、メモリコントローラ100がホスト200からパラメータ設定コマンドによって重要であると通知されたデータに限らず、メモリコントローラ100が内部で管理するデータ等も含まれる。
Next, in step S24, it is determined whether the data to be written is important data. The determination as to whether the data is important is made based on the parameter setting command received in step S12 in FIG. The important data is not limited to data that the
ステップS24において書き込まれるデータが重要なデータではないと判断された場合(ステップS24のNo)、次に、ステップS25において設定されたエラー訂正ビット数を減少する。 If it is determined in step S24 that the data to be written is not important data (No in step S24), then the number of error correction bits set in step S25 is decreased.
次に、ステップS26において、書き込まれるフラッシュメモリ300の消去回数が閾値を越えているか否かを判断する。フラッシュメモリ300において消去動作はブロックBLK毎に行われるため、消去回数はブロックBLK毎に異なっている。このブロックBLK毎の消去回数は、フラッシュメモリ300内に記憶されている。すなわち、フラッシュメモリ300の消去回数が閾値を越えているか否かの判断は、メモリコントローラ100が、ホスト200から受信した論理アドレスを物理アドレスに変換して、その物理アドレスのブロックBLKの消去回数データをフラッシュメモリ300から受信し、閾値と比較することにより行われる。なお、予めMPU120内に、消去回数の閾値として適当な値が記憶されている。
Next, in step S26, it is determined whether or not the erase count of the
ステップS27において消去回数が閾値を越えていないと判断された場合(ステップS26のNo)、次に、ステップS27において設定されたエラー訂正ビット数を減少する。これは、消去回数の少ないブロックBLKのほうが高い信頼性を有するためである。言い換えると、フラッシュメモリ300において消去回数が多くなると信頼性が低くなり、エラービット数が増加する。すなわち、消去回数に応じてブロックBLK毎にエラー訂正ビット数を可変にする。
If it is determined in step S27 that the number of erasures does not exceed the threshold (No in step S26), then the number of error correction bits set in step S27 is decreased. This is because the block BLK with a smaller number of erases has higher reliability. In other words, as the number of erases increases in the
以上の工程により、フラッシュメモリ300に書き込まれるエラー訂正ビット数が設定される。例えば、ステップS23、ステップS25、およびステップS27のいずれか1つの工程が行われた場合、エラー訂正ビット数はステップS21で設定された16ビットから12ビットに減少される。また、例えば、いずれか2つの工程が行われた場合、エラー訂正ビット数は16ビットから8ビットに減少される。さらに、例えば、全ての工程が行われた場合、エラー訂正ビット数は16ビットから4ビットに減少される。このように、種々の条件に応じて、エラー訂正ビット数設定部161によりエラー訂正ビット数を可変にすることができる。なお、上記エラー訂正ビット数は、一例であり、フラッシュメモリ300の規格等によって種々の値が設定され得る。また、ステップS22、ステップS24、およびステップS26の工程の順番はそれぞれ、入れ替えることも可能である。
Through the above steps, the number of error correction bits written to the
また、エラー訂正ビット数を可変にする条件は、ステップS22、ステップS24、およびステップS26の工程による判断に限らない。 Further, the condition for making the number of error correction bits variable is not limited to the determination in the steps S22, S24, and S26.
例えば、書き込まれるフラッシュメモリ300の読み出し回数が閾値を越えているか否かによってもエラー訂正ビット数を可変にしてよい。ページ単位のデータをフラッシュメモリ300に書き込む際、一部の領域が空いているブロックBLKにページ単位のデータが書き込まれる。この一部の領域が空いているブロックBLKの信頼性は、そのブロックBLKに記憶されているデータの読み出し回数に応じて変更する。このブロックBLKの読み出し回数は、フラッシュメモリ300内に記憶されている。すなわち、フラッシュメモリ300の読み出し回数が閾値を越えているか否かの判断は、メモリコントローラ100がホスト200から受信した論理アドレスを物理アドレスに変換して、その物理アドレスのブロックBLKの読み出し回数データをフラッシュメモリ300から受信し、閾値と比較することにより行われる。
For example, the number of error correction bits may be made variable depending on whether or not the read count of the
その後、読み出し回数が閾値を越えていると判断された場合、ブロックBLKに既に書き込まれているデータに付加されたエラー訂正コードのエラー訂正ビット数に対して、エラー訂正ビット数の多いエラー訂正コードが付加されたデータをブロックBLKの空いている領域に書き込む。これは、フラッシュメモリ300において読み出し回数が多くなると信頼性が低くなり、エラービット数が増加するためである。すなわち、ブロックBLK毎にエラー訂正ビット数を可変にする。
After that, when it is determined that the number of readings exceeds the threshold, the error correction code having a larger number of error correction bits than the error correction bit number of the error correction code added to the data already written in the block BLK Is written in an empty area of the block BLK. This is because when the number of readings in the
なお、ページ単位のデータを書き込む際、ブロックBLK内のページ毎のエラー訂正ビット数をフラッシュメモリ300内に記憶することにより、ブロックBLK毎ではなくブロックBLK内のページ毎にエラー訂正ビット数を可変にすることも可能である。
Note that when writing data in units of pages, the number of error correction bits for each page in the block BLK is stored in the
<読み出し動作>
以下に、本実施形態における読み出し動作について説明する。
<Read operation>
Hereinafter, the read operation in the present embodiment will be described.
読み出し動作では、まず、メモリコントローラ100は、ホスト200から入力されたメモリコントローラ100の読み出し論理アドレスをホストインターフェイス110を介して受信し、MPU120に記憶する。その後、MPU120は、論理アドレスを読み出されるフラッシュメモリ300の物理アドレスに変換する。
In the read operation, first, the
次に、メモリコントローラ100は、ホスト200から入力された読み出しコマンドをホストインターフェイス110を介して受信する。その後、MPU120は、フラッシュメモリ300の指定された物理アドレスに記憶されたデータをフラッシュメモリインターフェイス140へと読み出していく。
Next, the
次に、エラー訂正部171は、データバッファ130から読み出されたデータのエラー訂正を行う。このエラー訂正は、データバッファ130から読み出されたデータに付加されたエラー訂正コードに基づいて行われ、エラー訂正ビット数設定部161により設定されたビット数分行われる。すなわち、このエラー訂正において、エラー訂正ビット数およびエラー訂正コードのデータ量が少ないほど、エラー訂正処理時間の短縮および消費電力の削減を図ることできる。なお、データのエラー訂正の詳細については公知であるため省略する。エラー訂正が終了するとデータからエラー訂正コードが除去される。
Next, the
その後、エラー訂正されたデータは、データバッファ130に一時的に記憶され、ホストインターフェイス110を介してホスト200に読み出される。
Thereafter, the error-corrected data is temporarily stored in the
<効果>
上記実施形態によれば、ホスト200およびフラッシュメモリ300に接続可能なメモリコントローラ100は、ホスト200からフラッシュメモリ300にデータを書き込む際、種々の条件に応じてエラー訂正ビット数を変更させる。そして、その設定されたエラー訂正ビット数に基づいてエラー訂正コードを作成し、データに付加させてフラッシュメモリ300に書き込む。すなわち、信頼性が高い領域に書き込む場合やデータの重要度が低い場合に、エラー訂正ビット数を減少させることができる。これにより、余分なエラー訂正コードのデータ量を削減することができ、その分管理用データの容量を大きくすることができる。また、フラッシュメモリ300からホスト200へのデータ読み出しの際、エラー訂正の処理時間を短縮でき、これに伴い消費電力の削減を図ることができる。
<Effect>
According to the embodiment, the
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。 In addition, the present invention is not limited to the above-described embodiment, and various modifications can be made without departing from the scope of the invention in the implementation stage. Furthermore, the above embodiments include inventions at various stages, and various inventions can be extracted by appropriately combining a plurality of disclosed constituent elements. For example, even if some constituent requirements are deleted from all the constituent requirements shown in the embodiment, the problem described in the column of the problem to be solved by the invention can be solved, and the effect described in the column of the effect of the invention Can be obtained as an invention.
100…メモリコントローラ、110…ホストインターフェイス、120…MPU(制御部)、161…エラー訂正ビット数設定部、162…エラー訂正コード生成付加部、200…ホスト、300…フラッシュメモリ(メモリ)。
DESCRIPTION OF
Claims (5)
前記ホストとの間でコマンドおよびデータをアクセスするホストインターフェイスと、
前記メモリとの間でコマンドおよびデータをアクセスするメモリインターフェイスと、
前記ホストインターフェイスを介して前記ホストからのコマンドに従って前記メモリインターフェイスを制御する制御部と、
を具備し、
前記メモリインターフェイスは、
前記ホストからのデータを前記メモリに書きこむ際、前記メモリへの書き込みが2値書き込みの場合、前記ホストからのデータに対してiビットの第1エラー訂正ビット数を設定し、前記メモリへの書き込みが多値書き込みの場合、前記ホストからのデータに対してjビット(i<j)の第2エラー訂正ビット数を設定するエラー訂正ビット数設定部《161》と、
前記エラー訂正ビット数設定部により、前記第1エラー訂正ビット数が設定された場合、kバイトの第1エラー訂正コードを生成して前記ホストからのデータに付加し、前記第2エラー訂正ビット数が設定された場合、l(k<l)バイトの第2エラー訂正コードを生成して前記ホストからのデータに付加するエラー訂正コード生成付加部と、
を備えることを特徴とするメモリコントローラ。 A memory controller for controlling a memory having a plurality of memory cells capable of writing, reading and erasing in binary or multi-value according to a command from a host,
A host interface for accessing commands and data with the host;
A memory interface for accessing commands and data to and from the memory;
A control unit for controlling the memory interface according to a command from the host via the host interface;
Comprising
The memory interface is
When writing data from the host to the memory, if writing to the memory is binary writing, a first error correction bit number of i bits is set for the data from the host, and If the write is a multi-value write, an error correction bit number setting unit << 161 >> for setting a second error correction bit number of j bits (i <j) for the data from the host;
When the first error correction bit number is set by the error correction bit number setting unit, a first error correction code of k bytes is generated and added to the data from the host, and the second error correction bit number Is set, an error correction code generation / addition unit that generates a second error correction code of l (k <l) bytes and adds it to the data from the host;
A memory controller comprising:
ホストとの間でコマンドおよびデータをアクセスするホストインターフェイスと、
前記メモリとの間でコマンドおよびデータをアクセスするメモリインターフェイスと、
前記ホストインターフェイスを介して前記ホストからのコマンドに従って前記メモリインターフェイスを制御する制御部と、
を具備し、
前記メモリインターフェイスは、
前記ホストからのデータを前記メモリに書きこむ際、前記ホストからのデータが前記ホストからのコマンドによって通知されたデータである場合、前記ホストからのデータに対してmビットの第1エラー訂正ビット数を設定し、前記ホストからのデータが前記ホストからのコマンドによって通知されていないデータである場合、前記ホストからのデータに対してnビット(m<n)の第2エラー訂正ビット数を設定するエラー訂正ビット数設定部と、
前記エラー訂正ビット数設定部により、前記第1エラー訂正ビット数が設定された場合、kバイトの第1エラー訂正コードを生成して前記ホストからのデータに付加し、前記第2エラー訂正ビット数が設定された場合、l(k<l)バイトの第2エラー訂正コードを生成して前記ホストからのデータに付加するエラー訂正コード生成付加部と、
を備えることを特徴とするメモリコントローラ。 A memory controller for controlling a memory having a plurality of memory cells that can be written, read and erased according to a command from a host,
A host interface to access commands and data to and from the host;
A memory interface for accessing commands and data to and from the memory;
A control unit for controlling the memory interface according to a command from the host via the host interface;
Comprising
The memory interface is
When writing data from the host to the memory, if the data from the host is data notified by a command from the host, the first error correction bit number of m bits with respect to the data from the host And the second error correction bit number of n bits (m <n) is set for the data from the host when the data from the host is not notified by the command from the host. An error correction bit number setting section;
When the first error correction bit number is set by the error correction bit number setting unit, a first error correction code of k bytes is generated and added to the data from the host, and the second error correction bit number Is set, an error correction code generation / addition unit that generates a second error correction code of l (k <l) bytes and adds it to the data from the host;
A memory controller comprising:
ホストとの間でコマンドおよびデータをアクセスするホストインターフェイスと、
前記メモリとの間でコマンドおよびデータをアクセスするメモリインターフェイスと、
前記ホストインターフェイスを介して前記ホストからのコマンドに従って前記メモリインターフェイスを制御する制御部と、
を具備し、
前記メモリインターフェイスは、
前記ホストからのデータを前記メモリに書きこむ際、前記メモリの消去回数が閾値より少ない場合、前記ホストからのデータに対してmビットの第1エラー訂正ビット数を設定し、前記メモリの消去回数が閾値以上である場合、前記ホストからのデータに対してnビット(m<n)の第2エラー訂正ビット数を設定するエラー訂正ビット数設定部と、
前記エラー訂正ビット数設定部により、前記第1エラー訂正ビット数が設定された場合、kバイトの第1エラー訂正コードを生成して前記ホストからのデータに付加し、前記第2エラー訂正ビット数が設定された場合、l(k<l)バイトの第2エラー訂正コードを生成して前記ホストからのデータに付加するエラー訂正コード生成付加部と、
を備えることを特徴とするメモリコントローラ。 A memory controller for controlling a memory having a plurality of memory cells that can be written, read and erased according to a command from a host,
A host interface to access commands and data to and from the host;
A memory interface for accessing commands and data to and from the memory;
A control unit for controlling the memory interface according to a command from the host via the host interface;
Comprising
The memory interface is
When writing data from the host to the memory, if the number of erases of the memory is less than a threshold, a first error correction bit number of m bits is set for the data from the host, and the number of erases of the memory Is equal to or greater than a threshold value, an error correction bit number setting unit that sets a second error correction bit number of n bits (m <n) for data from the host;
When the first error correction bit number is set by the error correction bit number setting unit, a first error correction code of k bytes is generated and added to the data from the host, and the second error correction bit number Is set, an error correction code generation / addition unit that generates a second error correction code of l (k <l) bytes and adds it to the data from the host;
A memory controller comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011023021A JP2012164072A (en) | 2011-02-04 | 2011-02-04 | Memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011023021A JP2012164072A (en) | 2011-02-04 | 2011-02-04 | Memory controller |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012164072A true JP2012164072A (en) | 2012-08-30 |
Family
ID=46843411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011023021A Withdrawn JP2012164072A (en) | 2011-02-04 | 2011-02-04 | Memory controller |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012164072A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104919434A (en) * | 2012-12-07 | 2015-09-16 | 西部数据技术公司 | System and method for lower page data recovery in a solid state drive |
-
2011
- 2011-02-04 JP JP2011023021A patent/JP2012164072A/en not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104919434A (en) * | 2012-12-07 | 2015-09-16 | 西部数据技术公司 | System and method for lower page data recovery in a solid state drive |
JP2016501413A (en) * | 2012-12-07 | 2016-01-18 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | System and method for recovering lower page data in a solid state drive |
US9952939B1 (en) | 2012-12-07 | 2018-04-24 | Western Digital Technologies, Inc. | System and method for lower page data recovery in a solid state drive |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11386952B2 (en) | Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell | |
US8289771B2 (en) | Data reading method and control circuit and memory controller using the same | |
KR100902008B1 (en) | Memory system including mlc flash memory | |
US8578245B2 (en) | Data reading method, memory storage apparatus, and controller thereof | |
KR100823170B1 (en) | Memory system and memory card using bad block as slc mode | |
KR102089570B1 (en) | Storage device and data processing method thereof | |
US9478298B2 (en) | Memory system and method of reading data thereof | |
KR20130057758A (en) | Flash memory device and reading method of flash memory device | |
KR20080067509A (en) | Memory system determining program method according to data information | |
US20170162267A1 (en) | Data Storage Device and Data Maintenance Method | |
JP2020071843A (en) | Memory system | |
JP2009048680A (en) | Storage device | |
US9728264B2 (en) | Nonvolatile memory device, operating method thereof, and data storage device including the same | |
US9972390B2 (en) | Two pass memory programming method, memory control circuit unit and memory storage apparatus | |
WO2015155860A1 (en) | Information storage device and method for controlling information storage device | |
JP2018160056A (en) | Memory controller, memory system, and control method | |
CN105761754B (en) | Memory cell programming method, memory control circuit unit and memory device | |
JP2012164072A (en) | Memory controller | |
KR20120131487A (en) | Flash memory device and program method thereof | |
KR20140079912A (en) | Semiconductor memory device and operating method thereof | |
US11869584B2 (en) | Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell | |
KR20090110648A (en) | Flash Memory System Using Tresllis Coding Modulation | |
JP2023044471A (en) | Memory system and memory control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131205 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131212 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131219 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131226 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20140109 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140513 |