论文部分内容阅读
“网络CPU”就像微处理器简化了电脑设计那样,正在把交换机、路由器、防火墙等复杂网络设备的设计及实现变得规范化和常规化。不仅如此,“网络CPU”通过提供强大实用的可编程性,既能缩短产品的面世时间,也能延长产品停留在市场的时间。可以预测,将来网络设备将大规模采用“网络CPU”和相关的支撑套片,这个模式与今天的电脑设计及产品化模式类似。流经网络设备的数据要经过两种通路:快通路与慢通路。快通路用于处理规范的、一般的数据包;慢通路处理带有选项的数据包,即须要特别对待的数据包。“网络CPU”处在快通路中,以线速度处理数据包流;而慢通路则交给一般的通用处理器(CPU)处理。因此,在一般情况下,“网络CPU”可用硬件速度处理网络工作,就像ASIC芯片那样,只在较少概率上才可能降低性能。此外,功能强大的“网络CPU”能提供数据流整形能力,根据用户事先设置的QoS策略来对数据包流做排队处理,使之能满足业务需求,这当然也是在物理速度上工作。
体系结构计算精细
就像通用CPU一样,“网络CPU”一般也采用多级流水线结构,保证一个时钟周期内完成一条指令。为简化设计并降低功耗,“网络CPU”一般都采用精简指令集(RISC)方案。另一方面,为提供极高的速度和比较高级的编程界面,“网络CPU”提供了多线程运行环境,在数据包的层次上给了多级流水线支持,即同一时刻可有多个数据流被处理。
“网络CPU”提供两个接口,一个联接网络端口,另一个联接交换芯片。后者是为实现多“网络CPU”系统,或者说多线路板系统。这里涉及了不同单元的接口,由此引发了标准化问题。各个“网络CPU”厂家在内部设计上可各显其能,但必须符合公认的接口标准,这样才能满足各厂家产品间的互通,目前这些标准正在逐步形成。
主要功能块有进 /出数据移位器(与以太网PHY或者POS的接口)、交换芯片接口、进/出口队列调度器(完成数据在“网络CPU”内部的移动,主要是通过指针以节约开销),以及最核心的嵌入型处理器。注意此处的嵌入型处理器采用的是HARVARD架构,内含8个DPPU(对偶协议处理器),每个DPPU具有两个CLP(微码处理器),每个CLP又能保持两个线程(当然同一时刻只可执行一个),这样嵌入型处理器就能同时运行16个线程,而能保持32个线程的运行环境,这样做的目的是在某个线程等待时,CLP可运行它的另一线程。可见,为保证性能,“网络CPU”的设计者会细算每个时钟周期。
“网络CPU”的编程能力体现在这些微码处理器上,“网络CPU”能力的一个重要指标是在线速下每个数据包可获得多少指令周期,速度越高,或者数据包越长,每个数据包可获得的指令周期就越少。一个很典型的数字是在OC-48的情况下,64字节的数据包可获得1000个左右指令周期。可以想像一下,用C语言做IP包处理时得用多少语句!可见编制微码程序不是什么容易的事,尤其是在头脑里要时刻有性能约束的条件,必须“压榨”每一条指令,并考虑指令间的同步关系。编写那些复杂网络设备的微码,比如防火墙,不能说没有可能,但这是一个非常艰巨的任务。即便这样,可编程性(尤其是有的“网络CPU”可直接用C语言来编程)毕竟比那种固定的ASIC芯片要友好得多。
应用探索
“网络CPU”用于实际产品开发的一个必要条件,是“网络CPU”需要具有完美的可塑性。换句话说,就是如果“网络CPU”在某个方面编程效果的功能或者性能表现得强差人意,那么人们是否选择“网络CPU”进行开发就成疑问了。无论模拟工作与假想工作做得多好,如果没用“网络CPU”实现令人信服的产品,那么“网络CPU”仍旧只是个实验室里的高级玩具。
就目前评价很高的IBM的NP4GS3及Intel的IXP2800来说,前者比较适合实现传统的路由器或三层交换机,其最高端口速率为OC-48;后者的最高支持端口速率为OC-192,并集成了加密功能,包含3DES及SHA-1等基本的加密算法,从而可有更广泛的应用范围。但矛盾的地方是,这些“网络CPU”面向高端应用,但高端产品很少有用“网络CPU”的。具体原因还不得而知,现在可以肯定的是,“网络CPU”目前的应用水平还处在探索阶段,我们希望的那种一目了然的开发模式还不实际,比如路由器的厂商Juniper就对“网络CPU”不感兴趣,这使得小厂家群起效仿,在开发自己的新产品时从不考虑“网络CPU”,而是仍在开发ASIC芯片。这实际上迟缓了“网络CPU”产业的成熟时间,也降低了它的应用水平。
但无论如何,“网络CPU”无论对系统厂商还是对用户来说,都带来了很大的好处。系统商将不用自己设计ASIC芯片,从而能专注于产品的主要功能,这有可能设计出更符合用户需求的产品;而用户则可通过对软件的升级来跟踪最新技术,这能大大减少在基础设施方面的投资。一句话,“网络CPU”面向的是全部信息产业,其前途自然不可限量,当然这也意味着将有残酷的竞争。从实际的市场情况可以看到这一点,例如一度领先的Vitesse已宣布停止对“网络CPU”研发的投入,PMC也一样。同时,AMCC则反而继续向更尖端的“网络CPU”迈进。如果用“历史”的眼光看,“网络CPU”市场似乎正在走传统CPU的老路,经过众多厂家的角逐后,只剩下几个大的巨无霸。可以说,“网络CPU”是有钱人的游戏,而目前“在玩”的几个有钱人是AMCC、IBM、Intel及Motorola。▲
体系结构计算精细
就像通用CPU一样,“网络CPU”一般也采用多级流水线结构,保证一个时钟周期内完成一条指令。为简化设计并降低功耗,“网络CPU”一般都采用精简指令集(RISC)方案。另一方面,为提供极高的速度和比较高级的编程界面,“网络CPU”提供了多线程运行环境,在数据包的层次上给了多级流水线支持,即同一时刻可有多个数据流被处理。
“网络CPU”提供两个接口,一个联接网络端口,另一个联接交换芯片。后者是为实现多“网络CPU”系统,或者说多线路板系统。这里涉及了不同单元的接口,由此引发了标准化问题。各个“网络CPU”厂家在内部设计上可各显其能,但必须符合公认的接口标准,这样才能满足各厂家产品间的互通,目前这些标准正在逐步形成。
主要功能块有进 /出数据移位器(与以太网PHY或者POS的接口)、交换芯片接口、进/出口队列调度器(完成数据在“网络CPU”内部的移动,主要是通过指针以节约开销),以及最核心的嵌入型处理器。注意此处的嵌入型处理器采用的是HARVARD架构,内含8个DPPU(对偶协议处理器),每个DPPU具有两个CLP(微码处理器),每个CLP又能保持两个线程(当然同一时刻只可执行一个),这样嵌入型处理器就能同时运行16个线程,而能保持32个线程的运行环境,这样做的目的是在某个线程等待时,CLP可运行它的另一线程。可见,为保证性能,“网络CPU”的设计者会细算每个时钟周期。
“网络CPU”的编程能力体现在这些微码处理器上,“网络CPU”能力的一个重要指标是在线速下每个数据包可获得多少指令周期,速度越高,或者数据包越长,每个数据包可获得的指令周期就越少。一个很典型的数字是在OC-48的情况下,64字节的数据包可获得1000个左右指令周期。可以想像一下,用C语言做IP包处理时得用多少语句!可见编制微码程序不是什么容易的事,尤其是在头脑里要时刻有性能约束的条件,必须“压榨”每一条指令,并考虑指令间的同步关系。编写那些复杂网络设备的微码,比如防火墙,不能说没有可能,但这是一个非常艰巨的任务。即便这样,可编程性(尤其是有的“网络CPU”可直接用C语言来编程)毕竟比那种固定的ASIC芯片要友好得多。
应用探索
“网络CPU”用于实际产品开发的一个必要条件,是“网络CPU”需要具有完美的可塑性。换句话说,就是如果“网络CPU”在某个方面编程效果的功能或者性能表现得强差人意,那么人们是否选择“网络CPU”进行开发就成疑问了。无论模拟工作与假想工作做得多好,如果没用“网络CPU”实现令人信服的产品,那么“网络CPU”仍旧只是个实验室里的高级玩具。
就目前评价很高的IBM的NP4GS3及Intel的IXP2800来说,前者比较适合实现传统的路由器或三层交换机,其最高端口速率为OC-48;后者的最高支持端口速率为OC-192,并集成了加密功能,包含3DES及SHA-1等基本的加密算法,从而可有更广泛的应用范围。但矛盾的地方是,这些“网络CPU”面向高端应用,但高端产品很少有用“网络CPU”的。具体原因还不得而知,现在可以肯定的是,“网络CPU”目前的应用水平还处在探索阶段,我们希望的那种一目了然的开发模式还不实际,比如路由器的厂商Juniper就对“网络CPU”不感兴趣,这使得小厂家群起效仿,在开发自己的新产品时从不考虑“网络CPU”,而是仍在开发ASIC芯片。这实际上迟缓了“网络CPU”产业的成熟时间,也降低了它的应用水平。
但无论如何,“网络CPU”无论对系统厂商还是对用户来说,都带来了很大的好处。系统商将不用自己设计ASIC芯片,从而能专注于产品的主要功能,这有可能设计出更符合用户需求的产品;而用户则可通过对软件的升级来跟踪最新技术,这能大大减少在基础设施方面的投资。一句话,“网络CPU”面向的是全部信息产业,其前途自然不可限量,当然这也意味着将有残酷的竞争。从实际的市场情况可以看到这一点,例如一度领先的Vitesse已宣布停止对“网络CPU”研发的投入,PMC也一样。同时,AMCC则反而继续向更尖端的“网络CPU”迈进。如果用“历史”的眼光看,“网络CPU”市场似乎正在走传统CPU的老路,经过众多厂家的角逐后,只剩下几个大的巨无霸。可以说,“网络CPU”是有钱人的游戏,而目前“在玩”的几个有钱人是AMCC、IBM、Intel及Motorola。▲