ARM(RISC)和x86(CISC)的技术差异

转自: https://www.cnblogs.com/bitter/p/4023176.html


RISC和CISC,这一对冤家,从诞生之日开始就处在不停的纠缠之中。直到今天,两者经过多年的发展后,都在各自领域打开了一片天地,并且相互渗透。RISC专注高性能、高性能功耗比、小体积以及移动设备领域,CISC专注桌面、高性能和民用市场。现在,RISC的代表是ARM,而CISC的代表则是我们耳熟能详的x86。那么,他们的技术差异在哪里?究竟是怎样的技术分歧带来了两者如此大的差别呢?

ARM(RISC)和x86(CISC)的技术差异。

指令集的出现

要说清楚RISC和CISC,也就是今天热门的ARM和x86之间的差异,还得把时间往前推一些,观察计算机诞生之初的一些事情,才能很清楚地了解指令集、精简和复杂之间的关系。

 

机器语言的实例  
机器语言 含义
0000,0000,000000010000 代表 LOAD A, 16
0000,0001,000000000001 代表 LOAD B, 1
0001,0001,000000010000 代表 STORE B, 16
0001,0001,000000000001 代表 STORE B, 1

 

今天学生学习计算机实在是太幸福了!今天有大量的可视化的操作方式,有成熟的各种接近自然语言的编程语言,在这些语言中还有很多写好的库用于完成那些固定而复杂的任务。这种“幸福”的计算机的学习和使用过程,你完全不应该觉得困难——请注意,如果和上个世纪七十年代的计算机使用者比起来,真的好太多了。

老式的计算机,使用纸带进行输入输出,效率极其低下。
老式的计算机,使用纸带进行输入输出,效率极其低下。

上世纪70年代末期,计算机的出现虽然带来了各种方便,但也带来了各种不方便。首先就是编程。当时没有类似今天这样的高级的、接近自然语言的、各种逻辑都非常完善的编程语言,而是采用最底层的机器语言来写命令。

机器语言和后来的汇编语言,在使用中都显得很麻烦,可读性差,并且很难维护。此外,还有最重要的一点是,这些语言都比较“笨”,如果要计算一些稍微复杂的操作比如乘法、除法、三角函数、微积分、方程等,每次计算都需要重新编写程序(在纸带上打孔输入数据的时代,是没有“粘贴+复制”的方便功能的)。

于是人们想了一个方法,对一些比较常用的指令,比如积分、微分、乘除法等,干脆写一套标准的程序,留下输入数据的接口。这样就能够大幅度地降低编程中的难度,提高编程效率并增加其易用性。这个想法一提出,就得到了很多业内人士的认可,大家给这种想法取了一个名字,叫做“指令集”。

指令集中包含了大量的基础运算的内容,并且以公式化和模块化的方式供人们使用。对软件来说,指令集的出现无疑大幅度提高了程序编写的效率。同时由于模块化指令的存在,软件的运行效率也得到了提升。对硬件来说,专用模块的效率永远高于通用模块,因此指令集的出现也为CPU硬件性能的提升开启了一扇新的大门。

复杂的还是精简的?

指令集诞生后,CPU厂商都开始整理、规范这些指令集,其中就包括英特尔。英特尔在它最为成功的一款处理器8086中,开始加入大量指令集,以提高计算效率、增强CPU性能。与此同时,另外一种思想在悄悄萌芽。

英特尔为了兼容8086处理器,不得不一直采用x86 CISC指令集。
英特尔为了兼容8086处理器,不得不一直采用x86 CISC指令集。

业界有一个著名的“8020定理”,可以应用在很多方面:比如一家公司80%的人都会是普通职员,20%的人才可能成为领导者;这些领导者每天做的事情80%是不紧急或者不重要的、20%才是最紧急最重要的内容等等。“8020定理”概括了社会发展的大部分内容,虽然不那么精确,但足以说明大部分内容往往没有什么效率,最值得关心的往往是那20%的核心部分—比如下面这一段:

CPU的指令集是各种功能的集合。指令集诞生的原因是人们渴望在软件编写时更有效率,同时也符合事物发展中规范化、模块化的需求。但是,在所有指令集中,经过人们分析和统计,只有20%的指令集会在80%的场合都用到,而绝大部分80%的指令集只有20%的场合需要出现。

RISC处理器的效率很高,一般来说能耗比很出色,但是指令比较复杂,特别是程序体积较大。图为IBM的Power 7处理器的接口,是经典的高性能RISC处理器。
RISC处理器的效率很高,一般来说能耗比很出色,但是指令比较复杂,特别是程序体积较大。图为IBM的Power 7处理器的接口,是经典的高性能RISC处理器。

这里的意思就很明确了。如果一个CPU支持所有的指令集,那么其中20%的部分会被经常调用,而80%的部分经常闲置无所事事,至少在80%的时间中都是如此。在CPU晶体管“寸土寸金”的年代,这样的做法是对晶体管的严重浪费。在这种情况下,曾任斯坦福大学校长、美国科学院、工程学院和文理学院三院院士的约翰·亨尼西教授和加州大学伯克利分校的计算机教授戴维·帕特森等人,就提出了一种更为简单的指令集,叫做精简指令集,全称是Reduced Instruction Set Computing,简写为RISC。而传统的大而全的指令集也被赋予了一个正式的名字,叫做Complex Instruction Set Computing,也就是CISC。

RISC的优势在于将指令数目和寻址方式都做出了改进,大幅度降低了设计难度,编译器的效率更高并且指令的并行执行程度更高。同时RISC制造的CPU体积更小、能耗更低、性能功耗比更高。但是RISC并不是没有缺点,比如RISC的CPU对20%的常用指令集的计算效率更高,而对一些不常用或者复杂的指令,则以几个常用指令组合的方式来完成,计算效率就明显下降。对软件来说,RISC的程序体积相对CISC会大一些,复杂度稍高。并且由于指令集精简,早期的RISC处理器的性能显然不如同期的CISC,虽然它更小、功耗更低。

今天的CPU:x86和ARM

虽然从原理来看,RISC和CISC可谓井水不犯河水。但RISC和CISC在发展过程中,彼此反而取长补短,各有所得。

对CISC来说,指令集本身随着计算要求不断发展,肯定会越来越多。CISC继续发展下去,其实际CPU产品的晶体管数量会难以抑制地上升,性能功耗比和成本表现很难让人满意。从设计角度来看,CISC指令集长度不固定、执行时间也不固定、设计困难很多,很难找出一条高效率的通用设计道路来完成指令的执行。此外,由于CISC处理器和存储器之间的速度差距,缓存变得越来越重要。这也意味着CPU本身需要更为精简高效,节省的空间需要用于容纳越来越重要的各级缓存。

为了解决这些问题,现代的CISC处理器开始认真学习RISC的思想。CISC的问题在于指令集复杂多变,为每一个指令制定专门的硬件优化显然不可能。那么,可不可以换一个思路呢?将那些最常使用的指令集挑选出来,然后为其进行专门优化,就可以大大提高效率;至于不常用的指令,则可以用几个基础指令组合的方式完成——这正是RISC的思想。有所不同的是,RISC让思想完成在指令层面,而CISC将这个思想实现在硬件层面。

英特尔的Nehalem处理器可谓借鉴RISC思想而设计的x86。
英特尔的Nehalem处理器可谓借鉴RISC思想而设计的x86。

以英特尔的Nehalem或者AMD的K10处理器为例。首先,这些x86处理器内部都会使用“微指令”。所谓微指令,就是一些基础的指令,CISC指令中大部分都可以被拆分为几条简单而固定的微指令。其次,CPU内部设计了“翻译单元”,一般是由解码单元来执行的。在运行中,CPU接受一条x86指令,然后解码单元将接收到的比较复杂的X86指令拆解为一个或几个微指令。比如Nehalem设计了3个简单的解码单元和1个复杂的解码单元,可以将x86指令解码拆分、“翻译”为1~4条微指令。

第三,CPU内部针对这些微指令会做出充足的优化,让其执行效率和速度都达到令人满意的程度。当然,在解码处理的过程中,不是所有的x86指令都会得到平均对待。那些最常用的指令比如mov、push、call、cmp、add等会被重点、优先、加速处理,不常用的指令要么被拆分为常用指令,要么进入普通循环进行处理。效率虽然有影响,但考虑到其使用几率很低,因此这样的设计完全可以接受。在微指令解码和处理过程中,如何更有效率、更为高效地执行x86命令;微指令应该如何表达、运行;微指令和x86指令的关系以及哪些微指令是最常用、最优先的指令,成为最影响CPU性能的核心内容。

未来的ARM Cortex A-50是高性能处理器的代表产品
未来的ARM Cortex A-50是高性能处理器的代表产品。

在采用了RISC思想、对x86处理器的设计进行革新后,如今的CISC处理器基本上可以解决CISC指令复杂、体积庞大,晶体管耗费多等问题。对厂商来说,一个设计优秀的x86处理器的解码和流水线核心可以维持数代发展而不落伍。厂商可以在发展过程中不断对已经设计好的核心进行调整和调配,在缓存、总线配置上进行更改以获取更好的性能。

CISC借鉴RISC的思想,让自己获得了新生。相对来说,RISC对CISC也有借鉴,但不算太多。RISC指令简单并且相对固定,处理快速,在设计上甚至可以使用更长的流水线来达到高频率,并最终获得更优秀的效能。但RISC的主要问题在于指令集简单,因此在处理一些比较复杂的应用时,存储器需要读入的指令总数耗费时间更多,部分场合下性能表现不理想也是RISC的硬伤。因此,在RISC的发展中,RISC也在逐渐注入CISC的思想。比如紧跟时代加入一些新的指令集,更进一步优化内部架构,运行周期变成不固定周期等。RISC发展到现在,指令也逐渐增多,浮点计算等重要性能也日益强大。以ARM为例,不但逐渐增强浮点计算性能、新增专门的浮点指令,还计划在现有的基础上开展高性能ARM处理器的发展,以增强未来应对市场变化特别是对x86处理器竞争的能力。

未来的处理器,功耗更低,效能更高

从目前CPU的发展来看,无论是ARM还是x86,无论是CISC还是RISC,除了努力巩固自己的性能优势,加强产品的性能外,还积极吸取对方产品的特色,取长补短,期望有所突破。不过无论如何,未来的CPU肯定在朝着高性能、低功耗的方向发展。目前移动计算大潮已经来临,竞争日趋激烈。但说到底就是性能功耗比的竞争,谁能在低功耗下提供高性能,谁就有希望获得成功。未来的处理器,功耗将更低,效能会更高。

 

 

===================================

转自 http://www.mcplive.cn/index.php/article/index/id/12476


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
广州创亚企业管理顾问有限公司 ARM架构芯片在服务器端的发展前景 目 录 Contents 服务器的基本的概要 服务器成本构成简析 ARM芯片在服务器端的发展前景 服务器CPU国产化替代商业价值 创亚咨询 一、服务器的基本的概要 (一)定义 服务器(Server),也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处 理,因此一般来说服务器应具备承担服务并且保障服务的能力。通常分为文件服务器(能使用户在其它计 算机访问文件)、数据库服务器、应用程序服务器、WEB服务器等。 服务器的构成包括处理器、硬盘、内存、系统总线等,相比通用的计算机架构,在处理能力、稳定性、 可靠性、安全性、可扩展性、可管理性等方面要求更高。 创亚咨询 一、服务器的基本的概要 (二)分类 按照体系架构来区分,服务器主要分为两类: 1)非x86服务器 服务器(9)非x86服务器:包括大型机、小型机和UNIX服务器,它们是使用RISC(精简指令集)或 EPIC(并行指令代码)处理器,并且主要采用UNIX和其它专用操作系统的服务器,精简指令集处理器主要 有IBM公司的POWER和PowerPC处理器,SUN与富士通公司合作研发的SPARC处理器、EPIC处理器主要是 Intel研发的安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、 电信等大型企业的核心系统中。 2)x86服务器 x86服务器:又称CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构, 使用Intel或其它兼容x86指令集的处理器芯片和Windows操作系统的服务器。价格便宜、兼容性好、稳定 性较差、安全性不算太高,主要用在中小企业和非关键业务中。 创亚咨询 一、服务器的基本的概要 (三)硬件 服务器作为硬件来说,通常是指那些具有较高计算能力,能够提供给多个用户使用的计算机。服务器 与PC机的不同点很多,例如PC机在一个时刻通常只为一个用户服务。服务器与主机不同,主机是通过终 端给用户使用的,服务器是通过网络给客户端用户使用的。和普通的PC相比, 服务器需要连续的工作在 7X24小时环境。这就意味着服务器需要等多的稳定性技术RAS,比如支持使用ECC内存。 根据不同的计算能力,服务器又分为工作组级服务器,部门级服务器和企业级服务器。服务器操作系 统是指运行在服务器硬件上的操作系统。服务器操作系统需要管理和充分利用服务器硬件的计算能力并提 供给服务器硬件上的软件使用。 创亚咨询 一、服务器的基本的概要 1、结构 服务器系统的硬件构成与我们平常所接触的电脑有众多的相似之处,主要的硬件构成仍然包含如下几 个主要部分:中央处理器、内存、芯片组、I/O总线、I/O设备、电源、机箱和相关软件。这也成了我们选 购一台服务器时所主要关注的指标。 整个服务器系统就像一个人,处理器就是服务器的大脑,而各种总线就像是分布于全身肌肉中的神经, 芯片组就像是骨架,而I/O设备就像是通过神经系统支配的人的手、眼睛、耳朵和嘴;而电源系统就像是血 液循环系统,它将能量输送到身体的所有地方。 创亚咨询 一、服务器的基本的概要 在信息系统中,服务器主要应用于数据库和Web服务,而PC主要应用于桌面计算和网络终端,设计根 本出发点的差异决定了服务器应该具备比PC更可靠的持续运行能力、更强大的存储能力和网络通信能力、 更快捷的故障恢复功能和更广阔的扩展空间,同时,对数据相当敏感的应用还要求服务器提供数据备份功 能。而PC机在设计上则更加重视人机接口的易用性、图像和3D处理能力及其他多媒体性能。 创亚咨询 一、服务器的基本的概要 2、CPU 服务器的CPU仍按CPU的指令系统来区分,通常分为CISC型CPU和RISC型CPU两类,后来又出现了一种 64位的VLIM(Very Long Instruction Word超长指令集架构)指令系统的CPU。 CISC型CPU: CISC是英文"Complex Instruction Set Computer"的缩写,中文意思是"复杂指令集",它是指 英特尔生产的x86(intel CPU的一种命名规范)系列CPU及其兼容CPU(其他厂商如AMD,VIA等生产的CPU), 它基于PC机(个人电脑)体系结构。这种CPU一般都是32位的结构,所以我们也把它称为IA-32 CPU。(IA: Intel Architecture,Intel架构)。CISC型CPU主要有intel的服务器CPU和AMD的服务器CPU两类。 创亚咨询 一、服务器的基本的概要 RISC型CPU: RISC是英文"Reduced Instruction Set Computer "的缩写,中文意思是"精简指令集"。 它是在CISC(Complex In

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值