JP2020047277A - Methods and systems including co-processors and storage devices to identify fpga and ssd pairing in multi-device environment - Google Patents

Methods and systems including co-processors and storage devices to identify fpga and ssd pairing in multi-device environment Download PDF

Info

Publication number
JP2020047277A
JP2020047277A JP2019169341A JP2019169341A JP2020047277A JP 2020047277 A JP2020047277 A JP 2020047277A JP 2019169341 A JP2019169341 A JP 2019169341A JP 2019169341 A JP2019169341 A JP 2019169341A JP 2020047277 A JP2020047277 A JP 2020047277A
Authority
JP
Japan
Prior art keywords
ssd
coprocessor
query
virtual
pairing
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
Application number
JP2019169341A
Other languages
Japanese (ja)
Inventor
オスカー ピー. ピント,
P Pinto Oscar
オスカー ピー. ピント,
ラムダス ピー. カチェア,
P Kachare Ramdas
ラムダス ピー. カチェア,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US16/207,080 external-priority patent/US10635609B2/en
Priority claimed from US16/435,442 external-priority patent/US10990554B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2020047277A publication Critical patent/JP2020047277A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

To provide methods and systems for establishing the pairing of storage devices such as SSDs, an FPGA and other co-processors.SOLUTION: A system includes a Solid State Drive (SSD) and a co-processor. The SSD includes a storage for data, a storage for a unique SSD identifier (ID), and a storage for a co-processor ID. The co-processor include a storage for the unique SSD ID, and a storage for the co-processor ID. A hardware interface permits communication between the SSD and the co-processor.SELECTED DRAWING: Figure 1

Description

本発明は、コンピュータシステムに関し、より詳細には、多数の装置環境でペアリングするFPGAとSSDを識別するためのストレージ装置及びコプロセッサ(co−processor)を含むシステム及び方法に関する。   The present invention relates to a computer system, and more particularly, to a system and method including a storage device and a co-processor for identifying an FPGA and an SSD to be paired in a multiple device environment.

FPGA(Field Programmable Gate Array)及びSSD(Solid State Drive)サブ装置は、フォームファクタ、電力、密度、及び性能利益のために、一つのエンクロージャに、しばしば(しかし、常にではない)パッケージされる。FPGA及びSSDは、ホストのPCI(Peripheral Component Interconnect)の観点から、別途の物理的機能(PF:physical function)として表われる。FPGA及びSSDサブ装置は、相互関係がない別途の入力/出力(I/O)スタック(特に、ストレージ及びOpenCL)上に装着される。   Field Programmable Gate Array (FPGA) and Solid State Drive (SSD) sub-devices are often (but not always) packaged in a single enclosure for form factor, power, density, and performance benefits. The FPGA and the SSD are expressed as separate physical functions (PFs) from the viewpoint of a host's PCI (Peripheral Component Interconnect). The FPGA and SSD sub-devices are mounted on separate unrelated input / output (I / O) stacks (particularly storage and OpenCL).

FPGA及びSSD装置の両方を含むフォームファクタは、三つのPFを示す筈である。即ち、Data PF(ユーザー空間PFと称される)、管理PF、及びNVMe(Non−Volatile Memory Express)PFである。最初の二つのPFはFPGAのためのものであり、三つ目のPFはSSDのためのものである。   A form factor that includes both FPGA and SSD devices should exhibit three PFs. That is, a Data PF (referred to as a user space PF), a management PF, and an NVMe (Non-Volatile Memory Express) PF. The first two PFs are for FPGA and the third PF is for SSD.

マシンが一つのFPGA/SSDのペアのみを含む場合には、別途のPFはペアリングの識別(例えば、x86ホストサーバから)に問題とならない。しかし、一つ以上の装置が存在する場合(例えば、密度の高いx86ホストサーバのように)、どのFPGAがどのSSDとペアリングされるかが識別されない。PCIeパススルー(pass−though)がエネーブルされ、多機能装置が多数の単一機能装置として表われる場合には、仮想化された環境で問題は更に深刻である。   If the machine includes only one FPGA / SSD pair, the separate PF does not matter for pairing identification (eg, from an x86 host server). However, if more than one device is present (eg, a dense x86 host server), it is not identified which FPGA is paired with which SSD. The problem is even more acute in a virtualized environment where PCIe pass-through is enabled and multi-function devices appear as multiple single-function devices.

ペアリングは、P2P(peer−to−peer)コンピューティングが適切に機能するために必要である。ペアリングをしていない場合、データが誤ったFPGA装置のコンテキストにロードされ、正しいデータを保持していないハードウェアのカーネルに導かれるため、P2Pが失敗する。ホストユーザーがペアリングの要求事項でアプリケーションを識別できないときに問題が深刻になる。   Pairing is necessary for peer-to-peer (P2P) computing to function properly. Without pairing, P2P fails because the data is loaded into the context of the wrong FPGA device and directed to the kernel of the hardware that does not hold the correct data. The problem is exacerbated when the host user cannot identify the application with the pairing requirements.

SSDのようなストレージ装置、FPGA、及び他のコプロセッサのペアリングを構築する必要がある。   It is necessary to establish a pairing of a storage device such as an SSD, an FPGA, and another coprocessor.

米国特許第8417880号明細書U.S. Pat. No. 8,417,880 米国特許第9712619号明細書US Patent No. 9712619 米国特許第9801219号明細書US Patent No. 9801219 米国特許出願公開第2018/0357018号明細書US Patent Application Publication No. 2018/0357018

本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、SSDのようなストレージ装置、FPGA、及び他のコプロセッサのペアリングを構築するためのシステム及び方法を提供することにある。   The present invention has been made in view of the above-mentioned conventional problems, and an object of the present invention is to provide a system and method for constructing a pairing of a storage device such as an SSD, an FPGA, and another coprocessor. Is to provide.

上記目的を達成するためになされた本発明の一態様によるシステムは、データに対する第1ストレージ、固有のSSD ID(identifier)に対する第2ストレージ、及び固有のコプロセッサIDに対する第3ストレージを含むSSD(Solid State Drive)と、前記固有のコプロセッサIDに対する第4ストレージ、前記固有のSSD IDに対する第5ストレージを含むコプロセッサと、前記SSDと前記コプロセッサとの間のハードウェアインターフェースと、を備える。   To achieve the above object, a system according to an aspect of the present invention includes an SSD including a first storage for data, a second storage for a unique SSD ID (identifier), and a third storage for a unique coprocessor ID. Solid State Drive), a coprocessor including a fourth storage for the unique coprocessor ID, a fifth storage for the unique SSD ID, and a hardware interface between the SSD and the coprocessor.

本発明によれば、SSD/FPGA装置のペアリングソリューションを有することで、装置をより有用に使用するために有益である。短期的に、ペアリングソリューションは、識別間隔を扱うことができる。長期的に、ペアリングソリューションは、アクセラレーション装置をこれからどのようにするかの決定を下すのに役立つ。   According to the present invention, having a SSD / FPGA device pairing solution is beneficial for more useful use of the device. In the short term, the pairing solution can handle the identification interval. In the long run, the pairing solution will help you make decisions about what to do with your acceleration device.

本発明の一実施形態によるストレージ装置とコプロセッサとのペアリングをサポートするために設計されたマシンを示す図である。FIG. 2 illustrates a machine designed to support pairing of a storage device and a coprocessor according to one embodiment of the present invention. 図1のコプロセッサの異なる形態を示す図である。FIG. 2 is a diagram illustrating a different form of the coprocessor of FIG. 1. 図1のマシンの追加的な詳細を示す図である。FIG. 2 shows additional details of the machine of FIG. 1. 図1の装置のオペレーティングシステムを示す図である。FIG. 2 is a diagram illustrating an operating system of the device in FIG. 1. ペアリングに関する情報を格納するように備えられた図1の装置を示す図である。FIG. 2 shows the device of FIG. 1 arranged to store information about pairing. 図1のSSD及びコプロセッサをクエリ(query)して装置をペアリングするオペレーティングシステムを示す図である。FIG. 2 is a diagram illustrating an operating system for querying the SSD and the coprocessor of FIG. 1 to pair devices. 本発明の一実施形態における単一のフォームファクタとしての図1のSSD及びコプロセッサを示す図である。FIG. 2 illustrates the SSD and coprocessor of FIG. 1 as a single form factor in one embodiment of the present invention. 本発明の他の実施形態における単一のフォームファクタとしての図1のSSD及びコプロセッサを示す図である。FIG. 3 illustrates the SSD and coprocessor of FIG. 1 as a single form factor in another embodiment of the present invention. 本発明の一実施形態によるペアリングを構築する図1のSSD及びコプロセッサを示す図である。FIG. 2 is a diagram illustrating the SSD and the coprocessor of FIG. 1 for establishing pairing according to an embodiment of the present invention; 本発明の他の実施形態によるペアリングを構築する図1のSSD及びコプロセッサを示す図である。FIG. 7 is a diagram illustrating the SSD and the coprocessor of FIG. 1 for establishing a pairing according to another embodiment of the present invention; 本発明の一実施形態による図1のSSD及びコプロセッサを含む第1トポロジーを示す図である。FIG. 2 is a diagram illustrating a first topology including the SSD and the coprocessor of FIG. 1 according to an embodiment of the present invention; 本発明の他の実施形態による図1のSSD及びコプロセッサを含む第2トポロジーを示す図である。FIG. 6 is a diagram illustrating a second topology including the SSD and the coprocessor of FIG. 1 according to another embodiment of the present invention; 本発明の一実施形態による図1のSSD及びコプロセッサを含む第3トポロジーを示す図である。FIG. 4 is a diagram illustrating a third topology including the SSD and the coprocessor of FIG. 1 according to an embodiment of the present invention; 本発明の他の実施形態による図1のSSD及びコプロセッサを含む第4トポロジーを示す図である。FIG. 7 is a diagram illustrating a fourth topology including the SSD and the coprocessor of FIG. 1 according to another embodiment of the present invention; 本発明の一実施形態によるペアリングデータに対するパートナー(partner)をクエリ(query)するための図1のSSD(又は、図1のコプロセッサ)の手順を示すフローチャートである。2 is a flowchart illustrating a procedure of the SSD of FIG. 1 (or the coprocessor of FIG. 1) for querying a partner for pairing data according to an embodiment of the present invention. 本発明の一実施形態によるペアリングデータに対するクエリをパートナーから受信するための図1のSSD(又は、図1のコプロセッサ)の手順を示すフローチャートである。2 is a flowchart illustrating a procedure of the SSD in FIG. 1 (or the coprocessor in FIG. 1) for receiving a query for pairing data from a partner according to an embodiment of the present invention. 本発明の一実施形態によるペアリングパートナー及び関連する図5のオペレーティングシステムからのクエリに応答するための図1のSSD及び/又はコプロセッサの手順を示すフローチャートである。6 is a flowchart illustrating a procedure of the SSD and / or coprocessor of FIG. 1 for responding to queries from a pairing partner and the associated operating system of FIG. 5 according to one embodiment of the present invention. 本発明の一実施形態による図1のSSD及びコプロセッサをクエリしてペアリングするための図5のオペレーティングシステムの手順を示すフローチャートである。6 is a flowchart illustrating a procedure of the operating system of FIG. 5 for querying and pairing the SSD and the coprocessor of FIG. 1 according to an embodiment of the present invention. 本発明の一実施形態による装置に対するペアリング情報に関するアプリケーションからのクエリに応答するための図5のオペレーティングシステムの手順を示すフローチャートである。6 is a flowchart illustrating a procedure of the operating system of FIG. 5 for responding to a query from an application regarding pairing information for a device according to an embodiment of the present invention.

以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、多様な特定の実施形態を、本発明の技術的思想の十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、これらの特定の実施形態がなくても、本発明の技術的思想を具現することができる。他の例として、よく知られた方法、手順、構成エレメント、回路、及びネットワークは、本発明を不必要に曖昧にしないために詳細に説明しない。   Hereinafter, specific examples of embodiments for carrying out the present invention will be described in detail with reference to the drawings. In the following detailed description, various specific embodiments are provided to facilitate a thorough understanding of the teachings of the present invention. However, those having ordinary skill in the art can implement the technical idea of the present invention without these specific embodiments. As other examples, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure the present invention.

ここで、第1、第2などのような用語を多様な構成要素を説明するために使用するが、これらの構成要素は、これらの用語によって限定されない。これらの用語は、一つのエレメントを他の一つのエレメントと区別するためにのみ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第1モジュールは、第2モジュールと命名される。同様に、第2モジュールは、第1モジュールと命名される。   Here, terms such as first and second are used to describe various components, but these components are not limited by these terms. These terms are only used to distinguish one element from another. By way of example, without departing from the spirit of the invention, the first module is named the second module. Similarly, the second module is named the first module.

本発明の技術的思想の説明において、使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定するものとして意図しない。本発明の技術的思想の説明及び請求項において使用されるように、コンテキスト上明確に明示していると判定されない限り、単数表現は複数表現もまた含むものとして意図する。「及び/又は」の用語は、一つ以上の関連する項目の任意且つ可能な全ての組み合わせを含むものとして参照される。「含む(comprise)」及び/又は「含む(comprising)」の用語は、詳細な説明で使用される際に、言及する特性、整数、段階、動作、エレメント、及び/又は構成要素の存在を明示し、一つ以上の他の特性、整数、段階、動作、エレメント、構成要素、及び/又はそれらのグループの存在又は追加を排除しない。図面の構成要素及び特性は、実際の比率に必ずしも比例しない。   In the description of the technical concept of the present invention, terms used are used only for the purpose of describing a specific embodiment and are not intended to limit the technical concept of the present invention. As used in the description and claims of the present invention, the singular forms "a" and "an" include plural references unless the context clearly dictates otherwise. The term "and / or" is referred to as including any and all possible combinations of one or more of the associated items. The terms “comprise” and / or “comprising”, when used in the detailed description, specify the presence of the property, integer, step, operation, element, and / or component it refers to. However, it does not exclude the existence or addition of one or more other properties, integers, steps, acts, elements, components, and / or groups thereof. The components and characteristics of the drawings are not necessarily proportional to the actual ratio.

装置の一つ以上の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(登録商標)」のドライバ内部、及びファイルシステムレベルのマッピングの複雑さをよく知らなければならない。   If one or more Solid State Drive (SSD) / Field Programmable Gate Array (FPGA) pairs of the device are available on the same server, the user of the host application will be able to peer over these two separate pairings ( There is a possibility to select a buffer and SSD. Such a selection results in inaccurate results of data corruption and acceleration. The SSD / FPGA pair exposes three physical functions (PFs). That is, the data PF (for the FPGA) (also referred to as the user space PF), the management PF (for the FPGA), and the NVMe (Non-Volatile Memory Express) PF (for the SSD). This problem is alleviated if the three PFs are based on the same device. However, using the “Xilinx®” three-port switch design approach, the FPGA and SSD appear as separate devices without details about their physical associations (“Xilinx®” Xilinx (registered trademark) "). This problem is further complicated by the OpenCL software interface that exposes Xilinx to its own applications. The software interface virtualizes details of a bus / device / function (Bus / Device / Function: BDF), and indicates each FPGA device by a logical number such as 0, 1, or 2. Such additional indirection at the software level completely obscures the previously inferred pairing association at the Peripheral Component Interconnect (PCI) BDF level. The application or user must be familiar with the connectivity of multi-function devices at the PCI BDF level, the inside of the Xilinx driver, and the complexity of mapping at the file system level.

この取り決めは、エラーが発生しやすい傾向を有し、使用される環境に基づいて異なる問題として表われる。これらの取り決めは、ピアリング要請がユーザーにつながる可能性があることから、デバッグすることが面倒な可能性もある。   This arrangement is error prone and manifests as different issues based on the environment in which it is used. These arrangements can be cumbersome to debug, as peering requests can lead to users.

<密度の高いシステム>   <High-density system>

上述の場合に、全ての装置が同じルートコンプレックスの下にあるものと期待される。しかし、SSD/FPGA装置が密集したシステムは、各CPUソケットに連結された各ルートコンプレックスの下に構成される一つ以上のPCIe(PCI Express)スイッチの使用が必要である。仮想化のコンテキストで活用され、CPU/チップセットによるサポートが多様化されたACS(Access Control Service)に対して、ピアリングが均一にサポートされず、トポロジーにおいてこれらのニュアンスをアプリケーションのユーザーが理解するのに負担になる。   In the above case, it is expected that all devices are under the same root complex. However, systems with densely packed SSD / FPGA devices require the use of one or more PCIe (PCI Express) switches configured under each root complex connected to each CPU socket. For access control services (ACS) that are leveraged in the context of virtualization and have diversified CPU / chipset support, peering is not evenly supported and application users understand these nuances in the topology. Burdensome.

SSDからP2P−DDR(Dial On Demand Routing)へのP2P伝送がサポートされないために、P2P伝送が失敗することがある。この結果は、PCIルートコンプレックスがルートポートの間のパケットの伝送をサポートすることが要求されないという事実に起因する。この設計の選択は、ストレージアクセラレーションコンテキストにおけるP2Pの使用には実質的に良いが、ユーザーの経験には良くない。   P2P transmission from an SSD to P2P-DDR (Dial On Demand Routing) is not supported, so that P2P transmission may fail. This result is due to the fact that the PCI root complex is not required to support the transmission of packets between root ports. This design choice is substantially good for P2P use in a storage acceleration context, but not good for the user experience.

高密度のSSD/FPGA配置は、多様なシステムベンダーによる任意のIntel/AMDソリューションで構築され、システムがどのように相互作用するかに対する制御が制限されたり、できなかったりする。この事実は、動作するものと動作しないものに対する複雑さをもたらす。   High-density SSD / FPGA deployments are built with any Intel / AMD solution from a variety of system vendors, with limited or no control over how the systems interact. This fact introduces complexity for what works and what doesn't.

<仮想化環境におけるPCIパススルー(pass−through)>   <PCI pass-through in virtualized environment>

特定のLinux(登録商標)仮想化環境において、SSD/FPGA装置のような多機能装置が仮想マシン(VM)に対する通過属性にマッピングされる場合、各物理的機能に対して別途の単一機能の装置として表われる。従って、SSDとFPGAとの間に露出された三つのPFは、互いに関連付けられない三つの単一機能の装置としてマッピングされる。   In a specific Linux virtualization environment, if a multi-function device such as an SSD / FPGA device is mapped to a pass-through attribute for a virtual machine (VM), a separate single function for each physical function Appears as a device. Thus, the three PFs exposed between the SSD and the FPGA are mapped as three single function devices that are not associated with each other.

<PCI知識のないユーザー>   <Users without PCI knowledge>

以上の場合に加えて、アプリケーションのユーザーは、BDFの連結を知るのに十分な知識がない場合もある。この事実は、ユーザーがこのレベルのシステムの詳細に対して教育を受ける必要のない上位レベルのアプリケーションユーザーである可能性があるからである。この問題は、この知識のギャップを解決するために、高いレベルの抽象化が要求される状況をもたらす。   In addition to the above cases, the user of the application may not have enough knowledge to know the connection of the BDF. This is because the user may be a higher-level application user who does not need to be educated about the details of this level of the system. This problem leads to situations where a high level of abstraction is required to close this knowledge gap.

<提案ソリューション>   <Proposed solution>

SSD/FPGA装置は、ストレージアクセラレーションを提供し、他のスタンドアロンSSD及びFPGAと区別することで、新しいSSDの装置クラスと見なされる。新しい装置は、それ自体を識別する明確な方法を必要とする。即ち、近くのストレージ容量を有するFPGAか又はそれに近くのアクセラレーションがあるNVMe SSDか?であり、ソリューションは、次の構成を含む。   SSD / FPGA devices are considered a new SSD device class by providing storage acceleration and distinguishing them from other stand-alone SSDs and FPGAs. New devices need a clear way to identify themselves. That is, FPGA with near storage capacity or NVMe SSD with near acceleration? And the solution includes the following configuration.

低いレベルの装置インターフェースの変更は、特性を共有するためのFPGAとSSDとの間のSMBus(System Management Bus)のようなプライベート(private)ハードウェアインターフェ−スと、アクセラレーション属性を収容するためのNVMe SSDファームウェアに対する小さなアップデートと、SSDをクエリしてSSDの識別ペアリング属性を知らせるFPGAファームウェアのアップデートと、を備える。   Low-level device interface changes include private hardware interfaces, such as SMBus (System Management Bus), between the FPGA and SSD to share characteristics, and acceleration attributes. A small update to the NVMe SSD firmware, and an update to the FPGA firmware that queries the SSD and informs the SSD of the identifying pairing attributes.

高いレベルのソフトウェアインターフェースの変更は、低いレベルのペアリングの詳細をクエリし、NVMe識別コントローラの新しい特性を存在するソフトウェアのパスに露出させて管理ソフトウェアモジュールを強化し、ペアリングのためにFPGA及びSSDをクエリするFPGAへのインターフェースを含む。   Changes in the high-level software interface enhance the management software module by querying the details of the low-level pairing, exposing the new features of the NVMe identification controller to the existing software path, and enhancing the FPGA and Includes interface to FPGA to query SSD.

装置名やファイル名などでペアリングを識別するアプリケーションインターフェースコールを含むエコシステムを採択するためにイネーブルされたAPIを含む。   Includes an API enabled to adopt an ecosystem that includes application interface calls that identify pairings by device name, file name, etc.

これらの変更は、NVMe SSDを、必要な程度、一般的に維持するように十分に小さくなければならない。例として、既存のNVMe SSDは、SSD/FPGA装置内のSSDとして収容されるように再プログラミングされる。   These changes must be small enough to maintain the NVMe SSD as generally as necessary. As an example, an existing NVMe SSD is reprogrammed to be accommodated as an SSD in an SSD / FPGA device.

<FPGAを含むペアリングのためのNVMe SSDへの変更>   <Change to NVMe SSD for pairing including FPGA>

ハードウェアの小さな変更は、FPGAとSSDとが互いに通信できるようにする。   Minor hardware changes allow the FPGA and SSD to communicate with each other.

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に返す。   The SSD controller supports two SMBus master interfaces (as shown and described below with reference to FIGS. 7, 8 and text). The first SMBus master interface is connected to a BMC (Board Management Controller) or an external SMBus (Out of Band: OOB) output via a connector from such a management item. The second SMBus master port on the SSD is connected to the slave or master SMBus port of the FPGA device. The out-of-band (OOB) SMBus interface is used to implement a management protocol such as the NVMe management interface (NMVe-MI). The internal SMBus interface between the SSD controller and the FPGA is used exclusively for communication between the two devices. The firmware of the SSD controller queries the FPGA device for a unique identification. This interface is used by the SSD controller under the guidance of the BMC or host for the configuration, status and monitoring of the FPGA device. When the host or BMC queries the SSD controller for the identification information of the FPGA using a management protocol such as NVMe-MI, the SSD controller fetches necessary information from the FPGA and returns it to the host or BMC.

SSDコントローラは、メッセージベースのプロトコルを使用してFPGA装置と通信する。SSDコントローラは、多様なコマンドメッセージをFPGAのスレーブSMBusポートに書き込んで応答の可用性をポーリング(polling)する。FPGA応答メッセージが準備されると、SSDコントローラは、応答メッセージを読み出す。FPGAがSSDコントローラの注意を必要とする場合、FPGAはSSDコントローラによって周期的にポーリングされるフラグを設定する。   The SSD controller communicates with the FPGA device using a message-based protocol. The SSD controller writes various command messages to the slave SMBus port of the FPGA and polls for the availability of the response. When the FPGA response message is prepared, the SSD controller reads the response message. If the FPGA needs the attention of the SSD controller, the FPGA sets a flag that is periodically polled by the SSD controller.

SSDのファームウェアに収容された小さな変更は、上述のハードウェアの設定をサポートする。PCIe装置の初期化完了は、多機能装置内のエンベデッドオペレーティングシステム(Operating System:O/S)環境で、前もって発生する。その後、多機能装置は、x86ホストのコンテキストで再び初期化される。   A small change contained in the SSD firmware supports the hardware configuration described above. The completion of the initialization of the PCIe device occurs in advance in an embedded operating system (O / S) environment in the multi-function device. Thereafter, the multifunction device is reinitialized in the context of the x86 host.

PCIe初期化段階の一部として、ソフトウェアの構成要素(SSD装置のファームウェア)が多機能装置に対するローカル及び連結された装置をクエリして発見する。NVMe SSD及びFPGAの構成要素の初期化が完了すると、ソフトウェアの構成要素は、ユニークな(固有の)シリアル番号及び製品の部品番号を提供する装置の詳細に対するFPGAをクエリする。このような詳細は、メモリマップされたNVMe BAR(Base Address Register)空間のプライベートオフセットでSSDレジスタに書き込まれる。書き込みウィンドウは、リセット後にPCI構成アクセスが行われてこのアップデートを受け入れる前に、SSDのファームウェアによって使用可能になる。これはアップデートをOSの制御内で維持する。   As part of the PCIe initialization phase, a software component (firmware of the SSD device) queries and finds local and connected devices for the multi-function device. Once the NVMe SSD and FPGA components have been initialized, the software components query the FPGA for device details that provide a unique (unique) serial number and product part number. Such details are written to the SSD register at a private offset in a memory-mapped NVMe BAR (Base Address Register) space. The write window is made available by the SSD's firmware before a PCI configuration access is made after reset to accept this update. This keeps the updates within the control of the OS.

NVMe仕様は、識別コントローラ及びNamespaceコマンドを定義してNVMe SSDの機能を探し出す。これらの機能の一部として、コントローラは、アクセラレーション(加速)機能を知らせるために、次を定義する。   The NVMe specification defines the identification controller and the Namespace command to find out the capabilities of the NVMe SSD. As part of these functions, the controller defines the following to signal the acceleration (acceleration) function.

<識別コントローラのデータ構造>   <Data structure of identification controller>

Figure 2020047277
Figure 2020047277

<拡張された特徴>   <Extended Features>

Figure 2020047277
Figure 2020047277

Figure 2020047277
Figure 2020047277

<SSD装置のペアリングを知らせるためのFPGAへの変更>   <Change to FPGA to notify SSD device pairing>

NVMe SSDと同様に、FPGAは、エンベデッドO/Sの構成要素によって固有のSSDの詳細からプログラミングされる。これらの詳細は、インターフェースを介してx86ホストソフトウェアの構成要素に使用される。   Like the NVMe SSD, the FPGA is programmed from the specific SSD details by the embedded O / S components. These details are used for x86 host software components via the interface.

<ペアリングのためのエンベデッドO/Sの構成要素>   <Components of embedded O / S for pairing>

ソフトウェアの構成要素は、(SSDのファームウェアも)多機能装置にローカル及び連結された装置をクエリして探し出すことができる。NVMe SSD及びFPGAの構成要素の初期化が完了すると、ソフトウェアの構成要素は、固有のシリアル番号及び製品の部品番号を提供する装置の詳細をFPGAにクエリする。これらの詳細は、メモリマップされたNVMe BAR空間のプライベートオフセットでSSDレジスタに書き込まれる。同様に、ソフトウェアの構成要素は、固有のSSDの詳細事項でFPGAにプログラミングし、互いにペアリングされるようにする。   Software components (as well as SSD firmware) can query and locate devices that are local and coupled to the multi-function device. Once the NVMe SSD and FPGA components have been initialized, the software components query the FPGA for device details that provide a unique serial number and product part number. These details are written to the SSD register at the private offset in the memory-mapped NVMe BAR space. Similarly, software components are programmed into the FPGA with unique SSD details to be paired with each other.

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を設定)
Sample list at power ON / RESET on SMBus 1. FPGA issues NVMe (Read Identification Controller) to SSD 2. SSD responds to identification data 3. FPGA stores details of serial number and model number The FPGA issuing NVMe (identification data setting-extended feature offset-provider details 3072-4095 bytes) includes:
Operation type: FPGA, count, exclusive / shared Operation type: CPU-ARM, count, exclusive / shared FPGA issues NVMe (identification data setting)
6. The issue of the NVMe by the FPGA (LogPage-compute_FPGA setting) includes the following.
Serial number, model number,
Hardware functions (LUTs, BRAM, URAM, Reg, DSP, DRAM)
7. SSD confirms NVMe (sets LogPage-compute_FPGA)

ペアリング及び他の特徴に対する追加のクエリのために、x86ホストソフトウェアと構成要素との間にプライベートインターフェースが存在する。   A private interface exists between the x86 host software and components for additional queries for pairing and other features.

<新しいペアリングを収容するための管理可能性ソフトウェアの変更>   <Changes in manageability software to accommodate new pairings>

BMCは、一般的にSMBus上のSSDとインターフェースする。このインターフェースは、FPGAのペアを収容するように拡張され、更に有用性及び管理可能性性のための特性及びその他の属性を収容する。   The BMC generally interfaces with the SSD on the SMBus. This interface is extended to accommodate pairs of FPGAs, and further includes properties and other attributes for usability and manageability.

サンプルの流れは、次の通りである。
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データをリターン
The flow of the sample is as follows.
1. BMC issues NVMe to SSD (sets LogPage Temp2)
2. 2. SSD requests FPGA with read temperature sensor FPGA returns temperature data (return)
4. 4. SSD returns LogPage data. BMC issues NVMe to SSD (Read LogPage FPGA Utilization)
6. 6. Request for FPGA with SSD including LogPage FPGA Utilization 7. FPGA returns Utilization data SSD returns LogPage data

<ペアリングのためのx86ホストソフトウェアの構成要素>   <Components of x86 host software for pairing>

このソフトウェア構成要素は、ライブラリとして利用可能であり、多機能装置に共存するNVMe SSDとFPGAとの間のペアリングの詳細を提供する。この構成要素は、x86 SD Accelランタイムドライバ及びライブラリと共に動作してペアリングの詳細を提供する。   This software component is available as a library and provides details of the pairing between the NVMe SSD and the FPGA coexisting in the multifunction device. This component works with the x86 SD Accel runtime driver and library to provide pairing details.

現在のOpenCLインターフェースは、装置のBDFレベルの詳細を公開していないが、オフセット0から始まる数字によって論理的抽象化を提供する。インターフェースは、プロバイダーによって内部的に変更され、ハードウェアで公開された低いレベルの詳細をクエリし、そうすることで、コンピュータ側に対するペアリングの詳細も提供される。ここでは、プロバイダーがインターフェースの変更を担当する。   The current OpenCL interface does not disclose the BDF level details of the device, but provides a logical abstraction by numbers starting at offset 0. The interface is modified internally by the provider to query low-level details exposed on the hardware, so that the details of the pairing to the computer side are also provided. Here, the provider is responsible for changing the interface.

<ペアリングをクエリするためのコマンドラインツール>   <Command line tool for querying pairing>

コマンドラインツールは、オプションなしで遂行されると、下記表4に記載されたような詳細を提供する。二つのI/Oスタック及びプログラム可能な装置の参照は、詳細事項に反映される。NVMe SSDの/dev/nvme2は、インデックス0のアクセラレーション装置(アクセラレーション機又はアクセラレータ)とペアリングされる。サーバに示されたように、SSD装置の順序がFPGAアクセラレーション装置ほどには増加しないことに留意しなければならない。   The command line tool, when performed without options, provides the details as described in Table 4 below. References to the two I / O stacks and the programmable device will be reflected in the details. / Dev / nvme2 of the NVMe SSD is paired with an acceleration device (accelerator or accelerator) of index 0. It should be noted that the order of SSD devices does not increase as much as FPGA accelerated devices, as shown on the server.

<コマンドラインツール出力>   <Command line tool output>

Figure 2020047277
Figure 2020047277

コマンドラインツールは、システム管理者のように、プライベートフィールドに、より重要な追加の詳細を示す冗長なオプションをサポートすることもできる。これらの追加の詳細には、シリアル番号、モデル、ファームウェアの詳細、ネーム空間、及びパーティションマッピング情報のような装置クラスを介して固有のNVMe SSDの属性を含む。固有の詳細なセットは、装置が連結されたスロットを識別するPCIe装置チェーンを含む。下記表5は、このような情報の例を示す。   Command line tools can also support verbose options that provide more important additional details in private fields, like system administrators. These additional details include NVMe SSD attributes that are unique via device class such as serial number, model, firmware details, namespace, and partition mapping information. The unique detailed set includes a PCIe device chain that identifies the slot to which the device was linked. Table 5 below shows an example of such information.

<コマンドラインツールの出力>   <Output of command line tool>

Figure 2020047277
Figure 2020047277

装置「/dev/nvme0」の場合、SSD/FPGA装置は、「numa node 0」CPUにも近いスロット番号1に連結される。この情報は、CPU親和性のためのアプリケーションレベルだけでなく、フィールドレベルでも使用される。この情報は、深くネストされた(nested)PCIeスイッチファブリックに含まれる場合、装置の階層構造を理解するために使用され、例えば、システム管理者のための装置の問題を切り分けることもできる。   In the case of device "/ dev / nvme0", the SSD / FPGA device is connected to slot number 1 which is also close to the "numa node 0" CPU. This information is used at the field level as well as at the application level for CPU affinity. This information, when included in a deeply nested PCIe switch fabric, can be used to understand the hierarchical structure of the device, for example, to isolate device problems for a system administrator.

<利点>   <Advantages>

SSD/FPGA装置のペアリングソリューションを有することは、これらの装置をより有用に使用するために有益である。短期的に、このペアリングソリューションは、識別のギャップを扱う。長期的に、このペアリングソリューションは、アクセラレーション装置をこれからどのようにするかの決定を下すのに役立つ。このソリューションは、GPU、Advanced RISC(Reduced Instruction Set Computer)Machine(ARM)のようなエンベデッドCPUs、RISC−V、TPU(Tensor Processing Unit)、及び特定のハードウェアベースの加速機、NVMe仕様拡張、又はいくつかの他のメカニズムのような他の加速機のタイプのために使用される。   Having a pairing solution for SSD / FPGA devices is beneficial for using these devices more effectively. In the short term, this pairing solution addresses the identification gap. In the long run, this pairing solution will help you make decisions about what to do with your acceleration device. This solution includes GPUs, embedded CPUs such as the Advanced Reduced Instruction Set Computer (RISC) Machine (ARM), RISC-V, TPU (Tensor Processing Unit), and certain hardware-based accelerators or NVMe specification extensions. Used for other accelerator types, such as some other mechanisms.

図1は、本発明の一実施形態によるストレージ装置とコプロセッサのペアリングをサポートするために設計されたマシンを示す図である。図1に、マシン105を図示する。マシン105は、プロセッサ110を含む。プロセッサ110は、任意の多様なプロセッサである。例えば、Intel Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、又はAtom(登録商標)プロセッサ、AMD Opteron(登録商標)プロセッサ、ARM(登録商標)プロセッサである。図1は、マシン105内の一つのプロセッサ110を図示するが、マシン105は、任意の数のプロセッサを含むことができ、そのプロセッサのそれぞれは、シングル(単一)コア又はマルチコアプロセッサであり、任意の望ましい組み合わせで混合され得る。   FIG. 1 is a diagram illustrating a machine designed to support pairing of a storage device and a coprocessor according to an embodiment of the present invention. FIG. 1 illustrates the machine 105. Machine 105 includes a processor 110. Processor 110 is any of a variety of processors. For example, Intel Xeon (registered trademark), Celeron (registered trademark), Itanium (registered trademark), or Atom (registered trademark) processor, AMD Opteron (registered trademark) processor, and ARM (registered trademark) processor. Although FIG. 1 illustrates one processor 110 in machine 105, machine 105 can include any number of processors, each of which is a single-core or multi-core processor, They can be mixed in any desired combination.

マシン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によって管理される。   Machine 105 includes memory 115. Memory 115, a flash memory such as 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), or NVRAM (Non-Volatile Random Access Memory). The memory 115 can be any desired combination of different memory types. The memory 115 is managed by the memory controller 120.

マシン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はハードディスクドライブであり得る。   The machine 105 includes storage devices (125-1, 125-2) that can be controlled by a device (apparatus) driver (not shown). The storage devices (125-1, 125-2) are storage devices of any desired form. By way of example, the storage device (125-1, 125-2) is a solid state drive (SSD) such as a non-volatile memory express (NVMe) SSD, a hard disk drive, or any other desired form of storage device. . Note that the storage devices (125-1, 125-2) may be of different types, manufacturers, and / or models. For example, the storage device 125-1 may be an SSD and the storage device 125-2 may be a hard disk drive.

マシン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)は、任意の所望の構成要素を使用して具現される。   The machine 105 also includes coprocessors (130-1 to 130-2). The coprocessors (130-1 to 130-2) provide any necessary functions to support the storage devices (125-1, 125-2). By way of example, coprocessor 125-1 may provide functions such as data acceleration, data deduplication, data integrity, data encryption, data compression, and / or erasure coding. Each of the coprocessors (130-1 to 130-2) provides one such function, and each of the coprocessors (130-1 to 130-2) provides a number of these functions. The coprocessors (130-1 to 130-2) are embodied using any desired components.

図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)の他の具現も含むことができる。   FIG. 2 is a diagram illustrating a different form of the coprocessor of FIG. 1, and includes an FPGA (Field Programmable Gate Array) 205, an ASIC (Application-Specific Integrated Circuit) 210, a GPU (Graphics Processing Unit), and a GPU (Graphics Processing Unit) ) 220, an erasure coding controller 225, and a small processor core 230. However, embodiments of the present invention may include other embodiments of the coprocessors (130-1 to 130-2).

図1を再び参照すると、図1は、各ストレージ装置に対する一つのコプロセッサを有する二つのストレージ装置を図示するが、本発明の実施形態は、所望により、任意の数のストレージ装置及び他のタイプの各ストレージ装置に対する任意の数のコプロセッサを含むことができる。なお、一部の実施形態で、いくつかのストレージ装置はコプロセッサを有し、他のストレージ装置はコプロセッサを有さない。しかし、唯一つのストレージ装置及び一つのコプロセッサのように、ストレージ装置とコプロセッサとのペアリングに対する心配はないため、本発明の殆どの実施形態は、対応するコプロセッサを有する少なくとも二つのストレージ装置を含む。以下では、「ペアリング」という用語は、ペアリングされた一つの装置が他の装置をサポートする装置を称し、ペアリングを二つの装置にのみ限定するものと理解してはならない。例として、ストレージ装置にFPGA及びGPUの両方を含めると、三つの装置の全てが「ペアリングされた(paired)」と見なされる。(或いは、FPGA及びGPUは、共通のストレージ装置とは別途にペアリングされたものとして考慮され、必要な場合、FPGAとGPUとの間の関連性が間接的に決定される。)   Referring again to FIG. 1, although FIG. 1 illustrates two storage devices with one coprocessor for each storage device, embodiments of the present invention may be used with any number of storage devices and other types as desired. May include any number of coprocessors for each storage device. Note that in some embodiments, some storage devices have coprocessors and other storage devices do not have coprocessors. However, since there is no concern about pairing a storage device with a coprocessor, as with only one storage device and one coprocessor, most embodiments of the present invention provide at least two storage devices with corresponding coprocessors. including. In the following, the term “pairing” refers to a device in which one paired device supports another device and should not be understood as limiting the pairing to only two devices. As an example, if a storage device includes both an FPGA and a GPU, all three devices are considered "paired". (Alternatively, the FPGA and GPU are considered separately paired with the common storage device, and if necessary, the association between the FPGA and GPU is indirectly determined.)

図1は、(スタンドアロン(standalone)又はラック(rack)サーバであり得る)サーバとしてマシン105を図示するが、本発明の実施形態は、任意の所望のタイプのマシン105を制限なしに含む。例として、マシン105は、デスクトップ、ラップトップコンピュータ、又は本発明の実施形態から恩恵を得ることができる任意の他のマシンに置き換えられる。マシン105は、特殊なポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン、及び他のコンピューティングマシンを含む。   Although FIG. 1 illustrates the machine 105 as a server (which may be a stand-alone or rack server), embodiments of the present invention include, without limitation, any desired type of machine 105. By way of example, machine 105 may be replaced with a desktop, laptop computer, or any other machine that can benefit from embodiments of the present invention. Machine 105 includes specialized portable computing machines, tablet computers, smartphones, and other computing machines.

図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を使用して管理される入力/出力インターフェースポートが実装される。   FIG. 3 is a diagram illustrating additional details of the machine of FIG. In FIG. 3, machine 105 generally includes one or more processors 110 that include a memory controller 120 and a clock 305 that can be used to coordinate the operation of components of the device (machine 105). The processor 110 is connected to a memory 115 including, for example, a random access memory (RAM), a read-only memory (ROM), or another state storage medium. The processor 110 is connected to the storage device 125 and a network connector 310 which is, for example, an Ethernet (registered trademark) (Ethernet (registered trademark)) connector or a wireless connector. The processor 110 is coupled to a bus 315, which implements a user interface 320 and an input / output interface port managed using an input / output engine 325, among other components.

図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の動作をサポートすることを知らない可能性がある。   FIG. 4 is a diagram showing an operating system of the device shown in FIG. In a conventional system, the operating system 405 uses the SSDs (125-1, 125-2) and the coprocessors (130-1 to 130-2) using virtual identifiers (IDs) (410, 415, 420, and 425). -2). (While the discussion herein focuses on SSDs as specific examples of storage devices that include a coprocessor, embodiments of the present invention may still be extended to other types of storage devices than SSDs.) The IDs (410, 415, 420, and 425) are assigned during device enumeration by a controller, such as a Peripheral Component Interconnect (PCI) enumerator, or in the machine 105 of FIG. This includes "configuring" a virtual machine (VM). In either case, operating system 405 has only the information provided as a result of the virtual IDs (410, 415, 420, and 425). Due to the fact that the SSDs 125-1 and 125-2 are SSDs, the operating system 405 determines that the assigned virtual ID 410, the SSD 125-1 includes the data storage device 430 and the assigned virtual ID 415, the SSD 125-2, It is known that the storage device 435 is included. However, the operating system 405 may require that the coprocessor 130-1 assigned the virtual ID 420 support the operation of the SSD 125-1 assigned the virtual ID 410, or that the coprocessor 130-2 assigned the virtual ID 425 may You may not know to support the second operation.

図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)は、ペアリング中の各装置に関する情報を格納する代わりに、少なくともペアリングの目的のために固有の情報を格納する必要のみが有り得る。   FIG. 5 is a diagram showing the device of FIG. 1 arranged to store information about pairing. In FIG. 5, the devices (125-1, 125-2, 130-1, and 130-2) include storage for various pieces of information about the pairing. Thus, SSD 125-1 includes storage devices (505-1, 505-2) for information about itself and the paired coprocessor (coprocessor 130-1), while SSD 125-2 includes itself and It includes storage (515-1, 515-2) for information about the paired coprocessor (coprocessor 130-2), which stores itself and the paired SSD (SSD 125-1). ), Storage for information about itself and the paired SSD (SSD 125-2). 520-2). In some embodiments, the information stored in the storage devices (505-1, 505-2, 510-1, 510-2, 515-1, 515-2, 520-1, and 520-2) is: The information includes information unique to each device, such as a serial number of a GUID (Globally Unique ID). In another embodiment, the storage devices (505-1, 505-2, 510-1, 510-2, 515-1, 515-2, 520-1, 520-2) are unique or almost certainly unique. Store the agreed information between the paired devices. An example is an algorithm where two parties agree on a shared secret used for communication security between the two parties via an unsecured connection. That is, the SSD 125-1 and the coprocessor 130-1 can use these algorithms that agree on a shared secret to be used as agreed information. Alternatively, when the SSD 125-1 and the coprocessor 130-1 are physically paired, a common piece of data at the time of manufacturing is allocated. If the paired device uses some unique information that is not used by other devices, the devices (125-1, 125-2, 130-1, and 130-2) will use each device in the pairing Instead of storing information about, it may only be necessary to store unique information, at least for pairing purposes.

オペレーティングシステム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)のペアリングを生成することができる。   When the operating system 405 queries individual devices for information about itself, each device returns information about the pairing. Therefore, as an example, the SSD 125-1 stores its own information in the storage device 505-1 and stores information on the coprocessor 130-1 in the storage device 505-2. Similarly, the coprocessor 130-1 stores its own information in the storage 515-2, and stores information on the SSD 125-1 in the storage 515-1. Next, the operating system 405 uses the information from the storage devices (505-1 to 505-2, 515-1 to 515-2) to determine whether the SSD 125-1 and the coprocessor 130-1 have been paired. Is determined. This information may be, for example, a GUID or other information that is expected to be unique, such as a calculated shared secret, or the serial numbers of various devices. By way of example, if each of two (or more) devices provides its own serial number and the serial number of their pair, and the serial numbers correspond as expected, the operating system 405 may determine that the two devices are paired. You can consider being ringed. Similarly, if each of the two (or more) devices provides a unique identifier (or an identifier that is expected to be unique), the fact that all of the devices provide that identifier means that Should be considered to have been done. In this manner, the operating system 405 can properly generate the pairing of the virtual IDs (410, 415, 420, and 425).

図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は、このペアリング情報を格納する。   FIG. 6 is a diagram illustrating the operating system 405 of FIG. 5 that queries the SSD 125-1 and the coprocessor (130-1) of FIG. 1 to pair devices. In FIG. 6, the operating system 405 transmits a query 605 to the SSD 125-1 requesting details of the device. Existing operating systems query the device to determine device characteristics and characteristics as part of the boot. The BIOS (Basic Input / Output System) may also query to find out which device is connected. What is new in response 610 is that SSD 125-1 includes information about itself and information about coprocessor 130-1. Similarly, the operating system 405 sends a query 615 to the coprocessor 130-1 requesting details of the device. That is, the coprocessor (130-1) transmits a response 620 including information on itself and information on the SSD 125-1. When the operating system 405 receives the responses (610 and 620), the operating system 405 uses the information to determine whether the SSD 125-1 and the coprocessor 130-1 have been paired, as shown in operation 625. judge. Thereafter, the operating system 405 stores the pairing information.

オペレーティングシステム405は、どのストレージ装置がどのコプロセッサとペアリングされているかを知ると、オペレーティングシステム405は、この情報をアプリケーション及び/又はユーザーに利用可能にする。例として、オペレーティングシステム405は、アプリケーションが情報をペアリングするために、オペレーティングシステム405をクエリするために使用されるAPI(Application Programming Interface)を提供する。例として、アプリケーションは、SSD125−1に対してAPIを介して当該装置とペアリングされたSSD125−1を要請するクエリを伝送する。次に、オペレーティングシステム405は、コプロセッサ130−1がSSD125−1とペアリングされたとの情報で応答する。他のアプリケーションは、データの特定のピースに関連付けられたペアリングされた装置に関する情報を要請する。例として、ストレージ装置がそのデータを格納し、他の装置がそのストレージ装置とペアリングされたという特定のファイル(又はキーバリューオブジェクト(key value object)、又はストレージ装置上の他の形式で格納されるデータ)が与えられる。その後、オペレーティングシステム405は、どのストレージ装置がそのデータを格納するかを決定してから、そのストレージ装置及びペアリングに関する情報を返す。(勿論、アプリケーションは、二つのAPIのクエリを伝送することができる。即ち、一つは、ターゲットデータを格納する特定のストレージ装置を決定し、もう一つは、当該ストレージ装置とペアリングされる装置を決定する。二つのクエリを一つに結合することは単純化されることである。)   When the operating system 405 knows which storage device is paired with which coprocessor, the operating system 405 makes this information available to applications and / or users. By way of example, operating system 405 provides an API (Application Programming Interface) used by applications to query operating system 405 to pair information. For example, the application transmits a query requesting the SSD 125-1 paired with the device to the SSD 125-1 via the API. Next, the operating system 405 responds with the information that the coprocessor 130-1 has been paired with the SSD 125-1. Other applications request information about a paired device associated with a particular piece of data. By way of example, a particular file (or key value object) that a storage device has stored its data and another device has been paired with that storage device, or may be stored in another format on the storage device. Data). Thereafter, the operating system 405 determines which storage device stores the data, and then returns information on the storage device and the pairing. (Of course, the application can transmit two API queries: one determines a specific storage device to store the target data, and the other is paired with the storage device. Determine the device. Combining the two queries into one is a simplification.)

アプリケーションが、どの装置がペアリングされているかを、APIを介して知ると、アプリケーションはそれに応じて当該情報を使用する。例として、図1のコプロセッサ(130−1、130−2)は、データアクセラレーションサービスを提供する二つのFPGAである。アプリケーションがターゲットデータを格納するストレージ装置を知ると、アプリケーションはターゲットデータのデータアクセラレーションサービスを要請する当該ストレージ装置とペアリングされたFPGAに要請を伝送する。同じ原理が、図1のコプロセッサ(130−1、130−2)によって提供される任意の他の機能に適用される。即ち、データアクセラレーションは機能の例としてのみ使用される。   When the application knows which device is paired via the API, the application uses that information accordingly. As an example, the coprocessors (130-1, 130-2) of FIG. 1 are two FPGAs that provide a data acceleration service. When the application knows the storage device storing the target data, the application transmits the request to the FPGA paired with the storage device requesting the data acceleration service of the target data. The same principle applies to any other functions provided by the coprocessors (130-1, 130-2) of FIG. That is, data acceleration is used only as an example of a function.

この時点で、一つの疑問点が残る。即ち、ペアリングで装置を識別する情報を装置がどのように認識するか?であり、情報が製造時にペアリングされた装置によって共有される固有のデータとして割り当てられる場合、その答えは明らかである。但し、装置が、シリアル番号又は個別に各装置に固有の他のデータを使用してそれらのペアリングの識別を助ける場合、答えはそれほど容易ではない。図7〜図9は、装置がこの情報を得る方法を示す。   At this point, one question remains. That is, how does the device recognize information that identifies the device in pairing? The answer is clear if the information is assigned as unique data shared by the paired device at the time of manufacture. However, if the devices use a serial number or other data that is unique to each device to help identify their pairing, the answer is not so easy. 7 to 9 show how the device obtains this information.

図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はスレーブである。   FIG. 7 is a diagram illustrating the SSD 125-1 and the coprocessor 130-1 of FIG. 1 as a single form factor in one embodiment of the present invention. In FIG. 7, the SSD 125-1 and the coprocessor 130-1 communicate using a hardware interface connecting the devices. As an example, this hardware interface is an SMBus (System Management Bus) that connects the SSD 125-1 and the coprocessor 130-1. When the SMBus is used, either the device SSD125-1 or the coprocessor 130-1 is a master device, and the other is a slave device or both are master devices on a multi-master bus. By way of example, in some embodiments, SSD 125-1 is the master of SMBus 705 and coprocessor 130-1 is the slave.

図示したように、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)機能で動作する。   As shown, the SSD 125-1 is connected to the machine 105 of FIG. 1 via an out-of-band connection and an in-band connection. For example, the in-band connection 710 includes a message transmitted via a PCI Express (PCIe) connection, while the out-of-band connection 715 includes, for example, (the SSD 125-1 is a slave and a BMC (Board Management)). Controller is the master, or both SMB125-1 and BMC are masters on multiple master buses). In general, the in-band connection 710 is used for a conventional request such as a read / write request issued to the SSD 125-1 and uses the function of the coprocessor 130-1 while the out-of-band connection is used. 715 is used for control type requests. For example, it includes a query for the current operating temperature of SSD 125-1 and / or coprocessor 130-1. When in-band concatenation 710 is used to communicate with coprocessor (130-1), SSD 125-1 operates as a pass-through device that relies on messages to coprocessor 130-1. Alternatively, the SSD 125-1 operates with some translator functions that convert the request received from the machine 105 of FIG. 1 into another format for transmission to the coprocessor (130-1).

図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と同様に動作する。   FIG. 8 is a diagram illustrating the SSD 125-1 and the coprocessor 130-1 of FIG. 1 as a single form factor in another embodiment of the present invention, in contrast to FIG. In the embodiment shown in FIG. 8, the coprocessor 130-1 is directly connected to the in-band connection 710 instead of the SSD 125-1. In this embodiment, coprocessor 130-1 operates as a pass-through device that relies on messages intended for SSD 125-1 to be sent to SSD 125-1. Alternatively, co-processor 130-1 operates with some translator functions that translate requests received from machine 105 of FIG. 1 into another format for transmission to SSD 125-1. In all other aspects, the SSD 125-1 and the coprocessor 130-1 operate similarly to the SSD 125-1 and the coprocessor 130-1 as in FIG.

一方、図7及び図8は、SSD125−1及びコプロセッサ130−1の両方が同じフォームファクタで販売される可能性を示し、SSD125−1及びコプロセッサ130−1は、装置が図4のオペレーティングシステム405とペアリング情報を共有するために、二つのペアリングされた装置間の通信を許容するハードウェアインターフェース505のいくつかの形態がある場合、別途の構成要素として販売され得る。   7 and 8 illustrate the possibility that both the SSD 125-1 and the coprocessor 130-1 may be sold in the same form factor, and the SSD 125-1 and the coprocessor 130-1 may be used in a system in which If there are some forms of hardware interface 505 that allow communication between two paired devices to share pairing information with system 405, they may be sold as separate components.

図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で応答する。   FIG. 9 is a diagram illustrating the SSD 125-1 and the coprocessor 130-1 of FIG. 1 that construct a pairing according to an embodiment of the present invention. The SSD 125-1 and the coprocessor 130-1 use FIG. 9 when sharing a hardware interface such as the hardware interface 705 in FIGS. 7 and 8. In FIG. 9, the SSD 125-1 starts an inquiry about the device information from the coprocessor 125-1. The SSD 125-1 transmits the identification device 905 to the coprocessor 130-1 (this command and all other commands in FIGS. 9 and 10 are NVMe commands or commands using other protocols). . Coprocessor 130-1 responds with an identification response 910 containing unique information related to the pairing of SSD 125-1 and coprocessor 130-1. This information includes, by way of example, a GUID or manufacturer model number and serial number of coprocessor 130-1. Upon receiving the identification response 910, the SSD 125-1 stores the information of the coprocessor 130-1. As an example, it is stored in the storage 502-2 of FIG. Thereafter, the SSD 125-1 transmits the setting information 915 including the unique information of the SSD 125-1, for example, the GUID or the model number and the serial number of the manufacturer of the SSD 125-1. After that, the coprocessor 130-1 stores the information of the SSD 125-1. As an example, it is stored in the storage 515-1 of FIG. Next, the coprocessor 130-1 transmits a setting response 920 to notify the SSD 125-1 that the pairing data of the setting pairing data (Set Pairing Data) command has been received. Finally, the SSD 125-1 transmits the set advanced data (Set Advanced Data) 925 to inform the coprocessor 130-1 of any other data that the coprocessor 130-1 wants to know. Responds with an identification response (Set Response) 930.

図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で応答する。   FIG. 10 is a diagram illustrating the SSD 125-1 and the coprocessor 130-1 of FIG. 1 that construct a pairing according to another embodiment of the present invention. FIG. 10 is similar to FIG. 9 except that coprocessor 130-1 initiates the exchange of information instead of SSD 125-1. In FIG. 10, the coprocessor 130-1 transmits the read identification data 1005 to the SSD 125-1. SSD 125-1 responds with a read response 1010 that contains unique information about the pairing of coprocessor 130-1 with SSD 125-1. This information includes, by way of example, a GUID or manufacturer model number and SSD125-1 serial number. Upon receiving the read response 1010, the coprocessor 130-1 stores, for example, information of the SSD 125-1. As an example, it is stored in the storage device 505-2 of FIG. Next, the coprocessor 130-1 transmits the setting identification data 1015 including information unique to the coprocessor 130-1. As an example, the configuration identification data 1015 including the GUID or the model number and serial number of the manufacturer of the coprocessor 130-1 is transmitted. Next, the SSD 125-1 stores the information of the coprocessor 130-1 in the storage 515-1 of FIG. 5 as an example. Next, the SSD 125-1 transmits a setting response 1020 to notify the coprocessor 130-1 that the pairing data of the setting identification data command has been received. Finally, the coprocessor 130-1 transmits a setting log page (Set Log Page) 1025 to notify the SSD 125-1 of any other data that the SSD 125-1 wants to know. Respond at 1030.

図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及びコプロセッサの構造と共に更に考慮される。   FIG. 11 is a diagram illustrating a first topology including the SSD 125-1 and the coprocessor 130-1 of FIG. 1 according to an embodiment of the present invention. FIGS. 11-14 are US Patent Application No. filed on November 30, 2018, claiming the benefit of provisional application No. 16 / 207,080, filed on October 12, 2018, both of which are pending. No. 16 / 226,629, all applications being incorporated herein by reference for all purposes. However, while co-pending US patent application Ser. No. 16 / 260,087 considers the overall combination of PCIe switches including erasure coding, this specification is further considered with SSD and coprocessor architecture.

図11は、図1のマシン105の分離された構成要素として具現されるLook−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチを示す。即ち、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、図1のプロセッサ110、ストレージ装置125−1、又はコプロセッサ130−1のような任意の他の構成要素とは別途に製造販売される。   FIG. 11 illustrates a PCIe switch having Look-Aside erasure coding logic 1105 embodied as a separate component of machine 105 of FIG. That is, the PCIe switch having the Look-Aside erasure coding logic 1105 is manufactured and sold separately from any other components such as the processor 110, the storage device 125-1, or the coprocessor 130-1 of FIG. .

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に格納されたデータを暗号化するようにサポートする。   A PCIe switch having Look-Aside erasure coding logic 1105 is connected to the storage device 125-1. In FIG. 11, the PCIe switch having the Look-Aside erasure coding logic 1105 is illustrated as being connected to only one storage device that may not support erasure coding. In other words, the erasure coding is to perform striping, chunking, grouping, and parity or use of code information or at least two storage devices or at least two of the storage devices. Request part. However, a single storage device PCIe switch with Look-Aside erasure coding logic 1105 also offers some advantages. As an example, the PCIe switch having the Look-Aside erasure coding logic 1105 uses an error correcting code in the storage device 125-1 when the service is not natively provided by the storage device 125-1. Or encrypt the data stored in the storage device 125-1.

ストレージ装置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との間に位置することもできる。   Storage device 125-1 is coupled to FPGA 205, which is an example of coprocessor 130-1 in FIG. 1 (for the remainder of the description of FIGS. 11-14, any reference to FPGA 205 is shown in FIG. 2). Any alternative coprocessor, or more generally, is understood to include a reference to coprocessor 130-1 of FIG. 1). The FPGA 205 supports acceleration. That is, there are situations where data must be processed and discarded. Loading all of the data into the processor 110 of FIG. 1 to perform the processing is costly and time consuming. That is, the calculations are made easier near the data. The FPGA 205 supports performing calculations near a storage device while avoiding the need for data to be loaded into the processor 110 of FIG. 1 to perform the calculations. That is, this concept is referred to as "acceleration". FPGA-based acceleration is described in US Provisional Patent Application No. 62 / 642,568 filed on March 13, 2018, US Provisional Application No. 62 / 641,267 filed on March 13, 2018, and This is further described in US Patent Application No. 16 / 122,865, filed September 5, 2018, claiming the benefit of US Provisional Patent Application No. 62 / 638,904, filed March 5, 2018, US Patent Application No. 16 / 124,179 filed on September 6, 2018, which is a continuation application of US Patent Application No. 16 / 122,865 filed on September 5, 2018; US Patent Application No. 16 / 124,182 filed on September 6, 2018 and US Patent Application No. 16 / 124,1 filed on September 6, 2018 3 is coupled referenced together herein. FIG. 11 shows an FPGA 205 that is closer to the storage device 125-1 because the purpose of acceleration is to process the data without transmitting it to the processor 110 of FIG. However, it is noted that the particular arrangement shown in FIG. 11 may not be required. That is, the FPGA 205 may be located between the PCIe switch having the Look-Aside erasure coding logic 1105 and the storage device 125-1.

データアクセラレーションとは別途に、FPGA205は、ストレージ装置125−1をサポートする他の機能を提供する。例えば、FPGA205は、ストレージ装置125−1に同じデータが格納される回数を減らすために、ストレージ装置125−1上にデータ重複排除機能を具現する。FPGA205は、特定のデータがストレージ装置125−1上に二回以上格納されたか否かを判定し、多様な論理ブロックアドレス(又はデータを識別するためにホストによって使用される他の情報)とストレージ装置上のデータが格納された場所との間の関連性を構築して追加のコピーを削除する。   Apart from data acceleration, the FPGA 205 provides another function that supports the storage device 125-1. For example, the FPGA 205 implements a data deduplication function on the storage device 125-1 in order to reduce the number of times that the same data is stored in the storage device 125-1. The FPGA 205 determines whether the particular data has been stored more than once on the storage device 125-1, and determines the various logical block addresses (or other information used by the host to identify the data) and storage. Build an association between the location on the device where the data is stored and delete additional copies.

或いは、FPGA205は、ストレージ装置125−1の動作でのエラーを通じたデータの損失、又はエンドツーエンド(end−to−end)の保護のためにCRC(Cyclic Redundancy Correction)を使用するT10DIF(データインテグリティのフィールド)からの保護のために、エラー訂正コードを追加するようなストレージ装置125−1上のデータインテグリティの機能を具現する。このように、FPGA205は、ストレージ装置125−1上にデータを読み書きするにあたり、又は伝送中のデータに対してエラーが発生するときを検出したり、元のデータを復元したりする。FPGA205は、データのインテグリティの機能が提供されていることをホストが認識しないようにデータインテグリティの機能を具現する。即ち、ホストは、エラー訂正コードではないデータそのものだけを見る。   Alternatively, the FPGA 205 may use a T10DIF (Data Integrity) that uses a CRC (Cyclic Redundancy Correction) for data loss due to an error in the operation of the storage device 125-1 or end-to-end protection. In order to protect the data from the storage device 125-1, a function of data integrity on the storage device 125-1 such as adding an error correction code is implemented. As described above, the FPGA 205 detects when an error occurs in data being transmitted or read on the storage device 125-1 or when data is being transmitted, or restores the original data. The FPGA 205 implements a data integrity function so that the host does not recognize that the data integrity function is provided. That is, the host sees only the data itself which is not the error correction code.

或いは、FPGA205は、ストレージ装置125−1上のデータにアクセスする権限がないパーティーからの保護のために、ストレージ装置125−1上にデータの暗号化機能を実装することができある。即ち、適切な暗号化キーが提供されていない場合、FPGA205からリターンされるデータは、要請者に意味がない可能性がある。ホストは、データを読み書きするときに使用される暗号化キーを提供する。又は、FPGA205は、データの暗号化及び復号化を自動的に遂行する。即ち、FPGA205は、暗号化キーを格納し(そして、ホストの代わりに暗号化キーを生成する)、誰がデータを要請するかに基づいて、使用する適切な暗号化キーを決定する。   Alternatively, the FPGA 205 can implement a data encryption function on the storage device 125-1 for protection from a party who is not authorized to access data on the storage device 125-1. That is, if an appropriate encryption key is not provided, the data returned from FPGA 205 may be meaningless to the requestor. The host provides an encryption key used when reading and writing data. Alternatively, the FPGA 205 automatically performs encryption and decryption of data. That is, the FPGA 205 stores the encryption key (and generates the encryption key on behalf of the host) and determines the appropriate encryption key to use based on who requests the data.

或いは、FPGA205は、ストレージ装置125−1にデータを格納するのに必要な空間の量を減らすために、ストレージ装置125−1上にデータ圧縮機能を具現する。ストレージ装置125−1にデータを書き込むとき、FPGA205は、ホストによって提供されたデータをより少ない量のストレージ装置に圧縮する機能を具現し、圧縮されたデータを(ストレージ装置125−1からデータを読み取るとき、元のデータを復元するのに必要な任意の情報と共に)格納する。ストレージ装置125−1からデータを読み取るとき、FPGA205は、圧縮されたデータを(圧縮されたデータから元のデータを復元するのに必要な任意の情報と共に)読み取り、元のデータを復元するために圧縮を解除する。   Alternatively, the FPGA 205 implements a data compression function on the storage device 125-1 to reduce the amount of space required to store data in the storage device 125-1. When writing data to the storage device 125-1, the FPGA 205 implements a function of compressing the data provided by the host into a smaller amount of storage device, and reads the compressed data (reads data from the storage device 125-1). Sometimes it stores (along with any information needed to restore the original data). When reading data from the storage device 125-1, the FPGA 205 reads the compressed data (along with any information necessary to restore the original data from the compressed data) and restores the original data. Uncompress.

データ重複排除、データインテグリティ、データの暗号化、及びデータ圧縮の任意の所望の具現が使用される。本発明の実施形態は、これらの機能のうちのいずれかの特定の具現に限定されない。   Any desired implementation of data deduplication, data integrity, data encryption, and data compression may be used. Embodiments of the present invention are not limited to any particular implementation of any of these features.

FPGA205は、必要に応じて、ストレージ装置125−1上の機能の任意の組み合わせを具現するすることもできる。例として、FPGA205は、データ圧縮及びデータのインテグリティの両方を具現する(データ圧縮は、エラーに対するデータの感度を増加させることから、ストレージ装置125−1に格納されたデータの単一エラーは、大量のデータを使用不可能にすることがある)。或いは、FPGA205は、(可能な限りデータのために少ないストレージを使用しながらデータを保護するために)データの暗号化及びデータ圧縮の両方を具現する。二つ以上の機能の別の組み合わせがFPGA205によって提供される。   The FPGA 205 can also implement any combination of functions on the storage device 125-1 as needed. As an example, the FPGA 205 implements both data compression and data integrity (since data compression increases the sensitivity of the data to errors, a single error in the data stored in the storage device 125-1 can be very large). May render the data unusable). Alternatively, FPGA 205 implements both data encryption and data compression (to protect data while using as little storage for data as possible). Another combination of two or more functions is provided by FPGA 205.

全体的な動作の観点から、この機能のうちの任意のものを具現する場合、FPGA205は、適切なソースからデータを読み取る。「ソース」という用語は、単数の名詞であるが、本発明の実施形態は、適切な場合、多数のソース(例えば、複数のストレージ装置)からデータを読み取ることができる。FPGA205は、データアクセラレーション、データ統合、データ暗号化、及び/又はデータ圧縮のようなデータの適切な動作を遂行する。次に、FPGA205は、動作の結果に対して適切なアクションを取る。即ち、例として、図1のマシン105に結果を伝送したり、ストレージ装置125−1にデータを書き込んだりする。   When implementing any of these functions in terms of overall operation, FPGA 205 reads data from an appropriate source. Although the term “source” is a singular noun, embodiments of the present invention may read data from multiple sources (eg, multiple storage devices) where appropriate. The FPGA 205 performs appropriate operations on the data, such as data acceleration, data integration, data encryption, and / or data compression. Next, the FPGA 205 takes an appropriate action according to the result of the operation. That is, as an example, the result is transmitted to the machine 105 of FIG. 1 or the data is written to the storage device 125-1.

以上の機能を図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のような)に伝送するための要請を伝送する。   Although the above functions have been described with reference to the FPGA 205 of FIG. 11, the embodiment of the present invention includes these functions at an arbitrary position in the system including the FPGA. Note that embodiments of the present invention allow the FPGA 205 to access data from “distant” storage devices. By way of example, returning to FIG. 1, assume that storage device 125-1 includes an FPGA similar to FPGA 205, but storage device 125-2 does not have such a coprocessor. The FPGA included in the storage device 125-1 is used to apply a function to the storage device 125-2 by transmitting a request to the storage device 125-2. As an example, if the FPGA of the storage device 125-1 provides data acceleration, the FPGA of the storage device 125-1 reads data from the storage device 125-2, performs appropriate acceleration, and then performs To the appropriate destination (such as machine 105 in FIG. 1).

図11において(そして、以下の図12〜図14に示すトポロジーにおいて)、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、イレイジャーコーディングに適していない装置に装着される。例として、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ビルトイン(built−in)イレイジャーコーディング機能を有する他のストレージ装置、又は図11のFPGA205若しくは図2のGPU215のようなストレージ装置ではない装置に装着される。これらの全ての装置は、イレイジャーコーディング(又は、少なくともLook−Asideイレイジャーコーディングロジック1105を含むPCIeスイッチによるイレイジャーコーディングのための)に適合しない装置として説明される。   In FIG. 11 (and in the topology shown in FIGS. 12-14 below), a PCIe switch having Look-Aside erasure coding logic 1105 is mounted on a device that is not suitable for erasure coding. By way of example, a PCIe switch with Look-Aside erasure coding logic 1105 may be another storage device with built-in erasure coding capability or a device other than a storage device such as the FPGA 205 of FIG. 11 or the GPU 215 of FIG. Attached to. All of these devices are described as devices that are not compatible with erasure coding (or at least for erasure coding with a PCIe switch that includes Look-Aside erasure coding logic 1105).

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イレイジャーコーディングロジックを有する。   If the PCIe switch with Look-Aside erasure coding logic 1105 is coupled to a device that is not suitable for erasure coding, the system has a variety of alternative approaches that can be used. In one embodiment of the present invention, the Look-Aside erasure coding logic of the PCIe switch having the Look-Aside erasure coding logic 1105 is disabled when including any devices that are not suitable for erasure coding. Thus, as an example, if the PCIe switch having the Look-Aside erasure coding logic 1105 is connected to the FPGA 205 of FIG. 11 or the GPU 215 of FIG. 2, or the storage device having the native erasure coding logic, the Look-Aside erasure coding logic 1105 is used. Cannot be used with erasure coding. A decision to disable the Look-Aside erasure coding logic of a PCIe switch that includes the Look-Aside erasure coding logic 1105 is not necessarily translated to another PCIe switch that includes the Look-Aside erasure coding logic in the same or another chassis. Note that this is not the case. By way of example, looking briefly at FIG. 13, FIG. 13 shows two PCIe switches having Look-Aside erasure coding logic (1105 and 1305), one of which is enabled with Look-Aside erasure coding logic. The other has Look-Aside erasure coding logic disabled.

本発明の他の実施形態は、イレイジャーコーディングに適していない装置をディセーブルし、Look−Asideイレイジャーコーディングロジック1105を含むPCIeスイッチに全く連結されていないかのようにそれらを処理することができる。本発明のこのような実施形態で、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、ストレージ装置125−1に対するLook−Asideイレイジャーコーディングロジックを可能にし、イレイジャーコーディングのために適切な任意の他のストレージ装置は、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチに連結されていないかのようにディセーブルされる。   Other embodiments of the present invention can disable devices that are not suitable for erasure coding and treat them as if they were not tied to a PCIe switch containing Look-Aside erasure coding logic 1105 at all. In such an embodiment of the present invention, a PCIe switch having Look-Aside erasure coding logic 1105 enables Look-Aside erasure coding logic for storage device 125-1, and any other suitable for erasure coding. The storage device is disabled as if it were not connected to a PCIe switch having Look-Aside erasure coding logic 1105.

本発明の他の実施形態において、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、Look−Asideイレイジャーコーディングロジックによってカバーされるストレージ装置のためのLook−Asideイレイジャーコーディングロジックを可能にするが、アクセスされるイレイジャーコーディングに適していない他の装置を変わらずイネーブルする。本発明のこの実施形態は、最も複雑な具現である。即ち、Look−Asideイレイジャーコーディングロジック1105を有するPCIeスイッチは、どの装置がイレイジャーコーディングに適合し、どの装置が適合していないかを判定し、その後、トラフィックを分析してトラフィックが仮想ストレージ装置に伝送されるか(この場合、トラフィックはLook−Asideイレイジャーコーディングロジックによってインターセプトされる)否か(この場合は、トラフィックが元の宛先に伝送される)を判定する。   In another embodiment of the present invention, a PCIe switch having Look-Aside erasure coding logic 1105 enables Look-Aside erasure coding logic for storage devices covered by the Look-Aside erasure coding logic, but without access. The other devices that are not suitable for erasure coding are still enabled. This embodiment of the invention is the most complex implementation. That is, the PCIe switch having Look-Aside erasure coding logic 1105 determines which device is compatible with erasure coding and which device is not, and then analyzes the traffic and transmits the traffic to the virtual storage device. (In this case, the traffic is intercepted by the Look-Aside erasure coding logic) or not (in this case, the traffic is transmitted to its original destination).

図1のマシン105は、インストールした装置の全ての機能を提供しない本発明の一実施形態である。即ち、イレイジャーコーディングに適していない装置の存在により、イレイジャーコーディングがディセーブルされるか、或いはこれらの装置がLook−Asideイレイジャーコーディングロジック1105を含むPCIeスイッチによりディセーブルされる本発明の一実施形態であり、図1のマシン105は、この事実をユーザーに知らせる。この通知は、図1のプロセッサ110、BMCやLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチによって提供される。一部の機能がディセーブルされたことをユーザーに通知することに加えて、通知は、追加された機能を許容するために、図1のマシン105を再構成する方法をユーザーに知らせることもできる。例えば、通知は、イレイジャーコーディングに適していない装置がミッドプレーンの特定のスロットに連結されるように提案する(おそらく、これらのスロットは、Look−Asideイレイジャーコーディングロジック1305を含むPCIeスイッチに連結される)。そして、イレイジャーコーディングに適していないストレージ装置は、イレイジャーコーディングロジック1105を含むPCIeスイッチに連結されたスロットのような他のスロットに連結される。このように、イレイジャーコーディングに適した少なくともいくつかのストレージ装置は、イレイジャーコーディングに適していない他の装置へのアクセスを遮断せず、イレイジャーコーディングスキームから恩恵を得ることができる。   The machine 105 of FIG. 1 is an embodiment of the present invention that does not provide all the functions of the installed device. That is, in one embodiment of the present invention, erasure coding is disabled by the presence of devices that are not suitable for erasure coding, or these devices are disabled by a PCIe switch that includes Look-Aside erasure coding logic 1105. Yes, the machine 105 of FIG. 1 informs the user of this fact. This notification is provided by the processor 110 of FIG. 1, a PCIe switch including BMC and Look-Aside erasure coding logic. In addition to notifying the user that some features have been disabled, the notification may also inform the user how to reconfigure the machine 105 of FIG. 1 to allow for the added features. . For example, the notification suggests that devices that are not suitable for erasure coding are coupled to specific slots in the midplane (possibly these slots are coupled to PCIe switches that include Look-Aside erasure coding logic 1305). ). The storage device that is not suitable for erasure coding is connected to another slot such as a slot connected to a PCIe switch including the erasure coding logic 1105. In this way, at least some storage devices suitable for erasure coding can benefit from an erasure coding scheme without blocking access to other devices not suitable for erasure coding.

図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)を含む。   FIG. 12 is a diagram illustrating a second topology including the SSD and the coprocessor of FIG. 1 according to another embodiment of the present invention. In FIG. 12, a PCIe switch having Look-Aside erasure coding logic 1105 is located within FPGA 205. That is, the FPGA 205 implements a PCIe switch having the Look-Aside erasure coding logic 1105. The FPGA 205 having the Look-Aside erasure coding logic 1105 and the PCIe switch are connected to the storage devices (125-1 to 125-4). Although FIG. 12 illustrates an FPGA 205 and a PCIe switch having Look-Aside erasure coding logic 1105 coupled to four storage devices (125-1 to 125-4), embodiments of the present invention may be implemented in any number of storage devices. Storage devices (125-1 to 125-4).

一般的に、図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の一部として具現される。   In general, the topology shown in FIG. 12 is embodied in a single shell or housing containing all the components shown (SSDs (125-1 through 125-4) (It may be a separate flash memory instead of a self-contained SSD). That is, instead of being sold as a separate component, the entire structure shown in FIG. 12 is sold as a single unit. However, embodiments of the present invention provide a U.S.M. 2, M. 3, or a riser card that has a connector such as SFF-TA-1008 and that connects to the machine 105 of FIG. 1 (possibly to the midplane) having a connector on one end. FIG. 12 shows a PCIe switch having the Look-Aside erasure coding logic 1105 as a part of the FPGA 205, and the PCIe switch having the Look-Aside erasure coding logic 1105 is embodied as a part of the smart SSD.

図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は、イレイジャーコーディングスキームの一部であるストレージ装置にアクセスする試みを防止するために)。   FIG. 13 is a diagram illustrating a third topology including the SSD and the coprocessor of FIG. 1 according to an embodiment of the present invention. The third topology for using the PCIe switch having the Look-Aside erasure coding logic 1105 of FIG. Show the topology. FIG. 13 shows two PCIe switches having Look-Aside erasure coding logic (1105 and 1305) connecting up to 24 storage devices (125-1 to 125-6) between them. Each of the PCIe switches having Look-Aside erasure coding logic (1105 and 1305) has four PCIe lanes used in each direction to communicate with any of the storage devices (125-1 to 125-6). ) With 96 PCIe lanes. That is, each PCIe switch having Look-Aside erasure coding logic (1105 and 1305) supports up to 12 storage devices. In order to support erasure coding for the entire storage device supported by multiple PCIe switches having Look-Aside erasure coding logic (1105 and 1305), one PCIe switch having Look-Aside erasure coding logic 1105 requires all PCIe switches. It has Look-Aside erasure coding logic that is designated and responsible for erasure coding across the device. Other PCIe switches with Look-Aside erasure coding logic 1305 operate purely as PCIe switches with Look-Aside erasure coding logic disabled. The selection of which PCIe switch to select to handle erasure coding is accomplished in any desired manner. That is, by way of example, two PCIe switches negotiate between them, or the first listed PCIe switch is designated to handle erasure coding. PCIe switches selected to handle erasure coding report virtual storage devices (across two PCIe switches), while PCIe switches that do not handle erasure coding may not report downstream devices. There is (the processor 110 of FIG. 1 prevents attempts to access storage devices that are part of the erasure coding scheme).

Look−Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチが全て同じシャーシに有り得るが、Look−Asideイレイジャーコーディングロジック(1105及び1305)を有するPCIeスイッチは、異なるシャーシに有り得ることに留意する。即ち、イレイジャーコーディングスキームは、多数のシャーシに亘ってストレージ装置を拡張することができる。必要なのは、多様なシャーシのPCIeスイッチがイレイジャーコーディングスキームの一部となるストレージ装置が位置する場所について、互いに交渉できなければならないことである。また、本発明の実施形態は、Look−Asideイレイジャーコーディングロジック(1105及び1305)を有する二つのPCIeスイッチに限定されない。即ち、イレイジャーコーディングスキームに含まれるストレージ装置は、Look−Asideイレイジャーコーディングロジック1105を有する任意の数のPCIeスイッチに連結される。   Note that PCIe switches with Look-Aside erasure coding logic (1105 and 1305) can all be in the same chassis, while PCIe switches with Look-Aside erasure coding logic (1105 and 1305) can be in different chassis. That is, the erasure coding scheme can extend the storage device across multiple chassis. What is needed is that the PCIe switches of the various chassis must be able to negotiate with each other about where the storage devices that will be part of the erasure coding scheme are located. Also, embodiments of the present invention are not limited to two PCIe switches having Look-Aside erasure coding logic (1105 and 1305). That is, the storage device included in the erasure coding scheme is connected to an arbitrary number of PCIe switches having the Look-Aside erasure coding logic 1105.

ホスト論理ブロックアドレス(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スイッチに連結されたストレージ装置に伝送が予定されていないと仮定する)。   The host logical block address (LBA) is split into PCIe switches with Look-Aside erasure coding logic (1105 and 1305) in any desired manner. As an example, the least significant bit of the host LBA is used to identify which PCIe switch with Look-Aside erasure coding logic (1105 or 1305) includes a storage device that stores the data containing that host LBA. Is done. When two or more PCIe switches having Look-Aside erasure coding logic are used, a plurality of bits are used to determine which PCIe switch having Look-Aside erasure coding logic manages a storage device storing data. used. Once the appropriate PCIe switch with Look-Aside erasure coding logic is identified, the transmission is routed to the appropriate PCIe switch with Look-Aside erasure coding logic (Look-Aside erasure coding logic enabled). (It is assumed that transmission is not scheduled to a storage device connected to a PCIe switch having Look-Aside erasure coding logic.)

本発明の他の実施形態で、Look−Asideイレイジャーコーディングロジックを有する単一のPCIeスイッチがLook−Asideイレイジャーコーディングロジックを有する二つのPCIeスイッチに連結された全てのストレージ装置を仮想化するよりも、Look−Asideイレイジャーコーディングロジックを有する各PCIeスイッチが(別途のイレイジャーコーディングドメインを含む)別途の仮想ストレージ装置を生成する。このように、小さい容量であるが、異なる顧客に対して異なるイレイジャーコーディングドメインが生成される。   In another embodiment of the present invention, a single PCIe switch having Look-Aside erasure coding logic virtualizes all storage devices connected to two PCIe switches having Look-Aside erasure coding logic. Each PCIe switch with Look-Aside erasure coding logic creates a separate virtual storage device (including a separate erasure coding domain). In this way, different erasure coding domains are generated for different customers, albeit with smaller capacities.

図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の最適な機能性が達成される。   FIG. 13 shows that only the storage devices (125-1 to 125-6) are connected to PCIe switches having Look-Aside erasure coding logic (1105 and 1305), and all the storage devices (125-1 to 125-6) are connected. Although meant to be used with an erasure coding scheme, the embodiments of the invention described above are not so limited. That is, PCIe switches having Look-Aside erasure coding logic (1105 and 1305) may have devices coupled to them that are not suitable for erasure coding. Along with storage devices suitable for erasure coding grouped under other PCIe switches with Look-Aside erasure coding logic 1105, these devices are under a single PCIe switch with Look-Aside erasure coding logic. Be grouped. In this manner, one (or some) PCIe switch with Look-Aside erasure coding logic that enables the Look-Aside erasure coding logic, and Look-Aside erasure coding logic that disables the Look-Aside erasure coding. The optimal functionality of the machine 105 of FIG. 1 is achieved with one (or several) PCIe switches having

図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イレイジャーコーディングロジックを有する。   FIG. 14 is a diagram illustrating a fourth topology including the SSD and the coprocessor of FIG. 1 according to another embodiment of the present invention. In FIG. 14, as compared with FIG. 13, the PCIe switches having the Look-Aside erasure coding logic (1105, 1305, and 1405) are hierarchically configured. The PCIe switch with Look-Aside erasure coding logic 1105 at the top of the hierarchy manages and thereby enables erasure coding for all storage devices below the PCIe switch with Look-Aside erasure coding logic 1105 in the hierarchy. Look-Aside erasure coding logic. On the other hand, PCIe switches having Look-Aside erasure coding logic (1305 and 1405) are required to be managed by the Look-Aside erasure coding logic of the PCIe switch having Look-Aside erasure coding logic 1105. ) With their Look-Aside erasure coding logic disabled.

図14は、2段階の階層(two−tier hierarchy)で構成されたLook−Asideイレイジャーコーディングロジック(1105、1305、及び1405)を有する三つのPCIeスイッチを示すが、本発明は、それらの階層的取り決めに含まれるか、又はその階層的取り決め内にあるPCIeスイッチの数に制限されない。従って、本実施形態は、任意の所望の階層に取り決めされたLook−Asideイレイジャーコーディングロジックを有する任意の数のPCIeスイッチをサポートする。   FIG. 14 shows three PCIe switches having Look-Aside erasure coding logic (1105, 1305, and 1405) configured in a two-tier hierarchy, but the present invention provides a method for implementing these PCIe switches. It is not limited to the number of PCIe switches included in the agreement or within its hierarchical agreement. Thus, the present embodiment supports any number of PCIe switches with Look-Aside erasure coding logic negotiated at any desired tier.

図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スイッチがストレージ装置と通信させるブリッジとして効果的に動作する。   The embodiment of the present invention described above with reference to FIGS. 1 to 14 focuses on a single port storage device. However, embodiments of the present invention are extended to dual port storage devices in which one (or more) storage devices communicate with multiple PCIe switches having Look-Aside erasure coding logic. In these embodiments of the present invention, if the PCIe switch having the Look-Aside erasure coding logic 1105 of FIG. 11 cannot communicate with the dual port storage device, the PCIe switch having the Look-Aside erasure coding logic 1105 may be connected to the storage device. Send the transmission to the PCIe switch with Look-Aside erasure coding logic 1305 to attempt communication. The PCIe switch having the Look-Aside erasure coding logic 1305 effectively operates as a bridge that allows the PCIe switch having the Look-Aside erasure coding logic 1105 to communicate with the storage device.

図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を伝送し)、これにより、そのパートナーは、ペアリング情報を格納する。   FIG. 15 is a flowchart illustrating a procedure of the SSD 125-1 of FIG. 1 (or the coprocessor 130-1 of FIG. 1) for querying a partner for pairing data according to an embodiment of the present invention. In FIG. 15, in step 1505, the SSD 125-1 of FIG. 1 transmits the identification device 905 of FIG. 9 to its partner (or the coprocessor 130-1 of FIG. 1 converts the read identification data 1005 of FIG. Transmit to partner). At step 1510, the SSD 125-1 of FIG. 1 receives the identification response 910 of FIG. 9 (or the coprocessor 130-1 of FIG. 1 receives the read response 1010 of FIG. 10). In step 1515, the SSD 125-1 of FIG. 1 stores the received pairing information in the storage device 505-2 of FIG. 5 (or the coprocessor 130-1 of FIG. 1 stores the received pairing information in FIG. In the storage 515-1). At step 1520, the SSD 125-1 of FIG. 1 accesses its own pairing information from the storage device 505-1 of FIG. 5 (or the coprocessor 130-1 of FIG. 1 accesses the storage 515-2 of FIG. 5). To access that pairing information). Finally, in step 1525, the SSD 125-1 of FIG. 1 transmits the set of pairing data 915 of FIG. 9 to its partner (or the coprocessor 130-1 of FIG. 1 transmits the set of identification data of FIG. 10). 1015), whereby the partner stores the pairing information.

図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に格納する)。   FIG. 16 is a flowchart illustrating a procedure of the SSD 125-1 of FIG. 1 (or the coprocessor 130-1 of FIG. 1) for receiving a query for pairing data from a partner according to an embodiment of the present invention. In FIG. 16, in step 1605, the SSD 125-1 of FIG. 1 receives the read identification data 1005 of FIG. 10 from the coprocessor 130-1 of FIG. 1 (or the coprocessor 130-1 of FIG. Of the identification device 905 of FIG. At step 1610, the SSD 125-1 of FIG. 1 accesses the pairing information from the storage device 505-1 of FIG. (Or, the coprocessor 130-1 in FIG. 1 accesses the pairing information from the storage 515-2 in FIG. 5). In operation 1615, the SSD 125-1 of FIG. 1 transmits the pairing information of the read response 1010 of FIG. 10 to the coprocessor 130-1 of FIG. 1 (or the coprocessor 130-1 of FIG. The pairing information of the identification response 910 is transmitted). In step 1620, the SSD 125-1 of FIG. 1 receives the setting identification data 1015 of FIG. 10 from the coprocessor 130-1 of FIG. 1 (or the coprocessor 130-1 of FIG. The setting pairing data 915 shown in FIG. Finally, in step 1625, the SSD 125-1 of FIG. 1 stores the pairing information of the coprocessor 130-1 of FIG. 1 in the storage device 505-2 of FIG. 5 (the coprocessor 130-1 of FIG. The pairing information of the SSD 125-1 in FIG. 1 is stored in the storage 515-1 in FIG. 5).

図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に伝送する。   FIG. 17 is a flowchart illustrating a procedure of the SSD 125-1 and / or coprocessor 130-1 of FIG. 1 to respond to a query from the pairing partner and the associated operating system 405 of FIG. 5 according to one embodiment of the present invention. It is. 17, at step 1705, the SSD 125-1 and / or the coprocessor 130-1 of FIG. 1 receives the query (605 and / or 615) of FIG. 6 from the operating system 405 of FIG. In operation 1710, the SSD 125-1 and / or the coprocessor 130-1 of FIG. 1 communicates with the storage device (505-1 and / or 515-2) of FIG. ) Access pairing information such as a unique ID or manufacturer model number and / or serial number. In step 1715, the SSD 125-1 and / or the coprocessor 130-1 of FIG. 1 communicates with the partner device from the storage device (505-2 and / or 515-1) of FIG. Access pairing information such as model number and / or serial number. Finally, in step 1720, the SSD 125-1 and / or the coprocessor 130-1 of FIG. 1 transmits pairing information regarding the paired device to the operating system 405 of FIG.

図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を提供する。   FIG. 18 is a flowchart illustrating a procedure of the operating system 405 of FIG. 5 for querying and pairing the SSD 125-1 and the coprocessor 130-1 of FIG. 1 according to an embodiment of the present invention. In FIG. 18, at step 1805, the operating system 405 of FIG. 5 transmits (to the operating system 405 of FIG. 5) a query such as the query (605 and / or 615) of FIG. 6 to the device indicated by the virtual ID. In operation 1810, the operating system 405 of FIG. 5 receives the pairing information from the device. At step 1815, the operating system 405 of FIG. 5 transmits (to the operating system 405 of FIG. 5) another query, such as the query (605 and / or 615) of FIG. 6, to another device indicated by the virtual ID. At step 1820, the operating system 405 of FIG. 5 receives the pairing information from the device. At step 1825, the operating system 405 of FIG. 5 determines that the two devices have provided the same pairing information, and somehow pairs the devices within the operating system 405 of FIG. Finally, at step 1830, operating system 405 of FIG. 5 provides an API to the application that supports the query for device pairing.

図19は、本発明の一実施形態による装置に対するペアリング情報に関するアプリケーションからのクエリに応答するための図5のオペレーティングシステムの手順を示すフローチャートである。図19において、段階1905で、図5のオペレーティングシステム405は、特定の装置のペアリングの要求をアプリケーションから受信する。段階1910で、図5のオペレーティングシステム405は、ペアリング情報を格納するテーブル内で要求された装置を検出する。段階1915で、図5のオペレーティングシステム405は、テーブル内の装置のペアリングを判別する。段階1920で、図5のオペレーティングシステム405は、装置のペアリングに関するアプリケーション情報に戻る。   FIG. 19 is a flowchart illustrating a procedure of the operating system of FIG. 5 for responding to a query from an application regarding pairing information for a device according to an embodiment of the present invention. In FIG. 19, in step 1905, the operating system 405 of FIG. 5 receives a request for pairing of a specific device from an application. In operation 1910, the operating system 405 of FIG. 5 detects the requested device in the table storing the pairing information. At step 1915, the operating system 405 of FIG. 5 determines the pairing of the devices in the table. At step 1920, the operating system 405 of FIG. 5 returns to the application information regarding device pairing.

或いは、段階1925で、図5のオペレーティングシステム405は、アプリケーションからデータの識別子(ファイル、オブジェクト、キーなど)に関する情報をペアリングするための要請を受信する。段階1930で、図5のオペレーティングシステム405は、データ識別子によって識別されたデータを格納する装置を決定する。この時点で、矢印1935で示すように、図5のオペレーティングシステム405は、上述したように、段階1910、段階1915を遂行する。次に、矢印1940で示すように、図5のオペレーティングシステム405は、データを貯蔵する装置及びそのペアの両方に関するアプリケーション情報に戻る。   Alternatively, in operation 1925, the operating system 405 of FIG. 5 receives a request for pairing information on an identifier of a data (a file, an object, a key, etc.) from an application. In operation 1930, the operating system 405 of FIG. 5 determines a device that stores the data identified by the data identifier. At this point, as indicated by arrow 1935, operating system 405 of FIG. 5 performs steps 1910 and 1915 as described above. Next, as indicated by arrow 1940, operating system 405 of FIG. 5 returns to application information for both the data storage device and its pair.

図15〜図19に、本発明の一部の実施形態を示した。しかし、当該技術の通常の技術者は、各段階の順序を変更したり、一部の段階を省略したり、図面に示していない連結を含んだりすることにより、本発明の他の実施形態も可能であることを認識する筈である。フローチャートの全てのこれらの変形は、明示的に説明されようがしまいが、本発明の実施形態とみなされる。   15 to 19 show some embodiments of the present invention. However, a person having ordinary skill in the art may change the order of each step, omit some steps, or include a connection not shown in the drawings, thereby changing the other embodiments of the present invention. You should realize that it is possible. All these variations of the flowchart, whether explicitly described or not, are considered embodiments of the present invention.

本発明の実施形態は、従来技術を超える技術的利点を提供する。本発明の実施形態は、図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)からアプリケーションがサービスを要請できるようにする。   Embodiments of the present invention provide technical advantages over the prior art. Embodiments of the present invention allow the SSDs (125-1 to 125-2) and the coprocessors (130-1 to 130-2) of FIG. 1 to determine pairing information for a pairing partner. Next, the SSDs (125-1 to 125-2) and the coprocessors (130-1 to 130-2) of FIG. 1 provide the pairing information to the operating system 405 of FIG. 405 stores information on whether any device is paired with another device. If the operating system 405 of FIG. 5 has a properly paired device, the operating system 405 of FIG. 5 provides this information to the application via an API and determines which service is performed. An application can request a service from the coprocessor (130-1 to 130-2) of FIG. 1 paired with the SSD (125-1 to 125-2) of FIG. 1 that stores data.

以下の説明は、本発明の技術的思想のいくつかの側面が具現される適切なマシンやマシンの短い一般的な説明を提供する。一つ又は複数のマシンは、少なくとも一部が他のマシンから受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、他の入力信号だけでなく、キーボード、マウスなどのような通常の入力装置からの入力により制御される。ここで使用するように、「マシン」の用語は、単一のマシン、仮想マシン、複数のマシン若しくは複数の仮想マシン、又は共に動作する装置と通信するように結合されたシステムを広く含むものと意図する。例としてのマシンは、例えば、自動車、電車、タクシーなどのような、パーソナル(personal)又は公共交通などのような輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、携帯電話、タブレットなどのようなコンピューティング装置を含む。   The following description provides a brief, general description of a suitable machine or machine in which some aspects of the present inventive concepts may be embodied. One or more machines may include instructions, at least in part received from other machines, interaction with a virtual reality (VR) environment, biofeedback, other input signals, as well as keyboards, mice, etc. It is controlled by an input from a normal input device. As used herein, the term "machine" broadly includes a single machine, a virtual machine, multiple machines or multiple virtual machines, or systems coupled to communicate with devices that work together. Intend. Exemplary machines include, for example, personal computers, workstations, servers, portable computers, handheld devices, portable devices, as well as transportation devices such as personal or public transportation, such as cars, trains, taxis, and the like. Includes computing devices such as phones, tablets, and the like.

一つのマシン又は複数のマシンは、プログラム可能な又はプログラム不可能な論理装置若しくはアレイ、ASIC(Application Specific Integrated Circuit)、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含む。一つのマシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信結合を介してのように一つ以上の多くのリモートマシンに対する一つ以上の多くの連結を活用する。マシンは、イントラネット、インターネット、LAN(local area networks)、WAN(wide area networks)などのような物理的及び/又は論理的ネットワークの手段により互いに連結され。この分野に熟練した者は、ネットワーク通信が、無線周波数(RF)、衛星、マイクロウェーブ、IEEE802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含む多様な有線及び/又は無線近距離又は遠距離キャリアとプロトコルを活用することを理解するだろう。   The machine or machines include embedded controllers such as programmable or non-programmable logic devices or arrays, ASICs (Application Specific Integrated Circuits), embedded computers, smart cards, and the like. A machine or machines utilize one or more connections to one or more remote machines, such as via a network interface, modem, or other communication connection. The machines are interconnected by means of a physical and / or logical network such as an intranet, the Internet, local area networks (LANs), wide area networks (WANs), and the like. Those skilled in the art will recognize that network communications can be performed on a variety of wired and / or wireless networks, including radio frequency (RF), satellite, microwave, IEEE 802.11, Bluetooth, optical, infrared, cable, laser, and the like. You will understand that it utilizes short-range or long-range carriers and protocols.

本発明の実施形態は、マシンによってアクセスされときに、マシンが作業を遂行するか、又は抽象データ型若しくは低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造、アプリケーションなどを含む関連するデータを参照して若しくは協力して説明される。関連付けられたデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージ装置、ハードディスクドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージなどを含む関連する記憶媒体に格納される。関連するデータは、物理的及び/又は論理的なネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形で伝達され、圧縮された又は暗号化されたフォーマットで利用される。関連付けられたデータは、分散環境で使用され、マシンアクセスに対してローカル及び/又はリモートで格納される。   Embodiments of the present invention provide functions, procedures, data structures, applications, etc., that, when accessed by a machine, trigger the machine to perform work or define an abstract data type or low-level hardware context. It will be explained with reference or in cooperation with relevant data including. Associated data includes, for example, volatile and / or non-volatile memory such as RAM, ROM, etc., other storage devices, hard disk drives, floppy disks, optical storage, tape, flash memory, memory sticks ( (Registered trademark), digital video disc, biological storage, and the like. Related data is transmitted in the form of packets, serial data, parallel data, transmission signals, etc. via a transmission environment including a physical and / or logical network, and is used in a compressed or encrypted format. . The associated data is used in a distributed environment and stored locally and / or remotely for machine access.

本発明の実施形態は、一つ以上の多くのプロセッサによって遂行可能であり、ここで説明したように、本発明の技術的思想の構成要件を実行するコマンドを含む実在する非一時的マシン読み取り可能な記録媒体を含む。   Embodiments of the present invention can be performed by one or more of a number of processors, and as described herein, existent non-transitory machine-readable devices that include commands that perform the components of the present inventive concepts. Including various recording media.

上述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成要素、回路、及び/又はモジュールのように、動作を遂行する任意の適切な手段によって遂行される。ソフトウェアは、論理機能を具現するための実行可能なコマンドの順序付きリストを構成し、コマンドを遂行するシステム、装置、シングル若しくはマルチコアプロセッサ、又はプロセッサを含むシステムのような装置によるか又はこれに関連する使用のための任意の「プロセッサ読み取り可能な記録媒体」に内蔵される。   The various operations of the methods described above may be performed by any suitable means of performing the operations, such as various hardware and / or software components, circuits, and / or modules. The software constitutes an ordered list of executable commands for implementing the logical functions, and is based on or associated with a device, such as a system, a device, a single or multi-core processor, or a system including a processor, for performing the commands. Embedded in any "processor readable storage medium" for use.

本明細書で開示した実施形態に関連して説明した方法又はアルゴリズム、及び関数のブロック又は段階は、ハードウェアで直接プロセッサによって実行されるソフトウェアモジュール又はその両方の組み合わせによって具現される。ソフトウェアで具現される場合、機能は、有形且つ非一時的なコンピュータ読み取り可能な媒体上の一つ以上のコマンド又はコードとして格納又は伝送される。RAM(Random Access Memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、RD(Removable Disk)、CD ROM、又は従来から知られている任意の他の形態の記憶媒体に内蔵される。   The methods or algorithms and blocks or steps of the functions described in connection with the embodiments disclosed herein may be embodied by software modules or a combination of both executed by a processor directly in hardware. When embodied in software, the functions are stored or transmitted as one or more commands or codes on a tangible and non-transitory computer readable medium. RAM (Random Access Memory), Flash Memory, ROM (Read Only Memory), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), Register, Drivable, Rek, DvR Embedded in any other form of storage medium.

図示した実施形態を参照して説明し例示した本発明の技術的思想の原則を有する場合、図示した実施形態がこれらの原則から逸脱せずに取り決めと詳細で修正され、必要な任意の方法で組み合わされることが理解されるはずである。上述した説明は具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、「本発明の実施形態による」のような説明や、ここで使用した同様なものにも拘らず、これらのフレーズは、一般的に実施形態の可能性を参照して、本発明の技術的思想を具体的な実施形態の構成に限定することを意図しない。ここで使用するように、これらの用語は、他の実施形態に組み合わせ可能な同一又は異なる実施形態を参照する。   Where there are principles of the inventive concept described and illustrated with reference to the illustrated embodiments, the illustrated embodiments may be modified in arrangement and detail without departing from these principles, and in any required manner. It should be understood that they are combined. Although the above description has concentrated on specific embodiments, other configurations are also contemplated. In spite of the specifics, such as "according to an embodiment of the present invention" and the like used herein, these phrases generally refer to the possibilities of the embodiments, It is not intended to limit the technical idea of the present invention to the configuration of the specific embodiment. As used herein, these terms refer to the same or different embodiments that can be combined with other embodiments.

上述した実施形態は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施形態のみを説明したが、この分野における熟練した者は、本明細書に記載の新規な説明と利点から実質的に逸脱せずに、これらの実施形態に多くの修正が可能であることを十分に理解するだろう。従って、これらの全ての修正は、本発明の技術的思想の範囲内に属するものとして意図される。   The above embodiments are not to be construed as limiting the technical idea of the present invention thereto. Although only a few embodiments have been described, those skilled in the art will appreciate that many modifications can be made to these embodiments without substantially departing from the novel description and advantages described herein. Will understand well. Accordingly, all such modifications are intended to be within the scope of the invention.

本発明の実施形態は、以下の説明に限定されずに拡張される。即ち、次の事項である。   Embodiments of the present invention are extended without being limited to the following description. That is, the following matters.

説明1.本発明の一実施形態によるシステムは、
データに対する第1ストレージと、
固有のSSD ID(identifier)に対する第2ストレージと、
固有のコプロセッサIDに対する第3ストレージと、
固有のコプロセッサIDに対する第4ストレージと、
固有のSSD IDに対する第5ストレージと、
SSDとコプロセッサとの間のハードウェアインターフェースと、を含むSSDを備える。
Explanation 1. A system according to one embodiment of the present invention includes:
A first storage for data;
A second storage for a unique SSD ID (identifier);
A third storage for a unique coprocessor ID;
A fourth storage for a unique coprocessor ID;
A fifth storage for the unique SSD ID;
A hardware interface between the SSD and the coprocessor.

説明2.本発明の一実施形態は、説明1によるシステムを含み、コプロセッサは、FPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。   Explanation 2. One embodiment of the present invention includes the system according to Description 1, wherein the coprocessors include a Field Programmable Gate Array (FPGA), an Application-Specific Integrated Circuit (ASIC), a Graphics Processing Unit (GPU), a GPU, and a GPU (TPU). It includes one of an erasure coding controller and a small processor core.

説明3.本発明の実施形態は、説明1によるシステムを含み、ハードウェアインターフェースは、SMBus(System Management Bus)及びIC(Inter−Integrated Circuit)バスを含む。 Explanation 3. Embodiments of the invention include a system according to Description 1, the hardware interface includes a SMBus (System Management Bus) and I 2 C (Inter-Integrated Circuit ) bus.

説明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)を含む.   Explanation 4. An embodiment of the present invention includes the system according to Description 1, wherein the fourth storage is a one-time programmable memory (OTP), a programmable read-only memory (PROM), an eraseable programmable read-only memory (EPROM), and an eraseable programmable read-only memory (EPROM). Electrically Erasable Programmable Read-Only Memory).

説明5.本発明の実施形態は、説明1によるシステムを含み、コプロセッサは、固有のSSD IDのSSDを照会して、第5ストレージの固有SSD IDを保存するように動作する。   Explanation 5. Embodiments of the present invention include a system according to Description 1, wherein the coprocessor operates to query the SSD of the unique SSD ID and store the unique SSD ID of the fifth storage.

説明6.本発明の実施形態は、説明1によるシステムを含み、コプロセッサは、固有のコプロセッサIDを含むSSDを提供するように動作する。   Explanation 6. An embodiment of the present invention includes a system according to Description 1, wherein the coprocessor operates to provide an SSD including a unique coprocessor ID.

説明7.本発明の実施形態は、説明1によるシステムを含み、SSDは、固有のコプロセッサIDに対するコプロセッサをクエリし、第3ストレージの固有のコプロセッサIDを格納するように動作する。   Description 7. Embodiments of the present invention include a system according to Description 1, wherein the SSD operates to query the coprocessor for a unique coprocessor ID and to store the unique coprocessor ID of the third storage.

説明8.本発明の実施形態は、説明1によるシステムを含み、SSDは、固有のSSD IDを含むコプロセッサを提供するように動作する。   Explanation 8. Embodiments of the present invention include a system according to Description 1, wherein the SSD operates to provide a coprocessor that includes a unique SSD ID.

説明9.本発明の実施形態は、説明1によるシステムを含み、SSDは、SSD及びコプロセッサに関するクエリをアウト・オブ・バンド(out−of−band)で受信するように動作する。   Explanation 9. Embodiments of the present invention include a system according to Description 1, wherein the SSD operates to receive queries for the SSD and the coprocessor out-of-band.

説明10.本発明の実施形態は、説明9によるシステムを含み、SSDは、クエリをアウト・オブ・バンドで受信するためのSMBus連結を含む。   Explanation 10. An embodiment of the present invention includes a system according to description 9, wherein the SSD includes an SMBus concatenation for receiving queries out-of-band.

説明11.本発明の実施形態は、説明9によるシステムを含み、SSDは、固有のSSD ID及び固有のコプロセッサIDの両方に対するクエリに応答するように動作する。   Description 11. Embodiments of the present invention include a system according to description 9, wherein the SSD operates to respond to queries for both the unique SSD ID and the unique coprocessor ID.

説明12.本発明の実施形態は、説明9によるシステムを含み、クエリはNVMe(Non−Volatile Memory Express)MI(Management Interface)コマンドを含む。   Description 12. An embodiment of the present invention includes the system according to description 9, wherein the query includes a non-volatile memory expression (NVMe) command (Management Interface).

説明13.本発明の一実施形態は、説明1によるシステムを含み、コプロセッサは、SSD及びコプロセッサに関するクエリをアウト・オブ・バンドで受信するように動作する。   Description 13. One embodiment of the present invention includes the system according to Description 1, wherein the coprocessor operates to receive queries for the SSD and the coprocessor out of band.

説明14.本発明の実施形態は、説明13によるシステムを含み、コプロセッサは、固有のSSD ID及び固有コプロセッサIDの両方に対するクエリに応答するように動作する。   Description 14. Embodiments of the invention include a system according to description 13, wherein the coprocessor operates to respond to queries for both the unique SSD ID and the unique coprocessor ID.

説明15.本発明の実施形態は、説明13によるシステムを含み、クエリは、NVMe(Non−Volatile Memory Express)MI(Management Interface)コマンドを含む。   Description 15. An embodiment of the present invention includes the system according to description 13, wherein the query includes a non-volatile memory expression (NVMe) command (Management Interface).

説明16.本発明の実施形態は、説明1によるシステムを含み、SSDは、SSD及びコプロセッサに関するクエリをイン・バンド(in−band)で受信するように動作する。   Description 16. An embodiment of the present invention includes a system according to Description 1, wherein the SSD operates to receive queries for the SSD and the coprocessor in-band.

説明17.本発明の実施形態は、説明16によるシステムを含み、SSDは、クエリをイン・バンドで受信するためのPCIe(Peripheral Component Interconnect Express)連結を含む。   Description 17. An embodiment of the present invention includes a system according to Description 16, wherein the SSD includes a PCIe (Peripheral Component Interconnect Express) concatenation for receiving queries in-band.

説明18.本発明の実施形態は、説明16によるシステムを含み、SSDは、固有のSSD ID及び固有のコプロセッサIDの両方のクエリに応答するように動作する。   Description 18. An embodiment of the present invention includes a system according to description 16, wherein the SSD operates to respond to queries for both the unique SSD ID and the unique coprocessor ID.

説明19.本発明の実施形態は、説明16によるシステムを含み、クエリは、NVMe(Non−Volatile Memory Express)MI(Management Interface)コマンドを含む。   Description 19. An embodiment of the present invention includes the system according to Description 16, wherein the query includes a non-volatile memory expression (NVMe) command (Management Interface).

説明20.本発明の一実施形態による方法は、
第1装置から第2装置にクエリを伝送する段階と、
第1装置で第2装置から第1ペアリングデータを含む応答を受信する段階と、
第1装置の第2ストレージに第1ペアリングデータを格納する段階と、
第1装置の第1ストレージから第2ペアリングデータにアクセスする段階と、
第1装置から第2装置に第2ペアリングデータを伝送する段階と、を有する。
Description 20. The method according to one embodiment of the invention comprises:
Transmitting a query from the first device to the second device;
Receiving at the first device a response including the first pairing data from the second device;
Storing the first pairing data in a second storage of the first device;
Accessing the second pairing data from the first storage of the first device;
Transmitting the second pairing data from the first device to the second device.

説明21.本発明の一実施形態は、説明20による方法を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。   Description 21. An embodiment of the present invention includes a method according to Description 20, wherein each of the first device and the second device is a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a graphics processing unit (GPU). It includes any one of a TPU (Tensor Processing Unit), an erasure coding controller, and a small processor core.

説明22.本発明の実施形態は、説明20による方法を含み、
第1装置から第2装置にクエリを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置にクエリを伝送する段階を含み、
第1装置で第2装置から応答を受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置から応答を受信する段階を含み、
第1装置から第2装置に第2ペアリングデータを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェース通して第1装置から第2装置に第2ペアリングデータを伝送する段階を含む。
Description 22. An embodiment of the present invention includes a method according to description 20, wherein
Transmitting the query from the first device to the second device includes transmitting the query from the first device to the second device through a hardware interface between the first device and the second device,
Receiving a response from the second device at the first device includes receiving a response from the second device at the first device through a hardware interface between the first device and the second device;
The step of transmitting the second pairing data from the first device to the second device includes transmitting the second pairing data from the first device to the second device through a hardware interface between the first device and the second device. Includes the step of:

説明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)のいずれか一つを含む。   Description 23. Embodiments of the invention include a method according to Description 20, wherein the second storage is an OTP (one-time programmable) memory, a PROM (Programmable Read-Only Memory), an EPROM (Erasable Programmable Read-Only Memory and EROM), Electrically Erasable Programmable Read-Only Memory).

説明24.本発明の一実施形態による方法は、
第1装置で第2装置からクエリを受信する段階と、
第1装置の第1ストレージから第1ペアリングデータにアクセスする段階と、
第1装置から第2装置に第1ペアリングデータを含む応答を伝送する段階と、
第1装置で第2装置から第2ペアリングデータを受信する段階と、
第1装置の第2ストレージに第2ペアリングデータを格納する段階と、を有する。
Description 24. The method according to one embodiment of the invention comprises:
Receiving at the first device a query from the second device;
Accessing the first pairing data from the first storage of the first device;
Transmitting a response including the first pairing data from the first device to the second device;
Receiving the second pairing data from the second device at the first device;
Storing the second pairing data in the second storage of the first device.

説明25.本発明の実施形態は、説明24による方法を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。   Description 25. An embodiment of the present invention includes a method according to description 24, wherein each of the first device and the second device is a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a graphics processing unit (GPU), and the like. (Tensor Processing Unit), an erasure coding controller, and a small processor core.

説明26.本発明の実施形態は、説明24による方法を含み、
第1装置で第2装置からクエリを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置からクエリを受信する段階を含み、
第1装置から第2装置に応答を伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置に応答を伝送する段階を含み、
第1装置で第2装置から第2ペアリングデータを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置から第2ペアリングデータを受信する段階を含む。
Description 26. An embodiment of the present invention includes a method according to description 24,
Receiving a query from the second device at the first device includes receiving a query from the second device at the first device through a hardware interface between the first device and the second device;
Transmitting the response from the first device to the second device includes transmitting the response from the first device to the second device through a hardware interface between the first device and the second device;
The receiving of the second pairing data from the second device by the first device may include receiving the second pairing data from the second device by the first device through a hardware interface between the first device and the second device. Including stages.

説明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)のいずれか一つを含む。   Description 27. Embodiments of the present invention include a method according to Description 24, wherein the second storage is a one-time programmable memory (OTP) memory, a programmable read-only memory (PROM), an eraseable programmable read-only memory (EPROM), and an electronic random access memory (EROM). Electrically Erasable Programmable Read-Only Memory).

説明28.本発明の一実施形態による方法は、
第1装置でクエリを受信する段階と、
第1装置の第1ストレージから第1装置に対する第1固有のID(Identifier)にアクセスする段階と、
第1装置の第2ストレージから第1装置とペアリングされた第2装置に対する第2固有のIDにアクセスする段階と、
第1固有のID及び第2固有のIDの両方を含む応答を第1装置からクエリに伝送する段階と、を有する。
Description 28. The method according to one embodiment of the invention comprises:
Receiving a query at the first device;
Accessing a first unique ID (Identifier) for the first device from the first storage of the first device;
Accessing a second unique ID for a second device paired with the first device from a second storage of the first device;
Transmitting a response including both the first unique ID and the second unique ID from the first device to the query.

説明29.本発明の実施形態は、説明28による方法を含み、
第1装置でクエリを受信する段階は、アウト・オブ・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、アウト・オブ・バンドで、第1装置からクエリに応答を伝送する段階を含む。
Description 29. An embodiment of the present invention includes a method according to description 28,
Receiving the query at the first device includes receiving the query at the first device out of band.
Transmitting the response to the query from the first device includes transmitting the response to the query from the first device out of band.

説明30.本発明の実施形態は、説明29による方法を含み、
アウト・オブ・バンドで、第1装置でクエリを受信する段階は、SMBus(System Management Bus)連結を介して第1装置でクエリを受信する段階を含み、
アウト・ボブ・バンドで第1装置からクエリに応答を伝送する段階は、SMBus連結を介して第1装置からクエリに応答を伝送する段階を含む。
Description 30. An embodiment of the present invention includes a method according to description 29,
Out-of-band, receiving the query on the first device includes receiving the query on the first device via a System Management Bus (SMBus) connection;
Transmitting a response to the query from the first device on the out-of-the-band includes transmitting a response to the query from the first device via the SMBus connection.

説明31.本発明の実施形態は、説明28による方法を含み、
第1装置でクエリを受信する段階は、イン・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、イン・バンドで第1装置からクエリに応答を伝送する段階を含む。
Description 31. An embodiment of the present invention includes a method according to description 28,
Receiving the query at the first device includes receiving the query at the first device in-band.
Transmitting the response to the query from the first device includes transmitting the response to the query from the first device in-band.

説明32.本発明の実施形態は、説明31による方法を含み、
第1装置でクエリを受信する段階は、PCIe(Peripheral Component Interconnect Express)連結を介して第1装置でクエリを受信する段階を含み、
イン・バンドで第1装置からクエリに応答を伝送する段階は、PCIe連結を介して第1装置からクエリに応答を伝送する段階を含む。
Description 32. An embodiment of the present invention includes a method according to description 31, wherein
Receiving the query on the first device includes receiving the query on the first device via a PCIe (Peripheral Component Interconnect Express) connection;
Transmitting a response to the query from the first device in-band includes transmitting a response to the query from the first device via a PCIe connection.

説明33.本発明の実施形態は、説明31による方法を含み、クエリは、NVMe(Non−Volatile Management Express)MI(Management Interface)コマンドを含む。   Description 33. An embodiment of the present invention includes the method according to the description 31, wherein the query includes a non-volatile management expression (NVMe) command (Management Interface).

説明34.本発明の一実施形態による方法は、
第1仮想IDによって示されるSSD(Solid State Drive)に第1クエリを伝送する段階と、
第1クエリに応答して、SSDから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第2仮想IDによって示されるコプロセッサに第2クエリを伝送する段階と、
第2クエリに応答して、コプロセッサから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第1仮想IDと第2仮想IDとをペアリングする段階と、有する。
Description 34. The method according to one embodiment of the invention comprises:
Transmitting a first query to an SSD (Solid State Drive) indicated by the first virtual ID;
Receiving a unique SSD ID and a unique coprocessor ID from the SSD in response to the first query;
Transmitting a second query to the coprocessor indicated by the second virtual ID;
Receiving a unique SSD ID and a unique coprocessor ID from the coprocessor in response to the second query;
Pairing the first virtual ID and the second virtual ID.

説明35.本発明の実施形態は、説明34による方法を含み、SSDに第1クエリを伝送する段階は、アウト・オブ・バンドでSSDに第1クエリを伝送する段階を含む。   Description 35. An embodiment of the present invention includes the method according to Description 34, wherein transmitting the first query to the SSD includes transmitting the first query to the SSD out-of-band.

説明36.本発明の実施形態は、説明35による方法を含み、アウト・オブ・バンドでSSDに第1クエリを伝送する段階は、SMBus連結を介してSSDに第1クエリを伝送する段階を含む。   Description 36. An embodiment of the present invention includes the method according to Description 35, wherein transmitting the first query to the SSD out-of-band includes transmitting the first query to the SSD via an SMBus connection.

説明37.本発明の実施形態は、説明34による方法を含み、SSDに第1クエリを伝送する段階は、イン・バンドでSSDに第1クエリを伝送する段階を含む。   Description 37. An embodiment of the present invention includes the method according to Description 34, wherein transmitting the first query to the SSD includes transmitting the first query to the SSD in-band.

説明38.本発明の実施形態は、説明37による方法を含み、イン・バンドでSSDに第1クエリを伝送する段階は、PCIe連結を介してSSDに第1クエリを伝送する段階を含む。   Description 38. An embodiment of the present invention includes the method according to Description 37, wherein transmitting the first query to the SSD in-band includes transmitting the first query to the SSD via a PCIe connection.

説明39.本発明の実施形態は、説明34による方法を含み、第1クエリは、NVMe MIコマンドを含む。   Description 39. An embodiment of the present invention includes the method according to description 34, wherein the first query includes a NVMe MI command.

説明40.本発明の実施形態は、説明34による方法を含み、コプロセッサに第2クエリを伝送する段階は、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階を含む。   Description 40. An embodiment of the present invention includes the method according to description 34, wherein transmitting the second query to the coprocessor includes transmitting the second query to the coprocessor out of band.

説明41.本発明の実施形態は、説明40による方法を含み、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階は、SMBus連結を介してコプロセッサに第2クエリを伝送する段階を含む。   Description 41. An embodiment of the present invention includes the method according to Description 40, wherein transmitting the second query to the coprocessor out-of-band includes transmitting the second query to the coprocessor via an SMBus connection.

説明42.本発明の実施形態は、説明34による方法を含み、第2クエリは、NVMe MIコマンドを含む。   Description 42. Embodiments of the present invention include a method according to description 34, wherein the second query includes a NVMe MI command.

説明43.本発明の実施形態は、説明34による方法を含み、第1仮想IDと第2仮想IDとをペアリングする段階は、固有のSSD ID及び固有のコプロセッサIDを返すSSD及びコプロセッサの両方に応答して第1仮想IDと第2仮想IDとをペアリングする段階を含む。   Description 43. Embodiments of the present invention include a method according to description 34, wherein the step of pairing the first virtual ID and the second virtual ID includes both the SSD and the coprocessor returning the unique SSD ID and the unique coprocessor ID. Pairing the first virtual ID and the second virtual ID in response.

説明44.本発明の実施形態は、説明34による方法を含み、第1仮想IDと第2仮想IDとのペアリングに関するクエリに応答するように動作するAPI(Application Programming Interface)を提供する段階を更に含む。   Description 44. Embodiments of the present invention include the method according to the description 34, further comprising providing an API (Application Programming Interface) that operates to respond to a query regarding pairing of the first virtual ID and the second virtual ID.

説明45.本発明の実施形態は、説明44による方法を含み、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階と、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階と、を更に含む。
Description 45. An embodiment of the present invention includes a method according to description 44,
Receiving a pairing query for a pair for the first virtual ID;
Returning a second virtual ID in response to the pairing of the first virtual ID and the second virtual ID.

説明46.本発明の実施形態は、説明45による方法を含み、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階は、APIを介してアプリケーションから第1仮想IDのペアのためのペアリングに対するクエリを受信する段階を含み、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階は、第1仮想IDと第2仮想IDとのペアリングに応答してアプリケーションに第2仮想IDを返す段階を含む。
Description 46. An embodiment of the present invention includes a method according to description 45,
Receiving a query for pairing for the pair for the first virtual ID includes receiving a query for pairing for the pair for the first virtual ID from an application via an API,
Returning the second virtual ID in response to the pairing of the first virtual ID and the second virtual ID includes providing the application with the second virtual ID in response to the pairing of the first virtual ID and the second virtual ID. Including returning.

説明47.本発明の実施形態は、説明44による方法を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
ファイルを格納するSSDを識別する段階と、
ファイルのクエリに応答して第1仮想ID及び第2仮想IDを返す段階と、を更に含む。
Description 47. An embodiment of the present invention includes a method according to description 44,
Receiving a file query for a pair associated with the file;
Identifying the SSD that stores the file;
Returning the first virtual ID and the second virtual ID in response to the query for the file.

説明48.本発明の実施形態は、説明47による方法を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階は、APIを介してアプリケーションからファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
ファイルのクエリに応答して第1仮想ID及び第2想IDを返す段階は、ファイルのクエリに応答してアプリケーションに第1仮想ID及び第2仮想IDを返す段階を含む。
Description 48. An embodiment of the present invention includes a method according to description 47,
Receiving the query for the file for the pair associated with the file includes receiving the query for the file for the pair associated with the file from the application via the API;
Returning the first virtual ID and the second virtual ID in response to the file query includes returning the first virtual ID and the second virtual ID to the application in response to the file query.

説明49.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第1装置から第2装置にクエリを伝送する段階と、
第1装置で第2の装置から第1ペアリングデータを含む応答を受信する段階と、
第1装置の第2ストレージに第1ペアリングデータを格納する段階と、
第1装置の第1ストレージから第2ペアリングデータにアクセスする段階と、
第1装置から第2装置に第2ペアリングデータを伝送する段階と、を有する。
Description 49. A non-transitory computer readable storage medium according to one embodiment of the present invention includes a stored command, and the method by which the command is executed by a machine comprises:
Transmitting a query from the first device to the second device;
Receiving, at the first device, a response including first pairing data from the second device;
Storing the first pairing data in a second storage of the first device;
Accessing the second pairing data from the first storage of the first device;
Transmitting the second pairing data from the first device to the second device.

説明50.本発明の実施形態は、説明49による記録媒体を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。   Description 50. An embodiment of the present invention includes a recording medium according to description 49, wherein each of the first device and the second device is an FPGA (Field Programmable Gate Array), an ASIC (Application-Specific Integrated Circuit), a GPU (Graphics Processing Unit). It includes any one of a TPU (Tensor Processing Unit), an erasure coding controller, and a small processor core.

説明51.本発明の実施形態は、説明49による記録媒体を含み、
第1装置から第2装置にクエリを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置にクエリを伝送する段階を含み、
第1装置で第2装置から応答を受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを介して第1装置で第2装置から応答を受信する段階を含み、
第1装置から第2装置に第2ペアリングデータを伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを介して第1装置から第2装置に第2ペアリングデータを伝送する段階を含む。
Description 51. An embodiment of the present invention includes a recording medium according to Description 49,
Transmitting the query from the first device to the second device includes transmitting the query from the first device to the second device through a hardware interface between the first device and the second device,
Receiving a response from the second device at the first device includes receiving a response from the second device at the first device via a hardware interface between the first device and the second device;
The step of transmitting the second pairing data from the first device to the second device may include transmitting the second pairing data from the first device to the second device via a hardware interface between the first device and the second device. Transmitting.

説明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)のいずれか一つを含む。   Description 52. An embodiment of the present invention includes a recording medium according to description 49, wherein the second storage is an OTP (one-time programmable) memory, a PROM (Programmable Read-Only Memory), an EPROM (Erasable Programmable Read-Only Memory), and an EPROM (Erasable Programmable Read-Only Memory). (Electrically Erasable Programmable Read-Only Memory).

説明53.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第1装置で第2装置からクエリを受信する段階と、
第1装置の第1ストレージから第1ペアリングデータにアクセスする段階と、
第1装置から第2装置に第1ペアリングデータを含む応答を伝送する段階と、
第1装置で第2装置から第2ペアリングデータを受信する段階と、
第1装置の第2ストレージに第2ペアリングデータを格納する段階と、を有する。
Description 53. A non-transitory computer readable storage medium according to one embodiment of the present invention includes a stored command, and the method by which the command is executed by a machine comprises:
Receiving at the first device a query from the second device;
Accessing the first pairing data from the first storage of the first device;
Transmitting a response including the first pairing data from the first device to the second device;
Receiving the second pairing data from the second device at the first device;
Storing the second pairing data in the second storage of the first device.

説明54.本発明の実施形態は、説明53による記録媒体を含み、第1装置及び第2装置のそれぞれは、FPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。   Description 54. The embodiment of the present invention includes the recording medium according to the description 53, and each of the first device and the second device includes an FPGA (Field Programmable Gate Array), an ASIC (Application-Specific Integrated Circuit), and a GPU (Graphics Processing Unit). It includes any one of a TPU (Tensor Processing Unit), an erasure coding controller, and a small processor core.

説明55.本発明の実施形態は、説明53による記録媒体を含み、
第1装置で第2装置からのクエリを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置で第2装置からクエリを受信する段階を含み、
第1装置から第2装置に応答を伝送する段階は、第1装置と第2装置との間のハードウェアインターフェースを通して第1装置から第2装置に応答を伝送する段階を含み、
第1装置で第2装置から第2ペアリングデータを受信する段階は、第1装置と第2装置との間のハードウェアインターフェースを介して第1装置で第2装置から第2ペアリングデータを受信する段階を含む。
Description 55. An embodiment of the present invention includes a recording medium according to Description 53,
Receiving a query from the second device at the first device includes receiving a query from the second device at the first device through a hardware interface between the first device and the second device;
Transmitting the response from the first device to the second device includes transmitting the response from the first device to the second device through a hardware interface between the first device and the second device;
The receiving of the second pairing data from the second device by the first device may include transmitting the second pairing data from the second device by the first device via a hardware interface between the first device and the second device. Including receiving.

説明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)のいずれか一つを含む。   Description 56. An embodiment of the present invention includes a recording medium according to Description 53, wherein the second storage is an OTP (one-time programmable) memory, a PROM (Programmable Read-Only Memory), an EPROM (Erasable Programmable Read-Only Memory), and an EPROM (Erasable Programmable Read-Only Memory). (Electrically Erasable Programmable Read-Only Memory).

説明57.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第1装置でクエリを受信する段階と、
第1装置の第1ストレージから第1装置に対する第1固有のID(Identifier)にアクセスする段階と、
第1装置の第2ストレージから第1装置とペアリングされた第2装置に対する第2固有のIDにアクセスする段階と、
第1固有のID及び第2固有IDの両方を含む応答を第1装置からクエリに伝送する段階と、を有する。
Description 57. A non-transitory computer readable storage medium according to one embodiment of the present invention includes a stored command, and the method by which the command is executed by a machine comprises:
Receiving a query at the first device;
Accessing a first unique ID (Identifier) for the first device from the first storage of the first device;
Accessing a second unique ID for a second device paired with the first device from a second storage of the first device;
Transmitting a response including both the first unique ID and the second unique ID from the first device to the query.

説明58.本発明の実施形態は、説明53による記録媒体を含み、
第1装置でクエリを受信する段階は、アウト・オブ・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、アウト・オブ・バンドで、第1装置からクエリに応答を伝送する段階を含む。
Description 58. An embodiment of the present invention includes a recording medium according to Description 53,
Receiving the query at the first device includes receiving the query at the first device out of band.
Transmitting the response to the query from the first device includes transmitting the response to the query from the first device out of band.

説明59.本発明の実施形態は、説明58による記録媒体を含み、
アウト・オブ・バンドで、第1装置でクエリを受信する段階は、SMBus(System Management Bus)連結を介して第1装置でクエリを受信する段階を含み、
アウト・ボブ・バンドで第1装置からクエリに応答を伝送する段階は、SMBus連結を介して第1装置からクエリに応答を伝送する段階を含む。
Description 59. An embodiment of the present invention includes a recording medium according to Description 58,
Out-of-band, receiving the query on the first device includes receiving the query on the first device via a System Management Bus (SMBus) connection;
Transmitting a response to the query from the first device on the out-of-the-band includes transmitting a response to the query from the first device via the SMBus connection.

説明60.本発明の実施形態は、説明57による記録媒体を含み、
第1装置でクエリを受信する段階は、イン・バンドで、第1装置でクエリを受信する段階を含み、
第1装置からクエリに応答を伝送する段階は、イン・バンドで第1装置からクエリに応答を伝送する段階を含む。
Description 60. An embodiment of the present invention includes a recording medium according to Description 57,
Receiving the query at the first device includes receiving the query at the first device in-band.
Transmitting the response to the query from the first device includes transmitting the response to the query from the first device in-band.

説明61.本発明の実施形態は、説明57による記録媒体を含み、
第1装置でクエリを受信する段階は、PCIe(Peripheral Component Interconnect Express)連結を介して第1装置でクエリを受信する段階を含み、
イン・バンドで第1装置からクエリに応答を伝送する段階は、PCIe接続を介して第1装置からクエリに応答を伝送する段階を含む。
Description 61. An embodiment of the present invention includes a recording medium according to Description 57,
Receiving the query on the first device includes receiving the query on the first device via a PCIe (Peripheral Component Interconnect Express) connection;
Transmitting a response to the query from the first device in-band includes transmitting a response to the query from the first device via the PCIe connection.

説明62.本発明の実施形態は、説明57による記録媒体を含み、クエリは、NVMe(Non−Volatile Management Express)MI(Management Interface)コマンドを含む。   Description 62. An embodiment of the present invention includes the recording medium according to the description 57, and the query includes an NVMe (Non-Volatile Management Express) MI (Management Interface) command.

説明63.本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行され方法は、
第1仮想IDによって示されるSSD(Solid State Drive)に第1クエリを伝送する段階と、
第1クエリに応答して、SSDから固有のSSD ID及び固有コプロセッサIDを受信する段階と、
第2仮想IDによって示されるコプロセッサに第2クエリを伝送する段階と、
第2クエリに応答して、コプロセッサから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第1仮想IDと第2仮想IDとをペアリングする段階と、を有する。
Description 63. A non-transitory computer readable storage medium according to one embodiment of the present invention includes a stored command, wherein the method wherein the command is executed by a machine comprises:
Transmitting a first query to an SSD (Solid State Drive) indicated by the first virtual ID;
Receiving a unique SSD ID and a unique coprocessor ID from the SSD in response to the first query;
Transmitting a second query to the coprocessor indicated by the second virtual ID;
Receiving a unique SSD ID and a unique coprocessor ID from the coprocessor in response to the second query;
Pairing the first virtual ID and the second virtual ID.

説明64.本発明の実施形態は、説明63による記録媒体を含み、SSDに第1クエリを伝送する段階は、アウト・オブ・バンドでSSDに第1クエリを伝送する段階を含む。   Description 64. An embodiment of the present invention includes the recording medium according to Description 63, and transmitting the first query to the SSD includes transmitting the first query to the SSD out-of-band.

説明65.本発明の実施形態は、説明65による記録媒体を含み、アウト・オブ・バンドでSSDに第1クエリを伝送する段階は、SMBus連結を介してSSDに第1クエリを伝送する段階を含む。   Description 65. The embodiment of the present invention includes the recording medium according to the description 65, and transmitting the first query to the SSD out-of-band includes transmitting the first query to the SSD via an SMBus connection.

説明66.本発明の実施形態は、説明63による記録媒体を含み、SSDに第1クエリを伝送する段階は、イン・バンドでSSDに第1クエリを伝送する段階を含む。   Description 66. The embodiment of the present invention includes the recording medium according to the description 63, and transmitting the first query to the SSD includes transmitting the first query to the SSD in-band.

説明67.本発明の実施形態は、説明66による記録媒体を含み、イン・バンドでSSDに第1クエリを伝送する段階は、PCIe連結を介してSSDに第1クエリを伝送する段階を含む。   Description 67. An embodiment of the present invention includes the recording medium according to Description 66, and transmitting the first query to the SSD in-band includes transmitting the first query to the SSD via a PCIe connection.

説明68.本発明の実施形態は、説明63による記録媒体を含み、第1クエリは、NVMe MIコマンドを含む。   Description 68. An embodiment of the present invention includes a recording medium according to Description 63, and the first query includes an NVMe MI command.

説明69.本発明の実施形態は、説明63による記録媒体を含み、コプロセッサに第2クエリを伝送する段階は、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階を含む。   Description 69. An embodiment of the present invention includes the recording medium according to Description 63, wherein transmitting the second query to the coprocessor includes transmitting the second query to the coprocessor out of band.

説明70.本発明の実施形態は、説明69による記録媒体を含み、アウト・オブ・バンドでコプロセッサに第2クエリを伝送する段階は、SMBus連結を介してコプロセッサに第2クエリを伝送する段階を含む。   Description 70. An embodiment of the present invention includes the recording medium according to Description 69, and transmitting the second query to the coprocessor out-of-band includes transmitting the second query to the coprocessor via an SMBus connection. .

説明71.本発明の実施形態は、説明63による記録媒体を含み、第2クエリは、NVMe MIコマンドを含む。   Description 71. An embodiment of the present invention includes a recording medium according to Description 63, and the second query includes an NVMe MI command.

説明72.本発明の実施形態は、説明63による記録媒体を含み、第1仮想IDと第2仮想IDとをペアリングする段階は、固有のSSD ID及び固有のコプロセッサIDを返すSSD及びコプロセッサの両方に応答して第1仮想IDと第2仮想IDとをペアリングする段階を含む。   Description 72. An embodiment of the present invention includes a recording medium according to Description 63, wherein the step of pairing the first virtual ID and the second virtual ID includes both the SSD and the coprocessor returning the unique SSD ID and the unique coprocessor ID. And pairing the first virtual ID and the second virtual ID in response to

説明73.本発明の実施形態は、説明63による記録媒体を含み、方法は、第1仮想IDと第2仮想IDとのペアリングに関するクエリに応答するように動作するAPI(Application Programming Interface)を提供する段階を更に含む。   Description 73. An embodiment of the present invention includes a recording medium according to Description 63, wherein the method provides an API (Application Programming Interface) operable to respond to a query regarding pairing of the first virtual ID and the second virtual ID. Further included.

説明74.本発明の実施形態は、説明73による記録媒体を含み、方法は、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階と、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階と、を更に含む。
Description 74. An embodiment of the present invention includes a recording medium according to Description 73, wherein the method comprises:
Receiving a pairing query for a pair for the first virtual ID;
Returning a second virtual ID in response to the pairing of the first virtual ID and the second virtual ID.

説明75.本発明の実施形態は、説明74による記録媒体を含み、
第1仮想IDに対するペアのためのペアリングのクエリを受信する段階は、APIを介してアプリケーションから第1仮想IDに対するペアのためのペアリングに対するクエリを受信する段階を含み、
第1仮想IDと第2仮想IDとのペアリングに応答して第2仮想IDを返す段階は、第1仮想IDと第2仮想IDとのペアリングに応答してアプリケーションに第2仮想IDを返す段階を含む。
Description 75. An embodiment of the present invention includes a recording medium according to Description 74,
Receiving the query for pairing for the pair for the first virtual ID includes receiving a query for pairing for the pair for the first virtual ID from the application via the API;
Returning the second virtual ID in response to the pairing of the first virtual ID and the second virtual ID includes providing the application with the second virtual ID in response to the pairing of the first virtual ID and the second virtual ID. Including returning.

説明76.本発明の実施形態は、説明73による記録媒体を含み、方法は、
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
ファイルを格納するSSDを識別する段階と、
ファイルのクエリに応答して第1仮想ID及び第2仮想IDを返す段階と、を更に含む。
Description 76. An embodiment of the present invention includes a recording medium according to Description 73, wherein the method comprises:
Receiving a file query for a pair associated with the file;
Identifying the SSD that stores the file;
Returning the first virtual ID and the second virtual ID in response to the query for the file.

説明77.本発明の実施形態は、説明73による記録媒体を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階は、APIを介してアプリケーションからファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
ファイルのクエリに応答して第1仮想ID及び第2仮想IDを返す段階は、ファイルのクエリに応答してアプリケーションに第1の仮想ID及び第2仮想IDを返す段階を含む。
Description 77. An embodiment of the present invention includes a recording medium according to Description 73,
Receiving the query for the file for the pair associated with the file includes receiving the query for the file for the pair associated with the file from the application via the API;
Returning the first virtual ID and the second virtual ID in response to the file query includes returning the first virtual ID and the second virtual ID to the application in response to the file query.

以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。   As described above, the embodiments of the present invention have been described in detail with reference to the drawings. However, the present invention is not limited to the above-described embodiments, and various changes can be made without departing from the technical idea of the present invention. It is possible to implement.

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 イレイジャーコーディングロジック

105 machine 110 processor 115 memory 120 memory controller 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 Storage device 130-1, 130-2 Coprocessor 205 FPGA
210 ASIC
215 GPU
220 TPU
225 Erasure coding controller 230 Small processor core 305 Clock 310 Network connector 315 Bus 320 User interface 325 Input / output engine 405 Operating system 410, 415, 420, 425 Virtual identifier (ID) 1-4
430, 435 Data storage device 1105, 1305, 1405 Erasure coding logic

Claims (20)

データに対する第1ストレージ、固有のSSD ID(identifier)に対する第2ストレージ、及び固有のコプロセッサIDに対する第3ストレージを含むSSD(Solid State Drive)と、
前記固有のコプロセッサIDに対する第4ストレージ、前記固有のSSD IDに対する第5ストレージを含むコプロセッサと、
前記SSDと前記コプロセッサとの間のハードウェアインターフェースと、を備えることを特徴とするシステム。
An SSD (Solid State Drive) including a first storage for data, a second storage for a unique SSD ID (identifier), and a third storage for a unique coprocessor ID;
A coprocessor including a fourth storage for the unique coprocessor ID, a fifth storage for the unique SSD ID,
A hardware interface between the SSD and the coprocessor.
前記コプロセッサは、FPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含むことを特徴とする請求項1に記載のシステム。   The co-processor includes a Field Programmable Gate Array (FPGA), an Application-Specific Integrated Circuit (ASIC), a Graphics Processing Unit (GPU), a controller of a TPU (Tensor Process Unit), and a TPU (Tensor Processing Unit), or a TPU (Tensor Processing Unit) or a core unit. The system of claim 1, comprising: 前記コプロセッサは、前記固有のSSD IDに対するSSDをクエリし、前記固有のSSD IDを前記第5ストレージに格納するように動作することを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the coprocessor is operative to query an SSD for the unique SSD ID and store the unique SSD ID in the fifth storage. 前記コプロセッサは、前記SSDに前記固有のコプロセッサIDを提供するように動作することを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the coprocessor is operative to provide the unique coprocessor ID to the SSD. 前記SSDは、前記コプロセッサに前記固有のSSD IDを提供するように動作することを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the SSD operates to provide the unique SSD ID to the coprocessor. 前記SSDは、前記SSD及び前記コプロセッサに関するクエリをアウト・オブ・バンド(Out−Of−Band)で受信するように動作することを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the SSD is operative to receive queries for the SSD and the coprocessor out-of-band. 前記SSDは、前記固有のSSD ID及び前記固有のコプロセッサIDの両方を含む前記クエリに応答するように動作することを特徴とする請求項6に記載のシステム。   The system of claim 6, wherein the SSD is operable to respond to the query including both the unique SSD ID and the unique coprocessor ID. 前記コプロセッサは、前記SSD及び前記コプロセッサに関するクエリをアウト・オブ・バンドで受信するように動作することを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the coprocessor is operative to receive queries for the SSD and the coprocessor out of band. 前記コプロセッサは、前記固有のSSD ID及び前記固有のコプロセッサIDの両方を含む前記クエリに応答するように動作することを特徴とする請求項8に記載のシステム。   The system of claim 8, wherein the coprocessor is operable to respond to the query including both the unique SSD ID and the unique coprocessor ID. 前記SSDは、前記SSD及び前記コプロセッサに関するクエリをイン・バンド(In−Band)で受信するように動作することを特徴とする請求項1に記載のシステム。   The system of claim 1, wherein the SSD is operative to receive queries for the SSD and the coprocessor in-band. 前記SSDは、前記固有のSSD ID及び前記固有のコプロセッサIDの両方を含む前記クエリに応答するように動作することを特徴とする請求項10に記載のシステム。   The system of claim 10, wherein the SSD is operative to respond to the query including both the unique SSD ID and the unique coprocessor ID. 第1装置から第2装置にクエリを伝送する段階と、
前記第1装置で前記第2装置から第1ペアリングデータを含む応答を受信する段階と、
前記第1装置の第1ストレージに前記第1ペアリングデータを格納する段階と、
前記第1装置の第2ストレージから第2ペアリングデータにアクセスする段階と、
前記第1装置から前記第2装置に前記第2ペアリングデータを伝送する段階と、を有することを特徴とする方法。
Transmitting a query from the first device to the second device;
Receiving a response including first pairing data from the second device at the first device;
Storing the first pairing data in a first storage of the first device;
Accessing second pairing data from a second storage of the first device;
Transmitting the second pairing data from the first device to the second device.
前記第1装置から第2装置にクエリを伝送する段階は、前記第1装置と前記第2装置との間のハードウェアインターフェースを介して前記第1装置から第2装置にクエリを伝送する段階を含み、
前記第1装置で前記第2装置から前記応答を受信する段階は、前記第1装置と前記第2装置との間のハードウェアインターフェースを介して前記第1装置で前記第2装置から前記応答を受信する段階を含み、
前記第1装置から前記第2装置に前記第2ペアリングデータを伝送する段階は、前記第1装置と前記第2装置との間のハードウェアインターフェースを介して前記第1装置から前記第2装置に前記第2ペアリングデータを伝送する段階を含むことを特徴とする請求項12に記載の方法。
The transmitting of the query from the first device to the second device may include transmitting the query from the first device to the second device via a hardware interface between the first device and the second device. Including
The step of receiving the response from the second device at the first device includes the step of receiving the response from the second device at the first device via a hardware interface between the first device and the second device. Including receiving,
The transmitting of the second pairing data from the first device to the second device may include transmitting the second pairing data from the first device to the second device via a hardware interface between the first device and the second device. The method of claim 12, further comprising transmitting the second pairing data to the second pairing device.
第1仮想IDによって示されるSSD(Solid State Drive)に第1クエリを伝送する段階と、
前記第1クエリに応答して、前記SSDから固有のSSD ID及び固有のコプロセッサIDを受信する段階と、
第2仮想IDによって示されるコプロセッサに第2クエリを伝送する段階と、
前記第2クエリに応答して、前記コプロセッサから前記固有のSSD ID及び前記固有のコプロセッサIDを受信する段階と、
前記第1仮想IDと前記第2仮想IDとをペアリングする段階と、を有することを特徴とする方法。
Transmitting a first query to an SSD (Solid State Drive) indicated by the first virtual ID;
Receiving a unique SSD ID and a unique coprocessor ID from the SSD in response to the first query;
Transmitting a second query to the coprocessor indicated by the second virtual ID;
Receiving the unique SSD ID and the unique coprocessor ID from the coprocessor in response to the second query;
Pairing the first virtual ID and the second virtual ID.
前記第1仮想IDと前記第2仮想IDとをペアリングする段階は、前記固有のSSD ID及び前記固有のコプロセッサIDを返す前記SSD及び前記コプロセッサの両方に応答して、前記第1仮想IDと前記第2仮想IDとをペアリングする段階を含むことを特徴とする請求項14に記載の方法。   The step of pairing the first virtual ID and the second virtual ID includes responsive to both the SSD and the coprocessor returning the unique SSD ID and the unique coprocessor ID. The method of claim 14, comprising pairing an ID with the second virtual ID. 前記第1仮想IDと前記第2仮想IDとのペアリングに関連するクエリに応答するように動作するAPI(Application Programming Interface)を提供する段階を更に含むことを特徴とする請求項14に記載の方法。   The method of claim 14, further comprising providing an API (Application Programming Interface) that operates to respond to a query related to the pairing of the first virtual ID and the second virtual ID. Method. 前記第1仮想IDに対するペアのためのペアリングのクエリを受信する段階と、
前記第1仮想IDと前記第2仮想IDとのペアリングに応答して前記第2仮想IDを返す段階と、を更に含むことを特徴とする請求項16に記載の方法。
Receiving a pairing query for a pair for the first virtual ID;
The method of claim 16, further comprising: returning the second virtual ID in response to the pairing of the first virtual ID and the second virtual ID.
前記第1仮想IDに対するペアのためのペアリングのクエリを受信する段階は、前記APIを介してアプリケーションから前記第1仮想IDに対するペアのためのペアリングのクエリを受信する段階を含み、
前記第1仮想IDと前記第2仮想IDとのペアリングに応答して前記第2仮想IDを返す段階は、前記第1仮想IDと前記第2仮想IDとのペアリングに応答して前記アプリケーションに前記第2仮想IDを返す段階を含むことを特徴とする請求項17に記載の方法。
Receiving the pairing query for the pair for the first virtual ID includes receiving a pairing query for the pair for the first virtual ID from an application via the API;
The step of returning the second virtual ID in response to the pairing of the first virtual ID and the second virtual ID includes the step of returning the application in response to the pairing of the first virtual ID and the second virtual ID. 18. The method of claim 17, comprising returning the second virtual ID to a second virtual ID.
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
前記ファイルを格納する前記SSDを識別する段階と、
前記ファイルのクエリに応答して前記第1仮想ID及び前記第2仮想IDを返す段階と、を更に含むことを特徴とする請求項16に記載の方法。
Receiving a file query for a pair associated with the file;
Identifying the SSD storing the file;
17. The method of claim 16, further comprising: returning the first virtual ID and the second virtual ID in response to a query for the file.
前記ファイルに関連するペアに対するファイルのクエリを受信する段階は、前記APIを介してアプリケーションから前記ファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
前記ファイルのクエリに応答して前記第1仮想ID及び前記第2仮想IDを返す段階は、前記ファイルのクエリに応答して前記アプリケーションに前記第1仮想ID及び前記第2仮想IDを返す段階と、を含むことを特徴とする請求項19に記載の方法。

Receiving a query for a file for the pair associated with the file includes receiving a query for a file for the pair associated with the file from an application via the API;
Returning the first virtual ID and the second virtual ID in response to the file query includes returning the first virtual ID and the second virtual ID to the application in response to the file query. 20. The method of claim 19, comprising:

JP2019169341A 2018-09-18 2019-09-18 Methods and systems including co-processors and storage devices to identify fpga and ssd pairing in multi-device environment Pending JP2020047277A (en)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US201862733077P 2018-09-18 2018-09-18
US62/733,077 2018-09-18
US201862745261P 2018-10-12 2018-10-12
US62/745,261 2018-10-12
US16/207,080 2018-11-30
US16/207,080 US10635609B2 (en) 2018-03-02 2018-11-30 Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US16/226,629 US10838885B2 (en) 2018-03-02 2018-12-19 Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US16/226,629 2018-12-19
US16/260,087 2019-01-28
US16/260,087 US11860672B2 (en) 2018-03-02 2019-01-28 Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US201962818096P 2019-03-13 2019-03-13
US62/818,096 2019-03-13
US16/435,442 US10990554B2 (en) 2018-03-02 2019-06-07 Mechanism to identify FPGA and SSD pairing in a multi-device environment
US16/435,442 2019-06-07

Publications (1)

Publication Number Publication Date
JP2020047277A true JP2020047277A (en) 2020-03-26

Family

ID=69815233

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019169341A Pending JP2020047277A (en) 2018-09-18 2019-09-18 Methods and systems including co-processors and storage devices to identify fpga and ssd pairing in multi-device environment

Country Status (3)

Country Link
JP (1) JP2020047277A (en)
KR (1) KR20200032654A (en)
CN (1) CN110908715B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102560696B1 (en) * 2022-01-26 2023-07-28 삼성전자주식회사 Storage device performing access authority control and Operating method thereof

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560792B2 (en) * 2010-12-16 2013-10-15 International Business Machines Corporation Synchronous extent migration protocol for paired storage
WO2014005277A1 (en) * 2012-07-03 2014-01-09 Empire Technology Development Llc Resource management in a cloud computing environment
US9311110B2 (en) * 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US9880929B2 (en) * 2014-12-17 2018-01-30 Schneider Electric It Corporation Systems and methods for generating a unique device id

Also Published As

Publication number Publication date
TW202036282A (en) 2020-10-01
CN110908715A (en) 2020-03-24
CN110908715B (en) 2022-03-22
KR20200032654A (en) 2020-03-26

Similar Documents

Publication Publication Date Title
US10990554B2 (en) Mechanism to identify FPGA and SSD pairing in a multi-device environment
US11797181B2 (en) Hardware accessible external memory
US9940123B1 (en) Updating device code through a bus
EP3073384B1 (en) Fork-safe memory allocation from memory-mapped files with anonymous memory behavior
US10560262B2 (en) Information-processing system, information-processing apparatus, management apparatus, and processing method
US8645594B2 (en) Driver-assisted base address register mapping
US20200371700A1 (en) Coordinated allocation of external memory
US11086525B2 (en) Resilient external memory
TW201812596A (en) Self-configuring baseboard management controller (BMC)
US10114763B2 (en) Fork-safe memory allocation from memory-mapped files with anonymous memory behavior
US10346071B2 (en) Validating firmware for data storage devices
KR20180012181A (en) Self-Configuring SSD Multi-Protocol Support in Host-less Environment
TW201714076A (en) Electronic system with interface control mechanism and method of operation thereof
US11775183B2 (en) Storage device and operation method thereof
US11544205B2 (en) Peer storage devices sharing host control data
JP2020047277A (en) Methods and systems including co-processors and storage devices to identify fpga and ssd pairing in multi-device environment
JP5476381B2 (en) Improved I / O control and efficiency in encrypted file systems
TWI835837B (en) Pairing system and pairing method of multi-device
Waschke Storage Standards: Progress in the Datacenter

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240416