一种纠删码解码加速的方法、系统、介质及计算机设备与流程

文档序号:20614461发布日期:2020-05-06 19:58阅读:191来源:国知局
本申请涉及数据处理
技术领域
:,尤其涉及一种纠删码解码加速的方法、系统、介质及计算机设备。
背景技术
::目前,在数据通信
技术领域
:,常常采用各种编码技术,以实现数据的快速传输或数据的准确传输的目的。纠删码编码技术是数据通信中常用的一种编码技术。主要是通过纠删码编码算法将原始数据进行编码得到冗余数据,并将原始数据和冗余数据一并存储,以达到容错的目的。其基本思想是将d块原始数据元素(数据块)通过一定的计算,得到p块冗余元素(校验块)。其中,通过合理设计d和p的值,可以实现数据传输速度和准确率的折衷。对于这d+p块的元素,当其中任意的p块元素出错(可包括原始数据和冗余数据)时,均可以通过对应的解码算法恢复出原来的d块数据。因此,纠删码的解码是数据通信中重要的数据处理过程。在进行纠删码的解码时,需要利用纠删码编码时的编码矩阵的子矩阵的逆矩阵。但是在利用上述逆矩阵时,需要先根据编码矩阵的子矩阵计算其逆矩阵。矩阵求逆算法的时间复杂度为o(n^3),因此,每次解码运算都需要先求得相应子矩阵需要花费大量的时间,并占用大量的计算资源,从而造成了解码时间和计算资源的浪费。因此,需要一种能够快速对纠删码进行解码的方法和系统。技术实现要素:为了解决现有技术中纠删码解码较慢的问题,提出了一种纠删码解码加速的方法、系统、介质及计算机设备。根据本申请的一个方面,提供了一种纠删码解码加速的方法,所述方法包括:判断是否对所述纠删码解码进行加速;若判断进行加速,则在获取解码所需逆矩阵时,基于所述逆矩阵相应的子矩阵在已缓存逆矩阵信息中进行查找,若存在所需逆矩阵,则从所述已缓存逆矩阵信息中获取所需逆矩阵以进行解码,若不存在,则基于所述逆矩阵相应的子矩阵计算所需逆矩阵以进行解码,并缓存计算得到的所需逆矩阵信息,其中所述逆矩阵相应于所述纠删码的编码矩阵的子矩阵。其中,判断是否对所述纠删码解码进行加速包括:获取所述纠删码中数据块的行数和冗余块的行数,并基于所述数据块的行数和所述冗余块的行数判断是否对所述纠删码解码进行加速。其中,基于所述数据块的行数和所述冗余块的行数判断是否对所述纠删码解码进行加速包括:若确定所述数据块的行数小于等于第一设定阈值且所述冗余块的行数小于等于第二设定阈值,则判断对所述纠删码解码进行加速。其中,缓存计算得到的所需逆矩阵信息包括:缓存所需逆矩阵以及表示该逆矩阵相应的子矩阵在所述编码矩阵中的位置的信息。其中,从所述已缓存逆矩阵信息中获取所需逆矩阵包括:获取所需逆矩阵相应的子矩阵在所述编码矩阵中的位置,基于所述位置在所述已缓存逆矩阵信息中进行查询,并获取所需逆矩阵。根据本发明的另一个方面,提供了一种纠删码解码加速的系统,所述系统包括:判断模块,用于判断是否对所述纠删码解码进行加速;加速模块,若判断进行加速,则在获取解码所需逆矩阵时,基于所述逆矩阵相应的子矩阵在已缓存逆矩阵信息中进行查找,若存在所需逆矩阵,则从所述已缓存逆矩阵信息中获取所需逆矩阵以进行解码,若不存在,则基于所述逆矩阵相应的子矩阵计算所需逆矩阵以进行解码,并缓存计算得到的所需逆矩阵信息,其中所述逆矩阵相应于所述纠删码的编码矩阵的子矩阵。其中,所述判断模块还用于:获取所述纠删码中数据块的行数和冗余块的行数,并基于所述数据块的行数和所述冗余块的行数判断是否对所述纠删码解码进行加速。其中,所述判断模块还用于通过下述方式判断是否对所述纠删码解码进行加速:若确定所述数据块的行数小于等于第一设定阈值且所述冗余块的行数小于等于第二设定阈值,则判断对所述纠删码解码进行加速。其中,所述加速模块还用于缓存计算得到的所需逆矩阵信息时,缓存所需逆矩阵以及表示该逆矩阵相应的子矩阵在所述编码矩阵中的位置的信息。其中,所述加速模块还用于从所述已缓存逆矩阵信息中获取所需逆矩阵时,获取所需逆矩阵相应的子矩阵在所述编码矩阵中的位置,基于所述位置在所述已缓存逆矩阵信息中进行查询,并获取所需逆矩阵。根据本发明的另一个方面,提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述方法的步骤。根据本发明的另一个方面,提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。本申请中的纠删码解码加速的方法和系统,通过在满足缓存空间要求以及查询时间要求的情况下,对纠删码解码所需的逆矩阵进行缓存的方式,节省计算逆矩阵所需的时间以及计算资源,提高了纠删码解码的效率。在对逆矩阵进行缓存的情况下,为了快速地查询到已缓存的逆矩阵,采用key-value容器数据结构缓存逆矩阵,减少了获取逆矩阵的时间,提高了纠删码解码的效率。附图说明构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请的纠删码解码加速的方法的流程图;图2是根据本申请的纠删码解码加速的系统的模块图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。纠删码的解码是数据通信中重要的数据处理过程。在进行纠删码的解码时,需要利用纠删码编码时的编码矩阵的子矩阵的逆矩阵。但是在利用上述逆矩阵时,需要先根据编码矩阵的子矩阵计算其逆矩阵。矩阵求逆算法的时间复杂度为o(n^3),因此,每次解码运算都需要先求得相应子矩阵需要花费大量的时间,并占用大量的计算资源,从而造成了解码时间和计算资源的浪费。本申请提供的技术方案,在对纠删码解码时,利用合适的数据结构将计算出的编码矩阵的子矩阵的逆矩阵进行缓存,通过这种方式,对于一个子矩阵来说,只需要计算一次其逆矩阵,并将计算出的该逆矩阵进行缓存,这样,当后续的解码过程需要利用该逆矩阵时,仅需要从缓存中查询出该逆矩阵即可,节省了再次计算逆矩阵的时间。采用这种在数据结构中缓存逆矩阵并在需要时查询获取的方式,提高了纠删码解码的效率。本申请提供了一种纠删码解码加速的方法,所述方法包括:步骤101,判断是否对纠删码解码进行加速;步骤102,若判断进行加速,则在获取解码所需逆矩阵时,基于逆矩阵相应的子矩阵在已缓存逆矩阵信息中进行查找,若存在所需逆矩阵,则从所述已缓存逆矩阵信息中获取所需逆矩阵以进行解码,若不存在,则基于所述逆矩阵相应的子矩阵计算所需逆矩阵以进行解码,并缓存计算得到的所需逆矩阵信息,其中逆矩阵相应于所述纠删码的编码矩阵的子矩阵。如本领域技术人员所熟知的,在利用纠删码编码原理对待传输数据进行编码时,需要将编码矩阵与数据块相乘得到冗余块,在对纠删码进行解码时,则需要通过编码矩阵的逆矩阵来进行解码,实际中,通过编码矩阵的子矩阵的逆矩阵来进行解码。这样,当对接收的纠删码数据进行解码时,如果对于所需的逆矩阵,每次都通过其对应的子矩阵进行计算得到,则会消耗大量的时间和运行资源。因此,本申请在判断对纠删码进行加速时,解码时需要编码矩阵的子矩阵的逆矩阵时,会先从缓存的逆矩阵的存储结构中进行查询,如该存储结构中有相应的逆矩阵,则从存储结构中直接取出该逆矩阵进行解码;如没有相应的逆矩阵,则通过矩阵求逆运算得到该逆矩阵进行解码,同时将计算得到的该逆矩阵缓存到存储结构中,以便后续需要该逆矩阵时可以直接从存储结构中查询得到,而不需要重复计算该逆矩阵,从而节省计算逆矩阵的时间和运行资源。上述步骤101中,判断是否对所述纠删码解码进行加速包括:获取纠删码中数据块的行数和冗余块的行数,并基于数据块的行数和冗余块的行数判断是否对所述纠删码解码进行加速。对于纠删码来说,数据块(datashards)与冗余块(parityshards)的总和小于等于255,这是为了保证mds(maximumdistanceseparable)性质。在实践中,这个数字会更小,以便取得修复开销和冗余成本的平衡。因此,根据数据块和冗余块的大小,可以计算出在该纠删码解码过程中的所有可能出现的逆矩阵的个数,这为控制逆矩阵缓存的规模提供了依据。当逆矩阵的个数太大时,缓存这些逆矩阵需要的内存空间就会非常大,并且解码时查询所需逆矩阵所需要的时间也会非常多,在这种情况下就不适宜采用这种对逆矩阵进行缓存的方法对解码过程进行加速。具体地,基于数据块的行数和冗余块的行数判断是否对纠删码解码进行加速包括:若确定数据块的行数小于等于第一设定阈值且冗余块的行数小于等于第二设定阈值,则判断对纠删码解码进行加速。计算组合数的值,即求可能的逆矩阵个数,其中d表示数据块的大小,p表示冗余块的大小,这里数据块和冗余块的大小分别表示数据块的行数和冗余块的行数。如d=16,p=16时,计算得到组合数则缓存所有逆矩阵至少需要的内存空间为16*16*601080390byte=143gb,其中,16*16表示一个逆矩阵包括的数据元素个数,这种情况下的内存开销非常大,并且查询也会消耗大量的时间。因此,在判断是否对纠删码解码过程进行加速时,根据计算的组合数的结果并参考可用缓存大小的实际情况,来进行判断。为了控制缓存的数据量,可以对数据块和冗余块的大小进行一定的限定,如数据块行数小于等于第一设定阈值且冗余块行数小于等于第二设定阈值时,对逆矩阵进行缓存,即进行加速。例如,上述第一设定阈值可以设置为18,第二设定阈值可以设置为4。若上述的阈值条件有任一个不满足,则不缓存逆矩阵。另外,使用并发安全的key-value容器数据结构(通过利用散列表,hashtable)来作为逆矩阵缓存的数据结构。这是因为key-value容器可以,通过散列表根据键(key)值直接访问内存中存储位置,从而可以加快后续的查询速度。并且,使用锁结构来避免并发情况下同时修改同一内存地址导致数据错误的可能性。key-value容器和锁结构是本领域技术人员熟知的技术内容,因此在此不再赘述。需要说明的是,数据块加冗余块的行数需要小于64,因为逆矩阵缓存到key-value容器时的key的数据类型为uint64结构。在上述步骤102中,缓存计算得到的所需逆矩阵信息包括:缓存所需逆矩阵以及表示该逆矩阵相应的子矩阵在所述编码矩阵中的位置的信息。这里,在缓存逆矩阵时,同时缓存逆矩阵相应的子矩阵在编码矩阵中的位置的信息,是为了当需要某个子矩阵的逆矩阵进行解码时,能快速通过一子矩阵的位置信息查询到该子矩阵的逆矩阵。如上所述,在本申请中,可以使用key-value容器作为逆矩阵缓存的数据结构。这是因为容器可以保存关键字-值(key-value)的数据对,关键字起到索引的作用,值则表示索引相关联的数据。这样就可以将子矩阵在编码矩阵中的位置的信息保存在关键字中,将逆矩阵保存在与该关键字相应的值中。另外,在上述步骤102中,从所述已缓存逆矩阵信息中获取所需逆矩阵包括:获取所需逆矩阵相应的子矩阵在所述编码矩阵中的位置,基于所述位置在所述已缓存逆矩阵信息中进行查询,并获取所需逆矩阵。具体地,通过保存在key-value容器数据结构中的关键字(即,表示子矩阵在所述编码矩阵中的位置的关键字),查找到该关键字相对应的值,该相对应的值即为逆矩阵。如果在缓存逆矩阵的数据结构中,没有查询到表示一子矩阵在所述编码矩阵中的位置的关键字,则表明该逆矩阵未被缓存过,则需要通过矩阵求逆运算来计算该子矩阵的逆矩阵。下面说明如何将一子矩阵在所述编码矩阵中的位置表示为关键字的具体例子,实际操作中,只要能将子矩阵在编码矩阵中的位置表示为关键字即可,而不限于下述的具体例子。即,只要将一子矩阵在编码矩阵中的位置与一关键字一一对应,以便解码时能够尽快检索到相应的逆矩阵即可。需要说明的是,下面例子中的方法适用于将编码矩阵在行上分割得到子矩阵的情况。假设一子矩阵在编码矩阵中所占据的行为第0行、第1行、第2行,则表示第0行的值为二进制数1,表示第1行的值为二进制数10,表示第2行的值为二进制数100,那么表示该子矩阵在编码矩阵中的位置的关键字为:二进制数001+010+100所对应的十进制数,即为7。假设一子矩阵在编码矩阵中所占据的行为第3行、第4行、第5行,则表示第3行的值为二进制数1000,表示第4行的值为二进制数10000,表示第5行的值为二进制数100000,那么表示该子矩阵在编码矩阵中的位置的关键字为:二进制数1000+10000+100000所对应的十进制数,即为56。通过上述表示子矩阵在所述编码矩阵中的位置的方式,可以唯一地表示出一子矩阵在编码矩阵中的位置。若子矩阵中有一行在编码矩阵中占据的行数为第n行,则将二进制数1向左位移n位得到该行对应的二进制,将子矩阵中各行对应的二进制数相加并求出该二进制和对应的十进制数,该十进制数即为与该子矩阵在编码矩阵中的位置对应的关键字。其中,第0行对应的二进制数为1。上面的例子是以编码矩阵的第一行是从第0行开始计数为例的,如果编码矩阵的第一行从第1行开始计数,则需要做相应的变化。需要说明的是,当纠删码的数据块或冗余块的大小发生变化时,则需要重新对是否加速进行判断以及判断为加速时重新缓存逆矩阵。即,缓存的逆矩阵只适用于某一特定数据块大小和冗余块大小的纠删码。下面详细描述根据本申请的具体实施例,其包括下面的步骤:步骤一,获取纠删码中数据块的行数和冗余块的行数,确定是否同时满足数据块的行数小于等于第一设定阈值且冗余块的行数小于等于第二设定阈值。步骤二,确定同时满足上述条件,则判断对纠删码解码进行加速。步骤三,基于逆矩阵相应的子矩阵在所述编码矩阵中的位置的信息,在缓存逆矩阵信息的key-value容器数据结构中进行查找,若找到对应的key,则将该key所对应的value值中的逆矩阵取出,进行解码;若没有找到对应的key,则表明所查找的逆矩阵未被缓存,则计算该逆矩阵,并进行解码。步骤四,将计算出的上述逆矩阵以及表示该逆矩阵对应的子矩阵在编码矩阵中位置的key一同缓存在key-value容器数据结构中。本申请还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述方法的步骤。本申请还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。本申请还提供了一种纠删码解码加速的系统,所述系统包括:判断模块201,用于判断是否对所述纠删码解码进行加速;加速模块202,若判断进行加速,则在获取解码所需逆矩阵时,基于所述逆矩阵相应的子矩阵在已缓存逆矩阵信息中进行查找,若存在所需逆矩阵,则从所述已缓存逆矩阵信息中获取所需逆矩阵以进行解码,若不存在,则基于所述逆矩阵相应的子矩阵计算所需逆矩阵以进行解码,并缓存计算得到的所需逆矩阵信息,其中所述逆矩阵相应于所述纠删码的编码矩阵的子矩阵。所述判断模块201还用于:获取所述纠删码中数据块的行数和冗余块的行数,并基于所述数据块的行数和所述冗余块的行数判断是否对所述纠删码解码进行加速。所述判断模块201还用于通过下述方式判断是否对所述纠删码解码进行加速:若确定所述数据块的行数小于等于第一设定阈值且所述冗余块的行数小于等于第二设定阈值,则判断对所述纠删码解码进行加速。所述加速模块202还用于缓存计算得到的所需逆矩阵信息时,缓存所需逆矩阵以及表示该逆矩阵相应的子矩阵在所述编码矩阵中的位置的信息。所述加速模块202还用于从所述已缓存逆矩阵信息中获取所需逆矩阵时,获取所需逆矩阵相应的子矩阵在所述编码矩阵中的位置,基于所述位置在所述已缓存逆矩阵信息中进行查询,并获取所需逆矩阵。本申请中的纠删码解码加速的方法和系统,通过在满足缓存空间要求以及查询时间要求的情况下,对纠删码解码所需的逆矩阵进行缓存的方式,节省计算逆矩阵所需的时间以及计算资源,提高了纠删码解码的效率。在对逆矩阵进行缓存的情况下,为了快速地查询到已缓存的逆矩阵,采用key-value容器数据结构缓存逆矩阵,减少了获取逆矩阵的时间,提高了纠删码解码的效率。上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本申请的保护范围之内。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。以上实施例仅用以说明本申请的技术方案而非限制,仅仅参照较佳实施例对本申请进行了详细说明。本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或者等同替换,而不脱离本申请技术方案的精神和范围,均应涵盖在本申请的权利要求范围当中。本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1