TWI788554B - 用於儲存裝置協助低頻寬資料修補的設備與系統 - Google Patents
用於儲存裝置協助低頻寬資料修補的設備與系統 Download PDFInfo
- Publication number
- TWI788554B TWI788554B TW108112265A TW108112265A TWI788554B TW I788554 B TWI788554 B TW I788554B TW 108112265 A TW108112265 A TW 108112265A TW 108112265 A TW108112265 A TW 108112265A TW I788554 B TWI788554 B TW I788554B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- code
- storage device
- host device
- regeneration
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
根據一個一般態樣,一種設備可包括再生碼感知型(RCA)
儲存裝置,所述再生碼感知型(RCA)儲存裝置被配置以計算用於資料錯誤校正的至少一種類型的資料再生碼。所述再生碼感知型儲存裝置可包括記憶體,所述記憶體被配置以將資料儲存成組塊,所述組塊又包括資料區塊。所述再生碼感知型儲存裝置可包括處理器,所述處理器被配置以在外部主機裝置作出請求時基於所選數目個資料區塊來計算資料再生碼。所述再生碼感知型儲存裝置可包括外部介面,所述外部介面被配置以將所述資料再生碼傳送至所述外部主機裝置。
Description
本說明是有關於資料儲存,且更具體而言是有關於一種用於儲存裝置協助低頻寬資料修補的系統、裝置及/或方法。
在編碼理論中,抹除碼(erasure code)是在位元抹除(而非位元錯誤)的假設下的正向錯誤校正(forward error correction,FEC)碼,其將具有k個符碼的訊息變換成具有n個符碼的更長訊息(碼字元),以便可自所述n個符碼的子集恢復原始訊息。分數r=k/n被稱為碼率(code rate)。分數k’/k被稱為接收效率,其中k’表示進行恢復所需的符碼的數目。
再生碼解決了自現有的經編碼片段重新構建(亦稱為修補)丟失的經編碼片段的問題。更詳細而言,再生碼是一類旨在於保持傳統最大距離可分(maximum distance separable,MDS)碼的儲存效率的同時,減少修補期間的下載量的碼。此種問題發生於其中為維持編碼冗餘性而進行的通訊成問題的分散式儲存系統(distributed storage system)中。
分散式儲存系統通常是其中資訊經常以複製方式儲存於多於一個節點或裝置上的電腦網路。分散式儲存系統經常用於指代其中使用者將資訊儲存於數個節點上的分散式資料庫、或者其中使用者將資訊儲存於數個對等網路節點(peer network node)上的電腦網路。分散式儲存系統通常使用錯誤偵測與校正技術。當原始檔案、組塊(chunk)或二進制大型物件(blob)的各部分受到損壞或不可用時,一些分散式儲存系統使用前向錯誤校正技術(forward error correction technique)來恢復所述檔案。其他分散式儲存系統再次嘗試自不同的鏡像(mirror)下載所述檔案。
根據一個一般態樣,一種用於協助低頻寬資料修補的設備可包括再生碼感知型(regeneration-code-aware,RCA)儲存裝置,所述再生碼感知型(RCA)儲存裝置被配置以計算用於資料錯誤校正的至少一種類型的資料再生碼(data regeneration code)。所述RCA儲存裝置可包括記憶體,所述記憶體被配置以將資料儲存成組塊,所述組塊又包括資料區塊。所述RCA儲存裝置可包括處理器,所述處理器被配置以在外部主機裝置作出請求時基於所選數目個資料區塊來計算資料再生碼。所述RCA儲存裝置可包括外部介面,所述外部介面被配置以將所述資料再生碼傳送至所述外部主機裝置。
根據另一一般態樣,一種用於協助低頻寬資料修補的系統可包括主機裝置及分散式儲存系統。所述主機裝置可被配置以
在分散式儲存系統當中將資料儲存為多個組塊,偵測所述多個組塊中的至少一個組塊何時與錯誤相關聯,且因應於所述錯誤,藉由資料再生技術而至少部分地基於所述資料的所述多個組塊來重構與所述錯誤相關聯的所述組塊。所述分散式儲存系統可包括多個儲存裝置,其中所述多個儲存裝置中的每一儲存裝置被配置以儲存所述資料的所述多個組塊中至少一相應的組塊,且其中所述多個儲存裝置包括至少一個再生碼感知型(RCA)儲存裝置,其中所述至少一個RCA儲存裝置中的每一RCA儲存裝置被配置以在內部計算至少一種類型的資料再生碼。
根據另一一般態樣,一種用於協助低頻寬資料修補的系統可包括主機裝置,所述主機裝置被配置以:在儲存系統當中將資料儲存成多個組塊,偵測所述多個組塊中的至少一個組塊何時與錯誤相關聯,且因應於所述錯誤,至少部分地基於所述資料的所述多個組塊而藉由資料再生技術來校正所述錯誤。所述系統可包括所述儲存系統,所述儲存系統包括多個儲存裝置,其中所述多個儲存裝置中的每一儲存裝置被配置以儲存所述資料的所述多個組塊中至少一相應的組塊,且其中所述多個儲存裝置包括至少一個再生碼感知型(RCA)儲存裝置,其中所述至少一個RCA儲存裝置中的每一RCA儲存裝置被配置以在內部計算至少一種類型的資料再生碼。所述RCA儲存裝置可包括:記憶體,被配置以將資料儲存成組塊,其中所述組塊中的每一組塊包含資料區塊;處理器,被配置以在所述主機裝置作出請求時基於所選數目個資料
區塊來計算資料再生碼;碼記憶體,被配置以儲存多個指令集,其中所述多個指令集中的每一指令集產生不同的資料再生碼;以及外部介面,被配置以將所述資料再生碼傳送至所述主機裝置。
在附圖及以下說明中陳述一或多個實施方案的細節。依據說明及圖式並依據申請專利範圍,其他特徵將顯而易見。
本發明是有關於一種實質上如結合各圖中的至少一者所示及/或所述且在申請專利範圍中更全面地陳述的用於資料儲存且更具體而言用於儲存裝置協助低頻寬資料修補的系統及/或方法。
100、201、203、205、207:系統
102、210:主機裝置
104:分散式儲存系統/儲存系統
114:傳統或非再生碼感知型(RCA)儲存裝置/儲存裝置
114-1、114-2、114-3、116-1、212:儲存裝置
116、252:再生碼感知型(RCA)儲存裝置/儲存裝置
198、214、214C:組塊
199:資料集/資料/原始資料
216、B1、B2、B3、B4:區塊
218、219、R1:再生碼
222、232、410:處理器
224、234:記憶體
226:外部介面
228:碼記憶體
229:指令集
236:介面
242A、242C、246C:資料讀取請求或命令/訊息
242B、242D:讀取以修補命令/命令/訊息
244A、244C、248C:資料讀取回應或訊息/訊息
244B、244D:訊息
287:再生碼技術/再生技術
288:再生技術的部分
289:再生碼技術的部分
300:技術
302、304、306、308、310、350、352、354、356、358、360、362、399:操作
400:資訊處理系統
405:系統匯流排
415:組合邏輯區塊(CLB)
420:揮發性記憶體
430:非揮發性記憶體
440:網路介面
450:使用者介面單元
460:裝置/硬體組件
470:軟體組件
D1、D2、D3、D4:原始資料組塊/組塊
P1、P2:同位組塊/冗餘資料組塊/組塊
E1:區塊/出錯的區塊/出錯的資料
圖1是根據所揭露標的的系統的示例性實施例的方塊圖。
圖2A是根據所揭露標的的系統的示例性實施例的方塊圖。
圖2B是根據所揭露標的的系統的示例性實施例的方塊圖。
圖2C是根據所揭露標的的系統的示例性實施例的方塊圖。
圖2D是根據所揭露標的的系統的示例性實施例的方塊圖。
圖3是根據所揭露標的的技術的示例性實施例的方塊圖。
圖4是可包括根據所揭露標的的原理而形成的裝置的資訊處理系統的示意性方塊圖。
在各圖式中,相同的參考符號指示相同的元件。
將在下文中參照其中示出一些示例性實施例的附圖來更全面地闡述各種示例性實施例。然而,本發明所揭露標的可實
施為諸多不同形式而不應被理解為僅限於本文中所陳述的示例性實施例。而是,提供該些示例性實施例是為了使本發明透徹及完整,且將向熟習此項技術者全面地傳達本發明所揭露標的的範圍。在圖式中,為清晰起見,各層及各區的大小及相對大小可被擴大。
應理解,當將元件或層稱作位於另一元件或層「上」、「連接至」或「耦合至」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至或直接耦合至所述另一元件或層,或者可存在中間元件或層。相較而言,當將元件稱作「直接」位於另一元件或層「上」、「直接連接至」或「直接耦合至」另一元件或層時,不存在中間元件或層。在通篇中,相同的編號指代相同的元件。本文中所使用的用語「及/或(and/or)」包括相關聯所列各項中的一或多者的任意及所有組合。
應理解,雖然本文中可使用用語「第一」、「第二」、「第三」等來闡述各種元件、組件、區、層及/或區段,但該些元件、組件、區、層及/或區段不應受該些用語限制。該些用語僅用於將一個元件、組件、區、層、或區段與另一區、層、或區段區分開。因此,在不背離本發明所揭露標的的教示內容的條件下,下文所論述的「第一元件」、「第一組件」、「第一區」、「第一層」、或「第一區段」可被稱為第二元件、第二組件、第二區、第二層、或第二區段。
為易於說明,本文中可能使用例如「在...下方
(beneath)」、「在...下面(below)」、「下部的(lower)」、「上方(above)」、「上部的(upper)」等空間相對性用語來闡述圖中所示出的一個元件或特徵與另一(些)元件或特徵的關係。應理解,所述空間相對性用語旨在除圖中所繪示的定向外亦囊括裝置在使用或操作中的不同定向。舉例而言,若將各圖中所示的裝置翻轉,則闡述為位於其他元件或特徵「下面」或「下方」的元件將被定向成位於其他元件或特徵「上方」。因此,示例性用語「在...下面」可囊括在...上方及在...下面兩種定向。裝置可具有其他定向(旋轉90度或其他定向),且本文中所使用的空間相對性描述語可相應地進行解釋。
同樣地,為易於說明,本文中可能使用例如「高態(high)」、「低態(low)」、「上拉(pull up)」、「下拉(pull down)」、「1」、「0」等電性用語來闡述如圖中所示的電壓位準或電流相對於其他電壓位準或另一(些)元件或特徵的關係。應理解,所述電性相對用語旨在除圖中所繪示的電壓或電流以外亦囊括裝置在使用或操作中的不同參考電壓。舉例而言,若圖中的裝置或訊號被反轉或使用其他參考電壓、電流、或電荷,則與新的參考電壓或電流相較,被闡述為「高態」或「被上拉」的元件將為「低態」或「被下拉」。因此,示例性用語「高態」可囊括相對低或高的電壓或電流。裝置可另外基於不同的電性參考框(frame),且本文中所使用的電性相對描述語可相應地進行解釋。
本文中所使用的術語僅用於闡述特定示例性實施例而
非旨在限制本發明所揭露標的物。除非上下文另有清晰指示,否則本文中所使用的單數形式「一(a、an)」及「所述(the)」均旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprise及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但並不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。
本文中參照作為理想化示例性實施例(及中間結構)的示意圖的剖視圖來闡述各示例性實施例。因此,預期會因例如製造技術及/或容差而與各圖所示的形狀有所變化。因此,各示例性實施例不應被理解為僅限於本文所示的特定區形狀,而是將包括例如因製造所致的形狀偏差。舉例而言,被示出為矩形的經植入區通常將具有圓形或彎曲特徵,及/或在其邊緣處具有植入濃度梯度而非自經植入區至未植入區具有二元變化(binary change)。同樣,藉由植入而形成的掩埋區(buried region)可能會在所述掩埋區與進行植入所經由的表面之間的區中引起某種程度的植入。因此,各圖中所示出的區本質上是示意性的,且其形狀並非旨在示出裝置的區的實際形狀且並非旨在限制本發明所揭露標的物的範圍。
除非另有定義,否則本文中所使用的所有用語(包括技術用語及科學用語)均具有與本發明所揭露標的物所屬領域中具有通常知識者通常所理解的含義相同的含義。更應理解,例如常用字典中所定義的用語等用語應被解釋為具有與其在相關技術背
景中的含義相一致的含義,而不應被解釋為具有理想化或過度形式化意義,除非本文中明確如此定義。
在下文中,將參照附圖詳細地闡釋各示例性實施例。
圖1是根據所揭露標的的系統100的示例性實施例的方塊圖。在所示實施例中,系統100可包括跨多個節點或儲存裝置而儲存資料的分散式儲存系統104。
分散式儲存系統經常用於提供大規模可靠性儲存。經常,此是藉由跨大量節點或儲存裝置散佈冗餘或錯誤校正(例如,同位性(parity))而達成。然而,當節點或儲存裝置離線(例如,因網路錯誤、硬體故障等)時,資料被懷疑可能具訛誤或者至少具有降低的冗餘等級。儲存系統愈分散,此問題即愈頻繁地發生。
可採用數種技術(例如,鏡像(mirroring)、里德-所羅門(Reed-Solomon)編碼)來預防此種事件,但所揭露標的專注於再生編碼(regeneration encoding)。在此種實施例中,漏失的資料段(piece of data)(組塊)是基於剩餘的資料段而使用公式來再生或重構。
在所示實施例中,系統100可包括被配置以管理分散式儲存系統104的一或多個主機裝置102。主機裝置102可包括自儲存系統104讀取及向儲存系統104寫入的計算裝置(例如,電腦、伺服器、虛擬機器)。當發生錯誤(例如,資料組塊漏失)時,主機裝置102通常負責偵測且在可能時修補所述錯誤。
在所示實施例中,每一資料集199可由主機裝置102分
解或分割成多個較小的資料段或組塊198。在所示實施例中,資料199被劃分成多個組塊198 D1、D2、D3及D4。此外,在各種實施例中,主機裝置102可對資料組塊198應用某種冗餘形式,例如同位組塊P1及P2(由於其亦為組塊,因此被編號為198)。
按照此項技術的說法,原始資料組塊198(D1、D2、D3及D4)的數目被闡述為變數K或k。同樣地,冗餘資料組塊198(P1及P2)的數目被闡述為變數R或r。因此,組塊198的總數是K+R。在所示實施例中,K等於4,R等於2,且K+R等於6;然而,應理解,以上內容僅為說明性實例,所揭露標的並非僅限於所述說明性實例。
在所示實施例中,主機裝置102將該些組塊198(原始組塊及冗餘組塊)中的每一者儲存於儲存系統104的相應的節點或儲存裝置上。在所示實施例中,儲存裝置114儲存組塊198 D1,儲存裝置114-1儲存組塊198 D2,儲存裝置116儲存組塊198 D3,儲存裝置114-2儲存組塊198 D4,儲存裝置116-1儲存組塊198 P1,且儲存裝置114-3儲存組塊198 P2。在各種實施例中,儲存裝置114/116的數目可不等於組塊198的數目。
在各種實施例中,組塊198可能會漏失(例如,網路或硬體故障),或者可能以其他方式與錯誤相關聯。在所示實施例中,比如說組塊198 D3(及儲存裝置116)突然變得不可用。在偵測到錯誤後,主機裝置102可嘗試重新創建組塊198 D3或以其他方式校正所述錯誤。
在此種實施例中,若一個組塊失效(例如,組塊198 D3)且原始資料199中總共存在K(例如,4)個組塊,則必須有至少K(例如,4)個節點或儲存裝置114/116向主機裝置102發送資訊來恢復失效的組塊(例如,組塊198 D3)。注意,該K(例如,4)個組塊可來自K+R(例如,6)個組塊中的任一者。舉例而言,組塊198 D1、D2、D4及P1可用於重新創建組塊198 D3。
再生碼藉由自D個節點發送不足完整組塊大小的資訊而減少修補頻寬,其中通常D>K。換言之,藉由使用精妙的公式(clever formula),主機裝置102可能夠藉由不使用完整組塊198 D1、D2、D4及P1而是僅使用198 D1、D2、D4、P1及P2的一部分來重新創建漏失的組塊198 D3。相較於非再生碼(non-regenerative code),再生碼通常自更多儲存裝置114/116獲得資訊,但自每一儲存裝置114/116獲得更少的資訊。
舉例而言,若使用6個資料組塊(K=6)且使用6個冗餘組塊(R=6且K+R=12)並且每一組塊的大小為16百萬位元組(MB),則標準里德-所羅門(RS)錯誤校正編碼方案將要求應向主機裝置發送6(K)個16百萬位元組組塊或應傳送96百萬位元組的資料以校正漏失的16百萬位元組組塊。相反地,若使用再生技術,則將讀取所有12(在此種情形中,K+R或D)個組塊的部分,但由於僅使用每一組塊的一部分(例如,2.7百萬位元組),因此傳送至主機裝置的總量可較低(例如,29.7百萬位元組)。
經常,再生碼具有儲存與頻寬折衷。在各種實施例中,
一般而言,存在二個類別或群組的再生碼。若儲存開銷(storage overhead)是最小的,則再生碼被稱為最小儲存再生(Minimum Storage Regeneration,MSR)碼。若修補頻寬是最小的以增加儲存開銷,則再生碼被稱為最小頻寬再生(Minimum Bandwidth Regeneration,MBR)碼。在該些寬廣的範疇內,可採用各種特定技術或公式來實行再生碼。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。
返回至圖1,在所示實施例中,儲存系統104可包括多個儲存裝置114/116。每一儲存裝置114/116可被配置以將資料儲存成組塊或其他形式。在所示實施例中,儲存裝置114可為相對傳統的儲存裝置,例如硬碟機、固態磁碟機或甚至揮發性記憶體。
然而,在所示實施例中,儲存系統104亦可包括再生碼感知型(RCA)儲存裝置116。在此種實施例中,不同於傳統或非RCA儲存裝置114,RCA儲存裝置116可被配置以幫助計算資料再生碼且包括容許RCA儲存裝置116幫助計算資料再生碼的組件。如稍後更詳細地論述,主機裝置102可能夠動態地將資料再生碼的計算中的某一部分卸載給RCA儲存裝置116。在各種實施例中,此可減少在主機裝置102與儲存系統104之間來回發送的訊息量、在主機裝置102與儲存系統104之間傳輸的資料量、及/或主機裝置102上的計算負載。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。
在各種實施例中,RCA儲存裝置116可為可程式化的,
使得主機裝置102可能夠利用最新或所期望的再生碼公式或技術來更新RCA儲存裝置116。在此種實施例中,RCA儲存裝置116可能夠儲存多種再生技術且具有藉由主機裝置102來動態或半靜態地選擇所述多種再生技術中的一種。在此種實施例中,主機裝置102可在給定時刻選擇應採用再生技術中的哪一種。
在各種實施例中,儲存系統104可為分散式的。在此種實施例中,儲存裝置114/116可在實體上遠離彼此且藉由網路協定進行通訊。在另一實施例中,儲存裝置114/116可為相對區域化的(例如,位於伺服器場或同一建築物中),但仍藉由網路協定進行通訊。在又一實施例中,儲存系統104可不為分散式的。在此種實施例中,所揭露標的可用於不使用網路協定(例如,通用串列匯流排(Universal Serial Bus,USB)、串列進階技術附件(Serial Advanced Technology Attachment,SATA))的區域裝置(例如,同一機器)。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。
在各種實施例中,再生碼感知型(RCA)儲存裝置116可包括計算不同類型或版本的再生碼的能力。在此種實施例中,可由主機裝置102動態地選取所期望類型或版本的再生碼。在一些實施例中,RCA儲存裝置116可能夠將資料分裂成較小的區塊或封包,計算抹除碼(erasure code)或其一部分、處理資料組塊以修補另一失效的組塊,等等。
在各種實施例中,於主機裝置102與RCA儲存裝置116
之間可存在通訊協定,以使用任何再生碼或技術來實作資料可靠性。在此種實施例中,所述協定可容許選擇再生技術、傳遞輸入、引導所期望技術的操作及擷取任何輸出。在一些實施例中,所述協定可定義主機在包含RCA儲存裝置116及非RCA儲存裝置114的混合型環境中工作時的主機行為以及如何與其二者互動。在各種實施例中,主機裝置102可使用所述協定來設置RCA儲存裝置116,編碼/讀取/寫入使用者資料並卸載資料修補期間的計算,以減少資料訊務並加速計算,且使用RCA儲存裝置116的能力來重新構建原始資料。
圖2A是根據所揭露標的的系統201的示例性實施例的方塊圖。在所示實施例中,系統201示出主機裝置210與儲存裝置212之間為計算第一種類(類型1)再生碼而進行的互動。在各種實施例中,系統201可用於傳統或非RCA儲存裝置且甚至在RCA儲存裝置的RCA功能未被採用時亦用於RCA儲存裝置。
在所示實施例中,系統203可包括主機裝置210及儲存裝置212。在此種實施例中,主機裝置210可包括用以執行指令並實行計算的處理器232、用以至少臨時儲存資料或所述資料的段的記憶體234、以及與儲存裝置212或更一般而言儲存系統(圖中未示出)進行通訊的介面236。在此種實施例中,儲存裝置212可包括被配置以儲存資料的記憶體224。在各種實施例中,此記憶體224可為非揮發性或揮發性的。
在所示實施例中,組塊214被細分成多個區塊216。在
此種實施例中,主機裝置210可自儲存於儲存裝置212上的一或多個組塊214(以及自儲存於其他儲存裝置上的K-1個組塊)獲得區塊216,且計算再生碼218(R1)。
在此種再生碼技術(類型1)中,區塊216由較小的封包(圖中未示出)組成。對於每一節點或儲存裝置212,主機裝置210使用各個封包來計算同位封包或再生碼218。每一儲存裝置各自的再生碼218用於重構漏失的或出錯的組塊。一般而言,對於類型1再生碼技術,計算是線性的且取決於失效的組塊。往回發送的資料量取決於子封包化層階(sub-packetization level)及功能。
在所示實施例中,一旦主機裝置210偵測到錯誤,其便可向儲存裝置212傳送資料讀取請求或命令242A。資料讀取命令242A可包括將讀取哪一組塊214(例如,組塊214C)。然後,儲存裝置212藉由資料讀取回應或訊息244A,將所期望組塊214傳送至主機裝置210。在各種實施例中,此均可使用傳統的主機-儲存裝置212協定(例如,SATA)來完成。
在藉由介面236接收到所期望組塊214C後,主機裝置210可將組塊214C或區塊216儲存於記憶體234中。然後,處理器232可實行所期望再生碼技術287。儘管再生碼技術287被示作簡單的加法或布林互斥或(Boolean XORing)運算,然而應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。如上所述,在各種實施例中,此可包括將區塊216細分成多個較小的封包。再生碼技術287可計算或產生再生碼218
(R1),然後,再生碼218(R1)可與和其他組塊或儲存裝置相關聯的再生碼一起用於重構或修補出錯的組塊。
圖2B是根據所揭露標的的系統203的示例性實施例的方塊圖。在所示實施例中,系統203示出主機裝置210與RCA儲存裝置252之間為計算第一種類(類型1)再生碼而進行的互動。在各種實施例中,系統203可僅用於RCA儲存裝置而不用於非RCA儲存裝置。
在所示實施例中,系統201可包括主機裝置210及RCA儲存裝置252。在此種實施例中,主機裝置210可包括用以執行指令並實行計算的處理器232、用以至少臨時儲存資料或所述資料的段的記憶體234、以及用以與RCA儲存裝置252或更一般而言儲存系統(圖中未示出)進行通訊的介面236。
在此種實施例中,RCA儲存裝置252可包括被配置以儲存資料的記憶體224。在各種實施例中,此記憶體224可為非揮發性或揮發性的。此外,在各種實施例中,RCA儲存裝置252可包括處理器222,處理器222被配置以在主機裝置210(其通常位於儲存裝置的外部)作出請求時基於所選數目個資料區塊216來計算資料再生碼218。在各種實施例中,處理器222可包括可程式化閘陣列(例如,現場可程式化閘陣列(field programmable gate array,FPGA))、圖形處理器單元(graphic processor unit,GPU)、通用處理器(例如,中央處理單元(central processing unit,CPU))、控制器處理器、或系統晶片(system-on-chip,SoC)。應理解,以
上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。RCA儲存裝置252可包括被配置以儲存多個指令集229的碼記憶體228,其中每一指令集229產生不同資料再生碼或關於如何實行不同再生碼技術的指令。在各種實施例中,指令集229可被預配置至儲存裝置252中,或在運行時間期間動態地予以添加/調整(例如,由主機裝置210),或者被進行此二種操作的組合。RCA儲存裝置252可包括被配置以與至少主機裝置210進行通訊的外部介面226。
在所示實施例中,主機裝置210可判斷儲存裝置252是否能夠在內部計算資料再生碼或一般而言是否為RCA儲存裝置。若是,則主機裝置210可判斷RCA儲存裝置252是否可實行所期望再生碼技術或者RCA儲存裝置252是否可被程式化成實行所期望再生碼技術(藉由碼記憶體228)。若否,則可採用圖2A中所示的技術。
若RCA儲存裝置252能夠實行所期望再生碼技術,則主機裝置210可發佈讀取以修補命令(Read for Repair command)242B。在各種實施例中,讀取以修補命令242B可包括或指示以下中的一或多者:所期望再生或修補技術的指示、所期望封包或區塊大小、所期望再生或修補技術的任何參數、資料或組塊位址、及失效的組塊編號。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。
因應於命令242B,處理器222可擷取所期望區塊216
或組塊214C。處理器222亦可擷取與所期望再生或修補技術相關聯的指令集229。處理器222可實行所期望再生技術287,且計算資料再生碼(data regeneration code,DRC)218(R1)。
然後,RCA儲存裝置252可藉由介面226將資料再生碼218(R1)傳送(訊息244B)至主機裝置210。在此種實施例中,資料再生碼218(R1)可較藉由圖2A所示訊息244A傳送的資料具有更小的大小或消耗更少的頻寬。
在所示實施例中,訊息242B及244B可需要與用於訊息242A及244A的協定不同的協定。儘管訊息242A及244A可藉由傳統的儲存裝置協定來達成,然而訊息242B及244B可需要附加且不同的資訊且因此需要新的訊息接發協定或至少新的命令。
在所示實施例中,然後,主機裝置210可使用資料再生碼218(R1)連同由其他RCA儲存裝置(圖中未示出)提供或由主機裝置210本身產生的任何附加資料再生碼來重新創建出錯的資料組塊。
圖2C是根據所揭露標的的系統205的示例性實施例的方塊圖。在所示實施例中,系統205示出主機裝置210與儲存裝置212之間為計算第二種類(類型2)再生碼而進行的互動。在各種實施例中,系統205可用於傳統或非RCA儲存裝置,且甚至在RCA儲存裝置的RCA功能未被採用時用於RCA儲存裝置。
在所示實施例中,系統205可包括主機裝置210及儲存裝置212。主機裝置210及儲存裝置212可包括以上所示及所述的
組件。
在此種再生碼技術(類型2)中,計算資料再生碼以使必須讀取的封包(圖中未示出)或區塊216較少。然而,此經常意味著,所期望區塊216或封包是完全提前知曉的,但在計算進展時是逐個地予以請求。儘管此種類的再生技術在理論上減少網路頻寬及資料讀取,然而其將一個大的讀取轉換成多個較小的讀取,此對效能無益。
在所示實施例中,主機裝置210使用所期望再生技術的部分288而計算出:若區塊E1與錯誤相關聯,則將需要區塊B1及B3(或其封包)來修整出錯的區塊E1。在此種實施例中,一旦主機裝置210偵測到需要區塊B1,主機裝置210便可向儲存裝置212傳送資料讀取請求或命令242C。資料讀取命令242C可指示將讀取哪一區塊216(例如,區塊B1)。然後,儲存裝置212藉由資料讀取回應或訊息244C將所期望區塊216 B1傳送至主機裝置210。在各種實施例中,此均可使用傳統的主機-儲存裝置協定(例如,SATA)來完成。
在此種實施例中,一旦主機裝置210偵測到需要區塊B3,主機裝置210便可向儲存裝置212傳送資料讀取請求或命令246C。此通常是作為與用於請求區塊B1的資料請求獨立的第二資料請求來完成。資料讀取命令242C可指示將讀取哪一區塊216(例如,區塊B1、區塊B2、區塊B3以及/或區塊B4)。然後,儲存裝置212藉由資料讀取回應或訊息248C將所期望區塊216 B3傳送
至主機裝置210。在各種實施例中,此均可使用傳統的主機-儲存裝置協定(例如,SATA)來完成。
在藉由介面236接收到所期望區塊216後,主機裝置210可將區塊216儲存於記憶體234中。然後,處理器232可實行所期望再生碼技術(由部分289示出)。再生碼技術(或部分289)可基於F2(x)計算或產生再生碼219(R1),再生碼219(R1)然後可與和其他組塊或儲存裝置相關聯的再生碼一起用於重構或修補出錯的組塊。
圖2D是根據所揭露標的的系統207的示例性實施例的方塊圖。在所示實施例中,系統207示出主機裝置210與RCA儲存裝置252之間為計算第二種類(類型2)的再生碼而進行的互動。在各種實施例中,系統207可僅用於RCA儲存裝置而不用於非RCA儲存裝置。
在所示實施例中,系統207可包括主機裝置210及儲存裝置252。主機裝置210及儲存裝置252可包括以上所示及所述的組件。
在所示實施例中,主機裝置210可判斷儲存裝置252是否能夠在內部計算資料再生碼或一般而言是否為RCA儲存裝置。若是,則主機裝置210可判斷RCA儲存裝置252是否可實行所期望再生碼技術或RCA儲存裝置252是否可被程式化成實行所期望再生碼技術(藉由碼記憶體228)。若否,則可採用圖2C中所示的技術。
若RCA儲存裝置252能夠實行所期望再生碼技術,則主機裝置210可發佈讀取以修補命令242D。在各種實施例中,讀取以修補命令242D可包括或指示以下中的一或多者:所期望再生或修補技術的指示、所期望封包或區塊大小、所期望再生或修補技術的任何參數、資料或組塊位址、及失效的組塊編號(例如,區塊E1)。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。
因應於命令242D,處理器222可擷取與所期望再生或修補技術相關聯的指令集229。處理器222可實行所期望再生技術或其部分288。在此種實施例中,處理器222可基於F1(x)計算出所期望區塊是B1及B3。在此種實施例中,該些區塊B1及B3可包含於由RCA儲存裝置252計算的資料再生碼中。在此種實施例中,該些區塊可被視為對讀取以修補命令242D的回應的僅一部分。
然後,RCA儲存裝置252可藉由介面226將所期望區塊B1及B3傳送(訊息244D)至主機裝置210。在此種實施例中,資料再生碼或所期望區塊B1及B3可較藉由圖2C所示訊息244C及248C傳送的資料具有更小的大小或消耗更少的頻寬或者至少包含更少的訊息且因此包含更少的開銷。
在所示實施例中,訊息242D及244D可需要與用於訊息242C、244C、246C及248C的協定不同的協定。儘管訊息242C、244C、246C及248C可藉由傳統的儲存裝置協定來達成,然而訊
息242D及244D可需要附加且不同的資訊且因此需要新的訊息接發協定或至少新的命令。
在所示實施例中,然後,主機裝置210可使用資料再生碼或區塊B1及B3連同由其他RCA儲存裝置(圖中未示出)提供或由主機裝置210本身產生的任何附加資料再生碼或資料來重新創建出錯的資料(E1)。
圖3是根據所揭露標的的技術300的示例性實施例的流程圖。在各種實施例中,技術300可由例如圖1、圖2A、圖2B、圖2C及圖2D所示系統等的系統使用或生成。然而,應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例。應理解,所揭露標的並非僅限於由技術300示出的動作的次序或數目。
在所示實施例中,為簡單起見,技術300示出其中儲存系統的所有裝置均為RCA儲存裝置或非RCA儲存裝置(即,同質型儲存系統(homogeneous storage system))的實例。對於混合型或異質型儲存系統(mixed or heterogeneous storage system),熟習此項技術者應理解可如何擴展簡化的技術300以在單獨儲存裝置的基礎上進行應用。
方塊302示出,在一個實施例中,可偵測到與資料組塊相關聯的錯誤。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊304示出,在一個實施例中,可關於資料再生碼(DRC)是將由主機裝置還是將由相應的RCA儲存裝置計算而作出判斷,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊306示出,在一個實施例中,若將由主機以較傳統的方式計算DRC,則可關於是否存在足以計算DRC的現有資料而作出判斷,如上所述。在一個此種實施例中,此可包括判斷K+R個資料組塊中是否有K個組塊是可用的。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊399示出,在一個實施例中,若不存在足以計算DRC的無錯誤組塊,則除重新創建出錯的資料組塊之外亦可進行某種其他形式的錯誤處置。在各種實施例中,此可簡單地為報告資料是具訛誤或不可用的。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊308示出,在一個實施例中,可自各個(例如,K+R個)儲存裝置讀取所需數目個組塊(例如,K個組塊),如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊310示出,在一個實施例中,主機裝置可使用無錯
誤組塊(例如,K個組塊)來重構或重新創建出錯的組塊,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊350示出,在一個實施例中,可判斷是否存在足以計算DRC的無錯誤組塊(例如,D個組塊),如上所述。若否,則在各種實施例中,技術300可轉為以方塊306開始而嘗試非RCA裝置路徑。否則,技術300可繼續進行至方塊352。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊352示出,在一個實施例中,可向全部(例如,K+R個)儲存裝置中的所需數目(例如,D)個儲存裝置發佈讀取以修補命令,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊354示出,在一個實施例中,可關於將使用多個版本或類型的DRC技術中的哪一者而作出判斷,如上所述。在所示實施例中,DRC技術的版本或類型被概括成以上所述的類型1技術及類型2技術,然而應理解,該些類型僅為幾個說明性實例,所揭露標的並非僅限於所述說明性實例,且此外,在那些廣泛的類型內,可存在諸多子類型,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或
圖2D所示設備或系統來實行,如上所述。
方塊356示出,在一個實施例中,若選擇類型1 DRC技術,則可對RCA儲存裝置內的組塊應用修補功能,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊358示出,在一個實施例中,若選擇類型2 DRC技術,則可計算進行修補所需的區塊(或其他子部分,例如封包),如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊360示出,在一個實施例中,一旦計算出DRC或所需的區塊,便可將DRC或區塊傳送至主機裝置,如上所述。在各種實施例中,此可包括較非RCA路徑更小的資料大小或更少數目的訊息,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
方塊362示出,在一個實施例中,主機裝置可使用DRC或所傳回的區塊來重構或重新創建出錯的組塊,如上所述。在各種實施例中,由此方塊示出的動作中的一或多者可由圖1、圖2A、圖2B、圖2C或圖2D所示設備或系統來實行,如上所述。
在各種實施例中,主機裝置可向RCA儲存裝置提供將RCA儲存裝置的(或其中的處理器的)計算資料再生碼的能力開
啟或關閉的命令。因應於所述命令,RCA儲存裝置可用作圖2B或圖2D中所示的RCA儲存裝置,或者用作圖2A或圖2C中所示的傳統或非RCA儲存裝置。
圖4是可包括根據所揭露標的的原理形成的半導體裝置的資訊處理系統400的示意性方塊圖。
參照圖4,資訊處理系統400可包括根據所揭露標的的原理構造的裝置中的一或多者。在另一實施例中,資訊處理系統400可採用或執行根據所揭露標的的原理的一或多種技術。
在各種實施例中,資訊處理系統400可包括計算裝置,例如膝上型電腦、桌上型電腦、工作站、伺服器、刀鋒型伺服器、個人數位助理、智慧型電話、平板電腦、及其他適當電腦、或者其虛擬機器或虛擬計算裝置。在各種實施例中,資訊處理系統400可由使用者(圖中未示出)使用。
根據所揭露標的的資訊處理系統400可更包括中央處理單元(CPU)、邏輯、或處理器410。在一些實施例中,處理器410可包括一或多個功能單元區塊(functional unit block,FUB)或者組合邏輯區塊(combinational logic blocks,CLB)415。在此種實施例中,組合邏輯區塊可包括各種布林邏輯運算(例如,反及(NAND)、反或(NOR)、反(NOT)、互斥或(XOR))、穩定化邏輯裝置(例如,正反器、鎖存器)、其他邏輯裝置、或其組合。該些組合邏輯運算可以簡單或複雜的方式被配置以處理輸入訊號以達成所需結果。應理解,儘管闡述了同步組合邏輯運算的幾個
說明性實例,然而所揭露標的並非受此限制且可包括非同步運算或其混合運算。在一個實施例中,組合邏輯運算可包括多個互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,該些CMOS電晶體可被配置至實行邏輯運算的閘中;然而應理解,其他技術可被使用且處於所揭露標的的範圍內。
根據所揭露標的的資訊處理系統400可更包括揮發性記憶體420(例如,隨機存取記憶體(Random Access Memory,RAM))。根據所揭露標的的資訊處理系統400可更包括非揮發性記憶體430(例如,硬碟機、光學記憶體、反及記憶體、或快閃記憶體)。在一些實施例中,揮發性記憶體420、非揮發性記憶體430、或者其組合或部分可被稱為「儲存媒體」。在各種實施例中,揮發性記憶體420及/或非揮發性記憶體430可被配置以以半永久或實質上永久形式來儲存資料。
在各種實施例中,資訊處理系統400可包括一或多個網路介面440,所述一或多個網路介面440被配置以使得資訊處理系統400能夠成為通訊網路的一部分及經由通訊網路進行通訊。無線相容認證(Wi-Fi)協定的實例可包括但不限於電機電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11g、IEEE 802.11n。蜂巢式協定的實例可包括但不限於:IEEE 802.16m(亦稱進階無線都會區域網路(Metropolitan Area Network,MAN)、進階長期演進(Long Term Evolution,LTE)、
全球行動通訊系統(Global System for Mobile Communications,GSM)增強資料速率演進(Enhanced Data rates for GSM Evolution,EDGE)、演進型高速封包存取(Evolved High-Speed Packet Access,HSPA+)。有線協定的實例可包括但不限於IEEE 802.3(亦稱乙太網路)、光纖頻道(Fibre Channel)、電力線通訊(例如,HomePlug、IEEE 1901)。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於所述實例。
根據所揭露標的的資訊處理系統400可更包括使用者介面單元450(例如,顯示器配接器、觸感介面、人類介面裝置)。在各種實施例中,此使用者介面單元450可被配置以自使用者接收輸入及/或將輸出提供至使用者。亦可使用其他種類的裝置來達成與使用者的互動;舉例而言,提供至使用者的回饋可為任何形式的感覺回饋,例如,視覺回饋、聽覺回饋、或觸覺回饋;且來自使用者的輸入可以任何形式(包括聲學輸入、語音輸入、或觸覺輸入)被接收。
在各種實施例中,資訊處理系統400可包括一或多個其他裝置或者硬體組件460(例如,顯示器或監視器、鍵盤、滑鼠、照相機、指紋讀取器、視訊處理器)。應理解,以上內容僅為幾個說明性實例,所揭露標的並非僅限於該些實例。
根據所揭露標的的資訊處理系統400可更包括一或多個系統匯流排405。在此種實施例中,系統匯流排405可被配置以以通訊方式耦合處理器410、揮發性記憶體420、非揮發性記憶體
430、網路介面440、使用者介面單元450、及一或多個硬體組件460。由處理器410處理的資料或自非揮發性記憶體430外部輸入的資料可儲存於非揮發性記憶體430或揮發性記憶體420中。
在各種實施例中,資訊處理系統400可包括或執行一或多個軟體組件470。在一些實施例中,軟體組件470可包括作業系統(operating system,OS)及/或應用程式。在一些實施例中,OS可被配置以為應用程式提供一或多個服務並作為媒介在應用程式與資訊處理系統400的各種硬體組件(例如,處理器410、網路介面440)之間進行管理或發揮作用。在此種實施例中,資訊處理系統400可包括一或多個原生應用程式,所述一或多個原生應用程式可安裝於本端(例如,非揮發性記憶體430內)且被配置以由處理器410直接執行並與OS直接互動。在此種實施例中,原生應用程式可包括預編譯的機器可執行碼。在一些實施例中,原生應用程式可包括指令碼解譯器(例如,C殼(C shell,csh)、AppleScript、AutoHotkey)或虛擬執行機器(virtual execution machine,VM)(例如,Java虛擬機器、微軟通用語言執行環境(Microsoft Common Language Runtime)),所述指令碼解譯器或虛擬執行機器被配置以將原始碼(source code)或目的碼(object code)轉譯成隨後由處理器410執行的可執行碼。
上文所述的半導體裝置可使用各種封裝技術來進行包封。舉例而言,根據所揭露標的的原理構造的半導體裝置可使用以下技術中的任一者來進行包封:疊層封裝(package on package,
POP)技術、球柵陣列(ball grid array,BGA)技術、晶片尺度封裝(chip scale package,CSP)技術、塑膠引線晶片載體(plastic leaded chip carrier,PLCC)技術、塑膠雙列直插式封裝(plastic dual in-line package,PDIP)技術、窩伏爾組件中晶粒封裝(die in waffle pack)技術、盤內晶粒封裝(die in wafer form)技術、板上晶片封裝(chip on board,COB)技術、雙列直插式陶瓷封裝(ceramic dual in-line package,CERDIP)技術、塑膠公制四方扁平封裝(plastic metric quad flat package,PMQFP)技術、塑膠四方扁平封裝(plastic quad flat package,PQFP)技術、小輪廓封裝(small outline package,SOIC)技術、收縮型小輪廓封裝(shrink small outline package,SSOP)技術、薄型小輪廓封裝(thin small outline package,TSOP)技術、薄型四方扁平封裝(thin quad flat package,TQFP)技術、系統級封裝(system in package,SIP)技術、多晶片封裝(multi-chip package,MCP)技術、晶圓級製作封裝(wafer-level fabricated package,WFP)技術、晶圓級加工堆疊封裝(wafer-level processed stack package,WSP)技術、或熟習此項技術者將知曉的其他技術。
各方法步驟可由一或多個可程式化處理器實行,所述一或多個可程式化處理器實行電腦程式以藉由對輸入資料進行操作並產生輸出來執行功能。各方法步驟亦可由特殊用途邏輯電路系統(例如,現場可程式化閘陣列(FPGA)或應用特定積體電路(application-specific integrated circuit,ASIC))來實行,且設備
可被實作為所述特殊用途邏輯電路系統。
在各種實施例中,電腦可讀取媒體可包括當被執行時使裝置實行各方法步驟的至少一部分的指令。在一些實施例中,電腦可讀取媒體可包含於磁性媒體、光學媒體、其他媒體、或其組合(例如,光碟-唯讀記憶體(Compact Disc-Read Only Memory,CD-ROM)、硬碟機、唯讀記憶體、快閃磁碟機)中。在此種實施例中,電腦可讀取媒體可為有形且非暫時性地實施的製品。
儘管已參照示例性實施例闡述了所揭露標的的原理,然而對於熟習此項技術者將顯而易見,可在不背離該些所揭露概念的範圍的條件下對所述實施例作出各種改變及潤飾。因此,應理解,上述實施例並非是限制的,而僅是說明性的。因此,所揭露概念的範圍應由對以下申請專利範圍及其等效內容的最廣泛的所允許解釋來決定,而不應由上述說明限定或限制。因此,應理解,隨附申請專利範圍旨在涵蓋歸屬於各實施例的範圍內的所有此種潤飾及改變。
203:系統
210:主機裝置
214、214C:組塊
216、B1、B2、B3、B4:區塊
218、R1:再生碼
222、232:處理器
224、234:記憶體
226:外部介面
228:碼記憶體
229:指令集
236:介面
242B:讀取以修補命令/命令/訊息
244B:訊息
252:再生碼感知型(RCA)儲存裝置/儲存裝置
287:再生碼技術/再生技術
Claims (19)
- 一種用於協助低頻寬資料修補的設備,包括:再生碼感知型(RCA)儲存裝置,被配置以計算用於資料錯誤校正的至少一種類型的資料再生碼;所述再生碼感知型儲存裝置包括:記憶體,被配置以將資料儲存在包括資料區塊的組塊;處理器,被配置以基於與外部主機裝置相關聯的請求,基於所選數目個資料區塊來計算所述資料再生碼,其中所述請求指示選取所述組塊的數目個資料區塊;以及外部介面,被配置以:將所述資料再生碼傳送至所述外部主機裝置,並且自所述外部主機裝置接收命令,所述命令將所述處理器配置為計算所述資料再生碼。
- 如申請專利範圍第1項所述的設備,其中所述再生碼感知型儲存裝置更包括:碼記憶體,被配置以儲存一個或多個指令集,所述一個或多個指令集被配置以產生不同的資料再生碼;且其中所述處理器由所述外部主機裝置配置以選擇所述一個或多個指令集中的一者以計算所述資料再生碼。
- 如申請專利範圍第2項所述的設備,其中所述碼記憶體被配置以具有由所述外部主機裝置向所述碼記憶體寫入的所述一個或多個指令集。
- 如申請專利範圍第1項所述的設備,其中所述外部介面被配置以:自所述外部主機裝置接收命令,該命令能夠基於所述所選數目個資料區塊來產生所述資料再生碼。
- 如申請專利範圍第1項所述的設備,其中所述外部介面被配置以:自所述外部主機裝置接收指示請求修補資料並指示要計算的所述資料再生碼的修補命令;且向所述外部主機裝置傳回所述資料再生碼,其中所述資料再生碼的大小小於資料集的大小。
- 如申請專利範圍第1項所述的設備,其中所述處理器被配置以,在所述外部主機裝置作出請求時,透過資料再生技術計算不同版本的所述資料再生碼;且其中由所述處理器計算的所述版本是由所述外部主機裝置判定。
- 一種用於協助低頻寬資料修補的系統,包括:主機裝置,被配置以:在分散式儲存系統當中將資料儲存為資料組塊,偵測資料組塊與錯誤相關聯,且因應於所述錯誤的所述偵測,藉由資料再生技術基於所述資料組塊來重構與所述錯誤相關聯的所述資料組塊;且所述分散式儲存系統包括: 儲存裝置,被配置以儲存所述資料的相應的資料組塊,其中所述儲存裝置包括至少一個再生碼感知型(RCA)儲存裝置,被配置以在內部計算至少一種類型的資料再生碼。
- 如申請專利範圍第7項所述的系統,其中所述再生碼感知型儲存裝置包括:記憶體,被配置以將所述資料儲存成所述資料組塊,所述資料組塊又包括資料區塊;處理器,被配置以基於與外部主機裝置相關聯的請求,基於所選數目個資料區塊來計算資料再生碼,其中所述請求指示選取所述資料組塊的數目個資料區塊;以及外部介面,被配置以將所述資料再生碼傳送至所述主機裝置。
- 如申請專利範圍第7項所述的系統,其中所述主機裝置被配置以:判定能夠在內部計算資料再生碼的儲存裝置,向所述儲存裝置請求資料組塊或資料部分,且由所述主機裝置至少部分地基於所述資料組塊或所述資料部分來計算所述資料再生碼。
- 如申請專利範圍第9項所述的系統,其中所述主機裝置被配置以至少部分地基於以下因素中的一或多者來判定將對所述資料再生碼的所述計算卸載給所述儲存裝置:所述儲存裝置可用的資料再生技術,與所述分散式儲存系統相關聯的可用頻寬的量, 所述資料再生碼的大小與所述資料組塊或所述資料部分的大小的比較,以及所述主機裝置內可用的計算能力的量。
- 如申請專利範圍第9項所述的系統,其中所述主機裝置被配置以,基於由所述主機裝置計算的所述資料再生碼及由相應的儲存裝置計算的所述資料再生碼來重構錯誤的所述資料組塊。
- 如申請專利範圍第9項所述的系統,其中所述主機裝置被配置以:藉由第一協定與能夠在內部計算所述資料再生碼的第一儲存裝置進行通訊,且藉由第二協定與不能夠在內部計算所述資料再生碼的第二儲存裝置進行通訊。
- 如申請專利範圍第7項所述的系統,其中所述主機裝置被配置以:偵測能夠在內部計算相應的資料再生碼的儲存裝置;以及將與資料再生技術相關聯的指令儲存於相應的儲存裝置上,使得所述儲存裝置被配置以藉由所述資料再生技術來計算所述資料再生碼。
- 如申請專利範圍第13項所述的系統,其中所述主機裝置被配置以:藉由至少部分地透過所述主機裝置選擇的所述資料再生技術 偵測能夠計算所述資料再生碼的儲存裝置來偵測能夠在內部計算所述相應的資料再生碼的儲存裝置。
- 一種用於協助低頻寬資料修補的系統,包括:主機裝置,被配置以:在儲存系統當中以組塊的形式儲存資料,偵測組塊與錯誤相關聯,且因應於所述錯誤的所述偵測,至少部分地基於所述組塊而藉由資料再生技術來校正所述錯誤;且所述儲存系統包括:儲存裝置,被配置以儲存所述資料的相應的組塊,其中所述儲存裝置包括至少一個再生碼感知型(RCA)儲存裝置,所述再生碼感知型儲存裝置被配置以在內部計算至少一種類型的資料再生碼,且其中所述再生碼感知型儲存裝置包括:記憶體,被配置以將資料儲存在包括資料區塊的組塊,處理器,被配置以基於與所述主機裝置相關聯的請求,基於所選數目個資料區塊來計算所述資料再生碼,其中所述請求指示選取所述組塊的數目個資料區塊,碼記憶體,被配置以儲存一個或多個指令集,所述一個或多個指令集被配置以產生不同的資料再生碼,以及外部介面,被配置以將所述資料再生碼傳送至所述主機裝置。
- 如申請專利範圍第15項所述的系統,其中所述主機裝置被配置以:將所述指令集寫入至所述再生碼感知型儲存裝置的所述碼記憶體,其中所述指令集被配置以便利於由所述再生碼感知型儲存裝置藉由所述資料再生技術進行所述計算。
- 如申請專利範圍第15項所述的系統,其中所述主機裝置被配置以藉由動態地將對一或多個資料再生碼的計算至少部分地卸載給所述再生碼感知型儲存裝置中相應的再生碼感知型儲存裝置來校正所述錯誤。
- 如申請專利範圍第17項所述的系統,其中所述主機裝置被配置以,藉由由所述主機裝置為由所述儲存系統內並非是再生碼感知型儲存裝置的儲存裝置儲存的一個或多個資料組塊計算資料再生碼來校正所述錯誤,且其中由所述主機裝置進行計算包括自所述儲存裝置傳送所述資料組塊的至少一部分;且其中由所述再生碼感知型儲存裝置計算且傳送至所述主機裝置的所述資料再生碼的大小小於自所述儲存裝置傳送至所述主機裝置的所述資料組塊的所述至少一部分的大小。
- 如申請專利範圍第15項所述的系統,其中所述儲存裝置包括非再生碼感知型儲存裝置,且其中所述主機裝置被配置以:藉由第一協定與所述再生碼感知型儲存裝置進行通訊,且藉由第二協定與所述非再生碼感知型儲存裝置進行通訊。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862682763P | 2018-06-08 | 2018-06-08 | |
US62/682,763 | 2018-06-08 | ||
US16/103,907 US10719397B2 (en) | 2018-06-08 | 2018-08-14 | System, device and method for storage device assisted low-bandwidth data repair |
US16/103,907 | 2018-08-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202018503A TW202018503A (zh) | 2020-05-16 |
TWI788554B true TWI788554B (zh) | 2023-01-01 |
Family
ID=68763832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108112265A TWI788554B (zh) | 2018-06-08 | 2019-04-09 | 用於儲存裝置協助低頻寬資料修補的設備與系統 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10719397B2 (zh) |
JP (1) | JP7187387B2 (zh) |
KR (1) | KR102434917B1 (zh) |
CN (1) | CN110580204B (zh) |
TW (1) | TWI788554B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719397B2 (en) * | 2018-06-08 | 2020-07-21 | Samsung Electronics Co., Ltd. | System, device and method for storage device assisted low-bandwidth data repair |
MX2021009011A (es) * | 2019-01-29 | 2021-11-12 | Cloud Storage Inc | Método de reparación de nodos de codificación y almacenamiento para códigos de regeneración de almacenamiento mínimo para sistemas de almacenamiento distribuido. |
US12026055B2 (en) | 2020-07-13 | 2024-07-02 | Samsung Electronics Co., Ltd. | Storage device with fault resilient read-only mode |
US11340986B1 (en) | 2020-12-08 | 2022-05-24 | Western Digital Technologies, Inc. | Host-assisted storage device error correction |
JP7140424B1 (ja) * | 2021-06-18 | 2022-09-21 | Necプラットフォームズ株式会社 | コンピュータ装置、情報処理方法、プログラム |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201201017A (en) * | 2010-01-27 | 2012-01-01 | Toshiba Kk | Memory device and host device |
CN104035903A (zh) * | 2014-07-02 | 2014-09-10 | 东南大学 | 一种基于可重构技术的二维数据访问动态自适应方法 |
US20150205664A1 (en) * | 2014-01-17 | 2015-07-23 | Fusion-Io, Inc. | Determining a configuration parameter using a soft read command |
US20160110252A1 (en) * | 2014-10-20 | 2016-04-21 | SanDisk Technologies, Inc. | Distributing storage of ecc code words |
US20170161148A1 (en) * | 2015-12-02 | 2017-06-08 | Netapp, Inc. | Detection of and recovery from silent data loss in an erasure-coded storage system |
US20180060169A1 (en) * | 2016-08-26 | 2018-03-01 | Netapp, Inc. | Multiple node repair using high rate minimum storage regeneration erasure code |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8751859B2 (en) | 2007-05-10 | 2014-06-10 | International Business Machines Corporation | Monitoring lost data in a storage system |
JP2009289170A (ja) * | 2008-05-30 | 2009-12-10 | Nec Electronics Corp | データ処理装置、メモリコントローラ及びそのアクセス制御方法 |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
WO2012147087A1 (en) | 2011-04-29 | 2012-11-01 | Tata Consultancy Services Limited | Archival storage and retrieval system |
US8713404B2 (en) * | 2011-07-01 | 2014-04-29 | Apple Inc. | Controller interface providing improved data reliability |
US8519737B2 (en) * | 2011-07-01 | 2013-08-27 | Apple Inc. | Controller interface providing improved signal integrity |
US9031922B2 (en) * | 2012-05-02 | 2015-05-12 | Microsoft Technology Licensing, Llc | Code regeneration determination from selected metadata fingerprints |
US9058122B1 (en) * | 2012-08-30 | 2015-06-16 | Google Inc. | Controlling access in a single-sided distributed storage system |
US20150006846A1 (en) * | 2013-06-28 | 2015-01-01 | Saratoga Speed, Inc. | Network system to distribute chunks across multiple physical nodes with disk support for object storage |
US9697226B1 (en) * | 2013-06-28 | 2017-07-04 | Sanmina Corporation | Network system to distribute chunks across multiple physical nodes |
US9152495B2 (en) * | 2013-07-03 | 2015-10-06 | SanDisk Technologies, Inc. | Managing non-volatile media using multiple error correcting codes |
US10073731B2 (en) * | 2013-11-27 | 2018-09-11 | Intel Corporation | Error correction in memory |
US9367562B2 (en) * | 2013-12-05 | 2016-06-14 | Google Inc. | Distributing data on distributed storage systems |
US9292389B2 (en) * | 2014-01-31 | 2016-03-22 | Google Inc. | Prioritizing data reconstruction in distributed storage systems |
US9323615B2 (en) * | 2014-01-31 | 2016-04-26 | Google Inc. | Efficient data reads from distributed storage systems |
US9223644B1 (en) * | 2014-02-25 | 2015-12-29 | Google Inc. | Preventing unnecessary data recovery |
US9804925B1 (en) * | 2014-02-25 | 2017-10-31 | Google Inc. | Data reconstruction in distributed storage systems |
US9311194B1 (en) * | 2014-03-28 | 2016-04-12 | Google Inc. | Efficient resource utilization in data centers |
US9239757B2 (en) * | 2014-05-30 | 2016-01-19 | Sandisk Technologies Inc. | Method and apparatus for relocating data in non-volatile memory |
US9740610B2 (en) * | 2014-12-24 | 2017-08-22 | Intel Corporation | Polarity based data transfer function for volatile memory |
US9811420B2 (en) * | 2015-03-27 | 2017-11-07 | Intel Corporation | Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC) |
KR101609510B1 (ko) * | 2015-04-10 | 2016-04-06 | 홍익대학교 산학협력단 | 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치 |
WO2017041233A1 (zh) * | 2015-09-08 | 2017-03-16 | 广东超算数据安全技术有限公司 | 一种功能修复再生码的编码和存储节点修复方法 |
US10360119B2 (en) * | 2015-10-06 | 2019-07-23 | Netapp, Inc. | Data recovery in a distributed storage system |
CN108140016B (zh) | 2015-10-12 | 2021-02-23 | 华为技术有限公司 | 确定矩阵-向量相乘的运算最优序列的优化器 |
US20170179979A1 (en) * | 2015-12-18 | 2017-06-22 | Netapp, Inc. | Systems and Methods for Minimum Storage Regeneration Erasure Code Construction Using r-Ary Trees |
US10019317B2 (en) | 2016-04-25 | 2018-07-10 | Nexenta Systems, Inc. | Parity protection for data chunks in an object storage system |
US20170329684A1 (en) | 2016-05-13 | 2017-11-16 | Synology Incorporated | Method and apparatus for performing data recovery in redundant storage system |
US10372534B2 (en) * | 2016-09-20 | 2019-08-06 | Samsung Electronics Co., Ltd. | Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device |
US10740198B2 (en) * | 2016-12-22 | 2020-08-11 | Purdue Research Foundation | Parallel partial repair of storage |
US20190095296A1 (en) * | 2017-09-27 | 2019-03-28 | Hewlett Packard Enterprise Development Lp | Reading or Reconstructing Requested Data from RAID Volume |
US11329817B2 (en) * | 2017-10-19 | 2022-05-10 | Devi Selva Kumar Vijayanarayanan | Protecting data using controlled corruption in computer networks |
US10719397B2 (en) * | 2018-06-08 | 2020-07-21 | Samsung Electronics Co., Ltd. | System, device and method for storage device assisted low-bandwidth data repair |
-
2018
- 2018-08-14 US US16/103,907 patent/US10719397B2/en active Active
-
2019
- 2019-04-02 KR KR1020190038752A patent/KR102434917B1/ko active IP Right Grant
- 2019-04-09 TW TW108112265A patent/TWI788554B/zh active
- 2019-05-30 CN CN201910460383.3A patent/CN110580204B/zh active Active
- 2019-06-03 JP JP2019103825A patent/JP7187387B2/ja active Active
-
2020
- 2020-07-17 US US16/932,679 patent/US11449387B2/en active Active
-
2022
- 2022-09-19 US US17/948,216 patent/US11940875B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201201017A (en) * | 2010-01-27 | 2012-01-01 | Toshiba Kk | Memory device and host device |
US20150205664A1 (en) * | 2014-01-17 | 2015-07-23 | Fusion-Io, Inc. | Determining a configuration parameter using a soft read command |
CN104035903A (zh) * | 2014-07-02 | 2014-09-10 | 东南大学 | 一种基于可重构技术的二维数据访问动态自适应方法 |
US20160110252A1 (en) * | 2014-10-20 | 2016-04-21 | SanDisk Technologies, Inc. | Distributing storage of ecc code words |
US20170161148A1 (en) * | 2015-12-02 | 2017-06-08 | Netapp, Inc. | Detection of and recovery from silent data loss in an erasure-coded storage system |
US20180060169A1 (en) * | 2016-08-26 | 2018-03-01 | Netapp, Inc. | Multiple node repair using high rate minimum storage regeneration erasure code |
Also Published As
Publication number | Publication date |
---|---|
US10719397B2 (en) | 2020-07-21 |
US20230016236A1 (en) | 2023-01-19 |
JP7187387B2 (ja) | 2022-12-12 |
CN110580204A (zh) | 2019-12-17 |
US20190377637A1 (en) | 2019-12-12 |
KR20190139752A (ko) | 2019-12-18 |
US11940875B2 (en) | 2024-03-26 |
TW202018503A (zh) | 2020-05-16 |
KR102434917B1 (ko) | 2022-08-22 |
US11449387B2 (en) | 2022-09-20 |
CN110580204B (zh) | 2022-12-06 |
US20200349006A1 (en) | 2020-11-05 |
JP2019212310A (ja) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI788554B (zh) | 用於儲存裝置協助低頻寬資料修補的設備與系統 | |
US10284234B1 (en) | Facilitation of data deletion for distributed erasure coding | |
TWI791891B (zh) | 用於錯誤修正代碼的加速的裝置及系統 | |
US11086525B2 (en) | Resilient external memory | |
US8281093B1 (en) | Systems and methods for creating consolidated backups of snapshot hierarchies | |
WO2018054081A1 (zh) | 故障处理方法、虚拟架构管理系统和业务管理系统 | |
US10146632B2 (en) | Efficient mechanism to replicate data for multiple controllers | |
US20150227416A1 (en) | Combined Asynchronous and Synchronous Fountain Code Storage In an Object Store | |
TW201929441A (zh) | 用於針對糾錯碼功能的連線功能測試的系統和方法 | |
KR102592979B1 (ko) | 딥-솔리드 스테이트 장치 및 신경망 기반의 영구적 데이터 스토리지 | |
CN110322922B (zh) | 带内动态随机存取存储器纠错编码的设备和系统 | |
CN111610932B (zh) | 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统 | |
WO2019218110A1 (en) | Technologies for providing remote out-of-band firmware updates | |
CN111506450B (zh) | 用于数据处理的方法、设备和计算机程序产品 | |
CN116302659A (zh) | Gpu显存错误处理方法及装置、电子设备和存储介质 | |
US11663079B2 (en) | Data recovery using a combination of error correction schemes | |
US11487528B1 (en) | Managing system upgrades in a network computing environment | |
US11436101B2 (en) | Rebuild directory/block allocation map from embedded data block information in file system disk | |
US8938639B1 (en) | Systems and methods for performing fast failovers | |
US20210191818A1 (en) | Preliminary data protection using composite copies of data in a data storage system |