JPWO2015136612A1 - 計算機システム、不揮発メモリシステム及びホストシステム - Google Patents
計算機システム、不揮発メモリシステム及びホストシステム Download PDFInfo
- Publication number
- JPWO2015136612A1 JPWO2015136612A1 JP2016507156A JP2016507156A JPWO2015136612A1 JP WO2015136612 A1 JPWO2015136612 A1 JP WO2015136612A1 JP 2016507156 A JP2016507156 A JP 2016507156A JP 2016507156 A JP2016507156 A JP 2016507156A JP WO2015136612 A1 JPWO2015136612 A1 JP WO2015136612A1
- Authority
- JP
- Japan
- Prior art keywords
- key
- area
- size
- group
- nonvolatile memory
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
不揮発メモリシステムは、不揮発メモリと第1領域とを有し、ホストシステムは、keyグループに関連付いたkey範囲に属するkeyをそれぞれが含んだ2以上のkey−valueの書込みリクエストを不揮発メモリシステムに送信する。不揮発メモリシステムが、同一keyに対応する複数のvalueを集約する演算である縮退演算をkeyグループ単位で行う。1つのkeyグループの縮退演算において、第1領域に、そのkeyグループに属するkeyと、そのkeyに対応する演算結果とが記憶される。1つのkeyグループのkey範囲に属するkeyの数であるグループkey数が、第1領域のサイズである第1領域サイズを基に決定された数である。
Description
本発明は、概して、データ演算、例えば、key−value形式のデータの演算に関する。
key−value形式のデータ(以下、key−valueデータ)は、一般に、複数のkey−valueで構成され、1つのkey−valueは、1つのkeyと1つのバリューの組である。key−valueデータの演算として、例えば、同一keyに対応する複数のvalueを集約する演算がある(「集約」は、「縮退」と呼ばれてもよい)。同一keyに対応する複数のvalueを集約するとは、複数のvalueの又は平均を算出をすること、複数のvalueから所定条件に該当する1つのvalue(例えば最小又は最大のvalue)を選択すること、等がある。key−valueデータを処理するシステムとして、例えば、グラフ処理を行うシステム(例えば特許文献1)や、マップリデュース処理を行うシステムが知られている。
key−valueデータを演算する計算機システムは、一般に、ホストシステム(以下、ホスト)と、ホストに接続された記憶システムとを含む。ホストが、key−valueデータを演算し、演算結果を記憶システムに書き込む。また、ホストが、記憶システムから演算結果を読み出し、その演算結果を、新たなkey−valueデータを用いて演算し、その演算結果を記憶システムに書き込む。
記憶システムが、HDD(Hard Disk Drive)の場合、HDDの入出力性能がボトルネックとなることがある。そのため、記憶システムとして、SSD(Solid State Drive)のような不揮発メモリシステムを採用することが考えられる(例えば特許文献2)。また、不揮発メモリシステムが、不揮発メモリ以外のメモリを有し、アクセス頻度の高いデータを高速のメモリに配置し、アクセス頻度の低いデータを低速のメモリに配置してもよい(例えば特許文献3)。
しかし、特許文献2又は3を適用した不揮発メモリシステムでは、不揮発メモリシステムの入出力性能がホストの演算性能より高く、故に、ホストがボトルネックになることがある。
不揮発メモリシステムは、不揮発メモリと第1領域とを有し、ホストシステムは、異なる複数のkey範囲にそれぞれ関連付いた複数のkeyグループの各々について、keyグループに関連付いたkey範囲に属するkeyをそれぞれが含んだ2以上のkey−valueの書込みリクエストを不揮発メモリシステムに送信する。不揮発メモリシステムが、同一keyに対応する複数のvalueを集約する演算である縮退演算をkeyグループ単位で行う。1つのkeyグループの縮退演算において、第1領域に、そのkeyグループに属するkeyと、そのkeyに対応する演算結果とが記憶される。第1領域は、例えば後述のワーキングバッファである。1つのkeyグループのkey範囲に属するkeyの数であるグループkey数が、第1領域のサイズである第1領域サイズを基に決定された数である。
縮退演算が不揮発メモリシステムにオフロードされるので、ホストがボトルネックになることを回避することができる。また、keyグループについて縮退演算が行われ、グループkey数が第1領域サイズを基に決定されるので、第1領域サイズが、取り得る全てのkeyを格納できる程に大きくなくても、不揮発メモリシステムに縮退演算をオフロードすることができる。
以下、key−valueデータを演算する計算機システムとしてグラフ処理を行う計算機システムを例に取り、一実施例を説明する。グラフ処理では、一般に、keyは、頂点であり、valueは、頂点間でやり取りされるメッセージである。以下の説明では、keyを「頂点」と言い、keyが表す番号を「頂点番号」と言い、valueを「メッセージ」と言うことがある。
また、以下、そのグラフ処理においてkey毎に1以上のvalueを集約することを「縮退演算」と呼ぶ。縮退演算の一例は、例えば以下の通りである。例えば、(key, value)=(0, 1)、(1, 3)、(3, 2)、(1, 3)、(0, 2)、(2, 1)、(0, 1)、(3, 3)とあった場合、key毎に合計、すなわち、(key, value)=(0, 4)、(1, 6)、(2, 1)、(3, 5)を算出することである。
また、以下の説明では「プログラム」を主語として処理の説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリを用いながら行うため、その処理の説明ではプロセッサが主語とされてもよい。また、プログラムを主語として開示された処理はそのプログラムを実行するプロセッサを有する装置が行う処理としてもよい。また、プロセッサは、典型的にはプログラムを実行するマイクロプロセッサ又はそのコアであるが、処理の一部を実行する専用ハードウェアを含んでもよい。また、各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって計算機にインストールされてもよい。
図1は、実施例に係る計算機システムの概要を示す。
ホストシステム(以下、ホスト)102が、不揮発メモリシステム101の不揮発メモリ111に、複数のkey−valueを格納し、グラフ処理のうちの縮退演算を不揮発メモリシステム101にオフロードする。不揮発メモリシステム101は、不揮発メモリ111からkey−valueを読み出し、読み出したkey−valueを縮退演算し、演算結果をワーキングバッファ116に格納する。これにより、ホストがボトルネックになることを避けることができる。
ただし、一般に、取り得る全てのkeyをワーキングバッファ116に格納できる程にワーキングバッファ116のサイズ(以下、WBサイズ)は大きくない。
そこで、複数のkeyグループが用意され、1グループ頂点数が、WBサイズを基に決定される。1グループ頂点数とは、各keyグループに関連付けられるkey範囲のサイズ(key範囲に属するkeyの数)である(図では、番号xのkeyグループが「Gr:x」と表記されている)。例えば、いずれのkey範囲のサイズも、WBサイズに従う格納key最大数(例えば、ワーキングバッファ116に格納可能なkeyと縮退演算後のvalueとの組の最大数)以下である。
そして、keyグループ毎に、縮退演算が行われる。すなわち、不揮発メモリシステム101は、keyグループ毎に、不揮発メモリ111からのkey−valueの読み出し、読み出したkey−valueの縮退演算、及び、縮退演算の結果のワーキングバッファ116への格納を行う。このため、ワーキングバッファ116に格納されるkeyの数は、処理対象のkeyグループに関連付いたkey範囲のサイズ以下、すなわち、WBサイズを基に決定されたkey数以下である。
keyグループ毎に不揮発メモリ111からkey−valueを読み出すことは、ホスト102と不揮発メモリシステム101との協調により行われる。以下、本実施例を詳細に説明する。
図2は、本実施例に係る計算機システムの構成を示す。
計算機システムは、不揮発メモリシステム101とホスト102が1つの筐体に収納されたコンバージドシステムであってもよいし、不揮発メモリシステム101とホスト102が通信ネットワークを介して接続されたシステムであってもよい。不揮発メモリシステム101及びホスト102は、不揮発メモリシステム101内での通信プロトコルとホスト102内での通信プロトコルと同じ通信プロトコル(例えばPCI Express(登録商標))で通信されてもよいし異なる通信プロトコル(例えばFibre Channel)で通信されてもよい。
不揮発メモリシステム101は、不揮発メモリ111を有する記憶メディアドライブ(例えばSSD)であってもよいし、複数の不揮発メモリ111を有する大規模メモリシステムであってもよい。不揮発メモリシステム101は、不揮発メモリ111、コントローラ112、DMAモジュール113、縮退演算モジュール114、ストリームバッファ115、ワーキングバッファ116、バッファサイズレジスタ117及びホストI/F118を有する。これらの要素は、例えばバス(例えばPCI Expressバス)131に接続されていてよい。また、例えば、不揮発メモリ111は、バス131に代えてDMAモジュール113に接続されていてよい。
不揮発メモリ111は、本実施例では、NAND型のフラッシュメモリである。従って、不揮発メモリ111は、複数のブロックで構成されており、各ブロックは、複数のページで構成されており、ページ単位でデータが読み書きされ、ブロック単位でデータが消去される。不揮発メモリ111は、NAND型のフラッシュメモリに代えて、他種の不揮発メモリ(例えば、MRAM(Magnetoresistive random access memory)、ReRAM(resistance random access memory)、又は、FeRAM(Ferroelectric random access memory))でもよい。
コントローラ112は、CPU(Central Processing Unit)を含んだモジュール(例えば、CPUそれ自体、又は、CPUとASICとを含んだモジュール)である。コントローラ112は、ホスト102からのリクエストに応答して処理を行う。
DMAモジュール113は、DMAによりデータを転送するモジュール(例えばハードウェア回路)である。DMAモジュール113は、コントローラ112に含まれていてもよい。また、DMAモジュール113は無くてもよく、その場合には、コントローラ112が不揮発メモリシステム101内でのデータ転送を制御してもよい。
縮退演算モジュール114は、縮退演算を行うモジュール(例えばハードウェア回路)である。縮退演算モジュール114は、コントローラ112に含まれていてもよい。また、縮退演算モジュール114は無くてもよく、その場合には、コントローラ112が縮退演算を行ってもよい。
ストリームバッファ115は、第1メモリ上に設けられたバッファ(領域)であり、不揮発メモリ111から読み出されたデータが書き込まれる。第1メモリは、揮発メモリでも不揮発メモリでもよい。第1メモリは、シーケンシャルアクセスを高速に(例えばランダムアクセス又はワーキングバッファ116よりも高速に)行うことができるメモリであることが好ましい。第1メモリは、例えばDRAM(Dynamic Random Access Memory)である。第1メモリは、不揮発メモリ111よりも高速である。
ワーキングバッファ116は、第1メモリ又は第2メモリ上に設けられたバッファ(領域)であり、縮退演算の結果である縮退結果が書き込まれる。第2メモリは、揮発メモリでも不揮発メモリでもよい。第2メモリは、ランダムアクセスを高速に(例えばシーケンシャルアクセス又はストリームバッファ115よりも高速に)行うことができるメモリ(例えばアクセス粒度が第1メモリよりも細かいメモリ)であることが好ましい。第2メモリは、不揮発メモリ111及び第1メモリよりも高速のメモリ、例えばSRAM(Static Random Access Memory)である。
バッファサイズレジスタ117は、ワーキングバッファ116のサイズを格納しているレジスタである。
ホストI/F118は、ホスト102に接続されるインターフェイスデバイスである。
ホスト102は、CPU121、DRAM122及び不揮発メモリI/F123を有する。CPU121は、ホスト102の動作を制御する。DRAM122は、ホスト102が有するメモリの一例であり、DRAM122に代えて他種のメモリが採用されてもよい。不揮発メモリI/F123は、不揮発メモリシステム101(ホストI/F118)に接続されるインターフェイスデバイスである。ホスト102は、CPU121で実行されるプログラムを記憶した不揮発メモリ(以下、プログラムメモリ)を有していてもよい。プログラムメモリからプログラムがDRAM122にロードされ、DRAM122にロードされたプログラムがCPU121により実行されてよい。プログラムメモリが無く、CPU121で実行されるプログラムが、不揮発メモリシステム101の不揮発メモリ111からDRAM122にロードされてもよい。ホスト102内でも、例えばPCI Expressで通信が行われてよい。
図3は、CPU121で実行されるプログラムを示す。
CPU121で実行されるプログラムとして、準備プログラム301、I/O(Input/Output)制御プログラム302及びオフロード制御プログラム303がある。準備プログラム301は、準備処理、例えば、WBサイズの読出し、WBサイズに基づくkey範囲サイズの算出等を行う。I/O制御プログラム302は、不揮発メモリ111に対するデータ(key−value)の入出力を制御する。オフロード制御プログラム303は、縮退演算のオフロードを制御する。
図4は、DRAM122に記憶される情報とDRAM122に確保される領域とを示す。
DRAM122は、keyグループ毎に、ホストバッファ401を有し、且つ、keyグループ毎に、アドレスリスト402及び縮退結果403を記憶する。ホストバッファ401には、keyグループに関連付けたkey範囲に属するkeyを含んだkey−valueが一時格納される。アドレスリスト402は、keyグループに関連付けたkey範囲に属するkeyを含んだkey−valueの、不揮発メモリ111における書込み先アドレス、を有する。縮退結果403は、keyグループに関連付けたkey範囲に属するkey毎の縮退演算結果を含む。
また、DRAM122は、ホストバッファサイズ404と1グループ頂点数405を記憶する。ホストバッファサイズ404は、ホストバッファ401のサイズを表す情報である。1グループ頂点数405は、keyグループに関連付くkey範囲のサイズ、すなわち、key範囲に属するkey(頂点)の数を表す情報である。以下、1つのkeyグループのkey範囲のサイズを「1グループ頂点数」と言うことがある。本実施例では、全てのkeyグループの1グループ頂点数は同じである。しかし、少なくとも1つのkeyグループの1グループ頂点数が他のkeyグループのそれと異なっていてもよい。いずれのkeyグループの1グループ頂点数は、WBサイズに従う格納key最大数(例えば、ワーキングバッファ116に格納可能なkeyと縮退演算後のvalueとの組の最大数)以下である。
図5は、key−valueの不揮発メモリ111への書込みの説明図である。
上述したように、DRAM122が、keyグループ毎にホストバッファ401を有する。各バッファ401のサイズは、不揮発メモリ111の書込み単位サイズ(本実施例ではページサイズ)と同じである。1つのバッファ401が満杯になった場合に、そのバッファ401に格納されている全てのkey−valueが不揮発メモリ111に書き込まれるようになっている。そして、それらのkey−valueの書込み先アドレスが、アドレスリスト402に書き込まれるようになっている。
例えば、I/O制御プログラム302は、Gr:2(key範囲(頂点番号範囲):200−299)に属するkeyを含んだkey−valueをDRAM122に格納する場合、そのkey−valueを、Gr:2のバッファ401に格納する。それにより、Gr:2のバッファ401が満杯になったので、I/O制御プログラム302は、Gr:2のバッファ401に格納されている全てのkey−valueを不揮発メモリ111に書き込み、且つ、書込み先アドレスを、Gr:2のアドレスリスト402に書き込む。これにより、Gr:2のバッファ401が空になり、且つ、Gr:2について、書込み先アドレスが追加される。I/O制御プログラム302は、Gr:2についてのみ縮退演算を不揮発メモリシステム101にオフロードする場合には、Gr:2のアドレスリスト402に記録されている書込み先アドレスからデータを不揮発メモリシステム101に読み出させればよい。データはページ単位に読み出されるが、ページ単位に読み出されたデータ中の全てのkeyは、Gr:2に属するkeyである。つまり、keyグループ単位でのkey−valueの読み出しが実現され、それにより、keyグループ単位での縮退演算が可能である。
以下、本実施例における書込み処理と読出し処理を説明する。
図6Aは、書込み処理の流れを示すブロック図であり、図6Bは、書込み処理においてホスト102が行う処理の流れを示すフローチャートである。以下、説明を分かり易くするために、図5と同様、Gr:2を例に取る。また、以下、説明を省略するが、ホスト102と不揮発メモリシステム101間の通信は、不揮発メモリI/F123及びホストI/F118を経由する。また、以下、説明の混同を避けるために、不揮発メモリシステム101がホスト102から受ける指示を「リクエスト」と言い、不揮発メモリシステム101内部でやり取りされる指示を「コマンド」と言う。
I/O制御プログラム302は、Gr:2に属するkeyを含んだkey−valueを、DRAM122におけるGr:2のバッファ401に格納する(図6BのS601)。Gr:2のバッファ401が満杯になった場合(図6BのS602:Yes)、I/O制御プログラム302は、書込みリクエストを不揮発メモリシステム101に送信し(図6BのS603)、不揮発メモリシステム101において、コントローラ112が、書込みリクエストを受信する(図6AのS6−1)。その書込みリクエストによる書込み対象データは、Gr:2のバッファ401に格納されている全てのkey−valueを含んだデータである。また、書込みリクエストは、書込み元アドレス、書込み先アドレス、及び、データサイズ(データ長)を含む。書込み元アドレスは、DRAM122における、Gr:2のバッファ401のアドレス(例えばGr:2のバッファ401の先頭アドレス)である。書込み先アドレスは、不揮発メモリ111におけるアドレス(典型的には論理アドレス)である。データサイズは、Gr:2のバッファ401のサイズ、つまりページサイズである。なお、書込み対象のデータがバッファ401内のデータと異なるデータの場合、データサイズは任意のサイズでよい。
コントローラ112は、受信した書込みリクエストに基づく書込みコマンドを、DMAモジュール113に送信する(図6AのS6−2)。その書込みコマンドは、書込み元アドレス、書込み先アドレス、及び、データサイズを含む。書込み元アドレスは、書込みリクエストに含まれていた書込み元アドレスと同じである。書込み先アドレスは、書込みリクエストに含まれていた書込み先アドレスと同じアドレス、又は、書込みリクエストに含まれていた書込み先アドレス(論理アドレス)に対応したアドレス(物理アドレス)である。データサイズは、書込みリクエストに含まれていたデータサイズと同じである。
DMAモジュール113は、書込みコマンドをコントローラ112から受信し、その書込みコマンドに従い、書込み元アドレス(DRAM122)からデータサイズ分のデータ(Gr:2に対応した複数のkey−value)を書込み先アドレス(不揮発メモリ111)にDMA転送する(図6AのS6−3)。
DMAモジュール113は、DMA転送が完了した場合、完了通知をコントローラ112に送信する(図6AのS6−4)。コントローラ112は、完了通知を受けて、S6−1で受信した書込みリクエストの応答として、完了通知をホスト102に送信し、ホスト102において、I/O制御プログラム302が、その完了通知を受信する(図6AのS6−5、図6BのS604)。
図7は、読出し処理の流れを示すブロック図である。
I/O制御プログラム302は、読出しリクエストを不揮発メモリシステム101に送信し、不揮発メモリシステム101において、コントローラ112が、読出しリクエストを受信する(S7−1)。読出しリクエストは、読出し元アドレス、読出し先アドレス、及び、データサイズ(データ長)を含む。読出し元アドレスは、不揮発メモリ111におけるアドレス(典型的には論理アドレス)である。読出し先アドレスは、DRAM122における読出し先のアドレスである。データサイズは、読出し対象データのサイズである。
コントローラ112は、受信した読出しリクエストに基づく読出しコマンドを、DMAモジュール113に送信する(S7−2)。その読出しコマンドは、読出し元アドレス、読出し先アドレス、及び、データサイズを含む。読出し元アドレスは、読出しリクエストに含まれていた読出し元アドレスと同じアドレス、又は、読出しリクエストに含まれていた読出し元アドレス(論理アドレス)に対応したアドレス(物理アドレス)である。読出し先アドレスは、読出しリクエストに含まれていた読出し先アドレスと同じアドレスである。データサイズは、読出しリクエストに含まれていたデータサイズと同じである。
DMAモジュール113は、読出しコマンドをコントローラ112から受信し、その読出しコマンドに従い、読出し元アドレス(不揮発メモリ111)からデータサイズ分のデータを読出し先アドレス(DRAM122)にDMA転送する(S7−3)。
DMAモジュール113は、DMA転送が完了した場合、完了通知をコントローラ112に送信する(S7−4)。コントローラ112は、完了通知を受けて、S7−1で受信した読出しリクエストの応答として、完了通知をホスト102に送信し、ホスト102において、I/O制御プログラム302が、その完了通知を受信する(S7−5)。
このような書込み処理及び読出し処理は、図8を参照して説明する準備処理が完了した後に、可能となる。
図8Aは、準備処理の流れを示すブロック図であり、図8Bは、準備処理においてホスト102が行う処理の流れを示すフローチャートである。
準備処理は、例えば、ホスト102の電源投入時、又は、WBサイズの変更をホスト102が検出した時に行われる。例えば、WBサイズが変更された場合(ワーキングバッファ116が拡大又は縮小した場合)、コントローラ112が、変更後のWBサイズをバッファサイズレジスタ117に格納し、且つ、WBサイズ変更をホスト102に通知してよい。
準備プログラム301が、WBサイズをバッファサイズレジスタ117から読み出す(図8BのS801)。具体的には、準備プログラム301が、レジスタ読出しリクエストを不揮発メモリシステム101に送信し、そのリクエストを、ホストI/F118が受信する(図8AのS8−1)。ホストI/F118が、そのリクエストに応答して、WBサイズをバッファサイズレジスタ117から読み出し、読み出したWBサイズをホスト102(準備プログラム301)に通知する(図8AのS8−2)。
準備プログラム301が、受信したWBサイズを基に1グループ頂点数を決定する(図8AのS8−3、図8BのS802)。1グループ頂点数の決定では、更に、グラフ処理において取り得るkeyの数(key全体数)が基にされてもよい。準備プログラム301は、key全体数と1グループ頂点数とに基づく数のkeyグループ毎に、ページサイズ分のホストバッファ401をDRAM122に確保し、且つ、アドレスリスト402をDRAM122上に用意する(図8AのS8−4、図8BのS803)。
この準備処理の後、図6及び図7に示したような書込み処理及び読出し処理が可能になる。なお、準備処理において、WBサイズは、不揮発メモリシステム101(バッファサイズレジスタ117)から取得されることに代えて、他のデバイス(例えば、ホスト102のユーザが操作する入力デバイス(図示せず)、又は、ホスト102に接続された管理計算機(図示せず))から取得(入力)されてもよい。従って、バッファサイズレジスタ117は無くてもよい。
図9A及び図9Bは、keyグループの縮退演算オフロード処理の流れを示すブロック図であり、図9Cは、keyグループの縮退演算オフロード処理の流れを示すフローチャートである。図9A〜図9Cは、各keyグループについて実行可能な処理である。以下、1つのkeyグループを例に取り、図9A〜図9Cの説明では、その1つのkeyグループを「対象グループ」と言う。なお、縮退演算オフロード処理は、1つのホストバッファ401からデータ(複数のkey−value)が不揮発メモリ111に書き込まれた場合に、そのホストバッファ401に対応するkeyグループについてのみ行われてもよいし、定期的にkeyグループ毎に行われてもよい。各アドレスリスト402では、処理済のアドレス(縮退演算オフロード処理が行われたアドレス)と未処理アドレス(縮退演算オフロード処理が行われていないアドレス)とが区別されていてもよいし、未処理アドレスのみがリスト402に登録されていてもよい。
オフロード制御プログラム303は、対象グループのアドレスリスト402を参照する(図9CのS901)。対象グループに対応した未処理アドレス毎に、図9Aの処理(図9CのS911〜S914)が行われる。
すなわち、オフロード制御プログラム303は、対象グループに対応した未処理アドレスを、対象グループのアドレスリスト402から特定し、特定した未処理アドレス(典型的には論理アドレス)を含んだオフロード処理リクエストを不揮発メモリシステム101に送信し、コントローラ112が、そのリクエストを受信する(図9AのS9−1、図9CのS911)。
次に、そのリクエスト中のアドレスから1ページ分のデータがストリームバッファ115に読み出される(図9CのS912)。具体的には、コントローラ112が、読出しコマンドをDMAモジュール113に送信する。その読出しコマンドは、読出し元アドレスとして、オフロード処理リクエスト中の未処理アドレス(又はそれに対応するアドレス(物理アドレス))を含み、読出し先アドレスとして、ストリームバッファ115のアドレスを含む。DMAモジュール113が、その読出しコマンドに応答して、読出し元アドレス(未処理アドレス)から1ページ分のデータを読出し先アドレス(ストリームバッファ115)に読み出す(図9AのS9−3)。これにより、ストリームバッファ115には、複数のkey−valueが格納される。それら複数のkey−value中の全てのkeyは、対象グループに属するkeyである。DMAモジュール113は、読み出しを完了した場合、読出しコマンドの応答としての完了通知をコントローラ112に送信する(図9AのS9−4)。
次に、コントローラ112が、縮退演算モジュール114に、縮退演算コマンドを送信する(図9AのS9−5、図9CのS913)。
それにより、縮退演算モジュール114により、ストリームバッファ115中のkey−valueと、ワーキングバッファ116中の途中結果とを基に縮退演算が行われ、ワーキングバッファ116中の途中結果が更新され、コントローラ112からホスト102に完了通知が送信される(図9CのS914)。具体的には、次の通りである。すなわち、縮退演算モジュール114が、縮退演算コマンドを受信し、縮退演算を開始する。縮退演算では、縮退演算モジュール114が、ストリームバッファ115から1つのkey−valueを読み出し(図9AのS9−6)、且つ、そのkey−value中のkeyに対応した途中結果をワーキングバッファ116から読み出し、読み出したkey−value中のvalueを用いてその途中結果を更新し、更新後の途中結果をワーキングバッファ116に格納する(図9AのS9−7)。このS9−6及びS9−7が、1つの未処理アドレスに対応した全てのkey−value(図9AのS9−3で読み出された全てのkey−value)について行われる(例えば、ストリームバッファ115が空になるまで行われる)。1つの未処理アドレスに対応した全てのkey−valueについてS9−6及びS9−7が完了した場合、縮退演算モジュール114は、縮退演算コマンドの応答としての完了通知をコントローラ112に送信する(図9AのS9−8)。コントローラ112は、その完了通知を受信し、オフロード処理リクエストの応答としての完了通知をホスト102に送信し、オフロード制御プログラム303が、その完了通知を受信する(図9AのS9−9)。
以上の図9Aの処理(図9CのS911〜S914)が、対象グループに対応した全ての未処理アドレスについて行われると、対象グループについての縮退演算の完了となる。この場合、図9Bの処理(図9CのS921〜S922)により、対象グループの縮退演算結果が不揮発メモリシステム101からホスト102のDRAM122にロードされる。
すなわち、オフロード制御プログラム303が、オフロード結果リクエストを送信し、コントローラ112が、そのリクエストを受信する(図9BのS9−11、図9CのS921)。オフロード結果リクエストは、読出し先アドレスとして、DRAM122における、対象グループに対応した縮退結果403が格納されるアドレスを含む。
そのオフロード結果リクエストに応答して、ワーキングバッファ116内の結果(対象グループについての縮退演算の結果)が、DRAM122にロードされる(図9CのS922)。具体的には、コントローラ112が、読出しコマンドをDMAモジュール113に送信する(図9AのS9−12)。その読出しコマンドは、読出し先アドレスとして、オフロード結果リクエストに含まれていた読出し先アドレスを含み、読出し元アドレスとして、ワーキングバッファ116のアドレスを含む。DMAモジュール113は、読出しコマンドに応答して、読出し元アドレス(ワーキングバッファ116)から結果を読出し先アドレス(DRAM122における、対象グループに対応した縮退結果403が格納されるアドレス)に読み出す(図9AのS9−13)。その後、DMAモジュール113は、読出しコマンドの応答としての完了通知をコントローラ112に送信する(図9AのS9−14)。コントローラ112は、その完了通知を受けて、オフロード結果リクエストの応答としての完了通知を、ホスト102に送信し、オフロード制御プログラム303が、その完了通知を受信する(図9AのS9−15)。
以上、本実施例によれば、ホスト102と不揮発メモリシステム101が協調することにより、縮退演算が不揮発メモリシステム101にオフロードされる。これにより、ホスト102がボトルネックになることを回避することができる。
また、本実施例によれば、縮退演算がkeyグループ毎に行われ、且つ、1グループ頂点数がWBサイズを基に決定される。不揮発メモリ111の1つのページに、同一のkeyグループに属するkey−valueが書き込まれ、異なるkeyグループに属するkey−valueが書き込まれることが無い。このため、WBサイズがkey全体数分のkeyと結果を格納できる程に大きくなくても、縮退演算を不揮発メモリシステム101にオフロードすることができる。
また、本実施例によれば、ワーキングバッファ116程高速でないが不揮発メモリ111よりは高速のストリームバッファ115を介して縮退演算が行われる。ストリームバッファ115は無くてもよいが、ストリームバッファ115があることで、ワーキングバッファ116と不揮発メモリ111の速度差(I/O性能の差)を吸収することができる。
以上、一実施例を説明したが、本発明は、その実施例に限定されない。
例えば、グラフ処理以外の処理、例えば、マップリデュース処理にも、上述した実施例を適用することができる。
また、ホスト102は、未処理アドレスを含んだオフロード処理リクエストを不揮発メモリシステム101に送信することに代えて、対象グループのアドレスリスト402それ自体を不揮発メモリシステム101に送信してもよい。また、ホスト102がアドレスリスト402を有することに代えて、ホスト102が、バッファ401中のデータの書込みリクエストを送信する都度に、送信対象の書込みリクエストに、そのバッファ401に対応したkeyグループの番号を含め、不揮発メモリシステム101のコントローラ112が、keyグループ毎に、keyグループの番号とアドレスリストとを有してもよい。この場合、ホスト102は、対象グループの番号を含んだオフロード処理リクエストを不揮発メモリシステム101に送信し、コントローラ112が、そのリクエスト中のグループ番号に対応した未処理アドレスについて縮退演算を行ってもよい。
また、実施例において、不揮発メモリシステム101は、計算機システムにおいて、ホスト102以外のシステムでよい。不揮発メモリシステム101において、不揮発メモリ111を含んだサブシステムと、縮退演算を行うサブシステムとに分離していてもよい。
また、例えば、ホストバッファ401は、ページサイズより多くてもよく、ホスト102は、ページサイズ分のkey−valueが貯まった場合に、書込みリクエストを送信してもよい。また、書込みリクエストは、Nページ毎に送信されてもよい(N=2以上の整数)。
また、例えば、不揮発メモリシステム101は、オフロード処理リクエストを受けること無しに、縮退演算を行ってもよい。具体的には、例えば、不揮発メモリシステム101(例えばオフロード制御プログラム303)は、keyグループ毎のアドレスリストを定期的にホスト102から受信してよい。また、不揮発メモリシステム101は、keyグループ単位の縮退演算を定期的に行い、ワーキングバッファ116における、keyグループに属するkeyとそのkeyの演算結果とを、不揮発メモリ111の空きページに書き込み、その空ページのアドレスと、keyグループの番号との対応関係を、不揮発メモリ111とは別のメモリ(図示せず)に記憶し、その対応関係を、ホスト102に通知してよい。ホスト102は、縮退演算の結果を取得したい場合、不揮発メモリシステム101から通知されたアドレスを読出し元アドレスとして含んだ読出しリクエストを不揮発メモリシステム101に送信することで、所望のkeyグループについての縮退演算の結果を取得し、縮退演算結果をDRAM122に格納してもよい。
また、例えば、1グループ頂点数は、ホスト102の管理計算機によって算出されホスト102に通知されてもよい。
101:不揮発メモリシステム
Claims (13)
- 不揮発メモリと第1領域とを有する不揮発メモリシステムと、
前記不揮発メモリシステムに接続され、異なる複数のkey範囲にそれぞれ関連付いた複数のkeyグループの各々について、keyグループに関連付いたkey範囲に属するkeyをそれぞれが含んだ2以上のkey−valueの書込みリクエストを前記不揮発メモリシステムに送信するホストシステムと
を有し、
前記不揮発メモリシステムが、同一keyに対応する複数のvalueを集約する演算である縮退演算をkeyグループ単位で行い、
1つのkeyグループについての縮退演算において、前記第1領域に、その1つのkeyグループに属するkeyと、そのkeyに対応する演算結果とが記憶され、
1つのkeyグループのkey範囲に属するkeyの数であるグループkey数が、前記第1領域のサイズである第1領域サイズを基に決定された数である、
計算機システム。 - 前記ホストシステムが、前記第1領域サイズを取得し、前記取得した第1領域サイズを基に前記グループkey数を決定する、
請求項1記載の計算機システム。 - 前記不揮発メモリシステムが、第1領域サイズを記憶するサイズ領域を有しており、
前記ホストシステムが、サイズ読出しリクエストを前記不揮発メモリシステムに送信し、前記不揮発メモリシステムが、前記サイズ読出しリクエストに応答して、前記サイズ領域から第1領域サイズを読み出し、読み出した第1領域サイズを前記ホストシステムに送信し、
前記取得した第1領域サイズは、前記不揮発メモリシステムから受信した第1領域サイズである、
請求項2記載の計算機システム。 - 前記不揮発メモリは、ページ単位でデータを入出力するメモリであり、
前記書込みリクエストに従う2以上のkey−valueのサイズは、ページサイズであり、
前記不揮発メモリにおける1つのページには、同一keyグループのkey範囲に属するkeyを含んだkey−valueが書き込まれる、
請求項1記載の計算機システム。 - 前記ホストシステムは、keyグループ毎に、2以上のkey−valueが格納されるバッファであるホストバッファを有し、
前記ホストシステムは、key−valueを、そのkey−value中のkeyが属するkey範囲に関連付いたkeyグループに対応するホストバッファに格納し、そのホストバッファにページサイズ分のkey−valueが蓄積された場合に、前記書込みリクエストを送信する、
請求項4記載の計算機システム。 - 前記不揮発メモリシステムは、第2領域を有し、前記オフロード処理リクエストに応答して、前記不揮発メモリからページ単位で2以上のキューvalueを前記第2領域に読み出し、前記第2領域に読み出された各key−valueを用いて、縮退演算を行う、
請求項4記載の計算機システム。 - 前記第1領域は、前記第2領域よりもランダムアクセスが高速なメモリ上の領域であり、
前記第2領域は、前記第1領域よりもシーケンシャルアクセスが高速なメモリ上の領域である、
請求項6記載の計算機システム。 - 前記第2領域は、前記不揮発メモリより高速なメモリ上の領域であり、
前記第1領域は、前記第2領域よりも高速なメモリ上の領域である、
請求項6記載の計算機システム。 - 前記ホストシステムは、keyグループ毎に、前記不揮発メモリのアドレスであり2以上のkey−valueの書込み先アドレスを管理し、
前記オフロード処理リクエストが、keyグループに対応した書込み先アドレスを含み、
前記不揮発メモリシステムが、前記オフロード処理リクエスト中の書込み先アドレスリストからkey−valueを読み出す、
請求項4記載の計算機システム。 - 各key−value中のkeyは、グラフ処理におけるグラフの頂点番号であり、
各key−value中のvalueは、頂点間でやり取りされるメッセージである、
請求項1記載の計算機システム。 - 前記第1領域は、ワーキングバッファである、
請求項1記載の計算機システム。 - 異なる複数のkey範囲にそれぞれ関連付いた複数のkeyグループの各々について、keyグループに関連付いたkey範囲に属するkeyをそれぞれが含んだ2以上のkey−valueの書込みリクエストを送信するホストシステム、に接続されるインターフェイス部と、
不揮発メモリと
第1領域と
前記不揮発メモリ及び前記第1領域に接続された制御部と
を有し、
前記制御部が、前記書込みリクエストを前記ホストシステムから受信し、前記受信した書込みリクエストに応答して前記2以上のkey−valueを前記不揮発メモリに書き込み、
前記制御部が、同一keyに対応する複数のvalueを集約する演算である縮退演算をkeyグループ単位で行い、
1つのkeyグループについての縮退演算において、前記第1領域に、その1つのkeyグループに属するkeyと、そのkeyに対応する演算結果とが記憶され、
1つのkeyグループのkey範囲に属するkeyの数であるグループkey数が、前記第1領域のサイズである第1領域サイズを基に決定された数である、
不揮発メモリシステム。 - 不揮発メモリと第1領域とを有する不揮発メモリシステムに接続されるインターフェイス部と、
前記インターフェイス部に接続された制御部と
を有し、
前記制御部が、異なる複数のkey範囲にそれぞれ関連付いた複数のkeyグループの各々について、keyグループに関連付いたkey範囲に属するkeyをそれぞれが含んだ2以上のkey−valueの書込みリクエストを前記不揮発メモリシステムに送信し、
前記不揮発メモリシステムが、同一keyに対応する複数のvalueを集約する演算である縮退演算をkeyグループ単位で行い、
1つのkeyグループについての縮退演算において、前記第1領域に、その1つのkeyグループに属するkeyと、そのkeyに対応する演算結果とが記憶され、
1つのkeyグループのkey範囲に属するkeyの数であるグループkey数が、前記第1領域のサイズである第1領域サイズを基に決定された数である、
ホストシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/056262 WO2015136612A1 (ja) | 2014-03-11 | 2014-03-11 | 計算機システム、不揮発メモリシステム及びホストシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2015136612A1 true JPWO2015136612A1 (ja) | 2017-04-06 |
Family
ID=54071092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016507156A Pending JPWO2015136612A1 (ja) | 2014-03-11 | 2014-03-11 | 計算機システム、不揮発メモリシステム及びホストシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2015136612A1 (ja) |
WO (1) | WO2015136612A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH052610A (ja) * | 1991-06-25 | 1993-01-08 | Mitsubishi Electric Corp | リレーシヨナルデータベースにおける集約演算処理方式 |
JP2010539594A (ja) * | 2007-09-17 | 2010-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 計算集中的なデータベース・ユーザ定義プログラムを付属の高パフォーマンス並列コンピュータ上で実行するシステムおよび方法 |
JP2013200839A (ja) * | 2012-03-26 | 2013-10-03 | Toshiba Corp | 半導体記憶装置、情報処理システムおよび制御方法 |
-
2014
- 2014-03-11 JP JP2016507156A patent/JPWO2015136612A1/ja active Pending
- 2014-03-11 WO PCT/JP2014/056262 patent/WO2015136612A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH052610A (ja) * | 1991-06-25 | 1993-01-08 | Mitsubishi Electric Corp | リレーシヨナルデータベースにおける集約演算処理方式 |
JP2010539594A (ja) * | 2007-09-17 | 2010-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 計算集中的なデータベース・ユーザ定義プログラムを付属の高パフォーマンス並列コンピュータ上で実行するシステムおよび方法 |
JP2013200839A (ja) * | 2012-03-26 | 2013-10-03 | Toshiba Corp | 半導体記憶装置、情報処理システムおよび制御方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015136612A1 (ja) | 2015-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102446733B1 (ko) | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 | |
US20190171392A1 (en) | Method of operating storage device capable of reducing write latency | |
US10303474B2 (en) | Data read/write method and apparatus, storage device, and computer system | |
US11467767B2 (en) | Storage device throttling amount of communicated data depending on suspension frequency of operation | |
US11431480B2 (en) | Smart compressor based on adaptive CPU/QAT scheduling method | |
US11467987B1 (en) | Computational pipelines for computational storage devices | |
KR20190054448A (ko) | 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치 | |
US20210181995A1 (en) | Network storage gateway | |
JP2022522595A (ja) | ホストベースのフラッシュメモリメンテナンス技術 | |
WO2017132797A1 (zh) | 数据整理方法、存储设备、存储控制器以及存储阵列 | |
KR20180023311A (ko) | 데이터 저장 장치 | |
CN107250995A (zh) | 存储器管理设备 | |
US11461036B2 (en) | Technologies for logging and visualizing storage events | |
US20240086113A1 (en) | Synchronous write method and device, storage system and electronic device | |
US11461043B2 (en) | Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set | |
WO2015136612A1 (ja) | 計算機システム、不揮発メモリシステム及びホストシステム | |
US20160267050A1 (en) | Storage subsystem technologies | |
CN112860599B (zh) | 数据缓存处理方法、装置以及存储介质 | |
US20180267714A1 (en) | Managing data in a storage array | |
US20160179708A1 (en) | Information processing apparatus, information processing method, and non-transitory computer readable medium | |
US9058295B2 (en) | Encrypt data of storage device | |
US10908828B1 (en) | Enhanced quality of service (QoS) for multiple simultaneous replication sessions in a replication setup | |
US20160266813A1 (en) | Storage subsystem technologies | |
US11733917B2 (en) | High bandwidth controller memory buffer (CMB) for peer to peer data transfer | |
US20240160484A1 (en) | Storage system supporting offloading function and operating method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170328 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20171128 |