论文部分内容阅读
随着现代互联网络技术的快速发展,各种网络应用已经深深地渗透到了社会的每一个角落:从基本的工作应用需求出发,一直延伸到人们的衣食住行,社交和娱乐需求中。丰富的互联网应用在给人们带来多彩生活的同时,却给支撑起这些应用的基础通信网络带来了各种挑战。这些挑战包括:首先,网络规模的不断扩大,网络用户数量的逐年增加,以及通信数据的海量传输,使得不断增加的互联网带宽仍显捉襟见肘;与此同时,网络特性的变化对网络服务商的网络管理能力和网络的安全带来很大的挑战。其次,随着云计算、大数据技术等新兴技术的发展,诸如数据中心、电商、视频点播等各种新型网络平台及应用的不断涌现,使得封闭僵化的现有网络结构无法对这些新的应用提供足够的支撑。此外,现有网络结构受到既有硬件技术的限制,网络设备的升级换代只能通过更换硬件设备的方式实现,带来巨大的时间成本和费用成本。最后,现有的“产商设计生产设备+网络服务商使用”的网络发展模式,使得各种设备标准林立,网络服务商使用困难,而且不具备话语权;封闭的网络设备研发生产体系,导致网络服务商无法针对网络应用进行合理有效控制,造成服务质量难以令人满意。基于以上原因,网络技术研究人员开始寻求网络处理技术的革新,包括网络处理器在硬件平台、体系结构和开发技术上的改变,以此同时满足高性能、高灵活性和快速开发部署等方面的需求。随着可重构的现场可编程门阵列(Field Programmable Gate Array,FPGA)技术的不断发展,结合计算机技术的进步,比如处理器体系结构的提出和领域特定语言(Domain Specific Language,DSL)比如P4)及其编译工具链的应用和发展,为应对以上挑战提供了可能。本文首先深入研究多核网络处理器(Network Processor,NP)体系结构和可编程的“Match-action”体系结构的特性,以及将两者应用至FPGA这种可重构器件过程中的部分关键技术。然后,针对本文设计的可重构网络报文处理流水线提出了一种使用P4语言的高层次快速开发方法。具体工作分为以下三个部分:首先,针对多核网络处理器结构在可重构芯片的应用展开研究。由于单核性能受限,多核NP结构只能通过不断增加单核数量提高报文处理并行度来提升处理性能。随着核数量的提升,随之而来的是每个内核受到片上存储空间的限制。如果将多核结构运用至资源受限、运行频率低的可重构芯片中,每个内核所分配得到的存储资源将变得更加紧张,运行过程中的访存冲突问题也更为突出,从而造成性能的急剧下降。针对该问题,本文提出了面向网络报文转发的指令集压缩定制的方法,通过使用压缩指令集,降低内核结构的复杂度,提高指令密度,进而减少访存次数,获得更高的指令缓存(Instruction Cache)命中率。本文以开源指令集RISC-V为基础详细描述了该定制方法。实验结果表明,通过该方法定制的新指令集在代码的压缩上有着较原压缩指令集更高的压缩效率及更好的处理性能。其次,针对“Match-action”结构在可重构芯片上实现的不足点,提出了基于流水线结构的报文解析器(Parser)和逆解析器(Deparser)结构及其设计方法。从提高处理性能和减少处理延时的目标出发,对“Match-action”引擎提出了结构的优化方案和依据依赖关系规划流水线的方法。具体工作如下:·基于流水线结构的解析器和逆解析器由多级流水线组成,报文头内的各个协议首部在流水线的传输过程中被逐级解析或编辑,直至所有的协议首部操作完成并输出。通过分析所需支持的报文实例,以及各协议之间的解析关系并将绘制成有向无环图(Directed Acyclic Graph,DAG),以此作为流水线结构的设计依据。该设计方法解决了(逆)解析过程可能存在的协议处理冲突(Conflict)和停顿(Stall),实现完全流水化,并且具有较高的处理性能。·针对“Match-Action”引擎中的多表项(Table)结构,提出将表项间的依赖关系建立表项依赖关系图(Table Dependency Graph,TDG),并依据依赖关系的种类对表项的执行顺序进行调整,从而实现缩短流水线长度,简化流水线结构的目的。此外,通过改变表项中“Action”部分的执行方式,从而彻底摆脱通过执行指令实现各种逻辑操作的低效执行方式。在流水线的结构设计过程中,根据设计的要求定义内部总线的带宽和表项的大小,从而减少非必要的资源占用,提高可重构芯片的资源利用率。实验结果表明,基于这种设计方法生成的网络报文流水线结构具有占用资源少、运行频率高、吞吐率高和延迟低的优点。其中本文所设计的解析器与现有的同类解析器比较,在同等资源使用率的情况下,吞吐率能平均达到两倍以上。最后,针对上述(逆)解析器和“Match-action”结构所组成的报文处理流水线,提出了一个将其快速实现至可重构芯片的转换方法:首先将该流水线结构中的各个功能模块抽象为不同的通用模板并组织成模板库(Template Library),并使用VHDL代码实现;然后将P4高级语言程序描述的网络报文处理功能及控制参数映射至对应的模板中并实例化;最后将各个功能模块按照设计要求进行连接,并生成可综合的VHDL应用代码。此外,在该框架中提出了评估库(Evaluation Library)的概念,并将其应用于流水线的优化和性能估计。该开发方法能够使网络开发人员在不考虑硬件细节的情况下,集中精力于网络应用的开发,以此提高开发效率和降低开发难度。