(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-31
(45)【発行日】2024-06-10
(54)【発明の名称】多数の装置環境でペアリングするFPGAとSSDを識別するためのストレージ装置及びコプロセッサを含むシステム及び方法
(51)【国際特許分類】
G06F 13/14 20060101AFI20240603BHJP
G06F 13/10 20060101ALI20240603BHJP
G06F 13/38 20060101ALI20240603BHJP
G06F 13/42 20060101ALI20240603BHJP
【FI】
G06F13/14 330A
G06F13/10 340A
G06F13/14 310H
G06F13/38 340D
G06F13/42 320A
(21)【出願番号】P 2019169341
(22)【出願日】2019-09-18
【審査請求日】2022-08-04
(32)【優先日】2018-09-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-10-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-11-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-12-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-01-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-03-13
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-06-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】ピント, オスカー ピー.
(72)【発明者】
【氏名】カチェア, ラムダス ピー.
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2014-071478(JP,A)
【文献】特開2018-045688(JP,A)
【文献】米国特許出願公開第2012/0102580(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06-3/08
G06F9/38、9/455-9/54
G06F13/10-13/14
G06F13/38-13/42
G06F15/16-15/177
(57)【特許請求の範囲】
【請求項1】
データ
のための第1ストレージ、固有のSSD ID(identifier)
のための第2ストレージ、及び固有のコプロセッサID
のための第3ストレージを含むSSD(Solid State Drive)と、
前記固有のコプロセッサID
のための第4ストレージ、前記固有のSSD ID
のための第5ストレージを含むコプロセッサと、
前記SSDと前記コプロセッサとの間のハードウェアインターフェースと、を備え
、
前記固有のSSD IDは、前記SSDに関連付けられ、
前記固有のコプロセッサIDは、前記コプロセッサに関連付けられ、
前記コプロセッサは、前記固有のSSD IDのための前記SSDをクエリして前記固有のSSD IDを前記第5ストレージに格納するように動作し、
オペレーティングシステムは、前記固有のSSD ID及び前記固有のコプロセッサIDを使用して前記SSDと前記コプロセッサとをペアリングすることを特徴とするシステム。
【請求項2】
前記コプロセッサは、FPGA(Field Programmable Gate Array)
、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、
及びイレイジャーコーディングコントローラ
のいずれか一つを含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記コプロセッサは、前記SSDに前記固有のコプロセッサIDを提供するように動作することを特徴とする請求項1に記載のシステム。
【請求項4】
前記SSDは、前記コプロセッサに前記固有のSSD IDを提供するように動作することを特徴とする請求項1に記載のシステム。
【請求項5】
前記SSDは、前記SSD及び前記コプロセッサに関するクエリをアウト・オブ・バンド(Out-Of-Band)で受信するように動作することを特徴とする請求項1に記載のシステム。
【請求項6】
前記SSDは、前記固有のSSD ID及び前記固有のコプロセッサIDの両方
で前記クエリに応答するように動作することを特徴とする請求項
5に記載のシステム。
【請求項7】
前記コプロセッサは、前記SSD及び前記コプロセッサに関するクエリをアウト・オブ・バンドで受信するように動作することを特徴とする請求項1に記載のシステム。
【請求項8】
前記コプロセッサは、前記固有のSSD ID及び前記固有のコプロセッサIDの両方
で前記クエリに応答するように動作することを特徴とする請求項
7に記載のシステム。
【請求項9】
前記SSDは、前記SSD及び前記コプロセッサに関するクエリをイン・バンド(In-Band)で受信するように動作することを特徴とする請求項1に記載のシステム。
【請求項10】
前記SSDは、前記固有のSSD ID及び前記固有のコプロセッサIDの両方
で前記クエリに応答するように動作することを特徴とする請求項
9に記載のシステム。
【請求項11】
データのための第6ストレージ、第2固有のSSD IDのための第7ストレージ、及び第2固有のコプロセッサIDのための第8ストレージを含む第2 SSDと、
前記第2固有のコプロセッサIDのための第9ストレージ、前記第2固有のSSD IDのための第10ストレージを含む第2コプロセッサと、
前記第2 SSDと前記第2コプロセッサとの間の第2ハードウェアインターフェ
ースと、を更に備え
、
前記第2固有のSSD IDは、前記第2 SSDに関連付けられ、
前記第2固有のコプロセッサIDは、前記第2コプロセッサに関連付けられ、
オペレーティングシステムは、前記第2固有のSSD ID及び前記第2固有のコプロセッサIDを使用して前記第2 SSDと前記第2コプロセッサとをペアリングすることを特徴とする請求項1に記載のシステム。
【請求項12】
ペアリングデータに対するパートナーをクエリするための第1装置又は第2装置によって実行される方法であって、
前記第1装置と前記第2装置との間のハードウェアインターフェースを介して第1装置から第2装置にクエリを伝送する段階と、
前記第1装置と前記第2装置との間の前記ハードウェアインターフェースを介して前記第1装置で前記第2装置から
前記第2装置を識別する第1ペアリングデータを含む応答を受信する段階と、
前記第1装置
内の第
2ストレージに前記第1ペアリングデータを格納する段階と、
前記第1装置
内の第
1ストレージから
前記第1装置を識別する第2ペアリングデータにアクセスする段階と、
前記第1装置と前記第2装置との間の前記ハードウェアインターフェースを介して前記第1装置から前記第2装置に前記第2ペアリングデータを伝送する段階と、を有
し、
オペレーティングシステムは、前記第1ペアリングデータ及び前記第2ペアリングデータを使用して前記第1装置と前記第2装置とをペアリングすることを特徴とする方法。
【請求項13】
SSDとコプロセッサとをクエリしてペアリングするためのオペレーティングシステムによって実行される方法であって、
第1仮想IDによって示されるSSD(Solid State Drive)に第1クエリを伝送する段階と、
前記第1クエリに応答して、前記SSDから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第2仮想IDによって示されるコプロセッサに第2クエリを伝送する段階と、
前記第2クエリに応答して、前記コプロセッサから前記固有のSSD ID及び前記固有のコプロセッサIDを受信する段階と、
前記第1仮想IDと前記第2仮想IDとをペアリングする段階と、を有することを特徴とする方法。
【請求項14】
前記第1仮想IDと前記第2仮想IDとをペアリングする段階は、前記固有のSSD ID及び前記固有のコプロセッサIDを返す前記SSD及び前記コプロセッサの両方に応答して、前記第1仮想IDと前記第2仮想IDとをペアリングする段階を含むことを特徴とする請求項
13に記載の方法。
【請求項15】
前記第1仮想IDと前記第2仮想IDとのペアリングに
関するクエリに応答するように動作するAPI(Application Programming Interface)を提供する段階を更に含むことを特徴とする請求項
13に記載の方法。
【請求項16】
前記APIを介してアプリケーションから前記第1仮想IDに対するペアのためのペアリングのクエリを受信する段階と、
前記第1仮想IDと前記第2仮想IDとのペアリングに応答して前記第2仮想IDを
前記アプリケーションに返す段階と、を更に含むことを特徴とする請求項
15に記載の方法。
【請求項17】
前記APIを介してアプリケーションからファイルに関連
付けられたペアに対するファイルのクエリを受信する段階と、
前記ファイルを格納する前記SSDを識別する段階と、
前記ファイルのクエリに応答して前記第1仮想ID及び前記第2仮想IDを
前記アプリケーションに返す段階と、を更に含むことを特徴とする請求項
15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに関し、より詳細には、多数の装置環境でペアリングするFPGAとSSDを識別するためのストレージ装置及びコプロセッサ(co-processor)を含むシステム及び方法に関する。
【背景技術】
【0002】
FPGA(Field Programmable Gate Array)及びSSD(Solid State Drive)サブ装置は、フォームファクタ、電力、密度、及び性能利益のために、一つのエンクロージャに、しばしば(しかし、常にではない)パッケージされる。FPGA及びSSDは、ホストのPCI(Peripheral Component Interconnect)の観点から、別途の物理的機能(PF:physical function)として表われる。FPGA及びSSDサブ装置は、相互関係がない別途の入力/出力(I/O)スタック(特に、ストレージ及びOpenCL)上に装着される。
【0003】
FPGA及びSSD装置の両方を含むフォームファクタは、三つのPFを示す筈である。即ち、Data PF(ユーザー空間PFと称される)、管理PF、及びNVMe(Non-Volatile Memory Express)PFである。最初の二つのPFはFPGAのためのものであり、三つ目のPFはSSDのためのものである。
【0004】
マシンが一つのFPGA/SSDのペアのみを含む場合には、別途のPFはペアリングの識別(例えば、x86ホストサーバから)に問題とならない。しかし、一つ以上の装置が存在する場合(例えば、密度の高いx86ホストサーバのように)、どのFPGAがどのSSDとペアリングされるかが識別されない。PCIeパススルー(pass-though)がエネーブルされ、多機能装置が多数の単一機能装置として表われる場合には、仮想化された環境で問題は更に深刻である。
【0005】
ペアリングは、P2P(peer-to-peer)コンピューティングが適切に機能するために必要である。ペアリングをしていない場合、データが誤ったFPGA装置のコンテキストにロードされ、正しいデータを保持していないハードウェアのカーネルに導かれるため、P2Pが失敗する。ホストユーザーがペアリングの要求事項でアプリケーションを識別できないときに問題が深刻になる。
【0006】
SSDのようなストレージ装置、FPGA、及び他のコプロセッサのペアリングを構築する必要がある。
【先行技術文献】
【特許文献】
【0007】
【文献】米国特許第8417880号明細書
【文献】米国特許第9712619号明細書
【文献】米国特許第9801219号明細書
【文献】米国特許出願公開第2018/0357018号明細書
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、SSDのようなストレージ装置、FPGA、及び他のコプロセッサのペアリングを構築するためのシステム及び方法を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するためになされた本発明の一態様によるシステムは、データに対する第1ストレージ、固有のSSD ID(identifier)に対する第2ストレージ、及び固有のコプロセッサIDに対する第3ストレージを含むSSD(Solid State Drive)と、前記固有のコプロセッサIDに対する第4ストレージ、前記固有のSSD IDに対する第5ストレージを含むコプロセッサと、前記SSDと前記コプロセッサとの間のハードウェアインターフェースと、を備える。
【発明の効果】
【0010】
本発明によれば、SSD/FPGA装置のペアリングソリューションを有することで、装置をより有用に使用するために有益である。短期的に、ペアリングソリューションは、識別間隔を扱うことができる。長期的に、ペアリングソリューションは、アクセラレーション装置をこれからどのようにするかの決定を下すのに役立つ。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態によるストレージ装置とコプロセッサとのペアリングをサポートするために設計されたマシンを示す図である。
【
図2】
図1のコプロセッサの異なる形態を示す図である。
【
図3】
図1のマシンの追加的な詳細を示す図である。
【
図4】
図1の装置のオペレーティングシステムを示す図である。
【
図5】ペアリングに関する情報を格納するように備えられた
図1の装置を示す図である。
【
図6】
図1のSSD及びコプロセッサをクエリ(query)して装置をペアリングするオペレーティングシステムを示す図である。
【
図7】本発明の一実施形態における単一のフォームファクタとしての
図1のSSD及びコプロセッサを示す図である。
【
図8】本発明の他の実施形態における単一のフォームファクタとしての
図1のSSD及びコプロセッサを示す図である。
【
図9】本発明の一実施形態によるペアリングを構築する
図1のSSD及びコプロセッサを示す図である。
【
図10】本発明の他の実施形態によるペアリングを構築する
図1のSSD及びコプロセッサを示す図である。
【
図11】本発明の一実施形態による
図1のSSD及びコプロセッサを含む第1トポロジーを示す図である。
【
図12】本発明の他の実施形態による
図1のSSD及びコプロセッサを含む第2トポロジーを示す図である。
【
図13】本発明の一実施形態による
図1のSSD及びコプロセッサを含む第3トポロジーを示す図である。
【
図14】本発明の他の実施形態による
図1のSSD及びコプロセッサを含む第4トポロジーを示す図である。
【
図15】本発明の一実施形態によるペアリングデータに対するパートナー(partner)をクエリ(query)するための
図1のSSD(又は、
図1のコプロセッサ)の手順を示すフローチャートである。
【
図16】本発明の一実施形態によるペアリングデータに対するクエリをパートナーから受信するための
図1のSSD(又は、
図1のコプロセッサ)の手順を示すフローチャートである。
【
図17】本発明の一実施形態によるペアリングパートナー及び関連する
図5のオペレーティングシステムからのクエリに応答するための
図1のSSD及び/又はコプロセッサの手順を示すフローチャートである。
【
図18】本発明の一実施形態による
図1のSSD及びコプロセッサをクエリしてペアリングするための
図5のオペレーティングシステムの手順を示すフローチャートである。
【
図19】本発明の一実施形態による装置に対するペアリング情報に関するアプリケーションからのクエリに応答するための
図5のオペレーティングシステムの手順を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、多様な特定の実施形態を、本発明の技術的思想の十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、これらの特定の実施形態がなくても、本発明の技術的思想を具現することができる。他の例として、よく知られた方法、手順、構成エレメント、回路、及びネットワークは、本発明を不必要に曖昧にしないために詳細に説明しない。
【0013】
ここで、第1、第2などのような用語を多様な構成要素を説明するために使用するが、これらの構成要素は、これらの用語によって限定されない。これらの用語は、一つのエレメントを他の一つのエレメントと区別するためにのみ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第1モジュールは、第2モジュールと命名される。同様に、第2モジュールは、第1モジュールと命名される。
【0014】
本発明の技術的思想の説明において、使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定するものとして意図しない。本発明の技術的思想の説明及び請求項において使用されるように、コンテキスト上明確に明示していると判定されない限り、単数表現は複数表現もまた含むものとして意図する。「及び/又は」の用語は、一つ以上の関連する項目の任意且つ可能な全ての組み合わせを含むものとして参照される。「含む(comprise)」及び/又は「含む(comprising)」の用語は、詳細な説明で使用される際に、言及する特性、整数、段階、動作、エレメント、及び/又は構成要素の存在を明示し、一つ以上の他の特性、整数、段階、動作、エレメント、構成要素、及び/又はそれらのグループの存在又は追加を排除しない。図面の構成要素及び特性は、実際の比率に必ずしも比例しない。
【0015】
装置の一つ以上のSSD(Solid State Drive)/FPGA(Field Programmable Gate Array)のペアが同じサーバ上で利用可能な場合、ホストアプリケーションのユーザーは、これらの二つの別途のペアリング上でピアリング(peering)バッファ及びSSDを選択する可能性が存在する。このような選択は、データの損傷(data corruption)及びアクセラレーション(acceleration)の不正確な結果を生む。SSD/FPGAペアは、三つの物理的機能(Physical Function:PF)を露出させる。即ち、(FPGAに対する)データPF(ユーザー空間PFとも称される)、(FPGAに対する)管理PF、(SSDに対する)NVMe(Non-Volatile Memory Express)PFである。三つのPFが同じ装置に基づく場合に、この問題は緩和される。しかし、「Xilinx(登録商標)」の3ポートスイッチの設計アプローチを使用すると、FPGA及びSSDはその物理的な関連についての詳細がない別途の装置として表われる(「Xilinx(登録商標)」は「Xilinx(登録商標)」の商標として登録されている)。「Xilinx(登録商標)」は、それ自身のアプリケーションに晒す「OpenCL」のソフトウェアインターフェースのために、この問題は更に複雑になる。ソフトウェアのインターフェースは、バス/装置/機能(Bus/Device/Function:BDF)の詳細を仮想化し、各FPGA装置を0、1、2などの論理番号で示す。ソフトウェアレベルにおけるこのような追加的な間接指定は、PCI(Peripheral Component Interconnect) BDFレベルにおいて前に推論されたペアリングの関連付けを完全に曖昧にする。アプリケーション又はユーザーは、PCI BDFレベルで多機能装置の連結、「Xilinx(登録商標)」のドライバ内部、及びファイルシステムレベルのマッピングの複雑さをよく知らなければならない。
【0016】
この取り決めは、エラーが発生しやすい傾向を有し、使用される環境に基づいて異なる問題として表われる。これらの取り決めは、ピアリング要請がユーザーにつながる可能性があることから、デバッグすることが面倒な可能性もある。
【0017】
<密度の高いシステム>
【0018】
上述の場合に、全ての装置が同じルートコンプレックスの下にあるものと期待される。しかし、SSD/FPGA装置が密集したシステムは、各CPUソケットに連結された各ルートコンプレックスの下に構成される一つ以上のPCIe(PCI Express)スイッチの使用が必要である。仮想化のコンテキストで活用され、CPU/チップセットによるサポートが多様化されたACS(Access Control Service)に対して、ピアリングが均一にサポートされず、トポロジーにおいてこれらのニュアンスをアプリケーションのユーザーが理解するのに負担になる。
【0019】
SSDからP2P-DDR(Dial On Demand Routing)へのP2P伝送がサポートされないために、P2P伝送が失敗することがある。この結果は、PCIルートコンプレックスがルートポートの間のパケットの伝送をサポートすることが要求されないという事実に起因する。この設計の選択は、ストレージアクセラレーションコンテキストにおけるP2Pの使用には実質的に良いが、ユーザーの経験には良くない。
【0020】
高密度のSSD/FPGA配置は、多様なシステムベンダーによる任意のIntel/AMDソリューションで構築され、システムがどのように相互作用するかに対する制御が制限されたり、できなかったりする。この事実は、動作するものと動作しないものに対する複雑さをもたらす。
【0021】
<仮想化環境におけるPCIパススルー(pass-through)>
【0022】
特定のLinux(登録商標)仮想化環境において、SSD/FPGA装置のような多機能装置が仮想マシン(VM)に対する通過属性にマッピングされる場合、各物理的機能に対して別途の単一機能の装置として表われる。従って、SSDとFPGAとの間に露出された三つのPFは、互いに関連付けられない三つの単一機能の装置としてマッピングされる。
【0023】
<PCI知識のないユーザー>
【0024】
以上の場合に加えて、アプリケーションのユーザーは、BDFの連結を知るのに十分な知識がない場合もある。この事実は、ユーザーがこのレベルのシステムの詳細に対して教育を受ける必要のない上位レベルのアプリケーションユーザーである可能性があるからである。この問題は、この知識のギャップを解決するために、高いレベルの抽象化が要求される状況をもたらす。
【0025】
<提案ソリューション>
【0026】
SSD/FPGA装置は、ストレージアクセラレーションを提供し、他のスタンドアロンSSD及びFPGAと区別することで、新しいSSDの装置クラスと見なされる。新しい装置は、それ自体を識別する明確な方法を必要とする。即ち、近くのストレージ容量を有するFPGAか又はそれに近くのアクセラレーションがあるNVMe SSDか?であり、ソリューションは、次の構成を含む。
【0027】
低いレベルの装置インターフェースの変更は、特性を共有するためのFPGAとSSDとの間のSMBus(System Management Bus)のようなプライベート(private)ハードウェアインターフェ-スと、アクセラレーション属性を収容するためのNVMe SSDファームウェアに対する小さなアップデートと、SSDをクエリしてSSDの識別ペアリング属性を知らせるFPGAファームウェアのアップデートと、を備える。
【0028】
高いレベルのソフトウェアインターフェースの変更は、低いレベルのペアリングの詳細をクエリし、NVMe識別コントローラの新しい特性を存在するソフトウェアのパスに露出させて管理ソフトウェアモジュールを強化し、ペアリングのためにFPGA及びSSDをクエリするFPGAへのインターフェースを含む。
【0029】
装置名やファイル名などでペアリングを識別するアプリケーションインターフェースコールを含むエコシステムを採択するためにイネーブルされたAPIを含む。
【0030】
これらの変更は、NVMe SSDを、必要な程度、一般的に維持するように十分に小さくなければならない。例として、既存のNVMe SSDは、SSD/FPGA装置内のSSDとして収容されるように再プログラミングされる。
【0031】
<FPGAを含むペアリングのためのNVMe SSDへの変更>
【0032】
ハードウェアの小さな変更は、FPGAとSSDとが互いに通信できるようにする。
【0033】
SSDコントローラは、(
図7、
図8、及びテキストを参照して、以下で示して説明するように)二つのSMBusマスターインターフェースをサポートする。一番目のSMBusマスターインターフェースは、BMC(Board Management Controller)又はそのような管理項目からのコネクタを介して出力される外部SMBus(アウト・オブ・バンド(Out Of Band:OOB))に連結される。SSD上の二番目のSMBusマスタポートは、FPGA装置のスレーブ又はマスターSMBusポートに連結される。アウト・オブ・バンド(OOB)のSMBusインターフェースは、NVMe管理インターフェース(NMVe-MI)のような管理プロトコルを具現するために使用される。SSDコントローラとFPGAとの間の内部SMBusインターフェースは、この二つの装置間の通信のために排他的に使用される。SSDコントローラのファームウェアは、FPGA装置にユニーク識別をクエリする。このインターフェースは、BMC又はホストからのガイダンス下でSSDコントローラによってFPGA装置の構成、状態、及び監視のために使用される。ホスト又はBMCがNVMe-MIのような管理プロトコルを使用してFPGAの識別情報をSSDコントローラにクエリすると、SSDコントローラがFPGAから必要な情報をフェッチ(fetching)して、ホスト又はBMCに返す。
【0034】
SSDコントローラは、メッセージベースのプロトコルを使用してFPGA装置と通信する。SSDコントローラは、多様なコマンドメッセージをFPGAのスレーブSMBusポートに書き込んで応答の可用性をポーリング(polling)する。FPGA応答メッセージが準備されると、SSDコントローラは、応答メッセージを読み出す。FPGAがSSDコントローラの注意を必要とする場合、FPGAはSSDコントローラによって周期的にポーリングされるフラグを設定する。
【0035】
SSDのファームウェアに収容された小さな変更は、上述のハードウェアの設定をサポートする。PCIe装置の初期化完了は、多機能装置内のエンベデッドオペレーティングシステム(Operating System:O/S)環境で、前もって発生する。その後、多機能装置は、x86ホストのコンテキストで再び初期化される。
【0036】
PCIe初期化段階の一部として、ソフトウェアの構成要素(SSD装置のファームウェア)が多機能装置に対するローカル及び連結された装置をクエリして発見する。NVMe SSD及びFPGAの構成要素の初期化が完了すると、ソフトウェアの構成要素は、ユニークな(固有の)シリアル番号及び製品の部品番号を提供する装置の詳細に対するFPGAをクエリする。このような詳細は、メモリマップされたNVMe BAR(Base Address Register)空間のプライベートオフセットでSSDレジスタに書き込まれる。書き込みウィンドウは、リセット後にPCI構成アクセスが行われてこのアップデートを受け入れる前に、SSDのファームウェアによって使用可能になる。これはアップデートをOSの制御内で維持する。
【0037】
NVMe仕様は、識別コントローラ及びNamespaceコマンドを定義してNVMe SSDの機能を探し出す。これらの機能の一部として、コントローラは、アクセラレーション(加速)機能を知らせるために、次を定義する。
【0038】
<識別コントローラのデータ構造>
【0039】
【0040】
<拡張された特徴>
【0041】
【0042】
【0043】
<SSD装置のペアリングを知らせるためのFPGAへの変更>
【0044】
NVMe SSDと同様に、FPGAは、エンベデッドO/Sの構成要素によって固有のSSDの詳細からプログラミングされる。これらの詳細は、インターフェースを介してx86ホストソフトウェアの構成要素に使用される。
【0045】
<ペアリングのためのエンベデッドO/Sの構成要素>
【0046】
ソフトウェアの構成要素は、(SSDのファームウェアも)多機能装置にローカル及び連結された装置をクエリして探し出すことができる。NVMe SSD及びFPGAの構成要素の初期化が完了すると、ソフトウェアの構成要素は、固有のシリアル番号及び製品の部品番号を提供する装置の詳細をFPGAにクエリする。これらの詳細は、メモリマップされたNVMe BAR空間のプライベートオフセットでSSDレジスタに書き込まれる。同様に、ソフトウェアの構成要素は、固有のSSDの詳細事項でFPGAにプログラミングし、互いにペアリングされるようにする。
【0047】
SMBus上の電源ON/RESET時のサンプルリスト
1.FPGAがNVMe(読み取り識別コントローラ)をSSDに発行
2.SSDが識別データに応答
3.FPGAがシリアル番号、モデル番号の詳細を格納
4.FPGAがNVMeを発行(識別データ設定-拡張された特徴のオフセット-プロバイダーの詳細3072~4095バイト)することは以下を含む。
演算タイプ:FPGA、カウント、独占/共有
演算タイプ:CPU-ARM、カウント、独占/共有
5.FPGAがNVMeを発行(識別データ設定)
6.FPGAがNVMeを発行(LogPage-compute_FPGA設定)することは以下を含む。
シリアル番号、モデル番号、
ハードウェア機能(LUTs、BRAM、URAM、Reg、DSP、DRAM)
7.SSDはNVMeを確認する(LogPage-compute_FPGAを設定)
【0048】
ペアリング及び他の特徴に対する追加のクエリのために、x86ホストソフトウェアと構成要素との間にプライベートインターフェースが存在する。
【0049】
<新しいペアリングを収容するための管理可能性ソフトウェアの変更>
【0050】
BMCは、一般的にSMBus上のSSDとインターフェースする。このインターフェースは、FPGAのペアを収容するように拡張され、更に有用性及び管理可能性性のための特性及びその他の属性を収容する。
【0051】
サンプルの流れは、次の通りである。
1.BMCがNVMeをSSDに発行(LogPage Temp2を設定)
2.SSDが読み取り温度センサーを含むFPGAを要請
3.FPGAが、温度データをリターン(return)
4.SSDがLogPageデータをリターン
5.BMCがNVMeをSSDに発行(LogPage FPGA Utilization読み取り)
6.SSDがLogPage FPGA Utilizationを含むFPGAの要請
7.FPGAがUtilizationデータをリターン
8.SSDがLogPageデータをリターン
【0052】
<ペアリングのためのx86ホストソフトウェアの構成要素>
【0053】
このソフトウェア構成要素は、ライブラリとして利用可能であり、多機能装置に共存するNVMe SSDとFPGAとの間のペアリングの詳細を提供する。この構成要素は、x86 SD Accelランタイムドライバ及びライブラリと共に動作してペアリングの詳細を提供する。
【0054】
現在のOpenCLインターフェースは、装置のBDFレベルの詳細を公開していないが、オフセット0から始まる数字によって論理的抽象化を提供する。インターフェースは、プロバイダーによって内部的に変更され、ハードウェアで公開された低いレベルの詳細をクエリし、そうすることで、コンピュータ側に対するペアリングの詳細も提供される。ここでは、プロバイダーがインターフェースの変更を担当する。
【0055】
<ペアリングをクエリするためのコマンドラインツール>
【0056】
コマンドラインツールは、オプションなしで遂行されると、下記表4に記載されたような詳細を提供する。二つのI/Oスタック及びプログラム可能な装置の参照は、詳細事項に反映される。NVMe SSDの/dev/nvme2は、インデックス0のアクセラレーション装置(アクセラレーション機又はアクセラレータ)とペアリングされる。サーバに示されたように、SSD装置の順序がFPGAアクセラレーション装置ほどには増加しないことに留意しなければならない。
【0057】
<コマンドラインツール出力>
【0058】
【0059】
コマンドラインツールは、システム管理者のように、プライベートフィールドに、より重要な追加の詳細を示す冗長なオプションをサポートすることもできる。これらの追加の詳細には、シリアル番号、モデル、ファームウェアの詳細、ネーム空間、及びパーティションマッピング情報のような装置クラスを介して固有のNVMe SSDの属性を含む。固有の詳細なセットは、装置が連結されたスロットを識別するPCIe装置チェーンを含む。下記表5は、このような情報の例を示す。
【0060】
<コマンドラインツールの出力>
【0061】
【0062】
装置「/dev/nvme0」の場合、SSD/FPGA装置は、「numa node 0」CPUにも近いスロット番号1に連結される。この情報は、CPU親和性のためのアプリケーションレベルだけでなく、フィールドレベルでも使用される。この情報は、深くネストされた(nested)PCIeスイッチファブリックに含まれる場合、装置の階層構造を理解するために使用され、例えば、システム管理者のための装置の問題を切り分けることもできる。
【0063】
<利点>
【0064】
SSD/FPGA装置のペアリングソリューションを有することは、これらの装置をより有用に使用するために有益である。短期的に、このペアリングソリューションは、識別のギャップを扱う。長期的に、このペアリングソリューションは、アクセラレーション装置をこれからどのようにするかの決定を下すのに役立つ。このソリューションは、GPU、Advanced RISC(Reduced Instruction Set Computer)Machine(ARM)のようなエンベデッドCPUs、RISC-V、TPU(Tensor Processing Unit)、及び特定のハードウェアベースの加速機、NVMe仕様拡張、又はいくつかの他のメカニズムのような他の加速機のタイプのために使用される。
【0065】
図1は、本発明の一実施形態によるストレージ装置とコプロセッサのペアリングをサポートするために設計されたマシンを示す図である。
図1に、マシン105を図示する。マシン105は、プロセッサ110を含む。プロセッサ110は、任意の多様なプロセッサである。例えば、Intel Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、又はAtom(登録商標)プロセッサ、AMD Opteron(登録商標)プロセッサ、ARM(登録商標)プロセッサである。
図1は、マシン105内の一つのプロセッサ110を図示するが、マシン105は、任意の数のプロセッサを含むことができ、そのプロセッサのそれぞれは、シングル(単一)コア又はマルチコアプロセッサであり、任意の望ましい組み合わせで混合され得る。
【0066】
マシン105は、メモリ115を含む。メモリ115は、MRAM(Magnetoresistive Random Access Memory)などのフラッシュメモリ、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、PRAM(Persistent Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、又はNVRAM(Non-Volatile Random Access Memory)のような任意の多様なメモリである。メモリ115は、異なるメモリタイプの任意の所望の組み合わせであり得る。メモリ115は、メモリコントローラ120によって管理される。
【0067】
マシン105は、デバイス(装置)ドライバ(図示せず)によって制御可能なストレージ装置(125-1、125-2)を含む。ストレージ装置(125-1、125-2)は、任意の望みの形態のストレージ装置である。例として、ストレージ装置(125-1、125-2)は、不揮発性メモリエクスプレス(NVMe)SSD、ハードディスクドライブ、又は任意の他の所望の形態のストレージ装置のようなSSD(Solid State Drive)である。なお、ストレージ装置(125-1、125-2)は、異なるタイプ、製造業者、及び/又はモデルであり得る。例えば、ストレージ装置125-1はSSDであり得、ストレージ装置125-2はハードディスクドライブであり得る。
【0068】
マシン105は、コプロセッサ(130-1~130-2)も含む。コプロセッサ(130-1~130-2)は、ストレージ装置(125-1、125-2)をサポートする任意の必要な機能を提供する。例として、コプロセッサ125-1は、データアクセラレーション、データ重複排除、データインテグリティ(integrity)、データの暗号化、データ圧縮、及び/又はイレイジャーコーディング(Erasure Coding)のような機能を提供する。コプロセッサ(130-1~130-2)のそれぞれは一つのそのような機能を提供したり、コプロセッサ(130-1~130-2)のそれぞれはこれらの機能を多数提供したりする。コプロセッサ(130-1~130-2)は、任意の所望の構成要素を使用して具現される。
【0069】
図2は、
図1のコプロセッサの異なる形態を示す図であり、FPGA(Field Programmable Gate Array)205、ASIC(Application-Specific Integrated Circuit)210、GPU(Graphics Processing Unit)215、TPU(Tensor Processing Unit)220、イレイジャーコーディングコントローラ225、及びスモール(small)プロセッサコア230を含むが、本発明の実施形態は、コプロセッサ(130-1~130-2)の他の具現も含むことができる。
【0070】
図1を再び参照すると、
図1は、各ストレージ装置に対する一つのコプロセッサを有する二つのストレージ装置を図示するが、本発明の実施形態は、所望により、任意の数のストレージ装置及び他のタイプの各ストレージ装置に対する任意の数のコプロセッサを含むことができる。なお、一部の実施形態で、いくつかのストレージ装置はコプロセッサを有し、他のストレージ装置はコプロセッサを有さない。しかし、唯一つのストレージ装置及び一つのコプロセッサのように、ストレージ装置とコプロセッサとのペアリングに対する心配はないため、本発明の殆どの実施形態は、対応するコプロセッサを有する少なくとも二つのストレージ装置を含む。以下では、「ペアリング」という用語は、ペアリングされた一つの装置が他の装置をサポートする装置を称し、ペアリングを二つの装置にのみ限定するものと理解してはならない。例として、ストレージ装置にFPGA及びGPUの両方を含めると、三つの装置の全てが「ペアリングされた(paired)」と見なされる。(或いは、FPGA及びGPUは、共通のストレージ装置とは別途にペアリングされたものとして考慮され、必要な場合、FPGAとGPUとの間の関連性が間接的に決定される。)
【0071】
図1は、(スタンドアロン(standalone)又はラック(rack)サーバであり得る)サーバとしてマシン105を図示するが、本発明の実施形態は、任意の所望のタイプのマシン105を制限なしに含む。例として、マシン105は、デスクトップ、ラップトップコンピュータ、又は本発明の実施形態から恩恵を得ることができる任意の他のマシンに置き換えられる。マシン105は、特殊なポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン、及び他のコンピューティングマシンを含む。
【0072】
図3は、
図1のマシンの追加的な詳細を示す図である。
図3において、一般的に、マシン105は、装置(マシン105)の構成要素の動作を調整するために使用可能なメモリコントローラ120及びクロック305を含む一つ以上のプロセッサ110を含む。プロセッサ110は、例として、RAM(Random Access Memory)、ROM(Read-Only Memory)、又は他の状態保存媒体を含むメモリ115に連結される。プロセッサ110は、ストレージ装置125と、例えば、イーサネット(登録商標)(Ethernet(登録商標))コネクタ又はワイヤレスコネクタであるネットワークコネクタ310に連結される。プロセッサ110は、バス315に連結され、バス315には、他の構成要素の中の、ユーザーインターフェース320、及び入力/出力エンジン325を使用して管理される入力/出力インターフェースポートが実装される。
【0073】
図4は、
図1の装置のオペレーティングシステムを示す図である。従来のシステムにおいて、オペレーティングシステム405は、仮想識別子(Identifier:ID)(410、415、420、及び425)を使用してSSD(125-1、125-2)及びコプロセッサ(130-1~130-2)を識別する。(以降、本明細書の説明はコプロセッサを含むストレージ装置の特定の例としてSSDに焦点を合わせるが、本発明の実施形態は、変わらずSSD以外のタイプのストレージ装置に拡張され得る。)仮想ID(410、415、420、及び425)は、PCI(Peripheral Component Interconnect)エニュメレーター(enumerator)のようなコントローラによって、装置の列挙(enumeration)中に割り当てられたり、
図1のマシン105内の仮想マシン(Virtual Machine:VM)を「構成」したりすることを含む。(又はその両方)いずれにせよ、オペレーティングシステム405は、仮想ID(410、415、420、及び425)の結果として提供された情報のみを有する。オペレーティングシステム405は、SSD125-1及びSSD125-2がSSDであるという事実によって、割り当てられた仮想ID410であるSSD125-1がデータストレージ装置430を含み、割り当てられた仮想ID415であるSSD125-2がデータストレージ装置435を含むことを知る。しかし、オペレーティングシステム405は、仮想ID420を割り当てられたコプロセッサ130-1が仮想ID410を割り当てられたSSD125-1の動作をサポートすること、又は仮想ID425を割り当てられたコプロセッサ130-2がSSD125-2の動作をサポートすることを知らない可能性がある。
【0074】
図5は、ペアリングに関する情報を格納するように備えられた
図1の装置を示す図である。
図5において、装置(125-1、125-2、130-1、及び130-2)は、ペアリングに関する多様な情報ピース(piece)のためのストレージを含む。従って、SSD125-1は、それ自身及びペアリングされたコプロセッサ(コプロセッサ130-1)に関する情報のためのストレージ装置(505-1、505-2)を含み、SSD125-2は、それ自身及びペアリングされたコプロセッサ(コプロセッサ130-2)に関する情報のためのストレージ(515-1、515-2)を含み、コプロセッサ130-1は、それ自身及びペアリングされたSSD(SSD125-1)に関する情報のためのストレージ(515-1、515-2)を含み、コプロセッサ130-2は、それ自身及びペアリングされたSSD(SSD125-2)に関する情報のためのストレージ(520-1、520-2)を含む。一部の実施形態で、ストレージ装置(505-1、505-2、510-1、510-2、515-1、515-2、520-1、及び520-2)に格納された情報は、GUID(Globally Unique ID)のシリアル番号のように、各装置に固有の情報を含む。他の実施形態で、ストレージ装置(505-1、505-2、510-1、510-2、515-1、515-2、520-1、520-2)は、固有の又は略確実に固有のペアリングされた装置間の合意された情報を格納する。例として、アンセキュア(unsecure)連結を介して、二つのパーティーが二つのパーティー間の通信セキュリティに使用される共有シークレットに同意するアルゴリズムがある。即ち、SSD125-1及びコプロセッサ130-1は、合意された情報として使用される共有されたシークレット(secret)に同意するこれらのアルゴリズムを使用することができる。或いは、SSD125-1とコプロセッサ130-1とは、物理的にペアリングされるときに、製造時のデータの共通ピースが割り当てられる。ペアリングされた装置が他の装置によって使用されない一部の固有の情報を使用する場合、装置(125-1、125-2、130-1、及び130-2)は、ペアリング中の各装置に関する情報を格納する代わりに、少なくともペアリングの目的のために固有の情報を格納する必要のみが有り得る。
【0075】
オペレーティングシステム405が個々の装置にそれ自身に関する情報をクエリするとき、各装置は、ペアリングに関する情報をリターンする。従って、例として、SSD125-1は、それ自身の情報をストレージ装置505-1に格納し、コプロセッサ130-1に関する情報をストレージ装置505-2に格納する。同様に、コプロセッサ130-1は、それ自身の情報をストレージ515-2に格納し、SSD125-1に関する情報をストレージ515-1に格納する。次に、オペレーティングシステム405は、ストレージ装置(505-1~505-2、515-1~515-2)からの情報を利用してSSD125-1とコプロセッサ130-1とがペアリングされたか否かを判定する。これらの情報は、例として、GUID、又は計算された共有シークレットのように固有のものと期待されるその他の情報や多様な装置のシリアル番号である。例として、二つ(又はそれ以上)の装置のそれぞれがそれ自身のシリアル番号及びそれらのペアのシリアル番号を提供し、シリアル番号が期待通り対応する場合、オペレーティングシステム405は、二つの装置がペアリングされることを考慮することができる。同様に、二つ(又はそれ以上)の装置のそれぞれが固有の識別子(又は固有のものと予想される識別子)を提供すると、装置の全てがその識別子を提供するという事実は、装置がペアリングされたものとみなされるべきであることを示すことになる。このような方法で、オペレーティングシステム405は、適切に仮想ID(410、415、420、及び425)のペアリングを生成することができる。
【0076】
図6は、
図1のSSD125-1及びコプロセッサ(130-1)をクエリして装置をペアリングする
図5のオペレーティングシステム405を示す図である。
図6で、オペレーティングシステム405は、装置の詳細を要請するSSD125-1にクエリ605を伝送する。既存のオペレーティングシステムは、起動の一部として、装置の特性及び特徴を決定するために装置をクエリする。BIOS(Basic Input/Output System)も、どの装置が連結されているかを調べるためにクエリすることがある。応答610で新しい点は、SSD125-1がそれ自体に関する情報及びコプロセッサ130-1に関する情報を含むことである。同様に、オペレーティングシステム405は、その装置の詳細を要請するコプロセッサ130-1にクエリ615を伝送する。即ち、コプロセッサ(130-1)は、それ自身に関する情報やSSD125-1に関する情報を含む応答620を伝送する。オペレーティングシステム405が応答(610及び620)を受信すると、オペレーティングシステム405は、その情報を使用して動作625に示すように、SSD125-1とコプロセッサ130-1とがペアリングされたか否かを判定する。その後、オペレーティングシステム405は、このペアリング情報を格納する。
【0077】
オペレーティングシステム405は、どのストレージ装置がどのコプロセッサとペアリングされているかを知ると、オペレーティングシステム405は、この情報をアプリケーション及び/又はユーザーに利用可能にする。例として、オペレーティングシステム405は、アプリケーションが情報をペアリングするために、オペレーティングシステム405をクエリするために使用されるAPI(Application Programming Interface)を提供する。例として、アプリケーションは、SSD125-1に対してAPIを介して当該装置とペアリングされたSSD125-1を要請するクエリを伝送する。次に、オペレーティングシステム405は、コプロセッサ130-1がSSD125-1とペアリングされたとの情報で応答する。他のアプリケーションは、データの特定のピースに関連付けられたペアリングされた装置に関する情報を要請する。例として、ストレージ装置がそのデータを格納し、他の装置がそのストレージ装置とペアリングされたという特定のファイル(又はキーバリューオブジェクト(key value object)、又はストレージ装置上の他の形式で格納されるデータ)が与えられる。その後、オペレーティングシステム405は、どのストレージ装置がそのデータを格納するかを決定してから、そのストレージ装置及びペアリングに関する情報を返す。(勿論、アプリケーションは、二つのAPIのクエリを伝送することができる。即ち、一つは、ターゲットデータを格納する特定のストレージ装置を決定し、もう一つは、当該ストレージ装置とペアリングされる装置を決定する。二つのクエリを一つに結合することは単純化されることである。)
【0078】
アプリケーションが、どの装置がペアリングされているかを、APIを介して知ると、アプリケーションはそれに応じて当該情報を使用する。例として、
図1のコプロセッサ(130-1、130-2)は、データアクセラレーションサービスを提供する二つのFPGAである。アプリケーションがターゲットデータを格納するストレージ装置を知ると、アプリケーションはターゲットデータのデータアクセラレーションサービスを要請する当該ストレージ装置とペアリングされたFPGAに要請を伝送する。同じ原理が、
図1のコプロセッサ(130-1、130-2)によって提供される任意の他の機能に適用される。即ち、データアクセラレーションは機能の例としてのみ使用される。
【0079】
この時点で、一つの疑問点が残る。即ち、ペアリングで装置を識別する情報を装置がどのように認識するか?であり、情報が製造時にペアリングされた装置によって共有される固有のデータとして割り当てられる場合、その答えは明らかである。但し、装置が、シリアル番号又は個別に各装置に固有の他のデータを使用してそれらのペアリングの識別を助ける場合、答えはそれほど容易ではない。
図7~
図9は、装置がこの情報を得る方法を示す。
【0080】
図7は、本発明の一実施形態における単一のフォームファクタとしての
図1のSSD125-1及びコプロセッサ130-1を示す図である。
図7において、SSD125-1とコプロセッサ130-1とは、装置を連結するハードウェアインターフェースを使用して通信する。例として、このハードウェアインターフェースは、SSD125-1とコプロセッサ130-1とを連結するSMBus(System Management Bus)である。SMBusが使用された場合、装置SSD125-1及びコプロセッサ130-1のどちらかがマスター装置であり、他の一つは、スレーブ装置であるか又は両方がマルチマスタバス上のマスター装置である。例として、いくつかの実施形態で、SSD125-1はSMBus705のマスターであり、コプロセッサ130-1はスレーブである。
【0081】
図示したように、SSD125-1は、アウト・オブ・バンド(out-of-band)連結及びイン・バンド(in-band)連結を介して
図1のマシン105に連結される。例として、イン・バンド連結710はPCI Express(PCIe)連結を介して伝送されたメッセージを含む一方、アウト・オブ・バンド連結715は、例として(SSD125-1がスレーブであり、BMC(Board Management Controller)がマスターであるか、SSD125-1及びBMCの両方が多重マスターバス上のマスターである)他のSMBus連結である。一般的に、イン・バンド連結710はSSD125-1に発行された読み書きの要請のような従来の要請のために使用されてコプロセッサ130-1の機能を使用する反面、アウト・オブ・バンド連結715は制御タイプの要請のために使用される。例えば、SSD125-1及び/又はコプロセッサ130-1の現在の動作温度に対するクエリを含む。イン・バンド連結710がコプロセッサ(130-1)と通信するために使用される場合、SSD125-1は、コプロセッサ130-1へのメッセージに依存するパススルー(pass-through)装置として動作する。或いは、SSD125-1は、
図1のマシン105から受信された要請をコプロセッサ(130-1)への伝送のための別の形式に変換するいくつかのトランスレータ(translator)機能で動作する。
【0082】
図8は、
図7とは対照的に、本発明の他の実施形態における単一のフォームファクタとしての
図1のSSD125-1及びコプロセッサ130-1を示す図である。
図8に示した実施形態では、コプロセッサ130-1は、SSD125-1ではなく、イン・バンド連結710に直接連結される。本実施形態で、コプロセッサ130-1は、SSD125-1のために意図された要請をSSD125-1へのメッセージに依存するパススルー装置として動作する。或いは、コプロセッサ130-1は、
図1のマシン105から受信された要求をSSD125-1への伝送のための別の形式に変換するいくつかのトランスレータ機能で動作する。他の全ての側面は、SSD125-1及びコプロセッサ130-1が
図7でのようにSSD125-1及びコプロセッサ130-1と同様に動作する。
【0083】
一方、
図7及び
図8は、SSD125-1及びコプロセッサ130-1の両方が同じフォームファクタで販売される可能性を示し、SSD125-1及びコプロセッサ130-1は、装置が
図4のオペレーティングシステム405とペアリング情報を共有するために、二つのペアリングされた装置間の通信を許容するハードウェアインターフェース505のいくつかの形態がある場合、別途の構成要素として販売され得る。
【0084】
図9は、本発明の一実施形態によるペアリングを構築する
図1のSSD125-1及びコプロセッサ130-1を示す図である。SSD125-1及びコプロセッサ130-1は、
図7及び
図8のハードウェアインターフェース705のようなハードウェアインターフェースを共有する場合に、
図9を使用する。
図9において、SSD125-1は、コプロセッサ125-1から装置情報に対する問い合わせを開始する。SSD125-1は、識別装置905をコプロセッサ130-1に伝送する(このコマンド及び
図9及び
図10の他の全てのコマンドは、NVMeコマンドであるか又は他のプロトコルを使用するコマンドである)。コプロセッサ130-1は、SSD125-1とコプロセッサ130-1とのペアリングに関連する固有の情報を含む識別応答910で応答する。この情報は、例として、GUID、或いは製造業者のモデル番号及びコプロセッサ130-1のシリアル番号を含む。識別応答910を受信すると、SSD125-1は、コプロセッサ130-1の情報を格納する。例として、
図5のストレージ502-2に格納する。その後、SSD125-1は、SSD125-1の固有情報、例として、GUID、或いはSSD125-1の製造業者のモデル番号及びシリアル番号を含む設定ペアリングデータ915を伝送する。その後、コプロセッサ130-1は、SSD125-1の情報を格納する。例として、
図5のストレージ515-1に格納する。次に、コプロセッサ130-1は、設定ペアリングデータ(Set Pairing Data)コマンドのペアリングデータが受信されたことをSSD125-1に通知するために設定応答920を伝送する。最後に、SSD125-1は、コプロセッサ130-1が知りたい任意の他のデータをコプロセッサ130-1に知らせるために、設定アドバンスドデータ(Set Advanced Data)925を伝送し、コプロセッサ130-1は、識別応答(Set Response)930で応答する。
【0085】
図10は、本発明の他の実施形態によるペアリングを構築する
図1のSSD125-1及びコプロセッサ130-1を示す図である。コプロセッサ130-1がSSD125-1ではなく情報の交換を開始することを除いて、
図10は
図9に類似する。
図10において、コプロセッサ130-1は、読み取り識別データ1005をSSD125-1に伝送する。SSD125-1は、コプロセッサ130-1とSSD125-1とのペアリングに関する固有の情報を含む読み取り応答1010で応答する。この情報は、例として、GUID、或いは製造業者のモデル番号及びSSD125-1のシリアル番号を含む。読み取り応答1010を受信すると、コプロセッサ130-1は、例えばSSD125-1の情報を格納する。例として、
図5のストレージ装置505-2に格納する。次に、コプロセッサ130-1は、コプロセッサ130-1の固有の情報を含む設定識別データ1015を伝送する。例として、GUID、或いはコプロセッサ130-1の製造業者のモデル番号及びシリアル番号を含む設定識別データ1015を伝送する。次に、SSD125-1は、例として、
図5のストレージ515-1にコプロセッサ130-1の情報を格納する。次に、SSD125-1は、設定識別データコマンドのペアリングデータが受信されたことをコプロセッサ130-1に通知するために、設定応答1020を伝送する。最後に、コプロセッサ130-1は、SSD125-1が知りたい任意の他のデータをSSD125-1に通知するために、設定ログページ(Set Log Page)1025を伝送し、SSD125-1は設定応答1030で応答する。
【0086】
図11は、本発明の一実施形態による
図1のSSD125-1及びコプロセッサ130-1を含む第1トポロジーを示す図である。
図11~
図14は、共にペンディング(pending)された2018年10月12日に出願した仮出願番号16/207,080の利益を主張した2018年11月30日に出願されたUS特許出願番号16/226,629から取得され、全ての出願は全ての目的のために本明細書で結合して参照される。しかし、共にペンディングされたUS特許出願番号16/260,087はイレイジャーコーディングを含むPCIeスイッチの全体的な組み合わせが考慮される反面、本明細書は、SSD及びコプロセッサの構造と共に更に考慮される。
【0087】
図11は、
図1のマシン105の分離された構成要素として具現されるLook-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチを示す。即ち、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、
図1のプロセッサ110、ストレージ装置125-1、又はコプロセッサ130-1のような任意の他の構成要素とは別途に製造販売される。
【0088】
Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ストレージ装置125-1に連結される。
図11において、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、イレイジャーコーディングをサポートしない可能性がある一つのストレージ装置にのみ連結されるものとして図示する。即ち、イレイジャーコーディングは、ストライピング(striping)、チャンキング(chunking)、グルーピング(grouping)、及びパリティ(parity)又はコード情報の使用を遂行するために、少なくとも二つのストレージ装置又はストレージ装置の少なくとも二つの部分を要求する。しかし、Look-Asideイレイジャーコーディングロジック1105を有する単一のストレージ装置PCIeスイッチもいくつかの利点を提供する。例として、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ストレージ装置125-1によってサービスがネイティブに(natively)提供されない場合に、ストレージ装置125-1でエラー訂正コード(Error Correcting Code)を使用するか、或いはストレージ装置125-1に格納されたデータを暗号化するようにサポートする。
【0089】
ストレージ装置125-1は、
図1のコプロセッサ130-1の例であるFPGA205に連結される(
図11~
図14に関する説明の残りの部分について、FPGA205に対する任意の参照は、
図2に示した任意の代替のコプロセッサ、或いは、より一般的には、
図1のコプロセッサ130-1への参照を含むものと理解される)。FPGA205は、アクセラレーションをサポートする。即ち、データを処理して廃棄しなければならない状況が有る。処理を遂行するために全てのデータを
図1のプロセッサ110にロードすることには多くの費用と時間がかかる。即ち、計算は、データの近くでより簡単に行われる。FPGA205は、計算を遂行するために、
図1のプロセッサ110にロードされるデータに対する必要性を回避しながら、ストレージ装置の近くで計算を遂行することをサポートする。即ち、この概念を「アクセラレーション(加速)」と称する。FPGAベースのアクセラレーションは、2018年3月13日に出願されたUS特許仮出願番号62/642,568、2018年3月13日に出願されたUS特許仮出願番号62/641,267、及び2018年3月5日に出願されたUS特許仮出願番号62/638,904の利益を主張した2018年9月5日に出願されたUS特許出願番号16/122,865において更に説明され、以上の出願だけではなく、2018年9月5日に出願されたUS特許出願番号16/122,865の継続出願である2018年9月6日に出願されたUS特許出願番号16/124,179、2018年9月6日に出願されたUS特許出願番号16/124,182、及び2018年9月6日に出願されたUS特許出願番号16/124,183は、本明細書で共に参照されて結合される。アクセラレーションの目的は、データを
図1のプロセッサ110にデータを伝送せずにそのデータを処理することから、
図11は、ストレージ装置125-1に近いFPGA205を示す。しかし、
図11に示した特定の取り決めは必須ではない可能性があることに留意する。即ち、FPGA205は、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチとストレージ装置125-1との間に位置することもできる。
【0090】
データアクセラレーションとは別途に、FPGA205は、ストレージ装置125-1をサポートする他の機能を提供する。例えば、FPGA205は、ストレージ装置125-1に同じデータが格納される回数を減らすために、ストレージ装置125-1上にデータ重複排除機能を具現する。FPGA205は、特定のデータがストレージ装置125-1上に二回以上格納されたか否かを判定し、多様な論理ブロックアドレス(又はデータを識別するためにホストによって使用される他の情報)とストレージ装置上のデータが格納された場所との間の関連性を構築して追加のコピーを削除する。
【0091】
或いは、FPGA205は、ストレージ装置125-1の動作でのエラーを通じたデータの損失、又はエンドツーエンド(end-to-end)の保護のためにCRC(Cyclic Redundancy Correction)を使用するT10DIF(データインテグリティのフィールド)からの保護のために、エラー訂正コードを追加するようなストレージ装置125-1上のデータインテグリティの機能を具現する。このように、FPGA205は、ストレージ装置125-1上にデータを読み書きするにあたり、又は伝送中のデータに対してエラーが発生するときを検出したり、元のデータを復元したりする。FPGA205は、データのインテグリティの機能が提供されていることをホストが認識しないようにデータインテグリティの機能を具現する。即ち、ホストは、エラー訂正コードではないデータそのものだけを見る。
【0092】
或いは、FPGA205は、ストレージ装置125-1上のデータにアクセスする権限がないパーティーからの保護のために、ストレージ装置125-1上にデータの暗号化機能を実装することができある。即ち、適切な暗号化キーが提供されていない場合、FPGA205からリターンされるデータは、要請者に意味がない可能性がある。ホストは、データを読み書きするときに使用される暗号化キーを提供する。又は、FPGA205は、データの暗号化及び復号化を自動的に遂行する。即ち、FPGA205は、暗号化キーを格納し(そして、ホストの代わりに暗号化キーを生成する)、誰がデータを要請するかに基づいて、使用する適切な暗号化キーを決定する。
【0093】
或いは、FPGA205は、ストレージ装置125-1にデータを格納するのに必要な空間の量を減らすために、ストレージ装置125-1上にデータ圧縮機能を具現する。ストレージ装置125-1にデータを書き込むとき、FPGA205は、ホストによって提供されたデータをより少ない量のストレージ装置に圧縮する機能を具現し、圧縮されたデータを(ストレージ装置125-1からデータを読み取るとき、元のデータを復元するのに必要な任意の情報と共に)格納する。ストレージ装置125-1からデータを読み取るとき、FPGA205は、圧縮されたデータを(圧縮されたデータから元のデータを復元するのに必要な任意の情報と共に)読み取り、元のデータを復元するために圧縮を解除する。
【0094】
データ重複排除、データインテグリティ、データの暗号化、及びデータ圧縮の任意の所望の具現が使用される。本発明の実施形態は、これらの機能のうちのいずれかの特定の具現に限定されない。
【0095】
FPGA205は、必要に応じて、ストレージ装置125-1上の機能の任意の組み合わせを具現するすることもできる。例として、FPGA205は、データ圧縮及びデータのインテグリティの両方を具現する(データ圧縮は、エラーに対するデータの感度を増加させることから、ストレージ装置125-1に格納されたデータの単一エラーは、大量のデータを使用不可能にすることがある)。或いは、FPGA205は、(可能な限りデータのために少ないストレージを使用しながらデータを保護するために)データの暗号化及びデータ圧縮の両方を具現する。二つ以上の機能の別の組み合わせがFPGA205によって提供される。
【0096】
全体的な動作の観点から、この機能のうちの任意のものを具現する場合、FPGA205は、適切なソースからデータを読み取る。「ソース」という用語は、単数の名詞であるが、本発明の実施形態は、適切な場合、多数のソース(例えば、複数のストレージ装置)からデータを読み取ることができる。FPGA205は、データアクセラレーション、データ統合、データ暗号化、及び/又はデータ圧縮のようなデータの適切な動作を遂行する。次に、FPGA205は、動作の結果に対して適切なアクションを取る。即ち、例として、
図1のマシン105に結果を伝送したり、ストレージ装置125-1にデータを書き込んだりする。
【0097】
以上の機能を
図11のFPGA205を参照して説明したが、本発明の実施形態は、FPGAを含むシステム内の任意の位置にこれらの機能を含む。なお、本発明の実施形態は、FPGA205が「遠く」のストレージ装置からデータにアクセスできるようにする。例として、
図1に一旦戻って、ストレージ装置125-1がFPGA205に類似するFPGAを含むが、ストレージ装置125-2はこのようなコプロセッサを有しないと仮定する。ストレージ装置125-1に含まれるFPGAは、ストレージ装置125-2に要請を伝送することにより、ストレージ装置125-2にその機能を適用するために使用される。例として、ストレージ装置125-1のFPGAがデータアクセラレーションを提供する場合、ストレージ装置125-1のFPGAは、ストレージ装置125-2からデータを読み取り、適切なアクセラレーションを遂行し、その後、その結果を適切な宛先(
図1のマシン105のような)に伝送するための要請を伝送する。
【0098】
図11において(そして、以下の
図12~
図14に示すトポロジーにおいて)、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、イレイジャーコーディングに適していない装置に装着される。例として、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ビルトイン(built-in)イレイジャーコーディング機能を有する他のストレージ装置、又は
図11のFPGA205若しくは
図2のGPU215のようなストレージ装置ではない装置に装着される。これらの全ての装置は、イレイジャーコーディング(又は、少なくともLook-Asideイレイジャーコーディングロジック1105を含むPCIeスイッチによるイレイジャーコーディングのための)に適合しない装置として説明される。
【0099】
Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチがイレイジャーコーディングに適していない装置に連結される場合、システムは使用され得る多様な代替的なアプローチを有する。本発明の一実施形態において、イレイジャーコーディングに適していない任意の装置を含む場合、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチのLook-Asideイレイジャーコーディングロジックがディセーブルされる。従って、例として、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチが
図11のFPGA205若しくは
図2のGPU215、又はネイティブのイレイジャーコーディングロジックを有するストレージ装置に連結される場合、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチに連結されたストレージ装置の中のいずれも、イレイジャーコーディングと共に使用することができない。Look-Asideイレイジャーコーディングロジック1105を含むPCIeスイッチのLook-Asideイレイジャーコーディングロジックをディセーブルしようとする決定が、同じか又は別のシャーシでLook-Asideイレイジャーコーディングロジックを含む他のPCIeスイッチに必ずしも変換されるものではないことに留意する。例として、
図13を一時的に見ると、
図13は、Look-Asideイレイジャーコーディングロジック(1105及び1305)を有する二つのPCIeスイッチを示し、そのうちの一つはイネーブルされたLook-Asideイレイジャーコーディングロジックを有し、他の一つはディセーブルされたLook-Asideイレイジャーコーディングロジックを有する。
【0100】
本発明の他の実施形態は、イレイジャーコーディングに適していない装置をディセーブルし、Look-Asideイレイジャーコーディングロジック1105を含むPCIeスイッチに全く連結されていないかのようにそれらを処理することができる。本発明のこのような実施形態で、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ストレージ装置125-1に対するLook-Asideイレイジャーコーディングロジックを可能にし、イレイジャーコーディングのために適切な任意の他のストレージ装置は、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチに連結されていないかのようにディセーブルされる。
【0101】
本発明の他の実施形態において、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、Look-Asideイレイジャーコーディングロジックによってカバーされるストレージ装置のためのLook-Asideイレイジャーコーディングロジックを可能にするが、アクセスされるイレイジャーコーディングに適していない他の装置を変わらずイネーブルする。本発明のこの実施形態は、最も複雑な具現である。即ち、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、どの装置がイレイジャーコーディングに適合し、どの装置が適合していないかを判定し、その後、トラフィックを分析してトラフィックが仮想ストレージ装置に伝送されるか(この場合、トラフィックはLook-Asideイレイジャーコーディングロジックによってインターセプトされる)否か(この場合は、トラフィックが元の宛先に伝送される)を判定する。
【0102】
図1のマシン105は、インストールした装置の全ての機能を提供しない本発明の一実施形態である。即ち、イレイジャーコーディングに適していない装置の存在により、イレイジャーコーディングがディセーブルされるか、或いはこれらの装置がLook-Asideイレイジャーコーディングロジック1105を含むPCIeスイッチによりディセーブルされる本発明の一実施形態であり、
図1のマシン105は、この事実をユーザーに知らせる。この通知は、
図1のプロセッサ110、BMCやLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチによって提供される。一部の機能がディセーブルされたことをユーザーに通知することに加えて、通知は、追加された機能を許容するために、
図1のマシン105を再構成する方法をユーザーに知らせることもできる。例えば、通知は、イレイジャーコーディングに適していない装置がミッドプレーンの特定のスロットに連結されるように提案する(おそらく、これらのスロットは、Look-Asideイレイジャーコーディングロジック1305を含むPCIeスイッチに連結される)。そして、イレイジャーコーディングに適していないストレージ装置は、イレイジャーコーディングロジック1105を含むPCIeスイッチに連結されたスロットのような他のスロットに連結される。このように、イレイジャーコーディングに適した少なくともいくつかのストレージ装置は、イレイジャーコーディングに適していない他の装置へのアクセスを遮断せず、イレイジャーコーディングスキームから恩恵を得ることができる。
【0103】
図12は、本発明の他の実施形態による
図1のSSD及びコプロセッサを含む第2トポロジーを示す図である。
図12において、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、FPGA205内に位置する。即ち、FPGA205は、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチを具現する。Look-Asideイレイジャーコーディングロジック1105を有するFPGA205及びPCIeスイッチは、ストレージ装置(125-1~125-4)に連結される。
図12は、4つのストレージ装置(125-1~125-4)に連結されたLook-Asideイレイジャーコーディングロジック1105を有するFPGA205及びPCIeスイッチを示しているが、本発明の実施形態は、任意の数のストレージ装置(125-1~125-4)を含む。
【0104】
一般的に、
図12に示したトポロジーは、図示した全ての構成要素を含む単一のシェル(shell)又はハウジング(housing)内に具現される(SSD(125-1~125-4)は、それ自体に含まれる(self-contained)SSDではなく別途のフラッシュメモリであり得る)。即ち、別途の構成要素として販売されるのではなく、
図12に示した全体の構造が単一のユニットとして販売される。しかし、本発明の実施形態は、ストレージ装置(125-1~125-4)に連結するために他端上にU.2、M.3、又はSFF-TA-1008のようなコネクタを有し、一端(one end)上にコネクタを有する
図1のマシン105に(おそらく、ミッドプレーンに)連結するライザーカード(riser card)を含む。そして、
図12は、FPGA205の一部としてLook-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチを示し、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、スマートSSDの一部として具現される。
【0105】
図13は、本発明の一実施形態による
図1のSSD及びコプロセッサを含む第3トポロジーを示す図であり、
図11のLook-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチを使用するための第3トポロジーを示す。
図13は、それらの間に最大24個のストレージ装置(125-1~125-6)を連結するLook-Asideイレイジャーコーディングロジック(1105及び1305)を有する二つのPCIeスイッチを示す。Look-Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチのそれぞれは、ストレージ装置(125-1~125-6)のいずれかと通信するために、各方向に使用される4つのPCIeレーン(lane)を有する96個のPCIeレーンを含む。即ち、Look-Asideイレイジャーコーディングロジック(1105及び1305)を有する各PCIeスイッチは、最大12個のストレージ装置をサポートする。Look-Asideイレイジャーコーディングロジック(1105及び1305)を有する多数のPCIeスイッチによってサポートされるストレージ装置全体のイレイジャーコーディングをサポートするために、Look-Asideイレイジャーコーディングロジック1105を有する一つのPCIeスイッチは、全ての装置に亘ってイレイジャーコーディングを担当するように指定され、イネーブルされたLook-Asideイレイジャーコーディングロジックを有する。Look-Asideイレイジャーコーディングロジック1305を有する他のPCIeスイッチは、ディセーブルされたLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチとして純粋に動作する。イレイジャーコーディングを処理するためにどのPCIeスイッチが選択されるべきかの選択は、任意の所望の方法で遂行すされる。即ち、例として、二つのPCIeスイッチは、それらの間でこれを交渉するか、或いは最初に列挙されたPCIeスイッチは、イレイジャーコーディングを処理するように指定される。イレイジャーコーディングを処理するように選択されたPCIeスイッチは、仮想ストレージ装置(二つのPCIeスイッチに亘る)を報告する反面、イレイジャーコーディングを処理していないPCIeスイッチは、ダウンストリーム装置を報告しない可能性がある(
図1のプロセッサ110は、イレイジャーコーディングスキームの一部であるストレージ装置にアクセスする試みを防止するために)。
【0106】
Look-Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチが全て同じシャーシに有り得るが、Look-Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチは、異なるシャーシに有り得ることに留意する。即ち、イレイジャーコーディングスキームは、多数のシャーシに亘ってストレージ装置を拡張することができる。必要なのは、多様なシャーシのPCIeスイッチがイレイジャーコーディングスキームの一部となるストレージ装置が位置する場所について、互いに交渉できなければならないことである。また、本発明の実施形態は、Look-Asideイレイジャーコーディングロジック(1105及び1305)を有する二つのPCIeスイッチに限定されない。即ち、イレイジャーコーディングスキームに含まれるストレージ装置は、Look-Asideイレイジャーコーディングロジック1105を有する任意の数のPCIeスイッチに連結される。
【0107】
ホスト論理ブロックアドレス(LBA)は、任意の所望の方法でLook-Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチに分割される。例として、ホストLBAの最下位ビットは、Look-Asideイレイジャーコーディングロジック(1105又は1305)を有するどちらかのPCIeスイッチがそのホストLBAを含むデータを格納するストレージ装置を含むかを識別するのに使用される。Look-Asideイレイジャーコーディングロジックを有する二つ以上のPCIeスイッチを使用する場合、どのLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチがデータを格納するストレージ装置を管理するのかを判定するための複数のビットが使用される。Look-Asideイレイジャーコーディングロジックを有する適切なPCIeスイッチが識別されると、伝送がLook-Asideイレイジャーコーディングロジックを有する適切なPCIeスイッチにルーティング(routed)される(Look-AsideイレイジャーコーディングロジックがイネーブルされたLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチに連結されたストレージ装置に伝送が予定されていないと仮定する)。
【0108】
本発明の他の実施形態で、Look-Asideイレイジャーコーディングロジックを有する単一のPCIeスイッチがLook-Asideイレイジャーコーディングロジックを有する二つのPCIeスイッチに連結された全てのストレージ装置を仮想化するよりも、Look-Asideイレイジャーコーディングロジックを有する各PCIeスイッチが(別途のイレイジャーコーディングドメインを含む)別途の仮想ストレージ装置を生成する。このように、小さい容量であるが、異なる顧客に対して異なるイレイジャーコーディングドメインが生成される。
【0109】
図13は、ストレージ装置(125-1~125-6)のみがLook-Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチに連結され、全てのストレージ装置(125-1~125-6)がイレイジャーコーディングスキームと共に使用されることを意味するが、上述した本発明の実施形態は、これに限定されない。即ち、Look-Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチは、それらに連結されたイレイジャーコーディングに適していない装置を有し得る。Look-Asideイレイジャーコーディングロジック1105を有する他のPCIeスイッチの下にグループ化されたイレイジャーコーディングに適したストレージ装置と共に、これらの装置は、Look-Asideイレイジャーコーディングロジックを有する単一のPCIeスイッチの下にグループ化される。このような方式で、Look-AsideイレイジャーコーディングロジックをイネーブルするLook-Asideイレイジャーコーディングロジックを有する一つの(又は、いくつか)PCIeスイッチ、及びLook-AsideイレイジャーコーディングをディセーブルするLook-Asideイレイジャーコーディングロジックを有する一つの(又は、いくつか)PCIeスイッチと共に、
図1のマシン105の最適な機能性が達成される。
【0110】
図14は、本発明の他の実施形態による
図1のSSD及びコプロセッサを含む第4トポロジーを示す図である。
図14で、
図13と比較すると、Look-Asideイレイジャーコーディングロジック(1105、1305、及び1405)を有するPCIeスイッチは、階層的に構成される。階層の最上部にあるLook-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、階層内のLook-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチの下の全てのストレージ装置に対するイレイジャーコーディングを管理し、それによりイネーブルされたLook-Asideイレイジャーコーディングロジックを有する。一方、Look-Asideイレイジャーコーディングロジック(1305及び1405)を有するPCIeスイッチは、(それらのストレージ装置は、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチのLook-Asideイレイジャーコーディングロジックによって管理されるために)ディセーブルされたそれらのLook-Asideイレイジャーコーディングロジックを有する。
【0111】
図14は、2段階の階層(two-tier hierarchy)で構成されたLook-Asideイレイジャーコーディングロジック(1105、1305、及び1405)を有する三つのPCIeスイッチを示すが、本発明は、それらの階層的取り決めに含まれるか、又はその階層的取り決め内にあるPCIeスイッチの数に制限されない。従って、本実施形態は、任意の所望の階層に取り決めされたLook-Asideイレイジャーコーディングロジックを有する任意の数のPCIeスイッチをサポートする。
【0112】
図1~
図14を参照して上述した本発明の実施形態は、単一のポートのストレージ装置に重点を置く。しかし、本発明の実施形態は、一つ(又は、それ以上の)のストレージ装置がLook-Asideイレイジャーコーディングロジックを有する多数のPCIeスイッチと通信するデュアルポートストレージ装置に拡張される。本発明のこれらの実施形態で、
図11のLook-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチがデュアルポートストレージ装置と通信できない場合、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ストレージ装置との通信を試みるためにLook-Asideイレイジャーコーディングロジック1305を有するPCIeスイッチに伝送を送る。Look-Asideイレイジャーコーディングロジック1305を有するPCIeスイッチは、Look-Asideイレイジャーコーディングロジック1105を有するPCIeスイッチがストレージ装置と通信させるブリッジとして効果的に動作する。
【0113】
図15は、本発明の一実施形態によるペアリングデータに対するパートナーをクエリするための
図1のSSD125-1(又は、
図1のコプロセッサ130-1)の手順を示すフローチャートである。
図15において、段階1505で、
図1のSSD125-1は、
図9の識別装置905をそのパートナーに伝送する(又は、
図1のコプロセッサ130-1は、
図10の読み取り識別データ1005をそのパートナーに伝送する)。段階1510で、
図1のSSD125-1は、
図9の識別応答910を受信する(又は、
図1のコプロセッサ130-1は、
図10の読み取り応答1010を受信する)。段階1515で、
図1のSSD125-1は、受信したペアリング情報を
図5のストレージ装置505-2に格納する(又は、
図1のコプロセッサ130-1は、受信したペアリング情報を
図5のストレージ515-1に格納する)。段階1520で、
図1のSSD125-1は、
図5のストレージ装置505-1からそれ自身のペアリング情報にアクセスする(又は、
図1のコプロセッサ130-1は、
図5のストレージ515-2からそのペアリング情報にアクセスする)。最後に、段階1525で、
図1のSSD125-1は、
図9のセットのペアリングデータ915をそのパートナーに伝送し(又は、
図1のコプロセッサ130-1は、
図10のセットの識別データ1015を伝送し)、これにより、そのパートナーは、ペアリング情報を格納する。
【0114】
図16は、本発明の一実施形態によるペアリングデータに対するクエリをパートナーから受信するための
図1のSSD125-1(又は、
図1のコプロセッサ130-1)の手順を示すフローチャートである。
図16において、段階1605で、
図1のSSD125-1は、
図10の読み取り識別データ1005を
図1のコプロセッサ130-1から受信する(又は、
図1のコプロセッサ130-1は、
図1のSSD125-1から
図9の識別装置905を受信する)。段階1610で、
図1のSSD125-1は、
図5のストレージ装置505-1からペアリング情報にアクセスする。(又は、
図1のコプロセッサ130-1は、
図5のストレージ515-2からペアリング情報にアクセスする)。段階1615で、
図1のSSD125-1は、
図10の読み取り応答1010のペアリング情報を
図1のコプロセッサ130-1に伝送する(又は、
図1のコプロセッサ130-1は、
図9の識別応答910のペアリング情報を伝送する)。段階1620で、
図1のSSD125-1は、
図10の設定識別データ1015を
図1のコプロセッサ130-1から受信する(又は、
図1のコプロセッサ130-1は、
図1のSSD125-1から
図9の設定ペアリングデータ915を受信する)。最後に、段階1625で、
図1のSSD125-1は、
図1のコプロセッサ130-1のペアリング情報を
図5のストレージ装置505-2に格納する(
図1のコプロセッサ130-1は、
図1のSSD125-1のペアリング情報を
図5のストレージ515-1に格納する)。
【0115】
図17は、本発明の一実施形態によるペアリングパートナー及び関連する
図5のオペレーティングシステム405からのクエリに応答するための
図1のSSD125-1及び/又はコプロセッサ130-1の手順を示すフローチャートである。
図17において、段階1705で、
図1のSSD125-1及び/又はコプロセッサ130-1は、
図6のクエリ(605及び/又は615)を
図5のオペレーティングシステム405から受信する。段階1710で、
図1のSSD125-1及び/又はコプロセッサ130-1は、
図1のSSD125-1及び/又はコプロセッサ130-1に対する
図5のストレージ装置(505-1及び/又は515-2)から固有のIDや製造業者のモデル番号及び/又はシリアル番号のようなペアリング情報にアクセスする。段階1715で、
図1のSSD125-1及び/又はコプロセッサ130-1は、パートナー装置に対して、
図5のストレージ装置(505-2及び/又は515-1)から固有のIDや製造業者のモデル番号及び/又はシリアル番号のようなペアリング情報にアクセスする。最後に、段階1720で、
図1のSSD125-1及び/又はコプロセッサ130-1は、ペアリングされた装置に関するペアリング情報を
図5のオペレーティングシステム405に伝送する。
【0116】
図18は、本発明の一実施形態による
図1のSSD125-1及びコプロセッサ130-1をクエリしてペアリングするための
図5のオペレーティングシステム405の手順を示すフローチャートである。
図18において、段階1805で、
図5のオペレーティングシステム405は、
図6のクエリ(605及び/又は615)のようなクエリを仮想IDによって示す装置に(
図5のオペレーティングシステム405に)伝送する。段階1810で、
図5のオペレーティングシステム405は、装置からペアリング情報を受信する。段階1815で、
図5のオペレーティングシステム405は、
図6のクエリ(605及び/又は615)のような他のクエリを仮想IDによって示す他の装置に(
図5のオペレーティングシステム405に)伝送する。段階1820で、
図5のオペレーティングシステム405は、その装置からペアリング情報を受信する。段階1825で、
図5のオペレーティングシステム405は、二つの装置が同じペアリング情報を提供したことを決定し、
図5のオペレーティングシステム405内で装置をどうにかしてペアリングする。最後に、段階1830で、
図5のオペレーティングシステム405は、装置のペアリングに関するクエリをサポートしているアプリケーションにAPIを提供する。
【0117】
図19は、本発明の一実施形態による装置に対するペアリング情報に関するアプリケーションからのクエリに応答するための
図5のオペレーティングシステムの手順を示すフローチャートである。
図19において、段階1905で、
図5のオペレーティングシステム405は、特定の装置のペアリングの要求をアプリケーションから受信する。段階1910で、
図5のオペレーティングシステム405は、ペアリング情報を格納するテーブル内で要求された装置を検出する。段階1915で、
図5のオペレーティングシステム405は、テーブル内の装置のペアリングを判別する。段階1920で、
図5のオペレーティングシステム405は、装置のペアリングに関するアプリケーション情報に戻る。
【0118】
或いは、段階1925で、
図5のオペレーティングシステム405は、アプリケーションからデータの識別子(ファイル、オブジェクト、キーなど)に関する情報をペアリングするための要請を受信する。段階1930で、
図5のオペレーティングシステム405は、データ識別子によって識別されたデータを格納する装置を決定する。この時点で、矢印1935で示すように、
図5のオペレーティングシステム405は、上述したように、段階1910、段階1915を遂行する。次に、矢印1940で示すように、
図5のオペレーティングシステム405は、データを貯蔵する装置及びそのペアの両方に関するアプリケーション情報に戻る。
【0119】
図15~
図19に、本発明の一部の実施形態を示した。しかし、当該技術の通常の技術者は、各段階の順序を変更したり、一部の段階を省略したり、図面に示していない連結を含んだりすることにより、本発明の他の実施形態も可能であることを認識する筈である。フローチャートの全てのこれらの変形は、明示的に説明されようがしまいが、本発明の実施形態とみなされる。
【0120】
本発明の実施形態は、従来技術を超える技術的利点を提供する。本発明の実施形態は、
図1のSSD(125-1~125-2)及びコプロセッサ(130-1~130-2)がペアリングパートナーに対するペアリング情報を決定することを許容する。次に、
図1のSSD(125-1~125-2)及びコプロセッサ(130-1~130-2)は、
図5のオペレーティングシステム405にこのペアリング情報を提供し、
図5のオペレーティングシステム405は、任意の装置が他の装置とペアリングされているかに関する情報を格納する。
図5のオペレーティングシステム405が適切にペアリングされた装置を有している場合、
図5のオペレーティングシステム405は、この情報を、APIを介してアプリケーションに提供し、どのサービスが遂行されるかに関するデータを格納する
図1のSSD(125-1~125-2)とペアリングされた
図1のコプロセッサ(130-1~130-2)からアプリケーションがサービスを要請できるようにする。
【0121】
以下の説明は、本発明の技術的思想のいくつかの側面が具現される適切なマシンやマシンの短い一般的な説明を提供する。一つ又は複数のマシンは、少なくとも一部が他のマシンから受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、他の入力信号だけでなく、キーボード、マウスなどのような通常の入力装置からの入力により制御される。ここで使用するように、「マシン」の用語は、単一のマシン、仮想マシン、複数のマシン若しくは複数の仮想マシン、又は共に動作する装置と通信するように結合されたシステムを広く含むものと意図する。例としてのマシンは、例えば、自動車、電車、タクシーなどのような、パーソナル(personal)又は公共交通などのような輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、携帯電話、タブレットなどのようなコンピューティング装置を含む。
【0122】
一つのマシン又は複数のマシンは、プログラム可能な又はプログラム不可能な論理装置若しくはアレイ、ASIC(Application Specific Integrated Circuit)、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含む。一つのマシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信結合を介してのように一つ以上の多くのリモートマシンに対する一つ以上の多くの連結を活用する。マシンは、イントラネット、インターネット、LAN(local area networks)、WAN(wide area networks)などのような物理的及び/又は論理的ネットワークの手段により互いに連結され。この分野に熟練した者は、ネットワーク通信が、無線周波数(RF)、衛星、マイクロウェーブ、IEEE802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含む多様な有線及び/又は無線近距離又は遠距離キャリアとプロトコルを活用することを理解するだろう。
【0123】
本発明の実施形態は、マシンによってアクセスされときに、マシンが作業を遂行するか、又は抽象データ型若しくは低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造、アプリケーションなどを含む関連するデータを参照して若しくは協力して説明される。関連付けられたデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージ装置、ハードディスクドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージなどを含む関連する記憶媒体に格納される。関連するデータは、物理的及び/又は論理的なネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形で伝達され、圧縮された又は暗号化されたフォーマットで利用される。関連付けられたデータは、分散環境で使用され、マシンアクセスに対してローカル及び/又はリモートで格納される。
【0124】
本発明の実施形態は、一つ以上の多くのプロセッサによって遂行可能であり、ここで説明したように、本発明の技術的思想の構成要件を実行するコマンドを含む実在する非一時的マシン読み取り可能な記録媒体を含む。
【0125】
上述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成要素、回路、及び/又はモジュールのように、動作を遂行する任意の適切な手段によって遂行される。ソフトウェアは、論理機能を具現するための実行可能なコマンドの順序付きリストを構成し、コマンドを遂行するシステム、装置、シングル若しくはマルチコアプロセッサ、又はプロセッサを含むシステムのような装置によるか又はこれに関連する使用のための任意の「プロセッサ読み取り可能な記録媒体」に内蔵される。
【0126】
本明細書で開示した実施形態に関連して説明した方法又はアルゴリズム、及び関数のブロック又は段階は、ハードウェアで直接プロセッサによって実行されるソフトウェアモジュール又はその両方の組み合わせによって具現される。ソフトウェアで具現される場合、機能は、有形且つ非一時的なコンピュータ読み取り可能な媒体上の一つ以上のコマンド又はコードとして格納又は伝送される。RAM(Random Access Memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、RD(Removable Disk)、CD ROM、又は従来から知られている任意の他の形態の記憶媒体に内蔵される。
【0127】
図示した実施形態を参照して説明し例示した本発明の技術的思想の原則を有する場合、図示した実施形態がこれらの原則から逸脱せずに取り決めと詳細で修正され、必要な任意の方法で組み合わされることが理解されるはずである。上述した説明は具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、「本発明の実施形態による」のような説明や、ここで使用した同様なものにも拘らず、これらのフレーズは、一般的に実施形態の可能性を参照して、本発明の技術的思想を具体的な実施形態の構成に限定することを意図しない。ここで使用するように、これらの用語は、他の実施形態に組み合わせ可能な同一又は異なる実施形態を参照する。
【0128】
上述した実施形態は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施形態のみを説明したが、この分野における熟練した者は、本明細書に記載の新規な説明と利点から実質的に逸脱せずに、これらの実施形態に多くの修正が可能であることを十分に理解するだろう。従って、これらの全ての修正は、本発明の技術的思想の範囲内に属するものとして意図される。
【0129】
本発明の実施形態は、以下の説明に限定されずに拡張される。即ち、次の事項である。
【0130】
説明1.本発明の一実施形態によるシステムは、
データに対する第1ストレージと、
固有のSSD ID(identifier)に対する第2ストレージと、
固有のコプロセッサIDに対する第3ストレージと、
固有のコプロセッサIDに対する第4ストレージと、
固有のSSD IDに対する第5ストレージと、
SSDとコプロセッサとの間のハードウェアインターフェースと、を含むSSDを備える。
【0131】
説明2.本発明の一実施形態は、説明1によるシステムを含み、コプロセッサは、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【0132】
説明3.本発明の実施形態は、説明1によるシステムを含み、ハードウェアインターフェースは、SMBus(System Management Bus)及びI2C(Inter-Integrated Circuit)バスを含む。
【0133】
説明4.本発明の実施形態は、説明1によるシステムを含み、第4ストレージは、OTP(one-time programmable memory)、PROM(Programmable Read-Only Memory)、EPROM(Eraseable Programmable Read-Only Memory)、及びEEPROM(Electrically Erasable Programmable Read-Only Memory)を含む.
【0134】
説明5.本発明の実施形態は、説明1によるシステムを含み、コプロセッサは、固有のSSD IDのSSDを照会して、第5ストレージの固有SSD IDを保存するように動作する。
【0135】
説明6.本発明の実施形態は、説明1によるシステムを含み、コプロセッサは、固有のコプロセッサIDを含むSSDを提供するように動作する。
【0136】
説明7.本発明の実施形態は、説明1によるシステムを含み、SSDは、固有のコプロセッサIDに対するコプロセッサをクエリし、第3ストレージの固有のコプロセッサIDを格納するように動作する。
【0137】
説明8.本発明の実施形態は、説明1によるシステムを含み、SSDは、固有のSSD IDを含むコプロセッサを提供するように動作する。
【0138】
説明9.本発明の実施形態は、説明1によるシステムを含み、SSDは、SSD及びコプロセッサに関するクエリをアウト・オブ・バンド(out-of-band)で受信するように動作する。
【0139】
説明10.本発明の実施形態は、説明9によるシステムを含み、SSDは、クエリをアウト・オブ・バンドで受信するためのSMBus連結を含む。
【0140】
説明11.本発明の実施形態は、説明9によるシステムを含み、SSDは、固有のSSD ID及び固有のコプロセッサIDの両方に対するクエリに応答するように動作する。
【0141】
説明12.本発明の実施形態は、説明9によるシステムを含み、クエリはNVMe(Non-Volatile Memory Express)MI(Management Interface)コマンドを含む。
【0142】
説明13.本発明の一実施形態は、説明1によるシステムを含み、コプロセッサは、SSD及びコプロセッサに関するクエリをアウト・オブ・バンドで受信するように動作する。
【0143】
説明14.本発明の実施形態は、説明13によるシステムを含み、コプロセッサは、固有のSSD ID及び固有コプロセッサIDの両方に対するクエリに応答するように動作する。
【0144】
説明15.本発明の実施形態は、説明13によるシステムを含み、クエリは、NVMe(Non-Volatile Memory Express)MI(Management Interface)コマンドを含む。
【0145】
説明16.本発明の実施形態は、説明1によるシステムを含み、SSDは、SSD及びコプロセッサに関するクエリをイン・バンド(in-band)で受信するように動作する。
【0146】
説明17.本発明の実施形態は、説明16によるシステムを含み、SSDは、クエリをイン・バンドで受信するためのPCIe(Peripheral Component Interconnect Express)連結を含む。
【0147】
説明18.本発明の実施形態は、説明16によるシステムを含み、SSDは、固有のSSD ID及び固有のコプロセッサIDの両方のクエリに応答するように動作する。
【0148】
説明19.本発明の実施形態は、説明16によるシステムを含み、クエリは、NVMe(Non-Volatile Memory Express)MI(Management Interface)コマンドを含む。
【0149】
説明20.本発明の一実施形態による方法は、
第1装置から第2装置にクエリを伝送する段階と、
第1装置で第2装置から第1ペアリングデータを含む応答を受信する段階と、
第1装置の第2ストレージに第1ペアリングデータを格納する段階と、
第1装置の第1ストレージから第2ペアリングデータにアクセスする段階と、
第1装置から第2装置に第2ペアリングデータを伝送する段階と、を有する。
【0150】
説明21.本発明の一実施形態は、説明20による方法を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【0151】
説明22.本発明の実施形態は、説明20による方法を含み、
第1装置から第2装置にクエリを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置にクエリを伝送する段階を含み、
第1装置で第2装置から応答を受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置から応答を受信する段階を含み、
第1装置から第2装置に第2ペアリングデータを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェース通して第1装置から第2装置に第2ペアリングデータを伝送する段階を含む。
【0152】
説明23.本発明の実施形態は、説明20による方法を含み、第2ストレージは、OTP(one-time programmable)メモリ、PROM(Programmable Read-Only Memory)、EPROM(Eraseable Programmable Read-Only Memory)、及びEEPROM(Electrically Erasable Programmable Read-Only Memory)のいずれか一つを含む。
【0153】
説明24.本発明の一実施形態による方法は、
第1装置で第2装置からクエリを受信する段階と、
第1装置の第1ストレージから第1ペアリングデータにアクセスする段階と、
第1装置から第2装置に第1ペアリングデータを含む応答を伝送する段階と、
第1装置で第2装置から第2ペアリングデータを受信する段階と、
第1装置の第2ストレージに第2ペアリングデータを格納する段階と、を有する。
【0154】
説明25.本発明の実施形態は、説明24による方法を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【0155】
説明26.本発明の実施形態は、説明24による方法を含み、
第1装置で第2装置からクエリを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置からクエリを受信する段階を含み、
第1装置から第2装置に応答を伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置に応答を伝送する段階を含み、
第1装置で第2装置から第2ペアリングデータを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置から第2ペアリングデータを受信する段階を含む。
【0156】
説明27.本発明の実施形態は、説明24による方法を含み、第2ストレージは、OTP(one-time programmable)メモリ、PROM(Programmable Read-Only Memory)、EPROM(Eraseable Programmable Read-Only Memory)、及びEEPROM(Electrically Erasable Programmable Read-Only Memory)のいずれか一つを含む。
【0157】
説明28.本発明の一実施形態による方法は、
第1装置でクエリを受信する段階と、
第1装置の第1ストレージから第1装置に対する第1固有のID(Identifier)にアクセスする段階と、
第1装置の第2ストレージから第1装置とペアリングされた第2装置に対する第2固有のIDにアクセスする段階と、
第1固有のID及び第2固有のIDの両方を含む応答を第1装置からクエリに伝送する段階と、を有する。
【0158】
説明29.本発明の実施形態は、説明28による方法を含み、
第1装置でクエリを受信する段階は、アウト・オブ・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、アウト・オブ・バンドで、第1装置からクエリに応答を伝送する段階を含む。
【0159】
説明30.本発明の実施形態は、説明29による方法を含み、
アウト・オブ・バンドで、第1装置でクエリを受信する段階は、SMBus(System Management Bus)連結を介して第1装置でクエリを受信する段階を含み、
アウト・ボブ・バンドで第1装置からクエリに応答を伝送する段階は、SMBus連結を介して第1装置からクエリに応答を伝送する段階を含む。
【0160】
説明31.本発明の実施形態は、説明28による方法を含み、
第1装置でクエリを受信する段階は、イン・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、イン・バンドで第1装置からクエリに応答を伝送する段階を含む。
【0161】
説明32.本発明の実施形態は、説明31による方法を含み、
第1装置でクエリを受信する段階は、PCIe(Peripheral Component Interconnect Express)連結を介して第1装置でクエリを受信する段階を含み、
イン・バンドで第1装置からクエリに応答を伝送する段階は、PCIe連結を介して第1装置からクエリに応答を伝送する段階を含む。
【0162】
説明33.本発明の実施形態は、説明31による方法を含み、クエリは、NVMe(Non-Volatile Management Express)MI(Management Interface)コマンドを含む。
【0163】
説明34.本発明の一実施形態による方法は、
第1仮想IDによって示されるSSD(Solid State Drive)に第1クエリを伝送する段階と、
第1クエリに応答して、SSDから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第2仮想IDによって示されるコプロセッサに第2クエリを伝送する段階と、
第2クエリに応答して、コプロセッサから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第1仮想IDと第2仮想IDとをペアリングする段階と、有する。
【0164】
説明35.本発明の実施形態は、説明34による方法を含み、SSDに第1クエリを伝送する段階は、アウト・オブ・バンドでSSDに第1クエリを伝送する段階を含む。
【0165】
説明36.本発明の実施形態は、説明35による方法を含み、アウト・オブ・バンドでSSDに第1クエリを伝送する段階は、SMBus連結を介してSSDに第1クエリを伝送する段階を含む。
【0166】
説明37.本発明の実施形態は、説明34による方法を含み、SSDに第1クエリを伝送する段階は、イン・バンドでSSDに第1クエリを伝送する段階を含む。
【0167】
説明38.本発明の実施形態は、説明37による方法を含み、イン・バンドでSSDに第1クエリを伝送する段階は、PCIe連結を介してSSDに第1クエリを伝送する段階を含む。
【0168】
説明39.本発明の実施形態は、説明34による方法を含み、第1クエリは、NVMe MIコマンドを含む。
【0169】
説明40.本発明の実施形態は、説明34による方法を含み、コプロセッサに第2クエリを伝送する段階は、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階を含む。
【0170】
説明41.本発明の実施形態は、説明40による方法を含み、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階は、SMBus連結を介してコプロセッサに第2クエリを伝送する段階を含む。
【0171】
説明42.本発明の実施形態は、説明34による方法を含み、第2クエリは、NVMe MIコマンドを含む。
【0172】
説明43.本発明の実施形態は、説明34による方法を含み、第1仮想IDと第2仮想IDとをペアリングする段階は、固有のSSD ID及び固有のコプロセッサIDを返すSSD及びコプロセッサの両方に応答して第1仮想IDと第2仮想IDとをペアリングする段階を含む。
【0173】
説明44.本発明の実施形態は、説明34による方法を含み、第1仮想IDと第2仮想IDとのペアリングに関するクエリに応答するように動作するAPI(Application Programming Interface)を提供する段階を更に含む。
【0174】
説明45.本発明の実施形態は、説明44による方法を含み、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階と、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階と、を更に含む。
【0175】
説明46.本発明の実施形態は、説明45による方法を含み、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階は、APIを介してアプリケーションから第1仮想IDのペアのためのペアリングに対するクエリを受信する段階を含み、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階は、第1仮想IDと第2仮想IDとのペアリングに応答してアプリケーションに第2仮想IDを返す段階を含む。
【0176】
説明47.本発明の実施形態は、説明44による方法を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
ファイルを格納するSSDを識別する段階と、
ファイルのクエリに応答して第1仮想ID及び第2仮想IDを返す段階と、を更に含む。
【0177】
説明48.本発明の実施形態は、説明47による方法を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階は、APIを介してアプリケーションからファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
ファイルのクエリに応答して第1仮想ID及び第2想IDを返す段階は、ファイルのクエリに応答してアプリケーションに第1仮想ID及び第2仮想IDを返す段階を含む。
【0178】
説明49.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第1装置から第2装置にクエリを伝送する段階と、
第1装置で第2の装置から第1ペアリングデータを含む応答を受信する段階と、
第1装置の第2ストレージに第1ペアリングデータを格納する段階と、
第1装置の第1ストレージから第2ペアリングデータにアクセスする段階と、
第1装置から第2装置に第2ペアリングデータを伝送する段階と、を有する。
【0179】
説明50.本発明の実施形態は、説明49による記録媒体を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【0180】
説明51.本発明の実施形態は、説明49による記録媒体を含み、
第1装置から第2装置にクエリを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置にクエリを伝送する段階を含み、
第1装置で第2装置から応答を受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを介して第1装置で第2装置から応答を受信する段階を含み、
第1装置から第2装置に第2ペアリングデータを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを介して第1装置から第2装置に第2ペアリングデータを伝送する段階を含む。
【0181】
説明52.本発明の実施形態は、説明49による記録媒体を含み、第2ストレージは、OTP(one-time programmable)メモリ、PROM(Programmable Read-Only Memory)、EPROM(Erasable Programmable Read-Only Memory)、及びEEPROM(Electrically Erasable Programmable Read-Only Memory)のいずれか一つを含む。
【0182】
説明53.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第1装置で第2装置からクエリを受信する段階と、
第1装置の第1ストレージから第1ペアリングデータにアクセスする段階と、
第1装置から第2装置に第1ペアリングデータを含む応答を伝送する段階と、
第1装置で第2装置から第2ペアリングデータを受信する段階と、
第1装置の第2ストレージに第2ペアリングデータを格納する段階と、を有する。
【0183】
説明54.本発明の実施形態は、説明53による記録媒体を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【0184】
説明55.本発明の実施形態は、説明53による記録媒体を含み、
第1装置で第2装置からのクエリを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置からクエリを受信する段階を含み、
第1装置から第2装置に応答を伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置に応答を伝送する段階を含み、
第1装置で第2装置から第2ペアリングデータを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを介して第1装置で第2装置から第2ペアリングデータを受信する段階を含む。
【0185】
説明56.本発明の実施形態は、説明53による記録媒体を含み、第2ストレージは、OTP(one-time programmable)メモリ、PROM(Programmable Read-Only Memory)、EPROM(Eraseable Programmable Read-Only Memory)、及びEEPROM(Electrically Erasable Programmable Read-Only Memory)のいずれか一つを含む。
【0186】
説明57.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第1装置でクエリを受信する段階と、
第1装置の第1ストレージから第1装置に対する第1固有のID(Identifier)にアクセスする段階と、
第1装置の第2ストレージから第1装置とペアリングされた第2装置に対する第2固有のIDにアクセスする段階と、
第1固有のID及び第2固有IDの両方を含む応答を第1装置からクエリに伝送する段階と、を有する。
【0187】
説明58.本発明の実施形態は、説明53による記録媒体を含み、
第1装置でクエリを受信する段階は、アウト・オブ・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、アウト・オブ・バンドで、第1装置からクエリに応答を伝送する段階を含む。
【0188】
説明59.本発明の実施形態は、説明58による記録媒体を含み、
アウト・オブ・バンドで、第1装置でクエリを受信する段階は、SMBus(System Management Bus)連結を介して第1装置でクエリを受信する段階を含み、
アウト・ボブ・バンドで第1装置からクエリに応答を伝送する段階は、SMBus連結を介して第1装置からクエリに応答を伝送する段階を含む。
【0189】
説明60.本発明の実施形態は、説明57による記録媒体を含み、
第1装置でクエリを受信する段階は、イン・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、イン・バンドで第1装置からクエリに応答を伝送する段階を含む。
【0190】
説明61.本発明の実施形態は、説明57による記録媒体を含み、
第1装置でクエリを受信する段階は、PCIe(Peripheral Component Interconnect Express)連結を介して第1装置でクエリを受信する段階を含み、
イン・バンドで第1装置からクエリに応答を伝送する段階は、PCIe接続を介して第1装置からクエリに応答を伝送する段階を含む。
【0191】
説明62.本発明の実施形態は、説明57による記録媒体を含み、クエリは、NVMe(Non-Volatile Management Express)MI(Management Interface)コマンドを含む。
【0192】
説明63.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行され方法は、
第1仮想IDによって示されるSSD(Solid State Drive)に第1クエリを伝送する段階と、
第1クエリに応答して、SSDから固有のSSD ID及び固有コプロセッサIDを受信する段階と、
第2仮想IDによって示されるコプロセッサに第2クエリを伝送する段階と、
第2クエリに応答して、コプロセッサから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第1仮想IDと第2仮想IDとをペアリングする段階と、を有する。
【0193】
説明64.本発明の実施形態は、説明63による記録媒体を含み、SSDに第1クエリを伝送する段階は、アウト・オブ・バンドでSSDに第1クエリを伝送する段階を含む。
【0194】
説明65.本発明の実施形態は、説明65による記録媒体を含み、アウト・オブ・バンドでSSDに第1クエリを伝送する段階は、SMBus連結を介してSSDに第1クエリを伝送する段階を含む。
【0195】
説明66.本発明の実施形態は、説明63による記録媒体を含み、SSDに第1クエリを伝送する段階は、イン・バンドでSSDに第1クエリを伝送する段階を含む。
【0196】
説明67.本発明の実施形態は、説明66による記録媒体を含み、イン・バンドでSSDに第1クエリを伝送する段階は、PCIe連結を介してSSDに第1クエリを伝送する段階を含む。
【0197】
説明68.本発明の実施形態は、説明63による記録媒体を含み、第1クエリは、NVMe MIコマンドを含む。
【0198】
説明69.本発明の実施形態は、説明63による記録媒体を含み、コプロセッサに第2クエリを伝送する段階は、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階を含む。
【0199】
説明70.本発明の実施形態は、説明69による記録媒体を含み、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階は、SMBus連結を介してコプロセッサに第2クエリを伝送する段階を含む。
【0200】
説明71.本発明の実施形態は、説明63による記録媒体を含み、第2クエリは、NVMe MIコマンドを含む。
【0201】
説明72.本発明の実施形態は、説明63による記録媒体を含み、第1仮想IDと第2仮想IDとをペアリングする段階は、固有のSSD ID及び固有のコプロセッサIDを返すSSD及びコプロセッサの両方に応答して第1仮想IDと第2仮想IDとをペアリングする段階を含む。
【0202】
説明73.本発明の実施形態は、説明63による記録媒体を含み、方法は、第1仮想IDと第2仮想IDとのペアリングに関するクエリに応答するように動作するAPI(Application Programming Interface)を提供する段階を更に含む。
【0203】
説明74.本発明の実施形態は、説明73による記録媒体を含み、方法は、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階と、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階と、を更に含む。
【0204】
説明75.本発明の実施形態は、説明74による記録媒体を含み、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階は、APIを介してアプリケーションから第1仮想IDに対するペアのためのペアリングに対するクエリを受信する段階を含み、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階は、第1仮想IDと第2仮想IDとのペアリングに応答してアプリケーションに第2仮想IDを返す段階を含む。
【0205】
説明76.本発明の実施形態は、説明73による記録媒体を含み、方法は、
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
ファイルを格納するSSDを識別する段階と、
ファイルのクエリに応答して第1仮想ID及び第2仮想IDを返す段階と、を更に含む。
【0206】
説明77.本発明の実施形態は、説明73による記録媒体を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階は、APIを介してアプリケーションからファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
ファイルのクエリに応答して第1仮想ID及び第2仮想IDを返す段階は、ファイルのクエリに応答してアプリケーションに第1の仮想ID及び第2仮想IDを返す段階を含む。
【0207】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0208】
105 マシン
110 プロセッサ
115 メモリ
120 メモリコントローラ
125、125-1、125-2、125-3、125-4、125-5、125-6、505-1、505-2、510-1、510-2、515-1、515-2、520-1、520-2 ストレージ装置
130-1、130-2 コプロセッサ
205 FPGA
210 ASIC
215 GPU
220 TPU
225 イレイジャーコーディングコントローラ
230 スモールプロセッサコア
305 クロック
310 ネットワークコネクタ
315 バス
320 ユーザーインターフェース
325 入力/出力エンジン
405 オペレーティングシステム
410、415、420、425 仮想識別子(ID)1~4
430、435 データストレージ装置
1105、1305、1405 イレイジャーコーディングロジック