Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4609406B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 - Google Patents
[go: Go Back, main page]

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

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

Info

Publication number
JP4609406B2
JP4609406B2 JP2006278629A JP2006278629A JP4609406B2 JP 4609406 B2 JP4609406 B2 JP 4609406B2 JP 2006278629 A JP2006278629 A JP 2006278629A JP 2006278629 A JP2006278629 A JP 2006278629A JP 4609406 B2 JP4609406 B2 JP 4609406B2
Authority
JP
Japan
Prior art keywords
block
pair
physical
data
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.)
Active
Application number
JP2006278629A
Other languages
English (en)
Other versions
JP2008097339A (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 JP2006278629A priority Critical patent/JP4609406B2/ja
Publication of JP2008097339A publication Critical patent/JP2008097339A/ja
Application granted granted Critical
Publication of JP4609406B2 publication Critical patent/JP4609406B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明はメモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、及びフラッシュメモリの制御方法に関する。
近年、メモリカードやシリコンディスクなどに、NAND型フラッシュメモリが用いられることが多い。このNAND型フラッシュメモリは不揮発性のメモリであり、記憶データを消去するとき、つまり、メモリセルを書込状態(論理値=0)から消去状態(論理値=1)に変化させる場合は、ブロック単位でしか記憶データを消去することができない。従って、記憶データを書き替える場合には、書換えデータを元のデータが記憶されていた物理ブロック(第1の物理ブロック)とは別の物理ブロック(第2の物理ブロック)に書き込んだ後、第1の物理ブロックの記憶データを消去していた。
このような書換え処理では、第1の物理ブロックに記憶されている書換え対象でない記憶データを、第1の物理ブロックから第2の物理ブロックに転送(複写)しなければならない。しかし、この書換え対象でない記憶データを転送(複写)した後に、ホストシステムから転送(複写)した記憶データの書換え指示が与えられた場合、その指示前に実行した記憶データの転送(複写)が無駄になってしまう。
このような問題を回避するため、書換えデータを第2の物理ブロックに書き込んだ後、書換え対象でない記憶データの転送(複写)を行わず、第1の物理ブロックと第2の物理ブロックを並存させる技術が特許文献1に開示されている。
特開2002−324008
特許文献1に開示されているように、第1の物理ブロックと第2の物理ブロックを並存させれば、無駄な記憶データの転送(複写)を減少させることができる。しかし、上記第1の物理ブロックと第2の物理ブロックのようなペアブロックが多くなり過ぎると、空きブロックを確保することができなくなってしまう。又、空きブロックを確保することができなくなることを回避するために、一定の論理アドレスの領域に割り当てる物理ブロックの数を増加させた場合には、同一の記憶容量のフラッシュメモリに記憶できるデータの実質的な容量が小さくなってしまう。
尚、ペアブロックが多くなり過ぎて、空きブロックを確保することができなくなった場合、いずれかのペアブロックについて、第1の物理ブロックから第2の物理ブロックに記憶データの転送(複写)を行い、第1の物理ブロックの記憶データを消去すれば、空きブロックを確保することができる。しかし、このようなペアブロックの解消を行うときの優先順位の管理については、特許文献1に開示されていない。
そこで、本発明は、上記のような問題を回避しつつペアブロックを有効に活用するため、ペアブロックの組数(ペア数)が所定の範囲を超えないように管理するメモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、及びフラッシュメモリの制御方法を提供しようとするものである。
上記目的を達成するために、本発明によるメモリコントローラは、ホストシステムから与えられる指示情報に応じて、物理ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記指示情報に基づく論理アドレスと、該論理アドレスと対応するデータが記憶されている前記物理ブロックの対応関係を管理するアドレス管理手段と、前記指示情報に基づく論理アドレスに対応するデータが記憶されている前記物理ブロックが存在するとき、該物理ブロックと異なる物理ブロックに前記指示情報に基づく論理アドレスに対応するデータを書き込む書込み手段と、前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックからなるペアブロックの対応関係、及び該ペアブロックの組数を管理するペアブロック管理手段と、前記ペアブロックの組数が所定数に達したときに、ペアブロック状態になった順番が最先の前記ペアブロックのペアブロック状態を解消するペアブロック解消手段と、を備え、前記書込み手段が、前記異なる物理ブロックの冗長領域にペアブロック状態になった順番の先後関係を判断するためのペアブロックシリアル番号を書き込むことを特徴とする。
このような構成によると、ペアブロック間の無駄な記憶データの転送(複写)を減少させるという効果を維持しつつ、ペアブロックの増加に伴う空きブロック数の減少を所定の範囲内に抑えることができる。更に、ペアブロック状態になった順番が先のペアブロックから順番にペアブロック状態が解消されるので、ペアブロックの組数を制限してもペアブロック間の無駄な記憶データの転送(複写)を減少させるという効果の低下を最小限に抑えることができる。また、複数組のペアブロックが存在するときに、ペアブロックシリアル番号を読み出せば、ペアブロック状態になった順番の先後関係を判別することができる。
又、前記ペアブロック管理手段は、前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックの新旧関係が新しいデータが記憶されている方の前記物理ブロックの冗長領域に書き込まれているペアブロックシリアル番号に基づいて、ペアブロック状態になった順番の先後を判別することが好ましい。
尚、前記論理アドレスが同一のデータが記憶される前記物理ブロックの冗長領域に、記憶データの新旧関係を判断するためのシリアル番号を書き込んでもよい。
本発明によるフラッシュメモリシステムは、前記メモリコントローラと前記フラッシュメモリを備えることを特徴とする。
本発明によるフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に応じて、物理ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、前記指示情報に基づく論理アドレスと、該論理アドレスと対応するデータが記憶されている前記物理ブロックの対応関係を判別するアドレス判別ステップと、前記指示情報に基づく論理アドレスに対応するデータが記憶されている前記物理ブロックが存在するとき、該物理ブロックと異なる物理ブロックに前記指示情報に基づく論理アドレスに対応するデータを書き込む書込みステップと、前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックからなるペアブロックの対応関係、及び該ペアブロックの組数を管理する情報を保持するペアブロック管理ステップと、前記ペアブロックの組数が所定数に達したときに、ペアブロック状態になった順番が最先の前記ペアブロックのペアブロック状態を解消するペアブロック解消ステップと、を有し、前記書込みステップにおいて、前記異なる物理ブロックの冗長領域にペアブロック状態になった順番の先後関係を判断するためのペアブロックシリアル番号を書き込むことを特徴とする。
このような方法によると、ペアブロック間の無駄な記憶データの転送(複写)を減少させるという効果を維持しつつ、ペアブロックの増加に伴う空きブロック数の減少を所定の範囲内に抑えることができる。更に、ペアブロック状態になった順番が先のペアブロックから順番にペアブロック状態が解消されるので、ペアブロックの組数を制限してもペアブロック間の無駄な記憶データの転送(複写)を減少させるという効果の低下を最小限に抑えることができる。また、複数組のペアブロックが存在するときに、ペアブロックシリアル番号を読み出せば、ペアブロック状態になった順番の先後関係を判別することができる。
又、前記ペアブロック管理ステップにおいて、前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックの新旧関係が新しいデータが記憶されている方の前記物理ブロックの冗長領域に書き込まれているペアブロックシリアル番号に基づいて、ペアブロック状態になった順番の先後を判別するための情報を保持することが好ましい。
尚、前記論理アドレスが同一のデータが記憶される前記物理ブロックの冗長領域に、記憶データの新旧関係を判断するためのシリアル番号を書き込んでもよい。
本発明のメモリコントローラ、フラッシュメモリシステム、並びにフラッシュメモリの制御方法によれば、ペアブロックの組数(ペア数)が所定の範囲を超えないように管理することにより、ペアブロック間(同一の論理アドレスに対応するデータが記憶された2個の物理ブロック間)の無駄な記憶データの転送(複写)を減少させるという効果を維持しつつ、ペアブロックの増加に伴う空きブロック数の減少を所定の範囲内に抑えることができる。また、複数組のペアブロックが存在するときに、ペアブロックシリアル番号を読み出せば、ペアブロック状態になった順番の先後関係を判別することができる。
更に、ペアブロックを解消するときの優先順位を管理することにより、ペアブロックの組数(ペア数)が所定の範囲を超えないように管理することによる効果(ペアブロック間の無駄な記憶データの転送(複写)を減少させるという効果)の低下を最小限に抑えることができる。
以下、本発明の実施の形態について図面を参照して説明する。図1は、本発明に係るフラッシュメモリシステムの、一実施の形態の概略構成を示すブロック図である。図1に示したように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3で構成されている。また、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。
ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)と、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等とから構成される。ホストシステム4は、たとえば文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
フラッシュメモリ2は、不揮発性メモリであり、フラッシュメモリ2内のレジスタとメモリセルアレイとの間でデータの複写を行って、データの書き込み又は読み出しを行う。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、すなわち、レジスタから選択されたメモリセルへのデータの書き込み(複写)、又は選択されたメモリセルからレジスタへのデータの読み出し(複写)が行われる。つまり、メモリコントローラ3から与えられたデータは、レジスタを介してメモリセルアレイに書き込まれ、メモリセルアレイに記憶されているデータはレジスタを介してメモリコントローラ3に供給される。
メモリセルアレイを構成するメモリセルは、2つゲートを備えたMOSトランジスタによって構成される。ここで、一方のゲートはコントロールゲート、他方のゲートはフローティングゲートとそれぞれ呼ばれている。フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。
このフローティングゲートは、周囲が絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧がコントロールゲートとフローティングゲートとの間に印加される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧がコントロールゲートとフローティングゲートとの間に印加される。ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。
このようなフラッシュメモリ2のアドレス空間は、図2に示したように“ページ”及び“ブロック(物理ブロック)”で構成されている。ページは、フラッシュメモリ2で行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ2で行われるデータ消去動作における処理単位であり、複数個のページで構成されている。図2は、大ブロックの場合の構造を示しており、1個のページは、4セクタ(2048バイト)のユーザ領域25と64バイトの冗長領域26とで構成され、1個の物理ブロックは64個のページで構成されている。
尚、小ブロックの場合は、1個のページは、1セクタ(512バイト)のユーザ領域と16バイトの冗長領域とで構成され、1個の物理ブロックは32個のページで構成されている。又、大ブロックの場合は、ユーザ領域25を4分割した512バイトの領域をサブページといい、各サブページに冗長領域26内の一部の領域が割り当てられている。従って、大ブロックの場合、1個の物理ブロックには、256個のサブページが含まれている。
次に、ホストシステム4側のアドレス空間とフラッシュメモリ2側のアドレス空間について図3を参照して説明する。ホストシステム4側のアドレス空間は、図3(a)に示したように、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。メモリコントローラ3内では、複数個のセクタをまとめたものを論理ブロックとして、複数個の論理ブロックをまとめたものを論理ゾーンとしている。ここで、図3(b)に示したように、論理ブロックに付けられた通番を論理ブロック番号(LBN)と言い、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と言う。また、各論理ゾーンに含まれる論理ブロックの、各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と言う。
フラッシュメモリ2側のアドレス空間は、図3(c)に示したように、各物理ブロックに固有の物理ブロックアドレス(PBA)が割り当てられている。さらに、記憶領域を複数のゾーンに分割して管理する場合には、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに固有の物理ゾーン番号(PZN)を割り当てている。各物理ゾーンに含まれる物理ブロックの、各物理ゾーン内での通番を物理ゾーン内ブロック番号(PZIBN)と言う。
また、各論理ゾーンにはそれぞれ1個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。したがって、1個の論理ブロックに含まれるセクタ数は、1個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。但し、1個の論理ブロックを複数個の物理ブロックに割り当てる場合には、その複数個の物理ブロックを1個の物理ブロックとみなして1個の論理ブロックに含まれるセクタ数を設定する。
図3は、1個の論理ブロックを、256個のサブページで構成さている1個の物理ブロックに割り当てた場合を示している。従って、256セクタが1個の論理ブロックに対応し、LBN#0〜#499の500個の論理ブロックで構成されたLZN#0の論理ゾーンは、LBA#0〜#127999の128000セクタの領域に対応している。LZN#1以降の論理ゾーンについても同様に、LZN#1の論理ゾーンは、LBA#128000〜#255999の128000セクタの領域に対応し、LZN#2の論理ゾーンは、LBA#256000〜#383999の128000セクタの領域に対応し、LZN#3の論理ゾーンは、LBA#384000〜#511999の128000セクタの領域に対応している。
LBN#0〜#499の500個の論理ブロックで構成されたLZN#0の論理ゾーンは、PBA#0〜#511の512個の物理ブロックで構成されたPZN#0の物理ゾーンに割り当てられている。LZN#1以降の論理ゾーンについても同様に、LZN#1の論理ゾーンは、PZN#1の物理ゾーンに割り当てられ、LZN#2の論理ゾーンは、PZN#2の物理ゾーンに割り当てられ、LZN#3の論理ゾーンは、PZN#3の物理ゾーンに割り当てられている。
ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、ペアブロック(同一の論理ブロックに対応する新データと旧データが記憶された1対の物理ブロック)を許容するためである。従って、ペアブロックの許容数を多くしたい場合には、物理ゾーンに含まれる物理ブロックの個数を多くすればよい。又、物理ゾーンに含まれる物理ブロックの個数は、データを正常に書き込むことができない不良ブロックが発生した場合等も考慮して設定しなければならない。
尚、本実施の形態では、各物理ブロックには、その物理ブロックに割り当てられた論理ブロックに含まれるセクタに対応するデータをLBAの順番で書き込んでいる。従って、物理ブロックと論理ブロックとの対応関係を管理することにより、ホストシステム4側でLBAで管理されている領域とフラッシュメモリ2内の記憶領域の対応関係を管理することができる。
この物理ブロックと論理ブロックの対応関係は、データの書き込みや消去が行われる毎に変化する。従って、物理ブロックと論理ブロックの対応関係を示すアドレス変換テーブルを作成し、対応関係が変化する毎にアドレス変換テーブルを更新している。このアドレス変換テーブルは、論理ゾーン(論理ゾーンと対応する物理ゾーン)毎に作成される。このアドレス変換テーブルは起動時に作成してもよいが、アクセスの対象になった論理ゾーンについて、その都度作成するようにしてもよい。
アドレス変換テーブルを作成するときは、物理ブロックの先頭ページの冗長領域26に書き込まれる論理ブロックを示す情報(以下、論理アドレス情報という)が読み出される。冗長領域26に書き込まれる論理アドレス情報としては、LBN等の論理ブロックを特定する情報が用いられる。なお、本実施の形態のように論理ゾーンと物理ゾーンとの対応関係が予め設定されている場合は、LZIBNに基づいてアドレス変換テーブルを作成することができるので、LBNよりデータ量の少ないLZIBNを論理アドレス情報として用いることが好ましい。
図6はアドレス変換テーブル31の一例であり、論理ブロックと物理ブロックの対応関係を、LZIBNとPZIBNの対応関係で示している。このアドレス変換テーブル31では、論理ゾーンに含まれるLZIBN#0〜#499の500個の論理ブロックに対応する物理ブロックを、この論理ゾーンに割り当てられている物理ゾーン内の物理ブロックに付けられたPZIBNで示している。
また、物理ブロックの先頭ページの冗長領域26には、その物理ブロックが不良ブロックであるか否かを示すブロックステータス(フラグ)が書き込まれる。更に、冗長領域26の各サブページに割り当てられた領域には、各サブページに書き込まれたユーザデータに対応するエラーコレクションコード(ECC)等の付加情報が書き込まれる。
次に、フラッシュメモリ2に対してアクセス処理を行うメモリコントローラ3について説明する。メモリコントローラ3は、フラッシュメモリ2にデータ、アドレス情報、内部コマンド等を供給することにより読み出し処理、書き込み処理、ブロック消去処理等の各処理を行う。
ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2はメモリコントローラ3から与えられる内部コマンドに従って動作する。一方、ホストシステム4からメモリコントローラ3に与えられるコマンドを外部コマンドと言う。
メモリコントローラ3は、図1に示したように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12とを備えている。これら機能ブロックによって構成されるメモリコントローラ3は、1つの半導体チップ上に集積される。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、メモリコントローラ3の全体の動作を制御する。
また、マイクロプロセッサ6は、ROM12に記憶されているプログラムに基づいてフラッシュメモリインターフェースブロック10等の動作を制御することにより、アドレス管理手段、書込み手段、ペアブロック管理手段、ペアブロック解消手段等の各手段を実現している。
ROM12は、不揮発性の記憶素子であり、マイクロプロセッサ6の動作プログラムの他に、フラッシュメモリインターフェースブロック10の動作プログラムであるシーケンスコマンド等を記憶している。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。上述のアドレス変換テーブルは、このワークエリア8上に作成される。
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ホストインターフェースブロック7は、ホストシステム4との間で、外部バス13を介し、データ、アドレス情報、外部コマンド等の授受を行う。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(たとえば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。フラッシュメモリインターフェースブロック10は、書き込み処理、読み出し処理等の処理毎に設定されているシーケンスコマンドに従って、各種の処理を実行する。
ホストインターフェースブロック7及びフラッシュメモリインターフェースブロック10は、図4に示したような各種レジスタを備えている。ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3等を備えている。フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13等を備えている。
コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2にはアクセス対象領域のセクタ数が書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭のLBAが書き込まれる。
物理ブロックアドレスレジスタR11、セクタ番号レジスタR12及びカウンタR13には、セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づいて、アクセスする物理ブロックの物理ブロックアドレス(PBA)、アクセスを開始するサブページの番号(0〜255)、アクセスするセクタ数(サブページの数)が設定される。
ここで、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12及びカウンタR13に設定される物理ブロックアドレス(PBA)、サブページの番号及びセクタ数(サブページの数)について説明する。図3に示したように、1個の論理ブロックに、LBAが連続する256セクタの領域を含んでいる場合、LBAの下位8ビットは論理ブロックに含まれるセクタに付けられた通番(以下、セクタ番号(SN)と言う)に対応する。一方、この下位8ビットを除いた上位側のビットは、論理ブロックに付けられた通番である論理ブロック番号(LBN)に対応する。
物理ブロックアドレスレジスタR11には、LBAレジスタR3及びセクタ数レジスタR2に書き込まれた情報に基づいて求めた論理ブロック番号(LBN)で特定される論理ブロックと対応する物理ブロックの物理ブロックアドレス(PBA)又は空きブロックの物理ブロックアドレス(PBA)が設定される。ここで、空きブロックの物理ブロックアドレス(PBA)が設定されるのは、データの書換え等を行う場合、つまり、空きブロックに書替えデータを書き込む場合である。
次に、セクタ番号(SN)とサブページ番号の対応関係について説明する。本実施の形態では、論理ブロックに含まれる各セクタに対応するデータをLBAの順番で物理ブロック内のサブページに書き込んでいる。従って、物理ブロック内の256個のサブページに付けられた通番であるサブページ番号(0〜255)とセクタ番号(SN)は、同じ番号同士が対応する。つまり、セクタ番号#0に対応するデータは、サブページ番号#0のサブページに書き込まれ、セクタ番号#1に対応するデータは、サブページ番号#1のサブページに書き込まれ、セクタ番号#2に対応するデータは、サブページ番号#2のサブページに書き込まれる。
セクタ番号(SN)とサブページ番号がこのような対応関係になっているため、セクタ番号レジスタR12には、LBAレジスタR3及びセクタ数レジスタR2に書き込まれた情報に基づいて求めたアクセス対象領域の先頭セクタのセクタ番号(SN)が設定される。つまり、LBAレジスタR3及びセクタ数レジスタR2に書き込まれた情報に基づいて求めたアクセス対象領域の先頭セクタのセクタ番号(SN)は、アクセスを開始するサブページのサブページ番号に一致する。
カウンタR13には、LBAレジスタR3及びセクタ数レジスタR2に書き込まれた情報に基づいて求めたアクセス対象領域に含まれるセクタ数が設定される。つまり、アクセス対象領域に含まれるセクタ数は、アクセスされるサブページの個数に一致する。
尚、LBAレジスタR3及びセクタ数レジスタR2に設定された情報に基づいて特定されるアクセス対象領域が複数の論理ブロックに跨っている場合には、そのアクセス対象領域と対応する物理ブロックも複数の物理ブロックに跨っているので、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13に対する情報の設定は論理ブロック毎に行われる。
フラッシュメモリインターフェースブロック10は、このようにして物理ブロックアドレスレジスタR11、セクタ番号レジスタR12及びカウンタR13に設定された値に基づいて書き込み処理や読み出し処理を実行する。
書き込み処理では、1セクタのデータがバッファ9からフラッシュメモリ2に供給される毎にセクタ番号レジスタR12に設定されている値がインクリメント(1ずつ増加)され、カウンタR13に設定されている値がデクリメント(1ずつ減少)される。カウンタR13に設定されている値が0になったときに書き込み処理が終了する。従って、セクタ番号レジスタR12に最初に設定された値に対応するサブページからカウンタR13に最初に設定された値に対応するサブページ分のデータが書き込まれる。
同様に、読み出し処理では、1セクタのデータがフラッシュメモリ2からバッファ9に読み出される毎にセクタ番号レジスタR12に設定されている値がインクリメント(1ずつ増加)され、カウンタR13に設定されている値がデクリメント(1ずつ減少)される。カウンタR13に設定されている値が0になったときに読み出し処理が終了する。従って、セクタ番号レジスタR12に最初に設定された値に対応するサブページからカウンタR13に最初に設定された値に対応するサブページ分のデータが読み出される。
例えば、セクタ番号レジスタR12に「10」を設定し、カウンタR13に「8」を設定して書き込み処理を開始した場合、サブページ番号#10〜#17のサブページにユーザデータが書き込まれる。
次に空きブロック検索について説明する。フラッシュメモリに記憶されているデータを書き替えるときには、書換えデータを元のデータが記憶されていた物理ブロックとは別の物理ブロックに書き込んでいる。従って、フラッシュメモリに記憶されているデータを書き替えるときには、書換えデータの書き込み先になる空きブロックの検索が行われる。図5は、空きブロックを検索するときに用いられる空きブロック検索テーブル33の一例を示している。
この空きブロック検索テーブル33は、64バイト(512ビット)のデータから構成され、物理ゾーンに含まれる物理ブロックの使用状況を各ビットの論理値で示している。つまり、各ビットが物理ゾーンに含まれる1個の物理ブロックに対応しており、空きブロックに対応するビットには論理値「1」が設定されている。データが書き込まれている物理ブロックに対応するビットと、不良ブロックに対応するビットには論理値「0」が設定されている。
図5では、一番上の行の8ビット(1バイト)は、下位側から順番にPZIBN#0〜#7の物理ブロックの使用状況を示している。以下同様に、二番目の行は、PZIBN#8〜#15の物理ブロックの使用状況を示し、三番目の行は、PZIBN#16〜#23の物理ブロックの使用状況を示している。そして、一番下の行は、PZIBN#504〜#511の物理ブロックの使用状況を示している。従って、一番上の行の最下位ビットはPZIBN#0の物理ブロックの使用状況を示し、一番下の行の最上位ビットはPZIBN#511の物理ブロックの使用状況を示している。
この空きブロック検索テーブル33を用いて空きブロックを検索する場合は、各行の1バイトのデータを上の行から順番に読み出していき、読み出したデータが0(2進数表示:0000 0000)でないときは、そのデータをシフトレジスタに書き込み、シフトレジスタを下位方向にシフトさせる。何回のシフトでキャリーが発生したかにより、下位から何ビット目が「1」であるかを判別する。例えば、4番目の行(PZIBN#24〜#31)の0001 1000(2進数表示)をシフトレジスタに書き込み、シフトレジスタを下位方向にシフトさせた場合は、4回のシフトでキャリーが発生するので、下位側から4ビット目に対応するPZIBN#27の物理ブロックが空きブロックとして検出される。
また、次回の空きブロック検索では、4番目の行の下位側から5ビット目のビットから検索が開始される。このように下位側から5ビット目のビットから検索が開始する場合は、シフトレジスタにデータを設定する前に、設定するデータの下位4ビットが「0」になるようなマスク処理が施される。
尚、検出した空きブロックにデータを書き込んだときには、その物理ブロックに対応する空きブロック検索テーブル33上のビットが「1」から「0」に書き換えられる。又、データの書替えで、元のデータが記憶されていた物理ブロックの記憶データを消去したときには、その物理ブロックに対応する空きブロック検索テーブル33上のビットが「0」から「1」に書き換えられる。一方、アドレス変換テーブル(論理ブロックと物理ブロックの対応関係をLZIBNとPZIBNの対応関係で示したアドレス変換テーブル)については、書き込んだデータに対応する論理ブロックのLZIBNと対応関係にあるPZIBNが、元のデータが記憶されていた物理ブロックのPZIBNから書換えデータを書き込んだ物理ブロックのPZIBNに変更する。
次に、本発明に係るペアブロックの管理について説明する。このペアブロックは、同一の論理ブロックに対応する2個の物理ブロックである。上述のように、フラッシュメモリ2に記憶されているデータを書き換える場合には、元のデータが記憶されている物理ブロック(第1の物理ブロック)とは別の物理ブロック(第2の物理ブロック)に書換えデータが書き込まれる。ここで、書換え範囲に含まれるサブページの後に、書換え範囲に含まれないサブページがあった場合、この書換え範囲に含まれないサブページについては、第1の物理ブロックから第2の物理ブロックへのデータの転送(複写)を行わずに、同一の論理ブロックに対応する2個の物理ブロック(第1の物理ブロックと第2の物理ブロック)を並存させている。ここで、ペアブロックに記憶されているLBAが同一のデータ(サブページ番号が同一のサブページに記憶されているデータ)については、第2の物理ブロックに記憶されているデータが優先され、第1の物理ブロックにだけ記憶されているデータについては、第1の物理ブロックに記憶されているデータが有効になる。
このようにすることにより、アクセス対象領域が連続する書き込み指示がホストシステム側から与えられた場合、つまり、ホストシステム側から与えられた書き込み指示に基づいた書換え範囲が連続している場合に、第1の物理ブロックから第2の物理ブロックへの無駄なデータの転送(複写)を行わずに、第2の物理ブロックに対して書換えデータを継続して書き込むことができる。しかし、ペアブロックの数が多くなりすぎると、空きブロックを確保することができなくなる。
そこで、本発明に係るペアブロックの管理では、このペアブロックの最大数を設定し、ペアブロックの組数(ペア数)が最大数に達したときに、最も古いペアブロック(ペアブロック状態になった順番が最先のペアブロック)の第1の物理ブロックにだけ記憶されているデータについて、第1の物理ブロックから第2の物理ブロックへのデータの転送(複写)を行い、このデータの転送(複写)が終了した後に、第1の物理ブロックの記憶データを消去して、ペアブロックの組数(ペア数)が所定の最大数を超えないように管理している。
このペアブロックを管理する方法について図7〜図10を参照しながら説明する。尚、本実施の形態では、ペアブロックの最大数を2としている。又、ペアブロックの新旧関係(ペアブロック状態になった順番の先後関係)を判断するために、物理ブロックの先頭ページの冗長領域に2ビットのペアブロックシリアル番号(#0〜#3)を書き込んでいる。このペアブロックシリアル番号のビット数については、ペアブロックの最大数に応じて適宜設定する。例えば、ペアブロックの最大数が3以下であれば、2ビットのペアブロックシリアル番号でペアブロックの新旧関係を判断することができるが、ペアブロックの最大数が4の場合は、ペアブロックシリアル番号を3ビット(#0〜#7)にしなければ、ペアブロックの新旧関係を判断することができなくなる。
又、以下の説明では、ホストシステム4から与えられる書込み(書換え)の指示に基づいたアクセス対象領域は、LZN#0の論理ゾーンに含まれるものとして説明する。このLZN#0の論理ゾーンについては、図6に示したようなアドレス変換テーブル31及び図5に示したような空きブロック検索テーブル33が作成されているものとする。又、以下の処理を開始する時点では、ペアブロックは存在せず、後述するペアブロックテーブルには、何の情報も設定されていないものとする。
まず、ホストシステムから与えられた書込み(書換え)の指示に基づいたアクセス対象領域が、LBN#0(=LZIBN#0)の論理ブロックのSN#64〜#159の96セクタの領域であった場合の書込み(書換え)処理について説明する(図7(a)に示した*1)。
まず、アドレス変換テーブル31を参照することにより、LZIBN#0(=LBN#0)の論理ブロックに対応するデータがPZIBN#22(=PBA#22)の物理ブロックに記憶されていることが分かる。更に、後述するペアブロックテーブルを参照することにより、ペアブロックは存在しないことが分かる。
続いて、PZIBN#22(=PBA#22)の物理ブロックの書込み状態を調べ、全てのサブページにデータが書き込まれているため、空きブロック検索テーブル33を用いた空きブロック検索が行われる。この空きブロック検索で、PZIBN#27(=PBA#27)が検出され、このPBA#27(PZIBN#27)の物理ブロックに対する書込み(書換え)処理が開始される。
この書込み(書換え)処理では、まず、PZIBN#22(=PBA#22)の物理ブロックのサブページ番号#0〜#63のサブページに記憶されているデータが、PZIBN#27(=PBA#27)の物理ブロックのサブページ番号#0〜#63のサブページに転送(複写)される。続いて、ホストシステム4から与えられるLBN#0(=LZIBN#0)の論理ブロックのSN#64〜#159のセクタに対応する書換えデータ(書換えデータA)が、PZIBN#27(=PBA#27)の物理ブロックのサブページ番号#64〜#159のサブページに書き込まれる。
尚、この書込み(書換え)処理を開始する時点でペアブロックは存在しないので、PZIBN#27(=PBA#27)の物理ブロックの冗長領域には、ペアブロックシリアル番号として#0が書き込まれる。又、同一の論理ブロックに対応するPZIBN#22(=PBA#22)の物理ブロックとPZIBN#27(=PBA#27)の物理ブロックの新旧関係を判断するため、PZIBN#27(=PBA#27)の物理ブロックの冗長領域にシリアル番号が書き込まれる。PZIBN#27(=PBA#27)の物理ブロックに書き込まれるシリアル番号は、PZIBN#22(=PBA#22)の物理ブロックに書き込まれているシリアル番号をインクリメント(1を加算)した#1になる。又、空きブロック検索テーブル33のPZIBN#27(=PBA#27)の物理ブロックに対応するビットの論理値が「1」から「0」に書き換えられる。
この後、アクセス対象領域にLBN#0(=LZIBN#0)の論理ブロックのSN#160以降のセクタが含まれる書込み(書換え)の指示が与えられた場合は、PZIBN#27(=PBA#27)の物理ブロックのサブページ番号#160以降のサブページに対してその書込み(書換え)処理が続行される。従って、PZIBN#22(=PBA#22)の物理ブロックのサブページ番号#160〜#255のサブページに記憶されているデータを、PZIBN#27(=PBA#27)の物理ブロックのサブページ番号#160〜#255のサブページに転送(複写)する、データの転送(複写)を行わない。つまり、書換え範囲に含まれるサブページの後に、書換え範囲に含まれないサブページがあった場合、この書換え範囲に含まれないサブページについては、書換え対象でない記憶データの転送(複写)を行わない。
ここで、PZIBN#22(=PBA#22)の物理ブロックとPZIBN#27(=PBA#27)の物理ブロックがペアブロックになるため、ペアブロックテーブルにペアブロックを管理するための情報が設定される。
図8はペアブロックテーブル32の一例であり、このペアブロックテーブル32には、ペアブロックと対応関係にある論理ブロックのLZIBN、ペアブロックの新旧関係が新しい方の物理ブロックのPZIBN、及び新旧関係が新しい方の物理ブロックに書き込まれたペアブロックシリアル番号が設定される。ここでは、図8(a)に示したように、PZIBN#22(=PBA#22)の物理ブロック及びPZIBN#27(=PBA#27)の物理ブロックと対応関係にある論理ブロックのLZIBNである#0、新旧関係が新しい方の物理ブロックのPZIBNである#27、PZIBN#27(=PBA#27)の物理ブロックの冗長領域に書き込んだペアブロックシリアル番号である#0をそれぞれ設定する。
次に、ホストシステムから与えられた書込み(書換え)の指示に基づいたアクセス対象領域が、LBN#2(=LZIBN#2)の論理ブロックのSN#32〜#127の96セクタの領域であった場合の書込み(書換え)処理について説明する(図7(b)に示した*2)。
この書込み(書換え)処理の場合も、まず、アドレス変換テーブル31とペアブロックテーブルが参照される。アドレス変換テーブル31を参照することにより、LZIBN#2(=LBN#2)の論理ブロックに対応するデータがPZIBN#6(=PBA#6)の物理ブロックに記憶されていることが分かる。更に、ペアブロックテーブル32を参照することにより、ペアブロックが存在し、そのペアブロックに対応するペアブロックシリアル番号が#0であることが分かる。
続いて、PZIBN#6(=PBA#6)の物理ブロックの書込み状態を調べ、全てのサブページにデータが書き込まれいるため、空きブロック検索テーブル33を用いた空きブロック検索が行われる。この空きブロック検索で、PZIBN#28(=PBA#28)が検出され、このPBA#28(PZIBN#28)の物理ブロックに対する書込み(書換え)処理が開始される。
この書込み(書換え)処理では、まず、PZIBN#6(=PBA#6)の物理ブロックのサブページ番号#0〜#31のサブページに記憶されているデータが、PZIBN#28(=PBA#28)の物理ブロックのサブページ番号#0〜#31のサブページに転送(複写)される。続いて、ホストシステム4から与えられるLBN#2(=LZIBN#2)の論理ブロックのSN#32〜#127のセクタに対応する書換えデータ(書換えデータB)が、PZIBN#28(=PBA#28)の物理ブロックのサブページ番号#32〜#127のサブページに書き込まれる。
尚、PZIBN#28(=PBA#28)の物理ブロックの冗長領域には、シリアル番号として#0が書き込まれ、ペアブロックシリアル番号として#1が書き込まれる。ここで、PZIBN#28(=PBA#28)の物理ブロックの冗長領域に書き込まれるシリアル番号は、PZIBN#6(=PBA#6)の物理ブロックの冗長領域に書き込まれているシリアル番号をインクリメント(1を加算)した番号になる。又、PZIBN#28(=PBA#28)の物理ブロックの冗長領域に書き込まれるペアブロックシリアル番号は、PZIBN#27(=PBA#27)の物理ブロックの冗長領域に書き込まれているペアブロックシリアル番号をインクリメント(1を加算)した番号になる。又、空きブロック検索テーブル33のPZIBN#28(=PBA#28)の物理ブロックに対応するビットの論理値は、「1」から「0」に書き換えられる。
ここで、PZIBN#6(=PBA#6)の物理ブロックとPZIBN#28(=PBA#28)の物理ブロックがペアブロックになるため、ペアブロックが2つになる。従って、PZIBN#6(=PBA#6)の物理ブロックとPZIBN#28(=PBA#28)の物理ブロックからなるペアブロックの情報をペアブロックテーブル32に設定するためには、ペアブロックテーブルに設定されているPZIBN#22(=PBA#22)の物理ブロックとPZIBN#27(=PBA#27)の物理ブロックのペアブロック状態を解消しなければならない。このペアブロック状態を解消するため、図7(a)の*3に示したデータの転送(複写)を行わなければならない。
このデータの転送(複写)では、PZIBN#22(=PBA#22)の物理ブロックのサブページ番号#160〜#255のサブページに記憶されているデータが、PZIBN#27(=PBA#27)の物理ブロックのサブページ番号#160〜#255のサブページに転送(複写)される。このデータの転送(複写)が終了した後、PZIBN#22(=PBA#22)の物理ブロックの記憶データが消去される。又、アドレス変換テーブル31のLZIBN#0に対応するPZIBNは#22から#27に書き換えられ、空きブロック検索テーブル33のPZIBN#22(=PBA#22)の物理ブロックに対応するビットの論理値は0から1に書き換えられる。
一方、ペアブロックテーブル32には、図8(b)に示したようにPZIBN#6(=PBA#6)の物理ブロックとPZIBN#28(=PBA#28)の物理ブロックからなるペアブロックの情報が設定される。つまり、PZIBN#6(=PBA#6)の物理ブロック及びPZIBN#28(=PBA#28)の物理ブロックと対応関係にある論理ブロックのLZIBNである#2、新旧関係が新しい方の物理ブロックのPZIBNである#28、PZIBN#28(=PBA#28)の物理ブロックの冗長領域に書き込んだペアブロックシリアル番号である#1をそれぞれ設定する。
次に、LBN#1(=LZIBN#1)の論理ブロックのSN#64〜#255の192セクタの領域に対する書込み(書換え)の指示がホストシステムから与えられた場合について説明する(図9(b)に示した*4)。
この書込み(書換え)処理は、ペアブロック状態を解消するためのデータの転送(複写)(図7(a)の*3)が終了した後に開始される。従って、この書換え処理を開始するときに存在するペアブロックは、PZIBN#6(=PBA#6)の物理ブロックとPZIBN#28(=PBA#28)の物理ブロックからなるペアブロック(図9(a))だけである。
この書込み(書換え)処理の場合も、まず、アドレス変換テーブル31とペアブロックテーブルが参照される。アドレス変換テーブル31を参照することにより、LZIBN#1(=LBN#1)の論理ブロックに対応するデータがPZIBN#12(=PBA#12)の物理ブロックに記憶されていることが分かる。更に、ペアブロックテーブル32を参照することにより、ペアブロックが存在し、そのペアブロックに対応するペアブロックシリアル番号が#1であることが分かる。
続いて、PZIBN#12(=PBA#12)の物理ブロックの書込み状態を調べ、全てのサブページにデータが書き込まれいるため、空きブロック検索テーブル33を用いた空きブロック検索が行われる。この空きブロック検索で、PZIBN#50(=PBA#50)が検出され、このPBA#50(PZIBN#50)の物理ブロックに対する書込み(書換え)処理が開始される。
この書込み(書換え)処理では、まず、PZIBN#12(=PBA#12)の物理ブロックのサブページ番号#0〜#63のサブページに記憶されているデータが、PZIBN#50(=PBA#50)の物理ブロックのサブページ番号#0〜#63のサブページに転送(複写)される。続いて、ホストシステム4から与えられるLBN#1(=LZIBN#1)の論理ブロックのSN#64〜#255のセクタに対応する書換えデータ(書換えデータC)が、PZIBN#50(=PBA#50)の物理ブロックのサブページ番号#64〜#255のサブページに書き込まれる。
尚、PZIBN#50(=PBA#50)の物理ブロックの冗長領域には、シリアル番号として#3が書き込まれ、ペアブロックシリアル番号として#2が書き込まれる。ここで、PZIBN#50(=PBA#50)の物理ブロックの冗長領域に書き込まれるシリアル番号は、PZIBN#12(=PBA#12)の物理ブロックの冗長領域に書き込まれているシリアル番号をインクリメント(1を加算)した番号になる。又、PZIBN#50(=PBA#50)の物理ブロックの冗長領域に書き込まれるペアブロックシリアル番号は、PZIBN#28(=PBA#28)の物理ブロックの冗長領域に書き込まれているペアブロックシリアル番号をインクリメント(1を加算)した番号になる。又、空きブロック検索テーブル33のPZIBN#50(=PBA#50)の物理ブロックに対応するビットの論理値は、「1」から「0」に書き換えられる。
この書込み(書換え)処理が終了したときにPZIBN#12(=PBA#12)の物理ブロックに記憶されている全てのデータは、PZIBN#50(=PBA#50)の物理ブロックに記憶されているデータで置き換えられているので、アドレス変換テーブル31は更新されるが、ペアブロックテーブル32は更新されない。つまり、この書込み(書換え)処理が終了した後にPZIBN#12(=PBA#12)の物理ブロックに記憶されているデータが消去され、アドレス変換テーブル31のLZIBN#1に対応するPZIBNは#12から#50に書き換えられ、空きブロック検索テーブル33のPZIBN#12(=PBA#12)の物理ブロックに対応するビットの論理値は0から1に書き換えられる。
この後、更にホストシステムから書込み(書換え)の指示が与えられた場合、ホストシステム4から与えられる書換えデータが書込まれる物理ブロックの冗長領域には、ペアブロックテーブル32に設定されているペアブロックシリアル番号をインクリメント(1を加算)した番号、つまり、PZIBN#28(=PBA#28)の物理ブロックの冗長領域に書き込まれているペアブロックシリアル番号をインクリメント(1を加算)した番号が書き込まれる。
以上に説明した実施の形態では、ペアブロックの最大数を2としため、ペアブロックテーブル32に設定される情報(LZIBN、PZIBN及びペアブロックシリアル番号)は1組であったが、ペアブロックの最大数をnとした場合は、ペアブロックテーブル32に設定できる情報をn−1組とすればよい。例えば、ペアブロックの最大数を3とした場合は、図10に示したようにペアブロックテーブル32には2組までの情報が設定される。
図10に示したようにペアブロックテーブル32に2組の情報が設定されていた場合において、新たなペアブロックの新旧関係が新しい方の物理ブロックの冗長領域には、順番が後のペアブロックシリアル番号をインクリメント(1を加算)した番号が書き込まれる。つまり、図10に示したようにペアブロックテーブル32に設定されているペアブロックシリアル番号が#3と#0の場合には、#0をインクリメント(1を加算)した#1が新たなペアブロックの新旧関係が新しい方の物理ブロックの冗長領域に書き込まれる。
又、新たなペアブロックができた場合には、順番が先のペアブロックシリアル番号に対応するペアブロックのペアブロック状態が解消される。つまり、図10に示したようにペアブロックテーブル32に設定されているペアブロックシリアル番号が#3と#0の場合には、LZIBN#7の論理ブロックに対応するペアブロックのペアブロック状態が解消される。
以上に説明したように、本発明のメモリコントローラ、メモリコントローラを備えるフラッシュメモリ、並びに、フラッシュメモリの制御方法においては、ペアブロックの組数及びペアブロックの新旧関係(ペアブロック状態になった順番の先後関係)を管理し、ペアブロックの組数が予め設定した最大数に達したときに、一番古いペアブロック(ペアブロック状態になった順番が最先のペアブロック)のペアブロック状態を解消している。従って、ペアブロック間の無駄な記憶データの転送(複写)を減少させるという効果を維持しつつ、ペアブロックの増加に伴う空きブロック数の減少を所定の範囲内に抑えることが可能となる。
尚、本発明のメモリコントローラ、メモリコントローラを備えるフラッシュメモリ、並びに、フラッシュメモリの制御方法は上述した実施の形態に限定されず、特許請求の範囲に記載した範囲で様々の変形や改良が可能である。例えば、ペアブロックシリアル番号、ペアブロックテーブル等は、ペアブロック状態になった順番の先後関係を判別できれば、様々の変形や改良が可能である。
本発明の一実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。 フラッシュメモリにおける物理アドレス空間を示す図である。 LBAから物理ブロックアドレス(PBA)へのアドレス変換を説明する図である。 本発明の一実施の形態によるホストインターフェースブロック及びフラッシュメモリインターフェースブロックのレジスタ構成を示すブロック図である。 空きブロック検索テーブルの構成の一例を示す図である。 アドレス変換テーブルの構成の一例を示す図である。 データの書き換え処理における、物理ブロックのデータ格納状態を示す概略図である。 ペアブロックテーブルの構成の一例を示す図である。 データの書き換え処理における、物理ブロックのデータ格納状態を示す概略図である。 ペアブロックテーブルの構成の一例を示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス

Claims (5)

  1. ホストシステムから与えられる指示情報に応じて、物理ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記指示情報に基づく論理アドレスと、該論理アドレスと対応するデータが記憶されている前記物理ブロックの対応関係を管理するアドレス管理手段と、
    前記指示情報に基づく論理アドレスに対応するデータが記憶されている前記物理ブロックが存在するとき、該物理ブロックと異なる物理ブロックに前記指示情報に基づく論理アドレスに対応するデータを書き込む書込み手段と、
    前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックからなるペアブロックの対応関係、及び該ペアブロックの組数を管理するペアブロック管理手段と、
    前記ペアブロックの組数が所定数に達したときに、ペアブロック状態になった順番が最先の前記ペアブロックのペアブロック状態を解消するペアブロック解消手段と、
    を備え
    前記書込み手段が、前記異なる物理ブロックの冗長領域にペアブロック状態になった順番の先後関係を判断するためのペアブロックシリアル番号を書き込むことを特徴とするメモリコントローラ。
  2. 前記ペアブロック管理手段は、前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックの新旧関係が新しいデータが記憶されている方の前記物理ブロックの冗長領域に書き込まれている前記ペアブロックシリアル番号に基づいて、ペアブロック状態になった順番の先後を判別することを特徴とする請求項1に記載のメモリコントローラ。
  3. 請求項1又は2に記載のメモリコントローラと前記フラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
  4. ホストシステムから与えられる指示情報に応じて、物理ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記指示情報に基づく論理アドレスと、該論理アドレスと対応するデータが記憶されている前記物理ブロックの対応関係を判別するアドレス判別ステップと、
    前記指示情報に基づく論理アドレスに対応するデータが記憶されている前記物理ブロックが存在するとき、該物理ブロックと異なる物理ブロックに前記指示情報に基づく論理アドレスに対応するデータを書き込む書込みステップと、
    前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックからなるペアブロックの対応関係、及び該ペアブロックの組数を管理する情報を保持するペアブロック管理ステップと、
    前記ペアブロックの組数が所定数に達したときに、ペアブロック状態になった順番が最先の前記ペアブロックのペアブロック状態を解消するペアブロック解消ステップと、
    を有し、
    前記書込みステップにおいて、前記異なる物理ブロックの冗長領域にペアブロック状態になった順番の先後関係を判断するためのペアブロックシリアル番号を書き込むことを特徴とするフラッシュメモリの制御方法。
  5. 前記ペアブロック管理ステップにおいて、前記論理アドレスが同一のデータが記憶されている2個の前記物理ブロックの新旧関係が新しいデータが記憶されている方の前記物理ブロックの冗長領域に書き込まれている前記ペアブロックシリアル番号に基づいて、ペアブロック状態になった順番の先後を判別するための情報を保持することを特徴とする請求項4に記載のフラッシュメモリの制御方法。
JP2006278629A 2006-10-12 2006-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 Active JP4609406B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006278629A JP4609406B2 (ja) 2006-10-12 2006-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006278629A JP4609406B2 (ja) 2006-10-12 2006-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2008097339A JP2008097339A (ja) 2008-04-24
JP4609406B2 true JP4609406B2 (ja) 2011-01-12

Family

ID=39380117

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4609406B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107786299A (zh) * 2016-08-25 2018-03-09 华为技术有限公司 一种发送和接收业务的方法、装置和网络系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4844639B2 (ja) * 2009-02-19 2011-12-28 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9948809B2 (en) 2013-02-01 2018-04-17 Canon Kabushiki Kaisha Image forming apparatus, memory management method for image forming apparatus, and program, using discretely arranged blocks in prioritizing information

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7225291B2 (en) * 2004-04-19 2007-05-29 Phison Electronics Corp. Storage controlling and judging method of flash memory
JP2007280108A (ja) * 2006-04-07 2007-10-25 Sony Corp 記憶媒体制御装置、記憶媒体制御方法、プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107786299A (zh) * 2016-08-25 2018-03-09 华为技术有限公司 一种发送和接收业务的方法、装置和网络系统
US11140079B2 (en) 2016-08-25 2021-10-05 Huawei Technologies Co., Ltd. Service sending method and apparatus, service receiving method and apparatus, and network system

Also Published As

Publication number Publication date
JP2008097339A (ja) 2008-04-24

Similar Documents

Publication Publication Date Title
JP2006018373A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4609406B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4501881B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4194518B2 (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4539621B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4254930B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661748B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4366283B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム
JP4273106B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100826

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

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

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4609406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250