(57)【特許請求の範囲】
【請求項１】
データを記憶する複数の物理ブロックを有し、上位システムから論理ブロックを指定したデータ書込みが行われる半導体メモリの書込制御装置において、
データを書き込むべき物理ブロックの指定が均等となるように前記複数の物理ブロックを予め定められた順に指定する指定手段と、
物理ブロックに新たにデータが書き込めるように、該物理ブロックに記憶したデータを消去する消去手段と、
前記指定手段が指定する物理ブロックについて、すでにデータが書き込まれているか否かに従い該物理ブロックへのデータ書込の可否を検出する検出手段と、
データ書込み要求があると、前記消去手段による消去を行わせ、前記検出手段により書込み可と判定された場合には、前記指定手段が指定する物理ブロックにデータを書き込む一方、書込み不可と判定された場合には、前記指定手段が指定する物理ブロックに記憶したデータを、前記消去手段による消去により生じた書き込み可能な別の物理ブロックへ移動すると共に、前記指定手段が指定する物理ブロックに記憶したデータを、前記消去手段によって消去した後に、前記データ書込み要求に係るデータを該消去した物理ブロックへ書き込む書込制御手段と、
前記書込制御手段による書込み動作に応じて、論理ブロックと物理ブロックのアドレスを対応付けるアドレス制御手段と
を具備することを特徴とする半導体メモリの書込制御装置。
【請求項２】
物理ブロックの空塞を監視する空塞監視手段と、
前記空塞監視手段による監視結果に応じて前記書込制御手段の稼働を制御する稼働制御手段と
を具備することを特徴とする請求項１に記載の半導体メモリの書込制御装置。
【請求項３】
各物理ブロックと各論理ブロックに、前記書込制御手段の稼働を制御する属性情報を付加し、
前記属性情報に応じて前記書込制御手段の稼働を制御する稼働制御手段と
を具備することを特徴とする請求項１に記載の半導体メモリの書込制御装置。
【請求項４】
予め定められた領域であるか否かに基づき前記書込制御手段の稼働を制御する稼働制御手段と
を具備することを特徴とする請求項１に記載の半導体メモリの書込制御装置。
【請求項５】
上位システムからの指示に基づき前記書込制御手段の稼働を制御する稼働制御手段と
を具備することを特徴とする請求項１に記載の半導体メモリの書込制御装置。
【請求項６】
指定手段が指定する物理ブロックの範囲を設定する設定手段を具備することを特徴とする請求項１に記載の半導体メモリの書込制御装置。
【請求項７】
データを記憶する複数の物理ブロックを有し、上位システムから論理ブロックを指定したデータ書込みが行われる半導体メモリにおける書込制御方法において、
データを書き込むべき物理ブロックの指定が均等となるように前記複数の物理ブロックを予め定められた順に指定する第１のステップと、
前記第１のステップにて指定された物理ブロックについて、すでにデータが書き込まれているか否かに従い物理ブロックへのデータ書込の可否を検出する第２のステップと、
データ書込み要求があると、物理ブロックに新たにデータが書き込めるように、該物理ブロックに記憶したデータを消去する第３のステップと、
前記第２のステップにより書込み不可と判定された場合には、前記第１のステップにて指定された物理ブロックに記憶したデータを前記第３のステップにより生じた書き込み可能な別の物理ブロックへ移動するとともに、前記第１のステップにて指定された物理ブロックに書き込み済みのデータを、新たにデータが書き込めるように消去する第４のステップと、
前記第１のステップにて指定された物理ブロックへ、前記データ書込み要求に係るデータを書き込む第５のステップと、
前記第５のステップによる書込み動作に応じて、論理ブロックと物理ブロックのアドレスを対応付ける第６のステップと
を含むことを特徴とする半導体メモリの書込制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データを記憶する複数の物理ブロックを有し、上位システムから論理ブロックを指定したデータ書込みが行われる半導体メモリにおける書込制御装置及びその方法に関するものである。
【０００２】
【従来の技術】
従来のフラッシュメモリ等の半導体メモリにおいては、特定領域のデータの書き換え頻度が高いことによるメモリの一部領域の劣化によって、記憶装置全体の寿命が短縮化されることを防止するため、物理ブロックの消去回数をカウントしておき、消去回数が一定となった場合に、その物理ブロックのデータを別の物理ブロックへコピーする装置が知られている（例えば、特開２０００−２０２５２参照）。
【０００３】
上記の従来例によると、消去回数のカウントを各物理ブロックで行う必要があり煩わしい。
【０００４】
【発明が解決しようとする課題】
本発明は上記のような従来の半導体メモリにおける問題点を解決せんとしてなされたもので、その目的は、消去回数のカウントを各物理ブロックで行うことなく、特定論理ブロック（論理アドレス）へのデータ書込み頻度が高い場合にもメモリ全体の寿命が短くなることを防止し得る半導体メモリの書込制御装置及びその方法を提供することである。
【０００５】
【課題を解決するための手段】
本発明に係る半導体メモリの書込制御装置は、データを記憶する複数の物理ブロックを有し、上位システムから論理ブロックを指定したデータ書込みが行われる半導体メモリの書込制御装置において、データを書き込むべき物理ブロックの指定が均等となるように前記複数の物理ブロックを予め定められた順に指定する指定手段と、物理ブロックに新たにデータが書き込めるように、該物理ブロックに記憶したデータを消去する消去手段と、前記指定手段が指定する物理ブロックについて、すでにデータが書き込まれているか否かに従い該物理ブロックへのデータ書込の可否を検出する検出手段と、データ書込み要求があると、前記消去手段による消去を行わせ、前記検出手段により書込み可と判定された場合には、前記指定手段が指定する物理ブロックにデータを書き込む一方、書込み不可と判定された場合には、前記指定手段が指定する物理ブロックに記憶したデータを、前記消去手段による消去により生じた書き込み可能な別の物理ブロックへ移動すると共に、前記指定手段が指定する物理ブロックに記憶したデータを、前記消去手段によって消去した後に、前記データ書込み要求に係るデータを該消去した物理ブロックへ書き込む書込制御手段と、前記書込制御手段による書込み動作に応じて、論理ブロックと物理ブロックのアドレスを対応付けるアドレス制御手段とを具備することを特徴とする。これにより、書込みに係る物理ブロックが自動的に均等に指定されて書込みがなされてゆくことになる。
【０００６】
また本発明に係る半導体メモリの書込制御装置は、物理ブロックの空きブロックを監視する空きブロック監視手段と、前記空きブロック監視手段による監視結果に応じて前記書込制御手段の稼働を制御する稼働制御手段とを具備することを特徴とする。これにより、物理ブロックの空き状態に応じて、書込みに係る物理ブロックが自動的に均等に指定されて書込みがなされる動作の採用が決められる。
【０００７】
また本発明に係る半導体メモリの書込制御装置は、各物理ブロックと各論理ブロックに、前記書込制御手段の稼働を制御する属性情報を付加し、前記属性情報に応じて前記書込制御手段の稼働を制御する稼働制御手段とを具備することを特徴とする。これによって、物理ブロックと論理ブロックにより書込みの制御方式を変えることができる。
【０００８】
また本発明に係る半導体メモリの書込制御装置は、予め定められた領域であるか否かに基づき前記書込制御手段の稼働を制御する稼働制御手段とを具備することを特徴とする。これにより、予め定められた領域であるか否かにより書込みの制御方式を変えることができる。
【０００９】
また本発明に係る半導体メモリの書込制御装置は、上位システムからの指示に基づき前記書込制御手段の稼働を制御する稼働制御手段とを具備することを特徴とする。これによって上位システムからの指示により書込みの制御方式を変えることができる。
【００１０】
また本発明に係る半導体メモリの書込制御装置は、指定手段が指定する物理ブロックの範囲を設定する設定手段を具備することを特徴とする。これによって、指定手段が指定する物理ブロックの範囲を設定することが可能となる。
【００１１】
更に本発明に係る半導体メモリの書込制御方法は、データを記憶する複数の物理ブロックを有し、上位システムから論理ブロックを指定したデータ書込みが行われる半導体メモリにおける書込制御方法において、データを書き込むべき物理ブロックの指定が均等となるように前記複数の物理ブロックを予め定められた順に指定する第１のステップと、前記第１のステップにて指定された物理ブロックについて、すでにデータが書き込まれているか否かに従い物理ブロックへのデータ書込の可否を検出する第２のステップと、データ書込み要求があると、物理ブロックに新たにデータが書き込めるように、該物理ブロックに記憶したデータを消去する第３のステップと、前記第２のステップにより書込み不可と判定された場合には、前記第１のステップにて指定された物理ブロックに記憶したデータを前記第３のステップにより生じた書き込み可能な別の物理ブロックへ移動するとともに、前記第１のステップにて指定された物理ブロックに書き込み済みのデータを、新たにデータが書き込めるように消去する第４のステップと、前記第１のステップにて指定された物理ブロックへ、前記データ書込み要求に係るデータを書き込む第５のステップと、前記第５のステップによる書込み動作に応じて、論理ブロックと物理ブロックのアドレスを対応付ける第６のステップとを含むことを特徴とする。これにより、書込みに係る物理ブロックが自動的に均等に指定されて書込みがなされてゆくことになる。
【００１２】
【発明の実施の形態】
以下添付図面を参照して、本発明の実施の形態に係る半導体メモリの書込制御装置及びその方法を説明する。図１には、本発明の装置を用いて構成したデータ処理システムが示されている。このシステムは、上位システムであるホストコンピュータ１００と半導体不揮発性メモリカード１０１を備えるものである。
【００１３】
半導体不揮発性メモリカード１０１には、インタフェース回路１０２、メモリ制御回路１０３、フラッシュメモリ１０４が含まれており、インタフェース回路１０２がバス１０５を介してホストコンピュータ１００に接続されている。上記において、インタフェース回路１０２は、ホストコンピュータ１００との間においてコマンドやデータを受け取り、また応答やデータを返送するものである。メモリ制御回路１０３は、書込み及び読出し制御装置であり、フラッシュメモリ１０４に対するデータのリードライトを行うものである。
【００１４】
フラッシュメモリ１０４は、図２に示される物理ブロックをライト及び消去のアクセス単位としている。物理ブロックは、データが記憶されるデータ部と、属性情報が記憶される属性部とを有する。そして、フラッシュメモリ１０４には、図３に示されるように物理ブロックが複数ブロック備えられている。
【００１５】
本実施の形態においては、メモリ制御回路１０３には、図４に示されるような論理ブロック／物理ブロックに係るブロック番号の変換テーブルが備えられており、メモリ制御回路１０３はこの変換テーブルを用いてフラッシュメモリ１０４のアクセスを行い、また必要な場合に、この変換テーブルの内容を更新する。
【００１６】
次にメモリカード１０１の基本動作について説明する。ホストコンピュータ１００からメモリカード１０１ヘリードやライト等のコマンドが発行されると、システムバス１０５を通してインターフェース回路１０２へこれらのコマンドが通知される。これらのコマンドがフラッシュメモリ１０４のアクセスに関するものであった場合には、インターフェース回路１０２はメモリ制御回路１０３にコマンドを通知する。メモリ制御回路１０３は通知されたコマンドに従ってフラッシュメモリ１０４ヘアクセスを行い、その結果をインターフエース回路１０２へ返す。インターフェース回路１０２はメモリ制御回路１０３からの結果をホストコンピュータ１００ヘ返す。
【００１７】
ホストコンピュータ１００からメモリカード１０１へ発行されるリードやライトコマンドのアドレスは、論理アドレスまたは論理ブロックで指示され、メモリ制御回路１０３にて論理アドレスから論理ブロックへの変換、論理ブロックから物理ブロックへの変換が行われる。論理ブロックから物理ブロックへの変換は、図４のような変換テーブルを参照することで行われ、フラッシュメモリ１０４は変換された物理ブロックへアクセスされる。
【００１８】
メモリ制御回路１０３は、ホストコンピュータ１００からデータのライトコマンドを受けると、図５に示すフローチャートに従った処理を行い、１つの物理ブロックにライトアクセスが集中しないように動作する。この動作を行うため、メモリ制御回路１０３は、図６に示すように、データを書き込むべき物理ブロックの指定が均等となるように物理ブロックを指定するライトポインタＷＰ（指定手段）を備える。ここでは、ライトポインタＷＰは、データを書き込むべき物理ブロックの指定が均等となるように物理ブロック番号の小さい方から大きい方へ（或いは、その逆に）順次に進められ、終端へ到ると再び先頭を指定するように進められる。
【００１９】
以下、メモリ制御回路１０３が行うライト動作を図５、図６を参照して説明する。ここでは、ホストコンピュータ１００から論理ブロック（Ｎ−２）へ連続してライトコマンドが発行された場合の例を示す。尚、図６の左側が論理ブロックから物理ブロックへの変換テーブルであり、右側がフラッシュメモリ１０４である。
【００２０】
最初の状態は、図６のステップ１に示されるように論理ブロック番号０〜Ｎ−２に対応する物理ブロック番号０〜Ｎ−２にデータＤ［０］〜Ｄ［Ｎ−２］が格納されている状態では、ライトポインタＷＰが物理ブロック番号（Ｎ−１）を指示している。ここで、論理ブロック番号（Ｎ−２）に対して連続してライトが行なわれた場合、その時ホスト１００からライトコマンドを受けたメモリ制御回路１０３は、変換テーブルを用いて論理ブロック番号番号（Ｎ−２）に対応する物理ブロック番号（Ｎ−２）について書き換えデータ（記憶されているデータ）を消去する（Ｓ１）。
【００２１】
次に、ライトポインタＷＰが指示する物理ブロック番号（Ｎ−１）のブロックにデータが記憶されているか否かを検出する（Ｓ２（検出手段））。ここでは、図６のステップ１に示されるように、物理ブロック番号（Ｎ−１）にブロックにデータが記憶されていないので、ホスト１００からのデータＤ［Ｎ−２］をライトポインタＷＰが指示する物理ブロック番号（Ｎ−１）のブロックに書き込む
（Ｓ５（書込制御手段））。次へ進み、ライトポインタＷＰをインクリメントする（Ｓ６）。本例では、ライトポインタＷＰが末端に位置していたために、ステップＳ７においてＹＥＳへ分岐し、ステップＳ８において先頭の物理ブロック番号（０）を指す位置へ戻される（図６のステップ２参照）。
【００２２】
初期状態では図６のステップ１に示すように、変換テーブルにおいては、論理ブロック番号（Ｎ−２）が物理ブロック番号（Ｎ−２）に対応付けられ、また論理ブロック番号（Ｎ−１）が物理ブロック番号（Ｎ−１）に対応付けられていたが、上記データのライトにより、論理ブロック番号（Ｎ−２）が物理ブロック番号（Ｎ−１）に対応し、また論理ブロック番号（Ｎ−１）が物理ブロック番号（Ｎ−２）に対応するするように変換テーブルの内容が更新される（Ｓ９（アドレス制御手段））。この結果、変換テーブルは図６のステップ２に示されるようになる。
【００２３】
ここで更に、ホスト１００から論理ブロック番号（Ｎ−２）へ同じデータＤ［Ｎ−２］のライトコマンドを受けたメモリ制御回路１０３は、図６のステップ２に示される変換テーブルを用いて論理ブロック番号（Ｎ−２）に対応する物理ブロック番号（Ｎ−１）について書き換えデータ（記憶されているデータ）を消去する（Ｓ１）。この結果、物理ブロック番号（Ｎ−１）では、記憶されているデータが図６のステップ３に示されるように消去される。
【００２４】
次に、ライトポインタＷＰが指示する物理ブロック番号（０）のブロックにデータが記憶されているか否かを検出する（Ｓ２）。ここでは、図６のステップ２に示されるように、物理ブロック番号（０）にブロックにデータＤ［０］が記憶されているので、このデータＤ［０］を先に消去を行った物理ブロック番号（Ｎ−２）のブロックに移動する（Ｓ３（書込制御手段））。
【００２５】
次へ進み、ライトポインタＷＰが指示する物理ブロック番号（０）のブロックのデータを消去し（Ｓ４）、データＤ［Ｎ−２］をライトポインタＷＰが指示する物理ブロック番号（０）のブロックに書き込む（ステップＳ５）。更にライトポインタＷＰをインクリメントする（Ｓ６）。本例では、ライトポインタＷＰが物理ブロック番号（０）に位置していたために、ステップＳ７においてＮＯへ分岐して、ライトポインタＷＰは次の物理ブロック番号（１）に位置する（図６のステップ３）。
【００２６】
前状態では図６のステップ２に示すように、変換テーブルにおいては、論理ブロック番号（Ｎ−２）が物理ブロック番号（Ｎ−１）に対応付けられ、また論理ブロック番号（Ｎ−１）が物理ブロック番号（Ｎ−２）に対応付けられていたが、上記データのライトにより、論理ブロック番号（０）が物理ブロック番号（Ｎ−２）に対応し、また論理ブロック番号（Ｎ−２）が物理ブロック番号（０）に対応するするように変換テーブルの内容が更新される（Ｓ９）。この結果、変換テーブルは図６のステップ３に示されるようになる。
【００２７】
更に、ホスト１００から論理ブロック番号（Ｎ−２）へ同じデータも［Ｎ−２］のライトコマンドを受けた場合には、上記と同様の処理がなされて、最終的に変換テーブルとフラッシュメモリ１０４の内容は図６のステップ４に示されるようになる。
【００２８】
このように論理ブロック（Ｎ−２）へのライトが集中した場合にも、同一の物理ブロックへのライトが行われることなく、順次にライトする物理ブロックが変更されてゆき、全ての物理ブロックに均一にライトが行われる。しかも変換テーブルの更新により、ホストコンピュータ側から見える論理アドレスまたは論理ブロックに変更はなく、本装置の変換テーブルの更新制御が外部に及ぼす影響はないという利点がある。そして、ライトが全ての物理ブロックへ均一に分散されることにより、通常のフラッシュメモリの消去回数の制限が数十万回以上であることから、メモリカード１０１の寿命の問題をほぼ解消することが可能である。
【００２９】
上記の実施の形態では、全てのライトコマンドに関してライトする物理ブロックを分散させる処理を行うようにしたが、物理ブロックの空塞情報を得ておき（空塞監視手段）、空状態の物理ブロックの割合が所定以上であるときには、上記分散の処理を行わぬようにしても良い（稼働制御手段）。つまり、ライトポインタが指示する物理ブロックにデータが記憶されている場合のデータ移動を行うことなく、空き状態の物理ブロックにデータライトを行うと共に変換テーブルの更新を行う。これにより、上記実施の形態におけるデータ移動のときのリードライト及び消去により発生するオーバーヘッドを回避できると共に、空き状態の物理ブロックが順次使用されほぼ全ての物理ブロックが均一にライトされる。
【００３０】
また、物理ブロックや変換テーブルに付加する属性情報として、上記の実施の形態の処理を行うか否かを示すフラグを設けるなどにより、同一論理ブロックへのライトが生じそうなブロックに対して当該処理を行うように設定しても良い（稼働制御手段）。このようにすると、必要な部分だけに処理が限定され、データ移動のときのリードライト及び消去により発生するオーバーヘッドを回避できる。この処理を行わぬことを設定したブロックでは、同一論理ブロックへのライトが同一物理ブロックへのライトとなるが、頻度が低ければ寿命へ影響することはない。
【００３１】
更に、予め定められた領域であるか否かに基づき当該処理を行うように設定しても良い（稼働制御手段）。これにより、所定領域だけに処理が限定され、その他の領域ではデータ移動のときのリードライト及び消去により発生するオーバーヘッドを回避できる。また、上位システムであるホストコンピュータ１００からの指示に基づき当該処理を行うように設定しても良い（稼働制御手段）。これにより、ホストコンピュータ１００からフレキシブルに当該処理の実行の有無を制御可能である。
【００３２】
また、ライトポインタＷＰはライト毎に順にインクリメントするようにしたが、特定の物理ブロックに集中しないようにランダムに物理ブロックをしているようにしてもよい。上記実施の形態では全物理ブロックが均一にアクセスされるようにするため、全物理ブロック番号が現れるようにライトポインタＷＰをインクリメントする例を示したが、ライトポインタＷＰのインクリメントする範囲を全物理ブロックの後半のみで行い、前半部はライトポインタＷＰが指さないように設定しても良い。設定は予め行うか、後にホストコンピュータ１００から行う。このようにライトポインタＷＰの指す領域を制限し、前半部には重要な書き換えしないデータを保存し、後半部には書き換え頻度が高いデータを保存することで、前半部の重要なデータを守りかつ後半部にある書き換え頻度の高いデータが格納されている物理ブロック部分の寿命の短縮化を介することも可能である。
【００３３】
【発明の効果】
以上説明したように本発明によれば、データを記憶する複数の物理ブロックを有し、上位システムから論理ブロックを指定したデータ書込みが行われる半導体メモリにおける書込制御において、データを書き込むべき物理ブロックの指定が均等となるように上記複数の物理ブロックを予め定められた順に指定し、指定された物理ブロックについて、すでにデータが書き込まれているか否かに従い物理ブロックへのデータ書込の可否を検出し、データ書込み要求があると、物理ブロックに新たにデータが書き込めるように、該物理ブロックに記憶したデータを消去し、書込み不可と判定された場合には、指定された物理ブロックに記憶したデータを消去により生じた書き込み可能な別の物理ブロックへ移動するとともに、指定された物理ブロックに書き込み済みのデータを、新たにデータが書き込めるように消去し、指定された物理ブロックへ、データ書込み要求に係るデータを書き込むので、書込みに係る物理ブロックが自動的に均等に指定されて書込みがなされる。
【図面の簡単な説明】
【図１】本発明に係る半導体メモリの書込制御装置を含むデータ処理システムのブロック図。
【図２】フラッシュメモリの物理ブロックの構成を示す図。
【図３】フラッシュメモリの構成を示す図。
【図４】本発明に係る半導体メモリの書込制御装置に用いられる論理ブロック／物理ブロックの変換テーブルを示す図。
【図５】本発明に係る半導体メモリの書込制御装置の動作を説明するためのフローチャート。
【図６】本発明に係る半導体メモリの書込制御装置によるライト動作によるフラッシュメモリと変換テーブルの内容遷移を説明するための図。
【符号の説明】
１００  ホストコンピュータ        １０１  半導体不揮発性メモリ
１０２  インタフェース回路        １０３  メモリ制御回路
１０４  フラッシュメモリ          １０５  バス
【図１】
0004149640.tif 000002
【図２】
0004149640.tif 000003
【図３】
0004149640.tif 000004
【図４】
0004149640.tif 000005
【図５】
0004149640.tif 000006
【図６】
0004149640.tif 000007