JP2007179480A - Memory controller and flash memory system - Google Patents

Memory controller and flash memory system Download PDF

Info

Publication number
JP2007179480A
JP2007179480A JP2005380055A JP2005380055A JP2007179480A JP 2007179480 A JP2007179480 A JP 2007179480A JP 2005380055 A JP2005380055 A JP 2005380055A JP 2005380055 A JP2005380055 A JP 2005380055A JP 2007179480 A JP2007179480 A JP 2007179480A
Authority
JP
Japan
Prior art keywords
data
error correction
flash memory
correction code
register
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.)
Pending
Application number
JP2005380055A
Other languages
Japanese (ja)
Inventor
Hidetomo Hasegawa
英知 長谷川
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.)
TDK Corp
Original Assignee
TDK 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 TDK Corp filed Critical TDK Corp
Priority to JP2005380055A priority Critical patent/JP2007179480A/en
Publication of JP2007179480A publication Critical patent/JP2007179480A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a memory controller and a flash memory system in which dummy data to be added is minimized in encoding data with Reed-Solomon codes. <P>SOLUTION: User data supplied to the flash memory is successively connected in a predetermined bite number unit, and the connected user data is cut out in a predetermined symbol length unit. Dummy data is added only to user data of a length less than the symbol length which is left as a result of this cutting-out in symbol length unit. <P>COPYRIGHT: (C)2007,JPO&INPIT

Description

本発明は、メモリコントローラおよび当該メモリコントローラを備えるフラッシュメモリシステムに関する。   The present invention relates to a memory controller and a flash memory system including the memory controller.

近年、不揮発性の記憶媒体であるフラッシュメモリの開発が行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。   In recent years, a flash memory, which is a non-volatile storage medium, has been developed and is widely used as a storage medium for information devices (host systems) such as digital cameras.

このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの大容量化・高密度化が進んでいる。このような大容量化・高密度化したフラッシュメモリを、ホストシステムのOS(Operating System)を格納するなどの高信頼性を要求される分野への適用がある。   As the data handled by such devices has increased in capacity, flash memory has been increased in capacity and density. Such a flash memory having a large capacity and a high density is applied to a field requiring high reliability such as storing an OS (Operating System) of a host system.

NAND型フラッシュメモリは、大容量・高密度であることを特徴とし、近年特に多く用いられるフラッシュメモリの一種である。NAND型フラッシュメモリでは、データは1セクタである512バイト単位で管理され、また、1セクタに対して冗長領域が16バイト与えられている。   A NAND flash memory is characterized by a large capacity and a high density, and is one type of flash memory that is particularly frequently used in recent years. In the NAND flash memory, data is managed in units of 512 bytes, which is one sector, and a redundant area of 16 bytes is given to one sector.

NAND型フラッシュメモリからデータを読み出す、NAND型フラッシュメモリにデータを書き込むとき、読み出し・書き込みエラーが発生しうる。これらのエラーに対しては、従来はハミング符号のような簡単な符号を用いることにより、誤り訂正を行ってきた。しかし、ホストシステムのOSを格納するなどの高信頼性を要求される分野にフラッシュメモリを適用するためには、多くのビットを訂正できる強力な誤り訂正符号が必要になる。このような誤り訂正符号として、たとえば、リードソロモン(Reed-Solomon)符号が知られている。   When reading data from the NAND flash memory or writing data to the NAND flash memory, read / write errors may occur. Conventionally, error correction has been performed for these errors by using a simple code such as a Hamming code. However, in order to apply the flash memory to a field requiring high reliability such as storing the OS of the host system, a strong error correction code capable of correcting many bits is required. As such an error correction code, for example, a Reed-Solomon code is known.

リードソロモン符号は、符号化できる最大符号長に対して数学的な制限がある。1シンボルのビット数をnとすると、リードソロモン符号の最大符号長(最大シンボル数)Nは
(2−1)となる。すなわち、1シンボルのビット数を8ビットとするならば、リードソロモン符号ではリードソロモン符号によって生成される誤り訂正符号(ECC)を含めて、255シンボルの符号長まで符号化できる。
Reed-Solomon codes have mathematical limitations on the maximum code length that can be encoded. When the number of bits of one symbol is n, the maximum code length (maximum number of symbols) N of the Reed-Solomon code is (2 n −1). That is, if the number of bits of one symbol is 8, the Reed-Solomon code can encode up to a code length of 255 symbols including an error correction code (ECC) generated by the Reed-Solomon code.

NAND型フラッシュメモリでは、データは1セクタである512バイト単位で管理される。この1セクタ(512バイト)のデータをリードソロモン符号で符号化する場合、n≧10となり、1シンボルを最低10ビット(最大シンボル数は1023)として符号化しなければならない。   In the NAND flash memory, data is managed in units of 512 bytes, which is one sector. When the data of one sector (512 bytes) is encoded by the Reed-Solomon code, n ≧ 10, and one symbol must be encoded with a minimum of 10 bits (the maximum number of symbols is 1023).

しかし、フラッシュメモリのデータバスは、通常、1バイト又は複数バイトのバス幅になっており、1シンボルの符号長とデータバスのバス幅とが必ずしも一致しないという問題がある。特許文献1には、データバスのバス幅8ビットのフラッシュメモリにおいて、512バイトのデータをリードソロモン符号で符号化する際に、シンボル長を10ビットとし、1バイト(8ビット)のデータを順に読み出してそれぞれに2ビットのダミーデータを付加して、見かけ上10ビットのデータとして符号化する(すなわち、512バイトのデータを512シンボルの符号として扱う)技術が開示されている。また、特許文献1には、データバスのバス幅16ビットのフラッシュメモリにおいて、512バイトのデータをリードソロモン符号で符号化する際に、シンボル長を10ビットとし、16ビットのデータを順に読み出して1バイト(8ビット)のデータ2個に分解した後、それぞれに2ビットのダミーデータを付加して、見かけ上10ビットのデータ2個として符号化する技術が開示されている。
特開平9−274591号公報
However, the data bus of the flash memory usually has a bus width of 1 byte or a plurality of bytes, and there is a problem that the code length of one symbol does not necessarily match the bus width of the data bus. In Patent Document 1, when a 512-byte data is encoded by a Reed-Solomon code in a flash memory having a data bus width of 8 bits, a symbol length is set to 10 bits, and 1-byte (8-bit) data is sequentially converted. There is disclosed a technique of reading and adding 2-bit dummy data to each and encoding it as apparently 10-bit data (that is, handling 512-byte data as a 512-symbol code). Further, in Patent Document 1, in a flash memory having a data bus width of 16 bits, when 512 bytes of data are encoded by Reed-Solomon code, the symbol length is set to 10 bits, and 16 bits of data are sequentially read out. A technique is disclosed in which, after being divided into two pieces of 1-byte (8-bit) data, 2-bit dummy data is added to each of them, and the data is coded as two pieces of apparent 10-bit data.
Japanese Patent Laid-Open No. 9-274591

上述の技術では、データをリードソロモン符号で符号化するにあたり、1バイト(8ビット)のデータに対して、シンボル長に一致させるためのダミーデータを付加している。その結果、1バイト(8ビット)のデータが1シンボルとして扱われ、シンボル長を10ビットとした場合には、512バイトのデータに128バイト(1024ビット)のダミーデータが付加されることになり、データのエラー訂正の効率が落ちる。   In the above-described technique, when data is encoded by the Reed-Solomon code, dummy data for matching the symbol length is added to 1-byte (8-bit) data. As a result, when 1 byte (8 bits) of data is handled as 1 symbol and the symbol length is 10 bits, 128 bytes (1024 bits) of dummy data is added to 512 bytes of data. The efficiency of data error correction is reduced.

本発明は、上記問題点に鑑みてなされたものであり、データをリードソロモン符号で符号化するときに付加されるダミーデータの少ないメモリコントローラおよびフラッシュメモリシステムを提供することを目的とする。   The present invention has been made in view of the above problems, and an object of the present invention is to provide a memory controller and a flash memory system with less dummy data added when data is encoded by Reed-Solomon codes.

上記課題を解決するため、本発明の第1の観点に係るメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリのユーザ領域に書き込まれるユーザデータを供給する書き込みデータ供給手段と、
前記ユーザデータを受け取り、該ユーザデータを所定のバイト数に達するまで順次連結し、該連結したデータを所定のシンボル長単位で順次切り出して出力するシンボルデータ供給手段と、
前記所定のバイト数の前記ユーザデータから切り出される最終データのデータ長が前記所定のシンボル長に満たないときに該最終データに所定のダミーデータを付加するダミーデータ付加手段と、
前記シンボルデータ供給手段からシンボル長単位で出力されるデータに基づいて、前記所定のバイト数の前記ユーザデータに対するリードソロモン符号で構成された誤り訂正符号を生成する誤り訂正符号生成手段と、
前記所定のバイト数の前記ユーザデータが前記フラッシュメモリの消去状態と一致するときに前記誤り訂正符号が前記フラッシュメモリの消去状態に一致するような変換処理を前記誤り訂正符号に対して施す変換手段と、
前記変換処理が施された前記誤り訂正符号を前記所定のバイト数の前記ユーザデータが書き込まれたユーザ領域に対応する冗長領域に書き込む冗長データ書き込み手段と、
を備えることを特徴とする。
In order to solve the above problems, a memory controller according to the first aspect of the present invention provides:
A memory controller that controls access to a flash memory in response to a command from a host system,
Write data supply means for supplying user data to be written to the user area of the flash memory;
Symbol data supply means for receiving the user data, sequentially connecting the user data until a predetermined number of bytes is reached, and sequentially cutting out and outputting the connected data in units of a predetermined symbol length;
Dummy data adding means for adding predetermined dummy data to the final data when the data length of the final data extracted from the user data of the predetermined number of bytes is less than the predetermined symbol length;
An error correction code generation unit configured to generate an error correction code composed of a Reed-Solomon code for the user data of the predetermined number of bytes based on data output in symbol length units from the symbol data supply unit;
Conversion means for performing conversion processing on the error correction code so that the error correction code matches the erased state of the flash memory when the user data of the predetermined number of bytes matches the erased state of the flash memory When,
Redundant data writing means for writing the error correction code subjected to the conversion process into a redundant area corresponding to a user area in which the user data of the predetermined number of bytes is written;
It is characterized by providing.

前記ユーザ領域に書き込まれているユーザデータを読み出すユーザデータ読み出し手段と、
前記冗長領域に書き込まれている前記変換処理が施された前記誤り訂正符号を読み出す冗長データ読み出し手段と、
前記冗長データ読み出し手段によって読み出された前記変換処理が施された前記誤り訂正符号を前記変換処理前の前記誤り訂正符号に戻す逆変換手段と、
前記逆変換手段から供給される前記変換処理前の前記誤り訂正符号に基づいて、前記シンボルデータ供給手段を介して供給されるシンボル長単位のデータの誤りを訂正する誤り訂正符号生成手段と、
をさらに備えてもよい。
User data reading means for reading user data written in the user area;
Redundant data reading means for reading the error correction code subjected to the conversion process written in the redundant area;
Inverse conversion means for returning the error correction code subjected to the conversion processing read by the redundant data reading means to the error correction code before the conversion processing;
Based on the error correction code before the conversion process supplied from the inverse conversion means, an error correction code generation means for correcting an error in the symbol length unit supplied via the symbol data supply means;
May be further provided.

前記所定のバイト数は512バイトであることが好ましい。   The predetermined number of bytes is preferably 512 bytes.

前記シンボルデータ供給手段は前記ユーザデータを前記フラッシュメモリのバス幅と同一のビット数単位で順次連結し、該連結したデータを所定のシンボル長単位で切り出してもよい。   The symbol data supply unit may sequentially connect the user data in units of the same number of bits as the bus width of the flash memory, and cut out the connected data in units of a predetermined symbol length.

上記課題を解決するため、本発明の第2の観点に係るフラッシュメモリシステムは、
上記のメモリコントローラと、
フラッシュメモリと、
から構成されることを特徴とする。
In order to solve the above problems, a flash memory system according to a second aspect of the present invention provides:
The above memory controller;
Flash memory,
It is comprised from these.

本発明によれば、フラッシュメモリに供給されるユーザデータを所定のバイト数単位で順次連結し、連結したユーザデータを所定のシンボル長単位で切り出し、切り出したシンボルデータに基づいてリードソロモン符号で構成された誤り訂正符号を生成している。従って、シンボル長単位で切り出した最後に残ったシンボル長に満たないユーザデータ以外には、ダミーデータが付加されないので、エラー訂正の対象となるシンボル数を従来よりも少なくし、エラー訂正することができる比率を高くすることができる。   According to the present invention, user data supplied to the flash memory is sequentially connected in units of a predetermined number of bytes, the connected user data is cut out in units of a predetermined symbol length, and configured by a Reed-Solomon code based on the cut out symbol data Generated error correction codes are generated. Therefore, since dummy data is not added to user data other than the last remaining symbol length cut out in symbol length units, error correction can be performed by reducing the number of symbols subject to error correction compared to the conventional case. The ratio that can be made can be increased.

以下、本発明の実施形態について、図面を参照して説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するコントローラ3で構成されている。   FIG. 1 is a block diagram schematically showing a flash memory system 1 according to the present invention. As shown in FIG. 1, the flash memory system 1 includes a flash memory 2 and a controller 3 that controls the flash memory 2.

なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。   The flash memory system 1 is connected to the host system 4 via the external bus 13. The host system 4 includes a CPU (Central Processing Unit) for controlling the entire operation of the host system 4, a companion chip for transferring information to and from the flash memory system 1, and the like. The host system 4 may be various information processing apparatuses such as a personal computer and a digital still camera that process various types of information such as characters, sounds, and image information.

フラッシュメモリ2は、NAND型フラッシュメモリから構成される。NAND型フラッシュメモリは、不揮発性メモリであり、レジスタと、メモリセルアレイとから構成される。フラッシュメモリ2は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。   The flash memory 2 is composed of a NAND flash memory. The NAND flash memory is a non-volatile memory and includes a register and a memory cell array. The flash memory 2 writes or reads data by copying data between a register and a memory cell.

メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。   The memory cell array includes a plurality of memory cell groups and word lines. Each memory cell group includes a plurality of memory cells connected in series. The word line is for selecting a specific memory cell in the memory cell group. Data is copied between the selected memory cell and the register via the word line, that is, data is copied from the register to the selected memory cell, or data is copied from the selected memory cell to the register. .

メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。   A memory cell constituting the memory cell array is constituted by a MOS transistor having two gates. Here, the upper gate and the lower gate are referred to as a control gate and a floating gate, respectively. By injecting charges (electrons) into the floating gate or discharging charges (electrons) from the floating gate, data can be obtained. Is written or data is erased.

このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。   Since the floating gate is surrounded by an insulator, the injected electrons are held for a long period of time. Note that, when electrons are injected into the floating gate, a high voltage at which the control gate is on the high potential side is applied between the control gate and the floating gate. Further, when electrons are discharged from the floating gate, a high voltage at which the control gate becomes a low potential side is applied between the control gate and the floating gate.

ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。   Here, a state where electrons are injected into the floating gate is a write state, which corresponds to a logical value “0”. The state in which electrons are discharged from the floating gate is an erased state, which corresponds to a logical value “1”.

このようなフラッシュメモリ2のアドレス空間を図2に示す。フラッシュメモリ2のアドレス空間は、“ページ”及び“ブロック(物理ブロック)”で構成されている。   Such an address space of the flash memory 2 is shown in FIG. The address space of the flash memory 2 is composed of “pages” and “blocks (physical blocks)”.

ページは、フラッシュメモリ2にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ2にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。   A page is a processing unit in a data read operation and a data write operation performed in the flash memory 2. The physical block is a processing unit in the data erasing operation performed in the flash memory 2, and is composed of a plurality of pages.

図2に示したフラッシュメモリでは、1つのページは、1セクタ(512バイト)のユーザ領域25と、16バイトの冗長領域26で構成され、1つの物理ブロックは32個のページで構成されている。なお、1つのページが4セクタのユーザ領域と64バイトの冗長領域で構成され、1つの物理ブロックが64個のページで構成されているフラッシュメモリもある。ユーザ領域25は、ホストシステム4から供給されるユーザデータを記憶するための領域である。   In the flash memory shown in FIG. 2, one page is composed of a user area 25 of 1 sector (512 bytes) and a redundant area 26 of 16 bytes, and one physical block is composed of 32 pages. . There is a flash memory in which one page is composed of a 4-sector user area and a 64-byte redundant area, and one physical block is composed of 64 pages. The user area 25 is an area for storing user data supplied from the host system 4.

冗長領域26は、ECC(Error Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するための領域である。   The redundant area 26 is an area for storing additional data such as ECC (Error Correcting Code), logical address information, and block status (flag).

ECCは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータであり、後述するECCブロックにより生成される。   The ECC is data for detecting and correcting an error included in data stored in the user area 25, and is generated by an ECC block described later.

論理アドレス情報は、フラッシュメモリ2の各物理ブロックに含まれている少なくとも1個のページのユーザ領域25に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報である。   The logical address information is information for specifying a logical block corresponding to the data when valid data is stored in the user area 25 of at least one page included in each physical block of the flash memory 2. It is.

なお、ユーザ領域25に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域26に、論理アドレス情報は格納されていない。   For a physical block in which valid data is not stored in the user area 25, logical address information is not stored in the redundant area 26 of the block.

したがって、冗長領域26に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域26が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域26に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。   Therefore, by determining whether or not logical address information is stored in the redundant area 26, it is possible to determine whether or not valid data is stored in the physical block including the redundant area 26. . That is, when logical address information is not stored in the redundant area 26, it is determined that valid data is not stored in the physical block.

上述のように、1つの物理ブロックは、複数のページを含んでいる。これらのページには、データの上書きができない。このため、1つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれた物理ブロック内の全ページに格納されたデータを、再度書き込まなければならない。   As described above, one physical block includes a plurality of pages. Data cannot be overwritten on these pages. For this reason, even when only the data stored in one page is rewritten, the data stored in all the pages in the physical block including the page must be rewritten.

つまり、通常のデータ書き換えでは、書き換えるページが含まれる物理ブロックの全ページに格納されたデータが、別の消去されている物理ブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。   That is, in normal data rewriting, data stored in all pages of a physical block including a page to be rewritten is written to another erased physical block. At this time, as for the data stored in the page where the data is not changed, the previously stored data is rewritten as it is.

上記のようにデータを書き換えるにあたっては、通常、書き換えられたデータは、以前に格納されていた物理ブロックとは異なる物理ブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ2にてデータが書き換えられる毎に、動的に変化する。   In rewriting data as described above, normally, the rewritten data is written in a physical block different from the physical block stored previously. For this reason, the correspondence relationship between the logical block address and the physical block address dynamically changes every time data is rewritten in the flash memory 2.

したがって、論理ブロックと物理ブロックとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域26に記憶されている論理アドレス情報に基づいて作成される。なお、このような動的なアドレス管理手法は、上述の通り、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。   Therefore, it is necessary to manage the correspondence between the logical block and the physical block, and this correspondence is usually managed by the address conversion table. This address conversion table is created based on the logical address information stored in the redundant area 26 of each physical block. Note that such a dynamic address management method is a method generally used in a memory system using a flash memory as described above.

ブロックステータス(フラグ)は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域26には、不良ブロックであることを示すブロックステータス(フラグ)が書き込まれる。   The block status (flag) is a flag indicating whether the block is good or bad. A block in which data cannot be normally written is determined as a defective block, and a block status (flag) indicating a defective block is written in the redundant area 26.

このようなフラッシュメモリ2は、コントローラ3から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。   Such a flash memory 2 receives data, address information, internal commands, and the like from the controller 3 and performs various processes such as a data read process, a write process, a block erase process, and a transfer process.

ここで、内部コマンドとは、コントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、コントローラ3から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。   Here, the internal command is a command for the controller 3 to instruct the flash memory 2 to execute processing, and the flash memory 2 operates in accordance with the internal command given from the controller 3. In contrast, the external command is a command for the host system 4 to instruct the flash memory system 1 to execute processing.

コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECCブロック11と、ROM(Read Only Memory)12と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。   As shown in FIG. 1, the controller 3 includes a microprocessor 6, a host interface block 7, a work area 8, a buffer 9, a flash memory interface block 10, an ECC block 11, and a ROM (Read Only Memory) 12. And. The controller 3 constituted by these functional blocks is integrated on one semiconductor chip. Each functional block will be described below.

マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、コントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、各種処理等を定義したコマンドセットをROM12から読み出してフラッシュメモリインターフェースブロック10に供給し、フラッシュメモリインターフェースブロック10に処理を実行させる。   The microprocessor 6 controls the overall operation of the controller 3 in accordance with a program stored in the ROM 12. For example, the microprocessor 6 reads a command set defining various processes from the ROM 12, supplies the command set to the flash memory interface block 10, and causes the flash memory interface block 10 to execute processes.

ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。   The host interface block 7 exchanges data, address information, status information, external commands, and the like with the host system 4. Data or the like supplied from the host system 4 to the flash memory system 1 is taken into the flash memory system 1 (for example, the buffer 9) using the host interface block 7 as an entrance. Data supplied from the flash memory system 1 to the host system 4 is supplied to the host system 4 through the host interface block 7 as an exit.

ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。   The work area 8 is a work area in which data necessary for controlling the flash memory 2 is temporarily stored, and is composed of a plurality of SRAM (Static Random Access Memory) cells.

バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。   The buffer 9 temporarily stores data read from the flash memory 2 and data to be written to the flash memory 2. That is, data read from the flash memory 2 is held in the buffer 9 until the host system 4 can receive the data, and data to be written to the flash memory 2 is stored until the flash memory 2 becomes writable. It is held in the buffer 9.

フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。   The flash memory interface block 10 exchanges data, address information, status information, internal commands, and the like with the flash memory 2 via the internal bus 14. More specifically, the flash memory interface block 10 includes an address processing unit, a command register, an instruction processing block, and the like.

フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等を実行させる。   The flash memory interface block 10 supplies the flash memory 2 with internal commands, address information, and the like output from the instruction processing block, thereby causing the flash memory 2 to execute reading and writing.

ECCブロック11は、フラッシュメモリ2に書き込むデータ(ユーザデータ)に付加されるECCを生成するとともに、フラッシュメモリ2から読み出したデータに付加されたECCに基づいて、読み出したデータに含まれる誤りを検出・訂正する。   The ECC block 11 generates an ECC added to data (user data) to be written to the flash memory 2 and detects an error included in the read data based on the ECC added to the data read from the flash memory 2 ·correct.

ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。   The ROM 12 is a non-volatile storage element that stores a program that defines a processing procedure performed by the microprocessor 6. Specifically, the ROM 12 stores a program that defines a processing procedure such as creation of an address conversion table, for example.

ここで、ECCブロック11について図3および図4を用いて説明する。図3はフラッシュメモリ2へデータを書き込む処理におけるECCブロック11の動作を説明するための図である。図4はフラッシュメモリ2からデータを読み出す処理におけるECCブロック11の動作を説明するための図である。   Here, the ECC block 11 will be described with reference to FIGS. FIG. 3 is a diagram for explaining the operation of the ECC block 11 in the process of writing data to the flash memory 2. FIG. 4 is a diagram for explaining the operation of the ECC block 11 in the process of reading data from the flash memory 2.

ECCブロック11は、ECCレジスタ30と、バッファレジスタ32と、誤り訂正符号・復号器33と、マスク回路34とから構成される。   The ECC block 11 includes an ECC register 30, a buffer register 32, an error correction code / decoder 33, and a mask circuit 34.

ECCレジスタ30は、フラッシュメモリ2の冗長領域26から読み出した誤り訂正符号を一時的に保持する。
バッファレジスタ32は、バッファ9とフラッシュメモリ2とを接続する内部バス14に接続され、バッファ9またはユーザ領域25から読み出したデータを一時的に保持する。内部バス14に接続されたフラッシュメモリ2のデータバスは8ビットのバス幅を有し、8ビット単位でデータを伝送する。これに対応し、図5を参照して後述するように、バッファレジスタ32は、8ビットのレジスタを2つ備えている。
誤り訂正符号・復号器33は、フラッシュメモリ2への書き込み処理の時に、バッファレジスタ32からフラッシュメモリ2に書き込むユーザデータをリードソロモン符号の所定のシンボル長に変換したシンボルデータを受け取り、そのシンボルデータに基づいてリードソロモン符号の誤り訂正符号を生成する。フラッシュメモリ2からの読み出し処理の時に、フラッシュメモリ2からユーザデータを、マスク回路34から誤り訂正符号を受け取り、誤り訂正符号に基づいて読み出しデータの誤りを検出・訂正する。
マスク回路34は、誤り訂正符号・復号器33から入力された誤り訂正符号に対してあらかじめ設定されている第1の変換処理を施し、フラッシュメモリ2の冗長領域26から読み出された誤り訂正符号に対して第2の変換処理を施す。
この第1の変換処理では、フラッシュメモリ2のユーザ領域25に書き込まれる512バイト(4096ビット)のビットデータがすべて消去状態(論理値の“1”)のときに、変換後の誤り訂正符号のビットデータがすべて消去状態(論理値の“1”)になるような変換が行われる。
従来のハミング符号を用いた場合、4096ビットのデータがすべて論理値の“1”(消去状態)であるとき、誤り訂正符号・復号器33が生成する誤り訂正符号のすべてのビットは“1”(消去状態)となるが、リードソロモン符号を用いた場合、4096ビットのデータがすべて論理値の“1”(消去状態)であっても、誤り訂正符号・復号器22が生成する誤り訂正符号のすべてのビットが“1”にならない。このリードソロモン符号を用いた場合の不整合を解消するため、誤り訂正符号・復号器33で生成された誤り訂正符号(ECC)に対して第1の変換処理を施している。
一方、第2の変換処理では、フラッシュメモリ2の冗長領域26から読み出した第1の変換を施された誤り訂正符号(ECC−M)が、第1の変換を施す前の誤り訂正符号(ECC)に戻るような変換が行われる。又、誤り訂正符号・復号器33は、第2の変換処理を施した誤り訂正符号(ECC)、つまり、第1の変換を施す前の誤り訂正符号に基づいて、フラッシュメモリ2のユーザ領域25から読み出したデータに含まれる誤りを検出・訂正する。
The ECC register 30 temporarily holds the error correction code read from the redundant area 26 of the flash memory 2.
The buffer register 32 is connected to the internal bus 14 that connects the buffer 9 and the flash memory 2, and temporarily holds data read from the buffer 9 or the user area 25. The data bus of the flash memory 2 connected to the internal bus 14 has a bus width of 8 bits and transmits data in units of 8 bits. Corresponding to this, as will be described later with reference to FIG. 5, the buffer register 32 includes two 8-bit registers.
The error correction code / decoder 33 receives symbol data obtained by converting user data to be written to the flash memory 2 from the buffer register 32 into a predetermined symbol length of the Reed-Solomon code at the time of writing processing to the flash memory 2, and the symbol data Based on the above, an error correction code of the Reed-Solomon code is generated. During the reading process from the flash memory 2, user data is received from the flash memory 2 and an error correction code is received from the mask circuit 34, and an error in the read data is detected and corrected based on the error correction code.
The mask circuit 34 performs a preset first conversion process on the error correction code input from the error correction code / decoder 33 and reads the error correction code read from the redundant area 26 of the flash memory 2. Is subjected to a second conversion process.
In this first conversion process, when all 512-byte (4096 bits) bit data written to the user area 25 of the flash memory 2 is in the erased state (logical value “1”), Conversion is performed so that all bit data is in an erased state (logical value “1”).
When the conventional Hamming code is used, when all 4096-bit data is logical “1” (erased state), all bits of the error correction code generated by the error correction code / decoder 33 are “1”. When the Reed-Solomon code is used, the error correction code generated by the error correction code / decoder 22 is used even if all the 4096-bit data is logical “1” (erasure state). All of the bits of do not become "1". In order to eliminate inconsistency when this Reed-Solomon code is used, a first conversion process is performed on the error correction code (ECC) generated by the error correction code / decoder 33.
On the other hand, in the second conversion process, the error correction code (ECC-M) subjected to the first conversion read from the redundant area 26 of the flash memory 2 is converted into an error correction code (ECC) before the first conversion. Conversion is performed so as to return to). Further, the error correction code / decoder 33 is based on the error correction code (ECC) subjected to the second conversion process, that is, the error correction code before the first conversion, in the user area 25 of the flash memory 2. Detects and corrects errors contained in the data read from.

次に、バッファレジスタ32の構成について、図5を用いて説明する。   Next, the configuration of the buffer register 32 will be described with reference to FIG.

バッファレジスタ32は内部バス14に接続され、フラッシュメモリ2のデータバスと同じバス幅の8ビットのビット長を有する第1レジスタ40と第2レジスタ41との2つのレジスタを備える。従って、バッファレジスタ32は8ビットのデータ2つを格納できる。また、バッファレジスタ32は、読み出し位置を示す読み出し位置ポインタRPを備える。   The buffer register 32 is connected to the internal bus 14, and includes two registers of a first register 40 and a second register 41 having a bit length of 8 bits having the same bus width as the data bus of the flash memory 2. Therefore, the buffer register 32 can store two 8-bit data. The buffer register 32 includes a read position pointer RP indicating a read position.

本実施形態においては、リードソロモン符号によるシンボル長は10ビットとし、誤り訂正符号・復号器33は、このシンボル長(10ビット)ずつデータを読み込んで符号化・復号化を行うものとする。又、誤り訂正符号・復号器33は、8シンボルの誤り訂正符号(ECC)を生成し、この8シンボルの誤り訂正符号(ECC)に基づいて5シンボルの誤り検出と4シンボルの誤り訂正をすることができるように設定されている。   In this embodiment, the symbol length based on the Reed-Solomon code is 10 bits, and the error correction code / decoder 33 reads the data for each symbol length (10 bits) and performs encoding / decoding. The error correction code / decoder 33 generates an 8-symbol error correction code (ECC), and performs 5-symbol error detection and 4-symbol error correction based on the 8-symbol error correction code (ECC). Is set to be able to.

以下に、10ビットを1シンボルとするリードソロモン符号を例にとり、ホストシステム4から与えられる512バイトのデータをユーザ領域25に書き込む場合のECCブロック11の動作を、図3を参照して説明する。   The operation of the ECC block 11 when 512-byte data given from the host system 4 is written in the user area 25 is described below with reference to FIG. 3, taking a Reed-Solomon code with 10 bits as one symbol as an example. .

ホストシステム4から与えられたデータは、いったんバッファ9に蓄積され、これらの蓄積されたデータが内部バス14を介してフラッシュメモリ2に書き込まれる。   Data provided from the host system 4 is temporarily stored in the buffer 9, and the stored data is written to the flash memory 2 via the internal bus 14.

図6(a)は、バッファ9からフラッシュメモリ2のデータバスのバス幅である8ビット単位で内部バス14に出力される512バイトのデータを示している。バッファ9に蓄積されたデータは、先頭から順に、Data0、Data1、Data2の順にData511まで、8ビット単位で内部バス14を介してフラッシュメモリ2に供給され、ユーザデータとしてフラッシュメモリ2のユーザ領域25に書き込まれる。これら8ビットのデータは、ビットの最下位から数えて0ビット目、1ビット目の順に、最上位が7ビット目となる。また、図6(a)には、Data1[1:0]という記載があるが、これは、Data1のうち0ビット目から1ビット目までのビット列(2ビット)を意味する。   FIG. 6A shows 512-byte data output from the buffer 9 to the internal bus 14 in units of 8 bits, which is the bus width of the data bus of the flash memory 2. The data stored in the buffer 9 is supplied to the flash memory 2 via the internal bus 14 in units of 8 bits in the order of Data0, Data1, and Data2 in order from the top, and is supplied to the flash memory 2 as user data. Is written to. These 8-bit data are counted from the least significant bit to the seventh bit in the order of the 0th bit and the 1st bit. In addition, FIG. 6A describes Data1 [1: 0], which means a bit string (2 bits) from the 0th bit to the 1st bit of Data1.

また、バッファ9から8ビット単位で出力されたデータは、内部バス14を介してバッファレジスタ32にも供給される。
バッファレジスタ32は、バッファ9から供給されたデータを一時的に保持し、所定のシンボル長(10ビット)ずつ誤り訂正符号・復号器33に出力する。又、Data0〜Data511の512バイトのデータを所定のシンボル長(10ビット)ずつ誤り訂正符号・復号器33に出力していき、最後に所定のシンボル長(10ビット)に満たないデータが残ったときは、ダミーデータを付加した所定のシンボル長(10ビット)のデータを生成し、誤り訂正符号・復号器33に出力する。
図6(b)は、バッファレジスタ32から誤り訂正符号・復号器33に出力される所定のシンボル長(10ビット)のデータを示している。例えば、Data0[7:0]とData1[1:0]で1個のシンボルデータが生成され、Data1[7:2]とData2[3:0]で1個のシンボルデータが生成される。このようにData0〜Data511の512バイトのデータを連結し、所定のシンボル長(10ビット)単位で切り出していき、最後に4ビットのダミーデータを付加することにより410シンボルのシンボルデータが生成される。
The data output from the buffer 9 in units of 8 bits is also supplied to the buffer register 32 via the internal bus 14.
The buffer register 32 temporarily holds the data supplied from the buffer 9 and outputs the data to the error correction code / decoder 33 by a predetermined symbol length (10 bits). Also, 512-byte data from Data 0 to Data 511 is output to the error correction code / decoder 33 by a predetermined symbol length (10 bits), and finally, data less than the predetermined symbol length (10 bits) remains. In this case, data of a predetermined symbol length (10 bits) with dummy data added is generated and output to the error correction code / decoder 33.
FIG. 6B shows data of a predetermined symbol length (10 bits) output from the buffer register 32 to the error correction code / decoder 33. For example, one symbol data is generated by Data0 [7: 0] and Data1 [1: 0], and one symbol data is generated by Data1 [7: 2] and Data2 [3: 0]. In this way, 512-byte data of Data 0 to Data 511 is concatenated, cut out in units of a predetermined symbol length (10 bits), and finally, 4-bit dummy data is added to generate 410 symbol data. .

誤り訂正符号・復号器33は、バッファレジスタ32から供給されたデータに基づいて、8シンボルの誤り訂正符号(ECC)を生成する。8シンボルの誤り訂正符号は、マスク回路34により第1の変換処理を施され、第1の変換処理を施された誤り訂正符号(ECC−M)が、フラッシュメモリ2の冗長領域26に書き込まれる。尚、フラッシュメモリ2の冗長領域26に書き込まれるときに、第1の変換処理を施された8シンボルの誤り訂正符号(ECC−M)は、8ビットのビット列データ(10バイト)に変換される。   The error correction code / decoder 33 generates an 8-symbol error correction code (ECC) based on the data supplied from the buffer register 32. The 8-symbol error correction code is subjected to the first conversion process by the mask circuit 34, and the error correction code (ECC-M) subjected to the first conversion process is written in the redundant area 26 of the flash memory 2. . When writing to the redundant area 26 of the flash memory 2, the 8-symbol error correction code (ECC-M) subjected to the first conversion process is converted into 8-bit bit string data (10 bytes). .

次いで、読み出し処理におけるECCブロック11の動作を、図4を用いて説明する。
フラッシュメモリ2のユーザ領域25から読み出された512バイトのデータは、内部バス14を介してバッファ9に保持されるとともに、内部バス14を介してバッファレジスタ32にも転送される。バッファレジスタ32は、転送された512バイトのデータを、所定のシンボル長(10ビット)ずつ誤り訂正符号・復号器33に出力する。又、読み出された512バイトのデータを所定のシンボル長(10ビット)ずつ誤り訂正符号・復号器33に出力していき、最後に所定のシンボル長(10ビット)に満たないデータが残ったときは、ダミーデータを付加した所定のシンボル長(10ビット)のデータを生成し、誤り訂正符号・復号器33に出力する。
Next, the operation of the ECC block 11 in the reading process will be described with reference to FIG.
The 512-byte data read from the user area 25 of the flash memory 2 is held in the buffer 9 via the internal bus 14 and is also transferred to the buffer register 32 via the internal bus 14. The buffer register 32 outputs the transferred 512-byte data to the error correction code / decoder 33 by a predetermined symbol length (10 bits). Also, the read 512-byte data is output to the error correction code / decoder 33 by a predetermined symbol length (10 bits), and finally, data that does not satisfy the predetermined symbol length (10 bits) remains. In this case, data of a predetermined symbol length (10 bits) with dummy data added is generated and output to the error correction code / decoder 33.

一方、マスク回路34は、冗長領域26から読み出された第1の変換処理が施されている誤り訂正符号(ECC−M)に第2の変換処理を施して第1の変換処理前の誤り訂正符号(ECC)に戻し、第2の変換処理を施した誤り訂正符号(ECC)を誤り訂正符号・復号器33に出力する。尚、冗長領域26から読み出された第1の変換処理が施されている誤り訂正符号(ECC−M)は、8ビットのビット列データ(10バイト)なので、所定のシンボル長(10ビット)のデータ(8シンボル)に変換された後に上記の第2の変換処理が施される。   On the other hand, the mask circuit 34 performs a second conversion process on the error correction code (ECC-M) read from the redundant area 26 and subjected to the first conversion process, and performs an error before the first conversion process. Returning to the correction code (ECC), the error correction code (ECC) subjected to the second conversion process is output to the error correction code / decoder 33. The error correction code (ECC-M) subjected to the first conversion process read from the redundant area 26 is 8-bit bit string data (10 bytes), and therefore has a predetermined symbol length (10 bits). After being converted into data (8 symbols), the second conversion process described above is performed.

誤り訂正符号・復号器33は、バッファレジスタ32から供給された410シンボルのシンボルデータと、マスク回路34から供給された8シンボルの誤り訂正符号(ECC)に基づいて、バッファ9に格納されているユーザデータやECCレジスタ30に格納されている誤り訂正符号(ECC)の誤りを検出し、訂正することができる。ここで、ユーザデータやECCの誤りの検出および訂正はシンボル単位で行われる。   The error correction code / decoder 33 is stored in the buffer 9 based on the 410-symbol symbol data supplied from the buffer register 32 and the 8-symbol error correction code (ECC) supplied from the mask circuit 34. An error of an error correction code (ECC) stored in user data or the ECC register 30 can be detected and corrected. Here, detection and correction of user data and ECC errors are performed in symbol units.

次に、バッファレジスタ32の動作を、図7及び図8を用いて説明する。   Next, the operation of the buffer register 32 will be described with reference to FIGS.

図7及び図8は、バッファ9からフラッシュメモリ2のデータバスのバス幅(図7及び図8では8ビット)単位でバッファレジスタ32(第1レジスタ40および第2レジスタ41)に入力される入力データ(フラッシュメモリ2に書き込まれるユーザデータ)と、バッファレジスタ32に保持される保持データと、バッファレジスタ32から出力される出力データとを示したものである。
バッファレジスタ32には、Data0〜Data511の512バイトの入力データがフラッシュメモリ2のデータバスのバス幅(図7及び図8では8ビット)単位で入力される。Data0〜Data511の入力データは、第1レジスタ40と第2レジスタ41に交互に入力されていく。つまり、Data0が第1レジスタ40に入力され、Data1が第2レジスタ41に入力され、Data2が第1レジスタ40に入力され、Data3が第2レジスタ41に入力され、以下同様にして、Data511までの入力データが順次バッファレジスタ32に入力されていく。その結果、バッファレジスタ32に入力された入力データは、第1レジスタ40又は第2レジスタ41に保持される。
一方、第1レジスタ40又は第2レジスタ40に保持された保持データは、リードソロモン符号のシンボル長(図7及び図8では10ビット)単位でバッファレジスタ32から出力され、誤り訂正符号・復号器33に供給される。
FIGS. 7 and 8 show the inputs input from the buffer 9 to the buffer register 32 (first register 40 and second register 41) in units of the bus width of the data bus of the flash memory 2 (8 bits in FIGS. 7 and 8). Data (user data written to the flash memory 2), retained data held in the buffer register 32, and output data output from the buffer register 32 are shown.
The buffer register 32 receives 512 bytes of input data from Data 0 to Data 511 in units of the bus width (8 bits in FIGS. 7 and 8) of the data bus of the flash memory 2. Input data of Data 0 to Data 511 is alternately input to the first register 40 and the second register 41. That is, Data0 is input to the first register 40, Data1 is input to the second register 41, Data2 is input to the first register 40, Data3 is input to the second register 41, and so on up to Data511. Input data is sequentially input to the buffer register 32. As a result, the input data input to the buffer register 32 is held in the first register 40 or the second register 41.
On the other hand, the held data held in the first register 40 or the second register 40 is output from the buffer register 32 in units of the symbol length of Reed-Solomon code (10 bits in FIGS. 7 and 8), and the error correction code / decoder 33.

このバッファレジスタ32の動作を、順を追って説明する。   The operation of the buffer register 32 will be described step by step.

まず、図7Aに示すように、バッファレジスタ32にData0(Data0_0〜Data0_7)とData1(Data1_0〜Data1_7)が入力され、Data0(Data0_0〜Data0_7)が第1レジスタ40に、Data1(Data1_0〜Data1_7)が第2レジスタ41に保持される。ここで、読み出し位置ポインタRPは、ビットの最下位から0ビット目、1ビット目と数えて、第1レジスタ40の0ビット目に設定されているので、第1レジスタ40の0ビット目から10ビット分のデータが出力データとして出力される。つまり、第1レジスタ40に保持されているData1_0〜Data1_7に第2レジスタ41に保持されているData1_0〜Data1_1が連結された出力データが出力される。この後、読み出し位置ポインタRPの設定が第2レジスタ41の2ビット目に変更される。   First, as shown in FIG. 7A, Data0 (Data0_0 to Data0_7) and Data1 (Data1_0 to Data1_7) are input to the buffer register 32, Data0 (Data0_0 to Data0_7) is input to the first register 40, and Data1 (Data1_0 to Data1_7) is input. It is held in the second register 41. Here, the read position pointer RP is set to the 0th bit of the first register 40, counting from the 0th bit and the 1st bit from the least significant bit. Bit data is output as output data. That is, output data in which Data1_0 to Data1_1 held in the second register 41 are connected to Data1_0 to Data1_7 held in the first register 40 is output. Thereafter, the setting of the read position pointer RP is changed to the second bit of the second register 41.

読み出し位置ポインタRPの設定が第2レジスタ41の2ビット目に変更されると、図7Bに示すように、バッファレジスタ32にData2(Data2_0〜Data2_7)が入力され、Data2(Data2_0〜Data2_7)が第1レジスタ40に保持される。ここで、読み出し位置ポインタRPが第2レジスタ41の2ビット目に設定されているので、第2レジスタ41の2ビット目から10ビット分のデータが出力データとして出力される。つまり、第2レジスタ41に保持されているData1_2〜Data1_7に第1レジスタ40に保持されているData2_0〜Data2_3が連結された出力データが出力される。この後、読み出し位置ポインタRPの設定が第1レジスタ40の4ビット目に変更される。   When the setting of the read position pointer RP is changed to the second bit of the second register 41, as shown in FIG. 7B, Data2 (Data2_0 to Data2_7) is input to the buffer register 32, and Data2 (Data2_0 to Data2_7) is the first bit. 1 is held in one register 40. Here, since the read position pointer RP is set to the second bit of the second register 41, data for 10 bits from the second bit of the second register 41 is output as output data. In other words, output data in which Data1_2 to Data1_7 held in the second register 41 are connected to Data2_0 to Data2_3 held in the first register 40 is output. Thereafter, the setting of the read position pointer RP is changed to the fourth bit of the first register 40.

読み出し位置ポインタRPの設定が第1レジスタ40の4ビット目に変更されると、図7Cに示すように、バッファレジスタ32にData3(Data3_0〜Data3_7)が入力され、Data3(Data3_0〜Data3_7)が第2レジスタ41に保持される。ここで、読み出し位置ポインタRPが第1レジスタ40の4ビット目に設定されているので、第1レジスタ40の4ビット目から10ビット分のデータが出力データとして出力される。つまり、第1レジスタ40に保持されているData2_4〜Data2_7に第2レジスタ41に保持されているData3_0〜Data3_5が連結された出力データが出力される。この後、読み出し位置ポインタRPの設定が第2レジスタ41の6ビット目に変更される。   When the setting of the read position pointer RP is changed to the fourth bit of the first register 40, as shown in FIG. 7C, Data3 (Data3_0 to Data3_7) is input to the buffer register 32, and Data3 (Data3_0 to Data3_7) is the first. 2 is held in the register 41. Here, since the read position pointer RP is set to the fourth bit of the first register 40, the data for 10 bits from the fourth bit of the first register 40 is output as output data. That is, output data obtained by connecting Data3_0 to Data3_5 held in the second register 41 to Data2_4 to Data2_7 held in the first register 40 is output. Thereafter, the setting of the read position pointer RP is changed to the sixth bit of the second register 41.

読み出し位置ポインタRPの設定が第2レジスタ41の6ビット目に変更されると、図7Dに示すように、バッファレジスタ32にData4(Data4_0〜Data4_7)が入力され、Data4(Data4_0〜Data4_7)が第1レジスタ40に保持される。ここで、読み出し位置ポインタRPが第2レジスタ41の6ビット目に設定されているので、第2レジスタ41の6ビット目から10ビット分のデータが出力データとして出力される。つまり、第2レジスタ41に保持されているData3_6〜Data3_7に第1レジスタ40に保持されているData4_0〜Data4_7が連結された出力データが出力される。この後、読み出し位置ポインタRPの設定が第2レジスタ41の0ビット目に変更される。
Data5(Data5_0〜Data5_7)以降の入力データも、Data5(Data5_0〜Data5_7)が第2レジスタ41に、Data6(Data6_0〜Data6_7)が第1レジスタ40にという順番で、第1レジスタ40又は第2レジスタ41に保持され、読み出し位置ポインタRPの設定されたビットから10ビット分のデータが出力データとして順次出力される。
When the setting of the read position pointer RP is changed to the sixth bit of the second register 41, as shown in FIG. 7D, Data4 (Data4_0 to Data4_7) is input to the buffer register 32, and Data4 (Data4_0 to Data4_7) is the first. 1 is held in one register 40. Here, since the read position pointer RP is set to the 6th bit of the second register 41, 10-bit data from the 6th bit of the second register 41 is output as output data. That is, output data obtained by connecting Data4_0 to Data4_7 held in the first register 40 to Data3_6 to Data3_7 held in the second register 41 is output. Thereafter, the setting of the read position pointer RP is changed to the 0th bit of the second register 41.
The input data after Data5 (Data5_0 to Data5_7) also includes the first register 40 or the second register 41 in the order of Data5 (Data5_0 to Data5_7) to the second register 41 and Data6 (Data6_0 to Data6_7) to the first register 40. And 10 bits of data from the bits set in the read position pointer RP are sequentially output as output data.

又、バッファレジスタ32に入力された512バイトの入力データは、シンボル長(10ビット)単位の出力データとして出力され、最後のシンボル長(10ビット)に満たないデータにダミーデータが付加される。このダミーデータの付加について、図8を参照して説明する。   The 512-byte input data input to the buffer register 32 is output as output data in symbol length (10 bits) units, and dummy data is added to data less than the last symbol length (10 bits). The addition of the dummy data will be described with reference to FIG.

図8には、バッファレジスタ32に入力されるData510以降の入力データとバッファレジスタ32から出力される出力データが示されている。バッファレジスタ32に入力されたData510(Data510_0〜Data510_7)は第1レジスタ40に保持され、Data511(Data511_0〜Data511_7)は第2レジスタ41に保持される。ここで、図8(i)に示すように、読み出し位置ポインタRPが第1レジスタ40の0ビット目に設定されているので、第1レジスタ40の0ビット目から10ビット分のデータが出力データとして出力される。つまり、第1レジスタ40に保持されているData510_0〜Data510_7に第2レジスタ41に保持されているData511_0〜Data511_1が連結された出力データが出力される。この後、読み出し位置ポインタRPの設定が第2レジスタ41の2ビット目に変更される。更に、図8(ii)に示すように、Data511_2〜Data511_7の6ビットには4ビットのダミーデータが付加され、10ビットの出力データとしてバッファレジスタ32から出力される。   FIG. 8 shows input data after Data 510 input to the buffer register 32 and output data output from the buffer register 32. Data 510 (Data 510 — 0 to Data 510 — 7) input to the buffer register 32 is held in the first register 40, and Data 511 (Data 511 — 0 to Data 511 — 7) is held in the second register 41. Here, as shown in FIG. 8 (i), since the read position pointer RP is set to the 0th bit of the first register 40, 10-bit data from the 0th bit of the first register 40 is output data. Is output as That is, output data in which Data 510_0 to Data 510_7 held in the first register 40 and Data 511_0 to Data 511_1 held in the second register 41 are connected is output. Thereafter, the setting of the read position pointer RP is changed to the second bit of the second register 41. Further, as shown in FIG. 8 (ii), 4-bit dummy data is added to the 6 bits of Data511_2 to Data511_7 and is output from the buffer register 32 as 10-bit output data.

尚、最後に残るシンボル長に満たないデータのビット数は、リードソロモン符号を用いた訂正符号(ECC)を生成する単位データ(本実施形態においては、Data0〜Data511の512バイトのユーザデータ)に含まれる全ビットの数を、所定のシンボル長のビット数(本実施形態においては10ビット)で割ったときの余りに一致する。又、最後のシンボル長に満たないデータに付加されるダミーデータの論理値(“0”又は“1”)は適宜設定することができる。   It should be noted that the number of bits of data that is less than the last remaining symbol length is unit data for generating a correction code (ECC) using a Reed-Solomon code (in this embodiment, 512-byte user data of Data0 to Data511). This coincides with the remainder when the number of all bits included is divided by the number of bits of a predetermined symbol length (10 bits in this embodiment). Further, the logical value (“0” or “1”) of the dummy data added to the data less than the last symbol length can be set as appropriate.

以上に説明したように、本実施形態では、フラッシュメモリ2のデータバスと同じバス幅のレジスタを2個設け、この2個のレジスタにフラッシュメモリ2に供給されるユーザデータが順次保持され、保持されたユーザデータが所定のシンボル長単位で誤り訂正符号・復号器33に供給される。この際、ユーザデータはフラッシュメモリ2に供給される順番で連結され、所定のシンボル長単位で切り出されて訂正符号・復号器33に供給され、最後に残ったシンボル長に満たないユーザデータ以外には、ダミーデータが付加されない。従って、エラー訂正の対象となるシンボル数を従来よりも少なくすることができる。例えば、所定のシンボル長が10ビットの場合、従来は1バイトのデータに2ビットのダミーデータを付加して10ビットのシンボルデータとしていたので、512バイトのユーザデータから512シンボルのシンボルデータが生成されるが、上述のようにしてシンボルデータを生成すれば、生成されるシンボル数を410シンボルに減少させることができる。   As described above, in the present embodiment, two registers having the same bus width as the data bus of the flash memory 2 are provided, and the user data supplied to the flash memory 2 is sequentially held in these two registers and held. The user data thus supplied is supplied to the error correction code / decoder 33 in units of a predetermined symbol length. At this time, the user data is concatenated in the order of supply to the flash memory 2, cut out in units of a predetermined symbol length, supplied to the correction code / decoder 33, and the user data other than the last remaining user symbol length. No dummy data is added. Therefore, the number of symbols subject to error correction can be reduced as compared with the prior art. For example, if the predetermined symbol length is 10 bits, conventionally, 2-bit dummy data is added to 1-byte data to form 10-bit symbol data, so that 512-symbol symbol data is generated from 512-byte user data. However, if symbol data is generated as described above, the number of generated symbols can be reduced to 410 symbols.

又、リードソロモン符号を用いた誤り訂正では、生成される誤り訂正符号のシンボル数の1/2が訂正することができるシンボル数に一致する。例えば、8シンボル誤り訂正符号を生成する場合には、4シンボルの誤り訂正が可能になる。従って、誤り訂正符号のシンボル数が同じであれば、同じシンボル数の誤りを訂正することができるので、エラー訂正の対象となるシンボル数を少なくした方がエラー訂正することができる比率が高くなる。尚、誤り訂正符号・復号器33で生成される誤り訂正符号のシンボル数は、冗長領域26に格納できる誤り訂正符号の容量に合わせて適宜設定することができる。   In error correction using a Reed-Solomon code, ½ of the number of symbols of the generated error correction code matches the number of symbols that can be corrected. For example, when an 8-symbol error correction code is generated, 4-symbol error correction is possible. Therefore, if the number of symbols of the error correction code is the same, an error of the same number of symbols can be corrected. Therefore, the ratio of error correction can be increased by reducing the number of symbols subject to error correction. . The number of symbols of the error correction code generated by the error correction code / decoder 33 can be set as appropriate according to the capacity of the error correction code that can be stored in the redundant area 26.

以上説明したとおり、本発明に係るメモリコントローラは、フラッシュメモリ2に供給されるユーザデータを順次連結し、連結したユーザデータを所定のシンボル長単位で切り出して誤り訂正符号・復号器33に供給している。従って、最後に残ったシンボル長に満たないユーザデータ以外には、ダミーデータが付加されないので、エラー訂正の対象となるシンボル数を従来よりも少なくし、エラー訂正することができる比率を高くすることができる。   As described above, the memory controller according to the present invention sequentially concatenates user data supplied to the flash memory 2, cuts out the concatenated user data in units of a predetermined symbol length, and supplies it to the error correction code / decoder 33. ing. Therefore, since no dummy data is added except for user data less than the last remaining symbol length, the number of symbols subject to error correction should be reduced compared to the prior art, and the error correction ratio should be increased. Can do.

この発明は、上述の実施形態に限定されず、種々の変形及び応用が可能である。   The present invention is not limited to the above-described embodiment, and various modifications and applications are possible.

例えば、フラッシュメモリ2のデータバスのバス幅が16ビットの場合には、バッファレジスタ32内の第1レジスタ40及び第2レジスタ41のビット数を16ビットに変更することによって同様に実施することができる。この場合、16ビットの入力データが、第1レジスタ40と第2レジスタ41に順次保持され、保持されたデータが所定のシンボル長(10ビット)単位で切り出され誤り訂正符号・復号器33に供給される。
図9(a)は、バッファ9から16ビット単位で内部バス14に出力される512バイトのデータを示している。バッファ9に蓄積されたデータは、先頭から順に、Data0、Data1、Data2の順にData255まで、16ビット単位で内部バス14を介してフラッシュメモリ2に供給され、ユーザデータとしてフラッシュメモリ2のユーザ領域25に書き込まれる。これら16ビットのデータは、ビットの最下位から数えて0ビット目、1ビット目の順に、最上位が15ビット目となる。また、図9(a)には、Data0[10:15]という記載があるが、これは、Data0のうち10ビット目から15ビット目までのビット列(6ビット)を意味する。
また、バッファ9から16ビット単位で出力されたデータは、内部バス14を介してバッファレジスタ32にも供給される。
バッファレジスタ32は、バッファ9から供給されたデータを一時的に保持し、所定のシンボル長(10ビット)ずつ誤り訂正符号・復号器33に出力する。又、Data0〜Data255の512バイトのデータを所定のシンボル長(10ビット)ずつ誤り訂正符号・復号器33に出力していき、最後に所定のシンボル長(10ビット)に満たないデータが残ったときは、ダミーデータを付加した所定のシンボル長(10ビット)のデータを生成し、誤り訂正符号・復号器33に出力する。
図9(b)は、バッファレジスタ32から誤り訂正符号・復号器33に出力される所定のシンボル長(10ビット)のデータを示している。例えば、Data0[9:0]で1個のシンボルデータが生成され、Data0[15:10]とData1[3:0]で1個のシンボルデータが生成される。このようにData0〜Data255の512バイトのデータを連結し、所定のシンボル長(10ビット)単位で切り出していき、最後に4ビットのダミーデータを付加することにより410シンボルのシンボルデータが生成される。
For example, when the bus width of the data bus of the flash memory 2 is 16 bits, it can be similarly implemented by changing the number of bits of the first register 40 and the second register 41 in the buffer register 32 to 16 bits. it can. In this case, 16-bit input data is sequentially held in the first register 40 and the second register 41, and the held data is cut out in units of a predetermined symbol length (10 bits) and supplied to the error correction code / decoder 33. Is done.
FIG. 9A shows 512-byte data output from the buffer 9 to the internal bus 14 in units of 16 bits. The data stored in the buffer 9 is supplied to the flash memory 2 via the internal bus 14 in units of 16 bits from the top to the data 255 in the order of Data0, Data1, and Data2, and the user area 25 of the flash memory 2 as user data. Is written to. These 16-bit data are counted from the least significant bit to the 15th bit in the order of the 0th bit and the 1st bit. Further, FIG. 9A has a description of Data0 [10:15], which means a bit string (6 bits) from the 10th bit to the 15th bit of Data0.
The data output from the buffer 9 in units of 16 bits is also supplied to the buffer register 32 via the internal bus 14.
The buffer register 32 temporarily holds the data supplied from the buffer 9 and outputs the data to the error correction code / decoder 33 by a predetermined symbol length (10 bits). In addition, 512 bytes of data 0 to 255 are output to the error correction code / decoder 33 by a predetermined symbol length (10 bits), and finally, data that does not satisfy the predetermined symbol length (10 bits) remains. In this case, data of a predetermined symbol length (10 bits) with dummy data added is generated and output to the error correction code / decoder 33.
FIG. 9B shows data of a predetermined symbol length (10 bits) output from the buffer register 32 to the error correction code / decoder 33. For example, one symbol data is generated by Data0 [9: 0], and one symbol data is generated by Data0 [15:10] and Data1 [3: 0]. In this way, 512 bytes of data 0 to 255 are concatenated, cut out in units of a predetermined symbol length (10 bits), and finally 4 bits of dummy data are added to generate 410 symbols of symbol data. .

リードソロモン符号のシンボル長は、リードソロモン符号理論における生成多項式が成り立つ範囲で、誤り訂正符号を生成する単位(ユーザデータの容量)に応じて適宜設定することができる。例えば、2048バイト(4セクタ)単位で誤り訂正符号を生成する場合には、それに応じてリードソロモン符号のシンボル長を増やせばよい。   The symbol length of the Reed-Solomon code can be set as appropriate according to the unit (capacity of user data) for generating the error-correcting code within the range where the generator polynomial in the Reed-Solomon code theory holds. For example, when an error correction code is generated in units of 2048 bytes (4 sectors), the symbol length of the Reed-Solomon code may be increased accordingly.

又、シンボル長を短くするために(1シンボルのビット数を減らすために)、512バイト(1セクタ)のユーザデータを複数個に分割して、分割したユーザデータ単位で誤り訂正符号を生成するようにしてもよい。   Also, in order to shorten the symbol length (in order to reduce the number of bits of one symbol), 512-byte (one sector) user data is divided into a plurality of pieces, and error correction codes are generated in divided user data units. You may do it.

フラッシュメモリシステムの一例を示すブロック図である。1 is a block diagram illustrating an example of a flash memory system. フラッシュメモリのアドレス空間の構造の一例を示す図である。It is a figure which shows an example of the structure of the address space of flash memory. バッファからフラッシュメモリへデータを書き込む際のデータの流れを示す図である。It is a figure which shows the flow of data at the time of writing data from a buffer to flash memory. フラッシュメモリからバッファへデータを書き込む際のデータの流れを示す図である。It is a figure which shows the data flow at the time of writing data from a flash memory to a buffer. バッファレジスタの一例を示すブロック図である。It is a block diagram which shows an example of a buffer register. (a)は、データバスのバス幅が8ビットのフラッシュメモリに512バイトのデータを格納したときのバッファのデータ状態を示す図である。(b)は、(a)で示したデータがどのような形式で誤り訂正符号・復号器に出力されるかを示す図である。(A) is a figure which shows the data state of the buffer when data of 512 bytes is stored in the flash memory whose bus width of a data bus is 8 bits. (B) is a diagram showing in what format the data shown in (a) is output to the error correction code / decoder. バッファレジスタからデータを誤り訂正符号・復号器に供給する処理を示す図である。It is a figure which shows the process which supplies data to an error correction code | symbol decoder from a buffer register. バッファレジスタからデータを誤り訂正符号・復号器に供給する処理を示す図である。It is a figure which shows the process which supplies data to an error correction code | symbol decoder from a buffer register. バッファレジスタからデータを誤り訂正符号・復号器に供給する処理を示す図である。It is a figure which shows the process which supplies data to an error correction code | symbol decoder from a buffer register. バッファレジスタからデータを誤り訂正符号・復号器に供給する処理を示す図である。It is a figure which shows the process which supplies data to an error correction code | symbol decoder from a buffer register. バッファレジスタからデータを誤り訂正符号・復号器に供給する処理を示す図である。It is a figure which shows the process which supplies data to an error correction code | symbol decoder from a buffer register. (a)は、データバスのバス幅が16ビットのフラッシュメモリに512バイトのデータを格納したときのバッファのデータ状態を示す図である。(b)は、(a)で示したデータがどのような形式で誤り訂正符号・復号器に出力されるかを示す図である。(A) is a figure which shows the data state of the buffer when data of 512 bytes is stored in the flash memory whose bus width of a data bus is 16 bits. (B) is a diagram showing in what format the data shown in (a) is output to the error correction code / decoder.

符号の説明Explanation of symbols

1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
25 ユーザ領域
26 冗長領域
30 ECCレジスタ
32 バッファレジスタ
33 誤り訂正符号・復号器
34 マスク回路
40 第1レジスタ
41 第2レジスタ
1 Flash memory system 2 Flash memory 3 Controller 4 Host system 6 Microprocessor 7 Host interface block 8 Work area 9 Buffer 10 Flash memory interface block 11 ECC block 12 ROM
13 External bus 14 Internal bus 25 User area 26 Redundant area 30 ECC register 32 Buffer register 33 Error correction code / decoder 34 Mask circuit 40 First register 41 Second register

Claims (5)

ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリのユーザ領域に書き込まれるユーザデータを供給する書き込みデータ供給手段と、
前記ユーザデータを受け取り、該ユーザデータを所定のバイト数に達するまで順次連結し、該連結したデータを所定のシンボル長単位で順次切り出して出力するシンボルデータ供給手段と、
前記所定のバイト数の前記ユーザデータから切り出される最終データのデータ長が前記所定のシンボル長に満たないときに該最終データに所定のダミーデータを付加するダミーデータ付加手段と、
前記シンボルデータ供給手段からシンボル長単位で出力されるデータに基づいて、前記所定のバイト数の前記ユーザデータに対するリードソロモン符号で構成された誤り訂正符号を生成する誤り訂正符号生成手段と、
前記所定のバイト数の前記ユーザデータが前記フラッシュメモリの消去状態と一致するときに前記誤り訂正符号が前記フラッシュメモリの消去状態に一致するような変換処理を前記誤り訂正符号に対して施す変換手段と、
前記変換処理が施された前記誤り訂正符号を前記所定のバイト数の前記ユーザデータが書き込まれたユーザ領域に対応する冗長領域に書き込む冗長データ書き込み手段と、
を備えることを特徴とするメモリコントローラ。
A memory controller that controls access to a flash memory in response to a command from a host system,
Write data supply means for supplying user data to be written to the user area of the flash memory;
Symbol data supply means for receiving the user data, sequentially connecting the user data until a predetermined number of bytes is reached, and sequentially cutting out and outputting the connected data in units of a predetermined symbol length;
Dummy data adding means for adding predetermined dummy data to the final data when the data length of the final data extracted from the user data of the predetermined number of bytes is less than the predetermined symbol length;
An error correction code generation unit configured to generate an error correction code composed of a Reed-Solomon code for the user data of the predetermined number of bytes based on data output in symbol length units from the symbol data supply unit;
Conversion means for performing conversion processing on the error correction code so that the error correction code matches the erased state of the flash memory when the user data of the predetermined number of bytes matches the erased state of the flash memory When,
Redundant data writing means for writing the error correction code subjected to the conversion process into a redundant area corresponding to a user area in which the user data of the predetermined number of bytes is written;
A memory controller comprising:
前記ユーザ領域に書き込まれているユーザデータを読み出すユーザデータ読み出し手段と、
前記冗長領域に書き込まれている前記変換処理が施された前記誤り訂正符号を読み出す冗長データ読み出し手段と、
前記冗長データ読み出し手段によって読み出された前記変換処理が施された前記誤り訂正符号を前記変換処理前の前記誤り訂正符号に戻す逆変換手段と、
前記逆変換手段から供給される前記変換処理前の前記誤り訂正符号に基づいて、前記シンボルデータ供給手段を介して供給されるシンボル長単位のデータの誤りを訂正する誤り訂正符号生成手段と、
をさらに備えることを特徴とする請求項1に記載のメモリコントローラ。
User data reading means for reading user data written in the user area;
Redundant data reading means for reading the error correction code subjected to the conversion process written in the redundant area;
Inverse conversion means for returning the error correction code subjected to the conversion processing read by the redundant data reading means to the error correction code before the conversion processing;
Based on the error correction code before the conversion process supplied from the inverse conversion means, an error correction code generation means for correcting an error in the symbol length unit supplied via the symbol data supply means;
The memory controller according to claim 1, further comprising:
前記所定のバイト数が512バイトであることを特徴とする請求項1または2に記載のメモリコントローラ。   3. The memory controller according to claim 1, wherein the predetermined number of bytes is 512 bytes. 前記シンボルデータ供給手段が前記ユーザデータを前記フラッシュメモリのバス幅と同一のビット数単位で順次連結し、該連結したデータを所定のシンボル長単位で切り出すことを特徴とする請求項1から3のいずれか1項に記載のメモリコントローラ。   The symbol data supply means sequentially connects the user data in units of the same number of bits as the bus width of the flash memory, and cuts out the connected data in units of a predetermined symbol length. The memory controller according to any one of claims. 請求項1から4のいずれか1項に記載のメモリコントローラと、
フラッシュメモリと、
から構成されることを特徴とするフラッシュメモリシステム。
A memory controller according to any one of claims 1 to 4,
Flash memory,
A flash memory system comprising:
JP2005380055A 2005-12-28 2005-12-28 Memory controller and flash memory system Pending JP2007179480A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005380055A JP2007179480A (en) 2005-12-28 2005-12-28 Memory controller and flash memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005380055A JP2007179480A (en) 2005-12-28 2005-12-28 Memory controller and flash memory system

Publications (1)

Publication Number Publication Date
JP2007179480A true JP2007179480A (en) 2007-07-12

Family

ID=38304573

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005380055A Pending JP2007179480A (en) 2005-12-28 2005-12-28 Memory controller and flash memory system

Country Status (1)

Country Link
JP (1) JP2007179480A (en)

Similar Documents

Publication Publication Date Title
US8239725B2 (en) Data storage with an outer block code and a stream-based inner code
US9063875B2 (en) Error recovery storage along a memory string
US9229802B2 (en) Non-systematic coded error correction
KR101576102B1 (en) Method for reading data from block of flash memory and associated memory device
KR101588605B1 (en) Memory controller supporting rate compatible punctured codes
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
KR101730510B1 (en) Non-regular parity distribution detection via metadata tag
KR20040038709A (en) Method and apparatus for managing the integrity of data in a non-volatile memory system
JP2008165805A (en) Ecc (error correction code) controller for flash memory device and memory system including same
JP2012137994A (en) Memory system and controlling method thereof
TWI536749B (en) Decoding method, memory storage device and memory controlling circuit unit
CN111869111B (en) Generating and using reversible shortened bose-charderry-hokumq codewords
JP2009157515A (en) Semiconductor memory controller and semiconductor memory
JP2006221334A (en) Memory controller, flash memory system, and control method for flash memory
WO2009139115A1 (en) Semiconductor recording device
CN112799874B (en) Memory control method, memory storage device and memory control circuit unit
JP4582078B2 (en) Memory controller, flash memory system, and flash memory control method
JP4692843B2 (en) Memory controller, flash memory system, and flash memory control method
JP2007179480A (en) Memory controller and flash memory system
TWI777087B (en) Data managing method, memory controlling circuit unit and memory storage device
CN111258791B (en) Memory control method, memory storage device and memory control circuit unit
US20190294497A1 (en) Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same
JP2006127441A (en) Memory controller, flash memory system and method for controlling flash memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090113