当接触一新CPU时商家会首先描述它是RISC指令集,这意味着什么,从这个描述你能了解多少CPU特性信息?
复杂指令集计算机(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正在逐步走向融合,Pentium Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。他们接受CISC指令后将其分解分类成RISC指令以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。
读以上内容后我的理解是:
CISC通常使用多个系统时钟来执行单个指令,如51 单片机 用12个时钟周期才能完成一条指令的取,分析,执行过程,而RISC则不用RISC处理器只使用一个时钟周期执行一条指令,而RISC通常使用流水线结构,即执行一条指令时取下一条指令,这些在同一时钟周期内完成
RISC和CISC架构在现代计算机中的区别越来越小了,尤其对于市场的高端用户来说,这种差异更加难以区别。
传统意义上的精简指令集计算机(RISC)和复杂指令集计算机(CISC)在基本原理上就存在着差异。但是,现代的微控制器技术正在不断缩小着RISC架构和CISC架构之间的差异。
差异由来已久
RISC机型拥有一个有限的指令集合,并且能够极快地执行每一条指令。但是由于缺乏复杂指令,因此需要在软件方面进行大量的工作。RISC方案的另一个优势在于有限的指令数量能够产生一个很小的核心。但由于使用精简指令所编写出来的代码会更长,所以执行任务所需的内存也就更大。因此,对于复杂的程序来说,由于要考虑到各种可能的情况,最终的程序代码可能非常大。
另一方面,CISC机型有着丰富的指令集合,使计算机能够利用一两条指令就能执行非常复杂的操作,原因在于它通过运行一条内部微代码而把汇编指令分解成若干条内部微代码指令。这样做,设备的负担就不是很高,而且代码的分布密度也恰到好处。虽然CISC机型下的内核代码要比相应的RISC机型大许多,但由于代码密度分布合理,而且考虑到内存的因素,最终所产生的代码长度就没有RISC产生的那么大。
体系结构的差异更重要
微控制器之间的各种差异要比RISC和CISC种类上的差异重要得多。冯?诺依曼体系结构(Von Neuman)与哈佛体系结构(Harvard)之争就是此类差异之一。另外一种就是基于寄存器体系结构和基于累加器体系结构的差异。在冯?诺依曼体系结构中,数据和程序存储器是共享数据总线的。数据总线共享有很多优点,比如减小总线的开销。另外一个优点在于能够把RAM映射到程序空间,这样设备也能访问EEPROM中的内存。
而对于哈佛体系结构的计算机,程序和数据总线是分开的。这种方式的优势在于能够在一个时钟周期内同时读取程序和数据,这样就相应地减少了执行每一条指令所需的时钟周期。早期的哈佛架构的计算机是不能把查找表储存在程序存储器中的,而这个问题在现在的大多数设备中已经解决了。
哈佛体系结构计算机中存在的另外一个问题就是,如果要和外部的程序和数据存储器进行交互,对于两部分存储器来说,由于地址总线和数据总线的相互独立性,就需要额外增加大量的芯片管脚。因此,只有当至少有一种存储器的类型是内部的情况下,微处理器才会采用哈佛体系结构。
在基于累加器体系结构中,累加器既是数学运算单元(ALU)的数据源之一,又是ALU存放操作结果的地方。通常基于累加器体系结构的微处理器,能够在累加器与程序存储器中任何位置的存储单元或是RAM之间进行各种数学或逻辑操作。这种架构的优势就在于对于内存地址的访问更为方便快捷。
基于寄存器体系结构的微处理器中,会有一系列的寄存器直接与ALU相连。这种情况的好处在于不需要把所有的数据都压进一个累加器中,从而减少了许多在累加器架构中存在的“move”指令。因此,与把所有数据都要推进累加器中的情况相比,基于寄存器架构的微处理器大大提高了ALU的吞吐能力。
陈旧的体系差异明显
对于8位微处理器来说,能够很容易地区分RISC和CISC之间的不同。最主要的原因就是这些体系结构,除了少数例外,要比相应的32位微处理器陈旧得多。CISC体系结构的一个经典例子就是摩托罗拉开发的HC11系列。HC11核心处理器诞生于1984年。这种系列的微处理器拥有300多条指令,代码密度分布非常合理。HC11使用的是带有两个累加器的冯?诺依曼体系结构。由于所有的复杂指令都是在核心中完成的,所以执行每条指令的时间就很长。指令周期从8个时钟周期到164个时钟周期。核心过大导致处理器的最高主频不超过12MHz,这样的性能要远远低于某些RISC机型。
传统的8位RISC微处理器的一个例子就是由Microchip开发的PIC16C54。Microchip在1990年的时候把它推向市场。它采用的是一个基于单累加器的哈佛体系结构设备,使用有限指令集合。这样微处理器在执行每一条单个指令所需时间就很小。但是33条指令加上一页内存,生成的代码长度几乎是同种情况下HC11所得代码的两倍多。
新技术使得差异在减小
现在RISC机型与CISC机型的差距在不断减小。RISC机型中越来越多地增加了能够在几个时钟周期内就能执行的指令,同时在体系结构上的优化也使得高级语言更为有效。
CISC控制器在实现了管道技术之后,使得一条指令基本上在一个时钟周期之内就能够执行完,很大地改善了机器性能。但是,这种流水线操作有个很大的弊病在于每次的跳转或者执行分支指令,又或者是中断发生,都有可能导致管道内数据泛滥,反而导致更长的指令周期。虽然有一些方法能够降低这种不良效果,但是基本上都需要在软件中进行大量处理而最终会降低许多应用程序代码效率。
随着技术的进步,RISC和CISC机型之间的鸿沟已经越来越小,特别是对于市场的高端用户来说,这种差异已经逐渐变得难以区分了。我们或多或少地只能相信销售商所宣称的微处理器类型了。
复杂指令集计算机(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正在逐步走向融合,Pentium Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。他们接受CISC指令后将其分解分类成RISC指令以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。
读以上内容后我的理解是:
CISC通常使用多个系统时钟来执行单个指令,如51 单片机 用12个时钟周期才能完成一条指令的取,分析,执行过程,而RISC则不用RISC处理器只使用一个时钟周期执行一条指令,而RISC通常使用流水线结构,即执行一条指令时取下一条指令,这些在同一时钟周期内完成
RISC和CISC架构在现代计算机中的区别越来越小了,尤其对于市场的高端用户来说,这种差异更加难以区别。
传统意义上的精简指令集计算机(RISC)和复杂指令集计算机(CISC)在基本原理上就存在着差异。但是,现代的微控制器技术正在不断缩小着RISC架构和CISC架构之间的差异。
差异由来已久
RISC机型拥有一个有限的指令集合,并且能够极快地执行每一条指令。但是由于缺乏复杂指令,因此需要在软件方面进行大量的工作。RISC方案的另一个优势在于有限的指令数量能够产生一个很小的核心。但由于使用精简指令所编写出来的代码会更长,所以执行任务所需的内存也就更大。因此,对于复杂的程序来说,由于要考虑到各种可能的情况,最终的程序代码可能非常大。
另一方面,CISC机型有着丰富的指令集合,使计算机能够利用一两条指令就能执行非常复杂的操作,原因在于它通过运行一条内部微代码而把汇编指令分解成若干条内部微代码指令。这样做,设备的负担就不是很高,而且代码的分布密度也恰到好处。虽然CISC机型下的内核代码要比相应的RISC机型大许多,但由于代码密度分布合理,而且考虑到内存的因素,最终所产生的代码长度就没有RISC产生的那么大。
体系结构的差异更重要
微控制器之间的各种差异要比RISC和CISC种类上的差异重要得多。冯?诺依曼体系结构(Von Neuman)与哈佛体系结构(Harvard)之争就是此类差异之一。另外一种就是基于寄存器体系结构和基于累加器体系结构的差异。在冯?诺依曼体系结构中,数据和程序存储器是共享数据总线的。数据总线共享有很多优点,比如减小总线的开销。另外一个优点在于能够把RAM映射到程序空间,这样设备也能访问EEPROM中的内存。
而对于哈佛体系结构的计算机,程序和数据总线是分开的。这种方式的优势在于能够在一个时钟周期内同时读取程序和数据,这样就相应地减少了执行每一条指令所需的时钟周期。早期的哈佛架构的计算机是不能把查找表储存在程序存储器中的,而这个问题在现在的大多数设备中已经解决了。
哈佛体系结构计算机中存在的另外一个问题就是,如果要和外部的程序和数据存储器进行交互,对于两部分存储器来说,由于地址总线和数据总线的相互独立性,就需要额外增加大量的芯片管脚。因此,只有当至少有一种存储器的类型是内部的情况下,微处理器才会采用哈佛体系结构。
在基于累加器体系结构中,累加器既是数学运算单元(ALU)的数据源之一,又是ALU存放操作结果的地方。通常基于累加器体系结构的微处理器,能够在累加器与程序存储器中任何位置的存储单元或是RAM之间进行各种数学或逻辑操作。这种架构的优势就在于对于内存地址的访问更为方便快捷。
基于寄存器体系结构的微处理器中,会有一系列的寄存器直接与ALU相连。这种情况的好处在于不需要把所有的数据都压进一个累加器中,从而减少了许多在累加器架构中存在的“move”指令。因此,与把所有数据都要推进累加器中的情况相比,基于寄存器架构的微处理器大大提高了ALU的吞吐能力。
陈旧的体系差异明显
对于8位微处理器来说,能够很容易地区分RISC和CISC之间的不同。最主要的原因就是这些体系结构,除了少数例外,要比相应的32位微处理器陈旧得多。CISC体系结构的一个经典例子就是摩托罗拉开发的HC11系列。HC11核心处理器诞生于1984年。这种系列的微处理器拥有300多条指令,代码密度分布非常合理。HC11使用的是带有两个累加器的冯?诺依曼体系结构。由于所有的复杂指令都是在核心中完成的,所以执行每条指令的时间就很长。指令周期从8个时钟周期到164个时钟周期。核心过大导致处理器的最高主频不超过12MHz,这样的性能要远远低于某些RISC机型。
传统的8位RISC微处理器的一个例子就是由Microchip开发的PIC16C54。Microchip在1990年的时候把它推向市场。它采用的是一个基于单累加器的哈佛体系结构设备,使用有限指令集合。这样微处理器在执行每一条单个指令所需时间就很小。但是33条指令加上一页内存,生成的代码长度几乎是同种情况下HC11所得代码的两倍多。
新技术使得差异在减小
现在RISC机型与CISC机型的差距在不断减小。RISC机型中越来越多地增加了能够在几个时钟周期内就能执行的指令,同时在体系结构上的优化也使得高级语言更为有效。
CISC控制器在实现了管道技术之后,使得一条指令基本上在一个时钟周期之内就能够执行完,很大地改善了机器性能。但是,这种流水线操作有个很大的弊病在于每次的跳转或者执行分支指令,又或者是中断发生,都有可能导致管道内数据泛滥,反而导致更长的指令周期。虽然有一些方法能够降低这种不良效果,但是基本上都需要在软件中进行大量处理而最终会降低许多应用程序代码效率。
随着技术的进步,RISC和CISC机型之间的鸿沟已经越来越小,特别是对于市场的高端用户来说,这种差异已经逐渐变得难以区分了。我们或多或少地只能相信销售商所宣称的微处理器类型了。