CN108140016B - 确定矩阵-向量相乘的运算最优序列的优化器 - Google Patents
确定矩阵-向量相乘的运算最优序列的优化器 Download PDFInfo
- Publication number
- CN108140016B CN108140016B CN201580083827.6A CN201580083827A CN108140016B CN 108140016 B CN108140016 B CN 108140016B CN 201580083827 A CN201580083827 A CN 201580083827A CN 108140016 B CN108140016 B CN 108140016B
- Authority
- CN
- China
- Prior art keywords
- matrix
- vector
- operations
- optimizer
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
-
- 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/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- 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/1515—Reed-Solomon codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
Description
技术领域
本发明涉及向量-矩阵相乘计算领域,本发明尤其涉及确定计算向量与矩阵乘积的运算最优序列的优化器。所述矩阵为GF(2μ)上的二进制矩阵或编码矩阵。本发明也涉及用于数据编码的存储控制器,以及用于恢复部分纠删数据的存储控制器。本发明还涉及确定计算向量-矩阵乘积的运算最优序列的方法,以及恢复部分纠删数据的方法。
本发明也涉及存储程序代码的计算机可读存储介质,所述程序代码包含用于实现该类方法的指令。
背景技术
纠删编码常用于存储系统,以提供保护,使其免于各类故障。存储系统的控制器需要实现用于从数据中计算奇偶校验符号以及用于从未纠删符号中恢复损失(纠删)符号的一些算法。通常,这些算法简化为向量-矩阵相乘。然而,现代存储介质,比如SSD,提供极高性能,使得控制器计算性能可能成为系统中的瓶颈。解决该问题的现有方案包括能够高效计算数据大块的异或的硬件RAID控制器,以及软件RAID实现方式,可包括定义纠删码的矩阵相乘的快速算法。这些算法可以是编码特定,或者是通用的,即不考虑编码的代数特性的算法。
采用矩阵G产生的纠删码进行数据编码一般实现为c=xG,其中G=(|),I是标识矩阵,A为GF(2m),m≥1上的k×r矩阵。纠删解码也可表示为其中j1,…,jt是需要恢复数据的故障存储设备的指数,i1,…,il为参与修复的非故障设备的指数,Q为矩阵,使得(I|QT|0)PGT=0,其中P是置换矩阵,作如下映射:s→js,1≤s≤t,t+s′→is′,1≤s′≤l。因此,存储系统需要高效的技术在GF(2m)上计算向量-矩阵乘积。可见该运算简化为GF(2m)个元素的加法(即,异或)及乘法。
解决该问题的现有技术包括:
1.硬件RAID控制器,完全或部分实现一些预定义矩阵(典型的,r≤2)相乘。
2.软件库,可以实现计算向量-矩阵乘积的快速或传统算法。所使用的算法可分为如下类别:
●编码特定的,使用对应矩阵的代数结构
●通用的,实现向量与一些矩阵快速相乘
硬件RAID控制器的主要缺陷在于r较大时难以实现编码和纠删重建技术,需要支持许多不同的系统配置。所以,硬件RAID正在被软件RAID代替。然而,即使现代CPU性能有了巨大进步,纠删编码和重建算法的软件实现的性能,即,执行对应运算所需钟摆数,可能劣于现代存储器比如SSD或RRAM的性能,即,读写对应的数据块所需钟摆数。
此外,获得的快速代数编码及重建算法可能不是针对所有代码,仅仅对于较大系统益处显著。另一方面,现有通用快速向量-矩阵乘法技术的设计没有考虑到有限域计算。即,所述算法没有利用标识x+=0,该标识存在于用于纠删码构建的有限域GF(2m)中。这使得这些算法极其不佳。即,Kronrod-Arlazarov-Diniz-Faradjev算法的复杂性为Mailman算法的复杂性为Williams算法的复杂性为然而,后者难以应用于GF(2m)中的向量。
发明内容
本发明的目的包括提供一种优化器,及一种确定计算向量与二进制矩阵乘积的运算最优序列的方法。所述优化器和所述方法解决了现有技术中的一个或多个问题。本发明另一目的为提供一种存储控制器,及一种恢复部分纠删数据的方法。所述存储控制器及方法解决了现有技术中的一个或多个问题。本发明的目的尤其可以包括减少存储系统中纠删编码解码运算的延时。
本发明第一方面提供一种优化器,用于确定计算向量x与二进制矩阵A的乘积的运算最优序列,所述优化器用于执行如下步骤:
a)确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;
d)估算执行以下步骤所需的算法运算的数量:
e)对于不同子集P,执行步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算最优序列。
第一方面的所述优化器的实施例能够减少实现任意向量与给定矩阵A相乘所需的算术运算数量和/或减少整体计算延时。
第一方面的所述优化器可以在与计算设备分离的设备中实现,该计算设备用于根据第一方面所述优化器确定的最优序列实施向量-矩阵计算。这是有益处的,因为对于给定矩阵A,最优序列仅仅需要确定一次。随后,计算设备可以对于向量x的不同选择实现最优序列。如果计算设备对于不同矩阵A进行向量-矩阵计算,所述优化器可用于对于矩阵A的不同选择提前计算最优序列,并存储最优序列使得计算设备可以查询并检索给定矩阵A的最优序列。
在其他实施例中,第一方面所述优化器可被包括在用于向量-矩阵计算的计算设备中。这尤其有利于计算设备用于实现对于大量不同矩阵的向量-矩阵计算。所以,优选的,计算设备可确定用于实现向量-矩阵乘积计算的最优序列。
在第一方面所述优化器的第二种实现方式中,所述子集随机选取。
随机选取所述子集可包括:使用伪随机算法。所述子集的随机选取具有如下优势:对于子集P的完全不同的选择,可以确定需要多少运算并选取最优子集。
在第一方面所述优化器的第三种实现方式中,在确定计算所述第一部分结果所需算法运算的数量时,假设使用了mailman算法。
mailman算法代表执行第一部分结果的向量-矩阵计算的高效方式。
本发明第二方面提供一种用于确定计算向量与GF(2μ)上的编码矩阵的乘积的运算最优序列的优化器,所述优化器包含:
-计算单元,用以将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;以及
-优化器,用以根据第一方面确定计算所述向量与所述二进制矩阵乘积的运算序列。
因此,确定计算向量与编码矩阵(不一定是二进制矩阵)乘积的最优序列的问题,可被简化为确定计算向量与二进制矩阵乘积的最优序列的问题。该问题可以通过第一方面所述优化器解决。
本发明第五第六方面的方法可以分别被本发明第一第二方面所述优化器执行。本发明第五第六方面的方法的进一步特征或实现方式可以实现本发明第一第二方面所述优化器及其不同实现方式的功能。
在第二方面所述优化器的第一种实现方式中,所述编码矩阵是用于数据编码的线性块代码的检查矩阵,所述数据存储于多个存储设备中。
已发现如果用在用于数据编码的线性块代码的矩阵中,采用第二方面优化器单独优化运算序列尤其有益,该数据存储在多个存储设备上。这尤其有益,因为可基于可能的存储配置之一确定所述矩阵。换言之,有限个存储配置中每一个都对应有编码矩阵。对于每一个所述编码矩阵,第二方面所述优化器可确定用于采用编码矩阵计算向量-矩阵相乘的运算最优序列。该最优序列可被存储在存储控制器,因此该存储器可访问每一个可能存储配置的最优序列。
本发明第三方面涉及存储控制器,用于数据编码,所述数据存储于多个存储设备中,包括:
-探测器,用于探测所述多个存储设备的存储配置;
-控制器,用于确定编码矩阵M,所述矩阵用以根据所述存储配置编码数据;
-优化器,尤其是第二方面所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算最优序列;以及
-可编程逻辑线路,可编程,以使用所述确定的运算序列编码数据。
第三方面的存储控制器可检测存储配置,确定相应编码矩阵,及确定相应的计算向量与编码矩阵乘积的运算最优序列。尤其的,无论何时探测器检测到存储配置已改变,存储控制器可用于确定新的运算最优序列。因此,无需存储控制器的外部编程,存储控制器自身可确定运算最优序列,也即确定了计算向量-矩阵相乘的最优方式。当根据当前存储配置在多个存储设备上存储数据时,该向量-矩阵乘法是必要的。
本发明第四方面涉及存储控制器,用于从多个存储设备中恢复部分纠删数据,包括:
-探测器,用以探测部分纠删数据的故障配置;
-控制器,用于确定编码矩阵M,所述矩阵用以根据所述故障配置恢复数据;
-优化器,尤其是第二方面所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算序列;以及
-可编程逻辑线路,可编程,以使用所述确定的运算序列解码数据。
第四方面的存储控制器可用于恢复部分纠删数据,该数据由第三方面的存储控制器编码。尤其,第四方面的存储控制器也可以是第三方面的存储控制器。即,同一个存储控制器可用于编码数据并恢复部分纠删数据。
在第三方面或第四方面的存储控制器的第一种实现方式中,可编程逻辑电路包含场可编程门阵列。场可编程门阵列(Field-programmable gate arrays,FPGA)生产后可被配置并可高效执行配置的运算。因此,FPGA可用于实现所述优化器确定的最优运算序列。
可以执行算术运算序列,而不是FPGA分流,算术运算通过GPU、CPU或任何其他计算设备采用所提供的方法获得。
本发明第五方面提供一种用于确定计算向量x与二进制矩阵H的乘积的运算最优序列的方法,包含:
a)确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;
d)估算执行以下步骤所需的算法运算的数量:
e)对于不同子集P,执行步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算序列。
本发明第六方面提供一种用于确定计算向量与编码矩阵的GF(2μ)乘积的运算最优序列的方法,包含:
a)将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;以及
b)根据前述第五方面的方法确定计算所述向量与所述二进制矩阵乘积的运算序列。
本发明第七方面涉及一种用于恢复部分纠删数据的方法,包含:
-探测部分纠删数据的故障配置;
-确定编码矩阵M,所述矩阵用以根据所述故障配置恢复数据;
-根据前述第六方面确定计算向量与所述编码矩阵M乘积的运算序列;以及
-使用所述确定的运算序列从部分纠删数据中恢复原始数据。
本发明第八方面提供一计算机可读存储介质,存储有程序代码,所述程序代码包含用于实现第五、第六或第七方面,或第五、第六或第七方面任一实现方式所述的方法的指令。
附图说明
为了更清楚地说明本发明实施例中的技术特征,下面将对实施例描述中所需要使用的附图作简单地介绍。下面描述中的附图仅仅是本发明的一些实施例,这些实施例在不违背本发明如权力要求书中所定义的保护范围的情况下,可以进行修改。
图1是本发明第一实施例第一优化器的框图;
图2是本发明第二实施例第二优化器的框图;
图3是本发明另一实施例存储控制器的框图;
图4是本发明一实施例存储系统架构的框图;
图5是本发明另一实施例确定计算向量x与二进制矩阵H乘积的运算最优序列的方法流程图;
图6是本发明另一实施例确定计算向量与在GF(2μ)上编码矩阵乘积的运算最优序列的方法流程图;
图7是本发明另一实施例恢复部分纠删数据的方法流程图;以及
图8对比可选方法示出了本发明方法的编码复杂性。
具体实施方式
图1是本发明第一实施例第一优化器100的框图。第一优化器100可选的连接于可编程逻辑电路110,图1中以虚线标出。可编程逻辑电路110可选的连接于多个存储设备120。所述优化器110用于确定运算最优序列,可编程逻辑电路110可用于实现运算最优序列。比如,可编程逻辑电路120可实现编码运算最优序列,以计算数据编码。该数据存储与多个存储设备上。
FPGA分流
每次系统配置改变,任何存储设备故障或被替换时,用于编码及纠删恢复的矩阵需要更改。我们提议在存储系统架构中引入FPGA设备,分流矩阵乘法运算对应的计算至该设备中,该运算是纠删编码和恢复所需要的。即,提议的存储系统架构(参见以下图9)可包括控制单元,其检测系统配置变化,包括设备故障和恢复,以及为纠删编码和恢复构建合适的矩阵。上述方法用于构建算术运算序列,实现矩阵乘法。这些序列表征为VHDL规范,该规范被翻译并加载到FPGA。需要纠删编码或恢复的所有数据接入运算调用FPGA以执行相应乘法运算。
图2是本发明第二实施例第二优化器200的框图。第二优化器200包含计算单元210及第一优化器100。第一优化器100可以为图1所示优化器。计算单元210可用于将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积。对于二进制矩阵,优化器100可确定计算向量与二进制矩阵乘积的最优序列。
图3是存储控制器300的框图。存储控制器300包含探测器310,控制器320,优化器330,及可编程逻辑电路340。
存储控制器可配置如下:探测器310用于探测多个存储设备的存储配置。控制器320用于确定编码矩阵M,该矩阵用以根据存储配置编码数据。所述优化器330用于确定计算向量与编码矩阵M乘积的运算序列,尤其是图2所示优化器。可编程逻辑电路340被编程以采用优化器330确定的运算序列编码数据。
同时,存储控制器300的部件可配置如下:探测器310用以探测部分纠删数据的故障配置。控制器320用于确定编码矩阵M,该矩阵用以根据故障配置恢复数据。所述优化器330用于确定计算向量与编码矩阵M乘积的运算序列,尤其是图2所示优化器。可编程逻辑电路340被编程,即,可被优化器330编程,以采用优化器确定的运算序列解码数据。
所以,存储控制器的部件可用于数据编码,该数据存储于多个存储设备,也可以从多个存储设备中恢复部分纠删数据。
可选的,如图3虚线所示,存储控制器连接至多个存储设备350。可编程逻辑电路340可直接连接至多个存储设备350。然而,在本发明其他实施例中,存储控制器300的其他部件,即,探测器310、控制器320和/或优化器330可直接连接至多个存储设备350。多个存储设备350可包括SSD、硬盘驱动器和/或其组合。
图4是本发明一实施例存储系统架构400的框图。架构400包含控制单元410,其检测多个存储设备450的配置。控制单元410用于提供多个存储设备的检测到的配置信息至单元430,该单元用于生成编码纠删解码的运算序列。单元430用于提供确定的最佳序列至VHDL转换器435,转换器435用于提供编程至FPGA 440。应用420(即,在通用计算机上执行)提供数据给FPGA 440,FPGA 440被编程以使用最优序列编码数据并将编码数据写入多个存储设备450。
图5是本发明另一实施例确定计算向量x与二进制矩阵H乘积的运算最优序列的方法流程图。
该方法包含:第一步骤510:确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S。
第四步骤540:估算执行以下步骤所需的算法运算的数量:
第五步骤550:对于不同子集P,执行第一至第四步骤510-540,基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算序列。第一至第四步骤可被执行,例如,预定次数次。
图5所示方法可描述如下:
当m=1,即A为二进制矩阵时,可以使用一些现有快速向量-矩阵乘法算法计算y的少数元素,然后恢复剩余数值作为已计算数值和x的元素的线性组合。只要这些线性组合中项的数量较小,该方法大有裨益。
为了减少整体处理延时,对于上述向量-矩阵乘法,快速算法可以被转换为VHDL代码,相应计算可被分流至附加到系统的FPGA。只要存储系统配置改变,或任一设备故障或恢复,FPGA需要被重新配置。
GF(2m)中矩阵相乘
二进制矩阵相乘
考虑计算y=xA的问题,A为GF(2m)的k×r矩阵。可知y的一些元素可表示为y其他元素与x元素的线性组合。人们有兴趣找到这类仅包括一些项的线性组合。
使得H=(I|AT)(。那么(y|x)HT=0,。H可被认为是一些线性块代码(通常,与原始纠删码无关)的检查矩阵。本发明实施例中,提出的方法可包括以下步骤:
1.找到在矩阵H的行空间的低权重向量z,即,找到H行此类线性组合,其具有少量非零项。
P中元素的数量需要针对特定组合,k,r而优化。
4.剩余数值由如下提供:
z是来自于H的行空间的低权重向量,使得zi=1。
5.针对一些随机选取的不同子集P,执行步骤2至4,选择最短的运算序列。
使得P={1,2,3},可见z=(110010110100),其是行0和1的和,属于H的行空间。得到y0=1+0+2+3+5。只需要四次加法即可计算该数值,而直接计算时,则需要七次。
图6是本发明另一实施例确定计算向量与编码矩阵GF(2μ)乘积的运算最优序列的方法流程图。该方法包括第一步骤610:将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;第二步骤620:确定计算向量与二进制矩阵乘积的运算序列。
图7是本发明另一实施例恢复部分纠删数据的方法流程图。所述方法包含:第一步骤710:探测部分纠删数据的故障配置。这比较重要,因为具体故障配置决定了数据恢复所需的编码矩阵;第二步骤720:确定根据故障配置恢复数据的编码矩阵M。
接下来,第三步骤730:确定计算向量及编码矩阵M的乘积的运算最优序列。最后,步骤740:使用确定的运算最优序列,从部分纠删数据中恢复原始数据。
图8所示为对于本申请提出的方法、mailman算法,及标准方法,实现n×n×二进制矩阵乘法所需加法的次数。对比直接乘法(当下存储常用)及mailman算法,提出的矩阵乘法算法能够减少算术运算的数量。可见可以获得高达15%收益。可见通过消除由方程式(1)带来的常见子表达式,可能进一步减少算术运算数量,但这可能引起更长的计算延时。
表1:里德-所罗门代码基于FPGA编码的计算延时
代码 | 提出的方法 | 传统算法 |
(16,14,3) | 48 | 1180 |
(16,13,4) | 49 | 1656 |
(16,12,5) | 49 | 2010 |
(16,11,6) | 49 | 2248 |
(16,10,7) | 49 | 2478 |
表一示出了对于Altera EP2C70F896C6-R设备使用FPGA模拟器ICARUS,各种里德-所罗门代码的系统编码延时。
简而言之,本发明一些实施例的关键点包括:
1获得向量与矩阵GF(2m)乘法的快速算法的方法,包括:将矩阵分解为二进制矩阵和非二进制矩阵的乘积,选择二进制矩阵的子矩阵,构建二进制矩阵的子矩阵乘法的快速算法,识别线性表达式,线性表达式将向量与二进制矩阵的乘积的剩余元素与计算出的元素和输入数值相关联,选择需要最少数量运算的表达式。
2存储系统使用纠删码,以及使用计算校验符号及恢复纠删符号的方法所获得的算法。
3上述存储系统包括FPGA设备,用于分流根据上述方法得到的算法所对应的纠删编码和恢复计算。
上文所有描述仅仅为本发明的实施方式,本发明所保护的范围并不仅限于此。本领域技术人员可以容易地做出任何变化或替换。因此,本发明的保护范围应以所附权利要求的保护范围为准。
Claims (13)
1.一种优化器(100),用于确定计算向量x与二进制矩阵A的乘积的运算最优序列,其特征在于,所述优化器能够应用于存储系统,所述优化器用于执行如下步骤:
a)确定(510)位于包含所述二进制矩阵A的系统矩阵H∈GF(2n×m)的行空间的低权重向量z的集合s;其中,低权重向量为含有少量非零项的向量;
d)估算(540)执行以下步骤所需的算法运算的数量:
e)对于不同子集P,执行(550)步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算最优序列。
3.根据权利要求1或2任意一项的所述优化器(100),其特征在于,所述子集随机选出。
4.根据权利要求1或2任意一项的所述优化器(100),其特征在于,在确定计算所述第一部分结果所需算法运算的数量时,使用了mailman算法。
5.一种确定计算向量与GF(2μ)上的编码矩阵乘积的运算最优序列的优化器,其特征在于,所述优化器能够应用于存储系统,所述优化器包含:
计算单元(210),用以将所述编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;以及
优化器(100),用以根据权利要求1至4中任意一项所述优化器确定计算所述向量与所述二进制矩阵乘积的运算序列。
6.根据权利要求5所述的优化器,其特征在于,所述编码矩阵是用于数据编码的线性块代码的检查矩阵,所述数据存储于多个存储设备(120、350和450)。
7.一种存储控制器(300),用于数据编码,所述数据存储于多个存储设备(120、350和450),其特征在于,包含:
探测器(310),用于探测所述多个存储设备(120、350和450)的存储配置;
控制器(320),用于确定编码矩阵M,所述矩阵用以根据所述存储配置编码数据;
优化器,根据权利要求5或6所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算最优序列;以及
可编程逻辑线路(340),可编程,以使用所述确定的运算序列编码数据。
8.一种存储控制器(300),用于从多个存储设备(120、350和450)中恢复部分纠删数据,其特征在于,包含:
探测器(310),用于探测部分纠删数据的故障配置;
控制器(320),用于确定编码矩阵M,该矩阵用以根据所述故障配置恢复数据;
优化器,权利要求5或6所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算最优序列;以及
可编程逻辑线路(340),可编程,以使用所述确定的运算序列解码数据。
9.根据权利要求8所述的存储控制器(300),其特征在于,所述可编程逻辑线路(340)包含场可编程门阵列。
10.一种确定计算向量x与二进制矩阵A乘积的运算最优序列的方法,其特征在于,所述方法应用于存储系统,包含:
a)确定(510)位于包含二进制矩阵A的系统矩阵H∈GF(2n×m)的行空间的低权重向量z的集合S;其中,低权重向量为含有少量非零项的向量;b)选择(520)子集,使得对于任何i∈P,存在至少一个z∈S,zi=1;
d)估算(540)执行以下步骤所需的算法运算的数量:
e)对于不同子集P,执行(550)步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算序列。
11.一种确定计算向量与编码矩阵GF(2μ)乘积的运算最优序列的方法,其特征在于,所述方法应用于存储系统,包含:
a)将编码矩阵分解(610)为非二进制矩阵和二进制矩阵的乘积;以及
b)根据前述权利要求10的方法确定(620)所述计算向量与所述二进制矩阵乘积的运算序列。
12.一种恢复部分纠删数据的方法,其特征在于,包含:
探测(710)部分纠删数据的故障配置;
确定(720)编码矩阵M,所述矩阵用以根据所述故障配置恢复数据;
根据前述权利要求11确定(730)计算向量与所述编码矩阵M乘积的运算序列;以及
使用所述确定的运算序列从部分纠删数据中恢复(740)原始数据。
13.一种计算机可读存储介质,用于存储程序代码,其特征在于,所述程序代码包含用于实现权利要求10至12任意一项所述方法的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2015/000663 WO2017065628A1 (en) | 2015-10-12 | 2015-10-12 | Optimizer for determining an optimal sequence of operations for matrix-vector multiplication |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108140016A CN108140016A (zh) | 2018-06-08 |
CN108140016B true CN108140016B (zh) | 2021-02-23 |
Family
ID=55969446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580083827.6A Active CN108140016B (zh) | 2015-10-12 | 2015-10-12 | 确定矩阵-向量相乘的运算最优序列的优化器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108140016B (zh) |
WO (1) | WO2017065628A1 (zh) |
Families Citing this family (3)
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 |
CN111176962B (zh) * | 2019-12-02 | 2021-09-10 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
US11269973B2 (en) | 2020-04-28 | 2022-03-08 | Hewlett Packard Enterprise Development Lp | Crossbar allocation for matrix-vector multiplications |
-
2015
- 2015-10-12 CN CN201580083827.6A patent/CN108140016B/zh active Active
- 2015-10-12 WO PCT/RU2015/000663 patent/WO2017065628A1/en active Application Filing
Non-Patent Citations (5)
Title |
---|
《Cyclotomic FFTs With Reduced Additive Complexities Based on a Novel Common Subexpression Elimination Algorithm》;Ning Chen;《Published in: IEEE Transactions on Signal Processing》;IEEE;20081121;第57卷(第3期);全文 * |
《Reduced-Complexity Reed–Solomon Decoders Based on Cyclotomic FFTs》;Ning Chen;《IEEE Signal Processing Letters》;IEEE;20090224;第16卷(第4期);全文 * |
《二进制范德蒙编码存储策略的低计算量优化方法》;蒋海波;《四川大学学报(工程科学版)》;20150731;第47卷(第4期);全文 * |
《基于二进制矩阵的RS编码优化算法》;朱卫卫;《计算机工程》;20111231;第37卷(第23期);全文 * |
Matrix-Vector Multiplication via Erasure Decoding;Peter Trifonov;《11th internation symposium on problems on problems of redundancy in information and comtrol systems》;20070702;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108140016A (zh) | 2018-06-08 |
WO2017065628A1 (en) | 2017-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100928882B1 (ko) | Raid 장치 및 갈로아체를 이용한 데이터 복원 장치 | |
US10146618B2 (en) | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes | |
CN104160452B (zh) | 用于存储数据和对擦除进行纠正的方法、系统和装置 | |
US9495243B2 (en) | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems | |
US9405623B2 (en) | Method of, and apparatus for, layout rectification of erasure encoded storage systems | |
JP5805727B2 (ja) | 縮退故障を有するメモリセルに対応するためのデータ符号化及び復号化 | |
KR101522509B1 (ko) | 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로 | |
CN111858142A (zh) | 一种数据处理方法、装置及电子设备和存储介质 | |
CN105353974B (zh) | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 | |
CN108140016B (zh) | 确定矩阵-向量相乘的运算最优序列的优化器 | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
US20120198195A1 (en) | Data storage system and method | |
CN109358980B (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
CN113687975A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN104268031A (zh) | 一种用于磁盘阵列存储系统中固态硬盘的擦除码配置方法 | |
CN112181707B (zh) | 分布式存储数据恢复调度方法、系统、设备及存储介质 | |
WO2019076912A1 (en) | SYSTEMATIC AND XOR-BASED CODING TECHNIQUE FOR DISTRIBUTED STORAGE SYSTEMS | |
US10693498B2 (en) | Parity check matrix generator, operating method thereof and error correction circuit using parity check matrix generated by the same | |
CN103151078A (zh) | 一种存储器检错纠错码生成方法 | |
CN108347250B (zh) | 适用于少量冗余里德-所罗门码的快速编码方法及设备 | |
KR102007163B1 (ko) | 인코더, 디코더 및 이를 포함하는 반도체 장치 | |
CN108352845B (zh) | 用于对存储数据进行编码的方法以及装置 | |
JP2023045450A (ja) | シンドローム計算回路、誤り訂正回路およびメモリシステム | |
JP5278115B2 (ja) | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 | |
CN107615248B (zh) | 分布式数据存储方法、控制设备和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |