CN114860651B - 一种基于分散聚合流水线实现mds阵列码的ip核系统 - Google Patents
一种基于分散聚合流水线实现mds阵列码的ip核系统 Download PDFInfo
- Publication number
- CN114860651B CN114860651B CN202210782946.2A CN202210782946A CN114860651B CN 114860651 B CN114860651 B CN 114860651B CN 202210782946 A CN202210782946 A CN 202210782946A CN 114860651 B CN114860651 B CN 114860651B
- Authority
- CN
- China
- Prior art keywords
- core
- bit
- coding
- packet
- original data
- 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
- 230000002776 aggregation Effects 0.000 title claims abstract description 28
- 238000004220 aggregation Methods 0.000 title claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 25
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 19
- 238000005516 engineering process Methods 0.000 claims abstract description 12
- 230000005540 biological transmission Effects 0.000 claims abstract description 6
- 238000004364 calculation method Methods 0.000 claims description 33
- 125000004122 cyclic group Chemical group 0.000 claims description 29
- 239000011159 matrix material Substances 0.000 claims description 28
- 238000000034 method Methods 0.000 claims description 20
- 238000009825 accumulation Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 14
- 239000006185 dispersion Substances 0.000 claims description 13
- 230000009467 reduction Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 8
- 238000006116 polymerization reaction Methods 0.000 claims description 6
- 238000006073 displacement reaction Methods 0.000 claims description 4
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 claims description 3
- 238000004883 computer application Methods 0.000 abstract description 2
- 230000001502 supplementing effect Effects 0.000 abstract description 2
- 238000003860 storage Methods 0.000 description 14
- 239000013598 vector Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004088 simulation Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000009966 trimming Methods 0.000 description 3
- 238000004148 unit process Methods 0.000 description 3
- 239000011800 void material Substances 0.000 description 2
- 101100534229 Caenorhabditis elegans src-2 gene Proteins 0.000 description 1
- 241001197925 Theila Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003934 vacuole Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及计算机应用技术和网络编码领域,具体涉及一种基于分散聚合流水线实现MDS阵列码的IP核架构;包括由Weight FIFO单元以及r个CORE_SG单元组成的编码IP核模块,CORE_SG单元由DW个PE_SG子单元组成;PE_SG子单元采用五级流水线的方式,依次进行补位运算、分散运算、聚集运算、销位运算以及累加运算;实现了补位、分散、聚集、销位、累加的操作,同时采用五级流水线的方式,提升处理的并行性和工作频率;所述编码IP核模块中设置有用于还原原始数据包的编译码算法结构,使得在对k个原始数据包进行传输时,先计算出r个冗余包,若传输时丢失、损坏的数据包数小于r时能够还原出k个原始数据。
Description
技术领域
本发明涉及计算机应用技术和网络编码领域,具体涉及一种基于分散聚合流水线实现MDS阵列码的IP核系统。
背景技术
随着社会的发展,存储系统的规模不断扩大,复杂性不断增加,这就导致数据的存储传送变得愈发困难。根据Google公司的统计数据,在该公司的存储系统,平均每个MapReduce在操作过程中就有5个存储节点发生失效,由此,使用带有容错技术的存储系统已经成为必然。如今,MDS编码技术普遍应用在分布式存储系统中。
目前,应用于分布式存储系统的传统MDS纠删码主要有Reed-Solomon(RS)码和阵列码;RS码是现存唯一一种满足任意数据磁盘个数和冗余磁盘个数的MDS码;但RS码需要在Galois域GF(2w)上进行多项式运算,运算比较复杂。与之相比,阵列码编解码复杂度很低,且修复过程中下载的数据量和计算复杂度均低于RS码。为此有必要提出一种基于于MDS阵列码的纠删技术,并为其设计了硬件实现。
发明内容
为了解决上述现有技术中存在的技术问题,本发明提供了一种基于分散聚合流水线实现MDS阵列码的IP核系统,拟实现一种高效的纠删码,并实现丢失数据包的还原。
本发明采用的技术方案如下:
一种基于分散聚合流水线实现MDS阵列码的IP核系统,包括由Weight FIFO单元以及由r个CORE_SG单元组成的编码IP核模块,所述CORE_SG单元由DW个PE_SG子单元组成;
所述PE_SG子单元采用五级流水线的方式,依次进行补位运算、分散运算、聚集运算、销位运算以及异或累加;
每个所述PE_SG子单元并行处理L bits的输入数据;
所述CORE_SG单元中包括配置周期和编码周期,在配置周期CORE_SG单元存储上位软件下载的配置系数,并暂存在Weight Memory中;在编码周期CORE_SG单元先将WeightMemory循环导入Weight FIFO单元,再由Weight FIFO单元按先入先出扇出至PE_SG子单元进行编码,各PE_SG子单元将计算结果逐一传递到Dout端口;
所述编码IP核模块中设置有用于还原原始数据包的编译码算法结构。
本发明所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统中,各个单元由地层到顶层对原始数据包逐级处理,得到所需冗余包,得到的冗余包可在解码环节用来还原原始数据包;
有r个CORE_SG单元所构成的编码IP核架构,每个CORE_SG单元可以通过配置不同的控制系数,对同一个输入数据并行计算,得到r个不同的冗余包。
本发明的CORE_SG单元集成了DW个PE_SG子单元并行计算,提升了编码核数据通路带宽,各PE_SG子单元分别处理L比特的输入数据。
并且本发明在求解冗余包R时,使用循环位移代替矩阵乘法;每个冗余包需要k个原始数据包参与计算,运算可分为k×r个部分进行;若数据包一次进行运算,在单个数据包的处理中,也存在以L个比特(L是循坏移位操作的数据位宽)为基本数据单元的多种并行性;对于L bits基本数据单元的多种循环移位和缩位异或操作,可以采用分散聚集流水线技术,根据控制系数分散得到移位结果,并通过异或和聚集进行缩位。算法串行部分是对Lbits基本数据单元的补位、循环右移、销位、异或操作,可采用流水线技术优化,重叠(overlapping)处理不同数据单元,提升计算吞吐率。
优选的,所述编译码结构如下:
定义(n,k,r)数据包结构,其中k表示原始数据包个数,r表示冗余包个数,n表示数据包总数,n=k+r;对于k个原始数据包,每个原始数据包mj均包含M×L个比特,用一个M×L的二元矩阵表示;每个冗余包rj包含M×L个比特,用M×L的二元矩阵表示;通过基于给定的编码系数矩阵K1j,...,Kkj对原始数据包m1,...,mk线性组合,生成冗余包rj:
确定译码方式:若数据传输过程中有r个原始数据包m1,...,mr丢失,则将剩余的k-r个已知原始数据包信息分别从校验包r1,...,rr中消除得到新的校验包r′1,...,r′r,然后通过下式还原出原始数据包m1,...,mk:
[r′1r′2...r′r]=[m1m2...mr]M;
其中:M为新校验包r′1,...,r′r所对应的编码系数矩阵。
优选的,所述CORE_SG单元中还设置有计数器子单元,用于记录输入数据包的个数,并初始化循环次数寄存器cycle_max。在所述CORE_SG单元中还设置计数器子单元记录输入数据包的个数,会派生出Vout和trig信号。当Vin信号无效时,编码流水线被插入空泡,不影响运算正确性;当Vout无效时,Dout输出全0。
优选的,所述补位运算根据接口输入的系数设定补位内容和补位位置,将输入的Lbits扩增为L+1bits;计算结果为Padded并传给分散运算;
所述分散运算根据控制系数src_i对L+1bits分散进行L+1种移位操作,不同位的src_i表示不同的循环移位结果,并将结果输出给聚集运算;
所述聚集运算对L+1种分散计算结果执行异或聚集,得到L+1bits运算结果并输出给销位运算;
所述销位运算根据设定的销位方式和销位位置,将L+1bits缩位到L bits;
所述异或累加将单个包的处理结果进行累加。
本发明从底层到上层依次为:处理L bits基本数据的PE_SG子单元、依次处理k个数据包得到单个冗余包的编码核CORE_SG单元;本发明集成了多个CORE_SG单元,针对单个输入数据流并行编码,得到r个冗余包的编码IP和rMDS。PE_SG子单元采用五级流水线模式,包括补位运算、分散运算、聚集运算、销位运算以及异或累加;
PE_SG子单元流水处理各数据包,随路处理无需存储,当某周期无输入数据时,流水线中允许存在空泡,不影响最终计算结果。
优选的,所述编码IP核模块连接有DM ROM模块、DF FIFO模块以及TEST FSM模块。
本发明的有益效果包括:本发明在求解冗余包R时,使用循环位移代替矩阵乘法;每个冗余包需要k个原始数据包参与计算,运算可分为k×r个部分进行;若数据包一次进行运算,在单个数据包的处理中,也存在以L个比特(L是循坏移位操作的数据位宽)为基本数据单元的多种并行性;对于L bits基本数据单元的多种循环移位和缩位异或操作,可以采用分散聚集流水线技术,根据控制系数分散得到移位结果,并通过异或和聚集进行缩位。算法串行部分是对L bits基本数据单元的补位、循环右移、销位、异或操作,可采用流水线技术优化,重叠(overlapping)处理不同数据单元,提升计算吞吐率。
本发明所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统中,各个单元由地层到顶层对原始数据包逐级处理,得到所需冗余包,得到的冗余包可在解码环节用来还原原始数据包。
附图说明
图1为本发明中基于分散聚合编码IP的硬件微架构图。
图2为本发明中PE_SG五级流水线时序图。
图3为本发明中PE_SG模块微架构图。
图4为本发明中功能正确性仿真性验证图。
图5为本发明中拨码开关与mode设置图。
图6为本发明中芯片版图。
图7为本发明中资源利用率概述图。
图8为本发明中按模块资源使用详细统计图。
图9为本发明中功耗估计图。
图10为本发明中硬件功能正确性波形验证图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合附图1-10对本发明作进一步的详细说明:
参见附图1到附图3,一种基于分散聚合流水线实现MDS阵列码的IP核系统,包括由Weight FIFO单元以及r个CORE_SG单元组成的编码IP核模块,所述CORE_SG单元由DW个PE_SG子单元组成;
所述PE_SG子单元采用五级流水线的方式,依次进行补位运算、分散运算、聚集运算、销位运算以及异或累加;
每个所述PE_SG子单元并行处理L bits的输入数据;
所述CORE_SG单元中包括配置周期和编码周期,在配置周期CORE_SG单元存储上位软件下载的配置系数,并暂存在Weight Memory中;在编码周期CORE_SG单元先将WeightMemory循环导入Weight FIFO单元,再由Weight FIFO单元按先入先出扇出至PE_SG子单元进行编码,各PE_SG子单元将计算结果逐一传递到Dout端口;
所述编码IP核模块中设置有用于还原原始数据包的编译码算法结构。
所述编译码结构如下:
定义(n,k,r)数据包结构,其中k表示原始数据包个数,r表示冗余包个数,n表示数据包总数,n=k+r;对于k个原始数据包,每个原始数据包mj均包含M×L个比特,用一个M×L的二元矩阵表示;每个冗余包rj包含M×L个比特,用M×L的二元矩阵表示;通过基于给定的编码系数矩阵K1j,...,Kkj对原始数据包m1,...,mk线性组合,生成冗余包rj:
确定译码方式:若数据传输过程中有r个原始数据包m1,...,mr丢失,则将剩余的k-r个已知原始数据包信息分别从校验包r1,...,rr中消除得到新的校验包r′1,...,r′r,然后通过下式还原出原始数据包m1,...,mk:
[r′1r′2...r′r]=[m1m2...mr]M; (2)
其中:M为新校验包r′1,...,r′r所对应的编码系数矩阵。
所述CORE_SG单元中还设置有计数器子单元,用于记录输入数据包的个数,并初始化循环次数寄存器cycle_max。在所述CORE_SG单元中还设置计数器子单元记录输入数据包的个数,会派生出Vout和trig信号。当Vin信号无效时,编码流水线被插入空泡,不影响运算正确性。当Vout无效时,Dout输出全0。
所述补位运算根据接口输入的系数设定补位内容和补位位置,将输入的L bits扩增为L+1bits;计算结果为Padded并传给分散运算;
所述分散运算根据控制系数src_i对L+1bits分散进行L+1种移位操作,不同位的src_i表示不同的循环移位结果,并将结果输出给聚集运算;
所述聚集运算对L+1种分散计算结果执行异或聚集,得到L+1bits运算结果并输出给销位运算;
所述销位运算根据设定的销位方式和销位位置,将L+1bits缩位到L bits;
所述异或累加将单个包的处理结果进行累加。
本发明从底层到上层依次为:处理L bits基本数据的PE_SG子单元、依次处理k个数据包得到单个冗余包的编码核CORE_SG单元;本发明集成了多个CORE_SG单元,针对单个输入数据流并行编码,得到r个冗余包的编码IP和rMDS。PE_SG子单元采用五级流水线模式,包括补位运算、分散运算、聚集运算、销位运算以及异或累加;
PE_SG子单元流水处理各数据包,随路处理无需存储,当某周期无输入数据时,流水线中允许存在空泡,不影响最终计算结果。
为了增强IP核的可拓展性,所述编码IP核模块连接有DM ROM模块、DF FIFO模块以及TEST FSM模块,根据IP核不同的集成环境可以替换。比如通过APB总线接口配置mode等状态和控制寄存器,通过AXI总线接口输入输出数据,或者通过PCle集成在桌面或服务器系统中。以3MDS的算法为例,IP至少集成3个CORE_SG模块,不需要额外存储。通过在IP核中集成更多编码核,可以支持更高的输入数据位宽或更多的冗余包配置。
本发明使用软件离线计算控制系数SRC,也即IP核从外部导入控制系数。SRC共有L+1bits,每个bit控制数据包的一种移位方式。
本发明所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统中,各个单元由地层到顶层对原始数据包逐级处理,得到所需冗余包,得到的冗余包可在解码环节用来还原原始数据包;
有r个CORE_SG单元所构成的编码IP核架构,每个CORE_SG单元可以通过配置不同的控制系数,对同一个输入数据并行计算,得到r个不同的冗余包。
本发明的CORE_SG单元集成了DW个PE_SG子单元并行计算,提升了编码核数据通路带宽,各PE_SG子单元分别处理L比特的输入数据。
并且本发明在求解冗余包R时,使用循环位移代替矩阵乘法;每个冗余包需要k个原始数据包参与计算,运算可分为k×r个部分进行;若数据包一次进行运算,在单个数据包的处理中,也存在以L个比特(L是循坏移位操作的数据位宽)为基本数据单元的多种并行性;对于L bits基本数据单元的多种循环移位和缩位异或操作,可以采用分散聚集流水线技术,根据控制系数分散得到移位结果,并通过异或和聚集进行缩位。算法串行部分是对Lbits基本数据单元的补位、循环右移、销位、异或操作,可采用流水线技术优化,重叠(overlapping)处理不同数据单元,提升计算吞吐率。
下面对本发明的具体实施方式做进一步的描述:
本发明首先在算法层面的分析,规定系统各个参数。若想恢复传输、存储时损坏的原始数据包,需要先在编码环节计算出r个冗余包,在解码环节,只要损失的数据包不超过r,就能由冗余包求解出k个原始数据。为了具体化分析,取r=3,k<=255。由公式(1)可知冗余包R是由原始数据包mj和编码系数K复合而成。原始数据包mj已知,为了方便介绍K,先定义如下变量:
1)L+1为任意素数,IL表示L×L维单位阵;
2)0与1(粗体)分别表示L维全0与全1列向量;
3)CL为(L+1)×(L+1)的GF(2)-循环移位矩阵;
4)G表示L×(L+1)的GF(2)-矩阵[IL 0];
5)H表示(L+1)×L的GF(2)-矩阵[IL 1]T;
本发明确定编码系数的步骤如下:
在循环移位MDS向量码中,编译码所需的系数矩阵K主要由以下四类构成。其中B代表由奇数,且最多L/2个CL的不同次幂相加形成的L×L矩阵(包括单位阵IL=CL0),A代表由偶数个CL的不同次幂相加形成的L×L矩阵:
1)K=GBH,即对于(L–1)维输入向量m,mK的乘法操作可以通过下列步骤实现:
①先在m的末尾补一位零比特形成L+1维向量m″(实现mG操作);
②对m′进行B所设定的一次或多次循环移位操作,再将循环移位后的结果逐位异或,形成新的L+1维向量m″(实现m′B操作);
③将m″的前L位比特分别与最后一位比特进行异或(实现m″H操作),得到最终的L维输出向量mK。
2)K=HTBGT。
3)K=HTBH。
4)K=GAGT。
在分布式存储应用中,由于编码操作要比译码操作频繁的多,编码过程选用的系数矩阵为K=GAGT,译码时选择的系数矩阵为K=HTBH。
以下通过本发明的实现步骤进行具体说明。
步骤一,软件计算编码系数。循环移位的控制系数共有L+1个bit,每1个bit控制数据包的一种移位方式:当bit为0时,不需要该移位操作;当第i个bit为1时,需要进行i次移位。控制系数SRC更适合使用软件离线计算,编写C程序,接受数据包个数k,冗余包r,计算生成r个控制系数矩阵,用来分配给r个编码核CORE_SG单元。单个系数矩阵宽为L+1,高为k。
该算法根据k和r计算出r个配置文件,每个文件包含k个配置系数,每个配置系数由L+1bits,具有良好的算法兼容性,方便后续算法的提升。
步骤二,硬件实施框架分析。确定算法之后,接下来由整体到局部,逐步解析数据的处理方式和模块的作用。基于循环移位编码的rMDS算法存在多种并行性:k个数据包得到r个冗余包,运算可分为k×r个部分进行;若数据包依次到来,在单个数据包的处理中,也存在以L比特为基本数据单元的多种并行性;对L比特的基本数据单元的多种循环移位和缩位异或操作,可以采用(Scatter-Gather)分散聚集技术,根据控制系数分散得到移位结果,并通过异或聚集进行缩位。算法串行部分是对L比特基础数据单元的补位、循环右移、销位、异或操作,这样就能采用流水线技术优化,重叠(overlapping)处理不同数据单元,提升吞吐率。
循环移位的控制系数(SRC,Shift Right Circular Parameters)决定各数据包在计算各冗余包时循环右移操作的数量和位数。rMDS算法有多种版本,通过上位软件离线计算控制系数,并配置在硬件Weignt FIFO中,SR_SRC可以支持基于循环移位的多种rMDS算法的加速。
步骤三,硬件处理微架构CORE_SG单元。所述CORE_SG单元部分接口信息见下表。
表1-1 CORE_SG模块部分接口
名称 | 类型 | 位宽 | 备注 |
L | parameter | 无 | 基本数据位宽L |
DW | parameter | 无 | 集成PE_SG子单元的个数 |
mode | input | 7 | 见PE_SG子单元接口 |
Pvld | input | 1 | 控制系数配置有效位 |
Pattern | input | L+1 | 控制系数配置输入 |
Vin | input | 1 | 输入数据有效,高有效 |
Din | input | L×DW | 输入数据,逐个进入数据包 |
Vout | output | 1 | 输出数据有效,高有效 |
Dout | output | L×W | 输出数据 |
首先由附图1,可以看到SG_SRC编码IP的微架构整体布局。而一个编码IP核可看作由r个CORE_SG单元组成,为了方便表述,CORE_SG单元接口参数和信号已在表1-1中给出;下面给出具体分析:
当r=3时,每个CORE_SG单元负责处理K个输入数据包,每k个周期从Dout端口得到一个冗余包。CORE_SG单元根据输入数据总线位宽,以L为单位,分割输入数据流为DW份交给DW个PE_SG子单元并行处理。Counter为计数器子单元,记录输入数据包的个数,输入为pvld和vld_o,输出vout为高电平时表示输出有效。
原始数据包从Data Memory(DM)中流向Data FIFO(DF)中。Din有效时,根据DataFIFO先入先出的规则,依次扇出至PE_SG子单元中;同一周期内,Weight Memory(WM)中的权重数据传入到Weight FIFO(WF)中,作为移位控制系数传入PE_SG子单元中。根据传入的原始数据包和权重系数,以流水线的形式依次进行补位、循环移位、异或、销位操作,处理的结果从PE_SG子单元中的date_o中依次扇出,由Dout口流出。ILA为逻辑分析仪,用于之后的上板显示验证,并不起存储或运算作用。
步骤四,硬件PE_SG子单元。如附图2,PE_SG子单元采用五级流水线,依次为补位运算(Padding)、分散运算(Scattering)、聚集运算(Gathering)、销位运算(Trimming)以及异或累加(Accumulation),提升了数据的处理效率和吞吐量。PE_SG子单元流水处理各数据包,随路处理无需存储,当某周期无输入数据时,流水线中允许存在空泡,不影响最终的计算结果。五级流水线的功能具体如下:
补位运算(Padding):根据输入的控制系数确定PM1的值,选择补0、补1或是校验,再根据PM0确定在data_i前或后补位,将输入的L bits扩增为L+1bits,计算结果为Paded并传入分散流水级;
分散运算(Scattering):根据SRC寄存器中src_i的值对L+1bits分散进行L+1种移位操作,不同的src_i代表不同的移位位数,最终的移位结果为各控制位的叠加,举例说明见下文;
聚集运算(Gathering):对L+1种分散计算结果执行异或聚集,得到L+1bits;
销位运算(Trimming):根据设定的销位方式和销位位置,将L+1bits缩位到Lbits;
异或累加(Accumulation):将单个包的处理结果进行累加。
为了方便表述,下面给出PE_SG模块关键接口的定义:
表1-2 PE_SG模块部分接口
从信号和数据流通的角度,mode控制Padding和Trimming两个流水级补位和销位的方式;trig信号为1时,重置data_o累加寄存器,当vld_i同时有效时,data_o寄存data_i,否则清零;src_i来自配置后的Weight FIFO,src_i的各比特位分别控制一个分散后的循环移位结果:当某位为0时,表示不需要循环移位,当某位为1时,表示循环移位对应位数次,循环移位结果用固定连线获得。比如说:当Weight FIFO中传出的sci_i=17’h5,也即0101时,则sci_0为循环右移0位,src_2为循环右移2位,其他scr_1,scr_3~scr_16都为0,等价于数据包在scattering流水级进行了乘I+C2 L操作。在Gathering流水级,将17个src寄存器通过异或进行缩进。
PE_SG子单元的微架构如附图3所示,可以看出各级流水线的工作方式。
步骤五,软件离线计算控制系数SRC;循环移位控制系数SRC共有L+1个bits,每个bit控制对应数据包的一种移位方式:当此位为0,不需要移位操作;此位为1时,需要进行对应的移位操作。可见上文中的举例。软件根据数据包索引K,冗余包索引R,计算生成共r个控制系数矩阵,分配给r个CORE_SG单元。
步骤六,仿真验证。微架构与设计环节分析结束,下面先对RTL级设计进行仿真验证。测试数据由循环移位网络编码算法标准Matlab程序代码计算生成,生成128个1024bits的数据包,以及3个1024bits的冗余包。仿真软件使用的是ModelSim,将RTL,tb文件和原始数据包导入工程,仿真生成的波形如附图4所示。Testbench使用128个周期完成3个CORE_SG单元的配置,然后用128个周期并行计算得到3个冗余包。如附图4,可以看到仿真结果与Matlab计算结果相同。
步骤七,FPGA上板测试。仿真测试验证了RTL设计文件无误后,即可生成比特流文件进行上板验证。本次选择的是Xilinx ZCU106开发板,该开发板搭载Xilinx 16nm台积电工艺的UltraScale+MPSoC ZU7EV FPGA。移植工作包括:
(1)选用300MHz的差分时钟输入,通过MMCM综合频率得到200MHz的用户时钟;
(2)将Weight FIFO用FPGA的宏部件Block RAM实现;
(3)用Block RAM实现片上ROM存储data.txt和3个系数矩阵用来提供测试激励;
(4)在数据输入端实现data FIFO,作为循环缓冲区提供计算需要的无限数据;
(5)输入数据总位宽1024bits;单个PE_SG子单元的位宽为16bits;单个CORE_SG单元集成64个PE_SG子单元;
(6)使用硬件逻辑分析仪ILA抓取计算结果,验证功能正确性;
(7)设计测试状态机,完成Weight FIFO配置,Data FIFO加载,启动运算等步骤;
(8)8颗LED以GB为单位展示IP的实际计算速度,吞吐率约为25.6GBps。
使用开发板上的SW13拨码开关控制mode的配置,如附图5所示。布局布线后的芯片版图和资源使用摘要可见附图6和附图7,更加精确的IP资源占用情况可见附图8;布局布线后FPGA的功耗估计可见附图9,动态功耗约为1.014W,外围驱动模块DM ROM、DF FIFO等大量BRAM资源,根据资源净占用比例对BRAM和Logic动态功耗修正后,静态功耗约为0.73。FPGA通过内置逻辑分析仪ILA抓取3个CORE_SG单元的Dout,并使用Vout上升沿触发,抓取结果如附图10所示,可以看到上板运行结果与软件生成的结果一致,验证了功能的正确性。
以上所述实施例仅表达了本申请的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。
Claims (6)
1.一种基于分散聚合流水线实现MDS阵列码的IP核系统,其特征在于,包括编码IP核模块,所述编码IP核模块包括Weight FIFO单元以及r个CORE_SG单元,所述CORE_SG单元由DW个PE_SG子单元组成;
所述PE_SG子单元采用五级流水线的方式,依次进行补位运算、分散运算、聚集运算、销位运算以及异或累加;
每个所述PE_SG子单元并行处理L bits的输入数据;
所述CORE_SG单元中包括配置周期和编码周期,在配置周期CORE_SG单元存储上位软件下载的配置系数,并暂存在Weight Memory中;在编码周期CORE_SG单元先将Weight Memory循环导入Weight FIFO单元,再由Weight FIFO单元按先入先出扇出至PE_SG子单元进行编码,各PE_SG子单元将计算结果逐一传递到Dout端口;
所述编码IP核模块中设置有用于还原原始数据包的编译码算法结构;
在求解冗余包R时,使用循环位移代替矩阵乘法;每个冗余包通过k个原始数据包参与计算,运算分为k×r个部分进行,若数据包一次进行运算,在单个数据包的处理中,以L个比特为基本数据单元的多种并行性;对于L bits基本数据单元的多种循环移位和通过异或达到缩位聚集的效果,采用分散聚集流水线技术,根据控制系数分散得到移位结果,并通过异或进行缩位。
2.根据权利要求1所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统,其特征在于,所述编译码算法结构如下:
定义(n,k,r)数据包结构,其中k表示原始数据包个数,r表示冗余包个数,n表示数据包总数,n=k+r;对于k个原始数据包,每个原始数据包mj均包含M×L个比特,用一个M×L的二元矩阵表示;每个冗余包rj包含M×L个比特,用M×L的二元矩阵表示;通过基于给定的编码系数矩阵K1j,...,Kkj对原始数据包m1,...,mk线性组合,生成冗余包rj:
确定译码方式:若数据传输过程中有r个原始数据包m1,...,mr丢失,则将剩余的k-r个已知原始数据包信息分别从校验包r1,...,rr中消除得到新的校验包r′1,...,r′r,然后通过下式还原出原始数据包m1,...,mk:
[r′1r′2...r′r]=[m1m2...mr]M;
其中:M为新校验包r′1,...,r′r所对应的编码系数矩阵。
3.根据权利要求1所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统,其特征在于,所述CORE_SG单元中还设置有计数器子单元,用于记录输入数据包的个数,并初始化循环次数寄存器cycle_max。
4.根据权利要求1所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统,其特征在于,所述补位运算根据接口输入的系数设定补位内容和补位位置,将输入的L bits扩增为L+1bits;计算结果为Padded并传给分散运算;
所述分散运算根据控制系数src_i对L+1bits分散进行L+1种移位操作,不同位的src_i表示不同的循环移位结果,并将结果输出给聚集运算;
所述聚集运算对L+1种分散计算结果执行异或聚集,得到L+1bits运算结果并输出给销位运算;
所述销位运算根据设定的销位方式和销位位置,将L+1bits缩位到L bits;
所述异或累加将单个包的处理结果进行累加。
5.根据权利要求1所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统,其特征在于,所述编码IP核模块连接有DM ROM模块、DF FIFO模块以及TEST FSM模块。
6.根据权利要求1所述的一种基于分散聚合流水线实现MDS阵列码的IP核系统,其特征在于,编码过程中的系数矩阵为K=GAGT;译码时的系数矩阵为K=HTBH。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210782946.2A CN114860651B (zh) | 2022-07-05 | 2022-07-05 | 一种基于分散聚合流水线实现mds阵列码的ip核系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210782946.2A CN114860651B (zh) | 2022-07-05 | 2022-07-05 | 一种基于分散聚合流水线实现mds阵列码的ip核系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114860651A CN114860651A (zh) | 2022-08-05 |
CN114860651B true CN114860651B (zh) | 2022-10-11 |
Family
ID=82625857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210782946.2A Active CN114860651B (zh) | 2022-07-05 | 2022-07-05 | 一种基于分散聚合流水线实现mds阵列码的ip核系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860651B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192498B1 (en) * | 1997-10-01 | 2001-02-20 | Globepan, Inc. | System and method for generating error checking data in a communications system |
CN109379086B (zh) * | 2018-10-11 | 2021-06-08 | 西安电子科技大学 | 低复杂度的码率兼容的5g ldpc编码方法和编码器 |
CN110765804B (zh) * | 2019-10-22 | 2023-01-20 | 江苏邦融微电子有限公司 | 一种条形码硬件解码ip核及解码方法 |
-
2022
- 2022-07-05 CN CN202210782946.2A patent/CN114860651B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114860651A (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pei et al. | High-speed parallel CRC circuits in VLSI | |
CN102405598B (zh) | 可编程crc单元 | |
CN101273532B (zh) | 解码装置及接收装置 | |
US7840880B1 (en) | Methods and apparatus for error checking code computation | |
US7904787B2 (en) | Pipelined cyclic redundancy check for high bandwidth interfaces | |
Sun et al. | An I/O bandwidth-sensitive sparse matrix-vector multiplication engine on FPGAs | |
Stavinov | A practical parallel CRC generation method | |
US20080195915A1 (en) | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
CN101783688A (zh) | 一种64位并行多模式crc码生成电路的设计方法 | |
CN114860651B (zh) | 一种基于分散聚合流水线实现mds阵列码的ip核系统 | |
CN107704335B (zh) | 一种基于fpga的crc并行运算ip核 | |
Singh et al. | VLSI implementation of parallel CRC using pipelining, unfolding and retiming | |
Crosetto | LHCb base-line level-0 trigger 3D-Flow implementation | |
JP2009245381A (ja) | 積和演算回路、その設計装置、プログラム | |
US7987412B2 (en) | Reed Solomon decoding of signals having variable input data rates | |
Arifin et al. | Design and implementation of high performance parallel crc architecture for advanced data communication | |
US11658684B2 (en) | Multi-port—multi mode Reed Solomon decoder | |
US7634705B1 (en) | Methods and apparatus for error checking code decomposition | |
Shen et al. | Parallel CRC On An FPGA At Terabit Speeds | |
El-Medany et al. | VHDL implmentation of a BCH minimum weight decoder for double error | |
US8255440B1 (en) | Increasing logic efficiency for exclusive OR (XOR) expressions | |
Bale et al. | An Intelligent 64-bit parallel CRC for high-speed communication system applications | |
Leung et al. | A low power asynchronous GF (2ˆ173) ALU for elliptic curve crypto-processor | |
CN114978193A (zh) | 基于脉动阵列实现三冗余mds阵列编译码的ip核架构 |
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 |