(57)【特許請求の範囲】
【請求項１】
所定の書き込み単位であるページと該書き込み単位よりも大きいデータ消去単位であるブロックを持つ不揮発性メモリと、データの読み出し及び書き込みが出来るＲＡＭと、前記不揮発性メモリおよび前記ＲＡＭへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
前記不揮発性メモリは、命令処理装置が書き込みを行ったデータと、該データの格納場所を管理する論理／物理アドレス変換テーブルを前記ページ単位に分割した複数の分割変換テーブルを有し、
前記ＲＡＭは、前記複数の分割変換テーブルのうち少なくとも２つ以上を保存する論理／物理アドレス変換テーブルキャッシュと、前記分割変換テーブルを管理する変換テーブル管理テーブルと、前記論理／物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを有し、
前記変換テーブル管理テーブルは、前記分割変換テーブルが前記論理／物理アドレス変換テーブルキャッシュに保存されていることを示すキャッシュ有無フラグと、前記論理／物理アドレス変換テーブルキャッシュにおける前記分割変換テーブルの保存先を示すキャッシュエントリ番号を有し、
前記キャッシュ管理テーブルは、論理／物理アドレス変換テーブルキャッシュのエントリを前記キャッシュエントリ番号ごとに管理し、各キャッシュエントリ番号に対して保持する有効フラグにより、対応するキャッシュエントリ番号に分割変換テーブルが保存されているか否かを表しており、
前記メモリコントローラは、指定された論理アドレスの分割変換テーブルが論理／物理アドレス変換テーブルキャッシュに保存されていない場合には、不揮発性メモリから該当する分割変換テーブルを読み出すとともに、キャッシュ管理テーブルを参照して空いているエントリに読み出した分割変換テーブルを格納し、
前記不揮発性メモリと前記ＲＡＭの間における前記論理／物理アドレス変換テーブルの情報の読み出し及び書き込みは、前記ページ単位で行うことを特徴とする記憶装置。
【請求項２】
請求項１に記載の記憶装置において、
前記論理／物理アドレス変換テーブルキャッシュ内に複数の前記分割変換テーブルを保有している場合に、前記分割変換テーブルのいずれを前記論理／物理アドレス変換テーブルキャッシュから前記不揮発性メモリに書き込むかを、前記分割変換テーブルの使用頻度を示す追い出しカウントによって決定することを特徴とした記憶装置。
【請求項３】
請求項１に記載の記憶装置において、
前記論理／物理アドレス変換テーブルキャッシュ内に複数の前記分割変換テーブルを保有し、書き込み対象として選択した前記論理／物理アドレス変換テーブルキャッシュ内の分割変換テーブルを前記論理／物理アドレス変換テーブルキャッシュから前記不揮発性メモリに書き込む場合に、書き込み対象として選択された前記論理／物理アドレス変換テーブルキャッシュ内の前記分割変換テーブルの情報が、前記不揮発性メモリ内の前記分割変換テーブルの情報と一致している場合には、前記書き込み対象として選択された分割変換テーブルの前記不揮発性メモリへの書き込み処理は行わないことを特徴とした記憶装置。
【請求項４】
請求項１に記載の記憶装置において、
前記不揮発性メモリの記憶領域は、１つ以上のブロックからなるスクラッチブロックと、１つ以上のブロックからなるデータブロックと、１つ以上のブロックからなる消去済みブロックで構成され、
前記ＲＡＭは、前記スクラッチブロックの管理を行うスクラッチブロック管理テーブルと、前記データブロックの管理を行うデータ管理テーブルと、前記消去済みブロックの管理を行う消去済みブロック管理テーブルを有し、
前記論理／物理アドレス変換テーブルキャッシュ内の前記分割変換テーブルを前記不揮発性メモリに書き込む場合には、前記スクラッチブロック内の空きページに書き込むとともに、前記変換テーブル管理テーブルを更新し、
前記スクラッチブロックの空きページが無くなった場合には、そのスクラッチブロックを前記データブロックの１つとして扱い、新しいスクラッチブロックとして前記消去済みブロックのうちいずれか１つを割り当て、
前記消去済みブロックが不足した場合には、前記データブロックの中から有効データが少ないブロックを消去対象として選択し、前記消去対象ブロックから有効なデータだけを前記スクラッチブロックにコピーした後、前記消去対象ブロックを消去することを特徴とする記憶装置。
【請求項５】
請求項４に記載の記憶装置において、
前記ＲＡＭ内に、各ブロックの消去回数および有効ページ数を管理する物理ブロック管理テーブルを有することを特徴とした記憶装置。
【請求項６】
請求項４に記載の記憶装置において、
前記スクラッチブロックと前記データブロックを一定量に分割した論理グループ番号ごとに管理することを特徴とする記憶装置。
【請求項７】
命令処理装置と、記憶装置を有する計算機であって、
前記記憶装置として、請求項１から請求項６のいずれかに記載の記憶装置を有することを特徴とする計算機。
【請求項８】
不揮発性メモリと、ＲＡＭと、前記不揮発性メモリおよび前記ＲＡＭへの読み出し及び書き込み処理を行うメモリコントローラを有する記憶装置であって、
前記不揮発性メモリは、データの格納場所を管理する論理／物理アドレス変換テーブルを所定の単位に分割した複数の分割変換テーブルを有し、
前記ＲＡＭは、前記複数の分割変換テーブルのうち少なくとも２つ以上を保存する論理／物理アドレス変換テーブルキャッシュと、前記分割変換テーブルを管理する変換テーブル管理テーブルと、前記論理／物理アドレス変換テーブルキャッシュの管理を行うキャッシュ管理テーブルを有し、
前記変換テーブル管理テーブルは、前記分割変換テーブルが前記論理／物理アドレス変換テーブルキャッシュに保存されていることを示すキャッシュ有無フラグと、前記論理／物理アドレス変換テーブルキャッシュにおける前記分割変換テーブルの保存先を示すキャッシュエントリ番号を有し、
前記キャッシュ管理テーブルは、論理／物理アドレス変換テーブルキャッシュのエントリを前記キャッシュエントリ番号ごとに管理し、各キャッシュエントリ番号に対して保持する有効フラグにより、対応するキャッシュエントリ番号に分割変換テーブルが保存されているか否かを表しており、
前記メモリコントローラは、指定された論理アドレスの分割変換テーブルが論理／物理アドレス変換テーブルキャッシュに保存されていない場合には、不揮発性メモリから該当する分割変換テーブルを読み出すとともに、キャッシュ管理テーブルを参照して空いているエントリに読み出した分割変換テーブルを格納し、
前記不揮発性メモリと前記ＲＡＭの間における前記論理／物理アドレス変換テーブルの情報の読み出し及び書き込みを行うことを特徴とする記憶装置。
【請求項９】
請求項８に記載の記憶装置において、
前記変換テーブル管理テーブルは、前記論理／物理アドレス変換テーブルキャッシュ内に保有する前記分割変換テーブルの中から前記不揮発性メモリに書き込む分割変換テーブルを決定することを特徴とした記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置およびそれを搭載した計算機に関する。
【背景技術】
【０００２】
情報機器の補助記憶装置として、一般には磁気ディスク記憶装置が用いられている。この磁気ディスク記憶装置では、データの読み出し及び書き込みはセクタと呼ばれる記憶単位ごとに行われている。
【０００３】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  ｏｎｌｙ  Ｍｅｍｏｒｙ）の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【０００４】
このフラッシュメモリは、磁気ディスクと比べて読み出し及び書き込み速度に優れるが、使用上の制限が４つ存在する。１つ目は、データの読み出し及び書き込み単位（一般にページと呼ばれる）と消去単位（一般にブロックと呼ばれ、複数のページから構成される）が決まっており、ブロックはページよりもサイズが大きいことである。２つ目は、データを上書きする際には、１度データを消去した後に、再度書き込みを行う必要があることである。３つ目は、ブロック内のあるページにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。４つ目は、ブロックごとに消去回数の上限が決まっていることである。
【０００５】
特許文献１では、上記のフラッシュメモリ特性を考慮し、記憶装置の高性能化および長寿命化を行うためのメモリ制御方法を提案している。ここでは、「不揮発性半導体メモリを管理する際に、物理ブロックをスクラッチブロック、データブロック、消去済みブロックの３種類に分けている。ホスト装置からのデータ書き込みは、スクラッチブロックに対して行う。スクラッチブロック内の空きページが無くなった場合には、このブロックを以降はデータブロックとして扱い、消去済みブロックの中から１つを新たにスクラッチブロックとして割り当てる。また、消去済みブロックが不足した場合は、データブロックの中から有効なデータの少ないブロックを選択し、当該ブロックに含まれるすべての有効なデータをスクラッチブロックにコピーした後、ブロック消去を行い、消去済みブロックを得る。」としている。
【０００６】
また、特許文献２には、記憶装置に搭載するＲＡＭ容量を抑えるための方法が提案されている。ここでは、「揮発性記憶手段に記憶される第１のアドレス変換テーブル、不揮発性記憶手段に記憶される第２のアドレス変換テーブルを備える。受信された要求に係る論理セクタアドレスと揮発性記憶手段によって記憶された第１のアドレス変換テーブルとから、不揮発性記憶手段に記憶される第２のアドレス変換テーブルの物理ロケーションを取得する。第１のアドレス取得手段によって取得された物理ロケーションに基づいて、不揮発性記憶手段に記憶された第２のアドレス変換テーブルを得る。受信手段によって受信された要求に係る論理セクタアドレスと当該第２のアドレス変換テーブルとから、不揮発性記憶手段に対しデータを書き込む。」としている。
【０００７】
また、特許文献３には、ホスト計算機からの書き込み要求に対する応答速度を速める方法が提案されている。ここでは、「ＷＣ（ライトキャッシュ）追い出し制御部は、ＷＣリソース使用量を上限値Ｃｌｍｔより値が小さいＡＦ（Ａｕｔｏ  Ｆｌｕｓｈ）閾値Ｃａｆと比較する。ＷＣリソース使用量がＡＦ閾値Ｃａｆを越えているときは、ＮＡＮＤメモリでの整理の状態を確認する。ＮＡＮＤメモリでの整理が充分に進んでいる場合には、早めにＷＣからＮＡＮＤメモリにデータを追い出す。」としている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特願２００９−２７５０４８号公報
【特許文献２】特開平１１−２０３１９１号公報
【特許文献３】特開２０１０−１５７１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１には、ページ単位でデータ構造を管理するメモリ制御方式が記載されている。このメモリ制御方式は、データをページ単位で管理するために高速な処理が可能であるが、ブロック単位で管理する方法に比べて論理／物理アドレス変換テーブルの容量が大きくなる。しかも、この論理／物理アドレス変換テーブルは記憶装置の記憶容量に比例して増加する。そのため、記憶装置の大容量化を行うと、論理／物理アドレス変換テーブルを格納するための大容量メモリが必要となり、記憶装置の大型化やコストの増大につながるという問題がある。
【００１０】
特許文献２では、論理／物理アドレス変換テーブルをＲＡＭとフラッシュメモリに分割して保存することで、ＲＡＭ容量を削減する方法が記載されている。この方法によれば、特許文献１で課題としたＲＡＭ容量の大幅削減を可能とするが、計算機からの書き込み処理に対して、テーブル情報とデータの２ページ分の書き込みが発生してしまう。そのため、テーブル情報を書き込まない場合と比べて処理速度が低下し、フラッシュメモリの書き換え回数を消耗するという問題がある。
【００１１】
上記課題を解決するために、不揮発性メモリに論理／物理アドレス変換テーブルを保存し、ＲＡＭには論理／物理アドレス変換テーブルの一部をキャッシュとして保持することで、ＲＡＭ容量を削減しつつ、処理速度の低下を抑制する方法が考えられる。
【００１２】
このようなキャッシュを用いたデータ管理方法の一例が、特許文献３に記載されたＷＣ（ライトキャッシュ）とＮＡＮＤフラッシュメモリ間でのデータ制御方法である。
【００１３】
このデータ制御方法では、ＷＣ内のデータ管理情報として、ＷＣトラック情報を使用している。ＷＣトラック情報は、キャッシュ内に保持しているトラックのアドレスやトラック内の有効セクタ数などの情報を有しているが、キャッシュのエントリ分の情報しか保持していない。同様のキャッシュ管理情報を論理／物理アドレス変換テーブル情報のキャッシュ管理に適応したとしても、キャッシュに保持されていないテーブル情報が不揮発性メモリ内のどの物理アドレスに保存されているか把握できないと言う問題がある。
【００１４】
そこで、本発明では、記憶装置の大型化やコストの増大を阻止しながら、処理速度が低下せず、かつ不揮発性メモリ内の物理アドレス管理を可能とする記憶装置およびそれを搭載した計算機を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明では不揮発性メモリに論理／物理アドレス変換テーブルを保存し、ＲＡＭには論理／物理アドレス変換テーブルの一部をキャッシュとして保持することで、ＲＡＭ容量を削減しつつ、処理速度の低下を抑制する。また、キャッシュに保持されていないテーブル情報が不揮発性メモリのどこに保持されているかを管理し、テーブル情報がキャッシュに保持されているか否かを識別する情報を有することで、論理／物理アドレス変換テーブルのキャッシュ管理を実現する。
【００１６】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、ある所定の書き込み単位であるページ２２２０と前記書き込み単位よりも大きいデータ消去単位であるブロック２２２を持つ不揮発性メモリ２２と、データの読み出し及び書き込みが出来るＲＡＭ２３と、前記不揮発性メモリ２２および前記ＲＡＭ２３への読み出し及び書き込み処理を行うメモリコントローラ２１を有する記憶装置２であって、
前記不揮発性メモリ２２は、命令処理装置４が書き込みを行ったデータ２２１と、前記データ２２１の格納場所を管理する論理／物理アドレス変換テーブル２２０を前記ページ２２２０単位に分割した複数の分割変換テーブル２４０を有し、
前記ＲＡＭ２３は、前記分割変換テーブル２４０の少なくとも１つ以上を保存する論理／物理アドレス変換テーブルキャッシュ２３０と、前記分割変換テーブル２４０を管理する変換テーブル管理テーブル２３５と、前記論理／物理アドレス変換テーブルキャッシュ２３０の管理を行うキャッシュ管理テーブル２３６を有し、
前記変換テーブル管理テーブル２３５は、前記分割変換テーブルが前記論理／物理アドレス変換テーブルキャッシュ２３０に保存されていることを示すキャッシュ有無フラグ２３５２と、前記論理／物理アドレス変換テーブルキャッシュ２３０における前記分割変換テーブル２４０の保存先を示すキャッシュエントリ番号２３５５を有し、
前記不揮発性メモリ２２と前記ＲＡＭ２３の間における前記論理／物理アドレス変換テーブル２２０の情報の読み出し及び書き込みは、前記ページ２２２０単位で行うことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、論理／物理アドレス変換テーブルを不揮発性メモリ内に保存し、ＲＡＭには論理／物理アドレス変換テーブルの必要とする一部分のみを保持することで、ＲＡＭ容量を削減することができる。また、ＲＡＭに保持した論理／物理アドレス変換テーブルをキャッシュとして使用することで、不揮発性メモリに対する論理／物理アドレス変換テーブル情報の書き込み回数を削減させ、処理速度の低下を抑制することができる。
【００１８】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例を説明するためのハードウェア構成例を示す図。
【図２】不揮発性メモリの内部構成図。
【図３】本実施例における不揮発性メモリの使用状態を表した図。
【図４】ブロックとページの関係を纏めた図。
【図５ａ】ブロックヘッダページ２２２１のデータ構成例を示す図。
【図５ｂ】データページ２２２２のデータ構成例を示す図。
【図５ｃ】テーブルページ２２２３のデータ構成例を示す図。
【図６】論理／物理アドレス変換テーブルの構成を表した図。
【図７】スクラッチブロック管理テーブルの構成を表した図。
【図８】データブロック管理テーブルの構成を表した図。
【図９】消去済みブロックテーブルの構成を表した図。
【図１０】物理ブロック管理テーブルの構成を表した図。
【図１１】変換テーブル管理テーブルの構成を表した図。
【図１２】キャッシュ管理テーブルの構成を表した図。
【図１３】命令処理装置からデータ読み出し処理を受けた場合の処理フローチャート。
【図１４】分割変換テーブルの読み出し処理の処理フローチャート。
【図１５】分割変換テーブルの書き込み処理の処理フローチャート。
【図１６】書き込み可能なページの特定処理の処理フローチャート。
【図１７】各種管理テーブルの更新処理の処理フローチャート。
【図１８】命令処理装置からデータ書き込み処理を受けた場合の処理フローチャート。
【図１９】各種管理テーブルを更新する処理の処理フローチャート。
【図２０】ブロック消去処理の際の処理フローチャート。
【発明を実施するための形態】
【００２０】
以下、図面を用いて本発明の実施例を説明する。
【実施例】
【００２１】
図１は本実施例におけるハードウェア構成の例である。図１に示す計算機１は、記憶装置２、命令処理装置４、主記憶メモリ５、入出力制御装置６、ネットワーク制御装置７、表示装置８を持ち、各装置は相互にデータバス３によって接続されている。
【００２２】
これらのうち、記憶装置２は、命令処理装置４からの処理に従い、データの読み出し及び書き込みを行う。
【００２３】
命令処理装置４は、記憶装置２もしくは主記憶メモリ５に格納されている命令を処理し、記憶装置２および主記憶メモリ５に対するデータの読み出し及び書き込みや、入出力制御装置６、ネットワーク制御装置７、表示装置８に対する処理を行う。
【００２４】
主記憶メモリ５は、命令処理装置４からの処理に従い、データの読み出し及び書き込みを行う。
【００２５】
入出力制御装置６は、外部機器（図示せず）とデータバス３間でのデータの入出力を制御する装置である。この外部機器の例としては、キーボードやマウス、あるいは外付けの記憶装置２などが挙げられる。
【００２６】
ネットワーク制御装置７は、ネットワーク（図示せず）とデータバス３間でのデータの入出力を制御する装置である。
【００２７】
表示装置８は、命令処理装置４からの処理に従い、データの表示などを行う装置である。
【００２８】
記憶装置２は、Ｉ／Ｆ（インターフェース）制御部２０、メモリコントローラ２１、１つ以上の不揮発性メモリ２２、およびＲＡＭ２３から構成される。
【００２９】
Ｉ／Ｆ制御部２０は、命令処理装置４とメモリコントローラ２１間のデータの制御を行う。メモリコントローラ２１は、命令処理装置４からの命令に従い、不揮発性メモリ２２内のデータの読み出し及び書き込みを行い、それに付随してＲＡＭ２３内のデータ更新を行う。
【００３０】
不揮発性メモリ２２には、論理／物理アドレス変換テーブル２２０、およびデータ２２１を格納する。本実施例で記載の不揮発性メモリ２２とは、所定の書き込み単位（ページ）と書き込み単位より大きい消去単位（ブロック）を持ち、データを書き換える場合には、書き込みの前に消去動作を必要とする不揮発性メモリを指す。なお、不揮発性メモリ２２の内容については、図２、図３を用いて詳細に後述する。また、論理／物理アドレス変換テーブル２２０の一例が図６に示されている。
【００３１】
ＲＡＭ２３には、論理／物理アドレス変換テーブルキャッシュ２３０、スクラッチブロック管理テーブル２３１（図７）、データブロック管理テーブル２３２（図８）、消去済みブロック管理テーブル２３３（図９）、物理ブロック管理テーブル２３４（図１０）、変換テーブル管理テーブル２３５（図１１）、キャッシュ管理テーブル２３６（図１２）を格納する。
【００３２】
なお、ＲＡＭ２３内に保持する論理／物理アドレス変換テーブルキャッシュ２３０は、不揮発性メモリ２２に保存している論理／物理アドレス変換テーブル２２０の一部を保存するものである。
【００３３】
このＲＡＭ２３は、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）のような不揮発性メモリであっても、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）のような揮発性メモリであってもよい。ただし、不揮発性メモリを用いる場合には、データ書き換え時に消去動作を必要としない不揮発性メモリである必要がある。また、このＲＡＭ２３はメモリコントローラ２１の内部にあってもよい。
【００３４】
図２は、不揮発性メモリ２２の内部構成を示した図である。不揮発性メモリは１つ以上の消去単位から構成され、この消去単位をブロック２２２と呼ぶ。また、このブロック２２２は１つ以上の書き込み単位から構成され、これをページ２２２０と呼ぶ。本実施例では、不揮発性メモリ２２のブロック（２２２）数はＭブロック、１ブロック当たりのページ（２２２０）数はＮページとして扱う。なお、ページ２２２０の種類と構成が図５に示されており、後述する。
【００３５】
図３は、本実施例における不揮発性メモリ２２の使用状態を示した図である。本実施例では、ブロック２２２をスクラッチブロック群２２３、データブロック群２２４、消去済みブロック群２２５の３つのグループのいずれかに分類して使用する。従って、スクラッチブロック群２２３、データブロック群２２４、消去済みブロック群２２５の３つのグループの合計ブロック数は、Ｍ個である。
【００３６】
スクラッチブロック群２２３は、１つ以上のスクラッチブロック２２３０から構成される。スクラッチブロック２２３０は、ブロックヘッダページ２２２１、データページ２２２２、テーブルページ２２２３、空きページ２２２４から構成される。ただし、データページ２２２２もしくはテーブルページ２２２３のどちらかを有していないこともある。
【００３７】
データブロック群２２４は、１つ以上のデータブロック２２４０から構成される。データブロック２２４０は、ブロックヘッダページ２２２１、データページ２２２２、テーブルページ２２２３から構成される。ただし、スクラッチブロック２２３０と同様に、データページ２２２２もしくはテーブルページ２２２３のどちらかを有していないこともある。データブロック２２４０は、スクラッチブロック２２３０とは異なり、空きページ２２２４を有していない。
【００３８】
消去済みブロック群２２５は、１つ以上の消去済みブロック２２５０から構成される。消去済みブロック２２５０は、ブロックヘッダページ２２２１と空きページ２２２４から構成され、データページ２２２２およびテーブルページ２２２３は保有しない。
【００３９】
図４は、ブロックとページの関係を纏めた図である。横方向にスクラッチブロック２２３０、データブロック２２４０、消去済みブロック２２５０の各ブロックを記載し、縦方向にブロックヘッダページ２２２１、データページ２２２２、テーブルページ２２２３、空きページ２２２４の各ページを記載している。この図で、○は、当該ページを備えることを意味し、×は当該ページを備えないことを意味する。また、△は当該ページのいずれかを備えないことがあることを意味している。なお、ブロックヘッダページ２２２１、データページ２２２２、テーブルページ２２２３の構成については、図５ａ，図５ｂ、図５ｃに示されている。
【００４０】
不揮発性メモリ２２内のブロック２２２は、上記３グループのいずれかに所属し、データ書き込みやブロック消去の処理によって、その所属を動的に移行していく。つまり、例えば特許文献１に示すように、スクラッチブロックがデータブロックに移行し、消去済みブロックの一部を新たにスクラッチブロックに割り当て、データブロックを消去済みブロックに移行するといった具合に、所属の動的移行を行う。
【００４１】
また、図１における論理／物理アドレス変換テーブル２２０は、実際にはテーブルページ２２２３のようにページ単位に分割して保存される形となる。
【００４２】
図５は、ページ２２２０に格納するデータ構造を示した図である。図３で説明したように、ここには３種類のデータ構造がある。ブロックヘッダページ２２２１と、データページ２２２２と、テーブルページ２２２３である。
【００４３】
このうち、ブロックヘッダページ２２２１内には、図５ａに示すように、少なくともブロック消去回数２２２１０の情報を格納する。空き領域２２２１１は、情報を書き込まない領域であるが、この部分に不良ブロックを表すフラグやエラー発生回数の情報を格納してもよい。
【００４４】
データページ２２２２は、図５ｂに示すように、データページヘッダ情報２２２２０とデータ２２２２１を有する。データページヘッダ情報２２２２０は、ページ属性２２２２２、論理アドレス２２２２３、データ書き込み番号２２２２４を含む。
【００４５】
ページ属性２２２２２には、このページがデータページ２２２２であるのか、テーブルページ２２２３であるのかを判別する際に使用するフラグを格納する。論理アドレス２２２２３には、命令処理装置４が付与した論理アドレス情報を格納する。データ書き込み番号２２２２４は、論理アドレス番号２２２２３が同一であるデータページ２２２２が複数存在した場合に、データ２２２２１の新旧を判別するために使用する番号である。
【００４６】
本来ならば、データ２２２２１の新旧は後述する各種の管理テーブルによって管理されるため、データ書き込み番号２２２２４は必須ではない。しかし、データ書き込み番号２２２２４があると、何らかの原因によってＲＡＭ内のテーブル情報が破壊された場合でも復旧可能となるため、本実施例では記載している。
【００４７】
テーブルページ２２２３は、図５ｃに示すように、テーブルページヘッダ情報２２２３０と論理／物理アドレス変換テーブル値２２２３１を有する。テーブルページヘッダ情報２２２３０は、ページ属性２２２３２、テーブル管理番号２２２３３、テーブル書き込み番号２２２３４を含む。このうち、ページ属性２２２３２は、図５ｂのデータページ２２２２におけるページ属性２２２２２と同じ機能のものであり、ここでの説明を省略する。
【００４８】
テーブル管理番号２２２３３は、図１の変換テーブル管理テーブル２３５の管理単位であり、１ページ容量分の論理／物理アドレス変換テーブル、つまり１つのテーブルページ２２２３に対して１つの番号が与えられる。テーブルページ２２２３内にテーブル管理番号２２２３３があることで、後述するブロック消去処理の際に、どのテーブル管理番号２２２３３のテーブルページ２２２３をコピーしているのかがすぐに分かり、変換テーブル管理テーブル２３５の更新が容易となる。
【００４９】
なお、ブロック消去処理とは、消去済みブロックが不足した場合に、データブロックの一部を消去済みブロックに移行するための処理である。このとき、データブロック内のデータをスクラッチブロックにコピーするが、どのページをコピーしたのかが管理されている必要がある。
【００５０】
テーブル書き込み番号２２２３４は、テーブル管理番号２２２３３が同一であるテーブルページ２２２３が複数存在する場合に、論理／物理アドレス変換テーブル値２２２３１の新旧を判別するために使用する番号である。テーブル書き込み番号２２２３４もデータ書き込み番号２２２２４と同様に必須の情報ではないが、この情報があると変換テーブル管理テーブル２３５の情報が何らかの原因で破壊された場合でも復旧可能となるため、本実施例では記載している。
【００５１】
図６は、図１の論理／物理アドレス変換テーブル２２０の構成を示した図である。図１において、不揮発性メモリ２２内の論理／物理アドレス変換テーブル２２０、およびＲＡＭ２３内の論理／物理アドレス変換テーブルキャッシュ２３０は、命令処理装置４が指定するアドレス（論理アドレス２２０２）に対応する、データを格納しているアドレス（物理アドレス２２０３）を管理するテーブルである。
【００５２】
このため、図６の論理／物理アドレス変換テーブル２２０は、論理アドレス２２０２と物理アドレス２２０３を対にして記憶している。このうち、メモリ内データの格納場所を定義する物理アドレス２２０３は、物理ブロック番号２２０４と物理ページ番号２２０５の組み合わせによって表わされる。
【００５３】
また、論理アドレス２２０２と物理アドレス２２０３の組み合わせごとに、テーブル管理番号２２０１と論理グループ番号２２００が付与されている。テーブル管理番号２２０１は、テーブルページ２２２３におけるテーブル管理番号２２２３３（図５ｃ参照）と同様に、変換テーブル管理テーブル２３５（図１）における管理番号を表している。このテーブル管理番号２２０１単位で分割された論理／物理アドレス変換テーブルを以降は分割変換テーブル２４０と呼称する。図６の例では、論理／物理アドレス変換テーブル２２０内の太い黒線で囲まれた部分が１つの分割変換テーブル２４０となる。また、論理アドレス空間を一定割合で分割したものを論理グループ番号２２００として示している。
【００５４】
図６の論理／物理アドレス変換テーブル２２０では、論理グループ番号２２００やテーブル管理番号２２０１が昇順に並んでいるが、実際の論理／物理アドレス変換テーブル２２０は、テーブルページ２２２３ごとに分割されているため、このようなきれいな並びになるとは限らない。また、論理／物理アドレス変換テーブルキャッシュ２３０においても、論理／物理アドレス変換テーブル２２０と論理／物理アドレス変換テーブルキャッシュ２３０の間でテーブル情報の入れ替えが発生するため、図６のように論理グループ番号２２００やテーブル管理番号２２０１が昇順できれいに並ぶとは限らない。
【００５５】
図７は、図１のスクラッチブロック管理テーブル２３１の構成を表した図である。スクラッチブロック管理テーブル２３１は、論理グループ番号２３１０ごとに１つ以上割り当てられるスクラッチブロック２２３０（図３）を管理するためのテーブルである。それぞれのスクラッチブロック２２３０は、スクラッチブロック番号２３１１によって管理され、スクラッチブロックの利用状態を表すフラグ２３１２と、対応する物理ブロック番号２３１３が付与される。利用状態を表すフラグ２３１２は、このスクラッチブロックに対して書き込み可能である場合は１、空きページが無く書き込み不可能である場合は０を示す。
【００５６】
図８は、図１のデータブロック管理テーブル２３２の構成を表した図である。データブロック管理テーブル２３２は、論理グループ番号２３２０に対して１つ以上割り当てられるデータブロック２２４０（図３）の管理を行うテーブルである。それぞれのデータブロック２２４０は、データブロック番号２３２１によって管理され、データブロックの利用状態を表すフラグ２３２２と対応する物理ブロック番号２３２３が付与される。利用状態を表すフラグ２３２２は、このデータブロックからデータが読み出し可能である場合は１、すでにこのデータブロックが消去されている場合は０を示す。
【００５７】
図９は、図１の消去済みブロック管理テーブル２３３の構成を表した図である。消去済みブロック管理テーブル２３３は、データ消去が行われた消去済みブロック２２５０の管理を行うテーブルである。消去済みブロック２２５０（図３）は、消去済みブロック管理番号２３３０によって管理され、ブロックの利用状態を表すフラグ２３３１と対応する物理ブロック番号２３３２が付与される。利用状態を表すフラグ２３３１は、このブロックが消去済みブロック群に所属している場合は１、新しいスクラッチブロック２２３０として割り当てられるなどの処理によって、所属が消去済みブロック群から変更された場合には０を示す。
【００５８】
図１０は、図１の物理ブロック管理テーブル２３４の構成を表した図である。物理ブロック管理テーブル２３４は、各ブロック２２２０の利用状況を管理している。各ブロックは物理ブロック番号２３４０によって管理され、ブロックごとに消去回数２３４１、有効ページ数２３４２、有効ページフラグ２３４３、書き込み先ページ番号２３４４の情報を保持している。
【００５９】
消去回数２３４１は、このブロックが消去された回数を示している。
【００６０】
有効ページ数２３４２は、ブロック内の有効なデータを格納しているページの数を示している。また、有効ページフラグ２３４３は、有効なデータを格納しているページの位置を示しており、有効データを格納しているページは１、無効なデータを格納しているページは０で表わされる。有効ページフラグ２３４３の最も右が０ページ目を表しており、最も左がＮ−１ページ目を表している。
【００６１】
書き込み先ページ番号２３４４は、次に書き込み可能なページ番号を表している。このブロックがデータブロック群２２４に所属しており、書き込み可能なページが無い場合には、書き込み先ページ番号はＮとなる。
【００６２】
図１１は、図１の変換テーブル管理テーブル２３５の構成を表した図である。変換テーブル管理テーブル２３５は、図６の分割変換テーブル２４０をテーブル管理番号２３５０ごとに管理している。各テーブル管理番号２３５０に対して、保存フラグ２３５１、キャッシュ有無フラグ２３５２、更新フラグ２３５３、追い出しカウント２３５４、キャッシュエントリ番号２３５５、物理アドレス２３５６の情報を保持している。
【００６３】
このうち、保存フラグ２３５１は、このテーブル管理番号２３５０の分割変換テーブル２４０が不揮発性メモリ２２内に保存されているか否かを表すフラグである。すでに不揮発性メモリ２２に保存されている場合は１、まだ保存されていない場合は０となる。
【００６４】
キャッシュ有無フラグ２３５２は、このテーブル管理番号２３５０の分割変換テーブル２４０が、論理／物理アドレス変換テーブルキャッシュ２３０に保持されているか否かを表すものであり、保持されている場合は１、保存されていない場合には０を示す。
【００６５】
更新フラグ２３５３は、この分割変換テーブル２４０が論理／物理アドレス変換テーブルキャッシュ２３０に保持されている場合に、テーブル情報が更新されたことを表すフラグである。命令処理装置４からの要求などによってテーブル情報が更新された場合は１、更新されていない場合は０を示す。更新フラグ２３５３を用いて更新の有無を判定することで、更新されていない分割変換テーブル２４０を不揮発性メモリ２２に対して書き込むことを無くし、処理速度の低下を抑える。
【００６６】
追い出しカウント２３５４は、論理／物理アドレス変換テーブルキャッシュ２３０の容量が満杯になった場合に、どの分割変換テーブル２４０を不揮発性メモリ２２に書き込むか決定するためのものである。本実施例では、論理／物理アドレス変換テーブルキャッシュ２３０からのテーブル追い出しにＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式を用いているが、他の方式を使用してもよい。他の方式を使用する場合には、追い出しカウント２３５４は無くてもよい。
【００６７】
キャッシュエントリ番号２３５５は、分割変換テーブル２４０の論理／物理アドレス変換テーブルキャッシュ２３０上での保存先を示す。
【００６８】
物理アドレス２３５６は、分割変換テーブル２４０の不揮発性メモリ２２上での保存先を示す。物理アドレス２３５６は、物理ブロック番号２３５７と物理ページ番号２３５８の組み合わせからなる。
【００６９】
通常のデータキャッシュの場合では、キャッシュ内に保持しているエントリ分の情報しか保持しない。しかし、本実施例においても同様の管理方法とすると、不揮発性メモリ２２から論理／物理アドレス変換テーブルキャッシュ２３０へ分割管理テーブル２４０の情報を読み出す処理が行えない。そのため、論理／物理アドレス変換テーブルキャッシュ２３０に保持されているかどうかに関わらず、全ての分割変換テーブル２４０の情報を変換テーブル管理テーブル２３５に保持している。また、どのテーブル管理番号２３５０のテーブル情報が論理／物理アドレス変換テーブルキャッシュ２３０に保持されているかを識別するために、キャッシュ有無フラグ２３５２の情報を変換テーブル管理テーブル２３５内に格納している。
【００７０】
図１２は、図１のキャッシュ管理テーブル２３６の構成を表した図である。キャッシュ管理テーブル２３６は、論理／物理アドレス変換テーブルキャッシュ２３０のエントリをキャッシュエントリ番号２３６０ごとに管理している。各キャッシュエントリ番号２３６０に対して、有効フラグ２３６１を保持している。
【００７１】
有効フラグ２３６１は、対応するキャッシュエントリ番号２３６０に分割変換テーブル２４０が保存されているか否かを表すものである。分割変換テーブル２４０が保存されている場合は１、保存されていない場合には０を示す。
【００７２】
図１の不揮発性メモリ２２、あるいはＲＡＭ２３内の各テーブルなどは以上のように構成されている。これらテーブル構成の中で、本発明は特に図６の論理／物理アドレス変換テーブル、図１１の変換テーブル管理テーブル、図１２のキャッシュ管理テーブルに工夫がされている。
【００７３】
係るテーブルなどを利用して、図１３の処理フローチャートによりデータ読み出し処理を実行する。また、図１８の処理フローチャートによりデータ書き込み処理を実行する。さらに、図２０の処理フローチャートによりブロック消去処理を実行する。なお、これらの処理は、記憶装置２内のメモリコントローラ２１により実行される。
【００７４】
［データ読み出し処理］
図１３は、データ読み出し時の処理フローチャートを表した図である。また、図１３の各部ステップの詳細説明のために、図１４から図１７が使用される。
【００７５】
図１において、データ読み出し処理は、命令処理装置４が読み出し対象の論理アドレスを指定することから開始される。
【００７６】
図１３のフローでは、ステップＳ５００において、記憶装置２内のメモリコントローラ２１が、データバス３およびＩ／Ｆ制御部２０を介して、命令処理装置４から読み出し対象の論理アドレスを受信する。
【００７７】
次に、メモリコントローラ２１は、ステップＳ５１において上記論理アドレスに対応する図６の分割変換テーブル２４０が、論理／物理アドレス変換テーブルキャッシュ２３０に存在しているか否かを確認する。存在しない場合には、不揮発性メモリ２２から分割変換テーブル２４０を読み出す処理を行う。ステップＳ５１における読み出し処理の詳細については、図１４を用いて後述する。
【００７８】
ステップＳ５１の処理結果として、指定された論理アドレスに対応する分割変換テーブル２４０が、論理／物理アドレス変換テーブルキャッシュ２３０上に入手できた。この場合に、次のステップＳ５０１では、論理／物理アドレス変換テーブルキャッシュ２３０上の分割変換テーブル２４０を用いて、上記論理アドレスに対応する物理アドレスを特定する。分割変換テーブル２４０は、図６の構成を備えているので、物理アドレス２２０３として、物理ブロック番号２２０４と、物理ページ番号２２０５の組み合わせが得られている。
【００７９】
次に、ステップＳ５０２では、図１１の変換テーブル管理テーブル２３５において、ステップＳ５０１で使用した分割管理テーブル２４０の追い出しカウント２３５４を０に変更する。また、上記分割管理テーブル以外の分割管理テーブル２４０において、キャッシュ有無フラグ２３５２が１であるテーブルの追い出しカウント２３５４を１だけ加算する。ステップＳ５０２での一連の処理により、論理／物理アドレス変換テーブルキャッシュ２３０の容量が満杯になった場合に、古い（追い出しカウント２３５４の数が多い）分割変換テーブル２４０から順に、不揮発性メモリ２２に戻されて書き込まれる。これにより、論理／物理アドレス変換テーブルキャッシュ２３０の容量が一定に保たれる。
【００８０】
その後、ステップＳ５０３では、ステップＳ５０１で特定した物理アドレスを用いて、不揮発性メモリ２２からデータ２２１を読み出す。
【００８１】
次に、ステップＳ５２では、図１の論理／物理アドレス変換テーブルキャッシュ２３０の容量が満杯である場合には、不揮発性メモリ２２に対して、分割変換テーブル２４０を書き込む処理を行う。書き込み処理の詳細については、図１５を用いて後述する。
【００８２】
最後に、ステップＳ５０４では、命令処理装置４に対して、読み出し終了報告を行う。
【００８３】
以上が読み出し時の概略処理であるが、ステップＳ５１およびステップＳ５２は処理をさらに細分化できるので、細分化した処理について説明する。図１４は、ステップＳ５１の詳細な処理フローチャートを表した図である。この処理は、論理アドレスに対応する分割変換テーブル２４０を、読み出すための処理である。
【００８４】
ステップＳ５１では、まずステップＳ５１０において命令処理装置４から受信した論理アドレスに対応する分割変換テーブル２４０が、論理／物理アドレス変換テーブルキャッシュ２３０に保持されているか、図１１の変換テーブル管理テーブル２３５内のキャッシュ有無フラグ２３５２を用いて確認する。キャッシュ有無フラグ２３５２が０である場合には、論理／物理アドレス変換テーブルキャッシュ２３０に保持されていないので、ステップＳ５１１の処理に入る。キャッシュ有無フラグ２３５２が１である場合には、論理／物理アドレス変換テーブルキャッシュ２３０に保持されているので、ステップＳ５１の処理は終了となる。
【００８５】
ステップＳ５１１では、引き続き図１１の変換テーブル管理テーブル２３５の保存フラグ２３５１が、１である（分割変換テーブル２４０が不揮発性メモリ２２に記憶されている）ことを確認する。保存フラグ２３５１が１である場合には、ステップＳ５１２の処理、０である場合には、ステップＳ５１４の処理を実行する。
【００８６】
保存フラグ２３５１が１である場合には、ステップＳ５１２において、この分割変換テーブル２４０の格納先である物理アドレス２３５６を図１１で確認する。
【００８７】
ステップＳ５１３では、不揮発性メモリ２２から対応する分割変換テーブル２４０を読み出す。そして、図１２のキャッシュ管理テーブル２３６の有効フラグ２３６１を確認し、論理／物理アドレス変換テーブルキャッシュ２３０の空いているエントリに、読み出した分割変換テーブル２４０の情報を格納する。
【００８８】
なお、ステップＳ５１１において保存フラグ２３５１が０である場合には、ステップＳ５１４において図６のキャッシュ管理テーブル２３６の有効フラグ２３６１を確認し、論理／物理アドレス変換テーブルキャッシュ２３０の空いているエントリの選択を行う。
【００８９】
その後、ステップＳ５１５において、図１１の変換テーブル管理テーブル２３５のキャッシュ有無フラグ２３５２を１に変更し、更新フラグ２３５３と追い出しフラグ２３５４を０に初期化し、キャッシュエントリ番号２３５５をステップＳ５１３もしくはステップＳ５１４で選択したエントリ番号に更新する。また、図１２のキャッシュ管理テーブル２３６において、上記キャッシュエントリ番号２３５５に対応する有効フラグ２３６１を１に変更する。以上がステップＳ５１の処理の詳細である。
【００９０】
図１５はステップＳ５２の詳細な処理フローチャートを表した図である。ステップＳ５２は、この全体処理により、分割変換テーブル２４０を不揮発性メモリ２２へ書き込む処理を行う。
【００９１】
ステップＳ５２の最初のステップＳ５２０では、まず論理／物理アドレス変換テーブルキャッシュ２３０の容量が満杯であるかどうかを確認する。満杯である場合（ＹＥＳ）には、ステップＳ５２２側に移り分割変換テーブル２４０を不揮発性メモリ２２へと書き込む処理を行う。満杯でない場合（ＮＯ）には、ステップＳ５２の処理は終了となる。
【００９２】
不揮発性メモリ２２への分割変換テーブル２４０の書き込みを行う場合は、まずステップＳ５２１において、図１１の変換テーブル管理テーブル２３５内のキャッシュ有無フラグ２３５２と追い出しカウント２３５４を参照する。そして、キャッシュ有無フラグ２３５２が１（論理／物理アドレス変換テーブルキャッシュ２３０に保存されている）であり、かつこの中で追い出しカウント２３５４が最も大きい分割変換テーブル２４０を書き込み対象として選択する。
【００９３】
その後、ステップＳ５２２において、選択した分割変換テーブル２４０の更新フラグ２３５３（図１１）を確認し、更新フラグ２３５３が１（更新あり）である場合には、ステップＳ５３に移り書き込み先ページの特定を行う。更新フラグ２３５３が０（更新なし）である場合には、ステップＳ５２４に移る。なお、ステップＳ５３の詳細は、図１６で後述する。
【００９４】
ステップＳ５２３では、ステップＳ５３で特定した物理アドレスに対して選択した分割変換テーブル２４０を書き込む。
【００９５】
ステップＳ５４では、書き込み終了後、図７のスクラッチブロック管理テーブル２３１、図８のデータブロック管理テーブル２３２、図１０の物理ブロック管理テーブル２３４の更新処理を行う。なお、ステップＳ５４の詳細は、図１７で後述する。
【００９６】
最後に、ステップＳ５２４では、書き込み以前の変換テーブル管理テーブル２３５（図１１）の物理アドレス２３５６から、図１０の物理ブロック管理テーブル２３４の対応する物理ブロック番号２３４０を選択し、有効ページ数２３４２を１つ減算し、有効ページフラグ２３４３の該当ページ部分を０に更新する。
【００９７】
また、変換テーブル管理テーブル２３５（図１１）において、書き込みを行ったテーブル管理番号２３５０と対応する保存フラグ２３５１を１（不揮発性メモリ２２に保存）に変更し、キャッシュ有無フラグ２３５２を０（論理／物理アドレス変換テーブルキャッシュ２３０に保存せず）に変更する。また、図１１の物理アドレス２３５６の部分を不揮発性メモリ２２の書き込み先の物理アドレスに更新する。
【００９８】
そして、書き込みを行った分割管理テーブル２４０のキャッシュエントリ番号２３５５（図１１）を参照し、図１２のキャッシュ管理テーブル２３６において、対応するキャッシュエントリ番号２３６０の有効フラグ２３６１を０（分割管理テーブル２４０保存せず）に変更する。
【００９９】
なお、ステップＳ５２２において、更新フラグ２３５３が０（更新なし）である場合には、ステップＳ５３、ステップＳ５２３、ステップＳ５４の処理は行わない。また、ステップＳ５２４でも、物理ブロック管理テーブル２３４（図１０）の更新、変換テーブル管理テーブル２３５（図１１）における物理アドレス２３５６の更新は行わない。以上がステップＳ５２の処理の詳細である。
【０１００】
図１５のステップＳ５２内の主要な処理であるステップＳ５３およびステップＳ５４は、さらに処理を細分化することができる。
【０１０１】
図１６は、ステップＳ５３の詳細な処理フローチャートを表した図である。ステップＳ５３の最初のステップＳ５３０では、まず書き込み対象の分割変換テーブル２４０（図６）が所属する論理グループ番号２２００に対して、スクラッチブロック２２３０（図７）が割り当てられているか確認する。この確認は、スクラッチブロック管理テーブル２３１内で、論理グループ番号２２００と一致する論理グループ番号２３１０のフラグ２３１２の値を判定することで行う。フラグ２３１２が１(書き込み可能)であればスクラッチブロック２２３０が既に割り当てられていると判定し、０(書き込み不可)であれば割り当てられていないと判定する。既に割り当てられている場合には、ステップＳ５３３へと移行する。
【０１０２】
割り当てられていない場合には、ステップＳ５３１において、図３の消去済みブロック２２５０の中からブロックを１つ選択して、図７のスクラッチブロック管理テーブル２３１の物理ブロック番号２３１３部分に登録し、フラグ２３１２を１（書き込み可能）に変更する。
【０１０３】
その後、ステップＳ５３２において、割り当てた図３の消去済みブロック２２５０に対して、図９の消去済みブロック管理テーブル２３３内のフラグ２３３１を０（消去済みブロック群に所属せず）に変更する。
【０１０４】
次に、ステップＳ５３３では、図７のスクラッチブロック管理テーブル２３１を確認し、スクラッチブロック番号２３１１に対応する物理ブロック番号２３１３を確認する。
【０１０５】
そして、ステップＳ５３４では、ステップＳ５３３で確認した物理ブロック番号２３１３を、図１０の物理ブロック管理テーブル２３４の物理ブロック番号２３４０と参照し、該当ブロックの書き込み先ページ番号２３４４を得る。ステップＳ５３は以上で完了となる。
【０１０６】
また図１７は、ステップＳ５４の詳細な処理フローチャートを表した図である。ステップＳ５４の最初のステップＳ５４０では、まず書き込みによって図３のスクラッチブロック２２３０の空きページが無くなったかどうかを確認する。空きページがない場合には、ステップＳ５４１の処理に入り、空きページがある場合にはステップＳ５４２に移る。
【０１０７】
空きページが無くなった場合には、ステップＳ５４１において、以下の一連の処理を実行する。まず、図７のスクラッチブロック管理テーブル２３１において、このスクラッチブロックのフラグ２３１２を０（書き込み不可）に変更する。その後、図８のデータブロック管理テーブル２３２において、上記スクラッチブロックが所属していた論理グループ番号２３１０と対応する論理グループ番号２３２０の中で、フラグ２３２２が０（読み出し不可）であるデータブロック番号２３２１を選択する。そして、選択したデータブロック番号２３２１のフラグ２３２２を１（読み出し可能）に変更し、さらに物理ブロック番号２３２３部分に上記スクラッチブロックの物理ブロック番号２３１３を登録する。
【０１０８】
スクラッチブロックに空きページが存在する場合には、ステップＳ５４１の処理は行わない。ステップＳ５４１もしくはステップＳ５４０の後、ステップＳ５４２においては、図１０の物理ブロック管理テーブル２３４の有効ページ数２３４２および書き込み先ページ番号２３４４を１つ加算し、有効ページフラグ２３４３を更新する。以上で、ステップＳ５４の処理は終了となる。
【０１０９】
［データ書き込み処理］
図１８は、データ書き込み時の処理フローチャートを表した図である。一部、データ読み出し時と同一のステップＳ番号を持つ処理が存在するが、これらの処理については処理内容も同一であるため、説明を省略する。
【０１１０】
データ書き込み処理は、ステップＳ６００において、メモリコントローラ２１がデータバス３およびＩ／Ｆ制御部２０を介して、命令処理装置４から書き込みデータと論理アドレスを受信するところから開始される。
【０１１１】
次に、メモリコントローラ２１は、ステップＳ５３においてデータを書き込む物理アドレスの特定を行う。この処理は図１６で詳細に説明したとおりなので、説明は省略する。
【０１１２】
その後、ステップＳ６０１において、ステップＳ５３で特定した物理アドレスに対して、データを書き込む。
【０１１３】
ステップＳ６１では、書き込み終了後、各種管理テーブルの更新を行う。この処理は図１９を用いて後述する。
【０１１４】
最後に、ステップＳ６０２において、命令処理装置４に対して、書き込み終了報告を行う。
【０１１５】
以上が書き込み時の処理であるが、ステップＳ６１は処理をさらに細分化できるので、細分化した処理について説明する。図１９はステップＳ６１の詳細な処理フローチャートを表した図である。
【０１１６】
ステップＳ６１では、まずステップＳ５４において、データ書き込みに対して、スクラッチブロック管理テーブル２３１、データブロック管理テーブル２３２、物理ブロック管理テーブル２３４の更新処理を行う。この処理は図１７で詳細に説明したとおりなので、ここでの説明は省略する。
【０１１７】
次に、ステップＳ５１において、分割変換テーブル２４０の読み出しを行う。この処理は図１４で詳細に説明したとおりなので、ここでの説明は省略する。
【０１１８】
ステップＳ６１０では、図３の論理／物理アドレス変換テーブルキャッシュ２３０上の分割変換テーブル２４０から、論理アドレスに対応する書き込み前の物理アドレスを特定し、この書き込み前の物理アドレスを用いて物理ロジック管理テーブル２３４（図１０）の有効ページ数２３４２の減算、及び有効ページフラグ２３４３の無効化を行う。また、分割変換テーブル２４０の物理アドレス２２０３部分を図１８のステップＳ５３で特定した物理アドレスに書き換える。
【０１１９】
その後、ステップＳ６１１で、図１１の変換テーブル管理テーブル２３５において、ステップＳ６１０で更新した分割変換テーブル２４０のテーブル管理番号２３５０に対応する追い出しカウント２３５４を０に変更する。また、上記以外でキャッシュ有無フラグ２３５２が１であるテーブル管理番号２３５０の追い出しフラグ２３５４を１だけ加算する。
【０１２０】
その後、ステップＳ５２において、分割変換テーブル２４０の書き込みを行う。この処理は図１５で詳細に説明したとおりなので、ここでの説明は省略する。
【０１２１】
以上がステップＳ６１の処理の詳細である。
【０１２２】
［ブロック消去処理］
図２０は、ブロック消去時の処理フローチャートを表した図である。図１のメモリコントローラ２１は、ステップＳ７００において、図３の消去済みブロック２２５０の数が一定数以下になった場合に、ブロック消去処理を開始する。
【０１２３】
まず、ステップＳ７０１では、メモリコントローラ２１は、図８のデータブロック管理テーブル２３２を参照し、登録されている物理ブロック番号２３２３を取得する。取得した物理ブロック番号２３２３と対応する図１０の物理ブロック管理テーブル２３４内の物理ブロック番号２３４０の有効ページ数２３４２を参照する。そして、データブロック管理テーブル２３２に登録されているブロックの中で、最も有効データページ数の少ないブロックを消去対象として選択する。
【０１２４】
次に、ステップＳ７０２では、消去対象として選択したブロックの有効ページ数２３４２が０であるか確認する。
【０１２５】
有効ページ数２３４２が０でない場合は、ステップＳ７０３において、物理ブロック管理テーブル２３４の有効ページフラグ２３４３を参照し、有効ページのデータをスクラッチブロック２２３０へコピーする。
【０１２６】
このコピー作業を、選択したブロックの有効ページ数２３４２が０になるまで繰り返し、有効ページ数２３４２が０になった場合は、ステップＳ７０４に移って、該当ブロックを消去する。
【０１２７】
最後に、ステップＳ７０５では、各種テーブルについての一連の更新処理を実行する。まず、図８のデータブロック管理テーブル２３２の消去したブロック番号と一致する物理ブロック番号２３２３のフラグ２３２２を０（読み出し不可）に変更し、データブロック管理テーブル２３２からこのブロックの登録を抹消する。そして、消去したブロック番号を図９の消去済みブロック管理テーブル２３３のフラグ２３３１が０（消去済みブロック群に所属せず）である消去済みブロック番号２３３０のエントリに登録し、フラグ２３３１を１（消去済みブロック群に所属）に変更する。また図１０の物理ブロック管理テーブル２３４において、消去したブロック番号に対応する物理ブロック番号２３４０の消去回数２３４１を１つ加算する。
【０１２８】
図２０の上記消去処理を、消去済みブロック２２５０の数が一定数以上となるまで繰り返し行う。以上がブロック消去時の処理である。
【０１２９】
なお、本発明は上記の実施例に限定されるものではなく、さまざまな変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【０１３０】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によるハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによるソフトウェアで実現してもよい。
【０１３１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には、殆ど全ての構成が相互に接続されていると考えて良い。
【符号の説明】
【０１３２】
１：計算機
２：記憶装置
３：データバス
４：命令処理装置
５：主記憶メモリ
６：入出力制御装置
７：ネットワーク制御装置
８：表示装置
２０：Ｉ／Ｆ制御部
２１：メモリコントローラ
２２：不揮発性メモリ
２３：ＲＡＭ
２２０：論理／物理アドレス変換テーブル
２２１：データ
２３０：論理／物理アドレス変換テーブルキャッシュ
２３１：スクラッチブロック管理テーブル
２３２：データブロック管理テーブル
２３３：消去済みブロック管理テーブル
２３４：物理ブロック管理テーブル
２３５：変換テーブル管理テーブル
２３６：キャッシュ管理テーブル
２２２：ブロック
２２２０：ページ
２２３０：スクラッチブロック
２２４０：データブロック
２２５０：消去済みブロック
２２２１：ブロックヘッダページ
２２２２：データページ
２２２３：テーブルページ
２２２４：空きページ
２２２１０：ブロック消去回数
２２２１１：空き領域
２２２２１：データ
２２２２２：ページ属性
２２２２３：論理アドレス
２２２２４：データ書き込み番号
２２２３１：論理／物理アドレス変換テーブル値
２２２３２：ページ属性
２２２３３：テーブル管理番号
２２２３４：テーブル書き込み番号
２２００：論理グループ番号
２２０１：テーブル管理番号
２２０２：論理アドレス
２２０３：物理アドレス
２４０：分割変換テーブル
２３１０：論理グループ番号
２３１１：スクラッチブロック番号
２３１２：フラグ
２３１３：物理ブロック番号
２３２０：論理グループ番号
２３２１：データブロック番号
２３２２：フラグ
２３２３：物理ブロック番号
２３３０：消去済みブロック番号
２３３１：フラグ
２３３２：物理ブロック番号
２３４０：物理ブロック番号
２３４１：消去回数
２３４２：有効ページ数
２３４３：有効ページフラグ
２３４４：書き込み先ページ番号
２３５０：テーブル管理番号
２３５１：保存フラグ
２３５２：キャッシュ有無フラグ
２３５３：更新フラグ
２３５４：追い出しカウント
２３５５：キャッシュエントリ番号
２３５６：物理アドレス
２３６０：キャッシュエントリ番号
２３６１：有効フラグ
【図１】
0005295286.tif 000002
【図２】
0005295286.tif 000003
【図３】
0005295286.tif 000004
【図４】
0005295286.tif 000005
【図５ａ】
0005295286.tif 000006
【図５ｂ】
0005295286.tif 000007
【図５ｃ】
0005295286.tif 000008
【図６】
0005295286.tif 000009
【図７】
0005295286.tif 000010
【図８】
0005295286.tif 000011
【図９】
0005295286.tif 000012
【図１０】
0005295286.tif 000013
【図１１】
0005295286.tif 000014
【図１２】
0005295286.tif 000015
【図１３】
0005295286.tif 000016
【図１４】
0005295286.tif 000017
【図１５】
0005295286.tif 000018
【図１６】
0005295286.tif 000019
【図１７】
0005295286.tif 000020
【図１８】
0005295286.tif 000021
【図１９】
0005295286.tif 000022
【図２０】
0005295286.tif 000023