TWI791880B - 電腦系統 - Google Patents
電腦系統 Download PDFInfo
- Publication number
- TWI791880B TWI791880B TW108129186A TW108129186A TWI791880B TW I791880 B TWI791880 B TW I791880B TW 108129186 A TW108129186 A TW 108129186A TW 108129186 A TW108129186 A TW 108129186A TW I791880 B TWI791880 B TW I791880B
- Authority
- TW
- Taiwan
- Prior art keywords
- erasure coding
- pcie switch
- coding logic
- data
- logic
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
- Lock And Its Accessories (AREA)
Abstract
公開一種電腦系統。所述電腦系統可包括至少一個非揮
發性儲存快速(NVMe)固態驅動器(SSD)、用於實施支援非揮發性儲存快速固態驅動器的一個或多個功能(例如資料加速、重復資料刪除、資料完整性、資料加密及資料壓縮)的現場可程式設計閘陣列(FPGA)以及周邊元件連接快速(PCIe)交換機。周邊元件連接快速交換機可與現場可程式設計閘陣列及非揮發性儲存快速固態驅動器二者通信。
Description
本發明概念大體來說涉及電腦系統,且更具體地說,涉及周邊元件連接快速(Peripheral Component Interconnect Express,PCIe)交換機內的擦除編碼。
目前,大多數具有獨立盤的冗餘陣列(Redundant Array of Independent Disk,RAID)保護的基於非揮發性儲存快速(Non-Volatile Memory Express,NVMe)的固態驅動器(Solid State Drive,SSD)是通過外部PCIe外掛程式卡(Add-In-Card,AIC)而實現。為優化主機中央處理器(central processing unit,CPU)與AIC RAID控制器之間的匯流排頻寬,匯流排通常支援X16個PCIe通道(lane)。然而,由於PCIe卡標準形狀因數(form factor)的物理限制,每個AIC RAID控制器僅支持少量的U.2連接器(目前是NVMe SSD的優選連接器):通常僅支持兩個或四個U.2連接器。
為在2U主機殼(chassis)內部支持多達24個NVMe SSD,需要6個AIC RAID控制器,從而會形成6個不同的RAID
域。此種配置增加了管理6個RAID域的成本及複雜性。此外,每個AIC RAID控制器目前的成本接近400美元。因此,即使是單個2U主機殼的整個RAID解決方案,僅AIC RAID控制器就超過了2,400美元,這還未算上NVMe SSD的成本。
由於缺乏對大型資料集的經濟高效的RAID資料保護,因此NVMe SSD在企業市場中的採用受到限制。軟體RAID解決方案適用於相對小的資料集,但不適用於大資料(Big Data)。
使用AIC RAID控制器還存在其他問題:
1)如上所述,主機殼內部具有多個RAID域會增加管理複雜性。
2)作為RAID域管理複雜性的必然結果,主機殼不具有單個RAID域,而具有單個RAID域將是優選的。
3)中央處理器(CPU)需要支援大量PCIe通道:每AIC RAID控制器16個PCIe通道×每主機殼6個AIC RAID控制器=僅AIC RAID控制器就有96個PCIe通道。目前只有昂貴得多的高端CPU才支持這麼多PCIe通道。
4)由於每個AIC RAID控制器可能消耗25瓦,因此6個AIC RAID控制器會使每主機殼的功耗增加高達150瓦。
5)主機殼常常僅具有幾個PCIe槽位(slot),這可能會限制可添加的AIC RAID控制器的數目,並間接地減少主機殼中可受RAID所保護的NVMe SSD的數目。
6)軟體RAID解決方案常常支援相對較少的RAID級
別,並會增加CPU的負擔(overhead)。
7)當通過網路進行使用時,SSD存取可能由於在網路之間發送資料存取所需的時間而較慢。此外,在一些例子中,網路型記憶體可能需要軟體RAID實施方案,從而會增加CPU的負擔。
仍然需要一種支援對大量儲存裝置進行擦除編碼而不受AIC RAID控制器及軟體RAID解決方案所限制的方式。
本公開的示例性實施例可提供一種使用擦除代碼來支援資料保護的系統。
示例性實施例提供一種電腦系統,所述電腦系統可包括非揮發性儲存快速(NVMe)固態驅動器(SSD)、實施支援NVMe SSD的功能的現場可程式設計閘陣列(FPGA)以及周邊元件連接快速(PCIe)交換機。支援NVMe SSD的功能來自一組包括資料加速(data acceleration)、重復資料刪除(data deduplication)、資料完整性(data integrity)、資料加密(data encryption)及資料壓縮(data compression)在內的功能。PCIe交換機與FPGA及NVMe SSD通信。
另一個示例性實施例提供一種電腦系統,所述電腦系統可包括非揮發性儲存快速(NVMe)固態驅動器(SSD)及現場可程式設計閘陣列(FPGA),現場可程式設計閘陣列(FPGA)
包括第一FPGA部分及第二FPGA部分。第一FPGA部分實施支援NVMe SSD的功能。第二FPGA部分實施周邊元件連接快速(PCIe)交換機。支援NVMe SSD的功能來自一組包括資料加速、重復資料刪除、資料完整性、資料加密及資料壓縮在內的功能。PCIe交換機與FPGA及NVMe SSD通信。FPGA及NVMe SSD位於共用殼體內部。
又一示例性實施例提供一種電腦系統,所述電腦系統可包括非揮發性儲存快速(NVMe)固態驅動器(SSD)及具有擦除編碼邏輯的周邊元件連接快速(PCIe)交換機。PCIe交換機可包括能夠使PCIe交換機與處理器通信的外部連接器、能夠使PCIe交換機與NVMe SSD通信的至少一個連接器、用於配置PCIe交換機的功率處理單元(Power Processing Unit,PPU)以及擦除編碼控制器,擦除編碼控制器包括用於將擦除編碼方案應用於儲存在NVMe SSD上的資料的電路系統(circuitry)。
根據本發明的實施例,使用包括旁視擦除編碼邏輯(Look-Aside Eraser Coding logic)的PCIe交換機將擦除編碼移動得更靠近儲存裝置,此可減少來回移動資料所需的時間。另外,通過將擦除編碼控制器與PCIe交換機一起放置,使得不再需要昂貴的RAID外掛程式卡,且可使用更大的陣列(甚至跨越多個主機殼)。
105:機器/主機
110:處理器
115:記憶體
120:記憶體控制器
125、320、605、1005:周邊元件連接快速(PCIe)交換機
130:儲存裝置
130-1、130-2、130-3、130-4、130-5、130-6:固態驅動器(SSD)/儲存裝置/物理儲存裝置
135:裝置驅動器
205:時脈
210:網路連接器
215:匯流排
220:使用者介面
225:輸入/輸出引擎
305:中間平面
310、315:配電板
325、330:基板管理控制器(BMC)
405、410、415:擦除編碼方案
505:連接器
510-1、510-2、510-3、510-4、510-5、510-6:PCIe到PCIe堆疊
515:PCIe交換機核心
520:功率處理單元(PPU)
525:探測邏輯
530:擦除編碼控制器
535-1、535-2、535-3、535-4、535-5、535-6:捕獲介面
540:複用器
545:快取
550:寫入緩衝器
555:擦除編碼啟用信號
705:現場可程式設計閘陣列(FPGA)
1103、1106、1109、1112、1115、1118、1121、1124、1127、1130、1133、1136、1139、1145、1148、1151、1154、1160、1163、1205、1210、1215、1220、1225、1235、1240、1305、1310、1315、1405、1410、1415、1420:方塊
圖1示出根據本發明概念實施例的機器,所述機器包括具有旁視擦除編碼邏輯的周邊元件連接快速(PCIe)交換機。
圖2示出圖1所示機器的附加細節。
圖3示出圖1所示機器的附加細節,所述附加細節包括配電板及將具有圖1所示旁視擦除編碼邏輯的PCIe交換機連接到儲存裝置的中間平面(mid-plane)。
圖4示出用於實現不同擦除編碼方案的圖3所示儲存裝置。
圖5示出圖1所示具有旁視擦除編碼邏輯的PCIe交換機的細節。
圖6示出根據本發明概念另一實施例的具有透視擦除編碼邏輯的PCIe交換機的細節。
圖7示出根據本發明概念一個實施例的使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機的第一拓撲(topology)。
圖8示出根據本發明概念另一實施例的使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機的第二拓撲。
圖9示出根據本發明概念又一實施例的使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機的第三拓撲。
圖10示出根據本發明概念又一實施例的使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機的第四拓撲。
圖11A至圖11D示出根據本發明概念實施例的圖1所示具
有旁視擦除編碼邏輯的PCIe交換機支援擦除編碼方案的示例性過程的流程圖。
圖12A至圖12B示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機實行初始化的示例性過程的流程圖。
圖13示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機將新儲存裝置併入擦除編碼方案中的示例性過程的流程圖。
圖14示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機處置故障儲存裝置的示例性過程的流程圖。
現將詳細參考本發明概念的實施例,所述實施例的例子示出在附圖中。在以下詳細說明中,闡述許多具體細節,以使得能夠徹底理解本發明概念。然而,應理解,所屬領域中的普通技術人員無需這些具體細節即可實踐本發明概念。在其他情形中,未詳細闡述眾所周知的方法、過程、元件、電路及網路,以免不必要地使實施例的方面模糊。
將理解,儘管本文中可能使用用語第一(first)、第二(second)等來闡述各種元件,然而這些元件不應受這些用語所限制。這些術語僅用於區分各個元件。例如,在不背離本發明概
念的範圍的條件下,第一模組可被稱為第二模組,且相似地,第二模組可被稱為第一模組。
在本文中,在本發明概念的說明中所使用的術語僅用於闡述特定實施例,而非旨在限制本發明概念。除非上下文清楚地另外指示,否則如在對本發明概念及隨附申請專利範圍書的說明中所使用的單數形式“一(a/an)”及“所述(the)”旨在也包括複數形式。也將理解,本文中所使用的用語“和/或(and/or)”指代且囊括相關聯所列項中一個或多個項的任何及所有可能組合。更將理解,當在本說明書中使用用語“包括(comprises和/或comprising)”時,是指明所聲明特徵、整數、步驟、操作、元件和/或元件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、元件和/或其群組的存在或添加。圖式所示元件及特徵未必按比例繪製。
現場可程式設計閘陣列(FPGA)具有足夠的智慧、計算資源及高速輸入/輸出(Input/Output,I/O)連接,以在必要時實行獨立盤的冗餘陣列(RAID)/擦除代碼同位生成和資料發現(Erasure Code parity generation and data discovery)。FPGA+固態驅動器(SSD)可能需要嵌入式周邊元件連接快速(PCIe)交換機來支持更多的協控制器/輔助處理器,例如一個或多個SSD、圖形處理單元(Graphical Processing Unit,GPU)、張量處理單元(Tensor Processing Unit,TPU)等。多個輔助處理器還需要更多的反及快閃記憶體(NAND flash memory)通道。
本發明的實施例支持FPGA內部的PCIe交換機內的擦除代碼。本發明概念的實施例還可使得用戶能夠通過基板管理控制器(Baseboard Management Controller,BMC)遠端地配置(FPGA內部的)RAID引擎。使用者可使用這些標準介面(例如PCIe(用作控制平面)或系統管理匯流排(System Management Bus,SMBus))來預配置晶片上RAID(RAID-on-a-chip,RoC)或擦除代碼控制器。對於租賃計算資源的用戶而言,能夠以此種方式配置儲存裝置可為有用的:當完成時,用戶可能希望在下一用戶可能使用相同的計算資源之前快速銷毀資料。在此種情形中,BMC可向多個FPGA+SSD內部的所有嵌入式PCIe交換機發送擦除命令。一旦接收到擦除命令,FPGA的RoC/擦除代碼控制器將擦除由命令邏輯塊位址(LBA)範圍規定的資料與同位資料二者。
現今,PCIe交換機暴露虛擬交換機或虛擬分組(virtual grouping),其中多於一個交換機被暴露給管理者。當這些虛擬域後面的網路、CPU-GPU、FPGA及記憶體可分組到一起時,這些配置在虛擬化環境中是有用的。此種虛擬分組可在一個實施例中通過為虛擬化環境創建暴露給用戶群組的RAID子群組來應用於記憶體,或者作為另一選擇用於RAID分組(例如RAID 10、RAID 50、RAID 60等)。這些分層的RAID群組創建小的群組,且在頂部應用附加的RAID層來創建較大的RAID解決方案。虛擬交換機管理較小的RAID群組,而主交換機管理總體RAID配
置。
由於啟用資料保護方案且使管理更靠近儲存單元,因此所述解決方案在企業環境及資料中心環境中提供了具有重要區分特點的有益效果。本發明概念的實施例以較低的功耗提供較高的密度及性能。
所述解決方案可由一個具有集成RoC的嵌入式PCIe交換機或位於主機與SSD之間的資料路徑中的擦除代碼控制器組成。PCIe交換機+RoC元件可由BMC管理以進行配置及控制,且在發佈給新使用者之前,可對軟體暴露介面以進行特定配置。
當以擦除代碼/RAID模式運行時,所有往來於嵌入式PCIe交換機的新進非揮發性儲存快速(NVMe)或基於組構的NVMe(NVMe over Fabric,NVMe-oF)業務量都可能被RoC或擦除代碼控制器(其可稱為旁視RoC或擦除代碼控制器)探測。RoC或擦除代碼控制器可判斷業務量中的資料是否導致對其本地快取的快取命中(cache hit)。如果存在快取命中,則無需將交易(讀取或寫入)轉發到適宜的SSD。所請求讀取資料可由RoC的快取直接提供。寫入資料將直接更新到RoC的本地快取並被標記為“經修改(modified)”或“髒(dirty)”資料。
對於SSD,同位可分佈在經連接的SSD之間。例如,如果選擇RAID 4,則最末SSD僅可用於儲存同位,而其他SSD則用於儲存資料。
通過讓主機與SSD裝置之間具有外部PCIe交換機,可
支援虛擬I/O位址。在此種情形中,作為主機PCIe交換機一部分的一級(primary)RoC可將所有SSD位址虛擬化。換句話說,位址及裝置對主機作業系統(operating system,OS)不可見。在本發明概念的此種實施例中,容許和支持作為對等體的至少兩個SSD之間的對等(peer-to-peer)交易。此選項可通過跨多於一個SSD進行條帶化(striping)來增強SSD的一些形式的冗餘和/或可用性(availability)。在此種模式中,FPGA內的嵌入式RoC或擦除代碼控制器可被禁用(如果存在)。唯一被啟用的RoC/擦除代碼控制器位於主機PCIe交換機中。
如果儲存裝置以單裝置模式進行操作,則所有新進NVMe/PCIe業務量均可能被轉發到具有所請求資料的SSD。
如果配對模式被啟用,則RoC/擦除代碼控制器可判斷所請求資料的位址是否屬於其自身的基址暫存器(base address register,BAR)域。在此種情形中,交易可由本地RoC完成。對於寫入交易,可使用張貼式寫入緩衝器(posted write buffer)或寫入快取(使用一些嵌入式靜態隨機存取記憶體(static random access memory,SRAM)或動態隨機存取記憶體(dynamic random access memory,DRAM))。如果存在寫入快取命中(前一寫入已發生,且資料仍儲存在寫入快取緩衝器中),則處理取決於寫入快取策略。例如,如果快取策略是寫回(write-back),則寫入命令將由RoC快取完成並終止。如果快取策略是寫直達(write-through),則寫入命令將在寫入資料已成功
傳送到驅動器時完成。在此種情形中,一旦寫入資料已成功更新到其本地快取,RoC便可終止對主機的寫入命令。
RoC可將其所主張的一堆裝置虛擬化,並將所述裝置作為單個裝置或更少的裝置來呈現,以作為針對資料或裝置故障的保護方案。資料保護方案本質上可跨一堆裝置進行分佈,以便當在任何裝置上有資料丟失時,可從其他裝置重建資料。RAID及擦除編碼(EC)是使用分散式演算法來保護此種損失的常用資料保護方案。
為將RoC下方的裝置虛擬化,可讓裝置終止在RoC處並對主機不可見。也就是說,PCIe交換機可連接到所有已知的裝置,且RoC可連接到交換機。為管理裝置,RoC可通過PCIe交換機發現並配置各別裝置。作為另外一種選擇,RoC在預設/工廠模式下可為通透的且允許主機軟體來配置RoC。主機軟體可被特別定制,以與PCIe交換機+RoC硬體一起工作。一旦經配置後,RoC便可終止裝置,並使其對主機不可見。
PCIe交換機+RoC可以以多種方式配置用於RAID模式及EC模式。下游可存在附加的PCIe交換機,以創建更大的扇出配置(fan-out configuration)來支援更多裝置。另外,多於一個此種硬體組合可關聯在一起以形成更大的設置(setup)。例如,2個PCIe交換機+RoC可一起工作以形成替代配置。作為另外一種選擇,這2個PCIe交換機+RoC可單獨地工作。
當PCIe交換機+RoC單獨地工作時,主機將每個RoC
和PCIe交換機組合產生實體為單獨的裝置。此處,主機可具有標準OS驅動器,標準OS驅動器將看到由RoC虛擬化的所有SSD。例如,假設有6個SSD聚集在PCIe交換機下面且有1個SSD由RoC暴露給主機;第二RoC和PCIe交換機組合也可將相似的設置暴露給主機。主機為所有RoC控制器裝置發現2個SSD(每個裝置一個)。每個RoC控制器可為每個所暴露SSD暴露單獨的裝置空間。主機可能看不到所有支援此所暴露SSD且在所暴露SSD後面的裝置。RoC通過PCIe交換機管理硬體I/O路徑。
此方法可用在主動-被動設置(active-passive setup)中,其中,第二控制器是用於防備第一控制器路徑出現故障的備用路徑。主機在此處僅主動使用第一控制器,且I/O均不被發送到第二RoC控制器。如果使用主動-被動設置,則所述2個RoC控制器可在內部複製資料。像在RAID 1資料保護設置中一樣,此可通過第一主動控制器向第二RoC控制器發送所有寫入來完成。
可存在第二主動-被動設置,其中第二RoC和PCIe交換機後面可不具有任何其自身的SSD且可僅為備用控制器路徑。在此種情形中,由於所述2個RoC控制器涉及同一組SSD,因此其之間可不發送I/O。此為標準主動-被動設置。
每個RoC後面的SSD也可能彼此不協調,在此種情形中,所述2個SSD被視為單獨的SSD,其之間不共用保護方案。
在又一用法中,兩個路徑均可用在主動-主動設置
(active-active setup)中。此種設置可用於負載平衡(load-balancing)目的。此處,主機可以使用特定軟體層來分佈I/O工作負載的方式來使用這兩個路徑。所述兩個RoC控制器可在其之間協調其寫入操作,以使這兩個SSD保持同步。也就是說,來自每個RoC控制器的每個SSD可含有與RAID 1設置中相同的資料。
在又一配置中,所述2個RoC控制器以使其I/O在定制設置(custom setup)中保持分佈的方式通信。此處,主機僅使用一個RoC控制器:另一個RoC控制器連接到第一RoC控制器。第一RoC控制器可將一個或多個虛擬NVMe SSD暴露給主機。所述2個RoC可被設置為在其之間劃分奇數LBA空間與偶數LBA空間。由於NVMe對來自裝置側的資料使用拉模型(pull model),因此主機僅將命令發送到由第一RoC控制器暴露的SSD。RoC控制器可經由其旁側通道連接(side channel connection)向第二RoC控制器發送消息副本。RoC控制器可被設置為服務於僅為奇數或僅為偶數的LBA、條帶(stripe)、區(zone)等。此種設置提供無需由主機管理且可由RoC和PCIe交換機組合來透明地管理的內部負載平衡。各別RoC控制器可僅處理奇數LBA範圍或偶數LBA範圍,並滿足對主機緩衝器的請求。由於這兩個RoC控制器均存取主機,因此其可對其奇數對或偶數對填入數據。
例如,主機可向第一RoC控制器發送讀取四個連續的
LBA 0、LBA 1、LBA 2、LBA 3的命令,第一RoC控制器向第二RoC控制器發送副本。接著,第一RoC控制器從其PCIe交換機上的前兩個SSD讀取LBA 0及LBA 2的數據,而第二RoC控制器從其PCIe交換機上的前兩個SSD讀取來自LBA 1及LBA 3的資料。第二RoC控制器可接著將其已完成其操作報告給第一RoC控制器,第一RoC控制器可接著將交易完成報告給主機。
奇數/偶數LBA/條帶/區對是可應用於其他負載分配用法的例子。
本發明概念的實施例可支援SSD故障、移除及熱添加(hot addition)。當SSD無法正常工作或被從其槽位中移除時,PCIe交換機中的RoC需要檢測此種情況。當PCIe交換機檢測到此種情況時,RoC可對出現故障或被移除的SSD開始重建操作(rebuild operation)。RoC還可通過確定來自相關聯條帶的資料的優先順序來處置重建週期期間的任何I/O操作。
存在至少兩種將SSD故障或移除報告給PCIe交換機中的RoC的方法。在本發明概念的一個實施例中,所有SSD均具有連接到BMC的存在引腳(Present pin)。當SSD被從主機殼中拉出時,BMC會檢測到移除。接著,BMC將受影響的槽位號報告給PCIe交換機中的RoC。BMC還可週期性地監控SSD的健康狀況。如果BMC檢測到SSD所報告的任何致命錯誤情況,則BMC可決定讓此SSD不再進行服務。接著,BMC可將故障的槽位元號報告給RoC,以便可重建新的SSD。
在本發明概念的另一實施例中,PCIe交換機可能夠支持熱插拔(hot plug),在熱插拔中,所有SSD通過PCIe邊帶信號(sideband signal)進行連接且可檢測特定錯誤情況。PCIe交換機可檢測SSD何時被拉出或添加進來,或者檢測通往SSD的PCIe鏈路何時不再相連。在此種錯誤情境中,PCIe交換機中的RoC可隔離故障SSD,或者BMC可通過禁用故障驅動器的電源並立即開始重建所述驅動器來隔離故障SSD。
當斷言(assert)時,每個U.2連接器的存在(PRSNT#)引腳可指示主機殼中存在新裝置。信號連接到PCIe交換機和/或BMC。RoC可根據目前的資料保護策略適宜地將新驅動器配置到其現有域中。
來自主機的所有新進業務量均需要轉發到探測P2P及位址轉換邏輯(物理到邏輯)。在PCIe枚舉期間,所有埠的所有配置迴圈均需要轉發到探測P2P邏輯。視所選擇的操作模式而定,具有RoC的PCIe交換機的行為被定義如下:
RoC也可位於PCIe交換機與主處理器之間,與其排成一行。在本發明概念的此種實施例中,RoC可稱為透視RoC(Look-Through RoC)。當使用透視RoC時,如果PCIe交換機像正常PCIe交換機一樣進行操作,則RoC被禁用且成為所有埠的重計時器(re-timer)。在此種情形中,所有上游埠均被容許像正常使用情形中一樣進行連接。
如果RoC被啟用,則少量非透明橋(non-transparent bridge,NTB)埠將連接到主機。在此種情形中,RoC可按照所選擇的RAID或擦除編碼級別將新進位址虛擬化為邏輯位址。
無論RoC是旁視RoC還是透視RoC,所有新進讀取/寫入記憶體請求均可對照RoC的本地快取進行檢查,以確定快取命中或快取未中(cache miss)。如果存在快取命中,則所請求的讀取資料可由RoC本地快取記憶體而非SSD提供。對於記憶體寫入命中,可立即將寫入資料更新到快取記憶體。相同的寫入資料可稍後更新到SSD。此種實施方案可降低記憶體寫入的總潛伏時間(latency),從而提高系統性能。
如果存在快取未中,則RoC控制器可確定哪個SSD是存取資料的正確驅動器。
為對PCIe裝置進行定址,必須通過映射到系統的I/O埠位址空間或記憶體映射位址空間來啟用PCIe裝置。系統的固件、裝置驅動器或作業系統程式對基址暫存器(BAR)進行程式設計,以通過向PCI控制器寫入配置命令來將其位址映射告知給所述裝置。由於所有PCIe裝置在系統重置時均處於非現用狀態(inactive state),因此其將不被分配以可供作業系統或裝置驅動器用來與其通信的地址。基本輸入/輸出系統(basic input/output system,BIOS)或作業系統通過PCIe控制器,使用每個槽位元的初始化裝置選擇(Initialization Device Select,IDSEL)信號在地理上對PCIe槽位(例如,主機板上的第一PCIe槽位、第二PCIe槽位或第三PCIe槽位等)進行定址。
由於BIOS或作業系統沒有直接的方法來確定哪些PCIe槽位元已安裝裝置(也沒有直接的方法確定所述裝置實施哪些功能),因此會枚舉PCI匯流排。匯流排枚舉可通過嘗試在裝置的功能15處從供應商標識(ID)及裝置標識(VID/DID)暫存器中讀取匯流排號和裝置號的每個組合來實行。注意,與DID不同的裝置號僅為裝置在此匯流排上的序號。此外,在檢測到新橋之後,定義新的匯流排號,且裝置枚舉在裝置號零處重新開始。
如果未從裝置的功能15接收到響應,則匯流排主控器可實行異常中止(abort)並返回全位開啟值(all-bits-on value)(十六進位的FFFFFFFF),此值是無效的VID/DID值。通過此種方式,裝置驅動器可明白指定組合匯流排/裝置_號/功能(bus/device_number/function,B/D/F)不存在。因此,當對於給定匯流排/裝置對值為零的功能ID的讀取導致主控器(啟動器)異常中止時,裝置驅動器可斷定此匯流排上不存在工作的裝置
(需要裝置來實施功能號零)。在此種情形中,沒有必要讀取其餘的功能號(1到7),因為其也將不存在。
當對於供應商ID暫存器對指定B/D/F組合的讀取成功時,裝置驅動器會知道此裝置存在。裝置驅動器可將所有的1寫入其BAR,並以編碼形式讀回裝置的所請求記憶體大小。所述設計暗示所有位址空間大小是2的冪且自然對齊。
此時,BIOS或作業系統可將記憶體映射位址及I/O埠位址程式設計到裝置的BAR配置暫存器中。只要系統保持接通,這些位址便會保持有效。一旦斷電,所有這些設置均會丟失,且下次系統重新通電時會重複所述過程。由於此整個過程是完全自動的,因此用戶無需通過自己更換卡上的DIP交換機來手動配置任何新添加的硬體。此種自動的裝置發現和位址空間分配是隨插即用(plug and play)的實施方式。
如果找到PCIe到PCIe橋,則系統可為所述橋以外的二級(secondary)PCI匯流排分配非零的匯流排號,且接著枚舉此二級匯流排上的裝置。如果找到更多的PCIe橋,則所述發現可遞迴地繼續,直到所有可能的域/匯流排/裝置組合均得到掃描為止。
每個非橋PCIe裝置功能可實施多達6個BAR,所述6個BAR中的每一個可回應於I/O埠及記憶體映射位址空間中的不同位址。每個BAR闡述一區域。
PCIe裝置也可具有可含有驅動器代碼或配置資訊的可選
唯讀記憶體(read only memory,ROM)。
BMC可直接配置RoC設置。BMC可具有其中要應用特定資料保護方案的硬編碼路徑或者可配置設置。後者可將介面作為BIOS選項暴露給此配置,或者經由硬體暴露介面(hardware exposed interface)附加地暴露給軟體。硬編碼方案可內建在BIOS固件中,且可仍然提供啟用/禁用保護的選項。
為處置裝置故障,BMC可通過控制路徑檢測驅動器何時變壞或被移除。BMC還可通過自我監控分析和報告技術(Self-Monitoring Analysis and Reporting Technology,SMART)來確定裝置預計很快會變壞。在這些情形中,BMC可重新配置RoC硬體,以啟用失敗的場景或警告用戶所述情境。BMC僅進入控制路徑,而不進入資料路徑。當插入新驅動器時,BMC可再次進行干預並將新驅動器配置作為受保護群組的一部分,或者啟動重建操作。RoC硬體可處置實際重建、此設置中的恢復路徑,以提供盡可能小的性能影響,同時在資料存取路徑中提供更少的潛伏時間。
圖1示出根據本發明概念實施例的機器,所述機器包括具有旁視擦除編碼邏輯的周邊元件連接快速(PCIe)交換機。在圖1中,示出機器105。機器105可包括處理器110。處理器110可為任何種類的處理器:例如,英特爾至強(Intel Xeon)、賽揚(Celeron)、安騰(Itanium)或淩動處理器(Atom processor)、高級微型裝置(Advanced Micro Devices,AMD)皓龍
(Opteron)處理器、高級精簡指令集電腦器(advanced RSIC machine,ARM)處理器等。儘管圖1示出機器105中的單個處理器110,然而機器105可包括任何數目的處理器,所述處理器中的每一個均可為單核心處理器或多核心處理器,且可以以任何所期望組合進行混合。
機器105還可包括記憶體115,記憶體115可由記憶體控制器120管理。記憶體115可為任何種類的記憶體,例如快閃記憶體、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、永久隨機存取記憶體(Persistent Random Access Memory)、鐵電式隨機存取記憶體(Ferroelectric Random Access Memory,FRAM)或者例如磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM)。記憶體115也可為不同記憶體類型的任何所期望組合。
機器105還可包括具有旁視擦除編碼邏輯的周邊元件連接快速(PCIe)交換機125。PCIe交換機125可為支援旁視擦除編碼邏輯的任何所期望PCIe交換機。
機器105還可包括儲存裝置130,儲存裝置130可由裝置驅動器135控制。儲存裝置130可為能夠與PCIe交換機125通信的任何所期望形式的儲存裝置。例如,儲存裝置130可為非揮發性儲存快速(NVMe)固態驅動器(SSD)。
儘管圖1將機器105繪示為伺服器(其可為獨立伺服器或機架式伺服器(rack server)),然而本發明概念的實施例可包括任何所期望類型的機器105,而無限制。例如,機器105可以以桌面型電腦(desktop computer)或膝上型電腦(laptop computer)或任何其他可受益於本發明概念實施例的機器來替換。機器105還可包括專用可攜式電腦器、平板電腦(tablet computer)、智慧手機及其他電腦器。
圖2示出圖1所示機器的附加細節。在圖2中,通常,機器105包括一個或多個處理器110,所述一個或多個處理器110可包括記憶體控制器120及時脈205,時脈205可用於協調機器105的元件的操作。處理器110還可耦合到記憶體115,記憶體115可包括例如隨機存取記憶體(random access memory,RAM)、唯讀記憶體(ROM)或其他狀態保持介質。處理器110還可耦合到儲存裝置130及網路連接器210,網路連接器210可為例如乙太網連接器或無線連接器。處理器110還可連接到匯流排215,匯流排215可與使用者介面220及輸入/輸出介面埠附接,輸入/輸出介面埠可使用輸入/輸出引擎225以及其他元件來管理。
圖3示出圖1所示機器105的附加細節,包括配電板及將具有圖1所示旁視擦除編碼邏輯的PCIe交換機125連接到儲存裝置的中間平面。在圖3中,機器105可包括中間平面305以及配電板310及315。分別來說,配電板310可包括具有旁視擦
除編碼邏輯的PCIe交換機125及基板管理控制器325,配電板315可包括具有旁視擦除編碼邏輯的PCIe交換機320及基板管理控制器330。(配電板310及315還可包括圖3中未示出的附加組件:圖3關注與本發明概念實施例最相關的元件。)
在本發明概念的一些實施例中,每個具有旁視擦除編碼邏輯的PCIe交換機125及320可支援多達總共96個PCIe通道。通過使用U.2連接器將具有旁視擦除編碼邏輯的PCIe交換機125及320連接到儲存裝置130-1至130-6,每個U.2連接器支援每個裝置多達4個PCIe通道。使用兩個X4通道(每個通信方向一個X4通道),此意味著每個PCIe交換機可支援多達96÷8=12個裝置。因此,圖3示出12個儲存裝置130-1至130-3與具有旁視擦除編碼邏輯的PCIe交換機125通信,且12個儲存裝置130-4至130-6與具有旁視擦除編碼邏輯的PCIe交換機320通信。但是與具有旁視擦除編碼邏輯的PCIe交換機125及320通信的儲存裝置的數目僅由具有旁視擦除編碼邏輯的PCIe交換機125及320所提供的PCIe通道的數目以及每個儲存裝置130-1至130-6所使用的PCIe通道的數目來限定。
在本發明概念的一些實施例中,具有旁視擦除編碼邏輯的PCIe交換機125及320可使用定制電路系統來實施。在本發明概念的其他實施例中,具有旁視擦除編碼邏輯的PCIe交換機125及320可使用適當程式設計的現場可程式設計閘陣列(FPGA)或應用專用積體電路(Application-Specific Integrated
Circuit,ASIC)來實施。
BMC 325及330可用於配置儲存裝置130-1至130-6。例如,BMC 325及330可將儲存裝置130-1至130-6初始化,從而擦除儲存裝置130-1至130-6上所存在的任何資料:在啟動時、當儲存裝置130-1至130-6被添加到擦除編碼方案時或者當兩者同時發生時。作為另外一種選擇,此種功能可由處理器(圖1所示處理器110或者由存在(但未出)於配電板310及315上的本地處理器)支援。BMC 325及330(或圖1所示處理器110或者存在(但未出)於配電板310及315上的本地處理器)也可負責具有旁視擦除編碼邏輯的PCIe交換機125及320的旁視擦除編碼邏輯的初始配置。
圖3示出具有旁視擦除編碼邏輯的兩個PCIe交換機125及320的資料保護的示例性完整設置:BMC 325及330可直接配置旁視擦除編碼邏輯。BMC 325及330可具有其中應用特定資料保護方案的硬編碼路徑或者可配置設置。後者可將介面作為基本輸入/輸出系統(BIOS)選項暴露給此配置,或者經由硬體暴露介面暴露給附加軟體。硬編碼方案可內建在BIOS固件中,且可仍然提供啟用/禁用保護的選項。
在儲存裝置發生故障的情形中,BMC 325及330可檢測儲存裝置何時變壞或何時經由控制路徑被移除。BMC 325及330可接著重新配置旁視擦除編碼邏輯以啟用故障場景。BMC 325及330可連接到控制路徑,但不連接到資料路徑。相似地,當插入
新儲存裝置時,BMC 325及330可進行干預並將新儲存裝置配置作為已建立的群組的一部分,或者啟動重建操作。旁視擦除編碼邏輯可處置實際重建;理想情況下,此設置中的恢復路徑應將對資料存取的性能影響最小化,並且從其餘儲存裝置重構重建儲存裝置上的資料。
此時,定義用語“擦除編碼”是有意義的。擦除編碼旨在闡述用於對多個儲存裝置上的資料進行編碼的任何所期望方式。擦除編碼可能需要至少兩個儲存裝置或儲存裝置的至少兩個部分(例如,含有兩個或更多個NAND快閃記憶體通道的單個殼(shell)或殼體(housing)),這是因為如果僅使用一個儲存裝置,則可使用適宜於所述儲存裝置的傳統資料存取技術來儲存資料。換句話說,擦除編碼被定義為意指以更高效地使用儲存裝置和/或提供資料冗餘的方式跨兩個或更多個儲存裝置、單個儲存裝置的兩個或更多個部分或其任意組合儲存資料的方式。
獨立盤的冗餘陣列(RAID)代表擦除編碼的子集;或者換句話說,RAID級別代表各種擦除編碼方案的特定實施方案。然而,可存在可被定義為超出傳統RAID級別的其他擦除編碼方案。
通常,實施擦除編碼(或RAID)使用兩個或更多個物理上不同的儲存裝置。但是在本發明概念的一些實施例中,單個殼或殼體可包括儲存裝置的多個部分,出於擦除編碼的目的,儲存裝置的所述多個部分可被視為單獨的儲存裝置。例如,單個
NVMe SSD殼或殼體可包括多個NAND快閃記憶體通道。出於擦除編碼的目的,每個NAND快閃記憶體通道可被視為單獨的儲存裝置,資料跨各種NAND快閃記憶體通道進行條帶化(或者進行編碼)。在本發明概念的一些實施例中,此使得有可能使用單個儲存裝置實施擦除編碼。此外,具有旁視擦除編碼邏輯的PCIe交換機125有可能支持改錯碼(Error Correcting Code)(內建於某處的具有旁視擦除編碼邏輯的PCIe交換機125中,或者通過附加邏輯)或其他可與單個儲存裝置一起使用的功能。
圖4示出用於實現不同擦除編碼方案的圖3所示儲存裝置130-1至130-6。在圖4中,如擦除編碼方案405中所示,RAID 0配置中可使用儲存裝置130-1至130-6。RAID 0跨各種儲存裝置對資料進行條帶化。也就是說,資料被劃分成適宜於儲存裝置的邏輯單元,且每個邏輯單元被寫入到多達陣列中儲存裝置數目的不同儲存裝置;在所有儲存裝置上均被寫入一個資料邏輯單元後,在第一儲存裝置上再次寫入資料,依此類推。
與單獨使用單個儲存裝置或甚至使用無組織的磁片群組(例如磁片櫃(Just a Bunch of Disks,JBOD)或快閃記憶體櫃(Just a Bunch of Flash,JBOF))相比,RAID 0具有優勢。由於資料儲存在多個儲存裝置上,因此資料可被更快地讀取和寫入,其中每個儲存裝置平行作業。因此,例如,通過如圖4中所示跨12個儲存裝置130-1至130-6劃分資料,每個儲存裝置130-1至130-6僅需讀取或寫入總數據的十二分之一,此比讀取或寫入整
個資料快。陣列的總容量可作為陣列中儲存裝置的數目乘以陣列中最小儲存裝置的容量來計算。因此,在圖4中,由於陣列包括12個資料儲存裝置,因此陣列的總容量是陣列中最小儲存裝置的容量的12倍。
RAID 0的缺點是存在針對儲存裝置故障的保護:如果陣列中任何儲存裝置出現故障,則資料會丟失。事實上,RAID 0可被視為比JBOD或JBOF的風險更高:通過跨多個儲存裝置對資料進行條帶化,如果任何各別儲存裝置出現故障,則所有資料均會丟失。(相反,對於JBOD或JBOF,文件通常被寫入到僅一個儲存裝置。因此,儘管在JBOD或JBOF設置中,單個儲存裝置的故障可能導致一些資料丟失,但並非所有資料均必然會丟失。)
RAID 0不包括任何冗餘,且因此在技術上不是獨立盤的冗餘陣列。但是傳統上,RAID 0被視為一種RAID級別,且RAID 0無疑可被視為擦除編碼方案。
擦除編碼方案410示出RAID 5,RAID 5是一種常見的RAID方案。在RAID 5中,可為儲存在此條帶的其他儲存裝置上的資料計算同位塊。因此,在圖4中,由於RAID 5陣列包括總共12個儲存裝置,因此11個儲存裝置被用作資料驅動器,且1個儲存裝置被用作同位驅動器。(在RAID 5中,同位資料不限於同位驅動器,而是像任何資料一樣跨儲存裝置進行分佈。不再經常使用的RAID 4將所有同位資訊儲存在單個驅動器上。)陣列
(其中所述陣列中存在n個儲存裝置)的總容量可被計算為最小儲存裝置的容量的n-1倍。由於每個條帶包括一個同位塊,因此擦除編碼方案410可容忍多達一個儲存裝置的故障,且仍然能夠存取所有資料(故障儲存裝置上的資料可結合同位塊使用功能儲存裝置上的資料來恢復)。
注意,與RAID 0相比,RAID 5提供的總儲存較少,但提供一些針對儲存裝置故障的保護。在決定RAID級別時,此為一重要權衡:總儲存容量與冗餘的相對重要性。
圖4中未示出的其他RAID級別也可用作擦除編碼方案。例如,RAID 6使用兩個儲存裝置來儲存同位資訊,從而將總儲存容量減少到最小儲存裝置容量的n-2倍,但同時容忍多達兩個儲存裝置故障。混合方案也是可能的:例如,RAID 0+1、RAID 1+0、RAID 5+0、RAID 6+0及其他RAID方案均是可能的,每個方案提供不同的總儲存容量及儲存裝置故障容忍度。例如,儲存裝置130-1至130-6中的五個可用於形成一個RAID 5陣列,儲存裝置130-1至130-6中的另外五個可用於形成第二RAID 5陣列,且這兩個群組與其餘兩個儲存裝置相組合可用於形成更大的RAID 5陣列。或者,儲存裝置130-1至130-6可劃分成兩個群組,每個群組實施RAID 0陣列,其中所述兩個群組充當更大的RAID 1陣列(從而實施RAID 0+1設置)。應注意,RAID及擦除編碼技術使用固定代碼(fixed code)或旋轉代碼(rotating code),且以上固定代碼/同位驅動器符號僅用於說明目
的。
擦除編碼方案415代表更一般的說明,其適用於所有RAID級別及任何其他所期望擦除編碼方案。考慮到儲存裝置130-1至130-6的陣列,這些儲存裝置可劃分成兩個群組:一個群組用於儲存資料,另一個群組用於儲存代碼。代碼可為同位資訊或允許從資料群組中的資料子集及編碼群組中的一些編碼中恢復丟失資料的任何其他所期望編碼資訊。如圖4中所示,擦除編碼方案415可包括多達X個資料儲存裝置及Y個代碼儲存裝置。考慮到來自陣列的X個儲存裝置的任意組合,預期有可能存取或重構來自所有X個資料儲存裝置的資料。因此,擦除編碼方案415一般可容忍陣列中多達Y個儲存裝置故障,且仍然能夠存取儲存在陣列中的所有資料。就容量而言,擦除編碼方案415的總容量是最小儲存裝置的容量的X倍。
注意,在以上論述中,任何擦除編碼方案的總容量均是相對於“最小儲存裝置的容量”而闡述。對於一些擦除編碼方案,儲存裝置可能具有不同的容量且仍然得到充分利用。但是一些擦除編碼方案(例如RAID 0或RAID 1)預期所有儲存裝置具有相同的容量,且將丟棄較大儲存裝置所可能包括的任何容量。因此,短語“最小儲存裝置的容量”應被理解為相對性短語,且使用任何特定擦除編碼方案的陣列所提供的總容量可大於上述公式。
回到圖3,不管所使用的特定擦除編碼方案如何,PCIe交換機125及320的旁視擦除編碼邏輯均會有效地從物理儲存裝
置130-1至130-6中創建新儲存裝置。由於由擦除編碼方案呈現的儲存裝置在物理上不存在,因而此新儲存裝置可被視為虛擬儲存裝置。並且由於此虛擬儲存裝置使用物理儲存裝置130-1至130-6,因此物理儲存裝置130-1至130-6應對主機隱藏。畢竟,當儲存在儲存裝置130-1至130-6上的資料可能已以主機所不知道的方式編碼時,主機嘗試直接存取儲存裝置130-1至130-6上的塊將成問題。
為支援此虛擬儲存裝置的使用,具有旁視擦除編碼邏輯的PCIe交換機125和/或320可將虛擬儲存裝置的容量告知給圖1所示處理器110。例如,如果儲存裝置130-1至130-6包括五個NVMe SSD(每個NVMe SSD儲存1太位元組(TB)的資料(為在數學上簡單起見,1TB被視為240個位元組,而非1012個位元組)且擦除編碼方案實施RAID 5陣列,則虛擬儲存裝置的有效儲存容量為4TB。(擦除編碼的其他實施方案使用更少或更多的儲存裝置(每個儲存裝置可儲存少於或多於1TB)可能會導致虛擬儲存裝置具有不同的容量。)具有旁視擦除編碼邏輯的PCIe交換機125和/或320可將其連接到提供總共4TB(或242個位元組)儲存容量的虛擬儲存裝置通知給處理器110。如以下參考圖5進一步闡述,圖1所示處理器110可接著將資料寫入到此虛擬儲存裝置中的塊,且旁視擦除編碼邏輯可處置資料的實際儲存。例如,如果NVMe SSD上的塊大小各為4千位元組(KB),則處理器110可請求將資料寫入到編號在0至230-1之間的邏輯
塊。
作為另外一種選擇,具有旁視擦除編碼邏輯的PCIe交換機125和/或320可從圖1所示處理器110請求主機記憶體位址塊,此代表用於與虛擬儲存裝置通信的方法。當圖1所示處理器110想要讀取或寫入資料時,包括主機記憶體位址塊內的適宜位址在內的傳輸可被發送到具有旁視擦除編碼邏輯的PCIe交換機125和/或320。此主機記憶體位址塊應至少與使用擦除編碼方案實施的虛擬儲存裝置一樣大(且如果預期在使用期間可將附加的儲存裝置添加到擦除編碼方案,則可大於虛擬儲存裝置的初始容量)。
圖5示出具有圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的細節。在圖5中,具有旁視擦除編碼邏輯的PCIe交換機125可包括各種元件,例如連接器505、PCIe到PCIe堆疊(PCIe-to-PCIe stack)510-1至510-6、PCIe交換機核心515及功率處理單元(PPU)520。連接器505能夠使具有旁視擦除編碼邏輯的PCIe交換機125與圖1所示機器105中的各種其他元件(例如圖1所示處理器110及圖3所示儲存裝置130-1至130-6)通信。連接器505中的一個或多個可被稱為“外部”連接器,這是因為其連接到上游元件(例如圖1所示處理器110);其餘連接器505可被稱為內部或下游“連接器”,因為其連接到下游裝置(例如圖3所示儲存裝置130-1至130-6)。PCIe到PCIe堆疊510-1至510-6允許PCIe裝置之間的資料交換。例如,圖3所示
儲存裝置130-1可向圖3所示儲存裝置130-3發送資料。或者,圖1所示處理器110可正在請求圖3所示儲存裝置130-1至130-6中的一個或多個實行讀取或寫入請求。PCIe到PCIe堆疊510-1至510-6可包括緩衝器來臨時儲存資料:例如,如果特定傳輸的目的地裝置當前正忙,則PCIe到PCIe堆疊510-1至510-6中的緩衝器可儲存傳輸,直到目的地裝置空閒為止。PPU 520可充當配置中心,從而處置對具有旁視擦除編碼邏輯的PCIe交換機125的任何配置請求。儘管圖5示出六個PCIe到PCIe堆疊510-1至510-6,然而本發明概念的實施例可包括任何數目的PCIe到PCIe堆疊。PCIe交換機核心515進行操作以將資料從一個PCIe埠路由到另一個PCIe埠。
在進入探測邏輯525及擦除編碼控制器530的操作之前,理解有至少兩個不同的“位址”用於儲存在圖3所示儲存裝置130-1至130-6上的資料是有說明的。在任何儲存裝置上,資料被寫入到與硬體結構相關聯的特定位址:此位址可被視為“物理”位址:在NVMe SSD的上下文中,“物理”位址通常被稱為物理塊位址(Physical Block Address,PBA)。
NVMe SSD中所使用的快閃記憶體通常不容許資料就地重寫。相反,當需要重寫資料時,舊資料會無效化,而新資料會被寫入到NVMe SSD上其他地點處的新資料塊。因此,寫入與特定資料結構(無論是文件、物件還是任何其他資料結構)相關聯的資料的PBA可隨時間而變化。
另外,還有其他在快閃記憶體中重新定位資料的原因。資料通常是以比在將資料寫入到快閃記憶體時所使用的單元大的單元從快閃記憶體擦除。如果在要擦除的單元中的其他地點儲存有有效資料,則在可擦除所述單元之前,必須將此有效資料寫入快閃記憶體中的其他地點。此擦除過程通常被稱為垃圾收集(Garbage Collection),且從要擦除的單元中複製出有效資料的過程被稱為程式設計。並且耗損均衡(Wear Levelling)(嘗試使快閃記憶體中的單元大致以同等程度使用的過程)也可在快閃記憶體內重新定位資料。
每次移動特定資料塊時,主機均可收到通知,並被告知資料的新儲存位置。但是以此種方式通知主機會給主機帶來顯著的負擔。因此,大部分快閃記憶體裝置將儲存資料的邏輯塊位址(LBA)通知給主機,並維持將LBA映射到PBA的表(通常位於快閃記憶體轉換層(Flash Translation Layer,FTL)中)。接著,每當所討論的資料被移動到新的PBA時,快閃記憶體可更新FTL中的LBA到PBA映射表,而非將新位址通知給主機。因此,對於每個儲存裝置,可存在與資料相關聯的PBA和LBA二者。
通過添加由旁視擦除編碼邏輯呈現的虛擬儲存裝置的概念,使得為此結構引入又一級別。回想以上參考圖3呈現的例子,其中擦除編碼方案包括五個1TB NVMe SSD,每個NVMe SSD使用大小為4KB的塊。每個NVMe SSD可包括編號在0至
228-1之間的LBA。但是呈現給主機的虛擬儲存裝置包括編號在0至230-1之間的LBA。
因此,主機所看到的LBA範圍可代表各種儲存裝置的多個LBA範圍的組合。為在由主機所使用的LBA範圍與各別儲存裝置的LBA範圍之間進行區分,由主機所使用的LBA可被稱為“主機LBA(host LBA)”、“全域LBA(global LBA)”或“作業系統(O/S)感知LBA(operating system-aware LBA)”,而由儲存裝置所使用的LBA可被稱為“裝置LBA(device LBA)”、“本地LBA(local LBA)”或“RoC後面的LBA(LBA behind RoC)”。主機LBA範圍可以以任何所期望方式在各種儲存裝置之間劃分。例如,主機LBA範圍可劃分成連續的塊,其中每個各別塊被分配給特定的儲存裝置。通過使用此種方案,主機LBA 0至LBA 228-1可映射到儲存裝置130-1的裝置LBA 0至LBA 228-1,主機LBA 228至LBA 229-1可映射到儲存裝置130-2的裝置LBA 0至LBA 228-1,依此類推。作為另外一種選擇,主機LBA中的各別位元可用於確定適宜的儲存裝置及儲存此資料的裝置LBA:例如,使用主機LBA中的低階位元來識別所述裝置,並剝離這些位元以產生由儲存裝置所使用的裝置LBA。但是無論主機LBA如何映射到裝置LBA,均可能存在兩個、三個或甚至可能更多代表資料儲存位置的不同位址。
當然,並不要求儲存裝置是均質的:其可具有不同的大小且因此具有不同數目的LBA:其甚至可為例如將SSD與硬碟
驅動器混合的不同裝置類型。
注意,為闡述簡單起見,即使提供給儲存裝置的位址不是邏輯塊位址(例如,硬碟驅動器),也可使用用語“裝置LBA”。如果“裝置LBA”是儲存裝置上儲存資料的實際位址,則儲存裝置在存取資料之前可不將裝置LBA映射到不同的位址。
現在回到圖5,探測邏輯525及擦除編碼控制器530充當具有旁視擦除編碼邏輯的PCIe交換機125的旁視擦除編碼邏輯。探測邏輯525可“探測”(例如,通過在請求被遞送到其目的地之前攔截所述請求)傳輸,並使用捕獲介面(capture interface)535-1至535-6確定適宜的目的地,捕獲介面535-1至535-6可經由複用器540傳遞到探測邏輯525。如以上所論述,處理器110僅“看到”給定容量的虛擬儲存裝置(或特定大小的主機記憶體位址塊),並基於主機LBA(與虛擬儲存裝置相關聯)發佈讀取或寫入資料的命令。探測邏輯525可將這些主機LBA轉換成一個或多個特定物理儲存裝置上的裝置LBA,並相應地改變傳輸以引導請求。探測邏輯525可以以任何所期望方式管理此種轉換。例如,探測邏輯525可包括將第一範圍的主機LBA映射到圖3所示儲存裝置130-1、將第二範圍的主機LBA映射到圖3所示儲存裝置130-2(依此類推)的表,其中裝置LBA取決於可與旁視擦除編碼邏輯如何進行操作相關的因素:例如,擦除編碼方案本身(例如RAID級別)、條帶大小、儲存裝置的數目等。或者,探測邏輯525可使用主機LBA中的特定位元來決定
圖3所示儲存裝置130-1至130-6中的哪一個儲存所討論的資料:例如,如果陣列僅包括兩個儲存裝置,則探測邏輯525可使用低階位元(或邏輯塊位址中的一些其他位元)來判斷資料要被寫入到第一儲存裝置還是第二儲存裝置。(顯然,隨著陣列中包括更多的儲存裝置,可使用更多的位,適宜地注意確保邏輯塊位址均不包括“識別”不存在的儲存裝置的位元組合。例如,圖3示出總共24個儲存裝置130-1至130-6,儲存裝置130-1至130-6可使用位值00000至10111;應避免11000至11111之間的位值。)本發明概念的實施例可使用任何其他所期望方法來將從主機接收的邏輯塊位址映射到(適宜的)儲存裝置上的塊位址。
作為例子,考慮圖1所示處理器110發送寫入請求,所述寫入請求具有足夠的資料來填充跨儲存裝置130-1至130-6中的所有儲存裝置的整個條帶(在算上擦除編碼之後)。探測邏輯525可將資料分成單獨的邏輯單元,且如以下所論述,擦除編碼控制器530可提供或修改所述資料。探測邏輯525可接著以適宜的資料生成一個傳輸,所述一個傳輸的目的地是儲存裝置130-1至130-6中的每一個。
注意,當探測邏輯525以適宜於所討論儲存裝置的裝置LBA替換原始主機LBA時,此裝置LBA並非必須是物理塊位址。換句話說,由探測邏輯所使用的裝置LBA本身可為另一個邏輯塊位址。此種結構能夠使物理儲存裝置繼續在適宜時管理其自身的資料儲存。例如,如果物理儲存裝置是NVMe SSD,則所
述SSD可四處移動資料以實行垃圾收集或損耗均衡,使用其快閃記憶體轉換層來管理所提供裝置LBA與NAND快閃記憶體晶片中一個NAND快閃記憶體晶片上的PBA的關聯。此種操作可在不知道探測邏輯525的情況下發生。但是,如果所討論儲存裝置不重新定位資料,則除非主機如此指示,否則由探測邏輯525所提供的裝置LBA可為儲存裝置上的物理位址。
如上所述,擦除編碼控制器530可實施擦除編碼方案。視擦除編碼方案而定,擦除編碼控制器530可簡單地生成適宜的同位資料(例如,當使用RAID 5或RAID 6擦除編碼方案時),而讓原始資料(如由圖1所示處理器110所提供)保持不變。但是,在本發明概念的一些實施例中,擦除編碼控制器530也可修改原始資料。例如,擦除編碼控制器530可對原始資料實施改錯碼,以使得即使在出現錯誤的情形中,也可恰當地讀取儲存在圖3所示各別儲存裝置130-1至130-6上的塊。或者,擦除編碼控制器530可將寫入到圖3所示儲存裝置130-1至130-6的資料加密,從而使寫入到圖3所示儲存裝置130-1至130-6的資料在無加密金鑰(encryption key)的條件下不可讀取──或者更糟地導致擦除編碼控制器530認為如果圖1所示處理器110要直接寫入資料,則儲存裝置130-1至130-6被毀壞。或者,擦除編碼控制器530可將同位資訊(或類似類型的資訊)引入到寫入到圖3所示儲存裝置130-1至130-6中的每一個中的資料中。擦除編碼控制器530對資料實行的特定操作取決於所使用的擦除編碼方案。
探測邏輯525及擦除編碼控制器530可以以任何所期望方式實施。例如,探測邏輯525及擦除編碼控制器530可使用其上儲存有適宜軟體的處理器來實施。但是由於PCIe交換機一般被實施為硬體電路系統(其通常比在例如PCIe交換機等裝置的處理器上運行的軟體更快,所述軟體一般不需要實施大量功能),探測邏輯525及擦除編碼控制器530可使用適宜的電路系統來實施。此種電路系統可包括以適宜方式程式設計的FPGA、ASIC或任何其他所期望硬體實施方案。
在最基本的實施例中,可僅使用探測邏輯525及擦除編碼控制器530來實施旁視擦除編碼邏輯。但是在旁視擦除編碼邏輯中包括快取545和/或寫入緩衝器550可提供顯著的益處。
快取545可儲存儲存在虛擬儲存裝置中的資料的子集。一般來說,快取545的容量小於總虛擬儲存裝置,但存取更快。因此,與從下伏物理儲存裝置(underlying physical storage device)存取資料相比,通過將一些資料儲存在快取545中,對快取545的快取命中可使虛擬儲存裝置獲得更快的性能。例如,快取545可儲存最新從虛擬儲存裝置存取的資料,使用任何所期望演算法來在所要替換的資料變舊時識別所述資料(例如最近最少使用演算法(Least Recently Used algorithm)或最不常用演算法(Least Frequently Used algorithm))。快取545可使用任何所期望記憶體結構(例如DRAM、SRAM、MRAM或任何其他所期望記憶體結構)來實施。快取545可甚至使用比傳統記憶體更快的記憶體結
構來實施,例如可用在處理器中的L1或L2快取中。最後,儘管快取545被示出為具有旁視擦除編碼邏輯的PCIe交換機125的一部分,然而快取545也可儲存在圖1所示記憶體115中且由具有旁視擦除編碼邏輯的PCIe交換機125從記憶體115中存取。
寫入緩衝器550提供使寫入請求加速的機制。對使用擦除編碼來跨越(span)多個物理儲存裝置的虛擬儲存裝置實行寫入操作所需的時間可比對單個物理儲存裝置的相似寫入請求慢。實行寫入操作可涉及從同一塊中的其他儲存裝置讀取資料,在此之後,可合併新資料,接著可將合併的資料寫回到適宜的儲存裝置。實行合併還可涉及計算同位資訊或其他代碼資訊。並且如果下伏物理儲存裝置正在忙於實行其他操作(例如,處理讀取請求),則寫入請求也可能延遲。使在圖1所示處理器110上運行的軟體延遲且同時等待寫入請求完成可為非期望的。因此,寫入緩衝器550可臨時儲存資料直到對下伏物理儲存裝置的寫入完成為止,而非阻擋在圖1所示處理器110上運行的軟體;同時探測邏輯525可將寫入請求已完成告知給在圖1所示處理器110上運行的軟體。與回寫式快取策略相比,此種方法相似於寫直達快取策略(write-through cache policy),在回寫式快取策略中,寫入操作完成於在處理器110上運行的軟體被告知寫入已完成之前。像快取545一樣,除其他可能情況以外,寫入緩衝器550可使用例如DRAM、SRAM、MRAM或L1或L2快取結構等任何所期望記憶體結構來實施。
作為實行寫入操作的一部分,旁視擦除編碼邏輯可檢查完成寫入操作所需的資料中的任一資料當前是否位於快取545中。例如,當圖1所示處理器110向虛擬儲存裝置發送寫入請求時,擦除編碼方案可能需要讀取整個條帶以計算同位資訊或其他代碼資訊。如果此資料中的一些(或全部)資料駐留在快取545中,則可從快取545存取資料,而非通過從下伏物理儲存裝置讀取資料來存取資料。另外,快取策略可建議所要寫入的資料也應被快取在快取545中,以防資料可能在近期被再次請求。
儘管圖5將快取545及寫入緩衝器550示為單獨的元件,然而本發明概念的實施例可將所述兩者組合成單個元件(其可被簡單地稱為“快取”)。在本發明概念的此種實施例中,所述快取可包括指示其上所儲存的資料是“乾淨”還是“髒”的位。“乾淨”資料表示自其上次寫入到下伏物理儲存裝置以來僅被讀取但未被修改的資料;“髒”資料自其上次寫入到下伏物理儲存裝置以來已被修改。如果所述快取包括“髒”資料,則當根據快取策略將資料從快取移除時,旁視擦除編碼邏輯可能需要將“髒”資料寫回到下伏儲存裝置。另外,本發明概念的實施例可包括快取545、寫入緩衝器550,包括這兩者(單獨地或組合成單個元件)或者兩者都不包括。
如以上所論述,具有旁視擦除編碼邏輯的PCIe交換機125中的旁視擦除編碼邏輯可從下伏物理儲存裝置“創建”虛擬儲存裝置,且如果圖1所示處理器110獲得對圖3所示物理儲存裝
置130-1至130-6的直接存取,則此將成問題。因此,當圖1所示機器105最初進行引導(即,啟動或上電)並嘗試枚舉可存取的各種PCIe裝置時,具有旁視擦除編碼邏輯的PCIe交換機125可確定其要使用旁視擦除編碼邏輯及其所附接的儲存裝置。在此種情形中,具有旁視擦除編碼邏輯的PCIe交換機125應防止對具有旁視擦除編碼邏輯的PCIe交換機125下游的任何PCIe裝置進行枚舉。通過防止此種枚舉,具有旁視擦除編碼邏輯的PCIe交換機125可“創建”虛擬儲存裝置,而無需擔心圖1所示處理器110可能夠直接存取圖3所示儲存裝置130-1至130-6上的資料(此可能毀壞擦除編碼方案中所使用的資料)。但是如以下參考圖9至圖10所論述,可存在具有旁視擦除編碼邏輯的PCIe交換機125應允許對PCIe裝置進行下游枚舉的情境。
探測邏輯525也可將配置命令傳遞到PPU 520。這樣,探測邏輯525也可作為PCIe到PCIe堆疊來進行操作,以實現將PCIe交換機核心515與PPU 520連接的目的。
最後,探測邏輯525可從圖1所示處理器110接收擦除編碼啟用信號555(可能通過具有旁視擦除編碼邏輯的PCIe交換機125上的引腳)。擦除編碼啟用信號555可用來啟用具有旁視擦除編碼邏輯的PCIe交換機125中的擦除編碼邏輯。
圖6示出根據本發明概念另一實施例的具有透視擦除編碼邏輯的PCIe交換機的細節。通過比較圖5與圖6可看出,在圖5所示具有旁視擦除編碼邏輯的PCIe交換機125與圖6所示
具有透視擦除編碼邏輯的PCIe交換機605中,旁視擦除編碼邏輯與透視擦除編碼邏輯之間的主要不同在於擦除編碼邏輯所放置的地點。在圖5所示具有旁視擦除編碼邏輯的PCIe交換機125中,擦除編碼邏輯位於PCIe交換機的“旁側(side)”,而在圖6所示具有透視擦除編碼邏輯的PCIe交換機605中,擦除編碼邏輯與PCIe交換機“排成一行(inline)”。
與透視擦除編碼邏輯相比,使用旁視擦除編碼邏輯在技術上存在優點及缺點。圖5所示旁視擦除編碼邏輯是更複雜的實施方案,因為需要探測邏輯525來攔截和管理來自主機的資料的重新定向。相反,圖6所示透視擦除編碼邏輯更容易實施,因為主機與圖3所示儲存裝置130-1至130-6之間的所有資料均通過擦除編碼控制器530。另一方面,當擦除編碼邏輯被禁用時,包括旁視擦除編碼邏輯不會對PCIe交換機125的操作引入附加的潛伏時間。相反,圖6所示透視擦除編碼邏輯可充當PCIe端點。圖6所示透視擦除編碼邏輯可能在主機與圖3所示儲存裝置130-1至130-6之間緩衝資料,此可能增加通信的潛伏時間。在圖6所示透視擦除編碼邏輯中,擦除編碼控制器530還可包括例如幀緩衝器(Frame Buffer)、路由表(Route Table)、埠仲裁邏輯(Port Arbitration logic)及調度程式(Scheduler)(圖6中未示出)等元件:PCIe交換機核心515內所通常包括的元件。
另外,PCIe交換機通常對上游(到主機)業務量與下游(到儲存裝置及其他連接裝置)業務量使用相同數目的埠。例
如,如果PCIe交換機605包括總共96個埠,則通常48個用於上游業務量,而48個用於下游業務量。但是,在啟用圖6所示透視擦除編碼邏輯的情況下,擦除編碼控制器530可將所有下游裝置虛擬化。在此種情形中,與主機通信通常僅需要16個或可能32個上游埠。如果PCIe交換機605包括多於32個或64個埠的更多埠,則附加的埠可用於連接附加的下游裝置,附加的下游裝置可用於增加虛擬儲存裝置的容量。為此,圖6所示擦除編碼控制器530可使用不透明橋(non-transparent bridge,NTB)埠來與主機通信。
圖6示出包括透視擦除編碼邏輯的PCIe交換機605。但是本發明概念的實施例可將透視擦除編碼邏輯與PCIe交換機605分開。例如,透視擦除編碼邏輯可利用FPGA或ASIC實施為與PCIe交換機605分開的單獨組件。
但是儘管如圖5中所示的旁視擦除編碼邏輯與如圖6中所示的透視擦除編碼邏輯之間存在實施上和技術上的不同,但是在功能上兩種擦除編碼邏輯會實現相似的結果。因此,如圖5中所示的旁視擦除編碼邏輯與如圖6中所示的透視擦除編碼邏輯可視需要互換。本文件中對旁視擦除編碼邏輯的任何引用均旨在也囊括透視擦除編碼邏輯。
圖7至圖10示出使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的各種拓撲。但是不管使用中的拓撲如何,圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的操作是相
同的:既提供與各種附加儲存裝置的連接,又支援跨這些儲存裝置的擦除編碼。
圖7示出根據本發明概念一個實施例的使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的第一拓撲。在圖7中,示出具有旁視擦除編碼邏輯的PCIe交換機125,其可被實施為圖1所示機器105的單獨組件。也就是說,具有旁視擦除編碼邏輯的PCIe交換機125可與例如圖1所示處理器110或儲存裝置130等任何其他元件分開製造和銷售。
具有旁視擦除編碼邏輯的PCIe交換機125可連接到儲存裝置130。在圖7中,具有旁視擦除編碼邏輯的PCIe交換機125被示為僅連接到單個儲存裝置,所述單個儲存裝置可能不支援擦除編碼:擦除編碼需要至少兩個儲存裝置或儲存裝置的至少兩個部分來實行條帶化、分塊(chunking)、分組以及使用同位資訊或代碼資訊。但是即使是具有旁視擦除編碼邏輯的單個儲存裝置PCIe交換機125也可提供一些優點。例如,具有旁視擦除編碼邏輯的PCIe交換機125可支援與儲存裝置130一起使用改錯碼,或者如果儲存裝置130未在本機中提供這些服務,則將儲存在儲存裝置130上的資料加密。
儲存裝置130也可連接到FPGA 705。FPGA 705可支援加速。簡而言之,可能存在需要被處理的資料且接著被丟棄的情境。將所有此種資料載入到圖1所示處理器110中以實行處理可能是昂貴又耗時的:在更靠近資料的地點可更容易實行計算。
FPGA 705可支援在更靠近記憶體的地點實行此種計算,從而使得不再需要將資料載入到圖1所示處理器110中以實行計算:此概念被稱為“加速”。在2018年9月5日提出申請的美國專利申請第16/122,865號中更多地論述了基於FPGA的加速,所述美國專利申請主張2018年3月13日提出申請的美國臨時專利申請第62/642,568號、2018年3月9日提出申請的美國臨時專利申請第62/641,267號及2018年3月5日提出申請的美國臨時專利申請第62/638,904號(所述申請中的所有申請均併入本文供參考)的權益以及2018年9月6日提出申請的美國專利申請第16/124,179號、2018年9月6日提出申請的美國專利申請第16/124,182號及2018年9月6日提出申請的美國專利申請第16/124,182號(所述申請中的所有申請是2018年9月5日提出申請的美國專利申請16/122,865號的連續案(continuation)且併入本文供參考)的權益。由於加速的目的是在不將資料傳送到圖1所示處理器110的條件下處置資料,因此圖7示出更靠近儲存裝置130的FPGA 705。然而,注意,圖7中所示的特定佈置並非所需:FPGA 705可位於具有旁視擦除編碼邏輯的PCIe交換機125與儲存裝置130之間。
除數據加速以外,FPGA 705可提供其他功能來支援儲存裝置130。例如,FPGA 705可對儲存裝置130實施重復資料刪除功能,以嘗試減少相同資料儲存在儲存裝置130上的次數。FPGA 705可判斷特定資料是否在儲存裝置130上儲存多於一
次,在各種邏輯塊位址(或被主機用來識別所述資料的其他資訊)與資料在儲存裝置130上儲存的地點之間建立關聯,並刪除附加副本。
作為另外一種選擇,FPGA 705可在儲存裝置130上實施資料完整性功能,例如添加用於防止由於儲存裝置130的操作錯誤而導致的資料丟失的改錯碼或者使用迴圈冗餘校正(Cyclic Redundancy Correction,CRC)進行端到端保護的T10DIF(資料完整性欄位(Data Integrity Field))。通過此種方式,FPGA 705可能夠檢測何時存在對儲存裝置130上的資料或傳輸中的資料的錯誤寫入及讀取,並恢復原始資料。注意,FPGA 705可在主機未意識到正在提供資料完整性功能的條件下實施資料完整性功能:主機可能僅看到資料本身,而看不到改錯碼中的任一個。
作為另外一種選擇,FPGA 705可對儲存裝置130實施資料加密功能,以防止未授權方能夠存取儲存裝置130上的資料:在未提供適宜加密金鑰的條件下,從FPGA 705返回的資料對於請求者來說可為無意義的。主機可提供在寫入及讀取資料時所要使用的加密金鑰。或者,FPGA 705可自動實行資料加密及解密:FPGA 705可儲存加密金鑰(且甚至可代表主機生成加密金鑰)並基於誰請求資料來確定所要使用的適宜加密金鑰。
作為另外一種選擇,FPGA 705可對儲存裝置130實施資料壓縮功能,以減少在儲存裝置130上儲存資料所需的空間量。當向儲存裝置130寫入資料時,FPGA 705可實施以下功
能:將主機所提供的資料壓縮成更小的儲存量,接著儲存壓縮資料(以及當從儲存裝置130讀取資料時恢復原始資料所需的任何資訊)。當從儲存裝置130讀取資料時,FPGA 705可讀取壓縮資料(以及從壓縮資料恢復原始資料所需的任何資訊)並移除壓縮以恢復原始資料。
可使用重復資料刪除、資料完整性、資料加密及資料壓縮中的任何所期望實施方案。本發明概念的實施例不限於這些功能中的任何功能的特定實施方案。
FPGA 705還可視需要對儲存裝置130實施任何功能組合。例如,FPGA 705可實施資料壓縮與資料完整性二者(因為資料壓縮可能提高資料對錯誤的敏感性:儲存在儲存裝置130上的資料中的單個錯誤可能導致大量資料不可用)。或者FPGA 705可實施資料加密與資料壓縮二者(以保護資料,同時對資料使用盡可能少的記憶體)。FPGA 705也可提供兩個或更多個功能的其他組合。
就總操作來說,當實施這些功能中的任一個時,FPGA 705可從適宜的源讀取數據。注意,儘管用語“源”是單數名詞,然而在適宜時,本發明概念的實施例可從多個源(例如多個儲存裝置)讀取資料。FPGA 705可接著對資料實行適宜的操作:資料加速、資料集成(data integration)、資料加密和/或資料壓縮。FPGA 705可接著對操作的結果採取適宜的動作:例如,將結果發送到圖1所示主機105,或者將資料寫入到儲存裝置130。
儘管以上功能是參考圖7所示FPGA 705來闡述,然而本發明概念的實施例可在包括FPGA的系統中的任何地點包括這些功能。此外,本發明概念的實施例可讓FPGA 705從“遠端”儲存裝置存取資料。例如,暫且返回到圖3,並假設儲存裝置130-1包括與FPGA 705相似的FPGA,但是儲存裝置130-2缺少此種儲存裝置。儲存裝置130-1中所包括的FPGA可用於通過向儲存裝置130-2發送請求而將其功能應用於儲存裝置130-2。例如,如果儲存裝置130-1中的FPGA提供資料加速,則儲存裝置130-1中的FPGA可發送請求以從儲存裝置130-2讀取資料,實行適宜的加速,接著將結果發送到適宜的目的地(例如圖1所示主機105)。
在圖7中(及在以下圖8至圖10中所示的拓撲中),具有旁視擦除編碼邏輯的PCIe交換機125可附接到不符合擦除編碼資格的裝置。例如,具有旁視擦除編碼邏輯的PCIe交換機125可附接到具有內建擦除編碼功能的其他儲存裝置,或者例如圖7所示FPGA 705或圖形處理單元(GPU)等不是儲存裝置的裝置。所有此種裝置可被闡述為不符合擦除編碼資格(或者至少不符合由具有旁視擦除編碼邏輯的PCIe交換機125提供的擦除編碼資格)的裝置。
當具有旁視擦除編碼邏輯的PCIe交換機125連接到不符合擦除編碼資格的裝置時,系統具有可使用的各種替代方式。在本發明概念的一個實施例中,包括任何不符合擦除編碼資格的
裝置可能導致具有旁視擦除編碼邏輯的PCIe交換機125的旁視擦除編碼邏輯被禁用。因此,例如,如果具有旁視擦除編碼邏輯的PCIe交換機125要連接到圖7所示FPGA 705或GPU或具有本機擦除編碼邏輯的儲存裝置,則連接到具有旁視擦除編碼邏輯的PCIe交換機125的儲存裝置均不可與擦除編碼一起使用。注意,禁用具有旁視擦除編碼邏輯的PCIe交換機125的旁視擦除編碼邏輯的決定並不一定會轉換到相同主機殼或其他主機殼中的其他具有旁視擦除編碼邏輯的PCIe交換機。例如,圖3示出兩個具有旁視擦除編碼邏輯的PCIe交換機125及320,其中一個PCIe交換機可啟用旁視擦除編碼邏輯,而另一個PCIe交換機可禁用旁視擦除編碼邏輯。
本發明概念的另一個實施例可禁用不符合擦除編碼資格的裝置,將其視為好像其根本未連接到具有旁視擦除編碼邏輯的PCIe交換機125一樣。在本發明概念的此實施例中,具有旁視擦除編碼邏輯的PCIe交換機125可對儲存裝置130啟用旁視擦除編碼邏輯,且可禁用任何其他符合擦除編碼資格的儲存裝置,就好像其未連接到具有旁視擦除編碼邏輯的PCIe交換機125一樣。
在本發明概念的又一個實施例中,具有旁視擦除編碼邏輯的PCIe交換機125可對可被旁視擦除編碼邏輯覆蓋的儲存裝置啟用旁視擦除編碼邏輯,但是仍然能夠使不符合擦除編碼資格的其他裝置被存取。本發明概念的此實施例是最複雜的實施方
案:具有旁視擦除編碼邏輯的PCIe交換機125需要判斷哪些裝置符合擦除編碼資格、哪些不符合,接著分析業務量以判斷業務量的目的地是虛擬儲存裝置(在此種情形中,業務量被旁視擦除編碼邏輯攔截)還是並非虛擬儲存裝置(在此種情形中,業務量被遞送到其原始目的地)。
在本發明概念的其中機器105最終不提供所安裝裝置的全部功能的實施例(即本發明概念的其中由於存在不符合擦除編碼資格的裝置而禁用擦除編碼,或者此種裝置被具有旁視擦除編碼邏輯的PCIe交換機125禁用的實施例)中,機器105可將此事實通知給用戶。此通知可由圖1所示處理器110、圖3所示BMC 325或具有旁視擦除編碼邏輯的PCIe交換機125來提供。除告知用戶一些功能已被禁用以外,所述通知還可告知使用者如何重新配置機器105以允許添加的功能。例如,所述通知可建議不符合擦除編碼資格的裝置連接到圖3所示中間平面305中的特定槽位(可能是那些連接到具有旁視擦除編碼邏輯的PCIe交換機320的槽位)並建議符合擦除編碼資格的儲存裝置連接到其他槽位元(例如那些連接到具有旁視擦除編碼邏輯的PCIe交換機125的槽位)。通過此種方式,至少一些符合擦除編碼資格的儲存裝置可受益於擦除編碼方案,而不會阻擋對不符合擦除編碼資格的其他裝置的存取。
圖8示出根據本發明概念另一實施例的使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的第二拓撲。在圖8
中,具有旁視擦除編碼邏輯的PCIe交換機125可位於FPGA 705內:也就是說,FPGA 705還可實施具有旁視擦除編碼邏輯的PCIe交換機125。FPGA 705及具有旁視擦除編碼邏輯的PCIe交換機125可接著連接到儲存裝置130-1至130-4。儘管圖8示出FPGA 705及具有旁視擦除編碼邏輯的PCIe交換機125連接到四個儲存裝置130-1至130-4,然而本發明概念的實施例可包括任意數目的儲存裝置130-1至130-6。
通常,圖8中所示拓撲可在單個殼或殼體內實施且含有所示元件中的所有元件(SSD 130-1至130-4可為單獨的快閃記憶體,而非自容式SSD)。也就是說,圖8中所示的整個結構可作為單個單元出售,而非作為單獨的元件出售。但是本發明概念的實施例還可在一端包括連接到圖1所示機器105(可能連接到圖3所示中間平面305)的提升器卡(riser card)且在另一端具有用於連接到儲存裝置130-1至130-4的連接器(例如U.2、M.3或SFF-TA-1008連接器)。並且儘管圖8示出具有旁視擦除編碼邏輯的PCIe交換機125作為FPGA 705的一部分,然而具有旁視擦除編碼邏輯的PCIe交換機125也可實施為智能SSD的一部分。
圖9示出根據本發明概念又一個實施例的用於使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的第三拓撲。在圖9中,示出兩個具有旁視擦除編碼邏輯的PCIe交換機125及320,所述兩個PCIe交換機125與320之間連接多達24個儲存
裝置130-1至130-6。如以上參考圖3所述,每個具有旁視擦除編碼邏輯的PCIe交換機125及320可包括96個PCIe通道,在每個方向上使用四個PCIe通道來與儲存裝置130-1至130-6中的一個通信:每個具有旁視擦除編碼邏輯的PCIe交換機125及320可接著支援多達12個儲存裝置。為支援由多個具有旁視擦除編碼邏輯的PCIe交換機125及320所支援的跨儲存裝置的擦除編碼,可指定一個具有旁視擦除編碼邏輯的PCIe交換機負責跨所有裝置的擦除編碼,且可啟用旁視擦除編碼邏輯。具有旁視擦除編碼邏輯的另一個PCIe交換機320可純粹作為PCIe交換機進行操作,其中旁視擦除編碼邏輯被禁用。關於應選擇哪個PCIe交換機來處置擦除編碼的選擇可以以任何所期望方式來完成:例如,所述兩個PCIe交換機可在其之間就此進行協商,或者首先被枚舉的PCIe交換機可被指定用來處置擦除編碼。被選擇來處置擦除編碼的PCIe交換機可接著報告虛擬儲存裝置(跨越兩個PCIe交換機),而不處置擦除編碼的PCIe交換機可不報告下游裝置(以防止圖1所示處理器110嘗試存取作為擦除編碼方案的一部分的儲存裝置)。
注意,儘管具有旁視擦除編碼邏輯的PCIe交換機125與320可均位於同一主機殼中,然而具有旁視擦除編碼邏輯的PCIe交換機125與320可位於不同的主機殼中。也就是說,擦除編碼方案可跨越多個主機殼之間的儲存裝置。所需的只是各種主機殼中的PCIe交換機能夠彼此協商要成為擦除編碼方案一部分
的儲存裝置的位置。本發明概念的實施例也不限於兩個具有旁視擦除編碼邏輯的PCIe交換機125及320:擦除編碼方案中所包括的儲存裝置可連接到任何數目的具有旁視擦除編碼邏輯的PCIe交換機125及320。
主機LBA可以以任何所期望方式跨具有旁視擦除編碼邏輯的PCIe交換機125及320進行分割。例如,主機LBA中的最低有效位元(least significant bit)可用於識別具有旁視擦除編碼邏輯的哪個PCIe交換機125或320包括以此主機LBA儲存資料的儲存裝置。通過使用多於兩個具有旁視擦除編碼邏輯的PCIe交換機,可使用多個位來確定哪個具有旁視擦除編碼邏輯的PCIe交換機管理儲存資料的儲存裝置。一旦已識別出適宜的具有旁視擦除編碼邏輯的PCIe交換機(且圖5所示探測邏輯525已修改傳輸),傳輸便可被路由到適宜的具有旁視擦除編碼邏輯的PCIe交換機(假設傳輸的目的地不是與旁視擦除編碼邏輯被啟用的具有旁視擦除編碼邏輯的PCIe交換機連接的儲存裝置)。
在本發明概念的另一個實施例中,不再讓單個具有旁視擦除編碼邏輯的PCIe交換機負責將與兩個具有旁視擦除編碼邏輯的PCIe交換機連接的所有儲存裝置虛擬化,而是每個具有旁視擦除編碼邏輯的PCIe交換機均可創建單獨的虛擬儲存裝置(具有單獨的擦除編碼域)。通過此種方式,可為不同的客戶創建不同的、但容量較小的擦除編碼域。
圖9也可表示本發明概念的另一實施例。儘管圖9暗示
僅儲存裝置130-1至130-16連接到具有旁視擦除編碼邏輯的PCIe交換機125及320且所有儲存裝置130-1至130-6均可與擦除編碼方案一起使用,但是如以上所論述,本發明概念的實施例並非僅限於此:具有旁視擦除編碼邏輯的PCIe交換機125及320可具有不符合與其連接的擦除編碼資格的裝置。此種裝置可被分組在具有旁視擦除編碼邏輯的單個PCIe交換機下,符合擦除編碼資格的儲存裝置被分組在不同的具有旁視擦除編碼邏輯的PCIe交換機125下。通過此種方式,可實現圖1所示機器105的最佳功能,一個(或一些)具有旁視擦除編碼邏輯的PCIe交換機啟用旁視擦除編碼邏輯,而一個(或一些)具有旁視擦除編碼邏輯的PCIe交換機禁用旁視擦除編碼邏輯。
圖10示出根據本發明概念又一實施例的用於使用圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的第四拓撲。在圖10中,與圖9相比,具有旁視擦除編碼邏輯的PCIe交換機125、320及1005可構造成等級結構(hierarchy)。在等級結構的頂部,具有旁視擦除編碼邏輯的PCIe交換機125可管理等級結構中位於具有旁視擦除編碼邏輯的PCIe交換機125之下的所有儲存裝置的擦除編碼,且因此可啟用旁視擦除編碼邏輯。另一方面,具有旁視擦除編碼邏輯的PCIe交換機320及1005可禁用其旁視擦除編碼邏輯(因為其儲存裝置由具有旁視擦除編碼邏輯的PCIe交換機125的旁視擦除編碼邏輯管理)。
儘管圖10示出構造成兩層式等級結構(two-tier
hierarchy)的三個具有旁視擦除編碼邏輯的PCIe交換機125、320及1005,然而本發明概念的實施例在所包括的PCIe交換機的數目或其等級結構佈置方面不受限制。因此,本發明概念的實施例可支援以任何所期望等級結構進行佈置的任何數目的具有旁視擦除編碼邏輯的PCIe交換機。
以上參考圖1至圖10闡述的本發明概念的實施例關注單埠儲存裝置。但是本發明概念的實施例可擴展到雙埠儲存裝置,其中一個(或多個)儲存裝置與多個具有旁視擦除編碼邏輯的PCIe交換機通信。在本發明概念的此種實施例中,如果圖3所示具有旁視擦除編碼邏輯的PCIe交換機125不能夠與雙埠儲存裝置通信,則具有旁視擦除編碼邏輯的PCIe交換機125可向具有旁視擦除編碼邏輯的PCIe交換機320發送傳輸,以嘗試與儲存裝置通信。具有旁視擦除編碼邏輯的PCIe交換機320有效地充當橋,以使具有旁視擦除編碼邏輯的PCIe交換機125與儲存裝置通信。
本發明概念的實施例還可支援檢測並處置儲存裝置故障。例如,再次考慮圖4,並假設儲存裝置130-1出現故障。儲存裝置130-1可能由於任何數目的原因而出現故障:電湧(power surge)可能已損壞電子元件(electronics)、佈線(在儲存裝置130-1內部或儲存裝置130-1與具有旁視擦除編碼邏輯的PCIe交換機125之間的連接部中)可能已出現故障、儲存裝置130-1可能已檢測到太多錯誤而自己關機,或者儲存裝置130-1
可能由於其他原因而出現故障。儲存裝置130-1也可能已被用戶從其槽位中移除(可能是為以更新的、更可靠的或更大的儲存裝置對其進行替換)。無論是什麼原因,儲存裝置130-1均可能變得不可用。
具有旁視擦除編碼邏輯的PCIe交換機125可通過儲存裝置130-1的連接器上的存在引腳來檢測儲存裝置130-1的故障。如果儲存裝置130-1被從主機殼中移除,或者如果儲存裝置130-1已關機,則其可能不再通過連接器上的存在引腳來斷言其存在,此可能在具有旁視擦除編碼邏輯的PCIe交換機125中觸發中斷。作為另外一種選擇,具有旁視擦除編碼邏輯的PCIe交換機125(或圖3所示BMC 325)可向儲存裝置130-1發送偶然消息(occasional message),以檢查其是否仍然為現用(有時被稱為“心跳(heartbeat)”的過程):如果儲存裝置130-1未對此種消息作出回應,則具有旁視擦除編碼邏輯的PCIe交換機125或圖3所示BMC 325可斷定儲存裝置130-1已出現故障。
如果(且當)儲存裝置130-1出現故障,則具有旁視擦除編碼邏輯的PCIe交換機125可通過利用其他方式存取在正常情況下將從儲存裝置130-1請求的任何資料來管理所述情境。例如,如果存在儲存裝置130-1的鏡像(mirror),則具有旁視擦除編碼邏輯的PCIe交換機125可從儲存裝置130-1的鏡像請求資料。或者,具有旁視擦除編碼邏輯的PCIe交換機125可從陣列中的其他儲存裝置請求含有所期望資料的條帶的其餘部分,並使
用擦除編碼資訊來重構來自儲存裝置130-1的資料。可存在其他機制,通過這些機制,具有旁視擦除編碼邏輯的PCIe交換機125可存取儲存在故障儲存裝置130-1上的資料。
本發明概念的實施例還可支援檢測並處置新儲存裝置在陣列中的插入。如同檢測儲存裝置的故障一樣,具有旁視擦除編碼邏輯的PCIe交換機125(或圖3所示BMC 325)可通過偶然查驗裝置以查看連接有什麼或任何其他所期望機制、利用連接器上的存在引腳檢測新儲存裝置的插入(如同檢測故障儲存裝置一樣,使用存在引腳檢測新儲存裝置可能在具有旁視擦除編碼邏輯的PCIe交換機125中觸發中斷)。當檢測到新儲存裝置時,具有旁視擦除編碼邏輯的PCIe交換機125可將此新儲存裝置添加到陣列。將新儲存裝置添加到陣列未必涉及改變擦除編碼方案:此種改變可能需要改變儲存在儲存裝置上的所有資料。(例如,考慮從RAID 5改變為RAID 6:每個條帶現將需要兩個同位塊(其將需要在儲存裝置之間輪換),從而需要計算和移動大量資料。)但是將新儲存裝置添加到現有擦除編碼方案可能不需要到處移動大量資料。因此,儘管添加新儲存裝置可能不會提高陣列對儲存裝置故障的容忍度,然而添加新儲存裝置仍然可增加虛擬儲存裝置的容量。
如果陣列中已存在故障儲存裝置,則可利用新儲存裝置的插入來重建故障儲存裝置。圖5所示擦除編碼控制器530可計算儲存在故障儲存裝置上的資料,並將此資料儲存在替換儲存裝
置上的適宜塊位址中。例如,故障儲存裝置上的原始資料可根據其他儲存裝置上的資料(原始資料與同位或代碼資訊二者)來計算;儲存在故障儲存裝置上的同位或代碼資訊可根據其他儲存裝置上的原始資料來重新計算。(當然,如果故障儲存裝置存在鏡像,則圖5所示擦除編碼控制器530可簡單地指令將資料從鏡像複製到替換儲存裝置上。)
重建故障儲存裝置可能是耗時的過程。在本發明概念的一些實施例中,一旦安裝了替換儲存裝置,就可進行重建。在本發明概念的其他實施例中,就儲存裝置可在閒置時間週期中重建而言,圖5所示擦除編碼控制器530可在閒置時間週期中重建儲存裝置。然而,如果虛擬儲存裝置正忙,則圖5所示擦除編碼控制器530可推遲重建替換儲存裝置,直到出現閒置時間,且可基於來自圖1所示處理器110的請求,根據需要重構來自故障儲存裝置的資料。(當然,此種重建的資料可被寫入到替換儲存裝置,而無需等待完整的重建,從而使得稍後不再需要再次重新計算此資料。)
本發明概念的實施例還可支援儲存裝置的初始化。當將新儲存裝置添加到陣列(作為故障儲存裝置的替換儲存裝置,或者用以增加虛擬儲存裝置的容量)時,可將新儲存裝置初始化。初始化可包括使儲存裝置為擦除編碼方案做好準備。
新儲存裝置的初始化還可涉及從新儲存裝置中擦除現有資料。例如,考慮將特定儲存裝置租賃給客戶的情境。此客戶的
租賃已結束,且儲存裝置可重新用於新客戶。但是儲存裝置上可能仍然儲存有來自原始客戶的資料。為避免以後的客戶獲得對早前客戶資料的存取,可使用任何所期望機制擦除儲存裝置上的資料。例如,儲存關於資料儲存地點的資訊的表可被擦除。或者資料本身可被以新資料重寫(以防止稍後嘗試恢復任何可能已被刪除的資訊):新資料可使用設計用於說明確保原始資料可不被恢復的模式。例如,美國國防部(U.S.Department of Defense,DOD)已發佈如何擦除數據以防止恢復的標準:這些標準可用於擦除儲存裝置上的舊資料,然後再將儲存裝置重新用於新用戶端。
初始化可不限於當將新儲存裝置熱添加到現有陣列時進行。當儲存裝置或具有旁視擦除編碼邏輯的PCIe交換機125或圖1所示機器105作為整體而一起最初上電時,也可進行初始化。
圖11A至圖11D示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機125的示例過程的流程圖,以支持圖4所示擦除編碼方案405、410及415。在圖11A中,在方塊1103處,可將圖3所示具有旁視擦除編碼邏輯的PCIe交換機125初始化(可能通過圖3所示BMC 325或圖1所示處理器110)。在方塊1106處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可接收傳輸。此傳輸可為來自圖1所示處理器110的讀取或寫入請求、來自圖1所示處理器110或圖3所
示BMC 325的控制傳輸或者由圖3所示儲存裝置130-1至130-6回應於來自圖1所示處理器110的讀取或寫入請求而發送的傳輸。
在方塊1109處,圖5所示探測邏輯525可判斷傳輸是否是來自圖1所示處理器110的控制傳輸。如果是,則在方塊1112處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可將控制傳輸遞送到圖5所示PPU 520,在此之後,處理結束。
如果傳輸不是來自圖1所示處理器110的控制傳輸,則在方塊1115(圖11B)處,圖5所示探測邏輯525可判斷傳輸是否是來自主機的讀取或寫入請求。如果傳輸不是來自主機的讀取或寫入請求,則在方塊1118處,圖5所示探測邏輯525可在傳輸中以適宜於主機的主機LBA替換裝置LBA。圖5所示探測邏輯525還可修改傳輸,以暗示傳輸來自虛擬儲存裝置,而不是儲存實際資料的物理儲存裝置。在方塊1121處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可將傳輸遞送到圖1所示處理器110,在此之後,處理結束。
另一方面,如果傳輸是來自圖1所示處理器110的讀取或寫入請求,則在方塊1124處,圖5所示探測邏輯525可判斷所討論的資料在圖5所示快取545或圖5所示寫入緩衝器550中是否可用。如果資料在圖5所示快取545或圖5所示寫入緩衝器550中可用,則在方塊1127(圖11C)處,圖5所示擦除編碼控制器530可從適宜的位置存取資料。
如果資料在圖5所示快取545或圖5所示寫入緩衝器550中不可用,則在方塊1130處,圖5所示探測邏輯525可修改傳輸,以便以儲存裝置應從其讀取資料的裝置LBA替換由主機所提供的主機LBA。圖5所示探測邏輯525也可修改傳輸,以識別接收傳輸的適宜的儲存裝置。接著,在方塊1133處,探測邏輯525可將傳輸遞送到適宜的儲存裝置。
無論所討論的資料可從快取存取還是從儲存裝置讀取,此時,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125均具有所需資料。此時,處理可能會發散(diverge)。如果傳輸是來自圖1所示處理器110的讀取請求,則在方塊1136處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可將資料返回到圖1所示處理器110。如方塊1139中所示,圖5所示探測邏輯525也可將資料儲存在圖5所示快取545中;方塊1139是可選的,且可如由虛線1142所示被省略。此時,處理結束。
另一方面,如果來自圖1所示處理器110的傳輸是寫入請求,則在方塊1145處,圖5所示擦除編碼控制器530可讀取跨圖3所示儲存裝置130-1至130-6的條帶。方塊1145實際上是對方塊1127、1130及1133的重述,且可能並非所需;圖11C中包括方塊1145是為了強調將資料寫入到虛擬儲存裝置可能涉及從跨儲存裝置130-1至130-6的整個條帶讀取資料。在方塊1148處,圖5所示擦除編碼控制器530可將從圖1所示處理器110接收的資料與從快取或從儲存裝置130-1至130-6存取的資料條帶
合併。
此時,依據圖3所示具有旁視擦除編碼邏輯的PCIe交換機125是否包括圖5所示寫入緩衝器550,處理可能再次發叉(diverge)。如果圖3所示具有旁視擦除編碼邏輯的PCIe交換機125包括圖5所示寫入緩衝器550,則在方塊1151(圖11D)處,圖5所示擦除編碼控制器530可將合併的資料條帶寫入到圖5所示寫入緩衝器550(將此資料標記為髒且需要清除到儲存裝置130-1至130-6)。接著,在方塊1154處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可將寫入請求完成報告給圖1所示處理器110。注意,如果圖5所示寫入緩衝器550使用回寫式快取策略,則方塊1154是適宜的;如果圖5所示寫入緩衝器550使用寫直達快取策略,則方塊1154可如由虛線1157所示被省略。
最終,由於圖3所示具有旁視擦除編碼邏輯的PCIe交換機125不包括圖5所示寫入緩衝器550,或者由於圖5所示寫入緩衝器550中的資料將被清除到圖3所示儲存裝置130-1至130-6,因此在方塊1160處,圖5所示擦除編碼控制器530可將更新的條帶寫回到圖3所示儲存裝置130-1至130-6。接著,在方塊1163處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可將寫入請求完成報告給圖1所示處理器110。注意,如果合併的資料已儲存在圖5所示寫入緩衝器550中且圖5所示寫入緩衝器550使用回寫式快取策略,則方塊1163不是必需的:圖3
所示具有旁視擦除編碼邏輯的PCIe交換機125已報告寫入請求完成(在方塊1154處)。在此種情境中,方塊1163可如由虛線1166所示被省略。此時,處理結束。
圖12A至圖12B示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機125實行初始化的示例性過程的流程圖。在圖12A中,在方塊1205處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125判斷連接到圖3所示具有旁視擦除編碼邏輯的PCIe交換機125的裝置是否僅是儲存裝置且可具有由圖3所示具有旁視擦除編碼邏輯的PCIe交換機125管理的擦除編碼。如果有不是儲存裝置的裝置或者是可能不具有由圖3所示具有旁視擦除編碼邏輯的PCIe交換機125管理的擦除編碼的儲存裝置的裝置連接到圖3所示具有旁視擦除編碼邏輯的PCIe交換機125,則在本發明概念的一些實施例中,在方塊1210處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可禁用旁視擦除編碼邏輯,在此之後,處理結束。
但是在本發明概念的其他實施例中,即使有不符合擦除編碼資格的裝置連接到圖3所示具有旁視擦除編碼邏輯的PCIe交換機125,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125也可管理擦除編碼。在本發明概念的這些實施例中,或者如果只有符合擦除編碼資格的儲存裝置連接到圖3所示具有旁視擦除編碼邏輯的PCIe交換機125,則在方塊1215處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可啟用旁視擦除編碼邏輯。
接著,在方塊1220(圖12B)處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可被配置為使用擦除編碼方案(可能通過圖3所示BMC 325或圖1所示處理器110)。
在方塊1225處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可禁用不符合擦除編碼資格的裝置。注意,如由虛線1230所示,方塊1225是可選的:可能沒有任何不符合擦除編碼資格的裝置連接到圖3所示具有旁視擦除編碼邏輯的PCIe交換機125,或者儘管對其他裝置使用擦除編碼,然而圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可允許圖1所示處理器110存取那些不符合擦除編碼資格的裝置。
在方塊1235處,對於任何經歷擦除編碼的裝置,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可終止圖3所示具有旁視擦除編碼邏輯的PCIe交換機125下游的枚舉。在方塊1240處,基於圖3所示儲存裝置130-1至130-6經歷擦除編碼,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125可將虛擬儲存裝置報告給圖1所示處理器110。圖3所示具有旁視擦除編碼邏輯的PCIe交換機125也可將所可能枚舉的任何其他PCIe裝置報告給圖1所示處理器110。此時,處理結束。
圖13示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機125將新儲存裝置併入圖4所示擦除編碼方案405、410及415中的示例性過程的流程圖。在圖13中,在方塊1305處,圖3所示具有旁視擦除編碼邏輯的PCIe交
換機125(或圖3所示BMC 325)可檢查新儲存裝置。如果檢測到新儲存裝置,則在方塊1310處,圖5所示擦除編碼控制器530可將新儲存裝置添加到虛擬儲存裝置後面的陣列。最後,在方塊1315處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125(或圖3所示BMC 325,或圖1所示處理器110)可將新儲存裝置初始化。此時,處理可結束,或者可如由虛線1320所示返回到方塊1305,以檢查附加的新儲存裝置。
圖14示出根據本發明概念實施例的圖1所示具有旁視擦除編碼邏輯的PCIe交換機125處置故障儲存裝置的示例性過程的流程圖。在圖14中,在方塊1405處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125(或圖3所示BMC 325)可檢查故障的(或移除的)儲存裝置。如果檢測到故障儲存裝置,則在方塊1410處,當本將從故障儲存裝置存取資料的讀取請求抵達時,圖5所示擦除編碼控制器530可實行對已儲存在故障儲存裝置上的資料的擦除編碼恢復。此種擦除編碼恢復可涉及從包括來自其他儲存裝置的所請求資料的條帶讀取資料並根據條帶中的其餘資料計算所請求資料。
在方塊1415處,圖3所示具有旁視擦除編碼邏輯的PCIe交換機125(或圖3所示BMC 325)可判斷替換儲存裝置是否已被添加到虛擬儲存裝置後面的陣列。如果儲存裝置已被添加到虛擬儲存裝置後面的陣列,則在方塊1420處,圖5所示擦除編碼控制器530可使用替換儲存裝置重建故障儲存裝置。此時,
處理可結束,或者可如由虛線1425所示返回到方塊1405,以檢查附加的新儲存裝置。
在圖11A至圖14中,示出本發明概念的一些實施例。但是所屬領域中的技術人員將認識到,通過改變方塊的次序、通過省略方塊或者通過包括圖式中未示出的環節,也可能實現本發明概念的其他實施例。無論是否明確闡述,流程圖的所有此種變型均被視為本發明概念的實施例。
與現有技術相比,本發明概念的實施例提供技術優點。使用具有旁視擦除編碼邏輯的PCIe交換機會使擦除編碼移動得更靠近儲存裝置,此會減少到處移動資料所需的時間。將擦除編碼從處理器中移出會減少處理器上的負載,從而允許處理器為應用執行更多指令。通過使用可配置的擦除編碼控制器,可使用任何所期望的擦除編碼方案,而非由硬體和軟體擦除編碼供應商所支援的有限的幾組方案。通過將擦除編碼控制器與PCIe交換機一起放置,使得不再需要昂貴的RAID外掛程式卡,且可使用甚至跨越多個主機殼的更大的陣列。
以下論述旨在提供對可在其中實施本發明概念某些方面的合適的一個或多個機器的簡要大致說明。所述一個或多個機器可至少部分地通過來自傳統輸入裝置(例如鍵盤、滑鼠等)的輸入來控制以及通過從另一機器接收的指示、與虛擬實境(virtual reality,VR)環境的交互、生物測定回饋或其他輸入信號來控制。本文中所使用的用語“機器”旨在廣泛地囊括單個機器、虛擬
機器或者一起進行操作的以通信方式耦合的機器、虛擬機器或裝置構成的系統。示例性機器包括例如個人電腦、工作站、伺服器、可攜式電腦、手持裝置、電話、平板(tablet)等計算裝置以及例如私人或公共運輸工具(例如汽車、火車、計程車等)等運輸裝置。
所述一個或多個機器可包括嵌入式控制器,例如可程式設計邏輯裝置或陣列或者不可程式設計邏輯裝置或陣列、應用專用積體電路(ASIC)、嵌入式電腦、智慧卡等。所述一個或多個機器可利用與一個或多個遠端機器的一個或多個連接(例如通過網路介面、數據機或其他通信耦合方式)。機器可通過例如內聯網(intranet)、互聯網、局域網、廣域網路等物理網路和/或邏輯網路進行互連。所屬領域中的技術人員將理解,網路通信可利用各種有線和/或無線短程或遠端載波及協議,包括射頻(radio frequency,RF)、衛星、微波、電氣和電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍牙、光學器件、紅外器件、纜線、鐳射等。
本發明概念的實施例可參考或結合包括功能、過程、資料結構、應用程式等的相關聯資料來闡述,所述相關聯資料當被機器存取時會使機器實行任務或定義抽象資料類型或低層級硬體上下文。相關聯資料可儲存在例如揮發性記憶體和/或非揮發性記憶體(例如,RAM、ROM等)中或者儲存在包括硬碟驅動器、軟碟、光學記憶體、磁帶、快閃記憶體、儲存條(memory
stick)、數位視訊磁片(digital video disk)、生物記憶體等在內的其它儲存裝置及其相關聯儲存介質中。相關聯資料可以以分包(packet)、串列資料、並行資料、傳播信號等形式通過包括物理網路和/或邏輯網路在內的傳輸環境遞送,且可以以壓縮或加密格式使用。相關聯資料可在分散式環境(distributed environment)中使用,且在本地和/或遠端存放以供機器存取。
本發明概念的實施例可包括有形非暫時性機器可讀介質,所述有形非暫時性機器可讀介質包括可由一個或多個處理器執行的指令,所述指令包括用於實行本文中所述本發明概念的要素的指令。
上述方法的各種操作可通過能夠實行所述操作的任何適合的工具(例如各種硬體和/或軟體元件、電路和/或模組)來實行。所述軟體可包括用於實施邏輯功能的可執行指令的有序列表,且可實施在任何“處理器可讀介質”中以供指令執行系統、設備或裝置(例如單核心或多核心處理器或者含處理器的系統)使用或者與指令執行系統、設備或裝置結合使用。
結合本文中所公開的實施例闡述的方法或演算法及功能的方塊或步驟可直接實施在硬體中、由處理器執行的軟體模組中或所述兩者的組合中。如果實施在軟體中,則所述功能可作為一個或多個指令或代碼儲存在有形非暫時性電腦可讀介質上或通過有形非暫時性電腦可讀介質進行傳輸。軟體模組可駐留在隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電可程
式設計唯讀記憶體(EPROM)、電可擦除可程式設計唯讀記憶體(EEPROM)、暫存器、硬碟、抽取式磁碟、光碟唯讀記憶體(CD ROM)或所述領域中已知的任何其他形式的儲存介質中。
鑒於已參考所說明實施例闡述並說明了本發明概念的原理,將認識到,在不背離此種原理的條件下,所說明實施例可在佈置及細節上進行修改,且可以以任何所期望方式進行組合。並且,儘管前面的論述關注特定實施例,然而也可設想其他配置。特別地,即使本文中使用例如“根據本發明概念的實施例”等表達,這些短語也意在大致提及實施例的可能性,而非旨在將本發明概念限制於特定的實施例配置。本文中所使用的這些用語可提及可組合成其他實施例的相同實施例或不同實施例。
前述說明性實施例不應被解釋為限制本發明的發明概念。儘管已闡述幾個實施例,然而所述領域中的技術人員將容易理解,在實質上不背離本公開的新穎教示內容及優點的條件下,能夠對這些實施例進行許多修改。因此,所有此種修改均旨在包括如在申請專利範圍書中所定義的本發明概念的範圍內。
本發明概念的實施例可延伸到以下聲明,但不限於此:
聲明1. 本發明概念的實施例包括一種具有擦除編碼邏輯的周邊元件連接快速(PCIe)交換機,具有擦除編碼邏輯的周邊元件連接快速(PCIe)交換機包括:外部連接器,能夠使PCIe交換機與處理器通信;至少一個連接器,能夠使PCIe交換機與至少一個儲存
裝置通信;功率處理單元(PPU),處置PCIe交換機的配置;擦除編碼控制器,包括用於將擦除編碼方案應用於儲存在所述至少一個儲存裝置上的資料的電路系統;以及探測邏輯,包括用於攔截在PCIe交換機處接收的資料傳輸並回應於擦除編碼方案修改資料傳輸的電路系統。
聲明2. 本發明概念的實施例包括根據聲明1的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼邏輯包括旁視擦除編碼邏輯及透視擦除編碼邏輯中的至少一個。
聲明3. 本發明概念的實施例包括根據聲明1的具有擦除編碼邏輯的PCIe交換機,其中所述至少一個儲存裝置包括至少一個非揮發性儲存快速(NVMe)固態驅動器(SSD)。
聲明4. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中探測邏輯能夠操作以攔截在PCIe交換機處接收的控制傳輸,並將控制傳輸轉發到PPU。
聲明5. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中探測邏輯能夠操作以攔截在PCIe交換機處從主機接收的資料傳輸,並在資料傳輸中以由所述至少一個NVMe SSD所使用的裝置LBA替換主機所使用的主機邏輯塊位址(LBA)。
聲明6. 本發明概念的實施例包括根據聲明5的具有擦除編碼邏輯的PCIe交換機,其中探測邏輯進一步能夠操作以將
資料傳輸引導到所述至少一個NVMe SSD。
聲明7. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中探測邏輯能夠操作以攔截在PCIe交換機處從所述至少一個NVMe SSD中的一個NVMe SSD接收的資料傳輸,並在資料傳輸中以由主機所使用的主機LBA替換由所述至少一個NVMe SSD中的所述一個NVMe SSD所使用的裝置LBA。
聲明8. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,具有擦除編碼邏輯的PCIe交換機進一步包括快取。
聲明9. 本發明概念的實施例包括根據聲明8的具有擦除編碼邏輯的PCIe交換機,其中探測邏輯能夠操作以至少部分基於快取中存在來自主機的資料傳輸中所請求的資料而返回對資料傳輸的回應。
聲明10. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中:PCIe交換機位於主機殼中;並且主機殼包括由擦除編碼控制器用作外部快取的記憶體。
聲明11. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,具有擦除編碼邏輯的PCIe交換機進一步包括寫入緩衝器。
聲明12. 本發明概念的實施例包括根據聲明11的具有
擦除編碼邏輯的PCIe交換機,其中:資料傳輸包括來自主機的寫入操作;並且擦除編碼控制器能夠操作以在向主機發送對資料傳輸的回應之後完成寫入操作。
聲明13. 本發明概念的實施例包括根據聲明11的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器能夠操作以將寫入操作中的資料儲存在寫入緩衝器中。
聲明14. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以至少部分基於所述至少一個NVMe SSD中的所有NVMe SSD可與擦除編碼控制器一起使用而啟用擦除編碼控制器及探測邏輯。
聲明15. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以至少部分地基於所述至少一個NVMe SSD包括內建擦除編碼功能而禁用擦除編碼控制器及探測邏輯。
聲明16. 本發明概念的實施例包括根據聲明15的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以至少部分地基於所述至少一個NVMe SSD包括內建擦除編碼功能而將擦除編碼控制器及探測邏輯被禁用告知給用戶。
聲明17. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以至少部分地基於至少一個非儲存裝置使用所述至少一個連接器連接到
PCIe交換機而禁用擦除編碼控制器及探測邏輯。
聲明18. 本發明概念的實施例包括根據聲明17的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以至少部分地基於所述至少一個非儲存裝置使用所述至少一個連接器連接到PCIe交換機而將擦除編碼控制器及探測邏輯被禁用告知給用戶。
聲明19. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以與所述至少一個NVMe SSD一起啟用擦除編碼控制器及探測邏輯,並阻止對使用所述至少一個連接器連接到PCIe交換機的非儲存裝置的存取。
聲明20. 本發明概念的實施例包括根據聲明19的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以將對連接到PCIe交換機的非儲存裝置的存取被阻止告知給用戶。
聲明21. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以使用擦除編碼控制器及探測邏輯來管理連接到第二PCIe交換機的至少一個附加NVMe SSD上的擦除編碼方案。
聲明22. 本發明概念的實施例包括根據聲明21的具有擦除編碼邏輯的PCIe交換機,其中第二PCIe交換機能夠操作以禁用第二PCIe交換機中的第二擦除編碼控制器及第二探測邏輯。
聲明23. 本發明概念的實施例包括根據聲明22的具有擦除編碼邏輯的PCIe交換機,其中:PCIe交換機位於第一主機殼中;並且第二PCIe交換機位於第二主機殼中。
聲明24. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機使用現場可程式設計閘陣列(FPGA)來實施。
聲明25. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中:所述至少一個NVMe SSD包括至少兩個NVMe SSD;並且PCIe交換機與所述至少兩個NVMe SSD位於共用殼體內部。
聲明26. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機與所述至少一個NVMe SSD位於單獨的殼體中。
聲明27. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中:PCIe交換機能夠操作以檢測所述至少一個NVMe SSD的故障NVMe SSD;並且擦除編碼控制器能夠操作以處置資料傳輸,以應對故障NVMe SSD。
聲明28. 本發明概念的實施例包括根據聲明27的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器能夠操作以實行對儲存在故障NVMe SSD上的資料的擦除編碼恢復。
聲明29. 本發明概念的實施例包括根據聲明28的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器能夠操作以為故障NVMe SSD重建替換NVMe SSD。
聲明30. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中:PCIe交換機能夠操作以檢測新NVMe SSD;並且擦除編碼控制器能夠操作以使用新NVMe SSD作為擦除編碼方案的一部分。
聲明31. 本發明概念的實施例包括根據聲明30的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器能夠操作以使用新NVMe SSD實行容量增加。
聲明32. 本發明概念的實施例包括根據聲明30的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以檢測連接到所述至少一個連接器中的一個連接器的新NVMe SSD。
聲明33. 本發明概念的實施例包括根據聲明30的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以通過來自第二PCIe交換機的消息檢測新NVMe SSD。
聲明34. 本發明概念的實施例包括根據聲明33的具有擦除編碼邏輯的PCIe交換機,其中新NVMe SSD連接到第二
PCIe交換機上的第二連接器。
聲明35. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中所述至少一個連接器包括用於檢測故障NVMe SSD與新NVMe SSD二者的存在引腳。
聲明36. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以將自身作為單個裝置呈現給主機,並防止對所述至少一個NVMe SSD的下游PCIe匯流排枚舉。
聲明37. 本發明概念的實施例包括根據聲明36的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機進一步能夠操作以防止對PCIe交換機下游的第二PCIe交換機的下游PCIe匯流排枚舉。
聲明38. 本發明概念的實施例包括根據聲明36的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機能夠操作以將所述至少一個NVMe SSD虛擬化。
聲明39. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器能夠操作以將連接到所述至少一個連接器中的一個連接器的新NVMe SSD初始化。
聲明40. 本發明概念的實施例包括根據聲明39的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器能夠操作以在熱插拔事件(hot insertion event)之後將新NVMe SSD初始
化。
聲明41. 本發明概念的實施例包括根據聲明39的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器進一步能夠操作以在啟動時將所述至少一個NVMe SSD初始化。
聲明42. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中PCIe交換機是包括基板管理控制器(BMC)的系統的一部分,基板管理控制器能夠操作以將連接到所述至少一個連接器中的一個連接器的新NVMe SSD初始化。
聲明43. 本發明概念的實施例包括根據聲明42的具有擦除編碼邏輯的PCIe交換機,其中BMC能夠操作以在啟動時將所述至少一個NVMe SSD初始化。
聲明44. 本發明概念的實施例包括根據聲明3的具有擦除編碼邏輯的PCIe交換機,其中擦除編碼控制器包括用於跨所述至少一個NVMe SSD將資料條帶化的條帶管理器。
聲明45. 本發明概念的實施例包括一種方法,所述方法包括:在具有擦除編碼邏輯的周邊元件連接快速(PCIe)交換機處接收傳輸;使用擦除編碼邏輯中的探測邏輯處理傳輸;以及通過PCIe交換機將傳輸遞送到其目的地。
聲明46. 本發明概念的實施例包括根據聲明45的方
法,其中擦除編碼邏輯包括旁視擦除編碼邏輯及透視擦除編碼邏輯中的至少一個。
聲明47. 本發明概念的實施例包括根據聲明45的方法,其中:使用擦除編碼邏輯中的探測邏輯處理傳輸包括由探測邏輯確定傳輸包括控制傳輸;並且通過PCIe交換機將傳輸遞送到其目的地包括將傳輸遞送到功率處理單元(PPU)。
聲明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)交換機處接收傳輸包括從NVMe SSD接收回應;使用擦除編碼邏輯中的探測邏輯處理傳輸包括在回應中以主機LBA替換裝置LBA;並且通過PCIe交換機將傳輸遞送到其目的地包括將回應遞送到主機。
聲明60. 本發明概念的實施例包括根據聲明59的方法,其中使用擦除編碼邏輯中的探測邏輯處理傳輸進一步包括以虛擬儲存裝置的識別字(identifier)替換NVMe SSD的識別字。
聲明61. 本發明概念的實施例包括根據聲明45的方法,其中通過PCIe交換機將傳輸遞送到其目的地包括將傳輸遞送到NVMe SSD所連接到的第二PCIe交換機,NVMe SSD是目的地。
聲明62. 本發明概念的實施例包括根據聲明61的方法,其中PCIe交換機位於第一主機殼中,且第二PCIe交換機位於第二主機殼中。
聲明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的方法,所述方法進一步包括:檢測到只有不具有擦除編碼功能的NVMe SSD連接到PCIe交換機;以及啟用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的物品,其中擦除編碼邏輯包括旁視擦除編碼邏輯及透視擦除編碼邏輯中的至少一個。
聲明79. 本發明概念的實施例包括根據聲明77的物品,其中:使用擦除編碼邏輯中的探測邏輯處理傳輸包括由探測邏輯確定傳輸包括控制傳輸;並且
通過PCIe交換機將傳輸遞送到其目的地包括將傳輸遞送到功率處理單元(PPU)。
聲明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)交換
機處接收傳輸包括從NVMe SSD接收回應;使用擦除編碼邏輯中的探測邏輯處理傳輸包括在回應中以主機LBA替換裝置LBA;並且通過PCIe交換機將傳輸遞送到其目的地包括將回應遞送到主機。
聲明92. 本發明概念的實施例包括根據聲明91的物品,其中使用擦除編碼邏輯中的探測邏輯處理傳輸進一步包括以虛擬儲存裝置的識別字替換NVMe SSD的識別字。
聲明93. 本發明概念的實施例包括根據聲明77的物品,其中通過PCIe交換機將傳輸遞送到其目的地包括將傳輸遞送到NVMe SSD所連接到的第二PCIe交換機,NVMe SSD是目的地。
聲明94. 本發明概念的實施例包括根據聲明93的物品,其中PCIe交換機位於第一主機殼中,且第二PCIe交換機位於第二主機殼中。
聲明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的物品,非暫時性儲存介質上儲存有進一步的指令,所述指令當由機器執行時使得:檢測到只有不具有擦除編碼功能的NVMe SSD連接到PCIe交換機;並且啟用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);現場可程式設計閘陣列(FPGA),所述FPGA實施支持NVMe SSD的一個或多個功能,所述一個或多個功能包括資料加速、重復資料刪除、資料完整性、資料加密及資料壓縮中的至少一個;以及
周邊元件連接快速(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的系統,其中擦除編碼邏輯包括旁視擦除編碼邏輯及透視擦除編碼邏輯中的至少一個。
聲明116. 本發明概念的實施例包括根據聲明114的系
統,其中擦除編碼邏輯能夠操作以至少部分地基於快取中存在來自主機的讀取請求中所請求的資料而返回對所述讀取請求的回應。
聲明117. 本發明概念的實施例包括根據聲明116的系統,其中擦除編碼邏輯進一步包括快取。
聲明118. 本發明概念的實施例包括根據聲明116的系統,其中:PCIe交換機位於主機殼中;並且主機殼包括由擦除編碼邏輯用作快取的記憶體。
聲明119. 本發明概念的實施例包括根據聲明114的系統,其中擦除編碼邏輯能夠操作以在完成寫入請求之前向主機返回對寫入請求的回應。
聲明120. 本發明概念的實施例包括根據聲明119的系統,其中:PCIe交換機進一步包括寫入緩衝器;並且擦除編碼控制器能夠操作以將寫入請求中的資料儲存在寫入緩衝器中。
聲明121. 本發明概念的實施例包括根據聲明114的系統,其中擦除編碼邏輯包括旁視擦除編碼邏輯,旁視擦除編碼邏輯包括探測邏輯。
聲明122. 本發明概念的實施例包括根據聲明114的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處接收的
控制傳輸,並將控制傳輸轉發到功率處理單元(PPU)。
聲明123. 本發明概念的實施例包括根據聲明114的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處從主機接收的資料傳輸,並在資料傳輸中以由NVMe SSD所使用的裝置邏輯塊位址(LBA)替換由主機所使用的主機LBA。
聲明124. 本發明概念的實施例包括根據聲明123的系統,其中擦除編碼邏輯進一步能夠操作以將資料傳輸引導到NVMe SSD。
聲明125. 本發明概念的實施例包括根據聲明114的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處從NVMe SSD接收的資料傳輸,並在資料傳輸中以由主機所使用的主機LBA替換由NVMe SSD所使用的裝置LBA。
聲明126. 本發明概念的實施例包括根據聲明114的系統,其中擦除編碼邏輯定義跨越NVMe SSD及第二NVMe SSD的虛擬儲存裝置。
聲明127. 本發明概念的實施例包括根據聲明114的系統,其中PCIe交換機能夠操作以至少部分地基於NVMe SSD能夠與擦除編碼邏輯一起使用而啟用擦除編碼邏輯。
聲明128. 本發明概念的實施例包括根據聲明114的系統,所述系統進一步包括連接到具有擦除編碼邏輯的PCIe交換機的第二裝置。
聲明129. 本發明概念的實施例包括根據聲明128的系
統,其中第二裝置包括儲存裝置、具有現場可程式設計閘陣列(FPGA)的SSD及圖形處理單元(GPU)中的至少一個。
聲明130. 本發明概念的實施例包括根據聲明128的系統,其中:第二裝置不能夠與擦除編碼邏輯一起使用;並且PCIe交換機能夠操作以至少部分地基於第二裝置不能夠與擦除編碼邏輯一起使用而禁用擦除編碼邏輯。
聲明131. 本發明概念的實施例包括根據聲明128的系統,其中:第二裝置不能夠與擦除編碼邏輯一起使用;並且PCIe交換機能夠操作以至少部分地基於NVMe SSD能夠與擦除編碼邏輯一起使用而啟用擦除編碼邏輯,並在不使用擦除編碼邏輯的條件下啟用對第二裝置的存取。
聲明132. 本發明概念的實施例包括根據聲明128的系統,其中:第二裝置不能夠與擦除編碼邏輯一起使用;並且PCIe交換機能夠操作以至少部分地基於NVMe SSD能夠與擦除編碼邏輯一起使用而啟用擦除編碼邏輯,並禁用對第二裝置的存取。
聲明133. 本發明概念的實施例包括一種系統,所述系統包括:非揮發性儲存快速(NVMe)固態驅動器(SSD);以及
現場可程式設計閘陣列(FPGA),所述FPGA包括第一FPGA部分及第二FPGA部分,第一FPGA部分實施支援NVMe SSD的一個或多個功能,所述一個或多個功能包括資料加速、重復資料刪除、資料完整性、資料加密及資料壓縮中的至少一個,且第二FPGA部分實施周邊元件連接快速(PCIe)交換機,其中PCIe交換機與FPGA及NVMe SSD通信,且其中FPGA及NVMe SSD位於共用殼體內部。
聲明134. 本發明概念的實施例包括根據聲明133的系統,其中PCIe交換機包括擦除編碼邏輯,擦除編碼邏輯包括擦除編碼控制器。
聲明135. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯定義跨越NVMe SSD的至少兩個部分的虛擬儲存裝置。
聲明136. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯定義跨越NVMe SSD及第二NVMe SSD的虛擬儲存裝置。
聲明137. 本發明概念的實施例包括根據聲明136的系統,其中第二NVMe SSD位於共用殼體內部。
聲明138. 本發明概念的實施例包括根據聲明136的系統,其中第二NVMe SSD位於共用殼體外部。
聲明139. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯包括旁視擦除編碼邏輯及透視擦除編碼邏
輯中的至少一個。
聲明140. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯能夠操作以至少部分地基於快取中存在來自主機的讀取請求中所請求的資料而返回對所述讀取請求的回應。
聲明141. 本發明概念的實施例包括根據聲明140的系統,其中FPGA進一步包括快取。
聲明142. 本發明概念的實施例包括根據聲明140的系統,其中:共用殼體位於主機殼中;並且主機殼包括由擦除編碼邏輯用作快取的記憶體。
聲明143. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯能夠操作以在完成寫入請求之前向主機返回對寫入請求的回應。
聲明144. 本發明概念的實施例包括根據聲明143的系統,其中:FPGA進一步包括寫入緩衝器;並且擦除編碼控制器能夠操作以將寫入請求中的資料儲存在寫入緩衝器中。
聲明145. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯包括旁視擦除編碼邏輯,旁視擦除編碼邏輯包括探測邏輯。
聲明146. 本發明概念的實施例包括根據聲明145的系統,其中探測邏輯能夠操作以攔截在PCIe交換機處接收的控制傳輸,並將控制傳輸轉發到功率處理單元(PPU)。
聲明147. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處從主機接收的資料傳輸,並在資料傳輸中以由NVMe SSD所使用的裝置邏輯塊位址(LBA)替換由主機所使用的主機LBA。
聲明148. 本發明概念的實施例包括根據聲明147的系統,其中擦除編碼邏輯進一步能夠操作以將資料傳輸引導到NVMe SSD。
聲明149. 本發明概念的實施例包括根據聲明134的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處從NVMe SSD接收的資料傳輸,並在資料傳輸中以由主機所使用的主機LBA替換由NVMe SSD所使用的裝置LBA。
聲明150. 本發明概念的實施例包括根據聲明134的系統,其中具有擦除編碼邏輯的PCIe交換機能夠操作以至少部分基於NVMe SSD能夠與擦除編碼邏輯一起使用來啟用擦除編碼邏輯。
聲明151. 本發明概念的實施例包括根據聲明134的系統,其中具有擦除編碼邏輯的PCIe交換機能夠操作以至少部分地基於NVMe SSD不能夠與擦除編碼邏輯一起使用來禁用擦除編碼邏輯。
聲明152. 本發明概念的實施例包括一種系統,所述系統包括:非揮發性儲存快速(NVMe)固態驅動器(SSD);以及具有擦除編碼邏輯的周邊元件連接快速(PCIe)交換機,包括:外部連接器,能夠使PCIe交換機與處理器通信;至少一個連接器,能夠使PCIe交換機與NVMe SSD通信;功率處理單元(PPU),配置PCIe交換機;以及擦除編碼控制器,包括用於將擦除編碼方案應用於儲存在NVMe SSD上的資料的電路系統。
聲明153. 本發明概念的實施例包括根據聲明152的系統,其中:所述系統進一步包括第二NVMe SSD;並且具有擦除編碼邏輯的PCIe交換機包括第二連接器,以能夠使具有擦除編碼邏輯的PCIe交換機與第二NVMe SSD通信。
聲明154. 本發明概念的實施例包括根據聲明152的系統,其中:所述系統進一步包括:第二NVMe SSD;以及第二PCIe交換機,包括:
第二外部連接器,能夠使第二PCIe交換機與處理器通信;第二連接器,能夠使第二PCIe交換機與第二NVMe SSD通信;以及第三連接器,能夠使第二PCIe交換機與具有擦除編碼邏輯的PCIe交換機通信;並且具有擦除編碼邏輯的PCIe交換機包括第四連接器,以能夠使具有擦除編碼邏輯的PCIe交換機與第二PCIe交換機通信,其中擦除編碼方案應用於儲存在NVMe SSD及第二NVMe SSD上的資料。
聲明155. 本發明概念的實施例包括根據聲明154的系統,其中第二PCIe交換機進一步包括被禁用的第二擦除編碼邏輯。
聲明156. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯包括旁視擦除編碼邏輯及透視擦除編碼邏輯中的至少一個。
聲明157. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯能夠操作以至少部分地基於快取中存在來自主機的讀取請求中所請求的資料而返回對所述讀取請求的回應。
聲明158. 本發明概念的實施例包括根據聲明157的系
統,其中擦除編碼邏輯進一步包括快取。
聲明159. 本發明概念的實施例包括根據聲明157的系統,其中:具有擦除編碼邏輯的PCIe交換機位於主機殼中;並且主機殼包括由擦除編碼邏輯用作快取的記憶體。
聲明160. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯能夠操作以在完成寫入請求之前向主機返回對寫入請求的回應。
聲明161. 本發明概念的實施例包括根據聲明160的系統,其中:具有擦除編碼邏輯的PCIe交換機進一步包括寫入緩衝器;並且擦除編碼控制器能夠操作以將寫入請求中的資料儲存在寫入緩衝器中。
聲明162. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯包括旁視擦除編碼邏輯,旁視擦除編碼邏輯包括探測邏輯。
聲明163. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處接收的控制傳輸,並將控制傳輸轉發到功率處理單元(PPU)。
聲明164. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處從主機
接收的資料傳輸,並在資料傳輸中以由NVMe SSD所使用的裝置邏輯塊位址(LBA)替換由主機所使用的主機LBA。
聲明165. 本發明概念的實施例包括根據聲明164的系統,其中擦除編碼邏輯進一步能夠操作以將資料傳輸引導到NVMe SSD。
聲明166. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯能夠操作以攔截在PCIe交換機處從NVMe SSD接收的資料傳輸,並在資料傳輸中以由主機所使用的主機LBA替換由NVMe SSD所使用的裝置LBA。
聲明167. 本發明概念的實施例包括根據聲明152的系統,其中擦除編碼邏輯定義跨越NVMe SSD及第二NVMe SSD的虛擬儲存裝置。
聲明168. 本發明概念的實施例包括根據聲明152的系統,其中具有擦除編碼邏輯的PCIe交換機能夠操作以至少部分地基於NVMe SSD能夠與擦除編碼邏輯一起使用而啟用擦除編碼邏輯。
聲明169. 本發明概念的實施例包括根據聲明152的系統,所述系統進一步包括連接到具有擦除編碼邏輯的PCIe交換機的第二裝置。
聲明170. 本發明概念的實施例包括根據聲明169的系統,其中第二裝置包括儲存裝置、具有現場可程式設計閘陣列(FPGA)的SSD及圖形處理單元(GPU)中的至少一個。
聲明171. 本發明概念的實施例包括根據聲明169的系統,其中:第二裝置不能夠與擦除編碼邏輯一起使用;並且具有擦除編碼邏輯的PCIe交換機能夠操作以至少部分地基於第二裝置不能夠與擦除編碼邏輯一起使用而禁用擦除編碼邏輯。
聲明172. 本發明概念的實施例包括根據聲明169的系統,其中:第二裝置不能夠與擦除編碼邏輯一起使用;並且具有擦除編碼邏輯的PCIe交換機能夠操作以至少部分地基於NVMe SSD能夠與擦除編碼邏輯一起使用而啟用擦除編碼邏輯,並在不使用擦除編碼邏輯的情況下啟用對第二裝置的存取。
聲明173. 本發明概念的實施例包括根據聲明169的系統,其中:第二裝置不能夠與擦除編碼邏輯一起使用;並且具有擦除編碼邏輯的PCIe交換機能夠操作以至少部分地基於NVMe SSD能夠與擦除編碼邏輯一起使用而啟用擦除編碼邏輯,並禁用對第二裝置的存取。
因此,就本文中所述實施例的各種各樣的排列方案而言,此詳細說明及隨附材料旨在僅為說明性的,而不應被視為限制本發明概念的範圍。因此,本發明概念所主張的是所有此種修
改均可落入以上申請專利範圍書及其等效條款的範圍及精神內。
125:PCIe交換機
505:連接器
510-1~510-6:PCIe到PCIe堆疊
515:PCIe交換機核心
520:PPU
525:探測邏輯
530:擦除編碼控制器
535-1~535-6:捕獲介面
540:複用器
545:快取
550:寫入緩衝器
555:擦除編碼啟用信號
Claims (20)
- 一種電腦系統,包括:非揮發性儲存快速(NVMe)固態驅動器(SSD);周邊元件連接快速(PCIe)交換機,具有擦除編碼邏輯,包括:能夠使所述PCIe交換機與處理器通信的外部連接器;能夠使所述PCIe交換機與所述NVMe SSD通信的至少一個連接器;用於配置所述PCIe交換機的功率處理單元(PPU);以及擦除編碼控制器,所述擦除編碼控制器包括用於將擦除編碼方案應用於儲存在所述NVMe SSD上的資料的電路系統。
- 如申請專利範圍第1項所述的電腦系統,其中:所述電腦系統進一步包括:第二NVMe SSD;以及第二PCIe交換機,包括:第二外部連接器,能夠使所述第二PCIe交換機與所述處理器通信;第二連接器,能夠使所述第二PCIe交換機與所述第二NVMe SSD通信;以及第三連接器,能夠使所述第二PCIe交換機與具有所述擦除編碼邏輯的所述PCIe交換機通信;並且 具有所述擦除編碼邏輯的所述PCIe交換機包括第四連接器,以能夠使具有所述擦除編碼邏輯的所述PCIe交換機與所述第二PCIe交換機通信,其中所述擦除編碼方案應用於儲存在所述NVMe SSD及所述第二NVMe SSD上的資料。
- 如申請專利範圍第1項所述的電腦系統,其中所述擦除編碼邏輯操作以基於快取中存在來自主機的讀取請求中所請求的至少部分的資料而返回對所述讀取請求的回應。
- 如申請專利範圍第1項所述的電腦系統,其中所述擦除編碼邏輯操作以在完成寫入請求之前向主機返回對所述寫入請求的回應。
- 如申請專利範圍第1項所述的電腦系統,其中所述擦除編碼邏輯操作以攔截在所述PCIe交換機處從主機接收的資料傳輸,並替換所述主機在所述資料傳輸中所使用的主機邏輯塊位址(LBA)為所述NVMe SSD的裝置LBA。
- 如申請專利範圍第1項所述的電腦系統,進一步包括連接到具有所述擦除編碼邏輯的所述PCIe交換機的第二裝置。
- 如申請專利範圍第6項所述的電腦系統,其中:所述第二裝置包括非儲存裝置及具有本機擦除編碼邏輯的儲存裝置中的至少一個;並且具有所述擦除編碼邏輯的所述PCIe交換機操作以至少部分地基於所述第二裝置而禁用所述擦除編碼邏輯。
- 如申請專利範圍第6項所述的電腦系統,其中:所述第二裝置包括非儲存裝置及具有本機擦除編碼邏輯的儲存裝置中的至少一個;並且具有所述擦除編碼邏輯的所述PCIe交換機能夠操作以所述擦除編碼邏輯並禁用對所述第二裝置的存取。
- 如申請專利範圍第1項所述的電腦系統,其中:所述電腦系統進一步包括第二NVMe SSD;並且具有所述擦除編碼邏輯的所述PCIe交換機包括第二連接器,以能夠使具有所述擦除編碼邏輯的所述PCIe交換機與所述第二NVMe SSD通信。
- 如申請專利範圍第2項所述的電腦系統,其中所述第二PCIe交換機進一步包括被禁用的第二擦除編碼邏輯。
- 如申請專利範圍第3項所述的電腦系統,其中所述擦除編碼邏輯進一步包括所述快取。
- 如申請專利範圍第3項所述的電腦系統,其中:具有所述擦除編碼邏輯的所述PCIe交換機位於主機殼中;並且所述主機殼包括由所述擦除編碼邏輯用作快取的記憶體。
- 如申請專利範圍第4項所述的電腦系統,其中:具有所述擦除編碼邏輯的所述PCIe交換機進一步包括寫入緩衝器;並且 所述擦除編碼控制器能夠操作以將所述寫入請求中的資料儲存在所述寫入緩衝器中。
- 如申請專利範圍第1項所述的電腦系統,其中所述擦除編碼邏輯包括旁視擦除編碼邏輯,所述旁視擦除編碼邏輯包括探測邏輯。
- 如申請專利範圍第5項所述的電腦系統,其中所述擦除編碼邏輯進一步能夠操作以將所述資料傳輸引導到所述NVMe SSD。
- 如申請專利範圍第1項所述的電腦系統,其中所述擦除編碼邏輯能夠操作以攔截在所述PCIe交換機處從所述NVMe SSD接收的資料傳輸,並在所述資料傳輸中以由主機所使用的主機LBA替換由所述NVMe SSD所使用的裝置LBA。
- 如申請專利範圍第1項所述的電腦系統,其中所述擦除編碼邏輯定義跨越所述NVMe SSD及第二NVMe SSD的虛擬儲存裝置。
- 如申請專利範圍第1項所述的電腦系統,其中具有所述擦除編碼邏輯的所述PCIe交換機能夠操作以至少部分地基於所述NVMe SSD為沒有本機擦除編碼邏輯的儲存裝置。
- 如申請專利範圍第6項所述的電腦系統,其中所述第二裝置包括儲存裝置、具有現場可程式設計閘陣列(FPGA)的SSD及圖形處理單元(GPU)中的至少一個。
- 如申請專利範圍第6項所述的電腦系統,其中: 所述第二裝置包括非儲存裝置及具有本機擦除編碼邏輯的儲存裝置中的至少一個;並且具有所述擦除編碼邏輯的所述PCIe交換機操作以啟用所述擦除編碼邏輯並禁用對所述第二裝置的存取。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862745261P | 2018-10-12 | 2018-10-12 | |
US62/745,261 | 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/207,080 | 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/226,629 | 2018-12-19 | ||
US16/260,087 US11860672B2 (en) | 2018-03-02 | 2019-01-28 | Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD |
US16/260,087 | 2019-01-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202020675A TW202020675A (zh) | 2020-06-01 |
TWI791880B true TWI791880B (zh) | 2023-02-11 |
Family
ID=70219044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108129186A TWI791880B (zh) | 2018-10-12 | 2019-08-16 | 電腦系統 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP7370801B2 (zh) |
KR (1) | KR20200041815A (zh) |
CN (1) | CN111045597B (zh) |
TW (1) | TWI791880B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102225577B1 (ko) * | 2020-08-21 | 2021-03-09 | (주)테온 | 하이브리드 스토리지를 이용한 데이터 분산 저장 방법 및 장치 |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201250486A (en) * | 2011-06-08 | 2012-12-16 | Hon Hai Prec Ind Co Ltd | PCIE interface card |
US20150143038A1 (en) * | 2013-09-27 | 2015-05-21 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
TW201823916A (zh) * | 2016-12-27 | 2018-07-01 | 英業達股份有限公司 | 伺服器系統 |
Family Cites Families (11)
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 |
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 |
JP2014063497A (ja) * | 2012-09-21 | 2014-04-10 | Plx Technology Inc | 論理装置の機能を有するpciエクスプレススイッチ |
US9298648B2 (en) * | 2013-05-08 | 2016-03-29 | Avago Technologies General Ip (Singapore) Pte Ltd | Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch |
US9336173B1 (en) * | 2013-12-20 | 2016-05-10 | Microsemi Storage Solutions (U.S.), Inc. | Method and switch for transferring transactions between switch domains |
US9940036B2 (en) * | 2014-09-23 | 2018-04-10 | Western Digital Technologies, Inc. | System and method for controlling various aspects of PCIe direct attached nonvolatile memory storage subsystems |
US20160259754A1 (en) * | 2015-03-02 | 2016-09-08 | Samsung Electronics Co., Ltd. | Hard disk drive form factor solid state drive multi-card adapter |
US10007443B1 (en) * | 2016-03-31 | 2018-06-26 | EMC IP Holding Company LLC | Host to device I/O flow |
CN108073833A (zh) * | 2016-11-10 | 2018-05-25 | 苏州韦科韬信息技术有限公司 | 基于pcie接口的固态硬盘保密系统及方法 |
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 |
-
2019
- 2019-08-16 TW TW108129186A patent/TWI791880B/zh active
- 2019-10-08 CN CN201910951173.4A patent/CN111045597B/zh active Active
- 2019-10-11 JP JP2019188052A patent/JP7370801B2/ja active Active
- 2019-10-11 KR KR1020190126503A patent/KR20200041815A/ko active Search and Examination
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201250486A (en) * | 2011-06-08 | 2012-12-16 | Hon Hai Prec Ind Co Ltd | PCIE interface card |
US20150143038A1 (en) * | 2013-09-27 | 2015-05-21 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
TW201823916A (zh) * | 2016-12-27 | 2018-07-01 | 英業達股份有限公司 | 伺服器系統 |
Also Published As
Publication number | Publication date |
---|---|
TW202020675A (zh) | 2020-06-01 |
CN111045597B (zh) | 2024-08-20 |
CN111045597A (zh) | 2020-04-21 |
JP2020061149A (ja) | 2020-04-16 |
JP7370801B2 (ja) | 2023-10-30 |
KR20200041815A (ko) | 2020-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11860672B2 (en) | Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD | |
US11360679B2 (en) | Paging of external memory | |
US11797181B2 (en) | Hardware accessible external memory | |
TWI791880B (zh) | 電腦系統 | |
TWI591512B (zh) | 儲存系統及儲存保護之方法 | |
US8560772B1 (en) | System and method for data migration between high-performance computing architectures and data storage devices | |
US11086525B2 (en) | Resilient external memory | |
KR102199424B1 (ko) | 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 | |
US20200034263A1 (en) | Distributed storage system and distributed storage control method | |
US20210271393A1 (en) | Method and apparatus for performing data access management of all flash array server | |
US20240095196A1 (en) | Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd |