(57)【要約】      （修正有）【課題】メモリシステムを備えるネットワーク環境においてＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を向上させるメモリシステムを提供する。【解決手段】情報処理システム１Ａにおいて、メモリシステム２は、不揮発性メモリ１０とコントローラとを含む。コントローラは、外部の装置（情報処理装置１）と通信し、不揮発性メモリを制御する。コントローラは、第１のバーチャルチャネルと第１の優先度とを関連付けており第２のバーチャルチャネルと第１の優先度よりも低い第２の優先度とを関連付けている優先度関係情報に基づいて、外部の装置から、第１のバーチャルチャネルを使用して、第１の優先度に対応する第１の通信情報を受信し、外部の装置から、第２のバーチャルチャネルを使用して、第２の優先度に対応する第２の通信情報を受信する。【選択図】図１
2020154697.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
外部の装置と通信し、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
第１のバーチャルチャネルと第１の優先度とを関連付けており第２のバーチャルチャネルと前記第１の優先度よりも低い第２の優先度とを関連付けている優先度関係情報に基づいて、
前記外部の装置から、前記第１のバーチャルチャネルを使用して、前記第１の優先度に対応する第１の通信情報を受信し、
前記外部の装置から、前記第２のバーチャルチャネルを使用して、前記第２の優先度に対応する第２の通信情報を受信する、
メモリシステム。
【請求項２】
前記外部の装置と前記コントローラとの間の前記第１のバーチャルチャネルによる通信及び前記第２のバーチャルチャネルによる通信は、第１の規格に準拠し、
前記第１の通信情報よりも前記第２の通信情報が低い優先度に関連付けられていることは、第２の規格に準拠する、
請求項１のメモリシステム。
【請求項３】
前記第１の規格はＰＣＩ Ｅｘｐｒｅｓｓであり、前記第２の規格はＮＶＭ Ｅｘｐｒｅｓｓである、請求項２のメモリシステム。
【請求項４】
前記コントローラは、
前記第１の優先度と前記第２の優先度にしたがって、前記第１の通信情報と前記第２の通信情報とを処理する、
請求項１乃至請求項３のいずれか１項のメモリシステム。
【請求項５】
前記優先度関係情報を格納するためのメモリをさらに具備し、
前記コントローラは、
前記メモリに格納されている前記優先度関係情報に基づいて、前記第１のバーチャルチャネルに対応する前記第１の優先度と前記第２のバーチャルチャネルに対応する前記第２の優先度とを認識する、
請求項１乃至請求項４のいずれか１項のメモリシステム。
【請求項６】
前記コントローラは、
前記外部の装置から、コマンド通知を受信し、
前記コマンド通知に基づいて、コマンドが前記第１の優先度と前記第２の優先度とのうちのいずれの優先度に関連付けられているのかを認識し、
前記認識した優先度と前記優先度関係情報に基づいて、前記第１及び第２のバーチャルチャネルの中から、使用されるバーチャルチャネルを決定し、
前記決定されたバーチャルチャネルを用いて、前記外部の装置へコマンドリクエストを送信し、
前記外部の装置から前記決定されたバーチャルチャネルを用いて、前記コマンドリクエストに対応する前記コマンドを受信する、
請求項１乃至請求項５のいずれか１項のメモリシステム。
【請求項７】
前記コントローラは、
複数のバーチャルチャネルのそれぞれに対応する複数のキュー回路を具備し、
前記外部の装置から前記第１のバーチャルチャネル経由で受信した前記第１の通信情報を、前記複数のキュー回路のうちの前記第１のバーチャルチャネルに対応する第１のキュー回路に格納させ、前記外部の装置から前記第２のバーチャルチャネル経由で受信した前記第２の通信情報を、前記複数のキュー回路のうちの前記第２のバーチャルチャネルに対応する第２のキュー回路に格納させ、
前記第１のキュー回路に格納されている前記第１の通信情報を前記第２のキュー回路に格納されている前記第２の通信情報よりも優先して処理する、
請求項１乃至請求項６のいずれか１項のメモリシステム。
【請求項８】
前記第１の通信情報に関連する通信情報は前記第１のバーチャルチャネルのみを使用して前記コントローラと前記外部の装置との間で送受信され、
前記第２の通信情報に関連する通信情報は前記第２のバーチャルチャネルのみを使用して前記コントローラと前記外部の装置との間で送受信される、
請求項１のメモリシステム。
【請求項９】
前記コントローラは、
前記第１の通信情報に関連する第３の通信情報を前記第１のバーチャルチャネルを使用して前記外部の装置へ送信し、
前記第２の通信情報に関連する第４の通信情報を前記第２のバーチャルチャネルを使用して前記外部の装置へ送信する
請求項１のメモリシステム。
【請求項１０】
前記コントローラは、
前記第１の通信情報に関連する第５の通信情報を前記第１のバーチャルチャネルを使用して前記外部の装置から受信し、
前記第２の通信情報に関連する第６の通信情報を前記第２のバーチャルチャネルを使用して前記外部の装置から受信する
請求項９に記載のメモリシステム。
【請求項１１】
不揮発性メモリとコントローラとを具備するメモリシステムの制御方法であって、
前記コントローラによって、第１のバーチャルチャネルと第１の優先度とを関連付けており第２のバーチャルチャネルと前記第１の優先度よりも低い第２の優先度とを関連付けている優先度関係情報、を参照することと、
前記コントローラによって、外部の装置から、前記第１のバーチャルチャネルを使用して、前記第１の優先度に対応する第１の通信情報を受信することと、
前記コントローラによって、前記外部の装置から、前記第２のバーチャルチャネルを使用して、前記第２の優先度に対応する第２の通信情報を受信することと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステム及びメモリシステムの制御方法に関する。
【背景技術】
【０００２】
ＳＳＤ（Solid State Drive）は、不揮発性半導体メモリを備え、所定の規格に準拠したインタフェースを持つ。ＳＳＤと情報処理装置とは、所定の規格にしたがって、例えばコマンド、ユーザデータ、コンプリーションなどを送受信する。例えば、ＳＳＤは、所定の規格にしたがって、情報処理装置から受信したユーザデータを不揮発性半導体メモリにライトし、不揮発性半導体メモリからリードしたユーザデータを情報処理装置へ送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１７−５１２３５０号公報
【特許文献２】米国特許出願公開第２０１７／００７５５７２号明細書
【特許文献３】米国特許出願公開第２０１６／０３２１０１２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、メモリシステムを備えるネットワーク環境においてＱｏＳ（Quality Of Service）を向上させることができるメモリシステム及びメモリシステムの制御方法を提供する。
【課題を解決するための手段】
【０００５】
本実施形態によれば、メモリシステムは、不揮発性メモリとコントローラとを含む。コントローラは、外部の装置と通信し、不揮発性メモリを制御する。コントローラは、第１のバーチャルチャネルと第１の優先度とを関連付けており第２のバーチャルチャネルと第１の優先度よりも低い第２の優先度とを関連付けている優先度関係情報に基づいて、外部の装置から、第１のバーチャルチャネルを使用して、第１の優先度に対応する第１の通信情報を受信し、外部の装置から、第２のバーチャルチャネルを使用して、第２の優先度に対応する第２の通信情報を受信する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図２】本実施形態に係る優先度関係情報の一例を示すデータ構造図。
【図３】本実施形態に係る情報処理システムの起動時に実行される初期化処理の一例を示すシーケンス図。
【図４】本実施形態に係る情報処理システムによって実行されるユーザデータのリード処理の一例を示すシーケンス図。
【図５】本実施形態に係る情報処理システムによって実行されるユーザデータのライト処理の一例を示すシーケンス図。
【図６】本実施形態に係るメモリシステムによって実行されるリード処理の一例を示すシーケンス図。
【図７】本実施形態に係るメモリシステムによって実行されるライト処理の一例を示すシーケンス図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。以下の説明において、実質的に同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０００８】
本実施形態において、メモリシステムは、外部の情報処理装置と通信を行うための第１の規格に準拠する。なお、メモリシステムは情報処理装置に組み込まれていてもよい。
【０００９】
また、メモリシステムは、第２の規格に準拠し、情報処理装置が発行するコマンドを実行する。
【００１０】
以下の説明では、第１の規格がＰＣＩ Ｅｘｐｒｅｓｓ（以下、ＰＣＩｅと表記する）であり、第２の規格がＮＶＭ Ｅｘｐｒｅｓｓ（以下、ＮＶＭｅと表記する）である場合を例として説明する。しかしながら、第１の規格及び第２の規格は適宜変更可能である。
【００１１】
以下の説明では、通信情報が、ＰＣＩｅ規格及びＮＶＭｅ規格に準拠して通信及び処理される場合を例として説明する。ここで、通信情報とは、例えば、コマンド、ユーザデータ、又は、コンプリーションなどの総称であるとする。
【００１２】
図１は、本実施形態に係る情報処理システム１Ａの構成の一例を示すブロック図である。
【００１３】
情報処理システム１Ａは、情報処理装置１とメモリシステム２とを含む。
情報処理装置１は、例えばホスト機器と表記されてもよい。情報処理装置１は、例えば、パーソナルコンピュータ、サーバ装置、クライアント装置、携帯電話機、携帯情報端末、撮影装置、センサ装置などでもよい。
【００１４】
本実施形態において、メモリシステム２は、ＳＳＤの場合を例として説明するが、同様の構成及び機能は、例えばＨＤＤ(Hard Disk Drive)、メモリカード、ＨＤＤとＳＳＤとを含むハイブリッド型メモリシステム、光ディスクデバイスなど様々な種類の不揮発性ストレージデバイスに適用可能である。
【００１５】
まず、情報処理装置１の構成を説明する。
【００１６】
情報処理装置１は、メモリ３とチップセット４Ｂとプロセッサ４とを含む。ただし、本実施形態で説明する情報処理装置１の構成及び動作は一例であり、これに限定されるものではない。
【００１７】
メモリ３は、ソフトウェアＳＷ、ＰＲＰ（Physical Region Pointer）５、メモリシステム２へライトするユーザデータ３Ｗ、メモリシステム２からリードしたユーザデータ３Ｒを格納する。なお、ＰＲＰは、例えばＮＶＭｅ規格に定義されており、例えばユーザデータの送り先又は取得元を示すものである。
【００１８】
チップセット４Ｂは、プロセッサ４の指示により情報処置装置１とメモリシステム２との間の通信を行う。
【００１９】
プロセッサ４は、メモリ３に格納されているソフトウェアＳＷを実行することにより、通信制御部４Ａとして機能する。ソフトウェアＳＷは、例えば、オペレーティング・システムでもよく、アプリケーション・プログラムでもよく、ドライバなどでもよい。プロセッサ４は、電子回路で形成されてもよい。
【００２０】
通信制御部４Ａは、チップセット４Ｂに対して指示を出し、チップセット４Ｂを使用して情報処理装置１とメモリシステム２との間の通信を制御する。以下では、簡略化のため、チップセット４Ｂに関しては省略して説明を行う。
【００２１】
通信制御部４Ａは、情報処理装置１とメモリシステム２とが通信を開始する際の初期化処理において、メモリシステム２の能力に関する情報（以下、単に能力情報という）の問い合わせをメモリシステム２へ送信し、問い合わせに対応する能力情報をメモリシステム２から受信する。
【００２２】
通信制御部４Ａは、メモリシステム２から受信した能力情報に基づいて、情報処理装置１とメモリシステム２との間の通信で使用可能なバーチャルチャネル（Virtual Channel）の数を決定する。バーチャルチャネルは、例えばＰＣＩｅ規格に定義されている。バーチャルチャネルとは、例えば、１つの物理的な回線について論理的に複数の通信回線とみなされた回線である。通信制御部４Ａは、例えば、後で説明するメモリシステム２のＰＣＩｅコントローラ１１に備えられているVirtual Channel Capability registerの情報に基づいて、使用可能なバーチャルチャネルの数を決定する
【００２３】
本実施形態において、使用可能なバーチャルチャネルの数は５つであり、情報処理装置１とメモリシステム２との間の通信にバーチャルチャネルＶＣ０〜ＶＣ４が使用可能であるとする。なお、本実施形態において、バーチャルチャネルの数は２以上であればよい。より具体的には、バーチャルチャネルの数は、２以上であり、ＰＣＩｅ規格でサポートする最大のバーチャルチャネルの数以下であればよい。
【００２４】
通信制御部４Ａは、メモリシステム２宛てのコマンド通知をメモリシステム２へ送信する。ここでのコマンド通知は、例えばＮＶＭｅ規格に定義されている。
【００２５】
通信制御部４Ａは、複数のバーチャルチャネルのうちメモリシステム２で決定されたバーチャルチャネルを使用して、コマンド通知に対応するコマンドリクエストをメモリシステム２から受信する。
【００２６】
通信制御部４Ａは、メモリシステム２で決定されたバーチャルチャネルを使用して、コマンドリクエストに対応するコマンドをメモリシステム２へ送信する。
【００２７】
通信制御部４Ａは、メモリシステム２で決定されたバーチャルチャネルを使用して、ＰＲＰリクエストをメモリシステム２から受信する。
【００２８】
通信制御部４Ａは、ＰＲＰリクエストに対応するＰＲＰ５をメモリ３からリードし、メモリシステム２で決定されたバーチャルチャネルを使用して、ＰＲＰ５をメモリシステム２へ送信する。
【００２９】
通信制御部４Ａは、メモリシステム２へ送信したコマンドがリードコマンドの場合、メモリシステム２から、メモリシステム２で決定されたバーチャルチャネルを使用して、ＰＲＰ５に対応するユーザデータ３Ｒを受信し、ユーザデータ３Ｒをメモリ３へ格納させる。通信制御部４Ａは、ユーザデータ３Ｒの受信後、メモリシステム２から、メモリシステム２で決定されたバーチャルチャネルを使用して、コンプリーションを受信する。
【００３０】
通信制御部４Ａは、メモリシステム２へ送信したコマンドがライトコマンドの場合、メモリシステム２から、メモリシステム２で決定されたバーチャルチャネルを使用して、ＰＲＰ５に対応するライトリクエストを受信する。通信制御部４Ａは、ライトリクエストに対応するユーザデータ３Ｗをメモリ３からリードし、メモリシステム２で決定されたバーチャルチャネルを使用して、ユーザデータ３Ｗをメモリシステム２へ送信する。通信制御部４Ａは、ユーザデータ３Ｗの送信後、メモリシステム２から、メモリシステム２で決定されたバーチャルチャネルを使用して、コンプリーションを受信する。
【００３１】
なお、通信制御部４Ａは、プロセッサ４に代えて情報処理装置１の他の構成要素によって実現されてもよい。プロセッサ４とチップセット４Ｂとは組み合わされてもよい。例えば、プロセッサ４とチップセット４Ｂとは、１チップ又は１パッケージで形成されてもよい。また、プロセッサ４とチップセット４Ｂとメモリ３は、１チップ又は１パッケージで形成されてもよい。
【００３２】
次に、メモリシステム２の構成を説明する。ただし、本実施形態で説明するメモリシステム２の構成及び動作は一例であり、これに限定されるものではない。
【００３３】
メモリシステム２は、コントローラ７と、メモリ８と、不揮発性メモリ１０とを含む。メモリ８として、例えばＤＲＡＭ（Dynamic Random Accsess Memory）が用いられてもよい。
【００３４】
本実施形態において、コントローラ７は、例えばＳｏＣ（System-on-a-chip）などのように電子回路で形成されてもよい。コントローラ７の各機能は、専用ハードウェアにより実現されてもよく、プロセッサがファームウェアなどのようなソフトウェアを実行することにより実現されてもよい。なお、コントローラ７とメモリ８とは組み合わされてもよい。例えば、コントローラ７とメモリ８とは、１チップ又は１パッケージで形成されてもよい。また、コントローラ７とメモリ８と不揮発性メモリ１０とは、１チップ又は１パッケージで形成されてもよい。
【００３５】
コントローラ７は、フロントエンド７Ｆとバックエンド７Ｂとリード／ライトコントローラ９とを含む。コントローラ７は、情報処理装置１からコマンドを受信し、コマンドにしたがって不揮発性メモリ１０を制御する。例えば、コントローラ７は、情報処理装置１からリードコマンドを受信した場合に、不揮発性メモリ１０に対するリード処理を実行する。コントローラ７は、情報処理装置１からライトコマンドを受信した場合に、不揮発性メモリ１０に対するライト処理を実行する。
【００３６】
フロントエンド７Ｆは、ＰＣＩｅ規格に準拠する動作を制御するＰＣＩｅコントローラ１１と、ＮＶＭｅ規格に準拠する動作を制御するＮＶＭｅコントローラ１２とを含む。
【００３７】
ＰＣＩｅコントローラ１１は、情報処理装置１との間で、ＰＣＩｅ規格に準拠した通信を実行する。ＰＣＩｅコントローラ１１は、ＰＣＩｅ規格に準拠する図示しないVirtual Channel Capability Registerを備える。
【００３８】
ＰＣＩｅコントローラ１１は、情報処理装置１とメモリシステム２との間の複数のバーチャルチャネルＶＣ０〜ＶＣ４のそれぞれに対応するバッファメモリ１１０〜１１４を備える。なお、バッファメモリ１１０〜１１４に代えて、キューなどのような他の種類の一時記憶装置が用いられてもよい。
【００３９】
バッファメモリ１１０〜１１４のそれぞれは、対応するバーチャルチャネルＶＣ０〜ＶＣ４を使用して情報処理装置１から受信された通信情報を一時的に格納する。また、バッファメモリ１１０〜１１４のそれぞれは、対応するバーチャルチャネルＶＣ０〜ＶＣ４を使用して情報処理装置１へ送信される通信情報を一時的に格納する。
【００４０】
すなわち、ＰＣＩｅコントローラ１１は、情報処理装置１からそれぞれバーチャルチャネルＶＣ０〜ＶＣ４を使用して受信した通信情報を、使用されたバーチャルチャネルＶＣ０〜ＶＣ４に対応するバッファメモリ１１０〜１１４へ格納させる。ＰＣＩｅコントローラ１１は、バッファメモリ１１０〜１１４に格納された通信情報を、それぞれ対応するキュー回路１３０〜１３４へ格納させる。
【００４１】
また、ＰＣＩｅコントローラ１１は、バッファメモリ１１０〜１１４に格納されている通信情報を、それぞれ対応するバーチャルチャネルＶＣ０〜ＶＣ４を使用して、情報処理装置１へ送信する。
【００４２】
ＰＣＩｅコントローラ１１は、情報処理装置１とメモリシステム２とが通信を開始する際の初期化処理において、情報処理装置１から能力情報の問い合わせを受信すると、能力情報を情報処理装置１へ送信する。
【００４３】
ＰＣＩｅコントローラ１１は、使用可能なバーチャルチャネルＶＣ０〜ＶＣ４に関する情報をＮＶＭｅコントローラ１２に送信し、このＮＶＭｅコントローラ１２が使用可能なバーチャルチャネルＶＣ０〜ＶＣ４とＮＶＭｅに関する優先度情報とを関係付けることで優先度関係情報６を生成し、優先度関係情報６をメモリ８に格納させる。メモリシステム２内の他のモジュールが優先度関係情報６の生成と、メモリ８への格納をしてもよい。
【００４４】
ＰＣＩｅコントローラ１１は、情報処理装置１からコマンド通知を受信する。ＰＣＩｅコントローラ１１は、受信したコマンド通知をＮＶＭｅコントローラ１２に送信する。ＮＶＭｅコントローラ１２は、メモリ８から優先度関係情報６をリードし、コマンド通知により認識可能なＮＶＭｅに関する優先度と優先度関係情報６とに基づいて、バーチャルチャネルＶＣ０〜ＶＣ４のうち使用すべきバーチャルチャネルを決定する。ＰＣＩｅコントローラ１１は、決定されたバーチャルチャネルに対応するバッファメモリ１１０にコマンドリクエストを格納させ、決定されたバーチャルチャネルを使用して、コマンドリクエストを情報処理装置１へ送信する。
【００４５】
ＮＶＭｅコントローラ１２は、アービトレーション部１３と、複数のＤＭＡ（Direct Memory Access）部１４０〜１４４とを含む。ＮＶＭｅコントローラ１２のアービトレーション部１３は、優先度関係情報６に基づいて、優先度が高く設定されているバーチャルチャネルに対応するキュー回路１３０〜１３４に格納されている通信情報を、優先的に選択するスケジューリングを実行する。具体的には、アービトレーション部１３は、ＮＶＭｅ規格で定義されるWeighted Round Robin with Urgent Priority Class Arbitration（ＷＲＲＵＰＣＡ）を実現する。ＮＶＭｅコントローラ１２は、ＷＲＲＵＰＣＡの仕組みにより複数のキュー回路１３０〜１３４に格納されている通信情報を選択し、選択した通信情報を処理する。複数のキュー回路１３０〜１３４のそれぞれは、例えば、サブミッションキュー（Submission Queue：ＳＱ）とする。
【００４６】
ＮＶＭｅコントローラ１２におけるＮＶＭｅコマンドの処理段階は、「コマンドフェッチと解釈」「ＰＲＰフェッチと解釈」「データ伝送」「コンプリーションの発行」という４つの段階を含む。
【００４７】
アービトレーション部１３は、複数のキュー回路１３０〜１３４を備える。アービトレーション部１３は、例えばＷＲＲＵＰＣＡを用いて、各キュー回路１３０〜１３４に格納されている通信情報から優先度に応じて処理対象となる通信情報を選択する。
【００４８】
本実施形態においては、優先度の高い処理対象を優先して実行するために、上述したＷＲＲＵＰＣＡなどのアルゴリズムが用いられるとする。しかしながらＷＲＲＵＰＣＡに代えて優先度に応じて処理対象を選択する他のアルゴリズムが用いられてもよい。
【００４９】
キュー回路１３０〜１３４は、複数のバーチャルチャネルＶＣ０〜ＶＣ４のそれぞれに対応する。キュー回路１３０〜１３４は、先入れ先出し方式を採用する。
【００５０】
ＮＶＭｅコントローラ１２は、アービトレーション部１３によって処理対象として選択された通信情報に基づいて、コマンドフェッチと解釈、ＰＲＰフェッチと解釈、ユーザデータの伝送、又は、コンプリーションの発行などを実行する。
【００５１】
ＤＭＡ部１４０〜１４４は、複数のバーチャルチャネルＶＣ０〜ＶＣ４のそれぞれに対応する。
【００５２】
バックエンド７Ｂは、プロセッサ１５を含む。プロセッサ１５は、メモリ１６を含む。メモリ１６は、バーチャルチャネルＶＣ０〜ＶＣ４にそれぞれ対応するように領域１６０〜１６４に区分けされている。メモリ１６は、例えば先入れ先出し方式を採用してもよい。メモリ１６は、プロセッサ１５の外部に備えられ、プロセッサ１５が外部のメモリ１６に対するライト及びリードを実行可能としてもよい。
【００５３】
プロセッサ１５は、上記のアービトレーション部１３と同様に、優先度関係情報６及び例えばＷＲＲＵＰＣＡにしたがって、各領域１６０〜１６４に格納されているユーザデータをリード／ライトコントローラ９経由で不揮発性メモリ１０にライトする処理、及び、不揮発性メモリ１０からリード／ライトコントローラ９経由でリードされたユーザデータを各領域１６０〜１６４に格納させる処理を実行する。なお、プロセッサ１５は、ＷＲＲＵＰＣＡに代えて、優先度に応じて処理対象の領域１６０〜１６４を選択する他のアルゴリズムを用いてもよい。
【００５４】
不揮発性メモリ１０は、例えば、不揮発性の半導体メモリとしてもよい。不揮発性メモリ１０は、例えばＮＡＮＤ型フラッシュメモリとするが、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory：磁気抵抗メモリ）、ＰＲＡＭ（Phasechange Random Access Memory：相変化メモリ）、ＲｅＲＡＭ（Resistive Random Access Memory：抵抗変化型メモリ）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）など他の不揮発性半導体メモリでもよい。例えば、不揮発性メモリ１０は、磁気メモリなどでもよい。例えば、不揮発性メモリ１０は、３次元構造の半導体メモリでもよい。
【００５５】
不揮発性メモリ１０は、複数のネームスペースに論理的に分割されており、各ネームスペースがバーチャルチャネルＶＣ０〜ＶＣ４に対応する各領域１００〜１０４に対応付けらてもよい。本実施形態において、ネームスペースは、例えばＮＶＭｅ規格に準拠する。コントローラ７は、ネームスペースＩＤを用いて不揮発性メモリ１０に対する各種の制御を行うことにより、不揮発性メモリ１０における特定のスペースのみを制御可能である。
【００５６】
キュー回路１３０〜１３４に格納されているユーザデータを不揮発性メモリ１０にライトするライト処理において、ＤＭＡ部１４０〜１４４のそれぞれは、アービトレーション部１３の制御にしたがって、バーチャルチャネルＶＣ０〜ＶＣ４に対応するキュー回路１３０〜１３４からメモリ１６内の領域１６０〜１６４へユーザデータの転送を行う。プロセッサ１５は、メモリ１６の領域１６０〜１６４からリードしたユーザデータを、リード／ライトコントローラ９へ送信する。リード／ライトコントローラ９は、プロセッサ１５から、メモリ１６の各領域１６０〜１６４に格納されているユーザデータを受信する。リード／ライトコントローラ９は、不揮発性メモリ１０の領域１００〜１０４のそれぞれに対して、バーチャルチャネルＶＣ０〜ＶＣ４に対応するユーザデータのライトを行う。
【００５７】
また、不揮発性メモリ１０からリードされたユーザデータをＰＣＩｅコントローラ１１のバッファメモリ１１０〜１１１に格納させる処理において、リード／ライトコントローラ９は、不揮発性メモリ１０の領域１００〜１０４から、バーチャルチャネルＶＣ０〜ＶＣ４のそれぞれに対応するユーザデータをリードし、リードしたユーザデータを、プロセッサ１５に送信する。プロセッサ１５は、各領域１００〜１０４からリードされたユーザデータをリード／ライトコントローラ９経由で受信し、受信したユーザデータをそれぞれメモリ１６の各領域１６０〜１６４に格納させる。ＤＭＡ部１４０〜１４４のそれぞれは、優先度関係情報６にしたがって、メモリ１６内の領域１６０〜１６４からＰＣＩｅコントローラ１１のバッファメモリ１１０〜１１４へユーザデータの転送を行う。
【００５８】
図２は、優先度関係情報６の一例を示すデータ構造図である。
【００５９】
優先度関係情報６は、ＮＶＭｅに関する優先度情報６１と、ＰＣＩｅに関する優先度情報６２とを含む。この図２において、優先度関係情報６は、ＰＣＩｅ規格に関する複数のバーチャルチャネルＶＣ０〜ＶＣ４と、ＮＶＭｅに関する複数の優先度とを関係付けている。
【００６０】
コントローラ７は、メモリ８から優先度関係情報６をリードすることにより、通信情報の送受信に使用されたバーチャルチャネルに対応するＮＶＭｅに関する優先度を認識可能である。また、コントローラ７は、メモリ８から優先度関係情報６をリードし、ＮＶＭｅに関する優先度を認識した場合に、当該ＮＶＭｅに関する優先度に対応するバーチャルチャネルを認識可能である。
【００６１】
ＮＶＭｅに関する優先度情報６１は、ＷＲＲＵＰＣＡに使用される優先度であり、例えば、Low priority、Medium priority、High priority、Urgent priority、Adminという優先度を含む。これらの優先度の大小関係は、例えば、Low priority＜Medium priority＜High priority＜Urgent priority＜Adminである。
【００６２】
ＰＣＩｅに関する優先度情報６２は、ＰＣＩｅ規格で定義される各バーチャルチャネルＶＣ０〜ＶＣ４の優先度に準拠する。図２において、ＰＣＩｅに関する優先度情報６２は、例えばＶＣ０の優先度＜ＶＣ１の優先度＜ＶＣ２の優先度＜ＶＣ３の優先度＜ＶＣ４の優先度という大小関係を持つ。
【００６３】
優先度関係情報６は、Low priorityとＶＣ０とを関係付けており、Medium priorityとＶＣ１とを関係付けており、High priorityとＶＣ２とを関係付けており、Urgent priorityとＶＣ３とを関係付けており、AdminとＶＣ４とを関係付けている。
【００６４】
コントローラ７では、優先度が大きい通信情報ほど、優先度が小さい通信情報よりも先に送受信及び処理される。これにより、ＱｏＳを向上させることができる。
【００６５】
なお、図２の優先度関係情報６は例示であり、適宜変更可能である。例えば、ＮＶＭｅに関する優先度情報６１の１項目に対して、複数のバーチャルチャネルが関係付けられてもよい。１つのバーチャルチャネルに対して、ＮＶＭｅに関する優先度情報６１の複数の項目が関係付けられてもよい。
【００６６】
ＰＣＩｅコントローラ１１は、ＰＣＩｅに関する優先度情報６２に基づいて、優先度が相対的に高い通信情報ほど、優先的に処理（例えば、通信情報の送信又は受信）するためのスケジューリングを実行する。
【００６７】
ＮＶＭｅコントローラ１２は、ＮＶＭｅに関する優先度情報６１に基づいて、優先度が相対的に高い通信情報ほど、優先的に処理（例えば、コマンドのフェッチ、ＰＲＰのフェッチ、ユーザデータの伝送、コンプリーションの発行など）するためのスケジューリングを実行する。
【００６８】
図３は、本実施形態に係る情報処理システム１Ａの起動時に実行される初期化処理の一例を示すシーケンス図である。なお、図３の初期化処理は、起動時に代えて、情報処理装置１とメモリシステム２との通信確立時に実行されるとしてもよい。
【００６９】
情報処理システム１Ａの起動時に初期化処理が実行されると、ステップＳ３０１において、情報処理装置１は、メモリシステム２の能力情報の問い合わせを、メモリシステム２へ送信する。能力情報は、例えば、メモリシステム２におけるバーチャルチャネルのサポート数を含む。
【００７０】
ステップＳ３０２において、メモリシステム２のＰＣＩｅコントローラ１１は、能力情報を情報処理装置１へ送信する。情報処理装置１は、メモリシステム２から能力情報を受信する。
【００７１】
ステップＳ３０３において、情報処理装置１は、メモリシステム２から受信した能力情報に基づいて、情報処理装置１とメモリシステム２との間で使用可能なバーチャルチャネルの数（本実施形態では５つ）を決定する。
【００７２】
図４は、本実施形態に係る情報処理システム１Ａによって実行されるユーザデータ３Ｒのリード処理の一例を示すシーケンス図である。
【００７３】
ステップＳ４０１において、情報処理装置１の通信制御部４Ａは、バーチャルチャネルＶＣ０〜ＶＣ４のうちのいずれかを用いて、メモリシステム２宛てののコマンド通知を、メモリシステム２へ送信する。
【００７４】
ステップＳ４０２において、メモリシステム２のＰＣＩｅコントローラ１１は、情報処理装置１からコマンド通知を受信する。すると、メモリシステム２のＰＣＩｅコントローラ１１は、コマンド通知によりコマンドのＮＶＭｅに関する優先度情報を認識する。ＰＣＩｅコントローラ１１は、認識したＮＶＭｅに関する優先度情報と優先度関係情報６とに基づいて、メモリシステム２がサポートしているバーチャルチャネルＶＣ０〜ＶＣ４の中から、使用すべきバーチャルチャネルを決定する。
【００７５】
以下では、使用すべきバーチャルチャネルとしてバーチャルチャネルＶＣ０が決定された場合を例として説明を行う。なお、メモリシステム２でバーチャルチャネルＶＣ１〜ＶＣ４のいずれかが使用すべきバーチャルチャネルとして決定された場合も、同様である。
【００７６】
ステップＳ４０３において、メモリシステム２のＰＣＩｅコントローラ１１は、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０を用いて、コマンド通知に対応するコマンドリクエストを情報処理装置１へ送信する。
【００７７】
ステップＳ４０４において、情報処理装置１の通信制御部４Ａは、メモリシステム２からコマンドリクエストを受信すると、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０を用いて、コマンドリクエストに対応するコマンドをメモリシステム２へ送信する。
【００７８】
ステップＳ４０５において、メモリシステム２のＰＣＩｅコントローラ１１は、情報処理装置１から受信したコマンドを、バーチャルチャネルＶＣ０に対応するバッファメモリ１１０に格納させる。ＮＶＭｅコントローラ１２は、バッファメモリ１１０に格納されたコマンドを、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０に対応するキュー回路１３０に格納させる。上記のステップＳ４０３〜Ｓ４０５における処理は、例えばＮＶＭｅコントローラ１２のコマンドフェッチに相当する。
【００７９】
ステップＳ４０６において、メモリシステム２のＮＶＭｅコントローラ１２は、アービトレーション部１３の制御にしたがって、キュー回路１３０に格納されているコマンドの解釈を行う。
【００８０】
ステップＳ４０７において、メモリシステム２のＰＣＩｅコントローラ１１は、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０を用いて、解釈されたコマンドに対応するＰＲＰリクエストを情報処理装置１へ送信する。
【００８１】
ステップＳ４０８において、情報処理装置１の通信制御部４Ａは、メモリシステム２からＰＲＰリクエストを受信すると、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０を用いて、ＰＲＰリクエストに対応するＰＲＰ５をメモリシステム２へ送信する。
【００８２】
ステップＳ４０９において、メモリシステム２のＰＣＩｅコントローラ１１は、情報処理装置１から受信したＰＲＰ５を、バーチャルチャネルＶＣ０に対応するバッファメモリ１１０に格納させる。ＮＶＭｅコントローラ１２は、バッファメモリ１１０に格納されたＰＲＰ５を、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０に対応するキュー回路１３０に格納させる。上記のステップＳ４０７〜Ｓ４０９における処理は、例えばＮＶＭｅコントローラ１２のＰＲＰフェッチに相当する。
【００８３】
ステップＳ４１０において、メモリシステム２のＮＶＭｅコントローラ１２は、アービトレーション部１３の制御にしたがって、キュー回路１３０に格納されているＰＲＰの解釈を行う。
【００８４】
ステップＳ４１１において、メモリシステム２のコントローラ７は、ＰＲＰの解釈の結果に基づいて、不揮発性メモリ１０からユーザデータ３Ｒをリードし、バッファメモリ１１０に格納させる。
【００８５】
ステップＳ４１２において、メモリシステム２のＰＣＩｅコントローラ１１は、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０を用いて、バッファメモリ１１０に格納されているユーザデータ３Ｒを、情報処理装置１へ送信する。
【００８６】
ステップＳ４１３において、メモリシステム２のＮＶＭｅコントローラ１２は、コンプリーションをバッファメモリ１１０に格納させる。メモリシステム２のＰＣＩｅコントローラ１１は、ステップＳ４０２において決定されたバーチャルチャネルＶＣ０を用いて、バッファメモリ１１０に格納されているコンプリーションを、情報処理装置１へ送信する。このステップＳ４１３における処理は、例えばＮＶＭｅコントローラ１２のコンプリーションの発行に相当する。
【００８７】
図５は、本実施形態に係る情報処理システム１Ａによって実行されるユーザデータ３Ｗのライト処理の一例を示すシーケンス図である。
【００８８】
ステップＳ５０１からステップＳ５１０までの処理は、上記図４のステップＳ４０１からステップＳ４１０までと同様であるため、説明を省略する。
【００８９】
ステップＳ５１１において、メモリシステム２のＰＣＩｅコントローラ１１は、ステップＳ５０２において決定されたバーチャルチャネルＶＣ０を用いて、ライトデータリクエストを情報処理装置１へ送信する。
【００９０】
ステップＳ５１２において、情報処理装置１の通信制御部４Ａは、メモリシステム２からライトデータリクエストを受信すると、ライトデータリクエストに対応するユーザデータ３Ｗをメモリ３からリードし、ユーザデータ３Ｗをメモリシステム２へ送信する。
【００９１】
ステップＳ５１３において、メモリシステム２のＰＣＩｅコントローラ１１は、情報処理装置１から受信したユーザデータ３Ｗを、バーチャルチャネルＶＣ０に対応するバッファメモリ１１０に格納させる。ＮＶＭｅコントローラ１２は、バッファメモリ１１０に格納されたユーザデータ３Ｗを、ステップＳ５０２において決定されたバーチャルチャネルＶＣ０に対応するキュー回路１３０に格納させる。
【００９２】
ステップＳ５１４において、メモリシステム２のＮＶＭｅコントローラ１２は、アービトレーション部１３の制御にしたがって、キュー回路１３０に格納されているユーザデータ３Ｗを、バックエンド７Ｂ、リード／ライトコントローラ９経由で、不揮発性メモリ１０にライトする。
【００９３】
ステップＳ５１５において、メモリシステム２のＮＶＭｅコントローラ１２は、コンプリーションをバッファメモリ１１０に格納させる。メモリシステム２のＰＣＩｅコントローラ１１は、ステップＳ５０２において決定されたバーチャルチャネルＶＣ０を用いて、バッファメモリ１１０に格納されているコンプリーションを、情報処理装置１へ送信する。
【００９４】
図６は、本実施形態に係るメモリシステム２によって実行されるリード処理の一例を示すシーケンス図である。図６は、上記図４のステップＳ４１１に対応する。図６では、説明を簡略化するために、リード／ライトコントローラ９及び不揮発性メモリ１０を１つのブロック９−１０でまとめて記載している。図６に関する以下の説明では、説明を簡略化するために、バーチャルチャネルＶＣ０と当該バーチャルチャネルＶＣ０に関係する構成要素を主に説明し、バーチャルチャネルＶＣ１〜ＶＣ４と当該バーチャルチャネルＶＣ１〜ＶＣ４に関係する構成要素に関しては説明を省略する。
【００９５】
ステップＳ６０１において、ＮＶＭｅコントローラ１２は、ＰＲＰの解釈結果に基づいて、バックエンド７Ｂへリードを指示する。
【００９６】
ステップＳ６０２において、バックエンド７Ｂは、ＮＶＭｅコントローラ１２からのリードの指示に基づいて、リード／ライトコントローラ９に対してリードを指示する。
【００９７】
ステップＳ６０３において、リード／ライトコントローラ９は、決定されたバーチャルチャネルＶＣ０に対応する不揮発性メモリ１０の領域１００からユーザデータ３Ｒをリードする。
【００９８】
ステップＳ６０４において、リード／ライトコントローラ９は、ユーザデータ３Ｒをバックエンド７Ｂへ送信する。
【００９９】
ステップＳ６０５において、バックエンド７Ｂは、リード／ライトコントローラ９から受信したユーザデータ３Ｒを、決定されたバーチャルチャネルＶＣ０に対応するメモリ１６の領域１６０に格納させる。
【０１００】
ステップＳ６０６において、ＮＶＭｅコントローラ１２のＤＭＡ部１４０は、優先度関係情報６に基づくスケジューリングにしたがって、メモリ１６の領域１６０に格納されているユーザデータ３Ｒをリードする。
【０１０１】
ステップＳ６０７において、ＤＭＡ部１４０は、メモリ１６の領域１６０からリードしたユーザデータ３Ｒを、決定されたバーチャルチャネルＶＣ０に対応するＰＣＩｅコントローラ１１のバッファメモリ１１０に格納させる。
【０１０２】
図７は、本実施形態に係るメモリシステム２によって実行されるライト処理の一例を示すシーケンス図である。図７は、上記図５のステップＳ５１４に対応する。図７では、説明を簡略化するために、リード／ライトコントローラ９及び不揮発性メモリ１０を１つのブロック９−１０でまとめて記載している。図７に関する以下の説明では、説明を簡略化するために、バーチャルチャネルＶＣ０と当該バーチャルチャネルＶＣ０に関係する構成要素を主に説明し、バーチャルチャネルＶＣ１〜ＶＣ４と当該バーチャルチャネルＶＣ１〜ＶＣ４に関係する構成要素に関しては説明を省略する。
【０１０３】
ステップＳ７０１において、ＮＶＭｅコントローラ１２は、アービトレーション部１３の制御にしたがって、バックエンド７Ｂへライトを指示する。ＤＭＡ部１４０は、決定されたバーチャルチャネルＶＣ０に対応するキュー回路１３０からユーザデータ３Ｗを取得し、決定されたバーチャルチャネルＶＣ０に対応するメモリ１６の領域１６０へユーザデータ３Ｗを転送する。
【０１０４】
ステップＳ７０２において、バックエンド７Ｂは、ＮＶＭｅコントローラ１２からのライトの指示に基づいて、リード／ライトコントローラ９に対してライトを指示し、領域１６０に格納されたユーザデータ３Ｗをリード／ライトコントローラ９へ送信する。
【０１０５】
ステップＳ７０３において、リード／ライトコントローラ９は、決定されたバーチャルチャネルＶＣ０に対応する不揮発性メモリ１０の領域１００へユーザデータ３Ｗをライトする。
【０１０６】
ステップＳ７０４において、リード／ライトコントローラ９は、ライト完了通知をバックエンド７Ｂへ送信する。
【０１０７】
ステップＳ７０５において、バックエンド７Ｂは、ライト完了通知をＮＶＭｅコントローラ１２へ送信する。
【０１０８】
以上説明した本実施形態に係る情報処理システム１Ａによって得られる効果を説明する。
本実施形態においては、メモリシステム２がＮＶＭｅに関する優先度情報６１とＰＣＩｅに関する優先度情報６２とを関係付けた優先度関係情報６を管理する。本実施形態では、情報処理装置１とメモリシステム２との間で、ＮＶＭｅ規格で優先度が高く設定された通信情報が、優先度が高いバーチャルチャネルを使用して送受信され、ＮＶＭｅ規格で優先度が低く設定された通信情報が、優先度が低いバーチャルチャネルを使用して送受信される。
【０１０９】
このように、本実施形態に係るメモリシステム２のコントローラ７は、ＮＶＭｅ規格に準拠する通信情報の優先度を、ＰＣＩｅ規格に準拠するネットワーク通信（例えば使用すべきバーチャルチャネルの決定）に反映させることができる。
【０１１０】
本実施形態においては、バーチャルチャネルＶＣ０〜ＶＣ４ごとに、ＮＶＭｅ規格に準拠する優先度の異なる通信情報を送受信することができる。さらに、本実施形態においては、メモリシステム２が情報処理装置１からコマンド通知を受信してから、メモリシステム２が情報処理装置１へコンプリーションを送信するまで、ＰＣＩｅ規格に準拠するバーチャルチャネルＶＣ０〜ＶＣ４と関係付けてＮＶＭｅ規格に準拠する処理が実行される。このため、メモリシステム２のＱｏＳを向上させることができる。
【０１１１】
本実施形態においては、バックエンド７Ｂのプロセッサ１５が優先度に応じてメモリ１６の領域１６０〜１６４を使い分けることにより、不揮発性メモリ１０に対して優先度に応じた例えばライト又はリードの処理を実現することがでる。
【０１１２】
本実施形態においては、不揮発性メモリ１０の領域１００〜１０４を、例えばネームスペースなどを用いて独立に管理可能であり、バーチャルチャネルＶＣ０〜ＶＣ４の優先度とネームスペースに対応して不揮発性メモリ１０に対するライト又はリードを実行することができる。
【０１１３】
以上のように、本実施形態に係るメモリシステム２のコントローラ７においては、ＰＣＩｅ規格に準拠するバーチャルチャネルＶＣ０〜ＶＣ４を用いた通信と、ＮＶＭｅ規格に準拠する通信情報に対する優先順位を関連付けることができ、メモリシステム２を備えるネットワーク環境及びメモリシステム２で実行される処理のＱｏＳを向上させることができる。
【０１１４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１５】
１Ａ…情報処理システム、１…情報処理装置、２…メモリシステム、３，８，１６…メモリ、４，１５…プロセッサ、４Ａ…通信制御部、４Ｂ…チップセット、５…ＰＲＰ、ＳＷ…ソフトウェア、６…優先度関係情報、７…コントローラ、７Ｆ…フロントエンド、７Ｂ…バックエンド、９…リード／ライトコントローラ、１０…不揮発性メモリ、１１…ＰＣＩｅコントローラ、１１０〜１１４…バッファメモリ、１２…ＮＶＭｅコントローラ、１３…アービトレーション部、１３０〜１３４…キュー回路、１４０〜１４４…ＤＭＡ部、１００〜１０４，１６０〜１６４…領域、ＶＣ０〜ＶＣ４…バーチャルチャネル。
【図１】
2020154697.tif 000003
【図２】
2020154697.tif 000004
【図３】
2020154697.tif 000005
【図４】
2020154697.tif 000006
【図５】
2020154697.tif 000007
【図６】
2020154697.tif 000008
【図７】
2020154697.tif 000009