JP5687648B2 - 半導体記憶装置およびプログラム - Google Patents

半導体記憶装置およびプログラム Download PDF

Info

Publication number
JP5687648B2
JP5687648B2 JP2012058768A JP2012058768A JP5687648B2 JP 5687648 B2 JP5687648 B2 JP 5687648B2 JP 2012058768 A JP2012058768 A JP 2012058768A JP 2012058768 A JP2012058768 A JP 2012058768A JP 5687648 B2 JP5687648 B2 JP 5687648B2
Authority
JP
Japan
Prior art keywords
data
block
discarded
unit
semiconductor memory
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.)
Expired - Fee Related
Application number
JP2012058768A
Other languages
English (en)
Other versions
JP2013191174A (ja
Inventor
菅野 伸一
伸一 菅野
和弘 福冨
和弘 福冨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012058768A priority Critical patent/JP5687648B2/ja
Priority to US13/586,219 priority patent/US8990480B2/en
Publication of JP2013191174A publication Critical patent/JP2013191174A/ja
Application granted granted Critical
Publication of JP5687648B2 publication Critical patent/JP5687648B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

本発明の実施形態は、半導体記憶装置およびプログラムに関する。
SSD(Solid State Drive)をファイルシステムのキャッシュとして使用する技術が知られている。SSDでは、例えばNAND型の半導体記憶素子(NANDメモリ)などが用いられる。NANDメモリのような半導体記憶媒体を用いて記憶装置を構成する場合、転記処理(コンパクション、ガーベージコレクション)が行われる。
Brendan Gregg、"ZFS L2ARC"、 [online]、retrieved from the Internet: <URL: https://blogs.oracle.com/brendan/entry/test>
例えばNANDメモリを用いたSSDをHDD(ハードディスクドライブ)のキャッシュとして使用することにより、キャッシュを用いない場合より高速化が実現できる。しかし、NANDメモリでは、上記のように一般に処理負荷の大きい転記処理(コンパクション、ガーベージコレクション)が必要になるため、高速化の妨げになりうる。
実施形態の半導体記憶装置は、半導体記憶チップと、破棄部と、制御部と、を備える。半導体記憶チップは、複数のデータを記憶する。破棄部は、半導体記憶チップにデータが書き込まれた後、予め定められた条件が満たされた場合に、複数のデータのうち少なくとも一部のデータを破棄する。制御部は、破棄されたデータの読み出し要求に対して、データを読み出せないことを示す応答を出力する。
本実施形態にかかる半導体記憶装置のハードウェア構成図。 本実施形態にかかる半導体記憶装置の機能ブロック図。 本実施形態にかかるLBAテーブルのデータ構成例を示す図。 本実施形態にかかる論理アドレスと物理アドレスとの対応を示す図。 本実施形態にかかるビットベクタテーブルの構成例を示す図。 本実施形態におけるデータ破棄処理のフローチャート。 本実施形態の変形例のビットベクタテーブルの構成例を示す図。 本実施形態の変形例におけるデータ破棄処理のフローチャート。
以下に添付図面を参照して、この発明にかかる半導体記憶装置の好適な実施形態を詳細に説明する。
本実施形態にかかる半導体記憶装置は、予め定められた条件が満たされた場合に、NANDメモリに記憶されたデータを破棄する。例えば、コンパクションコストが高いことなどを条件としてデータを破棄するかが判断される。破棄したデータが記憶されていた領域は書き込み可能となるため、コンパクションの処理量を抑制しつつ、書き込み可能な領域を確保することが可能となる。また、コンパクションを実行することなく、破棄処理によってのみ書き込み可能な領域を確保しても良い。なお、データを破棄するとは、例えばデータに対してアクセスが要求されても、当該データに対してアクセスできない状態にすることを意味する。
まず、本実施形態にかかる半導体記憶装置のハードウェア構成について図1を用いて説明する。半導体記憶装置50は、プロセッサ51と、BootROM(Reed Only Memory)52と、SATA/SASインタフェース55と、メモリコントローラ53と、DRAM(Dynamic Random Access Memory)54と、NANDコントローラ57A〜57Fと、半導体記憶素子であるNAND58A〜58Fと、インタフェース59と、これらを接続するバス56とを備える。なお、NANDコントローラ57A〜57Fを各々区別する必要がない場合、単に、NANDコントローラ57と記載する場合がある。また、NAND58A〜58Fを各々区別する必要がない場合、単に、NAND58と記載する場合がある。
SATA/SASインタフェース55は、プロセッサ51の制御の下、半導体記憶装置50の上位装置であるホスト10との通信を制御する。インタフェース59は、プロセッサ51の制御の下、HDD20との通信を制御する。BootROM52は、電源の投入時に実行されるプログラムを記憶する。各種システムプログラムは、NAND58に記憶されている。
プロセッサ51は、電源の投入時にBootROM52からプログラムを読み出してこれを実行し、当該プログラムに従って、NAND58に記憶された各種システムプログラムをDRAM54に転送する。プロセッサ51は、DRAM54上のシステムプログラムを実行することにより、半導体記憶装置50全体を制御して、各種機能を実現させる。具体的には、プロセッサ51は、SATA/SASインタフェース55を介して、ホスト10から送信されたコマンドを解釈する。プロセッサ51は、解釈したコマンドに応じて、NAND58へのデータの書き込みやNAND58からのデータの読み出しを制御する。
メモリコントローラ53は、DRAM54の制御を行う。DRAM54は、各種データや各種プログラムを記憶する。本実施形態では、DRAM54は、後述する正引きテーブルと、ビットベクタテーブルとを記憶する。NANDコントローラ57は、NAND58の制御を行う。NANDコントローラ57は、誤り訂正回路を含んでもよい。
NAND58は、半導体記憶チップに相当し、例えば、NAND型のフラッシュメモリで用いられる記憶素子である。このようなNAND58は、ランダムな読み書きができず、ページと呼ばれる単位で読み書きが可能である。複数ページがまとまってブロックと呼ばれる単位の記憶領域を構成する。ここでは、1ページ4KB、64ページで1ブロックとする。ページサイズおよびブロック内のページ数はこれに限られるものではない。
1つのNAND58は、複数のブロックが集まって構成される。なお、本実施形態では、図1に示されるように、NAND58の数を6つとしている。NAND58の個数は6つに限られるものではない。各NAND58A〜58Fに対して各々1つのチャネル(CH0〜CH5)を割り当てる。なお、半導体記憶装置50は、ホスト10から書き込みが要求されたデータがページサイズより大きい場合にはこれを複数に分割し、分割したページ単位のデータ(分割データという)を各チャネルCH0〜CH5に割り当てて、書き込みを行う。
次に、半導体記憶装置50で実現される機能について図2を用いて説明する。半導体記憶装置50は、NAND58と、ホストインタフェース部60と、更新部63と、NAND制御部62と、破棄部65と、コンパクション部64と、記憶部61と、を備える。
ホストインタフェース部60の機能は、例えば、プロセッサ51がプログラムを実行することと、SATA/SASインタフェース55の機能とにより実現される。更新部63と、コンパクション部64と、破棄部65と、の各機能は、例えば、プロセッサ51がプログラムを実行することにより実現される。NAND制御部62の機能は、プロセッサ51がプログラムを実行することと、NANDコントローラ57の機能とにより実現される。記憶部61は、例えば、DRAM54により実現される。
ホストインタフェース部60は、ホスト10と半導体記憶装置50との通信を制御するインタフェースである。ホストインタフェース部60は、ホスト10から送信されたコマンドを受信する。
記憶部61は、正引きテーブル(LBAテーブル)と、ビットベクタテーブルとを記憶する。LBAテーブルは、書き込み対象データ(書き込みが要求されたデータ)の論理アドレスと、物理アドレスとの対応関係を示すテーブルである。物理アドレスとは、書き込み対象データが書き込まれるNAND58上の物理的な記憶位置を示す。このようなLBAテーブルは、ホスト10から指定された論理アドレスに対応する物理アドレスを特定する際に用いられる。
図3は、LBAテーブルのデータ構成を例示する図である。図3に示されるように、LBAテーブルは、インデックスに相当する論理アドレスに対応づけられる物理アドレスのエントリを含む。エントリは、ブロックを識別するブロック番号と、チャネル番号(CH)と、ページを識別するページ番号と、判別情報と、を含む。
書き込み対象データの論理アドレスは、ホスト10からのデータの書き込みの要求で指定される論理アドレスに基づいて各々計算される。ブロック番号は、例えば、先頭から順にブロックに付与される。チャネル番号は、論理アドレスに対応するデータが記憶されているブロック(物理ブロック)の存在するNAND58が、いずれのチャネルに接続されているかを示す。
ページ番号は、論理アドレスに対応するデータが、ブロック番号およびチャネル番号で特定されるブロックの中のいずれのページに記憶されているかを示す。なお、ページ番号は、例えば、物理アドレスの順に付与されてもよいし、ページの物理アドレス自体が付与されてもよい。このようなLBAテーブルは、書き込み対象データがNAND58に書き込まれるたびに更新される。
判別情報は、ページに記憶されたデータが、破棄可能なデータであるか、破棄不可能なデータであるかを示す情報である。例えば、判別情報が「1」であれば、そのページのデータが破棄可能であることを示し、「0」であれば、そのページのデータが破棄不可能であることを示す。
判別情報は、ホスト10が書き込みを要求するときに指定するように構成してもよい。例えば、ホスト10からのコマンドを識別するコマンド識別子によって、書き込むデータを破棄可能とするか否かを切り分けてもよい。また、ホスト10からのコマンド内に、書き込むデータを破棄可能とするか否かを示す情報を含めるように構成してもよい。後述するように、論理アドレスの範囲で破棄可能か否かを区別する場合は、ホスト10は、書き込み時に指定する論理アドレスによって、書き込むデータを破棄可能とするか否かを指定できる。
なお、ページに記憶されたデータが、破棄可能なデータであるか、破棄不可能なデータであるかを判別できれば、LBAテーブルに判別情報を記憶する方法以外の方法を用いてもよい。例えば、LBAテーブルとは異なるテーブルに、ページごとの判別情報を記憶するように構成してもよい。また、図4で説明するように、論理アドレスの範囲のうち一部の範囲(例えば読み出し領域)に含まれる論理アドレスに記憶されるデータを破棄可能なデータとする場合は、データの論理アドレスが、この一部の範囲に含まれるか否かを判断してもよい。
図4は、論理アドレスと物理アドレスとの対応の一例を示す図である。図4に示すように、論理アドレス(LBA)は、例えば書き込み領域401と読み出し領域402とを含む。書き込み領域401は、データの書き込みおよび読み出しが可能な論理アドレスの範囲を表す。読み出し領域402は、データの読み出しのみが可能な論理アドレスの範囲を表す。
例えば、書き込み領域401に含まれる論理アドレスに記憶されるデータを破棄不可能なデータとし、読み出し領域402に含まれる論理アドレスに記憶されるデータを破棄可能なデータとするように構成してもよい。NANDメモリを用いたSSDをHDDのキャッシュとして使用する場合、読み出し領域402に記憶したデータは、破棄したとしてもHDD内のデータとの不整合は生じない。ホスト10は、破棄の結果、データを読み出せなかったとしても、再度HDDから必要なデータを読み出せばよいためである。
なお、論理アドレスの全範囲が読み出し領域402となるように構成してもよい。この場合は、すべてのデータを破棄可能なデータとし、LBAテーブルに判別情報を記憶しなくてもよい。
図4では、論理アドレスの範囲(書き込み領域401+読み出し領域402)が、物理アドレス(PBA)の範囲(物理領域411)より大きい例が示されている。このような構成では、仮に新たに書き込むデータのための物理領域411が空いていない場合は、読み出し領域402の論理アドレスに対応するいずれかのデータを破棄して物理領域411を確保すればよい。一方、書き込み領域401のデータを保証するためには、物理領域411の大きさは、書き込み領域401の大きさ以上とする必要がある。
次に、ビットベクタテーブルの構成例について図5を用いて説明する。ビットベクタテーブルは、各チャネルの各ブロックについて、当該ブロックに含まれるページのうち有効なデータ(有効データ)が書き込まれているページ(有効ページという)がどのページかを2値でページ順に示すテーブルである。ページ毎に2値を示すものをビットベクタという。ビットベクタの値が「1」であれば、そのページが有効ページであることを示し、「0」であれば、そのページが有効ページではないページ(無効ページ)であることを示す。
初期状態では、ビットベクタの値は全て「0」である。本実施形態では、1ブロック当たり64ページとしたとき、対応するビットベクタは、1つのブロック当たり64個となる。図5に示されるように、ビットベクタテーブルは、インデックスに相当するブロック番号と、当該ブロック番号の付与されたブロックに各々含まれる各ページに対するビットベクタと、カウンタとを含む。
カウンタは、値が「1」であるビットベクタの総数を示す。ビットベクタの値が「1」であるページは有効ページである。従って、カウンタは、ブロック内の有効ページの数を示す(以降、有効ページ数カウンタと呼ぶ)。このような構成で、ビットベクタテーブルは、ホスト10からのデータの書き込みの要求があるたびに更新される。
図2に戻り、NAND制御部62は、NAND58に対するデータの書き込みおよび読み出しを制御する。NAND制御部62は、例えば、ホスト10から送信されたコマンドを受け取り、当該コマンドに従って、対応するNAND58にアクセスする。具体的には、データの書き込みが要求されている場合、NAND制御部62は、書き込み対象データをNAND58に書き込む。
この書き込みで、NAND制御部62は、対応するNAND58の消去済みのブロックのうち書き込みがまだ行われていないページ毎に書き込みの位置を順次示すよう追記ポインタを設定する。ブロックの消去とは、例えばブロックを構成する全てのビットの値を「1」にすることである。NAND制御部62は、追記ポインタによって示される位置のページに書き込み対象データを書き込む。その後、NAND制御部62は、新たなページの位置を示すよう追記ポインタを更新する。従って、追記ポインタは順次次の書き込み位置を示すようにその値が変化する。例えば、追記ポインタは、各チャネルで15ビットの物理アドレスによりブロックが識別され、1ブロックに64ページが含まれる場合、合計15+6=21ビットで構成される。
ここで、書き込み対象データのデータ構成の一例について説明する。NAND制御部62は、書き込み対象データ自体の誤りを検出して訂正するための誤り訂正符号(ページECCという)およびwriteコマンド(論理アドレスが指定されたデータの書き込みを要求するコマンド)によって指定された論理アドレスを、当該書き込み対象データに付加する。なお、ページECCには、データの誤りを検出するCRC符号等の符号と、データの誤りを訂正するECC符号等の符号とが含まれるものとする。ページECCにCRC符号も含む理由は、ECC符号によりデータの誤りを訂正できない場合は誤訂正の可能性もあるからである。
NAND制御部62は、ページECCおよび論理アドレスを付加した書き込み対象データを、追記ポインタにより示されるNAND58内のページに書き込む。なお、書き込み対象データはページ単位の大きさであるが、NAND58のページサイズは、書き込み対象データにページECCおよび論理アドレスが付加された全体の大きさに相当するものとする。また、各分割データの論理アドレスは、writeコマンドによって指定された論理アドレスに基づいてNAND制御部62が各々計算する。
また、NAND制御部62は、物理アドレスが指定された有効ページのデータ(有効データ)の読み出しが要求されている場合、当該物理アドレスを用いてNAND58内の当該物理アドレスに対応するページに書き込まれたデータを読み出す。
NAND制御部62は、破棄可能なデータと、破棄不可能なデータとを区別してNAND58に記憶する。例えば、NAND制御部62は、コマンド識別子等により破棄可能なデータであることが指定されたデータに対して、破棄可能であることを示す判別情報を含むLBAテーブルのエントリを記憶する。また例えば、NAND制御部62は、コマンド識別子等により破棄可能なデータであることが指定されたデータを、読み出し領域402に含まれる論理アドレスに記憶する。
また、NAND制御部62は、破棄部65によってデータが破棄された後、破棄されたデータの読み出しが要求された場合、要求されたデータを読み出せないことを示す応答を、ホストインタフェース部60を介して要求元(ホスト10)に出力する。
更新部63は、データの書き込み等に応じてLBAテーブルおよびビットベクタテーブルを更新する。例えば、更新部63は、writeコマンドがホスト10から受信された場合、LBAテーブルを参照すると共に、ビットベクタテーブルを更新し、さらに、LBAテーブルを更新する。
具体的には、更新部63は、まず、LBAテーブルを参照して、当該論理アドレスに対応する物理アドレス、すなわち、当該論理アドレスに対応するデータがどのブロックのページに書き込まれているかを検索する。当該論理アドレスに対応する物理アドレスがLBAテーブルに記憶されていない場合は、当該論理アドレスに対応するデータの書き込みは今回まで行われていないことになる。この場合、更新部63は、当該論理アドレスに対応するデータを書き込む対象のページに対するビットベクタの値を「1」にする。データを書き込む対象のページは、追記ポインタにより示される。また、更新部63は、当該ページの含まれるブロックに対応する有効ページ数カウンタの値を1インクリメントする。
一方、更新部63がLBAテーブルを参照したときに当該論理アドレスに対応する物理アドレスがLBAテーブルに記憶されている場合、当該論理アドレスに対応するデータの書き込みが以前に行われていることになる。この場合、今回のwriteコマンドにより、以前に書き込みが行われたデータを無効にする必要がある。このため、更新部63は、writeコマンドにより指定された論理アドレスで参照したLBAテーブルのエントリに記憶されている物理アドレスのページに対応するビットベクタの値を「0」にする。更新部63は、当該ページの存在するブロックの有効ページ数カウンタの値を1デクリメントする。また、更新部63は、書き込み対象データを書き込むページに対応するビットベクタの値を「1」にし、当該ページの存在するブロックの有効ページ数カウンタの値を1インクリメントする。
このようにデータの書き込みが行われる度に更新することで、ビットベクタテーブルと有効ページ数カウンタとは有効ページの位置およびその数を常に示している。最後に更新部63は、当該論理アドレスに対応するLBAテーブルのエントリに、書き込み対象データを書き込む先の物理アドレスを記録する。また、コンパクションが行われた場合には、更新部63は、LBAテーブルの物理アドレスを、有効データを移動した先のページの物理アドレスに更新する。
コンパクション部64は、コンパクションを実行する。コンパクションは、例えば、無効データ(無効ページ)を含むブロック内の有効データを集めて新たにフリーブロック(未使用ブロック)に書き直すことにより有効データを移動させるとともに、当該ブロックに対してデータの消去を行い、新たなフリーブロックを生成する処理である。フリーブロックとは、書き込みが可能な新規の消去済みのブロックである。有効データが破棄されている場合は、コンパクション部64は、有効データのうち、破棄されたデータを除く有効データを移動させてもよい。
コンパクションを行うことにより、書き込みが不能になったブロックが新たに書き込み可能になり、フリーブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックでも、書き込みがまだ行われていないページが含まれていれば、そのページに新たに書き込みが可能となる。
コンパクションは、例えばホスト10からwriteコマンドを受信したが、データを書き込むブロックが不足しているときに実行される。コンパクションが実行されるタイミングはこれに限られるものではない。例えば、ホスト10から要求がなくアイドル状態となっているときにコンパクションが実行されるように構成してもよい。
コンパクションの実行対象とするブロックは、従来から用いられている任意の方法で選択できる。例えば、無効ページ数が多いブロックを優先して選択する方法、データ書き込み後の経過時間が大きいブロックを優先して選択する方法、および、ランダムに選択する方法などを適用できる。
なお、後述するように、破棄部65が無効データまたは破棄されたデータのみを含むブロックを消去する機能を備えていれば、コンパクションは不要となる。すなわち、半導体記憶装置50はコンパクション部64を備えなくてもよい。
破棄部65が、データに対するアクセス数(読み出しアクセス数)が予め定められた閾値(第2閾値)以下のデータを対象として破棄を実行し、コンパクション部64が、第2閾値より大きいデータを対象としてコンパクションを実行するように構成してもよい。この場合、データごとにアクセス数を計測する計測部をさらに備えてもよい。このようにすることで、データに対するアクセス数(読み出しアクセス数)が多いデータを残すことができるため、キャッシュの効果を高めることができる。
破棄部65は、NAND58にデータが書き込まれた後、予め定められた条件が満たされた場合に、書き込まれたデータのうち、破棄可能なデータの少なくとも一部を破棄する。破棄部65は、破棄可能なデータであるか否かを、例えばLBAテーブルの判別情報で判断することができる。
条件は任意であるが、例えば、フリーブロックの個数が少なくなったこと、および、コンパクションを実行するコストが大きくなること、などの条件が適用できる。
破棄部65は、破棄処理の結果、無効データ、または、破棄されたデータのみを含むブロックが得られた場合、該ブロックを消去するように構成されてもよい。言い換えると、ブロックに含まれる有効データがすべて破棄可能なデータであり、かつ、破棄可能なデータをすべて破棄する場合に、該ブロックを消去するように構成されてもよい。これにより、コンパクションを実行しなくても書き込み可能な領域を確保することができる。
例えば破棄部65は、フリーブロックの個数が予め定められた閾値(第3閾値)より小さい場合に、フリーブロック以外のブロックのうち、破棄可能なデータのみが記憶されているブロックに記憶されているデータを破棄する。また、破棄部65は、データを破棄したブロックに対して消去処理を実行する。破棄部65は、例えばコンパクションと同様に、ブロックを構成する全てのビットの値を「1」にすることで消去処理を実行する。
また、破棄部65は、コンパクションの実行対象となるブロック(無効データを含むブロック)に記憶された有効データの個数が、予め定められた閾値(第1閾値)より大きい場合に、当該ブロックに記憶された有効データの全部または一部を破棄する。これにより、コンパクションで移動すべき有効データの個数を減らし、コンパクションの負荷を軽減できる。
また、破棄部65は、要求されたデータを読み出したときにエラーが発生した場合に、エラーが発生したデータを破棄する。これにより、例えば、エラー発生時の誤り訂正処理の実行頻度を低減することができる。
このように、本実施形態の半導体記憶装置50は、ホスト10からの指示に従うのではなく、自身の判断によって記憶されたデータを破棄する。このとき、半導体記憶装置50は、データを破棄したことをホスト10に通知する必要はない。従って、ホスト10は、データが破棄されたことを知らずに、当該データの読み出しを要求する場合がありうる。破棄されたデータの読み出しが要求された場合、NAND制御部62が、要求されたデータを読み出せないことを示す応答をホスト10に出力するため、ホスト10は、データが破棄されたことを知ることができる。なお、要求されたデータを読み出せないことを示す応答は、通常の読み出しエラーとしてもよいし、読み出しエラーとは区別できる情報として送信してもよい。読み出しエラーとは区別できる情報として送信される場合は、ホスト10は、リトライを回避するなどの処理が可能となる。
次に、このように構成された本実施形態にかかる半導体記憶装置50によるデータ破棄処理について図6を用いて説明する。図6は、本実施形態におけるデータ破棄処理の全体の流れを示すフローチャートである。
データ破棄処理は、破棄部65によって実行される。データ破棄処理は、どのようなタイミングで実行されてもよいが、例えば、コンパクション部64によりコンパクションの実行が必要となったときに実行される。
破棄部65は、破棄するか否かの判断対象とするブロックを選択する(ステップS101)。例えば、コンパクションの実行時にデータ破棄処理が実行される場合は、破棄部65は、コンパクションの実行対象として選択されたブロックを、破棄するかの判断対象として選択する。
破棄部65は、選択したブロックに含まれる未処理のページを選択する(ステップS102)。ページの選択方法は任意である。例えば、破棄部65は、ブロックの先頭から順にページを選択する。破棄部65は、選択したページが有効ページであるか否かを判断する(ステップS103)。有効ページである場合(ステップS103:Yes)、破棄部65は、当該有効ページが破棄可能なページであるか否かを判断する(ステップS104)。破棄部65は、例えば図3に示すようなLBAテーブルを参照し、選択したページのページ番号に対応する判別情報を用いて、破棄可能か否かを判断する。
破棄可能な場合(ステップS104:Yes)、破棄部65は、当該有効ページのデータを実際に破棄するか否かを判断する(ステップS105)。例えば、破棄部65は、ブロック内で破棄したデータ数が予め定められた規定数を超えた場合に、データは破棄しないと判断する。なお、判断基準はこれに限られるものではない。また、本ステップを実行せずに、破棄可能なページ(データ)をすべて破棄するように構成してもよい。
有効ページを破棄すると判断された場合(ステップS105:Yes)、破棄部65は、当該有効ページを破棄する(ステップS106)。例えば、破棄部65は、当該有効ページの論理アドレスに対応するLBAテーブルのエントリを、破棄されたことを示す情報に更新する。例えば、破棄部65は、当該有効ページの論理アドレスに対応するブロック番号を、破棄されたことを示す予め定められた値に更新する。これにより、例えば破棄されたデータの読み出しがホスト10から要求された場合、NAND制御部62は、要求されたデータの論理アドレスに対応するブロック番号を参照することにより、当該データが破棄されたことを判断できる。そして、NAND制御部62は、要求されたデータを読み出せないことを示す応答を、ホストインタフェース部60を介して要求元(ホスト10)に出力することができる。
有効ページを破棄しないと判断された場合(ステップS105:No)、および、有効ページが破棄可能でない場合(ステップS104:No)、コンパクション部64は、当該有効ページを、フリーブロックに移動させる(ステップS107)。更新部63は、LBAテーブルの物理アドレスを、有効データを移動した先のページの物理アドレスに更新する(ステップS108)。
ステップS103で有効ページでないと判断された場合(ステップS103:No)、ステップS106、および、ステップS108の後、破棄部65は、選択したブロック内のすべてのページを処理したか否かを判断する(ステップS109)。処理していない場合(ステップS109:No)、ステップS102に戻り処理を繰り返す。すべてのページを処理した場合(ステップS109:Yes)、データ破棄処理を終了する。
(変形例)
上記実施形態では、破棄可能なデータ(ページ)と、破棄不可能なデータ(ページ)とを同一のブロック内に混在できる例を説明した。変形例では、破棄可能なデータ(ページ)と、破棄不可能なデータ(ページ)とを同一のブロック内に混在できないように構成する。
図7は、変形例のビットベクタテーブルの構成例を示す図である。変形例のビットベクタテーブルは、ブロック番号およびビットベクタに対して、判別情報を対応づけて記憶する。このように、本変形例では、判別情報をページ単位ではなく、ブロック単位で記憶する。なお、変形例では、LBAテーブル内の判別情報は不要となる。
ブロックに記憶されたデータが、破棄可能なデータであるか、破棄不可能なデータであるかを判別できれば、ビットベクタテーブルに判別情報を記憶する方法以外の方法を用いてもよい。例えば、ビットベクタテーブルとは異なるテーブルに、ブロックごとの判別情報を記憶するように構成してもよい。
次に、本変形例でのデータ破棄処理について図8を用いて説明する。図8は、本変形例におけるデータ破棄処理の全体の流れを示すフローチャートである。
破棄部65は、破棄するか否かの判断対象とするブロックを選択する(ステップS201)。破棄部65は、選択したブロックが破棄可能なブロックであるか否かを判断する(ステップS202)。破棄部65は、例えば図7に示すようなビットベクタテーブルを参照し、選択したブロックのブロック番号に対応する判別情報を用いて、破棄可能か否かを判断する。
破棄可能な場合(ステップS202:Yes)、破棄部65は、当該ブロックのデータを実際に破棄するか否かを判断する(ステップS203)。本ステップを実行せずに、破棄可能なブロック(データ)をすべて破棄するように構成してもよい。
ブロックを破棄すると判断された場合(ステップS203:Yes)、破棄部65は、当該ブロックを破棄する(ステップS204)。例えば、破棄部65は、当該ブロック内の各データの論理アドレスに対応するLBAテーブルのエントリを、破棄されたことを示す情報に更新する。
ブロックを破棄しないと判断された場合(ステップS203:No)、および、ブロックが破棄可能でない場合(ステップS202:No)、コンパクション部64は、当該ブロック内の有効ページを、フリーブロックに移動させる(ステップS205)。更新部63は、LBAテーブルの物理アドレスを、有効データを移動した先のページの物理アドレスに更新し(ステップS206)、データ破棄処理を終了する。
以上説明したとおり、本実施形態によれば、上位(ホスト)からの指示に拠らずに自身の判断でデータを破棄することができる。これにより、コンパクションや誤り訂正処理などの負荷を低減し、処理の高速化が可能となる。
本実施形態にかかる半導体記憶装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
また、本実施形態にかかる半導体記憶装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる半導体記憶装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
また、本実施形態のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
本実施形態にかかる半導体記憶装置で実行されるプログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはCPU51(プロセッサ)が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10 ホスト
50 半導体記憶装置
51 プロセッサ
53 メモリコントローラ
54 DRAM
55 SATA/SASインタフェース
56 バス
57A〜57F NANDコントローラ
58A〜58F NAND
59 インタフェース
60 ホストインタフェース部
61 記憶部
62 NAND制御部
63 更新部
64 コンパクション部
65 破棄部

Claims (10)

  1. 複数のデータを記憶し、予め定められた大きさの記憶領域であるページを単位としてデータが書き込みおよび読み出しされ、複数の前記ページを含むブロックを単位としてデータが消去される半導体記憶チップと、
    前記半導体記憶チップに論理アドレスを指定して前記データが書き込まれた後、複数の前記データのうち少なくとも同一の論理アドレスに対して最後に書き込まれた前記データである有効データの一部を破棄する破棄部と、
    第1ブロックに記憶された前記有効データのうち、前記破棄部によって破棄されたデータを除く有効データを第2ブロックに書き込み、前記第1ブロックを消去するコンパクション部と、
    破棄された前記データの読み出し要求に対して、前記データを読み出せないことを示す応答を出力する制御部と、を備え、
    前記破棄部は、さらに、ブロックに含まれるすべての有効データを破棄する場合に、該ブロックを消去し、
    前記有効データには、破棄可能な第1データと破棄不可能な第2データが含まれており、
    前記制御部は、前記論理アドレスの範囲のうち、予め定められた第1範囲に前記第1データを記憶し、予め定められた第2範囲に前記第2データを記憶し、
    前記破棄部は、複数の前記第1データのうち少なくとも一部の前記第1データを破棄する、
    ことを特徴とする半導体記憶装置。
  2. 前記第2範囲は、前記半導体記憶チップの物理アドレスの範囲以下である、
    請求項1に記載の半導体記憶装置。
  3. 前記論理アドレスの範囲は、前記半導体記憶チップの物理アドレスの範囲より大きい、
    請求項1に記載の半導体記憶装置。
  4. 前記制御部は、破棄可能なデータとして書き込みが要求されたデータを前記第1データとして前記半導体記憶チップに記憶する、
    請求項1に記載の半導体記憶装置。
  5. 前記ページごとに、前記ページに記憶される前記データが前記第1データおよび前記第2データのいずれであるかを示す判別情報を記憶する記憶部をさらに備える、
    請求項1に記載の半導体記憶装置。
  6. 前記ブロックごとに、前記ブロックに記憶される前記データが前記第1データおよび前記第2データのいずれであるかを示す判別情報を記憶する記憶部をさらに備える、
    請求項1に記載の半導体記憶装置。
  7. 前記破棄部は、前記第1ブロックに記憶された前記有効データの個数が予め定められた第1閾値より大きい場合に、前記第1ブロックに記憶された前記有効データの少なくとも一部を破棄する、
    請求項1に記載の半導体記憶装置。
  8. 前記破棄部は、前記有効データのうち、当該有効データに対するアクセス数が予め定められた第2閾値以下の前記有効データを破棄し、
    前記コンパクション部は、前記有効データのうち、当該有効データに対するアクセス数が予め定められた第2閾値より大きい前記有効データを前記第2ブロックに書き込む、
    請求項1に記載の半導体記憶装置。
  9. 前記制御部は、破棄可能な前記データを表す第1データと、破棄不可能な前記データを表す第2データとを区別して前記ブロックに記憶し、
    前記破棄部は、データが書き込まれていない前記ブロックを表す未使用ブロックの個数が予め定められた第3閾値より小さい場合に、前記未使用ブロック以外の前記ブロックのうち、前記第1データのみが記憶されている前記ブロックに記憶されている前記第1データを破棄し、
    前記制御部は、前記第1データが破棄された前記ブロックと、前記未使用ブロックとのうちいずれかを、書き込みが要求されたデータの書き込み先のブロックとして割り当てる、
    請求項1に記載の半導体記憶装置。
  10. 複数のデータを記憶し、予め定められた大きさの記憶領域であるページを単位としてデータが書き込みおよび読み出しされ、複数の前記ページを含むブロックを単位としてデータが消去される半導体記憶チップを備える半導体記憶装置を、
    前記半導体記憶チップに論理アドレスを指定して前記データが書き込まれた後、複数の前記データのうち少なくとも同一の論理アドレスに対して最後に書き込まれた前記データである有効データの一部を破棄する破棄部と、
    第1ブロックに記憶された前記有効データのうち、前記破棄部によって破棄されたデータを除く有効データを第2ブロックに書き込み、前記第1ブロックを消去するコンパクション部と、
    破棄された前記データの読み出し要求に対して、前記データを読み出せないことを示す応答を出力する制御部、として機能させるためのプログラムであって、
    前記破棄部は、さらに、ブロックに含まれるすべての有効データを破棄する場合に、該ブロックを消去し、
    前記有効データには、破棄可能な第1データと破棄不可能な第2データが含まれており、
    前記制御部は、前記論理アドレスの範囲のうち、予め定められた第1範囲に前記第1データを記憶し、予め定められた第2範囲に前記第2データを記憶し、
    前記破棄部は、複数の前記第1データのうち少なくとも一部の前記第1データを破棄する、
    プログラム。
JP2012058768A 2012-03-15 2012-03-15 半導体記憶装置およびプログラム Expired - Fee Related JP5687648B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012058768A JP5687648B2 (ja) 2012-03-15 2012-03-15 半導体記憶装置およびプログラム
US13/586,219 US8990480B2 (en) 2012-03-15 2012-08-15 Semiconductor memory device and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012058768A JP5687648B2 (ja) 2012-03-15 2012-03-15 半導体記憶装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2013191174A JP2013191174A (ja) 2013-09-26
JP5687648B2 true JP5687648B2 (ja) 2015-03-18

Family

ID=49158771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012058768A Expired - Fee Related JP5687648B2 (ja) 2012-03-15 2012-03-15 半導体記憶装置およびプログラム

Country Status (2)

Country Link
US (1) US8990480B2 (ja)
JP (1) JP5687648B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477591B2 (en) 2012-07-06 2016-10-25 Seagate Technology Llc Memory access requests in hybrid memory system
US9529724B2 (en) 2012-07-06 2016-12-27 Seagate Technology Llc Layered architecture for hybrid controller
US9390020B2 (en) 2012-07-06 2016-07-12 Seagate Technology Llc Hybrid memory with associative cache
US9594685B2 (en) 2012-07-06 2017-03-14 Seagate Technology Llc Criteria for selection of data for a secondary cache
US9772948B2 (en) 2012-07-06 2017-09-26 Seagate Technology Llc Determining a criterion for movement of data from a primary cache to a secondary cache
US9430164B1 (en) * 2013-02-08 2016-08-30 Emc Corporation Memory efficient sanitization of a deduplicated storage system
US9317218B1 (en) * 2013-02-08 2016-04-19 Emc Corporation Memory efficient sanitization of a deduplicated storage system using a perfect hash function
US9785564B2 (en) 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
US9507719B2 (en) * 2013-08-20 2016-11-29 Seagate Technology Llc Garbage collection in hybrid memory system
US9367247B2 (en) 2013-08-20 2016-06-14 Seagate Technology Llc Memory access requests in hybrid memory system
US9362000B2 (en) 2014-09-05 2016-06-07 Kabushiki Kaisha Toshiba Memory system and management method thereof
US11334478B2 (en) 2014-10-30 2022-05-17 Kioxia Corporation Memory system and nonvolatile memory medium in which program is stored to optimize operating life
US10102118B2 (en) 2014-10-30 2018-10-16 Toshiba Memory Corporation Memory system and non-transitory computer readable recording medium
US11347637B2 (en) 2014-10-30 2022-05-31 Kioxia Corporation Memory system and non-transitory computer readable recording medium
JP2016122227A (ja) 2014-12-24 2016-07-07 株式会社東芝 メモリシステムおよび情報処理システム
JP6320322B2 (ja) * 2014-12-29 2018-05-09 東芝メモリ株式会社 キャッシュメモリ装置及びプログラム
JP6378111B2 (ja) * 2014-12-29 2018-08-22 東芝メモリ株式会社 情報処理装置及びプログラム
US10474569B2 (en) 2014-12-29 2019-11-12 Toshiba Memory Corporation Information processing device including nonvolatile cache memory and processor
US10331551B2 (en) * 2014-12-29 2019-06-25 Toshiba Memory Corporation Information processing device and non-transitory computer readable recording medium for excluding data from garbage collection
US10120793B2 (en) 2014-12-29 2018-11-06 Toshiba Memory Corporation Memory device and non-transitory computer readable recording medium
JP6482322B2 (ja) * 2014-12-29 2019-03-13 東芝メモリ株式会社 メモリ装置及びプログラム
US9558065B2 (en) 2015-02-02 2017-01-31 Kabushiki Kaisha Toshiba Memory system including cache
KR102291806B1 (ko) 2015-04-20 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR20160132204A (ko) * 2015-05-07 2016-11-17 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
JP2017097404A (ja) * 2015-11-18 2017-06-01 株式会社デンソー マイクロコンピュータ
CN106802867B (zh) * 2015-11-25 2020-12-01 建兴储存科技(广州)有限公司 固态储存装置及其数据编程方法
US10452532B2 (en) 2017-01-12 2019-10-22 Micron Technology, Inc. Directed sanitization of memory
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
US10754989B2 (en) * 2018-03-27 2020-08-25 International Business Machines Corporation Runtime self-correction for blockchain ledgers
US11263124B2 (en) 2018-08-03 2022-03-01 Micron Technology, Inc. Host-resident translation layer validity check
US10628076B1 (en) * 2018-10-01 2020-04-21 Micron Technology, Inc. Data erasure in memory sub-systems
US11226907B2 (en) 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11226894B2 (en) 2018-12-21 2022-01-18 Micron Technology, Inc. Host-based flash memory maintenance techniques

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63137335A (ja) * 1986-11-28 1988-06-09 Mita Ind Co Ltd 記憶装置のフアイル管理方法
US5555371A (en) * 1992-12-17 1996-09-10 International Business Machines Corporation Data backup copying with delayed directory updating and reduced numbers of DASD accesses at a back up site using a log structured array data storage
JPH08255110A (ja) * 1995-03-16 1996-10-01 Canon Inc メモリ管理方法
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
JP2001051904A (ja) * 1999-08-11 2001-02-23 Hitachi Ltd 不揮発性半導体メモリを用いた外部記憶装置
JP2001318829A (ja) * 2000-05-08 2001-11-16 Funai Electric Co Ltd フラッシュメモリの書換制御装置、及び、フラッシュメモリの書換制御方法
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
EP2225643B1 (en) * 2007-12-28 2020-05-06 Toshiba Memory Corporation Semiconductor storage device
JP4653817B2 (ja) 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
JP2010079856A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd 記憶装置およびメモリ制御方法
JP4551958B2 (ja) 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
JP5341584B2 (ja) 2009-03-17 2013-11-13 株式会社東芝 コントローラ、及びメモリシステム
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
JP5010723B2 (ja) 2010-09-22 2012-08-29 株式会社東芝 半導体記憶制御装置
JP5066241B2 (ja) 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system

Also Published As

Publication number Publication date
US8990480B2 (en) 2015-03-24
JP2013191174A (ja) 2013-09-26
US20130246688A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
JP5687648B2 (ja) 半導体記憶装置およびプログラム
US8392476B2 (en) Semiconductor memory device
JP5010723B2 (ja) 半導体記憶制御装置
US10747666B2 (en) Memory system
US9026764B2 (en) Memory system performing wear leveling based on deletion request
JP5066241B2 (ja) メモリシステム
KR100965051B1 (ko) 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
JP6817318B2 (ja) フラッシュメモリデバイスにアクセスするための方法および装置
US8423709B2 (en) Controller
US8996791B2 (en) Flash memory device, memory control device, memory control method, and storage system
US9201784B2 (en) Semiconductor storage device and method for controlling nonvolatile semiconductor memory
JP2011128998A (ja) 半導体記憶装置
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
CN106557428B (zh) 数据存储设备的映射系统选择
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
US10101925B2 (en) Data invalidation acceleration through approximation of valid data counts
KR101157763B1 (ko) Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치
US11886335B2 (en) Memory system and controlling method of performing rewrite operation at maximum rewrite speed
JP2013200726A (ja) 半導体記憶装置
US9003261B2 (en) Memory system
JP2014085794A (ja) 記憶装置およびメモリ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140812

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150122

R151 Written notification of patent or utility model registration

Ref document number: 5687648

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees