JP7370801B2 - System that supports erasure code data protection function with embedded PCIe switch inside FPGA + SSD - Google Patents

System that supports erasure code data protection function with embedded PCIe switch inside FPGA + SSD Download PDF

Info

Publication number
JP7370801B2
JP7370801B2 JP2019188052A JP2019188052A JP7370801B2 JP 7370801 B2 JP7370801 B2 JP 7370801B2 JP 2019188052 A JP2019188052 A JP 2019188052A JP 2019188052 A JP2019188052 A JP 2019188052A JP 7370801 B2 JP7370801 B2 JP 7370801B2
Authority
JP
Japan
Prior art keywords
erasure coding
pcie switch
coding logic
data
logic
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.)
Active
Application number
JP2019188052A
Other languages
Japanese (ja)
Other versions
JP2020061149A (en
JP2020061149A5 (en
Inventor
ポール オラリグ サンポン
ワーリー フレッド
ピー. ピント オスカー
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
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2020061149A publication Critical patent/JP2020061149A/en
Publication of JP2020061149A5 publication Critical patent/JP2020061149A5/ja
Application granted granted Critical
Publication of JP7370801B2 publication Critical patent/JP7370801B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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
    • G06F13/1678Details of memory controller using bus width
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Lock And Its Accessories (AREA)

Description

本発明は、コンピュータシステムに係り、より詳しくは、PCIeスイッチ内のイレイジャーコーディングに関する。 TECHNICAL FIELD The present invention relates to computer systems, and more particularly, to erasure coding within PCIe switches.

現在、RAID(Redundant Array of Independent Disks)保護機能を有する大部分のNVMe(Non-Volatile Memory Express)ベースのSSD(Solid State Drives)は、外部PCIe(Peripheral Component Interconnect Express)AIC(Add-In-Card)を介して行われる。ホストCPUとAIC RAIDコントローラとの間のバスの帯域幅を最適化するため、バスは、一般的にX16 PCIeレーンをサポートする。しかし、PCIeカードの標準フォームファクタ(form factor)の物理的な限界のため、現在、NVMe SSDに対し好まれるコネクタである少数のU.2コネクタだけが各AIC RAIDコントローラによってサポートされる。つまり、普通、正確には2つ又は4つのU.2コネクタである。 Currently, most NVMe (Non-Volatile Memory Express)-based SSDs (Solid State Drives) with RAID (Redundant Array of Independent Disks) protection function are heral Component Interconnect Express) AIC (Add-In-Card ). To optimize the bus bandwidth between the host CPU and the AIC RAID controller, the bus typically supports X16 PCIe lanes. However, due to the physical limitations of the standard form factor of PCIe cards, few U.S. Only 2 connectors are supported by each AIC RAID controller. That is, usually two or four U.S. 2 connectors.

2Uシャーシ(chassis)内に24個までのNVMe SSDをサポートするためには、6つのAIC RAIDコントローラが必要なので、6つの異なるRAIDドメインが要求される。この構成は、6つのRAIDドメインを管理するためのコストと複雑さを付加する。なお、各AIC RAIDコントローラのコストは、現在、約400ドルである。したがって、NVMe SSDのコストを考慮する前に、単一の2Uシャーシへの全体のRAIDソリューションは、AIC RAIDコントローラ向けにのみ2400ドルを超えている。 To support up to 24 NVMe SSDs in a 2U chassis, six AIC RAID controllers are required, so six different RAID domains are required. This configuration adds cost and complexity to managing six RAID domains. Note that each AIC RAID controller currently costs approximately $400. Therefore, before considering the cost of NVMe SSD, the entire RAID solution in a single 2U chassis is over $2400 only for the AIC RAID controller.

大規模なデータセットに対するコスト(費用)対効果の高いRAIDデータ保護の不足のため、大規模なビジネス市場でのNVMe SSDの採択は制限的となった。ソフトウェアRAIDソリューションは、比較的小規模なデータセットにおいては使用できるが、ビッグデータでは使用できない。 The lack of cost-effective RAID data protection for large datasets has limited the adoption of NVMe SSDs in large business markets. Software RAID solutions can be used with relatively small data sets, but not with big data.

AIC RAIDコントローラを使用するとき、また、別の問題点がある。 There are also other problems when using AIC RAID controllers.

1)前記したように、シャーシ内に複数のRAIDドメインを有すれば、管理の複雑さが増加する。 1) As mentioned above, having multiple RAID domains within a chassis increases management complexity.

2)RAIDドメイン管理の複雑さの結果として、シャーシは、単一のRAIDドメイン(これは好ましい)を有さない。 2) As a result of the complexity of RAID domain management, the chassis does not have a single RAID domain (which is preferred).

3)CPU(Central Processing Unit)は、多数のPCIeレーンをサポートする必要がある。つまり、(AIC RAIDコントローラ当たり16個のPCIeレーン)×(シャーシ当たり6つのAIC RAIDコントローラ)=(AIC RAIDコントローラについてのみ96個のPCIeレーン)である。高度な及びはるかに高価なCPUだけが、現在としては、このような多くのPCIeレーンをサポートする。 3) The CPU (Central Processing Unit) needs to support a large number of PCIe lanes. That is, (16 PCIe lanes per AIC RAID controller) x (6 AIC RAID controllers per chassis) = (96 PCIe lanes only for AIC RAID controllers). Only advanced and much more expensive CPUs currently support such a large number of PCIe lanes.

4)各AIC RAIDコントローラは、潜在的に25ワット消費するため、6つのAIC RAIDコントローラは、シャーシ当たり150ワットまでの電力消費量を増加させる。 4) Each AIC RAID controller potentially consumes 25 watts, so 6 AIC RAID controllers increases power consumption to 150 watts per chassis.

5)シャーシは、いくつかのPCIeスロットだけ有する傾向があり、追加可能なAIC RAIDコントローラの数を潜在的に制限し、シャーシからRAID保護の対象となるNVMe SSDの数を間接的に減らす。 5) Chassis tend to have only a few PCIe slots, potentially limiting the number of AIC RAID controllers that can be added and indirectly reducing the number of NVMe SSDs eligible for RAID protection from the chassis.

6)ソフトウェアRAIDソリューションは、比較的少ない数のRAIDレベルをサポートする傾向があり、CPU上のオーバーヘッドを増加させる傾向がある。 6) Software RAID solutions tend to support a relatively small number of RAID levels and tend to increase overhead on the CPU.

7)ネットワークを介して使用されるとき、SSDのアクセスは、ネットワークを介してデータのアクセスを伝送するのに必要な時間のために遅くなる可能性がある。なお、一部の例では、ネットワークストレージは、ソフトウェアRAIDの具現を要求して、CPU上のオーバーヘッドを増加させることができる。 7) When used over a network, SSD access can be slow due to the time required to transmit the data access over the network. Note that in some examples, network storage may require implementation of software RAID, increasing overhead on the CPU.

AIC RAIDコントローラ及びソフトウェアRAIDソリューションによって課せられる制限なしに、数多くのストレージ装置を利用して、イレイジャーコーディングをサポートできる方法が必要である。 What is needed is a way to utilize a large number of storage devices to support erasure coding without the limitations imposed by AIC RAID controllers and software RAID solutions.

米国登録特許第9223734B2号公報US Registered Patent No. 9223734B2 米国登録特許第9298648B2号公報US Registered Patent No. 9298648B2 米国公開特許第20170052916A1号公報US Published Patent No. 20170052916A1 米国公開特許第20170322898A1号公報US Published Patent No. 20170322898A1

本発明は、上述した技術的な課題を解決するためのもので、本発明の目的は、イレイジャーコードを用いてデータを保護するシステムを提供することにある。 The present invention is intended to solve the above-mentioned technical problem, and an object of the present invention is to provide a system that protects data using erasure codes.

本発明の一実施形態に係るシステムは、NVMe(Non-Volatile Memory Express)SSD(Solid State Drive)、NVMe SSDをサポートする一つ以上の機能を具現するFPGA、及びPCIe(Peripheral Component Interconnect Express)スイッチを備える。NVMe SSDをサポートする一つ以上の機能は、データ高速化、データ重複排除、データインテグリティ、データ暗号化、及びデータ圧縮を含む集合から獲得される。PCIeスイッチは、FPGA及びNVMe SSDと通信することができる。 A system according to an embodiment of the present invention includes a non-volatile memory express (NVMe) solid state drive (SSD), an FPGA that implements one or more functions supporting the NVMe SSD, and a peripheral component interface (PCIe). rconnect Express) switch Equipped with One or more features that support NVMe SSDs are taken from a collection that includes data acceleration, data deduplication, data integrity, data encryption, and data compression. PCIe switches can communicate with FPGAs and NVMe SSDs.

本発明の他の実施形態に係るシステムは、NVMe(Non-Volatile Memory Express)SSD(Solid State Drive)と、第1のFPGA部分、及び第の2FPGA部分を含むFPGA(Field Programmable Gate Array)と、を有するシステムを提供する。第1のFPGA部分は、NVMe SSDをサポートする一つ以上の機能を具現する。第2のFPGA部分は、PCIe(Peripheral Component Interconnect Express)スイッチを具現する。NVMe SSDをサポートする前記一つ以上の機能は、データアクセラレーション、データ重複排除、データインテグリティ、データ暗号化及びデータ圧縮を含む集合から獲得される。PCIeスイッチは、FPGA及びNVMe SSDと通信することができる。FPGA及びNVMe SSDは、共通のハウジング内部に有り得る。 A system according to another embodiment of the present invention includes an NVMe (Non-Volatile Memory Express) SSD (Solid State Drive), an FPGA (Field Programmable Gate Arra) including a first FPGA part, and a second FPGA part. y) and Provides a system with The first FPGA portion implements one or more functions that support NVMe SSDs. The second FPGA part implements a Peripheral Component Interconnect Express (PCIe) switch. The one or more features supporting NVMe SSD are taken from a set including data acceleration, data deduplication, data integrity, data encryption, and data compression. PCIe switches can communicate with FPGAs and NVMe SSDs. The FPGA and NVMe SSD can be inside a common housing.

本発明の他の実施形態に係るシステムは、NVMe(Non-Volatile Memory Express)SSD(Solid State Drive)と、イレイジャーコーディングロジックを含むPCIe(Peripheral Component Interconnect Express)スイッチと、を備える。PCIeスイッチは、PCIeスイッチがプロセッサと通信できるようにする外部コネクタ、PCIeスイッチがNVMe SSDと通信できるようにする少なくとも一つのコネクタ、PCIeスイッチを構成するPPU(Power Processing Unit)とNVMe SSDに格納されたデータにイレイジャーコーディング方式を適用するための回路を含む、イレイジャーコーディングコントローラを有する。 A system according to another embodiment of the present invention includes a NVMe (Non-Volatile Memory Express) SSD (Solid State Drive) and a PCIe (Peripheral Component Interconnect Express) including erasure coding logic. ) switch. The PCIe switch includes an external connector that allows the PCIe switch to communicate with the processor, at least one connector that allows the PCIe switch to communicate with the NVMe SSD, a PPU (Power Processing Unit) that makes up the PCIe switch, and an external connector that allows the PCIe switch to communicate with the NVMe SSD. and an erasure coding controller including circuitry for applying an erasure coding scheme to the data.

本発明の実施形態によると、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用することは、イレイジャーコーディングをストレージ装置の近くに移動させるので、データの移動に必要な時間を減少させることができる。さらに、イレイジャーコーディングコントローラをPCIeスイッチとともに配置することにより、高価なRAID add-in cardが不要になり、複数のシャーシにまたがり、より大きなアレイを使用できる。 According to embodiments of the present invention, using a PCIe switch that includes Look-Aside erasure coding logic can reduce the time required to move data because it moves erasure coding closer to the storage device. Furthermore, by co-locating the erasure coding controller with a PCIe switch, expensive RAID add-in cards are not required and larger arrays can be used across multiple chassis.

本発明の一実施形態に係るLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチを含むマシンを示す図である。1 illustrates a machine including a PCIe switch with Look-Aside erasure coding logic in accordance with one embodiment of the present invention; FIG. 図1のマシンの追加の詳細を示す図である。2 shows additional details of the machine of FIG. 1; FIG. 図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチをストレージ装置に連結するミッドプレーン及びスイッチボードを含む、図1のマシンの追加の詳細を示す図である。2 illustrates additional details of the machine of FIG. 1, including a midplane and switch board that couples a PCIe switch containing the Look-Aside erasure coding logic of FIG. 1 to a storage device; FIG. 相異なるイレイジャーコーディング方式を達成するための図3のストレージ装置を示す図である。4 is a diagram illustrating the storage device of FIG. 3 for achieving different erasure coding schemes; FIG. 図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチの詳細を示す図である。2 is a diagram illustrating details of a PCIe switch including Look-Aside erasure coding logic of FIG. 1; FIG. 本発明の他の実施形態に基づいて、Look-Throughイレイジャーコーディングロジックを含むPCIeスイッチの詳細を示す図である。FIG. 3 is a diagram illustrating details of a PCIe switch including look-through erasure coding logic in accordance with another embodiment of the present invention. 本発明の実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第1トポロジを示す図である。FIG. 2 illustrates a first topology for using a PCIe switch including the look-aside erasure coding logic of FIG. 1 in accordance with an embodiment of the present invention. 本発明の他の実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第2トポロジを示す図である。2 illustrates a second topology for using a PCIe switch including the Look-Aside erasure coding logic of FIG. 1 in accordance with another embodiment of the invention; FIG. 本発明の他の実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第3トポロジを示す図である。2 illustrates a third topology for using a PCIe switch including the Look-Aside erasure coding logic of FIG. 1 in accordance with another embodiment of the invention; FIG. 本発明の他の実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第4トポロジを示す図である。2 illustrates a fourth topology for using a PCIe switch including the Look-Aside erasure coding logic of FIG. 1 in accordance with another embodiment of the present invention. FIG. 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。2 is a flowchart of an example procedure for a PCIe switch that includes the look-aside erasure coding logic of FIG. 1 to support erasure coding schemes, in accordance with one embodiment of the present invention. 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。2 is a flowchart of an example procedure for a PCIe switch that includes the look-aside erasure coding logic of FIG. 1 to support erasure coding schemes, in accordance with one embodiment of the present invention. 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。2 is a flowchart of an example procedure for a PCIe switch that includes the look-aside erasure coding logic of FIG. 1 to support erasure coding schemes, in accordance with one embodiment of the present invention. 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。2 is a flowchart of an example procedure for a PCIe switch that includes the look-aside erasure coding logic of FIG. 1 to support erasure coding schemes, in accordance with one embodiment of the present invention. 本発明の実施形態に基づいて初期化を遂行するために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチの例としての手順を示すフローチャートである。2 is a flowchart illustrating an example procedure for a PCIe switch including the look-aside erasure coding logic of FIG. 1 to perform initialization in accordance with an embodiment of the present invention. 本発明の実施形態に基づいて初期化を遂行するために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチの例としての手順を示すフローチャートである。2 is a flowchart illustrating an example procedure for a PCIe switch including the look-aside erasure coding logic of FIG. 1 to perform initialization in accordance with an embodiment of the present invention. 本発明の一実施形態に基づいて、イレイジャーコーディング方式に新しいストレージ装置を含めるために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。2 is a flowchart of an example procedure for a PCIe switch that includes the look-aside erasure coding logic of FIG. 1 to include a new storage device in an erasure coding scheme, in accordance with one embodiment of the present invention. 本発明の一実施形態に基づいて、故障したストレージ装置を処理するための、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。2 is a flowchart of an example procedure for a PCIe switch including the look-aside erasure coding logic of FIG. 1 to handle a failed storage device, in accordance with one embodiment of the present invention.

本発明の技術的思想の実施形態が参照され、これらの例が添付した図面に図示される。後述する詳細な説明では、多様な特定の詳細を、本発明の技術的思想の十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、このような特定の詳細なしでも、本発明の技術的思想を具現することができる。他の例として、よく知られている方法、手順、構成要素、回路及びネットワークは実施形態を不必要に曖昧にしないために詳細に説明しない。 Reference will now be made to embodiments of the inventive idea, examples of which are illustrated in the accompanying drawings. In the detailed description that follows, various specific details are provided to facilitate a thorough understanding of the technical concept of the invention. However, a person having ordinary skill in this field can implement the technical idea of the present invention without such specific details. In other instances, well-known methods, procedures, components, circuits, and networks are not described in detail so as not to unnecessarily obscure the embodiments.

本明細書において、第1及び第2などの用語を多様な構成要素を説明するために使用するが、これらの構成要素は、これらの用語によって限定されないことが理解されるだろう。前記用語は、1つの構成要素を他のものと区別するために使用する。例えば、第1モジュールは、第2モジュールと命名されることができ、同様に、本発明の概念の範囲を逸脱せずに、第2モジュールは、第1モジュールと命名されることができる。 Although terms such as first and second are used herein to describe various components, it will be understood that these components are not limited by these terms. These terms are used to distinguish one component from another. For example, a first module can be named a second module, and likewise a second module can be named a first module without departing from the scope of the inventive concept.

本発明の技術的思想の説明で使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定しない。本発明の技術的思想の説明及び添付した請求項において使用するように、文脈上明らかに別の意味を示していると判定されない限り、単数表現は複数表現も、また含まれている。「及び/又は」の用語は、一つ以上の多くの関連項目の任意かつすべての可能な組合せを含む。「含む(comprise)」及び/又は「含む(comprising)」の用語を、詳細な説明で使用したときに、記載した特徴、整数、段階、動作、エレメント、及び/又は構成要素の存在を明示し、一つ以上の多くの他の特徴、整数、段階、動作、エレメント、構成要素、及び/又はそれらのグループの存在又は追加を排除しない。図面の構成要素とは、実際の比率に不可欠で比例していない。 The terms used in the description of the inventive concept are used only for the purpose of describing particular embodiments and do not limit the inventive concept. As used in the description of the technical concept of the invention and the appended claims, the singular expressions also include the plural expressions unless the context clearly dictates otherwise. The term "and/or" includes any and all possible combinations of one or more of the associated items. The words "comprise" and/or "comprising", when used in the detailed description, indicate the presence of the recited features, integers, steps, acts, elements and/or components. , does not exclude the presence or addition of one or more other features, integers, steps, acts, elements, components and/or groups thereof. The components in the drawings are not necessarily to scale.

FPGA(Field Programmable Gate Arrays)は、必要な場合、RAID(Redundant Array of Independent Disks)/イレイジャーコードパリティの生成とデータの検索を行える十分なインテリジェンス、コンピューティングリソース及び高速入出力(I/O)連結性を有する。FPGA+SSD(Solid State Drives)は、一つ以上のSSD、GPU(Graphical Processing Units)、TPU(Tensor Processing Units)などのより多くの補助コントローラと/プロセッサをサポートするために、エンベデッドPCIe(Peripheral Component Interconnect Express )スイッチを要求することができる。多数のコプロセッサはまた、より多くのNANDフラッシュメモリのチャンネルを要求する。 FPGAs (Field Programmable Gate Arrays) have sufficient intelligence, computing resources, and high-speed input/output (I/O) connectivity to generate RAID (Redundant Array of Independent Disks)/erasure code parity and retrieve data when required. have sex. FPGA+SSD (Solid State Drives) is an embedded PCIe (P peripheral component interconnect express ) can request a switch. A large number of coprocessors also requires more channels of NAND flash memory.

本発明の実施形態は、FPGAの内部のPCIeスイッチ内のイレイジャーコードをサポートする。本発明の実施形態はまた、BMC(Baseboard Management Controllers)を介してユーザーがリモートで(FPGA内で)RAIDエンジンを構成できるようにする。
PCIe(制御プレーンで使用される)、又はSMBus(System Management Bus)のような、これらの標準的なインターフェースは、ユーザーがRoC(RAID-on-a-Chip)やイレイジャーコードコントローラを事前構成するために使用される。この方法でストレージ装置を構成できることは、コンピューティングリソースをリースするユーザーに有用である。つまり、ストレージの使用が終わったら、ユーザーは、次のユーザーが同じコンピューティングリソースを使用する前に、データを迅速に破壊したがる。この場合には、BMCは、多数のFPGA+SSDの内部のすべてのエンベデッドPCIeスイッチに削除コマンドを送ることができる。FPGAのRoC/イレイジャーコードコントローラは削除コマンドを受信すると、コマンドLBA(Logical Block Address)の範囲により指定されたデータとパリティデータをすべて削除することができる。
Embodiments of the present invention support erasure code in PCIe switches internal to FPGAs. Embodiments of the present invention also allow users to configure the RAID engine remotely (within the FPGA) via Baseboard Management Controllers (BMCs).
These standard interfaces, such as PCIe (used in the control plane) or SMBus (System Management Bus), allow users to preconfigure RoC (RAID-on-a-Chip) and erasure code controllers. used for. The ability to configure storage devices in this manner is useful to users who lease computing resources. In other words, once storage is finished with use, users want to quickly destroy the data before the next user uses the same computing resources. In this case, the BMC can send a delete command to all embedded PCIe switches inside multiple FPGA+SSDs. When the RoC/erasure code controller of the FPGA receives the deletion command, it can delete all the data and parity data specified by the range of the command LBA (Logical Block Address).

今日では、PCIeスイッチは、一つ以上のスイッチがマネージャーにさらされる仮想スイッチ又はグループ化を露出させる。このような構成は、ネットワーク、CPU-GPU、FPGA、これらの仮想ドメインの背後にあるストレージがグループ化される場合に、仮想化された環境で有用である。このような仮想グループは、一実施形態で、仮想化された環境に対するユーザーグループに露出されるか、又はRAID 10、RAID 50、RAID 60などのRAIDグループ化に使用されるRAIDサブグループを生成することにより、ストレージに適用される。このような階層化されたRAIDグループは、より大きなRAIDソリューションを作成するために、小規模のグループを作成し、追加のRAID層を適用する。仮想スイッチは、より小さなRAIDグループを管理する一方、メインスイッチは、全体的なRAID構成を管理する。 Today, PCIe switches expose virtual switches or groupings where one or more switches are exposed to a manager. Such a configuration is useful in virtualized environments when networks, CPU-GPUs, FPGAs, and storage behind these virtual domains are grouped together. Such virtual groups, in one embodiment, generate RAID subgroups that are exposed to user groups for the virtualized environment or used for RAID groupings such as RAID 10, RAID 50, RAID 60, etc. This applies to storage. Such layered RAID groups create smaller groups and apply additional RAID layers to create larger RAID solutions. Virtual switches manage smaller RAID groups, while main switches manage the overall RAID configuration.

データ保護方式がイネーブルされ、管理がストレージユニットの近くに維持されるにつれて、このソリューションは、エンタープライズ及びデータ中心の環境で大きな差別化要因である利点を提供する。本発明の実施形態は、低消費電力でより高い密度と性能を提供する。 As data protection schemes are enabled and management is kept close to the storage unit, this solution offers benefits that are a major differentiator in enterprise and data-centric environments. Embodiments of the invention provide higher density and performance with lower power consumption.

このソリューションは、ホストとSSDとの間のデータパスにある、統合されたRoC又はイレイジャーコードコントローラを含むエンベデッド一つのPCIeスイッチで構成される。PCIeスイッチ+RoC構成要素は、構成及び制御のためBMCによって管理されることができ、新しいユーザーらに提供する前に、特定の構成に対するインターフェースをソフトウェアに露出させることができる。 This solution consists of an embedded single PCIe switch with an integrated RoC or erasure code controller in the data path between the host and the SSD. The PCIe switch+RoC components can be managed by the BMC for configuration and control, and interfaces for specific configurations can be exposed to software before provisioning to new users.

このイレイジャーコード/RAIDモードで動作している場合、エンベデッドPCIeスイッチから出ていったり、それに入ったりするすべてのNVMe(Non-Volatile Memory Express)又はNVMe-oF(NVMe over Fabric)のトラフィックは、RoC又はイレイジャーコードコントローラによってスヌーピング(snooping)されることができる(Look-Aside RoC又はイレイジャーコードコントローラともいう)。RoC又はイレイジャーコードコントローラは、トラフィック内のデータがそれのローカルキャッシュでキャッシュヒット(cache hit)になるか否かを決定することができる。キャッシュヒットがあれば、トランザクション(読み取り又は書き込み)を、適切なSSDに伝達する必要がない。要求された読み出しデータは、RoCのキャッシュによって直接提供される。書き込みデータは、RoCのローカルキャッシュに直接更新され、「修正された」又は「ダーティ」データとして表示されることができる。 When operating in this erasure code/RAID mode, all NVMe (Non-Volatile Memory Express) or NVMe-oF (NVMe over Fabric) traffic exiting or entering the embedded PCIe switch is RoC Or it can be snooped by an erasure code controller (also referred to as Look-Aside RoC or erasure code controller). The RoC or erasure code controller can determine whether data in the traffic results in a cache hit in its local cache. If there is a cache hit, there is no need to propagate the transaction (read or write) to the appropriate SSD. The requested read data is served directly by the RoC's cache. Write data is updated directly to the RoC's local cache and can be displayed as "modified" or "dirty" data.

SSDへの場合は、パリティは、連結されたSSDの間に分散される。たとえば、RAID 4が選択されると、最後のSSDがパリティのみが格納するために使用され、残りのSSDは、データの格納に使用される。 In the case of SSDs, parity is distributed among the concatenated SSDs. For example, if RAID 4 is selected, the last SSD is used to store only parity and the remaining SSDs are used to store data.

ホストとSSD装置と間に外部のPCIeスイッチが存在することにより、仮想入出力アドレスがサポートされる。この場合、ホストPCIeスイッチの一部である1次RoCが、すべてのSSDのアドレスを仮想化することができる。つまり、アドレスや装置は、ホストオペレーティングシステム(Opreating Systme、OS)で見えない。本発明の実施形態で、ピア(peers)の少なくとも2つのSSDの間のピアツーピアのトランザクションが許容されてサポートされる。この選択は、一つ以上のSSDにわたってストライピング(striping)してSSDの冗長性及び/又は可用性のいくつかのフォームを向上させることができる。このモードでは、FPGA内にエンベデッドされたRoC又はイレイジャーコードコントローラ(存在する場合)が、ディセーブル(disable)される。イネーブル(enable)された唯一のRoC/イレイジャーコードコントローラは、ホストPCIeスイッチ内に有る。 Virtual I/O addresses are supported by the presence of an external PCIe switch between the host and the SSD device. In this case, the primary RoC, which is part of the host PCIe switch, can virtualize the addresses of all SSDs. That is, addresses and devices are not visible to the host operating system (OS). In embodiments of the present invention, peer-to-peer transactions between at least two SSDs of peers are allowed and supported. This option can be striped across one or more SSDs to improve some form of SSD redundancy and/or availability. In this mode, the RoC or erasure code controller (if present) embedded within the FPGA is disabled. The only enabled RoC/erasure code controller is in the host PCIe switch.

ストレージ装置が、単一の装置モードで動作すると、入ってくるすべてのNVMe/PCIeトラフィックは、要請されたデータを有するSSDに伝達することができる。 When the storage device operates in single device mode, all incoming NVMe/PCIe traffic can be delivered to the SSD with the requested data.

ペアリング(pairing)モードがイネーブルされると、RoC/イレイジャーコードコントローラは、要請されたデータのアドレスがそれ自体のBARドメインに属しているか否かを決定する。この場合、トランザクションは、ローカルRoCによって完了される。書き込みトランザクションについての場合、(いくつかのエンベデッドされたSRAMやDRAMを使用する)、掲示された(posted)書き込みバッファ又は書き込みキャッシュが使用される。書き込みキャッシュヒットがある場合(以前の書き込みが発生し、データがまだ書き込みキャッシュバッファに格納されている場合)、処理は書き込みキャッシュポリシーによって異なる。たとえば、キャッシュポリシーが後記入(write-back)であれば、書き込みコマンドは、完了されることができ、RoCキャッシュによって終了されることができる。キャッシュポリシーが連続ライトスルー(write-through)であれば、書き込みデータがドライブに正常に伝送される場合、書き込みコマンドが完了されることができる。この場合、RoCは、書き込みデータがローカルキャッシュに正常に更新されると、すぐにホストへの書き込みコマンドを終了することができる。 When pairing mode is enabled, the RoC/Erasure Code Controller determines whether the address of the requested data belongs to its own BAR domain. In this case, the transaction is completed by the local RoC. For write transactions, a posted write buffer or write cache (using some embedded SRAM or DRAM) is used. If there is a write cache hit (a previous write occurred and the data is still stored in the write cache buffer), the handling depends on the write cache policy. For example, if the cache policy is write-back, the write command can be completed and terminated by the RoC cache. If the cache policy is continuous write-through, the write command can be completed if the write data is successfully transmitted to the drive. In this case, the RoC can finish the write command to the host as soon as the write data is successfully updated to the local cache.

RoCは、それをRoCが要求する多数の装置を仮想化することができ、多数の装置をデータや装置の障害に対して保護する単一の装置又はより少ない数の装置として示される。データ保護方式は、データの損失のある装置が存在する場合は、他の装置からデータが再構成されるように、自然に複数のグループに分散されることができる。RAID及びイレイジャーコーディングECは、これらの損失を保護するために分散アルゴリズムを使用する、一般的に採択されるデータ保護である。 The RoC can virtualize a large number of devices that the RoC requires, represented as a single device or a smaller number of devices, protecting the large number of devices against data and device failures. Data protection schemes can be naturally distributed into groups so that if there is a device with data loss, the data can be reconstructed from other devices. RAID and erasure coding EC are commonly adopted data protection methods that use distributed algorithms to protect against these losses.

RoCで装置を仮想化するためには、装置がRoCで終了されることができ、ホストからは見えない可能性がある。つまり、PCIeスイッチは、すべての既知の装置に連結され、RoCは、スイッチに連結される。装置を管理するためには、RoCは、PCIeスイッチを介して個々の装置を検出して構成する。また、RoCは、基本/出荷時モードで通過され、ホストソフトウェアがRoCを構成させる。ホストソフトウェアは、PCIeスイッチ+RoCハードウェアとともに動作するように特別に設計される。一度設定すると、RoCは、装置を終了し、装置がホストから見えないようにする。 To virtualize a device with RoC, the device can be terminated with RoC and may not be visible to the host. That is, the PCIe switch is coupled to all known devices and the RoC is coupled to the switch. To manage devices, RoC discovers and configures individual devices via PCIe switches. The RoC is also passed through in basic/factory mode and the host software configures the RoC. The host software is specifically designed to work with the PCIe switch + RoC hardware. Once configured, the RoC terminates the device and makes it invisible to the host.

PCIeスイッチ+RoCは、RAIDやECモードに対して多様な方法で構成される。より多くの装置をサポートするために、より大きなファンアウト構成を生成するために、付加的なPCIeスイッチのダウンストリームを有し得る。付加的に、1つ以上のこれらのハードウェアの組合せが、より大きな設定を形成するために、共に関連付けられる。たとえば、2つのPCIeスイッチ+RoCが連携して、代替構成を形成することができる。または、このような2つのPCIeスイッチ+RoCが別途動作する。 The PCIe switch+RoC can be configured in various ways for RAID and EC modes. It may have additional PCIe switches downstream to support more devices and create larger fan-out configurations. Additionally, combinations of one or more of these hardware may be associated together to form larger configurations. For example, two PCIe switches + RoC can work together to form an alternative configuration. Alternatively, such two PCIe switches + RoC operate separately.

PCIeスイッチ+RoCが別途動作する場合には、各RoC及びPCIeスイッチの組合せがホストによって別の装置にインスタンス化される。ここにあるホストは、RoCによって仮想化されたすべてのSSDを見ることができる標準のOSドライバを有する。たとえば、6つのSSDは、PCIeスイッチの下に装着され、1つのSSDは、RoCによってホストにさらされると仮定しよう。第2RoC及びPCIeスイッチの組合せは、ホストに類似の構成を露出できる。2つのSSDがすべてのRoCコントローラ装置(それぞれ一つずつ)についてのホストによって探索される。各RoCコントローラは、露出された各SSDに対し別の装置空間を露出させることができる。この露出されたSSDとその背後にあるサポートするすべての装置は、ホストによって見られない。RoCは、PCIeスイッチを介して、ハードウェアの入出力パスを管理する。 If the PCIe switch+RoC operates separately, each RoC and PCIe switch combination is instantiated into a separate device by the host. The host here has standard OS drivers that can see all SSDs virtualized by RoC. For example, let's assume 6 SSDs are installed under a PCIe switch and 1 SSD is exposed to the host by RoC. The second RoC and PCIe switch combination can expose a similar configuration to the host. Two SSDs are discovered by the host for every RoC controller device (one for each). Each RoC controller can expose a separate device space for each exposed SSD. This exposed SSD and all supporting devices behind it are not visible to the host. RoC manages hardware input/output paths via PCIe switches.

この方法は、アクティブ・パッシブ(active-passive)の設定で使用される。ここで、第2コントローラは、第1コントローラのパスが失敗した場合のバックアップパスである。ホストは、ここで、第1コントローラだけ能動的に使用し、第2のRoCコントローラには、入出力(I/O)が伝送されない。アクティブ・パッシブ設定が使用されると、2つのRoCコントローラは、データを内部的に複製することができる。これは、RAID1データ保護の設定でのように、第1アクティブコントローラがすべての書き込みを第2のRoCコントローラに伝送することによって行われる。 This method is used in an active-passive setting. Here, the second controller is a backup path in case the first controller path fails. The host now actively uses only the first controller, and no input/output (I/O) is transmitted to the second RoC controller. When an active-passive configuration is used, the two RoC controllers can internally replicate data. This is done by the first active controller transmitting all writes to the second RoC controller, as in a RAID1 data protection setup.

第2のRoC及びPCIeスイッチがその背後にある、それ自体のSSDを有さず、ただ、バックアップコントローラのパスである第2アクティブ・パッシブ設定を有し得る。この場合に、二つのRoCコントローラが同じSSDのセットを参照するため、二つのRoCコントローラの間に入出力(I/O)が伝送されない可能性がある。これが標準的なアクティブ・パッシブ設定である。 The second RoC and PCIe switch may have a second active-passive configuration with no SSD of its own behind it, just a path to a backup controller. In this case, since the two RoC controllers refer to the same set of SSDs, input/output (I/O) may not be transmitted between the two RoC controllers. This is a standard active-passive setup.

各RoCの背後にあるSSDは、また互いに調整していない可能性があり、この場合、2つのSSDは、それらの間で共有される保護なしの別のSSDとして扱われる。 The SSDs behind each RoC may also be uncoordinated with each other, in which case the two SSDs are treated as separate SSDs with no protection shared between them.

また、別の使用法で、両方のパスのすべてをアクティブ・アクティブ設定で使用される。この設定は、負荷バランスの目的で使用される。ここで、ホストは、特殊なソフトウェア層が入出力作業負荷を分散するために使用される方法で両方のパスすべてを使用する。2つのRoCコントローラは、SSDの両方の同期化状態に維持するために、それらの間の書き込みを調整する。つまり、各RoCコントローラの各SSDは、RAID1の設定でのような同一のデータが含まれる。 Another use is for both paths to be used in an all-active-active configuration. This setting is used for load balancing purposes. Here, the host uses all of both paths in such a way that special software layers are used to distribute the I/O workload. The two RoC controllers coordinate writes between them to keep both of the SSDs in a synchronized state. That is, each SSD of each RoC controller contains the same data as in the RAID1 setting.

別の構成で、2つのRoCコントローラは、カスタムの設定でそれらの入出力を分散させる方式で通信する。ここで、1つのRoCコントローラのみがホストによって使用される。他のRoCコントローラは、第1のRoCコントローラに連結される。第1のRoCコントローラは、1つ以上の仮想NVMe SSDをホストにさらすことができる。2つのRoCは、それらの間に奇数及び偶数のLBA空間を分割するため設定される。NVMeは、装置側からのデータのためのプルモデル(pull model)を使用するため、コマンドのみが、ホストにより第1RoCコントローラによって露出されたSSDに伝送される。RoCコントローラは、それのサイドチャネル連結を介して第2のRoCコントローラにメッセージのコピーを伝送する。RoCコントローラは、奇数又は偶数のみのLBA、ストライプ、区域などをサービスするように設定される。この設定は、ホストから管理される必要がない内部的な負荷バランスを提供し、RoC及びPCIeスイッチの組合せによって透明に管理される。個別のRoCコントローラは、奇数又は偶数のLBA範囲だけを処理することができ、ホストバッファについての要請を満足させることができる。二つのRoCコントローラは、ホストにアクセスできるため、それらは、それらの奇数又は偶数のペアについてのデータを満たせる。 In another configuration, two RoC controllers communicate in a manner that distributes their inputs and outputs with a custom configuration. Here, only one RoC controller is used by the host. Other RoC controllers are coupled to the first RoC controller. The first RoC controller can expose one or more virtual NVMe SSDs to the host. Two RoCs are configured to divide the odd and even LBA space between them. Since NVMe uses a pull model for data from the device side, only commands are transmitted by the host to the SSD exposed by the first RoC controller. The RoC controller transmits a copy of the message to the second RoC controller via its side channel connection. The RoC controller is configured to service only odd or even LBAs, stripes, areas, etc. This configuration provides internal load balancing that does not need to be managed from the host and is managed transparently by a combination of RoC and PCIe switches. A separate RoC controller can handle only odd or even LBA ranges and satisfy the host buffer requirements. Since the two RoC controllers have access to the host, they can fill in the data for their odd or even pair.

例えば、ホストは、4つの連続したLBA(0~3)を読み取るためのコマンドを第1のRoCコントローラに伝送でき、コピーを第2のRoCコントローラに伝送できる。その次に、第1のRoCコントローラは、自身のPCIeスイッチ上の第1二つのSSDからのLBA(0、2)についてのデータを読み取る一方、第2のRoCコントローラは、自身のPCIeスイッチ上の第1二つのSSDのLBA(1~3)からデータを読み取る。その次に、第2のRoCコントローラは、第1のRoCコントローラに自身の動作を完了したと報告することができ、そうすると、第1RoCコントローラはトランザクションが完了されたと、ホストに報告することができる。 For example, the host can transmit a command to read four consecutive LBAs (0-3) to a first RoC controller and a copy to a second RoC controller. The first RoC controller then reads data for LBA (0, 2) from the first two SSDs on its PCIe switch, while the second RoC controller reads the data for LBA (0, 2) from the first two SSDs on its PCIe switch. Read data from LBAs (1 to 3) of the first two SSDs. The second RoC controller can then report to the first RoC controller that it has completed its operation, and the first RoC controller can then report to the host that the transaction is completed.

奇数/偶数LBA/ストライプ/区域のペアは、他の負荷分散の用途に適用されることができる。 Odd/even LBA/stripe/area pairs can be applied for other load balancing applications.

本発明の実施形態は、SSDの故障、削除、及びホット追加(hot addition)をサポートすることができる。SSDが正常に動作しなかったり、それのスロットから削除されたりする場合には、PCIeスイッチ内のRoCは、条件を検出する必要がある。PCIeスイッチがこのような状態を検出する場合、RoCは、故障したり削除されたりしたSSDについての再構成作業を開始する。また、RoCは、関連されたストライプからのデータの優先順位を決定することにより、再構成期間中のすべての入出力作業を処理する。 Embodiments of the present invention may support failure, removal, and hot addition of SSDs. If an SSD malfunctions or is removed from its slot, the RoC in the PCIe switch needs to detect the condition. If the PCIe switch detects such a condition, the RoC initiates a reconfiguration operation for the failed or removed SSD. The RoC also handles all I/O work during the reconfiguration period by prioritizing data from the associated stripes.

SSDの故障又は削除がPCIeスイッチ内のRoCに報告されるのは、少なくとも2つの方法がある。本発明の一実施形態で、すべてのSSDは、BMCに連結されたプレゼント(Present)ピンを有する。SSDをシャーシから削除する場合、BMCは削除を検出する。BMCは、影響を受けたスロット番号をPCIeスイッチ内のRoCに報告する。また、BMCは、SSDの状態を定期的に監視できる。BMCはSSDから報告された致命的なエラー状態を検出すると、BMCは、SSDを使用しないことに決定することができる。次に、BMCは、新しいSSDが再構成されるように、故障したスロット番号をRoCに報告することができる。 There are at least two ways in which failure or removal of an SSD is reported to the RoC within a PCIe switch. In one embodiment of the present invention, all SSDs have a Present pin coupled to the BMC. If the SSD is removed from the chassis, the BMC detects the removal. The BMC reports the affected slot number to the RoC in the PCIe switch. Additionally, the BMC can periodically monitor the status of the SSD. When the BMC detects a fatal error condition reported by the SSD, the BMC may decide not to use the SSD. The BMC can then report the failed slot number to the RoC so that a new SSD can be reconfigured.

本発明の他の実施形態で、PCIeスイッチは、すべてのSSDがPCIe側帯域(sideband)信号を介して接続され、特定のエラー状態を検出できる限りホットプラグ(hot plug)をサポートすることができる。PCIeスイッチは、SSDを削除したり、追加したり、又はSSDに連結されたPCIeリンクが、これ以上作動していないことを検出したりする。これらのエラー状況において、PCIeスイッチ内のRoCが、故障したSSDを分離することができるか、又はBMCが故障した装置の電源をディセーブルすることで、すぐに装置の再構成を開始することで故障したSSDを分離できる。 In other embodiments of the invention, a PCIe switch can support hot plug as long as all SSDs are connected via PCIe sideband signals and can detect certain error conditions. . A PCIe switch removes or adds an SSD, or detects that a PCIe link coupled to an SSD is no longer operational. In these error situations, the RoC in the PCIe switch can isolate the failed SSD, or the BMC can immediately initiate device reconfiguration by disabling power to the failed device. A failed SSD can be isolated.

イネーブルされたとき、各U.2コネクタのプレゼンス(Presence:PRSNT#)ピンは、シャーシ内に、新しい装置があることを示せる。信号は、PCIeスイッチ及び/又はBMCに連結される。RoCは、現在のデータ保護ポリシーによって新しいドライブをそれの既存のドメインに適切に構成することができる。 When enabled, each U. The Presence (PRSNT#) pin on the 2 connector can indicate the presence of a new device in the chassis. The signals are coupled to a PCIe switch and/or a BMC. The RoC can properly configure the new drive into its existing domain with the current data protection policy.

ホストから入ってくるすべてのトラフィックは、スヌーピングP2P及びアドレス変換論理(物理から論理に)に伝達されるよう要求される。PCIeの列挙(enumeration)中には、すべてのポートからのすべての構成のサイクルがスヌーピングP2Pロジックに伝達されるように要求される。選択された動作モードに応じて、RoCのあるPCIeスイッチの動作は、次のように定義される。

Figure 0007370801000001
All incoming traffic from the host is required to be communicated to the snooping P2P and address translation logic (physical to logical). During PCIe enumeration, all configuration cycles from all ports are required to be communicated to the snooping P2P logic. Depending on the selected operating mode, the operation of a PCIe switch with RoC is defined as follows.
Figure 0007370801000001

また、RoCは、PCIeスイッチとホストプロセッサとの間に一列に(in-line)に配置される。本発明のこのような実施形態で、RoCは、Look-Through RoCと称される。 Look-Through RoCを使用する場合は、PCIeスイッチが一般的なPCIeスイッチとして動作するRoCは、ディセーブルされ、すべてのポートに対しリタイマ(re-timer)となる。この場合、すべてのアップストリームポートは、正常的な使用例でのように連結される。 The RoC is also placed in-line between the PCIe switch and the host processor. In such embodiments of the invention, the RoC is referred to as Look-Through RoC. When using Look-Through RoC, the RoC in which the PCIe switch acts as a general PCIe switch is disabled and becomes a re-timer for all ports. In this case, all upstream ports are connected as in normal usage.

RoCがイネーブルされると、少数のNTB(non-transparent bridge)ポートがホストに連結される。この場合に、RoCは選択されたRAID又はイレイジャーコーディングレベルに基づいて、受信するアドレスを論理アドレスに仮想化することができる。 When RoC is enabled, a small number of non-transparent bridge (NTB) ports are connected to the host. In this case, the RoC can virtualize the received address into a logical address based on the selected RAID or erasure coding level.

RoCが、Look-Aside RoCなのかLook-Through RoCなのか否かにかかわらず、すべての受信する読み取り/書き込みメモリ要請は、キャッシュのヒット(hit)又はエラー(miss)を判定するために、RoCのローカルキャッシュと比較して確認される。キャッシュヒットがあれば、要求された読み出しデータは、SSDの代わりにRoCローカルキャッシュメモリによって提供される。メモリの書き込みヒットの場合には、書き込みデータは、キャッシュメモリにすぐに更新される。同一の書き込みデータは、後でSSDに更新される。この具現は、メモリの書き込みについての全体的な遅延(latency)を下げ、システムの性能を向上させることができる。 Regardless of whether the RoC is a Look-Aside RoC or a Look-Through RoC, all incoming read/write memory requests are sent to the RoC to determine cache hits or misses. is checked against the local cache. If there is a cache hit, the requested read data is served by the RoC local cache memory instead of the SSD. In case of a memory write hit, the write data is immediately updated to the cache memory. The same write data will be updated to the SSD later. This implementation can reduce the overall latency for memory writes and improve system performance.

キャッシュミスがある場合、RoCコントローラは、どのSSDがデータにアクセスするのに適したドライブか否かを判定する。 If there is a cache miss, the RoC controller determines which SSD is a suitable drive to access the data.

PCIe装置をアドレシングするためには、PCIe装置は、システムの入出力ポートアドレス空間又はメモリ・マッピングされたアドレス空間にマッピングされるようにイネーブルされるべきである。システムのファームウェア、装置ドライバ又はオペレーティングシステムは、設定コマンドをPCIeコントローラに記録することにより、BAR(Base Address Registers)をプログラミングして、アドレスのマッピングを装置に知らせる。すべてのPCIe装置は、システムの再設定時にインアクティブ(inactive)状態であるため、PCIe装置は、オペレーティングシステム又は装置ドライバがPCIe装置と通信できるようにPCIe装置に割り当てられるアドレスを有しない可能性がある。BIOS又はオペレーティングシステムは、スロット当たりIDSEL(Initialization Device Select)信号を使用してPCIeコントローラを介してPCIeスロット(例えば、マザーボード上の第1のPCIeスロット、第2のPCIeスロット又は第3のPCIeスロットなど)を地域別にアドレス指定することができる。

Figure 0007370801000002
To address a PCIe device, the PCIe device should be enabled to be mapped into the system's input/output port address space or memory mapped address space. The system's firmware, device driver, or operating system programs Base Address Registers (BARs) to inform the device of the address mapping by logging configuration commands to the PCIe controller. Because all PCIe devices are in an inactive state when the system is reconfigured, the PCIe device may not have an address assigned to the PCIe device so that the operating system or device driver can communicate with the PCIe device. be. The BIOS or operating system uses a per-slot IDSEL (Initialization Device Select) signal to select a PCIe slot (e.g., a first PCIe slot, a second PCIe slot, or a third PCIe slot on the motherboard) via the PCIe controller. ) can be addressed by region.
Figure 0007370801000002

BIOS又はオペレーティングシステムがどのようなPCIeスロットに装置が設置されているかを判定する(又は、装置がどのような機能を具現するかを判定する)直接的な方法がないから、PCIバスが列挙される。バス列挙は、装置の機能15でバス番号と装置番号の組合せのそれぞれのベンダーID(VID)及び装置ID(DID)レジスタを読み出すために試みることで遂行される。DIDと異なる装置番号は、単に、そのバス上の装置のシリアル番号であり得る。さらに、新しいブリッジが検出された後、新しいバス番号が定義され、装置列挙は、装置番号0から再開される。 The PCI buses are enumerated because there is no direct way for the BIOS or operating system to determine which PCIe slot a device is installed in (or determine what function the device embodies). Ru. Bus enumeration is accomplished by attempting to read the vendor ID (VID) and device ID (DID) registers for each bus number and device number combination in the device's function 15. A device number different from the DID may simply be the serial number of the device on that bus. Additionally, after a new bridge is detected, a new bus number is defined and device enumeration is restarted from device number 0.

装置の機能15からの応答が受信されない場合、バスマスターは中断を遂行し、無効なVID/DID値であるオール・ビット・オン(all-bits-on)値(16進数ではFFFFFFFF)を返す。このような方式で、装置ドライバは、特定された組合せのバス/装置_番号/機能(B/D/F)が存在しないことが分かる。したがって、与えられたバス/装置の機能ID0に対する読み出しがマスター(イニシエータ)に中断させると、装置ドライバは、そのバス上にいかなる動作装置も存在しないという結論を下すことができる(装置は機能番号0を具現するように要求される)。この場合、残っている機能番号(1~7)に対する読み出しは残っている機能番号(1~7)が、また存在しないため必要としない。 If no response is received from the device function 15, the bus master performs an abort and returns an all-bits-on value (FFFFFFFFFF in hexadecimal), which is an invalid VID/DID value. In this manner, the device driver knows that the specified combination of bus/device_number/function (B/D/F) does not exist. Therefore, if a read to function ID 0 of a given bus/device causes the master (initiator) to abort, the device driver can conclude that there is no active device on that bus (device is function ID 0). ). In this case, it is not necessary to read the remaining function numbers (1 to 7) because the remaining function numbers (1 to 7) do not exist.

ベンダーIDレジスタに対し指定されたB/D/Fの組合せについての読み出しが成功した場合、装置ドライバは、その装置が存在することを知っている。装置ドライバは、BARにすべて1を記録し、装置の要請されたメモリのサイズをエンコーディングされた形式に再び読み込むことができる。デザインは、すべてのアドレス空間のサイズが2のべき乗であり、自然に整列されることを意味する。 If the read for the specified B/D/F combination for the vendor ID register is successful, the device driver knows that the device is present. The device driver can record all ones in the BAR and read the requested memory size of the device back into encoded form. The design implies that all address spaces are powers of two in size and naturally aligned.

この時点で、BIOS又はオペレーティングシステムは、メモリマッピングと入出力ポートアドレスを装置のBARの構成レジスタにプログラミングすることができる。このアドレスは、システムの電源が入っている限り有効である。電源を切ると、これらのすべての設定が失われ、システムの電源が再びオンにすると、この手順が繰り返される。これらのプロセス全体が完全に自動化されるため、ユーザーはカードそのもの上のDIPスイッチを変更することで、新たに追加されたハードウェアを受動的に構成する作業を行う必要がない。この装置の自動検出及びアドレス空間の割り当ては、プラグアンドプレイが具現される方式である。 At this point, the BIOS or operating system can program memory mapping and input/output port addresses into the configuration registers of the device's BAR. This address remains valid as long as the system is powered on. All these settings are lost when the power is turned off, and this procedure is repeated when the system is turned on again. This entire process is fully automated, so users do not have to passively configure newly added hardware by changing DIP switches on the card itself. This automatic device detection and address space allocation is implemented in a plug-and-play manner.

PCIe-to-PCIeのブリッジが探索されると、システムは、0(zero)ではないバス番号をブリッジを超えて2次PCIバスに割り当ててから、その2次バス上の装置を列挙する。より多くのPCIeブリッジが探索されると、すべての可能なドメイン/バス/装置の組合せがスキャンされるまで探索が再帰的に継続される。 When a PCIe-to-PCIe bridge is discovered, the system assigns a non-zero bus number to the secondary PCI bus across the bridge and then enumerates the devices on that secondary bus. As more PCIe bridges are searched, the search continues recursively until all possible domain/bus/device combinations have been scanned.

各非ブリッジPCIe装置の機能は、最大6つのBARを具現することができ、それぞれのBARは入出力ポートとメモリマッピングされたアドレス空間内の異なるアドレスに応答できる。各BARは領域を描写する。 The functionality of each non-bridge PCIe device can implement up to six BARs, and each BAR can respond to an input/output port and a different address in a memory-mapped address space. Each BAR describes an area.

また、PCIe装置は、ドライバのコード又は構成情報が含まれているオプションROMを有する。 The PCIe device also has an option ROM that contains driver code or configuration information.

BMCはR、oC設定を直接構成する。BMCは、特定のデータの保護方式が適用されるハードコーディングされたパス又は構成可能な設定を有する。後者は、インターフェースをBIOSオプションとして、この構成に露出させたり、追加にハードウェア露出されたインターフェースを介してソフトウェアに露出させる。ハードコーディングされた方式は、BIOSファームウェア内に構成され、保護機能をイネーブル/ディセーブルするためのオプションを提供する。 BMC directly configures R,oC settings. The BMC has a hard-coded path or configurable settings to which specific data protection schemes are applied. The latter exposes the interface to this configuration as a BIOS option or additionally to software via a hardware exposed interface. A hard-coded scheme is configured within the BIOS firmware to provide options for enabling/disabling protection features.

装置のフェイラ(failure)を処理するために、制御パスを介したBMCは、ドライブが損傷したり、削除されたりする場合を検出することができる。また、BMCは、装置がSMART(Self-Monitoring Analysis and Reporting Technology)を通じて、すぐに損傷されるだろうと予想できる。この場合において、BMCは、失敗したシナリオをイネーブルしたり、ユーザーに状況について警告するためにRoCハードウェアを再構成したりする。BMCは、データパスではない、制御パスにのみ許可される。新しいドライブが挿入される場合は、BMCは再び介入し、新しいドライブを保護されたグループの一部として構成したり、再構成作業を開始したりできる。RoCハードウェアは、データのアクセスパスにおいてより低い遅延を提供しながら、可能な限り最小限の性能への影響を提供するために、この設定で、実際の再構成及び回復パスを処理する。 To handle device failures, the BMC over the control path can detect when a drive is damaged or removed. Also, the BMC can predict that the device will be damaged soon through SMART (Self-Monitoring Analysis and Reporting Technology). In this case, the BMC reconfigures the RoC hardware to enable the failed scenario or alert the user about the situation. BMC is only allowed on the control path, not the data path. If a new drive is inserted, the BMC can intervene again and configure the new drive as part of the protected group or initiate a reconfiguration operation. The RoC hardware handles the actual reconfiguration and recovery path in this setting to provide the lowest possible performance impact while providing lower latency in the data access path.

図1は、本発明の一実施形態に係るLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチを含むマシンを示す図である。図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 including a PCIe switch with look-aside erasure coding logic in accordance with one embodiment of the present invention. Machine 105 is illustrated in FIG. Machine 105 may include a processor 110. Processor 110 may be any of a variety of processors, such as, for example, an Intel Xeon, Celeron, Itanium, or Atom processor, an AMD Opteron processor, an ARM processor, and the like. FIG. 1 shows a single processor 110 in machine 105, which may include any number of processors, each being a single core or multi-core processor, in any desired combination. Can be mixed.

また、マシン105は、メモリコントローラ120によって管理されるメモリ115を含むことができる。メモリ115は、フラッシュメモリ、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、永続性RAM(Persistent Random Access Memory)、FRAM(登録商標)(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)のようなNVRAM(Non-Volatile Random Access Memory)などの任意の多様なメモリであり得る。メモリ115は、また、異なるメモリタイプの任意の所望の組合せであり得る。 Machine 105 may also include memory 115 managed by memory controller 120. The memory 115 includes flash memory, DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), persistent RAM (Persistent Random Access Memory), and FRAM. (registered trademark) (Ferroelectric Random Access Memory), MRAM (Magnetoresistive Random Access Memory) The memory may be any variety of memory such as NVRAM (Non-Volatile Random Access Memory) such as NVRAM (Non-Volatile Random Access Memory). Memory 115 may also be any desired combination of different memory types.

マシン105は、またLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチ125を含むことができる。PCIeスイッチ125は、Look-Asideイレイジャーコーディングロジックをサポートする任意の所望のPCIeスイッチである。 Machine 105 may also include a PCIe switch 125 with look-aside erasure coding logic. PCIe switch 125 is any desired PCIe switch that supports look-aside erasure coding logic.

マシン105は、また装置ドライバ135によって制御されるストレージ装置130を含む。ストレージ装置130は、PCIeスイッチ125と通信できる任意の所望の形状のストレージ装置であり得る。たとえば、ストレージ装置130は、NVMe SSDである。 Machine 105 also includes a storage device 130 that is controlled by device driver 135. Storage device 130 may be any desired shape of storage device that can communicate with PCIe switch 125. For example, storage device 130 is an NVMe SSD.

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

図2は、図1のマシンの追加の詳細を示す図である。図2で、典型的に、マシン105は、マシン105の構成の動作を調整するために使用され、メモリコントローラ120及びクロック205を含む1つ以上のプロセッサ110を備える。例えば、プロセッサ110は、RAM(random access memory)、ROM(read-only memory)、又は他の状態保存媒体を含むメモリ115に連結される。プロセッサ110は、また、例えば、イーサネット(登録商標)コネクタ又はワイヤレスコネクタであるネットワークコネクタ210に連結され、ストレージ装置130に連結される。プロセッサ110は、また他の構成の中で、入出力エンジン225を使用して管理できるユーザーインターフェース220及び入出力インターフェースポートに取り付けられるバス215に連結される。 FIG. 2 shows additional details of the machine of FIG. 1; In FIG. 2, machine 105 typically includes one or more processors 110 that are used to coordinate the operation of the components of machine 105 and include a memory controller 120 and a clock 205. For example, processor 110 is coupled to memory 115 that includes random access memory (RAM), read-only memory (ROM), or other state storage medium. Processor 110 is also coupled to a network connector 210, for example an Ethernet connector or a wireless connector, and coupled to storage device 130. Processor 110 is also coupled to user interface 220 and bus 215 attached to input/output interface ports, which can be managed using input/output engine 225, among other configurations.

図3は、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125をストレージ装置に連結するミッドプレーン及びスイッチボードを含む、図1のマシン105の追加の詳細を示す図である。図3において、マシン105は、ミッドプレーン305及びスイッチボード310、315を含む。スイッチボード310、315は、それぞれLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320及びベースボード管理コントローラ325、330を含む。(スイッチボード310、315)は、また図3に図示されていない付加的な構成要素を含むことができる。つまり、図3は、本発明の実施形態に最適な要素に焦点を合わせる)。 FIG. 3 is a diagram illustrating additional details of the machine 105 of FIG. 1, including a midplane and switch board that couples the PCIe switch 125 containing the Look-Aside erasure coding logic of FIG. 1 to a storage device. In FIG. 3, machine 105 includes a midplane 305 and switch boards 310, 315. Switchboards 310, 315 include PCIe switches 125, 320 and baseboard management controllers 325, 330, each containing look-aside erasure coding logic. (Switchboards 310, 315) may also include additional components not shown in FIG. That is, FIG. 3 focuses on the elements most suitable for embodiments of the invention).

本発明のいくつかの実施形態で、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320のそれぞれは、総計最大96個のPCIeレーンをサポートする。U.2コネクタを使用してLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320をストレージ装置130-1~130-6に連結するために、各U.2コネクタは、装置あたり最大4つのPCIeレーンをサポートする。2つのX4レーン(各通信方向に対し1つのX4レーン)を使用すれば、各PCIeスイッチが最大(96÷8=12)個の装置をサポートする。したがって、図3は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125と通信する12個のストレージ装置130-1~130-3及びLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ320と通信する12個のストレージ装置130-4~130-6を図示する。しかし、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320と通信するストレージ装置の数は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320によって提供されるPCIeレーンの数及びストレージ装置130-1~130-6のそれぞれによって使用されるPCIeレーンの数によってのみ制限される。 In some embodiments of the invention, each of the PCIe switches 125, 320 including look-aside erasure coding logic supports up to a total of 96 PCIe lanes. U. Each U. 2 connectors support up to 4 PCIe lanes per device. Using two X4 lanes (one X4 lane for each communication direction), each PCIe switch supports a maximum of (96÷8=12) devices. Accordingly, FIG. 3 shows 12 storage devices 130-1 through 130-3 communicating with PCIe switch 125 containing look-aside erasure coding logic and 12 storage devices 130-1 through 130-3 communicating with PCIe switch 320 containing look-aside erasure coding logic. Storage devices 130-4 to 130-6 are illustrated. However, the number of storage devices communicating with a PCIe switch 125, 320 that includes Look-Aside erasure coding logic is dependent on the number of PCIe lanes provided by the PCIe switch 125, 320 that includes Look-Aside erasure coding logic and the storage device 130- Limited only by the number of PCIe lanes used by each of 1 to 130-6.

本発明のいくつかの実施形態で、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320は、カスタム回路(custom circuitry)を使用して実装される。本発明の他の実施形態で、Loo-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320は、適切にプログラムされたFPGA(Field Programmable Gate Array)またはASIC(Application-Specific Integrated Circuit)を使用して実装される。 In some embodiments of the invention, PCIe switches 125, 320 that include look-aside erasure coding logic are implemented using custom circuitry. In other embodiments of the invention, the PCIe switch 125, 320 containing the Loo-Aside erasure coding logic is a suitably programmed Field Programmable Gate Array (FPGA) or Application-Specific Integrated Circuit (ASIC). Implemented using t) be done.

BMC325、330は、ストレージ装置130-1~130-6を構成するために使用される。たとえば、BMC325、330は、ストレージ装置130-1~130-6を初期化して、ストレージ装置130-1~130-6上に存在する任意のデータを削除できる。つまり、起動時に、ストレージ装置130-1~130-6が、イレイジャーコーディング方式に追加される場合、初期化、任意のデータの削除が行われる。あるいは、この機能は、プロセッサ(図1のプロセッサ110)により、(又は存在するが、スイッチボード310、315上に図示していないローカルプロセッサにより)サポートされる。BMC325、330(又は、図1のプロセッサ110又はスイッチボード310、315上に図示していないローカルプロセッサ)は、またLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320のLook-Asideイレイジャーコーディングロジックの初期構成を担当することができる。 BMCs 325 and 330 are used to configure storage devices 130-1 to 130-6. For example, the BMC 325, 330 can initialize the storage devices 130-1 to 130-6 and delete any data existing on the storage devices 130-1 to 130-6. That is, when the storage devices 130-1 to 130-6 are added to the erasure coding method at startup, initialization and deletion of arbitrary data are performed. Alternatively, this functionality is supported by a processor (processor 110 in FIG. 1) (or by a local processor present but not shown on the switchboards 310, 315). The BMC 325, 330 (or a local processor not shown on the processor 110 or switch board 310, 315 of FIG. 1) also implements the look-aside erasure coding logic of the PCIe switch 125, 320, which also includes look-aside erasure coding logic. May be responsible for initial configuration.

図3は、Look-Asideイレイジャーコーディングロジックを含む2つのPCIeスイッチ125、320を利用したデータ保護の例としての全体の設定を図示する。BMC325、330は、直接Look-Asideイレイジャーコーディングロジックを構成できる。BMC325、330は、特定のデータの保護方式が適用されるハードコーディングパス又は構成可能な設定を有し得る。後者は、インターフェースをBIOS(Basic Input/Output System)オプションとして、この構成に露出させたり、ハードウェア露出されたインターフェースを介した付加的なソフトウェアに露出させたりする。ハードコーディングされた方法は、BIOSファームウェア内に構成でき、保護機能をイネーブル/ディせーブルするためのオプションを提供できる。 FIG. 3 illustrates an example overall setup for data protection utilizing two PCIe switches 125, 320 that include Look-Aside erasure coding logic. BMCs 325, 330 can directly configure look-aside erasure coding logic. BMCs 325, 330 may have hard-coded paths or configurable settings to which specific data protection schemes are applied. The latter exposes the interface to this configuration as a BIOS (Basic Input/Output System) option or to additional software via a hardware exposed interface. Hard-coded methods can be configured within the BIOS firmware to provide options for enabling/disabling protection features.

ストレージ装置が故障した場合には、BMC325、330は、ストレージ装置が故障したり、制御パスを通して削除されるときを検出できる。その後に、BMC325、330は、Look-Asideイレイジャーコーディングロジックを再構成して、失敗したシナリオを可能にする。BMC325、330は、データパスではない、制御パスに連結される。同様に、新しいストレージ装置が挿入されるとき、BMC325、330は、新しいストレージ装置を既存のグループの一部として介入して構成したり、再構成の動作を開始できたりする。Look-Asideイレイジャーコーディングロジックは、実際の再構成を処理することができる。この設定内の回復パスは、データアクセスに対する性能の影響を理想的に最小化するだけでなく、残りのストレージ装置から再構成のストレージ装置上のデータを再構成しなければならない。 In the event of a storage device failure, the BMC 325, 330 can detect when a storage device fails or is removed through the control path. Thereafter, the BMC 325, 330 reconfigures the Look-Aside erasure coding logic to enable failed scenarios. BMCs 325, 330 are coupled to a control path, not a data path. Similarly, when a new storage device is inserted, the BMC 325, 330 can intervene to configure the new storage device as part of an existing group or initiate a reconfiguration operation. Look-Aside erasure coding logic can handle the actual reconfiguration. A recovery path within this setup should ideally minimize the performance impact on data access, as well as reconstruct the data on the reconfigured storage device from the remaining storage device.

この時点で、「イレイジャーコーディング」という用語を定義することは、価値がある。イレイジャーコーディングは、多数のストレージ装置上でデータをエンコーディングするために要求されるすべての方法を説明するためのものである。少なくとも2つのストレージ装置やストレージ装置の少なくとも二つの部分(例えば、2つ以上のNANDフラッシュチャンネルを含む単一のシェル又はハウジング)が、イレイジャーコーディングのために要求される。一つのストレージ装置のみが使用されている場合は、データは、ストレージ装置に適した一般的な(既存の)データアクセス技術を使用して格納されるからである。つまり、イレイジャーコーディングは、ストレージ装置をより効率的に使用する方式及び/又はデータの冗長性(redundancy)を提供する方式で、二つ以上のストレージ装置、単一のストレージ装置の二つ以上の部分、又はこれらの任意の組合せでデータを格納するアプローチを意味する。 At this point, it is worth defining the term "erasure coding". Erasure coding is intended to describe all the methods required to encode data on multiple storage devices. At least two storage devices or at least two parts of a storage device (eg, a single shell or housing containing two or more NAND flash channels) are required for erasure coding. This is because if only one storage device is used, the data is stored using common (existing) data access techniques suitable for the storage device. In other words, erasure coding is a method of using storage devices more efficiently and/or providing data redundancy. , or any combination of these approaches.

RAID(Redundant Array of Independent Disks)は、イレイジャーコーディングのサブセットを示す。つまり、RAIDレベルは、多様なイレイジャーコーディング方式の特定の具現を示す。しかし、従来のRAIDレベルを超えて定義される他のイレイジャーコーディング方式が有り得る。 RAID (Redundant Array of Independent Disks) indicates a subset of erasure coding. That is, RAID levels indicate specific implementations of various erasure coding schemes. However, there may be other erasure coding schemes defined beyond traditional RAID levels.

イレイジャーコーディング(又はRAID)を具現することは、しばしば物理的に区分された二つ以上のストレージ装置を使用する。しかし、本発明のいくつかの実施形態で、単一のシェル又はハウジングは、イレイジャーコーディングの目的のために分離されたストレージ装置として扱われるストレージ装置の多数の部分を備える。たとえば、単一のNVMe SSDシェル又はハウジングは、多数のNANDフラッシュチャンネルを含む。各NANDフラッシュチャンネルは、多様なNANDフラッシュチャンネルでデータストライピング(又は他のエンコーディング)された、イレイジャーコーディングの目的のために分離されたストレージ装置と見なされることができる。これは、本発明のいくつかの実施形態で、単一のストレージ装置を使用して、イレイジャーコーディングが具現可能である。しかも、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が(Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のどこかに構成されるか、又は追加のロジックによる)エラー訂正コード又は単一のストレージ装置で使用される他の機能をサポートすることができる。 Implementing erasure coding (or RAID) often uses two or more physically partitioned storage devices. However, in some embodiments of the invention, a single shell or housing comprises multiple portions of a storage device that are treated as separate storage devices for erasure coding purposes. For example, a single NVMe SSD shell or housing contains multiple NAND flash channels. Each NAND Flash channel can be considered a separate storage device for erasure coding purposes, with data striping (or other encoding) across the various NAND Flash channels. This allows erasure coding to be implemented using a single storage device in some embodiments of the present invention. Moreover, the PCIe switch 125 containing the look-aside erasure coding logic may be configured with error correction code (either configured elsewhere on the PCIe switch 125 containing the look-aside erasure coding logic, or by additional logic) or a single storage device. can support other functions used in

図4は、相異なるイレイジャーコーディング方式を達成するための、図3のストレージ装置130-1~130-6を示す図である。図4で、ストレージ装置130-1~130-6は、イレイジャーコーディング方式405に図示したように、RAID0(zero)構成で使用される。RAID0は、多様なストレージ装置にわたってデータをストライピング(striping)する。つまり、データは、ストレージ装置に適切な論理ユニットに分割され、各論理ユニットは、アレイ内のストレージ装置の数まで異なるストレージ装置に記録される。すべてのストレージ装置は、それらに記録された一つの論理ユニットのデータを有した後に、データは、第1ストレージ装置に再び記録し続ける。 FIG. 4 is a diagram illustrating storage devices 130-1 to 130-6 of FIG. 3 to achieve different erasure coding schemes. In FIG. 4, storage devices 130-1 to 130-6 are used in a RAID 0 (zero) configuration, as illustrated in erasure coding scheme 405. RAID0 stripes data across various storage devices. That is, data is divided into logical units appropriate for storage devices, and each logical unit is recorded on a different storage device, up to the number of storage devices in the array. After all the storage devices have one logical unit of data recorded on them, data continues to be recorded on the first storage device again.

RAID0は、単一のストレージ装置を単独で使用するか、又は組織化されていないディスクのグループ(JBOD(Just a Bunch of Disks)又はJBOF(Just a Bunch of Flash)のような)を使用するよりも利点を提供する。データは、多数のストレージ装置に格納されるため、データは、各ストレージ装置が並列に動作しながら、より迅速に読み出されたり、記録されたりする。したがって、例えば、図4に図示したように、12個のストレージ装置130-1~130-6にかけて、データを分割することにより、各ストレージ装置130-1~130-6は、全体のデータを読み取り又は書き込みよりも速く全体のデータの1/12だけ読み書きする必要がある。アレイの全容量は、アレイのストレージ装置の数に、アレイの最も小さなストレージ装置の容量を掛けた値として計算される。従って、図4では、アレイがデータに対する12個のストレージ装置を包含するため、アレイの全容量は、アレイの最も小さいストレージ容量の12倍である。 RAID0 is more efficient than using a single storage device alone or an unorganized group of disks (such as JBOD (Just a Bunch of Disks) or JBOF (Just a Bunch of Flash)). also offers benefits. Because data is stored in multiple storage devices, data can be read or recorded more quickly, with each storage device operating in parallel. Therefore, for example, as shown in FIG. 4, by dividing the data among 12 storage devices 130-1 to 130-6, each storage device 130-1 to 130-6 can read the entire data. Alternatively, it is necessary to read and write only 1/12 of the total data faster than writing. The total capacity of an array is calculated as the number of storage devices in the array multiplied by the capacity of the smallest storage device in the array. Thus, in FIG. 4, the array includes 12 storage devices for data, so the total capacity of the array is 12 times the smallest storage capacity of the array.

RAID0の欠点は、ストレージ装置が故障しても保護機能があるということである。つまり、アレイの任意のストレージ装置が故障したらデータが失われる。実際に、RAID0は、JBOD又はJBOFより危険な可能性がある。つまり、多数のストレージ装置に渡ってデータをストライピングすることにより、任意の個々のストレージ装置が故障すると、すべてのデータが失われる(一方で、JBOD又はJBOFでは、ファイルは一般的に、一つのストレージ装置にのみ記録される。従って、JBOD又はJBOF設定で単一のストレージ装置が故障した場合、一部のデータの損失は発生する可能性があるが、必然的に、すべてのデータが失われるわけではない。)。 The drawback of RAID0 is that it has a protection function even if the storage device fails. This means that if any storage device in the array fails, data will be lost. In fact, RAID0 can be more dangerous than JBOD or JBOF. This means that by striping data across many storage devices, if any individual storage device fails, all data is lost (whereas with JBOD or JBOF, files are generally Therefore, if a single storage device fails in a JBOD or JBOF configuration, some data may be lost, but not all data will necessarily be lost. isn't it.).

RAID0は、いかなる冗長性も含まれていないため、技術的に独立したディスクの冗長アレイではない。しかし、RAID0は、通常的にRAIDレベルとみなされ、RAID0は、確かにイレイジャーコーディング方式と見なされる。 RAID0 is not technically a redundant array of independent disks because it does not include any redundancy. However, RAID0 is typically considered a RAID level, and RAID0 is certainly considered an erasure coding scheme.

イレイジャーコーディング方式410は、一般的なRAID方式のRAID5を図示する。RAID5で、パリティブロックは、そのストライプの他のストレージ装置に格納されたデータに対して計算される。したがって、図4において、RAID5アレイは、総計12個のストレージ装置を含むから、11個のストレージ装置がデータドライブとして使用され、1つのストレージ装置は、パリティドライブとして使用される(RAID5で、パリティデータは、パリティドライブに制限されないが任意のデータのようにストレージ装置にわたって分散されている。これ以上、多く使用されないRAID4は、すべてのパリティ情報を単一のドライブに格納する。)。アレイ内のn個のストレージ装置があるアレイの全容量は、最も小さなストレージ装置の容量の(n-1)倍で計算される。各ストライプは、単一のパリティブロックを含むことから、イレイジャーコーディング方式410は、最大で1つのストレージ装置の故障を許容することができ、まだすべてのデータにアクセスすることができる(故障したストレージ装置のデータは、パリティブロックと結合して機能的なストレージ装置上のデータを使用して回復されることができる)。 Erasure coding scheme 410 illustrates RAID5, a common RAID scheme. In RAID 5, parity blocks are computed relative to data stored on other storage devices in that stripe. Therefore, in FIG. 4, since the RAID5 array includes a total of 12 storage devices, 11 storage devices are used as data drives, and one storage device is used as a parity drive (in RAID5, parity data is distributed across storage devices like any data, but not limited to parity drives (RAID4, which is not used much anymore, stores all parity information on a single drive). The total capacity of an array with n storage devices in the array is calculated as (n-1) times the capacity of the smallest storage device. Because each stripe includes a single parity block, erasure coding scheme 410 can tolerate the failure of at most one storage device and still have access to all data (the failed storage device data can be recovered using data on functional storage devices combined with parity blocks).

RAID5は、RAID0よりも少ない全体のストレージを提供するが、ストレージ装置の故障に対する保護機能を提供する。これはRAIDレベルの中で決定する重要なトレードオフである。全体のストレージ容量と冗長性の相対的な重要性による。 RAID5 provides less overall storage than RAID0, but provides protection against storage device failure. This is an important trade-off to make between RAID levels. Depending on overall storage capacity and relative importance of redundancy.

図4に図示していない他のRAIDレベルも、またイレイジャーコーディング方式として使われる。たとえば、RAID6は、2つのストレージ装置を使用しながら、パリティ情報を格納するため、全体のストレージ容量を最小ストレージ装置の容量の(n-2)倍に減らしながら、同時に最大2つのストレージ装置の故障を許容する。ハイブリッド方式も可能である。例えば、RAID0+1、RAID1+0、RAID5+0、RAID6+0、及びその他のRAID方式にもすべて可能で、それぞれは、多様な全体のストレージ容量とストレージ装置の故障に対する許容誤差を提供する。たとえば、ストレージ装置130-1~130-6のうち、5つは1つのRAID5アレイを形成するために使用され、5つ以上のストレージ装置130-1~130-6は、二番目のRAID5アレイを形成するために使用され、残りの2つのストレージ装置と結合されるこのような2つのグループは、より大きなRAID5アレイを形成するために使用される。または、ストレージ装置130-1~130-6は、2つのグループに分割され、それぞれのグループは、RAID0アレイを具現し、2つのグループは、RAID1よりもっと大きいアレイとして動作する(したがって、RAID0+1の設定を具現)。RAIDとイレイジャーコーディング技法は、固定コード又は回転コードを使用し、前記固定コード/パリティ駆動ドライバー表記法は、単に例示の目的であることを留意しなければならない。 Other RAID levels not shown in FIG. 4 may also be used as erasure coding schemes. For example, RAID6 uses two storage devices and stores parity information, so it reduces the overall storage capacity to (n-2) times the capacity of the smallest storage device, while at the same time failing up to two storage devices. is allowed. A hybrid method is also possible. For example, RAID0+1, RAID1+0, RAID5+0, RAID6+0, and other RAID schemes are all possible, each offering a variety of overall storage capacities and tolerances for storage device failure. For example, five of the storage devices 130-1 to 130-6 are used to form one RAID5 array, and five or more storage devices 130-1 to 130-6 are used to form a second RAID5 array. Two such groups used to form and combined with the remaining two storage devices are used to form a larger RAID5 array. Alternatively, the storage devices 130-1 to 130-6 are divided into two groups, each group embodying a RAID0 array, and the two groups operate as an array larger than RAID1 (therefore, the RAID0+1 configuration ). It should be noted that RAID and erasure coding techniques use fixed codes or rotating codes, and the fixed code/parity driven driver notation is for illustrative purposes only.

イレイジャーコーディング方式415は、すべてのRAIDレベル及び任意の所望のイレイジャーコーディングスキームに適用可能な、より一般的な説明を示す。ストレージ装置130-1~130-6のアレイが与えられると、これらのストレージ装置は、2つのグループに分割される。つまり、データを格納するために使用される1つのグループ、コードを格納するために使用される他のグループである。コードは、パリティ情報やデータグループ内のデータのサブセットから欠落されたデータの復元やコーディンググループ内の一部のコードを承認する任意の所望のコーディング情報であり得る。図4に示したように、イレイジャーコーディング方式415は、最大X個のデータストレージ装置及びY個コードのストレージ装置を含む。アレイのX個のストレージ装置の任意の組合せを考慮すれば、すべてのX個のデータストレージ装置からのデータにアクセスしたり、再構成することができるものと予想される。したがって、イレイジャーコーディング方式415は、一般的に、アレイ内の最大のY個のストレージ装置の故障を許容することができ、それにもかかわらずアレイに格納されたすべてのデータにアクセスすることができる。容量面では、イレイジャーコーディング方式415の全容量は、一番小さなストレージ装置の容量のX倍である。 Erasure coding scheme 415 represents a more general description that is applicable to all RAID levels and any desired erasure coding scheme. Given an array of storage devices 130-1 through 130-6, these storage devices are divided into two groups. That is, one group used to store data, and another group used to store code. The code may be parity information or any desired coding information that authorizes the restoration of data missing from a subset of data within a data group or some code within a coding group. As shown in FIG. 4, erasure coding scheme 415 includes up to X data storage devices and Y code storage devices. Given any combination of the X storage devices in the array, it is expected that data from all X data storage devices can be accessed and reconstructed. Thus, erasure coding scheme 415 can generally tolerate the failure of up to Y storage devices in the array and still be able to access all data stored in the array. In terms of capacity, the total capacity of erasure coding scheme 415 is X times the capacity of the smallest storage device.

前記議論で、任意のイレイジャーコーディング方式の全容量は、「最小のストレージ装置の容量」と関連して記述されることに注意しよう。いくつかのイレイジャーコーディング方式の場合、ストレージ装置が可変容量を有し、まだ完全に利用されることが可能である。しかし、RAID0又はRAID1のようないくつかのイレイジャーコーディング方式は、すべてのストレージ装置が同じ容量を有すると予想され、より大きなストレージ装置が含むすべての容量を捨てるだろう。したがって、「最も小さなストレージ装置の容量」という表現は、相対的な言葉として理解されるべきで、任意の特定のイレイジャーのコーディング方式を使用するアレイによって提供される全容量は、前述した公式より大きい可能性がある。 Note that in the discussion above, the total capacity of any erasure coding scheme is described in relation to the "minimum storage device capacity." For some erasure coding schemes, the storage device has variable capacity and can still be fully utilized. However, some erasure coding schemes, such as RAID 0 or RAID 1, expect all storage devices to have the same capacity and will throw away all the capacity that larger storage devices contain. Therefore, the expression "smallest storage device capacity" should be understood as a relative term, and the total capacity provided by an array using any particular erasure coding scheme is greater than the formula above. there is a possibility.

図3に戻ると、使用された特定のイレイジャーコーディング方式にかかわらず、PCIeスイッチ125、320のLook-Asideイレイジャーコーディングロジックは、物理ストレージ装置130-1~130-6から新しいストレージ装置を効果的に生成する。この新しいストレージ装置は、このイレイジャーコーディング方式によって提示されたストレージ装置が物理的に存在しないため、仮想ストレージ装置として考えられる。そして、この仮想ストレージ装置は、物理ストレージ装置130-1~130-6を使用するから、物理ストレージ装置130-1~130-6は、ホストから隠されていなければならない。最後に、格納されているデータが、ホストが知らない方式でエンコーディングされて格納された場合には、ホストは、ストレージ装置130-1~130-6上のブロックに直接アクセスしようとすることが問題となる。 Returning to FIG. 3, regardless of the particular erasure coding scheme used, the look-aside erasure coding logic of PCIe switches 125, 320 effectively removes new storage devices from physical storage devices 130-1 through 130-6. generate. This new storage device can be considered as a virtual storage device since the storage device presented by this erasure coding scheme does not physically exist. Since this virtual storage device uses the physical storage devices 130-1 to 130-6, the physical storage devices 130-1 to 130-6 must be hidden from the host. Finally, if the stored data is encoded and stored in a manner unknown to the host, the problem is that the host attempts to directly access blocks on the storage devices 130-1 to 130-6. Become.

これらの仮想ストレージ装置の使用をサポートするために、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125及び/又は320は、仮想ストレージ装置の容量を、図1のプロセッサ110に通知することができる。たとえば、ストレージ装置130-1~130-6がそれぞれ1TBのデータを格納する5つのNVMe SSDを含み(数学的単純化のために、1TBは、1012バイトではなく240バイトで考慮される)、イレイジャーコーディング方式がRAID5アレイを具現する場合、仮想ストレージ装置の有効なストレージ容量は4TBある。(より少ない又はより多くのストレージ装置を使用するイレイジャーコーディングの他の具現は、それぞれ1TBより少なく又は多く格納できており、異なる容量を有する仮想ストレージ装置になることができる。)Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125及び/又は320は、それらが総計4TB(又は242バイト)のストレージ容量を提供する仮想ストレージ装置に連結されたということを、プロセッサ110に通知することができる。その後に、図1のプロセッサ110は、図5を参照して、以下において更に説明するように、この仮想ストレージ装置内のブロックにデータを記録することができ、Look-Asideイレイジャーコーディングロジックは、データの実際の格納を処理することができる。たとえば、NVMe SSD上のブロックがそれぞれ4KBサイズである場合、プロセッサ110は、0~(230-1)の番号が付いた論理ブロックにデータが記録されるよう要請できる。 To support the use of these virtual storage devices, PCIe switches 125 and/or 320 that include look-aside erasure coding logic can notify processor 110 of FIG. 1 of the capacity of the virtual storage devices. For example, if storage devices 130-1 through 130-6 include five NVMe SSDs each storing 1 TB of data (for mathematical simplicity, 1 TB is considered as 240 bytes instead of 1012 bytes), erasure When the coding scheme implements a RAID5 array, the effective storage capacity of the virtual storage device is 4TB. (Other implementations of erasure coding that use fewer or more storage devices can store less or more than 1 TB, respectively, resulting in virtual storage devices with different capacities.) Look-Aside Erasure Coding PCIe switches 125 and/or 320 containing logic may notify processor 110 that they are coupled to a virtual storage device that provides a total of 4 TB (or 242 bytes) of storage capacity. Processor 110 of FIG. 1 may then record data to the block within this virtual storage device, as described further below with reference to FIG. can handle the actual storage of For example, if the blocks on the NVMe SSD are each 4KB in size, processor 110 may request that data be recorded in logical blocks numbered from 0 to (230-1).

あるいは、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125及び/又は320は、仮想ストレージ装置と通信する方法を示す図1のプロセッサ110からホストメモリアドレスのブロックを要請する。図1のプロセッサ110は、データを読み出したり、記録しようとする場合は、伝送は、ホストメモリアドレスのブロック内の適切なアドレスを含むLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチ125及び/又は320に送られる。このホストメモリアドレスのブロックは、少なくともイレイジャーコーディング方式を使用して具現された仮想ストレージ装置のサイズでなければならない(そして、追加のストレージ装置が使用中に、イレイジャーコーディング方式に追加されると予想される場合は、仮想ストレージ装置の初期容量よりも大きい可能性がある)。 Alternatively, a PCIe switch 125 and/or 320 that includes look-aside erasure coding logic requests a block of host memory addresses from the processor 110 of FIG. 1, which illustrates how to communicate with a virtual storage device. When the processor 110 of FIG. 1 wishes to read or record data, the transmission is sent to a PCIe switch 125 and/or 320 that has look-aside erasure coding logic that includes the appropriate address within a block of host memory addresses. Sent. This block of host memory addresses must be at least the size of the virtual storage device implemented using the erasure coding scheme (and additional storage devices are expected to be added to the erasure coding scheme while in use). (It may be larger than the initial capacity of the virtual storage device).

図5は、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の詳細を示す図である。図5で、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、コネクタ505、PCIe-to-PCIeスタック510-1~510-6)、PCIeスイッチコア515、並びにPPU(Power Processing Unit)520のような多様な構成を含む。コネクタ505は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、図1のプロセッサ110、図3のストレージ装置130-1~130-6のような、図1のマシン105内の多様な他の構成と通信できるようにする。一つ以上のコネクタ505は、(図1のプロセッサ110のような)アップストリーム構成に連結されるという点において、「外部」コネクタと称される。残りのコネクタ505は、ダウンストリーム装置(図3のストレージ装置130-1~130-6のような)に連結されるため、内部又はダウンストリーム「コネクタ」と称される。PCIe-to-PCIeスタック510-1~416は、PCIeの装置間のデータ交換を許容する。例えば、図3のストレージ装置130-1は、図3のストレージ装置130-3にデータを伝送する。または、図1のプロセッサ110は、読み取りまたは書き込みの要請を遂行するために、図3のストレージ装置130-1~130-6の中から一つ以上を要請する。PCIe-to-PCIeスタック510-1~510-6は、データを一時的に格納するバッファを含む。例えば、特定の伝送のためのデスティネーション装置が現在ビジー状態(busy)であれば、PCIe-to-PCIeスタック510-1~510-6は、デスティネーション装置が自由状態(free)になるまで伝送を格納する。PPU520は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の任意の構成要請を処理する構成のセンターとして動作する。図5は、6つのPCIe-to-PCIeスタック510-1~510-6を図示するが、本発明の実施形態は、任意の数のPCIe-to-PCIeスタックを含む。PCIeスイッチコア515は、一つのPCIeポートから他のPCIeポートにデータをルーティングするように動作する。 FIG. 5 is a diagram illustrating details of PCIe switch 125 including the look-aside erasure coding logic of FIG. In FIG. 5, the PCIe switch 125 including look-aside erasure coding logic includes a connector 505, a PCIe-to-PCIe stack 510-1 to 510-6), a PCIe switch core 515, and a PPU (Power Processing Unit) 520. including a wide variety of configurations. Connector 505 allows PCIe switch 125 containing look-aside erasure coding logic to connect to various other devices within machine 105 of FIG. 1, such as processor 110 of FIG. 1 and storage devices 130-1 through 130-6 of FIG. Allows communication with the configuration. One or more connectors 505 are referred to as "external" connectors in that they are coupled to an upstream component (such as processor 110 of FIG. 1). The remaining connectors 505 are referred to as internal or downstream "connectors" because they are coupled to downstream devices (such as storage devices 130-1 through 130-6 in FIG. 3). The PCIe-to-PCIe stacks 510-1 to 416 allow data exchange between PCIe devices. For example, storage device 130-1 in FIG. 3 transmits data to storage device 130-3 in FIG. Alternatively, the processor 110 of FIG. 1 requests one or more of the storage devices 130-1 to 130-6 of FIG. 3 to perform a read or write request. PCIe-to-PCIe stacks 510-1 to 510-6 include buffers that temporarily store data. For example, if the destination device for a particular transmission is currently busy, the PCIe-to-PCIe stacks 510-1 to 510-6 will transmit data until the destination device becomes free. Store. PPU 520 acts as a configuration center that processes any configuration requests for PCIe switch 125, including look-aside erasure coding logic. Although FIG. 5 illustrates six PCIe-to-PCIe stacks 510-1 through 510-6, embodiments of the invention include any number of PCIe-to-PCIe stacks. PCIe switch core 515 operates to route data from one PCIe port to another PCIe port.

スヌーピングロジック525と、イレイジャーコーディングコントローラ530の動作に入る前に、図3のストレージ装置130-1~130-6に格納されたデータに対して少なくとも2つの異なる「アドレス」が使用されることを理解することは助かる。任意のストレージ装置で、データは、ハードウェア構造に関連付けられた特定のアドレスに記録される。このアドレスは、「物理」アドレスと見なされる。NVMe SSDのコンテキスト(context)で、「物理」アドレスは、一般的にPBA(Physical Block Address)として示される。 Before entering into the operation of snooping logic 525 and erasure coding controller 530, it is understood that at least two different "addresses" are used for data stored on storage devices 130-1 through 130-6 of FIG. It helps to do that. In any storage device, data is recorded at a specific address associated with a hardware structure. This address is considered a "physical" address. In the context of an NVMe SSD, a "physical" address is commonly denoted as a PBA (Physical Block Address).

NVMe SSDsで使用されるフラッシュメモリは、一般的に、データがその場に上書きされることを承認しない。代わりに、データが上書きされなければならない必要がある場合には、以前のデータは無効化され、新しいデータは、NVMe SSD上の他の新しいブロックのどこかに記録される。したがって、(ファイル、オブジェクト、またはその他のデータ構造である)、特定のデータ構造と関連されるデータが記録されているPBAは、時間が経つにつれて変更される。 Flash memory used in NVMe SSDs generally does not allow data to be overwritten in-place. Instead, if data needs to be overwritten, the previous data is invalidated and the new data is recorded somewhere in another new block on the NVMe SSD. Therefore, the PBA in which data associated with a particular data structure (be it a file, object, or other data structure) is recorded changes over time.

なお、フラッシュメモリにデータを再配置しなければならないもう一つの理由がある。データは、一般的に、フラッシュメモリにデータを書き込むときに使用されるものよりも大きいユニットでフラッシュメモリから削除される。有効なデータが削除されるユニットのどこかに格納されている場合は、有効なデータが、ユニットが削除される前に、フラッシュメモリの他のどこかに記録されるべきである。この削除プロセスは、一般的にガービッジ・コレクション(Garbage Collection)と称され、削除されるユニットで有効なデータをコピーするプロセスは、プログラミングと称される。そしてWear Leveling(フラッシュメモリのセルをほぼ同じに使用しようと試みるプロセス)は、フラッシュメモリ内のデータをまた再配置することもできる。 Note that there is another reason why data must be relocated to flash memory. Data is typically deleted from flash memory in units larger than those used when writing data to flash memory. If valid data is stored anywhere on the unit to be deleted, the valid data should be recorded elsewhere in the flash memory before the unit is deleted. This deletion process is commonly referred to as Garbage Collection, and the process of copying valid data in the unit being deleted is referred to as programming. And Wear Leveling, a process that attempts to use cells of flash memory approximately the same, can also rearrange data within flash memory.

ホストは、特定のデータブロックが移動される度に通知され、またはデータの新しい格納位置が通知されうる。しかし、このような方法でホストに通報することは、ホストにとっては相当な負担になる。したがって、ほとんどのフラッシュメモリ装置は、データが格納される論理ブロックアドレス(LBA)をホストに通知し、LBAをPBA(多くの場合、フラッシュ変換階層(FTL))にマッピングするテーブルを維持管理する。その後に、当該データが新しいPBAに移動されるたびに、フラッシュメモリは、ホストに新しいアドレスを知らせる代わりに、FTLでLBA-PBAマッピングテーブルをアップデートする。したがって、各ストレージ装置について、データに関連付けられたPBA及びLBAがあり得る。 The host may be notified each time a particular data block is moved or may be notified of a new storage location for the data. However, reporting to the host in this way places a considerable burden on the host. Therefore, most flash memory devices maintain a table that informs the host of the logical block address (LBA) where data is stored and maps the LBA to a PBA (often a flash translation hierarchy (FTL)). Thereafter, each time the data is moved to a new PBA, the flash memory updates the LBA-PBA mapping table in the FTL instead of informing the host of the new address. Therefore, for each storage device there may be a PBA and LBA associated with the data.

Look-Asideイレイジャーコーディングロジックにより提示されるように、仮想ストレージ装置の概念を追加すると、この構造にもう1つのレベルが導入される。図3を参照して、イレイジャーコーディング方式が5つの1TB NVMe SSDを含み、各NVMe SSDは、4KBサイズのブロックを使用する、前記提示された例を思い出そう。各NVMe SSDは、0から(228-1)までの番号が付けられたLBAが含まれる。しかし、ホストに提供された仮想ストレージ装置は、0から(230-1)までの番号が付けられるLBAが含まれる。 Adding the concept of virtual storage devices, as presented by Look-Aside erasure coding logic, introduces another level to this structure. Referring to FIG. 3, recall the example presented above where the erasure coding scheme includes five 1TB NVMe SSDs, each NVMe SSD using 4KB size blocks. Each NVMe SSD includes LBAs numbered from 0 to (228-1). However, the virtual storage device provided to the host includes LBAs numbered from 0 to (230-1).

したがって、ホストにより見られるLBA範囲は、多様なストレージ装置に対する多数のLBA範囲の組合せを示す。ホストにより使用されるLBA範囲と個々のストレージ装置のLBA範囲を区別するために、ホストにより使用するLBAを「ホストLBA」、「グローバルLBA」又は「オペレーティングシステム(O/S)-認識LBA」と称される一方、ストレージ装置により使用されるLBAは、「装置のLBA」、「ローカルLBA」又は「RoC後LBA」と称される。ホストLBA範囲は、任意の所望の方法で、多様なストレージ装置に分割される。たとえば、ホストLBA範囲は、隣接したブロックに分割されることができ、個々のブロックは、特定のストレージ装置に割り当てられる。このような方式を使用すれば、ホストLBA0~(228-1)は、ストレージ装置130-1に対する装置LBA0~(228-1)にマッピングされ、ホストLBA228~229-1は、ストレージ装置130-2に対する装置のLBA0~228-1等にマッピングされる。あるいは、ホストLBA内の個々のビットは、当該データを格納する適切なストレージ装置及び装置のLBAを決定するのに使用される。例えば、ホストLBAの下位ビットを使用して装置を識別し、そのビットをストライピングして、ストレージ装置により使用される装置のLBAを生成する。しかし、ホストLBAが装置のLBAにマップされる方法にかかわらず、データが格納される位置を表す2つの、3つの又は潜在的に、はるかに異なるアドレスが有り得る。 Therefore, the LBA ranges seen by the host represent many combinations of LBA ranges for various storage devices. To distinguish between the LBA range used by hosts and the LBA range of individual storage devices, LBAs used by hosts are referred to as "host LBAs," "global LBAs," or "operating system (O/S)-aware LBAs." while the LBA used by a storage device is referred to as a “device LBA,” “local LBA,” or “post-RoC LBA.” The host LBA range is divided among the various storage devices in any desired manner. For example, a host LBA range can be divided into contiguous blocks, with each block assigned to a particular storage device. If such a method is used, host LBA0 to (228-1) will be mapped to device LBA0 to (228-1) for storage device 130-1, and host LBA228 to 229-1 will be mapped to device LBA0 to (228-1) for storage device 130-1. It is mapped to LBA0 to 228-1, etc. of the device. Alternatively, individual bits in the host LBA are used to determine the appropriate storage device and device LBA to store the data. For example, the lower bits of the host LBA are used to identify the device and the bits are striped to generate the device LBA used by the storage device. However, regardless of how the host LBA is mapped to the device's LBA, there may be two, three, or potentially much different addresses representing the location where the data is stored.

もちろん、ストレージ装置が同種であることを要求しない。すなわち、それらは、異なるサイズを有することができ、LBAの数が異なる場合がある。例えば、それらは互いに異なる装置のタイプであり、SSD及びハードディスクドライブが混在されている可能性がある。 Of course, it is not required that the storage devices be of the same type. That is, they may have different sizes and may have different numbers of LBAs. For example, they may be different device types, including a mix of SSDs and hard disk drives.

説明の単純化のために、ストレージ装置に提供されるアドレスが、論理ブロックアドレス(たとえば、ハードディスクドライブ)ではなくても「装置のLBA」という用語が使用される。「装置のLBA」が、データがストレージ装置に格納されたデータのある実際のアドレスである場合には、ストレージ装置は、データにアクセスする前に、装置のLBAを別のアドレスにマッピングしない可能性がある。 For simplicity of explanation, the term "device LBA" is used even though the address provided to the storage device is not a logical block address (eg, a hard disk drive). If the "device LBA" is the actual address at which the data is stored on the storage device, the storage device may not map the device LBA to another address before accessing the data. There is.

図5に再び戻ると、スヌーピングロジック525及びイレイジャーコーディングコントローラ530は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のLook-Asideイレイジャーコーディングロジックとして動作する。スヌーピングロジック525は、(例えば、要請がそれのデスティネーションに伝達される前にインターセプト(intercept)することにより)伝送を「スヌーピング」することができ、マルチプレクサ540を介してスヌーピングロジック525に伝達されるキャプチャインターフェースに535-1~535-6を使用して、適切なデスティネーションを決定する。上述したように、プロセッサ110は、指定された容量(又は特定のサイズのホストメモリアドレスのブロック)の仮想ストレージ装置を単に「見て」、ホストLBA(仮想ストレージ装置と関連される)に基づいて、データの読み取り又は書き込みコのマンドを発行する。スヌーピングロジック525は、これらのホストLBAを一つ以上の特定の物理ストレージ装置上の装置のLBAに変換し、それによって要請を指示するように伝送を変更する。スヌーピングロジック525は、任意の所望の方式で、この変換を管理する。たとえば、スヌーピングロジック525は、Look-Asideイレイジャーコーディングロジックが動作する方式に関連される因子(例えば、(RAIDレベルのような)、それ自体のイレイジャーコーディング方式、ストライプのサイズ、ストレージ装置の数など)により変わってくる装置のLBAを利用して、図3のストレージ装置130-1にホストLBAの第1範囲をマッピングし、図3のストレージ装置130-2にホストLBAの第2範囲をマッピングする等々のテーブルを備える。また、スヌーピングロジック525は、ホストLBA内の特定のビットを使用して図3のストレージ装置130-1~130-6のいずれかに問題の当該データを格納するかを決定する。例えば、アレイがただ2つのストレージ装置を含む場合には、スヌーピングロジック525は、下位ビット(又は論理ブロックアドレスの他のビット)を使用して、データが第1又は第2ストレージ装置のいずれかに記録されるかを決定する。(より多くのストレージ装置はアレイに含まれるに伴い、明らかに、より多くのビットが使用され、論理ブロックアドレスに存在していないストレージ装置を「識別」するビットの組合せが含まれないように注意を払わなければならない。例えば、図3は、ビット値00000~10111を使用する総計24個のストレージ装置130-1~130-6を図示する。よって、11000と11111との間のビットの値は避けるべきである。)本発明の実施形態は、ホストから受信された論理ブロックアドレスを(適切な)ストレージ装置上のブロックアドレスにマッピングする任意の他の所望のアプローチを使用する。 Returning to FIG. 5, snooping logic 525 and erasure coding controller 530 operate as look-aside erasure coding logic for PCIe switch 125, which includes look-aside erasure coding logic. Snooping logic 525 may “snoop” the transmission (e.g., by intercepting the request before it is communicated to its destination) and is communicated to snooping logic 525 via multiplexer 540. Use 535-1 through 535-6 for the capture interface to determine the appropriate destination. As mentioned above, processor 110 simply "looks" at a virtual storage device of a specified capacity (or a block of host memory addresses of a particular size) and determines the virtual storage device based on the host LBA (associated with the virtual storage device). , issues a data read or write command. Snooping logic 525 converts these host LBAs to device LBAs on one or more particular physical storage devices and thereby modifies the transmission to direct the request. Snooping logic 525 manages this conversion in any desired manner. For example, snooping logic 525 may detect factors related to the manner in which the look-aside erasure coding logic operates (e.g., its own erasure coding scheme (such as RAID level), stripe size, number of storage devices, etc.). The first range of host LBA is mapped to storage device 130-1 in FIG. 3, the second range of host LBA is mapped to storage device 130-2 in FIG. Equipped with a table. Snooping logic 525 also uses specific bits in the host LBA to determine whether to store the data in question in any of the storage devices 130-1 to 130-6 of FIG. For example, if the array includes only two storage devices, snooping logic 525 uses the lower bits (or other bits of the logical block address) to determine whether the data is on either the first or second storage device. Decide what will be recorded. (Obviously, as more storage devices are included in the array, more bits will be used; be careful not to include bit combinations that "identify" storage devices that are not present in the logical block address.) For example, FIG. 3 illustrates a total of 24 storage devices 130-1 to 130-6 that use bit values 00000 to 10111. Therefore, the value of the bits between 11000 and 11111 is (Should be avoided.) Embodiments of the present invention use any other desired approach of mapping logical block addresses received from the host to block addresses on the (appropriate) storage device.

たとえば、(イレイジャーコーディングをファクタリング(factoring)(考慮)した後)、ストレージ装置130-1~130-6の全体にわたった全体のストライプを満たすのに十分なデータを有する書き込みの要求を送信する図1のプロセッサ110を考慮しよう。スヌーピングロジック525は、データを個々の論理ユニットに分割することができ、以下で詳述するように、イレイジャーコーディングコントローラ530は、データを提供したり、修正したりする。スヌーピングロジック525は、適切なデータとともにストレージ装置130-1~130-6のそれぞれに予定された一つの伝送を生成することができる。 For example, a diagram of sending a write request with enough data to fill an entire stripe across storage devices 130-1 through 130-6 (after factoring erasure coding) Consider one processor 110. Snooping logic 525 can partition the data into individual logical units, and erasure coding controller 530 provides or modifies the data, as described in more detail below. Snooping logic 525 may generate one transmission scheduled to each of storage devices 130-1 through 130-6 with appropriate data.

スヌーピングロジック525が、元のホストLBAを当該ストレージ装置に適した装置のLBAに代替する場合、その装置のLBAは、物理ブロックのアドレスである必要はないということに留意しなければならない。言い換えれば、スヌーピングロジックによって使用される装置のLBAは、それ自体が他の論理ブロックのアドレスであり得る。このような構造は、物理ストレージ装置が適切な自体のデータストレージを管理することを続けるようにしてくれる。たとえば、物理ストレージ装置がNVMe SSDの場合、SSDは、NANDフラッシュメモリチップのいずれか1つに提供された装置のLBAとPBAとの連結を管理するためのそれのフラッシュ変換層を使用して、データを移動させて、ガービッジコレクションやウェアレベリングを遂行する。これらの動作は、スヌーピングロジック525の認識なしにも発生する。しかし、ホストによって指示されない限り、当該ストレージ装置がデータを再配置しないとすれば、スヌーピングロジック525によって提供される装置のLBAは、ストレージ装置上の物理アドレスである。 It should be noted that when snooping logic 525 replaces the original host LBA with a device LBA appropriate for the storage device, the device LBA does not need to be the address of a physical block. In other words, the LBA of a device used by the snooping logic may itself be an address of another logical block. Such a structure allows the physical storage device to continue to properly manage its own data storage. For example, if the physical storage device is an NVMe SSD, the SSD uses its flash translation layer to manage the concatenation of the device's LBA and PBA provided on any one of the NAND flash memory chips. Move data and perform garbage collection and wear leveling. These operations occur without the knowledge of snooping logic 525. However, the LBA of the device provided by snooping logic 525 is a physical address on the storage device, provided that the storage device does not relocate data unless instructed to do so by the host.

上述したように、イレイジャーコーディングコントローラ530は、イレイジャーコーディング方式を遂行する。イレイジャーコーディング方式により、イレイジャーコーディングコントローラ530は、(例えば、RAID5又はRAID6のイレイジャーコーディング方式を使用する場合)適切なパリティデータを簡単に生成でき、(図1のプロセッサ110により提供されたように)オリジナルデータは、そのまま残される。しかし、本発明のいくつかの実施形態で、イレイジャーコーディングコントローラ530は、オリジナルデータを修正することもできる。たとえば、イレイジャーコーディングコントローラ530は、図3の個々のストレージ装置130-1~130-6に格納されたブロックが、エラーが発生しても、適切に読み取られるようにオリジナルデータにエラー訂正コードを具現する。または、イレイジャーコーディングコントローラ530は、図3のストレージ装置130-1~130-6に記録されたデータを暗号化して、図3のストレージ装置130-1~130-6に記録されたデータが暗号化キーなしに読み取られないようにすることができる(あるいは、より悪い場合、図1のプロセッサ110は、データを直接記録する場合には、イレイジャーコーディングコントローラ530は、ストレージ装置130-1~130-6が損傷されたと考えられる)。または、イレイジャーコーディングコントローラは、図3の各ストレージ装置130-1~130-6に記録されたデータにパリティ情報(又は類似のタイプの情報)を導入することができる。イレイジャーコーディングコントローラ530によって遂行されるように、データについての特定の動作は、使用されるイレイジャーコーディング方式に依存する。 As described above, erasure coding controller 530 performs erasure coding. The erasure coding scheme allows erasure coding controller 530 to easily generate appropriate parity data (e.g., when using a RAID 5 or RAID 6 erasure coding scheme) and the original The data is left untouched. However, in some embodiments of the invention erasure coding controller 530 may also modify the original data. For example, the erasure coding controller 530 implements an error correction code in the original data so that the blocks stored in the individual storage devices 130-1 to 130-6 in FIG. 3 can be read properly even if an error occurs. do. Alternatively, the erasure coding controller 530 encrypts the data recorded in the storage devices 130-1 to 130-6 in FIG. 3 so that the data recorded in the storage devices 130-1 to 130-6 in FIG. (or worse, if processor 110 of FIG. 1 directly records data, erasure coding controller 530 may is considered to have been damaged). Alternatively, the erasure coding controller may introduce parity information (or similar type of information) into the data recorded on each storage device 130-1 through 130-6 in FIG. The particular operations on the data, as performed by erasure coding controller 530, depend on the erasure coding scheme used.

スヌーピングロジック525及びイレイジャーコーディングコントローラ530は、任意の所望の方法で具現される。たとえば、スヌーピングロジック525及びイレイジャーコーディングコントローラ530は、適切なソフトウェアが格納されたプロセッサを使用して具現される。しかし、PCIeスイッチは、(一般的には、数多くの機能を具現する必要がないPCIeスイッチのような装置のプロセッサで実行されるソフトウェアより典型的に高速な)ハードウェア回路として一般的に具現されることから、スヌーピングロジック525と、イレイジャーコーディングコントローラ530は、適切な回路を使用して具現される。この回路は、適切にプログラムされたFPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、又は他の所望のハードウェア具現を含む。 Snooping logic 525 and erasure coding controller 530 are implemented in any desired manner. For example, snooping logic 525 and erasure coding controller 530 are implemented using a processor with appropriate software stored thereon. However, PCIe switches are generally implemented as hardware circuits (which are typically faster than software running on the processor of devices such as PCIe switches, which do not need to implement numerous functions). As such, snooping logic 525 and erasure coding controller 530 are implemented using appropriate circuitry. The circuitry includes a suitably programmed field programmable gate array (FPGA), application-specific integrated circuit (ASIC), or other desired hardware implementation.

最も基本的な実施形態で、Look-Asideイレイジャーコーディングロジックは、スヌーピングロジック525及びイレイジャーコーディングコントローラ530のみを使用して具現される。しかし、Look-Asideイレイジャーコーディングロジックでキャッシュ545及び/又は書き込みバッファ550を含んでいることは相当な利点を提供できる。 In the most basic embodiment, look-aside erasure coding logic is implemented using only snooping logic 525 and erasure coding controller 530. However, including cache 545 and/or write buffer 550 with look-aside erasure coding logic can provide considerable advantages.

キャッシュ545は、仮想ストレージ装置に格納されたデータのサブセットを格納することができる。一般的に、キャッシュ545は、全体の仮想ストレージ装置よりも容量が小さいが、アクセスが速い。したがって、いくつかのデータをキャッシュ545に格納することで、キャッシュ545に対するキャッシュヒットは、基本(基底)物理ストレージ装置からのデータにアクセスするよりも、仮想ストレージ装置の性能がより速くなる可能性がある。たとえば、キャッシュ545は、仮想ストレージ装置から一番最近アクセスされたデータを格納することができ、古くなった(stale)データが増加するにつれて、任意の所望のアルゴリズム(例えば、最も最近使用されたり、最も頻繁に使用されたりするアルゴリズム)を使用して、代替用のデータを識別できる。キャッシュ545は、DRAM、SRAM、MRAM、又は任意の他の望みのメモリの構造のような、任意の所望のメモリ構造を使用して具現される。キャッシュ545は、プロセッサ内のL1又はL2キャッシュにおいて使用されるような、従来のメモリよりも高速なメモリ構造を使用して具現されることもできる。最後に、キャッシュ545をLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の一部として図示したが、キャッシュ545はまた、図1のメモリ115に格納される可能性もあり、Look -Asideイレイジャーコーディングロジックを含むPCIeスイッチ125によってアクセスされる。 Cache 545 may store a subset of data stored on the virtual storage device. Cache 545 typically has a smaller capacity than the overall virtual storage device, but is faster to access. Therefore, by storing some data in cache 545, a cache hit to cache 545 can result in faster performance of the virtual storage device than accessing data from the underlying physical storage device. be. For example, the cache 545 may store the most recently accessed data from the virtual storage device, and as stale data increases, the cache 545 may store the most recently accessed data from the virtual storage device, and as stale data increases, the cache 545 may store the most recently accessed data from the virtual storage device; Alternative data can be identified using the most frequently used algorithms. Cache 545 is implemented using any desired memory structure, such as DRAM, SRAM, MRAM, or any other desired memory structure. Cache 545 may also be implemented using memory structures that are faster than conventional memory, such as those used in L1 or L2 caches within processors. Finally, although cache 545 is illustrated as part of PCIe switch 125 containing look-aside erasure coding logic, cache 545 may also be stored in memory 115 of FIG. PCIe switch 125 including the PCIe switch 125.

書き込みバッファ550は、書き込み要請を迅速に処理するためのメカニズムを提供する。イレイジャーコーディングを使用して、多数の物理ストレージ装置を拡張(包括)する仮想ストレージ装置への書き込み動作を遂行するために必要な時間は、単一の物理ストレージ装置への類似の書き込み要請よりも遅い可能性がある。記録(書き込み)動作を遂行することは、同じブロック内の他のストレージ装置からデータを読み出す段階を伴うことができ、その後で新たなデータがマージされることができ、その次にマージされたデータは、適切なストレージ装置に再び書き込みされる。マージを遂行するのは、パリティ又は他のコード情報を計算することを含むこともできる。また、基本的物理ストレージ装置が他の動作(例えば、読み取り要請を処理すること)を遂行して、忙しい状態である場合には、書き込み要請がまた遅延されることもできる。書き込み要請が完了するまで待っている間、図1のプロセッサ110上で実行されるソフトウェアを遅延させることは望ましくない可能性がある。したがって、図1のプロセッサ110上で実行されるソフトウェアを遮断する代わりに、スヌーピングロジック525が書き込み要請が既に完了したことを、図1のプロセッサ110上で実行されるソフトウェアに通知するうちに、書き込みバッファ550は、基本的物理ストレージ装置に対する記録が完了するまで、一時的にデータを格納できる。このアプローチは、プロセッサ110で実行中のソフトウェアへの書き込みが完了したことを通知する前に、書き込み動作が完了されるライト・バック(write-back)キャッシュポリシー(write-back cache policy)と比較されるライト・スルーキャッシュポリシー(write-through cache policy)と類似する。キャッシュ545と同様に、書き込みバッファ550は、DRAM、SRAM、MRAM、又はL1若しくはL2キャッシュの構造のような任意の所望のメモリ構造を使用して具現される。 Write buffer 550 provides a mechanism for quickly processing write requests. Using erasure coding, the time required to accomplish a write operation to a virtual storage device that extends (encompasses) a large number of physical storage devices is slower than a similar write request to a single physical storage device. there is a possibility. Performing a recording (write) operation can involve reading data from other storage devices in the same block, after which new data can be merged, and then the merged data is written back to the appropriate storage device. Performing the merge may also include calculating parity or other code information. Write requests may also be delayed if the underlying physical storage device is busy performing other operations (eg, processing read requests). It may be undesirable to delay software running on processor 110 of FIG. 1 while waiting for a write request to complete. Therefore, instead of blocking the software running on processor 110 of FIG. 1, the write Buffer 550 can temporarily store data until recording to the underlying physical storage device is complete. This approach is compared to a write-back cache policy in which write operations are completed before notifying the software running on processor 110 that the write is complete. This is similar to the write-through cache policy. Like cache 545, write buffer 550 is implemented using any desired memory structure, such as DRAM, SRAM, MRAM, or an L1 or L2 cache structure.

書き込み動作を遂行する一部として、Look-Asideイレイジャーコーディングロジックは、書き込み動作を完了するのに必要な任意のデータが現在のキャッシュ545に存在するか否かをチェックできる。例えば、図1のプロセッサ110は、仮想ストレージ装置への書き込み要請を伝送すると、イレイジャーコーディング方式は、パリティ又は他のコード情報を計算するために、全体のストライプが読み取られることを要求することができる。そのデータの一部(又は全部)がキャッシュ545に存在する場合、データは基本的物理ストレージ装置からデータを読み出すのではなく、キャッシュ545からアクセスされることができる。さらに、キャッシュポリシーは、データが短期間に再び要求される場合に、記録されるデータがキャッシュ545にもキャッシュされるべきだと提案できる。 As part of performing the write operation, the look-aside erasure coding logic can check whether any data needed to complete the write operation is present in the current cache 545. For example, when the processor 110 of FIG. 1 transmits a write request to a virtual storage device, the erasure coding scheme may require that the entire stripe be read in order to calculate parity or other code information. . If some (or all) of that data resides in cache 545, the data can be accessed from cache 545 rather than reading the data from the underlying physical storage device. Additionally, the cache policy may suggest that the recorded data should also be cached in cache 545 if the data is requested again in a short period of time.

一方、図5は、キャッシュ545及び書き込みバッファ550を別個の要素として図示するが、本発明の実施形態は、両者を単一の要素(単に「キャッシュ」と称されることがある)に結合できる。本発明の実施形態で、キャッシュは、キャッシュに格納されたデータが「クリーン(clean)」なのか「ダーティ(dirty)」なのかを示すビットを含む。「クリーン」データは、基本物理ストレージ装置に最後に記録された後に、読み出されたが、修正されていないデータを示す。「ダーティ」であるデータは、基本的物理ストレージ装置に最後に記録された後に、修正されたデータである。キャッシュに「ダーティ」のデータが含まれている場合は、Look-Asideイレイジャーコーディングロジックは、キャッシュポリシーに従ってデータがキャッシュから削除されるとき、「ダーティ」データを基本的ストレージ装置に再び書き込む必要がある。なお、本発明の実施形態は、キャッシュ545、書き込みバッファ550の両方(個別に、又は単一の要素に結合される)を含むか、又はその両方を含まない可能性がある。 On the other hand, although FIG. 5 depicts cache 545 and write buffer 550 as separate elements, embodiments of the present invention may combine both into a single element (sometimes simply referred to as a "cache"). . In embodiments of the invention, the cache includes a bit that indicates whether the data stored in the cache is "clean" or "dirty." "Clean" data indicates data that has been read but has not been modified since it was last recorded on the underlying physical storage device. Data that is "dirty" is data that has been modified since it was last recorded on the underlying physical storage device. If the cache contains "dirty" data, the Look-Aside erasure coding logic requires that the "dirty" data be written back to the underlying storage device when the data is removed from the cache according to the cache policy. . It is noted that embodiments of the present invention may include both cache 545, write buffer 550 (separately or combined into a single element), or neither.

上述したように、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のLook-Asideイレイジャーコーディングロジックは、基本的物理ストレージ装置から仮想ストレージ装置を「生成」することができ、これは、図1のプロセッサ110が図3の物理ストレージ装置130-1~130-6への直接アクセスを得る場合に問題になる。したがって、図1のマシン105は、初期にブート(つまり、開始又は電源オン)し、アクセス可能な多様なPCIe装置を列挙しようと試みる場合には、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、それに連結されたストレージ装置とともにLook-Asideイレイジャーコーディングロジックを使用するように決定する。この場合に、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125から任意のPCIe装置のダウンストリームの列挙を防止しなければならない。これらの列挙を防止することにより、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図3のストレージ装置130-1~130-6上のデータに直接アクセスできる図1のプロセッサ110を考慮せずに(イレイジャーコーディング方式で使用されたデータを損傷させることができる)仮想ストレージ装置を「生成」する。しかし、図9及び図10を参照して、以下に説明されているように、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125がPCIe装置のダウンストリームの列挙を許容しなければならない状況が有り得る。 As discussed above, the look-aside erasure coding logic of the PCIe switch 125, which includes look-aside erasure coding logic, can "spawn" a virtual storage device from the underlying physical storage device, which is similar to the processor of FIG. This becomes a problem when 110 gains direct access to the physical storage devices 130-1 to 130-6 in FIG. Thus, when the machine 105 of FIG. 1 initially boots (i.e., starts or powers on) and attempts to enumerate the various PCIe devices it has access to, the PCIe switch 125 containing the Look-Aside erasure coding logic , decides to use Look-Aside erasure coding logic with the storage device coupled thereto. In this case, the PCIe switch 125 that includes Look-Aside erasure coding logic must prevent enumeration of any PCIe devices downstream from the PCIe switch 125 that includes Look-Aside erasure coding logic. By preventing these enumerations, the PCIe switch 125 that includes Look-Aside erasure coding logic can access data on the storage devices 130-1 through 130-6 of FIG. 3 without regard to the processor 110 of FIG. ``Create'' a virtual storage device (which can damage data used in erasure coding schemes). However, as described below with reference to FIGS. 9 and 10, there may be situations in which a PCIe switch 125 that includes Look-Aside erasure coding logic must allow downstream enumeration of PCIe devices.

スヌーピングロジック525は、PPU520に構成コマンドを伝達する。このように、スヌーピングロジック525は、またPCIeスイッチコア515をPPU520と連結するための目的でPCIe-to-PCIeスタックとして動作する。 Snooping logic 525 communicates configuration commands to PPU 520. In this way, snooping logic 525 also operates as a PCIe-to-PCIe stack for the purpose of coupling PCIe switch core 515 with PPU 520.

最後に、スヌーピングロジック525は、図1のプロセッサ110から(おそらくLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125上のピンを介して)、イレイジャーコーディングイネーブル信号555を受信する。イレイジャーコーディングイネーブル信号555は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125において、イレイジャーコーディングロジックをイネーブル及びディセーブルさせることを可能にするために使用される。 Finally, snooping logic 525 receives erasure coding enable signal 555 from processor 110 of FIG. 1 (perhaps via a pin on PCIe switch 125 that includes look-aside erasure coding logic). Erasure coding enable signal 555 is used to enable erasure coding logic to be enabled and disabled in PCIe switch 125 that includes look-aside erasure coding logic.

図6は、本発明の他の実施形態によるLook-Throughイレイジャーコーディングロジックを含むPCIeスイッチの詳細を示す図である。図5及び図6と比較して分かるように、図5のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125と、図6のLook-Throughイレイジャーコーディングロジックを含むPCIeスイッチ605で、Look-AsideイレイジャーコーディングロジックとLook-Throughイレイジャーコーディングロジックとの間の主な違いは、イレイジャーコーディングロジックが配置されるところである。図5のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125において、イレイジャーコーディングロジックは、PCIeスイッチの「側面」に存在し、一方、図6のLook-Throughイレイジャーコーディングロジックを含むPCIeスイッチ605では、イレイジャーコーディングロジックは、PCIeスイッチと同一ライン上に(「inline)」)ある。 FIG. 6 is a diagram illustrating details of a PCIe switch including look-through erasure coding logic according to another embodiment of the invention. As can be seen by comparing with FIGS. 5 and 6, the PCIe switch 125 including Look-Aside erasure coding logic in FIG. 5 and the PCIe switch 605 including Look-Through erasure coding logic in FIG. 6 perform Look-Aside erasure coding. The main difference between logic and Look-Through erasure coding logic is where the erasure coding logic is placed. In the PCIe switch 125 with Look-Aside erasure coding logic of FIG. The coding logic is "inline" with the PCIe switch.

Look-Throughイレイジャーコーディングロジックと比較してLook-Asideイレイジャーコーディングロジックを使用することは、技術的に利点と欠点を有する。図5のLook-Asideイレイジャーコーディングロジックは、ホストからのデータの方向転換をインターセプトし管理するために、スヌーピングロジック525が必要であるため、より複雑な具現である。対照的に、ホストと図3のストレージ装置130-1~130-6との間のすべてのデータは、イレイジャーコーディングコントローラ530を通過するため、図6のLook-Throughイレイジャーコーディングロジックの具現がより簡単である。一方、イレイジャーコーディングロジックがディセーブルされると、Look-Asideイレイジャーコーディングロジックは、PCIeスイッチ125の動作に追加の遅延を導入しない。対照的に、図6のLook-Throughイレイジャーコーディングロジックは、PCIeエンドポイントとして動作する。図6のLook-Throughイレイジャーコーディングロジックは、ホストと図3のストレージ装置130-1~130-6との間のデータをバッファリングさせることができ、これは通信の遅延を増加させる。図6のLook-Throughイレイジャーコーディングロジックで、イレイジャーコーディングコントローラ530は、またフレームバッファ、パステーブル、ポート調整ロジック及びスケジューラ(図6に図示せず)のような要素を含む。つまり、一般的にPCIeスイッチコア515内に含まれる要素である。 Using Look-Aside erasure coding logic compared to Look-Through erasure coding logic has technical advantages and disadvantages. The Look-Aside erasure coding logic of FIG. 5 is a more complex implementation because it requires snooping logic 525 to intercept and manage data redirection from the host. In contrast, all data between the host and the storage devices 130-1 to 130-6 in FIG. 3 passes through the erasure coding controller 530, making it easier to implement the Look-Through erasure coding logic in FIG. It is. On the other hand, when the erasure coding logic is disabled, the Look-Aside erasure coding logic does not introduce any additional delay into the operation of the PCIe switch 125. In contrast, the Look-Through erasure coding logic of FIG. 6 operates as a PCIe endpoint. The Look-Through erasure coding logic of FIG. 6 may buffer data between the host and the storage devices 130-1 to 130-6 of FIG. 3, which increases communication delay. In the Look-Through erasure coding logic of FIG. 6, erasure coding controller 530 also includes elements such as a frame buffer, a path table, port adjustment logic, and a scheduler (not shown in FIG. 6). That is, it is an element generally included within the PCIe switch core 515.

なお、一般的にPCIeスイッチは、(ホストへの)アップストリーム及び(ストレージ装置やその他の連結された装置への)ダウンストリームのトラフィックにおいて同じ数のポートを使用する。例えば、PCIeスイッチ605が総計96個のポートを含むと、一般的にアップストリームのトラフィックには、48個使用され、ダウンストリームのトラフィックには、48個使用される。しかし、図6のLook-Throughイレイジャーコーディングロジックがイネーブルされると、レーザコーディングコントローラ530は、すべてのダウンストリーム装置を仮想化する。このような状況で、一般的にホストとの通信には、単に16個あるいはおそらく32個のアップストリームポートが必要である。PCIeスイッチ605が32個又は64個よりも多くのポートを含む場合には、追加のポートは、仮想ストレージ装置の容量を増加させるために使用される追加のダウンストリーム装置を連結するのに使用される。このためには、図6のイレイジャーコーディングコントローラ530は、ホストと通信するために不透明ブリッジ(NTB)ポートを使用する。 Note that PCIe switches generally use the same number of ports for upstream (to hosts) and downstream (to storage devices and other connected devices) traffic. For example, if PCIe switch 605 includes a total of 96 ports, 48 are typically used for upstream traffic and 48 are used for downstream traffic. However, when the Look-Through erasure coding logic of FIG. 6 is enabled, laser coding controller 530 virtualizes all downstream devices. In such situations, communication with the host typically requires only 16 or perhaps 32 upstream ports. If the PCIe switch 605 includes more than 32 or 64 ports, the additional ports may be used to connect additional downstream devices that are used to increase the capacity of the virtual storage device. Ru. To this end, erasure coding controller 530 of FIG. 6 uses a opaque bridge (NTB) port to communicate with the host.

図6は、Look-Throughイレイジャーコーディングロジックを含むPCIeスイッチ605を示す。しかし、本発明の実施形態は、PCIeスイッチ605からLook-Throughイレイジャーコーディングロジックを分離する。たとえば、Look-Throughイレイジャーコーディングロジックは、FPGA又はASICを使用するPCIeスイッチ605とは別の構成として、具現される。 FIG. 6 shows a PCIe switch 605 that includes Look-Through erasure coding logic. However, embodiments of the present invention separate the Look-Through erasure coding logic from the PCIe switch 605. For example, look-through erasure coding logic may be implemented as a separate component from PCIe switch 605 using an FPGA or ASIC.

しかし、図5に図示したLook-Asideイレイジャーコーディングロジックと、図6に図示したLook-Throughイレイジャーコーディングロジックとの間には、具現上及び技術上の違いがある一方、機能的には、イレイジャーコーディングロジックは、すべて類似した結果を達成する。したがって、図5に図示したLook-Asideイレイジャーコーディングロジックと、図6に図示したLook-Throughイレイジャーコーディングロジックは、必要に応じて交替される。本明細書で、Look-Asideイレイジャーコーディングロジックに対するどのような参照も、Look-Throughイレイジャーコーディングロジックを含むように意図する。 However, while there are practical and technical differences between the look-aside erasure coding logic illustrated in FIG. 5 and the look-through erasure coding logic illustrated in FIG. The logic all achieve similar results. Accordingly, the Look-Aside erasure coding logic illustrated in FIG. 5 and the Look-Through erasure coding logic illustrated in FIG. 6 may be interchanged as needed. Any reference herein to Look-Aside erasure coding logic is intended to include Look-Through erasure coding logic.

図7~図10は、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための様々なトポロジを示している。しかし、使用中のトポロジにかかわらず、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の動作は、同一である。つまり、様々な接続されたストレージ装置に連結性を提供し、そのストレージ装置で、イレイジャーコーディングをサポートするためである。 7-10 illustrate various topologies for using PCIe switch 125 including the look-aside erasure coding logic of FIG. However, regardless of the topology in use, the operation of PCIe switch 125, including the look-aside erasure coding logic of FIG. 1, is the same. That is, to provide connectivity to various connected storage devices and to support erasure coding on the storage devices.

図7は、本発明の一実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための第1トポロジを示す図である。図7において、図1のマシン105の分離された構成として具現されるイレイジャーコーディングロジックを含むPCIeスイッチ125を図示する。つまり、イレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110又はストレージ装置130のような任意の他の構成とは別途に製造・販売されることができる。 FIG. 7 is a diagram illustrating a first topology for using PCIe switch 125 including the look-aside erasure coding logic of FIG. 1, in accordance with one embodiment of the invention. 7, a PCIe switch 125 is illustrated that includes erasure coding logic implemented as a separate component of machine 105 of FIG. That is, PCIe switch 125 containing erasure coding logic can be manufactured and sold separately from any other components, such as processor 110 or storage device 130 of FIG.

Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130に連結される。図7において、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングをサポートしない可能性のある、ただ単一のストレージ装置にだけ接続されたものとして図示する。つまり、イレイジャーコーディングは、ストライピング、チャンク(chunking)、グループ化及びパリティ又はコード情報の使用を遂行するために、少なくとも2つのストレージ装置やストレージ装置の少なくとも二つの部分を要求する。しかし、Look-Asideイレイジャーコーディングロジックを有する単一のストレージ装置のPCIeスイッチ125によってもいくつかの利点を提供する。たとえば、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、サービスがストレージ装置130によって自然に提供されない場合、ストレージ装置130とともにエラー訂正コードを使用したり、ストレージ装置130に格納されたデータを暗号化することをサポートしたりする。 A PCIe switch 125 containing look-aside erasure coding logic is coupled to a storage device 130. In FIG. 7, a PCIe switch 125 containing look-aside erasure coding logic is illustrated as being connected to only a single storage device, which may not support erasure coding. That is, erasure coding requires at least two storage devices or at least two portions of a storage device to perform striping, chunking, grouping, and use of parity or code information. However, a single storage device PCIe switch 125 with look-aside erasure coding logic also provides several advantages. For example, the PCIe switch 125 that includes Look-Aside erasure coding logic may use error correction codes with the storage device 130 or encrypt data stored on the storage device 130 if the service is not naturally provided by the storage device 130. support what you do.

ストレージ装置130は、またFPGA705に連結され。FPGA705は、加速(acceleration)をサポートする。つまり、データが処理され、その次に廃棄される必要がある状況があり得る。処理を遂行するために、すべてのデータを図1のプロセッサ110にロードすることは、多くの時間と費用を所要する。データにより近い計算は、より簡単に行われる。FPGA705は、計算を遂行するために、図1のプロセッサ110にロードされるデータに対する必要性を回避しつつ、ストレージ装置にもっと近いこのような計算を遂行することをサポートする。つまり、この概念は、「加速(アクセラレーション)」と称される。FPGAベースの加速度は、ここで参照として引用される2018年3月13日に出願された米国仮出願第62/642,568号、2018年3月9日に出願された米国仮出願第62/641,267号、および2018年3月5日に出願された米国仮出願第62/638,904号に対し優先権主張し、2018年9月5日に出願された米国出願第16/122,865号に開示され、また、ここで参照として引用される2018年9月6日に出願の米国出願第16/124,179号、2018年9月6日に出願された米国出願第16/124,183号、および2018年9月5日に出願された米国仮出願第16/122,865号に開示されている。加速度の目的は、データを図1のプロセッサ110に伝送せずに処理するため、図7は、ストレージ装置130に、より近いFPGA705を図示する。しかし、図7に示す特定の列挙が要求されないことに留意しよう。つまり、FPGA705は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125とストレージ装置130との間に位置する。 Storage device 130 is also coupled to FPGA 705. FPGA 705 supports acceleration. That is, there may be situations where data needs to be processed and then discarded. Loading all the data into the processor 110 of FIG. 1 to perform processing is time consuming and expensive. Calculations that are closer to the data are easier to perform. FPGA 705 supports performing such calculations closer to the storage device, while avoiding the need for data to be loaded into processor 110 of FIG. 1 to perform the calculations. In other words, this concept is called "acceleration." FPGA-based acceleration is described in U.S. Provisional Application No. 62/642,568, filed March 13, 2018, and U.S. Provisional Application No. 62/642, filed March 9, 2018, which are incorporated herein by reference. No. 641,267, and U.S. Provisional Application No. 62/638,904, filed on March 5, 2018, and U.S. Application No. 16/122, filed on September 5, 2018, No. 16/124,179, filed September 6, 2018, and US Application No. 16/124, filed September 6, 2018, disclosed in US Pat. , 183, and U.S. Provisional Application No. 16/122,865, filed September 5, 2018. Because the purpose of acceleration is to process data without transmitting it to the processor 110 of FIG. 1, FIG. 7 illustrates the FPGA 705 closer to the storage device 130. Note, however, that the specific enumeration shown in FIG. 7 is not required. That is, the FPGA 705 is located between the PCIe switch 125 that includes Look-Aside erasure coding logic and the storage device 130.

データ加速(data acceleration)に加えて、FPGA705は、他の機能性を提供してストレージ装置130をサポートする。たとえば、FPGA705は、同じデータがストレージ装置130に格納される回数を減少させるストレージ装置130に対するデータ重複排除機能(data deduplication functions)を具現する。FPGA705は、特定のデータがストレージ装置130に二つ以上格納されたかを判定し、多様な論理ブロックアドレス(またはデータを識別するためにホストによって使用される他の情報)間の関連性を構成し、データストレージ装置130に格納された場合、追加のコピーを削除する。 In addition to data acceleration, FPGA 705 provides other functionality to support storage device 130. For example, the FPGA 705 implements data deduplication functions for the storage device 130 that reduce the number of times the same data is stored on the storage device 130. The FPGA 705 determines whether more than one particular piece of data is stored on the storage device 130 and configures associations between the various logical block addresses (or other information used by the host to identify the data). , the additional copies are deleted if stored on the data storage device 130.

あるいは、FPGA705は、ストレージ装置130の動作でエラーを通じたデータの損失を防止するデータ訂正コード(Error Correcting Code)の挿入、またはエンドツーエンド保護(end-to-end prot4ection)のためのCRC(Cyclic Redundancy Correction)を使用しているT10DIF(Data integrity Field)のように、ストレージ装置130にデータ信頼性(インテグリティ)機能(data integrity functions)を具現する。この方式で、FPGA705は、オリジナルのデータを復元し、伝送中にデータやストレージ装置130上のデータを読み取るか書き込むうちにエラーがあることを検出することができる。FPGA705は、データインテグリティ機能が提供されていることをホストが認知することなく、データインテグリティ(信頼性)機能を具現する。ホストは、ただデータ自体のみ識別でき、エラー訂正コード(Error Correcting Codes)を識別することができない。 Alternatively, the FPGA 705 inserts a data correction code (Error Correcting Code) to prevent data loss due to errors in the operation of the storage device 130, or inserts a CRC (Cyclic Code) for end-to-end protection. The storage device 130 implements data integrity functions, such as a data integrity field (T10DIF) using redundancy correction. In this manner, the FPGA 705 can restore the original data and detect that there are errors while reading or writing the data during transmission or on the storage device 130. The FPGA 705 implements data integrity (reliability) functionality without the host knowing that data integrity functionality is provided. The host can only identify the data itself and cannot identify error correcting codes.

あるいは、FPGA705は、ストレージ装置130上のデータにアクセスできる非認証ユーザーから保護するためのストレージ装置130上のデータの暗号化機能(data encryption functions)を具現できる。適切な暗号化キーが提供されることなしに、FPGA705から返されたデータは、要請者(requestor)に無意味であり得る。ホストは、データを読み書きするときに使用する暗号化キーを提供する。また、FPGA705は、自動的にデータの暗号化及び復号化(encryption and decryption)を遂行する。FPGA705は、暗号キーを格納でき、(ホストに代わって、それらを生成できる)誰がデータを要請するかに基づいて使用される適切な暗号化キーを判定する。 Alternatively, the FPGA 705 can implement data encryption functions on the storage device 130 to protect data on the storage device 130 from unauthorized users who can access it. Without the appropriate encryption key provided, the data returned from the FPGA 705 may be meaningless to the requestor. The host provides an encryption key to use when reading and writing data. Additionally, the FPGA 705 automatically performs data encryption and decryption. The FPGA 705 can store cryptographic keys and determine the appropriate cryptographic keys to use based on who requests the data (and can generate them on behalf of the host).

あるいは、FPGA705は、ストレージ装置130にデータを格納するために必要とされる総空間を減少させるストレージ装置130上のデータ圧縮機能(data compression functions)を具現できる。ストレージ装置130にデータを書き込むときに、FPGA705は、ホストから提供されたデータをより小さなサイズのストレージに圧縮し、その後に圧縮されたデータ(ストレージ装置130からのデータを読み取るときに、オリジナルのデータを復元するのに必要な情報とともに)を格納する。ストレージ装置130からデータを読み取るとき、FPGA705は、圧縮されたデータ(圧縮されたデータからオリジナルのデータを復元するのに必要な情報とともに)を読み取り、圧縮を解除してオリジナルのデータを復元することができる。 Alternatively, FPGA 705 can implement data compression functions on storage device 130 that reduce the total space required to store data on storage device 130. When writing data to the storage device 130, the FPGA 705 compresses the data provided by the host into a smaller storage size, and then compresses the compressed data (when reading data from the storage device 130, the original data (along with the information necessary to restore it). When reading data from the storage device 130, the FPGA 705 reads the compressed data (along with the information necessary to restore the original data from the compressed data) and decompresses it to restore the original data. I can do it.

データ重複排除、データのインテグリティ(信頼性)、データの暗号化、およびデータ圧縮の適切な具現が使用されることができる。本発明の実施形態は、これらの機能の特定の具現に限定されない。 Suitable implementations of data deduplication, data integrity, data encryption, and data compression may be used. Embodiments of the invention are not limited to specific implementations of these features.

FPGA705は、意図されたようなストレージ装置130上の機能の組合せを具現する。FPGA705は、データ圧縮とデータ信頼性(これは、データ圧縮が、データのエラー敏感度を増加させることができるため、ストレージ装置130に格納されたデータのシングル(single)エラーは、使用できないデータのサイズを増加させることができる)の両方を具現することができる。FPGA705は、(可能なデータの小さなストレージを使用しながらデータを保護するために)データの暗号化及びデータ圧縮の両方を具現できる。二つ以上の機能の他の組合せは、FPGA705によって提供される。 FPGA 705 embodies the combination of functionality on storage device 130 as intended. The FPGA 705 provides data compression and data reliability (this is because data compression can increase the error sensitivity of the data, so a single error in data stored in the storage device 130 can lead to unusable data). (the size can be increased). The FPGA 705 can implement both data encryption and data compression (to protect the data while using possible small storage of data). Other combinations of two or more functions are provided by FPGA 705.

全体的な動作のコンテキストにおいて、これらの機能を具現する際に、FPGA705は、適切なソースからデータを読み取る。「ソース(source)」の用語は単数形であるが、本発明の実施形態は、適切な場合に、(多数のストレージ装置のような)多数のソースからデータを読み取ることができる。FPGA705は、データ加速(acceleration、アクセラレーション)、データ集積、データ暗号化、及び/又はデータ圧縮のようなデータについての適切な動作を遂行する。FPGA705は、動作の結果を使用して適切な対応(action)を、例えば、図1のホスト105に結果を伝送すること、またはストレージ装置130にデータを記入することを行うことができる。 In implementing these functions in the context of overall operation, FPGA 705 reads data from appropriate sources. Although the term "source" is singular, embodiments of the invention may read data from multiple sources (such as multiple storage devices) where appropriate. FPGA 705 performs appropriate operations on the data, such as data acceleration, data aggregation, data encryption, and/or data compression. FPGA 705 may use the results of the operations to take appropriate actions, such as transmitting the results to host 105 of FIG. 1 or writing data to storage device 130.

機能性(functionalities)を図7のFPGA705を参照して説明したが、本発明の実施形態は、FPGAを含むシステムのどの部分でも、これらの機能を含む。さらに、本発明の実施形態は、「遠距離(distant)」のストレージ装置からデータにアクセスするFPGA705を含むことができる。例えば、図3に戻って、ストレージ装置130-1がFPGA705と類似したFPGAを含むが、ストレージ装置130-2は、これらのストレージ装置を含まないと仮定する。ストレージ装置130-1に含まれたFPGAは、ストレージ装置130-2に要請を伝送することにより、ストレージ装置130-2にそれらの機能性を適用するのに使用される。たとえば、ストレージ装置130-1のFPGAがデータ加速を提供する場合、ストレージ装置130-1のFPGAは、ストレージ装置130-2からデータを読み取るための要請を伝送し、適切な加速を遂行してから、その後に、(図1のマシン105のような)適切なデスティネーションに結果を伝送することができる。 Although the functionalities have been described with reference to FPGA 705 in FIG. 7, embodiments of the invention include these functions in any part of the system that includes an FPGA. Additionally, embodiments of the invention may include an FPGA 705 that accesses data from a "distant" storage device. For example, returning to FIG. 3, assume that storage device 130-1 includes an FPGA similar to FPGA 705, but storage device 130-2 does not include these storage devices. The FPGA included in storage device 130-1 is used to apply those functionalities to storage device 130-2 by transmitting requests to storage device 130-2. For example, if the FPGA of storage device 130-1 provides data acceleration, the FPGA of storage device 130-1 transmits a request to read data from storage device 130-2, performs the appropriate acceleration, and then , the results may then be transmitted to an appropriate destination (such as machine 105 in FIG. 1).

図7において(そして、図8~図10に図示したトポロジにおいて)、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングに適していない装置に付着される。たとえば、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、内蔵(built-in)のイレイジャーコーディング機能を有する他のストレージ装置やストレージ装置ではない図7のFPGA705又はGPUのような装置に付着される。これらのすべての装置は、イレイジャーコーディング(又は少なくともLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチ125によるイレイジャーコーディング)に対し資格のない装置として記述される。 In FIG. 7 (and in the topology illustrated in FIGS. 8-10), a PCIe switch 125 containing look-aside erasure coding logic is attached to a device that is not suitable for erasure coding. For example, the PCIe switch 125 containing Look-Aside erasure coding logic may be attached to a device such as the FPGA 705 or GPU of FIG. 7 that is not a storage device or other storage device that has built-in erasure coding functionality. . All these devices are described as devices that are not eligible for erasure coding (or at least erasure coding by PCIe switch 125 with Look-Aside erasure coding logic).

Look-Asideイレイジャーコーディングロジックを有するPCIeスイッチ125が、イレイジャーコーディングに対し資格のない装置に接続されるとき、システムは、使用される様々な代替案を有する。本発明の一実施形態で、イレイジャーコーディングに対する資格のない任意の装置を包含することは、Look-Asideイレイジャーコーディングロジックを有するPCIeスイッチ125のLook-Asideイレイジャーコーディングロジックをディセーブルさせる。したがって、例えば、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、図7のFPGA705、GPU又はネイティブ(native)イレイジャーコーディングロジックを有するストレージ装置に連結されると、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に接続されたストレージ装置のいずれか1つも、イレイジャーコーディングとともに使用されることができない。Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のLook-Asideイレイジャーコーディングロジックをディセーブルさせる決定は、必然的に同じシャーシ又は他のシャーシ内のLook-Asideイレイジャーコーディングロジックを含む他のPCIeスイッチに変換されるわけではないことに留意しよう。例えば、図3は、Look-Asideイレイジャーコーディングロジックを含む2つのPCIeスイッチ125、320を図示し、その中の一つは、イネーブルされたLook-Asideイレイジャーコーディングロジックを有し、他の1つはディセーブルされたLook-Asideイレイジャーコーディングロジックを有する。 When a PCIe switch 125 with Look-Aside erasure coding logic is connected to a device that is not eligible for erasure coding, the system has various alternatives that can be used. In one embodiment of the invention, inclusion of any device that is not eligible for erasure coding disables the look-aside erasure coding logic of the PCIe switch 125 that has look-aside erasure coding logic. Thus, for example, when the PCIe switch 125 containing look-aside erasure coding logic is coupled to the FPGA 705 of FIG. Any one of the storage devices connected to switch 125 cannot be used with erasure coding. A decision to disable look-aside erasure coding logic in a PCIe switch 125 that contains look-aside erasure coding logic necessarily translates into other PCIe switches containing look-aside erasure coding logic in the same chassis or in other chassis. Please note that this does not mean that For example, FIG. 3 illustrates two PCIe switches 125, 320 that include look-aside erasure coding logic, one of which has look-aside erasure coding logic enabled and the other Has Look-Aside erasure coding logic disabled.

本発明の他の実施形態は、イレイジャーコーディング資格のない装置をディセーブルさせ、これらをまるでLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125にまったく連結されていないかのように処理する。本発明の実施形態で、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130に対するLook-Asideイレイジャーコーディングロジックをイネーブルさせ、イレイジャーコーディング資格のある任意の他のストレージ装置は、まるでLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結されていないかのように、ディセーブルされる。 Other embodiments of the present invention disable devices that are not eligible for erasure coding and treat them as if they were not coupled at all to the PCIe switch 125 containing look-aside erasure coding logic. In embodiments of the invention, the PCIe switch 125 that includes look-aside erasure coding logic enables the look-aside erasure coding logic for the storage device 130, and any other storage device eligible for erasure coding is configured as if it were a look-aside erasure coding logic. It is disabled as if it were not coupled to the PCIe switch 125 containing the Aside erasure coding logic.

本発明の他の実施形態では、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、Look-Asideイレイジャーコーディングロジックによってカバーされるストレージ装置のためのLook-Asideイレイジャーコーディングロジックをイネーブルさせうるが、イレイジャーコーディングへのアクセスの資格がない他の装置をイネーブルさせる。本発明のこれらの実施形態は、最も複雑な具現である。Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ある装置がイレイジャーコーディングに適合しているか、ある装置が適合していないかを決定する必要があり、その次のトラフィックが仮想ストレージ装置に指定されるか(この場合、トラフィックは、Look-Asideイレイジャーコーディングロジックによってインターセプトされる)、指定されないか(この場合、トラフィックは、その既存のデスティネーションに伝達される)を決定するために、トラフィックを分析する必要がある。 In other embodiments of the invention, a PCIe switch 125 that includes look-aside erasure coding logic may enable look-aside erasure coding logic for storage devices covered by the look-aside erasure coding logic, but with no erasure coding logic. Enable other devices that are not eligible for access to the coding. These embodiments of the invention are the most complex implementations. A PCIe switch 125 that includes look-aside erasure coding logic must determine whether a device is compliant with erasure coding or not, and the next traffic is directed to the virtual storage device. Analyze the traffic to determine whether it is specified (in this case, the traffic is intercepted by the Look-Aside erasure coding logic) or unspecified (in this case, the traffic is delivered to its existing destination). There is a need to.

マシン105がインストールされた装置の完全な機能を提供しない本発明の実施形態で(つまり、イレイジャーコーディングに対し資格のない装置またはLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125によってディセーブルされる装置の存在に起因して、イレイジャーコーディングがディセーブルされる本発明の実施形態で)、マシン105は、ユーザーにこの事実を通知することができる。この通知は、図1のプロセッサ110、図3のBMC325またはLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125によって提供される。いくつかの機能がディセーブルされたことをユーザーに知らせることに加えて、通知は、またユーザーにマシン105をどのように再構成して追加された機能を許容するかをユーザーに知らせることができる。例えば、通知は、イレイジャーコーディングの資格のない装置が図3のミッドプレーン305の特定のスロットに連結されること-おそらくLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ320に連結されたスロット-そして、イレイジャーコーディングの資格のあるストレージ装置は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結されたスロットのような他のスロットに連結されることを提案できる。このような方式で、イレイジャーコーディングの資格のある少なくとも一部のストレージ装置は、イレイジャーコーディングの資格のない他の装置へのアクセスを遮断することなく、イレイジャーコーディング方式から利点を得られる。 In embodiments of the invention in which machine 105 does not provide the full functionality of the installed device (i.e., a device that is not eligible for erasure coding or that is disabled by PCIe switch 125 that contains Look-Aside erasure coding logic) In embodiments of the present invention where erasure coding is disabled due to the presence of an error code, the machine 105 can notify the user of this fact. This notification is provided by the processor 110 of FIG. 1, the BMC 325 of FIG. 3, or the PCIe switch 125 that includes Look-Aside erasure coding logic. In addition to informing the user that some functionality has been disabled, the notification may also inform the user how to reconfigure the machine 105 to allow for the added functionality. . For example, the notification may indicate that a device that is not eligible for erasure coding is coupled to a particular slot in the midplane 305 of FIG. Storage devices eligible for coding may be offered to be coupled to other slots, such as slots coupled to PCIe switch 125 that contain Look-Aside erasure coding logic. In such a manner, at least some storage devices that are eligible for erasure coding can benefit from the erasure coding scheme without blocking access to other devices that are not eligible for erasure coding.

図8は、本発明の他の実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための第2トポロジを示す図である。図8において、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、FPGA705内に位置する。つまり、FPGA705は、また、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を具現する。FPGA705及びLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130-1~130-4に連結される。一方、図8は、4つのストレージ装置130-1~130-4に連結されたFPGA705及びLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を図示するが、本発明の実施形態は、任意の数のストレージ装置130-1~130-6を含む。 FIG. 8 is a diagram illustrating a second topology for using PCIe switch 125 including the look-aside erasure coding logic of FIG. 1, in accordance with another embodiment of the invention. In FIG. 8, PCIe switch 125 containing look-aside erasure coding logic is located within FPGA 705. That is, FPGA 705 also embodies PCIe switch 125 that includes look-aside erasure coding logic. A PCIe switch 125 including an FPGA 705 and look-aside erasure coding logic is coupled to storage devices 130-1 to 130-4. On the other hand, although FIG. 8 illustrates a PCIe switch 125 including an FPGA 705 and Look-Aside erasure coding logic coupled to four storage devices 130-1 through 130-4, embodiments of the present invention may include any number of Includes storage devices 130-1 to 130-6.

典型的には、図8に図示したトポロジは、図示したすべての構成を含む単一のシェル又はハウジング内に具現される((SSD130-1~130-4)は、独立したSSDではない別途のフラッシュメモリであり得る)。つまり、別途の構成として販売されるものではなく、図8に図示した全体の構造は、単一のユニットとして販売される。しかし、本発明の実施形態は、一方の端に、図1のマシン105(おそらく図3のミッドプレーン305に)に連結されるライザー(riser)・カードを含み、他の一方の端にはストレージ装置130-1~130-6に連結するためにU.2、M.3又はSFF-TA-1008コネクタのようなコネクタを含む。そして、図8は、FPGA705の一部としてLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を示しているが、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、またスマートSSDの一部として具現される。 Typically, the topology illustrated in FIG. (could be flash memory). That is, rather than being sold as a separate configuration, the entire structure illustrated in FIG. 8 is sold as a single unit. However, embodiments of the invention include a riser card coupled to the machine 105 of FIG. 1 (possibly to the midplane 305 of FIG. 3) at one end and a storage card at the other end. The U. 2.M. 3 or SFF-TA-1008 connectors. And, while FIG. 8 shows a PCIe switch 125 that includes Look-Aside erasure coding logic as part of the FPGA 705, the PCIe switch 125 that includes Look-Aside erasure coding logic may also be implemented as part of a smart SSD. Ru.

図9は、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための第3トポロジを示す図である。図9に、最大24個のストレージ装置130-1~130-6を間で連結するLook-Asideイレイジャーコーディングロジックを含む、2つのPCIeスイッチ125、320を図示する。図3を参照して、前述したように、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320のそれぞれは、ストレージ装置130-1~130-6のいずれか一つと通信するために、各方向で使用される4つのPCIeレーンを有する96個のPCIeレーンを備える。つまり、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320のそれぞれは、最大12個のストレージ装置をサポートする。Look-Asideイレイジャーコーディングロジックを含む多数のPCIeスイッチ125、320によってサポートされるストレージ装置にわたってイレイジャーコーディングをサポートするために、Look-Asideイレイジャーコーディングロジックを含む、一つのPCIeスイッチは、すべての装置にわたってイレイジャーコーディングを担当するように指定され、イネーブルされたLook-Asideイレイジャーコーディングロジックを有し得る。Look-Asideイレイジャーコーディングロジックを含む他のPCIeスイッチ320は、ディセーブルされたLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチとして完全に動作する。イレイジャーコーディングを処理するためにどのようなPCIeスイッチが選択さるべきであるかへの選択は、任意の所望の方法で遂行される。例えば、2つのPCIeスイッチは、それらの間で、これを交渉することができるか、又は一番目に列挙されたPCIeスイッチは、イレイジャーコーディングを処理するように指定される。イレイジャーコディングを処理するように選択されたPCIeスイッチは、(PCIeスイッチの両方にまたがっている)仮想ストレージ装置を報告できる一方、イレイジャーコーディングを処理しないPCIeスイッチは(図1のプロセッサ110が、イレイジャーコーディング方式の一部であるストレージ装置にアクセスを試みるのを防止するために)、ダウンストリーム装置を報告しない可能性がある。 FIG. 9 is a diagram illustrating a third topology for using PCIe switch 125 including the Look-Aside erasure coding logic of FIG. FIG. 9 illustrates two PCIe switches 125, 320 that include look-aside erasure coding logic that couples up to 24 storage devices 130-1 through 130-6 therebetween. Referring to FIG. 3, as described above, each of the PCIe switches 125, 320 including Look-Aside erasure coding logic has a It has 96 PCIe lanes with 4 PCIe lanes used in That is, each PCIe switch 125, 320 that includes Look-Aside erasure coding logic supports up to 12 storage devices. To support erasure coding across storage devices supported by multiple PCIe switches 125, 320 containing look-aside erasure coding logic, one PCIe switch containing look-aside erasure coding logic can perform erasure coding across all devices. It may have Look-Aside erasure coding logic designated and enabled to be responsible for coding. Other PCIe switches 320 that include Look-Aside erasure coding logic operate completely as PCIe switches that include Look-Aside erasure coding logic disabled. The selection of which PCIe switch should be selected to handle erasure coding may be accomplished in any desired manner. For example, two PCIe switches can negotiate this between themselves, or the first listed PCIe switch is designated to handle erasure coding. PCIe switches selected to handle erasure coding can report virtual storage devices (spanning both PCIe switches), while PCIe switches that do not handle erasure coding can report erasure coding (where processor 110 in FIG. may not report downstream devices (to prevent attempts to access storage devices that are part of the coding scheme).

Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320の両方が同じシャーシ内に有り得るが、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320が相異なるシャーシ内に有り得ることに留意しよう。つまり、イレイジャーコーディング方式は、多数のシャーシでストレージ装置を拡張(包括)できる。要求されるのは、多様なシャーシのPCIeスイッチがイレイジャーコーディング方式の一部となるストレージ装置がある場所に対し互いに交渉できなければならないというものである。また、本発明の実施形態は、Look-Asideイレイジャーコーディングロジックを含む2つのPCIeスイッチ125、320に制限されない。つまり、イレイジャーコーディング方式に含まれたストレージ装置は、Look-Asideイレイジャーコーディングロジックを含む任意の数のPCIeスイッチ125、320に連結される。 Note that both PCIe switches 125, 320 containing look-aside erasure coding logic can be in the same chassis, but PCIe switches 125, 320 containing look-aside erasure coding logic can be in different chassis. In other words, the erasure coding method allows storage devices to be expanded (included) in a large number of chassis. The requirement is that PCIe switches in various chassis must be able to negotiate with each other for where the storage devices that are part of the erasure coding scheme are located. Also, embodiments of the present invention are not limited to two PCIe switches 125, 320 that include look-aside erasure coding logic. That is, a storage device included in the erasure coding scheme is coupled to any number of PCIe switches 125, 320 that include look-aside erasure coding logic.

ホストLBAは、任意の所望の方法でLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320に分割される。たとえば、ホストLBAの最下位ビットは、任意のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125又は320が、ホストLBAを含むデータを格納するストレージ装置を含むかを識別するのに使用される。Look-Asideイレイジャーコーディングロジックを含む2つ以上のPCIeスイッチを使用すれば、多数のビットは、どのようなLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチが、データを格納するストレージ装置を管理するのかを決定するため使用される。Look-Asideイレイジャーコーディングロジックを含む適切なPCIeスイッチが識別されると(そして、図5のスヌーピングロジック525が伝送を修正した場合)、伝送は、Look-Asideイレイジャーコーディングロジックを含む適切なPCIeスイッチにルーティングされる(伝送が、イネーブルされたLook-Asideイレイジャーコーディングロジックを含むLook-Asideイレイジャーコーディングロジックを有するPCIeスイッチに連結されたストレージ装置に向かわないことを仮定)。 The host LBA is partitioned into PCIe switches 125, 320 containing look-aside erasure coding logic in any desired manner. For example, the least significant bit of the host LBA is used to identify whether the PCIe switch 125 or 320 that includes any look-aside erasure coding logic includes a storage device that stores data that includes the host LBA. If you use two or more PCIe switches containing look-aside erasure coding logic, a number of bits determine which PCIe switches containing look-aside erasure coding logic manage the storage devices that store the data. used to make decisions. Once the appropriate PCIe switch containing look-aside erasure coding logic is identified (and snooping logic 525 of FIG. 5 modifies the transmission), the transmission is routed to the appropriate PCIe switch containing look-aside erasure coding logic. routed (assuming the transmission is not to a storage device coupled to a PCIe switch that has Look-Aside erasure coding logic that includes Look-Aside erasure coding logic enabled).

本発明の他の実施形態で、Look-Asideイレイジャーコーディングロジックを含む単一のPCIeスイッチがLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチの両方に連結されたすべてのストレージ装置を仮想化するための責任がある代わりに、Look -Asideがイレイジャーコーディングロジックを含む各PCIeスイッチは、別途の仮想ストレージ装置(別途のイレイジャーコーディングドメインを含む)を生成できる。このような方式で、異なるイレイジャーコーディングドメインは、異なる顧客のために生成されるが、容量は、より少ない可能性がある。 In another embodiment of the invention, a single PCIe switch containing look-aside erasure coding logic is responsible for virtualizing all storage devices coupled to both PCIe switches containing look-aside erasure coding logic. Instead, each PCIe switch that Look-Aside includes erasure coding logic can create a separate virtual storage device (including a separate erasure coding domain). In this manner, different erasure coding domains are generated for different customers, but the capacity may be less.

図9は、また本発明の他の実施形態を示せる。図9は、ストレージ装置130-1~130-6だけがLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320に連結されることを意味するが、上で述べたように、本発明はこれに限定されず、すべてのストレージ装置130-1~130-6が、イレイジャーコーディング方式とともに使用されることを意味する。Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320は、それらに接続されたイレイジャーコーディングに対し資格のない装置を有し得る。Look-Asideイレイジャーコーディングロジックを含む異なるPCIeスイッチ125の下で、グループ化されるイレイジャーコーディングに対し資格のあるストレージ装置を含む、これらの装置は、Look-Asideイレイジャーコーディングロジックを含む単一のPCIeスイッチの下でグループ化される。このような方式で、図1のマシン105の最適の機能は、Look-Asideイレイジャーコーディングロジックを含む単一の(または一部)PCIeスイッチが、Look-Asideイレイジャーコーディングロジックをイネーブルさせ、Look-Asideイレイジャーコーディングロジックを含む単一の(または一部)PCIeスイッチが、Look-Asideイレイジャーコーディングロジックをディセーブルさせることによって達成される。 FIG. 9 can also show another embodiment of the invention. Although FIG. 9 means that only storage devices 130-1 to 130-6 are coupled to PCIe switches 125, 320 that include Look-Aside erasure coding logic, as mentioned above, the present invention Without limitation, it is meant that all storage devices 130-1 to 130-6 are used with the erasure coding method. PCIe switches 125, 320 that include look-aside erasure coding logic may have devices connected to them that are not eligible for erasure coding. Contains storage devices eligible for erasure coding that are grouped under different PCIe switches 125 that contain look-aside erasure coding logic; these devices are connected to a single PCIe switch that contains look-aside erasure coding logic. Grouped under. In this manner, the optimal functionality of machine 105 of FIG. A single (or partial) PCIe switch containing erasure coding logic is achieved by disabling the Look-Aside erasure coding logic.

図10は、本発明の他の実施形態に基づいて、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための第4トポロジを示す図である。図10において、図9と比較すると、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320、1005は、階層的に構成される。階層の最上部にあるLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、階層内のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の下のすべてのストレージ装置についてのイレイジャーコーディングを管理することができるから、イネーブルされたLook-Asideイレイジャーコーディングロジックを有し得る。一方、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ320、1005は、(それらのストレージ装置は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のLook-Asideイレイジャーコーディングロジックによって管理されるため)それらのディセーブルされたLook-Asideイレイジャーコーディングロジックを有し得る。 FIG. 10 is a diagram illustrating a fourth topology for using PCIe switch 125 including the look-aside erasure coding logic of FIG. 1, in accordance with another embodiment of the present invention. In FIG. 10, compared to FIG. 9, PCIe switches 125, 320, 1005 including look-aside erasure coding logic are hierarchically configured. A PCIe switch 125 containing look-aside erasure coding logic at the top of the hierarchy can manage erasure coding for all storage devices below the PCIe switch 125 containing look-aside erasure coding logic in the hierarchy. , may have Look-Aside erasure coding logic enabled. On the other hand, PCIe switches 320, 1005 that include Look-Aside erasure coding logic (because their storage devices are managed by the Look-Aside erasure coding logic of PCIe switch 125 that includes Look-Aside erasure coding logic) May have Look-Aside erasure coding logic disabled.

図10は、2段階の階層構造で構成されたLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320、1005を示すのに対し、本発明の実施形態は、含まれたPCIeスイッチの数又はこれらの階層的構成に限定されない。したがって、本発明の実施形態は、任意の所望の階層に配列されたLook-Asideイレイジャーコーディングロジックを含む任意の数のPCIeスイッチをサポートできる。 Whereas FIG. 10 shows PCIe switches 125, 320, 1005 that include look-aside erasure coding logic configured in a two-level hierarchical structure, embodiments of the present invention is not limited to a hierarchical structure. Accordingly, embodiments of the present invention can support any number of PCIe switches containing look-aside erasure coding logic arranged in any desired hierarchy.

図1~図10を参照して、前述しれた本発明の実施形態は、単一のポートのストレージ装置に集中する。しかし、本発明の実施形態は、Look-Asideイレイジャーコーディングロジックを含む多数のPCIeスイッチと通信する1つ(またはそれ以上の)ストレージ装置であるデュアルポートストレージ装置に拡張できる。本発明のこれらの実施形態で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、デュアルポートストレージ装置と通信できないのならば、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置との通信を試みるために、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ320に伝送を送信することができる。Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ320は、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125をストレージ装置と通信できるようにするブリッジのように効果的に動作する。 With reference to FIGS. 1-10, the embodiments of the invention described above concentrate on single-port storage devices. However, embodiments of the invention can be extended to dual-port storage devices that are one (or more) storage devices that communicate with multiple PCIe switches that include look-aside erasure coding logic. In these embodiments of the invention, if the PCIe switch 125 containing the look-aside erasure coding logic of FIG. A transmission may be sent to a PCIe switch 320 that includes Look-Aside erasure coding logic to attempt to communicate with the device. PCIe switch 320 containing look-aside erasure coding logic effectively operates like a bridge that allows PCIe switch 125 containing look-aside erasure coding logic to communicate with storage devices.

本発明の実施形態は、またストレージ装置の故障を検出し、処理することをサポートする。例えば、再び図4を参照して、ストレージ装置130-1が故障したと仮定する。ストレージ装置130-1は、様々な理由から故障することができる。つまり、電力サージ(Power surge)は、電子機器を損傷させることができる。(ストレージ装置130-1の内部又はLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125とストレージ装置130-1との間の連結内の)配線は故障することもあり、ストレージ装置130-1は、あまりにも多くのエラーを検出してそれ自身を終了させることができ、ストレージ装置130-1は、他の理由から故障した可能性もある。ストレージ装置130-1は、ユーザーによって(おそらくより新しく、より信頼性の高い、またはより大きなストレージ装置と、それを交替するために)それのスロットから除去される可能性もある。理由は何であれ、ストレージ装置130-1は、利用不可能になれる。 Embodiments of the present invention also support detecting and handling storage device failures. For example, referring again to FIG. 4, assume that storage device 130-1 has failed. Storage device 130-1 can fail for various reasons. That is, power surges can damage electronic devices. Wiring (inside storage device 130-1 or in the link between PCIe switch 125 containing look-aside erasure coding logic and storage device 130-1) may fail, and storage device 130-1 may The storage device 130-1 may also detect many errors and terminate itself, and the storage device 130-1 may have failed for other reasons. Storage device 130-1 may also be removed from its slot by a user (perhaps to replace it with a newer, more reliable, or larger storage device). For whatever reason, storage device 130-1 may become unavailable.

Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130-1に対するコネクタ上のPresenceピンを介してストレージ装置130-1の故障を検出する。ストレージ装置130-1がシャーシから除去されたり、ストレージ装置130-1が終了すると、これは、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125からのインターラプトをトリガーするコネクタ上のPresenceピンを介して、もうこれ以上自身の存在を主張(行使)できない。あるいは、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(又は、図3のBMC325)は、ストレージ装置130-1に一時的メッセージを伝送して、それがまだアクティブ状態(時々「ハートビート(heart beat)」と呼ばれる過程)であるかをチェックすることができる。つまり、ストレージ装置130-1が、そのようなメッセージに応答しないと、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125又は図3のBMC325は、ストレージ装置130-1が故障したと結論を下すことができる。 PCIe switch 125, which includes Look-Aside erasure coding logic, detects failure of storage device 130-1 via the Presence pin on the connector to storage device 130-1. When storage device 130-1 is removed from the chassis or when storage device 130-1 is terminated, this occurs via a Presence pin on the connector that triggers an interrupt from PCIe switch 125, which contains Look-Aside erasure coding logic. , I can no longer assert (exercise) my own existence. Alternatively, the PCIe switch 125 (or BMC 325 in FIG. 3) containing look-aside erasure coding logic may transmit a temporary message to the storage device 130-1 to indicate that it is still active (sometimes a "heartbeat"). )” can be checked. In other words, if storage device 130-1 does not respond to such a message, PCIe switch 125 or BMC 325 of FIG. 3, which includes look-aside erasure coding logic, may conclude that storage device 130-1 has failed. can.

ストレージ装置130-1が故障したら、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、他の手段を使用して、ストレージ装置130-1から正常に要請される任意のデータにアクセスすることにより、状況を管理する。たとえば、ストレージ装置130-1のミラーがある場合、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130-1のミラーからデータを要請する。または、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、望みのデータを含む残りのストライプをアレイの他のストレージ装置から要請することがあり、イレイジャーコーディング情報を使用して、ストレージ装置130-1からデータを復元する。Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、故障したストレージ装置130-1に格納されたデータにアクセスする別のメカニズムを有し得る。 If storage device 130-1 fails, PCIe switch 125 containing Look-Aside erasure coding logic can access any data that is normally requested from storage device 130-1 using other means. Manage the situation. For example, if there is a mirror of storage device 130-1, PCIe switch 125 including look-aside erasure coding logic requests data from the mirror of storage device 130-1. Alternatively, the PCIe switch 125 containing Look-Aside erasure coding logic may request the remaining stripes containing the desired data from other storage devices in the array, using the erasure coding information to Restore data from. PCIe switch 125 that includes look-aside erasure coding logic may have another mechanism to access data stored on failed storage device 130-1.

本発明の実施形態は、また、アレイへの新しいストレージ装置の挿入を検出し、処理することをサポートする。ストレージ装置の故障を検出するように、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(又は、図3のBMC325)は、時々何が連結されたか、又は他の所望のメカニズムを確認するために、装置をピン(ping)をすることで、コネクタ上のPresenceピンを介して新しいストレージ装置の挿入を検出することができる(故障したストレージ装置を検出するように、Presenceピンを使用して、新しいストレージ装置を検出することは、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125においてインターラプトをトリガーする)。新しいストレージ装置が検出されると、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、新しいストレージ装置をアレイに追加する。アレイに新しいストレージ装置を追加することは、イレイジャーコーディング方式を変更することを必ずしも包含しない。つまり、これらの変更は、ストレージ装置に貯蔵されたすべてのデータを変更しなければならないことを要求する可能性もある(例えば、RAID5からRAID6への変更を考慮しよう。各ストライプは、現在のストレージ装置間で循環される必要のある2つのパリティブロックを必要とし、大量のデータの計算・移動が要求される)。しかし、新しいストレージ装置を既存のイレイジャーコーディング方式に追加することは、大量のデータを移動する必要がない可能性がある。したがって、新しいストレージ装置を追加しても、ストレージ装置の故障に対するアレイの許容値が増加しないが、新しいストレージ装置を追加することは、仮想ストレージ装置の容量をそれにもかかわらず増加させうる。 Embodiments of the invention also support detecting and processing the insertion of new storage devices into the array. The PCIe switch 125 (or BMC 325 in FIG. 3) containing Look-Aside erasure coding logic may sometimes detect storage device failures, verify what is coupled, or other desired mechanism. The insertion of a new storage device can be detected via the Presence pin on the connector by pinging the device (just like detecting a failed storage device, the Presence pin can be used to detect a new storage Detecting the device triggers an interrupt at the PCIe switch 125, which includes Look-Aside erasure coding logic). When a new storage device is detected, the PCIe switch 125, which includes Look-Aside erasure coding logic, adds the new storage device to the array. Adding new storage devices to an array does not necessarily involve changing erasure coding schemes. That is, these changes may require that all data stored on the storage device must be changed (for example, consider changing from RAID 5 to RAID 6. Each stripe is (Requires two parity blocks that need to be rotated between devices and requires a large amount of data computation and movement). However, adding new storage devices to existing erasure coding schemes may not require moving large amounts of data. Therefore, although adding a new storage device does not increase the array's tolerance to storage device failure, adding a new storage device may nevertheless increase the capacity of the virtual storage device.

アレイに故障したストレージ装置がある場合は、新しいストレージ装置の挿入は、故障したストレージ装置を再構成するために使用される。図5のイレイジャーコーディングコントローラ530は、故障したストレージ装置上に格納されたデータを計算し、そのデータを代替のストレージ装置の適切なブロックアドレスに貯蔵する。たとえば、故障したストレージ装置にあったオリジナルデータは、他のストレージ装置のデータ(オリジナルデータとパリティ又はコード情報のすべて)から計算される。故障したストレージ装置に格納されたパリティまたはコード情報は、他のストレージ装置のオリジナルデータから再び計算される(もちろん、故障したストレージ装置がミラーリングされた場合、図5のイレイジャーコーディングコントローラ530は、単にデータがミラーから代替のストレージ装置にコピーされるように指示することができる)。 If there is a failed storage device in the array, insertion of a new storage device is used to reconfigure the failed storage device. Erasure coding controller 530 of FIG. 5 calculates the data stored on the failed storage device and stores the data in the appropriate block address of the replacement storage device. For example, the original data that was in the failed storage device is calculated from the data (original data and all of the parity or code information) in other storage devices. The parity or code information stored on the failed storage device is recomputed from the original data on the other storage device (of course, if the failed storage device is mirrored, erasure coding controller 530 of FIG. be copied from the mirror to an alternate storage device).

故障したストレージ装置を再構成するには時間がかかることがある。本発明の一部の実施形態で、代替のストレージ装置が設置されるとすぐ再構成が発生する。本発明の他の実施形態で、ストレージ装置がスラック(slack)期間(余裕時間)内に再構成される限り、図5のイレイジャーコーディングコントローラ530は、そのように再構成する。しかし、仮想ストレージ装置がビジー状態であれば、図5のイレイジャーコーディングコントローラ530は、スラック時間が発生するまで代替のストレージ装置の再構成を延期し、図1のプロセッサ110からの要請に基づいて、必要に応じて故障したストレージ装置からデータを再構成する。(これらの再構成されたデータは、もちろん、完全な再構成を待たずに、代替のストレージ装置に記録されるため、後で再びそのデータを再計算する必要がない。) Reconfiguring a failed storage device can take time. In some embodiments of the invention, reconfiguration occurs as soon as a replacement storage device is installed. In other embodiments of the invention, as long as the storage device is reconfigured within a slack period, erasure coding controller 530 of FIG. 5 does so. However, if the virtual storage device is busy, erasure coding controller 530 of FIG. Reconfigure data from failed storage devices as necessary. (These reconstructed data, of course, are recorded on an alternate storage device without waiting for complete reconstruction, so there is no need to recalculate the data again later.)

本発明の実施形態は、また、ストレージ装置の初期化をサポートする。新しいストレージ装置がアレイに追加されると-故障したストレージ装置のための代替のストレージ装置として、または仮想ストレージ装置の容量を増加させるため-新しいストレージ装置が初期化される。初期化は、イレイジャーコーディング方式のためのストレージ装置を準備する段階を含む。 Embodiments of the invention also support initialization of storage devices. When a new storage device is added to the array - either as a replacement storage device for a failed storage device or to increase the capacity of a virtual storage device - the new storage device is initialized. Initialization includes preparing the storage device for erasure coding schemes.

新しいストレージ装置の初期化は、新しいストレージ装置からの既存のデータを削除することを含むこともできる。たとえば、特定のストレージ装置が、顧客にリース(lease)された状況を考慮してみよう。その顧客のリースが終了され、ストレージ装置は、新規の顧客に再利用されることができる。しかし、ストレージ装置は、まだ、顧客のオリジナルデータを有し得る。次の顧客が前の顧客のデータにアクセスできないようにするには、任意の所望のメカニズムを使用して、ストレージ装置のデータを削除することができる。たとえば、データが格納された場所に関する情報を格納するテーブルが消去されることができる。または、(後で消去された任意の情報を回復するための試みを防止するために)、データ自体を新しいデータで上書きする。新しいデータは、オリジナルデータが回復されないように保障するために設計されたパターンを使用する。例えば、米国国防総省(DOD)は、回復を防止するために、データを削除する方法に対する標準を発表した。これらの標準は、ストレージ装置を新たなクライアントに合わせて再利用する前に、ストレージ装置から古くなったデータを削除するために使用される。 Initializing a new storage device may also include deleting existing data from the new storage device. For example, consider a situation where a particular storage device is leased to a customer. That customer's lease is terminated and the storage device can be reused by a new customer. However, the storage device may still have the customer's original data. Any desired mechanism can be used to delete the data on the storage device to prevent the next customer from accessing the previous customer's data. For example, a table that stores information about where data is stored can be erased. or overwriting the data itself with new data (to prevent later attempts to recover any erased information). The new data uses a pattern designed to ensure that the original data cannot be recovered. For example, the US Department of Defense (DOD) has published standards for how to delete data to prevent recovery. These standards are used to remove obsolete data from a storage device before reusing it for a new client.

新しいストレージ装置が、既存のアレイにホット追加(hot-added)される場合にのみ、初期化が制限されるのではない。初期化は、ストレージ装置、Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、又は図1のマシン105が、全体的に、最初に電源を投入するときに、また発生する。 Initialization is not limited only when a new storage device is hot-added to an existing array. Initialization also occurs when the storage device, PCIe switch 125 containing look-aside erasure coding logic, or the machine 105 of FIG. 1 as a whole, first powers up.

図11A~図11Dは、本発明の一実施形態に基づいて、図4のコーディング方式405、410、415をサポートするために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に対する例としての手順のフローチャートである。図11Aのブロック1103で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110又は図3のBMC325によって初期化される。ブロック1106で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、伝送を受信する。このような伝送は、図1のプロセッサ110からの読み取り又は書き込みの要請、図1のプロセッサ110若しくは図3のBMC325からの制御の伝送、又は図1のプロセッサ110からの読み取り又は書き込みの要請に応答して図3のストレージ装置130-1~130-6によって送信された伝送であり得る。 11A-11D are examples for PCIe switch 125 that includes the look-aside erasure coding logic of FIG. 1 to support coding schemes 405, 410, 415 of FIG. 4, in accordance with one embodiment of the present invention. It is a flowchart of the procedure. At block 1103 of FIG. 11A, the PCIe switch 125 containing the look-aside erasure coding logic of FIG. 3 is initialized by the processor 110 of FIG. 1 or the BMC 325 of FIG. At block 1106, PCIe switch 125, which includes the Look-Aside erasure coding logic of FIG. 3, receives the transmission. Such transmissions may be in response to a read or write request from processor 110 of FIG. 1, a transfer of control from processor 110 of FIG. 1 or BMC 325 of FIG. 3, or a read or write request from processor 110 of FIG. may be the transmissions sent by the storage devices 130-1 to 130-6 in FIG.

ブロック1109で、図5のスヌーピングロジック525は、伝送が図1のプロセッサ110からの制御伝送であるのかを決定する。もしそうなら、ブロック1112で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図5のPPU520に制御伝送を伝達できる。その後に処理が終了する。 At block 1109, snooping logic 525 of FIG. 5 determines whether the transmission is a control transmission from processor 110 of FIG. If so, at block 1112, PCIe switch 125 including Look-Aside erasure coding logic of FIG. 3 may communicate a control transmission to PPU 520 of FIG. The process then ends.

伝送が図1のプロセッサ110からの制御伝送ではない場合は、ステップS1115(図11B)で、図5のスヌーピングロジック525は、伝送がホストからの読み取り又は書き込みの要請であるかを決定できる。そうでない場合、ステップS1118で、図5のスヌーピングロジック525は、伝送における装置LBAをホストに適合したホストLBAに代替できる。図5のスヌーピングロジック525は、また伝送が実際のデータを格納した物理ストレージ装置ではなく、仮想ストレージ装置から来たことを意味するように伝送を修正できる。ステップS1121で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110に伝送を伝達できる。その後に処理が終了する。 If the transmission is not a control transmission from processor 110 of FIG. 1, in step S1115 (FIG. 11B), snooping logic 525 of FIG. 5 may determine whether the transmission is a read or write request from the host. Otherwise, in step S1118, the snooping logic 525 of FIG. 5 may substitute the device LBA in the transmission with a host LBA compatible with the host. Snooping logic 525 of FIG. 5 can also modify the transmission to mean that it came from a virtual storage device rather than the physical storage device that stored the actual data. In step S1121, PCIe switch 125 including look-aside erasure coding logic of FIG. 3 may communicate the transmission to processor 110 of FIG. 1. The process then ends.

一方、伝送が図1のプロセッサ110からの読み取り又は書き込みの要請であれば、ステップS1124で、図5のスヌーピングロジック525は、問題のデータが、図5のキャッシュ545又は図5の書き込みバッファ550から利用可能であるかを決定できる。データが図5のキャッシュ545又は図5の書き込みバッファ550から利用可能な場合、ステップS1127(図11C)で、図5のイレイジャーコーディングコントローラ530は、適切な位置でデータにアクセスすることができる。 On the other hand, if the transmission is a read or write request from processor 110 of FIG. 1, in step S1124 snooping logic 525 of FIG. availability can be determined. If the data is available from cache 545 of FIG. 5 or write buffer 550 of FIG. 5, erasure coding controller 530 of FIG. 5 may access the data at the appropriate location in step S1127 (FIG. 11C).

データが図5のキャッシュ545又は図5の書き込みバッファ550から利用できない場合には、ステップS1130で、図5のスヌーピングロジック525は、ホストによって提供されたホストLBAを、ストレージ装置がデータを読み取らなければならない装置LBAに代替するために送信を修正できる。図5のスヌーピングロジック525は、また、送信を受信するための適切なストレージ装置を識別するために伝送を修正することもできる。次に、ステップS1133で、スヌーピングロジック525は、伝送を適切なストレージ装置に伝達できる。 If the data is not available from cache 545 of FIG. 5 or write buffer 550 of FIG. 5, in step S1130 snooping logic 525 of FIG. Transmissions can be modified to substitute for device LBAs that are not available. Snooping logic 525 of FIG. 5 may also modify the transmission to identify the appropriate storage device to receive the transmission. Next, in step S1133, snooping logic 525 may route the transmission to the appropriate storage device.

問題のデータがキャッシュからアクセス可能であるか、又はストレージ装置から読み出されるか否かにかかわらず、この時点で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、必要なデータを有する。この時点で、処理が分岐する。伝送が図1のプロセッサ110からの読み取りの要請であれば、ステップS1136で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110にデータを返す。図5のスヌーピングロジック525は、また、ステップS1139に図示したように、図5のキャッシュ545にデータを格納することもできる。ステップS1139は、選択的であり、点線1142で図示したように省略される。この時点で、処理は終了する。 At this point, the PCIe switch 125 containing the Look-Aside erasure coding logic of FIG. 3 has the necessary data, whether the data in question is accessible from cache or read from a storage device. . At this point, the process branches. If the transmission is a read request from processor 110 of FIG. 1, PCIe switch 125 including look-aside erasure coding logic of FIG. 3 returns the data to processor 110 of FIG. 1 in step S1136. Snooping logic 525 of FIG. 5 may also store data in cache 545 of FIG. 5, as illustrated in step S1139. Step S1139 is optional and is omitted as illustrated by dotted line 1142. At this point, the process ends.

一方、図1のプロセッサ110からの伝送が書き込み要請であれば、ステップS1145で、図5のイレイジャーコーディングコントローラ530は、図3のストレージ装置130-1~130-6に渡ってストライプを読み出す。ステップS1145は、ステップS1127、1130、1133の再表現であり、必要としない可能性がある。したがって、ステップS1145は、仮想ストレージ装置にデータを記録することが、ストレージ装置130-1~130-6を横切るストライプ全体からデータを読み取ることを包含できるのを強調するために、図11Cに含まれる。ステップS1148で、図5のイレイジャーコーディングコントローラ530は、図1のプロセッサ110から受信されたデータとストレージ装置130-1~130-6、又はキャッシュからアクセスされたデータストライプをマージすることができる。 On the other hand, if the transmission from processor 110 in FIG. 1 is a write request, erasure coding controller 530 in FIG. 5 reads stripes across storage devices 130-1 to 130-6 in FIG. 3 in step S1145. Step S1145 is a re-expression of steps S1127, 1130, and 1133 and may not be necessary. Accordingly, step S1145 is included in FIG. 11C to emphasize that recording data to a virtual storage device can include reading data from an entire stripe across storage devices 130-1 through 130-6. . In step S1148, erasure coding controller 530 of FIG. 5 may merge data received from processor 110 of FIG. 1 with data stripes accessed from storage devices 130-1 to 130-6 or cache.

この時点で、手順は、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、図5の書き込みバッファ550を含むか否かに応じて分岐する。図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、図5の書き込みバッファ550を含むと、ステップS1151(図11D)で、図5のイレイジャーコーディングコントローラ530は、マージされたデータストライプを図5の書き込みバッファ550に記録することができる(データを「ダーティ」とストレージ装置130-1~130-6のフラッシングされる必要があるとマークする)。その次のステップS1154で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、書き込み要請が完了されたことを1のプロセッサ110に報告する。図5の書き込みバッファ550がwrite-backキャッシュポリシーを使用すると、ステップS1154が適切であることに留意しよう。図5の書き込みバッファ550がwrite-throughキャッシュポリシーを使用すれば、点線1157で図示したように、ステップS1154は、省略される。 At this point, the procedure branches depending on whether the PCIe switch 125 that includes the Look-Aside erasure coding logic of FIG. 3 includes the write buffer 550 of FIG. Once the PCIe switch 125 including the Look-Aside erasure coding logic of FIG. 3 includes the write buffer 550 of FIG. 5, the erasure coding controller 530 of FIG. 5 (marking the data as "dirty" and needing to be flushed to storage devices 130-1 through 130-6). In the next step S1154, the PCIe switch 125 including the Look-Aside erasure coding logic of FIG. 3 reports to the processor 110 that the write request has been completed. Note that step S1154 is appropriate if write buffer 550 of FIG. 5 uses a write-back cache policy. If write buffer 550 of FIG. 5 uses a write-through cache policy, step S1154 is omitted, as illustrated by dotted line 1157.

結局、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、図5の書き込みバッファ550を含んでいないため、又は図5の書き込みバッファ550のデータが、図3のストレージ装置130-1~130-6にフラッシュされるため、ステップS1160で、図5のイレイジャーコーディングコントローラ530は、図3のストレージ装置130-1~130-6に更新されたストライプを再び記録することができる。次に、ステップS1163で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、書き込み要請が完了されたことを1のプロセッサ110に報告することができる。マージされたデータが、図5の書き込みバッファ550に格納され、図5の書き込みバッファ550が、write-backキャッシュポリシーを使用すれば、ステップS1163は、必要ないことに留意しよう。つまり、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、書き込み要請を既に完了したと報告した(ステップS1154で)。このような状況では、ステップS1163は、点線1166で図示したように省略される。この時点で、処理は終了する。 After all, the PCIe switch 125 including the Look-Aside erasure coding logic in FIG. 3 does not include the write buffer 550 in FIG. 5, or the data in the write buffer 550 in FIG. 130-6, the erasure coding controller 530 of FIG. 5 can re-record the updated stripe in the storage devices 130-1 to 130-6 of FIG. 3 in step S1160. Next, in step S1163, the PCIe switch 125 including the Look-Aside erasure coding logic of FIG. 3 may report to the one processor 110 that the write request has been completed. Note that if the merged data is stored in write buffer 550 of FIG. 5 and write buffer 550 of FIG. 5 uses a write-back cache policy, step S1163 is not necessary. That is, the PCIe switch 125 including the Look-Aside erasure coding logic of FIG. 3 has reported that the write request has already been completed (in step S1154). In such a situation, step S1163 is omitted as illustrated by dotted line 1166. At this point, the process ends.

図12A、図12Bは、本発明の実施形態に基づいて初期化を遂行するために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の例としての手順を示すフローチャートである。。図12AのステップS1205で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結された装置がただストレージ装置のみであり、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125によって管理されるイレイジャーコーディングを有するか否かを判定できる。ストレージ装置ではない図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結された装置があったり、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125によって管理されるがイレイジャーコーディングを含まないストレージ装置があったりすれば、本発明の一部の実施形態で、ステップS1210で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、Look-Asideイレイジャーコーディングロジックをディセーブルさせることができる。その後に手順が終了する。 12A and 12B are flowcharts illustrating an example procedure for PCIe switch 125 including the look-aside erasure coding logic of FIG. 1 to perform initialization in accordance with an embodiment of the present invention. . In step S1205 of FIG. 12A, the PCIe switch 125 including the Look-Aside erasure coding logic of FIG. It can be determined whether the PCIe switch 125 has erasure coding managed by the PCIe switch 125 that includes Look-Aside erasure coding logic of FIG. There may be a device coupled to the PCIe switch 125 that includes the look-aside erasure coding logic of FIG. 3 that is not a storage device, or a device that is managed by the PCIe switch 125 that includes the look-aside erasure coding logic of FIG. If there is a storage device that does not exist, in step S1210, the PCIe switch 125 including the look-aside erasure coding logic of FIG. 3 disables the look-aside erasure coding logic. I can do it. The procedure then ends.

しかし、本発明の他の実施形態では、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングに対し資格のない、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結された装置があっても、イレイジャーコーディングを管理できる。本発明のこれらの実施形態で、又はこのイレイジャーコーディングに対し資格のあるストレージ装置のみが図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結されていれば、ステップS1215で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、Look-Asideイレイジャーコーディングロジックをイネーブルさせる。次に、ステップS1220(図12B)で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディング方式を使用するように構成される(おそらく、図3のBMC325又は図1のプロセッサ110によって) However, in other embodiments of the invention, the PCIe switch 125 including the look-aside erasure coding logic of FIG. Erasure coding can be managed even with connected devices. In these embodiments of the invention, or if the only storage device eligible for this erasure coding is coupled to the PCIe switch 125 that includes the Look-Aside erasure coding logic of FIG. PCIe switch 125, which includes look-aside erasure coding logic, enables the look-aside erasure coding logic. Next, in step S1220 (FIG. 12B), the PCIe switch 125 including Look-Aside erasure coding logic of FIG. 3 is configured to use an erasure coding scheme (perhaps the BMC 325 of FIG. 3 or the by 110)

ステップS1225で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングに適していない装置をディセーブルさせる。ステップS1225は、点線1230で図示したように、選択的である。イレイジャーコーディングに対し資格のない、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が存在しなかったり、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、他の装置のために、イレイジャーコーディングを使用したりするにもかかわらず、イレイジャーコーディングに対し資格のない装置にアクセスするために、図1のプロセッサ110を承認する。 In step S1225, the PCIe switch 125 including Look-Aside erasure coding logic of FIG. 3 disables devices that are not suitable for erasure coding. Step S1225 is optional, as illustrated by dotted line 1230. There may be no PCIe switch 125 containing the look-aside erasure coding logic of FIG. 3 that is not eligible for erasure coding, or the PCIe switch 125 containing the look-aside erasure coding logic of FIG. , or using erasure coding, authorizes the processor 110 of FIG. 1 to access devices that are not eligible for erasure coding.

ステップS1235で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングの対象となる任意の装置に対する、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のダウンストリーム列挙を終了する。ステップS1240で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングの対象となる図3のストレージ装置130-1~130-6に基づいて、仮想ストレージ装置を、図1のプロセッサ110に報告することができる。図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、また、列挙される任意の他のPCIe装置を、図1のプロセッサ110に報告することができる。この時点で、処理が終了する。 In step S1235, the PCIe switch 125 including the look-aside erasure coding logic of FIG. 3 performs downstream enumeration of the PCIe switch 125 including the look-aside erasure coding logic of FIG. finish. In step S1240, the PCIe switch 125 including the Look-Aside erasure coding logic in FIG. 3 creates a virtual storage device in FIG. The information may be reported to processor 110. PCIe switch 125 that includes Look-Aside erasure coding logic of FIG. 3 may also report any other enumerated PCIe devices to processor 110 of FIG. 1. At this point, the process ends.

図13は、本発明の一実施形態に基づいて、図4のイレイジャーコーディング方式405、410、415に新しいストレージ装置を含めるために、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の例としての手順のフローチャートである。図13のステップS1305で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(または、図3のBMC325)は、新しいストレージ装置をチェックする。新しいストレージ装置が検出されると、その次のステップS1310で、図5のイレイジャーコーディングコントローラ530は、仮想ストレージ装置の後ろのアレイに新しいストレージ装置を追加する。最後に、ステップS1315で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(図3のBMC325または、図1のプロセッサ110)は、新しいストレージ装置を初期化することができる。この時点で、手順は終了したり、点線1320で図示したように追加の新しいストレージ装置をチェックしたりするために、ステップS1305に戻る。 FIG. 13 shows an example of a PCIe switch 125 that includes the look-aside erasure coding logic of FIG. 1 to include new storage devices in the erasure coding schemes 405, 410, 415 of FIG. 4, in accordance with one embodiment of the present invention. It is a flowchart of the procedure as follows. In step S1305 of FIG. 13, the PCIe switch 125 (or BMC 325 of FIG. 3) including the Look-Aside erasure coding logic of FIG. 3 checks for a new storage device. Once a new storage device is detected, in the next step S1310, erasure coding controller 530 of FIG. 5 adds the new storage device to the array behind the virtual storage device. Finally, in step S1315, the PCIe switch 125 (BMC 325 of FIG. 3 or processor 110 of FIG. 1) including the Look-Aside erasure coding logic of FIG. 3 may initialize the new storage device. At this point, the procedure ends or returns to step S1305 to check for additional new storage devices, as illustrated by dotted line 1320.

図14は、本発明の一実施形態に基づいて、故障したストレージ装置を処理するための、図1のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に対する例としての手順のフローチャートである。図14のステップS1405で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(または、図3のBMC 325)は、故障した(または、除去された)ストレージ装置をチェックすることができる。故障したストレージ装置が検出されると、ステップS1410で、図5のイレイジャーコーディングコントローラ530は、故障したデータにアクセスする読み取り要請が到着するとき、故障したストレージ装置に格納されたデータのイレイジャーコーディング復元を遂行する。これらのイレイジャーコーディングの復元は、他のストレージ装置から要求されたデータを含むストライプからデータを読み出すことと、ストライプ内の残りのデータから要求されたデータを計算することを含むことができる。 FIG. 14 is a flowchart of an example procedure for PCIe switch 125 including the look-aside erasure coding logic of FIG. 1 to handle a failed storage device, in accordance with one embodiment of the present invention. In step S1405 of FIG. 14, the PCIe switch 125 (or BMC 325 of FIG. 3) including Look-Aside erasure coding logic of FIG. 3 may check for failed (or removed) storage devices. Once a failed storage device is detected, in step S1410, the erasure coding controller 530 of FIG. 5 performs erasure coding restoration of data stored on the failed storage device when a read request to access the failed data arrives. carry out. Restoring these erasure codes may include reading data from the stripe containing the requested data from other storage devices and computing the requested data from the remaining data in the stripe.

ステップS1415で、図3のLook-Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(または、図3のBMC325)は、代替のストレージ装置が仮想ストレージ装置の後ろのアレイに追加されたかを決定する。もしそうなら、ステップS1420で、図5のイレイジャーコーディングコントローラ530は、代替のストレージ装置を使用して故障したストレージ装置を再構成する。この時点で、手順は終了したり、点線1425で図示したように、追加の新しいストレージ装置をチェックしたりするために、ステップS1405に戻る。 In step S1415, the PCIe switch 125 (or BMC 325 of FIG. 3) that includes Look-Aside erasure coding logic of FIG. 3 determines whether a replacement storage device has been added to the array behind the virtual storage device. If so, in step S1420 erasure coding controller 530 of FIG. 5 reconfigures the failed storage device using a replacement storage device. At this point, the procedure ends or returns to step S1405 to check for additional new storage devices, as illustrated by dotted line 1425.

図11A~図14に、本発明のいくつかの実施形態を図示した。しかし、当業者だったら、ステップの順序を変更したり、ステップを省略したり、図面に図示されていない連結を含んだりすることにより、本発明の他の実施形態も可能であることを認識できる。フローチャートに対しこのようなすべての変形は、明示的に記述されたか否かにかかわらず、本発明の実施形態とみなされる。 Several embodiments of the invention are illustrated in FIGS. 11A-14. However, one skilled in the art will recognize that other embodiments of the invention are possible by changing the order of steps, omitting steps, or including connections not shown in the drawings. . All such variations to the flowcharts, whether explicitly described or not, are considered embodiments of the invention.

本発明の実施形態は、従来技術に比べて技術的な利点を提供する。Look-Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するのは、イレイジャーコーディングをストレージ装置の近くに移動させるため、データの移動に必要な時間が短縮される。プロセッサで、イレイジャーコーディングを削除すると、プロセッサの負荷が減少し、プロセッサは、アプリケーションに対するより多くのコマンドを実行できる。構成可能なイレイジャーコーディングコントローラを使用すれば、ハードウェア及びソフトウェアのイレイジャーコーディングのベンダーによってサポートされる、限られた方法のセットの代わりに、任意の所望のイレイジャーコーディング方式が使用される。イレイジャーコーディングコントローラをPCIeスイッチとともに配置することにより、高価なRAID add-in cardに対する必要性が回避され、多数のシャーシに至るまで、より大きなアレイが使用される。 Embodiments of the present invention provide technical advantages over the prior art. Using a PCIe switch that includes Look-Aside erasure coding logic moves erasure coding closer to the storage device, reducing the time required to move data. Removing erasure coding on a processor reduces the load on the processor and allows the processor to execute more commands for applications. With a configurable erasure coding controller, any desired erasure coding scheme can be used instead of the limited set of methods supported by hardware and software erasure coding vendors. Placing the erasure coding controller with the PCIe switch avoids the need for expensive RAID add-in cards and allows larger arrays to be used up to multiple chassis.

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

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

本発明の技術的思想の実施形態は、マシンによってアクセスされる際にマシンが作業を遂行するか、又は抽象的データのタイプ又は低レベルのハードウェアコンテキストを定義することを誘発する関数、手順、データ構造、アプリケーションなどを含む、関連付けられたデータを参照・協力して説明される。関連付けられたデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージ装置、ハードディスクドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージなどを含む、関連付けられたストレージ媒体に格納される。関連付けられたデータは、物理的及び/又は論理的ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形で伝達され、圧縮された又は暗号化されたフォーマットで使用される。関連付けられたデータは、分散環境で使用され、マシンアクセスに対してローカル及び/又はリモートで格納される。 Embodiments of the technical idea of the present invention provide functions, procedures, which, when accessed by a machine, cause the machine to perform work or define types of abstract data or low-level hardware context. Described with reference to associated data, including data structures, applications, etc. The associated data may include, for example, volatile and/or non-volatile memories such as RAM, ROM, etc., other storage devices, hard disk drives, floppy disks, optical storage, tapes, flash memory, memory sticks, digital video disks, etc. stored on an associated storage medium, including biometric storage and the like. The associated data may be conveyed in the form of packets, serial data, parallel data, transmission signals, etc. through a transmission environment including physical and/or logical networks and 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 inventive concept are executable by one or more processors and include an actual non-transitory system that includes commands that cause the elements of the inventive concept to be performed as described herein. machine-readable media.

前述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成、回路、及び/又はモジュールのような動作を遂行する任意の適切な手段によって行われる。ソフトウェアは、論理的な機能を具現するための実行可能コマンドの順序付きリストを含み、単一又はマルチコアプロセッサやシステムを含むプロセッサのようなコマンド実行システム、機構又は装置を使用して、又はこれらと関連して、任意の「プロセッサ可読媒体」で具現される。 The various operations of the methods described above may be performed by any suitable means for performing the operations, such as various hardware and/or software configurations, circuits, and/or modules. Software includes an ordered list of commands that can be executed to implement logical functionality using or with a command execution system, mechanism or device such as a processor, including single or multi-core processors or systems. Relatedly, it may be embodied in any "processor-readable medium."

ここで開示した実施形態と関連して方法又はアルゴリズムのステップ又は段階、及び機能は、ハードウェア及びプロセッサ上で実行されるソフトウェアモジュール、又はこれらの組合せで直接具現される。ソフトウェアで具現されると、機能は非一時的コンピュータ可読媒体上に1つ以上のコマンドまたはコードとして格納又は伝送される。ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM、EPROM、EEPROM、レジスタ、ハードディスク、リムーバブルディスク、CD ROM、又はこの分野で公知された任意の他の形態のストレージ媒体であり得る。 The steps or stages of the methods or algorithms and functions associated with the embodiments disclosed herein may be directly implemented in hardware and software modules running on a processor, or a combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more commands or code on non-transitory computer-readable media. A software module may be random access memory (RAM), flash memory, ROM, EPROM, EEPROM, registers, hard disk, removable disk, CD ROM, or any other form of storage medium known in the art.

図示した実施形態を参照して本発明の技術的思想の原則を説明し例示したが、図示した実施形態は、これらの原則から離れずに、配置と詳細において修正され得、必要な任意の方法で組合せられることが理解されるだろう。前述の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施形態による」のような説明や、ここで使用された類似したものにもかかわらず、これらのフレーズは、一般的に実施形態の可能性を参照しており、本発明の技術的思想を具体的な実施形態の構成に限定することを意図していない。これらの用語は、他の実施形態への組合せ可能な同一又は異なる実施形態を参照することができる。 Although the principles of the technical idea of the invention have been explained and illustrated with reference to the illustrated embodiments, the illustrated embodiments may be modified in arrangement and detail in any necessary manner without departing from these principles. It will be understood that it can be combined with Although the foregoing discussion has focused on specific embodiments, other configurations are also contemplated. Specifically, notwithstanding statements such as "according to embodiments of the technical idea of the invention" and similar expressions used herein, these phrases generally refer to possible embodiments. However, it is not intended that the technical idea of the present invention be limited to the configuration of specific embodiments. These terms can refer to the same or different embodiments that can be combined into other embodiments.

前述した実施形態は、本発明の技術的思想を、それらに限定するものではない。少ない実施形態だけを説明したが、この分野における熟練した者は、本記載の新規な説明と利点から実質的に離れずに、これらの実施形態に多くの修正が可能であることを十分に理解するだろう。したがって、これらのすべての修正は、特許請求の範囲において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。 The embodiments described above do not limit the technical idea of the present invention. 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 departing substantially from the novelty and advantages of this description. will do. Accordingly, all such modifications are intended to be included within the spirit of the invention as defined in the claims.

本発明の実施形態は、制限なしに次の説明に拡張される。 Embodiments of the invention extend without limitation to the following description.

説明1.
本発明の概念の実施形態は、イレイジャーコーディングロジックを含むPCIeスイッチを含む。
PCIeスイッチは、
前記PCIeスイッチがプロセッサと通信できるようにする外部コネクタと、
前記PCIeスイッチが、少なくとも一つのストレージ装置と通信できるようにする少なくとも一つのコネクタと、
PCIeスイッチの構成を処理するPPUと、
前記少なくとも一つのストレー装置に格納されたデータには、イレイジャーコーディング方式を適用する回路を含む、イレイジャーコーディングコントローラと、
前記PCIeスイッチで受信されたデータの伝送をインターセプトし、前記イレイジャーコーディング方式に応答して前記データ送信を修正する回路を含むスヌーピングロジックと、を含む。
Explanation 1.
Embodiments of the inventive concept include a PCIe switch that includes erasure coding logic.
The PCIe switch is
an external connector that allows the PCIe switch to communicate with a processor;
at least one connector that allows the PCIe switch to communicate with at least one storage device;
a PPU that processes the configuration of the PCIe switch;
an erasure coding controller including a circuit that applies an erasure coding method to the data stored in the at least one storage device;
snooping logic including circuitry to intercept data transmissions received at the PCIe switch and modify the data transmissions in response to the erasure coding scheme.

説明2.
説明1によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記イレイジャーコーディングロジックは、Look-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックを含むセットから獲得される。
Explanation 2.
In the PCIe switch including erasure coding logic according to Description 1, the erasure coding logic is obtained from a set including Look-Aside erasure coding logic and Look-Through erasure coding logic.

説明3.
説明1によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのストレージ装置は、少なくとも一つのNVMe SSDを含む。
Explanation 3.
In the PCIe switch including erasure coding logic according to Description 1, the at least one storage device includes at least one NVMe SSD.

説明4.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、PCIeスイッチで受信された制御送信をインターセプトし、前記制御伝送をPPUにフォワードするように動作する。
Explanation 4.
In a PCIe switch that includes erasure coding logic according to Description 3, the snooping logic operates to intercept control transmissions received at the PCIe switch and forward the control transmissions to the PPU.

説明5.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、ホストからPCIeスイッチで受信されたデータの伝送をインターセプトし、データ伝送において、ホストによって使用されるホストLBAを前記少なくとも一つのNVMe SSDによって使用される装置LBAに代替するように動作する。
Explanation 5.
In a PCIe switch including erasure coding logic according to Description 3, the snooping logic intercepts a transmission of data received at the PCIe switch from a host and determines the host LBA used by the host in the data transmission by the at least one NVMe SSD. It operates to replace the device LBA used.

説明6.
説明5によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、データ伝送を少なくとも一つのNVMe SSDに指示するように動作する。
Explanation 6.
In a PCIe switch including erasure coding logic according to Description 5, the snooping logic operates to direct data transmission to at least one NVMe SSD.

説明7.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、少なくとも一つのNVMe SSDの中の一つからPCIeスイッチで受信されたデータの伝送をインターセプトし、データの伝送において、少なくとも一つのNVMe SSDの中の一つによって使用される装置LBAをホストによって使用されるホストLBAに代替する。
Explanation 7.
In a PCIe switch that includes erasure coding logic according to Description 3, the snooping logic intercepts a transmission of data received at the PCIe switch from one of the at least one NVMe SSD, and in the transmission of data, the at least one NVMe SSD The device LBA used by one of the hosts is replaced by the host LBA used by the host.

説明8.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、キャッシュをさらに含む。
Explanation 8.
A PCIe switch including erasure coding logic according to Description 3 further includes a cache.

説明9.
説明8によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、キャッシュに存在するデータの伝送で要請されるデータに少なくとも部分的に基づいて、ホストから要請されたデータ伝送に対する応答を返送するように動作する。
Explanation 9.
In a PCIe switch including erasure coding logic according to Description 8, the snooping logic is configured to return a response to a requested data transmission from a host based at least in part on data requested in the transmission of data present in the cache. Operate.

説明10.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
シャーシに位置するPCIeスイッチと、
イレイジャーコーディングコントローラによって外部キャッシュとして使用されるメモリを含むシャーシと、を含む。
Explanation 10.
In a PCIe switch including erasure coding logic according to Explanation 3,
A PCIe switch located in the chassis,
a chassis including memory used as an external cache by the erasure coding controller;

説明11.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、書き込みバッファをさらに含む。
Explanation 11.
A PCIe switch including erasure coding logic according to Description 3 further includes a write buffer.

説明12.
説明11によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
ホストからの書き込み動作を含む前記データ伝送と、
データ伝送に対する応答をホストに伝送した後、書き込み動作を完了するように動作する、イレイジャーコーディングコントローラと、を含む。
Explanation 12.
In a PCIe switch including erasure coding logic according to Description 11,
the data transmission including a write operation from a host;
an erasure coding controller operative to complete the write operation after transmitting a response to the data transmission to the host.

説明13.
説明11によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
前記イレイジャーコーディングコントローラは、書き込み動作でのデータを書き込みバッファに格納するように動作する。
Explanation 13.
In a PCIe switch including erasure coding logic according to Description 11,
The erasure coding controller is operative to store data in a write operation in a write buffer.

説明14.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、イレイジャーコーディングコントローラとともに使用される少なくとも一つのNVMe SSDに少なくとも部分的に基づいて、これらのイレイジャーコーディングコントローラ及びスヌーピングロジックをイネーブルさせるように動作する。
Explanation 14.
In a PCIe switch including erasure coding logic according to Description 3, the PCIe switch is operative to enable the erasure coding controller and snooping logic based at least in part on at least one NVMe SSD used with the erasure coding controller. do.

説明15.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、内蔵(built-in)のイレイジャーコーディング機能が含まれた少なくとも一つのNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングコントローラ及びスヌーピングロジックをディセーブルさせるように動作する。
Explanation 15.
In the PCIe switch including erasure coding logic according to Statement 3, the PCIe switch includes an erasure coding controller and snooping logic based at least in part on at least one NVMe SSD that includes built-in erasure coding functionality. It works to disable it.

説明16.
説明15によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、内蔵(built-in)のイレイジャーコーディング機能が含まれた少なくとも一つのNVMe SSDに少なくとも部分的に基づいて、ユーザーにイレイジャーコーディングコントローラ及びスヌーピングロジックがディセーブルされたことを通知するように動作する。
Explanation 16.
In the PCIe switch including erasure coding logic according to Description 15, the PCIe switch provides a user with an erasure coding controller and snooping based at least in part on at least one NVMe SSD that includes built-in erasure coding functionality. Acts to notify that logic has been disabled.

説明17.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記PCIeスイッチに連結される非ストレージ装置に部分的に基づいて、イレイジャーコーディングコントローラ及びスヌーピングロジックをディセーブルさせるように動作する。
Explanation 17.
In a PCIe switch including erasure coding logic according to Description 3, the at least one connector is used to disable an erasure coding controller and snooping logic based in part on a non-storage device coupled to the PCIe switch. works.

説明18.
説明17によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記PCIeスイッチに連結される非ストレージ装置に部分的に基づいて、ユーザーに、イレイジャーコーディングコントローラ、及びヌーピングロジックがディセーブルされたことを知らせるように動作する。
Explanation 18.
A PCIe switch including erasure coding logic according to Description 17 provides a user with an erasure coding controller and nooping logic based in part on a non-storage device coupled to the PCIe switch using the at least one connector. operates to notify that it has been disabled.

説明19.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記PCIeスイッチに連結される非ストレージ装置に部分的に基づいて、イレイジャーコーディングコントローラ、及びスヌーピングロジックをイネーブルさせるように動作する。
Explanation 19.
In a PCIe switch including erasure coding logic according to Description 3, the at least one connector is used to enable an erasure coding controller and snooping logic based in part on a non-storage device coupled to the PCIe switch. works.

説明20.
説明19によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、PCIeスイッチに接続された非ストレージ装置へのアクセスが遮断されたことは、ユーザーに通知するように動作する。
Explanation 20.
In the PCIe switch including erasure coding logic according to Explanation 19, the PCIe switch operates to notify the user that access to a non-storage device connected to the PCIe switch is blocked.

説明21.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、第2のPCIeスイッチに連結された少なくとも1つの追加のNVMe SSD上でのイレイジャーコーディング方式を管理するために、イレイジャーコーディングコントローラ及びスヌーピングロジックを使用するように動作する。
Explanation 21.
In a PCIe switch including erasure coding logic according to Description 3, the PCIe switch includes an erasure coding controller and snooping logic to manage erasure coding schemes on at least one additional NVMe SSD coupled to the second PCIe switch. It works like using .

説明22.
説明21によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、第2のPCIeスイッチは、第2のPCIeスイッチで第2イレイジャーコーディングコントローラ、及び第3スヌーピングロジックをディセーブルさせるように動作する。
Explanation 22.
In the PCIe switch including erasure coding logic according to Description 21, the second PCIe switch is operative to disable the second erasure coding controller and the third snooping logic in the second PCIe switch.

説明23.
説明22によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
第1シャーシ内に位置するPCIeスイッチと、
第2シャーシ内に位置する第2のPCIeスイッチと、を備える。
Explanation 23.
In a PCIe switch including erasure coding logic according to Description 22,
a PCIe switch located within the first chassis;
a second PCIe switch located within the second chassis.

説明24.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、FPGAを使用して具現される。
Explanation 24.
In a PCIe switch including erasure coding logic according to Explanation 3, the PCIe switch is implemented using an FPGA.

説明25.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
少なくとも二つのNVMe SSDを含む前記少なくとも一つのNVMe SSDと、
共通のハウジング内部にある前記PCIeスイッチと、前記少なくとも2つのNVMe SSDと、を含む。
Explanation 25.
In a PCIe switch including erasure coding logic according to Explanation 3,
the at least one NVMe SSD comprising at least two NVMe SSDs;
the PCIe switch and the at least two NVMe SSDs within a common housing.

説明26.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記PCIeスイッチ及び前記少なくとも2つのNVMe SSDは、別途のハウジング内にある。
Explanation 26.
In the PCIe switch including erasure coding logic according to Description 3, the PCIe switch and the at least two NVMe SSDs are in separate housings.

説明27.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
前記少なくとも一つのNVMe SSDの故障したNVMe SSDを検出するように動作する前記PCIeスイッチと、
故障したNVMe SSDを説明するために、データ伝送を処理するように動作する、イレイジャーコーディングコントローラと、を含む。
Explanation 27.
In a PCIe switch including erasure coding logic according to Explanation 3,
the PCIe switch operative to detect a failed NVMe SSD of the at least one NVMe SSD;
and an erasure coding controller operative to process data transmissions to account for a failed NVMe SSD.

説明28.
説明27によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、故障したNVMe SSD上に格納されたデータのイレイジャーコーディングの復元を遂行するように動作する。
Explanation 28.
In a PCIe switch that includes erasure coding logic according to Description 27, the erasure coding controller operates to perform erasure coding restoration of data stored on a failed NVMe SSD.

説明29.
説明28によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、故障したNVMe SSDのための代替のNVMe SSDを再構成するように動作する。
Explanation 29.
In a PCIe switch that includes erasure coding logic according to Description 28, the erasure coding controller operates to reconfigure a replacement NVMe SSD for a failed NVMe SSD.

説明30.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
新しいNVMe SSDを検出するように動作する前記PCIeスイッチと、
イレイジャーコーディング方式の一部として、新しいNVMe SSDを使用するように動作するイレイジャーコーディングコントローラを含む。
Explanation 30.
In a PCIe switch including erasure coding logic according to Explanation 3,
the PCIe switch operative to detect a new NVMe SSD;
Includes an erasure coding controller operative to use the new NVMe SSD as part of the erasure coding scheme.

説明31.
説明30によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、新しいNVMe SSDを使用して容量の追加を遂行するように動作する。
Explanation 31.
In a PCIe switch that includes erasure coding logic according to Description 30, the erasure coding controller operates to accomplish capacity additions using new NVMe SSDs.

説明32.
説明30によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、少なくとも一つのコネクタの中の1つに連結された新しいNVMe SSDを検出するように動作する。
Explanation 32.
In a PCIe switch including erasure coding logic according to Description 30, the PCIe switch is operative to detect a new NVMe SSD coupled to one of the at least one connector.

説明33.
説明30によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、第2のPCIeスイッチからのメッセージを介して新たなNVMe SSDを検出するように動作する。
Explanation 33.
In a PCIe switch that includes erasure coding logic according to Description 30, the PCIe switch operates to detect new NVMe SSDs via messages from a second PCIe switch.

説明34.
説明33によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、新しいNVMe SSDは、第2のPCIeスイッチ上の第2コネクタに連結される。
Explanation 34.
In a PCIe switch that includes erasure coding logic according to Description 33, a new NVMe SSD is coupled to a second connector on a second PCIe switch.

説明35.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、少なくとも一つのコネクタは、故障したNVMe SSDと新しいNVMe SSDの両方を検出するためのpresenceピンを含む。
Explanation 35.
In a PCIe switch including erasure coding logic according to Description 3, at least one connector includes a presence pin for detecting both a failed NVMe SSD and a new NVMe SSD.

説明36.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、ホストに、単一の装置としてそれ自身を示し、少なくとも一つのダウンストリームPCIeバスの列挙を防止するように動作する。
Explanation 36.
In a PCIe switch that includes erasure coding logic according to Description 3, the PCIe switch operates to present itself to the host as a single device and prevent enumeration of at least one downstream PCIe bus.

説明37.
説明36によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、PCIeスイッチから第2のPCIeスイッチのダウンストリームPCIeバスの列挙を防止するように動作する。
Explanation 37.
In a PCIe switch that includes erasure coding logic according to Description 36, the PCIe switch operates to prevent enumeration of a downstream PCIe bus from a PCIe switch to a second PCIe switch.

説明38.
説明36によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、少なくとも一つのNVMe SSDを仮想化するように動作する。
Explanation 38.
In a PCIe switch that includes erasure coding logic according to Description 36, the PCIe switch operates to virtualize at least one NVMe SSD.

説明39.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、少なくとも一つのコネクタの中の1つに連結された新しいNVMe SSDを初期化するように動作する。
Explanation 39.
In a PCIe switch including erasure coding logic according to Description 3, the erasure coding controller is operative to initialize a new NVMe SSD coupled to one of the at least one connector.

説明40.
説明39によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、ホット・インサーション・イベント後に新しいNVMe SSDを初期化するように動作する。
Explanation 40.
In a PCIe switch that includes erasure coding logic according to Description 39, the erasure coding controller operates to initialize a new NVMe SSD after a hot insertion event.

説明41.
説明39によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、起動時に、少なくとも一つのNVMe SSDを初期化するように動作する。
Explanation 41.
In a PCIe switch that includes erasure coding logic according to Description 39, the erasure coding controller is operative to initialize at least one NVMe SSD upon power-up.

説明42.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、少なくとも一つのコネクタの中の1つに連結された新しいNVMe SSDを初期化するように動作するBMCを含むシステムの一部である。
Explanation 42.
In a PCIe switch including erasure coding logic according to Description 3, the PCIe switch is part of a system including a BMC operative to initialize a new NVMe SSD coupled to one of the at least one connector.

説明43.
説明42によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、BMCは、起動時に少なくとも一つのNVMe SSDを初期化するように動作する。
Explanation 43.
In a PCIe switch that includes erasure coding logic according to Description 42, the BMC operates to initialize at least one NVMe SSD at power-up.

説明44.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、少なくとも一つのNVMe SSDにかけてデータをストライピングするストライプのマネージャーを含む。
Explanation 44.
In a PCIe switch including erasure coding logic according to Description 3, the erasure coding controller includes a stripe manager that stripes data across at least one NVMe SSD.

説明45.
本発明の概念の実施形態は、方法を含む。前記方法は、
イレイジャーコーディングロジックを利用して、PCIeスイッチから伝送を受信する段階と、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階と、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階と、を備える。
Explanation 45.
Embodiments of the inventive concept include methods. The method includes:
receiving a transmission from a PCIe switch utilizing erasure coding logic;
processing the transmission using snooping logic in the erasure coding logic;
and communicating the transmission to its destination via the PCIe switch.

説明46.
説明45による方法において、イレイジャーコーディングロジックは、Look-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックの中の1つを含む。
Explanation 46.
In the method according to statement 45, the erasure coding logic includes one of Look-Aside erasure coding logic and Look-Through erasure coding logic.

説明47.
説明45による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、前記伝送が前記スヌーピングロジックによる制御伝送を含むことを決定する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションへ伝達する段階は、前記伝送をPPU(Power Processing Unit)に伝達する段階を含む。
Explanation 47.
In the method according to Explanation 45,
Processing the transmission using snooping logic with the erasure coding logic includes determining that the transmission includes a controlled transmission by the snooping logic;
Delivering the transmission to its destination via the PCIe switch includes transmitting the transmission to a PPU (Power Processing Unit).

説明48.
説明45による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、活性化されたイレイジャーコーディングロジックに少なくとも部分的に基づいて、スヌーピングロジックを使用して伝送を処理する段階を含む。
Explanation 48.
In the method according to Explanation 45,
Processing the transmission using snooping logic with the erasure coding logic includes processing the transmission using snooping logic based at least in part on activated erasure coding logic.

説明49.
説明45による方法において、
イレイジャーコーディングロジックを含むPCIeスイッチから伝送を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
Explanation 49.
In the method according to Explanation 45,
Receiving a transmission from a PCIe switch including erasure coding logic includes receiving a read request from a host;
Processing the transmission using snooping logic in the erasure coding logic includes substituting a host LBA with an LBA of a device in the read request;
Communicating the transmission to its destination via the PCIe switch includes communicating a read request to an NVMe SSD.

説明50.
説明49による方法において、前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されなければならないNVMe SSDを識別する段階をさらに含む。
Explanation 50.
In the method according to Statement 49, processing the transmission using snooping logic in the erasure coding logic further includes identifying an NVMe SSD to which the read request should be communicated.

説明51.
説明49による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、キャッシュに存在するデータに少なくとも部分的に基づいて、キャッシュからの読み取り要請内のホストによって要請されたデータにアクセスする段階を含み、
ホストLBAを読み取り要請内の装置のLBAに代替する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、NVMe SSDに読み取り要請を伝達する段階を含む。
Explanation 51.
In the method according to Explanation 49,
Processing the transmission using snooping logic in the erasure coding logic includes accessing data requested by a host in a read request from the cache based at least in part on data present in the cache. including,
Substituting the host LBA with the LBA of the device in the read request includes substituting the host LBA with the LBA of the device in the read request based at least in part on data not present in the cache;
Communicating the transmission to its destination via the PCIe switch includes communicating a read request to an NVMe SSD based at least in part on data not present in cache.

説明52.
説明45による方法において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
Explanation 52.
In the method according to Explanation 45,
Receiving a transmission at a PCIe switch including erasure coding logic includes receiving a read request from a host;
Processing the transmission using snooping logic in the erasure coding logic includes substituting a host LBA with an LBA of a device in the read request;
Communicating the transmission to its destination via the PCIe switch includes communicating a read request to an NVMe SSD.

説明53.
説明52による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、書き込み要請が伝達されるべくNVMe SSDを識別するための段階をさらに含む。
Explanation 53.
In the method according to statement 52,
Processing the transmission using snooping logic in the erasure coding logic further includes identifying an NVMe SSD to which the write request is to be transmitted.

説明54.
説明52による方法において、
少なくとも一つのNVMe SSDからブロックのストライプを読み出す段階と、
ブロックの更新されたストライプを形成するために、前記ブロックのストライプと前記書き込み要請内のデータをマージする段階と、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階をさらに含む。
Explanation 54.
In the method according to statement 52,
reading a stripe of blocks from at least one NVMe SSD;
merging the stripe of the block with the data in the write request to form an updated stripe of the block;
The method further includes recording the updated stripe of blocks on the at least one NVMe SSD.

説明55.
説明54による方法において、
前記書き込み要請内のデータをマージする段階は、書き込み要請のデータに追加して、少なくとも一つのNVMe SSDに記録するための追加のデータを計算する段階を含む。
Explanation 55.
In the method according to statement 54,
Merging the data in the write request includes calculating additional data to be recorded on at least one NVMe SSD in addition to the data in the write request.

説明56.
説明54による方法において、
キャッシュ内に存在するブロックのストライプに、少なくとも部分的に基づいて、キャッシュからブロックのストライプを読み出す段階と、
少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階は、キャッシュ内に存在していないブロックのストライプに、少なくとも部分的に基づいて、少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階と、を備える。
Explanation 56.
In the method according to statement 54,
reading a stripe of blocks from the cache based at least in part on a stripe of blocks present in the cache;
Reading a stripe of blocks from the at least one NVMe SSD comprises reading a stripe of blocks from the at least one NVMe SSD based at least in part on a stripe of blocks that are not present in the cache.

説明57.
説明54による方法において、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階は、ブロックの前記更新されたストライプを書き込みバッファに記録する段階を含む。
Explanation 57.
In the method according to statement 54,
Recording the updated stripe of the block to the at least one NVMe SSD includes recording the updated stripe of the block to a write buffer.

説明58.
説明57による方法において、
ブロックの更新されたストライプが書き込みバッファに書き込まれた後、ブロックの更新されたストライプが少なくとも一つのNVMe SSDに記録される前に記録が完了したことをホストに応答する段階をさらに含む。
Explanation 58.
In the method according to Explanation 57,
After the updated stripe of the block is written to the write buffer and before the updated stripe of the block is recorded to the at least one NVMe SSD, the method further includes responding to the host that the recording is complete.

説明59.
説明45による方法において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストから応答を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請内の装置のLBAをホストのLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記応答をホストに伝達する段階を含む。
Explanation 59.
In the method according to Explanation 45,
Receiving the transmission at the PCIe switch including erasure coding logic includes receiving a response from the host;
Processing the transmission using snooping logic in the erasure coding logic includes substituting a device LBA in a read request with a host LBA;
Conveying the transmission to its destination via the PCIe switch includes conveying the response to a host.

説明60.
説明59による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、NVMe SSDの識別子を仮想ストレージ装置の識別子で代替する段階をさらに含む。
Explanation 60.
In the method according to Explanation 59,
Processing the transmission using snooping logic in the erasure coding logic further includes replacing an identifier of an NVMe SSD with an identifier of a virtual storage device.

説明61.
説明45による方法において、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記送信をNVMe SSDが連結された第2のPCIeスイッチに伝達する段階を含み、
前記NVMe SSDは、前記デスティネーションである。
Explanation 61.
In the method according to Explanation 45,
Conveying the transmission to its destination via the PCIe switch includes conveying the transmission to a second PCIe switch to which an NVMe SSD is coupled;
The NVMe SSD is the destination.

説明62.
説明61による方法において、
PCIeスイッチは、第1シャーシにあり、第2PCIeスイッチは、第2のシャーシにある。
Explanation 62.
In the method according to explanation 61,
A PCIe switch is in the first chassis and a second PCIe switch is in the second chassis.

説明63.
説明45による方法において、
イレイジャーコーディングで共に使用するためにPCIeスイッチに連結された少なくとも一つのNVMe SSDを初期化する段階をさらに含む。
Explanation 63.
In the method according to Explanation 45,
The method further includes initializing at least one NVMe SSD coupled to the PCIe switch for use with erasure coding.

説明64.
説明45による方法において、
新しいNVMe SSDが前記PCIeスイッチに連結されたかを検出する段階と、
新しいNVMe SSDを仮想ストレージ装置の容量に追加する段階と、をさらに備える。
Explanation 64.
In the method according to Explanation 45,
detecting whether a new NVMe SSD is connected to the PCIe switch;
adding a new NVMe SSD to the capacity of the virtual storage device.

説明65.
説明64による方法において、
イレイジャーコーディングで、共に使用するために新しいNVMe SSDを初期化する段階をさらに含む。
Explanation 65.
In the method according to statement 64,
The method further includes initializing a new NVMe SSD for use with erasure coding.

説明66.
説明45による方法において、
前記PCIeスイッチに連結された故障したNVMe SSDを検出する段階と、
故障したNVMe SSD上に格納されたデータのイレイジャーコーディングの回復を遂行する段階と、をさらに備える。
Explanation 66.
In the method according to Explanation 45,
detecting a failed NVMe SSD coupled to the PCIe switch;
and performing erasure coding recovery of data stored on the failed NVMe SSD.

説明67.
説明66による方法において、
前記故障したNVMe SSDの代替のNVMe SSDを検出する段階と、
前記代替のNVMe SSDを使用して故障したNVMe SSDを再構成する段階と、をさらに備える。
Explanation 67.
In the method according to statement 66,
detecting a replacement NVMe SSD for the failed NVMe SSD;
reconfiguring the failed NVMe SSD using the replacement NVMe SSD.

説明68.
説明45による方法において、
PCIeスイッチに連結された、イレイジャーコーディング機能がないNVMe SSDだけを検出する段階と、
前記PCIeスイッチで、イレイジャーコーディングロジックをイネーブルする段階と、をさらに含む。
Explanation 68.
In the method according to Explanation 45,
detecting only NVMe SSDs without erasure coding functionality connected to the PCIe switch;
The method further includes enabling erasure coding logic at the PCIe switch.

説明69.
説明68による方法において、
PCIeスイッチのダウンストリームPCIeバスの列挙を終了させる段階と、をさらに含む。
Explanation 69.
In the method according to statement 68,
terminating enumeration of downstream PCIe buses of the PCIe switch.

説明70.
説明68による方法において、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階と、をさらに含む。
Explanation 70.
In the method according to statement 68,
and reporting to the host a virtual storage device having a capacity based at least in part on the capacity of an NVMe SSD coupled to the PCIe switch and an erasure coding scheme.

説明71.
説明45による方法において、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをディセーブルさせる段階と、をさらに含む。
Explanation 71.
In the method according to Explanation 45,
detecting that at least one non-storage device or at least one NVMe SSD with erasure coding functionality is coupled to the PCIe switch;
disabling the erasure coding logic within the PCIe switch.

説明72.
説明45による方法において、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをイネーブルさせる段階と、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDをディセーブルさせる段階と、をさらに備える。
Explanation 72.
In the method according to Explanation 45,
detecting that at least one non-storage device or at least one NVMe SSD with erasure coding functionality is coupled to the PCIe switch;
enabling the erasure coding logic in the PCIe switch;
and disabling at least one non-storage device or at least one NVMe SSD with erasure coding functionality.

説明73.
説明72による方法において、
PCIeスイッチからのPCIeバス列挙のダウンストリームを終了する段階と、をさらに含む。
Explanation 73.
In the method according to statement 72,
terminating downstream of PCIe bus enumeration from the PCIe switch.

説明74.
説明72による方法において、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階と、をさらに含む。
Explanation 74.
In the method according to statement 72,
and reporting to the host a virtual storage device having a capacity based at least in part on the capacity of an NVMe SSD coupled to the PCIe switch and an erasure coding scheme.

説明75.
説明45による方法において、
イレイジャーコーディング方式を使用している、イレイジャーコーディングロジックを含むPCIeスイッチを構成する段階をさらに含む。
Explanation 75.
In the method according to Explanation 45,
The method further includes configuring a PCIe switch including erasure coding logic using an erasure coding scheme.

説明76.
説明75による方法において、
イレイジャーコーディング方式を使用しているイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階は、BMCを使用して、イレイジャーコーディング方式を使用しているイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階を含む。
Explanation 76.
In the method according to statement 75,
Configuring a PCIe switch including erasure coding logic using an erasure coding scheme includes configuring a PCIe switch including erasure coding logic using an erasure coding scheme using a BMC.

説明77.
本発明の概念の実施形態は、非一時的なストレージ媒体を含む物品を含み、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合、
イレイジャーコーディングロジックを利用して、PCIeスイッチにおいて伝送を受信する段階と、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階と、
前記伝送を前記PCIeスイッチを介して前記デスティネーションに伝送する段階と、が処理される。
Explanation 77.
Embodiments of the inventive concept include an article that includes a non-transitory storage medium, the non-transitory storage medium stores a command, and when the command is executed by a machine,
receiving the transmission at the PCIe switch utilizing erasure coding logic;
processing the transmission using snooping logic in the erasure coding logic;
transmitting the transmission to the destination via the PCIe switch.

説明78.
説明77による物品において、
本発明の概念の実施形態は、説明77による物品を含み、前記イレイジャーコーディングロジックは、Look-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックの中の1つを含む。
Explanation 78.
In the article according to Description 77,
Embodiments of the inventive concept include an article according to description 77, wherein the erasure coding logic includes one of Look-Aside erasure coding logic and Look-Through erasure coding logic.

説明79.
説明77による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、前記送信が前記スヌーピングロジックによる制御の伝送を含むことを決定する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記伝送をPPU(Power Processing Unit)に伝達する段階を含む。
Explanation 79.
In the article according to Description 77,
Processing the transmission using snooping logic in the erasure coding logic includes determining that the transmission includes a transmission controlled by the snooping logic;
Delivering the transmission to its destination via the PCIe switch includes transmitting the transmission to a PPU (Power Processing Unit).

説明80.
説明77による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、活性化されたイレイジャーコーディングロジックに少なくとも部分的に基づいて、スヌーピングロジックを使用して伝送を処理する段階を含む。
Explanation 80.
In the article according to Description 77,
Processing the transmission using snooping logic with the erasure coding logic includes processing the transmission using snooping logic based at least in part on activated erasure coding logic.

説明81.
説明77による物品において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて送信を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストのLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
Explanation 81.
In the article according to Description 77,
Receiving a transmission at a PCIe switch including erasure coding logic includes receiving a read request from a host;
Processing the transmission using snooping logic in the erasure coding logic includes reading a host's LBA and substituting a device's LBA in the request;
Communicating the transmission to its destination via the PCIe switch includes communicating a read request to an NVMe SSD.

説明82.
説明81による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されるべくNVMe SSDを識別するための段階をさらに含む。
Explanation 82.
In the article according to description 81,
Processing the transmission using snooping logic in the erasure coding logic further includes identifying an NVMe SSD to which the read request is to be transmitted.

説明83.
説明81による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、キャッシュに存在するデータに少なくとも部分的に基づいて、キャッシュからの読み取り要請内のホストによって要請されたデータにアクセスする段階を含み、
ホストのLBAを読み取り要請内の装置のLBAに代替する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ホストのLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、NVMe SSDに読み取り要請を伝達する段階を含む。
Explanation 83.
In the article according to description 81,
Processing the transmission using snooping logic in the erasure coding logic includes accessing data requested by a host in a read request from the cache based at least in part on data present in the cache. including,
Substituting the LBA of the host with the LBA of the device in the read request includes substituting the LBA of the host with the LBA of the device in the read request based at least in part on data not present in the cache;
Communicating the transmission to its destination via the PCIe switch includes communicating a read request to an NVMe SSD based at least in part on data not present in cache.

説明84.
説明77による物品において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストからの読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
Explanation 84.
In the article according to Description 77,
Receiving the transmission at the PCIe switch including erasure coding logic includes receiving a read request from the host;
Processing the transmission using snooping logic in the erasure coding logic includes substituting a host LBA with an LBA of a device in the read request;
Communicating the transmission to its destination via the PCIe switch includes communicating a read request to an NVMe SSD.

説明85.
説明84による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されるべくNVMe SSDを識別するための段階をさらに含む。
Explanation 85.
In an article according to description 84,
Processing the transmission using snooping logic in the erasure coding logic further includes identifying an NVMe SSD to which the read request is to be transmitted.

説明86.
説明84による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
少なくとも一つのNVMe SSDからブロックのストライプを読み出す段階と、
ブロックの更新されたストライプを形成するために、前記ブロックのストライプと前記書き込み要請内のデータをマージする段階と、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階と、が処理される。
Explanation 86.
In the article according to description 84, the non-transitory storage medium stores commands, and when the commands are executed by a machine:
reading a stripe of blocks from at least one NVMe SSD;
merging the stripe of the block with the data in the write request to form an updated stripe of the block;
recording the updated stripe of blocks to the at least one NVMe SSD.

説明87.
説明86による物品において、
前記書き込み要請内のデータをマージする段階は、書き込み要請のデータに追加して、少なくとも一つのNVMe SSDに記録するための追加のデータを計算する段階と、を含む。
Explanation 87.
In an article according to description 86,
Merging the data in the write request includes calculating additional data to be recorded on at least one NVMe SSD in addition to the data in the write request.

説明88.
説明86による物品において、
キャッシュ内に存在するブロックのストライプに、少なくとも部分的に基づいて、キャッシュからブロックのストライプを読み出す段階と、
少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階は、キャッシュ内に存在していないブロックのストライプに、少なくとも部分的に基づいて、少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階と、を含む。
Explanation 88.
In an article according to description 86,
reading a stripe of blocks from the cache based at least in part on a stripe of blocks present in the cache;
Reading a stripe of blocks from the at least one NVMe SSD includes reading a stripe of blocks from the at least one NVMe SSD based at least in part on a stripe of blocks that are not present in the cache.

説明89.
説明86による物品において、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階は、ブロックの前記更新されたストライプを書き込みバッファに記録する段階を含む。
Explanation 89.
In an article according to description 86,
Recording the updated stripe of the block to the at least one NVMe SSD includes recording the updated stripe of the block to a write buffer.

説明90.
説明89による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ブロックの更新されたストライプが書き込みバッファに書き込まれた後、ブロックの更新されたストライプが少なくとも一つのNVMe SSDに記録される前に記録が完了されたことをホストに応答する段階が処理される。
Explanation 90.
The article according to Description 89, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
After the updated stripe of the block is written to the write buffer, a step of responding to the host that the recording is completed is processed before the updated stripe of the block is recorded to the at least one NVMe SSD.

説明91.
説明77による物品において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストからの応答を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請内の装置のLBAをホストのLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記応答をホストに伝達する段階を含む。
Explanation 91.
In the article according to Description 77,
Receiving the transmission at the PCIe switch including erasure coding logic includes receiving a response from the host;
Processing the transmission using snooping logic in the erasure coding logic includes substituting a device LBA in a read request with a host LBA;
Conveying the transmission to its destination via the PCIe switch includes conveying the response to a host.

説明92.
説明91による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、NVMe SSDの識別子を仮想ストレージ装置の識別子に代替する段階をさらに含む。
Explanation 92.
In the article according to description 91,
Processing the transmission using snooping logic in the erasure coding logic further includes replacing an identifier of an NVMe SSD with an identifier of a virtual storage device.

説明93.
説明77による物品において、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記伝送をNVMe SSDが連結された第2のPCIeスイッチに伝達する段階を含み、
前記NVMe SSDは、前記デスティネーションである。
Explanation 93.
In the article according to Description 77,
Communicating the transmission to its destination via the PCIe switch includes communicating the transmission to a second PCIe switch to which an NVMe SSD is coupled;
The NVMe SSD is the destination.

説明94.
説明93による物品において、
PCIeスイッチは、第1シャーシにあり、第2のPCIeスイッチは、第2シャーシにある。
Explanation 94.
In the article according to description 93,
A PCIe switch is in the first chassis and a second PCIe switch is in the second chassis.

説明95.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディングとともに使用するためにPCIeスイッチに連結された少なくとも一つのNVMe SSDを初期化する段階が処理される。
Explanation 95.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
Initializing at least one NVMe SSD coupled to a PCIe switch for use with erasure coding is processed.

説明96.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
新しいNVMe SSDが前記PCIeスイッチに連結されたかを検出する段階と、
新しいNVMe SSDを仮想ストレージ装置の容量に追加する段階と、が処理される。
Explanation 96.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
detecting whether a new NVMe SSD is connected to the PCIe switch;
adding a new NVMe SSD to the capacity of the virtual storage device.

説明97.
説明96による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディングとともに使用するための新しいNVMe SSDを初期化する段階が処理される。
Explanation 97.
The article according to statement 96, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
A step of initializing a new NVMe SSD for use with erasure coding is processed.

説明98.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
前記PCIeスイッチに連結された故障したNVMe SSDを検出する段階と、
故障したNVMe SSD上に格納されたデータのイレイジャーコーディングの回復を遂行する段階と、が処理される。
Explanation 98.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
detecting a failed NVMe SSD coupled to the PCIe switch;
performing erasure coding recovery of data stored on the failed NVMe SSD.

説明99.
説明98による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
前記故障したNVMe SSDの代替のNVMe SSDを検出する段階と、
前記代替のNVMe SSDを使用して故障したNVMe SSDを再構成する段階と、が処理される。
Explanation 99.
In the article according to Description 98, the non-transitory storage medium stores commands, and when the commands are executed by a machine:
detecting a replacement NVMe SSD for the failed NVMe SSD;
reconfiguring the failed NVMe SSD using the replacement NVMe SSD.

説明100.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチに連結された、イレイジャーコーディング機能がないNVMe SSDだけを検出する段階と、
前記PCIeスイッチで、イレイジャーコーディングロジックをイネーブルする段階と、が処理される。
Explanation 100.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
detecting only NVMe SSDs without erasure coding functionality connected to the PCIe switch;
Enabling erasure coding logic at the PCIe switch.

説明101.
説明100による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチのダウンストリームPCIeバスの列挙を終了させる段階が処理される。
Explanation 101.
In the article according to illustration 100, the non-transitory storage medium stores commands, and when the commands are executed by a machine:
A step of terminating enumeration of a downstream PCIe bus of a PCIe switch is processed.

説明102.
説明100による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階が処理される。
Explanation 102.
In the article according to illustration 100, the non-transitory storage medium stores commands, and when the commands are executed by a machine:
Reporting to a host a virtual storage device having a capacity based at least in part on a capacity of an NVMe SSD coupled to a PCIe switch and an erasure coding scheme is processed.

説明103.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをディセーブルさせる段階と、が処理される。
Explanation 103.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
detecting that at least one non-storage device or at least one NVMe SSD with erasure coding functionality is coupled to the PCIe switch;
disabling the erasure coding logic in the PCIe switch.

説明104.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをイネーブルさせる段階と、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDをディセーブルさせる段階と、が処理される。
Explanation 104.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
detecting that at least one non-storage device or at least one NVMe SSD with erasure coding functionality is coupled to the PCIe switch;
enabling the erasure coding logic in the PCIe switch;
disabling at least one non-storage device or at least one NVMe SSD having erasure coding capability.

説明105.
説明104による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチからのPCIeバス列挙のダウンストリームを終了する段階が処理される。
Explanation 105.
In the article according to description 104, the non-transitory storage medium stores commands, and when the commands are executed by a machine:
A step of terminating downstream of PCIe bus enumeration from a PCIe switch is processed.

説明106.
説明104による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階が処理される。
Explanation 106.
In the article according to description 104, the non-transitory storage medium stores commands, and when the commands are executed by a machine:
Reporting to a host a virtual storage device having a capacity based at least in part on a capacity of an NVMe SSD coupled to a PCIe switch and an erasure coding scheme is processed.

説明107.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階が処理される。
Explanation 107.
The article according to Description 77, wherein the non-transitory storage medium stores commands, and when the commands are executed by a machine:
A step of configuring a PCIe switch including erasure coding logic using an erasure coding scheme is processed.

説明108.
説明107による物品において、
イレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階は、BMCを使用してイレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階を含む。
Explanation 108.
In the article according to Description 107,
Configuring a PCIe switch that includes erasure coding logic that uses an erasure coding scheme includes configuring a PCIe switch that includes erasure coding logic that uses an erasure coding scheme using a BMC.

説明109.
本発明の概念の実施形態は、システムを包含する。前記システムは、
NVMe SSDと、
前記NVMe SSDをサポートする機能を具現するFPGAと、
PCIeスイッチと、を含み、
前記機能は、データ加速化、データ重複排除(デデュープ)、データ・インテグリティ、データの暗号化とデータ圧縮を含む集合から獲得され、
前記PCIeスイッチは、前記FPGA及び前記NVMe SSDと通信する。
Explanation 109.
Embodiments of the inventive concept encompass systems. The system includes:
NVMe SSD and
an FPGA that implements a function to support the NVMe SSD;
a PCIe switch;
The capabilities are obtained from a collection including data acceleration, data deduplication, data integrity, data encryption and data compression;
The PCIe switch communicates with the FPGA and the NVMe SSD.

説明110.
説明109によるシステムにおいて、
前記FPGA、前記NVMe SSDは、共通のハウジング内部にある。
Explanation 110.
In the system according to Description 109,
The FPGA and the NVMe SSD are inside a common housing.

説明111.
説明110によるシステムにおいて、
前記PCIeスイッチは、前記FPGA及び前記NVMe SSDを含む共通のハウジングの外部にある。
Explanation 111.
In a system according to description 110,
The PCIe switch is external to a common housing containing the FPGA and the NVMe SSD.

説明112.
説明109によるシステムにおいて、
前記PCIeスイッチは、前記FPGAに連結され、
前記FPGAは、前記NVMe SSDに連結される。
Explanation 112.
In the system according to Description 109,
the PCIe switch is coupled to the FPGA;
The FPGA is coupled to the NVMe SSD.

説明113.
説明109によるシステムにおいて、
前記PCIeスイッチは、前記NVMe SSDに連結され、
前記NVMe SSDは、FPGAに連結される。
Explanation 113.
In the system according to Description 109,
the PCIe switch is coupled to the NVMe SSD;
The NVMe SSD is coupled to an FPGA.

説明114.
説明109によるシステムにおいて、
前記PCIeスイッチは、イレイジャーコーディングロジックを含み、
前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む。
Explanation 114.
In the system according to Description 109,
the PCIe switch includes erasure coding logic;
The erasure coding logic includes an erasure coding controller.

説明115.
説明114によるシステムにおいて、
前記イレイジャーコーディングロジックは、Look-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックの中の1つを含む。
Explanation 115.
In a system according to description 114,
The erasure coding logic includes one of Look-Aside erasure coding logic and Look-Through erasure coding logic.

説明116.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
Explanation 116.
In a system according to description 114,
The erasure coding logic is operative to return a response to a read request from the host based at least in part on the data requested by the read request residing in the cache.

説明117.
説明116によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュをさらに含む。
Explanation 117.
In a system according to description 116,
The erasure coding logic further includes a cache.

説明118.
説明116によるシステムにおいて、
前記PCIeスイッチは、シャーシ内に位置し、
前記シャーシは、イレイジャーコーディングロジックによってキャッシュとして使用されるメモリを含む。
Explanation 118.
In a system according to description 116,
the PCIe switch is located within the chassis;
The chassis includes memory used as a cache by erasure coding logic.

説明119.
説明114によるシステムにおいて、
レイジャーコーディングロジックは、書き込み要請を完了する前に、ホストへの書き込み要請に対する応答を返すように動作する。
Explanation 119.
In a system according to description 114,
The rager coding logic operates to return a response to the write request to the host before completing the write request.

説明120.
説明119によるシステムにおいて、
前記PCIeスイッチは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、書き込み要請内のデータを書き込みバッファに格納するように動作する。
Explanation 120.
In the system according to description 119,
The PCIe switch further includes a write buffer,
The erasure coding controller is operative to store data in a write request in a write buffer.

説明121.
説明114によるシステムにおいて、
レイジャーコーディングロジックは、スヌーピングロジックを含むLook-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックを含む。
Explanation 121.
In a system according to description 114,
The rage coding logic includes Look-Aside erasure coding logic and Look-Through erasure coding logic, including snooping logic.

説明122.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、PCIeスイッチで受信された制御伝送をインターセプトし、制御伝送をPPUに伝送するように動作する。
Explanation 122.
In a system according to description 114,
Erasure coding logic operates to intercept control transmissions received at the PCIe switch and transmit the control transmissions to the PPU.

説明123.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、ホストからPCIeスイッチにおいて受信されたデータの伝送をインターセプトし、前記データ伝送で、ホストによって使用されるホストのLBAを前記NVMe SSDで使用される装置のLBAに代替するように動作する。
Explanation 123.
In a system according to description 114,
Erasure coding logic is operative to intercept data transmissions received at a PCIe switch from a host and to substitute in the data transmission a host LBA used by the host with a device LBA used in the NVMe SSD. do.

説明124.
説明123によるシステムにおいて、
イレイジャーコーディングロジックは、前記NVMe SSDに前記データ伝送を指示するように動作する。
Explanation 124.
In the system according to description 123,
Erasure coding logic operates to direct the NVMe SSD to the data transmission.

説明125.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、NVMe SSDからPCIeスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送でNVMe SSDで使用される装置のLBAをホストによって使用されるホストのLBAに代替するように動作する。
Explanation 125.
In a system according to description 114,
The erasure coding logic is operative to intercept data transmissions received at the PCIe switch from the NVMe SSD and to substitute the device LBA used by the NVMe SSD with the host LBA used by the host in the data transmission. .

説明126.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、NVMe SSD及び第2 NVMe SSDにわたる仮想ストレージ装置を定義する。
Explanation 126.
In a system according to description 114,
Erasure coding logic defines a virtual storage device across the NVMe SSD and the second NVMe SSD.

説明127.
説明114によるシステムにおいて、
前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルするように動作する。
Explanation 127.
In a system according to description 114,
The PCIe switch is operative to enable erasure coding logic based at least in part on an NVMe SSD that can be used with the erasure coding logic.

説明128.
説明114によるシステムにおいて、
イレイジャーコーディングロジックを含むPCIeスイッチに連結された第2装置をさらに含む。
Explanation 128.
In a system according to description 114,
The device further includes a second device coupled to the PCIe switch that includes erasure coding logic.

説明129.
説明128によるシステムにおいて、
前記第2装置は、ストレージ装置、FPGAを含むSSD、およびGPUの中の少なくとも1つを含む。
Explanation 129.
In a system according to description 128,
The second device includes at least one of a storage device, an SSD including an FPGA, and a GPU.

説明130.
説明128によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用できない第2装置に、少なくとも部分的に基づいて、イレイジャーコーディングロジックをディセーブルするように動作する。
Explanation 130.
In a system according to description 128,
the second device is unusable with erasure coding logic;
The PCIe switch is operative to disable erasure coding logic based at least in part on a second device being unavailable for use with the erasure coding logic.

説明131.
説明128によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、イレイジャーコーディングロジックを使用することなく、第2装置へのアクセスをイネーブルするように動作する。
Explanation 131.
In a system according to description 128,
the second device is unusable with erasure coding logic;
The PCIe switch is operative to enable the erasure coding logic based at least in part on the NVMe SSD that is usable with the erasure coding logic and to enable access to the second device without using the erasure coding logic. .

説明132.
説明128によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、第2装置へのアクセスをディセーブルするように動作する。
Explanation 132.
In a system according to description 128,
the second device is unusable with erasure coding logic;
The PCIe switch is operative to enable the erasure coding logic and disable access to the second device based at least in part on the NVMe SSD available with the erasure coding logic.

説明133.
本発明の概念の実施形態は、システムを包含する。前記システムは、
NVMe SSDと、
前記NVMe SSDをサポートする一つ以上の機能を具現する第1のFPGA部分とPCIeスイッチを具現する第2のFPGA部分を含むFPGAと、を備え、
前記1つ以上の機能は、データ加速化、データ重複排除(デデュープ)、データインテグリティ、データの暗号化とデータ圧縮の中の少なくとも1つを含む集合から獲得され、
前記PCIeスイッチは、前記FPGA及び前記NVMe SSDと通信し、
前記FPGA、前記NVMe SSDは、共通のハウジング内部にある。
Explanation 133.
Embodiments of the inventive concept encompass systems. The system includes:
NVMe SSD and
an FPGA including a first FPGA portion implementing one or more functions supporting the NVMe SSD and a second FPGA portion implementing a PCIe switch;
the one or more functions are obtained from a set including at least one of data acceleration, data deduplication, data integrity, data encryption and data compression;
the PCIe switch communicates with the FPGA and the NVMe SSD;
The FPGA and the NVMe SSD are inside a common housing.

説明134.
説明133によるシステムにおいて、
前記PCIeスイッチは、イレイジャーコーディングコントローラを含むイレイジャーコーディングロジックを包含する。
Explanation 134.
In the system according to description 133,
The PCIe switch includes erasure coding logic including an erasure coding controller.

説明135.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、NVMe SSDの少なくとも二つの部分にまたがる仮想ストレージ装置を定義する。
Explanation 135.
In a system according to description 134,
The erasure coding logic defines a virtual storage device that spans at least two parts of the NVMe SSD.

説明136.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、NVMe SSD及び第2 NVMe SSDにまたがる仮想ストレージ装置を定義する。
Explanation 136.
In a system according to description 134,
The erasure coding logic defines a virtual storage device spanning an NVMe SSD and a second NVMe SSD.

説明137.
説明136によるシステムにおいて、
前記第2のNVMe SSDは、共通のハウジング内部にある。
Explanation 137.
In a system according to description 136,
The second NVMe SSD is inside a common housing.

説明138.
説明136によるシステムにおいて、
前記第2のNVMe SSDは、共通のハウジングの外部にある。
Explanation 138.
In a system according to description 136,
The second NVMe SSD is external to the common housing.

説明139.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、Look-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックの中の少なくとも1つを含む。
Explanation 139.
In a system according to description 134,
The erasure coding logic includes at least one of look-aside erasure coding logic and look-through erasure coding logic.

説明140.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
Explanation 140.
In a system according to description 134,
The erasure coding logic is operative to return a response to a read request from a host based at least in part on the data requested by the read request residing in the cache.

説明141.
説明140によるシステムにおいて、
前記FPGAは、前記キャッシュをさらに含む。
Explanation 141.
In a system according to description 140,
The FPGA further includes the cache.

説明142.
説明140によるシステムにおいて、
前記共通のハウジングは、前記シャーシ内に位置し、
前記シャーシは、前記イレイジャーコーディングロジックにより前記キャッシュとして使用されるメモリを含む。
Explanation 142.
In a system according to description 140,
the common housing is located within the chassis;
The chassis includes memory used as the cache by the erasure coding logic.

説明143.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、書き込み要請を完了する前に、ホストへの前記書き込み要請に対する応答を返すように動作するシステム。
Explanation 143.
In a system according to description 134,
The system wherein the erasure coding logic is operative to return a response to the write request to a host before completing the write request.

説明144.
説明143によるシステムにおいて、
前記FPGAは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、書き込み要請内のデータを書き込みバッファに格納するように動作する。
Explanation 144.
In the system according to description 143,
The FPGA further includes a write buffer;
The erasure coding controller is operative to store data in a write request in a write buffer.

説明145.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、スヌーピングロジックを含むLook-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックを含む。
Explanation 145.
In a system according to description 134,
The erasure coding logic includes look-aside erasure coding logic and look-through erasure coding logic including snooping logic.

説明146.
説明145によるシステムにおいて、
前記スヌーピングロジックは、前記PCIeスイッチで受信された制御伝送をインターセプトし、前記制御伝送を前記PPUに伝達するように動作する。
Explanation 146.
In a system according to description 145,
The snooping logic is operative to intercept control transmissions received at the PCIe switch and communicate the control transmissions to the PPU.

説明147.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、ホストからのPCIeスイッチで受信されたデータの送信をインターセプトし、データの伝送で、ホストによって使用されたホストのLBAをNVMe SSDで使用する装置LBAに代替するように動作する。
Explanation 147.
In a system according to description 134,
The erasure coding logic operates to intercept the transmission of data received by the PCIe switch from the host and replace the host LBA used by the host with the device LBA used by the NVMe SSD in the data transmission. .

説明148.
説明147によるシステムにおいて、
イレイジャーコーディングロジックは、データの伝送をNVMe SSDに指示するように動作する。
Explanation 148.
In the system according to description 147,
Erasure coding logic operates to instruct the NVMe SSD to transmit data.

説明149.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、NVCe SSDからPCIeスイッチで受信されたデータの送信をインターセプトし、データ伝送のNVMe SSDで使用する装置のLBAをホストによって使用されたホストのLBAに代替するように動作する。
Explanation 149.
In a system according to description 134,
The erasure coding logic operates to intercept data transmissions received by the PCIe switch from the NVCe SSD and substitute the device LBA used by the NVMe SSD for data transmission with the host LBA used by the host.

説明150.
説明134によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブルするように動作する。
Explanation 150.
In a system according to description 134,
The PCIe switch including erasure coding logic is operative to enable the erasure coding logic based at least in part on NVMe SSDs available with the erasure coding logic.

説明151.
説明134によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用できないNVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブルするように動作する。
Explanation 151.
In a system according to description 134,
The PCIe switch including erasure coding logic is operative to disable the erasure coding logic based at least in part on NVMe SSDs that cannot be used with erasure coding logic.

説明152.
本発明の概念の実施形態は、システムを包含する。前記システムは、
NVMe SSDと、
イレイジャーコーディングロジックを含むPCIeスイッチと、を含み、
前記PCIeスイッチは、
前記PCIeスイッチがプロセッサと通信できるようにする外部コネクタと、
前記PCIeスイッチが前記NVMe SSDと通信できるようにする少なくとも一つのコネクタと、
前記PCIeスイッチを構成するPPUと、
前記NVMe SSDに格納されたデータに、イレイジャーコーディング方式を適用するための回路を含むイレイジャーコーディングコントローラと、を含む。
Explanation 152.
Embodiments of the inventive concept encompass systems. The system includes:
NVMe SSD and
a PCIe switch including erasure coding logic;
The PCIe switch is
an external connector that allows the PCIe switch to communicate with a processor;
at least one connector that allows the PCIe switch to communicate with the NVMe SSD;
a PPU that constitutes the PCIe switch;
an erasure coding controller including a circuit for applying an erasure coding scheme to data stored in the NVMe SSD.

説明153.
説明152によるシステムにおいて、
前記システムは、第2のNVMe SSDをさらに含み、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックを含む前記PCIeスイッチが第2のNVMe SSDと通信できるようにする第2コネクタを含む。
Explanation 153.
In a system according to description 152,
The system further includes a second NVMe SSD;
The PCIe switch including erasure coding logic includes a second connector that allows the PCIe switch including erasure coding logic to communicate with a second NVMe SSD.

説明154.
説明152によるシステムにおいて、
前記システムは、
第2のNVMe SSDと、
第2のPCIeスイッチと、をさらに含み、
前記第2のPCIeスイッチは、
前記第2のPCIeスイッチが前記プロセッサと通信できるようにする第2外部コネクタと、
前記第2のPCIeスイッチが前記第2のNVMe SSDと通信できるようにする第2コネクタと、
前記第2のPCIeスイッチが前記イレイジャーコーディングロジックを含む前記PCIeスイッチと通信できるようにする第3コネクタと、を含み、
前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、前記イレイジャーコーディングロジックを有する前記PCIeスイッチが前記第2のPCIeスイッチと通信できるようにする第4コネクタと、を含み、
前記イレイジャーコーディング方式は、前記NVMe SSD及び前記第2のNVMe SSDに格納されたデータに適用される。
Explanation 154.
In a system according to description 152,
The system includes:
a second NVMe SSD;
further comprising a second PCIe switch;
The second PCIe switch is
a second external connector that allows the second PCIe switch to communicate with the processor;
a second connector that allows the second PCIe switch to communicate with the second NVMe SSD;
a third connector that allows the second PCIe switch to communicate with the PCIe switch that includes the erasure coding logic;
the PCIe switch including the erasure coding logic includes a fourth connector that allows the PCIe switch including the erasure coding logic to communicate with the second PCIe switch;
The erasure coding scheme is applied to data stored on the NVMe SSD and the second NVMe SSD.

説明155.
説明154によるシステムにおいて、
前記第2のPCIeスイッチは、ディセーブルされた第2レーザコーディングロジックをさらに含む。
Explanation 155.
In a system according to description 154,
The second PCIe switch further includes disabled second laser coding logic.

説明156.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックはLook-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックの中の少なくとも1つを含む。
Explanation 156.
In a system according to description 152,
The erasure coding logic includes at least one of look-aside erasure coding logic and look-through erasure coding logic.

説明157.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
Explanation 157.
In a system according to description 152,
The erasure coding logic is operative to return a response to a read request from a host based at least in part on the data requested by the read request residing in the cache.

説明158.
説明157によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュをさらに含む。
Explanation 158.
In the system according to description 157,
The erasure coding logic further includes a cache.

説明159.
説明157によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、シャーシ内に位置し、
前記シャーシは、イレイジャーコーディングロジックによってキャッシュとして使用されるメモリを含む。
Explanation 159.
In the system according to description 157,
the PCIe switch including erasure coding logic is located within the chassis;
The chassis includes memory used as a cache by erasure coding logic.

説明160.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは読み取り要請を完了する前に、読み取り要請に対する応答をホストに返すように動作する。
Explanation 160.
In a system according to description 152,
The erasure coding logic operates to return a response to the read request to the host before completing the read request.

説明161.
説明160によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、前記書き込み要請内のデータを前記書き込みバッファに格納するように動作する。
Explanation 161.
In a system according to description 160,
The PCIe switch including erasure coding logic further includes a write buffer;
The erasure coding controller is operative to store data in the write request in the write buffer.

説明162.
説明152によるシステムにおいて、
イレイジャーコーディングロジックは、スヌーピングロジックを含むLook-Asideイレイジャーコーディングロジック及びLook-Throughイレイジャーコーディングロジックを含む。
Explanation 162.
In a system according to description 152,
The erasure coding logic includes Look-Aside erasure coding logic and Look-Through erasure coding logic, including snooping logic.

説明163.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記PCIeスイッチで受信された制御伝送をインターセプトし、前記制御伝送をPPUに伝達するように動作する。
Explanation 163.
In a system according to description 152,
The erasure coding logic is operative to intercept control transmissions received at the PCIe switch and communicate the control transmissions to a PPU.

説明164.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、ホストからのPCIeスイッチで受信されたデータの送信をインターセプトし、前記データ伝送において、前記ホストによって使用されたホストのLBAを前記NVMe SSDで使用する装置のLBAに代替するように動作する。
Explanation 164.
In a system according to description 152,
The erasure coding logic is configured to intercept data transmissions received by the PCIe switch from a host and substitute the host LBA used by the host with the device LBA used by the NVMe SSD in the data transmission. works.

説明165.
説明164によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記データ伝送を、前記NVMe SSDに指示するように動作する。
Explanation 165.
In a system according to description 164,
The erasure coding logic operates to direct the data transmission to the NVMe SSD.

説明166.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記NVMe SSDから前記PCIeスイッチで受信されたデータの送信をインターセプトし、前記データ伝送において、前記NVMe SSDで使用する装置のLBAを前記ホストによって使用されたホストのLBAに代替するように動作する。
Explanation 166.
In a system according to description 152,
The erasure coding logic intercepts data transmissions received by the PCIe switch from the NVMe SSD and substitutes a host LBA used by the host for a device LBA used by the NVMe SSD in the data transmission. It works like that.

説明167.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記NVMe SSD及び第2のNVMe SSDにまたがる仮想ストレージ装置を定義する。
Explanation 167.
In a system according to description 152,
The erasure coding logic defines a virtual storage device spanning the NVMe SSD and a second NVMe SSD.

説明168.
説明152によるシステムにおいて、
イレイジャーコーディングロジックを有する前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルするように動作する。
Explanation 168.
In a system according to description 152,
The PCIe switch with erasure coding logic is operative to enable erasure coding logic based at least in part on NVMe SSDs available with erasure coding logic.

説明169.
説明152によるシステムにおいて、
イレイジャーコーディングロジックを含むPCIeスイッチに連結された第2装置をさらに含む。
Explanation 169.
In a system according to description 152,
The device further includes a second device coupled to the PCIe switch that includes erasure coding logic.

説明170.
説明169によるシステムにおいて、
前記第2装置は、ストレージ装置、FPGAを有するSSD、およびGPUの中の少なくとも1つを含む。
Explanation 170.
In the system according to description 169,
The second device includes at least one of a storage device, an SSD with an FPGA, and a GPU.

説明171.
説明169によるシステムにおいて、
第2装置は、前記イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用できない前記第2装置に、少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブルするように動作する。
Explanation 171.
In the system according to description 169,
a second device is unusable with the erasure coding logic;
The PCIe switch including erasure coding logic is operative to disable the erasure coding logic based at least in part on the second device being unavailable for use with erasure coding logic.

説明172.
説明169によるシステムにおいて、
前記第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、イレイジャーコーディングロジックを使用することがなく、前記第2装置へのアクセスをイネーブルするように動作する。
Explanation 172.
In the system according to description 169,
the second device is unusable with erasure coding logic;
The PCIe switch including erasure coding logic enables erasure coding logic based at least in part on an NVMe SSD usable with erasure coding logic, and enables erasure coding logic to provide data to the second device without using erasure coding logic. Operates to enable access.

説明173.
説明169によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを有する前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、前記第2装置へのアクセスをディセーブルするように動作する。
Explanation 173.
In the system according to description 169,
the second device is unusable with erasure coding logic;
The PCIe switch having erasure coding logic is operative to enable erasure coding logic and disable access to the second device based at least in part on an NVMe SSD available with erasure coding logic.

結論として、本明細書に記述された実施形態の様々な変更の観点から、この詳細な説明と添付された資料は、単に例として意図しており、本発明の範囲を制限するものとみなされてはならない。従って、本発明として請求されるのは、後述する特許請求の範囲、その均等物の範囲と思想内に有り得るすべての変形である。 In conclusion, in view of various modifications of the embodiments described herein, this detailed description and the attached material are intended by way of example only and should not be considered as limiting the scope of the invention. must not. Therefore, what is claimed as the present invention is all possible modifications within the scope and spirit of the following claims and their equivalents.

15 装置の機能
105 マシン
110 プロセッサ
115 メモリ
120 メモリコントローラ
125、320、605、1005 PCIeスイッチ
130、130-1、130-2、130-3、130-5、130-6 ストレージ装置
135 装置ドライバ
205 クロック
210 ネットワークコネクタ
215 バス
220 ユーザーインターフェース
225 入出力エンジン
305 ミッドプレーン
310、315 スイッチボード
325、330 ベースボード管理コントローラ(BMC)
405、410 イレイジャーコーディング方式
505 コネクタ
510-1、510-2、510-3、510-4、510-5、510-6 PCIe-to-PCIeスタック
515 PCIeスイッチコア
520 PPU(Power Processing Unit)
525 スヌーピングロジック
530 イレイジャーコーディングコントローラ
535-1、535-2、535-3、535-4、535-5、535-6 キャプチャインターフェース
540 マルチプレクサ
545 キャッシュ
550 書き込みバッファ
555 イレイジャーコーディングイネーブル信号
705 FPGA
15 Device functions 105 Machine 110 Processor 115 Memory 120 Memory controller 125, 320, 605, 1005 PCIe switch 130, 130-1, 130-2, 130-3, 130-5, 130-6 Storage device 135 Device driver 205 Clock 210 Network connector 215 Bus 220 User interface 225 I/O engine 305 Midplane 310, 315 Switch board 325, 330 Baseboard management controller (BMC)
405, 410 Erasure coding method 505 Connector 510-1, 510-2, 510-3, 510-4, 510-5, 510-6 PCIe-to-PCIe stack 515 PCIe switch core 520 PPU (Power Processing Unit)
525 Snooping logic 530 Erasure coding controller 535-1, 535-2, 535-3, 535-4, 535-5, 535-6 Capture interface 540 Multiplexer 545 Cache 550 Write buffer 555 Erasure coding enable signal 705 FPGA

Claims (18)

システムであって、
NVMe(Non-Volatile Memory Express) SSD(Solid State Drive)と、
イレイジャーコーディングロジック(Erasure Coding Logic)を含むPCIe(Peripheral Component Interconnect Express)スイッチと、
第2のNVMe SSDと、
第2のPCIeスイッチと、を備え、
前記PCIeスイッチは、
前記PCIeスイッチをプロセッサと通信可能にする外部コネクタと、
前記PCIeスイッチを前記NVMe SSDと通信可能にする少なくとも一つのコネクタと、
前記PCIeスイッチを構成する電力処理ユニット(PPU)と、
前記NVMe SSDに格納されたデータにイレイジャーコーディング方式を適用する回路を有するイレイジャーコーディングコントローラと、を含み、
前記第2のPCIeスイッチは、
前記第2のPCIeスイッチを前記プロセッサと通信可能にする第2の外部コネクタと、
前記第2のPCIeスイッチを前記第2のNVMe SSDと通信可能にする第2のコネクタと、
前記第2のPCIeスイッチを、前記イレイジャーコーディングロジックを含む前記PCIeスイッチと通信可能にする第3のコネクタと、を含み、
前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、前記イレイジャーコーディングロジックを含む前記PCIeスイッチを前記第2のPCIeスイッチと通信可能にする第4のコネクタを含み、
前記イレイジャーコーディング方式は、前記NVMe SSD及び前記第2のNVMe SSDに格納されたデータに適用されることを特徴とするシステム。
A system,
NVMe (Non-Volatile Memory Express) SSD (Solid State Drive) and
A PCIe (Peripheral Component Interconnect Express) switch including erasure coding logic;
a second NVMe SSD;
a second PCIe switch;
The PCIe switch is
an external connector that enables the PCIe switch to communicate with a processor;
at least one connector that enables the PCIe switch to communicate with the NVMe SSD;
a power processing unit (PPU) that configures the PCIe switch;
an erasure coding controller having a circuit for applying an erasure coding scheme to data stored in the NVMe SSD;
The second PCIe switch is
a second external connector that enables the second PCIe switch to communicate with the processor;
a second connector that enables the second PCIe switch to communicate with the second NVMe SSD;
a third connector that enables the second PCIe switch to communicate with the PCIe switch that includes the erasure coding logic;
the PCIe switch including the erasure coding logic includes a fourth connector that enables the PCIe switch including the erasure coding logic to communicate with the second PCIe switch;
The system is characterized in that the erasure coding method is applied to data stored in the NVMe SSD and the second NVMe SSD.
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいてホストからの前記読み取り要請に対する応答を返すように動作することを特徴とする請求項1に記載のシステム。 2. The erasure coding logic is operative to return a response to a read request from a host based at least in part on data requested by the read request residing in a cache. system. 前記イレイジャーコーディングロジックは、書き込み要請を完了する前に前記書き込み要請に対する応答をホストに返すように動作することを特徴とする請求項1に記載のシステム。 The system of claim 1, wherein the erasure coding logic is operative to return a response to the write request to a host before completing the write request. 前記イレイジャーコーディングロジックは、ホストから前記PCIeスイッチで受信されたデータ伝送をインターセプトし、前記データ伝送において前記ホストによって使用されるホストのLBA(Logical Block Address)を前記NVMe SSDによって使用される装置のLBAに代替するように動作することを特徴とする請求項1に記載のシステム。 The erasure coding logic intercepts data transmissions received by the PCIe switch from a host and converts the host LBA (Logical Block Address) used by the host in the data transmission to the device LBA used by the NVMe SSD. 2. The system of claim 1, wherein the system operates to replace. 前記イレイジャーコーディングロジックを含む前記PCIeスイッチに連結された第2装置を更に含むことを特徴とする請求項1に記載のシステム。 The system of claim 1, further comprising a second device coupled to the PCIe switch that includes the erasure coding logic. 前記第2装置は、ネイティブイレイジャーコーディングロジック(native Erasure Coding Logic)を有するストレージ装置及び非ストレージ装置のうちの少なくとも一つを含み、
前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、前記第2装置に少なくとも部分的に基づいて前記イレイジャーコーディングロジックをディセーブル(disable)させるように動作することを特徴とする請求項5に記載のシステム。
The second device includes at least one of a storage device and a non-storage device having native erasure coding logic;
6. The system of claim 5, wherein the PCIe switch including the erasure coding logic is operative to disable the erasure coding logic based at least in part on the second device.
前記第2装置は、ネイティブイレイジャーコーディングロジックを有するストレージ装置及び非ストレージ装置のうちの少なくとも一つを含み、
前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、前記イレイジャーコーディングロジックをイネーブル(enable)させ、前記第2装置に対するアクセスをディセーブルさせるように動作することを特徴とする請求項5に記載のシステム。
The second device includes at least one of a storage device and a non-storage device having native erasure coding logic;
6. The system of claim 5, wherein the PCIe switch including the erasure coding logic is operative to enable the erasure coding logic and disable access to the second device.
前記第2のPCIeスイッチは、ディセーブルされた第2のイレイジャーコーディングロジックを更に含むことを特徴とする請求項1に記載のシステム。 The system of claim 1, wherein the second PCIe switch further includes disabled second erasure coding logic. 前記イレイジャーコーディングロジックは、前記キャッシュを更に含むことを特徴とする請求項2に記載のシステム。 3. The system of claim 2, wherein the erasure coding logic further includes the cache. 前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、シャーシ内に位置し、
前記シャーシは、前記イレイジャーコーディングロジックによって前記キャッシュとして使用されるメモリを含むことを特徴とする請求項2に記載のシステム。
the PCIe switch including the erasure coding logic is located within a chassis;
3. The system of claim 2, wherein the chassis includes memory used as the cache by the erasure coding logic.
前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、書き込みバッファを更に含み、
前記イレイジャーコーディングコントローラは、前記書き込み要請内のデータを前記書き込みバッファに格納するように動作することを特徴とする請求項3に記載のシステム。
The PCIe switch including the erasure coding logic further includes a write buffer;
4. The system of claim 3, wherein the erasure coding controller is operative to store data in the write request in the write buffer.
前記イレイジャーコーディングロジックは、Look-Asideイレイジャーコーディングロジックを含み、
前記Look-Asideイレイジャーコーディングロジックは、スヌーピングロジック(snooping logic)を含むことを特徴とする請求項1に記載のシステム。
The erasure coding logic includes Look-Aside erasure coding logic;
The system of claim 1, wherein the Look-Aside erasure coding logic includes snooping logic.
前記イレイジャーコーディングロジックは、前記NVMe SSDへの前記データ伝送を指示するように更に動作することを特徴とする請求項4に記載のシステム。 5. The system of claim 4, wherein the erasure coding logic is further operative to direct the data transmission to the NVMe SSD. 前記イレイジャーコーディングロジックは、前記NVMe SSDから前記PCIeスイッチで受信されたデータ伝送をインターセプトし、前記データ伝送において前記NVMe SSDによって使用される装置のLBAをホストによって使用されるホストのLBAに代替するように動作することを特徴とする請求項1に記載のシステム。 The erasure coding logic is configured to intercept data transmissions received at the PCIe switch from the NVMe SSD and substitute a device LBA used by the NVMe SSD with a host LBA used by a host in the data transmission. 2. The system of claim 1, wherein the system operates to: 前記イレイジャーコーディングロジックは、前記NVMe SSD及び第2のNVMe SSDに亘る仮想ストレージ装置を定義することを特徴とする請求項1に記載のシステム。 The system of claim 1, wherein the erasure coding logic defines a virtual storage device across the NVMe SSD and a second NVMe SSD. 前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、前記NVMe SSDがネイティブイレイジャーコーディングロジックを含まないストレージ装置であることに少なくとも部分的に基づいて前記イレイジャーコーディングロジックをイネーブルさせるように動作することを特徴とする請求項1に記載のシステム。 The PCIe switch including the erasure coding logic is operative to enable the erasure coding logic based at least in part on the NVMe SSD being a storage device that does not include native erasure coding logic. The system of claim 1. 前記第2装置は、ストレージ装置、FPGA(Field Programmable Gate Array)を含むSSD、及びGPU(Graphics Processing Unit)のうちの少なくとも1つを含むことを特徴とする請求項5に記載のシステム。 6. The system according to claim 5, wherein the second device includes at least one of a storage device, an SSD including a field programmable gate array (FPGA), and a graphics processing unit (GPU). 前記第2装置は、ネイティブイレイジャーコーディングロジックを有するストレージ装置及び非ストレージ装置のうちの少なくとも一つを含み、
前記イレイジャーコーディングロジックを含む前記PCIeスイッチは、前記イレイジャーコーディングロジックをイネーブルさせ、前記第2装置に対するアクセスをディセーブルさせるように動作することを特徴とする請求項5に記載のシステム。
The second device includes at least one of a storage device and a non-storage device having native erasure coding logic;
6. The system of claim 5, wherein the PCIe switch including the erasure coding logic is operative to enable the erasure coding logic and disable access to the second device.
JP2019188052A 2018-10-12 2019-10-11 System that supports erasure code data protection function with embedded PCIe switch inside FPGA + SSD Active JP7370801B2 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201862745261P 2018-10-12 2018-10-12
US62/745261 2018-10-12
US16/207080 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/226629 2018-12-19
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
US16/260087 2019-01-28

Publications (3)

Publication Number Publication Date
JP2020061149A JP2020061149A (en) 2020-04-16
JP2020061149A5 JP2020061149A5 (en) 2022-10-19
JP7370801B2 true JP7370801B2 (en) 2023-10-30

Family

ID=70219044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019188052A Active JP7370801B2 (en) 2018-10-12 2019-10-11 System that supports erasure code data protection function with embedded PCIe switch inside FPGA + SSD

Country Status (4)

Country Link
JP (1) JP7370801B2 (en)
KR (1) KR20200041815A (en)
CN (1) CN111045597B (en)
TW (1) TWI791880B (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102225577B1 (en) * 2020-08-21 2021-03-09 (주)테온 Method and device for distributed storage of data using hybrid storage
CN112148227B (en) * 2020-09-25 2023-03-24 中国科学院空天信息创新研究院 Storage device and information processing method
CN112732477B (en) * 2021-04-01 2021-06-29 四川华鲲振宇智能科技有限责任公司 Method for fault isolation by out-of-band self-checking
JP2023001494A (en) * 2021-06-21 2023-01-06 キオクシア株式会社 Memory system and control method
TWI784804B (en) * 2021-11-19 2022-11-21 群聯電子股份有限公司 Retiming circuit module, signal transmission system and signal transmission method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063497A (en) 2012-09-21 2014-04-10 Plx Technology Inc Pci express switch with logical device capability
US20140337540A1 (en) 2013-05-08 2014-11-13 Lsi Corporation METHOD AND SYSTEM FOR I/O FLOW MANAGEMENT FOR PCIe DEVICES

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572320B1 (en) * 2009-01-23 2013-10-29 Cypress Semiconductor Corporation Memory devices and systems including cache devices for memory modules
CN102819517A (en) * 2011-06-08 2012-12-12 鸿富锦精密工业(深圳)有限公司 PCIE (peripheral component interconnect-express) interface card
US20130232293A1 (en) * 2012-03-05 2013-09-05 Nguyen P. Nguyen High performance storage technology with off the shelf storage components
US9111621B2 (en) * 2012-06-20 2015-08-18 Pfg Ip Llc Solid state drive memory device comprising secure erase function
US8954657B1 (en) * 2013-09-27 2015-02-10 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9336173B1 (en) * 2013-12-20 2016-05-10 Microsemi Storage Solutions (U.S.), Inc. Method and switch for transferring transactions between switch domains
US9940036B2 (en) * 2014-09-23 2018-04-10 Western Digital Technologies, Inc. System and method for controlling various aspects of PCIe direct attached nonvolatile memory storage subsystems
US20160259754A1 (en) * 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
US10007443B1 (en) * 2016-03-31 2018-06-26 EMC IP Holding Company LLC Host to device I/O flow
CN108073833A (en) * 2016-11-10 2018-05-25 苏州韦科韬信息技术有限公司 Solid state disk secrecy system and method based on PCIE interfaces
TW201823916A (en) * 2016-12-27 2018-07-01 英業達股份有限公司 Server system
US10255134B2 (en) * 2017-01-20 2019-04-09 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063497A (en) 2012-09-21 2014-04-10 Plx Technology Inc Pci express switch with logical device capability
US20140337540A1 (en) 2013-05-08 2014-11-13 Lsi Corporation METHOD AND SYSTEM FOR I/O FLOW MANAGEMENT FOR PCIe DEVICES

Also Published As

Publication number Publication date
TW202020675A (en) 2020-06-01
CN111045597B (en) 2024-08-20
CN111045597A (en) 2020-04-21
JP2020061149A (en) 2020-04-16
TWI791880B (en) 2023-02-11
KR20200041815A (en) 2020-04-22

Similar Documents

Publication Publication Date Title
US11860672B2 (en) Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
JP7370801B2 (en) System that supports erasure code data protection function with embedded PCIe switch inside FPGA + SSD
US11360679B2 (en) Paging of external memory
US10346042B2 (en) Management of external memory
TWI591512B (en) Storage system and method of storage protection
US11086525B2 (en) Resilient external memory
US20100049919A1 (en) Serial attached scsi (sas) grid storage system and method of operating thereof
TWI451257B (en) Method and apparatus for protecting the integrity of cached data in a direct-attached storage (das) system
KR20140139113A (en) Memory module virtualizaton
US11392306B2 (en) Using storage system memory as host memory
KR20100132413A (en) Storage array assist architecture
US20170220249A1 (en) Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
US11782634B2 (en) Dynamic use of non-volatile ram as memory and storage on a storage system
US20200034263A1 (en) Distributed storage system and distributed storage control method
US20210157487A1 (en) Storage System Having Storage Engines and Disk Arrays Interconnected by Redundant Fabrics
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US20180307427A1 (en) Storage control apparatus and storage control method
JP2007524932A (en) Method, system, and program for generating parity data
US20240095196A1 (en) Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd
JP5856665B2 (en) Storage system and storage system data transfer method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221007

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221007

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20221007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230901

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231018

R150 Certificate of patent or registration of utility model

Ref document number: 7370801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150