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)”两部分,二者都拥有彼此独立的取指和执行单元,当处理器读取程序指令时,会预先对其作分析,以判定它是归属于“热代码”还是“冷代码”。若为活跃的“热代码”,则将其送入“热管道”逻辑进行高效处理;如果属于“冷代码”,那么将其送入“冷管道”逻辑处理,所得结果最终再作汇总输出。
CISC, RISC 探究的更多相关文章
- CISC + RISC = Y86
最近在读深入理解计算机系统,打算把读时的心得放上来 Y86有着CISC和RISC的属性Y86可以看成是CISC(IA32),但用RISC的原理简化了 CISC和RISC的竞争引发了许多争论CISC和R ...
- CISC RISC架构
参考: http://capacity.blog.163.com/blog/static/20866413120129261737102/ http://cs.stanford.edu/people/ ...
- RISC / CISC
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法. CPU架构是厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分 ...
- x86指令集同频性能提升
x86近5000条指令,迄今为止最复杂的指令集.这里不研究CISC & RISC,也不考虑process制程变化,主要是看最近几代IA架构对于同频率下性能的提升. x86指令集nasm文档 h ...
- 《鸟哥的Linux私房菜》读书笔记一
1.CPU为一个具有特定功能的芯片,里面含有微指令集,一个CPU又可以分为两个主要的单元:算术逻辑单元和控制单元.CPU读取的数据都是从内存读取来的,内存内的数据是从输入单元传输来的.CPU处理完也要 ...
- ARM汇编指令集_学习笔记(1)
一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...
- arm架构与体系结构
1.cpu与soc 内核版本号与soc版本号由arm公司确定. 芯片型号由各半导体公司确定. soc包括cpu与一些基本内设.(一般提到CPU都指的是soc,实际上cpu只是soc的一部分). RIS ...
- CPU 指令集(Instruction Set Architecture, ISA)
本文摘自网络 概念 指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序,用来引导CPU进行加减运算和控制计算机操作系统的一系列指令集合.拥有这些指令集,CPU就可以更高效地运行.系统所下达的 ...
- 【转帖】你知道X86构架,你知道SH构架吗?
你知道X86构架,你知道SH构架吗? https://www.eefocus.com/mcu-dsp/363100 前面我们讲到了 8 位处理器,32 位处理器,以及 X86 构架,那么除了这些还 ...
随机推荐
- stm32 学习参考(转)
源:stm32 学习参考 单片机裸机下写一个自己的shell调试器 LWIP_STM32_ENC28J60_NETCONN_TCP_SERVICER(5) LWIP_STM32_ENC ...
- P2512 [HAOI2008]糖果传递&&P3156 [CQOI2011]分金币&&P4016 负载平衡问题
P2512 [HAOI2008]糖果传递 第一步,当然是把数据减去平均数,然后我们可以得出一串正负不等的数列 我们用sum数组存该数列的前缀和.注意sum[ n ]=0 假设为链,那么可以得出答案为a ...
- PN结讲解
可能大家在使用半导体器件的时候只是在使用它的电气属性,并没有很好的关心下它是什么原因才有了这样的电气属性,那么我们本篇就从物理结构分析下PN结吧. 首先看一张比较陈旧的图图: (就按自己的笔记简单谈谈 ...
- noip杂题题解
这道题没有什么可说的,先统计,然后几次快排,答案就出来了 Code(整齐但不简洁的代码) #include<iostream> #include<cstdio> #includ ...
- libcurl HTTP POST请求向服务器发送json数据
转载:http://blog.csdn.net/dgyanyong/article/details/14166217 转载:http://blog.csdn.net/th_gsb/article/de ...
- cmd解释
cmd是command的缩写.即命令提示符(CMD),是在OS / 2 , Windows CE与Windows NT平台为基础的操作系统(包括Windows 2000和XP中, Vista中,和Se ...
- 切换tab页时,tab页中的echart变形问题
本文为博主原创,未经允许,不得转载: 在两个tab页中,分别展现了两个echart图表,同样的格式与写法,但只有在默认选中的tab页中的图表显示的是正常的, 但进入另一个tab页中时,图表则产生了变形 ...
- C# 代码设置DataGrid列属性
1 DataGridTableStyle dts = new DataGridTableStyle(); 2 dataGrid1.TableStyles.Clear(); 3 dts.MappingN ...
- BZOJ 1009: [HNOI2008]GT考试(kmp+dp+矩阵优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=1009 题意: 思路:真的是好题啊! 对于这种题目,很有可能就是dp,$f[i][j]$表示分析到第 ...
- WCF 统一处理异常利用行为服务扩展
https://www.cnblogs.com/niaowo/p/4727378.html using System; using System.Collections.Generic; using ...