1.一种基于NTB硬件的多队列通信方法,其特征在于,包括:
发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;
所述发送端控制器按照预定封装格式对所述待发送数据进行封装,通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;
所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据。
2.根据权利要求1所述的多队列通信方法,其特征在于,所述发送端控制器根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列,包括:
根据所述待发送数据的数据大小,确定所述待发送数据位于队列范围集中的目标队列范围,并将与所述目标队列范围所对应的NTB队列作为目标NTB队列;
若根据所述待发送数据的数据大小,确定所述待发送数据不位于队列范围集中,则选取与所述待发送数据的数据大小最接近的NTB队列作为目标NTB队列,并根据最接近的NTB队列的粒度对所述待发送数据执行分片操作。
3.根据权利要求2所述的多队列通信方法,其特征在于,所述队列范围集所对应的NTB队列包括:
以4KB为粒度所对应的NTB队列,以16KB为粒度所对应的NTB队列,以256KB为粒度所对应的NTB队列和以1MB为粒度所对应的NTB队列。
4.根据权利要求3所述的多队列通信方法,其特征在于,所述接收端控制器通过监控所述NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据,包括:
若所述接收端控制器监控到所述管理数据中的空闲下表信息发生变化,则获取已封装数据,对所述已封装数据进行解析后发送至上层应用;
所述接收端控制器更新所述管理数据中的空闲下表信息。
5.根据权利要求1所述的多队列通信方法,其特征在于,
已封装数据的封装格式依次包括:序列号信息,版本号信息,标志位信息,回复序列号信息,负载数据的长度信息,负载数据,校验数据;其中,所述标志位信息表示已封装数据的属性信息。
6.根据权利要求5所述的多队列通信方法,其特征在于,所述接收端控制器获取已封装数据之后,还包括:
检测所述已封装数据中是否存在回复序列号;若存在,则判断是否存在需要发送至所述发送端控制器的回复数据;
若存在回复数据,则按照所述预定封装格式对包括所述回复数据及所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器;
若不存在回复数据,则间隔预设时长后,按照所述预定封装格式对包括所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器。
7.根据权利要求1-6中任意一项所述的多队列通信方法,其特征在于,还包括:
所述发送端控制器根据当前NTB队列的数据结构判断是否能发送所述待发送数据;若能,则通过NTB队列将已封装数据发送至接收端控制器;若不能,则将所述待发送数据存入等待队列,直至当前NTB队列能发送所述待发送数据为止。
8.一种基于NTB硬件的多队列通信系统,其特征在于,包括发送端控制器和接收端控制器;
发送端控制器包括:
选取模块,用于根据待发送数据的数据大小及预定的队列选取规则,选取对应的目标NTB队列;
封装模块,用于按照预定封装格式对所述待发送数据进行封装;
第一发送模块,用于通过所述目标NTB队列将已封装数据发送至接收端控制器,并修改所述目标NTB队列控制页的管理数据;
所述接收端控制器通过监控所述目标NTB队列控制页的管理数据,获取所述发送端控制器发送的已封装数据。
9.根据权利要求8所述的多队列通信系统,其特征在于,所述接收端控制器,还包括:
检测模块,用于检测所述已封装数据中是否存在回复序列号;
判断模块,用于在所述已封装数据中存在回复序列号时,判断是否存在需要发送至所述发送端控制器的回复数据;
第二发送模块,用于存在回复数据时,按照所述预定封装格式对包括所述回复数据及所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器;
第三发送模块,用于不存在回复数据时,间隔预设时长后,按照所述预定封装格式对包括所述回复序列号的消息包进行封装,并通过NTB队列发送至发送端控制器。
10.根据权利要求8或9所述的多队列通信系统,其特征在于,还包括:
所述发送端控制器根据当前NTB队列的数据结构判断是否能发送所述待发送数据;若能,则通过NTB队列将已封装数据发送至接收端控制器;若不能,则将所述待发送数据存入等待队列,直至当前NTB队列能发送所述待发送数据为止。