一种网络数据包处理方法和装置制造方法及图纸

技术编号:10537354 阅读:111 留言:0更新日期:2014-10-15 14:46
本发明专利技术实施例提供本发明专利技术实施例提供一种网络数据包处理方法和装置,以实现对网络数据包的加速处理。其中,网络数据包处理方法包括:中央处理单元CPU将读取到的数据写入内存中的输入缓冲区;图形处理单元GPU通过轮询方式从输入缓冲区中读取数据,并对读取到的数据进行处理,将处理后得到的数据存入内存中的输出缓冲区;CPU通过轮询方式从输出缓冲区中读取GPU处理后得到的数据。本发明专利技术实施例提供的网络数据包处理方法和装置减小了系统调用的开销,提高了GPU读取待处理数据的速率,可以加速网络数据包业务的处理速度。

【技术实现步骤摘要】
【专利摘要】本专利技术实施例提供本专利技术实施例提供一种网络数据包处理方法和装置,以实现对网络数据包的加速处理。其中,网络数据包处理方法包括:中央处理单元CPU将读取到的数据写入内存中的输入缓冲区;图形处理单元GPU通过轮询方式从输入缓冲区中读取数据,并对读取到的数据进行处理,将处理后得到的数据存入内存中的输出缓冲区;CPU通过轮询方式从输出缓冲区中读取GPU处理后得到的数据。本专利技术实施例提供的网络数据包处理方法和装置减小了系统调用的开销,提高了GPU读取待处理数据的速率,可以加速网络数据包业务的处理速度。【专利说明】一种网络数据包处理方法和装置
本专利技术涉及计算机网络领域,尤其一种网络数据包处理方法和装置。
技术介绍
与中央处理单元(Central Processing Unit, CPU)、网络处理器或专用集成芯片 相比,图形处理单元(Graph Processing Unit, GPU)具有强大的并行计算能力,因而比较 适用于各类高性能通用计算。GPU计算的加速原理在于通过大量GPU线程的并发执行来抵 消数据拷贝的开销和单一计算单元的慢速,从而获得从整体的性能提升。例如,在NVIDIA GTX580显卡中,有512个流处理器(Stream Processor,SP),虽然每个SP的频率都低于普 通CPU核心的频率,然而,由于512个任务可以在这些SP上并发计算完成,即便加上数据在 内存与显存之间的来回拷贝,所花费时间也远小于512个任务在CPU上逐一计算所需时间。 在GPU和CPU并存的计算机系统中,GPU并不执行逻辑复杂的单线程计算,一般将任务划分 为串行部分和并行部分,由CPU执行串行部分,GPU执行并行部分。使用GPU计算的步骤包 括:将待计算数据从CPU主存拷贝到位于GPU设备之中显存;启动GPU核函数,开始并行计 算;将计算结果从显存拷贝到内存。 目前,运用GPU加速效果较好的领域基本是计算密集型的,即核函数运行时间多 于数据拷贝时间,因此业界大量研究专注于如何提高算法的并行计算速度。然而,在网络应 用中,要处理的数据量较大,拷贝耗时较多,相比之下计算本身不再是性能瓶颈。如何提高 数据拷贝速率是GPU计算加速面临的一个主要问题。而AMD的Llano、Intel的Ivy-bridge 等融合架构处理器的推出,打破了通信、数据拷贝开销的束缚,使得其更适合于网络处理场 景的加速。 现有技术提出的一种在网络应用中使用GPU处理网络数据包的方法包括:预处理 线程组中的预处理线程不间断地对接收的网络数据包进行预处理,形成计算任务送入缓冲 区;计算线程组中的计算线程不间断地从缓冲区中取出一个计算任务给CPU进行计算,或 者取出多个计算任务给GPU进行计算,并将计算结果发送给后续线程组;后续处理线程组 中的后续处理线程不间断地对计算线程组中的计算线程完成计算任务后传来的计算结果 进行后续处理。上述现有技术主要是通过基于缓冲区的方式,对网络数据包进行批量拷贝 和流水化调度。其中,流水化调度是指在一次GPU计算过程中,数据从CPU主存拷贝至GPU 显存、启动执行GPU核函数和计算结果从GPU显存拷贝至CPU主存三个步骤必须顺序执行, 但多个线程可以同时开始多个GPU计算,使这些步骤形成流水线,例如,第一个线程的GPU 核函数执行时,第二个线程的数据从CPU主存拷贝到GPU显存,这两个步骤所使用的系统部 件不同,因此可以同时进行。由于一次数据拷贝涉及总线申请、总线分配、数据传输和总线 释放等工作,而将多次拷贝集中到一次完成,可以减少总线申请、分配释放的次数,同时数 据在总线上传输数由慢变快的过程,拷贝少量数据往往不能取得较高的总线利用率,将多 份数据合并拷贝,速率会比多次拷贝有较大提升。由于GPU计算时间与数据拷贝时间产生 一定的重叠,从而减少了整体的时间开销,提高了处理速度。 上述现有技术提供的GPU处理网络数据包方法中,GPU线程是通过DMA的方式将 待计算数据从CPU主存拷贝到GPU显存。由于CPU和GPU之间带宽的限制,导致数据拷贝 带来了比较明显的传输延时,同时限制了 GPU处理能力的发挥。另外,由于批量缓存网络包 需要等待,在数据缓存区较大时,增加了缓存时延。
技术实现思路
本专利技术实施例基于GPU+GPU融合架构,提供一种网络数据包处理方法和装置,以 实现对网络数据包的加速处理。 第一方面,本专利技术实施例提供一种网络数据包处理方法,所述方法包括:中央处理 单元CPU将读取到的数据写入内存中的输入缓冲区;图形处理单元GPU通过轮询方式从所 述输入缓冲区中读取数据,并对读取到的数据进行处理,将处理后得到的数据存入所述内 存中的输出缓冲区;所述CPU通过轮询方式从所述输出缓冲区中读取所述GPU处理后得到 的数据。 第一方面的第一种可能实现方式中,所述输入缓冲区和所述输出缓冲区分配在所 述CPU的主存中,所述内存包括所述主存。 结合第一方面的第一种可能实现方式,第一方面的第二种可能实现方式中,所述 方法还包括:通过对所述输入缓冲区和所述输出缓冲区进行的内存映射,将所述输入缓冲 区和所述输出缓冲区在所述CPU的主存的地址分别映射成在GPU任务的对应地址信息; 所述图形处理单元GPU通过轮询方式从所述输入缓冲区中读取数据并对读取到 的数据进行处理,将处理后得到的数据存入所述输出缓冲区包括: 所述图形处理单元GPU根据所述输入缓冲区在所述GPU任务的对应地址信息,通 过轮询方式读取所述输入缓冲区的数据后进行处理; 所述图形处理单元GPU根据所述输出缓冲区在所述GPU任务的对应地址信息,将 所述处理所得的处理结果存入所述输出缓冲区。 第一方面的第三种可能实现形式中,所述输入缓冲区分配在所述GPU的显存,所 述输出缓冲区分配在所述CPU的主存,所述内存包括所述主存和所述显存。 结合第一方面的第三种可能实现形式,第一方面的第四种可能实现形式中,所述 方法还包括:通过对所述输入缓冲区和所述输出缓冲区进行的内存映射,将所述输入缓冲 区在所述GPU的显存的地址映射成在CPU任务的地址信息,将所述输出缓冲区在所述CPU 的主存的地址映射成在GPU任务的地址信息; 所述中央处理单元CPU将读取到的数据写入内存中的输入缓冲区包括:根据所述 输入缓冲区映射所得在所述CPU任务的地址信息,通过轮询方式将读取到的数据写入所述 显存中的输入缓冲区; 所述图形处理单元GPU通过轮询方式从所述输入缓冲区中读取数据并对读取到 的数据进行处理,将处理后得到的数据存入输出缓冲区包括:所述图形处理单元GPU通过 轮询方式读取所述输入缓冲区的数据后进行处理;根据所述输出缓冲区映射所得在所述 任务的地址信息,将所述处理所得的处理结果存入所述输出缓冲区。 第一方面的第五种可能实现形式中,所述CPU与所述内存之间还包括CPU和GPU 的共享缓存,所述中央处理单元CPU将读取到的数据写入内存中的输入缓冲区之前,还包 括:所述CPU将所述读取到的数据写入CPU和GPU的共享缓存; 所述图形处理单元GPU通过轮询方式从所述输入缓冲区中读取数据之前,还包 括:所述本文档来自技高网
...

【技术保护点】
一种网络数据包处理方法,其特征在于,所述方法包括:中央处理单元CPU将读取到的数据写入内存中的输入缓冲区;图形处理单元GPU通过轮询方式从所述输入缓冲区中读取数据,并对读取到的数据进行处理,将处理后的数据存入所述内存中的输出缓冲区;所述CPU通过轮询方式从所述输出缓冲区中读取所述GPU处理后得到的数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:文刘飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1