CICS与RICS
*1.CISC**(**Complex Instruction SetComputer,复杂指令集计算机****)*
复杂指令集(CISC,Complex Instruction Set Computer)是一种微处理器指令集架构(ISA),每个指令可执行若干低阶操作,诸如从内存读取、储存、和计算操作,全部集于单一指令之中。
- *CISC**特点:***
1.指令系统庞大,指令功能复杂,指令格式、寻址方式多;
2.绝大多数指令需多个机器周期完成;
3.各种指令都可访问存储器;
4.采用微程序控制;
5.有专用寄存器,少量;
6.难以用优化编译技术生成高效的目标代码程序;
在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。
*2.RISC**(**reduced instruction setcomputer**,精简指令集计算机)***
精简指令集这种设计思路对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。它能够以更快的速度执行操作。
这种设计思路最早的产生缘自于有人发现,尽管传统处理器设计了许多特性让代码编写更加便捷,但这些复杂特性需要几个指令周期才能实现,并且常常不被运行程序所采用。此外,处理器和主内存之间运行速度的差别也变得越来越大。在这些因素促使下,出现了一系列新技术,使处理器的指令得以流水执行,同时降低处理器访问内存的次数。
实际上在后来的发展中,RISC与CISC在竞争的过程中相互学习,现在的RISC指令集也达到数百条,运行周期也不再固定。虽然如此,RISC设计的根本原则——针对流水线化的处理器优化——没有改变,而且还在遵循这种原则的基础上发展出RISC的一个并行化变种VLIW(包括Intel EPIC),就是将简短而长度统一的精简指令组合出超长指令,每次执行一条超长指令,等于并行执行多条短指令。
- *RISC**特点:***
1.统一指令编码(例如,所有指令中的op-code永远位于同样的位元位置、等长指令),可快速解译;
2.泛用的暂存器,所有暂存器可用于所有内容,以及编译器设计的单纯化(不过暂存器中区分了整数和浮点数);
3.单纯的寻址模式(复杂寻址模式以简单计算指令序列取代);
4.硬件中支援少数资料型别(例如,一些CISC电脑中存有处理字节字串的指令。这在RISC电脑中不太可能出现)。
二者区别:
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:
(1)指令系统:RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2)存储器操作:RISC对存储器操作有限制,使控制简单化;而CISC机器的存储器操作指令多,操作直接。
(3)程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,效率较高。
(4)中断:RISC机器在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断。
(5)CPU:RISCCPU包含有较少的单元电路,因而面积小、功耗低;而CISCCPU包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6)设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC微处理器结构复杂,设计周期长。
(7)用户使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
(8)应用范围:由于RISC指令系统的确定与特定的应用领域有关,故RISC机器更适合于专用机;而CISC机器则更适合于通用机。
二、**x86、ARM、MIPS架构
x86、ARM、MIPS算是是目前最常见也相对最知名的处理器架构了。
-
x86架构
x86或80x86是英特尔首先开发制造的一种微处理器体系结构的泛称。该系列较早期的处理器名称是以数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。
x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人电脑的标准平台,成为了历来最成功的CPU架构。
8086是16位元处理器;直到1985年32位元的80386的开发,这个架构都维持是16位元。接着一系列的处理器表示了32位元架构的细微改进,推出了数种的扩充,直到2003年AMD对于这个架构发展了64位元的扩充,并命名为*AMD64*。后来Intel也推出了与之兼容的处理器,并命名为*Intel 64*。两者一般被统称为*x86-64*或*x64*,开创了x86的64位时代。
值得注意的是Intel早在1990年代就与惠普合作提出了一种用在安腾系列处理器中的独立的64位架构,这种架构被称为*IA-64*。*IA-64*是一种崭新的架构,和x86架构完全没有相似性。(对于Intel和AMD的处理器技术,打算专门挑些典型的区别总结一篇文章)
x86架构是重要地可变指令长度的CISC。字组(word, 4字节)长度的内存存取允许不对齐内存位址,字组是以低位字节在前的顺序储存在内存中。向后相容性一直都是在x86架构的发展背后一股驱动力量(设计的需要决定了这项因素而常常导致批评,尤其是来自对手处理器的拥护者和理论界,他们对于一个被广泛认为是落后设计的架构的持续成功感到不解)。但在较新的微架构中,x86处理器会把x86指令转换为更像RISC的微指令再予执行,从而获得可与RISC比拟的超标量性能,而仍然保持向前兼容。
如今,我们面前的PC机基本都是x86架构计算机。如果你想尝试其他架构的计算机,首先要考虑的是放弃Windows系统。(好消息是即将正式发布的Windows 8 将支持x86和ARM两种架构)
-
ARM架构
ARM架构(进阶精简指令集机器(AdvancedRISC Machine),较早称作Acorn RISCMachine)是一个32位元精简指令集(RISC) 处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。
ARM架构包含了下述RISC特性:
1.读取/储存 架构
2.正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonal instruction set)
3.大量的16 × 32-bit 寄存器阵列(register file)
4.固定的32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。
5.大多均为一个CPU周期执行。
为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola68020,还多加了一些特殊设计:
1.大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。
2.算数指令只会在要求时更改条件编码(conditioncode)
3.32-bit筒型位移器(barrelshifter)可用来执行大部分的算数指令和寻址计算而不会损失效能
4.强大的索引寻址模式(addressing mode)
5.精简但快速的双优先级中断子系统,具有可切换的暂存器组
在今日,ARM家族占了所有32位元嵌入式处理器75%的比例,使它成为占全世界最多数的32位元架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电玩、计算机)到电脑周边设备(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。
对于智能机爱好者们,ARM处理器的大名一定早有所闻。
-
MIPS架构
MIPS架构(英语:MIPSarchitecture,为“无内部互锁流水级的微处理器Microprocessorwithout Interlocked Pipeline Stages的缩写,也是Millionsof Instructions Per Second的相关语),是一种采取精简指令集(RISC)的处理器架构,1981年出现,由MIPS科技公司开发并授权,广泛被使用在许多电子产品、网络设备、个人娱乐装置与商业装置上。其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。
MIPS是出现最早的商业RISC架构芯片之一。MIPS的系统结构及设计理念比较先进,强调软硬件协同提高性能,同时简化硬件设计。
2002年,中国科学院计算所开始研发龙芯处理器,采用MIPS架构,但未经MIPS公司的授权,遭到侵权的控告。2007年,中国科学院与MIPS公司达成和解,得到正式授权。中国龙芯2和前代产品采用的都是64位MIPS指令架构。过去,MIPS架构的产品多见于工作站领域,索尼PS2游戏机所用的“Emotion Engine”也采用MIPS指令,这些MIPS处理器的性能都非常强劲,而龙芯2也属于这个阵营,在软件方面与上述产品完全兼容。
另:
- *ARM*与*MIPS*对比:**
与当前商业化最成功的ARM架构相比,MIPS的优势主要有以下几点:
1,MIPS支持64bit指令和操作,ARM目前只到32bit
2,MIPS有专门的除法器,可以执行除法指令
3,MIPS的内核寄存器比ARM多一倍,所以同样的性能下MIPS的功耗会比ARM更低,同样功耗下性能比ARM更高
4,MIPS指令比ARM稍微多一点,稍微灵活一点
5,有观点认为MIPS的bank寄存器性能也要好于ARM,不过没见过能反映出来的测试
以上为MIPS对比ARM架构的优势,接下来我们再看一看MIPS架构的不足之处,
与ARM架构相比,MIPS架构也存在着以下几点不足
1,MIPS的内存地址起始有问题,这导致了MIPS在内存和cache的支持方面都有限制,现在的MIPS处理器单内核面对高容量内存时有问题
2,MIPS今后的发展方向是并行线程,类似INTEL的超线程,而ARM未来的发展方向是物理多核,目前看来物理多核占优。由此来看,我国的龙芯向多核发展还是颇具远见的。
3,MIPS虽然结构更加简单,但是到现在还是顺序单发射,ARM已经进化到了乱序双发射,甚至NV的丹佛已经是乱序三发射了。
商业上二者差别也大,ARM很昂贵,而且不能随意自行更改内核。而MIPS就要开放的多了。(这也算龙芯为什么不采用ARM架构的原因了。)
- *ARM*与*x86*对比:**
X86指令集有以下几个突出的缺点:
通用寄存器组——对CPU内核结构的影响X86指令集只有8个通用寄存器。所以,CISC的CPU执行是大多数时间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。
RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。
解码——对CPU的外核的影响
解码器,这是x86CPU才有的东西。其作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。
寻址范围小——约束了用户需要
ARM指令集的特点:
- 体积小,低功耗,低成本,高性能;
- 支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容8 位 /16 位器件;
- 大量使用寄存器,指令执行速度更快;
- 大多数数据操作都在寄存器中完成;
- 寻址方式灵活简单,执行效率高;
- 指令长度固定;
- 流水线处理方式
- Load_store结构:在RISC中,所有的计算都要求在寄存器中完成。而寄存器和内存的通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的。
ARM的一些非RISC思想的指令架构:
- 允许一些特定指令的执行周期数字可变,以降低功耗,减小面积和代码尺寸。
- 增加了桶形移位器来扩展某些指令的功能。
- 使用了16位的Thumb指令集来提高代码密度。
- 使用条件执行指令来提高代码密度和性能。
- 使用增强指令来实现数据信号处理的功能。
小结:
X86采用CISC,具有大量的复杂指令、可变的指令长度、多种的寻址方式这些CISC的特点,也是CISC的缺点,因为这些都大大增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用X86指令集外,服务器以及更大的系统都早已不用CISC了。x86仍然存在的理由就是为了兼容大量的x86平台上的软件,同时,它的体系结构组成的实现不太困难。
ARM采用的RISC体系最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行,因此有较快运行速度。因此,ARM处理器才成为是当前最流行的处理器系列,是几种主流的嵌入式处理体系结构之一。