JP2006079434A - 記憶装置、メモリ管理方法及びプログラム - Google Patents

記憶装置、メモリ管理方法及びプログラム Download PDF

Info

Publication number
JP2006079434A
JP2006079434A JP2004263995A JP2004263995A JP2006079434A JP 2006079434 A JP2006079434 A JP 2006079434A JP 2004263995 A JP2004263995 A JP 2004263995A JP 2004263995 A JP2004263995 A JP 2004263995A JP 2006079434 A JP2006079434 A JP 2006079434A
Authority
JP
Japan
Prior art keywords
group
address
block
data
logical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004263995A
Other languages
English (en)
Other versions
JP3942612B2 (ja
Inventor
Shuichi Kikuchi
修一 菊地
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.)
Tokyo Electron Device Ltd
Original Assignee
Tokyo Electron Device Ltd
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 Tokyo Electron Device Ltd filed Critical Tokyo Electron Device Ltd
Priority to JP2004263995A priority Critical patent/JP3942612B2/ja
Priority to PCT/JP2005/017001 priority patent/WO2006028283A1/en
Priority to EP05783698A priority patent/EP1787202A4/en
Priority to US11/547,181 priority patent/US20070245069A1/en
Priority to KR1020067020537A priority patent/KR100847506B1/ko
Publication of JP2006079434A publication Critical patent/JP2006079434A/ja
Application granted granted Critical
Publication of JP3942612B2 publication Critical patent/JP3942612B2/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card

Abstract

【課題】 劣化が起きにくく、あるいは記憶領域へのアクセスが円滑に行える記憶装置等を提供することである。
【解決手段】 フラッシュメモリ11の記憶領域には、消去の単位であるブロックより小さな単位であるグループ毎に物理グループアドレスが与えられ、グループは複数のページを含み、ページは複数のカラムを含む。CPU121は、書き込む対象のデータと書込先の論理アドレスとを供給されると、書込ポインタが示すグループ内のカラムにこのデータを書き込み、供給された論理アドレスを、このカラムに与える。このカラムがあるグループの物理グループアドレス及び論理グループアドレスの対応関係は論理物理変換テーブルの形でRAM123に記憶される。ブロックのフラッシュイレースは、空きグループのないブロックの数が所定数以下になったとき行う。
【選択図】 図1

Description

本発明は、記憶装置、メモリ管理方法及びプログラムに関し、特に、ブロック消去型の記憶装置、ブロック消去型の記憶装置の記憶領域を管理するメモリ管理方法及びプログラムに関する。
コンピュータ等によりアクセス(データの読み書き及び消去)可能な記録媒体として、EEPROM(Electrically Erasable/Programmable Read Only Memory)フラッシュメモリが用いられている。
フラッシュメモリは、データの消去が、所定の記憶容量の単位(一般に「ブロック」と呼ばれる)で行われる。
フラッシュメモリのうち、特にNAND型のものは、データの記憶が正常に行えない不良ブロックの発生を製造段階で十分に防止することが困難である。このため、従来より、各ブロックに割り当てられる物理アドレスとは別個の連続した論理アドレスを正常なブロックに動的に割り当て、論理アドレスとの対応関係を表すアドレス変換テーブルを作成して、アドレスが不連続となることによる外部からのアクセス手順の複雑化を回避している(例えば、特許文献1参照)。
国際公開第99/30239号パンフレット
物理アドレスの割り当てはブロック単位で行われ、論理アドレスからページを特定する場合は、論理アドレスに対応付けられた物理アドレスに加え、ブロック内でのページの順位を示すページアドレスを併用して、ページを特定している。(なお、同一ブロック内では先頭のセクタから順にデータを格納していくものとすれば、連続して供給されるデータ(例えば、1個のファイルを構成するデータ)は、同一ブロック内の連続したページに格納される。)従って、データを書き換える際には、書き換える対象のデータが格納されるページの、ブロック内での順位がそのまま保たれるように配慮する必要がある。
具体的には、書き換える対象のデータを格納する転記元のブロックから、書き換えの対象でないデータを、転記先の空きブロックへと、データの順序が保たれるようにして転記する。つまり、nをページの順位として、転記元のブロックのn番目のページにあったデータは転記先のn番目のページに転記する。また、書き換えの対象であるデータは、書き換え後のデータが書き換え前のデータの順序を保つようにして書き換える。つまり、mをページの順位として、転記元のブロックのm番目のページにあったデータを書き換えたデータを、転記先のm番目のページに転記する。そして、転記元のブロックをフラッシュイレースする(すなわち、記憶内容を消去する)、という操作を行う。
しかし、このような操作を行うと、データ量が1ブロック分の記憶容量に比べて非常に小さなファイルを書き換える場合には、このファイルと無関係なデータを格納するページや、データを格納していない空きページを含んだブロックがフラッシュイレースされる。
NAND型のフラッシュメモリは、大容量の構成を安価に実現できる一方、フラッシュイレースを繰り返すことにより劣化し、データの読み書きが正常にできなくなる、という特徴がある。このため、上述の操作を行うと、少量のデータの書き換えのために効率の悪いフラッシュイレースが頻繁に行われることになり、フラッシュメモリの劣化が早まる。
特に、OS(Operating System)が、ハードディスク装置やフレキシブルディスクの記憶内容を管理するのと同様の手法でフラッシュメモリの記憶内容を管理する場合には、OSが管理する各データとこれらデータが記憶されている論理アドレスとの対応関係を示すFAT(File Allocation Table)等がフラッシュメモリに書き込まれ、頻繁に更新される。FATのデータ量は、通常、1ブロック分の記憶容量に比べて非常に小さいので、FATの書き換えに伴って、効率の悪いフラッシュイレースが頻繁に行われる。
更に近年は、1ブロック当たりの記憶容量が極めて大きいフラッシュメモリ(例えば、1ブロックが64ページより構成され、1ページが約2キロバイトの記憶容量を有しているもの)が製造されるようになっている。このようなフラッシュメモリの記憶内容を上述した従来の手法により管理する場合、少量のデータの書き換えに伴って膨大な記憶領域のフラッシュイレースが行われることになり、フラッシュイレースの効率が極めて悪い。
また、ファイルの書き換えに伴ってフラッシュイレースが行われる場合、このファイルと無関係なデータであって未だ記憶しておく必要があるデータは、このフラッシュイレースの巻き添えとならないように他のブロックに退避させる必要がある。このため一般的には、フラッシュイレースの効率が悪いほど、データの退避に要する処理も多くなり、フラッシュメモリへの円滑なアクセスが妨げられる。
特に、1ブロック当たりの記憶容量が極めて大きいフラッシュメモリのフラッシュイレースにおいては、フラッシュイレース1回当たりに退避させるべきデータの量が膨大となり、この結果、フラッシュメモリへの円滑なアクセスは非常に難しくなる。
この発明は上記実状に鑑みてなされたもので、劣化が起きにくい記憶装置や、記憶装置の劣化を起こしにくいメモリ管理方法を提供することを目的とする。
また、この発明は、記憶領域へのアクセスが円滑に行える記憶装置及びメモリ管理方法を提供することも目的とする。
上記目的を達成するため、本発明の第1の観点に係る記憶装置は、
ユーザデータを記憶するための記憶領域を形成する複数のメモリブロックを含み、各々のメモリブロックが複数のグループより構成されており、各々のグループが複数のページより構成されている記憶手段と、
前記グループの前記記憶領域内での物理的位置を指定する物理グループアドレスと当該グループの論理グループアドレスとの対応付けを表す論理物理変換テーブルを記憶する論理物理変換テーブル記憶手段と、
前記グループのうちからユーザデータを記憶可能な状態にある空きグループを特定して、特定した空きグループの物理グループアドレスを指示する書込ポインタを記憶する書込対象グループポイント手段と、
新たなユーザデータを書き込むグループの論理グループアドレス、当該グループに属するページ内において当該ユーザデータを書き込む記憶位置を指定するグループ内アドレス、及び、当該ユーザデータが自己に供給されたとき、当該ユーザデータを、前記書込ポインタにより指示された空きグループに属するページ内において当該グループ内アドレスが指定している記憶位置に書き込み、当該空きグループの物理グループアドレスと、供給された当該論理グループアドレスとの対応付けを表すよう前記論理物理変換テーブルを更新する書込手段と、を備える、
ことを特徴とする。
このような記憶装置によれば、ユーザデータの書き込みはブロックより小さな単位で行われるので、ユーザデータを書き込む毎に新たな空きブロック(ユーザデータを記憶していないブロック)を探索して書き込むという操作が不要になり、ユーザデータの書き換え時にブロックに対して効率の悪いデータ消去(フラッシュイレース等)を行わずに済む。また、データの書き換えに伴って変更のない部分を転記する処理も、ブロックより小さな単位で行われる。従って、記憶装置の劣化が起きにくく、また記憶装置へのアクセスが円滑になる。
また、このような記憶装置では、論理アドレスと物理アドレスとの対応関係の管理は、ブロックより小さく、ページないしカラムより大きな単位で行われる。このため、論理アドレスと物理アドレスとの対応関係を示すデータを格納するテーブルの記憶容量が、論理アドレスと物理アドレスの対応関係の管理をページないしカラム単位で行う場合に比べて小さくなり、一方で、論理アドレスと物理アドレスの対応関係の管理が、ブロック単位で行う場合に比べきめ細かく行われる。
前記書込手段は、例えば、
前記新たなユーザデータを書き込む記憶位置が属するグループの論理グループアドレス及び当該記憶位置のグループ内アドレスにより従前特定されていた他の記憶位置に記憶されているユーザデータを無効とする旨を指定するユーザデータ無効化手段と、
無効なユーザデータを記憶しているメモリブロックのうちからデータを消去する対象のメモリブロックを指定する消去対象指定手段と、
前記消去対象指定手段により指定されたメモリブロックに格納されているユーザデータが有効か否かを判別し、有効と判別したユーザデータを他のメモリブロックに転記し、当該指定されたメモリブロックが記憶するデータを消去する消去手段と、を備えることにより、古いデータの消去を伴うユーザデータの書き込みを行えばよい。
前記記憶装置は、各々のメモリブロックに空きグループが含まれているか否かを識別する情報を含むブロックステートテーブルを記憶するメモリを更に備えていてもよく、
この場合、前記書込手段は、
自己に供給されたユーザデータを空きグループに書き込む結果、当該グループを含むメモリブロックから空きグループが無くなったとき、当該メモリブロックが空きグループを含んでいない旨を示すように前記ブロックステートテーブルを更新する手段と、
記憶するデータを前記消去手段により消去されたメモリブロックが空きグループを含む旨を示すように前記ブロックステートテーブルを更新する手段と、を備え、
前記消去対象指定手段は、空きグループを含まない旨が前記ブロックステートテーブルにより示されているメモリブロックのうちからデータを消去する対象のメモリブロックを指定するものであってもよい。
前記書込手段は、空きグループを含むメモリブロックの数が所定条件に満たない数になったか否かを前記ブロックステートテーブルに基づいて判別する空きブロック数判別手段を備え、
前記消去対象指定手段は、空きグループを含むメモリブロックの数が所定条件に満たない数になったと判別されたとき、無効なユーザデータを記憶しているメモリブロックのうちからデータを消去する対象のメモリブロックを指定するものであってもよい。
このような構成を有していれば、ユーザデータが格納されていないグループの数が十分にあるうちはメモリブロックのデータ消去が行われないので、無用のデータ消去が避けられる。このため、ブロック1個当たりの記憶容量が大きい場合であっても記憶装置の劣化が更に起きにくく、またデータの退避に要する処理も少なくなるので記憶装置へのアクセスが更に円滑になる。
物理グループアドレスはサイクリックに順位付けされていて、当該物理グループアドレスが示すグループが属するブロックを示すブロックアドレスを含んでいてもよく、
前記消去対象指定手段は、無効なユーザデータを記憶しているメモリブロックのうち、最後にデータを消去されたブロック以降で先頭のブロックアドレスを与えられているものを、データを消去する対象のメモリブロックとして指定するものであってもよい。
このような構成を有していれば、各ブロックは、書き込まれているデータが古い順にデータ消去の対象となっていくから、各ブロックがデータ消去される頻度が均等になる。従って、特定のメモリブロックが集中的に劣化することにより記憶装置全体の寿命が短くなる、ということが防止される。
前記ブロックステートテーブルは、各々のメモリブロックに無効なユーザデータが記憶されているか否かを識別する情報を更に含んでいてもよく、
この場合、前記ユーザデータ無効化手段が、前記新たなユーザデータを書き込む記憶位置が属するグループの論理グループアドレス及び当該記憶位置のグループ内アドレスにより従前特定されていた他の記憶位置を含むメモリブロックに無効なユーザデータが記憶されている旨を示すように前記ブロックステートテーブルを更新する手段を備え、前記消去対象指定手段は、無効なユーザデータを記憶している旨が前記ブロックステートテーブルにより示されているメモリブロックのうちからデータを消去する対象のメモリブロックを指定するようにしてもよい。
物理グループアドレスはサイクリックに順位付けされていてもよく、
前記書込対象グループポイント手段は、ユーザデータが書き込まれた結果すべてのページにユーザデータが格納されるに至ったグループの物理グループアドレス以降の物理グループアドレスを与えられている空きグループのうちの先頭の空きグループを特定するものであってもよい。
このような構成を有していれば、データを書き込むグループは物理グループアドレス順に指定されるので、特定のメモリブロックに書き込みが集中することが避けられ、従って、書き込みが集中したメモリブロックにデータ消去の機会が集中することが避けられる。従って、記憶装置の劣化が更に防止される。
前記記憶装置は、例えば、読み出し対象のデータが格納されているグループの論理グループアドレス、及び、当該グループに属するページ内において当該読み出し対象のデータが格納されている記憶位置を指定するグループ内アドレスが自己に供給されたとき、前記アドレス変換テーブルに基づいて、当該論理グループアドレスに対応付けられた物理グループアドレスを特定し、特定した物理グループアドレスが示すグループに属するページ内において当該グループ内アドレスが指定している記憶位置よりユーザデータを読み出して外部に出力する読出手段を備えるものであってもよい。
前記ページは1個以上のカラムを含んでいてもよく、
カラムの記憶位置のグループ内アドレスは、当該カラムを含むページのグループ内での論理的位置を指定するグループ内ページアドレスと、当該ページ内での当該カラムの論理的位置を指定するカラムアドレスと、より構成されていてもよい。
また、本発明の第2の観点に係るメモリ管理方法は、
ユーザデータを記憶するための複数のメモリブロックを含み、各々のメモリブロックが複数のグループより構成されており、各々のグループが複数のページより構成されている記憶領域を管理するためのメモリ管理方法であって、
前記グループの前記記憶領域内での物理的位置を指定する物理グループアドレスと当該グループの論理グループアドレスとの対応付けを表す論理物理変換テーブルを記憶する論理物理変換テーブル記憶ステップと、
前記グループのうちからユーザデータを記憶可能な状態にある空きグループを特定して、特定した空きグループの物理グループアドレスを指示する書込ポインタを記憶する書込対象グループポイントステップと、
新たなユーザデータを書き込むグループの論理グループアドレス、当該グループに属するページ内において当該ユーザデータを書き込む記憶位置を指定するグループ内アドレス、及び、当該ユーザデータが自己に供給されたとき、当該ユーザデータを、前記書込ポインタにより指示された空きグループに属するページ内において当該グループ内アドレスが指定している記憶位置に書き込み、当該空きグループの物理グループアドレスと、供給された当該論理グループアドレスとの対応付けを表すよう前記論理物理変換テーブルを更新する書込ステップと、より構成される、
ことを特徴とする。
このようなメモリ管理方法によれば、ユーザデータの書き込みはブロックより小さな単位で行われるので、ユーザデータを書き込む毎に新たな空きブロック(ユーザデータを記憶していないブロック)を探索して書き込むという操作が不要になり、ユーザデータの書き換え時にブロックに対して効率の悪いデータ消去(フラッシュイレース等)を行わずに済む。また、データの書き換えに伴って変更のない部分を転記する処理も、ブロックより小さな単位で行われる。従って、記憶装置の劣化が起きにくく、また記憶装置へのアクセスが円滑になる。
また、このようなメモリ管理方法では、論理アドレスと物理アドレスとの対応関係の管理は、ブロックより小さく、ページないしカラムより大きな単位で行われる。このため、論理アドレスと物理アドレスとの対応関係を示すデータを格納するテーブルの記憶容量が、論理アドレスと物理アドレスの対応関係の管理をページないしカラム単位で行う場合に比べて小さくなり、一方で、論理アドレスと物理アドレスの対応関係の管理が、ブロック単位で行う場合に比べきめ細かく行われる。
また、本発明の第3の観点に係るプログラムは、
ユーザデータを記憶するための記憶領域を形成する複数のメモリブロックを含み、各々のメモリブロックが複数のグループより構成されており、各々のグループが複数のページより構成されている記憶装置に接続されたコンピュータを、
前記グループの前記記憶領域内での物理的位置を指定する物理グループアドレスと当該グループの論理グループアドレスとの対応付けを表す論理物理変換テーブルを記憶する論理物理変換テーブル記憶手段と、
前記グループのうちからユーザデータを記憶可能な状態にある空きグループを特定して、特定した空きグループの物理グループアドレスを指示する書込ポインタを記憶する書込対象グループポイント手段と、
新たなユーザデータを書き込むグループの論理グループアドレス、当該グループに属するページ内において当該ユーザデータを書き込む記憶位置を指定するグループ内アドレス、及び、当該ユーザデータが自己に供給されたとき、当該ユーザデータを、前記書込ポインタにより指示された空きグループに属するページ内において当該グループ内アドレスが指定している記憶位置に書き込み、当該空きグループの物理グループアドレスと、供給された当該論理グループアドレスとの対応付けを表すよう前記論理物理変換テーブルを更新する書込手段と、
して機能させるためのものであることを特徴とする。
このようなプログラムを実行するコンピュータによれば、ユーザデータの書き込みはブロックより小さな単位で行われるので、ユーザデータを書き込む毎に新たな空きブロック(ユーザデータを記憶していないブロック)を探索して書き込むという操作が不要になり、ユーザデータの書き換え時にブロックに対して効率の悪いデータ消去(フラッシュイレース等)を行わずに済む。また、データの書き換えに伴って変更のない部分を転記する処理も、ブロックより小さな単位で行われる。従って、記憶装置の劣化が起きにくく、また記憶装置へのアクセスが円滑になる。
また、このようなプログラムを実行するコンピュータによれば、論理アドレスと物理アドレスとの対応関係の管理は、ブロックより小さく、ページないしカラムより大きな単位で行われる。このため、論理アドレスと物理アドレスとの対応関係を示すデータを格納するテーブルの記憶容量が、論理アドレスと物理アドレスの対応関係の管理をページないしカラム単位で行う場合に比べて小さくなり、一方で、論理アドレスと物理アドレスの対応関係の管理が、ブロック単位で行う場合に比べきめ細かく行われる。
この発明によれば、劣化が起きにくい記憶装置や、記憶装置の劣化を起こしにくいメモリ管理方法が実現される。
また、この発明によれば、記憶領域へのアクセスが円滑に行える記憶装置及びメモリ管理方法が実現される。
以下、この発明の実施の形態を、フラッシュメモリを備えた記憶システムを例とし、図面を参照して説明する。
図1は、この発明の実施の形態にかかる記憶システムの物理的構成を示すブロック図である。
図示するように、この記憶システムは、メモリユニット1と、コンピュータ2とから構成されている。メモリユニット1は、コンピュータ2が備える内部バスを介して、コンピュータ2に装着されている。なお、例えば図1に示すように、メモリユニット1及びコンピュータ2が同一の筐体に組み込まれていてもよい。
メモリユニット1は、フラッシュメモリ11及びコントローラ12からなる。
フラッシュメモリ11は、例えば、EEPROM(Electrically Erasable/Programmable Read Only Memory)等の記憶装置と、論理回路等からなるシーケンサとより構成されている。
フラッシュメモリ11は、コントローラ12が行うアクセスに応答し、コンピュータ2から供給されたデータの記憶(書き込み)と、記憶しているデータの読み出し及びコンピュータ2への供給と、記憶しているデータの消去とを行う。
また、フラッシュメモリ11は、データの書き込み、読み出し及び消去の動作それぞれについて、当該動作が行われている状態(ビジー状態)であるか否かを示す情報や、消去の動作が正常に行われたか否かを示すステータス情報などを生成してコントローラ12へと供給する機能を行う。
図2及び図3は、フラッシュメモリ11が有する記憶領域の構造の一例を示す図である。
フラッシュメモリ11が有する記憶領域は、例えば図2に示すように1024個のブロックより構成されており、データの消去は、ブロックを単位として行われる。各ブロックには、先頭から連続的に0から1023までの物理ブロックアドレスが与えられている。
各々のブロックは、図2及び図3に示すように、例えば8個のグループを含んでいる。図2に示す例では、フラッシュメモリ11の記憶領域全体は8192個のグループから構成される。
各グループには、フラッシュメモリ11の記憶領域先頭から連続的に0から8191までの物理グループアドレスが与えられている。従って、例えば図3に示すように、物理ブロックアドレスがn(nは0以上1023以下の整数)であるブロックには、物理グループアドレスが(8・n)以上{(8・n)+7}以下の8個のグループが含まれる。換言すれば、グループの物理グループアドレスを13ビットの2進数で表記した場合、この2進数の上位10ビットは、このグループが属するブロックの物理ブロックアドレスに相当する。
各々のグループは、図3に示すように例えば8個のページを含んでおり、各々のグループについて、当該グループ内の各ページには、当該グループ内の先頭のページから連続的に、0から7までのグループ内ページアドレスが付与されている。ページは、フラッシュメモリ11が後述する動作により読み書きされるときに、コントローラ12により、データ読み書きの単位として認識される単位である。
一方、フラッシュメモリ11のそれぞれのページに含まれるメモリセルは、記憶容量が各1バイトである計2112個の記憶領域を構成しており、これらの記憶領域には、連続的に0から2111までの番地が与えられている。
なお、ページのグループ内ページアドレスを下位3ビットとし、当該ページが属するグループの物理グループアドレスの下位3ビットを上位3ビットとする計6ビットのアドレスは、当該ページが属するブロック内で当該ページに付与されたブロック内ページアドレスとして機能する。
各々のページは、図3に示すように、528バイトの記憶領域を有するカラム4個より構成されており、それぞれのページに含まれるカラムには、連続的に0から3までのカラムアドレスが与えられている。(従って、図2に示す例では、フラッシュメモリ11の記憶容量は全体で132メガバイトである。)
それぞれのカラムは、図3に示すように、先頭から512バイトの領域を占めるデータ領域と、末尾16バイトを占める冗長部とから構成される。
データ領域には、ユーザデータ(コンピュータ2から供給され書き込まれるデータや、コンピュータ2に供給される対象となるデータ)が格納される。
冗長部には、例えば、不良ブロックフラグや、旧グループフラグや、ECC(エラー訂正コード)が格納される。
不良ブロックフラグは、この冗長部を含むブロックがデータを正常に格納することができないブロック(不良ブロック)であることを示すフラグである。
旧グループフラグは、この冗長部を含むカラムが属するグループ内のデータ領域に格納されているユーザデータが無効なデータとして扱われるべき古いデータ(以下、旧データと呼ぶ)であることを示すフラグである。
ECCは、この冗長部と同じカラムに属するデータ領域に格納されているユーザデータの内容が破壊されていないことを確認するためのデータである。
各々のカラムのデータ領域は、フラッシュメモリ11が後述する動作により読み書きされる際、コンピュータ2においては、512バイトの記憶領域からなる単位であるセクタとして認識される。そして各々のセクタには、論理アドレスが割り当てられる。
セクタの論理アドレスは、例えば、当該セクタに相当するカラムが属するグループを示す上位の桁(論理グループアドレス)と、当該グループ内で当該カラムが属するページのグループ内ページアドレスに相当する中位の桁と、当該ページ内で当該カラムのカラムアドレスに相当する下位の桁と、からなっている。論理アドレスの総数は、フラッシュメモリ11が物理的に備えるカラムの総数より小さい所定量であればよい。
なお、カラムの記憶位置は、カラムのカラムアドレスと、当該カラムが属するページのグループ内ページアドレスと、及び当該カラムが属するグループの物理グループアドレスとを用いても特定される。以下では、カラムのカラムアドレス、当該カラムが属するページのグループ内ページアドレス、及び当該カラムが属するグループの物理グループアドレスの3個より構成される、当該カラムを指定するデータを、当該カラムの物理アドレスと呼ぶ。
フラッシュメモリ11は、メモリユニット1のコントローラ12より、特定のブロックのデータを消去するよう指示されると、当該ブロックに含まれるすべてのメモリセルの記憶内容をフラッシュイレースする(具体的には、例えばフラッシュメモリ11がNAND型のフラッシュメモリからなる場合は、各メモリセルの記憶値を“1”とする)。
また、フラッシュメモリ11のデータ領域には、ディレクトリと、FAT(File Allocation Table)とが格納され、後述する処理によって更新される。
図4は、フラッシュメモリ11にMS−DOS(登録商標)のファイルシステムを適用した場合における、ディレクトリ、FAT及び論理ブロックアドレスの相互の対応関係を例示する図である。
なお、ディレクトリ及びFATが格納されるカラムに相当するセクタには、所定の条件に合致する論理アドレスが付される。具体的には、例えば、論理アドレスとして先頭の4096個のアドレス(すなわち、00000h以上00FFFh以下のアドレス)が付される。(なお、本明細書及び図面において、末尾に“h”が付された数字は16進数である。)
ディレクトリは、フラッシュメモリ11内に記憶されているファイル(すなわち、一括して扱う対象としてコンピュータ2が指定するデータの集合)のファイル名と、そのファイルの先頭部分が記憶されているセクタの論理アドレスとを示すテーブルである。
FATは、フラッシュメモリ11の記憶領域内でのファイルの配置を示すテーブルであり、ファイルが1つのカラム内に収まらないとき、図4に示すように、後続の部分を記憶するカラムの論理アドレスをそれぞれ示すものである。ファイルの最終部分が記憶されているカラムの論理アドレスは、図4に示すように、終了コード(EC)を付されることによって、その論理アドレスが最終部分を表すものであることが示される。
コントローラ12は、図1に示すように、CPU(Central Processing Unit)121と、ROM(Read Only Memory)122と、RAM(Random Access Memory)123とを備えている。RAM123は、例えばバックアップされたSRAM(Static RAM)やあるいはFeRAM(Ferroelectric RAM)などより構成されており、RAM123の記憶領域の少なくとも一部は不揮発性の記憶領域を構成している。
CPU121は、ROM122、RAM123、フラッシュメモリ11及びコンピュータ2に接続されている。
CPU121は、コントローラ12の製造者等によって予めROM122に格納されているプログラムの処理に従って、後述する処理を行う。
そして、CPU121は、アクセス装置を構成するコンピュータ2から供給される命令を取得すると、その命令を実行する。CPU121が実行する命令には、フラッシュメモリ11にアクセスする命令が含まれる。
RAM123が有する記憶領域は、CPU121の作業領域として用いられ、また、一時記憶用領域を構成している。また、RAM123の不揮発性の記憶領域は、CPU121が後述する処理により作成するブロックステートテーブルと、論理物理変換テーブルと、書込ポインタと、書込ポインタ初期値と、移動先書込ポインタと、空きブロック数カウンタとを格納する。
一時記憶用領域は、後述するデータ書き込みの処理において、書き込みを行う対象のページを含むブロックに格納されているデータを一時的に格納するための記憶領域であり、フラッシュメモリ11の1ページ分の記憶容量を有している。
ブロックステートテーブルは、例えば図5にデータ構造を模式的に示すように、フラッシュメモリ11の記憶領域に含まれるそれぞれのブロックが、以下(1)〜(3)、(4a)及び(4b)として示す状態、すなわち、
(1) 不良ブロック
(2) 不良ブロックでないブロックすなわち良品ブロックであって、当該良品ブロック内に、データが書き込まれているグループが存在しないブロック(空きブロック)
(3) 良品ブロックであって、当該良品ブロック内に、データが書き込まれているグループと書き込まれていないグループとが混在するブロック
(4a) 良品ブロックであって、当該良品ブロックに属するすべてのグループにデータが書き込まれており、書き込まれているこれらのデータのうちに、無効となった古いデータ(旧データ)が含まれていないブロック
(4b) 良品ブロックであって、当該良品ブロックに書き込まれているデータのうちに旧データが含まれているブロック
のうちいずれの状態にあるかを特定する情報を、当該ブロックの物理ブロックアドレスと対応付けて格納する。(なお、図5において、(1)の状態を示すデータは「BB」、(2)の状態を示すデータは「EB」、(4a)の状態を示すデータは「UWO」、(4b)の状態を示すデータは「UWC」として示されている。また、(3)の状態を示すデータは空白により示されている。)
ブロックステートテーブルは、例えばRAM123の不揮発性の記憶領域内に予め作成され、コントローラ12の後述する処理に従って更新される。
なお、不良ブロックには、フラッシュメモリ11の製造者等によって出荷前に不良と判断されたブロック(初期不良ブロック)と、フラッシュメモリ11の使用中にデータの正常な格納ができないと判断されたブロック(後発不良ブロック)とがあり得る。
論理物理変換テーブルは、各々のグループについて、当該グループの論理グループアドレスと物理グループアドレスとの対応関係を示す情報を格納するものである。論理物理変換テーブルは、例えばRAM123の不揮発性の記憶領域内に予め作成され、CPU121による後述の処理に従って更新される。
論理物理変換テーブルは、具体的には、例えば図6に示すデータ構造を有する。
すなわち、論理物理変換テーブルは、例えばRAM123の不揮発性の記憶領域内の所定の論理的位置を占め、各々の論理グループアドレスに対応付けられた物理グループアドレスを記憶するための記憶領域を備える。そして、論理グループアドレスの総数が8000個であるとした場合、例えば、図示するように、先頭から13ビット毎に付されたアドレスが1000h〜2F3Fhである、合計13000バイトの記憶領域を備えていればよい。
論理物理変換テーブルが図6に示すデータ構造を有するとした場合、論理物理変換テーブルを形成する記憶領域に付された各々のアドレスは、論理グループアドレスと所定のオフセット値との和に等しい。(図6は、オフセット値が“1000h”である場合を例示するものである。)
そして、各々のアドレスを付された13ビットの記憶領域に格納されている内容は、当該アドレスが示す論理グループアドレスに対応付けられているグループの物理グループアドレスを表す。
具体的には、例えば図6に示すように、アドレス1001hを付された記憶領域に値“010Fh”(2進数“0000100001111”)が格納されており、オフセット値が1000hであるとする。この場合は、物理グループアドレスが010Fhであるグループには、論理グループアドレスとして0001hが対応付けられている。
ただし、各々のアドレスを付された記憶領域に格納されている内容が所定の値を表す場合(例えば、図示するように、物理グループアドレスの値“1FFFh”を表す場合)は、その値を格納している記憶領域のアドレスが示す論理グループアドレスには、物理グループアドレスが対応付けられていないことを表す。
書込ポインタは、CPU121がユーザデータを書き込むべきグループを指定する変数(ポインタ)であり、具体的には、該当するグループの物理グループアドレスを示しているものである。書込ポインタの値は、後述する処理に従って更新される。
書込ポインタ初期値は、上述の書込ポインタの最新の値を表すものであり、この記憶システムが起動後最初にフラッシュメモリ11へのユーザデータの書き込みにおいてユーザデータを書き込むべきカラムがあるグループを指定するものとなる。
移動先書込ポインタは、CPU121がブロック内のデータを消去して当該データの一部を他のブロックに移動させる際、移動先となるブロックを指定するポインタであり、具体的には、該当するブロック内のグループの物理グループアドレスを示しているものである。移動先書込ポインタの値は、後述する処理に従って更新される。なお、書込ポインタが移動先書込ポインタを兼ねていてもよい。
空きブロック数カウンタは、現存する空きブロックの数を示すデータである。空きブロック数カウンタの初期値は、例えばメモリユニット1の製造者などによりあらかじめRAM123の不揮発性の記憶領域に格納され、書込ポインタの値は、後述する処理に従って更新される。
コンピュータ2はパーソナルコンピュータ等からなり、OS及びドライバを表すプログラムデータを記憶し、電源投入後、OSを実行する。そして、OSの処理に従ってドライバを起動する。なお、コンピュータ2のプロセッサがCPU121の機能を兼ねて行ってもよい。
ドライバの処理を行うコンピュータ2は、コントローラ12に上述の命令を供給したり、フラッシュメモリ11に書き込む対象のデータを供給して、CPU121に、フラッシュメモリ11へのアクセスを行わせる。そして、自らが供給した命令に従ってCPU121がフラッシュメモリ11から読み出して自らに供給したデータを、CPU121より取得する。
(動作)
次に、この記憶システムの動作を、図7〜図14を参照して説明する。
図7は、データ読み出しの処理を示すフローチャートである。
図8〜図12は、データ書き込みの処理を示すフローチャートである。
図13は、空きブロック確保の処理を示すフローチャートである。
図14は、グループ登録の処理を示すフローチャートである。
(データ読み出しの処理)
この記憶システムが起動すると、メモリユニット1のCPU121は、コンピュータ2より、フラッシュメモリ11へのアクセスを指示するための各種のコマンドを受け付ける状態に入る。
コンピュータ2は、CPU121にフラッシュメモリ11からのデータの読み出しを指示するときは、まず、所定の読出コマンドと、データを読み出す対象のセクタのうち先頭のセクタの論理アドレスと、読み出すセクタの数を示すデータとを、CPU121に供給する(図7、ステップS201)。
読出コマンド、論理アドレス及びセクタの数からなるデータを供給されたCPU121は、供給されたこのデータを解釈してこのデータが読出コマンドを含むことを検出すると(ステップS202)、供給されたデータに含まれる論理アドレス及びセクタの数をRAM123の記憶領域に一時記憶させる。そして、一時記憶されている論理アドレス内の論理グループアドレスをキーとして論理物理変換テーブルを検索し、読み出す対象の先頭のセクタに相当するカラムが属するグループの物理グループアドレスを索出する。そして、索出した物理グループアドレスと、ステップS201で供給された論理アドレスに含まれるカラムアドレス及びグループ内ページアドレスとに基づいて、読み出す対象の先頭のセクタに相当するカラムの物理アドレスを特定する(ステップS203)。
次に、CPU121は、ステップS203で特定したカラムよりデータを読み出す(ステップS204)。そして、読み出したデータのうちデータ領域に格納されていたデータに基づいてECCを生成し、生成したECCと、読み出したデータのうち冗長部に格納されていたECCとに基づいて、データ領域に格納されていたデータが正しく読み出されたか否かを判別する(ステップS205)。
ステップS205で、正しく読み出されたと判別すると、CPU121は、データ領域に格納されていたデータをコンピュータ2に供給する(ステップS210)。
正しく読み出されていないと判別すると、CPU121は、データ領域に格納されていたデータを正しい内容へと訂正することが可能か否かを、冗長部に格納されていたECC等に基づいて判別する(ステップS206)。そして、訂正が可能であると判別すると、データ領域に格納されていたデータを訂正して(ステップS209)、コンピュータ2に供給する(ステップS210)。
ステップS210でデータ(カラムのデータ領域に格納されていたデータ又は当該データを訂正して得られるデータ)をコンピュータ2へと供給すると、CPU121は、ステップS201で供給されたセクタの数に相当する数のカラムからのデータの読み出しを完了したか否かを判別する(ステップS211)。そして、完了したと判別するとデータ読み出しの処理を終了し(ステップS213)、完了していないと判別したときは、RAM123に一時記憶されている論理アドレスをインクリメントして、次にデータを読み出す対象のセクタを示すようにしてから、処理をステップS203に戻す。
一方、データ領域から読み出したデータの訂正ができないとステップS206で判別すると、CPU121は、訂正できない当該データを読み出したカラムが属するブロックが不良ブロックであることを表すように、ブロックステートテーブルの内容を更新する(ステップS207)。つまり、ブロックステートテーブル内でこのブロックのステータスを示す記憶位置に、「BB」を示すデータを格納する。また、ステップS207でCPU121は、データの読み取りに失敗したことをコンピュータ2に通知する。
コンピュータ2は、ステップS207でCPU121が発した通知を受けると、データ読み出しの処理を中断(異常終了)する(ステップS208)。
以上説明したステップS201〜S213の処理により、フラッシュメモリ11よりデータが読み出され、コンピュータ2へと供給される。なお、読み出す対象のデータの論理アドレスはFAT及びディレクトリの内容に基づいて特定される必要があるため、コンピュータ2は、読み出す対象のデータの論理アドレスを供給するのに先立って、コンピュータ2は、FAT及びディレクトリの読み出しをCPU121に行わせることとなる。
(データ書き込みの処理)
また、フラッシュメモリ11へのデータの書き込みを行う場合、まずコンピュータ2は、CPU121に、所定の書込コマンドと、データを書き込む対象のセクタのうち先頭のセクタの論理アドレスと、書き込むセクタの数を示すデータとを、CPU121に供給する(図8、ステップS301)。
なお、古いデータを新しいデータに書き換える場合、古いデータの論理アドレスはFAT及びディレクトリの内容に基づいて特定される必要がある。また、データを新規に書き込む場合も、データが書き込まれていないセクタの論理アドレスがFAT及びディレクトリの内容に基づいて特定される必要がある。従って、コンピュータ2は、書き込む対象のセクタの先頭の論理アドレスを供給する場合も、これに先立ってコンピュータ2は、FAT及びディレクトリの読み出しをCPU121に行わせることとなる。
書込コマンド、論理アドレス及びセクタの数からなるデータを供給されたCPU121は、このデータを解釈してこのデータが書込コマンドを含むことを検出すると(ステップS302)、供給されたデータに含まれる論理アドレス及びセクタの数をRAM123の記憶領域に一時記憶する。
次に、CPU121は、書込ポインタが、ブロックの末尾のグループを指しているか否かを判別する(ステップS303)。そして、末尾以外を指していると判別すると処理をステップS305に移し、末尾を指していると判別すると、図13に示す空きブロック確保の処理に移る(ステップS304)。そして、空きブロック確保の処理を終了すると、処理をステップS305に移す。
ステップS305でCPU121は、RAM123に一時記憶されている論理アドレス内の論理グループアドレスをキーとして論理物理変換テーブルを検索する。そして、書き込む対象の先頭のセクタが属するグループの物理グループアドレスがあれば索出し、索出されたか否かを判別する(ステップS306)。
ステップS306で物理グループアドレスが索出されなかったと判別した場合は、データが新規に書き込まれる場合であると考えられる。この場合、CPU121は、書込ポインタが現に指している物理グループアドレスと、ステップS301で供給された論理アドレスに含まれるカラムアドレス及びグループ内ページアドレスとに基づいて、書き込む対象の先頭のセクタに相当するカラムの物理アドレスを特定する。そして、書き込み対象のカラムより前にあるページ(つまり、物理アドレスを特定されたカラムが属するグループ内で当該カラムがあるページよりグループ内ページアドレスが小さなページ)に、所定のダミーデータを書き込む(ステップS307)。
そしてCPU121は、RAM123の一時記憶用領域の全域に、所定のダミーデータを書き込む(ステップS308)。
一方、ステップS306で物理グループアドレスが索出されたと判別した場合は、新たに書き込むデータに置き換えられて旧データとなるべき古いデータがフラッシュメモリ11に記憶されている場合であると考えられる。この場合、CPU121は、索出された物理グループアドレスと、ステップS301で供給された論理アドレスに含まれるカラムアドレス及びグループ内ページアドレスとに基づいて、この古いデータが格納されている先頭のセクタに相当するカラムの物理アドレスを特定する。そして、当該カラムより前にあるページに格納されているデータがあれば、該当するデータを、書込ポインタが指し示すグループ内の空いているページに転記する(ステップS331)。
そしてCPU121は、一時記憶用領域に、ステップS331で特定したカラムを含む1ページのデータを転記する(ステップS332)。
ステップS308又はS332の処理を行ったCPU121は、フラッシュメモリ11に書き込むべき1セクタ分以内のデータがコンピュータ2から供給されるのを待機する(図9、ステップS309又は図11、S333)。そして、フラッシュメモリ11に書き込むデータがコンピュータ2から供給されると(ステップS310又はS334)、CPU121は、このデータを、一時記憶用領域のうち、カラムのデータ領域に相当する記憶位置に上書きする(ステップS311又はS335)。
ただし、ステップS301で供給されたデータが示す先頭セクタが、ページの先頭からn番目(nは1から4までの整数)のカラムに相当するセクタであるとして、ステップS311又はS335での上書きは、一時記憶用領域の先頭からカラム(n−1)個分の記憶領域より後ろの記憶位置に行うものとする。
次に、CPU121は、ステップS310又はS334で供給された1セクタ分以内のデータが、一時記憶用領域の末尾まで上書きされたか否かを判別する(ステップS312又はS336)。末尾まで上書きされていない場合とはつまり、一時記憶用領域内に、フラッシュメモリ11に書き込むべきデータがまだ格納されていない部分が残っている場合である。
そしてCPU121は、一時記憶用領域の末尾まで書き込まれていないと判別すると処理をステップS312からステップS314へ(又は、ステップS336からステップS338へ)と進める。一方、一時記憶用領域の末尾まで書き込まれたと判別すると、一時記憶用領域に格納されているデータを、書込ポインタが指し示すグループ中、最後に書き込みを行ったページの次のページに書き込んで、一時記憶領域内のデータをすべてクリアする(ステップS313又はS337)。ステップS313で初めて書き込みを行う場合は更に、ブロックステートテーブルを更新して、書き込み先のページが属するブロックが状態(3)であることを示すようにする。
次に、CPU121は、ステップS301で供給されたセクタの数に相当する数のカラムへのデータの書き込みを完了したか否かを判別する(ステップS314又はS338)。
そして、書き込みが完了したと判別すると、CPU121は、処理をステップS314からステップS318へ(又は、ステップS338からステップS342へ)と移す。
一方、書き込みが完了していないとステップS314又はS338で判別したとき、CPU121は、RAM123に一時記憶されている論理アドレスをインクリメントして(ステップS315又はS339)、次にデータを書き込む対象のセクタを示すようにする。
次に、CPU121は、インクリメント後の新たな論理アドレスが指し示すセクタが、インクリメント前の論理アドレスが指し示すセクタと共通のグループに属するか否かを判別し(ステップS316又はS340)、属すると判別すると、ステップS316からステップS309へ(又は、ステップS340からステップS333へ)と処理を戻す。
一方、属さない(すなわち、データの書き込みが複数のグループを跨いで行われる)と判別すると、インクリメント前の論理アドレスが示すセクタに相当するページを含むグループを登録対象のグループとして、図14に示すグループ登録の処理を行う(ステップS317又はS341)。そして、グループ登録の処理を終えると、処理をステップS303へ戻す。
一方、ステップS318(図10)又はS342(図12)でCPU121は、ステップS310又はS334の処理でコンピュータ2より最後に供給された(1ページ分未満の量の)書き込み対象のデータが一時記憶用領域に格納されているか否かを判別する。そして、格納されていない(クリアされている)と判別すると処理をステップS318からステップS321へ(又は、ステップS342からステップS345へ)と移す。
一方、格納されている(クリアされていない)と判別すると、一時記憶用領域のうち、該当する書き込み対象のデータが格納されていない部分に所定のダミーデータを格納し(ステップS319)、又は、ステップS337で最後に旧データとされたデータがあるカラムに後続するカラムに格納されているデータを当該部分に転記する(ステップS343)。
そしてCPU121は、一時記憶用領域に格納されているデータを、書込ポインタが指し示すブロック中、最後に書き込みを行ったページの次のページに書き込む(ステップS320又はS344)。
次に、CPU121は、ステップS320又はS344でデータを書き込んだページがグループの末尾のページであるか否かを、RAM123に一時記憶されている論理アドレスなどに基づいて判別する(ステップS321又はS345)。そして、グループの末尾のページではないと判別すると、CPU121は、所定のダミーデータ1ページ分を一時記憶用領域に書き込み(S322)、又は、ステップS343若しくはS346で最後に転記したデータがあるカラムに後続するカラムに格納されているデータ1ページ分を転記する(ステップS346)。
次にCPU121は、一時記憶用領域に格納されているデータを、書込ポインタが指し示すブロック中、最後に書き込みを行ったページの次のページに書き込み(ステップS323又はS347)、処理をステップS323からステップS321へ(又は、ステップS347からステップS345へ)と戻す。
一方、CPU121は、グループの末尾のページであるとステップS321又はS345で判別すると、当該末尾のページを含むグループを登録対象のグループとして、上述のグループ登録の処理を行う(ステップS324又はS348)。そして、グループ登録の処理を終えると、データ書き込みの処理も終了する。
(空きブロック確保の処理)
次に、空きブロック確保の処理を説明する。空きブロック確保の処理において、まずCPU121は、フラッシュメモリ11の空きブロックが所定数以上あるか否かを、空きブロック数カウンタの値に基づいて判別する(図13、ステップS401)。そして、所定数以上あると判別すると処理をステップS409に移し、所定数未満であると判別すると、処理をステップS402に移す。
ステップS402でCPU121は、良品ブロックである空きブロック1個を、空きブロック検索位置ポインタに基づいて特定し、特定した空きブロック内の先頭のグループの物理グループアドレスを、移動先書込ポインタにセットする。そして、空きブロック数カウンタの値を1だけデクリメントする。また、CPU121は、他の空きブロック1個を索出して、この空きブロックの物理ブロックアドレスを空きブロック検索位置ポインタにセットする。
次に、CPU121は、ブロックステートテーブルに基づいて、上述の(4b)の状態にあるブロック(ブロックステートテーブルに「UWC」と示されているブロック)を特定し、特定したこれらのブロックのうちから、新たに空きブロックとする対象のブロック(整理対象ブロック)を1個以上決定する(ステップS403)。
次に、CPU121は、ステップS403で決定した整理対象ブロックに含まれるグループのうち、データを有効に格納しているグループに格納されているデータを、移動先書込ポインタが指す空きブロックに転記する(ステップS404)。なお、ステップS404でCPU121は、整理対象ブロックに含まれるグループのうち、後述するグループ登録の処理で冗長部に旧グループフラグを格納されたカラムを含まないグループを、データ有効に格納しているグループとして扱うものとすればよい。また、ステップS404でCPU121は、論理物理変換テーブルを更新し、データが転記されたグループの論理グループアドレスが、転記先の記憶位置が属するグループの物理グループアドレスに対応付けられるようにする。
整理対象ブロックから空きブロックへのデータの転記が完了すると、CPU121は、整理対象ブロックをフラッシュイレースして空きブロックにし(ステップS405)、フラッシュメモリ11よりステータス情報を取得する等して、この整理対象ブロックが正常に空きブロックになったか否かを判別する(ステップS406)。そして、空きブロックになっていなければ、ブロックステートテーブルの内容を、この整理対象ブロックが不良ブロックであることを表すように更新する(ステップS407)。つまり、ブロックステートテーブル内でこの整理対象ブロックのステータスを示す記憶位置に、「BB」を示すデータを格納する。そして、CPU121は処理をステップS401に戻す。
一方、正常に空きブロックになっているとステップS406で判別した場合、CPU121は、ブロックステートテーブルの内容を、この整理対象ブロックが空きブロックであることを表すように更新する(ステップS408)。つまり、ブロックステートテーブル内でこの整理対象ブロックのステータスを示す記憶位置に、「EB」を示すデータを格納する。また、ステップS408でCPU121は、空きブロック数カウンタの値を、正常に空きブロックになった整理対象ブロックの数だけインクリメントする。そして、CPU121は処理をステップS401に戻す。
そして、ステップS408の処理が1回又は数回行われる結果、空きブロック数が所定数以上にまで増加すると、上述の通りCPU121は、処理をステップS401からステップS409へと移す。
ステップS409でCPU121は、ブロックステートテーブルを検索することにより、新たにデータの書き込みを行う対象の空きブロックを1個特定する。そして、特定したブロック内の先頭のグループの物理グループアドレスの値を、書込ポインタにセットし(ステップS410)、空きブロック確保の処理を終了する。
なお、ステップS409では、フラッシュメモリ11の各ブロックからデータを読み出すことによって空きブロックを特定してもよい。しかし、各ブロックからデータを読み出す代わりに、ブロックステートテーブルを検索することによって空きブロックを特定した方が空きブロックの特定が迅速に行われ、また、フラッシュメモリ11へのアクセス数が抑えられるのでフラッシュメモリ11の劣化を防止できる。
(グループ登録の処理)
次に、グループ登録の処理を説明する。グループ登録の処理において、まずCPU121は、登録対象のグループの物理グループアドレスが論理物理変換テーブルに登録されているか否かを判別する(図14、ステップS501)。
そして、登録されていると判別すると、CPU121は、ブロックステートテーブルの内容を更新し、登録されていたこの物理グループアドレスが示すグループを含むブロックが上述の(4b)の状態にあることを表すように更新する(ステップS502)。
また、ステップS502でCPU121は、データの転記ないし更新が行われた場合、新たに旧データとなったデータ(例えば転記元のデータや更新前のデータ)を格納しているグループ内のカラムの冗長部に旧グループフラグを書き込み、また、当該旧データに代わる新しいデータ(例えば転記先のデータや更新後のデータ)を格納しているグループの物理グループアドレスを、論理物理変換テーブルに登録し直す。つまり、論理物理変換テーブル内に格納されている、旧データとなったデータのあるグループの物理グループアドレスを、新たなデータのあるグループの物理グループアドレスに書き換える。
一方、登録されていないと判別すると、CPU121は、登録されていなかった当該物理グループアドレスを、論理物理変換テーブルに登録する(ステップS503)。つまり、当該物理グループアドレスを、論理物理変換テーブル内の、新たな論理アドレスに含まれる論理グループアドレスに対応付けられた記憶位置に格納する。
物理グループアドレスを論理物理変換テーブルに登録すると、CPU121は、登録したこの物理グループアドレスが示すグループを含むブロックが空きブロックとしてブロックステートテーブルに登録されているか否かを判別する(ステップS504)。そして、空きブロックではないブロックとして登録されていれば、グループ登録の処理を終了する。
一方、空きブロックとして登録されていれば、ブロックステートテーブル内の当該ブロックのステータスを示す記憶位置に、「UWO」を示すデータを格納して(ステップS505)、グループ登録の処理を終了する。ステップS505の処理の結果、登録した物理グループアドレスが示すグループを含むブロックが上述の(4a)の状態にあることを表すように、ブロックステートテーブルが更新される。
以上説明した処理により、コンピュータ2から供給されたデータがフラッシュメモリ11に格納される。また、ブロックステートテーブルの内容が、データの書き込みの結果新たに生じたブロックの状態を反映した内容へと変更される。一方、論理物理変換テーブルの内容も変更され、新たに空きブロックとなったブロック内のグループに割り当てられていた論理グループアドレスが、当該グループの内容を転記された他のグループに新たに割り当てられる。
この記憶システムは、ユーザデータが格納されていないグループの数が十分にあるうちはブロックのフラッシュイレースを行わないので、無用のフラッシュイレースが避けられる。このため、ブロック1個当たりの記憶容量が大きい場合であっても、フラッシュメモリ11の劣化が起きにくく、またデータの退避に要する処理も少なくなるのでフラッシュメモリ11へのアクセスが円滑になる。
また、この記憶システムでは、ユーザデータの書き込みはブロックより小さな単位で行われるので、ユーザデータを書き込む毎に新たな空きブロックを探索して書き込むという操作が不要になり、ユーザデータの書き換え時にブロックに対して効率の悪いフラッシュイレースを行わずに済む。また、データの書き換えに伴って変更のない部分を転記する処理も、ブロックより小さな単位で行われる。従って、フラッシュメモリ11の劣化が起きにくく、またフラッシュメモリ11へのアクセスが円滑になる。
また、この記憶システムでは、論理アドレスと物理アドレスとの対応関係の管理は、ブロックより小さく、ページないしカラムより大きな単位で行われる。このため、論理アドレスと物理アドレスとの対応関係を示すデータを格納するテーブルの記憶容量を、論理アドレスと物理アドレスの対応関係の管理をページないしカラム単位で行う場合に比べて小さくすることができ、一方で、論理アドレスと物理アドレスの対応関係の管理をブロック単位で行う場合に比べきめ細かく行うことにより、多数のファイルを記憶することができる。
また、データを書き込むグループは書込ポインタにより物理グループアドレス順に指定されるので、特定のブロックに書き込みが集中することが避けられ、従って、書き込みが集中したブロックにフラッシュイレースの機会が集中することが避けられる。この点も、フラッシュメモリ11の劣化防止に寄与する。
なお、この記憶システムの構成は、上述のものに限られない。
例えば、フラッシュメモリ11の記憶領域のブロックの数、1ブロック当たりのグループの数、1グループ当たりのページの数、各ページの記憶容量、データ領域及び冗長部の記憶容量は、いずれも任意である。また、フラッシュメモリ11は、EEPROMから構成されるものである必要はなく、コンピュータにより読み書き可能な任意の記憶装置であってよい。また、ディレクトリ及びFATが格納されるカラムの論理アドレスは上述の値である必要はなく、また、ディレクトリ及びFATが格納されるカラムの個数も任意である。また、1個のカラムのデータ領域及び冗長部が互いに隣接している必要はなく、従って、フラッシュメモリ11の記憶領域は、たとえば、4個のカラムのデータ領域が1個のページ内で先頭から4個連続し、次いでこれら4個のカラムの冗長部が4個連続する、といった構造を有していてもよい。
また、CPU121は、ブロックステートテーブルの更新を必ずしもユーザデータの書き込みの後で行う必要はなく、ユーザデータを書き込むことによって各ブロックの状態がどのように変化するかが決定された後であれば、ユーザデータの書き込みの前にブロックステートテーブルの更新を行うようにしてもよい。
また、CPU121は、必ずしも内部バスを介してコンピュータ2に接続されるものでなくてもよく、PCカードスタンダードに準拠したバス、IEEE1394インターフェース、USB(Universal Serial Bus)あるいはその他の任意のインターフェースを介してコンピュータ2に接続されていてもよい。また、CPU121は必ずしもコンピュータ2に有線接続される必要はなく、例えばBluetooth等の規格に準拠したインターフェースを介してコンピュータ2に無線接続されるものであってもよい。
また、論理物理変換テーブルは、物理グループアドレスの全桁を格納している必要はなく、例えば、物理グループアドレスのうち下位の所定桁数だけを仮物理グループアドレスとして格納するようにしてもよい。論理物理変換テーブルが物理グループアドレスの全桁に代えてこのような仮物理グループアドレスを格納するようにすれば、物理グループアドレス全桁を格納する場合に比べて、論理物理変換テーブルのデータ量は小さくなる。従って、論理物理変換テーブルを格納するRAM123の記憶容量も小さくて済み、この記憶システムを小型に構成できるようになる。
また、RAM123は、ステップS403で整理対象ブロックとして特定されるべきブロックの物理ブロックアドレスを指す整理対象ブロックポインタを記憶してもよい。この場合、ステップS403でCPU121は、整理対象ブロックポインタが現に指している物理ブロックアドレスを与えられたブロックを整理対象ブロックと決定した後、当該物理ブロックアドレス以降の状態(4b)のブロックの物理ブロックアドレスをサイクリックにセットするようにしてもよい。すなわち、整理対象ブロックポインタが現に指している物理ブロックアドレスより大きな値を有する状態(4b)のブロックの物理ブロックアドレスのうち値が最も小さいもの(ただし、該当するものがなければ、状態(4b)のブロックの物理ブロックアドレス全体のうち値が最も小さいもの)を、次回に整理対象ブロックとして決定されるべきブロックの物理ブロックアドレスとして、整理対象ブロックポインタにセットすればよい。
このように、各ブロックが、書き込まれているデータが古い順にフラッシュイレースの対象となっていけば、ブロックがフラッシュイレースされる頻度が均等になる。従って、特定のメモリブロックが集中的に劣化することによりフラッシュメモリ11全体の寿命が短くなる、ということが防止される。
また、RAM123は、ステップS410で特定されるべき空きブロックの物理ブロックアドレスを指す空きブロック検索位置ポインタを記憶してもよい。この場合、ステップS409でCPU121は、空きブロック検索位置ポインタが現に指している物理ブロックアドレスを与えられた空きブロックを特定し、ステップS410では、空きブロック検索位置ポインタが現に指している物理ブロックアドレス以降の空きブロックの物理ブロックアドレスをサイクリックにセットするようにしてもよい。このような構成をとれば、ブロックに書き込みがなされる頻度も均等になり、従って、特定のメモリブロックの集中的な劣化が防止される。
仮物理グループアドレスが、物理グループアドレスのうち下位の所定桁数だけからなる場合、例えば、フラッシュメモリ11のグループは複数のゾーンのいずれかへと分類されているものとし、物理グループアドレスのうちこの下位の所定桁数を除いた上位の桁は、グループが属すゾーンを示すものとする。なお、個々のゾーンの記憶容量の大きさはブロック1個分より大きくても小さくてもよく、ブロック1個分と等しくてもよい。また、ゾーンがブロックに一致していてもよい。
そして、グループが複数のゾーンのいずれかへと分類されている場合、各々の論理グループアドレスはいずれか1つのゾーンに属するグループに割り当てられるものとする。従って、グループに与えられた論理グループアドレスに基づいて、このグループが属するゾーンを特定することができる。
グループが複数のゾーンのいずれかへと分類されている場合、CPU121は、データの読み書きの対象となるファイルがあるカラムを特定するため、論理物理変換テーブルを参照して、このカラムの論理アドレスに含まれる論理グループアドレスに対応付けられている仮物理グループアドレス(物理グループアドレスの下位の桁)を特定し、一方、この論理グループアドレスに基づいて、このカラムが属するゾーンも特定する。次に、CPU121は、特定したゾーン、特定した仮物理グループアドレス、及びこのカラムが属するページのグループ内ページアドレスにより構成される物理アドレスが示すカラムにアクセスする。
また、この記憶システムは、論理物理変換テーブルをフラッシュメモリ11が記憶するようにしてもよい。この場合、RAM123に、論理物理変換テーブルを構成するデータが格納されているカラム(以下、論理物理変換テーブル格納カラムと呼ぶ)の位置を示す論理物理変換テーブルカラムリストを予め記憶するようにしてもよい。
論理物理変換テーブルカラムリストは、具体的には、例えば、論理物理変換テーブル格納カラムの論理アドレス(以下、論理物理変換テーブル格納カラムポインタと呼ぶ)と、当該論理物理変換テーブル格納カラムの物理アドレスを、互いに対応付けて格納するテーブルからなる。
一方、CPU121は、論理物理変換テーブルを構成するデータを論理物理変換テーブル格納カラムに格納する際、例えばこの論理物理変換テーブル格納カラムの冗長部に、この論理物理変換テーブル格納カラムに割り当てられた論理物理変換テーブル格納カラムポインタを格納するものとする。
RAM123が論理物理変換テーブルカラムリストを記憶している場合、CPU121は、データ読み出しの処理において論理物理変換テーブルを参照するため、ステップS207の処理を行う代わりに、例えばまず、RAM123から論理物理変換テーブルカラムリストを読み出す。次に、この論理物理変換テーブルカラムリストに含まれる論理物理変換テーブル格納カラムポインタに対応付けられている物理アドレスが示すカラムから論理物理変換テーブルの内容を読み出し、読み出した論理物理変換テーブルを用いて物理グループアドレスの特定を行う。
フラッシュメモリ11が論理物理変換テーブルを記憶している場合、CPU121は、データ書き込みの処理等において論理物理変換テーブルの内容を更新する場合は、フラッシュメモリ11から論理物理変換テーブルを読み出し、RAM123に一時記憶させ、RAM123に一時記憶されたこの論理物理変換テーブルの内容を更新して、書き換えが終わった論理物理変換テーブルを、書込ポインタが指しているグループに書き込むものとする。また、論理物理変換テーブルをなすデータを新たに書き込まれた各カラムの物理アドレスを、このデータが従前書き込まれていたカラムを指し示す論理物理変換テーブル格納カラムポインタに対応付けた形で、論理物理変換テーブルカラムリストに格納するものとし、一方、この論理物理変換テーブル格納カラムポインタに従前対応付けられていた物理アドレスは、論理物理変換テーブルカラムリストから削除するものとする。
また、論理物理変換テーブル格納ページに対応付けられる論理物理変換テーブルカラムポインタの値は、この論理物理変換テーブル格納カラムに格納されているデータが、論理物理変換テーブルのうち、どの範囲の論理グループアドレスを示す部分かを指定するものであってもよい。この場合、CPU121は、論理物理変換テーブルのうち、読み書きの対象となるファイルの内容を含むカラムが属するグループの論理グループアドレスを含む部分を論理物理変換テーブルカラムリストの内容に基づいて特定し、特定した部分のみをフラッシュメモリ11から読み出してRAM123に一時記憶させ、一時記憶された当該部分を論理物理変換テーブルとして扱うようにすればよい。
このような処理を行うものとすれば、論理物理変換テーブルを参照するたびにフラッシュメモリ11から論理物理変換テーブルの全体を逐一読み出す、という操作を要しないので、論理物理変換テーブルの参照に要する時間が短くなる。
また、この記憶システムは、ブロックステートテーブルをフラッシュメモリ11が記憶するようにしてもよい。この場合、CPU121は、RAM123に、ブロックステートテーブルを構成するデータが格納されているカラム(以下、ブロックステートテーブル格納カラムと呼ぶ)の位置を示すブロックステートテーブルカラムリストを記憶させるようにしてもよい。
ブロックステートテーブルカラムリストは、具体的には、例えば、ブロックステートテーブル格納カラムの論理アドレス(以下、ブロックステートテーブルページポインタと呼ぶ)と、当該ブロックステートテーブル格納カラムの物理アドレスとを、互いに対応付けて格納するテーブルからなる。
一方、CPU121は、ブロックステートテーブルの一部をブロックステートテーブル格納カラムに格納する際、たとえばこのブロックステートテーブル格納カラムの冗長部に、このブロックステートテーブル格納カラムに割り当てられたブロックステートテーブルカラムポインタを格納するものとする。
フラッシュメモリ11がブロックステートテーブルを記憶している場合において、CPU121は、データ書き込みの処理等においてブロックステートテーブルの内容を更新する場合、フラッシュメモリ11からブロックステートテーブルを読み出し、RAM123に一時記憶させ、一時記憶されたこのブロックステートテーブルの内容を更新して、書き換えが終わったブロックステートテーブルを、書込ポインタが指しているグループに書き込むものとすればよい。
また、CPU121は、ブロックステートテーブルを構成するデータを新たに書き込まれた各カラムの物理アドレスを、このデータが従前書き込まれていたカラムを指し示すブロックステートテーブル格納カラムポインタに対応付けた形で、ブロックステートテーブルカラムリストに格納する一方、このブロックステートテーブル格納カラムポインタに従前対応付けられていた物理アドレスは、ブロックステートテーブルカラムリストから削除するものとすればよい。
なお、ブロックステートテーブルを構成するデータが、上述したゾーンのうちいずれか所定のゾーンにのみ格納される場合、ブロックステートテーブルカラムリストには、このデータを格納するブロックステートテーブル格納カラムが属するグループの物理グループアドレスに代えて、このブロックステートテーブル格納カラムが属するグループの当該ゾーン内での位置を示す仮物理グループアドレスを格納するようにしてもよい。ブロックステートテーブルカラムリストが、ブロックステートテーブル格納カラムが属するグループの物理グループアドレスの全桁に代えて仮物理グループアドレスを格納するようにすれば、物理グループアドレス全桁を格納する場合に比べて、ブロックステートテーブルカラムリストのデータ量は小さくなる。従ってRAM123の記憶容量も小さくて済み、この記憶システムを小型に構成できるようになる。
また、ブロックステートテーブル格納ページに対応付けられるブロックステートテーブルカラムポインタの値は、このブロックステートテーブル格納カラムに格納されているデータが、ブロックステートテーブルのうち、どの範囲の論理アドレスを示す部分かを指定するものであってもよい。この場合、CPU121は、ブロックステートテーブルのうち、読み書きの対象となるファイルの内容を含むカラムの論理アドレスを含む部分をブロックステートテーブルカラムリストの内容に基づいて特定し、特定した部分のみをフラッシュメモリ11から読み出してRAM123に一時記憶させ、一時記憶された当該部分をブロックステートテーブルとして扱うようにすればよい。
このような処理を行うものとすれば、ブロックステートテーブルを参照するたびにフラッシュメモリ11からブロックステートテーブルの全体を逐一読み出す、という操作を要しないので、ブロックステートテーブルの参照に要する時間が短くなる。
また、ブロックステートテーブルのデータ構造も上述のものに限られず、ブロックステートテーブルは例えば、フラッシュメモリ11の記憶領域に含まれるそれぞれのブロックが空きブロックであるか否かを示す1ビットの情報を、当該ブロックの物理ブロックアドレスと対応付けて格納するものであってもよい。
ただしこの場合、ブロックが上述の(3)、(4a)あるいは(4b)の状態にあるか否かを判別可能とするため、CPU121は例えば、ユーザデータの書き込みを行う際には書き込みの対象となるカラムの冗長部に、ユーザデータの書き込みが行われていることを示す所定の識別用データ(例えば、当該カラムの論理アドレスなど)を書き込むものとする。そしてCPU121は、ブロックが上述の(3)、(4a)あるいは(4b)の状態にあるか否かを判別する場合は、当該ブロック内でこれらの識別用データや上述の旧グループフラグを検索することにより、当該判別を行うものとする。
なお、ユーザデータが書き込まれている各カラムの冗長部に当該カラムの論理アドレスが書き込まれる場合、CPU121は、冗長部に書き込まれたこれらの論理アドレスを読み出して論理グループアドレスを抽出することにより、当該カラムが属するグループの論理グループアドレスと物理グループアドレスとの対応関係を特定することができる。従ってCPU121は、例えばこの記憶システムの起動直後等に、フラッシュメモリ11の各カラムの冗長部に書き込まれた論理アドレスを読み出し、読み出した内容に基づいて論理物理変換テーブルを新規に作成してRAM123に記憶させるようにしてもよい。この場合、RAM123は、論理物理変換テーブルを格納する不揮発性の記憶領域を提供するための不揮発性メモリを備えている必要はない。
また、CPU121は例えば、ブロックのフラッシュイレースを行った際に、新たに空きブロックとなったブロック内のカラムの冗長部に、所定の空きブロックコードを書き込むものとしてもよい。この場合、CPU121は、冗長部に書き込まれた空きブロックコードを検索することにより空きブロックを特定することができる。従ってCPU121は、例えばこの記憶システムの起動直後等に、フラッシュメモリ11の各カラムの冗長部に書き込まれた空きブロックコードを検索し、検索結果に基づいてブロックステートテーブルを新規に作成してRAM123に記憶させるようにしてもよい。(ただしこの場合のブロックステートテーブルは、フラッシュメモリ11の記憶領域に含まれるそれぞれのブロックが空きブロックであるか否かを示す1ビットの情報を、当該ブロックの物理ブロックアドレスと対応付けて格納するものであるとする。)
なお、CPU121がブロックステートテーブルを新規に作成する処理を行うものである場合、RAM123は、ブロックステートテーブルを格納する不揮発性の記憶領域を提供するための不揮発性メモリを備えている必要はない。
以上、この発明の実施の形態を説明したが、この発明の記憶システムは、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、フラッシュメモリ11を装着するスロットを備えるパーソナルコンピュータに上述の動作を実行するためのプログラムを格納した媒体(フレキシブルディスク、CD−ROM等)から該プログラムをインストールすることにより、上述の処理を実行する記憶システムを構成することができる。
また、例えば、通信回線のBBSに該プログラムをアップロードし、これらを通信回線を介して配信してもよく、また、該プログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調して該プログラムを復元するようにしてもよい。
そして、該プログラムを起動し、OSの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
なお、OSが処理の一部を分担する場合、あるいは、OSが本願発明の1つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
本発明の実施の形態にかかる記憶システムの構成を示すブロック図である。 フラッシュメモリの記憶領域の論理的構造を模式的に示す図である。 ブロックの論理的構造を模式的に示す図である。 ディレクトリ及びFATのデータ構造を模式的に示す図である。 ブロックステートテーブルのデータ構造を模式的に示す図である。 論理物理変換テーブルのデータ構造を模式的に示す図である。 データ読み出しの処理を示すフローチャートである。 データ書き込みの処理を示すフローチャートである。 データ書き込みの処理を示すフローチャートの続きである。 データ書き込みの処理を示すフローチャートの続きである。 データ書き込みの処理を示すフローチャートの続きである。 データ書き込みの処理を示すフローチャートの続きである。 空きブロック確保の処理を示すフローチャートである。 グループ登録の処理を示すフローチャートである。
符号の説明
1 メモリユニット
11 フラッシュメモリ
12 コントローラ
121 CPU
122 ROM
123 RAM
2 コンピュータ

Claims (11)

  1. ユーザデータを記憶するための記憶領域を形成する複数のメモリブロックを含み、各々のメモリブロックが複数のグループより構成されており、各々のグループが複数のページより構成されている記憶手段と、
    前記グループの前記記憶領域内での物理的位置を指定する物理グループアドレスと当該グループの論理グループアドレスとの対応付けを表す論理物理変換テーブルを記憶する論理物理変換テーブル記憶手段と、
    前記グループのうちからユーザデータを記憶可能な状態にある空きグループを特定して、特定した空きグループの物理グループアドレスを指示する書込ポインタを記憶する書込対象グループポイント手段と、
    新たなユーザデータを書き込むグループの論理グループアドレス、当該グループに属するページ内において当該ユーザデータを書き込む記憶位置を指定するグループ内アドレス、及び、当該ユーザデータが自己に供給されたとき、当該ユーザデータを、前記書込ポインタにより指示された空きグループに属するページ内において当該グループ内アドレスが指定している記憶位置に書き込み、当該空きグループの物理グループアドレスと、供給された当該論理グループアドレスとの対応付けを表すよう前記論理物理変換テーブルを更新する書込手段と、を備える、
    ことを特徴とする記憶装置。
  2. 前記書込手段は、
    前記新たなユーザデータを書き込む記憶位置が属するグループの論理グループアドレス及び当該記憶位置のグループ内アドレスにより従前特定されていた他の記憶位置に記憶されているユーザデータを無効とする旨を指定するユーザデータ無効化手段と、
    無効なユーザデータを記憶しているメモリブロックのうちからデータを消去する対象のメモリブロックを指定する消去対象指定手段と、
    前記消去対象指定手段により指定されたメモリブロックに格納されているユーザデータが有効か否かを判別し、有効と判別したユーザデータを他のメモリブロックに転記し、当該指定されたメモリブロックが記憶するデータを消去する消去手段と、を備える、
    ことを特徴とする請求項1に記載の記憶装置。
  3. 各々のメモリブロックに空きグループが含まれているか否かを識別する情報を含むブロックステートテーブルを記憶するメモリを更に備え、
    前記書込手段は、
    自己に供給されたユーザデータを空きグループに書き込む結果、当該グループを含むメモリブロックから空きグループが無くなったとき、当該メモリブロックが空きグループを含んでいない旨を示すように前記ブロックステートテーブルを更新する手段と、
    記憶するデータを前記消去手段により消去されたメモリブロックが空きグループを含む旨を示すように前記ブロックステートテーブルを更新する手段と、を備え、
    前記消去対象指定手段は、空きグループを含まない旨が前記ブロックステートテーブルにより示されているメモリブロックのうちからデータを消去する対象のメモリブロックを指定する、
    ことを特徴とする請求項2に記載の記憶装置。
  4. 前記書込手段は、空きグループを含むメモリブロックの数が所定条件に満たない数になったか否かを前記ブロックステートテーブルに基づいて判別する空きブロック数判別手段を備え、
    前記消去対象指定手段は、空きグループを含むメモリブロックの数が所定条件に満たない数になったと判別されたとき、無効なユーザデータを記憶しているメモリブロックのうちからデータを消去する対象のメモリブロックを指定する、
    ことを特徴とする請求項3に記載の記憶装置。
  5. 物理グループアドレスはサイクリックに順位付けされていて、当該物理グループアドレスが示すグループが属するブロックを示すブロックアドレスを含んでおり、
    前記消去対象指定手段は、無効なユーザデータを記憶しているメモリブロックのうち、最後にデータを消去されたブロック以降で先頭のブロックアドレスを与えられているものを、データを消去する対象のメモリブロックとして指定する、
    ことを特徴とする請求項2、3又は4に記載の記憶装置。
  6. 前記ブロックステートテーブルは、各々のメモリブロックに無効なユーザデータが記憶されているか否かを識別する情報を更に含み、
    前記ユーザデータ無効化手段は、前記新たなユーザデータを書き込む記憶位置が属するグループの論理グループアドレス及び当該記憶位置のグループ内アドレスにより従前特定されていた他の記憶位置を含むメモリブロックに無効なユーザデータが記憶されている旨を示すように前記ブロックステートテーブルを更新する手段を備え、
    前記消去対象指定手段は、無効なユーザデータを記憶している旨が前記ブロックステートテーブルにより示されているメモリブロックのうちからデータを消去する対象のメモリブロックを指定する、
    ことを特徴とする請求項4又は5に記載の記憶装置。
  7. 物理グループアドレスはサイクリックに順位付けされており、
    前記書込対象グループポイント手段は、ユーザデータが書き込まれた結果すべてのページにユーザデータが格納されるに至ったグループの物理グループアドレス以降の物理グループアドレスを与えられている空きグループのうちの先頭の空きグループを特定する、
    ことを特徴とする請求項1乃至6のいずれか1項に記載の記憶装置。
  8. 読み出し対象のデータが格納されているグループの論理グループアドレス、及び、当該グループに属するページ内において当該読み出し対象のデータが格納されている記憶位置を指定するグループ内アドレスが自己に供給されたとき、前記アドレス変換テーブルに基づいて、当該論理グループアドレスに対応付けられた物理グループアドレスを特定し、特定した物理グループアドレスが示すグループに属するページ内において当該グループ内アドレスが指定している記憶位置よりユーザデータを読み出して外部に出力する読出手段を備える、
    ことを特徴とする請求項1乃至7のいずれか1項に記載の記憶装置。
  9. 前記ページは1個以上のカラムを含んでおり、
    カラムの記憶位置のグループ内アドレスは、当該カラムを含むページのグループ内での論理的位置を指定するグループ内ページアドレスと、当該ページ内での当該カラムの論理的位置を指定するカラムアドレスと、より構成されている、
    ことを特徴とする請求項1乃至8のいずれか1項に記載の記憶装置。
  10. ユーザデータを記憶するための複数のメモリブロックを含み、各々のメモリブロックが複数のグループより構成されており、各々のグループが複数のページより構成されている記憶領域を管理するためのメモリ管理方法であって、
    前記グループの前記記憶領域内での物理的位置を指定する物理グループアドレスと当該グループの論理グループアドレスとの対応付けを表す論理物理変換テーブルを記憶する論理物理変換テーブル記憶ステップと、
    前記グループのうちからユーザデータを記憶可能な状態にある空きグループを特定して、特定した空きグループの物理グループアドレスを指示する書込ポインタを記憶する書込対象グループポイントステップと、
    新たなユーザデータを書き込むグループの論理グループアドレス、当該グループに属するページ内において当該ユーザデータを書き込む記憶位置を指定するグループ内アドレス、及び、当該ユーザデータが自己に供給されたとき、当該ユーザデータを、前記書込ポインタにより指示された空きグループに属するページ内において当該グループ内アドレスが指定している記憶位置に書き込み、当該空きグループの物理グループアドレスと、供給された当該論理グループアドレスとの対応付けを表すよう前記論理物理変換テーブルを更新する書込ステップと、より構成される、
    ことを特徴とするメモリ管理方法。
  11. ユーザデータを記憶するための記憶領域を形成する複数のメモリブロックを含み、各々のメモリブロックが複数のグループより構成されており、各々のグループが複数のページより構成されている記憶装置に接続されたコンピュータを、
    前記グループの前記記憶領域内での物理的位置を指定する物理グループアドレスと当該グループの論理グループアドレスとの対応付けを表す論理物理変換テーブルを記憶する論理物理変換テーブル記憶手段と、
    前記グループのうちからユーザデータを記憶可能な状態にある空きグループを特定して、特定した空きグループの物理グループアドレスを指示する書込ポインタを記憶する書込対象グループポイント手段と、
    新たなユーザデータを書き込むグループの論理グループアドレス、当該グループに属するページ内において当該ユーザデータを書き込む記憶位置を指定するグループ内アドレス、及び、当該ユーザデータが自己に供給されたとき、当該ユーザデータを、前記書込ポインタにより指示された空きグループに属するページ内において当該グループ内アドレスが指定している記憶位置に書き込み、当該空きグループの物理グループアドレスと、供給された当該論理グループアドレスとの対応付けを表すよう前記論理物理変換テーブルを更新する書込手段と、
    して機能させるためのプログラム。
JP2004263995A 2004-09-10 2004-09-10 記憶装置、メモリ管理方法及びプログラム Expired - Fee Related JP3942612B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004263995A JP3942612B2 (ja) 2004-09-10 2004-09-10 記憶装置、メモリ管理方法及びプログラム
PCT/JP2005/017001 WO2006028283A1 (en) 2004-09-10 2005-09-08 Storage device, memory management method and program
EP05783698A EP1787202A4 (en) 2004-09-10 2005-09-08 MEMORY DEVICE, MEMORY MANAGEMENT PROCESS AND PROGRAM
US11/547,181 US20070245069A1 (en) 2004-09-10 2005-09-08 Storage Device, Memory Management Method and Program
KR1020067020537A KR100847506B1 (ko) 2004-09-10 2005-09-08 기억 장치, 메모리 관리 방법 및 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004263995A JP3942612B2 (ja) 2004-09-10 2004-09-10 記憶装置、メモリ管理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2006079434A true JP2006079434A (ja) 2006-03-23
JP3942612B2 JP3942612B2 (ja) 2007-07-11

Family

ID=36036550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004263995A Expired - Fee Related JP3942612B2 (ja) 2004-09-10 2004-09-10 記憶装置、メモリ管理方法及びプログラム

Country Status (5)

Country Link
US (1) US20070245069A1 (ja)
EP (1) EP1787202A4 (ja)
JP (1) JP3942612B2 (ja)
KR (1) KR100847506B1 (ja)
WO (1) WO2006028283A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234514A (ja) * 2007-03-23 2008-10-02 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2009110301A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2009230414A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 複数の不揮発性メモリデバイスを有する記憶装置
JP2010097563A (ja) * 2008-10-20 2010-04-30 Nec Corp ネットワークストレージシステム、ディスクアレイ装置、ホスト装置、アクセス制御方法、データアクセス方法
JP2017068804A (ja) * 2015-10-02 2017-04-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、アクセスコントローラ、および情報処理方法
JP2017068805A (ja) * 2015-10-02 2017-04-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、プロセッサ、および情報処理方法
US10635596B2 (en) 2015-10-02 2020-04-28 Sony Interactive Entertainment Inc. Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100885783B1 (ko) 2007-01-23 2009-02-26 주식회사 하이닉스반도체 플래시 메모리 장치 및 동작 방법
US7765426B2 (en) 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
KR20090026941A (ko) 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
TWI381383B (zh) * 2007-11-14 2013-01-01 Netac Technology Co Ltd 快閃記憶體的資料儲存方法
TWI408688B (zh) * 2009-10-12 2013-09-11 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
TWI421869B (zh) * 2009-10-14 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
TWI421870B (zh) * 2009-10-30 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
KR101826137B1 (ko) 2011-03-24 2018-03-22 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
KR101355892B1 (ko) * 2013-01-15 2014-01-28 한밭대학교 산학협력단 실시간 단일 메모리 동시 입출력을 위한 영상데이터 처리방법
US9727249B1 (en) * 2014-02-06 2017-08-08 SK Hynix Inc. Selection of an open block in solid state storage systems with multiple open blocks
US9778864B2 (en) * 2015-03-10 2017-10-03 SK Hynix Inc. Data storage device using non-sequential segment access and operating method thereof
TWI596476B (zh) * 2015-11-27 2017-08-21 群聯電子股份有限公司 資料程式化方法、記憶體儲存裝置及記憶體控制電路單元
US10613988B2 (en) * 2016-09-28 2020-04-07 Micro Focus Llc Purging storage partitions of databases
CN111324287A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN113196258A (zh) * 2018-12-19 2021-07-30 索尼集团公司 信息处理装置、信息处理方法和信息处理程序

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60156151A (ja) * 1983-12-23 1985-08-16 Nec Corp メモリアクセス制御装置
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
JPH10124381A (ja) * 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
JP3797649B2 (ja) * 1999-05-31 2006-07-19 シャープ株式会社 不揮発性半導体記憶装置
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US20030236746A1 (en) * 2002-06-19 2003-12-25 Turner Michael B. Check and cash dispensing machine and method
US20060143365A1 (en) * 2002-06-19 2006-06-29 Tokyo Electron Device Limited Memory device, memory managing method and program
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
JP2005115562A (ja) * 2003-10-06 2005-04-28 Media Logic:Kk フラッシュrom制御装置
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
JP2005242897A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd フラッシュディスク装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234514A (ja) * 2007-03-23 2008-10-02 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4640366B2 (ja) * 2007-03-23 2011-03-02 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR101102634B1 (ko) 2008-03-01 2012-01-04 가부시끼가이샤 도시바 메모리 시스템
WO2009110301A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8171208B2 (en) 2008-03-01 2012-05-01 Kabushiki Kaisha Toshiba Memory system
JP2009230414A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 複数の不揮発性メモリデバイスを有する記憶装置
JP2010097563A (ja) * 2008-10-20 2010-04-30 Nec Corp ネットワークストレージシステム、ディスクアレイ装置、ホスト装置、アクセス制御方法、データアクセス方法
US9104338B2 (en) 2008-10-20 2015-08-11 Nec Corporation Network storage system, disk array device, host device, access control method, and data access method
JP2017068804A (ja) * 2015-10-02 2017-04-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、アクセスコントローラ、および情報処理方法
JP2017068805A (ja) * 2015-10-02 2017-04-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、プロセッサ、および情報処理方法
US10635596B2 (en) 2015-10-02 2020-04-28 Sony Interactive Entertainment Inc. Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes
US11144464B2 (en) 2015-10-02 2021-10-12 Sony Interactive Entertainment Inc. Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor
US11907129B2 (en) 2015-10-02 2024-02-20 Sony Interactive Entertainment Inc. Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor

Also Published As

Publication number Publication date
WO2006028283A1 (en) 2006-03-16
KR20070024504A (ko) 2007-03-02
KR100847506B1 (ko) 2008-07-22
WO2006028283B1 (en) 2006-07-13
EP1787202A1 (en) 2007-05-23
JP3942612B2 (ja) 2007-07-11
EP1787202A4 (en) 2008-05-21
US20070245069A1 (en) 2007-10-18

Similar Documents

Publication Publication Date Title
JP3942612B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP3977370B2 (ja) フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
USRE46404E1 (en) Flash memory management method
JP4695801B2 (ja) 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置
EP1729304B1 (en) Space management for managing high capacity nonvolatile memory
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
EP1895418B1 (en) Nonvolatile memory device, method of writing data, and method of reading out data
US20060143365A1 (en) Memory device, memory managing method and program
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
US8296503B2 (en) Data updating and recovering methods for a non-volatile memory array
KR100370893B1 (ko) 일괄 소거형 비휘발성 메모리 장치
JPH08137634A (ja) フラッシュディスクカード
JP2005242897A (ja) フラッシュディスク装置
JPWO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP2006285600A (ja) 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
US20060062041A1 (en) Memory device, momory managing method and program
JP4308780B2 (ja) 半導体メモリ装置、メモリコントローラ及びデータ記録方法
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
KR100654344B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP2008047155A (ja) 一括消去型不揮発性メモリおよび携帯電話
KR100654343B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
WO2006093304A1 (en) Storage device, memory block managing method, and program

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051227

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070403

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100413

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100413

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees