JP2007179480A - Memory controller and flash memory system - Google Patents
Memory controller and flash memory system Download PDFInfo
- 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
Links
Images
Abstract
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は
(2n−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個として符号化する技術が開示されている。
上述の技術では、データをリードソロモン符号で符号化するにあたり、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
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
The
フラッシュメモリ2は、NAND型フラッシュメモリから構成される。NAND型フラッシュメモリは、不揮発性メモリであり、レジスタと、メモリセルアレイとから構成される。フラッシュメモリ2は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
The
メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。 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
ページは、フラッシュメモリ2にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ2にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
A page is a processing unit in a data read operation and a data write operation performed in the
図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
冗長領域26は、ECC(Error Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するための領域である。
The
ECCは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータであり、後述するECCブロックにより生成される。
The ECC is data for detecting and correcting an error included in data stored in the
論理アドレス情報は、フラッシュメモリ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
なお、ユーザ領域25に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域26に、論理アドレス情報は格納されていない。
For a physical block in which valid data is not stored in the
したがって、冗長領域26に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域26が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域26に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。
Therefore, by determining whether or not logical address information is stored in the
上述のように、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
したがって、論理ブロックと物理ブロックとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域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
ブロックステータス(フラグ)は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域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
このようなフラッシュメモリ2は、コントローラ3から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
Such a
ここで、内部コマンドとは、コントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、コントローラ3から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
Here, the internal command is a command for the
コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECCブロック11と、ROM(Read Only Memory)12と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
As shown in FIG. 1, the
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、コントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、各種処理等を定義したコマンドセットをROM12から読み出してフラッシュメモリインターフェースブロック10に供給し、フラッシュメモリインターフェースブロック10に処理を実行させる。
The
ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
The
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
The
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
The
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。
The flash
フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等を実行させる。
The flash
ECCブロック11は、フラッシュメモリ2に書き込むデータ(ユーザデータ)に付加されるECCを生成するとともに、フラッシュメモリ2から読み出したデータに付加されたECCに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
The
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
The
ここで、ECCブロック11について図3および図4を用いて説明する。図3はフラッシュメモリ2へデータを書き込む処理におけるECCブロック11の動作を説明するための図である。図4はフラッシュメモリ2からデータを読み出す処理におけるECCブロック11の動作を説明するための図である。
Here, the
ECCブロック11は、ECCレジスタ30と、バッファレジスタ32と、誤り訂正符号・復号器33と、マスク回路34とから構成される。
The
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
The
The error correction code /
The
In this first conversion process, when all 512-byte (4096 bits) bit data written to the
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 /
On the other hand, in the second conversion process, the error correction code (ECC-M) subjected to the first conversion read from the
次に、バッファレジスタ32の構成について、図5を用いて説明する。
Next, the configuration of the
バッファレジスタ32は内部バス14に接続され、フラッシュメモリ2のデータバスと同じバス幅の8ビットのビット長を有する第1レジスタ40と第2レジスタ41との2つのレジスタを備える。従って、バッファレジスタ32は8ビットのデータ2つを格納できる。また、バッファレジスタ32は、読み出し位置を示す読み出し位置ポインタRPを備える。
The
本実施形態においては、リードソロモン符号によるシンボル長は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 /
以下に、10ビットを1シンボルとするリードソロモン符号を例にとり、ホストシステム4から与えられる512バイトのデータをユーザ領域25に書き込む場合のECCブロック11の動作を、図3を参照して説明する。
The operation of the
ホストシステム4から与えられたデータは、いったんバッファ9に蓄積され、これらの蓄積されたデータが内部バス14を介してフラッシュメモリ2に書き込まれる。
Data provided from the
図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
また、バッファ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
The
FIG. 6B shows data of a predetermined symbol length (10 bits) output from the
誤り訂正符号・復号器33は、バッファレジスタ32から供給されたデータに基づいて、8シンボルの誤り訂正符号(ECC)を生成する。8シンボルの誤り訂正符号は、マスク回路34により第1の変換処理を施され、第1の変換処理を施された誤り訂正符号(ECC−M)が、フラッシュメモリ2の冗長領域26に書き込まれる。尚、フラッシュメモリ2の冗長領域26に書き込まれるときに、第1の変換処理を施された8シンボルの誤り訂正符号(ECC−M)は、8ビットのビット列データ(10バイト)に変換される。
The error correction code /
次いで、読み出し処理における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
The 512-byte data read from the
一方、マスク回路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
誤り訂正符号・復号器33は、バッファレジスタ32から供給された410シンボルのシンボルデータと、マスク回路34から供給された8シンボルの誤り訂正符号(ECC)に基づいて、バッファ9に格納されているユーザデータやECCレジスタ30に格納されている誤り訂正符号(ECC)の誤りを検出し、訂正することができる。ここで、ユーザデータやECCの誤りの検出および訂正はシンボル単位で行われる。
The error correction code /
次に、バッファレジスタ32の動作を、図7及び図8を用いて説明する。
Next, the operation of the
図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
The
On the other hand, the held data held in the
このバッファレジスタ32の動作を、順を追って説明する。
The operation of the
まず、図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
読み出し位置ポインタ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
読み出し位置ポインタ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
読み出し位置ポインタ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
The input data after Data5 (Data5_0 to Data5_7) also includes the
又、バッファレジスタ32に入力された512バイトの入力データは、シンボル長(10ビット)単位の出力データとして出力され、最後のシンボル長(10ビット)に満たないデータにダミーデータが付加される。このダミーデータの付加について、図8を参照して説明する。
The 512-byte input data input to the
図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
尚、最後に残るシンボル長に満たないデータのビット数は、リードソロモン符号を用いた訂正符号(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
又、リードソロモン符号を用いた誤り訂正では、生成される誤り訂正符号のシンボル数の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 /
以上説明したとおり、本発明に係るメモリコントローラは、フラッシュメモリ2に供給されるユーザデータを順次連結し、連結したユーザデータを所定のシンボル長単位で切り出して誤り訂正符号・復号器33に供給している。従って、最後に残ったシンボル長に満たないユーザデータ以外には、ダミーデータが付加されないので、エラー訂正の対象となるシンボル数を従来よりも少なくし、エラー訂正することができる比率を高くすることができる。
As described above, the memory controller according to the present invention sequentially concatenates user data supplied to the
この発明は、上述の実施形態に限定されず、種々の変形及び応用が可能である。 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
FIG. 9A shows 512-byte data output from the
The data output from the
The
FIG. 9B shows data of a predetermined symbol length (10 bits) output from the
リードソロモン符号のシンボル長は、リードソロモン符号理論における生成多項式が成り立つ範囲で、誤り訂正符号を生成する単位(ユーザデータの容量)に応じて適宜設定することができる。例えば、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 フラッシュメモリシステム
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
13
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:
フラッシュメモリと、
から構成されることを特徴とするフラッシュメモリシステム。 A memory controller according to any one of claims 1 to 4,
Flash memory,
A flash memory system comprising:
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) |
-
2005
- 2005-12-28 JP JP2005380055A patent/JP2007179480A/en active Pending
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 |