JP2023082442A - 情報処理システム及びメモリシステム - Google Patents
情報処理システム及びメモリシステム Download PDFInfo
- Publication number
- JP2023082442A JP2023082442A JP2021196219A JP2021196219A JP2023082442A JP 2023082442 A JP2023082442 A JP 2023082442A JP 2021196219 A JP2021196219 A JP 2021196219A JP 2021196219 A JP2021196219 A JP 2021196219A JP 2023082442 A JP2023082442 A JP 2023082442A
- Authority
- JP
- Japan
- Prior art keywords
- network
- memory
- processing
- processing unit
- tag information
- 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/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1012—Load balancing
-
- 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/0604—Improving or facilitating administration, e.g. storage management
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)
- Computer And Data Communications (AREA)
- Memory System (AREA)
Abstract
【課題】消費電力を低減することが可能な情報処理システム及びメモリシステムを提供することにある。【解決手段】実施形態によれば、ホスト装置は、コマンドにおいて指定されているメモリチップ内の位置に基づいてタグ情報を生成し、ネットワークパケットをメモリシステムに送信する。メモリシステムは、ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラを含む。コントローラは、ネットワークパケットのヘッダからタグ情報を抽出し、複数の第1処理部のうちの1つに第1処理を実行させる。ネットワークパケットに格納されているコマンドに対する第2処理は、第1処理を実行した第1処理部に対応する第2処理部によって実行される。【選択図】図3
Description
本発明の実施形態は、情報処理システム及びメモリシステムに関する。
近年では、ホスト装置がネットワークを介して不揮発性メモリを備えるメモリシステム(ストレージ装置)利用することが可能な情報処理システム(ネットワークストレージシステム)が知られている。
しかしながら、上記したメモリシステムにおいては、ホスト装置からのコマンドに対する処理を実行するために当該メモリシステムに備えられるDRAMを利用しなければならず、DRAMへのアクセスに伴い、メモリシステムにおける消費電力が増大する。
そこで、本発明が解決しようとする課題は、消費電力を低減することが可能な情報処理システム及びメモリシステムを提供することにある。
実施形態によれば、ホスト装置と、ネットワークを介して前記ホスト装置によって利用される複数のメモリチップを含む第1メモリを備えるメモリシステムとを具備する情報処理システムが提供される。前記ホスト装置は、前記メモリチップ内の位置が指定されたコマンドを生成する第1生成部と、前記生成されたコマンドにおいて指定されているメモリチップ内の位置に基づいてタグ情報を生成する第2生成部と、前記生成されたコマンドを格納するペイロードと前記生成されたタグ情報を格納するヘッダとを含むネットワークパケットを前記ネットワークを介して前記メモリシステムに送信する送信部とを含む。前記メモリシステムは、前記ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラを含む。前記コントローラは、前記送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部とを含む。前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される。
以下、図面を参照して、実施形態について説明する。
図1は、本実施形態に係る情報処理システムの構成の一例を示す。図1に示すように、情報処理システム1は、ホスト装置2及びメモリシステム3を備える。
図1は、本実施形態に係る情報処理システムの構成の一例を示す。図1に示すように、情報処理システム1は、ホスト装置2及びメモリシステム3を備える。
本実施形態において、ホスト装置2及びメモリシステム3は、ネットワーク4を介して接続される。すなわち、情報処理システム1は、ネットワーク4を介してホスト装置2がメモリシステム3を利用することが可能なネットワークストレージシステムに相当する。
ホスト装置2は、CPU21、メモリ22及びNIC(Network Interface Card)23等を備える。
CPU21は、ホスト装置2全体の動作を制御し、当該ホスト装置2がメモリシステム3に対してホストとして動作するための各種処理を実行する。
メモリ22は、メモリシステム3に書き込まれるデータ及びメモリシステム3から読み出されたデータ等を一時的に格納(保存)するために用いられる。
NIC23は、ネットワーク4を介してホスト装置2がメモリシステム3を利用するためのネットワークインタフェースとして動作する。
メモリシステム3は、不揮発性メモリにデータを書き込み、当該不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。本実施形態においては、メモリシステム3が例えばソリッドステートドライブ(SSD:Solid State Drive)として実現されているものとして説明する。
メモリシステム3は、コントローラ31、NAND型フラッシュメモリ32及びDRAM33等を備える。
コントローラ31は、メモリシステム3の動作を司る機能を有し、ホスト装置2から受信されるコマンドに対する処理を含む各種処理を実行するために、NAND型フラッシュメモリ32及びDRAM33を制御する。なお、ホスト装置2から受信されるコマンドには、メモリシステム3(NAND型フラッシュメモリ32)にデータを書き込むための書き込みコマンド及びメモリシステム3(NAND型フラッシュメモリ32)からデータ読み出すための読み出しコマンド等が含まれる。
NAND型フラッシュメモリ32は、不揮発性メモリであり、複数のNANDチップ32-1~32-n(nは、2以上の整数)を含む。このようにNAND型フラッシュメモリ32が複数のNANDチップ32-1~32-nを含む場合には、当該NAND型フラッシュメモリ32に対する並列処理が可能となる。NAND型フラッシュメモリ32は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
なお、NAND型フラッシュメモリ3に含まれる複数のNANDチップ32-1~32-nの各々は、複数のメモリセル(記憶素子)を含むメモリセルアレイを有する。このメモリセルアレイは、複数のブロックを含む。メモリセルアレイに含まれるブロックの各々は、複数のページを含む。複数のブロックの各々は、消去単位として機能する。複数のページの各々は、データ書き込み動作及びデータ読み出し動作の単位であり、同一ワード線に接続された複数のメモリセルを含む。
ここではメモリシステム3が不揮発性メモリとしてNAND型フラッシュメモリを備えるものとして説明したが、当該不揮発性メモリは、PCM(Phase Change Memory)またはMRAM(Magnetoresistive Random Access Memory)等であってもよい。
DRAM33は、揮発性メモリであり、例えばコントローラ31が各種処理を実行する際に利用される一時的なバッファ等として機能する。
ここではメモリシステム3が揮発性メモリとしてDRAM33を備えるものとして説明したが、当該メモリシステム3は、例えばコントローラ31の内部にSRAM(Static Random Access Memory)等の揮発性メモリを更に備えているものとする。
なお、図1においては、便宜的に、1つのホスト装置2と1つのメモリシステム3とがネットワーク4を介して接続されているが、本実施形態に係る情報処理システム1は複数のホスト装置2及び複数のメモリシステム3を備えており、当該複数のホスト装置2及び複数のメモリシステム3が1つまたは複数のネットワークスイッチ(図示せず)を介して接続されていてもよい。なお、ネットワークスイッチは、スイッチング機能を搭載したネットワーク機器であり、効率的なデータ転送を実現するために用いられる。
また、本実施形態においては、ホスト装置2とメモリシステム3とを相互接続するためのインタフェースとして、例えばNVMe-oF(NVMe over Fabric)が使用されるものとする。NVMe-oFによれば、ホスト装置2とメモリシステム3(ストレージ装置)との間の接続の高速化及び効率化を実現することができる。更に、本実施形態において、MVMe-oFは例えばTCPベースのネットワーク上で動作するNVMe TCP Transport Bindingの規格に則ったものとし、ホスト装置2とメモリシステム3との間ではTCP/IPの規定に基づく通信が実行されるものとする。
ここで、上記した情報処理システム1においてホスト装置2がメモリシステム3を利用する(つまり、ホスト装置2がメモリシステム3にデータを書き込むまたはホスト装置2がメモリシステム3からデータ読み出す)場合には、当該ホスト装置2からメモリシステム3に対して、当該ホスト装置2において生成(発行)されたコマンドを含むネットワークパケットがネットワーク4を介して送信される。
このようにホスト装置2から送信されたネットワークパケットがメモリシステム3において受信された場合、メモリシステム3は、当該ネットワークパケットの受信に関する処理(以下、ネットワーク処理と表記)を実行する必要がある。このネットワーク処理には、例えばネットワークパケットに対するTCP/IPの規定に基づく処理(つまり、ネットワークレイヤ及びトランスポートレイヤの処理)等が含まれる。
このネットワーク処理の処理量はメモリシステム3において実行される他の処理と比較して少ないため、例えば通信速度が10または100Mbps程度であり、当該ネットワークパケットを受信する頻度が比較的低い環境下においては、単一のCPUまたは複数のCPUの中の特定のCPU(以下、単に単一のCPUと表記)でネットワーク処理の全てを担当したとしても、当該ネットワーク処理がボトルネックとなることはない。
しかしながら、通信速度が1Gbpsを超えるような環境下において単一のCPUでネットワーク処理の全てを担当すると、当該ネットワーク処理がボトルネックとなり、ホスト装置2において生成されたコマンドに対する処理を効率的に実行することができない。
このため、例えばReceive Side Scaling(RSS)と称される技術を適用することにより、ネットワーク処理(による負荷)を複数のCPUに分散することが考えられる。
以下、図2を参照して、本実施形態の比較例に係るメモリシステムの概要について説明する。本実施形態の比較例に係るメモリシステム3´は、ネットワークを介してホスト装置2´と接続され、上記したネットワーク処理を複数のCPUに分散する構成を有しているものとする。
なお、図2においてはネットワークパケットの受信に関するメモリシステム3´の構成及び動作について説明し、他の構成及び動作についての説明を省略する。
まず、ホスト装置2´がメモリシステム3´を利用する場合、当該ホスト装置2´は、コマンド(NVMe-oFコマンド)を生成し、当該コマンドを格納するペイロードと、IPアドレス及びTCPポート番号等を格納するヘッダとを含むネットワークパケット(つまり、当該ペイロードに当該ヘッダが付加されたネットワークパケット)をメモリシステム3´に送信する。
なお、ネットワークパケットに含まれるヘッダに格納されるIPアドレスは当該ネットワークパケットの送信元であるホスト装置2´に割り当てられている送信元IPアドレス及び当該ネットワークパケットの送信先であるメモリシステム3´に割り当てられている送信先IPアドレス等を含み、当該ヘッダに格納されるTCPポート番号はTCPにおいて用いられる識別番号(例えば、通信先で動作するアプリケーションプログラムを特定するための番号)である。
上記したようにホスト装置2´から送信されたネットワークパケットは、メモリシステム3´において受信される。
図2に示すように、メモリシステム3´は、コントローラ31´、NAND型フラッシュメモリ32´及びDRAM33´を備える。また、コントローラ31´は、情報抽出部311´、分散処理部312´、複数のネットワークキュー313´-1~313´-m、複数の第1CPU314´-1~314´-m及び複数の第2CPU315´-1~315´-nを備える。なお、NAND型フラッシュメモリ32´は、複数のNANDチップ32´-1~32´-nを含むものとする。
情報抽出部311´は、ホスト装置2´から受信されたネットワークパケットに含まれるヘッダからIPアドレス及びTCPポート番号等の情報を抽出し、当該抽出された情報を分散処理部312´に渡す。なお、情報抽出部311´から分散処理部312´に渡される情報は、IPアドレス及びTCPポート番号自体であってもよいし、当該IPアドレス及びTCPポート番号の少なくとも一部から一意に決定される値(例えば、ハッシュ値等)であってもよい。
分散処理部312´は、情報抽出部311´から渡された情報に基づいて、複数の第1CPU314´-1~314´-m(mは、2以上の整数)のうち、ネットワーク処理を実行(担当)させる1つの第1CPUを選択(決定)する負荷分散処理を実行する。このような負荷分散処理によれば、例えば情報抽出部311´から渡された情報、例えばIPアドレス及びTCPポート番号に基づいて特定の第1CPUを一意に選択してネットワーク処理を担当させることで、同一ホスト装置からの同一アプリケーションプログラムからのアクセスが同じ第1CPUで連続して処理される可能性が高くなること、及び、同一アプリケーションの実行時におけるプログラム及びデータの局所性により、当該第1CPUにおけるキャッシュのヒット率を向上させ、当該第1CPUの処理能力を向上させることができると考えられる。
ここでは分散処理部312´が情報抽出部311´から渡された情報に基づいてネットワーク処理を実行させる第1CPUを選択するものとして説明したが、分散処理部312´は、例えば複数の第1CPU314´-1~314´-mの各々に順番にネットワーク処理を実行させるようにしてもよい。このような構成の場合には、情報抽出部311´は省略されても構わない。
複数のネットワークキュー313´-1~313´-mは、分散処理部312´から複数の第1CPU314´-1~314´-mにネットワークパケットを受け渡す(転送する)ためのキューである。なお、複数のネットワークキュー313´-1~313´-mは、複数の第1CPU314´-1~314´-mに対応している。
これによれば、例えば分散処理部312´によって第1CPU314´-1が選択された場合、ネットワークパケットは、第1CPU314´-1に対応するネットワークキュー313´-1に格納される。これによれば、第1CPU314´-1は、ネットワークキュー313´-1からネットワークパケットを受け取ることができる。
ここでは、第1CPU314´-1がネットワークパケットを受け取る場合について説明したが、他の第1CPUについても同様に、当該第1CPUに対応するネットワークキューからネットワークパケットを受け取ることができる。
すなわち、分散処理部312は、負荷分散処理において選択された第1CPUに対応するネットワークキューにネットワークパケットを格納することによって、当該ネットワークパケットを当該第1CPUに受け渡すことができる。
複数の第1CPU314´-1~314´-mは、分散処理部312から受け取られたネットワークパケットに対して上記したネットワーク処理(当該ネットワークパケットの受信に関する処理)を実行するように構成された処理部として機能するCPU(ネットワーク処理用CPU)である。
上記したようにネットワークパケットに対するネットワーク処理が実行された場合、複数の第1CPU314´-1~314´-mは、当該ネットワークパケットに含まれるペイロードに格納されているコマンドを、図示しないDRAMインタフェース(I/F)を介してDRAM33´に格納する。
複数の第2CPU315´-1~315´-nは、例えばNAND型フラッシュメモリ32´のデータ管理及びブロック管理のためのフラッシュトランスレーションレイヤ(FTL)の処理を実行するとともに、NAND型フラッシュメモリ32´に備えられる複数のNANDチップ32´-1~32´-nにアクセスする(NAND型フラッシュメモリ32´に対するNAND制御処理を実行する)ように構成された処理部として機能するCPU(FTL/NAND処理用CPU)である。なお、複数の第2CPU315´-1~315´-nは、例えばToggle等のNANDチップインタフェース(図示せず)を介してNANDチップ32´-1~32´-nにアクセスするものとする。また、複数の第2CPU315´-1~315´-nは、NAND型フラッシュメモリ32´に含まれる複数のNANDチップ32´-1~32´-nに対応している。
上記したように複数の第1CPU314´-1~314´-mによってコマンドがDRAM33´に格納された場合、複数の第2CPU315´-1~315´-nは、例えば複数の第1CPU314´-1~314´-mからの通知に従って、上記したDRAMインタフェースを介して当該DRAM33´から当該コマンドを読み出す。複数の第2CPU315´-1~315´-nは、DRAM33´から読み出されたコマンドに対する処理を当該複数の第2CPU315´-1~315´-nに対応するNANDチップに対して実行する。
本実施形態の比較例に係るメモリシステム3´においては、上記したようにホスト装置2´から送信されたネットワークパケットに対するネットワーク処理を複数の第1CPU314´-1~314´-mに分散することができる。
ここで、本実施形態の比較例に係るメモリシステム3´はネットワークパケットに含まれるヘッダに格納されているIPアドレス及びTCPポート番号等を用いてネットワーク処理を分散する構成であり、当該ネットワーク処理の分散(つまり、ネットワーク処理を実行する第1CPU)と、当該ネットワークパケットに含まれるペイロードに格納されているコマンドに対する処理を実行する際にNANDチップにアクセスする第2CPUとの間に関連性はない。
このため、本実施形態の比較例に係るメモリシステム3´においては、第1CPU(つまり、ネットワーク処理用CPU)からコマンドが受け渡される第2CPU(つまり、FTL/NAND処理用CPU)を、上記した負荷分散処理が実行される時点で特定することはできない。この場合、複数の第1CPU314´-1~314´-mの各々によってネットワーク処理が実行された後にコマンドを一旦DRAM33´のような大きなデータ領域を有するメモリ空間に退避させて、複数の第2CPU315´-1~315´-nの各々が当該コマンドを当該DRAM33´から読み出すという動作が必要となる。
メモリシステム3´はサーバ装置等と比較すると限られた資源(DRAM領域、帯域幅及び消費電力等)の中で処理を行う必要があるところ、上記したような動作によれば、DRAM33´へのアクセス(つまり、複数の第1CPU314´-1~314´-mから複数の第2CPU315´-1~315´-nへの煩雑なデータの受け渡し)により、当該メモリシステム3´における消費電力が増大する。
そこで、本実施形態においては、ホスト装置2がネットワーク4を介してメモリシステム3を利用する情報処理システム1における当該メモリシステム3の消費電力を低減する構成を実現する。
図3は、本実施形態に係る情報処理システム1に備えられるホスト装置2及びメモリシステム3の構成の一例を示す。
図3に示すように、ホスト装置2は、コマンド生成部211、タグ生成部212及び通信処理部213を含む。本実施形態において、コマンド生成部211、タグ生成部212及び通信処理部213の一部または全ては、図1に示すホスト装置2に備えられるCPU21が所定のプログラムを実行すること(つまり、ソフトウェア)によって実現されるが、IC(Integrated Circuit)のようなハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
なお、ホスト装置2がメモリシステム3を利用する場合には、例えばホスト装置2において指定された論理アドレス(当該ホスト装置2がメモリシステム3にアクセスする際に使用する論理アドレス)を物理アドレス(NAND型フラッシュメモリ32にアクセスする際の当該NAND型フラッシュメモリ32に備えられるNANDチップ内の物理的な位置)に変換することによって適切なNANDチップにアクセスすることができる。本実施形態においては、このような論理アドレスを物理アドレスに変換する処理がメモリシステム3で実行されるのではなく、当該論理アドレスから変換された物理アドレスがホスト装置2で指定されるものとする。この場合、ホスト装置2が論理アドレスを物理アドレスに変換するテーブル(図示せず)を保持しており、当該ホスト装置2が当該テーブルを参照することによって論理アドレスを物理アドレスに変換する処理を実行すればよい。
コマンド生成部211は、上記した物理アドレス(つまり、NANDチップ内の物理的な位置)が指定されたコマンドを生成する。
タグ生成部212は、コマンド生成部211によって生成されたコマンドにおいて指定されている物理アドレスに基づいてタグ情報を生成する。
通信処理部213は、コマンド生成部211によって生成されたコマンドを格納するペイロードとタグ生成部212によって生成されたタグを格納するヘッダとを含むネットワークパケットを生成し、当該ネットワークパケットをメモリシステム3に送信する。なお、ネットワークパケットに含まれるヘッダには、上記した本実施形態の比較例において説明したIPアドレス及びTCPポート番号等が更に格納されている。
図3に示すように、メモリシステム3は、ホスト装置2から送信されたネットワークパケットを受信する処理を実行するように構成されたネットワーク受信部と、FTLの処理及びNAND制御処理を実行するように構成されたFTL/NAND処理部とを備える。
ネットワーク受信部は、情報抽出部311、分散処理部312、複数の第1キュー313-1~313-n及び複数の第1CPU314-1~314-nを備える。FTL/NAND処理部は、複数の第2CPU315-1~315-nを備える。
なお、図3に示す情報抽出部311、分散処理部312、複数の第1キュー313-1~313-n、複数の第1CPU314-1~314-n及び複数の第2CPU315-1~315-nは上記した図2に示す情報抽出部311´、分散処理部312´、複数のネットワークキュー313´-1~313´-m、複数の第1CPU314´-1~314´-m及び複数の第2CPU315´-1~315´-nに対応しているが、以下の説明では、上記した本実施形態の比較例と異なる点について主に述べる。
また、本実施形態において、メモリシステム3は、上記したネットワーク受信部とNAND処理部の間に配置された複数の第2キュー316-1~316-nを更に備える。
なお、上記した本実施形態の比較例においては説明を省略したが、メモリシステム3は、物理レイヤ処理部(PHY)317、DRAMインタフェース318、ネットワーク送信部319及び第3キュー320を更に備える。
上記したようにホスト装置2(通信処理部213)からネットワークパケットが送信された場合、物理レイヤ処理部317は、当該ネットワークパケットに対する物理レイヤの処理を実行し、当該ネットワークパケットをネットワーク受信部に受け渡す。なお、物理レイヤ処理部317は、上記したネットワークスイッチと接続されることを想定している。
情報抽出部311は、物理レイヤ処理部317から受け渡されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出し、当該抽出された情報を分散処理部312に渡す。
分散処理部312は、情報抽出部311によって抽出されたタグ情報に基づいて、複数の第1CPU314-1~314-nのうち、物理レイヤ処理部317から受け渡されたネットワークパケットに対するネットワーク処理を実行させる1つの第1CPUを選択(決定)する負荷分散処理を実行する。
複数の第1キュー313-1~313-nは、分散処理部312から複数の第1CPU314-1~314-nにネットワークパケットを受け渡す(転送する)ためのキューである。なお、複数の第1キュー313-1~313-nは、複数の第1CPU314-1~314-nに対応している。
これによれば、例えば分散処理部312によって第1CPU314-1が選択された場合、ネットワークパケットは、第1CPU314-1に対応する第1キュー313-1に格納される。この場合、第1CPU314-1は、第1キュー313-1からネットワークパケットを受け取ることができる。
ここでは、第1CPU314-1がネットワークパケットを受け取る場合について説明したが、他の第1CPUについても同様に、当該第1CPUに対応する第1キューからネットワークパケットを受け取ることができる。
複数の第1CPU314-1~314-n(ネットワーク処理用CPU)は、分散処理部312から受け取られたネットワークパケットに対して上記したネットワーク処理を実行する。
複数の第2CPU315-1~315-nは、上記したFTLの処理及びNAND型フラッシュメモリ32に対するNAND制御処理を実行する。
複数の第2キュー316-1~316-nは、ネットワーク処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドを、第1CPU314-1~314-nから複数の第2CPU315-1~315-nに受け渡す(転送する)ためのキューである。なお、複数の第2キュー316-1~316-nは、複数の第1CPU314-1~314-nに対応しており、かつ、複数の第2CPU315-1~315-nに対応している。換言すれば、複数の第2CPU315-1~315-nは、複数の第2キュー316-1~316-nを介して、複数の第1CPU314-1~314-nに対応している。
これによれば、例えば第1CPU314-1によってネットワーク処理が実行された場合、当該ネットワーク処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドは、第1CPU314-1に対応する第2キュー316-1に格納される。この場合、第2CPU315-1は、第2キュー316-1(第1CPU314-1)からコマンドを受け取ることができる。
上記したように第2キュー316-1からコマンドが受け取られた場合、第2CPU315-1は、当該コマンドに対する処理をNANDチップ32-1に対して実行する。
ここでは、便宜的に、第1CPU314-1、第2CPU315-1、第2キュー316-1及びNANDチップ32-1について説明したが、他の第1CPU、第2CPU、第2キュー及びNANDチップについても同様である。
なお、ホスト装置2(コマンド生成部211)において生成されるコマンドには例えば書き込みコマンド及び読み出しコマンド等が含まれるが、例えば書き込みコマンドがホスト装置2において生成された場合、複数の第2CPU315-1~315-nは、当該書き込みコマンドに基づいて当該第2CPUに対応するNANDチップにデータを書き込む処理を実行する。また、例えば読み出しコマンドがホスト装置2において生成された場合、複数の第2CPU315-1~315-nは、当該読み出しコマンドに基づいて当該第2CPUに対応するNANDチップからデータを読み出す処理を実行する。
DRAMインタフェース318は、DRAM33を制御するように構成されたDRAM制御回路である。
ネットワーク送信部319は、物理レイヤ処理部317を介して当該ホスト装置2にネットワークパケットを送信する処理を実行するように構成されている。図3においては省略されているが、ネットワーク送信部319は、ネットワークパケットを生成する処理等を実行するCPUを備える。ネットワーク送信部319に備えられるCPUは、ネットワーク受信部に備えられる複数の第1CPU314-1~314-nのうちの少なくとも1つであってもよい。換言すれば、ネットワーク受信部とネットワーク送信部とで同一のCPU(ネットワーク処理用CPU)を共有する構成であってもよい。
第3キュー320は、例えばFTL/NAND処理部に備えられる第2CPU315-1~315-nによってNANDチップ32-1~32-nから読み出されたデータをネットワーク送信部319に受け渡す(転送する)ためのキューである。
なお、本実施形態においては情報抽出部311及び分散処理部312が専用の回路等のハードウェアによって実現される場合を想定しているが、当該情報抽出部311及び分散処理部312の一部または全ては、例えばコントローラ31によって所定のプログラムが実行されること(つまり、ソフトウェア)によって実現されてもよいし、ハードウェアとソフトウェアとの組み合わせ構成によって実現されてもよい。
また、複数の第1キュー313-1~313-n、複数の第2キュー316-316-n及び第3キュー320は、DRAM33と比較して省電力でアクセスすることが可能なSRAM(つまり、コントローラ31に搭載されている揮発性メモリ)によって実現される。なお、図3においては複数の第1キュー313-1~313-n、複数の第2キュー316-316-n及び第3キュー320がFIFO形式の独立したキューである場合を想定しているが、複数の第1キュー313-1~313-n、複数の第2キュー316-316-n及び第3キュー320は、共通のメモリ空間においてCPU毎に用意されているリングバッファ等であってもよい。
更に、図3においては複数の第2CPU315-1~315-2の数と複数の第2キュー316-1~316-nの数とが同一である(つまり、第2CPUと第2キューとが1対1に対応している)場合を想定しているが、当該第2CPUと第2キューとは1対複数の関係であってもよい。すなわち、複数の第2キューに格納されたコマンドに対する処理を1つの第2CPUが実行する構成であってもよい。
同様に、図3においては複数の第2CPU315-1~315-nの数と複数のNANDチップ32-1~32-nの数とが同一である(つまり、第2CPUとNANDチップとが1対1に対応している)場合を想定しているが、当該第2CPUとNANDチップとは、1対複数の関係であってもよい。すなわち、1つの第2CPUが複数のNANDチップにアクセスする構成であってもよい。
なお、上記したように第1キューと第1CPUとは1対1に対応しており、第1CPUと第2キューとは1対1に対応しているものとする。
すなわち、本実施形態においては、複数の第1キュー、複数の第1CPU、複数の第2キュー、複数の第2CPU及び複数のNANDチップが、タグ情報(つまり、不揮発性メモリチップ内の位置)からネットワーク処理を担当させる第1CPUを特定できるような対応関係を有していればよい。
以下、本実施形態に係る情報処理システム1(ホスト装置2及びメモリシステム3)の動作について説明する。上記したようにホスト装置2において生成されるコマンドには書き込みコマンド及び読み出しコマンドが含まれるが、以下の説明においては、ホスト装置2において書き込みコマンドが生成される場合の処理(以下、書き込み処理と表記)及びホスト装置2において読み出しコマンドが生成される場合の処理(以下、読み出し処理と表記)について説明する。
まず、図4のシーケンスチャートを参照して、本実施形態における書き込み処理の処理手順の一例について説明する。
ホスト装置2がメモリ22内のデータ(以下、書き込みデータと表記)をメモリシステム3(NAND型フラッシュメモリ32)に書き込む場合、当該ホスト装置2において書き込み処理の要求が発生し、当該ホスト装置2に含まれるコマンド生成部211は、当該要求に応じて書き込みコマンドを生成する(ステップS1)。
なお、ステップS1において生成される書き込みコマンドにおいては、書き込みデータ及び当該書き込みデータが書き込まれるNAND型フラッシュメモリ32に含まれるNANDチップ内の位置を示す物理アドレスが指定されている。具体的には、ステップS1において生成される書き込みコマンドには、書き込みデータが格納されているメモリ22内の領域の位置を示すソースアドレスが含まれる。また、ステップS1において生成される書き込みコマンドには、書き込みデータが書き込まれるNANDチップに割り当てられている番号(以下、チップ番号と表記)及び当該NANDチップ内の位置(に割り当てられているアドレス)を含むデスティネーションアドレス(物理アドレス)が含まれる。
次に、タグ生成部212は、ステップS1において生成された書き込みコマンドに含まれるデスティネーションアドレス(つまり、特定のNANDチップ内の位置)に基づいてタグ情報を生成する(ステップS2)。
なお、ステップS2において生成されるタグ情報は、上記したデスティネーションアドレスに基づいて生成されればよく、例えば当該デスティネーションアドレスに含まれるチップ番号であってもよいし、当該デスティネーションアドレス(つまり、物理アドレス)自体であってもよい。また、タグ情報は、例えばデスティネーションアドレス(物理アドレス)の上位ビットであってもよい。
また、タグ情報は、上記したデスティネーションアドレスの少なくとも一部から一意に決定される値(例えば、ハッシュ値等)であってもよい。
更に、NVMe規格においては、メモリシステム3(SSD)全体のメモリ空間を一定容量のゾーンに分け、用途や使用される周期等が同一のデータを同一のゾーンで管理することにより、メモリシステム3を効率的に活用するZNS(Zoned Namespace)と称される技術がある。タグ情報は、このようなZNSにおいて用いられる番号(ZNS番号)であってもよい。なお、ZNS番号は、上記したデスティネーションアドレスから特定可能である。また、タグ情報は、このZNS番号から一意に決定される値であってもよい。
すなわち、本実施形態におけるタグ情報は、書き込みコマンドにおいて物理的な位置が指定されているNANDチップ(つまり、当該コマンドに基づいてアクセスされるNANDチップ)を特定することが可能な情報であればよい。
次に、通信処理部213は、ステップS1において生成された書き込みコマンド及びステップS2において生成されたタグ情報に基づいて、ネットワークパケット(以下、第1対象パケットと表記)を生成する(ステップS3)。なお、第1対象パケットはペイロード及びヘッダを含むが、ステップS3においては、当該ペイロードに書き込みコマンドが格納され、当該ヘッダにタグ情報が格納された第1対象パケットが生成される。
なお、上記したタグ情報が格納されるヘッダのフィールド(パケットヘッダのフィールド)は、例えばIPv4において規定されているオプションフィールド(IPv4パケットヘッダのオプションフィールド)であってもよいし、IPv6において規定されている拡張ヘッダ(IPv6パケットヘッダの拡張ヘッダ)であってもよい。また、タグ情報が格納されるヘッダのフィールドは、TCPにおいて規定されているオプションフィールド(TCPパケットヘッダのオプションフィールド)であってもよい。
更に、上記したように第1対象パケットに含まれるヘッダにはIPアドレス及びTCPポート番号等が更に格納されるが、当該IPアドレスもしくは、当該TCPポート番号をタグ情報から決定する(例えば、タグ情報からIPアドレスもしくはTCPポート番号を一意に決定できる関数もしくはテーブルを用いて、使用するIPアドレスもしくはTCPポート番号を決定する)ような構成とすることも可能である。この場合には、IPアドレスもしくはTCPポート番号のフィールドの一部にタグ情報を格納するようにしてもよい。なお、この場合には、生成されうるタグの種類(数)に応じて、予めIP通信もしくはTCP接続を確保し、メモリシステム3においてIPアドレスもしくはTCPポート番号からタグ情報を決定するための情報を保持しておく必要がある。例えばタグ情報がチップ番号である場合には、ホスト装置2及びメモリシステム3の間のネットワークを確立するとき(つまり、接続確立時)に予めNAND型フラッシュメモリ32に含まれる複数のNANDチップ32-1~32-nの数に相当するTCPポート番号(つまり、TCP接続)を確保し、当該タグ情報(チップ番号)と当該TCPポート番号との対応関係をホスト装置2とメモリシステム3とで共有しておくものとする。このような対応関係を共有しておけば、メモリシステム3は当該対応関係に基づいて当該タグ情報からTCPポート番号を決定(取得)することができる。
また、ホスト装置2及びメモリシステム3が互いに把握しているのであれば、第1対象パケット(TCPパケット)に含まれるペイロードの先頭に新たなパケットヘッダを追加し、当該ヘッダにタグ情報を格納するようにしてもよい。
ここではタグ情報が格納されるヘッダのフィールドについて説明したが、当該タグ情報は、第1対象パケットに含まれるヘッダ(ネットワークプロトコルに従ったヘッダ)に格納される構成であればよい。
ステップS3の処理が実行されると、通信処理部213は、第1対象パケットをメモリシステム3に送信する(ステップS4)。
ステップS4においてホスト装置2(通信処理部213)から送信された第1対象パケットは、メモリシステム3において受信される。このようにメモリシステム3において受信された第1対象パケットは、コントローラ31に備えられる物理レイヤ処理部317を介して、ネットワーク受信部に渡される。
ネットワーク受信部に備えられる情報抽出部311は、第1対象パケットに含まれるヘッダに格納されているタグ情報を抽出する(ステップS5)。
次に、分散処理部312は、ステップS5において抽出されたタグ情報に基づいて、負荷分散処理を実行する(ステップS6)。
この負荷分散処理において、分散処理部312は、ステップS5において抽出されたタグ情報(例えば、チップ番号)に基づいてNAND型フラッシュメモリ32に含まれる複数のNANDチップ32-1~32-nのうちの1つのNANDチップを特定することができる。
また、複数のNANDチップ32-1~32-nは複数の第2CPU315-1~315-nに対応しているため、分散処理部312は、当該複数の第2CPU315-1~315-nのうち、上記したように特定されたNANDチップに対応する第2CPUを特定することができる。
更に、複数の第2CPU315-1~315-nは複数の第2キュー316-1~316-nに対応しており、当該複数の第2キュー316-1~316-nは複数の第1CPU314-1~314-nに対応しているため、分散処理部312は、上記したように特定された第2CPUに対応する第2キューを特定し、更に、当該第2キューに対応する第1CPUを特定することができる。
ステップS6の負荷分散処理においては、上記したようにタグ情報から特定された第1CPUがネットワーク処理を実行させる第1CPUとして選択される。
ところで、タグ情報がチップ番号であれば上記したように当該チップ番号から特定されるNANDチップからネットワーク処理を実行させる第1CPUを選択することができるが、当該タグ情報がチップ番号でない(つまり、当該チップ番号以外のタグ情報が生成される)場合には、例えばホスト装置2及びメモリシステム3の間のネットワークを確立するときに予めタグ情報とチップ番号との対応関係が定義された変換テーブル(つまり、タグ情報をチップ番号に変換するための変換テーブル)を作成しておくものとする。このような変換テーブルによれば、分散処理部312は、タグ情報をチップ番号に変換することができるため、当該チップ番号を用いて第1CPUを選択することが可能となる。なお、この変換テーブルは、ホスト装置2側で作成されていてもよいし、メモリシステム3側で作成されていてもよい。
ここではタグ情報とチップ番号との対応関係が定義された変換テーブルを予め作成しておくものとして説明したが、タグ情報と当該タグ情報から選択されるべき第1CPUとの対応関係を示す情報(つまり、タグ情報と複数の第1CPU314-1~314-nの各々とを紐づける情報)が分散処理部312内に保持されていてもよい。
更に、例えばホスト装置2(タグ生成部212)が一定の規則に従ってタグ情報を生成する場合には、当該生成されたタグ情報とデスティネーションアドレスに含まれるチップ番号との組み合わせ(対応関係)を一定期間学習することによって生成された学習済みモデルを用いて、分散処理部312が当該タグ情報からチップ番号を推定し、当該チップ番号を用いて第1CPUを選択するような構成を実現することも可能である。
以下の説明においては、上記したステップS6の負荷分散処理において選択された第1CPUを対象第1CPUと称する。
ステップS6の処理が実行されると、分散処理部312は、複数の第1キュー313-1~313-nのうちの対象第1CPUに対応する第1キューに第1対象パケットを格納する。
対象第1CPUは、当該対象第1CPUに対応する第1キューに第1対象パケットが格納されたことを検知し、当該第1キューから受け取られた第1対象パケットに対するネットワーク処理を実行する(ステップS7)。
ここで、第1対象パケットに含まれるペイロードに格納されている書き込みコマンドにはソースアドレス及びデスティネーションが含まれているため、対象第1CPUは、当該ソースアドレスに基づく書き込みデータ(つまり、ソースアドレスによって特定されるメモリ22内の位置に格納されているデータ)の転送をホスト装置2に要求する必要がある。
この場合、ネットワーク送信部319は、物理レイヤ処理部317を介して、書き込みデータの転送をホスト装置2に要求するためのネットワークパケットをホスト装置2に送信する(ステップS8)。なお、このステップS8においてメモリシステム3(ネットワーク送信部319)からホスト装置2に送信されるネットワークパケットは、ホスト装置2に備えられるメモリ22からの書き込みデータの読み出し要求に相当し、上記したソースアドレスを含む。
ステップS8の処理が実行されると、ホスト装置2に含まれる通信処理部213は、当該ステップS8においてメモリシステム3から送信されたネットワークパケットに含まれるソースアドレスに基づいてメモリ22から読み出された書き込みデータがペイロードに格納されたネットワークパケット(以下、第2対象パケットと表記)を生成する(ステップS9)。
なお、第2対象パケットに含まれるヘッダには、上記したステップS2において生成されたタグ情報と同一のタグ情報(つまり、第1対象パケットと同一のタグ情報)が格納されるものとする。
ステップS9の処理が実行されると、上記したステップS4~S7の処理に相当するステップS10~S13の処理が実行される。なお、第2対象パケットに含まれるヘッダに格納されるタグ情報はステップS2において生成されたタグ情報と同一であるため、ステップS12において実行される負荷分散処理においては、上記したステップS6において実行された負荷分散処理において選択された第1CPUと同一の第1CPU(つまり、対象第1CPU)が選択される。
ステップS13のネットワーク処理が実行されると、対象第1CPUは、複数の第2キュー316-1~316-nのうちの当該対象第1CPUに対応する第2キューに、第2対象パケットに含まれるペイロードに格納されている書き込みデータを格納する。
これにより、書き込みデータが格納された第2キューに対応する第2CPU(以下、対象第2CPUと表記)は、当該第2キューに書き込みデータが格納されたことを検知し、上記した書き込みコマンドに対する処理(書き込みデータの書き込み処理)を実行する(ステップS14)。この場合、対象第2CPUは、当該対象第2CPUに対応するNANDチップにアクセスし、第2キューから受け取られた書き込みデータを上記したデスティネーションアドレス(物理アドレス)によって示される当該NANDチップ内の位置に書き込む。また、第2キューから受け取られた書き込みデータに対して、誤り訂正処理やランダマイズ処理等の所定の処理が実行されてもよい。この場合、対象第2CPUは、第2キューから受け取られた書き込みデータに対して所定の処理が実行されたデータを、物理アドレスによって示される当該NANDチップ内の位置に書き込む。すなわち、第2CPUは、第2キューから受け取った書き込みデータに基づくデータを物理アドレスによって示される当該NANDチップ内の位置に書き込む。
図4においては省略されているが、ステップS14の処理が終了された場合には、書き込みコマンドに対する応答として、書き込みデータが正常にNAND型フラッシュメモリ32に書き込まれたことを通知するためのネットワークパケットがネットワーク送信部319からホスト装置2に送信される、これにより、図4に示す書き込み処理は終了する。
なお、図5は、上記した書き込み処理においてホスト装置2からメモリシステム3に送信されるネットワークパケットの概要を示している。
まず、ステップS1においてデスティネーションアドレス501を含む書き込みコマンドが生成された場合、当該デスティネーションアドレス501(及びソースアドレス)を含む書き込みコマンドが格納されたペイロード503aと当該デスティネーションアドレス501に基づいて生成されたタグ情報502が格納されたヘッダ503bとを含むネットワークパケット503がホスト装置2からメモリシステム3に送信される。
また、ステップS9においては書き込みデータを含むネットワークパケットが生成されるが、当該書き込みデータのサイズがTCP/IPにおいて規定されているサイズ(以下、ネットワークパケットの最大サイズと表記)よりも大きい場合には、当該ネットワークパケットの最大サイズに基づいて分割された書き込みデータがペイロードに格納された複数のネットワークパケットが生成される。
図5に示す例では、書き込みデータ601が3つのデータ601a~601bに分割されている。この場合、データ601aがペイロード602aに格納されたネットワークパケット602、データ601bがペイロード603aに格納されたネットワークパケット603及びデータ601cがペイロード604aに格納されたネットワークパケット604の各々がホスト装置2からメモリシステム3に送信されることになる。
なお、上記したネットワークパケット602~604(つまり、ペイロード602a~604a)には、ネットワークパケット503に含まれるヘッダ503b(つまり、デスティネーションアドレス501に基づいて生成されたタグ情報を格納するヘッダ)と同一のヘッダ602b~604bが付加される。
上記した書き込み処理においては、図5において説明したネットワークパケット503及び602~604がホスト装置2からメモリシステム3に送信されることにより、当該ネットワークパケット503のペイロードに格納されている書き込みコマンドに含まれるデスティネーションアドレスに基づいて生成されたタグ情報から適切な第1CPUを選択することができる。また、ネットワークパケット602~604の各々に含まれるペイロードに格納されている書き込みデータはタグ情報から選択された第1CPUから当該第1CPUに対応する第2CPUに第2キューを介して転送され、当該書き込みデータの書き込み処理(つまり、データ601a~601cをNANDチップに書き込む処理)は当該第2CPUによって実行される。
次に、図6のシーケンスチャートを参照して、本実施形態における読み出し処理の処理手順の一例について説明する。
ホスト装置2がNAND型フラッシュメモリ32(に含まれるNANDチップ)に書き込まれたデータ(以下、読み出しデータと表記)を当該NANDチップから読み出す場合、当該ホスト装置2において読み出し処理の要求が発生し、当該ホスト装置2に含まれるコマンド生成部211は、当該要求に応じて読み出しコマンドを生成する(ステップS21)。
なお、ステップS21において生成される読み出しコマンドにおいては、読み出しデータが書き込まれているNAND型フラッシュメモリ32に含まれるNANDチップ内の位置を示す物理アドレスが指定されている。具体的には、ステップS21において生成される読み出しコマンドには、読み出しデータが書き込まれているNANDチップに割り当てられているチップ番号及び当該NANDチップ内の位置(に割り当てられているアドレス)を含むソースアドレス(物理アドレス)が含まれる。
次に、図4に示すステップS2~S7の処理に相当するステップS22~S27の処理が実行される。なお、以下の説明においては、ステップS23において生成されたネットワークパケットを対象パケットと称する。また、ステップS26の負荷分散処理において選択された第1CPUを対象第1CPUと称する。
ここで、対象パケットに含まれるペイロードには読み出しコマンドが格納されており、当該読み出しコマンドに含まれるソースアドレス(物理アドレス)に基づいてNANDチップからデータを読み出す必要がある。
この場合、対象第1CPUは、当該対象第1CPUに対応する第2キューに対象パケットに含まれるペイロードに格納されている読み出しコマンドを格納する。
これにより、読み出しコマンドが格納された第2キューに対応する第2CPU(以下、対象第2CPUと表記)は、当該第2キューに読み出しコマンドが格納されたことを検知し、当該第2キューから受け取られた読み出しコマンドに対する処理(読み出しデータの読み出し処理)を実行する(ステップS28)。この場合、対象第2CPUは、当該対象第2CPUに対応するNANDチップにアクセスし、第2キューから受け取られた読み出しコマンドに含まれるソースアドレス(物理アドレス)によって示される当該NANDチップ内の位置から読み出しデータを読み出す。
上記したように対象第2CPUによってNANDチップから読み出された読み出しデータは、第3キュー320を介して、FTL/NAND処理部(対象第2CPU)からネットワーク送信部319に渡される。この場合、ネットワーク送信部319は、読み出しコマンドに対する応答として、読み出しデータがペイロードに格納されたネットワークパケットを生成し、当該ネットワークパケットをホスト装置2に送信する(ステップS29)。また、NANDチップから読み出された読み出しデータは、当該データに対する誤り訂正処理、ランダマイズの解除処理等の所定の処理が実行された後に、第3キュー320を介して、FTL/NAND処理部(対象第2CPU)からネットワーク送信部319に渡されてもよい。すなわち、対象第2CPUによってNAND型フラッシュメモリ3から読み出されたデータに基づくデータが、第3キュー320を介して、FTL/NAND処理部(対象第2CPU)からネットワーク送信部319に渡されてもよい。
上記した読み出し処理においては、書き込み処理と同様に、読み出しコマンドに含まれるソースアドレスに基づいて生成されたタグ情報から適切な第1CPUを選択することができる。また、ネットワークパケットに含まれるペイロードに格納されている読み出しコマンドはタグ情報から選択された第1CPUから当該第1CPUに対応する第2CPUに第2キューを介して転送され、当該読み出しコマンドに対する処理(つまり、読み出しデータをNANDチップから読み出す処理)は当該第2CPUによって実行される。
上記したように本実施形態においてホスト装置2は、NAND型フラッシュメモリ32(第1メモリ)に含まれるNANDチップ(不揮発性メモリチップ)内の位置が指定されたコマンドを生成し、当該生成されたコマンドにおいて指定されているNANDチップ内の位置に基づいてタグ情報を生成し、当該生成されたコマンドを格納するペイロードと当該生成されたタグ情報を格納するヘッダとを含むネットワークパケットをメモリシステム3に送信する。また、本実施形態においてメモリシステム3は、ネットワークパケットの受信に関するネットワーク処理(第1処理)を実行するように構成された複数の第1CPU314-1~314-n(第1処理部)と、当該複数の第1CPU314-1~314-nに対応し、複数のNANDチップ32-1~32-nにアクセスするように構成された複数の第2CPU315-1~315-n(第2処理部)とを備えるコントローラ31を含み、当該コントローラ31は、ホスト装置2から送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出し、当該抽出されたタグ情報に基づいて、複数の第1CPU314-1~314-nのうちの1つの第1CPUを選択し、当該選択された第1CPUにネットワーク処理を実行させる。なお、本実施形態において、ネットワーク処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対応する処理(第2処理)は、当該ネットワーク処理を実行した第1CPUに対応する第2CPUによって実行される。
なお、本実施形態においては、複数の第1CPU314-1~314-n(ネットワーク処理用CPU)と複数の第2CPU315-1~315-n(FTL/NAND処理用CPU)とが対応しており、当該複数の第1CPU314-1~314-nから当該複数の第2CPU315-1~315-nへのコマンドの受け渡し(転送)は、DRAM33よりも消費電力が小さいSRAM(コントローラ31に搭載されている第2メモリ)によって実現される複数の第2キュー316-1~316-nを介して行われるものとする。
本実施形態においては、このような構成により、コマンドを第1CPUから第2CPUに受け渡す(転送する)際にコントローラ31の外部に設けられているDRAM33のようなメモリ空間にアクセスする必要がないため、メモリシステム3における消費電力を低減することが可能となる。
また、本実施形態においては、DRAM33へのアクセス頻度を低減することができるため、広帯域なDRAMインタフェース318を用意する必要がなく、当該DRAMインタフェース318の動作周波数を低く抑えることが可能である。
ここで、上記した図2においては本実施形態の比較例について説明したが、当該本実施形態の比較例に係るメモリシステム3´において、第1CPUから第2CPUへのコマンドの受け渡しを本実施形態のようにキューを用いて行う構成が考えられる。
このような構成によればDRAM33´へのアクセスを回避することができるが、上記したように本実施形態の比較例においては第1CPUは任意の第2CPUにコマンドを受け渡す可能性があるため、当該コマンドの受け渡しにスター接続型のバスを配置する必要があり、本実施形態のような単純なキュー構造を適用して消費電力の低減を実現することはできない。
また、本実施形態においてはネットワーク処理を分散する構成であるが、NANDチップ内の位置(NANDチップへの書き込みの場合はデスティネーションアドレス、NANDチップからの読み出しの場合はソースアドレス)に基づいて生成されるタグ情報からネットワーク処理を実行させる第1CPUを選択する場合、特定の第1CPUにネットワーク処理が集中する可能性がある。しかしながら、本実施形態においては、NAND型フラッシュメモリ32に含まれる複数のNANDチップ32-1~32-nに対応するように第1CPU314-1~314-nが備えられているため、当該第1CPU314-1~314-nの各々が1つのNANDチップに対するアクセスのためのネットワークパケットを捌くことができる処理能力があれば、当該ネットワーク処理がボトルネックとなる可能性は低い。
なお、本実施形態においては、ネットワーク処理を実行させる第1CPUを選択するために用いられるタグ情報として、例えばコマンドにおいて位置が指定されているNANDチップ(つまり、書き込みデータが書き込まれるまたは読み出しデータが書き込まれているNANDチップ)に割り当てられているチップ番号を含むタグ情報が生成される。
本実施形態においては、このような構成により、タグ情報に含まれるチップ番号によって特定されたNANDチップに対応する第1CPUにネットワーク処理を実行させることができ、煩雑な処理を実行することなく、当該第1CPUから当該NANDチップに対応する第2CPUにコマンドを受け渡すことができる。
ここではチップ番号を含むタグ情報が生成される場合について説明したが、例えばNANDチップ内の位置を示す物理アドレスを含むタグ情報が生成されてもよいし、当該物理アドレスの上位ビットを含むタグ情報が生成されてもよい。
なお、本実施形態におけるタグ情報は、ネットワーク処理を実行させる第1CPUを選択する際に(つまり、負荷分散処理の実行時に)NANDチップを特定することができる情報であればよい。
また、本実施形態においてはタグ情報がヘッダに格納されたネットワークパケットがホスト装置2からメモリシステム3に送信されるものとして説明したが、当該タグ情報は、例えばIPv4において規定されているオプションフィールドに格納されてもよいし、IPv6において規定されている拡張ヘッダに格納されてもよい。本実施形態においては、このように既存のネットワークプロトコルへの影響が少ないフィールド(箇所)にタグ情報を配置することによって、上記したネットワークスイッチ等のネットワーク機器については既存の機器を使用することができる。
なお、本実施形態においては、主にホスト装置2とメモリシステム3との間でTCP/IPの規定に基づく通信が実行されるものとして説明したが、この場合、タグ情報は、例えばTCPにおいて規定されているオプションフィールドに格納されてもよい。
また、例えばTCPポート番号を決定(取得)することが可能なタグ情報(つまり、TCPポート番号に変換することが可能なタグ情報)を生成することができるのであれば、当該タグ情報をTCPポート番号の代わりに当該TCPポート番号のフィールドに格納するようなことも可能である。換言すれば、ネットワーク4がTCPプロトコルを用いてネットワークパケットの交換を行う場合には、当該TCPプロトコルで用いるTCPポート番号は、タグ情報から一意に決定されるものであってもよい。なお、ホスト装置2とメモリシステム3とを相互接続するためのインタフェースとして、NVMe-oF規格のうちNVMe RDMA Transport Binding規格が使用され、RDMA providerとしてRoCE v2が使用される場合は、ホスト装置2とメモリシステム3との間でUDP/IPの規定に基づく通信が実行される。この場合であって、UDPポート番号を決定(取得)することが可能なタグ情報(つまり、UDPポート番号に変換することが可能なタグ情報)を生成することができるのであれば、当該タグ情報は、UDPポート番号の代わりに当該UDPポート番号のフィールドに格納されてもよい。換言すれば、ネットワーク4がUDPプロトコルを用いてネットワークパケットの交換を行う場合には、当該UDPプロトコルで用いるUDPポート番号は、タグ情報から一意に決定されるものであってもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…情報処理システム、2…ホスト装置、3…メモリシステム、4…ネットワーク、21…CPU、22…メモリ、23…NIC、31…コントローラ、32…NAND型フラッシュメモリ(不揮発性メモリ)、32-1~32-n…NANDチップ(不揮発性メモリチップ)、33…DRAM、211…コマンド生成部、212…タグ生成部、213…通信処理部(送信部)、311…情報抽出部、312…分散処理部、313-1~313-n…第1キュー、314-1~314-n…第1CPU(第1処理部)、315-1~315-n…第2CPU(第2処理部)、316-1~316-n…第2キュー、317…物理レイヤ処理部、318…DRAMインタフェース、319…ネットワーク送信部、320…第3キュー。
Claims (16)
- ホスト装置と、ネットワークを介して前記ホスト装置によって利用される複数のメモリチップを含む第1メモリを備えるメモリシステムとを具備する情報処理システムにおいて、
前記ホスト装置は、
前記メモリチップ内の位置が指定されたコマンドを生成する第1生成部と、
前記生成されたコマンドにおいて指定されているメモリチップ内の位置に基づいてタグ情報を生成する第2生成部と、
前記生成されたコマンドを格納するペイロードと前記生成されたタグ情報を格納するヘッダとを含むネットワークパケットを前記ネットワークを介して前記メモリシステムに送信する送信部と
を含み、
前記メモリシステムは、
前記ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラを含み、
前記コントローラは、
前記送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、
前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部と
を含み、
前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される
情報処理システム。 - 前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドは、前記コントローラに搭載されている第2メモリを介して、前記第1処理を実行した第1処理部から前記第1処理部に対応する第2処理部に転送される請求項1記載の情報処理システム。
- 前記第2メモリは、SRAMである請求項2記載の情報処理システム。
- 前記第2生成部は、前記生成されたコマンドにおいて位置が指定されているメモリチップに割り当てられているチップ番号を含むタグ情報を生成する請求項1~3のいずれか一項に記載の情報処理システム。
- 前記第2生成部は、前記生成されたコマンドにおいて指定されているメモリチップ内の位置を示す物理アドレスを含むタグ情報を生成する請求項1~3のいずれか一項に記載の情報処理システム。
- 前記第2生成部は、前記生成されたコマンドにおいて指定されているメモリチップ内の位置を示す物理アドレスの上位ビットを含むタグ情報を生成する請求項1~3のいずれか一項に記載の情報処理システム。
- 前記タグ情報は、IPv4において規定されているオプションフィールドに格納される請求項1~6のいずれか一項に記載の情報処理システム。
- 前記タグ情報は、IPv6において規定されている拡張ヘッダに格納される請求項1~6のいずれか一項に記載の情報処理システム。
- 前記タグ情報は、TCPにおいて規定されているオプションフィールドに格納される請求項1~6のいずれか一項に記載の情報処理システム。
- 前記ネットワークはTCPプロトコルを用いてネットワークパケットの交換を行い、
前記TCPプロトコルで用いるTCPポート番号は、前記タグ情報から一意に決定される
請求項1~6のいずれか一項に記載の情報処理システム。 - 前記ネットワークはUDPプロトコルを用いてネットワークパケットの交換を行い、
前記UDPプロトコルで用いるUDPポート番号は、前記タグ情報から一意に決定される
請求項1~6のいずれか一項に記載の情報処理システム。 - ネットワークを介してホスト装置によって利用されるメモリシステムにおいて、
複数のメモリチップを含む第1メモリと、
ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラと
を具備し、
前記コントローラは、
前記ホスト装置から前記ネットワークを介して送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、
前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記ホスト装置からネットワークを介して送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部と
を含み、
前記ネットワークパケットに含まれるペイロードには、前記メモリチップ内の位置が指定されたコマンドが格納されており、
前記タグ情報は、前記コマンドにおいて指定されているメモリチップ内の位置に基づいて生成され、IPv4において規定されているオプションフィールドに格納されており、
前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される
メモリシステム。 - ネットワークを介してホスト装置によって利用されるメモリシステムにおいて、
複数のメモリチップを含む第1メモリと、
ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラと
を具備し、
前記コントローラは、
前記ホスト装置から前記ネットワークを介して送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、
前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記ホスト装置からネットワークを介して送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部と
を含み、
前記ネットワークパケットに含まれるペイロードには、前記メモリチップ内の位置が指定されたコマンドが格納されており、
前記タグ情報は、前記コマンドにおいて指定されているメモリチップ内の位置に基づいて生成され、IPv6において規定されている拡張ヘッダに格納されており、
前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される
メモリシステム。 - ネットワークを介してホスト装置によって利用されるメモリシステムにおいて、
複数のメモリチップを含む第1メモリと、
ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラと
を具備し、
前記コントローラは、
前記ホスト装置から前記ネットワークを介して送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、
前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記ホスト装置からネットワークを介して送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部と
を含み、
前記ネットワークパケットに含まれるペイロードには、前記メモリチップ内の位置が指定されたコマンドが格納されており、
前記タグ情報は、前記コマンドにおいて指定されているメモリチップ内の位置に基づいて生成され、TCPにおいて規定されているオプションフィールドに格納されており、
前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される
メモリシステム。 - ネットワークを介してホスト装置によって利用されるメモリシステムにおいて、
複数のメモリチップを含む第1メモリと、
ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラと
を具備し、
前記コントローラは、
前記ホスト装置から前記ネットワークを介して送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、
前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記ホスト装置からネットワークを介して送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部と
を含み、
前記ネットワークパケットに含まれるペイロードには、前記メモリチップ内の位置が指定されたコマンドが格納されており、
前記タグ情報は、前記コマンドにおいて指定されているメモリチップ内の位置に基づいて生成され、TCPポート番号のフィールドに格納されており、
前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される
メモリシステム。 - ネットワークを介してホスト装置によって利用されるメモリシステムにおいて、
複数のメモリチップを含む第1メモリと、
ネットワークパケットの受信に関する第1処理を実行するように構成された複数の第1処理部と、前記複数の第1処理部に対応し、前記複数のメモリチップにアクセスするように構成された複数の第2処理部とを備えるコントローラと
を具備し、
前記コントローラは、
前記ホスト装置から前記ネットワークを介して送信されたネットワークパケットに含まれるヘッダに格納されているタグ情報を抽出する抽出部と、
前記抽出されたタグ情報に基づいて、前記複数の第1処理部のうちの1つの第1処理部を選択し、前記選択された第1処理部に前記ホスト装置からネットワークを介して送信されたネットワークパケットの受信に関する第1処理を実行させる分散処理部と
を含み、
前記ネットワークパケットに含まれるペイロードには、前記メモリチップ内の位置が指定されたコマンドが格納されており、
前記タグ情報は、前記コマンドにおいて指定されているメモリチップ内の位置に基づいて生成され、UDPポート番号のフィールドに格納されており、
前記第1処理が実行されたネットワークパケットに含まれるペイロードに格納されているコマンドに対する第2処理は、前記第1処理を実行した第1処理部に対応する第2処理部によって実行される
メモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021196219A JP2023082442A (ja) | 2021-12-02 | 2021-12-02 | 情報処理システム及びメモリシステム |
US17/870,600 US11966634B2 (en) | 2021-12-02 | 2022-07-21 | Information processing system and memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021196219A JP2023082442A (ja) | 2021-12-02 | 2021-12-02 | 情報処理システム及びメモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023082442A true JP2023082442A (ja) | 2023-06-14 |
Family
ID=86607398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021196219A Pending JP2023082442A (ja) | 2021-12-02 | 2021-12-02 | 情報処理システム及びメモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11966634B2 (ja) |
JP (1) | JP2023082442A (ja) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120134919A (ko) * | 2011-06-03 | 2012-12-12 | 삼성전자주식회사 | 메모리 장치 |
JP6070357B2 (ja) | 2013-03-28 | 2017-02-01 | 富士通株式会社 | ストレージ装置 |
US10547559B2 (en) | 2015-12-26 | 2020-01-28 | Intel Corporation | Application-level network queueing |
JP2018112883A (ja) | 2017-01-11 | 2018-07-19 | 東芝メモリ株式会社 | 半導体記憶装置 |
KR20190063054A (ko) * | 2017-11-29 | 2019-06-07 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
US11748278B2 (en) * | 2019-06-20 | 2023-09-05 | Intel Corporation | Multi-protocol support for transactions |
US20200322287A1 (en) | 2020-06-18 | 2020-10-08 | Intel Corporation | Switch-managed resource allocation and software execution |
-
2021
- 2021-12-02 JP JP2021196219A patent/JP2023082442A/ja active Pending
-
2022
- 2022-07-21 US US17/870,600 patent/US11966634B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11966634B2 (en) | 2024-04-23 |
US20230176787A1 (en) | 2023-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11929927B2 (en) | Network interface for data transport in heterogeneous computing environments | |
US11522682B2 (en) | Technologies for providing streamlined provisioning of accelerated functions in a disaggregated architecture | |
US12323482B2 (en) | Service mesh offload to network devices | |
EP3706394B1 (en) | Writes to multiple memory destinations | |
US12229441B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11868653B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20190068444A1 (en) | Technologies for providing efficient transfer of results from accelerator devices in a disaggregated architecture | |
CN110392092A (zh) | 与网络结构连接的网络存储设备 | |
CN110365604A (zh) | 储存设备及其队列管理方法 | |
EP3662642B1 (en) | Nvm express over fabrics | |
WO2013081620A1 (en) | Server including switch circuitry | |
WO2024179298A1 (zh) | 跨机柜服务器内存池化方法、装置、设备、服务器及介质 | |
CN102843435A (zh) | 一种在集群系统中存储介质的访问、响应方法和系统 | |
US20150199298A1 (en) | Storage and network interface memory share | |
JP2023082442A (ja) | 情報処理システム及びメモリシステム | |
CN114253733B (zh) | 一种内存管理方法、装置、计算机设备和存储介质 | |
US7266614B1 (en) | Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission | |
US20240320167A1 (en) | Combining read requests having spatial locality | |
US20220334734A1 (en) | Information processing system and memory system | |
KR20230131614A (ko) | 네트워크 장비용 비휘발성 복합 메모리 및 비휘발성 복합 메모리 동작 방법 | |
CN118869393A (zh) | 跨网络访问固态盘ssd的方法和装置 | |
CN119336697A (zh) | 一种通信方法及装置 |