数据冗余方法及装置与流程

文档序号:16692839发布日期:2019-01-22 19:05阅读:211来源:国知局
数据冗余方法及装置与流程

本发明涉及数据处理领域,更具体地涉及一种数据冗余方法及装置。



背景技术:

数据冗余技术采用副本冗余或者纠错编码的方式提高数据的安全性和可靠性,但是数据冗余技术带来巨大的存储容量开销和访存功耗开销,针对大规模的数据,这个问题会更加严重。因此如何结合数据的特性进行数据冗余成为一个亟待解决的问题。



技术实现要素:

鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明提出了一种数据冗余方法及装置。

根据本发明的一个方面,提供了一种数据冗余方法,包括:将数据划分为m个重要等级;提取每一重要等级中的每一数据的重要比特位;以及针对所述重要比特位进行数据冗余处理,其中m为正整数。

在本发明的一些实施例中,所述数据冗余处理包括副本冗余处理和/或纠错编码处理。

在本发明的一些实施例中,所述纠错编码处理包括循环冗余校验(crc)和/或错误检查和纠正(ecc)。

在本发明的一些实施例中,对数据进行纠错编码处理包括:对该数据采用循环冗余校验(crc)的方式进行冗余存储,当进行读操作时,读取存储循环冗余校验码,并对原始数据进行循环冗余校验码计算,如果两个循环冗余校验码不一致,则按照存储的循环冗余校验码对该数据进行修正,进行写操作时,同时存储该数据的原始数据和循环冗余校验码。

在本发明的一些实施例中,对数据进行纠错编码处理包括:对该数据采用错误检查和纠正(ecc)内存进行冗余存储,在进行读写操作时,错误检查和纠正(ecc)内存自动进行检错和纠错处理。

在本发明的一些实施例中,所述副本冗余处理包括同时备份n份副本,其中n≥2,为正整数。

在本发明的一些实施例中,对数据的重要比特位进行副本冗余处理包括:进行读操作时,对于重要比特位同时读取原始数据和备份的n份数据,若出现数据不一致,则取相同的n份数据作为最终读取的数据,同时将第n+1份不一致数据修复,当进行写操作时,对于重要比特位同时写回到n个备份地址,同时保证原始数据中的数据和n个备份数据一致。

在本发明的一些实施例中,所述将数据划分为m个重要等级包括根据数据的大小、数据绝对值的大小、数据的类型、数据的读操作频率及数据的写操作频率中的至少一个来进行划分。

在本发明的一些实施例中,所述数据包括神经网络参数,按照神经网络参数的绝对值划分m个重要等级,按照由大到小的顺序设定m+1个阈值t0,t1,t2,...及tm,当神经网络参数的绝对值d满足ti-1>d>ti时,该数据归为第i个重要等级,其中i=1,2……,m,t0,t1,t2,...及tm均为实数,且t0>t1>t2>...>tm≥0。

在本发明的一些实施例中,所述数据包括稀疏神经网络参数,所述稀疏神经网络参数包括非零参数和非零参数位置,所述非零参数位置设置为第1重要等级,非零参数按照参数绝对值划分m-1个重要等级,按照由大到小的顺序设定m个阈值t1,t2,...及tm,当非零参数的绝对值d满足ti-1>d>ti时,该数据归为第i个重要等级,其中i=2,3……,m,t1,t2,...及tm均为实数,且t1>t2>...>tm≥0。

在本发明的一些实施例中,所述数据包括图计算应用数据,包括顶点数据和边数据,所述顶点数据设置为第1重要等级,边数据按照访问频率划分m-1个重要等级,按照由大到小的顺序设定m个阈值t1,t2,...及tm,当边数据按照访问频率f满足ti-1>f>ti时,该数据归为第i个重要等级,其中i=2,3……,m,t1,t2,...及tm-1均为实数,且t1>t2>...>tm≥0。

在本发明的一些实施例中,提取每一重要等级中的每一数据的重要比特位包括:所述数据为浮点型参数,设置符号位、指数部分以及底数部分前y位指定为重要比特位,y为正整数;和/或所述数据为定点型参数,设置符号位、数值部分前z位指定为重要比特位,z为正整数。

根据本发明的另一方面,提供一种数据冗余装置,包括:重要等级划分单元,用于将数据划分为m个重要等级;重要比特位提取单元,用于提取每一重要等级中的每一数据的重要比特位;以及数据冗余处理单元,用于针对所述重要比特位进行数据冗余处理,其中m为正整数。

在本发明的一些实施例中,所述数据冗余处理包括副本冗余处理和/或纠错编码处理,所述数据冗余处理单元包括:冗余存储单元,用于存储冗余数据;以及读写控制单元,用于读取和/或写入数据。

在本发明的一些实施例中,所述纠错编码处理包括循环冗余校验(crc)和/或错误检查和纠正(ecc)。

在本发明的一些实施例中,对数据进行纠错编码处理包括:冗余存储单元对该数据采用循环冗余校验(crc)的方式进行冗余存储,当读写控制单元进行读操作时,读取存储循环冗余校验码,并对原始数据进行循环冗余校验码计算,如果两个循环冗余校验码不一致,则按照存储的循环冗余校验码对该数据进行修正,当读写控制单元进行写操作时,冗余存储单元同时存储该数据的原始数据和循环冗余校验码。

在本发明的一些实施例中,对数据进行纠错编码处理包括:对该数据采用错误检查和纠正(ecc)内存进行冗余存储,在进行读写操作时,错误检查和纠正(ecc)内存自动进行检错和纠错处理。

在本发明的一些实施例中,所述副本冗余处理包括同时备份n份副本,其中n≥2,为正整数。

在本发明的一些实施例中,对数据的重要比特位进行副本冗余处理包括:当读写控制单元进行读操作时,对于重要比特位同时读取原始数据和备份的n份数据,若出现数据不一致,则取相同的n份数据作为最终读取的数据,同时将第n+1份不一致数据修复,当读写控制单元进行写操作时,对于重要比特位同时写回到n个备份地址,同时冗余存储单元保证原始数据中的数据和n个备份数据一致。

在本发明的一些实施例中,所述重要等级划分单元将数据划分为m个重要等级包括根据数据的大小、数据绝对值的大小、数据的类型、数据的读操作频率及数据的写操作频率中的至少一个来进行划分。

在本发明的一些实施例中,所述数据包括神经网络参数,按照神经网络参数的绝对值划分m个重要等级,按照由大到小的顺序设定m+1个阈值t0,t1,t2,...及tm,当神经网络参数的绝对值d满足ti-1>d>ti时,该数据归为第i个重要等级,其中i=1,2……,m,t0,t1,t2,...及tm均为实数,且t0>t1>t2>...>tm≥0。

在本发明的一些实施例中,所述数据包括稀疏神经网络参数,所述稀疏神经网络参数包括非零参数和非零参数位置,所述非零参数位置设置为第1重要等级,非零参数按照参数绝对值划分m-1个重要等级,按照由大到小的顺序设定m个阈值t1,t2,...及tm,当非零参数的绝对值d满足ti-1>d>ti时,该数据归为第i个重要等级,其中i=2,3……,m,t1,t2,...及tm均为实数,且t1>t2>...>tm≥0。

在本发明的一些实施例中,所述数据包括图计算应用数据,包括顶点数据和边数据,所述顶点数据设置为第1重要等级,边数据按照访问频率划分m-1个重要等级,按照由大到小的顺序设定m个阈值t1,t2,...及tm,当边数据按照访问频率f满足ti-1>f>ti时,该数据归为第i个重要等级,其中i=2,3……,m,t1,t2,...及tm-1均为实数,且t1>t2>...>tm≥0。

在本发明的一些实施例中,所述重要比特位提取单元提取每一重要等级中的每一数据的重要比特位包括:所述数据为浮点型参数,设置符号位、指数部分以及底数部分前y位指定为重要比特位,y为正整数;和/或所述数据为定点型参数,设置符号位、数值部分前z位指定为重要比特位,z为正整数。

从上述技术方案可以看出,本发明具有至少以下有益效果:

对数据选择性的进行冗余处理,减少存储容量开销和访存功耗开销;

区分数据的重要等级,对不同重要等级的数据进行不同的冗余处理,保证存储数据的安全性和可靠性的同时,减少存储容量占用和访存功耗。

附图说明

图1为本发明一实施例中数据冗余方法的流程图;

图2为本发明另一实施例数据冗余装置的结构框图;

具体实施方式

本发明某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本发明的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本发明满足适用的法律要求。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

本发明实施例提供了一种数据冗余方法,通过将数据划分为多个重要等级,并针对不同的重要等级的数据进行不同的数据冗余处理,在保证存储数据的安全性和可靠性的基础上,减少存储容量开销和访存功耗开销。

具体的,图1示出了数据冗余方法的流程图,如附图1所示,数据冗余方法包括以下具体步骤:

步骤s101:将数据划分为m个重要等级,m为正整数;

具体地,数据的重要等级可以综合考虑数据的大小,数据绝对值的大小,数据的类型(浮点型、定点型),数据的读操作频率,数据写操作频率等因素进行设置。

步骤s102:提取每一重要等级中的每一数据的重要比特位;

具体地,数据中的比特位分为重要比特位和非重要比特位。若数据共有x个比特位,其中y个比特位是重要比特位,(x-y)个比特位是不重要比特位,其中x,y为正整数,0≤y<x。后续仅对数据的y个重要比特位进行处理,y个重要比特位的位置可以是连续的,也可以是不连续的。

步骤s103:针对所述重要比特位进行数据冗余处理。

具体地,所述数据冗余处理包括副本冗余处理和/或纠错编码处理,可以根据不同的重要性来进行不同的处理,例如可以,当一数据中的所有比特位均为重要比特位时,对该数据的所有比特位进行纠错编码处理,当一数据中的部分比特位为重要比特位时,对该数据的重要比特位进行副本冗余处理。

副本冗余可以在同一块存储介质备份冗余,也可以在不同存储介质备份冗余。数据可以同时备份n份,其中n是大于0的正整数。纠错编码方式包括但不仅限于循环冗余校验(cyclicredundancycheck,crc),错误检查和纠正(errorcorrectingcode,ecc)。

以下通过几个实例具体介绍本实施例中的数据冗余方法。

实例1:对神经网络参数进行数据冗余。

首先将神经网络参数按照参数绝对值大小确定m个重要等级,第1、2……m重要等级,并将参数对应划入各重要等级。

具体地,设定m+1个阈值,按照从大到小排序后的分别记为t0,t1,t2,...及tm。当神经网络参数的绝对值d满足ti-1>d>ti时,该数据归为第i个重要等级,其中i=1,2……,m,t0,t1,t2,...及tm均为实数,且t0>t1>t2>...>tm≥0。即神经网络参数的绝对值t0>d>t1时,划入第1重要等级,神经网络参数的绝对值t1>d>t2时,划入第2重要等级,依次类推。

对于第i重要等级参数中浮点型的一参数,共有xi个比特位,设置符号位与指数部分以及底数部分前yi位指定为重要比特位,其中xi,yi均为正整数,且0<yi≤xi。

对于第i重要等级参数中的定点型的参数,共有xi个比特位,设置设符号位和数值部分前zi位是重要比特位,其中xi,zi均为正整数,且0<zi≤xi。

对第i重要等级参数中重要比特位采用数据备份的方式进行数据冗余,并且备份两份,对不重要比特位不进行冗余存储。当对第i重要等级中的参数进行读操作时,对于重要比特位同时读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第i重要等级参数进行写操作时,对于重要比特位同时写回到两个备份地址,同时保证原始数据中的数据和两个备份数据一致。

实例2:对稀疏神经网络参数进行数据冗余。

本实例中稀疏神经网络参数分为两部分,分别是非零参数和非零参数位置。

将非零参数位置设置为第1重要等级,并且将其所有的比特位标记为重要比特性,采用crc校验码的方式进行冗余存储。当进行读操作时,读取存储crc校验码并对原始数据进行crc校验码计算,如果两个crc校验码不一致,则按照存储的crc校验码对数据进行修正。进行写操作时,同时存储原始数据和crc校验码。

将神经网络的非零参数按照参数绝对值大小设置重要等级,从第2重要等级开始依次设置m-1个重要等级。设定m个阈值,按照从大到小排序后的分别记为t1,t2,...及tm。当非零参数的绝对值d满足ti-1>d>ti时,该数据归为第i个重要等级,其中i=2,3……,m,t1,t2,...及tm均为实数,且t1>t2>...>tm≥0。即非零参数的绝对值满足t1>d>t2时,划入第2重要等级,非零参数的绝对值满足t2>d>t3时,划入第3重要等级依次类推。

对于第i重要等级参数中浮点型的一参数,共有xi个比特位,设置符号位与指数部分以及底数部分前yi位指定为重要比特位,其中xi,yi均为正整数,且0<yi≤xi。

对于第i重要等级参数中的定点型的参数,共有xi个比特位,设置设符号位和数值部分前zi位是重要比特位,其中xi,zi均为正整数,且0<zi≤xi。

对第i重要等级参数中重要比特位,采用数据备份的方式进行数据冗余,并且备份两份,对不重要比特位不进行冗余存储。当对第i重要等级中的参数进行读操作时,对于重要比特位同时读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第i重要等级参数进行写操作时,对于重要比特位同时写回到两个备份地址,同时保证原始数据中的数据和两个备份数据一致。

实施例3:图计算的应用中数据冗余。

本实施中图计算应用中数据分为两部分,包括顶点数据和边数据。

将图计算应用中的顶点数据设置为第1重要等级,并且将所有的数据比特位标记为重要比特性,采用crc校验码的方式进行冗余存储。当进行读操作时,读取存储crc校验码并对原始数据进行crc校验码计算,如果两个crc校验码不一致,则按照存储的crc校验码对数据进行修正。进行写操作时,同时存储原始数据和crc校验码。

将图计算应用中边数据按照边的访问频率设置重要等级,从第2重要等级开始依次设置m-1个重要等级。按照从大到小排序后的分别记为t1,t2,...及tm。当边数据访问频率f满足ti-1>f>ti时,该数据归为第i个重要等级,其中i=2,3……,m,t1,t2,...及tm均为实数,且t1>t2>...>tm≥0,即边数据访问频率满足t1>f>t2时,划入第2重要等级,边数据访问频率满足t2>f>t3时,划入第3重要等级依次类推。

对于第i重要等级中浮点型的边数据,共有xi个比特位,设置符号位与指数部分以及底数部分前yi位指定为重要比特位,其中xi,yi均为正整数,且0<yi≤xi。

对于第i重要等级参数中的定点型的边数据,共有xi个比特位,设置设符号位和数值部分前zi位是重要比特位,其中xi,zi均为正整数,且0<zi≤xi。

第i重要等级边数据中重要比特位采用数据备份的方式进行数据冗余,并且备份两份,对不重要比特位不进行冗余存储。当对第i重要等级边数据进行读操作时,对于重要比特位同时读取原始数据和备份的两份数据,若出现数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致数据修复。当对第i重要等级边数据进行写操作时,对于重要比特位同时写回到两个备份地址,同时保证原始数据中的数据和两个备份数据一致。

本发明另一实施例提供一种数据冗余装置100,图2示出了数据冗余装置的结构框图,如图2所示,数据冗余装置100包括重要等级划分单元10、重要比特位提取单元20以及数据冗余处理单元30。

其中,重要等级划分单元10用于根据重要性将数据划分为m个重要等级,m为正整数,具体地,数据的重要等级可以综合考虑数据的大小,数据绝对值的大小,数据的类型(浮点型、定点型),数据的读操作频率,数据写操作频率等因素进行设置。

重要比特位提取单元20用于提取每一重要等级中的每一数据的重要比特位。重要比特位提取单元20会识别不同重要等级的数据,并将数据比特位分为重要数据比特位和不重要数据比特位。同时对每一个重要等级的每一数据,提取重要比特位。

数据冗余处理单元30用于针对所述重要比特位进行数据冗余处理。

如图2所示,数据冗余处理单元30包括冗余存储单元31和读写控制单元32。

冗余存储单元31可以对原始数据进行存储,并且对数据中的重要比特位进行数据冗余存储。数据冗余可以是副本备份或者纠错编码。副本可以同时备份n份,其中n是大于0的正整数。纠错编码方式包括但不仅限于crc校验,ecc校验。冗余存储单元31可以是硬盘,dram,sram,ecc-dram,ecc-sram和非易失性内存。

读写控制单元32能够对冗余的数据进行读写操作,保证读写数据的一致性。

前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1