`
javasogo
  • 浏览: 1774350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

【译文原题】:Recognition Engines

【原文作者】:Gary Stix

【译文出处】:《Scientific American》January.2006


识别引擎

——为了更好的进行基于垃圾邮件和病毒扫描的数据流分析所做的处理器研究

由于每隔几年就出现的更快的处理器弥补了大量失效和冗余的应用软件造成的悲剧,计算机工业才得以在逆境中幸存至今。如今,这种奢侈的处理器运行速度面临着减慢的现实,由于能源消费火箭般的增长和作为微处理器基础的电子板的设计瓶颈。英特尔(神圣的摩尔定理的支配者)和其他的硬件制造商作为回应,开始着手研究在低速度情况下运行的大量多处理器技术。

但是,多处理器的诞生也伴随着他们自己特有的问题,首先,编写将计算任务分配到不同的计算器上面的软件对许多程序员而言是一件不可想象的艰巨任务。而且,大量的快速发展的网络应用——从病毒扫描到基于XML语言下的Web文档的阅读,并不能轻易的在并行处理的基础上实现。

决定一个信息中是否包含如 "lottery","Viagra"这样的指示垃圾邮件的关键字,需要对一系列不同的参数进行评估,比如是否 "lottery" 在文档中紧跟在 "payout" 这个词后面?同时将这个任务分配在一组并行的处理器上面也存在着问题。取而代之,工程师们已经开始关注协处理器在这种问题上面的一种特殊的角色,即主处理器仍旧保持着它的作为核心系统功能的首席调度的职能,同时设计专门进行垃圾邮件扫描和病毒捕捉或者XML计算的,拥有自己独立的处理单元的处理器的研究,这种设计方案得益于对图形处理器中的学习和模仿。在近几年,这种被称为指令侦查加速引擎的技术已经为不断增加计算负担的CPU承担了大量的工作。一些学术和企业研究室已经将这种观点更进一步的发展了,得以适用于所有的网络中的数据流。实际上,他们已经创造出了一种通用的可以简易重新编程的并且支持多种应用的数据流处理器,无论这种应用是防火墙还是压缩文件。

模式匹配计算机

IBM 苏黎世研究实验室由于设计出了用于隧道扫描用的微显微镜和高温超导体得到了诺贝尔奖。但是这个实验室同时也在进行发展中的网络硬件和软件的研究。在Hot Chips会议上(一个由IEEE于2005年8月在斯坦福大学举行的一个会议),IBM 苏黎世 研究院的Jan van Lunteren展现了一种由他和其同事Ton Engbersen一起设计的新型的流处理器,一种能够抓捕病毒,关键字和其他不良因素的“模式匹配机器“。

IBM的处理器起源于早先的一项研究,关于如何将数据通过网络在计算机中传播的研究,也就是所谓的路由器研究项目。挪威籍的科研人员Van Lunteren,,在九十年代后期在IBM 苏黎世实验室工作时,主要的工作就是研究如何有效的在路由器的数据表中寻找数据包在网络中传输方向的信息。路由器需要在一秒种之内检测成千上万的数据包,并且将它与自己的数据库进行成千上万次的比对,由此在将数据包在其众多的端口抛出之前决定数据包在网络中的下一条链路。Van Lunteren为了研究路由器表发明了一种哈希表,这种数学公式经过运算后能得出一个称之为哈希索引得特殊的数字,用来指示,在处理器硬件上的日志表中,哪一个相关的输出端口是联系到将数据包传输到下个路由的链路。

Van Lunteren研究出了一套基于哈希表的算法——路由平衡表或者称之为(BaRT),研究的结果是可以引人注目的压缩在内存中需要存放的路由表的数据量的大小。BaRT,这个在大量的IBM产品中得到使用的技术,能同时处理2干5百万数据包并且同时上减少了四倍的数据事故的发生。

路由表研究者仅仅需要看一看数据包开头的一小段字符数据,就能知道这个数据包要走到哪里。但是由于不可想象数量的垃圾邮件和病毒之类网络不良元素的泛滥成灾,现在的网络处理器不得不要深入研究数据包里面的数据而不是浅尝辄止的看看开头的一小段数据了,只有这样才能找到表明数据的发送者有不良的企图的证据。相似的原因,阅读基于XML的Web文档也对网络硬件提出了相当高的要求。为了处理这种急剧膨胀的数据计算量,由Van Lunteren为了路由器而设计的这种哈希表现在变成了IBM流处理器的基础。

超越冯·诺依曼

传统的处理器需要大量的指令去完成处理XML代码或者查找病毒和垃圾邮件的工作,从而创造了一个用上万个时钟周期仅仅来处理一个单独的字母的效率瓶颈。尽管有了许多改良,现代的CPU仍旧依靠着在二十世纪四十年代的伟大的数学家冯·诺依曼和计算机先锋J.Presper 和John Mauchly等人提出的架构。冯·诺依曼架构,正如众所周知的,从内存的地址中取指令然后执行,当下一条指令被执行的时候更新程序计数器。这个周期不断重复,除非它明确的被另一个指令告知要中断跳转到程序的另一个地方执行。假如处理器遇到一个比较复杂的任务,比如评估是否一个特殊的字符在XML编码中是合法的,那它就必须通过大量的指令和时钟周期的积累来完成此次任务。

Van Lunteren和Engbersen从早期计算机设计那里吸取了一种设计概念,这是一种根植于伟大的计算机先锋图灵的有限自动机思想。有限自动机定义了所有计算机器的运行基本法则:诸如如何在一系列离散的步骤中表现计算行为,如何确定任何时刻的内部的有限的状态列表之类问题。在某种抽象级别上说,冯·诺依曼的机器也就是一台有限自动机。但是,由于忽略了程序计数器的存在,Van Lunteren和Engbersen设计的这种自动机将它和基于冯·诺依曼模型的CPU区分开了。

不像冯·诺依曼机器的模式,Van Lunteren和Engbersen的自动机可以在一个时钟周期内同时对多个数据进行评估计算,而不是如同那些被程序计数器控制着的处理器那样,每个时钟周期只处理一个数据。这就是有限自动机能够在图像处理和声音识别的系统的硬件设计中被大量应用的原因之一。但是传统的有限自动机,并不能实现轻松的可重新编程,因而牺牲了冯·诺依曼模式CPU的柔韧性和通用型的优点。

然而,这种状况已经得到了巨大的改变。 IBM有限自动机架构下的硬件,现在已经能够实现可重新编程能力,当软件出现更新时,比如一种新的病毒传播或者XML的标准的改变,原有的有限自动机架构的硬件可以轻松的重新编写程序,实现对新问题的无缝连接。

Van Lunteren和Engbersen的处理器的研究基于一种包括圆形结点(或者称之为状态),和在结点之间代表传递的链接线的状态图。比方说,一个地铁的入口处的栅栏实际上就可以看成是一种有限自动机,它的初始状态称之为锁定,当你投入一个硬币后,打开了入口处的栅栏,就好比在当前的状态图中从当前锁定结点到开锁结点之间画出一条链接线,然后沿着链接来到开锁结点。穿过地铁的入口后,入口栅栏自动关上,就好像从开锁结点又回到了锁定结点。

在IBM有效自动机中间,一个给定的结点可以同时和多于两个的结点相连。在一个实际的流处理应用程序中,一个结点可以和很多个不同其他的结点相连,在状态图中决定走向下一个结点状态之前,每一个不同的链接都会被在同时被评估。对于在一个数据流中查找垃圾邮件这个实际问题,处理器从内存中读取词语“lottery“。然后不仅能够判断在达到的字符串中是否‘o’是否紧跟在‘l’后面,同时也可以去寻找垃圾邮件中是否有如”l_o“之类的下划线字符,这种下划线是垃圾邮件用来蒙骗垃圾邮件隔离器常用的方法。作为研究的一部分成果,在一个时钟周期内机器能够同时在自己的内存中进行比如’lottery’中的’l’和’viagra’中的’v’之类的很多字符的寻找比对。在传统的处理器中,诸如如此类问题的每一步都需要序列的执行。(参看下图)

至少在实验室里面,有限自动机的应用已经能够显著的改进流处理的效果了。Van Lunteren在Hot Chips会议上面报告,IBM的有限自动机在病毒,垃圾邮件扫描和其他的应用中处理字符的速度已经达到了十亿次每秒了,这要比传统处理器快上10到100倍。在这其中发挥着核心作用的工具就是BaRT算法。因为在许多有限自动机中间,在状态图中存储执行运算和审核的规则将会消耗大量的内存。但是由于BaRT算法的使用,IBM的有限自动机能在少于100千字节的内存中存储25000个字符,所需的空间仅仅是其他一些自动机所需的五百分之一。这个一开始为了处理路由表而设计的效果优良的算法,能够实现内存需求的线性增长:假如处理规则的数目从1升到10,内存需求将会按照一个可以接受的数量级上升。然而在许多其他种类的有限自动机中,同样一个小小的增长就能导致需求100倍以上的内存空间。

IBM已经同意在经过它的工程师和技术服务部门的授权之后(用来评估产品所需要的处理器数目),在它的客户产品中提供这种有限自动机技术。IBM并不是唯一有这种创意和技术的公司。许多大学和公司都开发了一系列可重新编程的自动机,John Lockwood,一个华盛顿大学的教授,和一家叫Global Velocity的公司合作开发并且商业化了一种类似的处理器。但是,Van Lunteren声称IBM的设计是独一无二的,因为这种机器有着能够处理大量不同应用领域的能力,使它变成了一种通用的流处理器。

这些不同的数据流处理引擎将会在实际工作中更紧密的配合使用。这使我们坚信图灵和冯·诺依曼的宝贵遗产将还会在同一块电路板上面共存很多年。

关于本文更多的探索:

有限自动机的字母表,词汇和语言,关于有限自动机如何工作的解释,都能在www.c3.lanl.gov/mega-math/workbk/machine/mabkgd.html中看到。

Global Velocity 是一个开发与IBM团队思路相似的流处理器的公司,它的网站是:www.globalvelocity.com/index.html

XML加速引擎是成立于2004年3月18日,第一个专门研究更加高效的XML处理方法的国际工作组,它的成员有Jan van Lunteren,Ton Engbersen,Joe Bostian, Bill Caray和Chris Larsson.。您可以通过一下网址了解更多信息:www.research.ibm.com/XML/IBM__Zurich_XML_Accelerator_Engine_paper_2004May04.pgf

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nanjingjiangb/archive/2006/03/24/637330.aspx

分享到:
评论

相关推荐

    嵌入式语音识别引擎介绍

    嵌入式语音识别引擎介绍,先进的语音识别技术!

    python图片中文识别引擎Tesseract-OCR

    python图片中文识别引擎Tesseract-OCR,支持英文中文的识别,语言库丰富可选择性安装需要的语言,解压之后直接点击安装下一步即可。安装完成之后设置pytesseract.py中的tesseract_cmd为'C:/Program Files (x86)/...

    利用微软输入法汉字识别引擎, 手写识别

    利用微软输入法的汉字识别引擎,用鼠标输入汉字并识别的测试小程序

    语音识别引擎研究报告

    a) 微软OFFICE XP 语音识别引擎V 6.1(windows) b) IBM 语音输入系统V 9.1(windows & linux) c) Sphinx 开源语音识别引擎V 3(windows & linux)

    Delphi 图形验证码识别引擎

    一个Delphi图形验证码识别引擎,图形验证码识别实例,在Delphi中使用广泛,对此不太熟悉的可借鉴源码。 http://www.codefans.net/upload/softimg/10/21229.gif

    图像识别引擎

    图像识别引擎

    中科院山世光老师开源的Seetaface人脸识别引擎SeetaFacesTest.rar

    中科院山世光老师开源的Seetaface人脸识别引擎SeetaFacesTest.rar

    julius, 开源大词汇量连续语音识别引擎.zip

    julius, 开源大词汇量连续语音识别引擎 ( 从 2015/09, 移动到 julius.osdn.jp,这是正式的)( 论坛已经关闭。请为有关Julius的问题和讨论提出问题。:开源大词汇连续语音识别引擎版权所有( c ) 1991 -2016 Kawahara...

    图形验证码识别引擎-delphi

    图形验证码识别引擎源码 本程序能识别网络90%以上的论坛验证码和一些简单的网站验证码,从图片中正确识别出数字和字母。 程序对矢量随机的验证码,如动网7.1sp2最新验证码亦有80%以上识别率。已经突破了dvbbs,...

    通用验证码识别引擎

    Captchio1.0 一些网站的登录/应用要求用户输入验证码,而一些用户的应用需要自动完成这些登录/应用这些网站,这个时候,你就需要通用验证码识别(Captchio)来完成这个工作。通用验证码识别(Captchio)不能单独使用,...

    intel语音识别引擎源代码

    intel语音识别引擎源代码intel语音识别引擎源代码

    语音识别引擎simon源代码

    语音识别引擎simon源代码 语音识别引擎simon源代码

    Wyz病毒识别引擎.rar

    Wyz病毒识别引擎.rar Wyz病毒识别引擎.rar Wyz病毒识别引擎.rar Wyz病毒识别引擎.rar Wyz病毒识别引擎.rar Wyz病毒识别引擎.rar

    ocr网站验证码识别引擎

    可准确地自动识别新浪动网淘宝征途等多种复杂的图形验证码,该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有理想的识别率, 是一款效果较为理想的图形验证码识别引擎,识别效果怎么样一试就知道

    语音识别引擎(java版本)

    这是比较老的那种语音识别。是先进行学习,然后再进行识别。我从别的地方搞到的源码,学习那里可以执行但是识别部分还没搞懂,不过源码都是有的。

    ASE提供的触控手势识别引擎

    ASE提供的触控屏手势管理引擎。WPF开发,在触点管理时可以参考。

    iOS手写识别引擎

    可以免费使用的手写识别引擎,可以二次开发,有三个版本(现在这个是我上传的第二个版本),这个版本注重连笔,效果非常好!其它版本请查看我的上传记录。

    微软离线语音识别引擎测试

    微软.net离线语音识别引擎控制台测试程序,可以实现最简单的词汇语法,具体词汇请在代码的choice里添加。可以查看.net文档,实现更复杂的语法。

    Tesseract图片识别引擎

    Tesseract图片识别引擎,可配合Python的pytesseract库从图片中识别文字。

    Java 验证码识别引擎

    国内第一个绝对高识别率,高效率的Java 验证码识别引擎,推荐使用于自动发贴机、数据采集系统的图片验证码自动识别场合!使用方法:下载解压后,导入Eclipse或MyEclipse中,然后在c:盘下放置一张验证码图片(如:...

Global site tag (gtag.js) - Google Analytics