泛滥成灾的垃圾邮件、防不胜防的网络病毒已经成为计算机世界的最大公害。IBM苏黎世研究实验室对CPU进行大改造,大大提高截杀垃圾邮件的效率。
每隔几年,CPU的速度就会大大提升,电脑业因此得以持续发展——比我们预想的情况还要好。但正因如此,许多不合理的弊端,也被CPU不断更新的光环所掩盖。最严重的,当属应用软件效率低下和体积臃肿。随着功耗迅速增加,安放微处理器的电路板面临蜕变为空间加热器的危险,CPU的提速开始减缓。为了阻止这种下滑趋势,英特尔公司(它一直遵循着神圣的摩尔定律)和其他硬件制造厂商一道,设计出以更低速度运行的多处理器计算机。
但多处理器也有自身的缺陷。首先,对许多程序设计师来说,编写用于在几个处理器间分配计算任务的软件,仍然是一种不必要的负担。其次,对一些发展速度最快的网络应用做并行处理并不是一件容易的事,这些网络应用包括病毒扫描及读取可扩充置标语言(XML)编辑的网络文件。
有一些标志性的单词可用于确定一条消息是否垃圾邮件,如“lottery(彩票)”或“Viagra(伟哥)”。不过我们仍然需要评价一些连续参数:在该文件中“lottery(彩票)”这个单词后面是否跟着单词“payout(支出)”?在多处理器中分配这项任务,无异于自找麻烦。
然而,工程师们却已开始欣然接受更为专业化的协处理器的功能。这种主微处理器保留了作为分配器的责任,对一些关键操作系统功能进行分配。与此同时,一些执行垃圾邮件和病毒搜索或XML处理的处理器设计,已经在图形处理领域获取一席之地——长期以来,那可是专用设备的领土。最近几年,所谓的侵入检测加速器引擎,经常从负荷日益沉重的CPU那里接管一些工作任务。少数高校和工业实验室甚至已经开始接收网络上传送的各种“流入的”信息,以使这一设计概念向前推进一步。实际上,它们已制造出一种通用流处理器,该处理器能轻而易举地加以重新编程,并能处理多种应用,无论是保护防火墙还是压缩文件。
模式匹配引擎
IBM苏黎世研究实验室曾因制造扫描隧道显微镜和高温超导体,获得了诺贝尔奖,该实验室还一直是网络硬件和软件的研发中心。2005年8月,美国电气与电子工程师协会(IEEE)在斯坦福大学召开了Hot Chips会议。在会上,IBM苏黎世研究实验室的扬·范伦特伦(Jan Van Lunteren)发表了关于流处理器的演讲,该流处理器由他与同事托恩·恩格贝尔森(Ton Engbersen)共同研制,为一种捕捉病毒、垃圾邮件和其他坏东西的“模式匹配引擎”。
IBM的处理器,从早期的研究中脱颖而出,研究的主题是关于如何让数据通过称为路由器的因特网网络计算机。范伦特伦是荷兰人,20世纪90年代末期进入IBM苏黎世研究实验室工作,致力于技术改进,以便高效率地审核路由器数据表,发现通过网络传送的数据包的转发信息。每一秒钟,路由器都必须检查数千万个数据包,检查数据库的数万个输入,以便在众多输出端口中的一个发送数据包之前,在该网络上找到下一个链接。范伦特伦设计了一个散列函数来搜索路由器数据表。这个数学公式会计算出一个数字,即散列指数,在该处理器硬件存放的一个表中,它表明与目的链接相连的相关输出端口的位置,而该链接会把这个数据包依次传送到网络上的下一个路由器。
范伦特伦设计了一种基于散列函数的算法——平衡路由表搜索,即BaRT搜查——这种算法能显著地压缩内存中存放的路由表所必需的位数。BaRT可应用于一些IBM产品,它每秒钟能处理0.25亿个数据包,并且最终可处理4倍于这些数据包的数据流通量。
路由表搜查只须检查数据包初始部分的一小串数据,即表明数据包往何处去的标题。然而,由于存在大量的垃圾邮件、病毒和其他恶意软件,网络处理器目前还必须深入地读取数据包内容,以便寻找能证明某个发送端种种“不怀好意”的迹象。同样,读取XML之类的文件编码语言也给网络硬件提出了更高的要求。范伦特伦为路由选择设计的这种散列函数,对于IBM的流处理器来说,是必不可少的。
超越冯诺伊曼
常规处理器需要许多指令来处理XML编码或搜寻恶意软件,这样便产生了瓶颈:即处理一个单字符需要数十个时钟周期。尽量有了许多精细的改进,但一般的CPU仍然依赖于同一种体系结构,这种体系结构是由伟大的数学家约翰·冯诺伊曼(John von Neumann)、计算机先驱者J·普雷斯佩尔·埃克特(J. Presper Eckert)和约翰·毛奇利(John Mauchly)在20世纪40年代开创的。这种冯诺伊曼体系结构从内存的一个地址那里接收一条指令并执行,用下一条指令的地址更新程序计数器。除非有另一条指令明确指示,需要处理器转到程序中的另一个地方执行任务,否则这一个循环将自动重复。如果该处理器面对的是一个具有一定复杂程度的任务——例如评价某一特殊字符在XML编码中是否合法——那么它就必须辗转于众多的指令和时钟周期,以完成该任务。
范伦特伦和恩格贝尔森借用了最初的计算概念方案,即有限状态机,它源于计算先驱艾伦·M·图林(Alan M.Turing)的研究工作。有限状态机是对任意一种计算机的工作原理的基本描述:如何在一系列独立步骤中执行运算指令,如何在任一时间里采用一个有限内部状态列表。理论上说,甚至可把冯诺伊曼体系结构也视为一种有限状态机。然而,由于范伦特伦和恩格贝尔森所设计的这种有限状态机设有程序计数器,因而它本身并不同于依赖于冯诺伊曼体系结构的CPU。
与冯诺伊曼体系结构CPU不同的是,范伦特伦和恩格贝尔森的有限状态机可在一个单循环中同时评价许多项目,而不是像程序计数器那样只考虑一个项目,这就是有限状态机多年来一直应用于图形处理器和语音识别系统以及硬件设计的原因之一。不过,有限状态机不易于重新编程,也就丧失了基于冯诺伊曼体系结构CPU的灵活性、通用性。
然而,由常规CPU的时序特征所带来的瓶颈难题,已开始缩小这两种处理机之间的差距。例如,如果一些新病毒扩散或XML标准改变,IBM的有限状态硬件也能通过对软件升级而进行重新编程。
范伦特伦和恩格贝尔森的处理器设计方案依赖于一种状态图,该状态图包括一些圆节点,即状态,以及代表从一种状态到另一种状态转变的节点之间的连线——地铁旋转栅门便是有限状态机的一种形式。它的起始节点是一种称之为“锁定”的状态。插入一个硬币,即表示状态图中的一条从当前状态向“解锁”节点转变的轨迹线。经过地铁旋转栅门则是另一条线,它表示一种返回到锁定节点的转变。
在IBM的有限状态机中,一种给定状态可连接两个以上的节点。在实际的流处理应用中,一个节点可具有到许多其他节点的连线,并且,在决定移动到状态图中下一个状态之前,可同时评价每一条连线。在输入的数据流中搜寻垃圾邮件,该处理器可从内存中读“lottery(彩票)”这个单词。它不仅可评定,在一串到达的字符中,字符“o”后是否跟着一个“l”,而且还可评定,一个垃圾邮件消息是否为了欺骗垃圾邮件阻截器,而插入了一个下划线字符 “l_o”。作为在一个单处理器循环中执行的同一搜索的一部分,它可以搜索“lottery(彩票)”中的“l”和“Viagra(伟哥)”中的“V”,以及内存中的许多其他字符。而在常规处理器中上述步骤的每一步都不得不依次执行。
至少在该实验室中,将有限状态机用于流式应用能显著地提高性能。范伦特伦在Hot Chips会议上报告,IBM的有限状态机在病毒、垃圾邮件和其他应用中,能以高达20Gb/s的速度进行字符处理,比常规处理器快10~100倍。其中BaRT便是一个关键的启动工具。在许多有限状态机中,状态图里储存的执行这种转变的规则,会耗用大量的内存空间。IBM能在其有限状态机硬件中存放2.5万个字符,所占用的内存不足100KB——仅仅是其他有限状态机的1/500。最初为路由表所设计的算法效率考虑到了内存需要的线性增长:如果转移规则的数量从1增加到10,那么内存需要则按一个可比系数上升。在许多其他有限状态机中,增加相同的数量对内存空间的需求则可能要高出100倍。
通过它的工程技术服务部门,IBM开始发放许可证,为一些专门应用提供这种有限状态机技术,对这种处理器在许多产品中的应用情况也正在评定中。不过,持有这种想法的并非只有IBM一家,一些大学和其他公司也一直在研发可编程有限状态机。华盛顿大学圣路易斯分校的约翰·洛克伍德(John Lockwood)与他人共同创立了一家名叫全球速度(Global Velocity)的公司,以便让这种处理器商业化。范伦特伦说,IBM的这一设计是独特的,因为它能应对各种各样的应用,并且正在成为一种可用于各种流处理应用的通用处理器。完善这些协处理器可能会继续发展一些关键任务,例如日益远离中央处理器控制的流处理。这种研究将确保图林和冯诺伊曼的遗产,在同一块电路板上相隔几厘米的距离内共存。
请 登录 发表评论