看RISC CPU的设计,才发现自己本科真的什么也没有学过,呵呵,感谢King,正是由于跟她针锋相对的讨论,自己才会不断查找资料下去,自己也才总算有了一点点概念,现整理一下。
传统意义上的精简指令集计算机(RISC)和复杂指令集计算机(CISC)在基本原理上就存在着差异。但是,现代的微控制器技术正在不断缩小着RISC架构和CISC架构之间的差异。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
差异由来已久
RISC机型拥有一个有限的指令集合,并且能够极快地执行每一条指令。但是由于缺乏复杂指令,因此需要在软件方面进行大量的工作。RISC方案的另一个优势在于有限的指令数量能够产生一个很小的核心。但由于使用精简指令所编写出来的代码会更长,所以执行任务所需的内存也就更大。因此,对于复杂的程序来说,由于要考虑到各种可能的情况,最终的程序代码可能非常大。
RISC指令集有许多特征,其中最重要的有:
指令种类少,指令格式规范:RISC指令集通常只使用一种或少数几种格式。指令长度单一(一般4个字节),并且在字边界上对齐,字段位置、特别是操作码的位置是固定的。
寻址方式简化:几乎所有指令都使用寄存器寻址方式,寻址方式总数一般不超过5个。其他更为复杂的寻址方式,如间接寻址等则由软件利用简单的寻址方式来合成。
大量利用寄存器间操作:RISC指令集中大多数操作都是寄存器到寄存器操作,只以简单的Load和Store操作访问内存。因此,每条指令中访问的内存地址不会超过1个,访问内存的操作不会与算术操作混在一起。
简化处理器结构:使用RISC指令集,可以大大简化处理器的控制器和其他功能单元的设计,不必使用大量专用寄存器,特别是允许以硬件线路来实现指令操作,而不必像CISC处理器那样使用微程序来实现指令操作。因此RISC处理器不必像CISC处理器那样设置微程序控制存储器,就能够快速地直接执行指令。
另一方面,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开发的PIC<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />16C54。Microchip在1990年的时候把它推向市场。它采用的是一个基于单累加器的哈佛体系结构设备,使用有限指令集合。这样微处理器在执行每一条单个指令所需时间就很小。但是33条指令加上一页内存,生成的代码长度几乎是同种情况下HC11所得代码的两倍多。
新技术使得差异在减小
CISC控制器在实现了管道技术之后,使得一条指令基本上在一个时钟周期之内就能够执行完,很大地改善了机器性能。但是,这种流水线操作有个很大的弊病在于每次的跳转或者执行分支指令,又或者是中断发生,都有可能导致管道内数据泛滥,反而导致更长的指令周期。虽然有一些方法能够降低这种不良效果,但是基本上都需要在软件中进行大量处理而最终会降低许多应用程序代码效率。
随着技术的进步,RISC和CISC机型之间的鸿沟已经越来越小,特别是对于市场的高端用户来说,这种差异已经逐渐变得难以区分了。
RISC是精简指令集计算机,现在很多嵌入式微处理器都是RISC,例如常用的ARM,MIPS, POWERPC等。它有一个特征就是指令是等长的。这就为提高执行指令的效率提供了方便,大部分处理器可以做到平均一个时种处理一条指令。CISC是复杂指令集计算机。如X86系列,TI的DSP系列,指令是不等长的。但是一条指令可以完成RISC的好几条指令能完成的任务。这两种处理器各有所唱,都在发展当中。
哈佛结构和冯.诺依曼结构主要是指存储器结构,而非指令系统结构,与指令系统没有严格的对应关系。
MCS-51是哈佛结构,指令系统是CISC指令。
PIC单片机是哈佛结构,指令系统是RISC指令。
冯.诺曼结构
冯.诺曼的主要贡献就是提出并实现了“存储程序”的概念。由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。但是,这种指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。
哈佛结构
与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:
使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联
引用:
RISC:http://detail.zol.com.cn/product_param/index506.html
冯.诺曼结构:http://jwc.seu.edu.cn/zq/signal/new/importent/zhang5_6/feng.htm
哈佛:http://jwc.seu.edu.cn/zq/signal/new/importent/zhang5_6/harvard.htm
RISC和CISC:http://www.itdoor.net/pages/13,3244,1,1016170197.html
用户31672 2007-5-13 11:09
有关哈佛结构、冯.诺依曼结构、包括逆哈佛结构。
有关RISC的指令流水线和数据流水线
有关寄存器组结构CPU和累加器结构CPU等概念,以及关联的东西,还是没有很好的理解。
用户31672 2007-5-13 11:05
因为普遍采用流水线结构,X86 CISC至少采用16级流水线以上所以,效率也很高。
对于哈佛结构的CPU现在也是开始大量采用流水线结构了。
用户26778 2007-4-25 15:12
如果按你说的自相矛盾:冯·诺依曼的指令和数据总线在一起,那么MCS-51就是冯·诺依曼结构
哈佛的指令和数据总线分开PIC就是哈佛结构,他们的资料也说了
用户65353 2007-1-20 23:24