本技术涉及数据处理,具体而言,涉及一种基于多路ddr内存的数据读取方法及装置。
背景技术:
1、随着网络带宽的不断提高,cpu已无法满足系统处理性能的需求,智能网络加速卡在系统中的应用变的更为广泛。其中,在智能网络加速卡的设计中,片外ddr内存访问是加速卡系统的关键部分。
2、通常,加速卡系统只使用一组ddr存储器,多个用户接口共同访问。然而,随着网络接口带宽的提高,40g和100g这种高吞吐网络接口受到用户的青睐。但是,在实现多个高速接口间业务加速转发的过程中,片外ddr内存访问性能却限制了加速卡系统的转发性能。
3、因此,如何解决对系统访问片外ddr内存的性能瓶颈问题成为了本领域技术人员亟待解决的技术问题之一。
技术实现思路
1、本技术实施例的目的在于提供一种基于多路ddr内存的数据读取方法及装置,能够实现多路ddr片外存储的方式,从而解决了现存的性能瓶颈问题;还能够解决多用户接口多路ddr的仲裁问题,从而大大提升各场景下的数据读写性能。
2、本技术实施例第一方面提供了一种基于多路ddr内存的数据读取方法,包括:
3、获取读通道中的读操作命令;
4、在多个ddr内存组中,确定内存占用率最低的ddr内存组;其中,所述ddr内存组包括两路ddr内存;
5、将所述读操作命令转换为两个读内存指令;
6、将所述两个读内存指令分别发送至所述两路ddr内存;
7、缓存从所述两路ddr内存中获取到的两个读数据;
8、基于所述两个读数据进行数据分发,得到返回数据;
9、基于所述读通道,反馈所述返回数据。
10、在上述实现过程中,该方法可以优先获取读通道中的读操作命令;可见,该方法可以在多个读通道中获取用户输入的读操作命令,从而以此来实现多通道多命令的快速有序处理,从而使得该方法能够应用于高吞吐量的系统当中,进而起到更稳定高效的数据读取效果。然后,该方法再在多个ddr内存组中,确定内存占用率最低的ddr内存组;其中,ddr内存组包括两路ddr内存;可见,该方法可以在多个ddr内存组中选取当前占用率最低的ddr内存组,从而通过多组ddr内存来实现提升访问性能的效果;同时,还能够基于此机制可均衡化多组ddr内存的访问命令,从而避免出现访问拥堵的问题,进而提高数据读取的效果。此时,该方法再将读操作命令转换为两个读内存指令;可见,该方法可以将用户输入的读操作命令自动转换为ddr内存可用的读内存指令,从而便于基于该指令对ddr内存进行数据读取操作。在获取到两个读内存指令之后,该方法可以将两个读内存指令分别发送至两路ddr内存;可见,该方法可以将两个读内存指令发送给片外ddr内存,以使读数据的操作自动执行,从而使得此时只需要等待数据的返回即可,并不会影响其他读操作命令的执行,进而使得该方法具有并行处理的能力,以此保障了该方法在大量数据下的应用稳定性。此后,该方法在接收到两路ddr内存中获取到的两个读数据之后,对其进行缓存;可见,该方法可以缓存接收到的两个读数据,即使该读数据是不完整的数据也可以通过此步骤获取,然后再通过此步骤对其进行迭代更新,从而以此来保障数据的获取能力,同时也是避免对获取到的数据直接进行处理,进而保障读数据读取的有效性,避免数据读取的异常情况出现。在缓存了两个读数据之后,该方法可以基于两个读数据进行数据分发,得到返回数据;可见,该方法在两个读数据中可以选择出与读操作命令相对应的准确读数据,从而以此来保障数据读取的稳定性和准确性。最后,该方法再基于读通道,反馈返回数据;可见,该方法能够基于此步骤完成数据读取与反馈的效果,从而以此来完结该次读操作命令的反馈,进而能够解决多用户接口多路ddr的仲裁问题,大大提升各场景下的数据读取性能。
11、进一步地,所述获取读通道中的读操作命令的步骤包括:
12、采用轮询方式接收多个读通道中的读操作命令;其中,所述读操作命令中至少包括待读地址和待读长度。
13、在上述实现过程中,该方法可以采用轮询方式接收多个读通道中包括待读地址和待读长度的读操作命令。可见,该方法可以基于轮询的方式对读操作命令进行定序,从而以此来应对多数据多通道的应用场景,进而保障读操作命令的输入效率和输入稳定性;同时,待读地址和待读长度能够确定待读取数据的位置,从而能够保障成功对数据进行读取。
14、进一步地,所述在多个ddr内存组中,确定内存占用率最低的ddr内存组的步骤包括:
15、识别与多个ddr内存组一一对应的多个可用深度;
16、将所述可用深度最大的ddr内存组,确定为内存占用率最低的ddr内存组。
17、在上述实现过程中,该方法在多个ddr内存组中,确定内存占用率最低的ddr内存组的过程中,可以优先识别与多个ddr内存组一一对应的多个可用深度;然后再将可用深度最大的ddr内存组,确定为内存占用率最低的ddr内存组。可见,该方法可以基于ddr内存的可用深度判断各路ddr的繁忙状态(其中,深度越小则说明其ddr内存未完成的命令越多),并以此来选定当前最为空闲的ddr内存,从而以此来提高数据读取的效率,进而避免出现访问拥堵的情况。
18、进一步地,所述在多个ddr内存组中,确定内存占用率最低的ddr内存组的步骤之后,所述方法还包括:
19、缓存与所述读操作命令相对应的读信息;其中,所述读信息至少包括读命令tag、读通道id和所述ddr内存组信息。
20、在上述实现过程中,该方法还可以将与读操作命令相对应的读命令tag、读通道id和ddr内存组信息都缓存起来,从而记录下此次读操作命令排序位置,进而便于对大量读操作进行相应的管理,还能够便于其他步骤的取证查询。
21、进一步地,所述基于所述两个读数据进行数据分发,得到返回数据的步骤包括:
22、将所述两个读数据区分为第一读数据和第二读数据;其中,所述第一读数据比所述第二读数据先获取到;
23、获取与所述第一读数据相对应的fifo缓存信息;
24、当所述fifo缓存信息与所述读信息相匹配时,将所述第一读数据确定为返回数据;
25、当所述fifo缓存信息与所述读信息不匹配时,将所述第二读数据确定为返回数据。
26、在上述实现过程中,该方法在基于两个读数据进行数据分发,得到返回数据的过程中,可以优先将两个读数据区分为先获取到的第一读数据和后获取到的第二读数据;同时,获取与第一读数据相对应的fifo缓存信息;可见该方法可以优先获取一个完整的读数据,然后获取对应的数据读取信息,并以此为依据判别该获取到的数据是否与当前的读操作命令相匹配,从而以此来保障命令与数据的一致性,进而保障大量读操作下的数据读取精确度。具体的,该方法可以在fifo缓存信息与读信息相匹配时,将第一读数据确定为返回数据;或在fifo缓存信息与读信息不匹配时,将第二读数据确定为返回数据。可见,该方法获取到的完整读数据与读操作命令相匹配时,反馈正确的读数据,从而保障数据读取效果;而在其不匹配时,以另一个读数据作为备用,从而以此来确保获取到对应的读数据,避免一次匹配失败导致本次流程失败的绝对性;同时,该方法还在此过程中考虑到了两次皆不匹配的情况,将第二读数据作为该方法的保底策略,能够使得数据读取流程不会被停滞在该步骤,还能够及时将该情况提示给相关人员,以便于相关人员对其进行处理。综上,该方法既能够保障读数据的准确性,还能够保障读数据的稳定性。
27、进一步地,所述获取读通道中的读操作命令的步骤之前,所述方法还包括:
28、采用轮询方式接收写操作命令;其中,所述写操作命令中至少包括待写地址、待写长度和待写数据;
29、将所述写操作命令转换为写内存指令;
30、将所述写内存指令发送至所有ddr内存,以将所述待写数据写入所述所有ddr内存中。
31、在上述实现过程中,该方法还可以获取读通道中的读操作命令的步骤之前,采用轮询方式接收包括待写地址、待写长度和待写数据的写操作命令;然后将写操作命令转换为写内存指令;再将写内存指令发送至所有ddr内存,以将待写数据写入所有ddr内存中。可见,该方法在读数据之前先以对应的方式写入数据,从而使得该方法能够实现对数据的读写效果,进一步完善了该方法的应用场景。
32、本技术实施例第二方面提供了一种基于多路ddr内存的数据读取装置,所述基于多路ddr内存的数据读取装置包括:
33、获取单元,用于获取读通道中的读操作命令;
34、确定单元,用于在多个ddr内存组中,确定内存占用率最低的ddr内存组;其中,所述ddr内存组包括两路ddr内存;
35、转换单元,用于将所述读操作命令转换为两个读内存指令;
36、发送单元,用于将所述两个读内存指令分别发送至所述两路ddr内存;
37、缓存单元,用于缓存从所述两路ddr内存中获取到的两个读数据;
38、分发单元,用于基于所述两个读数据进行数据分发,得到返回数据;
39、反馈单元,用于基于所述读通道,反馈所述返回数据。
40、在上述实现过程中,该装置可以通过获取单元获取读通道中的读操作命令;通过确定单元在多个ddr内存组中,确定内存占用率最低的ddr内存组;其中,ddr内存组包括两路ddr内存;通过转换单元将读操作命令转换为两个读内存指令;通过发送单元将两个读内存指令分别发送至两路ddr内存;通过缓存单元缓存从两路ddr内存中获取到的两个读数据;通过分发单元来基于两个读数据进行数据分发,得到返回数据;再通过反馈单元来基于读通道,反馈返回数据。可见,该装置能够实现多路ddr片外存储的方式,从而解决了现存的性能瓶颈问题;还能够解决多用户接口多路ddr的仲裁问题,从而大大提升各场景下的数据读写性能。
41、进一步地,所述获取单元,具体用于采用轮询方式接收多个读通道中的读操作命令;其中,所述读操作命令中至少包括待读地址和待读长度。
42、进一步地,所述确定单元包括:
43、识别子单元,用于识别与多个ddr内存组一一对应的多个可用深度;
44、第一确定子单元,用于将所述可用深度最大的ddr内存组,确定为内存占用率最低的ddr内存组。
45、进一步地,所述缓存单元,还用于在多个ddr内存组中,确定内存占用率最低的ddr内存组的操作之后,缓存与所述读操作命令相对应的读信息;其中,所述读信息至少包括读命令tag、读通道id和所述ddr内存组信息。
46、进一步地,所述分发单元包括:
47、区分子单元,用于将所述两个读数据区分为第一读数据和第二读数据;其中,所述第一读数据比所述第二读数据先获取到;
48、获取子单元,用于获取与所述第一读数据相对应的fifo缓存信息;
49、第二确定子单元,用于当所述fifo缓存信息与所述读信息相匹配时,将所述第一读数据确定为返回数据;
50、所述第二确定子单元,还用于当所述fifo缓存信息与所述读信息不匹配时,将所述第二读数据确定为返回数据。
51、进一步地,所述获取单元,还用于采用轮询方式获取写操作命令;其中,所述写操作命令中至少包括待写地址、待写长度和待写数据;
52、所述转换单元,还用于将所述写操作命令转换为写内存指令;
53、所述发送单元,还用于将所述写内存指令发送至所有ddr内存,以将所述待写数据写入所述所有ddr内存中。
54、本技术实施例第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本技术实施例第一方面中任一项所述的基于多路ddr内存的数据读取方法。
55、本技术实施例第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本技术实施例第一方面中任一项所述的基于多路ddr内存的数据读取方法。