CN114780805A - 一种超并行比对的方法与系统 - Google Patents

一种超并行比对的方法与系统 Download PDF

Info

Publication number
CN114780805A
CN114780805A CN202210311831.5A CN202210311831A CN114780805A CN 114780805 A CN114780805 A CN 114780805A CN 202210311831 A CN202210311831 A CN 202210311831A CN 114780805 A CN114780805 A CN 114780805A
Authority
CN
China
Prior art keywords
comparison
table entry
data
chip
entry
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.)
Pending
Application number
CN202210311831.5A
Other languages
English (en)
Inventor
丁远彤
丁贤根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN202210311831.5A priority Critical patent/CN114780805A/zh
Publication of CN114780805A publication Critical patent/CN114780805A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

采用FPGA、可编程逻辑或TCAM芯片,设计单周期超并行比对的方法,实现在单个逻辑周期内,完成关键字项与多个表项行同时逐位比对,输出匹配的表项行地址,以及异同点统计数据和位置信息。算法支持表项可重构、异同位点处理、滤波器过滤、表项映射、一维数组、二维数据及多维数据的比对;系统包括比较器阵列、可重构逻辑、异同位点处理器、映射存储器、滤波器、通信接口。可构成独立的比对服务器和PCIE加速卡。本方法在10M个表项行比对时,比目前最快的CPU的冯氏计算机比对算法加速超过109数量级。

Description

一种超并行比对的方法与系统
本申请为2019年08月21日递交的申请号为201910775554.1的发明申请的分案。
技术领域
本发明涉及信息技术和生物工程领域,尤其是涉及基因工程、蛋白质工程中生物序列比对子领域和自然语言、图像识别领域。
背景技术
生物序列比对、自然语言处理和图像比对是一门新兴学科,发明人经过检索研究,发现现有的比对技术几乎全部都是冯氏计算机比对算法,一些尝试采用GPU的并行算法,其局限性太大,并不能真正实现特定数据的高速并行比对。
TCAM(Ternary Content Addressable Memory,三态内容寻址存储器),它是通过位比较技术,使得数量巨大的存储器在排列好以后,在单周期内同时实现与一个特定的存储器比较,并且输出第一个相符的存储器地址,是一种典型的并行比对操作,是非冯氏计算机的比对操作,其速度相差是指数和乘数的关系。
在路由器的设计上,早已使用了TCAM并行查找技术,实现在海量的路由表中,单周期定位路由器的下一跳的路径。例如路由器的输入端要在千万级的输出端中,匹配一个输出端,通过TCAM就能够实现单周期完成比对匹配。这在生物序列的比对中,虽然有大比例的相似之处,但是不同的就是,路由器的路由表,其宽度很短,以IPV6为例,不包含校验位,宽度为128位(bit),16个字节(byte),加上校验位,也就是9×16=144位。不仅如此,路由表是不支持对于任意位点的数据进行插入、删除和屏蔽的,更不支持在比对时对于不同的位点个数的统计。
而特定的数据,例如生物的序列数据大多数都采用字符格式的字节记录,例如SAM(The Sequence Alignment/Map format,序列比对文件的格式)格式中的一段DNA(Deoxyribo Nucleic Acid,脱氧核糖核酸)片段,可能就是150个字节,加上校验位是1350位。另外,路由表的长度固定,而生物序列长度多变,并且需要在比对时,统计出差异化,还经常需要对于比对数据进行插入、删除、屏蔽,并且这些操作的位置也是不固定的。例如自然语言处理时,日语中“私はご飯を食べる,我吃饭”、“ご飯を食べる私,吃饭的我”、“ご飯は私に食べられた,饭被我吃了”都有“我”、“饭”、“吃”这个关键词,在一个句子里只要检索到这些关键词,也就能够大致了解句子的初步意思。再例如在图像处理时,一个人脸出现在不同的图片里,经常是模糊的,但是还是有一些关键的像素集合,检索到它,就能提高人脸的识别率。这些对于TCAM的比对,就很不适合。也许,这就是造成TCAM在生物序列比对、自然语言比对、图像比对等处理中尚未出现的原因了。
现有技术的不足表现在于:
1、CPU算法
CPU(Central Processing Unit,中央处理器单元)算法,这都是基于冯诺依曼计算机的计算方法,特征是由先后顺序,顺序比对和查找。无论是线性查找、二叉树查找、HASH查找、BWT、BWA-MEM等等,都是基于串行顺序的计算方法。
2、GPU算法
GPU(Graphics Processing Unit,图形处理器单元)算法,以NVIDIA(ComputeUnified Device Architecture,通用并行计算架构)为例,采用的是多个类似于CPU的核CUDA,对于每个CUDA采用一个线程驱动,完成所谓多线程的比对操作。这实际上还是一个冯氏计算机的串行操作,只不过是由多达数千个CUDA来同步完成串行比对,相对于CPU而言,最多只是提高数千倍速度。然而,对于比对操作来说,无论是采用哪种算法,毕竟存在着先后的逻辑顺序,因此,GPU实际加速,远远达不到CUDA的个数和CPU相比的倍数差,即远远达不到数千倍的差别。
3、TCAM算法
虽然TCAM能够实现单周期比对千万级的数据,但是其设计的初衷是为了路由器的路由表,这与生物数据、自然语言数据和图像数据的比对需求存在严重的差异,不符合生物比对的要求。
本发明的意图在于:提供一种基于硬件电路的单周期超级并行比对技术的实现步骤及设备系统,从根本上解决数据比对的速度问题,适合包括但不限于生物序列数据、自然语言数据比对处理、图像数据比对处理、其它海量数据比对等工作。
发明内容
本发明的目的是提供超级并行比对的、可在单个逻辑周期内完成数据比对的并且是可重构的大数据比对的方法和系统,可用于高速DNA比对、RNA(Ribo Nucleic Acid,核糖核酸)比对、蛋白质比对、自然语言比对、图像比对的工作。这里需要申明的是:以下所述的步骤编号,只是为了记录方便,并不意味着具有编号的先后顺序,步骤之间的关系,除非特别申明某些步骤之间具有先后顺序,否则均为无先后顺序的任意组合。
本发明的目的是采用如下技术方案实现的:
一种超并行比对的方法,包括但不限于:
S100步骤:包括但不限于由表项和关键字项构成比对单元,完成关键字项数据与表项中的表项行数据进行超并行比对。
S200步骤:包括但不限于输入母串到表项,输入子串到关键字项,循环比对和输出结果。
S300步骤:包括但不限于依据比对算法,生成子串的选择项输入到表项,循环位移和截取母串输入到关键字项,比对及输出结果。
所述比对算法,包括生物序列比对算法(例如BWA(Burrows-Wheeler alignmenttool)算法、GateKeeper算法)、自然语言比对算法、图像比对算法。
所述母串和子串包括改变、压缩数据格式的步骤,数据格式包括但不限于生物序列的SAM(sequence alignment map format,序列比对图谱格式)格式的数据、自然语言的数据以及图像格式的数据,其数据形式包括但不限于数据库格式。所有对于母串和子串的操作,包括但不限于由汉字编码、十六进制、十进制、八进制、ASCII(American StandardCode for Information Interchange:美国信息交换标准代码)压缩成二进制编码。包括记录操作类型及操作步骤的结果。包括但不限于通过以太网端口与外界网络设备、基因测序设备、语音设备、图像设备通信的步骤。通过处理器系统和工作步骤完成比对服务。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种组合的局部改进的措施:
所述S100步骤具体包括但不限于:
S101步骤,所述表项包括但不限于一个以上的表项行,所述表项行存储表项行数据,所述关键字项存储关键字数据,所述关键字项数据与一个以上表项行的数据,在同一个逻辑周期内,在相同的排列位置上逐个位点的数据同时比对。如果有与关键字项数据匹配的表项行,则输出所述匹配的表项行的地址,如果有多个与关键字项数据匹配的表项行,则输出按照地址排列顺序中的第一个或最后一个匹配的表项行的地址,如果没有与关键字项数据匹配的表项行,则不输出表项行地址。
如图1所示,1101存储的是关键字项数据,1102是关键字项地址,1200是表项,其中,包括n个表项行:1211是第一个表项行,存储第一个表项行数据,1212是第一个表项行的地址;1221是第二个表项行,存储第二个表项行数据,1222是第二个表项行的地址;12n1是第n个表项行,存储第n个表项行数据,12n2是第n个表项行的地址。
所述同一个逻辑周期包括一个关键字项与一个以上表项行完成一次比对的时间长度,它在工作上可以是若干个时间段的组合构成。如果比对单元是由TCAM芯片构成,那么所述单周期就是TCAM的比对周期,以250MHz主频的器件为例,这个比对周期就是4nS,如果是采用500MHz的FPGA(Field-Programmable Gate Array,现场可编程门阵列)芯片构成的比对单元,那么该比对周期就是2nS。所述一个以上表项行,例如设计的表项深度为1千万行(10M),那么,该方法就可以在4nS或2nS内,完成这一千万行的数据同时与关键字行的数据比对,如果表项行中第800010行与关键字项数据相符,则输出该表项行的地址800010。
作为冯氏计算机的串比较算法,通常是由CPU执行循环比较程序,以目前最快的4GHz主频的CPU估算,CPU时钟周期为0.25nS,由于在逻辑上,无法将串比较算法化解成为多线程执行,只能由单线程执行。预估一个长度为150个字节的串比较算法,采用循环算法,用耗时最少的汇编语言编程,其一次循环的时间花费大约为40个时钟周期,即40*0.25nS=10nS,150次循环共计1.5μS,完成一千万行的比对,耗时至少10000000*1.5μS=15S!与4nS相比是3.75×109倍,与2nS相比是7.5×109倍,如果采用高级语言编程,这个差距则更大。可见本专利申请的比对方法对于性能的提升是惊人的,与冯氏计算机的循环比对是有根本性的区别。
与GPU(Graphic Processing Unit,图像处理器)加速算法相比,GPU中包含的CUDA(ComputeUnified Device Architecture,统一计算设备架构)可以视作简单的小CPU,但是这依然是冯氏计算的串行的循环比对方式。虽然CUDA在GPU中可以包含数千个,一方面,面对复杂的比对数据,我们无法针对性地对每个CUDA做程序设计以解决比对问题;另外一方面即使这样做了,还是冯氏计算机的串行循环比对流程。其实GPU的设计,是源于对于图像数据的统一处理的驱动。例如提高图像色彩、灰度等操作。这些操作的特征是对于图像区域中的全部数据做相同的操作,而不是针对每个像素做不同的操作。所以,采用GPU对于数据比对操作,其加速性能效果并不明显,有报道显示,极端理想情况下,比CPU方式,加速为103数量级。依此类推,本发明相较GPU方式,加速为106数量级以上。
所述匹配是指某一个表项行的数据与关键字项的数据,在按照从左到右或者从右到左的顺序,逐个位点相比都相同。例如关键字项数据是“ATCGGTCCAATG”,而有一个表项行中的数据也是“ATCGGTCCAATG”,于是,该表项行就与关键字匹配。
S102步骤,所述位点,包括但不限于单个二进制的位、一个以上二进制位构成的字符、一个以上二进制位构成的信息单元,所述比对,包括但不限于关键字项与表项行在相同排列位置上逐个位点的数据进行包括但不限于与、或、非、异或、相等、相反、不等或这些组合的操作算法,所述组合,包括由一些包括这些运算的公式所提供的算法。
在图1中,关键字项和表项中的数据显示的是二进制数,及只有0和1,在图2中,关键字项和表项中的数据是代表DNA序列的单字节ASCII码,还可以是多字节的其它编码,例如汉字编码、图像编码、视频编码。所述比对,包括根据二进制位比对、根据单字节ASCII码比对、根据其它编码比对。
对于生物数据,由于数据种类很少,只有腺嘌呤A、鸟嘌呤G、胞嘧啶C、胸腺嘧啶T和尿嘧啶U,既可以采用1byte字节的ASCII码,还可以采用3bit的位压缩编码。至于比对操作,既可以是字节比对,也可以是位比对。
S103步骤,采用逻辑定义,连接一个以上FPGA芯片、可编程逻辑芯片构成所述表项和关键字项,扩展表项和关键字项,连接方式包括但不限于在表项的宽度方向连接、或深度方向连接。
S104步骤,所述逻辑定义,还包括但不限于定义表项行、关键字项中指定位点的掩码,所述掩码包括但不限于屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,所述指定位是采用指定的数据替代该位点数据。
如图2所示,采用#、*标记掩码,其中#为指定位,*为屏蔽位。具体来说,如2101,采用指定位A来替代原来的内容,2102和2103设置屏蔽位。需要注意的是,所示屏蔽位的设置,并非直接采用*去替代2102和2103数据本身,而是在逻辑上对于与2102和2103对应的位置上的信号单元进行运算操作,其结果再形成屏蔽的,例如采用逻辑“与”的关系,形成对应的型号线产生高阻状态,实现屏蔽操作。对于TCAM芯片,在表项行的每个二进制位上,本身就具备对应的三态屏蔽单元,所以,只需要对屏蔽位设定即可。而对于FPGA或者其他可编程逻辑芯片,则通过逻辑定义进行设定。
S105步骤,所述逻辑定义,还包括但不限于定义FPGA芯片、可编程逻辑芯片中的NP、CPU,完成指定的计算的功能。
S106步骤,采用逻辑定义,还包括但不限于连接一个以上TCAM芯片或TCAM芯片与FPGA芯片的组合构成所述表项和关键字项,扩展表项和关键字项,连接方式包括但不限于在表项的宽度方向连接、深度方向连接。
S107步骤,所述逻辑定义,还包括但不限于定义TCAM芯片中的表项行、关键字项中指定位点的三态屏蔽位,使得该位点不参与比对。
S108步骤,所述逻辑定义,还包括但不限于定义TCAM芯片中的NP(NetworkingProcessor,网络处理器)、CPU,完成指定的计算的功能。
S109步骤,所述逻辑定义,还包括但不限于基于所述位点的不同,而定义包括但不限于位的比对、单字节的比对和双字节的比对,所述位的比对,是按照以位为单位逐位比对,所述单字节的比对,是按照以单个字节为单位逐个字节比对,所述双字节的比对,是按照以两个字节为单位逐个双字节比对。
需要注意的是,对于生物序列比对,由于生物序列文件大多采用基于字节的编码,所以应该采用基于字节的比对。而作为自然语言的比对,例如对于中文,由于是采用双字节或者多字节编码,所以应该采用多字节比对。对于图像比对,依据图像编码进行,例如对于一个像素采用24bit时,就可以采用3字节比对。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述S200步骤具体包括但不限于:
S201步骤,计算母串的容积MV和所述表项的容积TV,如果MV≤TV,则母串不予分解,如果MV>TV,则分解母串或循环分解母串,直到分解结束。
所述容积,即总长度,是行的位点数和列数的乘积。
S202步骤,按照表项的宽度TW,从头开始依次切割截取母串或分解后的母串,按照表项深度TD的顺序依次输入到表项。
例如图2中的表项行1,、表项行2直到表项行n。
在这里,所述母串通常是原始的目标数据,例如一条基因的DNA序列、一端自然语言文字、一幅图像、一段视频,所述子串,是一个需要检索比对的DNA片段、一句短语、图片中的一小部分、视频中的一小部分,比对的工作,就是在母串中查找看有没有子串以及子串所在的位置。
S203步骤,计算子串的宽度CW和所述关键字项的宽度TW,如果CW≤TW,则采用掩码将子串的宽度CW补偿到TW,如果CW>TW,则分解子串或者调整TW到TW>CW;所述掩码包括但不限于屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,所述指定位是采用指定的数据替代该位点。
例如图2中的关键字项。
通常,为了比对的方便,表项的宽度位点数和关键字项的宽度位点数是相等的。如果关键字的宽度小于表项的宽度,可以采用对关键字项用掩码去延长,延长到跟表项行的宽度一致,这样才能够方便比对。
S204步骤,依据比对算法,对于表项行采用插入、删除一个以上指定位点,并且记录该操作和修补母串中的其他表项。
对于生物序列比对来说,具有对于母串特定位点进行插入、删除、替补等操作,对于自然语言的处理和图像视频,也会有类似的修补操作。
实际上,对于关键字项,也有类似的操作,在本专利申请中,这一步的操作可以是在整理关键字项时或者在S300步骤中完成。
S205步骤,输入子串到关键字项,将关键字项与表项中的所有表项行的数据同时比对,输出匹配的表项行的地址。
在关键字项与众多的表项行比对时,往往出现多个匹配的表项行,根据设定的策略,可以输出第一个匹配的表项行地址,也可以输出最后一个匹配的表项行地址。
S206步骤,如果有匹配的表项行地址输出,记录该表项行地址,清除该表项行数据,循环比对,直到匹配不成功。
所述清除匹配成功的表项行,是在记录及输出匹配成功的表项行地址以后,再对该表项行的数据予以清除,这样操作的目的是为了查找还有没有下一个与关键字项匹配的表项行,通过循环,找出全部与关键字项匹配的表项行。
S207步骤,将表项数据当做一个一维数组,执行循环体,所述循环体包括但不限于左移或右移一个位点,执行包括但不限S205步骤和S206步骤,直到执行循环体TW-1次,输出循环体的比对结果,结束一个表项对于一个关键字项的比对,计算及输出结果。
由于表项行的宽度是TW个位点,当把全部母串连接成一个一维数组的时候,只需要循环TW-1次,就完成了表项中的全部母串跟关键字项中的子串的全部比对。
在前述技术方案的基础上,在本发明的一个突出创新是将子串的内容和母串的类容颠倒过来比对,预先对子串做比对的可能性组合(例如包括但不限于下列步骤中的子串E1、子串E2、子串E3、子串E4),将这些组合的数据输入到表项中,让母串在关键字项上以数据流的形式一个位点一个位点地流过,流动一个位点比对一次表项,输出可能匹配的表项行地址,这对于生物序列比对和自然语言处理尤其具有更合适和更高效的效果。具体可以采用如下列的一种或者多种局部改进的措施:
所述S300步骤具体包括但不限于:
S301步骤,计算子串的宽度CW和表项宽度TW,如果CW≤TW,则采用掩码将子串的宽度CW延长到TW,如果CW>TW,则分解子串或者调整TW到TW≥CW;所述掩码包括但不限于屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,执行本步骤后的子串为子串E1;所述指定位是采用指定的数据替代该位点。
所述掩码是在FPGA芯片、可编程逻辑芯片、TCAM芯片中通过逻辑设定实现的。其中,屏蔽位是将表项行中对应位点的数据予以屏蔽,使之不参与比对,也就是说这些位点的数据不影响比对结果;指定位是通过指定的数据来替代比对时对应的位点的数据。所述屏蔽位和所述指定位都是带有指定位置信息的数据,设定时必须注意。
S302步骤,依据比对算法,对于子串E1,采用一个以上屏蔽位屏蔽一个以上指定位点生成一个以上子串E2,记录每个子串E2和屏蔽位点到子串映射表格。
S303步骤,依据比对算法,对于子串E1,采用一个以上指定位替换一个以上指定位点生成一个以上子串E3,记录每个子串E3和替换位点到子串映射表格。
S304步骤,依据比对算法,对于子串E1,采用插入、删除一个以上指定位点生成一个以上子串E4,记录每个子串E4和插入、删除位点到子串映射表格。
S305步骤,输入所述子串E2、子串E3、子串E4到所述表项,记录所述子串E2、子串E3、子串E4的地址到所述子串映射表格。
实际上,对于子串的子串E1、子串E2、子串E3、子串E4操作,根据比对的属性,还有其他操作方式,这里是包括但不限于的关系。
S306步骤,对于母串,建立指针SP,按照所述子串宽度CW从SP=1开始截取母串,输入到所述关键字项,将关键字项数据与表项中的所有表项行的数据同时比对,输出比对结果。
S307步骤,如果有匹配的表项行地址输出,则记录该表项行地址和指针SP,并修改所述子串映射表格。
S308步骤,如果没有地址输出,则修改指针,赋值SP+1到SP,循环执行包括但不限S305步骤和S306步骤,直到母串结束,计算输出结果。
上述操作包括但不限于循环和递归,还包括对于特定的区间进行另外一个循环和递归操作,以实现多次扫描比对,逐步优化的效果。
在前述技术方案的基础上,在本发明为了更好地支撑比对操作,设计了表项结构可重新改变的可重构方法,主要是修改表项的宽度和深度。具体包括采用如下列的一种或者多种局部改进的措施:
包括但不限于S400表项可重构步骤,具体包括但不限于:
S401步骤,按照如下公式计算最长子串EM的宽度,公式:TW0=1+MOD(CW-MAX/8),其中:MOD为取整函数,TW0是可重构表项宽度,CW-MAX是最长子串EM的宽度。
S402步骤,依据TW0,在表项容积TV不变的前提下,计算TD0=TV/TW0,以TD0作为重构后的表项深度。
实际上,这里对于TD0中的小数是采用截除处理的,即如果不是整行,则去掉该行。
S403步骤,依据TW0和TD0,修改比对的参数,执行比对操作。
所述比对参数,包括在上层软件中,修改子串的宽度TW0和深度TD0
这里需要注意的是当子串出现深度大于1的时候,即子串出现截断的时候,在上层比对软件中,需要将将这阶段的子串连接起来计算。但是在通常情况下,子串都不予截断,除非遇见子串超长的情况下才予以考虑。
S404步骤,采用所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的NP、CPU系统,执行和管理所述包括但不限S401、S402、S403步骤。
这里是包括为了完善对于子串的截断而设计的方法。
在前述技术方案的基础上,在本发明设计了在比对时对于相同的位点和不同的位点进行统计的方法。这对于生物序列和自然语言处理的比对检索,可以计算相关概率。具体可以采用如下列的一种或者多种局部改进的措施:
包括但不限于S500异同位点处理步骤,具体包括但不限于:
S501步骤,所述逻辑定义,还包括但不限于定义所述FPGA芯片、可编程逻辑芯片、TCAM芯片的逻辑单元,完成对于比对时所述关键字项的各个位点和所述表项中各表项行在的各个位点上数据的相同个数TW-YES和不同个数TW-NO的计算,包括计算概率、位点的位置。
S502步骤,针对表项中各表项行的所述TW-YES和TW-NO,并选择最大值或最小值,输出最大值或最小值和所在的表项行的行号。
S503步骤,针对S502步骤,循环清除所述最大值或最小值和所在的表项行的数据,重新执行S501步骤和S502步骤,直到所述TW-YES和TW-NO的值达到指定数值。
这是为了寻找表项中最大或最小相符或不相符的概率而设计的计算方法。
S504步骤,所述逻辑定义,还包括但不限于定义硬件逻辑,执行完成所述S501、S502、S503的步骤。
所述定义硬件逻辑,包括对于FPGA芯片、可编程门阵列芯片、TCAM芯片的逻辑单元和单元组。
S505步骤,采用所述FPGA芯片、可编程逻辑芯片、TCAM芯片中的NP、CPU系统,采用软件方式,执行所述包括但不限S501、S502、S503的步骤。
S506步骤,采用所述FPGA芯片、可编程逻辑芯片、TCAM芯片中的NP、CPU系统,对于所述表项中各表项行的所述TW-YES和TW-NO进行排序并输出。
如图3所示,这是针对二进制位而设计的一个原理验证例子。图3中,关键字项与众多的表项行中的一个表项行,通过3301至330n运算器运算,例如采用包括但不限于“异或”逐位运算,则,关键字项为1001…0,一个表项行为1000…0,则运算器运算的结果为0001…0,假设其中省略的数字“…”不计算,该结果一路存储到位置寄存器,一路送计数器,包括但不限于计算其中的“1”的个数。于是,位置寄存器的数据为0001…0,计数器计数为1,输出这两个数据,这就是所述异同位点处理的结果。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施,这对于包括但不限于生物序列比对和自然语言比对等操作时,修补和过滤有关噪声,是一个有效的方法:
包括但不限于S600滤波器过滤的步骤,具体包括但不限于:
S601步骤,在执行关键字项和表项行的比对时,覆盖、插入和删除不同位点、相同位点,并且记录覆盖、插入和删除不同位点的长度。
S602步骤,在执行关键字项和表项行的比对时,覆盖、插入、替换和删除指定长度的连续不同位点、指定长度的连续相同位点,并且记录覆盖、插入、替换和删除不同位点的长度。
S603步骤,在执行多次比对的之间,依据比对算法,对于所述表项和所述关键字项的数据,进行所述屏蔽位和指定位的掩码处理。
S604步骤,在执行多次比对的之间,依据比对算法,对于所述表项和所述关键字项的数据,进行覆盖、插入、替换、删除和过滤处理。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于S700表项映射步骤,具体包括但不限于:
S701步骤,在所述FPGA芯片、可编程逻辑芯片、TCAM芯片之外,采用存储器建立存储区,与所述表项对应,复制所述表项和所述关键字项的数据和中间数据、结果数据到所述存储区,成为所述表项的映射。
S702步骤,同步所述表项和所述关键字项的操作和修改记录到所述映射。
S703步骤,存储所述映射到数据库,由所述FPGA芯片、可编程逻辑芯片、TCAM芯片中的NP、CPU系统或所述FPGA芯片、可编程逻辑芯片、TCAM芯片之外的NP、CPU系统进行处理。
这种方法的目的,是为了建立一个备份,以便在后续回溯中间数据和过程时发挥作用。实际上,在一些需要中,这个映射可以存储到包括电子硬盘和机械硬盘的数据库中,以备后续分析所用。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于当子串为子串KU包括多子串KU1至多子串KUn,需要在母串中查找和比对KU1至KUn是否存在而不需要前后顺序的S800多子串间无序比对步骤,具体包括但不限于:
S801步骤,确定子串KU包括多子串KU1至多子串KUn,确定KU1至KUn无前后顺序。
S802步骤,确定在母串中的搜索范围,截取该范围的母串内容输入到一个指定的比对单元的表项,以KU1至KUn为循环范围,在每次循环时,依次输入KU1至KUn到所述指定的比对单元的关键字项,执行包括但不限S300步骤,记录输出。
S803步骤,如果全部KU1至KUn都被匹配成功,则循环结束,输出KU匹配成功的数据,如果KU1至KUn中有匹配不成功的,则输出KU匹配失败,退出循环。
所述多子串,是指一个子串中包括若干个需要比对的碎片数据,包括但不限于一段DNA中的某些特定的小片段,这些片段之间可能不需要有严格的前后顺序,在这种情况下,S800步骤就适合这种比对操作。
在前述技术方案的基础上,对于一些具备二维特征的数据,例如包括但不限于DNA双螺旋结构数据、图像、视频数据,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于S900二维比对步骤,具体包括但不限于:
S901步骤,根据比对的二维排列特征,建立二维母串S(xs,ys)和二维子串K(xk,yk)
其中,XS、YS是母串的二维行列坐标,XK、YK是子串的二维行列坐标。需要注意的是,作为二维的数据,如果需要移位,那就必须整个二维排列整体的一起移位,例如左移、右移、上移、下移,不能只移动一行或者一列。
在这里需要特别强调的是,作为所述比对单元,其中的表项只能是一维的截断,其中的关键字项,也只是一维的。而本发明所述的二维比对到多维比对,实际上是针对母串和子串而言的。所有的高于所述比对单元的一维维度,都是在输入、输出比对单元之外,由准备步骤完成的。例如针对DNA的双螺旋结构和折叠结构的数据比对,以及针对三维图像数据和自然语言的上下文关联,在进入比对单元之前和之前,由本发明的软件和步骤,将这些数据分解为适合所述比对单元的一维表项和一维关键字项结构,再在所述比对单元中进行比对。也就是说,在进入所述比对单元之前,需要将这些数据降维到一维,再在所述比对单元比对,比对的结果再增维,恢复到原本的维度。一次递归或者循环,完成二维到多维的比对操作。
S902步骤,输入二维母串到所述表项。
S903步骤,在所述二维子串K(xk,yk)中,依次复制一行数据到所述关键字项并进行比对,执行S500异同位点处理步骤,输出二维比对中各行比对的结果。
S904步骤,循环复制所述二维子串K(xk,yk)中的下一行数据到所述关键字项并进行比对,直到所述二维子串K(xk,yk)中全部行比对结束。
限于电路的逻辑结构,对于目前的一维电路设计,一个二维子串和二维母串的比对,可以是将子串拆解成各个行为单位,以各个子串的行作为表项中的关键字项,来循环与若干个表项行来比较。作为未来,出现了二维、三维及高维的逻辑电路,则依照此方法,无需拆解二维子串和循环,进行一次比对整个二维子串。
S905步骤,依据上述各行比对的结果,计算并输出所述二维子串在所述二维母串中的比对匹配率。
S906步骤,针对整个二维子串,整体左移或者右移,重新执行包括但不限S903、S904、S905步骤,输出比对结果,直到二维子串移位结束。
在前述技术方案的基础上,对于一些具备三维特征的数据,例如包括但不限于DNA的双螺旋三维结构、高维结构,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于SA00多维比对步骤,具体包括但不限于:
SA01步骤,根据比对的三维排列特征,建立三维母串S(xs,ys,zs)和三维子串K(xk,yk,zk)
其中XS、YS、ZS分别是母串的三维的X、Y、Z轴坐标,XK、YK、ZK分别是子串的三维的X、Y、Z轴坐标。
SA02步骤,对于所述三维母串和所述三维子串,建立针对第三维Z的降维步骤,以所述第三维Z为递归或循环次数,递归或循环S900步骤,当所述递归或循环SA00成功后,做第三维Z的递归或循环,直至递归或循环结束,输出比对结果。
SA03步骤,对于四维以上的母串和子串,以此类推,递归或循环包括但不限于SA01、SA02、SA03的步骤。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于SB00多比对步骤,具体包括但不限于:
SB01步骤,两个以上比对单元之间协同工作,其中每个比对单元的表项包括各自的宽度和深度,每个比对单元的关键字项包括各自的宽度和深度。
SB02步骤,每个比对单元包括但不限于各自的管理、比对算法、母串和子串、结构、计算算法和输出结果。
SB03步骤,一个比对单元的中间过程、输出作为另外一个比对单元的输入。
所述多比对,是通过多个比对单元在同一个系统中应用,例如包括但不限于一个大的表项、一个小的表项,其中,大的表项单元用于初选某些比对,而小的表项单元用于精准比对或者进一步比对,这在生物序列、自然语言、图形和适配的比对中较为适合。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于SC00管理步骤,具体包括但不限于:
SC01步骤,采用所述比对单元中的NP、CPU完成修改、执行其工作步骤。
SC02步骤,采用所述比对单元之外的NP、CPU完成修改、执行其工作步骤。
SC03步骤,提供任务分解、合成,管理、协调所述比对单元之间的接入和断开,实现独立的比对单元之间连接扩充的支持的步骤。
SC04步骤,在所述比对单元做初始化时修改、记录一个以上所述比对单元中的所述FPGA芯片、可编程逻辑芯片、TCAM芯片的逻辑单元和逻辑定义的步骤。
SC05步骤,在所述比对单元工作时,按照比对算法,修改、记录一个以上所述比对单元中所述FPGA芯片、可编程逻辑芯片、TCAM芯片的逻辑单元和逻辑定义的步骤。
SC06步骤,依据比对的属性,执行SC01至SC04的步骤。
SC07步骤,提供本方法与外部设备通信和协商的规则和协议的步骤。
在本发明中,由于在单元内含有NP、CPU,它们均可以独立编程及管理,在单元的外部,也包括CPU,用于管理和协调各个单元的工作,所以,本发明是一种多CPU多管理的系统,各个CPU的编程、管理系统、操作系统均可以采用不同的方法和不同的系统。
在前述技术方案的基础上,在本发明在具体产品的系统结构上可以采用如下列的一种或者多种局部改进的措施:
如图4和图5所示。
一种超并行比对的系统,包括但不限于一个以上由比较器阵列和管理模块构成的比对单元;其中:
所述比对单元包括但不限于由一个以上FPGA芯片或一个以上可编程逻辑芯片或一个以上TCAM芯片以及它们的任意组合,构成包括但不限于表项和关键字项,所述任意组合包括但不限于在所述表项的宽度方向上、所述表项的深度方向上通过电路连接、逻辑定义,构成比较器阵列。
所述逻辑连接包括但不限于由NP、CPU、管理工作步骤定义的连接。
所述比较器阵列具体包括但不限于一个以上的宽度相等的表项行构成表项和一个以上关键字项,在所述管理模块的支撑下,在同一个时刻完成一个关键字项的数据与一个以上表项行的数据在行的方向上的逐位比对,并输出比对结果。
所述管理模块由所述比对单元中所包括但不限于的NP、CPU、管理工作步骤构成,还可以由所述比对单元之外的CPU和管理工作步骤构成。
所述一个以上比对单元之间的连接,包括但不限于一个比对单元的输出和另外一个比对单元的输入连接,连接方式包括电路连接或所述逻辑连接。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述比对模块和所述管理模块支持包括但不限于字符格式和二进制格式的比对数据,在所述比对模块的表项的各行和所述关键字项进行同时刻并行比对,并输出于关键字项匹配的表项行的地址。
需要说明的是,作为硬件电路,比对是在比较器阵列中完成的,所述比较器阵列包括但不限于字符比较器阵列和二进制比较器阵列,所述字符比较器阵列比较的是字符,包括但不限于8位的ASCII字符、16位、32位的汉字字符、颜色编码字符,所述二进制比较器阵列比较的是二进制的位。
所述比对模块包括但不限于实现关键字项和表项中的一个以上的数据行进行同时刻并行比对,记录并输出与关键字项匹配的表项行的地址的电路和逻辑。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于移位控制器,具体包括但不限于对于基于字符格式的数据左移或者右移指定长度的移位控制器,和对于二进制格式的数据进行左移或者右移指定长度的二进制位的移位控制器;所述表项和所述关键字项均包括但不限于所述移位控制器。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于可重构逻辑,包括但不限于表项和关键字项宽度可重构逻辑、表项深度可重构逻辑、表项行的屏蔽位可重构逻辑、关键字项的屏蔽位可重构逻辑;所述宽度和所述屏蔽位包括但不限于基于字符的个数和基于二进制位的个数。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于异同位点处理器,具体包括但不限于在比对时,计算表项中各表项行的位点与关键字项中的对应位置的位点异同个数、记录异同位点的位置并输出。
在具体设计时,如图3所示,可采用寄存器存储中间结果,以备管理模块管理和使用。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述比对模块包括但不限于滤波器电路或逻辑,提供基于硬件的包括但不限于对于关键字项和表项的覆盖、插入和删除不同位点的数据操作。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述比对模块包括但不限于存储器、和表项映射的电路或逻辑,实现将FPGA芯片、可编程逻辑芯片、TCAM芯片中的存储复制到所述存储中的功能,所述存储器包括但不限于随机存储器、电子硬盘和机械硬盘。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述系统包括但不限于主机结构和子卡结构,所述主机结构中包括但不限于扩展卡槽和一个以上所述比对模块和一个以上管理模块,所述子卡结构包括但不限于扩展卡和一个以上所述比对模块和一个以上管理模块,所述扩展卡槽和扩展卡能够连接,使得主机能够把所述扩展卡当成一个扩展的比对系统使用,所述扩展卡槽及扩展卡包括但不限于PCIE接口。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于外部通信模块,具体包括但不限于以太网接口模块、USB接口模块、专用接口模块,所述以太网接口模块、USB接口模块、专用接口模块与所述管理模块连接。还包括但不限于带壳体、硬盘和显示器的独立设备,实现所述系统与外界的通信。还包括但不限于PCIE接口的计算机内置扩展卡式设备,与计算机内部PCIE接口连接、与主机结构的扩展卡槽连接。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于存储模块、辅助模块、电源模块、连接器、驱动软件。
有益效果
与现有技术相比,本发明实现了发明意图,具有以下有益效果:
1、极大地提高了比对的速度,与冯氏计算CPU比对相比加速109数量级,与GPU计算相比,加速106数量级。
2、比对时间不依赖比对数据的长度和关键字的复杂度。
3、可用于生物序列比对、图像识别、自然语言处理。
附图说明
图1:比对单元核心结构图
图2:生物序列比对核心结构图
图3:异同位点处理器结构图
图4:比对单元结构图
图5:比对服务器结构图
图6:PCIE加速卡结构图
具体实施方法
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行描述。
本发明的具体实施方式如下:
具体实施例一:生物序列超并行比对服务器
一、模块结构图说明
如图5是本发明的生物序列超并行比对服务器的实施例。图中,采用2个比对单元,其中比对单元1较大,采用表项宽度为256字节,深度为1M个表项行,单周期一次比对100万个表项行;比对单元2较小,表项宽度是64字节,深度为16个,单周期一次比对16个表项行。如果是针对生物序列的SAM类文件,则比对可以采用以字节Byte位单位比对,此时采用如图2所示的基于字节的比对单元的逻辑定义,并且图4的比对阵列和图5也是采用基于字节的比对阵列的逻辑定义;否则则以二进制位bit为比对单位的逻辑定义。此外,该实施例还包括管理模块、硬盘、显示器、以太网接口模块、USB接口模块和专用接口模块,还包括电源及辅助系统。
图4是比对单元1和比对单元2的结构图。包括比较器阵列、移位控制器、可重构逻辑、管理模块、异同位点处理器、滤波器以及比较器阵列的输出,还包括存储器、表项映射、PCIE及其它接口。
本服务器的实现,包括采用FPGA芯片和TCAM芯片。其中,在采用FPGA芯片时,可以实现的逻辑定义功能较为灵活多变,例如可以实现异同位点的统计和输出,还可以设计多种需要的功能,而这些功能是业内中级工程技术人员所应该掌握的、不需要创新性工作就能够完成的。而采用TCAM芯片,对于比对阵列,可以高效低实现,但是作为异同位点的统计输出,由于芯片本身结构的原因,就无法实现了。
该实施例被设计成一台独立完整的服务器,包括壳体,可作为基于测序仪的配套设备。
二、工作步骤说明
这里需要申明的是:以下所述的步骤编号,只是为了记录方便,并不意味着具有编号的先后顺序,步骤之间的关系,除非特别申明某些步骤之间具有先后顺序,否则均为无先后顺序的任意组合。
一种超并行比对的方法,包括但不限于:
S100步骤:包括但不限于由表项和关键字项构成比对单元,完成关键字项数据与表项中的表项行数据进行超并行比对。
S200步骤:包括但不限于输入母串到表项,输入子串到关键字项,循环比对和输出结果。
S300步骤:包括但不限于依据比对算法,生成子串的选择项输入到表项,循环位移和截取母串输入到关键字项,比对及输出结果。
所述比对算法,包括生物序列比对算法、自然语言比对算法、图像比对算法。
所述母串和子串包括改变、压缩数据格式的步骤,数据格式包括但不限于生物序列的SAM格式的数据、自然语言的数据以及图像格式的数据,其数据形式包括但不限于数据库格式。所有对于母串和子串的操作,包括但不限于由汉字编码、十六进制、十进制、八进制、ASCII(American Standard Code for Information Interchange:美国信息交换标准代码)压缩成二进制编码。包括记录操作类型及操作步骤的结果。包括但不限于通过以太网端口与外界网络设备、基因测序设备、语音设备、图像设备通信的步骤。通过处理器系统和工作步骤完成比对服务。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种组合的局部改进的措施:
所述S100步骤具体包括但不限于:
S101步骤,所述表项包括但不限于一个以上的表项行,所述表项行存储表项行数据,所述关键字项存储关键字数据,所述关键字项数据与一个以上表项行的数据,在同一个逻辑周期内,在相同的排列位置上逐个位点的数据同时比对。如果有与关键字项数据匹配的表项行,则输出所述匹配的表项行的地址,如果有多个与关键字项数据匹配的表项行,则输出按照地址排列顺序中的第一个或最后一个匹配的表项行的地址,如果没有与关键字项数据匹配的表项行,则不输出表项行地址。
如图1所示,1101存储的是关键字项数据,1102是关键字项地址,1200是表项,其中,包括n个表项行:1211是第一个表项行,存储第一个表项行数据,1212是第一个表项行的地址;1221是第二个表项行,存储第二个表项行数据,1222是第二个表项行的地址;12n1是第n个表项行,存储第n个表项行数据,12n2是第n个表项行的地址。
所述同一个逻辑周期包括一个关键字项与一个以上表项行完成一次比对的时间长度,它在工作上可以是若干个时间段的组合构成。如果比对单元是由TCAM芯片构成,那么所述单周期就是TCAM的比对周期,以250MHz主频的器件为例,这个比对周期就是4nS,如果是采用500MHz的FPGA(Field-Programmable Gate Array,现场可编程门阵列)芯片构成的比对单元,那么该比对周期就是2nS。所述一个以上表项行,例如设计的表项深度为1千万行(10M),那么,该方法就可以在4nS或2nS内,完成这一千万行的数据同时与关键字行的数据比对,如果表项行中第800010行与关键字项数据相符,则输出该表项行的地址800010。
作为冯氏计算机的串比较算法,通常是由CPU执行循环比较程序,以目前最快的4GHz主频的CPU估算,CPU时钟周期为0.25nS,由于在逻辑上,无法将串比较算法化解成为多线程执行,只能由单线程执行。预估一个长度为150个字节的串比较算法,采用循环算法,用耗时最少的汇编语言编程,其一次循环的时间花费大约为40个时钟周期,即40*0.25nS=10nS,150次循环共计1.5μS,完成一千万行的比对,耗时至少10000000*1.5μS=15S!与4nS相比是3.75×109倍,与2nS相比是7.5×109倍,如果采用高级语言编程,这个差距则更大。可见本专利申请的比对方法对于性能的提升是惊人的,与冯氏计算机的循环比对是有根本性的区别。
与GPU(Graphic Processing Unit,图像处理器)加速算法相比,GPU中包含的CUDA(ComputeUnified Device Architecture,统一计算设备架构)可以视作简单的小CPU,但是这依然是冯氏计算的串行的循环比对方式。虽然CUDA在GPU中可以包含数千个,一方面,面对复杂的比对数据,我们无法针对性地对每个CUDA做程序设计以解决比对问题;另外一方面即使这样做了,还是冯氏计算机的串行循环比对流程。其实GPU的设计,是源于对于图像数据的统一处理的驱动。例如提高图像色彩、灰度等操作。这些操作的特征是对于图像区域中的全部数据做相同的操作,而不是针对每个像素做不同的操作。所以,采用GPU对于数据比对操作,其加速性能效果并不明显,有报道显示,极端理想情况下,比CPU方式,加速为103数量级。依此类推,本发明相较GPU方式,加速为106数量级以上。
所述匹配是指某一个表项行的数据与关键字项的数据,在按照从左到右或者从右到左的顺序,逐个位点相比都相同。例如关键字项数据是“ATCGGTCCAATG”,而有一个表项行中的数据也是“ATCGGTCCAATG”,于是,该表项行就与关键字匹配。
S102步骤,所述位点,包括但不限于单个二进制的位、一个以上二进制位构成的字符、一个以上二进制位构成的信息单元,所述比对,包括但不限于关键字项与表项行在相同排列位置上逐个位点的数据进行包括但不限于与、或、非、异或、相等、相反、不等或这些组合的操作算法,所述组合,包括由一些包括这些运算的公式所提供的算法。
在图1中,关键字项和表项中的数据显示的是二进制数,及只有0和1,在图2中,关键字项和表项中的数据是代表DNA序列的单字节ASCII码,还可以是多字节的其它编码,例如汉字编码、图像编码、视频编码。所述比对,包括根据二进制位比对、根据单字节ASCII码比对、根据其它编码比对。
对于生物数据,由于数据种类很少,只有腺嘌呤A、鸟嘌呤G、胞嘧啶C、胸腺嘧啶T和尿嘧啶U,既可以采用1byte字节的ASCII码,还可以采用3bit的位压缩编码。至于比对操作,既可以是字节比对,也可以是位比对。
S103步骤,采用逻辑定义,连接一个以上FPGA芯片、可编程逻辑芯片构成所述表项和关键字项,扩展表项和关键字项,连接方式包括但不限于在表项的宽度方向连接、或深度方向连接。
S104步骤,所述逻辑定义,还包括但不限于定义表项行、关键字项中指定位点的掩码,所述掩码包括但不限于屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,所述指定位是采用指定的数据替代该位点数据。
如图2所示,采用#、*标记掩码,其中#为指定位,*为屏蔽位。具体来说,如2101,采用指定位A来替代原来的内容,2102和2103设置屏蔽位。需要注意的是,所示屏蔽位的设置,并非直接采用*去替代2102和2103数据本身,而是在逻辑上对于与2102和2103对应的位置上的信号单元进行运算操作,其结果再形成屏蔽的,例如采用逻辑“与”的关系,形成对应的型号线产生高阻状态,实现屏蔽操作。对于TCAM芯片,在表项行的每个二进制位上,本身就具备对应的三态屏蔽单元,所以,只需要对屏蔽位设定即可。而对于FPGA或者其他可编程逻辑芯片,则通过逻辑定义进行设定。
S105步骤,所述逻辑定义,还包括但不限于定义FPGA芯片、可编程逻辑芯片中的NP、CPU,完成指定的计算的功能。
S106步骤,采用逻辑定义,还包括但不限于连接一个以上TCAM芯片或TCAM芯片与FPGA芯片的组合构成所述表项和关键字项,扩展表项和关键字项,连接方式包括但不限于在表项的宽度方向连接、深度方向连接。
S107步骤,所述逻辑定义,还包括但不限于定义TCAM芯片中的表项行、关键字项中指定位点的三态屏蔽位,使得该位点不参与比对。
S108步骤,所述逻辑定义,还包括但不限于定义TCAM芯片中的NP(NetworkingProcessor,网络处理器)、CPU,完成指定的计算的功能。
S109步骤,所述逻辑定义,还包括单字节的比对,所述单字节的比对,是按照以单个字节为单位逐个字节比对。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述S200步骤具体包括但不限于:
S201步骤,计算母串的容积MV和所述表项的容积TV,如果MV≤TV,则母串不予分解,如果MV>TV,则分解母串或循环分解母串,直到分解结束。
所述容积,即总长度,是行的位点数和列数的乘积。
S202步骤,按照表项的宽度TW,从头开始依次切割截取母串或分解后的母串,按照表项深度TD的顺序依次输入到表项。
例如图2中的表项行1,、表项行2直到表项行n。
在这里,所述母串通常是原始的目标数据,例如一条基因的DNA序列、一端自然语言文字、一幅图像、一段视频,所述子串,是一个需要检索比对的DNA片段、一句短语、图片中的一小部分、视频中的一小部分,比对的工作,就是在母串中查找看有没有子串以及子串所在的位置。
S203步骤,计算子串的宽度CW和所述关键字项的宽度TW,如果CW≤TW,则采用掩码将子串的宽度CW补偿到TW,如果CW>TW,则分解子串或者调整TW到TW>CW;所述掩码包括但不限于屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,所述指定位是采用指定的数据替代该位点。
例如图2中的关键字项。
通常,为了比对的方便,表项的宽度位点数和关键字项的宽度位点数是相等的。如果关键字的宽度小于表项的宽度,可以采用对关键字项用掩码去延长,延长到跟表项行的宽度一致,这样才能够方便比对。
S204步骤,依据比对算法,对于表项行采用插入、删除一个以上指定位点,并且记录该操作和修补母串中的其他表项。
对于生物序列比对来说,具有对于母串特定位点进行插入、删除、替补等操作,对于自然语言的处理和图像视频,也会有类似的修补操作。
实际上,对于关键字项,也有类似的操作,在本专利申请中,这一步的操作可以是在整理关键字项时或者在S300步骤中完成。
S205步骤,输入子串到关键字项,将关键字项与表项中的所有表项行的数据同时比对,输出匹配的表项行的地址。
在关键字项与众多的表项行比对时,往往出现多个匹配的表项行,根据设定的策略,可以输出第一个匹配的表项行地址,也可以输出最后一个匹配的表项行地址。
S206步骤,如果有匹配的表项行地址输出,记录该表项行地址,清除该表项行数据,循环比对,直到匹配不成功。
所述清除匹配成功的表项行,是在记录及输出匹配成功的表项行地址以后,再对该表项行的数据予以清除,这样操作的目的是为了查找还有没有下一个与关键字项匹配的表项行,通过循环,找出全部与关键字项匹配的表项行。
S207步骤,将表项数据当做一个一维数组,执行循环体,所述循环体包括但不限于左移或右移一个位点,执行包括但不限S205步骤和S206步骤,直到执行循环体TW-1次,输出循环体的比对结果,结束一个表项对于一个关键字项的比对,计算及输出结果。
由于表项行的宽度是TW个位点,当把全部母串连接成一个一维数组的时候,只需要循环TW-1次,就完成了表项中的全部母串跟关键字项中的子串的全部比对。
在前述技术方案的基础上,在本发明的一个突出创新是将子串的内容和母串的类容颠倒过来比对,预先对子串做比对的可能性组合(例如包括但不限于下列步骤中的子串E1、子串E2、子串E3、子串E4),将这些组合的数据输入到表项中,让母串在关键字项上以数据流的形式一个位点一个位点地流过,流动一个位点比对一次表项,输出可能匹配的表项行地址,这对于生物序列比对和自然语言处理尤其具有更合适和更高效的效果。具体可以采用如下列的一种或者多种局部改进的措施:
所述S300步骤具体包括但不限于:
S301步骤,计算子串的宽度CW和表项宽度TW,如果CW≤TW,则采用掩码将子串的宽度CW延长到TW,如果CW>TW,则分解子串或者调整TW到TW≥CW;所述掩码包括但不限于屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,执行本步骤后的子串为子串E1;所述指定位是采用指定的数据替代该位点。
所述掩码是在FPGA芯片、可编程逻辑芯片、TCAM芯片中通过逻辑设定实现的。其中,屏蔽位是将表项行中对应位点的数据予以屏蔽,使之不参与比对,也就是说这些位点的数据不影响比对结果;指定位是通过指定的数据来替代比对时对应的位点的数据。所述屏蔽位和所述指定位都是带有指定位置信息的数据,设定时必须注意。
S302步骤,依据比对算法,对于子串E1,采用一个以上屏蔽位屏蔽一个以上指定位点生成一个以上子串E2,记录每个子串E2和屏蔽位点到子串映射表格。
S303步骤,依据比对算法,对于子串E1,采用一个以上指定位替换一个以上指定位点生成一个以上子串E3,记录每个子串E3和替换位点到子串映射表格。
S304步骤,依据比对算法,对于子串E1,采用插入、删除一个以上指定位点生成一个以上子串E4,记录每个子串E4和插入、删除位点到子串映射表格。
S305步骤,输入所述子串E2、子串E3、子串E4到所述表项,记录所述子串E2、子串E3、子串E4的地址到所述子串映射表格。
实际上,对于子串的子串E1、子串E2、子串E3、子串E4操作,根据比对的属性,还有其他操作方式,这里是包括但不限于的关系。
S306步骤,对于母串,建立指针SP,按照所述子串宽度CW从SP=1开始截取母串,输入到所述关键字项,将关键字项数据与表项中的所有表项行的数据同时比对,输出比对结果。
S307步骤,如果有匹配的表项行地址输出,则记录该表项行地址和指针SP,并修改所述子串映射表格。
S308步骤,如果没有地址输出,则修改指针,赋值SP+1到SP,循环执行包括但不限S305步骤和S306步骤,直到母串结束,计算输出结果。
上述操作包括但不限于循环和递归,还包括对于特定的区间进行另外一个循环和递归操作,以实现多次扫描比对,逐步优化的效果。
在前述技术方案的基础上,在本发明为了更好地支撑比对操作,设计了表项结构可重新改变的可重构方法,主要是修改表项的宽度和深度。具体包括采用如下列的一种或者多种局部改进的措施:
包括但不限于S400表项可重构步骤,具体包括但不限于:
S401步骤,按照如下公式计算最长子串EM的宽度,公式:TW0=1+MOD(CW-MAX/8),其中:MOD为取整函数,TW0是可重构表项宽度,CW-MAX是最长子串EM的宽度。
S402步骤,依据TW0,在表项容积TV不变的前提下,计算TD0=TV/TW0,以TD0作为重构后的表项深度。
实际上,这里对于TD0中的小数是采用截除处理的,即如果不是整行,则去掉该行。
S403步骤,依据TW0和TD0,修改比对的参数,执行比对操作。
所述比对参数,包括在上层软件中,修改子串的宽度TW0和深度TD0
这里需要注意的是当子串出现深度大于1的时候,即子串出现截断的时候,在上层比对软件中,需要将将这阶段的子串连接起来计算。但是在通常情况下,子串都不予截断,除非遇见子串超长的情况下才予以考虑。
S404步骤,采用所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的NP、CPU系统,执行和管理所述包括但不限S401、S402、S403步骤。
这里是包括为了完善对于子串的截断而设计的方法。
在前述技术方案的基础上,在本发明设计了在比对时对于相同的位点和不同的位点进行统计的方法。这对于生物序列和自然语言处理的比对检索,可以计算相关概率。具体可以采用如下列的一种或者多种局部改进的措施:
包括但不限于S500异同位点处理步骤,具体包括但不限于:
S501步骤,所述逻辑定义,还包括但不限于定义所述FPGA芯片、可编程逻辑芯片、TCAM芯片的逻辑单元,完成对于比对时所述关键字项的各个位点和所述表项中各表项行在的各个位点上数据的相同个数TW-YES和不同个数TW-NO的计算,包括计算概率、位点的位置。
S502步骤,针对表项中各表项行的所述TW-YES和TW-NO,并选择最大值或最小值,输出最大值或最小值和所在的表项行的行号。
S503步骤,针对S502步骤,循环清除所述最大值或最小值和所在的表项行的数据,重新执行S501步骤和S502步骤,直到所述TW-YES和TW-NO的值达到指定数值。
这是为了寻找表项中最大或最小相符或不相符的概率而设计的计算方法。
S504步骤,所述逻辑定义,还包括但不限于定义硬件逻辑,执行完成所述S501、S502、S503的步骤。
所述定义硬件逻辑,包括对于FPGA芯片、可编程门阵列芯片、TCAM芯片的逻辑单元和单元组。
S505步骤,采用所述FPGA芯片、可编程逻辑芯片、TCAM芯片中的NP、CPU系统,采用软件方式,执行所述包括但不限S501、S502、S503的步骤。
S506步骤,采用所述FPGA芯片、可编程逻辑芯片、TCAM芯片中的NP、CPU系统,对于所述表项中各表项行的所述TW-YES和TW-NO进行排序并输出。
如图3所示,这是针对二进制位而设计的一个原理验证例子。图3中,关键字项与众多的表项行中的一个表项行,通过3301至330n运算器运算,例如采用包括但不限于“异或”逐位运算,则,关键字项为1001…0,一个表项行为1000…0,则运算器运算的结果为0001…0,假设其中省略的数字“…”不计算,该结果一路存储到位置寄存器,一路送计数器,包括但不限于计算其中的“1”的个数。于是,位置寄存器的数据为0001…0,计数器计数为1,输出这两个数据,这就是所述异同位点处理的结果。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施,这对于包括但不限于生物序列比对和自然语言比对等操作时,修补和过滤有关噪声,是一个有效的方法:
包括但不限于S600滤波器过滤的步骤,具体包括但不限于:
S601步骤,在执行关键字项和表项行的比对时,覆盖、插入和删除不同位点、相同位点,并且记录覆盖、插入和删除不同位点的长度。
S602步骤,在执行关键字项和表项行的比对时,覆盖、插入、替换和删除指定长度的连续不同位点、指定长度的连续相同位点,并且记录覆盖、插入、替换和删除不同位点的长度。
S603步骤,在执行多次比对的之间,依据比对算法,对于所述表项和所述关键字项的数据,进行所述屏蔽位和指定位的掩码处理。
S604步骤,在执行多次比对的之间,依据比对算法,对于所述表项和所述关键字项的数据,进行覆盖、插入、替换、删除和过滤处理。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于S700表项映射步骤,具体包括但不限于:
S701步骤,在所述FPGA芯片、可编程逻辑芯片、TCAM芯片之外,采用存储器建立存储区,与所述表项对应,复制所述表项和所述关键字项的数据和中间数据、结果数据到所述存储区,成为所述表项的映射。
S702步骤,同步所述表项和所述关键字项的操作和修改记录到所述映射。
S703步骤,存储所述映射到数据库,由所述FPGA芯片、可编程逻辑芯片、TCAM芯片中的NP、CPU系统或所述FPGA芯片、可编程逻辑芯片、TCAM芯片之外的NP、CPU系统进行处理。
这种方法的目的,是为了建立一个备份,以便在后续回溯中间数据和过程时发挥作用。实际上,在一些需要中,这个映射可以存储到包括电子硬盘和机械硬盘的数据库中,以备后续分析所用。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于当子串为子串KU包括多子串KU1至多子串KUn,需要在母串中查找和比对KU1至KUn是否存在而不需要前后顺序的S800多子串间无序比对步骤,具体包括但不限于:
S801步骤,确定子串KU包括多子串KU1至多子串KUn,确定KU1至KUn无前后顺序。
S802步骤,确定在母串中的搜索范围,截取该范围的母串内容输入到一个指定的比对单元的表项,以KU1至KUn为循环范围,在每次循环时,依次输入KU1至KUn到所述指定的比对单元的关键字项,执行包括但不限S300步骤,记录输出。
S803步骤,如果全部KU1至KUn都被匹配成功,则循环结束,输出KU匹配成功的数据,如果KU1至KUn中有匹配不成功的,则输出KU匹配失败,退出循环。
所述多子串,是指一个子串中包括若干个需要比对的碎片数据,包括但不限于一段DNA中的某些特定的小片段,这些片段之间可能不需要有严格的前后顺序,在这种情况下,S800步骤就适合这种比对操作。
在前述技术方案的基础上,对于一些具备二维特征的数据,例如包括但不限于DNA双螺旋结构数据、图像、视频数据,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于S900二维比对步骤,具体包括但不限于:
S901步骤,根据比对的二维排列特征,建立二维母串S(xs,ys)和二维子串K(xk,yk)
其中,XS、YS是母串的二维行列坐标,XK、YK是子串的二维行列坐标。需要注意的是,作为二维的数据,如果需要移位,那就必须整个二维排列整体的一起移位,例如左移、右移、上移、下移,不能只移动一行或者一列。
在这里需要特别强调的是,作为所述比对单元,其中的表项只能是一维的截断,其中的关键字项,也只是一维的。而本发明所述的二维比对到多维比对,实际上是针对母串和子串而言的。所有的高于所述比对单元的一维维度,都是在输入、输出比对单元之外,由准备步骤完成的。例如针对DNA的双螺旋结构和折叠结构的数据比对,以及针对三维图像数据和自然语言的上下文关联,在进入比对单元之前和之前,由本发明的软件和步骤,将这些数据分解为适合所述比对单元的一维表项和一维关键字项结构,再在所述比对单元中进行比对。也就是说,在进入所述比对单元之前,需要将这些数据降维到一维,再在所述比对单元比对,比对的结果再增维,恢复到原本的维度。一次递归或者循环,完成二维到多维的比对操作。
S902步骤,输入二维母串到所述表项。
S903步骤,在所述二维子串K(xk,yk)中,依次复制一行数据到所述关键字项并进行比对,执行S500异同位点处理步骤,输出二维比对中各行比对的结果。
S904步骤,循环复制所述二维子串K(xk,yk)中的下一行数据到所述关键字项并进行比对,直到所述二维子串K(xk,yk)中全部行比对结束。
限于电路的逻辑结构,对于目前的一维电路设计,一个二维子串和二维母串的比对,可以是将子串拆解成各个行为单位,以各个子串的行作为表项中的关键字项,来循环与若干个表项行来比较。作为未来,出现了二维、三维及高维的逻辑电路,则依照此方法,无需拆解二维子串和循环,进行一次比对整个二维子串。
S905步骤,依据上述各行比对的结果,计算并输出所述二维子串在所述二维母串中的比对匹配率。
S906步骤,针对整个二维子串,整体左移或者右移,重新执行包括但不限S903、S904、S905步骤,输出比对结果,直到二维子串移位结束。
在前述技术方案的基础上,对于一些具备三维特征的数据,例如包括但不限于DNA的双螺旋三维结构、高维结构,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于SA00多维比对步骤,具体包括但不限于:
SA01步骤,根据比对的三维排列特征,建立三维母串S(xs,ys,zs)和三维子串K(xk,yk,zk)
其中XS、YS、ZS分别是母串的三维的X、Y、Z轴坐标,XK、YK、ZK分别是子串的三维的X、Y、Z轴坐标。
SA02步骤,对于所述三维母串和所述三维子串,建立针对第三维Z的降维步骤,以所述第三维Z为递归或循环次数,递归或循环S900步骤,当所述递归或循环SA00成功后,做第三维Z的递归或循环,直至递归或循环结束,输出比对结果。
SA03步骤,对于四维以上的母串和子串,以此类推,递归或循环包括但不限于SA01、SA02、SA03的步骤。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于SB00多比对步骤,具体包括但不限于:
SB01步骤,两个以上比对单元之间协同工作,其中每个比对单元的表项包括各自的宽度和深度,每个比对单元的关键字项包括各自的宽度和深度。
SB02步骤,每个比对单元包括但不限于各自的管理、比对算法、母串和子串、结构、计算算法和输出结果。
SB03步骤,一个比对单元的中间过程、输出作为另外一个比对单元的输入。
所述多比对,是通过多个比对单元在同一个系统中应用,例如包括但不限于一个大的表项、一个小的表项,其中,大的表项单元用于初选某些比对,而小的表项单元用于精准比对或者进一步比对,这在生物序列、自然语言、图形和适配的比对中较为适合。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于SC00管理步骤,具体包括但不限于:
SC01步骤,采用所述比对单元中的NP、CPU完成修改、执行其工作步骤。
SC02步骤,采用所述比对单元之外的NP、CPU完成修改、执行其工作步骤。
SC03步骤,提供任务分解、合成,管理、协调所述比对单元之间的接入和断开,实现独立的比对单元之间连接扩充的支持的步骤。
SC04步骤,在所述比对单元做初始化时修改、记录一个以上所述比对单元中的所述FPGA芯片、可编程逻辑芯片、TCAM芯片的逻辑单元和逻辑定义的步骤。
SC05步骤,在所述比对单元工作时,按照比对算法,修改、记录一个以上所述比对单元中所述FPGA芯片、可编程逻辑芯片、TCAM芯片的逻辑单元和逻辑定义的步骤。
SC06步骤,依据比对的属性,执行SC01至SC04的步骤。
SC07步骤,提供本方法与外部设备通信和协商的规则和协议的步骤。
在本发明中,由于在单元内含有NP、CPU,它们均可以独立编程及管理,在单元的外部,也包括CPU,用于管理和协调各个单元的工作,所以,本发明是一种多CPU多管理的系统,各个CPU的编程、管理系统、操作系统均可以采用不同的方法和不同的系统。
在前述技术方案的基础上,在本发明在具体产品的系统结构上可以采用如下列的一种或者多种局部改进的措施:
如图4和图5所示。
一种超并行比对的系统,包括但不限于一个以上由比较器阵列和管理模块构成的比对单元;其中:
所述比对单元包括但不限于由一个以上FPGA芯片或一个以上可编程逻辑芯片或一个以上TCAM芯片以及它们的任意组合,构成包括但不限于表项和关键字项,所述任意组合包括但不限于在所述表项的宽度方向上、所述表项的深度方向上通过电路连接、逻辑定义,构成比较器阵列。
所述逻辑连接包括但不限于由NP、CPU、管理工作步骤定义的连接。
所述比较器阵列具体包括但不限于一个以上的宽度相等的表项行构成表项和一个以上关键字项,在所述管理模块的支撑下,在同一个时刻完成一个关键字项的数据与一个以上表项行的数据在行的方向上的逐位比对,并输出比对结果。
所述管理模块由所述比对单元中所包括但不限于的NP、CPU、管理工作步骤构成,还可以由所述比对单元之外的CPU和管理工作步骤构成。
所述一个以上比对单元之间的连接,包括但不限于一个比对单元的输出和另外一个比对单元的输入连接,连接方式包括电路连接或所述逻辑连接。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述比对模块和所述管理模块支持包括但不限于字符格式和二进制格式的比对数据,在所述比对模块的表项的各行和所述关键字项进行同时刻并行比对,并输出于关键字项匹配的表项行的地址。
需要说明的是,作为硬件电路,比对是在比较器阵列中完成的,所述比较器阵列包括但不限于字符比较器阵列和二进制比较器阵列,所述字符比较器阵列比较的是字符,包括但不限于8位的ASCII字符、16位、32位的汉字字符、颜色编码字符,所述二进制比较器阵列比较的是二进制的位。
所述比对模块包括但不限于实现关键字项和表项中的一个以上的数据行进行同时刻并行比对,记录并输出与关键字项匹配的表项行的地址的电路和逻辑。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于移位控制器,具体包括但不限于对于基于字符格式的数据左移或者右移指定长度的移位控制器,和对于二进制格式的数据进行左移或者右移指定长度的二进制位的移位控制器;所述表项和所述关键字项均包括但不限于所述移位控制器。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于可重构逻辑,包括但不限于表项和关键字项宽度可重构逻辑、表项深度可重构逻辑、表项行的屏蔽位可重构逻辑、关键字项的屏蔽位可重构逻辑;所述宽度和所述屏蔽位包括但不限于基于字符的个数和基于二进制位的个数。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于异同位点处理器,具体包括但不限于在比对时,计算表项中各表项行的位点与关键字项中的对应位置的位点异同个数、记录异同位点的位置并输出。
在具体设计时,如图3所示,可采用寄存器存储中间结果,以备管理模块管理和使用。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述比对模块包括但不限于滤波器电路或逻辑,提供基于硬件的包括但不限于对于关键字项和表项的覆盖、插入和删除不同位点的数据操作。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述比对模块包括但不限于存储器、和表项映射的电路或逻辑,实现将FPGA芯片、可编程逻辑芯片、TCAM芯片中的存储复制到所述存储中的功能,所述存储器包括但不限于随机存储器、电子硬盘和机械硬盘。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
所述系统包括但不限于主机结构和子卡结构,所述主机结构中包括但不限于扩展卡槽和一个以上所述比对模块和一个以上管理模块,所述子卡结构包括但不限于扩展卡和一个以上所述比对模块和一个以上管理模块,所述扩展卡槽和扩展卡能够连接,使得主机能够把所述扩展卡当成一个扩展的比对系统使用,所述扩展卡槽及扩展卡包括但不限于PCIE接口。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于外部通信模块,具体包括但不限于以太网接口模块、USB接口模块、专用接口模块,所述以太网接口模块、USB接口模块、专用接口模块与所述管理模块连接。还包括但不限于带壳体、硬盘和显示器的独立设备,实现所述系统与外界的通信。还包括但不限于PCIE接口的计算机内置扩展卡式设备,与计算机内部PCIE接口连接、与主机结构的扩展卡槽连接。
在前述技术方案的基础上,在本发明的另一些方案中可以采用如下列的一种或者多种局部改进的措施:
包括但不限于存储模块、辅助模块、电源模块、连接器、驱动软件。
具体实施例二:PCIE卡式超速比对系统
如图6所示,该实施方式是本发明的另外一种应用——PCIE卡式超速比对系统。与前一个实施例相同的这里不再复述,这里只强调差异的部分。
1、采用TCAM芯片或FPGA设计PCIE卡式超速比对系统。系统包括:比较器阵列、管理模块、移位控制器、可重构逻辑、存储器及表项映射以及PCIE接口。
2、本系统需要插入到PC机的PCIE插槽上运行,不具备独立运行能力。
3、本系统包括一个比对单元,采用TCAM芯片内置的CPU和程序设计,作为本系统的管理模块。
4、本系统的管理模块对于宿主PC机,设计管理接口。
5、本系统表项宽度为128字节,深度为1M行。
具体实施例三:通用数据超速比对系统
如图6所示,该实施方式是本发明的另外一种应用——通用数据超速比对系统。与前一个实施例相同的这里不再复述,这里只强调差异的部分。
1、图4的比对阵列采用基于位比对的逻辑定义,如图1所示。
因此,对于S109步骤,所述逻辑定义,所述位点采用的是位,比对是按照以位为单位逐位比对。
2、对于图像类数据的比对,采用表项的宽度适合图像尺寸,例如基于4K的RGB三原色视频图像格式,每幅画面为3840*2160个像素点时,确定表项宽度为3840*3*24bits=270Kbits,表项深度为2160*3*24bits=151875bits=152Kbits,还可以增加表项深度,每个表项可以存储多幅图像,例如NTSC视频制式的每秒30幅逐行扫描画面,存储1秒的画面为30*152Kbits=4560bits。
3、对于自然语言类数据的比对,采用表项的宽度适合自然语言尺寸,例如GBK编码汉字,采用的是双字节编码,每个位点采用双字节16bits,假设采用每个表项行100个汉字,则表项宽度为100*16bits=1.6K bits,至于表项的深度,可根据需要设计。
4、依据比对的实际内容和表项的宽度、深度,修改S900至SC00,使得所述逻辑定义支持二维、三维及多维比对。
5、依据全部比对步骤,设计比对函数,以适应具体比对步骤,以便于上层语言编制和调用这些函数,完成比对的业务。
6、采用云模式、大数据和人工智能算法,进一步筛选数据、深度学习,推理和判断比对结果。

Claims (21)

1.一种超并行比对的方法,包括:
S100步骤:由表项和关键字项构成比对单元,完成关键字项数据与表项中的表项行数据进行超并行比对;
S200步骤:输入母串到表项,输入子串到关键字项,循环比对和输出结果。
2.根据权利要求1所述的方法,其特征在于,所述S100步骤具体包括:
S101步骤,所述表项包括一个以上的表项行,所述表项行存储表项行数据,所述关键字项存储关键字数据,所述关键字项数据与一个以上表项行的数据,在同一个逻辑周期内,在相同的排列位置上逐个位点的数据同时比对,如果有与关键字项数据匹配的表项行,则输出所述匹配的表项行的地址,如果有多个与关键字项数据匹配的表项行,则输出按照地址排列顺序中的第一个或最后一个匹配的表项行的地址,如果没有与关键字项数据匹配的表项行,则不输出表项行地址;
S102步骤,所述位点,包括单个二进制的位、一个以上二进制位构成的字符、一个以上二进制位构成的信息单元,所述比对,包括关键字项与表项行在相同排列位置上逐个位点的数据进行包括与、或、非、异或、相等、相反、不等或这些组合的操作算法;
S103步骤,采用逻辑定义,连接一个以上FPGA芯片和/或可编程逻辑芯片构成所述表项和关键字项,扩展表项和关键字项,连接方式包括在表项的宽度方向连接和/或深度方向连接;和/或,
S104步骤,所述逻辑定义,还包括定义表项行和/或关键字项中指定位点的掩码,所述掩码包括屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,所述指定位是采用指定的数据替代该位点数据;和/或,
S105步骤,所述逻辑定义,还包括定义FPGA芯片和/或可编程逻辑芯片中的NP、CPU,完成指定的计算的功能;和/或,
S106步骤,采用逻辑定义,还包括连接一个以上TCAM芯片或TCAM芯片与FPGA芯片的组合构成所述表项和关键字项,扩展表项和关键字项,连接方式包括在表项的宽度方向连接和/或深度方向连接;和/或,
S107步骤,所述逻辑定义,还包括定义TCAM芯片中的表项行和/或关键字项中指定位点的三态屏蔽位,使得该位点不参与比对;和/或,
S108步骤,所述逻辑定义,还包括定义TCAM芯片中的NP、CPU,完成指定的计算的功能;
S109步骤,所述逻辑定义,还包括基于所述位点的不同,而定义位的比对、单字节的比对和双字节的比对,所述位的比对,是按照以位为单位逐位比对,所述单字节的比对,是按照以单个字节为单位逐个字节比对,所述双字节的比对,是按照以两个字节为单位逐个双字节比对。
3.根据权利要求1所述的方法,其特征在于,所述S200步骤具体包括:
S201步骤,计算母串的容积MV和所述表项的容积TV,如果MV≤TV,则母串不予分解,如果MV>TV,则分解母串或循环分解母串,直到分解结束;和/或,
S202步骤,按照表项的宽度TW,从头开始依次切割截取母串或分解后的母串,按照表项深度TD的顺序依次输入到表项;和/或,
S203步骤,计算子串的宽度CW和所述关键字项的宽度TW,如果CW≤TW,则采用掩码将子串的宽度CW补偿到TW,如果CW>TW,则分解子串或者调整TW到TW>CW;所述掩码包括屏蔽位和指定位,所述屏蔽位使得该位点不参与比对,所述指定位是采用指定的数据替代该位点;和/或,
S204步骤,依据比对算法,对于表项行采用插入和/或删除一个以上指定位点,并且记录该操作和修补母串中的其他表项;和/或,
S205步骤,输入子串到关键字项,将关键字项与表项中的所有表项行的数据同时比对,输出匹配的表项行的地址;和/或,
S206步骤,如果有匹配的表项行地址输出,记录该表项行地址,清除该表项行数据,循环比对,直到匹配不成功;和/或,
S207步骤,将表项数据当做一个一维数组,执行循环体,所述循环体包括左移或右移一个位点,执行S205步骤和S206步骤,直到执行循环体TW-1次,输出循环体的比对结果,结束一个表项对于一个关键字项的比对,计算及输出结果。
4.根据权利要求1所述的方法,其特征在于,包括S400表项可重构步骤,具体包括:
S401步骤,按照如下公式计算最长子串EM的宽度,公式:TW0=1+MOD(CW-MAX/8),其中:MOD为取整函数,TW0是可重构表项宽度,CW-MAX是最长子串EM的宽度;
S402步骤,依据TW0,在表项容积TV不变的前提下,计算TD0=TV/TW0,以TD0作为重构后的表项深度;
S403步骤,依据TW0和TD0,修改比对的参数,执行比对操作;
S404步骤,采用所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的NP、CPU系统,执行和管理所述S401、S402、S403步骤。
5.根据权利要求2所述的方法,其特征在于,包括S500异同位点处理步骤,具体包括:
S501步骤,所述逻辑定义,还包括定义所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片的逻辑单元,完成对于比对时所述关键字项的各个位点和所述表项中各表项行在的各个位点上数据的相同个数TW-YES和不同个数TW-NO的计算,包括计算概率、位点的位置;
S502步骤,针对表项中各表项行的所述TW-YES和TW-NO,并选择最大值或最小值,输出最大值或最小值和所在的表项行的行号;
S503步骤,针对S502步骤,循环清除所述最大值或最小值和所在的表项行的数据,重新执行S501步骤和S502步骤,直到所述TW-YES和TW-NO的值达到指定数值;
S504步骤,所述逻辑定义,还包括定义硬件逻辑,执行完成所述S501、S502、S503的步骤;和/或,
S505步骤,采用所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的NP、CPU系统,采用软件方式,执行所述S501、S502、S503的步骤;和/或,
S506步骤,采用所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的NP、CPU系统,对于所述表项中各表项行的所述TW-YES和TW-NO进行排序并输出。
6.根据权利要2所述的方法,其特征在于,包括S600滤波器过滤的步骤,具体包括:
S601步骤,在执行关键字项和表项行的比对时,覆盖、插入和删除不同位点和/或相同位点,并且记录覆盖、插入和删除不同位点的长度;和/或,
S602步骤,在执行关键字项和表项行的比对时,覆盖、插入、替换和删除指定长度的连续不同位点和/或指定长度的连续相同位点,并且记录覆盖、插入、替换和删除不同位点的长度;和/或,
S603步骤,在执行多次比对的之间,依据比对算法,对于所述表项和所述关键字项的数据,进行所述屏蔽位和指定位的掩码处理;和/或,
S604步骤,在执行多次比对的之间,依据比对算法,对于所述表项和所述关键字项的数据,进行覆盖、插入、替换、删除和过滤处理。
7.根据权利要求2所述的方法,其特征在于,包括S700表项映射步骤,具体包括:
S701步骤,在所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片之外,采用存储器建立存储区,与所述表项对应,复制所述表项和所述关键字项的数据和中间数据、结果数据到所述存储区,成为所述表项的映射;和/或,
S702步骤,同步所述表项和所述关键字项的操作和修改记录到所述映射;和/或,
S703步骤,存储所述映射到数据库,由所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的NP、CPU系统或所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片之外的NP、CPU系统进行处理。
8.根据权利要求2-7所述任一的方法,其特征在于,包括当子串为子串KU包括多子串KU1至多子串KUn,需要在母串中查找和比对KU1至KUn是否存在而不需要前后顺序的S800多子串间无序比对步骤,具体包括:
S801步骤,确定子串KU包括多子串KU1至多子串KUn,确定KU1至KUn无前后顺序;
S802步骤,确定在母串中的搜索范围,截取该范围的母串内容输入到一个指定的比对单元的表项,以KU1至KUn为循环范围,在每次循环时,依次输入KU1至KUn到所述指定的比对单元的关键字项,执行S300步骤,记录输出;
S803步骤,如果全部KU1至KUn都被匹配成功,则循环结束,输出KU匹配成功的数据,如果KU1至KUn中有匹配不成功的,则输出KU匹配失败,退出循环。
9.根据权利要求7所述的方法,其特征在于,包括S900二维比对步骤,具体包括:
S901步骤,根据比对的二维排列特征,建立二维母串S(xs,ys)和二维子串K(xk,yk)
S902步骤,输入二维母串到所述表项;
S903步骤,在所述二维子串K(xk,yk)中,依次复制一行数据到所述关键字项并进行比对,执行S500异同位点处理步骤,输出二维比对中各行比对的结果;
S904步骤,循环复制所述二维子串K(xk,yk)中的下一行数据到所述关键字项并进行比对,直到所述二维子串K(xk,yk)中全部行比对结束;
S905步骤,依据上述各行比对的结果,计算并输出所述二维子串在所述二维母串中的比对匹配率;
S906步骤,针对整个二维子串,整体左移或者右移,重新执行S903、S904、S905步骤,输出比对结果,直到二维子串移位结束。
10.根据权利要求8所述的方法,其特征在于,包括SA00多维比对步骤,具体包括:
SA01步骤,根据比对的三维排列特征,建立三维母串S(xs,ys,zs)和三维子串K(xk,yk,zk);
SA02步骤,对于所述三维母串和所述三维子串,建立针对第三维Z的降维步骤,以所述第三维Z为递归或循环次数,递归或循环S900步骤,当所述递归或循环SA00成功后,做第三维Z的递归或循环,直至递归或循环结束,输出比对结果;
SA03步骤,对于四维以上的母串和子串,以此类推,递归或循环SA01、SA02、SA03的步骤。
11.根据权利要求9所述的方法,其特征在于,包括SB00多比对步骤,具体包括:
SB01步骤,两个以上比对单元之间协同工作,其中每个比对单元的表项包括各自的宽度和深度,每个比对单元的关键字项包括各自的宽度和深度;和/或,
SB02步骤,每个比对单元包括各自的管理、比对算法、母串和子串、结构、计算算法和输出结果;和/或,
SB03步骤,一个比对单元的中间过程和/或输出作为另外一个比对单元的输入。
12.根据权利要求10所述的方法,其特征在于,包括SC00管理步骤,具体包括:
SC01步骤,采用所述比对单元中的NP、CPU完成修改、执行其工作步骤;和/或,
SC02步骤,采用所述比对单元之外的NP、CPU完成修改、执行其工作步骤;和/或,
SC03步骤,提供任务分解、合成,管理、协调所述比对单元之间的接入和断开,实现独立的比对单元之间连接扩充的支持的步骤;和/或,
SC04步骤,在所述比对单元做初始化时修改、记录一个以上所述比对单元中的所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片的逻辑单元和逻辑定义的步骤;和/或,
SC05步骤,在所述比对单元工作时,按照比对算法,修改、记录一个以上所述比对单元中所述FPGA芯片、可编程逻辑芯片和/或TCAM芯片的逻辑单元和逻辑定义的步骤;和/或,
SC06步骤,依据比对的属性,执行SC01至SC04的步骤;和/或,
SC07步骤,提供本方法与外部设备通信和协商的规则和协议的步骤。
13.一种超并行比对的系统,包括一个以上由比较器阵列和管理模块构成的比对单元;其中:
所述比对单元包括由一个以上FPGA芯片或一个以上可编程逻辑芯片或一个以上TCAM芯片以及它们的任意组合,构成包括表项和关键字项,所述任意组合包括在所述表项的宽度方向上和/或所述表项的深度方向上通过电路连接和/或逻辑定义,构成比较器阵列;
所述逻辑连接包括由NP、CPU和/或管理工作步骤定义的连接;
所述比较器阵列具体包括一个以上的宽度相等的表项行构成表项和一个以上关键字项,在所述管理模块的支撑下,在同一个时刻完成一个关键字项的数据与一个以上表项行的数据在行的方向上的逐位比对,并输出比对结果;
所述管理模块由所述比对单元中所包括的NP、CPU和/或管理工作步骤构成,还可以由所述比对单元之外的CPU和管理工作步骤构成;
所述一个以上比对单元之间的连接,包括一个比对单元的输出和另外一个比对单元的输入连接,连接方式包括电路连接或所述逻辑连接。
14.根据权利要求13所述的系统,其特征在于:
所述比对模块和所述管理模块支持包括字符格式和二进制格式的比对数据,在所述比对模块的表项的各行和所述关键字项进行同时刻并行比对,并输出于关键字项匹配的表项行的地址;
所述比对模块包括实现关键字项和表项中的一个以上的数据行进行同时刻并行比对,记录并输出与关键字项匹配的表项行的地址的电路和逻辑。
15.根据权利要求13所述的系统,其特征在于包括移位控制器,具体包括对于基于字符格式的数据左移或者右移指定长度的移位控制器,和对于二进制格式的数据进行左移或者右移指定长度的二进制位的移位控制器;所述表项和所述关键字项均包括所述移位控制器。
16.根据权利要求13所述的系统,其特征在于包括可重构逻辑,至少包括:表项和关键字项宽度可重构逻辑、表项深度可重构逻辑、表项行的屏蔽位可重构逻辑、关键字项的屏蔽位可重构逻辑;所述宽度和所述屏蔽位包括基于字符的个数和基于二进制位的个数。
17.根据权利要求13所述的系统,其特征在于包括异同位点处理器,具体包括在比对时,计算表项中各表项行的位点与关键字项中的对应位置的位点异同个数、记录异同位点的位置并输出。
18.根据权利要求13所述的系统,其特征在于所述比对模块包括滤波器电路或逻辑,提供基于硬件的包括对于关键字项和表项的覆盖、插入和删除不同位点的数据操作。
19.根据权利要求13所述的系统,其特征在于所述比对模块包括存储器、和表项映射的电路或逻辑,实现将FPGA芯片、可编程逻辑芯片和/或TCAM芯片中的存储复制到所述存储中的功能,所述存储器包括随机存储器、电子硬盘和机械硬盘。
20.根据权利要求13所述的系统,其特征在于所述系统包括主机结构和子卡结构,所述主机结构中包括扩展卡槽和一个以上所述比对模块和一个以上管理模块,所述子卡结构包括扩展卡和一个以上所述比对模块和一个以上管理模块,所述扩展卡槽和扩展卡能够连接,使得主机能够把所述扩展卡当成一个扩展的比对系统使用,所述扩展卡槽及扩展卡包括PCIE接口。
21.根据权利要求13所述的系统,其特征在于包括外部通信模块,具体至少包括以太网接口模块和/或USB接口模块和/或专用接口模块,所述以太网接口模块和/或USB接口模块和/或专用接口模块与所述管理模块连接;还包括带壳体、硬盘和显示器的独立设备,实现所述系统与外界的通信;或,还包括PCIE接口的计算机内置扩展卡式设备,与计算机内部PCIE接口连接或与主机结构的扩展卡槽连接。
CN202210311831.5A 2019-08-21 2019-08-21 一种超并行比对的方法与系统 Pending CN114780805A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210311831.5A CN114780805A (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910775554.1A CN110647665B (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统
CN202210311831.5A CN114780805A (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201910775554.1A Division CN110647665B (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统

Publications (1)

Publication Number Publication Date
CN114780805A true CN114780805A (zh) 2022-07-22

Family

ID=68990207

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910775554.1A Active CN110647665B (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统
CN202210311831.5A Pending CN114780805A (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910775554.1A Active CN110647665B (zh) 2019-08-21 2019-08-21 一种超并行比对的方法与系统

Country Status (1)

Country Link
CN (2) CN110647665B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528111B (zh) * 2022-02-17 2023-06-16 北京有竹居网络技术有限公司 用于数据召回的fpga芯片和数据召回方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963871B1 (en) * 1998-03-25 2005-11-08 Language Analysis Systems, Inc. System and method for adaptive multi-cultural searching and matching of personal names
US7739445B1 (en) * 2004-06-11 2010-06-15 Srinivasan Venkatachary Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device
CN101692651B (zh) * 2009-09-27 2014-12-31 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN102402611B (zh) * 2011-12-12 2013-07-24 盛科网络(苏州)有限公司 一种用tcam实现关键字快速查找并读表的方法
US9619584B1 (en) * 2013-08-02 2017-04-11 Marvell Israel (M.I.S.L.) Ltd. Parallel multi-lookup TCAM
CN109981464B (zh) * 2019-02-28 2021-03-26 中国人民解放军陆军工程大学 一种在fpga中实现的tcam电路结构及其匹配方法

Also Published As

Publication number Publication date
CN110647665B (zh) 2022-02-11
CN110647665A (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
Holley et al. Bifrost: highly parallel construction and indexing of colored and compacted de Bruijn graphs
Johnson et al. Billion-scale similarity search with GPUs
CN106797446B (zh) 基于存储器的历史搜索
JP3672242B2 (ja) パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体
US8843508B2 (en) System and method for regular expression matching with multi-strings and intervals
CN102184205B (zh) 基于可扩展精度混沌哈希的多模式串匹配方法
US20100082703A1 (en) Octree construction on graphics processing units
Braga et al. The solution space of sorting by DCJ
Deorowicz FQSqueezer: k-mer-based compression of sequencing data
Tavakoli Modeling genome data using bidirectional LSTM
Kumar et al. Fast and memory efficient approach for mapping NGS reads to a reference genome
CN110647665B (zh) 一种超并行比对的方法与系统
Urabe et al. Longest Lyndon substring after edit
Yang Design of fast connected components hardware
Bluthgen et al. A programmable processor for approximate string matching with high throughput rate
KR20010086028A (ko) 처리 회로 및 검색 프로세서 회로
CN103793522B (zh) 快速特征码扫描
CN115982310A (zh) 一种自带验证功能的链表生成方法及电子设备
Bautista et al. Bit-vector-based hardware accelerator for dna alignment tools
Cisłak et al. SOPanG 2: online searching over a pan-genome without false positives
US20030093391A1 (en) Combinatorial fitness function circuit
JP7422367B2 (ja) 近似文字列照合方法及び該方法を実現するためのコンピュータプログラム
Ghuman et al. Improved online algorithms for jumbled matching
Lala A CAM (Content Addressable Memory) Architecture for Codon Matching in DNA Sequences
Rao et al. String matching problems with parallel approaches-an evaluation for the most recent studies

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