• CISC, RISC 探究


    iPhone Simulator  Intel

    iPhone  ARM 区别很大,

    Intel目前的处理器主要为IA架构

    IA-32即俗称x86,包括桌面处理器系列(赛扬,奔腾,酷睿等)以及服务器处理器志强(Xeon) 系列;

    IA-64是Intel独立开发得64位处理器,仅用于Itanium(安腾)以及后续产品Itanium 2,针对高端服务器市场 。

    ARM架构与IA架构本质上不同。

    在这里我们就简单比较一下IA32与ARM架构的不同。

    IA-32处理器是基于CISC体系结构的,而ARM则是RISC的代表。

     

    RISC指令集与CISC指令集相比有以下特点:

    1简单的指令集——RISC指令集只提供很有限的操作,基本上单周期执行每条指令,其指令长度也是固定的。

    2Load-Store 结构——在RISC 中,CPU并不会对内存中的数据进行操作,所有的计算都要求在寄存器中完成。而寄存器和内存的通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的。

    3更多的寄存器——和CISC 相比,基于RISC的处理器有更多的通用寄存器可以使用,且每个寄存器都可以进行数据存储或者寻址。

    在应用方面,Intel的IA-32和IA-64架构处理器用于个人计算机和服务器,ARM处理器更多地用于嵌入式领域。 iphone vs gphone Android 是运行Java的程式的。Java的程式是在JAVA的虚拟机内运行。所以Android 的模拟器是可运行的Android 的apk 文件; iPhone的模拟器是运行x86机器代码,iPhone的真机是运行ARM的机器代码。ARM的机器代码的程式是不能在x86机器即iPhone的模拟器内运行的。 要有程式的源代码才可以在iPhone的模拟器编译x86机器代码及ARM的机器代码分别在iPhone的模拟器及iPhone的真机运行。

    在PC发展之初,除了成熟的CISC指令架构外,IBM没有更好的选择,原因很简单,更先进的RISC架构在1975年才出现,且只针对超级计算机领域,当时没有人意识到PC会有如此之大的发展,只是将它作为计算产品的一种补充而已。为图省事,IBM干脆就选择了Intel作为微处理器芯片的合作伙伴,而Intel所创立的X86指令系统便属于CISC架构。

    我们有必要对指令架构、CISC、RISC之类的概念作明晰的解释。众所周知,微处理器的基本逻辑是运行指令的电路,计算机的任何一个程序都是由或多或少的基本指令组成,而指令本身又是由若干个微操作构成,例如对两个二进制数进行加减运算,或者将结果送进寄存器中等等。了解汇编语言或机器语言的读者对此应该比较清楚。这些基本指令被称为微处理器的微代码(Microcode),指令数量越多、完成微操作所需的逻辑电路就越多,芯片的结构就越复杂。每个处理器开发商都可以自己定义出一套指令系统,但如果指令系统不相同,构成软件的指令也不相同,这样就无法实现软件兼容。在专用计算机时代,这种情况十分普遍,各个计算机厂商都独立发展指令系统、微处理器、计算整机和软件,不同厂商的软硬件产品无法兼容使用,其原因就在于微处理器的指令系统采用不同的定义。然而,尽管当时指令系统种类甚多,它们却都归属于CISC架构—CISC的英文全称是Complex Instruction Set Computer,意为“复杂指令系统计算机”。它的特点是指令数量庞大臃肿,每个指令不管执行频度高低都处于同一个优先级,程序员的编程工作相对容易。但它的致命弊端是执行效率低下,处理器的晶体管被大量低效的指令所占据,资源利用率颇为低下。当IBM成功发展出RISC系统之后,CISC迅速被超级计算机所抛弃。但机缘巧合,它却在PC上获得新生,为了保持软件兼容,PC必须一直延续X86架构无法脱离(IBM将标准制定权让给Intel,最终葬送了自己在PC领域的前途)。后来加入微处理器战团的Cyrix、Rise、AMD、IDT等厂商无一不是如此,PC朝着X86道路渐行渐远,从8位、16 位、32位一直扩展到现在的64位,虽然它依然有旺盛的生命力,但背后的一系列缺陷也逐渐显现:芯片设计臃肿不堪,能源利用率低下,性能与晶体管规模相当的RISC产品根本不在一个水平线上。


    图1 依据80/20法则划分的“冷代码”与“热代码”概念——前者占据X86指令总量的80%,后者只占据20%。与之相应,冷代码执行单元占据绝大多数硬件资源,而高度活跃的热代码执行单元所占据的硬件资源反而要少得多。PARROT优化之后,热代码执行单元被大大加强,冷代码单元则被相应缩减,在晶体管规模不变的前提下实现性能的跨越式提升。


    相比之下,RISC(全称Reduced Instruction Set Computer,精简指令系统计算机)则是一套优化过的指令架构,它是根据著名的80/20法则所订立。早在上个世纪60年代,计算机科学家们发现,计算机中80%的任务只是动用了大约20%的指令,而剩下20%的任务才有机会使用到其他80%的指令。如果对指令系统作相应的优化,就可以从根本上快速提高处理器的执行效率。IBM公司在1975年成功开发出第一款RISC处理器,从此RISC架构开始走进超级计算机中。由于指令高度简约,RISC处理器的晶体管规模普遍都很小而性能强大,深受超级计算机厂商所青睐。很快,许多厂商都拿出自己的RISC指令系统,除了IBM的Power和PowerPC 外,还有DEC的Alpha、SUN的SPARC、HP的PA-RISC、MIPS技术公司的MIPS、ARM公司的ARM等等。它的应用范围也远比 X86来得广泛,大到各种超级计算机、工作站、高阶服务器,小到各类嵌入式设备、家用游戏机、消费电子产品、工业控制计算机,都可以看到RISC的身影。只不过这些领域同普通消费者较为脱离,故而少为人知。

    无论在执行效率、芯片功耗还是制造成本上,选择RISC都比沿用X86更加英明。我们不妨作一番实际的比较:目前Intel公司最快的处理器是 Prescott核心的Pentium 4 XE系列,它的晶体管总数在1亿7800万个以上,最高功耗达到130W,但它的运算能力不超过20GigaFlops(FLoating point Operations per Second,每秒浮点运算)。而目前最快的RISC处理器是IBM刚刚推出的Cell,它的晶体管总数为2.34亿个,在采用90纳米工艺制造时芯片面积为221平方毫米,但它的运算力高达2560GigaFlops,整整是Pentium 4 XE的128倍。Intel将在年中推出双核心的Smithfield,性能最多能有80%的提升,而芯片规模将达到与Cell相同的水平。由此可见,二者完全不是一个层面上的对手,X86指令系统的低效性在这里一览无遗。与此对应,RISC产品在成本上优势明显—半导体芯片的制造成本同芯片面积三次方成正比。在工艺相同的情况下,芯片面积大小取决于所集成的晶体管规模。RISC处理器核心精简、效率更高,只要很少的晶体管就能达到与X86产品媲美的效能,制造成本可大大低于现有的X86处理器。而小晶体管规模亦有助于保持较低的能耗值,RISC处理器在这方面表现相当杰出,现在的嵌入式设备几乎都采用 RISC产品,原因就在于这类产品的功耗值超低。

    过去,PC钟情于X86的原因在于软件兼容,尤其是微软只为X86 PC开发Windows系统,这也被认为是PC采用RISC架构的最大障碍。这个障碍最终也将被解除,Linux操作系统逐渐发展成熟,Mac OS X的综合水准更远在Windows之上,办公、图形、网络、多媒体相关的各类跨平台应用软件极大丰富。如果你是一个游戏玩家,RISC平台一定会令你大呼过瘾,将于2005-2006年发布的索尼PS3、任天堂Revolution和微软XBOX2等新一代游戏机产品将全面转入RISC体系(有趣的是,三种游戏机都采用IBM所设计的处理器,指令系统相同),短时间内许多品质一流的配套游戏软件将会大量涌现。只要指令系统相同,这些游戏完全可以实现平滑移植。

    单从技术角度考虑,以RISC取代X86作为PC的主力架构的确是非常英明的选择,更高的效率、更快的速度、更低的成本以及同样丰富的软件支持, RISC PC将展现出勃勃生机。然而,这一切似乎不容易实现,无论Intel、AMD还是微软,它们的辉煌成就都构建在X86的基础之上,转向RISC对它们来说无异于釜底抽薪。目前执著发展RISC PC的只有苹果公司,它们的全系列PC都基于IBM的PowerPC指令架构。不幸的是,尽管苹果公司大名鼎鼎,但它对整个市场的影响力极其有限,PC转向RISC最大的障碍不在于技术或兼容性,而是缺乏一个实质性的领导者,但有迹象表明,蓝色巨人对此有着强烈的意愿,RISC能否把握住PC的下一个三十年尽皆取决于它。

    即便不采用RISC架构,我们仍然可以借助它的思想对X86处理器进行结构性改良。事实上,X86处理器一直都从RISC产品中获取灵感,包括 EV6总线、整合内存控制器、超线程技术、双核心等等新技术新概念都是首先在RISC产品中得到成功应用,之后才被Intel/AMD引入到X86处理器当中。实践证明,这种做法往往对X86处理器的性能提升有着决定性的影响,而从RISC汲取营养也就成为X86业界的习惯做法。

    不过,上述这些技术改良都只停留在应用层面,指令体系的根本差异成为X86与RISC之间的壁垒,若能借助RISC理念对X86处理器进行结构性改良,也许可获取更大的效益。Intel在IDF技术峰会上提出的“PARROT”概念便充分体现了这种思想。PARROT的全称是“Power AwaReness thRough selective dynamically Optimized Traces”,从其名称不难得知,PARROT是一项借助“动态优化执行路径”来提高处理器执行效率的技术。它的理论基础也是著名的80/20法则,但与RISC不同,X86处理器无法从指令系统层面上实现这一点。,Intel另辟蹊径,提出了一个全新的发展思路,将20%的常用指令定义为“热代码(Hot Code)”,剩余的80%指令使用频率没那么高,被定义为“冷代码(Cold Code)”。对应的CPU也在逻辑上被划分为两个部分:一是热核(Hot Spot),只针对调用到热代码的程序;另一部分则是冷核(Cold Spot),负责执行20%的次常用任务。由于热核部分要执行80%的任务,设计者便可以将它设计得较为强大,占据更多的晶体管资源。而冷核部分任务相对简单,没有必要在它身上花费同样的功夫。理论上说,设计者可以将80%的晶体管资源用在热核上面,使之高效率执行任务,剩余的20%晶体管资源则用于仅完成20%任务的冷核。相比之下,现在的X86处理器完全没经过结构优化,所有指令地位对等,80%的次常用指令占据了大量的晶体管资源,又没有创造出相应的价值,芯片内只有20%的区域处于活跃状态,这显然不够科学。

    “PARROT”创造了一种崭新的双核概念,过去我们谈论的双核心指的是在一枚芯片内集成两个对等的CPU内核,通过并行运算获得性能增益,我们可以将它看作是横向维度的对等设计。而“PARROT”则是一种纵向维度的双核理念,热核与冷核地位并不对等,且无法独立运作,只能说是一个CPU内核中的两部分分立逻辑。它所起到的是提高CPU的硬件资源利用率,以高执行效率达到高效能的目的,这种做法显然比目前业界鼓吹的“双核心”更具革命意义。我们不妨深入分析“PARROT”的微架构(图2所示),处理器执行管道被分为“冷管道(Cold Pipe)”和“热管道(Hot Pipe)”两部分,二者都拥有彼此独立的取指和执行单元,当处理器读取程序指令时,会预先对其作分析,以判定它是归属于“热代码”还是“冷代码”。若为活跃的“热代码”,则将其送入“热管道”逻辑进行高效处理;如果属于“冷代码”,那么将其送入“冷管道”逻辑处理,所得结果最终再作汇总输出。


     
      
  • 相关阅读:
    jquery animate()方法 语法
    jquery unload方法 语法
    jquery undelegate()方法 语法
    jquery unbind()方法 语法
    jquery trigger() 方法 语法
    jquery toggle()方法 语法
    jquery change() 函数 语法
    jquery blur()函数 语法
    jquery bind()方法 语法
    jquery checked选择器 语法
  • 原文地址:https://www.cnblogs.com/CandiceW/p/5437902.html
Copyright © 2020-2023  润新知