JP2020061149A - FPGA+SSD内部のエンベデッドPCIeスイッチによるイレイジャーコードデータ保護機能をサポートするシステム - Google Patents

FPGA+SSD内部のエンベデッドPCIeスイッチによるイレイジャーコードデータ保護機能をサポートするシステム Download PDF

Info

Publication number
JP2020061149A
JP2020061149A JP2019188052A JP2019188052A JP2020061149A JP 2020061149 A JP2020061149 A JP 2020061149A JP 2019188052 A JP2019188052 A JP 2019188052A JP 2019188052 A JP2019188052 A JP 2019188052A JP 2020061149 A JP2020061149 A JP 2020061149A
Authority
JP
Japan
Prior art keywords
erasure coding
data
pcie switch
coding logic
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.)
Granted
Application number
JP2019188052A
Other languages
English (en)
Other versions
JP7370801B2 (ja
JP2020061149A5 (ja
Inventor
ポール オラリグ サンポン
Paul Olarig Sompong
ポール オラリグ サンポン
ワーリー フレッド
Worley Fred
ワーリー フレッド
ピー. ピント オスカー
P Pinto Oscar
ピー. ピント オスカー
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/ja
Publication of JP2020061149A5 publication Critical patent/JP2020061149A5/ja
Application granted granted Critical
Publication of JP7370801B2 publication Critical patent/JP7370801B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Lock And Its Accessories (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】本発明は、イレイジャーコードを用いてデータを保護するシステムを提供する。【解決手段】トポロジを公開する。このトポロジは、NVMe(Non−Volatile Memory Express)SSD(Solid−State Drive)、データ加速、データ重複排除、データインテグリティ、データの暗号化とデータ圧縮のようにNVMe SSDをサポートする一つ以上の機能を具現するFPGA(Field Programmable Gate Array)及びPCIe(Peripheral Component Interconnect Express)スイッチを含むことができる。PCIeスイッチは、FPGAとNVMe SSDと通信する。【選択図】 図5

Description

本発明は、コンピュータシステムに係り、より詳しくは、PCIeスイッチ内のイレイジャーコーディングに関する。
現在、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コネクタである。
2Uシャーシ(chassis)内に24個までのNVMe SSDをサポートするためには、6つのAIC RAIDコントローラが必要なので、6つの異なるRAIDドメインが要求される。この構成は、6つのRAIDドメインを管理するためのコストと複雑さを付加する。なお、各AIC RAIDコントローラのコストは、現在、約400ドルである。したがって、NVMe SSDのコストを考慮する前に、単一の2Uシャーシへの全体のRAIDソリューションは、AIC RAIDコントローラ向けにのみ2400ドルを超えている。
大規模なデータセットに対するコスト(費用)対効果の高いRAIDデータ保護の不足のため、大規模なビジネス市場でのNVMe SSDの採択は制限的となった。ソフトウェアRAIDソリューションは、比較的小規模なデータセットにおいては使用できるが、ビッグデータでは使用できない。
AIC RAIDコントローラを使用するとき、また、別の問題点がある。
1)前記したように、シャーシ内に複数のRAIDドメインを有すれば、管理の複雑さが増加する。
2)RAIDドメイン管理の複雑さの結果として、シャーシは、単一のRAIDドメイン(これは好ましい)を有さない。
3)CPU(Central Processing Unit)は、多数のPCIeレーンをサポートする必要がある。つまり、(AIC RAIDコントローラ当たり16個のPCIeレーン)×(シャーシ当たり6つのAIC RAIDコントローラ)=(AIC RAIDコントローラについてのみ96個のPCIeレーン)である。高度な及びはるかに高価なCPUだけが、現在としては、このような多くのPCIeレーンをサポートする。
4)各AIC RAIDコントローラは、潜在的に25ワット消費するため、6つのAIC RAIDコントローラは、シャーシ当たり150ワットまでの電力消費量を増加させる。
5)シャーシは、いくつかのPCIeスロットだけ有する傾向があり、追加可能なAIC RAIDコントローラの数を潜在的に制限し、シャーシからRAID保護の対象となるNVMe SSDの数を間接的に減らす。
6)ソフトウェアRAIDソリューションは、比較的少ない数のRAIDレベルをサポートする傾向があり、CPU上のオーバーヘッドを増加させる傾向がある。
7)ネットワークを介して使用されるとき、SSDのアクセスは、ネットワークを介してデータのアクセスを伝送するのに必要な時間のために遅くなる可能性がある。なお、一部の例では、ネットワークストレージは、ソフトウェアRAIDの具現を要求して、CPU上のオーバーヘッドを増加させることができる。
AIC RAIDコントローラ及びソフトウェアRAIDソリューションによって課せられる制限なしに、数多くのストレージ装置を利用して、イレイジャーコーディングをサポートできる方法が必要である。
米国登録特許第9223734B2号公報 米国登録特許第9298648B2号公報 米国公開特許第20170052916A1号公報 米国公開特許第20170322898A1号公報
本発明は、上述した技術的な課題を解決するためのもので、本発明の目的は、イレイジャーコードを用いてデータを保護するシステムを提供することにある。
本発明の一実施形態に係るシステムは、NVMe(Non−Volatile Memory Express)SSD(Solid State Drive)、NVMe SSDをサポートする一つ以上の機能を具現するFPGA、及びPCIe(Peripheral Component Interconnect Express)スイッチを備える。NVMe SSDをサポートする一つ以上の機能は、データ高速化、データ重複排除、データインテグリティ、データ暗号化、及びデータ圧縮を含む集合から獲得される。PCIeスイッチは、FPGA及びNVMe SSDと通信することができる。
本発明の他の実施形態に係るシステムは、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は、共通のハウジング内部に有り得る。
本発明の他の実施形態に係るシステムは、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に格納されたデータにイレイジャーコーディング方式を適用するための回路を含む、イレイジャーコーディングコントローラを有する。
本発明の実施形態によると、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用することは、イレイジャーコーディングをストレージ装置の近くに移動させるので、データの移動に必要な時間を減少させることができる。さらに、イレイジャーコーディングコントローラをPCIeスイッチとともに配置することにより、高価なRAID add−in cardが不要になり、複数のシャーシにまたがり、より大きなアレイを使用できる。
本発明の一実施形態に係るLook−Asideイレイジャーコーディングロジックを有するPCIeスイッチを含むマシンを示す図である。 図1のマシンの追加の詳細を示す図である。 図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチをストレージ装置に連結するミッドプレーン及びスイッチボードを含む、図1のマシンの追加の詳細を示す図である。 相異なるイレイジャーコーディング方式を達成するための図3のストレージ装置を示す図である。 図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチの詳細を示す図である。 本発明の他の実施形態に基づいて、Look−Throughイレイジャーコーディングロジックを含むPCIeスイッチの詳細を示す図である。 本発明の実施形態に基づいて、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第1トポロジを示す図である。 本発明の他の実施形態に基づいて、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第2トポロジを示す図である。 本発明の他の実施形態に基づいて、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第3トポロジを示す図である。 本発明の他の実施形態に基づいて、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するための第4トポロジを示す図である。 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。 本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。 本発明の実施形態に基づいて初期化を遂行するために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチの例としての手順を示すフローチャートである。 本発明の実施形態に基づいて初期化を遂行するために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチの例としての手順を示すフローチャートである。 本発明の一実施形態に基づいて、イレイジャーコーディング方式に新しいストレージ装置を含めるために、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。 本発明の一実施形態に基づいて、故障したストレージ装置を処理するための、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチに対する例としての手順のフローチャートである。
本発明の技術的思想の実施形態が参照され、これらの例が添付した図面に図示される。後述する詳細な説明では、多様な特定の詳細を、本発明の技術的思想の十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、このような特定の詳細なしでも、本発明の技術的思想を具現することができる。他の例として、よく知られている方法、手順、構成要素、回路及びネットワークは実施形態を不必要に曖昧にしないために詳細に説明しない。
本明細書において、第1及び第2などの用語を多様な構成要素を説明するために使用するが、これらの構成要素は、これらの用語によって限定されないことが理解されるだろう。前記用語は、1つの構成要素を他のものと区別するために使用する。例えば、第1モジュールは、第2モジュールと命名されることができ、同様に、本発明の概念の範囲を逸脱せずに、第2モジュールは、第1モジュールと命名されることができる。
本発明の技術的思想の説明で使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定しない。本発明の技術的思想の説明及び添付した請求項において使用するように、文脈上明らかに別の意味を示していると判定されない限り、単数表現は複数表現も、また含まれている。「及び/又は」の用語は、一つ以上の多くの関連項目の任意かつすべての可能な組合せを含む。「含む(comprise)」及び/又は「含む(comprising)」の用語を、詳細な説明で使用したときに、記載した特徴、整数、段階、動作、エレメント、及び/又は構成要素の存在を明示し、一つ以上の多くの他の特徴、整数、段階、動作、エレメント、構成要素、及び/又はそれらのグループの存在又は追加を排除しない。図面の構成要素とは、実際の比率に不可欠で比例していない。
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フラッシュメモリのチャンネルを要求する。
本発明の実施形態は、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)の範囲により指定されたデータとパリティデータをすべて削除することができる。
今日では、PCIeスイッチは、一つ以上のスイッチがマネージャーにさらされる仮想スイッチ又はグループ化を露出させる。このような構成は、ネットワーク、CPU−GPU、FPGA、これらの仮想ドメインの背後にあるストレージがグループ化される場合に、仮想化された環境で有用である。このような仮想グループは、一実施形態で、仮想化された環境に対するユーザーグループに露出されるか、又はRAID 10、RAID 50、RAID 60などのRAIDグループ化に使用されるRAIDサブグループを生成することにより、ストレージに適用される。このような階層化されたRAIDグループは、より大きなRAIDソリューションを作成するために、小規模のグループを作成し、追加のRAID層を適用する。仮想スイッチは、より小さなRAIDグループを管理する一方、メインスイッチは、全体的なRAID構成を管理する。
データ保護方式がイネーブルされ、管理がストレージユニットの近くに維持されるにつれて、このソリューションは、エンタープライズ及びデータ中心の環境で大きな差別化要因である利点を提供する。本発明の実施形態は、低消費電力でより高い密度と性能を提供する。
このソリューションは、ホストとSSDとの間のデータパスにある、統合されたRoC又はイレイジャーコードコントローラを含むエンベデッド一つのPCIeスイッチで構成される。PCIeスイッチ+RoC構成要素は、構成及び制御のためBMCによって管理されることができ、新しいユーザーらに提供する前に、特定の構成に対するインターフェースをソフトウェアに露出させることができる。
このイレイジャーコード/RAIDモードで動作している場合、エンベデッドPCIeスイッチから出ていったり、それに入ったりするすべてのNVMe(Non−Volatile Memory Express)又はNVMe−oF(NVMe over Fabric)のトラフィックは、RoC又はイレイジャーコードコントローラによってスヌーピング(snooping)されることができる(Look−Aside RoC又はイレイジャーコードコントローラともいう)。RoC又はイレイジャーコードコントローラは、トラフィック内のデータがそれのローカルキャッシュでキャッシュヒット(cache hit)になるか否かを決定することができる。キャッシュヒットがあれば、トランザクション(読み取り又は書き込み)を、適切なSSDに伝達する必要がない。要求された読み出しデータは、RoCのキャッシュによって直接提供される。書き込みデータは、RoCのローカルキャッシュに直接更新され、「修正された」又は「ダーティ」データとして表示されることができる。
SSDへの場合は、パリティは、連結されたSSDの間に分散される。たとえば、RAID 4が選択されると、最後のSSDがパリティのみが格納するために使用され、残りのSSDは、データの格納に使用される。
ホストとSSD装置と間に外部のPCIeスイッチが存在することにより、仮想入出力アドレスがサポートされる。この場合、ホストPCIeスイッチの一部である1次RoCが、すべてのSSDのアドレスを仮想化することができる。つまり、アドレスや装置は、ホストオペレーティングシステム(Opreating Systme、OS)で見えない。本発明の実施形態で、ピア(peers)の少なくとも2つのSSDの間のピアツーピアのトランザクションが許容されてサポートされる。この選択は、一つ以上のSSDにわたってストライピング(striping)してSSDの冗長性及び/又は可用性のいくつかのフォームを向上させることができる。このモードでは、FPGA内にエンベデッドされたRoC又はイレイジャーコードコントローラ(存在する場合)が、ディセーブル(disable)される。イネーブル(enable)された唯一のRoC/イレイジャーコードコントローラは、ホストPCIeスイッチ内に有る。
ストレージ装置が、単一の装置モードで動作すると、入ってくるすべてのNVMe/PCIeトラフィックは、要請されたデータを有するSSDに伝達することができる。
ペアリング(pairing)モードがイネーブルされると、RoC/イレイジャーコードコントローラは、要請されたデータのアドレスがそれ自体のBARドメインに属しているか否かを決定する。この場合、トランザクションは、ローカルRoCによって完了される。書き込みトランザクションについての場合、(いくつかのエンベデッドされたSRAMやDRAMを使用する)、掲示された(posted)書き込みバッファ又は書き込みキャッシュが使用される。書き込みキャッシュヒットがある場合(以前の書き込みが発生し、データがまだ書き込みキャッシュバッファに格納されている場合)、処理は書き込みキャッシュポリシーによって異なる。たとえば、キャッシュポリシーが後記入(write−back)であれば、書き込みコマンドは、完了されることができ、RoCキャッシュによって終了されることができる。キャッシュポリシーが連続ライトスルー(write−through)であれば、書き込みデータがドライブに正常に伝送される場合、書き込みコマンドが完了されることができる。この場合、RoCは、書き込みデータがローカルキャッシュに正常に更新されると、すぐにホストへの書き込みコマンドを終了することができる。
RoCは、それをRoCが要求する多数の装置を仮想化することができ、多数の装置をデータや装置の障害に対して保護する単一の装置又はより少ない数の装置として示される。データ保護方式は、データの損失のある装置が存在する場合は、他の装置からデータが再構成されるように、自然に複数のグループに分散されることができる。RAID及びイレイジャーコーディングECは、これらの損失を保護するために分散アルゴリズムを使用する、一般的に採択されるデータ保護である。
RoCで装置を仮想化するためには、装置がRoCで終了されることができ、ホストからは見えない可能性がある。つまり、PCIeスイッチは、すべての既知の装置に連結され、RoCは、スイッチに連結される。装置を管理するためには、RoCは、PCIeスイッチを介して個々の装置を検出して構成する。また、RoCは、基本/出荷時モードで通過され、ホストソフトウェアがRoCを構成させる。ホストソフトウェアは、PCIeスイッチ+RoCハードウェアとともに動作するように特別に設計される。一度設定すると、RoCは、装置を終了し、装置がホストから見えないようにする。
PCIeスイッチ+RoCは、RAIDやECモードに対して多様な方法で構成される。より多くの装置をサポートするために、より大きなファンアウト構成を生成するために、付加的なPCIeスイッチのダウンストリームを有し得る。付加的に、1つ以上のこれらのハードウェアの組合せが、より大きな設定を形成するために、共に関連付けられる。たとえば、2つのPCIeスイッチ+RoCが連携して、代替構成を形成することができる。または、このような2つのPCIeスイッチ+RoCが別途動作する。
PCIeスイッチ+RoCが別途動作する場合には、各RoC及びPCIeスイッチの組合せがホストによって別の装置にインスタンス化される。ここにあるホストは、RoCによって仮想化されたすべてのSSDを見ることができる標準のOSドライバを有する。たとえば、6つのSSDは、PCIeスイッチの下に装着され、1つのSSDは、RoCによってホストにさらされると仮定しよう。第2RoC及びPCIeスイッチの組合せは、ホストに類似の構成を露出できる。2つのSSDがすべてのRoCコントローラ装置(それぞれ一つずつ)についてのホストによって探索される。各RoCコントローラは、露出された各SSDに対し別の装置空間を露出させることができる。この露出されたSSDとその背後にあるサポートするすべての装置は、ホストによって見られない。RoCは、PCIeスイッチを介して、ハードウェアの入出力パスを管理する。
この方法は、アクティブ・パッシブ(active−passive)の設定で使用される。ここで、第2コントローラは、第1コントローラのパスが失敗した場合のバックアップパスである。ホストは、ここで、第1コントローラだけ能動的に使用し、第2のRoCコントローラには、入出力(I/O)が伝送されない。アクティブ・パッシブ設定が使用されると、2つのRoCコントローラは、データを内部的に複製することができる。これは、RAID1データ保護の設定でのように、第1アクティブコントローラがすべての書き込みを第2のRoCコントローラに伝送することによって行われる。
第2のRoC及びPCIeスイッチがその背後にある、それ自体のSSDを有さず、ただ、バックアップコントローラのパスである第2アクティブ・パッシブ設定を有し得る。この場合に、二つのRoCコントローラが同じSSDのセットを参照するため、二つのRoCコントローラの間に入出力(I/O)が伝送されない可能性がある。これが標準的なアクティブ・パッシブ設定である。
各RoCの背後にあるSSDは、また互いに調整していない可能性があり、この場合、2つのSSDは、それらの間で共有される保護なしの別のSSDとして扱われる。
また、別の使用法で、両方のパスのすべてをアクティブ・アクティブ設定で使用される。この設定は、負荷バランスの目的で使用される。ここで、ホストは、特殊なソフトウェア層が入出力作業負荷を分散するために使用される方法で両方のパスすべてを使用する。2つのRoCコントローラは、SSDの両方の同期化状態に維持するために、それらの間の書き込みを調整する。つまり、各RoCコントローラの各SSDは、RAID1の設定でのような同一のデータが含まれる。
別の構成で、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コントローラは、ホストにアクセスできるため、それらは、それらの奇数又は偶数のペアについてのデータを満たせる。
例えば、ホストは、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コントローラはトランザクションが完了されたと、ホストに報告することができる。
奇数/偶数LBA/ストライプ/区域のペアは、他の負荷分散の用途に適用されることができる。
本発明の実施形態は、SSDの故障、削除、及びホット追加(hot addition)をサポートすることができる。SSDが正常に動作しなかったり、それのスロットから削除されたりする場合には、PCIeスイッチ内のRoCは、条件を検出する必要がある。PCIeスイッチがこのような状態を検出する場合、RoCは、故障したり削除されたりしたSSDについての再構成作業を開始する。また、RoCは、関連されたストライプからのデータの優先順位を決定することにより、再構成期間中のすべての入出力作業を処理する。
SSDの故障又は削除がPCIeスイッチ内のRoCに報告されるのは、少なくとも2つの方法がある。本発明の一実施形態で、すべてのSSDは、BMCに連結されたプレゼント(Present)ピンを有する。SSDをシャーシから削除する場合、BMCは削除を検出する。BMCは、影響を受けたスロット番号をPCIeスイッチ内のRoCに報告する。また、BMCは、SSDの状態を定期的に監視できる。BMCはSSDから報告された致命的なエラー状態を検出すると、BMCは、SSDを使用しないことに決定することができる。次に、BMCは、新しいSSDが再構成されるように、故障したスロット番号をRoCに報告することができる。
本発明の他の実施形態で、PCIeスイッチは、すべてのSSDがPCIe側帯域(sideband)信号を介して接続され、特定のエラー状態を検出できる限りホットプラグ(hot plug)をサポートすることができる。PCIeスイッチは、SSDを削除したり、追加したり、又はSSDに連結されたPCIeリンクが、これ以上作動していないことを検出したりする。これらのエラー状況において、PCIeスイッチ内のRoCが、故障したSSDを分離することができるか、又はBMCが故障した装置の電源をディセーブルすることで、すぐに装置の再構成を開始することで故障したSSDを分離できる。
イネーブルされたとき、各U.2コネクタのプレゼンス(Presence:PRSNT#)ピンは、シャーシ内に、新しい装置があることを示せる。信号は、PCIeスイッチ及び/又はBMCに連結される。RoCは、現在のデータ保護ポリシーによって新しいドライブをそれの既存のドメインに適切に構成することができる。
ホストから入ってくるすべてのトラフィックは、スヌーピングP2P及びアドレス変換論理(物理から論理に)に伝達されるよう要求される。PCIeの列挙(enumeration)中には、すべてのポートからのすべての構成のサイクルがスヌーピングP2Pロジックに伝達されるように要求される。選択された動作モードに応じて、RoCのあるPCIeスイッチの動作は、次のように定義される。
Figure 2020061149
また、RoCは、PCIeスイッチとホストプロセッサとの間に一列に(in−line)に配置される。本発明のこのような実施形態で、RoCは、Look−Through RoCと称される。 Look−Through RoCを使用する場合は、PCIeスイッチが一般的なPCIeスイッチとして動作するRoCは、ディセーブルされ、すべてのポートに対しリタイマ(re−timer)となる。この場合、すべてのアップストリームポートは、正常的な使用例でのように連結される。
RoCがイネーブルされると、少数のNTB(non−transparent bridge)ポートがホストに連結される。この場合に、RoCは選択されたRAID又はイレイジャーコーディングレベルに基づいて、受信するアドレスを論理アドレスに仮想化することができる。
RoCが、Look−Aside RoCなのかLook−Through RoCなのか否かにかかわらず、すべての受信する読み取り/書き込みメモリ要請は、キャッシュのヒット(hit)又はエラー(miss)を判定するために、RoCのローカルキャッシュと比較して確認される。キャッシュヒットがあれば、要求された読み出しデータは、SSDの代わりにRoCローカルキャッシュメモリによって提供される。メモリの書き込みヒットの場合には、書き込みデータは、キャッシュメモリにすぐに更新される。同一の書き込みデータは、後でSSDに更新される。この具現は、メモリの書き込みについての全体的な遅延(latency)を下げ、システムの性能を向上させることができる。
キャッシュミスがある場合、RoCコントローラは、どのSSDがデータにアクセスするのに適したドライブか否かを判定する。
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 2020061149
BIOS又はオペレーティングシステムがどのようなPCIeスロットに装置が設置されているかを判定する(又は、装置がどのような機能を具現するかを判定する)直接的な方法がないから、PCIバスが列挙される。バス列挙は、装置の機能15でバス番号と装置番号の組合せのそれぞれのベンダーID(VID)及び装置ID(DID)レジスタを読み出すために試みることで遂行される。DIDと異なる装置番号は、単に、そのバス上の装置のシリアル番号であり得る。さらに、新しいブリッジが検出された後、新しいバス番号が定義され、装置列挙は、装置番号0から再開される。
装置の機能15からの応答が受信されない場合、バスマスターは中断を遂行し、無効なVID/DID値であるオール・ビット・オン(all−bits−on)値(16進数ではFFFFFFFF)を返す。このような方式で、装置ドライバは、特定された組合せのバス/装置_番号/機能(B/D/F)が存在しないことが分かる。したがって、与えられたバス/装置の機能ID0に対する読み出しがマスター(イニシエータ)に中断させると、装置ドライバは、そのバス上にいかなる動作装置も存在しないという結論を下すことができる(装置は機能番号0を具現するように要求される)。この場合、残っている機能番号(1〜7)に対する読み出しは残っている機能番号(1〜7)が、また存在しないため必要としない。
ベンダーIDレジスタに対し指定されたB/D/Fの組合せについての読み出しが成功した場合、装置ドライバは、その装置が存在することを知っている。装置ドライバは、BARにすべて1を記録し、装置の要請されたメモリのサイズをエンコーディングされた形式に再び読み込むことができる。デザインは、すべてのアドレス空間のサイズが2のべき乗であり、自然に整列されることを意味する。
この時点で、BIOS又はオペレーティングシステムは、メモリマッピングと入出力ポートアドレスを装置のBARの構成レジスタにプログラミングすることができる。このアドレスは、システムの電源が入っている限り有効である。電源を切ると、これらのすべての設定が失われ、システムの電源が再びオンにすると、この手順が繰り返される。これらのプロセス全体が完全に自動化されるため、ユーザーはカードそのもの上のDIPスイッチを変更することで、新たに追加されたハードウェアを受動的に構成する作業を行う必要がない。この装置の自動検出及びアドレス空間の割り当ては、プラグアンドプレイが具現される方式である。
PCIe−to−PCIeのブリッジが探索されると、システムは、0(zero)ではないバス番号をブリッジを超えて2次PCIバスに割り当ててから、その2次バス上の装置を列挙する。より多くのPCIeブリッジが探索されると、すべての可能なドメイン/バス/装置の組合せがスキャンされるまで探索が再帰的に継続される。
各非ブリッジPCIe装置の機能は、最大6つのBARを具現することができ、それぞれのBARは入出力ポートとメモリマッピングされたアドレス空間内の異なるアドレスに応答できる。各BARは領域を描写する。
また、PCIe装置は、ドライバのコード又は構成情報が含まれているオプションROMを有する。
BMCはR、oC設定を直接構成する。BMCは、特定のデータの保護方式が適用されるハードコーディングされたパス又は構成可能な設定を有する。後者は、インターフェースをBIOSオプションとして、この構成に露出させたり、追加にハードウェア露出されたインターフェースを介してソフトウェアに露出させる。ハードコーディングされた方式は、BIOSファームウェア内に構成され、保護機能をイネーブル/ディセーブルするためのオプションを提供する。
装置のフェイラ(failure)を処理するために、制御パスを介したBMCは、ドライブが損傷したり、削除されたりする場合を検出することができる。また、BMCは、装置がSMART(Self−Monitoring Analysis and Reporting Technology)を通じて、すぐに損傷されるだろうと予想できる。この場合において、BMCは、失敗したシナリオをイネーブルしたり、ユーザーに状況について警告するためにRoCハードウェアを再構成したりする。BMCは、データパスではない、制御パスにのみ許可される。新しいドライブが挿入される場合は、BMCは再び介入し、新しいドライブを保護されたグループの一部として構成したり、再構成作業を開始したりできる。RoCハードウェアは、データのアクセスパスにおいてより低い遅延を提供しながら、可能な限り最小限の性能への影響を提供するために、この設定で、実際の再構成及び回復パスを処理する。
図1は、本発明の一実施形態に係るLook−Asideイレイジャーコーディングロジックを有するPCIeスイッチを含むマシンを示す図である。図1に、マシン105を図示する。マシン105は、プロセッサ110を含むことができる。プロセッサ110は、例えばIntel Xeon、Celeron、Itanium、又はAtomのプロセッサ、AMD Opteronプロセッサ、ARMプロセッサなどの任意の多様なプロセッサであり得る。図1は、マシン105内の単一のプロセッサ110を示しており、マシン105は、それぞれ、単一のコア又はマルチコアプロセッサである任意の数のプロセッサを含むことができ、任意の所望の組合せで混合されることができる。
また、マシン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は、また、異なるメモリタイプの任意の所望の組合せであり得る。
マシン105は、またLook−Asideイレイジャーコーディングロジックを有するPCIeスイッチ125を含むことができる。PCIeスイッチ125は、Look−Asideイレイジャーコーディングロジックをサポートする任意の所望のPCIeスイッチである。
マシン105は、また装置ドライバ135によって制御されるストレージ装置130を含む。ストレージ装置130は、PCIeスイッチ125と通信できる任意の所望の形状のストレージ装置であり得る。たとえば、ストレージ装置130は、NVMe SSDである。
図1は、(スタンドアロンサーバ又はラック(rack)サーバである)サーバとしてマシン105を図示するが、本発明の実施形態は、任意の所望のタイプのマシン105を制限なしに含む。例えば、マシン105は、デスクトップやラップトップコンピュータ、又は本発明の実施形態からの利点を得る任意の他のマシンに置き換えられる。マシン105は、また特殊なポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン及び他のコンピューティングマシンを含む。
図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に連結される。
図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は、本発明の実施形態に最適な要素に焦点を合わせる)。
本発明のいくつかの実施形態で、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レーンの数によってのみ制限される。
本発明のいくつかの実施形態で、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320は、カスタム回路(custom circuitry)を使用して実装される。本発明の他の実施形態で、Loo−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320は、適切にプログラムされたFPGA(Field Programmable Gate Array)またはASIC(Application−Specific Integrated Circuit)を使用して実装される。
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イレイジャーコーディングロジックの初期構成を担当することができる。
図3は、Look−Asideイレイジャーコーディングロジックを含む2つのPCIeスイッチ125、320を利用したデータ保護の例としての全体の設定を図示する。BMC325、330は、直接Look−Asideイレイジャーコーディングロジックを構成できる。BMC325、330は、特定のデータの保護方式が適用されるハードコーディングパス又は構成可能な設定を有し得る。後者は、インターフェースをBIOS(Basic Input/Output System)オプションとして、この構成に露出させたり、ハードウェア露出されたインターフェースを介した付加的なソフトウェアに露出させたりする。ハードコーディングされた方法は、BIOSファームウェア内に構成でき、保護機能をイネーブル/ディせーブルするためのオプションを提供できる。
ストレージ装置が故障した場合には、BMC325、330は、ストレージ装置が故障したり、制御パスを通して削除されるときを検出できる。その後に、BMC325、330は、Look−Asideイレイジャーコーディングロジックを再構成して、失敗したシナリオを可能にする。BMC325、330は、データパスではない、制御パスに連結される。同様に、新しいストレージ装置が挿入されるとき、BMC325、330は、新しいストレージ装置を既存のグループの一部として介入して構成したり、再構成の動作を開始できたりする。Look−Asideイレイジャーコーディングロジックは、実際の再構成を処理することができる。この設定内の回復パスは、データアクセスに対する性能の影響を理想的に最小化するだけでなく、残りのストレージ装置から再構成のストレージ装置上のデータを再構成しなければならない。
この時点で、「イレイジャーコーディング」という用語を定義することは、価値がある。イレイジャーコーディングは、多数のストレージ装置上でデータをエンコーディングするために要求されるすべての方法を説明するためのものである。少なくとも2つのストレージ装置やストレージ装置の少なくとも二つの部分(例えば、2つ以上のNANDフラッシュチャンネルを含む単一のシェル又はハウジング)が、イレイジャーコーディングのために要求される。一つのストレージ装置のみが使用されている場合は、データは、ストレージ装置に適した一般的な(既存の)データアクセス技術を使用して格納されるからである。つまり、イレイジャーコーディングは、ストレージ装置をより効率的に使用する方式及び/又はデータの冗長性(redundancy)を提供する方式で、二つ以上のストレージ装置、単一のストレージ装置の二つ以上の部分、又はこれらの任意の組合せでデータを格納するアプローチを意味する。
RAID(Redundant Array of Independent Disks)は、イレイジャーコーディングのサブセットを示す。つまり、RAIDレベルは、多様なイレイジャーコーディング方式の特定の具現を示す。しかし、従来のRAIDレベルを超えて定義される他のイレイジャーコーディング方式が有り得る。
イレイジャーコーディング(又はRAID)を具現することは、しばしば物理的に区分された二つ以上のストレージ装置を使用する。しかし、本発明のいくつかの実施形態で、単一のシェル又はハウジングは、イレイジャーコーディングの目的のために分離されたストレージ装置として扱われるストレージ装置の多数の部分を備える。たとえば、単一のNVMe SSDシェル又はハウジングは、多数のNANDフラッシュチャンネルを含む。各NANDフラッシュチャンネルは、多様なNANDフラッシュチャンネルでデータストライピング(又は他のエンコーディング)された、イレイジャーコーディングの目的のために分離されたストレージ装置と見なされることができる。これは、本発明のいくつかの実施形態で、単一のストレージ装置を使用して、イレイジャーコーディングが具現可能である。しかも、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が(Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125のどこかに構成されるか、又は追加のロジックによる)エラー訂正コード又は単一のストレージ装置で使用される他の機能をサポートすることができる。
図4は、相異なるイレイジャーコーディング方式を達成するための、図3のストレージ装置130−1〜130−6を示す図である。図4で、ストレージ装置130−1〜130−6は、イレイジャーコーディング方式405に図示したように、RAID0(zero)構成で使用される。RAID0は、多様なストレージ装置にわたってデータをストライピング(striping)する。つまり、データは、ストレージ装置に適切な論理ユニットに分割され、各論理ユニットは、アレイ内のストレージ装置の数まで異なるストレージ装置に記録される。すべてのストレージ装置は、それらに記録された一つの論理ユニットのデータを有した後に、データは、第1ストレージ装置に再び記録し続ける。
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の欠点は、ストレージ装置が故障しても保護機能があるということである。つまり、アレイの任意のストレージ装置が故障したらデータが失われる。実際に、RAID0は、JBOD又はJBOFより危険な可能性がある。つまり、多数のストレージ装置に渡ってデータをストライピングすることにより、任意の個々のストレージ装置が故障すると、すべてのデータが失われる(一方で、JBOD又はJBOFでは、ファイルは一般的に、一つのストレージ装置にのみ記録される。従って、JBOD又はJBOF設定で単一のストレージ装置が故障した場合、一部のデータの損失は発生する可能性があるが、必然的に、すべてのデータが失われるわけではない。)。
RAID0は、いかなる冗長性も含まれていないため、技術的に独立したディスクの冗長アレイではない。しかし、RAID0は、通常的にRAIDレベルとみなされ、RAID0は、確かにイレイジャーコーディング方式と見なされる。
イレイジャーコーディング方式410は、一般的なRAID方式のRAID5を図示する。RAID5で、パリティブロックは、そのストライプの他のストレージ装置に格納されたデータに対して計算される。したがって、図4において、RAID5アレイは、総計12個のストレージ装置を含むから、11個のストレージ装置がデータドライブとして使用され、1つのストレージ装置は、パリティドライブとして使用される(RAID5で、パリティデータは、パリティドライブに制限されないが任意のデータのようにストレージ装置にわたって分散されている。これ以上、多く使用されないRAID4は、すべてのパリティ情報を単一のドライブに格納する。)。アレイ内のn個のストレージ装置があるアレイの全容量は、最も小さなストレージ装置の容量の(n−1)倍で計算される。各ストライプは、単一のパリティブロックを含むことから、イレイジャーコーディング方式410は、最大で1つのストレージ装置の故障を許容することができ、まだすべてのデータにアクセスすることができる(故障したストレージ装置のデータは、パリティブロックと結合して機能的なストレージ装置上のデータを使用して回復されることができる)。
RAID5は、RAID0よりも少ない全体のストレージを提供するが、ストレージ装置の故障に対する保護機能を提供する。これはRAIDレベルの中で決定する重要なトレードオフである。全体のストレージ容量と冗長性の相対的な重要性による。
図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とイレイジャーコーディング技法は、固定コード又は回転コードを使用し、前記固定コード/パリティ駆動ドライバー表記法は、単に例示の目的であることを留意しなければならない。
イレイジャーコーディング方式415は、すべてのRAIDレベル及び任意の所望のイレイジャーコーディングスキームに適用可能な、より一般的な説明を示す。ストレージ装置130−1〜130−6のアレイが与えられると、これらのストレージ装置は、2つのグループに分割される。つまり、データを格納するために使用される1つのグループ、コードを格納するために使用される他のグループである。コードは、パリティ情報やデータグループ内のデータのサブセットから欠落されたデータの復元やコーディンググループ内の一部のコードを承認する任意の所望のコーディング情報であり得る。図4に示したように、イレイジャーコーディング方式415は、最大X個のデータストレージ装置及びY個コードのストレージ装置を含む。アレイのX個のストレージ装置の任意の組合せを考慮すれば、すべてのX個のデータストレージ装置からのデータにアクセスしたり、再構成することができるものと予想される。したがって、イレイジャーコーディング方式415は、一般的に、アレイ内の最大のY個のストレージ装置の故障を許容することができ、それにもかかわらずアレイに格納されたすべてのデータにアクセスすることができる。容量面では、イレイジャーコーディング方式415の全容量は、一番小さなストレージ装置の容量のX倍である。
前記議論で、任意のイレイジャーコーディング方式の全容量は、「最小のストレージ装置の容量」と関連して記述されることに注意しよう。いくつかのイレイジャーコーディング方式の場合、ストレージ装置が可変容量を有し、まだ完全に利用されることが可能である。しかし、RAID0又はRAID1のようないくつかのイレイジャーコーディング方式は、すべてのストレージ装置が同じ容量を有すると予想され、より大きなストレージ装置が含むすべての容量を捨てるだろう。したがって、「最も小さなストレージ装置の容量」という表現は、相対的な言葉として理解されるべきで、任意の特定のイレイジャーのコーディング方式を使用するアレイによって提供される全容量は、前述した公式より大きい可能性がある。
図3に戻ると、使用された特定のイレイジャーコーディング方式にかかわらず、PCIeスイッチ125、320のLook−Asideイレイジャーコーディングロジックは、物理ストレージ装置130−1〜130−6から新しいストレージ装置を効果的に生成する。この新しいストレージ装置は、このイレイジャーコーディング方式によって提示されたストレージ装置が物理的に存在しないため、仮想ストレージ装置として考えられる。そして、この仮想ストレージ装置は、物理ストレージ装置130−1〜130−6を使用するから、物理ストレージ装置130−1〜130−6は、ホストから隠されていなければならない。最後に、格納されているデータが、ホストが知らない方式でエンコーディングされて格納された場合には、ホストは、ストレージ装置130−1〜130−6上のブロックに直接アクセスしようとすることが問題となる。
これらの仮想ストレージ装置の使用をサポートするために、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)の番号が付いた論理ブロックにデータが記録されるよう要請できる。
あるいは、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125及び/又は320は、仮想ストレージ装置と通信する方法を示す図1のプロセッサ110からホストメモリアドレスのブロックを要請する。図1のプロセッサ110は、データを読み出したり、記録しようとする場合は、伝送は、ホストメモリアドレスのブロック内の適切なアドレスを含むLook−Asideイレイジャーコーディングロジックを有するPCIeスイッチ125及び/又は320に送られる。このホストメモリアドレスのブロックは、少なくともイレイジャーコーディング方式を使用して具現された仮想ストレージ装置のサイズでなければならない(そして、追加のストレージ装置が使用中に、イレイジャーコーディング方式に追加されると予想される場合は、仮想ストレージ装置の初期容量よりも大きい可能性がある)。
図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ポートにデータをルーティングするように動作する。
スヌーピングロジック525と、イレイジャーコーディングコントローラ530の動作に入る前に、図3のストレージ装置130−1〜130−6に格納されたデータに対して少なくとも2つの異なる「アドレス」が使用されることを理解することは助かる。任意のストレージ装置で、データは、ハードウェア構造に関連付けられた特定のアドレスに記録される。このアドレスは、「物理」アドレスと見なされる。NVMe SSDのコンテキスト(context)で、「物理」アドレスは、一般的にPBA(Physical Block Address)として示される。
NVMe SSDsで使用されるフラッシュメモリは、一般的に、データがその場に上書きされることを承認しない。代わりに、データが上書きされなければならない必要がある場合には、以前のデータは無効化され、新しいデータは、NVMe SSD上の他の新しいブロックのどこかに記録される。したがって、(ファイル、オブジェクト、またはその他のデータ構造である)、特定のデータ構造と関連されるデータが記録されているPBAは、時間が経つにつれて変更される。
なお、フラッシュメモリにデータを再配置しなければならないもう一つの理由がある。データは、一般的に、フラッシュメモリにデータを書き込むときに使用されるものよりも大きいユニットでフラッシュメモリから削除される。有効なデータが削除されるユニットのどこかに格納されている場合は、有効なデータが、ユニットが削除される前に、フラッシュメモリの他のどこかに記録されるべきである。この削除プロセスは、一般的にガービッジ・コレクション(Garbage Collection)と称され、削除されるユニットで有効なデータをコピーするプロセスは、プログラミングと称される。そしてWear Leveling(フラッシュメモリのセルをほぼ同じに使用しようと試みるプロセス)は、フラッシュメモリ内のデータをまた再配置することもできる。
ホストは、特定のデータブロックが移動される度に通知され、またはデータの新しい格納位置が通知されうる。しかし、このような方法でホストに通報することは、ホストにとっては相当な負担になる。したがって、ほとんどのフラッシュメモリ装置は、データが格納される論理ブロックアドレス(LBA)をホストに通知し、LBAをPBA(多くの場合、フラッシュ変換階層(FTL))にマッピングするテーブルを維持管理する。その後に、当該データが新しいPBAに移動されるたびに、フラッシュメモリは、ホストに新しいアドレスを知らせる代わりに、FTLでLBA−PBAマッピングテーブルをアップデートする。したがって、各ストレージ装置について、データに関連付けられたPBA及びLBAがあり得る。
Look−Asideイレイジャーコーディングロジックにより提示されるように、仮想ストレージ装置の概念を追加すると、この構造にもう1つのレベルが導入される。図3を参照して、イレイジャーコーディング方式が5つの1TB NVMe SSDを含み、各NVMe SSDは、4KBサイズのブロックを使用する、前記提示された例を思い出そう。各NVMe SSDは、0から(228−1)までの番号が付けられたLBAが含まれる。しかし、ホストに提供された仮想ストレージ装置は、0から(230−1)までの番号が付けられるLBAが含まれる。
したがって、ホストにより見られる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つの又は潜在的に、はるかに異なるアドレスが有り得る。
もちろん、ストレージ装置が同種であることを要求しない。すなわち、それらは、異なるサイズを有することができ、LBAの数が異なる場合がある。例えば、それらは互いに異なる装置のタイプであり、SSD及びハードディスクドライブが混在されている可能性がある。
説明の単純化のために、ストレージ装置に提供されるアドレスが、論理ブロックアドレス(たとえば、ハードディスクドライブ)ではなくても「装置のLBA」という用語が使用される。「装置のLBA」が、データがストレージ装置に格納されたデータのある実際のアドレスである場合には、ストレージ装置は、データにアクセスする前に、装置のLBAを別のアドレスにマッピングしない可能性がある。
図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との間のビットの値は避けるべきである。)本発明の実施形態は、ホストから受信された論理ブロックアドレスを(適切な)ストレージ装置上のブロックアドレスにマッピングする任意の他の所望のアプローチを使用する。
たとえば、(イレイジャーコーディングをファクタリング(factoring)(考慮)した後)、ストレージ装置130−1〜130−6の全体にわたった全体のストライプを満たすのに十分なデータを有する書き込みの要求を送信する図1のプロセッサ110を考慮しよう。スヌーピングロジック525は、データを個々の論理ユニットに分割することができ、以下で詳述するように、イレイジャーコーディングコントローラ530は、データを提供したり、修正したりする。スヌーピングロジック525は、適切なデータとともにストレージ装置130−1〜130−6のそれぞれに予定された一つの伝送を生成することができる。
スヌーピングロジック525が、元のホストLBAを当該ストレージ装置に適した装置のLBAに代替する場合、その装置のLBAは、物理ブロックのアドレスである必要はないということに留意しなければならない。言い換えれば、スヌーピングロジックによって使用される装置のLBAは、それ自体が他の論理ブロックのアドレスであり得る。このような構造は、物理ストレージ装置が適切な自体のデータストレージを管理することを続けるようにしてくれる。たとえば、物理ストレージ装置がNVMe SSDの場合、SSDは、NANDフラッシュメモリチップのいずれか1つに提供された装置のLBAとPBAとの連結を管理するためのそれのフラッシュ変換層を使用して、データを移動させて、ガービッジコレクションやウェアレベリングを遂行する。これらの動作は、スヌーピングロジック525の認識なしにも発生する。しかし、ホストによって指示されない限り、当該ストレージ装置がデータを再配置しないとすれば、スヌーピングロジック525によって提供される装置のLBAは、ストレージ装置上の物理アドレスである。
上述したように、イレイジャーコーディングコントローラ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によって遂行されるように、データについての特定の動作は、使用されるイレイジャーコーディング方式に依存する。
スヌーピングロジック525及びイレイジャーコーディングコントローラ530は、任意の所望の方法で具現される。たとえば、スヌーピングロジック525及びイレイジャーコーディングコントローラ530は、適切なソフトウェアが格納されたプロセッサを使用して具現される。しかし、PCIeスイッチは、(一般的には、数多くの機能を具現する必要がないPCIeスイッチのような装置のプロセッサで実行されるソフトウェアより典型的に高速な)ハードウェア回路として一般的に具現されることから、スヌーピングロジック525と、イレイジャーコーディングコントローラ530は、適切な回路を使用して具現される。この回路は、適切にプログラムされたFPGA(Field Programmable Gate Array)、ASIC(Application−Specific Integrated Circuit)、又は他の所望のハードウェア具現を含む。
最も基本的な実施形態で、Look−Asideイレイジャーコーディングロジックは、スヌーピングロジック525及びイレイジャーコーディングコントローラ530のみを使用して具現される。しかし、Look−Asideイレイジャーコーディングロジックでキャッシュ545及び/又は書き込みバッファ550を含んでいることは相当な利点を提供できる。
キャッシュ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によってアクセスされる。
書き込みバッファ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キャッシュの構造のような任意の所望のメモリ構造を使用して具現される。
書き込み動作を遂行する一部として、Look−Asideイレイジャーコーディングロジックは、書き込み動作を完了するのに必要な任意のデータが現在のキャッシュ545に存在するか否かをチェックできる。例えば、図1のプロセッサ110は、仮想ストレージ装置への書き込み要請を伝送すると、イレイジャーコーディング方式は、パリティ又は他のコード情報を計算するために、全体のストライプが読み取られることを要求することができる。そのデータの一部(又は全部)がキャッシュ545に存在する場合、データは基本的物理ストレージ装置からデータを読み出すのではなく、キャッシュ545からアクセスされることができる。さらに、キャッシュポリシーは、データが短期間に再び要求される場合に、記録されるデータがキャッシュ545にもキャッシュされるべきだと提案できる。
一方、図5は、キャッシュ545及び書き込みバッファ550を別個の要素として図示するが、本発明の実施形態は、両者を単一の要素(単に「キャッシュ」と称されることがある)に結合できる。本発明の実施形態で、キャッシュは、キャッシュに格納されたデータが「クリーン(clean)」なのか「ダーティ(dirty)」なのかを示すビットを含む。「クリーン」データは、基本物理ストレージ装置に最後に記録された後に、読み出されたが、修正されていないデータを示す。「ダーティ」であるデータは、基本的物理ストレージ装置に最後に記録された後に、修正されたデータである。キャッシュに「ダーティ」のデータが含まれている場合は、Look−Asideイレイジャーコーディングロジックは、キャッシュポリシーに従ってデータがキャッシュから削除されるとき、「ダーティ」データを基本的ストレージ装置に再び書き込む必要がある。なお、本発明の実施形態は、キャッシュ545、書き込みバッファ550の両方(個別に、又は単一の要素に結合される)を含むか、又はその両方を含まない可能性がある。
上述したように、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装置のダウンストリームの列挙を許容しなければならない状況が有り得る。
スヌーピングロジック525は、PPU520に構成コマンドを伝達する。このように、スヌーピングロジック525は、またPCIeスイッチコア515をPPU520と連結するための目的でPCIe−to−PCIeスタックとして動作する。
最後に、スヌーピングロジック525は、図1のプロセッサ110から(おそらくLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125上のピンを介して)、イレイジャーコーディングイネーブル信号555を受信する。イレイジャーコーディングイネーブル信号555は、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125において、イレイジャーコーディングロジックをイネーブル及びディセーブルさせることを可能にするために使用される。
図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)」)ある。
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内に含まれる要素である。
なお、一般的にPCIeスイッチは、(ホストへの)アップストリーム及び(ストレージ装置やその他の連結された装置への)ダウンストリームのトラフィックにおいて同じ数のポートを使用する。例えば、PCIeスイッチ605が総計96個のポートを含むと、一般的にアップストリームのトラフィックには、48個使用され、ダウンストリームのトラフィックには、48個使用される。しかし、図6のLook−Throughイレイジャーコーディングロジックがイネーブルされると、レーザコーディングコントローラ530は、すべてのダウンストリーム装置を仮想化する。このような状況で、一般的にホストとの通信には、単に16個あるいはおそらく32個のアップストリームポートが必要である。PCIeスイッチ605が32個又は64個よりも多くのポートを含む場合には、追加のポートは、仮想ストレージ装置の容量を増加させるために使用される追加のダウンストリーム装置を連結するのに使用される。このためには、図6のイレイジャーコーディングコントローラ530は、ホストと通信するために不透明ブリッジ(NTB)ポートを使用する。
図6は、Look−Throughイレイジャーコーディングロジックを含むPCIeスイッチ605を示す。しかし、本発明の実施形態は、PCIeスイッチ605からLook−Throughイレイジャーコーディングロジックを分離する。たとえば、Look−Throughイレイジャーコーディングロジックは、FPGA又はASICを使用するPCIeスイッチ605とは別の構成として、具現される。
しかし、図5に図示したLook−Asideイレイジャーコーディングロジックと、図6に図示したLook−Throughイレイジャーコーディングロジックとの間には、具現上及び技術上の違いがある一方、機能的には、イレイジャーコーディングロジックは、すべて類似した結果を達成する。したがって、図5に図示したLook−Asideイレイジャーコーディングロジックと、図6に図示したLook−Throughイレイジャーコーディングロジックは、必要に応じて交替される。本明細書で、Look−Asideイレイジャーコーディングロジックに対するどのような参照も、Look−Throughイレイジャーコーディングロジックを含むように意図する。
図7〜図10は、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための様々なトポロジを示している。しかし、使用中のトポロジにかかわらず、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125の動作は、同一である。つまり、様々な接続されたストレージ装置に連結性を提供し、そのストレージ装置で、イレイジャーコーディングをサポートするためである。
図7は、本発明の一実施形態に基づいて、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125を使用するための第1トポロジを示す図である。図7において、図1のマシン105の分離された構成として具現されるイレイジャーコーディングロジックを含むPCIeスイッチ125を図示する。つまり、イレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110又はストレージ装置130のような任意の他の構成とは別途に製造・販売されることができる。
Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130に連結される。図7において、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングをサポートしない可能性のある、ただ単一のストレージ装置にだけ接続されたものとして図示する。つまり、イレイジャーコーディングは、ストライピング、チャンク(chunking)、グループ化及びパリティ又はコード情報の使用を遂行するために、少なくとも2つのストレージ装置やストレージ装置の少なくとも二つの部分を要求する。しかし、Look−Asideイレイジャーコーディングロジックを有する単一のストレージ装置のPCIeスイッチ125によってもいくつかの利点を提供する。たとえば、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、サービスがストレージ装置130によって自然に提供されない場合、ストレージ装置130とともにエラー訂正コードを使用したり、ストレージ装置130に格納されたデータを暗号化することをサポートしたりする。
ストレージ装置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との間に位置する。
データ加速(data acceleration)に加えて、FPGA705は、他の機能性を提供してストレージ装置130をサポートする。たとえば、FPGA705は、同じデータがストレージ装置130に格納される回数を減少させるストレージ装置130に対するデータ重複排除機能(data deduplication functions)を具現する。FPGA705は、特定のデータがストレージ装置130に二つ以上格納されたかを判定し、多様な論理ブロックアドレス(またはデータを識別するためにホストによって使用される他の情報)間の関連性を構成し、データストレージ装置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)を識別することができない。
あるいは、FPGA705は、ストレージ装置130上のデータにアクセスできる非認証ユーザーから保護するためのストレージ装置130上のデータの暗号化機能(data encryption functions)を具現できる。適切な暗号化キーが提供されることなしに、FPGA705から返されたデータは、要請者(requestor)に無意味であり得る。ホストは、データを読み書きするときに使用する暗号化キーを提供する。また、FPGA705は、自動的にデータの暗号化及び復号化(encryption and decryption)を遂行する。FPGA705は、暗号キーを格納でき、(ホストに代わって、それらを生成できる)誰がデータを要請するかに基づいて使用される適切な暗号化キーを判定する。
あるいは、FPGA705は、ストレージ装置130にデータを格納するために必要とされる総空間を減少させるストレージ装置130上のデータ圧縮機能(data compression functions)を具現できる。ストレージ装置130にデータを書き込むときに、FPGA705は、ホストから提供されたデータをより小さなサイズのストレージに圧縮し、その後に圧縮されたデータ(ストレージ装置130からのデータを読み取るときに、オリジナルのデータを復元するのに必要な情報とともに)を格納する。ストレージ装置130からデータを読み取るとき、FPGA705は、圧縮されたデータ(圧縮されたデータからオリジナルのデータを復元するのに必要な情報とともに)を読み取り、圧縮を解除してオリジナルのデータを復元することができる。
データ重複排除、データのインテグリティ(信頼性)、データの暗号化、およびデータ圧縮の適切な具現が使用されることができる。本発明の実施形態は、これらの機能の特定の具現に限定されない。
FPGA705は、意図されたようなストレージ装置130上の機能の組合せを具現する。FPGA705は、データ圧縮とデータ信頼性(これは、データ圧縮が、データのエラー敏感度を増加させることができるため、ストレージ装置130に格納されたデータのシングル(single)エラーは、使用できないデータのサイズを増加させることができる)の両方を具現することができる。FPGA705は、(可能なデータの小さなストレージを使用しながらデータを保護するために)データの暗号化及びデータ圧縮の両方を具現できる。二つ以上の機能の他の組合せは、FPGA705によって提供される。
全体的な動作のコンテキストにおいて、これらの機能を具現する際に、FPGA705は、適切なソースからデータを読み取る。「ソース(source)」の用語は単数形であるが、本発明の実施形態は、適切な場合に、(多数のストレージ装置のような)多数のソースからデータを読み取ることができる。FPGA705は、データ加速(acceleration、アクセラレーション)、データ集積、データ暗号化、及び/又はデータ圧縮のようなデータについての適切な動作を遂行する。FPGA705は、動作の結果を使用して適切な対応(action)を、例えば、図1のホスト105に結果を伝送すること、またはストレージ装置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のような)適切なデスティネーションに結果を伝送することができる。
図7において(そして、図8〜図10に図示したトポロジにおいて)、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングに適していない装置に付着される。たとえば、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、内蔵(built−in)のイレイジャーコーディング機能を有する他のストレージ装置やストレージ装置ではない図7のFPGA705又はGPUのような装置に付着される。これらのすべての装置は、イレイジャーコーディング(又は少なくともLook−Asideイレイジャーコーディングロジックを有するPCIeスイッチ125によるイレイジャーコーディング)に対し資格のない装置として記述される。
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イレイジャーコーディングロジックを有する。
本発明の他の実施形態は、イレイジャーコーディング資格のない装置をディセーブルさせ、これらをまるでLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125にまったく連結されていないかのように処理する。本発明の実施形態で、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ストレージ装置130に対するLook−Asideイレイジャーコーディングロジックをイネーブルさせ、イレイジャーコーディング資格のある任意の他のストレージ装置は、まるでLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に連結されていないかのように、ディセーブルされる。
本発明の他の実施形態では、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、Look−Asideイレイジャーコーディングロジックによってカバーされるストレージ装置のためのLook−Asideイレイジャーコーディングロジックをイネーブルさせうるが、イレイジャーコーディングへのアクセスの資格がない他の装置をイネーブルさせる。本発明のこれらの実施形態は、最も複雑な具現である。Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、ある装置がイレイジャーコーディングに適合しているか、ある装置が適合していないかを決定する必要があり、その次のトラフィックが仮想ストレージ装置に指定されるか(この場合、トラフィックは、Look−Asideイレイジャーコーディングロジックによってインターセプトされる)、指定されないか(この場合、トラフィックは、その既存のデスティネーションに伝達される)を決定するために、トラフィックを分析する必要がある。
マシン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に連結されたスロットのような他のスロットに連結されることを提案できる。このような方式で、イレイジャーコーディングの資格のある少なくとも一部のストレージ装置は、イレイジャーコーディングの資格のない他の装置へのアクセスを遮断することなく、イレイジャーコーディング方式から利点を得られる。
図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を含む。
典型的には、図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の一部として具現される。
図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が、イレイジャーコーディング方式の一部であるストレージ装置にアクセスを試みるのを防止するために)、ダウンストリーム装置を報告しない可能性がある。
Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320の両方が同じシャーシ内に有り得るが、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320が相異なるシャーシ内に有り得ることに留意しよう。つまり、イレイジャーコーディング方式は、多数のシャーシでストレージ装置を拡張(包括)できる。要求されるのは、多様なシャーシのPCIeスイッチがイレイジャーコーディング方式の一部となるストレージ装置がある場所に対し互いに交渉できなければならないというものである。また、本発明の実施形態は、Look−Asideイレイジャーコーディングロジックを含む2つのPCIeスイッチ125、320に制限されない。つまり、イレイジャーコーディング方式に含まれたストレージ装置は、Look−Asideイレイジャーコーディングロジックを含む任意の数のPCIeスイッチ125、320に連結される。
ホスト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スイッチに連結されたストレージ装置に向かわないことを仮定)。
本発明の他の実施形態で、Look−Asideイレイジャーコーディングロジックを含む単一のPCIeスイッチがLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチの両方に連結されたすべてのストレージ装置を仮想化するための責任がある代わりに、Look −Asideがイレイジャーコーディングロジックを含む各PCIeスイッチは、別途の仮想ストレージ装置(別途のイレイジャーコーディングドメインを含む)を生成できる。このような方式で、異なるイレイジャーコーディングドメインは、異なる顧客のために生成されるが、容量は、より少ない可能性がある。
図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イレイジャーコーディングロジックをディセーブルさせることによって達成される。
図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イレイジャーコーディングロジックを有し得る。
図10は、2段階の階層構造で構成されたLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、320、1005を示すのに対し、本発明の実施形態は、含まれたPCIeスイッチの数又はこれらの階層的構成に限定されない。したがって、本発明の実施形態は、任意の所望の階層に配列されたLook−Asideイレイジャーコーディングロジックを含む任意の数のPCIeスイッチをサポートできる。
図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をストレージ装置と通信できるようにするブリッジのように効果的に動作する。
本発明の実施形態は、またストレージ装置の故障を検出し、処理することをサポートする。例えば、再び図4を参照して、ストレージ装置130−1が故障したと仮定する。ストレージ装置130−1は、様々な理由から故障することができる。つまり、電力サージ(Power surge)は、電子機器を損傷させることができる。(ストレージ装置130−1の内部又はLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125とストレージ装置130−1との間の連結内の)配線は故障することもあり、ストレージ装置130−1は、あまりにも多くのエラーを検出してそれ自身を終了させることができ、ストレージ装置130−1は、他の理由から故障した可能性もある。ストレージ装置130−1は、ユーザーによって(おそらくより新しく、より信頼性の高い、またはより大きなストレージ装置と、それを交替するために)それのスロットから除去される可能性もある。理由は何であれ、ストレージ装置130−1は、利用不可能になれる。
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が故障したと結論を下すことができる。
ストレージ装置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に格納されたデータにアクセスする別のメカニズムを有し得る。
本発明の実施形態は、また、アレイへの新しいストレージ装置の挿入を検出し、処理することをサポートする。ストレージ装置の故障を検出するように、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(又は、図3のBMC325)は、時々何が連結されたか、又は他の所望のメカニズムを確認するために、装置をピン(ping)をすることで、コネクタ上のPresenceピンを介して新しいストレージ装置の挿入を検出することができる(故障したストレージ装置を検出するように、Presenceピンを使用して、新しいストレージ装置を検出することは、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125においてインターラプトをトリガーする)。新しいストレージ装置が検出されると、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、新しいストレージ装置をアレイに追加する。アレイに新しいストレージ装置を追加することは、イレイジャーコーディング方式を変更することを必ずしも包含しない。つまり、これらの変更は、ストレージ装置に貯蔵されたすべてのデータを変更しなければならないことを要求する可能性もある(例えば、RAID5からRAID6への変更を考慮しよう。各ストライプは、現在のストレージ装置間で循環される必要のある2つのパリティブロックを必要とし、大量のデータの計算・移動が要求される)。しかし、新しいストレージ装置を既存のイレイジャーコーディング方式に追加することは、大量のデータを移動する必要がない可能性がある。したがって、新しいストレージ装置を追加しても、ストレージ装置の故障に対するアレイの許容値が増加しないが、新しいストレージ装置を追加することは、仮想ストレージ装置の容量をそれにもかかわらず増加させうる。
アレイに故障したストレージ装置がある場合は、新しいストレージ装置の挿入は、故障したストレージ装置を再構成するために使用される。図5のイレイジャーコーディングコントローラ530は、故障したストレージ装置上に格納されたデータを計算し、そのデータを代替のストレージ装置の適切なブロックアドレスに貯蔵する。たとえば、故障したストレージ装置にあったオリジナルデータは、他のストレージ装置のデータ(オリジナルデータとパリティ又はコード情報のすべて)から計算される。故障したストレージ装置に格納されたパリティまたはコード情報は、他のストレージ装置のオリジナルデータから再び計算される(もちろん、故障したストレージ装置がミラーリングされた場合、図5のイレイジャーコーディングコントローラ530は、単にデータがミラーから代替のストレージ装置にコピーされるように指示することができる)。
故障したストレージ装置を再構成するには時間がかかることがある。本発明の一部の実施形態で、代替のストレージ装置が設置されるとすぐ再構成が発生する。本発明の他の実施形態で、ストレージ装置がスラック(slack)期間(余裕時間)内に再構成される限り、図5のイレイジャーコーディングコントローラ530は、そのように再構成する。しかし、仮想ストレージ装置がビジー状態であれば、図5のイレイジャーコーディングコントローラ530は、スラック時間が発生するまで代替のストレージ装置の再構成を延期し、図1のプロセッサ110からの要請に基づいて、必要に応じて故障したストレージ装置からデータを再構成する。(これらの再構成されたデータは、もちろん、完全な再構成を待たずに、代替のストレージ装置に記録されるため、後で再びそのデータを再計算する必要がない。)
本発明の実施形態は、また、ストレージ装置の初期化をサポートする。新しいストレージ装置がアレイに追加されると−故障したストレージ装置のための代替のストレージ装置として、または仮想ストレージ装置の容量を増加させるため−新しいストレージ装置が初期化される。初期化は、イレイジャーコーディング方式のためのストレージ装置を準備する段階を含む。
新しいストレージ装置の初期化は、新しいストレージ装置からの既存のデータを削除することを含むこともできる。たとえば、特定のストレージ装置が、顧客にリース(lease)された状況を考慮してみよう。その顧客のリースが終了され、ストレージ装置は、新規の顧客に再利用されることができる。しかし、ストレージ装置は、まだ、顧客のオリジナルデータを有し得る。次の顧客が前の顧客のデータにアクセスできないようにするには、任意の所望のメカニズムを使用して、ストレージ装置のデータを削除することができる。たとえば、データが格納された場所に関する情報を格納するテーブルが消去されることができる。または、(後で消去された任意の情報を回復するための試みを防止するために)、データ自体を新しいデータで上書きする。新しいデータは、オリジナルデータが回復されないように保障するために設計されたパターンを使用する。例えば、米国国防総省(DOD)は、回復を防止するために、データを削除する方法に対する標準を発表した。これらの標準は、ストレージ装置を新たなクライアントに合わせて再利用する前に、ストレージ装置から古くなったデータを削除するために使用される。
新しいストレージ装置が、既存のアレイにホット追加(hot−added)される場合にのみ、初期化が制限されるのではない。初期化は、ストレージ装置、Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125、又は図1のマシン105が、全体的に、最初に電源を投入するときに、また発生する。
図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によって送信された伝送であり得る。
ブロック1109で、図5のスヌーピングロジック525は、伝送が図1のプロセッサ110からの制御伝送であるのかを決定する。もしそうなら、ブロック1112で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図5のPPU520に制御伝送を伝達できる。その後に処理が終了する。
伝送が図1のプロセッサ110からの制御伝送ではない場合は、ステップS1115(図11B)で、図5のスヌーピングロジック525は、伝送がホストからの読み取り又は書き込みの要請であるかを決定できる。そうでない場合、ステップS1118で、図5のスヌーピングロジック525は、伝送における装置LBAをホストに適合したホストLBAに代替できる。図5のスヌーピングロジック525は、また伝送が実際のデータを格納した物理ストレージ装置ではなく、仮想ストレージ装置から来たことを意味するように伝送を修正できる。ステップS1121で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110に伝送を伝達できる。その後に処理が終了する。
一方、伝送が図1のプロセッサ110からの読み取り又は書き込みの要請であれば、ステップS1124で、図5のスヌーピングロジック525は、問題のデータが、図5のキャッシュ545又は図5の書き込みバッファ550から利用可能であるかを決定できる。データが図5のキャッシュ545又は図5の書き込みバッファ550から利用可能な場合、ステップS1127(図11C)で、図5のイレイジャーコーディングコントローラ530は、適切な位置でデータにアクセスすることができる。
データが図5のキャッシュ545又は図5の書き込みバッファ550から利用できない場合には、ステップS1130で、図5のスヌーピングロジック525は、ホストによって提供されたホストLBAを、ストレージ装置がデータを読み取らなければならない装置LBAに代替するために送信を修正できる。図5のスヌーピングロジック525は、また、送信を受信するための適切なストレージ装置を識別するために伝送を修正することもできる。次に、ステップS1133で、スヌーピングロジック525は、伝送を適切なストレージ装置に伝達できる。
問題のデータがキャッシュからアクセス可能であるか、又はストレージ装置から読み出されるか否かにかかわらず、この時点で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、必要なデータを有する。この時点で、処理が分岐する。伝送が図1のプロセッサ110からの読み取りの要請であれば、ステップS1136で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、図1のプロセッサ110にデータを返す。図5のスヌーピングロジック525は、また、ステップS1139に図示したように、図5のキャッシュ545にデータを格納することもできる。ステップS1139は、選択的であり、点線1142で図示したように省略される。この時点で、処理は終了する。
一方、図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、又はキャッシュからアクセスされたデータストライプをマージすることができる。
この時点で、手順は、図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は、省略される。
結局、図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で図示したように省略される。この時点で、処理は終了する。
図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イレイジャーコーディングロジックをディセーブルさせることができる。その後に手順が終了する。
しかし、本発明の他の実施形態では、図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によって)
ステップS1225で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125は、イレイジャーコーディングに適していない装置をディセーブルさせる。ステップS1225は、点線1230で図示したように、選択的である。イレイジャーコーディングに対し資格のない、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が存在しなかったり、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125が、他の装置のために、イレイジャーコーディングを使用したりするにもかかわらず、イレイジャーコーディングに対し資格のない装置にアクセスするために、図1のプロセッサ110を承認する。
ステップ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に報告することができる。この時点で、処理が終了する。
図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に戻る。
図14は、本発明の一実施形態に基づいて、故障したストレージ装置を処理するための、図1のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125に対する例としての手順のフローチャートである。図14のステップS1405で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(または、図3のBMC 325)は、故障した(または、除去された)ストレージ装置をチェックすることができる。故障したストレージ装置が検出されると、ステップS1410で、図5のイレイジャーコーディングコントローラ530は、故障したデータにアクセスする読み取り要請が到着するとき、故障したストレージ装置に格納されたデータのイレイジャーコーディング復元を遂行する。これらのイレイジャーコーディングの復元は、他のストレージ装置から要求されたデータを含むストライプからデータを読み出すことと、ストライプ内の残りのデータから要求されたデータを計算することを含むことができる。
ステップS1415で、図3のLook−Asideイレイジャーコーディングロジックを含むPCIeスイッチ125(または、図3のBMC325)は、代替のストレージ装置が仮想ストレージ装置の後ろのアレイに追加されたかを決定する。もしそうなら、ステップS1420で、図5のイレイジャーコーディングコントローラ530は、代替のストレージ装置を使用して故障したストレージ装置を再構成する。この時点で、手順は終了したり、点線1425で図示したように、追加の新しいストレージ装置をチェックしたりするために、ステップS1405に戻る。
図11A〜図14に、本発明のいくつかの実施形態を図示した。しかし、当業者だったら、ステップの順序を変更したり、ステップを省略したり、図面に図示されていない連結を含んだりすることにより、本発明の他の実施形態も可能であることを認識できる。フローチャートに対しこのようなすべての変形は、明示的に記述されたか否かにかかわらず、本発明の実施形態とみなされる。
本発明の実施形態は、従来技術に比べて技術的な利点を提供する。Look−Asideイレイジャーコーディングロジックを含むPCIeスイッチを使用するのは、イレイジャーコーディングをストレージ装置の近くに移動させるため、データの移動に必要な時間が短縮される。プロセッサで、イレイジャーコーディングを削除すると、プロセッサの負荷が減少し、プロセッサは、アプリケーションに対するより多くのコマンドを実行できる。構成可能なイレイジャーコーディングコントローラを使用すれば、ハードウェア及びソフトウェアのイレイジャーコーディングのベンダーによってサポートされる、限られた方法のセットの代わりに、任意の所望のイレイジャーコーディング方式が使用される。イレイジャーコーディングコントローラをPCIeスイッチとともに配置することにより、高価なRAID add−in cardに対する必要性が回避され、多数のシャーシに至るまで、より大きなアレイが使用される。
以下の説明は、本発明の技術的思想のいくつかの側面が具現される適切なマシンやマシンの簡潔で一般的な説明を提供するように意図する。マシン又は複数のマシンは、少なくとも一部は、他のマシンから受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、又は他の入力信号だけでなく、キーボード、マウスなどのような通常の入力装置からの入力により制御される。ここで使用するように、「マシン」の用語は、単一のマシン、仮想マシン、複数のマシン、複数の仮想マシン又は共に動作する装置と通信するように結合されたシステムを広く含むものと意図する。例としてのマシンは、例えば、自動車、電車、タクシーなどのパーソナル又は公共輸送などの輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、携帯電話、タブレットなどのようなコンピューティング装置を備える。
マシン又は複数のマシンは、プログラム可能な、又はプログラム不可能論理装置又はアレイ、ASIC(Application Specific Integrated Circuit)、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含む。マシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信結合を通してのように一つ以上のより多くのリモートマシンへの一つ以上のより多くの連結を活用できる。複数のマシンは、イントラネット、インターネット、LAN(local area networks)、WAN(wide area networks)などの物理的及び/又は論理ネットワークの手段として、互いに連結される。この分野に熟練した者は、ネットワーク通信が、様々な有線及び/又はワイヤレス近距離又は遠距離キャリア及びラジオ周波数(RF)、衛星、マイクロ波、IEEE 802.11、ブルートゥース(登録商標)、光学、赤外線、ケーブル、レーザーなどを含むプロトコルの活用を理解するであろう。
本発明の技術的思想の実施形態は、マシンによってアクセスされる際にマシンが作業を遂行するか、又は抽象的データのタイプ又は低レベルのハードウェアコンテキストを定義することを誘発する関数、手順、データ構造、アプリケーションなどを含む、関連付けられたデータを参照・協力して説明される。関連付けられたデータは、例えば、RAM、ROMなどのような揮発性及び/又は不揮発性メモリ、他のストレージ装置、ハードディスクドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージなどを含む、関連付けられたストレージ媒体に格納される。関連付けられたデータは、物理的及び/又は論理的ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形で伝達され、圧縮された又は暗号化されたフォーマットで使用される。関連付けられたデータは、分散環境で使用され、マシンアクセスに対してローカル及び/又はリモートで格納される。
本発明の技術的思想の実施形態は、一つ以上のより多くのプロセッサによって実行可能であり、ここで説明したように、本発明の技術的思想のエレメントを遂行させるコマンドを含む実在する非一時的マシン読み出し媒体を含む。
前述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成、回路、及び/又はモジュールのような動作を遂行する任意の適切な手段によって行われる。ソフトウェアは、論理的な機能を具現するための実行可能コマンドの順序付きリストを含み、単一又はマルチコアプロセッサやシステムを含むプロセッサのようなコマンド実行システム、機構又は装置を使用して、又はこれらと関連して、任意の「プロセッサ可読媒体」で具現される。
ここで開示した実施形態と関連して方法又はアルゴリズムのステップ又は段階、及び機能は、ハードウェア及びプロセッサ上で実行されるソフトウェアモジュール、又はこれらの組合せで直接具現される。ソフトウェアで具現されると、機能は非一時的コンピュータ可読媒体上に1つ以上のコマンドまたはコードとして格納又は伝送される。ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM、EPROM、EEPROM、レジスタ、ハードディスク、リムーバブルディスク、CD ROM、又はこの分野で公知された任意の他の形態のストレージ媒体であり得る。
図示した実施形態を参照して本発明の技術的思想の原則を説明し例示したが、図示した実施形態は、これらの原則から離れずに、配置と詳細において修正され得、必要な任意の方法で組合せられることが理解されるだろう。前述の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施形態による」のような説明や、ここで使用された類似したものにもかかわらず、これらのフレーズは、一般的に実施形態の可能性を参照しており、本発明の技術的思想を具体的な実施形態の構成に限定することを意図していない。これらの用語は、他の実施形態への組合せ可能な同一又は異なる実施形態を参照することができる。
前述した実施形態は、本発明の技術的思想を、それらに限定するものではない。少ない実施形態だけを説明したが、この分野における熟練した者は、本記載の新規な説明と利点から実質的に離れずに、これらの実施形態に多くの修正が可能であることを十分に理解するだろう。したがって、これらのすべての修正は、特許請求の範囲において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
本発明の実施形態は、制限なしに次の説明に拡張される。
説明1.
本発明の概念の実施形態は、イレイジャーコーディングロジックを含むPCIeスイッチを含む。
PCIeスイッチは、
前記PCIeスイッチがプロセッサと通信できるようにする外部コネクタと、
前記PCIeスイッチが、少なくとも一つのストレージ装置と通信できるようにする少なくとも一つのコネクタと、
PCIeスイッチの構成を処理するPPUと、
前記少なくとも一つのストレー装置に格納されたデータには、イレイジャーコーディング方式を適用する回路を含む、イレイジャーコーディングコントローラと、
前記PCIeスイッチで受信されたデータの伝送をインターセプトし、前記イレイジャーコーディング方式に応答して前記データ送信を修正する回路を含むスヌーピングロジックと、を含む。
説明2.
説明1によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記イレイジャーコーディングロジックは、Look−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックを含むセットから獲得される。
説明3.
説明1によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのストレージ装置は、少なくとも一つのNVMe SSDを含む。
説明4.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、PCIeスイッチで受信された制御送信をインターセプトし、前記制御伝送をPPUにフォワードするように動作する。
説明5.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、ホストからPCIeスイッチで受信されたデータの伝送をインターセプトし、データ伝送において、ホストによって使用されるホストLBAを前記少なくとも一つのNVMe SSDによって使用される装置LBAに代替するように動作する。
説明6.
説明5によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、データ伝送を少なくとも一つのNVMe SSDに指示するように動作する。
説明7.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、少なくとも一つのNVMe SSDの中の一つからPCIeスイッチで受信されたデータの伝送をインターセプトし、データの伝送において、少なくとも一つのNVMe SSDの中の一つによって使用される装置LBAをホストによって使用されるホストLBAに代替する。
説明8.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、キャッシュをさらに含む。
説明9.
説明8によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、スヌーピングロジックは、キャッシュに存在するデータの伝送で要請されるデータに少なくとも部分的に基づいて、ホストから要請されたデータ伝送に対する応答を返送するように動作する。
説明10.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
シャーシに位置するPCIeスイッチと、
イレイジャーコーディングコントローラによって外部キャッシュとして使用されるメモリを含むシャーシと、を含む。
説明11.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、書き込みバッファをさらに含む。
説明12.
説明11によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
ホストからの書き込み動作を含む前記データ伝送と、
データ伝送に対する応答をホストに伝送した後、書き込み動作を完了するように動作する、イレイジャーコーディングコントローラと、を含む。
説明13.
説明11によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
前記イレイジャーコーディングコントローラは、書き込み動作でのデータを書き込みバッファに格納するように動作する。
説明14.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、イレイジャーコーディングコントローラとともに使用される少なくとも一つのNVMe SSDに少なくとも部分的に基づいて、これらのイレイジャーコーディングコントローラ及びスヌーピングロジックをイネーブルさせるように動作する。
説明15.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、内蔵(built−in)のイレイジャーコーディング機能が含まれた少なくとも一つのNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングコントローラ及びスヌーピングロジックをディセーブルさせるように動作する。
説明16.
説明15によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、内蔵(built−in)のイレイジャーコーディング機能が含まれた少なくとも一つのNVMe SSDに少なくとも部分的に基づいて、ユーザーにイレイジャーコーディングコントローラ及びスヌーピングロジックがディセーブルされたことを通知するように動作する。
説明17.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記PCIeスイッチに連結される非ストレージ装置に部分的に基づいて、イレイジャーコーディングコントローラ及びスヌーピングロジックをディセーブルさせるように動作する。
説明18.
説明17によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記PCIeスイッチに連結される非ストレージ装置に部分的に基づいて、ユーザーに、イレイジャーコーディングコントローラ、及びヌーピングロジックがディセーブルされたことを知らせるように動作する。
説明19.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記PCIeスイッチに連結される非ストレージ装置に部分的に基づいて、イレイジャーコーディングコントローラ、及びスヌーピングロジックをイネーブルさせるように動作する。
説明20.
説明19によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、PCIeスイッチに接続された非ストレージ装置へのアクセスが遮断されたことは、ユーザーに通知するように動作する。
説明21.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、第2のPCIeスイッチに連結された少なくとも1つの追加のNVMe SSD上でのイレイジャーコーディング方式を管理するために、イレイジャーコーディングコントローラ及びスヌーピングロジックを使用するように動作する。
説明22.
説明21によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、第2のPCIeスイッチは、第2のPCIeスイッチで第2イレイジャーコーディングコントローラ、及び第3スヌーピングロジックをディセーブルさせるように動作する。
説明23.
説明22によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
第1シャーシ内に位置するPCIeスイッチと、
第2シャーシ内に位置する第2のPCIeスイッチと、を備える。
説明24.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、FPGAを使用して具現される。
説明25.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
少なくとも二つのNVMe SSDを含む前記少なくとも一つのNVMe SSDと、
共通のハウジング内部にある前記PCIeスイッチと、前記少なくとも2つのNVMe SSDと、を含む。
説明26.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、前記PCIeスイッチ及び前記少なくとも2つのNVMe SSDは、別途のハウジング内にある。
説明27.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
前記少なくとも一つのNVMe SSDの故障したNVMe SSDを検出するように動作する前記PCIeスイッチと、
故障したNVMe SSDを説明するために、データ伝送を処理するように動作する、イレイジャーコーディングコントローラと、を含む。
説明28.
説明27によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、故障したNVMe SSD上に格納されたデータのイレイジャーコーディングの復元を遂行するように動作する。
説明29.
説明28によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、故障したNVMe SSDのための代替のNVMe SSDを再構成するように動作する。
説明30.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、
新しいNVMe SSDを検出するように動作する前記PCIeスイッチと、
イレイジャーコーディング方式の一部として、新しいNVMe SSDを使用するように動作するイレイジャーコーディングコントローラを含む。
説明31.
説明30によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、新しいNVMe SSDを使用して容量の追加を遂行するように動作する。
説明32.
説明30によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、少なくとも一つのコネクタの中の1つに連結された新しいNVMe SSDを検出するように動作する。
説明33.
説明30によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、第2のPCIeスイッチからのメッセージを介して新たなNVMe SSDを検出するように動作する。
説明34.
説明33によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、新しいNVMe SSDは、第2のPCIeスイッチ上の第2コネクタに連結される。
説明35.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、少なくとも一つのコネクタは、故障したNVMe SSDと新しいNVMe SSDの両方を検出するためのpresenceピンを含む。
説明36.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、ホストに、単一の装置としてそれ自身を示し、少なくとも一つのダウンストリームPCIeバスの列挙を防止するように動作する。
説明37.
説明36によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、PCIeスイッチから第2のPCIeスイッチのダウンストリームPCIeバスの列挙を防止するように動作する。
説明38.
説明36によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、少なくとも一つのNVMe SSDを仮想化するように動作する。
説明39.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、少なくとも一つのコネクタの中の1つに連結された新しいNVMe SSDを初期化するように動作する。
説明40.
説明39によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、ホット・インサーション・イベント後に新しいNVMe SSDを初期化するように動作する。
説明41.
説明39によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、起動時に、少なくとも一つのNVMe SSDを初期化するように動作する。
説明42.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、PCIeスイッチは、少なくとも一つのコネクタの中の1つに連結された新しいNVMe SSDを初期化するように動作するBMCを含むシステムの一部である。
説明43.
説明42によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、BMCは、起動時に少なくとも一つのNVMe SSDを初期化するように動作する。
説明44.
説明3によるイレイジャーコーディングロジックを含むPCIeスイッチにおいて、イレイジャーコーディングコントローラは、少なくとも一つのNVMe SSDにかけてデータをストライピングするストライプのマネージャーを含む。
説明45.
本発明の概念の実施形態は、方法を含む。前記方法は、
イレイジャーコーディングロジックを利用して、PCIeスイッチから伝送を受信する段階と、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階と、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階と、を備える。
説明46.
説明45による方法において、イレイジャーコーディングロジックは、Look−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックの中の1つを含む。
説明47.
説明45による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、前記伝送が前記スヌーピングロジックによる制御伝送を含むことを決定する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションへ伝達する段階は、前記伝送をPPU(Power Processing Unit)に伝達する段階を含む。
説明48.
説明45による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、活性化されたイレイジャーコーディングロジックに少なくとも部分的に基づいて、スヌーピングロジックを使用して伝送を処理する段階を含む。
説明49.
説明45による方法において、
イレイジャーコーディングロジックを含むPCIeスイッチから伝送を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
説明50.
説明49による方法において、前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されなければならないNVMe SSDを識別する段階をさらに含む。
説明51.
説明49による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、キャッシュに存在するデータに少なくとも部分的に基づいて、キャッシュからの読み取り要請内のホストによって要請されたデータにアクセスする段階を含み、
ホストLBAを読み取り要請内の装置のLBAに代替する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、NVMe SSDに読み取り要請を伝達する段階を含む。
説明52.
説明45による方法において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
説明53.
説明52による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、書き込み要請が伝達されるべくNVMe SSDを識別するための段階をさらに含む。
説明54.
説明52による方法において、
少なくとも一つのNVMe SSDからブロックのストライプを読み出す段階と、
ブロックの更新されたストライプを形成するために、前記ブロックのストライプと前記書き込み要請内のデータをマージする段階と、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階をさらに含む。
説明55.
説明54による方法において、
前記書き込み要請内のデータをマージする段階は、書き込み要請のデータに追加して、少なくとも一つのNVMe SSDに記録するための追加のデータを計算する段階を含む。
説明56.
説明54による方法において、
キャッシュ内に存在するブロックのストライプに、少なくとも部分的に基づいて、キャッシュからブロックのストライプを読み出す段階と、
少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階は、キャッシュ内に存在していないブロックのストライプに、少なくとも部分的に基づいて、少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階と、を備える。
説明57.
説明54による方法において、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階は、ブロックの前記更新されたストライプを書き込みバッファに記録する段階を含む。
説明58.
説明57による方法において、
ブロックの更新されたストライプが書き込みバッファに書き込まれた後、ブロックの更新されたストライプが少なくとも一つのNVMe SSDに記録される前に記録が完了したことをホストに応答する段階をさらに含む。
説明59.
説明45による方法において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストから応答を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請内の装置のLBAをホストのLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記応答をホストに伝達する段階を含む。
説明60.
説明59による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、NVMe SSDの識別子を仮想ストレージ装置の識別子で代替する段階をさらに含む。
説明61.
説明45による方法において、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記送信をNVMe SSDが連結された第2のPCIeスイッチに伝達する段階を含み、
前記NVMe SSDは、前記デスティネーションである。
説明62.
説明61による方法において、
PCIeスイッチは、第1シャーシにあり、第2PCIeスイッチは、第2のシャーシにある。
説明63.
説明45による方法において、
イレイジャーコーディングで共に使用するためにPCIeスイッチに連結された少なくとも一つのNVMe SSDを初期化する段階をさらに含む。
説明64.
説明45による方法において、
新しいNVMe SSDが前記PCIeスイッチに連結されたかを検出する段階と、
新しいNVMe SSDを仮想ストレージ装置の容量に追加する段階と、をさらに備える。
説明65.
説明64による方法において、
イレイジャーコーディングで、共に使用するために新しいNVMe SSDを初期化する段階をさらに含む。
説明66.
説明45による方法において、
前記PCIeスイッチに連結された故障したNVMe SSDを検出する段階と、
故障したNVMe SSD上に格納されたデータのイレイジャーコーディングの回復を遂行する段階と、をさらに備える。
説明67.
説明66による方法において、
前記故障したNVMe SSDの代替のNVMe SSDを検出する段階と、
前記代替のNVMe SSDを使用して故障したNVMe SSDを再構成する段階と、をさらに備える。
説明68.
説明45による方法において、
PCIeスイッチに連結された、イレイジャーコーディング機能がないNVMe SSDだけを検出する段階と、
前記PCIeスイッチで、イレイジャーコーディングロジックをイネーブルする段階と、をさらに含む。
説明69.
説明68による方法において、
PCIeスイッチのダウンストリームPCIeバスの列挙を終了させる段階と、をさらに含む。
説明70.
説明68による方法において、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階と、をさらに含む。
説明71.
説明45による方法において、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをディセーブルさせる段階と、をさらに含む。
説明72.
説明45による方法において、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをイネーブルさせる段階と、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDをディセーブルさせる段階と、をさらに備える。
説明73.
説明72による方法において、
PCIeスイッチからのPCIeバス列挙のダウンストリームを終了する段階と、をさらに含む。
説明74.
説明72による方法において、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階と、をさらに含む。
説明75.
説明45による方法において、
イレイジャーコーディング方式を使用している、イレイジャーコーディングロジックを含むPCIeスイッチを構成する段階をさらに含む。
説明76.
説明75による方法において、
イレイジャーコーディング方式を使用しているイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階は、BMCを使用して、イレイジャーコーディング方式を使用しているイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階を含む。
説明77.
本発明の概念の実施形態は、非一時的なストレージ媒体を含む物品を含み、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合、
イレイジャーコーディングロジックを利用して、PCIeスイッチにおいて伝送を受信する段階と、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階と、
前記伝送を前記PCIeスイッチを介して前記デスティネーションに伝送する段階と、が処理される。
説明78.
説明77による物品において、
本発明の概念の実施形態は、説明77による物品を含み、前記イレイジャーコーディングロジックは、Look−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックの中の1つを含む。
説明79.
説明77による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、前記送信が前記スヌーピングロジックによる制御の伝送を含むことを決定する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記伝送をPPU(Power Processing Unit)に伝達する段階を含む。
説明80.
説明77による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、活性化されたイレイジャーコーディングロジックに少なくとも部分的に基づいて、スヌーピングロジックを使用して伝送を処理する段階を含む。
説明81.
説明77による物品において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて送信を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストのLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
説明82.
説明81による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されるべくNVMe SSDを識別するための段階をさらに含む。
説明83.
説明81による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、キャッシュに存在するデータに少なくとも部分的に基づいて、キャッシュからの読み取り要請内のホストによって要請されたデータにアクセスする段階を含み、
ホストのLBAを読み取り要請内の装置のLBAに代替する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ホストのLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、NVMe SSDに読み取り要請を伝達する段階を含む。
説明84.
説明77による物品において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストからの読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストLBAを読み取り要請内の装置のLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をNVMe SSDに伝達する段階を含む。
説明85.
説明84による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されるべくNVMe SSDを識別するための段階をさらに含む。
説明86.
説明84による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
少なくとも一つのNVMe SSDからブロックのストライプを読み出す段階と、
ブロックの更新されたストライプを形成するために、前記ブロックのストライプと前記書き込み要請内のデータをマージする段階と、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階と、が処理される。
説明87.
説明86による物品において、
前記書き込み要請内のデータをマージする段階は、書き込み要請のデータに追加して、少なくとも一つのNVMe SSDに記録するための追加のデータを計算する段階と、を含む。
説明88.
説明86による物品において、
キャッシュ内に存在するブロックのストライプに、少なくとも部分的に基づいて、キャッシュからブロックのストライプを読み出す段階と、
少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階は、キャッシュ内に存在していないブロックのストライプに、少なくとも部分的に基づいて、少なくとも一つのNVMe SSDからブロックのストライプを読み取る段階と、を含む。
説明89.
説明86による物品において、
ブロックの前記更新されたストライプを前記少なくとも一つのNVMe SSDに記録する段階は、ブロックの前記更新されたストライプを書き込みバッファに記録する段階を含む。
説明90.
説明89による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ブロックの更新されたストライプが書き込みバッファに書き込まれた後、ブロックの更新されたストライプが少なくとも一つのNVMe SSDに記録される前に記録が完了されたことをホストに応答する段階が処理される。
説明91.
説明77による物品において、
イレイジャーコーディングロジックを含むPCIeスイッチにおいて伝送を受信する段階は、ホストからの応答を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請内の装置のLBAをホストのLBAに代替する段階を含み、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記応答をホストに伝達する段階を含む。
説明92.
説明91による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、NVMe SSDの識別子を仮想ストレージ装置の識別子に代替する段階をさらに含む。
説明93.
説明77による物品において、
前記PCIeスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記伝送をNVMe SSDが連結された第2のPCIeスイッチに伝達する段階を含み、
前記NVMe SSDは、前記デスティネーションである。
説明94.
説明93による物品において、
PCIeスイッチは、第1シャーシにあり、第2のPCIeスイッチは、第2シャーシにある。
説明95.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディングとともに使用するためにPCIeスイッチに連結された少なくとも一つのNVMe SSDを初期化する段階が処理される。
説明96.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
新しいNVMe SSDが前記PCIeスイッチに連結されたかを検出する段階と、
新しいNVMe SSDを仮想ストレージ装置の容量に追加する段階と、が処理される。
説明97.
説明96による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディングとともに使用するための新しいNVMe SSDを初期化する段階が処理される。
説明98.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
前記PCIeスイッチに連結された故障したNVMe SSDを検出する段階と、
故障したNVMe SSD上に格納されたデータのイレイジャーコーディングの回復を遂行する段階と、が処理される。
説明99.
説明98による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
前記故障したNVMe SSDの代替のNVMe SSDを検出する段階と、
前記代替のNVMe SSDを使用して故障したNVMe SSDを再構成する段階と、が処理される。
説明100.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチに連結された、イレイジャーコーディング機能がないNVMe SSDだけを検出する段階と、
前記PCIeスイッチで、イレイジャーコーディングロジックをイネーブルする段階と、が処理される。
説明101.
説明100による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチのダウンストリームPCIeバスの列挙を終了させる段階が処理される。
説明102.
説明100による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階が処理される。
説明103.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをディセーブルさせる段階と、が処理される。
説明104.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDが前記PCIeスイッチに連結されていることを検出する段階と、
前記PCIeスイッチ内の前記イレイジャーコーディングロジックをイネーブルさせる段階と、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのNVMe SSDをディセーブルさせる段階と、が処理される。
説明105.
説明104による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチからのPCIeバス列挙のダウンストリームを終了する段階が処理される。
説明106.
説明104による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
PCIeスイッチに連結されたNVMe SSD及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階が処理される。
説明107.
説明77による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階が処理される。
説明108.
説明107による物品において、
イレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階は、BMCを使用してイレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むPCIeスイッチを構成する段階を含む。
説明109.
本発明の概念の実施形態は、システムを包含する。前記システムは、
NVMe SSDと、
前記NVMe SSDをサポートする機能を具現するFPGAと、
PCIeスイッチと、を含み、
前記機能は、データ加速化、データ重複排除(デデュープ)、データ・インテグリティ、データの暗号化とデータ圧縮を含む集合から獲得され、
前記PCIeスイッチは、前記FPGA及び前記NVMe SSDと通信する。
説明110.
説明109によるシステムにおいて、
前記FPGA、前記NVMe SSDは、共通のハウジング内部にある。
説明111.
説明110によるシステムにおいて、
前記PCIeスイッチは、前記FPGA及び前記NVMe SSDを含む共通のハウジングの外部にある。
説明112.
説明109によるシステムにおいて、
前記PCIeスイッチは、前記FPGAに連結され、
前記FPGAは、前記NVMe SSDに連結される。
説明113.
説明109によるシステムにおいて、
前記PCIeスイッチは、前記NVMe SSDに連結され、
前記NVMe SSDは、FPGAに連結される。
説明114.
説明109によるシステムにおいて、
前記PCIeスイッチは、イレイジャーコーディングロジックを含み、
前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む。
説明115.
説明114によるシステムにおいて、
前記イレイジャーコーディングロジックは、Look−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックの中の1つを含む。
説明116.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
説明117.
説明116によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュをさらに含む。
説明118.
説明116によるシステムにおいて、
前記PCIeスイッチは、シャーシ内に位置し、
前記シャーシは、イレイジャーコーディングロジックによってキャッシュとして使用されるメモリを含む。
説明119.
説明114によるシステムにおいて、
レイジャーコーディングロジックは、書き込み要請を完了する前に、ホストへの書き込み要請に対する応答を返すように動作する。
説明120.
説明119によるシステムにおいて、
前記PCIeスイッチは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、書き込み要請内のデータを書き込みバッファに格納するように動作する。
説明121.
説明114によるシステムにおいて、
レイジャーコーディングロジックは、スヌーピングロジックを含むLook−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックを含む。
説明122.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、PCIeスイッチで受信された制御伝送をインターセプトし、制御伝送をPPUに伝送するように動作する。
説明123.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、ホストからPCIeスイッチにおいて受信されたデータの伝送をインターセプトし、前記データ伝送で、ホストによって使用されるホストのLBAを前記NVMe SSDで使用される装置のLBAに代替するように動作する。
説明124.
説明123によるシステムにおいて、
イレイジャーコーディングロジックは、前記NVMe SSDに前記データ伝送を指示するように動作する。
説明125.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、NVMe SSDからPCIeスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送でNVMe SSDで使用される装置のLBAをホストによって使用されるホストのLBAに代替するように動作する。
説明126.
説明114によるシステムにおいて、
イレイジャーコーディングロジックは、NVMe SSD及び第2 NVMe SSDにわたる仮想ストレージ装置を定義する。
説明127.
説明114によるシステムにおいて、
前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルするように動作する。
説明128.
説明114によるシステムにおいて、
イレイジャーコーディングロジックを含むPCIeスイッチに連結された第2装置をさらに含む。
説明129.
説明128によるシステムにおいて、
前記第2装置は、ストレージ装置、FPGAを含むSSD、およびGPUの中の少なくとも1つを含む。
説明130.
説明128によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用できない第2装置に、少なくとも部分的に基づいて、イレイジャーコーディングロジックをディセーブルするように動作する。
説明131.
説明128によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、イレイジャーコーディングロジックを使用することなく、第2装置へのアクセスをイネーブルするように動作する。
説明132.
説明128によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、第2装置へのアクセスをディセーブルするように動作する。
説明133.
本発明の概念の実施形態は、システムを包含する。前記システムは、
NVMe SSDと、
前記NVMe SSDをサポートする一つ以上の機能を具現する第1のFPGA部分とPCIeスイッチを具現する第2のFPGA部分を含むFPGAと、を備え、
前記1つ以上の機能は、データ加速化、データ重複排除(デデュープ)、データインテグリティ、データの暗号化とデータ圧縮の中の少なくとも1つを含む集合から獲得され、
前記PCIeスイッチは、前記FPGA及び前記NVMe SSDと通信し、
前記FPGA、前記NVMe SSDは、共通のハウジング内部にある。
説明134.
説明133によるシステムにおいて、
前記PCIeスイッチは、イレイジャーコーディングコントローラを含むイレイジャーコーディングロジックを包含する。
説明135.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、NVMe SSDの少なくとも二つの部分にまたがる仮想ストレージ装置を定義する。
説明136.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、NVMe SSD及び第2 NVMe SSDにまたがる仮想ストレージ装置を定義する。
説明137.
説明136によるシステムにおいて、
前記第2のNVMe SSDは、共通のハウジング内部にある。
説明138.
説明136によるシステムにおいて、
前記第2のNVMe SSDは、共通のハウジングの外部にある。
説明139.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、Look−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックの中の少なくとも1つを含む。
説明140.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
説明141.
説明140によるシステムにおいて、
前記FPGAは、前記キャッシュをさらに含む。
説明142.
説明140によるシステムにおいて、
前記共通のハウジングは、前記シャーシ内に位置し、
前記シャーシは、前記イレイジャーコーディングロジックにより前記キャッシュとして使用されるメモリを含む。
説明143.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、書き込み要請を完了する前に、ホストへの前記書き込み要請に対する応答を返すように動作するシステム。
説明144.
説明143によるシステムにおいて、
前記FPGAは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、書き込み要請内のデータを書き込みバッファに格納するように動作する。
説明145.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、スヌーピングロジックを含むLook−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックを含む。
説明146.
説明145によるシステムにおいて、
前記スヌーピングロジックは、前記PCIeスイッチで受信された制御伝送をインターセプトし、前記制御伝送を前記PPUに伝達するように動作する。
説明147.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、ホストからのPCIeスイッチで受信されたデータの送信をインターセプトし、データの伝送で、ホストによって使用されたホストのLBAをNVMe SSDで使用する装置LBAに代替するように動作する。
説明148.
説明147によるシステムにおいて、
イレイジャーコーディングロジックは、データの伝送をNVMe SSDに指示するように動作する。
説明149.
説明134によるシステムにおいて、
前記イレイジャーコーディングロジックは、NVCe SSDからPCIeスイッチで受信されたデータの送信をインターセプトし、データ伝送のNVMe SSDで使用する装置のLBAをホストによって使用されたホストのLBAに代替するように動作する。
説明150.
説明134によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブルするように動作する。
説明151.
説明134によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用できないNVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブルするように動作する。
説明152.
本発明の概念の実施形態は、システムを包含する。前記システムは、
NVMe SSDと、
イレイジャーコーディングロジックを含むPCIeスイッチと、を含み、
前記PCIeスイッチは、
前記PCIeスイッチがプロセッサと通信できるようにする外部コネクタと、
前記PCIeスイッチが前記NVMe SSDと通信できるようにする少なくとも一つのコネクタと、
前記PCIeスイッチを構成するPPUと、
前記NVMe SSDに格納されたデータに、イレイジャーコーディング方式を適用するための回路を含むイレイジャーコーディングコントローラと、を含む。
説明153.
説明152によるシステムにおいて、
前記システムは、第2のNVMe SSDをさらに含み、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックを含む前記PCIeスイッチが第2のNVMe SSDと通信できるようにする第2コネクタを含む。
説明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に格納されたデータに適用される。
説明155.
説明154によるシステムにおいて、
前記第2のPCIeスイッチは、ディセーブルされた第2レーザコーディングロジックをさらに含む。
説明156.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックはLook−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックの中の少なくとも1つを含む。
説明157.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
説明158.
説明157によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュをさらに含む。
説明159.
説明157によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、シャーシ内に位置し、
前記シャーシは、イレイジャーコーディングロジックによってキャッシュとして使用されるメモリを含む。
説明160.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは読み取り要請を完了する前に、読み取り要請に対する応答をホストに返すように動作する。
説明161.
説明160によるシステムにおいて、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、前記書き込み要請内のデータを前記書き込みバッファに格納するように動作する。
説明162.
説明152によるシステムにおいて、
イレイジャーコーディングロジックは、スヌーピングロジックを含むLook−Asideイレイジャーコーディングロジック及びLook−Throughイレイジャーコーディングロジックを含む。
説明163.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記PCIeスイッチで受信された制御伝送をインターセプトし、前記制御伝送をPPUに伝達するように動作する。
説明164.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、ホストからのPCIeスイッチで受信されたデータの送信をインターセプトし、前記データ伝送において、前記ホストによって使用されたホストのLBAを前記NVMe SSDで使用する装置のLBAに代替するように動作する。
説明165.
説明164によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記データ伝送を、前記NVMe SSDに指示するように動作する。
説明166.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記NVMe SSDから前記PCIeスイッチで受信されたデータの送信をインターセプトし、前記データ伝送において、前記NVMe SSDで使用する装置のLBAを前記ホストによって使用されたホストのLBAに代替するように動作する。
説明167.
説明152によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記NVMe SSD及び第2のNVMe SSDにまたがる仮想ストレージ装置を定義する。
説明168.
説明152によるシステムにおいて、
イレイジャーコーディングロジックを有する前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルするように動作する。
説明169.
説明152によるシステムにおいて、
イレイジャーコーディングロジックを含むPCIeスイッチに連結された第2装置をさらに含む。
説明170.
説明169によるシステムにおいて、
前記第2装置は、ストレージ装置、FPGAを有するSSD、およびGPUの中の少なくとも1つを含む。
説明171.
説明169によるシステムにおいて、
第2装置は、前記イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用できない前記第2装置に、少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブルするように動作する。
説明172.
説明169によるシステムにおいて、
前記第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを含む前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、イレイジャーコーディングロジックを使用することがなく、前記第2装置へのアクセスをイネーブルするように動作する。
説明173.
説明169によるシステムにおいて、
第2装置は、イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを有する前記PCIeスイッチは、イレイジャーコーディングロジックとともに使用可能なNVMe SSDに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、前記第2装置へのアクセスをディセーブルするように動作する。
結論として、本明細書に記述された実施形態の様々な変更の観点から、この詳細な説明と添付された資料は、単に例として意図しており、本発明の範囲を制限するものとみなされてはならない。従って、本発明として請求されるのは、後述する特許請求の範囲、その均等物の範囲と思想内に有り得るすべての変形である。
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

Claims (16)

  1. システムであって、
    NVMe(Non−Volatile Memory Express)SSD(Solid State Drive)と、
    前記NVMe SSDをサポートする一つ以上の機能を具現するFPGAと、
    PCIe(Peripheral Component Interconnect Express)スイッチと、を備え、
    前記1つ以上の機能は、データ加速化、データ重複排除(デデュープ)、データインテグリティ、データの暗号化及びデータ圧縮の中の少なくとも1つを包含し、
    前記PCIeスイッチは、前記FPGA及び前記NVMe SSDと通信する、ことを特徴とするシステム。
  2. 前記PCIeスイッチは、イレイジャーコーディングロジックを含み、
    前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む、ことを特徴とする請求項1に記載のシステム。
  3. 前記PCIeスイッチは、ネイティブイレイジャーコーディングロジック(native Erasure Coding Logic)を含まない、前記NVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブルさせるように動作する、ことを特徴とする請求項2に記載のシステム。
  4. 前記イレイジャーコーディングロジックを含む前記PCIeスイッチと連結された第2装置をさらに含む、ことを特徴とする請求項2に記載のシステム。
  5. 前記第2装置は、ネイティブイレイジャーコーディングロジックを含むストレージ装置と非ストレージ装置のうち少なくとも一つを含み、
    前記PCIeスイッチは、前記第2装置に少なくとも部分的に基づいて前記イレイジャーコーディングロジックをディセーブル(disable)させるように動作する、ことを特徴とする請求項4に記載のシステム。
  6. 前記第2装置は、ネイティブイレイジャーコーディングロジックを含むストレージ装置と非ストレージ装置のうち少なくとも一つを含み、
    前記PCIeスイッチは、前記ネイティブイレイジャーコーディングロジックが含まないNVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブル(enable)させ、前記イレイジャーコーディングロジックを使用することなしに、前記第2装置に対するアクセスをイネーブル(enable)させるように動作する、ことを特徴とする請求項4に記載のシステム。
  7. NVMe(Non−Volatile Memory Express)SSD(Solid State Drive)と、
    前記NVMe SSDをサポートする1つ以上の機能を具現する第1のFPGA部分とPCIe(Peripheral Component Interconnect Express)スイッチを具現する第2のFPGA部分を含むFPGA(Field Programmable Gate Array)と、を備え、
    前記一つ以上の機能は、データ加速化、データ重複排除、データインテグリティ、データの暗号化、およびデータ圧縮のうち少なくとも一つを含み、
    前記PCIeスイッチは、前記FPGA及び前記NVMe SSDと通信し、
    前記FPGA及び前記NVMe SSDは、共通のハウジング内部に存在する、ことを特徴とするシステム。
  8. 前記PCIeスイッチは、イレイジャーコーディングロジックを含み、
    前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む、ことを特徴とする請求項7に記載のシステム
  9. イレイジャーコーディングロジックはLook−AsideイレイジャーコーディングロジックとLook−Throughイレイジャーコーディングロジックのうちの少なくとも一つを含む、ことを特徴とする請求項7に記載のシステム。
  10. イレイジャーコーディングロジックは、ホストからの読み取り要請により要請されたデータがキャッシュに存在するものに少なくとも部分的に基づいて、前記ホストからの前記読み取り要請に対する応答を返すように動作する、ことを特徴とする請求項2又は7に記載のシステム。
  11. イレイジャーコーディングロジックは、ホストからの書き込み要請を完了する前に、前記ホストからの前記書き込み要請に対する応答を返すように動作する、ことを特徴とする請求項2又は7に記載のシステム。
  12. イレイジャーコーディングロジックはLook−Asideコーディングロジックを含み、
    前記Look−Asideコーディングロジックはスヌーピングロジックを含む、ことを特徴とする請求項2又は7に記載のシステム。
  13. イレイジャーコーディングロジックは、ホストから前記PCIeスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送において、前記ホストによって使用されるホスト論理ブロックアドレス(LBA: Logical Block Address)を前記NVMe SSDによって使用される装置LBAに変更するように動作する、ことを特徴とする請求項2又は7に記載のシステム。
  14. イレイジャーコーディングロジックは、前記NVMe SSDから前記PCIeスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送で、前記NVMe SSDによって使用される装置の論理ブロックアドレス(LBA; Logical Block Address)をホストによって使用されるホストLBAに変更するように動作する、ことを特徴とする請求項2又は7に記載のシステム。
  15. イレイジャーコーディングロジックを有する前記PCIeスイッチは、ネイティブイレイジャーコーディングロジック(native Erasure Coding Logic)を含まない、前記NVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブル(enable)させるように動作する、ことを特徴とする請求項7に記載のシステム。
  16. イレイジャーコーディングロジックを有する前記PCIeスイッチは、ネイティブイレイジャーコーディングロジック(native Erasure Coding Logic)を含む前記NVMe SSDに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブル(disable)させるように動作する、ことを特徴とする請求項7に記載のシステム。
JP2019188052A 2018-10-12 2019-10-11 FPGA+SSD内部のエンベデッドPCIeスイッチによるイレイジャーコードデータ保護機能をサポートするシステム Active JP7370801B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201862745261P 2018-10-12 2018-10-12
US62/745261 2018-10-12
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/207080 2018-11-30
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/260087 2019-01-28
US16/260,087 US11860672B2 (en) 2018-03-02 2019-01-28 Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD

Publications (3)

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

Family

ID=70219044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019188052A Active JP7370801B2 (ja) 2018-10-12 2019-10-11 FPGA+SSD内部のエンベデッドPCIeスイッチによるイレイジャーコードデータ保護機能をサポートするシステム

Country Status (4)

Country Link
JP (1) JP7370801B2 (ja)
KR (1) KR20200041815A (ja)
CN (1) CN111045597A (ja)
TW (1) TWI791880B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102225577B1 (ko) * 2020-08-21 2021-03-09 (주)테온 하이브리드 스토리지를 이용한 데이터 분산 저장 방법 및 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148227B (zh) * 2020-09-25 2023-03-24 中国科学院空天信息创新研究院 一种存储设备及信息处理方法
CN112732477B (zh) * 2021-04-01 2021-06-29 四川华鲲振宇智能科技有限责任公司 一种带外自检故障隔离的方法
JP2023001494A (ja) * 2021-06-21 2023-01-06 キオクシア株式会社 メモリシステムおよび制御方法
TWI784804B (zh) * 2021-11-19 2022-11-21 群聯電子股份有限公司 時脈重整電路模組、訊號傳輸系統及訊號傳輸方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063497A (ja) * 2012-09-21 2014-04-10 Plx Technology Inc 論理装置の機能を有するpciエクスプレススイッチ
US20140337540A1 (en) * 2013-05-08 2014-11-13 Lsi Corporation METHOD AND SYSTEM FOR I/O FLOW MANAGEMENT FOR PCIe DEVICES
US9336173B1 (en) * 2013-12-20 2016-05-10 Microsemi Storage Solutions (U.S.), Inc. Method and switch for transferring transactions between switch domains

Family Cites Families (11)

* 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 (zh) * 2011-06-08 2012-12-12 鸿富锦精密工业(深圳)有限公司 Pcie接口卡
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
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 (zh) * 2016-11-10 2018-05-25 苏州韦科韬信息技术有限公司 基于pcie接口的固态硬盘保密系统及方法
TW201823916A (zh) * 2016-12-27 2018-07-01 英業達股份有限公司 伺服器系統
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063497A (ja) * 2012-09-21 2014-04-10 Plx Technology Inc 論理装置の機能を有するpciエクスプレススイッチ
US20140337540A1 (en) * 2013-05-08 2014-11-13 Lsi Corporation METHOD AND SYSTEM FOR I/O FLOW MANAGEMENT FOR PCIe DEVICES
US9336173B1 (en) * 2013-12-20 2016-05-10 Microsemi Storage Solutions (U.S.), Inc. Method and switch for transferring transactions between switch domains

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102225577B1 (ko) * 2020-08-21 2021-03-09 (주)테온 하이브리드 스토리지를 이용한 데이터 분산 저장 방법 및 장치

Also Published As

Publication number Publication date
JP7370801B2 (ja) 2023-10-30
CN111045597A (zh) 2020-04-21
KR20200041815A (ko) 2020-04-22
TW202020675A (zh) 2020-06-01
TWI791880B (zh) 2023-02-11

Similar Documents

Publication Publication Date Title
US11860672B2 (en) Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
JP7370801B2 (ja) FPGA+SSD内部のエンベデッドPCIeスイッチによるイレイジャーコードデータ保護機能をサポートするシステム
TWI591512B (zh) 儲存系統及儲存保護之方法
US8074017B2 (en) On-disk caching for raid systems
US9047220B2 (en) Storage system and data management method
US20100049919A1 (en) Serial attached scsi (sas) grid storage system and method of operating thereof
TWI451257B (zh) 保護在直接附加儲存(das)系統中快取資料的完整性之裝置及方法
US8595397B2 (en) Storage array assist architecture
JP2015532985A (ja) 大規模なデータ記憶および受け渡しシステム
US11461303B2 (en) IO metadata management for directly connected host
US11392306B2 (en) Using storage system memory as host memory
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
US20180307427A1 (en) Storage control apparatus and storage control method
US20210271393A1 (en) Method and apparatus for performing data access management of all flash array server
JP2007524932A (ja) パリティデータを生成するための方法、システム、及びプログラム
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
US20240095196A1 (en) Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法

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