記憶装置およびそれを搭載した計算機
【課題】記憶装置に搭載するメモリ容量を削減しながら、情報を書き込む際の処理速度の低下を最低限に抑える。
【解決手段】不揮発性メモリ内に、論理/物理アドレス変換テーブルをページ単位に分割した複数の分割変換テーブルを保存し、RAM内には、分割変換テーブルの少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュと、分割変換テーブルを管理する変換テーブル管理テーブルと、論理/物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを保存し、変換テーブル管理テーブルは、分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに保存されていることを示すキャッシュ有無フラグと、前記論理/物理アドレス変換テーブルキャッシュ内での保存先を示すキャッシュエントリ番号を有し、不揮発性メモリと前記RAMの間における前記論理/物理アドレス変換テーブルの情報の読み出し及び書き込みは、ページ単位で行う。
【解決手段】不揮発性メモリ内に、論理/物理アドレス変換テーブルをページ単位に分割した複数の分割変換テーブルを保存し、RAM内には、分割変換テーブルの少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュと、分割変換テーブルを管理する変換テーブル管理テーブルと、論理/物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを保存し、変換テーブル管理テーブルは、分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに保存されていることを示すキャッシュ有無フラグと、前記論理/物理アドレス変換テーブルキャッシュ内での保存先を示すキャッシュエントリ番号を有し、不揮発性メモリと前記RAMの間における前記論理/物理アドレス変換テーブルの情報の読み出し及び書き込みは、ページ単位で行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置およびそれを搭載した計算機に関する。
【背景技術】
【0002】
情報機器の補助記憶装置として、一般には磁気ディスク記憶装置が用いられている。この磁気ディスク記憶装置では、データの読み出し及び書き込みはセクタと呼ばれる記憶単位ごとに行われている。
【0003】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリEEPROM(Electrically Erasable Programmable Read only Memory)の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【0004】
このフラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れるが、使用上の制限が4つ存在する。1つ目は、データの読み出し及び書き込み単位(一般にページと呼ばれる)と消去単位(一般にブロックと呼ばれ、複数のページから構成される)が決まっており、ブロックはページよりもサイズが大きいことである。2つ目は、データを上書きする際には、1度データを消去した後に、再度書き込みを行う必要があることである。3つ目は、ブロック内のあるページにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。4つ目は、ブロックごとに消去回数の上限が決まっていることである。
【0005】
特許文献1では、上記のフラッシュメモリ特性を考慮し、記憶装置の高性能化および長寿命化を行うためのメモリ制御方法を提案している。ここでは、「不揮発性半導体メモリを管理する際に、物理ブロックをスクラッチブロック、データブロック、消去済みブロックの3種類に分けている。ホスト装置からのデータ書き込みは、スクラッチブロックに対して行う。スクラッチブロック内の空きページが無くなった場合には、このブロックを以降はデータブロックとして扱い、消去済みブロックの中から1つを新たにスクラッチブロックとして割り当てる。また、消去済みブロックが不足した場合は、データブロックの中から有効なデータの少ないブロックを選択し、当該ブロックに含まれるすべての有効なデータをスクラッチブロックにコピーした後、ブロック消去を行い、消去済みブロックを得る。」としている。
【0006】
また、特許文献2には、記憶装置に搭載するRAM容量を抑えるための方法が提案されている。ここでは、「揮発性記憶手段に記憶される第1のアドレス変換テーブル、不揮発性記憶手段に記憶される第2のアドレス変換テーブルを備える。受信された要求に係る論理セクタアドレスと揮発性記憶手段によって記憶された第1のアドレス変換テーブルとから、不揮発性記憶手段に記憶される第2のアドレス変換テーブルの物理ロケーションを取得する。第1のアドレス取得手段によって取得された物理ロケーションに基づいて、不揮発性記憶手段に記憶された第2のアドレス変換テーブルを得る。受信手段によって受信された要求に係る論理セクタアドレスと当該第2のアドレス変換テーブルとから、不揮発性記憶手段に対しデータを書き込む。」としている。
【0007】
また、特許文献3には、ホスト計算機からの書き込み要求に対する応答速度を速める方法が提案されている。ここでは、「WC(ライトキャッシュ)追い出し制御部は、WCリソース使用量を上限値Clmtより値が小さいAF(Auto Flush)閾値Cafと比較する。WCリソース使用量がAF閾値Cafを越えているときは、NANDメモリでの整理の状態を確認する。NANDメモリでの整理が充分に進んでいる場合には、早めにWCからNANDメモリにデータを追い出す。」としている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特願2009−275048号公報
【特許文献2】特開平11−203191号公報
【特許文献3】特開2010−157142号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
特許文献1には、ページ単位でデータ構造を管理するメモリ制御方式が記載されている。このメモリ制御方式は、データをページ単位で管理するために高速な処理が可能であるが、ブロック単位で管理する方法に比べて論理/物理アドレス変換テーブルの容量が大きくなる。しかも、この論理/物理アドレス変換テーブルは記憶装置の記憶容量に比例して増加する。そのため、記憶装置の大容量化を行うと、論理/物理アドレス変換テーブルを格納するための大容量メモリが必要となり、記憶装置の大型化やコストの増大につながるという問題がある。
【0010】
特許文献2では、論理/物理アドレス変換テーブルをRAMとフラッシュメモリに分割して保存することで、RAM容量を削減する方法が記載されている。この方法によれば、特許文献1で課題としたRAM容量の大幅削減を可能とするが、計算機からの書き込み処理に対して、テーブル情報とデータの2ページ分の書き込みが発生してしまう。そのため、テーブル情報を書き込まない場合と比べて処理速度が低下し、フラッシュメモリの書き換え回数を消耗するという問題がある。
【0011】
上記課題を解決するために、不揮発性メモリに論理/物理アドレス変換テーブルを保存し、RAMには論理/物理アドレス変換テーブルの一部をキャッシュとして保持することで、RAM容量を削減しつつ、処理速度の低下を抑制する方法が考えられる。
【0012】
このようなキャッシュを用いたデータ管理方法の一例が、特許文献3に記載されたWC(ライトキャッシュ)とNANDフラッシュメモリ間でのデータ制御方法である。
【0013】
このデータ制御方法では、WC内のデータ管理情報として、WCトラック情報を使用している。WCトラック情報は、キャッシュ内に保持しているトラックのアドレスやトラック内の有効セクタ数などの情報を有しているが、キャッシュのエントリ分の情報しか保持していない。同様のキャッシュ管理情報を論理/物理アドレス変換テーブル情報のキャッシュ管理に適応したとしても、キャッシュに保持されていないテーブル情報が不揮発性メモリ内のどの物理アドレスに保存されているか把握できないと言う問題がある。
【0014】
そこで、本発明では、記憶装置の大型化やコストの増大を阻止しながら、処理速度が低下せず、かつ不揮発性メモリ内の物理アドレス管理を可能とする記憶装置およびそれを搭載した計算機を提供することを目的とする。
【課題を解決するための手段】
【0015】
上記課題を解決するために、本発明では不揮発性メモリに論理/物理アドレス変換テーブルを保存し、RAMには論理/物理アドレス変換テーブルの一部をキャッシュとして保持することで、RAM容量を削減しつつ、処理速度の低下を抑制する。また、キャッシュに保持されていないテーブル情報が不揮発性メモリのどこに保持されているかを管理し、テーブル情報がキャッシュに保持されているか否かを識別する情報を有することで、論理/物理アドレス変換テーブルのキャッシュ管理を実現する。
【0016】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、ある所定の書き込み単位であるページ2220と前記書き込み単位よりも大きいデータ消去単位であるブロック222を持つ不揮発性メモリ22と、データの読み出し及び書き込みが出来るRAM23と、前記不揮発性メモリ22および前記RAM23への読み出し及び書き込み処理を行うメモリコントローラ21を有する記憶装置2であって、
前記不揮発性メモリ22は、命令処理装置4が書き込みを行ったデータ221と、前記データ221の格納場所を管理する論理/物理アドレス変換テーブル220を前記ページ2220単位に分割した複数の分割変換テーブル240を有し、
前記RAM23は、前記分割変換テーブル240の少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュ230と、前記分割変換テーブル240を管理する変換テーブル管理テーブル235と、前記論理/物理アドレス変換テーブルキャッシュ230の管理を行うキャッシュ管理テーブル236を有し、
前記変換テーブル管理テーブル235は、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュ230に保存されていることを示すキャッシュ有無フラグ2352と、前記論理/物理アドレス変換テーブルキャッシュ230における前記分割変換テーブル240の保存先を示すキャッシュエントリ番号2355を有し、
前記不揮発性メモリ22と前記RAM23の間における前記論理/物理アドレス変換テーブル220の情報の読み出し及び書き込みは、前記ページ2220単位で行うことを特徴とする。
【発明の効果】
【0017】
本発明によれば、論理/物理アドレス変換テーブルを不揮発性メモリ内に保存し、RAMには論理/物理アドレス変換テーブルの必要とする一部分のみを保持することで、RAM容量を削減することができる。また、RAMに保持した論理/物理アドレス変換テーブルをキャッシュとして使用することで、不揮発性メモリに対する論理/物理アドレス変換テーブル情報の書き込み回数を削減させ、処理速度の低下を抑制することができる。
【0018】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施例を説明するためのハードウェア構成例を示す図。
【図2】不揮発性メモリの内部構成図。
【図3】本実施例における不揮発性メモリの使用状態を表した図。
【図4】ブロックとページの関係を纏めた図。
【図5a】ブロックヘッダページ2221のデータ構成例を示す図。
【図5b】データページ2222のデータ構成例を示す図。
【図5c】テーブルページ2223のデータ構成例を示す図。
【図6】論理/物理アドレス変換テーブルの構成を表した図。
【図7】スクラッチブロック管理テーブルの構成を表した図。
【図8】データブロック管理テーブルの構成を表した図。
【図9】消去済みブロックテーブルの構成を表した図。
【図10】物理ブロック管理テーブルの構成を表した図。
【図11】変換テーブル管理テーブルの構成を表した図。
【図12】キャッシュ管理テーブルの構成を表した図。
【図13】命令処理装置からデータ読み出し処理を受けた場合の処理フローチャート。
【図14】分割変換テーブルの読み出し処理の処理フローチャート。
【図15】分割変換テーブルの書き込み処理の処理フローチャート。
【図16】書き込み可能なページの特定処理の処理フローチャート。
【図17】各種管理テーブルの更新処理の処理フローチャート。
【図18】命令処理装置からデータ書き込み処理を受けた場合の処理フローチャート。
【図19】各種管理テーブルを更新する処理の処理フローチャート。
【図20】ブロック消去処理の際の処理フローチャート。
【発明を実施するための形態】
【0020】
以下、図面を用いて本発明の実施例を説明する。
【実施例】
【0021】
図1は本実施例におけるハードウェア構成の例である。図1に示す計算機1は、記憶装置2、命令処理装置4、主記憶メモリ5、入出力制御装置6、ネットワーク制御装置7、表示装置8を持ち、各装置は相互にデータバス3によって接続されている。
【0022】
これらのうち、記憶装置2は、命令処理装置4からの処理に従い、データの読み出し及び書き込みを行う。
【0023】
命令処理装置4は、記憶装置2もしくは主記憶メモリ5に格納されている命令を処理し、記憶装置2および主記憶メモリ5に対するデータの読み出し及び書き込みや、入出力制御装置6、ネットワーク制御装置7、表示装置8に対する処理を行う。
【0024】
主記憶メモリ5は、命令処理装置4からの処理に従い、データの読み出し及び書き込みを行う。
【0025】
入出力制御装置6は、外部機器(図示せず)とデータバス3間でのデータの入出力を制御する装置である。この外部機器の例としては、キーボードやマウス、あるいは外付けの記憶装置2などが挙げられる。
【0026】
ネットワーク制御装置7は、ネットワーク(図示せず)とデータバス3間でのデータの入出力を制御する装置である。
【0027】
表示装置8は、命令処理装置4からの処理に従い、データの表示などを行う装置である。
【0028】
記憶装置2は、I/F(インターフェース)制御部20、メモリコントローラ21、1つ以上の不揮発性メモリ22、およびRAM23から構成される。
【0029】
I/F制御部20は、命令処理装置4とメモリコントローラ21間のデータの制御を行う。メモリコントローラ21は、命令処理装置4からの命令に従い、不揮発性メモリ22内のデータの読み出し及び書き込みを行い、それに付随してRAM23内のデータ更新を行う。
【0030】
不揮発性メモリ22には、論理/物理アドレス変換テーブル220、およびデータ221を格納する。本実施例で記載の不揮発性メモリ22とは、所定の書き込み単位(ページ)と書き込み単位より大きい消去単位(ブロック)を持ち、データを書き換える場合には、書き込みの前に消去動作を必要とする不揮発性メモリを指す。なお、不揮発性メモリ22の内容については、図2、図3を用いて詳細に後述する。また、論理/物理アドレス変換テーブル220の一例が図6に示されている。
【0031】
RAM23には、論理/物理アドレス変換テーブルキャッシュ230、スクラッチブロック管理テーブル231(図7)、データブロック管理テーブル232(図8)、消去済みブロック管理テーブル233(図9)、物理ブロック管理テーブル234(図10)、変換テーブル管理テーブル235(図11)、キャッシュ管理テーブル236(図12)を格納する。
【0032】
なお、RAM23内に保持する論理/物理アドレス変換テーブルキャッシュ230は、不揮発性メモリ22に保存している論理/物理アドレス変換テーブル220の一部を保存するものである。
【0033】
このRAM23は、MRAM(Magnetic RAM)のような不揮発性メモリであっても、SRAM(Static RAM)やDRAM(Dynamic RAM)のような揮発性メモリであってもよい。ただし、不揮発性メモリを用いる場合には、データ書き換え時に消去動作を必要としない不揮発性メモリである必要がある。また、このRAM23はメモリコントローラ21の内部にあってもよい。
【0034】
図2は、不揮発性メモリ22の内部構成を示した図である。不揮発性メモリは1つ以上の消去単位から構成され、この消去単位をブロック222と呼ぶ。また、このブロック222は1つ以上の書き込み単位から構成され、これをページ2220と呼ぶ。本実施例では、不揮発性メモリ22のブロック(222)数はMブロック、1ブロック当たりのページ(2220)数はNページとして扱う。なお、ページ2220の種類と構成が図5に示されており、後述する。
【0035】
図3は、本実施例における不揮発性メモリ22の使用状態を示した図である。本実施例では、ブロック222をスクラッチブロック群223、データブロック群224、消去済みブロック群225の3つのグループのいずれかに分類して使用する。従って、スクラッチブロック群223、データブロック群224、消去済みブロック群225の3つのグループの合計ブロック数は、M個である。
【0036】
スクラッチブロック群223は、1つ以上のスクラッチブロック2230から構成される。スクラッチブロック2230は、ブロックヘッダページ2221、データページ2222、テーブルページ2223、空きページ2224から構成される。ただし、データページ2222もしくはテーブルページ2223のどちらかを有していないこともある。
【0037】
データブロック群224は、1つ以上のデータブロック2240から構成される。データブロック2240は、ブロックヘッダページ2221、データページ2222、テーブルページ2223から構成される。ただし、スクラッチブロック2230と同様に、データページ2222もしくはテーブルページ2223のどちらかを有していないこともある。データブロック2240は、スクラッチブロック2230とは異なり、空きページ2224を有していない。
【0038】
消去済みブロック群225は、1つ以上の消去済みブロック2250から構成される。消去済みブロック2250は、ブロックヘッダページ2221と空きページ2224から構成され、データページ2222およびテーブルページ2223は保有しない。
【0039】
図4は、ブロックとページの関係を纏めた図である。横方向にスクラッチブロック2230、データブロック2240、消去済みブロック2250の各ブロックを記載し、縦方向にブロックヘッダページ2221、データページ2222、テーブルページ2223、空きページ2224の各ページを記載している。この図で、○は、当該ページを備えることを意味し、×は当該ページを備えないことを意味する。また、△は当該ページのいずれかを備えないことがあることを意味している。なお、ブロックヘッダページ2221、データページ2222、テーブルページ2223の構成については、図5a,図5b、図5cに示されている。
【0040】
不揮発性メモリ22内のブロック222は、上記3グループのいずれかに所属し、データ書き込みやブロック消去の処理によって、その所属を動的に移行していく。つまり、例えば特許文献1に示すように、スクラッチブロックがデータブロックに移行し、消去済みブロックの一部を新たにスクラッチブロックに割り当て、データブロックを消去済みブロックに移行するといった具合に、所属の動的移行を行う。
【0041】
また、図1における論理/物理アドレス変換テーブル220は、実際にはテーブルページ2223のようにページ単位に分割して保存される形となる。
【0042】
図5は、ページ2220に格納するデータ構造を示した図である。図3で説明したように、ここには3種類のデータ構造がある。ブロックヘッダページ2221と、データページ2222と、テーブルページ2223である。
【0043】
このうち、ブロックヘッダページ2221内には、図5aに示すように、少なくともブロック消去回数22210の情報を格納する。空き領域22211は、情報を書き込まない領域であるが、この部分に不良ブロックを表すフラグやエラー発生回数の情報を格納してもよい。
【0044】
データページ2222は、図5bに示すように、データページヘッダ情報22220とデータ22221を有する。データページヘッダ情報22220は、ページ属性22222、論理アドレス22223、データ書き込み番号22224を含む。
【0045】
ページ属性22222には、このページがデータページ2222であるのか、テーブルページ2223であるのかを判別する際に使用するフラグを格納する。論理アドレス22223には、命令処理装置4が付与した論理アドレス情報を格納する。データ書き込み番号22224は、論理アドレス番号22223が同一であるデータページ2222が複数存在した場合に、データ22221の新旧を判別するために使用する番号である。
【0046】
本来ならば、データ22221の新旧は後述する各種の管理テーブルによって管理されるため、データ書き込み番号22224は必須ではない。しかし、データ書き込み番号22224があると、何らかの原因によってRAM内のテーブル情報が破壊された場合でも復旧可能となるため、本実施例では記載している。
【0047】
テーブルページ2223は、図5cに示すように、テーブルページヘッダ情報22230と論理/物理アドレス変換テーブル値22231を有する。テーブルページヘッダ情報22230は、ページ属性22232、テーブル管理番号22233、テーブル書き込み番号22234を含む。このうち、ページ属性22232は、図5bのデータページ2222におけるページ属性22222と同じ機能のものであり、ここでの説明を省略する。
【0048】
テーブル管理番号22233は、図1の変換テーブル管理テーブル235の管理単位であり、1ページ容量分の論理/物理アドレス変換テーブル、つまり1つのテーブルページ2223に対して1つの番号が与えられる。テーブルページ2223内にテーブル管理番号22233があることで、後述するブロック消去処理の際に、どのテーブル管理番号22233のテーブルページ2223をコピーしているのかがすぐに分かり、変換テーブル管理テーブル235の更新が容易となる。
【0049】
なお、ブロック消去処理とは、消去済みブロックが不足した場合に、データブロックの一部を消去済みブロックに移行するための処理である。このとき、データブロック内のデータをスクラッチブロックにコピーするが、どのページをコピーしたのかが管理されている必要がある。
【0050】
テーブル書き込み番号22234は、テーブル管理番号22233が同一であるテーブルページ2223が複数存在する場合に、論理/物理アドレス変換テーブル値22231の新旧を判別するために使用する番号である。テーブル書き込み番号22234もデータ書き込み番号22224と同様に必須の情報ではないが、この情報があると変換テーブル管理テーブル235の情報が何らかの原因で破壊された場合でも復旧可能となるため、本実施例では記載している。
【0051】
図6は、図1の論理/物理アドレス変換テーブル220の構成を示した図である。図1において、不揮発性メモリ22内の論理/物理アドレス変換テーブル220、およびRAM23内の論理/物理アドレス変換テーブルキャッシュ230は、命令処理装置4が指定するアドレス(論理アドレス2202)に対応する、データを格納しているアドレス(物理アドレス2203)を管理するテーブルである。
【0052】
このため、図6の論理/物理アドレス変換テーブル220は、論理アドレス2202と物理アドレス2203を対にして記憶している。このうち、メモリ内データの格納場所を定義する物理アドレス2203は、物理ブロック番号2204と物理ページ番号2205の組み合わせによって表わされる。
【0053】
また、論理アドレス2202と物理アドレス2203の組み合わせごとに、テーブル管理番号2201と論理グループ番号2200が付与されている。テーブル管理番号2201は、テーブルページ2223におけるテーブル管理番号22233(図5c参照)と同様に、変換テーブル管理テーブル235(図1)における管理番号を表している。このテーブル管理番号2201単位で分割された論理/物理アドレス変換テーブルを以降は分割変換テーブル240と呼称する。図6の例では、論理/物理アドレス変換テーブル220内の太い黒線で囲まれた部分が1つの分割変換テーブル240となる。また、論理アドレス空間を一定割合で分割したものを論理グループ番号2200として示している。
【0054】
図6の論理/物理アドレス変換テーブル220では、論理グループ番号2200やテーブル管理番号2201が昇順に並んでいるが、実際の論理/物理アドレス変換テーブル220は、テーブルページ2223ごとに分割されているため、このようなきれいな並びになるとは限らない。また、論理/物理アドレス変換テーブルキャッシュ230においても、論理/物理アドレス変換テーブル220と論理/物理アドレス変換テーブルキャッシュ230の間でテーブル情報の入れ替えが発生するため、図6のように論理グループ番号2200やテーブル管理番号2201が昇順できれいに並ぶとは限らない。
【0055】
図7は、図1のスクラッチブロック管理テーブル231の構成を表した図である。スクラッチブロック管理テーブル231は、論理グループ番号2310ごとに1つ以上割り当てられるスクラッチブロック2230(図3)を管理するためのテーブルである。それぞれのスクラッチブロック2230は、スクラッチブロック番号2311によって管理され、スクラッチブロックの利用状態を表すフラグ2312と、対応する物理ブロック番号2313が付与される。利用状態を表すフラグ2312は、このスクラッチブロックに対して書き込み可能である場合は1、空きページが無く書き込み不可能である場合は0を示す。
【0056】
図8は、図1のデータブロック管理テーブル232の構成を表した図である。データブロック管理テーブル232は、論理グループ番号2320に対して1つ以上割り当てられるデータブロック2240(図3)の管理を行うテーブルである。それぞれのデータブロック2240は、データブロック番号2321によって管理され、データブロックの利用状態を表すフラグ2322と対応する物理ブロック番号2323が付与される。利用状態を表すフラグ2322は、このデータブロックからデータが読み出し可能である場合は1、すでにこのデータブロックが消去されている場合は0を示す。
【0057】
図9は、図1の消去済みブロック管理テーブル233の構成を表した図である。消去済みブロック管理テーブル233は、データ消去が行われた消去済みブロック2250の管理を行うテーブルである。消去済みブロック2250(図3)は、消去済みブロック管理番号2330によって管理され、ブロックの利用状態を表すフラグ2331と対応する物理ブロック番号2332が付与される。利用状態を表すフラグ2331は、このブロックが消去済みブロック群に所属している場合は1、新しいスクラッチブロック2230として割り当てられるなどの処理によって、所属が消去済みブロック群から変更された場合には0を示す。
【0058】
図10は、図1の物理ブロック管理テーブル234の構成を表した図である。物理ブロック管理テーブル234は、各ブロック2220の利用状況を管理している。各ブロックは物理ブロック番号2340によって管理され、ブロックごとに消去回数2341、有効ページ数2342、有効ページフラグ2343、書き込み先ページ番号2344の情報を保持している。
【0059】
消去回数2341は、このブロックが消去された回数を示している。
【0060】
有効ページ数2342は、ブロック内の有効なデータを格納しているページの数を示している。また、有効ページフラグ2343は、有効なデータを格納しているページの位置を示しており、有効データを格納しているページは1、無効なデータを格納しているページは0で表わされる。有効ページフラグ2343の最も右が0ページ目を表しており、最も左がN−1ページ目を表している。
【0061】
書き込み先ページ番号2344は、次に書き込み可能なページ番号を表している。このブロックがデータブロック群224に所属しており、書き込み可能なページが無い場合には、書き込み先ページ番号はNとなる。
【0062】
図11は、図1の変換テーブル管理テーブル235の構成を表した図である。変換テーブル管理テーブル235は、図6の分割変換テーブル240をテーブル管理番号2350ごとに管理している。各テーブル管理番号2350に対して、保存フラグ2351、キャッシュ有無フラグ2352、更新フラグ2353、追い出しカウント2354、キャッシュエントリ番号2355、物理アドレス2356の情報を保持している。
【0063】
このうち、保存フラグ2351は、このテーブル管理番号2350の分割変換テーブル240が不揮発性メモリ22内に保存されているか否かを表すフラグである。すでに不揮発性メモリ22に保存されている場合は1、まだ保存されていない場合は0となる。
【0064】
キャッシュ有無フラグ2352は、このテーブル管理番号2350の分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230に保持されているか否かを表すものであり、保持されている場合は1、保存されていない場合には0を示す。
【0065】
更新フラグ2353は、この分割変換テーブル240が論理/物理アドレス変換テーブルキャッシュ230に保持されている場合に、テーブル情報が更新されたことを表すフラグである。命令処理装置4からの要求などによってテーブル情報が更新された場合は1、更新されていない場合は0を示す。更新フラグ2353を用いて更新の有無を判定することで、更新されていない分割変換テーブル240を不揮発性メモリ22に対して書き込むことを無くし、処理速度の低下を抑える。
【0066】
追い出しカウント2354は、論理/物理アドレス変換テーブルキャッシュ230の容量が満杯になった場合に、どの分割変換テーブル240を不揮発性メモリ22に書き込むか決定するためのものである。本実施例では、論理/物理アドレス変換テーブルキャッシュ230からのテーブル追い出しにLRU(Least Recently Used)方式を用いているが、他の方式を使用してもよい。他の方式を使用する場合には、追い出しカウント2354は無くてもよい。
【0067】
キャッシュエントリ番号2355は、分割変換テーブル240の論理/物理アドレス変換テーブルキャッシュ230上での保存先を示す。
【0068】
物理アドレス2356は、分割変換テーブル240の不揮発性メモリ22上での保存先を示す。物理アドレス2356は、物理ブロック番号2357と物理ページ番号2358の組み合わせからなる。
【0069】
通常のデータキャッシュの場合では、キャッシュ内に保持しているエントリ分の情報しか保持しない。しかし、本実施例においても同様の管理方法とすると、不揮発性メモリ22から論理/物理アドレス変換テーブルキャッシュ230へ分割管理テーブル240の情報を読み出す処理が行えない。そのため、論理/物理アドレス変換テーブルキャッシュ230に保持されているかどうかに関わらず、全ての分割変換テーブル240の情報を変換テーブル管理テーブル235に保持している。また、どのテーブル管理番号2350のテーブル情報が論理/物理アドレス変換テーブルキャッシュ230に保持されているかを識別するために、キャッシュ有無フラグ2352の情報を変換テーブル管理テーブル235内に格納している。
【0070】
図12は、図1のキャッシュ管理テーブル236の構成を表した図である。キャッシュ管理テーブル236は、論理/物理アドレス変換テーブルキャッシュ230のエントリをキャッシュエントリ番号2360ごとに管理している。各キャッシュエントリ番号2360に対して、有効フラグ2361を保持している。
【0071】
有効フラグ2361は、対応するキャッシュエントリ番号2360に分割変換テーブル240が保存されているか否かを表すものである。分割変換テーブル240が保存されている場合は1、保存されていない場合には0を示す。
【0072】
図1の不揮発性メモリ22、あるいはRAM23内の各テーブルなどは以上のように構成されている。これらテーブル構成の中で、本発明は特に図6の論理/物理アドレス変換テーブル、図11の変換テーブル管理テーブル、図12のキャッシュ管理テーブルに工夫がされている。
【0073】
係るテーブルなどを利用して、図13の処理フローチャートによりデータ読み出し処理を実行する。また、図18の処理フローチャートによりデータ書き込み処理を実行する。さらに、図20の処理フローチャートによりブロック消去処理を実行する。なお、これらの処理は、記憶装置2内のメモリコントローラ21により実行される。
【0074】
[データ読み出し処理]
図13は、データ読み出し時の処理フローチャートを表した図である。また、図13の各部ステップの詳細説明のために、図14から図17が使用される。
【0075】
図1において、データ読み出し処理は、命令処理装置4が読み出し対象の論理アドレスを指定することから開始される。
【0076】
図13のフローでは、ステップS500において、記憶装置2内のメモリコントローラ21が、データバス3およびI/F制御部20を介して、命令処理装置4から読み出し対象の論理アドレスを受信する。
【0077】
次に、メモリコントローラ21は、ステップS51において上記論理アドレスに対応する図6の分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230に存在しているか否かを確認する。存在しない場合には、不揮発性メモリ22から分割変換テーブル240を読み出す処理を行う。ステップS51における読み出し処理の詳細については、図14を用いて後述する。
【0078】
ステップS51の処理結果として、指定された論理アドレスに対応する分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230上に入手できた。この場合に、次のステップS501では、論理/物理アドレス変換テーブルキャッシュ230上の分割変換テーブル240を用いて、上記論理アドレスに対応する物理アドレスを特定する。分割変換テーブル240は、図6の構成を備えているので、物理アドレス2203として、物理ブロック番号2204と、物理ページ番号2205の組み合わせが得られている。
【0079】
次に、ステップS502では、図11の変換テーブル管理テーブル235において、ステップS501で使用した分割管理テーブル240の追い出しカウント2354を0に変更する。また、上記分割管理テーブル以外の分割管理テーブル240において、キャッシュ有無フラグ2352が1であるテーブルの追い出しカウント2354を1だけ加算する。ステップS502での一連の処理により、論理/物理アドレス変換テーブルキャッシュ230の容量が満杯になった場合に、古い(追い出しカウント2354の数が多い)分割変換テーブル240から順に、不揮発性メモリ22に戻されて書き込まれる。これにより、論理/物理アドレス変換テーブルキャッシュ230の容量が一定に保たれる。
【0080】
その後、ステップS503では、ステップS501で特定した物理アドレスを用いて、不揮発性メモリ22からデータ221を読み出す。
【0081】
次に、ステップS52では、図1の論理/物理アドレス変換テーブルキャッシュ230の容量が満杯である場合には、不揮発性メモリ22に対して、分割変換テーブル240を書き込む処理を行う。書き込み処理の詳細については、図15を用いて後述する。
【0082】
最後に、ステップS504では、命令処理装置4に対して、読み出し終了報告を行う。
【0083】
以上が読み出し時の概略処理であるが、ステップS51およびステップS52は処理をさらに細分化できるので、細分化した処理について説明する。図14は、ステップS51の詳細な処理フローチャートを表した図である。この処理は、論理アドレスに対応する分割変換テーブル240を、読み出すための処理である。
【0084】
ステップS51では、まずステップS510において命令処理装置4から受信した論理アドレスに対応する分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230に保持されているか、図11の変換テーブル管理テーブル235内のキャッシュ有無フラグ2352を用いて確認する。キャッシュ有無フラグ2352が0である場合には、論理/物理アドレス変換テーブルキャッシュ230に保持されていないので、ステップS511の処理に入る。キャッシュ有無フラグ2352が1である場合には、論理/物理アドレス変換テーブルキャッシュ230に保持されているので、ステップS51の処理は終了となる。
【0085】
ステップS511では、引き続き図11の変換テーブル管理テーブル235の保存フラグ2351が、1である(分割変換テーブル240が不揮発性メモリ22に記憶されている)ことを確認する。保存フラグ2351が1である場合には、ステップS512の処理、0である場合には、ステップS514の処理を実行する。
【0086】
保存フラグ2351が1である場合には、ステップS512において、この分割変換テーブル240の格納先である物理アドレス2356を図11で確認する。
【0087】
ステップS513では、不揮発性メモリ22から対応する分割変換テーブル240を読み出す。そして、図12のキャッシュ管理テーブル236の有効フラグ2361を確認し、論理/物理アドレス変換テーブルキャッシュ230の空いているエントリに、読み出した分割変換テーブル240の情報を格納する。
【0088】
なお、ステップS511において保存フラグ2351が0である場合には、ステップS514において図6のキャッシュ管理テーブル236の有効フラグ2361を確認し、論理/物理アドレス変換テーブルキャッシュ230の空いているエントリの選択を行う。
【0089】
その後、ステップS515において、図11の変換テーブル管理テーブル235のキャッシュ有無フラグ2352を1に変更し、更新フラグ2353と追い出しフラグ2354を0に初期化し、キャッシュエントリ番号2355をステップS513もしくはステップS514で選択したエントリ番号に更新する。また、図12のキャッシュ管理テーブル236において、上記キャッシュエントリ番号2355に対応する有効フラグ2361を1に変更する。以上がステップS51の処理の詳細である。
【0090】
図15はステップS52の詳細な処理フローチャートを表した図である。ステップS52は、この全体処理により、分割変換テーブル240を不揮発性メモリ22へ書き込む処理を行う。
【0091】
ステップS52の最初のステップS520では、まず論理/物理アドレス変換テーブルキャッシュ230の容量が満杯であるかどうかを確認する。満杯である場合(YES)には、ステップS522側に移り分割変換テーブル240を不揮発性メモリ22へと書き込む処理を行う。満杯でない場合(NO)には、ステップS52の処理は終了となる。
【0092】
不揮発性メモリ22への分割変換テーブル240の書き込みを行う場合は、まずステップS521において、図11の変換テーブル管理テーブル235内のキャッシュ有無フラグ2352と追い出しカウント2354を参照する。そして、キャッシュ有無フラグ2352が1(不揮発性メモリ22に保存されている)であり、かつこの中で追い出しカウント2354が最も大きい分割変換テーブル240を書き込み対象として選択する。
【0093】
その後、ステップS522において、選択した分割変換テーブル240の更新フラグ2353(図11)を確認し、更新フラグ2353が1(更新あり)である場合には、ステップS53に移り書き込み先ページの特定を行う。更新フラグ2353が0(更新なし)である場合には、ステップS524に移る。なお、ステップS53の詳細は、図16で後述する。
【0094】
ステップS523では、ステップS53で特定した物理アドレスに対して選択した分割変換テーブル240を書き込む。
【0095】
ステップS54では、書き込み終了後、図7のスクラッチブロック管理テーブル231、図8のデータブロック管理テーブル232、図10の物理ブロック管理テーブル234の更新処理を行う。なお、ステップS54の詳細は、図17で後述する。
【0096】
最後に、ステップS524では、書き込み以前の変換テーブル管理テーブル235(図11)の物理アドレス2356から、図10の物理ブロック管理テーブル234の対応する物理ブロック番号2340を選択し、有効ページ数2342を1つ減算し、有効ページフラグ2343の該当ページ部分を0に更新する。
【0097】
また、変換テーブル管理テーブル235(図11)において、書き込みを行ったテーブル管理番号2350と対応する保存フラグ2351を1(不揮発性メモリ22に保存)に変更し、キャッシュ有無フラグ2352を0(論理/物理アドレス変換テーブルキャッシュ230に保存せず)に変更する。また、図11の物理アドレス2356の部分を不揮発性メモリ22の書き込み先の物理アドレスに更新する。
【0098】
そして、書き込みを行った分割管理テーブル240のキャッシュエントリ番号2355(図11)を参照し、図12のキャッシュ管理テーブル236において、対応するキャッシュエントリ番号2360の有効フラグ2361を0(分割管理テーブル240保存せず)に変更する。
【0099】
なお、ステップS522において、更新フラグ2353が0(更新なし)である場合には、ステップS53、ステップS523、ステップS54の処理は行わない。また、ステップS524でも、物理ブロック管理テーブル234(図10)の更新、変換テーブル管理テーブル235(図11)における物理アドレス2356の更新は行わない。以上がステップS52の処理の詳細である。
【0100】
図15のステップS52内の主要な処理であるステップS53およびステップS54は、さらに処理を細分化することができる。
【0101】
図16は、ステップS53の詳細な処理フローチャートを表した図である。ステップS53の最初のステップS530では、まず書き込み対象の分割変換テーブル240(図6)が所属する論理グループ番号2200に対して、スクラッチブロック2230(図7)が割り当てられているか確認する。この確認は、スクラッチブロック管理テーブル231内で、論理グループ番号2200と一致する論理グループ番号2310のフラグ2312の値を判定することで行う。フラグ2312が1(書き込み可能)であればスクラッチブロック2230が既に割り当てられていると判定し、0(書き込み不可)であれば割り当てられていないと判定する。既に割り当てられている場合には、ステップS533へと移行する。
【0102】
割り当てられていない場合には、ステップS531において、図3の消去済みブロック2250の中からブロックを1つ選択して、図7のスクラッチブロック管理テーブル231の物理ブロック番号2313部分に登録し、フラグ2312を1(書き込み可能)に変更する。
【0103】
その後、ステップS532において、割り当てた図3の消去済みブロック2250に対して、図9の消去済みブロック管理テーブル233内のフラグ2331を0(消去済みブロック群に所属せず)に変更する。
【0104】
次に、ステップS533では、図7のスクラッチブロック管理テーブル231を確認し、スクラッチブロック番号2311に対応する物理ブロック番号2313を確認する。
【0105】
そして、ステップS534では、ステップS533で確認した物理ブロック番号2313を、図10の物理ブロック管理テーブル234の物理ブロック番号2340と参照し、該当ブロックの書き込み先ページ番号2344を得る。ステップS53は以上で完了となる。
【0106】
また図17は、ステップS54の詳細な処理フローチャートを表した図である。ステップS54の最初のステップS540では、まず書き込みによって図3のスクラッチブロック2230の空きページが無くなったかどうかを確認する。空きページがない場合には、ステップS541の処理に入り、空きページがある場合にはステップS542に移る。
【0107】
空きページが無くなった場合には、ステップS541において、以下の一連の処理を実行する。まず、図7のスクラッチブロック管理テーブル231において、このスクラッチブロックのフラグ2312を0(書き込み不可)に変更する。その後、図8のデータブロック管理テーブル232において、上記スクラッチブロックが所属していた論理グループ番号2310と対応する論理グループ番号2320の中で、フラグ2322が0(読み出し不可)であるデータブロック番号2321を選択する。そして、選択したデータブロック番号2321のフラグ2322を1(読み出し可能)に変更し、さらに物理ブロック番号2323部分に上記スクラッチブロックの物理ブロック番号2313を登録する。
【0108】
スクラッチブロックに空きページが存在する場合には、ステップS541の処理は行わない。ステップS541もしくはステップS540の後、ステップS542においては、図10の物理ブロック管理テーブル234の有効ページ数2342および書き込み先ページ番号2344を1つ加算し、有効ページフラグ2343を更新する。以上で、ステップS54の処理は終了となる。
【0109】
[データ書き込み処理]
図18は、データ書き込み時の処理フローチャートを表した図である。一部、データ読み出し時と同一のステップS番号を持つ処理が存在するが、これらの処理については処理内容も同一であるため、説明を省略する。
【0110】
データ書き込み処理は、ステップS600において、メモリコントローラ21がデータバス3およびI/F制御部20を介して、命令処理装置4から書き込みデータと論理アドレスを受信するところから開始される。
【0111】
次に、メモリコントローラ21は、ステップS53においてデータを書き込む物理アドレスの特定を行う。この処理は図16で詳細に説明したとおりなので、説明は省略する。
【0112】
その後、ステップS601において、ステップS53で特定した物理アドレスに対して、データを書き込む。
【0113】
ステップS61では、書き込み終了後、各種管理テーブルの更新を行う。この処理は図19を用いて後述する。
【0114】
最後に、ステップS602において、命令処理装置4に対して、書き込み終了報告を行う。
【0115】
以上が書き込み時の処理であるが、ステップS61は処理をさらに細分化できるので、細分化した処理について説明する。図19はステップS61の詳細な処理フローチャートを表した図である。
【0116】
ステップS61では、まずステップS54において、データ書き込みに対して、スクラッチブロック管理テーブル231、データブロック管理テーブル232、物理ブロック管理テーブル234の更新処理を行う。この処理は図17で詳細に説明したとおりなので、ここでの説明は省略する。
【0117】
次に、ステップS51において、分割変換テーブル240の読み出しを行う。この処理は図14で詳細に説明したとおりなので、ここでの説明は省略する。
【0118】
ステップS610では、図3の論理/物理アドレス変換テーブルキャッシュ230上の分割変換テーブル240から、論理アドレスに対応する書き込み前の物理アドレスを特定し、この書き込み前の物理アドレスを用いて物理ブロック管理テーブル234(図図10)の有効ページ数2342の減算、および有効ページフラグ2343の無効化を行う。また、分割変換テーブル240の物理アドレス2203部分を図18のステップS53で特定した物理アドレスに書き換える。
【0119】
その後、ステップS611で、図11の変換テーブル管理テーブル235において、ステップS610で更新した分割変換テーブル240のテーブル管理番号2350に対応する追い出しカウント2354を0に変更する。また、上記以外でキャッシュ有無フラグ2352が1であるテーブル管理番号2350の追い出しフラグ2354を1だけ加算する。
【0120】
その後、ステップS52において、分割変換テーブル240の書き込みを行う。この処理は図15で詳細に説明したとおりなので、ここでの説明は省略する。
【0121】
以上がステップS61の処理の詳細である。
【0122】
[ブロック消去処理]
図20は、ブロック消去時の処理フローチャートを表した図である。図1のメモリコントローラ21は、ステップS700において、図3の消去済みブロック2250の数が一定数以下になった場合に、ブロック消去処理を開始する。
【0123】
まず、ステップS701では、メモリコントローラ21は、図8のデータブロック管理テーブル232を参照し、登録されている物理ブロック番号2323を取得する。取得した物理ブロック番号2323と対応する図10の物理ブロック管理テーブル234内の物理ブロック番号2340の有効ページ数2342を参照する。そして、データブロック管理テーブル232に登録されているブロックの中で、最も有効データページ数の少ないブロックを消去対象として選択する。
【0124】
次に、ステップS702では、消去対象として選択したブロックの有効ページ数2342が0であるか確認する。
【0125】
有効ページ数2342が0でない場合は、ステップS703において、物理ブロック管理テーブル234の有効ページフラグ2343を参照し、有効ページのデータをスクラッチブロック2230へコピーする。
【0126】
このコピー作業を、選択したブロックの有効ページ数2342が0になるまで繰り返し、有効ページ数2342が0になった場合は、ステップS704に移って、該当ブロックを消去する。
【0127】
最後に、ステップS705では、各種テーブルについての一連の更新処理を実行する。まず、図8のデータブロック管理テーブル232の消去したブロック番号と一致する物理ブロック番号2323のフラグ2322を0(読み出し不可)に変更し、データブロック管理テーブル232からこのブロックの登録を抹消する。そして、消去したブロック番号を図9の消去済みブロック管理テーブル233のフラグ2331が0(消去済みブロック群に所属せず)である消去済みブロック番号2330のエントリに登録し、フラグ2331を1(消去済みブロック群に所属)に変更する。また図10の物理ブロック管理テーブル234において、消去したブロック番号に対応する物理ブロック番号2340の消去回数2341を1つ加算する。
【0128】
図20の上記消去処理を、消去済みブロック2250の数が一定数以上となるまで繰り返し行う。以上がブロック消去時の処理である。
【0129】
なお、本発明は上記の実施例に限定されるものではなく、さまざまな変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【0130】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によるハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによるソフトウェアで実現してもよい。
【0131】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には、殆ど全ての構成が相互に接続されていると考えて良い。
【符号の説明】
【0132】
1:計算機
2:記憶装置
3:データバス
4:命令処理装置
5:主記憶メモリ
6:入出力制御装置
7:ネットワーク制御装置
8:表示装置
20:I/F制御部
21:メモリコントローラ
22:不揮発性メモリ
23:RAM
220:論理/物理アドレス変換テーブル
221:データ
230:論理/物理アドレス変換テーブルキャッシュ
231:スクラッチブロック管理テーブル
232:データブロック管理テーブル
233:消去済みブロック管理テーブル
234:物理ブロック管理テーブル
235:変換テーブル管理テーブル
236:キャッシュ管理テーブル
222:ブロック
2220:ページ
2230:スクラッチブロック
2240:データブロック
2250:消去済みブロック
2221:ブロックヘッダページ
2222:データページ
2223:テーブルページ
2224:空きページ
22210:ブロック消去回数
22211:空き領域
22221:データ
22222:ページ属性
22223:論理アドレス
22224:データ書き込み番号
22231:論理/物理アドレス変換テーブル値
22232:ページ属性
22233:テーブル管理番号
22234:テーブル書き込み番号
2200:論理グループ番号
2201:テーブル管理番号
2202:論理アドレス
2203:物理アドレス
240:分割変換テーブル
2310:論理グループ番号
2311:スクラッチブロック番号
2312:フラグ
2313:物理ブロック番号
2320:論理グループ番号
2321:データブロック番号
2322:フラグ
2323:物理ブロック番号
2330:消去済みブロック番号
2331:フラグ
2332:物理ブロック番号
2340:物理ブロック番号
2341:消去回数
2342:有効ページ数
2343:有効ページフラグ
2344:書き込み先ページ番号
2350:テーブル管理番号
2351:保存フラグ
2352:キャッシュ有無フラグ
2353:更新フラグ
2354:追い出しカウント
2355:キャッシュエントリ番号
2356:物理アドレス
2360:キャッシュエントリ番号
2361:有効フラグ
【技術分野】
【0001】
本発明は、記憶装置およびそれを搭載した計算機に関する。
【背景技術】
【0002】
情報機器の補助記憶装置として、一般には磁気ディスク記憶装置が用いられている。この磁気ディスク記憶装置では、データの読み出し及び書き込みはセクタと呼ばれる記憶単位ごとに行われている。
【0003】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリEEPROM(Electrically Erasable Programmable Read only Memory)の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【0004】
このフラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れるが、使用上の制限が4つ存在する。1つ目は、データの読み出し及び書き込み単位(一般にページと呼ばれる)と消去単位(一般にブロックと呼ばれ、複数のページから構成される)が決まっており、ブロックはページよりもサイズが大きいことである。2つ目は、データを上書きする際には、1度データを消去した後に、再度書き込みを行う必要があることである。3つ目は、ブロック内のあるページにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。4つ目は、ブロックごとに消去回数の上限が決まっていることである。
【0005】
特許文献1では、上記のフラッシュメモリ特性を考慮し、記憶装置の高性能化および長寿命化を行うためのメモリ制御方法を提案している。ここでは、「不揮発性半導体メモリを管理する際に、物理ブロックをスクラッチブロック、データブロック、消去済みブロックの3種類に分けている。ホスト装置からのデータ書き込みは、スクラッチブロックに対して行う。スクラッチブロック内の空きページが無くなった場合には、このブロックを以降はデータブロックとして扱い、消去済みブロックの中から1つを新たにスクラッチブロックとして割り当てる。また、消去済みブロックが不足した場合は、データブロックの中から有効なデータの少ないブロックを選択し、当該ブロックに含まれるすべての有効なデータをスクラッチブロックにコピーした後、ブロック消去を行い、消去済みブロックを得る。」としている。
【0006】
また、特許文献2には、記憶装置に搭載するRAM容量を抑えるための方法が提案されている。ここでは、「揮発性記憶手段に記憶される第1のアドレス変換テーブル、不揮発性記憶手段に記憶される第2のアドレス変換テーブルを備える。受信された要求に係る論理セクタアドレスと揮発性記憶手段によって記憶された第1のアドレス変換テーブルとから、不揮発性記憶手段に記憶される第2のアドレス変換テーブルの物理ロケーションを取得する。第1のアドレス取得手段によって取得された物理ロケーションに基づいて、不揮発性記憶手段に記憶された第2のアドレス変換テーブルを得る。受信手段によって受信された要求に係る論理セクタアドレスと当該第2のアドレス変換テーブルとから、不揮発性記憶手段に対しデータを書き込む。」としている。
【0007】
また、特許文献3には、ホスト計算機からの書き込み要求に対する応答速度を速める方法が提案されている。ここでは、「WC(ライトキャッシュ)追い出し制御部は、WCリソース使用量を上限値Clmtより値が小さいAF(Auto Flush)閾値Cafと比較する。WCリソース使用量がAF閾値Cafを越えているときは、NANDメモリでの整理の状態を確認する。NANDメモリでの整理が充分に進んでいる場合には、早めにWCからNANDメモリにデータを追い出す。」としている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特願2009−275048号公報
【特許文献2】特開平11−203191号公報
【特許文献3】特開2010−157142号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
特許文献1には、ページ単位でデータ構造を管理するメモリ制御方式が記載されている。このメモリ制御方式は、データをページ単位で管理するために高速な処理が可能であるが、ブロック単位で管理する方法に比べて論理/物理アドレス変換テーブルの容量が大きくなる。しかも、この論理/物理アドレス変換テーブルは記憶装置の記憶容量に比例して増加する。そのため、記憶装置の大容量化を行うと、論理/物理アドレス変換テーブルを格納するための大容量メモリが必要となり、記憶装置の大型化やコストの増大につながるという問題がある。
【0010】
特許文献2では、論理/物理アドレス変換テーブルをRAMとフラッシュメモリに分割して保存することで、RAM容量を削減する方法が記載されている。この方法によれば、特許文献1で課題としたRAM容量の大幅削減を可能とするが、計算機からの書き込み処理に対して、テーブル情報とデータの2ページ分の書き込みが発生してしまう。そのため、テーブル情報を書き込まない場合と比べて処理速度が低下し、フラッシュメモリの書き換え回数を消耗するという問題がある。
【0011】
上記課題を解決するために、不揮発性メモリに論理/物理アドレス変換テーブルを保存し、RAMには論理/物理アドレス変換テーブルの一部をキャッシュとして保持することで、RAM容量を削減しつつ、処理速度の低下を抑制する方法が考えられる。
【0012】
このようなキャッシュを用いたデータ管理方法の一例が、特許文献3に記載されたWC(ライトキャッシュ)とNANDフラッシュメモリ間でのデータ制御方法である。
【0013】
このデータ制御方法では、WC内のデータ管理情報として、WCトラック情報を使用している。WCトラック情報は、キャッシュ内に保持しているトラックのアドレスやトラック内の有効セクタ数などの情報を有しているが、キャッシュのエントリ分の情報しか保持していない。同様のキャッシュ管理情報を論理/物理アドレス変換テーブル情報のキャッシュ管理に適応したとしても、キャッシュに保持されていないテーブル情報が不揮発性メモリ内のどの物理アドレスに保存されているか把握できないと言う問題がある。
【0014】
そこで、本発明では、記憶装置の大型化やコストの増大を阻止しながら、処理速度が低下せず、かつ不揮発性メモリ内の物理アドレス管理を可能とする記憶装置およびそれを搭載した計算機を提供することを目的とする。
【課題を解決するための手段】
【0015】
上記課題を解決するために、本発明では不揮発性メモリに論理/物理アドレス変換テーブルを保存し、RAMには論理/物理アドレス変換テーブルの一部をキャッシュとして保持することで、RAM容量を削減しつつ、処理速度の低下を抑制する。また、キャッシュに保持されていないテーブル情報が不揮発性メモリのどこに保持されているかを管理し、テーブル情報がキャッシュに保持されているか否かを識別する情報を有することで、論理/物理アドレス変換テーブルのキャッシュ管理を実現する。
【0016】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、ある所定の書き込み単位であるページ2220と前記書き込み単位よりも大きいデータ消去単位であるブロック222を持つ不揮発性メモリ22と、データの読み出し及び書き込みが出来るRAM23と、前記不揮発性メモリ22および前記RAM23への読み出し及び書き込み処理を行うメモリコントローラ21を有する記憶装置2であって、
前記不揮発性メモリ22は、命令処理装置4が書き込みを行ったデータ221と、前記データ221の格納場所を管理する論理/物理アドレス変換テーブル220を前記ページ2220単位に分割した複数の分割変換テーブル240を有し、
前記RAM23は、前記分割変換テーブル240の少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュ230と、前記分割変換テーブル240を管理する変換テーブル管理テーブル235と、前記論理/物理アドレス変換テーブルキャッシュ230の管理を行うキャッシュ管理テーブル236を有し、
前記変換テーブル管理テーブル235は、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュ230に保存されていることを示すキャッシュ有無フラグ2352と、前記論理/物理アドレス変換テーブルキャッシュ230における前記分割変換テーブル240の保存先を示すキャッシュエントリ番号2355を有し、
前記不揮発性メモリ22と前記RAM23の間における前記論理/物理アドレス変換テーブル220の情報の読み出し及び書き込みは、前記ページ2220単位で行うことを特徴とする。
【発明の効果】
【0017】
本発明によれば、論理/物理アドレス変換テーブルを不揮発性メモリ内に保存し、RAMには論理/物理アドレス変換テーブルの必要とする一部分のみを保持することで、RAM容量を削減することができる。また、RAMに保持した論理/物理アドレス変換テーブルをキャッシュとして使用することで、不揮発性メモリに対する論理/物理アドレス変換テーブル情報の書き込み回数を削減させ、処理速度の低下を抑制することができる。
【0018】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施例を説明するためのハードウェア構成例を示す図。
【図2】不揮発性メモリの内部構成図。
【図3】本実施例における不揮発性メモリの使用状態を表した図。
【図4】ブロックとページの関係を纏めた図。
【図5a】ブロックヘッダページ2221のデータ構成例を示す図。
【図5b】データページ2222のデータ構成例を示す図。
【図5c】テーブルページ2223のデータ構成例を示す図。
【図6】論理/物理アドレス変換テーブルの構成を表した図。
【図7】スクラッチブロック管理テーブルの構成を表した図。
【図8】データブロック管理テーブルの構成を表した図。
【図9】消去済みブロックテーブルの構成を表した図。
【図10】物理ブロック管理テーブルの構成を表した図。
【図11】変換テーブル管理テーブルの構成を表した図。
【図12】キャッシュ管理テーブルの構成を表した図。
【図13】命令処理装置からデータ読み出し処理を受けた場合の処理フローチャート。
【図14】分割変換テーブルの読み出し処理の処理フローチャート。
【図15】分割変換テーブルの書き込み処理の処理フローチャート。
【図16】書き込み可能なページの特定処理の処理フローチャート。
【図17】各種管理テーブルの更新処理の処理フローチャート。
【図18】命令処理装置からデータ書き込み処理を受けた場合の処理フローチャート。
【図19】各種管理テーブルを更新する処理の処理フローチャート。
【図20】ブロック消去処理の際の処理フローチャート。
【発明を実施するための形態】
【0020】
以下、図面を用いて本発明の実施例を説明する。
【実施例】
【0021】
図1は本実施例におけるハードウェア構成の例である。図1に示す計算機1は、記憶装置2、命令処理装置4、主記憶メモリ5、入出力制御装置6、ネットワーク制御装置7、表示装置8を持ち、各装置は相互にデータバス3によって接続されている。
【0022】
これらのうち、記憶装置2は、命令処理装置4からの処理に従い、データの読み出し及び書き込みを行う。
【0023】
命令処理装置4は、記憶装置2もしくは主記憶メモリ5に格納されている命令を処理し、記憶装置2および主記憶メモリ5に対するデータの読み出し及び書き込みや、入出力制御装置6、ネットワーク制御装置7、表示装置8に対する処理を行う。
【0024】
主記憶メモリ5は、命令処理装置4からの処理に従い、データの読み出し及び書き込みを行う。
【0025】
入出力制御装置6は、外部機器(図示せず)とデータバス3間でのデータの入出力を制御する装置である。この外部機器の例としては、キーボードやマウス、あるいは外付けの記憶装置2などが挙げられる。
【0026】
ネットワーク制御装置7は、ネットワーク(図示せず)とデータバス3間でのデータの入出力を制御する装置である。
【0027】
表示装置8は、命令処理装置4からの処理に従い、データの表示などを行う装置である。
【0028】
記憶装置2は、I/F(インターフェース)制御部20、メモリコントローラ21、1つ以上の不揮発性メモリ22、およびRAM23から構成される。
【0029】
I/F制御部20は、命令処理装置4とメモリコントローラ21間のデータの制御を行う。メモリコントローラ21は、命令処理装置4からの命令に従い、不揮発性メモリ22内のデータの読み出し及び書き込みを行い、それに付随してRAM23内のデータ更新を行う。
【0030】
不揮発性メモリ22には、論理/物理アドレス変換テーブル220、およびデータ221を格納する。本実施例で記載の不揮発性メモリ22とは、所定の書き込み単位(ページ)と書き込み単位より大きい消去単位(ブロック)を持ち、データを書き換える場合には、書き込みの前に消去動作を必要とする不揮発性メモリを指す。なお、不揮発性メモリ22の内容については、図2、図3を用いて詳細に後述する。また、論理/物理アドレス変換テーブル220の一例が図6に示されている。
【0031】
RAM23には、論理/物理アドレス変換テーブルキャッシュ230、スクラッチブロック管理テーブル231(図7)、データブロック管理テーブル232(図8)、消去済みブロック管理テーブル233(図9)、物理ブロック管理テーブル234(図10)、変換テーブル管理テーブル235(図11)、キャッシュ管理テーブル236(図12)を格納する。
【0032】
なお、RAM23内に保持する論理/物理アドレス変換テーブルキャッシュ230は、不揮発性メモリ22に保存している論理/物理アドレス変換テーブル220の一部を保存するものである。
【0033】
このRAM23は、MRAM(Magnetic RAM)のような不揮発性メモリであっても、SRAM(Static RAM)やDRAM(Dynamic RAM)のような揮発性メモリであってもよい。ただし、不揮発性メモリを用いる場合には、データ書き換え時に消去動作を必要としない不揮発性メモリである必要がある。また、このRAM23はメモリコントローラ21の内部にあってもよい。
【0034】
図2は、不揮発性メモリ22の内部構成を示した図である。不揮発性メモリは1つ以上の消去単位から構成され、この消去単位をブロック222と呼ぶ。また、このブロック222は1つ以上の書き込み単位から構成され、これをページ2220と呼ぶ。本実施例では、不揮発性メモリ22のブロック(222)数はMブロック、1ブロック当たりのページ(2220)数はNページとして扱う。なお、ページ2220の種類と構成が図5に示されており、後述する。
【0035】
図3は、本実施例における不揮発性メモリ22の使用状態を示した図である。本実施例では、ブロック222をスクラッチブロック群223、データブロック群224、消去済みブロック群225の3つのグループのいずれかに分類して使用する。従って、スクラッチブロック群223、データブロック群224、消去済みブロック群225の3つのグループの合計ブロック数は、M個である。
【0036】
スクラッチブロック群223は、1つ以上のスクラッチブロック2230から構成される。スクラッチブロック2230は、ブロックヘッダページ2221、データページ2222、テーブルページ2223、空きページ2224から構成される。ただし、データページ2222もしくはテーブルページ2223のどちらかを有していないこともある。
【0037】
データブロック群224は、1つ以上のデータブロック2240から構成される。データブロック2240は、ブロックヘッダページ2221、データページ2222、テーブルページ2223から構成される。ただし、スクラッチブロック2230と同様に、データページ2222もしくはテーブルページ2223のどちらかを有していないこともある。データブロック2240は、スクラッチブロック2230とは異なり、空きページ2224を有していない。
【0038】
消去済みブロック群225は、1つ以上の消去済みブロック2250から構成される。消去済みブロック2250は、ブロックヘッダページ2221と空きページ2224から構成され、データページ2222およびテーブルページ2223は保有しない。
【0039】
図4は、ブロックとページの関係を纏めた図である。横方向にスクラッチブロック2230、データブロック2240、消去済みブロック2250の各ブロックを記載し、縦方向にブロックヘッダページ2221、データページ2222、テーブルページ2223、空きページ2224の各ページを記載している。この図で、○は、当該ページを備えることを意味し、×は当該ページを備えないことを意味する。また、△は当該ページのいずれかを備えないことがあることを意味している。なお、ブロックヘッダページ2221、データページ2222、テーブルページ2223の構成については、図5a,図5b、図5cに示されている。
【0040】
不揮発性メモリ22内のブロック222は、上記3グループのいずれかに所属し、データ書き込みやブロック消去の処理によって、その所属を動的に移行していく。つまり、例えば特許文献1に示すように、スクラッチブロックがデータブロックに移行し、消去済みブロックの一部を新たにスクラッチブロックに割り当て、データブロックを消去済みブロックに移行するといった具合に、所属の動的移行を行う。
【0041】
また、図1における論理/物理アドレス変換テーブル220は、実際にはテーブルページ2223のようにページ単位に分割して保存される形となる。
【0042】
図5は、ページ2220に格納するデータ構造を示した図である。図3で説明したように、ここには3種類のデータ構造がある。ブロックヘッダページ2221と、データページ2222と、テーブルページ2223である。
【0043】
このうち、ブロックヘッダページ2221内には、図5aに示すように、少なくともブロック消去回数22210の情報を格納する。空き領域22211は、情報を書き込まない領域であるが、この部分に不良ブロックを表すフラグやエラー発生回数の情報を格納してもよい。
【0044】
データページ2222は、図5bに示すように、データページヘッダ情報22220とデータ22221を有する。データページヘッダ情報22220は、ページ属性22222、論理アドレス22223、データ書き込み番号22224を含む。
【0045】
ページ属性22222には、このページがデータページ2222であるのか、テーブルページ2223であるのかを判別する際に使用するフラグを格納する。論理アドレス22223には、命令処理装置4が付与した論理アドレス情報を格納する。データ書き込み番号22224は、論理アドレス番号22223が同一であるデータページ2222が複数存在した場合に、データ22221の新旧を判別するために使用する番号である。
【0046】
本来ならば、データ22221の新旧は後述する各種の管理テーブルによって管理されるため、データ書き込み番号22224は必須ではない。しかし、データ書き込み番号22224があると、何らかの原因によってRAM内のテーブル情報が破壊された場合でも復旧可能となるため、本実施例では記載している。
【0047】
テーブルページ2223は、図5cに示すように、テーブルページヘッダ情報22230と論理/物理アドレス変換テーブル値22231を有する。テーブルページヘッダ情報22230は、ページ属性22232、テーブル管理番号22233、テーブル書き込み番号22234を含む。このうち、ページ属性22232は、図5bのデータページ2222におけるページ属性22222と同じ機能のものであり、ここでの説明を省略する。
【0048】
テーブル管理番号22233は、図1の変換テーブル管理テーブル235の管理単位であり、1ページ容量分の論理/物理アドレス変換テーブル、つまり1つのテーブルページ2223に対して1つの番号が与えられる。テーブルページ2223内にテーブル管理番号22233があることで、後述するブロック消去処理の際に、どのテーブル管理番号22233のテーブルページ2223をコピーしているのかがすぐに分かり、変換テーブル管理テーブル235の更新が容易となる。
【0049】
なお、ブロック消去処理とは、消去済みブロックが不足した場合に、データブロックの一部を消去済みブロックに移行するための処理である。このとき、データブロック内のデータをスクラッチブロックにコピーするが、どのページをコピーしたのかが管理されている必要がある。
【0050】
テーブル書き込み番号22234は、テーブル管理番号22233が同一であるテーブルページ2223が複数存在する場合に、論理/物理アドレス変換テーブル値22231の新旧を判別するために使用する番号である。テーブル書き込み番号22234もデータ書き込み番号22224と同様に必須の情報ではないが、この情報があると変換テーブル管理テーブル235の情報が何らかの原因で破壊された場合でも復旧可能となるため、本実施例では記載している。
【0051】
図6は、図1の論理/物理アドレス変換テーブル220の構成を示した図である。図1において、不揮発性メモリ22内の論理/物理アドレス変換テーブル220、およびRAM23内の論理/物理アドレス変換テーブルキャッシュ230は、命令処理装置4が指定するアドレス(論理アドレス2202)に対応する、データを格納しているアドレス(物理アドレス2203)を管理するテーブルである。
【0052】
このため、図6の論理/物理アドレス変換テーブル220は、論理アドレス2202と物理アドレス2203を対にして記憶している。このうち、メモリ内データの格納場所を定義する物理アドレス2203は、物理ブロック番号2204と物理ページ番号2205の組み合わせによって表わされる。
【0053】
また、論理アドレス2202と物理アドレス2203の組み合わせごとに、テーブル管理番号2201と論理グループ番号2200が付与されている。テーブル管理番号2201は、テーブルページ2223におけるテーブル管理番号22233(図5c参照)と同様に、変換テーブル管理テーブル235(図1)における管理番号を表している。このテーブル管理番号2201単位で分割された論理/物理アドレス変換テーブルを以降は分割変換テーブル240と呼称する。図6の例では、論理/物理アドレス変換テーブル220内の太い黒線で囲まれた部分が1つの分割変換テーブル240となる。また、論理アドレス空間を一定割合で分割したものを論理グループ番号2200として示している。
【0054】
図6の論理/物理アドレス変換テーブル220では、論理グループ番号2200やテーブル管理番号2201が昇順に並んでいるが、実際の論理/物理アドレス変換テーブル220は、テーブルページ2223ごとに分割されているため、このようなきれいな並びになるとは限らない。また、論理/物理アドレス変換テーブルキャッシュ230においても、論理/物理アドレス変換テーブル220と論理/物理アドレス変換テーブルキャッシュ230の間でテーブル情報の入れ替えが発生するため、図6のように論理グループ番号2200やテーブル管理番号2201が昇順できれいに並ぶとは限らない。
【0055】
図7は、図1のスクラッチブロック管理テーブル231の構成を表した図である。スクラッチブロック管理テーブル231は、論理グループ番号2310ごとに1つ以上割り当てられるスクラッチブロック2230(図3)を管理するためのテーブルである。それぞれのスクラッチブロック2230は、スクラッチブロック番号2311によって管理され、スクラッチブロックの利用状態を表すフラグ2312と、対応する物理ブロック番号2313が付与される。利用状態を表すフラグ2312は、このスクラッチブロックに対して書き込み可能である場合は1、空きページが無く書き込み不可能である場合は0を示す。
【0056】
図8は、図1のデータブロック管理テーブル232の構成を表した図である。データブロック管理テーブル232は、論理グループ番号2320に対して1つ以上割り当てられるデータブロック2240(図3)の管理を行うテーブルである。それぞれのデータブロック2240は、データブロック番号2321によって管理され、データブロックの利用状態を表すフラグ2322と対応する物理ブロック番号2323が付与される。利用状態を表すフラグ2322は、このデータブロックからデータが読み出し可能である場合は1、すでにこのデータブロックが消去されている場合は0を示す。
【0057】
図9は、図1の消去済みブロック管理テーブル233の構成を表した図である。消去済みブロック管理テーブル233は、データ消去が行われた消去済みブロック2250の管理を行うテーブルである。消去済みブロック2250(図3)は、消去済みブロック管理番号2330によって管理され、ブロックの利用状態を表すフラグ2331と対応する物理ブロック番号2332が付与される。利用状態を表すフラグ2331は、このブロックが消去済みブロック群に所属している場合は1、新しいスクラッチブロック2230として割り当てられるなどの処理によって、所属が消去済みブロック群から変更された場合には0を示す。
【0058】
図10は、図1の物理ブロック管理テーブル234の構成を表した図である。物理ブロック管理テーブル234は、各ブロック2220の利用状況を管理している。各ブロックは物理ブロック番号2340によって管理され、ブロックごとに消去回数2341、有効ページ数2342、有効ページフラグ2343、書き込み先ページ番号2344の情報を保持している。
【0059】
消去回数2341は、このブロックが消去された回数を示している。
【0060】
有効ページ数2342は、ブロック内の有効なデータを格納しているページの数を示している。また、有効ページフラグ2343は、有効なデータを格納しているページの位置を示しており、有効データを格納しているページは1、無効なデータを格納しているページは0で表わされる。有効ページフラグ2343の最も右が0ページ目を表しており、最も左がN−1ページ目を表している。
【0061】
書き込み先ページ番号2344は、次に書き込み可能なページ番号を表している。このブロックがデータブロック群224に所属しており、書き込み可能なページが無い場合には、書き込み先ページ番号はNとなる。
【0062】
図11は、図1の変換テーブル管理テーブル235の構成を表した図である。変換テーブル管理テーブル235は、図6の分割変換テーブル240をテーブル管理番号2350ごとに管理している。各テーブル管理番号2350に対して、保存フラグ2351、キャッシュ有無フラグ2352、更新フラグ2353、追い出しカウント2354、キャッシュエントリ番号2355、物理アドレス2356の情報を保持している。
【0063】
このうち、保存フラグ2351は、このテーブル管理番号2350の分割変換テーブル240が不揮発性メモリ22内に保存されているか否かを表すフラグである。すでに不揮発性メモリ22に保存されている場合は1、まだ保存されていない場合は0となる。
【0064】
キャッシュ有無フラグ2352は、このテーブル管理番号2350の分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230に保持されているか否かを表すものであり、保持されている場合は1、保存されていない場合には0を示す。
【0065】
更新フラグ2353は、この分割変換テーブル240が論理/物理アドレス変換テーブルキャッシュ230に保持されている場合に、テーブル情報が更新されたことを表すフラグである。命令処理装置4からの要求などによってテーブル情報が更新された場合は1、更新されていない場合は0を示す。更新フラグ2353を用いて更新の有無を判定することで、更新されていない分割変換テーブル240を不揮発性メモリ22に対して書き込むことを無くし、処理速度の低下を抑える。
【0066】
追い出しカウント2354は、論理/物理アドレス変換テーブルキャッシュ230の容量が満杯になった場合に、どの分割変換テーブル240を不揮発性メモリ22に書き込むか決定するためのものである。本実施例では、論理/物理アドレス変換テーブルキャッシュ230からのテーブル追い出しにLRU(Least Recently Used)方式を用いているが、他の方式を使用してもよい。他の方式を使用する場合には、追い出しカウント2354は無くてもよい。
【0067】
キャッシュエントリ番号2355は、分割変換テーブル240の論理/物理アドレス変換テーブルキャッシュ230上での保存先を示す。
【0068】
物理アドレス2356は、分割変換テーブル240の不揮発性メモリ22上での保存先を示す。物理アドレス2356は、物理ブロック番号2357と物理ページ番号2358の組み合わせからなる。
【0069】
通常のデータキャッシュの場合では、キャッシュ内に保持しているエントリ分の情報しか保持しない。しかし、本実施例においても同様の管理方法とすると、不揮発性メモリ22から論理/物理アドレス変換テーブルキャッシュ230へ分割管理テーブル240の情報を読み出す処理が行えない。そのため、論理/物理アドレス変換テーブルキャッシュ230に保持されているかどうかに関わらず、全ての分割変換テーブル240の情報を変換テーブル管理テーブル235に保持している。また、どのテーブル管理番号2350のテーブル情報が論理/物理アドレス変換テーブルキャッシュ230に保持されているかを識別するために、キャッシュ有無フラグ2352の情報を変換テーブル管理テーブル235内に格納している。
【0070】
図12は、図1のキャッシュ管理テーブル236の構成を表した図である。キャッシュ管理テーブル236は、論理/物理アドレス変換テーブルキャッシュ230のエントリをキャッシュエントリ番号2360ごとに管理している。各キャッシュエントリ番号2360に対して、有効フラグ2361を保持している。
【0071】
有効フラグ2361は、対応するキャッシュエントリ番号2360に分割変換テーブル240が保存されているか否かを表すものである。分割変換テーブル240が保存されている場合は1、保存されていない場合には0を示す。
【0072】
図1の不揮発性メモリ22、あるいはRAM23内の各テーブルなどは以上のように構成されている。これらテーブル構成の中で、本発明は特に図6の論理/物理アドレス変換テーブル、図11の変換テーブル管理テーブル、図12のキャッシュ管理テーブルに工夫がされている。
【0073】
係るテーブルなどを利用して、図13の処理フローチャートによりデータ読み出し処理を実行する。また、図18の処理フローチャートによりデータ書き込み処理を実行する。さらに、図20の処理フローチャートによりブロック消去処理を実行する。なお、これらの処理は、記憶装置2内のメモリコントローラ21により実行される。
【0074】
[データ読み出し処理]
図13は、データ読み出し時の処理フローチャートを表した図である。また、図13の各部ステップの詳細説明のために、図14から図17が使用される。
【0075】
図1において、データ読み出し処理は、命令処理装置4が読み出し対象の論理アドレスを指定することから開始される。
【0076】
図13のフローでは、ステップS500において、記憶装置2内のメモリコントローラ21が、データバス3およびI/F制御部20を介して、命令処理装置4から読み出し対象の論理アドレスを受信する。
【0077】
次に、メモリコントローラ21は、ステップS51において上記論理アドレスに対応する図6の分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230に存在しているか否かを確認する。存在しない場合には、不揮発性メモリ22から分割変換テーブル240を読み出す処理を行う。ステップS51における読み出し処理の詳細については、図14を用いて後述する。
【0078】
ステップS51の処理結果として、指定された論理アドレスに対応する分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230上に入手できた。この場合に、次のステップS501では、論理/物理アドレス変換テーブルキャッシュ230上の分割変換テーブル240を用いて、上記論理アドレスに対応する物理アドレスを特定する。分割変換テーブル240は、図6の構成を備えているので、物理アドレス2203として、物理ブロック番号2204と、物理ページ番号2205の組み合わせが得られている。
【0079】
次に、ステップS502では、図11の変換テーブル管理テーブル235において、ステップS501で使用した分割管理テーブル240の追い出しカウント2354を0に変更する。また、上記分割管理テーブル以外の分割管理テーブル240において、キャッシュ有無フラグ2352が1であるテーブルの追い出しカウント2354を1だけ加算する。ステップS502での一連の処理により、論理/物理アドレス変換テーブルキャッシュ230の容量が満杯になった場合に、古い(追い出しカウント2354の数が多い)分割変換テーブル240から順に、不揮発性メモリ22に戻されて書き込まれる。これにより、論理/物理アドレス変換テーブルキャッシュ230の容量が一定に保たれる。
【0080】
その後、ステップS503では、ステップS501で特定した物理アドレスを用いて、不揮発性メモリ22からデータ221を読み出す。
【0081】
次に、ステップS52では、図1の論理/物理アドレス変換テーブルキャッシュ230の容量が満杯である場合には、不揮発性メモリ22に対して、分割変換テーブル240を書き込む処理を行う。書き込み処理の詳細については、図15を用いて後述する。
【0082】
最後に、ステップS504では、命令処理装置4に対して、読み出し終了報告を行う。
【0083】
以上が読み出し時の概略処理であるが、ステップS51およびステップS52は処理をさらに細分化できるので、細分化した処理について説明する。図14は、ステップS51の詳細な処理フローチャートを表した図である。この処理は、論理アドレスに対応する分割変換テーブル240を、読み出すための処理である。
【0084】
ステップS51では、まずステップS510において命令処理装置4から受信した論理アドレスに対応する分割変換テーブル240が、論理/物理アドレス変換テーブルキャッシュ230に保持されているか、図11の変換テーブル管理テーブル235内のキャッシュ有無フラグ2352を用いて確認する。キャッシュ有無フラグ2352が0である場合には、論理/物理アドレス変換テーブルキャッシュ230に保持されていないので、ステップS511の処理に入る。キャッシュ有無フラグ2352が1である場合には、論理/物理アドレス変換テーブルキャッシュ230に保持されているので、ステップS51の処理は終了となる。
【0085】
ステップS511では、引き続き図11の変換テーブル管理テーブル235の保存フラグ2351が、1である(分割変換テーブル240が不揮発性メモリ22に記憶されている)ことを確認する。保存フラグ2351が1である場合には、ステップS512の処理、0である場合には、ステップS514の処理を実行する。
【0086】
保存フラグ2351が1である場合には、ステップS512において、この分割変換テーブル240の格納先である物理アドレス2356を図11で確認する。
【0087】
ステップS513では、不揮発性メモリ22から対応する分割変換テーブル240を読み出す。そして、図12のキャッシュ管理テーブル236の有効フラグ2361を確認し、論理/物理アドレス変換テーブルキャッシュ230の空いているエントリに、読み出した分割変換テーブル240の情報を格納する。
【0088】
なお、ステップS511において保存フラグ2351が0である場合には、ステップS514において図6のキャッシュ管理テーブル236の有効フラグ2361を確認し、論理/物理アドレス変換テーブルキャッシュ230の空いているエントリの選択を行う。
【0089】
その後、ステップS515において、図11の変換テーブル管理テーブル235のキャッシュ有無フラグ2352を1に変更し、更新フラグ2353と追い出しフラグ2354を0に初期化し、キャッシュエントリ番号2355をステップS513もしくはステップS514で選択したエントリ番号に更新する。また、図12のキャッシュ管理テーブル236において、上記キャッシュエントリ番号2355に対応する有効フラグ2361を1に変更する。以上がステップS51の処理の詳細である。
【0090】
図15はステップS52の詳細な処理フローチャートを表した図である。ステップS52は、この全体処理により、分割変換テーブル240を不揮発性メモリ22へ書き込む処理を行う。
【0091】
ステップS52の最初のステップS520では、まず論理/物理アドレス変換テーブルキャッシュ230の容量が満杯であるかどうかを確認する。満杯である場合(YES)には、ステップS522側に移り分割変換テーブル240を不揮発性メモリ22へと書き込む処理を行う。満杯でない場合(NO)には、ステップS52の処理は終了となる。
【0092】
不揮発性メモリ22への分割変換テーブル240の書き込みを行う場合は、まずステップS521において、図11の変換テーブル管理テーブル235内のキャッシュ有無フラグ2352と追い出しカウント2354を参照する。そして、キャッシュ有無フラグ2352が1(不揮発性メモリ22に保存されている)であり、かつこの中で追い出しカウント2354が最も大きい分割変換テーブル240を書き込み対象として選択する。
【0093】
その後、ステップS522において、選択した分割変換テーブル240の更新フラグ2353(図11)を確認し、更新フラグ2353が1(更新あり)である場合には、ステップS53に移り書き込み先ページの特定を行う。更新フラグ2353が0(更新なし)である場合には、ステップS524に移る。なお、ステップS53の詳細は、図16で後述する。
【0094】
ステップS523では、ステップS53で特定した物理アドレスに対して選択した分割変換テーブル240を書き込む。
【0095】
ステップS54では、書き込み終了後、図7のスクラッチブロック管理テーブル231、図8のデータブロック管理テーブル232、図10の物理ブロック管理テーブル234の更新処理を行う。なお、ステップS54の詳細は、図17で後述する。
【0096】
最後に、ステップS524では、書き込み以前の変換テーブル管理テーブル235(図11)の物理アドレス2356から、図10の物理ブロック管理テーブル234の対応する物理ブロック番号2340を選択し、有効ページ数2342を1つ減算し、有効ページフラグ2343の該当ページ部分を0に更新する。
【0097】
また、変換テーブル管理テーブル235(図11)において、書き込みを行ったテーブル管理番号2350と対応する保存フラグ2351を1(不揮発性メモリ22に保存)に変更し、キャッシュ有無フラグ2352を0(論理/物理アドレス変換テーブルキャッシュ230に保存せず)に変更する。また、図11の物理アドレス2356の部分を不揮発性メモリ22の書き込み先の物理アドレスに更新する。
【0098】
そして、書き込みを行った分割管理テーブル240のキャッシュエントリ番号2355(図11)を参照し、図12のキャッシュ管理テーブル236において、対応するキャッシュエントリ番号2360の有効フラグ2361を0(分割管理テーブル240保存せず)に変更する。
【0099】
なお、ステップS522において、更新フラグ2353が0(更新なし)である場合には、ステップS53、ステップS523、ステップS54の処理は行わない。また、ステップS524でも、物理ブロック管理テーブル234(図10)の更新、変換テーブル管理テーブル235(図11)における物理アドレス2356の更新は行わない。以上がステップS52の処理の詳細である。
【0100】
図15のステップS52内の主要な処理であるステップS53およびステップS54は、さらに処理を細分化することができる。
【0101】
図16は、ステップS53の詳細な処理フローチャートを表した図である。ステップS53の最初のステップS530では、まず書き込み対象の分割変換テーブル240(図6)が所属する論理グループ番号2200に対して、スクラッチブロック2230(図7)が割り当てられているか確認する。この確認は、スクラッチブロック管理テーブル231内で、論理グループ番号2200と一致する論理グループ番号2310のフラグ2312の値を判定することで行う。フラグ2312が1(書き込み可能)であればスクラッチブロック2230が既に割り当てられていると判定し、0(書き込み不可)であれば割り当てられていないと判定する。既に割り当てられている場合には、ステップS533へと移行する。
【0102】
割り当てられていない場合には、ステップS531において、図3の消去済みブロック2250の中からブロックを1つ選択して、図7のスクラッチブロック管理テーブル231の物理ブロック番号2313部分に登録し、フラグ2312を1(書き込み可能)に変更する。
【0103】
その後、ステップS532において、割り当てた図3の消去済みブロック2250に対して、図9の消去済みブロック管理テーブル233内のフラグ2331を0(消去済みブロック群に所属せず)に変更する。
【0104】
次に、ステップS533では、図7のスクラッチブロック管理テーブル231を確認し、スクラッチブロック番号2311に対応する物理ブロック番号2313を確認する。
【0105】
そして、ステップS534では、ステップS533で確認した物理ブロック番号2313を、図10の物理ブロック管理テーブル234の物理ブロック番号2340と参照し、該当ブロックの書き込み先ページ番号2344を得る。ステップS53は以上で完了となる。
【0106】
また図17は、ステップS54の詳細な処理フローチャートを表した図である。ステップS54の最初のステップS540では、まず書き込みによって図3のスクラッチブロック2230の空きページが無くなったかどうかを確認する。空きページがない場合には、ステップS541の処理に入り、空きページがある場合にはステップS542に移る。
【0107】
空きページが無くなった場合には、ステップS541において、以下の一連の処理を実行する。まず、図7のスクラッチブロック管理テーブル231において、このスクラッチブロックのフラグ2312を0(書き込み不可)に変更する。その後、図8のデータブロック管理テーブル232において、上記スクラッチブロックが所属していた論理グループ番号2310と対応する論理グループ番号2320の中で、フラグ2322が0(読み出し不可)であるデータブロック番号2321を選択する。そして、選択したデータブロック番号2321のフラグ2322を1(読み出し可能)に変更し、さらに物理ブロック番号2323部分に上記スクラッチブロックの物理ブロック番号2313を登録する。
【0108】
スクラッチブロックに空きページが存在する場合には、ステップS541の処理は行わない。ステップS541もしくはステップS540の後、ステップS542においては、図10の物理ブロック管理テーブル234の有効ページ数2342および書き込み先ページ番号2344を1つ加算し、有効ページフラグ2343を更新する。以上で、ステップS54の処理は終了となる。
【0109】
[データ書き込み処理]
図18は、データ書き込み時の処理フローチャートを表した図である。一部、データ読み出し時と同一のステップS番号を持つ処理が存在するが、これらの処理については処理内容も同一であるため、説明を省略する。
【0110】
データ書き込み処理は、ステップS600において、メモリコントローラ21がデータバス3およびI/F制御部20を介して、命令処理装置4から書き込みデータと論理アドレスを受信するところから開始される。
【0111】
次に、メモリコントローラ21は、ステップS53においてデータを書き込む物理アドレスの特定を行う。この処理は図16で詳細に説明したとおりなので、説明は省略する。
【0112】
その後、ステップS601において、ステップS53で特定した物理アドレスに対して、データを書き込む。
【0113】
ステップS61では、書き込み終了後、各種管理テーブルの更新を行う。この処理は図19を用いて後述する。
【0114】
最後に、ステップS602において、命令処理装置4に対して、書き込み終了報告を行う。
【0115】
以上が書き込み時の処理であるが、ステップS61は処理をさらに細分化できるので、細分化した処理について説明する。図19はステップS61の詳細な処理フローチャートを表した図である。
【0116】
ステップS61では、まずステップS54において、データ書き込みに対して、スクラッチブロック管理テーブル231、データブロック管理テーブル232、物理ブロック管理テーブル234の更新処理を行う。この処理は図17で詳細に説明したとおりなので、ここでの説明は省略する。
【0117】
次に、ステップS51において、分割変換テーブル240の読み出しを行う。この処理は図14で詳細に説明したとおりなので、ここでの説明は省略する。
【0118】
ステップS610では、図3の論理/物理アドレス変換テーブルキャッシュ230上の分割変換テーブル240から、論理アドレスに対応する書き込み前の物理アドレスを特定し、この書き込み前の物理アドレスを用いて物理ブロック管理テーブル234(図図10)の有効ページ数2342の減算、および有効ページフラグ2343の無効化を行う。また、分割変換テーブル240の物理アドレス2203部分を図18のステップS53で特定した物理アドレスに書き換える。
【0119】
その後、ステップS611で、図11の変換テーブル管理テーブル235において、ステップS610で更新した分割変換テーブル240のテーブル管理番号2350に対応する追い出しカウント2354を0に変更する。また、上記以外でキャッシュ有無フラグ2352が1であるテーブル管理番号2350の追い出しフラグ2354を1だけ加算する。
【0120】
その後、ステップS52において、分割変換テーブル240の書き込みを行う。この処理は図15で詳細に説明したとおりなので、ここでの説明は省略する。
【0121】
以上がステップS61の処理の詳細である。
【0122】
[ブロック消去処理]
図20は、ブロック消去時の処理フローチャートを表した図である。図1のメモリコントローラ21は、ステップS700において、図3の消去済みブロック2250の数が一定数以下になった場合に、ブロック消去処理を開始する。
【0123】
まず、ステップS701では、メモリコントローラ21は、図8のデータブロック管理テーブル232を参照し、登録されている物理ブロック番号2323を取得する。取得した物理ブロック番号2323と対応する図10の物理ブロック管理テーブル234内の物理ブロック番号2340の有効ページ数2342を参照する。そして、データブロック管理テーブル232に登録されているブロックの中で、最も有効データページ数の少ないブロックを消去対象として選択する。
【0124】
次に、ステップS702では、消去対象として選択したブロックの有効ページ数2342が0であるか確認する。
【0125】
有効ページ数2342が0でない場合は、ステップS703において、物理ブロック管理テーブル234の有効ページフラグ2343を参照し、有効ページのデータをスクラッチブロック2230へコピーする。
【0126】
このコピー作業を、選択したブロックの有効ページ数2342が0になるまで繰り返し、有効ページ数2342が0になった場合は、ステップS704に移って、該当ブロックを消去する。
【0127】
最後に、ステップS705では、各種テーブルについての一連の更新処理を実行する。まず、図8のデータブロック管理テーブル232の消去したブロック番号と一致する物理ブロック番号2323のフラグ2322を0(読み出し不可)に変更し、データブロック管理テーブル232からこのブロックの登録を抹消する。そして、消去したブロック番号を図9の消去済みブロック管理テーブル233のフラグ2331が0(消去済みブロック群に所属せず)である消去済みブロック番号2330のエントリに登録し、フラグ2331を1(消去済みブロック群に所属)に変更する。また図10の物理ブロック管理テーブル234において、消去したブロック番号に対応する物理ブロック番号2340の消去回数2341を1つ加算する。
【0128】
図20の上記消去処理を、消去済みブロック2250の数が一定数以上となるまで繰り返し行う。以上がブロック消去時の処理である。
【0129】
なお、本発明は上記の実施例に限定されるものではなく、さまざまな変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【0130】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によるハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによるソフトウェアで実現してもよい。
【0131】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には、殆ど全ての構成が相互に接続されていると考えて良い。
【符号の説明】
【0132】
1:計算機
2:記憶装置
3:データバス
4:命令処理装置
5:主記憶メモリ
6:入出力制御装置
7:ネットワーク制御装置
8:表示装置
20:I/F制御部
21:メモリコントローラ
22:不揮発性メモリ
23:RAM
220:論理/物理アドレス変換テーブル
221:データ
230:論理/物理アドレス変換テーブルキャッシュ
231:スクラッチブロック管理テーブル
232:データブロック管理テーブル
233:消去済みブロック管理テーブル
234:物理ブロック管理テーブル
235:変換テーブル管理テーブル
236:キャッシュ管理テーブル
222:ブロック
2220:ページ
2230:スクラッチブロック
2240:データブロック
2250:消去済みブロック
2221:ブロックヘッダページ
2222:データページ
2223:テーブルページ
2224:空きページ
22210:ブロック消去回数
22211:空き領域
22221:データ
22222:ページ属性
22223:論理アドレス
22224:データ書き込み番号
22231:論理/物理アドレス変換テーブル値
22232:ページ属性
22233:テーブル管理番号
22234:テーブル書き込み番号
2200:論理グループ番号
2201:テーブル管理番号
2202:論理アドレス
2203:物理アドレス
240:分割変換テーブル
2310:論理グループ番号
2311:スクラッチブロック番号
2312:フラグ
2313:物理ブロック番号
2320:論理グループ番号
2321:データブロック番号
2322:フラグ
2323:物理ブロック番号
2330:消去済みブロック番号
2331:フラグ
2332:物理ブロック番号
2340:物理ブロック番号
2341:消去回数
2342:有効ページ数
2343:有効ページフラグ
2344:書き込み先ページ番号
2350:テーブル管理番号
2351:保存フラグ
2352:キャッシュ有無フラグ
2353:更新フラグ
2354:追い出しカウント
2355:キャッシュエントリ番号
2356:物理アドレス
2360:キャッシュエントリ番号
2361:有効フラグ
【特許請求の範囲】
【請求項1】
所定の書き込み単位であるページと該書き込み単位よりも大きいデータ消去単位であるブロックを持つ不揮発性メモリと、データの読み出し及び書き込みが出来るRAMと、前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
前記不揮発性メモリは、命令処理装置が書き込みを行ったデータと、該データの格納場所を管理する論理/物理アドレス変換テーブルを前記ページ単位に分割した複数の分割変換テーブルを有し、
前記RAMは、前記分割変換テーブルの少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュと、前記分割変換テーブルを管理する変換テーブル管理テーブルと、前記論理/物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを有し、
前記変換テーブル管理テーブルは、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに保存されていることを示すキャッシュ有無フラグと、前記論理/物理アドレス変換テーブルキャッシュにおける前記分割変換テーブルの保存先を示すキャッシュエントリ番号を有し、
前記不揮発性メモリと前記RAMの間における前記論理/物理アドレス変換テーブルの情報の読み出し及び書き込みは、前記ページ単位で行うことを特徴とする記憶装置。
【請求項2】
請求項1に記載の記憶装置において、
前記論理/物理アドレス変換テーブルキャッシュ内に複数の前記分割変換テーブルを保有している場合に、前記分割変換テーブルのいずれを前記論理/物理アドレス変換テーブルキャッシュから前記不揮発性メモリに書き込むかを、前記分割変換テーブルの使用頻度を示す追い出しカウントによって決定することを特徴とした記憶装置。
【請求項3】
請求項1に記載の記憶装置において、
書き込み対象として選択された前記論理/物理アドレス変換テーブルキャッシュ内の前記分割変換テーブルの情報が、前記不揮発性メモリ内の前記分割変換テーブルの情報と一致している場合には、前記書き込み対象として選択された分割変換テーブルの前記不揮発性メモリへの書き込み処理は行わないことを特徴とした記憶装置。
【請求項4】
請求項1に記載の記憶装置において、
前記不揮発性メモリの記憶領域は、1つ以上のブロックからなるスクラッチブロックと、1つ以上のブロックからなるデータブロックと、1つ以上のブロックからなる消去済みブロックで構成され、
前記RAMは、前記スクラッチブロックの管理を行うスクラッチブロック管理テーブルと、前記データブロックの管理を行うデータ管理テーブルと、前記消去済みブロックの管理を行う消去済みブロック管理テーブルを有し、
前記論理/物理アドレス変換テーブルキャッシュ内の前記分割変換テーブルを前記不揮発性メモリに書き込む場合には、前記スクラッチブロック内の空きページに書き込むとともに、前記変換テーブル管理テーブルを更新し、
前記スクラッチブロックの空きページが無くなった場合には、そのスクラッチブロックを前記データブロックの1つとして扱い、新しいスクラッチブロックとして前記消去済みブロックのうちいずれか1つを割り当て、
前記消去済みブロックが不足した場合には、前記データブロックの中から有効データが少ないブロックを消去対象として選択し、前記消去対象ブロックから有効なデータだけを前記スクラッチブロックにコピーした後、前記消去対象ブロックを消去することを特徴とする記憶装置。
【請求項5】
請求項4に記載の記憶装置において、
前記RAM内に、各ブロックの消去回数および有効ページ数を管理する物理ブロック管理テーブルを有することを特徴とした記憶装置。
【請求項6】
請求項4に記載の記憶装置において、
前記スクラッチブロックと前記データブロックを一定量に分割した論理グループ番号ごとに管理することを特徴とする記憶装置。
【請求項7】
命令処理装置と、記憶装置を有する計算機であって、
前記記憶装置として、請求項1から請求項6のいずれかに記載の記憶装置を有することを特徴とする計算機。
【請求項8】
不揮発性メモリと、RAMと、前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
前記不揮発性メモリは、データの格納場所を管理する論理/物理アドレス変換テーブルを所定の単位に分割した複数の分割変換テーブルを有し、
前記RAMは、前記分割変換テーブルの少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュと、前記分割変換テーブルを管理する変換テーブル管理テーブルと、前記論理/物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを有し、
前記変換テーブル管理テーブルにより、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに保存されていることと、前記論理/物理アドレス変換テーブルキャッシュにおける前記分割変換テーブルの保存先を管理し、
前記不揮発性メモリと前記RAMの間における前記論理/物理アドレス変換テーブルの情報の読み出し及び書き込みを行うことを特徴とする記憶装置。
【請求項9】
請求項8に記載の記憶装置において、
前記変換テーブル管理テーブルは、前記論理/物理アドレス変換テーブルキャッシュ内に保有する前記分割変換テーブルの中から前記不揮発性メモリに書き込む分割変換テーブルを決定することを特徴とした記憶装置。
【請求項1】
所定の書き込み単位であるページと該書き込み単位よりも大きいデータ消去単位であるブロックを持つ不揮発性メモリと、データの読み出し及び書き込みが出来るRAMと、前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
前記不揮発性メモリは、命令処理装置が書き込みを行ったデータと、該データの格納場所を管理する論理/物理アドレス変換テーブルを前記ページ単位に分割した複数の分割変換テーブルを有し、
前記RAMは、前記分割変換テーブルの少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュと、前記分割変換テーブルを管理する変換テーブル管理テーブルと、前記論理/物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを有し、
前記変換テーブル管理テーブルは、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに保存されていることを示すキャッシュ有無フラグと、前記論理/物理アドレス変換テーブルキャッシュにおける前記分割変換テーブルの保存先を示すキャッシュエントリ番号を有し、
前記不揮発性メモリと前記RAMの間における前記論理/物理アドレス変換テーブルの情報の読み出し及び書き込みは、前記ページ単位で行うことを特徴とする記憶装置。
【請求項2】
請求項1に記載の記憶装置において、
前記論理/物理アドレス変換テーブルキャッシュ内に複数の前記分割変換テーブルを保有している場合に、前記分割変換テーブルのいずれを前記論理/物理アドレス変換テーブルキャッシュから前記不揮発性メモリに書き込むかを、前記分割変換テーブルの使用頻度を示す追い出しカウントによって決定することを特徴とした記憶装置。
【請求項3】
請求項1に記載の記憶装置において、
書き込み対象として選択された前記論理/物理アドレス変換テーブルキャッシュ内の前記分割変換テーブルの情報が、前記不揮発性メモリ内の前記分割変換テーブルの情報と一致している場合には、前記書き込み対象として選択された分割変換テーブルの前記不揮発性メモリへの書き込み処理は行わないことを特徴とした記憶装置。
【請求項4】
請求項1に記載の記憶装置において、
前記不揮発性メモリの記憶領域は、1つ以上のブロックからなるスクラッチブロックと、1つ以上のブロックからなるデータブロックと、1つ以上のブロックからなる消去済みブロックで構成され、
前記RAMは、前記スクラッチブロックの管理を行うスクラッチブロック管理テーブルと、前記データブロックの管理を行うデータ管理テーブルと、前記消去済みブロックの管理を行う消去済みブロック管理テーブルを有し、
前記論理/物理アドレス変換テーブルキャッシュ内の前記分割変換テーブルを前記不揮発性メモリに書き込む場合には、前記スクラッチブロック内の空きページに書き込むとともに、前記変換テーブル管理テーブルを更新し、
前記スクラッチブロックの空きページが無くなった場合には、そのスクラッチブロックを前記データブロックの1つとして扱い、新しいスクラッチブロックとして前記消去済みブロックのうちいずれか1つを割り当て、
前記消去済みブロックが不足した場合には、前記データブロックの中から有効データが少ないブロックを消去対象として選択し、前記消去対象ブロックから有効なデータだけを前記スクラッチブロックにコピーした後、前記消去対象ブロックを消去することを特徴とする記憶装置。
【請求項5】
請求項4に記載の記憶装置において、
前記RAM内に、各ブロックの消去回数および有効ページ数を管理する物理ブロック管理テーブルを有することを特徴とした記憶装置。
【請求項6】
請求項4に記載の記憶装置において、
前記スクラッチブロックと前記データブロックを一定量に分割した論理グループ番号ごとに管理することを特徴とする記憶装置。
【請求項7】
命令処理装置と、記憶装置を有する計算機であって、
前記記憶装置として、請求項1から請求項6のいずれかに記載の記憶装置を有することを特徴とする計算機。
【請求項8】
不揮発性メモリと、RAMと、前記不揮発性メモリおよび前記RAMへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
前記不揮発性メモリは、データの格納場所を管理する論理/物理アドレス変換テーブルを所定の単位に分割した複数の分割変換テーブルを有し、
前記RAMは、前記分割変換テーブルの少なくとも1つ以上を保存する論理/物理アドレス変換テーブルキャッシュと、前記分割変換テーブルを管理する変換テーブル管理テーブルと、前記論理/物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを有し、
前記変換テーブル管理テーブルにより、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに保存されていることと、前記論理/物理アドレス変換テーブルキャッシュにおける前記分割変換テーブルの保存先を管理し、
前記不揮発性メモリと前記RAMの間における前記論理/物理アドレス変換テーブルの情報の読み出し及び書き込みを行うことを特徴とする記憶装置。
【請求項9】
請求項8に記載の記憶装置において、
前記変換テーブル管理テーブルは、前記論理/物理アドレス変換テーブルキャッシュ内に保有する前記分割変換テーブルの中から前記不揮発性メモリに書き込む分割変換テーブルを決定することを特徴とした記憶装置。
【図1】
【図2】
【図3】
【図4】
【図5a】
【図5b】
【図5c】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5a】
【図5b】
【図5c】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2012−174086(P2012−174086A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−36717(P2011−36717)
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]