JP4501881B2 - Memory controller and flash memory system - Google Patents
Memory controller and flash memory system Download PDFInfo
- Publication number
- JP4501881B2 JP4501881B2 JP2006080694A JP2006080694A JP4501881B2 JP 4501881 B2 JP4501881 B2 JP 4501881B2 JP 2006080694 A JP2006080694 A JP 2006080694A JP 2006080694 A JP2006080694 A JP 2006080694A JP 4501881 B2 JP4501881 B2 JP 4501881B2
- Authority
- JP
- Japan
- Prior art keywords
- written
- data
- area
- mark
- write
- 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.)
- Active
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, which is a non-volatile storage medium, has been actively developed, and is widely used as a storage medium for information devices (host systems) such as digital cameras.
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。 As the data handled by such devices has increased in capacity, the storage capacity of flash memory has also increased.
また、フラッシュメモリの用途は、パーソナルコンピュータやデジタルカメラ等のホストシステムの外部記憶装置(フラッシュメモリシステム)として使用されることが多く、任意に着脱等される場合がある。このため、例えば、フラッシュメモリへのデータの書き込み(保存)動作中に外部記憶装置(フラッシュメモリシステム)がホストシステムから引き抜かれたような場合、正常に書き込まれていないデータ(異常データ)が残ってしまうことがある。 Further, the flash memory is often used as an external storage device (flash memory system) of a host system such as a personal computer or a digital camera, and may be arbitrarily attached or detached. For this reason, for example, when the external storage device (flash memory system) is pulled out from the host system during the data write (save) operation to the flash memory, data that has not been written normally (abnormal data) remains. May end up.
このような観点から、特許文献1等には、フラッシュメモリの記憶データを更新する際に所定のフラグを設定し、更新が完了すると、他のフラグを設定して更新が正常に完了したことを示す技術が開示されている。この技術を用いれば、電源遮断等で書き込み処理が途中で終了(以下、異常終了と言う。)したときに、異常終了したことを検出することはできる。
From this point of view, in
しかし、電源遮断等で書き込み処理が異常終了したときに、フラッシュメモリに記憶されているデータを正常データと異常データとに分離することができない。
書き込み処理が異常終了して、データの書き込み先になっていたフラッシュメモリ内の物理ブロックに正常データと異常データが並存する場合、それらを分離して正常データだけを残す必要がある。 When the writing process ends abnormally and normal data and abnormal data coexist in the physical block in the flash memory that was the data write destination, it is necessary to separate them and leave only normal data.
又、データの書き込み先であるフラッシュメモリは大容量化が進んでおり、1個のページのユーザ領域が1セクタ(512バイト)、1ブロックが32ページの構成(以下、スモールブロックタイプと言う。)から、1個のページのユーザ領域が4セクタ(2048バイト)、1ブロックが64ページの構成(以下、ラージブロックタイプと言う。)に移行しつつある。つまり、1個のブロックに含まれるユーザ領域が32個のセクタ領域(512バイトの領域)で構成されるスモールブロックタイプから、1個のブロックに含まれるユーザ領域が256個のセクタ領域(512バイトの領域)で構成されるラージブロックタイプに移行しつつある。 In addition, the flash memory, which is a data write destination, has been increased in capacity, and a user area of one page has one sector (512 bytes), and one block has 32 pages (hereinafter referred to as a small block type). ), The user area of one page is shifting to a configuration of 4 sectors (2048 bytes) and 1 block of 64 pages (hereinafter referred to as a large block type). That is, from a small block type in which a user area included in one block is composed of 32 sector areas (512-byte areas), a user area included in one block is 256 sector areas (512 bytes). Are moving to the large block type.
このように1個の物理ブロックの容量(セクタ数)が大きくなると、ホストシステムから同一の物理ブロックが書き込み先となる書き込み要求が与えられる回数が多くなり、書き込み処理が異常終了したときに書き込み先の物理ブロックに書き込まれているデータ量も多くなるので、正常データと異常データを判別する処理がより煩雑になる。 When the capacity (number of sectors) of one physical block is increased in this way, the number of times that the host system gives a write request for the same physical block as the write destination increases, and the write destination when the write processing ends abnormally. Since the amount of data written to the physical block increases, the process of discriminating between normal data and abnormal data becomes more complicated.
本発明は上記の実情に鑑みてなされたもので、書き込み処理が異常終了したときに、データの書き込み先になっていたフラッシュメモリ内の物理ブロックに並存する正常データと異常データを容易に判別することができるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。 The present invention has been made in view of the above circumstances, and when write processing ends abnormally, normal data and abnormal data coexisting in the physical block in the flash memory that was the data write destination are easily discriminated. An object of the present invention is to provide a memory controller that can be used, and a flash memory system including the memory controller.
上記目的を達成するため、本発明のメモリコントローラは、ホストシステムからの命令に応答して、物理ブロックに含まれる各ページのユーザ領域が1又は複数のセクタ領域で構成されているフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムからのデータ書き込みの命令に応答して、i)前記セクタ領域に一連のデータを順次書き込み、ii) 前記一連のデータが書き込まれたセクタ領域に対応する冗長領域にデータが書き込まれたことを示す書込マークを順次書き込み、iii)前記一連のデータの末尾データを書き込んだ前記セクタ領域に対応する冗長領域に一連のデータの末尾データを書き込んだことを示す終了マークを書き込む書込手段と、
前記書込マーク及び前記終了マークに基づいて、前記一連のデータの書き込みが正常に終了しなかったことを検知する異常終了検知手段と、
前記書込マーク及び前記終了マークに基づいて、前記一連のデータが正常に書き込まれているセクタ領域の末尾を検出する正常データ検出手段と、
を備え、
前記書込マークは、前記物理ブロックに書き込まれた何番目の一連のデータであるかを示す順番情報を含み、
前記異常終了検知手段が前記一連のデータの書き込みが正常に終了しなかったことを検知したときに、書き込みが正常に終了しなかった前記一連のデータに対応する前記順番情報が1番目を示す情報である場合、前記正常データ検出手段は、前記一連のデータが正常に書き込まれているセクタ領域の末尾を検出する処理を行わず、正常に書き込まれている前記一連のデータが無いと判断する、
ことを特徴とする。
In order to achieve the above object, the memory controller of the present invention accesses a flash memory in which the user area of each page included in a physical block is composed of one or a plurality of sector areas in response to an instruction from the host system. A memory controller for controlling
In response to a data write command from the host system, i) a series of data is sequentially written in the sector area, and ii) data is written in a redundant area corresponding to the sector area in which the series of data is written. Iii) writing means for writing an end mark indicating that end data of a series of data is written in a redundant area corresponding to the sector area in which end data of the series of data is written; ,
Abnormal end detection means for detecting that the writing of the series of data did not end normally based on the writing mark and the end mark;
Normal data detection means for detecting the end of a sector area in which the series of data is normally written based on the write mark and the end mark;
Equipped with a,
The write mark includes order information indicating what number of series of data written in the physical block,
Information indicating that the order information corresponding to the series of data that has not been normally written indicates the first when the abnormal end detection means detects that the series of data has not been written normally. The normal data detection means does not perform the process of detecting the end of the sector area in which the series of data is normally written, and determines that there is no series of data that is normally written.
It is characterized by that.
この発明に係るフラッシュメモリシステムは、上記のメモリコントローラと、フラッシュメモリと、から構成される。 A flash memory system according to the present invention includes the memory controller and a flash memory.
本発明によれば、フラッシュメモリへの一連のデータの書き込み処理が異常終了した場合、つまり、一連のデータの書き込み処理で、一連のデータの末尾データが書き込まれずに異常終了した場合、最後にデータが書き込まれたセクタ領域に対応する冗長領域には書込マークが書き込まれるが、終了マークは書き込まれない。従って、最後にデータが書き込まれたセクタ領域に対応する冗長領域に書込マークと終了マークの双方が書き込まれていない場合には、一連のデータの書き込み処理が異常終了したと判断することができる。 According to the present invention, if a series of data write processing to the flash memory is abnormally terminated, that is, if a series of data write processing ends abnormally without writing the end data of the series of data, the last data The write mark is written in the redundant area corresponding to the sector area in which is written, but the end mark is not written. Therefore, when both the write mark and the end mark are not written in the redundant area corresponding to the sector area in which the data is written last, it can be determined that the series of data writing processes has ended abnormally. .
更に、一連のデータの書き込み処理が異常終了したと判断した場合には、終了マークに基づいて一連のデータが正常に書き込まれているセクタ領域の末尾を検出することができる。 Further, when it is determined that the series of data write processing has ended abnormally, the end of the sector area in which the series of data is normally written can be detected based on the end mark.
以下、図面に基づき、本発明の実施の形態について詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail 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は、不揮発性メモリであり、レジスタとメモリセルアレイから構成される。フラッシュメモリ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に示したフラッシュメモリ2では、1つのページは、4セクタ(2048バイト)のユーザ領域25と、64バイトの冗長領域26で構成され、1つの物理ブロックは64個のページで構成されている。
In the
又、物理ブロックには、それぞれに固有の物理ブロックアドレス(PBA)が割り当てられている。更に、記憶領域を複数のゾーンに分割して管理する場合には、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに固有の物理ゾーン番号(PZN)を割り当てている。各物理ゾーンに含まれる物理ブロックの、各物理ゾーン内での通番を物理ゾーン内ブロック番号(PZIBN)と呼んでいる。 Each physical block is assigned a unique physical block address (PBA). Further, when the storage area is divided into a plurality of zones for management, a physical zone is constituted by a plurality of physical blocks, and a unique physical zone number (PZN) is assigned to each physical zone. A serial number in each physical zone of a physical block included in each physical zone is referred to as a physical zone block number (PZIBN).
一方、ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。更に、複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。尚、論理ブロックに付けられた通番を論理ブロック番号(LBN)と呼び、各論理ブロックに含まれるセクタの、各論理ブロック内での通番をセクタ番号(SN)と呼んでいる。又、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と呼び、各論理ゾーンに含まれる論理ブロックの、各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と呼んでいる。 On the other hand, the address space on the host system 4 side is managed by an LBA (Logical Block Address) which is a serial number assigned to an area divided in units of sectors (512 bytes). Further, a group of a plurality of sectors is called a logical block, and a group of a plurality of logical blocks is called a logical zone. A serial number assigned to a logical block is called a logical block number (LBN), and a serial number in each logical block of sectors included in each logical block is called a sector number (SN). Further, the serial number assigned to the logical zone is called a logical zone number (LZN), and the serial number in each logical zone of the logical block included in each logical zone is called a logical zone block number (LZIBN).
従って、各論理ゾーンに含まれる論理ブロック数をnとした場合、LBNをnで割ったときの商がLZNに対応し、余りがLZIBNに対応する。 Therefore, when the number of logical blocks included in each logical zone is n, the quotient when LBN is divided by n corresponds to LZN, and the remainder corresponds to LZIBN.
又、各論理ゾーンにはそれぞれ1個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。更に、データが書き込まれた物理ブロックの冗長領域26には、そのデータに対応する論理ブロックを特定できる情報(以下、論理アドレス情報という。)が書き込まれる。この論理アドレス情報として、一般的にはデータ量の少ないLZIBNが書き込まれるが、LBNを書き込んでも構わない。
In addition, one physical zone is allocated to each logical zone, and data corresponding to each logical block included in the logical zone is written to a physical block included in the physical zone allocated to the logical zone. Further, information (hereinafter referred to as logical address information) that can identify a logical block corresponding to the data is written in the
上述の物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成され、対応関係が変化する毎に更新される。尚、論理ゾーンと物理ゾーンとの対応関係は予め設定されているので、アクセス対象の物理ゾーンに含まれる物理ブロックの冗長領域26に書き込まれている論理アドレス情報を参照することにより、このアドレス変換テーブルを論理ゾーン単位で作成することができる。
The correspondence relationship between the physical block and the logical block changes every time data is written or erased. Therefore, an address conversion table is created to manage the correspondence between the two at each time point, and is updated each time the correspondence changes. Since the correspondence relationship between the logical zone and the physical zone is set in advance, this address conversion is performed by referring to the logical address information written in the
次に、4セクタ(2048バイト)のユーザ領域25と、64バイトの冗長領域26で構成されたページの記憶領域について、図3を参照して説明する。各ページのユーザ領域25は、4つの領域(以下、セクタ領域25’と言う。)に区分されている。このセクタ領域25’には、それぞれ、ホストシステム4から供給される1セクタ(512バイト)のユーザデータが格納される。
Next, a page storage area composed of a
一方、冗長領域26も、4つの領域(以下、部分冗長領域26’と言う。)に区分され、この部分冗長領域26’には、それぞれ、16バイトの領域が割り当てられる。各ページの部分冗長領域26’には、それぞれ、対応するセクタ領域25’に書き込まれたユーザデータのエラーコレクション(ECC)コードと、対応するセクタ領域25’の書き込み状態を示す書き込みマーク及び終了マークが書き込まれる。更に、各物理ブロックの先頭ページの部分冗長領域26’には、論理アドレス情報及びブロックステータス(フラグ)が書き込まれる。
On the other hand, the
ECCコードは、セクタ領域25’に記憶されているユーザデータに含まれる誤りを検出し、訂正するためのデータである。 The ECC code is data for detecting and correcting an error included in the user data stored in the sector area 25 '.
書き込みマークは、対応するセクタ領域25’にユーザデータが書き込まれているか否かを示す情報である。終了マークは、一連のユーザデータを書き込む書き込み処理(以下、一連のユーザデータを書き込む書き込み処理をシーケンス書き込み処理という)で、末尾のユーザデータが書き込まれたセクタ領域25’を示す情報である。つまり、シーケンス書き込み処理で複数セクタのユーザデータを書き込んだ場合、そのシーケンス書き込み処理でユーザデータを書き込んだセクタ領域25’に対応する部分冗長領域26’に書き込みマークを書き込み、更に、末尾のユーザデータを書き込んだセクタ領域25’に対応する部分冗長領域26’に終了マークを書き込む。ここで、シーケンス書き込み処理とは、フラッシュメモリインターフェースブロック10に設定された情報に基づいて実行される一連のユーザデータの書き込み処理をいう。ホストシステム4から与えられた書き込みコマンドに基づくアクセス対象領域が複数の物理ブロックに跨っていない場合は、ホストシステム4から与えられた1回の書き込みコマンドに基づいて、1回のシーケンス書き込み処理が実行される。
The write mark is information indicating whether user data is written in the corresponding sector area 25 '. The end mark is information indicating the
又、各セクタ領域25’と各部分冗長領域26’の対応関係は、適宜設定することができる。例えば、図3に示したように、ユーザ領域25内の先頭のセクタ領域25’を冗長領域26の先頭の部分冗長領域26’に、ユーザ領域25内の2番目のセクタ領域25’を冗長領域26の2番目の部分冗長領域26’に、ユーザ領域25内の3番目のセクタ領域25’を冗長領域26の3番目の部分冗長領域26’にそれぞれ対応させる。
The correspondence between each sector area 25 'and each partial redundancy area 26' can be set as appropriate. For example, as shown in FIG. 3, the
次に、フラッシュメモリ2に対するアクセスを制御するコントローラ3について説明する。コントローラ3は、フラッシュメモリ2にデータ、アドレス情報、内部コマンド等を供給することにより読み出し処理、書き込み処理、ブロック消去処理等の各処理を行う。
Next, the
ここで、内部コマンドとは、コントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、コントローラ3から与えられる内部コマンドに従って動作する。一方、ホストシステム4からコントローラ3に与えられるコマンドを外部コマンドと言う。
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に処理を実行させる。
The
ROM12は、不揮発性の記憶素子であり、上記のシーケンスコマンド等が記憶されている。
The
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。上述のアドレス変換テーブルは、このワークエリア8上に作成される。
The
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
The buffer 9 temporarily stores data read from the
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
The ECC block 11 generates an error correction code added to data to be written to the
ホストインターフェースブロック7は、ホストシステム4との間で、データ、アドレス情報、外部コマンド等の授受を行う。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
The host interface block 7 exchanges data, address information, external commands and the like with the host system 4. Data or the like supplied from the host system 4 to the
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
The flash
ホストインターフェースブロック7及びフラッシュメモリインターフェースブロック10は、図4に示すような各種のレジスタを備える。ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3等を備えており、フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13、書込マークレジスタR14、終了マークレジスタR15等を備える。
The host interface block 7 and the flash
コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭のLBAが書き込まれる。セクタ数レジスタR2にはアクセス対象領域のセクタ数が書き込まれる。 Information given from the host system 4 is written in the command register R1, the sector number register R2, and the LBA register R3. External commands such as a write command and a read command are written in the command register R1. In the LBA register R3, the head LBA of the access target area is written. The number of sectors in the access target area is written in the sector number register R2.
物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13には、セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて、フラッシュメモリ2内のアクセス対象領域を指示する情報が書き込まれる。
Information indicating the access target area in the
フラッシュメモリ2内のアクセス対象領域を特定するときには、LBAレジスタR3に設定されたLBAに基づいてアクセス対象のLBNとSNが特定される。
When the access target area in the
例えば、LBAが連続する256セクタの領域を、フラッシュメモリ(1ブロックが64ページで、1ページが4セクタのフラッシュメモリ)の1個の物理ブロックに割り当てた場合、図5に示したようにLBAの下位8ビットがSNに対応し、この下位8ビットを除いた上位側のビットがLBNに対応する。つまり、LBAが連続する256セクタの領域を論理ブロックとした場合、LBAの下位8ビットが論理ブロック内の各セクタに付けた通番であるセクタ番号SN(0〜255)を示し、このLBAの下位8ビットを除いた上位側のビットがLBNを示している。尚、LBA、LBN及びSNのビット数については、フラッシュメモリの容量や仕様等に応じて決定される。 For example, if an area of 256 sectors with consecutive LBAs is allocated to one physical block in flash memory (one block has 64 pages and one page has 4 sectors), as shown in FIG. The lower 8 bits correspond to SN, and the upper bits excluding the lower 8 bits correspond to LBN. That is, when an area of 256 sectors with continuous LBA is a logical block, the lower 8 bits of the LBA indicate the sector number SN (0 to 255) which is a serial number assigned to each sector in the logical block. The upper bits excluding 8 bits indicate LBN. Note that the number of bits of LBA, LBN, and SN is determined according to the capacity and specifications of the flash memory.
続いて、アクセス対象のLBNとSNに基づいて、物理ブロックアドレスレジスタR11及びセクタ番号レジスタR12へアクセス対象領域を指示する情報の設定が行われる。 Subsequently, based on the access-target LBN and SN, information indicating the access target area is set in the physical block address register R11 and the sector number register R12.
物理ブロックアドレスレジスタR11には、LBAレジスタR3に書き込まれたLBAのLBNを示す部分に基づいて特定された論理ブロックと対応する物理ブロックのPBA又は空きブロックのPBAが書き込まれる。つまり、特定された論理ブロックに対応する物理ブロックからユーザデータを読み出す場合、又は、そのブロックに追加書き込みをする場合には、特定された論理ブロックと対応する物理ブロックのPBAが物理ブロックアドレスレジスタR11に書き込まれ、特定された論理ブロックに対応するユーザデータを空きブロックに書き込む場合には、その空きブロックのPBAが物理ブロックアドレスレジスタR11に書き込まれる。 In the physical block address register R11, the PBA of the physical block corresponding to the logical block specified based on the portion indicating the LBN of the LBA written in the LBA register R3 or the PBA of the empty block is written. That is, when reading user data from the physical block corresponding to the specified logical block, or when additional writing is performed on the block, the PBA of the physical block corresponding to the specified logical block is the physical block address register R11. When the user data corresponding to the specified logical block is written into the empty block, the PBA of the empty block is written into the physical block address register R11.
セクタ番号レジスタR12には、LBAレジスタR3に書き込まれたLBAのSNに対応する部分が書き込まれる。ここで、各物理ブロックにはLBAの順番でユーザデータを書き込まれるので、上記SNは、各物理ブロックに含まれるセクタ領域25’に付けられた通番に対応する。尚、各ページのユーザ領域25は4個のセクタ領域25’で構成されているので、SNの上位6ビットが物理ブロック内のページ番号PN(0〜63)に対応し、SNの下位2ビットがユーザ領域25に含まれるセクタ領域25’の順番を示すページ内セクタ番号PISN(0〜3)に対応する。
In the sector number register R12, a portion corresponding to the SN of the LBA written in the LBA register R3 is written. Here, since user data is written in each physical block in the order of LBA, the SN corresponds to a serial number assigned to the
カウンタR13には、物理ブロックアドレスレジスタR11に設定されたPBAで特定される物理ブロックに書き込まれる一連のユーザデータのセクタ数が書き込まれる。従って、セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて特定されるアクセス対象領域が複数の物理ブロックに跨っていない場合は、セクタ数レジスタR2に設定されたセクタ数がカウンタR13に書き込まれる。 In the counter R13, the number of sectors of a series of user data written in the physical block specified by the PBA set in the physical block address register R11 is written. Therefore, when the access target area specified based on the information written in the sector number register R2 and the LBA register R3 does not extend over a plurality of physical blocks, the sector number set in the sector number register R2 is stored in the counter R13. Written.
尚、LBAレジスタR3及びセクタ数レジスタR2に基づいて特定されるアクセス対象領域が複数の論理ブロックに跨っている場合、アクセス対象領域の物理ブロックも複数の物理ブロックに跨っているので、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13に対する情報の設定は論理ブロック毎に行われる。従って、LBAレジスタR3及びセクタ数レジスタR2に基づいて特定されるアクセス対象領域が複数の論理ブロックに跨っている場合、ホストシステム4から与えられる1回の書き込みコマンドに基づいて複数回(例えば、2個の論理ブロックに跨っている場合は2回)のシーケンス書き込み処理が実行される。 When the access target area specified based on the LBA register R3 and the sector count register R2 extends over a plurality of logical blocks, the physical block of the access target area also extends over a plurality of physical blocks. Information setting for the register R11, the sector number register R12, and the counter R13 is performed for each logical block. Therefore, when the access target area specified based on the LBA register R3 and the sector number register R2 extends over a plurality of logical blocks, it is set a plurality of times (for example, 2 based on one write command given from the host system 4). The sequence write process is executed twice if the logical block is straddled.
書き込み処理の場合には、書込マークレジスタR14と終了マークレジスタR15に、部分冗長領域26’に書き込まれる書込マークと終了マークがそれぞれ設定される。 In the case of the writing process, a write mark and an end mark written to the partial redundancy area 26 'are set in the write mark register R14 and the end mark register R15, respectively.
本実施の形態では、書込マークを8ビットとし、終了マークを4ビットとしている。書込マークは、その物理ブロックに対する何回目のシーケンス書き込み処理であるかによって下記のように書込マークの設定を変えている。
1回目のシーケンス書き込み処理時の書込マーク:00h(16進数表記)
2回目のシーケンス書き込み処理時の書込マーク:05h(16進数表記)
3回目のシーケンス書き込み処理時の書込マーク:0Ah(16進数表記)
4回目のシーケンス書き込み処理時の書込マーク:0Fh(16進数表記)
5回目のシーケンス書き込み処理時の書込マーク:50h(16進数表記)
6回目のシーケンス書き込み処理時の書込マーク:55h(16進数表記)
7回目のシーケンス書き込み処理時の書込マーク:5Ah(16進数表記)
8回目のシーケンス書き込み処理時の書込マーク:5Fh(16進数表記)
9回目のシーケンス書き込み処理時の書込マーク:A0h(16進数表記)
10回目のシーケンス書き込み処理時の書込マーク:A5h(16進数表記)
11回目のシーケンス書き込み処理時の書込マーク:AAh(16進数表記)
12回目のシーケンス書き込み処理時の書込マーク:AFh(16進数表記)
13回目のシーケンス書き込み処理時の書込マーク:F0h(16進数表記)
14回目のシーケンス書き込み処理時の書込マーク:F5h(16進数表記)
15回目以降のシーケンス書き込み処理時の書込マーク:FAh(16進数表記)
In the present embodiment, the write mark is 8 bits and the end mark is 4 bits. The setting of the writing mark is changed as follows depending on the number of sequential writing processes for the physical block.
Write mark at the time of the first sequence writing process: 00h (hexadecimal notation)
Write mark at the time of the second sequence write process: 05h (hexadecimal notation)
Write mark at the time of the third sequence writing process: 0 Ah (hexadecimal notation)
Write mark at the time of the fourth sequence write process: 0Fh (hexadecimal notation)
Write mark at the time of the fifth sequence writing process: 50h (hexadecimal notation)
Write mark at the time of 6th sequence write processing: 55h (hexadecimal notation)
Write mark at the time of the seventh sequence writing process: 5 Ah (hexadecimal notation)
Write mark for the 8th sequence write process: 5Fh (hexadecimal notation)
Write mark at the time of the 9th sequence writing process: A0h (hexadecimal notation)
Write mark for the 10th sequence write process: A5h (hexadecimal notation)
Write mark for the 11th sequence write process: AAh (hexadecimal notation)
Write mark for the 12th sequence writing process: AFh (hexadecimal notation)
Write mark for the 13th sequence writing process: F0h (hexadecimal notation)
Write mark for the 14th sequence writing process: F5h (hexadecimal notation)
Write mark for the 15th and subsequent sequence write processes: FAh (hexadecimal notation)
例えば、既に8回のシーケンス書き込み処理が行われている物理ブロックに、9回目のシーケンス書き込み処理を行う場合には、書込マークレジスタR14にA0h(16進数表記)を、終了マークレジスタR15にFh(16進数表記)を設定した後にシーケンス書き込み処理が実行する。シーケンス書き込み処理が実行されると物理ブロックアドレスレジスタR11及びセクタ番号レジスタR12に設定されている情報に基づいて、ユーザデータの書き込み先のページを特定する物理アドレス情報と、書き込み先のページ内のセクタ領域25’を特定する情報がフラッシュメモリ2に供給される。更に、セクタ領域25’に書き込まれるユーザデータが、バッファ9から供給され、部分冗長領域26’に書き込まれる書込マークと終了マークが、書込マークレジスタR14と終了マークレジスタR15からそれぞれ供給される。ここで、書き込み先のページを特定する物理アドレス情報は、物理ブロックアドレスレジスタR11に設定されているPBAとセクタ番号レジスタR12に設定されているSNの上位6ビットに基づいて生成され、ページ内のセクタ領域25’を特定する情報は、SNの下位2ビットに基づいて生成される。
For example, when the ninth sequence write process is performed on a physical block that has already been subjected to the sequence write process eight times, A0h (hexadecimal notation) is written in the write mark register R14, and Fh is written in the end mark register R15. After setting (hexadecimal notation), the sequence writing process is executed. When the sequence writing process is executed, based on information set in the physical block address register R11 and the sector number register R12, physical address information for specifying a user data write destination page, and sectors in the write destination page Information specifying the
1セクタのユーザデータがバッファ9からフラッシュメモリ2に供給される毎にセクタ番号レジスタR12に設定されている値がインクリメント(1ずつ増加)され、カウンタR13に設定されている値がデクリメント(1ずつ減少)される。カウンタR13に設定されている値が1になったときに、終了マークレジスタR15に0h(16進数表記)が設定され、カウンタR13に設定されている値が0になったときにシーケンス書き込み処理が終了する。例えば、カウンタR13に「8」を設定してシーケンス書き込み処理を開始した場合、8セクタのユーザデータの書き込みが行われ、8セクタ目のユーザデータが書き込まれたセクタ領域25’に対応する部分冗長領域26’には、終了マークとして0h(16進数表記)が書き込まれる。
Each time user data of one sector is supplied from the buffer 9 to the
つまり、シーケンス書き込み処理は、物理ブロックアドレスレジスタR11に書き込み先の物理ブロックのPBAを書き込み、セクタ番号レジスタR12に書き込みを開始するセクタ領域25’に対応するSNを書き込み、カウンタR13に書き込むユーザデータのセクタ数を書き込み、書込マークレジスタR14に書込マークを書き込み、終了マークレジスタR15にFh(16進数表記)を書き込んだ後に開始され、カウンタR13に書き込まれたセクタ数分のユーザデータが書き込まれると終了する。
That is, in the sequence write process, the PBA of the write destination physical block is written to the physical block address register R11, the SN corresponding to the
尚、書込マークは、ビット誤りの発生を考慮して0h、5h、Ah及びFh(16進数表記)の組み合わせ(但し、FFhを除く)で構成している。又、部分冗長領域26’の書込マークが書き込まれる部分がFFh(消去状態)の場合は、書込マークが書き込まれていないと判断する。 The write mark is composed of a combination (excluding FFh) of 0h, 5h, Ah and Fh (hexadecimal notation) in consideration of the occurrence of a bit error. If the portion of the partial redundancy area 26 'where the write mark is written is FFh (erased), it is determined that the write mark is not written.
本実施の形態では、各物理ブロックに含まれる256個のセクタ領域25’のユーザデータが記憶されているか否かを書込マークに基づいて判断し、ユーザデータが記憶されている末尾のセクタ領域25’に対応する部分冗長領域26’に終了マークが書き込まれているか否かで、シーケンス書き込み処理が正常に終了したかどうかを判断している。
In the present embodiment, it is determined based on the write mark whether or not user data of 256
更に、ユーザデータが記憶されている末尾のセクタ領域25’に対応する部分冗長領域26’に終了マークが書き込まれていなかった場合、正常データと異常データの判別が行われる。この判別では、ユーザデータが記憶されている末尾のセクタ領域25’に対応する部分冗長領域26’に書き込まれている書込マークの1つ前の書込マークが書き込まれている末尾の部分冗長領域26’を検出し、この部分冗長領域26’と対応するセクタ領域25’までに記憶されているユーザデータを正常データと判断する。但し、15回目以降のシーケンス書き込み処理では同じ書込マークFAh(16進数表記)が書き込まれるので、ユーザデータが記憶されている末尾のセクタ領域25’と対応する部分冗長領域26’に書込マークFAh(16進数表記)が書き込まれていた場合は、終了マークが書き込まれている末尾の部分冗長領域26’と対応するセクタ領域25’までに書き込まれているユーザデータを正常データと判断する。尚、正常データと判断されたユーザデータは他の消去済みの物理ブロックに転送(複写)され、転送後に正常データと異常データ並存する物理ブロックの記憶データは消去される。
Further, when no end mark is written in the partial redundancy area 26 'corresponding to the last sector area 25' in which user data is stored, normal data and abnormal data are discriminated. In this determination, the last partial redundancy in which the write mark immediately before the write mark written in the
又、ユーザデータが書き込まれている末尾のセクタ領域25’に対応する部分冗長領域26’に終了マークが書き込まれていなかったときに、その部分冗長領域26’に書き込まれている書込マークが1回目のシーケンス書き込み処理を示す書込マーク00h(16進数表記)であった場合はその物理ブロックに正常データが無いと判断する。尚、正常データが無いと判断した物理ブロックの記憶データは消去される。
Further, when the end mark is not written in the partial
次に、部分冗長領域26’に書き込まれている書込マークを参照してユーザデータが書き込まれている末尾のセクタ領域25’を検出する処理を、図6を参照して説明する。尚、以下の説明で部分冗長領域26’には、対応するセクタ領域25’と同じSNが付けられているものとする。つまり、SNが「0」のセクタ領域25’と対応する部分冗長領域26’のSNは「0」とし、SNが「1」のセクタ領域25’と対応する部分冗長領域26’のSNは「1」とし、以下同様にSNが「255」のセクタ領域25’と対応する部分冗長領域26’のSNは「255」とする。
Next, processing for detecting the
まず、検索範囲の先頭セクタ番号SSとして先頭部分冗長領域26’のSNである0(二進数表記:0000 0000)を設定する(ステップS51)。 First, 0 (binary notation: 0000 0000), which is the SN of the first partial redundancy area 26 ', is set as the first sector number SS of the search range (step S51).
続いて、検索範囲の最終セクタ番号ESとして最終部分冗長領域26’のSNに1を加算した256(二進数表記:1 0000 0000)を設定する(ステップS52)。 Subsequently, 256 (binary notation: 1 0000 0000) obtained by adding 1 to the SN of the final partial redundant area 26 'is set as the final sector number ES of the search range (step S52).
次に、参照する部分冗長領域26’のSNの値nを算出する(ステップS53)。この値nは、下記の式によって求める。
n=(SS+ES)/2
つまり、この値nはSSとESを加算した後に、下位方向に1ビットシフトさせる(最下位ビットを削除する)ことにより求められる。
Next, the SN value n of the partial
n = (SS + ES) / 2
In other words, this value n is obtained by adding SS and ES and then shifting by 1 bit in the lower direction (deleting the least significant bit).
次に、SNがステップS53で求めたnと一致する部分冗長領域26’を参照し、参照した部分冗長領域26’に書込マークが書き込まれているか否かを判別する(ステップS54)。つまり、書込マークが00h(16進数表記)〜FAh(16進数表記)のいずれかであれば、書込マークが書き込まれていると判断し、書込マークがFFh(16進数表記)であれば、書込マークが書き込まれていないと判断する。 Next, with reference to the partial redundancy area 26 'whose SN matches n obtained in step S53, it is determined whether or not a write mark is written in the referenced partial redundancy area 26' (step S54). That is, if the write mark is any one of 00h (hexadecimal notation) to FAh (hexadecimal notation), it is determined that the write mark is written, and the write mark is FFh (hexadecimal notation). In this case, it is determined that the write mark is not written.
参照した部分冗長領域26’に書込マークが書き込まれていた場合(ステップS54:Yes)、書込マークが書き込まれている末尾の部分冗長領域26’は参照した部分冗長領域26’より前にはないので、先頭セクタ番号SSをステップS53で求めたnの値に変更する(ステップS55)。
When a write mark is written in the referenced partial
参照した部分冗長領域26’に書込マークが書き込まれていない場合(ステップS54:No)、書込マークが書き込まれている末尾の部分冗長領域26’は参照した部分冗長領域26’より後にはないので、最終セクタ番号ESをステップS53で求めたnの値に変更する(ステップS56)。次に、先頭セクタ番号SSと最終セクタ番号ESを比較し、先頭セクタ番号SSと最終セクタ番号ESの差が「1」より大きいか否かを判断する(ステップS57)。先頭セクタ番号SSと最終セクタ番号ESの差が「1」より大きい場合(ステップS57:Yes)、ステップS53に戻り、次に参照する部分冗長領域26’のSNの値nを算出する。一方、先頭セクタ番号SSと最終セクタ番号ESの差が「1」の場合(ステップS57:No)は、先頭セクタ番号SSに設定されている値が、書込マークが書き込まれている末尾の部分冗長領域26’のSNと判断して検出処理を終了する。
When the write mark is not written in the referenced partial redundant area 26 '(step S54: No), the last partial redundant area 26' in which the write mark is written is after the referenced partial redundant area 26 '. Therefore, the final sector number ES is changed to the value of n obtained in step S53 (step S56). Next, the head sector number SS and the last sector number ES are compared to determine whether or not the difference between the head sector number SS and the last sector number ES is greater than “1” (step S57). When the difference between the first sector number SS and the last sector number ES is larger than “1” (step S57: Yes), the process returns to step S53, and the SN value n of the partial
このようにして検出された書込マークが書き込まれている末尾の部分冗長領域26’に終了マーク0h(16進数表記)が書き込まれていた場合、前回のシーケンス書き込み処理は正常に終了したと判断する。一方、書込マークが書き込まれている末尾の部分冗長領域26’に終了マーク0h(16進数表記)が書き込まれていなかった場合、前回のシーケンス書き込み処理は正常に終了しなかったと判断する。
If the end mark 0h (hexadecimal notation) is written in the tail partial
次に、前回のシーケンス書き込み処理が正常に終了しなかったと判断した場合、前回のシーケンス書き込み処理より前のシーケンス書き込み処理で書き込まれた正常データを判別する処理を行う。但し、正常に終了しなかったと判断した前回のシーケンス書き込み処理で書き込まれた書込マークが、1回目のシーケンス書き込み処理を示す書込マーク00h(16進数表記)であった場合は、その物理ブロックに正常データが無いと判断し、正常データを判別する処理を行わない。
Next, when it is determined that the previous sequence writing process has not ended normally, a process for determining normal data written in the sequence writing process prior to the previous sequence writing process is performed. However, if the write mark written in the previous sequence write process that was determined not to have ended normally is the
正常に終了しなかったと判断した前回のシーケンス書き込み処理で書き込まれた書込マークがFAh(16進数表記)の場合は、書込マークが書き込まれている末尾の部分冗長領域26’より前の部分冗長領域26’を順次参照していき、終了マークが書き込まれている末尾の部分冗長領域26’を検出する。このようにして検出された部分冗長領域26’と対応するセクタ領域25’までに書き込まれているユーザデータを正常データと判断する。例えば、SNが243の部分冗長領域26’、SNが242の部分冗長領域26’、SNが241の部分冗長領域26’という順番で参照していき、SNが243〜238の部分冗長領域26’に終了マークが無く、SNが237の部分冗長領域26’に終了マークが有った場合には、SNが0〜237のセクタ領域25’に記憶されているユーザデータを正常データと判断する。
If the write mark written in the previous sequence write process that was determined not to have ended normally is FAh (hexadecimal notation), the part before the last partial redundant area 26 'where the write mark is written The
正常に終了しなかったと判断した前回のシーケンス書き込み処理で書き込まれた書込マークが、2〜14回目のシーケンス書き込み処理を示す書込マークであった場合、前回のシーケンス書き込み処理で書き込まれた書込マークより1つ前の書込マークと終了マークの双方が書き込まれている部分冗長領域26’ と対応するセクタ領域25’までに書き込まれているユーザデータを正常データと判断する。この前回のシーケンス書き込み処理で書き込まれた書込マークより1つ前の書込マークと終了マークの双方が書き込まれている部分冗長領域26’を検出する処理、つまり、正常データが記憶されている末尾のセクタ領域25’を検出する処理を図7を参照して説明する。
If the writing mark written in the previous sequence writing process that was determined not to have ended normally is a writing mark indicating the 2nd to 14th sequence writing processes, the writing mark written in the previous sequence writing process The user data written up to the
まず、検索範囲の先頭セクタ番号SSとして先頭部分冗長領域26’のSNである0を設定する(ステップS61)。 First, 0 is set as the SN of the first partial redundancy area 26 'as the first sector number SS of the search range (step S61).
続いて、検索範囲の最終セクタ番号ESとして書込マークが書き込まれている末尾の部分冗長領域26’のSNの値を設定する。更に、最終書込マークEMとして書込マークが書き込まれている末尾の部分冗長領域26’に書き込まれている書込マークを設定する。(ステップS62)。つまり、最終書込マークEMには、正常に終了しなかったと判断した前回のシーケンス書き込み処理で書き込まれた書込マークを設定する。 Subsequently, the SN value of the last partial redundant area 26 'where the write mark is written is set as the final sector number ES of the search range. Further, a write mark written in the last partial redundant area 26 'where the write mark is written is set as the final write mark EM. (Step S62). In other words, the last write mark EM is set with the write mark written in the previous sequence writing process that is determined not to have ended normally.
次に、参照する部分冗長領域26’のSNの値nを算出する(ステップS63)。この値nは、下記の式によって求める。
n=(SS+ES)/2
つまり、この値nはSSとESを加算した後に、下位方向に1ビットシフトさせる(最下位ビットを削除する)ことにより求められる。
Next, the SN value n of the partial
n = (SS + ES) / 2
In other words, this value n is obtained by adding SS and ES and then shifting by 1 bit in the lower direction (deleting the least significant bit).
次に、SNがステップS63で求めたnと一致する部分冗長領域26’を参照し、参照した部分冗長領域26’に書き込まれている書込マークと、最終書込マークEMとして設定されている書込マークを比較する(ステップS64)。
Next, the SN refers to the
参照した部分冗長領域26’に書き込まれている書込マークと、最終書込マークEMとして設定されている書込マークが同じ場合(ステップS64:Yes)、最終書込マークEMとして設定されている書込マークより1つ前の書込マークが書き込まれている部分冗長領域26’は参照した部分冗長領域26’より後にはないので、最終セクタ番号ESをステップS63で求めたnの値に変更する(ステップS65)。最終セクタ番号ESの変更後、ステップS63に戻り参照する部分冗長領域26’のSNの値nを再度算出する。
If the write mark written in the referenced partial redundancy area 26 'is the same as the write mark set as the final write mark EM (step S64: Yes), it is set as the final write mark EM. Since the partial
参照した部分冗長領域26’に書き込まれている書込マークと、最終書込マークEMとして設定されている書込マークが異なる場合(ステップS64:No)、つまり、参照した部分冗長領域26’に書き込まれている書込マークが、最終書込マークEMとして設定されている書込マークより1つ以上前の書込マークである場合、最終書込マークEMとして設定されている書込マークより1つ前の書込マークと終了マークが書き込まれている部分冗長領域26’は参照した部分冗長領域26’より前にはないので、先頭セクタ番号SSをステップS63で求めたnの値に変更する(ステップS66)。
When the write mark written in the referenced partial
続いて、参照した部分冗長領域26’に書き込まれている書込マークと、最終書込マークEMとして設定されている書込マークの1つ前の書込マークを比較する(ステップS67)。 Subsequently, the write mark written in the referenced partial redundancy area 26 'is compared with the write mark immediately before the write mark set as the final write mark EM (step S67).
参照した部分冗長領域26’に書き込まれている書込マークと、最終書込マークEMとして設定されている書込マークの1つ前の書込マークが異なる場合(ステップS67:No)、つまり、参照した部分冗長領域26’に書き込まれている書込マークが、最終書込マークEMとして設定されている書込マークより2つ以上前の書込マークである場合、ステップS63に戻り参照する部分冗長領域26’のSNの値nを再度算出する。
When the write mark written in the referenced
参照した部分冗長領域26’に書き込まれている書込マークと、最終書込マークEMとして設定されている書込マークの1つ前の書込マークが同じ場合(ステップS67:Yes)、参照した部分冗長領域26’に終了マークが書き込まれているか否かを判断する(ステップS68)。
When the write mark written in the referenced
参照した部分冗長領域26’に終了マークが書き込まれていない場合(ステップS68:No)、ステップS63に戻り参照する部分冗長領域26’のSNの値nを再度算出する。 When the end mark is not written in the referenced partial redundant area 26 '(step S68: No), the process returns to step S63 to recalculate the SN value n of the referenced partial redundant area 26'.
参照した部分冗長領域26’に終了マークが書き込まれている場合(ステップS68:Yes)、先頭セクタ番号SSに設定されている値が、正常データが記憶されている末尾のセクタ領域25’のSNと判断して検出処理を終了する。
When the end mark is written in the referred partial
次に、正常データと異常データを判別する処理を具体例に基づいて説明する。例えば、図8に示すように、書込マークと終了マークが書き込まれている場合について説明する。 Next, processing for discriminating between normal data and abnormal data will be described based on a specific example. For example, as shown in FIG. 8, a case where a writing mark and an end mark are written will be described.
この例では、書込マークが書き込まれている末尾の部分冗長領域26’のSNは25であり、SNが25の部分冗長領域26’にはシーケンス書き込み処理が正常に終了したことを示す終了マーク0h(16進数表記)が書き込まれていない。従って、前回のシーケンス書き込み処理が正常に終了しなかったと判断する。
In this example, the SN of the last partial
ここで、SNが25の部分冗長領域26’に書き込まれている書込マークは0Ah(16進数表記)なので、0Ah(16進数表記)より1つ前の書込マーク05h(16進数表記)と終了マーク0h(16進数表記)が書き込まれている部分冗長領域26’のSNが、正常データが記憶されている末尾のセクタ領域25’のSNであると判断する。つまり、SNが0〜17のセクタ領域25’に記憶されているユーザデータが正常データであると判断する。
Here, since the write mark written in the partial redundancy area 26 'with SN of 25 is 0Ah (hexadecimal notation), the
次に、図9に示すように、書込マークと終了マークが書き込まれている場合について説明する。
この例では、書込マークが書き込まれている末尾の部分冗長領域26’のSNは7であり、SNが7の部分冗長領域26’にはシーケンス書き込み処理が正常に終了したことを示す終了マーク0h(16進数表記)が書き込まれていない。従って、前回のシーケンス書き込み処理が正常に終了しなかったと判断する。
Next, a case where a write mark and an end mark are written as shown in FIG. 9 will be described.
In this example, the SN of the last partial
ここで、SNが7の部分冗長領域26’に書き込まれている書込マークは、この物理ブロックに対する1回目のシーケンス書き込み処理を示す00h(16進数表記)なので、この物理ブロックには正常データが記憶されていないと判断する。 Here, since the write mark written in the partial redundancy area 26 'with SN 7 is 00h (hexadecimal notation) indicating the first sequence write processing for this physical block, normal data is stored in this physical block. Judge that it is not memorized.
以上説明したように、各シーケンス書き込み処理で一連のデータが書き込まれるセクタ領域25’に対応する部分冗長領域26’に同じ書込マークを書き込み、一連のデータの末尾のユーザデータが書き込まれたセクタ領域25’に対応する部分冗長領域26’に終了マークを書き込むことにより、異常終了が発生したか否の判断と、正常データと異常データの判別を容易に行うことができる。
As described above, the same write mark is written in the
尚、書込マークのビット数、ビットパターン及びビットパターンの種類については適宜設定することができる。書込マークのビットパターンの種類については、シーケンス書き込み処理毎に全て異ならせることが好ましいが、同一の物理ブロックに対する平均的なシーケンス書き込み処理の回数等を考慮して適宜決定すればよい。又。終了マークのビット数及びビットパターンについても適宜設定することができる。 Note that the number of bits of the write mark, the bit pattern, and the type of the bit pattern can be set as appropriate. The type of bit pattern of the write mark is preferably made different for each sequence writing process, but may be determined as appropriate in consideration of the average number of times of sequential writing process for the same physical block. or. The number of bits and the bit pattern of the end mark can also be set as appropriate.
又、フラッシュメモリの構成、例えば、各物理ブロックに含まれるセクタ領域25’の数等については特に限定することなく実施することができる。フラッシュメモリに対するアクセス方法やアドレス管理方法についても特に限定することなく実施することができる。
Further, the configuration of the flash memory, for example, the number of
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
25 ユーザ領域
26 冗長領域
1
13
Claims (2)
ホストシステムからのデータ書き込みの命令に応答して、i)前記セクタ領域に一連のデータを順次書き込み、ii) 前記一連のデータが書き込まれたセクタ領域に対応する冗長領域にデータが書き込まれたことを示す書込マークを順次書き込み、iii)前記一連のデータの末尾データを書き込んだ前記セクタ領域に対応する冗長領域に一連のデータの末尾データを書き込んだことを示す終了マークを書き込む書込手段と、
前記書込マーク及び前記終了マークに基づいて、前記一連のデータの書き込みが正常に終了しなかったことを検知する異常終了検知手段と、
前記書込マーク及び前記終了マークに基づいて、前記一連のデータが正常に書き込まれているセクタ領域の末尾を検出する正常データ検出手段と、
を備え、
前記書込マークは、前記物理ブロックに書き込まれた何番目の一連のデータであるかを示す順番情報を含み、
前記異常終了検知手段が前記一連のデータの書き込みが正常に終了しなかったことを検知したときに、書き込みが正常に終了しなかった前記一連のデータに対応する前記順番情報が1番目を示す情報である場合、前記正常データ検出手段は、前記一連のデータが正常に書き込まれているセクタ領域の末尾を検出する処理を行わず、正常に書き込まれている前記一連のデータが無いと判断する、
ことを特徴とするメモリコントローラ。 In response to a command from a host system, a memory controller that controls access to a flash memory in which a user area of each page included in a physical block includes one or more sector areas,
In response to a data write command from the host system, i) a series of data is sequentially written in the sector area, and ii) data is written in a redundant area corresponding to the sector area in which the series of data is written. Iii) writing means for writing an end mark indicating that end data of a series of data is written in a redundant area corresponding to the sector area in which end data of the series of data is written; ,
Abnormal end detection means for detecting that the writing of the series of data did not end normally based on the writing mark and the end mark;
Normal data detection means for detecting the end of a sector area in which the series of data is normally written based on the write mark and the end mark;
Equipped with a,
The write mark includes order information indicating what number of series of data written in the physical block,
Information indicating that the order information corresponding to the series of data that has not been normally written indicates the first when the abnormal end detection means detects that the series of data has not been written normally. The normal data detection means does not perform the process of detecting the end of the sector area in which the series of data is normally written, and determines that there is no series of data that is normally written.
A memory controller characterized by that.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006080694A JP4501881B2 (en) | 2006-03-23 | 2006-03-23 | Memory controller and flash memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006080694A JP4501881B2 (en) | 2006-03-23 | 2006-03-23 | Memory controller and flash memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007257283A JP2007257283A (en) | 2007-10-04 |
JP4501881B2 true JP4501881B2 (en) | 2010-07-14 |
Family
ID=38631469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006080694A Active JP4501881B2 (en) | 2006-03-23 | 2006-03-23 | Memory controller and flash memory system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4501881B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008269499A (en) * | 2007-04-24 | 2008-11-06 | Kyoto Software Research Inc | Method for storing bad block mark |
JP4535117B2 (en) * | 2007-11-06 | 2010-09-01 | ソニー株式会社 | MEMORY DEVICE, MEMORY MANAGEMENT METHOD, AND PROGRAM |
KR101369408B1 (en) | 2013-03-15 | 2014-03-04 | 주식회사 디에이아이오 | Storage system and method of transmitting data between a host device and a storage device |
CN104216985B (en) * | 2014-09-04 | 2017-09-01 | 深圳供电局有限公司 | Method and system for discriminating abnormal data |
CN110413223A (en) * | 2019-06-25 | 2019-11-05 | 汉纳森(厦门)数据股份有限公司 | Data read-write method, medium, equipment and the device of flash storage |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132464A (en) * | 1998-10-27 | 2000-05-12 | Canon Inc | Data writing method and device and image forming device |
JP2002169729A (en) * | 2000-12-04 | 2002-06-14 | Toshiba Corp | Controller of nonvolatile memory unit, memory system having the same controller, and control method for nonvolatile memory unit |
JP2003015929A (en) * | 2001-06-28 | 2003-01-17 | Matsushita Electric Ind Co Ltd | Control method for nonvolatile memory |
JP2005292926A (en) * | 2004-03-31 | 2005-10-20 | Tdk Corp | Memory controller, flash memory system, and control method for flash memory |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07147097A (en) * | 1993-11-24 | 1995-06-06 | Mitsubishi Electric Corp | Method of writing eeprom data |
JPH07182246A (en) * | 1993-11-25 | 1995-07-21 | Sanyo Electric Co Ltd | Device and method for controlling non-volatile memory |
-
2006
- 2006-03-23 JP JP2006080694A patent/JP4501881B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132464A (en) * | 1998-10-27 | 2000-05-12 | Canon Inc | Data writing method and device and image forming device |
JP2002169729A (en) * | 2000-12-04 | 2002-06-14 | Toshiba Corp | Controller of nonvolatile memory unit, memory system having the same controller, and control method for nonvolatile memory unit |
JP2003015929A (en) * | 2001-06-28 | 2003-01-17 | Matsushita Electric Ind Co Ltd | Control method for nonvolatile memory |
JP2005292926A (en) * | 2004-03-31 | 2005-10-20 | Tdk Corp | Memory controller, flash memory system, and control method for flash memory |
Also Published As
Publication number | Publication date |
---|---|
JP2007257283A (en) | 2007-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870328B2 (en) | Memory controller and flash memory system | |
JP4501881B2 (en) | Memory controller and flash memory system | |
JP4235646B2 (en) | Memory controller and flash memory system | |
JP4661497B2 (en) | Memory controller, flash memory system, and flash 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 | |
JP4609406B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4655034B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4241741B2 (en) | Memory controller and flash memory system | |
JP2008009614A (en) | Memory controller, memory system, and memory control method | |
JP4513782B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4497124B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP3934659B1 (en) | Memory controller and flash memory system | |
JP4661748B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4697146B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4000124B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP2005292925A (en) | Memory controller, flash memory system, and control method for flash memory | |
JP4539621B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4194518B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4213166B2 (en) | Memory controller and flash memory system | |
JP4304167B2 (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 | |
JP4366283B2 (en) | Memory controller and flash memory system including the memory controller | |
JP4227989B2 (en) | Memory controller and flash memory system | |
JP4332108B2 (en) | 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: 20100212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100223 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100305 |
|
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: 20100330 |
|
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: 20100412 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4501881 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140430 Year of fee payment: 4 |