JP2007334852A - 記憶装置、コンピュータシステム、および記憶装置のアクセス方法 - Google Patents

記憶装置、コンピュータシステム、および記憶装置のアクセス方法 Download PDF

Info

Publication number
JP2007334852A
JP2007334852A JP2006245687A JP2006245687A JP2007334852A JP 2007334852 A JP2007334852 A JP 2007334852A JP 2006245687 A JP2006245687 A JP 2006245687A JP 2006245687 A JP2006245687 A JP 2006245687A JP 2007334852 A JP2007334852 A JP 2007334852A
Authority
JP
Japan
Prior art keywords
address
flash memory
address table
user data
memory device
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
JP2006245687A
Other languages
English (en)
Other versions
JP5076411B2 (ja
JP2007334852A5 (ja
Inventor
Toshiyuki Nishihara
利幸 西原
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2006245687A priority Critical patent/JP5076411B2/ja
Priority to US11/594,882 priority patent/US8069297B2/en
Priority to KR1020060118247A priority patent/KR20070056989A/ko
Publication of JP2007334852A publication Critical patent/JP2007334852A/ja
Publication of JP2007334852A5 publication Critical patent/JP2007334852A5/ja
Application granted granted Critical
Publication of JP5076411B2 publication Critical patent/JP5076411B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

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

Abstract

【課題】アドレステーブルの迅速かつ柔軟なアクセスが実現でき、特定消去ブロックへの書き換えの集中も防止でき、アドレステーブルの管理や操作もシンプルとなる記憶装置、コンピュータシステム、および記憶装置のアクセス方法を提供することにある。
【解決手段】アドレステーブル42を分割し、その各々をユーザーデータと混在した状態で、分散させてフラッシュメモリ内に格納するとともに、両者を統一的に管理する。この時フラッシュメモリ上のアドレステーブル42は、ユーザーデータと殆ど同様の手順でアクセスされる。これによりアドレス変換を用いたユーザーデータの効率的な管理手法を、フラッシュメモリ上のアドレステーブルの操作にもそのまま適用することが可能になり、アドレステーブルの迅速かつ柔軟なアクセスが実現できる。特定消去ブロックへの書き換えの集中も防止でき、アドレステーブルの管理や操作もシンプルになる。
【選択図】図6

Description

本発明は、不揮発性メモリを含む記憶装置およびコンピュータシステムに関し、特にフラッシュメモリを主記憶媒体とする記憶装置、コンピュータシステム、および記憶装置のアクセス方法に関するものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やMNOS構造等を用いたトランジスタ1つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、NAND型フラッシュメモリが挙げられる。
図1は、NAND型フラッシュメモリの内部構成例を示す図である。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
各メモリセルN0〜N15は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線BL1〜BLnからのメモリユニット1(−1〜−n)への電流貫通の有無を、センスアンプ等を含むアクセス回路4で検出してデータ判定を行う。
このようなNAND型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百マイクロ(μ)秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数m秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
すなわち、たとえば同一ワード線WL0に接続され、ページ単位を成すメモリセル群5を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック6を全て一括で消去することにより、プログラムの転送速度を向上させている。
具体的には、たとえば非特許文献1には1GbのNAND型フラッシュメモリが掲載されており、ページサイズを2kバイト、消去ブロックサイズを128kBとしている。すなわち、一つのメモリアレイ内で128kバイトのメモリセル群を並列消去し、そこにメモリセルを2kバイト毎に並列でプログラムしていくことによって、10MB/sのプログラム転送速度を実現している。
なお、NAND型フラッシュメモリの分野内においても、微細化や多値化の進展により、メモリの内部構成にはさまざまなバリエーションが存在する。しかしメモリとしてみれば、そのアクセスはページと呼ばれる一括書き込み/読み出しの単位と、ブロックもしくは消去ブロックと呼ばれる一括消去単位を用いて実行され、ブロックが複数のページを含む構成であることは変わらない。
または、メモリデバイスが複数のフラッシュメモリチップを有し、それら複数チップを同時に動作させて並列書き込みを実施することもある。その場合、各々のチップにおけるページの集合体がメモリデバイスにおける実ページを構成し、それがこのメモリデバイスの一括書き込みの単位となる。このとき、各々のチップにおいて対応する消去ブロックの集合体もメモリデバイスの実消去ブロックを構成し、それらがメモリデバイスにおける一括消去単位となる。したがって、このようなメモリデバイスにおいても、一括消去単位である実消去ブロックは、互いに独立した書き込み単位たる実ページを複数含んで構成される。
さらに、近年微細化に伴う内部構造と書き込みメカニズムの変化から、ブロック内の各ページの書き込み順序にも制約がつくようになった。すなわち、各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば、一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
なお、通常NAND型フラッシュの各ページは、たとえば2kバイトのユーザーデータ格納領域に対して64バイトの予備領域を有している。この予備領域には、NAND型フラッシュを使用するシステム側で、パリティビット等の各種管理データを格納することが可能である。この予備領域への書き込みは、通常ユーザーデータ領域への書き込みと一括で行う必要があり、両者は常にセットとして扱われる。
ところで、通常のファイルストレージでは、最小の書き換え単位は512Bのセクタであり、この単位でランダムなアクセスがなされる。その場合、たとえば1つのページ領域の一部のみを書き換える要求が発生する。
しかし、上述のようなフラッシュメモリでそのようなアクセスを行うと、結局実消去ブロック領域全体を消去せねばならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。
図2にそのようなデータ更新の一例を示す。更新手順は以下の通りである。
1.まずフラッシュメモリ20から、バッファメモリ23に、実消去ブロック領域21全体のデータを読み出す。
2.次にバッファメモリ23内で、相当するデータを更新する。
3.次にフラッシュメモリ上のブロック領域21の消去を実行する。
4.最後に上記消去済の領域21に、バッファメモリ23から、更新後のブロックデータを全て書き戻す。
このように、わずか数セクタの書き換えに伴う一連の作業には、100倍近いデータ量の読み出しと書き込み、さらにブロック消去という、多大なオーバーヘッドが含まれる。その結果ハードディスク装置のフルシークに相当する時間が費やされる。
実際にファイルを更新する場合、該当ファイルのみではなく、その管理領域やログの記載等、関連する複数の小領域を同時に更新するのが普通である。また、ファイル自体も複数の小領域に断片化して存在しているケースがある。したがって、上述の如き制約があると、現実の転送性能は著しく低いものになってしまう。
このような作業を効率化するために、アドレス変換を用いた、より柔軟なメモリ管理が各種提案されている。現在最も頻繁に使用されているのは、消去ブロック単位でアドレス変換を実施するやり方である。
図3(A),(B)は、消去ブロック単位でアドレス変換を実施する方法の例を示す図である。
図3(A)はフラッシュメモリの記憶領域を示し、図3(B)はアドレステーブルを示している。
アドレステーブル27は、論理ブロックアドレス(Logical Block Address =LBA)をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス(Phisical Block Address =PBA)を取得することができる。
たとえば、ホストまたはアプリケーションが“0x55”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“0x6B”に変換され、フラッシュメモリ20の消去ブロック21にアクセスが実施される。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
1.予め予備の消去済みブロック25を用意しておく。その物理アドレスは“0xAA”とする。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス“0x6B”が取得され、ブロック21内のページ22にアクセスがなされたとする。このとき、フラッシュメモリ20の書き換え対象ブロック21から、別途設けられたページバッファ24を介して、予備ブロック25にデータを順次コピーしていく。
3.更新対象となるページ22のコピー時には、ページバッファ24上で所望の箇所を更新してコピーを行い、コピー先ページ26にそれが反映される。
4.有効なページデータのコピーが全て完了したら、アドレステーブル27上で、ブロック21と予備ブロック25のアドレスを張り替える。
5.最後に元ブロック21の消去を実施する。
このような手順によって、以降論理ブロックアドレス“0x55”に対しては、物理ブロックアドレス“0xAA”に対応する消去ブロック、すなわち予備ブロック25がアクセスされるようになり、全体との整合性が保たれる。
更新後のブロック25には、上記処理4.の時点で既にアクセスが可能になり、消去の時間を節約できる。
予備ブロックを複数設けて全体の中で循環させれば、特定ブロックへの書き換えの集中も緩和できる。また、このようなアドレス変換は欠陥ブロックへのアクセスを防止する目的にも有用である。
さらに、特許文献1には、フラッシュメモリの一括書き込み単位であるページごとのアドレス変換を用いた、追記型記憶システムにおける管理方法の詳細が記載されている。
図4(A),(B)は、追記型記憶システムにおける管理方法を説明するための図である。
図4(A)はフラッシュメモリの記憶領域を示し、図4(B)はアドレステーブルを示している。
この場合、アドレステーブル28からは、論理ページアドレス(Logical Page Address =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Address =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック21内の対応するページ領域22へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ内で直接書き込める適当な空きページ領域が検索される。たとえば、物理ブロックアドレス“0xAA”に相当する消去済み空きブロック25の先頭ページ領域29が適切な書き込み先として選択された場合、ページ領域22のデータのみがページバッファ24を介して更新され、ページ領域29に書き込まれる。この際、論理ページアドレス“0x5502”はページ領域29の物理アドレス“0xAA00”にリマッピングされる。ページ領域22上の旧データは、当面そのまま残して無効扱いとしておく。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。
したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
さらに発明者らは、特願2005−114711号、特願2005−165234号、特願2005−1714号等において、上記ページ単位のアドレス変換を活用した、より発展的な管理手法を提案している。
あるいは、上記ページ単位のアドレス変換とブロック単位のアドレス変換の中間的な形態も存在する。たとえば各ブロックと、その中に含まれるページ群の関係は保ったままで、ブロック内部の各ページの位置関係をリマッピングする。これによるオーバーヘッドの低減効果は先述の二手法の中間である。
このようにアドレステーブルを用いたリマッピングによる、フラッシュメモリ上のユーザーデータの管理には、様々なバリエーションが存在する。
いずれも初期論理アドレスから生成されたアドレス値をインデックスとしてアドレステーブルを参照し、対応するユーザーデータの所在情報(フラッシュメモリ上の物理アドレス等)を取得する。それをもとにフラッシュメモリへのデータアクセスを実施する。
特に、一括書き込み単位である各ページグループについて、互いの相対位置を変えるリマッピングを実施すれば、アクセス効率の向上に顕著な効果を獲得することができる。
ISSCC2002予稿集のp106、セッション6.4 特開平8−328762号公報
上述の如く、アドレステーブルを用いたリマッピングを活用すれば、より柔軟で効率的なデータアクセスが実現できる。
しかし、効果的な管理を行おうとすれば、それだけ微細な単位でのアドレス変換が必要になり、テーブルの大きさが巨大になって、多量のメモリ領域を占有してしまう。
たとえばページサイズが2kBで、総容量2GBのストレージの場合、その中には1M個ものページグループが格納される。ここにページ単位で完全なアドレス変換を実施すれば、そのアドレッシングには20ビットが必要なので、アドレステーブルは20Mビットもの大きさになってしまう。
このような問題に対処するには、フラッシュメモリ内にアドレステーブルを格納し、必要な箇所のみをRAM上に読み出すのが有効である。
しかし、アドレステーブルは常時更新されていくので、フラッシュメモリ上のアドレステーブルも適時更新されなければならない。しかし、前述の如くフラッシュメモリの書き換えには制限が多く、読み出しや書き込みでエラーが発生すると、その対処も必要である。
一般的に、アドレステーブルのフラッシュメモリへの格納には、専用の消去ブロック、あるいは専用のアドレス領域が割り当てられるので、特定の物理領域のみに集中的な書き換えがなされてしまう。そのため、書き換え疲労が加速され、寿命が低下するという不利益があった。
またその読み出しや書き込みには専用の管理が施され、ユーザーデータのような迅速なアクセスは困難であった。したがって、そのために多くの操作が追加され、煩雑な上、テーブルの入れ替えにも時間がかかるという不利益があった。
また、上述の如く、テーブル入れ替えに伴う書き換え疲労と所要時間は深刻な問題であり、従来は頻繁なテーブル入れ替え自体が前提とされていなかった。すなわち、大容量のストレージに対処すべく、やむを得ずテーブルを分割していたに過ぎない。
したがって、分割数は最小限に留め、一塊の大きな連続アドレス領域をRAM上のテーブルでカバーして、通常のユーザーアクセスはその範囲に留まることが期待されていた。
すなわち、アドレステーブルを展開したRAMはキャッシュとして使用されてはいるが、従来のアドレステーブルのキャッシングについては、単なるバッファというべきプリミティブな形態で実施されていたに過ぎず、上述の如く1エントリのみの最も単純なキャッシングが行われるのみであった。また、それらはユーザーデータとは独立したテーブル専用のキャッシュメモリとして使用されていた。
しかし、テーブルが巨大化する中でRAM容量を減らそうとすれば、テーブル分割数も増加するので、そのような単純なキャッシュではミスヒットが多発して効率が悪くなるという不利益がある。
さらに、このようなキャッシュを使用した場合、電源瞬断が発生した際にキャッシュ内のテーブル更新内容が消失し、その回復には非常に時間がかかるという不利益がある。
本発明は、アドレス変換を用いたユーザーデータの効率的な管理手法を、フラッシュメモリ上のアドレステーブルの操作にもそのまま適用することが可能になり、アドレステーブルの迅速かつ柔軟なアクセスが実現でき、特定消去ブロックへの書き換えの集中も防止でき、アドレステーブルの管理や操作もシンプルとなる記憶装置、コンピュータシステム、および記憶装置のアクセス方法を提供することにある。
本発明の第1の観点の記憶装置は、アドレステーブルと、キャッシュメモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、上記キャッシュメモリ上に展開される。
本発明の第2の観点の記憶装置は、第1のアドレステーブルと、第2のアドレステーブルと、メモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記第1のアドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記第1のアドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、上記小アドレステーブルがフラッシュメモリに保存される際には、上記第2のアドレステーブル上の、上記小アドレステーブルに対応する所在情報が、同時並列的に更新され、上記第2のアドレステーブルの更新箇所を示す情報が、フラッシュメモリ上に保存される小アドレステーブルを含むデータグループ内の予備領域に同時に保存される。
本発明の第3の観点の記憶装置は、第1のアドレステーブルと、第2のアドレステーブルと、メモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記第1のアドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記第1のアドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、上記第2のアドレステーブルは、不揮発性RAMに格納されている。
本発明の第4の観点の記憶装置は、アドレステーブルと、キャッシュメモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記キャッシュメモリに展開され、上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録されている。
本発明の第5の観点の記憶装置は、記憶媒体であるフラッシュメモリデバイスと、制御回路と、を有し、上記制御回路は、ホストから入力されたユーザーデータと、当該記憶装置内部で生成され、使用される管理用データの双方をフラッシュメモリに保存し、上記ユーザーデータと管理用データは、各々複数の格納領域をフラッシュメモリデバイス上に動的に確保され、それらの領域は互いに混在して存在している。
本発明の第6の観点の記憶装置は、アドレステーブルと、メモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、上記小アドレステーブルの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに、ユーザーデータが格納されたブロックと混在して動的に確保され、各ブロック領域には複数の小アドレステーブルが格納される。
本発明の第7の観点のコンピュータシステムは、アドレステーブルと、キャッシュメモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、上記フラッシュメモリデバイスのユーザーデータにアクセス可能な処理装置と、を有し、上記制御回路は、上記処理装置が上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、上記キャッシュメモリ上に展開される。
本発明の第8の観点のコンピュータシステムは、アドレステーブルと、キャッシュメモリと、ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、上記フラッシュメモリデバイスのユーザーデータにアクセス可能な処理装置と、を有し、上記制御回路は、上記処理装置が上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記キャッシュメモリに展開され、上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録されている。
本発明の第9の観点は、フラッシュメモリデバイスのユーザーデータにアクセスする記憶装置のアクセス方法であって、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、キャッシュメモリ上に展開される。
本発明の第10の観点は、フラッシュメモリデバイスのユーザーデータにアクセスする記憶装置のアクセス方法であって、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、キャッシュメモリに展開され、上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録される。
本発明によれば、制御回路は、フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行う。そして、アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得される。そして、アドレステーブルの全体は、インデックスの領域ごとに複数の小アドレステーブルに分割されている。この分割されたアドレステーブルは、フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、キャッシュメモリ上に展開される。
本発明によれば、アドレス変換を用いたユーザーデータの効率的な管理手法を、フラッシュメモリ上のアドレステーブルの操作にもそのまま適用することが可能になり、アドレステーブルの迅速かつ柔軟なアクセスが実現でき、特定消去ブロックへの書き換えの集中も防止でき、アドレステーブルの管理や操作もシンプルとなる利点がある。
以下、本発明の実施形態を図面に関連付けて説明する。
図5は、本発明の第1の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステムCOMSYSは、ファイル記憶装置30、およびホストシステム(処理装置)50を主構成要素として有している。
ファイル記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38を有する。
制御回路32は、RAM40を含み、RAM40にはテーブルリスト41、アドレステーブル42、および検索テーブル43を有する。
ホストシステム50は、CPU、RAM、ROM、システムバス等を含んで構成されている。
ファイル記憶装置30の内部においては、32ビットのメモリバス38に、16ビットの入出力を持つ2チップの8GbNAND型フラッシュメモリ(フラッシュメモリチップという場合もある)35,36が並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。すなわち、メモリバス38は16ビットバスを2チャンネル備えた構成となっている。各々のフラッシュメモリは書き込みや読み出しのアクセスをたとえば4kBのページ単位で行う。したがって、実ページサイズとしては8kBが一括アクセスされることになる。
また後述するように、簡単のため各々のフラッシュメモリチップは、たとえば消去を1MBの消去ブロック単位で行い、各ブロックは256個のページを含むとする。この時実消去ブロックサイズとしては2MBが一括消去されることになり、実消去ブロックは256個の実ページにより構成される。
ページバッファ34はアクセスされたページ領域のデータを一時記憶する。フラッシュメモリ35,36とページバッファ34との間のデータの送受は、制御回路37で制御されている。
さらに、制御回路37は、必要に応じて転送データにECC符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ35,36は,ページバッファ34を介して記憶装置の内部バス33との間でデータを入出力する。
すなわち、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38の回路群は実質的に一つのフラッシュメモリデバイス(フラッシュメモリモジュールという場合もある)39を構成し、記憶装置の内部バス33に接続されているとみなすことができる。その総容量は16Gb(2GB)であり、実ページサイズは8kBである。すなわち装置内には256k個のページデータが格納される。
さらに、内部バス33にはインターフェース回路31、および制御回路32が接続されている。
インターフェース回路31は、ATAやPCIエクスプレス等の規格に従ってホストシステム50との間で、データやコマンドの送受を行う。
制御回路32は、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、プログラムを実行するためのコードエリアやワーキングエリアが設けられており、さらにページ単位の仮想アドレスを管理するアドレステーブル42、アドレステーブルを管理するテーブルリスト41、およびデータ書き込みのために適切な空きページを検索するための検索テーブル43が構築されている。
本コンピュータシステムCOMSYSにおいては、ホストシステム50は内蔵するCPUによって制御され、アプリケーションやオペレーティングシステム(OS)の要求に応じて、ファイル記憶装置30を介して、フラッシュメモリデバイス39にユーザーデータを保存する。
制御回路32はその間のデータ授受に介在し、テーブルリスト41やアドレステーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
ファイル記憶装置30は、ハードディスクと同様に512バイト(Byte)のセクタをアクセス単位とする。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位20ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタアドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
本実施形態においては、ページ単位の仮想アドレス管理が採用されている。
図6(A)〜(C)は、第1の実施形態に係るテーブルリスト41、アドレステーブル42、および検索テーブル43の構成例を示す図である。また、図7は、第1の実施形態に係るテーブルリスト41、アドレステーブル42、および検索テーブル43を使用したデータアクセスを示すフローチャートである。
ファイル記憶装置30の内部におけるフラッシュメモリモジュール39への具体的アクセスは、図7のフローチャートに従って、以下のような手順で実行される。
ステップST1
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40にアクセスし、そこに常駐するテーブルリスト41から、対応するアドレステーブル42の所在情報を取得する。
テーブルリスト41に設けられたテーブルインデックス(T−Index)は2kページ分の論理ページアドレス領域ごとに分割されており、ここではセクタアドレスの上位ビット“0000_0101_0101” (“0x055”の二進数表記)中の“0000_0101_0”までがインデックスとして使用される。すなわち“0x050”のインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。
ステップST2
上記物理ページアドレスをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にアドレステーブルが格納されたページグループが読み出される。これがRAM40上に展開されて、アドレステーブル42が構築される。
アドレステーブル42は各論理ページアドレスLPAに対応して4バイトの(32ビット)情報を保持しており、その内20ビットがフラッシュメモリモジュール上の物理ページアドレスPPAである。残りのビットには、たとえば更新時のタイムスタンプや更新回数等、履歴情報等が格納されている。
前述の如く、1アドレステーブルは2kページ分の論理ページアドレスをカバーする。したがって、その総容量は(4バイト x 2k = 8kバイト)となり、一括書き込み単位である1ページ分の容量に相当する。
ステップST3
次に、再度セクタの論理アドレス“0x05502C”より、論理ページアドレス部LPA“0x05502”をインデックスにアドレステーブル42が参照され、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x060B0”が取得される。
ステップST4
上記物理ページアドレスPPAをもって、再度フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。この操作はステップST2におけるアドレステーブルの読み出し時と全く同様であり、統一した管理で実施することができる。
その後セクタアドレス“0xC”に相当する部分がページバッファ34から選択的にホストシステム50側に出力され、読み出し動作が完了する。
さらに、データの更新は以下のように実施する。同じ“0x05502C”のセクタを更新するとする。その場合、まずページバッファ34に所望のページを読み出す必要があり、その手順はステップST1〜ステップST4と同様である。
ステップST1〜ST4
読み出し時と同様に、フラッシュメモリモジュール39より読み出した所望のデータをページバッファ34に格納する。
ステップST5
ページバッファ34上で所望のセクタ箇所を更新する。
ステップST6
更新したユーザーデータのフラッシュメモリモジュール39への書き込み先として、RAM40内に常駐した検索テーブル43から、適当なページ領域の物理ページアドレスPPAが選択される。ここでは簡単のため、物理ページアドレスは、上位12ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(2)より構成される。
検索テーブル43には、各ブロックごとに、内部に含まれるページの有効/無効がフラグとして格納されている。後述するように、ページが無効化されると対応するフラグに“1”が立つ。さらに各ブロックが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスは、レジスタ44に保存されており、書き込み先にはそれがインクリメントされたページが順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”がスキャンされ、次の未使用ブロックが検出されて、その先頭ページが選択される。
レジスタ44の値は現在“0x0AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x0AA02”を選択する。
ステップST7
上記物理ページアドレスPPAをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリモジュールに一括書き込みされる。書き込みが完了すると、アドレステーブル42が更新され、論理ページアドレスLPA“0x05502”に対応する物理ページアドレスPPAは“0x0AA02”に更新される。また、旧物理ページアドレス“0x060B0”に相当するページ領域は無効となり、検索テーブル43の対応するページのフラグが“1”に変わる。
ステップST8
さらに、アドレステーブル42の更新は、フラッシュメモリモジュール上にも反映される必要がある。この際アドレステーブルのフラッシュメモリモジュールへの書き込み先として、検索テーブル43から、再度適当な空きページ領域の物理ページアドレスPPAが選択される。
すなわち、ステップST6に示されたユーザーデータの更新と同様に、レジスタ44の値がインクリメントされ、物理ページアドレス“0x0AA03”が選択される。
ステップST9
上記物理ページアドレスをもって、フラッシュメモリモジュール39が再度アクセスされる。まずアドレステーブル42はRAM40からページバッファ34にコピー転送され、さらにページグループとしてフラッシュメモリモジュールに一括書き込みされる。
書き込みが完了すると、テーブルリスト41が更新され、テーブルインデックス(T−Index)“0x050”に対応する物理ページアドレスPPAは“0x0AA03”に更新される。また、旧物理ページアドレス“0x030B0”に相当するページ領域は無効となり、検索テーブル43の対応するページのフラグが“1”に変わる。
上記手順を要約すれば、以下のようになる。
1.テーブルリスト41から取得した所在情報をもとに、フラッシュメモリモジュール39からアドレステーブル42を取得する(ステップST1,ST2)。
2.アドレステーブル42から取得した所在情報をもとに、フラッシュメモリモジュール39からユーザーデータを取得する(ステップST3,ST4)。
3.ページバッファ34上でユーザーデータを更新する(ステップST5)。
4.フラッシュメモリモジュールの空き領域へユーザーデータを格納し、アドレステーブル42を更新する(ステップST6,ST7)。
5.フラッシュメモリモジュールの空き領域へアドレステーブル42を格納し、テーブルリスト41を更新する(ステップST8,ST9)。
上述の如く、アドレステーブル42のフラッシュメモリモジュール39からの読み出し取得、および書き込み格納は、いずれもユーザーデータと同形式または互換形式の所在情報(ここでは物理ページアドレス)をもとに、同じデータサイズ(ここでは一括書き込みの単位である8kバイトのページグループ)を単位として実施されている。また、前者のページグループと後者のページグループは、フラッシュメモリモジュール内に順不同に混在して格納されている。たとえば、上記ステップST7およびST9では、PBA“0x0AA”に相当する消去ブロック内に、ユーザーデータとアドレステーブル42がページグループ単位で相次いで書き込まれており、両者は同一の消去ブロックに混在して格納されている。
このような構成を取った結果、制御回路32は両者を統一的に管理することが可能となり、アドレステーブル42はユーザーデータと同様に柔軟かつ迅速にアクセスできるようになった。
ところで、本実施形態のコンピュータシステムにおいて、たとえばファイル記憶装置30がモバイルメディアの場合、急な引き抜き等の電源瞬断に対する耐性が必要となる。また組み込み型であっても、コンピュータ機器そのものの電源瞬断に備える必要がある。
このようなケースでは、特にRAM40がSRAMやDRAMの場合、そこに常駐するテーブルリスト41の消失が問題となる。以下にその対策を述べる。
まず、ステップST9において、アドレステーブル42をフラッシュメモリ35,36に書き込む際には、データに予備領域を設けておき、そこに対応するテーブルリスト41上のテーブルインデックスを格納しておくことが望ましい。これはアドレステーブル42のフラッシュメモリへの書き込みに伴う、テーブルリストの更新箇所の情報に相当する。
これによって、たとえばアドレステーブルの物理ページアドレスPPAが与えられれば、フラッシュメモリ内に格納されたアドレステーブルにアクセスし、対応するテーブルインデックス(T−Index)が取得できる。すなわち、テーブルリストの逆引きが可能である。
これにより、テーブルリストが事故的に消失した際には、物理ページアドレスをスキャンして各ページグループを読み出すことで、各アドレステーブルにおける物理ページアドレスとテーブルインデックス(T−Index)の関係を調べ、テーブルリスト41を再構築することが可能である。
また、そのような再構築のケースを想定した場合、予備領域にはテーブルインデックスとともにタイムスタンプ等の履歴情報を格納し、同じテーブルインデックスが格納されていた場合にどちらが新しいアドレステーブルであるか、判別できるようにしておくことが望ましい。
ただし、フラッシュメモリモジュールの容量が巨大化し、ページ数が増えてくると、スキャンに多大な時間が消費されるようになる。したがって、このようなバックアップのみではなく、より簡便な対策が望まれる。そのようなケースでは、強誘電体メモリ等の不揮発性RAMの使用が有効である。
すなわち、RAM40の少なくとも一部を不揮発性RAMで構成し、そこにテーブルリスト41を常駐させておけば、電源瞬断による消失からは完全に保護することが可能である。
なお、不揮発性RAMとしては、強誘電体膜を用いたFeRAM(Ferroelectric RAM)、強磁性体を用いたMRAM(Magnetic RAM)や、相変化材料を用いたOUM(Ovonic Unified Memory)、RRAM等が提案されている。
FeRAMは強誘電体キャパシタの分極方向の違いでデータを記憶する半導体メモリである。たとえばUSP4873664においてS.Sheffeieldらがその一形態を提案している。
MRAMは強磁性膜のスピン方向の違いでデータを記憶する半導体メモリである。たとえばISSCC2000の論文ダイジェストの128ページに、R.Scheuerleinらが論文を掲載している。
OUMはたとえばカルコゲナイド膜の相転移でデータを記憶する半導体メモリである。たとえばIEDM2001の論文ダイジェストの803ページに、S.Laiらが論文を掲載している。近年はPRAMとも呼称されている。
RRAMは磁気抵抗効果材料の抵抗ヒステリシスでデータを記憶する半導体メモリである。たとえばIEDM2002の論文ダイジェストの7.5にはW.W.Zhuangらが論文を掲載している。
それらの不揮発性メモリは、いずれもセルレベルのアクセス速度や書き換え回数において、フラッシュメモリより数桁性能が高い。
ところで、本実施形態における「フラッシュメモリデバイスのページグループ」との表現は、たとえばフラッシュメモリモジュール39に一括で書き込みまれる連続データの基本単位を示すが、モジュールが複数チップ35,36から構成される場合、各チップへのデータ転送や書き込みのタイミング設定には依存しない。
本実施形態においては、16ビットIOのチップ2個を32ビットバスに接続することで完全な並列動作としたが、16ビットのバスを両チップで共有すれば、転送は個々に行なわざるを得ない。その場合、ページバッファ34から片側のメモリチップにデータを転送している間に、もう片側のメモリチップ内で書き込みをスタートしても良いし、両者への転送を順次行った後に、書き込みを同時スタートしても良い。
すなわち、複数のフラッシュメモリチップ35,36、あるいはそれらと制御回路等を含むフラッシュメモリモジュール39は実質的に一つのフラッシュメモリデバイスとみなすことが可能であり、内部の動作タイミングに関わらず、その一括書き込みの基本単位がページグループと表現されている。
また、上記実施形態では、アドレステーブルやテーブルリストのインデックスには、ホストから与えられた論理アドレスの一部が使用されたが、論理アドレスに特定の変換や演算を施した値、またはその一部が使用されるケースもある。
たとえば、一部のハードディスク用インターフェースでは、初期論理アドレスは上述のようなシリアルなセクタアドレスではなく、シリンダー番号、ヘッド番号、セクタ番号を組み合わせた3次元アドレスで与えられる。インデックスにはその値の一部を使用しても良いが、それをシリアルなセクタアドレスに変換し、その値の一部を使用しても良い。その他初期論理アドレスがどのような形態をとろうとも、それに基づいて一意的に得られた値であれば、インデックスとして使用できる。
また、ここではアドレステーブルやテーブルリストから取得されるページグループの所在情報をフラッシュメモリモジュール39内の物理ページアドレスとしたが、たとえばここで中間的な所在情報を獲得し、さらにその値に演算や変換を施して物理ページアドレスを取得しても良い。一例としては、欠陥ブロックへのアクセスを避けるため、上述の例で得られたアドレスから、さらにそのブロックアドレス部分に変換を施し、真の物理ページアドレスを取得する等の変形が想定される。
以上、第1の実施形態においては、トータルとして巨大な容量を持つアドレステーブルを、フラッシュメモリモジュール39内にユーザーデータと同列に混在して格納し、必要に応じて適時迅速にアクセスするための手法を提案した。
次に、本発明の第2の実施形態として、アドレステーブルのキャッシングについて記載する。
第1の実施形態のように、ユーザーデータにアクセスする都度にフラッシュメモリにアクセスし、アドレステーブルの操作を行うと、それ自体が高速であっても、データアクセスには無視し得ぬオーバーヘッドが発生する。したがって、上記RAM40の領域をアドレステーブルのキャッシュメモリとして確保し、フラッシュメモリモジュール39への直接的なアクセス回数を低減することが望ましい。
また、キャッシュされたアドレステーブルの更新時には更新の都度にその結果をフラッシュメモリに反映させるライトスルー方式ではなく、たとえばエントリ開放の際にまとめて反映させるライトバック方式を採用した方が効率が良い。
さらに、そのようなキャッシュには単一エントリではなく、複数のアドレステーブルをエントリとして格納し、キャッシュテーブルを用いた高度なキャッシュ管理を導入することが望ましい。それによって高いヒット率を獲得し、上記オーバーヘッドは殆ど消失させることが可能になる。
図8は、本発明の第2の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。図8は、アドレステーブルのキャッシュメモリを導入した実施形態を示す。
ハードウエア構成は、図5に示した第1の実施形態と同様であるが、内蔵RAM40Aにはテーブルリスト41)、複数のアドレステーブル42_0,42_1・・・、検索テーブル43に加え、キャッシュテーブル45が構築されている。アドレステーブル42_0,42_1・・・の個々の構成、および検索テーブル43は図6に示した第1の実施形態と同様である。
図9(A),(B)は、第2の実施形態において、アドレステーブルをアクセスするための、アドレスインデックスとキャッシュテーブルの一例を示す図である。また、図10は、第2の実施形態に係るデータアクセスのフローチャートである。
ファイル記憶装置30Aの内部におけるフラッシュメモリモジュール39への具体的アクセスは、図10のフローチャートに従って、以下のような手順で実行される。
ステップST11
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40Aにアクセスし、そこに常駐するテーブルリスト41から、対応するアドレステーブルの所在情報を取得する。第1の実施形態と同様に、論理アドレスの上位9ビットが使用されて、“0x050”のテーブルインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。
ステップST12
上記物理ページアドレスPPAをもとに、キャッシュテーブル45が検索され、キャッシュへのヒットの有無が検査される。キャッシュテーブル45はそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46および47で管理されている。
なお、図9(A),(B)の例では、物理ページアドレス“0x030B0”はいずれのエントリの物理ページアドレスフィールドPPAにも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
ステップST13
キャッシュミスした場合、フラッシュメモリモジュール39から所望のアドレステーブルが読み出され、内蔵RAM40A内の空き領域に展開される。この際、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST131:
キャッシュテーブル45において、レジスタ46,47を参照すると、末尾エントリは“0”、先頭エントリはその直後の“1”となっている。すなわちエントリに空きが無いことが解る。
ステップST132〜ST134:
まず先頭エントリ“1”を開放するため、そこに格納されたアドレステーブルをフラッシュメモリモジュール39に書き戻す。この際の手順は第1の実施形態における(図7のステップST8,ST9)と同様であり、検索テーブル43から空き領域の物理ページアドレスを取得して、そこに書き込みを行った後、テーブルリスト41の対応箇所を更新する。なお、キャッシュ上のアドレステーブルにもデータ予備領域を設け、対応するテーブルリスト上のテーブルインデックス(T−Index)を格納しておくと、更新すべき箇所が瞬時に確定できる。しかる後にエントリが開放され、先頭エントリレジスタ46の値は“2”にインクリメントされる。
<<アドレステーブルの展開>>
ステップST135:
フラッシュメモリモジュール39より物理ページアドレス“0x030B0”のページを読み出して、RAM40Aのエントリ“1”で指定された領域に展開する。この際、新たにエントリ“1”が追加される。これに伴って末尾エントリレジスタ47の値は“1”にインクリメントされる。キャッシュテーブル45上のエントリ“1”に対応する物理ページアドレスは“0x030B0”に更新される。
ステップST14
内蔵RAM40Aに展開されたアドレステーブルのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレスを取得する(ST141)。それを元にフラッシュメモリモジュール39より所望のユーザーデータが格納されたページグループをページバッファ34に読み出し(ST142)、それを介したデータアクセスが可能になる。この手順は第1の実施形態において(図7のステップST3,ST4)で例示したものと同じである。
ステップST15
ページバッファ34上で所望のセクタ箇所を更新する。
ステップST16
ページバッファ34上のページグループを、フラッシュメモリモジュール39に書き戻す。この際の手順は第1の実施形態における(図7のステップST6,ST7)と同様であり、検索テーブル43から空き領域の物理ページアドレスPPAを取得して(ST161)、そこに書き込みを行った後、上記アドレステーブルの対応箇所、すなわち論理ページアドレス“0x05502”に対応する物理ページアドレスを、新規書き込み先に更新する(ST162)。
本第2の実施形態においては、アドレステーブルのフラッシュメモリモジュールへの書き戻しを、ステップST13のエントリ開放時に初めて実施している。すなわち、ライトバック型のキャッシュ方式を採用している。また、複数のエントリが格納可能となっている。
また、テーブルリスト41を用いて各アドレステーブルのフラッシュメモリモジュール39上の位置情報を管理することで、フラッシュメモリモジュール39へのアドレステーブルの柔軟かつ動的な割り付けと、複雑なキャッシュエントリの管理を両立している。
このような管理は、フラッシュメモリモジュール内にアドレステーブルがユーザーデータと混在し、分散格納される際には特に有効である。しかしそれらが特定の消去ブロックに集約的に格納される場合でも、格納順序等の柔軟性を向上させる上で効果がある。
なお、本実施形態においては、キャッシュの各エントリは、初期論理アドレスからテーブルリスト41を介して取得された物理ページアドレスで管理されている。すなわち、キャッシュテーブル45内の各エントリのタグフィールドには、物理ページアドレスPPAが格納されている。
また、キャッシュおよびフラッシュメモリモジュール内に格納された各々のアドレステーブルには予備のデータ領域が存在しており、そこには各アドレステーブルに対応した、テーブルリスト41のテーブルインデックス(T−Index)が格納されている。
これによってアドレステーブルの物理ページアドレスPPAが与えられれば、キャッシュまたはフラッシュメモリモジュール内に格納されたアドレステーブルにアクセスし、対応するテーブルインデックス(T−Index)が取得できる。このような逆引き機能があれば、ステップST13のエントリ開放時に、開放エントリに対応するインデックスを即座に取得して、テーブルリスト41を更新することが可能になる。
さらに、第1の実施形態で述べたように、テーブルリストが消失しても、フラッシュメモリモジュール39に格納された各アドレステーブルをスキャンすることで、それを再構築することができる。
キャッシュメモリおよびフラッシュメモリモジュール39へのアクセス手順を変えた、第2の実施形態の変形例を第3の実施形態として以下に述べる。
図11は、第3の実施形態において、アドレステーブルをアクセスするための、アドレスインデックスとキャッシュテーブルの一例を示す図である。また、図12は、第3の実施形態に係るデータアクセスのフローチャートである。
第3の実施形態においては、キャッシュされたテーブルのエントリはテーブルリスト41bのテーブルインデックス(T−Index)に対応する形で管理されている。すなわち、キャッシュテーブル45b内の各エントリのタグフィールドには、テーブルインデックス(T−Index)が格納されている。
以下、図12のアクセスのフローチャートに関連付けて第3の実施形態におけるユーザーデータのアクセス手順を説明する。
ステップST21,ST22
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、まずその上位アドレスからテーブルインデックス“0x050”が生成され、その値でキャッシュテーブル45bが検索されて、キャッシュへのヒットの有無が検査される。
キャッシュテーブル45bはそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46bおよび47bで管理されている。
なお、図11の例では、テーブルインデックス“0x050”はいずれのエントリのテーブルインデックスフィールド(T−Index)にも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
ステップST23
キャッシュミスした場合、フラッシュメモリモジュール39から所望のアドレステーブルが読み出され、内蔵RAM40A内の空き領域に展開される。この際以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST231:
キャッシュテーブル45bにおいて、レジスタ46b,47bを参照すると、末尾エントリは“0”、先頭エントリはその直後の“1”となっている。すなわち、エントリに空きが無いことが解る。
ステップST232〜ST234:
まず先頭エントリ“1”を開放するため、そこに格納されたアドレステーブルをフラッシュメモリモジュール39に書き戻す。この際の手順は第1の実施形態における(図7のステップST8,ST9)と同様であり、検索テーブル43から空き領域の物理ページアドレスPPAを取得して、そこに書き込みを行った後、テーブルリスト41bの対応箇所、すなわちテーブルインデックス“0x020”に対応した所在情報を更新する。しかる後にエントリが開放され、先頭エントリレジスタ46bの値は“2”にインクリメントされる。
<<アドレステーブルの展開>>
ステップST235:
しかる後に、テーブリスト41bのテーブルインデックス“0x050”がアクセスされ、対応する物理ページアドレスPPA“0x030B0”が取得される。
ステップST236:
フラッシュメモリモジュール39より物理ページアドレス“0x030B0”のページを読み出して、RAM40Aのエントリ“1”で指定された領域に展開する。この際、新たにエントリ“1”が追加される。これに伴って、末尾エントリレジスタ47bの値は、“1”にインクリメントされる。キャッシュテーブル45b上のエントリ“1”に対応するテーブルインデックスは“0x050”に更新される。
ステップST24
内蔵RAM40Aに展開されたアドレステーブルのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレスPPAを取得する(ST241)。それを元にフラッシュメモリモジュール39より所望のユーザーデータが格納されたページグループをページバッファ34に読み出し(ST242)、それを介したデータアクセスが可能になる。この手順は第1の実施形態において(図7のステップST3,ST4)で例示したものと同じである。
ステップST25
ページバッファ34上で所望のセクタ箇所を更新する。
ステップST26
ページバッファ上のページグループを、フラッシュメモリモジュール39に書き戻す。この際の手順は第1の実施形態における(図7のステップST6,ST7)と同様であり、検索テーブル43から空き領域の物理ページアドレスPPAを取得して(ST261)、そこに書き込みを行った後、上記アドレステーブルの対応箇所、すなわち論理ページアドレス“0x05502”に対応する物理ページアドレスを、新規書き込み先に更新する(ST262)。
なお、上記第3の実施形態においては、ステップST23のエントリ開放の際、開放すべきエントリのテーブルインデックスは、キャッシュテーブル45bより直接に取得できるので、テーブルリスト41bの逆検索は不要である。
ところで、アドレステーブルをライトバック方式でキャッシュする場合、キャッシュに無いアドレステーブルは全てフラッシュメモリに保存されているが、キャッシュ上のアドレステーブルのみはその更新がフラッシュメモリに直ちに反映しておらず、消失の危険にさらされる。
アドレステーブルをバックアップするためには、通常はユーザーデータを保存する際、その予備領域にアドレステーブル42_n上の対応するインデックスたる論理ページアドレスLPAを同時に保存する。これにより、電源瞬断でアドレステーブルが破壊されても、フラッシュメモリモジュール内の全物理ページアドレスをスキャンすることで、物理ページアドレスと論理ページアドレスとの対応を取得して、アドレステーブルを再構築できる。
ただし、フラッシュメモリモジュールの容量が巨大化し、ページ数が増えてくると、スキャンに多大な時間が消費されるようになる。したがって、このようなバックアップのみではなく、より簡便な対策が望まれる。
そのようなケースでは、強誘電体メモリ等の不揮発性RAMの使用が有効である。
すなわちRAM40Aの少なくとも一部を不揮発性RAMで構成し、その領域をアドレステーブルのキャッシュに使用すれば、全アドレステーブルを電源瞬断から完全に保護できる。なお、第1の実施形態においても述べたように、テーブルリスト41についても、不揮発性RAM内に格納しておくことが望ましい。さらにキャッシュテーブル45、検索テーブル43も不揮発性RAM内に格納しておけば、システムの主要情報は完全に保存され、電源瞬断からも瞬時の復帰が可能である。
以上、第2および第3の実施形態においては、アドレステーブルのキャッシングについて述べた。
次に、本発明の第4の実施形態として、アドレステーブルとユーザーデータを混在させたキャッシュアーキテクチャーについて記載する。
第1の実施形態においては、フラッシュメモリモジュール上にユーザーデータとアドレステーブルを同列に混在させて格納し、統一的に管理した。これと類似した概念で、キャッシュメモリ上においてもユーザーデータとアドレステーブルを同列のエントリとして混在させて格納し、統一的に管理することができる。
そのような例を以下に述べる。
ハードウエアの構成例は図8に示した第2および第3の実施形態と同様である。
図13(A)〜(C)は、第4の実施形態に係るテーブルリスト、アドレステーブル、およびキャッシュテーブルの例を示す図である。また、図14は、第4の実施形態に係るデータアクセスのフローチャートである。
キャッシュテーブル45c上には、エントリとしてアドレステーブルとユーザーデータを混在させて登録できる。本例の場合、両者のタグは物理ページアドレスPPAで統一されており、この値を用いてキャッシュメモリ、さらにはフラッシュメモリに全く同列にアクセスできる。
これにより、ユーザーデータとアドレステーブルの管理は統一され、単純化される。さらに両者の違いに関わらず、最も使用頻度の高いものを優先してキャッシングでき、RAMの有効活用が可能である。
以下、図14のアクセスのフローチャートに関連付けて第4の実施形態におけるユーザーデータのアクセス手順を説明する。図14のステップST31〜ST34はアドレステーブルの取得であり、ステップST35〜ST38はユーザーデータの取得である。両者は相似形となっており、統一したアルゴリズムで管理することができる。
ステップST31
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40Aにアクセスし、そこに常駐するテーブルリスト41cから、対応するアドレステーブルの所在情報を取得する。第1の実施形態と同様に、論理アドレスの上位9ビットが使用されて、“0x050”のテーブルインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。
ステップST32,ST33
上記物理ページアドレスPPAをもとに、キャッシュテーブル45cが検索され、キャッシュへのヒットの有無が検査される。キャッシュテーブル45cはそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46cおよび47cで管理されている。
なお、図14の例では、物理ページアドレス“0x030B0”はいずれのエントリの物理ページアドレスのフィールドPPAにも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
ステップST34
キャッシュミスした場合、フラッシュメモリモジュール39から所望のアドレステーブルが読み出され、内蔵RAM40A内の空き領域に展開される。この際、必要があればエントリを開放する。一連の手順は第2の実施形態における処理(図10のステップST13)とほぼ同様である。すなわち、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST341:
キャッシュテーブル45cにおいて、レジスタ46c,47cを参照すると、末尾エントリは“0”、先頭エントリはその直後の“1”となっている。すなわちエントリに空きが無いことが解る。
ステップST342〜ST344:
まず先頭エントリ“1”を開放するため、そこに格納されたデータをフラッシュメモリモジュール39に書き戻す。ここでアドレステーブルを開放する際には、第1の実施形態の(図7のステップST8,ST9)の手順に従う。すなわち、検索テーブル43から空き領域の物理ページアドレスPPAを取得して、そこに書き込みを行った後、テーブルリスト41cの対応箇所を更新する。一方、ユーザーデータを開放する際には、第1の実施形態の(図7のステップST6,ST7)の手順に従う。すなわち、検索テーブル43から空き領域の物理ページアドレスPPAを取得して、そこに書き込みを行った後、アドレステーブル上の対応箇所を更新する。しかる後にエントリが開放され、先頭エントリレジスタ46cの値は“2”にインクリメントされる。
ところで、開放しようとしたエントリがユーザーデータの場合、対応するアドレステーブルもキャッシュ上に存在している必要がある。これが無いと上記操作に例外が生じ、別途アドレステーブルをフラッシュメモリモジュールより読み出す操作が必要になる。この対策については後述する。
<<アドレステーブルの展開>>
ステップST345:
フラッシュメモリモジュール39より物理ページアドレス“0x030B0”のページを読み出して、RAM40Aのエントリ“1”で指定された領域に展開する。この際新たにエントリ“1”が追加される。これに伴って末尾エントリレジスタ47cの値は“1”にインクリメントされる。キャッシュテーブル45c上のエントリ“1”に対応する物理ページアドレスは“0x030B0”に更新される。
ステップST35
内蔵RAM40Aに展開されたアドレステーブル42cのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレス“0x060B0”を取得する。
ステップST36,ST37
上記物理ページアドレスPPAをもとに、キャッシュテーブル45cが検索され、キャッシュへのヒットの有無が検査される。手順はステップST32,ST33と同様である。
なお、図14の例では、物理ページアドレス“0x060B0”はいずれのエントリの物理ページアドレスフィールドPPAにも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
ステップST38
キャッシュミスした場合、フラッシュメモリモジュール39から所望のユーザーデータが読み出され、内蔵RAM40A内の空き領域に展開される。この際、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST381〜ST384:
上記ステップS34のST341〜ST344の工程と全く同様の手順で先頭エントリ“2”が開放され、先頭エントリレジスタ(48c)の値は“3”にインクリメントされる。
<<ユーザーデータの展開>>
ステップST385:
所望のユーザーデータがエントリとして追加される。すなわち、フラッシュメモリモジュール39より物理ページアドレス“0x060B0”のページを読み出して、RAM40Aのエントリ“2”で指定された領域に展開する。この際、新たにエントリ“2”が追加される。これに伴って末尾エントリレジスタ47cの値は“2”にインクリメントされる。キャッシュテーブル45c上のエントリ“2”に対応する物理ページアドレスは“0x060B0”に更新される。
ステップST39
キャッシュメモリ34上で所望のユーザーデータの読み出しまたは更新を実施する。
本発明の第3の実施形態である、アドレステーブルとユーザーデータを混在させたキャッシュアーキテクチャーについて、もうひとつの実施形態を第5の実施形態として以下に述べる。
ハードウエアの構成例は図8に示した第2および第3の実施形態例と同様である。
図15(A)〜(C)は、第5の実施形態に係るテーブルリスト、アドレステーブル、およびキャッシュテーブルの例を示す図である。また、図16は、第5の実施形態に係るデータアクセスのフローチャートである。
キャッシュテーブル45d上には、エントリとしてアドレステーブルとユーザーデータを混在させて登録できる。本例の場合、両者のタグは論理ページアドレスLPAとテーブルインデックス(T−Index)を統合したアドレス値で統一されている。
すなわち、20ビットの論理ページアドレス中、上位8ビットが“0x40”に相当する論理ページは本記憶装置には存在しない。したがって、その値を、このエントリがアドレステーブルであることを識別するフラグとし、下位12ビットにテーブルインデックスを挿入した。この値を用いてキャッシュメモリ、さらにはフラッシュメモリに全く同列にアクセスできる。
以下、図16のアクセスのフローチャートに関連付けて第5の実施形態におけるユーザーデータのアクセス手順を説明する。ステップST43〜ST45はアドレステーブルの取得であり、ステップST41,ST42,ST46はユーザーデータの取得である。両者は相似形となっており、統一したアルゴリズムで管理することができる。
ステップST41,ST42
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、まずその上位アドレス“0x05502”からキャッシュテーブル45dが検索され、キャッシュへのヒットの有無が検査される。キャッシュテーブル45dはそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46dおよび47dで管理されている。
なお、図15の例では、論値ページアドレス“0x05502”はいずれのエントリのテーブルインデックスフィールドにも一致していない。したがって、所望のユーザーデータはRAM40A内には存在しておらず、キャッシュミスが発生している。
ステップST43,ST44
次にセクタアドレス“0x05502C”の上位アドレスからテーブルインデックス“0x050”が生成され、さらにフラグを追加した検索タグ“0x40050”が生成されて、再度キャッシュテーブル45dが検索され、キャッシュへのヒットの有無が検査される。
なお、図15の例では、検索タグ“0x40050”はいずれのエントリのテーブルインデックスフィールドにも一致していない。従って所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
ステップST45
キャッシュミスした場合、フラッシュメモリモジュール39から所望のアドレステーブルが読み出され、内蔵RAM40A内の空き領域に展開される。この際、必要があればエントリを開放する。一連の手順は第3の実施形態における処理(図12のステップST23)とほぼ同様である。すなわち、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST451:
第4の実施形態におけるステップST34の工程と全く同様の手順で先頭エントリ“1”が開放され、先頭エントリレジスタ46dの値は“2”にインクリメントされる。
<<アドレステーブルの展開>>
ステップST452:
しかる後に、テーブリスト41dのテーブルインデックス“0x050”がアクセスされ、対応する物理ページアドレスPPA“0x030B0”が取得される。
ステップST453:
フラッシュメモリモジュール39より物理ページアドレス“0x030B0”のページを読み出して、RAM40Aのエントリ“1”で指定された領域に展開する。この際、新たにエントリ“1”が追加される。これに伴って、末尾エントリレジスタ47dの値は、“1”にインクリメントされる。キャッシュテーブル45d上のエントリ“1”に対応するテーブルインデックスは“0x40050”に更新される。
ステップST46
さらに、フラッシュメモリモジュール39から所望のユーザーデータが読み出され、内蔵RAM40A内の空き領域に展開される。この際、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST461:
上記ステップST45の工程と全く同様の手順で先頭エントリ“2”が開放され、先頭エントリレジスタ46dの値は“3”にインクリメントされる。
<<ユーザーデータの展開>>
ステップST462:
内蔵RAM40Aに展開されたアドレステーブルのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレス“0x060B0”を取得する。
ステップST463:
所望のユーザーデータがエントリとして追加される。すなわち、フラッシュメモリモジュール39より上記物理ページアドレスPPA“0x060B0”のページを読み出して、RAM40Aのエントリ“2”で指定された領域に展開する。この際、新たにエントリ“2”が追加される。これに伴って末尾エントリレジスタ47dの値は“2”にインクリメントされる。キャッシュテーブル45d上のエントリ“2”に対応する論理ページアドレスは“0x05502”に更新される。
ステップST47
キャッシュメモリ34上で所望のユーザーデータの読み出しまたは更新を実施する。
ところで、上述のような第3の実施形態においては、以下の改善すべき点がある。
キャッシュメモリへのエントリ追加に際し、空き領域を確保するために開放しようとしたエントリがユーザーデータであった場合、それらをフラッシュメモリモジュール上に書き戻すには、対応するアドレステーブルの操作が必要になる。
しかし、そのようなテーブルがキャッシュ上に存在しないと、それらを再度フラッシュメモリから取得し、RAM上に展開させる必要がある。それを同じキャッシュメモリ内に展開する場合、一旦開放したエントリはそのテーブルで消費され、再度エントリの開放から操作はやり直しとなる。最悪の場合、何度も同じループを繰り返す無駄な操作が発生してしまうおそれがある。
このような無駄を避けるには、キャッシュ上の全てのユーザーデータに対して、対応するアドレステーブルが同時にキャッシュ上に存在していることを保証することが望ましい。
すなわち、それを保証するように、アドレステーブルの開放順位を操作する。またはそれが保証されるようなキャッシュアルゴリズムを採用する。
具体例としては、少なくともユーザーデータがキャッシュに追加される際には、対応するテーブルの開放順位が、常にその下位に設定されるようにする。
すなわち、新規データがキャッシュにエントリされる際、必ずアドレステーブルへのアクセスがなされている。しかし、たとえば上述の先入先だしのラウンドロビン方式では、先に読み込まれたアドレステーブルの開放順位が新規データより上位になってしまい、ユーザーデータよりアドレステーブルの方が先に開放されることになる。
これに対して、ユーザーデータが追加された際には、対応するアドレステーブルの開放順位がその下位にくるように、キャッシュテーブルを操作する。あるいはラウンドロビン方式ではなく、先入後だしのスタック方式を採用すれば、自動的にそのような状態が実現される。
図17〜図19は、キャッシュメモリ内の開放優先順位の操作例を示す概念図である。図17は付け替えによる順位操作例を示し、図18はスワップによる順位操作例を示し、図19はスタック方式による順位操作例を示している。
いずれもユーザーデータがキャッシュに追加される際には、対応するテーブルの開放順位が、常にその下位に設定される。
(操作例1:付け替えによる順位操作)
<1>: ABCDEFGHと順次追加されたエントリは、基本的には先入れ先だしで開放される。ここにユーザーデータIが追加される。既にキャッシュ内にはIに対応したアドレステーブルDがエントリされている。
<2>: まずアドレステーブルDがアクセスされ、その情報を元に、フラッシュメモリからIが読み出されてキャッシュメモリに追加される。この際Aが開放され、B〜Hの順位が右にシフトする。
<3> ここでDはエントリ列の末尾に付け替えられる。それに伴なってEFGHIの順位は一つ右にシフトする。
このような開放順位の付け替え操作は、各エントリをリンクリストにして管理すれば、容易に実現できる。また開放されるべきエントリであるAが丁度Iのテーブルであった場合は、たとえば<2>の処理においてAの替わりにBを開放し、C〜Hの順位を右にシフトすれば良い。
(操作例2:スワップによる順位操作)
<1>,<2>: 操作例1と同じである。
<3>: DとIとのエントリの開放順位がスワップされて入れ替わる。
(操作例3:スタック方式)
<1>: ABCDEFGHと順次追加されたエントリは、基本的には先入れ後だしで開放される。すなわちエントリはスタック方式で追加されている。ここにユーザーデータIが追加される。既にキャッシュ内にはIに対応したアドレステーブルDがエントリされている。
<2>: まずアドレステーブルDがアクセスされ、その情報を元に、フラッシュメモリからIが読み出されてキャッシュメモリに追加される。この際その直前に追加したエントリのHが開放される。
いずれの場合も、少なくともユーザーデータがキャッシュに追加される際には、対応するテーブルの開放順位が常にその下位に設定される。自然にそのようになるスタック方式については一般にヒット率が低いので、より高ヒット率が見込めるラウンドロビン方式等を採用しつつ、積極的にエントリの開放順位を操作する方が、より望ましい。
またさらに、キャッシュヒット率を向上させるには、新規エントリの追加時のみならず、キャッシュ上のデータが更新された際にも、それを開放順位上のエントリ列の末尾に付け替えるのが効果的である。ユーザーデータにおいてこのような処理が実施されたら、さらに対応するテーブルをその後ろに付け替えるのが望ましい。これによってキャッシュ上の全てのユーザーデータに対して、対応するアドレステーブルが同時にキャッシュ上に存在していることを保証できる。
このようなキャッシュテーブルの保証は、ユーザーデータをアドレステーブルとを混在させず、別個のキャッシュ領域に格納しても、同様に必要である。しかし本実施形態のように同じキャッシュメモリ内にエントリとして混在させる方が、そのような保証は容易である。すなわち本実施形態では、ユーザーデータとアドレステーブルの各々のエントリ間での自在な付け替えやスワップが可能であり、これによって上述の如き強固な保証が簡単に実現できている。
なお、フラッシュメモリに対するキャッシュメモリの設置に関しては、これまでユーザーデータをキャッシュすることを目的として、各種の提案がなされてきた。たとえば特開平05−216775号公報、特開平06−349286号公報等にもキャッシュメモリの使用が記載されている。我々はさらに特願2005―171141号、特願2005−220940号等において、より発展したキャッシュメモリのアルゴリズムをユーザーデータ用に提案した。
本発明を採用すれば、アドレステーブルはユーザーデータと同列扱うことができ、統一的に管理できる。特にテーブルリストとキャッシュテーブルの活用で、複雑なキャッシュ管理にも容易に対応できるようになる。
したがって、第2〜第5の実施形態においては、上述のような各種キャッシュアルゴリズムも同様に適用することができる。たとえばフラッシュメモリモジュールの一括書き込み単位であるページグループをさらに1/N(Nは2以上の整数)に分割し、その中に同様に分割したアドレステーブルを格納して、それをキャッシュエントリの単位にしても良い。
ところで、上述の各実施形態においては、ファイル記憶装置内にRAMを設け、そこにアドレステーブルを展開して、内蔵する制御回路で管理を行なった。メモリカード等、特にモバイルタイプのファイル記憶装置では、各種ホストに対応するため、このような変換処理を記憶装置内部で実施することが有効である。
しかし、組み込み型のストレージを搭載したコンピュータシステムでは、ホストCPUがシステムメモリ内にアドレステーブルを展開し、ドライバソフト等を用いて自らその管理を実施するケースも多い。そのようなケースでも、本発明の概念は全く同様に適用することが可能である。
すなわち、ホストCPUはアドレステーブルをユーザーデータと同列に扱い、統一した管理でフラッシュメモリデバイスに混在させて格納する。システムメモリ内には各アドレステーブルのフラッシュメモリ内での所在地を示す情報が、テーブルリストとして常駐している。
OSやアプリケーションからの要求に応じで、ホストCPUは以下の手順でフラッシュメモリデバイスをアクセスする。
1.まずテーブルリストを参照し、OSやアプリケーションが要求する論理アドレスに対応したアドレステーブルの、フラッシュメモリデバイス上の所在情報を取得する。
2.次に上記所在情報をもとにフラッシュメモリをアクセスし、アドレステーブルを読み出して、システムメモリ上に展開する。
3.次にアドレステーブルを参照し、OSやアプリケーションが要求する論理アドレスに対応したユーザーデータの、フラッシュメモリデバイス上の所在情報を取得する。
4.最後に上記所在情報をもとにフラッシュメモリをアクセスし、ユーザーデータの読み出し、さらには必要に応じて更新を行う。
その際の具体的なアドレステーブルやテーブルリストの操作等は、前述の第1の実施形態と全く同様に実施できる。
また、システムメモリをアドレステーブルのキャッシュとして使用することもでき、複数のエントリを設けたり、ユーザーデータのエントリと混在させることもできる。その際のキャッシュテーブルの操作も第2〜第5の実施形態と全く同様に実施すれば良い。
ところで、フラッシュメモリデバイスの管理には、上述のアドレステーブル以外にも多くの管理テーブルを使用する。
たとえば、図6における検索テーブル43や、図には記載されていない欠陥ブロックをスペアの良品ブロックと置き換えるための置換情報を格納したテーブル等が使用されるが、それらもストレージの容量の増大に伴ってテーブルサイズが巨大化し、RAM領域を圧迫するようになる。
前述の実施形態の如く、アドレステーブルについてはそれらを分割し、フラッシュメモリ内にユーザーデータと混在させて分散格納することで、ユーザーデータとの統一的管理を実現した。
しかし、上記管理データ一般については、ユーザーデータと全く同様には扱えないケースがある。
たとえば検索テーブル43を分割してユーザーデータと全く同様に管理した場合、その一部を更新してフラッシュメモリに書き込もうとすると、それらが保存されていたフラッシュメモリ上の旧エリアを無効化しなければならない。そのため、再度検索テーブル43の該当箇所のページ使用フラグ(page disabled)を更新しなければならなくなる。すなわち検索テーブル43のある箇所を更新しようとすれば、それに伴って同じテーブルの全く別の箇所の更新が必要になる。このような更新は延々繰り返されるかもしれない。
このような管理用データは、ユーザーデータと管理を一体化することはできない。しかし、本発明の基本概念を次のようにモディファイして適用することで、殆どの管理用データについて書き換えの集中を防止しつつ、良好なアクセス性能を得ることが可能になる。
すなわち、それらの格納には専用の消去ブロックをあてがうものの、各専用ブロックはユーザーデータと同様に、フラッシュメモリ上に動的に確保される。この際、それらの格納にはユーザーデータと共通したフラッシュメモリ上の領域が使用される。すなわち上記領域内には、管理用データが格納されたブロックとユーザーデータが格納されたブロックが、互いに分散して混在することになる。
以下に、本発明の第6の実施形態として、管理用データが格納されたブロックとユーザーデータが格納されたブロックが、互いに分散して混在する場合の領域確保について説明する。
図20(A)〜(D)は、第6の実施形態に係る領域確保の概念を示す図である。
図20(A)〜(D)において、z1はフラッシュメモリデバイスを、z2はユーザーデータを、z3は書き込みポインタを、z4はローカルポインタをそれぞれ示している。
ステップST51
図20(A)に示すように、フラッシュメモリデバイスz1における消去ブロックのアドレス“0x001”〜“0x3EF”の領域内に、ユーザーデータと管理用データが保存される。ここでは書き込みポインタz3が順次インクリメントされ、それに従ってユーザーデータz2がページ単位で書き込まれている。書き込みポインタz3の上位“0x002”はブロックアドレスであり、下位“0xA0”はページアドレスである。
ステップST52
この状態から管理用データを書き込むとする。図20(B)に示すように、書き込みポインタz3のあるブロック“0x002”の次の空きブロック“0x003”が検索され、そこに管理用データの保存領域が確保される。その先頭に管理用データ書き込み用のローカルポインタz4が設定され、そのポインタのインクリメントに従って“0x003”のブロック内に管理用データが順次ページ単位で書き込まれる。
ステップST53
図20(C)に示すように、さらにユーザーデータが書き込まれ、“0x002”が一杯になると、書き込みポインタz3は次の空きブロック“0x004”の先頭に移動し、そこにユーザーデータ用の保存領域が確保される。ポインタz3のインクリメントに従ってユーザーデータの書き込みが継続される。
ステップST54
図20(D)に示すように、さらに管理用データが書き込まれ、“0x003”が一杯になると、書き込みポインタz3のあるブロック“0x004”の次の空きブロック“0x005”が検索され、そこに管理用データの保存領域が確保される。ローカルポインタz4はその先頭に移動し、そのインクリメントに従って“0x005”のブロック内に管理用データが順次書き込まれる。
このように,ユーザーデータと管理用データはフラッシュメモリz1における共通領域“0x001〜0x3EF”の内部に、その格納領域が各々ブロック単位で動的に確保されている。書き込みポインタz3は上記共通領域内の空きブロックを循環し、これに伴ってユーザーデータが書き込まれるが、同時に管理用データの格納領域も、必要に応じて該ポインタの近傍に、ブロック単位で動的に確保される。
このようにすることでユーザーデータと管理用データを個別に管理しつつ、管理用データ格納領域への書き換え集中を防止することができる。
このような手法は前述のアドレス変換テーブルの格納にも適用できる他、多くの管理用データに適用できる。なお、本手法においては、複数種の管理用データに個別のローカルポインタとブロックを割り当てて、それらを独立に管理することも可能である。
なおここではユーザーデータの書き込みポインタz3を領域確保の共通の基準としたが、これはユーザーデータの書き込み頻度が最も高く、このポインタの進行が最も速いと見込まれるためである。必要があれば別途基準ポインタを設けても良い。すなわち書き込みポインタz3とローカルポインタz4のうち前方にある側のブロックを指すポインタを基準ポインタとして別途保存し、その前方の空き領域にユーザーデータや管理用データの格納領域を確保しても良い。
ここで、第1の実施形態と第6の実施形態に係る本手法を比較すると、管理用データ(アドレス変換テーブルを含む)とユーザーデータの格納領域が、フラッシュメモリ内の共通領域に各々動的に確保され、それらが互いに順不同で混在している点は、両者同様である。ただし、第1の実施形態においては、その領域は書き込み単位に一致するページ単位で確保されている。一方、本第6の実施形態においては格納領域が消去ブロック単位で確保されている。前者には両者の管理を統一できる利点があるが、後者には両者を独立に管理することで、広範な管理用データを扱える利点がある。また、後者には、テーブルの所在を管理するために使用するRAM容量を小型化できる利点もある。
本第6の実施形態を第1の実施形態と同様にアドレス変換テーブルの格納に適用し、より具体化した例を以下に説明する。ハードウエア構成は図5に示した第1の実施形態と同様である。また、第1の実施形態と同様にページ単位の仮想アドレス管理が採用されている。ただし管理手法に違いに伴って、テーブル構成が異なる。
図21(A)〜(C)はテーブルリスト41e、アドレステーブル42e、および検索テーブル43eの構成例を示す図である。また、図22は、テーブルリスト41e、アドレステーブル42e、および検索テーブル43eを使用したデータアクセスを示すフローチャートである。
ファイル記憶装置30の内部におけるフラッシュメモリモジュール39への具体的アクセスは、図22のフローチャートに従って、以下のような手順で実行される。
ステップST61
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40にアクセスし、そこに常駐するテーブルリスト41eから、対応するアドレステーブル42eの所在情報を取得する。
テーブルリスト41eに設けられたテーブルインデックス(T−Index)は2kページ分の論理ページアドレス領域ごとに分割されており、ここではセクタアドレスの上位ビット“0000_0101_0101” (“0x055”の二進数表記)中の“0000_0101_0”までがインデックスとして使用される。
さらに本実施形態においては、アドレステーブルの格納領域には32個の小テーブル(32個のインデックスに相当)ごとに専用ブロックが動的に割り当てられている。すなわち、ここではアドレステーブル全体は128個の小テーブルに分割されており、それらは32個ごとにグループを成して4個の消去ブロックに各々格納されている。各格納ブロックはアドレステーブル格納用の専用ブロックとして動的に領域が確保されており、さらに各々独立したローカルポインタを有する。
上記インデックス“0000_0101_0”の上位4ビット“0000”に対しては共通のブロックアドレス“0x030”が割り当てられている。また、下位5ビット“0101_0”に対してはこのブロック内におけるページのオフセット値(POFF)“0xB0”が割り当てられている。すなわち“0x050”のインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。また、この専用ブロックに対するローカルポインタはレジスタ48eに格納されており、その値は“0xC0”である。このようにブロックごとに領域が確保された場合、複数ページに対してブロックアドレス部分を共通にできる。したがって、RAMに常駐するテーブルリスト41eの容量は、ページごとに領域を確保するより小さくなる。
ステップST62
上記物理ページアドレスをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にアドレステーブルが格納されたページグループが読み出される。これがRAM40上に展開されて、アドレステーブル42eが構築される。
アドレステーブル42eは各論理ページアドレスLPAに対応して4バイトの(32ビット)情報を保持しており、その内20ビットがフラッシュメモリモジュール上の物理ページアドレスPPAである。残りのビットには、たとえば更新時のタイムスタンプや更新回数等、履歴情報等が格納されている。
前述の如く、1アドレステーブルは2kページ分の論理ページアドレスをカバーする。したがって、その総容量は(4バイト x 2k = 8kバイト)となり、一括書き込み単位である1ページ分の容量に相当する。
ステップST63
次に、再度セクタの論理アドレス“0x05502C”より、論理ページアドレス部LPA“0x05502”をインデックスにアドレステーブル42eが参照され、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x060B0”が取得される。
ステップST64
上記物理ページアドレスPPAをもって、再度フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。
その後セクタアドレス“0xC”に相当する部分がページバッファ34から選択的にホストシステム50側に出力され、読み出し動作が完了する。
さらに、データの更新は以下のように実施する。同じ“0x05502C”のセクタを更新するとする。その場合、まずページバッファ34に所望のページを読み出す必要があり、その手順はステップST61〜ステップST64と同様である。
ステップST61〜ST64
読み出し時と同様に、フラッシュメモリモジュール39より読み出した所望のデータをページバッファ34に格納する。
ステップST65
ページバッファ34上で所望のセクタ箇所を更新する。
ステップST66
更新したユーザーデータのフラッシュメモリモジュール39への書き込み先として、RAM40内に常駐した検索テーブル43eから、適当なページ領域の物理ページアドレスPPAが選択される。ここでは簡単のため、物理ページアドレスは、上位12ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(2)より構成される。
検索テーブル43eには、各ブロックごとに、内部に含まれるページの有効/無効がフラグ(page disabled)として格納されている。ページが無効化されると対応するフラグに“1”が立つ。さらに各ブロックが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスは、レジスタ44eに保存されており、書き込み先にはそれがインクリメントされたページが順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”がスキャンされ、次の未使用ブロックが検出されて、その先頭ページが選択される。
レジスタ44eの値は現在“0x0AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x0AA02”を選択する。
ステップST67
上記物理ページアドレスPPAをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリモジュールに一括書き込みされる。書き込みが完了すると、アドレステーブル42が更新され、論理ページアドレスLPA“0x05502”に対応する物理ページアドレスPPAは“0x0AA02”に更新される。また、旧物理ページアドレス“0x060B0”に相当するページ領域は無効となり、検索テーブル43eの対応するページのフラグが“1”に変わる。
ステップST68
さらに、アドレステーブル42eの更新は、フラッシュメモリモジュール上にも反映される必要がある。第1の実施形態と異なり、本第6の実施形態におけるアドレステーブルのフラッシュメモリ上への書き込み先は、更新前と同一のブロック“0x030”の空き領域が選択される。
アドレステーブル格納用の専用ブロックには1ブロックに256ページが格納できるにも拘らず、各ブロックには32インデックス分のアドレステーブルしか割り当てられていないので、通常ブロック内には多くの空き領域が残存する。その領域に、レジスタ(48e)に格納されたローカルポインタのインクリメントに従って更新データが追記されることになる。ここではローカルポインタが一つインクリメントされ、物理ページアドレス“0x030C1”が選択される。
なお、更新が繰り返された結果ローカルポインタがブロック“0x030”の末尾にある場合、次のように新規ブロックが確保され、そちらにデータが移される。
まずレジスタ44eの指すブロック“0x0AA” から“Used Flag”がスキャンされ、次の未使用ブロックが検出される。そこにアドレステーブルの新たな書き込み領域が確保され、ローカルポインタはその先頭を指す。新規ブロックの“Used Flag”は“1”に更新される。さらに、テーブルリスト41eの情報を参照し、元ブロック“0x030”に格納されていた各小テーブルが、ローカルポインタのインクリメントに従って新規ブロックに順次コピーされる。それが完了するとテーブルリスト41eの各フィールドが更新され、元ブロックは消去される。消去後の元ブロックの“Used Flag”は“0”となる。これにより書き込み先ブロックの移動が行なわれた。
最後にローカルポインタはもう一つインクリメントされ、新規に確保されたブロックの次の空きページ領域が、更新された小アドレステーブルの書き込み先として選択される。
ステップST69
上記物理ページアドレスをもって、フラッシュメモリモジュール39が再度アクセスされる。まずアドレステーブル42eはRAM40からページバッファ34にコピー転送され、さらにページグループとしてフラッシュメモリモジュールに一括書き込みされる。
書き込みが完了すると、テーブルリスト41eが更新され、テーブルインデックス(T−Index)“0x050”に対応するページオフセットPOFFは“0xC1”に更新される。
なお、第1の実施形態のようにブロックテーブル43eのページフラグ(page disabled)は更新する必要は無い。
上述のような書き込み制御においては、アドレステーブル42eのフラッシュメモリ上へのアクセスに使用されるのは、テーブルリスト41eと検索テーブル43e内のUsedフラグのみである。
したがって、たとえばアドレステーブルに次いで大きな容量を持つ検索テーブル(43e)のページフラグ(page disabled)部分について、それをUsedフラグと分離し、必要があれば同様の手法で分割して、フラッシュメモリデバイス内に格納できる。
その場合、上記Usedフラグはユーザーデータやアドレステーブルと共有することになる。一方、ページフラグ(page disabled)の格納場所を示すテーブルとして、テーブルリスト(41e)に相当するリストを、もう一つ追加する必要がある。
なお、上述のような管理データをフラッシュメモリデバイスに格納するための分割単位は、フラッシュメモリデバイスの一括アクセス単位であるページ領域のサイズ以下に留め、一回のアクセスで一単位を読み出しまたは保存できるようにすることが望ましい。
また、第1の実施形態にアドレステーブルのキャッシュメモリを設けて第1の実施形態に発展させたように、本第6の実施形態についても全く同様に、フラッシュメモリデバイス内に格納された各種管理データに対して、読み出し先のRAM上にキャッシュメモリを設けることが可能である。この場合、そのエントリは上記分割の一単位とすることが望ましく、各キャッシュメモリは複数のエントリを持つことが望ましい。
同様にブロック単位で領域を確保し、RAM内に常駐するテーブルリストをさらに小型化した第7の実施形態について以下に説明する。ハードウエア構成は図5に示した第1および第6の実施形態と同様である。
図23(A)〜(C)は、第7の実施形態に係るテーブルリスト41f、アドレステーブル42f、および検索テーブル43fの構成例を示す図である。
第7の実施形態のテーブルリスト41fでは、さらに各小アドレステーブルごとに設置されていたページオフセットの常駐も廃止した。すなわち、32個の小アドレステーブルよりなるグループごとに、格納先ブロックのアドレスとブロック内の書き込み先を示すローカルポインタのみが設置されている。ブロックアドレスに2バイト、ローカルポインタに1バイトを消費した場合、テーブルリスト41f格納に必要なRAM容量は、ストレージ全体、すなわち128個の小アドレステーブルに対して僅か12バイトである。
また、図24は、第7の実施形態に係るテーブルリスト41f、アドレステーブル42f、および検索テーブル43fを使用したデータアクセスを示すフローチャートである。
ファイル記憶装置30の内部におけるフラッシュメモリモジュール39への具体的アクセスは、図24のフローチャートに従って、以下のような手順で実行される。
ステップST71
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40にアクセスし、そこに常駐するテーブルリスト41fから、対応するアドレステーブル42fの所属するブロックアドレスを取得する。
各小アドレステーブルに対応するテーブルインデックス(T−Index)は2kページ分の論理ページアドレス領域ごとに分割されており、ここではセクタアドレスの上位ビット“0000_0101_0101” (“0x055”の二進数表記)中の“0000_0101_0”までがインデックスとして使用される。
さらにアドレステーブルの格納領域には32個の小テーブル(32個のインデックスに相当)ごとに専用ブロックが動的に割り当てられている。すなわち、ここではアドレステーブル全体は128個の小テーブルに分割されており、それらは32個ごとにグループを成して4個の消去ブロックに各々格納されている。各格納ブロックはアドレステーブル格納用の専用ブロックとして動的に領域が確保されており、さらに各々独立したローカルポインタを有する。
上記インデックス“0000_0101_0”の上位4ビット“0000”に対しては共通のブロックアドレス“0x030”が割り当てられている。なお、第6の実施形態と異なり、この時点ではこのブロック内における各小テーブルを格納したページのオフセット値(POFF)は不明である。また、この専用ブロックに対するローカルポインタはレジスタ48fに格納されており、その値は“0xC0”である。
ステップST71B
ブロック“0x030”の先頭ページ“0x00”から、ローカルポインタのある“0xC0”までの全ページの冗長領域をスキャンし、所望の小テーブルが格納されたページを検索する。各ページの冗長領域には、格納された小テーブルのテーブルインデックスが記載されている。この値が所望の小テーブルのテーブルインデックス“0000_0101_0”に一致し、かつ最も下位のアドレスにある(すなわち最も新しく書き込まれた)ページが、該当ページである。このようにして、たとえば所望の小テーブルの物理ページアドレスPPA“0x030B0”が取得される。
ステップST72
所望の小アドレステーブル42fをRAM内に読み出す。この工程は第6の実施形態のステップST62と同様の作業である。
ステップST73
アドレステーブル42fからユーザーデータの物理ページアドレスPPA“0x060B0”を取得する。この工程は第6の実施形態のステップST63と同様の作業である。
ステップST74
ユーザーデータをフラッシュよりページバッファに読み出す。この工程は第6の実施形態のステップST64と同様の作業である。
ステップST75
ページバッファ34上で所望のセクタ箇所を更新する。この工程は第6の実施形態のステップST65と同様の作業である。
ステップST76
検索テーブル43fおよびポインタ46fから、更新データの書き込み先アドレスを取得する。ここではポインタ46fがインクリメントされて、“0x0AA02”が書き込み先物理ページアドレスとして選択される。この工程は第6の実施形態のステップST66と同様の作業である。
ステップST77
ユーザーデータをフラッシュに書き込む。アドレステーブル42fにおける論理ページアドレスLPA“0x05502”に対応する物理ページアドレスPPAは“0x0AA02”に更新される。また、旧物理ページアドレス“0x060B0”に相当するページ領域は無効となり、検索テーブル43fの対応するページのフラグが“1”に変わる。この工程は第6の実施形態のステップST67と同様の作業である。
ステップST78
更新されたアドレステーブル42fの書き込み先が、更新前と同一のブロック“0x030”の空き領域から選択される。すなわちレジスタ48fに格納されたローカルポインタが一つインクリメントされ、物理ページアドレス“0x030C1”が選択される。
ここまでは第6の実施形態のステップST68と同様の作業である。
なお、更新が繰り返された結果ローカルポインタがブロック“0x030”の末尾にある場合、次のように新規ブロックが確保され、そちらにデータが移される。
まずレジスタ44fの指すブロック“0x0AA” から“Used Flag”がスキャンされ、次の未使用ブロックが検出される。そこにアドレステーブルの新たな書き込み領域が確保され、ローカルポインタはその先頭を指す。新規ブロックの“Used Flag”は“1”に更新される。
ここでデータの移動には第6の実施形態とは異なる手順が必要になる。
まず旧ブロック“0x030”の各ページの冗長領域を全てスキャンして、RAM上に論理ページアドレスとページオフセットを対応させたテーブル49fを一時的に生成する。
このテーブル情報を参照し、元ブロック“0x030”に格納されていた各小テーブルが、ローカルポインタのインクリメントに従って新規ブロックに順次コピーされる。それが完了するとテーブル49fは開放される。テーブルリスト41fの物理ブロックアドレスフィールド“0x030”は新規ブロックのアドレスに書き換えられ、元ブロックは消去される。消去後の元ブロックの“Used Flag”は“0”となる。これにより書き込み先ブロックの移動が行われた。
最後にローカルポインタはもう一つインクリメントされ、新規に確保されたブロックの次の空きページ領域が、更新された小アドレステーブルの書き込み先として選択される。
ステップST79
アドレステーブル42fがフラッシュモジュールに書き込まれる。ただし、第6の実施形態6と異なり、そのページオフセットをテーブルリスト41fに更新記入する必要は無い。
以上説明したように、本発明の実施形態によれば、アドレステーブルはフラッシュメモリ内に分散して格納されており、ユーザーデータと同列に扱われて、統一的に管理される。したがって、各アドレステーブルは必要に応じて柔軟かつ迅速に取り出すことができ、更新も容易であり、特定の消去ブロックへの書き換え集中も防止できる。かつ、煩雑な機能の追加を必要としない。
このようなコンピュータシステムでは、巨大なアドレステーブルを活用して、フラッシュメモリ上のデータに効率的なアクセスを実施できる。さらにアドレステーブルの格納に大きなRAM領域を占有しない。したがって、高速、柔軟かつ安価で、信頼性の高いコンピュータシステムを構築することが可能である。
さらに、アドレステーブル以外の管理用データについても、ユーザーデータと同じフラッシュメモリ領域に、それらと混在する形で動的に格納領域が確保される。したがって、特定の消去ブロックへの書き換え集中は、同様に防止することが可能である。
NAND型フラッシュメモリの内部構成例を示す図である。 フラッシュメモリにおけるデータ更新の一例を示す図である。 消去ブロック単位でアドレス変換を実施する方法の例を示す図である。 追記型記憶システムにおける管理方法を説明するための図である。 本発明の第1の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。 第1の実施形態に係るテーブルリスト、アドレステーブル、および検索テーブルの構成例を示す図である。 第1の実施形態に係るテーブルリスト、アドレステーブル、および検索テーブルを使用したデータアクセスを示すフローチャートである。 第2の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。 第2の実施形態において、アドレステーブルをアクセスするための、アドレスインデックスとキャッシュテーブルの一例を示す図である。 第2の実施形態に係るデータアクセスのフローチャートである。 第3の実施形態において、アドレステーブルをアクセスするための、アドレスインデックスとキャッシュテーブルの一例を示す図である。 第3の実施形態に係るデータアクセスのフローチャートである。 第4の実施形態に係るテーブルリスト、アドレステーブル、およびキャッシュテーブルの例を示す図である。 第4の実施形態に係るデータアクセスのフローチャートである。 第5の実施形態に係るテーブルリスト、アドレステーブル、およびキャッシュテーブルの例を示す図である。 第5の実施形態に係るデータアクセスのフローチャートである。 キャッシュメモリ内の開放優先順位の操作例を示す概念図であって、付け替えによる順位操作例を示す図である。 キャッシュメモリ内の開放優先順位の操作例を示す概念図であって、スワップによる順位操作例を示す図である。 キャッシュメモリ内の開放優先順位の操作例を示す概念図であって、スタック方式による順位操作例を示す図である。 第6の実施形態に係る領域確保の概念を示す図である。 第6の実施形態に係るテーブルリスト、アドレステーブル、および検索テーブルの構成例を示す図である。 第6の実施形態に係るテーブルリスト、アドレステーブル、および検索テーブルを使用したデータアクセスを示すフローチャートである。 第7の実施形態に係るテーブルリスト、アドレステーブル、および検索テーブルの構成例を示す図である。 第7の実施形態に係るテーブルリスト、アドレステーブル、および検索テーブルを使用したデータアクセスを示すフローチャートである。
符号の説明
30,30A・・・ファイル記憶装置、31・・・インターフェース回路、32・・・制御回路、33・・・内部バス、34・・・ページバッファ、35,36・・・NAND型フラッシュメモリ、37・・・制御回路、38・・・メモリバス、39・・・フラッシュメモリデバイス(フラッシュメモリモジュール)、40,40A・・・RAM、41,41b,41c,41d,41e・・・テーブルリスト、42,42b,42c,42d,42e・・・アドレステーブル、43,43b,43c,43d・・・検索テーブル、45,45b,45c,45d,45e・・・キャッシュテーブル、50・・・ホストシステム

Claims (28)

  1. アドレステーブルと、
    キャッシュメモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
    上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、上記キャッシュメモリ上に展開される
    記憶装置。
  2. 上記キャッシュメモリはライトバック方式でアクセスされる
    請求項1記載の記憶装置。
  3. 上記キャッシュメモリは、上記小アドレステーブルをエントリとして、小アドレステーブルを複数格納する
    請求項1記載の記憶装置。
  4. 上記小アドレステーブルは、上記フラッシュメモリデバイスにおける一括読み出し/書き込み単位であるページごとに、上記フラッシュメモリデバイスに格納されている
    請求項1記載の記憶装置。
  5. 第2のアドレステーブルを、さらに有し、
    上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
    上記制御回路によるフラッシュメモリ上のユーザーデータへのアクセス管理においては、
    初期論理アドレス情報をもとに、上記第2のアドレステーブルが参照され、対応する小アドレステーブルの所在情報が取得され、
    上記所在情報を基に、まずキャッシュメモリ内の所望の小アドレステーブルの有無がチェックされ、
    ミスヒットの場合はフラッシュメモリから対応する小アドレステーブルが読み出されて、上記メモリ領域上に展開され、
    初期論理アドレス情報をもとに、上記小アドレステーブルが参照され、アクセスすべきユーザーデータの所在情報が取得され、
    上記ユーザーデータの所在情報を基に、フラッシュメモリ上のユーザーデータがアクセスされる
    請求項1記載の記憶装置。
  6. 第2のアドレステーブルを、さらに有し、
    上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
    上記制御回路によるフラッシュメモリ上のユーザーデータへのアクセス管理においては、
    初期論理アドレス情報をもとに、キャッシュメモリ内の所望の小アドレステーブルの有無がチェックされ、
    ミスヒットの場合、初期論理アドレス情報をもとに、上記第二のアドレステーブルが参照され、対応する小アドレステーブルの所在情報が取得され、さらにフラッシュメモリから対応する小アドレステーブルが読み出されて、上記メモリ領域上に展開され、
    初期論理アドレス情報をもとに、上記小アドレステーブルが参照され、アクセスすべきユーザーデータの所在情報が取得され、
    上記ユーザーデータの所在情報を基に、フラッシュメモリ上のユーザーデータがアクセスされる
    請求項1記載の記憶装置。
  7. 第1のアドレステーブルと、
    第2のアドレステーブルと、
    メモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
    上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記第1のアドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記第1のアドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、
    上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
    上記小アドレステーブルがフラッシュメモリに保存される際には、上記第2のアドレステーブル上の、上記小アドレステーブルに対応する所在情報が、同時並列的に更新され、上記第2のアドレステーブルの更新箇所を示す情報が、フラッシュメモリ上に保存される小アドレステーブルを含むデータグループ内の予備領域に同時に保存される
    記憶装置。
  8. 第1のアドレステーブルと、
    第2のアドレステーブルと、
    メモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
    上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記第1のアドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記第1のアドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、
    上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
    上記第2のアドレステーブルは、不揮発性RAMに格納されている
    記憶装置。
  9. アドレステーブルと、
    キャッシュメモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
    上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記キャッシュメモリに展開され、
    上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録されている
    記憶装置。
  10. 上記キャッシュメモリ上の全てのユーザーデータに対して、対応するアドレステーブルが同時にキャッシュメモリ上に存在していることを保証するように、アドレステーブルの開放順位が設定される
    請求項9記載の記憶装置。
  11. 少なくともユーザーデータが上記キャッシュメモリに追加される際には、対応するテーブルの開放順位が、その下位に設定される
    請求項10記載の記憶装置。
  12. 記憶媒体であるフラッシュメモリデバイスと、
    制御回路と、を有し、
    上記制御回路は、ホストから入力されたユーザーデータと、当該記憶装置内部で生成され、使用される管理用データの双方をフラッシュメモリに保存し、
    上記ユーザーデータと管理用データは、各々複数の格納領域をフラッシュメモリデバイス上に動的に確保され、それらの領域は互いに混在して存在している
    記憶装置。
  13. 上記制御回路は、
    上記フラッシュメモリデバイスの物理アドレスまたは論理アドレスに沿って共通のポインタを進め、
    上記ポインタ位置またはその近傍に第1の空き領域を確保して、当該第1の空き領域にユーザーデータを記録し、あるいは第2の空き領域を確保して、当該第2の空き領域に管理用データを記録する
    請求項12記載の記憶装置。
  14. ユーザーデータの格納領域および管理用データの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに確保される
    請求項12記載の記憶装置。
  15. ユーザーデータの格納領域および管理用データの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに確保される
    請求項13記載の記憶装置。
  16. ユーザーデータおよび管理用データは、上記フラッシュメモリデバイスの一括書き込み単位であるページ領域ごとに、確保されたブロック領域内の下位アドレスから下詰で格納される
    請求項14記載の記憶装置。
  17. ユーザーデータおよび管理用データは、上記フラッシュメモリデバイスの一括書き込み単位であるページ領域ごとに、確保されたブロック領域内の下位アドレスから下詰で格納される
    請求項15記載の記憶装置。
  18. アドレステーブルと、
    メモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
    上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、
    上記小アドレステーブルの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに、ユーザーデータが格納されたブロックと混在して動的に確保され、各ブロック領域には複数の小アドレステーブルが格納される
    記憶装置。
  19. 複数の小アドレステーブルを含む連続したインデックス領域ごとに、上記格納用ブロックは各々確保され、各インデックス領域に対応するフラッシュメモリデバイス上の各ブロックの所在が第2のテーブルとしてメモリ上に保存されている
    請求項18記載の記憶装置。
  20. 各小アドレステーブルは、上記フラッシュメモリデバイスの一括書き込み単位であるページ領域ごとに、確保されたブロック領域内の下位アドレスから下詰で格納される
    請求項18記載の記憶装置。
  21. アドレステーブルと、
    キャッシュメモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、
    上記フラッシュメモリデバイスのユーザーデータにアクセス可能な処理装置と、を有し、
    上記制御回路は、上記処理装置が上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、上記キャッシュメモリ上に展開される
    コンピュータシステム。
  22. 上記キャッシュメモリはライトバック方式でアクセスされる
    請求項21記載のコンピュータシステム。
  23. 上記キャッシュメモリは、上記小アドレステーブルをエントリとして、小アドレステーブルを複数格納する
    請求項21記載のコンピュータシステム。
  24. アドレステーブルと、
    キャッシュメモリと、
    ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
    上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、
    上記フラッシュメモリデバイスのユーザーデータにアクセス可能な処理装置と、を有し、
    上記制御回路は、上記処理装置が上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記キャッシュメモリに展開され、
    上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録されている
    コンピュータシステム。
  25. フラッシュメモリデバイスのユーザーデータにアクセスする記憶装置のアクセス方法であって、
    上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、キャッシュメモリ上に展開される
    記憶装置のアクセス方法。
  26. 上記キャッシュメモリはライトバック方式でアクセスされる
    請求項25記載の記憶装置のアクセス方法。
  27. 上記キャッシュメモリは、上記小アドレステーブルをエントリとして、小アドレステーブルを複数格納する
    請求項25記載の記憶装置のアクセス方法。
  28. フラッシュメモリデバイスのユーザーデータにアクセスする記憶装置のアクセス方法であって、
    上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
    上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
    上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、キャッシュメモリに展開され、
    上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録される
    記憶装置のアクセス方法。
JP2006245687A 2005-11-30 2006-09-11 記憶装置、コンピュータシステム Expired - Fee Related JP5076411B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006245687A JP5076411B2 (ja) 2005-11-30 2006-09-11 記憶装置、コンピュータシステム
US11/594,882 US8069297B2 (en) 2005-11-30 2006-11-09 Storage device, computer system, and storage device access method
KR1020060118247A KR20070056989A (ko) 2005-11-30 2006-11-28 기억장치, 컴퓨터 시스템 및 기억장치의 액세스 방법

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2005346660 2005-11-30
JP2005346660 2005-11-30
JP2006135058 2006-05-15
JP2006135058 2006-05-15
JP2006245687A JP5076411B2 (ja) 2005-11-30 2006-09-11 記憶装置、コンピュータシステム

Publications (3)

Publication Number Publication Date
JP2007334852A true JP2007334852A (ja) 2007-12-27
JP2007334852A5 JP2007334852A5 (ja) 2009-04-30
JP5076411B2 JP5076411B2 (ja) 2012-11-21

Family

ID=38088859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006245687A Expired - Fee Related JP5076411B2 (ja) 2005-11-30 2006-09-11 記憶装置、コンピュータシステム

Country Status (3)

Country Link
US (1) US8069297B2 (ja)
JP (1) JP5076411B2 (ja)
KR (1) KR20070056989A (ja)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009107393A1 (ja) * 2008-02-29 2009-09-03 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、及び情報記録システム
JP2011511388A (ja) * 2008-02-04 2011-04-07 アップル インコーポレイテッド メモリマッピング技術
WO2011068109A1 (ja) * 2009-12-03 2011-06-09 株式会社日立製作所 記憶装置、およびメモリコントローラ
JP2012514794A (ja) * 2009-01-05 2012-06-28 サンディスク コーポレイション 記憶装置におけるマッピングアドレステーブルの維持
US8234438B2 (en) 2008-10-06 2012-07-31 Samsung Electronics Co., Ltd. Operation method of non-volatile memory
JP2012517645A (ja) * 2009-02-11 2012-08-02 インディリンクス カンパニー リミテッド 半導体ディスクシステムのバッファキャッシュプログラミング方法およびバッファキャッシュプログラミング装置
JP2013152676A (ja) * 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置
US8909895B2 (en) 2011-06-03 2014-12-09 Samsung Electronics Co., Ltd. Memory apparatus
JP2015158941A (ja) * 2011-01-06 2015-09-03 マイクロン テクノロジー, インク. メモリアドレス変換
US9146858B2 (en) 2012-05-11 2015-09-29 Sony Corporation Control device, storage device, and storage control method
KR101584048B1 (ko) 2009-01-05 2016-01-13 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리에서 예비 블록 관리 방법
US9454475B2 (en) 2012-05-08 2016-09-27 Sony Corporation Control device, storage device, and data writing method
US9483396B2 (en) 2012-05-17 2016-11-01 Sony Corporation Control apparatus, storage device, and storage control method
US9575883B2 (en) 2012-05-01 2017-02-21 Tessera Advanced Technologies, Inc. Control device, storage device, and storage control method
JP2017084338A (ja) * 2015-08-24 2017-05-18 エイチジーエスティーネザーランドビーブイ フラッシュメモリのフラッシングを改善する方法およびシステム
WO2017126096A1 (ja) * 2016-01-22 2017-07-27 株式会社日立製作所 記憶装置および記憶装置の制御方法

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843218B1 (ko) * 2006-12-18 2008-07-02 삼성전자주식회사 어드레스 쉬프팅을 이용하여 블럭 사이즈를 변경하는플래시 메모리 장치 및 방법
US7791952B2 (en) 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
JP5111882B2 (ja) * 2007-02-09 2013-01-09 株式会社東芝 不揮発性半導体記憶装置
US7793036B2 (en) * 2007-05-30 2010-09-07 Intel Corporation Method and arrangements for utilizing NAND memory
US7752175B2 (en) * 2007-10-29 2010-07-06 Objectivity, Inc. Method, system and computer-readable media for repairing corruption of data record references
US8892831B2 (en) * 2008-01-16 2014-11-18 Apple Inc. Memory subsystem hibernation
KR101103110B1 (ko) 2008-02-29 2012-01-04 가부시끼가이샤 도시바 메모리 시스템
JP2009211233A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
KR100982591B1 (ko) * 2008-03-17 2010-09-15 한양대학교 산학협력단 단계적 인덱싱을 위한 파일 시스템, 메인 기억장치 및플래시 기억장치 그리고 상기 단계적 인덱싱을 통한 데이터관리 방법
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management
US7719876B2 (en) 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
IT1392921B1 (it) * 2009-02-11 2012-04-02 St Microelectronics Srl Regioni allocabili dinamicamente in memorie non volatili
JP4843693B2 (ja) * 2009-03-30 2011-12-21 株式会社東芝 記憶装置
US8719652B2 (en) 2009-05-12 2014-05-06 Stec, Inc. Flash storage device with read disturb mitigation
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
TWI431627B (zh) * 2009-07-31 2014-03-21 Silicon Motion Inc 快閃記憶體裝置及快閃記憶體裝置之運作方法
TWI453747B (zh) * 2009-09-02 2014-09-21 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
FR2950463B1 (fr) * 2009-09-21 2011-12-09 St Microelectronics Rousset Procede de lecture d'une memoire non volatile au moyen de metadonnees et d'une table de correspondance
EP2302638B1 (fr) 2009-09-21 2013-04-17 STMicroelectronics (Rousset) SAS Procédé d'écriture et de lecture de données dans une mémoire non volatile, au moyen de métadonnées
US20110145477A1 (en) * 2009-12-15 2011-06-16 Rudelic John C Flash translation layer using phase change memory
EP2544092A4 (en) * 2010-03-04 2014-03-19 Nec Corp STORAGE DEVICE
CN101799788B (zh) * 2010-03-23 2014-06-11 中兴通讯股份有限公司 一种分级管理存储资源的方法及系统
CN101825995B (zh) * 2010-05-11 2011-08-03 太仓市同维电子有限公司 支持在小闪存分区上读写文件的方法
US9235502B2 (en) 2011-09-16 2016-01-12 Apple Inc. Systems and methods for configuring non-volatile memory
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US11024352B2 (en) 2012-04-10 2021-06-01 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
JP5813589B2 (ja) * 2012-07-13 2015-11-17 株式会社東芝 メモリシステムおよびその制御方法
CN103577339B (zh) * 2012-07-27 2018-01-30 深圳市腾讯计算机系统有限公司 一种数据存储方法及系统
KR102530262B1 (ko) 2016-07-21 2023-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10387065B2 (en) 2016-09-09 2019-08-20 SK Hynix Inc. Memory system and operating method thereof
US10970226B2 (en) 2017-10-06 2021-04-06 Silicon Motion, Inc. Method for performing access management in a memory device, associated memory device and controller thereof, and associated electronic device
JP7020989B2 (ja) 2018-04-23 2022-02-16 株式会社メガチップス 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
TW202004504A (zh) * 2018-05-24 2020-01-16 韓商愛思開海力士有限公司 記憶體裝置、記憶體裝置的控制方法及記錄媒體
CN117527529B (zh) * 2024-01-05 2024-03-19 平湖科谱激光科技有限公司 一种可自动恢复正常的以太网数据存储方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073409A (ja) * 2000-08-28 2002-03-12 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0832762A (ja) 1994-07-20 1996-02-02 Fuji Xerox Co Ltd 光学系のノイズ遮蔽構造
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
JP2005001714A (ja) 2003-06-12 2005-01-06 Dora Inc 磁気処理機能を有する浅底容器
JP2005114711A (ja) 2003-09-19 2005-04-28 Nsk Ltd 転がり軸受ユニットの荷重測定装置
JP4676692B2 (ja) 2003-12-05 2011-04-27 名古屋電機工業株式会社 表示ユニット
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073409A (ja) * 2000-08-28 2002-03-12 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511388A (ja) * 2008-02-04 2011-04-07 アップル インコーポレイテッド メモリマッピング技術
US8417893B2 (en) 2008-02-04 2013-04-09 Apple Inc. Memory mapping techniques
JP5577238B2 (ja) * 2008-02-29 2014-08-20 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、及び情報記録システム
WO2009107393A1 (ja) * 2008-02-29 2009-09-03 パナソニック株式会社 アクセス装置、情報記録装置、コントローラ、及び情報記録システム
US8914579B2 (en) 2008-02-29 2014-12-16 Panasonic Corporation Access device, information recording device, controller, and information recording system
US8234438B2 (en) 2008-10-06 2012-07-31 Samsung Electronics Co., Ltd. Operation method of non-volatile memory
KR101584048B1 (ko) 2009-01-05 2016-01-13 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리에서 예비 블록 관리 방법
JP2012514794A (ja) * 2009-01-05 2012-06-28 サンディスク コーポレイション 記憶装置におけるマッピングアドレステーブルの維持
JP2012517645A (ja) * 2009-02-11 2012-08-02 インディリンクス カンパニー リミテッド 半導体ディスクシステムのバッファキャッシュプログラミング方法およびバッファキャッシュプログラミング装置
GB2488480A (en) * 2009-12-03 2012-08-29 Hitachi Ltd Storage device and memory controller
WO2011068109A1 (ja) * 2009-12-03 2011-06-09 株式会社日立製作所 記憶装置、およびメモリコントローラ
GB2488480B (en) * 2009-12-03 2017-07-19 Hitachi Ltd Storage device and memory controller
JP5480913B2 (ja) * 2009-12-03 2014-04-23 株式会社日立製作所 記憶装置、およびメモリコントローラ
US8949515B2 (en) 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller
JP2015158941A (ja) * 2011-01-06 2015-09-03 マイクロン テクノロジー, インク. メモリアドレス変換
US8909895B2 (en) 2011-06-03 2014-12-09 Samsung Electronics Co., Ltd. Memory apparatus
JP2013152676A (ja) * 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置
US9575883B2 (en) 2012-05-01 2017-02-21 Tessera Advanced Technologies, Inc. Control device, storage device, and storage control method
US9454475B2 (en) 2012-05-08 2016-09-27 Sony Corporation Control device, storage device, and data writing method
US9146858B2 (en) 2012-05-11 2015-09-29 Sony Corporation Control device, storage device, and storage control method
US9483396B2 (en) 2012-05-17 2016-11-01 Sony Corporation Control apparatus, storage device, and storage control method
JP2017084338A (ja) * 2015-08-24 2017-05-18 エイチジーエスティーネザーランドビーブイ フラッシュメモリのフラッシングを改善する方法およびシステム
US10209891B2 (en) 2015-08-24 2019-02-19 Western Digital Technologies, Inc. Methods and systems for improving flash memory flushing
WO2017126096A1 (ja) * 2016-01-22 2017-07-27 株式会社日立製作所 記憶装置および記憶装置の制御方法
JPWO2017126096A1 (ja) * 2016-01-22 2018-08-30 株式会社日立製作所 記憶装置および記憶装置の制御方法

Also Published As

Publication number Publication date
US20070124531A1 (en) 2007-05-31
JP5076411B2 (ja) 2012-11-21
KR20070056989A (ko) 2007-06-04
US8069297B2 (en) 2011-11-29

Similar Documents

Publication Publication Date Title
JP5076411B2 (ja) 記憶装置、コンピュータシステム
JP5162846B2 (ja) 記憶装置、コンピュータシステム、および記憶システム
JP4961693B2 (ja) コンピュータシステム
JP4910360B2 (ja) 記憶装置、コンピュータシステム、およびデータ書き込み方法
JP4956922B2 (ja) 記憶装置
JP4967680B2 (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
US8688894B2 (en) Page based management of flash storage
US6938144B2 (en) Address conversion unit for memory device
US8904083B2 (en) Method and apparatus for storing data in solid state memory
JP5130646B2 (ja) 記憶装置
US7711892B2 (en) Flash memory allocation for improved performance and endurance
US20150309927A1 (en) Hybrid Non-Volatile Memory System
US20140304453A1 (en) Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems
US20120239853A1 (en) Solid state device with allocated flash cache
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
JP2008146253A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2008146254A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US20100318726A1 (en) Memory system and memory system managing method
JP5338859B2 (ja) 記憶装置および情報処理システム
JP2007334413A (ja) 記憶装置
JP2008181203A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
KR100490603B1 (ko) 플래시 메모리 동작 제어 방법 및 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090317

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120220

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120813

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5076411

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees