JP2012234482A - 記憶制御装置及びその制御方法、並びにプログラム - Google Patents
記憶制御装置及びその制御方法、並びにプログラム Download PDFInfo
- Publication number
- JP2012234482A JP2012234482A JP2011104365A JP2011104365A JP2012234482A JP 2012234482 A JP2012234482 A JP 2012234482A JP 2011104365 A JP2011104365 A JP 2011104365A JP 2011104365 A JP2011104365 A JP 2011104365A JP 2012234482 A JP2012234482 A JP 2012234482A
- Authority
- JP
- Japan
- Prior art keywords
- address
- logical address
- conversion
- data
- lba
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除する。
【解決手段】アドレス変換装置101は、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換し、同一の論理アドレスと、同一の論理アドレスが変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持し、変換された論理アドレスに対応する物理アドレスにデータを書き込むように半導体記憶装置103を制御し、同一の論理アドレスに対して記憶されたデータを削除する場合には、保持された同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように半導体記憶装置を制御する。
【選択図】図1
【解決手段】アドレス変換装置101は、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換し、同一の論理アドレスと、同一の論理アドレスが変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持し、変換された論理アドレスに対応する物理アドレスにデータを書き込むように半導体記憶装置103を制御し、同一の論理アドレスに対して記憶されたデータを削除する場合には、保持された同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように半導体記憶装置を制御する。
【選択図】図1
Description
本発明は、記憶制御装置及びその制御方法、並びにプログラムに関し、特に、フラッシュメモリに対する制御を行う記憶制御装置及びその制御方法、並びにプログラムに関する。
昨今の半導体記憶装置は、内部にフラッシュメモリを備えていて、フラッシュメモリコントローラによって制御が行われる。ここで使用されるフラッシュメモリはその内部構造から、書き込みと削除に回数制限がある。そのため、フラッシュメモリ上の特定部分に書き込みが集中しないように、負荷の均一化(ウェアレベリング)を適切に図ることが重要である。
このウェアレベリングは様々な手法が提案されているが、その手法としてフラッシュメモリへの書き込み時にアドレスを操作する手法がよく使用される。この手法では、フラッシュメモリコントローラが、フラッシュメモリの物理アドレス(PBA)とファイルシステム上の論理アドレス(LBA)の関連を示したマップを持っており、ホストからの書き込み指示に対して書き込み頻度の低いPBAを割り当て、マップ上でPBAとLBAの接続情報を書き換えている。
このウェアレベリングによれば、フラッシュメモリコントローラが持つマップには、一対のLBAとPBAごとの接続情報が保存されている。そのため、あるLBA(1)への書き込み指示がPBA(1)に書きこまれた後に、さらにホストから同じLBA(1)への上書き指示があった場合、フラッシュメモリコントローラはPBA(1)とは異なるPBA(2)に書き込む。そしてフラッシュメモリコントローラは、マップ上の接続情報を、LBA(1)に対応するものとしてPBA(2)に書き換える(例えば、特許文献1参照)。
上記ウェアレベリングによれば、ホストから同じLBAに対して複数回の書き込み指示があった場合、ウェアレベリングによってマップ上のLBAとPBAの接続情報が書き換えられることとなる。従って、マップに記録されている接続情報は一対だけであるため、LBAと直近の書き込みに使用したPBAの情報だけしか存在しない。
この状態において、ホストから同LBAの削除指示があった場合、マップの接続情報から直近のPBAに書き込んであるデータは削除できるが、同LBAと接続されていた以前のPBAのデータは削除されない。
このように、フラッシュメモリの負荷均一化のためウェアレベリングは欠かせないことではあるが、ウェアレベリングが実施されていると、フラッシュメモリ上にデータが残されたままになってしまうという課題がある。
本発明の目的は、ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除する記憶制御装置及びその制御方法、並びにプログラムを提供することにある。
上記目的を達成するために、請求項1の記憶制御装置は、半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置であって、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換手段と、前記同一の論理アドレスと、当該同一の論理アドレスが前記変換手段により変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持手段と、前記変換手段により変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御手段と、前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持手段により保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御手段とを備えたことを特徴とする。
本発明によれば、ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除する記憶制御装置及びその制御方法、並びにプログラムを提供することができる。
以下、本発明の実施の形態について図面を参照しながら詳述する。
なお、本実施の形態では、4種類の実施の形態が説明される。いずれの実施例においても、本実施の形態に係る記憶制御装置は、半導体記憶装置へのデータの書き込み、及び削除を、半導体記憶装置における物理アドレスと物理アドレスに対応させた論理アドレスとを用いて実行し、半導体記憶装置への書き込みはウェアレベリングにより記憶されるようになっている。
[第1の実施の形態]
図1は、本発明の実施の形態に係るアドレス変換装置101の概略構成を示す図である。
図1は、本発明の実施の形態に係るアドレス変換装置101の概略構成を示す図である。
図1において、アドレス変換装置(記憶制御装置)101は、ホスト側システム102と半導体記憶装置103に介在する。そしてアドレス変換装置101は、CPU104、起動ROM107、不揮発性メモリ109、バッファ108、ホスト側と接続するホストI/F105、及び半導体記憶装置103と接続するデバイスI/F106を含む。
また、半導体記憶装置103は、フラッシュメモリ111とフラッシュメモリコントローラ110とを含む。
CPU104は、ホストI/F105を介してホスト側システム102と、またデバイスI/F106を介して半導体記憶装置103と接続されており、ホスト側システム102と半導体記憶装置103の間で橋渡し処理を行う。
またCPU104は起動ROM107にも接続しており、CPU104を起動するためのファームウェアを起動ROM107から読み出す。さらにCPU104は不揮発性メモリ109にも接続しており、論理アドレス(以下、「LBA」という)の変換時に使用するアドレス変換テーブル(アドレス変換情報)を保存する。またCPU104はバッファ108にも接続しており、LBAの変換時に読み書きするデータをバッファ108に一時保存できる。
フラッシュメモリコントローラ110は、フラッシュメモリ111に接続されており、ホスト側システム102からの指示に従ってデータをフラッシュメモリ111に読み書きする。
またフラッシュメモリコントローラ110は、ウェアレベリングを実施しており、フラッシュメモリコントローラ110内の図示しないマップを用いて、LBAと物理アドレス(以下、「PBA」という)の変換・接続処理を行う。
本実施の形態では、フラッシュメモリコントローラ110はアドレス変換装置101のCPU104に接続する。
アドレス変換装置101は、ホスト側システム102からはデバイスとして見え、また半導体記憶装置103からはホストとして見える。ただし、アドレス変換装置101の動作形態はこの限りではなく、LBAを変換するフィルタとして動作する形態でもよい。
図2は、アドレス変換装置101が用いるアドレス変換テーブル207の変化を示す図である。また、図2では、(A)、(B)、(C)の順に、時系列に従ってアドレス変換テーブル207を並べている。さらに、(D)は、後述する削除処理の説明で用いられる図である。
図2において、変換前LBA201と変換後LBA202は、アドレス変換装置101が変換するLBAを示している。ここで、変換前LBA201に示されたLA#19、LA#20などは、変換前LBA201のアドレスを意味している。
変換後LBA202に示されたLB#30、LB#31なども同様に、変換後LBA202のアドレスを意味している。
さらに、PBA203はフラッシュメモリコントローラ110が管理するフラッシュメモリ111のPBA203を示しており、P#30、P#31などはPBA203のアドレスを意味している。
従って、図2では、変化後LBAがLB#30、LB#31、LB#32の順に変化していく様子が示されている。
このように、アドレス変換テーブル207は、変換前LBA201と変換後LBA202の接続情報を記録しており、不揮発性メモリ108に保存されていることにより保持される。
図3は、図1におけるアドレス変換装置101によって実行される書き込み処理の手順を示すフローチャートである。
図3の書き込み処理は、アドレス変換装置101のCPU104により実行される。また、図3においては、図2(A)(B)(C)を参照して説明する。
図3において、ホスト側システム102から、LA#20への書き込みを受信すると(ステップS10)、受信したデータをバッファ109に書き込む(ステップS12)。そして、アドレス変換テーブル207内でLA#20への書き込みが以前にあったか検索する(ステップS14)。
次いで、アドレス変換テーブル207にLA#20があるか否を判別し(ステップS16)、アドレス変換テーブル207にLA#20がないとき(ステップS16でNO)、変換後LBA202の中から使用されていないアドレスを検索する(ステップS20)。これは当然に同一の論理アドレスを未使用の論理アドレスに変換するための検索である。ここでは、図2(A)のようにLB#30が未使用として見つけられたとする。
次いで、LA#20に対してLB#30を設定し(ステップS22)、アドレス変換テーブル207にLA#20に対してLB#30を書き込む(ステップS24)。これと同時に、アドレス変換テーブル207のLB#30に、最新フラグをつける(ステップS26)。
その後、バッファ109に書き込みデータを取り出し(ステップS28)、フラッシュメモリコントローラ110にLB#30への書き込みを指示して(ステップS30)、本処理を終了する。これにより、フラッシュメモリコントローラ110によりウェアレベリングが実施され、LB#30への書き込みはP#30への書き込みとして、フラッシュメモリ111に記録される。
上記処理を実行した後、ホスト側システム102から、LA#20への書き込みが指示されたとする。ホスト側システム102から、LA#20への書き込みを受信すると(ステップS10)、受信したデータをバッファ109に書き込む(ステップS12)。そして、アドレス変換テーブル207内でLA#20への書き込みが以前にあったか検索する(ステップS14)。
今回のLA#20へ書き込み指示は1回目ではないため、CPU104はアドレス変換テーブル207にLA#20を発見する(ステップS16でYES)。この後、「2回目の書き込み」で分岐し、ステップS40に進む。
そして、変換後LBA202の中から未使用のアドレスを検索する(ステップS40)。ここでは、図2(B)のようにLB#31が未使用として見つけられたとする。するとLA#20に対してLB#31を設定し(ステップS42)、アドレス変換テーブル207に対してLB#31を書き込む(ステップS44)。これと同時に、最新フラグをアドレス変換テーブル207のLB#31に変更する(ステップS46)。その後、バッファ109に書き込みデータを取り出し(ステップS48)、フラッシュメモリコントローラ110にLB#31への書き込みを指示して(ステップS50)、本処理を終了する。これにより、フラッシュメモリコントローラ110によりウェアレベリングが実施され、LB#31への書き込みはP#31への書き込みとして、フラッシュメモリ111に記録される。
上記処理を実行した後、ホスト側システム102から、LA#20への再々書き込みが指示されたとする。ホスト側システム102から、LA#20への書き込みを受信すると(ステップS10)、受信したデータをバッファ109に書き込む(ステップS12)。そして、アドレス変換テーブル207内でLA#20への書き込みが以前にあったか検索する(ステップS14)。
今回のLA#20へ書き込み指示は1、2回目ではないため、CPU104はアドレス変換テーブル207にLA#20を発見する(ステップS16でYES)。この後、「3回目の書き込み」で分岐し、ステップS60に進む。
そして、変換後LBA202の中から未使用のアドレスを検索する(ステップS60)。ここでは、図2(C)のようにLB#32が未使用として見つけられたとする。するとLA#20に対してLB#32を設定し(ステップS62)、アドレス変換テーブル207に対してLB#32を書き込む(ステップS64)。これと同時に、最新フラグをアドレス変換テーブル207のLB#32に変更する(ステップS66)。その後、バッファ109に書き込みデータを取り出し(ステップS68)、フラッシュメモリコントローラ110にLB#32への書き込みを指示して(ステップS70)、本処理を終了する。これにより、フラッシュメモリコントローラ110によりウェアレベリングが実施され、LB#32への書き込みはP#32への書き込みとして、フラッシュメモリ111に記録される。
なお、上記の書き込み処理の説明では、簡単のためにLA#20への2回目と3回目の書き込みを分けて説明したが、2回目と3回目はアドレス変換装置101が検索する変換後アドレスが異なるだけで、動作は変わらない。
つまり実際には、LA#20への初回書き込みと、LA#20への2回目以降の書き込みという分岐だけでよい。また、LA#20への3回目の書き込みまでしか記載していないが、LA#20への書き込みが何回であっても、2回目以降の書き込み処理は変わらない。
加えて、上記の書き込み例の説明ではLA#20への書き込みしかしていないが、変換前LBA201のその他のアドレスへの書き込みの場合でも、動作は変わらない。
続いて、図4を用いてホスト側システム102から読み出しが指示された場合について説明する。
上述した図3のフローチャートにおいて、ステップS22、42、62が変換手段に対応する。ステップS24、44、64が保持手段に対応する。ステップS30、50、70が書き込み制御手段に対応する。
従って、図3の処理によれば、同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換し(ステップS22、42、62)、同一の論理アドレスと、当該同一の論理アドレスが変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持し(ステップS24、44、64)、変換された論理アドレスに対応する物理アドレスにデータを書き込むように半導体記憶装置を制御する(ステップS30、50、70)。
図4は、図1におけるアドレス変換装置101によって実行される読み出し処理の手順を示すフローチャートである。
図4の読み出し処理は、アドレス変換装置101のCPU104により実行される。また、図4は、ホスト側システム102からLA#20の読み出しが指示された場合の手順を示している。さらに、以下に示されるフローチャートではホスト側システム102を単にホストと記載している。
図4において、ホスト側システム102からLA#20の読み出し指示を受信すると(ステップS80)、アドレス変換テーブル207内でLA#20に対応するアドレスのうち、最新フラグがついているものを検索する(ステップS82)。この説明では、LB#32に最新フラグがついているとする。
次いで、アドレス変換テーブル207で最新フラグがLB#32についていると認識すると(ステップS84)、フラッシュメモリコントローラ110にLB#32の読み出しを指示する(ステップS86)。
その後、フラッシュメモリコントローラ110がフラッシュメモリ111からLB#32に対応するPBA203のデータを読み出し、CPU104に送信することで、フラッシュメモリ111からLB#32のデータを受信する(ステップS88)。LA#20のデータとしてホスト側システム102に送信して(ステップS90)、本処理を終了する。
上記の読み出し処理の説明では、LA#20への読み出ししかしていないが、変換前LBA201へのその他のアドレスに対する読み出しであっても、動作は変わらない。
図5は、図1におけるアドレス変換装置101によって実行される削除処理の手順を示すフローチャートである。
図5の削除処理は、アドレス変換装置101のCPU104により実行される。また、ホスト側システム102から削除が指示された場合について説明する。
図5は、アドレス変換装置101を使用している形態で、ホスト側システム102からLA#20の削除が指示された場合の手順を示している。
図5において、CPU104がホスト側システム102から変換前LBA LA#20の削除指示を受信すると(ステップS92)、アドレス変換テーブル207内でLA#20に対応する変換後LBA202を検索する(ステップS94)。
次いで、アドレス変換テーブル207内でLA#20に対応する変換後LBA202があるか否か判別し(ステップS96)、LA#20に対応する変換後LBA202があるとき(ステップS96でYES)、フラッシュメモリコントローラ110に変換後LBA20の削除を指示し(ステップS98)(削除制御手段)、アドレス変換テーブル207から削除した変換後LBA202を削除する(ステップS100)。アドレス変換テーブル207には、LA#20に対する複数の変換後LBA202が登録されている可能性があるため、LA#20の対応アドレスを検索するステップS94に戻る。
上記の削除ループを繰り返し、アドレス変換テーブル207内にLA#20に対応する変換後LBA202がなくなると、上記ステップS96でLA#20に対応する変換後LBA202がなくなるので(ステップS96でNO)、本処理を終了する。
この結果、図2(D)のように、1つの変換前LBAへの削除指示が、複数の変換後アドレスへの削除指示に変換されることになる。
上記の削除処理の説明ではLA#20への削除しかしていないが、変換前LBA201に対するその他の変換後LBA202に対する削除であっても、動作は変わらない。
加えて、上記の書き込み、読み出し、削除の動作の任意の組みあわせもまた、本発明の実施の形態として有効である。さらに、アドレス変換テーブル207を保存する場所として、不揮発性メモリ108を使用しているが、半導体記憶装置103内のフラッシュメモリ111に記憶してもよい。すなわち、アドレス変換テーブルを半導体記憶装置103に記憶することによりアドレス変換テーブルを保持するようにしてもよい。
図5の処理によれば同一の論理アドレスに対して記憶されたデータを削除する場合には、保持された同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように半導体記憶装置を制御するので(ステップS94〜100)、ウェアレベリングにより半導体記憶装置に記憶されたデータを適切に削除することができる。
以上述べたように、本実施の形態によれば、ホスト側システム102と半導体記憶装置103に介在する形でアドレス変換装置101を接続することで、アドレス変換テーブル207によって、ウェアレベリング前の段階で書き込みに使用したアドレスのリスト化が行えるため、使用したすべてのアドレスを把握できる。
また、ホスト側システム102からの同一LBAに対する上書き指示を、このアドレス変換装置101が異なるLBAへの書き込み指示に変換するため、半導体記憶装置103に対しては同一LBAに対する上書きが生じない。
つまり、半導体記憶装置103のフラッシュメモリコントローラ110は、上書きによるウェアレベリングでのLBAとPBAの再マップ処理を行わないため、使用したPBAを見失うことがない。
以上より、使用したPBAを全て把握できるため、フラッシュメモリ111にデータを残さずに全てのデータを削除することが可能となる。
また、アドレス変換装置101は半導体記憶装置103から独立して動作しているため、半導体記憶装置103が独自に行うウェアレベリングを阻害しない。また、インターフェイスが一致すれば、既存の半導体記憶装置103を使用することが可能であり、ユーザにとっては既存の半導体記憶装置103が流用できるメリットもある。
[第2の実施の形態]
第1の実施の形態では、アドレス変換装置101が半導体記憶装置103とホスト側システム102から独立して存在していた。だが、アドレス変換装置を構成するCPU、バッファ、不揮発性メモリは、フラッシュメモリコントローラも同等の構成を有している。
第1の実施の形態では、アドレス変換装置101が半導体記憶装置103とホスト側システム102から独立して存在していた。だが、アドレス変換装置を構成するCPU、バッファ、不揮発性メモリは、フラッシュメモリコントローラも同等の構成を有している。
よって、アドレス変換機能をフラッシュメモリコントローラに持たせることも可能である。第2の実施の形態では、アドレス変換機能をフラッシュメモリコントローラ110に持たせた例について、差分のみ説明する。
図6は、本実施の形態に係る記憶制御装置を含む半導体記憶装置606の概略構成を示す図である。
図6において、フラッシュメモリコントローラ610は、CPU601、起動ROM604、不揮発性メモリ604、バッファ602、ホストI/F605を含む。
CPU601は、ホストI/F605を介してホスト側システム102と接続されており、フラッシュメモリ611への読み書き・削除制御とウェアレベリングを行う。またCPU601は、起動ROM604にも接続しており、CPU601を起動するためのファームウェアを起動ROM604から読み出す。従って、第2の実施形態では、フラッシュメモリコントローラ610が記憶制御装置に対応し、フラッシュメモリ611が半導体記憶装置に対応する。
またCPU601は、フラッシュメモリコントローラ不揮発性メモリ603にも接続しており、LBAの変換時に使用するアドレス変換テーブル207と、ウェアレベリングに使用するマップを保存する。またCPU601は、バッファ602にも接続しており、アドレス変換時に読み書きするデータを一時保存できる。
図7は、図6におけるフラッシュメモリコントローラ610により実行される書き込み処理の手順を示すフローチャートである。
図7の書き込み処理は、CPU601により実行される。
図7において、ホスト側システム102から書き込むデータと変換前LBAへの書き込み指示を受信すると(ステップS110)、書き込む受信したデータバッファ602にデータを保存する(ステップS112)。
次いで、不揮発性メモリ603からアドレス変換テーブル207を読み出し(ステップS114)、変換前LBAを変換後LBAに変換し(ステップS116)、アドレス変換テーブル207を不揮発性メモリ603へ保存することで保持する(ステップS118)。
その後、変換後のLBAに対して通常のウェアレベリングを実施し(ステップS120)、受信したデータをバッファ602から読み出し(ステップS122)、フラッシュメモリ111にデータを書き込み(ステップS124)、本処理を終了する。
この図7において、ステップS114からステップS118が、フラッシュメモリコントローラ610の機能に含まれるアドレス変換機能による処理である。
図8は、図6におけるフラッシュメモリコントローラ610により実行される読み出し処理の手順を示すフローチャートである。
図8の書き込み処理は、CPU601により実行される。
図8において、ホスト側システム102から変換前LBA201への読み出し指示を受信すると(ステップS130)、不揮発性メモリ603からアドレス変換テーブルを読み出し(ステップS132)、変換後LBA202を得る。
次いで、不揮発性メモリ603からマップを読み出し(ステップS134)、PBA203を得る。このPBA203を用いて、フラッシュメモリ111からデータを読み出し(ステップS136)、ホストにデータを送信して(ステップS138)、本処理を終了する。
この図8においては、ステップS132が、フラッシュメモリコントローラ110の機能に含まれるアドレス変換機能による処理である。
図9は、図6におけるフラッシュメモリコントローラ610により実行される削除処理の手順を示すフローチャートである。
図9の削除処理は、CPU601により実行される。
ホスト側システム102から変換前LBA202への削除指示を受信すると(ステップS150)、不揮発性メモリ603からアドレス変換テーブル207を読み出し(ステップS152)、変換後LBA202を得る。
次いで、不揮発性メモリ603からマップを読み出し(ステップS154)、PBA203を得る。このPBA203を用いて、フラッシュメモリ111からデータを削除する(ステップS156)。その後、マップを修正し、修正したマップを不揮発性メモリ603に保存する(ステップS158)。最後に、アドレス変換テーブル207も修正し、不揮発性メモリ603に保存することで保持する(ステップS160)。
この図9においては、ステップS152とステップS158が、フラッシュメモリコントローラ110に含まれるアドレス変換機能による処理である。
以上述べたように、本実施の形態によれば、フラッシュメモリコントローラ110にアドレス変換機能を持たせた場合であっても、削除時にフラッシュメモリ111にデータを残さずに全て削除することが可能である。また本実施の形態では、フラッシュメモリコントローラ110がアドレス変換を行うため、アドレス変換装置101を介在させる必要がなく、より簡易な構成で実現できる。
[第3の実施の形態]
第1の実施の形態では、アドレス変換装置が半導体記憶装置とホスト側システムから独立して存在していた。ここでアドレス変換装置を構成するCPUとバッファは、ホスト側システムのCPUとメモリで代替できる。
第1の実施の形態では、アドレス変換装置が半導体記憶装置とホスト側システムから独立して存在していた。ここでアドレス変換装置を構成するCPUとバッファは、ホスト側システムのCPUとメモリで代替できる。
つまり、アドレス変換機能をソフトウェアで実現し、ホスト側システムに持たせることも可能である。第3の実施の形態では、アドレス変換機能をホスト側システムのソフトウェアで実現した例について、差分のみ説明する。
図10は、本実施の形態に係る記憶制御装置を含むホスト側システム810の概略構成を示す図である。
図10において、CPU801は、デバイスI/F805を介して半導体記憶装置811と接続している。またCPU801は、起動ROM804にも接続しており、CPU801を起動するためのファームウェアを起動ROM804から読み出す。
またCPU801は、不揮発性メモリ803にも接続しており、LBAの変換時に使用するアドレス変換テーブルを保存することで保持する。またCPU801は、メモリ802にも接続しており、アドレス変換時に読み書きするデータを一時保存できる。
本実施の形態におけるデータの書き込み時には、CPU801が書き込みたい変換前LBAに対して、CPU801が自身でアドレス変換処理を実施し、変換後LBA202を得る。その後、CPU801は、アドレス変換テーブル207を不揮発性メモリ803に保存することで保持し、デバイスI/F805を介して半導体記憶装置811に変換後LBA202への書き込みを指示する。従って、第3の実施形態では、ホスト側システム810が記憶制御装置に対応する。
また本実施の形態におけるデータの読み出し時には、CPU801が読み出したい変換前LBA201に対し、不揮発性メモリ803からアドレス変換テーブル207を読み出して対応する変換後LBA202を得る。その後、CPU801は、デバイスI/F805を介して半導体記憶装置811に変換後LBA202の読み出しを指示する。
さらに本実施の形態におけるデータの削除時には、CPU801が削除したい変換前LBAに対し、不揮発性メモリ803からアドレス変換テーブル207に対応する変換後LBA202を得る。その後、CPU801は、デバイスI/F805を介して半導体記憶装置811に変換後LBA202の削除を指示し、アドレス変換テーブル207からこの変換後LBA202を削除する。
この削除処理を変換後LBA202がなくなるまで実施した後、CPU801はアドレス変換テーブル207から変換前LBA201を削除して、アドレス変換テーブル207を不揮発性メモリ803に保存することで保持する。
図10では、簡単のためCPU801が半導体記憶装置811と接続しているが、チップセットやブリッジICを介してもよい。
以上述べたように、本実施の形態によれば、ホスト側システム810にアドレス変換機能を持たせた場合であっても、削除時にフラッシュメモリ111にデータを残さずに全て削除することが可能である。また本実施の形態では、ホスト側システム810がアドレス変換をソフトウェアで実現するため、追加のアドレス変換装置101を持たせたりする必要がなく、より簡易な構成で実現できる。
さらに本実施の形態では、ホスト側システム810がアドレス変換をソフトウェアで実現するため、既存の半導体記憶装置811を使用することが可能であり、ユーザにとってはコストメリットとなる。
[第4の実施の形態]
第1の実施の形態では、アドレス変換処理時において、使用していない変換後LBAの検索(図3のステップS20など)が行われていた。しかし、予め特定の領域を確保しておけば、使用していない変換後LBAの検索が不要になる。本実施の形態では、図1に示した構成において、アドレス変換装置101のCPU104が予め変換後LBA用の領域を確保している例について、差分のみ説明する。
第1の実施の形態では、アドレス変換処理時において、使用していない変換後LBAの検索(図3のステップS20など)が行われていた。しかし、予め特定の領域を確保しておけば、使用していない変換後LBAの検索が不要になる。本実施の形態では、図1に示した構成において、アドレス変換装置101のCPU104が予め変換後LBA用の領域を確保している例について、差分のみ説明する。
図11は、図1におけるアドレス変換装置101により実行される書き込み処理の手順を示すフローチャートである。
図11の書き込み処理は、CPU104により実行される。また、上述したように、図11のフローチャートは、CPU104が予め変換後LBA202を確保している場合のフローチャートである。さらに、図11において、CPU104は、予め特定の領域のLBAを確保し、アドレス変換テーブル207に変換後LBA候補として記載しておく。
図11において、ホスト側システム102から変換前LBA201への書き込み指示を受信する(ステップS180)。次いで、受信したデータをバッファ108に書き込み(ステップS182)、書き込み指示された変換前LBA201が、アドレス変換テーブル207上の変換後LBA候補と重複しないかを検索する(ステップS184)。
次いで、アドレス変換テーブル207に重複があるか否か判別し(ステップS186)、変換前LBA201と変換後LBA候補に重複がないとき(ステップS186でNO)、アドレス変換テーブル207の変換後LBA候補から変換後LBA202を選択し、設定する(ステップS188)。
続いて、アドレス変換テーブル207に、選択した変換後LBA202と変換前LBA201の接続を書き込み(ステップS194)、バッファ108から受信したデータを取り出すと(ステップS196)、フラッシュメモリコントローラ110に変換後LBA202への書き込みを指示して(ステップS198)、本処理を終了する。
一方、アドレス変換テーブル207において、変換前LBA201と変換後LBA候補に重複があるとき(ステップS186のYES)、アドレス変換テーブル207上の変換後LBA候補から、変換前LBA201と重複しない変換後LBAを選択し、変換後LBA202として設定する(ステップS189)。
その後、変換前LBA201と重複している変換後LBA候補をアドレス変換テーブル207から削除し(ステップS191)、誤って書き込まれることがないようにして、本処理を終了する。
以上述べたように、本実施の形態によれば、予め変換後LBA202を用意しておくことで、アドレス変換時にCPU104が変換後LBA202を検索する必要がない。よって、処理時間を短くすることが可能となる。
また、半導体記憶装置103に空き容量が少なくなった場合であっても、変化後LBA202とその領域は別に用意してあるため、アドレス変換処理ができないといった障害を予防することができる。
さらに、本実施の形態では、第1の実施の形態の応用として変換後LBA候補が用意されている場合を記載したが、第2の実施の形態、及び第3の実施の形態でも同様の処理は可能である。
(他の実施の形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
101 アドレス変換装置
102,810 ホスト側システム
103,606 半導体記憶装置
104,601,801 CPU
105,605 ホストI/F
106,805 デバイスI/F
107,604,804 起動ROM
108,602 バッファ
109,603,803 不揮発性メモリ
110,610 フラッシュメモリコントローラ
111,611 フラッシュメモリ
102,810 ホスト側システム
103,606 半導体記憶装置
104,601,801 CPU
105,605 ホストI/F
106,805 デバイスI/F
107,604,804 起動ROM
108,602 バッファ
109,603,803 不揮発性メモリ
110,610 フラッシュメモリコントローラ
111,611 フラッシュメモリ
Claims (6)
- 半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置であって、
同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換手段と、
前記同一の論理アドレスと、当該同一の論理アドレスが前記変換手段により変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持手段と、
前記変換手段により変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御手段と、
前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持手段により保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御手段と
を備えたことを特徴とする記憶制御装置。 - 前記変換手段は、前記同一の論理アドレスを未使用の論理アドレスに変換することを特徴とする請求項1記載の記憶制御装置。
- 前記半導体記憶装置における未使用の領域を予め確保しておき、
前記変換手段は、前記同一の論理アドレスを前記未使用の領域に属する物理アドレスに対応する論理アドレスに変換することを特徴とする請求項1記載の記憶制御装置。 - 前記保持手段は、前記アドレス変換情報を前記半導体記憶装置に記憶することにより前記アドレス変換情報を保持することを特徴とする請求項1〜3のいずれか1項に記載の記憶制御装置。
- 半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置の制御方法であって、
同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換ステップと、
前記同一の論理アドレスと、当該同一の論理アドレスが前記変換ステップにより変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持ステップと、
前記変換ステップにより変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御ステップと、
前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持ステップに保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御ステップと
を備えたことを特徴とする制御方法。 - 半導体記憶装置へのデータの書き込み、及び削除を、前記半導体記憶装置における物理アドレスと前記物理アドレスに対応させた論理アドレスとを用いて実行する記憶制御装置の制御方法をコンピュータに実行させるためのプログラムであって、
前記制御方法は、
同一の論理アドレスに対してデータを書き込みする度に、その都度異なる論理アドレスに変換する変換ステップと、
前記同一の論理アドレスと、当該同一の論理アドレスが前記変換ステップにより変換された複数の論理アドレスとを対応付けたアドレス変換情報を保持する保持ステップと、
前記変換ステップにより変換された論理アドレスに対応する物理アドレスにデータを書き込むように前記半導体記憶装置を制御する書き込み制御ステップと、
前記同一の論理アドレスに対して記憶されたデータを削除する場合には、前記保持ステップに保持された前記同一の論理アドレスが変換された複数の論理アドレスに対応する物理アドレスに記憶されたデータを削除するように前記半導体記憶装置を制御する削除制御ステップと
を備えたことを特徴とするプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011104365A JP2012234482A (ja) | 2011-05-09 | 2011-05-09 | 記憶制御装置及びその制御方法、並びにプログラム |
US13/466,484 US20120290772A1 (en) | 2011-05-09 | 2012-05-08 | Storage control apparatus for controlling data writing and deletion to and from semiconductor storage device, and control method and storage medium therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011104365A JP2012234482A (ja) | 2011-05-09 | 2011-05-09 | 記憶制御装置及びその制御方法、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012234482A true JP2012234482A (ja) | 2012-11-29 |
Family
ID=47142672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011104365A Withdrawn JP2012234482A (ja) | 2011-05-09 | 2011-05-09 | 記憶制御装置及びその制御方法、並びにプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120290772A1 (ja) |
JP (1) | JP2012234482A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015038698A (ja) * | 2013-08-19 | 2015-02-26 | 富士通株式会社 | 半導体記憶装置および半導体記憶装置の制御方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140056657A (ko) * | 2012-10-30 | 2014-05-12 | 삼성전자주식회사 | 메인 메모리를 구비한 컴퓨터 시스템 및 그것의 제어 방법 |
CN104932833B (zh) * | 2014-03-21 | 2018-07-31 | 华为技术有限公司 | 磨损均衡方法、装置及存储设备 |
WO2018020593A1 (ja) * | 2016-07-27 | 2018-02-01 | 株式会社日立製作所 | 計算機システムおよびデータ格納方法 |
JP6779821B2 (ja) * | 2017-03-24 | 2020-11-04 | キオクシア株式会社 | メモリシステム及びデータの読み出し方法 |
JP6727365B1 (ja) * | 2019-03-27 | 2020-07-22 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
JPH11203191A (ja) * | 1997-11-13 | 1999-07-30 | Seiko Epson Corp | 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体 |
JP2000122935A (ja) * | 1998-10-20 | 2000-04-28 | Sanyo Electric Co Ltd | 不揮発性メモリのアドレス変換装置 |
KR100704998B1 (ko) * | 1999-02-26 | 2007-04-09 | 소니 가부시끼 가이샤 | 기록방법, 관리방법 및 기록장치 |
JP2001067258A (ja) * | 1999-08-25 | 2001-03-16 | Mitsubishi Electric Corp | フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法 |
US6948026B2 (en) * | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US7752381B2 (en) * | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
US7509474B2 (en) * | 2005-06-08 | 2009-03-24 | Micron Technology, Inc. | Robust index storage for non-volatile memory |
JP4688584B2 (ja) * | 2005-06-21 | 2011-05-25 | 株式会社日立製作所 | ストレージ装置 |
US20070208904A1 (en) * | 2006-03-03 | 2007-09-06 | Wu-Han Hsieh | Wear leveling method and apparatus for nonvolatile memory |
US8151060B2 (en) * | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
US7685399B2 (en) * | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
WO2009016832A1 (ja) * | 2007-07-31 | 2009-02-05 | Panasonic Corporation | 不揮発性記憶装置および不揮発性記憶システム |
KR101473344B1 (ko) * | 2007-08-24 | 2014-12-17 | 삼성전자 주식회사 | 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법 |
JP4164118B1 (ja) * | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
US8819385B2 (en) * | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
KR20110046243A (ko) * | 2009-10-27 | 2011-05-04 | 삼성전자주식회사 | 사용자 장치 및 그것의 맵핑 데이터 관리 방법 |
-
2011
- 2011-05-09 JP JP2011104365A patent/JP2012234482A/ja not_active Withdrawn
-
2012
- 2012-05-08 US US13/466,484 patent/US20120290772A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015038698A (ja) * | 2013-08-19 | 2015-02-26 | 富士通株式会社 | 半導体記憶装置および半導体記憶装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120290772A1 (en) | 2012-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9928167B2 (en) | Information processing system and nonvolatile storage unit | |
US9817588B2 (en) | Memory device and operating method of same | |
JP5597666B2 (ja) | 半導体記憶装置、情報処理システムおよび制御方法 | |
JP5236469B2 (ja) | 大容量データ記憶システム | |
JP5377182B2 (ja) | 制御装置 | |
US20150046670A1 (en) | Storage system and writing method thereof | |
JP2012234482A (ja) | 記憶制御装置及びその制御方法、並びにプログラム | |
JP6034183B2 (ja) | 半導体記憶装置 | |
JP2014044490A (ja) | ホスト装置及びメモリデバイス | |
JP2008033788A (ja) | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 | |
US10089225B2 (en) | Improving garbage collection efficiency by reducing page table lookups | |
US9811274B2 (en) | Storage control apparatus and copy control method | |
JP2018504692A (ja) | トランザクション処理方法及び装置、並びにコンピュータシステム | |
US20110320689A1 (en) | Data Storage Devices and Data Management Methods for Processing Mapping Tables | |
US20150074336A1 (en) | Memory system, controller and method of controlling memory system | |
KR20160114337A (ko) | 메모리 시스템 및 이의 동작 방법 | |
JP2008299848A (ja) | 不揮発性メモリのデータ処理装置及びその処理方法 | |
JP2008159013A (ja) | 半導体記憶装置 | |
US11269771B2 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
US20080320062A1 (en) | Method of transferring file system, file system transference program, and file system transference device | |
JP2011175632A (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
US8527733B2 (en) | Memory system | |
US11003577B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program of access control with respect to semiconductor device memory | |
JP6050794B2 (ja) | フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置 | |
JP6618941B2 (ja) | 管理装置、情報処理装置および管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140805 |