1引言
网络处理器(NetworkProcessor,NP)是一种专门针对网络应用设计的可编程器件,兼具了通用处理器的灵活性以及ASIC的高性能等特点,目前已广泛应用于互联网中.根据网络设备的需求不同,网络处理器可以应用于核心层、边缘层和接入层[1].其中应用于接入层的网络处理器主要面向终端设备,随着终端设备种类和通信量的急剧增长,对网络处理器的安全处理性能提出了更高的要求.根据国际工程任务组(IETF)制定的标准,目前主要通过IPSec、SSL等协议保证网络数据的安全.这两种协议都包括大量计算密集型的密码算法,而传统的网络处理器大多通过软件的方式实现安全协议,给终端设备带来了较大的计算负担和网络延时.针对这一问题,近年来提出了一些网络安全处理器的设计方案[2-4],但是大多都采用同一设计思路,在很多方面还有较大的开发空间.本文从总线结构、存储结构等多个方面对网络安全处理器进行研究,提出了一种新的体系结构.
2网络处理器体系结构设计
2.1总线结构
片上通讯架构是处理器体系结构设计的关键,决定了网络安全处理器各功能模块之间的通信方式.根据处理任务类型的不同,网络处理器可以划分为控制平面(Control-plane)和数据平面(Data-plane)[1],不同平面上的功能模块对通信的需求不同,总线设计既要能满足所有模块的要求,又要节省片上资源.数据平面为控制平面通信特点如表1所示.从表1可以看出,控制平面位于网络处理器的顶层,需要对所有功能模块进行控制,但是对通信速度要求较低,而且数据路径简单,本文使用AHB总线实现控制平面传输.相比于控制平面,数据平面位于系统的底层,实时性高,对通信速度的要求高,而且数据路径复杂,容易成为总线通信瓶颈.多数网络处理器采用多个处理单元(ProcessingElements,PE)并行处理[5]或串行流水[6]的方式解决这一瓶颈,但仍存在编程模型复杂、资源利用率低等问题.针对这一问题,本文将宏流水的思想引入到总线设计中,将网络处理器的数据流传输路径分为接收级、处理级、发送级,使用高速AXI总线实现网络数据流水化处理.本文使用处理单元的平均工作频率大约为200MHz,假设处理1个数据包需要500个时钟周期,则要完成全双工数据包处理,处理器每秒钟可以处理的数据包个数为200MIPS÷500Inst/Packet÷2=0.2MPPS.式中,MPPS指MillionPacketsPerSecond,数据包长度按平均长度150字节计算,则处理器的吞吐率为0.2MPPS×150byte×8bit/byte=240Mb/s.以太网MAC的通信速度可达1000Mb/s,PCIE的通信速度最高为5Gb/s,因此处理级流水段是整个流水线的瓶颈,本文通过设置多个处理单元,采用多核并行处理的方法消除宏流水线通信瓶颈,使总线通信速率达到最大.
2.2存储结构
目前网络处理器存储结构大多采用基于本地存储器或基于Cache的存储结构[7],能够较好地适应网络协议解析的处理特点.然而,网络安全处理器除了进行网络协议解析外,还需要对数据包进行加解密处理,属于深度处理应用,具有重复性差、无回溯等典型的流处理特点,使用上述存储机制会带来Cachemiss等问题,导致存储系统性能下降[8].本文借鉴通用处理器存储体系结构,将面向流处理领域的流存储机制应用到网络安全处理器中,提出了基于流存储机制的层次化存储模型,如图2所示.根据上一节的分析,处理级采用多核并行处理技术,其中每个处理单元都有各自的私有存储,各处理单元间通过共享存储互连成“簇”(Cluster),构成二级存储单元结构.处理单元可以通过硬连线的方式直接访问簇内共享数据存储器,增强了各处理单元之间的耦合程度,同时减少数据写回主存再读取的重用开销.簇内共享存储增强了存储体系的层次性,避免了频繁的片外存储访问,缓解了本地存储与片外存储之间的速度差距,提高了通信速度.流存储单元用于管理数据在处理单元与片外存储之间的传输.网络安全处理器的处理单元与片外存储之间的数据传输比较频繁,当数据段存放在片外存储器的不同区域时,通过流存储单元、软件调度等技术可以对传输数据流进行重新组织,实现批量数据传输.同时,当处理单元对数据包的某一段进行处理时,通过流存储单元可以实现对待处理数据的预取,避免了处理单元访问本地存储失效而需要再次访问片外存储的延时.流存储机制适应了深度处理应用特点,能够实现数据传输与运算执行、输入与输出等多种并行,提高了网络处理器处理单元的并行性开发.基于流存储的层次化存储模型对应的硬件结构如图3所示,主要由总线接口、流存储单元(Stream,SM)、中央调度器(CentralScheduler,CS)、共享存储(SharedMemory,SM)、网络安全处理单元(Net-workSecureProcessingElement,NSPE)等部分组成.(1)AXI总线接口多核网络安全处理单元既可以作为总线从设备又可以作为总线主设备使用.当作为从设备时,控制平面CPU通过AXI从接口完成对流存储控制器的寄存器配置、传输描述符输入、数据包输入/输出等工作.当作为主设备使用时,网络安全处理单元具有总线控制功能,流存储控制器可以通过AXI总线主接口向总线发送传输控制信号,在获得总线使用权后可以向目的设备地址写入数据或从源设备地址读取数据,减轻了控制平面CPU的负担,提高了总线使用率.(2)流存储单元流存储单元包括流存储控制器和流数据缓存.流存储控制器负责数据在处理单元内部存储和片外存储之间的传输,通过链表DMA的方式完成数据传输,实现数据预取与DMA传输相结合的优化策略.链式DMA传输指将多组DMA传输串连,每一个DMA传输的目的地址和数据长度都可以不同,直到本次所有DMA传输完成后向总线发出中断完成信号.流数据缓存是连接片外存储和处理单元本地存储的中间缓存,用来缓存处理单元输入/输出数据,匹配总线数据传输速率和处理单元处理速率,可以分为输入缓存FIFO和输出缓存FIFO,深度均设计为512×32bit.(3)中央调度器中央调度器是整个流存储机制的控制核心,起着流存储控制、任务调度、协调系统中各单元正常工作的重要作用,完成流数据缓存部件与处理单元本地存储之间的数据调度.中央调度器由一个通用微码处理器构成,通过执行微代码实现对流存储单元的控制.(4)本地存储本地存储用于存储待处理数据和中间结果,供处理单元调用.和流数据缓存一样,本地存储使用FIFO缓存数据,为提高数据传输速率,网络安全处理单元的本地存储采用输入/输出相分离的结构,即本地存储分为输入缓存和输出缓存两部分,各为256×32bit.(5)簇内共享存储簇内共享存储采用一个大小为4KB的共享数据RAM.为提高访存速度,处理单元与共享存储之间采用硬连线的方式连接,处理单元对共享存储的访问需要2个时钟周期,仅比本地存储多1个时钟周期,与传统多级存储结构中的访存延时相比有了很大改善.为解决不同处理单元同时访问共享存储带来的访存冲突问题,同时出于硬件精简性和低功耗特性考虑,簇内共享存储采用固定优先级的方式以避免复杂的仲裁逻辑.(6)片外存储片外存储器负责接收/发送数据包、系统程序、配置信息等的存储,设备通过总线访问片外存储.通过在网络处理器中引入流存储机制,一方面通过数据预取减少了处理单元访问片外存储的延迟,另一方面通过链式DMA传输,加快了数据传输速率,提高了总线利用率,更加符合网络安全处理器的需求.
2.3安全防护电路
网络安全处理器芯片属于安全芯片范畴,除了为通信数据进行安全保护外,其本身也要进行安全防护,本文设计以下安全防护电路实现这一目的.JTAG:通过JTAG模块可以实现对JTAG接口的管理,使普通用户无法通过该接口访问芯片内部信息,保护芯片安全.环境检测:用于对芯片电压、温度以及内部频率进行检测,当芯片内部工作环境超出正常范围时,该模块向CPU发出中断请求.噪声源:用于产生对数据包加解密过程中需要的随机数,同时可以产生随机功耗.包含随机数检测机制,当随机数的品质不符合要求时产生中断请求.CLKM:时钟管理模块,通过配置寄存器可以关闭当前不需要的时钟,降低系统功耗.2.4整体结构网络安全处理器的整体结构如图4所示.AXI1、AXI2和AXI3构成了网络安全处理器数据平面宏流水结构,接收级、处理级和发送级分别连接在三条高速AXI总线上,AXI4为存储访问总线,流水线各级设备均可以通过该总线访问SRAM2.AHB总线为控制平面总线,该总线上只有一个主设备CK810CPU,负责对所有设备进行配置和管理,X2H为总线桥,实现了AXI总线设备与AHB总线设备之间的通信.低速总线APB用于连接系统外围低速设备.NSPE是整个网络安全处理器的处理核心,采用实验室自主开发的处理引擎实现.NSPE采用VLIW指令架构,具有面向密码运算和网络协议解析进行优化的指令集,能够高速实现协议解析和数据包的加解密处理.MAC控制器是系统的以太网接口部件,它在NSPE的控制下对外围PHY接口进行控制,实现以太网数据包的接收/发送.PCIE控制器管理系统的PCIE总线接口,用于连接外部终端设备,实现了网络安全处理器与终端设备之间的高速通信.通过CPU对PCIE控制器的寄存器进行配置可以实现对通信速度、工作模式等的控制.ROM为只读存储器,用于存放系统引导程序,NandFlash用于存放用户程序,系统上电后,CPU从ROM中读取指令执行,完成系统引导,然后直接跳转到用户程序区,将NandFlash中存放的用户程序搬移到CPU指令Cache中执行.看门狗定时器WDT可以检测系统程序运行状态,避免程序锁定.TIMER是一个计时器/定时器,可以为系统提供周期的定时中断.中断控制器IN-TC用于接收其他模块的中断信号,并将这些中断请求发送给CPU.异步收发传输器UART可以实现串行通信与并行通信之间的传输转换.GPIO为通用可编程接口,可以通过软件配置成输入或输出.
3性能评估
本文使用Verilog硬件描述语言对整个处理器系统进行实现,并采用65nmCMOS工艺标准单元库,使用DesignCompiler逻辑综合工具对系统进行综合,结果如表2所示.为了评估系统的整体性能,本文在仿真环境下对系统进行了功能验证和性能评估,选择若干初始输入长度从1kB到32kB的数据负载,请求网络安全处理器进行密码算法及IPSec、SSL协议处理,测试网络安全处理单元的整体吞吐率,并与文献[2]和文献[4]中的进行对比,结果如表3所示.从表中可以看出,高性能的体系结构设计、基于宏流水总线的数据传输路径,以及优化的存储结构使本系统在大多实验情况下优于同类网络安全处理器.
4结束语
本文提出了一种面向终端设备的高性能网络安全处理器体系结构,该处理器采用基于宏流水的数据传输通路,提高了总线通信速率.基于流存储机制的层次化存储结构更加适合网络安全处理特点,大幅提高了处理单元的并行处理能力.同时设计了安全防护电路,保证了整个系统的安全性.通过与同类处理器相比可以看出,本文设计的网络安全处理器具有较高的性能,可以应用于各种终端设备.
作者:朱宁龙 曲思源 戴紫彬 单位:解放军信息工程大学 密码工程学院