(57)【要約】【課題】  本発明の目的は、データ集約型又は計算集約型のアプリケーションにより誘発されるシステム不均衡を減らすサーバーシステムを提供することにある。【解決手段】  例示的な実施形態は、複数の第1大容量ストレージデバイス、少なくとも1つの中央処理部(CPU)、及び少なくとも1つのニアデータプロセシング(NDP)エンジン、を含む、サーバーシステムを提供する。少なくとも1つのCPUは、複数の第1大容量ストレージデバイスに結合される。各NDPエンジンは、複数の第2大容量ストレージデバイスと関連付けられ、そしてCPUと少なくとも1つのNDPエンジンに関連付けられた複数の第2大容量ストレージデバイスとの間に配置される。複数の第2大容量ストレージデバイスの数量は、複数の第1大容量ストレージデバイスの数量と同じか又は少ないかである。【選択図】      図１ａ
2019185764.tif 000002
【特許請求の範囲】
【請求項１】
サーバーシステムであって、
複数の第1大容量ストレージデバイスと、
前記複数の第1大容量ストレージデバイスに結合された少なくとも1つの中央処理部(CPU)と、
少なくとも1つのニアデータプロセシング(NDP)エンジンと、を有し、
各NDPエンジンは、複数の第2大容量ストレージデバイスと関連付けられ、そして前記CPUと前記少なくとも1つのNDPエンジンに関連付けられた前記複数の第2大容量ストレージデバイスとの間に配置され、
前記複数の第2大容量ストレージデバイスの数量は、前記複数の第1大容量ストレージデバイスの数量と同じか又は少ないかである、サーバーシステム。
【請求項２】
前記大容量ストレージデバイスは、少なくとも1つのソリッドステートドライブ(SSD)デバイスを有する、請求項１に記載のサーバーシステム。
【請求項３】
前記サーバーシステムを、ネットワークを通じて前記サーバーシステムの外部にある少なくとも1つの遠隔システムと通信可能に結合する、ネットワークインターフェースと、
前記CPUと前記少なくとも1つのNDPエンジンとの間に配置された通信ファブリックと、をさらに有する、請求項２に記載のサーバーシステム。
【請求項４】
前記NDPエンジンの数は、前記CPUに関連する帯域幅、前記ネットワークに関連する帯域幅、前記通信ファブリックに関連する帯域幅、及び全てのNDPエンジンに関連する帯域幅、のうちの最小帯域幅を、単一のNDPエンジンに関連する帯域幅で割ったものに少なくとも部分的に基づく、請求項３に記載のサーバーシステム。
【請求項５】
前記少なくとも1つのNDPエンジンと前記複数の第1大容量ストレージデバイスとの間に配置されたスイッチ階層と、をさらに有し、
前記スイッチ階層は、前記少なくとも1つのNDPエンジンを前記少なくとも1つのNDPエンジンに関連付けられた前記複数の第2大容量ストレージデバイスに通信可能に結合する、請求項３に記載のサーバーシステム。
【請求項６】
前記スイッチ階層は、第2NDPエンジンと前記複数の第1大容量ストレージデバイスとの間に配置され、前記スイッチ階層は、前記第2NDPエンジンを前記第2NDPエンジンと関連付けられた前記複数の第2大容量ストレージデバイスと通信可能に結合する、請求項５に記載のサーバーシステム。
【請求項７】
前記スイッチ階層は、ネットワークファブリックを有する、請求項６に記載のサーバーシステム。
【請求項８】
前記ネットワークファブリックは、PCIeネットワークを有し、
前記少なくとも1つのNDPエンジンは、プロセッサベースのNDPエンジン又はフィールドプログラマブルゲートアレイ（FPGA）ベースのNDPエンジンを有する、請求項７に記載のサーバーシステム。
【請求項９】
サーバーシステムであって、
前記サーバーシステムをネットワークを通じて、前記サーバーシステムの外部にある少なくとも1つの遠隔システムと通信可能に結合するネットワークインターフェースと、
複数の第1ソリッドステートドライブ(SSD)デバイスと、
前記ネットワークインターフェース及び前記複数の第1SSDデバイスに結合された少なくとも1つの中央処理部(CPU)と、
少なくとも1つのニアデータプロセシング(NDP)エンジンと、を有し、
各NDPエンジンは、複数の第2SSDデバイスと関連付けられ、そして前記CPUと前記少なくとも1つのNDPエンジンと関連付けられた前記複数の第2SSDデバイスとの間に配置され、
前記複数の第2SSDデバイスの数量は、前記複数の第1SSDデバイスの数量と同じか又は少ないかである、サーバーシステム。
【請求項１０】
前記CPUと前記少なくとも1つのNDPエンジンとの間に配置される、通信ファブリック、をさらに有する、請求項９に記載のサーバーシステム。
【請求項１１】
前記NDPエンジンの数は、前記CPUに関連する帯域幅、前記ネットワークに関連する帯域幅、前記通信ファブリックに関連する帯域幅、及び全てのNDPエンジンに関連する帯域幅、のうちの最小帯域幅を、単一のNDPエンジンに関連する帯域幅で割ったものに基づく、請求項１０に記載のサーバーシステム。
【請求項１２】
前記少なくとも1つのNDPエンジンと前記複数の第1SSDデバイスとの間に配置されるスイッチ階層、をさらに有し、
前記スイッチ階層は、前記少なくとも1つのNDPエンジンを前記少なくとも1つのNDPエンジンと関連付けられた前記複数の第2SSDデバイスに通信可能に結合する、請求項１０に記載のサーバーシステム。
【請求項１３】
前記スイッチ階層は、ネットワークファブリックを有する、請求項１２に記載のサーバーシステム。
【請求項１４】
前記ネットワークファブリックは、PCIeネットワークを有し、
前記少なくとも1つのNDPエンジンは、プロセッサベースのNDPエンジン又はフィールドプログラマブルゲートアレイ（FPGA）ベースのNDPエンジンを有する、請求項１３に記載のサーバーシステム。
【請求項１５】
サーバーシステムであって、
複数の第1大容量ストレージデバイスと、
前記複数の第1大容量ストレージデバイスに結合された少なくとも1つの中央処理部(CPU)と、
少なくとも1つのニアデータプロセシング(NDP)エンジンと、
各NDPエンジンと前記複数の第1大容量ストレージデバイスとの間に配置されたスイッチ階層と、を有し、
各NDPエンジンは、複数の第2大容量ストレージデバイスと関連付けられ、そして前記CPUと前記少なくとも1つのNDPエンジンに関連付けられた前記複数の第2大容量ストレージデバイスとの間に配置され、
前記複数の第2大容量ストレージデバイスの数量は、前記複数の第1大容量ストレージデバイスの数量と同じか又は少ないかであり、
前記スイッチ階層は、各NDPエンジンを前記少なくとも1つのNDPエンジンと関連付けられた前記複数の第2大容量ストレージデバイスのそれぞれに通信可能に結合する、サーバーシステム。
【請求項１６】
前記サーバーシステムを、ネットワークを介して前記サーバーシステムの外部にある、少なくとも1つの遠隔システムと通信可能に結合するネットワークインターフェースと、
前記CPUと前記少なくとも1つのNDPエンジンとの間に配置された通信ファブリックと、をさらに有する、請求項１５に記載のサーバーシステム。
【請求項１７】
前記スイッチ階層は、第2NDPエンジンと前記複数の第1大容量ストレージデバイスとの間に配置され、
前記スイッチ階層は、前記第2NDPエンジンを前記第2NDPエンジンと関連付けられた前記複数の第2大容量ストレージデバイスに通信可能に結合する、請求項１６に記載のサーバーシステム。
【請求項１８】
前記NDPエンジンの数は、前記CPUに関連する帯域幅、前記ネットワークに関連する帯域幅、前記通信ファブリックに関連する帯域幅、及び全てのNDPエンジンに関連する帯域幅、のうちの最小帯域幅を、単一のNDPエンジンに関連する帯域幅で割ったものに基づく、請求項１６に記載のサーバーシステム。
【請求項１９】
前記スイッチ階層は、ネットワークファブリックの一部である、請求項１８に記載のサーバーシステム。
【請求項２０】
前記ネットワークファブリックは、PCIeネットワークを有し、
前記少なくとも1つのNDPエンジンは、プロセッサベースのNDPエンジン又はフィールドプログラマブルゲートアレイ（FPGA）ベースのNDPエンジンを有する、請求項１９に記載のサーバーシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに記載された主題は、概して、サーバーシステムにおける性能不均衡を減らすシステム及び方法に関し、より詳細には、データが貯蔵されることのできる所の近くでデータプロセシングを提供して、サーバーシステムにおける性能不均衡を減らすサーバーシステムのアーキテクチャ及び方法に関する。
【背景技術】
【０００２】
現代のデータセンターは、データセンターの性能及びエネルギー効率の双方を阻害する、データプロセシングとデータの移動と間の不均衡の問題に困っている。不均衡は、一般的にサーバーシステムの構成要素と関連するレイテンシ(latency)又はボトルネック(bottleneck)に基づく。例えば、データ集約型(data-intensive)アプリケーションは、メモリを介したデータの移動により誘発される性能ボトルネックをもたらし得る。計算集約型(computation-intensive)アプリケーションに対し、ボトルネックは、プロセッサの負荷により誘発され得る。不均衡はまた、サーバーシステムの構成要素の十分でない利用、例えば、データ又は命令を待つ遊休状態に有り得るが、現状維持のために、相変わらずエネルギーを消費するメモリ及び/又はプロセッサに主に起因する、追加的なエネルギーの消費をもたらしてしまい得る。
【０００３】
ビッグデータ(big  data)の分析を採用するトレンドは、サーバーシステムにおいて発生し得る不均衡をより悪化させてしまい得る。例えば、ビッグデータの分析は、隠されたパターン、知られていない相関関係、市場のトレンド、消費者の嗜好及び/又は他の有用な情報を探り出すために、大きな且つ多様なデータセットでオペレート(operate)できる。このようなビッグデータの分析のために、性能ボトルネックを誘発しやすい可能性のある大量のデータ移動が伴い得る。同様に、ビッグデータの分析のための強力なツール(tool)を提供するマシンラーニング(machine  learning)は、トレーニング(training)のためのデータの大きいセットを伴いながらも、著しく計算集約的である。処理されるデータの量及びワークロード(workload)のデータプロセシングの分析複雑度が上がるほど、データセンターの性能及びエネルギー効率は、より低下されてしまい得る。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第2017/0285968A1号公報
【特許文献２】中国特許出願公開第106933510A号公報
【非特許文献】
【０００５】
【非特許文献１】HANDLEY，Mark  et  al.，"Re-architecting  datacenter  networks  and  stacks  for  low  latency  and  high  performance"，SIGCOMM  ’17，August  21-25，2017，Los  Angeles，CA，USA
【非特許文献２】YOSHIMI，Masato  et  al.，"Accelerating  OLAP  workload  on  interconnected  FPGAs  with  Flash  storage"，Conference  Publishing  Services，2014  Second  International  Symposium  on  Computing  and  Networking，December  10，2014
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、データ集約型又は計算集約型のアプリケーションにより誘発されるシステム不均衡を減らすサーバーシステムを提供することにある。
【課題を解決するための手段】
【０００７】
例示的な実施形態は、複数の第1大容量ストレージデバイス(mass-storage  devices)、少なとも一つの中央処理部(CPU)、及び少なくとも一つのニアデータプロセシング(NDP)エンジンを含む、サーバーシステムを提供する。少なくとも1つのCPUは、複数の第1大容量ストレージデバイスに結合される。各NDPエンジンは、複数の第2大容量ストレージデバイスと関連付けられ、そしてCPUと少なくとも一つのNDPエンジンに関連付けられた複数の第2大容量ストレージデバイスとの間に配置される。複数の第2大容量ストレージデバイスの数量は、複数の第1大容量ストレージデバイスの数量と同じか又は少ないかである。大容量ストレージデバイスは、少なくとも一つのソリッドステートドライブ(SSD)デバイスと、を有する。サーバーシステムをネットワークを介して、少なくとも一つの遠隔システムと通信可能に結合するネットワークインターフェースと、そしてCPUと少なくとも一つのNDPエンジンとの間に配置された通信ファブリックと、をさらに有し、少なくとも一つの遠隔システムは、サーバーシステムの外部にある。一実施形態において、NDPエンジンの数は、CPUに関連する帯域幅、ネットワークに関連する帯域幅、通信ファブリックに関連する帯域幅、及び全てのNDPエンジンに関連する帯域幅、のうちの最小帯域幅を、単一のNDPエンジンに関連する帯域幅で割ったものに、少なくとも部分的に基づく。他の実施形態において、少なくとも一つのNDPエンジン及び複数の第1大容量ストレージデバイスの間に配置されたスイッチ階層をさらに有し、スイッチ階層は、少なくとも一つのNDPエンジンを、少なくとも一つのNDPエンジンと関連付けられた複数の第2大容量ストレージデバイスに通信可能に結合する。もう一つの実施形態において、スイッチ階層は、第2NDPエンジン及び複数の第1大容量ストレージデバイスの間に配置され、スイッチ階層は、第2NDPエンジンを第2NDPエンジンと関連付けられた複数の第2大容量ストレージデバイスと通信可能に結合する。
【０００８】
他の例示的な実施形態は、ネットワークインターフェース、複数の第1SSDデバイス、少なくとも一つのCPU、及び少なくとも一つのNDPを含む、サーバーシステムを提供する。ネットワークインターフェースは、サーバーシステムを、ネットワークを介して少なくとも一つの遠隔システムと通信可能に結合し、少なくとも一つの遠隔システムは、サーバーシステムの外部にある。少なくとも一つのCPUは、ネットワークインターフェース及び複数の第1SSDデバイスに結合される。各NDPエンジンは、複数の第2SSDデバイスと関連付けられ、そしてCPUと少なくとも一つのNDPエンジンに関連付けられた複数の第2SSDデバイスとの間に配置され、複数の第2SSDデバイスの数量は、複数の第1SSDデバイスの数量と同じか又は少ないかである。通信ファブリックは、CPUと少なくとも一つのNDPエンジンとの間に配置され、NDPエンジンの数は、CPUに関連する帯域幅、ネットワークに関連する帯域幅、通信ファブリックに関連する帯域幅、及び全てのNDPエンジンに関連する帯域幅、のうちの最小帯域幅を、単一のNDPエンジンに関連する帯域幅で割ったものに基づく。
【０００９】
もう一つの例示的な実施形態は、複数の第1大容量ストレージデバイス、少なくとも一つのCPU、少なくとも一つのNDPエンジン及びスイッチ階層を含む、サーバーシステムを提供する。少なくとも一つのCPUは、複数の第1大容量ストレージデバイスに結合される。各NDPエンジンは、複数の第2大容量ストレージデバイスと関連付けられ、そしてCPUと少なくとも一つのNDPエンジンに関連付けられた複数の第2大容量ストレージデバイスとの間に配置される。複数の第2大容量ストレージデバイスの数量は、複数の第1大容量ストレージデバイスの数量と同じか又は少ないかである。スイッチ階層は、各NDPエンジンを、少なくとも一つのNDPエンジンと関連付けられた複数の第2大容量ストレージデバイスのそれぞれに通信可能に結合する。ネットワークインターフェースは、サーバーシステムを、ネットワークを介して少なくとも一つの遠隔システムと通信可能に結合し、通信ファブリックは、CPU及び少なくとも一つのNDPエンジンの間に配置される。スイッチ階層は、第2NDPエンジンと複数の第1大容量ストレージデバイスとの間に配置され、スイッチ階層は、第2NDPエンジンを第2NDPエンジンと関連付けられた複数の第2大容量ストレージデバイスに通信可能に結合する。
【発明の効果】
【００１０】
本発明によると、ニアデータプロセシングエンジンがサーバーシステムに配置される。従って、システムの不均衡を減らすサーバーシステムが提供される。
【図面の簡単な説明】
【００１１】
次のセクション(section)において、ここに記載された主題の側面が、図面に図示された模範的な実施形態を参照して説明される。
【００１２】
【図１ａ】図1aは、ここに記載された主題による、サーバーシステムのアーキテクチャの第1の例示的な実施形態のブロック図を示す。
【図１ｂ】図1bは、ここに記載された主題による、サーバーシステムのアーキテクチャの第2の例示的な実施形態のブロック図を示す。
【図２】図2は、ここに記載された主題による、サーバーシステムのアーキテクチャ及びNDPエンジンのブロック図を示す。
【図３ａ】図3a及び図3bは、ここに記載された主題による、NDPを有するサーバーシステム中でデータがたどる例示的な経路をそれぞれ示す。
【図３ｂ】図3a及び図3bは、ここに記載された主題による、NDPを有するサーバーシステム中でデータがたどる例示的な経路をそれぞれ示す。
【図４ａ】図4aは、ローデータが、ホスト側DRAMを介してNDPEへ通過する通常の例示的なデータの流れを示す。
【図４ｂ】図4bは、ここに記載された主題による、ローデータがホスト側DRAMを介してNDPEへ通過する必要のない代案的かつ例示的なデータの流れを示す。
【図５ａ】図5aは、ここに記載された主題による、サーバーシステムのアーキテクチャの例示的な実施形態のブロック図を示す。
【図５ｂ】図5bは、ここに記載された主題による、2つのSSDがマルチプレクサー(multiplexers)を利用して2つのNDPEに適応的に接続される、スイッチ階層の例示的な実施形態のブロック図を示す。
【図５ｃ】図5cは、ここに記載された主題による、4つのSSDが4つのNDPEに適応的に接続される、スイッチ階層の例示的な実施形態のブロック図を示す。
【図５ｄ】図5dは、ここに記載された主題による、n個のSSDがマルチプレクサーを利用してn個のNDPEに適応的に接続される、スイッチ階層の例示的な実施形態のブロック図を示す。
【図６ａ】図6aは、ここに記載された主題による、N=4である例示的なサーバーシステムにおいて選択的に活性化されるNDPEを示す。
【図６ｂ】図6bは、ここに記載された主題による、N=5である例示的なサーバーシステムにおいて選択的に活性化されるNDPEを示す。
【図６ｃ】図6cは、ここに記載された主題による、N=6である例示的なサーバーシステムにおいて選択的に活性化されるNDPEを示す。
【図６ｄ】図6dは、ここに記載された主題による、N=7である例示的なサーバーシステムにおいて選択的に活性化されるNDPEを示す。
【図６ｅ】図6eは、ここに記載された主題による、N=8である例示的なサーバーシステムにおいて選択的に活性化されるNDPEを示す。
【図７】図7は、ここに記載された主題による、8つのNDPEを備えた例示的なサーバーシステムについて、どのNDPEが選択的に活性化され、そしてどのSSDが活性化されたNDPEに接続されるかを判定するための例示的な擬似コードを利用する、例示的な方法についての順序図を示す。
【発明を実施するための形態】
【００１３】
以下の詳細な説明において、本開示の完全な理解を提供するために、多数の具体的な詳細が提供される。しかしながら、記載された側面は、このような具体的な詳細なしに実施されうることが、この分野における熟練された者に理解されるはずである。他の例において、よく知られた方法、手順、構成要素及び回路は、ここに記載された主題を曖昧にしないために詳細に記述されない。
【００１４】
この明細書の全体にわたって、「一実施形態」又は「実施形態」についての参照は、その実施形態と関連して説明された特定の特色、構造、又は特徴が、ここに記載された少なくとも一つの実施形態に包含されることができることを意味する。従って、この明細書にわたって多様な所での「一実施形態において」又は「実施形態において」又は「一実施形態による」というフレーズ(又は類似の意味を有する他のフレーズ)の登場は、必ずしも全てが同じ実施形態を参照しているわけではない。なお、特定の特色、構造又は特徴は、一つ又はそれより多い実施形態において任意の適切な方法で組み合わせられる。この点において、ここで使用されるとき、「模範的な」という用語は、例、例示又は事例を提供する。「模範的な」としてここで記述される如何なる実施形態も、必然的に他の実施形態より選好されるべきであったり、有益なものと見なされたりしない。なお、ここで議論される文脈に依存して、単数の形態は、対応する複数の形態を包含し、そして複数の形態は、対応する単数の形態を包含する。ここで示される、そして議論される多様な図(構成要素図を含めて)は、説明的な目的だけのためのものであり、縮尺通りに描かれていないことに留意すべきである。同様に、多様な波形及びタイミング図は、説明的な目的だけのために示される。例えば、要素の一部の寸法は、明確性のために他の要素より相対的に強調され得る。なお、適切であると考えられる場合、参照番号が複数の図において反復されて対応する及び/又は同じ要素を示す。
【００１５】
ここで使用される用語は、特定の模範的な実施形態を説明する目的だけのためのものであり、請求された主題の限定として意図されない。ここで使用されるように、単数の形態は、文脈が明らかにそうでないことを示さない限り、複数の形態もまた包含するものと意図される。この明細書において使用されるとき、「有する(comprises)」及び/又は「有している(comprising)」との用語は、言及された特色、整数、ステップ、動作、要素、及び/又は構成要素の存在を明示し、1つ又はそれより多い別の特色、整数、ステップ、動作、要素、構成要素、及び/又はこれらのグループの存在又は追加を排除しない。ここで使用されるとき、「第1」、「第2」などの用語は、それらが先行する名詞についてのラベルとして使用され、そのように明白に定義されていない限り、どの形態の順序(例えば、空間的、時間的、論理的など)も暗示しない。なお、同じ参照番号は、2つ又はそれより多い図において使用されて、同じ又は類似の機能を有する部分、構成要素、ブロック、回路、ユニット、又はモジュールを参照できる。しかしながら、このような使用は、説明の単純化及び議論の容易さだけのためものであり、このような構成要素又はユニットの構造的又は構成的詳細が全ての実施形態にわたって同一であったり、又はこのような共通に参照される部分/モジュールがここで議論される、特定の実施形態の教示を具現したりする唯一の方法であることを暗示しない。
【００１６】
別に定義されていない限り、ここで使用される全ての用語(技術的、そして科学的用語を含めて)は、本主題が属する分野における通常の技術を有した者により共通的に理解されるものと同じ意味を有する。共通的に使用される辞書で定義されたような用語は、関連された分野の脈絡からそれらの意味と一致する意味を有するものと解釈されるべきであり、ここで、そのように明白に定義されていない限り、理想的に又は過度に形式的に解釈されない。
【００１７】
ニアデータプロセシング(NDP)(Near-data  processing)は、データセンターサーバーの構成を最適化して、データプロセシング及びデータの移動により誘発される不均衡の問題を減らすのに使用され得る。NDPエンジンの代案的な形態として内蔵型プロセッサ(例えば、CPU，ARM，RISC  Vなど)及び/又はフィールドプログラマブルゲートアレイ(FPGA)を組み込むNDPサーバーアーキテクチャが使用されることがあり、それぞれ、PNDPサーバー(プロセッサベースのNDPサーバー)アーキテクチャ又はFNDPサーバー(FPGAベースのNDPサーバー)アーキテクチャが形成され得る。例えば、NDPエンジンとしてFPGAを利用するFNDPサーバーアーキテクチャは、性能の向上及びエネルギー効率の面だけでなく、システムのコストの面においてもまた重大な長所を提供する。
【００１８】
NDPは、データの位置及びデータから抽出されるべき情報に基づいて、サーバーシステムアーキテクチャ内の最も適切な位置でデータを処理することにより、データの移動を最小化できる。従って、NDPにおいて演算は、キャッシュ、メインメモリ、及び/又は永続性ストレージ(persistent  storage)のようなデータが位置した、直ぐそこで遂行されることができる。これは、データを貯蔵できる位置と関係なしにデータをCPUへ移動させるものと対照的である。NDPプロセシングは、NDPエンジンが置かれ得るメモリ階層内の異なる位置に基づいて3つのグループ、即ち、(1)ストレージデバイス(例えば、SSD、HDD)内のNDP、(2)ストレージデバイスに隣接した(通常、SSD、HDDとホストとの間に割り込む)NDP、(3)ダイナミックランダムアクセスメモリ(DRAM)(プロセッサに隣接した)内のNDPに分類されることができる。
【００１９】
一実施形態において、サーバーシステムのプロセッサと大容量ストレージデバイス(mass  storage  devices)(ソリッドステートドライブ(SSD)デバイスのような)との間に、1つ又はそれより多いNDPエンジンが割り込むことができる。NDPエンジンは、サーバーシステムのプロセッサ位置よりもサーバーシステム内のより適切な位置で演算及び/又はデータプロセシングを提供することにより、データの移動を最小化するように構成され得る。他の実施形態において、1つ又はそれより多いNDPエンジンは、データの移動を最小化するだけでなく、計算集約型アプリケーションにより誘発され得るプロセッサ上の負荷もまた減らせる。一実施形態において、NDPエンジンを1つ又はそれより多いSSDとペアリングする(pairing)ことは、スケーラブルなシステム構成を提供できる。
【００２０】
一実施形態において、ここに記載された主題は、SSD及びホストCPUの間の経路に挿入されたNDP(即ち、HDDに隣接したNDP)を提供する。他の実施形態において、NDPは、データの移動を減らし、そしてSSD間の並列性をより完全に利用する目的を有してストレージサーバーのSSD内に配置されることができる。もう一つの実施形態において、1つ又はそれより多いNDPエンジンは、DRAMに集積されることができる。
【００２１】
全てのタイプのコンピューティングユニット(例えば、高エネルギー効率内蔵型プロセッサ、FPGA、ストリーミング(streaming)プロセッサなど)が、NDPエンジンとして使用され得る。例えば、一実施形態において、SSDデバイス内のコントローラーは、SSDデバイスの物理的ストレージ媒体からアクセスされたデータを処理できる。即ち、NDPエンジンは、データプロセシングアプリケーションのためにホストとSSDデバイスとの間の経路に配置されることができる。他の実施形態において、1つ又はそれより多いNDPエンジンはDRAMに集積されることができる。
【００２２】
図1aは、ここに記載された主題による、サーバーシステム100の構成の第1の例示的な実施形態のブロック図を示す。サーバーシステム100は、1つ又はそれより多い通信ネットワーク103(1つの通信ネットワークのみが示される)を介して1つ又はそれより多いクライアントデバイス102(1つのクライアントデバイスのみが示される)に接続されることができる。
【００２３】
サーバーシステム100は、プロセッサ階層104、通信ファブリック階層105、NDPエンジン(NDPE)階層106、及びストレージ階層107を含み得る。大容量ストレージ階層107は、NDPE階層106を介して通信ファブリック階層105に接続され、通信ファブリック階層105は、NDPE階層106及びストレージ階層107をプロセッサ階層104に接続できる。SSDの完全なデータの伝送帯域幅は、通信ファブリック階層105とSSD階層107との間に接続されるNDPE階層106を有するシステムに伝達されることができ、データ集約型又は計算集約型アプリケーションにより誘発される、任意の不均衡もまた減らせる。
【００２４】
プロセッサ階層104は、1つ又はそれより多いプロセッサ140及びシステムメモリ141を含み得る。一実施形態において、システムメモリ141は、DRAMを含み得る。他の実施形態において、システムメモリ141は、任意のタイプの揮発性メモリ及び/又は任意のタイプの不揮発性メモリを含み得る。通信ファブリック階層105は、1つ又はそれより多い通信スイッチ150及び通信リンクを含み得る。一実施形態において、通信ファブリック階層105は限定されないが、通信ファブリック階層105は、PCIe(Peripheral  Component  Interconnect  Express)ベースの通信ファブリックであり得る。
【００２５】
NDPE階層106は、1つ又はそれより多いNDPエンジンを含み得る。NDPE階層106は、n個のNDPエンジン(NDPE#0〜NDPE#n-1)を含み、nは整数である。NDPE階層106のNDPエンジンは、プロセッサベースのNDPエンジン、FPGAベースのNDPエンジン、又はこれらの組み合わせであり得る。他のタイプのNDPエンジンもまた可能であり、使用され得る。ストレージ階層107は、1つ又はそれより多い大容量ストレージデバイスを含み得る。一実施形態において、1つ又はそれより多い大容量ストレージデバイスは、SSDデバイスを含み得る。他の実施形態において、1つ又はそれより多い大容量ストレージデバイスは、HDDデバイスを含み得る。大容量ストレージ階層107は、n個のSSD(SSD#0〜SSD#n-1)を含み得る。図1aに図示された例示的な実施形態では、各NDPエンジンは、各SSDデバイスに対応する。
【００２６】
図1bは、ここに記載された主題による、サーバーシステム100′の構成の第2の例示的な実施形態のブロック図を示す。サーバーシステム100′は、1つ又はそれより多い通信ネットワーク103(1つの通信ネットワークのみが示される)を介して、1つ又はそれより多いクライアントデバイス102(1つのクライアントデバイスのみが示される)に接続されることができる。
【００２７】
サーバーシステム100′は、プロセッサ階層104、通信ファブリック階層105、NDPE階層106′、及びストレージ階層107′を含み得る。大容量ストレージ階層107′は、通信ファブリック階層105を介してNDPE階層106′に接続されることができ、通信ファブリック階層105は、NDPE階層106′及びストレージ階層107′をプロセッサ階層104に接続できる。
【００２８】
図1aに図示されたサーバーシステム100と同様に、サーバーシステム100′のプロセッサ階層104は、1つ又はそれより多いプロセッサ140及びシステムメモリ141を含み得る。一実施形態において、システムメモリ141は、DRAMを含み得る。他の実施形態において、システムメモリ141は、任意のタイプの揮発性メモリ及び/又は任意のタイプの不揮発性メモリを含み得る。通信ファブリック階層105は、1つ又はそれより多い通信スイッチ150及び通信リンクを含み得る。一実施形態において、通信ファブリック階層105は、そのように限定されないが、通信ファブリック階層105は、PCIeベースの通信ファブリックであり得る。
【００２９】
NDPE階層106′は、1つ又はそれより多いNDPエンジンを含み得る。NDPE階層106は、n-m個のNDPエンジン(NDPE#m〜NDPE#n-1)を含み、n及びmは整数であり、m＜nである。NDPE階層106′のNDPエンジンは、プロセッサベースのNDPエンジン、FPGAベースのNDPエンジン、又はこれらの組み合わせであり得る。他のタイプのNDPエンジンも、また可能であり、使用され得る。ストレージ階層107は、1つ又はそれより多い大容量ストレージデバイスを含み得る。一実施形態において、1つ又はそれより多い大容量ストレージデバイスは、SSDデバイスを含み得る。他の実施形態において、1つ又はそれより多い大容量ストレージデバイスは、HDDデバイスを含み得る。大容量ストレージ階層107は、m個のSSD(SSD#0〜SSD#m-1)を含み得る。
【００３０】
図2は、ここに記載された主題による、サーバーシステム100の構成及びNDPエンジンのブロック図を示す。NDPエンジンは、データプロセシングデバイス201、メモリ202、及びインターフェース203，204を含み得る。インターフェース203及び204は、それぞれ、ストレージ階層107の1つ又はそれより多いSSD(1つのSSD#iにより示される)及び通信ファブリック105に接続できる。一実施形態において、データプロセシングデバイス201は、クアッドコア(quad-core)ARMコーテックス(Cortex)-A53デバイスのような、しかし、これに限定されないプロセッサ内蔵型コアであり得る。他の実施形態において、データプロセシングデバイス201は、FPGAデバイスであってもよく、この場合、FPGAベースのNDPEに接続されたSSDはFPGAチップ内のハードウェア資源(即ち、DSPスライス、LUT、RAMなど)を分割（パーティション）できる。システム100は、分割された資源を利用して、NDPEに接続されることができる各SSDに対するカーネル(kernel)をインスタンス化(instantiate)できる。プロセッサベースのNDPE及びFPGAベースのNDPEが、相異なるアプリケーションの具現を有し得るが、各SSDに対するデータを別途に処理するためのプロセシング要素(例えば、クアッドコアARMコーテックス-A53、又はFPGA資源によりインスタンス化されたアプリケーションカーネル)があるはずである。
【００３１】
NDPエンジン内のメモリ202は、DRAMであり得るし、メタデータストア(metadata  store)のために使用され得る。DRAMはまた、SSDとNDPエンジンとの間に、NDPエンジンとホストCPUとの間に、及び/又はNDPエンジンにより実行されるアプリケーションに中間データストア(intermediate  data  store)として、データの移動のためのバッファ(buffer)を提供できる。インターフェース203，204は、NDPEからSSD及びホストCPUへの接続を提供できる。一実施形態において、インターフェース203，204は、PCIeベースのインターフェースであり得る。
【００３２】
図2に図示されたサーバーシステム100の構成は、2つのタイプのプロセシングユニット、即ち、1つ又はそれより多いホストCPU及び1つ又はそれより多いNDPエンジンを含み得る。ニアデータプロセシング、即ち、SSDからのデータリード(read)及びNDPエンジンにおけるデータプロセシングの実行を、サーバーシステム内のNDPエンジンの全てが自動的に提供するのでなくてもよい。データプロセシングは、ホストCPUから始めることができる。ホストCPUは、(1)サーバーのオペレーティングシステムを管理すること、(2)サーバーシステム内の全てのNDPエンジンの状態をモニタリングすること、(3)1つ又はそれより多いホスト側のアプリケーションプログラムを実行すること、(4)NDPE側のアプリケーションプログラムをNDPE階層にオフロード(offload)すること、及び(5)アーギュメント(arguments)をNDPE側のアプリケーションプログラムに記入し、そしてNDPE階層をローチング(launching)して対応するSSDからのデータをリードして処理することを、担うように構成され得る。
【００３３】
なお、図2に図示されたように、システムに2つのタイプのDRAM、即ち、ホストDRAM及びNDPE  DRAMが有り得る。NDPE  DRAMは、一種の「グローバル(global)」メモリとして見なされることができ、ホストCPU及びデータバッファから渡されたNDPE側のアプリケーションパラメータのために、ホストCPU及びNDP内のプロセシングデバイスによりアクセス可能になれる。特定のNDPエンジン内の「グローバルメモリ」は、他のNDPエンジンにより直接アクセスできないこともあるので、「グローバルメモリ」という用語は、ここで使用されるとき、図2に図示された全体のサーバーシステムのためのグローバルメモリではないのが理解されるべきである。
【００３４】
図2に図示されたサーバーシステム100内におけるNDPエンジンは、サーバーシステム100を単純化するために、互いに直接的に接続されなくてもよい。図2に図示されたように、ホストDRAMは、相異なるNDPエンジン間のデータ伝送経路の一部として使用されることができ、従って、2つのNDPエンジン間での通信/データの伝送があるとき、データは、ホストDRAMを介して対応するNDPへ伝送されることができる。例えば、図3aのNDPE#n-2が、NDPE#0からデータを受信しようとするとき、データは、ホストDRAMを介したNDPE#0からNDPE#n-2への経路301をたどる。他の例として、データプロセシングが、各NDPEにおいて遂行されるとき、結果データは、図3bにおいて経路302により示されるように、CPUにおける追加のプロセシングのためにホストDRAMで集約されることができる。NDPエンジンは、相互に接続されてもよく、これは複雑なハードウェアの接続ルーティング(routing)を提供し、一部のケースでアプリケーションが相異なるNDPE間でデータ又はメッセージを頻繁に交換する必要がある場合に、システムに通信負荷を追加し得る。一実施形態において、NDPEは、PCIeスイッチのような、しかしながら、これに限定されない、スイッチを介してホストメモリをバイパス(bypass)して相互に通信できる。
【００３５】
図4aは、ロー（未加工）データがホスト側DRAMを介してNDPEへ伝達される、通常の例示的なデータの流れ400を示す。例えば、FPGAベースのエンジン内のカーネル(即ち、アプリケーションの一部)を加速する必要がある場合に、図4aにおいて、401に図示されたように、サーバーシステム100のCPU140は、まず、SSDからホスト側DRAM141にデータをリード(read)する。CPU140は、次いで402においてデータをFPGA側DRAMに記入し、そして403においてカーネルを始めてFPGAでデータを処理できる。結果データは、404においてホスト側DRAMにリードされることができる。
【００３６】
図4bは、ここに記載された主題による、ローデータがホスト側DRAMを介してNDPEへ渡る必要がない代案的かつ例示的なデータの流れ410を示す。ローデータは411においてDMA(Direct  Memory  Access)タイププロセスを利用して、SSDからCPU/FPGA側DRAMに直接リードされることができる。カーネルは、412において始まってCPU/FPGAでデータを処理できる。結果データは、413において、ホスト側DRAMにリードされることができる。従って、図4bに図示されたデータの流れを利用して、各SSDの前にあるNDPEは完全に並列的な方式で動作できる。
【００３７】
サーバーシステムは、NDPE階層内にスイッチ階層を含めてサーバーシステムの設計に柔軟性を提供するように構成され得る。図5aは、ここに記載された主題による、サーバーシステム500の例示的な実施形態のアーキテクチャの例示的な実施形態のブロック図を示す。サーバーシステム500は、図1aに図示されたサーバーシステム100と同じ構成要素を含み得る。サーバーシステム500は、NDPE階層106a及びスイッチ階層106bを含むことにより、サーバーシステム100と異なる。NDPE階層106a及びスイッチ階層106bは、NDPEの数、そしてNDPE及びSSDの間の接続を適応的に変更することにより、サーバーシステム内で発生し得るシステム不均衡を減らすように適応的に構成され得る。一例において、スイッチ階層106bは、2つのSSDが、2つのNDPEと適応的に接続されることができるように構成され得る。他の例において、スイッチ階層106bは、各SSDが、全てのNDPEに適応的に接続されることができるように構成され得る。
【００３８】
図5bは、SSDの各ペア(pair)がマルチプレクサー(multiplexer)511を利用して、2つのNDPE中のいずれか1つに適応的に接続されることができる、スイッチ階層106bの例示的な実施形態のブロック図を示す。図5cは、4つのSSDの各グループが、4つのNDPE中のいずれかに適応的に接続されることができる、スイッチ階層106bの例示的な実施形態のブロック図を示す。マルチプレクサー511は、4つのSSDと4つのNDPEとの間に適応的に接続を提供する。図5dは、n個のSSDがマルチプレクサー511を利用してn個のNDPEに適応的に接続されることができる、スイッチ階層106bの例示的な実施形態のブロック図を示す。
【００３９】
例えば、サーバーシステム100が、CPU140において帯域幅ベースのボトルネックを経験している場合、図5bに図示されたマルチプレクサー511は、選択的に活性化されて次の技術を利用して該当するボトルネックを緩和できる。偶数ID番号  iを有するSSDは、同じID  iを有するNDPEに接続され、奇数ID番号  jを有するSSDは、ID  j-1又はjを有するNDPEに接続される。
【００４０】
図5a及び図5bを参照すると、理論的に活性化されることができるNDPエンジンの数(n′)は、下記の数学式（１）のように決定されることができる。
【００４１】
【数１】
2019185764.tif 000003
【００４２】
ここで、PBWはCPUとNDPエンジンとの間のファブリックの相互接続の帯域幅であり、NBWはネットワーク103の帯域幅であり、CPUBWはCPU140の帯域幅であり、nは利用可能なNDPEの整数であり、NDPBWはNDPエンジンの帯域幅(全てのNDPEが同じ帯域幅を有する)である。
【００４３】
活性化されることができるNDPEの実際の数(N)は、次の数学式（２）により与えられる。
【００４４】
【数２】
2019185764.tif 000004
【００４５】
下記の表1は、8つのNDPE(即ち、n=8)を備えたサーバーシステムについて活性化されることができる、NDPEの例示的な数を提供する。
【００４６】
【表１】
2019185764.tif 000005
【００４７】
図6a乃至図6eに図示された灰色のNDPEは選択的に活性化されない。図6aは、N=4である例示的なサーバーシステム500において選択的に活性化されるNDPEを示す。図6bは、N=5である例示的なサーバーシステム500において選択的に活性化されるNDPEを示す。図6cは、N=6である例示的なサーバーシステム500において選択的に活性化されるNDPEを示す。図6dは、N=7である例示的なサーバーシステム500において選択的に活性化されるNDPEを示す。図6eは、N=8である例示的なサーバーシステム500において選択的に活性化されるNDPEを示す。
【００４８】
次の例示的な擬似(pseudo)コードは、どのNDPEが選択的に活性化されるのか、及びどのSSDが活性化されたNDPEに接続されるべきなのかを判定するのに使用され得る。
【００４９】
【数３】
2019185764.tif 000006
【００５０】
図7は、ここに記載された主題による、8つのNDPE(即ち、n=8)を有する例示的なサーバーシステムに対し、どのNDPEが選択的に活性化されるのか、及びどのSSDが活性化されたNDPEに接続されるのかを判定するために、前記の例示的な擬似コードを使用する例示的な方法700についての順序図を示す。例示的なサーバーシステム500のCPUがボトルネックを経験することを考える。プロセスは、701から始める。702において、数学式1のパラメータが判定される。理論的に活性化されることができる、NDPエンジンの数(n′)が数学式1から判定されることができる。703において、数学式2からBが判定される。704において、前記で提示された、例示的な擬似コードが実行されることができる。705において、カーネルが活性化されたNDPEに配置されることができる。706において、サーバーシステム500のCPUは、結果をリードし、そして任意の追加のプロセシングを遂行できる。707において、サーバーシステム500のCPUは、減少されたシステム不均衡で結果を完了し、そして結果をネットワークを介してユーザに伝送する。708において、プロセスが終了する。
【００５１】
この分野における熟練された者に理解されるように、ここに記述された革新的な思想は、アプリケーションの広い範囲にわたって修正して変更されることができる。従って、請求された主題の範囲は、前記で議論された模範的な教示中のいずれかに限定されず、代わりに以下の請求項により定義される。
【産業上の利用可能性】
【００５２】
本発明は、ニアデータプロセシングエンジンによりシステム性能の不均衡を減らすサーバーシステムの具現に有用である。
【符号の説明】
【００５３】
100、100′、500：サーバーシステム
104：プロセッサ階層
105、105′：通信ファブリック階層
106、106′、106a：NDPE階層
106b：スイッチ階層
107、107′：ストレージ階層
140：プロセッサ
141：システムメモリ
150：通信スイッチ
201：データプロセシングデバイス
202：メモリ
203、204：インターフェース
511：マルチプレクサー
【図１ａ】
2019185764.tif 000007
【図１ｂ】
2019185764.tif 000008
【図２】
2019185764.tif 000009
【図３ａ】
2019185764.tif 000010
【図３ｂ】
2019185764.tif 000011
【図４ａ】
2019185764.tif 000012
【図４ｂ】
2019185764.tif 000013
【図５ａ】
2019185764.tif 000014
【図５ｂ】
2019185764.tif 000015
【図５ｃ】
2019185764.tif 000016
【図５ｄ】
2019185764.tif 000017
【図６ａ】
2019185764.tif 000018
【図６ｂ】
2019185764.tif 000019
【図６ｃ】
2019185764.tif 000020
【図６ｄ】
2019185764.tif 000021
【図６ｅ】
2019185764.tif 000022
【図７】
2019185764.tif 000023