JP2011090496A - 半導体記憶装置および制御方法 - Google Patents
半導体記憶装置および制御方法 Download PDFInfo
- Publication number
- JP2011090496A JP2011090496A JP2009243480A JP2009243480A JP2011090496A JP 2011090496 A JP2011090496 A JP 2011090496A JP 2009243480 A JP2009243480 A JP 2009243480A JP 2009243480 A JP2009243480 A JP 2009243480A JP 2011090496 A JP2011090496 A JP 2011090496A
- Authority
- JP
- Japan
- Prior art keywords
- page
- data
- group
- unnecessary
- logical address
- 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.)
- Pending
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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】Trimコマンドに対応する半導体記憶装置を提供する。
【解決手段】チップ内の各ブロックを、複数ページから成る第1ページ集合と、複数ページから成る第2ページ集合に分割する。論理アドレス空間を複数グループに分割し、各グループを複数ラインに分割する。複数チップの各々から所定数のブロックを集めてブロックユニットを複数組作成し、所定数のブロックユニットを標準ブロックユニット、それ以外を予備ブロックユニットとする。各標準ブロックユニットには1つのグループを対応付ける。標準ブロックユニットを構成する複数ブロックの第1ページ集合のページに対応グループのデータを格納し、第2ページ集合の未書き込みページはそのグループデータの更新データを記録する。メモリコントローラは、Trimコマンドに応じて、その論理アドレスを含むグループとその不要なラインとを特定し、そのライン番号をライン管理テーブルに記録する。
【選択図】図6A
【解決手段】チップ内の各ブロックを、複数ページから成る第1ページ集合と、複数ページから成る第2ページ集合に分割する。論理アドレス空間を複数グループに分割し、各グループを複数ラインに分割する。複数チップの各々から所定数のブロックを集めてブロックユニットを複数組作成し、所定数のブロックユニットを標準ブロックユニット、それ以外を予備ブロックユニットとする。各標準ブロックユニットには1つのグループを対応付ける。標準ブロックユニットを構成する複数ブロックの第1ページ集合のページに対応グループのデータを格納し、第2ページ集合の未書き込みページはそのグループデータの更新データを記録する。メモリコントローラは、Trimコマンドに応じて、その論理アドレスを含むグループとその不要なラインとを特定し、そのライン番号をライン管理テーブルに記録する。
【選択図】図6A
Description
本発明は、半導体記憶装置に関し、特に不揮発性メモリの格納データの更新時の技術に関する。
従来、フラッシュメモリを記憶媒体とする半導体記憶装置にとって、セクタやブロック上にある全てのユーザデータ、すなわち予備ブロック等を除き論理アドレスにマップされているブロックの格納データは、全て有用なものとして管理されてきた。ユーザが消去したファイルが占有していたクラスタに割り当てられていたセクタやブロックも、記憶装置は有用なデータが記録されているものとしてその内容を引き続き維持する。ガベジコレクションや新規データの書き込みの際にブロック消去をする必要が生じた場合も、記憶装置はそのデータをそのまま書き戻す。これは記憶装置にとって、性能上および製品寿命上のオーバヘッドの一因になる。記憶装置自身は、セクタやブロックがOSやユーザから見て、使われているかどうかを知り得ない。しかし、OSからそのセクタやブロックが使われていない、そのセクタやブロックに書かれているデータが必要とされていないと記憶装置が分かれば、そのデータを書き戻す必要はなくなる。また、その際に使われないメモリ領域を利用することで、ウェアレベリング等の自由度が大幅に増す。
そこで、OSから記憶装置に不要な論理アドレス範囲を教える手段として提案されているのがTrimコマンドである。Trimコマンドは、OSから記憶装置に指定アドレス範囲がOSにとって不要になったことを通知する。不要になったことを通知するのみで、不要になったアドレス部分をどう扱うかは記憶装置内部のメモリコントローラに委ねる。ただし、その指定アドレス範囲に対して、Trimコマンド後にデータが書き込まれた場合、それは再び有用データとして扱う。Trimコマンドは、2009年5月現在、ATA(AT Attachment)の標準化を行なうINCITS(米国規格協会ANSIの諮問機関)のT13技術委員会に、「Data Set Management Commands Proposal for ATA8-ACS2」として提案されている。Data Set Management Commandsとは、OS側から記憶装置側へさまざまなデータ属性を伝えるためのコマンドセットを指し、その最初の標準として具体化しているのが、不要という属性を通知するTrimコマンドである。なお、Trimコマンドに未対応の記憶装置はそのコマンドを無視し、不要データも有用データとして維持する。
一方、特許文献1には、以下のような制御方式を特徴として持つ半導体記憶装置が記載されている。すなわち、半導体記憶装置内部のメモリコントローラが、同じく内部のフラッシュメモリチップ内の各ブロックを複数ページから成る第1ページ集合と、複数ページから成る第2ページ集合に分割する。一方、装置外部から見える論理アドレス空間を複数グループに分割し、各グループを複数ラインに分割する。そして、複数チップの各々から所定数のブロックを集めてブロックユニットを複数組作成し、このうち所定数のブロックユニットを標準ブロックユニット、それ以外を予備ブロックユニットとして管理する。各標準ブロックユニットには1つのグループを対応付け、標準ブロックユニットを構成する複数ブロックの第1ページ集合内のページに対応グループのデータを格納し、第2ページ集合内のページにそのグループデータの更新データを記録するための未書き込みページを設ける。
特許文献1に記載される半導体記憶装置は、Trimコマンドに対応していない。したがって、この半導体記憶装置は、Trimコマンドを無視し、不要データも有用データとして維持するので、Trimコマンドで指定された論理アドレス範囲に記録されていた不要データも依然として管理せざるを得ない。ガベジコレクションが発生した際には、もはや不要となったデータの移動によって、処理時間の無駄やフラッシュメモリの書き換え寿命の浪費が発生することが課題である。
本発明は、以下を特徴とする半導体記憶装置を提供する。
メモリコントローラと複数のフラッシュメモリチップとを備える。それらのチップ内の各ブロックを、複数ページから成る第1ページ集合(オリジナルデータ用ページ)と、複数ページから成る第2ページ集合(更新データ用ページ)に分割する。一方、論理アドレス空間を複数グループに分割し、各グループを複数ラインに分割する。そして、複数チップの各々から所定数のブロックを集めてブロックユニットを複数組作成する。このうち所定数のブロックユニットを標準ブロックユニット、それ以外を予備ブロックユニットとして管理する。各標準ブロックユニットには1つのグループを対応付ける。そして、標準ブロックユニットを構成する複数ブロックの第1ページ集合のページに対応グループのデータを格納し、第2ページ集合の未書き込みページはそのグループデータの更新データを記録するためのページとする。メモリコントローラは、不要な論理アドレス範囲を含むTrimコマンドに応じて、その論理アドレスを含むグループとその不要なラインとを特定し、そのライン番号をライン管理テーブルに記録する。そして、第2ページ集合の未書き込みページが不足した標準ブロックユニットのグループデータを予備ブロックユニットに移動するとき、その不要ラインを除いたグループデータを移動し、第1ページ集合のページ容量を削減し、それ以降の更新データを記録する第2ページ集合のページ容量を拡張する。削減したラインを含めて、第1ページ集合の各ラインの有効、無効をライン管理テーブルを用いて管理する。
本発明によれば、ガベジコレクションの発生頻度が低減され、平均的に見てライト性能が向上するという効果を奏する。
以下、実施形態について説明する。図1は、本実施形態の半導体記憶装置1000の内部構造を簡単に表したものである。半導体記憶装置1000は、ホストインタフェース1010、メモリコントローラ1020、ホストデータバッファ1030、テンポラリデータバッファ1040、複数(例えば16枚)のフラッシュメモリチップ1100〜1115で構成される。
ホストインタフェース1010は外部のホスト(ホストコンピュータまたはCPU)と接続されるインタフェース機構であり、ホストからリード/ライト要求コマンドに応答して、フラッシュメモリに格納されたデータをホストに送信したり、フラッシュメモリに格納すべきライトデータをホストから受信したりする。なお、ホストは、リード/ライトを要求するデータの論理的な格納位置を論理アドレス(以下、LBA(Logical Block Address))によって指定する。このアドレスはフラッシュメモリチップ1100〜1115をメモリコントローラ1020がアクセスする時に用いる物理アドレスとは異なる仮想的なアドレスである。
ホストインタフェース1010の機構およびコマンドやデータの送受信のプロトコルについては、標準的なハードディスク装置と互換性のあるインタフェース仕様(例えば、パラレルATA、シリアルATA、SCSI)に準拠することが好ましい。
ホストデータバッファ1030は、主にRAM(Random Access Memory)により構成される揮発性メモリである。ホストからのライト要求によって受信したライトデータは、フラッシュメモリチップ1100〜1115に書き込まれる前に、フラッシュメモリチップに入力すべき所定量に達するまでホストデータバッファ1030に格納される。ホストからのリード要求に応答して送信すべきリードデータは、フラッシュメモリチップ1100〜1115から読み出された後に、ホストに出力すべき所定量に達するまでホストデータバッファ1030に格納される。
テンポラリデータバッファ1040は、主にRAMにより構成される揮発性メモリである。フラッシュメモリチップ1100〜1115のある物理アドレスに格納されたデータを別の物理アドレスに移動する必要が生じたときに、フラッシュメモリチップから読み出した当該データを一時的にテンポラリデータバッファ1040に保持する。
メモリコントローラ1020は、ホストインタフェース1010、ホストデータバッファ1030、テンポラリデータバッファ1040、フラッシュメモリチップ1100〜1115と接続され、それらを制御するマイクロプロセッサである。これは、上に述べたような、ホストからのリード/ライト要求コマンドの解釈、ホストとの間のデータ送受信、ホストデータバッファ1030やテンポラリデータバッファ1040へのアクセス(リード/ライト)、フラッシュメモリチップ1100〜1115へのアクセス(リード/プログラム/消去)を実行する。また、メモリコントローラ1020は、ホストから指定されたLBAがどのフラッシュメモリチップのどの物理アドレスに対応するかのアドレスマップをテーブル(アドレスマップテーブル)によって管理している。メモリコントローラ1020は、RAMなどの揮発性メモリを内蔵し、半導体記憶装置1000の電源投入時にその中にアドレスマップテーブルを作成する(アドレスマップテーブルが、どのようなテーブルかについては図3(b)や図7(b)を用いて後に述べる。)。さらに、各フラッシュメモリチップに格納されるデータを保障するためのECC(エラー訂正コード)の計算や検証も実行する。なお、アドレスマップテーブルはメモリコントローラ1020内部でなくても、メモリコントローラ1020からアクセス可能な揮発性メモリ上であればどこでもよい。
各フラッシュメモリチップ内の不揮発性メモリ領域は、複数(例えば、4096個)のブロック1300〜1311で構成される。格納されたデータはブロックを単位として消去される。ブロックは、複数(例えば、64個)のページ1400〜1463で構成される。フラッシュメモリに格納すべきデータはページを単位としてプログラムされる。各ブロック内の64個のページをプログラムする順序は固定されており、1400、1401、…、1463の順でプログラムしなければならない。また、プログラム済みのページは上書きが禁止されており、そのページが属するブロックを消去しなければ、再びそのページをプログラムすることができない。さらに、ページは複数(例えば、4個)のセクタデータ1510〜1513(各512バイト)を記憶するためのデータ部と、それらのセクタデータに関する情報1520〜1523(各16バイト)を記憶するための冗長部から成る。ページに格納されたデータはセクタを単位としてリードできる。メモリコントローラ1020は、これらの冗長部に、各セクタデータの内容を保障するためのECCや、各セクタデータのLBAなどを格納する。このLBAは、半導体記憶装置1000の電源投入時にアドレスマップテーブルを構成するために、メモリコントローラ1020によって読み出され、参照される。
各チップにおいてブロックは0番から4095番までナンバリングされており、偶数番ブロックの集合と奇数番ブロックの集合はそれぞれプレイン0、プレイン1と呼ばれる。プレイン毎にページレジスタ(1200、1201)が備えられており、各プレイン内のブロックに含まれるページからリードしたデータ、またはそのページにプログラムするデータはそれぞれのページレジスタに一時的に格納される。各プレインは消去/プログラム回路を独立に持っており、隣接する2ブロック(すなわち、整数X=0〜2047について2X番と(2X+1)番の2ブロック)を同時に消去することができる。また、それら隣接2ブロック内の同一番号の2ページを同時にプログラムすることができる。ただし、リード回路は共通であるため、1ページずつでしかリードできない。
メモリコントローラ1020は、各ブロックを構成する64個のページを、データ管理上の用途として2種類に分ける。基本的に、前部60ページ(1400〜1459)をオリジナルデータ用ページ1470とし、後部4ページ(1460〜1463)を更新データ用ページ1480とする。ただし、本実施例の半導体記憶装置1000は、Trimコマンドの受信に応じて、一部のブロックについて、オリジナルデータ用ページを60ページ未満(例えば60−T)に変更し、更新データ用ページを5ページ以上(例えば4+T)に変更することがある。変化量Tがどのように決まるかは後述する。なお、この分類は論理的なものであり、両者に含まれるページの物理構造に一切違いはない。
図2は、メモリコントローラ1020が、LBAで示される論理空間のデータをフラッシュメモリチップ1100〜1115内のブロック・ページに基本的にどのように格納するかを示した図である。この格納方式は特許文献1に従うものだが、本実施形態ではTrimコマンドの受信に応じて、一部のブロック・ページにおいて格納方式が変化する。それについては図7を用いて後述する。
まず、1920ページを1グループとして、LBAで示される論理空間を複数のグループに分割する。例えば、0番から1999番の番号を付した2000個のグループ2000〜2010に分けることとする。次に、32ページを1ラインとして、各グループを60個のライン2100〜2159に分割する。それらのラインに0番から59番までナンバリングする。そして、各ライン2170を2ページ単位で16個(2200〜2215)に分割する。
一方、16枚のチップそれぞれから隣接する2ブロックを選び、32ブロックからなるブロックユニット2300を構成する。図2では、一例として、第0チップから2a番と(2a+1)番の2ブロック、第1チップから2b番と(2b+1)番の2ブロック、第2チップから2c番と(2c+1)番の2ブロック、第15チップから2p番と(2p+1)番の2ブロックを選んだ場合を示している。この2300のようなブロックユニットを、LBAで示される論理空間のグループに相当する2000組作成し、0番から1999番の番号を付す。これらを標準ブロックユニットと呼ぶ。また、標準ブロックユニット(2300など)に選ばれなかった隣接する2ブロックを16枚のチップからそれぞれ選び、32ブロックからなるブロックユニット2400を構成する。図2では、一例として、第0チップから2a’番と(2a’+1)番の2ブロック、第1チップから2b’番と(2b’+1)番の2ブロック、第2チップから2c’番と(2c’+1)番の2ブロック、第15チップから2p’番と(2p’+1)番の2ブロックを選んだ場合を示している。この2400のようなブロックユニットをできるだけ多く作成する。これらを予備ブロックユニットと呼ぶ。もし、16枚のチップに不良ブロックが1つも存在しなければ、予備ブロックユニット(2400など)は48組(最大数)作成できる。
次に、第Nグループ内のデータ格納先を第N標準ブロックユニット2300に割り当てる。ここで、N=0〜1999である。さらに、当該グループの第Mラインのデータ格納先を当該標準ブロックユニットの各隣接2ブロックの第Mページに割り当てる。ここで、M=0〜59である。当該ラインを16個(2200〜2215)に分割したデータの格納先をそれぞれチップ0〜15内の前記第Mページに割り当てる。すなわち、標準ブロックユニット2300の斜線部(1920ページ)が第Nグループのデータの格納先となる。これは図1のオリジナルデータ用ページ1470(60ページ)を2ブロック分×16チップ分集めたものに相当する。その結果、標準ブロックユニット2300には128ページの未書き込み領域が残される。これは図1の更新データ用ページ1480(4ページ)を2ブロック分×16チップ分集めたものに相当する。なお、グループデータを格納するときは、各ページの冗長部に、そのページデータのLBA及びオリジナルデータであることを示す識別値OIDを含めてプログラムする。メモリコントローラ1020は、斜線部内のグループデータの一部が更新された時に、更新データの記録先としてこの未書き込み領域を利用する。
一方、予備ブロックユニット2400は、グループのデータ格納先として割り当てられておらず、全体的に未書き込みとなっている。メモリコントローラ1020は、ある標準ブロックユニット2300の未書き込み領域が更新データで満たされた場合に、予備ブロックユニット2400を1つ選び、その標準ブロックユニット2300内の有効データのみをその予備ブロックユニット2400のオリジナルデータ用ページ1470部分へとコピーする。そして、以後はそれを新たな標準ブロックユニット2300として利用する。その後、コピー元の標準ブロックユニット2300は消去されて新たな予備ブロックユニット2400としてリサイクルされる。
図3Aは、標準ブロックユニット2300内に格納されたグループデータの一部が更新された時に、更新データが記録されていく状況を示した図である。更新対象のグループデータはページ単位で管理する。更新対象グループデータのページアドレスをオリジナルアドレスと呼ぶ。第Xライン内で第Yチップ上のプレインZのページに格納されたデータのオリジナルアドレスWは、W=32X+2Y+Zで表される。その取り得る値の範囲は0〜127である。ここで、整数X=0〜59、整数Y=0〜15、整数Z=0又は1である。
図3Bは、グループデータに割り当てられた標準ブロックユニット2300を構成する16組の隣接2ブロックのアドレスを管理するブロックマップテーブル3200と、標準ブロックユニット2300内の未書き込み領域に記録された更新データを管理する更新データマップテーブル3300を示した図である。両テーブルともメモリコントローラ1020内に含まれる揮発性RAM上に構成される。
ブロックマップテーブル3200は、隣接2ブロックのアドレスを16枚のチップ(第0〜15)毎に記録するため、チップ番号3201とブロック番号3202の対応表として構成されている。メモリコントローラ1020は、このブロックマップテーブル3200を、標準ブロックユニット2300の総数、つまり2000個保持する。
更新データマップテーブル3300は、未書き込み領域内の更新先ページをインデックスとして、対応するオリジナルアドレスを管理するように構成されている。メモリコントローラ1020は、この更新データマップテーブル3300を、標準ブロックユニット2300の総数、つまり2000個保持する。
更新データマップテーブル3300は、128個存在する更新先ページを表すために、ページ番号3301、チップ番号3302、プレイン番号3303を用いる。そして、装置外部からのライト要求コマンドによって当該グループデータ内に更新データが発生する度に、その更新データを記録した更新先ページについて、更新対象セクタ3304、オリジナルアドレス3305、更新先ページ状態3306を記録する。更新対象セクタ3304は、更新先ページ内に含まれる4つのセクタ(第0〜3セクタ)にそれぞれ更新データが格納されているか否かを0と1で示す。1は格納、0は非格納を意味する。例えば、0010は第2セクタのみ更新データとして格納していることを示す。オリジナルアドレス3305は、上式で示したWの値を示す。更新先ページ状態3306は、更新先ページが未書き込みならば「空き」、最新の更新データを記録していれば「有効」、古い更新データを記録していれば「無効」を示す。更新データが次々と記録されるにつれて、更新先ページ状態3306が「空き」の更新先ページが消費されていく。また、同じオリジナルアドレスのセクタが2回以上更新されると、最新でない更新データを記録している更新先ページの更新先ページ状態3306は「無効」になる。
図3Aにおいて、例えば、W=1のページの第2セクタデータA0がA1に更新された時には、未書き込み領域内の1ページを選び、(ここでは、第60ページの第0チップのプレイン0とする。)その第2セクタにA1をプログラムする。W=1のページで更新されていない3セクタについては記録する必要がないため、A1以外の3セクタはプログラムしない。これにより、A1を記録している更新先ページの状態3306「有効」になる。
例えば、W=36のページの第1、第2セクタデータB0、C0がそれぞれB1、C1に更新された時には、未書き込み領域内の1ページを選び、(ここでは、第60ページの第0チップのプレイン1とする。)その第1、第2セクタにB1、C1をプログラムする。W=36のページで更新されていない2セクタについては記録する必要がないため、B1、C1以外の2セクタはプログラムしない。これにより、B1、C1を記録している更新先ページの状態3306は「有効」になる。
図3Aには、同様に、W=32のページの第2セクタD0がD1に更新され、W=35のページの第0、第1セクタデータE0、F0がそれぞれE1、F1に更新され、W=30のページの第2、第3セクタデータG0、H0がそれぞれG1、H1に更新される様子が示されている。
W=36のページの第1、第2セクタデータB1、C1がそれぞれB2、C2に更新された時には、未書き込み領域内の1ページを選び、(ここでは、第60ページの第2チップのプレイン1とする。)その第1、第2セクタにB2、C2をプログラムする。これにより、B2、C2を記録している更新先ページの状態3306は「有効」3310になり、B1、C1を記録している更新先ページの状態3306は「無効」3311になる。
ライン状態テーブル3400は、特許文献1に開示されていないものだが、本実施形態においてTrimコマンドに対応するために使用する管理テーブルとしてRAM上に実装する。基本的に、本実施形態の半導体記憶装置1000が特許文献1の格納方式に従ってデータを管理しているグループについては、ライン状態テーブル3400のライン状態を全て「有効」に設定する。
なお、図1に示したように、フラッシュメモリの各ページには冗長部1520〜1523が含まれている。更新先ページをプログラムする際には、対応するオリジナルアドレスW及び更新データであることを示す識別値UIDを冗長部内に含ませてプログラムする。その情報は半導体記憶装置1000の起動時にメモリコントローラ1020によって読み出され、更新データマップテーブルやライン状態テーブルを作成するために使用される。
図4Aの標準ブロックユニット2300は、未書き込みページが無くなるまで更新データが記録された状況を示した図である。図中、オリジナルデータ用ページ1470内のXは更新されたセクタデータを表し、更新データ用ページ1480内のXは最新ではない更新セクタデータを表し、更新データ用ページ1480内のOは最新の更新セクタデータを表す。この標準ブロックユニット2300へ割り当てられているグループデータにさらなる更新データが発生した場合には、それを記録する場所がない。そこで、メモリコントローラ1020は、予備ブロックユニット2400を用いて新たな記録場所を確保する。すなわち、標準ブロックユニット2300のオリジナルデータ用ページ1470内のXで示された各データに対応する最新の更新データを、更新データマップテーブル3300を参照することによって、更新データ用ページ1480内のOで示されたデータから見つけ、そのXの部分をOで置き換えたページデータを作り、予備ブロックユニット2400の同一ページアドレスにコピーする。また、Xの部分を含まない未更新ページはそのまま予備ブロックユニット2400の同一ページアドレスにコピーする。これらのコピーをグループデータの全ページに渡って実施する。この処理をガベジコレクションと呼ぶ。ガベジコレクションによって、更新データの未書き込みページが無くなった標準ブロックユニット2300は、予備ブロックユニット2400を用いて新たな標準ブロックユニット2300として再構成される。
図4Aの予備ブロックユニット2400は、グループデータの全ページコピーが完了した状況を示した図である。図中、オリジナルデータ用ページ1470内のOで示されたセクタは最新の更新データが格納されていることを表す。このとき、更新データ用ページ1480は全て未書き込みの状態である。ここが当該グループデータの新たな更新データの記録先となる。
図4Bは、以上のコピー手続きによる、当該グループのブロックマップテーブルと更新データマップテーブルの書き換え後の状態を示した図である。ブロックマップテーブル4200では、各チップについて、隣接2ブロックのアドレス4202を、予備ブロックユニット2400を構成するそれぞれのチップの隣接2ブロックのアドレスに書き換える。更新データマップテーブル4300では、128個のエントリ全体について、更新対象セクタ4304とオリジナルアドレス4305の項目をクリアし、更新先ページ状態4306を「空き」に設定する。また、本実施形態では、ライン状態テーブル4400は、ガベジコレクション直前のライン状態テーブルの状態を維持する。
図4Bは、以上のコピー手続きによる、当該グループのブロックマップテーブルと更新データマップテーブルの書き換え後の状態を示した図である。ブロックマップテーブル4200では、各チップについて、隣接2ブロックのアドレス4202を、予備ブロックユニット2400を構成するそれぞれのチップの隣接2ブロックのアドレスに書き換える。更新データマップテーブル4300では、128個のエントリ全体について、更新対象セクタ4304とオリジナルアドレス4305の項目をクリアし、更新先ページ状態4306を「空き」に設定する。また、本実施形態では、ライン状態テーブル4400は、ガベジコレクション直前のライン状態テーブルの状態を維持する。
以上が、特許文献1に基づく本実施形態における基本的なデータ格納方式である。
以下、図5〜9を用いて、本実施形態により開示される、Trimコマンドに対応するためのデータ格納方式を説明する。
図5AはLBA空間においてTrimコマンドによってOSから不要であると通知された3つのアドレス範囲の例を示す。1つ目のTrim範囲A5010は、2つのグループ5001、5002にまたがる。このとき、Trim範囲A5010に対応する、グループ5001の後部ラインのデータと、グループ5002の前部ラインのデータはフラッシュメモリ上で管理する必要がない。2つ目のTrim範囲B5011は、3つのグループ5003、5004、5005にまたがる。このとき、Trim範囲B5011に対応する、グループ5003の後部ラインのデータと、グループ5004の全ラインのデータと、グループ5005の前部ラインのデータはフラッシュメモリ上で管理する必要がない。3つ目のTrim範囲C5012は、1つのグループ5006に含まれる。このとき、Trim範囲C5012に対応する、グループ5006の中央部ラインのデータはフラッシュメモリ上で管理する必要がない。本実施形態では、グループ5000のように、Trim範囲が重ならない場合は、特許文献1に基づくデータ格納方式により、全60ラインのオリジナルデータとその更新データをブロックユニットで管理するが、グループ5001〜5006のように、Trim範囲が重なる場合は、60本未満のラインのオリジナルデータとその更新データをブロックユニットで管理する。その際、オリジナルデータの量が減る分、更新データを格納する容量を増やすように制御する。すなわち、オリジナルデータ用ページと更新データ用ページの境界を、特許文献1のようなページNo.60の固定位置から小さいページ番号に向かって移動させる。グループ5004のような場合が最大の移動となり、ブロックユニットが全て更新データ用ページとして利用される。このように更新データを格納できる容量を増やすことは、半導体記憶装置1000のライト性能を向上させる効果がある。その根拠は後で定量的に示す。
図5Bは、Trimコマンドで指定されたLBA範囲と、ブロックユニットで管理不要なラインとの対応関係を、Trim範囲C5012とグループ5006を例に示したものである。OSから通知されたTrim範囲C5012の先頭アドレスや末尾アドレスはラインの境界位置に一致するとは限らない。図5Bのように先頭アドレスがライン5102の途中にあったり、末尾アドレスがライン5157の途中にあったりする。本実施形態では、Trim範囲のアドレスに内包されるラインのみをTrim対象(不要ライン)とする。この例では、ライン5103〜5156の54本をTrim対象とし、ライン5102、5157のような有用データを含むラインをTrim対象に含めない(有用ラインとする)。
本実施形態では、1グループ当たり60本あるラインのうち、OSが不要であると通知したLBA範囲内にあるラインについては「無効」、それ以外は「有効」とするライン状態テーブルをグループ毎に作成し、Trim対象ラインを管理する。したがって、この例では、ライン状態テーブルでライン番号No.3〜56の状態を「無効」に、それ以外のラインの状態を「有効」に設定する。
図6A及び図6Bを用いて、半導体記憶装置1000がTrimコマンドやライトコマンドを受信したときに、メモリコントローラ1020がブロックユニットの更新データ用ページにどういうデータをどのように格納するかを説明する。
ライトコマンドを受信したときは、特許文献1のようにライト先LBAから対象グループを求め、図6Aのように、その対応ブロックユニット2300の更新データ用ページの空きページにライトデータを順に記録し、更新データマップテーブルのエントリを変更していくが、その後、Trimコマンドを受信したときは、通知されたTrim範囲から求めたTrim対象ライン番号を示す情報を、斜線部6000のように更新データ用ページの空きページの1つに続けて記録する。なお、この情報はTrim範囲のLBAなど、計算によってライン番号を特定できる情報であってもよく、1つの情報形式に限定されるものではない。また、Trim情報を書き込むときは、そのページの冗長部にTrim情報であることを示す識別値TIDを含めてプログラムする。この識別値TIDは半導体記憶装置1000の起動時にメモリコントローラ1020によって読み出され、ライン状態テーブルを作成するために使用される。
Trim情報を記録した後も、ライトコマンドを受信したときは、図6Bのように、更新データ用ページの空きページが無くなるまで(不足するまで)ライトデータを順に記録していく。そして、ガベジコレクションが必要となったら、記録したTrim情報や更新データに基づいて、不要ラインを除いたグループデータを対象にガベジコレクションを行う。
ここで注意すべきは、不要ラインは斜線部6000のTrim情報だけで定まるものではない。なぜなら、図6BのようにTrimコマンド後にもライトコマンドを受け付けており、そのライト先LBAがTrim範囲のLBAに重なっており、再び不要から有用に遷移したラインが存在する可能性があるからである。
そこで、メモリコントローラ1020は、ガベジコレクションの際にラインの不要/有用を即時に知ることができるように、ホストからのライトコマンドやTrimコマンドに応じてライン状態テーブルを変更する。例えば、図6Aのライン状態テーブル6100は、Trimコマンドにより通知されたTrim範囲により、ラインNo.23〜59が不要になったことを示す。そして、図6Bのライン状態テーブル6200は、その後のライトコマンドによるデータライトにより、ラインNo.35〜59が再び有用に戻ったことを示す。この場合、ラインNo.23〜34を除いたグループデータを対象にガベジコレクションを行う。
図7Aおよび図7Bを用いて、不要ラインが含まれる図6Bのグループに対してガベジコレクションを行うときに、メモリコントローラ1020が新しいブロックユニットにどのようにグループデータを移動するかを説明する。
図7Aのように、メモリコントローラ1020は、予備ブロックユニット6300を図6Bのグループの新たな記録場所として確保する。まず、ライン状態テーブル6200を参照し、「有効」状態の48本のラインを選択する。それらのラインの各々について、図6Bの標準ブロックユニット2300のオリジナルデータ用ページ内のXで示されたデータに対応する最新の更新データを、更新データマップテーブルを参照することにより、更新データ用ページのOで示されたデータから見つける。そのXの部分をOで置き換えたページデータを作り、予備ブロックユニット6300にコピーする。Xの部分を含まない未更新ページはそのまま予備ブロックユニット6300にコピーする。これらのコピーを「有効」状態のラインの全ページに渡って実施する。この例では、このコピーによって予備ブロックユニット6300の斜線部(ページNo.0〜47)が書き込み済みとなる。この斜線部がオリジナルデータ用ページとなり、ブロックユニット6300の残りの未書き込み部分(ページNo.48〜63)が新たな更新データ用ページとして確保される。その容量は16×32=512ページとなり、基本的な格納方式に従ったときの更新データ用ページ容量128ページの4倍に相当する。ゆえに、このグループデータは次回のガベジコレクションを実施するまで、従来の4倍の量の更新データを受け付けることができる。
図7Bは、ガベジコレクション時に、メモリコントローラ1020が本グループの各種管理テーブルに設定する内容を示す。まず、ブロックマップテーブル7000には、ブロックユニット6300を構成する各ブロックのブロックアドレスを設定する。そして、更新データマップテーブル7100は、その容量を512ページ分の更新情報を格納できるように拡張し、その全エントリのページ状態を「空き」に設定する。最後に、ライン状態テーブル7200は、ライン状態テーブル6200の「有効/無効」状態をそのまま保持する。
図8は、半導体記憶装置1000がホストからTrimコマンドを受けて、メモリコントローラ1020が実行する処理の手順を示したものである。
メモリコントローラ1020は、Trimコマンドを通じて、Trim対象のLBA範囲を示す情報を受信する(ステップ8010)。そのLBA範囲の値から、数値計算によって、それに対応するグループ番号とライン番号を特定する(ステップ8020)。次に、そのグループのライン状態テーブル(3400や7200など)で、そのライン番号のエントリを全て「無効」状態に設定する(ステップ8030)。そのグループの更新データマップテーブル(3300や7100など)で「空き」状態を示すエントリが存在するかを調査する(ステップ8040)。存在するならば、「空き」状態の更新データ用ページの1つにTrim対象のライン番号を示す情報を記録する(ステップ8050)。以上で処理を終わる。
一方、ステップ8040で「空き」状態のエントリが存在しないならば、そのグループのライン状態テーブル(3400や7200など)で「有効」状態のラインを選択し、それらのラインについてのみガベジコレクションを行う(ステップ8060)。すなわち、それらのラインに含まれるページに更新部分があれば、そのページに対する最新の更新セクタを、更新データマップテーブルを参照して更新データ用ページから読み出し、未更新のページ部分と結合して最新のページデータを作り、予備ブロックユニットにコピーする。全く未更新のページはそのまま予備ブロックユニットにコピーする。これらのコピー処理を上記「有効」ラインの全ページに渡って実施する。このガベジコレクションの後、ブロックマップテーブルに移動先の新しいブロックユニットの番号を設定する(ステップ8070)。そして、ライン状態テーブルで「有効」ラインの本数が(60−T)本の場合、更新データマップテーブルのエントリ数を(4+T)×32ページ分に変更し、当該エントリの全てのページ状態を空きに設定する(ステップ8080)。以上で処理を終わる。
図9は、半導体記憶装置1000がホストからライトコマンドを受けて、メモリコントローラ1020が実行する処理の手順を示したものである。
メモリコントローラ1020は、ライトコマンドを通じて、ライト対象のLBA、セクタ数とライトデータを受信する(ステップ9010)。そして、ライトすべき範囲のLBAについて、数値計算により、それに対応するグループ番号とライン番号を特定する(ステップ9020)。そのグループの更新データマップテーブル(3300や7100など)でライトするページ数以上の数の「空き」状態エントリが存在するかを調査する(ステップ9030)。存在しないならば、そのグループのライン状態テーブル(3400や7200など)で「有効」状態のラインを選択し、それらのラインについてのみガベジコレクションを実行する(ステップ9040)。この処理は図8のステップ8060と同様である。その後、ブロックマップテーブルに移動先の新しいブロックユニットの番号を設定する(ステップ9050)。そして、ライン状態テーブルで「有効」ラインの本数が(60−T)本の場合、更新データマップテーブルのエントリ数を(4+T)×32ページ分に変更し、当該エントリの全てのページ状態を空きに設定する(ステップ9060)。次に、新しいブロックユニットの更新データ用ページの未書き込みページの先頭からライトデータを格納する(ステップ9070)。最後に、ライン状態テーブルでライト対象のLBAが含まれるラインの状態を「有効」に設定する(ステップ9080)。以上で処理を終わる。一方、ステップ9030で十分な「空き」状態のエントリが存在するならば、ステップ9070、9080を実行し、処理を終わる。
半導体記憶装置1000がホストからリードコマンドを受けて、メモリコントローラ1020が実行する処理の手順を以下に示す。ただし、これは図示しない。
メモリコントローラ1020は、リードコマンドを通じて、リード対象のLBAとセクタ数をリード元論理アドレスとして受信する。リードすべき範囲のLBAについて、数値計算により、それに対応するグループ番号とライン番号を特定する。次に、ライン状態テーブルでその番号の状態を参照する。そのラインが「有効」であれば、更新データマップテーブルを参照する。更新済みであれば、更新データ用ページから最新データを読み、未更新であれば、オリジナルデータ用ページから最新データを読み、半導体記憶装置1000の外部のホストに出力する。一方、ライン状態テーブルでそのラインが「無効」であれば、ゼロデータを半導体記憶装置1000の外部のホストに出力する。ただし、これはゼロデータに限らず、乱数データなど、当該ブロックユニットに格納されていない所定の無効データでもよい。あるいは、当該ブロックユニット上に残された(Trim対象とされる前の)旧データであってもよい。ただ、OSがユーザファイルを削除するときにTrimコマンドを発行する場合などを考慮すれば、前者のようなゼロデータや乱数データであるほうがデータの安全性を確保する上で好ましい。
以上の説明の中で、半導体記憶装置1000の起動時にメモリコントローラ1020によって、ブロックマップテーブル(7000など)、更新データマップテーブル(7100など)、ライン状態テーブル(7200など)をRAM上に作成すると述べたが、その詳細な方法を以下に示す。
まず、メモリブロックの各ページの冗長部からLBAを読み、論理的なグループ番号と物理的なブロック番号との対応を調べ、それに基づいてブロックマップテーブルを作成する。次に、それぞれのグループに対応するブロックユニットの各ページの冗長部を読み、オリジナルデータ識別値OIDを含むかを調べ、そのグループのオリジナルデータ用ページと更新データ用ページの境界(ページ番号0〜60の間)を求める。さらに、オリジナルデータ用ページの冗長部からLBAを読み、どのラインのデータが記録されているかを調べ、それに基づいて(仮状態の)ライン状態テーブルを作成する。そして、更新データ用ページの記録済みページについて、更新が古いほうから新しいほうに向かってその冗長部を読んでいき、更新データ識別値UIDを含むならば、そのオリジナルアドレスWに基づいて更新データマップテーブルを構成していく。その途中で、オリジナルアドレスWに対応するLBAがライン状態テーブルで「無効」なラインに含まれていたら、そのライン状態を「有効」に修正する。また、Trim情報識別値TIDを含むならば、そのページ読み、Trim対象のラインを特定し、そのライン状態を「無効」に修正する。このように、更新データ用ページの記録済みページを全て調査して修正を行い、ライン状態テーブルの作成は完了する。
本実施形態によれば、半導体記憶装置1000は、Trim対象のラインを含むグループのLBA範囲に対するライトコマンドに対して(そのグループのガベジコレクション以後)性能が向上するという効果がある。この根拠を以下、特許文献1に基づく図4のデータ配置状態と本実施形態の図7のデータ配置状態とを定量的に比較しながら示す。
まず、フラッシュメモリの性能特性は、一般的な2値/セルの製品仕様に基づき、ページリード時間を25μ秒、ページプログラム時間を200μ秒、ブロック消去時間を1m秒とする。また、メモリチップのインタフェース駆動周波数を40MHz、バス幅を8ビットとする。よって、メモリチップとメモリコントローラ間で1ページを転送する時間は50μ秒となる。また、16個のメモリチップは並列に動作させる。さらに、ホストからのコマンドをメモリコントローラ1020が受けて処理する時間を10μ秒とする。
簡単のために、ガベジコレクション直後の状態から始め、グループ内の相違なる論理アドレスに、セクタ数が4KB(2ページ)固定のライトコマンドを連続的に発行するものとし、その途中でそのグループに対するTrimコマンドは発行しないものとする。
特許文献1に基づくデータ配置(図4)では、更新データ用ページは256KBであるから、4KBのライトを64回行うとガベジコレクションが発生して初期状態に復帰する。1回のライト処理時間は、コマンド処理時間10μ秒、ライトデータ転送時間2×50μ秒、ページプログラム時間200μ秒の計310μ秒である。また、ガベジコレクション処理時間は、予備ブロックユニットの消去時間1m秒、標準ブロックユニット全体からのリード・転送時間64×(2×25+2×50)μ秒、予備ブロックユニットのオリジナルデータ用ページへの転送・ライト時間60×(2×50+200)μ秒の計28600μ秒である。以上より、1回のライトコマンドにかかる平均処理時間は、(64×310+28600)/64=757μ秒となり、平均性能は1321IOPS(Input / Output Per Second)となる。
一方、本実施形態によるTrimコマンドに対応したデータ配置(図7)では、更新データ用ページは1024KBであるから、4KBのライトを256回行うとガベジコレクションが発生して初期状態に復帰する。1回のライト処理時間は上記と同じく310μ秒である。また、ガベジコレクション処理時間は、予備ブロックユニットの消去時間1m秒、標準ブロックユニット全体からのリード・転送時間64×(2×25+2×50)μ秒、予備ブロックユニットのオリジナルデータ用ページへの転送・ライト時間48×(2×50+200)μ秒の計25000μ秒である。以上より、1回のライトコマンドにかかる平均処理時間は、(256×310+25000)/256=408μ秒となり、平均性能は2453IOPSとなる。したがって、図7の例では1.86倍の性能向上となる。一般的に、本実施形態のデータ格納方式によれば、グループ内のTrim対象ラインの本数が増えるにしたがって平均ライト性能が向上することが言える。
なお、以上の説明においては、Trimコマンドに応じて図6のようにTrim情報6000を更新データ用ページ内に記録したが、その他の専用メモリブロックに記録したり、半導体記憶装置1000内にその他の不揮発性メモリを搭載してそこに記録したりしてもよく、それらの場合でも本実施形態の効果を享受することは明白である。ただ、Trim情報はガベジコレクションが終われば移動元のグループデータと一緒に廃棄してもよい情報であるから、上述のように当該グループのブロックユニットの中に記録するほうが、後々の並列ブロック消去1回で一緒に処分できるため、より効率的である。
以上、特許文献1に開示される技術との際が明確になるように、特許文献1に開示される技術を起点として実施形態を説明した。すでに明らかなように、本実施形態では、Trimコマンドが不要と指示した無効なラインをライン管理テーブルで管理し、無効なラインのデータを、ガベジコレクションに伴って、オリジナルデータ用ページ1470に格納せずに容量を削減する。極端な場合として、前述の図5におけるグループ5004のように、オリジナルデータ用ページの容量を0とし、ブロックユニットが全て更新データ用ページとして利用される。このように更新データを格納できる容量を増やすことによって、半導体記憶装置1000のライト性能の向上が図れる。特許文献1に開示される技術を起点とした例として、オリジナルデータ用ページ1470の元のサイズを60ページとした。半導体記憶装置1000を初めて使用する場合は、有効なデータが格納されていない状態なので、オリジナルデータ用ページの容量を0とし、ライン管理テーブルの内容をすべて無効状態として、ブロックユニットが全て更新データ用ページとして利用できるようにすると良い。
ライン管理テーブルは、LBAから導き出した32ページからなるラインの状態を管理するように説明した。LBAはフラッシュメモリのページに対応付けられることから、ページ単位に有効、無効を管理し、ブロックユニット単位ではなく、ブロック単位または同一フラッシュメモリチップの隣接する二つのブロック単位に設けても良い。この場合、ライン管理テーブルの総容量が大きくなること、ガベジコレクションなどの処理時間が長くなることを考慮する必要がある。
1000…半導体記憶装置、1020…メモリコントローラ、1030…ホストデータバッファ、1040…テンポラリデータバッファ、1100〜1115…フラッシュメモリチップ。
Claims (12)
- メモリコントローラと複数のフラッシュメモリチップとを備え、
前記メモリコントローラは、前記複数のフラッシュメモリチップを制御するために前記フラッシュメモリチップに接続され、
前記複数のフラッシュメモリチップの各々は、前記メモリコントローラの指示で一括消去可能なブロックを複数含み、
前記ブロックの各々は、前記メモリコントローラが書込単位とするページを複数含み、
前記メモリコントローラは、前記各ブロックを、複数の前記ページから成る第1ページ集合と、複数の前記ページから成る第2ページ集合とに分割し、
論理アドレス空間を複数のグループに分割し、前記グループの各々を複数のラインに分割し、
前記複数のフラッシュメモリチップの各々から、所定数の前記ブロックを集めてブロックユニットを複数組作成し、
所定数の前記ブロックユニットを標準ブロックユニット、それ以外の前記ブロックユニットを予備ブロックユニットとして管理し、
前記標準ブロックユニットの各々に1つの前記グループを対応付け、
前記標準ブロックユニットを構成する複数の前記ブロックの前記第1ページ集合内の前記ページに、対応する前記グループのデータを格納し、
前記標準ブロックユニットを構成する複数の前記ブロックの前記第2ページ集合内の前記ページ中に、前記対応グループデータの更新データを記録するための未書き込みの前記ページを有する半導体記憶装置であって、
前記グループの各々について、前記グループに所属する各前記ラインが有効か無効かの状態を示すテーブルを持ち、
前記メモリコントローラは、不要論理アドレス範囲の情報を含む不要アドレス通知コマンドの受信に応じて、
前記不要論理アドレス範囲を含む不要対象前記グループと不要対象前記ラインとを特定し、
前記不要対象グループの前記テーブルにおける前記不要対象ラインの状態を無効状態に設定することを特徴とする半導体記憶装置。 - 請求項1に記載の半導体記憶装置であって、
前記メモリコントローラは、ライト先論理アドレスとライトデータとを含むライトコマンドの受信に応じて、
前記ライト先論理アドレスを含むライト先前記ラインを特定し、
前記ライト先グループの前記テーブルにおける前記ライト先ラインの状態を有効状態に設定することを特徴とする半導体記憶装置。 - 請求項1または2に記載の半導体記憶装置であって、
前記メモリコントローラは、前記ライトコマンドの受信に応じて、
前記ライト先論理アドレスを含むライト先前記グループを特定し、
前記ライトデータを、前記ライト先グループのデータの更新データとして、前記第2ページ集合内の前記未書き込みページに書き込み、
前記メモリコントローラは、前記不要アドレス通知コマンドの受信に応じて、
前記不要論理アドレス範囲を含む不要対象前記グループと不要対象前記ラインとを特定し、
前記不要対象ラインを示す情報を、前記不要対象グループの前記第2ページ集合内の前記未書き込みページに書き込むことを特徴とする半導体記憶装置。 - 請求項1〜3のいずれか1項に記載の半導体記憶装置であって、
前記標準ブロックユニットの前記第2ページ集合内の前記未書き込みページが不足している、再構成対象前記グループについて、
前記予備ブロックユニットの1つを選択し、前記再構成対象グループのデータを前記対応標準ブロックユニットから前記選択予備ブロックユニットに移動するときに、
前記再構成対象グループのデータのうち、前記不要対象ライン以外の前記ラインのデータを前記選択予備ブロックユニットの前記第1ページ集合に移動して、前記第1ページ集合のサイズを削減し、
当該削減されたサイズの分だけ、前記選択予備ブロックユニットの前記第2ページ集合のサイズを拡張することを特徴とする半導体記憶装置。 - 請求項1〜4のいずれか1項に記載の半導体記憶装置であって、
前記メモリコントローラは、リード元論理アドレスを含むリードコマンドの受信に応じて、
前記リード元論理アドレスを含むリード元前記グループとリード元前記ラインとを特定し、
前記リード元グループの前記テーブルを参照し、
前記リード元ラインの状態が有効状態に設定されている場合は、前記リード元グループに対応する前記標準ブロックユニットに格納されているデータを出力し、
前記リード元ラインの状態が無効状態に設定されている場合は、前記リード元グループに対応する前記標準ブロックユニットに格納されていない所定の無効データを出力することを特徴とする半導体記憶装置。 - 一括消去可能なブロックを複数含み、前記ブロックの各々が、書込単位であるページを複数含む、フラッシュメモリチップと、
第1のブロックに割当てた論理アドレスに対応する複数の前記ページの各々が有効か無効かの状態を示す第1のテーブルと、
前記第1のブロックのガベジコレクションに伴って、前記第1のテーブルで前記有効状態を示す前記ページのデータを、第2のブロックのオリジナルデータ用ページを構成する第1のページにコピーし、前記第2のブロックに含まれ、前記オリジナルデータ用ページ以外を構成する第2のページを更新データ用ページとし、前記第1のテーブルの内容をコピーした第2のテーブルを前記第2のブロックに対応させて設ける、前記フラッシュメモリチップに接続したメモリコントローラとを有することを特徴とする半導体記憶装置。 - 請求項6に記載の半導体記憶装置であって、
前記第1及び第2のテーブルの各々は、複数の前記フラッシュメモリチップの各々から選択した複数の前記第1のブロックに割当てた論理アドレスに対応する、前記ページの集合であるラインの各々が有効か無効かの状態を示すことを特徴とする半導体記憶装置。 - 請求項7に記載の半導体記憶装置であって、
前記メモリコントローラは、不要論理アドレス範囲の情報を含む不要アドレス通知コマンドの受信に応じて、
前記不要論理アドレス範囲に対応する不要対象前記ラインを特定し、
前記不要対象グループの前記第2のテーブルにおける前記不要対象ラインの状態を無効状態に設定することを特徴とする半導体記憶装置。 - 請求項8に記載の半導体記憶装置であって、
前記メモリコントローラは、ライト先論理アドレスとライトデータとを含むライトコマンドの受信に応じて、
前記ライト先論理アドレスを含むライト先前記ラインを特定し、
前記ライト先グループの前記第2のテーブルにおける前記ライト先ラインの状態を有効状態に設定することを特徴とする半導体記憶装置。 - 一括消去可能なブロックを複数含む複数のフラッシュメモリチップと複数の前記フラッシュメモリチップに接続するメモリコントローラとを備え、前記ブロックの各々は、前記メモリコントローラが書込単位とするページを複数含む半導体記憶装置における、前記メモリコントローラによる制御方法であって、
前記各ブロックを、複数の前記ページから成る第1ページ集合と、複数の前記ページから成る第2ページ集合とに分割し、
論理アドレス空間を複数のグループに分割し、前記グループの各々を複数のラインに分割し、
前記複数のフラッシュメモリチップの各々から、所定数の前記ブロックを集めてブロックユニットを複数組作成し、
所定数の前記ブロックユニットを標準ブロックユニット、それ以外の前記ブロックユニットを予備ブロックユニットとして管理し、
前記標準ブロックユニットの各々に1つの前記グループを対応付け、
前記標準ブロックユニットを構成する複数の前記ブロックの前記第1ページ集合内の前記ページに、対応する前記グループのデータを格納し、
前記標準ブロックユニットを構成する複数の前記ブロックの前記第2ページ集合内の前記ページ中に、前記対応グループデータの更新データを記録するための未書き込みの前記ページを有し、
前記グループの各々について、前記グループに所属する各前記ラインが有効か無効かの状態を示すテーブルを持ち、
前記メモリコントローラは、不要論理アドレス範囲の情報を含む不要アドレス通知コマンドの受信に応じて、
前記不要論理アドレス範囲を含む不要対象前記グループと不要対象前記ラインとを特定し、
前記不要対象グループの前記テーブルにおける前記不要対象ラインの状態を無効状態に設定することを特徴とする制御方法。 - 請求項10に記載の制御方法であって、
前記メモリコントローラは、ライト先論理アドレスとライトデータとを含むライトコマンドの受信に応じて、
前記ライト先論理アドレスを含むライト先前記ラインを特定し、
前記ライト先グループの前記テーブルにおける前記ライト先ラインの状態を有効状態に設定することを特徴とする制御方法。 - 一括消去可能なブロックを複数含み、前記ブロックの各々が、書込単位であるページを複数含む、フラッシュメモリチップと、第1のブロックに割当てた論理アドレスに対応する複数の前記ページの各々が有効か無効かの状態を示す第1のテーブルと、前記フラッシュメモリチップに接続したメモリコントローラとを有する半導体記憶装置における、前記メモリコントローラによる制御方法であって、
前記第1のブロックのガベジコレクションに伴って、前記第1のテーブルで前記有効状態を示す前記ページのデータを、第2のブロックのオリジナルデータ用ページを構成する第1のページにコピーし、
前記第2のブロックに含まれ、前記オリジナルデータ用ページ以外を構成する第2のページを更新データ用ページとし、
前記第1のテーブルの内容をコピーした第2のテーブルを前記第2のブロックに対応させて設けることを特徴とする制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009243480A JP2011090496A (ja) | 2009-10-22 | 2009-10-22 | 半導体記憶装置および制御方法 |
PCT/JP2010/005330 WO2011048738A1 (ja) | 2009-10-22 | 2010-08-30 | 半導体記憶装置および制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009243480A JP2011090496A (ja) | 2009-10-22 | 2009-10-22 | 半導体記憶装置および制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011090496A true JP2011090496A (ja) | 2011-05-06 |
Family
ID=43899983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009243480A Pending JP2011090496A (ja) | 2009-10-22 | 2009-10-22 | 半導体記憶装置および制御方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2011090496A (ja) |
WO (1) | WO2011048738A1 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012198811A (ja) * | 2011-03-22 | 2012-10-18 | Toshiba Corp | メモリシステム、不揮発性記憶装置及びその制御方法 |
JP2014059889A (ja) * | 2013-10-29 | 2014-04-03 | Toshiba Corp | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム |
US9032138B2 (en) | 2011-11-23 | 2015-05-12 | Samsung Electronics Co., Ltd. | Storage device based on a flash memory and user device including the same |
US9043565B2 (en) | 2012-09-07 | 2015-05-26 | Kabushiki Kaisha Toshiba | Storage device and method for controlling data invalidation |
JP2016126738A (ja) * | 2014-12-29 | 2016-07-11 | 株式会社東芝 | メモリ装置及びプログラム |
JP2016189207A (ja) * | 2013-03-13 | 2016-11-04 | シーゲイト テクノロジー エルエルシーSeagate Technology LLC | 記憶デバイスおよび記憶空間割当方法 |
US10120793B2 (en) | 2014-12-29 | 2018-11-06 | Toshiba Memory Corporation | Memory device and non-transitory computer readable recording medium |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5802804B2 (ja) * | 2012-06-19 | 2015-11-04 | 株式会社東芝 | 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置 |
WO2014158167A1 (en) * | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Split mode addressing of persistent memory |
CN112882650B (zh) * | 2019-11-29 | 2024-04-30 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN115620793B (zh) | 2021-07-12 | 2024-10-22 | 长鑫存储技术有限公司 | 一种半导体存储器及其上存储块的容量配置方法 |
CN116908651A (zh) * | 2023-07-21 | 2023-10-20 | 江阴市华拓芯片测试有限公司 | 一种芯片的动态Trimming方法及Trimming装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6587915B1 (en) * | 1999-09-29 | 2003-07-01 | Samsung Electronics Co., Ltd. | Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same |
JP2008507756A (ja) * | 2004-07-21 | 2008-03-13 | サンディスク コーポレイション | 最適化されたシーケンシャルなクラスタの管理のためのfat分析 |
JP2008198208A (ja) * | 2007-02-13 | 2008-08-28 | Samsung Electronics Co Ltd | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 |
JP4164118B1 (ja) * | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
WO2008130799A1 (en) * | 2007-04-19 | 2008-10-30 | Microsoft Corporation | Remove-on-delete technologies for solid state drive optimization |
JP2009064251A (ja) * | 2007-09-06 | 2009-03-26 | Hitachi Ltd | 半導体記憶装置及び半導体記憶装置の制御方法 |
-
2009
- 2009-10-22 JP JP2009243480A patent/JP2011090496A/ja active Pending
-
2010
- 2010-08-30 WO PCT/JP2010/005330 patent/WO2011048738A1/ja active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6587915B1 (en) * | 1999-09-29 | 2003-07-01 | Samsung Electronics Co., Ltd. | Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same |
JP2008507756A (ja) * | 2004-07-21 | 2008-03-13 | サンディスク コーポレイション | 最適化されたシーケンシャルなクラスタの管理のためのfat分析 |
JP2008198208A (ja) * | 2007-02-13 | 2008-08-28 | Samsung Electronics Co Ltd | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 |
WO2008130799A1 (en) * | 2007-04-19 | 2008-10-30 | Microsoft Corporation | Remove-on-delete technologies for solid state drive optimization |
JP2009064251A (ja) * | 2007-09-06 | 2009-03-26 | Hitachi Ltd | 半導体記憶装置及び半導体記憶装置の制御方法 |
JP4164118B1 (ja) * | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012198811A (ja) * | 2011-03-22 | 2012-10-18 | Toshiba Corp | メモリシステム、不揮発性記憶装置及びその制御方法 |
US9032138B2 (en) | 2011-11-23 | 2015-05-12 | Samsung Electronics Co., Ltd. | Storage device based on a flash memory and user device including the same |
US9043565B2 (en) | 2012-09-07 | 2015-05-26 | Kabushiki Kaisha Toshiba | Storage device and method for controlling data invalidation |
JP2016189207A (ja) * | 2013-03-13 | 2016-11-04 | シーゲイト テクノロジー エルエルシーSeagate Technology LLC | 記憶デバイスおよび記憶空間割当方法 |
US10223010B2 (en) | 2013-03-13 | 2019-03-05 | Seagate Technology Llc | Dynamic storage device provisioning |
JP2014059889A (ja) * | 2013-10-29 | 2014-04-03 | Toshiba Corp | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム |
JP2016126738A (ja) * | 2014-12-29 | 2016-07-11 | 株式会社東芝 | メモリ装置及びプログラム |
US10120793B2 (en) | 2014-12-29 | 2018-11-06 | Toshiba Memory Corporation | Memory device and non-transitory computer readable recording medium |
JP2019106197A (ja) * | 2014-12-29 | 2019-06-27 | 東芝メモリ株式会社 | メモリ装置、メモリシステム及びプログラム |
CN106205707B (zh) * | 2014-12-29 | 2019-10-22 | 东芝存储器株式会社 | 存储器装置 |
JP2021047889A (ja) * | 2014-12-29 | 2021-03-25 | キオクシア株式会社 | メモリ装置及びその制御方法 |
JP7030942B2 (ja) | 2014-12-29 | 2022-03-07 | キオクシア株式会社 | メモリ装置及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2011048738A1 (ja) | 2011-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2011048738A1 (ja) | 半導体記憶装置および制御方法 | |
JP5087347B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
US9378131B2 (en) | Non-volatile storage addressing using multiple tables | |
JP5032172B2 (ja) | 統合メモリ管理装置及び方法並びにデータ処理システム | |
US8219776B2 (en) | Logical-to-physical address translation for solid state disks | |
US9448919B1 (en) | Data storage device accessing garbage collected memory segments | |
US7340581B2 (en) | Method of writing data to non-volatile memory | |
US9026764B2 (en) | Memory system performing wear leveling based on deletion request | |
TWI398770B (zh) | 用於快閃記憶體的資料存取方法、儲存系統與控制器 | |
TWI385519B (zh) | 資料寫入方法及使用此方法的快閃儲存系統與其控制器 | |
US20130275660A1 (en) | Managing trim operations in a flash memory system | |
JP6139381B2 (ja) | メモリシステムおよび方法 | |
KR101678868B1 (ko) | 플래시 주소 변환 장치 및 그 방법 | |
US8296503B2 (en) | Data updating and recovering methods for a non-volatile memory array | |
US20140289449A1 (en) | Storage apparatus, storage controller and method for relocating data in solid state drive | |
JP2013061799A (ja) | 記憶装置、記憶装置の制御方法およびコントローラ | |
US20130097362A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US20100318726A1 (en) | Memory system and memory system managing method | |
US20150205538A1 (en) | Storage apparatus and method for selecting storage area where data is written | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
JP2013206307A (ja) | メモリ制御装置、データ記憶装置及びメモリ制御方法 | |
US20240256465A1 (en) | Method of handling trim command in flash memory and related memory controller and storage system thereof | |
JP2013061814A (ja) | データ記憶装置、メモリ制御装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130423 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20131008 |