并行编程编译器
⑴ lammps 可以同时编译 并行 和 单核吗
并行技术可分为三类,分别是线程库、消息传递库和编译器支持。线程库(如 POSIX* 线程和 Windows* API 线程)可实现对线程的显性控制;如果需要对线程进行精细管理,可以考虑使用这些显性线程技术。借助消息传递库(如消息传递接口〔MPI〕),应用程序可同时利用多台计算机,它们彼此间不必共享同一内存空间。MPI 广泛应用于科学计算领域。第三项技术是在编译器中实现的线程处理支持,采用的形式自动并行化。一旦将线程处理引入到应用程序中,开发人员就可能要面对一系列新的编程缺陷(Bug)。其中许多缺陷是难以检测到的,需要付出额外的时间和关注以确保程序的正确运行。一些比较常见的线程处理问题包括:数据争用 ,同步,线程停顿 ,锁 ,共享错误.
并行技术可以分为多进程编程和多线程编程。人们总会用某种IPC(inter-process communication,进程间通信)的形式来实现进程间同步,如管道(pipes),信号量(semaphores),信息队列(message queues),或者共享存储(shared memory)。在所有的这些IPC形式中,共享存储器是最快的(除了门(doors)之外)。在处理进程间资源管理,IPC和同步时,你可以选择 POSIX或者System V的定义。
线程技术早在20世纪60年代就被提出,但真正应用多线程到操作系统中还是在20世纪80年代中期。现在,多线程技术已经被许多操作系统所支持,包括Windows NT/2000和linux。
在1999年1月发布的Linux 2.2内核中,进程是通过系统调用fork创建的,新的进程是原来进程的子进程。需要说明的是,在Linux 2.2.x中,不存在真正意义上的线程,Linux中常用的线程Pthread实际上是通过进程来模拟的。
也就是说,Linux中的线程也是通过fork创建的,是“轻”进程。Linux 2.2缺省只允许4096个进程/线程同时运行,而高端系统同时要服务上千的用户,所以这显然是一个问题。它一度是阻碍Linux进入企业级市场的一大因素。
2001年1月发布的Linux 2.4内核消除了这个限制,并且允许在系统运行中动态调整进程数上限。因此,进程数现在只受制于物理内存的多少。在高端服务器上,即使只安装了512MB内存,现在也能轻而易举地同时支持1.6万个进程。
在Linux 2.5内核中,已经做了很多改进线程性能的工作。在Linux 2.6中改进的线程模型仍然是由Ingo Molnar 来完成的。它基于一个1:1的线程模型(一个内核线程对应一个用户线程),包括内核内在的对新NPTL(Native Posix Threading Library)的支持,这个新的NPTL是由Molnar和Ulrich Drepper合作开发的。
2003年12月发布的Linux 2.6内核,对进程调度经过重新编写,去掉了以前版本中效率不高的算法。进程标识号(PID)的数目也从3.2万升到10亿。内核内部的大改变之一就是Linux的线程框架被重写,以使NPTL可以运行其上。
在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semaphore)、spinlock、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4内核中)、RCU(只包含在2.6内核中)和seqlock(只包含在2.6内核中)。
现在的随着现在计算机体系结构的发展,指令级的并行和线程级的并行都在日新月异地发展着.
⑵ Compac Visual Fortran 如何做并行计算
程序要实现并行其实有两个方面,不单单是编译器的问题,首先你还要装并行库,比如mpich;其次,你要把源程序改为并行程序,要加上一些并行语句如MPI_Init (&argc, &argv),必要时还应该把程序结构改为适用于并行。最后,你就可以把程序编译为并行执行码了,祝你好运!
给你一个vc++配置编译并行的网址,cvf也应该差不多,windows下并行其实我没做过,我主要在linux下做并行,
http://securelvlan.spaces.live.com/Blog/cns!C60FD6EABDDFC877!250.entry
⑶ 计算机体系结构的技术革新
计算机体系结构以图灵机理论为基础,属于冯·诺依曼体系结构。本质上,图灵机理论和冯·诺依曼体系结构是一维串行的,而多核处理器则属于分布式离散的并行结构,需要解决二者的不匹配问题。
首先,串行的图灵机模型和物理上分布实现的多核处理器的匹配问题。图灵机模型意味着串行的编程模型。串行程序很难利用物理上分布实现的多个处理器核获得性能加速.与此同时,并行编程模型并没有获得很好的推广,仅仅局限在科学计算等有限的领域.研究者应该寻求合适的机制来实现串行的图灵机模型和物理上分布实现的多核处理器的匹配问题或缩小二者之间的差距,解决“并行程序编程困难,串行程序加速小”的问题。
在支持多线程并行应用方面,未来多核处理器应该从如下两个方向加以考虑。第一是引入新的能够更好的能够表示并行性的编程模型。由于新的编程模型支持编程者明确表示程序的并行性,因此可以极大的提升性能。比如Cell处理器提供不同的编程模型用于支持不同的应用。其难点在于如何有效推广该编程模型以及如何解决兼容性的问题。第二类方向是提供更好的硬件支持以减少并行编程的复杂性。并行程序往往需要利用锁机制实现对临界资源的同步、互斥操作,编程者必须慎重确定加锁的位置,因为保守的加锁策略限制了程序的性能,而精确的加锁策略大大增加了编程的复杂度。一些研究在此方面做了有效的探索。比如,SpeculativeLockElision机制允许在没有冲突的情况下忽略程序执行的锁操作,因而在降低编程复杂度的同时兼顾了并行程序执行的性能。这样的机制使得编程者集中精力考虑程序的正确性问题,而无须过多地考虑程序的执行性能。更激进的,(TCC)机制以多个访存操作(Transaction)为单位考虑数据一致性问题,进一步简化了并行编程的复杂度。
主流的商业多核处理器主要针对并行应用,如何利用多核加速串行程序仍然是一个值得关注的问题。其关键技术在于利用软件或硬件自动地从串新程序中派生出能够在多核处理器上并行执行的代码或线程。多核加速串行程序主要有三种方法,包括并行编译器、推测多线程以及基于线程的预取机制等。在传统并行编译中,编译器需要花费很大的精力来保证拟划分线程之间不存在数据依赖关系。编译时存在大量模糊依赖,尤其是在允许使用指针(如C程序)的情况下,编译器不得不采用保守策略来保证程序执行的正确性。这大大限制了串行程序可以挖掘的并发程度,也决定了并行编译器只能在狭窄范围使用。为解决这些问题,人们提出推测多线程以及基于线程的预取机制等。然而,从这种概念提出到现在为止,这个方向的研究大部分局限于学术界,仅有个别商业化处理器应用了这种技术,并且仅仅局限于特殊的应用领域。我们认为动态优化技术和推测多线程(包括基于线程的预取机制)的结合是未来的可能发展趋势。
冯·诺依曼体系结构的一维地址空间和多核处理器的多维访存层次的匹配问题。本质上,冯·诺依曼体系结构采用了一维地址空间。由于不均匀的数据访问延迟和同一数据在多个处理器核上的不同拷贝导致了数据一致性问题。该领域的研究分为两大类:一类研究主要是引入新的访存层次。新的访存层次可能采用一维分布式实现方式。典型的例子是增加分布式统一编址的寄存器网络。全局统一编址的特性避免了数据一致性地考虑。同时,相比于传统的大容量cache访问,寄存器又能提供更快的访问速度。TRIPS和RAW都有实现了类似得寄存器网络。另外,新的访存层次也可以是私有的形式。比如每个处理器和都有自己私有的访存空间。其好处是更好的划分了数据存储空间,已洗局部私有数据没有必要考虑数据一致性问题。比如Cell处理器为每个SPE核设置了私有的数据缓冲区。另一类研究主要涉及研制新的cache一致性协议。其重要趋势是放松正确性和性能的关系。比如推测Cache协议在数据一致性未得到确认之前就推测执行相关指令,从而减少了长迟访存操作对流水线的影响。此外,TokenCoherence和TCC也采用了类似的思想。程序的多样性和单一的体系结构的匹配问题。未来的应用展现出多样性的特点。一方面,处理器的评估不仅仅局限于性能,也包括可靠性,安全性等其他指标。另一方面,即便考虑仅仅追求性能的提高,不同的应用程序也蕴含了不同层次的并行性。应用的多样性驱使未来的处理器具有可配置、灵活的体系结构。TRIPS在这方面作了富有成效的探索,比如其处理器核和片上存储系统均有可配置的能力,从而使得TRIPS能够同时挖掘指令级并行性、数据级并行性及指令级并行性。
多核和Cell等新型处理结构的出现不仅是处理器架构历史上具有里程碑式的事件,对传统以来的计算模式和计算机体系架构也是一种颠覆
2005年,一系列具有深远影响的计算机体系结构被曝光,有可能为未来十年的计算机体系结构奠定根本性的基础,至少为处理器乃至整个计算机体系结构做出了象征性指引。随着计算密度的提高,处理器和计算机性能的衡量标准和方式在发生变化,从应用的角度讲,讲究移动和偏向性能两者已经找到了最令人满意的结合点,并且有可能引爆手持设备的急剧膨胀。尽管现在手持设备也相对普及,在计算能力、可扩展性以及能耗上,完全起到了一台手持设备应该具备的作用;另一方面,讲究性能的服务器端和桌面端,开始考虑减少电力消耗赶上节约型社会的大潮流。
Cell本身适应这种变化,同样也是它自己创造了这种变化。因而从它开始就强调了不一样的设计风格,除了能够很好地进行多倍扩展外,处理器内部的SPU(SynergisticProcessorUnit协同处理单元)具有很好的扩展性,因而可以同时面对通用和专用的处理,实现处理资源的灵活重构。也就意味着,通过适当的软件控制,Cell能应付多种类型的处理任务,同时还能够精简设计的复杂。
⑷ 学C语言现在最好用的编程软件
Turbo C就可以的。编辑文本的时候可以用utraledit
至于vc++之类的我是不推荐初学者使用的
⑸ 编译器的种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。 编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。
⑹ 什么是编译器
编译器
编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。
[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。
一个现代编译器的主要工作流程如下:
* 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)
工作原理
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。
预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。
编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。
编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。
编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。
常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。
上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。
机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。
⑺ CPLD和FPGA单片机是使用VHDL或verlilog HDL语言来编程的吗
CPLD/FPGA
和
单片机是不同的。
VHDL,verilog是FPGA(或cpld)的编程语言。着两种都是硬件编程语言,也就是对硬件进行逻辑综合编程。
单片机是“已知硬件”,也就是说硬件都已经设计好了,需要做得是软件编程,一般是用C或汇编。
当然,做FPGA做到复杂的时候(操作系统)也要用到C编程。
说清楚了吧^_^
⑻ 美国计算机专业
前20名
CS——Computer Science的简称,即计算机科学。
总的来说,计算机专业前20名的学校可分成三类:
A.4个最为优秀的CS Program:Stanford,MIT,U.C.Berkeley,CMU。
B.6个其他前10名的:UIUC,Cornell,U.Washington,Princeton,U.Wisconsin- Madison和 U.Texas-Austin。其中UIUC,Cornell,U.Washington和 U.Wisconsin-Madison几乎从未出过前10名。
C.其他非常非常优秀的CS:CalTech,U.Maryland-College Park,UCLA,U.Michigan, GIT,Brown,Harvard,Yale,Pure和 Rice。
1. 斯坦福大学(Stanford University)
Stanford的CS是个很大个的CS,拥有40人以上的Faculty成员,其中不乏响当当、硬梆梆的图灵奖得主(Edward A.Feigenbaum, John McCarthy)和各个学科领域的大腕人物,比如理论方面的权威Donald E. Knuth;数据库方面的Jeffrey D. Ullman(他还写过那本着名的编译原理,此人出自Princeton);以及RISC技术挑头人之一的John Hennessy。相信CS的同学对此并不陌生。该系每年毕业30多名Ph.D.以及更多的Master。学生的出路自然是如鱼得水,无论学术界还是工业界,Stanford的学生都倍受青睐。几乎所有前10 名的CS学校中都有Stanford的毕业生充当教授。
毕业于U. of Utah的Jim Clark曾经在Stanford CS当教授。后来就是这个人创办了高性能计算机和科学计算可视化方面巨牛的SGI公司。SUN公司名字的来历是Stanford University Network。顺便提一下,创办 YAHOO的华人杨致远曾在斯坦福的EE攻读博士,后来中途辍学办了YAHOO。
CS科研方面,斯坦福在理论、数据库、软件、硬件、AI等领域都是实力强劲的顶级
高手。斯坦福的RISC技术后来成为SGI/MIPS的Rx000系列微处理器的核心技术;DASH,FLASH项目更是多处理器并行计算机研究的前沿;SUIF并行化编译器成为国家资助的重点
项目,在国际学术论文中SUIF编译器的提及似乎能为某些平庸的论文平添几分姿色。
Stanford有学生14000多,其中研究生7000多;CS有175人攻读博士,350人攻读硕士。每年招收的学生数不详,估计少不了。但不要忘了,每年申请Stanford CS的学生接近千人。申请费高达$80。
斯坦福大学位于信息世界的心脏地带——硅谷。加州宜人的气候,美丽的风景使得
Stanford堪称CS的天堂。33.1平方公里的校园面积怕是够学子们翻江倒海,叱咤风云的
了。
2. 麻省理工学院(Massachusetts Inst. of Technology)
MIT招生好像不看GRE成绩。MIT的CS是巨牛的,99年最新排名上它和斯坦福同被打了
5.0的满分,两者并列第一。MIT的CS曾为CS的发展作出不可磨灭的贡献,数据流计算的
思想和数据流计算机、人工智能方面的许多重大成就,影响了整个UNIX界的X-Window…
… MIT 和 Stanford一样,几乎都是在CS界样样巨牛的学校。据某位大侠提供的资料:
MIT的 Media Arts and Sciences知名度不在Computer Department之下。主要是多媒体技术,信息处理,人工智能等。有一大批着名的教授,如Marvin Minsky(图灵奖获得者)。
3. 加州大学伯克利分校(University of California-Berkeley)
同样地处旧金山湾畔,硅谷地带,离Stanford大约只有50公里的UC. Berkeley是美国最激进的学校之一。60年代的嬉皮文化,反越战,东方神秘主义,回归自然文化都起
源于此。诗人爱伦金斯堡是当年UC. Berkeley的代言人。
在当今高科技领域UC. Berkeley在缔造新的神话,在文学、数学、化学、新闻等20
多个大的学科领域位居前3名。16个诺贝尔奖得主,总数近200的科学院院士、工程院院
士,连同众多在硅谷商战中成为亿万富翁的伯克利人撑起了一面汇集天下英才的大旗。
INTEL总裁Andrew Grove,就是毕业于UC. Berkeley。
BSD版的UNIX影响了整个CS界,伯克利的RISC技术后来成为了SUN公司SPARC微处理器的核心技术,David Patterson接下了一个6亿美元的项目用于新型计算机体系结构,特别是IRAM的研究开发。
UC. Berkeley有学生30000多,研究生超过8500人。申请费和加州大学的其他分校一样,$40。据一项最近的调查,伯克利已经成为美国大学生最向往的研究生院,高居榜首,其申请的难度可想而知。
UC. Berkeley的CS是个大系,Faculty中有图灵奖得主以及像Patterson这样的巨牛。CS科研方面,UC. Berkeley也是样样强。
旧金山湛蓝起伏的海湾,苍翠绵延的山峦,舒心宜人的气候,以及近在咫尺的硅谷
……
这一切的一切不也使得UC. Berkeley俨然一个CS学子的世外桃源吗?
4. 卡耐基梅隆大学(Carnegie Mellon University)
CMU是个位于匹兹堡的不大的学校,学生7000多,校园好像也不大。但这个学校在工
程及其他一些领域却是顶尖的学堂。CMU的CS不是一个系,而是一个学院,其规模之大,
可能只有Stanford,UIUC可与之相比。Mach操作系统,PVM,C.mmp等都有CMU的巨大贡献。
申请CMU的难度很大,因为尽管CMU的CS Faculty很多,但每年只招收不足30人的研
究生队伍。
5. 伊利诺斯大学(Univ. of Illinois-Urbana-Champaign)
UIUC的工程学院在全美是至尊级的,其CS,ECE,EE在历史上都屡建战功。在CS方面
,从早期的超级计算机ILLIAC I,II,III,IV到后来的CEDAR,都是CS发展史上,特别是并行计算机发展史上的重要事件,影响和引导了CS很长时期的发展。David Kuck曾是
并行计算机处理界的一代先驱。
超级计算机研究开发中心(CSRD),美国国家超级计算及应用中心(NCSA)等众多
的机构,使得UIUC的CS常常成为研发的领头雁。
大家可能还记得,Netscape-Navigator的最初开发人员中有个Marc Anderssen。这位来自Wisconsin 的小伙子在UIUC读本科,大四的时候在NCSA参与编写了MOSAIC;后来他去了硅谷,并在那里遇到了前面提到过的Jim Clark,SGI的前创始人,两人一见如故,联手创办了着名的网景Netscape,并一度在浏览器市场上独霸武林。
还有Lotus Notes, 远程登录程序NCSA Telnet, 邮件程序Eudora等的作者,都是UIUC的毕业生。商务软件巨人Siebel Systems的创始人Tom Siebel,也是毕业于UIUC的。
UIUC是个大学校,学生总数超过35000,研究生院近万人。
UIUC的CS很大,40余个Faculty提供了全面的CS教育和科研项目。每年30多个博士的
毕业数目似乎只有Stanford可以匹敌。
UIUC的Polaris并行化编译器是这个领域能和Stanford的SUIF直接叫板的拳头产品,清华开发并行编程环境时选用了这个系统。
UIUC在计算机硬件、软件、AI、DB等领域都相当强大。特别是硬件,如前面提到的
ILLIAC,CEDAR等。
事实上,UIUC在超级计算机系统的研究开发方面绝不逊于MIT、Stanford等任何一个,甚至有过之而无不及。NCSA建立在UIUC这一事实本身就是佐证。UIUC CS的学生毕业后去学术界的不少,Stanford,UC. Berkeley等CS名校都有UIUC的博士挑大梁。但更多UIUC CS学人还是进入业界,成为业界实干的中坚。
6. 康奈尔大学(Cornell University)
作为IVY LEAGUE的成员和一所私立学校,Cornell有其独到的优势。在美国,私立学
校一般要比公立学校难进,其学生也是经过严格的选拔才录取的。Cornell的CS学生入校
后多能享受FELLOWSHIP的待遇,其个人经济条件非公立学校可比,加上贵族式校友的提
拔,私立学校的出路是很诱人的。康奈尔在理论计算机方面一直是顶级高手,但在其他
CS领域并不总在前10名。
Cornell学生18000多,研究生过5000人。CS每年招攻读Ph.D.的学生25人左右。
7. 华盛顿大学(University of Washington)
位于Seattle的U. of Washington得天独厚——计算机界的巨牛MS就在西雅图,而且更要命的是,Bill Gates就是那里的人。这位Harvard的辍学者给了哈佛许多MONEY,但同给U. of Washington的钱财相比,实在是小巫见大巫。
U. of Washington位于风光秀丽的WASHINGTON湖畔,气候四季如春。33000多学生中研究生有8000名左右。Seattle最令人厌恶的地方可能就是一年有160天会降水。
U. of Washington的CS较大,30多名Faculty成员,每年近20个优质博士毕业,以及大量的Master。估计每年的招生数应该不低。U. of Washington的CS在各个方面比较均衡,最强的软件排名第5,而其他领域一般也都能位居前10,好像没有明显很弱的地方。
图灵奖得主Dick Karp从UC. Berkeley告老还乡后又被返聘到了U. of Washington的CS。U. of Washington的CS要求很高,Ph.D.学生入学的平均GPA高达3.86,GRE2160以上,加上一般较早的DEADLINE,申请U. of Washington是相当有难度的。
8. 普林斯顿大学(Princeton University)
Princeton是个令人神往的地方,这里曾经是世界的科学中心。
Princeton的CS不大,18个Faculty成员,学生人数也不算多。科研上除了排名第5的理论,似乎还没注意到其他闪光点。但是,Princeton无疑培养出了大量计算机界的优秀人物,Jeffrey D. Ullman,John McCarthy等巨牛人物均出自大名鼎鼎的Princeton。在
Princeton领受的教育是最好的教育熏陶。
Princeton学校不大,只有6000多学生,研究生不过1700人。
9. 威斯康星大学(University of Wisconsin-Madison)
U. of Wisconsin-Madison的CS较大,35个Faculty成员,200多个研究生,每年招60—70个新生。目前几乎1/4的Faculty来自UC. Berkeley,博士生毕业后有去Stanford ,UC. Berkeley等牛校挑大梁的,但和UIUC类似,似乎进入业界的更多一些。然而要在这里拿到博士学位可不容易。超过七成的人,会在中途找到比较理想的工作后,拿着硕士文凭拔腿就跑,免得被那些无穷无尽的科研项目给整惨了。
U. of Wisconsin-Madison的数据库一直在前3位,经常是第1位。这里的数据库由于在设计实现DBMS系统上的传统优势,使其在业界的声誉相当崇高,据说Microsoft里有一帮Wisconsin校友从中兴风作浪,Oracle也格外青睐Wisconsin-Madison的学子。
Wisconsin的硬件、计算机体系结构实力巨牛,99排名第6,对业界相当有影响力。
微处理器中的超标量技术(SuperScalar)源于此地;多处理机CACHE一致性的总线侦听
SNOOPING协议,IEEE SCI协议等,都是源于此地。正在研究开发中的MultiScalar技术和 DataScalar技术据说可以把微处理器每个时钟周期的指令发射数提到10以上,大大地提高微处理器的计算能力。Wisconsin的软件99排名第7。主要是在系统软件方面做OS 的设计与实现,WEB上的CACHE策略,支持共享主存和消息传递两种并行编程模式及其混合的并行程序设计语言和编译器,以及由MIDSHIP项目挑起的关于并行与分布式计算,OODB,科学数据库,支持图象查询的新型查询语言以及图象处理等方面的研究。由于美国有大量的卫星图象需要及时处理,加上迫切需要GIS系统的研究开发,这方面的研发使得U. of Wisconsin-Madison捞到了不少经费。
Wisconsin和UIUC的CS理论都是前10名左右。Wisconsin的Carl de Boor是逼近理论 方面的大牛。
U. of Wisconsin-Madison是个大型的综合性学校,40000学生中研究生院的超过10 000,这万人中有博士生5000,硕士生3500,法学院、医学院、护理学院、兽医学院的职业学生2000人。2200多Faculty中有多位诺贝尔奖得主,52个院士,其中18个是工程院院士。
需要注意的是,Wisconsin的CS有点不同于其他许多学校,它隶属于College of Le
tters & Science,而不在College of Engineering下面。因此许多偏硬件的项目,比如嵌入式系统,网络硬件、路由,多媒体,通信,自控以及数字信号处理等项目不在CS D ept.,而是在工程院下的Dept. of Electrical & Computer Engineering,即ECE系。
那个系也挺大,比CS还要大不少。98年在工程类排名的计算机工程一项上排了第9位
。
10. 德克萨斯大学(University of Texas-Austin)
U. of Texas-Austin的CS较大,Faculty中好像有个图灵奖得主。该系发展比较平衡,最好的AI排第5,其他几个专业也多能挤进前十。
U. of Texas-Austin是个巨大的学校,5万学生,研究生院的可能有1.3万。但学校的主校区却好像面积不足,仅140公顷,按美国大学的标准,太不足了。
11. 加州理工学院(California Institute of Technology)
CIT的CS很小,只有大约5位教授,每年招很少的学生。虽然申请CIT是免费的,但建
议不要轻易尝试。由于系太小,CIT好像只是在计算机硬件和科学计算的可视化方面很强
。该系多年以来一直稳坐第11、12位几乎没动过窝;类似的情况还有斯坦福,MIT,稳居
第1、2位,Cornell稳居第5位,U. of Wisconsin-Madison稳居第9、10位。CIT的CS和其他系,比如数学、物理、生物等需要大量科学计算的部门联系很紧密。CIT学校也很小, 2000名学生中研究生占1100人。Faculty人数也不多,但几乎个个是巨牛,按平均水平看,CIT可能是世界上最牛的学校了。
12. 马里兰大学(University of Maryland at College Park)
U. of Maryland at CP是一个实力相当强劲的CS,软件第8,数据库第4,AI第9,三个专业都挤进了前10位,它的TINY系统有相当的知名度。
13. 加州大学洛杉矶分校(University of California-Los Angeles)
历史上UCLA的CS曾经一度辉煌,上到过第6(NRC\' 82),但近年来一直徘徊在第13 —15。而且CS的各个专业细目几乎没有一个能进前10名。尽管如此,UCLA的CS还是十分强大的。
UCLA辉煌的历史可能在于它对Internet的发展所作出的巨大贡献。六十年代美国的
ARPA在搞网络互连的开创性研究,ARPA网的四个节点是:UCLA,Stanford的SRI,UCSB和 U. of Utah。此时一位来自美国新英格兰地区的青年Vinton Cerf不去离家咫尺的Yale大学,远涉千里,来到了加州。他先在Stanford获得数学学士,然后到UCLA拿下了CS的硕士和博士。
毕业后Cerf一直在SRI从事ARPA网的研究,特别是研究如何让它无法正常工作。几年
后,Cerf与MIT一位到业界闯荡的数学教授Kyhn合作研发,搞出了一套软件系统用于网络
互连(1973年)。这就是TCP/IP协议的诞生。
UCLA作为INTERNET的先驱,地处阳光灿烂的南加州,应当成为CS学生的乐土。
UCLA有学生33000人,其中研究生院的占9900人。地处洛杉矶的UCLA周围几乎有玩不尽的地方:如DISNEY,HOLLYWOOD等。由于位于大城市,校园不是很大,但风景异常美丽。
UCLA的CS较大,规模应该和U. of Washington和U. of Wisconsin-Madison类似。
14. 密歇根大学(University of Michigan-Ann Arbor)
U. of Michigan 是个非常了不起的学校。在BIG TEN里,从综合的角度上说它可算
得上是领头羊了,当然UIUC, U. of Wisconsin-Madison也紧随其后。这里的CS偏硬的更厉害些,硬件排在第9,而计算机工程排第7,EE第5,都是前10名中的巨牛。Michigan 的CS和EE合在一起称为EECS系,是个相当大的系,每年招收的学生应当不在少数。
Michigan的CS估计在历史上也相当牛,U. of Wisconsin-Madison CS里两位来自Mi chigan 的教授都是院士,在其他CS系里,比如UIUC的,也大有Michigan 的牛人在。如 前述,UIUC的CS在硬件上极强,而Michigan 的CS中有许多UIUC的哥们在那里当老师。
15. 佐治亚理工学院(Georgia Institute of Technology)
GIT是个较大的学校,GIT的工程学院很厉害,研发经费仅次于MIT,和UIUC,Michi
gan差不多。CS系的数据库第7,GUI第4。
16. 布朗大学(Brown University)
Brown的规模不大。这所IVY LEAGUE中的私立学校可能拥有一些类似于CORNELL的优势。CS的GUI可以列在第6位,好像还有许多关于语音识别等偏人工智能方面的研发项目
。
17. 哈佛大学(Harvard University)
在CS的早期发展史上,Harvard曾经是泰斗级的人物,毕竟CS和数学,物理的渊源太
深太长了。好像王安是这里出来的,Bill Gates也是这里出来的。Harvard毕竟是Harva rd,总是名人辈出,因为Harvard总是可以招到最优秀的人。但千万别以为哈佛人人牛。Harvard不喜欢带工程色彩的东西,CS是挂在Arts & Science学院下面的Division of E ngineering and Applied Science,好像连独立的一个系都不是。除了理论可以排进前 10名以外,其他项目怕也拿不出多少货色了。
哈佛大学共有学生18000人,其中研究生院的11000人。Harvard大学拥有世界上最多的诺贝尔奖得主,150多个美国国家科学院院士。哈佛的CS估计不会是大个子,招的学生可能也不多,申请的难度应当很大。
18. 耶鲁大学(Yale University)
YALE曾经也进过前10名(NRC\' 82),是YALE和UCLA而不是Princeton和U. of Texa s-Austin位于前10名的榜上。YALE的CS不大,十几个老师加上为数不多的学生,每年只招收六个博士研究生。
和Harvard这样很重文理的学校一样,YALE的CS在理论上比较强。但不同于哈佛,Y
ALE有独立的CS系,受到较高的重视。YALE CS在AI和软件方面比较强。着名的LINDA并行编程模式就是在这里提出并实现的。YALE 的毕业生到学术界的比到业界的似乎 要多, 哈佛似乎也是这样。
19. 普渡大学(Pure University)
可能许多人还不知道,Pure的计算机系是美国最早成立的计算机系。建系之初一
直处于TOP 10。在70年代由于本人不甚了解的原因,没落了。Pure的排名也不太稳定
,从13到30的排法似乎都见过。Pure是个大学校,有35000学生。其工程学院很出名 20. 莱斯大学(Rice University)
Rice是个位于休斯顿的小学校,4000名学生,研究生有1600左右吧。CS也不大,优
势在于软件,排在第9位。该系的KENNEDY是个巨牛的人物,是美国HPCC常委的关键人物
之一,好像还是总统在信息科学方面的特别顾问。KENNEDY是并行计算领域的大牛。前几
年,他义无反顾地承担起高性能FORTRAN语言(HPF)的编译器研制工作,项目之大,投
入人力之巨,加上他的权威地位,被人们寄予普遍厚望。可惜后来项目失败了。从此并
行计算界陷入了一阵低潮。这几年KENNEDY好像转向去做针对特定处理器的后端优化技术
了。Rice CS 学生的出路相当好。
参考资料:http://www.bb268.com
⑼ C++并行技术,哪个最快Qpar, PPL, AMP, OpenMP
应该是OpenMP, 到不是它的速度多快, 而是一个开源的东西, 会被更多的人研究, 因此它的应用环境可能更容易建立起来.
⑽ 急!!!!急!!!!!!!!!急!!!!!计算机体系结构这门课所解决的问题以及解决的方法在线等
计算机体系结构(ComputerArchitecture)是程序员所看到的计算机的属性,即概念性结构与功能特性。按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。一般来说,低级机器的属性对于高层机器程序员基本是透明的,通常所说的计算机体系结构主要指机器语言级机器的系统结构。经典的关于“计算机体系结构(computerarchitecture)”的定义是1964年C.M.Amdahl在介绍IBM360系统时提出的,其具体描述为“计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性”
基本概念
计算机体系结构就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。通常包含的系统元素有:计算机软件、计算机硬件、人员、数据库、文档和过程。其中,软件是程序、数据结构和相关文档的集合,用于实现所需要的逻辑方法、过程或控制;硬件是提供计算能力的电子设备和提供外部世界功能的电子机械设备(例如传感器、马达、水泵等);人员是硬件和软件的用户和操作者;数据库是通过软件访问的大型的、有组织的信息集合;文档是描述系统使用方法的手册、表格、图形及其他描述性信息;过程是一系列步骤,它们定义了每个系统元素的特定使用方法或系统驻留的过程性语境。 计算机体系结构
8种属性
1•机内数据表示:硬件能直接辨识和操作的数据类型和格式 计算机体系结构
2•寻址方式:最小可寻址单位、寻址方式的种类、地址运算 3•寄存器组织:操作寄存器、变址寄存器、控制寄存器及专用寄存器的定义、数量和使用规则 4•指令系统:机器指令的操作类型、格式、指令间排序和控制机构 5•存储系统:最小编址单位、编址方式、主存容量、最大可编址空间 6•中断机构:中断类型、中断级别,以及中断响应方式等 7•输入输出结构:输入输出的连接方式、处理机/存储器与输入输出设备间的数据交换方式、数据交换过程的控制 8•信息保护:信息保护方式、硬件信息保护机制。
编辑本段发展历程
计算机系统已经经历了四个不同的发展阶段。 计算机体系结构
第一阶段
60年代中期以前,是计算机系统发展的早期时代。在这个时期通用硬件已经相当普遍,软件却是为每个具体应用而专门编写的,大多数人认为软件开发是无需预先计划的事情。这时的软件实际上就是规模较小的程序,程序的编写者和使用者往往是同一个(或同一组)人。由于规模小,程序编写起来相当容易,也没有什么系统化的方法,对软件开发工作更没有进行任何管理。这种个体化的软件环境,使得软件设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程序清单之外,根本没有其他文档资料保存下来。
第二阶段
从60年代中期到70年代中期,是计算机系统发展的第二代。在这10年中计算机技术有了很大进步。多道程序、多用户系统引入了人机交互的新概念,开创了计算机应用的新境界,使硬件和软件的配合上了一个新的层次。实时系统能够从多个信息源收集、分析和转换数据,从而使得进程控制能以毫秒而不是分钟来进行。在线存储技术的进步导致了第一代数据库管理系统的出现。计算机系统发展的第二代的一个重要特征是出现了“软件作坊”,广泛使用产品软件。但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。随着计算机应用的日益普及,软件数量急剧膨胀。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。上述种种软件维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程序的个体化特性使得它们最终成为不可维护的。“软件危机”就这样开始出现了。1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机课题,在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。
第三阶段
计算机系统发展的第三代从20世纪70年代中期开始,并且跨越了整整10年。在这10年中计算机技术又有了很大进步。分布式系统极大地增加亍计算机系统的复杂性,局域网、广域网、宽带数字通信以及对“即时”数据访问需求的增加,都对软件开发者提出了更高的要求。但是,在这个时期软件仍然主要在工业界和学术界应用,个人应用还很少。这个时期的主要特点是出现了微处理器,而且微处理器获得了广泛应用。以微处理器为核心的“智能”产品随处可见,当然,最重要的智能产品是个人计算机。在不到10年的时间里,个人计算机已经成为大众化的商品。 在计算机系统发展的第四代已经不再看重单台计算机和程序,人们感受到的是硬件和软件的综合效果。由复杂操作系统控制的强大的桌面机及局域网和广域网,与先进的应用软件相配合,已经成为当前的主流。计算机体系结构已迅速地从集中的主机环境转变成分布的客户机/服务器(或浏览器/服务器)环境。世界范围的信息网为人们进行广泛交流和资源的充分共享提供了条件。软件产业在世界经济中已经占有举足轻重的地位。随着时代的前进,新的技术也不断地涌现出来。面向对象技术已经在许多领域迅速地取代了传统的软件开发方法。
总结
软件开发的“第四代技术”改变了软件界开发计算机程序的方式。专家系统和人工智能软件终于从实验室中走出来进入了实际应用,解决了大量实际问题。应用模糊逻辑的人工神经网络软件,展现了模式识别与拟人信息处理的美好前景。虚拟现实技术与多媒体系统,使得与用户的通信可以采用和以前完全不同的方法。遗传算法使我们有可能开发出驻留在大型并行生物计算机上的软件。
编辑本段基本原理
计算机体系结构解决的是计算机系统在总体上、功能上需要解决的问题,它和计算机组成、计算机实现是不同的概念。一种体系结构可能有多种组成,一种组成也可能有多种物理实现。 计算机体系结构
计算机系统结构的逻辑实现,包括机器内部数据流和控制流的组成以及逻辑设计等。其目标是合理地把各种部件、设备组成计算机,以实现特定的系统结构,同时满足所希望达到的性能价格比。一般而言,计算机组成研究的范围包括:确定数据通路的宽度、确定各种操作对功能部件的共享程度、确定专用的功能部件、确定功能部件的并行度、设计缓冲和排队策略、设计控制机构和确定采用何种可靠技术等。计算机组成的物理实现。包括处理机、主存等部件的物理结构,器件的集成度和速度,器件、模块、插件、底板的划分与连接,专用器件的设计,信号传输技术,电源、冷却及装配等技术以及相关的制造工艺和技术。
编辑本段分类
Flynn分类法
1966年,Michael.J.Flynn提出根据指令流、数据流的多倍性(multiplicity)特征对计算机系统进行分类,定义如下。 •指令流:机器执行的指令序列 计算机体系结构
•数据流:由指令流调用的数据序列,包括输入数据和中间结果 •多倍性:在系统性能瓶颈部件上同时处于同一执行阶段的指令或数据的最大可能个数。 Flynn根据不同的指令流-数据流组织方式把计算机系统分为4类。 1•单指令流单数据流(,SISD) SISD其实就是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。 2•单指令流多数据流(,SIMD) SIMD以并行处理机为代表,结构如图,并行处理机包括多个重复的处理单元PU1~PUn,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同的数据。 3•多指令流单数据流(,MISD) MISD的结构,它具有n个处理单元,按n条不同指令的要求对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一个处理单元的输入。 4•多指令流多数据流(,MIMD) MIMD的结构,它是指能实现作业、任务、指令等各级全面并行的多机系统,多处理机就属于MIMD。(2)
冯式分类法
1972年冯泽云提出用最大并行度来对计算机体系结构进行分类。所谓最大并行度Pm是指计算机系统在单位时间内能够处理的最大的二进制位数。设每一个时钟周期△ti内能处理的二进制位数为Pi,则T个时钟周期内平均并行度为Pa=(∑Pi)/T(其中i为1,2,…,T)。平均并行度取决于系统的运行程度,与应用程序无关,所以,系统在周期T内的平均利用率为μ=Pa/Pm=(∑Pi)/(T*Pm)。用最大并行度对计算机体系结构进行的分类。用平面直角坐标系中的一点表示一个计算机系统,横坐标表示字宽(N位),即在一个字中同时处理的二进制位数;纵坐标表示位片宽度(M位),即在一个位片中能同时处理的字数,则最大并行度Pm=N*M。 由此得出四种不同的计算机结构: ①字串行、位串行(简称WSBS)。其中N=1,M=1。 ②字并行、位串行(简称WPBS)。其中N=1,M>1。 ③字串行、位并行(简称WSBP)。其中N>1,M=1。 ④字并行、位并行(简称WPBP)。其中N>1,M>1。
编辑本段技术革新
计算机体系结构以图灵机理论为基础,属于冯•诺依曼体系结构。本质上,图灵机理论和冯•诺依曼体系结构是一维串行的,而多核处理器则属于分布式离散的并行结构,需要解决二者的不匹配问题。 首先,串行的图灵机模型和物理上分布实现的多核处理器的匹配问题。图灵机模型意味着串行的编程模型。串行程序很难利用物理上分布实现的多个处理器核获得性能加速.与此同时,并行编程模型并没有获得很好的推广,仅仅局限在科学计算等有限的领域.研究者应该寻求合适的机制来实现串行的图灵机模型和物理上分布实现的多核处理器的匹配问题或缩小二者之间的差距,解决“并行程序编程困难,串行程序加速小”的问题。 计算机体系结构
在支持多线程并行应用方面,未来多核处理器应该从如下两个方向加以考虑。第一是引入新的能够更好的能够表示并行性的编程模型。由于新的编程模型支持编程者明确表示程序的并行性,因此可以极大的提升性能。比如Cell处理器提供不同的编程模型用于支持不同的应用。其难点在于如何有效推广该编程模型以及如何解决兼容性的问题。第二类方向是提供更好的硬件支持以减少并行编程的复杂性。并行程序往往需要利用锁机制实现对临界资源的同步、互斥操作,编程者必须慎重确定加锁的位置,因为保守的加锁策略限制了程序的性能,而精确的加锁策略大大增加了编程的复杂度。一些研究在此方面做了有效的探索。比如,SpeculativeLockElision机制允许在没有冲突的情况下忽略程序执行的锁操作,因而在降低编程复杂度的同时兼顾了并行程序执行的性能。这样的机制使得编程者集中精力考虑程序的正确性问题,而无须过多地考虑程序的执行性能。更激进的,(TCC)机制以多个访存操作(Transaction)为单位考虑数据一致性问题,进一步简化了并行编程的复杂度。 主流的商业多核处理器主要针对并行应用,如何利用多核加速串行程序仍然是一个值得关注的问题。其关键技术在于利用软件或硬件自动地从串新程序中派生出能够在多核处理器上并行执行的代码或线程。多核加速串行程序主要有三种方法,包括并行编译器、推测多线程以及基于线程的预取机制等。在传统并行编译中,编译器需要花费很大的精力来保证拟划分线程之间不存在数据依赖关系。编译时存在大量模糊依赖,尤其是在允许使用指针(如C程序)的情况下,编译器不得不采用保守策略来保证程序执行的正确性。这大大限制了串行程序可以挖掘的并发程度,也决定了并行编译器只能在狭窄范围使用。为解决这些问题,人们提出推测多线程以及基于线程的预取机制等。然而,从这种概念提出到现在为止,这个方向的研究大部分局限于学术界,仅有个别商业化处理器应用了这种技术,并且仅仅局限于特殊的应用领域。我们认为动态优化技术和推测多线程(包括基于线程的预取机制)的结合是未来的可能发展趋势。 冯•诺依曼体系结构的一维地址空间和多核处理器的多维访存层次的匹配问题。本质上,冯•诺依曼体系结构采用了一维地址空间。由于不均匀的数据访问延迟和同一数据在多个处理器核上的不同拷贝导致了数据一致性问题。该领域的研究分为两大类:一类研究主要是引入新的访存层次。新的访存层次可能采用一维分布式实现方式。典型的例子是增加分布式统一编址的寄存器网络。全局统一编址的特性避免了数据一致性地考虑。同时,相比于传统的大容量cache访问,寄存器又能提供更快的访问速度。TRIPS和RAW都有实现了类似得寄存器网络。令另外,新的访存层次也可以是私有的形式。比如每个处理器和都有自己私有的访存空间。其好处是更好的划分了数据存储空间,已洗局部私有数据没有必要考虑数据一致性问题。比如Cell处理器为每个SPE核设置了私有的数据缓冲区。另一类研究主要涉及研制新的cache一致性协议。其重要趋势是放松正确性和性能的关系。比如推测Cache协议在数据一致性未得到确认之前就推测执行相关指令,从而减少了长迟访存操作对流水线的影响。此外,TokenCoherence和TCC也采用了类似的思想。程序的多样性和单一的体系结构的匹配问题。未来的应用展现出多样性的特点。一方面,处理器的评估不仅仅局限于性能,也包括可靠性,安全性等其他指标。另一方面,即便考虑仅仅追求性能的提高,不同的应用程序也蕴含了不同层次的并行性。应用的多样性驱使未来的处理器具有可配置、灵活的体系结构。TRIPS在这方面作了富有成效的探索,比如其处理器核和片上存储系统均有可配置的能力,从而使得TRIPS能够同时挖掘指令级并行性、数据级并行性及指令级并行性。 多核和Cell等新型处理结构的出现不仅是处理器架构历史上具有里程碑式的事件,对传统以来的计算模式和计算机体系架构也是一种颠覆 2005年,一系列具有深远影响的计算机体系结构被曝光,有可能为未来十年的计算机体系结构奠定根本性的基础,至少为处理器乃至整个计算机体系结构做出了象征性指引。随着计算密度的提高,处理器和计算机性能的衡量标准和方式在发生变化,从应用的角度讲,讲究移动和偏向性能两者已经找到了最令人满意的结合点,并且有可能引爆手持设备的急剧膨胀。尽管现在手持设备也相对普及,在计算能力、可扩展性以及能耗上,完全起步到一台手持设备应该具备的作用;另一方面,讲究性能的服务器端和桌面端,开始考虑减少电力消耗赶上节约型社会的大潮流。 Cell本身适应这种变化,同样也是它自己创造了这种变化。因而从它开始就强调了不一样的设计风格,除了能够很好地进行多倍扩展外,处理器内部的SPU(SynergisticProcessorUnit协同处理单元)具有很好的扩展性,因而可以同时面对通用和专用的处理,实现处理资源的灵活重构。也就意味着,通过适当的软件控制,Cell能应付多种类型的处理任务,同时还能够精简设计的复杂。