JP5989156B2 - Flash memory module - Google Patents
Flash memory module Download PDFInfo
- Publication number
- JP5989156B2 JP5989156B2 JP2015024112A JP2015024112A JP5989156B2 JP 5989156 B2 JP5989156 B2 JP 5989156B2 JP 2015024112 A JP2015024112 A JP 2015024112A JP 2015024112 A JP2015024112 A JP 2015024112A JP 5989156 B2 JP5989156 B2 JP 5989156B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- time
- data
- invalid
- program
- 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
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
本発明は、電気的に書き換え可能な不揮発性半導体メモリにデータをプログラムする記憶制御に関する。 The present invention relates to storage control for programming data in an electrically rewritable nonvolatile semiconductor memory.
不揮発性半導体メモリでは、内部セルへのデータの記憶(プログラム)の過程で、フローティングゲートに酸化絶縁膜を貫通して電子が送られる。また、記録データのイレース(イレース)の過程で、FG(Floating Gate)から酸化絶縁膜を貫通して電子が取り出される。 In the nonvolatile semiconductor memory, electrons are transmitted to the floating gate through the oxide insulating film in the process of data storage (programming) in the internal cell. Further, in the process of erasing the recorded data, electrons are extracted from the FG (Floating Gate) through the oxide insulating film.
こうしたデータ記憶の仕組みを有する不揮発性半導体メモリは、プログラムとイレースの処理毎に酸化絶縁膜への負荷が生じる。そして、この負荷が繰り返されることで酸化絶縁膜内に複数の電子トラップ及び正孔トラップが生成される。 In a nonvolatile semiconductor memory having such a data storage mechanism, a load is applied to the oxide insulating film every time a program and erase process is performed. By repeating this load, a plurality of electron traps and hole traps are generated in the oxide insulating film.
不揮発性半導体メモリは、FG内の電荷量(電子の数)により変動する閾値電圧を測定し、記録データを判別する。このため、前述のとおり酸化絶縁膜内に電子トラップ及び正孔トラップが生成されると、この電子トラップ及び正孔トラップに電子が入り込み電圧が生じ、この電圧がFGの閾値電圧を変動させ記録データの正確な判別を困難とする。 The nonvolatile semiconductor memory determines the recording data by measuring a threshold voltage that varies depending on the amount of charge (number of electrons) in the FG. For this reason, as described above, when an electron trap and a hole trap are generated in the oxide insulating film, electrons enter the electron trap and the hole trap to generate a voltage, and this voltage fluctuates the threshold voltage of the FG to record data. It is difficult to accurately discriminate.
こうした電子トラップ及び正孔トラップによる閾値電圧の変動は、プログラム、及びイレースの累積実行回数と制御間隔に依存することが知られている。また、閾値電圧の変動による、データ保持の時間特性(以下、リテンション特性と記す)の変化についても知られている。 It is known that the fluctuation of the threshold voltage due to such electron trap and hole trap depends on the program, the cumulative number of erase executions, and the control interval. Also known is a change in time characteristics of data retention (hereinafter referred to as retention characteristics) due to fluctuations in threshold voltage.
FGに蓄えられた電荷量は、時間経過により変化するため、不揮発性半導体メモリのデータ保持期間は限られている。加えて前述の電子トラップ及び正孔トラップによる閾値電圧が変動するため、データの保持期間は、更に短縮される。 Since the amount of charge stored in the FG changes with time, the data retention period of the nonvolatile semiconductor memory is limited. In addition, since the threshold voltage due to the aforementioned electron trap and hole trap varies, the data retention period is further shortened.
不揮発性半導体メモリを記憶媒体とする半導体記憶装置(以下、記憶装置と記す)は、装置仕様として定めたデータ保持期間の基準を満たす必要がある。記憶装置は、データのプログラムとイレース回数等から酸化絶縁膜の劣化具合を予測し、搭載した不揮発性半導体メモリの特定領域のデータ保持期間が、基準を満たないと予測される場合、この記憶領域を使用不可とする。 A semiconductor storage device using a nonvolatile semiconductor memory as a storage medium (hereinafter referred to as a storage device) needs to satisfy a data retention period standard defined as a device specification. The storage device predicts the deterioration degree of the oxide insulating film from the data program, the number of erases, and the like, and when the data retention period of the specific region of the mounted nonvolatile semiconductor memory is predicted not to meet the standard, this storage region Is disabled.
記憶装置は、こうした使用不可領域が生じても稼働し続けられるようにするため、一般に装置の総記憶データ量以上の予備の記憶領域を搭載し、この予備の記憶領域を前述の使用不可と判断した領域の代替えとして割り当て、常に一定の記憶領域を維持するように制御する。しかし、この割り当てる予備の領域が枯渇したときには、記憶装置は、データを新たに記録する能力を失ったとして停止する。 In order for the storage device to continue to operate even if such an unusable area occurs, generally a spare storage area larger than the total storage data amount of the apparatus is mounted, and this spare storage area is determined to be unusable as described above. The storage area is assigned as a replacement for the designated area, and control is performed so that a constant storage area is always maintained. However, when the reserved spare area is depleted, the storage device stops because it loses the ability to newly record data.
従って、記憶装置の長寿命化を実現させるには、電子トラップ及び正孔トラップによる閾値電圧の変動を抑え、記憶領域のデータ保持期間が短縮されるのを防止する必要がある。 Therefore, in order to realize the long life of the storage device, it is necessary to suppress the fluctuation of the threshold voltage due to the electron trap and the hole trap and prevent the data retention period of the storage area from being shortened.
こうした電子トラップ及び正孔トラップの影響を軽減する制御を開示する文献として、例えば特許文献1がある。特許文献1には、リテンション特性の悪化した領域を一定期間不使用とし、電子トラップおよび正孔トラップを減少させ、再利用する記憶装置が開示されている(特許文献1)。
As a document disclosing control for reducing the influence of such electron traps and hole traps, for example, there is
例えば、不揮発性半導体メモリ(典型的にはフラッシュメモリ)は、複数のブロックより構成され、このブロックを最小イレース単位としている。そして、前述した通り、イレースとプログラムの繰り返しの処理により酸化絶縁膜に電子トラップ及び正孔トラップが生成されるため、ブロック毎にイレース回数の上限が設けられている。 For example, a nonvolatile semiconductor memory (typically a flash memory) is composed of a plurality of blocks, and this block is the minimum erase unit. As described above, since an electron trap and a hole trap are generated in the oxide insulating film by the repeated processing of erasing and programming, an upper limit of the number of erasing is provided for each block.
一般的に、半導体メモリは、上書きが不可であり、プログラム済みの領域についてイレースが実施されなければ、その領域に再度プログラムすることができない。従って、データがプログラムされているブロックに新たなデータをプログラムする際、必ずイレースがプログラムとセットで実施される。そのため、記憶装置は、ブロックについてイレースを実施した回数(以下、ブロックイレース回数と記す)をブロック別に管理し、ブロックイレース回数の上限を超えたブロックについては、データ保持期間(具体的には、データを信頼性を持って保持できる期間)を超えたとして、そのブロックを使用不可とし予備ブロックを代替えとして割り当てる。 In general, the semiconductor memory cannot be overwritten, and if the programmed area is not erased, the area cannot be reprogrammed. Therefore, when new data is programmed in a block in which data is programmed, erasure is always performed in combination with the program. Therefore, the storage device manages the number of times that the block has been erased (hereinafter referred to as the block erase number) for each block, and the data retention period (specifically, the data retention period for the block exceeding the upper limit of the block erase number). Is exceeded, the block is made unusable and a spare block is assigned as a substitute.
特定のブロック群に対して、イレースとプログラムが集中した場合、短期間でブロックイレース回数が上限に達し使用不可となるブロックが多数生じてしまう可能性がある。そして、それらのブロックには、予備ブロックを割り当てる必要があるため、予備ブロックが早急に枯渇してしまう。つまり、特定のブロック群へのアクセス集中により、予備ブロックの枯渇が早まり、記憶装置の寿命が短縮してしまうことがある。 When erase and program are concentrated on a specific block group, there is a possibility that many blocks that cannot be used because the number of block erases reaches the upper limit in a short period of time. Since it is necessary to allocate spare blocks to these blocks, the spare blocks are quickly depleted. That is, due to concentration of access to a specific block group, the spare block may be depleted earlier and the life of the storage device may be shortened.
記憶装置は、このような特定のブロック群に対してプログラムとアクセスが集中するのを防止するため、ブロックへのプログラム処理を分散させ、ブロック毎のイレース回数を平準化する処理を実施する(以下、この処理をウェアレベリングと記す)。ウェアレベリングは、記憶装置に搭載するブロックのイレース回数の平均値に対して、より少ないイレース回数のブロックへ優先的にデータをプログラムするものである。 In order to prevent the program and access from being concentrated on such a specific group of blocks, the storage device distributes the program processing to the blocks and performs a process of leveling the number of erases for each block (hereinafter referred to as the block number). This process is referred to as wear leveling). In wear leveling, data is preferentially programmed to a block having a smaller number of erases than the average value of the number of erases of the blocks mounted on the storage device.
このため、記憶装置が搭載するブロックのブロックイレース回数の平均値がX(Xは1以上の整数)であり、記憶装置が搭載するブロックの中にブロックイレース回数がY(Yは、Y<Xを満たす整数)であるブロック(以下、対象ブロックと記す)が存在する場合、この対象ブロックが優先的に使用されることになる。このため、この対象ブロックには、プログラムとイレースが短期間に繰り返される可能性が生じる。 For this reason, the average value of the number of block erases of the blocks mounted on the storage device is X (X is an integer equal to or greater than 1), and the number of block erases in the blocks mounted on the storage device is Y (Y is Y <X If there is a block (hereinafter referred to as a target block) that is an integer satisfying this, this target block is preferentially used. Therefore, there is a possibility that the program and erase are repeated in this target block in a short time.
一般に、ブロックに対するイレースからそのブロックにデータをプログラムするまでの時間(以下、EP間隔と記す)が短い方がデータ保持期間は長い。 In general, the shorter the time from erasing a block to programming data in that block (hereinafter referred to as the EP interval), the longer the data retention period.
このため、或るブロックのブロックイレース回数が少なくても、そのブロックが優先的に繰り返し使用されることにより、そのブロックについてプログラムからイレースまでの時間(以下、PE間隔と記す)が短くなることがある。故に、そのブロックのブロックイレース回数が上限値に達していなくても、データ保持期間が経過してしまっているブロックが短時間で多数生じる可能性がある。これにより、記憶装置の寿命が短縮されてしまう可能性が高まる。 For this reason, even if the number of block erases of a certain block is small, the time from the program to the erase (hereinafter referred to as the PE interval) for that block may be shortened by preferentially repeatedly using that block. is there. Therefore, even if the number of block erases of the block does not reach the upper limit value, a large number of blocks in which the data holding period has elapsed may occur in a short time. This increases the possibility of shortening the life of the storage device.
つまり、ブロックイレース回数をカウントする、及びウェアレベリングだけでは、記憶装置の信頼性を維持することが困難となる場合がある。 That is, it may be difficult to maintain the reliability of the storage device only by counting the number of block erasures and wear leveling alone.
従って、本発明の目的は、不揮発半導体メモリを記憶媒体とした半導体記憶装置の高信頼化と長寿命化を実現することにある。 Accordingly, an object of the present invention is to realize high reliability and long life of a semiconductor memory device using a nonvolatile semiconductor memory as a storage medium.
半導体記憶装置は、ブロックにデータを最近プログラムした時刻である最近プログラム時刻と、ブロックに対してイレース処理を最近行った時刻である最近イレース時刻との少なくとも一方を表す情報を不揮発性半導体メモリの各ブロックについて含んだ管理情報を記憶している。半導体記憶装置は、(b1)ブロックの最近プログラム時刻と最近イレース時刻の少なくとも一方を基に、そのブロックにデータをプログラムするタイミングを制御する、及び/又は、(b2)ブロックの最近プログラム時刻を基に、そのブロックに対してイレース処理を行うタイミングを制御する。 The semiconductor memory device stores information representing at least one of the latest program time, which is the time when data is recently programmed in the block, and the latest erase time, which is the time when the erase process was recently performed on the block, in each nonvolatile semiconductor memory. Stores management information about the block. The semiconductor memory device controls (b1) the timing of programming data in the block based on at least one of the latest program time and the latest erase time of the block, and / or (b2) based on the latest program time of the block. In addition, the timing for performing the erase process on the block is controlled.
例えば、半導体記憶装置は、ウェアレベリングによるイレース回数の平準化を実施しながらも半導体記憶装置の通常処理であるプログラムとイレースの各処理の時間的間隔を制御し、最小時間を確保して良い。 For example, the semiconductor memory device may secure the minimum time by controlling the time interval between the program and erase processes, which are normal processes of the semiconductor memory device, while leveling the number of erases by wear leveling.
また、例えば、半導体記憶装置は、各ブロックに対し、プログラムとイレースの各処理の時間的間隔を上位装置(例えばホスト計算機)からの要求に対して可能な限り長く確保するように制御して良い。 Further, for example, the semiconductor memory device may control each block so that the time interval between each processing of the program and the erase is as long as possible in response to a request from the host device (for example, a host computer). .
また、例えば、データリテンション特性の悪いブロックを検出した際には、半導体記憶装置は、そのブロックの使用頻度を下げるように制御して良い。これにより、電子トラップおよび正孔トラップの減少が期待され、故に、リテンション特性の回復が期待される。 Further, for example, when a block with poor data retention characteristics is detected, the semiconductor memory device may be controlled to reduce the frequency of use of the block. As a result, a decrease in electron traps and hole traps is expected, and therefore recovery of retention characteristics is expected.
本発明によれば、半導体記憶装置の高信頼化と長寿命化を図ることができる。 According to the present invention, high reliability and long life of a semiconductor memory device can be achieved.
以下、本発明の幾つかの実施例を説明する。 Several embodiments of the present invention will be described below.
なお、以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。 In the following description, various types of information may be described using the expression “xxx table”, but the various types of information may be expressed using a data structure other than a table. In order to show that it does not depend on the data structure, the “xxx table” can be called “xxx information”.
また、以下の説明では、要素を特定するための識別情報として、番号が使用されるが、識別情報として、番号に代えて又は加えて他種の識別情報(例えば英文字)が使用されて良い。 In the following description, a number is used as identification information for specifying an element, but other types of identification information (for example, English characters) may be used as the identification information instead of or in addition to the number. .
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイス装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされても良い。プログラムを主語として説明された処理は、そのプロセッサを有する装置(例えば、記憶制御装置、記憶装置)が行う処理としても良い。また、プロセッサは、CPUのようなマイクロプロセッサに代えて又は加えて、処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各装置にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであっても良い。 In the following description, the process may be described using “program” as a subject. However, a program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined process is appropriately performed. Since processing is performed using a storage resource (for example, a memory) and / or a communication interface device (for example, a communication port), the subject of processing may be a processor. The processing described with the program as the subject may be processing performed by a device (for example, a storage control device or a storage device) having the processor. The processor may include a hardware circuit that performs part or all of the processing instead of or in addition to a microprocessor such as a CPU. The computer program may be installed in each device from a program source. The program source may be, for example, a program distribution server or a computer-readable storage medium.
また、管理計算機は、一以上の計算機で構成されて良い。例えば、管理計算機が情報を表示する場合、或いは、管理計算機が表示用情報を遠隔の計算機に送信する場合、一つの計算機が管理計算機である。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んで良い)が、管理計算機である。 The management computer may be composed of one or more computers. For example, when the management computer displays information or when the management computer transmits display information to a remote computer, one computer is the management computer. Further, for example, when a function equivalent to that of the management computer is realized by a plurality of computers, the plurality of computers (which may include a display computer when the display computer performs display) are management computers. .
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号のみを用いることとし、同種の要素を区別して説明する場合には、参照符号(共通符号と個別符号の組合せ)を用いることがある。 Further, in the following description, in the case of explaining without distinguishing the same type of elements, only the common code among the reference codes is used, and in the case of distinguishing and explaining the same kind of elements, the reference code (common code) is used. And a combination of individual codes).
図1は、本発明の第1実施例に係る半導体記憶装置100を含んだ計算機システム1の構成例を示す。なお、半導体メモリは典型的にはFM(Flash Memory)であるため、以下、半導体記憶装置を「FMモジュール」と言う。
FIG. 1 shows a configuration example of a
計算機システム1は、ホスト計算機10と、管理計算機11と、半導体記憶装置(以下、FM(Flash Memory)モジュールと言う)100とを有する。
The
FMモジュール100は、内蔵する第1のFE−IF(Front End-Interface)111を介してホスト計算機10に接続され、内蔵する第2のFE−IFを介して111を介して管理計算機11に接続される。FMモジュール100とホスト計算機10間の通信のプロトコルと、FMモジュール100と管理計算機11間の通信のプロトコルは、同じであっても異なっていても良い。
The
ホスト計算機10は、例えば、業務システムの中核をなすコンピュータ、ファイルサーバー、もしくは多数のFMモジュール100が接続されるストレージ装置である。
The
ホスト計算機10は、例えば、図示省略の、プロセッサ、メモリ、ネットワークインターフェース、及びローカル入出力用のデバイス等のハードウェア資源を備えている。また、ホスト計算機10は、デバイスドライバ、OS(Operating System)、管理プログラム、及びアプリケーションプログラム等のソフトウェア資源も備えている。
The
ホスト計算機10のプロセッサが各種プログラム(ソフトウェア資源)を実行することができる。例えば、ホスト計算機10のプロセッサがアプリケーションプログラムを実行することで、ホスト計算機10が、FMモジュール100との通信を行う、及びFMモジュール100に対するデータのリード/ライトコマンドを発行することができる。また、例えば、ホスト計算機10のプロセッサが管理用プログラムを実行することで、ホスト計算機10が、FMモジュール100の使用状況、及び処理状況等の管理情報を取得することができる。また、ホスト計算機10は、FMモジュール100の管理単位、制御方法の指定、及び制御方法の変更をすることができる。
The processor of the
管理計算機11は、計算機システム1全体を管理することができる。管理計算機11は、例えば、図示省略の、キーボードやマウスなどの入力装置、プロセッサ、液晶ディスプレイ装置などの表示装置、及びメモリ等の記憶資源を備えている。その記憶資源には、各種プログラムが記憶され、このプログラムがプロセッサにより実行され、各種機能が実現される。
The
FMモジュール100は、FMコントローラ110と、複数個(例えば32個)の不揮発性半導体メモリチップ(以下、単にメモリチップと言う)120を備える。複数のメモリチップ120を基に複数のRAIDグループが構成されても良い。RAIDグループは、2以上のメモリチップ120で構成されて良い。RAIDグループを基に、論理ボリュームが構成されて良い。論理ボリュームは、ホスト計算機10に提供されても良いし、ホスト計算機10に提供されない種類の論理ボリューム(例えばプールを構成する論理ボリュームであるプールボリューム)であっても良い。プールボリュームは、2以上の領域(以下、実領域)に分割されて良い。実領域は、Thin Provisoningに従う仮想的な論理ボリュームを構成する仮想領域に割り当てられて良い。プールを構成する複数のプールボリュームのうちの少なくとも1つは、FMモジュール100に接続されている外部のストレージ装置(図示せず)の論理ボリュームがマッピングされた仮想的な論理ボリュームであっても良い。
The
FMコントローラ110は、本実施例では、FMモジュール100に内蔵されたコントローラであるが、FMモジュール100の外部に存在する計算機であっても良い。FMコントローラ110は、FE−IF(Front End-Interface)111と、データ転送を相互に行うスイッチ112と、記憶資源(例えば、データバッファ113と、RAM(Random Access Memory)114)と、プロセッサ115と、FM−IF(Flash Memory-Interface)116とを備えている。
In this embodiment, the
スイッチ112は、プロセッサ115、RAM114、データバッファ113、FE−IF111、及びFM−IF116を接続し、データをアドレス又はIDによってルーティングし転送する。
The
FE−IF111は、スイッチ112を介してFMコントローラ110の各構成要素と、ホスト計算機10及び管理計算機11とを接続する。FE−IF111は、ホスト計算機10から、リード/ライトコマンド、及び対象の論理的な格納位置を指定するLBA(Logical Block Address)を受信する。ライトコマンドをホスト計算機10から受けたFE−IF111は、ホスト計算機10からライトデータも受信する。また、FE−IF111は、ホスト計算機10及び管理計算機11から、FMモジュール100に対する制御用のコマンド等を受領し、そのコマンドに応じてFMモジュール100を制御する。また、FE−IF111は、FMモジュール100の処理状況、利用状況、及び現在の設定値等を、ホスト計算機10及び管理計算機11に通知する。
The FE-IF 111 connects each component of the
データバッファ113は、FMコントローラ110でのデータ転送処理途中の一時的なデータを格納する。
The
RAM114は、具体的にはDRAM(Dynamic Random Access Memory)などの揮発性メモリである。RAM114は、FMモジュール100で用いられるメモリチップ120の管理情報1140、及び各DMA(Direct Memory Access)が用いる転送制御情報を含んだ転送リスト等を格納する。なお、RAM114は、データを格納するデータバッファ113の機能の一部又は全てを含み、データの一時的な格納先として用いることもできる。
Specifically, the
プロセッサ115は、スイッチ112を介してFMコントローラ110の各構成要素と接続され、RAM114に記憶されたプログラム及び管理情報を基に、FMコントローラ110の全体を制御する。また、プロセッサ115は、定期的な情報取得、及び割り込み受信機能等により、FMコントローラ110の全体を監視する。
The
FM−IF116は、複数バス(例えば16本)によってメモリチップ120と接続される。各バスには複数(例えば2本)のメモリチップ120を接続される。各バスに接続された各メモリは、CE(Chip Enable)信号に基づき独立して制御される。
The FM-
FM−IF116は、プロセッサ115から指示されるリード/ライトコマンドに応じて処理する。このときFM−IF116は、コマンドの対象を物理アドレス(以下PBA(Physical Block Address)によって指示される。
The FM-
PBAを受領したFM−IF116は、このPBAから必要なメモリチップ120(ブロック、ページ)を算出し、メモリチップ120に対してブロック、及びページを指定して、リード/ライトコマンドを処理する。
Receiving the PBA, the FM-
FM−IF116は、リード処理時には、メモリチップ120からデータをリードし、データバッファ113に転送する。また、FM−IF116は、ライト処理時には、ライトデータをデータバッファ113から呼び出し、メモリチップ120にライトする。
The FM-
また、FM−IF116は、ECC(Error Correcting Code)生成回路、ECCによるデータ損失検出回路、及びECC訂正回路を有している。FM−IF116は、ライト処理時にはデータに対してECCを付加してライトする。また、FM−IF116は、データ呼び出し時にはECCによるデータ損失検出回路によって、メモリチップ120からの呼び出しデータを検査する。データ損失が検出された際には、FM−IF116は、ECC訂正回路によってデータ訂正を行い、訂正bit数をプロセッサ115に通知する為、訂正bit数をRAM114に記憶する。
Further, the FM-
以上説明した、FE−IF111、スイッチ112、データバッファ113、RAM114、プロセッサ115、及びFM−IF116は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)として、一つの半導体素子内で構成してもよいし、複数の個別専用IC(Integrated Circuit)を相互に接続した構成であってもよい。
The FE-IF 111, the
図2は、メモリチップ120の構成例を示す。
FIG. 2 shows a configuration example of the
メモリチップ120は、複数(例えば、4096個)のブロック202で構成される。各ブロック202は、複数のページで構成される。メモリチップ120は、ブロック単位でイレース処理が行われ、ページ単位でデータのリード/プログラムが行われる。メモリチップ120は、例えば、ブロック単位でデータのイレースが可能なNAND型のフラッシュメモリである。フラッシュメモリは、NAND型でなくて良い(例えばNOR型でも良い)。
The
メモリチップ120は、レジスタ201を備える。レジスタ201は、ページサイズ(例えば4KB+付加ECC用の予備領域)以上の記憶容量を持つレジスタである。
The
メモリチップ120は、FM−IF116からのリード/ライトコマンドの指示に従って処理する。
The
ライト処理において、メモリチップ120は、まず、FM−IF116より、ライトコマンド及びライト先情報(例えば、ライトコマンドの対象ブロック、ページ番号、及びページ内のプログラム開始位置を表す情報)を受信する。
In the write process, first, the
次に、メモリチップ120は、FM−IF116より転送されるライトデータを、ページ内のプログラム開始位置(アドレス)順に、レジスタ201に格納する。その後、レジスタ201は、FM−IF116からデータ転送完了のコマンドを受領すると、レジスタ201に格納されたデータを、指定されたメモリチップ120(ページ)にライト(プログラム)する。
Next, the
リード処理において、メモリチップ120は、まず、FM−IF116からリードコマンド及びリード元情報(例えば、リードコマンドの対象のブロック、及びページ番号)を受信する。次に、メモリチップ120は、指定されたブロック202のページに格納されたデータをリードし、レジスタ201に格納する。その後、レジスタ201は、レジスタ201に格納されたデータを、FM−IF116に対して転送する。
In the read process, the
図3は、ブロック202の内部構成例を示す。
FIG. 3 shows an internal configuration example of the
ブロック202は、複数(例えば128ページ)のページ301に分かれており、データの読み出し、及びデータのライトは、ページ単位でのみ処理可能である。また、ブロック202内のページ301を書き込む順序は規定されており、図では、ページ1から順番に連続的にデータが書き込まれる。
The
FMモジュール100では、ホスト計算機10が指定するLBAと、FMモジュール100の内部における物理的な記憶位置を指定するアドレスPBA(Physical Block Address)とを、それぞれ別のアドレス体系によって管理すると共に、LBAとPBAとの対応関係をテーブル情報として管理する(図5参照)。
In the
FMモジュール100では、また、ライト済みページへの上書きを行うことができず、そのページが属するブロックに対してイレース処理を実施しなければ、再びそのページにライトすることはできない。従って、データを更新する際には、更新前にLBAに対応付けられていたページを新たなページに変更し、その新たなページにデータをライトする。ホスト計算機10は、このように、LBAに新たなページが対応付けられたことは分からない。なお、更新前にLBAに対応付けられていたページは無効ページとなる。
Further, the
また、PBAはFMモジュール100の任意のページを一意に指定でき、少なくとも1ブロック分のデータサイズ範囲内はページ番号順にアドレスが連続するアドレス体系である。例えば、あるブロックの3ページ目を指定するPBAに対して1ページ分のデータサイズをインクリメントすると4ページ目を指定するPBAとなる。
The PBA can uniquely specify an arbitrary page of the
図4は、ページ301に格納されるデータの例を示す。
FIG. 4 shows an example of data stored in the
ページ301は、一定bit数(例えば4KB)のデータを記憶する。ページ301には、データ401に加えてFM−IF116で付加されたECC(Error Correcting Code)402を格納している。ECCは、保護するデータ401(以下、保護データと言う)に対して隣接して記憶される。データ1 401と、データ1 401に付加されたECC402を1セットとして、ECC CW(ECC CodeWord)を構成するように記憶される。
The
なお、図4には1ページにECC CWを4個格納した構成について示したが、ページサイズや、ECCの性能(訂正可能bit数)に合わせて、任意の数とすることができる。
また、上記構成においてデータ損失障害とは、1つのECC CW当たりの障害ビット数が、そのECC CWを構成するECCの訂正可能なbit数を超過した際に生じる現象である。
Although FIG. 4 shows a configuration in which four ECC CWs are stored in one page, any number can be used according to the page size and ECC performance (number of correctable bits).
In the above configuration, the data loss failure is a phenomenon that occurs when the number of failed bits per ECC CW exceeds the number of bits that can be corrected by the ECC constituting the ECC CW.
以上、FMモジュール100の構成、及びFMモジュール100のデータの記憶構成について説明した。
The configuration of the
図5は、アドレス変換テーブル500の一例を示す。 FIG. 5 shows an example of the address conversion table 500.
アドレス変換テーブル500は、FMモジュール100のRAM114に記憶された管理情報1140のうちの1つである。
The address conversion table 500 is one of
アドレス変換テーブル500は、ページ(図5の例では4KB)毎に、LBA501と、PBA502とを対応付けて管理する。
The address conversion table 500 manages the
LBA501は、1ページに記憶されるデータの先頭アドレスを示す。PBA502は、メモリチップ120を構成するページを一意に特定するアドレスを示す。なお、PBA502が対応付けられていない場合、LBA501には、未割当であることを示す情報が格納される。
本実施例では、FMコントローラ110は、LBA501に対応するページに新たなデータが書かれる度に、そのLBA501に、そのLBA501に対応付けられているPBA502に代えて新たなPBA502を対応付ける。FMコントローラ110は、ホスト計算機10から指定されたLBA501に新たなPBA502を対応付けて、アドレス変換テーブル500に登録する。なお、図5では、ページサイズ単位でLBA501とPBAと502とを対応付けた例を示したが、本発明はこの単位に限定されるものではない。例えば、LBA501とPBA502とを、ブロックサイズの単位で対応付けることもできる。
In this embodiment, every time new data is written on a page corresponding to the
続いて、本実施例における特徴的な時間制御を実施する為の管理情報について説明する。 Next, management information for performing characteristic time control in the present embodiment will be described.
図6は、ブロック管理テーブル600の一例を示す。 FIG. 6 shows an example of the block management table 600.
ブロック管理テーブル600は、FMモジュール100のRAM114に記憶された管理情報のうちの1つである
The block management table 600 is one of the management information stored in the
ブロック管理テーブル600は、ブロック(図6の例では1MB)202毎に、PBA Group601、チップ番号602、ブロック番号603、イレース回数604、前回イレース日時605、Firstページプログラム日時606、Lastページプログラム日時607、最終プログラムページ608、及び無効ページ数609を対応付けて管理する。
The block management table 600 includes a
PBA Group601は、ブロック202(図2参照)の先頭アドレス(先頭PBA)を示す。
チップ番号602は、ブロック202を有するメモリチップ120の番号を示す。本実施例においては、図6に示すように、アドレスが早いPBA Group601から順番に、アドレスの早いチップ番号602を順番に対応付けている。
The
ブロック番号603は、ブロックの番号を示す。本実施例においては、図6に示すように、アドレスが早いPBA Group601から順番に、アドレスの早いブロック番号603を順番に対応付けている。
A
イレース回数604は、Block番号603により特定されるブロックに実施されたイレース処理の回数を示す。ここでイレース処理とは、ブロック202に存在する全てのデータをイレースすること、及び、ブロック202にデータが存在しなくてもブロック202内のデータを再イレースすることを示す。本実施例においては、イレース処理が実施される度に、イレース回数604が1ずつインクリメントされる。
The number of
前回イレース日時605は、ブロック番号603により特定されるブロックに対してイレース処理が最近実施された日時を示す。本実施例においては、ブロックに対してイレース処理をした時に、そのイレース処理の日時が前回イレース日時605として登録される。
The previous erase date and
Firstページプログラム日時606は、ブロック番号603により特定されるブロックの先頭ページに対してデータがプログラムされた日時を示す。ここで「プログラム」とは、レジスタ201からブロック202(ページ301)にデータが書き込まれることを示す。本実施例においては、先頭ページにデータがプログラムされる時に、そのプログラムの日時が、Firstページプログラム日時606として登録される。なお、先頭ページに対してプログラムが実施されていないブロックには「全ページイレース状態」、又は、「未書き込み」であることを示す値が、Firstページプログラム日時606に登録される。以後、ホスト計算機10からFMモジュール100にデータを書き込むことを「ライト」と言い、FMモジュール100内においてデータを書き込むことを「プログラム」と言う。
The First page program date and
Lastページプログラム日時607は、ブロック番号603により特定されるブロック202の最終ページにデータがプログラムされた日時を示す。本実施例においては、最終ページにデータがプログラムされる度に、そのプログラム時の日時がLastページプログラム日時607として登録される。なお、最終ページへのプログラムが実施されていないブロック202に関しては、ブロック内の全ページへの書き込みが未完了であることを示す値が、Lastページプログラム日時607として登録される。
The Last page program date and
最終プログラムページ608は、ブロック番号603により特定されるブロックにおいて、現時点までにプログラムが終了したページの番号を示す。本実施例においては、この最終プログラムページ608の値を1つインクリメントすることで、次のプログラム先のページ301が特定される。なお、ブロック202内の全ページ301にデータがプログラムされている場合、最終プログラムページ608には、最終ページの番号が登録される。なお、そのブロック202には、イレース処理がされるまでデータをプログラムすることができない。
The
無効ページ数609は、ブロック番号603により特定されるブロック202のうちの無効ページ(LBA501に対応づけられていないページ)の数を示す。
The number of
メモリチップ120は、上書き更新不可の為、ホスト計算機10がLBA501に対してデータ更新を行う際、LBA501に対して新たなPBA502が対応付けられる(図5参照)。そして、この新たに対応付けられたPBA502に対応するページ301に、データがプログラムされる。このため、更新前のデータをプログラムしたページ301は、LBA501との対応付けを失い、ホスト計算機10から参照されることのない無効ページとなる。本実施例では、こうした無効ページの数がブロック202毎に管理され、この無効ページの数に基づいて、後述するリクラメーションの対象とするブロック202が選定される。
Since the
以上が、ブロック管理テーブル600についての説明である。なお、本実施例では、図6に示す全ての情報を用いる例について説明するが、ブロック管理テーブル600は、必ずしも図6に示す全種類の情報により構築されている必要はない。メモリチップ120への命令間隔制御における制御対象として「プログラムとイレースの間の時間」、「イレースとプログラムの間の時間」、「イレースと次回イレースの間の時間」、及び「プログラムと次回プログラムの間の時間」等複数が考えられるが、このうち制御対象とする時間により、図6に示す各情報欄の一部のみにより構築されるとしてもよい。例えば、制御対象を「プログラムとイレースの間の時間」とした場合、ブロック管理テーブル600は、Lastページプログラム日時607のみにより構築されるとしてもよい。また、テーブル600のサイズは大きくなるが、ページ毎に、プログラム日時を表す情報がテーブル600に登録されても良い。そして、PE間隔或いはEP間隔について、プログラム日時は、必ずしも先頭又は最終のページのプログラム日時ではなく、先頭及び最終のページ以外のプログラムの日時が、PE間隔或いはEP間隔についてのプログラム日時として採用されても良い。
This completes the description of the block management table 600. In the present embodiment, an example in which all information shown in FIG. 6 is used will be described. However, the block management table 600 does not necessarily have to be constructed with all types of information shown in FIG. As control objects in the control of the interval between instructions to the
また、ブロック管理テーブル600の各種情報(601〜609)は、必ずしも、RAM113に記録されなくてもよい。例えば、PBA Group601、チップ番号602、ブロック番号603、イレース回数604、前回イレース日時605、Firstページプログラム日時606、及びLastページプログラム日時607については、行ごとに、この行に含まれているブロック番号603により特定されるブロック202の最終ページに記録するとしてもよい。
The various information (601 to 609) of the block management table 600 is not necessarily recorded in the
1つのブロック202(1つのページ301)について、データがプログラムされてからイレースされるまでの時間(PE間隔)は、長い方が良い。本実施例では、FMコントローラ110は、あるブロック202にプログラムされているデータをイレースしようとするとき、このイレース処理の対象のブロック202を構成するページ301のうち、最後のページ301にデータがプログラムされた時間である「Lastページプログラム日時607」から現時点までの時間を検出し、この時間が、ある閾値(以下、PE閾値)以上である場合、イレース処理の対象のブロック202にプログラムされているデータをイレースする。このようにすると、ブロック202を構成する全ページ301のPE間隔を、PE閾値以上となるように制御することができる。それは、最後のページ301よりも前のページ301は、データがプログラムされてから現時点までの時間が、最後のページ301よりも必ず長くなるからである。つまり、ブロック202について最後のページ301のPE間隔が、そのブロック202について最短のPE間隔となり、そのブロック202について最初のページ301のPE間隔が、そのブロック202について最長のPE間隔となる。
For one block 202 (one page 301), a longer time (PE interval) from when data is programmed until it is erased is better. In this embodiment, when the
ページ301(又はセル:ページ301を構成する単位)毎に、プログラム日時を管理することが望ましいが、管理情報が膨大となってしまう。ブロック202を構成する全てのページのプログラム日時を管理するのではなく、本実施例の様に、最終ページについてプログラム日時を管理し、これに基づきPE間隔を算出することで、管理情報1140のサイズが膨大となるのを防止しつつ、ブロック202を構成する全てのページについてPE間隔をPE閾値以上に制御することができる。
Although it is desirable to manage the program date and time for each page 301 (or cell: a unit constituting the page 301), the management information becomes enormous. Instead of managing the program date and time of all the pages constituting the
また、ページ301は、データがイレースされてからプログラムされるまでの時間(EP間隔)は、短い方が良い。本実施例では、データをプログラムしようとしているブロック202(プログラム対象のブロック)の「前回Erase日時605」から現時点までの時間を検出し、この時間が、ある閾値(以下、EP閾値)以下である場合、プログラム対象のブロック202にデータをプログラムする。これにより、EP間隔をEP閾値以下に制御することができる。
The
なお、EP間隔(「前回Erase日時605」から現時点までの時間)がEP閾値を越えているブロック202がある場合、FMコントローラ110は、そのブロック202にデータがプログラムされていなくても、そのブロック202に対してイレース処理を実行する。これにより、「前回Erase日時605」が現在日時に更新されるので、EP間隔が初期値(例えばゼロ)にリセットされる。
When there is a
図7は、ウェアレベリング管理キュー700の一例を示す。
FIG. 7 shows an example of the wear
ウェアレベリング管理キュー700は、RAM114に記憶された管理情報の1つである。ウェアレベリング管理キュー700は、ブロック202(PBA Group)のイレース回数を一定数毎にレベル分けにより管理する。ウェアレベリング管理キュー700は、イレース回数範囲701と、PBA Group702とを関連付けて管理する。
The wear
イレース回数範囲701は、イレース回数の範囲(イレース回数の上限及び下限の少なくとも一方)を示す。図7では、FMモジュール100に搭載された全ブロック202のイレース回数の統計(例えば平均値)に基づき、5つのレベルに分けた例が示されている。つまり、イレース回数範囲は、FMモジュール100に搭載された全ブロック202のイレース回数の平均値によって異なる。イレース回数範囲は、定期的に又は不定期的に更新されて良い。
The erase
図7では、例えば、最もイレース回数の少ないレベル(イレース回数範囲)は、平均値より201回以上イレース回数の少ない範囲であり、以後、イレース回数:200回毎にイレース範囲が区切られている。ブロックのイレース回数を平準化するウェアレベリングでは、イレース回数の少ないブロック群から優先してブロックを利用することで(なるべく小さいレベルに属するブロックを優先的に利用することで)、イレース回数の平準化を実現する。 In FIG. 7, for example, the level with the smallest number of erases (erase number range) is a range where the number of erases is less than 201 times the average value, and thereafter, the erase range is divided every 200 times. In wear leveling that equalizes the number of erases of a block, the block is preferentially used from a block group with a small number of erases (by preferentially using blocks belonging to the smallest possible level), thereby equalizing the number of erases. Is realized.
PBA Group702は、イレース回数範囲701に属するブロック202の先頭アドレスを示す。
PBA Group702は、FIFO(first In First Out)型のキューとして登録されており、キューの最後尾(図7の例では右端)に新たにPBA Group702が登録される。そして、ブロック利用時には、時系列的に最も前に登録されたブロックが使用され、先に登録された全ブロックが利用されるまで、キューの最後尾に登録されたブロックは選択されない。
The
なお、本実施例では、図7に示すイレース回数を200回毎に5段階にレベル分けする例について示したが、本発明はこのレベル分けに限定されるものではない。例えば、要求されるイレース回数の平準化の精度により、如何なる範囲でも分類することもできる。また、イレース回数範囲は必ずしも均等でなくて良い。例えば、或るイレース回数範囲は200回であるが、別のイレース回数範囲は150回でも良い。 In the present embodiment, the example in which the number of erases shown in FIG. 7 is divided into five levels every 200 times is shown, but the present invention is not limited to this level division. For example, any range can be classified according to the leveling accuracy of the required number of erases. Further, the erase frequency range is not necessarily uniform. For example, although a certain erase frequency range is 200 times, another erase frequency range may be 150 times.
以上が、本実施例で用いられる管理情報についての説明である。 The above is the description of the management information used in this embodiment.
図8は、RAM114に記憶されるプログラムの例を示す。
FIG. 8 shows an example of a program stored in the
RAM114には、I/O(Input/Output)プログラム1141、リクラメーションプログラム1142、及びイレースプログラム1143が記憶される。これらプログラムは、プロセッサ115により実行されることにより、各種機能が実現される。これら、プログラムの詳しい説明は、フローチャートを用いて後述する。
The
図9は、イレース処理の制御の概要を示す。 FIG. 9 shows an outline of the control of the erase process.
FMコントローラ110は、FMモジュール100が搭載する各メモリチップ120を構成するブロック202の「無効ページ数609」をチェックし、無効ページ数609が基準値より多いブロックを検出する(ステップS1)。基準値は、所定の閾値でも良いし、或いは、全ブロック202の無効ページ数の平均値であっても良い。つまり、S1では、無効ページ数が絶対的及び/又は相対的に多いブロックが検出される。ここでは、ブロック202Aが検出されたとする。
The
次に、FMコントローラ110は、検出したブロック202Aの「Lastページプログラム日時607」から現時点までの時間を算出し、その算出した時間(経過時間)がPE閾値以上であるかをチェックする(S2)。図示の例によれば、PE閾値は3h(h:時間)である。ブロック202Aは、「Lastページプログラム日時607」が「2010/4.14/9:00」である。現在時刻が「2010/4.14/13:00」であることから、現在までの時間は4hである。この場合、FMコントローラ110は、ブロック202Aは、最後にプログラムされてからの時間がPE閾値以上となっていると判断する。
Next, the
従って、FMコントローラ110は、ブロック202Aに対してイレース処理を実行する(S3)。
Therefore, the
一方、FMコントローラ110は、ブロック202Bを検出しても(S5)、ブロック202Bについてはイレース処理を行わない。すなわち、ブロック202Bの「Lastページプログラム日時607」は「2010/4.14/11:00」であり、現在時刻が「2010/4.14/13:00」であることから、現在までの時間は2hである。その時間(2h)は、PE閾値(3h)以上ではない。このため、FMコントローラ110は、ブロック202Bに対してイレース処理を実施しない(S6)。FMコントローラ110は、ブロック202Bに関しては、「Lastページプログラム日時607」から現在までの時間がPE閾値以上となった場合、ブロック202Bに対してイレース処理を実行する。
On the other hand, even if the
このように、Lastページプログラム日時607から現在日時までの時間がPE閾値以上ではないブロックに対して、イレース処理が行われない。このため、ブロックのPE間隔がPE閾値になるよう保証される。
As described above, the erase process is not performed on the blocks whose time from the last page program date and
図10は、プログラム処理の制御の概要を示す。 FIG. 10 shows an outline of control of program processing.
FMコントローラ110は、イレース処理後にデータが書き込まれていないブロック(以下、イレース済みブロック)202Cを検出する(S11)。FMコントローラ110は、そのブロック202Cの「前回イレース日時605」から現時点までの時間を算出し、算出した時間が、EP閾値以下か否かをチェックする(S12)。
The
図示の例では、EP閾値が5hである。ブロック202Cの「前回イレース日時605」が「2010/4.15/9:00」である。現在時刻が「2010/4.15/13:00」であることから、現在までの時間(経過時間)は4hである。この場合、FMコントローラ110は、ブロック202Cの「前回イレース日時605」からの時間がEP閾値以下であると判断する。この場合、FMコントローラ110は、ブロック202Cの先頭ページにデータをプログラムする(S13)。
In the illustrated example, the EP threshold is 5h. The “previous erase date and
一方、FMコントローラ110は、イレース済みブロック202Dを検出しても(S14)、ブロック202Dの先頭ページにデータをプログラムせず、ブロック202Dに対してイレース処理を行う。具体的には、ブロック202Dの「前回イレース日時605」は「2010/4.15/5:00」である。現在時刻が「2010/4.15/13:00」であることから、現在までの時間は8hである。この場合、FMコントローラ110は、ブロック202Dの「前回イレース日時605」からの時間(8h)がEP閾値を超えていると判断する(S15)。この場合、FMコントローラ110は、ブロック202Dの先頭ページにデータをプログラムせず、ブロック202Dに対してイレース処理を行う(S16)。
On the other hand, even if the
このように、「前回イレース日時605」からの時間がEP閾値を超えているイレース済みブロックの先頭ページにデータが書き込まれない。このため、EP間隔がEP閾値を超えているブロックが生じてしまうことを回避することができる。
As described above, data is not written to the first page of the erased block whose time from the “previous erase date and
以下、本実施例で行われる処理の詳細を説明する。 Details of the processing performed in this embodiment will be described below.
図11は、プログラム処理のフローの一例を示す。プロセッサ115は、例えば、I/Oプログラム1141を実行することにより、図11を参照して説明する処理を行うことができる。
FIG. 11 shows an example of a program processing flow. For example, the
FMモジュール100は、ホスト計算機10よりライト対象のデータ、及びライト対象領域を指定するLBAを含んだライトコマンドを受信する(S1101)。より具体的には、FE−IF111を介して、ライトコマンドが、ホスト計算機10からプロセッサ115に通知される。次に、プロセッサ115は、FE−IF111にライト対象のデータを、データバッファ113に書き込むよう指示する。FE−IF111は、ホスト計算機10からのライト対象のデータをデータバッファ113にプログラムする。
The
次に、プロセッサ115は、S1101にて受信したLBAに対応付けるPBAを取得する(S1102)。この処理は、本実施例の特徴的な処理であるため、詳細については後述する。
Next, the
プロセッサ115が、FM−IF116にECC(Error Correcting Code)の生成を指示する(S1103)。次に、FM−IF116は、ライト対象のデータを、データバッファ113よりECCの保護データ長単位で読み出し、FM−IF116の内部のECC生成回路により、保護データ長毎にECCを算出し、データバッファ113にプログラムする。
The
プロセッサ115は、ステップS1103にて生成したECCとS1101にて受領したライト対象のデータを、データバッファ113からメモリチップ120に転送し、プログラムを実施する(S1104)。具体的には、プロセッサ115は、FM−IF116にライト対象のデータ、及びそれに対して生成したECCを、メモリチップ120に転送し、FM−IF116にプログラムを実施するように指示する。次に、指示を受けたFM−IF116は、データバッファ113よりライト対象のデータとECCを読み出し、メモリチップ120に転送し、メモリチップ120にプログラムを指示する。メモリチップ120は、その指示に従い、データをプログラムする。データのプログラム先は、S1102で特定されたPBAに対応するページである。
The
S1101にて受領したLBAと、S1102にて取得したPBAの対応付けの為、プロセッサ115は、アドレス変換テーブル(図5参照)を更新する(S1105)。この処理により、ホスト計算機10からのLBAに対して対応付けられたPBAの取得が可能となる。具体的には、プロセッサ115が、アドレス変換テーブル500から、ライトコマンドで指定されているLBAに適合するLBA501を探索し、見つかったLBA501に対応するPBA502として、S1102にて取得したPBAを登録する。
In order to associate the LBA received in S1101 with the PBA acquired in S1102, the
プロセッサ115は、ブロック管理テーブル600を更新する(S1106)。具体的には、下記が行われる。
(S1106−1)プロセッサ115が、S1102にて取得したPBAに適合するPBA Groupを、ブロック管理テーブル600から探す。
(S1106−2)次に、プロセッサ115は、S1102にて取得したPBAのブロック(図11の説明において対象ブロック)における、S1104にてプログラム先となったページ、のページ番号301を取得する。プロセッサ115は、そのページ番号301を、最終プログラムページ608として登録する。
(S1106−3)なお、プロセッサ115は、このページ番号301が対象ブロック202の先頭ページであるとき、ブロック管理テーブル600の該当するFirstページプログラム日時606として、現在日時を表す情報を登録する。或いは、プロセッサ115は、ページ番号301が対象ブロック202の最終ページであるとき、Lastページプログラム日時607として現在日時を表す情報を登録する。
The
(S1106-1) The
(S1106-2) Next, the
(S1106-3) When the
以上が、プログラム処理の概要である。 The above is the outline of the program processing.
次に、本実施例の1つの特徴であるステップS1102について、図12を用いて説明する。 Next, step S1102 which is one feature of the present embodiment will be described with reference to FIG.
イレース処理が実施されてから長い時間が経過、又はページにデータをプログラムしてから長い時間が経過してしまうと、ページ301において初期閾値電圧が変動してしまい、プログラム時にフローティングゲートに対して適切な量の電荷を加えることが困難となり、格納データの信頼性が低下してしまうおそれがある。
If a long time elapses after the erase process is performed, or if a long time elapses after data is programmed in the page, the initial threshold voltage fluctuates in the
こうしたメモリチップ120の特性に対して、本実施例では、前回イレース日時からの経過時間、及び先頭ページをプログラムしてからの経過時間を一定時間以内とする制御を行う。
In this embodiment, for the characteristics of the
図12は、ステップS1102のフローの一例を示す。 FIG. 12 shows an example of the flow of step S1102.
プロセッサ115が、途中プログラムブロック群から候補ブロックを選択する(S1201)。
The
具体的には、プロセッサ115が、ブロック管理テーブル600を参照し、最終プログラムページ608が最終ページを示していない複数のブロック202から任意に1つのブロックを選択する。ここで、最終プログラムページ608が最終ページを示していないブロック202が、図12の説明で言う「途中プログラムブロック」であり、任意に選択された1つのブロックが、図12の説明で言う「候補ブロック」である。
Specifically, the
なお、S1201において、プロセッサ115は、イレース回数604が基準値(所定の閾値、又は、複数のブロックのイレース回数に基づいて得られた値)以上のブロックを、候補ブロックになり得る途中書きブロックとして良い。これにより、イレース回数604が少ないブロック202に対して優先的にプログラムできるので、イレースからの時間経過により生じるデータ保持信頼性の低下を軽減できる。
In step S1201, the
プロセッサ115は、候補ブロックを選択できるか否かを判断する(S1202)。候補ブロックが取得できる場合(S1202:Yes)、プロセッサ115は、選択した候補ブロックのFirstページプログラム日時606を特定する(S1203)。
The
プロセッサ115は、Firstページプログラム日時606から現在までの経過時間を算出する(S1204)。
The
プロセッサ115は、S1204で算出した経過時間が、予め設定された閾値(以下、PP閾値)以下かどうかを判断する(S1205)。経過時間がPP閾値以下である場合(S1205:Yes)、プロセッサ115は、候補ブロックの最終プログラムページの次のページのPBAを特定する(S1206)。S1204で算出された時間経過がPP閾値以下である場合、信頼性は保たれているからである。
The
S1204で算出された経過時間がPP閾値を超えている場合(S1205:No)、プロセッサ115は、S1201で選択したブロックを途中プログラムブロック群から外す(S1207)。S1204で算出された経過時間がPP閾値を超えている場合、信頼性低下が許容範囲外であるおそれがあるからである。S1207では、具体的には、例えば、プロセッサ115は、S1201で選択したブロックについて、最終プログラムページ608として、最終ページの値を登録し、Lastページプログラム日時607として、現在日時を表す情報を登録して良い。
When the elapsed time calculated in S1204 exceeds the PP threshold (S1205: No), the
一方、候補ブロックを選択できない場合(典型的には、途中プログラムブロックが無い場合)(S1202:No)、プロセッサ115は、ウェアリング管理キュー700を参照して、イレース回数が基準値未満であるブロックを選択する(S1208)。メモリチップ120は、前述の通り、EP時間が長いと信頼性が低下する特性を有する。この為、プログラムの直前にイレースを実施する制御方法が高信頼化に有効である。しかし、本実施例では、メモリチップ120のイレースにかかる時間はプログラムやリードの時間と比べて長いという特性に基づき、FMモジュール100の性能向上を目的として、イレース処理が施されたブロックが予め用意される。本実施例では、複数のイレース済みブロックが、ウェアレベリング管理キュー700に、イレース回数に応じてレベル分けをして登録される。S1208では、例えば、イレース回数範囲のレベルがなるべく小さいブロックが選択される。
On the other hand, when a candidate block cannot be selected (typically, when there is no program block in the middle) (S1202: No), the
プロセッサ115は、S1208で選択したブロックの「前回イレース日時605」を特定する(S1209)。
The
プロセッサ115は、S1209で特定した前回イレース日時605から現時点までの経過時間を算出する(S1210)。
The
プロセッサ115は、S1210で算出した経過時間がEP閾値以下かどうかをチェックする(S1211)。S1210で算出した経過時間がEP閾値以下である場合(S1212:Yes)、プロセッサ115は、S1208で取得したブロックのFirstページのPBAを特定する(S1213)。
The
プロセッサ115は、S1210で算出した経過時間がEP閾値以下でない場合(S1212:No)、S1208で選択したブロックに対して、イレース処理を実行する(S1212)。この処理により、前回イレース日時605から現時点までの経過時間が初期値(例えばゼロ)にリセットされることになる。プロセッサ115は、S1212でイレース処理が実行されたブロックのFirstページのPBAを特定する(S1213)。
If the elapsed time calculated in S1210 is not less than or equal to the EP threshold (S1212: No), the
S1211及びS1212によれば、S1213で特定されたPBAに対応するページを有するブロックは、前回イレース日時605から現時点までの経過時間がEP閾値以下であるブロックであることが保証される。
According to S <b> 1211 and S <b> 1212, it is guaranteed that the block having the page corresponding to the PBA specified in S <b> 1213 is a block whose elapsed time from the previous erase date /
S1206又はS1213で特定されたPBAに対応するページに、図11のS1104でデータがプログラムされる。 Data is programmed in S1104 of FIG. 11 to the page corresponding to the PBA specified in S1206 or S1213.
次に、リード処理について説明する。 Next, the read process will be described.
図13は、リード処理のフローの一例を示す。 FIG. 13 shows an example of the flow of read processing.
FMコントローラ110は、ホスト計算機10から、リード対象となるLBA(図13の説明で対象LBA)を指定したリードコマンドを受信する(S1301)。
The
プロセッサ115は、アドレス変換テーブル500を参照し、対象LBAに割り当てられたPBAを特定する(S1302)。
The
プロセッサ115は、S1302にて特定したPBAに対応するページからデータをリードする(S1303)。具体的には、プロセッサ115が、FM−IF116に対して、リード命令を発行する。命令を受けたFM−IF116は、PBAが示すページを有するメモリチップ120に対して、ブロック202とページ301を指定してデータをリードする。
The
FM−IF116は、S1303でリードしたデータに付随するECC用いて、リードしたデータの整合性を検査する。この検査にて誤りが検出されれば、FM−IF116は、ECCを用いてリードしたデータを修正する(S1304)。
The FM-
FM−IF116は、リードしたデータをホスト計算機10に転送する。S1304にてデータを修正したのであれば、修正したデータをホスト計算機10に転送する(S1305)。
The FM-
以上が、本実施例におけるリード処理の説明である。 The above is the description of the read processing in this embodiment.
次に、本実施例におけるリクラメーション処理を説明する。リクラメーション処理は、ホスト計算機10からの要求の他にライト処理によっても副次的に生じる。
Next, the reclamation process in the present embodiment will be described. The reclamation process occurs secondary by a write process in addition to a request from the
まず、リクラメーション処理の開始契機を説明する。 First, the trigger for starting the reclamation process will be described.
前述の通り、メモリチップ120は、一旦、ページにデータをプログラムすると上書きできないという特性をもつ。この為、同一のLBAに対してライトが実施された際、最終プログラムページの次のページにデータがプログラムされ、アドレス変換テーブル500には、そのLBAに対応するPBAとして、更新前データがプログラムされているページのPBAから、新たにデータがプログラムされたページのPBAが登録される。
As described above, the
この制御により、ホスト計算機10に、PBAが変更されたことを意識させることなくデータの更新が実施される。
By this control, the
上述の更新ライトが実施されると、更新ライトの度に新たなページを使用する為、FMモジュール100内のプログラムが可能なページが減る。この為、本実施例のFMモジュール100は、FMモジュール100内のプログラムが可能なページが一定量以下となった場合に、リクラメーション処理を実施する。
When the update write described above is performed, a new page is used each time the update write is performed, and therefore the number of pages that can be programmed in the
リクラメーション処理は、例えば、プロセッサ115がリクラメーションプログラム1142を実行することによって実施される。具体的には、リクラメーション処理では、下記が実行される。
(x1)プロセッサ115は、基準値以上の無効ページを有するブロックを探す。ここで言う「基準値」は、所定の閾値であっても良いし、複数のブロックの無効ページ数に基づく値(例えば平均値)であっても良い。つまり、ここでは、無効ページ数が絶対的又は相対的に多いブロックが探される。「無効ページ」とは、アドレス変換テーブル500にてLBAが対応付けられていないページであって、データがプログラム済みのページである。
(x2)次に、プロセッサは、(x1)で見つかったブロックに含まれる有効ページ(アドレス変換テーブル500にてLBAに対応付けられているページ)内のデータを他ブロックのページにコピーし、アドレス変換テーブル500のLBAとの対応付けをコピー先のページに更新する。この処理により、(x1)で見つかったブロック内の全ページが無効ページとされる。つまり、そのブロックが無効ブロックとされる。無効ブロックは、全てのページが無効ページであるブロックである(言い換えれば、LBAに割り当てられたPBAから特定される有効ページを含まないブロックである)。無効ブロックが、イレース処理されて良いブロックである。
The reclamation process is implemented, for example, by the
(X1) The
(X2) Next, the processor copies the data in the valid page (the page associated with the LBA in the address translation table 500) included in the block found in (x1) to the page of another block, and addresses The association with the LBA in the conversion table 500 is updated to the copy destination page. By this processing, all pages in the block found at (x1) are set as invalid pages. That is, the block is an invalid block. An invalid block is a block in which all pages are invalid pages (in other words, a block that does not include a valid page specified from the PBA assigned to the LBA). An invalid block is a block that may be erased.
本実施例のリクラメーション処理では、複数の無効ブロック(イレース対象候補であるブロック)が管理され、無効ブロックに対するイレース処理は、イレース済みブロックの数が閾値以下となった場合に実施されて良い。なお、その閾値は、FMモジュール100のライト性能に合わせて決定されて良い。
In the reclamation process according to the present embodiment, a plurality of invalid blocks (blocks that are candidates for erasure) are managed, and the erase process for invalid blocks may be performed when the number of erased blocks is equal to or less than a threshold value. The threshold value may be determined according to the write performance of the
一方で、メモリチップ120の特性によれば、PE間隔(プログラムからイレースまでの経過時間)が短いと、セルの酸化絶縁膜に生成される電子及び正孔トラップの個数が、PE間隔が長い場合と比べて多数生じる。この為、PE間隔が短いブロックの信頼性は低いおそれがある。
On the other hand, according to the characteristics of the
上記特性に対し、本実施例では、リクラメーション契機にて生じるイレース処理において、PE間隔がPE閾値以下のブロックについてはイレース処理が実施されない。例外として、イレース済みブロックの数が枯渇していれば、イレース済みブロックを確保するために、Lastページプログラム日時607からの経過時間がPE閾値以下のブロックに対してイレース処理が施されて良い。その際、イレース処理が施されるブロックは、Lastページプログラム日時607からの経過時間がPE閾値以下の複数のブロックのうち、Lastページプログラム日時607からの経過時間が最も長いブロックで良い。なお、イレース処理は、例えば、イレースプログラム1143をプロセッサ115が行うことにより行われて良い。
In contrast to the above characteristics, in the present embodiment, in the erase process that occurs at the reclamation opportunity, the erase process is not performed for blocks whose PE interval is equal to or less than the PE threshold. As an exception, if the number of erased blocks is depleted, erase processing may be performed on blocks whose elapsed time from the Last page program date and
図14は、リクラメーション処理のフローの一例を示す。 FIG. 14 shows an example of the reclamation process flow.
リクラメーション処理は、所定のイベントが検出されたとき、例えば、FMモジュール100内のイレース済みブロックの数が所定の閾値以下となったことが検出されたときに、開始される。
The reclamation process is started when a predetermined event is detected, for example, when it is detected that the number of erased blocks in the
プロセッサ115は、ブロック管理テーブル600より、無効ページ数609が絶対的又は相対的に多いブロックを特定する(S1401)。S1401で選択されるブロックは、最終ページにデータがプログラム済みのブロックでよい。
The
プロセッサ115は、S1401にて特定したブロック(図14の説明において「候補ブロック」)のLastページプログラム日時607を特定する(S1402)。
The
プロセッサ115が、S1402にて特定したLastページプログラム日時607の値と現在の日時の差を算出することで、候補ブロックについて、Lastページプログラム日時607からの経過時間を得る(S1403)。
The
プロセッサ115は、S1403にて算出した経過時間がPE閾値未満かどうかをチェックする(S1404)。S1403で得た経過時間がPE閾値未満の場合(S1404:Yes)、候補ブロックをキャンセルし(S1405)、再度S1401を行う。S1405で、プロセッサ115は、キャンセルした候補ブロックが再度選択されないよう、例えば、キャンセルした候補ブロックの番号をRAM114に書込んで良い。S1405のような処理が行われる理由は、S1403で得た経過時間がPE閾値未満のブロックは、データ保持に関する信頼性が低下しているおそれがあるからである。
The
一方、S1403で得た経過時間がPE閾値以上の場合(S1404:No)、プロセッサ115は、候補ブロック内の全ての有効ページのデータを他のブロックのページにコピーする(S1406)。そして、プロセッサ115は、候補ブロックの有効ページのPBAに対応付けられているLBAに、そのPBAに代えて、コピー先ページのPBAを対応付ける(アドレス変換テーブル500の更新)。この処理により、候補ブロック内の全ページが無効ページとなる。つまり、候補ブロックが無効ブロックとなる。なお、S1401にて取得した候補ブロックが既に無効ブロックであった場合、このステップを実行する必要はなく、プロセッサ115は、S1404の処理の次に、S1407の処理を実行することができる。
On the other hand, when the elapsed time obtained in S1403 is equal to or greater than the PE threshold (S1404: No), the
プロセッサ115は、S1406にて作成した無効ブロックに対してイレース処理を実施する。(S1407)。
The
プロセッサ115は、S1406にてイレース処理を実施したブロックのイレース回数604に1を加算する。そして、プロセッサ115は、加算後のイレース回数に基づき、イレース済みブロック(候補ブロック)を、ウェアレベリング管理キュー700に登録する(S1408)。これにより、候補ブロックは、候補ブロックの加算後のイレース回数が属するイレース回数範囲のレベルに関連付けられる。
The
以上が、本実施例におけるリクラメーション処理の説明である。なお、本実施例では、Lastページプログラム日時607からの経過時間がPE閾値と比較されるが、比較される経過時間は、これに限定されない。例えば、Firstページプログラム日時606からの現時点までの経過時間がPE閾値と比較されても良い。また、Lastページプログラム日時607は、実測値でなくても良く、例えば、Firstページプログラム日時606から予測された値であっても良い。
The above is the description of the reclamation process in the present embodiment. In this embodiment, the elapsed time from the Last
ここまで述べたように、本実施例では、Lastページプログラム日時607からの経過時間がPE閾値以上のブロックにイレース処理が施され、その経過時間がPE閾値未満のブロックにはイレース処理が施されない。また、前回イレース日時605からの経過時間がEP閾値以下のブロックの先頭ページにデータがプログラムされ、その経過時間がEP閾値を超えているブロックの先頭ページにはデータがプログラムされない(そのブロックにイレース処理が施されてから、そのブロックの先頭ページにデータがプログラムされる)。また、Firstページプログラム日時606から経過時間がPP閾値以下の場合に、データが最終プログラムページの次のページにプログラムされる。以上の制御により、FMモジュール100のデータ保持に関する信頼性の低下を抑えることができる。また、PE間隔がPE閾値以上であることが確保されるので、イレース回数が上限に達してしまう時期を遅くすることが図れ、以って、FMモジュール100の高寿命化が期待できる。
As described so far, in this embodiment, an erase process is performed on blocks whose elapsed time from the Last page program date and
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する(なお、これは、実施例3についても同様である)。 Example 2 will be described below. At this time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified (this is the same for the third embodiment).
実施例1では、PE間隔の最小時間(PE閾値)が規定されるが、実施例2では、PE閾値が規定されることに代えて、ホスト計算機10からのコマンドに対して個々のブロックについて可能な限りPE間隔を確保するよう制御が実施される。
In the first embodiment, the minimum time (PE threshold) of the PE interval is defined, but in the second embodiment, instead of defining the PE threshold, it is possible for each block in response to a command from the
図15は、PE間隔管理キュー1500の一例を示す。
FIG. 15 shows an example of the PE
PE間隔管理キュー1500は、RAM114に記憶された管理情報の一つである、PE間隔管理キュー1500は、Lastページプログラム日時から現在日時までの経過時間(以下、プログラム経過時間と言う)によりグループ分けし、各グループの経過時間範囲内に該当する無効ブロックのPBA Groupを登録した管理情報である。PE間隔管理キュー1500は、プログラム経過時間1501と、PBA Group1502より構成される。
The PE
プログラム経過時間1501は、プログラム経過時間を示す情報である。
The program elapsed
図15の例によれば、プログラム経過時間が4つのレベルに分けられている。プログラム経過時間が最も長いレベルに属するブロック群として、プログラム経過時間が30分以上であるブロック群があり、次に、プログラム経過時間が20分以上29分以下であるブロック群のように、プログラム経過時間の一定の範囲毎にブロックが分類される。本実施例では、プログラム経過時間は、分オーダーまで管理され、秒オーダーについて管理されないが、プログラム経過時間の単位は分までに限定されないで良い。 According to the example of FIG. 15, the program elapsed time is divided into four levels. As the block group belonging to the longest program elapsed time, there is a block group whose program elapsed time is 30 minutes or more, and then the program progress such as a block group whose program elapsed time is 20 minutes or more and 29 minutes or less. Blocks are classified according to a certain range of time. In this embodiment, the program elapsed time is managed up to the minute order and is not managed for the second order, but the unit of the program elapsed time may not be limited to the minute.
PBA Group1502は、プログラム経過時間レベル(範囲)毎に該当するブロックを示すPBA Group1502の先頭アドレスを格納する。PBA Group1502はFIFO型のキューとして登録されており、ブロックは新たにキューの最後尾に登録される。
The
実施例2では、PE間隔管理キュー1500を用いて無効ブロックが管理される。無効ブロック数が一定数以下となった際に、無効ブロック生成処理(例えばリクラメーション処理)により無効ブロックが作成され、生成された無効ブロックが、その無効ブロックのプログラム経過時間を基に、PE間隔管理キュー1500に登録される。これらの詳細は後述する。
In the second embodiment, invalid blocks are managed using the PE
また、実施例2では、PE間隔管理キュー1500は、定期的又は不定期的に、例えば10分毎に更新される。具体的には、FMコントローラ110が、PE間隔管理キュー1500を更新する都度に、その更新した時刻から現在までの時間を測定する。FMコントローラ110は、時点T(測定された時間が10分経過した時点)での無効ブロックのプログラム経過時間が、時点Tにおいてその無効ブロックが属するレベルよりも上のレベルに属していれば、その無効ブロックの先頭ページのPBAを、上のレベルのキューの最後尾に登録する。
In the second embodiment, the PE
なお、本実施例では、10分経過毎にキュー1500が変更されるが、キュー1500の更新は、10分経過毎に限定されない。例えば1秒単位でキュー1500が更新されてもよい。
In this embodiment, the
次に、本実施例における無効ブロック生成処理について説明する。 Next, the invalid block generation process in the present embodiment will be described.
図16は、第2実施例における、ブロックの利用サイクルを示した概要図である。 FIG. 16 is a schematic diagram showing a block use cycle in the second embodiment.
データ記録ブロック群1601は、有効ページを含むブロックを概念的に示すブロック群である。FMコントローラ110は、ブロック管理テーブル600からデータ記録ブロック群1601を把握する。また、FMコントローラ110は、無効ブロック群1602に登録されたブロック数が一定数以下となった際、データ記録ブロック群1601の中から、無効ページが基準値以上のブロック(つまり、無効ページが絶対的に又は相対的に多いブロック)を選択する。その選択されたブロックが、リクラメーション候補ブロックである。そして、FMコントローラ110は、リクラメーション候補ブロックの全ての有効ページを、他のブロックのページにコピーする。
The data
次に、FMコントローラ110は、リクラメーション候補ブロックの有効ページが対応していたLBAの対応先を、リクラメーション候補ブロックの有効ページからそれのコピー先ページに変更する。これにより、リクラメーション候補ブロックの全有効ページが無効ページとなる。その結果、リクラメーション候補ブロックは無効ブロックとなる。こうして生成された無効ブロックは、無効ブロック群1602に登録される。
Next, the
無効ブロック群1602には、無効ブロック(全ページが無効ページとなったブロック)が登録されたブロック群である。FMコントローラ110は、無効ブロックを、その無効ブロックのプログラム経過時間が該当する、PE間隔管理キュー1500のレベルに、登録する。FMコントローラ110は、イレース済みブロック群1603を構成するブロックの数が一定数以下となった際、無効ブロック群1602の中からプログラム経過時間が基準値以上のブロックを選択し、選択した無効ブロックに対してイレース処理をすることで、イレース済みブロックを生成する。こうして生成されたイレース済みブロックは、イレース済みブロック群1603に登録される。なお、プログラム経過時間の基準値は、プログラム経過時間の所定のPE閾値でも良いし、無効ブロック群1602を構成する複数の無効ブロックのプログラム経過時間に基づく値(例えば平均値)であっても良い。つまり、選択される無効ブロックは、プログラム経過時間が絶対的又は相対的に長い無効ブロックである。
The
イレース済みブロック群1603は、イレース済みのブロックが登録されたブロック群である。FMコントローラ110は、ウェアレベリング管理キュー700にイレース済みブロックを登録する。
The erased
FMコントローラ110は、ホスト計算機10からのライトコマンドが生じ、途中プログラムブロック(最終ページまでデータが記録されておらず、記録可能なページを持つブロック)が一定数以下となった際、イレース済みブロック群1603の中からイレース回数が基準値以下のブロックを選択し、ホスト計算機10から受領したライトデータを、その選択したブロック内ページにプログラムする。これにより、そのブロックは、データ記録ブロック(途中プログラムブロック)となる。なお、イレース回数の基準値は、イレース回数の所定の閾値でも良いし、イレース済みブロック群1603を構成する複数のイレース済みブロックのイレース回数に基づく値(例えば平均値)であっても良い。つまり、選択されるイレース済みブロックは、イレース回数が絶対的又は相対的に少ないイレース済みブロックである。
The
以下、実施例2で行われる処理を詳細に説明する。 Hereinafter, the process performed in Example 2 will be described in detail.
図17は、無効ブロック生成処理のフローの一例を示す。プロセッサ115は、例えば、無効ブロック生成プログラム1144(図19参照)を実行することで、図17で説明する処理を行うことができる。
FIG. 17 shows an example of the flow of invalid block generation processing. For example, the
プロセッサ115は、データ記録ブロック群から無効ブロックの候補(以下、無効候補ブロック)を選択する(S1701)。具体的には、プロセッサ115が、ブロック管理テーブル600を参照し、無効ページ数609に格納された値が絶対的又は相対的に多いブロックを無効候補ブロックとして選択する。このとき、プロセッサ115は、テーブル600から、最も無効ページ数の多いブロックを無効候補ブロックとして選択してもよい。また、無効ブロック生成対象の基準として、無効ページ数の閾値があり、プロセッサ115は、無効ページ数609に登録された値が閾値以上のブロックを無効候補ブロックとして選択してもよい。
The
プロセッサ115は、S1701にて選択した無効候補ブロックにのLastページプログラム日時607を特定する(S1702)。
The
プロセッサ115は、S1702にて特定したLastページプログラム日時607から現在までの経過時間(プログラム経過時間)を算出する(S1703)。
The
プロセッサ115は、S1701で選択した無効候補ブロック内の全有効ページを他のブロックの空きページ(有効データでも無効データでもない、データが記録されていないページ)にコピーし、コピー元の有効ページが対応付けられていたLBAの対応先を、コピー元の有効ページからそれのコピー先ページに変更する(S1704)。この処理により無効候補ブロック内の全ページは無効ページとなり、無効候補ブロックは無効ブロックとなる。
The
プロセッサ115は、PE間隔管理キュー1500における、S1704にて算出したプログラム経過時間が該当するレベルに、無効ブロック(全ページが無効ページとなった候補ブロック)を登録する(S1705)。例えば、S1703にて算出されたプログラム経過時間が12分であった場合、プロセッサ115は、PE間隔管理キュー1500における、PE間隔10分以上19分以内の行に、無効候補ブロックの先頭ページのPBAを記録する。
The
以上が、本実施例における無効ブロック生成処理の説明である。 The above is the description of the invalid block generation process in the present embodiment.
次に、本実施例におけるイレース処理について説明する。 Next, the erase process in the present embodiment will be described.
図18は、イレース処理のフローの一例を示す。 FIG. 18 shows an example of the erase process flow.
イレース処理の最初のステップにおいて、プロセッサ115は、PE間隔管理キュー1500を参照し、最もプロセッサ経過時間の長いレベルよりブロックを選択する(S1801)。図18の説明において、S1801で選択されたブロックを「イレース候補ブロック」と言う。
In the first step of the erase process, the
より具体的には、プロセッサ115が、PE間隔管理キュー1500を参照し、最もプロセッサ経過時間の長いレベル(最上位レベル)(図15の例では30分以上)の先頭ブロック(グループに登録された全ブロックのうち、最も過去に登録されたブロック)を特定する。このとき、最上位レベルに登録されたブロックがない場合、プロセッサ115が、次に上位のレベル(図15の例では20分以上29分以内)よりブロックを選択する。このように、ブロックを特定できない場合は、プロセッサ115は、1段階レベルを下げ、そのレベルからよりブロックを選択する。このように、ブロックが取得できるまで、ブロックの探索範囲が、順にプロセッサ経過時間の低いレベルに変更される。
More specifically, the
プロセッサ115は、ブロック管理テーブル600を参照し、イレース候補ブロックが該当する行のイレース回数604の値を特定する(S1802)。
The
プロセッサ115は、FM−IF116に、イレース候補ブロックを示すPBAとイレースコマンドを通知し、FM−IF116が、イレース候補ブロックを含むチップに対して、ブロック番号を通知し、且つ、イレースコマンドを送信する(S1803)。
The
プロセッサ115は、S1802にて特定したイレース回数を1インクリメントする(S1804)。これにより、イレース候補ブロックの新たなイレース回数が決定される。
The
プロセッサ115は、S1804にて算出したイレース回数を用いて、ウェアレベリング管理キュー700の該当するレベルに、S1803にてイレース処理を実施した候補ブロック(イレース済みブロック)を登録する。また、新たなイレース回数がブロック管理テーブル600イレース回数604に登録される(S1805)。
The
実施例2によれば、プログラム経過時間が長い無効ブロックに対して優先的にイレース処理を施す。これにより、全ブロックのPE間隔がより長くされることが図れる。この結果、短いPE間隔時に生じる電子トラップ及び正孔トラップの数が低減され、高信頼化が期待される。 According to the second embodiment, the erase process is preferentially performed on invalid blocks having a long program elapsed time. Thereby, the PE interval of all blocks can be made longer. As a result, the number of electron traps and hole traps generated at a short PE interval is reduced, and high reliability is expected.
また、こうした高信頼化により、データの記憶に使用不可と判断されるブロックを減らし、利用可能なブロックのイレース回数の上限を実質的に増やすことができるため、FMモジュール100の長寿命化が期待できる。 In addition, with such high reliability, the number of blocks that are determined to be unusable for data storage can be reduced, and the upper limit of the number of erasures of usable blocks can be substantially increased. it can.
なお、実施例1におけるPE間隔の最小時間規定と、本実施例におけるPE間隔を可能な限り確保する制御(つまり実施例1と実施例2)は、組み合わせて実施されてもよい。 In addition, the minimum time regulation of the PE interval in the first embodiment and the control for ensuring the PE interval in the present embodiment as much as possible (that is, the first embodiment and the second embodiment) may be implemented in combination.
ここまで、通常処理の中でPE間隔の最小時間を制限し(実施例1)、またはPE間隔を長く制御する(実施例2)例について述べてきた。PE間隔の短縮により電子トラップおよび正孔トラップが多量に発生するのを抑え、不揮発性半導体メモリのデータ保持に関する信頼性(データ保持信頼性)の低下を防ぐことが期待できる。 Up to this point, an example has been described in which the minimum time of the PE interval is limited in the normal processing (Example 1) or the PE interval is controlled to be long (Example 2). By shortening the PE interval, it can be expected that a large amount of electron traps and hole traps are suppressed, and a decrease in reliability (data retention reliability) related to data retention in the nonvolatile semiconductor memory can be expected.
実施例3では、稼働中にデータ保持信頼性が低いブロックが検出され、そのブロックのPE間隔を長くすることで、生じた正孔トラップおよび電子トラップを減らし、データ保持信頼性を向上させることが期待できる。つまり、本実施例により、使用不可となるブロックを減少することができる。 In the third embodiment, a block with low data retention reliability is detected during operation, and by increasing the PE interval of the block, the generated hole traps and electron traps can be reduced and the data retention reliability can be improved. I can expect. That is, according to the present embodiment, blocks that cannot be used can be reduced.
不揮発性半導体メモリは、一般にデータの保持期間が有限である。このため、一定期間毎にデータをリードし他所にコピーする処理を行うことが望ましい。こうした処理は、一般に「リフレッシュ処理」と呼ばれる。また、不揮発性半導体メモリは、データ記録後の時間経過とともに障害ビット数が増加する。このため、FMコントローラ110は、定期的又は不定期的にFMモジュール100内の全記憶領域をリードし、各ページに生じている障害ビット数を検査することができる。この処理を、本実施例において「ベリファイ処理」と呼ぶ。
A nonvolatile semiconductor memory generally has a finite data retention period. For this reason, it is desirable to perform a process of reading data and copying it to another place at regular intervals. Such processing is generally called “refresh processing”. In the nonvolatile semiconductor memory, the number of faulty bits increases with time after data recording. For this reason, the
図20は、経過日数と障害ビット閾値との関係を表すテーブルの一例を示す。 FIG. 20 shows an example of a table representing the relationship between the elapsed days and the failure bit threshold.
データをプログラムしてから日数が経過すると、メモリの障害ビットは増加していく。このため、図20に示すテーブル2000によれば、経過日数2001(例えば或るページ(例えば先頭ページ又は最終ページ)にデータをプログラムしてから現在までの日数)の値が長いと、障害ビット閾値2002は高い。障害ビット閾値は、障害ビット数の閾値である。
As the number of days elapses after the data is programmed, the memory failure bits increase. Therefore, according to the table 2000 shown in FIG. 20, if the value of the elapsed days 2001 (for example, the number of days from when data is programmed to a certain page (for example, the first page or the last page)) is long, the failure
本実施例では、リード処理(ホスト計算機10からのリードコマンドの処理)、リフレッシュ処理およびベリファイ処理の少なくとも1つの処理において、FMコントローラ110は、ブロックについての経過日数(例えば或るページ(例えば先頭ページ又は最終ページ)にデータをプログラムしてから現在までの日数)に対応する障害ビット閾値2002を特定する。FMコントローラ110は、障害ビット数(または、ブロック内全ECC CWの平均障害bit数)が障害ビット閾値以上のブロック(以下、危険ブロックと言う)を検出する。より具体的には、FMコントローラ110は、まず前述の何れかの処理においてブロック内のページからデータをリードする。そして、FMコントローラ110は、そのページを構成するECC毎の障害ビット数を取得する。次に、FMコントローラ110は、障害ビット数が障害ビット閾値以上となったブロックを危険ブロックとして特定する。なお、障害ビット閾値は、ECCで修正可能なbit数以下の値で良い。
In this embodiment, in at least one of the read process (read command process from the host computer 10), the refresh process, and the verify process, the
危険ブロックと判断されたブロックは、実施例2で述べた無効ブロック生成処理の対象となる。FMコントローラ110は、危険ブロックに含まれる全ページのデータを別のブロックにコピーし、アドレス変換テーブル500を更新する。この処理により、危険ブロックが無効ブロックとなる。そして、FMコントローラ110は、その無効ブロックを危険ブロック管理キュー(図示せず)に登録する。危険ブロック管理キューは、FIFO型のキューであり、ブロックをキューに登録する際には、キューの最後尾に登録する。
Blocks determined as dangerous blocks are subject to invalid block generation processing described in the second embodiment. The
実施例3では実施例2と同様に、無効ブロックはPE間隔管理キュー1500に登録される。
In the third embodiment, the invalid block is registered in the PE
図21は、管理画面2100の一例を示す。
FIG. 21 shows an example of the
管理画面2100は、管理計算機11に表示される画面である。管理計算機11は、複数(又は一)のFMモジュール100を管理している。
The
管理画面2100には、管理計算機11が管理している複数のFMモジュール100のID(モジュールリスト)が表示される。モジュールリストのうちの1以上のFMモジュールIDをユーザが選択することができる。
The
管理画面2100は、時間表示エリア2101を有し、この画面2100上の前面に、ブロック表示画面2102が表示される。この画面2102には、複数のFMモジュールIDからユーザにより選択されたFMモジュールに関する情報が表示される。管理計算機11が、複数のFMモジュール100から管理情報を収集しており、その管理情報の全部又は一部が、画面2100及び2102の少なくとも一方に表示されて良い。
The
時間表示エリア2101には、「許容最小PE間隔」及び「許容最大EP間隔」が表示される。この「許容最小PE間隔」(つまりPE閾値)及び「許容最大EP間隔」(つまりEP閾値)は、本実施例では、この管理画面2100からユーザは変更できないが、これらの閾値のうちの少なくとも1つがユーザによってこの画面2100から変更されても良い。
In the
ブロック表示画面2102は、モジュールリストからユーザに選択されたFMモジュールIDに対応するFMモジュールについて、「総ブロック数」及び「危険ブロック数」を表示する。「総ブロック数」は、ユーザに選択されたFMモジュール100が有するブロックの総数であり、「危険ブロック数」は、それらのブロックのうちの危険ブロックの数である。危険ブロックは、前述したように、障害ビット数が障害ビット閾値以上となったブロックである。
The
図22は、イレース処理のフローの一例を示す。 FIG. 22 shows an example of the erase process flow.
本実施例では、前述したように、障害ビット数が障害ビット閾値以上であるブロックが危険ブロックとして管理される。FMコントローラ110は、危険ブロックを、なるべくイレース対象とならないようにする。なぜなら、メモリチップ120は、データがプログラムされた状態で放置すると、次回プログラム時の記録データに生ずる障害ビット数が減少するという特性を有するからである。危険ブロックは、そのブロックのプログラム経過時間が所定時間を経過した後、イレース対象のブロックとなるように制御される。
In the present embodiment, as described above, blocks whose failure bit number is greater than or equal to the failure bit threshold are managed as dangerous blocks. The
プロセッサ115は、FMモジュール100が管理するブロック選択数が、所定の閾値未満かどうかを判断する(S2201)。このとき閾値は、例えば10万である。
The
ブロック選択数が閾値未満である場合(S2201:Yes)、実施例2と同様に、プロセッサ115は、PE間隔管理キュー1500より無効ブロックを選択(S2202)する。プロセッサ115は、ブロック選択数を1インクリメントする。従って、前述の「ブロック選択数」とは、危険ブロックでない無効ブロックが選択された回数を示す。S2204〜S2207までの処理は、実施例2のS1802〜S1805(図18参照)とほぼ同じであるため、説明を省略する。
When the block selection number is less than the threshold (S2201: Yes), the
一方、ブロック選択数が所定の閾値以上の場合(S2201:No)、プロセッサ115は、危険ブロック管理キューよりブロック(図22の説明においてイレース候補ブロック)を取得する(S2208)。ブロック選択数がゼロから閾値以上に増えたということは、ブロック選択数がゼロから閾値以上に増えるまでの時間だけ危険ブロックは選択されずに放置されていたことを意味する。故に、危険ブロックにおいて次回プログラム時の記録データに生ずる障害ビット数が減少する可能性がある。危険ブロックは、望ましくは何らかのデータがプログラム済みのブロックである。
On the other hand, if the block selection number is equal to or greater than the predetermined threshold (S2201: No), the
プロセッサ115は、ブロック選択数を初期値(例えば0)とする(S2209)。これにより、以後、ブロック選択数が再び閾値以上に増えるまで、危険ブロックがイレース候補ブロックとして選択されることは無い。
The
S2209の後、プロセッサ115は、S2204の処理を行う。
After S2209, the
図23は、リード処理のフローの一例を示す。 FIG. 23 shows an example of the flow of read processing.
S2301〜S2304までの処理は、図13のS1301〜S1304と、ほぼ同じであるため説明を省略する。 The processing from S2301 to S2304 is almost the same as S1301 to S1304 in FIG.
プロセッサ115は、リード元のブロックの障害ビット数を特定する(S2305)。
The
プロセッサ115は、リード元ブロックのプログラム経過日数に対応する障害ビット閾値を図20に示したテーブル2000から特定し、S2305で特定した障害ビット数が特定された障害ビット閾値未満かどうかをチェックする(S2306)。
The
障害ビット数が障害ビット閾値未満である場合(S2306:Yes)、プロセッサ115は、修正したデータをホスト計算機10に転送する(S1305)。
When the number of failure bits is less than the failure bit threshold value (S2306: Yes), the
一方、特定した障害ビット数が障害ビット閾値以上の場合(S2306:No)、プロセッサ115は、リード元ブロックを危険ブロックとして登録する(S2307)。
On the other hand, when the specified number of failed bits is equal to or greater than the failed bit threshold (S2306: No), the
実施例3によれば、危険ブロックではない無効ブロックよりも低い頻度で危険ブロックがイレース候補ブロックとして選択される。これにより、危険ブロックのPE間隔が延長される。PE間隔が延長されると、危険ブロックの酸化膜内にある電子トラップおよび正孔トラップのデトラップが行われ、危険ブロックのデータ保持能力は回復し、再度データ保持信頼性を維持可能となる。これにより、使用不可となるブロックが減り、利用可能なイレース回数が増加し、FMモジュール100の長寿命化が期待される。
According to the third embodiment, a dangerous block is selected as an erase candidate block at a lower frequency than an invalid block that is not a dangerous block. As a result, the PE interval of the dangerous block is extended. When the PE interval is extended, electron traps and hole traps in the oxide film of the dangerous block are detrapped, and the data holding capability of the dangerous block is restored, so that the data holding reliability can be maintained again. As a result, the number of blocks that cannot be used is reduced, the number of erasures that can be used is increased, and the life of the
なお、上記の説明によれば、危険ブロックは、障害ビット数が障害ビット閾値以上のブロックであるが、障害ビット数と障害ビット閾値の比較は、データ単位、ページ単位、ブロック単位、など、所定の単位で行われて良い。 In addition, according to the above description, the dangerous block is a block whose failure bit number is greater than or equal to the failure bit threshold value, but the comparison between the failure bit number and the failure bit threshold value is a predetermined unit such as data unit, page unit, block unit, etc. It may be done in units of.
また、危険ブロックは、障害ビット数が障害ビット閾値以上のブロックに代えて又は加えて、下記の(1)及び(2)のうちの少なくとも1つに該当するブロックであっても良い。
(1)プログラムにかかる時間が第1の基準値未満である。
(*)ブロックが劣化すると、酸化絶縁膜にホールができる。FG(フローティングゲート)にN個の電子をいれたつもりが、FGにはN個未満しか入らず、残りは酸化絶縁膜のホールに入るおそれがある。この場合、注入される電子の数は、N個未満で済むので、プログラムにかかる時間は短くなる。
(*)第1の基準値は、所定の閾値であっても良いし、複数のブロックのプログラム時間(プログラムに要した時間)に基づく値(例えば平均値)であっても良い。つまり、この(1)は、「プログラムにかかる時間が絶対的又は相対的に長い」ということで良い。
(2)イレースにかかる時間が第2の基準値未満である。
(*)ブロックが劣化すると、イレース処理においてなかなか電子がFGから出ていかない。
(*)第2の基準値は、所定の閾値であっても良いし、複数のブロックのイレース時間(イレース処理に要した時間)に基づく値(例えば平均値)であっても良い。つまり、この(2)は、「イレースにかかる時間が絶対的又は相対的に短い」ということで良い。
Further, the dangerous block may be a block corresponding to at least one of the following (1) and (2) instead of or in addition to the block having the number of failed bits equal to or greater than the failed bit threshold.
(1) The time required for the program is less than the first reference value.
(*) When the block deteriorates, holes are formed in the oxide insulating film. There is a possibility that N electrons are put into FG (floating gate), but less than N electrons are put into FG, and the rest may enter holes of the oxide insulating film. In this case, since the number of injected electrons is less than N, the time required for programming is shortened.
(*) The first reference value may be a predetermined threshold value, or may be a value (for example, an average value) based on a program time (time required for programming) of a plurality of blocks. That is, this (1) may be that “the time required for the program is absolute or relatively long”.
(2) The time required for erasing is less than the second reference value.
(*) When the block deteriorates, it is difficult for electrons to come out of the FG in the erase process.
(*) The second reference value may be a predetermined threshold value, or may be a value (for example, an average value) based on the erase time (time required for the erase process) of a plurality of blocks. That is, this (2) may be that “the time required for erasing is absolute or relatively short”.
以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されない。 Although several embodiments have been described above, the present invention is not limited to these embodiments.
例えば、LBAは、多段であっても良い。例えば、ホスト計算機10から指定されるLBAは、論理ボリュームにおける領域の第1段のLBAであって、第1段のLBAには、FMモジュール100が認識する第2段のLBAが対応付けられていて、第2段のLBAに、PBAが対応付けられても良い。多段であっても、第1段のLBAに間接的にPBAが対応付けられる。
For example, the LBA may be multistage. For example, the LBA specified by the
また、例えば、実施例3は、実施例1及び2を含むが、実施例2を含まないでも良い。この場合、例えば、図22のS2202では、無効ページが絶対的又は相対的に多いブロックが選択され、S2203で、ブロック選択数が1インクリメントされても良い。 Further, for example, the third embodiment includes the first and second embodiments, but the second embodiment may not be included. In this case, for example, in S2202 of FIG. 22, a block having an absolute or relatively large number of invalid pages may be selected, and in S2203, the number of block selections may be incremented by one.
100…FMモジュール、110…FMコントローラ、120…メモリ(不揮発性半導体メモリ) 100 ... FM module, 110 ... FM controller, 120 ... memory (nonvolatile semiconductor memory)
Claims (14)
前記複数のフラッシュメモリチップに接続されており、ブロックに対してデータのプログラム及びデータのイレースを行うコントローラと
を有し、
各ブロックは、データのプログラムの単位であるページを複数有し、
前記コントローラは、
無効ブロックを複数生成し、
前記複数の無効ブロックのそれぞれについて、ブロックにデータを最近プログラムした時刻である最近プログラム時刻を管理し、
前記複数の無効ブロックのうち、前記最近プログラム時刻からの経過時間である経過プログラム時間が相対的に長い無効ブロック内のデータをイレースする、
フラッシュメモリモジュール。 Each, and a plurality of flash memory chips including a plurality of blocks is a unit of data erase,
A controller that is connected to the plurality of flash memory chips and that performs data programming and data erasing on the block;
Each block has a plurality of pages which are units of data program,
The controller is
Generate multiple invalid blocks,
For each of the plurality of invalid blocks, managing the latest program time, which is the time at which data was recently programmed in the block,
Erasing data in an invalid block having a relatively long elapsed program time that is an elapsed time from the most recent program time among the plurality of invalid blocks;
Flash memory module.
前記コントローラは、無効ブロックの数が前記一定数以下となった場合に新たに無効ブロックを生成することにより、前記一定数より多くの無効ブロックを維持する、 The controller maintains more invalid blocks than the certain number by newly creating invalid blocks when the number of invalid blocks becomes equal to or less than the certain number.
請求項1記載のフラッシュメモリモジュール。The flash memory module according to claim 1.
前記無効ブロックは、前記論理アドレスに対応付けられた前記物理アドレスから特定される有効ページを含まないブロックである、 The invalid block is a block that does not include a valid page identified from the physical address associated with the logical address.
請求項1又は2記載のフラッシュメモリモジュール。The flash memory module according to claim 1 or 2.
前記最近プログラム時刻に基づくブロックに関してイレース処理が行われるタイミングの制御において、前記コントローラは、前記危険ブロックの代わりに無効ブロックをイレース処理対象ブロックとして優先的に選択する、
請求項1乃至3のうちのいずれか1項に記載のフラッシュメモリモジュール。 The controller detects a dangerous block which is a block in which data is programmed and there is a risk of lowering reliability.
In the control of the timing of the erase process is performed on the block based on the recent program time, the controller preferentially selects the invalid block as the erase target block instead of the previous SL dangerous blocks,
The flash memory module according to claim 1 .
無効ブロックが選択された回数であるブロック選択数が所定の値未満である場合、無効ブロックを前記イレース処理対象ブロックとして選択し、前記ブロック選択数を更新し、
前記ブロック選択数が所定の値以上である場合、前記危険ブロックを前記イレース処理対象ブロックとして選択し、前記ブロック選択数の値を初期値に戻す、
請求項4記載のフラッシュメモリモジュール。 In controlling the timing at which erase processing is performed for a block based on the latest program time, the controller
If the block selection number, which is the number of times the invalid block has been selected, is less than a predetermined value, select the invalid block as the erase process target block, and update the block selection number.
If the number of blocks selected is equal to or greater than a predetermined value, selecting the danger block as the erase target block, it returns the value of the block selection number to an initial value,
The flash memory module according to claim 4 .
前記コントローラは、複数の障害ビット閾値から、ブロックの前記経過プログラム時間に対応した障害ビット閾値を特定し、そのブロックの障害ビット数が前記特定された障害ビット閾値以上の場合、そのブロックを前記危険ブロックとして検出する、
請求項5記載のフラッシュメモリモジュール。 The dangerous block is a block having a failure bit number equal to or greater than a failure bit threshold value,
The controller identifies a failure bit threshold corresponding to the elapsed program time of a block from a plurality of failure bit thresholds, and if the number of failure bits of the block is equal to or greater than the identified failure bit threshold, the block is identified as the danger bit. Detect as a block,
The flash memory module according to claim 5 .
前記危険ブロックを検出する前記コントローラに関する前記経過プログラム時間は、前記第2の経過時間である、
請求項6記載のフラッシュメモリモジュール。 The elapsed program time is a first elapsed time that is an elapsed time from the time when data is recently programmed on the last page, and an elapsed time that is an elapsed time from the time when data is recently programmed on a page other than the last page. 2 elapsed time,
The elapsed program time for the controller that detects the dangerous block is the second elapsed time,
The flash memory module according to claim 6 .
前記複数のフラッシュメモリモジュールに接続されており、ブロックに対してデータのプログラム及びデータのイレースを行うフラッシュコントローラと
を有し、
各ブロックは、データのプログラムの単位であるページを複数有し、
前記フラッシュコントローラは、
無効ブロックを複数生成し、
前記複数の無効ブロックのそれぞれについて、ブロックにデータを最近プログラムした時刻である最近プログラム時刻を管理し、
前記複数の無効ブロックのうち、前記最近プログラム時刻からの経過時間である経過プログラム時間が相対的に長い無効ブロック内のデータをイレースする、
ストレージ装置。 Each, and multiple including a plurality of flash memory modules block which is a unit of data erase,
A flash controller connected to the plurality of flash memory modules and performing data programming and data erasing on the block;
Each block has a plurality of pages which are units of data program,
The flash controller
Generate multiple invalid blocks,
For each of the plurality of invalid blocks, managing the latest program time, which is the time at which data was recently programmed in the block,
Erasing data in an invalid block having a relatively long elapsed program time that is an elapsed time from the most recent program time among the plurality of invalid blocks;
Storage device.
前記コントローラは、無効ブロックの数が前記一定数以下となった場合に新たに無効ブロックを生成することにより、前記一定数より多くの無効ブロックを維持する、 The controller maintains more invalid blocks than the certain number by newly creating invalid blocks when the number of invalid blocks becomes equal to or less than the certain number.
請求項8記載のストレージ装置。The storage device according to claim 8.
前記無効ブロックは、前記論理アドレスに対応付けられた前記物理アドレスから特定される有効ページを含まないブロックである、 The invalid block is a block that does not include a valid page identified from the physical address associated with the logical address.
請求項8又は9記載のストレージ装置。The storage apparatus according to claim 8 or 9.
前記最近プログラム時刻に基づくブロックに関してイレース処理が行われるタイミングの制御において、前記フラッシュコントローラは、前記危険ブロックの代わりに無効ブロックをイレース処理対象ブロックとして優先的に選択する、
請求項8乃至10のうちのいずれか1項に記載のストレージ装置。 The flash controller detects a dangerous block that is a block in which data is programmed because there is a risk of lowering reliability.
In the control of the timing of the erase process is performed on the block based on the recent program time, the flash controller preferentially selects the invalid block as the erase target block instead of the previous SL dangerous blocks,
The storage apparatus according to any one of claims 8 to 10 .
無効ブロックが選択された回数であるブロック選択数が所定の値未満である場合、無効ブロックを前記イレース処理対象ブロックとして選択し、前記ブロック選択数を更新し、
前記ブロック選択数が所定の値以上である場合、前記危険ブロックを前記イレース処理対象ブロックとして選択し、前記ブロック選択数の値を初期値に戻す、
請求項11記載のストレージ装置。 In controlling the timing at which erase processing is performed on the block based on the latest program time, the flash controller
If the block selection number, which is the number of times the invalid block has been selected, is less than a predetermined value, select the invalid block as the erase process target block, and update the block selection number.
If the number of blocks selected is equal to or greater than a predetermined value, selecting the danger block as the erase target block, it returns the value of the block selection number to an initial value,
The storage apparatus according to claim 11 .
前記フラッシュコントローラは、複数の障害ビット閾値から、ブロックの前記経過プログラム時間に対応した障害ビット閾値を特定し、そのブロックの障害ビット数が前記特定された障害ビット閾値以上の場合、そのブロックを前記危険ブロックとして検出する、
請求項12記載のストレージ装置。 The dangerous block is a block having a failure bit number equal to or greater than a failure bit threshold value,
The flash controller specifies a failure bit threshold corresponding to the elapsed program time of a block from a plurality of failure bit thresholds, and if the number of failure bits of the block is greater than or equal to the specified failure bit threshold, the block is Detect as dangerous blocks,
The storage device according to claim 12 .
前記危険ブロックを検出する前記フラッシュコントローラに関する前記経過プログラム時間は、前記第2の経過時間である、
請求項13記載のストレージ装置。 The elapsed program time is a first elapsed time that is an elapsed time from the time when data is recently programmed on the last page, and an elapsed time that is an elapsed time from the time when data is recently programmed on a page other than the last page. 2 elapsed time,
The elapsed program time for the flash controller for detecting the dangerous block is the second elapsed time.
The storage apparatus according to claim 13 .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015024112A JP5989156B2 (en) | 2015-02-10 | 2015-02-10 | Flash memory module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015024112A JP5989156B2 (en) | 2015-02-10 | 2015-02-10 | Flash memory module |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014505787A Division JP5697796B2 (en) | 2011-08-29 | 2011-08-29 | Semiconductor memory device having electrically rewritable nonvolatile semiconductor memory |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015111453A JP2015111453A (en) | 2015-06-18 |
JP5989156B2 true JP5989156B2 (en) | 2016-09-07 |
Family
ID=53526174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015024112A Expired - Fee Related JP5989156B2 (en) | 2015-02-10 | 2015-02-10 | Flash memory module |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5989156B2 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001318829A (en) * | 2000-05-08 | 2001-11-16 | Funai Electric Co Ltd | Device and method for controlling rewriting of flash memory |
JP2008276832A (en) * | 2007-04-26 | 2008-11-13 | Toshiba Corp | Semiconductor memory device and driving method thereof |
JP4525816B2 (en) * | 2007-09-28 | 2010-08-18 | 株式会社デンソー | Electronic device and program |
JP4489127B2 (en) * | 2008-02-29 | 2010-06-23 | 株式会社東芝 | Semiconductor memory device |
JP2011145838A (en) * | 2010-01-13 | 2011-07-28 | Toshiba Corp | Storage device management device and method for managing storage device |
-
2015
- 2015-02-10 JP JP2015024112A patent/JP5989156B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2015111453A (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5697796B2 (en) | Semiconductor memory device having electrically rewritable nonvolatile semiconductor memory | |
US20200218655A1 (en) | Storage system and information processing system for controlling nonvolatile memory | |
CN107168884B (en) | Storage system, information processing system, and method for controlling nonvolatile memory | |
JP6523193B2 (en) | Storage system, information processing system and control method | |
JP6286622B2 (en) | Storage system | |
US9298534B2 (en) | Memory system and constructing method of logical block | |
US9111618B2 (en) | De-duplication in flash memory module | |
US9129699B2 (en) | Semiconductor storage apparatus and method including executing refresh in a flash memory based on a reliability period using degree of deterioration and read frequency | |
US10545684B2 (en) | Storage device | |
JP5956675B2 (en) | Storage device and storage device control method | |
US20180275894A1 (en) | Storage system | |
US9798475B2 (en) | Memory system and method of controlling nonvolatile memory | |
JP6102515B2 (en) | Information processing apparatus, control circuit, control program, and control method | |
WO2017077624A1 (en) | Nonvolatile memory device, and storage device having nonvolatile memory device | |
US10684785B2 (en) | Storage system | |
JP5858081B2 (en) | Memory controller, memory system, and memory control method | |
JP4636005B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP5989156B2 (en) | Flash memory module | |
US10915441B2 (en) | Storage system having non-volatile memory device | |
KR20120070408A (en) | Methods of non-volitile memory device for controlling block | |
JP4434171B2 (en) | Memory controller and flash memory system | |
JP3934659B1 (en) | Memory controller and flash memory system | |
JP6260395B2 (en) | Memory controller, memory system, and memory control method | |
JP2007172066A (en) | Memory controller and flash memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160105 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160301 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160510 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160701 |
|
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: 20160802 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160809 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5989156 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |