JP2012164072A - Memory controller - Google Patents

Memory controller Download PDF

Info

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
Application number
JP2011023021A
Other languages
Japanese (ja)
Inventor
Yasuaki Nakazato
康明 中里
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011023021A priority Critical patent/JP2012164072A/en
Publication of JP2012164072A publication Critical patent/JP2012164072A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

PROBLEM TO BE SOLVED: To achieve shortening of error correction processing time, reduction of power consumption and reduction of data for error correction.SOLUTION: A memory controller comprises: a memory interface; and a control part for controlling the memory interface in accordance with a command from a host. The memory interface comprises: an error correction bit number setting part 161 for setting a first error correction bit number with i-bit to data in the case of binary writing into a memory, and for setting a second error correction bit number with j-bit (i<j) to the data in the case of multi-value writing; and an error correction code generation and addition part 162 for generating and adding a first error correction code with k-byte to the data when the first error correction bit number is set by the error correction bit number setting part, and for generating and adding a second error correction code with l-byte (k<l) to the data when the second error correction bit number is set.

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.

特開2009−259113号公報JP 2009-259113 A

エラー訂正処理時間の短縮、消費電力の削減、およびエラー訂正用データの削減を図るメモリコントローラを提供する。   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.

本実施形態におけるメモリコントローラの構成例を示すブロック図。FIG. 3 is a block diagram showing a configuration example of a memory controller in the present embodiment. 本実施形態におけるフラッシュメモリの構成例を示すブロック図。1 is a block diagram showing a configuration example of a flash memory in the present embodiment. 本実施形態におけるフラッシュメモリの2値モードおよび多値モードについて説明するための図。The figure for demonstrating the binary mode and multi-value mode of the flash memory in this embodiment. 本実施形態におけるECC回路の構成例を示すブロック図。The block diagram which shows the structural example of the ECC circuit in this embodiment. 図5(a)は、本実施形態におけるフラッシュメモリに書き込まれるデータ構成の比較例を示すブロック図であり、図5(b)は、本実施形態におけるフラッシュメモリ300に書き込まれるデータ構成を示すブロック図。FIG. 5A is a block diagram showing a comparative example of the data configuration written in the flash memory in the present embodiment, and FIG. 5B is a block diagram showing the data configuration written in the flash memory 300 in the present embodiment. Figure. 本実施形態における書き込み動作のフローチャート。The flowchart of the write-in operation | movement in this embodiment. 本実施形態におけるエラー訂正ビット数設定動作のフローチャート。6 is a flowchart of an error correction bit number setting operation in the present embodiment.

本実施形態を以下に図面を参照して説明する。図面において、同一部分には同一の参照符号を付す。   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 memory controller 100 according to this embodiment will be described with reference to FIGS. 1 to 5. FIG. 1 is a block diagram illustrating a configuration example of the memory controller 100 according to the present embodiment.

図1に示すように、メモリコントローラ100は、ホスト200およびNAND型フラッシュメモリ(以下、単にフラッシュメモリと称す)300に接続可能である。このメモリコントローラ100は、ホスト200に接続されたとき、電源が供給されて動作し、ホスト200からのアクセスに応じた処理を行う。例えば、メモリコントローラ100は、フラッシュメモリ300に対するデータの書き込み、データの読み出し、およびデータの消去等のアクセスにおいて、フラッシュメモリ300を管理し、制御する。   As shown in FIG. 1, the memory controller 100 can be connected to a host 200 and a NAND flash memory (hereinafter simply referred to as a flash memory) 300. When the memory controller 100 is connected to the host 200, the memory controller 100 operates by being supplied with power, and performs processing according to access from the host 200. For example, the memory controller 100 manages and controls the flash memory 300 in access such as data writing, data reading, and data erasing to the flash memory 300.

ホスト200は、接続されるフラッシュメモリ300にアクセスするためのハードウェアおよびソフトウェア(システム)を備えている。このホスト200は、メモリコントローラ100を介してフラッシュメモリ300に対して、データの書き込み、データの読み出し、およびデータの消去等のアクセスを行う。   The host 200 includes hardware and software (system) for accessing the connected flash memory 300. The host 200 accesses the flash memory 300 via the memory controller 100 such as data writing, data reading, and data erasing.

メモリコントローラ100は、ホストインターフェイス110、MPU(Micro Processing Unit)120、データバッファ130、およびフラッシュメモリインターフェイス140を有している。   The memory controller 100 includes a host interface 110, an MPU (Micro Processing Unit) 120, a data buffer 130, and a flash memory interface 140.

ホストインターフェイス110は、メモリコントローラ100とホスト200との間のコマンドやデータ等のアクセスを行うために設けられ、これらの間のインターフェイス処理を行う。   The host interface 110 is provided for accessing commands, data, and the like between the memory controller 100 and the host 200, and performs interface processing between them.

データバッファ130は、ホスト200から送られてくるデータをフラッシュメモリ300へ書き込む際に、MPUからのコマンドに従い、一定量(例えば、1ページ分)のデータを一時的に記憶する。また、データバッファ130は、フラッシュメモリ300から読み出されるデータをホスト200へ送り出す際に、MPUからのコマンドに従い、一定量のデータを一時的に記憶したりする。   The data buffer 130 temporarily stores a certain amount (for example, one page) of data according to a command from the MPU when writing data sent from the host 200 to the flash memory 300. The data buffer 130 temporarily stores a certain amount of data in accordance with a command from the MPU when sending data read from the flash memory 300 to the host 200.

MPU120は、メモリコントローラ100全体の動作を制御する。このMPU120は、例えばメモリコントローラ100に電源が供給された場合、MPU120に格納されているファームウェア(制御プログラム)に従って処理を開始する。すなわち、MPU120は、処理に必要な各種テーブル(管理データ)を作成したり、ホスト200からの書き込みコマンド、読み出しコマンド、および消去コマンド等を受信してフラッシュメモリ300上の該当領域をアクセスしたりする。また、MPU120は、フラッシュメモリ300をアクセスするにあたってホスト200からの論理アドレスと物理アドレスとを変換したり、データバッファ130を介してデータ転送処理を制御したりする。なお、以下において、ホスト200から与えられるメモリコントローラ100のアドレスを論理アドレスと称し、フラッシュメモリ300内における実際のアドレスを物理アドレスと称す。   The MPU 120 controls the overall operation of the memory controller 100. For example, when power is supplied to the memory controller 100, the MPU 120 starts processing according to firmware (control program) stored in the MPU 120. That is, the MPU 120 creates various tables (management data) necessary for processing, or receives a write command, a read command, an erase command, etc. from the host 200 and accesses the corresponding area on the flash memory 300. . Further, the MPU 120 converts a logical address and a physical address from the host 200 when accessing the flash memory 300, and controls data transfer processing via the data buffer 130. In the following, the address of the memory controller 100 given from the host 200 is referred to as a logical address, and the actual address in the flash memory 300 is referred to as a physical address.

フラッシュメモリインターフェイス140は、メモリコントローラ100とフラッシュメモリ300との間でコマンドやデータ等の送受信を行うために設けられ、これらの間のインターフェイス処理を行う。また、フラッシュメモリインターフェイス140は、ECCを行うECC回路150を有している。ECC回路150の詳細については後述する。   The flash memory interface 140 is provided to transmit and receive commands and data between the memory controller 100 and the flash memory 300, and performs interface processing between them. Further, the flash memory interface 140 has an ECC circuit 150 that performs ECC. Details of the ECC circuit 150 will be described later.

図2は、図1におけるフラッシュメモリ300の構成例を示すブロック図である。   FIG. 2 is a block diagram showing a configuration example of the flash memory 300 in FIG.

図2に示すように、フラッシュメモリ300は、メモリセルアレイ310、ページバッファ320を有している。   As shown in FIG. 2, the flash memory 300 includes a memory cell array 310 and a page buffer 320.

メモリセルアレイ310は、複数のメモリブロックBLK0〜BLKn(nは自然数)を含んでいる。また、各メモリブロックBLKは、複数のメモリセルトランジスタを備えている。本例のメモリセルアレイ310は、1つのメモリセルトランジスタに多ビットのデータを記録することが可能な多値NAND型フラッシュメモリである場合を一例として説明する。なお、以下の説明において、メモリブロックBLK0〜BLKnを単にメモリブロックBLKと称することがある。   The memory cell array 310 includes a plurality of memory blocks BLK0 to BLKn (n is a natural number). Each memory block BLK includes a plurality of memory cell transistors. The case where the memory cell array 310 of this example is a multi-level NAND flash memory capable of recording multi-bit data in one memory cell transistor will be described as an example. In the following description, the memory blocks BLK0 to BLKn may be simply referred to as a memory block BLK.

ここで、メモリセルトランジスタに多ビットのデータを書き込むモードを多値モード、メモリセルトランジスタに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 page buffer 320 inputs / outputs data to / from the memory cell array 310 and temporarily holds data. The data size that can be held by the page buffer 320 is the same as the page size of each memory block BLK. When writing data, the page buffer 320 executes data input / output processing for the memory cell array 310 in units of one page corresponding to its own storage capacity.

ここで、本実施形態におけるフラッシュメモリ300へのデータの書き込みにおいて、ブロック単位のデータ書き込みを行う場合、全てが空いているブロックBLKを確保してそのブロックBLKの先端ページから書き込みを行う。一方、ページ単位のデータ書き込みを行う場合、全てが空いているブロックBLKを確保してそのブロックBLKの先端ページから書き込みを行う、または、一部の領域が空いているブロックBLKを確保してそのブロックBLKの空いている領域の先端ページから書き込みを行う。   Here, in writing data to the flash memory 300 in the present embodiment, when writing data in units of blocks, an empty block BLK is secured and writing is performed from the leading page of the block BLK. On the other hand, when writing data in units of pages, a block BLK that is all free is secured and writing is performed from the leading page of the block BLK, or a block BLK that is partially free is secured and the block BLK is written. Writing is performed from the leading page of the vacant area of the block BLK.

また、メモリコントローラ100は、フラッシュメモリ300のブロックBLKそれぞれの消去回数を記憶して管理し、ホスト200からのデータをブロックBLKに書き込む時において、その書き込みブロックBLKの消去回数データをフラッシュメモリ300に記憶する。さらに、メモリコントローラ100は、一部の領域が空いているブロックBLKそれぞれの読み出し回数を記憶して管理し、ホスト200からのデータの書き込み時において、その書き込みブロックBLKの読み出し回数データをフラッシュメモリ300に記憶する。この際、フラッシュメモリ300は、ブロックBLKの空いている領域の先端ページのアドレス情報も記憶する。   In addition, the memory controller 100 stores and manages the number of erases of each block BLK of the flash memory 300, and when the data from the host 200 is written to the block BLK, the erase number data of the write block BLK is stored in the flash memory 300. Remember. Further, the memory controller 100 stores and manages the number of readings of each block BLK in which a part of the area is vacant, and when the data is written from the host 200, the number of readings of the writing block BLK is stored in the flash memory 300. To remember. At this time, the flash memory 300 also stores address information of the leading page of the vacant area of the block BLK.

図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 flash memory 300. In this example, the four-value mode will be described as an example of the multi-value mode. In FIG. 3, the horizontal axis indicates the threshold voltage Vth, and the vertical axis indicates the existence probability of the memory cell.

まず、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 memory controller 100 writes data to the flash memory 300 using only the lower page address among these page addresses. When writing data to the memory cell transistor in the multi-value mode, the memory controller 100 writes data to the flash memory 300 using both the upper page address and the lower page address.

データの書き込みは、まず下位ページから行われる。消去状態を“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 flash memory 300, an area in which the memory controller 100 writes data in the binary mode is referred to as an SLC area, and an area in which the memory controller 100 writes data in the multi-value mode is referred to as an MLC area.

メモリセルトランジスタに対して2値モードでデータを書き込むか、または4値モードでデータを書き込むかについては、メモリコントローラ100が制御する。例えば、ホスト200から与えられるメモリコントローラ100の論理アドレスに応じて、メモリコントローラ100はその論理アドレスに対応するフラッシュメモリ300の物理アドレスに2値モードで書き込むか4値モードで書き込むかを判断する。   The memory controller 100 controls whether data is written to the memory cell transistor in the binary mode or in the quaternary mode. For example, according to the logical address of the memory controller 100 given from the host 200, the memory controller 100 determines whether to write to the physical address of the flash memory 300 corresponding to the logical address in the binary mode or the quaternary mode.

図4は、図1におけるECC回路150の構成例を示すブロック図である。   FIG. 4 is a block diagram showing a configuration example of the ECC circuit 150 in FIG.

図4に示すように、ECC回路150は、書き込み回路160および読み出し回路170を有している。書き込み回路160は、ホスト200からフラッシュメモリ300にデータの書き込みを行う際に動作し、エラー訂正ビット数設定部161およびエラー訂正コード生成付加部162を有している。読み出し回路170は、フラッシュメモリ300からホスト200にデータの読み出しを行う際に動作し、エラー訂正部171を有している。   As shown in FIG. 4, the ECC circuit 150 includes a write circuit 160 and a read circuit 170. The write circuit 160 operates when data is written from the host 200 to the flash memory 300 and includes an error correction bit number setting unit 161 and an error correction code generation / addition unit 162. The read circuit 170 operates when data is read from the flash memory 300 to the host 200, and includes an error correction unit 171.

エラー訂正ビット数設定部161は、ホスト200からフラッシュメモリ300にデータの書き込みを行う際、そのデータに対するエラー訂正ビット数を必要に応じて変更して設定する。より具体的には、エラー訂正ビット数設定部161は、MPU120からのコマンドに従い、書き込まれるフラッシュメモリ300の信頼性や書き込まれるデータの重要性に応じて、エラー訂正ビット数を設定する。ここで、エラー訂正ビット数とは、データに付加されるエラー訂正コードを用いて訂正可能なデータ中のエラービット数である。すなわち、本実施形態において、エラー訂正ビット数は、可変であり、種々の条件によって設定される。例えば、エラー訂正ビット数は、書き込まれるフラッシュメモリ300の領域がSLC領域かMLC領域か、書き込まれるフラッシュメモリ300のブロックBLKの消去回数が閾値以上か否か、または書き込まれるデータが重要なデータであるか否か等、によって設定される。   When writing data from the host 200 to the flash memory 300, the error correction bit number setting unit 161 changes and sets the error correction bit number for the data as necessary. More specifically, the error correction bit number setting unit 161 sets the error correction bit number according to the reliability of the flash memory 300 to be written and the importance of the data to be written in accordance with a command from the MPU 120. Here, the number of error correction bits is the number of error bits in data that can be corrected using an error correction code added to the data. That is, in the present embodiment, the number of error correction bits is variable and is set according to various conditions. For example, the number of error correction bits indicates whether the area of the flash memory 300 to be written is an SLC area or an MLC area, whether the number of erases of the block BLK of the flash memory 300 to be written is greater than or equal to a threshold, or the data to be written is important data It is set depending on whether or not there is.

エラー訂正コード生成付加部162は、ホスト200からフラッシュメモリ300にデータの書き込みを行う際、エラー訂正ビット数設定部161で設定されたエラー訂正ビット数に応じたエラー訂正コード(エラー訂正用データ)を作成し、フラッシュメモリ300に書き込まれるデータに付加する。このエラー訂正コードのデータ量は、エラー訂正ビット数に応じて変更する。より具体的には、エラー訂正コードのデータ量は、エラー訂正ビット数が減少すれば減少し、エラー訂正ビット数が増加すれば増加する。   When writing data from the host 200 to the flash memory 300, the error correction code generation / addition unit 162 has an error correction code (error correction data) corresponding to the error correction bit number set by the error correction bit number setting unit 161. Is added to the data written to the flash memory 300. The data amount of the error correction code is changed according to the number of error correction bits. More specifically, the data amount of the error correction code decreases as the number of error correction bits decreases, and increases as the number of error correction bits increases.

エラー訂正部171は、フラッシュメモリ300からホスト200にデータを読み出す際、エラー訂正コード生成付加部162で生成付加されたエラー訂正コードに基づいて、データのエラー訂正を行う。   When the error correction unit 171 reads data from the flash memory 300 to the host 200, the error correction unit 171 performs data error correction based on the error correction code generated and added by the error correction code generation and addition unit 162.

図5(a)は、本実施形態におけるフラッシュメモリ300に書き込まれるデータ構成の比較例を示すブロック図であり、図5(b)は、本実施形態におけるフラッシュメモリ300に書き込まれるデータ構成を示すブロック図である。   FIG. 5A is a block diagram showing a comparative example of the data configuration written in the flash memory 300 in the present embodiment, and FIG. 5B shows the data configuration written in the flash memory 300 in the present embodiment. It is a block diagram.

図5(a)および(b)に示すように、フラッシュメモリ300に書き込まれるデータは、データ400,500、データ以外に必要な情報(例えば、管理データ)410,510、およびエラー訂正用データ420,520で構成されている。   As shown in FIGS. 5A and 5B, data written to the flash memory 300 includes data 400 and 500, necessary information (for example, management data) 410 and 510 other than data, and error correction data 420. , 520.

比較例において、データ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 data 400 is x bytes (for example, 512 bytes), the necessary information 410 other than data is y bytes (for example, 8 bytes), and the error correction data 420 is z bytes (for example, 22 bytes). In contrast, in the present embodiment, the data 500 is x bytes, the necessary information 510 other than the data is y + n bytes, and the error correction data 520 is z−n bytes. That is, the error correction data 520 can be reduced by n bytes, and the necessary information 510 other than the data can be increased by n bytes compared to the comparative example. This is because the error correction data 520 is reduced by reducing the number of error correction bits as described above.

<書き込み動作>
以下に、図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 memory controller 100 receives data input from the host 200 via the host interface 110 and stores it in the data buffer 130.

次に、ステップS12において、メモリコントローラ100は、ホスト200から入力されたパラメータ設定コマンドをホストインターフェイス110を介して受信し、MPU120に記憶する。このパラメータ設定コマンドは、データバッファ130に記憶されたデータが重要であるか否かを通知するものである。パラメータ設定コマンドは、例えば、ホスト200から入力されたデータの有効ビット数、データの数、およびデータの圧縮方法等のパラメータが設定されたコマンドである。MPU120は、パラメータ設定コマンドを受信することにより、データが重要であるか否かを判断する。   Next, in step S <b> 12, the memory controller 100 receives the parameter setting command input from the host 200 via the host interface 110 and stores it in the MPU 120. This parameter setting command notifies whether or not the data stored in the data buffer 130 is important. The parameter setting command is a command in which parameters such as the number of valid bits of data input from the host 200, the number of data, and the data compression method are set, for example. The MPU 120 receives the parameter setting command and determines whether or not the data is important.

次に、ステップS13において、メモリコントローラ100は、ホスト200から入力されたメモリコントローラ100の書き込み論理アドレスをホストインターフェイス110を介して受信し、MPU120に記憶する。MPU120は、この論理アドレスに基づいて、データバッファ130に記憶されたデータをSLCとして書き込むか、MLCとして書き込むかを判断する。その後、MPU120は、論理アドレスを書き込まれるフラッシュメモリ300の物理アドレスに変換する。   Next, in step S <b> 13, the memory controller 100 receives the write logical address of the memory controller 100 input from the host 200 via the host interface 110 and stores it in the MPU 120. Based on this logical address, the MPU 120 determines whether to write the data stored in the data buffer 130 as SLC or MLC. Thereafter, the MPU 120 converts the logical address into a physical address of the flash memory 300 to be written.

次に、ステップS14において、メモリコントローラ100は、ホスト200から入力された書き込みコマンドをホストインターフェイス110を介して受信する。その後、MPU120は、データバッファ130に記憶されたデータをフラッシュメモリインターフェイス140へと転送していく。   Next, in step S <b> 14, the memory controller 100 receives a write command input from the host 200 via the host interface 110. Thereafter, the MPU 120 transfers the data stored in the data buffer 130 to the flash memory interface 140.

次に、ステップS15において、エラー訂正ビット数設定部161は、データバッファ130から転送されたデータのエラー訂正ビット数を設定する。ステップS15の詳細については、図7を用いて後述する。   Next, in step S15, the error correction bit number setting unit 161 sets the error correction bit number of the data transferred from the data buffer 130. Details of step S15 will be described later with reference to FIG.

次に、ステップS16において、エラー訂正コード生成付加部162は、エラー訂正ビット数設定部161により設定されたエラー訂正ビット数に基づいて、エラー訂正コードを生成する。このエラー訂正コードのデータ量は、エラー訂正ビット数が大きければ大きくなり、エラー訂正ビット数が小さければ小さくなる。その後、エラー訂正コード生成付加部162は、エラー訂正コードをデータバッファ130から転送されたデータに付加する。   Next, in step S <b> 16, the error correction code generation / addition unit 162 generates an error correction code based on the error correction bit number set by the error correction bit number setting unit 161. The data amount of this error correction code increases as the number of error correction bits increases, and decreases as the number of error correction bits decreases. Thereafter, the error correction code generation / addition unit 162 adds the error correction code to the data transferred from the data buffer 130.

次に、ステップ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 flash memory 300. In this way, the write operation from the host 200 to the flash memory 300 is performed.

図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 flash memory 300 is a region with higher reliability than the MLC region, and the number of error bits can be reduced.

なお、図2および図3において説明したように、フラッシュメモリ300においてメモリセルアレイ310内でSLC領域とMLC領域とは分かれておらず、各メモリセルをSLCまたはMLCとして機能させることができる。   As described with reference to FIGS. 2 and 3, in the flash memory 300, the SLC region and the MLC region are not separated in the memory cell array 310, and each memory cell can function as an SLC or an MLC.

次に、ステップ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 memory controller 100 is notified of as important by the parameter setting command from the host 200, but also includes data that the memory controller 100 manages internally.

ステップ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 flash memory 300 to be written exceeds a threshold value. Since the erase operation is performed for each block BLK in the flash memory 300, the number of times of erasure differs for each block BLK. The erase count for each block BLK is stored in the flash memory 300. That is, whether or not the erase count of the flash memory 300 exceeds the threshold value is determined by the memory controller 100 converting the logical address received from the host 200 into a physical address, and the erase count data of the block BLK at the physical address. Is received from the flash memory 300 and compared with a threshold value. An appropriate value is stored in advance in the MPU 120 as the threshold value for the number of times of erasure.

ステップ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 flash memory 300, the reliability decreases and the number of error bits increases. That is, the number of error correction bits is made variable for each block BLK according to the number of erasures.

以上の工程により、フラッシュメモリ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 flash memory 300 is set. For example, when any one of step S23, step S25, and step S27 is performed, the number of error correction bits is reduced from 16 bits set in step S21 to 12 bits. For example, when any two steps are performed, the number of error correction bits is reduced from 16 bits to 8 bits. Further, for example, when all the steps are performed, the number of error correction bits is reduced from 16 bits to 4 bits. As described above, the error correction bit number setting unit 161 can change the error correction bit number according to various conditions. The number of error correction bits is an example, and various values can be set according to the standard of the flash memory 300 or the like. In addition, the order of steps S22, S24, and S26 can be changed.

また、エラー訂正ビット数を可変にする条件は、ステップ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 flash memory 300 to be written exceeds a threshold value. When page unit data is written to the flash memory 300, page unit data is written to a block BLK in which a part of the area is vacant. The reliability of a block BLK in which a part of the area is vacant is changed according to the number of times of reading data stored in the block BLK. The read count of this block BLK is stored in the flash memory 300. That is, the determination as to whether or not the read count of the flash memory 300 exceeds the threshold value is made by converting the logical address received by the memory controller 100 from the host 200 into a physical address and reading the read count data of the block BLK at the physical address. It is performed by receiving from the flash memory 300 and comparing with the threshold value.

その後、読み出し回数が閾値を越えていると判断された場合、ブロック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 flash memory 300 increases, the reliability decreases and the number of error bits increases. That is, the number of error correction bits is made variable for each block BLK.

なお、ページ単位のデータを書き込む際、ブロック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 flash memory 300, so that the number of error correction bits can be changed for each page in the block BLK, not for each block BLK. It is also possible to make it.

<読み出し動作>
以下に、本実施形態における読み出し動作について説明する。
<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 memory controller 100 receives the read logical address of the memory controller 100 input from the host 200 via the host interface 110 and stores it in the MPU 120. Thereafter, the MPU 120 converts the logical address into a physical address of the flash memory 300 to be read.

次に、メモリコントローラ100は、ホスト200から入力された読み出しコマンドをホストインターフェイス110を介して受信する。その後、MPU120は、フラッシュメモリ300の指定された物理アドレスに記憶されたデータをフラッシュメモリインターフェイス140へと読み出していく。   Next, the memory controller 100 receives a read command input from the host 200 via the host interface 110. Thereafter, the MPU 120 reads the data stored at the specified physical address of the flash memory 300 to the flash memory interface 140.

次に、エラー訂正部171は、データバッファ130から読み出されたデータのエラー訂正を行う。このエラー訂正は、データバッファ130から読み出されたデータに付加されたエラー訂正コードに基づいて行われ、エラー訂正ビット数設定部161により設定されたビット数分行われる。すなわち、このエラー訂正において、エラー訂正ビット数およびエラー訂正コードのデータ量が少ないほど、エラー訂正処理時間の短縮および消費電力の削減を図ることできる。なお、データのエラー訂正の詳細については公知であるため省略する。エラー訂正が終了するとデータからエラー訂正コードが除去される。   Next, the error correction unit 171 performs error correction on the data read from the data buffer 130. This error correction is performed based on the error correction code added to the data read from the data buffer 130, and is performed for the number of bits set by the error correction bit number setting unit 161. That is, in this error correction, the smaller the number of error correction bits and the data amount of the error correction code, the shorter the error correction processing time and the power consumption. Note that details of error correction of data are well known and will be omitted. When the error correction is completed, the error correction code is removed from the data.

その後、エラー訂正されたデータは、データバッファ130に一時的に記憶され、ホストインターフェイス110を介してホスト200に読み出される。   Thereafter, the error-corrected data is temporarily stored in the data buffer 130 and read out to the host 200 via the host interface 110.

<効果>
上記実施形態によれば、ホスト200およびフラッシュメモリ300に接続可能なメモリコントローラ100は、ホスト200からフラッシュメモリ300にデータを書き込む際、種々の条件に応じてエラー訂正ビット数を変更させる。そして、その設定されたエラー訂正ビット数に基づいてエラー訂正コードを作成し、データに付加させてフラッシュメモリ300に書き込む。すなわち、信頼性が高い領域に書き込む場合やデータの重要度が低い場合に、エラー訂正ビット数を減少させることができる。これにより、余分なエラー訂正コードのデータ量を削減することができ、その分管理用データの容量を大きくすることができる。また、フラッシュメモリ300からホスト200へのデータ読み出しの際、エラー訂正の処理時間を短縮でき、これに伴い消費電力の削減を図ることができる。
<Effect>
According to the embodiment, the memory controller 100 that can be connected to the host 200 and the flash memory 300 changes the number of error correction bits according to various conditions when writing data from the host 200 to the flash memory 300. Then, an error correction code is created based on the set error correction bit number, added to the data, and written to the flash memory 300. That is, the number of error correction bits can be reduced when writing in a highly reliable area or when the importance of data is low. As a result, the amount of extra error correction code data can be reduced, and the amount of management data can be increased accordingly. In addition, when data is read from the flash memory 300 to the host 200, the error correction processing time can be shortened, and power consumption can be reduced accordingly.

その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。   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 SYMBOLS 100 ... Memory controller, 110 ... Host interface, 120 ... MPU (control part), 161 ... Error correction bit number setting part, 162 ... Error correction code production | generation addition part, 200 ... Host, 300 ... Flash memory (memory).

Claims (5)

ホストからのコマンドに従って2値または多値での書き込み、読み出し、および消去可能な複数のメモリセルを有するメモリを制御するメモリコントローラであって、
前記ホストとの間でコマンドおよびデータをアクセスするホストインターフェイスと、
前記メモリとの間でコマンドおよびデータをアクセスするメモリインターフェイスと、
前記ホストインターフェイスを介して前記ホストからのコマンドに従って前記メモリインターフェイスを制御する制御部と、
を具備し、
前記メモリインターフェイスは、
前記ホストからのデータを前記メモリに書きこむ際、前記メモリへの書き込みが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:
前記ホストからのデータを前記メモリに2値で書き込むか多値で書き込むかの判断は、前記ホストから入力される論理アドレスに応じて行われることを特徴とする請求項1に記載のメモリコントローラ。   2. The memory controller according to claim 1, wherein the determination as to whether the data from the host is written in binary or multi-value in the memory is made in accordance with a logical address input from the host. ホストからのコマンドに従って書き込み、読み出し、および消去可能な複数のメモリセルを有するメモリを制御するメモリコントローラであって、
ホストとの間でコマンドおよびデータをアクセスするホストインターフェイスと、
前記メモリとの間でコマンドおよびデータをアクセスするメモリインターフェイスと、
前記ホストインターフェイスを介して前記ホストからのコマンドに従って前記メモリインターフェイスを制御する制御部と、
を具備し、
前記メモリインターフェイスは、
前記ホストからのデータを前記メモリに書きこむ際、前記ホストからのデータが前記ホストからのコマンドによって通知されたデータである場合、前記ホストからのデータに対して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:
前記メモリは前記複数のメモリセルのうちの所定個のメモリセルで構成される複数のブロックを有し、前記メモリの消去回数は前記メモリ内の前記ブロック毎に異なることを特徴とする請求項4に記載のメモリコントローラ。   5. The memory includes a plurality of blocks each including a predetermined number of memory cells among the plurality of memory cells, and the number of times of erasure of the memory is different for each block in the memory. Memory controller as described in.
JP2011023021A 2011-02-04 2011-02-04 Memory controller Withdrawn JP2012164072A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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