TWI791891B - 用於錯誤修正代碼的加速的裝置及系統 - Google Patents

用於錯誤修正代碼的加速的裝置及系統 Download PDF

Info

Publication number
TWI791891B
TWI791891B TW108133489A TW108133489A TWI791891B TW I791891 B TWI791891 B TW I791891B TW 108133489 A TW108133489 A TW 108133489A TW 108133489 A TW108133489 A TW 108133489A TW I791891 B TWI791891 B TW I791891B
Authority
TW
Taiwan
Prior art keywords
processing device
error correction
correction code
data
code
Prior art date
Application number
TW108133489A
Other languages
English (en)
Other versions
TW202026871A (zh
Inventor
秦冕
李周桓
瑞克哈 皮茲馬尼
奇亮奭
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202026871A publication Critical patent/TW202026871A/zh
Application granted granted Critical
Publication of TWI791891B publication Critical patent/TWI791891B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)

Abstract

本發明公開一種用於錯誤修正代碼的加速的裝置及系統。 所述裝置可包括主機介面電路,所述主機介面電路被配置以從主機處理器件接收分擔指令,其中分擔指令指示所述裝置計算與多個資料元相關聯的錯誤修正代碼。所述裝置可包括儲存介面電路,所述儲存介面電路被配置以接收所述多個資料元。所述裝置可包括多個儲存緩衝器電路,所述多個儲存緩衝器電路被配置以臨時儲存所述多個資料元。所述裝置可包括多個錯誤代碼計算電路,所述多個錯誤代碼計算電路被配置以至少部分地計算錯誤修正代碼而不由主機處理器件進行額外處理。

Description

用於錯誤修正代碼的加速的裝置及系統
本說明涉及資料儲存,且更具體來說,涉及一種用於錯誤修正代碼的加速的系統、器件和/或方法。
[相關申請案的交叉參考]
本申請主張2018年12月14日提出申請、標題為“用於最小儲存再生代碼的現場可程式化閘陣列加速系統(FPGA ACCELERATION SYSTEM FOR MSR CODES)”且序列號為62/780,185的臨時專利申請的優先權。此先前提交的申請的主題併入本文供參考。
在編碼理論中,擦除代碼(erasure code)是在假設為位元擦除(而不是位元錯誤)的情況下的前向錯誤修正(forward error correction,FEC)代碼,它將由k個符號形成的消息轉換成具有n個符號的較長消息(碼字(code word))以使得可從這n個符號的子集恢復原始消息。分數r=k/n被稱為碼率(code rate)。分數k’/k 被稱為接收效率,其中k’表示進行恢復所需的符號的數目。
再生代碼會解決從現有編碼片段重建(也被稱為修復)丟失的編碼片段的問題。更詳細來說,再生代碼是一類旨在減少修復期間的下載量、同時保持傳統最大距離可分(maximum distance separable,MDS)代碼的儲存效率的代碼。這個問題發生在其中為保持編碼冗餘而進行的通信成為問題的分布式儲存系統(distributed storage system)中。
分布式儲存系統一般是將信息儲存(常常以複製方式儲存)在多於一個節點或器件上的電腦網路。它常常用來指其中用戶將信息儲存在多個節點上的分布式資料庫、或者其中用戶將信息儲存在多個對等網路節點(peer network node)上的電腦網路。分布式儲存系統通常使用錯誤檢測及修正技術。一些分布式儲存系統使用前向錯誤修正技術以在文件的一些部分受到損壞或不可用時恢復原始文件、塊(chunk)或二進制大對象(binary large object,blob)。其他分布式儲存系統則再次試圖從不同的鏡像(mirror)下載所述文件。
根據一個一般方面,一種用於錯誤修正代碼的加速的裝置可包括主機介面電路,所述主機介面電路被配置以從主機處理器件接收分擔指令,其中所述分擔指令指示所述裝置計算與多個資料元相關聯的錯誤修正代碼。所述裝置可包括儲存介面電路, 所述儲存介面電路被配置以接收所述多個資料元。所述裝置可包括多個儲存緩衝器電路,所述多個儲存緩衝器電路被配置以臨時儲存所述多個資料元。所述裝置可包括多個錯誤代碼計算電路,所述多個錯誤代碼計算電路被配置以至少部分地計算所述錯誤修正代碼而不由所述主機處理器件進行額外處理。
根據另一一般方面,一種用於錯誤修正代碼的加速的系統可包括記憶體,所述記憶體被配置以儲存多個資料元。所述系統可包括主機處理器件,所述主機處理器件被配置以將所述錯誤修正代碼的計算分擔到能夠重新編程的處理器件。所述系統可包括所述能夠重新編程的處理器件,所述能夠重新編程的處理器件可被配置以至少部分地基於所述多個資料元來計算錯誤修正代碼。所述能夠重新編程的處理器件可包括能夠重新配置的管線,所述能夠重新配置的管線至少部分地計算所述錯誤修正代碼且基於所述多個資料元的數目進行重新配置。
根據另一一般方面,一種用於錯誤修正代碼的加速的裝置可包括主機處理器件,所述主機處理器件被配置以將錯誤修正代碼的計算分擔到分擔處理器件。所述裝置可包括輸入/輸出(I/O)系統,所述輸入/輸出(I/O)系統被配置以讀取資料元並將所述資料元寫入到多個儲存器件。所述裝置可包括所述分擔處理器件,所述分擔處理器件可被配置以至少部分地基於多個資料元來計算所述錯誤修正代碼。所述分擔處理器件可包括儲存介面電路,所述儲存介面電路被配置以接收所述多個資料元。所述分擔處理器 件可包括多個儲存緩衝器電路,所述多個儲存緩衝器電路被配置以臨時儲存所述多個資料元。所述分擔處理器件可包括多個錯誤代碼計算電路,所述多個錯誤代碼計算電路被配置以至少部分地計算所述錯誤修正代碼而不由所述主機處理器件進行額外處理。
在附圖及以下說明中闡述一種或多種實施方式的細節。通過本說明及圖式以及通過申請專利範圍書,其他特徵將顯而易見。
實質上在各圖中的至少一個圖中示出和/或結合各圖中的至少一個圖闡述的一種用於資料儲存的系統和/或方法、且更具體來說一種用於錯誤修正代碼的加速的系統、器件和/或方法在申請專利範圍書中予以更完整地闡述。
100、200、300:系統
102:處理器/主機處理器或處理器件/主機處理器件/器件
104:可重新編程的分擔處理器件(ROPD)/器件
106:輸入/輸出(I/O)介面或系統/I/O系統
180:多個節點或儲存器件/儲存系統/儲存器件/節點或計算器件
112:主機或計算器件/計算器件
114:分布式儲存系統/分布式儲存系統或多個資料節點/儲存介質/儲存系統
198:資料或塊/塊/資料塊/原始資料塊/冗餘資料塊
202:分擔處理電路
204:儲存電路或單元/記憶體
212:輸入/輸入資料
214:輸出
222:儲存介面電路
224:儲存緩衝器電路/緩衝器
226:錯誤代碼計算電路
228:地址控制器/地址控制器單元
230:索引表
232:主機介面
242:預儲存係數表
244:乘法器或乘法查找表/乘法查找表
246:XOR或加法器/XOR
252:資料元
254:錯誤修正代碼
302:主執行緒或用戶執行緒或應用程式介面(API)/執行緒/用戶執行緒
304:程式庫(LIB)
306:儲存器件/儲存介質
308:硬體加速器或分擔處理器件/分擔處理器件
312:指令/計算執行緒/執行緒
314:回調執行緒
316:I/O隊列
317、352:I/O執行緒
322:請求隊列
324:編碼操作/編碼階段
326:完成隊列
328:解碼操作/解碼階段
332:硬體加速或分擔請求隊列/硬體加速隊列
342:錯誤代碼計算電路
400、401:時序圖
402:列/用戶執行緒
404:列/計算執行緒
406:列/回調執行緒
408:列/I/O執行緒
412、413、414、415、422、424、426、427、428、432、434、435、436、438、439、442、444、446、447、448、449:方塊
500:信息處理系統
505:系統匯流排
510:邏輯或處理器/處理器
515:功能單元塊(FUB)或組合邏輯塊(CLB)
520:揮發性記憶體
530:非揮發性記憶體
540:網路介面
550:用戶介面單元
560:其他器件或硬體組件/硬體組件
570:軟體組件
圖1是根據所公開主題的系統的示例性實施例的方塊圖。
圖2是根據所公開主題的系統的示例性實施例的方塊圖。
圖3A及圖3B是根據所公開主題的系統的示例性實施例的方塊圖。
圖4A及圖4B是根據所公開主題的系統的示例性實施例的時序圖。
圖5是可包括根據所公開主題的原理形成的器件的信息處理系統的示意性方塊圖。
各個圖式中相同的參考符號表示相同的元件。
在下文中,將參照附圖更充分地闡述各種示例性實施例,在所述附圖中示出一些示例性實施例。然而,本發明所公開主題可被實施為許多不同形式,而不應被視為僅限於本文所述示例性實施例。確切來說,提供這些示例性實施例是為了使本公開將透徹及完整,並將向所屬領域中的技術人員充分傳達本發明所公開主題的範圍。在圖式中,為清晰起見,可誇大各個層及各個區的大小及相對大小。
應理解,當稱一元件或層位於另一元件或層“上(on)”、“連接到(connected to)”或“耦合到(coupled to)”另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接到或直接耦合到所述另一元件或層,抑或可存在中間元件或層。相比之下,當稱一元件“直接位於(directly on)”另一元件或層上、“直接連接到(directly connected to)”或“直接耦合到(directly coupledto)”另一元件或層時,則不存在中間元件或層。相同的編號自始至終指代相同的元件。本文所用用語“和/或(and/or)”包括相關列出項中的一個或多個項的任意及所有組合。
應理解,儘管在本文中可使用“第一(first)”、“第二(second)”、“第三(third)”等用語來闡述各個元件、組件、區、層和/或區段,然而這些元件、組件、區、層和/或區段不應受限於這些用語。這些用語僅用於區分各個元件、組件、區、層或區段。 因此,以下論述的第一元件、組件、區、層或區段也可被稱為第二元件、組件、區、層或區段,而此並不背離本發明所公開主題的教示內容。
為易於說明,在本文中可使用例如“在...之下(beneath)”、“在...下面(below)”、“下部的(lower)”、“在...上方(above)”、“上部的(upper)”等空間相對性用語來闡述圖中所示一個元件或特徵與另一(其他)元件或特徵的關係。應理解,空間相對性用語旨在除圖中所繪示的取向外還囊括器件在使用或操作中的不同取向。舉例來說,如果圖中所示器件被翻轉,則被闡述為位於其他元件或特徵“下面”或“之下”的元件此時將被取向為位於所述其他元件或特徵“上方”。因此,示例性用語“在...下面”可囊括“上方”及“下面”兩種取向。器件可具有其他取向(旋轉90度或處於其他取向)且本文所用的空間相對性描述語相應地進行解釋。
同樣地,為易於說明,在本文中可使用例如“高(high)”、“低(low)”、“上拉(pull up)”、“下拉(pull down)”、“1”、“0”等電性用語來闡述圖中所示電壓位準或電流相對於其他電壓位準或電流的關係或者相對於另一(其他)元件或特徵的關係。應理解,所述電性相對用語旨在除了圖中所繪示的電壓或電流之外還囊括器件在使用或操作中的不同的參考電壓。舉例來說,如果圖中所示器件或信號被反相或使用其他參考電壓、電流或電荷,則被闡述為“高”或“被上拉”的元件此時與新的參考電壓或電流相比將為“低”或“被下拉”的。因此,示例性用語“高”可囊括相對低的電 壓或電流或者相對高的電壓或電流二者。器件可另外地基於不同的電性參考框架且本文所用的電性相對描述語相應地加以解釋。
本文所用術語僅是出於闡述特定示例性實施例的目的而並非旨在限制本發明所公開主題。除非上下文清楚地另外指明,否則本文所用單數形式“一(a、an)”及“所述(the)”旨在也包括複數形式。還應理解,當在本說明書中使用用語“包括(comprises 和/或comprising)”時,是指明所陳述特徵、整數、步驟、操作、元件和/或組件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、組件和/或其群組的存在或添加。
在本文中參照剖視圖闡述示例性實施例,所述剖視圖是對理想示例性實施例(及中間結構)的示意性例示。由此,預期會因例如製造技術和/或容差而導致相對於例示形狀的變化。因此,示例性實施例不應被視為僅限於本文所示區的特定形狀,而是應包含由例如製造引起的形狀偏差。舉例來說,被例示為矩形的注入區將通常具有圓形特徵或曲線特徵和/或在其邊緣存在注入濃度的梯度而非從注入區到非注入區為二元變化。同樣地,通過注入而形成的掩埋區可在所述掩埋區與在進行注入時所經過的表面之間的區中引起一些注入。因此,圖中所例示的區為示意性的且其形狀並非旨在例示器件的區的實際形狀且並非旨在限制本發明所公開主題的範圍。
除非另外定義,否則本文所用所有用語(包括技術及科學用語)的含義均與本發明所公開主題所屬領域中的一般技術人 員所通常理解的含義相同。還應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
在下文中,將參照附圖詳細闡釋示例性實施例。
圖1是根據所公開主題的系統100的示例性實施例的方塊圖。在所示實施例中,系統100可包括跨多個節點或儲存器件180儲存資料的分布式儲存系統114。
分布式儲存系統常常用於提供大規模可靠性儲存。這常常是通過將冗餘或錯誤修正(例如奇偶性)散佈在大量的節點或儲存器件中來完成的。然而,當節點或儲存器件離線(gooff-line)時(例如,由於網路錯誤、硬體故障等),資料存在可能受到損壞的嫌疑,或者至少冗餘度(level of redundancy)降低。儲存系統分佈越廣,這種情況會越頻繁發生。
可採用多種技術來防止這種情況的發生(例如鏡像(mirroring)、里德-所羅門編碼(Reed-Solomon encoding)),但是所公開的主題並不僅限於特定編碼。在此種實施例中,使用基於剩餘資料的公式來再生或重構遺失的資料(塊)。
在所示實施例中,系統100可包括一個或多個主機或計算器件112,所述一個或多個主機或計算器件112被配置成管理分布式儲存系統或多個資料節點114。計算器件112可包括從儲存系統180進行讀取以及向儲存系統180進行寫入的計算器件(例如, 電腦、服務器、虛擬機)。當發生錯誤(例如,資料塊遺失)時,計算器件112一般負責檢測錯誤並在可能的情況下修復錯誤。
在各種實施例中,計算器件112可包括計算器件,例如(舉例來說)膝上型電腦(laptop)、臺式電腦、工作站、個人數位助理、智能手機、平板電腦、系統晶片(system-on-a-chip,SoC)及其他適合的電腦或者虛擬機或虛擬機的虛擬計算器件。在各種實施例中,計算器件112可由用戶(未示出)使用。在各種實施例中,計算器件112可包括處理器102,處理器102被配置成執行一個或多個機器可執行指令或軟體、韌體或其組合。在一些實施例中,計算器件112可包括記憶體(未示出),所述記憶體被配置成臨時、永久、半永久、或以其組合方式儲存一條或多條資料。此外,記憶體可包括揮發性記憶體、非揮發性記憶體、或其組合。在各種實施例中,計算器件112可包括儲存介質114或與儲存介質114進行通信,儲存介質114被配置成以半永久或實質上永久的形式儲存資料。
在所示實施例中,每一資料集可被計算器件112分解或片段化(fragmented)成多個較小的資料或塊198。在所示實施例中,資料199(圖1中未示出199)被劃分成塊198(例如,D1、D2、D3及D4)。此外,在各種實施例中,計算器件112可將某種形式的冗余應用到資料塊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;儘管如此,但應理解,以上僅為例示性實例,所公開的主題並不僅限於此。
在所示實施例中,計算器件112使得這些塊198(原始的塊及冗餘的塊二者)中的每一者被儲存在儲存系統114的相應的節點或儲存器件上。在各種實施例中,儲存器件180的數目可不等於塊198的數目。
在各種實施例中,塊198可能會遺失(例如,網路或硬體故障)或者可能以其他方式與錯誤相關聯。在所示實施例中,假設塊198(以及相應的儲存器件180)突然變得不可用。計算器件112在檢測到錯誤時可嘗試重新創建遺失的塊198或以其他方式糾正錯誤。
在此種實施例中,如果一個塊失效,且原始資料中存在總共K個(例如,4個)塊,則至少K個(例如,4個)節點或計算器件180必須向主機器件112發送信息以恢復失效的塊。請注意,這些K個(例如,4個)塊可來自K+R個(例如,6個)塊中的任意塊。舉例來說,塊198D1、D2、D4及P1可用於重新創建遺失的塊198D3。
再生代碼通過從D個節點發送小於完整塊大小的信息來減小修復頻寬,其中通常D>K。換句話說,通過使用巧妙的公 式,計算器件112可能夠通過使用並非完整的塊198D1、D2、D4及P1,而是通過使用198D1、D2、D4、P1及P2的僅一部分來重新創建遺失的塊198D3。再生代碼一般從更多的儲存器件180獲取信息,但是與非再生代碼相比,它從每一儲存器件180獲取的信息較少。應理解,以上僅為一個例示性實例,所公開主題並不僅限於此。
舉例來說,如果使用了6個資料塊(K=6)且使用了6個冗餘塊(R=6且K+R=12),且每一個塊的大小為16MB,則標準里德-所羅門(RS)錯誤修正編碼方案要求將6(K)個16MB的塊發送到主機器件或者傳輸96MB的資料來修正遺失的16MB的塊。相反,如果使用了再生技術,則將讀取所有12個(在這種情況下是K+R個或D個)塊的一些部分,但是由於每一個塊的僅一部分被使用(例如,2.7MB),因此傳輸到主機器件的總量可較低(例如,29.7MB)。
再生代碼常常具有儲存與頻寬折衷關係(tradeoff)。在各種實施例中,一般來說,存在兩類或兩組再生代碼。如果儲存開銷(storage overhead)非常小,則所述再生代碼被稱為最小儲存再生(Minimum Storage Regeneration,MSR)代碼。如果修復頻寬非常小而儲存開銷增加,則所述再生代碼被稱為最小頻寬再生(Minimum Bandwidth Regeneration,MBR)代碼。在這些寬泛的類別內,可採用各種特定的技術或公式來實行再生代碼。應理解,以上僅為幾個例示性實例,所公開的主題並不僅限於此。
返回圖1,在所示實施例中,儲存系統114可包括多個儲存器件180。每一儲存器件180可被配置成以塊或其他方式儲存資料。在所示實施例中,儲存器件180可為相對傳統的儲存器件,例如硬盤驅動器(hard drive)、固態驅動器、或者甚至為揮發性記憶體。
在所示實施例中,系統100還可包括計算器件112,如上所述。在此種實施例中,計算器件112可包括主機處理器或處理器件102。在各種實施例中,主機處理器件102可包括中央處理器(central processing unit,CPU)、器件專用或控制器處理器(例如,如在儲存器件中可見到的器件專用或控制器處理器)、或其他處理電路系統。
在所示實施例中,計算器件112還可包括輸入/輸出(input/output,I/O)介面或系統106。在各種實施例中,I/O系統106可被配置成與儲存系統114進行通信。在一些實施例中,I/O系統106可至少部分地與主機處理器件102集成在一起。在另一實施例中,I/O系統106可包括記憶體管理單元(memory management unit,MMU)或常常被認為是晶片組的裝置的其他組件。應理解,以上僅為幾個例示性實例,所公開主題並不僅限於此。
在所示實施例中,計算器件112可包括可重新編程的分擔處理器件(reprogrammable offload processing device,ROPD)104。在各種實施例中,此ROPD 104可包括專用邏輯電路系統, 例如現場可程式化閘陣列(field programmable gate array,FPGA)或專用積體電路(application-specific integrated circuit,ASIC)。在各種實施例中,ROPD 104可由外部器件進行編程,以使得其編程一般為固定的。在另一實施例中,ROPD 104可由主機處理器件102或其他器件動態地進行重新編程,以使得其電路系統(例如,管線)可基於運行時狀態(runtime conditions)而動態地調整。應理解,以上僅為幾個例示性實例,所公開主題並不僅限於此。
如上所述,儘管一般由主機處理器件102負責計算所需的錯誤修正代碼(例如,奇偶性塊、遺失資料塊的重新創建),但是在所示實施例中,主機處理器件102可選擇或被配置成將此任務全部或部分地分擔或委託到ROPD 104。
傳統上,由主機處理器件102進行的錯誤修正代碼的計算(常常由軟體控制)是一項成本高昂的任務。常常,與MSR(或其他)代碼建構及重建的並行特性相比,中央處理器架構(例如,對稱多處理(Symmetric multiprocessing,SMP)、單指令多資料(Single instruction,multiple data,SIMD))具有有限程度的並行性。另外,創建錯誤修正代碼(即,存取所有的塊198)所需的記憶體存取模式缺乏局部性(locality)。對資料元及對每一資料元內的資料的串流模式(streaming pattern)的隨機存取並不提供太多的局部性,從而導致差的高速緩存性能及整體編碼/解碼性能的劣化。因此,採用傳統軟體的概念會導致高的處理器及記憶體頻寬利用率並阻礙利用可更好地用於其他任務的主機處理器件102。在 所示實施例中,系統100提供了用於錯誤修正編碼(例如,建構及重建)的加速系統,所述加速系統會解決至少這些問題。
在所示實施例中,主機處理器件102可被配置成將錯誤修正編碼分擔到硬體加速器或ROPD 104。在此種實施例中,當被要求實行錯誤修正編碼時,主機處理器件102可將此請求傳送給ROPD 104。ROPD 104可然後利用I/O系統106來存取資料元(例如,塊198或其他大小的資料)。一旦完成,ROPD 104便可將操作的最終結果傳送給主機處理器件102,主機處理器件102可然後存取資料、錯誤修正代碼,或者簡單地繼續其操作。在此種實施例中,在ROPD 104正在計算錯誤修正代碼的同時,主機處理器件102可實行另一項任務。
在各種實施例中,主機處理器件102及ROPD 104可通過直接記憶體存取(direct memory access,DMA)進行通信。在一個實施例中,這可涉及I/O系統106內的記憶體的映射部分。在另一實施例中,這可涉及器件102與器件104之間的直接通信。同樣,I/O系統106及ROPD 104可通過對等DMA協議進行通信。應理解,以上僅為幾個例示性實例,所公開主題並不僅限於此。
圖2是根據所公開主題的系統200的示例性實施例的方塊圖。在各種實施例中,系統200可包括可重新編程的分擔處理器件(ROPD),如上所述。
在所示實施例中,系統200可包括分擔處理電路202。在各種實施例中,此分擔處理電路202可被重新編程,如上所述。 在此種實施例中,分擔處理電路202可被配置成計算錯誤修正代碼,而不由主機處理器件進行額外處理。
在所示實施例中,分擔處理電路202包括被配置成與主機處理器件或處理器進行通信的主機介面232。在各種實施例中,主機處理器可位於系統200的外部或者被集成為單獨的邏輯區塊(例如,作為系統晶片(SoC)的一部分)。在各種實施例中,主機介面232可至少部分地或完全地通過DMA進行通信。
在所示實施例中,系統200可包括儲存電路或單元204或者與儲存電路或單元204交互。在一些實施例中,記憶體204可包括系統記憶體,例如雙倍資料速率(double data rate,DDR)同步動態隨機存取記憶體(synchronous dynamic random access memory,SDRAM);儘管如此,但應理解,以上僅為一個例示性的實例,所公開主題並不僅限於此。在此種實施例中,記憶體204可被配置成儲存用於錯誤修正代碼計算(例如,創建或重建)的資料元(例如,信息或奇偶性塊)。
在一個實施例中,對於創建或編碼程式,主機處理器可將需要被編碼的資料對象(例如,所有信息塊)發送到記憶體204。在此種實施例中,這些資料元可被儲存為輸入212。然後分擔處理電路202可計算奇偶性塊(錯誤修正代碼的一種形式),並將所述奇偶性塊寫回到記憶體204(在輸出214處)。最後,可將信息及奇偶性塊(由I/O系統或主機處理器件)分佈到不同的儲存節點。
在另一實施例中,對於重建或解碼程式,可首先檢索倖 存的信息資料元及奇偶性資料元並將其儲存在記憶體204中(在輸入212處)。然後分擔處理單元202可計算重建塊(錯誤修正代碼)並將所述重建塊寫入記憶體204(在輸出214處)。最後,將重建的塊傳送到主機處理器件。
在所示實施例中,分擔處理電路202可包括被配置成與記憶體204進行通信的儲存介面電路222。在所示實施例中,儲存介面電路222被示出為可接收資料元的多路復用器(multiplexer,MUX)。同樣,多路分用器(de-multiplexer,DeMUX)可將資料元寫入到記憶體204。應理解,以上僅為一個例示性實例,所公開主題並不僅限於此。
分擔處理電路202可包括被配置成臨時儲存所述多個資料元的多個儲存緩衝器電路224。在一個特定實施例中,輸入資料212可採用高效的512位元分組(512-bit grouping)形式到達分擔處理電路202處,但這些元本身可僅為8位元。在此種實施例中,儲存介面電路222可將輸入212分成64個資料元,並將這些資料元儲存在各別的緩衝器224(或緩衝器224的經分割的部分)中。應理解,以上僅為一個例示性實例,所公開主題並不僅限於此。
在所示實施例中,分擔處理電路202可包括地址控制器228,地址控制器228被配置成管理如何從記憶體204讀取資料以及如何將資料寫入到緩衝器224。在一些實施例中,地址控制器228還可被配置成管理如何從緩衝器224讀取資料以進行錯誤修正代碼計算。在一些實施例中,分擔處理電路202可包括索引表 230,索引表230包括緩衝器224被存取時將採用的預儲存順序。
分擔處理電路202可包括多個錯誤代碼計算電路226。這些錯誤代碼計算電路226可被配置成計算錯誤修正代碼,而不由所述主機處理器件進行額外處理。在所示實施例中,錯誤代碼計算電路226可主要包括乘法-加法電路(multiple-add circuit)。在各種實施例中,錯誤代碼計算電路226可被實施為查找表或按位互斥或閘(bitwise XOR gate)。應理解,以上僅為幾個例示性實例,所公開主題並不僅限於此。
在一些實施例中,系統200可分三個階段實行錯誤修正代碼的創建:讀取、處理及寫入。在讀取階段中,可從記憶體204讀取資料元(如果重建的話,則包括奇偶性元),並將資料元放入到緩衝器224中。
在處理階段期間,地址控制器單元228可根據預儲存的索引表230來控制記憶體讀取且同時讀取k個緩衝器224中的正確資料片。此資料可被饋送到錯誤代碼計算電路226用於錯誤修正計算。
錯誤代碼計算電路226的一個可能的實施例的詳細架構在附圖的分解視圖部分中示出。錯誤代碼計算電路226可包括與期望的奇偶性計算或信息重建技術(例如,伽羅瓦域(Galois field,GF)計算)對應的預儲存係數表242。錯誤代碼計算電路226還可包括k個乘法器或乘法查找表244,以進行快速的乘法運算。錯誤代碼計算電路226還可包括XOR或加法器246樹結構。在一個 實施例中,每一乘法器244可處理一個資料元252(例如,8位元資料)。最終,錯誤代碼計算電路226可產生或輸出錯誤修正代碼254(或錯誤修正代碼254的一部分,如下所述)。
在寫入階段期間,錯誤修正代碼254可作為輸出214被寫回到記憶體204。在各種實施例中,錯誤修正代碼254可在處理之後立即被寫回到記憶體204。這可被認為是在XOR 246樹之後再增加一個管線階段(pipeline stage)。在此種實施例中,這可使得系統200參與管線式資料處理,而不是離散運算或原子運算。在此種實施例中,這可加快多遍次運算(multi-pass operation),如下所述。在一些實施例中,由於資料在被讀取到緩衝器224中時被分割,因此資料輸出以單獨的輸出分割部分形式被寫回到記憶體204。
在各種實施例中,由於(例如MSR代碼(n、k、m))存在k個輸入資料塊(在編碼程式中),因此整個輸入資料可大於內部緩衝器224的大小。在此種實施例中,系統200可採用多個或“p個”遍次來處理整個輸入資料集,其中p等於對每一信息/奇偶性元分割的信息/奇偶性片的數目。在此種實施例中,系統200可將較大的資料集分割成p個分割部分,每一分割部分具有k個或小於k個資料元。在此種實施例中,每一遍次可涉及讀取、處理及寫入與相應的分割部分相關聯的錯誤修正代碼。
在其中資料集的數目少於緩衝器224中的總儲存量的另一實施例中,資料集可被映射到k個資料元,每一資料元均小於 緩衝器大小。在此種實施例中,可由系統200處理可變的資料元大小。
在其中資料元的數目小於k個緩衝器224(且因此小於k個錯誤代碼計算電路226)的再一實施例中,錯誤代碼計算電路226的數目可動態地改變。在此種實施例中,系統200的管線可動態地改變以優化延遲以及吞吐量。在此種實施例中,可調整錯誤代碼計算電路226的數目以與資料元的數目(最大到最大硬體限制)匹配。在此種實施例中,每一循環可對乘法查找表244進行存取。資料元(且因此資料節點)之間的這種並行性不同於傳統的CPU,在傳統的CPU中,SIMD指令中的運算元(operand)的數目是固定的且因此必須對運算元本身進行操縱以解決不方便的奇數個資料元。
圖3A及圖3B是根據所公開主題的系統300的示例性實施例的方塊圖。圖3A示出沒有ROPD的系統300的簡化版本,而圖3B示出在系統300內使用ROPD。圖3A及圖3B示出在利用本文所述錯誤修正代碼計算的系統300內執行指令或軟體執行緒。
在所示實施例中,系統300可包括正在實行需要對資料集進行存取(且因此對資料元進行存取)的某個任務的主執行緒或用戶執行緒或應用程式介面(application program interface,API,302。在此種實施例中,用戶執行緒302可由主機處理器執行。
在所示實施例中,系統可包括程式庫(library,LIB)304,LIB 304處理指令312的計算執行緒且通過I/O隊列316與 儲存器件306交互。
在其中分擔處理器件不現用的實施例中,計算執行緒312可接收用戶請求(置於請求隊列322中)以計算錯誤修正代碼(例如,建立奇偶性元或重建資料元)。如果請求進行編碼(建立奇偶性元),則當請求到達編碼操作324時,主機處理器件可實行編碼,且然後使I/O隊列316及其I/O執行緒317(單獨的I/O執行緒352)將奇偶性元寫入到相應的儲存介質306。同樣,當所需的剩餘資料元(包括奇偶性元)被I/O執行緒352返回到完成隊列326且最終到達解碼操作328(解碼操作328由主機處理器實行)時,請求進行解碼(重建資料元)。
在圖3B中,闡述硬體加速器或分擔處理器件308如何與主機處理器(主機處理器正在執行執行緒302、312及LIB 304)交互。此外,計算執行緒312可處理來自用戶執行緒302的請求。在此種實施例中,這可涉及將編碼/解碼計算分擔到分擔處理器件308。
如上所述,每一計算執行緒312可包括請求隊列322(由用戶執行緒302列入隊列)及完成隊列326(由I/O執行緒317列入隊列)。在此種實施例中,計算執行緒312可與分擔處理器件308交互。
舉例來說,在編碼或奇偶性創建情景中,計算執行緒312可將編碼請求放在請求隊列322中。當編碼請求到達編碼階段324時,計算執行緒312可將編碼請求分擔到分擔處理器件308,而不 是由主機器件直接處理。在一個實施例中,這可通過回調執行緒(callback thread)314來追蹤。在此種實施例中,分擔請求可被放到硬體加速或分擔請求隊列332中。由於所述請求存在於硬體加速隊列332中,因此回調執行緒314可向分擔處理器件308發出DMA請求。分擔處理器件308可包括錯誤代碼計算電路342,如上所述。一旦完成,回調執行緒314便可向回報告給計算執行緒312,計算執行緒312繼而報告給用戶執行緒302。此時,I/O執行緒317可將編碼資料寫入到儲存器件306。
在解碼或重建操作的實例中,計算執行緒312從I/O執行緒317請求資料。計算執行緒312可然後將請求放在完成隊列326中。當請求到達解碼階段328時,計算執行緒312可將解碼請求分擔到分擔處理器件308,而不是由主機器件直接處理。在一個實施例中,這可通過回調執行緒314來追蹤。在此種實施例中,分擔請求可被放到硬體加速或分擔請求隊列332中。分擔處理器件308可通過DMA從I/O執行緒317接收現有的資料元。當請求存在於硬體加速隊列332中時,回調執行緒314可向回報告給計算執行緒312和/或用戶執行緒302。
圖4A及圖4B是根據所公開主題的系統的示例性實施例的時序圖。圖4A示出編碼或奇偶性創建操作的時序圖400。圖4B示出解碼或重建操作的時序圖401。在各種實施例中,這些時序圖可由圖3A及圖3B的系統300創建。應理解,以上僅為一個例示性實例,所公開主題並不僅限於此。
在所示實施例中,列402示出用戶執行緒的可能的時序。在所示實施例中,列404示出計算執行緒的可能的時序。在所示實施例中,列406示出用戶執行緒的可能的回調。在所示實施例中,列408示出輸入/輸出(I/O)執行緒的可能的時序。
在圖4A中,時序圖400示出用於編碼操作的執行緒階段及時序的實施例。在此種實施例中,用戶執行緒402可使用計算執行緒將I/O寫入請求列入隊列(方塊412),且然後等待請求的完成(方塊414)。在各種實施例中,主機器件可在等待完成(方塊414)的同時實行其他操作(未示出)。
在此種實施例中,計算執行緒404可將用戶請求從請求隊列退出隊列(方塊422)且將硬體或分擔請求列入到隊列(方塊424)。計算執行緒404可然後等待完成(方塊426)。
在此種實施例中,回調執行緒406可然後將硬體加速請求退出隊列(方塊432)、啟動編碼操作(方塊434)、等待(方塊436)、以及當操作完成時通知完成隊列(方塊438)。在所示實施例中,計算執行緒404可然後將I/O請求列入到I/O隊列(方塊428)。
在此種實施例中,I/O執行緒408可通過將I/O請求退出隊列(方塊442)、以及向儲存器件發出請求(方塊444)來實行I/O操作。在等待資料被寫入(方塊446)之後,I/O執行緒408可通知用戶執行緒其已完成(方塊448)。應理解,以上僅為一個例示性實例,所公開主題並不僅限於此。
在圖4B中,時序圖401示出解碼操作的執行緒階段及時序的實施例。在此種實施例中,用戶執行緒402可使用計算執行緒將I/O讀取請求列入隊列(方塊413)且然後等待請求的完成(方塊415)。在各種實施例中,主機器件可在等待完成(方塊415)的同時實行其他操作(未示出)。
在此種實施例中,計算執行緒404可將用戶請求從請求隊列退出隊列(方塊422)且將I/O請求列入到隊列(方塊428)。計算執行緒404可然後等待完成(方塊427)。
在此種實施例中,I/O執行緒408可通過將I/O請求退出隊列(方塊442)並將請求發出到儲存器件(方塊444)來實行I/O操作。在等待資料被讀取(方塊447)之後,I/O執行緒408可通過將硬體加速請求列入隊列來通知計算執行緒404其已完成(方塊449)。
在此種實施例中,回調執行緒406可然後將硬體加速請求退出隊列(方塊432)、啟動解碼操作(方塊435)、等待(方塊436)、以及當操作完成時通知用戶執行緒402(方塊439)。應理解,以上僅為一個例示性實例,所公開主題並不僅限於此。
圖5是可包括根據所公開主題的原理形成的半導體器件的信息處理系統500的示意性方塊圖。
參照圖5,信息處理系統500可包括根據所公開主題的原理構造而成的一個或多個器件。在另一實施例中,信息處理系統500可採用或執行根據所公開主題的原理的一種或多種技術。
在各種實施例中,信息處理系統500可包括計算器件,例如(舉例來說)膝上型電腦、臺式電腦、工作站、服務器、刀片服務器(blade server)、個人數位助理、智能手機、平板電腦及其他適合的電腦或者虛擬機或虛擬機的虛擬計算器件。在各種實施例中,信息處理系統500可由用戶(圖中未示出)使用。
根據所公開主題的信息處理系統500還可包括中央處理器(central processing unit,CPU)、邏輯或處理器510。在一些實施例中,處理器510可包括一個或多個功能單元塊(functional unit block,FUB)或組合邏輯塊(combinational logic block,CLB)515。在這種實施例中,組合邏輯塊可包括各種布爾邏輯運算(例如,反及、反或、反、互斥或)、穩定化邏輯器件(例如,觸發器、鎖存器)、其他邏輯器件或其組合。這些組合邏輯運算可以簡單方式或複雜方式進行配置,以對輸入信號進行處理來實現期望結果。應理解,儘管闡述了同步組合邏輯運算的幾個例示性實例,然而所公開主題並不受限於此且可包括異步運算或其混合。在一個實施例中,組合邏輯運算可包括多個互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,這些CMOS電晶體可被排列成用於實行邏輯運算的門;但是應理解,也可使用其他技術且所述其他技術也處於所公開主題的範圍內。
根據所公開主題的信息處理系統500還可包括揮發性記憶體520(例如,隨機存取記憶體(RAM))。根據所公開主題的 信息處理系統500還可包括非揮發性記憶體530(例如,硬驅動器、光學記憶體、反及記憶體或快閃記憶體)。在一些實施例中,揮發性記憶體520、非揮發性記憶體530或它們的組合或一些部分可被稱為“儲存介質”。在各種實施例中,揮發性記憶體520和/或非揮發性記憶體530可被配置成以半永久形式或實質上永久形式儲存資料。
在各種實施例中,信息處理系統500可包括一個或多個網路介面540,所述一個或多個網路介面540被配置成使信息處理系統500成為通信網路的一部分且通過通信網路進行通信。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(又名乙太網)、光纖信道、電力線通信(例如,家庭插座(HomePlug)、IEEE 1901)。應理解,以上僅為幾個例示性實例,所公開主題並不受限於上述幾個例示性實例。
根據所公開主題的信息處理系統500還可包括用戶介面單元550(例如,顯示適配器、觸覺介面、人機介面器件)。在各 種實施例中,這種用戶介面單元550可被配置成從用戶接收輸入和/或向用戶提供輸出。也可使用其他種類的器件來實現與用戶的交互;舉例來說,提供到用戶的反饋可為任意形式的感覺反饋,例如,視覺反饋、聽覺反饋或觸覺反饋;且來自用戶的輸入可以任意形式接收,包括聲學輸入、語音輸入或觸覺輸入。
在各種實施例中,信息處理系統500可包括一個或多個其他器件或硬體組件560(例如,顯示器或監視器、鍵盤、鼠標、相機、指紋讀取器、視頻處理器)。應理解,以上僅為幾個例示性實例,所公開主題並不受限於上述幾個例示性實例。
根據所公開主題的信息處理系統500還可包括一條或多條系統匯流排505。在這種實施例中,系統匯流排505可被配置成對處理器510、揮發性記憶體520、非揮發性記憶體530、網路介面540、用戶介面單元550及一個或多個硬體組件560進行通信耦合。經處理器510處理的資料或從非揮發性記憶體530外部輸入的資料可儲存在非揮發性記憶體530中或揮發性記憶體520中。
在各種實施例中,信息處理系統500可包括或執行一個或多個軟體組件570。在一些實施例中,軟體組件570可包括操作系統(operating system,OS)和/或應用。在一些實施例中,OS可被配置成向應用提供一種或多種服務並管理或充當應用與信息處理系統500的各種硬體組件(例如,處理器510、網路介面540)之間的中間介質。在這種實施例中,信息處理系統500可包括一種或多種本地應用,所述一種或多種本地應用可在本地安裝(例 如,安裝在非揮發性記憶體530內)且被配置成由處理器510直接執行並與OS直接進行交互作用。在這種實施例中,本地應用可包括預先編譯的機器可執行代碼。在一些實施例中,本地應用可包括腳本解釋器(例如,Cshell(csh)、蘋果腳本(AppleScript)、AutoHotkey)或虛擬執行機(virtual execution machine,VM)(例如,Java虛擬機、微軟公共語言運行時環境(Microsoft Common Language Runtime)),腳本解釋器及虛擬執行機被配置成將源代碼或目標代碼轉換成可執行代碼,然後由處理器510來執行所述可執行代碼。
上述半導體器件可使用各種封裝技術來進行包封。舉例來說,根據所公開主題的原理構造而成的半導體器件可使用以下中的任意一種來進行包封:層疊封裝(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 integrated circuit,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)技術或所屬領域中的技術人員將知曉的其他技術。
方法步驟可由一個或多個可編程處理器執行電腦程式來實行,以通過對輸入資料進行操作並產生輸出來實行功能。方法步驟還可由專用邏輯電路系統(例如,現場可程式化閘陣列(field programmable gate array,FPGA)或專用積體電路(application-specific integrated circuit,ASIC))來實行,且裝置可被實施為所述專用邏輯電路。
在各種實施例中,電腦可讀介質可包括指令,所述指令在被執行時會使器件實行方法步驟的至少一部分。在一些實施例中,電腦可讀介質可包括在磁性介質、光學介質、其他介質或其組合(例如,壓縮盤唯讀記憶體(compact disc read only memory,CD-ROM)、硬驅動器、唯讀記憶體、快閃記憶體驅動器)中。在這種實施例中,電腦可讀介質可為以有形的及非暫時方式實施的製品。
儘管已參照示例性實施例闡述了所公開主題的原理,然而對所屬領域中的技術人員來說顯而易見的是,在不背離這些所 公開概念的精神及範圍的條件下,可對其作出各種改變及修改。因此,應理解,以上實施例並非限制性的,而是僅為例示性的。因此,所公開概念的範圍將由以上申請專利範圍及其等效範圍所許可的最廣範圍的解釋來確定,而不應受上述說明約束或限制。因此,應理解,隨附申請專利範圍旨在涵蓋落於實施例的範圍內的所有這種修改及改變。
100:系統
102:處理器/主機處理器或處理器件/主機處理器件/器件
104:可重新編程的分擔處理器件(ROPD)/器件
106:輸入/輸出(I/O)介面或系統/I/O系統
180:多個節點或儲存器件/儲存系統/儲存器件/節點或計算器件
112:主機或計算器件/計算器件
114:分布式儲存系統/分布式儲存系統或多個資料節點/儲存介質/儲存系統
198:資料或塊/塊/資料塊/原始資料塊/冗餘資料塊

Claims (20)

  1. 一種用於錯誤修正代碼的加速的裝置,包括:主機介面電路,被配置以從主機處理器件接收分擔指令,所述主機處理器件被配置以管理分布式儲存系統,其中所述分擔指令指示所述裝置計算與由外部分布式儲存系統儲存的資料元相關聯的所述錯誤修正代碼;儲存介面電路,被配置以從所述外部分布式儲存系統接收所述資料元;以及錯誤代碼計算電路,被配置以至少部分地計算所述錯誤修正代碼而不由所述主機處理器件進行額外處理。
  2. 如申請專利範圍第1項所述的裝置,其中所述裝置被配置以通過以下方式計算所述錯誤修正代碼:將所述資料元分割成子部分;按每一子部分執行所述資料元的多個遍次;以及對每一遍次的輸出進行聚合,以形成所述錯誤修正代碼。
  3. 如申請專利範圍第1項所述的裝置,其中所述儲存介面電路被配置以將所述錯誤代碼計算電路的輸出自動地寫入到外部記憶體。
  4. 如申請專利範圍第1項所述的裝置,其中所述資料元與所述分布式儲存系統的資料節點的數目相關聯,其中所述資料節點將所述資料元的一部分儲存在遠程位置;以及其中所述錯誤代碼計算電路能夠基於所述資料節點的所述數 目進行重新配置。
  5. 如申請專利範圍第1項所述的裝置,其中所述錯誤代碼計算電路包括:由交替的乘法電路與加法電路形成的樹。
  6. 如申請專利範圍第5項所述的裝置,其中所述乘法電路包括查找表;以及其中所述加法電路包括XOR閘。
  7. 如申請專利範圍第1項所述的裝置,其中所述錯誤代碼計算電路能夠由所述主機處理器件進行重新編程。
  8. 如申請專利範圍第1項所述的裝置,其中所述錯誤修正代碼包括最小儲存再生(MSR)代碼。
  9. 一種用於錯誤修正代碼的加速的系統,包括:記憶體,被配置以儲存由外部分布式儲存系統儲存的資料元;主機處理器件,被配置以管理分布式儲存系統以及將所述錯誤修正代碼的計算分擔到能夠重新編程的處理器件;以及所述能夠重新編程的處理器件,被配置以計算所述錯誤修正代碼,其中所述能夠重新編程的處理器件包括:能夠重新配置的管線,至少部分地計算所述錯誤修正代碼且基於所述資料元的數目進行重新配置。
  10. 如申請專利範圍第9項所述的系統,其中所述主機處理器件被配置以在運行期間: 執行指令的計算執行緒,所述指令的所述計算執行緒產生要將所述錯誤修正代碼的所述計算分擔到所述能夠重新編程的處理器件的請求,以及創建所述指令的回調執行緒,以控制所述能夠重新編程的處理器件,以及創建所述指令的至少一個輸入/輸出(I/O)執行緒,以從所述記憶體讀取所述資料元或者將所述錯誤修正代碼讀取到所述記憶體。
  11. 如申請專利範圍第10項所述的系統,其中所述主機處理器件被配置以當產生奇偶性資料元時:響應於將分擔請求列入隊列而暫停所述計算執行緒;響應於所述回調執行緒表明所述能夠重新編程的處理器件已計算所述錯誤修正代碼,重新開始所述計算執行緒;以及使所述I/O執行緒將所述錯誤修正代碼作為所述奇偶性資料元寫入到所述記憶體。
  12. 如申請專利範圍第11項所述的系統,其中所述主機處理器件被配置以當重構資料元時:使所述I/O執行緒將所述資料元從所述記憶體讀取到所述能夠重新編程的處理器件;暫停所述計算執行緒,直到所述I/O執行緒表明所述能夠重新編程的處理器件已接收到所述資料元;以及響應於所述能夠重新編程的處理器件已計算所述錯誤修正代 碼,便通知所述指令的用戶執行緒所述資料元已被重構。
  13. 如申請專利範圍第9項所述的系統,其中所述能夠重新編程的處理器件包括:主機介面電路,被配置以從所述主機處理器件接收分擔指令;儲存介面電路,被配置以接收所述資料元;儲存緩衝器電路,被配置以臨時儲存所述資料元;以及錯誤代碼計算電路,被配置以至少部分地計算所述錯誤修正代碼而不由所述主機處理器件進行額外處理。
  14. 如申請專利範圍第9項所述的系統,其中所述主機處理器件與所述能夠重新編程的處理器件被配置以通過直接記憶體存取進行通信。
  15. 如申請專利範圍第9所述的系統,其中所述記憶體與所述能夠重新編程的處理器件被配置以通過直接記憶體存取進行通信。
  16. 一種用於錯誤修正代碼的加速的裝置,包括:主機處理器件,被配置以將所述錯誤修正代碼的計算分擔到分擔處理器件;輸入/輸出(I/O)系統,被配置以讀取資料元並將所述資料元寫入到分布式儲存器件的系統;以及所述分擔處理器件,被配置以至少部分地基於由所述分布式儲存器件儲存的所述資料元來計算所述錯誤修正代碼,其中所述分擔處理器件包括: 儲存介面電路,被配置以接收所述資料元;以及錯誤代碼計算電路,被配置以至少部分地計算所述錯誤修正代碼而不由所述主機處理器件進行額外處理。
  17. 如申請專利範圍第16項所述的裝置,其中所述分擔處理器件被配置以通過以下方式計算所述錯誤修正代碼:將所述資料元分割成多個子部分;按每一子部分執行所述資料元的多個遍次;以及對每一遍次的輸出進行聚合,以形成所述錯誤修正代碼。
  18. 如申請專利範圍第16所述的裝置,其中所述資料元與資料節點的數目相關聯;以及其中所述錯誤代碼計算電路內的數目能夠重新配置以與所述資料節點的所述數目相匹配,使得在所述資料節點與所述錯誤代碼計算電路之間存在關聯。
  19. 如申請專利範圍第16項所述的裝置,其中所述錯誤代碼計算電路包括由交替的乘法電路與加法電路形成的樹;以及其中所述乘法電路包括查找表,且其中所述加法電路包括XOR閘。
  20. 如申請專利範圍第16所述的裝置,其中所述分擔處理器件被配置以:響應於編碼請求,計算所述錯誤修正代碼作為奇偶檢驗元,以及響應於解碼請求,計算所述錯誤修正代碼作為重建資料元。
TW108133489A 2018-12-14 2019-09-18 用於錯誤修正代碼的加速的裝置及系統 TWI791891B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862780185P 2018-12-14 2018-12-14
US62/780,185 2018-12-14
US16/271,777 US11061772B2 (en) 2018-12-14 2019-02-08 FPGA acceleration system for MSR codes
US16/271,777 2019-02-08

Publications (2)

Publication Number Publication Date
TW202026871A TW202026871A (zh) 2020-07-16
TWI791891B true TWI791891B (zh) 2023-02-11

Family

ID=71072501

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108133489A TWI791891B (zh) 2018-12-14 2019-09-18 用於錯誤修正代碼的加速的裝置及系統

Country Status (5)

Country Link
US (3) US11061772B2 (zh)
JP (1) JP7356887B2 (zh)
KR (1) KR102491112B1 (zh)
CN (1) CN111324479B (zh)
TW (1) TWI791891B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018176238A1 (en) 2017-03-28 2018-10-04 Intel Corporation Technologies for hybrid field-programmable gate array-application-specific integrated circuit code acceleration
US11061772B2 (en) * 2018-12-14 2021-07-13 Samsung Electronics Co., Ltd. FPGA acceleration system for MSR codes
US11934330B2 (en) * 2020-05-08 2024-03-19 Intel Corporation Memory allocation for distributed processing devices
US11568089B2 (en) * 2020-08-31 2023-01-31 Frontiir Pte Ltd. Offloading operations from a primary processing device to a secondary processing device
US20220206855A1 (en) * 2020-12-29 2022-06-30 Advanced Micro Devices, Inc. Offloading computations from a processor to remote execution logic
US20230153023A1 (en) * 2021-11-15 2023-05-18 Samsung Electronics Co., Ltd. Storage device and method performing processing operation requested by host

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200702980A (en) * 2005-07-15 2007-01-16 Mediatek Inc Error-correcting apparatus including multiple error-correcting modules functioning in parallel and related method
CN102272730A (zh) * 2008-10-09 2011-12-07 美光科技公司 经虚拟化错误校正码nand
US20180300201A1 (en) * 2017-04-17 2018-10-18 Intel Corporation Bypassing error correction code (ecc) processing based on software hint

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2695195B2 (ja) 1988-09-02 1997-12-24 三菱電機株式会社 誤り訂正回路
JP5422974B2 (ja) 2008-11-18 2014-02-19 富士通株式会社 誤り判定回路及び共有メモリシステム
US8356137B2 (en) 2010-02-26 2013-01-15 Apple Inc. Data storage scheme for non-volatile memories based on data priority
US8650446B2 (en) 2010-03-24 2014-02-11 Apple Inc. Management of a non-volatile memory based on test quality
CN102624866B (zh) * 2012-01-13 2014-08-20 北京大学深圳研究生院 一种存储数据的方法、装置及分布式网络存储系统
WO2014131148A1 (zh) 2013-02-26 2014-09-04 北京大学深圳研究生院 一种最小存储再生码的编码和存储节点修复方法
US9021188B1 (en) 2013-03-15 2015-04-28 Virident Systems Inc. Small block write operations in non-volatile memory systems
US9710330B2 (en) 2014-10-15 2017-07-18 Empire Technology Development Llc Partial cloud data storage
US9547458B2 (en) 2014-12-24 2017-01-17 International Business Machines Corporation Intra-rack and inter-rack erasure code distribution
US10007587B2 (en) 2015-09-18 2018-06-26 Qualcomm Incorporated Systems and methods for pre-generation and pre-storage of repair fragments in storage systems
US20170179979A1 (en) 2015-12-18 2017-06-22 Netapp, Inc. Systems and Methods for Minimum Storage Regeneration Erasure Code Construction Using r-Ary Trees
US10452477B2 (en) 2016-08-26 2019-10-22 Netapp, Inc. Multiple node repair using high rate minimum storage regeneration erasure code
US11061772B2 (en) * 2018-12-14 2021-07-13 Samsung Electronics Co., Ltd. FPGA acceleration system for MSR codes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200702980A (en) * 2005-07-15 2007-01-16 Mediatek Inc Error-correcting apparatus including multiple error-correcting modules functioning in parallel and related method
CN102272730A (zh) * 2008-10-09 2011-12-07 美光科技公司 经虚拟化错误校正码nand
US20180300201A1 (en) * 2017-04-17 2018-10-18 Intel Corporation Bypassing error correction code (ecc) processing based on software hint

Also Published As

Publication number Publication date
US20200192757A1 (en) 2020-06-18
CN111324479A (zh) 2020-06-23
KR102491112B1 (ko) 2023-01-20
KR20200073978A (ko) 2020-06-24
TW202026871A (zh) 2020-07-16
JP2020095722A (ja) 2020-06-18
US11061772B2 (en) 2021-07-13
JP7356887B2 (ja) 2023-10-05
CN111324479B (zh) 2022-08-09
US20210334162A1 (en) 2021-10-28
US20230367675A1 (en) 2023-11-16
US11726876B2 (en) 2023-08-15

Similar Documents

Publication Publication Date Title
TWI791891B (zh) 用於錯誤修正代碼的加速的裝置及系統
US10990478B2 (en) Flexible reliability coding for storage on a network
US10761931B2 (en) Inline reliability coding for storage on a network
US9582463B2 (en) Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US11940875B2 (en) System, device and method for storage device assisted low-bandwidth data repair
US11467902B2 (en) Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM)
CN111610932B (zh) 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统
US11568089B2 (en) Offloading operations from a primary processing device to a secondary processing device
US11606437B2 (en) System and method for boosting up performance of NVMe-TCP transport
JP2019080190A (ja) 通信装置
US20230393996A1 (en) Systems and methods for message tunneling
TW202334814A (zh) 分佈式加速器
WO2020086850A2 (en) Flexible reliability coding for storage on a network