计算机必知必会:精简指令集与复杂指令集

CISC与RISC
服务器君一共花费了154.563 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

精简指令集与复杂指令集

一个缓存器A的数据转移至令一个缓存器B,只需将缓存器A开启成读的状态,然后将缓存器B开启成写的状态,两个步骤即可。但是要求CPU在内存中某个区段搜寻某个字,微指令的编码就必须多安排一些。因此,微处理随着微指令的复杂度可分为精简指令集计算机RISC(Reduce Instruction Set Computer)及复杂指令集计算机CISC(Complex Instruction Set Computer)。 

复杂指令集计算机(CISC)

长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得。随着集成电路技术,特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式。甚至某些指令可支持高级语言语句归类后的复杂操作。至使硬件越来越复杂,造价也相应提高。为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能,微处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构。一般CISC计算机所含的指令数目至少300条以上,有的甚至超过500条。

精简指令集计算机(RISC)

采用复杂指令系统的计算机有着较强的处理高级语言的能力,这对提高计算机的性能是有益的。当计算机的设计沿着这条道路发展时,有些人没有随波逐流,他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司没在纽约Yorktown的JhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题,因为当时已感到,日趋庞杂的指令系统不但不易实现。而且还可能降低系统性能.1979年以帕特逊教授为首的一批科学家也开始在美国加册大学伯克莱分校开展这一研究。结果表明,CISC存在许多缺点。

首先,在这种计算机中,各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令,只占一个处理器指令系统的20%。事实上最频繁使用的指令是取、存和加这些最简单的指令。这样一来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器。

同时,复杂的指令系统必然带来结构的复杂性。这不但增加了设计的时间与成本还容易造成设计失误。此外,尽管VLSI技术现在已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展。在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差。由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度。因而,针对CISC的这些弊病,帕特逊等人提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令,并提供一些必要的指令以支持操作系统和高级语言。按照这个原则发展而成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构,简称RISC。

CISC与RISC的区别

我们经常谈论有关“PC”与“Macintosh”的话题,但是又有多少人知道以Intel公司X86为核心的PC系列正是基于CISC体系结构,而 Apple公司的Macintosh则是基于RISC体系结构,CISC与RISC到底有何区别?

从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。

从软件角度来看,CISC 运行的则是我们所熟识的DOS、Windows操作系统。而且它拥有大量的应用程序。因为全世界有65%以上的软件厂商都理为基于CISC体系结构的PC 及其兼容机服务的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面却显得有些势单力薄。虽然在RISC上也可运行DOS、 Windows,但是需要一个翻译过程,所以运行速度要慢许多。

简单而言,复杂指令集和精简指令集的设计思路是完全不同,两种处理器在工作时的思考方式也有很大的区别。复杂指令集更适合处理一些高密度的计算任务,而精简指令集则更适合处理器做一些简单重复的任务。打个比方,如果要让我们执行早上起床上班的任务应该怎么做呢?复杂指令集此时只要对我们下达上班的命令,我们就会自动执行一系列复杂的动作,如起床、穿衣、洗涮、出门、上车等命令;而精简指令集则要单独向我们下达一个一个简单的指令,让我们一步一步执行他下达的命令,最终达成上班的目的。

这就是两者为什么不好比较性能的原因,这样的思路导致了CISC和RISC两种处理器的巨大差异,前者更加专注于高性能但同时也需要高功耗,而后者则专注于小尺寸低功耗的领域。执行高密度的运算任务的时候CISC更具备优势,而执行简单重复劳动的时候RISC就能占到上风。

本文地址:http://www.nowamagic.net/librarys/veda/detail/2360,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/2360

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《Python学习手册(第4版)》 鲁特兹(Mark Lutz) (作者), 李军 (译者), 刘红伟 (译者), 等 (译者)

《Python学习手册(第4版)》学习Python的主要内建对象类型:数字、列表和字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。使用函数构造和重用代码,函数是Python的基本过程工具。学习Python模块:封装语句、函数以及其他工具,以便构建较大的组件。学习Python的面向对象编程工具,用于组织程序代码。学习异常处理模型,以及用于编写较大程序的开发工具。了解高级Python工具,如装饰器、描述器、元类和Unicode处理等。

更多计算机宝库...