JP2009245163A - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP2009245163A JP2009245163A JP2008090948A JP2008090948A JP2009245163A JP 2009245163 A JP2009245163 A JP 2009245163A JP 2008090948 A JP2008090948 A JP 2008090948A JP 2008090948 A JP2008090948 A JP 2008090948A JP 2009245163 A JP2009245163 A JP 2009245163A
- Authority
- JP
- Japan
- Prior art keywords
- block
- physical
- defective
- reservation
- blocks
- 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.)
- Granted
Links
Images
Abstract
【課題】システムデータの書き込み先の物理ブロックの管理を容易にし、且つ、不良ブロックが含まれる物理ブロック群内の良品ブロックを有効に使用できる記憶領域管理技術を提供する。
【解決手段】メモリコントローラは、異なるフラッシュメモリに含まれるアドレスが同一の物理ブロックを集めた物理ブロック群に対して論理ブロックに割り当てる管理と、複数個のフラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックの予約を行う。このシステムブロックの予約では、不良ブロックが含まれる物理ブロック群内の良品ブロックが、不良ブロックが含まれていない物理ブロック群内の物理ブロックよりも優先的に予約される。メモリコントローラは、システムブロックとして予約された物理ブロック(良品ブロック)にシステムデータを書き込む。
【選択図】図2
【解決手段】メモリコントローラは、異なるフラッシュメモリに含まれるアドレスが同一の物理ブロックを集めた物理ブロック群に対して論理ブロックに割り当てる管理と、複数個のフラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックの予約を行う。このシステムブロックの予約では、不良ブロックが含まれる物理ブロック群内の良品ブロックが、不良ブロックが含まれていない物理ブロック群内の物理ブロックよりも優先的に予約される。メモリコントローラは、システムブロックとして予約された物理ブロック(良品ブロック)にシステムデータを書き込む。
【選択図】図2
Description
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
フラッシュメモリを記憶媒体として用いた記憶装置では、特許文献1に記載されているように、ホストシステムから与えられるユーザーデータの他に、アドレス変換テーブルのような、記憶データを管理するための情報が、フラッシュメモリに書き込まれる。従って、このような管理情報を保存するための領域が、フラッシュメモリ内に確保される。
また、フラッシュメモリを記憶媒体として用いた記憶装置では、特許文献2や特許文献3に記載されているように、アクセス効率を向上させるため、異なるフラッシュメモリに属する物理ブロックを複数個集めた物理ブロック群(グループ)を構成し、同一の物理ブロック群に属する物理ブロックに対して並行して、又はインターリーブ方式でアクセスする場合がある。
フラッシュメモリを記憶媒体として用いたフラッシュメモリシステムでは、管理情報の書き込み先の領域を、フラッシュメモリ内に適宜設定することができる。従って、管理情報の書き込み先の物理ブロックを固定せずに、任意の物理ブロックを管理情報の書き込み先として使用したり、ユーザーデータの書き込み先として使用したりするようにしてもよい。しかしながら、このように管理情報の書き込み先の物理ブロックを固定しなかった場合、管理情報の書き込み先の物理ブロックの管理が煩雑になる。
また、異なるフラッシュメモリに属する物理ブロックを複数個集めた物理ブロック群を構成する場合、同じ物理ブロック群に含まれる物理ブロックのアドレスが同一であることが好ましい。しかしながら、異なるフラッシュメモリに属するアドレスが同一の物理ブロックで物理ブロック群を構成するようにした場合、不良ブロックが含まれる物理ブロック群ついては、ユーザーデータの書き込み先として使用することができなくなる。
上記のような問題点は、管理情報に代えて又は加えて、他種のシステムデータ(例えば、複数個のフラッシュメモリに対するアクセスを制御するためのファームウェア)を物理ブロックに書き込む場合にも有り得る問題点である。
そこで、本発明は、システムデータの書き込み先の物理ブロックの管理を容易にし、且つ、不良ブロックが含まれる物理ブロック群内の良品ブロックを有効に使用できる記憶領域管理技術を提供することを目的とする。
本発明の第一の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約手段と、
前記予約手段によって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込み手段と、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込み手段と
を備える。前記予約手段は、不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約する。
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約手段と、
前記予約手段によって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込み手段と、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込み手段と
を備える。前記予約手段は、不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約する。
好適な実施形態では、前記予約手段は、新たな不良ブロックが検出された場合に、前記新たな不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、前記システムブロックとして追加予約する。
好適な実施形態では、メモリコントローラが、前記システムブロックの予約を解除する予約解除手段を更に備える。前記予約解除手段は、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約を、不良ブロックが含まれる前記物理ブロック群内の良品ブロックに対する前記システムブロックの予約よりも優先的に解除する。
好適な実施形態では、前記予約手段は、前記物理ブロック群単位で前記システムブロックの予約を行う。前記予約解除手段は、前記物理ブロック群単位で前記システムブロックの予約を解除する。
本発明の第二の観点に従うフラッシュメモリシステムは、前記第一の観点に従うメモリコントローラ(又は、前述した複数の好適な実施形態のうちのいずれかでのメモリコントローラ)と、前記メモリコントローラによってアクセスされる複数個のフラッシュメモリとを備える。
本発明の第三の観点に従う制御方法は、ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリの制御方法であって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約ステップと、
前記予約ステップによって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込みステップと、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込みステップと
を備える。前記予約ステップでは、不良ブロックが含まれる前記物理ブロック群内の良品ブロックが、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約される。
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約ステップと、
前記予約ステップによって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込みステップと、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込みステップと
を備える。前記予約ステップでは、不良ブロックが含まれる前記物理ブロック群内の良品ブロックが、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約される。
好適な実施形態では、前記システムブロックの予約を解除する予約解除ステップが更に備えられる。前記予約解除ステップでは、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約が、不良ブロックが含まれる前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約よりも優先的に解除される。
システムデータの書き込み先の物理ブロックの管理を容易にし、且つ、不良ブロックが含まれる物理ブロック群内の良品ブロックを有効に使用できる。
図1は、本発明の一実施形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。
図1に示すように、フラッシュメモリシステム1は、2個のフラッシュメモリ2A,2Bと、それを制御するメモリコントローラ3とで構成されている。フラッシュメモリの個数は、2個より多くても良い(例えば、好ましくは2m個(mは自然数))。また、以下の説明では、2個のフラッシュメモリ2A、2Bを総称して「フラッシュメモリ2」と言うことがある。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAM8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(Error-correcting code)ブロック11と、ROM(Read Only Memory)12とから構成される。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
SRAM(Static Random Access Memory)8は、揮発性の記憶素子であり、フラッシュメモリ2の制御に必要なデータを一時的に格納するためのワーク領域として使用される。ワーク領域には、例えば、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルが記憶される。本実施形態においてフラッシュメモリ2に書き込まれるシステムデータ(フラッシュメモリ2に対するアクセスを制御又は管理するためのシステムデータであり、管理情報及びファームウェア等のデータが含まれる)は、これら3種類のテーブルである。ここで、不良ブロックテーブルは、不良ブロックを示す情報を保持するテーブルである。アドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を示したテーブルである。空きブロックテーブルは、消去状態の物理ブロック(又は、有効なデータが書き込まれていない物理ブロック)を検索するためのテーブルである。なお、SRAM8には、ワーク領域に加えて、ファームウェアを格納するためのファームウェア領域が設けられても良い。
ROM12は、不揮発性の記憶素子である。ROM12には、フラッシュメモリ2の制御に必要なファームウェアが書き込まれている。なお、ROM12には、起動時に必要な最低限のファームウェア(以下、「起動用ファームウェア」と言う)だけが書き込まれていても良い。この場合、フラッシュメモリ2の制御に必要なファームウェアは、フラッシュメモリ2に書き込まれ、起動時に、メモリコントローラ3が起動用ファームウェアに基づいて動作することによって、フラッシュメモリ2から読み出され、SRAM8に設けられているファームウェア領域に格納される。
バッファ9は、ホストシステム4から与えられたデータやフラッシュメモリ2から読み出されたデータを一時的に保持する。例えば、フラッシュメモリ2に書き込まれるデータは、フラッシュメモリ2が書き込み可能な状態になるまでバッファ9に保持される。また、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態になるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、ROM12(又はSRAM8上のファームウェア領域)からシーケンスコードを読み込み、読込んだシーケンスコードに従って、フラッシュメモリ2に対する各種の処理を実行する。シーケンスコードは、フラッシュメモリインターフェースブロック10に読み込まれるファームウェアである。このシーケンスコードは、フラッシュメモリインターフェースブロック10が実行するシーケンス処理毎に設定された複数個のコードから成るコードセットを複数セット含んでいる。このシーケンスコードに基づいて実行される処理では、フラッシュメモリインターフェースブロック10とフラッシュメモリ2との間で、データ、アドレス情報、ステータス情報、内部コマンド等の授受が、内部バス14を介して行なわれる。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error-correcting code))を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
マイクロプロセッサ6は、ROM12(又はSRAM8上のファームウェア領域)から読み込んだプログラムコードに従って、メモリコントローラ3の全体の動作を制御する。プログラムコードとは、マイクロプロセッサ6に読み込まれるファームウェアである。例えば、マイクロプロセッサ6は、読込んだプログラムコードに基づいて、ホストシステム4から与えられるアクセス指示によって特定されるアクセス対象の領域が属する論理ブロック及びこの論理ブロックと対応する物理ブロックを求めたり、データの書き込み先となる空きブロックを検索したりする。
フラッシュメモリ2A,2Bは、それぞれ、NAND型フラッシュメモリからなる。NAND型フラッシュメモリは、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。各フラッシュメモリ2A,2Bは、レジスタからメモリセルへのデータの書き込み、メモリセルからレジスタへのデータの読み出し又はメモリセルに記憶されているデータの消去が行われている間、内部コマンド等の入力を受け付けないビジー状態となる。
NAND型フラッシュメモリでは、データの読み出し及び書き込みはページ(物理ページ)単位で行われ、データの消去はブロック(物理ブロック)単位で行われる。物理ブロックは、複数のページ(物理ページ)で構成される。例えば、1個の物理ページは、所定サイズ(例えば2048バイト)のユーザ領域と、所定サイズ(例えば64バイト)の冗長領域とで構成され、1個の物理ブロックは、所定個数(例えば64個)の物理ページで構成されている。1個の物理ページのユーザ領域は、所定個数(例えば4個)の物理セクタ領域で構成されている。冗長領域は、誤り訂正符号(ECC:Error-correcting code))、論理アドレス情報、ブロックステータス(フラグ)等の付加データが記憶される領域である。
冗長領域に書き込まれる論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。ブロックステータス(フラグ)は、物理ブロックの良否を示すフラグである。尚、正常にデータの書き込み等を行うことができない物理ブロックである不良ブロックには、出荷時から不良である初期不良の物理ブロック(以下、「初期不良ブロック」と言う)と、使用開始後に劣化して不良ブロックになった後発不良の物理ブロック(以下、「後発不良ブロック」と言う)がある。初期不良ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。後発不良ブロックの判断基準については、設計の際に設計者が適宜設定することができる。例えば、書き込み又は消去を行った際にフラッシュメモリから与えられる処理ステータスがフェイルであった場合、読み出したデータに予め定められた閾値以上の誤りが含まれていた場合、又はこれらの組合せにより、後発不良理ブロックであるとの判断が行われてもよい。
本実施形態では、図2に示すように、互いに異なるフラッシュメモリ2A,2Bに属する2個の物理ブロックで仮想ブロックが形成され、この仮想ブロックに対して、論理ブロックが割り当てられる。従って、ホストシステム4から書き込みを指示するアクセス指示が与えられた場合、メモリコントローラ3は、そのアクセス指示で指定されるアクセス対象の領域が属する論理ブロックと対応関係にある仮想ブロックを特定し、その仮想ブロックを形成する2個の物理ブロックに対して、そのアクセス指示に対応するデータを書き込む。このデータ書き込み処理で、メモリコントローラ3は、フラッシュメモリ2Aに属する物理ブロック対するデータの書き込みとフラッシュメモリ2Bに属する物理ブロック対するデータの書き込みとを並行して行っても良いし、フラッシュメモリ2Aに属する物理ブロック対するデータの書き込みとフラッシュメモリ2Bに属する物理ブロック対するデータの書き込みとを交互に行っても良い。後者は、いわゆるインターリーブ方式であり、この方式では、一方のフラッシュメモリがビジー状態のときにビジー状態ではない他方のフラッシュメモリに対するデータの書き込みが行われる。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、「論理セクタ領域」と言う)に付けた通番であるLBA(Logical Block Address)で管理されている。メモリコントローラ3内で行われるアドレス管理では、複数個の論理セクタ領域で論理ブロックが形成され、この論理ブロックに対して、仮想ブロックが割り当てられる。本実施形態では、1個の物理ブロックが、256個の物理セクタ領域で構成されており、仮想ブロックが、2個の物理ブロックで形成されている。このため、図3に示したように、LBAが連続する512個の論理セクタ領域をまとめたものが論理ブロックとされ、この論理ブロックに、通し番号が付されている。以下、論理ブロックに付された通し番号を、「論理ブロック番号(LBN)」と言う。例えば、LBA#0−#511の512個の論理セクタ領域は、LBN#0の論理ブロックに属する。
また、本実施形態では、図2に示すように、仮想ブロックを形成する2個の物理ブロックは、物理ブロックアドレス(PBA)が同一の物理ブロックである。すなわち、仮想ブロックは、互いに異なるフラッシュメモリ2A,2Bに属するPBAが同一の物理ブロックで構成される。このようにすることにより、PBAが異なる2個の物理ブロックで仮想ブロックが形成される場合に比べて、仮想ブロックの管理が容易になる。つまり、PBAが異なる2個の物理ブロックで仮想ブロックが形成される場合、各論理ブロックにはPBAが異なる物理ブロックが割り当てられるので、2個のフラッシュメモリ2A,2Bの両方について、論理ブロックと物理ブロックの対応関係(LBNとPBAの対応関係)が管理される必要がある。しかし、本実施形態のように、PBAが同一の2個の物理ブロックで仮想ブロックが形成されれば、各論理ブロックには必ずPBAが同一の物理ブロックが割り当てられるので、2個のフラッシュメモリ2A,2Bのうちの一方についてのみ、論理ブロックと物理ブロックの対応関係(LBNとPBAの対応関係)が管理されれば良い。
図2に示すように、仮想ブロックには、不良ブロック(図2で“NG”と記載された物理ブロック)が含まれていない仮想ブロック(以下、「不良無し仮想ブロック」と言う)と、不良ブロックが含まれている仮想ブロック(以下、「不良有り仮想ブロック」と言う)との2種類がある。
不良無し仮想ブロック(例えば、PBA#2の2個の物理ブロックで構成される仮想ブロック)は、ユーザーデータの書き込み先として使用可能な仮想ブロックである。言い換えれば、不良無し仮想ブロックは、論理ブロック(例えば、LBN#0の論理ブロック)に割り当てられ得る仮想ブロックである。
一方、不良有り仮想ブロック(例えば、PBA#6の2個の物理ブロックで構成される仮想ブロック)は、ユーザーデータの書き込み先として使用不可能な仮想ブロックである。言い換えれば、不良有り仮想ブロックは、論理ブロックに割り当てられることのない仮想ブロックである。
本実施形態では、不良有り仮想ブロック内の良品ブロック(不良ブロックでない物理ブロック)が、システムデータの書き込み先として使用される物理ブロック(以下、「システムブロック」と言う)として優先的に予約される。つまり、不良有り仮想ブロックに含まれる良品ブロックが、不良無し仮想ブロックに含まれる物理ブロックよりも優先的にシステムブロックとして予約される。このようにすることにより、不良有り仮想ブロックに含まれる良品ブロックを有効に活用することができる。
システムブロックの予約は、フォーマット(初期化)の際に行われることが好ましい。本実施形態では、フォーマット(初期化)の際に、メモリコントローラ3によって、不良ブロックが検出され、検出された不良ブロックが含まれる不良有り仮想ブロック内の良品ブロックが、不良無し仮想ブロックに含まれる物理ブロックよりも優先的にシステムブロックとして予約される。システムブロックとして予約される物理ブロックの個数については、フラッシュメモリシステム1がホストシステム4の記憶装置として使用されたときに格納され得るシステムデータの容量を考慮して決定される。更に、この物理ブロックの個数を決定するときには、システムデータの更新処理やシステムブロックとして予約された物理ブロックが後発不良ブロックになること等も考慮される。フォーマット(初期化)の際には、これらのことを考慮して決定された所定個数の物理ブロックがシステムブロックとして予約される。
ここで、もし、不良有り仮想ブロック内の良品ブロックだけでは、所定個数の物理ブロックをシステムブロックとして予約することが不可能であれば(つまり、不良有り仮想ブロック内の良品ブロックの総数が所定個数に満たなければ)、不良無し仮想ブロック内の物理ブロックが、システムブロックとして予約される。
なお、システムブロックとして予約された物理ブロックは、ユーザーデータの書き込み先として使用されないので、仮想ブロックに含まれる一部の物理ブロックだけがシステムブロックとして予約されたとしても、その仮想ブロックに含まれる残りの物理ブロックがユーザーデータの書き込み先として使用されることはない。この点を考慮すれば、システムブロックの予約は、仮想ブロック単位で行われることが好ましい。従って、不良無し仮想ブロック内の物理ブロックがシステムブロックとして予約される場合には、その不良無し仮想ブロックに含まれる全ての物理ブロック(本実施形態では2個の物理ブロック)がシステムブロックとして予約されるようにすることが好ましい。
仮想ブロック単位でシステムブロックの予約を行ったことにより、予め決定されていた所定個数を越える個数の物理ブロックがシステムブロックとして予約されることがあっても構わない。従って、フォーマット(初期化)の際には、所定個数以上の物理ブロックがシステムブロックとして予約される。
その後、ユーザーデータの書き込み先として使用されていた物理ブロック(良品ブロック)が劣化して後発不良ブロックになったときには、その後発不良ブロックが含まれる不良有り仮想ブロック内の良品ブロックが、システムブロックとして追加予約される。この追加予約により、システムブロックの個数が増加する。その結果、不良無し仮想ブロック内の物理ブロックがシステムブロックとして予約されている必要がなくなった場合には、不良無し仮想ブロック内の物理ブロックに対する予約が、不良有り仮想ブロック内の良品ブロックに対する予約よりも優先的に解除される。なお、不良有り仮想ブロック内の良品ブロックはユーザーデータの書き込み先として使用されないので、不良有り仮想ブロック内の良品ブロックに対するシステムブロックの予約の解除は行われなくてもよい。つまり、システムブロックとして予約されている物理ブロックが全て不良有り仮想ブロック内の良品ブロックであれば、システムブロックの予約の解除は行われなくても良い。
また、システムブロックの予約の解除も仮想ブロック単位で行われることが好ましい。従って、仮想ブロック単位でシステムブロックの予約の解除が行われたときに、システムブロックとして予約されている物理ブロックの個数が所定個数以下になってしまうような場合は、システムブロックの予約の解除は行われない。不良無し仮想ブロック内の全ての物理ブロックに対するシステムブロックの予約が解除された場合、その不良無し仮想ブロックはユーザーデータの書き込み先として使用可能な状態になる。
本実施形態では、前述したように、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルの3種類のテーブルがシステムデータとしてフラッシュメモリ2に保存される。である。以下、各種テーブルについて説明する。
図3は、不良ブロックテーブルを示す。
不良ブロックテーブルは、不良ブロック(初期不良又は後発不良の物理ブロック)を示す情報を保持するテーブルである。不良ブロックテーブルには、不良ブロックを示す情報として、例えば、不良ブロックが属するフラッシュメモリ2A,2Bの識別子(以下、「チップ番号」と言う)と、その不良ブロックのPBAとが書き込まれる。
不良ブロックテーブルは、フォーマット(初期化)の際に作成される。例えば、フォーマット(初期化)の際に不良ブロックの検索が行われ、検出された不良ブロックが属するフラッシュメモリ2A,2Bのチップ番号及びその不良ブロックのPBAが、SRAM8のワーク領域上に確保された不良ブロックテーブルの作成領域に書き込まれる。このようにして不良ブロックテーブルが作成された後に、作成された不良ブロックテーブルに基づいて上述のシステムブロックの予約が行われる。そして、SRAM8のワーク領域上に作成された不良ブロックテーブルは、不良ブロックテーブルの書き込み先として予約されているシステムブロックに書き込まれる。その後、後発不良ブロックが新たに検出されたときには、SRAM8のワーク領域上で不良ブロックテーブルが更新され(その新たに検出された後発不良ブロックに対応したチップ番号及びPBAが不良ブロックテーブルに追加され)、更新後の不良ブロックテーブルが、再び、不良ブロックテーブルの書き込み先として予約されているシステムブロックに書き込まれる。
図4は、論理グループとアドレス変換テーブルの対応関係を示す。
論理グループとは、論理ブロックを複数個まとめることで形成されたグループである。以下、論理グループに付けられた通し番号を、「論理グループ番号(LGN)」と言う。図4の例では、LBNが連続する論理ブロックが、異なる論理グループに順次振り分けられるようにして、論理グループが形成されている。例えば、LBN#0の論理ブロックはLGN#0の論理グループに、LBN#1の論理ブロックはLGN#1の論理グループに、LBN#2の論理ブロックはLGN#2の論理グループにという順番で、LBN#0−#7の論理ブロックがLGN#0−#7の論理グループに順次振り分けられていく。以下、同様に、LBN#8の論理ブロックがLGN#0の論理グループに、LBN#9の論理ブロックがLGN#1の論理グループに、LBN#10の論理ブロックがLGN#2の論理グループに振り分けられていく。このようにして、8個の論理グループが形成される。
論理グループは、図4に示すように、単なるアドレス変換テーブルの作成単位であり、各論理ブロックが割り当てられる物理ブロックは、その物理ブロックが属する論理グループに依存しない。つまり、どの論理ブロックがどの物理ブロックに割り当てられても良い。このアドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を記述したテーブルであり、図4に示した例では、各論理グループに対応する8個のテーブルに分割してアドレス変換テーブルの管理(作成、更新及び保存)を行っているが、全ての論理ブロックと物理ブロックとの対応関係を含む1個のテーブルであっても良い。
アドレス変換テーブルの一例として、図5に、LGN#0の論理グループに対応したアドレス変換テーブル#0を示す。図5から分かるように、アドレス変換テーブル#0には、LGN#0の論理グループに属する論理ブロックに関して、各論理ブロックに対応する物理ブロックのPBAが書き込まれている。このアドレス変換テーブル#0がシステムブロックに保存されていない場合は、アドレス変換テーブル#0はSRAM8のワーク領域上で作成された後、そのテーブルの書き込み先として予約されているシステムブロックに保存される。また、アドレス変換テーブル#0がシステムブロックに保存されている場合は、必要なときにSRAM8のワーク領域に読み出される。そして、アドレス変換テーブル#0に関する論理ブロックと物理ブロックの対応関係が変化したときは、ワーク領域上でそのテーブルが更新され、更新後のアドレス変換テーブル#0が、再び、そのテーブルの書き込み先として予約されているシステムブロックに書き込まれる。
図6は、空きブロックテーブルを示す。
空きブロックテーブルは、各物理ブロックが空きブロックであるか否かを示すテーブルである。空きブロックテーブルは、例えば、各ビットの論理値で、各ビットに割り当てられている物理ブロックが空きブロックであるか否かを示す。つまり、この空きブロックテーブルでは、0”又は“1”のいずれか一方の論理値が空きブロック(データが消去されている物理ブロック又はデータが無効化されている物理ブロック)を示し、他方の論理値が空きブロックではない物理ブロック(例えば、有効なユーザーデータが書き込まれている物理ブロック、システムブロック又は不良ブロック)を示す。この空きブロックテーブルもSRAM8のワーク領域上で作成又は更新され、このテーブルの書き込み先として予約されているシステムブロックに保存される。
図6に示した空きブロックテーブルでは、各行(8ビット)の連続した2個のビットが、一つの仮想ブロックを形成する2個の物理ブロックに対応している。つまり、フラッシュメモリ2Aに属する物理ブロックとフラッシュメモリ2Bに属する物理ブロックとが、PBAの順番で各行(8ビット)のビットに交互に割り当てられている。この物理ブロックの割り当ては、上の行から下の行に向かって、各行においては下位ビット側から上位ビット側に向かって行われる。このように、仮想ブロックを構成する各物理ブロックが空きブロックであるか否かに関する情報は、1つの空きブロックテーブル上で管理されることが好ましい。尚、本実施形態のように仮想ブロックに対して論理ブロックが割り当てられる場合には、仮想ブロック単位で空きブロックになるので、本実施形態における空きブロックテーブルは仮想ブロック単位で空きブロックであるか否かを示すようなテーブルであっても良い。つまり、本実施形態における空きブロックテーブルでは、各ビットに対して仮想ブロックが割り当てられ、各ビットの論理値がそのビットに割り当てられた仮想ブロックが空きブロックであるか否かを示すテーブルであっても良い。このように各ビットに対して仮想ブロックが割り当てられるようにすれば、空きブロックテーブルの容量を小さくすることができる。例えば、本実施形態のように2個の物理ブロックで仮想ブロックが形成されている場合、その仮想ブロックが各ビットに対して割り当てられれば、空きブロックテーブルの容量は1/2になる。
また、1個の空きブロックテーブルの容量は、1セクタ(1個の物理セクタ領域の記憶容量)又は1個の物理ページの記憶容量であることが好ましい。つまり、空きブロックテーブルは、1セクタ単位又は1ページ単位のテーブルに分割されて管理され、その単位でシステムブロックに保存されることが好ましい。
以上が、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルについての説明である。これらのテーブルの書き込み先として予約されたシステムブロックを示す情報(以下、「システムブロック情報」と言う)は、例えば、フォーマット(初期化)の際に作成され、フラッシュメモリ2A及び/又は2B内の先頭ブロックに保存される。本実施形態では、図7A乃至図7Cに示すように、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びPBAがシステムブロック情報として管理される。図7Aに示す情報は、不良ブロックテーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びPBAを示す不良ブロックテーブル格納領域情報である。図7Bに示す情報は、アドレス変換テーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びPBAを示すアドレス変換テーブル毎のアドレス変換テーブル格納領域情報である。また、図7Cに示す情報は、空きブロックテーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びPBAを示す空きブロックテーブル毎の空きブロックテーブル格納領域情報である。このように、本実施形態におけるシステムブロックの予約は、不良ブロックテーブル格納領域情報、アドレス変換テーブル格納領域情報及び空きブロックテーブル格納領域情報を含むシステムブロック情報によって管理されている。
各テーブルの容量は、フラッシュメモリ2における書き込み又は読み出しの処理の単位である一個の物理ページに収まる容量(例えば、物理ページと同じ容量)であり、一個の物理ページには1個のテーブルが保存されることが好ましい。このようにした場合、テーブルが更新される毎に、更新されたテーブルが物理ブロック(システムブロック)内の次の物理ページに保存されることになる。また、最新のテーブルは、物理ブロック(システムブロック)内のデータ(テーブルのデータ)が書き込まれている末尾の物理ページに保存されていることになる。
尚、各物理ページに対して物理セクタ領域単位でデータを書き込んでいくことができるフラッシュメモリであれば、各テーブルの容量が一個の物理セクタ領域に収まる容量(例えば、物理セクタ領域と同じ容量)であり、一個の物理セクタ領域に1個のテーブルが保存されるようにしても良い。この場合、最新のテーブルは、物理ブロック(システムブロック)内のデータ(テーブルのデータ)が書き込まれている末尾の物理セクタ領域に保存されていることになる。
本実施形態では、各テーブルに対して、2個のシステムブロックが予約される。従って、2個のシステムブロックのうち、一方は、テーブルの書き込み先として使用されているシステムブロック(以下、「現行ブロック」と言う)になっており、他方はテーブルの書き込み先として使用されていない控えのシステムブロック(以下、「控えブロック」と言う)になっている。そして、現行ブロック内にテーブルを書き込むための空き領域(データの書き込まれていない物理ページ又は物理セクタ領域)が無くなった場合は、控えブロックが現行ブロックになり、現行ブロックが控えブロックになる。つまり、各テーブルに対して予約された2個のシステムブロックは、交互に現行ブロック(又は、控えブロック)になる。
システムブロック情報は、起動時にフラッシュメモリ2A及び/又は2Bの先頭ブロックから読み出され、SRAM8のワーク領域に保持されている。そして、テーブルの書き込み先として予約されているシステムブロックが変更される場合、システムブロック情報は、SRAM8のワーク領域上で更新される。システムブロック情報が更新された場合は、更新後のシステムブロック情報がフラッシュメモリ2A及び/又は2Bの先頭ブロックに書き込まれる。なお、本実施形態で、フラッシュメモリ2A及び/又は2Bの先頭ブロックがシステムブロック情報の書き込み先として設定されているのは、一般に、先頭ブロックは、不良ブロックではないことが製造メーカによって保証されているためである。このため、通常、先頭ブロックには、属性情報(例えば、フラッシュメモリシステム1がどういうものであって、どういうフラッシュメモリが幾つ搭載されているか等を表す情報)が書き込まれていることが多く、先頭ブロックにユーザーデータ(ホストシステムから与えられるアクセス指示に従って書き込まれるデータ)が書き込まれることは殆ど無い。
本実施形態では、各テーブルに対して、2個のシステムブロックが予約され、それらのシステムブロックが交互に現行ブロックになる。従って、いずれかのテーブルに対して予約されている2個のシステムブロックのうち、少なくとも一方が後発不良ブロックになってしまった場合には、そのテーブルに対して別のシステムブロックが新たに予約される必要がある。このシステムブロックの新たな予約は、システムブロックが後発不良ブロックになったときに行なわれても良いが、予め確保されている予備のシステムブロック(以下、「予備ブロック」と言う)により後発不良ブロックになったシステムブロックの補充が行われるようにしても良い。つまり、フォーマット(初期化)の際に予約されるシステムブロックに予備ブロックが含まれていても良い。
予備ブロックを含めてシステムブロックの予約を行った場合には、予備ブロックとして予約されたシステムブロックを特定するための情報(以下、「予備ブロック情報」と言う)もシステムブロック情報として保存される。図8に示す情報は、予備ブロックとして予約されたシステムブロックを特定するためのチップ番号及びPBAを示す予備ブロック情報である。この予備ブロック情報も不良ブロックテーブル格納領域情報、アドレス変換テーブル格納領域情報及び空きブロックテーブル格納領域情報と同様にシステムブロック情報として保存される。また、この予備ブロック情報も他のシステムブロック情報と同様に、SRAM8のワーク領域上で更新され、更新された予備ブロック情報はフラッシュメモリ2A及び/又は2Bの先頭ブロックに保存される。
本実施形態では、不良ブロックテーブルについては、2個のシステムブロックが予約され、アドレス変換テーブルについては、8個のアドレス変換テーブル#0〜#7があるため(図7B参照)、8×2=16個のシステムブロックが予約され、空きブロックテーブルについては、2個の空きブロックテーブル#0及び#1があるため(図7C参照)、2×2=4個のシステムブロックが予約され、更に、予備ブロック用のシステムブロックが少なくとも1個予約される。従って、予備ブロック用のシステムブロックの個数を3個とした場合、前述したシステムブロックとして予約される物理ブロックの所定個数は、2+16+4+3=25個になる。
不良ブロックテーブル、アドレス変換テーブル又は空きブロックテーブルに対して予約されているシステムブロックのうち、いずれかのシステムブロックが後発不良ブロックになった場合に行われるシステムブロックの補充について説明する。通常、後発不良ブロックであるか否かの判断は、データの書き込み、データの読み出し又は記憶データの消去が実行されたときに行われる。従って、現行ブロックでデータの書き込み又はデータの読み出しが実行されたときや、控えブロックで記憶データの消去が実行されたときに、後発不良ブロックであるか否かの判断が行われることが多い。ここで、後発不良ブロックになったと判断されたシステムブロックが現行ブロックであった場合には、そのシステムブロックの代わりに補充されるシステムブロック(予備ブロックとして予約されていたシステムブロック)に最新のテーブルが書き込まれると共に、システムブロック情報の更新が行われる。一方、後発不良ブロックになったと判断されたシステムブロックが控えブロックであった場合には、システムブロック情報の更新だけが行われる。
システムブロック情報の更新では、不良ブロックテーブル格納領域情報、アドレス変換テーブル格納領域情報及び空きブロックテーブル格納領域情報に記載されているシステムブロックのチップ番号及びPBAのうち、後発不良ブロックになったと判断されたシステムブロックのチップ番号及びPBAが補充されるシステムブロック(予備ブロックとして予約されていたシステムブロック)のチップ番号及びPBAで置換えられる。続いて、予備ブロック情報に記載されているシステムブロックのチップ番号及びPBAから、補充されるシステムブロック(予備ブロックとして予約されていたシステムブロック)のチップ番号及びPBAが削除される。この更新はSRAM8のワーク領域上で行われ、更新されたシステムブロック情報はフラッシュメモリ2A及び/又は2Bの先頭ブロックに保存される。
尚、後発不良ブロックになったと判断されたシステムブロックのチップ番号及びPBAは、不良ブロックテーブルに書き込まれる。この不良ブロックテーブルの更新は、SRAM8のワーク領域上で行われ、更新された不良ブロックテーブルは、そのテーブルの書き込み先として予約されているシステムブロックに保存される。
不良ブロックテーブル、アドレス変換テーブル又は空きブロックテーブルに対して予約されているシステムブロックのうちのいずれかのシステムブロックが後発不良ブロックになった場合には、予備ブロックによりその補充が行われるため、予備ブロック用のシステムブロックの個数が減少する。従って、予備ブロック用のシステムブロックの個数が0個になったとき、又は、予め設定した最低個数以下になったときには、予備ブロック用のシステムブロックの予約(追加予約)を行うことが好ましい。
また、不良無し仮想ブロック内の物理ブロックが劣化して後発不良ブロックになったときには、その後発不良ブロックが含まれる仮想ブロック内の良品ブロックが、予備ブロック用のシステムブロックとして追加予約される。従って、その良品ブロックのチップ番号及びPBAは、予備ブロック情報に書き込まれる。このシステムブロックの追加予約により、予備ブロックの個数が増加し不良無し仮想ブロック内の物理ブロックをシステムブロックとして確保しておく必要がなくなった場合には、不良有り仮想ブロック内の良品ブロックに対する予約が解除される。つまり、不良無し仮想ブロック内の物理ブロックに対する予約は、不良有り仮想ブロック内の良品ブロックに対する予約よりも優先的に解除される。但し、不良有り仮想ブロック内の良品ブロックは、ユーザーデータの書き込み先として使用されることがないので、予備ブロックが全て不良有り仮想ブロック内の良品ブロックであれば、予備ブロックの個数が増加しても予備ブロック用のシステムブロックの予約は解除されなくても良い。
ここで、「不良無し仮想ブロック内の物理ブロックをシステムブロックとして確保しておく必要がなくなった場合」とは、例えば、予備ブロックとして予約されている物理ブロックに不良有り仮想ブロック内の良品ブロックと不良無し仮想ブロック内の良品ブロックとが含まれており、その予備ブロックの累計が、予め定められている予備ブロック用のシステムブロックの個数(以下、「所定予備個数」と言う)よりも多いことを意味している。なお、システムブロックの予約の解除は仮想ブロック単位で行われることが好ましいため、システムブロックの予約の解除は、所定予備個数を超えた予備ブロック用のシステムブロックの個数が仮想ブロックを形成する物理ブロックの個数以上(つまり、本実施形態では2個以上)になった場合に行われることが好ましい。つまり、仮想ブロック単位でシステムブロックの予約の解除が行われても、予備ブロック用のシステムブロックの個数が所定予備個数よりも少なくならないことが好ましい。
以下、システムブロックの予約及びその解除に関するメモリコントローラ3の動作について説明する。
フォーマット(初期化)の際、不良ブロックが検出され、検出された不良ブロックに対応したチップ番号及びPBAが、不良ブロックテーブルに書き込まれる。ここで検出される不良ブロックは、初期不良ブロックであっても後発不良ブロックであっても良い。例えば、このフォーマット(初期化)の処理が、フラッシュメモリシステム1が一旦使用された後に行われる場合には、後発不良ブロックが存在することがある。そのような場合は、初期不良ブロックだけでなく後発不良ブロックも不良ブロックとして検出される。
次に、作成された不良ブロックテーブルに基づいて不良有り仮想ブロックに含まれる良品ブロックがシステムブロックとして予約される。この際、予約されるシステムブロックは、予備ブロック用のシステムブロックよりも不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルの書き込み先となるシステムブロックに優先的に割り当てられる。不良有り仮想ブロックに含まれる良品ブロックだけでは、所定個数のシステムブロックを確保することができなかった場合は、不良無し仮想ブロックに含まれる良品ブロックがシステムブロックとして予約される。このシステムブロックの予約は、仮想ブロック単位で行われる。つまり、システムブロックの予約では、不良無し仮想ブロックよりも不良有り仮想ブロックに含まれる良品ブロックが、優先的に予約される。
具体的には、不良有り仮想ブロック内の良品ブロックに対応したチップ番号及びPBAが、システムブロック情報に優先的に書き込まれる。もし、不良有り仮想ブロック内の良品ブロックだけでは、所定個数のシステムブロックが確保されない場合には、不良無し仮想ブロックが適宜選択され、選択された不良無し仮想ブロックに含まれる全ての物理ブロックのチップ番号及びPBAが、システムブロック情報に書き込まれる。
以上のようにして、フォーマット(初期化)の際に、所定個数以上のシステムブロックが予約される。
不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルがシステムブロックに保存されるときは、システムブロック情報に基づいて各テーブルの保存先のシステムブロックが特定される。尚、フォーマット(初期化)の際には作成されていないテーブル(例えば、アドレス変換テーブル)については、テーブルが作成されたときにシステムブロックに保存される。
その後、後発不良ブロックが検出されたときには、SRAM8のワーク領域上で、その後発不良ブロックに対応したチップ番号及びPBAが不良ブロックテーブルに追記され、追記後の不良ブロックテーブルが、そのテーブルに対応するシステムブロック(現行ブロック)に書き込まれる。
続いて、その後発不良ブロックが含まれている仮想ブロック内の良品ブロックが予備ブロック用のシステムブロックとして追加予約される。具体的には、その良品ブロックのチップ番号及びPBAが、予備ブロック情報に書き込まれる。この追加予約により予備ブロック用のシステムブロックの個数が所定予備個数より多くなった場合には、予備ブロック用のシステムブロックとして予約されている不良無し仮想ブロック内の物理ブロックに対するシステムブロックの予約が仮想ブロック単位で解除される。具体的には、システムブロックの予約が解除される不良無し仮想ブロック内の物理ブロックのチップ番号及びPBAが、予備ブロック情報から削除される。
また、不良ブロックテーブル、アドレス変換テーブル又は空きブロックテーブルの保存先のシステムブロックとして不良無し仮想ブロック内の物理ブロックが割り当てられている場合には、その不良無し仮想ブロック内の物理ブロックが、予備ブロック用のシステムブロックとして予約された不良有り仮想ブロック内の物理ブロックと交換されることが好ましい。上述のようなシステムブロックの予約の解除が円滑に行われるためには、このようなシステムブロックの交換が適宜行われることが好ましい。尚、このようなシステムブロックの交換は、交換対象のシステムブロックが控えブロックになったときに行われることが好ましい。
システムブロックの予約が解除された不良無し仮想ブロックは、ユーザーデータの書き込み先として使用可能となる。
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、フラッシュメモリ2に書き込まれるシステムデータは、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルのうちのいずれか一つ又は二つだけであっても良いし、それら3種類のテーブルに限らず、他種のシステムデータ(例えばファームウェア)であっても良い。また、物理ブロックを示す情報は、チップ番号及びPBAの組合せに限らず、他種の情報が採用されても良い。
1…フラッシュメモリシステム、2A,2B…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ
Claims (7)
- ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約手段と、
前記予約手段によって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込み手段と、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込み手段と
を備え、
前記予約手段は、不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約する、
ことを特徴とするメモリコントローラ。 - 前記予約手段は、新たな不良ブロックが検出された場合に、前記新たな不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、前記システムブロックとして追加予約する、
ことを特徴とする請求項1に記載のメモリコントローラ。 - 前記システムブロックの予約を解除する予約解除手段を更に備え、
前記予約解除手段は、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約を、不良ブロックが含まれる前記物理ブロック群内の良品ブロックに対する前記システムブロックの予約よりも優先的に解除する、
ことを特徴とする請求項1又は2に記載のメモリコントローラ。 - 前記予約手段は、前記物理ブロック群単位で前記システムブロックの予約を行い、
前記予約解除手段は、前記物理ブロック群単位で前記システムブロックの予約を解除する、
ことを特徴とする請求項3に記載のメモリコントローラ。 - 請求項1乃至4のうちのいずれか1項に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされる複数個のフラッシュメモリと
を備えるフラッシュメモリシステム。 - ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリの制御方法であって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約ステップと、
前記予約ステップによって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込みステップと、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込みステップと
を備え、
前記予約ステップでは、不良ブロックが含まれる前記物理ブロック群内の良品ブロックが、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約される、
ことを特徴とするフラッシュメモリの制御方法。 - 前記システムブロックの予約を解除する予約解除ステップを更に備え、
前記予約解除ステップでは、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約が、不良ブロックが含まれる前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約よりも優先的に解除される、
ことを特徴とする請求項6に記載のメモリコントローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008090948A JP4702387B2 (ja) | 2008-03-31 | 2008-03-31 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008090948A JP4702387B2 (ja) | 2008-03-31 | 2008-03-31 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009245163A true JP2009245163A (ja) | 2009-10-22 |
JP4702387B2 JP4702387B2 (ja) | 2011-06-15 |
Family
ID=41306971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008090948A Active JP4702387B2 (ja) | 2008-03-31 | 2008-03-31 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4702387B2 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010026878A (ja) * | 2008-07-22 | 2010-02-04 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2012118739A (ja) * | 2010-11-30 | 2012-06-21 | Toshiba Corp | 記憶装置、及び制御方法 |
US9268685B2 (en) | 2013-03-22 | 2016-02-23 | Kabushiki Kaisha Toshiba | Memory system and constructing method of virtual block |
JP2018120522A (ja) * | 2017-01-27 | 2018-08-02 | 日本電気株式会社 | 情報処理システムおよび情報処理システムの制御方法 |
JP2018169688A (ja) * | 2017-03-29 | 2018-11-01 | ラピスセミコンダクタ株式会社 | メモリシステム及びメモリの管理方法 |
JP2019082817A (ja) * | 2017-10-30 | 2019-05-30 | 東芝メモリ株式会社 | 計算機システムおよび制御方法 |
JP2019082813A (ja) * | 2017-10-30 | 2019-05-30 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726952A (zh) * | 2018-12-03 | 2019-05-07 | Oppo(重庆)智能科技有限公司 | 一种货位的确定方法、仓储控制系统及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132982A (ja) * | 1998-10-26 | 2000-05-12 | Sony Corp | 情報記録媒体素子、情報記録装置及び情報記録方法、並びに情報再生装置及び情報再生方法 |
JP2001142774A (ja) * | 1999-11-11 | 2001-05-25 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
WO2002046929A1 (en) * | 2000-12-06 | 2002-06-13 | Tdk Corporation | Method of controlling flash memory |
JP2007286892A (ja) * | 2006-04-17 | 2007-11-01 | Tdk Corp | メモリコントローラおよびフラッシュメモリシステム |
-
2008
- 2008-03-31 JP JP2008090948A patent/JP4702387B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132982A (ja) * | 1998-10-26 | 2000-05-12 | Sony Corp | 情報記録媒体素子、情報記録装置及び情報記録方法、並びに情報再生装置及び情報再生方法 |
JP2001142774A (ja) * | 1999-11-11 | 2001-05-25 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
WO2002046929A1 (en) * | 2000-12-06 | 2002-06-13 | Tdk Corporation | Method of controlling flash memory |
JP2007286892A (ja) * | 2006-04-17 | 2007-11-01 | Tdk Corp | メモリコントローラおよびフラッシュメモリシステム |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010026878A (ja) * | 2008-07-22 | 2010-02-04 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2012118739A (ja) * | 2010-11-30 | 2012-06-21 | Toshiba Corp | 記憶装置、及び制御方法 |
US8626992B2 (en) | 2010-11-30 | 2014-01-07 | Kabushiki Kaisha Toshiba | Storage device with identification information |
US9268685B2 (en) | 2013-03-22 | 2016-02-23 | Kabushiki Kaisha Toshiba | Memory system and constructing method of virtual block |
JP2018120522A (ja) * | 2017-01-27 | 2018-08-02 | 日本電気株式会社 | 情報処理システムおよび情報処理システムの制御方法 |
JP2018169688A (ja) * | 2017-03-29 | 2018-11-01 | ラピスセミコンダクタ株式会社 | メモリシステム及びメモリの管理方法 |
JP2019082817A (ja) * | 2017-10-30 | 2019-05-30 | 東芝メモリ株式会社 | 計算機システムおよび制御方法 |
JP2019082813A (ja) * | 2017-10-30 | 2019-05-30 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP7074454B2 (ja) | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | 計算機システムおよび制御方法 |
JP7074453B2 (ja) | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4702387B2 (ja) | 2011-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4702387B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4666080B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5087347B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP4632180B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4245585B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US8214579B2 (en) | Memory controller, flash memory system with memory controller, and method of controlling flash memory | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2023044518A (ja) | メモリシステムおよび方法 | |
JP4737223B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4840415B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4710918B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4582232B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4687720B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2010086106A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4952742B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4952741B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4636046B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP3934659B1 (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP4760826B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4569554B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2009301491A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2008226188A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20110208 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110221 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4702387 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |