(57)【要約】      （修正有）【課題】ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除する。【解決手段】アドレス変換装置１０１は、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換し、同一の論理アドレスと、同一の論理アドレスが変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持し、変換された論理アドレスに対応する物理アドレスにデータを書き込むように半導体記憶装置１０３を制御し、同一の論理アドレスに対して記憶されたデータを削除する場合には、保持された同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように半導体記憶装置を制御する。【選択図】図１
2012234482.tif 000002
【特許請求の範囲】
【請求項１】
半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置であって、
同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換手段と、
前記同一の論理アドレスと、当該同一の論理アドレスが前記変換手段により変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持手段と、
前記変換手段により変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御手段と、
前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持手段により保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御手段と
を備えたことを特徴とする記憶制御装置。
【請求項２】
前記変換手段は、前記同一の論理アドレスを未使用の論理アドレスに変換することを特徴とする請求項１記載の記憶制御装置。
【請求項３】
前記半導体記憶装置における未使用の領域を予め確保しておき、
前記変換手段は、前記同一の論理アドレスを前記未使用の領域に属する物理アドレスに対応する論理アドレスに変換することを特徴とする請求項１記載の記憶制御装置。
【請求項４】
前記保持手段は、前記アドレス変換情報を前記半導体記憶装置に記憶することにより前記アドレス変換情報を保持することを特徴とする請求項１〜３のいずれか１項に記載の記憶制御装置。
【請求項５】
半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置の制御方法であって、
同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換ステップと、
前記同一の論理アドレスと、当該同一の論理アドレスが前記変換ステップにより変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持ステップと、
前記変換ステップにより変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御ステップと、
前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持ステップに保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御ステップと
を備えたことを特徴とする制御方法。
【請求項６】
半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置の制御方法をコンピュータに実行させるためのプログラムであって、
前記制御方法は、
同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換ステップと、
前記同一の論理アドレスと、当該同一の論理アドレスが前記変換ステップにより変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持ステップと、
前記変換ステップにより変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御ステップと、
前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持ステップに保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御ステップと
を備えたことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及びその制御方法、並びにプログラムに関し、特に、フラッシュメモリに対する制御を行う記憶制御装置及びその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
昨今の半導体記憶装置は、内部にフラッシュメモリを備えていて、フラッシュメモリコントローラによって制御が行われる。ここで使用されるフラッシュメモリはその内部構造から、書き込みと削除に回数制限がある。そのため、フラッシュメモリ上の特定部分に書き込みが集中しないように、負荷の均一化（ウェアレベリング）を適切に図ることが重要である。
【０００３】
このウェアレベリングは様々な手法が提案されているが、その手法としてフラッシュメモリへの書き込み時にアドレスを操作する手法がよく使用される。この手法では、フラッシュメモリコントローラが、フラッシュメモリの物理アドレス（ＰＢＡ）とファイルシステム上の論理アドレス（ＬＢＡ）の関連を示したマップを持っており、ホストからの書き込み指示に対して書き込み頻度の低いＰＢＡを割り当て、マップ上でＰＢＡとＬＢＡの接続情報を書き換えている。
【０００４】
このウェアレベリングによれば、フラッシュメモリコントローラが持つマップには、一対のＬＢＡとＰＢＡごとの接続情報が保存されている。そのため、あるＬＢＡ（１）への書き込み指示がＰＢＡ（１）に書きこまれた後に、さらにホストから同じＬＢＡ（１）への上書き指示があった場合、フラッシュメモリコントローラはＰＢＡ（１）とは異なるＰＢＡ（２）に書き込む。そしてフラッシュメモリコントローラは、マップ上の接続情報を、ＬＢＡ（１）に対応するものとしてＰＢＡ（２）に書き換える（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−０６７２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記ウェアレベリングによれば、ホストから同じＬＢＡに対して複数回の書き込み指示があった場合、ウェアレベリングによってマップ上のＬＢＡとＰＢＡの接続情報が書き換えられることとなる。従って、マップに記録されている接続情報は一対だけであるため、ＬＢＡと直近の書き込みに使用したＰＢＡの情報だけしか存在しない。
【０００７】
この状態において、ホストから同ＬＢＡの削除指示があった場合、マップの接続情報から直近のＰＢＡに書き込んであるデータは削除できるが、同ＬＢＡと接続されていた以前のＰＢＡのデータは削除されない。
【０００８】
このように、フラッシュメモリの負荷均一化のためウェアレベリングは欠かせないことではあるが、ウェアレベリングが実施されていると、フラッシュメモリ上にデータが残されたままになってしまうという課題がある。
【０００９】
本発明の目的は、ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除する記憶制御装置及びその制御方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１の記憶制御装置は、半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置であって、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換手段と、前記同一の論理アドレスと、当該同一の論理アドレスが前記変換手段により変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持手段と、前記変換手段により変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御手段と、前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持手段により保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御手段とを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除する記憶制御装置及びその制御方法、並びにプログラムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係るアドレス変換装置の概略構成を示す図である。
【図２】アドレス変換装置が用いるアドレス変換テーブルの変化を示す図である。また、（Ａ）、（Ｂ）、（Ｃ）の順に、時系列に従ってアドレス変換テーブルを並べている。さらに、（Ｄ）は、後述する削除処理の説明で用いられる図である。
【図３】図１におけるアドレス変換装置によって実行される書き込み処理の手順を示すフローチャートである。
【図４】図１におけるアドレス変換装置によって実行される読み出し処理の手順を示すフローチャートである。
【図５】図１におけるアドレス変換装置によって実行される削除処理の手順を示すフローチャートである。
【図６】本実施の形態に係るアドレス変換装置を含む半導体記憶装置の概略構成を示す図である。
【図７】図６におけるフラッシュメモリコントローラにより実行される書き込み処理の手順を示すフローチャートである。
【図８】図６におけるフラッシュメモリコントローラにより実行される読み出し処理の手順を示すフローチャートである。
【図９】図６におけるフラッシュメモリコントローラにより実行される削除処理の手順を示すフローチャートである。
【図１０】本実施の形態に係るアドレス変換装置を含むホスト側システムの概略構成を示す図である。
【図１１】図１におけるアドレス変換装置により実行される書き込み処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【００１４】
なお、本実施の形態では、４種類の実施の形態が説明される。いずれの実施例においても、本実施の形態に係る記憶制御装置は、半導体記憶装置へのデータの書き込み、及び削除を、半導体記憶装置における物理アドレスと物理アドレスに対応させた論理アドレスとを用いて実行し、半導体記憶装置への書き込みはウェアレベリングにより記憶されるようになっている。
【００１５】
［第１の実施の形態］
図１は、本発明の実施の形態に係るアドレス変換装置１０１の概略構成を示す図である。
【００１６】
図１において、アドレス変換装置（記憶制御装置）１０１は、ホスト側システム１０２と半導体記憶装置１０３に介在する。そしてアドレス変換装置１０１は、ＣＰＵ１０４、起動ＲＯＭ１０７、不揮発性メモリ１０９、バッファ１０８、ホスト側と接続するホストＩ／Ｆ１０５、及び半導体記憶装置１０３と接続するデバイスＩ／Ｆ１０６を含む。
【００１７】
また、半導体記憶装置１０３は、フラッシュメモリ１１１とフラッシュメモリコントローラ１１０とを含む。
【００１８】
ＣＰＵ１０４は、ホストＩ／Ｆ１０５を介してホスト側システム１０２と、またデバイスＩ／Ｆ１０６を介して半導体記憶装置１０３と接続されており、ホスト側システム１０２と半導体記憶装置１０３の間で橋渡し処理を行う。
【００１９】
またＣＰＵ１０４は起動ＲＯＭ１０７にも接続しており、ＣＰＵ１０４を起動するためのファームウェアを起動ＲＯＭ１０７から読み出す。さらにＣＰＵ１０４は不揮発性メモリ１０９にも接続しており、論理アドレス（以下、「ＬＢＡ」という）の変換時に使用するアドレス変換テーブル（アドレス変換情報）を保存する。またＣＰＵ１０４はバッファ１０８にも接続しており、ＬＢＡの変換時に読み書きするデータをバッファ１０８に一時保存できる。
【００２０】
フラッシュメモリコントローラ１１０は、フラッシュメモリ１１１に接続されており、ホスト側システム１０２からの指示に従ってデータをフラッシュメモリ１１１に読み書きする。
【００２１】
またフラッシュメモリコントローラ１１０は、ウェアレベリングを実施しており、フラッシュメモリコントローラ１１０内の図示しないマップを用いて、ＬＢＡと物理アドレス（以下、「ＰＢＡ」という）の変換・接続処理を行う。
【００２２】
本実施の形態では、フラッシュメモリコントローラ１１０はアドレス変換装置１０１のＣＰＵ１０４に接続する。
【００２３】
アドレス変換装置１０１は、ホスト側システム１０２からはデバイスとして見え、また半導体記憶装置１０３からはホストとして見える。ただし、アドレス変換装置１０１の動作形態はこの限りではなく、ＬＢＡを変換するフィルタとして動作する形態でもよい。
【００２４】
図２は、アドレス変換装置１０１が用いるアドレス変換テーブル２０７の変化を示す図である。また、図２では、（Ａ）、（Ｂ）、（Ｃ）の順に、時系列に従ってアドレス変換テーブル２０７を並べている。さらに、（Ｄ）は、後述する削除処理の説明で用いられる図である。
【００２５】
図２において、変換前ＬＢＡ２０１と変換後ＬＢＡ２０２は、アドレス変換装置１０１が変換するＬＢＡを示している。ここで、変換前ＬＢＡ２０１に示されたＬＡ＃１９、ＬＡ＃２０などは、変換前ＬＢＡ２０１のアドレスを意味している。
【００２６】
変換後ＬＢＡ２０２に示されたＬＢ＃３０、ＬＢ＃３１なども同様に、変換後ＬＢＡ２０２のアドレスを意味している。
【００２７】
さらに、ＰＢＡ２０３はフラッシュメモリコントローラ１１０が管理するフラッシュメモリ１１１のＰＢＡ２０３を示しており、Ｐ＃３０、Ｐ＃３１などはＰＢＡ２０３のアドレスを意味している。
【００２８】
従って、図２では、変化後ＬＢＡがＬＢ＃３０、ＬＢ＃３１、ＬＢ＃３２の順に変化していく様子が示されている。
【００２９】
このように、アドレス変換テーブル２０７は、変換前ＬＢＡ２０１と変換後ＬＢＡ２０２の接続情報を記録しており、不揮発性メモリ１０８に保存されていることにより保持される。
【００３０】
図３は、図１におけるアドレス変換装置１０１によって実行される書き込み処理の手順を示すフローチャートである。
【００３１】
図３の書き込み処理は、アドレス変換装置１０１のＣＰＵ１０４により実行される。また、図３においては、図２（Ａ）（Ｂ）（Ｃ）を参照して説明する。
【００３２】
図３において、ホスト側システム１０２から、ＬＡ＃２０への書き込みを受信すると（ステップＳ１０）、受信したデータをバッファ１０９に書き込む（ステップＳ１２）。そして、アドレス変換テーブル２０７内でＬＡ＃２０への書き込みが以前にあったか検索する（ステップＳ１４）。
【００３３】
次いで、アドレス変換テーブル２０７にＬＡ＃２０があるか否を判別し（ステップＳ１６）、アドレス変換テーブル２０７にＬＡ＃２０がないとき（ステップＳ１６でＮＯ）、変換後ＬＢＡ２０２の中から使用されていないアドレスを検索する（ステップＳ２０）。これは当然に同一の論理アドレスを未使用の論理アドレスに変換するための検索である。ここでは、図２（Ａ）のようにＬＢ＃３０が未使用として見つけられたとする。
【００３４】
次いで、ＬＡ＃２０に対してＬＢ＃３０を設定し（ステップＳ２２）、アドレス変換テーブル２０７にＬＡ＃２０に対してＬＢ＃３０を書き込む（ステップＳ２４）。これと同時に、アドレス変換テーブル２０７のＬＢ＃３０に、最新フラグをつける（ステップＳ２６）。
【００３５】
その後、バッファ１０９に書き込みデータを取り出し（ステップＳ２８）、フラッシュメモリコントローラ１１０にＬＢ＃３０への書き込みを指示して（ステップＳ３０）、本処理を終了する。これにより、フラッシュメモリコントローラ１１０によりウェアレベリングが実施され、ＬＢ＃３０への書き込みはＰ＃３０への書き込みとして、フラッシュメモリ１１１に記録される。
【００３６】
上記処理を実行した後、ホスト側システム１０２から、ＬＡ＃２０への書き込みが指示されたとする。ホスト側システム１０２から、ＬＡ＃２０への書き込みを受信すると（ステップＳ１０）、受信したデータをバッファ１０９に書き込む（ステップＳ１２）。そして、アドレス変換テーブル２０７内でＬＡ＃２０への書き込みが以前にあったか検索する（ステップＳ１４）。
【００３７】
今回のＬＡ＃２０へ書き込み指示は１回目ではないため、ＣＰＵ１０４はアドレス変換テーブル２０７にＬＡ＃２０を発見する（ステップＳ１６でＹＥＳ）。この後、「２回目の書き込み」で分岐し、ステップＳ４０に進む。
【００３８】
そして、変換後ＬＢＡ２０２の中から未使用のアドレスを検索する（ステップＳ４０）。ここでは、図２（Ｂ）のようにＬＢ＃３１が未使用として見つけられたとする。するとＬＡ＃２０に対してＬＢ＃３１を設定し（ステップＳ４２）、アドレス変換テーブル２０７に対してＬＢ＃３１を書き込む（ステップＳ４４）。これと同時に、最新フラグをアドレス変換テーブル２０７のＬＢ＃３１に変更する（ステップＳ４６）。その後、バッファ１０９に書き込みデータを取り出し（ステップＳ４８）、フラッシュメモリコントローラ１１０にＬＢ＃３１への書き込みを指示して（ステップＳ５０）、本処理を終了する。これにより、フラッシュメモリコントローラ１１０によりウェアレベリングが実施され、ＬＢ＃３１への書き込みはＰ＃３１への書き込みとして、フラッシュメモリ１１１に記録される。
【００３９】
上記処理を実行した後、ホスト側システム１０２から、ＬＡ＃２０への再々書き込みが指示されたとする。ホスト側システム１０２から、ＬＡ＃２０への書き込みを受信すると（ステップＳ１０）、受信したデータをバッファ１０９に書き込む（ステップＳ１２）。そして、アドレス変換テーブル２０７内でＬＡ＃２０への書き込みが以前にあったか検索する（ステップＳ１４）。
【００４０】
今回のＬＡ＃２０へ書き込み指示は１、２回目ではないため、ＣＰＵ１０４はアドレス変換テーブル２０７にＬＡ＃２０を発見する（ステップＳ１６でＹＥＳ）。この後、「３回目の書き込み」で分岐し、ステップＳ６０に進む。
【００４１】
そして、変換後ＬＢＡ２０２の中から未使用のアドレスを検索する（ステップＳ６０）。ここでは、図２（Ｃ）のようにＬＢ＃３２が未使用として見つけられたとする。するとＬＡ＃２０に対してＬＢ＃３２を設定し（ステップＳ６２）、アドレス変換テーブル２０７に対してＬＢ＃３２を書き込む（ステップＳ６４）。これと同時に、最新フラグをアドレス変換テーブル２０７のＬＢ＃３２に変更する（ステップＳ６６）。その後、バッファ１０９に書き込みデータを取り出し（ステップＳ６８）、フラッシュメモリコントローラ１１０にＬＢ＃３２への書き込みを指示して（ステップＳ７０）、本処理を終了する。これにより、フラッシュメモリコントローラ１１０によりウェアレベリングが実施され、ＬＢ＃３２への書き込みはＰ＃３２への書き込みとして、フラッシュメモリ１１１に記録される。
【００４２】
なお、上記の書き込み処理の説明では、簡単のためにＬＡ＃２０への２回目と３回目の書き込みを分けて説明したが、２回目と３回目はアドレス変換装置１０１が検索する変換後アドレスが異なるだけで、動作は変わらない。
【００４３】
つまり実際には、ＬＡ＃２０への初回書き込みと、ＬＡ＃２０への２回目以降の書き込みという分岐だけでよい。また、ＬＡ＃２０への３回目の書き込みまでしか記載していないが、ＬＡ＃２０への書き込みが何回であっても、２回目以降の書き込み処理は変わらない。
【００４４】
加えて、上記の書き込み例の説明ではＬＡ＃２０への書き込みしかしていないが、変換前ＬＢＡ２０１のその他のアドレスへの書き込みの場合でも、動作は変わらない。
【００４５】
続いて、図４を用いてホスト側システム１０２から読み出しが指示された場合について説明する。
【００４６】
上述した図３のフローチャートにおいて、ステップＳ２２、４２、６２が変換手段に対応する。ステップＳ２４、４４、６４が保持手段に対応する。ステップＳ３０、５０、７０が書き込み制御手段に対応する。
【００４７】
従って、図３の処理によれば、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換し（ステップＳ２２、４２、６２）、同一の論理アドレスと、当該同一の論理アドレスが変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持し（ステップＳ２４、４４、６４）、変換された論理アドレスに対応する物理アドレスにデータを書き込むように半導体記憶装置を制御する（ステップＳ３０、５０、７０）。
【００４８】
図４は、図１におけるアドレス変換装置１０１によって実行される読み出し処理の手順を示すフローチャートである。
【００４９】
図４の読み出し処理は、アドレス変換装置１０１のＣＰＵ１０４により実行される。また、図４は、ホスト側システム１０２からＬＡ＃２０の読み出しが指示された場合の手順を示している。さらに、以下に示されるフローチャートではホスト側システム１０２を単にホストと記載している。
【００５０】
図４において、ホスト側システム１０２からＬＡ＃２０の読み出し指示を受信すると（ステップＳ８０）、アドレス変換テーブル２０７内でＬＡ＃２０に対応するアドレスのうち、最新フラグがついているものを検索する（ステップＳ８２）。この説明では、ＬＢ＃３２に最新フラグがついているとする。
【００５１】
次いで、アドレス変換テーブル２０７で最新フラグがＬＢ＃３２についていると認識すると（ステップＳ８４）、フラッシュメモリコントローラ１１０にＬＢ＃３２の読み出しを指示する（ステップＳ８６）。
【００５２】
その後、フラッシュメモリコントローラ１１０がフラッシュメモリ１１１からＬＢ＃３２に対応するＰＢＡ２０３のデータを読み出し、ＣＰＵ１０４に送信することで、フラッシュメモリ１１１からＬＢ＃３２のデータを受信する（ステップＳ８８）。ＬＡ＃２０のデータとしてホスト側システム１０２に送信して（ステップＳ９０）、本処理を終了する。
【００５３】
上記の読み出し処理の説明では、ＬＡ＃２０への読み出ししかしていないが、変換前ＬＢＡ２０１へのその他のアドレスに対する読み出しであっても、動作は変わらない。
【００５４】
図５は、図１におけるアドレス変換装置１０１によって実行される削除処理の手順を示すフローチャートである。
【００５５】
図５の削除処理は、アドレス変換装置１０１のＣＰＵ１０４により実行される。また、ホスト側システム１０２から削除が指示された場合について説明する。
【００５６】
図５は、アドレス変換装置１０１を使用している形態で、ホスト側システム１０２からＬＡ＃２０の削除が指示された場合の手順を示している。
【００５７】
図５において、ＣＰＵ１０４がホスト側システム１０２から変換前ＬＢＡ  ＬＡ＃２０の削除指示を受信すると（ステップＳ９２）、アドレス変換テーブル２０７内でＬＡ＃２０に対応する変換後ＬＢＡ２０２を検索する（ステップＳ９４）。
【００５８】
次いで、アドレス変換テーブル２０７内でＬＡ＃２０に対応する変換後ＬＢＡ２０２があるか否か判別し（ステップＳ９６）、ＬＡ＃２０に対応する変換後ＬＢＡ２０２があるとき（ステップＳ９６でＹＥＳ）、フラッシュメモリコントローラ１１０に変換後ＬＢＡ２０の削除を指示し（ステップＳ９８）（削除制御手段）、アドレス変換テーブル２０７から削除した変換後ＬＢＡ２０２を削除する（ステップＳ１００）。アドレス変換テーブル２０７には、ＬＡ＃２０に対する複数の変換後ＬＢＡ２０２が登録されている可能性があるため、ＬＡ＃２０の対応アドレスを検索するステップＳ９４に戻る。
【００５９】
上記の削除ループを繰り返し、アドレス変換テーブル２０７内にＬＡ＃２０に対応する変換後ＬＢＡ２０２がなくなると、上記ステップＳ９６でＬＡ＃２０に対応する変換後ＬＢＡ２０２がなくなるので（ステップＳ９６でＮＯ）、本処理を終了する。
【００６０】
この結果、図２（Ｄ）のように、１つの変換前ＬＢＡへの削除指示が、複数の変換後アドレスへの削除指示に変換されることになる。
【００６１】
上記の削除処理の説明ではＬＡ＃２０への削除しかしていないが、変換前ＬＢＡ２０１に対するその他の変換後ＬＢＡ２０２に対する削除であっても、動作は変わらない。
【００６２】
加えて、上記の書き込み、読み出し、削除の動作の任意の組みあわせもまた、本発明の実施の形態として有効である。さらに、アドレス変換テーブル２０７を保存する場所として、不揮発性メモリ１０８を使用しているが、半導体記憶装置１０３内のフラッシュメモリ１１１に記憶してもよい。すなわち、アドレス変換テーブルを半導体記憶装置１０３に記憶することによりアドレス変換テーブルを保持するようにしてもよい。
【００６３】
図５の処理によれば同一の論理アドレスに対して記憶されたデータを削除する場合には、保持された同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように半導体記憶装置を制御するので（ステップＳ９４〜１００）、ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除することができる。
【００６４】
以上述べたように、本実施の形態によれば、ホスト側システム１０２と半導体記憶装置１０３に介在する形でアドレス変換装置１０１を接続することで、アドレス変換テーブル２０７によって、ウェアレベリング前の段階で書き込みに使用したアドレスのリスト化が行えるため、使用したすべてのアドレスを把握できる。
【００６５】
また、ホスト側システム１０２からの同一ＬＢＡに対する上書き指示を、このアドレス変換装置１０１が異なるＬＢＡへの書き込み指示に変換するため、半導体記憶装置１０３に対しては同一ＬＢＡに対する上書きが生じない。
【００６６】
つまり、半導体記憶装置１０３のフラッシュメモリコントローラ１１０は、上書きによるウェアレベリングでのＬＢＡとＰＢＡの再マップ処理を行わないため、使用したＰＢＡを見失うことがない。
【００６７】
以上より、使用したＰＢＡを全て把握できるため、フラッシュメモリ１１１にデータを残さずに全てのデータを削除することが可能となる。
【００６８】
また、アドレス変換装置１０１は半導体記憶装置１０３から独立して動作しているため、半導体記憶装置１０３が独自に行うウェアレベリングを阻害しない。また、インターフェイスが一致すれば、既存の半導体記憶装置１０３を使用することが可能であり、ユーザにとっては既存の半導体記憶装置１０３が流用できるメリットもある。
【００６９】
［第２の実施の形態］
第１の実施の形態では、アドレス変換装置１０１が半導体記憶装置１０３とホスト側システム１０２から独立して存在していた。だが、アドレス変換装置を構成するＣＰＵ、バッファ、不揮発性メモリは、フラッシュメモリコントローラも同等の構成を有している。
【００７０】
よって、アドレス変換機能をフラッシュメモリコントローラに持たせることも可能である。第２の実施の形態では、アドレス変換機能をフラッシュメモリコントローラ１１０に持たせた例について、差分のみ説明する。
【００７１】
図６は、本実施の形態に係る記憶制御装置を含む半導体記憶装置６０６の概略構成を示す図である。
【００７２】
図６において、フラッシュメモリコントローラ６１０は、ＣＰＵ６０１、起動ＲＯＭ６０４、不揮発性メモリ６０４、バッファ６０２、ホストＩ／Ｆ６０５を含む。
【００７３】
ＣＰＵ６０１は、ホストＩ／Ｆ６０５を介してホスト側システム１０２と接続されており、フラッシュメモリ６１１への読み書き・削除制御とウェアレベリングを行う。またＣＰＵ６０１は、起動ＲＯＭ６０４にも接続しており、ＣＰＵ６０１を起動するためのファームウェアを起動ＲＯＭ６０４から読み出す。従って、第２の実施形態では、フラッシュメモリコントローラ６１０が記憶制御装置に対応し、フラッシュメモリ６１１が半導体記憶装置に対応する。
【００７４】
またＣＰＵ６０１は、フラッシュメモリコントローラ不揮発性メモリ６０３にも接続しており、ＬＢＡの変換時に使用するアドレス変換テーブル２０７と、ウェアレベリングに使用するマップを保存する。またＣＰＵ６０１は、バッファ６０２にも接続しており、アドレス変換時に読み書きするデータを一時保存できる。
【００７５】
図７は、図６におけるフラッシュメモリコントローラ６１０により実行される書き込み処理の手順を示すフローチャートである。
【００７６】
図７の書き込み処理は、ＣＰＵ６０１により実行される。
【００７７】
図７において、ホスト側システム１０２から書き込むデータと変換前ＬＢＡへの書き込み指示を受信すると（ステップＳ１１０）、書き込む受信したデータバッファ６０２にデータを保存する（ステップＳ１１２）。
【００７８】
次いで、不揮発性メモリ６０３からアドレス変換テーブル２０７を読み出し（ステップＳ１１４）、変換前ＬＢＡを変換後ＬＢＡに変換し（ステップＳ１１６）、アドレス変換テーブル２０７を不揮発性メモリ６０３へ保存することで保持する（ステップＳ１１８）。
【００７９】
その後、変換後のＬＢＡに対して通常のウェアレベリングを実施し（ステップＳ１２０）、受信したデータをバッファ６０２から読み出し（ステップＳ１２２）、フラッシュメモリ１１１にデータを書き込み（ステップＳ１２４）、本処理を終了する。
【００８０】
この図７において、ステップＳ１１４からステップＳ１１８が、フラッシュメモリコントローラ６１０の機能に含まれるアドレス変換機能による処理である。
【００８１】
図８は、図６におけるフラッシュメモリコントローラ６１０により実行される読み出し処理の手順を示すフローチャートである。
【００８２】
図８の書き込み処理は、ＣＰＵ６０１により実行される。
【００８３】
図８において、ホスト側システム１０２から変換前ＬＢＡ２０１への読み出し指示を受信すると（ステップＳ１３０）、不揮発性メモリ６０３からアドレス変換テーブルを読み出し（ステップＳ１３２）、変換後ＬＢＡ２０２を得る。
【００８４】
次いで、不揮発性メモリ６０３からマップを読み出し（ステップＳ１３４）、ＰＢＡ２０３を得る。このＰＢＡ２０３を用いて、フラッシュメモリ１１１からデータを読み出し（ステップＳ１３６）、ホストにデータを送信して（ステップＳ１３８）、本処理を終了する。
【００８５】
この図８においては、ステップＳ１３２が、フラッシュメモリコントローラ１１０の機能に含まれるアドレス変換機能による処理である。
【００８６】
図９は、図６におけるフラッシュメモリコントローラ６１０により実行される削除処理の手順を示すフローチャートである。
【００８７】
図９の削除処理は、ＣＰＵ６０１により実行される。
【００８８】
ホスト側システム１０２から変換前ＬＢＡ２０２への削除指示を受信すると（ステップＳ１５０）、不揮発性メモリ６０３からアドレス変換テーブル２０７を読み出し（ステップＳ１５２）、変換後ＬＢＡ２０２を得る。
【００８９】
次いで、不揮発性メモリ６０３からマップを読み出し（ステップＳ１５４）、ＰＢＡ２０３を得る。このＰＢＡ２０３を用いて、フラッシュメモリ１１１からデータを削除する（ステップＳ１５６）。その後、マップを修正し、修正したマップを不揮発性メモリ６０３に保存する（ステップＳ１５８）。最後に、アドレス変換テーブル２０７も修正し、不揮発性メモリ６０３に保存することで保持する（ステップＳ１６０）。
【００９０】
この図９においては、ステップＳ１５２とステップＳ１５８が、フラッシュメモリコントローラ１１０に含まれるアドレス変換機能による処理である。
【００９１】
以上述べたように、本実施の形態によれば、フラッシュメモリコントローラ１１０にアドレス変換機能を持たせた場合であっても、削除時にフラッシュメモリ１１１にデータを残さずに全て削除することが可能である。また本実施の形態では、フラッシュメモリコントローラ１１０がアドレス変換を行うため、アドレス変換装置１０１を介在させる必要がなく、より簡易な構成で実現できる。
【００９２】
［第３の実施の形態］
第１の実施の形態では、アドレス変換装置が半導体記憶装置とホスト側システムから独立して存在していた。ここでアドレス変換装置を構成するＣＰＵとバッファは、ホスト側システムのＣＰＵとメモリで代替できる。
【００９３】
つまり、アドレス変換機能をソフトウェアで実現し、ホスト側システムに持たせることも可能である。第３の実施の形態では、アドレス変換機能をホスト側システムのソフトウェアで実現した例について、差分のみ説明する。
【００９４】
図１０は、本実施の形態に係る記憶制御装置を含むホスト側システム８１０の概略構成を示す図である。
【００９５】
図１０において、ＣＰＵ８０１は、デバイスＩ／Ｆ８０５を介して半導体記憶装置８１１と接続している。またＣＰＵ８０１は、起動ＲＯＭ８０４にも接続しており、ＣＰＵ８０１を起動するためのファームウェアを起動ＲＯＭ８０４から読み出す。
【００９６】
またＣＰＵ８０１は、不揮発性メモリ８０３にも接続しており、ＬＢＡの変換時に使用するアドレス変換テーブルを保存することで保持する。またＣＰＵ８０１は、メモリ８０２にも接続しており、アドレス変換時に読み書きするデータを一時保存できる。
【００９７】
本実施の形態におけるデータの書き込み時には、ＣＰＵ８０１が書き込みたい変換前ＬＢＡに対して、ＣＰＵ８０１が自身でアドレス変換処理を実施し、変換後ＬＢＡ２０２を得る。その後、ＣＰＵ８０１は、アドレス変換テーブル２０７を不揮発性メモリ８０３に保存することで保持し、デバイスＩ／Ｆ８０５を介して半導体記憶装置８１１に変換後ＬＢＡ２０２への書き込みを指示する。従って、第３の実施形態では、ホスト側システム８１０が記憶制御装置に対応する。
【００９８】
また本実施の形態におけるデータの読み出し時には、ＣＰＵ８０１が読み出したい変換前ＬＢＡ２０１に対し、不揮発性メモリ８０３からアドレス変換テーブル２０７を読み出して対応する変換後ＬＢＡ２０２を得る。その後、ＣＰＵ８０１は、デバイスＩ／Ｆ８０５を介して半導体記憶装置８１１に変換後ＬＢＡ２０２の読み出しを指示する。
【００９９】
さらに本実施の形態におけるデータの削除時には、ＣＰＵ８０１が削除したい変換前ＬＢＡに対し、不揮発性メモリ８０３からアドレス変換テーブル２０７に対応する変換後ＬＢＡ２０２を得る。その後、ＣＰＵ８０１は、デバイスＩ／Ｆ８０５を介して半導体記憶装置８１１に変換後ＬＢＡ２０２の削除を指示し、アドレス変換テーブル２０７からこの変換後ＬＢＡ２０２を削除する。
【０１００】
この削除処理を変換後ＬＢＡ２０２がなくなるまで実施した後、ＣＰＵ８０１はアドレス変換テーブル２０７から変換前ＬＢＡ２０１を削除して、アドレス変換テーブル２０７を不揮発性メモリ８０３に保存することで保持する。
【０１０１】
図１０では、簡単のためＣＰＵ８０１が半導体記憶装置８１１と接続しているが、チップセットやブリッジＩＣを介してもよい。
【０１０２】
以上述べたように、本実施の形態によれば、ホスト側システム８１０にアドレス変換機能を持たせた場合であっても、削除時にフラッシュメモリ１１１にデータを残さずに全て削除することが可能である。また本実施の形態では、ホスト側システム８１０がアドレス変換をソフトウェアで実現するため、追加のアドレス変換装置１０１を持たせたりする必要がなく、より簡易な構成で実現できる。
【０１０３】
さらに本実施の形態では、ホスト側システム８１０がアドレス変換をソフトウェアで実現するため、既存の半導体記憶装置８１１を使用することが可能であり、ユーザにとってはコストメリットとなる。
【０１０４】
［第４の実施の形態］
第１の実施の形態では、アドレス変換処理時において、使用していない変換後ＬＢＡの検索（図３のステップＳ２０など）が行われていた。しかし、予め特定の領域を確保しておけば、使用していない変換後ＬＢＡの検索が不要になる。本実施の形態では、図１に示した構成において、アドレス変換装置１０１のＣＰＵ１０４が予め変換後ＬＢＡ用の領域を確保している例について、差分のみ説明する。
【０１０５】
図１１は、図１におけるアドレス変換装置１０１により実行される書き込み処理の手順を示すフローチャートである。
【０１０６】
図１１の書き込み処理は、ＣＰＵ１０４により実行される。また、上述したように、図１１のフローチャートは、ＣＰＵ１０４が予め変換後ＬＢＡ２０２を確保している場合のフローチャートである。さらに、図１１において、ＣＰＵ１０４は、予め特定の領域のＬＢＡを確保し、アドレス変換テーブル２０７に変換後ＬＢＡ候補として記載しておく。
【０１０７】
図１１において、ホスト側システム１０２から変換前ＬＢＡ２０１への書き込み指示を受信する（ステップＳ１８０）。次いで、受信したデータをバッファ１０８に書き込み（ステップＳ１８２）、書き込み指示された変換前ＬＢＡ２０１が、アドレス変換テーブル２０７上の変換後ＬＢＡ候補と重複しないかを検索する（ステップＳ１８４）。
【０１０８】
次いで、アドレス変換テーブル２０７に重複があるか否か判別し（ステップＳ１８６）、変換前ＬＢＡ２０１と変換後ＬＢＡ候補に重複がないとき（ステップＳ１８６でＮＯ）、アドレス変換テーブル２０７の変換後ＬＢＡ候補から変換後ＬＢＡ２０２を選択し、設定する（ステップＳ１８８）。
【０１０９】
続いて、アドレス変換テーブル２０７に、選択した変換後ＬＢＡ２０２と変換前ＬＢＡ２０１の接続を書き込み（ステップＳ１９４）、バッファ１０８から受信したデータを取り出すと（ステップＳ１９６）、フラッシュメモリコントローラ１１０に変換後ＬＢＡ２０２への書き込みを指示して（ステップＳ１９８）、本処理を終了する。
【０１１０】
一方、アドレス変換テーブル２０７において、変換前ＬＢＡ２０１と変換後ＬＢＡ候補に重複があるとき（ステップＳ１８６のＹＥＳ）、アドレス変換テーブル２０７上の変換後ＬＢＡ候補から、変換前ＬＢＡ２０１と重複しない変換後ＬＢＡを選択し、変換後ＬＢＡ２０２として設定する（ステップＳ１８９）。
【０１１１】
その後、変換前ＬＢＡ２０１と重複している変換後ＬＢＡ候補をアドレス変換テーブル２０７から削除し（ステップＳ１９１）、誤って書き込まれることがないようにして、本処理を終了する。
【０１１２】
以上述べたように、本実施の形態によれば、予め変換後ＬＢＡ２０２を用意しておくことで、アドレス変換時にＣＰＵ１０４が変換後ＬＢＡ２０２を検索する必要がない。よって、処理時間を短くすることが可能となる。
【０１１３】
また、半導体記憶装置１０３に空き容量が少なくなった場合であっても、変化後ＬＢＡ２０２とその領域は別に用意してあるため、アドレス変換処理ができないといった障害を予防することができる。
【０１１４】
さらに、本実施の形態では、第１の実施の形態の応用として変換後ＬＢＡ候補が用意されている場合を記載したが、第２の実施の形態、及び第３の実施の形態でも同様の処理は可能である。
【０１１５】
（他の実施の形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１１６】
１０１  アドレス変換装置
１０２，８１０  ホスト側システム
１０３，６０６  半導体記憶装置
１０４，６０１，８０１  ＣＰＵ
１０５，６０５  ホストＩ／Ｆ
１０６，８０５  デバイスＩ／Ｆ
１０７，６０４，８０４  起動ＲＯＭ
１０８，６０２  バッファ
１０９，６０３，８０３  不揮発性メモリ
１１０，６１０  フラッシュメモリコントローラ
１１１，６１１  フラッシュメモリ
【図１】
2012234482.tif 000003
【図２】
2012234482.tif 000004
【図３】
2012234482.tif 000005
【図４】
2012234482.tif 000006
【図５】
2012234482.tif 000007
【図６】
2012234482.tif 000008
【図７】
2012234482.tif 000009
【図８】
2012234482.tif 000010
【図９】
2012234482.tif 000011
【図１０】
2012234482.tif 000012
【図１１】
2012234482.tif 000013