编者按:先进NPU架构通过将NISC架构的应用创建及调试工具、易于开发的并行多处理器编程模式和基于API的嵌入式内核结合在一起来加速应用程序开发,为系统设计者两方面的好处:高性能的专用嵌入式功能和易用性。
可编程网络处理器(NPU)开始侵入ASIC的领域,为设计工程师提供了另一个选择来实现更低的开发成本、更快的产品上市时间及更灵活的编程。然而,由于该领域对“线速”和可扩展性的要求不断增加,工程师通常需要使用多处理器架构,从而大大增加了编程复杂性。
封包过的网络协议通常必须使用顺序编程方法,而在多处理器环境中进行顺序编程则会面临一些问题,包括复杂算法的分割及负载平衡。
理想的一种解决方案是将这些挑战转移到编程环境中,而非加诸于程序员身上。要实现这一目的必须综合考虑各种关键因素。
首先,这种解决方案应该具有多处理器内核的性能,同时又能使用更为直接的单CPU编程模式,即单级单映像编程模式。概括地说,程序员可将此类多处理器抽象地视为一个单独的、顺序的编程实体,尽管实际上有多个内核、多项任务同时运行,处理多个数据包或单元。其次,这种操作系统或内核软件本身应该负责所有必需的处理器之间的协调工作。
最后,需要执行大量指令集来实现的通用网络功能(如流量管理、队列/调度、数据包转换、分类、搜索/查找、数据统计等)应该交给专用的片上协处理器完成。同时,软件架构应提供应用编程接口,通过单一指令就可访问每一项功能。总而言之,这些特性应使设计工程师能以尽量短小简单的程序来提供高性能的网络处理。
精简程序代码
为了以最精简的程序提供最强大的功能,硬件结构必须能将基于RISC的NPU内核的数据包处理和专用片上协处理器的数据包处理分开。在程序员看来,当程序针对某个协处理单元提出请求和接收数据时,这个协处理器便执行一个单指令操作。这种过程催生了一种“网络优化指令集计算(NISC)”器件。RISC和协处理引擎的组合可使程序员摆脱了一些常规而复杂的任务,同时在数据包处理的结构和流程上保持了软件编程的灵活性。
NISC架构有多个优点。它在性能和灵活性上进行了折衷,可使小巧的低功耗硬件发挥出较强大的应用性能。更重要的是,它可减少代码,简化软件。
与NISC相反,NPU解决方案在一定程度上用硬件实现了某些函数的流程顺序,因此灵活性较差,无法在今后增加某些算法设计或协议。此外,它与那些将大量通用RISC内核结合在一起来实现功能的架构也有所不同。后者的灵活性较强,但很多功能必须单纯地通过软件来实现,因此增加了复杂度。比较结果表明,为了实现类似的应用,此类架构需要编写、调试和进行性能调节的程序代码呈数量级增加。
“单一”模式
本文提供了一种方法,可通过简单的单级编程模式来配置一种多内核架构,每个内核全权负责某个数据包或单元。每个内核上的多个任务同时管理多个数据包或单元,从而可实现平滑的性能升级。这种方法是多处理器内核模式的逻辑逆过程,每个内核执行一级处理算法。
在多级模式的处理过程中,所有指定的单元或数据包在被处理时都必须串行地通过多个内核。
在并行单级模式中,每个到达的数据包或单元会被自动地指派给某个内核上一项空闲的(处于空闲状态)处理任务,并由这一任务全权(从头到尾)负责。我们可将整个数据流算法创建成单独的完整程序,就象将它置于单处理器CPU上一样,不过具有使用多内核进行性能升级的优点。
由于每个内核上的每个任务都执行相同的代码,因此这种方法也是“单映像的”。同时,就象对单处理器CPU一样,工程师可通过相同的直接方法来设计算法。当然,不同的帧会执行不同的代码分枝,不过由于无需编写代码,同时处理器在处理过程中也不用费时在内核或任务间传递数据包或单元,因此无论有多少任务和内核都极大地简化了编程。更重要的是,与某些NPU模式不同,程序员无需将一个算法细分成多级,也无需担心某级任务过度运行引起潜在的系统瓶颈从而费时来平衡多级负载或调节多级性能。
通过这种并行方法,从一代软件过渡到下一代时也更容易进行性能升级。随着时间的推移会加入更多的任务和内核来增加线速或应用性能,但由于所有处理器内核上的所有任务都运行相同的软件,因此无需再次细分算法或进行负载平衡。由于单级并行执行模式是多级流水线型,它还具有另一个优点,即性能对延迟或瓶颈不敏感。即使是在决策极多的网络处理环境中,条件语句和条件跳转也不会引起流水线崩溃。尽管处理某个特殊的数据包需要共用时间,其它内核也不会处于空闲状态等待前级任务完成。
统一内核
“内核”(kernel)软件由NPU内部操作系统层组成,这些层为程序员提供了统一的机制来管理NPU中的所有资源,同时还提供可通过API介入NPU操作的控制面板CPU。
内核提供通用应用基础架构的所有基本功能,从而极大地减少了系统开发人员所需编写的新代码。内核本身在多数应用所需的NPU驻留代码中所占的比例超过80%。
嵌入式NPU内核软件还提供了广泛的宏单元库,提供了数千行预优化代码,无需程序员重新编写。程序员只需要以恰当的语法和参数简单地调用宏,软件构建工具便会将宏进行扩展,创建所需的运行代码结构。
在了解了这种嵌入式通信应用操作所处的网络环境后,我们还应该为多层的通信调试工具提供相应软件,从而远程进行现场问题诊断及修改。内核软件提供了内建工具,支持可下载执行的applet,以完成诊断工作和系统升级等功能。例如,嵌入式控制CPU可对这些工具进行协议层的线上访问,这些工具可用于洗掉/重设系统、更新路由表或进行现场调试。由于applet的功能类似于“智能中断”,带有所需的可执行代码,这些周期性或特定的程序无需驻留在NPU中,从而节省了程序存储器用于现行中的操作。
精心合成
将网络处理器功能嵌入到高性能系统中是一项复杂的任务。它需要将编程模式、工具与一体化软件结构精心合成在一起,从而同时保证性能和灵活性。它必须支持快速方便的代码开发,同时可复用上一代产品的大部分代码。
业界领先的NPU架构通过将NISC架构的应用创建及调试工具、易于开发的并行多处理器编程模式和基于API的嵌入式内核结合在一起来加速应用开发,为系统设计者提供了两方面的好处:高性能的专用嵌入式功能和易用性。
作者:Robin Melnick
软件产品管理总监
AMCC公司
Eric Cowden
软件营销工程师。







京公网安备 11011202001138号
