JP2007334852A - 記憶装置、コンピュータシステム、および記憶装置のアクセス方法 - Google Patents
記憶装置、コンピュータシステム、および記憶装置のアクセス方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User 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
その代表例として、NAND型フラッシュメモリが挙げられる。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
しかし、上述のようなフラッシュメモリでそのようなアクセスを行うと、結局実消去ブロック領域全体を消去せねばならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。
2.次にバッファメモリ23内で、相当するデータを更新する。
3.次にフラッシュメモリ上のブロック領域21の消去を実行する。
4.最後に上記消去済の領域21に、バッファメモリ23から、更新後のブロックデータを全て書き戻す。
図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の消去を実施する。
更新後のブロック25には、上記処理4.の時点で既にアクセスが可能になり、消去の時間を節約できる。
予備ブロックを複数設けて全体の中で循環させれば、特定ブロックへの書き換えの集中も緩和できる。また、このようなアドレス変換は欠陥ブロックへのアクセスを防止する目的にも有用である。
図4(A)はフラッシュメモリの記憶領域を示し、図4(B)はアドレステーブルを示している。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック21内の対応するページ領域22へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ内で直接書き込める適当な空きページ領域が検索される。たとえば、物理ブロックアドレス“0xAA”に相当する消去済み空きブロック25の先頭ページ領域29が適切な書き込み先として選択された場合、ページ領域22のデータのみがページバッファ24を介して更新され、ページ領域29に書き込まれる。この際、論理ページアドレス“0x5502”はページ領域29の物理アドレス“0xAA00”にリマッピングされる。ページ領域22上の旧データは、当面そのまま残して無効扱いとしておく。
したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
あるいは、上記ページ単位のアドレス変換とブロック単位のアドレス変換の中間的な形態も存在する。たとえば各ブロックと、その中に含まれるページ群の関係は保ったままで、ブロック内部の各ページの位置関係をリマッピングする。これによるオーバーヘッドの低減効果は先述の二手法の中間である。
いずれも初期論理アドレスから生成されたアドレス値をインデックスとしてアドレステーブルを参照し、対応するユーザーデータの所在情報(フラッシュメモリ上の物理アドレス等)を取得する。それをもとにフラッシュメモリへのデータアクセスを実施する。
特に、一括書き込み単位である各ページグループについて、互いの相対位置を変えるリマッピングを実施すれば、アクセス効率の向上に顕著な効果を獲得することができる。
ISSCC2002予稿集のp106、セッション6.4
しかし、効果的な管理を行おうとすれば、それだけ微細な単位でのアドレス変換が必要になり、テーブルの大きさが巨大になって、多量のメモリ領域を占有してしまう。
たとえばページサイズが2kBで、総容量2GBのストレージの場合、その中には1M個ものページグループが格納される。ここにページ単位で完全なアドレス変換を実施すれば、そのアドレッシングには20ビットが必要なので、アドレステーブルは20Mビットもの大きさになってしまう。
しかし、アドレステーブルは常時更新されていくので、フラッシュメモリ上のアドレステーブルも適時更新されなければならない。しかし、前述の如くフラッシュメモリの書き換えには制限が多く、読み出しや書き込みでエラーが発生すると、その対処も必要である。
またその読み出しや書き込みには専用の管理が施され、ユーザーデータのような迅速なアクセスは困難であった。したがって、そのために多くの操作が追加され、煩雑な上、テーブルの入れ替えにも時間がかかるという不利益があった。
したがって、分割数は最小限に留め、一塊の大きな連続アドレス領域をRAM上のテーブルでカバーして、通常のユーザーアクセスはその範囲に留まることが期待されていた。
すなわち、アドレステーブルを展開したRAMはキャッシュとして使用されてはいるが、従来のアドレステーブルのキャッシングについては、単なるバッファというべきプリミティブな形態で実施されていたに過ぎず、上述の如く1エントリのみの最も単純なキャッシングが行われるのみであった。また、それらはユーザーデータとは独立したテーブル専用のキャッシュメモリとして使用されていた。
さらに、このようなキャッシュを使用した場合、電源瞬断が発生した際にキャッシュ内のテーブル更新内容が消失し、その回復には非常に時間がかかるという不利益がある。
ファイル記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38を有する。
制御回路32は、RAM40を含み、RAM40にはテーブルリスト41、アドレステーブル42、および検索テーブル43を有する。
ホストシステム50は、CPU、RAM、ROM、システムバス等を含んで構成されている。
また後述するように、簡単のため各々のフラッシュメモリチップは、たとえば消去を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個のページデータが格納される。
インターフェース回路31は、ATAやPCIエクスプレス等の規格に従ってホストシステム50との間で、データやコマンドの送受を行う。
制御回路32は、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、プログラムを実行するためのコードエリアやワーキングエリアが設けられており、さらにページ単位の仮想アドレスを管理するアドレステーブル42、アドレステーブルを管理するテーブルリスト41、およびデータ書き込みのために適切な空きページを検索するための検索テーブル43が構築されている。
制御回路32はその間のデータ授受に介在し、テーブルリスト41やアドレステーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
記憶装置内部では簡単のため、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のフローチャートに従って、以下のような手順で実行される。
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40にアクセスし、そこに常駐するテーブルリスト41から、対応するアドレステーブル42の所在情報を取得する。
テーブルリスト41に設けられたテーブルインデックス(T−Index)は2kページ分の論理ページアドレス領域ごとに分割されており、ここではセクタアドレスの上位ビット“0000_0101_0101” (“0x055”の二進数表記)中の“0000_0101_0”までがインデックスとして使用される。すなわち“0x050”のインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。
上記物理ページアドレスをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にアドレステーブルが格納されたページグループが読み出される。これがRAM40上に展開されて、アドレステーブル42が構築される。
アドレステーブル42は各論理ページアドレスLPAに対応して4バイトの(32ビット)情報を保持しており、その内20ビットがフラッシュメモリモジュール上の物理ページアドレスPPAである。残りのビットには、たとえば更新時のタイムスタンプや更新回数等、履歴情報等が格納されている。
前述の如く、1アドレステーブルは2kページ分の論理ページアドレスをカバーする。したがって、その総容量は(4バイト x 2k = 8kバイト)となり、一括書き込み単位である1ページ分の容量に相当する。
次に、再度セクタの論理アドレス“0x05502C”より、論理ページアドレス部LPA“0x05502”をインデックスにアドレステーブル42が参照され、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x060B0”が取得される。
上記物理ページアドレスPPAをもって、再度フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。この操作はステップST2におけるアドレステーブルの読み出し時と全く同様であり、統一した管理で実施することができる。
その後セクタアドレス“0xC”に相当する部分がページバッファ34から選択的にホストシステム50側に出力され、読み出し動作が完了する。
読み出し時と同様に、フラッシュメモリモジュール39より読み出した所望のデータをページバッファ34に格納する。
ページバッファ34上で所望のセクタ箇所を更新する。
更新したユーザーデータのフラッシュメモリモジュール39への書き込み先として、RAM40内に常駐した検索テーブル43から、適当なページ領域の物理ページアドレスPPAが選択される。ここでは簡単のため、物理ページアドレスは、上位12ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(28)より構成される。
検索テーブル43には、各ブロックごとに、内部に含まれるページの有効/無効がフラグとして格納されている。後述するように、ページが無効化されると対応するフラグに“1”が立つ。さらに各ブロックが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスは、レジスタ44に保存されており、書き込み先にはそれがインクリメントされたページが順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”がスキャンされ、次の未使用ブロックが検出されて、その先頭ページが選択される。
レジスタ44の値は現在“0x0AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x0AA02”を選択する。
上記物理ページアドレスPPAをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリモジュールに一括書き込みされる。書き込みが完了すると、アドレステーブル42が更新され、論理ページアドレスLPA“0x05502”に対応する物理ページアドレスPPAは“0x0AA02”に更新される。また、旧物理ページアドレス“0x060B0”に相当するページ領域は無効となり、検索テーブル43の対応するページのフラグが“1”に変わる。
さらに、アドレステーブル42の更新は、フラッシュメモリモジュール上にも反映される必要がある。この際アドレステーブルのフラッシュメモリモジュールへの書き込み先として、検索テーブル43から、再度適当な空きページ領域の物理ページアドレスPPAが選択される。
すなわち、ステップST6に示されたユーザーデータの更新と同様に、レジスタ44の値がインクリメントされ、物理ページアドレス“0x0AA03”が選択される。
上記物理ページアドレスをもって、フラッシュメモリモジュール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)。
このような構成を取った結果、制御回路32は両者を統一的に管理することが可能となり、アドレステーブル42はユーザーデータと同様に柔軟かつ迅速にアクセスできるようになった。
このようなケースでは、特にRAM40がSRAMやDRAMの場合、そこに常駐するテーブルリスト41の消失が問題となる。以下にその対策を述べる。
これによって、たとえばアドレステーブルの物理ページアドレスPPAが与えられれば、フラッシュメモリ内に格納されたアドレステーブルにアクセスし、対応するテーブルインデックス(T−Index)が取得できる。すなわち、テーブルリストの逆引きが可能である。
これにより、テーブルリストが事故的に消失した際には、物理ページアドレスをスキャンして各ページグループを読み出すことで、各アドレステーブルにおける物理ページアドレスとテーブルインデックス(T−Index)の関係を調べ、テーブルリスト41を再構築することが可能である。
また、そのような再構築のケースを想定した場合、予備領域にはテーブルインデックスとともにタイムスタンプ等の履歴情報を格納し、同じテーブルインデックスが格納されていた場合にどちらが新しいアドレステーブルであるか、判別できるようにしておくことが望ましい。
すなわち、RAM40の少なくとも一部を不揮発性RAMで構成し、そこにテーブルリスト41を常駐させておけば、電源瞬断による消失からは完全に保護することが可能である。
FeRAMは強誘電体キャパシタの分極方向の違いでデータを記憶する半導体メモリである。たとえばUSP4873664においてS.Sheffeieldらがその一形態を提案している。
OUMはたとえばカルコゲナイド膜の相転移でデータを記憶する半導体メモリである。たとえばIEDM2001の論文ダイジェストの803ページに、S.Laiらが論文を掲載している。近年はPRAMとも呼称されている。
RRAMは磁気抵抗効果材料の抵抗ヒステリシスでデータを記憶する半導体メモリである。たとえばIEDM2002の論文ダイジェストの7.5にはW.W.Zhuangらが論文を掲載している。
それらの不揮発性メモリは、いずれもセルレベルのアクセス速度や書き換え回数において、フラッシュメモリより数桁性能が高い。
本実施形態においては、16ビットIOのチップ2個を32ビットバスに接続することで完全な並列動作としたが、16ビットのバスを両チップで共有すれば、転送は個々に行なわざるを得ない。その場合、ページバッファ34から片側のメモリチップにデータを転送している間に、もう片側のメモリチップ内で書き込みをスタートしても良いし、両者への転送を順次行った後に、書き込みを同時スタートしても良い。
すなわち、複数のフラッシュメモリチップ35,36、あるいはそれらと制御回路等を含むフラッシュメモリモジュール39は実質的に一つのフラッシュメモリデバイスとみなすことが可能であり、内部の動作タイミングに関わらず、その一括書き込みの基本単位がページグループと表現されている。
たとえば、一部のハードディスク用インターフェースでは、初期論理アドレスは上述のようなシリアルなセクタアドレスではなく、シリンダー番号、ヘッド番号、セクタ番号を組み合わせた3次元アドレスで与えられる。インデックスにはその値の一部を使用しても良いが、それをシリアルなセクタアドレスに変換し、その値の一部を使用しても良い。その他初期論理アドレスがどのような形態をとろうとも、それに基づいて一意的に得られた値であれば、インデックスとして使用できる。
また、キャッシュされたアドレステーブルの更新時には更新の都度にその結果をフラッシュメモリに反映させるライトスルー方式ではなく、たとえばエントリ開放の際にまとめて反映させるライトバック方式を採用した方が効率が良い。
さらに、そのようなキャッシュには単一エントリではなく、複数のアドレステーブルをエントリとして格納し、キャッシュテーブルを用いた高度なキャッシュ管理を導入することが望ましい。それによって高いヒット率を獲得し、上記オーバーヘッドは殆ど消失させることが可能になる。
ハードウエア構成は、図5に示した第1の実施形態と同様であるが、内蔵RAM40Aにはテーブルリスト41)、複数のアドレステーブル42_0,42_1・・・、検索テーブル43に加え、キャッシュテーブル45が構築されている。アドレステーブル42_0,42_1・・・の個々の構成、および検索テーブル43は図6に示した第1の実施形態と同様である。
ファイル記憶装置30Aの内部におけるフラッシュメモリモジュール39への具体的アクセスは、図10のフローチャートに従って、以下のような手順で実行される。
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40Aにアクセスし、そこに常駐するテーブルリスト41から、対応するアドレステーブルの所在情報を取得する。第1の実施形態と同様に、論理アドレスの上位9ビットが使用されて、“0x050”のテーブルインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。
上記物理ページアドレスPPAをもとに、キャッシュテーブル45が検索され、キャッシュへのヒットの有無が検査される。キャッシュテーブル45はそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46および47で管理されている。
なお、図9(A),(B)の例では、物理ページアドレス“0x030B0”はいずれのエントリの物理ページアドレスフィールドPPAにも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
キャッシュミスした場合、フラッシュメモリモジュール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”に更新される。
内蔵RAM40Aに展開されたアドレステーブルのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレスを取得する(ST141)。それを元にフラッシュメモリモジュール39より所望のユーザーデータが格納されたページグループをページバッファ34に読み出し(ST142)、それを介したデータアクセスが可能になる。この手順は第1の実施形態において(図7のステップST3,ST4)で例示したものと同じである。
ページバッファ34上で所望のセクタ箇所を更新する。
ページバッファ34上のページグループを、フラッシュメモリモジュール39に書き戻す。この際の手順は第1の実施形態における(図7のステップST6,ST7)と同様であり、検索テーブル43から空き領域の物理ページアドレスPPAを取得して(ST161)、そこに書き込みを行った後、上記アドレステーブルの対応箇所、すなわち論理ページアドレス“0x05502”に対応する物理ページアドレスを、新規書き込み先に更新する(ST162)。
このような管理は、フラッシュメモリモジュール内にアドレステーブルがユーザーデータと混在し、分散格納される際には特に有効である。しかしそれらが特定の消去ブロックに集約的に格納される場合でも、格納順序等の柔軟性を向上させる上で効果がある。
これによってアドレステーブルの物理ページアドレスPPAが与えられれば、キャッシュまたはフラッシュメモリモジュール内に格納されたアドレステーブルにアクセスし、対応するテーブルインデックス(T−Index)が取得できる。このような逆引き機能があれば、ステップST13のエントリ開放時に、開放エントリに対応するインデックスを即座に取得して、テーブルリスト41を更新することが可能になる。
さらに、第1の実施形態で述べたように、テーブルリストが消失しても、フラッシュメモリモジュール39に格納された各アドレステーブルをスキャンすることで、それを再構築することができる。
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、まずその上位アドレスからテーブルインデックス“0x050”が生成され、その値でキャッシュテーブル45bが検索されて、キャッシュへのヒットの有無が検査される。
キャッシュテーブル45bはそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46bおよび47bで管理されている。
なお、図11の例では、テーブルインデックス“0x050”はいずれのエントリのテーブルインデックスフィールド(T−Index)にも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
キャッシュミスした場合、フラッシュメモリモジュール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”に更新される。
内蔵RAM40Aに展開されたアドレステーブルのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレスPPAを取得する(ST241)。それを元にフラッシュメモリモジュール39より所望のユーザーデータが格納されたページグループをページバッファ34に読み出し(ST242)、それを介したデータアクセスが可能になる。この手順は第1の実施形態において(図7のステップST3,ST4)で例示したものと同じである。
ページバッファ34上で所望のセクタ箇所を更新する。
ページバッファ上のページグループを、フラッシュメモリモジュール39に書き戻す。この際の手順は第1の実施形態における(図7のステップST6,ST7)と同様であり、検索テーブル43から空き領域の物理ページアドレスPPAを取得して(ST261)、そこに書き込みを行った後、上記アドレステーブルの対応箇所、すなわち論理ページアドレス“0x05502”に対応する物理ページアドレスを、新規書き込み先に更新する(ST262)。
アドレステーブルをバックアップするためには、通常はユーザーデータを保存する際、その予備領域にアドレステーブル42_n上の対応するインデックスたる論理ページアドレスLPAを同時に保存する。これにより、電源瞬断でアドレステーブルが破壊されても、フラッシュメモリモジュール内の全物理ページアドレスをスキャンすることで、物理ページアドレスと論理ページアドレスとの対応を取得して、アドレステーブルを再構築できる。
ただし、フラッシュメモリモジュールの容量が巨大化し、ページ数が増えてくると、スキャンに多大な時間が消費されるようになる。したがって、このようなバックアップのみではなく、より簡便な対策が望まれる。
すなわちRAM40Aの少なくとも一部を不揮発性RAMで構成し、その領域をアドレステーブルのキャッシュに使用すれば、全アドレステーブルを電源瞬断から完全に保護できる。なお、第1の実施形態においても述べたように、テーブルリスト41についても、不揮発性RAM内に格納しておくことが望ましい。さらにキャッシュテーブル45、検索テーブル43も不揮発性RAM内に格納しておけば、システムの主要情報は完全に保存され、電源瞬断からも瞬時の復帰が可能である。
ハードウエアの構成例は図8に示した第2および第3の実施形態と同様である。
これにより、ユーザーデータとアドレステーブルの管理は統一され、単純化される。さらに両者の違いに関わらず、最も使用頻度の高いものを優先してキャッシングでき、RAMの有効活用が可能である。
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40Aにアクセスし、そこに常駐するテーブルリスト41cから、対応するアドレステーブルの所在情報を取得する。第1の実施形態と同様に、論理アドレスの上位9ビットが使用されて、“0x050”のテーブルインデックスに対応するアドレステーブルの所在を示す物理ページアドレスPPA“0x030B0”が取得される。
上記物理ページアドレスPPAをもとに、キャッシュテーブル45cが検索され、キャッシュへのヒットの有無が検査される。キャッシュテーブル45cはそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46cおよび47cで管理されている。
なお、図14の例では、物理ページアドレス“0x030B0”はいずれのエントリの物理ページアドレスのフィールドPPAにも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
キャッシュミスした場合、フラッシュメモリモジュール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”に更新される。
内蔵RAM40Aに展開されたアドレステーブル42cのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレス“0x060B0”を取得する。
上記物理ページアドレスPPAをもとに、キャッシュテーブル45cが検索され、キャッシュへのヒットの有無が検査される。手順はステップST32,ST33と同様である。
なお、図14の例では、物理ページアドレス“0x060B0”はいずれのエントリの物理ページアドレスフィールドPPAにも一致していない。したがって、所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
キャッシュミスした場合、フラッシュメモリモジュール39から所望のユーザーデータが読み出され、内蔵RAM40A内の空き領域に展開される。この際、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST381〜ST384:
上記ステップS34のST341〜ST344の工程と全く同様の手順で先頭エントリ“2”が開放され、先頭エントリレジスタ(48c)の値は“3”にインクリメントされる。
<<ユーザーデータの展開>>
ステップST385:
所望のユーザーデータがエントリとして追加される。すなわち、フラッシュメモリモジュール39より物理ページアドレス“0x060B0”のページを読み出して、RAM40Aのエントリ“2”で指定された領域に展開する。この際、新たにエントリ“2”が追加される。これに伴って末尾エントリレジスタ47cの値は“2”にインクリメントされる。キャッシュテーブル45c上のエントリ“2”に対応する物理ページアドレスは“0x060B0”に更新される。
キャッシュメモリ34上で所望のユーザーデータの読み出しまたは更新を実施する。
ハードウエアの構成例は図8に示した第2および第3の実施形態例と同様である。
すなわち、20ビットの論理ページアドレス中、上位8ビットが“0x40”に相当する論理ページは本記憶装置には存在しない。したがって、その値を、このエントリがアドレステーブルであることを識別するフラグとし、下位12ビットにテーブルインデックスを挿入した。この値を用いてキャッシュメモリ、さらにはフラッシュメモリに全く同列にアクセスできる。
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、まずその上位アドレス“0x05502”からキャッシュテーブル45dが検索され、キャッシュへのヒットの有無が検査される。キャッシュテーブル45dはそれぞれがRAM40A内の所定の格納領域に対応した8つのエントリを持っている。エントリは先入先出しのラウンドロビン方式で管理され、新規エントリは末尾に追加される。エントリの先頭と末尾はそれぞれレジスタ46dおよび47dで管理されている。
なお、図15の例では、論値ページアドレス“0x05502”はいずれのエントリのテーブルインデックスフィールドにも一致していない。したがって、所望のユーザーデータはRAM40A内には存在しておらず、キャッシュミスが発生している。
次にセクタアドレス“0x05502C”の上位アドレスからテーブルインデックス“0x050”が生成され、さらにフラグを追加した検索タグ“0x40050”が生成されて、再度キャッシュテーブル45dが検索され、キャッシュへのヒットの有無が検査される。
なお、図15の例では、検索タグ“0x40050”はいずれのエントリのテーブルインデックスフィールドにも一致していない。従って所望のアドレステーブルはRAM40A内には存在しておらず、キャッシュミスが発生している。
キャッシュミスした場合、フラッシュメモリモジュール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”に更新される。
さらに、フラッシュメモリモジュール39から所望のユーザーデータが読み出され、内蔵RAM40A内の空き領域に展開される。この際、以下のような手順でRAM内の空き領域が確保され、アドレステーブルが展開される。
<<既存エントリの開放>>
ステップST461:
上記ステップST45の工程と全く同様の手順で先頭エントリ“2”が開放され、先頭エントリレジスタ46dの値は“3”にインクリメントされる。
<<ユーザーデータの展開>>
ステップST462:
内蔵RAM40Aに展開されたアドレステーブルのキャッシュデータから、論理ページアドレス“0x05502”に対応するユーザーデータの物理ページアドレス“0x060B0”を取得する。
ステップST463:
所望のユーザーデータがエントリとして追加される。すなわち、フラッシュメモリモジュール39より上記物理ページアドレスPPA“0x060B0”のページを読み出して、RAM40Aのエントリ“2”で指定された領域に展開する。この際、新たにエントリ“2”が追加される。これに伴って末尾エントリレジスタ47dの値は“2”にインクリメントされる。キャッシュテーブル45d上のエントリ“2”に対応する論理ページアドレスは“0x05502”に更新される。
キャッシュメモリ34上で所望のユーザーデータの読み出しまたは更新を実施する。
キャッシュメモリへのエントリ追加に際し、空き領域を確保するために開放しようとしたエントリがユーザーデータであった場合、それらをフラッシュメモリモジュール上に書き戻すには、対応するアドレステーブルの操作が必要になる。
しかし、そのようなテーブルがキャッシュ上に存在しないと、それらを再度フラッシュメモリから取得し、RAM上に展開させる必要がある。それを同じキャッシュメモリ内に展開する場合、一旦開放したエントリはそのテーブルで消費され、再度エントリの開放から操作はやり直しとなる。最悪の場合、何度も同じループを繰り返す無駄な操作が発生してしまうおそれがある。
すなわち、それを保証するように、アドレステーブルの開放順位を操作する。またはそれが保証されるようなキャッシュアルゴリズムを採用する。
すなわち、新規データがキャッシュにエントリされる際、必ずアドレステーブルへのアクセスがなされている。しかし、たとえば上述の先入先だしのラウンドロビン方式では、先に読み込まれたアドレステーブルの開放順位が新規データより上位になってしまい、ユーザーデータよりアドレステーブルの方が先に開放されることになる。
これに対して、ユーザーデータが追加された際には、対応するアドレステーブルの開放順位がその下位にくるように、キャッシュテーブルを操作する。あるいはラウンドロビン方式ではなく、先入後だしのスタック方式を採用すれば、自動的にそのような状態が実現される。
いずれもユーザーデータがキャッシュに追加される際には、対応するテーブルの開放順位が、常にその下位に設定される。
<1>: ABCDEFGHと順次追加されたエントリは、基本的には先入れ先だしで開放される。ここにユーザーデータIが追加される。既にキャッシュ内にはIに対応したアドレステーブルDがエントリされている。
<2>: まずアドレステーブルDがアクセスされ、その情報を元に、フラッシュメモリからIが読み出されてキャッシュメモリに追加される。この際Aが開放され、B〜Hの順位が右にシフトする。
<3> ここでDはエントリ列の末尾に付け替えられる。それに伴なってEFGHIの順位は一つ右にシフトする。
<1>,<2>: 操作例1と同じである。
<3>: DとIとのエントリの開放順位がスワップされて入れ替わる。
<1>: ABCDEFGHと順次追加されたエントリは、基本的には先入れ後だしで開放される。すなわちエントリはスタック方式で追加されている。ここにユーザーデータIが追加される。既にキャッシュ内にはIに対応したアドレステーブルDがエントリされている。
<2>: まずアドレステーブルDがアクセスされ、その情報を元に、フラッシュメモリからIが読み出されてキャッシュメモリに追加される。この際その直前に追加したエントリのHが開放される。
またさらに、キャッシュヒット率を向上させるには、新規エントリの追加時のみならず、キャッシュ上のデータが更新された際にも、それを開放順位上のエントリ列の末尾に付け替えるのが効果的である。ユーザーデータにおいてこのような処理が実施されたら、さらに対応するテーブルをその後ろに付け替えるのが望ましい。これによってキャッシュ上の全てのユーザーデータに対して、対応するアドレステーブルが同時にキャッシュ上に存在していることを保証できる。
したがって、第2〜第5の実施形態においては、上述のような各種キャッシュアルゴリズムも同様に適用することができる。たとえばフラッシュメモリモジュールの一括書き込み単位であるページグループをさらに1/N(Nは2以上の整数)に分割し、その中に同様に分割したアドレステーブルを格納して、それをキャッシュエントリの単位にしても良い。
しかし、組み込み型のストレージを搭載したコンピュータシステムでは、ホストCPUがシステムメモリ内にアドレステーブルを展開し、ドライバソフト等を用いて自らその管理を実施するケースも多い。そのようなケースでも、本発明の概念は全く同様に適用することが可能である。
OSやアプリケーションからの要求に応じで、ホストCPUは以下の手順でフラッシュメモリデバイスをアクセスする。
2.次に上記所在情報をもとにフラッシュメモリをアクセスし、アドレステーブルを読み出して、システムメモリ上に展開する。
3.次にアドレステーブルを参照し、OSやアプリケーションが要求する論理アドレスに対応したユーザーデータの、フラッシュメモリデバイス上の所在情報を取得する。
4.最後に上記所在情報をもとにフラッシュメモリをアクセスし、ユーザーデータの読み出し、さらには必要に応じて更新を行う。
たとえば、図6における検索テーブル43や、図には記載されていない欠陥ブロックをスペアの良品ブロックと置き換えるための置換情報を格納したテーブル等が使用されるが、それらもストレージの容量の増大に伴ってテーブルサイズが巨大化し、RAM領域を圧迫するようになる。
しかし、上記管理データ一般については、ユーザーデータと全く同様には扱えないケースがある。
すなわち、それらの格納には専用の消去ブロックをあてがうものの、各専用ブロックはユーザーデータと同様に、フラッシュメモリ上に動的に確保される。この際、それらの格納にはユーザーデータと共通したフラッシュメモリ上の領域が使用される。すなわち上記領域内には、管理用データが格納されたブロックとユーザーデータが格納されたブロックが、互いに分散して混在することになる。
図20(A)〜(D)において、z1はフラッシュメモリデバイスを、z2はユーザーデータを、z3は書き込みポインタを、z4はローカルポインタをそれぞれ示している。
図20(A)に示すように、フラッシュメモリデバイスz1における消去ブロックのアドレス“0x001”〜“0x3EF”の領域内に、ユーザーデータと管理用データが保存される。ここでは書き込みポインタz3が順次インクリメントされ、それに従ってユーザーデータz2がページ単位で書き込まれている。書き込みポインタz3の上位“0x002”はブロックアドレスであり、下位“0xA0”はページアドレスである。
この状態から管理用データを書き込むとする。図20(B)に示すように、書き込みポインタz3のあるブロック“0x002”の次の空きブロック“0x003”が検索され、そこに管理用データの保存領域が確保される。その先頭に管理用データ書き込み用のローカルポインタz4が設定され、そのポインタのインクリメントに従って“0x003”のブロック内に管理用データが順次ページ単位で書き込まれる。
図20(C)に示すように、さらにユーザーデータが書き込まれ、“0x002”が一杯になると、書き込みポインタz3は次の空きブロック“0x004”の先頭に移動し、そこにユーザーデータ用の保存領域が確保される。ポインタz3のインクリメントに従ってユーザーデータの書き込みが継続される。
図20(D)に示すように、さらに管理用データが書き込まれ、“0x003”が一杯になると、書き込みポインタz3のあるブロック“0x004”の次の空きブロック“0x005”が検索され、そこに管理用データの保存領域が確保される。ローカルポインタz4はその先頭に移動し、そのインクリメントに従って“0x005”のブロック内に管理用データが順次書き込まれる。
このような手法は前述のアドレス変換テーブルの格納にも適用できる他、多くの管理用データに適用できる。なお、本手法においては、複数種の管理用データに個別のローカルポインタとブロックを割り当てて、それらを独立に管理することも可能である。
ファイル記憶装置30の内部におけるフラッシュメモリモジュール39への具体的アクセスは、図22のフローチャートに従って、以下のような手順で実行される。
ホストシステム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の容量は、ページごとに領域を確保するより小さくなる。
上記物理ページアドレスをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にアドレステーブルが格納されたページグループが読み出される。これがRAM40上に展開されて、アドレステーブル42eが構築される。
アドレステーブル42eは各論理ページアドレスLPAに対応して4バイトの(32ビット)情報を保持しており、その内20ビットがフラッシュメモリモジュール上の物理ページアドレスPPAである。残りのビットには、たとえば更新時のタイムスタンプや更新回数等、履歴情報等が格納されている。
前述の如く、1アドレステーブルは2kページ分の論理ページアドレスをカバーする。したがって、その総容量は(4バイト x 2k = 8kバイト)となり、一括書き込み単位である1ページ分の容量に相当する。
次に、再度セクタの論理アドレス“0x05502C”より、論理ページアドレス部LPA“0x05502”をインデックスにアドレステーブル42eが参照され、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x060B0”が取得される。
上記物理ページアドレスPPAをもって、再度フラッシュメモリモジュール39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。
その後セクタアドレス“0xC”に相当する部分がページバッファ34から選択的にホストシステム50側に出力され、読み出し動作が完了する。
さらに、データの更新は以下のように実施する。同じ“0x05502C”のセクタを更新するとする。その場合、まずページバッファ34に所望のページを読み出す必要があり、その手順はステップST61〜ステップST64と同様である。
読み出し時と同様に、フラッシュメモリモジュール39より読み出した所望のデータをページバッファ34に格納する。
ページバッファ34上で所望のセクタ箇所を更新する。
更新したユーザーデータのフラッシュメモリモジュール39への書き込み先として、RAM40内に常駐した検索テーブル43eから、適当なページ領域の物理ページアドレスPPAが選択される。ここでは簡単のため、物理ページアドレスは、上位12ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(28)より構成される。
検索テーブル43eには、各ブロックごとに、内部に含まれるページの有効/無効がフラグ(page disabled)として格納されている。ページが無効化されると対応するフラグに“1”が立つ。さらに各ブロックが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスは、レジスタ44eに保存されており、書き込み先にはそれがインクリメントされたページが順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”がスキャンされ、次の未使用ブロックが検出されて、その先頭ページが選択される。
レジスタ44eの値は現在“0x0AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x0AA02”を選択する。
上記物理ページアドレスPPAをもって、フラッシュメモリモジュール39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリモジュールに一括書き込みされる。書き込みが完了すると、アドレステーブル42が更新され、論理ページアドレスLPA“0x05502”に対応する物理ページアドレスPPAは“0x0AA02”に更新される。また、旧物理ページアドレス“0x060B0”に相当するページ領域は無効となり、検索テーブル43eの対応するページのフラグが“1”に変わる。
さらに、アドレステーブル42eの更新は、フラッシュメモリモジュール上にも反映される必要がある。第1の実施形態と異なり、本第6の実施形態におけるアドレステーブルのフラッシュメモリ上への書き込み先は、更新前と同一のブロック“0x030”の空き領域が選択される。
アドレステーブル格納用の専用ブロックには1ブロックに256ページが格納できるにも拘らず、各ブロックには32インデックス分のアドレステーブルしか割り当てられていないので、通常ブロック内には多くの空き領域が残存する。その領域に、レジスタ(48e)に格納されたローカルポインタのインクリメントに従って更新データが追記されることになる。ここではローカルポインタが一つインクリメントされ、物理ページアドレス“0x030C1”が選択される。
まずレジスタ44eの指すブロック“0x0AA” から“Used Flag”がスキャンされ、次の未使用ブロックが検出される。そこにアドレステーブルの新たな書き込み領域が確保され、ローカルポインタはその先頭を指す。新規ブロックの“Used Flag”は“1”に更新される。さらに、テーブルリスト41eの情報を参照し、元ブロック“0x030”に格納されていた各小テーブルが、ローカルポインタのインクリメントに従って新規ブロックに順次コピーされる。それが完了するとテーブルリスト41eの各フィールドが更新され、元ブロックは消去される。消去後の元ブロックの“Used Flag”は“0”となる。これにより書き込み先ブロックの移動が行なわれた。
最後にローカルポインタはもう一つインクリメントされ、新規に確保されたブロックの次の空きページ領域が、更新された小アドレステーブルの書き込み先として選択される。
上記物理ページアドレスをもって、フラッシュメモリモジュール39が再度アクセスされる。まずアドレステーブル42eはRAM40からページバッファ34にコピー転送され、さらにページグループとしてフラッシュメモリモジュールに一括書き込みされる。
書き込みが完了すると、テーブルリスト41eが更新され、テーブルインデックス(T−Index)“0x050”に対応するページオフセットPOFFは“0xC1”に更新される。
なお、第1の実施形態のようにブロックテーブル43eのページフラグ(page disabled)は更新する必要は無い。
したがって、たとえばアドレステーブルに次いで大きな容量を持つ検索テーブル(43e)のページフラグ(page disabled)部分について、それをUsedフラグと分離し、必要があれば同様の手法で分割して、フラッシュメモリデバイス内に格納できる。
その場合、上記Usedフラグはユーザーデータやアドレステーブルと共有することになる。一方、ページフラグ(page disabled)の格納場所を示すテーブルとして、テーブルリスト(41e)に相当するリストを、もう一つ追加する必要がある。
ファイル記憶装置30の内部におけるフラッシュメモリモジュール39への具体的アクセスは、図24のフローチャートに従って、以下のような手順で実行される。
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x05502C”のセクタアドレスが入力されると、制御回路32はまずその上位アドレスを受けて内蔵RAM40にアクセスし、そこに常駐するテーブルリスト41fから、対応するアドレステーブル42fの所属するブロックアドレスを取得する。
ブロック“0x030”の先頭ページ“0x00”から、ローカルポインタのある“0xC0”までの全ページの冗長領域をスキャンし、所望の小テーブルが格納されたページを検索する。各ページの冗長領域には、格納された小テーブルのテーブルインデックスが記載されている。この値が所望の小テーブルのテーブルインデックス“0000_0101_0”に一致し、かつ最も下位のアドレスにある(すなわち最も新しく書き込まれた)ページが、該当ページである。このようにして、たとえば所望の小テーブルの物理ページアドレスPPA“0x030B0”が取得される。
所望の小アドレステーブル42fをRAM内に読み出す。この工程は第6の実施形態のステップST62と同様の作業である。
アドレステーブル42fからユーザーデータの物理ページアドレスPPA“0x060B0”を取得する。この工程は第6の実施形態のステップST63と同様の作業である。
ユーザーデータをフラッシュよりページバッファに読み出す。この工程は第6の実施形態のステップST64と同様の作業である。
ページバッファ34上で所望のセクタ箇所を更新する。この工程は第6の実施形態のステップST65と同様の作業である。
検索テーブル43fおよびポインタ46fから、更新データの書き込み先アドレスを取得する。ここではポインタ46fがインクリメントされて、“0x0AA02”が書き込み先物理ページアドレスとして選択される。この工程は第6の実施形態のステップST66と同様の作業である。
ユーザーデータをフラッシュに書き込む。アドレステーブル42fにおける論理ページアドレスLPA“0x05502”に対応する物理ページアドレスPPAは“0x0AA02”に更新される。また、旧物理ページアドレス“0x060B0”に相当するページ領域は無効となり、検索テーブル43fの対応するページのフラグが“1”に変わる。この工程は第6の実施形態のステップST67と同様の作業である。
更新されたアドレステーブル42fの書き込み先が、更新前と同一のブロック“0x030”の空き領域から選択される。すなわちレジスタ48fに格納されたローカルポインタが一つインクリメントされ、物理ページアドレス“0x030C1”が選択される。
ここまでは第6の実施形態のステップST68と同様の作業である。
まずレジスタ44fの指すブロック“0x0AA” から“Used Flag”がスキャンされ、次の未使用ブロックが検出される。そこにアドレステーブルの新たな書き込み領域が確保され、ローカルポインタはその先頭を指す。新規ブロックの“Used Flag”は“1”に更新される。
まず旧ブロック“0x030”の各ページの冗長領域を全てスキャンして、RAM上に論理ページアドレスとページオフセットを対応させたテーブル49fを一時的に生成する。
このテーブル情報を参照し、元ブロック“0x030”に格納されていた各小テーブルが、ローカルポインタのインクリメントに従って新規ブロックに順次コピーされる。それが完了するとテーブル49fは開放される。テーブルリスト41fの物理ブロックアドレスフィールド“0x030”は新規ブロックのアドレスに書き換えられ、元ブロックは消去される。消去後の元ブロックの“Used Flag”は“0”となる。これにより書き込み先ブロックの移動が行われた。
最後にローカルポインタはもう一つインクリメントされ、新規に確保されたブロックの次の空きページ領域が、更新された小アドレステーブルの書き込み先として選択される。
アドレステーブル42fがフラッシュモジュールに書き込まれる。ただし、第6の実施形態6と異なり、そのページオフセットをテーブルリスト41fに更新記入する必要は無い。
このようなコンピュータシステムでは、巨大なアドレステーブルを活用して、フラッシュメモリ上のデータに効率的なアクセスを実施できる。さらにアドレステーブルの格納に大きなRAM領域を占有しない。したがって、高速、柔軟かつ安価で、信頼性の高いコンピュータシステムを構築することが可能である。
さらに、アドレステーブル以外の管理用データについても、ユーザーデータと同じフラッシュメモリ領域に、それらと混在する形で動的に格納領域が確保される。したがって、特定の消去ブロックへの書き換え集中は、同様に防止することが可能である。
Claims (28)
- アドレステーブルと、
キャッシュメモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、上記キャッシュメモリ上に展開される
記憶装置。 - 上記キャッシュメモリはライトバック方式でアクセスされる
請求項1記載の記憶装置。 - 上記キャッシュメモリは、上記小アドレステーブルをエントリとして、小アドレステーブルを複数格納する
請求項1記載の記憶装置。 - 上記小アドレステーブルは、上記フラッシュメモリデバイスにおける一括読み出し/書き込み単位であるページごとに、上記フラッシュメモリデバイスに格納されている
請求項1記載の記憶装置。 - 第2のアドレステーブルを、さらに有し、
上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
上記制御回路によるフラッシュメモリ上のユーザーデータへのアクセス管理においては、
初期論理アドレス情報をもとに、上記第2のアドレステーブルが参照され、対応する小アドレステーブルの所在情報が取得され、
上記所在情報を基に、まずキャッシュメモリ内の所望の小アドレステーブルの有無がチェックされ、
ミスヒットの場合はフラッシュメモリから対応する小アドレステーブルが読み出されて、上記メモリ領域上に展開され、
初期論理アドレス情報をもとに、上記小アドレステーブルが参照され、アクセスすべきユーザーデータの所在情報が取得され、
上記ユーザーデータの所在情報を基に、フラッシュメモリ上のユーザーデータがアクセスされる
請求項1記載の記憶装置。 - 第2のアドレステーブルを、さらに有し、
上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
上記制御回路によるフラッシュメモリ上のユーザーデータへのアクセス管理においては、
初期論理アドレス情報をもとに、キャッシュメモリ内の所望の小アドレステーブルの有無がチェックされ、
ミスヒットの場合、初期論理アドレス情報をもとに、上記第二のアドレステーブルが参照され、対応する小アドレステーブルの所在情報が取得され、さらにフラッシュメモリから対応する小アドレステーブルが読み出されて、上記メモリ領域上に展開され、
初期論理アドレス情報をもとに、上記小アドレステーブルが参照され、アクセスすべきユーザーデータの所在情報が取得され、
上記ユーザーデータの所在情報を基に、フラッシュメモリ上のユーザーデータがアクセスされる
請求項1記載の記憶装置。 - 第1のアドレステーブルと、
第2のアドレステーブルと、
メモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記第1のアドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記第1のアドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、
上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
上記小アドレステーブルがフラッシュメモリに保存される際には、上記第2のアドレステーブル上の、上記小アドレステーブルに対応する所在情報が、同時並列的に更新され、上記第2のアドレステーブルの更新箇所を示す情報が、フラッシュメモリ上に保存される小アドレステーブルを含むデータグループ内の予備領域に同時に保存される
記憶装置。 - 第1のアドレステーブルと、
第2のアドレステーブルと、
メモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記第1のアドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記第1のアドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、
上記第2のアドレステーブルにおいては、初期論理アドレスに対応する上記小アドレステーブルの上記フラッシュメモリデバイス上の所在情報が取得され、
上記第2のアドレステーブルは、不揮発性RAMに格納されている
記憶装置。 - アドレステーブルと、
キャッシュメモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記キャッシュメモリに展開され、
上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録されている
記憶装置。 - 上記キャッシュメモリ上の全てのユーザーデータに対して、対応するアドレステーブルが同時にキャッシュメモリ上に存在していることを保証するように、アドレステーブルの開放順位が設定される
請求項9記載の記憶装置。 - 少なくともユーザーデータが上記キャッシュメモリに追加される際には、対応するテーブルの開放順位が、その下位に設定される
請求項10記載の記憶装置。 - 記憶媒体であるフラッシュメモリデバイスと、
制御回路と、を有し、
上記制御回路は、ホストから入力されたユーザーデータと、当該記憶装置内部で生成され、使用される管理用データの双方をフラッシュメモリに保存し、
上記ユーザーデータと管理用データは、各々複数の格納領域をフラッシュメモリデバイス上に動的に確保され、それらの領域は互いに混在して存在している
記憶装置。 - 上記制御回路は、
上記フラッシュメモリデバイスの物理アドレスまたは論理アドレスに沿って共通のポインタを進め、
上記ポインタ位置またはその近傍に第1の空き領域を確保して、当該第1の空き領域にユーザーデータを記録し、あるいは第2の空き領域を確保して、当該第2の空き領域に管理用データを記録する
請求項12記載の記憶装置。 - ユーザーデータの格納領域および管理用データの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに確保される
請求項12記載の記憶装置。 - ユーザーデータの格納領域および管理用データの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに確保される
請求項13記載の記憶装置。 - ユーザーデータおよび管理用データは、上記フラッシュメモリデバイスの一括書き込み単位であるページ領域ごとに、確保されたブロック領域内の下位アドレスから下詰で格納される
請求項14記載の記憶装置。 - ユーザーデータおよび管理用データは、上記フラッシュメモリデバイスの一括書き込み単位であるページ領域ごとに、確保されたブロック領域内の下位アドレスから下詰で格納される
請求項15記載の記憶装置。 - アドレステーブルと、
メモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、を有し、
上記制御回路は、上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記メモリ上に展開され、
上記小アドレステーブルの格納領域は、上記フラッシュメモリデバイスの一括消去単位であるブロック領域ごとに、ユーザーデータが格納されたブロックと混在して動的に確保され、各ブロック領域には複数の小アドレステーブルが格納される
記憶装置。 - 複数の小アドレステーブルを含む連続したインデックス領域ごとに、上記格納用ブロックは各々確保され、各インデックス領域に対応するフラッシュメモリデバイス上の各ブロックの所在が第2のテーブルとしてメモリ上に保存されている
請求項18記載の記憶装置。 - 各小アドレステーブルは、上記フラッシュメモリデバイスの一括書き込み単位であるページ領域ごとに、確保されたブロック領域内の下位アドレスから下詰で格納される
請求項18記載の記憶装置。 - アドレステーブルと、
キャッシュメモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、
上記フラッシュメモリデバイスのユーザーデータにアクセス可能な処理装置と、を有し、
上記制御回路は、上記処理装置が上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、上記キャッシュメモリ上に展開される
コンピュータシステム。 - 上記キャッシュメモリはライトバック方式でアクセスされる
請求項21記載のコンピュータシステム。 - 上記キャッシュメモリは、上記小アドレステーブルをエントリとして、小アドレステーブルを複数格納する
請求項21記載のコンピュータシステム。 - アドレステーブルと、
キャッシュメモリと、
ユーザーデータの記憶媒体であるフラッシュメモリデバイスと、
上記フラッシュメモリデバイスのアクセス管理を行う制御回路と、
上記フラッシュメモリデバイスのユーザーデータにアクセス可能な処理装置と、を有し、
上記制御回路は、上記処理装置が上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記キャッシュメモリに展開され、
上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録されている
コンピュータシステム。 - フラッシュメモリデバイスのユーザーデータにアクセスする記憶装置のアクセス方法であって、
上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該分割されたアドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、上記小アドレステーブルをエントリとして、キャッシュメモリ上に展開される
記憶装置のアクセス方法。 - 上記キャッシュメモリはライトバック方式でアクセスされる
請求項25記載の記憶装置のアクセス方法。 - 上記キャッシュメモリは、上記小アドレステーブルをエントリとして、小アドレステーブルを複数格納する
請求項25記載の記憶装置のアクセス方法。 - フラッシュメモリデバイスのユーザーデータにアクセスする記憶装置のアクセス方法であって、
上記フラッシュメモリデバイスのデータにアクセスする際、アクセスはアドレステーブルを介して行い、
上記アドレステーブルにおいては、初期論理アドレスより生成されたアドレス値をインデックスとして、当該インデックスに対応するフラッシュメモリデバイス上のユーザーデータの所在情報が取得され、
上記アドレステーブルの全体は、上記インデックスの領域ごとに複数の小アドレステーブルに分割されており、当該小アドレステーブルは上記フラッシュメモリデバイス内に格納され、ユーザーデータがアクセスされる際、必要に応じて読み出され、キャッシュメモリに展開され、
上記キャッシュメモリには複数のエントリが登録でき、ユーザーデータが格納された第1のエントリと、上記小アドレステーブルが格納された第2のエントリとが、混在して登録される
記憶装置のアクセス方法。
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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002073409A (ja) * | 2000-08-28 | 2002-03-12 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
Family Cites Families (7)
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 | ソニー株式会社 | 記憶装置 |
-
2006
- 2006-09-11 JP JP2006245687A patent/JP5076411B2/ja not_active Expired - Fee Related
- 2006-11-09 US US11/594,882 patent/US8069297B2/en not_active Expired - Fee Related
- 2006-11-28 KR KR1020060118247A patent/KR20070056989A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002073409A (ja) * | 2000-08-28 | 2002-03-12 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
Cited By (25)
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 |