信息技术快报 内部快报hyjx.docx

上传人:jix****n11 文档编号:68690947 上传时间:2022-12-29 格式:DOCX 页数:31 大小:91.57KB
返回 下载 相关 举报
信息技术快报 内部快报hyjx.docx_第1页
第1页 / 共31页
信息技术快报 内部快报hyjx.docx_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《信息技术快报 内部快报hyjx.docx》由会员分享,可在线阅读,更多相关《信息技术快报 内部快报hyjx.docx(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 内部刊物 信息技术快报 Information Technology Letter2005年 第3卷 第1期 (总第20期)出版日期: 2005年1月6日目 录一 关于超级计算与能力服务的战略思考 (1)二 面向方面(aspect)的程序设计方法(9)三 本体论的研究和应用现状(13)四 基于图形处理器的通用计算技术(25)五 新书报道 (36)关于超级计算与能力服务的战略思考李国杰近两年,超级计算机研究又一次形成热潮。2004年11月超级计算国际会议(SC2004)召开前,美国和日本几家公司你追我赶,相继宣布研制成功速度最快的超级计算机,从一个侧面反映了发达国家对超级计算的重视。最近,美国

2、科学院、工程院等机构组织了十多名权威学者经多次研讨后,提交了一份长达227页的建议报告(“Getting Up to Speed The Future of Supercomputing”,以下简称“未来超级计算”报告),要求政府增加科研经费,进一步重视以定制技术为主的超级计算机研制。在这种形势下,根据国内需求和技术发展趋势,我国高端计算机研究应当如何定位,应当确立什么样的发展目标,这是摆在我们面前迫切需要回答的问题。本文论述中国发展超级计算机原则上应当是系统适应应用,而不是应用去适应系统;应根据我国的实际需求优化设计,有重点地进行创新突破,不能盲目追随美国的科研方向。计算所在计算机系统研究方

3、向的重点目标应当是研制大幅度降低信息化成本的信息处理和信息存储能力服务器。以“系统适应应用”为原则,有重点地突破技术瓶颈,发展满足国内需求的超级计算机。日本NEC公司推出每秒36万亿次Linpack运算速度的地球模拟器并行向量超级计算机,如同当年苏联率先发射成功人造卫星一样,对美国计算机界产生巨大冲击。美国从事超级计算机研制和应用的学者纷纷写文章、提建议,检讨美国为什么落后于日本,批评政府没有持续地支持研制适合科学计算的超级计算机。“未来超级计算”报告,透彻分析了为什么采用大宗商品化(commodity)的PC服务器不可能构成效率高的超级计算机,指出了突破存储器带宽等技术瓶颈的必要性,同时呼吁

4、美国政府增加超级计算机研制与应用方面的科研投入,表达了美国要做超级计算领头羊的决心。本节下面的论述采用上述报告中提供的相关材料。1. 超级计算机的三种类型。一年多前,计算所就提出超级计算机有三种类型,或者说有三种发展模式:一种是“核武器”模式-追求最高计算性能,成本不作为主要考虑因素;第二种是“高科技武器”模式-有重点的采用新技术,追求较高的性能价格比;第三种是“常规武器”模式-即国际上称为Beowulf 1994年,美国航空航天总署的戈达德(Goddard)太空飞行中心的科技人员建造了世界上第一组PC机群超级计算机,当时的目标只是达到1G(10亿)次浮点运算(GFLOPS),只是现在个人电脑

5、的运算水平。可是当时达到这一水平的商用超级计算机价格是100万美元,研究人员用不起,只好自己动手攒,他们给自己攒的这台PC机群起了个名字:Beowulf。Beowulf是英国中世纪史诗中的一位英雄,这位英雄砍断怪兽Grendel的一肢,从而打败了这一巨兽。从此以后,科学家们把自己攒的机群系统叫做Beowulf系统。的机群模式,采用商品化的部件,主要追求低成本。无独有偶,“未来超级计算”报告也将超级计算分为三种类型,与我们的分类十分类似:第一种是全定制模式,追求最短的time-to-solution,节点与互联网都自己做,代表产品就是日本的地球模拟器。第二种是部分定制模式或叫混合模式,节点和互联

6、网等部件都自己做一部分也买一些现成商品,代表产品是目前世界最快的超级计算机IBM的Blue Gene/L,第三种就是非定制机群,即Commodity Cluster。实际上,超级计算机和汽车等其他产品一样有两种不同方向的追求。一种是所谓Capability Supercomputing,追求在最短的时间内解决某一个特定的问题。对于涉及国家安全的紧迫问题或者某些对响应时间要求很苛刻的实时应用,我们的需要就是最高的计算能力。为了获取这种无法替代的计算能力,如同制造速度最快的赛车一样,成本可降低为次要因素。世界上大多数最高档的超级计算机都属于这种类型。另一种类型国外称为Capacity Superc

7、omputing,可翻译成高生产力超级计算机。这一类超级计算机往往同时进行几个作业,追求每单位成本有较高的持续性能(Sustained Performance)。大多数中低档的超级计算机都属于这一类型。所谓Beowulf机群只是Capacity Supercomputing的一种追求低成本的极端例子,如同小轿车中的夏利。美国学术界和IBM、CRAY、SUN等公司普遍认为美国应重点做Capability Supercomputing,理由是地球模拟器持续性能可达到峰值性能的3050,而Commodity Cluster做大型科学计算的持续性能只有峰值性能的510,相差310倍。简单地扩大Clus

8、ter规模,不可能实现持续性能达到一千万亿次(Petaflops)的超级计算机。每一类科学问题都有其固有的并行性。在并行机上算过题的人都有体会:当并行机规模(处理机数目)扩大到一定程度时,再扩大机器规模已无济于事。性能不但不提高,由于通信开销增加性能反而会下降。此时想提高并行机性能只有增加求解问题的规模,这又受到存储容量的限制。因此,用商品化服务器做超级计算机一定会有一个性能上限。目前这个上限大概是几十万亿次。要构建更高性能的超级计算机,必须做艰苦的科研与技术创新,想用简单的Cluster来对付肯定是不行的。我国一段时间内把超级计算机等同于简单的机群系统,把超级计算机的科研变成简单的采购。86

9、3计划只出一半硬件成本费,科学院自曙光2000以后也没有支持过计算所做通用高性能计算机研制,使计算所几乎无法做重大的技术突破与预研。现在情况有所转变,最近科学院已同意给一笔高性能计算机的预研经费。本文不必再多费笔墨论证Beowulf不等于超级计算机。但上面的简单分析没有说清楚究竟重点应做第一种类型还是第二种类型超级计算机。要说清这件事要对超级计算机的技术瓶颈做一些具体分析。2. 超级计算机的技术瓶颈分析超级计算机的技术瓶颈包括:处理器的浮点处理能力、处理器到各级Cache和随机存储器的带宽与延迟、随机存储器的存取时间(即memory wall)、磁盘存储器带宽、节点间互连网络带宽与延迟等。其中

10、有些瓶颈与微机、一般服务器是共同的,例如memory wall、磁盘存储带宽等。对某些超级计算机应用,如等离子体物理、三维动画等,浮点处理能力可能是最关键的瓶颈。事实上所谓超标量(Super Scalar)和超流水线(Superpipelining)等先进的RISC技术主要也是致力于提高浮点处理能力。流行了很多年的Linpack性能测试标准(也是评价超级计算机TOP500的标准),主要也是测试浮点处理能力。由于对存储器带宽和I/O带宽重视不够,Linpack值很高的超级计算机往往在实际运行时性能欠佳。因此,SC2004大会上已宣布今后将不再用Linpack值评选TOP500,改用更能反映存储器

11、与I/O带宽及延迟的HPC Challenge新标准。Princeton大学的著名学者李凯教授今年参加计算所综合质量评估时曾建议:不用通用CPU而改用浮点处理能力极强的图形处理专用芯片做超级计算机的处理器。这是一个很有价值的建议,可大大提高超级计算机的性能价格比。不论是最近提出的“未来超级计算报告”,还是前两年IBM、Argonne国家实验室等单位联合提出的Blue Planet计划;不论是IBM 正在开展的PERCS Productive, Easy-to-use, Reliable Computing System项目还是SUN公司的Hero项目,强调最多的超级计算机的瓶颈都是存储器带宽和

12、延迟。日本的地球模拟器最吸引人之处也是比商品化服务器的存储带宽高得多。微处理器浮点处理能力的增长遵循摩尔(Moore)定律,近十几年平均每年增长59%,从1988年到2004年,浮点速度增长了1000倍。但从1982年到2004年,存储器带宽每年平均增长38%,从1995年开始,下降到每年只增长25%。存储器带宽增长慢并不是技术上做不到。实际上2001年微处理器的带宽就可以做到38Gbps。为什么不把存储器带宽提高得快一些呢?道理很简单,高带宽意味着高成本。PC服务器的存储器带宽目前一般在5GB/S以下,如果做到地球模拟器的每秒32GB水平,也就卖不出去了。商品化的服务器为了解决性能与成本的矛

13、盾,采取了分层的存储器结构,即在处理器与主存储器之间加了几级缓冲存储器(Cache)。随着微处理器速度不断提高,有Cache级数越来越多的发展趋势。对于时间和空间局部性较好的应用,比如矩阵计算或带大量循环的计算,即使主存的带宽不太宽,分层的存储器系统也能供得上计算对数据的需要。但是,对于不规则的存取,比如单独取某一个只用一次的数据,Cache系统也要一次取64或128个字节,造成极大浪费(极限情况浪费94%存储带宽)。也就是说,这种情况下,存储器的有效带宽非常低。这就是为什么对某些有大量不规则存取的应用,Beowulf机群的实际运行效率非常低。而并行向量机则是通过高成本来换取高存储带宽。存储器

14、的延迟每年也只下降5.5%左右,远低于摩尔(Moore)定律的发展速度。1988年一次浮点运算需要6个存取周期时间才能完成,而到2004年,一个存取周期内可以做100次浮点运算。这就是说,必须一次同时取出100个64位字才能与浮点处理器的能力相匹配。众所周知的Memory Wall已成为制约计算机(不仅是超级计算机)发展的主要瓶颈。除了向量处理技术外,多线程技术是所谓延迟隐藏(Latency Hiding)的重要途径。当一个线程因等待数据而挂起时,可立即启动另一个数据已经到达的线程,使处理器一直忙着。据预测,到2010年,一颗微处理器芯片中可装4-8个处理器,每个处理器可执行2-16条线程。到

15、2020年,每颗微处理器芯片中可装64-128个处理器,每个处理器可执行16-128线程。这种片内多处理器(CMP)技术是微处理器技术发展的主要趋势,其优点之一就是大大减轻存储带宽的压力。节点间互连网络曾经是并行计算机研究最热门的方向。我在普度大学读博士时,H.J.Siegel 教授每年都开“Interconnection Network”这门博士生课程。在很长一段时间内,有关节点间互连网络的论文在并行处理和体系结构国际会议文集中占很大比例。现在国际上还有一种学术期刊叫“Interconnection Network”,我还是这份国际期刊的编委。我国计算机界对一台新研制的超级计算机是否有创新,

16、也特别注重互连网络是不是自己做的。对于至今超级计算机的CPU还要依靠进口的中国,以是否自己做互连网来区分第二种类型和第三种类型超级计算机似乎无可厚非。但不同于通信产业,计算机产业链的垂直分工已非常明显。近几年已冒出来一些专门做互连网络的公司,如美国的Myrinet公司等。尽管其产品的性能还低于最高档超级计算机的互连网络,但由于许多第三方并行软件开发商在Myrinet网络上开发、移植并行软件,使其软件逐渐丰富。有些用户(比如上海超级计算中心)为了获得更多应用软件与系统软件,坚持要买这种成熟的互连网络。这说明,不但用Commodity服务器有市场竞争力,Commodity互连网络也有市场竞争力。由

17、于互连网络公司能批量生产,一般比我们单独研制一台机器的互连网络要便宜。这里又遇到性能与成本的折衷。如果我们的目标是做一台最高性能的机器,选择自己设计互连网络是可取的。但如果我们的目的是做在市场上竞争的超级计算机,是购买商品化的互连网络还是自己做就得考虑成本。Infiniband标准的制定和产品问世,为研制生产超级计算机提供了新的互连网络选择。Infiniband的带宽已达到20Gb以上,已经与IBM自己做的专用互连网络性能差不多。今后除了研制第一类超级计算机,采用Infiniband做互连网络的公司可能会越来越多。在这种形势下,创新不创新只看做不做自己独创的互连网络恐怕就有点片面了。计算所是一

18、个科研单位,但每次拿到研制机器的科研经费不足硬件成本的一半,只能按用户要求做互连网络。因此曙光4000A按用户需求采用Myrinet也就不足为奇了。但计算所仍然用创新工程经费的支持一直坚持做互连网络技术研究,包括光互连的研究。计算所自己设计研制的互连网络性能已超过Myrinet,但只有在批量较大时,成本才会有竞争优势。 3. 不同的应用需要突破不同的技术瓶颈不同的应用对系统结构的要求是不同的。至今世界上还没有一个万能的体系结构完全适合所有的应用。对于批量很大的PC服务器和RISC服务器,厂商为了从规模效应中赚利润,只能根据市场需求较大的应用设计较通用的体系结构,这时用户的应用只能努力适应较固定

19、的体系结构。商场的规律是“店大欺客,客大欺店”,对于买主非常少的超级计算机,事情就反过来了,系统结构就要服从应用的要求。IBM的Blue Gene/L为什么敢采用性能只有通用CPU 1/3的嵌入式CPU PowerPC440做处理器和高组装密度的大规模并行结构(全机有32K个处理器),就是因为主要用于蛋白质折叠计算,对浮点处理能力要求不高但并行度很高。下面的表一列出了几种应用的技术瓶颈,从中可以看出不同的应用对超级计算机的要求很不一样。表中FP表示浮点计算能力,MS表示主存规模,MB表示存储器带宽,ML表示存储器延迟,IB表示互连网络带宽,IL表示互连网络延迟。(表一)超级计算机没有必要做成万

20、能、通用。对应用非常明确的用户,研制针对性强的专用超级计算机可能是一条又省钱又实惠的好办法。计算所为华大基因中心研制的生物计算超级计算机曙光4000H处理能力超过4万亿次,研制经费只花了600万元。其他的应用部门也可以考虑发展面向本行业的超级计算机系统。曙光公司就具备这种针对行业需求优化体系结构的集成创新能力,在石油、气象等行业已成功地打开了局面,这是我国发展高端计算机的重要思路。4. 我国发展超级计算机要走什么路在“未来超级计算”等报告中,美国学者较多地强调要重点研制全定制的最高水平超级计算机,强调商品化服务器节点不适合做超级计算机。从技术上讲这种分析有道理,但其中也有要拉开与日本的距离做超

21、级计算机霸主的政治考虑。我国的国情不同于美国,目前我国大多数用户购买超级计算机的经费预算还不到日本地球模拟器造价的1/100(地球模拟器造价超过4亿美元)。在我国,三种类型的超级计算机都有发展空间。Commodity机群是1997年出现的,现在不但占据了超级计算机的大部分市场,而且在TOP500的前20名中也占了12台。虽然采用商品化的节点和互连网络,但在系统优化配置、监控、特别是软件开发等方面仍有创新空间。这类工作主要应由企业完成,不宜再列入863等高技术计划。这两年我国通用CPU的研制有较大进展。到2005年底,龙芯2D的性能将与2G主频的奔腾4差不多,完全可以用来研制超级计算机与服务器。

22、也就是说,“十一五”期间,我们已有条件研制全定制的超级计算机。但是不是一定要研制并行向量机,是不是一定要不计成本研制世界上最高水平的计算机还需要认真论证。如果国家确有某种特殊需求,采取部分定制的方式无法满足需求,花大钱做一台也无可非议。一般而言,我国的重点应放在第二类(部分定制)超级计算机。根据有所为有所不为的原则,按照用户实际需求重点突破必须突破的技术瓶颈。至少计算所要重点做第二类超级计算机,即我们称之为“高科技武器”型的超级计算机。不是追求达到解决特定问题的计算速度世界第一,而是让用户花几千万元能真正获得最大的效益。超级计算机研究有很强的溢出效益。今天大部分微机技术甚至一些通信技术都来源于

23、过去的超级计算机研究。最近IBM等公司在PERCS等项目中开展了一系列大胆创新的原理性研究。比如他们正在研制的SCM(Storage-Class Memory)将使外存速度提高5001000倍,达到现在随机存储器的速度但价格比主存低得多。这种Disruptive(颠覆性)创新发明正是我们所需要的技术突破。瓶颈既是对我们的挑战,也是我们创新的机遇。计算所一定要加强体系结构方面的前瞻性研究,重视技术积累,不能人云亦云,盲目随大流。长期以来863计划没有把超级计算机当成有巨大牵引力的前瞻性研究,而是当成采购一台机器,这种短视的做法应当尽快改变。5. 计算所的努力方向之一是第三代机群系统如果把80年代

24、的VAX机群称为第一代机群,90年代IBM的SP2看成第二代机群的起点,那么我们现在要做的就是不同于第二代的第三代机群。第三代机群要突破的关键技术包括降低成本、降低功耗、提高可用性、提高I/O能力,从而提高实际应用效益,提高组装密度等等。在这些研究方向中计算所的重点是提高生产力价格比和机群的可用性,使工业标准机群真正成为生产性系统,在本行业应用中真正发挥第一生产力的作用。所谓生产力价格比不是实验室运行Linpack等测试程序反映出来的性能价格比,而是指单位成本、单位功耗、单位空间机群能提供给用户的实际生产力(Productivity)。所谓高可用是指计算机机群能像其他机械与电器设备一样长时间不

25、停机地工作。目前一台PC服务器的平均无故障运行时间一般是几年,用几千台PC服务器构成的机群平均几小时就会有一个节点出故障。如果不采取容错或其他高可用技术,这种机群无法真正在生产性应用中派上用场。计算所近三年左右的目标是使工业标准机群系统的性能和组装密度提高一个数量级(2007年达到100万亿次水平),成本和功耗降低一个数量级,可靠性提高一个数量级,使得大规模机群的可用性达到99.99%(比现在提高100倍)。要达到这些目标,必须在体系结构、硬件和系统软件设计等方面做出别人意想不到的创新。智能中心把传统的机群结构称为“玻璃天花板”。现在天花板已被捅破,创新的空间非常大。我很同意徐志伟副所长的判断

26、:“今后2-4年是我们计算所在计算机系统与软件领域做出经得起历史考验的科研成果的前所未有的时机。”我们一定要抓住这一有利时机,使计算所系统研究走到世界的前列。二、能力服务器大幅度降低成本的网格计算机一讲超级计算机,人们习惯上都与大型科学计算联系起来。实际上世界高端计算机只有不到10用户做科学计算。目前TOP500的计算机有一半以上安装在企业(其中只有少部分做科学计算,多数不是科学计算)。实际上世界最大的几台Cluster系统都是用于Web搜索和Internet服务。这些机器从不测Linpack,所以都不在TOP500中。曙光已销售近2000套机群,很大的比例用于Internet服务(包括内容处

27、理),因此也未列入国内统计的TOP100。既然大多数计算机用在学校、企业、机关,我们为什么不想一想什么样的体系结构才适合这类应用?为了区别于超级计算机,我们曾经把曙光2000/3000等称为“超级服务器”。我们的问题是:超级服务器应该做成什么样子?计算机(服务器)是什么?计算机不过是提供信息处理能力(包括计算能力)、存储能力和通信能力的一种数字化工具。我们真正需要的不是计算机,而是信息处理、存储和通信能力。上世纪80年代以来,由于个人生活的需要,个人计算机(PC机)蓬勃发展,使得PC机几乎成了计算机的代名词。得力于Intel和微软公司的市场运作,人们不知不觉将个人计算机变成了每个单位的工作终端

28、机;而把放大了的PC机,去掉显示器叫做服务器,这就基本上构成了今天的计算机世界。有谁认真测试过,一天24小时,我们办公桌上PC机中的CPU、存储器有多少时间真正在工作,我们机房中服务器的信息处理和存储能力究竟发挥了多少(见图一、图二)?如果更深入一些,考虑机器中的全部门电路,平均每一时刻究竟又有多少门电路在实际工作?我们每天的工作就是上网看Email ,发Email,通过eb查资料、编程序、写文档,我们需要的就是一种能为全体工作人员提供这些能力的数字化电子系统。假如现在世界上没有PC机,没有PC服务器,我们能不能只用计算所现有硬件资源的1/10(比如说100个高性能CPU、50GB随机存储器、

29、2TB磁盘)设计完全新型的信息处理能力服务器、存储能力服务器和通信能力服务器,使之满足全所科研工作的需求?这似乎是天方夜谭,但在网络如此发达的今天,我们为什么不能抛开已被固化的思维模式大胆尝试一下新的计算机运行模式?研究超级计算机的学者通常面临的是要求解一个规模巨大或者非常复杂的问题。他们碰到的难关总是资源不够,要想方设法用上更多的处理器和存储单元;他们的思路是尽量多占有资源,而且要考虑十分烦人的同步与一致性等问题。在共享存储环境下,一个处理机修改了Cache必须让所有的处理机都知道,否则算出来结果就不对。而对大多数企业、机关、学校、研究所而言,不是致力于求解一个大问题,而是要计算机响应每个人

30、各自不同的任务请求命令。我们现在面临的局面不是资源不够,而是大部分时间资源闲置;我们需要的不是多占有别人的资源,而是如何尽快释放自己的资源让别人用,当我们需要资源时又能立即得到。这是与超级计算机完全不同的用户要求,需要一种能大幅度节约信息化成本的能力服务器。这应当是今后几年中计算所做CPU、高端计算机系统、网络和网格研究的共同努力方向。在过去两年中,计算所提出了与国内其他学者不同的一种网格理念:所谓网格是指把一台计算机中的各种部件(CPU、存储器、磁盘等)和资源都独立上网,形成相对独立管理的能力服务器。从这种意义讲,未来的信息系统运行模式不是大量PC机和服务器连成网络,而是能力服务器与各种新型

31、终端构成一台网格计算机。就一个单位而言,整个计算所的信息资源就是一台大的网格计算机。如果处理器和存储器分别集中放在不同的机柜(处理器机柜中应有少量存储器,存储器柜中也应有少量处理器),对资源共享与管理肯定会有很多好处,但这是与Processor in Memory(PIM)正好相反的思路。做超级计算也许需要CPU离memory越近越好,但在我们的工作环境中,CPU实际上已经不是“中央”。也许把存储器改为中央更合适,即Central Memory Unit (CMU)或Central Storage Unit(CSU)。为什么我们不能以存储器为中心来考虑新的体系结构呢?当然,跨机柜的延迟会不会导

32、致我们的需求不能满足,还要做大量的实验来验证。如果采用光互连,机柜之间的带宽应该不成问题。总之,能力服务器怎么做还有很大的想象空间,有十分广阔的创新余地。工程中心的网络存储已经成功运行一年多并已走向市场,至少在磁盘独立上网方面我们已走出了坚实的一步。只要我们认准方向,持之以恒地做研究,一定会有令人拍手称快的好结果。作者介绍:李国杰:1943年5月生于湖南邵阳,1968年毕业于北京大学,1981年获中国科学院工学硕士学位,1985年获美国普渡大学博士学位。19851986年间在美国伊利诺依大学CSL实验室作博士后,研究计算机体系结构。1987年回到中国工作于中国科学院计算技术研究所,1989年被

33、该所聘为研究员。1990年被国家科委选聘为国家智能计算机研究开发中心主任,并担任国家高技术计划(863计划)智能计算机主题专家组副组长。近十多年,主要致力于并行处理、计算机体系结构、人工智能等领域的研究并发表了100多篇学术论文,合著了4本英文专著。目前担任英文版计算机学报主编。几年来,主持研制成功了曙光1号并行计算机,曙光1000大规模并行机曙光2000、曙光3000超级服务器和曙光天演系列计算机,领导计算所研制成功龙芯CPU并主持科学院重大项目IPv6网络研究。其中,曙光1号获1994年中国科学院科技进步特等奖和1995年国家科学技术进步二等奖;曙光1000获得1996年中国科学院科技进步

34、特等奖和1997年国家科学技术进步一等奖。曙光2000和曙光3000分别获得2001年和2003年国家科技进步二等奖。1994年获得首届何梁何利基金科技进步奖,1995年被选为中国工程院院士。2000年被评为全国先进工作者。2001年获得美国普度大学杰出校友奖。2002年当选第三世界科学院院士。李国杰院士现任中国科学院计算所所长、中国计算机学会理事长、全国人大代表、863信息领域专家委员会委员、国家信息化专家咨询委员会委员。面向方面(aspect)的程序设计方法 程 虎摘要 面向方面的程序设计(AspectOriented Programming, AOP)是一种很有前途的新型程序设计方法,它

35、是面向过程、面向对象方法的进一步发展。通过引入方面概念,改进关注点的分离(separation of concerns),减少代码缠结(code tangling)解决横切关注点(cross cutting concerns)的问题,提高软件质量和效率。自1997年AOP以来的7年间,全球已开展大量有关研究与开发工作,并自2002年起每年召开专门的国际学术会议(International conf .on AspectOriented Software Development,AOSD)探讨问题,交流取得的成果。关键词 方面,面向方面的程序设计(AOP),关注点,横切关注点,面向方面的软件开发

36、(AOSD)。1 引言计算机软件包括程序及其文档。程序设计包括设计、编制和调试程序的方法与过程。程序设计方法涉及用于指导程序设计工作的原理和原则,以及基于这些原理和原则的设计方法和技术。数十年来,经历公式翻译、过程式程序设计、结构化程序设计、逻辑式程序设计、函数式程序设计以及面向对象程序设计等。程序设计方法学可以对程序设计人员选用具体的程序设计方法起指导作用,而具体的程序设计方法对象程序设计工作的质量以及所设计出来的程序(即软件)的质量影响巨大。世间事物总是在不断发展变化,螺旋式上升。程序设计方法也如此,近年来流行面向对象程序设计方法。面向对象的方法起源于面向对象的编程语言,可以追溯到20世纪

37、60年代后期的Simula67语言。到20世纪末,面向对象方法已逐步发展成为一类完整的方法学和系统化的技术体系。它不仅指导编程设计,还指导开发操作系统、数据库、网络和编译系统等。使用面向对象语言来实现面向对象设计相对而言比较容易,用非面向对象语言也可实现面向对象设计。也有这种情况,即使用了面向对象语言,但由于未掌握面向对象的思维方法,开发出来的软件也未必是面向对象的。所以说,掌握面向对象的编程思想方法,如同获得练气功的真谛,它的重要性往往胜过了对编程语言的选择。面向对象方法有诸多优点,如使软件体系结构良好,便于软件构件化、软件复用和软件维护等。但经过这么多年实践摸索,人们也发现面向对象方法有其

38、不足,如许多软件系统不完全都能按系统的功能来划分构件,要完成的业务功能只是核心级关注点(concerns),此外,还有不少系统级关注点,它们是完成核心级关注点所必须的配套设施,如日志记录、跟踪、出错处理和安全检测等。这些系统级关注点与核心功能级关注点有交叉(cutcross)。当系统级关注点能相对分割地在基本功能中考虑和分析时,使用当前的面向对象语言导致在许多构件中要重复包含(扩散)这些代码,源程序就要变成一些为不同目的而编制的指令的缠结(tangling)混乱物。缠结现象是现有软件系统中许多不必要的复杂性的核心。它增加了功能构件之间的依赖性,分散了构件原来假定要做的事情,提供了许多程序设计出

39、错的机会,使得一些功能构件难以复用,源代码难以开发、理解和发展。按软件生命周期的阶段来说,在设计阶段,以类(class)为单位组织建模不全面;在编码阶段,把数据和方法都封装成类,不灵活、不便复用;在维护阶段,由于缠结原因造成难理解、难维护。因此,人们就想到面向方面(aspects)的方法。这一概念最早是由施乐(Xerox)公司在美国加州硅谷PaloAlto研究中心(PARC)的首席科学家、加拿大大不列颠哥伦比亚大学教授Gregor Kicgales等人首次在1997年的欧洲面向对象编程大会(ECOOP 97)上提出。2 基本概念2.1 方面(aspect)从抽象意义上讲,是对软件系统构件的性能

40、和语法产生一定影响的一些属性;从设计上讲是横切系统的一些软件系统级关注点;从实现上讲,是一种程序设计单元,它支持将横切系统的关注点封装在单独的模块单位中,是AOP将横切关注点局部化和模块化的实现机制。通过将横切关注点集中到aspect中,AOP就取得一种单一的结构化行为,该行为在传统程序中分布于整个代码里。在AOP中,aspect是一阶实体,aspect 之于AOP,正如class之于 oop。2.2 面向方面的程序设计(AOP)AOP是一种关注点分离技术,通过运用aspect这种程序设计单元,允许开发者使用结构化的设计和代码,反映其对系统的认识方式。要使设计和代码更加模块化、更具结构化,使关

41、注点局部化而不是分散于整个系统中。同时,需使关注点和系统其他部分保持良好定义的接口,从而真正达到“分离关注点,分而治之”的目的。类似于传统语言的语言编译器,aspect语言有相应的编织器(weaver),它能像编织地毯、壁毯那样,把各式彩线经纬纵横地编织出美丽的图案。2.3 关注点(concern)关注点就是一个特定的目标、概念或者兴趣域。从过程的角度,典型的开发关注点包括:需求分析、设计、编码、测试和维护。从技术的角度,一个典型的软件系统分别包含若干个核心级和系统级的关注点。核心级关注点是系统要完成的业务功能;系统级关注点是完成核心级关注点所必须的配套设施,这些配套设施通常就认为是整个系统的

42、系统特性,或者是业务功能的功能约束。2.4 横切关注点(crosscutting concern)理解横切关注点的好途径是用例子来说明。考虑把统一建模语言(UML)用于简单的图编辑器(Figure Editor)。图1. 在图编辑器中方面模块、模块类模块示意图其中有两个具体的图元素:点和线。在面向对象方法中,用类表示点和线,这些显露好的模块性,每个类的源代码是紧密相关(内聚),并且类之间有清楚和良好定义的接口。但是如果再考虑这样一个关注点:图元素移动时要通知屏幕管理器Display,这就要求移动图元素的每个方法(method)要做通知。图中每个方法必须实现这个关注点,即点和线框中每个方法要实现

43、那些关注点。注意,显示修改的框既不适合在其它框内也不适合环绕其它框,我们称这为横切关注点。如果只使用面向对象程序设计方法,实现横切关注点就趋向于分散在系统各处,如图中所示。但是,如果使用AOP机制,我们就可以在一个单个方面中,模块化显示修改行为的实现。我们可以用一个单个模块单位实现这个显示修改行为,它使得我们容易把它作为一个单个程序设计单元来思考。有了面向方面的程序设计语言机制,我们可以在设计级用方面来思考构建软件系统。3 需求规约(specification)与设计开发软件的重要原则之一是要分离各种关注点,这种关注点的分离,首先要体现在需求分析,对需求进行规约,然后针对需求规约进行设计。前面

44、已经提到,面向对象的分析与设计有局限性,引入aspect概念后,相应的规约和设计也要重新考虑。Xerox 公司PARC已设计开发Aspect J语言,它是基于Java语言的AOP扩展,既是一种规约语言,也是一种AOP的实现语言。Aspect J使用Java语言实现单个关注点,并通过对Java进行扩展,提供了编织(weaving)规则。4 实现以扩充Java的实现方式为例,编织方式有3种:1. 静态织入(编译时织入):借助预编译器对源代码进行增强,代表是Aspect J。2. 装载时织入:修改class loader,在加载class时对其进行二进制增强,代表是J Boss AOP。3. 动态织

45、入(运行时织入):利用Java动态代理(dynamic proxy)在运行时拦截方法调用,织入方面逻辑。大多数AOP框架均以这种方式实现,灵活性强,且对被织入模块的侵入性较小。代表有Nanning、Spring AOP等。5 展望自1997年首次在欧洲面向对象会议上提出AOP以来的7年间,全球已开展大量有关研究与开发工作,并自2002年起,每年春天分别在欧洲和美国轮流召开专门的面向方面软件开发(AOSD)国际学术会议。第1届是2002年4月在荷兰Enschede召开,第2届是2003年3月在美国波士顿召开,第3届是2004年3 月在英国Lancaster召开,第4届将于2005年3月在美国芝加

46、哥召开。前三届的与会者包括美国、加拿大、荷兰、英国、法国、德国、比利时、瑞士、西班牙、爱尔兰、丹麦和日本、以色列等。除了Xerox公司,美国IBM公司的纽约Watson研究中心,德国西门子公司和日本东芝公司等都投入研发,欧美和日本的许多大学也在进行研究,我国北京大学和西安电子科技大学的软件研究所也对AOP给以关注并开展了一些研究开发工作。从近年的发展来看,研究开发AOP的角度很多,有的研究语言,有的研究规约和设计,有的研究实现,应用还比较少,只是为研究而做些实例试验。但从各种刊物和会议上的报告交流来看,提出了许多问题,并对不少问题进行了深入的分析研究,有的已提出解决方案,并取得了初步成果。面向

47、对象方法技术从语言角度提出后,已在软件技术方面取得突破,并独树一帜,影响操作系统、数据库、编译和网络软件的研发。现在AOP也有类似情况,已有人在研究其对操作系统、中间件等的研发作用,并已有一些文章发表。预计AOP也会对软件技术发展产生影响,希望我国软件工作者能适当投入力量,关注和进行AOP的研发工作。1 Kicgales G,et al AspectOriented Programming, In:Proc.of the European Conf .on ObjectOriented Programming (ECOOP),June 19972 曹东刚,梅宏.面向Aspect的程序设计一种新

48、的编程范型,计算机科学,2003 ,30(9),5103 高海洋,陈平. AOP综述,计算机科学,2002,29(10),1331354 Elrad T等编,面向方面的程序设计专集,(共12篇文章),CACM,2001,44(10),28975 1997年以来ECOOP会议录中有关AOP文章,参见LNCS,第1241,1445,1743,1964,2072,2374,2743,3086等卷,Springer,199720046 2002年以来AOSD会议录,可见ACM或AOSD网站:www. acm.org或。作者简介:程 虎 男,1938年生,中国科学院软件所研究员,博士生导师,现任软件所总体部顾问及中国计算机学会通讯编委。主要方向为计算机语言和编译系统的研究与开发和人工智能与神经网络的研究,还关注软件工程与信息技术标准。本体论的研究和应用现状刘红阁 郑丽萍 张少方摘要 “本体论”原是哲学研究中发展出来的一个概念。近年来,本体论的研究和应用受到了知识工程及相关应用领域的广泛关注。本文对目前本体论的研究和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com