JP4488048B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP4488048B2
JP4488048B2 JP2007252134A JP2007252134A JP4488048B2 JP 4488048 B2 JP4488048 B2 JP 4488048B2 JP 2007252134 A JP2007252134 A JP 2007252134A JP 2007252134 A JP2007252134 A JP 2007252134A JP 4488048 B2 JP4488048 B2 JP 4488048B2
Authority
JP
Japan
Prior art keywords
block
physical block
physical
flash memory
logical
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
Application number
JP2007252134A
Other languages
English (en)
Other versions
JP2009086738A (ja
Inventor
直樹 向田
貴史 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2007252134A priority Critical patent/JP4488048B2/ja
Priority to US12/239,127 priority patent/US8239612B2/en
Publication of JP2009086738A publication Critical patent/JP2009086738A/ja
Application granted granted Critical
Publication of JP4488048B2 publication Critical patent/JP4488048B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
例えば、特許文献1に開示されているように、フラッシュメモリを用いたメモリシステムでは、特定の物理ブロックに書き換えが集中しないようにウェアー・レベリング(Wear-leveling)制御が行われている。このウェアー・レベリング制御には、大きくは2つの方式がある。
1つは、書き換えが行われないデータが記憶されている物理ブロックを放置しておき、それ以外の物理ブロックの書き換え回数が平均化されるように制御するウェアー・レベリング制御(パッシブ・ウェアー・レベリング(Passive-wear-leveling)制御方式)である。もう一つは、書き換えが行われないデータが記憶されている物理ブロックを含めて、全ての物理ブロックの書き換え回数が平均化されるように制御するウェアー・レベリング制御(アクティブ・ウェアー・レベリング(Active-wear-leveling)制御方式)である。
ここで、書き換えが行わないデータが記憶されている物理ブロックが少ない場合は、パッシブ・ウェアー・レベリング制御方式が適している。しかし、書き換えが行われないデータが記憶されている物理ブロックが多い場合は、アクティブ・ウェアー・レベリング制御方式が適している。従って、特許文献1には、メモリシステムに記憶されるデータの書き換え頻度に応じて(つまり、書き換えが行われないデータが記憶されている物理ブロックが多いか少ないかに応じて)、パッシブ・ウェアー・レベリング制御方式、アクティブ・ウェアー・レベリング制御方式又はこれらを組み合わせたウェアー・レベリング制御方式のうちのいずれかのウェアー・レベリング制御を行うことが記載されている。
特開2007−133683号公報
しかしながら、メモリシステムに記憶されるデータの書き換え頻度に応じて、適切なウェアー・レベリング制御方式を選択することは、必ずしも容易でない。
また、上述した特許文献1では、ウェアー・レベリング制御方式の選択や条件設定を、ユーザが行うようになっている。その際、ユーザは、適切なウェアー・レベリング制御方式を選択し、その条件設定を行う必要がある。これらは、ユーザにとって負担である。そして、ウェアー・レベリング制御方式の選択が適切でなかった場合、例えば、書き換えが行われないデータが記憶されている物理ブロックが少ないときにアクティブ・ウェアー・レベリング制御方式が選択されると、不必要なデータ転送が行われることが多くなる。
そこで、本発明は、殆ど書き換えが行われないデータ(書き換え頻度が低いデータ)が記憶されている物理ブロックが存在するときだけ、その物理ブロックを含めたウェアー・レベリング制御が行われるメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法を提供することを目的とする。
本発明の第1の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込み手段と、
前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウント手段と、
前記カウント値に基づいて決定されるカウント情報を、新たな前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
前記カウント値と前記物理ブロックに書き込まれている前記カウント情報に基づいて、前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するか否かを判断する判断手段と、
前記判断手段によって肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するデータ転送手段と、
を備える。
好適な実施形態では、前記カウント情報は、前記カウント値を2進数表示したときの所定範囲の桁(ビット)を切り出した数値情報である。
好適な実施形態では、前記肯定的な判断の対象の前記物理ブロックは、前記カウント値の前記カウント情報を示す部分の値との差が所定値以上である値を示すカウント情報が記憶されている前記物理ブロックである。
好適な実施形態では、前記所定値は、前記フラッシュメモリを構成する前記物理ブロックの数に基づいて決定された値(例えば、前記物理ブロックの数に所定数値(1以上の整数)を乗じた値)である。
本発明の第2の側面に従うフラッシュメモリシステムは、本発明の第1の側面に従うメモリコントローラと、前記メモリコントローラによってアクセスされるフラッシュメモリとを備える。
本発明の第3の側面に従うフラッシュメモリの制御方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込みステップと、
前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウントステップと、
前記カウント値に基づいて決定されるカウント情報を、新たな前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
前記カウント値と前記物理ブロックに書き込まれている前記カウント情報に基づいて、前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するか否かを判断する判断ステップと、
前記判断ステップによって肯定的な判断がなされた前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するデータ転送ステップと、
を備える。
殆ど書き換えが行われないデータ(書き換え頻度が低いデータ)が記憶されている物理ブロックが存在するときだけ、その物理ブロックを含めたウェアー・レベリング制御が行われるメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法を提供することができる。
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
図1は、本発明の一実施形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。
図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(Error Collection Code)ブロック11と、ROM(Read Only Memory)12とから構成される。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2にはアクセス対象領域のセクタ数が書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭のLBA(Logical Block Address)(後述)が書き込まれる。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータを一時的に格納する作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成されている。ワークエリア8には、例えば、論理ブロックと物理ブロックとの対応関係や、論理ページと物理ページとの対応関係等を示したアドレス変換テーブル(後述)等が記憶される。
バッファ9は、フラッシュメモリ2から読み出したデータを、ホストシステム4が受け取り可能な状態となるまで保持する。また、バッファ9は、フラッシュメモリ2に書き込むデータを、フラッシュメモリ2が書き込み可能な状態となるまで保持する。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error Collection Code)を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、メモリコントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、ROM12から読み出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインターフェースブロック10に処理を実行させる。
フラッシュメモリ2はNAND型フラッシュメモリからなる。NAND型フラッシュメモリは、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。物理ブロックは、複数のページ(物理ページ)で構成される。例えば、1個の物理ページは、所定サイズ(例えば2048バイト)のユーザ領域と、所定サイズ(例えば64バイト)の冗長領域とで構成され、1個の物理ブロックが、所定個数(例えば64個)の物理ページで構成されている。ユーザ領域は、ホストシステム4から与えられるデータを記憶するための領域であり、所定個数(例えば4個)の物理セクタ領域(512バイト単位の記憶領域)で構成されている。冗長領域は、誤り訂正符号(ECC:Error Collection Code)、論理アドレス情報、ブロックステータス(フラグ)、カウント情報(後述)等の付加データを記憶するための領域である。
論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。従って、記憶データが消去された物理ブロックのような、対応する論理ブロックの無い物理ブロックについては、その物理ブロックの冗長領域に、論理アドレス情報は格納されていない。なお、以下の説明では、「物理ブロックの冗長領域」とは、物理ブロック内の一又は複数の物理ページが備える冗長領域(例えば、先頭物理ページの冗長領域)で構成された記憶領域を指す。
ブロックステータス(フラグ)は、物理ブロックの良否を示すフラグである。尚、初期不良の物理ブロックについては、不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、論理セクタ領域と言う)に付けた通番であるLBA(Logical Block Address)で管理されている。又、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、1個又は複数個の物理ブロックが割り当てられる。この論理ブロックと物理ブロックの対応関係は、ゾーン単位で管理されることが多い。図2は、8個の論理ゾーンと8個の物理ゾーンを形成し、対応関係にある論理ゾーンと物理ゾーンの組毎に、論理ブロックと物理ブロックの対応関係を管理する場合の例を示している。この例では、LBA#0−#2047999からなる2048000個の論理セクタ領域を、8192個の物理ブロックからなるフラッシュメモリ2側の記憶領域に割り当てている。
図2では、アドレス(LBA)が連続する256個の論理セクタ領域をまとめたものを論理ブロックとし、この論理ブロックに通し番号を付している。以下、論理ブロックに付した通し番号を論理ブロック番号(LBN)と言う。例えば、LBA#0−#255の256個の論理セクタ領域は、LBN#0の論理ブロックに属し、LBA#256−#511の256個の論理セクタ領域はLBN#1の論理ブロックに属している。このように、LBA#0−#2047999の2048000個の論理セクタ領域は、LBN#0−#7999の8000個の論理ブロックのいずれかに属している。
更に、この論理ブロックを複数個まとめたものを論理ゾーンとし、この論理ゾーンに通し番号を付している。以下、論理ゾーンに付した通し番号を論理ゾーン番号(LZN)と言う。この例では、8個の論理ゾーン(LZN#0−#7)が形成され、それぞれの論理ゾーンは、LBNが連続する1000個の論理ブロックから構成されている。尚、LBNが連続する論理ブロックを、異なる論理ゾーンに順次振り分けるようにして論理ゾーンを形成してもよい。例えば、LBN#0の論理ブロックはLZN#0の論理ゾーンに、LBN#1の論理ブロックはLZN#1の論理ゾーンに、LBN#2の論理ブロックはLZN#2の論理ゾーンにという順番でLZN#7の論理ゾーンまで振り分けていく。以下同様に、LBN#8の論理ブロックをLZN#0の論理ゾーンに、LBN#9の論理ブロックをLZN#1の論理ゾーンに、LBN#10の論理ブロックをLZN#2の論理ゾーンに振り分けていく。
一方、フラッシュメモリ2側は、8192個の物理ブロックにより、8個の物理ゾーンが形成されている。8192個の物理ブロックには、固有の物理ブロックアドレス(PBA)が付されている。又、8個の物理ゾーンには、通し番号を付されている。以下、物理ゾーンに付された通し番号を、物理ゾーン番号(PZN)と言う。各物理ゾーンは、PBAが連続する物理ブロックが1024個で構成されている。尚、PBAが連続しない物理ブロックで物理ゾーンを形成するようにしてもよい。
論理ゾーンと物理ゾーンの対応関係については、物理ゾーンのPZNと、当該PZNと同じ値のLZNを有する論理ゾーンとを対応させている。つまり、PZN#0の物理ゾーンに対してLZN#0の論理ゾーンが対応し、PZN#1の物理ゾーンに対してLZN#1の論理ゾーンが対応する。
尚、論理ブロックと物理ブロックとの対応関係は、通常、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を記述したテーブルであり、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成される。このアドレス変換テーブルを作成するときは、作成対象の物理ゾーンに含まれる物理ブロックの冗長領域から論理アドレス情報が順次読み出され、読み出された論理アドレス情報に基づいて論理ブロックと物理ブロックとの対応関係が順次記述される。
また、フラッシュメモリ内の物理ブロックには、出荷時から不良である先天性の不良ブロックが含まれている。更に、出荷時に良品の物理ブロックであっても、使用開始後に劣化して不良ブロックになる物理ブロック(後天性の不良ブロック)もある。従って、本実施の形態では、論理ゾーンに含まれる論理ブロックの数よりも、物理ゾーンに含まれる物理ブロックの数の方が多い。具体的には、例えば、論理ゾーンに含まれる論理ブロックの数は1000個であるのに対し、物理ゾーンに含まれる物理ブロックの数は1024個としている。
また、上述のように論理ゾーンと物理ゾーンを形成せずに論理ブロックと物理ブロックとの対応関係を管理するようにしてもよい。この場合、全ての物理ブロックを対象に論理ブロックと物理ブロックとの対応関係を管理することになるので、アドレス変換テーブルを作成するときの時間が長くなる。従って、アドレス変換テーブルはフラッシュメモリ2に保存しておくことが好ましい。より好ましくは、メモリコントローラ3内に、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetic Random Access Memory)等の不揮発性RAMからなる記憶領域を設け、この記憶領域にアドレス変換テーブルを保持する。このような不揮発性RAMにアドレス変換テーブルを保持した場合には、不揮発性RAM上でアドレス変換テーブルを更新することができる。
本実施の形態の書き込み処理では、ホストシステム4によって、コマンドレジスタR1に、書き込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタR2に、書き込むデータのセクタ数が書き込まれ、LBAレジスタR3には、書き込みを開始する先頭データに対応するLBAが書き込まれる。セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロック内のデータが書き込まれていない物理セクタ領域の先頭から、ホストシステム4から与えられるデータが書き込まれる。
セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて判別される論理アクセス領域が複数個の論理ブロックに跨っている場合は、データの書き込み先になる物理ブロックも複数個になる。従って、論理アクセス領域が複数個の論理ブロックに跨っている場合は、論理アクセス領域が属する論理ブロック毎に領域を分割してデータの書き込み処理が行われる。例えば、論理アクセス領域が2個の論理ブロック(第1の論理ブロックと第2の論理ブロック)に跨っている場合は、第1の論理ブロックに対応する物理ブロックに対する書き込み処理と、第2の論理ブロックに対応する物理ブロックに対する書き込み処理とが行われる。第1の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータは、第1の論理ブロックに対応する物理ブロック内のデータが書き込まれていない物理セクタ領域に書き込まれる。第2の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータは、第2の論理ブロックに対応する物理ブロック内のデータが書き込まれていない物理セクタ領域に書き込まれる。
さて、前述したように、NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作は物理ブロック単位で行われる。データ消去動作は、論理アクセス領域が属する論理ブロック(以下、「書込み先論理ブロック」と言う)に対応した物理ブロックに記憶されているデータ又はそのデータに対応する最新データが別の物理ブロックに書き込まれ、その物理ブロックに記憶されているデータが全て別の物理ブロックに書き込まれたデータで置き換えられたときに行われる。すなわち、書込み先論理ブロックに対応した物理ブロックに記憶されているデータが、全て別の物理ブロックに書き込まれたデータで置き換えられた場合には、その物理ブロックに記憶されているデータが消去され、前述したアドレス変換テーブル(論理ブロックと物理ブロックとの対応関係を記述したテーブル)に記述されている論理ブロックと物理ブロックとの対応関係が更新される。また、書込み先論理ブロックを新たに割り当てる空きの物理ブロック(論理ブロックが未割当ての物理ブロック)を検索するときには、例えば、対応する物理ゾーン内における先頭の物理ブロックから末尾の物理ブロックへと順次に空きの物理ブロックの検索が行われる。そして、検出された空きの物理ブロックに、書込み先論理ブロックが割り当てられる。
以上のように、物理ブロックに記憶されているデータの書き換えが行われる場合には、その物理ブロックとは別の物理ブロック(空きの物理ブロック)に、その物理ブロックと対応する論理ブロックが新たに割り当てられることになる。また、書込み先論理ブロックに対応する物理ブロックがない場合にも、空きの物理ブロックに論理ブロックが新たに割り当てられることになる。本実施の形態では、メモリコントローラ3に、物理ブロックに対して新たに論理ブロックを割り当てる毎にカウント値をカウントアップするカウンタ機能が設けられている。具体的には、例えば、マイクロプロセッサ6が、カウンタの役割を果たし、物理ブロックに対して新たに論理ブロックを割り当てる毎に、カウント値をカウントアップする。カウント値は、メモリコントローラ3内の記憶領域、例えばワークエリア6(SRAM等の揮発性メモリ)に記憶され、ワークエリア6に記憶されているカウント値がカウントアップされる。ワークエリア6に記憶されているカウント値は、適時に(例えば、所定回数カウント値が更新される都度に)、フラッシュメモリ2に複写される(書き込まれる)。メモリコントローラ3の電源が遮断された場合、ワークエリア6に記憶されているカウント値は消去されるが、メモリコントローラ3の電源が投入された場合に、フラッシュメモリ2に記憶されているカウント値がワークエリア6に読み出され、以後、その読み出されたカウント値が、カウントアップされる。なお、カウント値は、カウントアップに限らず、カウントダウンなど他の規則に従って更新されても良い。また、カウント値の更新が行われるタイミングは、本実施の形態では、物理ブロックに対して新たに論理ブロックを割り当てる毎であるが、それに限らず、他のタイミング、例えば、物理ブロックの記憶データの消去が行われるタイミングであっても良い。また、メモリコントローラ3内に、FeRAM、MRAM等の不揮発性RAMからなる記憶領域を設け、この記憶領域にカウント値を保持するようにしてもよい。このような不揮発性RAMにカウント値を保持するようにした場合、不揮発性RAM上でカウント値を更新することができ、カウント値をフラッシュメモリ2に複写する必要がなくなる。
物理ブロックに対して新たに論理ブロックが割り当てられた場合、新たに論理ブロックが割り当てられた物理ブロックの冗長領域に、その新たに割り当てられた論理ブロックを示す論理アドレス情報と、カウントアップ前のカウント値(カウントアップ後のカウント値でも良い)に基づくカウント情報とを書き込む。具体的には、例えば、図3に示すように、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105に、論理アドレス情報として、割り当てられた論理ブロックを示すLBNが書き込まれ、カウント情報として、カウントアップ前の4バイトのカウント値の上位3バイトの部分が書き込まれる。
より具体的に言えば、図3に示す例によれば、(3A)に示すように、カウント値(16進数表示)が、“00 00 3F FAh”の場合において、空きの物理ブロックとして検出されたPBA#7の物理ブロックに、LBN#40の論理ブロックが新たに割り当てられると、そのPBA#7の物理ブロックの冗長領域105に、新たに割り当てられた論理ブロックのLBN“#40”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 3Fh”が書き込まれる。そして、カウント値(16進数表示)が、“00 00 3F FAh”から“00 00 3F FBh”にカウントアップされる。
次に、例えば、(3B)に示すように、空きの物理ブロックとして検出されたPBA#12の物理ブロックに、LBN#41の論理ブロックが新たに割り当てられると、そのPBA#12の物理ブロックの冗長領域105に、新たに割り当てられた論理ブロックのLBN“#41”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 3Fh”が書き込まれる。そして、カウント値が、“00 00 3F FBh”から“00 00 3F FCh”にカウントアップされる。
以後も、同様にして、新たに論理ブロックが物理ブロックに割り当てられる毎に、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105に、その割り当てられた論理ブロックのLBNと、カウントアップ前のカウント値の上位3バイトであるカウント情報とが書き込まれ、カウント値がカウントアップされる。例えば、(3C)に示すように、PBA#18の物理ブロックにLBN#42の論理ブロックが割り当てられた場合、PBA#18の物理ブロックの冗長領域105に、LBN“#42”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FCh”から“00 00 3F FDh”にカウントアップされる。その次に、(3D)に示すように、PBA#22の物理ブロックにLBN#43の論理ブロックが割り当てられた場合、PBA#22の物理ブロックの冗長領域105に、LBN“#43”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FDh”から“00 00 3F FEh”にカウントアップされる。その次に、(3E)に示すように、PBA#27の物理ブロックにLBN#44の論理ブロックが割り当てられた場合、PBA#27の物理ブロックの冗長領域105に、LBN“#44”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FEh”から“00 00 3F FFh”にカウントアップされる。その次に、(3F)に示すように、PBA#31の物理ブロックの物理ブロックにLBN#45の論理ブロックが割り当てられた場合、PBA#31の物理ブロックの冗長領域105に、LBN“#45”及びカウント情報“00 00 3Fh”が書込まれ、カウント値が、“00 00 3F FFh”から“00 00 40 00h”にカウントアップされる。
尚、新たに論理ブロックが割り当てられる物理ブロックを検索するための空きブロック検索は、物理ゾーン内の物理ブロック又はホストシステムの記憶領域として用いられる全ての物理ブロックを対象にして行われる。物理ゾーン内の物理ブロックを対象とした検索の場合、物理ゾーン内の先頭の物理ブロックから末尾の物理ブロックに向かって、順次、空きブロックの検索が行われる。ホストシステムの記憶領域として用いられる全ての物理ブロックを対象とした検索の場合、それら全ての物理ブロックについて先頭の物理ブロックから末尾の物理ブロックに向かって、順次、空きブロックの検索が行われる。このように、検索対象の範囲に含まれる物理ブロックについて、先頭の物理ブロックから末尾の物理ブロックに向かう順番の空きブロックの検索が繰り返し行われることにより、殆ど書き換えが行われないデータ(書き換え頻度が低いデータ)が記憶されている物理ブロックがなければ、検索対象の範囲に含まれる物理ブロックの書き換え回数は、ほぼ均等になることが期待される。
以上の説明によれば、データの書き換え(又は書き込み)を行う過程で、例えば、物理ブロックに対して8192個の論理ブロックの割り当てが新たに行われると、カウント値は、0(16進数表示:00 00 00 00h)から8192(16進数表示:00 00 20 00h)までカウントアップされる。また、各物理ブロックに対して新たな論理ブロックが割り当てられたときに、各物理ブロックの冗長領域105に、カウント値の上位3バイトがカウント情報として書き込まれる。従って、各物理ブロックの冗長領域105には、“00 00 00h”から“00 00 1Fh”までのいずれかの値がカウント情報として書き込まれている。
その後、更に8192個の論理ブロックの割り当てが新たに行われた場合、カウント値は、8192(16進数表示:00 00 20 00h)から16384(16進数表示:00 00 40 00h)までカウントアップされる。この期間に、新たな論理ブロックが割り当てられた物理ブロックの冗長領域105には、“00 00 20h”から“00 00 3Fh”までのいずれかの値がカウント情報として書き込まれている。
ここで、“00 00 1Fh”以下の値がカウント情報として書き込まれている物理ブロックについては、カウント値が8192(16進数表示:00 00 20 00h)から16384(16進数表示:00 00 40 00h)までカウントアップされる期間に、新たな論理ブロックが割り当てられていないことが分かる。なぜなら、その期間に新たな論理ブロックが割り当てられた物理ブロックの冗長領域105には、カウント情報として“00 00 20”から“00 00 3F”までのいずれかの値がカウント情報として書き込まれ、“00 00 1Fh”以下の値のカウント情報が書き込まれることは無いためである。また、物理ブロックの総数を、1024個と仮定した場合(図2の例では、8192個であるが、ここでは以降の説明を分かり易くするために、物理ブロックの総数を1024個とする)、この期間中に少なくとも8回(8192÷1024)新たな論理ブロックが割り当てられた物理ブロックが存在することになる。
本実施の形態では、例えば、カウント値が16384(16進数表示:00 00 40 00h)にカウントアップされたときに、書き換え頻度の低いデータが記憶されている物理ブロックとして、“00 00 1Fh”以下の値がカウント情報として書き込まれている物理ブロックの検索が行われる(例えば、先頭の物理ブロックから末尾の物理ブロックにかけて順次にそのような物理ブロックが検索される)。そして、そのような物理ブロックが検出された場合に、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)される。具体的には、その検出された物理ブロック(以下、「転送元の物理ブロック」と言う)に記憶されているデータの転送先となる物理ブロック(以下、「転送先の物理ブロック」と言う)を探す空きブロック検索が行われる。この検索で検出された空きブロック(転送先の物理ブロック)に対して、転送元の物理ブロックに割り当てられている論理ブロックが新たに割り当てられ、この転送先の物理ブロックに、転送元の物理ブロックに記憶されているデータが転送(複写)される。そして、この転送先の物理ブロックの冗長領域105に、新たに割り当てられた論理ブロックのLBN(転送元の物理ブロックに割り当てられている論理ブロックのLBN)と、カウントアップ前のカウント値の上位3バイトであるカウント情報とが書き込まれる。その後、転送元の物理ブロックに記憶されているデータと、その物理ブロックの冗長領域105に記憶されているLBN及びカウント情報等の付加データとが消去される。つまり、転送元の物理ブロックのユーザ領域に記憶されているデータと冗長領域に記憶されている付加データが一括して消去される。また、物理ブロックに対して新たに論理ブロックが割り当てられたため、カウント値がカウントアップされる。以下、図4を参照して具体的に説明する。
カウント値が16384(16進数表示:00 00 40 00h)にカウントアップされた場合に、“00 00 1Fh”以下の値を表すカウント情報が記憶されている物理ブロックの検索が行われる。この検索により、まず、“00 00 1Ah”を記憶しているPBA#6の物理ブロックが検出される。この場合、そのPBA#6の物理ブロックに記憶されているデータが、空きの物理ブロックとして検出されたPBA#34の物理ブロックに複写され、且つ、そのPBA#34の物理ブロックの冗長領域105に、PBA#6の物理ブロックに割り当てられていた論理ブロックのLBN“#6”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 40h”とが書き込まれる((4D)参照)。その後、PBA#6の物理ブロックに記憶されているデータと、そのPBA#6の物理ブロックの冗長領域105に記憶されているLBN“#6”及びカウント情報“00 00 1Ah”
等の付加データとが消去される((4A)参照)。また、カウント値が、“00 00 40 00h”から“00 00 40 01h”にカウントアップされる。
次に、“00 00 10h”を記憶しているPBA#15の物理ブロックが検出される。この場合、そのPBA#15の物理ブロックに記憶されているデータが、空きの物理ブロックとして検出されたPBA#35の物理ブロックに複写され、且つ、そのPBA#35の物理ブロックの冗長領域105に、PBA#15の物理ブロックに割り当てられていた論理ブロックのLBN“#15”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 40h”とが書き込まれる((4E)参照)。その後、PBA#15の物理ブロックに記憶されているデータと、そのPBA#15の物理ブロックの冗長領域105に記憶されているLBN“#15”及びカウント情報“00 00 10h”
等の付加データとが消去される((4B)参照)。また、カウント値が、“00 00 40 01h”から“00 00 40 02h”にカウントアップされる。
次に、“00 00 0Fh”を記憶しているPBA#16の物理ブロックが検出される。この場合、そのPBA#16の物理ブロックに記憶されているデータが、空きの物理ブロックとして検出されたPBA#36の物理ブロックに複写され、且つ、そのPBA#36の物理ブロックの冗長領域105に、PBA#16の物理ブロックに割り当てられていた論理ブロックのLBN“#16”と、カウントアップ前のカウント値の上位3バイトであるカウント情報“00 00 40h”とが書き込まれる((4F)参照)。その後、PBA#16の物理ブロックに記憶されているデータと、そのPBA#16の物理ブロックの冗長領域105に記憶されているLBN“#16”及びカウント情報“00 00 0Fh”
等の付加データとが消去される((4C)参照)。また、カウント値が、“00 00 40 02h”から“00 00 40 03h”にカウントアップされる。
以上により、カウント値が8192(16進数表示:00 00 20 00h)から16384(16進数表示:00 00 40 00h)までの期間に新たな論理ブロックが割り当てられていない物理ブロック、つまり、“00 00 1Fh”以下の値がカウント情報として書き込まれている物理ブロックが、書き込み頻度の低い物理ブロックとみなされて、その物理ブロックを含めたウェアー・レベリング制御が行われことになる。言い換えれば、現在のカウント値における上位3バイト(つまりカウント情報に相当する部分)である“00 00 40”との差が所定値以上であるカウント情報(“00 00 1Fh”以下の値を示すカウント情報)が記憶されている物理ブロックが、書き込み頻度の低い物理ブロックとみなされる。尚、この書き込み頻度の低い物理ブロックの検索処理と、この検索処理で検出された物理ブロックに記憶されているデータを別の物理ブロックに複写するデータ転送処理は、必ずしもカウント値が16384(16進数表示:00 00 40 00h)に達した直後に開始する必要はなく、カウント値が16384(16進数表示:00 00 40 00h)に達した後のアイドル時間(例えばホストシステム4からのアクセスが無い期間)に行うようにしてもよい。また、これらの処理の実行中にホストシステム4からのアクセスがあったときは、一旦、処理を中止し、その後、再度アイドル時間が発生したときに処理を再開するようにしてもよい。
この後、更にカウント値が16384(16進数表示:00 00 40 00h)から24576(16進数表示:00 00 60 00h)までカウントアップされたときには、“00 00 3Fh”以下の値がカウント情報として書き込まれている物理ブロックの検索が行われる。そのような物理ブロックが検出された場合には、その物理ブロックに記憶されているデータが別の物理ブロックに複写(転送)される。
このように、書き換えが頻繁に行われていない物理ブロックの検索は、物理ブロックの総数(例えば1024)に所定数(例えば、8)を乗じて得られた個数分(例えば8192個分)の新たな論理ブロックの割り当てが行われる毎に実行することが好ましい。つまり、物理ブロックの総数をn(nは1以上の整数)、所定数k(kは1以上の整数)とした場合、カウント値がn×k増加する毎に、書き換えが頻繁に行われていない物理ブロックの検索が行われる。この検索では、カウント値がn×k増加する期間に新たな物理ブロックが割り当てられなかった物理ブロックの検索が行われ、この検索で検出された物理ブロックが書き換え頻度の低いデータが記憶されている物理ブロックとみなされる。そして、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)される。
尚、書き換え頻度の低いデータが記憶されている物理ブロックとみなされた物理ブロックは、その物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)された後に記憶データが消去され、空きの物理ブロックとされる。空きとされた物理ブロックは、それまでの書き換え回数が少ない可能性があるが、空きブロックになったことにより、この後の書き換え回数が多くなる可能性が高くなる。逆に、データの複写先となった物理ブロックは、それまでの書き換え回数が多い可能性があるが、書き換え頻度の低いデータが複写されたことにより、この後の書き換え回数が少なくなる可能性が高くなる。このような原理により、フラッシュメモリ2における複数の物理ブロックの書き換え回数が均等化されることが期待できる。
なお、フラッシュメモリ内の物理ブロックの総数は、フラッシュメモリ2に書き込まれているID情報(フラッシュメモリ2の構成に関する情報)に基づいて求めることができる。具体的には、例えば、ID情報には、フラッシュメモリ2全体の記憶容量を示す情報と、ブロックサイズ(1個の物理ブロックの記憶容量)を示す情報とが含まれており、それ故、フラッシュメモリ2全体の記憶容量とブロックサイズとから物理ブロックの総数を計算することができる。また、カウント情報は、カウント値の全てのビットであっても一部のビットであってもよいが、所定の期間(カウント値が所定値分増加するまでの期間)書き換えられていない物理ブロックを判別できる情報でなければならない。この判別ができる範囲でカウント値の一部のビットをカウント情報とするときは、冗長領域の記憶容量、冗長領域に書き込まれるカウント情報以外の情報の容量を考慮してカウント情報のビット数を決定しても良い。
以下、本実施の形態で行われる処理の流れの概要を、図5を参照して説明する。
本実施の形態に係るウェアー・レベリング制御を行う場合には、まず、初期設定が行われる(ステップ101)。具体的には、例えば、メモリコントローラ3が、ID情報をフラッシュメモリ2から読出し、そのID情報から把握されるフラッシュメモリ2全体の記憶容量とブロックサイズとを基に、物理ブロックの総数nを算出する。更に、算出されたnと上記所定数kに基づいてカウント値がn×k増加する毎に上記検索処理と上記データ転送処理を実行することを決定する。また、カウンタのカウント値が0に設定される。なお、所定数kは、予め決められていても良いし、物理ブロックの総数nに基づいて決定されても良い。また、カウント値の上位何バイトをカウント情報として用いるかは、予め決められていても良いし、物理ブロックの総数nに基づいて決定されても良い。ここでは、カウント値の上位3バイトをカウント情報として用いる。
初期設定の後、ホストシステム4から書込みコマンドを受信した場合、その書込みコマンドで指定された論理アクセス領域が属する論理ブロックに対応させる物理ブロックを新たに設定する必要があるかどうかを判断する(ステップ102)。その必要がある場合は(ステップ102でYES)、空きブロックの検索が行われ、検出された空きブロックに書込みコマンドで指定された論理アクセス領域が属する論理ブロックが割り当てられる(ステップ103)。具体的には、検出された空きブロック(物理ブロック)の冗長領域105に、書込みコマンドで指定された論理アクセス領域が属する論理ブロックのLBNと、カウンタのカウント値の上位3バイトであるカウント情報とが書き込まれ、その後、カウンタのカウント値がカウントアップされる。
ステップ103でカウントアップされたカウンタのカウント値が、(n×k)の倍数であるか否かが判定される(ステップ104)。(n×k)の倍数とは、前述の例(n=1024、k=8)で言えば、8192、16384、24576、…である。
カウントアップ後のカウント値が、(n×k)の倍数であるとの判定結果であれば(ステップ104でYES)、書き換え頻度の低いデータが記憶されている物理ブロックの検索処理が行われ、書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合には、検出された物理ブロックに記憶されているデータを別の物理ブロックに複写するデータ転送処理が行われる(ステップ105)。具体的には、カウンタのカウント値が(n×k)の倍数に達したときに、カウント値が(n×k)増加した期間内に論理ブロックが新たに割り当てられていない物理ブロックが検索される。つまり、カウンタのカウント値が(n×k)の倍数に達したときに、そのカウント値から(n×k)の値を引いた値よりも小さい値に対応するカウント情報が書き込まれている物理ブロックの検索が行われる。そして、これに該当する物理ブロックが検出された場合には、検出された物理ブロックの記憶されているデータが別の物理ブロックに転送された後、検出された物理ブロックの記憶データが消去される。
ステップ105では、書き換え頻度の低いデータが記憶されている物理ブロックが検出されなければ、データ転送処理は行われないが、書き換え頻度の低いデータが記憶されている物理ブロックが検出されば、データ転送処理が行われる。つまり、書き換え頻度の低いデータが記憶されている物理ブロックが存在するときだけ、その物理ブロックに記憶されている書き換え頻度の低いデータを別の物理ブロックに複写するデータ転送処理が行われる。
以上が、本実施形態についての説明である。
本実施形態によれば、メモリコントローラ2に、物理ブロックに対して新たに論理ブロックが割り当てられる毎にカウント値をカウントアップするカウンタ機能が設けられる。そして、新たに論理ブロックが割り当てられた物理ブロックの冗長領域105には、カウンタ機能によって管理されているカウント値に基づくカウント情報が書き込まれる。そして、物理ブロックの冗長領域105にカウント情報が書き込まれた後に、カウント値がカウントアップされる。
更に、所定のタイミングで(前述の例では、カウント値がn×k増加する毎に)、書き換え頻度が低いデータが記憶されている物理ブロックの検索が行われる。この検索処理では、カウンタ機能によって管理されているカウント値のカウント情報を示す部分(つまり上位3バイト)の値との差が所定値以上である値を示すカウント情報が記憶されている物理ブロックが、書き換え頻度が低いデータが記憶されている物理ブロックとみなされ、それに該当する物理ブロックの検索が行われる。そして、そのような物理ブロックが検出された場合にのみ、検出された物理ブロックに記憶されているデータが別の物理ブロックに転送(複写)される。つまり、本実施形態によれば、書き換え頻度が低いデータが記憶されている物理ブロックが存在するときだけ、その物理ブロックを含めたウェアー・レベリング制御が行われる。
また、本実施形態によれば、どんな場合に書き換え頻度が低いデータが記憶されている物理ブロックを検索するかという条件の設定は、フラッシュメモリ2から読み出されたID情報に基づき算出された物理ブロック総数nに基づいて自動的に行われるため、ユーザによる条件設定は不要である。
以上、上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、書き換え頻度が低いデータが記憶されている物理ブロックを検索するタイミングは、カウント値がn×k増加する毎でなくてもよく、例えば、物理ブロックを検索するタイミングを設定するためのテーブルを設け、そのテーブルに基づいて書き換え頻度が低いデータが記憶されている物理ブロックを検索するタイミングを決定してもよい。このテーブルの例としては、物理ブロックの個数とその個数に対応する検索のタイミング(例えば、物理ブロックの個数が512個の場合はカウント値が4096増加する毎)を記述したテーブルが挙げられる。
本発明の一実施形態に係るフラッシュメモリシステムの概略構成を示すブロック図である。 論理ブロックと物理ブロックの対応関係を示す図である。 物理ブロックに対して新たに論理ブロックが割り当てられた場合に行われる処理の説明図である。 書き換え頻度の低いデータが記憶されている物理ブロックが検出された場合に行われるウェアー・レベリング制御の説明図である。 本発明の一実施形態で行われる処理の流れを示すフローチャートである。
符号の説明
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ

Claims (9)

  1. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
    前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込み手段と、
    前記フラッシュメモリ内のいずれかの前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウント手段と、
    前記カウント値に基づいて決定されるカウント情報を、新たに前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込み手段と、
    前記カウント値と前記物理ブロックに書き込まれている前記カウント情報に基づいて、前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するか否かを判断する判断手段と、
    前記判断手段によって肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するデータ転送手段と
    を備え
    前記カウント値は、前記フラッシュメモリが有する全ての前記物理ブロックに共通したカウント値である、
    メモリコントローラ。
  2. 前記カウント情報は、前記カウント値を2進数表示したときの所定範囲の桁を切り出した数値情報である、
    請求項1に記載のメモリコントローラ。
  3. 前記肯定的な判断の対象の前記物理ブロックは、前記カウント値の前記数値情報に対応する部分の値との差が所定値以上である値を示すカウント情報が記憶されている前記物理ブロックである、
    請求項に記載のメモリコントローラ。
  4. 前記所定値は、前記フラッシュメモリを構成する前記物理ブロックの数に基づいて決定された値である、
    請求項3に記載のメモリコントローラ。
  5. 請求項1乃至4のうちのいずれか1項に記載のメモリコントローラと、
    前記メモリコントローラによってアクセスされるフラッシュメモリと、
    を備えるフラッシュメモリシステム。
  6. ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    ホストシステム側の論理アドレス空間における複数セクタの領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
    前記アクセス指示により指定された領域が属する前記論理ブロックと対応する前記物理ブロックにホストシステム側から与えられたデータを書き込むデータ書き込みステップと、
    前記フラッシュメモリ内のいずれかの前記物理ブロックに対して新たに前記論理ブロックが割り当てられる毎にカウント値を更新するカウントステップと、
    前記カウント値に基づいて決定されるカウント情報を、新たな前記論理ブロックが割り当てられた前記物理ブロックに書き込むカウント情報書き込みステップと、
    前記カウント値と前記物理ブロックに書き込まれている前記カウント情報に基づいて、前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するか否かを判断する判断ステップと、
    前記判断ステップで肯定的な判断がなされたときに、前記肯定的な判断の対象の前記物理ブロックに記憶されているデータを別の前記物理ブロックに転送するデータ転送ステップと
    を備え
    前記カウント値は、前記フラッシュメモリが有する全ての前記物理ブロックに共通したカウント値である、
    フラッシュメモリの制御方法。
  7. 前記カウント情報は、前記カウント値を2進数表示したときの所定範囲の桁を切り出した数値情報である、
    請求項6に記載のフラッシュメモリの制御方法。
  8. 前記肯定的な判断の対象の前記物理ブロックは、前記カウント値の前記数値情報に対応する部分の値との差が所定値以上である値を示すカウント情報が記憶されている前記物理ブロックである、
    請求項に記載のフラッシュメモリの制御方法。
  9. 前記所定値は、前記フラッシュメモリを構成する前記物理ブロックの数に基づいて決定された値である、
    請求項に記載のフラッシュメモリの制御方法。
JP2007252134A 2007-09-27 2007-09-27 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Active JP4488048B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007252134A JP4488048B2 (ja) 2007-09-27 2007-09-27 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US12/239,127 US8239612B2 (en) 2007-09-27 2008-09-26 Memory controller, flash memory system with memory controller, and control method of flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007252134A JP4488048B2 (ja) 2007-09-27 2007-09-27 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2009086738A JP2009086738A (ja) 2009-04-23
JP4488048B2 true JP4488048B2 (ja) 2010-06-23

Family

ID=40660131

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007252134A Active JP4488048B2 (ja) 2007-09-27 2007-09-27 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4488048B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4821844B2 (ja) * 2008-12-22 2011-11-24 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4821845B2 (ja) * 2008-12-22 2011-11-24 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952740B2 (ja) * 2009-04-13 2012-06-13 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
JP6167646B2 (ja) * 2013-04-30 2017-07-26 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法

Also Published As

Publication number Publication date
JP2009086738A (ja) 2009-04-23

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010287049A (ja) メモリシステムおよびメモリシステムの管理方法
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952740B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4821845B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5858081B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4821844B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4952742B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9465730B2 (en) Flash memory device
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4760826B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

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: 20100309

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: 20100322

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4488048

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: 20140409

Year of fee payment: 4