IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECプラットフォームズ株式会社の特許一覧

特開2025-10843メモリシステム、アクセス制御方法およびプログラム
<>
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図1
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図2
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図3
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図4
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図5
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図6
  • 特開-メモリシステム、アクセス制御方法およびプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025010843
(43)【公開日】2025-01-23
(54)【発明の名称】メモリシステム、アクセス制御方法およびプログラム
(51)【国際特許分類】
   G06F 12/06 20060101AFI20250116BHJP
   G06F 12/02 20060101ALI20250116BHJP
   G06F 12/00 20060101ALI20250116BHJP
【FI】
G06F12/06 550A
G06F12/06 515H
G06F12/02 510
G06F12/00 597U
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023113102
(22)【出願日】2023-07-10
(71)【出願人】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【弁理士】
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】佐藤 拓真
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA16
5B160CD04
(57)【要約】
【課題】ホスト装置側の負荷を増大することなく、性能を向上させることが可能なメモリへのアクセス技術を提供する。
【解決手段】メモリシステムは、複数の論理領域を有する不揮発性メモリと、前記不揮発性メモリの各論理領域に対するアクセスを制御するコントローラと、を備え、前記コントローラは、受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める実行順制御部を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数の論理領域を有する不揮発性メモリと、
前記不揮発性メモリの各論理領域に対するアクセスを制御するコントローラと、を備え、
前記コントローラは、受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める実行順制御部を備える、メモリシステム。
【請求項2】
請求項1記載のメモリシステムであって、
前記コマンドが実行順にキューイングされる実行キューに従って前記コマンドを実行する実行部をさらに備え、
前記実行順制御部は、新たに前記コマンドを受信する毎に、前記実行キューを、各コマンドが指定する前記論理領域の優先順位が高い順に並べ替える、メモリシステム。
【請求項3】
請求項1記載のメモリシステムであって、
前記コントローラは、前記不揮発性メモリを複数の前記論理領域に分割する際、前記優先順位を設定する優先順位設定部をさらに備える、メモリシステム。
【請求項4】
請求項1記載のメモリシステムであって、
前記論理領域は、用途毎に設定される、メモリシステム。
【請求項5】
複数の論理領域を有する不揮発性メモリにおける、各論理領域へのアクセスを制御するアクセス制御方法であって、
受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める、アクセス制御方法。
【請求項6】
複数の論理領域を有する不揮発性メモリのコントローラに、
請求項5に記載のアクセス制御方法を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、メモリシステム、アクセス制御方法およびプログラムに関する。
【背景技術】
【0002】
例えば、インタフェースプロトコルにNVMe(Non-Volatile Memory Express)を採用したSSD(Solid State Drive)等の不揮発性メモリを備えるメモリシステムがある。このようなメモリシステムは、自身が備える記憶領域を、論理的に分割し、使用する。分割した各論理領域は、NS(Name Space)と呼ばれる。
【0003】
SSDの使い勝手を向上させる技術として、SSDに対するライト要求(ライトコマンド)のキャンセルの性能を適応的に制御するため、ホスト装置から、各NSにAtomic Writeキャンセルの優先度を設定する技術がある(例えば、特許文献1参照)。特許文献1に開示の技術によれば、NS毎にキャンセルの優先度を設定し、設定された優先度に応じて、キャンセル処理の方式を変える。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2017-107318号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
以下の分析は、本発明者によってなされたものである。
【0006】
一般にNVMe SSD等を有するメモリシステムでは、NSは、用途別に生成される。用途によっては、高速性が求められる場合と、求められない場合がある。例えば、車載装置では、自動運転のための走行情報(現在地や周囲情報)などは、他の情報を差し置いても即時性を要する。一方、走行距離や残燃料情報は、後回しにしても差しさわりがない。よって、車載装置において、このようなメモリシステムを使用する場合、これらの情報を用途別に異なるNSに記憶させることができる。
【0007】
特許文献1に開示の技術によれば、1つのコマンドの処理速度が、NSに設定した優先度に応じて変わる。しかし、このようなメモリシステムでは、コマンドの処理は、発行順に行われる。したがって、即時性を要する情報を優先度の高いNSに格納したとしても、それに対するコマンドの発行が、即時性を要しない情報が設定されているNSに対するコマンドの後の場合、前者は、後者の処理を終えてからしか実行されない。さらに、特許文献1に開示の技術は、キャンセルコマンドにのみ対応している。しかし、ホスト装置から、メモリシステムへのコマンドは、キャンセルコマンドだけでなく、多種多様なものがある。
【0008】
連続発行されたコマンドの実行順を制御するには、ホスト装置側でNVMe SSD等の不揮発性メモリへの発行順を制御する必要があり、ホスト装置側のアプリケーションに複雑な処理が求められる。
【0009】
このように、現状では、複数のコマンドが連続して発行された場合、ホスト装置側に複雑な処理を課さない限り、コマンドの実行順が適切に制御されないためにメモリシステム内の処理において待ち時間が発生する。これにより、メモリシステム内の処理の高速化が妨げられ、応答性能が十分引き出されていない。
【0010】
本開示は、上記事情に鑑みてなされたもので、ホスト装置側の負荷を増大することなく、性能を向上させることが可能なメモリへのアクセス技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
本開示の第一の視点によれば、
メモリシステムは、
複数の論理領域を有する不揮発性メモリと、
前記不揮発性メモリの各論理領域に対するアクセスを制御するコントローラと、を備える。
前記コントローラは、受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める実行順制御部を備える。
【0012】
本開示の第二の視点によれば、
複数の論理領域を有する不揮発性メモリにおける、各論理領域へのアクセスを制御するアクセス制御方法は、
受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める。
【0013】
本開示の第三の視点によれば、プログラムは、複数の論理領域を有する不揮発性メモリのコントローラに、上記アクセス制御方法を実行させる。
【0014】
なお、これらのプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0015】
本開示によれば、ホスト装置側の負荷を増大することなく、メモリシステムの性能を向上させることができる。
【図面の簡単な説明】
【0016】
図1】(a)および(b)は、本開示の一実施形態のメモリシステムの、それぞれ、構成およびハードウェアの一例を示す図である。
図2】(a)および(b)は、本開示の一実施形態の、それぞれ、情報処理システムおよびメモリシステムの構成の一例を示す図である。
図3】(a)~(c)は、本開示の一実施形態の、それぞれ、クリエイトコマンド、MS Managementコマンドおよび稼働中に発行されるコマンドの一例を説明するための図である。
図4】(a)は、本開示の一実施形態の、MSテーブルの一例を説明するための図であり、(b)は、本開示の一実施形態の実行順制御の一例を説明するための図である。
図5】本開示の一実施形態のNS作成処理のフローチャートである。
図6】本開示の一実施形態のコマンド処理のフローチャートである。
図7】(a)および(b)は、本開示の一実施形態のコマンド実行順の一例を説明するための図である。
【発明を実施するための形態】
【0017】
以下、本開示の一実施形態(以下、本実施形態と呼ぶ。)の概要について図面を参照して説明する。なお、図面の参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本開示を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向および単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。
【0018】
また、図中の各ブロックの入出力の接続点には、ポートやインタフェースがあるが図示を省略する。また、以下の説明において、「Aおよび/またはB」は、AまたはB、もしくは、AおよびBという意味で用いる。
【0019】
<<第一実施形態>>
以下、本開示の一実施形態(第一実施形態)について、図面を参照しながら説明する。
【0020】
本実施形態のメモリシステム200は、不揮発性メモリで構成される記憶領域を備える、例えば、NVMe(Non-Volatile Memory Express)を採用したSSD(Solid State Drive)において、コマンドの実行順を制御可能なシステムである。なお、メモリシステム200は、記憶装置として動作し、受信したデータを記憶し、要求に応じて、記憶したデータを出力する。
【0021】
本実施形態では、記憶領域(不揮発性メモリ)を、複数の論理領域(Name space;NS)に分割し、それぞれに優先順位(Priority)を予め定める。そして、受信したコマンドを、各コマンドが指定するNSの優先順位の高いものから実行する。
【0022】
図1(a)は、本実施形態のメモリシステム200の構成図である。メモリシステム200は、例えば、NVMe SSDで実現され、コントローラ210と、記憶領域として機能する不揮発性メモリ220と、を備える。
【0023】
不揮発性メモリ220は、例えば、NANDフラッシュメモリ等で実現される。本実施形態では、不揮発性メモリ220は、論理的に分割された、複数の論理領域を備える。各論理領域は、上述のように、名前空間(Name Space;NS)と呼ばれる。各NSには、予め、コマンドの実行順を定める優先順位(Priority)が設定される。
【0024】
図1には、不揮発性メモリ220は、NS231と、NS232と、NS233と、を備える場合を例示する。しかし、NSの数は、複数であればよく、3つに限定されない。以下、各NSを区別する必要がない場合は、NS230で代表する。
【0025】
コントローラ210は、コマンドを発行するホスト装置とデータ(信号)をやり取りする。また、不揮発性メモリ220に対するアクセス等の制御を行う。ホスト装置から受信するコマンドには、当該コマンドの実行対象データが格納されるNS230を指定する情報が含まれる。
【0026】
コントローラ210は、コマンドの実行順を制御する実行順制御部212を備える。本実施形態の実行順制御部212は、受信したコマンドの実行順を、当該コマンドが指定するNS230に予め定められた優先順位に応じて定める。
【0027】
コントローラ210では、ホスト装置から受信したコマンドのうち、未実行のコマンドは、実行キューに実行順に並べられる。本実施形態の実行順制御部212は、ホスト装置から新たにコマンドを受信すると、実行キューに並べられているコマンドを、当該コマンドが指定するNS230の優先順位順に並べ替える。具体的には、優先順位の高いNS230を指定するコマンドほど、先に実行されるよう、並べ替える。
【0028】
コントローラ210は、実行順制御部212が並べ替えた実行キューに従って、コマンドを実行する。ホスト装置から受信するコマンドには、例えば、リード(読み出し)、イレーズ(消去)、ライト(書き込み)等がある。
【0029】
その他、コントローラ210は、不揮発性メモリ220における誤りの検出と訂正を実行してもよい。また、何らかの不良が発生したメモリブロックを使用禁止にし、予備のブロック(冗長ブロック)を代わりに割り当てる処理を実行してもよい。また、不揮発性メモリ220に、NANDフラッシュメモリが用いられる場合、NANDフラッシュメモリのメモリブロックごとの消去回数を記憶し、書き換え回数の平準化(ウェアレベリング)を実施してもよい。
【0030】
以上説明したように、本実施形態によれば、メモリシステム200側で、各NS230に、コマンド実行の優先順位を予め設定する。そして、各コマンドが指定するNS230に設定された優先順位に従って、コマンドの実行順を制御する。すなわち、メモリシステム200側で、より優先順位の高いNS230を指定するコマンドが優先的に実行されるよう、コマンドの実行順序を入れ替える。
【0031】
これにより、本実施形態のメモリシステム200は、メモリシステム200側で、物理的に処理性能をコントロールできる。すなわち、本実施形態によれば、複数のNS230が設定されるメモリシステム200において、ホスト装置側、すなわち、ユーザの負担無しに、適切な優先処理を実現できる。
【0032】
これにより、優先度が低いものの高負荷なコマンドによるNS性能の低下を抑えることができ、本実施形態によれば、高効率性、高速性、即応性を有するメモリシステム200を実現できる。すなわち、メモリシステムの性能を最大限活かすことができる。
【0033】
また、本実施形態によれば、性能要求が異なるIO(Input/Output;コマンド)が混在するシステムにおいて、仮想化等による手法に比べて、簡易な構成で、安価に、所望の優先順位でのコマンドの処理を実現できる。例えば、多様な用途が存在するデータセンタ、Edge領域等に特に有用である。
【0034】
<<第二実施形態>>
次に、本開示の第二実施形態を説明する。本実施形態では、ホスト装置からの指示に従って、コントローラ210が、不揮発性メモリ220に論理領域(NS230)を構成する(生成する)際、当該NS230の優先順位を設定する。
【0035】
図2(a)は、本実施形態の情報処理システム100の全体構成図である。本実施形態の情報処理システム100は、ホスト装置300と、メモリシステム200とを備える。メモリシステム200は、第一実施形態と同様に、SSD等で実現される。
【0036】
以下、本実施形態では、メモリシステム200を、SSD200と呼ぶ。また、SSD200内の各機能について、第一実施形態と同じものについては、同一の符号を付す。
【0037】
ホスト装置300は、SSD200に対しコマンドを発行する。ホスト装置300は、例えば、PC(Personal Commputer)、サーバ、ストレージ、Edge機器等である。ホスト装置300は、これらに限定されず、SSD200に対し、コマンドを発行可能であり、かつ、SSD200とデータの送受信が可能な装置であればよい。
【0038】
なお、本実施形態では、ホスト装置300は、例えば、NVMeデバイスドライバを備え、NVMeの仕様で規定される各種コマンドを、SSD200に対し、発行する。具体的には、ホスト装置300がSSD200に向けて発行するコマンドは、使用するNS230を特定する情報を含む。
【0039】
ホスト装置300は、SSD200にNS230を生成する際、SSD200に対し、クリエイトコマンド310を送信する。クリエイトコマンド310は、生成するNS230の数、発行される。例えば、3つのNS230を生成する場合、それぞれ、NSID311が3つのクリエイトコマンド310が発行される。
【0040】
クリエイトコマンド310の一例を、図3(a)に示す。クリエイトコマンド310は、NSID311と、優先順位312と、サイズ313と、機能314と、を備える。NSID311は、生成するNS230を一意に識別可能な識別子(ID)である。また、優先順位312は、当該NS230の優先順位である。サイズ313は、生成するNSの論理領域のサイズである。機能314は、当該NS230の用途を示す情報である。
【0041】
例えば、優先順位の設定は、既存のNS Managementコマンドを用いてもよい。NS Managementコマンド320の一例を図3(b)に示す。この場合、NS Managementコマンド320の、Operation Code(Opcode)の、例えば、Function Field321の、現在Reserveであるエリアのbitを使用し、NSIDの優先順位をSSD内に設定する。なお、優先順位の設定は、これに限定されず、既存のコマンド内のFieldの、Reserved bitであれば、どれを用いてもよい。
【0042】
なお、1つのクリエイトコマンド310に、分割数とともに、それぞれのNS230の上記各情報を含めてもよい。
【0043】
稼働中にホスト装置300が、SSD200に対して発行するコマンド330は、図3(c)に示すように、コマンド330を一意に識別するコマンドID331と、実行対象(処理対象)のデータが格納されるNS230のNSID332と、コマンドの処理内容(コマンド処理内容)333と、を含む。
【0044】
SSD200は、基本的に第一実施形態と同様の構成を備える。以下、第一実施形態と同機能の構成には、同一名、同一符号を付す。
【0045】
図2(b)に示すように、SSD200は、コントローラ210と、不揮発性メモリ220と、バッファメモリ240と、を備える。
【0046】
コントローラ210は、第一実施形態と同様に、ホスト装置300とのインタフェースとして機能するとともに、不揮発性メモリ220に対するアクセス等の制御を行う。本実施形態のコントローラ210は、NS作成部211と、実行順制御部212と、実行部213と、送受信部214と、NS管理部215と、を備える。
【0047】
送受信部214は、ホスト装置300との間で、コマンドを含む、データの送受信を行う。
【0048】
NS作成部211は、ホスト装置300から、クリエイトコマンド310を受信した場合、不揮発性メモリ220に、指示された数のNS230を生成する。このとき、各NS230に優先順位を設定する。すなわち、NS作成部211は、優先順位設定部としても機能する。
【0049】
具体的には、NS作成部211は、不揮発性メモリ220を、指示された数の、指定されたサイズを有する論理領域に分割し、それぞれ、NS230とする。なお、生成前に、既存のNSを削除する。
【0050】
このとき、NS作成部211は、クリエイトコマンド310で指定された各情報と、生成したNS230と物理領域とを対応づける情報(単に物理領域と呼ぶ。)と、を含む、NSテーブル250を生成する。生成したNSテーブル250は、NS管理部215に記憶される。NS管理部215は、例えば、コントローラ210の記憶部等に構築される。なお、NS管理部215は、不揮発性メモリ220に構築されてもよい。
【0051】
NS作成部211が生成するNSテーブル250の一例を、図4(a)に示す。NSテーブル250は、生成したNS230毎に、そのNSID251と、優先順位252と、サイズ253と、機能254と、物理領域255と、を備える。
【0052】
NSID251、優先順位252、サイズ253および機能254には、NS230を生成する際のクリエイトコマンド310内の同名の情報が、それぞれ登録される。物理領域255には、生成した各NS230と不揮発性メモリ220内の物理利用域とを対応づける情報である。
【0053】
実行順制御部212は、第一実施形態と同様に、ホスト装置300から発行されるコマンド330の実行順を制御する。実行順制御部212は、ホスト装置300からコマンド330が発行されると、実行キューにキューイングする。このとき、キューイングされたコマンド330に含まれるNSID332の優先順位(以下、コマンドの優先順位と呼ぶ。)と、新たに受信し、キューイングするコマンドの優先順位とを比較し、優先順位の順に実行されるよう、実行キューに挿入する。
【0054】
実行順制御部212は、送受信部214を介してコマンド330を受信すると、当該コマンド330に含まれるNSID332を抽出する。そして、NSテーブル250を参照し、抽出したNSID332に合致するNSID251に対応付けられた優先順位252を特定する。そして、実行キューに挿入する。このとき、例えば、コマンド330に、特定した優先順位252を付加してもよい。
【0055】
実行順制御部212が、新たに受信したコマンド330を、実行キューに追加する手法を、図4(b)を用いて説明する。なお、図4(b)では、コマンド330のコマンド処理内容333については、省略する。図4(b)では、一例として、コマンドID331が「コマンド08」で、指定されたNSID332が、「002」のコマンド330を受信したものとする。
【0056】
上述の手法で、実行順制御部212は、新たに受信したコマンド330に、優先順位252を付加する。ここでは、NSID332が「002」であるため、優先順位252は、2である。
【0057】
その後、実行順制御部212は、既に、優先順位順に並べられている実行キュー340の中で、どこに、このコマンド330を挿入すべきか判別する。具体的には、例えば、実行キュー内の先頭のコマンドから順に、その優先順位252と、新たに受信したコマンド330に付加した優先順位252とを比較する。そして、新たに受信したコマンド330に付加した優先順位252が、実行キュー内の比較対象のコマンド330に付加された優先順位252より大きい場合、当該比較対象のコマンド330の直前に、新たに受信したコマンド330を挿入する。
【0058】
例えば、図4(b)の例では、実行順制御部212は、実行キュー340の、優先順位が高いコマンド330から順に比較し、コマンド02と比較した時点で、初めて受信したコマンド330の優先順位252が、比較対象のコマンド330の優先順位252より大きくなる。よって、コマンド02の直前に、新たに受信したコマンドを挿入し、実行キュー340を更新する。
【0059】
なお、新たに受信したコマンド330に付加された優先順位252が、そのSSD200に設定されたNS230の優先順位の中で、最低のものである場合は、上述のような比較処理を行うことなく、実行キューの末尾に、当該コマンド330を加えてもよい。
【0060】
また、挿入位置の決定の手法はこれに限定されない。実行キューの末尾のコマンドから比較してもよいし、2分割法やその他の既存のソート手法を用いることができる。
【0061】
実行部213は、実行順制御部212が決定した実行キューに従って、コマンドを実行する。
【0062】
送受信部214は、ホスト装置300とのデータの送受信を制御する。
【0063】
NS管理部215は、上述のように、NS230を管理する。本実施形態では、NSテーブル250を格納する。
【0064】
不揮発性メモリ220は、例えば、NANDフラッシュメモリを複数備える。コントローラ210からの指示に従って、論理的に分割され、1以上の論理領域が生成される。各論理領域は、第一の実施形態同様、NS230と呼ばれる。ここでは、一例として、NS231と、NS232と、NS233と、を例示する。NS数、各NS内のNANDフラッシュメモリ数はこれに限定されない。
【0065】
バッファメモリ240は、例えば、DRAM(Dynamic Random Access Memory)等で構成される。本実施形態では、コントローラ210のワーク領域として使用される。
【0066】
[NS作成処理]
次に、本実施形態の、コントローラ210によるNS作成処理の流れについて説明する。図5は、本実施形態のNS作成処理の処理フローである。本処理は、NS作成部211が、ホスト装置300から送受信部214を介して、クリエイトコマンド310を受信したことを契機に実行される。
【0067】
NS作成部211は、不揮発性メモリ220内の、既存のNS230を削除する(ステップS1101)。なお、不揮発性メモリ220内に、NSが未生成の場合、本処理は行わなくてもよい。
【0068】
NS作成部211は、ホスト装置300から指定された数の、それぞれ、指定されたサイズを有するNS230を生成する(ステップS1102)。
【0069】
そして、NS作成部211は、NSテーブル250に各NS230の情報を登録し(ステップS1103)、処理を終了する。ここでは、上述のように、NSID251と、優先順位252と、サイズ253と、機能254と、物理領域255と、を登録する。
【0070】
[コマンド処理]
次に、NS生成後、ホスト装置300から、コマンド330を受信した際の、コマンド処理の流れを説明する。図6は、本実施形態のコマンド処理の処理フローである。本処理は、ホスト装置300から、送受信部214を介して、プライオリティ付き(NSID332付き)のコマンド330を受信する毎に、実行順制御部212および実行部213により実行される。
【0071】
実行順制御部212は、受信したコマンド330を解釈し、指定されたNSID332を抽出する(ステップS1201)。
【0072】
実行順制御部212は、NSテーブル250を参照し、抽出したNSID332と合致するNSID251に対応づけて登録される優先順位252を特定する(ステップS1202)。ここで特定された優先順位252を、PR0と表す。
【0073】
ここで、実行順制御部212は、特定した優先順位252(PR0)が、NS230に設定した優先順位の中で、最も低いものであるか否かを判別する(ステップS1203)。そして、最も低い場合(S1203:Yes)は、実行キュー340の末尾に受信したコマンドをキューイングすることにより、実行キュー340を更新する(ステップS1211)。
【0074】
それ以外の場合(S1203:No)、実行順制御部212は、実行キュー340内の先頭のコマンドから順に、特定した優先順位252と比較し、挿入箇所を決定し、実行キュー340を更新する。以下、その手法を詳細に説明する。ここでは、N個のコマンドがキューイングされているものとする。また、実行キュー340の、実行順の先頭からn個目のコマンドを、n番目のコマンドと呼ぶ。
【0075】
実行順制御部212は、カウンタnを初期化(n=1)する(ステップS1204)。ここで、nが、Nより大きい場合は(S1205:Yes)、ステップS1211へ移行する。
【0076】
それ以外の場合(S1205:No)、実行順制御部212は、先頭からn番目のコマンドの優先順位(PRn)と、特定した優先順位(PR0)とを比較する。ここでは、PR0がPRnより高い(大きい)か否かを判別する(ステップS1206)。
【0077】
PR0がPRnより高い場合(S1206:Yes)、実行順制御部212は、受信したコマンド330を、n番目のコマンドの直前に挿入し、実行キューを更新する(ステップS1210)。
【0078】
一方、PR0がPRn以下の場合(S1206:No)、nを1インクリメントし(ステップS1207)、ステップS1205へ戻り、処理を繰り返す。すなわち、nがNを超えるまで、次の実行順のコマンドの優先順位と比較する。
【0079】
実行キュー340が更新されたら、実行部213は、実行キュー340の先頭からコマンドを実行し(ステップS1220)、処理を終了する。
【0080】
以下、上記実施形態の実例として、ホスト装置300からライトコマンドおよびリードコマンドが発行された場合の実行順を説明する。
【0081】
例えば、3つのライトコマンド発行時の、発行順と実際の実行順とを説明する。図7(a)は、実行順を説明するための図である。ここでは、3つのライトコマンドIO1、IO2、IO3は、この順に発行され、それぞれ、実行対象のNS230として、NSID:01、NSID:02、NSID:03が指定されているものとする。
【0082】
この場合、各ライトコマンドで指定されたNSの優先順位は、図4(a)のNSテーブル250によれば、それぞれ、1、2、3であるため、実行順は、IO3、IO2、IO1である。
【0083】
同様に、3つのリードコマンドIO1、IO2、IO3がこの順に発行された場合の実行順を、図7(b)に示す。本図に示すように、各リードコマンドIO1、IO2、IO3で指定されるNSは、それぞれ、上記同様、NSID:01、NSID:02、NSID:03とする。この場合、実行順は、IO3、IO2、IO1である。
【0084】
以上説明したように、本実施形態の情報処理システム100によれば、メモリシステム200内で、各NS230に、実行の優先順位を設定する。このため、ホスト装置300側では、コマンド330に、実行対象のNS230を指定するだけで、複数のコマンドが競合した場合であっても、所望の優先順位で、各コマンドが処理される。このため、第一実施形態と同様の効果が得られる。
【0085】
さらに、本実施形態では、各NS230の優先順位を、NS230を生成する際に、ホスト装置300から指定する。各NS230は、用途別に設定できるため、用途別に、ユーザの所望の優先順位でコマンドが処理されるように構成できる。
【0086】
よって、本実施形態によれば、高効率性、高速性、即応性を有するメモリシステム200を実現できる。
【0087】
[ハードウェア構成]
上記各実施形態のコントローラ210の構成を、図1(b)に示す。本図に示すように、コントローラ210は、バスを介して相互に接続されるCPU(Central Processing Unit)291と、DRAMインタフェース(I/F)292と、メモリI/F293と、ホストI/F294と、を備えてもよい。
【0088】
CPU291は、コントローラ210の上記各機能を実現するプロセッサである。CPU291は、例えば、不揮発性メモリ220等に格納されるファームウェア等のプログラムをDRAM等のRAM上にロードして実行することにより、上記各機能を実現する。
【0089】
DRAMI/F292、メモリI/F293およびホストI/F294は、それぞれ、DRAM等のRAM、不揮発性メモリ220およびホスト装置300等とのデータ送受信を制御する。
【0090】
CPU291が実現する各機能、DRAMI/F292、メモリI/F293およびホストI/F294は、それぞれ、専用のハードウェアで実現されてもよい。例えば、各処理専用の集積回路(IC)、特定用途向け集積回路(ASIC)、システムオンチップ(SOC)、フィールドプログラマブルゲートアレイ(FPGA)などで実装されてもよい。
【0091】
<変形例1>
上記実施形態では、メモリシステム200がSSDである場合を例にあげて説明した。しかし、メモリシステム200は、SSDに限定されない。Nonvolatile Memory Express(NVMe)プロトコルでアクセス可能な不揮発性メモリを搭載したストレージデバイスであればよい。例えば、フラッシュデバイスであってもよい。
【0092】
また、メモリシステム200が備える不揮発性メモリ220として、NANDメモリを例にあげて説明した。しかし、不揮発性メモリ220は、これに限定されない。例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリであってもよい。
【0093】
<変形例2>
また、NVMeデバイスでは複数のコントローラを持つことができ、NS230はコントローラ毎に割り当てられる。上記各実施形態では、メモリシステム200内で、コントローラ210が1つである場合を例にあげて説明したが、コントローラ210は複数であってもよい。個々のコントローラ210において、割り当てられたNS230に対するコマンドの優先順位を上記各実施形態の手法で制御すればよい。
【0094】
<変形例3>
上記各実施形態では、実行時のコマンド330は、NSID332を備える。しかしながら、この形態に限定されない。例えば、NS230毎に機能が定められている場合、機能を指定してもよい。
【0095】
また、ホスト装置300側で、機能とNS230(NSID)とを対応付けるテーブルを備えてもよい。この場合、ユーザは、コマンド発行時に機能を指定する。そして、ホスト装置300において、テーブルを参照し、指定された機能に対応するNSIDを特定し、発行するコマンドに含めてもよい。
【0096】
または、コマンド毎に機能が予め定められていてもよい。そして、ホスト装置300において、コマンド毎に、機能を特定し、テーブルを参照してそれに対応するNSIDを特定し、コマンド330を発行するよう構成してもよい。
【0097】
<変形例4>
また、NSID332の代わりに、コマンド330に、優先順位を指定してもよい。この場合は、実行順制御部212は、コマンド330から指定された優先順位を抽出し、その優先順位に応じて、コマンド330の実行キュー340への挿入位置を決定する。また、実行順制御部212または実行部213は、NSテーブル250を参照し、合致する優先順位252に対応するNSID251を特定し、処理対象のNS230を決定する。
【0098】
<変形例5>
さらに、上記各実施形態では、各NS230に、異なる優先順位252を設定しているが、これに限定されない。例えば、複数のNS230に同じ優先順位252が設定されていてもよい。
【0099】
<変形例6>
また、上記各実施形態において、論理領域と物理領域の対応情報を予め保持している場合、物理領域255に変えて、論理領域を特定する情報が、NSテーブル250に保持されていてもよい。
【0100】
<変形例7>
また、上記各実施形態では、ホスト装置300とメモリシステム(SSD)200とは、独立した装置としているが、これに限定されない。メモリシステム200は、ホスト装置300の記憶装置として、ホスト装置300に内蔵されてもよい。
【0101】
なお、上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各工程の実行順序は、その記載の順番に制限されない。例えば、各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。
【0102】
また、不揮発性メモリ220に記憶され、コントローラ210の機能を実現するプログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。これらは、非一時的なコンピュータ可読記録媒体に記録された各種プログラムを中長期的に記憶することに利用することが可能である。
【0103】
以上、本開示の各実施形態および変形例を説明したが、本開示は、上記した実施形態に限定されるものではなく、当業者が理解し得る様々な変更を行うことができる。そして、各実施形態および変形例は、適宜他の実施の形態と組み合わせることができる。また、例えば、各図面に示したネットワーク構成、各要素の構成は、本開示の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【0104】
最後に、本開示の好ましい形態を要約する。上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
複数の論理領域を有する不揮発性メモリと、
前記不揮発性メモリの各論理領域に対するアクセスを制御するコントローラと、を備え、
前記コントローラは、受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める実行順制御部を備える、メモリシステム。
(付記2)
付記1記載のメモリシステムにおいて、
前記コマンドが実行順にキューイングされる実行キューに従って前記コマンドを実行する実行部をさらに備え、
前記実行順制御部は、新たに前記コマンドを受信する毎に、前記実行キューを、各コマンドが指定する前記論理領域の優先順位が高い順に並べ替えることが望ましい。
(付記3)
付記1または2記載のメモリシステムにおいて、
前記コントローラは、前記不揮発性メモリを複数の前記論理領域に分割する際、前記優先順位を設定する優先順位設定部をさらに備えることが望ましい。
(付記4)
付記1から3のいずれかに記載のメモリシステムにおいて、
前記論理領域は、用途毎に設定されることが望ましい。
(付記5)
複数の論理領域を有する不揮発性メモリにおける、各論理領域へのアクセスを制御するアクセス制御方法であって、
受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める、アクセス制御方法。
(付記6)
複数の論理領域を有する不揮発性メモリのコントローラに、
付記5に記載のアクセス制御方法を実行させる、プログラム。
なお、付記5、6の形態は、付記1と同様に、付記2-4の形態に展開することが可能である。
【0105】
なお、上記の特許文献等の各開示を、本書に引用をもって繰り込むものとする。全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし変形例の変更・調整が可能である。また、開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし変形例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本開示は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【0106】
100:情報処理システム、
200:メモリシステム、210:コントローラ、211:NS作成部、212:実行順制御部、213:実行部、214:送受信部、215:NS管理部、220:不揮発性メモリ、230:NS(名前空間)、231:NS、232:NS、233:NS、240:バッファメモリ(DRAM)、250:NSテーブル、251:NSID、252:優先順位、253:サイズ、254:機能、255:物理領域、291:CPU、292:DRAMI/F、293:メモリI/F、294:ホストI/F、
300:ホスト装置、310:クリエイトコマンド、311:NSID、312:優先順位、313:サイズ、314:機能、320:NS Managementコマンド、321:Function Field、330:コマンド、331:コマンドID、332:NSID、333:コマンド処理内容、340:実行キュー
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2024-10-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の論理領域を有する不揮発性メモリと、
前記不揮発性メモリの各論理領域に対するアクセスを制御するコントローラと、を備え、
前記コントローラは、受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める実行順制御部を備え
前記論理領域は、用途別に設定される、メモリシステム。
【請求項2】
請求項1記載のメモリシステムであって、
前記コマンドが実行順にキューイングされる実行キューに従って前記コマンドを実行する実行部をさらに備え、
前記実行順制御部は、新たに前記コマンドを受信する毎に、前記実行キューを、各コマンドが指定する前記論理領域の優先順位が高い順に並べ替える、メモリシステム。
【請求項3】
請求項1記載のメモリシステムであって、
前記コントローラは、前記不揮発性メモリを複数の前記論理領域に分割する際、前記優先順位を設定する優先順位設定部をさらに備える、メモリシステム。
【請求項4】
請求項3記載のメモリシステムであって、
前記優先順位設定部は、前記不揮発性メモリを複数の前記論理領域に分割する際、前記用途をさらに設定する、メモリシステム。
【請求項5】
複数の論理領域を有する不揮発性メモリにおける、各論理領域へのアクセスを制御するアクセス制御方法であって、
受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定め
前記論理領域は、用途別に設定される、アクセス制御方法。
【請求項6】
複数の論理領域を有する不揮発性メモリのコントローラに、
請求項5に記載のアクセス制御方法を実行させる、プログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0011
【補正方法】変更
【補正の内容】
【0011】
本開示の第一の視点によれば、
メモリシステムは、
複数の論理領域を有する不揮発性メモリと、
前記不揮発性メモリの各論理領域に対するアクセスを制御するコントローラと、を備える。
前記コントローラは、受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める実行順制御部を備える。
前記論理領域は、用途別に設定される。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0012
【補正方法】変更
【補正の内容】
【0012】
本開示の第二の視点によれば、
複数の論理領域を有する不揮発性メモリにおける、各論理領域へのアクセスを制御するアクセス制御方法は、
受信したコマンドの実行順を、当該コマンドが指定する前記論理領域に予め定められた優先順位に応じて定める。
前記論理領域は、用途別に設定される。