发明内容
本申请的目的在于提出一种基于RDMA引擎的数据处理方法及其系统、计算机可读存储介质、电子设备,以解决RDMA引擎的各流水线之间负载不均衡的问题。
本申请实施例提供一种基于RDMA引擎的数据处理方法,所述RDMA引擎包括输入模块和Cache模块,所述Cache模块包括多个L1-Cache以及1个L2-Cache;
所述方法包括:
所述输入模块接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L2-Cache接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
本申请实施例还提供一种基于RDMA引擎的数据处理方法,所述RDMA引擎包括输入模块和Cache模块,所述Cache模块包括多个L1-Cache、多个L2-Cache以及1个L3-Cache;
所述方法包括:
所述输入模块接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L3-Cache接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若存在,则所述L3-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若不存在,则所述L3-Cache将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L2-Cache的关联关系;
所述L2-Cache接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
本申请实施例还提供一种基于RDMA引擎的数据处理方法,所述RDMA引擎包括输入模块和Cache模块,所述Cache模块包括多个L1Cache、多个L2-Cache、多个L3-Cache以及1个L4-Cache;
所述输入模块接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L4-Cache接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L4-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,若存在,则所述L4-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,若不存在,则所述L4-Cache将所述预取命令发送给当前负载最小的一个L3-Cache,并在所述L4-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L3-Cache的关联关系;
所述L3-Cache接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若存在,则所述L3-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若不存在,则所述L3-Cache将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L2-Cache的关联关系;
所述L2-Cache接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理;
本申请实施例还提供一种基于RDMA引擎的数据处理系统,包括输入模块和Cache模块,所述Cache模块包括多个L1-Cache以及1个L2-Cache;
所述输入模块,用于接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L2-Cache,用于接收所述预取命令,根据所述预取命令包含的所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,当存在时,将与所述队列对编号和PCIE设备的功能id绑定的流水线号发送给所述输入模块,当不存在时,将当前负载最小的一个L1-Cache的流水线号发送给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块,还用于接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
本申请实施例还提供一种基于RDMA引擎的数据处理系统,包括输入模块和Cache模块,所述Cache模块至少包括多个L2-Cache以及1个L3-Cache;
所述输入模块,用于接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L3-Cache,用于接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当存在时,将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当不存在时,将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L2-Cache的关联关系;
所述L2-Cache,用于接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块,用于接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
本申请实施例还提供一种基于RDMA引擎的数据处理系统,其特征在于,包括输入模块和Cache模块,所述Cache模块包括多个L1Cache、多个L2-Cache、多个L3-Cache以及1个L4-Cache;
所述输入模块,用于接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L4-Cache,用于接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L4-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,当存在时,将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,当不存在时,将所述预取命令发送给当前负载最小的一个L3-Cache,并在所述L4-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L3-Cache的关联关系;
所述L3-Cache,用于接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当存在时,将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当不存在时,将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L2-Cache的关联关系;
所述L2-Cache,用于接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块,用于接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现根据本申请实施例所述的基于RDMA引擎的数据处理方法。
本申请实施例还提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现根据本申请实施例所述的基于RDMA引擎的数据处理方法。
以上描述的本申请实施例至少具有以下有益效果:
通过在多流水线的RDMA引擎中,将正在处理的各业务流和流水线之间的绑定关系记录下来,保证同一时刻同一条业务流的命令不会进入不同的流水线进行处理,并且,当一条新的业务流进入流水线处理时选择负载最小的一条流水线进行处理,从而实现RDMA引擎中各流水线之间的负载均衡,使RDMA引擎的业务能够充分利用各个流水线的处理能力,从而使RDMA引擎的业务带宽更高且更平稳。
本申请实施例的其它特征和优点将在随后的说明书中阐述。
具体实施方式
附图的详细说明意在作为本申请的当前优选实施例的说明,而非意在代表本申请能够得以实现的仅有形式。应理解的是,相同或等同的功能可以由意在包含于本申请的范围之内的不同实施例完成。
实施例一
如图1所示,本申请实施例一提供一种基于RDMA引擎的数据处理方法,所述RDMA引擎包括输入模块和Cache模块,如图2所示,所述Cache模块包括多个L1-Cache以及1个L2-Cache,多个L1-Cache共享1个L2-Cache;
参阅图1,本实施例的方法包括以下的步骤:
步骤S11、所述输入模块接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
具体而言,所述输入模块接收门铃doorbell发送的操作命令,所述操作命令包含队列对编号(QPN,Queuepairnumber)和PCIE设备的功能id(Functionid),也可以包含其它参数;所述预取命令用于访问所述Cache模块以预先获取队列管理上下文信息(QPC,Queuepaircontext),以减少所述Cache模块发生miss时给流水线带来的影响;
步骤S12、所述L2-Cache接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
具体而言,图3为2级Cache的RDMA引擎流水线的示意图,图3的RDMA引擎包括2组流水线,每组流水线包含一条发送侧流水线和一条接收侧流水线,以图3为例介绍本实施例方法的步骤S12,如图3所示,步骤S11中的所述输入模块可以是发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT将其生成的所述预取命令发送给Cache模块,Cache模块的L2-Cache为最大一级Cache,直接对所述预取命令进行处理,提取所述预取命令中的队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,所述L2-Cache中设置有信息存储结构,所述L2-Cache的信息存储结构可以但不限于是数据表格的形式,其用于记录与所述L2-Cache对应的多个L1-Cache的流水线号与{队列对编号和PCIE设备的功能id}之间的绑定关系;
如果所述L2-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则说明对应的队列管理上下文信息已经被分配到某个L1-Cache里面,则将与所述队列对编号和PCIE设备的功能id绑定的流水线号发送给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,但需理解的是,此时队列管理上下文信息可能在也可能不在这个L1-Cache里面,因为可能有其他的命令将队列管理上下文信息从该某个L1-Cache中取出,所述队列管理上下文信息是根据队列处理情况实时更新的,流水线在处理完命令后会将更新后的队列管理上下文信息回写到L1-Cache中,流水线在处理下一个命令时会继续从L1-Cache中获取队列管理上下文信息;
如果所述L2-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则说明对应的队列管理上下文信息不在任何一个L1-Cache里面,此时,所述L2-Cache获取与其对应的多个L1-Cache的流水线的当前负载,将当前负载最小的一个L1-Cache的流水线号返回给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,并在所述L2-Cache的信息存储结构中记录当前负载最小的一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
其中,流水线号例如是图3中的TXP0、RXP0;
步骤S13、所述输入模块接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
本实施例的基于RDMA引擎的数据处理方法,通过在多流水线的RDMA引擎中,将正在处理的各业务流和流水线之间的绑定关系记录下来,保证同一时刻同一条业务流的命令不会进入不同的流水线进行处理,并且,当一条新的业务流进入流水线处理时选择负载最小的一条流水线进行处理,从而实现RDMA引擎中各流水线之间的负载均衡,使RDMA引擎的业务能够充分利用各个流水线的处理能力,从而使RDMA引擎的业务带宽更高且更平稳。
可选的,在一些实施例中,所述L2-Cache的信息存储结构,用于记录共享所述L2-Cache的多个L1-Cache的流水线号与各个队列对编号和PCIE设备的功能id之间的绑定关系,以及记录共享所述L2-Cache的多个L1-Cache的流水线的当前负载。
具体而言,共享所述L2-Cache的多个L1-Cache的流水线的当前负载可以通过累计L1-Cache的命令处理数量来表征,当记录一个待处理命令时,流水线对应的命令个数计数器计数加1,当完成一个待处理命令的处理后,流水线对应的命令个数计数器计数减1。
可选的,在一些实施例中,所述方法还包括:
当所述队列管理上下文信息被与其对应的L1-Cache踢出至所述L2-Cache,且对应的流水线上没有与所述队列对编号和PCIE设备的功能id所对应的操作命令时,所述L2-Cache将所述L2-Cache的信息存储结构中的该L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系删除。
具体而言,每当任一个队列管理上下文信息被对应的L1-Cache踢出到L2-Cache时(即队列管理上下文信息从L1Cache中搬移至L2-Cache中),或者流水线处理完一个命令去减绑定信息表的命令个数计数器时,L2-Cache检查并判断对应的{队列对编号和PCIE设备的功能id}和流水线号的绑定信息表的命令个数计数器是否为0,如果为0并且对应的队列管理上下文信息已经被该L1-Cache踢出,则说明该流水线上已经没有对应的{队列对编号和PCIE设备的功能id}所对应的业务,此时,将所述L2-Cache记录的{队列对编号和PCIE设备的功能id}清除,以便于下次相同{队列对编号和PCIE设备的功能id}再次进来处理时,能够根据流水线的负载重新选择一个流水线,而不是总是到固定的流水线。
可选的,在一些实施例中,所述方法还包括:
若所述L2-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则所述L2-Cache访问内存以获取队列管理上下文信息,并将所述队列管理上下文信息发送至所述当前负载最小的一个L1-Cache。
具体而言,若所述L2-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,也即队列管理上下文信息不在L1-Cache或L2-Cache中,需要访问内存以获取对应的队列管理上下文信息。
可选的,在一些实施例中,所述操作命令为接收命令或发送命令,所述接收命令用于接收待处理数据,所述发送命令用于发送待处理数据。
实施例二
本申请的实施例二提供一种基于RDMA引擎的数据处理方法,所述RDMA引擎包括输入模块和Cache模块,如图4所示,所述Cache模块包括多个L1-Cache、多个L2-Cache以及1个L3-Cache;
所述方法包括:
步骤S21、所述输入模块接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
具体而言,所述输入模块接收门铃doorbell发送的操作命令,所述操作命令包含队列对编号(QPN,Queuepairnumber)和PCIE设备的功能id(Functionid),也可以包含其它参数;所述预取命令用于访问所述Cache模块以预先获取队列管理上下文信息(QPC,Queuepaircontext),以减少所述Cache模块发生miss时给流水线带来的影响;
步骤S22、所述L3-Cache接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若存在,则所述L3-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若不存在,则所述L3-Cache将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中记录所述队列对编号和PCIE设备的功能id与所述当前负载最小的一个L2-Cache的关联关系。
具体而言,图5为3级Cache的RDMA引擎流水线的示意图,图5的RDMA引擎包括4组流水线,每组流水线包含一条发送侧流水线和一条接收侧流水线,以图5为例介绍本实施例方法的步骤S12;在图5中,L2Cache接收所述预取命令由L3-Cache发送的,发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT将其生成的所述预取命令发送给Cache模块,Cache模块的L3-Cache为最大一级Cache,直接对所述预取命令进行处理,提取所述预取命令中的队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,所述L3-Cache中设置有信息存储结构,所述L3-Cache的信息存储结构可以但不限于是数据表格的形式,其用于记录与所述L3-Cache对应的多个L2-Cache与{队列对编号和PCIE设备的功能id}之间的绑定关系;
如果所述L3-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,则说明对应的队列管理上下文信息已经被分配到某个L2-Cache里面,则所述L3-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,之后所述L2-Cache接收所述预取命令;
如果所述L3-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,则说明对应的队列管理上下文信息不在任何一个L2-Cache里面,此时,所述L3-Cache获取与其对应的多个L2-Cache的当前负载,将当前负载最小的一个L2Cache的流水线号发送给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,并在所述L3-Cache的信息存储结构中记录当前负载最小的一个L2Cache与所述队列对编号和PCIE设备的功能id之间的绑定关系;
步骤S23、所述L2-Cache接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
具体而言,Cache模块的L2-Cache对所述预取命令进行处理,提取所述预取命令中的队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,所述L2-Cache中设置有信息存储结构,所述L2-Cache的信息存储结构可以但不限于是数据表格的形式,其用于记录与所述L2-Cache对应的多个L1-Cache的流水线号与{队列对编号和PCIE设备的功能id}之间的绑定关系;
如果所述L2-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则说明对应的队列管理上下文信息已经被分配到某个L1-Cache里面,则将与所述队列对编号和PCIE设备的功能id绑定的流水线号发送给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,但需理解的是,此时队列管理上下文信息可能在也可能不在这个L1-Cache里面,因为可能有其他的命令将队列管理上下文信息从该某个L1-Cache中取出,所述队列管理上下文信息是根据队列处理情况实时更新的,流水线在处理完命令后会将更新后的队列管理上下文信息回写到L1-Cache中,流水线在处理下一个命令时会继续从L1-Cache中获取队列管理上下文信息;
如果所述L2-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则说明对应的队列管理上下文信息不在任何一个L1-Cache里面,此时,所述L2-Cache获取与其对应的多个L1-Cache的流水线的当前负载,将当前负载最小的一个L1-Cache的流水线号返回给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,并在所述L2-Cache的信息存储结构中记录当前负载最小的一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
步骤S24、所述输入模块接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
可选的,在一些实施例中,所述L3-Cache的信息存储结构,用于记录共享所述L3-Cache的多个L2-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系,以及,记录共享所述L3-Cache的多个L2-Cache的当前负载;L2-Cache的当前负载由与其对应的多个L1-Cache的当前负载来体现。
可选的,在一些实施例中,所述方法还包括:
若所述L3-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,则所述L3-Cache访问内存以获取队列管理上下文信息,并将所述队列管理上下文信息发送至所述当前负载最小的一个L2-Cache。
具体而言,若所述L3-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,也即队列管理上下文信息不在L1-Cache或L2-Cache或L3-Cache中,需要访问内存以获取对应的队列管理上下文信息。
可选的,在一些实施例中,所述方法还包括:
当所述队列管理上下文信息被与其对应的L1-Cache踢出至所述L2-Cache,且对应的流水线上没有与所述队列对编号和PCIE设备的功能id所对应的操作命令时,所述L2-Cache将所述L2-Cache的信息存储结构中的该L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系删除;
当所述队列管理上下文信息被与其对应的L2-Cache踢出至所述L3-Cache,且对应的流水线上没有与所述队列对编号和PCIE设备的功能id所对应的操作命令时,所述L3-Cache将所述L3-Cache的信息存储结构中的该L2-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系删除。
具体而言,每当任一个队列管理上下文信息被对应的L1-Cache踢出到L2-Cache时(即队列管理上下文信息从L1Cache中搬移至L2-Cache中),或者流水线处理完一个命令去减绑定信息表的命令个数计数器时,L2-Cache检查并判断对应的{队列对编号和PCIE设备的功能id}和流水线号的绑定信息表的命令个数计数器是否为0,如果为0并且对应的队列管理上下文信息已经被该L1-Cache踢出,则说明该流水线上已经没有对应的{队列对编号和PCIE设备的功能id}所对应的业务,此时,将所述L2-Cache记录的{队列对编号和PCIE设备的功能id}清除;
每当任一个队列管理上下文信息被对应的L2Cache踢出到L3Cache时(即队列管理上下文信息从L2Cache中搬移至L3-Cache中),或者流水线处理完一个命令去减绑定信息表的命令个数计数器时,L3Cache检查并判断对应的{队列对编号和PCIE设备的功能id}和流水线号的绑定信息表的命令个数计数器是否为0,如果为0并且对应的队列管理上下文信息已经被该L2Cache踢出,则说明该流水线上已经没有对应的{队列对编号和PCIE设备的功能id}所对应的业务,此时,将所述L3Cache记录的{队列对编号和PCIE设备的功能id}清除,以便于下次相同{队列对编号和PCIE设备的功能id}再次进来处理时,能够根据流水线的负载重新选择一个流水线,而不是总是到固定的流水线。
可选的,在一些实施例中,所述操作命令为接收命令或发送命令,所述接收命令用于接收待处理数据,所述发送命令用于发送待处理数据。
实施例三
本申请的实施例三提供一种基于RDMA引擎的数据处理方法,所述RDMA引擎包括输入模块和Cache模块,如图6所示,所述Cache模块包括多个L1Cache、多个L2-Cache、多个L3-Cache以及1个L4-Cache;
步骤S31、所述输入模块接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
具体而言,所述输入模块接收门铃doorbell发送的操作命令,所述操作命令包含队列对编号(QPN,Queuepairnumber)和PCIE设备的功能id(Functionid),也可以包含其它参数;所述预取命令用于访问所述Cache模块以预先获取队列管理上下文信息(QPC,Queuepaircontext),以减少所述Cache模块发生miss时给流水线带来的影响;
步骤S32、所述L4-Cache接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L4-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,若存在,则所述L4-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,若不存在,则所述L4-Cache将所述预取命令发送给当前负载最小的一个L3-Cache,并在所述L4-Cache的信息存储结构中记录所述队列对编号和PCIE设备的功能id与所述当前负载最小的一个L3-Cache的关联关系。
具体而言,当RDMA引擎包括4级Cache时,L3-Cache接收的所述预取命令由L4-Cache发送的,发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT将其生成的所述预取命令发送给Cache模块,Cache模块的L4-Cache为最大一级Cache,直接对所述预取命令进行处理,提取所述预取命令中的队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L4-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,所述L4-Cache中设置有信息存储结构,所述L4-Cache的信息存储结构可以但不限于是数据表格的形式,其用于记录与所述L4-Cache对应的多个L3-Cache与{队列对编号和PCIE设备的功能id}之间的绑定关系;
如果所述L4-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,则说明对应的队列管理上下文信息已经被分配到某个L3-Cache里面,则所述L4-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,之后所述L3-Cache接收所述预取命令;
如果所述L4-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,则说明对应的队列管理上下文信息不在任何一个L3-Cache里面,此时,所述L4-Cache获取与其对应的多个L3-Cache的当前负载,将当前负载最小的一个L3-Cache的流水线号发送给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,并在所述L4-Cache的信息存储结构中记录当前负载最小的一个L3-Cache与所述队列对编号和PCIE设备的功能id之间的绑定关系。
步骤S33、所述L3-Cache接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若存在,则所述L3-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,若不存在,则所述L3-Cache将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中记录所述队列对编号和PCIE设备的功能id与所述当前负载最小的一个L2-Cache的关联关系。
具体而言,Cache模块的L3-Cache对所述预取命令进行处理,提取所述预取命令中的队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,所述L3-Cache中设置有信息存储结构,所述L3-Cache的信息存储结构可以但不限于是数据表格的形式,其用于记录与所述L3-Cache对应的多个L2-Cache与{队列对编号和PCIE设备的功能id}之间的绑定关系;
如果所述L3-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,则说明对应的队列管理上下文信息已经被分配到某个L2-Cache里面,则所述L3-Cache将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,之后所述L2-Cache接收所述预取命令;
如果所述L3-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,则说明对应的队列管理上下文信息不在任何一个L2-Cache里面,此时,所述L3-Cache获取与其对应的多个L2-Cache的当前负载,将当前负载最小的一个L2Cache的流水线号发送给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,并在所述L3-Cache的信息存储结构中记录当前负载最小的一个L2Cache与所述队列对编号和PCIE设备的功能id之间的绑定关系;
步骤S34、所述L2-Cache接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
具体而言,Cache模块的L2-Cache对所述预取命令进行处理,提取所述预取命令中的队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,所述L2-Cache中设置有信息存储结构,所述L2-Cache的信息存储结构可以但不限于是数据表格的形式,其用于记录与所述L2-Cache对应的多个L1-Cache的流水线号与{队列对编号和PCIE设备的功能id}之间的绑定关系;
如果所述L2-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则说明对应的队列管理上下文信息已经被分配到某个L1-Cache里面,则将与所述队列对编号和PCIE设备的功能id绑定的流水线号发送给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,但需理解的是,此时队列管理上下文信息可能在也可能不在这个L1-Cache里面,因为可能有其他的命令将队列管理上下文信息从该某个L1-Cache中取出,所述队列管理上下文信息是根据队列处理情况实时更新的,流水线在处理完命令后会将更新后的队列管理上下文信息回写到L1-Cache中,流水线在处理下一个命令时会继续从L1-Cache中获取队列管理上下文信息;
如果所述L2-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,则说明对应的队列管理上下文信息不在任何一个L1-Cache里面,此时,所述L2-Cache获取与其对应的多个L1-Cache的流水线的当前负载,将当前负载最小的一个L1-Cache的流水线号返回给发送侧的输入模块TX_INPUT或接收侧的输入模块RX_INPUT,并在所述L2-Cache的信息存储结构中记录当前负载最小的一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
步骤S35、所述输入模块接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
可选的,在一些实施例中,所述L4-Cache的信息存储结构,用于记录共享所述L4-Cache的多个L3-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系,以及,记录共享所述L4-Cache的多个L3-Cache的当前负载;其中,L3-Cache的当前负载由与其对应的多个L2Cache的当前负载来体现。
可选的,在一些实施例中,所述方法还包括:
若所述L4-Cache的信息存储结构中不存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,则所述L4-Cache访问内存以获取队列管理上下文信息,并将所述队列管理上下文信息发送至所述当前负载最小的一个L3-Cache。
可选的,在一些实施例中,所述方法还包括:
当所述队列管理上下文信息被与其对应的L1-Cache踢出至所述L2-Cache,且对应的流水线上没有与所述队列对编号和PCIE设备的功能id所对应的操作命令时,所述L2-Cache将所述L2-Cache的信息存储结构中的该L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系删除;
当所述队列管理上下文信息被与其对应的L2-Cache踢出至所述L3-Cache,且对应的流水线上没有与所述队列对编号和PCIE设备的功能id所对应的操作命令时,所述L3-Cache将所述L3-Cache的信息存储结构中的该L2-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系删除。
具体而言,每当任一个队列管理上下文信息被对应的L1-Cache踢出到L2-Cache时(即队列管理上下文信息从L1Cache中搬移至L2-Cache中),或者流水线处理完一个命令去减绑定信息表的命令个数计数器时,L2-Cache检查并判断对应的{队列对编号和PCIE设备的功能id}和流水线号的绑定信息表的命令个数计数器是否为0,如果为0并且对应的队列管理上下文信息已经被该L1-Cache踢出,则说明该流水线上已经没有对应的{队列对编号和PCIE设备的功能id}所对应的业务,此时,将所述L2-Cache记录的{队列对编号和PCIE设备的功能id}清除;
每当任一个队列管理上下文信息被对应的L2Cache踢出到L3Cache时(即队列管理上下文信息从L2Cache中搬移至L3-Cache中),或者流水线处理完一个命令去减绑定信息表的命令个数计数器时,L3Cache检查并判断对应的{队列对编号和PCIE设备的功能id}和流水线号的绑定信息表的命令个数计数器是否为0,如果为0并且对应的队列管理上下文信息已经被该L2Cache踢出,则说明该流水线上已经没有对应的{队列对编号和PCIE设备的功能id}所对应的业务,此时,将所述L3Cache记录的{队列对编号和PCIE设备的功能id}清除;
每当任一个队列管理上下文信息被对应的L3Cache踢出到L4Cache时(即队列管理上下文信息从L3Cache中搬移至L4-Cache中),或者流水线处理完一个命令去减绑定信息表的命令个数计数器时,L4Cache检查并判断对应的{队列对编号和PCIE设备的功能id}和流水线号的绑定信息表的命令个数计数器是否为0,如果为0并且对应的队列管理上下文信息已经被该L3Cache踢出,则说明该流水线上已经没有对应的{队列对编号和PCIE设备的功能id}所对应的业务,此时,将所述L4Cache记录的{队列对编号和PCIE设备的功能id}清除;以便于下次相同{队列对编号和PCIE设备的功能id}再次进来处理时,能够根据流水线的负载重新选择一个流水线,而不是总是到固定的流水线。
可选的,在一些实施例中,所述操作命令为接收命令或发送命令,所述接收命令用于接收待处理数据,所述发送命令用于发送待处理数据。
实施例四
与上述实施例一的方法对应,本申请的实施例四提出一种基于RDMA引擎的数据处理系统,包括输入模块和Cache模块,所述Cache模块至少包括多个L1-Cache以及1个L2-Cache,多个L1-Cache共享1个L2-Cache;
所述输入模块,用于接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L2-Cache,用于接收所述预取命令,根据所述预取命令包含的所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,当存在时,将与所述队列对编号和PCIE设备的功能id绑定的流水线号发送给所述输入模块,当不存在时,将当前负载最小的一个L1-Cache的流水线号发送给所述输入模块,并在所述L2-Cache的信息存储结构中记录当前负载最小的一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块,还用于接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
可选的,在一些实施例中,所述L2-Cache的信息存储结构记录共享所述L2-Cache的多个L1-Cache的流水线号与队列对编号和PCIE设备的功能id之间的绑定关系,以及记录共享所述L2-Cache的多个L1-Cache的流水线的当前负载。
可选的,在一些实施例中,所述L2-Cache,还用于当所述队列管理上下文信息被与其对应的L1-Cache踢出至所述L2-Cache,且对应的流水线上没有与所述队列对编号和PCIE设备的功能id所对应的操作命令时,所述L2-Cache将所述L2-Cache的信息存储结构中的该L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系删除。
可选的,在一些实施例中,所述L2-Cache,还用于当所述L2-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的流水线号时,访问内存以获取队列管理上下文信息,并将所述队列管理上下文信息发送至所述当前负载最小的一个L1-Cache。本实施例的系统与上述实施例的方法对应,因此,本实施例为详述的内容可以参阅上述实施例一的系统的内容得到,故此处不进行赘述。
实施例五
与上述实施例二的方法对应,本申请的实施例五提供一种基于RDMA引擎的数据处理系统,包括输入模块和Cache模块,所述Cache模块至少包括多个L2-Cache以及1个L3-Cache;
所述输入模块,用于接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L3-Cache,用于接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当存在时,将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当不存在时,将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L2-Cache的关联关系;
所述L2-Cache,用于接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块,用于接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
可选的,在一些实施例中,所述L3-Cache的信息存储结构记录共享所述L3-Cache的多个L2-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系,以及记录共享所述L3-Cache的多个L2-Cache的当前负载。
可选的,在一些实施例中,所述L3-Cache,还用于当所述L3-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的流水线号时,访问内存以获取队列管理上下文信息,并将所述队列管理上下文信息发送至所述当前负载最小的一个L2-Cache。
本实施例的系统与上述实施例的方法对应,因此,本实施例为详述的内容可以参阅上述实施例二的系统的内容得到,故此处不进行赘述。
实施例六
与上述实施例六的方法对应,本申请的实施例六提供一种基于RDMA引擎的数据处理系统,其特征在于,包括输入模块和Cache模块,所述Cache模块包括多个L1Cache、多个L2-Cache、多个L3-Cache以及1个L4-Cache;
所述输入模块,用于接收操作命令,根据所述操作命令获取队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id生成预取命令,并将所述预取命令发送至所述Cache模块;
所述L4-Cache,用于接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L4-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,当存在时,将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L3-Cache,当不存在时,将所述预取命令发送给当前负载最小的一个L3-Cache,并在所述L4-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L3-Cache的关联关系;
所述L3-Cache,用于接收所述预取命令,根据所述预取命令中的队列对编号和PCIE设备的功能id查询所述L3-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当存在时,将所述预取命令发送给与所述队列对编号和PCIE设备的功能id绑定的L2-Cache,当不存在时,将所述预取命令发送给当前负载最小的一个L2-Cache,并在所述L3-Cache的信息存储结构中,记录所述队列对编号和PCIE设备的功能id与所述一个L2-Cache的关联关系;
所述L2-Cache,用于接收所述预取命令,获得所述队列对编号和PCIE设备的功能id,根据所述队列对编号和PCIE设备的功能id查询所述L2-Cache的信息存储结构中是否存在与所述队列对编号和PCIE设备的功能id绑定的流水线号,若存在,则所述L2-Cache将与所述队列对编号和PCIE设备的功能id绑定的流水线号返回给所述输入模块,若不存在,则所述L2-Cache将当前负载最小的一个L1-Cache的流水线号返回给所述输入模块,并在所述L2-Cache的信息存储结构中,记录所述一个L1-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系;
所述输入模块,用于接收所述Cache模块返回的流水线号,将所述操作命令送入与所述Cache模块返回的流水线号对应的流水线进行处理。
可选的,在一些实施例中,所述L4-Cache的信息存储结构记录共享所述L4-Cache的多个L3-Cache的流水线号与所述队列对编号和PCIE设备的功能id之间的绑定关系,以及记录共享所述L4-Cache的多个L3-Cache的当前负载。
可选的,在一些实施例中,所述L4-Cache,还用于当所述L4-Cache的信息存储结构中存在与所述队列对编号和PCIE设备的功能id绑定的流水线号时,访问内存以获取队列管理上下文信息,并将所述队列管理上下文信息发送至所述当前负载最小的一个L3-Cache。
可选的,在一些实施例中,所述操作命令为接收命令或发送命令,所述接收命令用于接收待处理数据,所述发送命令用于发送待处理数据。
本实施例的系统与上述实施例的方法对应,因此,本实施例为详述的内容可以参阅上述实施例三的系统的内容得到,故此处不进行赘述。
实施例七
本申请的实施例七提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如上述实施例一、二、三所述的基于RDMA引擎的数据处理方法。
具体而言,所述计算机可读存储介质可以包括:能够携带所述计算机程序指令的任何实体或记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。
实施例八
本申请的实施例八提出一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一、二、三所述的基于RDMA引擎的数据处理方法。
其中,电子设备还可以包括连接不同组件(包括存储器和处理器)的总线。存储器可以包括易失性存储器形式的计算机可读介质,例如随机存取存储器(RAM)和/或高速缓存存储器。存储器也可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。电子设备也可以与一个或多个外部设备(例如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其他计算设备进行通信的任何设备(例如网卡)通信,这种通信可以通过输入/输出(I/O)接口进行,并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多更新和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。