JP4738038B2 - メモリカード - Google Patents

メモリカード Download PDF

Info

Publication number
JP4738038B2
JP4738038B2 JP2005089896A JP2005089896A JP4738038B2 JP 4738038 B2 JP4738038 B2 JP 4738038B2 JP 2005089896 A JP2005089896 A JP 2005089896A JP 2005089896 A JP2005089896 A JP 2005089896A JP 4738038 B2 JP4738038 B2 JP 4738038B2
Authority
JP
Japan
Prior art keywords
block
data
address
write
lba
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005089896A
Other languages
English (en)
Other versions
JP2006268776A (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.)
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 JP2005089896A priority Critical patent/JP4738038B2/ja
Priority to US11/205,125 priority patent/US20060218347A1/en
Priority to TW095106685A priority patent/TW200702991A/zh
Priority to KR1020060026848A priority patent/KR100769402B1/ko
Publication of JP2006268776A publication Critical patent/JP2006268776A/ja
Application granted granted Critical
Publication of JP4738038B2 publication Critical patent/JP4738038B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47BTABLES; DESKS; OFFICE FURNITURE; CABINETS; DRAWERS; GENERAL DETAILS OF FURNITURE
    • A47B23/00Bed-tables; Trays; Reading-racks; Book-rests, i.e. items used in combination with something else
    • A47B23/002Bed-tables; Trays; Reading-racks; Book-rests, i.e. items used in combination with something else supported only by a person
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47CCHAIRS; SOFAS; BEDS
    • A47C27/00Spring, stuffed or fluid mattresses or cushions specially adapted for chairs, beds or sofas
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリカードに関し、例えば、メモリカードへのデータの書き込み方式に関する。
現在、音楽データや画像データの記録メディアとしてフラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている。メモリカードを用いるホスト機器中のアプリケーション等からの書き込み要求に応じて、ファイルシステムが、メモリカードに記憶されるデータを管理する。
ファイルシステムは、書き込まれるデータをクラスタ単位の大きさに分割し、分割された各データに論理アドレス(Logical Block Address(LBA))を割り当て、LBA順に、書き込まれていないクラスタにデータを割り当てる。この割り当てに従って、メモリカードは、メモリに実際にデータを書き込む。クラスタは、データを記憶するもの、および管理用データを記憶するものに分類される。
なお、メモリカードのコントローラは、データを読み出す際の効率性の観点から、所定の範囲にわたって連続するLBA(例えばLBA0乃至15等)のデータを、管理単位としての1つのブロックに割り当てる。
クラスタの管理データ記憶用の部分のテーブル(例えばFAT(File Allocation Table)に、どのデータがどのクラスタに割り当てられているかが記載される。ファイルが読み出される際、この情報をトレースすることにより、元のデータが復元される。また、管理データとして、ファイル名またはフォルダ名、ファイルサイズ、属性およびファイルの更新日時等のディレクトリエントリ(directory entry(DIR))もある。
これらの管理用データ(上記例のFATおよびDIR等)は、以上のような特性から、データの書き込みの間、定期的に更新される。
一方、メモリカードのフラッシュメモリは、1)データの書き込みはページ単位で行われる、2)データの消去はブロックと呼ばれる複数のページをまとめた単位で行われる、という特徴を有する。このため、一般に、書き込み済みのページを有するブロック内に含まれるページ内のデータが更新される場合、「引越し書き込み」と呼ばれる処理が行われる。引越し書き込みでは、書き込まれるデータ(新データ)がデータの書き込まれていない新ブロックに書き込まれ、旧データ(新データに書き換えられるデータ)を含む旧ブロックから、書き換えられない残りのデータが新ブロックにコピーされる。このため、1つのページの書き込みにかなりの時間がかかる場合がある。
上記のように、ファイルシステムは、LBA(例えばLBA0乃至15等)のデータを1つのブロックに割り当てる。このため、非連続のLBAのデータが書き込まれる度に、このLBAが属するLBA群のデータが含まれたブロックを引っ越す作業が必要になる。このことは、書き込み速度の低下に繋がる。
LBAが非連続になるタイミングとして、管理用データの更新が挙げられる。これらは、定期的に更新されるため、引越し書き込みが定期的に発生する。
管理用データの更新時の引越し書き込みを回避するために、追記専用の(引越し書き込みの必要性が生じない)キャッシュブロックを設けることが行われる。しかしながら、この場合、ファイルシステムは、どのLBAのデータが、キャッシュブロックへの書き込みに適切(更新が頻繁に発生する)か、を判断する必要がある。つまり、メモリカードに対してなされた論理フォーマット上で、管理用データ(FAT、DIR)のLBAが何であるかが判断される必要がある。
このための方法として、所定の管理用データを記憶するMBS(Master Boot Sector)やファイル管理用データの中身を解析することが考えられる。しかしながら、解析のために、これらのデータを読み出す時間、読み出されたデータを格納するためのバッファ、これらを解析する時間、等の余分な時間および資源が必要となる。
この出願の発明に関連する先行技術文献情報としては次のものがある。
特開平9-114598号公報
本発明は、高い書き込み速度を実現可能なメモリカードを提供しようとするものである。
本発明の一実施形態によるメモリカードは、データを記憶可能な複数の第ブロックおよび複数の第2ブロックを有し、第1および第2ブロックのそれぞれを消去単位としてデータを消去可能な第1メモリと、ホスト機器によって付されたアドレスを有する書き込みデータを前記第1メモリに書き込む指示を出す演算部と、前回に書き込まれたデータのアドレスと連続するアドレスを期待値とし、書き込み要求の際に前記期待値でない前記アドレスを記憶する第2メモリと、前記期待値でない前記アドレスの前記書き込みデータの書き込み要求があった回数を、前記アドレスごとに数える第1カウンタと、前記第1カウンタにおける値が第1設定値に達した前記アドレスを記憶する第3メモリと、を具備し、前記演算部は、前記第3メモリが記憶する前記アドレスの前記書き込みデータの書き込み要求が来た際、このアドレスに関わらず、前記第2ブロックのデータの書き込まれていない個所に前記書き込みデータを書き込む指示を出すことを特徴とする。
本発明によれば、高い書き込み速度を実現可能なメモリカードを提供できる。
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能および構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
[1]構成
図1は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。図1に示されるように、本実施形態に係るメモリカード1は、PCB(Printed Circuit Board)基板2と、基板2上に配置されたNAND型フラッシュメモリ(以下、フラッシュメモリと称する)3およびコントローラ4を有する。
コントローラ4には、CPU(Central Processing Unit)8やROM(Read-Only Memory)9などの機能ブロックが搭載されている。各デバイスの詳細については後で述べる。なお、フラッシュメモリ3は、1つのメモリセルに1ビットの情報を記憶する2値メモリであっても良いし、1つのメモリセルに1ビットより多い情報(例えば2ビット)を記憶する多値メモリであっても良い。
また、図1では、基板2上にフラッシュメモリ3およびコントローラ4が配置された場合を示したが、フラッシュメモリ3およびコントローラ4は、同一のLSI(Large-scale Integration)基板上に配置されても良い。
以下の説明において使用する用語「論理ブロックアドレス(LBA)」、「物理ブロックアドレス」は、それぞれ、ブロック自体の論理アドレス、物理アドレスを意味するものである。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するものではあるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得ることを示すものである。
フラッシュメモリのメモリ領域は、通常のデータ記憶用の通常ブロックと、キャッシュブロックとを含んでいる。書き込むデータが、通常ブロックとキャッシュブロックにどのような法則で割り振られるかについては、項目[2]書き込み動作において詳述する。
図2は、ホスト機器とメモリカードとを含む構成を示すブロック図である。図2に示されるように、ホスト機器(以下、ホストと称す)20は、接続されるメモリカードに対してアクセスを行うためのハードウェアおよびソフトウェア(システム)を備えている。ホスト20は、メモリカード1内部の物理状態(何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理し、メモリカード1内のフラッシュメモリ3を直接制御するものとして構築されている。
また、ホスト20は、消去時の消去ブロックサイズが16kBに定められているフラッシュメモリ3を使用することを前提として、16kB単位で論理・物理アドレスの割当を行う。多くの場合、ホスト20は、論理アドレス16kB分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う(該当するコマンドを発行する)。
メモリカード1は、ホスト20に接続されたときに電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。
フラッシュメモリ3は、不揮発性メモリであり、その消去時の消去ブロックサイズ(消去単位のブロックサイズ)が256kBに定められている。フラッシュメモリ3へのデータの書き込み、およびフラッシュメモリ3からのデータの読み出しは、例えば16kB単位で行われる。フラッシュメモリ3は、例えば0.09μmプロセス技術を用いて製作される。すなわち、フラッシュメモリ3のデザインルールは0.1μm未満である。
コントローラ4は、CPU8およびROM9のほかに、メモリインタフェース部5、ホストインタフェース部6、バッファ7、およびRAM(Random Access Memory)10を搭載している。
メモリインタフェース部5は、コントローラ4とフラッシュメモリ3との間のインタフェース処理を行う。ホストインタフェース部6は、コントローラ4とホスト20との間のインタフェース処理を行う。
バッファ7は、ホスト20から送られてくるデータをフラッシュメモリ3へ書き込む際に、一定量のデータ(例えば1ページ分)を一時的に記憶する。また、バッファ7は、フラッシュメモリ3から読み出されるデータをホスト20へ送り出す際に、一定量のデータを一時的に記憶する。
CPU(演算部)8は、メモリカード1全体の動作を司る。CPU8は、例えば、メモリカード1が電源供給を受けた際に、ROM9の中に格納されているファームウェア(制御プログラム)をRAM10上にロードし、所定の処理を実行する。CPU8は、ファームウェアに従って、各種のテーブルをRAM10上で作成したり、ホスト20から書き込みコマンド、読み出しコマンド、消去コマンドを受けてフラッシュメモリ3上の該当領域に対するアクセスを実行したり、バッファ7を通じたデータ転送処理を制御したりする。
ROM9は、CPU8により使用される制御プログラムなどを格納する。RAM10は、揮発性メモリであり、CPU8の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
また、RAM10は、後述するキャッシュブロックの管理用の領域cp、ep(RAMcp、RAMep)を有する。RAMcp、RAMepは、例えばそれぞれ8個の記憶単位を有する。RAMcpは、キャッシュブロックに書き込む候補のLBAを格納している。
cpカウンタctcp、epカウンタctepは、RAMcp、RAMep内のLBAの状態に応じて、計数を行う。RAMcp、RAMep、cpカウンタctcp、epカウンタctepの詳細な動作については、項目[2]書き込み動作において説明する。
図3は、ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリ(すなわち、メモリカード内のフラッシュメモリ)と、のデータ配置の違いを示す図である。
ホスト20が想定しているフラッシュメモリは、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有しており、32ページ分が1つの消去単位(すなわち、16kB+0.5kB(ここで、kは1024))である。以下では、この1つの消去単位を小ブロックと称し、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
一方、実際に使用するフラッシュメモリ3では、各ページは2112B(例えば512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有しており、128ページ分が1つの消去単位(すなわち、256kB+8kB)となる。以下では、この1つの消去単位を大ブロックと称し、このようなフラッシュメモリ3を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を16kBと呼び、大ブロックカードの消去単位を256kBと呼ぶ。
また、ホスト20が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ3とは、それぞれ、フラッシュメモリへのデータ入出力を行うためのページバッファを備えている。ホスト20が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、528B(512B+16B)である。一方、実際に使用するフラッシュメモリ3に備えられるページバッファの記憶容量は、2112B(2048B+64B)である。データ書き込みなどの際には、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。
図3の例では、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズの16倍である場合を示したが、本発明はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
メモリカード1を実用上有効な製品とするためには、図3に示したフラッシュメモリ3の記憶容量は1Gb以上であることが望ましい。フラッシュメモリ3の記憶容量が例えば1Gbである場合、256kBブロック(消去単位)の数は、512個となる。
また、図3においては消去単位が256kBブロックである場合を例示しているが、消去単位が例えば128kBブロックとなるように構築することも実用上有効である。この場合、128kBブロックの数は、1024個となる。
また、図3の例では、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、本発明はこれに限定されない。例えば、実際に使用するフラッシュメモリ3の消去ブロックサイズが、ホスト20が想定しているフラッシュメモリの消去ブロックサイズよりも小さくてもよい。
図4は、ホストおよびメモリカードの各コミュニケーション階層を示す図である。図4に示すように、ホスト20のシステムは、アプリケーションソフト21、ファイルシステム22、ドライバソフト23、および小ブロック物理アクセス層24を有する。一方、メモリカード1のシステムは、小ブロック物理アクセス層11、小ブロック物理・小ブロック論理変換層12、小ブロック論理・大ブロック物理変換層13、および大ブロック物理アクセス層14を有する。
例えば、ホスト20側のアプリケーションソフト21がファイルの書き込みをファイルシステム22に要求すると、ファイルシステム22は、小ブロックの論理ブロックアドレス(小ブロック論理アドレス)に基づきシーケンシャルなセクタ書き込みをドライバソフト23に指示する。これを受けて、ドライバソフト23は、小ブロック論理アドレスに基づく16kBブロック毎のシーケンシャルな書き込みを実現するための動作を行う。すなわちドライバソフト23は、論理ブロックアドレス・物理ブロックアドレス変換を行い、次いで、小ブロック物理アクセス層24を通じて、小ブロックの物理ブロックアドレス(小ブロック物理アドレス)によるランダムな書き込みコマンドをメモリカード1に対して発行し、データ転送を行う。
なお、ライトアクセスにおいては、小ブロックに基づいた場合も大ブロックに基づいた場合も、プロトコル上、(1)コマンド、(2)ページアドレス(ロウアドレス)、(3)カラムアドレス、(4)データ、(5)プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。
メモリカード1の小ブロック物理アクセス層11は、ホスト20から小ブロック物理アドレスによる書き込みコマンドを受けると、小ブロック物理アドレスやデータのほか、これに付随する付随データに含まれている小ブロック論理アドレスを取得する。
小ブロック物理・小ブロック論理変換層12は、第1テーブルを有する。第1テーブルは、データ読み出しなどの際に小ブロック物理アドレス(16kBブロック分に対応)から小ブロック論理アドレス(16kBブロック分に対応)への変換処理を行うために用いられる。
変換層12は、小ブロック物理アクセス層11が書き込みコマンドを受けて小ブロック論理アドレスを取得したときには、これを第1テーブルに反映させる。小物理ブロックアドレスに関しても、第1テーブルに反映させる。
小ブロック論理・大ブロック物理変換層13は、第2テーブルを有する。第2テーブルは、データ読み出しなどの際に小ブロック論理アドレス(シーケンシャルな16kBブロック×16個分に対応)から大ブロックの物理ブロックアドレス(大ブロック物理アドレス(256kB物理ブロック分に対応))への変換処理を行うために用いられる。
変換層12は、小ブロック物理アクセス層11が書き込みコマンドを受けて小ブロック論理アドレスを取得したときには、これを第2テーブルに反映させる。
大ブロック物理アクセス層14は、小ブロック物理アクセス層11が書き込みコマンドを受けて取得した小ブロック論理アドレスに基づき、フラッシュメモリ3内部のデータ配置を決定し、256kB物理ブロック(大物理ブロック)内において2kB(1ページ)単位でシーケンシャルに16kB分のデータを書き込む。したがって、小ブロック1つ分(16kB)の書き込みの結果、大物理ブロック中の8ページ分(1ページ=2kB)にデータが書き込まれる。また、ホストは、1つの小論理ブロックごとに1つのLBAを付与する。
また、大ブロック物理アクセス層14は、取得した小ブロック論理アドレスや小物理ブロックアドレスをフラッシュメモリ3内部における管理データ領域内の所定の領域に格納する。
このように、ホスト20は小ブロック物理アドレスに基づくコマンドを発行するので、メモリカード1は、小ブロック物理アドレスに対応するデータがどの大物理ブロックの中に存在するのかが分かるように管理する。具体的には、16kBブロック毎に小ブロック論理・小ブロック物理アドレスの対応関係を管理すると共に、連続した256kB分の小ブロックの小論理ブロックアドレスに対応するデータがどの大物理ブロックに格納されているかが分かるように管理する。
図5(a)および図5(b)は、ホスト20が発行するコマンドのフォーマットを示す図である。図5(a)に示されるように、ホスト20が発行するコマンドのパケットは、コマンド種別情報(ここでは「書き込み」)、アドレス(物理ブロックアドレス)、データ(コンテンツなどの実データおよび付随データ(512B+16B))といった各種情報を含んでいる。
図5(b)に示されるように、メモリカード1にとっては、「アドレス」は、小ブロック物理アドレスに相当する。このようなフォーマットのパケットにおいては、付随データ16B中の所定の位置に小ブロック論理アドレス(アクセス対象となる16kBブロックに対応する論理アドレス)が配置されている。メモリカード1は、コマンド種別情報、小物理ブロックアドレス、データを取得するほか、特に上記の小論理ブロックアドレスを取得する。なお、小論理ブロックアドレスは、読み出しコマンドの場合には付加されない。
図6は、ホスト20が想定しているブロック書き込み操作と、メモリカード1が実際に行う書き込み処理と、を対比して示す図である。図6に示されるように、ホスト20(同図の左側)では、小ブロック論理アドレスに基づく16kBブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロック物理アドレスによる16kBブロック単位のランダムな書き込み操作を行う。
一方、メモリカード1(同図の右側)では、ホスト20から書き込みコマンドを受けた場合、小ブロック論理アドレスに基づく16kBブロック(小ブロック)単位のデータをフラッシュメモリ3内にシーケンシャルに書き込む。
[2]書き込み動作
次に、図7乃至図32を参照して、上記構成のホストの書き込み動作について説明する。図7は、本実施形態に係るメモリカードのフラッシュメモリのメモリ空間の一部、RAMcp、ep、cpカウンタctcp、ctepを示す図である。図8は、本実施形態に係るメモリカードのフラッシュメモリの書き込み動作を示すフローチャートである。図9乃至図32は、それぞれ、フラッシュメモリのメモリ空間の一部、RAM、カウンタの1つの状態を示している。
図7に示されるように、メモリ空間は、通常データ用のブロック(通常ブロック)n乃至n+4、キャッシュ用のブロック(キャッシュブロック)c、c+1を含む。各ブロックn乃至n+4、c、c+1の1列が1つの大ブロック(すなわち、消去単位)に相当する。各大ブロックごとにアドレスn乃至n+4、c、c+1が割り当てられる。また、各大ブロックは、上記のように128ページからなる。
また、上記のように、ホスト20からの1つの小ブロックの書き込みは、大ブロック中の8ページの書き込みに相当する。よって、各大ブロックを、8ページごとに区分して示している。例えば、各大ブロックの図の最上の書き込み領域のページアドレスは0乃至7である。以下、同様である。
1つの大ブロック中の8ページからなる範囲を書き込み領域(図で、1つのますに対応)と称して、以下、説明する。そして、各書き込み領域を座標形式(x,y)により表す。例えば、ブロックアドレスn内の第8行目の書き込み領域を、(n,8)の書き込み領域と称する。
1つの大ブロック(以下、単にブロックと記載する)には、読み出しを容易にする観点から、基本的に、小ブロック論理アドレス(以下、LBAと記載する)が連続する16個の小ブロックが書き込まれる。なお、16という数は、本実施形態では、1つのブロックが16個の書き込み領域を有することに対応している。したがって、例えば、あるブロックアドレス中の書き込み領域に、LBA2、LBA16のデータが連続して書き込まれる場合、LBA2のデータが書き込まれたブロック中に、空き(書き込まれていない)書き込み領域が有ったとしても、LBA16のデータは、別のブロック中の書き込み領域に書き込まれる。以下、同じブロックに属するべき、連続する16個のLBAをグループと称する。
通常ブロックは、同じグループに属するLBAのデータを1つのブロックまとめるために、データのコピーが行われる。一方、キャッシュブロックは、追記専用のブロックである。
RAMcp、epは、それぞれ8個の記憶単位(図中の1つのます)からなる。各記憶単位は、1つのLBAの値を記憶する。記憶単位の数は、適宜に増減することが可能である。そして、各RAMcp、epの各記憶単位には、説明の便宜上、列に沿って、順にインデックス0乃至8が割り振られている。
RAMcp、RAMepが記憶する値を参照しながら、コントローラ4は、所定のLBAのデータをキャッシュブロックに割り当てる。あるLBAがRAMcpに登録された段階では、このLBAはキャッシュブロックへの書き込み対象とはならない。一方、RAMepは、キャッシュブロックに書き込む候補のLBAを格納している。RAMepに登録されているLBAが更新される場合、このLBAのデータは、通常ブロックではなく、キャッシュブロックに書き込まれる。
cpカウンタctcpは、RAMcpの各記憶単位に対して設けられ、後述の所定の動作に従って増加する。同様に、epカウンタctepは、RAMepの各記憶単位に対して設けられ、後述の所定の動作に従って、設定値から減少する。
次に、図8を中心に用い、各動作の具体例を図9乃至図31を参照しながら、書き込み動作を説明する。
[2−1]書き込み要求
図8に示されるように、ホスト20から、あるLBAのデータの書き込み要求が来る(ステップS1)と、コントローラ4は、この書き込まれるLBA(以下、書き込みLBA)が、RAMepに登録されているか否かを判断する(ステップS2)。
次に、コントローラ4は、該LBAが期待値か否かを判定する(ステップS3)。本実施形態の場合、「期待値」とは、例えばLBAが、前回に書き込まれたデータのLBAと連続していることを意味する。LBAが連続していない場合、書き込まれるデータは、先に書き込まれたデータとともに、1つのファイルを構成する等の関係性を有さない可能性がある。すなわち、先の書き込みデータのLBAと非連続のLBAのデータは、FATやDIR等のファイル情報である可能性がある。よって、LBAの連続性が、このLBAのデータをキャッシュブロックに書き込むための判断の材料の1つとして利用される。
しかしながら、本発明はこの態様に限られない。すなわち、本発明の実施形態は、あるメモリとそのコントローラにおいて、コントローラが、ある法則にしたがって書き込む場合全般に適用できる。そして、この法則から外れる(期待値から外れる)データの書き込み要求を、このデータをキャッシュブロックに書き込むための判断材料として用いていればよい。よって、メモリとそのコントローラの構成によっては、例えば、物理ブロックアドレス(Physical Logic Address)を用いて判断すること等も可能である。
[2−2]書き込みLBAが期待値の場合の動作
書き込みLBAが期待値であった場合、この書き込みLBAのデータは、直前のLBAと同じ通常ブロックに書き込まれる(ステップS4)。
次に、ここまでの動作を具体例(図9)に沿って説明する。図9は、書き込み領域(n,1)にLBA2のデータが書き込まれている状態で、LBA3のデータの書き込み要求が来た場合を示している。LBA3は、RAMepに登録されておらず、直前に書き込まれたLBA2と連続している。よって、図9に示されるように、LBA3のデータは、書き込み領域(n,2)に書き込まれる。
[2−3]書き込みLBAが期待値でない場合の動作
図8のステップS3の判断が偽であった場合、コントローラ4は、書き込みLBAがRAMcpに登録されているか否かを判断する(ステップS5)。登録されていない場合、書き込みLBAをRAMcpに登録するとともに、書き込みLBAに関して計数を行うcpカウンタctcpを“0”にセットする(ステップS6)。次に、コントローラ4は、書き込みLBAのデータを通常ブロックに書き込む(ステップS7)。この際、書き込みLBAのデータは、直前に書き込まれたLBAのデータが書き込まれたブロックと異なるブロックに書き込まれる。
次に、通常ブロックの整理が行われる(ステップS8)。ここでは、1つのブロックにまとめられているべき複数のLBA(同じグループのLBA)のデータが異なるブロックに書き込まれている場合に、これらを1つのブロックにまとめる作業が行われる。
次に、ここまでの動作を具体例(図10乃至図15)に沿って説明する。図10は、図9に続く状態を示しており、図9の状態からLBA10、11、12のデータの書き込み要求が来た場合を示している。LBA10は、直前に書き込まれたLBA3からの期待値ではなく、また、RAMcpに登録されていない。よって、図10に示されるように、LBA10がRAMcpに登録され、LBA10用のcpカウンタctcpが“0”にセットされる。
次いで、LBA10のデータは、直前に書き込まれたLBA3のデータが存在するブロックと異なるブロックn+1内の書き込み領域(n+1,1)に書き込まれる。このように、期待値と異なるLBAのデータ書き込みが指示される度に、新たなブロックが消費される。
次に、LBA11、12の書き込みは、これらのLBA値がLBA10からの期待値なので、ステップS1乃至S4(図9)と同様の処理が行われる。この結果、LBA11、12のデータは、それぞれ、書き込み領域(n+1,2)、(n+1,3)に書き込まれる。
図11は、図10に続く状態を示しており、図10の状態から、LBA2、3の書き込み要求が来た場合を示している。LBA2は、LBA12からの期待値ではなく、また、RAMcpに登録されていない。よって、図11に示されるように、LBA2がRAMcpに登録され、LBA10用のcpカウンタctcpが“0”にセットされる。次いで、LBA2のデータは、直前に書き込まれたLBA12のデータの存在するブロックと異なる新たなブロック、すなわち、例えばブロックアドレスn+2内の書き込み領域(n+2,1)に書き込まれる。次に、LBA3は、LBA2からの期待値なので、LBA2のデータの書き込み領域の次の書き込み領域(n+2,2)に書き込まれる。
図12は、図11に続く状態を示しており、図11の状態からLBA13、14、15の書き込み要求が来た場合を示している。LBA13は、LBA3からの期待値ではなく、また、RAMcpに登録されていない。よって、図12に示されるように、LBA13がRAMcpに登録され、LBA13用のcpカウンタctcpが“0”にセットされる。
次いで、LBA13のデータは、直前に書き込まれたLBA3のデータの存在するブロックと異なる新たなブロック、すなわち、例えばブロックアドレスn+3内の書き込み領域(n+3,1)に書き込まれる。次に、LBA14、15は、LBA13からの期待値なので、LBA13のデータの書き込み領域の次の書き込み領域(n+3,2)、(n+3,3)に順次書き込まれる。
LBA2、3のデータは、2つのブロックに分かれて書き込まれている。このため、 LBA13、14、15の書き込みの際に、これらを1つのブロックにまとめる処理が行われる。すなわち、LBA2、3の旧データが書き込まれているブロック(以下、旧アサインブロックと称する)のデータを、LBA2、3の最新データが書き込まれたブロック(以下、新アサインブロックと称する)に引っ越す処理が行われる。
図13は、図12に続く状態を示している。この例の場合、LBA2、3と同じグループに属する他のデータが無いので、データを1つのブロックにまとめる必要は無く、単にブロックnが消去されるのみである。この後、ブロックnは、何等かのLBAのデータが書き込まれた際に、クリーンなブロック(消去済みのブロック)として機能する。このように、期待値と異なるLBAのデータが書き込まれる度に、新アサインブロックが作成され、書き込まれるLBAのデータを除くデータが旧アサインブロックから新アサインブロックにコピーされ、旧アサインブロックが消去される。
なお、RAMcpに空きが無い場合、登録されている最も古いLBA(インデックス0に格納されているLBA)が削除される。
図14は、RAMcpには空きが無い状態で、直前に書き込まれたデータのLBA31と非連続のLBA34、35、36が書き込まれる場合を示している。この場合、図15に示されるように、インデックス0内のLBA10が削除される。次に、インデックス1乃至7のLBAが、それぞれ、1つ前のインデックスへと移動される。この結果、空いたインデックス7にLBA34が登録される。そして、LBA34、35、36のデータが、空いているブロック内に順次書き込まれる。しかしながら、望ましくは、RAMcpに常に空きがあるように、期待値から外れると予想されるLBAの個数等を考慮して、RAMcpの大きさを設定することが必要である。
[2−4]書き込みLBAがcpに登録されている場合の動作
次に、図8のステップS5の判定が真であった場合、コントローラ4は、書き込みLBA用のcpカウンタctcpの値を増加させる(ステップS9)。次に、コントローラ4は、増加させたcpカウンタctcpの値が設定値に達したか否かを判定する(ステップS10)。達していない場合、処理はステップS7に移行し、次いで、必要に応じてステップS8が行われる。
一方、ステップ10の判定の結果、書き込みLBA用のcpカウンタctcpが設定値に達したということは、書き込みLBAが、LBAの連続性を頻繁に妨げるものであることを意味する。すなわち、典型的には、このLBAのデータが管理用データ(例えばFAT、DIR)である可能性が高い。よって、このLBAのデータが次回以降に書き込まれる際は、キャッシュブロックに書き込まれるべきことを示すために、このLBAがRAMepに登録される(ステップS11)。同時に、このLBAは、RAMcpから削除される。
次に、書き込みLBAのデータが通常ブロックに書き込まれる(ステップS7)。次に、必要に応じて、ステップS8が行われる。
次に、ここまでの動作を具体例(図16乃至図18)に沿って説明する。以下の具体例では、LBAをRAMepに入れる契機となるRAMcpの設定値は、2とされている。図16に示されるように、RAMcpに登録されているLBA2用のcpカウンタctcpの値が1であったとする。
図16に示す状態で、期待値でないLBA2のデータの書き込み要求が来たとする。すると、図17に示されるように、LBA2のcpカウンタctcpの値が増加した結果、設定値に達する。次に、LBA2は、RAMepに登録され、RAMcpから削除される。そして、LBA2のデータがブロックnに書き込まれる。
また、LBA2がRAMepに登録されると、LBA2用のepカウンタctepが初期値に設定される。この初期値は、例えば2とされている。後述のように、キャッシュブロックの整理の結果、あるLBAのデータが新たなキャッシュブロックへと引っ越す度に、このカウンタの値が減ぜられる。また、RAMepに登録されているLBAのデータが書き込まれる度に、このカウンタの値は設定値に再設定される。
次に、図18に示されるように、同じグループに属し、新、旧アサインブロックに分かれて書き込まれているLBA10乃至LBA15のデータが整理される。
[2−5]書き込みLBAがepに登録されている場合の動作
図8のステップS1での判定の結果、書き込みLBAがRAMepに登録されている場合、処理はステップS21に移行する。このことは、書き込みLBAのデータは、キャッシュブロックに書き込まれるべきことを意味する。そして、このタイミングで、必要に応じてキャッシュブロックの整理が行われる。よって、コントローラ4は、キャッシュブロックの整理の要、不要を判断する(ステップS21)。この判断は、例えば、既に一杯のキャッシュブロックが存在する場合等に、整理を行うと判断することができる。
[2−5−1]キャッシュブロックの整理が行われない場合の動作
図8のステップS21の判定の結果、キャッシュブロックの整理が行われない場合、今回の書き込みLBAの書き込みを利用して、必要に応じてキャッシュアウトブロックの整理が行われる。ここで、キャッシュアウトブロックとは、後述の所定の条件を満たすことによりキャッシュブロックから追い出されたLBAのデータを格納するブロックである。キャッシュアウトブロックに関しては、後に詳述する。
まず、コントローラ4は、キャッシュアウトブロックの有無を判定する(ステップS22)。キャッシュアウトブロックが存在しない場合、書き込みLBAが、キャッシュブロック内の、直前に書き込まれた書き込み領域の次の書き込み領域に書き込まれる(ステップS23)。
一方、ステップS22での判定の結果、キャッシュアウトブロックが存在する場合、キャッシュアウトブロックの整理が行われる。すなわち、キャッシュアウトブロックを新アサインブロックとして、このキャッシュアウトブロック内のLBAと同じグループのLBAのデータが、旧アサインブロックからコピーされる(ステップS24)。そして、旧アサインブロックが消去される。
この後、処理は、ステップS23に移行し、書き込みLBAのデータが書き込まれる。
なお、ステップS23とステップS24は同時に行われてもよい。
次に、具体例(図19乃至図22)に沿って説明する。図19は、キャッシュブロックの整理が不要であって、RAMepに登録されているLBA2のデータの書き込み要求が来ている場合を示している。この場合、図20に示されるように、LBA2はRAMepに登録されているので、LBA2のデータは、通常ブロックではなく、キャッシュブロックcに書き込まれる。
図21は、図20の後、LBA16乃至18、LBA3の書き込み要求が来た場合を示している。図21に示されるように、LBA16乃至18のデータがブロックn+1に書き込まれた後、LBA3はRAMepに登録されているので、LBA3のデータはキャッシュブロックcに追記される。この後、LBAの番号によらずに、キャッシュブロックに書き込まれるデータは、直前にデータが書き込まれたキャッシュブロック内の書き込み領域の次の書き込み領域に次々と書き込まれる。
図22は、キャッシュブロックの整理が不要であって、キャッシュアウトされたLBA6のデータを格納するキャッシュアウトブロックn+4が存在する場合を示している。そして、LBA6と同じグループに属するLBA10乃至15のデータがブロック(旧アサインブロックに対応)n+3に書き込まれている。
このため、図23に示されるように、LBA10乃至15のデータが、新アサインブロックn+4の書き込み領域(n+4,5)乃至(n+4,10)にコピーされ、次いで、旧アサインブロックn+3が消去される。
[2−5−2]キャッシュブロックの整理が行われる場合の動作
図8のステップS21の判定の結果、キャッシュブロックの整理が行われる場合、今回の書き込みLBAの書き込みを利用して、キャッシュブロックの整理が行われる。すなわち、キャッシュブロック内の、各LBAの最新のデータが、最後にデータが書き込まれたキャッシュブロック(新アサインキャッシュブロック)にコピーされる。また、同時に、引越しされるLBAのepカウンタctepが減ぜられる(ステップS25)。よって、キャッシュブロックに書き込まれた後、さらに書き込まれることなく新アサインキャッシュブロックにコピーされ続けるデータのLBA用のepカウンタctepの値は、その度に減少し続ける。
次に、コントローラ4は、epカウンタctepの値が減少した結果、0となったLBAの有無を判定する(ステップS26)。コントローラ4は、epカウンタctepの値が0となったLBAのデータを、新アサインキャッシュブロックに書き込まずに、キャッシュアウト対象の候補として保留する。すなわち、このLBAのデータは、キャッシュブロックから、新たな通常ブロック(キャッシュアウトブロック)へコピーされる候補とされる。
次に、キャッシュアウトの動作を具体例(図24、図25)に沿って説明する。図24に示されるように、キャッシュブロックcには空いている書き込み領域は無い。そして、この状態で、LBA3のデータの書き込み要求が来たとする。すると、キャッシュブロックcには書き込めないので、キャッシュブロックの整理が必要である。
次に、図25に示されるように、書き込み要求のあったLBA3以外のLBA(ここでは、LBA2のみ)の最新のデータ(ここでは、書き込み領域(c,15)のデータ)が、旧アサインキャッシュブロックcからキャッシュブロックc+1にコピーされる。ここで、新アサインキャッシュブロックc+1にコピーされるLBA3のepカウンタctepの値が減少するが、0にはならない。このため、LBA3のデータは、キャッシュアウトの対象とはならない。
次に、旧アサインキャッシュブロックcが消去される。次いで、LBA3が新アサインキャッシュブロックc+1に書き込まれる。
[2−5−2−1]キャッシュアウトブロックが存在しない場合の動作
ここで、コントローラ4は、既にキャッシュアウトされた他のLBAのデータを格納するキャッシュアウトブロックの有無を判定する(ステップS27)。キャッシュアウトブロックが設けられていない場合、コントローラ4は、新たにキャッシュアウトブロックを用意し、その中に、キャッシュアウト対象のLBAのデータを書き込む(ステップS28)。
また、ステップS28の処理の後、旧データで占められているキャッシュブロック(旧アサインキャッシュブロック)が消去される。この後、書き込みLBAのデータが、新アサインキャッシュブロックに書き込まれる(ステップS23)。書き込みLBAのデータの書き込みとともに、書き込みLBAのepカウンタctepの値は、初期値に設定される。なお、ステップS28とステップS23は、同時に行われてもよい。
次に、ここまでの動作を具体例(図26、図27)に沿って説明する。図26に示されるように、キャッシュブロックcには空いている書き込み領域は無い。そして、この状態で、LBA3のデータの書き込み要求が来たとする。このため、キャッシュブロックcの整理が必要である。ここで、LBA6のepカウンタctepの値は1である。
この場合、まず、図27に示されるように、LBA2、3の最新のデータが、旧アサインキャッシュブロックcから新アサインキャッシュブロックc+1にコピーされる。ここで、LBA6をキャッシュブロックc+1にコピーしようとすると、LBA6のepカウンタctepの値は0となる。このため、LBA6のデータは、キャッシュアウトの対象の候補とされる。
そして、キャッシュアウトブロックが存在していないため、ブロックn+1をキャッシュアウトブロックとして、LBA6のデータがブロックn+1に書き込まれる。次に、キャッシュブロックcが消去される。LBA6はRAMepから削除され、LBA2、LBA3のepカウンタctepの値は減ぜられる。
[2−5−2−2]キャッシュアウトブロックが存在する場合の動作
ステップS27の判断の結果、キャッシュアウトブロックが既に存在している場合、キャッシュアウト対象の候補のLBAのデータは、キャッシュアウトされずに、新アサインキャッシュブロックへとコピーされる(ステップS29)。これは、メモリ領域の大きさの制限から、キャッシュアウトブロックの存在を1つと設定しているからである。
メモリ領域の容量が許せば、既にキャッシュアウトブロックが存在していても、さらなるキャッシュアウトブロックを用意し、ここにキャッシュアウト対象の候補のLBAのデータを書き込むことも可能である。次に、処理は、ステップS23に移行する。なお、ステップS29とステップS23は、同時に行われてもよい。
次に、ここまでの動作を具体例(図28乃至図32)に沿って説明する。図28は、図26と異なり、LBA6をキャッシュアウトしようとした際に、キャッシュアウトブロック(ブロックn+4)が既に存在している場合を示している。この場合、図29に示されるように、LBA6のデータは、キャッシュアウトされずに、新アサインキャッシュブロックc+1に書き込まれる。次に、旧アサインキャッシュブロックcが消去される。LBA6は、次回のキャッシュブロックの整理の際に、キャッシュアウトされる。
上記説明では、キャッシュブロックに書き込まれた後、さらなる書き込み要求の無いLBAのデータを、epカウンタctepを用いて選別し、通常ブロックに書き込む手法が取られている。これに対して、単に、RAMepへのLBAの登録を、ファーストイン・ファーストアウトで行うこともできる。これについて、図30乃至図32を用いて説明する。
図30に示されるように、RAMepには空き領域が無く、また、cpカウンタctcpのLBA0を示す値は1である。この状態で、RAMepに未登録のLBA0のデータの書き込み要求があったとする。
この場合、図31に示されるように、最も先に登録されているLBA2が、RAMepから外される。そして、LBA2のデータが、直前に書き込まれたLBA12からの期待値ではないので、消去済みのブロックnに書き込まれる。そして、RAMepの各インデックスの値が、1つ少ないインデックスへと順次移動され、RAMepのインデックス7にLBA0が登録される。また、LBA0は、RAMcpから削除される。
次に、図32に示されるように、LBA10乃至LBA12のデータが、旧アサインブロックn+1から、新アサインブロックnにコピーされ、旧アサインブロックn+1が消去される。そして、書き込みLBA0のデータが、ブロックn+2に書き込まれる。
本発明の一実施形態に係るメモリカードによれば、直前に書き込まれたデータのLBAからの期待値でないLBAのデータの書き込み要求があった場合、このLBAが記憶されるとともに、期待値でないLBAのデータの書き込み要求があった回数が計数される。そして、期待されないタイミングでの書き込み要求が所定数に達するLBAのデータは、追記専用のキャッシュブロックに書き込まれる。このため、引越し処理の頻発を引き起こすデータを、その中身を解析することなく容易に選別することができる。よって、引越し処理の回数の低下により、高い書き込み速度を実現可能なメモリカードを得られる。
その他、本発明の思想の範疇において、当業者であれば、各種の変更例および修正例に想到し得るものであり、それら変更例および修正例についても本発明の範囲に属するものと了解される。
本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。 ホスト20とメモリカードとを含む構成を示すブロック図。 ホスト20が想定しているフラッシュメモリと実際に使用するフラッシュメモリとのデータ配置の違いを示す図。 ホスト20およびメモリカードの各コミュニケーション階層を示す図。 ホスト20が発行するコマンドのフォーマットを示す図。 ホスト20が想定しているブロック書き込み操作と、メモリカードが実際に行う書き込み処理と、を対比して示す図。 本実施形態に係るメモリカードのフラッシュメモリのメモリ空間の一部、RAMの一部、カウンタを示す図。 本実施形態に係るメモリカードの書き込み動作を示すフローチャート。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。 フラッシュメモリの各部の1つの状態を示す図。
符号の説明
1…メモリカード、2…基板、3…NAND型フラッシュメモリ、4…コントローラ、
5…インタフェース部、6…ホストインタフェース、7…バッファ、8…CPU、9…ROM、10…RAM、20…ホスト機器、cp、ep…RAMの領域、ctep…cpカウンタ、ctep…epカウンタ。

Claims (5)

  1. データを記憶可能な複数の第ブロックおよび複数の第2ブロックを有し、第1および第2ブロックのそれぞれを消去単位としてデータを消去可能な第1メモリと、
    ホスト機器によって付されたアドレスを有する書き込みデータを前記第1メモリに書き込む指示を出す演算部と、
    前回に書き込まれたデータのアドレスと連続するアドレスを期待値とし、書き込み要求の際に前記期待値でない前記アドレスを記憶する第2メモリと、
    前記期待値でない前記アドレスの前記書き込みデータの書き込み要求があった回数を、前記アドレスごとに数える第1カウンタと、
    前記第1カウンタにおける値が第1設定値に達した前記アドレスを記憶する第3メモリと、
    を具備し、前記演算部は、前記第3メモリが記憶する前記アドレスの前記書き込みデータの書き込み要求が来た際、このアドレスに関わらず、前記第2ブロックのデータの書き込まれていない個所に前記書き込みデータを書き込む指示を出すことを特徴とするメモリカード。
  2. 前記メモリカードが、前記書き込みデータが前記第2ブロックに書き込まれる度にこの書き込みデータの前記アドレスに関する値を初期値に設定する第2カウンタをさらに具備することを特徴とする請求項1に記載のメモリカード。
  3. 前記演算部が、前記第2ブロックが記憶している前記書き込みデータのうちで前記アドレスごとの最新の前記書き込みデータを複数の前記第2ブロックのうちのデータを記憶していない1つである新第2ブロックにコピーする指示を出し、
    前記第2カウンタが、前記新第2ブロックにコピーされた前記書き込みデータの前記アドレスに関する値を変化させる、
    ことを特徴とする請求項2に記載のメモリカード。
  4. 前記演算部が、前記第2カウンタにおける値が第2設定値に達した前記アドレスの前記書き込みデータを前記第1ブロックの1つにコピーし、
    記第2設定値に達した前記アドレスの前記書き込みデータがコピーされた後、コピーされた前記書き込みデータの前記アドレスが前記第3メモリから削除される
    ことを特徴とする請求項3に記載のメモリカード。
  5. 所定数の連続するアドレスが、1つのグループを形成し、
    前記演算部が、同じグループに属する複数の前記アドレスのデータが前記第1ブロックの2つに書き込まれている場合に、前記第1ブロック2つのうちの一方である旧第1ブロックに書き込まれているデータを前記第1ブロック2つのうちの他方である新第1ブロックに書き込む指示を出し、且つ前記旧第1ブロックのデータを削除する指示を出す、
    ことを特徴とする請求項1に記載のメモリカード。
JP2005089896A 2005-03-25 2005-03-25 メモリカード Expired - Fee Related JP4738038B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005089896A JP4738038B2 (ja) 2005-03-25 2005-03-25 メモリカード
US11/205,125 US20060218347A1 (en) 2005-03-25 2005-08-17 Memory card
TW095106685A TW200702991A (en) 2005-03-25 2006-02-27 Memory card
KR1020060026848A KR100769402B1 (ko) 2005-03-25 2006-03-24 메모리 카드

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005089896A JP4738038B2 (ja) 2005-03-25 2005-03-25 メモリカード

Publications (2)

Publication Number Publication Date
JP2006268776A JP2006268776A (ja) 2006-10-05
JP4738038B2 true JP4738038B2 (ja) 2011-08-03

Family

ID=37036544

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005089896A Expired - Fee Related JP4738038B2 (ja) 2005-03-25 2005-03-25 メモリカード

Country Status (4)

Country Link
US (1) US20060218347A1 (ja)
JP (1) JP4738038B2 (ja)
KR (1) KR100769402B1 (ja)
TW (1) TW200702991A (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5002201B2 (ja) 2006-06-30 2012-08-15 株式会社東芝 メモリシステム
US8533847B2 (en) * 2007-05-24 2013-09-10 Sandisk Il Ltd. Apparatus and method for screening new data without impacting download speed
TWI413984B (zh) 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
US9015209B2 (en) * 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
US20100153474A1 (en) * 2008-12-16 2010-06-17 Sandisk Il Ltd. Discardable files
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US8375192B2 (en) 2008-12-16 2013-02-12 Sandisk Il Ltd. Discardable files
US8205060B2 (en) 2008-12-16 2012-06-19 Sandisk Il Ltd. Discardable files
US20100235329A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US20100333155A1 (en) * 2009-06-30 2010-12-30 Philip David Royall Selectively using local non-volatile storage in conjunction with transmission of content
US8656110B2 (en) 2009-08-21 2014-02-18 Panasonic Corporation Non-volatile storage device, access device, and non-volatile storage system for releasing a cache object in accordance with a data matching flag
US8549229B2 (en) 2010-08-19 2013-10-01 Sandisk Il Ltd. Systems and methods for managing an upload of files in a shared cache storage system
US8463802B2 (en) 2010-08-19 2013-06-11 Sandisk Il Ltd. Card-based management of discardable files
US8788849B2 (en) 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US9152641B2 (en) 2011-12-15 2015-10-06 Sandisk Technologies Inc. Method and system for providing storage device file location information
US8984032B2 (en) 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
JP2015138272A (ja) * 2014-01-20 2015-07-30 ソニー株式会社 情報処理装置、情報処理方法、および情報処理プログラム
KR102309471B1 (ko) 2014-12-19 2021-10-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10289561B2 (en) 2017-08-08 2019-05-14 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318824A (ja) * 2000-05-10 2001-11-16 Nec Miyagi Ltd フラッシュメモリのデータ管理方式およびそのプログラムを記録した記録媒体

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4701884A (en) * 1985-08-16 1987-10-20 Hitachi, Ltd. Semiconductor memory for serial data access
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6421766B1 (en) * 1998-12-16 2002-07-16 Intel Corporation Method and apparatus for approximated least-recently-used algorithm memory replacement
US6748491B2 (en) * 2001-04-19 2004-06-08 International Business Machines Corporation Designing a cache using an LRU-LFU array
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
KR20190000930U (ko) * 2017-10-12 2019-04-22 두리기농업회사법인 주식회사 차덖음장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318824A (ja) * 2000-05-10 2001-11-16 Nec Miyagi Ltd フラッシュメモリのデータ管理方式およびそのプログラムを記録した記録媒体

Also Published As

Publication number Publication date
JP2006268776A (ja) 2006-10-05
TW200702991A (en) 2007-01-16
US20060218347A1 (en) 2006-09-28
KR20060103219A (ko) 2006-09-28
KR100769402B1 (ko) 2007-10-22

Similar Documents

Publication Publication Date Title
JP4738038B2 (ja) メモリカード
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US10657047B2 (en) Data storage device and method of performing partial garbage collection
CN109240938B (zh) 存储***以及控制非易失性存储器的控制方法
US11416387B2 (en) Memory system and method for controlling nonvolatile memory
KR100389867B1 (ko) 플래시 메모리 관리방법
CN101937319B (zh) 存储器***及其映射方法
US10275361B2 (en) Managing multiple namespaces in a non-volatile memory (NVM)
US8386746B2 (en) Storage unit management methods and systems
US11797436B2 (en) Memory system and method for controlling nonvolatile memory
JP2011519095A (ja) マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
EP3752905B1 (en) Append only streams for storing data on a solid state device
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
US20220066693A1 (en) System and method of writing to nonvolatile memory using write buffers
US8954658B1 (en) Method of LUN management in a solid state disk array
US20100318726A1 (en) Memory system and memory system managing method
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱
JP4242245B2 (ja) フラッシュrom制御装置
CN112100087B (zh) 数据储存装置以及非挥发式存储器控制方法
JP2007102314A (ja) ディスクキャッシュ制御装置
JP2007233838A (ja) メモリシステムの制御方法
JP2005115562A (ja) フラッシュrom制御装置
CN114610228A (zh) 文件管理***及其文件管理方法、装置
JPS5918786B2 (ja) 階層構成メモリ・システム
US10810132B1 (en) Object based extent mapping for flash memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110426

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees