网络处理器
NP技术:
网络处理器(Network Processor,简称NP),根据国际网络处理器会议(Network Processors Conference)的定义:网络处理器是一种可编程器件,它特定的应用于通信领域的各种任务,比如包处理、协议分析、路由查找、声音/数据的汇聚、防火墙、QoS等。
网络处理器器件内部通常由若干个微码处理器和若干硬件协处理器组成,多个微码处理器在网络处理器内部并行处理,通过预先编制的微码来控制处理流程。而对于一些复杂的标准操作(如内存操作、路由表查找算法、QoS的拥塞控制算法、流量调度算法等)则采用硬件协处理器来进一步提高处理性能,从而实现了业务灵活性和高性能的有机结合。
面对X86的优点:
基于X86架构的防火墙,由于CPU处理能力和PCI总线速度的制约 ,在实际应用中,尤其在小包情况下,这种结构的千兆防火墙远远达不到千兆的转发速度(64字节包长时,双向转发速率一般为百分之二十以下),难以满足千兆骨干网络的应用要求。
采用NP架构的防火墙,各种算法可以通过硬件实现 ,在实现复杂的拥塞管理、队列调度、流分类和QoS功能的前提下,还可以达到极高的查找、转发性能,实现“硬转发”。
面对ASIC的优点:
纯硬件的ASIC防火墙缺乏可编程性,这使得它缺乏灵活性从而跟不上防火墙功能的快速发展。虽然现代的ASIC技术提高了可编程性,但从开发难度、开发成本和开发周期方面看,仍然困难重重。
NP完全支持编程,编程模式简单,一旦有新的技术或者需求出现,可以很方便地通过微码编程进行实现。提供了更快的技术、功能跟进和更加灵活的扩展能力,特别是在新规格、新标准的支持上 。
网络处理器(NP)是专门为处理数据包而设计的可编程处理器,能够直接完成网络数据处理的一般性任务。硬件体系结构大多采用高速的接口技术和总线规范,具有较高的I/O能力,包处理能力得到了很大提升。网络处理器一般具有以下特点: ● 并行处理器: 采用多内核并行处理器结构。片内处理器按任务大致分为核心处理器和转发引擎。
● 专用硬件协处理器: 对要求高速处理的通用功能模块采用专用硬件实现以提高系统性能。
● 专用指令集: 转发引擎通常采用专用的精简指令集,并针对网络协议处理特点优化。
● 分级存储器组织: NP存储器一般包含多种不同性能的存储结构,对数据进行分类存储以适应不同的应用目的。
● 高速I/O接口: NP具有丰富的高速I/O接口,包括物理链路接口、交换接口、存储器接口、PCI总线接口等。通过内部高速总线连接在一起,提供很强的硬件并行处理能力。
● 可扩展性: 多个NP之间还可以互连,构成网络处理器簇,以支持更为大型高速的网络处理。 从网络处理器以上特点可以看出,与通用处理器相比,网络处理器在网络分组数据处理上具有明显的优势。
目前,NP芯片都是由国外厂商设计制造的,从体系结构上主要分为两大类:
一类是以Intel 的IXP系列产品为代表,分为控制和处理(或称数据)两个平面。如Intel公司的IXP1200,控制平面是一个ARM CORE,负责维护系统信息和协调处理部分工作,处理平面由多个微引擎(Micro Engine)和其他专用硬件组成,负责利用控制平面下发的微代码和命令,直接处理网络数据。这类产品在对数据包进行简单过滤时性能较好,但是由于体系结构限制,尤其是微代码的开发相对复杂,导致灵活性较差,难以满足复杂多变的市场需求,一般适合3层(IP层)及以下网络数据的处理。
另一类产品以 SiByte的Mercurian系列产品为代表,它基于MIPS CPU设计,如SB1250。它一方面保持了基于通用CPU设计的灵活性,另一方面通过SOC(System On Chip)的方式消除了传统CPU、总线、设备之间带宽的瓶颈问题。这类产品灵活性较强,易于开发、升级和维护,适于构建速度可与专用ASIC相媲美的、完全可编程的网络处理平台。
目前提供NP芯片的厂家有很多,基本上都符合NPF指定的规范。国内使用比较广泛的则是Intel公司的 IXP xxx系列,主要包括IXP4xx、IXP12xx、IXP24xx、IXP28xx等。
IXP系列NP处理器从体系结构上看基本上都一样,都是由一个RISC处理器加一个微引擎构成的。其中,RISC处理器主要用于控制微引擎的运行,所以又称为控制层面;微引擎完成对网络数据包的处理,以实现高性能,所以又称为数据层面。不同IXP系列处理器的RISC型号和主频不同,微引擎的个数也有所不同,在性能上也有很大差别。 IXP4xx 的市场定位主要在中低端市场,因此基于IXP4xx芯片做出的防火墙也主要定位在中低端市场中。这里需要特别提一下IXP425,它内嵌了一个加密引擎,支持一些公开的密码算法,如3DES、AES、MD5、SHA1,因此,许多安全厂商会使用它生产低端的VPN或防火墙。 不过, 4xx系列芯片产品并不能进行微码编程,而Intel预置的微码又没有完成FW/VPN的处理,使得该芯片所对应的产品对IP报文的处理要通过 533MHz的Xscale来处理的,因而在性能上并没有什么优势。这可能也是一些国内厂商采取变产品不变价格的策略的原因。
IXP12xx 从12xx系列开始已经可以让软件开发人员根据不同的应用定制微引擎上的微码,以实现不同的功能。不过由于IXP12xx其微引擎只有6个,每个微引擎上可以存储条2k×32位的指令,所以该系列NP芯片只能用来做简单的包转发处理和QoS处理,如果用作较为复杂的防火墙处理则会显得力不从心了。因此,基于该系列NP芯片的防火墙要么性能不高,要么功能简单。
IXP24xx 从2003年开始,Intel公司推出了IXP24xx系列的网络处理器,它在性能上有了质的变化,开发起来也要复杂得多。使用它们做出的防火墙可能在单纯包转发上到达线速.
IXP28xx IXP28xx的NP处理器从性能上比IXP24XX的性能又增加了很大,单从芯片的性能指标上看,IXP28xx比IXP24xx更有可能做出千兆线速的网络安全设备。不过,由于IXP2800板卡的设计要比IXP2400板卡设计要更加复杂,目前市场上还没有能够支持它得工板。
国内有不少厂商推出了低端基于INTEL IXP 425芯片的NP防火墙,面向百兆级用户.但NP最大的优点在于在高端,425芯片百兆上的处理能力没有同级别X86防火墙性能高.具体可以参考 INTEL官方网站的425芯片的技术白皮书规格.而基于2400芯片的高端NP产品代表了业界的最高性能.国内最先推出的神州数码DCFW-1800E -NP产品在千兆环境下的小包双向吞吐率可以达到93%以上.真正的实现了骨干网络的高速安全.
网络处理器(Network Processor,简称NP),根据国际网络处理器会议(Network Processors Conference)的定义:网络处理器是一种可编程器件,它特定的应用于通信领域的各种任务,比如包处理、协议分析、路由查找、声音/数据的汇聚、防火墙、QoS等。
网络处理器器件内部通常由若干个微码处理器和若干硬件协处理器组成,多个微码处理器在网络处理器内部并行处理,通过预先编制的微码来控制处理流程。而对于一些复杂的标准操作(如内存操作、路由表查找算法、QoS的拥塞控制算法、流量调度算法等)则采用硬件协处理器来进一步提高处理性能,从而实现了业务灵活性和高性能的有机结合。
面对X86的优点:
基于X86架构的防火墙,由于CPU处理能力和PCI总线速度的制约 ,在实际应用中,尤其在小包情况下,这种结构的千兆防火墙远远达不到千兆的转发速度(64字节包长时,双向转发速率一般为百分之二十以下),难以满足千兆骨干网络的应用要求。
采用NP架构的防火墙,各种算法可以通过硬件实现 ,在实现复杂的拥塞管理、队列调度、流分类和QoS功能的前提下,还可以达到极高的查找、转发性能,实现“硬转发”。
面对ASIC的优点:
纯硬件的ASIC防火墙缺乏可编程性,这使得它缺乏灵活性从而跟不上防火墙功能的快速发展。虽然现代的ASIC技术提高了可编程性,但从开发难度、开发成本和开发周期方面看,仍然困难重重。
NP完全支持编程,编程模式简单,一旦有新的技术或者需求出现,可以很方便地通过微码编程进行实现。提供了更快的技术、功能跟进和更加灵活的扩展能力,特别是在新规格、新标准的支持上 。
网络处理器(NP)是专门为处理数据包而设计的可编程处理器,能够直接完成网络数据处理的一般性任务。硬件体系结构大多采用高速的接口技术和总线规范,具有较高的I/O能力,包处理能力得到了很大提升。网络处理器一般具有以下特点: ● 并行处理器: 采用多内核并行处理器结构。片内处理器按任务大致分为核心处理器和转发引擎。
● 专用硬件协处理器: 对要求高速处理的通用功能模块采用专用硬件实现以提高系统性能。
● 专用指令集: 转发引擎通常采用专用的精简指令集,并针对网络协议处理特点优化。
● 分级存储器组织: NP存储器一般包含多种不同性能的存储结构,对数据进行分类存储以适应不同的应用目的。
● 高速I/O接口: NP具有丰富的高速I/O接口,包括物理链路接口、交换接口、存储器接口、PCI总线接口等。通过内部高速总线连接在一起,提供很强的硬件并行处理能力。
● 可扩展性: 多个NP之间还可以互连,构成网络处理器簇,以支持更为大型高速的网络处理。 从网络处理器以上特点可以看出,与通用处理器相比,网络处理器在网络分组数据处理上具有明显的优势。
目前,NP芯片都是由国外厂商设计制造的,从体系结构上主要分为两大类:
一类是以Intel 的IXP系列产品为代表,分为控制和处理(或称数据)两个平面。如Intel公司的IXP1200,控制平面是一个ARM CORE,负责维护系统信息和协调处理部分工作,处理平面由多个微引擎(Micro Engine)和其他专用硬件组成,负责利用控制平面下发的微代码和命令,直接处理网络数据。这类产品在对数据包进行简单过滤时性能较好,但是由于体系结构限制,尤其是微代码的开发相对复杂,导致灵活性较差,难以满足复杂多变的市场需求,一般适合3层(IP层)及以下网络数据的处理。
另一类产品以 SiByte的Mercurian系列产品为代表,它基于MIPS CPU设计,如SB1250。它一方面保持了基于通用CPU设计的灵活性,另一方面通过SOC(System On Chip)的方式消除了传统CPU、总线、设备之间带宽的瓶颈问题。这类产品灵活性较强,易于开发、升级和维护,适于构建速度可与专用ASIC相媲美的、完全可编程的网络处理平台。
目前提供NP芯片的厂家有很多,基本上都符合NPF指定的规范。国内使用比较广泛的则是Intel公司的 IXP xxx系列,主要包括IXP4xx、IXP12xx、IXP24xx、IXP28xx等。
IXP系列NP处理器从体系结构上看基本上都一样,都是由一个RISC处理器加一个微引擎构成的。其中,RISC处理器主要用于控制微引擎的运行,所以又称为控制层面;微引擎完成对网络数据包的处理,以实现高性能,所以又称为数据层面。不同IXP系列处理器的RISC型号和主频不同,微引擎的个数也有所不同,在性能上也有很大差别。 IXP4xx 的市场定位主要在中低端市场,因此基于IXP4xx芯片做出的防火墙也主要定位在中低端市场中。这里需要特别提一下IXP425,它内嵌了一个加密引擎,支持一些公开的密码算法,如3DES、AES、MD5、SHA1,因此,许多安全厂商会使用它生产低端的VPN或防火墙。 不过, 4xx系列芯片产品并不能进行微码编程,而Intel预置的微码又没有完成FW/VPN的处理,使得该芯片所对应的产品对IP报文的处理要通过 533MHz的Xscale来处理的,因而在性能上并没有什么优势。这可能也是一些国内厂商采取变产品不变价格的策略的原因。
IXP12xx 从12xx系列开始已经可以让软件开发人员根据不同的应用定制微引擎上的微码,以实现不同的功能。不过由于IXP12xx其微引擎只有6个,每个微引擎上可以存储条2k×32位的指令,所以该系列NP芯片只能用来做简单的包转发处理和QoS处理,如果用作较为复杂的防火墙处理则会显得力不从心了。因此,基于该系列NP芯片的防火墙要么性能不高,要么功能简单。
IXP24xx 从2003年开始,Intel公司推出了IXP24xx系列的网络处理器,它在性能上有了质的变化,开发起来也要复杂得多。使用它们做出的防火墙可能在单纯包转发上到达线速.
IXP28xx IXP28xx的NP处理器从性能上比IXP24XX的性能又增加了很大,单从芯片的性能指标上看,IXP28xx比IXP24xx更有可能做出千兆线速的网络安全设备。不过,由于IXP2800板卡的设计要比IXP2400板卡设计要更加复杂,目前市场上还没有能够支持它得工板。
国内有不少厂商推出了低端基于INTEL IXP 425芯片的NP防火墙,面向百兆级用户.但NP最大的优点在于在高端,425芯片百兆上的处理能力没有同级别X86防火墙性能高.具体可以参考 INTEL官方网站的425芯片的技术白皮书规格.而基于2400芯片的高端NP产品代表了业界的最高性能.国内最先推出的神州数码DCFW-1800E -NP产品在千兆环境下的小包双向吞吐率可以达到93%以上.真正的实现了骨干网络的高速安全.
GPU
GPU概念
GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心
处理器。
GPU的作用
GPU是显示卡的“心脏”,也就相当于
CPU在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。现在市场上的显卡大多采用
NVIDIA和
ATI两家公司的图形处理芯片。
于是NVIDIA公司在1999年发布GeForce 256图形处理芯片时首先提出GPU的概念。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬体T&L技术可以说是GPU的标志。
简单说GPU就是能够从 硬件上支持T&L(Transform and Lighting,多边形转换与光源处理)的 显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的 3D位置和处理动态光线效果,也可以称为“几何处理”。一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只不过大多数 PC中,T&L的大部分运算是交由CPU处理的(这就也就是所谓的软件T&L),由于CPU的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待CPU数据的情况,其运算速度远跟不上今天复杂三维游戏的要求。即使CPU的工作频率超过1GHz或更高,对它的帮助也不大,由于这是PC本身设计造成的问题,与CPU的速度无太大关系。
GPU与DSP的区别
GPU在几个主要方面有别于DSP架构。其所有计算均使用浮点算法,而且目前还没有位或整数运算指令。此外,由于GPU专为图像处理设计,因此存储系统实际上是一个二维的分段存储空间,包括一个区段号(从中读取图像)和二维地址(图像中的X、Y坐标)。此外,没有任何间接写指令。输出写地址由光栅处理器确定,而且不能由程序改变。这对于自然分布在存储器之中的算法而言是极大的挑战。最后一点,不同碎片的处理过程间不允许通信。实际上,碎片处理器是一个SIMD数据并行执行单元,在所有碎片中独立执行代码。
尽管有上述约束,但是GPU还是可以有效地执行多种运算,从线性代数和信号处理到数值仿真。虽然概念简单,但新用户在使用GPU计算时还是会感到迷惑,因为GPU需要专有的图形知识。这种情况下,一些软件工具可以提供帮助。两种高级描影语言CG和 HLSL能够让用户编写类似C的代码,随后编译成碎片程序汇编语言。Brook是专为GPU计算设计,且不需要图形知识的高级语言。因此对第一次使用GPU进行开发的工作人员而言,它可以算是一个很好的起点。Brook是C语言的延伸,整合了可以直接映射到GPU的简单数据并行编程构造。经 GPU存储和操作的数据被形象地比喻成“流”(stream),类似于标准C中的数组。核心(Kernel)是在流上操作的函数。在一系列输入流上调用一个核心函数意味着在流元素上实施了隐含的循环,即对每一个流元素调用核心体。Brook还提供了约简机制,例如对一个流中所有的元素进行和、最大值或乘积计算。Brook还完全隐藏了图形API的所有细节,并把GPU中类似二维存储器系统这样许多用户不熟悉的部分进行了虚拟化处理。用Brook编写的应用程序包括线性代数子程序、快速傅立叶转换、光线追踪和图像处理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速缓存、SSE汇编优化 Pentium 4执行条件下,许多此类应用的速度提升高达7倍之多。
对GPU计算感兴趣的用户努力将算法映射到图形基本元素。类似Brook这样的高级编程语言的问世使编程新手也能够很容易就掌握GPU的性能优势。访问GPU计算功能的便利性也使得GPU的演变将继续下去,不仅仅作为绘制引擎,而是会成为个人电脑的主要计算引擎。
GPU识别软件
说起处理器识别工具CPU-Z,其知名度和必备度无需赘言。硬件网站TechPowerUp.com现在又给我们提供了一个类似的工具,用于显卡识别的“GPU-Z”。这是TechPowerUp GPU-Z发布的第二个版本为0.0.2,体积仅有334KB
关于CPU和GPU的相关问题
第一个问题:
GPU的竞争远比CPU的竞争来得激烈。通用PC的CPU就只有英特尔和AMD两家大厂。而在GPU方面领先的是N记和A记两家厂商,但能生产中低端产品的还有英特尔、3S等好几家厂商。它们的产品虽然不如前两家,但在很多应用方面也能满足用户的需要,所以N记和A记只有拼命往前跑才不会死掉。CPU厂商没有采用GPU的先进工艺是因为CPU厂商都有自己投资的生产线,不可能一下把原来的生产线都淘汰了上新的生产线,那样做可能连当初投入的资金都难以收回。而GPU厂商由于种种原因,一般都是自己设计由别人代工的,比如找台积电代工。代工厂商为了能接到业务,只有不停升级自己的生产设备,这样才能生存下来。所以造成以上原因。
第二个问题
就如你所说的一样,CPU除了处理游戏的AI,情节等方面的数据外,对于有些图像方面也是由它完成的。当微软每次发布新的DX时,并不是每款GPU都能支持DX新的特性,所以有些图像方面的任务还得由CPU来完成。还有有些特性比如重力特性以前是由CPU来完成,现在有些GPU也能支持了,这些任务就由GPU来完成了。
第三个问题
GPU相当于专用于图像处理的CPU,正因为它专,所以它强,在处理图像时它的工作效率远高于CPU,但是CPU是通用的数据处理器,在处理数值计算时是它的强项,它能完成的任务是GPU无法代替的,所以不能用GPU来代替CPU。
最后补充
现在AMD收购了A记显卡芯片的设计厂商,AMD看到今后CPU和GPU只有走一条融合的道路才能地竞争中占得先机。CPU和GPU如何配合默契才能最大地提高工作效率是AMD现在考虑的问题,也是英特尔的问题。