(57)【特許請求の範囲】
【請求項１】
所定の書き込み単位と前記所定の書き込み単位よりも大きいブロック消去単位を持つ不揮発性半導体メモリと、
データの読み出しおよび書き込みができるメモリと、
外部システムからの命令によって前記不揮発性半導体メモリへの読み出しおよび書き込み処理を行うメモリコントローラと、
を有する記憶装置であって、
前記不揮発性半導体メモリの記憶領域は、
１つ以上の物理ブロックからなるスクラッチブロックと、
１つ以上の物理ブロックからなるデータブロックと、
１つ以上の物理ブロックからなる消去済みブロックと、から構成され、
前記メモリは、
前記スクラッチブロックを管理するためのスクラッチブロック管理テーブルと、
前記データブロックを管理するためのデータブロック管理テーブルと、
前記消去済みブロックを管理するための消去済みブロック管理テーブルと、
物理ブロック管理テーブルと、
を有し、
前記データブロック管理テーブルは、
前記物理ブロックを特定する物理ブロック番号に関連付けて、当該物理ブロックが前記データブロックとして有効であるか否かを示すフラグを記憶しており、
前記物理ブロック管理テーブルは、
前記物理ブロックに関連付けて、有効なデータのページ数を記憶しており、
前記記憶装置は、
前記外部システムからのデータ書き込みを前記スクラッチブロックに対して行い、
前記スクラッチブロック内の空きページが所定の数よりも少なくなった場合あるいは無くなった場合には、そのスクラッチブロックを前記データブロックの１つとして扱い、
新しいスクラッチブロックとして前記消去済みブロックのうちいずれか１つを割り当て、
前記消去済みブロックが不足した場合には、
前記データブロック管理テーブルを参照し、前記データブロックとして登録されている物理ブロックの前記物理ブロック番号を取得し、
前記物理ブロック管理テーブルを参照し、前記取得した物理ブロック番号に対応する前記ページ数を取得し、
前記データブロックの中から、前記取得したページ数が少ない物理ブロックを選択して有効なデータを前記スクラッチブロックにコピーした後、消去することを特徴とする記憶装置。
【請求項２】
前記記憶装置は、
前記データブロックと前記スクラッチブロックを一定量に分割した論理空間ごとに管理することを特徴とする請求の範囲第１項に記載の記憶装置。
【請求項３】
前記記憶装置は、
前記書き込み単位ごとに論理アドレス空間を分割することで一意に定められる論理アドレスと前記不揮発性半導体メモリの物理アドレスを対応させるテーブルを前記メモリ内に持ち、
前記メモリコントローラが前記外部システムからのデータ書き込み命令に応じて前記テーブルの書き換えを行うことを特徴とする請求の範囲第１項に記載の記憶装置。
【請求項４】
外部システムからの命令によって不揮発性半導体メモリへの読み出しおよび書き込み処理、ならびにメモリへの読み出しおよび書き込み処理を行うメモリコントローラであって、
前記メモリコントローラは、
前記不揮発性半導体メモリの記憶領域を、１つ以上の物理ブロックからなるスクラッチブロックと、１つ以上の物理ブロックからなるデータブロックと、１つ以上の物理ブロックからなる消去済みブロックと、から構成されるように扱い、
前記データブロックを管理するためのデータブロック管理テーブルと、物理ブロック管理テーブルと、を前記メモリ内に有し、
前記データブロック管理テーブルは、
前記物理ブロックを特定する物理ブロック番号に関連付けて、当該物理ブロックが前記データブロックとして有効であるか否かを示すフラグを記憶しており、
前記物理ブロック管理テーブルは、
前記物理ブロックに関連付けて、有効なデータのページ数を記憶しており、
前記メモリコントローラは、
前記外部システムからのデータ書き込みを前記スクラッチブロックに対して行い、
前記スクラッチブロック内の空きページが所定の数よりも少なくなった場合あるいは無くなった場合には、そのスクラッチブロックを前記データブロックの１つとして扱い、
新しいスクラッチブロックとして前記消去済みブロックのうちいずれか１つを割り当て、
前記消去済みブロックが不足した場合には、
前記データブロック管理テーブルを参照し、前記データブロックとして登録されている物理ブロックの前記物理ブロック番号を取得し、
前記物理ブロック管理テーブルを参照し、前記取得した物理ブロック番号に対応する前記ページ数を取得し、
前記データブロックの中から、前記取得したページ数が少ない物理ブロックを選択して、有効なデータを前記スクラッチブロックにコピーした後、消去することを特徴とするメモリコントローラ。
【請求項５】
前記データブロックと前記スクラッチブロックを一定量に分割した論理空間ごとに管理することを特徴とする請求の範囲第４項に記載のメモリコントローラ。
【請求項６】
前記書き込み単位ごとに論理アドレス空間を分割することで一意に定められる論理アドレスと前記不揮発性半導体メモリの物理アドレスを対応させるテーブルを前記メモリ内に持ち、
前記外部システムからのデータ書き込み命令に応じて前記テーブルの書き換えを行うことを特徴とする請求の範囲第４項に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを用いた記憶装置およびその記憶装置内の不揮発性半導体メモリを制御するメモリコントローラに関するものである。
【背景技術】
【０００２】
情報機器の補助記憶装置として、一般には磁気ディスク記憶装置が用いられている。この磁気ディスク記憶装置では、データの読み出しおよび書き込みはセクタと呼ばれる記憶単位ごとに行われている。【０００３】
近年、上記のような磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリＥＥＰＲＯＭ（Electrically Erasable Programmable Read only Memory）の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。【０００４】
フラッシュメモリは磁気ディスクと比べて読み出しおよび書き込み速度に優れるが、使用上の制限として４点挙げられる。第一に、書き込み単位（一般的にページと呼ばれる）と消去単位（一般にブロックと呼ばれる）が決まっており、消去単位は書き込み単位よりも大きいことである。第二に、データを上書きする際には一度データを消去し、再度書き込みを行う必要があることである。第三に、複数のページで構成されるひとつのブロックにデータを書き込む場合、連続したページ番号順に書き込む必要があることである。第四に、各ブロックには消去回数に制限があることである。【０００５】
上記フラッシュメモリの特性を考慮したメモリ制御方法として、物理ブロックを構成する複数のページを、データを保持するデータページと追記可能な交換ページに分ける方法がある。この方法では、新しい書き込みデータは交換ページ部分に書き込み、交換ページが満杯になった場合は該当ブロック内の有効なデータのみ空きブロックにコピーし、該当ブロックを消去するという処理を行っている〔特許文献１〕。類似の方法として、前記交換ページの代わりに、新たにひとつまたは複数のブロックを設定する方法が挙げられる〔特許文献２〕。【０００６】
また、〔特許文献３〕では、書き込み済みページデータが少ないブロックを逐次検索してデータ書き込み、無効なデータページが最も多いブロックを検索し、消去対象ブロックとする方法が示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−１１６４６５号公報
【特許文献２】特表２００８−５２４７０５号公報
【特許文献３】特開２００２−１５７１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
〔特許文献１〕に提案された従来技術では、書き込みブロック内の交換ページが満杯になるたびに、消去対象として選択したブロックに含まれる有効データに加えて、論理アドレス順で連続したデータであり、消去対象のブロックに含まれないデータを収集して並べ直し、書き込むために必要なデータコピー処理が発生してしまう。フラッシュメモリに対するデータ書き換え回数は制限されているため、前記したデータコピー処理に伴い書き換えページ数が減少した分だけ、フラッシュメモリの寿命が短くなるだけでなく、当該記憶装置に対する外部システムからの書き込み速度が低下するという問題がある。〔特許文献２〕で提案されている各々の方法も同様の問題を有している。【０００９】
また、〔特許文献３〕に提案された従来技術では、全ブロックに均一にデータの書き込みをしていくため、有効データページの数は全ブロックで平均化されてしまう。そのため、提案された消去対象のブロックの選択方法にも関わらず、コピーする必要がある有効なデータ数が十分に少なくならないという問題がある。【００１０】
本発明の目的は、書き換えの際のコピーデータ量およびデータコピーに伴うブロック消去回数を低減し、長寿命かつ高性能な記憶装置、およびその記憶装置内の不揮発性半導体メモリを制御するメモリコントローラを提供することである。
【課題を解決するための手段】
【００１１】
上記課題を達成するために、本発明の記憶装置は、ある所定の書き込み単位と前記書き込み単位よりも大きいブロック消去単位を持つ不揮発性半導体メモリと、データの読み出し及び書き込みができるメモリと、外部システムからの命令によって前記不揮発性半導体メモリへの読み出しおよび書き込み処理を行うメモリコントローラと、を有し、前記不揮発性半導体メモリの記憶領域は、１つ以上の物理ブロックからなるスクラッチブロックと、１つ以上の物理ブロックからなるデータブロックと、１つ以上の物理ブロックからなる消去済みブロックと、から構成され、前記メモリは、を管理するためのスクラッチブロック管理テーブルと、前記データブロックを管理するためのデータブロック管理テーブルと、前記消去済みブロックを管理するための消去済みブロック管理テーブルと、物理ブロック管理テーブルと、を有し、前記データブロック管理テーブルは、前記物理ブロックを特定する物理ブロック番号に関連付けて、当該物理ブロックが前記データブロックとして有効であるか否かを示すフラグを記憶しており、前記物理ブロック管理テーブルは、前記物理ブロックに関連付けて、有効なデータのページ数を記憶しており、前記記憶装置は、前記外部システムからのデータ書き込みを前記スクラッチブロックに対して行い、前記スクラッチブロック内の空きページが所定の数より少なくなった場合あるいは無くなった場合には、そのスクラッチブロックを前記データブロックの１つとして扱い、新しいスクラッチブロックとして前記消去済みブロックのうちいずれか１つを割り当て、前記消去済みブロックが不足した場合には、前記データブロック管理テーブルを参照し、前記データブロックとして登録されている物理ブロックの前記物理ブロック番号を取得し、前記物理ブロック管理テーブルを参照し、前記取得した物理ブロック番号に対応する前記ページ数を取得し、前記データブロックの中から、前記取得したページ数が少ない物理ブロックを選択して有効なデータを前記スクラッチブロックにコピーした後、消去することを特徴とするものである。
【００１２】
更に、本発明は記憶装置において、前記データブロックと前記スクラッチブロックを一定量に分割した論理空間ごとに管理することを特徴とするものである。【００１３】
更に、本発明は記憶装置において、前記書き込み単位ごとに論理アドレス空間を分割することで一意に定められる論理アドレスと前記不揮発性半導体メモリの物理アドレスを対応させるテーブルを前記メモリ内に持ち、前記メモリコントローラが前記外部システムからのデータ書き込み命令に応じて前記テーブルの書き換えを行うことを特徴とするものである。【００１５】
また、本発明は上記課題を達成するために、外部システムからの命令によって不揮発性半導体メモリへの読み出しおよび書き込み処理、およびメモリへの読み出し及び書き込み処理を行うメモリコントローラであって、前記メモリコントローラは、前記不揮発性半導体メモリの記憶領域を、１つ以上の物理ブロックからなるスクラッチブロックと、１つ以上の物理ブロックからなるデータブロックと、１つ以上の物理ブロックからなる消去済みブロックと、から構成されるように扱い、前記データブロックを管理するためのデータブロック管理テーブルと、物理ブロック管理テーブルと、を前記メモリ内に有し、前記データブロック管理テーブルは、前記物理ブロックを特定する物理ブロック番号に関連付けて、当該物理ブロックが前記データブロックとして有効であるか否かを示すフラグを記憶しており、前記物理ブロック管理テーブルは、前記物理ブロックに関連付けて、有効なデータのページ数を記憶しており、前記メモリコントローラは、前記外部システムからのデータ書き込みは前記スクラッチブロックに対して行い、前記スクラッチブロック内の空きページが所定の数よりも少なくなった場合あるいは無くなった場合には、そのスクラッチブロックを前記データブロックの１つとして扱い、新しいスクラッチブロックとして前記消去済みブロックのうちいずれか１つを割り当て、前記消去済みブロックが不足した場合には、前記データブロック管理テーブルを参照し、前記データブロックとして登録されている物理ブロックの前記物理ブロック番号を取得し、前記物理ブロック管理テーブルを参照し、前記取得した物理ブロック番号に対応する前記ページ数を取得し、前記データブロックの中から、前記取得したページ数の少ない物理ブロックを選択して、有効なデータを前記スクラッチブロックにコピーした後、消去することを特徴とするものである。
【００１６】
更に、本発明はメモリコントローラにおいて、前記データブロックと前記スクラッチブロックを一定量に分割した論理空間ごとに管理することを特徴とするものである。【００１７】
更に、本発明はメモリコントローラにおいて、前記書き込み単位ごとに論理アドレス空間を分割することで一意に定められる論理アドレスと前記不揮発性半導体メモリの物理アドレスを対応させるテーブルを前記メモリ内に持ち、前記外部システムからのデータ書き込み命令に応じて前記テーブルの書き換えを行うことを特徴とするものである。【００１９】
本発明では、前記の課題を解決するために、本発明における記憶装置は、データの書き込みおよび読み出し単位よりも大きな消去単位を持つ不揮発性半導体メモリと、ホスト計算機からの命令により、上記不揮発性半導体メモリに対してデータの書き込みおよび読み出しを行うメモリ制御部とを具備することを特徴とする。【００２０】
ここで、記憶領域は１つ以上の物理ブロックからなるデータブロックと１つ以上の物理ブロックからなる消去済みブロックと１つ以上の物理ブロックからなるスクラッチブロックより構成される。【００２１】
ここで、スクラッチブロックにはホスト計算機からの書き込みデータもしくはデータブロックからの有効なコピーデータを書き込むようにメモリ制御部によって制御される。また、消去済みブロックが不足した場合には、データブロックの中から有効データページが少ないブロックを消去対象とし、有効なデータをスクラッチブロックにコピーした後、ブロック消去することで消去済みブロックを得るように、メモリ制御部によって制御される。
【発明の効果】
【００２２】
本発明によれば、消去対象のブロックに含まれる有効データページだけをスクラッチブロックにコピーすればよい。このため、〔特許文献１〕、〔特許文献２〕に示される従来技術では書き込み先のブロックが満杯になる度に行っていた、論理アドレス順で連続したデータを収集して並べ直し、書き込むことに伴う余分なデータコピー処理は発生しない。【００２３】
また、本発明によれば、有効なデータページ数が十分に少ないデータブロックを選択することができるため、〔特許文献３〕で示した従来技術よりも、コピーデータ量を低減させられる。これは、有効なデータページの総数は記憶装置全体で一定であるため、ホスト計算機からの書き込みデータ、および消去対象のブロックに含まれる有効なデータをすべスクラッチブロックに書き込み、有効なデータページをスクラッチブロックに局在させることで、データブロックに含まれる有効なデータページ数を低減させられることによる。有効データページが少ないデータブロックを選択することで、コピーデータ量を低減させられる。【００２４】
前記のコピーデータ量の削減により、記憶装置を長寿命化させることができる。これは、フラッシュメモリのブロック消去回数が制限されている点、およびフラッシュメモリに対する書き込み処理が、データ書き込みとページコピー処理のみであることを考え合わせればよい。つまり、一定数のホスト計算機からの書き込みに伴い発生するコピーデータ量を低減させ、ブロック消去回数を低減させられるためである。【００２５】
さらに、前記のコピーデータ量の削減により、ホスト計算機によるデータ書き換え速度を向上させることができる。これは、フラッシュメモリに対する単位時間当たりの書き込み速度の上限が一定である点、およびフラッシュメモリに対する書き込み処理が、データ書き込みとページコピー処理のみであることを考え合わせればよい。ページコピー処理量を低減させられれば、ホスト計算機からの単位時間当たりの書き込み回数が増加させられる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施例を説明するためのハードウェア構成図である。
【図２】不揮発性半導体メモリの内部構成図である。
【図３】メモリ制御方式において、メモリの使用状態を表した図である。
【図４】ホスト計算機からのデータ書き込み処理のフローチャートである。
【図５】ブロック消去処理の際のフローチャートである。
【図６】論理／物理変換テーブルの構成を表した図である。
【図７】スクラッチブロック管理テーブルの構成を表した図である。
【図８】データブロック管理テーブルの構成を表した図である。
【図９】消去済みブロック管理テーブルの構成を表した図である。
【図１０】物理ブロック管理テーブルの構成を表した図である。
【発明を実施するための形態】
【００２７】
以下、図面を用いて本発明の実施例を説明する。
図１は本発明を実現するためのハードウェア構成例を表す図である。
【００２８】
図１に示す記憶装置６は、ホスト計算機３とデータパス４を介して接続される。
記憶装置６は、メモリコントローラ１と半導体メモリ２から構成される。メモリコントローラ１は、ホストＩ／Ｆ（インターフェース）制御部１１と半導体メモリＩ／Ｆ制御部１２とマイクロプロセッサ１３とメモリＩ／Ｆ制御部１４とメモリ１５から構成される。メモリ１５は、図１で示したようにメモリコントローラと一体である必要は無く、メモリコントローラと接続されたメモリチップであってもよい。また、メモリ１５は不揮発性半導体メモリであっても揮発性半導体メモリであっても良い。
【００２９】
ホストＩ／Ｆ制御部１１は、ホスト計算機３からのデータ読み出しおよび書き込み命令に従って、ホスト計算機３との送受信を制御する。ホスト計算機３からのデータの読み出しおよび書き込み命令は、記憶装置６が有する物理的記憶領域に対応付けた論理記憶領域に対して行われるものであり、データの読み出しおよび書き込み命令を受けたコントローラ１は、指定する半導体メモリ２内の物理アドレスに対してデータの読み出しおよび書き込みを行う。
【００３０】
半導体メモリＩ／Ｆ制御部１２はマイクロプロセッサ１３からの指示により半導体メモリ２とのアクセス制御を行う。なお、マイクロプロセッサ１３から半導体メモリ２を直接制御可能であれば、半導体メモリＩ／Ｆ制御部１２は必ずしも必要ではない。
【００３１】
マイクロプロセッサ１３は、半導体メモリ２内に、記憶装置６の物理的記憶領域に対応する論理的記憶領域を構築し、この論理的記憶領域に対するデータの読み出しおよび書き込み処理の制御を行う。
【００３２】
メモリＩ／Ｆ制御部１４はマイクロプロセッサ１３からの指示によりメモリ１５とのアクセス制御を行う。なお、マイクロプロセッサ１３から半導体メモリ２を直接制御可能であれば、メモリＩ／Ｆ制御部１４は必ずしも必要ではない。
【００３３】
メモリ１５は、論理／物理変換テーブル１５１とスクラッチブロック管理テーブル１５２とデータブロック管理テーブル１５３と消去済みブロック管理テーブル１５４と物理ブロック管理テーブル１５５を有する。
【００３４】
ここで、図２の説明に入る前に、メモリ１５内の各種テーブルについて説明する。
メモリ１５内の論理／物理変換テーブル１５１は、ホスト計算機３からのアクセスによって示される論理アドレスと半導体メモリ２上の物理アドレスの対応付けを行うものである。
【００３５】
図６は論理／物理変換テーブル１５１の構成例を示したものである。図６（Ａ）は初期状態、図６（Ｂ）はデータが書き込まれて論理／物理変換テーブルが更新された状態を表している。論理／物理変換テーブル１５１は、ホスト計算機３からのアクセスによって示される論理アドレス１５１１と半導体メモリ２上のチップ番号、ブロック番号、ページ番号からなる物理アドレス１５１２で構成される。なお、この例では物理アドレス１５１２にチップ番号まで記載しているが、半導体メモリ２が単一チップの場合には、チップ番号を記載する必要は無い。
【００３６】
物理アドレス１５１２の部分は、データ書き込み処理によって値が変わり、例えば図６（Ａ）のような初期状態から、論理アドレス１５１１へのデータ書き込み処理によって、図６（Ｂ）のようなデータ書き込み後の状態のように移り変わっていく。
【００３７】
スクラッチブロック管理テーブル１５２は、一定量の論理的空間ごとに管理されるスクラッチブロックが有効であるか否かのフラグとスクラッチブロックとして扱われている物理ブロックの番号を管理するテーブルである。図７にスクラッチブロック管理テーブル１５２の構成例を示す。図７（Ａ）は初期状態、図７（Ｂ）は新しいスクラッチブロックが提供された状態、図７（Ｃ）はスクラッチブロックがデータブロックに移った状態を表している。
【００３８】
スクラッチブロック管理テーブル１５２は、スクラッチブロック番号１５２１と有効フラグ１５２２およびスクラッチブロック番号に対応する物理ブロック番号１５２３から構成される。新しくスクラッチブロックが割り当てられた場合には、図７（Ｂ）のように有効フラグ１５２２を１に設定して物理ブロック番号１５２３を更新する。スクラッチブロックがデータブロックへと移行した場合などは図７（Ｃ）のように有効フラグ１５２２を０にして、該当スクラッチブロックを無効化する。
【００３９】
データブロック管理テーブル１５３は、一定量の論理的空間ごとに管理されるデータブロックが有効であるか否かのフラグとデータブロックとして扱われている物理ブロックの番号を管理するテーブルである。図８にデータブロック管理テーブル１５３の構成例を示す。図８（Ａ）は初期状態、図８（Ｂ）はスクラッチブロックがデータブロックに移行した状態、図８（Ｃ）はデータブロックが消去された状態を表している。
【００４０】
データブロック管理テーブル１５３は、データブロック番号１５３１と有効フラグ１５３２およびデータブロック番号に対応する物理ブロック番号１５３３から構成される。新しくデータブロックに移行した物理ブロックがある場合には、図８（Ｂ）のように有効フラグ１５３２を１に設定して物理ブロック番号１５３３を更新する。データブロックが消去された場合などは図８（Ｃ）のように有効フラグ１５３２を０にして、該当データブロックを無効化する。
【００４１】
消去済みブロック管理テーブル１５４は、データが書き込まれていない物理ブロックの番号を保持するテーブルである。図９に消去済みブロック管理テーブルの構成例を示す。図９（Ａ）は初期状態、図９（Ｂ）は消去済みブロックをスクラッチブロックとして割り当てた状態を表している。
【００４２】
消去済みブロック管理テーブル１５４は、データが書き込まれていない物理ブロックの番号を上から順に格納しており、スクラッチブロックに割り当てる必要が出てくると、例えば図９（Ａ）の初期状態から図９（Ｂ）のスクラッチブロック割り当て後の状態に変化する。
【００４３】
物理ブロック管理テーブル１５５は、各物理ブロックの消去回数や有効データページ数および有効データページフラグを管理するテーブルである。図１０は物理ブロック管理テーブル１５５の構成例である。図１０（Ａ）は初期状態、図１０（Ｂ）は有効なデータが書き込まれた状態、図１０（Ｃ）は物理ブロックが消去された状態を表している。
【００４４】
物理ブロック管理テーブル１５５は、物理ブロック番号１５５１とそのブロックの消去回数１５５２とその物理ブロックの有効データページ数１５５３とその物理ブロックの有効データページフラグ１５５４と書き込み可能ページ番号１５５５から構成されている。有効データページフラグ１５５４は、ブロック内のページ数がｎページの場合にはｎビットの２進数で表され、最も右のビットがページ０、最も左のビットがページｎ−１を表している。各ページ番号に対応するビットの値が０の場合には、そのページ内のデータは無効であることを表し、１の場合にはそのページ内のデータは有効であることを表している。
【００４５】
以上が図１のメモリ１５内における各テーブルの説明である。なお、図１の半導体メモリ２は説明の簡単化のために１個の半導体メモリ２のみ記載しているが、上述のように記憶装置６の論理的記憶領域に対応して、半導体メモリ２の物理的記憶領域を管理することにより、半導体メモリ２が単数の場合にも複数個を接続している場合にも対応できることは言うまでもない。
【００４６】
図２は、本発明の実施の形態において前提とする半導体メモリ２の内部構造を示した図である。図２では、半導体メモリ２上の論理的記憶領域を示している。図１に示したホスト計算機３からは、記憶装置６に対しては図２の論理的記憶領域のみが認識される。
【００４７】
図２中の番号２１はデータ消去の最小単位を表し、これをブロックと呼ぶ。同様に番号２１１はデータ読み出しおよび書き込みの最小単位であり、これをページと呼ぶ。図２においては、半導体メモリ２の論理的記憶領域は１つ以上のブロック２１で構成されており、このブロック２１は１つ以上のページ２１１で構成されている。すなわち、半導体メモ２の論理的記憶領域は、ブロック１からブロックＭ（整数）までのＭ個のブロック２１を有し、それぞれのブロックはページ１からページＮ（整数）までのＮ個のページを有している。
【００４８】
上述したように、ホスト計算機３はデータパス４を介して、記憶装置６との間でデータのやり取りを行っているが、ここで、データパス４にはＳＣＳＩ（Small Computer System Interface）やＡＴＡ（Advanced Technology Attachment）などのインターフェースが用いられる。ただし、本発明の実施の形態においては、これらのインターフェースに限られるものではなく、他のデータパスによっても代用可能である。同様に、データパスの数がひとつに限られるものでもなく、複数のデータパスがメモリコントローラに接続されていても良い。
【００４９】
また、半導体メモリ２とメモリコントローラ１とのデータのやり取りはメモリパス５によって行われる。記憶装置６は、ホスト計算機３からの命令に基づいてデータの記憶を行う装置である。
【００５０】
次に、本発明の実施の形態における特徴であるメモリ制御方式を実現するためのメモリ使用状態について説明する。
図３は、本発明の実施の形態における特徴であるメモリ制御方法を実現するためのメモリ使用状態を表した図であり、メモリコントローラ１の制御により半導体メモリ２上の論理的記憶領域がどのように扱われるかを示している。
【００５１】
半導体メモリ２上の論理的記憶領域は、スクラッチブロック２２とデータブロック２３および消去済みブロック２４から構成される。
【００５２】
スクラッチブロック２２は、データを記憶するブロックであり、一定量に分割された論理的記憶領域ごとに１つのブロックから構成される。各論理的記憶領域を論理グループと呼ぶ。このブロックの内部は番号２２１のようになっており、スクラッチブロックは、データが書き込まれているページとデータが書き込まれていないページの両方を有している。
【００５３】
データブロック２３は、データを記憶するブロックであり、一定量に分割された論理的記憶領域ごとに１つあるいは複数個のブロックで構成される。データブロックの全てのページにはデータが書き込まれている。
【００５４】
消去済みブロック２４は、ブロック消去を行い、通常はｎページだけデータを書き込むことができる状態にある１つあるいは複数個のブロックから構成される。ただし、必要に応じて各ブロックの消去回数を例とするブロック管理に関する情報が（ｎ−１）ページ以下だけ書き込んでおいても良い。
【００５５】
ここで、スクラッチブロック２２およびデータブロック２３は、ユーザがホスト計算機３を用いてデータを読み出すことができる領域である。データブロック２３はすべてのページにデータが書き込まれていて上書きができないため、データを書き込む際には、スクラッチブロック２２の空いているページの内、最もページ番号の小さいページに書き込むことになる。
【００５６】
そして、スクラッチブロック２２の全てのページにデータが書き込まれたときは、このスクラッチブロック２２を以降はデータブロック２３の１つとして扱い、消去済みブロック２４の中から１つのブロックを新しいスクラッチブロック２２として割り当てを行う。
【００５７】
消去済みブロック２４のブロックの数が一定数以下になった場合には、データブロック２３の中から有効データページ数の少ないブロックを選択し、該当ブロックの有効データをスクラッチブロック２２へと移して該当ブロックを消去し、以降は該当ブロックを消去済みブロックの１つとして扱う。
【００５８】
データブロック２３の個数Ｍおよび消去済みブロックの個数Ｎについての設定方法はここでは特に限定しない。
【００５９】
以上を踏まえて、図４および図５のフローチャートを用いて、本発明を適用した実施例の動作について説明する。
【００６０】
図４および図５は、本発明の実施形態の特徴である書き込み処理とブロック消去処理の手順を示している。
【００６１】
まず、ホスト計算機３から書き込み要求があった場合の処理について図４を用いて説明する。
【００６２】
［書き込み処理］
図４のフローチャートは、マイクロプロセッサ１３の半導体メモリ２へのデータ書き込み処理のフローチャートである。以下にその処理の流れを説明する。
【００６３】
まず、マイクロプロセッサ１３は、ホストＩ／Ｆ制御部１１を介して、ホスト計算機３からデータと論理アドレスを受信する（ステップＳ７１１）。
【００６４】
次に、マイクロプロセッサ１３は、書き込み対象となる半導体メモリ２の物理アドレスを確認するために、スクラッチブロック管理テーブル１５２を参照し、書き込み対象論理アドレスと対応する物理ブロック番号１５２３を取得する（ステップＳ７１４）。
【００６５】
このとき、対象論理アドレスに対応したスクラッチブロック２２が割り当てられていない場合には（ステップＳ７１２“Ｙｅｓ”）、消去済みブロック２４の中から１つのブロックを選び出してスクラッチブロック２２内の物理ブロック番号１５２３に登録し、フラグ１５２２を有効化する（ステップＳ７１３）。そして、登録した物理ブロック番号１５２３を取得する（ステップＳ７１４）。
【００６６】
次に、物理ブロック管理テーブル１５５を確認し、取得した上記物理ブロック番号１５２３のブロックの書き込み可能ページ番号１５５５を特定し、書き込み先のチップ番号、ブロック番号とページ番号から物理アドレスを生成し（ステップＳ７１５）、マイクロプロセッサ１３は該当物理アドレスにデータ書き込み処理を行う（ステップＳ７１６）。
【００６７】
次に、書き込み可能ページ番号１５５５を加算する。この時、マイクロプロセッサ１３は、データの書き込みがスクラッチブロック２２の最後のページに行われたかどうかを確認し（ステップＳ７１７）、最後のページに書き込まれた場合には（ステップＳ７１７“Ｙｅｓ”）、このスクラッチブロック２２を以降はデータブロック２３の１つとして扱うために、スクラッチブロック管理テーブル１５２のこのスクラッチブロック部分のフラグ１５２２を０に無効化し、データブロック管理テーブル１５３に物理ブロック番号１５３３を登録し、フラグ１５３２を有効化する（ステップＳ７１８）。なお、ステップＳ７１７およびＳ７１８において、判断条件を、書込みが最後のページに行われたことに代えて、空きページが所定のページ数より少なくなったこととしてもよい。
【００６８】
データ書き込みに伴い、ステップＳ７１７で指定される判断条件を満たさない場合には（ステップＳ７１７“Ｎｏ”）、スクラッチブロック管理テーブル１５２の更新のみを行う（ステップＳ７１９）。
【００６９】
次に、マイクロプロセッサ１３は、物理ブロック管理テーブル１５５を参照し、書き込み物理ブロック番号と対応する物理ブロック番号１５５１の有効データページ数１５５３を加算し、有効データページフラグ１５５４の該当ページ部分を有効化する。また、論理／物理変換テーブルを参照し、書き込み論理アドレスと対応する物理アドレス１５１２を読み出し、物理ブロック管理テーブル１５５内の有効データページフラグ１５５４が有効であるか確認する。有効である場合には、この物理アドレスと対応する物理ブロック番号１５５１の有効データページ数を減算し、有効データページフラグ１５５４の該当ページ部分を無効化する。その後、書き込み物理アドレスを論理／物理変換テーブル１５１の対応論理アドレス１５１１に対応する物理アドレス１５１２として登録する（ステップＳ７２０）。
【００７０】
次に、マイクロプロセッサ１３は、ホストＩ／Ｆ制御部１１を介してホスト計算機３に書き込み処理の終了を通知し、書き込み処理を終える（ステップＳ７２１）。
【００７１】
［ブロック消去処理］
次に、図５のフローチャートを用いて、ブロック消去処理の流れを説明する。
マイクロプロセッサ１３は、消去済みブロックの数が一定数以下になった際に、ブロック消去処理を開始する（ステップＳ７３１“Ｙｅｓ”）。
【００７２】
まず、マイクロプロセッサ１３は、データブロック管理テーブル１５３を参照して登録されている物理ブロック番号１５３３を取得する。取得した物理ブロック番号１５３３と対応する物理ブロック管理テーブル１５５内の物理ブロック番号１５５１の有効ページ数１５５３を参照し、データブロック２３に登録されている物理ブロックの中で最も有効データページ数の少ないブロックを特定する（ステップＳ７３２）。
【００７３】
次に、マイクロプロセッサ１３は、該当物理ブロックの有効データページ数が０であるか確認し（ステップＳ７３３）、有効データページ数が０でない場合は、物理ブロック管理テーブル１５５の有効データページフラグ１５５４を参照し、有効データページのデータをスクラッチブロックへとコピーする（ステップＳ７３４）。このコピー作業を、有効データページ数１５５３が０になるまで繰り返し、有効データページ数１５５３が０になった場合は、該当物理ブロックを消去する（ステップＳ７３５）。
【００７４】
次に、マイクロプロセッサ１３は、データブロック管理テーブル１５３の消去したブロック番号と一致する物理ブロック番号１５３３のフラグ１５３２を無効化し、データブロック管理テーブル１５３からこの物理ブロックの登録を抹消する。そして、消去した物理ブロック番号を消去済みブロック管理テーブル１５４に登録し、物理ブロック管理テーブル１５５の消去ブロック番号に対応する物理ブロック番号１５５１の消去回数１５５２を加算する。
【００７５】
上述の処理を消去済みブロック内のブロックが一定数より多くなるまで繰り返し行う。
【産業上の利用可能性】
【００７６】
本発明は、計算機システムに用いられる記憶装置、およびそのメモリコントローラに適用することが可能である。
【符号の説明】
【００７７】
１  メモリコントローラ
２  半導体メモリ
３  ホスト計算機
４  データパス
５  メモリバス
６  記憶装置
１１  ホストＩ／Ｆ制御部
１２  半導体メモリＩ／Ｆ制御部
１３  マイクロプロセッサ
１４  メモリＩ／Ｆ制御部
１５  メモリ
２１  ブロック
２２  スクラッチブロック
２３  データブロック
２４  消去済みブロック
１５１  論理／物理変換テーブル
１５２  スクラッチブロック管理テーブル
１５３  データブロック管理テーブル
１５４  消去済みブロック管理テーブル
１５５  物理ブロック管理テーブル
２１１  ページ
２２１  スクラッチブロック内部構造
１５１１  論理アドレス
１５１２  物理アドレス
１５２１  スクラッチブロック番号
１５２２、１５３２  フラグ
１５２３、１５３３、１５５１  物理ブロック番号
１５３１  データブロック番号
１５５２  消去回数
１５５３  有効データページ数
１５５４  有効データページフラグ
１５５５  書き込み可能ページ番号
【図１】
0005480913.tif 000002
【図２】
0005480913.tif 000003
【図３】
0005480913.tif 000004
【図４】
0005480913.tif 000005
【図５】
0005480913.tif 000006
【図６】
0005480913.tif 000007
【図７】
0005480913.tif 000008
【図８】
0005480913.tif 000009
【図９】
0005480913.tif 000010
【図１０】
0005480913.tif 000011