第三部分 网络处理器技术

Preview:

DESCRIPTION

第三部分 网络处理器技术. 主要内容. 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡. 1.1 第二代网络系统回顾. 第二代网络系统对第一代网络系统的扩展: 将包的分类和转发功能下放到 NIC 上 引入了快速数据通路的概念 优点:可以支持更多的网络连接 缺点:仍依赖通用 CPU 处理例外的包,当集合包速很高时, CPU 仍然是瓶项。. 1.2 第三代网络系统. 出现于上世纪 90 年代后期 - PowerPoint PPT Presentation

Citation preview

第三部分 网络处理器技术

主要内容 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡

1.1 第二代网络系统回顾

第二代网络系统对第一代网络系统的扩展: 将包的分类和转发功能下放到 NIC 上 引入了快速数据通路的概念

优点:可以支持更多的网络连接 缺点:仍依赖通用 CPU 处理例外的包,当集合包速很高时, CPU 仍然是瓶项。

1.2 第三代网络系统 出现于上世纪 90 年代后期 在每个网络接口上使用定制的硬件处理例外的包及高层协议(至第四层),即执行数据面( data plane )上的所有任务:

第一、二层功能:市售的物理层芯片组 第三层基本功能、包分类及转发: ASIC 硬件 第四层协议及例外包:嵌入式处理器 流量管制、监视和统计: ASIC 硬件

标准 CPU 负责执行控制面( control plane )上的任务。

第三代网络系统的概念组织

嵌入式处理器 为什么采用嵌入式处理器而不是 ASIC ?

处理任务不涉及快路径,不需要太快的速度 第四层协议庞大而复杂,采用软件实现比较合适

为什么选用 RISC 而不是 CISC 处理器? CISC 处理器的大指令集对于协议处理没有增强作用 RISC 的指令集比较简单, CPU 可运行在较高的频率 RISC 芯片的硬件接口比较简单,硬件设计较容易 RISC 处理器通常比较便宜,且功耗较小

第三代网络系统的问题 由于执行一个复杂的任务需要许多条指令,当集合速率很高时, RISC 处理器仍然是瓶颈。 上世纪 90 年代中期,工业界普遍认为能够处理因特网骨干连接的唯一可行技术是专用芯片。 使用 ASIC 代替 RISC 处理器的缺点:

开发周期长:设计复杂,芯片设计者不了解协议处理,修改费时 成本高:开发周期长,生产成本高,修改代价高,产品寿命短 仿真困难:对协议栈进行大量仿真不可行 可重用性低:在不同的产品、不同版本的产品中几乎不能重用或重用很有限 需要专业人员

RISC VS. ASIC 是一个两难的抉择。

1.3 第四代网络系统 目标:

结合第一代网络系统的灵活性与第三代网络系统的高速度。 在因特网早期,第一代网络系统能够很好地适应新的协议标准和网络功能。 IP 协议的相对稳定及以太网成为企业网主流技术减小了对网络产品灵活性的要求。 为什么仍然需要灵活性:

新的 IP 特性(如QoS ,MPLS ,多播,移动 IP )要求网络产品支持新的应用 网络接口的类型在增加

1.4 网络处理器的概念 网络处理器的设计目标:

结合 ASIC 的高速度和嵌入式处理器的灵活性, 网络处理器的定义:

网络处理器是一种专门针对网络处理而优化的可编程芯片,它结合了 RISC 处理器的低成本和高灵活性以及 ASIC 硬件的高速度。 网络处理器应具有的特点:

较低的成本 简单的硬件接口 内存访问能力 可编程能力 可扩展到高速度

网络处理器的基本设计思想 通过可编程性获得灵活性,通过灵活性降低成本:

类似于常规处理器,硬件保持不变,通过软件来控制包的处理。 硬件复用性好,可应用于任何一种协议处理。 方便系统设计、实现、修改和升级,缩短开发周期。

高性能设计的关键: 针对协议处理优化的指令集(通用性 VS 速度) 利用多处理器体系结构获得可扩展性(并行 VS 流水线)

网络处理器的位置 目前

比传统 CPU贵,比 ASIC慢 比传统 CPU 快,比 ASIC 便宜

网络处理器 VS. ASIC 用 ASIC 开发的系统

开发成本高(一百万美元) 生产成本低

用网络处理器开发的系统 开发成本低 生产成本高

使用网络处理器的动机主要是经济方面的: 开发成本比 ASIC 低 处理速度比传统 CPU 高

1.5 网络处理器的一般设计问题 网络处理器的设计取决于:

要执行的操作 在网络系统中的作用

研究目标: 一个通用、优化的硬件设计,能够应用于系统体系结构中的任何地方和处理任何协议

设计的困难: 不仅要求功能全面,而且要求功能最小化

包处理功能 地址查找和包转发 差错检测和纠正 分片、分段和重组 解多路复用 包分类 排队和包丢弃 调度 安全:认证和保密 流量测量、整形和管制 定时器管理

问题 以上列出的任务包括所有的协议处理了吗?哪些功能的优化是最重要的? 以上功能如何映射到一个典型的网络系统的硬件单元上? 在一个典型的网络系统中,哪些硬件单元可以用网络处理器来替代? 实现以上功能的最小通用指令集是什么?

1.6 任务分组 为设计最小指令集,将协议处理任务划分成几个组,分别找出适合于每一组任务的指令集,然后将它们集成到一个最终的指令集中。最常见的一种划分方法是将包处理任务分成两个组:

当包到达时执行的处理,称为 ingress 当包离开时执行的处理,称为 egress

Ingress 处理差错检测和安全检验 分类或解多路复用 流量测量和管制地址查找和包转发 包头修改和传输层接续排队和调度 包重组或流终止

Egress 处理 校验码生成 地址查找和包转发 分段或分片 流量整形 定时和调度 排队和缓存 输出安全处理(如加密)

Ingress 和 Egress 的分界线

1.7 并行和分布式处理结构 提高网络处理器扩展能力的三种技术:

包括专门的硬件单元用以处理特定的任务 关键的硬件单元被复制多份,各自独立运行(并行或流水线执行) 网络处理器工作在分布式环境,可以一起工作以获得更高的集合吞吐量

对扩展性的关注给网络处理器的设计带来很大的困难: 必须选择适合每个特殊任务的硬件单元 选择要被复制的硬件单元 选择支持分布式执行的硬件单元 缺乏网络协议的经验,硬件设计者没有现成的经验规则可以使用。

1.8 网络处理器在网络系统架构中的作用 代替一个常规的 CPU 增强一个常规的 CPU 用在 NIC 的输入路径上 用在 NIC 和交换结构之间 用在交换结构和输出接口之间 用在 NIC 的输出路径上像其它端口一样连接到交换结构上

代替一个常规的 CPU 网络处理器必须具有常见的 CPU 功能和优化包处

理的特殊功能 指令集中应包括:

常规指令:算术指令,数据操作指令 特殊指令:处理数据包的指令

增强一个常规的 CPU 将网络处理器附加到一个常规 CPU 上

CPU 执行大部分的包处理 网络处理器执行特殊的任务

两种结构上的方法: 作为预处理器:在包进入 CPU前进行处理,比如从硬件端口获取数据包,执行 Ingress处理等 作为协处理器:可以执行任何操作

使用网络处理器来增强 CPU 而不是替代 CPU 的优点: 不用考虑常规指令,网络处理器的设计复杂度低

缺点: 需要有调用网络处理器的硬件,增加硬件开销

置于 NIC 的输入路径上 网络处理器从输入端口获取数据包,执行 Ingress操作 优点:

灵活性好,可以方便地修改 Ingress 处理

置于 NIC 和交换结构之间 网络处理器作为 NIC 和交换结构之间的仲裁者。 通过与交换结构的控制器交互建立路径、传输数

据和释放路径。

置于交换结构和输出接口之间 在使用分布式控制机制的交换结构中,每个输出端口控制对自己的访问。

当输入端口准备好使用交换结构时,输入端口使用另一个独立的机制通知输出端口;输出端口调度请求,在交换结构准备好时通知发送者。

网络处理器可用于协调输出端口的访问。

置于 NIC 的输出路径上 网络处理器执行 Egress处理,从交换结构接收分组、管理队列、流量整形、向输出端口发送包等。

直接连接到交换结构上 网络处理器可以像任何其它端口那样连接到交换结构上,从而可以作为一个中间节点,执行包处理任务。 如果将多个网络处理器连接到交换结构上,系统可以将输入的数据包分布到整个网络处理器集合。 优点:

易于扩展 允许最大的并行性

1.9 宏观数据流水线 每个 stage 由一个网络处理器实现,网络处理器直接连接到交换结构上,利用交换结构提供相邻stage之间的连接。

优点: 支持异构处理器,降低对网络处理器通用性的要求 允许跳过流水线中的某个(些) stage ,克服了流水线的一个主要缺点。

1.10 网络处理器设计和软件仿真 硬件设计者依靠软件仿真评估设计的性能和正确性 和常规处理器不同,传统的软件基准测试对于网络处理器

不适用: 不同体系结构的低层硬件细节不同,应用和基准程序不能在不同

的网络处理器间共享。 软件必须被重写以适应要测试的体系结构,甚至可能需要完全重新组织,这使得性能比较很困难。

网络处理器设计的关键是软硬件协同设计。

1.11 网络处理的其它方案 Net ASIC

一类特殊的网络处理集成电路的统称,包含能实现大部分网络处理功能的辅助硬件,但不可编程。 优点:

全硬件实现,具有确定的处理性能 软件开发环境是开发人员熟悉的

采用 Net ASIC 的公司大多缺乏设计和工程经验,缺乏资金或者市场,无法忍受专用 ASIC漫长的开发周期,另外也不愿意去学习陌生的开发平台,导致开发周期延长。 由于商业的原因, Net ASIC 的开发进程已终止。

网络处理的其它方案(续) 基于 IP Core ( Intelligent Property ) 设计:

20 世纪 90 年代得到广泛应用,现在一个完整的 SOC包括了多个结构化的核心电路模块。 系统设计者向可靠的第三方获取电路核心设计的使用许可,避免重新设计 核心电路采用标准化设计,易于集成 模块可重用,缩短开发周期 授权费用高昂 主要客户是大的网络设备提供商,市场较小。

主要内容 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡

2.1 网络处理器体系结构的多样性 多种网络处理器体系结构存在:

网络处理器内在的复杂性允许采用多种不同的体系结构来设计 固定用户群的缺乏给了开发商在选择设计方案时有更大的自由度 工业界对于网络处理器设计的许多问题没有一个统一的认识

哪些协议处理功能要映射到专用硬件上,如何映射 网络处理器在整个系统体系结构中的最佳作用 网络处理器中应包括哪些硬件构件块,哪些硬件功能要被复制,如何组织各个部件如何在多个网络处理器之间建立有效的分布式连接

2.2 网络处理器体系结构的主要特征 处理器体系( processor hierarchy) 存储器体系(memory hierarchy) 内部传输机制:在芯片内部各功能单元之间提供数据通路 外部接口和通信机制:与网络系统其余部分的连接 专用硬件 轮询和通知机制:异步事件处理机制 并发执行支持:最大化系统吞吐量 编程模型和范例( programming model and paradigm) 硬件和软件分配机制( hardware and software dispatch mechanisms) 隐式或显式并行

处理器体系 指执行各种包处理任务的硬件单元,包括可编程的和不可编程的 一个典型的网络系统中的处理器体系:

网络处理器中包含的处理器 网络处理器通常包含了许多协同工作的物理处理器:

一个或多个嵌入式处理器,处理高层协议和提供整体控制 一个或多个专用协处理器,为特定的包处理任务而优化 一个或多个 I/O处理器,以线速执行 ingress和 egress处理 一个或多个与交换结构的接口 一个或多个数据传输单元,在 I/O设备与内存之间传递数据包。

存储器体系 分级存储系统可以较低的代价获得较高的性能:

分级存储系统呈金字塔形,等级越高的存储器容量越小、速度越快,成本越高 各种数据依照访问频度的高低放在相应层次的存储器中

网络处理器芯片通常不包含大容量的存储器,但包含接口硬件。 存储器体系是对网络处理器的基本补充。

内部传输机制 在网络处理器芯片的功能单元间提供数据通路的任何机制,用于传送元数据、数据包及辅助数据等。 由于网络处理器芯片包含多个独立的处理器,内部通信对于性能来说非常重要。 大多数网络处理器包括多种传输机制:

内部总线:提供连接多个功能单元的数据通路,多数使用集中式访问控制,确保每次只有一个单元访问总线。 硬件 FIFO:用于连接不同速度的功能单元 传输寄存器:提供缓存的传输,不要求顺序访问 片上共享存储

外部接口和通信机制 外部连接包括:

标准和专用的总线接口:处理电气连接的细节和提供对片上处理器的总线访问; 存储器接口:优化与存储器的交互; 直接 I/O接口:允许片上处理器访问外部 I/O设备; 交换结构接口:处理与交换结构的接口细节

专用硬件除协处理器外,网络处理器可以包含至少两类专用硬件:

控制硬件:协调硬件单元对共享资源的访问 可配置硬件单元:其参数可被配置,然后被调用执行某个任务,是对专用协处理器和完全可编程处理器的一个折衷。

轮询和通知机制 处理异步事件的两种机制:

轮询:要求一个活动单元不断地测试与事件相关的硬件 通知:用硬件或软件中断实现

高速系统倾向于使用轮询以避免中断的开销。

并发执行支持 一个典型的网络处理器在多个层次上提供对并发线程的支持:

嵌入式 RISC 处理器中:由操作系统提供并发支持,上下文切换开销大 低级 I/O处理器中:由硬件提供并发支持,切换代价很低或没有

两个问题: 线程的执行可否跨越多个处理器:全局线程提供更多的灵活性,但带来处理器间切换的开销。 线程是否可抢占:允许抢占则编程比较容易,不使用抢占则程序员有更多的控制处理的能力。

程序设计的硬件支持 对程序设计的两种最流行的硬件支持形式:

异步事件处理程序:程序员创建一组处理程序,每个处理程序同一个特定的事件关联,当事件发生时系统调用相应的事件处理程序。事件可能来自硬件或软件。 通信线程:多个线程独立执行,线程使用进程间通信机制将数据从一个线程传递给另一个线程。一个线程典型地执行一个无限循环。 do forever {wait for next input packet, P;process P;send P on to next thread; }

硬件和软件分配机制 分配( dispatch)是指对并行或并发任务的整体控制 分配器将一个准备就绪的任务指派给一个特定的处理器或线程

可以使用硬件或软件来控制分配,一般而言, 软件分配用在有操作系统的处理器上 硬件分配由没有操作系统的低级 I/O处理器使用

显式或隐式并行显式并行:

硬件体系结构的并行细节暴露给程序员 程序员具有更多的控制执行的能力 要求程序员了解底层硬件细节 程序可重用性差

隐式并行: 向程序员隐藏硬件体系结构的并行细节,程序员采用单线程执行模式编写程序,由硬件自动完成并行化处理。 减小了编程的复杂度,易于程序重用。

2.3 网络处理器的主要设计风格 嵌入式处理器加不可编程的协处理器 嵌入式处理器加可编程 I/O处理器 多个并行的处理器 处理器流水( pipelined processors) 数据流( dataflow)

嵌入式处理器结构

单个处理器,处理所有的功能 称为 run-to-completion

并行体系结构

每个处理器处理总负载的 1/N

流水线结构

每个处理器执行一个功能 数据包穿过流水线

处理器的时钟速率 单处理器结构中,处理器的处理包速为线速。并行结构中,每个处理器的处理包速为 1/N线速,时钟速率为单处理器结构时钟速率的 1/N 。 流水线结构中,每个处理器的处理包速为线速,时钟速率小于单处理器结构时钟速率,理想情况下为 1/N 。

数据流体系结构 一个数据流处理器由一个大内存和一个选择器硬件组成; 内存中的每一个数据项包含一个标签,说明需要进行的处理; 当一个功能单元空闲时,选择器从内存中选择一个数据项交给功能单元处理; 数据流结构可以有多个并行执行的功能单元以提高性能

每个功能单元的时钟速率可以降低 选择器和内存仍必须运行在线速以上

2.4 软件体系结构 集中式程序,像调用子例程一样调用协处理器 集中式程序,与智能可编程 I/O处理器上的代码交互 通信线程 事件驱动程序 RPC风格(程序在处理器之间划分) 流水线(即使硬件不使用流水线) 以上模式的组合

可编程处理器的使用例子 最佳利用底层硬件特点的软件体系结构必须被设计为与处理器体系相匹配,特别是每个处理器被用来处理与其能力相适应的任务。 通用 CPU

最高级功能,管理接口,系统控制,整体管理功能,路由协议 嵌入式处理器

中间级功能,高层协议, I/O处理器控制,异常和错误处理,高级的输入处理(如包重组),高级的输出处理(如流量整形) I/O处理器

基本包处理,分类,转发,低级的输入 /输出操作

数据包流经处理器体系 包处理任务应当被分配到能够执行该任务的最低级处理器上去执行。 I/O处理器的处理能力对系统性能的影响很大。

主要内容 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡

3. 网络处理器的扩放( scaling ) 扩放:支持更高的数据速率或更多的网络接口 限制网络处理器扩放规模的主要因素:

处理器(处理速度) 内存(访存速度)

其它因素: 芯片面积,电气及光学特性,软件,……

3.1 处理能力的扩放提高单个处理器的处理能力 增加处理器的数目 增加处理器的类型

( 1 )提高单个处理器的处理能力这里主要指提高低级处理器的处理能力。提高时钟频率:

受底层硬件技术限制 当外部延迟控制处理时间时,对于扩放无帮助

提高并行度(允许多个执行线程): 在不提高处理器速度的前提下支持更高的网络流量 可用线程数受( I/O处理时间 /计算时间)的限制

( 2 )增加处理器的数目 使用多个处理器拷贝,并使它们并行工作。 问题:需要多少个处理器拷贝? 在处理器体系中,较低的处理器需要处理较多的数据流,越高级的处理器需要的处理能力越少,因此越低的处理器等级从并行获得的收益越多。 两个因素限制处理器的数目:

处理器之间的协调机制可能成为瓶颈 可以复制多个协调机制,令每个机制只协调少量处理器

内部数据通路和内存可能成为瓶颈

处理器等级的扇出 扇出( fan out ):表示并行性随处理器等级的下降而增大的概念。

( 3 )增加处理器的类型 增加处理器类型的三种方法:

在处理器等级中插入新的层次 将新的协处理器插入到一个异构流水线中 增加新的协处理器,用以缷载嵌入式处理器或 I/O处理器中的计算

原则上,常规处理器控制下的专用协处理器可以提供扩放。实际上,常规处理器以及在常规处理器和协处理器之间传递数据和结果的机制可能成为一个瓶颈。

组织成流水线结构的一组协处理器常常比集中控制下的协处理器运行得快。

3.2 存储器扩放 任何一种处理器扩放都要求有相应的存储器扩放。 存储器等级和处理器等级之间没有直接联系。 存储技术的选择通常涉及对以下四种主要存储特性的权衡:

存储大小:一般可以预先确定或者和系统规模有关 访存延迟和访存周期:

访存延迟是存储器芯片对一个访问请求的响应时间,访问外部存储器比访问片上存储器要慢大约一个数量级。

访存周期定义为两个连续请求之间所需要的最小时间间隔 特定应用:针对特定应用选择合适的存储技术 成本:设计者通常选择一个满足给定需要的成本最低的存储器

存储器扩放的措施 增加内存大小 增加内存带宽 增加存储器种类 增加高速缓存 增加内容可寻址存储器( CAM)

( 1 )增加内存大小 某个等级上的存储器大小与处理器数目没有关系,而是倾向于和成本成反比。

( 2 )增加内存带宽 内存带宽:存储器一次可以传输的数据比特数。 优点:

增加内存带宽可以加快块数据的传输 缺点:

增加内存带宽不能减少小数据量传输所需的时间 要求较多的芯片物理空间和较多的外部连接

( 3 )增加存储器种类针对特定应用使用合适的存储器技术

( 4 )增加高速缓存 高速缓存是一种用来减小访存延迟的技术。 原则上说, Cache 能够极大地提高性能。 但 Cache 不能解决扩放的一般性问题:

Cache 的有效性取决于数据访问的重复性,但包处理任务一般不具有高引用时间局部性。 弥补以上问题需要较大的 cache空间,占据较多的芯片面积,并要求较长的搜索时间。

一般而言, cache 对于网络处理器的扩放作用不大,因为它对于处理一系列低引用时间局部性的包来说是非常低效的。

( 5 )增加 CAM CAM是一种支持快速搜索和数据存储的存储机制,主要用于改善查表操作的性能。

CAM被组织成一个二维阵列,其中每一行的长度固定,称为一个槽。

CAM提供的查找操作是并行匹配,处理器提供一个查找关键定, CAM返回匹配该关键字的一组槽,响应时间一般不超过 100ns。

CAM的组织

TCAM 的实现 硬件在每个入口存储一

个二进制数和一个掩码。 掩码的长度等于槽长度,

用于说明槽中哪些比特要和查找关键字中的相应比特进行比较。

TCAM对于快速包分类尤其有用,可以并行地执行分类表的查找,并返回一个分类 ID。 用 TCM查找分类表

Associative Memory 使用 CAM保存附加信息的概念可以推广以构成相联存储器。 与查找关键字相关的附加信息存放在一个单独的 RAM中。 CAM的每个槽放两个值,一个查找关键字和一个指向 RAM中附加信息的指针。 这种间接关系允许程序员不修改硬件而改变查找关键字和附加信息之间的绑定。

用 CAM 构建的相联存储器

3.3 其它制约扩放的因素 芯片面积

有限的空间限制了并行和存储的数量,不能将任意数量的处理器或存储器加到一个芯片上。 可用空间也限制了内部连接的选择,特别是内部数据通路的带宽通常取决于并行线路的数目。

时钟偏移和信号传播延迟 信号传播延迟和时钟偏移限制了芯片的大小和数据通路的长度。

管脚 有限的管脚限制了芯片的可扩展性。

其它制约扩放的因素(续) 内部和外部通信

许多包处理任务是 I/O密集的,因此数据传输速度会制约扩放性。 内部通信机制提供片上通信,包括总线。 外部通信机制提供网络处理器之间或者网络处理器与其它设备之间的通信,包括外部总线和交换结构。

电气和热力学特性 功耗和产热限制芯片的复杂度和规模

软件 许多网络处理器要求程序员编写适合硬件的代码。 流水线结构上的软件扩展非常困难。 将一个软件移到一个规模更大的系统上要求手工完成大量的改动。

3.4 瓶颈和扩放 扩放网络处理器所要解决的最重要问题是:瓶颈在哪里? 网络处理器的瓶颈可能来自硬件和软件组件的某种意想不到的组合。消除一个瓶颈后,新的瓶颈会出现 网络处理器以及任何网络系统性能的提高都是通过不断地发现瓶颈和消除瓶颈来实现的。

主要内容 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡

4.1 两级流水线( Agere ) Agere公司的网络处理器称为 Agere PayloadPlus( APP )。 Agere 的第一代网络处理器使用三个芯片的结构:

快速模式处理器 FPP ( Fast Pattern Processor ):包分类 路由交换处理器 RSP ( Routing Switch Processor ):包处理 Agere 系统接口模块 ASI ( Agere System Interface ):提供主处理器到 FPP 和 RSP 的接口,维护数据流状态信息,获取统计信息

FPP 和 RSP 常被组织成一个两级流水线,线速地处理数据流。 主处理器提供系统控制和管理,包括路由表和虚电路( ATM)更新、硬件配置和例外处理等。

APP550 芯片的概念组织

模式处理引擎 PPE:流水线结构的具有 64个独立上下文的多线程处理器,以线速执行包分类。 流量管理器:队列管理、流量管理、输出包修改,包含最多 256K个包队列层次。 状态引擎:收集统计数据,提供给流量管理器进行流量管理和调度,与主 CPU接口。

Agere 网络处理器的特点 能够提供 RISC水平的灵活性和可编程能力:

分类器和流量管理器均为可编程。 Agere 开发的函数式语言 FPL是保证灵活性和多功能性的关键, FPL 编写的代码可以实现第二层及以上协议的处理。 包处理程序采用 FPL 编写,代码被编译成可被 PPE执行的指令。 调度和流量整形用类 C 的脚本语言 C-NP编写,在流量管理器上执行。

方便编程: Agere 网络处理器向程序员隐藏了 PPE的并行性,并允许程序员使用高级语言。 FPL的使用大大方便了程序员编程,程序员只需编写代码告知下层计算资源实现何种功能,而不需要考虑如何实现。 FPL能够大量减少指令的数目,显著提高软件工程的开发效率。

Agere 网络处理器的特点(续) 提供对流量管理的广泛支持

流量调度管理器包含了最多达 256K个包队列层次 支持大规模搜索列表

搜索和模式匹配专利技术:搜索任意长度的数据模式的时间取决于模式的长度,而与需要搜索的模式的数量无关。 PPE能够同时进行 64路数据包的解析和分类,不会出现 RISC环境中由于推理性执行失败导致的流水线停顿,也不会出现上下文切换的开销。

高性能 超过基于先进 RISC核心的网络处理器五倍 达到固定 ASIC 的水平,且提供 RISC水平的灵活性和可编程能力

4.2 增强的 RISC 处理器( Alchemy ) Alchemy 架构由一个嵌入式 RISC 处理器加上协处理器组成。

芯片的核心是一个增强了包处理能力的MIPS-32 CPU 指令集中增加了若干条与包处理有关的指令,如优化 CRC 或检查和的计算、计算比特串的某一位前有多少个 1或多少个 0 、预取内存、有条件地转移数据等。

由于芯片使用增强的MIPS 处理器,因而可以用 C编程。 芯片提供商提供了软件开发工具、嵌入式操作系统和其它支持软件。 功耗较低。

Alchemy Au1500 芯片的内部结构 芯片包含两个片上 cache :指令 cache 和数据 cache 。 嵌入式处理器可以访问各种 I/O控制器和功能单元。 两条内部总线:系统总线和外设总线。 一个 DRAM控制器 一个 SRAM控制器。

4.3 并行的嵌入式处理器加协处理器( AMCC ) AMCC 网络处理器由嵌入式 RISC 系统加上一组协处理器组成,其核心是网络优化指令集计算 NISC ( Network-optimized Instruction Set Computing)架构。 NISC 指令集是一个高度专用的指令集,裁减了不需要的指令,并优化了数据包解析、查找及修改等操作。 NISC 由 AMCC公司的专利 nPcore 实现,据估计, nPcore 引擎可获得 4 倍 ~12倍典型的 RISC 处理器的网络处理能力。 高速 AMCC 芯片提供并行的 nPcore , nPcore 的数目取决于设备所要满足的连接速度。 协处理器用于高速查找、包转换、收集统计信息等。 核心处理器用 C 或 C++编程, AMCC提供由编译器、汇编器和调试器组成的支持软件。 采用隐式并行,程序员像为一个单处理器编程一样,硬件自动进行并行化。

nP7510 的内部结构 6个并行的 nPcore 策略引擎:在一个时钟周期内同时查找第二、三、四层包头域。 测量引擎:收集统计信息。 包转换引擎:包头修改 片上存储和统一的存储访问单元 协处理器总线可以扩展到片外,适应更多产品的不同搜索要求。

4.4 同构处理器流水( Cisco ) Cisco公司的 PXF( Parallel

eXpress Forwarding)网络处理器是一个专用芯片,专为 Cisco 路由器而设计。

PXF使用并行的处理器流水:一个芯片包含 32个嵌入式处理器,分成四个并行流水线。

用一个单独的路由处理器提供控制功能和网络管理功能。

4.5 异构处理器流水( EZchip ) 由异构处理器组成的流水线,不同的处理器为不同的任务而设计,每一级使用一组相同的处理器。 使用任务最优化处理器 TOP ( Task Optimized Processor )引擎替代常见的 RISC 处理器,速度快约 10倍。 将大量快速高效的引擎集成在同一个芯片中并配置成超标量架构,使分组处理任务最优化。 四种 TOP 引擎,每一类都有一个内部指令集和为特定协议处理任务优化的数据路径:

TOPparse :解析包 TOPsearch:查表 TOPresolve :转发和 QoS决定,路由表和状态信息维护 TOPmodify:修改包

四种 TOP 引擎按照四级并行流水的方式组织在一起

EZchip NP-1 的内部结构

每个阶段都有多个 TOP 引擎执行相同的功能,每个阶段可对多个包同时进行处理。 每个阶段的多个 TOP 处理器都有自身的指令存储器 硬件调度器把到达的分组分配到流水线每个阶段的可用硬件上。 对网络处理器编码就是对四种 TOP 引擎编码

EZchip 网络处理器的特点 集成度高:

一片网络处理器芯片加上外部 DRAM就可以实现完整的交换卡。 基于 NP-1的解决方案,其芯片数量、功耗和运行成本大约为其它解决方案的 1/5。 第二代产品( NP-1c )处理能力提高一倍,而集成度更高、成本更低:

10Gb/s接口的 IPv6路由器只需要一个 NP-1c 和四个 DRAM,整体价格约为 820美元,功耗 17W。

4.6 大量不同的处理器( Hifn ) 基于 PowerNP 技术,包含了大量非常不同的嵌入式处理器、协处理器和其它功能单元。 嵌入式处理器联合体 EPC :

1个嵌入式 PowerPC 处理器:提供 CP ( Control Point )功能。 16个皮可引擎( picoengine ):数据路径处理,每个皮可引擎是多线程的。

各种协处理器:高速数据传输、校验和计算、队列操作、提供访问接口、流量管理、信号量。 广泛的编程支持

PowerNP 网络处理器的内部结构

4.7 灵活的 RISC加协处理器( Motorola ) 每个 C-Port 处理器被设计为执行 ingress和 egress处理。 每个 C-Port 芯片包含 16个包处理器,称为通道处理器( Channel Processor , CP )。 每个 CP 是一个具有独立编程能力的计算引擎,可独立执行不同的功能,如支持 ATM、以太网、 PPP等。 一个 CP 可被配置为以下三种方式之一:

专用配置:一个 CP 对应一个物理接口,适合于中低速接口。 并行配置:一组 CP被配置成一个并行簇,对应一个物理接口。 流水线配置:一组 CP被配置成一条流水线,对应一个物理接口。

C-Port 芯片的内部结构及并行簇配置

一个 CP 的内部结构 RISC 处理器

指令集为MIPS 指令集的子集 用 C 或 C++编程 主要运行应用程序

串行数据处理器 SDP 负责数据编码 /解码、帧封装 /解析、CRC检测等比特级操作 输入 SDP : CRC校验、解码、包头分析、域抽取 输出 SDP :帧修改、 CRC码生成、成帧、编码 SDP 可实现几乎所有的第一层接口和第二层协议处理 每个端口可以独立地配置不同的协议 使用微码编程

4.8 超长同构流水线( Xelerated ) 数据包要穿过一条极长的流水线( 200 个处理器) 每个处理器最多用四条指令处理一个包 流水线提供 11个外部访问点,在每个访问点上可以调用一个(片上或片外)功能单元,如片上 hash生成器、分类器、管制器或统计数据累加器等。

Xelerated X10q

主要内容 第三代网络系统与网络处理器 网络处理器体系结构 网络处理器的扩放 网络处理器举例 网络处理器的设计权衡

网络处理器 VS. 专用 ASIC经济的角度:开发成本 VS. 性能 技术的角度:可编程性 VS. 处理速度

网络系统设计 每端口速率 VS. 集合速率

若与每个端口关联的机制形成系统瓶颈,则系统性能受制于每端口速率 若交换结构形成系统瓶颈,则系统性能受制于集合速率 设计者必须平衡网络处理器的最大速率与交换结构的集合速率。

指令集设计 速度 VS. 功能:

小而专门的指令集:功能少,执行速度快 大而通用的指令集:功能强,芯片复杂,执行速度慢

协处理器设计 lookaside VS. flow-through

Lookaside 协处理器: 运行起来像过程调用,主处理器在需要时调用一个协处理器 优点:模块化,易于扩展 缺点:调用时需要传递全部信息

Flow-through协处理器: 用流水线方式处理数据,当数据通过时对数据进行修改必须工作于线速 集成在设计中,难以修改

流水线设计 均衡 VS. 同步

均衡( uniform)流水线: 每个功能单元用相同的时间处理一个包 级之间不需要缓冲或同步,成本低 较快的级必须等待较慢的级

非均衡流水线: 一个单元执行的功能决定了它所用的时间 可处理任意协议 相邻级之间需要缓冲,硬件必须同步级之间的时序和转发 最慢的级成为瓶颈

并行( 1 ) 成本 VS. 可编程性

显式并行: 要求较简单的硬件 芯片可能编程困难

隐式并行: 要求附加的硬件(向程序员隐藏并行行为),增加了成本,并可能稍微降低性能 芯片容易编程

并行( 2 ) 扩放性 VS. 包序

保持包序对于有些应用是必需的,或者能够提高某些应用的性能 放松包序的要求能够提高系统的吞吐量:

由于不需要执行复杂的包同步任务,协调硬件可以运行得更快。 数据包可以无延迟地发出,系统不会阻塞一个处理器或者令一个输出端口空闲。

并行( 3 ) 速度 VS. 共享状态

并行处理器必须同步对共享状态信息的访问,共享导致速度下降,因为任何一个时刻只允许一个处理器更新共享信息。 比如:当运行在 N 个并行处理器上时,静态分类可以获得 N倍的加速比,但动态分类的速度慢得多。

存储 速度 VS. 可编程性

存储器通常被划分成几个可以同时访问的 bank 最大访问速率只可能通过合理分布数据、避免访问竞争来得到,但这样编程比较困难。

输入 /输出 I/O性能 VS. 管脚数

较宽的总线允许较大的吞吐量 较宽的总线要求较多的管脚,增加了芯片的封装成本。高速设备中芯片的封装成本通常决定了芯片的成本。

编程语言 编程语言的设计体现了编程的容易性、语言的功能性以及代码速度三者之间的权衡:

易于编程 VS. 功能性 只包含小型专用高级指令集的语言容易使用,但缺乏处理任意任务需要的功能性。 包含能够处理许多任务的指令集的语言功能性强,但不易使用。

易于编程 VS. 速度 高级语言易于使用,但运行效率不高 低级语言运行效率高,但编程困难

速度 VS. 功能性 单一功能的语言易于产生出高度优化的代码 设计者必须通过减少功能性来换取较快的代码

多线程吞吐量 VS. 可编程性

支持多线程可获得较高的吞吐量 多线程增加了编程的复杂度

流量管理 速度 VS. 成本

低速率下,嵌入式 RISC 处理器能够执行流量管理及其它功能,成本较低 高速率下,流量管理要求专用硬件,增加了成本

存储类型 专用 VS. 通用

CAM 比 SRAM 和 DRAM 有较高的成本和散热 CAM提供较多的每 I/O 管脚功能,一次 CAM查找可以替代几次 SRAM/DRAM访问,并且不再需要查找协处理器。

使用 CAM 的一般考虑: 通常用于高端处理器以获得高性能 适合用于在包含少量大数据记录的数据库中进行快速查找 尽量避免使用 CAM 以降低成本。

设计新一代产品向后兼容 VS. 结构先进

新技术提供更高的速度和更好的功能性,但增加用户成本,包括要购买新的硬件和重写 /重测试用户软件。 向后兼容导致很少的成本或者没有增加成本。

多处理器设计并行多处理 VS. 流水线

并行多处理易于均衡负载,但每个处理器需要执行较多的处理。 流水线中每个处理器只需要执行较少的处理,但在各级间不易均衡负载。

实际的设计方案通常包含了流水线和并行多处理的组合。

结论 设计网络处理器时有很多的权衡考虑,权衡通常代表了在更强的功能性、更高的性能和较低的成本之间的选择。

Recommended