zoukankan      html  css  js  c++  java
  • 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)”两部分,二者都拥有彼此独立的取指和执行单元,当处理器读取程序指令时,会预先对其作分析,以判定它是归属于“热代码”还是“冷代码”。若为活跃的“热代码”,则将其送入“热管道”逻辑进行高效处理;如果属于“冷代码”,那么将其送入“冷管道”逻辑处理,所得结果最终再作汇总输出。


     
      
  • 相关阅读:
    video和audio
    H5-geolocation学习
    hammer.js学习
    echarts学习
    移动端手势识别
    SVG
    e.key && e.which && e.keyCode
    git中避免提交.DS_Store文件[转载]
    前端笔试题[1]
    Javascript实现格式化输出
  • 原文地址:https://www.cnblogs.com/CandiceW/p/5437902.html
Copyright © 2011-2022 走看看