JP4332132B2 - Memory controller, flash memory system, and flash memory control method - Google Patents

Memory controller, flash memory system, and flash memory control method Download PDF

Info

Publication number
JP4332132B2
JP4332132B2 JP2005138944A JP2005138944A JP4332132B2 JP 4332132 B2 JP4332132 B2 JP 4332132B2 JP 2005138944 A JP2005138944 A JP 2005138944A JP 2005138944 A JP2005138944 A JP 2005138944A JP 4332132 B2 JP4332132 B2 JP 4332132B2
Authority
JP
Japan
Prior art keywords
flash memory
data
checksum
writing
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005138944A
Other languages
Japanese (ja)
Other versions
JP2006318132A (en
Inventor
俊一 花房
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 JP2005138944A priority Critical patent/JP4332132B2/en
Publication of JP2006318132A publication Critical patent/JP2006318132A/en
Application granted granted Critical
Publication of JP4332132B2 publication Critical patent/JP4332132B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

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

近年、フラッシュメモリの性能(記憶容量、信頼性、動作速度等)が向上し、不揮発性の記録媒体として、プログラム等を格納する用途に用いられつつある。   In recent years, flash memory performance (storage capacity, reliability, operation speed, etc.) has been improved, and it is being used as a nonvolatile recording medium for storing programs and the like.

フラッシュメモリは、その特性上、データが正常に書き込まれない(データに誤りが混入する)おそれがある。このため、データを書き込んだ後に、書き込んだデータを読み出して、正常に書き込みが成されたことを確認する手順(ベリフィケーション)が必要である。最も確実なベリフィケーションの手法は、データの全てのビットを照合する手法であるが、この手法は時間がかかり、利便性に欠ける。   Due to the characteristics of the flash memory, data may not be written normally (incorrect data may be mixed). For this reason, a procedure (verification) is required in which after the data is written, the written data is read and the normal writing is confirmed. The most reliable verification method is a method of collating all bits of data, but this method is time consuming and lacks convenience.

このため、データを所定のビット毎に区切り、それを順次加算して得られるチェックサム値を求め、このチェックサム値と予め算出された期待値とに一致を確認することでベリフィケーションの短時間化を図る手法が提案されている(例えば特許文献1)。
特開2001−175478号公報
For this reason, the data is divided into predetermined bits, and the checksum value obtained by sequentially adding the data is obtained, and by confirming a match between the checksum value and the expected value calculated in advance, the verification can be shortened. A method for achieving time has been proposed (for example, Patent Document 1).
JP 2001-175478 A

しかしながら、上記の手法では、予めチェックサムの期待値を求めておく必要があるため、データ作成時にチェックサムの期待値を求める時間を含めて総合的に考えると、ベリフィケーションの短時間化は十分とは言えない。   However, in the above method, since it is necessary to obtain the expected value of the checksum in advance, considering the time for obtaining the expected value of the checksum at the time of data creation, the verification can be shortened. That's not enough.

本発明は上記の実情に鑑みてなされたもので、ベリフィケーションの時間を抑制可能なフラッシュメモリの制御方法、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。   The present invention has been made in view of the above circumstances, and an object of the present invention is to provide a flash memory control method, a memory controller, and a flash memory system including the memory controller that can suppress verification time.

本発明の第1の観点に係るメモリコントローラは、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込手段と、前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成手段と、前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込手段と、前記書込手段が前記フラッシュメモリにデータを書き込むのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出手段と、前記フラッシュメモリに書き込まれているデータを読み出す読出手段と、前記フラッシュメモリに書き込まれている前記エラーコレクションコードを読み出すエラーコレクションコード読出手段と、前記フラッシュメモリから読み出されたデータに含まれる誤りを、前記フラッシュメモリから読み出された前記エラーコレクションコードに基づいて訂正する訂正手段と、前記書込手段が前記フラッシュメモリにデータを書き込んだ後に、前記フラッシュメモリから当該書き込んだデータを読み出し、読み出したデータのチェックサム値を算出するチェックサム算出手段と、前記期待値算出手段が算出したチェックサムの期待値と前記チェックサム算出手段が算出したチェックサム値とを照合して、前記フラッシュメモリにデータが正しく書き込まれたか否かを判定する判定手段とを備え、前記チェックサム算出手段は、前記フラッシュメモリから読み出したデータに誤りが含まれていた場合、前記前記訂正手段により誤りが訂正されたデータのチェックサム値を算出することを特徴とする。
なお、本発明において、ホストシステムとは、フラッシュメモリを記録媒体として利用する装置を指すものとする。
A memory controller according to a first aspect of the present invention includes a writing unit that writes data to a flash memory in response to an instruction from a host system that uses the flash memory as a storage medium, and a memory that stores data written to the flash memory. and error correction code generating means for generating an error correction code, in parallel with the error correction code writing means for writing the error correction code in the flash memory, and the writing means for writing data to the flash memory, wherein an expected value calculation means for calculating an expected value of the checksum of the data being written to the flash memory, and reading means for reading the data written in the flash memory, the error correction code that is written in the flash memory And error correction code reading means for out look, the errors included in data read from the flash memory, and correction means for correcting, based on the error correction code read from the flash memory, the writing means After writing the data to the flash memory, the written data is read from the flash memory, the checksum calculation means for calculating the checksum value of the read data, and the expected value of the checksum calculated by the expected value calculation means And a check means for comparing the checksum value calculated by the checksum calculation means to determine whether or not data has been correctly written to the flash memory, and the checksum calculation means includes: If the read data contains errors And calculates a checksum value of the data whose error is corrected by said correcting means.
In the present invention, the host system refers to a device that uses a flash memory as a recording medium.

前記期待値算出手段は、ハードウェアによる加算器から構成されることが望ましい。   The expected value calculation means is preferably composed of an adder by hardware.

前記チェックサム算出手段は、ハードウェアによる加算器から構成されることが望ましい。   The checksum calculation means is preferably composed of an adder by hardware.

前記期待値算出手段及び前記チェックサム算出手段は、前記ホストシステムからの要求に応じて、算出する期待値及びチェックサム値のビット数を変更してもよい。   The expected value calculation means and the checksum calculation means may change the number of bits of the expected value and checksum value to be calculated in response to a request from the host system.

前記期待値算出手段及び前記チェックサム算出手段は、算出する期待値及びチェックサム値のビット数を、当該メモリコントローラと前記フラッシュメモリとを接続するバスのビット幅と等しいビット数としてもよい。   The expected value calculation unit and the checksum calculation unit may calculate the number of bits of the expected value and the checksum value to be equal to the bit width of the bus connecting the memory controller and the flash memory.

本発明の第2の観点に係るフラッシュメモリシステムは、上記の特徴のうち、少なくともいずれか一つを有するメモリコントローラと、フラッシュメモリとを備えることを特徴とする。   A flash memory system according to a second aspect of the present invention includes a memory controller having at least one of the above characteristics and a flash memory.

本発明の第3の観点に係るフラッシュメモリの制御方法は、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込ステップと、前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成ステップと、前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込ステップと、書込ステップにより前記フラッシュメモリデータ書き込まれるのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出ステップと、前記書込ステップにより書き込まれたデータを前記フラッシュメモリから読み出す読出ステップと、前記書込ステップにより書き込まれたデータの前記エラーコレクションコードを前記フラッシュメモリから読み出すエラーコレクションコード読出ステップと、前記読出ステップにより読み出されたデータに含まれる誤りを、前記エラーコレクションコード読出ステップにより読み出された前記エラーコレクションコードに基づいて訂正する訂正ステップと、前記読出ステップにより読み出されたデータのチェックサム値を算出するチェックサム算出ステップと、前記期待値算出ステップにより算出されたチェックサムの期待値と、前記チェックサム算出ステップにより算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する判定ステップとを備え、前記読出ステップにより読み出されたデータに誤りが含まれていた場合、前記チェックサム算出ステップでは、前記訂正ステップにより誤りが訂正されたデータのチェックサム値を算出することを特徴とする。 A flash memory control method according to a third aspect of the present invention includes a writing step of writing data to the flash memory in response to an instruction from a host system that uses the flash memory as a storage medium, and writing to the flash memory. and error correction code generation step of generating an error correction code of data, the error correction code writing step of writing the error correction code on the flash memory, Doo data to the flash memory by the writing step writing write Murrell in parallel, the expected value calculation step of calculating an expected value of the checksum of the data to be written to the flash memory, a reading step of reading write Mareta data from the flash memory writing by said write step, the write stearate An error correction code reading step of reading out the error correction code of the data written by the memory from the flash memory, and an error included in the data read out by the reading step is read by the error correction code reading step. A correction step for correcting based on the error collection code; a checksum calculation step for calculating a checksum value of the data read by the reading step; and an expected value of the checksum calculated by the expected value calculation step; the collates the checksum value calculated by the checksum calculating step, and a determination step of determining whether or not data has been written correctly, there is an error in the data read by the reading step If The serial checksum calculation step, and calculates a checksum value of the data whose error is corrected by said correction step.

本発明によれば、フラッシュメモリへのデータ書き込みと平行してチェックサムの期待値を求めるため、ベリフィケーションの時間を抑制することができる。   According to the present invention, since the expected value of the checksum is obtained in parallel with the data writing to the flash memory, the verification time can be suppressed.

以下、図面に基づき、本発明の実施の形態について詳細に説明する。   Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

[フラッシュメモリシステム1の説明]
図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するコントローラ3で構成されている。
[Description of flash memory system 1]
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.

コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12と、第1の加算器15と、第1のレジスタ16と、第2の加算器17と、第2のレジスタ18と、から構成される。これら機能ブロックによって構成されるコントローラ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 (error collection code) block 11, A ROM (Read Only Memory) 12, a first adder 15, a first register 16, a second adder 17, and a second register 18 are configured. 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は、フラッシュメモリ2にデータを書き込むための書込処理、データを読み出すための読出処理、アドレス変換テーブルの作成、消去済ブロック検索用テーブルの作成等の処理を実行するように各部を制御する。   The microprocessor 6 controls the overall operation of the controller 3 according to the program recorded in the ROM 12. Specifically, the microprocessor 6 performs processing such as writing processing for writing data to the flash memory 2, reading processing for reading data, creation of an address conversion table, creation of an erased block search table, and the like. Control each part to do.

ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド情報等の授受を行なう。すなわち、フラッシュメモリシステム1とホストシステム4は、外部バス13を介して相互に接続される。かかる状態において、ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。   The host interface block 7 exchanges data, address information, status information, external command information, and the like with the host system 4. That is, the flash memory system 1 and the host system 4 are connected to each other via the external bus 13. In such a state, the data supplied from the host system 4 to the flash memory system 1 is taken into the controller 3 through the host interface block 7 and the data supplied from the flash memory system 1 to the host system 4 is The host interface block 7 is supplied to the host system 4 as an exit.

より詳細には、ホストインターフェースブロック7は、ホストシステム4より供給されるホストアドレス及び外部コマンドを一時的に格納するコマンドレジスタ、書き込み又は読み出しを行うデータのサイズを格納するセクタ数レジスタ、書き込み又は読み出しを行うデータの論理ブロックアドレスを格納するLBA(Logical Block Addressing)レジスタ、等を有する。そして、これらのレジスタを介してホストシステム4との情報の授受を行う。   More specifically, the host interface block 7 is a command register that temporarily stores a host address and an external command supplied from the host system 4, a sector number register that stores the size of data to be written or read, and a write or read command. An LBA (Logical Block Addressing) register for storing a logical block address of data to be performed. Information is exchanged with the host system 4 via these registers.

ワークエリア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に書込むデータを一時的に保持する。   The buffer 9 temporarily holds data read from the flash memory 2 and data to be written to the flash memory 2.

フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド情報等の授受を行う。
なお、本実施の形態のフラッシュメモリシステム1における、内部バス14は、16ビットのビット幅を有するものとする。
The flash memory interface block 10 exchanges data, address information, status information, internal command information, and the like with the flash memory 2 via the internal bus 14.
In the flash memory system 1 of the present embodiment, the internal bus 14 is assumed to have a bit width of 16 bits.

ECCブロック11は、フラッシュメモリ2に書込むデータに付加されるエラーコレクションコードを生成するとともに、読出しデータに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する。   The ECC block 11 generates an error correction code added to data to be written to the flash memory 2 and detects and corrects an error included in the read data based on the error correction code added to the read data.

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 processing procedures such as writing processing, reading processing, creation of an address conversion table, creation of an erased block search table, and the like.

第1の加算器15は、フラッシュメモリ2にデータが書き込まれる際に、第1のレジスタ16と協働して、書き込むデータを内部バス14のビット数毎に区切って加算した累積値(チェックサムの期待値)を算出する。より詳細には、第1の加算器15は、内部バス14と等しいビット幅(すなわち16ビット)を有する加算器であり、内部バス14から供給される書込データと、第1のレジスタ16から供給される値と、を加算して、その値を第1のレジスタ16に保持させる。   When data is written to the flash memory 2, the first adder 15 cooperates with the first register 16 to divide the data to be written for each bit number of the internal bus 14 and add the accumulated value (checksum). Expected value). More specifically, the first adder 15 is an adder having a bit width equal to that of the internal bus 14 (that is, 16 bits), and the write data supplied from the internal bus 14 and the first register 16 The supplied value is added, and the value is held in the first register 16.

第1のレジスタ16は、第1の加算器15が出力する値を一時的に保持する記憶素子である。第1のレジスタ16は、保持値を第1の加算器15に戻す。   The first register 16 is a storage element that temporarily holds the value output from the first adder 15. The first register 16 returns the held value to the first adder 15.

第2の加算器17は、第2のレジスタ18と協働して、フラッシュメモリ2から読み出されるデータを内部バス14のビット数毎に区切って加算した累積値(チェックサム値)を算出する。より詳細には、第2の加算器17は、内部バス14と等しいビット幅(すなわち16ビット)を有する加算器であり、内部バス14から供給される読出データと、第2のレジスタ18から供給される値と、を加算して、その値を第2のレジスタ18に保持させる。   The second adder 17 cooperates with the second register 18 to calculate an accumulated value (check sum value) obtained by dividing and adding data read from the flash memory 2 for each bit number of the internal bus 14. More specifically, the second adder 17 is an adder having a bit width equal to that of the internal bus 14 (ie, 16 bits), and is supplied from the read data supplied from the internal bus 14 and the second register 18. And the value to be stored in the second register 18.

第2のレジスタ18は、第2の加算器17が出力する値を一時的に保持する記憶素子である。第2のレジスタ18は、保持値を第2の加算器17に戻す。   The second register 18 is a storage element that temporarily holds the value output from the second adder 17. The second register 18 returns the retained value to the second adder 17.

[フラッシュメモリの説明]
次に、フラッシュメモリ2について説明する。図2は、フラッシュメモリ2のメモリ構造を概略的に示す図である。図2に示したように、フラッシュメモリ2はデータの読出し及び書込みにおける処理単位であるページと、データの消去単位であるブロックで構成されている。
[Description of flash memory]
Next, the flash memory 2 will be described. FIG. 2 is a diagram schematically showing a memory structure of the flash memory 2. As shown in FIG. 2, the flash memory 2 is composed of a page which is a processing unit for reading and writing data and a block which is a data erasing unit.

上記ページは、例えば、512バイトのユーザ領域25と、16バイトの冗長領域26によって構成される。ユーザ領域25は、主に、ホストシステム4から供給されるデータが格納される領域であり、冗長領域26は、エラーコレクションコード、ブロックステータス、対応論理ブロックアドレス等の付加情報が格納される領域である。   The page is composed of a 512-byte user area 25 and a 16-byte redundant area 26, for example. The user area 25 is an area for mainly storing data supplied from the host system 4, and the redundant area 26 is an area for storing additional information such as an error collection code, a block status, and a corresponding logical block address. is there.

エラーコレクションコードは、ユーザ領域25に格納されたデータに含まれる誤りを訂正するための付加情報であり、ECCブロック11によって生成される。このエラーコレクションコードに基づき、ユーザ領域25に格納されたデータに含まれる誤りが所定数以下であれば、その誤りが訂正される。   The error collection code is additional information for correcting an error included in the data stored in the user area 25 and is generated by the ECC block 11. Based on the error collection code, if the number of errors included in the data stored in the user area 25 is equal to or less than a predetermined number, the error is corrected.

ブロックステータスは、そのブロックが不良ブロック(正常にデータの書込み等を行なうことができないブロック)であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。   The block status is a flag indicating whether or not the block is a bad block (a block in which data cannot be normally written). If it is determined that the block is a bad block, the block status is bad. A flag indicating a block is set.

対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。なお、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが格納されていない場合は消去済ブロックであると判断できる。   The corresponding logical block address indicates to which logical block address the block corresponds when data is stored in the block. If no data is stored in the block, the corresponding logical block address is not stored, so whether the corresponding logical block address is stored or not is determined whether the block is an erased block. Judgment can be made. That is, when the corresponding logical block address is not stored, it can be determined that the block is an erased block.

[論理ブロックアドレスと物理ブロックアドレスの説明]
フラッシュメモリ2はデータの上書きができないため、データの書替えを行なう場合には、ブロック消去されている消去済ブロックに新たなデータ(書替後のデータ)を書込み、古いデータ(書替前のデータ)が書込まれていたブロックを消去するという2段階の処理を行なわなければならない。このとき、消去はブロック単位で処理されるため、古いデータ(書替前のデータ)が書込まれていたページが含まれるブロックの、全ページのデータが消去されてしまう。従って、データの書替えを行なう場合、書替えるページが含まれるブロックの、他のページのデータについても、消去済ブロックに移動させる処理が必要となる。
[Description of logical block address and physical block address]
Since the flash memory 2 cannot overwrite data, when data is rewritten, new data (data after rewriting) is written to the erased block that has been erased, and old data (data before rewriting). ) Must be performed in a two-step process of erasing the block in which it was written. At this time, since erasure is processed in units of blocks, data of all pages of a block including a page in which old data (data before rewriting) is written is erased. Therefore, when data is rewritten, it is necessary to perform processing for moving the data of other pages of the block including the page to be rewritten to the erased block.

上記のようにデータを書替える場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム4側から与えられる論理ブロックアドレスと、フラッシュメモリ2内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。なお、このアドレス変換テーブルは、フラッシュメモリ2の冗長領域26に書込まれている対応論理ブロックアドレスに基づいて作成され、データが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。   When data is rewritten as described above, since the data after rewriting is written in a block different from that before rewriting, the logical block address given from the host system 4 side and the block address in the flash memory 2 are used. The correspondence with the physical block address dynamically changes every time data is rewritten. For this reason, an address conversion table showing the correspondence between logical block addresses and physical block addresses is required. This address conversion table is created based on the corresponding logical block address written in the redundant area 26 of the flash memory 2, and each time data is rewritten, the correspondence relationship of the part involved in the rewriting is updated. The

[ゾーンの構成の説明]
次に、フラッシュメモリ2内の複数のブロックで構成したゾーンを、論理ブロックアドレスの空間に割当てるゾーン管理について図面を参照して説明する。図3は、512のブロックでゾーンを構成した例を示している。図3に示した例では、ゾーンは、512のブロックB0000〜B0511(物理ブロックアドレスの0000〜0511)で構成され、各ブロックは、読出し及び書込処理の単位である32のページP00〜P31で構成されている。ここで、ブロックは消去処理の単位であり、ページは読出し及び書込処理の単位である。
[Description of zone configuration]
Next, zone management for assigning a zone composed of a plurality of blocks in the flash memory 2 to a logical block address space will be described with reference to the drawings. FIG. 3 shows an example in which a zone is composed of 512 blocks. In the example shown in FIG. 3, the zone is composed of 512 blocks B0000 to B0511 (physical block addresses 0000 to 0511), and each block is composed of 32 pages P00 to P31 which are units of read and write processing. It is configured. Here, the block is a unit of erasing processing, and the page is a unit of reading and writing processing.

また、このゾーンを、論理ブロックアドレスの空間に割当てる場合、不良ブロックの発生を考慮して、ゾーンを構成するブロック数よりも少ないブロック数の論理ブロックアドレスの空間に割当てられる。この割当は、通常、フラッシュメモリ2の仕様に応じて行なわれるが、例えば、512のブロックで構成されたゾーンを、500ブロック分の論理ブロックアドレスの空間に割当てたり、490ブロック分の論理ブロックアドレスの空間に割当てたりすることができる。この際、論理ブロックアドレスの空間に割当てるブロック数を増やせば、フラッシュメモリ2の使用効率は良くなるが、不良ブロックの発生に対する許容量(許容できる不良ブロックの発生数)は少なくなる。
なお、本実施の形態のフラッシュメモリシステム1においては、図4に示したように、512ブロックで構成されたゾーンを、496ブロック分の論理ブロックアドレスの空間に割当てるものとする。
In addition, when this zone is allocated to a logical block address space, it is allocated to a logical block address space having a smaller number of blocks than the number of blocks constituting the zone in consideration of the occurrence of defective blocks. This allocation is normally performed according to the specifications of the flash memory 2. For example, a zone composed of 512 blocks is allocated to a logical block address space of 500 blocks, or a logical block address of 490 blocks. Can be assigned to the space. At this time, if the number of blocks allocated to the space of the logical block address is increased, the use efficiency of the flash memory 2 is improved, but the allowable amount for the generation of defective blocks (the allowable number of generated defective blocks) is reduced.
In the flash memory system 1 of the present embodiment, as shown in FIG. 4, a zone composed of 512 blocks is assigned to a space of logical block addresses for 496 blocks.

[アドレス変換テーブルの説明]
次に、アドレス変換テーブルについて、説明する。アドレス変換テーブルは、論理ブロックアドレスと物理ブロックアドレスの対応関係を管理する。
図5は、図4に示したゾーン0に対するアドレス変換テーブルの一例を示したものであり、各論理ブロックアドレスに対応するデータが格納されているフラッシュメモリ2内での物理ブロックアドレスが、論理ブロックアドレス順に記述されている。また、フラッシュメモリ2にデータが格納されていない論理ブロックアドレスについては、アドレス変換テーブルのその論理ブロックアドレスに対応した部分に、物理ブロックアドレスではなく、データが格納されていないことを示すフラグ(以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う)が設定される。
[Description of address translation table]
Next, the address conversion table will be described. The address conversion table manages the correspondence between logical block addresses and physical block addresses.
FIG. 5 shows an example of an address conversion table for the zone 0 shown in FIG. 4, and the physical block address in the flash memory 2 in which data corresponding to each logical block address is stored is a logical block. Described in the order of addresses. For a logical block address in which no data is stored in the flash memory 2, a flag indicating that no data is stored in the portion corresponding to the logical block address in the address translation table (not a physical block address) , A flag indicating that the corresponding data is not stored is referred to as an unstored flag).

例えば、図4に示したゾーン0のアドレス変換テーブルを作成する場合、マイクロプロセッサ6は、496ブロック分の物理ブロックアドレスを記述できる領域をワークエリア8(SRAM)上に確保し、その物理ブロックアドレスを記述する領域に初期設定として未格納フラグを設定する。その後、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御してフラッシュメモリ2のゾーン0を構成するブロックの冗長領域26を順次読出していき、冗長領域26に論理ブロックアドレス(対応論理ブロックアドレスとして記述されている論理ブロックアドレス)が記述されている場合には、アドレス変換テーブルのその論理ブロックアドレスに対応する部分に、その論理ブロックアドレスが記述されているブロックの物理ブロックアドレスを記述する。   For example, when the address conversion table for zone 0 shown in FIG. 4 is created, the microprocessor 6 secures an area in the work area 8 (SRAM) where a physical block address for 496 blocks can be described, and the physical block address. An unstored flag is set as an initial setting in the area describing. Thereafter, the microprocessor 6 controls the flash memory interface block 10 to sequentially read the redundant areas 26 of the blocks constituting the zone 0 of the flash memory 2, and writes the logical block address (corresponding to the corresponding logical block address) in the redundant area 26. In the address conversion table, the physical block address of the block in which the logical block address is described is described in the portion corresponding to the logical block address.

なお、このアドレス変換テーブルの作成処理で物理ブロックアドレスが記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。   It should be noted that the unstored flag described in the initial setting remains as it is for the part where the physical block address is not described in the address conversion table creation process.

[消去済ブロック検索用テーブルの説明]
次に、消去済ブロック検索用テーブルについて、図面を参照して説明する。消去済ブロック検索用テーブルは、データの書込み先とすることができる消去済ブロックを検索するためのテーブルである。
[Description of erased block search table]
Next, the erased block search table will be described with reference to the drawings. The erased block search table is a table for searching for an erased block that can be a data write destination.

まず、消去済ブロック検索用テーブルを用いて、消去済ブロックを検索する方法について説明する。例えば、図4に示したゾーンの消去済ブロックを検索する場合、マイクロプロセッサ6は、512ビットの領域をSRAM上に確保し、その領域の各ビットにゾーンを構成する各ブロックを割当てた消去済ブロック検索用テーブルを作成する。   First, a method for searching for an erased block using the erased block search table will be described. For example, when searching for an erased block in the zone shown in FIG. 4, the microprocessor 6 secures a 512-bit area on the SRAM and assigns each block constituting the zone to each bit in the area. Create a block search table.

図6は、図4に示したゾーン0とゾーン1の消去済ブロック検索用テーブルを概念的に示した概念図である。ここで、ゾーン0の消去済ブロック検索用テーブル上のビットは、ブロックB0000〜B0511(物理ブロックアドレスの0000〜0511)に対応し、ゾーン1の消去済ブロック検索用テーブル上のビットは、ブロックB0512〜B1023(物理ブロックアドレスの0512〜1023)に対応する。   FIG. 6 is a conceptual diagram conceptually showing the erased block search table for zone 0 and zone 1 shown in FIG. Here, bits on the erased block search table for zone 0 correspond to blocks B0000 to B0511 (physical block addresses 0000 to 0511), and bits on the erased block search table for zone 1 correspond to block B0512. To B1023 (physical block addresses 0512 to 1023).

また、消去済ブロック検索用テーブル上のビットと、ゾーンを構成するブロックとの対応関係については、図6に示した消去済ブロック検索用テーブル上のビットを、上の行から下の行へ、各行を左から右へ物理ブロックアドレス順に対応させている。従って、ゾーン0の消去済ブロック検索用テーブルでは、左上のビットが、B0000(物理ブロックアドレスの0000)のブロックに対応し、右下のビットが、B0511(物理ブロックアドレスの0511)のブロックに対応する。   For the correspondence between the bits on the erased block search table and the blocks constituting the zone, the bits on the erased block search table shown in FIG. 6 are changed from the upper row to the lower row. Each row is associated from left to right in the order of physical block addresses. Therefore, in the erased block search table for zone 0, the upper left bit corresponds to the block B0000 (physical block address 0000) and the lower right bit corresponds to the block B0511 (physical block address 0511). To do.

また、消去済ブロック検索用テーブル上のビットは、「0」と「1」で消去済ブロックであるか否かを示しており、例えば、データが書込まれている場合(または不良ブロックであることを示すブロックステータスが記述されている場合)は、そのビットに「0」を、データが書込まれていない場合(消去済ブロックの場合)は、そのビットに「1」を設定する。   The bit on the erased block search table indicates whether the block is an erased block with “0” and “1”. For example, when data is written (or a defective block) Is set to “0” in the bit, and “1” is set in the bit when data is not written (in the case of an erased block).

なお、この消去済ブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することができる。例えば、マイクロプロセッサ6は、消去済ブロック検索用テーブルを作成するワークエリア8(SRAM)上の領域に「0」を設定しておき、各ブロックの冗長領域26に対応論理ブロックアドレスも不良ブロックであることを示すブロックステータスも記述されていないときに、そのブロックに対応するビットに「1」を設定するようにすれば、アドレス変換テーブルを作成する際に一緒に作成することができる。つまり、ゾーンを構成するブロックの冗長領域26に記述されているデータを読出したときにこの処理を行なえば、消去済ブロックに対応するビットだけに「1」が設定され、消去済ブロックでないブロックに対応するビットは予め設定した「0」のままになる。   The erased block search table can be created together when creating the address conversion table. For example, the microprocessor 6 sets “0” in the area on the work area 8 (SRAM) for creating the erased block search table, and the logical block address corresponding to the redundant area 26 of each block is also a bad block. If the block status indicating that there is no description, the bit corresponding to the block is set to “1” so that the address translation table can be created together. In other words, if this process is performed when data described in the redundant area 26 of the block constituting the zone is read, only “1” is set to the bit corresponding to the erased block, and the block is not the erased block. The corresponding bit remains “0” set in advance.

また、マイクロプロセッサ6は、消去済ブロックにデータを書込が書き込まれたときに、そのブロックに対応するビットを「1」から「0」に変更し、データが書込まれているブロックがブロック消去されたときに、そのブロックに対応するビットを「0」から「1」に変更することで、消去済ブロック検索用テーブルを随時更新する。   Further, when data is written to the erased block, the microprocessor 6 changes the bit corresponding to the block from “1” to “0”, and the block in which the data is written is changed to the block. When erased, the bit corresponding to the block is changed from “0” to “1” to update the erased block search table as needed.

次に、この消去済ブロック検索用テーブルを用いて消去済ブロックを検索する場合について図7を参照して説明する。図7は、ゾーン0の消去済ブロック検索用テーブルを示している。例えば、一番上の行の各ビットは、ブロックB0000〜B0007(物理ブロックアドレスの0000〜0007)に対応し、一番下の行はブロックB0504〜B0511(物理ブロックアドレスの0504〜0511)に対応する。   Next, a case where an erased block is searched using this erased block search table will be described with reference to FIG. FIG. 7 shows an erased block search table for zone 0. For example, each bit in the top row corresponds to blocks B0000 to B0007 (physical block addresses 0000 to 0007), and the bottom row corresponds to blocks B0504 to B0511 (physical block addresses 0504 to 0511). To do.

マイクロプロセッサ6は、消去済ブロック検索用テーブルを、上の行から下の行へと走査する。また、マイクロプロセッサ6は、消去済ブロック検索用テーブル内の各行を左から右へと走査する。すなわち、マイクロプロセッサ6は、ブロックB0000(物理ブロックアドレスの0000)に対応するビット(一番上の行の、一番左のビット)から、ブロックB0511(物理ブロックアドレスの0511)に対応するビット(一番下の行の、一番右のビット)までを走査していき、消去済ブロックに対応する「1」のビットを検索する。   The microprocessor 6 scans the erased block search table from the upper row to the lower row. The microprocessor 6 scans each row in the erased block search table from left to right. That is, the microprocessor 6 starts from the bit corresponding to the block B0000 (physical block address 0000) (the leftmost bit in the top row) to the bit corresponding to the block B0511 (physical block address 0511) ( The rightmost bit in the bottom row is scanned, and the bit “1” corresponding to the erased block is searched.

図7に示した消去済ブロック検索用テーブルを検索する場合、上から2番目の行の、左から3番目のビットが「1」なので、マイクロプロセッサ6は、ここで検索を終了し、このビットに対応するブロックB0010(物理ブロックアドレスの0010)を、データの書込み先のブロックとして特定する。   When searching the erased block search table shown in FIG. 7, since the third bit from the left of the second row from the top is “1”, the microprocessor 6 ends the search here, and this bit The block B0010 (physical block address 0010) corresponding to is specified as the data write destination block.

また、次回の検索は、上から2番目の行の、左から4番目のビットから走査を開始し、上から4番目の行の、左から5番目のビットが「1」なので、マイクロプロセッサ6は、ここで検索を終了し、このビットに対応するブロックB0028(物理ブロックアドレスの0028)を、データの書込み先のブロックとして特定する。その後も、このような検索を続けていき、一番下の行の、一番右のビットまで走査が進んだときは、一番上の行の、一番左のビットに戻る。   The next search starts scanning from the fourth bit from the left in the second row from the top. Since the fifth bit from the left in the fourth row from the top is “1”, the microprocessor 6 The search ends here, and a block B0028 (physical block address 0028) corresponding to this bit is specified as a block to which data is written. Thereafter, such a search is continued, and when the scanning proceeds to the rightmost bit in the bottom row, the processing returns to the leftmost bit in the top row.

[書込処理の説明]
次に、ホストシステム4からのコマンドに応答して実行される書込処理について、図8に示すタイムチャートを参照して説明する。この書込処理では、フラッシュメモリ2へのデータ書き込みとともに、チェックサムの期待値の算出が行われ、書き込みがされた後にチェックサム値の算出と照合とがなされる。
ホストシステム4からの書込処理の実行を要求するコマンドは、ホストインターフェースブロック7のコマンドレジスタに書き込まれる。また、データの書き込み先の論理ブロックアドレスと、書き込むデータのサイズとは、それぞれホストインターフェースブロック7のLBAレジスタと、セクタ数レジスタとに書き込まれる。
[Description of writing process]
Next, write processing executed in response to a command from the host system 4 will be described with reference to a time chart shown in FIG. In this writing process, the expected value of the checksum is calculated along with the data writing to the flash memory 2, and the checksum value is calculated and verified after the writing.
A command requesting execution of the writing process from the host system 4 is written in the command register of the host interface block 7. The logical block address to which data is written and the size of the data to be written are written to the LBA register and the sector number register of the host interface block 7, respectively.

コマンドレジスタに書き込まれた命令に応答して、マイクロプロセッサ6は、消去済ブロック検索用テーブルを検索して特定したブロックに、データを書込む。この書込処理では、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、書込み先のブロック内のページに、データを書込む。マイクロプロセッサ6は、データを書き込んだブロックの冗長領域26に、エラーコレクションコード、論理ブロックアドレス等を書き込む。   In response to the instruction written in the command register, the microprocessor 6 writes data into the block identified by searching the erased block search table. In this writing process, the microprocessor 6 controls the flash memory interface block 10 to write data to a page in the writing destination block via the internal bus 14. The microprocessor 6 writes an error correction code, a logical block address, etc. in the redundant area 26 of the block in which the data is written.

このとき、図8(a)に示すように、フラッシュメモリ2に書き込まれるデータは、内部バス14のビット幅(16ビット)毎に区切られて、データの先頭から順に、逐次、フラッシュメモリ2に送られる。   At this time, as shown in FIG. 8A, the data to be written to the flash memory 2 is divided into bit widths (16 bits) of the internal bus 14 and sequentially stored in the flash memory 2 from the top of the data. Sent.

また、内部バス14を介してフラッシュメモリ2に書き込まれるデータは、同時に第1の加算器15にも供給される。図8(b)に示すように、第1の加算器15は、内部バス14を介して受け取ったデータと第1のレジスタ16が保持しているデータとを加算し、第1のレジスタ16の保持値を、その加算した値に更新させる。上記の加算を繰り返し、フラッシュメモリ2に書き込まれるデータの末尾(Dn)まで達したときの、第1のレジスタ16の保持値がチェックサムの期待値となる。
なお、第1のレジスタ16の保持値は、書込処理の開始時に0にリセットされるものとする。また、データの加算を繰り返すことにより、いわゆる桁溢れが生じた場合、溢れた桁は無視し、内部バス14のビット幅(すなわち加算値の下位16ビット)の値にのみ着目してチェックサムの期待値を求めるものとする。
The data written to the flash memory 2 via the internal bus 14 is also supplied to the first adder 15 at the same time. As shown in FIG. 8B, the first adder 15 adds the data received via the internal bus 14 and the data held in the first register 16, and The held value is updated to the added value. The above addition is repeated, and the value held in the first register 16 when reaching the end (Dn) of the data written to the flash memory 2 becomes the expected value of the checksum.
Note that the value held in the first register 16 is reset to 0 at the start of the writing process. In addition, when a so-called overflow occurs due to repeated addition of data, the overflow digit is ignored and only the value of the bit width of the internal bus 14 (that is, the lower 16 bits of the added value) is focused on. The expected value shall be obtained.

フラッシュメモリ2へのデータの書き込みが終わると、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、書き込んだデータを読出して、データが正常に書き込まれたかを確認する(ベリフィケーション)。   When the writing of data to the flash memory 2 is completed, the microprocessor 6 controls the flash memory interface block 10 to read the written data via the internal bus 14 and confirm whether the data has been written normally. (Verification).

この処理では、書き込んだデータをバッファ9に読み出し、読み出したデータに含まれる誤りをエラーコレクションコードに基づいて訂正する。誤りが訂正されたデータは、データを書き込むときと同様に、内部バス14のビット幅(16ビット)毎に区切られて、内部バス14側に送出される。この際、フラッシュメモリ2は、非活性状態にしておく。このデータは、内部バス14に接続されている第2の加算器17に供給される。データを書き込むときと同様に、図8(b)に示すように、第2の加算器17は、内部バス14を介して受け取ったデータと第2のレジスタ18が保持しているデータとを加算し、第2のレジスタ18の保持値を、その加算した値に更新させる。上記の加算を繰り返し、フラッシュメモリ2から読み出されるデータの末尾(Dn)まで達したときの、第2のレジスタ18の保持値がチェックサム値となる。   In this process, the written data is read to the buffer 9 and an error included in the read data is corrected based on the error correction code. The data in which the error is corrected is divided for each bit width (16 bits) of the internal bus 14 and sent to the internal bus 14 side as in the case of writing data. At this time, the flash memory 2 is kept in an inactive state. This data is supplied to the second adder 17 connected to the internal bus 14. As in the case of writing data, as shown in FIG. 8B, the second adder 17 adds the data received via the internal bus 14 and the data held by the second register 18. Then, the value held in the second register 18 is updated to the added value. The above addition is repeated, and the value held in the second register 18 when the data read from the flash memory 2 reaches the end (Dn) becomes the checksum value.

なお、第2のレジスタ18の保持値は、ベリフィケーションの開始時に0にリセットされるものとする。
また、データの加算を繰り返すことにより、いわゆる桁溢れが生じた場合、溢れた桁は無視し、内部バス14のビット幅(すなわち加算値の下位16ビット)の値にのみ着目してチェックサム値を求めるものとする。
Note that the value held in the second register 18 is reset to 0 at the start of verification.
If so-called digit overflow occurs by repeating the addition of data, the overflow digit is ignored, and only the value of the bit width of the internal bus 14 (that is, the lower 16 bits of the added value) is taken into consideration. Is to be sought.

上記のチェックサム値を求めるためのデータ読み出しが終了すると、マイクロプロセッサ6は、第1のレジスタ16が保持するチェックサムの期待値と、第2のレジスタ18が保持するチェックサム値とを照合する。すなわち、第1のレジスタ16が保持するチェックサムの期待値と、第2のレジスタ18が保持するチェックサム値とが一致していれば、マイクロプロセッサ6は、正常に書き込みがされたと判別して、書込処理を終了する。また、第1のレジスタ16が保持するチェックサムの期待値と、第2のレジスタ18が保持するチェックサム値とが不一致である場合には、マイクロプロセッサ6は、書込処理が正常になされなかったことを、ホストシステム4に通知する。   When the data reading for obtaining the checksum value is completed, the microprocessor 6 collates the expected checksum value held in the first register 16 with the checksum value held in the second register 18. . That is, if the expected value of the checksum held by the first register 16 matches the checksum value held by the second register 18, the microprocessor 6 determines that the data has been written normally. Then, the writing process is terminated. When the expected checksum value held by the first register 16 and the checksum value held by the second register 18 do not match, the microprocessor 6 does not perform the writing process normally. This is notified to the host system 4.

また、上記書込処理で、ホストシステム4側から供給された論理ブロックアドレスに対応する旧データが存在する場合(上書きをする場合)は、上記新データの書込処理の後に旧データの消去処理が行なわれる。なお、消去する旧データが格納されているブロックの物理ブロックアドレスは、図5に示したアドレス変換テーブルに基づいて得ることができる。この消去処理では、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、フラッシュメモリ2から旧データが格納されているブロックの物理ブロックアドレスのデータを消去する。   In addition, when old data corresponding to the logical block address supplied from the host system 4 side exists in the write process (when overwriting), the old data is erased after the new data write process. Is done. The physical block address of the block storing the old data to be erased can be obtained based on the address conversion table shown in FIG. In this erasing process, the microprocessor 6 controls the flash memory interface block 10 and erases the data of the physical block address of the block storing the old data from the flash memory 2 via the internal bus 14.

[読出処理の説明]
読出処理は、ホストシステム4からのコマンドに応答して実行される。
ホストシステム4からの読出処理の実行を要求するコマンドは、ホストインターフェースブロック7のコマンドレジスタに書き込まれる。また、読み出すデータの論理ブロックアドレスは、ホストインターフェースブロック7のLBAレジスタに書き込まれる。
[Description of read processing]
The read process is executed in response to a command from the host system 4.
A command requesting execution of read processing from the host system 4 is written in the command register of the host interface block 7. Further, the logical block address of the data to be read is written in the LBA register of the host interface block 7.

コマンドレジスタに書き込まれた命令に応答して、マイクロプロセッサ6は、LBAレジスタに書き込まれた論理ブロックアドレスを、図5に示したアドレス変換テーブルに基づき物理ブロックアドレス(論理ブロックアドレスに対応するデータが格納されているブロックの物理ブロックアドレス)に変換する。   In response to the instruction written in the command register, the microprocessor 6 converts the logical block address written in the LBA register into a physical block address (data corresponding to the logical block address is based on the address conversion table shown in FIG. 5). Converted to the physical block address of the stored block).

続いて、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、ホストシステム4側から与えられる論理ブロックアドレスに対応するデータが格納されているブロック内のページに格納されているデータを、バッファ9に読出す。   Subsequently, the microprocessor 6 controls the flash memory interface block 10 and stores it in the page in the block in which data corresponding to the logical block address given from the host system 4 side is stored via the internal bus 14. The read data is read out to the buffer 9.

マイクロプロセッサ6は、バッファ9に読み出したデータに含まれる誤りを、当該データに付加されているエラーコレクションコードに基づいて訂正する。そして、マイクロプロセッサ6は、訂正後のデータを、ホストインターフェースブロック7を制御して、外部バス13を介してホストシステム4に供給し、読出処理を終了する。   The microprocessor 6 corrects an error included in the data read to the buffer 9 based on an error correction code added to the data. Then, the microprocessor 6 controls the host interface block 7 to supply the corrected data to the host system 4 via the external bus 13, and ends the reading process.

以上で説明したように、本実施の形態のフラッシュメモリシステム1は、フラッシュメモリ2へのデータ書き込みと平行して、チェックサムの期待値を求める。このため、書き込むデータのチェックサム期待値を予め求めておく必要がない。   As described above, the flash memory system 1 according to the present embodiment obtains the expected checksum value in parallel with the data writing to the flash memory 2. For this reason, it is not necessary to obtain the expected checksum value of the data to be written in advance.

また、本実施の形態のフラッシュメモリシステム1は、チェックサムの期待値及びチェックサム値を求めるのに、ハードウェアによって実現される加算器(第1の加算器15及び第2の加算器17)を用いる。このため、チェックサムの期待値及びチェックサム値を求めるため別途の処理時間を要せず、ベリフィケーションをすることにより生じる書込処理の所用時間の増加を抑制できる。   Further, the flash memory system 1 according to the present embodiment uses an adder (first adder 15 and second adder 17) realized by hardware to obtain an expected checksum value and a checksum value. Is used. Therefore, no additional processing time is required to obtain the expected checksum value and the checksum value, and an increase in the time required for the writing process caused by the verification can be suppressed.

特に、本実施の形態のフラッシュメモリシステム1は、チェックサムの期待値及びチェックサム値を求めるための加算器のビット幅を、内部バス14のビット幅と等しくしている。このため、期待値及びチェックサム値を計算する際に、改めてデータを区切って加算器に供給する必要が無く、ベリフィケーションをすることにより生じる書込処理の所用時間の増加を抑制できる。   In particular, in the flash memory system 1 of the present embodiment, the bit width of the adder for obtaining the expected checksum value and the checksum value is equal to the bit width of the internal bus 14. For this reason, when calculating the expected value and the checksum value, it is not necessary to divide the data and supply it to the adder, and it is possible to suppress an increase in the time required for the writing process caused by the verification.

上記実施の形態においては、チェックサム値を求めるときの区切りのビット数(すなわち加算器のビット幅)を内部バス14のビット幅と等しくする場合を例に説明したが、チェックサム値を求めるときの区切りのビット数を可変にしてもよい。   In the above embodiment, the case has been described in which the number of bits for delimiting when obtaining the checksum value (that is, the bit width of the adder) is equal to the bit width of the internal bus 14, but when obtaining the checksum value. The number of bits of the delimiter may be variable.

この場合、例えば、LBAレジスタにチェックサムを算出するときのビット幅を設定し、マイクロプロセッサ6が設定されたビット幅毎にデータを分割して第1の加算器15に供給してチェックサムの期待値を算出するようにすればよい。また、読み出したデータに対しても同様にマイクロプロセッサ6が設定されたビット幅毎にデータを分割して第2の加算器17に供給してチェックサム値を算出するようにすればよい。   In this case, for example, the bit width for calculating the checksum is set in the LBA register, and the microprocessor 6 divides the data for each set bit width and supplies the data to the first adder 15 to check the checksum. What is necessary is just to calculate an expected value. Similarly, for the read data, the microprocessor 6 may divide the data for each set bit width and supply it to the second adder 17 to calculate the checksum value.

また、上記実施の形態におけるフラッシュメモリシステム1は、チェックサムの期待値を求めるための第1の加算器15及び第1のレジスタ16と、チェックサム値を求めるための第2の加算器17及び第2のレジスタ18と、を有する場合を例に説明した。しかし、第1の加算器15と第2の加算器17とを一つの加算器で共用することが可能であり、同様に、第1のレジスタ16と第2のレジスタ18とを一つのレジスタで共用することが可能である。   Further, the flash memory system 1 in the above embodiment includes the first adder 15 and the first register 16 for obtaining the expected checksum value, the second adder 17 for obtaining the checksum value, The case of having the second register 18 has been described as an example. However, the first adder 15 and the second adder 17 can be shared by one adder. Similarly, the first register 16 and the second register 18 can be shared by one register. It can be shared.

この場合、データ書き込みと平行して求めたチェックサムの期待値をワークエリア8に記録し、書き込み後のベリフィケーションの際にチェックサムの期待値を求めたときと同一の加算器とレジスタを用いてチェックサム値を求める。そして、レジスタに保持されたチェックサム値と、ワークエリア8に記録されたチェックサムの期待値とを照合すればよい。   In this case, the expected checksum value obtained in parallel with the data writing is recorded in the work area 8, and the same adder and register as when the expected checksum value was obtained in the verification after writing are stored. To obtain the checksum value. Then, the checksum value held in the register may be collated with the expected checksum value recorded in the work area 8.

本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。1 is a block diagram schematically showing a flash memory system according to the present invention. フラッシュメモリのアドレス空間の構造を概略的に示す図である。It is a figure which shows roughly the structure of the address space of flash memory. 512のブロックでゾーンを構成した例を示す図である。It is a figure which shows the example which comprised the zone by the block of 512. FIG. 共有ブロックを含むゾーンの構成例を示す図である。It is a figure which shows the structural example of the zone containing a shared block. アドレス変換テーブルの例を示した図である。It is the figure which showed the example of the address conversion table. 消去済ブロック検索用テーブルの例を示す概念図である。It is a conceptual diagram which shows the example of the erased block search table. 消去済ブロック検索用テーブルを用いた消去済ブロックの検索方法を説明するための図である。It is a figure for demonstrating the search method of the erased block using the erased block search table. 書込処理の動作を説明するタイムチャートである。It is a time chart explaining operation | movement of a writing process.

符号の説明Explanation of symbols

1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
15 第1の加算器
16 第1のレジスタ
17 第2の加算器
18 第2のレジスタ
25 ユーザ領域
26 冗長領域
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 15 First adder 16 First register 17 Second adder 18 Second register 25 User area 26 Redundant area

Claims (7)

フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込手段と、
前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成手段と、
前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込手段と、
前記書込手段が前記フラッシュメモリにデータを書き込むのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出手段と、
前記フラッシュメモリに書き込まれているデータを読み出す読出手段と、
前記フラッシュメモリに書き込まれている前記エラーコレクションコードを読み出すエラーコレクションコード読出手段と、
前記フラッシュメモリから読み出されたデータに含まれる誤りを、前記フラッシュメモリから読み出された前記エラーコレクションコードに基づいて訂正する訂正手段と、
前記書込手段が前記フラッシュメモリにデータを書き込んだ後に、前記フラッシュメモリから当該書き込んだデータを読み出し、読み出したデータのチェックサム値を算出するチェックサム算出手段と、
前記期待値算出手段が算出したチェックサムの期待値と前記チェックサム算出手段が算出したチェックサム値とを照合して、前記フラッシュメモリにデータが正しく書き込まれたか否かを判定する判定手段とを備え、
前記チェックサム算出手段は、前記フラッシュメモリから読み出したデータに誤りが含まれていた場合、前記前記訂正手段により誤りが訂正されたデータのチェックサム値を算出することを特徴とするメモリコントローラ。
Writing means for writing data to the flash memory in response to an instruction from a host system that uses the flash memory as a storage medium;
Error collection code generation means for generating an error collection code of data written to the flash memory;
Error collection code writing means for writing the error collection code to the flash memory;
In parallel with the writing means writing data to the flash memory, an expected value calculating means for calculating an expected value of a checksum of data written to the flash memory ;
Reading means for reading data written in the flash memory;
Error correction code reading means for reading the error correction code written in the flash memory;
Correction means for correcting an error included in the data read from the flash memory based on the error collection code read from the flash memory;
After the writing means writes data to the flash memory, the written data is read from the flash memory, and a checksum calculation means for calculating a checksum value of the read data ;
A determination unit that compares the expected value of the checksum calculated by the expected value calculation unit with the checksum value calculated by the checksum calculation unit to determine whether data has been correctly written to the flash memory ; Prepared,
The checksum calculation unit calculates a checksum value of the data in which the error is corrected by the correction unit when an error is included in the data read from the flash memory .
前記期待値算出手段は、ハードウェアによる加算器から構成される、
ことを特徴とする請求項1に記載のメモリコントローラ。
The expected value calculation means is composed of an adder by hardware.
The memory controller according to claim 1.
前記チェックサム算出手段は、ハードウェアによる加算器から構成される、
ことを特徴とする請求項1又は2に記載のメモリコントローラ。
The checksum calculation means is composed of an adder by hardware.
The memory controller according to claim 1, wherein the memory controller is a memory controller.
前記期待値算出手段及び前記チェックサム算出手段は、前記ホストシステムからの要求に応じて、算出する期待値及びチェックサム値のビット数を変更する、
ことを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
The expected value calculation means and the checksum calculation means change the number of bits of the expected value and checksum value to be calculated in response to a request from the host system.
The memory controller according to claim 1, wherein the memory controller is a memory controller.
前記期待値算出手段及び前記チェックサム算出手段は、算出する期待値及びチェックサム値のビット数を、当該メモリコントローラと前記フラッシュメモリとを接続するバスのビット幅と等しいビット数とする、
ことを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
The expected value calculation means and the checksum calculation means set the number of bits of the expected value and checksum value to be calculated to be equal to the bit width of the bus connecting the memory controller and the flash memory.
The memory controller according to claim 1, wherein the memory controller is a memory controller.
請求項1乃至5のいずれか1項に記載のメモリコントローラと、フラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。   A flash memory system comprising: the memory controller according to claim 1; and a flash memory. フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込ステップと、
前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成ステップと、
前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込ステップと、
書込ステップにより前記フラッシュメモリデータ書き込まれるのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出ステップと、
前記書込ステップにより書き込まれたデータを前記フラッシュメモリから読み出す読出ステップと、
前記書込ステップにより書き込まれたデータの前記エラーコレクションコードを前記フラッシュメモリから読み出すエラーコレクションコード読出ステップと、
前記読出ステップにより読み出されたデータに含まれる誤りを、前記エラーコレクションコード読出ステップにより読み出された前記エラーコレクションコードに基づいて訂正する訂正ステップと、
前記読出ステップにより読み出されたデータのチェックサム値を算出するチェックサム算出ステップと、
前記期待値算出ステップにより算出されたチェックサムの期待値と、前記チェックサム算出ステップにより算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する判定ステップとを備え、
前記読出ステップにより読み出されたデータに誤りが含まれていた場合、前記チェックサム算出ステップでは、前記訂正ステップにより誤りが訂正されたデータのチェックサム値を算出することを特徴とするフラッシュメモリの制御方法。
A writing step of writing data to the flash memory in response to an instruction from a host system using the flash memory as a storage medium;
An error collection code generation step of generating an error collection code of data written to the flash memory;
An error collection code writing step of writing the error collection code into the flash memory;
In parallel with the data that write Murrell to the flash memory by the writing step, an expected value calculation step of calculating an expected value of the checksum of the data to be written to the flash memory,
A reading step of reading write Mareta data from the flash memory writing by said writing step,
An error correction code reading step of reading out the error correction code of the data written by the writing step from the flash memory;
A correction step for correcting an error included in the data read by the reading step based on the error collection code read by the error collection code reading step;
A checksum calculation step of calculating a checksum value of the data read by the reading step ;
The expected value of the checksum calculated by the expected value calculating step, wherein collates the checksum value calculated by the checksum calculating step, and a determination step of determining whether or not data has been written correctly,
When an error is included in the data read by the reading step, the checksum calculation step calculates a checksum value of the data whose error is corrected by the correction step . Control method.
JP2005138944A 2005-05-11 2005-05-11 Memory controller, flash memory system, and flash memory control method Expired - Fee Related JP4332132B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005138944A JP4332132B2 (en) 2005-05-11 2005-05-11 Memory controller, flash memory system, and flash memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005138944A JP4332132B2 (en) 2005-05-11 2005-05-11 Memory controller, flash memory system, and flash memory control method

Publications (2)

Publication Number Publication Date
JP2006318132A JP2006318132A (en) 2006-11-24
JP4332132B2 true JP4332132B2 (en) 2009-09-16

Family

ID=37538776

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005138944A Expired - Fee Related JP4332132B2 (en) 2005-05-11 2005-05-11 Memory controller, flash memory system, and flash memory control method

Country Status (1)

Country Link
JP (1) JP4332132B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291297B2 (en) * 2008-12-18 2012-10-16 Intel Corporation Data error recovery in non-volatile memory
JP2015141666A (en) * 2014-01-30 2015-08-03 日本精機株式会社 Method and device for inspecting nonvolatile memory
JP6363044B2 (en) * 2015-03-31 2018-07-25 日立オートモティブシステムズ株式会社 Control device

Also Published As

Publication number Publication date
JP2006318132A (en) 2006-11-24

Similar Documents

Publication Publication Date Title
JP4245585B2 (en) Memory controller, flash memory system, and flash memory control method
US8621139B2 (en) Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same
JP4828816B2 (en) Memory card, semiconductor device, and memory card control method
US8200891B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
JP5364807B2 (en) MEMORY CONTROLLER AND NONVOLATILE MEMORY DEVICE
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
US8200892B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
JP4332132B2 (en) Memory controller, flash memory system, and flash memory control method
JP2006221334A (en) Memory controller, flash memory system, and control method for flash memory
JP4513786B2 (en) Memory controller, memory system, and memory control method
JP4153535B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4661191B2 (en) Memory controller, flash memory system, and flash memory control method
JP4332134B2 (en) Memory controller, flash memory system, and flash memory control method
JP4655034B2 (en) Memory controller, flash memory system, and flash memory control method
JP4433792B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP3934659B1 (en) Memory controller and flash memory system
JP4818453B1 (en) Electronic device and data reading method
JP4692843B2 (en) Memory controller, flash memory system, and flash memory control method
JP3670151B2 (en) Flash memory access method, system including driver for accessing flash memory, and flash memory
JP4177301B2 (en) Memory controller, flash memory system, and flash memory control method
JP4569554B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP2012037971A (en) Memory controller, nonvolatile memory system provided with memory controller, and method for controlling nonvolatile memory
JP2007199846A (en) Memory control device and memory control method
JP4235595B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4068594B2 (en) Flash memory controller, flash memory system, and flash memory control method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090609

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090619

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees