⽹络处理器(NP)与图形处理器(GPU)
⽹络处理器
NP技术:
  ⽹络处理器(Network Processor,简称NP),根据国际⽹络处理器会议(Network Processors Conference)的定义:⽹络处理器是⼀种可编程器件,它特定的应⽤于通信领域的各种任务,⽐如包处理、协议分析、路由查、声⾳/数据的汇聚、防⽕墙、QoS等。x86架构和arm架构区别
  ⽹络处理器器件内部通常由若⼲个微码处理器和若⼲硬件协处理器组成,多个微码处理器在⽹络处理器内部并⾏处理,通过预先编制的微码来控制处理流程。⽽对于⼀些复杂的标准操作(如内存操作、路由表查算法、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是显⽰卡的“⼼脏”,也就相当于 在电脑中的作⽤,它决定了该显卡的档次和⼤部分性能,同时也是2D显⽰卡和3D显⽰卡的区别依据。2D显⽰芯⽚在处理3D图像和特效时主要依赖CPU的处理能⼒,称为“软加速”。3D显⽰芯⽚是将三维图像和特效处理功能集中在显⽰芯⽚内,也即所谓的“硬件加速”功能。显⽰芯⽚通常是显⽰卡上最⼤的芯⽚(也是引脚最多的)。现在市场上的显卡⼤多采⽤ 和 两家公司的图形处理芯⽚。
  于是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渲染中的⼀个重要部分,其作⽤是计算多边形的 位置和处理动态光线效果,也可以称为“⼏何处理”。⼀个好的T&L单元,可以提供细致的3D物体和⾼级的光线特效;只不过⼤多数 中,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和 能够让⽤户编写类似C的代码,随后编译成碎⽚程序汇编语⾔。Brook是专为GPU计算设计,且不需要图形知识的⾼级语⾔。因此对第⼀次使⽤GPU进⾏开发的⼯作⼈员⽽⾔,它可以算是⼀个很好的起点。Brook是C语⾔的延伸,整合了可以直接映射到GPU的简单数据并⾏编程构造。经 GPU存储和操作的数据被形象地⽐喻成“流”(stream),类似于标准C中的数组。核⼼(Kernel)是在流上操作的函数。在⼀系列输⼊流上调⽤⼀个核⼼函数意味着在流元素上实施了隐含的循环,即对每⼀个流元素调⽤核⼼体。Brook还提供了约简机制,例如对⼀个流中所有的元素进⾏和、最⼤值或乘积计算。Brook还完全隐藏了图形API的所有细节,并把GPU中类似⼆维存储器系统这样许多⽤户不熟悉的部分进⾏了虚拟化处理。⽤Brook编写的应⽤程序包括线性代数⼦程序、快速傅⽴叶转换、光线追踪和图像处理。利⽤ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同⾼速缓存、SSE汇编优化 执⾏条件下,许多此类应⽤的速度提升⾼达7倍之多。
  对GPU计算感兴趣的⽤户努⼒将算法映射到图形基本元素。类似Brook这样的⾼级编程语⾔的问世使编程新⼿也能够很容易就掌握GPU的性能优势。访问GPU计算功能的便利性也使得GPU的演变将继续下去,不仅仅作为绘制引擎,⽽是会成为个⼈电脑的主要计算引擎。
GPU识别软件
  说起处理器识别⼯具CPU-Z,其知名度和必备度⽆需赘⾔。硬件⽹站TechPowerUp现在⼜给我们提供了⼀个类似的⼯具,⽤于显卡识别的“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现在考虑的问题,也是英特尔的问题。