本申请涉及计算机,尤其涉及一种dma传输方法和装置。
背景技术:
1、dma(direct memory access,直接存储器访问)传输方式为传统块式或者单链式。每次dma请求可以传送一组信息,即一组连续的数据。这种方式适用于需要连续传输大量数据的情况,可以保证在规定长度的字节数传送完毕后才释放总线控制权。
2、现有的dma传输方式无法有效利用srio(serial rapidio,高速串行io口)传输通路的带宽。
技术实现思路
1、为了解决上述技术缺陷之一,本申请提供了一种dma传输方法和装置。
2、本申请第一个方面,提供了一种dma传输方法,该方法包括:
3、初始化srio链路;
4、与对端建立srio通信链路;
5、与对端建立映射地址相同的内存窗口映射;
6、在映射地址中分配发送环形缓冲区;其中,发送环形缓冲区的地址与对端发送环形缓冲区的地址相同;
7、打开srio控制器的链式dma发送完成中断;其中,srio控制器具有多个dma传输通道;
8、打开srio控制器的链式dma发送控制器完成中断;
9、根据预先配置分配多个空的dma描述;
10、根据下发数据分配dma通道;
11、根据下发数据计算描述符的数量;
12、根据数量,确定描述符是否充足;
13、若描述符充足,则根据描述符下发该下发数据。
14、可选地,初始化srio链路,包括:
15、srio控制器上电;
16、配置srio时钟、srio速率、srio lane;
17、使能接收io,使能发送io,使能dma传输控制器;
18、初始化发送链路。
19、可选地,与对端建立srio通信链路,包括:
20、检测对端发送链路是否初始化完成并正常建立;
21、待对端正常建立发送链路后,初始化接收链路;
22、与对端进行链路同步对齐锁定。
23、可选地,根据描述符下发该下发数据,包括:
24、进行描述符填充;
25、将下发数据写入doorbell信息当中;
26、把描述符置为有效描述;
27、在下发数据发送完成后,给自身发送发送完成中断,给对端发送doorbell中断,其中,doorbell中断中携带本次发送信息。
28、可选地,确定描述符是否充足之后,还包括:
29、若描述符不充足,则打开dma自检模块,查看dma状态是否正常;
30、若dma状态正常,则等待描述符充足后,执行根据描述符下发该下发数据的步骤;
31、若dma状态异常,则进入dma模块恢复流程,如果恢复正常,则执行根据下发数据计算描述符的数量的步骤及后续步骤;如果无法恢复正常,则进行异常上报。
32、可选地,根据描述符下发该下发数据之后,还包括:
33、如果在预设时长内接收到发送完成中断,则进行发送完成描述的回收;
34、如果在预设时长内未接收到发送完成中断,则执行如下步骤:
35、检查链路;
36、若链路异常,则进行链路恢复,若链路无法恢复,则进行异常上报;
37、若链路正常,或者,链路异常但链路恢复,则恢复dma传输;若dma传输无法恢复,则进行异常上报;若dma传输恢复,则向对端发送链路恢复请求,待与对端再次链路同步后,重复执行根据下发数据分配dma通道的步骤及后续步骤。
38、可选地,在映射地址中分配发送环形缓冲区之后,还包括:
39、打开doorbell的中断;
40、接收doorbell信息;
41、解析doorbell信息;
42、将解析到的数据存入接收数据队列。
43、可选地,该方法,还包括:
44、若收到链路恢复请求,则进行链路恢复,如果链路恢复成功,则重复执初始化srio链路的步骤及后续步骤,如果链路恢复不成功,则进行异常上报。
45、可选地,方法涉及的高性能微处理器板卡为一个;高性能微处理器板卡包括4片高性能微处理器;高性能微处理器之间,依次通过srio总线连接;
46、或者,方法涉及的高性能微处理器板卡为两个;高性能微处理器板卡之间通过srio交换机互联;每个高性能微处理器板卡均包括链路同步模块、链路恢复模块、dma传输管理模块、dma传输恢复模块;两个高性能微处理器板卡中的链路同步模块互联、链路恢复模块互联、dma传输管理模块互联、dma传输恢复模块互联。
47、本申请第二个方面,提供了一种dma传输装置,该装置涉及一个高性能微处理器板卡;高性能微处理器板卡包括4片高性能微处理器;高性能微处理器之间,依次通过srio总线连接;
48、或者,装置涉及两个高性能微处理器板卡;高性能微处理器板卡之间通过srio交换机互联;每个高性能微处理器板卡均包括链路同步模块、链路恢复模块、dma传输管理模块、dma传输恢复模块;两个高性能微处理器板卡中的链路同步模块互联、链路恢复模块互联、dma传输管理模块互联、dma传输恢复模块互联;
49、装置执行如上述第一个方面所述的方法。
50、本申请提供一种dma传输方法和装置,所述方法包括:初始化srio链路;与对端建立srio通信链路;与对端建立映射地址相同的内存窗口映射;在映射地址中分配发送环形缓冲区;其中,发送环形缓冲区的地址与对端发送环形缓冲区的地址相同;打开srio控制器的链式dma发送完成中断;其中,srio控制器具有多个dma传输通道;打开srio控制器的链式dma发送控制器完成中断;根据预先配置分配多个空的dma描述;根据下发数据分配dma通道;根据下发数据计算描述符的数量;根据数量,确定描述符是否充足;若描述符充足,则根据描述符下发该下发数据。本申请提供的方法可以实现多dma传输通道的数据传输,有效利用srio传输通路的带宽。
1.一种dma传输方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述初始化srio链路,包括:
3.根据权利要求1所述的方法,其特征在于,所述与对端建立srio通信链路,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据描述符下发所述下发数据,包括:
5.根据权利要求1所述的方法,其特征在于,所述确定描述符是否充足之后,还包括:
6.根据权利要求1所述的方法,其特征在于,所述根据描述符下发所述下发数据之后,还包括:
7.根据权利要求1所述的方法,其特征在于,所述在映射地址中分配发送环形缓冲区之后,还包括:
8.根据权利要求7所述的方法,其特征在于,所述方法,还包括:
9.根据权利要求1所述的方法,其特征在于,所述方法涉及的高性能微处理器板卡为一个;所述高性能微处理器板卡包括4片高性能微处理器;高性能微处理器之间,依次通过srio总线连接;
10.一种dma传输装置,其特征在于,所述装置涉及一个高性能微处理器板卡;所述高性能微处理器板卡包括4片高性能微处理器;高性能微处理器之间,依次通过srio总线连接;
