JP2007233838A - メモリシステムの制御方法 - Google Patents

メモリシステムの制御方法 Download PDF

Info

Publication number
JP2007233838A
JP2007233838A JP2006056431A JP2006056431A JP2007233838A JP 2007233838 A JP2007233838 A JP 2007233838A JP 2006056431 A JP2006056431 A JP 2006056431A JP 2006056431 A JP2006056431 A JP 2006056431A JP 2007233838 A JP2007233838 A JP 2007233838A
Authority
JP
Japan
Prior art keywords
block
written
data
lba
card
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.)
Pending
Application number
JP2006056431A
Other languages
English (en)
Inventor
Takashi Oshima
貴志 大嶋
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006056431A priority Critical patent/JP2007233838A/ja
Priority to US11/680,978 priority patent/US7649774B2/en
Publication of JP2007233838A publication Critical patent/JP2007233838A/ja
Priority to US12/631,883 priority patent/US7969781B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

【課題】書き込み時間を短縮することが可能であり、メモリカードの書き込み性能の低下を抑制可能なメモリシステムの制御方法を提供する。
【解決手段】NAND型フラッシュメモリ3は、複数の大ブロック41,42,43を有している。大ブロックのそれぞれは、論理ブロックアドレスLBAに応じて複数の小ブロックのデータを記憶する。コントローラ4は、書き込むべき小ブロックが大ブロックに既に書き込まれた小ブロックと同一大ブロックに書き込むべきものであるとき、書き込むべき小ブロックのLBAが大ブロックに既に書き込まれた小ブロックのLBAと非連続な場合においても同一の大ブロックに書き込む。
【選択図】図1

Description

本発明は、不揮発性半導体記憶装置、例えばNAND型フラッシュメモリを搭載したメモリシステムに係わり、特に、その制御方法に関する。
近時、デジタルカメラや携帯オーディオ装置等の電子機器はメモリカードが装着可能とされ、このメモリカードに写真データや音楽データが記憶可能とされている。このメモリカードは例えばNAND型フラッシュメモリを有し、このフラッシュメモリに各種データが書き込まれる。
ところで、メモリカードを使用するホスト機器としてのデジタルカメラや携帯オーディオ装置は、小ブロック(528バイト×32ページ)のデータサイズ毎に論理ブロックアドレス(LBA)を割り当て、このLBA単位で書き込みを行う。一方、メモリカードのコントローラは、上記データをNAND型フラッシュメモリの大ブロック(2112バイト×128ページ)に書き込む。この際、コントローラは、16個のLBAに対して1つの大ブロックを割り当て、この大ブロック内にLBAの順にデータを書き込む。LBAが連続している場合、割り当てられた大ブロックに対してデータが順次追記される。しかし、ホスト機器から供給されたLBAが非連続な場合、大ブロック内に順に書き込むことができない。このため、コントローラは、別の空き大ブロックを新たに割り当て、この新たな大ブロックに非連続なLBAのデータが書き込まれるとともに、既に書き込まれたデータが、新たな大ブロックに転送される。この後、元の大ブロックのデータは消去される。このように、LBAが非連続なデータを書き込む場合、新たな大ブロックの割り当て、及び既に書き込まれたデータの転送を伴うため、書き込み時間が増加し、メモリカードの書き込み性能が低下するという問題がある。
尚、特許文献1には、メモリカードに搭載されたフラッシュメモリの書き込み単位や消去単位、例えば、消去単位のブロックサイズが大きくなった場合においても、メモリカードへのアクセスを可能とするメモリカードが開示されている。
特開2005−222228号公報
本発明は、書き込み時間を短縮することが可能であり、メモリカードの書き込み性能の低下を抑制可能なメモリシステムの制御方法を提供しようとするものである。
本発明のメモリシステムの制御方法の態様は、第1のブロックサイズを有する複数の第1のブロックを有し、前記第1のブロックのそれぞれは、前記第1のブロックサイズより小さな第2のブロックサイズの複数の第2のブロックのデータを記憶する記憶部と、前記第1のブロックに第2のブロックのデータを書き込む制御部とを具備し、前記制御部は、書き込むべき第2のブロックが前記第1のブロックに既に書き込まれた第2のブロックと同一の前記第1のブロックに書き込むべきものであるとき、書き込むべき第2のブロックのアドレスが前記第1のブロックに既に書き込まれた第2のブロックのアドレスと非連続な場合においても同一の第1のブロックに書き込むことを特徴とする。
本発明によれば、書き込み時間を短縮することが可能であり、メモリカードの書き込み性能の低下を抑制可能なメモリシステムの制御方法を提供できる。
以下、本発明の実施の形態について、図面を参照して説明する。
図2は、実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
メモリカード1は、PCB(Printed Circuit Board)基板2と、このPCB基板2上に配置されたNAND型フラッシュメモリ3及びコントローラ4とにより構成されている。コントローラ4は、CPU(Central Processing Unit)8やROM(Read-Only Memory)9などの機能ブロックを有している。なお、NAND型フラッシュメモリ3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、1つのメモリセルに1ビットより多い情報(例えば2ビット)を記憶する多値メモリであっても良い。また、図2に示すメモリカードは、PCB基板2上にNAND型フラッシュメモリ3及びコントローラ4が配置された場合を示している。しかし、NAND型フラッシュメモリ3及びコントローラ4は、同一のLSI(Large-scale Integration)基板上に配置されても良い。
図3は、ホスト機器と上記メモリカードとを含む構成を示すブロック図である。図3において、図2と同一部分には同一符号を付している。
ホスト機器(以下、ホストと称す)20は、接続されるメモリカードをアクセスするためのハードウェア及びソフトウェア(システム)を備えている。
メモリカード1は、ホスト20に接続されたときに電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。このメモリカード1は、前述したようにNAND型フラッシュメモリ3及びコントローラ4を有している。
NAND型フラッシュメモリ3は、消去時のブロックサイズ(消去ブロックサイズ)が例えば256kByteに定められた不揮発性メモリである。このNAND型フラッシュメモリ3は、例えば0.09μmプロセス技術を用いて製作される。即ち、NAND型フラッシュメモリ3のデザインルールは、0.1μm未満となっている。
コントローラ4は、前述したCPU8及びROM9のほかに、メモリインターフェース部5、ホストインタフェース部6、バッファ7、及びRAM(Random Access Memory)10を搭載している。
メモリインターフェース部5は、コントローラ4とNAND型フラッシュメモリ3との間のインターフェース処理を行う。ホストインタフェース部6は、コントローラ4とホスト20との間のインターフェース処理を行う。
バッファ7は、ホスト20から送られてくるデータをNAND型フラッシュメモリ3へ書き込む際に、一定量のデータ(例えば1ページ分)を一時的に記憶したり、NAND型フラッシュメモリ3から読み出されるデータをホスト20へ送り出す際に、一定量のデータを一時的に記憶したりする。
CPU8は、メモリカード1全体の動作を司るものである。このCPU8は、例えばメモリカード1が電源供給を受けた際に、ROM9の中に格納されているファームウェア(制御プログラム)をRAM10上にロードして所定の処理を実行する。すなわち、CPU8は、各種のテーブルをRAM10上に作成したり、ホスト20から書き込みコマンド、読み出しコマンド、消去コマンドを受けてNAND型フラッシュメモリ3上の該当領域をアクセスしたり、バッファ7を通じてデータ転送処理を制御したりする。
ROM9は、CPU8により使用される制御プログラムなどを格納するメモリである。RAM10は、CPU8の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。
図4は、ホスト20が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ(即ち、メモリカード1内のNAND型フラッシュメモリ3)とのデータ配置の違いを示している。
ホスト20が想定しているフラッシュメモリにおいて、各ページは528Byte(512Byte分のデータ記憶部+16Byte分の冗長部)を有しており、32ページ分が1つの消去単位(即ち、16kByte+0.5kByte(ここで、kは1024))となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
一方、実際に使用するフラッシュメモリ3において、各ページは2112Byte(例えば512Byte分のデータ記憶部×4+10Byte分の冗長部×4+24Byte分の管理データ記憶部)を有しており、128ページ分が1つの消去単位(即ち、256kByte+8kByte)となる。以下では、このようなフラッシュメモリ3を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を16kByteと呼び、大ブロックカードの消去単位を256kByteと呼ぶ。
また、ホスト20が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ3とは、それぞれフラッシュメモリに対してデータを入出力するためのページバッファを備えている。ホスト20が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、528Byte(512Byte+16Byte)である。一方、実際に使用するフラッシュメモリ3に備えられるページバッファの記憶容量は、2112Byte(2048Byte+64Byte)である。データ書き込みなどの際において、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
図4に示す例は、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズの16倍である場合を示している。しかし、本実施形態はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。また、実際に使用するフラッシュメモリ3の消去ブロックサイズと、ホスト20が想定しているフラッシュメモリの消去ブロックサイズとが等しくなるように構成することも可能である。
大ブロックカードを実用上有効な製品とするためには、図4に示したフラッシュメモリ3の記憶容量は1Gビット以上であることが望ましい。フラッシュメモリ3の記憶容量が例えば1Gビットである場合、256kByteブロック(消去単位)の数は、512個となる。
また、図4においては消去単位が256kByteブロックである場合を例示しているが、消去単位が例えば128kByteブロックとなるように構築することも実用上有効である。この場合、128kByteブロックの数は、1024個となる。
また、図4に示す例は、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示している。しかし、本実施形態はこれに限定されるものではなく、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズよりも小さいものとして構成することも可能である。
図5は、ホスト20側システム及びメモリカード1(大ブロックカード)の各コミュニケーション階層を示す図である。
ホスト20側のシステムは、アプリケーションソフト21、ファイルシステム22、ドライバソフト23、及び小ブロックカード物理アクセス層24を有する。一方、メモリカード1(大ブロックカード)は、小ブロックカード物理アクセス層11、小ブロックカード物理・小ブロックカード論理変換層12、小ブロックカード論理・大ブロックカード物理変換層13、及び大ブロックカード物理アクセス層14を有する。
例えばホスト20側のアプリケーションソフト21がファイルの書き込みをファイルシステム22に要求すると、ファイルシステム22は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書き込みをドライバソフト23に指示する。これを受けて、ドライバソフト23は、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック毎のシーケンシャルな書き込みを実現する。この際、ドライバソフト23は、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層24を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書き込みコマンドを大ブロックカードに対して発行し、データ転送を行う。
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、(1)コマンド、(2)ページアドレス(ロウアドレス)、(3)カラムアドレス、(4)データ、(5)プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。また、ホストにおいて、論理・物理ブロック変換を行わず、論理アドレスでメモリカードにアクセスしてもよい。
大ブロックカード側における小ブロックカード物理アクセス層11は、ホスト20から小ブロックカードの物理ブロックアドレスによる書き込みコマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
小ブロックカード物理・小ブロックカード論理変換層12は、データ読み出しなどの際に小ブロックカードの物理ブロックアドレス(16kByteブロック分に対応)から小ブロックカードの論理ブロックアドレス(16kByteブロック分に対応)への変換処理を行うための第1のテーブルを有している。変換層12は、小ブロックカード物理アクセス層11が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第1のテーブルに反映させる。物理ブロックアドレスに関しても、上記第1のテーブルに反映させる。
小ブロックカード論理・大ブロックカード物理変換層13は、データ読み出しなどの際に小ブロックカードの論理ブロックアドレス(シーケンシャルな16kByteブロック×16個分に対応)から大ブロックカードの物理ブロックアドレス(256kByte物理ブロック分に対応)への変換処理を行うための第2のテーブルを有している。変換層12は、小ブロックカード物理アクセス層11が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第2のテーブルに反映させる。
大ブロックカード物理アクセス層14は、小ブロックカード物理アクセス層11が書き込みコマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ3内部のデータ配置を決定し、256kByte物理ブロック内において2kByte(1ページ)単位でシーケンシャルに16kByte分のデータを書き込む。また、大ブロックカード物理アクセス層14は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ3内部における管理データ領域内の所定の領域に格納する。
このようにホスト20は、小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、大ブロックカード側は、小ブロックカードの物理ブロックアドレスに対応するデータがどの256kByte物理ブロックの中に存在するかが分かるように管理する。具体的には、16kByteブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した256kByteブロック分の論理ブロックアドレスに対応するデータが、大ブロックカード内のどの256kByte物理ブロックに格納されているかが分かるように管理する。
図6は、ホスト20側から送られてくるコマンドのフォーマットを示す図である。ホスト20側から送られてくるコマンドのパケットは、図6(a)に示すように、コマンド種別情報(ここでは「書き込み」)、アドレス(物理ブロックアドレス)、データ(コンテンツなどの実データ及び付随データ(512Byte+16Byte))といった各種情報を含んでいる。
このようなフォーマットのパケットにおいては、図6(b)に示されるように、付随データ16Byte中の所定の位置に小ブロックカードの「論理ブロックアドレス」(アクセス対象となる16kByteブロックに対応する論理アドレス)が配置されている。大ブロックカードは、コマンド種別情報、物理ブロックアドレス、データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読み出しコマンドの場合には付加されない。
図7は、ホスト20側が想定しているブロック書き込み操作と、メモリカード1(大ブロックカード)側が実際に行う書き込み処理とを対比して示す図である。
ホスト20側(同図の左側)では、小ブロックカードの論理アドレスに基づく16kByteブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロックカードの物理ブロックアドレスによる16kByteブロック単位のランダムな書き込み操作を行う。
一方、大ブロックカード側(同図の右側)では、ホスト20側から書き込みコマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック単位のデータをNAND型フラッシュメモリ3内にシーケンシャルに書き込む。
前述のように、ホスト20は、小ブロックの物理アドレスによる16kByte単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック(256kByte)の一部のみを書き換えるための処理が多発する。しかしながら、大ブロックカード側(同図の右側)では、小ブロックカードをアクセス対象とするホスト側から送られてくる書込コマンドに付随されている情報の中から連続する論理ブロックアドレスを得て、大ブロックカードの物理ブロック内において小ブロックカードの論理ブロックアドレスの順にデータを配置している。このため、大ブロックの一部のみを書き換える処理の回数を低減し、既に書き込まれたデータの転送に伴うメモリカードの書き込み性能が低下を抑制することができる。
図8乃至図10は、従来の書き込み動作を示している。
図8は、NAND型フラッシュメモリ3の大ブロックを示すものであり、旧大ブロック31におけるLBA07h、LBA08h(hは16進数を示す)のデータを書き換えた場合を示している。この場合、新大ブロック32が割り当てられ、この新大ブロック32に新たなLBA07h、LBA08hのデータが順次書き込まれる。図8に示す書き込み状態において、次に書き込まれるLBAがLBA09hである場合、図9に示すように、LBA09hのデータが新大ブロック32におけるLBA08hの次に書き込まれる。
一方、図8に示す書き込み状態において、次に書き込まれるLBAがLBA10hである場合、LBA10hは、LBA08hに対して非連続である。このため、従来の書き込み制御においては、図10に示すように、さらに、新大ブロック33が割り当てられ、この新大ブロック33にLBA10hのデータが書き込まれる。この後、旧大ブロック31のLBA09hが新大ブロック32におけるLBA08hの次に転送され、LBA0Bh〜LBA0Fh、LBA00h〜LBA06hのデータが新大ブロック32に順次転送される。このため、従来は、非連続LBAを書き込む際、書き込み速度が低下していた。
これに対して、図1、図11乃至図15は、本実施形態に係る書き込み動作を示している。図1は、コントローラ4の動作を示している。図1を参照して本実施形態の書き込み動作について説明する。
コントローラ4は、データの書き込みにおいて、先ず、ホストから供給されたLBAが書き込み中の大ブロックに最後に書き込んだLBAと連続しているかどうかを判別する(S1)。この結果、LBAが連続している場合、フラグがセットされた後(S2)、書き込み中の大ブロックに空きページがあるかどうかが判別される(S3)。この結果、空きページがある場合、従来と同様に書き込み中の大ブロックに次のLBAのデータが書き込まれる(S4)。
一方、ステップS1において、ホストから供給されたLBAが書き込み中の大ブロックに最後に書き込んだLBAと非連続であると判別された場合、フラグがリセットされた後(S5)、書き込み中の大ブロックに書き込むべきLBAであるかどうかが判別される(S6)。この結果、書き込み中の大ブロックに書き込むべきLBAであると判別された場合、前記ステップS3において、空きページがあるかどうかが判別される。この結果、空きページがある場合、書き込み中の大ブロックの最後に書き込まれたLBAの次に、非連続なLBAのデータが書き込まれる(S4)。
図11は、旧大ブロック41におけるLBA07h、LBA08h(hは16進数を示す)のデータを書き換えた後、LBA0Ahのデータを書き込む場合を示している。新大ブロック42に書き込まれたLBA07h、LBA08hの次に、LBA0Ahのデータが書き込まれる。
すなわち、本実施形態においては、最後に書き込んだLBAと非連続のLBAであっても、書き込み中の大ブロックに書き込むべきLBAである場合、順次書き込み中の大ブロックに書き込まれる。例えば、図11に示すように、最後に書き込んだLBAがLBA0Ahであるときは、LBA0Ahを含む連続した16個の論理ブロックアドレスに対応する256kByte分のデータ(LBA00h〜LBA0Fh)が、書き込み中の大ブロックに書き込むべきLBAとなる。この状態で、LBA0Ah→LBA09h→LBA0Ah→LBA0Bh→LBA0Ch→LBA0Eh→LBA0Fhとデータを書き込む場合、図12に示すように、これらの非連続なLBAのデータは書き込み中の大ブロック42に順次書き込まれる。つまり、書き込むべきLBAのデータが書き込み中の大ブロックと同一のブロックに書き込むべきものであるとき、書き込むべきデータのLBAが書き込み中の大ブロック42に既に書き込まれたデータのLBAと非連続な場合においても、同一の大ブロック42に書き込む。
一方、ステップS6において、LBAが書き込み中の大ブロックに書き込むべきLBAではないと判別された場合、新たな大ブロックが割り当てられ、ホスト20からのデータが新たな大ブロックに書き込まれる。これとともに、旧大ブロックのデータが新大ブロックに転送される(S7)。
図13は、図12に示す状態において、ホスト20から供給されたLBAがLBA12hである場合を示している。LBA12は、書き込み中の大ブロック42に書き込むべきアドレス(LBA00h〜LBA0Fh)ではない。この場合、新たな大ブロック43、44が割り当てられ、大ブロック44にホスト20から供給されたLBA12hのデータが書き込まれる。さらに、この機会に、旧大ブロック41と、書き込み中の大ブロック42に非連続に書き込まれたデータが、LBA順に並び替えられて新たな大ブロック43に書き込まれる。また、大ブロック43に書き込まれたデータのLBA(LBA00h〜LBA0Fh)が大ブロック43の物理ブロックアドレス(256kByte物理ブロック分に対応)に対応するように、第2のテーブルを更新する。
また、前記ステップS3において、書き込み中の大ブロックに空きページが無くなった場合、LBAが連続していることを示すフラグがセットされているかどうかが判断される(S8)。この結果、フラグがセットされていない場合、制御がステップS9に移行され、書き込み中の大ブロック内が同一のLBAにより占められており、且つそれと同一のLBAの書き込みが発生したかどうかが判別される。この結果、上記条件を満足しない場合、前記ステップS7に制御が移行され、上記と同様の動作が実行される。
図14は、書き込み中の大ブロックの空きページが無くなった場合の動作を示している。この場合、新たな大ブロック44には、書き込み中の大ブロック42に書き込まれるべきLBA01hのデータが書き込まれる。さらに、旧大ブロック41と、書き込み中の大ブロック42に非連続に書き込まれたデータが、新たな大ブロック43にLBA順に並び替えられて書き込まれる。また、大ブロック43に書き込まれたデータのLBAが大ブロック43の物理ブロックアドレスに対応するように、第2のテーブルを更新する。
一方、ステップS9において、書き込み中の大ブロック内が同一のLBAにより占められており、且つそれと同一のLBAの書き込みが発生した場合、図15に示すように、新たな大ブロック43が割り当てられ、ホスト20からのデータLBA07hが新たな大ブロック43に書き込まれる。この後、書き込み中の大ブロック42が消去される(S10)。
また、ステップS8において、フラグがセットされていると判断された場合、すなわち、連続したLBAを有するデータを書き込む際に、空きページがなくなった場合、新たな大ブロックが割り当てられ、ホストからのデータが新たな大ブロックに書き込まれる。また、大ブロックに既に書き込まれたデータのLBAが大ブロックの物理ブロックアドレスに対応するように、第2のテーブルを更新する(S11)。
本実施形態において、書き込むべきデータのアドレスが既に書き込まれたデータのアドレスと非連続な場合、書き込み中のブロックを追記用のブロックとし、全てのデータがLBA順に書き込まれた場合、通常のデータ格納用のブロックとする。つまり、全てのデータがLBA順に書き込まれた場合、図14に示すように、書き込み中の大ブロックの空きページが無くなった場合でも、既に書き込まれたデータをLBA順に並び直して新しいブロックにコピーする必要はない。このため、第2のテーブルを更新し、LBAと大ブロックの物理ブロックアドレスの対応関係のみが更新される。
また、本実施形態において、追記用のブロックとデータ格納用のブロックは、そのブロックの物理ブロックアドレスを第2のテーブルに反映させるか否かという点で異なっている。追記用のブロックと判断された場合、既に書き込まれたデータをLBA順に並び直して新しい大ブロックにコピーし、その新しい大ブロックの物理ブロックアドレスが第2のテーブルに反映される。つまり、追記用のブロックは第2のテーブルに反映されず、データ格納用のブロックとは別に管理される。
一方、上記のように、全てのデータがLBA順に大ブロックに書き込まれた場合、その大ブロックはデータ格納用のブロックとして扱われる。この場合、新しい大ブロックへコピーされないため、データが書き込まれた大ブロックの物理ブロックアドレスがそのまま第2のテーブルに反映される。
上記実施形態によれば、書き込み中の大ブロックに書き込むべきLBAである場合、大ブロックに空きページがある限り非連続なLBAであっても追記し、大ブロックに空きページが無くなった場合、新たな大ブロックを割り当て、この新たな大ブロックに書き込み中の大ブロックのデータを転送する。このため、新たな大ブロックの割り当て、及びデータの転送の回数を削減できるため、書き込み速度の低下を抑制することができる。
また、ホスト20から供給されたLBAが、書き込み中の大ブロックに書き込むべきLBAでない場合、新たな大ブロックを割り当て、この新たな大ブロックにホスト20から供給されたデータを記憶させている。このため、新たな大ブロックの割り当て、及びデータの転送の回数を削減できるため、書き込み速度の低下を抑制することができる。
さらに、上記実施形態によれば、書き込み途中の大ブロックを追記専用ブロックとして使用している。このため、別途追記専用のブロックを必要としない。したがって、ユーザのデータ記憶領域の低減を防止できるとともに、追記専用のブロックの管理を必要としない利点を有している。
なお、上記実施形態では、ホスト20が物理ブロックアドレスによる書き込みコマンドをメモリカード1に対して発行する場合を例に挙げて説明している。しかし、本実施形態はこれに限定されるものではなく、ホスト20が論理アドレスによる書き込みコマンドをメモリカード1に対して発行するように構成することも可能である。
また、以上の実施形態では、ホスト20が発行する物理ブロックアドレス(16kByteブロック分に対応)から実際に使用するフラッシュメモリ3の物理ブロックアドレス(256kByteブロック分に対応)への変換処理を行うための第1及び第2のテーブルをコントローラ4が管理する場合を例に挙げて説明している。しかし、本実施形態はこれに限定されるものではなく、ホスト20が論理アドレスをメモリカード1に対して発行する場合、論理アドレスからフラッシュメモリ3の物理アドレスへの変換処理を行うための1つのテーブルをコントローラ4が管理するように構成してもよい。
本実施形態に係るメモリシステムの動作を示すフローチャート。 実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。 ホストとメモリカードとを含む構成を示すブロック図。 ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。 ホスト側システム及びメモリカードの各コミュニケーション階層を示す図。 ホスト側から送られてくるコマンドのフォーマットを示す図。 ホスト側が想定しているブロック書き込み操作と、メモリカード側が実際に行う書き込み処理とを対比して示す図。 従来の書き込み動作を示す図。 従来の書き込み動作を示す図。 従来の書き込み動作を示す図。 本実施形態に係る非連続なLBAの書き込み動作を示す図。 本実施形態に係る非連続なLBAの書き込み動作を示す図。 本実施形態に係る非連続なLBAの書き込み動作を示す図。 本実施形態に係る非連続なLBAの書き込み動作を示す図。 本実施形態に係る非連続なLBAの書き込み動作を示す図。
符号の説明
3…NAND型フラッシュメモリ、4…コントローラ、8…CPU、20…ホスト、41〜44…大ブロック、LBA…論理ブロックアドレス。

Claims (5)

  1. 第1のブロックサイズを有する複数の第1のブロックを有し、前記第1のブロックのそれぞれは、前記第1のブロックサイズより小さな第2のブロックサイズの複数の第2のブロックのデータを記憶する記憶部と、
    前記第1のブロックに第2のブロックのデータを書き込む制御部とを具備し、
    前記制御部は、書き込むべき第2のブロックが前記第1のブロックに既に書き込まれた第2のブロックと同一の前記第1のブロックに書き込むべきものであるとき、書き込むべき第2のブロックのアドレスが前記第1のブロックに既に書き込まれた第2のブロックのアドレスと非連続な場合においても同一の第1のブロックに書き込むことを特徴とするメモリシステムの制御方法。
  2. 前記制御部は、前記第2のブロックを前記第1のブロックに書き込むとき、前記第1のブロック内に空きブロックが無い場合、別の第1のブロックに書き込むべき前記第2のブロックを書き込み、元の第1のブロックに書き込まれていた第2のブロックを別の第1のブロックに転送することを特徴とする請求項1記載のメモリシステムの制御方法。
  3. 前記制御部は、前記第2のブロックを前記第1のブロックに書き込むとき、前記第2のブロックのアドレスが前記第1のブロックに既に書き込まれている第2のブロックと同一の第1のブロックに書き込むべきものではない場合、別の第1のブロックに前記第2のブロックのデータを書き込むことを特徴とする請求項1記載のメモリシステムの制御方法。
  4. 前記制御部は、前記第1のブロックが同一のアドレスを有する第2のブロックにより満たされ、次に書き込む第2のブロックのアドレスが既に書き込まれている第2のブロックのアドレスと等しい場合、別の第1のブロックを割り付け、この割り付けられた第1のブロックに第2のブロックのデータを書き込むことを特徴とする請求項1記載のメモリシステムの制御方法。
  5. 前記第1のブロックサイズは、消去ブロックサイズであることを特徴とする請求項1記載のメモリシステムの制御方法。
JP2006056431A 2006-03-02 2006-03-02 メモリシステムの制御方法 Pending JP2007233838A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006056431A JP2007233838A (ja) 2006-03-02 2006-03-02 メモリシステムの制御方法
US11/680,978 US7649774B2 (en) 2006-03-02 2007-03-01 Method of controlling memory system
US12/631,883 US7969781B2 (en) 2006-03-02 2009-12-07 Method of controlling memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006056431A JP2007233838A (ja) 2006-03-02 2006-03-02 メモリシステムの制御方法

Publications (1)

Publication Number Publication Date
JP2007233838A true JP2007233838A (ja) 2007-09-13

Family

ID=38472709

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006056431A Pending JP2007233838A (ja) 2006-03-02 2006-03-02 メモリシステムの制御方法

Country Status (2)

Country Link
US (2) US7649774B2 (ja)
JP (1) JP2007233838A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133416A (ja) * 2010-12-17 2012-07-12 Toshiba Corp メモリシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386736B2 (en) * 2008-12-18 2013-02-26 Spansion Llc Rapid memory buffer write storage system and method
CN103778964B (zh) * 2013-12-30 2016-08-17 上海晨思电子科技有限公司 一种NAND Flash烧写数据的处理、使用方法及装置、系统
KR102430198B1 (ko) 2014-06-12 2022-08-05 삼성전자주식회사 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
RU208898U1 (ru) * 2021-02-20 2022-01-21 Михаил Юрьевич Сазыкин Фильтр для воды

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005022393A1 (ja) * 2003-08-29 2005-03-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びその書込み方法
JP2005196736A (ja) * 2003-12-30 2005-07-21 Samsung Electronics Co Ltd フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3942807B2 (ja) * 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
US20020188805A1 (en) * 2001-06-05 2002-12-12 Sailesh Kottapalli Mechanism for implementing cache line fills
US6941411B2 (en) * 2002-08-21 2005-09-06 Micron Technology, Inc. Non-contiguous address erasable blocks and command in flash memory
US7130979B2 (en) * 2002-08-29 2006-10-31 Micron Technology, Inc. Dynamic volume management
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7350044B2 (en) * 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
JP3892851B2 (ja) 2004-02-04 2007-03-14 株式会社東芝 メモリカード及び半導体装置
JP4253272B2 (ja) * 2004-05-27 2009-04-08 株式会社東芝 メモリカード、半導体装置、及び半導体メモリの制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005022393A1 (ja) * 2003-08-29 2005-03-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びその書込み方法
JP2005196736A (ja) * 2003-12-30 2005-07-21 Samsung Electronics Co Ltd フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133416A (ja) * 2010-12-17 2012-07-12 Toshiba Corp メモリシステム

Also Published As

Publication number Publication date
US20100085810A1 (en) 2010-04-08
US7969781B2 (en) 2011-06-28
US20070208913A1 (en) 2007-09-06
US7649774B2 (en) 2010-01-19

Similar Documents

Publication Publication Date Title
JP3892851B2 (ja) メモリカード及び半導体装置
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
JP4406339B2 (ja) コントローラ、メモリカード及びその制御方法
US7698497B2 (en) Method of controlling card-shaped memory device
US20170336992A1 (en) Method, device, and program for managing a flash memory for mass storage
WO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
WO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
JPWO2005083573A1 (ja) 半導体メモリ装置
JP4253272B2 (ja) メモリカード、半導体装置、及び半導体メモリの制御方法
JP4843222B2 (ja) 半導体記憶装置の制御方法、メモリカード、及びホスト機器
JP2004295865A (ja) 自動ブーティングシステム及び自動ブーティング方法
JP4460967B2 (ja) メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
JP2007233838A (ja) メモリシステムの制御方法
JPWO2007105688A1 (ja) メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
JP2006011533A (ja) メモリカード、半導体装置、及び半導体メモリの制御方法
KR20080033649A (ko) 머지 빈도를 줄일 수 있는 플래쉬 메모리 시스템 및 그관리 방법
JP2009259145A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
EP1804166B1 (en) Memory device and information processing apparatus
JP2008033379A (ja) 不揮発性記憶装置
JP2007249662A (ja) メモリカード及びメモリカードの制御方法
US7634612B2 (en) Method of recording and reproducing information
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP2006178909A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4498341B2 (ja) メモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120424