(57)【要約】【課題】ライトアクセスのレイテンシの変動を緩和すること。【解決手段】メモリシステムは、不揮発性メモリと、第１バッファと、第１回路と、第２回路と、第３回路とを備える。第１回路は、ホストから受信したデータを第１バッファを介して不揮発性メモリに書き込む。第２回路は、不揮発性メモリからデータを読み出して、読み出されたデータを第１バッファを介して不揮発性メモリに書き込む。第１バッファは、第２バッファと第３バッファとを含む。第３回路は、タイマを備える。第３回路は、データが第２バッファから不揮発性メモリに書き込まれたことに応じて、第１バッファを第１回路または第２回路にアロケートする。また、第３回路は、データが第３バッファから不揮発性メモリに書き込まれた後、タイマに設定された設定時間に応じたタイミングで、第３バッファを第１回路にアロケートする。【選択図】図４
2019046238.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
不揮発性メモリと、
第１バッファと、
前記ホストから受信したデータを前記第１バッファを介して前記不揮発性メモリに書き込む第１回路と、
前記不揮発性メモリからデータを読み出して、前記読み出されたデータを前記第１バッファを介して前記不揮発性メモリに書き込む第２回路と、
を備え、
前記第１バッファは、
前記第１回路および前記第２回路にアロケート可能な第２バッファと、
前記第１回路にアロケート可能であり前記第２回路にアロケート可能でない第３バッファと、
を含み、
タイマを備え、データが前記第２バッファから前記不揮発性メモリに書き込まれたことに応じて、前記第１バッファを前記第１回路または前記第２回路にアロケートし、データが前記第３バッファから前記不揮発性メモリに書き込まれた後、前記タイマに設定された設定時間に応じたタイミングで、前記第３バッファを前記第１回路にアロケートする、第３回路と、
を備えるメモリシステム。
【請求項２】
前記第３バッファは、複数の第１単位領域を含み、
前記第３回路は、前記設定時間が格納されるレジスタと、前記複数の第１単位領域のうちの、データが前記不揮発性メモリに書き込まれた１以上の第１単位領域を記憶する第４バッファと、を備え、前記第４バッファに記憶されている前記１以上の第１単位領域のそれぞれを、前記設定時間が経過する毎に前記第１回路にアロケートする、
請求項１に記載のメモリシステム。
【請求項３】
前記第３バッファは、前記設定時間を含むタグによってそれぞれ識別される複数の第１単位領域を含み、
前記第３回路は、それぞれ、前記複数の第１単位領域のうちの、データが前記不揮発性メモリに書き込まれた第１単位領域、を示すタグである１以上の第１タグを記憶する第４バッファを備え、前記第４バッファに記憶されているそれぞれの第１タグが示す第１単位領域を、前記それぞれの第１タグに含まれる前記設定時間に基づくタイミングで順次前記第１回路にアロケートする、
請求項１に記載のメモリシステム。
【請求項４】
前記第３バッファは、複数の設定情報のうちの一つを指定する指定情報を含むタグによってそれぞれ識別される複数の第１単位領域を含み、
前記第３回路は、
前記複数の設定時間が格納されるレジスタと、それぞれ前記複数の第１単位領域のうちの、データが前記不揮発性メモリに書き込まれた第１単位領域を示す第４バッファとを備え、
前記第４バッファに記憶されているそれぞれの第１タグが示す第１単位領域を、前記複数の設定時間のうちの前記それぞれの第１タグに含まれる指定情報が示す設定時間に基づくタイミングで順次前記第１回路にアロケートする、
請求項１に記載のメモリシステム。
【請求項５】
前記第３バッファは、複数の第１単位領域を含み、
それぞれの第１単位領域は、前記第３バッファに属するか否かを示す設定情報を含むタグによって識別され、
前記第３回路は、各第１単位領域のタグを操作することによって前記第１単位領域の数を増減させる変更回路をさらに含む、
請求項１に記載のメモリシステム。
【請求項６】
前記第２バッファは、複数の第２単位領域を含み、
前記第３回路は、前記複数の第２単位領域のうちの、データが前記不揮発性メモリに書き込まれた１以上の第２単位領域を記憶する第４バッファをさらに備え、
前記変更回路は、前記第４バッファに記憶されている第２単位領域の数に応じて前記第１単位領域の数を増減させる、
請求項５に記載のメモリシステム。
【請求項７】
前記変更回路は、
前記第４バッファに記憶されている第２単位領域の数が第１値の場合、前記第４バッファに記憶されている第２単位領域の数が前記第１値よりも大きい第２値の場合に比べ、前記第１単位領域の数を多くする、
請求項６に記載のメモリシステム。
【請求項８】
前記第３回路は、前記不揮発性メモリからデータを読み出して前記読み出されたデータを前記第１バッファを介して前記不揮発性メモリに書き込む処理を前記第２回路が非実行中の場合に前記第３バッファのアロケートを停止し、前記第２回路が前記処理を実行中の場合に前記第３バッファのアロケートを実行する、
請求項１に記載のメモリシステム。
【請求項９】
前記第３回路は、前記レジスタに格納されている前記設定時間を変更する設定回路をさらに含む、
請求項２に記載のメモリシステム。
【請求項１０】
前記第２バッファは、複数の第２単位領域を含み、
前記第３回路は、前記複数の第２単位領域のうちの、データが前記不揮発性メモリに書き込まれた１以上の第２単位領域を記憶する第５バッファをさらに備え、
前記設定回路は、前記第５バッファに記憶されている第２記憶領域の数に応じて前記設定時間を変更する、
請求項９に記載のメモリシステム。
【請求項１１】
前記設定回路は、
前記第５バッファに記憶されている第２単位領域の数が第１値の場合、第２値を設定し、
前記第５バッファに記憶されている第２単位領域の数が前記第１値よりも大きい第３値の場合、前記第２値よりも小さい第４値を設定する、
請求項１０に記載のメモリシステム。
【請求項１２】
前記設定回路は、前記ホストから受信したライトコマンドに関する統計情報に基づいて前記設定時間を変更する、
請求項９に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
従来、ＮＡＮＤ型のフラッシュメモリ（以降、ＮＡＮＤメモリ）を備えたメモリシステムが知られている。
【０００３】
ＮＡＮＤメモリに対しては、原則的に、データの上書きができない。また、ＮＡＮＤメモリに対しては、データの消去はブロックより小さい単位で実行できない。このため、メモリシステムに具備されるメモリコントローラは、空き領域を有するブロックを生成するために、ＮＡＮＤメモリ内のデータをリロケートする。データをリロケートする上記した処理は、ガベージコレクションと称される。
【０００４】
ガベージコレクションが開始すると、データのリロケートのためにリソースが割かれることで、ホストからのライトアクセスのレイテンシが悪化することがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１５／００５８５３４号明細書
【特許文献２】米国特許出願公開第２０１６／０３１３９２１号明細書
【特許文献３】米国特許出願公開第２０１５／０１８６２５７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一つの実施形態は、ライトアクセスのレイテンシの変動を緩和したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施形態によれば、メモリシステムは、ホストに接続可能であり、不揮発性メモリと、第１バッファと、第１回路と、第２回路と、第３回路とを備える。第１回路は、ホストから受信したデータを第１バッファを介して不揮発性メモリに書き込む。第２回路は、不揮発性メモリからデータを読み出して、読み出されたデータを第１バッファを介して不揮発性メモリに書き込む。第１バッファは、第１回路および第２回路にアロケート可能な第２バッファと、第１回路にアロケート可能であり第２回路にアロケート可能でない第３バッファと、を含む。第３回路は、タイマを備える。第３回路は、データが第２バッファから不揮発性メモリに書き込まれたことに応じて、第１バッファを第１回路または第２回路にアロケートする。また、第３回路は、データが第３バッファから不揮発性メモリに書き込まれた後、タイマに設定された設定時間に応じたタイミングで、第３バッファを前記第１回路にアロケートする。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態のメモリシステムの構成例を示す図である。
【図２】図２は、第１の実施形態のメモリセルアレイに含まれるブロックを示す図である。
【図３】図３は、第１の実施形態のライトバッファ領域のメモリ構造の一例を説明するための図である。
【図４】図４は、第１の実施形態のリソース管理回路の構成例を示す図である。
【図５】図５は、第２の実施形態のタグの構成例を示す図である。
【図６】図６は、第２の実施形態のリソース管理回路の構成例を示す図である。
【図７】図７は、第３の実施形態のリソース管理回路の構成例を示す図である。
【図８】図８は、第３の実施形態のタグの構成例を示す図である。
【図９】図９は、第４の実施形態のタグの構成例を示す図である。
【図１０】図１０は、第４の実施形態のリソース管理回路の構成例を示す図である。
【図１１】図１１は、第５の実施形態のリソース管理回路の構成例を示す図である。
【図１２】図１２は、第６の実施形態のリソース管理回路の構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１０】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムの構成例を示す図である。メモリシステム１は、ホスト２と接続可能である。メモリシステム１とホスト２との間の通信路の規格は、特定の規格に限定されない。一例では、ＳＡＳ（Serial  Attached  SCSI）が採用され得る。
【００１１】
ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム１は、ホスト２からアクセスコマンド（リードコマンドおよびライトコマンド）を受け付けることができる。各アクセスコマンドは、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム１がホスト２に提供する論理アドレス空間内の位置を示す。メモリシステム１は、ライトコマンドとともに、ライトコマンドによって書き込み要求されたデータを受信することができる。
【００１２】
メモリシステム１は、メモリコントローラ１０と、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）２０と、を備えている。メモリコントローラ１０は、ホスト２とＮＡＮＤメモリ２０との間のデータ転送を実行する。
【００１３】
なお、ＮＡＮＤメモリ２０は、不揮発性メモリの一例である。メモリシステム１は、ＮＡＮＤメモリ２０の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム１は、ＮＡＮＤメモリ２０の代わりにＮＯＲ型のフラッシュメモリを具備することができる。
【００１４】
ＮＡＮＤメモリ２０は、１以上のメモリチップ２１によって構成され得る。各メモリチップ２１は、メモリセルアレイ２２を備える。各メモリセルアレイ２２は、図２に例示されるように、複数のブロック２３を備える。１つのブロック２３に格納されている全てのデータは、一括に消去され得る。各ブロック２３は、複数のページを備える。ページは、データがリードまたはライトされ得る最小の記憶領域である。
【００１５】
ここで、ＮＡＮＤメモリ２０に対するデータの書き込み方法を説明する。ホスト２から送られてきたデータ（新しいデータ）は、空き領域を有するブロック２３に書き込まれる。新しいデータがそのブロック２３に書き込まれると、論理アドレスと物理アドレスとの対応関係を示す翻訳情報（翻訳情報１６０）が更新される。各物理アドレスは、ＮＡＮＤメモリ２０内の物理的な位置を示す。翻訳情報１６０の更新によって、新しいデータの論理アドレス空間内の位置を示す論理アドレスが新しいデータのＮＡＮＤメモリ２０内の書き込み先の位置を示す物理アドレスに対応付けられる。
【００１６】
新しいデータが書き込まれる前にその論理アドレスに別のデータ（古いデータ）の書き込み先を示す物理アドレスが対応付けられていた場合、翻訳情報１６０の更新により、当該古いデータの書き込み先を示す物理アドレスは、何れの論理アドレスも対応付けられていない状態となる。その結果、メモリシステム１は、ホスト２が新しいデータをリードすることが可能であるが古いデータをリードすることができないという状態になる。論理アドレスが対応付けられている物理アドレスが示す位置に格納されているデータを、有効データと表記する。何れの論理アドレスも対応付けられていない物理アドレスが示す位置に格納されているデータを、無効データと表記する。
【００１７】
ＮＡＮＤメモリ２０への書き込みが行われることによって、空き領域が消費される。メモリコントローラ１０は、空き領域を有するブロック２３を生成するために、ブロック２３内に含まれる無効データをイレースする。しかし、１つのブロック２３に記憶される全てのデータが無効であることは稀であるため、メモリコントローラ１０は、あるブロック２３内に残っている有効データを別のブロック２３にコピーする。メモリコントローラ１０が、有効データをコピーするとともに翻訳情報１６０を更新することで、コピー元のブロック２３の有効データは、コピー先のブロック２３にリロケートされる。有効データのリロケートによって、コピー元のブロック２３は、有効データを全く含まない状態になる。リロケートによって有効データを全く含まなくなったブロック２３は、フリーブロックと呼ばれる。フリーブロックに格納されているデータは、一括にイレースされ、そのフリーブロック内の全てのページは空き領域になる。フリーブロックの数を増やすために有効データをブロック２３間でリロケートする処理は、ガベージコレクションと称される。
【００１８】
なお、コピー元のブロック２３およびコピー先のブロック２３は、任意の方法で選択され得る。一例では、複数のブロック２３のうちの格納している有効データの量が少ないブロック２３が優先的にコピー元のブロック２３として選択される。また、空き領域を有するブロック２３がコピー先のブロック２３として選択される。
【００１９】
このように、メモリコントローラ１０は、ＮＡＮＤメモリ２０に対し、ホスト２から受信したデータの書き込みと、ガベージコレクションの一環として含まれる、ＮＡＮＤメモリ２０から読み出されたデータの書き込みと、の２種類の書き込みを実行する。以降、ホスト２から受信したデータのＮＡＮＤメモリ２０への書き込みをホストライトと表記することがある。また、ガベージコレクションに起因するＮＡＮＤメモリ２０への書き込みをガベージコレクションライト（ＧＣライト）と表記することがある。
【００２０】
図１に説明を戻す。メモリコントローラ１０は、ホストコントローラ１１、ＮＡＮＤコントローラ１２、ＣＰＵ（Central  Processing  Unit）１３、リソース管理回路１４、ガベージコレクション（ＧＣ）制御回路１５、およびＲＡＭ（Random  Access  Memory）１６を備える。メモリコントローラ１０は、例えばＳｏＣ（system-on-chip）として構成され得る。メモリコントローラ１０は、複数のチップによって構成されてもよい。
【００２１】
ＲＡＭ１６は、データを一時記憶することができる記憶領域として機能する。ＲＡＭ１６を構成するメモリの種類は、特定の種類に限定されない。例えば、ＲＡＭ１６は、ＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＲＡＭ（Static  Random  Access  Memory）、またはこれらの組み合わせによって構成され得る。ＲＡＭ１６は、揮発性メモリによって構成され得る。
【００２２】
ＲＡＭ１６には、翻訳情報１６０が格納される。翻訳情報１６０は、ＲＡＭ１６上で更新される。翻訳情報１６０は、所定のタイミングでＲＡＭ１６からＮＡＮＤメモリ２０に書き込まれる（保存される）。そして、ＮＡＮＤメモリ２０に保存された翻訳情報１６０は、メモリシステム１のスタートアップ時などにＮＡＮＤメモリ２０からＲＡＭ１６にロードされる。なお、翻訳情報１６０がＮＡＮＤメモリ２０に格納され、必要に応じて翻訳情報１６０の一部がＲＡＭ１６にキャッシュされてもよい。
【００２３】
また、ＲＡＭ１６は、ライトバッファ領域１６１を備える。ライトバッファ領域１６１には、ホストライトによってＮＡＮＤメモリ２０に書き込まれる予定のデータおよびガベージコレクションによってＮＡＮＤメモリ２０に書き込まれる予定のデータが、一時的に格納される。図３は、ライトバッファ領域１６１のメモリ構造の一例を説明するための図である。
【００２４】
図３に例示されるように、ライトバッファ領域１６１は、複数の単位領域３０を備える。各単位領域３０のサイズは、ページと同じであってもよいし、ページと同じでなくてもよい。各単位領域３０のサイズは、例えば、ページよりも小さいクラスタと呼ばれる単位データのサイズと等しい。各単位領域３０はＩＤによって識別される。各単位領域３０のＩＤを、タグ（タグ４０）と表記する。
【００２５】
なお、複数の単位領域３０は、１以上の単位領域３０ａおよび１以上の単位領域３０ｂを含む。図３の例では、タグ４０の値が＃０〜＃ｍ−１までの範囲に含まれる各単位領域３０は単位領域３０ａに該当し、タグ４０の値が＃ｍ〜＃ｎ−１までの範囲に含まれる各単位領域３０は単位領域３０ｂに該当する。ただし、ここではタグ４０の値はライトバッファ領域１６１の先頭から順番に昇順にアサインされていることとしている。ｎは、ライトバッファ領域１６１に含まれる単位領域３０の数である。単位領域３０ａおよび単位領域３０ｂについては後述する。
【００２６】
リソース管理回路１４は、各単位領域３０を、ホストライト用にアロケートしたり、ＧＣライト用にアロケートしたりする。ホストライト用にアロケートされた単位領域３０は、ホスト２から受信したデータを格納することが可能である。ＧＣライト用にアロケートされた単位領域３０は、ガベージコレクションによってＮＡＮＤメモリ２０から読み出され、ＮＡＮＤメモリ２０に書き込まれる予定のデータを格納することが可能である。
【００２７】
ホストコントローラ１１およびＮＡＮＤコントローラ１２は、ホスト２から受信したデータをライトバッファ領域１６１を介してＮＡＮＤメモリ２０に書き込む第１回路を構成する。
【００２８】
具体的には、ホストコントローラ１１は、ライトコマンドによって書き込み要求されたデータをホスト２から受信して、受信したデータをライトバッファ領域１６１のうちのホストライト用にアロケートされた単位領域３０に格納する。ホストコントローラ１１は、単位領域３０にデータを格納すると、その単位領域３０をＮＡＮＤコントローラ１２に通知する。ＮＡＮＤコントローラ１２は、ホストコントローラ１１から通知された単位領域３０に格納されているデータを、ＮＡＮＤメモリ２０に書き込む。このように、ホストコントローラ１１およびＮＡＮＤコントローラ１２が協働することによって、ホスト２から受信したデータは、ライトバッファ領域１６１（より正確にはホストライト用にアロケートされた単位領域３０）に格納され、その後、ライトバッファ領域１６１からＮＡＮＤメモリ２０に書き込まれる。
【００２９】
ＧＣ制御回路１５およびＮＡＮＤコントローラ１２は、ＮＡＮＤメモリ２０に書き込まれたデータを読み出して、読み出されたデータをライトバッファ領域１６１を介してＮＡＮＤメモリ２０に書き込む第２回路を構成する。
【００３０】
具体的には、ＧＣ制御回路１５は、ガベージコレクションを制御する。ＧＣ制御回路１５は、コピー元のブロック２３からＮＡＮＤコントローラ１２を介して少なくとも有効データを読み出す。ＧＣ制御回路１５は、読み出した有効データを、ＧＣライト用にアロケートされた単位領域３０に格納する。ＧＣ制御回路１５は、単位領域３０にデータを格納すると、その単位領域３０をＮＡＮＤコントローラ１２に通知する。ＮＡＮＤコントローラ１２は、ＧＣ制御回路１５から通知された単位領域３０に格納されているデータを、ＮＡＮＤメモリ２０に書き込む。このように、ＧＣ制御回路１５およびＮＡＮＤコントローラ１２が協働することによって、ＮＡＮＤメモリ２０から読み出されたデータは、ライトバッファ領域１６１（より正確にはＧＣライト用にアロケートされた単位領域３０）に格納され、その後、ライトバッファ領域１６１からＮＡＮＤメモリ２０に書き込まれる。
【００３１】
各単位領域３０は、データが格納され、その後そのデータがＮＡＮＤメモリ２０に書き込まれた場合、使用済みの状態としてみなされる。使用済みとなった単位領域３０は、リソース管理回路１４によって回収され、リソース管理回路１４によって再びホストライト用またはＧＣライト用にアロケートされる。
【００３２】
具体的には、ＮＡＮＤコントローラ１２には、ホストコントローラ１１またはＧＣ制御回路１５から単位領域３０が通知される。ＮＡＮＤコントローラ１２は、通知された単位領域３０に格納されているデータをＮＡＮＤメモリ２０に書き込む。ＮＡＮＤコントローラ１２は、データをＮＡＮＤメモリ２０に書き込むとともに翻訳情報１６０を更新してもよい。ＮＡＮＤコントローラ１２は、データの書き込みおよび翻訳情報１６０の更新を完了すると、その単位領域３０は使用済みである旨をリソース管理回路１４に通知する。ＮＡＮＤコントローラ１２によってリソース管理回路１４に使用済みとして通知された単位領域３０は、リソース管理回路１４によって再びアロケートされるまで、ホストライトおよびガベージコレクションのいずれにおいても使用できない。使用済みの単位領域３０は、再びアロケートされることが可能な単位領域３０としてリソース管理回路１４によって回収される。
【００３３】
ＣＰＵ１３は、プログラムに基づいてメモリコントローラ１０の所定の機能を実現する。例えば、当該プログラムは、不揮発性のメモリ（例えばＮＡＮＤメモリ２０）に予め格納されており、メモリシステム１のスタートアップ時にＲＡＭ１６にロードされる。ＣＰＵ１３は、ＲＡＭ１６にロードされた当該プログラムを実行することによって、前記所定の機能を実現する。
【００３４】
ＣＰＵ１３は、例えば、ＧＣ制御回路１５に対し、ガベージコレクションの開始および停止を指示する。ガベージコレクションの開始および停止のタイミングは、任意の方法で決定され得る。
【００３５】
一例では、ＣＰＵ１３は、空き領域の合計サイズをモニタリングする。ＣＰＵ１３は、当該合計サイズが所定の閾値を下回った場合にＧＣ制御回路１５にガベージコレクションの開始を指示し、当該合計サイズが所定の閾値まで回復した場合にＧＣ制御回路１５にガベージコレクションの停止を指示する。ガベージコレクションの開始の判定のための閾値とガベージコレクションの停止の判定のための閾値とは、同じであってもよいし、同じでなくてもよい。
【００３６】
別の例では、ＣＰＵ１３は、ガベージコレクションライトによってＮＡＮＤメモリ２０に書き込まれるデータの量とホストライトによってＮＡＮＤメモリ２０に書き込まれるデータの量との比が特定の比と一致するように、ガベージコレクションの開始および停止のタイミングを計算し、計算されたタイミングでＧＣ制御回路１５にガベージコレクションの開始または停止を指示する。前記特定の比は、固定されていてもよいし動的に変更されてもよい。
【００３７】
なお、ＣＰＵ１３は、ガベージコレクションの開始および停止の指示のほかに、翻訳情報１６０の更新などを含む、任意の機能を実現し得る。
【００３８】
ここで、例えばガベージコレクションが実行されることによってホストライト用にアロケート可能な単位領域３０が枯渇した場合、ホスト２からのデータを受け入れ可能な単位領域３０の供給が途絶えることから、ホスト２からメモリシステム１へのデータの転送速度が低下する。よって、ガベージコレクションが停止してホストライト用にアロケート可能な単位領域３０の数が回復するまでの間、ホスト２からのライトコマンドの実行に要する時間が遅くなる。即ち、ライトアクセスのレイテンシが一時的に低下する。
【００３９】
第１の実施形態では、ライトアクセスのレイテンシの一時的な低下を緩和するために、ライトバッファ領域１６１に、一定の時間間隔でホストライト用にアロケートされる特定の単位領域３０である単位領域３０ｂが設定される。図３に例示されるように、ライトバッファ領域１６１には、ＧＣライト用およびホストライト用のいずれにもアロケートされ得る１以上の単位領域３０ａと、ホストライト用にアロケート可能でありＧＣライト用にアロケート可能でない１以上の単位領域３０ｂとが含まれる。リソース管理回路１４は、単位領域３０ａを、ホストライトまたはＧＣライトの実行に応じてＧＣライト用またはホストライト用にアロケートする。リソース管理回路１４は、所定の時間間隔で単位領域３０ｂをホストライト用にアロケートする。
【００４０】
ホストライト用のみにアロケート可能な単位領域３０ｂが用意され、単位領域３０ｂが所定の時間間隔でホストライト用にアロケートされることによって、例えばガベージコレクションによって単位領域３０ａが枯渇した場合であっても、ホスト２から受信するデータを格納できる領域が所定の時間間隔で供給される。よって、単位領域３０ｂが設けられていない場合に比して、ライトアクセスのレイテンシの一時的な低下が緩和される。
【００４１】
図４は、第１の実施形態のリソース管理回路１４のさらに詳細な構成例を示す図である。
【００４２】
ホストライト用にアロケートされた単位領域３０は、その単位領域３０を示すタグ４０がリソース管理回路１４からホストコントローラ１１に転送されることによって、ホストコントローラ１１に通知される。また、ホストコントローラ１１からＮＡＮＤコントローラ１２に単位領域３０のタグ４０が転送されることによって、その単位領域３０にデータが格納された旨が通知される。また、ＮＡＮＤコントローラ１２からリソース管理回路１４に単位領域３０のタグ４０が転送されることによって、その単位領域３０が使用済みである旨が通知される。このように、ホストライト用にアロケートされた単位領域３０を示すタグ４０は、リソース管理回路１４から転送され、その後、ホストコントローラ１１およびＮＡＮＤコントローラ１２を経由してリソース管理回路１４に戻る。
【００４３】
ＧＣライト用にアロケートされた単位領域３０は、その単位領域３０を示すタグ４０がリソース管理回路１４からＧＣ制御回路１５に転送されることによって、ＧＣ制御回路１５に通知される。また、ＧＣ制御回路１５からＮＡＮＤコントローラ１２に単位領域３０のタグ４０が転送されることによって、その単位領域３０にデータが格納された旨が通知される。また、ＮＡＮＤコントローラ１２からリソース管理回路１４に単位領域３０のタグ４０が転送されることによって、その単位領域３０が使用済みである旨が通知される。このように、ＧＣライト用にアロケートされた単位領域３０を示すタグ４０は、リソース管理回路１４から転送され、その後、ＧＣ制御回路１５およびＮＡＮＤコントローラ１２を経由してリソース管理回路１４に戻る。
【００４４】
リソース管理回路１４は、セレクタ１０１、第１タグバッファ１０２、第２タグバッファ１０３、取得回路１０４、タイマ１０５、レジスタ１０６、およびアービタ１０７を備える。
【００４５】
リソース管理回路１４は、使用済みの単位領域３０として通知された単位領域３０（換言すると回収された単位領域３０）を示すタグ４０を記憶する。第１タグバッファ１０２および第２タグバッファ１０３は、回収された単位領域３０のタグ４０を記憶するメモリである。各タグバッファ１０２、１０３には、１以上のタグ４０が格納され得る。各タグバッファ１０２、１０３は、任意の種類のメモリによって構成され得る。例えば、第１タグバッファ１０２および第２タグバッファ１０３は、レジスタまたはＳＲＡＭによって構成され得る。各タグバッファ１０２、１０３に対し、例えばＦＩＦＯ（First  In,  First  Out）のルールに従って各タグ４０が入出力される。なお、各タグバッファ１０２、１０３に対する入出力のルールはこれに限定されない。
【００４６】
ＮＡＮＤコントローラ１２から受信したホストライト用の単位領域３０のタグ４０は、セレクタ１０１に入力される。セレクタ１０１は、タグ４０が示す単位領域３０が、単位領域３０ａに該当するか単位領域３０ｂに該当するかを判定する。タグ４０が示す単位領域３０が単位領域３０ａに該当する場合、セレクタ１０１は、そのタグ４０を第１タグバッファ１０２に入力する。反対に、タグ４０が示す単位領域３０が単位領域３０ｂに該当する場合、セレクタ１０１は、そのタグ４０を第２タグバッファ１０３に送る。
【００４７】
セレクタ１０１は、タグ４０の値に基づいて、そのタグ４０の転送先を決定する。例えば、図３の例に従えば、セレクタ１０１は、タグ４０の値が＃０から＃ｍ−１までの範囲に含まれる場合、そのタグ４０を第１タグバッファ１０２に入力する。セレクタ１０１は、タグ４０の値が＃ｍから＃ｎ−１までの範囲に含まれる場合、そのタグ４０を第２タグバッファ１０３に入力する。
【００４８】
ＮＡＮＤコントローラ１２から受信したＧＣライト用の単位領域３０（即ち単位領域３０ａ）のタグ４０は、第１タグバッファ１０２に入力される。
【００４９】
このように、ホストライトによって使用された単位領域３０ａのタグ４０およびガベージコレクションによって使用された単位領域３０ａのタグ４０は第１タグバッファ１０２に格納される。また、ホストライトによって使用された単位領域３０ｂのタグ４０は第２タグバッファ１０３に格納される。
【００５０】
ＧＣ制御回路１５は、ガベージコレクションの実行中に、第１タグバッファ１０２にタグ４０が格納されている場合、ガベージコレクションの実行に応じて、そのタグ４０を取得する。
【００５１】
一例では、ＧＣ制御回路１５は、１つの単位領域３０のサイズを有するデータのリロケート毎に第１タグバッファ１０２からタグ４０を取得する。ＧＣ制御回路１５は、ガベージコレクションを非実行中の場合、または、ガベージコレクションの実行中に第１タグバッファ１０２にタグ４０が格納されていない場合、第１タグバッファ１０２からのタグ４０の取得を行わない。
【００５２】
取得回路１０４は、第１タグバッファ１０２にタグ４０が格納されている場合、ホストライトの実行に応じて、そのタグ４０を取得する。
【００５３】
一例では、取得回路１０４は、内部にカウンタを備え、ホストライト用にアロケートされる単位領域３０ａの数の上限値がカウンタの初期値として設定される。当該初期値は、例えば１より大きくかつｍより小さい所定の値である。取得回路１０４は、セレクタ１０１から第１タグバッファ１０２にタグ４０が送られる毎にカウンタの値をインクリメントし、第１タグバッファ１０２からタグ４０を取得する毎にカウンタの値をデクリメントする。取得回路１０４は、第１タグバッファ１０２に１以上のタグ４０が格納されており、かつカウンタの値が１以上である場合、第１タグバッファ１０２からタグ４０を取得する。取得回路１０４は、カウンタの値が０である場合、第１タグバッファ１０２からタグ４０の取得を実行しない。このような構成によって、取得回路１０４は、カウンタの値が１以上であり（即ちホストライト用にアロケートされている単位領域３０ａの数が上限値に達していない）、かつ第１タグバッファ１０２が空ではない場合、第１タグバッファ１０２からタグ４０を取得することができる。また、取得回路１０４は、カウンタの値がゼロである（即ちホストライト用にアロケートされている単位領域３０ａの数が上限値に達している）か、または第１タグバッファ１０２が空である場合、第１タグバッファ１０２からタグ４０を取得しない。
【００５４】
このように、取得回路１０４は、単位領域３０ａに格納したホスト２からのデータがＮＡＮＤメモリ２０に格納されて使用済みの状態になる毎に第１タグバッファ１０２からタグ４０の取得を試みる。よって、取得回路１０４は、結果的に、ホストライトの実行に応じてタグ４０を取得することになる。
【００５５】
レジスタ１０６には、タイマ閾値が格納される。例えばレジスタ１０６には、ＣＰＵ１３によってタイマ閾値が設定される。タイマ１０５は、経過時間をカウントする。タイマ１０５は、経過時間がタイマ閾値に達した場合、経過時間のカウントをリセットおよびリスタートするとともに、第２タグバッファ１０３から所定個（例えば１個）のタグ４０を取得する。タイマ１０５は、取得したタグ４０をアービタ１０７に入力する。
【００５６】
アービタ１０７は、取得回路１０４またはタイマ１０５から入力されたタグ４０をホストコントローラ１１に転送する。アービタ１０７は、取得回路１０４およびタイマ１０５のうちの片方からのみタグ４０が入力されている場合、入力されたタグ４０をホストコントローラ１１に転送する。アービタ１０７は、取得回路１０４およびタイマ１０５の双方から同時にタグ４０が入力された場合、転送すべきタグ４０の調停を行う。例えば、アービタ１０７は、ラウンドロビン方式で調停する。なお、調停の方法はこれに限定されない。
【００５７】
以上述べた構成により、ホストライト用にアロケートされた単位領域３０ｂが使用済みとなった場合、その単位領域３０ｂのタグ４０は、セレクタ１０１を経由して第２タグバッファ１０３に格納される。タイマ１０５は、タイマ閾値として設定された設定時間が経過する毎に、第２タグバッファ１０３からタグ４０を取得する。第２タグバッファ１０３に格納されたタグ４０がタイマ１０５によって取得された場合、そのタグ４０はアービタ１０７を経由してホストコントローラ１１に転送される。よって、リソース管理回路１４は、第２タグバッファ１０３に格納された、それぞれ回収された単位領域３０ｂを示す１以上のタグ４０のそれぞれを、設定時間が経過する毎に順次取得して、取得したタグ４０をホストコントローラ１１に通知することができる。換言すると、リソース管理回路１４は、回収した単位領域３０ｂを設定時間毎にホストライト用にアロケートすることができる。
【００５８】
また、ホストライト用としてアロケートされた単位領域３０ａを示すタグ４０およびＧＣライト用としてアロケートされた単位領域３０ａを示すタグ４０は、それらの単位領域３０ａが使用済みとなった場合に、第１タグバッファ１０２に格納される。第１タグバッファ１０２に格納されたタグ４０は、ＧＣ制御回路１５によってガベージコレクションの実行に応じて取得されるか、またはホストライトの実行に応じて取得回路１０４によって取得される。ガベージコレクションの実行またはホストライトの実行に新たな単位領域３０ａが必要とされている場合、第１タグバッファ１０２に格納されたタグ４０は、即座にホストライト用またはガベージコレクション用にアロケートされる。即ち、リソース管理回路１４は、データが単位領域３０ａからＮＡＮＤメモリ２０に書き込まれたことに応じて、その単位領域３０ａをホストライト用またはガベージコレクション用にアロケートすることができる。
【００５９】
なお、ＧＣライト用にアロケートされ使用済みとなった単位領域３０ａを示すタグ４０は、第１タグバッファ１０２に格納され、ホストライト用にアロケートされ使用済みとなった単位領域３０ａ、３０ｂを示すタグ４０は、セレクタ１０１に入力される、として説明した。ガベージコレクションによって使用された単位領域３０ａを示すタグ４０と、ホストライトによって使用された単位領域３０ａ、３０ｂを示すタグ４０と、を区別する方法は、特定の方法に限定されない。
【００６０】
一例では、ＮＡＮＤコントローラ１２は、ＧＣ制御回路１５からのタグ４０と、ホストコントローラ１１からのタグ４０とを、それぞれ異なるキューに受信する。そして、ＮＡＮＤコントローラ１２は、ＧＣ制御回路１５から受信したタグ４０を、第１タグバッファ１０２に格納し、ホストコントローラ１１から受信したタグ４０を、セレクタ１０１に入力する。
【００６１】
別の例では、ＧＣ制御回路１５は、取得したタグ４０に、ガベージコレクションライト用である旨を示す情報を付加する。また、ホストコントローラ１１は、アービタ１０７から送られてきたタグ４０に、ホストライト用である旨を示す情報を付加する。ＮＡＮＤコントローラ１２またはリソース管理回路１４は、受信したタグ４０に付加された情報に基づいて、そのタグ４０を第１タグバッファ１０２に格納するかセレクタ１０１に入力するかを決定する。
【００６２】
以上述べたように、第１の実施形態によれば、ライトバッファ領域１６１は、ホストライト用にアロケート可能であり、ガベージコレクションライト用にアロケート可能でない１以上の単位領域３０ｂを備える。リソース管理回路１４は、タイマ１０５を備え、第２タグバッファ１０３に格納された、それぞれ使用済みの単位領域３０ｂを示す１以上のタグ４０を、タイマ閾値として設定された設定時間が経過する毎に順次取得して、取得したタグ４０をホストコントローラ１１に通知する。換言すると、リソース管理回路１４は、使用済みとなった単位領域３０ｂを設定時間毎にホストライト用にアロケートする。
【００６３】
この構成により、ガベージコレクションによって単位領域３０ａが枯渇した場合であっても、ホスト２から受信するデータを格納できる領域が設定時間間隔で供給される。よって、単位領域３０ｂが設けられていない場合に比して、ライトアクセスのレイテンシの一時的な低下が緩和される。即ち、ライトアクセスのレイテンシの変動が緩和される。
【００６４】
（第２の実施形態）
第１の実施形態では、定期的に単位領域３０ｂがホストライト用にアロケートされる例について説明した。各単位領域３０ｂがアロケートされる時間間隔は、一定でなくてもよい。
【００６５】
第２の実施形態では、複数の単位領域３０ｂのそれぞれに個別に設定時間が設定される。そのための構成の一例として、図５に示されるように、各タグ４０ａは、何れかの単位領域３０を示すＩＤ４１のほかにタイマ閾値４２を含む。
【００６６】
また、図６に示されるように、第２の実施形態のリソース管理回路１４は、セレクタ１０１ａ、第１タグバッファ１０２、第２タグバッファ１０３、取得回路１０４、タイマ１０５ａ、およびアービタ１０７を備える。これらの構成要素のうち、第１の実施形態と同じ機能を有する構成要素には、第１の実施形態と同じ符号が付されている。第１の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
【００６７】
セレクタ１０１ａは、タグ４０ａが入力された場合、そのタグ４０ａに含まれるタイマ閾値４２に基づいて、そのタグ４０ａ（より正確にはそのタグ４０ａに含まれるＩＤ４１）が単位領域３０ａを示すか単位領域３０ｂを示すかを判定する。例えば、単位領域３０ａのタグ４０ａのタイマ閾値４２としてゼロが設定され、単位領域３０ｂのタグ４０ａのタイマ閾値４２としてゼロより大きい正の値が設定される。その場合、セレクタ１０１ａは、タイマ閾値４２がゼロであるか否かに基づいて、そのタグ４０ａが単位領域３０ａを示すか単位領域３０ｂを示すかを判定することができる。セレクタ１０１ａは、単位領域３０ａのタグ４０ａを第１タグバッファ１０２に入力し、単位領域３０ｂのタグ４０ａを第２タグバッファ１０３に入力する。
【００６８】
なお、セレクタ１０１ａは、第１の実施形態と同様に、タグ４０ａが単位領域３０ａを示すか単位領域３０ｂを示すかを、ＩＤ４１に基づいて判定してもよい。
【００６９】
タイマ１０５ａは、第２タグバッファ１０３に１以上のタグ４０ａが格納されている場合、第２タグバッファ１０３から１つのタグ４０ａを取得する。タイマ１０５ａは、取得したタグ４０ａに含まれるタイマ閾値４２を読む。そして、タイマ１０５ａは、タグ４０ａを取得してから、そのタグ４０ａから読んだタイマ閾値４２として設定された時間が経過した後に、そのタグ４０ａをアービタ１０７に入力する。タイマ１０５ａは、１つのタグ４０ａをアービタ１０７に入力した後に、次のタグ４０ａを第２タグバッファ１０３から取得することができる。よって、第２タグバッファ１０３に格納された各タグ４０ａは、前のタグ４０ａがアービタ１０７に送られてからタイマ閾値４２として設定された時間が経過した後に、アービタ１０７に送られる。
【００７０】
なお、タイマ１０５ａの構成は、上記した構成だけに限定されない。例えば、タイマ１０５ａは、フリーランカウンタを内部に備え、タグ４０ａが第２タグバッファ１０３に入力されたときにそのタグ４０ａのタイマ閾値４２を読む。そして、タイマ１０５ａは、フリーランカウンタのカウント値に基づき、第２タグバッファ１０３に入力されたタイミングからそのタグ４０ａに含まれるタイマ閾値４２として設定された時間が経過したタイミングで、そのタグ４０ａをアービタ１０７に入力する。この構成によって、タイマ閾値４２の値が小さいタグ４０ａは、先に第２タグバッファ１０３に格納されたタイマ閾値４２の値が大きいタグ４０ａよりも早く第２タグバッファ１０３からアービタ１０７に送られ得る。
【００７１】
このように、第２の実施形態のリソース管理回路１４は、各単位領域３０を、対応するタグ４０ａに含まれるタイマ閾値４２に基づくタイミングでホストライト用にアロケートすることができる。換言すると、リソース管理回路１４は、第２タグバッファ１０３に格納されている各タグ４０ａが示す単位領域３０ｂを、対応するタグ４０ａに含まれるタイマ閾値４２に応じたタイミングで順次ホストライト用にアロケートする。よって、各単位領域３０ｂがホストライト用にアロケートされる時間の間隔を単位領域３０ｂ毎に個別に設定することが可能となる。
【００７２】
（第３の実施形態）
図７は、第３の実施形態のリソース管理回路１４の構成例を示す図である。第３の実施形態のリソース管理回路１４は、セレクタ１０１ｂ、第１タグバッファ１０２、第２タグバッファ１０３、取得回路１０４、タイマ１０５ｂ、複数（ここでは一例として３つ）のレジスタ１０６ｂ、アービタ１０７、および第２セレクタ１０８を備える。なお、これらの構成要素のうち、第１の実施形態と同じ機能を有する構成要素には、第１の実施形態と同じ符号が付されている。また、第１の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
【００７３】
それぞれのレジスタ１０６ｂには、タイマ閾値が格納されている。それぞれ異なるレジスタ１０６ｂに格納されたタイマ閾値の値は、異なっていてもよいし、同一であってもよい。ここでは、それぞれ異なる値のタイマ閾値が複数のレジスタ１０６ｂに設定されていることとする。各レジスタ１０６ｂには、例えばＣＰＵ１３によってタイマ閾値が格納される。
【００７４】
図８に例示されるように、各タグ４０ｂはＩＤ４１のほかに選択情報４３を含む。選択情報４３は、複数のレジスタ１０６ｂのうちの一を示す情報である。
【００７５】
セレクタ１０１ｂは、タグ４０ｂが入力された場合、そのタグ４０ｂに含まれる選択情報４３に基づいて、そのタグ４０ｂ（より正確にはそのタグ４０ｂに含まれるＩＤ４１）が単位領域３０ａを示すか単位領域３０ｂを示すかを判定する。例えば、単位領域３０ａのタグ４０ｂの選択情報４３として、複数のレジスタ１０６ｂのうちの何れも示さない値（無効値）が設定される。セレクタ１０１ｂは、選択情報４３として無効値が設定されているか否かに基づいて、そのタグ４０ｂが単位領域３０ａを示すか単位領域３０ｂを示すかを判定することができる。
【００７６】
なお、セレクタ１０１ｂは、第１の実施形態と同様に、タグ４０ｂが単位領域３０ａを示すか単位領域３０ｂを示すかを、ＩＤ４１に基づいて判定してもよい。
【００７７】
セレクタ１０１ｂは、単位領域３０ａのタグ４０ｂを第１タグバッファ１０２に入力し、単位領域３０ｂのタグ４０ｂを第２タグバッファ１０３に入力する。
【００７８】
タイマ１０５ｂが第２タグバッファ１０３からタグ４０ｂを取得すると、そのタグ４０ｂに含まれる選択情報４３は、第２セレクタ１０８に入力される。第２セレクタ１０８は、複数のレジスタ１０６ｂのうちの選択情報４３が示すレジスタ１０６ｂから、タイマ閾値を取得して、取得したタイマ閾値をタイマ１０５ｂに入力する。
【００７９】
タイマ１０５ｂは、タグ４０ｂを取得してから、入力されたタイマ閾値として設定された時間が経過した後に、そのタグ４０ｂをアービタ１０７に入力する。タイマ１０５ｂは、１つのタグ４０ｂをアービタ１０７に入力した後に、次のタグ４０ｂを第２タグバッファ１０３から取得することができる。
【００８０】
このように、複数のレジスタ１０６ｂのうちの選択情報４３によって選択されたレジスタ１０６ｂに格納されたタイマ閾値が使用される。また、各タグ４０ｂに選択情報４３が含まれている。複数のレジスタ１０６ｂのそれぞれにタイマ閾値が設定され、選択情報４３によって１つのレジスタ１０６ｂが選択可能に構成されるので、予め用意された複数のタイマ閾値のうちの任意の一つを、単位領域３０ｂ毎に選択することが可能である。
【００８１】
以上述べたように、第３の実施形態によれば、第２の実施形態と同様に、各単位領域３０ｂがホストライト用にアロケートされる時間の間隔を単位領域３０ｂ毎に個別に設定することが可能となる。
【００８２】
なお、選択情報４３は、レジスタ１０６ｂの数に応じたサイズを有する。例えば、４つのレジスタ１０６ｂが具備される場合、選択情報４３は、少なくとも２ビットのサイズを有する。選択情報４３のサイズがタイマ閾値のサイズよりも小さくなるようにレジスタ１０６ｂの数を設定することによって、各タグ４０ｂのサイズを第２の実施形態に比べて小さくすることが可能である。
【００８３】
（第４の実施形態）
第４の実施形態では、各単位領域３０は、単位領域３０ａと単位領域３０ｂとの間で切り替え可能に構成される。
【００８４】
図９は、第４の実施形態のタグ４０ｃの構成例を示す図である。本図に示されるように、タグ４０ｃには、ＩＤ４１のほかにフラグ情報４４が含まれている。フラグ情報４４は、そのタグ４０ｃ（より正確にはそのタグ４０ｃに含まれるＩＤ４１）が示す単位領域３０が単位領域３０ａに該当するか単位領域３０ｂに該当するかを示す設定情報である。
【００８５】
図１０は、第４の実施形態のリソース管理回路１４の構成例を示す図である。第４の実施形態のリソース管理回路１４は、セレクタ１０１ｃ、第１タグバッファ１０２、第２タグバッファ１０３、取得回路１０４、タイマ１０５、レジスタ１０６、アービタ１０７、および変更回路１０９を備える。なお、これらの構成要素のうち、第１の実施形態と同じ機能を有する構成要素には、第１の実施形態と同じ符号が付されている。また、第１の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
【００８６】
セレクタ１０１ｃは、タグ４０ｃが入力された場合、そのタグ４０ｃに含まれるフラグ情報４４に基づいて、そのタグ４０ｃが単位領域３０ａを示すか単位領域３０ｂを示すかを判定する。セレクタ１０１ｂは、単位領域３０ａを示すタグ４０ｃを第１タグバッファ１０２に入力し、単位領域３０ｂを示すタグ４０ｃを第２タグバッファ１０３に入力する。
【００８７】
なお、セレクタ１０１ｃは、第１の実施形態と同様に、タグ４０ｃが単位領域３０ａを示すか単位領域３０ｂを示すかを、ＩＤ４１に基づいて判定してもよい。
【００８８】
変更回路１０９は、アービタ１０７とホストコントローラ１１との間に設けられている。変更回路１０９は、アービタ１０７から出力されたタグ４０ｃに含まれているフラグ情報４４を操作することによって、各単位領域３０を、単位領域３０ａと単位領域３０ｂとの間で切り替えることが可能である。
【００８９】
具体的には、変更回路１０９は、単位領域３０ａを示す値が設定されたフラグ情報４４を含むタグ４０ｃをアービタ１０７から受信した場合、そのフラグ情報４４の値を単位領域３０ｂを示す値に変更することによって、そのタグ４０ｃが示す単位領域３０を単位領域３０ａから単位領域３０ｂに変更することができる。また、変更回路１０９は、単位領域３０ｂを示す値が設定されたフラグ情報４４を含むタグ４０ｃをアービタ１０７から受信した場合、そのフラグ情報４４の値を単位領域３０ａを示す値に変更することによって、そのタグ４０ｃが示す単位領域３０を単位領域３０ｂから単位領域３０ａに変更することができる。
【００９０】
フラグ情報４４の値が変更されたタグ４０ｃは、そのタグ４０ｃが示す単位領域３０が使用済みとなってそのタグ４０ｃがＮＡＮＤコントローラ１２からリソース管理回路１４に転送されたとき、セレクタ１０１ｃによって、フラグ情報４４の変更された値に基づいて第１タグバッファ１０２および第２タグバッファ１０３のうちの転送先のバッファが決定される。
【００９１】
このように、第４の実施形態によれば、リソース管理回路１４に、タグ４０ｃに含まれるフラグ情報４４の値を、単位領域３０ａを示す値と単位領域３０ｂを示す値との間で切り替える変更回路１０９が設けられた。よって、各単位領域３０の設定は、単位領域３０ａと単位領域３０ｂとの間で切り替えられ得る。
【００９２】
なお、変更回路１０９によるフラグ情報４４の操作のアルゴリズムは、特定のアルゴリズムに限定されない。
【００９３】
一例では、変更回路１０９は、第１タグバッファ１０２内のタグ４０ｃの数を監視し、第１タグバッファ１０２内のタグ４０ｃの数に応じてフラグ情報４４の制御を行う。より具体的には、例えば、変更回路１０９は、第１タグバッファ１０２内のタグ４０ｃの数が第１値の場合、第１タグバッファ１０２内のタグ４０ｃの数が第１値よりも大きい第２値の場合に比べ、単位領域３０ｂの数を多くする。逆に、第１タグバッファ１０２内のタグ４０ｃの数が第２値の場合、第１タグバッファ１０２内のタグ４０ｃの数が第１値の場合に比べ、単位領域３０ｂの数を少なくする。
【００９４】
第１タグバッファ１０２内のタグ４０ｃが少なくなるにつれて、ライトアクセスのレイテンシが徐々に悪化する。上述のように第１タグバッファ１０２内のタグ４０ｃの数が少なくなった場合に単位領域３０ｂの数が増加せしめられることにより、ライトアクセスのレイテンシの悪化を緩和することが可能である。
【００９５】
なお、以上の説明では、第１の実施形態が適用されたリソース管理回路１４に第４の実施形態を適用した例について説明した。第４の実施形態は、第２の実施形態が適用されたリソース管理回路１４および第３の実施形態が適用されたリソース管理回路１４にも適用可能である。例えば、第２の実施形態が適用されたリソース管理回路１４に第４の実施形態が適用される場合、変更回路１０９は、各タグ４０ａのタイマ閾値４２を操作するように構成されればよい。また、第３の実施形態が適用されたリソース管理回路１４に第４の実施形態が適用される場合、変更回路１０９は、各タグ４０ｂの選択情報４３を操作するように構成されればよい。
【００９６】
（第５の実施形態）
図１１は、第５の実施形態のリソース管理回路１４の構成例を示す図である。第５の実施形態のリソース管理回路１４は、セレクタ１０１、第１タグバッファ１０２、第２タグバッファ１０３、取得回路１０４、タイマ１０５、レジスタ１０６、アービタ１０７、および設定回路１１０を備える。また、第５の実施形態では、ＧＣ制御回路１５に代えて、ＧＣ制御回路１５ｄを備える。なお、これらの構成要素のうち、第１の実施形態と同じ機能を有する構成要素には、第１の実施形態と同じ符号が付されている。また、第１の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
【００９７】
ＧＣ制御回路１５ｄは、第１の実施形態のＧＣ制御回路１５と同様の動作を実行するほかに、ガベージコレクションの実行および非実行を設定回路１１０に通知する。例えば、ＧＣ制御回路１５ｄは、ガベージコレクションを開始した場合、ガベージコレクションの開始を設定回路１１０に通知する。また、ＧＣ制御回路１５ｄは、ガベージコレクションを停止した場合、ガベージコレクションの停止を設定回路１１０に通知する。
【００９８】
設定回路１１０は、ＧＣ制御回路１５ｄからの通知に基づいて、タイマ１０５の動作を停止させたり再開させたりする。設定回路１１０は、ガベージコレクションの非実行中は、タイマ１０５の動作を停止させ、ガベージコレクションの実行中には、タイマ１０５を動作させる。
【００９９】
ガベージコレクションの非実行中には、ホストライト用にアロケート可能な単位領域３０ａは、ガベージコレクションの実行中に比べ、枯渇しにくい傾向がある。ガベージコレクションの非実行中には、単位領域３０ｂを一定の時間間隔でアロケートすることの必要性が薄れる。第５の実施形態によれば、ガベージコレクションの実行中は、タイマ１０５が動作中となることにより、リソース管理回路１４は、単位領域３０ｂのアロケートを実行する。また、ガベージコレクションの非実行中は、タイマ１０５が非動作中となることにより、リソース管理回路１４は、単位領域３０ｂのアロケートを実行しない。よって、必要な場合にのみライトレイテンシの悪化を緩和する制御を行うことが可能となる。
【０１００】
（第６の実施形態）
図１２は、第６の実施形態のリソース管理回路１４の構成例を示す図である。第６の実施形態のリソース管理回路１４は、セレクタ１０１、第１タグバッファ１０２、第２タグバッファ１０３、取得回路１０４、タイマ１０５、レジスタ１０６、アービタ１０７、および設定回路１１０ａを備える。なお、これらの構成要素のうち、第１の実施形態と同じ機能を有する構成要素には、第１の実施形態と同じ符号が付されている。また、第１の実施形態と同じ機能を有する構成要素についての詳細な説明は省略される。
【０１０１】
設定回路１１０ａは、第１タグバッファ１０２内のタグ４０の数を監視し、第１タグバッファ１０２内のタグ４０の数に応じてタイマ閾値を設定する。
【０１０２】
一例では、設定回路１１０ａは、第１タグバッファ１０２内のタグ４０の数が第３値の場合、タイマ閾値として第４値を設定する。第１タグバッファ１０２内のタグ４０の数が第５値よりも大きい第５値の場合、設定回路１１０ａは、タイマ閾値として第６値を設定する、ただし、第６値は第４値よりも小さい。このように、設定回路１１０ａは、第１タグバッファ１０２内のタグ４０の数が小さい場合、タイマ閾値を大きくし、第１タグバッファ１０２内のタグ４０の数が大きい場合、タイマ閾値を小さくする。これにより、ホストライト用にアロケート可能な単位領域３０ａが十分に存在する場合には単位領域３０ｂをアロケートする時間間隔を短縮またはゼロとすることで、必要な場合にのみライトレイテンシの悪化を緩和する制御を行うことが可能となる。
【０１０３】
なお、タイマ閾値を変更するアルゴリズムは、種々の変形が可能である。
【０１０４】
他のアルゴリズムとしては、メモリシステム１内で記録される統計情報を利用するアルゴリズムが考えられる。例えば、ＣＰＵ１３は、ホスト２から受信するライトコマンドの数を統計情報として記録する。設定回路１１０ａは、統計情報に基づいてタイマ閾値を変更してもよい。一例では、ホスト２からライトコマンドを受信する頻度が第７値の場合、設定回路１１０ａは、タイマ閾値として第８値を設定する。ホスト２からライトコマンドを受信する頻度が第７値よりも大きい第９値の場合、設定回路１１０ａは、タイマ閾値として第１０値を設定する。第１０値は、第８値よりも大きい。
【０１０５】
第１〜第６の実施形態において説明したように、実施形態のリソース管理回路１４は、タイマ１０５を備え、単位領域３０ｂが使用済みとなった場合、タイマ１０５に設定されたタイマ閾値に応じたタイミングで、使用済みとなった単位領域３０ｂを再びホストライト用にアロケートする。即ち、リソース管理回路１４は、単位領域３０ｂに格納されていたデータがＮＡＮＤメモリ２０に書き込まれた後、タイマ１０５に設定された設定時間に応じたタイミングで、単位領域３０ｂをホストライト用にアロケートする。これにより、ガベージコレクションによって単位領域３０ａが枯渇した場合であっても、ホスト２から受信するデータを格納できる領域が逐次供給される。よって、単位領域３０ｂが設けられていない場合に比して、ライトアクセスのレイテンシの一時的な低下が緩和され、その結果、ライトアクセスのレイテンシの変動が緩和される。
【０１０６】
なお、ホスト２に複数のメモリシステムが接続される場合がある。ホスト２は、１つのファイルを複数の部分ファイルに分割して、それぞれの部分ファイルを複数のメモリシステム１に分散させて書き込む方式が知られている。この方式は、ライトストリームと称され得る。ライトストリームが適用される場合、複数のメモリシステム間でライトアクセスのレイテンシにばらつきがあると、複数のメモリシステムに対するライトアクセスのレイテンシは、最もレイテンシが悪いメモリシステム１がボトルネックとなって悪化する。各メモリシステムとして第１〜第６の実施形態のメモリシステム１が適用されることにより、各メモリシステム１のライトアクセスのレイテンシの変動が緩和されるので、複数のメモリシステム１間のレイテンシのばらつきを小さくすることが可能となる。よって、ライトストリームが適用される場合、複数のメモリシステム１に対するライトアクセスのレイテンシの変動を小さくすることが可能となる。
【０１０７】
また、ＮＡＮＤメモリの疲弊の進行を抑制するために、メモリシステムの性能をスロットリングする技術が知られている。第１〜第６の実施形態のメモリシステム１において、単位領域３０ｂの数と単位領域３０ａの数とは、任意に設定可能である。単位領域３０ｂの数および単位領域３０ａの数の設定に応じて、ライトアクセスのレイテンシの瞬間的な最大値と最小値とが変化する。単位領域３０ｂの数および単位領域３０ａの数の設定を工夫することによって、メモリシステム１の性能のスロットリングが可能となる。
【０１０８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０９】
１  メモリシステム、２  ホスト、１０  メモリコントローラ、１１  ホストコントローラ、１２  ＮＡＮＤコントローラ、１３  ＣＰＵ、１４  リソース管理回路、１５，１５ｄ  ＧＣ制御回路、１６  ＲＡＭ、２０  ＮＡＮＤメモリ、２１  メモリチップ、２２  メモリセルアレイ、２３  ブロック、３０，３０ａ，３０ｂ  単位領域、４０，４０ａ，４０ｂ，４０ｃ  タグ、４１  ＩＤ、４２  タイマ閾値、４３  選択情報、４４  フラグ情報、１０１，１０１ａ，１０１ｂ，１０１ｃ  セレクタ、１０２  第１タグバッファ、１０３  第２タグバッファ、１０４  取得回路、１０５，１０５ａ，１０５ｂ  タイマ、１０６，１０６ｂ  レジスタ、１０７  アービタ、１０８  第２セレクタ、１０９  変更回路、１１０，１１０ａ  設定回路、１６０  翻訳情報、１６１  ライトバッファ領域。
【図１】
2019046238.tif 000003
【図２】
2019046238.tif 000004
【図３】
2019046238.tif 000005
【図４】
2019046238.tif 000006
【図５】
2019046238.tif 000007
【図６】
2019046238.tif 000008
【図７】
2019046238.tif 000009
【図８】
2019046238.tif 000010
【図９】
2019046238.tif 000011
【図１０】
2019046238.tif 000012
【図１１】
2019046238.tif 000013
【図１２】
2019046238.tif 000014