一种支持并行运行算法的数据处理方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种支持并行运行算法的数据处理方法及装置。
背景技术
随着计算机网络的发展以及互联网应用、移动通信的普及,全球经济一体化进程的加快和社会经济及网络经济的快速发展,特别是云服务、电子商务、网上银行、电子支付等新型服务模式不断涌现,使各类客户的经济活动方式及其地域范围发生了巨大的变化,许多业务系统由原来的分布式处理方式转变为数据大集中处理的方式,这带来了用户数和业务的海量增长,以及业务的瞬时处理特点,要求相关信息系统配备高性能、高并发的支持多算法的签名验签等密码服务器,这些服务器将广泛应用在飞速发展的网上购物、手机银行、移动支付等金融业务中,满足“抢拍”或“秒杀”交易等的安全需求。
为了保护数据安全,一般采用多种密码算法对数据进行加解密。但是,随着电子支付、网上银行等业务的快速发展,各类应用系统和个人用户数量飞速增长,进行数据加解密、数字签名和验证签名的应用请求数量非常巨大。目前的信息系统和设备存在不能适应高速业务需求的问题,这将使信息系统发生运转困难、业务阻塞等严重问题。
发明内容
本发明要解决的技术问题是处理数据时如何进行算法的并行运算。
为了解决上述问题,本发明提供了一种支持并行运行算法的数据处理方法,包括:
接收算法处理进程对待处理的数据拆分而得到的作业包,每个作业包的包头中包括处理所述数据的命令字、所使用的算法的标识及该算法的基础数据标识;
算法分转模块根据作业包的包头中算法的标识将作业包分发给该算法对应的算法处理模块;一个算法对应一个或多个能并行的算法处理模块;
算法处理模块根据作业包的包头中的基础数据标识获取相应的基础数据,根据该作业包的包头中的命令字处理该作业包中的数据;
数据反馈模块将处理后的作业包返回给相应的算法应用进程。
可选地,算法处理模块根据作业包的包头中的命令字处理该作业包中的数据的步骤包括:
将作业包的包头中命令字对应的操作解析为多个处理子命令;获取处理本作业包所需要的算法状态;将该作业包中的数据进行分组,每个分组中数据的长度小于或等于本算法处理模块一次所能处理的数据量;
将该作业包的包头作为一个数据项放入本算法处理模块对应的作业包同步队列,将一个作业包各分组的数据、各处理子命令、算法状态、及获取的基础数据作为一个数据项放入本算法处理模块对应的算法运算队列;
对算法运算队列中的各数据项依次按照本算法处理模块对应的算法进行运算,运算完一个数据项中所有分组后,将该数据项的运算结果放入本算法处理模块对应的处理后数据队列;
从所述作业包同步队列和处理后数据队列中各取出一个数据项组合为作业包,放入本算法处理模块对应的处理后作业包队列;
所述作业包同步队列、算法运算队列及处理后数据队列均为先进先出队列。
可选地,每个作业包的包头中还包括上行数据存储区空间标识;所述上行数据存储区空间与算法应用进程一一对应;
所述数据反馈模块将处理后的作业包返回给相应的算法应用进程的步骤包括:
所述数据反馈模块轮询各个算法处理模块的处理后作业包队列,若处理后作业包队列中有作业包,则取出该作业包,根据该作业包的包头中的上行数据存储区空间标识,将作业包复制到相应的上行数据存储区空间。
可选地,接收算法处理进程对待处理的数据拆分而得到的作业包的步骤包括:
接口模块轮询各个下行数据存储区空间中是否有作业包,如果有作业包且本接口模块对应的分转队列有空间,则将所述下行数据存储区空间中的作业包复制到分转队列中;每个下行数据存储区空间对应于一个或多个算法应用进程,每个算法应用进程唯一对应于一个数据存储区空间;所述下行数据存储区空间用于保存所对应的算法应用进程拆分好的作业包;所述分转队列与所述接口模块一一对应,与所述算法分转模块也一一对应。
可选地,所述算法的标识包括:
算法类型及地址;
所接收的作业包包头中的算法的标识中,仅有算法类型;
算法分转模块根据作业包的包头中算法的标识将作业包分发给相应的算法处理模块的步骤包括:
算法分转模块查询本算法分转模块对应的分转队列是否为空;如果分转队列中有作业包则读取该作业包的包头,根据包头中算法的标识中的算法类型,在相应类型的算法对应的算法处理模块中,依据预定策略选择一个算法处理模块,将所选择算法处理模块的地址填写在该作业包的包头中算法的标识里,并将作业包复制到相应算法处理模块对应的算法预处理队列;
所述算法预处理队列与所述算法处理模块一一对应;所述算法分转模块包括一个或多个;各算法分转模块分别对应一个或多个算法预处理队列;任意两个算法分转模块对应的算法预处理队列彼此不同,或至少部分相同。
本发明还提供了一种支持并行运行算法的数据处理装置,包括:
接口模块,用于接收算法处理进程对待处理的数据拆分而得到的作业包,每个作业包的包头中包括处理所述数据的命令字、所使用的算法的标识及该算法的基础数据标识;
算法分转模块,用于根据作业包的包头中算法的标识,将作业包分发给该算法对应的算法处理模块;一个算法对应一个或多个能并行的算法处理模块;
算法处理模块,用于根据作业包的包头中的基础数据标识获取相应的基础数据,根据该作业包的包头中的命令字处理该作业包中的数据;
数据反馈模块,用于将处理后的作业包返回给相应的算法应用进程。
可选地,所述算法处理模块包括:
预处理单元,用于将作业包的包头中命令字对应的操作解析为多个处理子命令;获取处理本作业包所需要的算法状态;将该作业包中的数据进行分组,每个分组中数据的长度小于或等于本算法处理模块一次所能处理的数据量;将该作业包的包头作为一个数据项放入本算法处理模块对应的作业包同步队列,将一个作业包各分组的数据、各处理子命令、算法状态、及获取的基础数据作为一个数据项放入本算法处理模块对应的算法运算队列;
运算单元,用于对算法运算队列中的各数据项依次按照本算法处理模块对应的算法进行运算,运算一个数据项中所有分组后,将该数据项的运算结果放入本算法处理模块对应的处理后数据队列;
作业包重组单元,用于从所述作业包同步队列和处理后数据队列中各取出一个数据项,组合为作业包,放入本算法处理模块对应的处理后作业包队列;
所述作业包同步队列、算法运算队列及处理后数据队列均为先进先出队列。
可选地,每个作业包的包头中还包括上行数据存储区空间标识;所述上行数据存储区空间与算法应用进程一一对应;
所述数据反馈模块将处理后的作业包返回给相应的算法应用进程是指:
所述数据反馈模块轮询各个算法处理模块的处理后作业包队列,若处理后作业包队列中有作业包,则取出该作业包,根据该作业包的包头中的上行数据存储区空间标识,将作业包复制到相应的上行数据存储区空间。
可选地,接口模块接收算法处理进程对待处理的数据拆分而得到的作业包是指:
接口模块轮询所对应的下行数据存储区中各个下行数据存储区空间中是否有作业包,如果有作业包且本算法分转模块对应的分转队列有空间,则将所述下行数据存储区空间中的作业包复制到分转队列中;每个下行数据存储区空间对应于一个或多个算法应用进程,每个算法应用进程唯一对应于一个数据存储区空间;所述下行数据存储区空间用于保存所对应的算法应用进程拆分好的作业包;所述分转队列与所述接口模块一一对应,与所述算法分转模块也一一对应;所述接口模块与所述下行数据存储区一一对应。
可选地,所述算法的标识包括:
算法类型及地址;
接口模块所接收的作业包包头中的算法的标识中,仅有算法类型;
算法分转模块根据作业包的包头中算法的标识将作业包分发给相应的算法处理模块是指:
算法分转模块查询本算法分转模块对应的分转队列是否为空;如果分转队列中有作业包则读取该作业包的包头,根据包头中算法的标识中的算法类型,在相应类型的算法对应的算法处理模块中,依据预定策略选择一个算法处理模块,将所选择算法处理模块的地址填写在该作业包的包头中算法的标识里,并将作业包复制到相应算法处理模块对应的算法预处理队列;
所述算法预处理队列与所述算法处理模块一一对应;所述算法分转模块包括一个或多个;各算法分转模块分别对应一个或多个算法预处理队列;任意两个算法分转模块对应的算法预处理队列彼此不同,或至少部分相同。
本发明的技术方案能够在处理数据时实现多种算法的高效并行运算,可应用于多芯片或多IP核实现多种算法并行运算、单芯片实现多算法的并行运算、单一算法并行运算、单一算法多IP核运算、多信道的通信编码算法并行执行等应用场景,可满足大数据中心的海量用户和瞬时的海量业务需求,适应“抢拍”或“秒杀”交易等为代表的云服务模式而产生的海量操作、大规模的并发操作,提高处理性能。
附图说明
图1为实施例一的数据处理方法的流程示意图;
图2为实施例二中算法处理模块的示意框图;
图3为实施例二中第一个例子的系统示意框图;
图4为实施例二中第二个例子的系统示意框图;
图5为实施例二中第三个例子的系统示意框图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。所举实例只用于解释本发明,并非用于限定本发明的范围。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一,一种支持并行运行算法的数据处理方法,如图1所示,包括:
接收算法处理进程对待处理的数据拆分而得到的作业包,每个作业包的包头中包括处理所述数据的命令字、所使用的算法的标识及该算法的基础数据标识;
算法分转模块根据作业包的包头中算法的标识将作业包分发给该算法对应的算法处理模块;一个算法对应一个或多个能并行的算法处理模块;
算法处理模块根据作业包的包头中的基础数据标识获取相应的基础数据,根据该作业包的包头中的命令字处理该作业包中的数据;
数据反馈模块将处理后的作业包返回给相应的算法应用进程。
本实施例中,首先算法应用服务器中的各算法应用进程会将待处理的数据拆分为多个作业包,并在每个作业包的包头中携带处理所述数据的命令字、所使用的算法的标识及该算法的基础数据标识。所述作业包可包含固定长度的包头和可变长度的数据区,作业包的包头采用固定长度,如定义为16字节;当本实施例的方法应用在不同系统中时,可以由系统设计者自定义包头的长度。作业包的数据区长度采用固定长度范围,即数据区的长度有最小长度和最大长度限制,如128~2K字节内的任意值;可以设置成算法处理模块一次性处理数据分组长度的整数倍,不足的数据可以由算法应用进程以冗余字节补足。算法应用进程还可以在作业包的包头中携带作业包中数据区的长度。
所述算法的基础数据标识,是指在完成本次算法操作所需要的基本数据或者基本数据所存放的内部地址;所述命令字对应于在算法处理模块中完成的一次算法操作;所述算法处理模块可以与应用本实施例方法的系统中的算法核一一对应。
其中基础数据标识的实现形式总体包括两大类的实现方法:
第一类:直接将所有基础数据直接写入作业包内,具体应用时根据具体系统进行数据结构设计,如加密操作,可以将初始向量、加密的数据以及加密后数据的地址等按数据结构的方式写入作业包,算法模块根据数据结构和目前程序执行的状态直接在作业包中读取;
第二类:作业包中只包含基础数据在算法处理模块中的地址偏移和要进行处理的数据,算法处理模块根据相应的数据结构定义,从作业包中获取相应数据的地址,在算法处理模块的存储空间中获取具体的数据。
所述算法处理模块各实现一种类型的算法;所有的算法处理模块均可以并行、独立运行。
本实施例的一种实施方式中,算法处理模块根据作业包的包头中的命令字处理该作业包中的数据的步骤具体可以包括:
将作业包的包头中命令字对应的操作解析为多个处理子命令,比如将加密操作解析成密钥初始化、密钥变换、取数据、数据处理、获取结果;获取处理本作业包所需要的算法状态;将该作业包中的数据分组,每个分组中数据的长度小于或等于本算法处理模块一次所能处理的数据量;
将该作业包的包头作为一个数据项放入本算法处理模块对应的作业包同步队列,将一个作业包各分组的数据、各处理子命令、算法状态、及获取的基础数据作为一个数据项放入本算法处理模块对应的算法运算队列;
对算法运算队列中的各数据项依次按照本算法处理模块对应的算法进行运算,运算完一个数据项中所有分组后,将该数据项的运算结果放入本算法处理模块对应的处理后数据队列;
从所述作业包同步队列和处理后数据队列中各取出一个数据项(作业包同步队列、算法运算队列及处理后数据队列均为先进先出队列,因此从两个队列取出的数据项必然属于同一个作业包),组合为作业包,放入本算法处理模块对应的处理后作业包队列。
本实施方式中,所述算法运算队列、作业包同步队列、处理后数据队列和处理后作业包队列均与算法处理模块一一对应。子命令、算法状态、基础数据、分组后的数据可以线性方式组织,也可将分为多个并行的队列进行组织使用。
该实施方式的一个备选方案中,所述方法还可以包括:
算法应用进程在每个作业包的包头中携带本算法应用进程对应的上行数据存储区空间标识;
所述数据反馈模块将处理后的作业包返回给相应的算法应用进程的步骤具体可以包括:
所述数据反馈模块轮询各个算法处理模块的处理后作业包队列,若处理后作业包队列中有作业包,则取出该作业包,根据该作业包包头中的上行数据存储区空间标识,将作业包复制到相应的上行数据存储区空间,从而完成作业包的反馈。
本实施方式中,所述上行数据存储区是算法应用进程对应的数据返回通道,一个上行数据存储区中可以有一个或多个上行数据存储区空间;算法应用进程可以从对应的上行数据存储区空间中获取处理后的作业包。上行数据存储区空间的个数为固定值且标识固定,与算法应用进程的个数相同;算法应用进程对上行数据存储区空间的读取采用一一对应的方式进行,任何其他算法应用进程不能读取非该算法应用进程对应的上行数据存储区空间的数据。
本实施例的一种实施方式中,接收算法处理进程对待处理的数据拆分而得到的作业包的步骤具体可以包括:
接口模块轮询各个下行数据存储区空间中是否有作业包,如果有作业包且本接口模块对应的分转队列有空间,则将所述下行数据存储区空间中的作业包复制到分转队列中;每个下行数据存储区空间对应于一个或多个算法应用进程,每个算法应用进程唯一对应于一个数据存储区空间;所述下行数据存储区空间用于保存所对应的算法应用进程拆分好的作业包;所述分转队列与所述接口模块一一对应,与所述算法分转模块也一一对应。
在复制时可以但不限于通过DMA(直接内存访问)方式复制。
一个下行数据存储区中包括多个下行数据存储区空间;各下行数据存储区中下行数据存储区空间的个数n由应用该方法的具体系统确定,可以为一个,也可以为多个。所述下行数据存储区可以有一个或多个,所述接口模块也可以有一个或多个,与所述下行数据存储区一一对应,用于轮询所对应的下行数据存储区中各下行数据存储区空间中是否有作业包。
算法应用进程拆分好作业包后将其写入本算法应用进程对应的下行数据存储区空间中。作业包写入下行数据存储区空间的操作采用阻塞的方式,以保证作业包写入的正确性和完整性。
所述分转队列可以为一个或多个;如果存在多个分转队列,则每个分转队列固定对应一个算法分转模块,且固定对应一个接口模块。
该实施方式的一种备选方案中,所述算法的标识包括:
算法类型及地址;
所接收的作业包包头中的算法的标识中,仅有算法类型;
算法分转模块根据作业包的包头中算法的标识将作业包分发给相应的算法处理模块的步骤具体可以包括:
算法分转模块查询本算法分转模块对应的分转队列是否为空;如果分转队列中有作业包则读取该作业包的包头,根据包头中算法的标识中的算法类型,在相应类型的算法对应的算法处理模块中,依据预定策略选择一个算法处理模块,将所选择算法处理模块的地址填写在该作业包的包头中算法的标识里,并将作业包复制到相应算法处理模块对应的算法预处理队列;
所述算法预处理队列与所述算法处理模块一一对应;所述算法分转模块包括一个或多个;各算法分转模块分别对应一个或多个算法预处理队列;任意两个算法分转模块对应的算法预处理队列彼此不同,或至少部分相同。
比如包括算法分转模块1~4,算法预处理队列1~20;假设算法分转模块1对应算法预处理队列1~10,算法分转模块2对应算法预处理队列11~20,即:算法分转模块1和算法分转模块2对应的算法预处理队列彼此不同;假设算法分转模块3也对应于算法预处理队列1~10,即:算法分转模块1和算法分转模块3对应的算法预处理队列全部相同;假设算法分转模块4对应于算法预处理队列6~15,则算法分转模块1/算法分转模块2/算法分转模块3和算法分转模块4对应的算法预处理队列均是部分相同,其中算法分转模块1、3中对应的算法预处理队列中的6~10与算法分转模块4中的部分算法预处理队列相同,而算法分转模块2中对应的算法预处理队列中的11~15与算法分转模块4中的部分算法预处理队列相同。实现时可任意组合算法分转模块和算法预处理队列之间的对应关系。
由于算法预处理队列和算法处理模块是一一对应的,因此这也就意味着算法分转模块和算法处理模块之间可以交叉管理,也可以互相不交叉进行管理。
所述预定策略可以但不限于为算法处理模块的均衡策略;算法预处理队列的个数固定,与算法处理模块的个数相同且一一对应。算法处理模块轮询对应的算法预处理队列来获取待处理的作业包。
该备选方案中,算法处理过程采用三级流水方式缓冲,所有环节之间均可以采用流水方式并行处理。
每一类型的算法可以对应一个或多个算法处理模块,每个算法处理模块都可以独立完成该类型算法的处理。每一个算法处理模块所对应的算法的标识包括算法类型和地址;不同的算法类型之间,地址可以重复,但一个算法类型中地址是唯一的,比如类型A中的地址包括1、2,类型B中的地址包括1、2、3,因此所得到的算法的标识能够唯一代表一个算法处理模块。这样可以为各算法类型配置多个算法处理模块,而且当算法处理模块较多时,不需要太多字节就能够唯一表示一个算法处理模块。本实施方式中,算法应用进程拆分作业包后仅填写算法的标识中的算法类型;在其它实施方式中,算法的标识中的地址也可以由算法应用进程在拆分后填写。
当作业包的包头中包括数据区的长度时,在将作业包复制到算法预处理队列的步骤中,可以是根据作业包的包头中的作业包长度字段将相应长度的数据复制到该算法预处理队列。
本实施例的一种实施方式中,所述方法还可以包括:
算法应用进程在每个作业包的包头中携带包序列号,所述包序列号用于表示本作业包在拆分前的数据中所处的位置;
所述算法应用进程获取处理后的作业包后,根据作业包的包头中的包序列号将作业包重组为数据。
算法应用进程还可以在作业包的包头中携带本应用进程的标识;所述包序列号和应用进程的相关标识在算法处理过程中可以使用也可以不进行使用,但不进行任何修改,是提供给应用进程对返回的处理完成后的数据进行调度和操作的相关信息。
实施例二、一种支持并行运行算法的数据处理装置,包括:
接口模块,用于接收算法处理进程对待处理的数据拆分而得到的作业包,每个作业包的包头中包括处理所述数据的命令字、所使用的算法的标识及该算法的基础数据标识;
算法分转模块,用于根据作业包的包头中算法的标识,将作业包分发给该算法对应的算法处理模块;一个算法对应一个或多个能并行的算法处理模块;
算法处理模块,用于根据作业包的包头中的基础数据标识获取相应的基础数据,根据该作业包的包头中的命令字处理该作业包中的数据;
数据反馈模块,用于将处理后的作业包返回给相应的算法应用进程。
所述接口模块可以包括接口总线、接口处理程序等,用以完成和算法应用服务器中算法应用进程之间的数据交换。
本实施例的一种实施方式中,所述算法处理模块如图2所示,包括:
预处理单元,用于将作业包的包头中命令字对应的操作解析为多个处理子命令;获取处理本作业包所需要的算法状态;将该作业包中的数据进行分组,每个分组中数据的长度小于或等于本算法处理模块一次所能处理的数据量;将该作业包的包头作为一个数据项放入本算法处理模块对应的作业包同步队列,将一个作业包各分组的数据、各处理子命令、算法状态、及获取的基础数据作为一个数据项放入本算法处理模块对应的算法运算队列;
运算单元,用于对算法运算队列中的各数据项依次按照本算法处理模块对应的算法进行运算,运算一个数据项中所有分组后,将该数据项的运算结果放入本算法处理模块对应的处理后数据队列;
作业包重组单元,用于从所述作业包同步队列和处理后数据队列中各取出一个数据项,组合为作业包,放入本算法处理模块对应的处理后作业包队列;
所述作业包同步队列、算法运算队列及处理后数据队列均为先进先出队列。本文中提及的其他队列也可以采用先进先出队列实现。
本实施方式的一种备选方案中,每个作业包的包头中还包括上行数据存储区空间标识;所述上行数据存储区空间与算法应用进程一一对应;
所述数据反馈模块将处理后的作业包返回给相应的算法应用进程是指:
所述数据反馈模块轮询各个算法处理模块的处理后作业包队列,若处理后作业包队列中有作业包,则取出该作业包,根据该作业包的包头中的上行数据存储区空间标识,将作业包复制到相应的上行数据存储区空间。
本实施例的一种实施方式中,接口模块接收算法处理进程对待处理的数据拆分而得到的作业包可以是指:
接口模块轮询所对应的下行数据存储区中各个下行数据存储区空间中是否有作业包,如果有作业包且本算法分转模块对应的分转队列有空间,则将所述下行数据存储区空间中的作业包复制到分转队列中;每个下行数据存储区空间对应于一个或多个算法应用进程,每个算法应用进程唯一对应于一个下行数据存储区空间;所述下行数据存储区空间用于保存所对应的算法应用进程拆分好的作业包;所述分转队列与所述接口模块一一对应,与所述算法分转模块也一一对应;所述接口模块与所述下行数据存储区一一对应。
本实施方式的一种备选方案中,所述算法的标识包括:
算法类型及地址;
接口模块所接收的作业包包头中的算法的标识中,仅有算法类型;
算法分转模块根据作业包的包头中算法的标识将作业包分发给相应的算法处理模块是指:
算法分转模块查询本算法分转模块对应的分转队列是否为空;如果分转队列中有作业包则读取该作业包的包头,根据包头中算法的标识中的算法类型,在相应类型的算法对应的算法处理模块中,依据预定策略选择一个算法处理模块,将所选择算法处理模块的地址填写在该作业包包头中算法的标识里,并将作业包复制到相应算法处理模块对应的算法预处理队列;
所述算法预处理队列与所述算法处理模块一一对应;所述算法分转模块包括一个或多个;各算法分转模块分别对应一个或多个算法预处理队列;任意两个算法分转模块对应的算法预处理队列彼此不同,或至少部分相同。
本实施例中,下行数据存储区和上行数据存储区均为算法应用服务器计算机中的存储空间。
下面用几个具体例子说明本实施例。这几个例子中,假设有算法1~L,其中算法1对应a个算法处理模块(算法处理模块1-1~1-a),……,算法L对应b个算法处理模块(算法处理模块L-1~L-b)。当然,a和b也可以为1。各例子中的算法处理模块同图2所示。
第一个例子如图3所示。
包括一个接口模块,从一个下行数据存储区的M个下行数据存储区空间中接收作业包,放入一个分转队列中;
一个算法分转模块从该分转队列获取作业包,根据预定策略放入多个与算法处理模块一一对应的算法预处理队列1-1~1-a,……,L-1~L-b中;
各算法处理模块1-1~1-a,……,L-1~L-b从对应的算法预处理队列中获取作业包,按照对应的算法进行处理;数据反馈模块从多个算法处理模块获取处理完成的作业包,相应放入上行数据存储区的上行数据存储区空间1~N中。
第二个例子如图4所示。
包括多个接口模块1~P,与下行数据存储区1~P一一对应;其中下行数据存储区1包括下行数据存储区空间11~M1,……,下行数据存储区P包括下行数据存储区空间1P~MP;
各接口模块与分转队列1~P一一对应,将获取的作业包放入对应的分转队列中;
多个算法分转模块1~P也与分转队列1~P一一对应,从对应的分转队列获取作业包,根据预定策略放入多个与算法处理模块一一对应的算法预处理队列中;其中,算法分转模块1~P都连接各算法预处理队列,即P个算法分转模块复用所有的算法预处理队列;
各算法处理模块从对应的算法预处理队列中获取作业包,按照对应的算法进行处理;
多个数据反馈模块1~Q都从各算法处理模块获取处理完成的作业包,即多个算法处理模块复用Q个数据反馈模块;
所述数据反馈模块1~Q与上行数据存储区1~Q一一对应;其中上行数据存储区1包括上行数据存储区空间11~N1,……,上行数据存储区Q包括上行数据存储区空间1Q~NQ;所述数据反馈模块将完成处理的作业包放入对应的上行数据存储区的上行数据存储区空间中。
其中,不同的接口模块、数据反馈模块可能对应相同的计算机接口,也可能对应不同的计算机接口,但是每个接口模块均具有自己独立的下行数据缓冲区、每个数据反馈模块均具有自己独立的上行数据缓冲区。
第三个例子如图5所示。
与第二个例子的不同在于,P个算法分转模块各自对应的算法预处理队列互不相同,各算法预处理队列分别对应一个算法分转模块;比如算法分转模块1对应算法预处理队列1-1~1-a1,……,L-1~L-b1,……,算法分转模块P对应算法预处理队列1-ai~1-a,……,L-bj~L-b;算法预处理队列与算法处理模块仍然是一一对应的关系;数据反馈模块1~Q也是各自对应的算法处理模块互不相同,各算法处理模块分别对应一个数据反馈模块。
该例子中算法分转模块与算法预处理队列是“一对多”的关系,可根据算法处理模块的处理速度快慢决定“一对多”时对应的算法预处理队列的数量;数据反馈模块与算法处理模块也是“一对多”的关系,可根据数据反馈模块的处理速度快慢决定“一对多”时对应的算法处理模块的数量。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。