CN105005464B - 一种Burrows Wheeler变换硬件处理装置 - Google Patents
一种Burrows Wheeler变换硬件处理装置 Download PDFInfo
- Publication number
- CN105005464B CN105005464B CN201510381710.8A CN201510381710A CN105005464B CN 105005464 B CN105005464 B CN 105005464B CN 201510381710 A CN201510381710 A CN 201510381710A CN 105005464 B CN105005464 B CN 105005464B
- Authority
- CN
- China
- Prior art keywords
- character
- character string
- sequence number
- data
- sequencing
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种Burrows Wheeler变换(Burrows Wheeler Transform,简称BWT)硬件处理装置。该装置包括:数据接收模块,用于接收待排序字符串;数据存储模块,用于存储待排序字符串及其序号;数据统计模块,用于统计出待排序字符串中相同字符的数量,以及每组相同字符中序号最小的字符的序号;BWT处理模块,利用数据统计模块统计出的信息,对存储在数据存储模块中的待排序字符串进行BWT排序;数据输出模块,暂存BWT排序完成的字符串及其主序号。相比现有技术,本发明可在提升BWT变换速度和效率的同时,降低对计算机处理器的占用率,提高能效。
Description
技术领域
本发明涉及数据压缩技术领域,尤其涉及一种Burrows Wheeler变换(BurrowsWheeler Transform,简称BWT)硬件处理装置。
背景技术
随着计算机应用的爆发式增长以及信息数字化程度的提高,越来越多的信息需要被存储和传输,使用一种实时无损压缩方法可以有效的降低数据存储所需的空间以及数据传输所需的带宽。目前被广泛应用的实时无损压缩算法有LZMA,LZ77,GZIP,BZIP等,其中压缩率最高的是BZIP压缩算法。但是BZIP算法中需要进行的Burrows Wheeler变换并不利于硬件实现。Burrows Wheeler变换是Mike Burrows依据David Wheeler提出的思想,也可称作块排序压缩。当一个字符串用该算法转换时,BWT算法只改变这个字符串中字符的顺序而并不改变其字符。如果原字符串有几个出现多次的子串,那么转换过的字符串上就会有一些连续重复的字符,这对压缩是很有用的。该方法能使得基于处理字符串中连续重复字符的技术(如MTF变换和游程编码)的编码更容易被压缩。更加重要的是Burrows-Wheeler变换的另一个特性,即在不储存额外数据的前提下该变换是完全可逆的。换句话说,Burrows-Wheeler变换是一个“免费”的提高文本压缩效率的算法,它以牺牲额外的计算为代价,换来的是更高效率的存储压缩。
目前使用计算机软件实现的BWT算法并不能满足实时压缩和传输的需要,并且该算法会大大消耗处理器的计算资源,导致计算机系统运行效率底下,能源效率低。
此外,Burrows Wheeler变换也被用于大规模基因序列分析。当代基因测序机每天可产生10亿数量级的基因序列片段,对这些片段的排序被用来分析个体或群体生物的特性。而通用计算机很难在短时间内对测序机输出的大量数据进行分析和处理。并且,处理这些数据会占用大量的物理内存,导致大规模基因序列分析的成本大大提高。
综上可知,亟需一种BWT硬件实现装置,从而在提升BWT变换速度和效率的同时,降低对计算机处理器的占用率,提高能效。
发明内容
本发明所要解决的技术问题在于克服现有技术所存在不足,提供一种BurrowsWheeler变换硬件处理装置,可在提升BWT变换速度和效率的同时,降低对计算机处理器的占用率,提高能效。
本发明具体采用以下技术方案解决上述技术问题:
一种Burrows Wheeler变换硬件处理装置,采用可编程逻辑器件实现,该装置包括:
数据接收模块,用于接收待排序字符串;
数据存储模块,用于存储待排序字符串及其序号;
数据统计模块,用于统计出待排序字符串中相同字符的数量,以及每组相同字符中序号最小的字符的序号;
BWT处理模块,利用数据统计模块统计出的信息,对存储在数据存储模块中的待排序字符串进行BWT排序;
数据输出模块,暂存BWT排序完成的字符串及其主序号。
优选地,所述数据存储模块包括两个随机访问存储器RAM:数据RAM和序号RAM,以及存储控制器;数据RAM长度等于待排序字符串的分块长度N,宽度等于字符编码位宽,用于存放待排序字符串字符编码值;序号RAM长度等于待排序字符串的字符长度,宽度为log2N,用于存储当前正在被读入的字符在字符串中的序号值;存储控制器用于协调存储字符值与序号的过程。
优选地,所述数据统计模块包括:
累积计数子模块,用于统计输入的字符串中,有多少种不同的字符值,并将字符串中的字符按照字符值的不同分组,然后统计每个组之中相同字符的个数;
首指针统计子模块,用于统计输入的字符串中,每组相同字符中字符的序号最小值;
计数存储器,用于存储待排序字符串中,每组相同字符的数量;
首指针存储器,用于存储待排序字符串中,每组相同字符中序号值最小的字符序号,当其接收到来自首指针统计子模块的更新首指针请求后,将来自首指针统计子模块的字符序号转换为用于构建链表的首指针,该首指针值一直保持到下一次更新首指针请求或统计过程结束。
优选地,所述BWT处理模块包括:
链表生成子模块,用于将每组中相同的字符的序号按照Burrows Wheeler变换中循环字符串排序规则进行进一步排序,并按照链表数据结构进行存储;
基地址生成子模块,产生用于将每组字符存入排序存储子模块中所需的基地址;排序存储子模块,用于存储排序后的字符串;
主序号生成子模块,记录整个BWT变换模块工作过程中,主元素在RAM中所处的位置,并将这个位置信息转化成用于BWT反变换的主序号。
进一步地,所述链表生成子模块包括:
搜索与插入子模块,用于搜索每组相同字符的后续字符,找到第一个不同的后续字符,并作字符编码值的比较,然后将字符及其序号存储在相应的链表存储单元内;
偏移地址计算子模块,用于将当前字符组内的值相同而序号不同的字符序号关系转换成存储器偏移地址。
相比现有技术,本发明具有以下有益效果:
本发明采用可编程逻辑器件(FPGA)实现BWT算法,通过采用基于专用硬件单元的并行排序算法,有效的提高了现有BWT算法的处理效率,大幅降低了对计算机运算和存储资源的占用。
本发明装置可制作成独立芯片结构,便于集成在BZIP压缩或超大规模基因序列分析等需要用到BWT算法的系统中。
附图说明
图1为本发明Burrows Wheeler变换硬件处理装置的结构原理框图;
图2为具体实施方式中数据存储模块的结构原理框图;
图3为具体实施方式中数据统计模块的结构原理框图;
图4为具体实施方式中BWT处理模块的结构原理框图;
图5为具体实施方式中链表生成子模块的结构原理框图;
图6为本发明Burrows Wheeler变换硬件处理装置的工作流程图;
图7为本发明Burrows Wheeler变换硬件处理装置一个具体处理实例的原理示意图。
具体实施方式
下面结合附图对本发明的技术方案进行详细说明:
图1显示了本发明Burrows Wheeler变换硬件处理装置的结构原理。如图1所示,本发明Burrows Wheeler变换硬件处理装置包括:数据接收模块、数据存储模块、数据统计模块、BWT处理模块、数据输出模块。
其中,数据接收模块将接收到的32位二进制数据根据小印第安序切割成4个字节,以字节为单位对字符的先后顺序进行编号,并将数据传输给数据统计模块以及数据存储模块。
数据存储模块,用于存储待排序字符串及其序号,来自数据接收模块的数据按照其序号存储缓存RAM之中,当缓存RAM中存满待排序字符或接收到来自外界的字符串结束信号后,将对后级的BWT处理模块发出启动信号。
数据统计模块,在接收来自数据接收模块的待排序字符串的过程中,实时统计字符串中的字符值的分布情况,并按不同字符分组统计每组中重复字符的数量,同时,将每组字符中最小的序号记录下来;然后将统计的每组重复字符的数量和字符中最小的序号提供给后续的BWT处理模块。
BWT处理模块,用于从数据存储模块读取字符数据及其序号,并利用来自数据统计模块的统计数据建立每组相同字符内部的排序链表,在扫描原始字符串的过程中逐渐完成对组内相同字符的后续字符的比较和插入排序,并将排序完成的字符串和主序号传输给数据输出模块。
数据输出模块,用于接收来自BWT处理模块的输出字符串和主序号,并通知后续的其它设备BWT处理已完成,可以从数据输出模块中取走排序完成的字符串和主序号。
图2显示了本具体实施方式中数据存储模块的结构原理。如图2所示,数据存储模块包括两个随机访问存储器(RAM):数据随机访问存储器(RAM)、序号随机访问存储器(RAM)以及存储控制器。
其中,存储控制器,协调两个存储器协同工作,使接收来自上一级模块的字符串数据的过程中,同时将原始字符串中字符的值与序号顺序存储在数据RAM和序号RAM之中。
数据RAM,用于顺序存储待排序字符串,数据RAM的宽度为字符位宽w, 长度为待排序字符串分块长度N,数据RAM也可以存储长度低于N的字符串。
序号RAM,用于顺序存储待排序字符串的每个字符的序号,序号RAM的宽度为字符位宽log2N,长度为待排序字符串分块长度N,序号RAM也可以存储长度低于N的字符串字符序号。
图3显示了本具体实施方式中数据统计模块的结构原理。如图3所示,该数据统计模块包括:累积计数子模块、首指针统计子模块、计数存储器、首指针存储器。
其中,累积计数子模块,用于统计输入的包含不多于N个字符的字符串中,有多少种不同的字符值,并将字符串中的字符按照字符值的不同分组,然后统计每个组之中相同字符的个数。
首指针统计子模块,用于统计输入的包含不多于N个字符的字符串中,每组相同字符中,字符的序号最小值,提供给后续模块计算链表的起始地址。
计数存储器,用于存储待排序字符串中,每组相同字符的数量,在统计相同字符个数的过程中,每个字符组寄存器在接收到来自累积计数器子模块的自增信号后,值作自增并一直保持到下一次自增信号到来或统计过程结束。
首指针存储器,用于存储待排序字符串中,每组相同字符中,序号值最小的字符序号,当其接收到来自首指针统计子模块的更新首指针请求后,将来自首指针统计子模块的字符序号转换为处理系统中用于构建链表的首指针,该首指针值一直保持到下一次更新首指针请求或统计过程结束。
图4显示了本具体实施方式中BWT处理模块的结构原理。如图4所示,该BWT处理模块包括:链表生成子模块、基地址生成子模块、排序存储子模块、主序号生成子模块。
其中,链表生成子模块,接收来自字符统计模块的字符首指针和来自数据存储模块的字符串,利用字符首指针建立链表头部,然后扫描一次原始字符串,按照字符值大小将当前字符及其序号插入到对应字符组的链表之中,扫描字符串的过程消耗的时钟周期数取决于字符串长度N以及原始字符串熵值,完成字符串扫描的操作后,各字符组存储按后续字符值升序(或降序)排列的链表。
基地址生成子模块,用于接收数据统计模块传来的字符统计信息,并将统计结果转化成排序存储子模块工作所需的基地址。
排序存储子模块,用于在链表生成子模块工作完成后,通过对链表的扫描获得排序后的字符串,并将排序后的字符串存储到模块的内部存储单元中,等待后级模块的读取。
主序号生成子模块,在整个BWT变换的过程中,记录具有主序号的字符在存储器中所处的位置,并转换成输出主序号信号,在BWT处理模块工作完成后,将主序号传输给下一级模块进行后续处理。由于主序号是BWT反变换的必须信息,所以这个模块是必要的。
图5显示了链表生成子模块的一种优选结构。如图5所示,该链表生成子模块包括:搜索与插入子模块、链表存储器、偏移地址计算子模块。
其中,搜索与插入子模块,接收来自数据统计模块的字符首指针和字符值,对依次接收的字符进行比较,并且通过字符首指针将字符依次存储到每个字符组的链表存储器中。由于BWT不仅依靠当前字符排序,而且需要比较当前字符的后续字符,所以在将字符插入链表的过程中会对当前字符的后续字符作搜索和比较,直到找到相比较的字符后续字符中第一个不相同的元素,并且能够对当前字符的大小进行判别为止。
链表存储器,用于存储搜索与插入子模块读入待排序字符串并形成链表的过程中链表节点的存储,其长度为字符串分块长度N,宽度为字符宽度w加上log2N。
图6显示了本发明Burrows Wheeler变换硬件处理装置的基本工作流程,具体包括以下步骤:
步骤1、将外部的待排序字符串读入模块内部的数据输入缓冲区内,便于作后续步骤处理。
步骤2、将步骤1获得的数据依次读出,并按照先后顺序依次线性存入数据存储模块中,同时使用数据统计模块按字符值分组统计输入字符串中相同字符值的数量,并统计每组字符中最小的序号。
步骤3、使用步骤2产生的每组相同字符的计数值来转换成后续操作所需的存储器基地址,也就是按照字符组将存储器的存储空间分段,便于后续字符组内链表的建立。
步骤4、使用步骤2产生的每组字符头指针以及当前扫描的字符值来转换成后续操作所需的存储器偏移地址,也就是按照当前字符的大小以及头指针,建立每 组字符内部的链表节点位置信息的过程。
步骤5、使用步骤3生成的存储基地址和步骤4的偏移地址来存储已被转化成链表节点数据结构的字符串,在存储过程中进行排序,并生成主序号。
步骤6、使用步骤5生成的分组链表存储结构的字符串,读取原始待排序字符串,并采用固定偏移量,将待排序字符串按照步骤5生成的链表存储顺序进行数据复制和转换,最终生成排序后字符串。
步骤7、将步骤6生成的排序后字符串,以及步骤5生成的主序号输出到输出缓冲器之中供后续操作读取,并向后续步骤发送BWT完成信号,整个BWT硬件处理过程完成。
图7显示了本发明Burrows Wheeler变换硬件处理装置的一个具体处理实例,如图所示,具体处理过程如下:
步骤1、通过串行移位的方式接收待排序字符串,这里假设字符串是“ELEMENT”。
步骤2、将字符串按顺序存储在数据存储器中,并按地址顺序标上序号。
步骤3、统计待排序字符串中的各组相同字符的数量和每组字符的首指针,这里针对输入待排序字符串“ELEMENT”的统计结果是:该待排序字符串中“E”有3个,首指针为0;“L”有1个,首指针为1;“M”有1个,首指针为3;“N”有1个,首指针为5;“T”有1个,首指针为6。
步骤4、根据步骤3的统计结果,计算每个字符在按组存储过程中需要的基地址和偏移地址,这里的计算结果是三个“E”基地址为0,偏移地址分别为0、1、2;“L”基地址为3,偏移地址为0;“M”基地址为4,偏移地址为0;“N”基地址为5,偏移地址为0;“T”基地址为6,偏移地址为0。
步骤5、将步骤4计算所得的基地址和偏移地址整合成实际存储器地址,并按存储器地址将待排序字符串按组存入链表存储器中。
步骤6、将步骤5中存入链表存储器的每组内字符按后续元素的大小建立链表,节点的指针指向下一个节点的存储单元地址,链表结束时,其指针指向当前存储单元地址。
步骤7、扫描链表,将步骤6中建立的以组为单位的链表存储成连续的排序后字符串。
步骤8、记录步骤6中的原始序号为0的元素的位置,将其存储单元地址转换为主序号,并传递给下一级模块。
步骤9、将步骤7所得的排序后字符串按原始序号“模7减1”的规则获取原始字符串中的对应字符,将排序后字符串转换成BWT处理后的字符串,BWT处理过程完成。
本发明装置可集成于独立芯片中,可用于执行Bzip压缩算法、超大规模基因序列分析算法、BWTS算法等需要进行Burrows Wheeler变换操作的系统中,其变换效率高,对系统的运算和存储资源占用小,具有广阔的应用前景。
Claims (4)
1.一种Burrows Wheeler变换硬件处理装置,其特征在于,采用可编程逻辑器件实现,该装置包括:
数据接收模块,用于接收待排序字符串;
数据存储模块,用于存储待排序字符串及其序号;
数据统计模块,用于统计出待排序字符串中相同字符的数量,以及每组相同字符中序号最小的字符的序号;
BWT处理模块,利用数据统计模块统计出的信息,对存储在数据存储模块中的待排序字符串进行BWT排序;其包括:链表生成子模块,用于将每组中相同的字符的序号按照BurrowsWheeler变换中循环字符串排序规则进行进一步排序,并按照链表数据结构进行存储;基地址生成子模块,产生用于将每组字符存入排序存储子模块中所需的基地址;排序存储子模块,用于存储排序后的字符串;主序号生成子模块,记录整个BWT变换模块工作过程中,主元素在RAM中所处的位置,并将这个位置信息转化成用于BWT反变换的主序号;
数据输出模块,暂存BWT排序完成的字符串及其主序号。
2.如权利要求1所述Burrows Wheeler变换硬件处理装置,其特征在于,所述数据存储模块包括两个随机访问存储器RAM:数据RAM和序号RAM,以及存储控制器;数据RAM长度等于待排序字符串的分块长度N,宽度等于字符编码位宽,用于存放待排序字符串字符编码值;序号RAM长度等于待排序字符串的字符长度,宽度为log2N,用于存储当前正在被读入的字符在字符串中的序号值;存储控制器用于协调存储字符值与序号的过程。
3.如权利要求1所述Burrows Wheeler变换硬件处理装置,其特征在于,所述数据统计模块包括:
累积计数子模块,用于统计输入的字符串中,有多少种不同的字符值,并将字符串中的字符按照字符值的不同分组,然后统计每个组之中相同字符的个数;
首指针统计子模块,用于统计输入的字符串中,每组相同字符中字符的序号最小值;计数存储器,用于存储待排序字符串中,每组相同字符的数量;
首指针存储器,用于存储待排序字符串中,每组相同字符中序号值最小的字符序号,当其接收到来自首指针统计子模块的更新首指针请求后,将来自首指针统计子模块的字符序号转换为用于构建链表的首指针,该首指针值一直保持到下一次更新首指针请求或统计过程结束。
4.如权利要求1所述Burrows Wheeler变换硬件处理装置,其特征在于,所述链表生成子模块包括:
搜索与插入子模块,用于搜索每组相同字符的后续字符,找到第一个不同的后续字符,并作字符编码值的比较,然后将字符及其序号存储在相应的链表存储单元内;
偏移地址计算子模块,用于将当前字符组内的值相同而序号不同的字符序号关系转换成存储器偏移地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510381710.8A CN105005464B (zh) | 2015-07-02 | 2015-07-02 | 一种Burrows Wheeler变换硬件处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510381710.8A CN105005464B (zh) | 2015-07-02 | 2015-07-02 | 一种Burrows Wheeler变换硬件处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105005464A CN105005464A (zh) | 2015-10-28 |
CN105005464B true CN105005464B (zh) | 2017-10-10 |
Family
ID=54378146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510381710.8A Active CN105005464B (zh) | 2015-07-02 | 2015-07-02 | 一种Burrows Wheeler变换硬件处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105005464B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762812B (zh) * | 2018-05-21 | 2021-12-03 | 北京中科睿芯科技集团有限公司 | 面向通用字符串处理的硬件加速结构装置及控制方法 |
CN110837584B (zh) * | 2019-10-18 | 2022-10-04 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN112713899B (zh) * | 2020-12-18 | 2021-10-08 | 广东高云半导体科技股份有限公司 | Fpga码流数据的压缩方法、装置及存储介质 |
CN117200805B (zh) * | 2023-11-07 | 2024-02-02 | 成都万创科技股份有限公司 | 一种mcu的低内存占用的压缩和解压方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103117748A (zh) * | 2013-01-29 | 2013-05-22 | 中国科学院计算技术研究所 | 一种bwt实现方法中对后缀进行排序的方法及系统 |
CN103138764A (zh) * | 2011-11-22 | 2013-06-05 | 上海麦杰科技股份有限公司 | 一种实时数据无损压缩方法及系统 |
CN104284189A (zh) * | 2014-10-23 | 2015-01-14 | 东南大学 | 一种改进的bwt数据压缩方法及其硬件实现系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019029A1 (en) * | 2011-07-13 | 2013-01-17 | International Business Machines Corporation | Lossless compression of a predictive data stream having mixed data types |
-
2015
- 2015-07-02 CN CN201510381710.8A patent/CN105005464B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138764A (zh) * | 2011-11-22 | 2013-06-05 | 上海麦杰科技股份有限公司 | 一种实时数据无损压缩方法及系统 |
CN103117748A (zh) * | 2013-01-29 | 2013-05-22 | 中国科学院计算技术研究所 | 一种bwt实现方法中对后缀进行排序的方法及系统 |
CN104284189A (zh) * | 2014-10-23 | 2015-01-14 | 东南大学 | 一种改进的bwt数据压缩方法及其硬件实现系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105005464A (zh) | 2015-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105005464B (zh) | 一种Burrows Wheeler变换硬件处理装置 | |
Bonfield et al. | Compression of FASTQ and SAM format sequencing data | |
CN1183683C (zh) | 使用前缀预测的位自适应编码方法 | |
US20160171153A1 (en) | Bioinformatics Systems, Apparatuses, And Methods Executed On An Integrated Circuit Processing Platform | |
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现系统 | |
CN104331269B (zh) | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 | |
CN111801665B (zh) | 用于大数据应用的分层局部敏感哈希(lsh)分区索引 | |
Deorowicz | FQSqueezer: k-mer-based compression of sequencing data | |
Arram et al. | Hardware acceleration of genetic sequence alignment | |
CN105989129A (zh) | 实时数据统计方法和装置 | |
CN107135003B (zh) | 基于Gzip硬件实现文本压缩方法 | |
CN106778079A (zh) | 一种基于MapReduce的DNA序列k‑mer频次统计方法 | |
CN107122222B (zh) | 一种字符串的搜索系统及方法 | |
Kumar et al. | Fast and memory efficient approach for mapping NGS reads to a reference genome | |
CN101751416A (zh) | 一种对字符串排序和查找的方法 | |
JP2023547973A (ja) | 質スコア圧縮 | |
Banerjee et al. | Design and development of bioinformatics feature based DNA sequence data compression algorithm | |
CN117493386B (zh) | 数据库访问方法及装置、存储介质和电子设备 | |
CN116015311A (zh) | 基于滑动字典实现的Lz4文本压缩方法 | |
US20150213092A1 (en) | Optimized data condenser and method | |
CN108287985A (zh) | 一种gpu加速的dna序列压缩方法及系统 | |
CN115088038A (zh) | 基于新上下文的经比对的测序数据中的改进质量值压缩框架 | |
CN109698702B (zh) | 基因测序数据压缩预处理方法、系统及计算机可读介质 | |
CN110111851B (zh) | 基因测序数据压缩方法、系统及计算机可读介质 | |
CN112860712B (zh) | 一种基于区块链的交易数据库构建方法、系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |