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

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

Info

Publication number
JP2006285600A
JP2006285600A JP2005104207A JP2005104207A JP2006285600A JP 2006285600 A JP2006285600 A JP 2006285600A JP 2005104207 A JP2005104207 A JP 2005104207A JP 2005104207 A JP2005104207 A JP 2005104207A JP 2006285600 A JP2006285600 A JP 2006285600A
Authority
JP
Japan
Prior art keywords
conversion table
block
address
memory
address conversion
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
JP2005104207A
Other languages
English (en)
Inventor
Hiroshi Ippongi
寛 一本木
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 JP2005104207A priority Critical patent/JP2006285600A/ja
Priority to US11/628,373 priority patent/US20080104361A1/en
Priority to KR1020067025255A priority patent/KR100849446B1/ko
Priority to PCT/JP2006/307265 priority patent/WO2006107086A1/en
Priority to EP06731213A priority patent/EP1864223A4/en
Priority to TW095111563A priority patent/TW200643713A/zh
Publication of JP2006285600A publication Critical patent/JP2006285600A/ja
Pending legal-status Critical Current

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/10Address translation
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】 アドレス変換テーブルの変更動作中に異常が発生しても以後の読み書き動作が正常に行える記憶装置等を提供することである。
【解決手段】 フラッシュメモリ11は、ブロックの物理アドレスと論理アドレスとの対応関係を表すBPT(Block Pointer Table)を、現在のもの及び過去のものについて記憶する。コントローラ12はユーザデータを書き込む際、ユーザデータ書き込み後の新たな現在のBPTを空きブロックに書き込む場合は、当該空きブロックがBPTの格納に利用された順序、1個前のBPTの位置、前にBPTの格納に利用されていたブロックが不良ブロックであるか否か、を示す各情報を新たなBPTに含める形でBPTを更新する。次回の初期化時は、これらの情報に基づいて現在のBPTの訂正等を行い、また、これらの情報のいずれかが欠けていた場合は、残る情報に基づいて、現在のBPTの内容を特定する。
【選択図】 図1

Description

本発明は、記録媒体を用いたデータ処理システム及び記録媒体へのアクセスを行うためのプログラムを記憶したコンピュータ読み取り可能なプログラムに関する。
コンピュータ等によりアクセス(データの読み書き及び消去)可能な記録媒体として、EEPROM(Electrically Erasable/Programmable Read Only Memory)フラッシュメモリが用いられている。
フラッシュメモリは、データの消去が、所定の記憶容量の単位(一般に「ブロック」と呼ばれる)で行われる。
フラッシュメモリのうち、特にNAND型のものは、データの記憶が正常に行えない不良ブロックの発生を製造段階で十分に防止することが困難である。このため、従来より、各ブロックに割り当てられる物理アドレスとは別個の連続した論理アドレスを正常なブロックに動的に割り当て、論理アドレスとの対応関係を表すアドレス変換テーブルを作成して、アドレスが不連続となることによる外部からのアクセス手順の複雑化を回避している。
このアドレス変換テーブルは、フラッシュメモリとは別個のメモリに格納されて用いられる場合も多いものの、フラッシュメモリの使用を開始するたびにアドレス変換テーブルを新たに作成し直す煩雑さを避ける等の目的で、フラッシュメモリ自身の記憶領域内に格納される場合もある(例えば、特許文献1参照)。
特開2000−11677号公報
しかし、アドレス変換テーブルをフラッシュメモリ自身に記憶させる場合、フラッシュメモリへのアクセスを行う装置が、アドレス変換テーブルを更新する動作を行っている間に、停電などの事情により、この動作を中断し、あるいは異常な動作を始めてしまった場合、書き込まれるアドレス変換テーブルの内容も異常なものとなり、以後の読み書き動作が正常に行えなくなる危険性が高かった。
この発明は上記実状に鑑みてなされたもので、アドレス変換テーブルの変更動作中に異常が発生しても以後の読み書き動作が正常に行える記憶装置、メモリ管理装置、メモリ管理方法及びプログラムを提供することを目的とする。
上記目的を達成するため、本発明の第1の観点にかかる記憶装置は、
物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを記憶する記憶手段と、
書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記メモリブロックを構成するページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込み、当該書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記記憶手段に格納する書込手段と、を備え、
前記記憶手段は、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
前記書込手段は、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記記憶手段に格納するものである、
ことを特徴とする。
このような記憶装置によれば、過去のアドレス変換テーブルの位置を特定する情報が確保される結果、現在のアドレス変換テーブルに異常が生じていた場合も、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容を決定することが可能となる。従って、アドレス変換テーブルの変更動作中に異常が発生しても、以後の読み書き動作を正常に行える。
前記書込手段は、前記前テーブル情報に基づいて過去のアドレス変換テーブルの位置を特定し、位置を特定した当該過去のアドレス変換テーブルに基づいて、現在のアドレス変換テーブルの内容を訂正するものとすれば、現在のアドレス変換テーブルに異常が生じていた場合、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容が決定される。
前記書込手段は、アドレス変換テーブルを格納していないメモリブロックに、前記新たな現在のアドレス変換テーブルを格納する場合、当該メモリブロックが、アドレス変換テーブルを格納するメモリブロックとしての使用を開始された順序を示すブロック使用順序情報を、前記新たな現在のアドレス変換テーブルに付加して前記記憶手段に格納するものであってもよい。
このような構成を有していれば、前テーブル情報が正常に記憶されていなかった場合も、ブロック使用順序情報を用いて過去のアドレス変換テーブルを正しく特定することが可能となる。
前記書込手段は、ブロック使用順序情報に基づいて過去のアドレス変換テーブルの位置を特定し、位置を特定した当該過去のアドレス変換テーブルに基づいて、現在のアドレス変換テーブルの内容を訂正するものとすれば、現在のアドレス変換テーブルに異常が生じていて、前テーブル情報も正常に記憶されていなかった場合であっても、ブロック使用順序情報を用いて過去のアドレス変換テーブルを正しく特定された上、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容を決定する。
前記書込手段は、各ページに付された、各ページのメモリブロック内での順位に従って、アドレス変換テーブルを空きページに格納するものであってもよく、アドレス変換テーブルを格納していないメモリブロックに、前記新たな現在のアドレス変換テーブルを格納する場合、前記過去のアドレス変換テーブルを格納しているメモリブロックが不良ブロックであるか否かを示す前テーブル格納ブロックステータス情報を、前記新たな現在のアドレス変換テーブル付加して前記記憶手段に格納するものであってもよい。
このような構成を有していれば、前テーブル情報が正常に記憶されておらず、過去のアドレス変換テーブルを格納するメモリブロックが不良ブロックとなっていて、最終順位のページまでアドレス変換テーブルが書き込まれていないような場合でも、ブロック使用順序情報及び前テーブル格納ブロックステータス情報を用いて過去のアドレス変換テーブルを正しく特定することが可能となる。
前記書込手段は、前記ブロック使用順序情報及び前記前テーブル格納ブロックステータス情報に基づいて前記過去のアドレス変換テーブルの位置を特定し、位置を特定した当該過去のアドレス変換テーブルに基づいて、現在のアドレス変換テーブルの内容を訂正するものとすれば、現在のアドレス変換テーブルに異常が生じていて、前テーブル情報も正常に記憶されておらず、更に過去のアドレス変換テーブルを格納するメモリブロックが不良ブロックとなっていて、最終順位のページまでアドレス変換テーブルが書き込まれていないような場合であっても、ブロック使用順序情報及び前テーブル格納ブロックステータス情報を用いて過去のアドレス変換テーブルを正しく特定された上、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容を決定する。
また、本発明の第2の観点にかかるメモリ管理装置は、
物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含むメモリに、書き込み対象のユーザデータを格納し、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを格納するメモリ管理装置であって、
書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記メモリブロックを構成するページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込むユーザデータ書込手段と、
前記ユーザデータ書込手段による書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記メモリに格納するテーブル書込手段と、を備え、
前記メモリは、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
前記テーブル書込手段は、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記メモリに格納するものである、
ことを特徴とする。
このような記憶装置によれば、過去のアドレス変換テーブルの位置を特定する情報が確保される結果、現在のアドレス変換テーブルに異常が生じていた場合も、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容を決定することが可能となる。従って、アドレス変換テーブルの変更動作中に異常が発生しても、以後の読み書き動作を正常に行える。
また、本発明の第3の観点にかかるメモリ管理方法は、
物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含むメモリに、書き込み対象のユーザデータを格納し、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを格納するメモリ管理方法であって、
書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記メモリブロックを構成するページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込むユーザデータ書込ステップと、
前記ユーザデータ書込ステップでの書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記メモリに格納するテーブル書込ステップと、より構成されており、
前記メモリは、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
前記テーブル書込ステップでは、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記メモリに格納する、
ことを特徴とする。
このようなメモリ管理方法によれば、過去のアドレス変換テーブルの位置を特定する情報が確保される結果、現在のアドレス変換テーブルに異常が生じていた場合も、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容を決定することが可能となる。従って、アドレス変換テーブルの変更動作中に異常が発生しても、以後の読み書き動作を正常に行える。
また、本発明の第4の観点にかかるプログラムは、
コンピュータを、
物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含むメモリに、書き込み対象のユーザデータを格納し、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを格納するメモリ管理装置であって、
書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記ページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込むユーザデータ書込手段と、
前記ユーザデータ書込手段による書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記メモリに格納するテーブル書込手段と、を備え、
前記メモリは、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
前記テーブル書込手段は、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記メモリに格納するものである、
ことを特徴とするメモリ管理装置として機能させるためのものであることを特徴とする。
このようなプログラムを実行するコンピュータによれば、過去のアドレス変換テーブルの位置を特定する情報が確保される結果、現在のアドレス変換テーブルに異常が生じていた場合も、現在及び過去のアドレス変換テーブルを用いて、現在のアドレス変換テーブルの正しい内容を決定することが可能となる。従って、アドレス変換テーブルの変更動作中に異常が発生しても、以後の読み書き動作を正常に行える。
この発明によれば、アドレス変換テーブルの変更動作中に異常が発生しても以後の読み書き動作が正常に行える記憶装置、メモリ管理装置、メモリ管理方法及びプログラムが実現される。
以下、この発明の実施の形態を、フラッシュメモリを備えた記憶システムを例とし、図面を参照して説明する。
図1は、この発明の実施の形態にかかる記憶システムの物理的構成を示すブロック図である。図示するように、この記憶システムは、メモリユニット1と、コンピュータ2とから構成されている。
メモリユニット1は、コンピュータ2に接続される。メモリユニット1とコンピュータ2との接続は固定的に行われていてもよいし、あるいは、例えばコンピュータ2がPC Card Standardに準拠したバスを中継するためのスロットを備えるものとして、メモリユニット1がこのスロットを介し、コンピュータ2に着脱可能に装着されるようになっていてもよい。
メモリユニット1は、フラッシュメモリ11及びコントローラ12からなる。
フラッシュメモリ11は、コントローラ12が行うアクセスに応答し、コントローラ12から供給されたデータの記憶と、記憶しているデータのコントローラ12への供給と、記憶しているデータの消去とを行う。
フラッシュメモリ11が有する記憶領域は、例えば図2に示すように8192個のページからなり、各々のページは528バイトの記憶容量を有する。ページには連続的に0から8191までのページアドレスが付与され、各ページに含まれるメモリセルには、連続的に0から527までの番地が与えられている。
各ページは、先頭から32ページ単位で1つのブロックを構成する。各ブロックは16キロバイトの記憶容量を有し、記憶領域全体は、256個のブロックから構成され、先頭から連続的に0から255までの物理ブロックアドレスを与えられている。
また、各ページは、図示するように、先頭から512バイトの領域を占めるデータ領域と、末尾16バイトを占める冗長部とから構成される。
データ領域には、ユーザデータ(コンピュータ2から供給され書き込まれるデータや、コンピュータ2に供給される対象となるデータ)が格納され、冗長部には、ユーザデータの内容が破壊されていないことを確認するための誤り訂正コード等が格納される。また、ブロックが後発的に、データの正常な読み書きのできない状態になったとき、このようなブロック(後発不良ブロック)に属するページの冗長部には、コントローラ12の後述の処理に従い、当該ブロックが後発不良ブロックであることを示すデータである不良ブロックフラグが格納される。
また、各々のブロックに属する各ページの冗長部には、そのブロックに割り当てられている論理ブロックアドレスの値が格納される。
論理ブロックアドレスは、フラッシュメモリ11が後述する動作により読み書きされるときに、コントローラ12により、データ読み書きの単位として認識される単位である。論理ブロックアドレスが割り当てられているブロックの総量は、フラッシュメモリ11が物理的に備えるブロックの総量より小さい所定量、例えば250個である。
また、データ領域は、BPT(Block Pointer Table)の格納にも用いられる。BPTは、後述するコントローラ12が行う処理に従って格納されるデータであり、例えば図3に示すように、フラッシュメモリ11の各々のブロックについて、当該ブロックの論理ブロックアドレス及び物理ブロックアドレスを互いに対応付けて格納するテーブルからなっている。なお、BPTが格納されているページの冗長部には、BPTの内容が破壊されていないことを確認するための誤り訂正コード等が格納される。
コントローラ12は、BPTの内容が、実際のブロックの論理ブロックアドレス及び物理ブロックアドレスの対応関係との不一致を生じるたびに、後述の処理を行うことにより、正しい対応関係を示す新たなBPTを作成してフラッシュメモリ11のデータ領域に格納する。
なお、コントローラ12は、BPTが格納されるページを含むブロック(以下、BPTブロックと呼ぶ)には、ユーザデータを格納しない。また、BPTが格納されるページからなるブロックの論理ブロックアドレスの値がとり得る範囲と、また、ユーザデータが格納されるページからなるブロックの論理ブロックアドレスの値がとり得る範囲とは、互いに重複しないものとする。
BPT1個はフラッシュメモリ11のデータ領域1ページ分以内の記憶容量を有しており、1個のBPTは、1個のページのデータ領域内に格納される。
メモリユニット1が製造され出荷される時に、フラッシュメモリ11には自身に割り当てられる論理ブロックアドレスより大きな値が格納されたページ冗長部と書込みカウンタの初期値と前ページポインタの初期値を持つ初期BPTページを先頭のページに持つ物理ブロックが1つ作成される。またユーザーがフラッシュメモリ11の内容を全て消去しメモリユニット1を前記出荷時と同様な状態とする操作をした場合も、同様な初期BPTページを先頭のページに持つ物理ブロックが1つ作成される。
その後、コントローラは新たなBPTを作成するたびに、順次、当該ブロック内の後続のページへと格納する。つまり、当該ブロック内でBPTを格納していないページのうちの先頭のページへと格納する。
一方、コントローラ12は、一部が正しい対応関係を示さなくなった古いBPTも直ちには消去せず、新しいBPT及び古いBPTを、あわせて最大で1ブロック中のページ数と同数(つまり、図2に示す記憶領域を有するフラッシュメモリ11では、32個)まで、データ領域に格納された状態に保つ。
BPTは、各々の論理ブロックアドレスに対応付けられた、番地の連続する複数の記憶領域を備えている。1個の論理ブロックアドレスに対応付けられた記憶領域には、当該論理ブロックアドレスに対応付けられた物理ブロックアドレスが格納される。
具体的には、例えば図3に示すように、番地が(2・n)及び{(2・n)+1}(nは0以上255以下の整数)である合計2バイトの記憶領域が論理ブロックアドレスnに対応付けられているとして、番地1の記憶領域に値”005Ah”が格納されているとする。この場合は、物理ブロックアドレスが005Ahであるブロックには、論理ブロックアドレスとして0001hが対応付けられている。
ただし、この記憶領域に格納されている内容が所定の値を表す場合(例えば、図示するように、値“FFFFh”を表す場合)は、その値を格納している記憶領域に対応付けられている論理ブロックアドレスには物理ブロックアドレスが対応付けられていないことを表す。
また、ブロックの先頭のページに格納されているBPT、つまり、作成された順序が自己の1つ前であるBPT(以下、1個前のBPTと呼ぶ)が自己と共通のブロック内に格納されていないBPTは、前ページポインタ、前ブロック書込失敗フラグ、及び、書込カウンタを格納する。
コントローラ12は、新たなBPTを作成する時にBPTブロック内でBPTを格納しているページがブロックの最終ページであった場合は、空きブロック内の先頭のページに新たなBPTと前ページポインタ、前ブロック書込失敗フラグ及び書込カウンタを格納した新たなBPTブロックを作成する。
前ページポインタは、当該前ページポインタが格納されているBPTの1個前のBPTが格納されているページの物理ページアドレス(すなわち、当該ページが含まれるブロックの物理ブロックアドレスと、当該ブロック内での当該ページのページアドレスとの組)を示す。前ページポインタの値は、例えば“FFFFh”である。
前ブロック書込失敗フラグは、当該前ブロック書込失敗フラグが格納されているBPTの1個前のBPTが格納されているブロック(以下、前ブロックと呼ぶ)が後発不良ブロックであるか否かを示すフラグである。
前ブロック書込失敗フラグの初期値は例えば“Fh”とし、前ブロックの書込が正しく行われた場合には変化せず、前ブロックの書込が失敗した場合には例えば“0h”に変化するものとする。
書込カウンタは、当該書込カウンタが格納されているBPTを格納するブロックが、BPTを格納するブロックとして利用を開始された順序を示す。書込カウンタの初期値は任意である(例えば0であればよい)。また、書込カウンタの値はサイクリックに割り当てられてもよい。つまり、過去最も新しく格納された書込カウンタの値が所定の値(例えば255)であるとき、次に格納される新たな書込カウンタの値が初期値に戻るようになっていてもよい。
フラッシュメモリ11は、メモリユニット1のコントローラ12より、特定のブロックのデータを消去するよう指示されると、当該ブロックに含まれるすべてのメモリセルの記憶内容をリセットする(例えば、フラッシュメモリ11がNAND型のフラッシュメモリからなる場合は、各メモリセルの記憶値を「1」とする)。
フラッシュメモリ11は、工場出荷時に全てのブロックについて当該ブロックが正しく読み書きできるかをチェックされ、正しく読み書きできないブロックに含まれる各ページの冗長部に当該ブロックが使用できないことを示すフラグ(先発不良ブロック)が書込まれ、当該ブロックの使用を禁止する。またフラッシュメモリ11を使用中に当該ブロックが正しく読み書き出来なくなった場合にも、正しく読み書きできないブロックに含まれる各ページの冗長部に当該ブロックが使用できないことを示すフラグ(後発不良ブロック)が書込まれ、以降当該ブロックへのアクセスは禁止される。
メモリユニット1は、工場出荷時にフラッシュメモリ11の論理ブロックアドレスが割り当てられるブロックでページの冗長部に出荷時に不良であると判断された不良ブロックフラグを含むブロック以外の正常ブロックのページが初期化(例えば全ビットが論理値“1”)され、フラッシュメモリ11に1個のBPTページを含むBPTブロックが作成される。このBPTページは論理−物理変換テーブルが全て初期状態(値“FFFFh”)、前ページポインタが初期値“FFFFh”、前ブロック書込み失敗フラグが初期値“Fh”および書込みカウンタが初期値“0”に設定され更に冗長部にフラッシュメモリが物理的に備えるブロックの総数より大きい値の論理ブロックアドレス(例えば“100h”)が格納される。
コントローラ12は、図1に示すように、CPU(Central Processing Unit)121と、ROM(Read Only Memory)122と、RAM(Random Access Memory)123とを備えている。
CPU121は、ROM122、RAM123及びフラッシュメモリ11に接続されており、また、コンピュータ2に接続されている。CPU121とコンピュータ2との接続は、固定的な接続でもよいし、あるいは、例えばコンピュータ2が備える上述のスロットを介して着脱可能に行われるようになっていてもよい。
CPU121は、コントローラ12の製造者等によって予めROM122に格納されているプログラムの処理に従って、後述する処理を行う。
そして、CPU121は、アクセス装置を構成するコンピュータ2から供給される命令を取得すると、その命令を実行する。CPU121が実行する命令には、フラッシュメモリ11にアクセスする命令が含まれる。
RAM123は、例えばSRAM(Static RAM)等より構成されており、CPU121の作業領域となる記憶領域と、退避用メモリ領域とを提供する。退避用メモリ領域は、後述するデータ書き込みの処理において、書き込みを行う対象のページを含むブロックに格納されているデータの1ページ分を一時的に格納する(退避する)ための記憶領域である。退避する対象のデータとしては、例えばユーザデータ及びBPTがある。
また、RAM123は、CPU121が作成するBSI(Block Search Index)を格納する。BSIは、フラッシュメモリ11の各ブロックのうちどれが空きブロックであるかを特定する情報を格納する。BSIは、コントローラ12の処理に従って作成及び更新され、RAM123に格納される。
BSIは、フラッシュメモリ11の各ブロックのいずれが空きブロック(すなわち、リセットされた状態にあるブロック)であるかを表す情報を格納する。
BSIは、この記憶システムが起動する度にコントローラ12の後述する処理に従って作成され、RAM123に格納される。
フラッシュメモリ11のブロックの総数が256個であるときのBSIの構造の一例を図4に示す。図示するように、BSIは、32バイトのデータからなり、先頭のビットから順に、ブロック0からブロック255に1対1に対応し、対応するブロックが空きブロックであるとき“1”、空きブロックでないとき“0”を格納する。
コンピュータ2はパーソナルコンピュータ等からなり、OS及びドライバを表すプログラムデータを記憶し、電源投入後、OSを実行する。そしてOSの処理に従ってドライバを起動する。
ドライバの処理を行うコンピュータ2は、コントローラ12に上述の命令を供給したり、フラッシュメモリ11に書き込む対象のデータを供給して、CPU121に、フラッシュメモリ11へのアクセスを行わせる。そして、自らが供給した命令に従ってCPU121がフラッシュメモリ11から読み出して自らに供給したデータを、CPU121より取得する。
(動作)
次に、この記憶システムの動作を、図5−図10を参照して説明する。
図5は、初期処理を示すフローチャートである。
図6は、データ書き込みの処理を示すフローチャートである。
図7は、旧ユーザデータ読み込みの処理を示すフローチャートである。
図8及び図9は、BPT更新の処理を示すフローチャートである。
図10は、旧BPT消去の処理を示すフローチャートである。
(初期処理)
この記憶システムが起動すると、メモリユニット1のコントローラ12のCPU121は、図5に示す初期処理を実行する。
初期処理を開始すると、CPU121は、RAM123の記憶領域のうち、BPT及びBSIを格納する部分の初期化を行う(図5、ステップS001)。具体的には、例えばRAM123の記憶領域のうちBPT又はBSIを格納する部分のビットの論理値を、すべて”0”とすればよい。
次に、CPU121は、フラッシュメモリ11の不良ブロックでない各ブロックの先頭ページのデータ領域内の書込カウンタを検索する等して、最新のBPTが格納されているBPTブロックを特定する(ステップS002)。
次に、CPU121は、ステップS002で特定したブロック内の各ページのうち、データ領域にBPTが書き込まれている最も後方のページを特定し、特定したページのデータ領域からBPTを読み出し、また、特定したページの冗長部から誤り訂正符号を読み出して、RAM123の記憶領域に格納する(ステップS003)。
次に、CPU121は、フラッシュメモリ11の記憶領域を検索し、ステップS003で読み出したBPT(以下、現在のBPTと呼ぶ)の1個前のBPTを特定することにより、当該1個前のBPTがフラッシュメモリ11に格納されているか否かを判別する(ステップS004)。
そして、格納されていないと判別すれば(ステップS004;NO)、RAM123に記憶されている現在のBPTに含まれている訂正可能な誤りを、ステップS003で読み出した誤り訂正符号を用いて公知の手法により訂正した上、処理をステップS008に移す。
現在のBPTの1個前のBPTは、具体的には、以下(a)及び(b)として示す基準に合致するBPTである。
(a) 現在のBPTがブロックの先頭のページに格納されているものでない場合は、現在のBPTが格納されているページよりページアドレスが1つ小さなページに格納されている古いBPTが、現在のBPTの1個前のBPTである。
(b) 現在のBPTがブロックの先頭のページに格納されている場合は、現在のBPTが有効な値の前ページポインタを含んでおり、この前ページポインタが示す物理ブロックがBPTを含んでいればこの前ページポインタが示す物理ページアドレスを割り当てられたページに格納されている古いBPTが現在のBPTの1個前のBPTである。現在のBPTが有効な値の前ページポインタを含んでいないか前ページポインタが示す物理ブロックがBPTを含んでいなければ1個前のBPTがフラッシュメモリ11に格納されていない場合である。
一方、現在のBPTの1個前のBPTが特定され、当該1個前のBPTがフラッシュメモリ11に格納されていると判別すると(ステップS004;YES)、CPU121は、当該1個前のBPTと、RAM123に記憶されている現在のBPTとを検索して、同一の論理ブロックアドレスに対応付けられている物理ブロックアドレスがこれら2個のBPTの間で互いに異なっている箇所を、それぞれのBPT内で(論理ブロックアドレス1個につき合計2箇所)特定する(ステップS005)。
次に、CPU121は、物理ブロックアドレスとの対応関係がこれら2個のBPT間で異なっていると特定されたそれぞれの論理ブロックアドレスにつき、これら2個のBPTが対応付けている2個の物理ブロックアドレスのいずれが正しいかを特定するため、これら2個の物理ブロックアドレスが示す2個のブロックにアクセスし、データ領域にユーザデータが格納されていて、且つ、正しい論理ブロックアドレスが冗長部に書き込まれている方のブロックを特定する(ステップS006)。
次に、CPU121は、現在のBPTが、ステップS006で特定したブロックを示す物理ブロックアドレスを正しい論理ブロックアドレスに対応付けたものとなるように、RAM123に記憶されている現在のBPTを書き換えて(ステップS007)、処理をステップS008に移す。
ただし、ステップS007では、ステップS006で2個のブロックのいずれもデータ領域にユーザデータを格納しておらず、または正しい論理ブロックアドレスが冗長部に格納していなかった、という論理ブロックアドレスについては、当該論理ブロックアドレスに対応付けるべき物理ブロックアドレスがない旨を示す上述の所定の値を対応付けるように、現在のBPTを書き換え、当該2個の物理ブロックの全ページの内容を消去(フラッシュイレース)する。
ステップS008でCPU121は、BSIを作成する。具体的には、CPU121は、フラッシュメモリ11の、各ブロックのページの冗長部に格納されているデータを順次に(例えば、物理ブロックアドレスが先頭のブロックから末尾のブロックまで1ブロックずつ順次に)読み出す。一方、1個のブロックからデータを読み出す毎に、読み出したデータに基づき、データを読み出した当該ブロックが空きブロックであるか否かを判別する(具体的には、例えば、読み出したページの冗長部に不良ブロックである事を示す不良ブロックフラグが格納されていなく、且つ、論理ブロックアドレスが格納されていないか否かを判別すればよい)。そして、この判別の結果を、RAM123が記憶するBSIに追加する(例えば、当該ブロックが空きブロックであれば、BSI内で当該ブロックに対応するビットの値を“1”とし、空きブロックでなければ“0”のままとする)。
そして、BSIの作成が完了すると、この記憶システムは初期処理を終了する。
以上説明した初期処理により、現在のBPTがRAM123の記憶領域に転記され、正しい内容となるように更新され、また、BSIが作成される。
(データ読み出しの処理)
初期処理が終了すると、CPU121は、コンピュータ2より、フラッシュメモリ11へのアクセスの指示を受け付ける。
そして、コンピュータ2が、ユーザデータの読み出しを指示する命令と、読み出す対象のページを示すための論理ブロックアドレス及びページアドレスとをコントローラ12に供給すると、コントローラ12のCPU121は、供給された論理ブロックアドレスをキーとしてBPTを検索し、この論理ブロックアドレスに対応付けられた物理ブロックアドレスを索出する。CPU121は、索出した物理ブロックアドレスと、コンピュータ2より供給されたページアドレスとより特定されるページよりデータを読み出して、コンピュータ2に供給する。
この結果、フラッシュメモリ11よりデータが読み出され、コンピュータ2へと供給される。
なお、フラッシュメモリ11の記憶領域がMS−DOS(登録商標)のファイルシステムに従ったものである場合、フラッシュメモリ11は、例えばディレクトリ及びFAT(File Allocation Table)を予め記憶していればよい。そしてコンピュータ2は、ユーザデータの読み出しに先立って、まずディレクトリ及びFATをCPU121に読み出させてこれらを取得し、取得したディレクトリ及びFATに基づいて、読み出す対象のページのページアドレス及び当該ページが属するブロックの論理ブロックアドレスを特定するようにすればよい。この場合、例えば、ディレクトリ及びFATが記憶されているブロックには、所定の論理ブロックアドレスが割り当てられていればよい。
(データ書き込みの処理)
また、フラッシュメモリ11へのデータの書き込みを行う場合、まず、コンピュータ2はコントローラ12に、フラッシュメモリ11へのデータの書き込みを指示する命令と、書き込む対象のファイルに含まれるデータを書き込むページの論理ブロックアドレス及びページアドレスとを供給する。
なお、フラッシュメモリ11の記憶領域がMS−DOSのファイルシステムに従ったものであって、ディレクトリ及びFATを予め記憶している場合、コンピュータ2は、例えば、メモリユニット1よりまずディレクトリ及びFATを取得し、これらに基づき、データが格納されていないページのページアドレス及び論理ブロックアドレスを特定して、当該論理ブロックアドレスが登録された状態へとこれらのディレクトリあるいはFATを更新した上、フラッシュメモリ11へと書き戻すようにしてもよい。
コンピュータ2より、データの書き込みを指示する命令と、論理ブロックアドレス及びページアドレスとを供給されると、メモリユニット1はまず、指示された書込みが上書きか新規書込みかをチェックするため旧ユーザデータ読み込みの処理を行う(図6、ステップS100)。
旧ユーザデータ読み込みの処理において、CPU121はコンピュータ2から供給された論理ブロックアドレスをキーとしてRAM123にあるBPTを検索する。BPTに論理ブロックアドレスが存在している場合は旧データの上書きと判断し論理ブロックアドレスに対応する物理ブロックアドレスを特定する。
図8及び図9に詳細を示すBPT更新の処理を開始すると、まず、CPU121は、新たにユーザデータを書き込むための1個の空きブロックの物理ブロックアドレスを検索する(図8、ステップS201)。そして、CPU121は、空きブロックが索出されたか否かを判別し(ステップS202)、索出されなかったと判別すると(ステップS202;NO)、CPU121は、空きブロックがなく書き込みが行えないと判断して、データ書き込みの処理を異常終了する。
一方、空きブロックが索出されたと判別すると、CPU121は、索出された空きブロックが以後は空きブロックではない旨を示すようにBSIの内容を更新し(ステップS203)、また、索出された空きブロックの物理ブロックアドレスが、コンピュータ2よりデータの書込みを指示する命令とともに供給された論理ブロックアドレスに対応付けられるように、RAM123が記憶するBPTを更新する(ステップS204)。
次にCPU121は、更新前の現在のBPTを記憶しているブロック内に、BPTがまだ書き込まれていない空きページがあるか否かを判別する(ステップS205)。そして、あると判別すると(ステップS205;YES)、更新前の現在のBPTを記憶しているページに後続する空きページのデータ領域に、RAM123に記憶されている更新後の現在のBPTを書き込み、また、更新後の現在のBPTの誤り訂正符号を生成して、この誤り訂正符号を当該ページの冗長部に書き込んで(ステップS206)、処理をステップS211に移す。
一方、空きページがないとステップS205で判別すると(ステップS205;NO)、CPU121は、新たにBPTを書き込むための1個の空きブロックの物理ブロックアドレスを検索する(ステップS207)。そして、CPU121は、空きブロックが索出されたか否かを判別し(ステップS208)、索出されたと判別すると(ステップS208;YES)、ステップS203と同様にBSIの内容を更新して図9に示すステップS209へと処理を移す。一方、索出されなかったと判別すると(ステップS208;NO)、空きブロックがなくBPTの書き込みが行えないと判断して、データ書き込みの処理を異常終了する。
ステップS209でCPU121は、更新前の現在のBPTの物理ページアドレスを特定する。また、更新前の現在のBPTを記憶しているブロックの先頭のページに格納されている書込カウンタを読み出す。
次に、CPU121は、ステップS207で索出された空きブロックの先頭のページのデータ領域に、RAM123に記憶されている更新後の現在のBPTを書き込む(ステップS210)。また、当該データ領域には、ステップS209で特定した物理ページアドレスを、新たな前ページフラグとして書き込み、また、ステップS209で読み出した書込カウンタをブロック1個分インクリメントした値を、新たな書込カウンタとして書き込む。また、ステップS210でCPU121は、更新後の現在のBPTの誤り訂正符号を生成して、この誤り訂正符号を、更新後の現在のBPTを書き込むページの冗長部に書き込む。
ステップS211でCPU121は、ステップS206又はS210でBPTを書き込んだ後フラッシュメモリ11の書込み終了信号を受取り、フラッシュメモリ11のステータスを読み出す事によって、ステップS210での書き込みが正常に行われたか否かを判別する(ステップS211)。そして、正常に行われていると判別すると(ステップS211;YES)、新ユーザデータ書き込みの処理に移る(図6、ステップS300)。
一方、正常に行われていないとステップS211で判別すると(ステップS211;NO)、CPU121は、ステップS206、S210又は後述するS214での書き込みが正常に行われなかったブロックが後発不良ブロックになったものとして、当該ブロック内のページの冗長部に不良ブロックフラグを書き込む(ステップS212)。
そして、更新後の現在のBPTの書き込みを再度試みるため、ステップS207及びS208の処理と実質的に同一の処理を行い(ステップS213)、空きブロックが索出されなければデータ書き込みの処理を異常終了し(ステップS213;NO)、索出されれば(ステップS213;YES)、ステップS210の処理と実質的に同一の処理を行うことにより、更新後の現在のBPT、前ページフラグ、書込カウンタ及び誤り訂正符号の書き込みを行う(ステップS214)。
ユーザーデータの書き込みは例えば特願平11−112222(特開2000−305839)に開示されている手法により行われる。
メモリユニット1はコンピュータ2から1ページ分のデータとデータを書き込む論理ブロックアドレス及びページアドレスを受け取りRAM123へ保管する。次にCPU121は、更新後のBPTを検索し論理ブロックアドレスに対応した書き込み対象物理ブロックアドレスを特定し書き込み対象物理ページアドレスを最初のページに設定する。次にCPU121はステップS100で上書きと判断され旧物理ブロックが特定されているか判別する。
旧物理ブロックが特定していない(新規書き込み)場合は、論理ページアドレスを書き込み対象物理ページアドレスに設定し書き込み対象物理ページアドレスが指示するフラッシュメモリ11のページにRAM123に保管されている1ページ分のデータと論理ブロックアドレスを書き込む。
旧物理ブロックが特定している場合は、コンピュータ2からデータを書き込む論理ページアドレスが書き込み対象物理ページアドレスと一致するかを判別し、一致しない場合は旧物理ブロックのページアドレスが示すページの内容を対象物理ページアドレスが示すページにコピーする。その後対象物理ページアドレスを次のページに設定しデータを書き込む論理ページアドレスが書き込み対象物理ページアドレスと一致するまで同様のコピー動作を繰り返す。一致した場合は書き込み対象物理ページアドレスが指示するフラッシュメモリ11のページにRAM123に保管されている1ページ分のデータと論理ブロックアドレスを書き込む。
次にCPU121は後続のページがあるか否か判別し、ある場合はコンピュータ2から1ページ分のデータをRAM123に受取り書き込み対象物理ページアドレスを次のページに設定してフラッシュメモリ11のページにRAM123に保管されている1ページ分のデータと論理ブロックアドレスを書き込む。無い場合は書き込み対象物理ページアドレスがブロックの最後のページになるまで旧物理ブロックのページからのコピーを継続し、書き込み対象物理ページアドレスがブロックの最後のページであるページの書き込みが終了後旧物理ブロックを消去する。
ユーザーデータの書き込み後CPU121は旧BPT消去の処理に移る(ステップS500)。
図10に詳細を示す旧BPT消去の処理に移ると、CPU121はまず、ステップS205で、更新前の現在のBPTを記憶しているブロック内に空きページがあると判別したかを判別する(図10、ステップS501)。そして、あると判別していた場合は、データ書き込みの処理全体を終了する。一方、ないと判別していた場合、CPU121は、更新前の現在のBPTが格納されているブロックをフラッシュイレースし、データを消去したブロックに属するカラムの冗長部が、空きブロックである事をあらわす初期値となるようにする(ステップS502)。そしてBSIにもアクセスし、ステップS502でデータを消去されたブロックが空きブロックであることを表すようにBSIの内容を書き換え(ステップS503)、データ書き込みの処理全体を終える。
以上説明したこの記憶システムは、正常な動作を行っている限りにおいて、BPTを格納するブロックに、前ページポインタ及び書込カウンタを記録する。また、この記憶システムは過去のBPTも引き続き記憶する。
そして、現在のBPTやユーザーデータが書き込み途中の電源断などでフラッシュメモリ11に正常に記憶されなかった場合は、前ページポインタを用いて1個前のBPTを特定した上、現在及び1個前のBPTを用いて、BPTの正しい内容を決定する。また、最も新しく作成されたBPTが大幅に破壊されている等の原因で現在のBPTとしてコントローラ12により特定されない場合は、BPTとして正常な内容を有している最新のBPTが、現在のBPTとして特定される。
従って、ユーザーデータの書き込み中やアドレス変換テーブルの変更動作中に異常が発生しても、この記憶システムは以後の読み書き動作を正常に行える。
なお、この記憶システムの構成は、上述のものに限られない。
例えば、フラッシュメモリ11の記憶領域のブロックの数、1ブロック当たりのページの数、各ページの記憶容量、データ領域及び冗長部の記憶容量は、いずれも任意である。また、フラッシュメモリ11は、EEPROMから構成されるものである必要はなく、コンピュータにより読み書き可能な任意の記憶装置であってよい。
また、コントローラ12は、前ページポインタ、書込カウンタ又は前ブロック書込失敗フラグを用いた1個前のBPTの特定が行えない場合、過去のBPTのうちいずれかを、任意の基準に従い、1個前のBPTとして特定するようにしてもよい。
以上、この発明の実施の形態を説明したが、この発明の記憶装置及びメモリ管理装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、フラッシュメモリ11に接続されるパーソナルコンピュータに上述のコントローラ12及びコンピュータ2の動作を実行するためのプログラムを格納した媒体(フレキシブルディスク、CD−ROM等)から該プログラムをインストールすることにより、上述の処理を実行する記憶システムを構成することができる。
また、例えば、通信ネットワークの掲示板(BBS)に該プログラムをアップロードし、これを通信ネットワークを介して配信してもよい。そして、該プログラムを起動し、OSの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
なお、OSが処理の一部を分担する場合、あるいは、OSが本願発明の1つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
本発明の実施の形態にかかる記憶システムの構成を示すブロック図である。 フラッシュメモリの記憶領域の論理的構造を模式的に示す図である。 BPTのデータ構造を模式的に示す図である。 BSIのデータ構造を模式的に示す図である。 初期処理の手順を示すフローチャートである。 データ書き込みの処理を示すフローチャートである。 旧ユーザデータ読み込みの処理を示すフローチャートである。 BPT更新の処理を示すフローチャートである。 BPT更新の処理を示すフローチャートの続きである。 旧BPT消去の処理を示すフローチャートである。
符号の説明
1 メモリユニット
11 フラッシュメモリ
12 コントローラ
121 CPU
122 ROM
123 RAM
2 コンピュータ

Claims (9)

  1. 物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを記憶する記憶手段と、
    書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記メモリブロックを構成するページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込み、当該書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記記憶手段に格納する書込手段と、を備え、
    前記記憶手段は、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
    前記書込手段は、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記記憶手段に格納するものである、
    ことを特徴とする記憶装置。
  2. 前記書込手段は、前記前テーブル情報に基づいて過去のアドレス変換テーブルの位置を特定し、位置を特定した当該過去のアドレス変換テーブルに基づいて、現在のアドレス変換テーブルの内容を訂正する、
    ことを特徴とする請求項1に記載の記憶装置。
  3. 前記書込手段は、アドレス変換テーブルを格納していないメモリブロックに、前記新たな現在のアドレス変換テーブルを格納する場合、当該メモリブロックが、アドレス変換テーブルを格納するメモリブロックとしての使用を開始された順序を示すブロック使用順序情報を、前記新たな現在のアドレス変換テーブルに付加して前記記憶手段に格納するものである、
    ことを特徴とする請求項1又は2に記載の記憶装置。
  4. 前記書込手段は、ブロック使用順序情報に基づいて過去のアドレス変換テーブルの位置を特定し、位置を特定した当該過去のアドレス変換テーブルに基づいて、現在のアドレス変換テーブルの内容を訂正する、
    ことを特徴とする請求項3に記載の記憶装置。
  5. 前記書込手段は、各ページに付された、各ページのメモリブロック内での順位に従って、アドレス変換テーブルを空きページに格納するものであり、アドレス変換テーブルを格納していないメモリブロックに、前記新たな現在のアドレス変換テーブルを格納する場合、前記過去のアドレス変換テーブルを格納しているメモリブロックの位置を示す前テーブル格納ブロック情報を、前記新たな現在のアドレス変換テーブル付加して前記記憶手段に格納するものである、
    ことを特徴とする請求項3又は4に記載の記憶装置。
  6. 前記書込手段は、前記ブロック使用順序情報及び前記前テーブル格納ブロック情報に基づいて前記過去のアドレス変換テーブルの位置を特定し、位置を特定した当該過去のアドレス変換テーブルに基づいて、現在のアドレス変換テーブルの内容を訂正する、
    ことを特徴とする請求項5に記載の記憶装置。
  7. 物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含むメモリに、書き込み対象のユーザデータを格納し、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを格納するメモリ管理装置であって、
    書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記メモリブロックを構成するページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込むユーザデータ書込手段と、
    前記ユーザデータ書込手段による書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記メモリに格納するテーブル書込手段と、を備え、
    前記メモリは、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
    前記テーブル書込手段は、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記メモリに格納するものである、
    ことを特徴とするメモリ管理装置。
  8. 物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含むメモリに、書き込み対象のユーザデータを格納し、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを格納するメモリ管理方法であって、
    書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記ページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込むユーザデータ書込ステップと、
    前記ユーザデータ書込ステップでの書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記メモリに格納するテーブル書込ステップと、より構成されており、
    前記メモリは、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
    前記テーブル書込ステップでは、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記メモリに格納する、
    ことを特徴とするメモリ管理方法。
  9. コンピュータを、
    物理アドレスを割り当てられた、ユーザデータを記憶するための複数のメモリブロックを含むメモリに、書き込み対象のユーザデータを格納し、各々の前記メモリブロックの物理アドレス及び論理アドレスの対応関係を表す現在のアドレス変換テーブルを格納するメモリ管理装置であって、
    書き込み対象のユーザデータ及び論理アドレスが自己に供給されたとき、前記メモリブロックを構成するページのうちからユーザデータを記憶可能な状態にある空きページを特定して、当該書き込み対象のデータを、当該空きページに書き込むユーザデータ書込手段と、
    前記ユーザデータ書込手段による書き込み後の各メモリブロックの物理アドレスと論理アドレスとの対応付けを表す新たな現在のアドレス変換テーブルを前記メモリに格納するテーブル書込手段と、を備え、
    前記メモリは、新たな現在のアドレス変換テーブルを格納される直前まで現在のアドレス変換テーブルであった過去のアドレス変換テーブルを引き続き記憶しており、
    前記テーブル書込手段は、前記新たな現在のアドレス変換テーブルに、前記過去のアドレス変換テーブルが記憶されているページを示す前テーブル情報を付加して前記メモリに格納するものである、
    ことを特徴とするメモリ管理装置として機能させるためのプログラム。
JP2005104207A 2005-03-31 2005-03-31 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム Pending JP2006285600A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2005104207A JP2006285600A (ja) 2005-03-31 2005-03-31 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
US11/628,373 US20080104361A1 (en) 2005-03-31 2006-03-30 Storage Device, Memory Managing Apparatus, Memory Managing Method, and Program
KR1020067025255A KR100849446B1 (ko) 2005-03-31 2006-03-30 기억 장치, 메모리 관리 장치, 메모리 관리 방법, 및 컴퓨터-판독가능한 기록 매체
PCT/JP2006/307265 WO2006107086A1 (en) 2005-03-31 2006-03-30 Storage device, memory managing apparatus, memory managing method, and program
EP06731213A EP1864223A4 (en) 2005-03-31 2006-03-30 MEMORY AND ITS, DEVICE, METHOD AND MANAGEMENT SOFTWARE
TW095111563A TW200643713A (en) 2005-03-31 2006-03-31 Storage device, memory managing apparatus, memory managing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005104207A JP2006285600A (ja) 2005-03-31 2005-03-31 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2006285600A true JP2006285600A (ja) 2006-10-19

Family

ID=37073619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005104207A Pending JP2006285600A (ja) 2005-03-31 2005-03-31 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム

Country Status (6)

Country Link
US (1) US20080104361A1 (ja)
EP (1) EP1864223A4 (ja)
JP (1) JP2006285600A (ja)
KR (1) KR100849446B1 (ja)
TW (1) TW200643713A (ja)
WO (1) WO2006107086A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009107506A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Memory system
WO2009110303A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2009211202A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP2009211221A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2009211216A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステムおよび管理情報の保存方法
JP2009211223A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2013198958A (ja) * 2012-03-26 2013-10-03 Daihen Corp ロボット制御装置
JP2016071447A (ja) * 2014-09-26 2016-05-09 ラピスセミコンダクタ株式会社 不揮発性記憶装置及び不揮発性記憶装置の制御方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4524309B2 (ja) * 2006-03-13 2010-08-18 パナソニック株式会社 フラッシュメモリ用のメモリコントローラ
US20090327837A1 (en) * 2008-06-30 2009-12-31 Robert Royer NAND error management
TWI413931B (zh) * 2009-01-15 2013-11-01 Phison Electronics Corp 快閃記憶體資料之存取方法及其儲存系統與控制系統
CN102314396B (zh) * 2010-07-06 2014-01-29 旺宏电子股份有限公司 区块为基础闪存的字节存取的方法与装置
JP5659178B2 (ja) * 2012-03-16 2015-01-28 株式会社東芝 不揮発性記憶装置及び不揮発性メモリの制御方法
CN106020735A (zh) * 2016-05-31 2016-10-12 晨星半导体股份有限公司 一种数据存储方法及数据存储装置
US10884954B2 (en) 2018-09-17 2021-01-05 Silicon Motion, Inc. Method for performing adaptive locking range management, associated data storage device and controller thereof
CN114528226A (zh) * 2018-09-17 2022-05-24 慧荣科技股份有限公司 高效能垃圾收集方法以及数据存储装置及其控制器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100359414B1 (ko) * 1996-01-25 2003-01-24 동경 엘렉트론 디바이스 주식회사 데이타독출/기록방법및그를이용한메모리제어장치및시스템
JP3589033B2 (ja) 1998-06-25 2004-11-17 東京エレクトロンデバイス株式会社 フラッシュメモリシステム
US7620769B2 (en) * 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
JP4037605B2 (ja) 2000-12-04 2008-01-23 株式会社東芝 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
US7013376B2 (en) * 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
JP4129381B2 (ja) * 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
JP4211385B2 (ja) * 2002-12-20 2009-01-21 パナソニック株式会社 半導体メモリカードおよび管理情報更新方法
JP2005085011A (ja) * 2003-09-09 2005-03-31 Renesas Technology Corp 不揮発性メモリ制御装置
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101103110B1 (ko) * 2008-02-29 2012-01-04 가부시끼가이샤 도시바 메모리 시스템
US9043564B2 (en) 2008-02-29 2015-05-26 Kabushiki Kaisha Toshiba Memory system with fixed and variable pointers
JP2009211202A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
US8738867B2 (en) 2008-02-29 2014-05-27 Kabushiki Kaisha Toshiba Memory system
WO2009107506A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Memory system
US8438343B2 (en) 2008-02-29 2013-05-07 Kabushiki Kaisha Toshiba Memory system with fixed and variable pointers
JP2009211216A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステムおよび管理情報の保存方法
JP4551938B2 (ja) * 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
JP4558052B2 (ja) * 2008-03-01 2010-10-06 株式会社東芝 メモリシステム
KR101102136B1 (ko) 2008-03-01 2012-01-02 가부시끼가이샤 도시바 메모리 시스템
JP4551939B2 (ja) * 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
US8285954B2 (en) 2008-03-01 2012-10-09 Kabushiki Kaisha Toshiba Memory system managing a plurality of logs
JP2009211223A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2009211221A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
WO2009110303A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2013198958A (ja) * 2012-03-26 2013-10-03 Daihen Corp ロボット制御装置
JP2016071447A (ja) * 2014-09-26 2016-05-09 ラピスセミコンダクタ株式会社 不揮発性記憶装置及び不揮発性記憶装置の制御方法

Also Published As

Publication number Publication date
TW200643713A (en) 2006-12-16
KR20070034999A (ko) 2007-03-29
US20080104361A1 (en) 2008-05-01
EP1864223A4 (en) 2009-01-21
WO2006107086A1 (en) 2006-10-12
EP1864223A1 (en) 2007-12-12
KR100849446B1 (ko) 2008-07-31

Similar Documents

Publication Publication Date Title
JP2006285600A (ja) 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
US6865658B2 (en) Nonvolatile data management system using data segments and link information
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
US20070016719A1 (en) Memory device including nonvolatile memory and memory controller
JP2005196736A (ja) フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
JP2005242897A (ja) フラッシュディスク装置
JPWO2005111812A1 (ja) メモリ制御回路、不揮発性記憶装置及びメモリ制御方法
WO2007023674A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP2007133541A (ja) 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
US8819387B2 (en) Memory storage device, memory controller, and method for identifying valid data
CN111221750A (zh) 固态储存装置的数据处理方法
JP2020086535A (ja) メモリコントローラ、及びメモリシステム
JP5057887B2 (ja) データ更新装置及びデータ更新方法及びデータ更新プログラム
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP4332134B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2009276883A (ja) 半導体補助記憶装置
JP2006318132A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US7634612B2 (en) Method of recording and reproducing information
US11899977B2 (en) Method and apparatus for performing access management of memory device with aid of serial number assignment timing control
JP5707695B2 (ja) フラッシュディスク装置
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US10732875B2 (en) Data processing method for solid state drive

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081028

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090303