ARM处理器 CISC(复杂指令集)与RISC(精简指令集)
博文背景:
最近想学习一些树莓派的知识,便看了一本书《树莓派开始,玩转Linux》,在阅读此书的时候,顺便把其中不懂的知识重新梳理一些,算是作为自己的读书笔记了。 有感兴趣的同学,可以一起研究学习。毕竟软件搞久了,真是有点无聊了,接触一些硬件的知识,反而感觉新颖,真是别有一番滋味了。毕竟一切软件的载体都是这是硬件,了解一些底层说不定可以收获到意想不到的见解。
你知道iOS、Windows Phone、Android这3大平台的手机共通点是什么吗?除了都可以打电话、传简讯、安装App之外,在硬件架构上最大的共同点,就是这些手机CPU全都是采用ARM架构。现在连Microsoft都相中这块逐渐成长中的市场大饼,下一代的微软视窗作业系统Windows 8也将会推出ARM版本,称为Windows RT。究竟ARM与行动装置的关系是什么?又如何在这竞争激烈的市场中存活下去,逐渐壮大在嵌入式产品的影响力?
在计算机技术的许多变革中,复杂指令集计算机(CISC)过渡到精简指令集计算机(RISC)体系结构的转变是很重要的一个方面。正是RISC的出现发展大大推动了 嵌入式系统性能 的提高和功能的完善。
世界上首颗RISC处理器
随着时间过去,渐渐地发现原本的硬件设计已不符需求,Acorn想要升级机器内的CPU。当时处理器的发展潮流是由8位元转向16位元,一开始有考虑使用美国国家半导体以及Motorola新的16位元芯片,但是经过评估后,发现2个缺点。
执行上有点慢,中断的回应时间太长,而且太贵。
一台500英镑的计算机,CPU售价高达100英镑。
于是只好转向Intel,要求提供一些80286设计资料以及样品,但是却遭到Intel拒绝。这件事情后来直接导致Acorn决定设计自己需要的CPU,由于采用RISC架构的关系,名称就称为Acorn RISC Machine(ARM)。
Acorn于1985年设计出了第一代处理器芯片,称为ARM1,由Sophie Wilson设计出类似于6502的指令集,因为当时Acorn为英国国家广播公司BBC所制造的BBC Micro计算机采用MOS 6502处理器,使用类似的指令集有助于缩短开发时间以及技术转移。Steve Furber则是负责设计硬件实作。ARM1以第二颗处理器的身分,安装在BBC Micro内部。
ARM1在晶圆设计部分,规格为3微米制程、2层金属层、总计2万5千个晶体管、6MHz运作时脉、消耗功率120mW、芯片面积50mm2。当时Intel的80286使用1.5微米制程、13万4千个晶体管、6~12Mhz运作时脉,同时这2款处理器都不包含快取。
同年10月,Intel发表80386处理器,与之相比,ARM1显得功能简单、能源消耗较少,在效能上不是80386的对手。这一差异导致ARM系列处理器往后的设计路线明显与Intel不同,Intel持续迈向x86高效能设计,ARM专注于低成本、低功耗的研发方向。
复杂指令集计算机(CISC)
CISC的英文全称为“Complex InstrucTIon Set Computer”,即“复杂指令系统计算机”,从计算机诞生以来,人们一直沿用CISC指令集方式。早期的桌面软件是按CISC设计的,并一直沿续到现在。目前,桌面计算机流行的x86体系结构即使用CISC。微处理器(CPU)厂商一直在走CISC的发展道路,包括Intel、AMD,还有其他一些现在已经更名的厂商,如TI(德州仪器)、IBM以及VIA(威盛)等。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。CISC架构的服务器主要以IA-32架构(Intel Architecture,英特尔架构)为主,而且多数为中低档服务器所采用。
以上,有的甚至超过500条.
精简指令集计算机(RISC)
RISC的英文全称为“Reduced InstrucTIon Set Computer”,即“精简指令集计算机”,是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机(即RISC机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。
RISC的优点列举如下:
指令长度固定,方便CPU译码,简化译码器设计。
尽量在CPU的暂存器(最快的存储器元件)里操作,避免额外的读取与载入时间。
由于指令长度固定,更能受益于执行线路管线化(pipeline)后所带来的效能提升。
处理器简化,晶体管数量少,易于提升运作时脉。比起同时脉的CISC处理器,耗电量较低。
RISC的缺点列举如下:
复杂指令需要由许多的小指令去完成,程序变得比较大,存储器也占用比较多,这在硬盘昂贵,常常使用磁带储存的时代来说,是个大缺点。
程序变长,代表着读取工作变得繁重,需要更多的时间将指令从存储器载入至处理器内。
这里也提供一个小小的概念,CISC是在RISC出现之后才出现的相对名词,并不是从一开始就有CISC、RISC这2种处理器架构。
RISC和CISC的区别:
处理器的指令集可简单分为2种,CISC(complex instruction set computer)以及RISC(reduced instruction set computer)。一开始的处理器都是CISC架构,随着时间演进,有越来越多的指令集加入。由于当时编译器的技术并不纯熟,程序都会直接以机器码或是汇编语言写成,为了减少程序设计师的设计时间,逐渐开发出单一指令,复杂操作的程序码,设计师只需写下简单的指令,再交由CPU去执行。但是后来有人发现,整个指令集中,只有约20%的指令常常会被使用到,约占整个程序的80%;剩余80%的指令,只占整个程序的20%。于是1979年美国加州大学柏克莱分校的David Patterson教授提出了RISC的想法,主张硬件应该专心加速常用的指令,较为复杂的指令则利用常用的指令去组合。
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
(4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。
(5) CPU芯片电路:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。
(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。
我们经常谈论有关“PC”与“Macintosh”的话题,但是又有多少人知道以Intel公司X86为核心的PC系列正是基于CISC体系结构,而 Apple公司的Macintosh则是基于RISC体系结构 (Macintosh(苹果电脑的统称))
CISC与RISC到底有何区别?
从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。
从软件角度来看,CISC运行的则是我们所熟识的DOS、Windows操作系统。而且它拥有大量的应用程序。因为全世界有65%以上的软件厂商都理为基于CISC体系结构的PC及其兼容机服务的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面却显得有些势单力薄。虽然在RISC上也可运行DOS、Windows,但是需要一个翻译过程,所以运行速度要慢许多。
目前CISC与RISC正在逐步走向融合,PenTIum Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。他们接受CISC指令后将其分解分类成RISC指令以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。