JP2011128998A - 半導体記憶装置 - Google Patents
半導体記憶装置 Download PDFInfo
- Publication number
- JP2011128998A JP2011128998A JP2009288503A JP2009288503A JP2011128998A JP 2011128998 A JP2011128998 A JP 2011128998A JP 2009288503 A JP2009288503 A JP 2009288503A JP 2009288503 A JP2009288503 A JP 2009288503A JP 2011128998 A JP2011128998 A JP 2011128998A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- management
- block
- page
- trim
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/7205—Cleaning, 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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】効率のよいブロック解放が可能な半導体記憶装置を提供すること。
【解決手段】ホストから通知されるトリム要求を解釈するコマンド解釈部と、コマンド解釈部で解釈されたトリム要求で指定された第1および第2の記憶部の領域を第1の管理データ単位に管理する第1の管理部と、コマンド解釈部で解釈されたトリム要求で指定された第2の記憶部の領域を第2の管理データ単位に管理する第2の管理部と、第2の管理部によって全てがトリム指定された第2の管理データを含むブロック、第1の管理部によって全てがトリム指定された第1の管理データを含むブロックを解放する解放制御部とを備える。
【選択図】図1
【解決手段】ホストから通知されるトリム要求を解釈するコマンド解釈部と、コマンド解釈部で解釈されたトリム要求で指定された第1および第2の記憶部の領域を第1の管理データ単位に管理する第1の管理部と、コマンド解釈部で解釈されたトリム要求で指定された第2の記憶部の領域を第2の管理データ単位に管理する第2の管理部と、第2の管理部によって全てがトリム指定された第2の管理データを含むブロック、第1の管理部によって全てがトリム指定された第1の管理データを含むブロックを解放する解放制御部とを備える。
【選択図】図1
Description
本発明は、不揮発性半導体メモリを備えた半導体記憶装置に関する。
例えば、ホスト機器で利用する記憶装置をHDD(Hard Disk Drive)からフラッシュメモリなどの半導体記憶装置に置換する場合、HDDに記憶されたデータをフラッシュメモリにコピーすることが考えられている。このHDDに不良セクタがあった場合、不良セクタの記憶位置を示すセクタアドレスから読み出されたデータは、復元不能な誤ったデータとして読み出される(例えば特許文献1参照)。
本発明は、効率のよいブロック解放が可能な半導体記憶装置を提供することを目的とする。
本願発明の一態様によれば、消去単位であるブロックを複数個有し、前記ブロック単位より小さい第1の管理データ単位で管理される不揮発性半導体メモリとしての第1の記憶部と、消去単位であるブロックを複数個有し、前記ブロック単位以下であって前記第1の管理データ単位より大きい第2の管理データ単位で管理される不揮発性半導体メモリとしての第2の記憶部と、前記第1および第2の記憶部を管理するコントローラとを備え、前記コントローラは、ホストから通知されるトリム要求を解釈するコマンド解釈部と、前記コマンド解釈部で解釈されたトリム要求で指定された前記第1および第2の記憶部の領域を前記第1の管理データ単位に管理する第1の管理部と、前記コマンド解釈部で解釈されたトリム要求で指定された前記第2の記憶部の領域を前記第2の管理データ単位に管理する第2の管理部と、前記第2の管理部によって全てがトリム指定された第2の管理データを含むブロック、第1の管理部によって全てがトリム指定された第1の管理データを含むブロックを解放する解放制御部とを備えることを特徴とする。
本発明によれば、効率のよいブロック解放が可能となるという効果を奏する。
以下に添付図面を参照して、本発明の実施の形態にかかる半導体記憶装置を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
近年、ATAコマンドセットのDATA SET MANAGEMENTコマンドにおいて、“TRIM”という属性(ビット)が定義されている。以下、TRIMビットを含むDATA SET MANAGEMENTコマンドをTRIMコマンドと呼称して説明する。TRIMコマンドは、ホスト(OS)から記憶デバイスに、OSにとって不要になった記憶領域を通知するものであり、セクタ単位のLBAで指定される。TRIMのコマンドについては、例えば、以下の文献を参考にすれば良いため、ここでは詳細説明を省略する(http://www.t13.org/Documents/UploadedDocuments/docs2009/d2015r1a-ATAATAPI_Command_Set_-_2_ACS-2.pdf)。また、TRIMコマンドはATA規格のコマンドに限られず、同様の内容を含んでいれば、他の規格で定義されたコマンドであってもよい。
また、TRIMコマンドの仕様には、TRIMコマンドによりTRIMされた領域がリードコマンドによりリードされた場合に特定の値を返すことが要求されるDeterministic Read After Trim(DRAT)というオプションがある。TRIMコマンドは、例えば、TRIM(DRAT)コマンドであることを示すコード、セクタ単位の論理アドレスであるLBAの開始アドレス、サイズ(セクタ数)などを含む。第1の実施の形態では、通常TRIMコマンドに対応させ、第2の実施の形態では、DRATコマンドに対応させる。
まず、比較例について説明する。NANDメモリは、消去がブロック単位、書き込みがページ単位であり,セクタ単位で指定されるTRIMコマンドとのあいだに差異がある(ブロック>ページ>セクタ)。ブロック単位のみで管理している半導体記憶装置の場合、LBAのTRIM範囲が、LBAのブロック単位のアドレス境界に完全に合致しているようなTRIMコマンドにしか対応できない。図15は、LBAのTRIM範囲がLBAブロックアドレスN−1として指定された場合を示しており、このようにTRIM範囲がブロック単位のアドレス境界に完全に合致する場合は、ブロックN−1を使用割り当てが決まっているブロックから内部に有効データを含まない用途未割り当てのブロックであるフリーブロックとして解放することができる。しかしながら、ブロック管理のみの場合は、たとえば,図15のブロックアドレス3に示すように、ひとつのブロック内のページが別々のTRIMコマンドで指定された場合、ブロックアドレス3内の全ページがTRIM対象となった場合であってもそのブロックを解放することができない。また、ブロック単位のみで管理している場合に、DRATをサポートするには,ブロックサイズよりも小さい単位のTRIM要求に対してTRIM範囲を含むNANDメモリのブロックをいったんバッファに読み出し,そのデータ上のTRIM範囲に対応する箇所のみにTRIM仕様で定められた値を書き込み、それをNANDメモリのブロックに書き戻す必要があり、余計な書き込みが発生する。
(第1の実施の形態)
図1は、半導体記憶装置としてのSSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。SSD100は、不揮発性半導体メモリとしての多値記憶が可能なNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、キャッシュメモリなどとして機能するRAM(Random Access Memory)20と、ホスト1とNANDメモリ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御するコントローラ30とを備えている。
図1は、半導体記憶装置としてのSSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。SSD100は、不揮発性半導体メモリとしての多値記憶が可能なNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、キャッシュメモリなどとして機能するRAM(Random Access Memory)20と、ホスト1とNANDメモリ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御するコントローラ30とを備えている。
ホスト1はSSD100対し、ReadまたはWriteする際には、ATAインタフェース2を介して論理アドレスとしてのLBA(Logical Block Addressing)を入力する。LBAは、図2に示すように、セクタ(サイズ:512B)に対して0からの通し番号をつけた論理アドレスである。これに対して、NANDメモリ10においてデータを読み書きする単位は、セクタサイズ(512B)の2のs乗倍の大きさであり、この単位の記憶領域をページと呼ぶ。NANDメモリ10の1ページには、LBAセクタアドレスの連続した領域が割当てられる。
また、NANDメモリ10は、内部において独立して消去可能な最小単位としてのブロックから構成され、ブロックは、複数(2のt乗個)のページから構成される。本実施の形態においては、キャッシュメモリ21、NANDメモリ10の管理単位として、LBAの下位(s+1)ビット目から上位のビット列で構成される論理ページアドレスと、LBAの下位(s+t+1)ビットから上位のビット列で構成される論理ブロックアドレスとを定義する。
RAM20は、ホスト1とNANDメモリ10間でのデータ転送用キャッシュとして機能するキャッシュメモリ(ライトキャッシュ(WC)21a、リードキャッシュ(RC)21b)21と、各種管理情報を記憶する管理情報記憶部22と、作業エリア23とを備えている。WC21aは、ホスト1からのWriteデータを一時保存して、NANDメモリ10に出力する。RC21bは、NANDメモリ10からのReadデータを一時保存してホスト1に出力する。WC21aのリソースが不足した場合には、WC21aの記憶データはNANDメモリ10に追い出される。キャッシュメモリ21上のデータは、セクタ単位で管理される。
図3は、キャッシュメモリ21を管理するキャッシュ管理テーブル40の構成例を示している。このキャッシュ管理テーブル40は、RAM20の管理情報記憶部22に作成される。キャッシュ管理テーブル40は、キャッシュメモリ21に記憶されるデータを、ページ単位で管理する。また、データの有効/無効の管理は、セクタ単位で実行される。キャッシュ管理テーブル40の各エントリには、論理ページアドレス、キャッシュメモリ21での記憶位置を示す物理アドレス、及び対応するページ単位の領域内の有効データの位置を表すセクタフラグが関連付けられている。キャッシュ管理テーブル40において、キャッシュメモリ21の各ページ単位の領域は、更にセクタ単位の領域に分割され、各セクタ単位の領域内のデータの状態を、セクタフラグの値を「有」または「無」にすることで示す。セクタフラグが「有」の領域には、ホスト1からの有効データが記憶されている。これに対し、セクタフラグが「無」の領域には、ホスト1から書き込まれた最新のデータが記憶されておらず、無効な領域となる。有効データとは最新データのことであり、無効データとは、同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったデータのことである。
NANDメモリ10内のブロックは、書き込み時のNANDメモリ10に対する消去の量を減らすために、コントローラ30により、前段ストレージ領域(FS:Front Storage)12、中段ストレージ領域(IS:Intermediate Storage)13およびメインストレージ領域(MS:Main Storage)11という各管理領域に割り当てられている。FS12は、WC21からのデータを「小さな単位」である例えばページ単位に管理するものであり、小データを短期間保存する。IS13は、FS12から溢れたデータを「小さな単位」であるページ単位に管理するものであり、小データを長期間保存する。MS11は、WC21、FS12、IS13からのデータを「大きな単位」であるブロック単位で管理する。WC21上で有効ページの多いブロック(高密度ブロック)は、ブロック単位にWC20aから直接MS11に書き込まれる。WC21上で有効ページの少ないブロック(低密度ブロック)は、WC20aからページ単位にFS12に書き込まれる。
・メインストレージ領域(MS)11
MS11はブロック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。WC21a上で有効ページの多いブロック(高密度ブロック)は、WC12から直接MS11に書き込まれる。その他、MS11には、FS12、IS13で管理しきれなくなったデータが入力される。MS11に入力されたブロックと同一LBAのブロックについては無効化し、このブロックを解放する。MS11に入力されたブロックに含まれるデータと同一LBAを含むページについては、FS12、IS13内で無効化し、ブロック内の全ページが無効になったブロックは解放する。MSでの1ブロックには、LBAのブロック境界でアラインされる連続したLBAページアドレスが割り付けられる。これに対しFS12、IS13では、ページ管理であるので、FS12、IS13の1ページに、LBAのページ境界でアラインされる連続したLBAセクタアドレスが割当てられる。
MS11はブロック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。WC21a上で有効ページの多いブロック(高密度ブロック)は、WC12から直接MS11に書き込まれる。その他、MS11には、FS12、IS13で管理しきれなくなったデータが入力される。MS11に入力されたブロックと同一LBAのブロックについては無効化し、このブロックを解放する。MS11に入力されたブロックに含まれるデータと同一LBAを含むページについては、FS12、IS13内で無効化し、ブロック内の全ページが無効になったブロックは解放する。MSでの1ブロックには、LBAのブロック境界でアラインされる連続したLBAページアドレスが割り付けられる。これに対しFS12、IS13では、ページ管理であるので、FS12、IS13の1ページに、LBAのページ境界でアラインされる連続したLBAセクタアドレスが割当てられる。
・前段ストレージ領域(FS)12
FS12はページ単位でデータが管理されるFIFO構造のバッファであり、入力もページ単位で行われる。FS12には、WC21上で有効ページ数の少ないブロック(低密度ブロック)が最初に書き込まれる。データの書き込み順序でブロックが並んだFIFO構造となっている。FS12に存在するページと同一LBAのページがFS12に入力された場合、FS12内のページを無効化するだけでよく、書き換え動作を伴わない。FS12に入力されたページと同一LBAのページについては、ブロック内で無効化し、ブロック内の全ページが無効になったブロックは解放する。FS12のFIFO構造の最後まで到達したブロックに格納されたページは、ホスト1から再書き込みされる可能性の低いページとみなし、ブロックごとIS13の管理下に移動する。更新頻度の高いデータはFS12を通過している最中に無効化され、更新頻度の低いデータだけがFS12から溢れていくため、更新頻度の高いデータと低いデータとをFS12で選り分けることができる。これにより、後段のIS13でコンパクションが頻繁に発生する可能性を低減させることが可能である。
FS12はページ単位でデータが管理されるFIFO構造のバッファであり、入力もページ単位で行われる。FS12には、WC21上で有効ページ数の少ないブロック(低密度ブロック)が最初に書き込まれる。データの書き込み順序でブロックが並んだFIFO構造となっている。FS12に存在するページと同一LBAのページがFS12に入力された場合、FS12内のページを無効化するだけでよく、書き換え動作を伴わない。FS12に入力されたページと同一LBAのページについては、ブロック内で無効化し、ブロック内の全ページが無効になったブロックは解放する。FS12のFIFO構造の最後まで到達したブロックに格納されたページは、ホスト1から再書き込みされる可能性の低いページとみなし、ブロックごとIS13の管理下に移動する。更新頻度の高いデータはFS12を通過している最中に無効化され、更新頻度の低いデータだけがFS12から溢れていくため、更新頻度の高いデータと低いデータとをFS12で選り分けることができる。これにより、後段のIS13でコンパクションが頻繁に発生する可能性を低減させることが可能である。
・中段ストレージ領域(IS)13
IS13は、再書き込みされる可能性の低いページを格納するためのバッファであり、FS12と同様にページ単位でデータの管理が行われる。IS13に存在するページと同一LBAのページがFS12、IS13に入力された場合、IS13内のページを無効化するだけでよく、書き換え動作を伴わない。IS13においては、FS12と同様、データの書き込まれた順序(FS12から移動された順序)が古いブロックから並んだリスト構造をとるが、コンパクションを行う点がFS12と異なる。IS13の容量が飽和した場合、あるいはFS12、IS13管理用のテーブルが飽和した場合は、コンパクション(IS13から有効ページを集めてIS13へ書き戻すこと)やデフラグ(FS12およびIS13のページをブロックに統合して、MS11へ追い出すこと)を行う。
IS13は、再書き込みされる可能性の低いページを格納するためのバッファであり、FS12と同様にページ単位でデータの管理が行われる。IS13に存在するページと同一LBAのページがFS12、IS13に入力された場合、IS13内のページを無効化するだけでよく、書き換え動作を伴わない。IS13においては、FS12と同様、データの書き込まれた順序(FS12から移動された順序)が古いブロックから並んだリスト構造をとるが、コンパクションを行う点がFS12と異なる。IS13の容量が飽和した場合、あるいはFS12、IS13管理用のテーブルが飽和した場合は、コンパクション(IS13から有効ページを集めてIS13へ書き戻すこと)やデフラグ(FS12およびIS13のページをブロックに統合して、MS11へ追い出すこと)を行う。
図4は、ブロック管理テーブル50の構成例を示している。ブロック管理テーブルとは、MS11に記憶されるデータを、ブロック単位で管理するものであり、LBAの論理ブロックアドレスとNANDメモリ10でのブロック記憶位置を示す物理ブロックアドレスとの対応関係が登録されて、各ブロックの有効/無効を示す無効フラグと、TRIM指定ありか否かを示すTRIMフラグが付加されているものであれば、その構成は任意である。例えば、ブロック管理テーブル50として、論理ブロックアドレスから物理ブロックアドレスを求める正引きテーブルを用意してもよいし、物理ブロックアドレスから論理ブロックアドレスを求める逆引きテーブルを用意してもよいし、両者を用意してもよい。さらに、双方向のリスト構造などを採用しても良い。
図4では、ブロック管理テーブル50は、LBAの(s+t+1)ビット以上の上位アドレスによって構成される論理ブロックアドレス毎のエントリに、管理情報が登録されている。管理情報としては、当該論理ブロックアドレスに対応するNANDメモリ10でのデータの記憶位置を示す物理ブロックアドレスと、当該ブロックアドレスが無効か有効かを示す無効フラグと、TRIM指定ありか否かを示すTRIMフラグなどを含む。無効フラグがオンであるブロックとは、同一LBAの最新データが他の場所に書きこまれ、参照されることがなくなったブロックのことをいう。なお、TRIMフラグと無効フラグを同一フラグによって管理しても良い。
図5は、ページ管理テーブル60の構成例を示している。図6は、他のページ管理テーブル60の構成例を示している。ページ管理テーブルとは、FS12およびIS13に記憶されるデータを、ページ単位で管理するものであり、LBAの論理ページアドレスとNANDメモリ10でのページ記憶位置を示す物理ブロックアドレスとそのブロック内ページ位置を示す情報との対応関係が記録されて、各ページの有効/無効を示す無効フラグと、各ページがTRIM指定ありか否かを示すTRIMフラグが付加されているものであれば、その構成は任意である。例えば、ページ管理テーブルとして、論理ページアドレスからNANDメモリ内の記憶位置を求める正引きテーブルを用意してもよいし、NANDメモリ内の記憶位置から論理ページアドレスを求める逆引きテーブルを用意してもよいし、両者を用意してもよい。さらに、双方向のリスト構造などを採用しても良い。ただし、MS11に関しても、TRIMコマンドが入力された場合、必要に応じて、ページ管理テーブルを作成し、必要が無くなった場合にページ管理テーブルを解放する。
図5では、ページ管理テーブル60は、LBAの下位(s+1)ビット目から上位のビット列で構成される論理ページアドレス毎のエントリに、管理情報が登録されている。管理情報としては、当該ページアドレスに対応する最新のデータがMS11、FS12、IS13の何れに記憶されているかを示す所属情報と、当該論理ページアドレスに対応するNANDメモリ10でのデータの記憶位置を示す物理アドレス情報としての物理ブロックアドレス+ブロック内物理ページ位置と、当該ページアドレスが無効か有効かを示す無効フラグと、当該ページがTRIM指定ありか否かを示すTRIMフラグなどを含む。無効フラグがオンであるページとは、同一LBAの最新データが他の場所に書きこまれ、参照されることがなくなったページのことをいう。ページ管理テーブルにおいても、TRIMフラグと無効フラグを同一フラグによって管理しても良い。
図6では、ページ管理テーブル60は、複数の物理ブロックアドレスについてのブロックエントリを有し、ブロックエントリ毎に、物理ブロック内のページ数分(2のt乗個)のページエントリを有している。各ページエントリには、LBAの論理ページアドレスと、当該ページアドレスが無効か有効かを示す無効フラグ、当該ページがTRIM指定ありか否かを示すTRIMフラグなどを含む管理情報が記録される。この図6のページ管理テーブル60では、ブロックエントリ内の記憶位置で、物理ブロック内物理ページアドレスを管理している。例えば、論理ページアドレスAのデータは、物理ブロックアドレスXのページ0に記憶され、論理ページアドレスDのデータは、物理ブロックアドレスYのページ1に記憶されていることを示している。以下の、説明では、MS11用のページ管理テーブルを作成する際には、図6に示すようなページ管理テーブルを作成するとする。
図7は、物理ブロック管理テーブル70の構成例を示している。物理ブロック管理テーブル70は、NANDメモリ10での物理ブロックの使用状況を管理する。物理ブロック管理テーブル70は、物理ブロックアドレス毎のエントリに、管理情報として、ブロックの使用状況(ブロックがMS11、FS12,IS13の何れで使用されているかまたは未使用か)を記憶する。ブロックが未使用とは、ブロックがフリーブロックであることを意味する。
NANDメモリ10を管理するためのブロック管理テーブル50、ページ管理テーブル60、物理ブロック管理テーブル70などの管理情報は、RAM20の管理情報記憶部22で管理される。また、RAM20の管理情報記憶部22で管理される管理情報をバックアップするために、定期的又は任意のタイミングでNANDメモリ10の管理情報記憶部14に記憶して不揮発化している。
第1の実施の形態では、TRIM領域をブロック単位とページ単位との2段階で管理することにより、ページ単位のTRIM要求にも対応しブロックの解放を行う。また、NANDメモリ10にアクセスすることなく管理テーブルを操作することによってTRIMコマンドに対応する。ここで、前述したように、NANDメモリ10のFS12、IS13では、ページ単位の管理を行っているので、FS12、IS13にページ単位のTRIM要求があった場合は、ページ管理テーブル60のTRIMフラグをオンにし、1つの物理ブロック内の全ての物理ページのデータが無効であるかあるいはTRIM指定がなされた場合、すなわち例えば図6のページ管理テーブル60の1つの物理アドレスについてのブロックエントリ中の全てのページエントリについての無効フラグまたはTRIMフラグがオンになった場合に、その時点でその物理ブロックをフリーブロックとして解放し、かつその解放するブロックに所属するページ管理テーブルのページエントリを解放する。
一方、MS11はブロック管理しか行っていないので、MS11にページ単位のTRIM要求があった場合、TRIM要求があった時点で、MS11用のページ管理テーブルを作成し、作成したページ管理テーブルの該当ページエントリのTRIMフラグをオンにする。ただし、MS11では、基本的にブロック管理のみを行い、TRIM要求に関するページ管理しか行わないので、作成されるMS11用のページ管理テーブルでは、無効フラグの欄は、例えば、最初からオフ(有効)として作成するか、無効フラグの欄は参照せずにTRIMフラグの欄のみを参照するようにする。そして、1つの物理ブロック内の全ての物理ページのデータにTRIM要求がなされた場合、すなわち例えば図6のページ管理テーブル60の1つの物理アドレスについてのブロックエントリ中の全てのページエントリについてのTRIMフラグがオンになった場合に、その時点でその物理ブロックをフリーブロックとして解放し、かつその解放するブロックに所属するページ管理テーブルのページエントリを解放する。このようにブロックより小さいページ単位でもTRIM管理することで、TRIMコマンドでブロックを効率よくフリーブロックに解放するとともに、NANDメモリ10の全ての記憶領域に関するページ管理テーブルを持つ場合に比べ、RAM20の管理情報記憶部22およびNANDメモリ10の管理情報記憶部14でのテーブル容量を削減する。
なお、MS11については、ブロック単位のTRIM要求にのみ対応し、ページ単位のTRIM要求には非対応としてもよい。また、MS11については、ページ管理テーブルのサイズに上限値を設け、この上限値に達するまではページ管理テーブルを作成してページ単位のTRIM要求に対応し、上限値を超えた後は、ページ単位のTRIM要求には非対応としてもよい。
図1において、コントローラ30は、コマンド解釈部31、読み書き制御部32、読み書き制御部32、トリム領域判定部33、管理テーブル管理部34、デフラグ処理部35、応答データ生成部36を備える。
コマンド解釈部31は、ホストI/F2を介してホスト1から受信したコマンドを解釈する。ホスト機器から送信されるコマンドには、データの読み出しを要求するコマンド、データの書き込みを要求するコマンド、前述のTRIM(DRAT)コマンドなどが含まれる。コマンドには、LBAの論理セクタアドレスが含まれる。TRIM(DRAT)コマンドの場合は、開始論理セクタアドレス、サイズ(セクタ数)を含む。コマンド解釈部31は、このようなコマンドを解釈し、当該コマンドに応じて、読み出し対象や書き出し対象のセクタアドレスや、TRIM(DRAT)対象の開始論理セクタアドレス、セクタ数などを適宜抽出する。
読み書き制御部32は、コマンド解釈部31の解釈結果に基づいて、キャッシュメモリ21を介してホスト1とNANDメモリ10との間でデータ転送制御を実行する。具体的には、読み書き制御部32は、キャッシュメモリ21に対するホスト1からのデータの書き込み、キャッシュメモリ21からホスト1へのデータの読み出し、NANDメモリ10のMS11、FS12、またはIS13からキャッシュメモリ21へのデータ転送、キャッシュメモリ21からMS11またはFS12へのデータ転送、FS12からIS13へのデータ移動、IS13からMS11へのデータ転送などを実行する。
トリム領域判定部33は、TRIMコマンドで指定されたトリム領域の容量などを判定する。具体的には、トリム領域判定部33は、TRIMコマンドで指定されたトリム領域が、1ブロック容量以上であるか否か、1ページ容量以上であるか否か、ブロック単位のアライン境界に合致しているか否か、ページ単位のアライン境界に合致しているか否かなどを判定する。
管理テーブル管理部34は、前述したキャッシュ管理テーブル40、ブロック管理テーブル50、ページ管理テーブル60、物理ブロック管理テーブル70などを含む管理テーブルの更新制御を実行する。管理テーブル管理部34は、機能的には、ブロック管理部34a、ページ管理部34b、セクタ管理部34c、解放制御部34dを備える。ブロック管理部34aは、NANDメモリ10についてブロック単位の管理を実行する。ページ管理部34bは、NANDメモリ10についてページ単位の管理を実行する。セクタ管理部34cは、NANDメモリ10についてセクタ単位の管理を実行する。解放制御部34dは、全てのセクタまたはページがトリム指定されたブロックをフリーブロックに解放する制御を実行する。
デフラグ処理部35は、ページ管理テーブルのためのリソースを確保するためのデフラグ処理を実行する。すなわち、管理テーブル管理部34によりRAM20とNANDメモリ10にページ管理テーブルを記憶するためのリソースがあるか否かが判定され、リソースがないと判定された場合に、デフラグ処理部35がデフラグ処理を実行する。デフラグ処理とは、FS12あるいはIS13のページデータをブロックに統合して、MS11に追い出す処理をいう。このデフラグ処理により、ページ管理テーブルのページエントリが削減され、結果的に、RAMの管理情報記憶部22およびNANDメモリ10の管理情報記憶部14で、ページ管理テーブルを作成するためのリソースが確保される。
応答データ生成部36は、第2の実施の形態で使用されるものであり、リードコマンドがDRATコマンドで指定されたセクタアドレスになされた場合に、所定の応答データを生成して読み書き制御部32に渡す処理を実行する。応答データとしては、例えば、特定の定数(例えば「0」など)や、乱数などがある。また、コマンド解釈部31が抽出したセクタアドレスに対応する物理アドレスに記憶されているデータを応答データとしても良い。この場合、応答データ生成部36は、NANDメモリ10にアクセスして、当該物理アドレスに記憶されているデータを読み出す。
つぎに、図8に示すフローチャートに従って、第1の実施形態のTRIM対応処理について説明する。
まず、ホストから開始セクタアドレス、セクタ数を含むTRIMコマンドが入力されると、このTRIMコマンドはコマンド解釈部31によって解釈される。トリム領域判定部33は、コマンド解釈部31の解釈結果に基づき、当該TRIMコマンドが1ブロック容量以上の領域に対するものであるか否かを判定する(ステップS100)。トリム領域判定部33は、TRIMコマンドが1ブロック容量以上の領域を要求していると判定した場合には、つぎに、このTRIM領域中に、TRIM範囲がブロック単位でアラインされるアドレス境界に完全に合致するブロックがMS11に1個以上含まれているか否かを判定する(ステップS105)。
図9は、ブロック単位のアライン境界とTRIMコマンドで指定されるLBAセクタアドレスとの関係を示している。図9(a)の場合は、ブロック単位でアラインされるアドレス境界に完全に合致する2個のブロック(2個の合致領域として図示)を含み、端数領域が存在しないLBA指定がなされたことを示している。図9(b)の場合は、ブロック単位でアラインされるアドレス境界に完全に合致する1個のブロックを含み(1個の合致領域として図示)、かつページまたはセクタ単位でしかアラインできない端数領域を含むLBA指定がなされたことを示している。図9(c)の場合は、LBA指定は1ブロック容量以上であるが、このLBA指定には、ページまたはセクタ単位でしかアラインできない端数領域のみしか存在しない場合を示している。
ステップS105の判断がYESとなるのは、例えば、図9(a)や図9(b)の場合であり、ステップS105の判断がNOとなるのは、例えば、図9(c)の場合である。ステップS105の判断がNOの場合は、ブロック管理は実行不可能なので、手順をステップS130に移行させ、ページ管理を行う。ステップS105の判断がYESの場合、管理テーブル管理部34はブロック単位でアラインされるアドレス境界に完全に合致するブロック(合致領域)については、ブロック管理テーブル50の対応する論理ブロックアドレスのエントリのTRIMフラグをオンにする(ステップS110)。
また、管理テーブル管理部34は、ページ管理テーブル60を検索することで、ブロック管理テーブル50のTRIMフラグをオンにした合致ブロックに記憶されたデータと同じ論理ページアドレスを持つ有効データがFS12、IS13に存在するか否かを検索する(ステップS115)。管理テーブル管理部34は、存在すると判定した場合、ページ管理テーブル60の対応するページエントリのTRIMフラグをオンにする。(ステップS120)。また、ステップS115の判断で、存在しないと判定した場合は、手順をステップS125に移行させる。
つぎに、トリム領域判定部33は、今回のTRIM指定で、端数領域が存在するか否かを判定し(ステップS125)、端数領域が存在しない場合は、手順をステップS300に移行させ、また端数領域が存在する場合は、手順をステップS130に移行させて、ページ管理を行う。
ステップS130において、トリム領域判定部33は、TRIM領域が1ページ容量以上あるか否かを判定する。ステップS130の判定対象としてのTRIM領域は、TRIMコマンド自体の要求領域が1ページ容量以上で1ブロック容量未満の場合と(ステップS100の判断がNO)、図9(c)に示したようにステップS105の判断がNOとなる場合と、図9(b)に示したように、ステップS125の判断がYESとなる場合がある。
トリム領域判定部33は、ステップS130の判断がYESの場合、TRIM領域に、ページ単位でアラインされるアドレス境界に完全に合致するページを1個以上含むか否かを判定する(ステップS135)。
この第1の実施の形態では、1ページ容量未満のセクタでしかアラインできない端数領域は、TRIM対象としないので、ステップS130の判断がNOとなった場合、あるいはステップS135の判断がNOとなった場合は、手順をステップS300に移行させる。ステップS135の判断がYESの場合、管理テーブル管理部34は、ページ単位でアラインされるアドレス境界に完全に合致するページについては、ページ管理テーブル60に全てのページエントリが存在するか否かを判定する(ステップS140)。ページ管理テーブル60に全てのページエントリが存在するということは、TRIM対象の有効ページがFS12またはIS13に記憶されている第1のケースと、TRIM対象の有効ページが含まれるMS11用の1ブロック分のページエントリが既に作成されている第2のケースと、第1および第2の双方のケースが発生する第3のケースがある。また、ページ管理テーブル60に全てのページエントリが存在しない場合とは、MS11用の1ブロック分のページエントリを新たに作成する必要が有る場合である。
ステップS140の判断がYESの場合、管理テーブル管理部34は、ページ管理テーブル60におけるTRIM領域に対応するページアドレスのエントリのTRIMフラグをオンにする(ステップS160)。
一方、ステップS140の判断がNOの場合、管理テーブル管理部34は、RAM20とNANDメモリ10にページ管理テーブルを記憶するためのリソースがあるか否かを判定し(ステップS145)、リソースがないと判定した場合は、デフラグ処理部35がデフラグ処理を実行し(ステップS150)、NANDメモリ10およびRAM20にページ管理テーブルを記憶するためのリソースを確保する。デフラグ処理とは、前述したように、FS12あるいはIS13のページデータをブロックに統合して、MS11に追い出す処理であり、このデフラグ処理により、ページ管理テーブルのページエントリが削減され、結果的に、RAMの管理情報記憶部22およびNANDメモリ10の管理情報記憶部14で、ページ管理テーブルを作成するためのリソースが確保される。
管理テーブル管理部34は、ステップS145の判断がYESとなった場合、あるいはステップS150でNANDメモリ10のデフラグを実行した後、ページ単位でアラインされるアドレス境界に完全に合致する全てのページに関し、ページ管理テーブル60にページエントリを作成する(ステップS155)。そして、管理テーブル管理部34は、ページ管理テーブル60にページエントリを作成後、ページ管理テーブル60におけるTRIM領域に対応するページアドレスのエントリのTRIMフラグをオンにする(ステップS160)。
つぎに、管理テーブル管理部34は、ブロック管理テーブル50からTRIMフラグがオンの物理ブロックを抽出することで、NANDメモリ10のMS11から全物理ページがTRIMである物理ブロックを抽出する(ステップS300)。さらに、管理テーブル管理部34は、ページ管理テーブル60の無効フラグおよびTRIMフラグを参照することにより、NANDメモリ10のMS11、FS12、またはIS13から全物理ページが無効またはTRIMである物理ブロックを抽出する(ステップS300)。別言すれば、ページ管理テーブル60から全ての物理ページが無効フラグがオンであるかまたはTRIMフラグがオンである物理ブロックを抽出する。
そして、管理テーブル管理部34は、抽出された物理ブロックに対応する物理ブロック管理テーブル70のエントリを未使用にすることで、抽出された物理ブロックをフリーブロックとして解放する(ステップS310)。ただし、前述したように、MS11用に作成したページ管理テーブル60のページエントリでは、ページ単位の無効/有効を管理しておらず、ステップS300でMS11用のページ管理テーブル60の無効フラグを参照するようにする場合は、MS11用のページ管理テーブル60の無効フラグは全ページオフ(有効)として作成する。また、MS11用のページ管理テーブル60と、FS12、IS13用のページ管理テーブル60とを識別可能とし、MS11用のページ管理テーブル60と、FS12、IS13用のページ管理テーブル60とを別管理するようにしてもよい。MS11用のページ管理テーブル60の場合は、無効フラグの欄を設けないようにしてもよいし、ステップS300で無効フラグの欄は参照せずにTRIMフラグの欄のみを参照するようにしてもよい。また、MS11用のページ管理テーブル60の場合、論理ページアドレスとTRIMフラグとの関係が識別できればよい。
つぎに、管理テーブル管理部34は、解放可能なページ管理テーブルのページエントリが有るか否かを判断する(ステップS320)。この場合に、解放可能なページ管理テーブルのページエントリとは、全てが無効かあるいはTRIM指定がされているページエントリを含む図6に示すような物理ブロック単位のページエントリのことをいう。管理テーブル管理部34は、解放可能なページ管理テーブルが有る場合に、ステップS310で解放した物理ブロックに対応するページ管理テーブル60のページエントリを全て解放(削除)する(ステップS330)。例えば、図6のページ管理テーブルにおいて、物理ブロックアドレスXに所属する各ページエントリの無効フラグまたはTRIMフラグが“1”になって物理ブロックアドレスXの物理ブロックが解放された場合、この物理ブロックアドレスXに所属する各ページエントリを削除する。
例えば、図9(a)に示すようなLBAアドレスのTRIM要求がMS11の記憶領域に対してなされた場合、ステップS105がYESとなり、ステップS110でブロックアライン境界に合致する2つの合致ブロックに対するブロック管理テーブル50のTRIMフラグがオンにされる。また、ステップS115がNOまたはYES、ステップS125がNOとなり、ステップS300でブロック管理テーブル50のTRIMフラグが参照されることで、ステップS310で少なくとも2つのブロックが解放される。少なくともと言ったのは、ステップS120でのTRIMフラグのオンにより、FS12,IS13で解放されるブロックが存在する可能性があるためである。この場合は、MS11で解放されたブロックに対応するページ管理テーブル60は、存在していないので、ステップS320がNOとなり、ページ管理テーブルの解放はない。
図9(b)に示すようなLBAアドレスのTRIM要求がMS11の記憶領域に対してなされた場合、ステップS105がYESとなり、ステップS110でブロックアライン境界に合致する1つの合致ブロックに対するブロック管理テーブル50のTRIMフラグがオンにされる。その後、ステップS115がNOまたはYES、ステップS125がYESとなる。また、ここでは、ステップS130がYES、ステップS135がYESとなるとする。ここでは、図9(b)に示す端数領域に対応するTRIM要求は初めてだとするので、ステップS140がNOとなり、端数領域に対応するページエントリを含む1ブロック分のページエントリが作成された後、ステップS160でページ管理テーブル60の端数領域に対応する全てのページエントリのTRIMフラグがオンにされる。すなわち、ステップS160では、端数領域に対応する有効データがFS12、IS13に存在するか否かが検索され、端数領域に対応する有効データがFS12、IS13に少なくとも1つ存在する場合は、FS12、IS13用のページ管理テーブルの該当するページエントリのTRIMフラグをオンとするとともに、ステップS155で作成した1ブロック分のページエントリ中の端数領域に対応するページエントリのTRIMフラグがオンにされる。そして、ステップS300でブロック管理テーブル50が参照されることで、ステップS310で少なくとも1つのブロックが解放される。この場合は、MS11で解放されたブロック(合致領域)に対応するページ管理テーブル60は、存在しないので、ステップS320がNOとなり、ページ管理テーブルの解放はない。
ここで、その後、図9(d)に示すようなLBAアドレスのTRIM要求がMS11の記憶領域に対してなされたとする。この場合は、ステップS100がNOとなり、ステップS130がYES、ステップS135がYESとなる。この場合は、図9(b)でのTRIM処理を行った際にページ管理テーブルのα領域のエントリは既に作成されているが、β領域を含む1ブロック分のページエントリは存在しないので、ステップS140の判断がNOとなり、β領域を含む1ブロック分のページ管理テーブルが新たに作成される。そして、ステップS160において、既に作成されているMS11用の1ブロック分のページエントリ中の残りのページエントリ(α領域)のTRIMフラグがオンにされ、さらに新たに作成された1ブロック分のページエントリ中のβ領域に対応するページエントリのTRIMフラグがオンにされる。また、ステップS160においては、今回LBA指定された領域(α+β領域)に対応する有効データがFS12、IS13に存在するか否かが検索され、(α+β領域)に対応する有効データがFS12、IS13に少なくとも1つ存在する場合は、FS12、IS13用のページ管理テーブルの該当するページエントリのTRIMフラグをオンとする。したがって、ステップS300で、ページ管理テーブル60が参照されることで、ステップS310で少なくとも1つのブロック(α領域を含むブロック)が解放される。この場合は、MS11で解放されたブロックに対応するページ管理テーブル60が存在するので、ステップS320がYESとなり、ステップS330で、解放されたブロックに対応するページ管理テーブルが解放される。
図10は、第1の実施の形態のブロック解放、ページ管理テーブルの解放を概念的に示す図であり、TRIM済みであるページをページ管理テーブルに順次登録しておき、全てのページがTRIM対象となった時点で、ブロック解放、ページ管理テーブルの解放が行われることが示されている。
このように第1の実施の形態では、TRIMコマンドをブロック単位とページ単位との2段階で管理し、ページ単位のTRIM要求にも対応してブロックをフリーブロックとして解放しているので、フリーブロックとして解放されるブロックが増加する。これにより、静的ウェアレベリングの対象ブロックとしてのフリーブロックが増加し、動的ウェアレベリングの対象ブロックが減少するので、SSDの寿命延長にも寄与し、さらに高速書き込み処理にもつながる。
すなわち、NAND型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリであり、その寿命は、書き換え回数に依存している。一方、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際にホスト機器から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、NAND型フラッシュメモリでは、ブロック間での書き換え回数を平均化させるウェアレベリングと呼ばれる処理が行われている。ウェアレベリング制御には、書き換え回数の少ないブロックから書き込み・消去を行う静的ウェアレベリングと、書き換えが長い間行われず書き換え回数の少ないブロックを書き換え回数の多いブロックと交換する動的ウェアレベリングとがある。動的ウェアレベリングの場合は、ブロックの交換とは言っても、実際にはブロックに対する書き込みが発生する。したがって、TRIMコマンドによって解放されないブロックは、動的ウェアレベリングの対象になり、無駄な書き込みが発生する。しかし、TRIMコマンドによってフリーブロックに解放された場合は、動的ウェレベリングの対象にならず、無駄な書き込みが発生しない。
また、TRIMコマンドによって解放されないブロックの一部領域に対し更新書き込みが発生した場合、ブロックの一部領域以外の領域を読みだして、読み出した領域のデータと、更新書き込みされたデータをマージして他のブロックに書き込むといった処理を行う。TRIMコマンドによってブロックが解放されている場合は、読み出し処理は発生せず、更新書き込みされたデータの書き込みのみで済む。したがって、TRIMコマンドによって効率よくブロックをフリーブロックに解放することは、高速書き込みにつながる。
なお、ページ管理テーブルの代わりにセクタ管理テーブルを設け、通常TRIMをセクタ単位まで対応させるようにしてもよい。
(第2の実施の形態)
第2の実施形態では、TRIMコマンドを、ブロック単位とページ単位とセクタ単位の3段階で管理することにより、DRATに対応させる。なお、ブロック単位の管理を行うブロック管理テーブルと、セクタ単位の管理を行うセクタ管理テーブルとの2段階の管理で、DRATに対応させるようにしてもよい。また、各ページに所属する各セクタの有効/無効を示す図3に示したようなセクタフラグをページ管理テーブルに付随させることで、DRATに対応させるようにしてもよい。
第2の実施形態では、TRIMコマンドを、ブロック単位とページ単位とセクタ単位の3段階で管理することにより、DRATに対応させる。なお、ブロック単位の管理を行うブロック管理テーブルと、セクタ単位の管理を行うセクタ管理テーブルとの2段階の管理で、DRATに対応させるようにしてもよい。また、各ページに所属する各セクタの有効/無効を示す図3に示したようなセクタフラグをページ管理テーブルに付随させることで、DRATに対応させるようにしてもよい。
第2の実施形態では、例えば、図11に示すようなセクタ管理テーブル80を追加している。セクタ管理テーブルとは、MS11、FS12およびIS13に記憶されるデータを、セクタ単位で管理するものであり、LBAの論理セクタアドレスとNANDメモリ10でのセクタ記憶位置を示す物理ページアドレスとそのページ内セクタ位置を示す情報との対応関係が記録されて、各セクタの有効/無効を示す無効フラグと、各セクタがTRIM指定ありか否かを示すTRIMフラグが付加されているものであれば、その構成は任意である。例えば、セクタ管理テーブルとして、論理セクタアドレスからNANDメモリ内の記憶位置を求める正引きテーブルを用意してもよいし、NANDメモリ内の記憶位置から論理セクタアドレスを求める逆引きテーブルを用意してもよいし、両者を用意してもよい。さらに、双方向のリスト構造、前述したページ管理テーブルに付随させるセクタフラグなどを採用しても良い。
図11では、セクタ管理テーブル80は、複数の物理ページアドレスについてのページエントリを有し、ページエントリ毎に、物理ページ内のセクタ数分(2のs乗個)のセクタエントリを有している。各セクタエントリには、LBAの論理セクタアドレスと、当該セクタアドレスが無効か有効かを示す無効フラグ、当該セクタがTRIM指定ありか否かを示すTRIMフラグなどを含む管理情報が記録される。この図11のセクタ管理テーブル80では、ページエントリ内の記憶位置で、物理ページ内物理セクタアドレスを管理している。例えば、論理セクタアドレスAのデータは、物理ページアドレスXのページ0に記憶され、論理セクタアドレスDのデータは、物理ページアドレスYのページ1に記憶されていることを示している。無効フラグがオンであるセクタとは、同一LBAの最新データが他の場所に書きこまれ、参照されることがなくなったセクタのことをいう。セクタ管理テーブルにおいても、TRIMフラグと無効フラグを同一フラグによって管理しても良い。
ただし、セクタ管理テーブル80は、DRAT要求を受信するまでは作成されておらず、DRAT要求を受信後に作成されて、必要に応じて解放(削除)されるものとする。
つぎに、図12に示すフローチャートに従って、第2の実施形態のDRAT対応処理について説明する。図12のフローチャートは、図8のフローチャートに対し、ステップS190〜ステップS240を追加し、図8のステップS300〜S330をステップS400〜ステップS450に置換しており、重複する説明は省略する。
図12のステップS190においては、ページ単位のアライン境界に対する端数領域があるか否かを判定している。図12において、ステップS130の判断がNOとなった場合、ステップS135の判断がNOとなった場合、ステップS190の判断がYESとなった場合には、当該TRIM領域についてのセクタ管理テーブル80のエントリが存在するか否かを判定する(ステップS200)。セクタ管理テーブル80において所要のセクタエントリが存在する場合、管理テーブル管理部34は、セクタ管理テーブル80の対応するセクタアドレスのエントリのTRIMフラグをオンにする(ステップS240)。
一方、ステップS200でセクタ管理テーブルに所要のセクタエントリが存在しないと判定された場合、管理テーブル管理部34は、RAM20とNANDメモリ10にセクタ管理テーブルを記憶するためのリソースがあるか否かを判定し(ステップS210)、リソースがないと判定した場合は、デフラグ処理部35がデフラグ処理を実行し(ステップS220)、NANDメモリ10およびRAM20にセクタ管理テーブルを記憶するためのリソースを確保する。すなわち、デフラグ処理により、ページ管理テーブルのページエントリが削減され、結果的に、RAMの管理情報記憶部22およびNANDメモリ10の管理情報記憶部14で、セクタ管理テーブルを作成するためのリソースが確保される。
管理テーブル管理部34は、ステップS210の判断がYESとなった場合、あるいはステップS220でNANDメモリ10のデフラグを実行した後、TRIM領域に対応するセクタエントリを作成する(ステップS230)。そして、管理テーブル管理部34は、セクタ管理テーブル80にセクタエントリを作成後、セクタ管理テーブル80の対応するセクタアドレスのエントリのTRIMフラグをオンにする(ステップS240)。
ステップS400においては、ブロック管理テーブル50、ページ管理テーブル60、セクタ管理テーブル80のいずれか、あるいは2つ以上を参照することにより、所属する全セクタが無効かあるいはTRIM指定がなされている物理ブロックを抽出し、抽出した物理ブロックを前記同様にして解放する(ステップS410)。
つぎに、管理テーブル管理部34は、前記同様、解放可能なページ管理テーブルが有るか否かを判断する(ステップS320)。管理テーブル管理部34は、解放するページ管理テーブルが有る場合に、ステップS310で解放した物理ブロックに対応するページ管理テーブル60のページエントリを全て解放(削除)し、かつDRATに対応可能にするため、解放した物理ブロックに対応するブロック管理テーブル50のエントリのTRIMフラグをオンにする(ステップS430)。
つぎに、管理テーブル管理部34は、解放可能なセクタ管理テーブルが有るか否かを判断する(ステップS440)。解放可能なセクタ管理テーブルとは、全てが無効かあるいはTRIM指定がされているセクタエントリを含む物理ページ単位のセクタエントリのことをいう。例えば、図11のセクタ管理テーブルにおいて、物理ページアドレスXに所属する各セクタエントリの無効フラグまたはTRIMフラグが“1”になって物理ページアドレスXの物理ページを含む物理ブロックが解放された場合、この物理ページアドレスXに所属する各セクタエントリを解放可能とする。管理テーブル管理部34は、解放するセクタ管理テーブルが有る場合に、ステップS310で解放した物理ブロックに対応するセクタ管理テーブル80のセクタエントリを全て解放(削除)し、かつDRATに対応可能にするため、解放した物理ブロックに含まれる全物理ページに対応するページ管理テーブル60のページエントリのTRIMフラグをオンにする(ステップS450)。
ただし、DRATをサポートする第2の実施の形態においては、トリム領域判定部33は、TRIM指定された有効データがキャッシュメモリ21(WC21a、RC21b)にあるか否かも判定しており、TRIM指定された有効データがキャッシュメモリ21にある場合は、キャッシュメモリ21上の有効データを無効データにする処理を行っている。無効化処理では、例えば、図3のキャッシュ管理テーブル40において、TRIM領域に含まれるセクタのセクタフラグを無効データとする。
ホスト1からリード要求コマンドが入力された場合は、コマンド解釈部31でコマンドを解釈し、リード対象領域をブロック管理テーブル50、ページ管理テーブル60、セクタ管理テーブル80の各エントリから検索し、リード対象領域に対応するエントリ中のTRIMフラグがオンであった場合は、応答データ生成部36を起動して所定の応答データを生成して読み書き制御部32に渡し、読み書き制御部32によって所定の応答データをホスト1に出力する。
このように第2の実施の形態では、管理テーブルによってTRIM領域をブロック単位とページ単位とセクタ単位の3段階で管理することにより、DRATに対応させるようにしたので、DRATサポート時の処理の高速化、記憶装置の寿命延長につながる。
なお、第1、第2の実施形態では、管理単位を、ページ、ブロックとしたが、MS11の管理単位はブロック以下の管理単位でページより大きい管理単位であれば任意である。また、FS12、IS13での管理単位は、セクタ以上で、MS11での管理単位よりも小さい管理単位であれば、任意である。MS11の管理単位がブロックより小さい場合は、MS11においては、その管理単位が全てTRIM指定されたブロックを解放することになる。また、TRIM指定の有無をTRIMフラグで識別するようにしたが、データ自体をNULLデータにするなど他の手法を採用するようにしてもよい。また、ページ管理されるFS12、IS13の何れか一方を削除するような実施も可能である。
(第3の実施の形態)
図13は、SSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えており、このようなパーソナルコンピュータ1200からSSD100に対し前述のTRIMコマンドが出力される。
図13は、SSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えており、このようなパーソナルコンピュータ1200からSSD100に対し前述のTRIMコマンドが出力される。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図14は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス1314等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばDRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、以上のように表わしかつ記述した特定の詳細及び代表的な実施形態に限定されるものではない。したがって、添付のクレーム及びその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
1 ホスト装置、2 ホストインタフェース、10 NANDメモリ、11 MS、12 FS、13 IS、20 RAM、21 キャッシュメモリ、30 コントローラ、31 コマンド解釈部、33 トリム領域判定部、34 管理テーブル管理部、35 デフラグ処理部、36 応答データ生成部、40 キャッシュ管理テーブル、50 ブロック管理テーブル、60 ページ管理テーブル、70 物理ブロック管理テーブル、80 セクタ管理テーブル。
Claims (5)
- 消去単位であるブロックを複数個有し、前記ブロック単位より小さい第1の管理データ単位で管理される不揮発性半導体メモリとしての第1の記憶部と、
消去単位であるブロックを複数個有し、前記ブロック単位以下であって前記第1の管理データ単位より大きい第2の管理データ単位で管理される不揮発性半導体メモリとしての第2の記憶部と、
前記第1および第2の記憶部を管理するコントローラと、
を備え、
前記コントローラは、
ホストから通知されるトリム要求を解釈するコマンド解釈部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第1および第2の記憶部の領域を前記第1の管理データ単位に管理する第1の管理部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第2の記憶部の領域を前記第2の管理データ単位に管理する第2の管理部と、
前記第2の管理部によって全てがトリム指定された第2の管理データを含むブロック、第1の管理部によって全てがトリム指定された第1の管理データを含むブロックを解放する解放制御部と、
を備えることを特徴とする半導体記憶装置。 - 前記第2の管理データ単位は、前記ブロックのサイズと一致し、第1の管理単位がセクタ単位より大きく、
前記解放制御部は、前記第2の管理部によってトリム指定された第2の管理データに対応するブロックを解放することを特徴とする請求項1に記載の半導体記憶装置。 - 前記第1の管理部は、第1の記憶部の領域が無効であるか有効であるかを前記第1の管理データ単位に管理し、
前記解放制御部は、第1の管理部によって全てがトリム指定または無効指定された第1の管理データを含むブロックを解放することを特徴とする請求項1または2に記載の半導体記憶装置。 - 前記第1の管理部は、トリム要求で指定された前記第1および第2の記憶部の領域を前記第1の管理データ単位に管理する第1の管理テーブルを有し、
前記第2の管理部は、トリム要求で指定された前記第2の記憶部の領域を前記第2の管理データ単位に管理する第2の管理テーブルを有し、
前記第1の管理部は、解放されたブロックを管理している第1の管理テーブルのエントリを解放することを特徴とする請求項1〜3の何れか一つに記載の半導体記憶装置。 - 消去単位であるブロックを複数個有し、前記ブロック単位より小さくセクタより大きい第1の管理データ単位で管理される不揮発性半導体メモリとしての第1の記憶部と、
消去単位であるブロックを複数個有し、前記ブロック単位以下であって前記第1の管理データ単位より大きい第2の管理データ単位で管理される不揮発性半導体メモリとしての第2の記憶部と、
前記第1および第2の記憶部を管理するコントローラと、
を備え、
前記コントローラは、
ホストから通知されるトリム要求を解釈するコマンド解釈部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第1および第2の記憶部の領域を前記第1の管理データ単位に管理する第1の管理部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第2の記憶部の領域を前記第2の管理データ単位に管理する第2の管理部と、
前記コマンド解釈部で解釈されたトリム要求で指定された前記第1および第2の記憶部の領域をセクタ単位に管理する第3の管理部と、
前記第1〜第3の管理部の管理に基づき、全てがトリム指定されたセクタを含むブロックを解放する解放制御部と、
前記第1〜第3の管理部の管理に基づき、トリム指定された前記第1または第2の記憶部に読み出し要求が発生したことを判定した場合、所定の応答データを返信する応答制御部と、
を備えることを特徴とする半導体記憶装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009288503A JP2011128998A (ja) | 2009-12-18 | 2009-12-18 | 半導体記憶装置 |
PCT/JP2010/073653 WO2011074712A1 (en) | 2009-12-18 | 2010-12-20 | Semiconductor storage device and personal computer |
TW099144885A TW201145019A (en) | 2009-12-18 | 2010-12-20 | Semiconductor storage device and personal computer |
US13/462,905 US9229863B2 (en) | 2009-12-18 | 2012-05-03 | Semiconductor storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009288503A JP2011128998A (ja) | 2009-12-18 | 2009-12-18 | 半導体記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011128998A true JP2011128998A (ja) | 2011-06-30 |
Family
ID=44167458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009288503A Pending JP2011128998A (ja) | 2009-12-18 | 2009-12-18 | 半導体記憶装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9229863B2 (ja) |
JP (1) | JP2011128998A (ja) |
TW (1) | TW201145019A (ja) |
WO (1) | WO2011074712A1 (ja) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013190878A1 (en) | 2012-06-19 | 2013-12-27 | Kabushiki Kaisha Toshiba | Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device |
JP2014179084A (ja) * | 2013-03-14 | 2014-09-25 | Lsi 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 |
US9201784B2 (en) | 2012-09-07 | 2015-12-01 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method for controlling nonvolatile semiconductor memory |
US9304685B2 (en) | 2013-09-10 | 2016-04-05 | Kabushiki Kaisha Toshiba | Storage array system and non-transitory recording medium storing control program |
US9367444B2 (en) | 2012-03-16 | 2016-06-14 | Kabushiki Kaisha Toshiba | Non-volatile memory device, control method for information processing device, and information processing device |
JP2016126738A (ja) * | 2014-12-29 | 2016-07-11 | 株式会社東芝 | メモリ装置及びプログラム |
JP2016212713A (ja) * | 2015-05-12 | 2016-12-15 | 東芝情報システム株式会社 | 論理物理アドレス変換テーブルの制御方法及びメモリ装置 |
US10120793B2 (en) | 2014-12-29 | 2018-11-06 | Toshiba Memory Corporation | Memory device and non-transitory computer readable recording medium |
JP2019008814A (ja) * | 2018-08-31 | 2019-01-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
US10452283B2 (en) | 2011-08-19 | 2019-10-22 | Toshiba Memory Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
JP2020123041A (ja) * | 2019-01-29 | 2020-08-13 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10949090B2 (en) | 2017-03-23 | 2021-03-16 | Toshiba Memory Corporation | Memory system that stores data designated by a deletion request in nonvolatile memory |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012008651A (ja) | 2010-06-22 | 2012-01-12 | Toshiba Corp | 半導体記憶装置、その制御方法および情報処理装置 |
TWI579692B (zh) | 2010-10-29 | 2017-04-21 | 三星電子股份有限公司 | 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法 |
JP2012123499A (ja) | 2010-12-07 | 2012-06-28 | Toshiba Corp | メモリシステム |
JP2012128643A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP5405513B2 (ja) | 2011-03-22 | 2014-02-05 | 株式会社東芝 | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム |
JP2012203443A (ja) | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
JP5581256B2 (ja) | 2011-03-28 | 2014-08-27 | 株式会社東芝 | メモリシステム、コントローラ、およびメモリシステムの制御方法 |
JP2012221251A (ja) | 2011-04-08 | 2012-11-12 | Toshiba Corp | メモリシステムの制御方法、情報処理装置、及びプログラム |
EP2742429A4 (en) * | 2011-08-09 | 2015-03-25 | Lsi Corp | I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US9251055B2 (en) | 2012-02-23 | 2016-02-02 | Kabushiki Kaisha Toshiba | Memory system and control method of memory system |
US20130326113A1 (en) * | 2012-05-29 | 2013-12-05 | Apple Inc. | Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory |
TWI493339B (zh) * | 2012-06-13 | 2015-07-21 | Silicon Motion Inc | 資料儲存裝置及資料清除方法 |
US9195578B2 (en) * | 2012-08-24 | 2015-11-24 | International Business Machines Corporation | Systems, methods and computer program products memory space management for storage class memory |
US20140129758A1 (en) * | 2012-11-06 | 2014-05-08 | Spansion Llc | Wear leveling in flash memory devices with trim commands |
KR20140093505A (ko) * | 2013-01-18 | 2014-07-28 | 삼성전자주식회사 | 단말기의 메모리 확장 장치 및 방법 |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US20140237164A1 (en) * | 2013-02-19 | 2014-08-21 | Kabushiki Kaisha Toshiba | Hybrid drive that implements a deferred trim list |
KR20150015621A (ko) * | 2013-07-31 | 2015-02-11 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI515735B (zh) * | 2013-12-09 | 2016-01-01 | 群聯電子股份有限公司 | 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置 |
KR20150111692A (ko) * | 2014-03-26 | 2015-10-06 | 삼성전자주식회사 | 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템 |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10922228B1 (en) | 2015-03-31 | 2021-02-16 | EMC IP Holding Company LLC | Multiple location index |
US10210087B1 (en) | 2015-03-31 | 2019-02-19 | EMC IP Holding Company LLC | Reducing index operations in a cache |
CN105446655A (zh) * | 2015-04-23 | 2016-03-30 | 北京天诚盛业科技有限公司 | 对Nand Flash进行操作的方法和装置 |
US9880770B2 (en) * | 2015-09-02 | 2018-01-30 | SK Hynix Inc. | Supporting invalidation commands for non-volatile memory |
US10474362B2 (en) * | 2016-10-14 | 2019-11-12 | Smart Modular Technologies, Inc. | Flash-based block storage system with trimmed space management and method of operation thereof |
US10403369B2 (en) * | 2016-10-17 | 2019-09-03 | SK Hynix Inc. | Memory system with file level secure erase and operating method thereof |
US10268413B2 (en) * | 2017-01-27 | 2019-04-23 | Samsung Electronics Co., Ltd. | Overflow region memory management |
US10289330B2 (en) * | 2017-03-30 | 2019-05-14 | Western Digital Technologies, Inc. | Allocating shared memory among multiple tasks in a multiprocessor environment |
JP7089423B2 (ja) * | 2018-07-12 | 2022-06-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び制御方法 |
US10725931B2 (en) | 2018-08-22 | 2020-07-28 | Western Digital Technologies, Inc. | Logical and physical address field size reduction by alignment-constrained writing technique |
JP2020047340A (ja) * | 2018-09-19 | 2020-03-26 | キオクシア株式会社 | 不揮発性メモリ及びメモリシステム |
US11586385B1 (en) | 2020-05-06 | 2023-02-21 | Radian Memory Systems, Inc. | Techniques for managing writes in nonvolatile memory |
TWI742961B (zh) * | 2020-12-10 | 2021-10-11 | 旺宏電子股份有限公司 | 快閃記憶體系統及其快閃記憶體裝置 |
US11868642B2 (en) * | 2021-08-31 | 2024-01-09 | Micron Technology, Inc. | Managing trim commands in a memory sub-system |
US11853554B2 (en) | 2022-04-05 | 2023-12-26 | Western Digital Technologies, Inc. | Aligned and unaligned data deallocation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008198208A (ja) * | 2007-02-13 | 2008-08-28 | Samsung Electronics Co Ltd | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 |
WO2009084724A1 (en) * | 2007-12-28 | 2009-07-09 | Kabushiki Kaisha Toshiba | Semiconductor storage device |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4143040B2 (ja) | 2004-03-31 | 2008-09-03 | 東芝ソリューション株式会社 | ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム |
US8122193B2 (en) | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
US20100180072A1 (en) | 2007-06-22 | 2010-07-15 | Shigekazu Kogita | Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program |
JP4461170B2 (ja) | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
JP4489127B2 (ja) | 2008-02-29 | 2010-06-23 | 株式会社東芝 | 半導体記憶装置 |
JP4439569B2 (ja) | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
JP4551958B2 (ja) | 2008-12-22 | 2010-09-29 | 株式会社東芝 | 半導体記憶装置および半導体記憶装置の制御方法 |
JP5198245B2 (ja) | 2008-12-27 | 2013-05-15 | 株式会社東芝 | メモリシステム |
JP5317689B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP5317690B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP5221332B2 (ja) | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
JP2010157130A (ja) | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
JP2012128643A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP5405513B2 (ja) | 2011-03-22 | 2014-02-05 | 株式会社東芝 | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム |
JP2012203443A (ja) | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
-
2009
- 2009-12-18 JP JP2009288503A patent/JP2011128998A/ja active Pending
-
2010
- 2010-12-20 TW TW099144885A patent/TW201145019A/zh unknown
- 2010-12-20 WO PCT/JP2010/073653 patent/WO2011074712A1/en active Application Filing
-
2012
- 2012-05-03 US US13/462,905 patent/US9229863B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008198208A (ja) * | 2007-02-13 | 2008-08-28 | Samsung Electronics Co Ltd | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 |
WO2009084724A1 (en) * | 2007-12-28 | 2009-07-09 | Kabushiki Kaisha Toshiba | Semiconductor storage device |
Non-Patent Citations (1)
Title |
---|
JPN7013002739; Working draft of ATA/ATAPI Command Set-2 (ACS-2) [online], T13/2015-D Revision 1a , 20090302, p.93, American National Standards Institute * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452283B2 (en) | 2011-08-19 | 2019-10-22 | Toshiba Memory Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
US11119661B2 (en) | 2011-08-19 | 2021-09-14 | Toshiba Memory Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
US11726661B2 (en) | 2011-08-19 | 2023-08-15 | Kioxia Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
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 |
US9367444B2 (en) | 2012-03-16 | 2016-06-14 | Kabushiki Kaisha Toshiba | Non-volatile memory device, control method for information processing device, and information processing device |
US9501230B2 (en) | 2012-06-19 | 2016-11-22 | Kabushiki Kaisha Toshiba | Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device |
US9880766B2 (en) | 2012-06-19 | 2018-01-30 | Toshiba Memory Corporation | Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device |
WO2013190878A1 (en) | 2012-06-19 | 2013-12-27 | Kabushiki Kaisha Toshiba | Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device |
US9201784B2 (en) | 2012-09-07 | 2015-12-01 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method for controlling nonvolatile semiconductor memory |
US9043565B2 (en) | 2012-09-07 | 2015-05-26 | Kabushiki Kaisha Toshiba | Storage device and method for controlling data invalidation |
US9785384B2 (en) | 2012-09-07 | 2017-10-10 | Toshiba Memory Corporation | Semiconductor storage device and method for controlling nonvolatile semiconductor memory |
JP2014179084A (ja) * | 2013-03-14 | 2014-09-25 | Lsi Corp | ソリッドステート・メディアにおいてマルチレベル・マッピングを使用する機構 |
US9304685B2 (en) | 2013-09-10 | 2016-04-05 | Kabushiki Kaisha Toshiba | Storage array system and non-transitory recording medium storing control program |
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 | 東芝メモリ株式会社 | メモリ装置、メモリシステム及びプログラム |
JP2021047889A (ja) * | 2014-12-29 | 2021-03-25 | キオクシア株式会社 | メモリ装置及びその制御方法 |
JP7030942B2 (ja) | 2014-12-29 | 2022-03-07 | キオクシア株式会社 | メモリ装置及びその制御方法 |
US11726906B2 (en) | 2014-12-29 | 2023-08-15 | Kioxia Corporation | Memory device and non-transitory computer readable recording medium |
JP2016126738A (ja) * | 2014-12-29 | 2016-07-11 | 株式会社東芝 | メモリ装置及びプログラム |
US12111760B2 (en) | 2014-12-29 | 2024-10-08 | Kioxia Corporation | Memory device and non-transitory computer readable recording medium |
JP2016212713A (ja) * | 2015-05-12 | 2016-12-15 | 東芝情報システム株式会社 | 論理物理アドレス変換テーブルの制御方法及びメモリ装置 |
US10949090B2 (en) | 2017-03-23 | 2021-03-16 | Toshiba Memory Corporation | Memory system that stores data designated by a deletion request in nonvolatile memory |
JP2019008814A (ja) * | 2018-08-31 | 2019-01-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
JP2020123041A (ja) * | 2019-01-29 | 2020-08-13 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7159069B2 (ja) | 2019-01-29 | 2022-10-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120221776A1 (en) | 2012-08-30 |
TW201145019A (en) | 2011-12-16 |
WO2011074712A1 (en) | 2011-06-23 |
US9229863B2 (en) | 2016-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011128998A (ja) | 半導体記憶装置 | |
CN108021510B (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
US9053007B2 (en) | Memory system, controller, and method for controlling memory system | |
US10747666B2 (en) | Memory system | |
EP2439645B1 (en) | Method and apparatus for storing data in a multi-level cell flash memory device | |
US9384123B2 (en) | Memory system | |
US7802054B2 (en) | Apparatus and methods using invalidity indicators for buffered memory | |
JP4988007B2 (ja) | 情報処理装置およびドライバ | |
JP4988008B2 (ja) | 情報処理装置およびドライバ | |
US20130275650A1 (en) | Semiconductor storage device | |
US8825946B2 (en) | Memory system and data writing method | |
EP2423819A1 (en) | Memory mapping techniques | |
JP6139381B2 (ja) | メモリシステムおよび方法 | |
JP2012008651A (ja) | 半導体記憶装置、その制御方法および情報処理装置 | |
US11747979B2 (en) | Electronic device, computer system, and control method | |
US20120260025A1 (en) | Method for controlling memory system, information processing apparatus, and storage medium | |
US20080263282A1 (en) | System for Caching Data | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
WO2020039927A1 (ja) | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム | |
JP2010176305A (ja) | 情報処理装置およびデータ記憶装置 | |
US11941246B2 (en) | Memory system, data processing system including the same, and operating method thereof | |
JP2010152517A (ja) | 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法 | |
JP2011113129A (ja) | 情報記録装置及び情報記録方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130723 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20131203 |