基于FPGA的面向基因测序串匹配算法的加速平台及设计方法与流程

文档序号:15558883发布日期:2018-09-29 01:46阅读:240来源:国知局
本发明涉及基因测序算法的硬件加速平台,具体涉及一种通用性好和灵活性高的基于fpga的面向基因测序串匹配算法的加速平台及设计方法。
背景技术
:基因测序有很多种方法。但无论这些方法在实现上有什么不同,本质上它们都依赖dna复制原理展开设计。dna复制简单来说就是dna的自我增殖过程。在复制期间dna慢慢打开双链结构,并在各种引导酶的作用下分为两个单链并生成新的匹配短链。之后游离在细胞核中的游离碱基就会在一系列酶的作用下,加入新生成的短链使短链慢慢延展。到了复制末期,原始dna双链完全打开,并分别与由游离碱基拼接而成的单链组成双链结构。由于碱基配对的专一性,在没有出现复制错误的情况下,两条新的双链在结构上是完全相同的,这样就实现了一条变两条的复制。本文选取串匹配算法研究基因测序其原理就是碱基之间配对的唯一性。dna是由四种不同的碱基组成的,一般简记为a、t、c、g。四种碱基严格按照at两两配对,cg两两配对原则执行配对。这样一来,测量一段未知的基因片段,就可以借助一条已知片段与该未知片段进行匹配,当两片段完全匹配时,已知片段的共轭序列就是所测目标的序列。下面简单描述基因测序的串匹配流程,包含以下几个步骤。第一步先构造若干已知的碱基序列,并对这些碱基序列进行标记以便识别。常用的标记方法为同位素标记法。第二步进行碱基对的匹配,将目标序列与构造序列放入缓冲液中进行dna的。在dna复制过程中,目标序列会吸收预先构造的带标记碱基进行延展,通过测量生成的新链的碱基序列就可以得到原链的序列。第三步是对短碱基序列的拼接。随着基因测序进入大数据时代,测序工程中包含庞大的数据量,传统的计算机系统已经无法适应大数据的典型需求。目前,适用于大数据处理的平台可分为软件处理平台与硬件处理平台两类。云计算平台和gpgpu平台是两种最为主流的大数据软件处理平台。1)云计算平台。一般来说,云计算平台由大量同构的基于cpu的单节点服务器构成,多个节点间互相配合、协同工作。云计算平台编程模型大体上可以分为基于map-reduce计算模型和基于图的计算模型两种,两种计算模型的本质都是利用任务级并行和数据集并行的手段来加速应用的执行。2)gpgpu平台。gpgpu平台是一种较为普及的并行加速平台,每块gpgpu处理器芯片内部往往由多个sm构成,每个sm由多个sp组成,每个sp就是一个计算单元。本质上来说,gpgpu是以simd的方式来利用数据级并行来加速任务的执行。目前,针对gpgpu平台提出和实现了诸如cuda、opencl和openacc等编程规范,这大大降低了基于gpgpu的应用的开发门槛,也使gpgpu成为了目前较为广泛使用的并行加速平台。虽然利用云计算平台和gpgpu平台的确可以加速基因测序算法的执行,但是它们还是各自存在相对的局限性。对于云计算平台来说,集群运行的维护就需要不小的开销,并且从效率的角度来说,单个节点的计算效率其实并不是很高。gpgpu平台的每块gpu芯片虽然有很高的计算效率,但是每块gpu芯片也都有很高的功率,因此在运行时往往需要消耗大量的电能来处理任务。以细粒度的视角来看,云计算平台的每个节点往往是普通的cpu架构,而cpu由于其通用性的设计架构使得对于处理特定的基因测序算法任务可能会得不到理想的性能。gpgpu平台的每块gpu芯片则主要适合处理能够进行数据级并行的任务,虽然基因测序算法中的大部分比较适合进行数据级并行,但是还有一部分不能够进行数据级并行。此外,为了增强通用性,gpu芯片集成很多基因测序算法用不到的功能部件,这不仅带来了较大的芯片面积,还带来了不小的额外功耗开销。硬件平台主要有专用集成电路(asic)和现场可编程门阵列(fpga)。1)asic。相对于云平台和gpgpu,asic采用改进硬件架构来对算法进行加速。asic作为特定专用的集成电路,对特定的应用和算法具有较高的计算效率。但其专用性也导致其灵活性差,开发成本高;硬件设计的高门槛也使得其设计开发周期长,开发难度大。2)fpga。相比于asic,其设计周期与实现难度要低很多,并且它还拥有灵活的可编程性。此外,随着越来越多的fpga版嵌入式soc芯片问世,fpga与通用cpu间的通信变得越来越简单,因此选用fpga来实现基因测序算法的专用加速器结构是目前研究的一个热点。综上所述,基于fpga平台,从底层硬件层次上设计一个专用硬件加速器结构来加速基因测序是一个具有吸引力的选择,但fpga的开发需要具备一定的硬件设计经验,正因为如此,fpga将许多软件编程人员拒之门外。针对这个问题,本课题拟设计一个基于fpga的面向基因测序串匹配算法的加速平台,使软件编程人员能够使用库函数一样使用平台提供的接口选择合适的串匹配算法,实现自己的fpga加速器。技术实现要素:针对上述存在的技术问题,本发明目的是:提供了一个基于fpga的面向基因测序串匹配算法的加速平台,使得不具备硬件知识的编程者可以利用已有的fpga资源,轻松获得良好的硬件性能。本发明的技术方案是:基于fpga的面向基因测序串匹配算法的加速平台,包括ps与pl两部分,ps部分包括通用处理器和dram,用于完成软件端代码的运行以及硬件部分的控制,pl端包括多个ip核来以实现相应任务,通用处理器将字符串数据写入dram中,然后fpga从dram中读取字符串数据并开始计算,并把计算结果写入到dram中,最后通用处理器从dram中读取匹配结果。基于fpga的面向基因测序串匹配算法的加速平台的设计方法,包括以下步骤:s01:分析基因测序算法kmp、bwa的特点,梳理算法流程,确定算法设计。s02:根据基因测序算法kmp、bwa计算过程,针对两个算法分别设计出可扩展的ip核实现。s03:根据基因测序算法kmp、bwa特点和fpga的资源,确定kmp与bwa算法相应的硬件ip核结构;s04:移植操作系统到硬件平台,并将硬件ip核烧写到硬件平台,编写各个硬件设备的驱动;s05:在用户层调用各个硬件ip核,形成硬件加速器。优选技术方案中,所述步骤s01中kmp、bwa算法设计,其中kmp算法设计步骤为:首先模式字符串传输到部分匹配函数中,生成回退位置表并存储,然后将源串与模式串输入kmp搜索函数,并根据回退位置表得出匹配起始字符位置;bwa算法设计步骤为:对源串进行bw转换生成后缀数组,将后缀与模式串输入搜索函数中得出模式串所有匹配。优选技术方案中,所述步骤s02中可扩展的ip核,具体包括kmpip核,bwaip核。优选技术方案中,所述步骤s02中,每个ip核都有一个dma连接,ip核之间完全独立,并行运行。优选技术方案中,所述步骤s03中的硬件ip核结构,其中kmpip核结构包含kmp的输入输出模块、串分片模块、位移计算模块、搜索模块,bwaip核包含输入输出模块、串分片模块、bma转换模块、搜索模块。优选技术方案中,kmpip核与bwaip核中的串分片模块对源串进行等大小的分片,并对片进行编号,通过片的编号,分片的大小以及字符在分片中的偏移对字符进行重定位,分片后的输入可以并行进行,固定大小的分片长度也有利于dma的设置。优选技术方案中,所述步骤s04包括以下步骤:在驱动的编写中,采用访问linux字符设备的方式访问各个硬件设备;在dma的驱动编写中采用映射机制进行数据填充;所述映射机制为在内存中预留出一段连续的物理内存,将其映射到内核空间中的一段地址中,然后将该段内核空间地址映射到用户空间。与现有技术相比,本发明的优点是:本发明简单易用,对用户透明,能够根据硬件资源和设计出针对kmp、bwa串匹配算法的加速器,来加速大数据基因测序应用,该加速器在fpga芯片部署了多个并行的用于计算的kmp/bwaip核,并以流水线的方式运行。本发明使得不具备硬件知识的编程者可以利用已有的fpga资源轻松获得良好的性能。附图说明下面结合附图及实施例对本发明作进一步描述:图1是本发明实施例的加速系统平台的bwa加速的软硬件协同模型设计图;图2是本发明实施例的加速系统平台的加速器工作流程图;图3是本发明实施例的加速系统平台的系统结构图;图4是本发明实施例的加速系统平台的kmp算法流程图;图5是本发明实施例的加速系统平台的bwa算法流程图;图6是本发明实施例的加速系统平台的kmp核内部结构设计图;图7是本发明实施例的加速系统平台的kmp部分匹配模块设计图;图8是本发明实施例的加速系统平台的kmp搜索模块设计图;图9是本发明实施例的加速系统平台的kmp加速器模型设计图;图10是本发明实施例的加速系统平台的bwa核的结构设计图;图11是本发明实施例的加速系统平台的bwa变换的内部结构设计图;图12是本发明实施例的加速系统平台的bwa搜索模块设计图;图13是本发明实施例的加速系统平台的bwa加速器模型设计图;图14是本发明实施例的加速系统平台的映射机制下dma传送数据的流程图。具体实施方式以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。实施例:本发明实施例中的基因测序穿匹配算法加速平台包括通用处理器、现场可编程门阵列以及存储模块,其中,fpga和通用处理器之间的数据通路可以采用pci-e总线协议、axi总线协议等。本发明实施例附图数据通路采用axi总线协议为例说明,但本发明并不限于此。图1是本发明实施例的加速系统平台的bwa加速的软硬件协同模型设计图,无论是bwa还是kmp的架构大体都是一样的,包含ps与pl两部分,ps作为整个系统的控制端位于宿主端(host),包含处理器以及存储单元主要完成软件端代码的运行以及硬件部分的控制。pl则是fpga部分的可编程逻辑单元是整个系统的硬件加速部分,可以加载不同的ip核设计,根据需求固化对应的ip核来实现相应的任务。pl中的ip核具有相当高的并行性。图2是本发明实施例的加速系统平台的系统结构示意图,包含上层的软件层与下层的硬件层,软件层中又包含了用户层与内核层。硬件层次就是基因测序算法加速器的硬件ipcore层,它除了包含kmp与bwa加速器结构以外,还包含了其他的硬件ipcore部件,比如dma以及一些总线互连结构等。对于用户层,包含应用程序与运行库api两部分,用户通过调用运行库提供的硬件编程接口来实现能够运行在硬件加速器上的程序。内核层是软件层次的最底层,主要用来提供硬件加速器以及其他ipcore在linux操作系统下正常运行的支持。图3是本发明实施例的加速系统平台的kmp算法流程图,kmp算法倾向于在模式串中找到足够的信息,使得当失配发生时,信息可以确定下一轮匹配的位置,从而绕过对先前的无效匹配字符进行重新检测,其中箭头表示数据传输,灰色数据块代表数据和函数,包括的步骤如下:模式字符串首先传输到部分匹配函数中,输出回退位置,以生成回退位置表并将其将存储;kmp搜索函数输入模式串与源串并根据回退表来进行搜索得出两个串相互匹配的首字符位置。图4是本发明实施例的加速系统平台的bwa算法流程图,不同于传统匹配算法逐步比对进行匹配,bwa算法首先会对源串进行处理,这个处理过程称为bw变换,通过这个变换得到一棵后缀树,通过搜索后缀树可以来寻找模式串的匹配。算法整体由bw变换与bwa搜索两部分组成,其中bwa搜索是函数的主要组成部分,包括的步骤如下:输入模式字符串和源字符串,对源字符串进行bw转换,生成后缀数组,这个数组包含了源字符串的一些信息;使用模式串和数组来继续bwa搜索函数。图5是本发明实施例的加速系统平台的kmp核内部结构设计图,该结构包括:inputmodule:输入数据缓冲区;outputmodule:输出数据缓冲区;centralstorage:中央存储,存储临时数据;dma:直接内存存取,负责加速器和内存间的数据传输;ethernetcontroller:以太网适配器;kmpsearchunit:kmp搜索单元;stringsplitunit:串分片单元;partialmatchunit:部分匹配单元;首先输入模块接收到模式字符串数据,之后存储在中央存储中,部分匹配单元将根据模式字符串生成部分匹配表,并存储到临时缓冲区中。之后输入模块将从dma接收主字符串数据,同时kmp搜索单元将通过扫描主字符串匹配模式字符串并根据部分匹配表绕过最大长度的无意义字符。这种实现方式有两种好处:1)、kmp核心函数单元和i/o模块是高度流水线的。当kmp算法搜索单元处理主字符串的当前字符时,输入模块已经从dma读取主字符串的下一个字符;2)、不需要存储主字符串,整个过程都在流水线中工作,节省了大量的读取时间和存储空间使加速器能够处理大量数据。图6是本发明实施例的加速系统平台的kmp部分匹配模块设计图,用于生成模式字符串的所有可能位置以通知模式字符与下一步匹配的起点。部分匹配单元将对模式字符串及其前缀进行比较,模式串索引和候选前缀索引的更新取决于比较结果。如果比较成功,则部分匹配单元将从下一个模式字符串索引和下一个候选前缀索引开始,它还将更新部分表数据。但是如果比较失败,模式字符串索引将保持不变直到候选前缀索引更新为0,这意味着没有匹配的前缀,同时候选前缀索引将根据部分表数据更新到一定的值。图7是本发明实施例的加速系统平台的kmp搜索模块设计图,展示了kmp搜索单元的总体结构。第一个比较器表示字符串拆分单元,使用特殊字符(在这种情况下为零)来分隔不同的字符串。当输入缓冲器的一个字符与特殊字符匹配时,信号量c1等于1结束当前字符串匹配。第二个比较器成功,则输入缓冲器和模式串数据两个字符匹配,第一个多路复用器将选择一个作为输出信号,使输入缓冲索引加上它作为新的索引值,第二个多路复用器也将模式字符串索引的值设置为当前模式字符串索引加上一个字符。若比较器失败,输入缓冲区索引将保持不变,模式字符串索引将更新为索引生成逻辑生成的部分匹配数据的值。图8是本发明实施例的加速系统平台的kmp加速器模型设计图,由dma、计算ip核和dma控制器三部分组成。dma完成数据的交互,ip核负责处理数据以生成输出,dma控制器负责制定dma规则以处理数据。加速器由多个ip核组成,每个ip核都有一个dma连接。这种设计实现方式有两种好处:1)、所有ip核之间没有任何关系,可以并行运行,使得系统在提高加速效率的同时更易于维护;2)、以通过使用不同的ip核来处理模式字符串,从而降低错误率。图9是本发明实施例的加速系统平台的bwa核的结构设计图,该结构包括:input:输入模块,处理从dma转换的数据;output:输出模块,通过dma传输数据到ram;bwa-search:bwa搜索模块;bwtransform:bw转换模块;输入模块接收数据,bw转换模块使用接收到的源字符串进行生成后缀数组的过程。然后,bwa搜索模块使用后缀数组和模式串完成算法搜索的主要过程。输出模块负责转换bwa产生的输出,通过dma转移到内存。图10是本发明实施例的加速系统平台的bwa变换的内部结构设计图,完成对源字符串进行bw转换,得到后缀数组。输入源字符串,首先存储字符s[i],然后分别与a、c、g、t进行比较。如果s[i]是a,将其编号i放入数组a[],用作索引。输入完成则存储了整个源字符串,并得到四个索引数组a[],c[],g[],t[],根据索引数组得到数组f[]。数组f[]的本质是每个后缀的开头,而索引数组a[],c[],g[],t[]则记录了它们的位置,于是按字母顺序排列索引数组即得到数组l[]。图11是本发明实施例的加速系统平台的bwa搜索模块设计图,该单元的主体由两个函数组成,一个用于计算数组c[],另一个用于执行名为occ()的函数。当一个字符传输到该单元时,首先计算c[]的值,然后执行occ(),以获得top的值,ot只能使用阵列c[]进行推断。算法将进行如下两个判断操作:第一个判断是top和bot的值,如果top的值不小于bot,意味着搜索的结束在开始之前,结束搜索并告诉进程在源字符串中找不到匹配。第二个判断是模式字符串的长,如果遍历了所有模式字符串,就可以完成top与bot的更新,然后将它们转换为计算结果代表模式字符串的出现。该单元也并行运行。由于模式串的字符之间没有相关性,可以用流水线方式来处理字符。图12是本发明实施例的加速系统平台的bwa加速器模型设计图,与kmp加速器模型类似,包括dma、计算ip核和dma控制器三部分。系统使用ram存储数据,当系统运行时,dma在dma控制器的约束下直接读取ram中的数据,并将数据传输到ip核。ip核是计算的主要单元,它会读取输入数据进行计算以产生输出数据。然后就可以通过dma读取输出数据。每个ip核都是独立的,所以加速器的进程之间可以进行并行工作以提升效率。图13是本发明实施例的加速系统平台的加速器工作流程图,包括的步骤如下:打开设备文件并进行初始化;传输指令使能dma与ip核;通用处理器配置加速器接收数据;dma传输数据,即fpga从dram中读取字符串数据并开始计算,并把计算结果写入到dram中;最后通用处理器从dram中读取匹配结果;关闭设备。整个过程中ip核与dma两个部分存在与cpu的交互,因此本发明主要进行这两部分的驱动编写。ip核与dma都是字符设备,所以就使用字符设备的驱动设计模型,对于字符设备,linux通过ioctl()系统来控制字符设备的一系列操作,对于本发明实现的ip核而言,可以通过这个系统来完成ip核的控制。所以ip核部分的驱动编写只需要完成ioctl()下的一些常用接口即可。这些接口就会在系统调用的过程中来控制ip核的运行。dma部分的驱动相较于ip核更为复杂,主要是dma具有更多的寄存器,需要处理更多的信息,但基本上还是基于字符设备设计框架完成的。编写驱动完成后,就可以通过ioctl()来调用控制硬件ip核与dma了,本发明为了提供方便用户适用的接口,对驱动进行了简单的封装,如下表1所示。表1简单的驱动封装软件层的实现主要是为了提供调用内核中驱动程序编写的操作方法,可以根据之前驱动所定义的功能进行操作。主要完成数据的预处理相关函数,加速器控制相关函数,dma控制函数。数据预处理主要包括分片传输,数据的转换等。加速器控制主要有加速器的开关,dma控制则主要有读控制与写控制,相关软件函数如表2所示。函数名相关功能data_pre_partion(inputfile)数据分片data_pre_switch(inputfile)数据预转换myacc_open(devicefd)开加速器myacc_close(devicefd)关加速器dma_read(buffer,file,size)dma读控制dma_write(buffer,file,size)dma写控制表2相关软件函数在软件层已经实现相应的api接口,但这些函数对于用户而言还是不够清晰,用户仍需熟悉硬件相关知识才能进行加速器的操作。为了增强用户的体验,本发明进一步简化操作,设计出了一个更加简单的接口。针对加速算法为kmp算法与bwa算法,分别为这两个算法封装一个能直接使用加速器的函数,有了这两个接口用户就能简单明了的使用加速器加速相应的算法。两个接口的具体封装内容是相似的。应用程序接口如表3所示。表3应用程序接口图14是本发明实施例的加速系统平台的映射机制下dma传送数据的流程图。在linux系统中预先保留一段连续的物理内存,并将它映射到内核空间的连续地址中,则该段物理内存和内核地址空间中的一段虚拟地址是对应的;然后将内核空间的这段虚拟地址映射到用户进程的某段地址空间中,这样该段用户进程地址空间就和物理地址完成了映射,该段用户进程地址内的数据是存储在地址连续的一段物理内存中。在映射机制下,dma传送数据的整个流程如下:应用程序执行的过程中将所需要的数据填充到映射后的某段用户进程空间的地址中,然后dma就可以操作与用户虚拟地址对应的物理地址进行数据的传送,ipcore读取数据进行计算,dma将计算结果传送到指定的连续的物理内存中,而该物理内存已经映射到用户进程,省去了两个空间之间的复制过程,提高通信效率。数据量非常大的时候,需要进行多次分片操作,涉及到的数据拷贝次数会非常多,加速器的性能也会出现明显的不同。上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1