(57)【要約】      （修正有）【課題】利便性が高いメモリシステムを提供する。【解決手段】メモリシステム１は、不揮発性の第１メモリ２００と、複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリである第２メモリ１３０と、メモリコントローラ１００と、を備える。第１メモリには、それぞれはアドレス変換情報である複数の第１情報３００が格納される。複数の第１情報は、第１単位で論理アドレスを物理アドレスに対応付ける第１情報である第２情報と、第１単位と異なる第２単位で論理アドレスを物理アドレスに対応付ける第１情報である第３情報と、を含む。メモリコントローラは、第２情報に該当する第１情報のみを複数のウェイのうちの第１ウェイに格納し、第３情報に該当する第１情報のみを複数のウェイのうちの第１ウェイと異なる第２ウェイに格納する。【選択図】図１
2020149078.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
不揮発性の第１メモリであって、それぞれは前記メモリシステムの論理アドレス空間内の位置を示す論理アドレスを前記第１メモリ内の位置を示す物理アドレスに対応付ける複数の第１情報が格納され、前記複数の第１情報は、第１単位で論理アドレスを物理アドレスに対応付ける第１情報である第２情報と、前記第１単位と異なる第２単位で論理アドレスを物理アドレスに対応付ける第１情報である第３情報と、を含む、前記第１メモリと、
複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリである第２メモリと、
前記第２情報に該当する第１情報のみを前記複数のウェイのうちの第１ウェイに格納し、前記第３情報に該当する第１情報のみを前記複数のウェイのうちの前記第１ウェイと異なる第２ウェイに格納する、メモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記メモリコントローラは、前記論理アドレス空間に、第１空間と、前記第１空間とは重複しない第２空間と、をアロケートし、
前記複数の第１情報のうちの前記第１空間に含まれる論理アドレスを物理アドレスに対応付ける第１情報は、前記第２情報に該当し、
前記複数の第１情報のうちの前記第２空間に含まれる論理アドレスを物理アドレスに対応付ける第１情報は、前記第３情報に該当する、
請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、
リードを要求する第１コマンドを前記ホストから受信した場合、リード先を示す論理アドレスである対象論理アドレスにかかる前記第１情報の対応付けの単位である第３単位を取得し、
前記第３単位が前記第１単位に該当する場合、前記対象論理アドレスのビット列のうちの前記第１単位に対応した部分から対象インデックスを取得し、前記対象インデックスを用いて前記複数のウェイのそれぞれを検索することによってキャッシュヒットしたか否かの判定を実行し、
前記第３単位が前記第２単位に該当する場合、前記対象論理アドレスのビット列のうちの前記第１単位に対応した部分と異なる前記第２単位に対応した部分から第２インデックスを取得し、前記第２インデックスを用いて前記複数のウェイのそれぞれを検索することによって前記判定を実行する、
請求項２に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、前記複数のウェイのそれぞれに変換単位をアサインし、前記複数のウェイのそれぞれには、前記複数の第１情報のうちの、アサインされた変換単位で論理アドレスを物理アドレスに対応付ける第１情報のみを格納し、
前記対象インデックスを用いた前記判定の結果がキャッシュヒットではなかった場合、前記複数のウェイのうちの前記第１ウェイを含む前記第３単位に該当する変換単位がアサインされた１以上のウェイのうちからリフィル先のウェイを選択する、
請求項３に記載のメモリシステム。
【請求項５】
第３メモリをさらに備え、
前記メモリコントローラは、前記論理アドレス空間に、前記第１空間および前記第２空間を含むそれぞれ重ならない複数の第３空間をアロケートし、前記複数の第３空間のそれぞれと変換単位との対応関係を記録した第４情報を前記第３メモリに格納し、前記第４情報に基づいて前記第３単位を取得する、
請求項３に記載のメモリシステム。
【請求項６】
前記複数の第３空間のそれぞれはネームスペースであり、
前記第１コマンドは、ネームスペースＩＤを含み、
前記メモリコントローラは、前記第１コマンドに含まれる前記ネームスペースＩＤと前記第４情報とに基づいて前記第３単位を取得する、
請求項５に記載のメモリシステム。
【請求項７】
前記メモリコントローラは、第４単位を指定する第２コマンドを前記ホストから受信した場合、前記複数の第３空間の一に前記第４単位を対応付ける、
請求項５に記載のメモリシステム。
【請求項８】
不揮発性のメモリを備え、論理アドレスを前記メモリ内の位置を示す物理アドレスに対応付ける単位をネームスペース毎に設定可能なメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
不揮発性メモリをストレージメモリとして備えるメモリシステムが知られている。不揮発性メモリは、一例では、ＮＡＮＤ型のフラッシュメモリである。
【０００３】
メモリシステムは、アドレス変換情報（Address  Translation  Information）の群を不揮発性メモリ内に保持する。各アドレス変換情報は、論理アドレス空間内の位置を示す論理アドレスを不揮発性メモリ内の位置を示す物理アドレスに対応付ける情報である。
【０００４】
メモリシステムは、ある論理アドレスを物理アドレスに変換する際などには、当該論理アドレスを物理アドレスに対応付けるアドレス変換情報を必要とする。しかしながら、不揮発性メモリに対するアクセスレートはあまり速くないため、不揮発性メモリからアドレス変換情報を取得しようとすると、アドレス変換処理に要する時間が増大する。そこで、アドレス変換情報をより高速に取得できるように、メモリシステムには、アドレス変換情報の群のうちの一部がキャッシュデータとして格納されるキャッシュメモリが設けられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００８／２０９１１２号明細書
【特許文献２】米国特許出願公開第２０１７／９１１０８号明細書
【特許文献３】米国特許第７９５３９２０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一つの実施形態は、利便性が高いメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施形態によれば、メモリシステムはホストに接続可能である。メモリシステムは、不揮発性の第１メモリと、複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリである第２メモリと、メモリコントローラと、を備える。第１メモリには、それぞれは前記メモリシステムの論理アドレス空間内の位置を示す論理アドレスを前記第１メモリ内の位置を示す物理アドレスに対応付ける複数の第１情報が格納される。複数の第１情報は、第１単位で論理アドレスを物理アドレスに対応付ける第１情報である第２情報と、第１単位と異なる第２単位で論理アドレスを物理アドレスに対応付ける第１情報である第３情報と、を含む。メモリコントローラは、第２情報に該当する第１情報のみを複数のウェイのうちの第１ウェイに格納し、第３情報に該当する第１情報のみを複数のウェイのうちの第１ウェイと異なる第２ウェイに格納する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態にかかるメモリシステムの構成の一例を示す模式的な図である。
【図２】図２は、複数のネームスペースがアロケートされた実施形態にかかるメモリシステムの論理アドレス空間を説明するための例示的かつ模式的な図である。
【図３】図３は、ホストが実施形態にかかるメモリシステムに対して使用するネームスペース毎の論理アドレスを説明するための例示的かつ模式的な図である。
【図４】図４は、実施形態にかかるアドレス変換情報群の構成を説明するための例示的かつ模式的な図である。
【図５】図５は、実施形態にかかるキャッシュメモリの構成を説明するための例示的かつ模式的な図である。
【図６】図６は、実施形態にかかる内部論理アドレスのビット列のうちのキャッシュメモリの検索に使用される各ビット列を説明するための例示的かつ模式的な図である。
【図７】図７は、実施形態にかかる、変換単位をアサインする動作の一例を説明するためのフローチャートである。
【図８】図８は、実施形態にかかる、アクセスコマンドに応じた動作の一例を説明するためのフローチャートである。
【図９】図９は、実施形態にかかるアドレス変換処理の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１０】
（実施形態）
図１は、実施形態にかかるメモリシステムの構成の一例を示す模式的な図である。メモリシステム１は、ホスト２と接続される。ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどである。
【００１１】
メモリシステム１は、NVM  Express（登録商標）規格に準拠する。NVM  Express（登録商標）規格によれば、１以上のネームスペースを定義することができる。
【００１２】
メモリシステム１は、ホスト２からのネームスペース生成コマンドに応じて新しいネームスペースを生成する。メモリシステム１は、ネームスペース生成コマンドを受信すると、メモリシステム１の論理アドレス空間の一部を新しいネームスペースにアロケートする。論理アドレス空間にアロケートされたネームスペースには、ネームスペースＩＤが与えられる。
【００１３】
図２は、複数のネームスペースがアロケートされた実施形態にかかるメモリシステム１の論理アドレス空間を説明するための例示的かつ模式的な図である。ここでは、ネームスペースＩＤがＸであるネームスペースを、ネームスペース＃Ｘと表記している。本図に示されるように、メモリシステム１は１次元の論理アドレス空間を有している。そして、この例によれば、当該論理アドレス空間は、ネームスペース＃０〜＃２のネームスペースを含んでいる。各ネームスペースの論理アドレスの範囲は、互いに重ならない。
【００１４】
図３は、ホスト２が使用するネームスペース毎の論理アドレスを説明するための例示的かつ模式的な図である。本図に示されるように、ネームスペース＃０、ネームスペース＃１、およびネームスペース＃２のそれぞれには、ネームスペースの先頭のアドレスを０番地とした連続する論理アドレスが割り当てられている。ホスト２は、ネームスペースＩＤ（ＮＳＩＤ）と論理アドレスとの組み合わせを用いることによって、アクセス先の位置を指定することができる。
【００１５】
例えば、ホスト２は、メモリシステム１にアクセスする際に、メモリシステム１にアクセスコマンド（リードコマンドまたはライトコマンド）を送信する。各アクセスコマンドは、ネームスペースＩＤと、ネームスペース内の位置を示す論理アドレスとを伴う。メモリシステム１は、ネームスペースＩＤとネームスペース内の位置を示す論理アドレスとの組み合わせを、アロケーションの関係に基づき、メモリシステム１の論理アドレス空間内の論理アドレスに変換する。
【００１６】
以降、ホスト２が使用する、ネームスペース内の位置を示す論理アドレスを、外部論理アドレスと表記する。メモリシステム１の論理アドレス空間内の位置を示す論理アドレスを、内部論理アドレスと表記する。外部論理アドレスおよび内部論理アドレスを総称して、論理アドレスと表記することがある。
【００１７】
なお、ホスト２は、ライトコマンドとともに書き込み対象のデータを送信する。ライトコマンドとともに送信される書き込み対象のデータを、ユーザデータと表記する。
【００１８】
図１に説明を戻す。
メモリシステム１は、メモリコントローラ１００と、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）２００と、を備える。
【００１９】
ＮＡＮＤメモリ２００は、不揮発性のメモリであり、第１メモリの一例である。第１メモリとしては、任意の種類の不揮発性のメモリが採用され得る。
【００２０】
ＮＡＮＤメモリ２００は、複数のブロックからなるメモリセルアレイを備える。各ブロックに格納されているデータは、一括してイレースされる。各ブロックは、複数のページを備える。メモリセルアレイへのデータの書き込みおよびメモリセルアレイからのデータの読み出しは、ページ単位で実行される。
【００２１】
ＮＡＮＤメモリ２００には、アドレス変換情報群３００と、ユーザデータ４００と、が格納される。
【００２２】
アドレス変換情報群３００は、アドレス変換情報の群である。各アドレス変換情報は、連続したある幅の内部論理アドレス群の代表値を、連続した同幅の物理アドレス群の代表値に対応付ける。これによって、各アドレス変換情報は、連続した内部論理アドレス群を、連続した物理アドレス群にリニアに対応付けることができる。上記の幅を、変換単位と表記する。
【００２３】
論理アドレスは、一般に、セクタと称される小さい領域の粒度で与えられる。これに対し、近年では、非常に大きい表記容量（user  capacity）を有するメモリシステムが開発されている。従って、セクタ単位で内部論理アドレスを物理アドレスに対応付けようとすると、膨大な数のアドレス変換情報が必要となる。
【００２４】
変換単位がセクタよりも大きい場合、変換単位がセクタである場合に比べて、アドレス変換情報の必要数が少ない。しかしながら、変換単位に相当する幅の連続する内部論理アドレス群は同幅の連続する物理アドレス群に対応することが前提である。そのため、例えば変換単位のサイズよりも小さいサイズのデータを書き換える場合、そのデータを含む変換単位のサイズのデータをＮＡＮＤメモリに書き込む必要がある。よって、変換単位の増大に応じて、変換単位よりも小さいデータを書き込む場合のＷＡＦ（Write  Amplification  Factor）が悪化する。また、変換単位の増大に応じて、変換単位よりも小さいデータの書き換えに要する時間が増大する。
【００２５】
変換単位は、さらに、キャッシュヒット率にも影響する。アドレス変換情報群３００のうちの一部のアドレス変換情報は、ＮＡＮＤメモリ２００よりも高速にアクセスされ得るキャッシュメモリ１３０にキャッシュデータとして格納される。所望のアドレス変換情報がキャッシュメモリ１３０に格納されている場合、当該アドレス変換情報は、ＮＡＮＤメモリ２００からではなくキャッシュメモリ１３０から取得される。これによって、当該アドレス変換情報の取得に要する時間が短縮される。
【００２６】
変換単位が大きい場合、１つのキャッシュラインに格納されるアドレス変換情報がカバーする論理アドレスの幅が大きいため、高いキャッシュヒット率が得られる。逆に、変換単位が小さい場合、１つのキャッシュラインに格納されるアドレス変換情報がカバーする論理アドレスの幅が小さいため、キャッシュヒット率が低くなる。
【００２７】
このように、変換単位が大きい場合、小さいキャッシュメモリであっても高いキャッシュヒット率を実現できるが、サイズが小さいデータを書き換える場合のアクセス性能やＷＡＦが悪化する。逆に、変換単位が小さい場合、サイズが小さいデータを書き換える場合のアクセス性能の悪化やＷＡＦの悪化が抑制されるが、キャッシュヒット率の点で不利である。
【００２８】
ここで、メモリシステムが、例えば動画ファイルのようにサイズが大きいデータを保存する用途で使用される場合、変換単位よりも小さいサイズのデータを書き換えるケースが少ない。よって、そのような用途で使用されることが分かっている場合、変換単位を大きくすれば、アクセス性能の悪化やＷＡＦの悪化を抑制しつつキャッシュヒット率を向上させることができる。
【００２９】
実施形態では、メモリシステム１は、ネームスペース毎に変換単位を異ならせることが可能であるとともに、変換単位が異なるアドレス変換情報をキャッシュメモリ１３０にキャッシュできるように構成される。これによって、例えば次に説明する運用が可能となる。即ち、ホスト２は、動画ファイルのような大きいサイズのデータを、大きい変換単位が設定されたネームスペースに格納することで、当該大きいサイズのデータに関し、高いキャッシュヒット率を得ることができる。また、ホスト２は、小さいサイズのデータを、小さい変換単位が設定されたネームスペースに格納することで、当該小さいサイズのデータの関し、書き換えの際のアクセス性能やＷＡＦの悪化を抑制することができる。このように、ホスト２は、書き込み対象のデータ（ユーザデータ４００）のサイズに応じて変換単位が異なる複数のネームスペースを使い分けることが可能となる。
【００３０】
なお、実施形態では、変換単位は、新規のネームスペースが生成される際にホスト２から指定されることとする。変換単位を指定するコマンドを、変換単位設定コマンドと表記する。なお、変換単位設定コマンドは、ネームスペース生成コマンドのオプションとしてネームスペース生成コマンドに含まれてもよいし、ネームスペース生成コマンドとは非同期に送信され得るコマンドであってもよい。なお、変換単位が設定されるタイミングは、新規のネームスペースが生成される際だけに限定されない。
【００３１】
図４は、実施形態にかかるアドレス変換情報群３００の構成を説明するための例示的かつ模式的な図である。本図に示されるように、アドレス変換情報群３００は、変換単位が第１単位である１以上のアドレス変換情報３２０と、変換単位が第１単位と異なる第２単位である１以上のアドレス変換情報３３０と、を含む。第１単位は、一例として４Ｋバイト（＝４０９６バイト）であることとする。また、第２単位は、一例として、３２Ｋバイト（＝３２７６８バイト）であることとする。また、アドレス変換情報３２０およびアドレス変換情報３３０を総称して、アドレス変換情報３１０と表記することがある。
【００３２】
例えば、ネームスペース＃０の生成の際に第１単位が変換単位として指定された場合、メモリシステム１は、例えばネームスペース＃０をライト先として指定されたユーザデータ４００をＮＡＮＤメモリ２００に書き込む際に、ネームスペース＃０に含まれる内部論理アドレスを第１単位で物理アドレスに対応付けるアドレス変換情報３２０を生成する。そして、メモリシステム１は、生成されたアドレス変換情報３２０を、キャッシュメモリ１３０またはＮＡＮＤメモリ２００に格納する。
【００３３】
また、例えば、ネームスペース＃１の生成の際に第２単位が変換単位として指定された場合、メモリシステム１は、例えばネームスペース＃１をライト先として指定されたユーザデータ４００をＮＡＮＤメモリ２００に書き込む際に、ネームスペース＃１に含まれる内部論理アドレスを第２単位で物理アドレスに対応付けるアドレス変換情報３３０を生成する。そして、メモリシステム１は、生成されたアドレス変換情報３３０を、キャッシュメモリ１３０またはＮＡＮＤメモリ２００に格納する。
【００３４】
なお、アドレス変換情報群３００は、変換単位がそれぞれ異なる３以上のアドレス変換情報３１０を含み得る。
【００３５】
再び図１に説明を戻す。
メモリコントローラ１００は、ホストインタフェース１１０、ＮＡＮＤインタフェース１２０、キャッシュメモリ１３０、制御装置１４０、アドレス変換装置１５０、およびＤＭＡＣ（Direct  Memory  Access  Controller）１６０を備える。
【００３６】
メモリコントローラ１００が備える各構成要素のうちの一部または全部は、例えばＣＰＵ（Central  Processing  Unit）などの、コンピュータプログラムに基づいて動作するハードウェア回路によって構成されてもよい。また、メモリコントローラ１００が備える各構成要素のうちの一部または全部は、例えばＦＰＧＡ（field-programmable  gate  array）やＡＳＩＣ（application  specific  integrated  circuit）などの、ハードウェア回路によって構成されてもよい。つまり、メモリコントローラ１００は、ハードウェア、ソフトウェア、またはこれらの組み合わせによって構成され得る。なお、メモリコントローラ１００は、ＳｏＣ（System-On-a-Chip）として構成され得る。メモリコントローラ１００は、複数のチップによって構成されてもよい。
【００３７】
キャッシュメモリ１３０は、複数のウェイを有するセットアソシアティブ方式のキャッシュメモリである。キャッシュメモリ１３０は、ＮＡＮＤメモリ２００よりも高速なアクセスが可能な種類のメモリによって構成される。キャッシュメモリ１３０は、揮発性のメモリであってもよいし、不揮発性のメモリであってもよい。キャッシュメモリ１３０は、例えば、ＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）によって構成される。なお、キャッシュメモリ１３０を構成するメモリの種類は、上記の種類のメモリに限定されない。
【００３８】
キャッシュメモリ１３０には、アドレス変換情報３１０がキャッシュデータとして格納される。
【００３９】
図５は、実施形態にかかるキャッシュメモリ１３０の構成を説明するための例示的かつ模式的な図である。キャッシュメモリ１３０は、複数のウェイ１７０を備える。本図に示される例によれば、一例として、ウェイ＃０、ウェイ＃１、ウェイ＃２、およびウェイ＃３の、４つのウェイ１７０を備える。
【００４０】
４つのウェイ１７０のそれぞれは、（ｍ＋１）個のキャッシュライン１７１を備える。ただし、ｍは正の整数である。各ウェイ１７０において、（ｍ＋１）個のキャッシュライン１７１のそれぞれには、インデックスと称されるシリアル番号が与えられている。先頭のキャッシュライン１７１には、インデックスとして０番が与えられており、他のキャッシュライン１７１のそれぞれのインデックスには、先頭のキャッシュライン１７１からの相対位置を示す、１からｍまでの範囲の何れかの値が与えられている。
【００４１】
各キャッシュライン１７１は、フラグ部１７２、タグ部１７３、およびデータ部１７４を備える。なお、フラグ部１７２およびタグ部１７３は、データ部１７４から離れた位置に配置されてもよい。
【００４２】
データ部１７４には、アドレス変換情報３１０が格納される。タグ部１７３には、タグと称される情報が格納される。フラグ部１７２には、キャッシュライン１７１の制御に使用される１以上のフラグ情報が格納される。
【００４３】
フラグ情報は、例えば、データ部１７４に格納された情報が有効であるか否かを示すフラグ、またはデータ部１７４に格納された情報がダーティであるか否かを示すフラグ、などを含む。なお、フラグ情報の例はこれらに限定されない。
【００４４】
各ウェイ１７０には、１つの変換単位がアサインされている。各ウェイ１７０には、アサインされた変換単位と同じ変換単位のアドレス変換情報３１０のみが格納される。
【００４５】
例えば、本図の例によれば、ウェイ＃０、ウェイ＃１、およびウェイ＃２のそれぞれには、４Ｋバイトが変換単位としてアサインされている。また、ウェイ＃３には、３２Ｋバイトが変換単位としてアサインされている。つまり、アドレス変換単位が４Ｋバイトであるアドレス変換情報３２０は、ウェイ＃０、ウェイ＃１、およびウェイ＃２の何れかに格納され得るが、ウェイ＃３には格納され得ない。また、アドレス変換単位が３２Ｋバイトであるアドレス変換情報３３０は、ウェイ＃３には格納され得るが、ウェイ＃０、ウェイ＃１、およびウェイ＃２には格納され得ない。
【００４６】
上記のように構成されたキャッシュメモリ１３０の検索の際には、内部論理アドレスのビット列のうちの一部がタグとして使用され、内部論理アドレスのビット列のうちの別の一部がインデックスとして使用される。
【００４７】
ここで、タグのビット列の桁数、およびインデックスのビット列の桁数のそれぞれは、変換単位に依らず一定とされる。そして、内部論理アドレスのビット列のうちの下位側の、変換単位に相当する桁数のビット列は、不要とされる。不要とされるビット列の桁数が変換単位に応じて異なるので、内部論理アドレスのビット列のうちのインデックスとして使用される部分は、変換単位に応じて異なる。
【００４８】
図６は、実施形態にかかる内部論理アドレスのビット列のうちのキャッシュメモリ１３０の検索に使用される各ビット列を説明するための例示的かつ模式的な図である。
【００４９】
例えば変換単位が４Ｋバイトである場合、内部論理アドレスのビット列のうちの下位側の１２（＝ｌｏｇ２（４Ｋ））桁のビット列が削除される。そして、残ったビット列のうちの下位側のｌｏｇ２（ｍ＋１）桁のビット列が、インデックスとして使用される。そして、残った上位側のビット列が、タグとして使用される。
【００５０】
また、変換単位が３２Ｋバイトである場合、内部論理アドレスのビット列のうちの下位側の１５（＝ｌｏｇ２（３２Ｋ））桁のビット列が削除される。そして、残ったビット列のうちの下位側のｌｏｇ２（ｍ＋１）桁のビット列が、インデックスとして使用される。そして、変換単位が４Ｋバイトである場合と同じ桁数の上位側のビット列が、タグとして使用される。
【００５１】
このように内部論理アドレスのビット列からタグおよびインデックスが取得されることによって、アサインされた変換単位に依らず（ｍ＋１）個のキャッシュライン１７１の全てを利用することが可能となる。
【００５２】
再び図１に説明を戻す。
ホストインタフェース１１０は、ホスト２とメモリコントローラ１００の間でコマンドやユーザデータ４００の送受信を実行するためのメモリコントローラ１００側のインタフェース装置である。ＮＡＮＤインタフェース１２０は、ＮＡＮＤメモリ２００にアクセスを実行するためのインタフェース装置である。
【００５３】
制御装置１４０は、メモリコントローラ１００の動作を統括的に制御する装置である。制御装置１４０は、特に、ホスト２からのコマンドをホストインタフェース１１０を介して受信して、受信したコマンドを解析する。そして、制御装置１４０は、ＮＡＮＤインタフェース１２０に、解析の結果に応じたＮＡＮＤメモリ２００への動作を指示する。例えば、制御装置１４０は、ホスト２からアクセスコマンドを受信した場合、当該アクセスコマンドに対応したアクセスをＮＡＮＤメモリ２００に対して実行するよう、ＮＡＮＤインタフェース１２０に指示する。
【００５４】
アクセスコマンドがリードコマンドに該当する場合には、制御装置１４０は、リードコマンドに含まれる外部論理アドレスを、内部論理アドレスに変換する。そして、制御装置１４０は、変換された内部論理アドレスを物理アドレスに変換するためのアドレス変換情報３１０の変換単位を取得する。そして、制御装置１４０は、内部論理アドレスと、取得された変換単位と、の対をアドレス変換装置１５０に送信する。
【００５５】
変換単位の取得方法は任意に設計される。ここでは一例として、制御装置１４０は、メモリ１４１を備える。メモリ１４１は、例えばレジスタやＳＲＡＭなどの小規模なメモリによって構成される。メモリ１４１には、ネームスペース情報１４２が格納されている。ネームスペース情報１４２は、ネームスペースと変換単位との対応関係を示す。一例では、ネームスペースＩＤと変換単位との対のリストである。なお、ネームスペース情報１４２のデータ構造はこれに限定されない。制御装置１４０は、リードコマンドに含まれるネームスペースＩＤを用いてネームスペース情報１４２を検索することによって、リード先のネームスペースに含まれる論理アドレスを変換するためのアドレス変換情報３１０の変換単位を取得することができる。
【００５６】
アドレス変換装置１５０は、内部論理アドレスを物理アドレスに変換する、アドレス変換処理を実行する。アドレス変換装置１５０は、アドレス変換処理の際には、制御装置１４０から受信した内部論理アドレスのビット列から、タグおよびインデックスを取得する。インデックスは、内部論理アドレスのビット列のうちの、内部論理アドレスと対にして受信した変換単位に対応した部分から取得される。
【００５７】
アドレス変換装置１５０は、取得されたタグおよびインデックスを用いてキャッシュメモリ１３０のタグ部１７３を検索する。具体的には、アドレス変換装置１５０は、４つのウェイ１７０のそれぞれの、取得されたインデックスが示すキャッシュライン１７１のタグ部１７３から、タグを読み出す。そして、アドレス変換装置１５０は、それぞれ異なるウェイ１７０から得られた４つのタグと、内部論理アドレスから取得されたタグと、を比較する。
【００５８】
それぞれ異なるウェイ１７０から得られた４つのタグのうちの何れかが内部論理アドレスから取得されたタグと一致した場合、即ち検索の結果がキャッシュヒットである場合、アドレス変換装置１５０は、内部論理アドレスから取得されたタグと一致したタグが読み出されたキャッシュライン１７１のデータ部１７４からアドレス変換情報３１０を読み出す。そして、アドレス変換装置１５０は、読み出されたアドレス変換情報３１０を用いて内部論理アドレスを物理アドレスに変換する。
【００５９】
それぞれ異なるウェイ１７０から得られた４つのタグのうちの何れも内部論理アドレスから取得されたタグと一致しない場合、即ち検索の結果がキャッシュミスである場合、アドレス変換装置１５０は、内部論理アドレスを物理アドレスに対応付けるアドレス変換情報３１０のリフィルを実行する。そして、アドレス変換装置１５０は、リフィルによって取得されたアドレス変換情報３１０を用いて内部論理アドレスを物理アドレスに変換する。
【００６０】
なお、リフィルは、ＮＡＮＤメモリ２００に格納されたアドレス変換情報群のうちから内部論理アドレスを物理アドレスに対応付けるアドレス変換情報３１０を読み出して、読み出されたアドレス変換情報３１０を何れかのウェイ１７０に格納する処理である。
【００６１】
リフィルの際、アドレス変換装置１５０は、アドレス変換情報３１０の格納先のウェイ１７０を、内部論理アドレスと対にして受信した変換単位と同じ変換単位がアサインされた１以上のウェイのうちから選択する。これによって、各ウェイ１７０は、アサインされた変換単位と同じ変換単位のアドレス変換情報３１０のみを保持することが可能となる。
【００６２】
なお、内部論理アドレスと対にして受信した変換単位と同じ変換単位がアサインされたウェイ１７０が複数存在する場合には、リフィル先のウェイ１７０は、任意の方法で決定される。アドレス変換情報３１０の格納先のウェイ１７０は、例えば、ＬＲＵ（Least  Recently  Used）やラウンドロビンなどの方式によって決定され得る。
【００６３】
なお、リフィル先のキャッシュライン１７１は、内部論理アドレスのビット列のうちの変換単位に対応した部分から取得されたインデックスが示すキャッシュライン１７１である。
【００６４】
なお、アドレス変換装置１５０は、リフィル先のキャッシュライン１７１がダーティである場合には、キャッシュの一貫性を維持するために、リフィルの前にライトバックを実行する。ライトバックは、キャッシュライン１７１に格納されていた内容をＮＡＮＤメモリ２００に格納する処理である。なお、ライトバックは、リフィルよりも前であれば任意のタイミングで実行され得る。本明細書では、ライトバックについては詳細な説明を省略する。
【００６５】
アドレス変換装置１５０は、アドレス変換処理によって得られた物理アドレスを制御装置１４０に送信する。制御装置１４０は、ＮＡＮＤインタフェース１２０に、アドレス変換装置１５０から受信した物理アドレスが示す位置からユーザデータ４００をリードする処理を実行させる。
【００６６】
ＤＭＡＣ１６０は、ホストインタフェース１１０とＮＡＮＤインタフェース１２０との間でユーザデータ４００の転送を実行する装置である。ＤＭＡＣ１６０は、ユーザデータ４００の転送を、ＤＭＡ（Direct  Memory  Access）の方式で実行する。
【００６７】
続いて、実施形態のメモリシステム１の動作を説明する。
【００６８】
図７は、実施形態にかかる、変換単位をアサインする動作の一例を説明するためのフローチャートである。
【００６９】
制御装置１４０は、まず、ネームスペース生成コマンドをホスト２から受信する（Ｓ１０１）。すると、制御装置１４０は、論理アドレス空間の一部を新規のネームスペースにアロケートする（Ｓ１０２）。制御装置１４０は、論理アドレス空間のうちの何れのネームスペースにもアロケートされていない部分を新規のネームスペースにアロケートする。
【００７０】
続いて、制御装置１４０は、変換単位設定コマンドをホスト２から受信する（Ｓ１０３）。すると、制御装置１４０は、Ｓ１０２の処理によって生成されたネームスペースのネームスペースＩＤと、ホスト２から変換単位設定コマンドを用いて指定された変換単位との対応関係を、ネームスペース情報１４２に記録する（Ｓ１０４）。
【００７１】
続いて、制御装置１４０は、指定された変換単位がアサインされたウェイ１７０が存在するか否かを判定する（Ｓ１０５）。
【００７２】
指定された変換単位がアサインされたウェイ１７０が存在しない場合（Ｓ１０５：Ｎｏ）、制御装置１４０は、全てのウェイ１７０から１つのウェイ１７０を選択し（Ｓ１０６）、指定された変換単位を選択されたウェイ１７０にアサインする（Ｓ１０７）。
【００７３】
Ｓ１０６では、制御装置１４０は、任意の方法でウェイ１７０を選択することができる。例えば、制御装置１４０は、同一の変換単位がアサインされた複数のウェイ１７０が存在する場合、当該複数のウェイ１７０のうちから１つを選択することができる。別の例では、制御装置１４０は、変換単位がアサインされていないウェイ１７０が存在する場合には、そのウェイ１７０を選択することができる。さらに別の例では、全てのウェイ１７０のうち、または同一の変換単位がアサインされた複数のウェイ１７０のうち、キャッシュヒット率が最も低いウェイ１７０を選択することができる。
【００７４】
Ｓ１０７では、制御装置１４０は、選択されたウェイ１７０への変換単位のアサインを変更する前に、適宜、ライトバックを実行する。制御装置１４０は、ライトバックの実行後、選択されたウェイ１７０の全てのキャッシュライン１７１を無効化する。
【００７５】
指定された変換単位がアサインされたウェイが存在する場合（Ｓ１０５：Ｙｅｓ）、またはＳ１０７の後、変換単位をアサインする動作が完了する。
【００７６】
なお、図７を用いて説明された、変換単位のアサインのタイミングは、一例である。変換単位のアサインは、任意のタイミングで実行され得る。
【００７７】
図８は、実施形態にかかる、アクセスコマンドに応じた動作の一例を説明するためのフローチャートである。ここでは一例として、アクセスコマンドはリードコマンドであることとして説明する。
【００７８】
制御装置１４０は、ホスト２からリードコマンドを受信すると（Ｓ２０１）、リードコマンドに含まれる外部論理アドレスを内部論理アドレスに変換する（Ｓ２０２）。Ｓ２００２によって取得される内部論理アドレスを、対象論理アドレスと表記する。
【００７９】
続いて、制御装置１４０は、リードコマンドに含まれるネームスペースＩＤと、ネームスペース情報１４２とに基づいて、変換単位を取得する（Ｓ２０３）。Ｓ２０３によって取得される変換単位を、対象変換単位と表記する。
【００８０】
制御装置１４０は、対象論理アドレスと対象変換単位との対をアドレス変換装置１５０に送信する。アドレス変換装置１５０は、対象論理アドレスと対象変換単位とに基づいて、アドレス変換処理を実行する（Ｓ２０４）。アドレス変換処理の具体的な動作は、後述される。
【００８１】
アドレス変換装置１５０は、アドレス変換処理によって取得された、対象論理アドレスに対応する物理アドレスを、制御装置１４０に送信する。制御装置１４０は、アドレス変換処理によって取得された当該物理アドレスが示す位置に対するリードの処理を実行する（Ｓ２０５）。
【００８２】
例えば、Ｓ２０５では、制御装置１４０は、アドレス変換処理によって取得された当該物理アドレスが示す位置へのリードをＮＡＮＤインタフェース１２０に指示する。ＮＡＮＤインタフェース１２０は、当該物理アドレスが示す位置からユーザデータ４００をリードするリードコマンドをＮＡＮＤメモリ２００に送信する。ＮＡＮＤメモリ２００は、当該物理アドレスが示す位置からユーザデータ４００をリードして、当該ユーザデータ４００をＮＡＮＤインタフェース１２０に出力する。ＤＭＡＣ１６０は、ＮＡＮＤインタフェース１２０が受信した当該ユーザデータ４００をホストインタフェース１１０を介してホスト２に送信する。
【００８３】
Ｓ２０５の処理によって、リードコマンドに応じた動作が終了する。
【００８４】
図９は、Ｓ２０４において実行される、実施形態にかかるアドレス変換処理の一例を説明するためのフローチャートである。
【００８５】
まず、アドレス変換装置１５０は、対象論理アドレスのビット列からタグとインデックスとをそれぞれ取得する（Ｓ３０１）。インデックスは、対象論理アドレスのビット列のうちの対象変換単位に対応した部分から取得される。
【００８６】
続いて、アドレス変換装置１５０は、対象タグと対象インデックスとを用いてキャッシュメモリ１３０を検索する（Ｓ３０２）。即ち、アドレス変換装置１５０は、全てのウェイ１７０の、対象インデックスが示すキャッシュライン１７１のタグ部１７３から、タグを読み出す。そして、アドレス変換装置１５０は、それぞれ異なるウェイ１７０から得られた複数のタグと、対象タグと、を比較する。
【００８７】
検索の結果がキャッシュミスである場合（Ｓ３０３：Ｎｏ）、即ちそれぞれ異なるウェイ１７０から得られた全てのタグが対象タグと異なる場合、アドレス変換装置１５０は、対象変換単位と同じ変換単位がアサインされた全てのウェイのうちから、１つのウェイ１７０（対象ウェイ１７０）を選択する（Ｓ３０４）。そして、アドレス変換装置１５０は、対象ウェイ１７０の（ｍ＋１）個のキャッシュライン１７１のうちの対象インデックスが示すキャッシュライン１７１にアドレス変換情報３１０をリフィルする（Ｓ３０５）。
【００８８】
Ｓ３０５では、アドレス変換装置１５０は、対象論理アドレスを物理アドレスに対応付けるアドレス変換情報３１０を、制御装置１４０およびＮＡＮＤインタフェース１２０を介してＮＡＮＤメモリ２００から取得して、取得されたアドレス変換情報３１０を対象ウェイ１７０の対象インデックスが示すキャッシュライン１７１のデータ部１７４に格納する。また、アドレス変換装置１５０は、対象ウェイ１７０の対象インデックスが示すキャッシュライン１７１のタグ部１７３の内容を、Ｓ３０１において取得されたタグで更新する。
【００８９】
なお、前述したように、アドレス変換装置１５０は、Ｓ３０５の前に、必要に応じてライトバックを実行する。ライトバックでは、アドレス変換装置１５０は、対象ウェイ１７０の対象インデックスが示すキャッシュライン１７１のデータ部１７４に格納されていたアドレス変換情報３１０を、制御装置１４０およびＮＡＮＤインタフェース１２０を介してＮＡＮＤメモリ２００に書き込む。
【００９０】
Ｓ３０５に続いて、アドレス変換装置１５０は、リフィルされたアドレス変換情報３１０を用いて対象論理アドレスを物理アドレスに変換する（Ｓ３０６）。Ｓ３０６によって、アドレス変換処理が終了する。
【００９１】
検索の結果がキャッシュヒットである場合（Ｓ３０３：Ｙｅｓ）、即ちそれぞれ異なるウェイ１７０から読み出された複数のタグのうちの１つが対象タグと一致する場合、制御がＳ３０６に移行する。Ｓ３０６では、アドレス変換情報３１０は、対象タグと一致するタグが読み出されたキャッシュライン１７１のデータ部１７４に格納されているアドレス変換情報３１０を用いて対象論理アドレスを物理アドレスに変換する。そして、アドレス変換処理が終了する。
【００９２】
以上では、ネームスペース毎に変換単位を異ならせることが可能に構成されたメモリシステム１について説明した。変換単位は、ネームスペースとは異なる単位で設定可能に構成されてもよい。つまり、実施形態の技術は、NVM  Express（登録商標）規格に準拠しないメモリシステムにも適用可能である。
【００９３】
例えば、メモリシステム１は、ストリーム毎に変換単位を異ならせることが可能に構成されてもよい。また、メモリシステム１は、ＬＵＮ（Logical  Unit  Number）毎に、またはパーティション毎に、変換単位を異ならせることが可能に構成されてもよい。
【００９４】
また、以上では、キャッシュメモリ１３０の検索は、アドレス変換処理の一環として実施されることとして説明した。キャッシュメモリ１３０の検索の実行タイミングは、アドレス変換処理の際のみに限定されない。
【００９５】
また、以上では、アドレス変換処理は、リードコマンドの処理の際に実行されることとして説明した。アドレス変換処理の実行タイミングは、リードコマンドの処理の際のみに限定されない。
【００９６】
また、以上では、各キャッシュラインのデータ部１７４には、１つのアドレス変換情報３１０が格納されることとして説明された。各キャッシュラインのデータ部１７４には、連続する論理アドレスに関する複数のアドレス変換情報３１０が格納されてもよい。つまり、キャッシュラインのサイズは、複数のアドレス変換情報３１０に相当するサイズであって、複数のアドレス変換情報３１０ごとにリフィルが実行されてもよい。
【００９７】
また、以上の説明では、内部論理アドレスは１バイト単位でカウントされることとしている。内部論理アドレスは、複数バイト単位でカウントされてもよい。
【００９８】
なお、各キャッシュラインのデータ部１７４に、複数のアドレス変換情報３１０がキャッシュされる場合や、内部論理アドレスが複数バイト単位でカウントされる場合、図６に示された下位側の削除されるビット列の幅が変わり得る。
【００９９】
例えば、下位側の削除されるビット列の幅Ｗｎｏｔｕｓｅｄは、下記の式（１）によって得られる。
Ｗｎｏｔｕｓｅｄ  ＝  ｌｏｇ２（Ｎ＊Ｕ／Ｃ）      ・・・（１）
【０１００】
式（１）において、Ｎは各キャッシュラインのデータ部１７４に格納されるアドレス変換情報３１０の数である。Ｕは変換単位である。Ｃは内部論理アドレスのカウント単位である。
【０１０１】
なお、実施形態と比較される技術として、変換単位毎に異なるキャッシュメモリを用意する構成が考えられる。実施形態と比較される技術にかかる構成によれば、キャッシュメモリ毎にキャッシュを制御する機構が必要となるため、キャッシュメモリの数に応じてアドレス変換装置１５０の回路規模が増大する。実施形態では、ウェイ１７０毎に変換単位を異ならせることが可能であるので、キャッシュメモリ１３０を制御する機構の回路規模を、実施形態と比較される技術にかかる構成に比べて小さくすることができる。
【０１０２】
以上述べたように、実施形態によれば、アドレス変換情報群３００は、第１単位（例えば４Ｋバイト）で論理アドレス（内部論理アドレス）を物理アドレスに対応付けるアドレス変換情報３２０と、第１単位と異なる第２単位（例えば３２Ｋバイト）で論理アドレス（内部論理アドレス）を物理アドレスに対応付けるアドレス変換情報３３０と、を含む。キャッシュメモリ１３０は、複数のウェイ１７０を備えるセットアソシアティブ方式のキャッシュメモリである。メモリコントローラ１００は、あるウェイ１７０（例えばウェイ＃０）には、第１単位で論理アドレス（内部論理アドレス）を物理アドレスに対応付けるアドレス変換情報３２０に該当するアドレス変換情報３１０のみを格納する。また、メモリコントローラ１００は、別のウェイ１７０（例えばウェイ＃３）には、第２単位で論理アドレス（内部論理アドレス）を物理アドレスに対応付けるアドレス変換情報３３０に該当するアドレス変換情報３１０のみを格納する。
【０１０３】
上記の構成によって、メモリシステム１は、変換単位が異なる複数のアドレス変換情報３１０を扱うことができるとともに、キャッシュメモリ１３０を用いることで各変換単位のアドレス変換情報３１０を高速に取得できる。これによって、ユーザデータ４００のサイズに応じて変換単位を切り替えるといった運用が可能となる。つまり、利便性が高いメモリシステム１を得ることができる。
【０１０４】
また、メモリコントローラ１００は、論理アドレス空間に、複数の互いに重複しないネームスペースをアロケートし、ネームスペース毎に変換単位を異ならせることが可能である。つまり、例えば、１つのネームスペースに属する内部論理アドレスは、アドレス変換情報３２０によって第１単位で物理アドレスに対応付けられ、別の１つのネームスペースに属する内部論理アドレスは、アドレス変換情報３３０によって第２単位で物理アドレスに対応付けられる。
【０１０５】
上記の構成によって、ホスト２は、メモリシステム１に書き込むユーザデータ４００のサイズに応じてネームスペースを切り替えるといった運用を行うことが可能となる。
【０１０６】
また、メモリコントローラ１００は、リードコマンドをホスト２から受信した場合、リード先を示す対象論理アドレスの変換単位を取得し、対象論理アドレスのビット列のうちの、取得した変換単位に対応した部分からインデックスを取得する。そして、メモリコントローラ１００は、取得したインデックスを用いて全てのウェイ１７０を検索する。
【０１０７】
上記の構成によって、格納されているアドレス変換情報３１０の変換単位が異なる複数のウェイ１７０を、同一値のインデックスを用いて検索することが可能となる。
【０１０８】
また、メモリコントローラ１００は、複数のウェイ１７０のそれぞれに変換単位をアサインする。メモリコントローラ１００は、複数のウェイ１７０のそれぞれには、アサインされた変換単位で内部論理アドレスを物理アドレスに対応付けるアドレス変換情報３１０のみを格納する。そして、検索の結果がキャッシュミスであった場合、リード先を示す対象論理アドレスの変換単位と同一の変換単位がアサインされた１以上のウェイ１７０のうちからリフィル先のウェイ１７０を選択する。
【０１０９】
上記の構成によって、アドレス変換情報３１０の格納先のウェイ１７０を変換単位毎に異ならせることが可能となる。
【０１１０】
なお、メモリコントローラ１００は、ネームスペースと変換単位との対応関係をネームスペース情報１４２に記録し、ネームスペース情報１４２に基づいて対象論理アドレスの変換単位を取得する。
【０１１１】
より具体的には、アクセスコマンドは、ネームスペースＩＤを含む。メモリコントローラ１００は、ネームスペースＩＤとネームスペース情報１４２とに基づいて対象論理アドレスの変換単位を取得する。
【０１１２】
また、メモリコントローラ１００は、変換単位を指定する変換単位設定コマンドをホスト２から受信する。メモリコントローラ１００は、変換単位設定コマンドによって指定された変換単位を、１つのネームスペースに対応付ける。
【０１１３】
上記の構成により、メモリシステム１は、論理アドレスをＮＡＮＤメモリ２００内の位置を示す物理アドレスに対応付ける変換単位を、ネームスペース毎に設定することが可能である。
【０１１４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１５】
１  メモリシステム、２  ホスト、１００  メモリコントローラ、１１０  ホストインタフェース、１２０  ＮＡＮＤインタフェース、１３０  キャッシュメモリ、１４０  制御装置、１４１  メモリ、１４２  ネームスペース情報、１５０  アドレス変換装置、１６０  ＤＭＡＣ、１７０  ウェイ、１７１  キャッシュライン、１７２  フラグ部、１７３  タグ部、１７４  データ部、２００  ＮＡＮＤメモリ、３００  アドレス変換情報群、３１０，３２０，３３０  アドレス変換情報、４００  ユーザデータ。
【図１】
2020149078.tif 000003
【図２】
2020149078.tif 000004
【図３】
2020149078.tif 000005
【図４】
2020149078.tif 000006
【図５】
2020149078.tif 000007
【図６】
2020149078.tif 000008
【図７】
2020149078.tif 000009
【図８】
2020149078.tif 000010
【図９】
2020149078.tif 000011