JP2019046238A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2019046238A JP2019046238A JP2017169477A JP2017169477A JP2019046238A JP 2019046238 A JP2019046238 A JP 2019046238A JP 2017169477 A JP2017169477 A JP 2017169477A JP 2017169477 A JP2017169477 A JP 2017169477A JP 2019046238 A JP2019046238 A JP 2019046238A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- circuit
- tag
- unit area
- unit areas
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
【課題】ライトアクセスのレイテンシの変動を緩和すること。【解決手段】メモリシステムは、不揮発性メモリと、第1バッファと、第1回路と、第2回路と、第3回路とを備える。第1回路は、ホストから受信したデータを第1バッファを介して不揮発性メモリに書き込む。第2回路は、不揮発性メモリからデータを読み出して、読み出されたデータを第1バッファを介して不揮発性メモリに書き込む。第1バッファは、第2バッファと第3バッファとを含む。第3回路は、タイマを備える。第3回路は、データが第2バッファから不揮発性メモリに書き込まれたことに応じて、第1バッファを第1回路または第2回路にアロケートする。また、第3回路は、データが第3バッファから不揮発性メモリに書き込まれた後、タイマに設定された設定時間に応じたタイミングで、第3バッファを第1回路にアロケートする。【選択図】図4
Description
本実施形態は、メモリシステムに関する。
従来、NAND型のフラッシュメモリ(以降、NANDメモリ)を備えたメモリシステムが知られている。
NANDメモリに対しては、原則的に、データの上書きができない。また、NANDメモリに対しては、データの消去はブロックより小さい単位で実行できない。このため、メモリシステムに具備されるメモリコントローラは、空き領域を有するブロックを生成するために、NANDメモリ内のデータをリロケートする。データをリロケートする上記した処理は、ガベージコレクションと称される。
ガベージコレクションが開始すると、データのリロケートのためにリソースが割かれることで、ホストからのライトアクセスのレイテンシが悪化することがある。
一つの実施形態は、ライトアクセスのレイテンシの変動を緩和したメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、ホストに接続可能であり、不揮発性メモリと、第1バッファと、第1回路と、第2回路と、第3回路とを備える。第1回路は、ホストから受信したデータを第1バッファを介して不揮発性メモリに書き込む。第2回路は、不揮発性メモリからデータを読み出して、読み出されたデータを第1バッファを介して不揮発性メモリに書き込む。第1バッファは、第1回路および第2回路にアロケート可能な第2バッファと、第1回路にアロケート可能であり第2回路にアロケート可能でない第3バッファと、を含む。第3回路は、タイマを備える。第3回路は、データが第2バッファから不揮発性メモリに書き込まれたことに応じて、第1バッファを第1回路または第2回路にアロケートする。また、第3回路は、データが第3バッファから不揮発性メモリに書き込まれた後、タイマに設定された設定時間に応じたタイミングで、第3バッファを前記第1回路にアロケートする。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と接続可能である。メモリシステム1とホスト2との間の通信路の規格は、特定の規格に限定されない。一例では、SAS(Serial Attached SCSI)が採用され得る。
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と接続可能である。メモリシステム1とホスト2との間の通信路の規格は、特定の規格に限定されない。一例では、SAS(Serial Attached SCSI)が採用され得る。
ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセスコマンド(リードコマンドおよびライトコマンド)を受け付けることができる。各アクセスコマンドは、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す。メモリシステム1は、ライトコマンドとともに、ライトコマンドによって書き込み要求されたデータを受信することができる。
メモリシステム1は、メモリコントローラ10と、NAND型のフラッシュメモリ(NANDメモリ)20と、を備えている。メモリコントローラ10は、ホスト2とNANDメモリ20との間のデータ転送を実行する。
なお、NANDメモリ20は、不揮発性メモリの一例である。メモリシステム1は、NANDメモリ20の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム1は、NANDメモリ20の代わりにNOR型のフラッシュメモリを具備することができる。
NANDメモリ20は、1以上のメモリチップ21によって構成され得る。各メモリチップ21は、メモリセルアレイ22を備える。各メモリセルアレイ22は、図2に例示されるように、複数のブロック23を備える。1つのブロック23に格納されている全てのデータは、一括に消去され得る。各ブロック23は、複数のページを備える。ページは、データがリードまたはライトされ得る最小の記憶領域である。
ここで、NANDメモリ20に対するデータの書き込み方法を説明する。ホスト2から送られてきたデータ(新しいデータ)は、空き領域を有するブロック23に書き込まれる。新しいデータがそのブロック23に書き込まれると、論理アドレスと物理アドレスとの対応関係を示す翻訳情報(翻訳情報160)が更新される。各物理アドレスは、NANDメモリ20内の物理的な位置を示す。翻訳情報160の更新によって、新しいデータの論理アドレス空間内の位置を示す論理アドレスが新しいデータのNANDメモリ20内の書き込み先の位置を示す物理アドレスに対応付けられる。
新しいデータが書き込まれる前にその論理アドレスに別のデータ(古いデータ)の書き込み先を示す物理アドレスが対応付けられていた場合、翻訳情報160の更新により、当該古いデータの書き込み先を示す物理アドレスは、何れの論理アドレスも対応付けられていない状態となる。その結果、メモリシステム1は、ホスト2が新しいデータをリードすることが可能であるが古いデータをリードすることができないという状態になる。論理アドレスが対応付けられている物理アドレスが示す位置に格納されているデータを、有効データと表記する。何れの論理アドレスも対応付けられていない物理アドレスが示す位置に格納されているデータを、無効データと表記する。
NANDメモリ20への書き込みが行われることによって、空き領域が消費される。メモリコントローラ10は、空き領域を有するブロック23を生成するために、ブロック23内に含まれる無効データをイレースする。しかし、1つのブロック23に記憶される全てのデータが無効であることは稀であるため、メモリコントローラ10は、あるブロック23内に残っている有効データを別のブロック23にコピーする。メモリコントローラ10が、有効データをコピーするとともに翻訳情報160を更新することで、コピー元のブロック23の有効データは、コピー先のブロック23にリロケートされる。有効データのリロケートによって、コピー元のブロック23は、有効データを全く含まない状態になる。リロケートによって有効データを全く含まなくなったブロック23は、フリーブロックと呼ばれる。フリーブロックに格納されているデータは、一括にイレースされ、そのフリーブロック内の全てのページは空き領域になる。フリーブロックの数を増やすために有効データをブロック23間でリロケートする処理は、ガベージコレクションと称される。
なお、コピー元のブロック23およびコピー先のブロック23は、任意の方法で選択され得る。一例では、複数のブロック23のうちの格納している有効データの量が少ないブロック23が優先的にコピー元のブロック23として選択される。また、空き領域を有するブロック23がコピー先のブロック23として選択される。
このように、メモリコントローラ10は、NANDメモリ20に対し、ホスト2から受信したデータの書き込みと、ガベージコレクションの一環として含まれる、NANDメモリ20から読み出されたデータの書き込みと、の2種類の書き込みを実行する。以降、ホスト2から受信したデータのNANDメモリ20への書き込みをホストライトと表記することがある。また、ガベージコレクションに起因するNANDメモリ20への書き込みをガベージコレクションライト(GCライト)と表記することがある。
図1に説明を戻す。メモリコントローラ10は、ホストコントローラ11、NANDコントローラ12、CPU(Central Processing Unit)13、リソース管理回路14、ガベージコレクション(GC)制御回路15、およびRAM(Random Access Memory)16を備える。メモリコントローラ10は、例えばSoC(system-on-chip)として構成され得る。メモリコントローラ10は、複数のチップによって構成されてもよい。
RAM16は、データを一時記憶することができる記憶領域として機能する。RAM16を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM16は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成され得る。RAM16は、揮発性メモリによって構成され得る。
RAM16には、翻訳情報160が格納される。翻訳情報160は、RAM16上で更新される。翻訳情報160は、所定のタイミングでRAM16からNANDメモリ20に書き込まれる(保存される)。そして、NANDメモリ20に保存された翻訳情報160は、メモリシステム1のスタートアップ時などにNANDメモリ20からRAM16にロードされる。なお、翻訳情報160がNANDメモリ20に格納され、必要に応じて翻訳情報160の一部がRAM16にキャッシュされてもよい。
また、RAM16は、ライトバッファ領域161を備える。ライトバッファ領域161には、ホストライトによってNANDメモリ20に書き込まれる予定のデータおよびガベージコレクションによってNANDメモリ20に書き込まれる予定のデータが、一時的に格納される。図3は、ライトバッファ領域161のメモリ構造の一例を説明するための図である。
図3に例示されるように、ライトバッファ領域161は、複数の単位領域30を備える。各単位領域30のサイズは、ページと同じであってもよいし、ページと同じでなくてもよい。各単位領域30のサイズは、例えば、ページよりも小さいクラスタと呼ばれる単位データのサイズと等しい。各単位領域30はIDによって識別される。各単位領域30のIDを、タグ(タグ40)と表記する。
なお、複数の単位領域30は、1以上の単位領域30aおよび1以上の単位領域30bを含む。図3の例では、タグ40の値が#0〜#m−1までの範囲に含まれる各単位領域30は単位領域30aに該当し、タグ40の値が#m〜#n−1までの範囲に含まれる各単位領域30は単位領域30bに該当する。ただし、ここではタグ40の値はライトバッファ領域161の先頭から順番に昇順にアサインされていることとしている。nは、ライトバッファ領域161に含まれる単位領域30の数である。単位領域30aおよび単位領域30bについては後述する。
リソース管理回路14は、各単位領域30を、ホストライト用にアロケートしたり、GCライト用にアロケートしたりする。ホストライト用にアロケートされた単位領域30は、ホスト2から受信したデータを格納することが可能である。GCライト用にアロケートされた単位領域30は、ガベージコレクションによってNANDメモリ20から読み出され、NANDメモリ20に書き込まれる予定のデータを格納することが可能である。
ホストコントローラ11およびNANDコントローラ12は、ホスト2から受信したデータをライトバッファ領域161を介してNANDメモリ20に書き込む第1回路を構成する。
具体的には、ホストコントローラ11は、ライトコマンドによって書き込み要求されたデータをホスト2から受信して、受信したデータをライトバッファ領域161のうちのホストライト用にアロケートされた単位領域30に格納する。ホストコントローラ11は、単位領域30にデータを格納すると、その単位領域30をNANDコントローラ12に通知する。NANDコントローラ12は、ホストコントローラ11から通知された単位領域30に格納されているデータを、NANDメモリ20に書き込む。このように、ホストコントローラ11およびNANDコントローラ12が協働することによって、ホスト2から受信したデータは、ライトバッファ領域161(より正確にはホストライト用にアロケートされた単位領域30)に格納され、その後、ライトバッファ領域161からNANDメモリ20に書き込まれる。
GC制御回路15およびNANDコントローラ12は、NANDメモリ20に書き込まれたデータを読み出して、読み出されたデータをライトバッファ領域161を介してNANDメモリ20に書き込む第2回路を構成する。
具体的には、GC制御回路15は、ガベージコレクションを制御する。GC制御回路15は、コピー元のブロック23からNANDコントローラ12を介して少なくとも有効データを読み出す。GC制御回路15は、読み出した有効データを、GCライト用にアロケートされた単位領域30に格納する。GC制御回路15は、単位領域30にデータを格納すると、その単位領域30をNANDコントローラ12に通知する。NANDコントローラ12は、GC制御回路15から通知された単位領域30に格納されているデータを、NANDメモリ20に書き込む。このように、GC制御回路15およびNANDコントローラ12が協働することによって、NANDメモリ20から読み出されたデータは、ライトバッファ領域161(より正確にはGCライト用にアロケートされた単位領域30)に格納され、その後、ライトバッファ領域161からNANDメモリ20に書き込まれる。
各単位領域30は、データが格納され、その後そのデータがNANDメモリ20に書き込まれた場合、使用済みの状態としてみなされる。使用済みとなった単位領域30は、リソース管理回路14によって回収され、リソース管理回路14によって再びホストライト用またはGCライト用にアロケートされる。
具体的には、NANDコントローラ12には、ホストコントローラ11またはGC制御回路15から単位領域30が通知される。NANDコントローラ12は、通知された単位領域30に格納されているデータをNANDメモリ20に書き込む。NANDコントローラ12は、データをNANDメモリ20に書き込むとともに翻訳情報160を更新してもよい。NANDコントローラ12は、データの書き込みおよび翻訳情報160の更新を完了すると、その単位領域30は使用済みである旨をリソース管理回路14に通知する。NANDコントローラ12によってリソース管理回路14に使用済みとして通知された単位領域30は、リソース管理回路14によって再びアロケートされるまで、ホストライトおよびガベージコレクションのいずれにおいても使用できない。使用済みの単位領域30は、再びアロケートされることが可能な単位領域30としてリソース管理回路14によって回収される。
CPU13は、プログラムに基づいてメモリコントローラ10の所定の機能を実現する。例えば、当該プログラムは、不揮発性のメモリ(例えばNANDメモリ20)に予め格納されており、メモリシステム1のスタートアップ時にRAM16にロードされる。CPU13は、RAM16にロードされた当該プログラムを実行することによって、前記所定の機能を実現する。
CPU13は、例えば、GC制御回路15に対し、ガベージコレクションの開始および停止を指示する。ガベージコレクションの開始および停止のタイミングは、任意の方法で決定され得る。
一例では、CPU13は、空き領域の合計サイズをモニタリングする。CPU13は、当該合計サイズが所定の閾値を下回った場合にGC制御回路15にガベージコレクションの開始を指示し、当該合計サイズが所定の閾値まで回復した場合にGC制御回路15にガベージコレクションの停止を指示する。ガベージコレクションの開始の判定のための閾値とガベージコレクションの停止の判定のための閾値とは、同じであってもよいし、同じでなくてもよい。
別の例では、CPU13は、ガベージコレクションライトによってNANDメモリ20に書き込まれるデータの量とホストライトによってNANDメモリ20に書き込まれるデータの量との比が特定の比と一致するように、ガベージコレクションの開始および停止のタイミングを計算し、計算されたタイミングでGC制御回路15にガベージコレクションの開始または停止を指示する。前記特定の比は、固定されていてもよいし動的に変更されてもよい。
なお、CPU13は、ガベージコレクションの開始および停止の指示のほかに、翻訳情報160の更新などを含む、任意の機能を実現し得る。
ここで、例えばガベージコレクションが実行されることによってホストライト用にアロケート可能な単位領域30が枯渇した場合、ホスト2からのデータを受け入れ可能な単位領域30の供給が途絶えることから、ホスト2からメモリシステム1へのデータの転送速度が低下する。よって、ガベージコレクションが停止してホストライト用にアロケート可能な単位領域30の数が回復するまでの間、ホスト2からのライトコマンドの実行に要する時間が遅くなる。即ち、ライトアクセスのレイテンシが一時的に低下する。
第1の実施形態では、ライトアクセスのレイテンシの一時的な低下を緩和するために、ライトバッファ領域161に、一定の時間間隔でホストライト用にアロケートされる特定の単位領域30である単位領域30bが設定される。図3に例示されるように、ライトバッファ領域161には、GCライト用およびホストライト用のいずれにもアロケートされ得る1以上の単位領域30aと、ホストライト用にアロケート可能でありGCライト用にアロケート可能でない1以上の単位領域30bとが含まれる。リソース管理回路14は、単位領域30aを、ホストライトまたはGCライトの実行に応じてGCライト用またはホストライト用にアロケートする。リソース管理回路14は、所定の時間間隔で単位領域30bをホストライト用にアロケートする。
ホストライト用のみにアロケート可能な単位領域30bが用意され、単位領域30bが所定の時間間隔でホストライト用にアロケートされることによって、例えばガベージコレクションによって単位領域30aが枯渇した場合であっても、ホスト2から受信するデータを格納できる領域が所定の時間間隔で供給される。よって、単位領域30bが設けられていない場合に比して、ライトアクセスのレイテンシの一時的な低下が緩和される。
図4は、第1の実施形態のリソース管理回路14のさらに詳細な構成例を示す図である。
ホストライト用にアロケートされた単位領域30は、その単位領域30を示すタグ40がリソース管理回路14からホストコントローラ11に転送されることによって、ホストコントローラ11に通知される。また、ホストコントローラ11からNANDコントローラ12に単位領域30のタグ40が転送されることによって、その単位領域30にデータが格納された旨が通知される。また、NANDコントローラ12からリソース管理回路14に単位領域30のタグ40が転送されることによって、その単位領域30が使用済みである旨が通知される。このように、ホストライト用にアロケートされた単位領域30を示すタグ40は、リソース管理回路14から転送され、その後、ホストコントローラ11およびNANDコントローラ12を経由してリソース管理回路14に戻る。
GCライト用にアロケートされた単位領域30は、その単位領域30を示すタグ40がリソース管理回路14からGC制御回路15に転送されることによって、GC制御回路15に通知される。また、GC制御回路15からNANDコントローラ12に単位領域30のタグ40が転送されることによって、その単位領域30にデータが格納された旨が通知される。また、NANDコントローラ12からリソース管理回路14に単位領域30のタグ40が転送されることによって、その単位領域30が使用済みである旨が通知される。このように、GCライト用にアロケートされた単位領域30を示すタグ40は、リソース管理回路14から転送され、その後、GC制御回路15およびNANDコントローラ12を経由してリソース管理回路14に戻る。
リソース管理回路14は、セレクタ101、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105、レジスタ106、およびアービタ107を備える。
リソース管理回路14は、使用済みの単位領域30として通知された単位領域30(換言すると回収された単位領域30)を示すタグ40を記憶する。第1タグバッファ102および第2タグバッファ103は、回収された単位領域30のタグ40を記憶するメモリである。各タグバッファ102、103には、1以上のタグ40が格納され得る。各タグバッファ102、103は、任意の種類のメモリによって構成され得る。例えば、第1タグバッファ102および第2タグバッファ103は、レジスタまたはSRAMによって構成され得る。各タグバッファ102、103に対し、例えばFIFO(First In, First Out)のルールに従って各タグ40が入出力される。なお、各タグバッファ102、103に対する入出力のルールはこれに限定されない。
NANDコントローラ12から受信したホストライト用の単位領域30のタグ40は、セレクタ101に入力される。セレクタ101は、タグ40が示す単位領域30が、単位領域30aに該当するか単位領域30bに該当するかを判定する。タグ40が示す単位領域30が単位領域30aに該当する場合、セレクタ101は、そのタグ40を第1タグバッファ102に入力する。反対に、タグ40が示す単位領域30が単位領域30bに該当する場合、セレクタ101は、そのタグ40を第2タグバッファ103に送る。
セレクタ101は、タグ40の値に基づいて、そのタグ40の転送先を決定する。例えば、図3の例に従えば、セレクタ101は、タグ40の値が#0から#m−1までの範囲に含まれる場合、そのタグ40を第1タグバッファ102に入力する。セレクタ101は、タグ40の値が#mから#n−1までの範囲に含まれる場合、そのタグ40を第2タグバッファ103に入力する。
NANDコントローラ12から受信したGCライト用の単位領域30(即ち単位領域30a)のタグ40は、第1タグバッファ102に入力される。
このように、ホストライトによって使用された単位領域30aのタグ40およびガベージコレクションによって使用された単位領域30aのタグ40は第1タグバッファ102に格納される。また、ホストライトによって使用された単位領域30bのタグ40は第2タグバッファ103に格納される。
GC制御回路15は、ガベージコレクションの実行中に、第1タグバッファ102にタグ40が格納されている場合、ガベージコレクションの実行に応じて、そのタグ40を取得する。
一例では、GC制御回路15は、1つの単位領域30のサイズを有するデータのリロケート毎に第1タグバッファ102からタグ40を取得する。GC制御回路15は、ガベージコレクションを非実行中の場合、または、ガベージコレクションの実行中に第1タグバッファ102にタグ40が格納されていない場合、第1タグバッファ102からのタグ40の取得を行わない。
取得回路104は、第1タグバッファ102にタグ40が格納されている場合、ホストライトの実行に応じて、そのタグ40を取得する。
一例では、取得回路104は、内部にカウンタを備え、ホストライト用にアロケートされる単位領域30aの数の上限値がカウンタの初期値として設定される。当該初期値は、例えば1より大きくかつmより小さい所定の値である。取得回路104は、セレクタ101から第1タグバッファ102にタグ40が送られる毎にカウンタの値をインクリメントし、第1タグバッファ102からタグ40を取得する毎にカウンタの値をデクリメントする。取得回路104は、第1タグバッファ102に1以上のタグ40が格納されており、かつカウンタの値が1以上である場合、第1タグバッファ102からタグ40を取得する。取得回路104は、カウンタの値が0である場合、第1タグバッファ102からタグ40の取得を実行しない。このような構成によって、取得回路104は、カウンタの値が1以上であり(即ちホストライト用にアロケートされている単位領域30aの数が上限値に達していない)、かつ第1タグバッファ102が空ではない場合、第1タグバッファ102からタグ40を取得することができる。また、取得回路104は、カウンタの値がゼロである(即ちホストライト用にアロケートされている単位領域30aの数が上限値に達している)か、または第1タグバッファ102が空である場合、第1タグバッファ102からタグ40を取得しない。
このように、取得回路104は、単位領域30aに格納したホスト2からのデータがNANDメモリ20に格納されて使用済みの状態になる毎に第1タグバッファ102からタグ40の取得を試みる。よって、取得回路104は、結果的に、ホストライトの実行に応じてタグ40を取得することになる。
レジスタ106には、タイマ閾値が格納される。例えばレジスタ106には、CPU13によってタイマ閾値が設定される。タイマ105は、経過時間をカウントする。タイマ105は、経過時間がタイマ閾値に達した場合、経過時間のカウントをリセットおよびリスタートするとともに、第2タグバッファ103から所定個(例えば1個)のタグ40を取得する。タイマ105は、取得したタグ40をアービタ107に入力する。
アービタ107は、取得回路104またはタイマ105から入力されたタグ40をホストコントローラ11に転送する。アービタ107は、取得回路104およびタイマ105のうちの片方からのみタグ40が入力されている場合、入力されたタグ40をホストコントローラ11に転送する。アービタ107は、取得回路104およびタイマ105の双方から同時にタグ40が入力された場合、転送すべきタグ40の調停を行う。例えば、アービタ107は、ラウンドロビン方式で調停する。なお、調停の方法はこれに限定されない。
以上述べた構成により、ホストライト用にアロケートされた単位領域30bが使用済みとなった場合、その単位領域30bのタグ40は、セレクタ101を経由して第2タグバッファ103に格納される。タイマ105は、タイマ閾値として設定された設定時間が経過する毎に、第2タグバッファ103からタグ40を取得する。第2タグバッファ103に格納されたタグ40がタイマ105によって取得された場合、そのタグ40はアービタ107を経由してホストコントローラ11に転送される。よって、リソース管理回路14は、第2タグバッファ103に格納された、それぞれ回収された単位領域30bを示す1以上のタグ40のそれぞれを、設定時間が経過する毎に順次取得して、取得したタグ40をホストコントローラ11に通知することができる。換言すると、リソース管理回路14は、回収した単位領域30bを設定時間毎にホストライト用にアロケートすることができる。
また、ホストライト用としてアロケートされた単位領域30aを示すタグ40およびGCライト用としてアロケートされた単位領域30aを示すタグ40は、それらの単位領域30aが使用済みとなった場合に、第1タグバッファ102に格納される。第1タグバッファ102に格納されたタグ40は、GC制御回路15によってガベージコレクションの実行に応じて取得されるか、またはホストライトの実行に応じて取得回路104によって取得される。ガベージコレクションの実行またはホストライトの実行に新たな単位領域30aが必要とされている場合、第1タグバッファ102に格納されたタグ40は、即座にホストライト用またはガベージコレクション用にアロケートされる。即ち、リソース管理回路14は、データが単位領域30aからNANDメモリ20に書き込まれたことに応じて、その単位領域30aをホストライト用またはガベージコレクション用にアロケートすることができる。
なお、GCライト用にアロケートされ使用済みとなった単位領域30aを示すタグ40は、第1タグバッファ102に格納され、ホストライト用にアロケートされ使用済みとなった単位領域30a、30bを示すタグ40は、セレクタ101に入力される、として説明した。ガベージコレクションによって使用された単位領域30aを示すタグ40と、ホストライトによって使用された単位領域30a、30bを示すタグ40と、を区別する方法は、特定の方法に限定されない。
一例では、NANDコントローラ12は、GC制御回路15からのタグ40と、ホストコントローラ11からのタグ40とを、それぞれ異なるキューに受信する。そして、NANDコントローラ12は、GC制御回路15から受信したタグ40を、第1タグバッファ102に格納し、ホストコントローラ11から受信したタグ40を、セレクタ101に入力する。
別の例では、GC制御回路15は、取得したタグ40に、ガベージコレクションライト用である旨を示す情報を付加する。また、ホストコントローラ11は、アービタ107から送られてきたタグ40に、ホストライト用である旨を示す情報を付加する。NANDコントローラ12またはリソース管理回路14は、受信したタグ40に付加された情報に基づいて、そのタグ40を第1タグバッファ102に格納するかセレクタ101に入力するかを決定する。
以上述べたように、第1の実施形態によれば、ライトバッファ領域161は、ホストライト用にアロケート可能であり、ガベージコレクションライト用にアロケート可能でない1以上の単位領域30bを備える。リソース管理回路14は、タイマ105を備え、第2タグバッファ103に格納された、それぞれ使用済みの単位領域30bを示す1以上のタグ40を、タイマ閾値として設定された設定時間が経過する毎に順次取得して、取得したタグ40をホストコントローラ11に通知する。換言すると、リソース管理回路14は、使用済みとなった単位領域30bを設定時間毎にホストライト用にアロケートする。
この構成により、ガベージコレクションによって単位領域30aが枯渇した場合であっても、ホスト2から受信するデータを格納できる領域が設定時間間隔で供給される。よって、単位領域30bが設けられていない場合に比して、ライトアクセスのレイテンシの一時的な低下が緩和される。即ち、ライトアクセスのレイテンシの変動が緩和される。
(第2の実施形態)
第1の実施形態では、定期的に単位領域30bがホストライト用にアロケートされる例について説明した。各単位領域30bがアロケートされる時間間隔は、一定でなくてもよい。
第1の実施形態では、定期的に単位領域30bがホストライト用にアロケートされる例について説明した。各単位領域30bがアロケートされる時間間隔は、一定でなくてもよい。
第2の実施形態では、複数の単位領域30bのそれぞれに個別に設定時間が設定される。そのための構成の一例として、図5に示されるように、各タグ40aは、何れかの単位領域30を示すID41のほかにタイマ閾値42を含む。
また、図6に示されるように、第2の実施形態のリソース管理回路14は、セレクタ101a、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105a、およびアービタ107を備える。これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
セレクタ101aは、タグ40aが入力された場合、そのタグ40aに含まれるタイマ閾値42に基づいて、そのタグ40a(より正確にはそのタグ40aに含まれるID41)が単位領域30aを示すか単位領域30bを示すかを判定する。例えば、単位領域30aのタグ40aのタイマ閾値42としてゼロが設定され、単位領域30bのタグ40aのタイマ閾値42としてゼロより大きい正の値が設定される。その場合、セレクタ101aは、タイマ閾値42がゼロであるか否かに基づいて、そのタグ40aが単位領域30aを示すか単位領域30bを示すかを判定することができる。セレクタ101aは、単位領域30aのタグ40aを第1タグバッファ102に入力し、単位領域30bのタグ40aを第2タグバッファ103に入力する。
なお、セレクタ101aは、第1の実施形態と同様に、タグ40aが単位領域30aを示すか単位領域30bを示すかを、ID41に基づいて判定してもよい。
タイマ105aは、第2タグバッファ103に1以上のタグ40aが格納されている場合、第2タグバッファ103から1つのタグ40aを取得する。タイマ105aは、取得したタグ40aに含まれるタイマ閾値42を読む。そして、タイマ105aは、タグ40aを取得してから、そのタグ40aから読んだタイマ閾値42として設定された時間が経過した後に、そのタグ40aをアービタ107に入力する。タイマ105aは、1つのタグ40aをアービタ107に入力した後に、次のタグ40aを第2タグバッファ103から取得することができる。よって、第2タグバッファ103に格納された各タグ40aは、前のタグ40aがアービタ107に送られてからタイマ閾値42として設定された時間が経過した後に、アービタ107に送られる。
なお、タイマ105aの構成は、上記した構成だけに限定されない。例えば、タイマ105aは、フリーランカウンタを内部に備え、タグ40aが第2タグバッファ103に入力されたときにそのタグ40aのタイマ閾値42を読む。そして、タイマ105aは、フリーランカウンタのカウント値に基づき、第2タグバッファ103に入力されたタイミングからそのタグ40aに含まれるタイマ閾値42として設定された時間が経過したタイミングで、そのタグ40aをアービタ107に入力する。この構成によって、タイマ閾値42の値が小さいタグ40aは、先に第2タグバッファ103に格納されたタイマ閾値42の値が大きいタグ40aよりも早く第2タグバッファ103からアービタ107に送られ得る。
このように、第2の実施形態のリソース管理回路14は、各単位領域30を、対応するタグ40aに含まれるタイマ閾値42に基づくタイミングでホストライト用にアロケートすることができる。換言すると、リソース管理回路14は、第2タグバッファ103に格納されている各タグ40aが示す単位領域30bを、対応するタグ40aに含まれるタイマ閾値42に応じたタイミングで順次ホストライト用にアロケートする。よって、各単位領域30bがホストライト用にアロケートされる時間の間隔を単位領域30b毎に個別に設定することが可能となる。
(第3の実施形態)
図7は、第3の実施形態のリソース管理回路14の構成例を示す図である。第3の実施形態のリソース管理回路14は、セレクタ101b、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105b、複数(ここでは一例として3つ)のレジスタ106b、アービタ107、および第2セレクタ108を備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
図7は、第3の実施形態のリソース管理回路14の構成例を示す図である。第3の実施形態のリソース管理回路14は、セレクタ101b、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105b、複数(ここでは一例として3つ)のレジスタ106b、アービタ107、および第2セレクタ108を備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
それぞれのレジスタ106bには、タイマ閾値が格納されている。それぞれ異なるレジスタ106bに格納されたタイマ閾値の値は、異なっていてもよいし、同一であってもよい。ここでは、それぞれ異なる値のタイマ閾値が複数のレジスタ106bに設定されていることとする。各レジスタ106bには、例えばCPU13によってタイマ閾値が格納される。
図8に例示されるように、各タグ40bはID41のほかに選択情報43を含む。選択情報43は、複数のレジスタ106bのうちの一を示す情報である。
セレクタ101bは、タグ40bが入力された場合、そのタグ40bに含まれる選択情報43に基づいて、そのタグ40b(より正確にはそのタグ40bに含まれるID41)が単位領域30aを示すか単位領域30bを示すかを判定する。例えば、単位領域30aのタグ40bの選択情報43として、複数のレジスタ106bのうちの何れも示さない値(無効値)が設定される。セレクタ101bは、選択情報43として無効値が設定されているか否かに基づいて、そのタグ40bが単位領域30aを示すか単位領域30bを示すかを判定することができる。
なお、セレクタ101bは、第1の実施形態と同様に、タグ40bが単位領域30aを示すか単位領域30bを示すかを、ID41に基づいて判定してもよい。
セレクタ101bは、単位領域30aのタグ40bを第1タグバッファ102に入力し、単位領域30bのタグ40bを第2タグバッファ103に入力する。
タイマ105bが第2タグバッファ103からタグ40bを取得すると、そのタグ40bに含まれる選択情報43は、第2セレクタ108に入力される。第2セレクタ108は、複数のレジスタ106bのうちの選択情報43が示すレジスタ106bから、タイマ閾値を取得して、取得したタイマ閾値をタイマ105bに入力する。
タイマ105bは、タグ40bを取得してから、入力されたタイマ閾値として設定された時間が経過した後に、そのタグ40bをアービタ107に入力する。タイマ105bは、1つのタグ40bをアービタ107に入力した後に、次のタグ40bを第2タグバッファ103から取得することができる。
このように、複数のレジスタ106bのうちの選択情報43によって選択されたレジスタ106bに格納されたタイマ閾値が使用される。また、各タグ40bに選択情報43が含まれている。複数のレジスタ106bのそれぞれにタイマ閾値が設定され、選択情報43によって1つのレジスタ106bが選択可能に構成されるので、予め用意された複数のタイマ閾値のうちの任意の一つを、単位領域30b毎に選択することが可能である。
以上述べたように、第3の実施形態によれば、第2の実施形態と同様に、各単位領域30bがホストライト用にアロケートされる時間の間隔を単位領域30b毎に個別に設定することが可能となる。
なお、選択情報43は、レジスタ106bの数に応じたサイズを有する。例えば、4つのレジスタ106bが具備される場合、選択情報43は、少なくとも2ビットのサイズを有する。選択情報43のサイズがタイマ閾値のサイズよりも小さくなるようにレジスタ106bの数を設定することによって、各タグ40bのサイズを第2の実施形態に比べて小さくすることが可能である。
(第4の実施形態)
第4の実施形態では、各単位領域30は、単位領域30aと単位領域30bとの間で切り替え可能に構成される。
第4の実施形態では、各単位領域30は、単位領域30aと単位領域30bとの間で切り替え可能に構成される。
図9は、第4の実施形態のタグ40cの構成例を示す図である。本図に示されるように、タグ40cには、ID41のほかにフラグ情報44が含まれている。フラグ情報44は、そのタグ40c(より正確にはそのタグ40cに含まれるID41)が示す単位領域30が単位領域30aに該当するか単位領域30bに該当するかを示す設定情報である。
図10は、第4の実施形態のリソース管理回路14の構成例を示す図である。第4の実施形態のリソース管理回路14は、セレクタ101c、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105、レジスタ106、アービタ107、および変更回路109を備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
セレクタ101cは、タグ40cが入力された場合、そのタグ40cに含まれるフラグ情報44に基づいて、そのタグ40cが単位領域30aを示すか単位領域30bを示すかを判定する。セレクタ101bは、単位領域30aを示すタグ40cを第1タグバッファ102に入力し、単位領域30bを示すタグ40cを第2タグバッファ103に入力する。
なお、セレクタ101cは、第1の実施形態と同様に、タグ40cが単位領域30aを示すか単位領域30bを示すかを、ID41に基づいて判定してもよい。
変更回路109は、アービタ107とホストコントローラ11との間に設けられている。変更回路109は、アービタ107から出力されたタグ40cに含まれているフラグ情報44を操作することによって、各単位領域30を、単位領域30aと単位領域30bとの間で切り替えることが可能である。
具体的には、変更回路109は、単位領域30aを示す値が設定されたフラグ情報44を含むタグ40cをアービタ107から受信した場合、そのフラグ情報44の値を単位領域30bを示す値に変更することによって、そのタグ40cが示す単位領域30を単位領域30aから単位領域30bに変更することができる。また、変更回路109は、単位領域30bを示す値が設定されたフラグ情報44を含むタグ40cをアービタ107から受信した場合、そのフラグ情報44の値を単位領域30aを示す値に変更することによって、そのタグ40cが示す単位領域30を単位領域30bから単位領域30aに変更することができる。
フラグ情報44の値が変更されたタグ40cは、そのタグ40cが示す単位領域30が使用済みとなってそのタグ40cがNANDコントローラ12からリソース管理回路14に転送されたとき、セレクタ101cによって、フラグ情報44の変更された値に基づいて第1タグバッファ102および第2タグバッファ103のうちの転送先のバッファが決定される。
このように、第4の実施形態によれば、リソース管理回路14に、タグ40cに含まれるフラグ情報44の値を、単位領域30aを示す値と単位領域30bを示す値との間で切り替える変更回路109が設けられた。よって、各単位領域30の設定は、単位領域30aと単位領域30bとの間で切り替えられ得る。
なお、変更回路109によるフラグ情報44の操作のアルゴリズムは、特定のアルゴリズムに限定されない。
一例では、変更回路109は、第1タグバッファ102内のタグ40cの数を監視し、第1タグバッファ102内のタグ40cの数に応じてフラグ情報44の制御を行う。より具体的には、例えば、変更回路109は、第1タグバッファ102内のタグ40cの数が第1値の場合、第1タグバッファ102内のタグ40cの数が第1値よりも大きい第2値の場合に比べ、単位領域30bの数を多くする。逆に、第1タグバッファ102内のタグ40cの数が第2値の場合、第1タグバッファ102内のタグ40cの数が第1値の場合に比べ、単位領域30bの数を少なくする。
第1タグバッファ102内のタグ40cが少なくなるにつれて、ライトアクセスのレイテンシが徐々に悪化する。上述のように第1タグバッファ102内のタグ40cの数が少なくなった場合に単位領域30bの数が増加せしめられることにより、ライトアクセスのレイテンシの悪化を緩和することが可能である。
なお、以上の説明では、第1の実施形態が適用されたリソース管理回路14に第4の実施形態を適用した例について説明した。第4の実施形態は、第2の実施形態が適用されたリソース管理回路14および第3の実施形態が適用されたリソース管理回路14にも適用可能である。例えば、第2の実施形態が適用されたリソース管理回路14に第4の実施形態が適用される場合、変更回路109は、各タグ40aのタイマ閾値42を操作するように構成されればよい。また、第3の実施形態が適用されたリソース管理回路14に第4の実施形態が適用される場合、変更回路109は、各タグ40bの選択情報43を操作するように構成されればよい。
(第5の実施形態)
図11は、第5の実施形態のリソース管理回路14の構成例を示す図である。第5の実施形態のリソース管理回路14は、セレクタ101、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105、レジスタ106、アービタ107、および設定回路110を備える。また、第5の実施形態では、GC制御回路15に代えて、GC制御回路15dを備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
図11は、第5の実施形態のリソース管理回路14の構成例を示す図である。第5の実施形態のリソース管理回路14は、セレクタ101、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105、レジスタ106、アービタ107、および設定回路110を備える。また、第5の実施形態では、GC制御回路15に代えて、GC制御回路15dを備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
GC制御回路15dは、第1の実施形態のGC制御回路15と同様の動作を実行するほかに、ガベージコレクションの実行および非実行を設定回路110に通知する。例えば、GC制御回路15dは、ガベージコレクションを開始した場合、ガベージコレクションの開始を設定回路110に通知する。また、GC制御回路15dは、ガベージコレクションを停止した場合、ガベージコレクションの停止を設定回路110に通知する。
設定回路110は、GC制御回路15dからの通知に基づいて、タイマ105の動作を停止させたり再開させたりする。設定回路110は、ガベージコレクションの非実行中は、タイマ105の動作を停止させ、ガベージコレクションの実行中には、タイマ105を動作させる。
ガベージコレクションの非実行中には、ホストライト用にアロケート可能な単位領域30aは、ガベージコレクションの実行中に比べ、枯渇しにくい傾向がある。ガベージコレクションの非実行中には、単位領域30bを一定の時間間隔でアロケートすることの必要性が薄れる。第5の実施形態によれば、ガベージコレクションの実行中は、タイマ105が動作中となることにより、リソース管理回路14は、単位領域30bのアロケートを実行する。また、ガベージコレクションの非実行中は、タイマ105が非動作中となることにより、リソース管理回路14は、単位領域30bのアロケートを実行しない。よって、必要な場合にのみライトレイテンシの悪化を緩和する制御を行うことが可能となる。
(第6の実施形態)
図12は、第6の実施形態のリソース管理回路14の構成例を示す図である。第6の実施形態のリソース管理回路14は、セレクタ101、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105、レジスタ106、アービタ107、および設定回路110aを備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
図12は、第6の実施形態のリソース管理回路14の構成例を示す図である。第6の実施形態のリソース管理回路14は、セレクタ101、第1タグバッファ102、第2タグバッファ103、取得回路104、タイマ105、レジスタ106、アービタ107、および設定回路110aを備える。なお、これらの構成要素のうち、第1の実施形態と同じ機能を有する構成要素には、第1の実施形態と同じ符号が付されている。また、第1の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
設定回路110aは、第1タグバッファ102内のタグ40の数を監視し、第1タグバッファ102内のタグ40の数に応じてタイマ閾値を設定する。
一例では、設定回路110aは、第1タグバッファ102内のタグ40の数が第3値の場合、タイマ閾値として第4値を設定する。第1タグバッファ102内のタグ40の数が第5値よりも大きい第5値の場合、設定回路110aは、タイマ閾値として第6値を設定する、ただし、第6値は第4値よりも小さい。このように、設定回路110aは、第1タグバッファ102内のタグ40の数が小さい場合、タイマ閾値を大きくし、第1タグバッファ102内のタグ40の数が大きい場合、タイマ閾値を小さくする。これにより、ホストライト用にアロケート可能な単位領域30aが十分に存在する場合には単位領域30bをアロケートする時間間隔を短縮またはゼロとすることで、必要な場合にのみライトレイテンシの悪化を緩和する制御を行うことが可能となる。
なお、タイマ閾値を変更するアルゴリズムは、種々の変形が可能である。
他のアルゴリズムとしては、メモリシステム1内で記録される統計情報を利用するアルゴリズムが考えられる。例えば、CPU13は、ホスト2から受信するライトコマンドの数を統計情報として記録する。設定回路110aは、統計情報に基づいてタイマ閾値を変更してもよい。一例では、ホスト2からライトコマンドを受信する頻度が第7値の場合、設定回路110aは、タイマ閾値として第8値を設定する。ホスト2からライトコマンドを受信する頻度が第7値よりも大きい第9値の場合、設定回路110aは、タイマ閾値として第10値を設定する。第10値は、第8値よりも大きい。
第1〜第6の実施形態において説明したように、実施形態のリソース管理回路14は、タイマ105を備え、単位領域30bが使用済みとなった場合、タイマ105に設定されたタイマ閾値に応じたタイミングで、使用済みとなった単位領域30bを再びホストライト用にアロケートする。即ち、リソース管理回路14は、単位領域30bに格納されていたデータがNANDメモリ20に書き込まれた後、タイマ105に設定された設定時間に応じたタイミングで、単位領域30bをホストライト用にアロケートする。これにより、ガベージコレクションによって単位領域30aが枯渇した場合であっても、ホスト2から受信するデータを格納できる領域が逐次供給される。よって、単位領域30bが設けられていない場合に比して、ライトアクセスのレイテンシの一時的な低下が緩和され、その結果、ライトアクセスのレイテンシの変動が緩和される。
なお、ホスト2に複数のメモリシステムが接続される場合がある。ホスト2は、1つのファイルを複数の部分ファイルに分割して、それぞれの部分ファイルを複数のメモリシステム1に分散させて書き込む方式が知られている。この方式は、ライトストリームと称され得る。ライトストリームが適用される場合、複数のメモリシステム間でライトアクセスのレイテンシにばらつきがあると、複数のメモリシステムに対するライトアクセスのレイテンシは、最もレイテンシが悪いメモリシステム1がボトルネックとなって悪化する。各メモリシステムとして第1〜第6の実施形態のメモリシステム1が適用されることにより、各メモリシステム1のライトアクセスのレイテンシの変動が緩和されるので、複数のメモリシステム1間のレイテンシのばらつきを小さくすることが可能となる。よって、ライトストリームが適用される場合、複数のメモリシステム1に対するライトアクセスのレイテンシの変動を小さくすることが可能となる。
また、NANDメモリの疲弊の進行を抑制するために、メモリシステムの性能をスロットリングする技術が知られている。第1〜第6の実施形態のメモリシステム1において、単位領域30bの数と単位領域30aの数とは、任意に設定可能である。単位領域30bの数および単位領域30aの数の設定に応じて、ライトアクセスのレイテンシの瞬間的な最大値と最小値とが変化する。単位領域30bの数および単位領域30aの数の設定を工夫することによって、メモリシステム1の性能のスロットリングが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 ホストコントローラ、12 NANDコントローラ、13 CPU、14 リソース管理回路、15,15d GC制御回路、16 RAM、20 NANDメモリ、21 メモリチップ、22 メモリセルアレイ、23 ブロック、30,30a,30b 単位領域、40,40a,40b,40c タグ、41 ID、42 タイマ閾値、43 選択情報、44 フラグ情報、101,101a,101b,101c セレクタ、102 第1タグバッファ、103 第2タグバッファ、104 取得回路、105,105a,105b タイマ、106,106b レジスタ、107 アービタ、108 第2セレクタ、109 変更回路、110,110a 設定回路、160 翻訳情報、161 ライトバッファ領域。
Claims (12)
- ホストに接続可能なメモリシステムであって、
不揮発性メモリと、
第1バッファと、
前記ホストから受信したデータを前記第1バッファを介して前記不揮発性メモリに書き込む第1回路と、
前記不揮発性メモリからデータを読み出して、前記読み出されたデータを前記第1バッファを介して前記不揮発性メモリに書き込む第2回路と、
を備え、
前記第1バッファは、
前記第1回路および前記第2回路にアロケート可能な第2バッファと、
前記第1回路にアロケート可能であり前記第2回路にアロケート可能でない第3バッファと、
を含み、
タイマを備え、データが前記第2バッファから前記不揮発性メモリに書き込まれたことに応じて、前記第1バッファを前記第1回路または前記第2回路にアロケートし、データが前記第3バッファから前記不揮発性メモリに書き込まれた後、前記タイマに設定された設定時間に応じたタイミングで、前記第3バッファを前記第1回路にアロケートする、第3回路と、
を備えるメモリシステム。 - 前記第3バッファは、複数の第1単位領域を含み、
前記第3回路は、前記設定時間が格納されるレジスタと、前記複数の第1単位領域のうちの、データが前記不揮発性メモリに書き込まれた1以上の第1単位領域を記憶する第4バッファと、を備え、前記第4バッファに記憶されている前記1以上の第1単位領域のそれぞれを、前記設定時間が経過する毎に前記第1回路にアロケートする、
請求項1に記載のメモリシステム。 - 前記第3バッファは、前記設定時間を含むタグによってそれぞれ識別される複数の第1単位領域を含み、
前記第3回路は、それぞれ、前記複数の第1単位領域のうちの、データが前記不揮発性メモリに書き込まれた第1単位領域、を示すタグである1以上の第1タグを記憶する第4バッファを備え、前記第4バッファに記憶されているそれぞれの第1タグが示す第1単位領域を、前記それぞれの第1タグに含まれる前記設定時間に基づくタイミングで順次前記第1回路にアロケートする、
請求項1に記載のメモリシステム。 - 前記第3バッファは、複数の設定情報のうちの一つを指定する指定情報を含むタグによってそれぞれ識別される複数の第1単位領域を含み、
前記第3回路は、
前記複数の設定時間が格納されるレジスタと、それぞれ前記複数の第1単位領域のうちの、データが前記不揮発性メモリに書き込まれた第1単位領域を示す第4バッファとを備え、
前記第4バッファに記憶されているそれぞれの第1タグが示す第1単位領域を、前記複数の設定時間のうちの前記それぞれの第1タグに含まれる指定情報が示す設定時間に基づくタイミングで順次前記第1回路にアロケートする、
請求項1に記載のメモリシステム。 - 前記第3バッファは、複数の第1単位領域を含み、
それぞれの第1単位領域は、前記第3バッファに属するか否かを示す設定情報を含むタグによって識別され、
前記第3回路は、各第1単位領域のタグを操作することによって前記第1単位領域の数を増減させる変更回路をさらに含む、
請求項1に記載のメモリシステム。 - 前記第2バッファは、複数の第2単位領域を含み、
前記第3回路は、前記複数の第2単位領域のうちの、データが前記不揮発性メモリに書き込まれた1以上の第2単位領域を記憶する第4バッファをさらに備え、
前記変更回路は、前記第4バッファに記憶されている第2単位領域の数に応じて前記第1単位領域の数を増減させる、
請求項5に記載のメモリシステム。 - 前記変更回路は、
前記第4バッファに記憶されている第2単位領域の数が第1値の場合、前記第4バッファに記憶されている第2単位領域の数が前記第1値よりも大きい第2値の場合に比べ、前記第1単位領域の数を多くする、
請求項6に記載のメモリシステム。 - 前記第3回路は、前記不揮発性メモリからデータを読み出して前記読み出されたデータを前記第1バッファを介して前記不揮発性メモリに書き込む処理を前記第2回路が非実行中の場合に前記第3バッファのアロケートを停止し、前記第2回路が前記処理を実行中の場合に前記第3バッファのアロケートを実行する、
請求項1に記載のメモリシステム。 - 前記第3回路は、前記レジスタに格納されている前記設定時間を変更する設定回路をさらに含む、
請求項2に記載のメモリシステム。 - 前記第2バッファは、複数の第2単位領域を含み、
前記第3回路は、前記複数の第2単位領域のうちの、データが前記不揮発性メモリに書き込まれた1以上の第2単位領域を記憶する第5バッファをさらに備え、
前記設定回路は、前記第5バッファに記憶されている第2記憶領域の数に応じて前記設定時間を変更する、
請求項9に記載のメモリシステム。 - 前記設定回路は、
前記第5バッファに記憶されている第2単位領域の数が第1値の場合、第2値を設定し、
前記第5バッファに記憶されている第2単位領域の数が前記第1値よりも大きい第3値の場合、前記第2値よりも小さい第4値を設定する、
請求項10に記載のメモリシステム。 - 前記設定回路は、前記ホストから受信したライトコマンドに関する統計情報に基づいて前記設定時間を変更する、
請求項9に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017169477A JP2019046238A (ja) | 2017-09-04 | 2017-09-04 | メモリシステム |
US15/908,853 US10817186B2 (en) | 2017-09-04 | 2018-03-01 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017169477A JP2019046238A (ja) | 2017-09-04 | 2017-09-04 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019046238A true JP2019046238A (ja) | 2019-03-22 |
Family
ID=65518043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017169477A Pending JP2019046238A (ja) | 2017-09-04 | 2017-09-04 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10817186B2 (ja) |
JP (1) | JP2019046238A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068168B2 (en) * | 2018-07-17 | 2021-07-20 | Micron Technology, Inc. | Managing storage performance consistency with feedback control |
US10824512B2 (en) * | 2018-07-31 | 2020-11-03 | EMC IP Holding Company LLC | Managing journaling resources with copies stored in multiple locations |
JP7366795B2 (ja) * | 2020-02-14 | 2023-10-23 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11868652B2 (en) * | 2021-02-25 | 2024-01-09 | SK Hynix Inc. | Utilization based dynamic shared buffer in data storage system |
US11556258B1 (en) | 2021-07-19 | 2023-01-17 | Micron Technology, Inc. | Implementing automatic rate control in a memory sub-system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010152542A (ja) * | 2008-12-24 | 2010-07-08 | Toshiba Corp | メモリシステム |
CN104424103B (zh) | 2013-08-21 | 2018-05-29 | 光宝科技股份有限公司 | 固态储存装置中高速缓存的管理方法 |
US20150186257A1 (en) | 2013-12-26 | 2015-07-02 | Anand S. Ramalingam | Managing a transfer buffer for a non-volatile memory |
US10223001B2 (en) * | 2015-03-12 | 2019-03-05 | Toshiba Memory Corporation | Memory system |
US10824553B2 (en) | 2015-04-24 | 2020-11-03 | Toshiba Memory Corporation | Memory device that controls timing of receiving write data from a host |
US10248330B2 (en) * | 2017-05-30 | 2019-04-02 | Seagate Technology Llc | Data storage device with buffer tenure management |
-
2017
- 2017-09-04 JP JP2017169477A patent/JP2019046238A/ja active Pending
-
2018
- 2018-03-01 US US15/908,853 patent/US10817186B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10817186B2 (en) | 2020-10-27 |
US20190073140A1 (en) | 2019-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113138713B (zh) | 存储器系统 | |
JP7091203B2 (ja) | メモリシステムおよび制御方法 | |
JP7258849B2 (ja) | 低レイテンシ動作をサポートするssdアーキテクチャ | |
JP2019046238A (ja) | メモリシステム | |
JP7051546B2 (ja) | メモリシステムおよび制御方法 | |
US10248322B2 (en) | Memory system | |
JP2021128582A (ja) | メモリシステムおよび制御方法 | |
US11726707B2 (en) | System and method of writing to nonvolatile memory using write buffers | |
JP6403164B2 (ja) | メモリシステム | |
US11494082B2 (en) | Memory system | |
US20140372675A1 (en) | Information processing apparatus, control circuit, and control method | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
JP2019057151A (ja) | メモリシステムおよび制御方法 | |
WO2018116937A1 (ja) | 情報処理装置およびメモリアクセス方法 | |
JP2020123038A (ja) | メモリシステムおよび制御方法 | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
US20170003911A1 (en) | Information processing device | |
JP2022171208A (ja) | メモリシステムおよび制御方法 | |
JP2020123040A (ja) | メモリシステムおよび制御方法 | |
US20200409846A1 (en) | Dual controller cache optimization in a deterministic data storage system | |
CN110908595B (zh) | 存储装置及信息处理系统 | |
US20220276804A1 (en) | Information processing apparatus | |
US20240311291A1 (en) | Memory system and method of controlling the memory system | |
US20220083222A1 (en) | Storage device and control method | |
JP7337228B2 (ja) | メモリシステムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180905 |