分类:
2008-11-05 22:43:39
关于这个问题,有人说51地址线复用,就是冯诺依曼结构。
很多入门的书上基本上都说:由运算器、控制器、存储器、输入设备、输出设备组成的系统
都叫冯氏结构。
也有的说:“程序存储器的数据线地址线”与“数据存储器的数据线地址线”共用的话,就
是冯氏结构,所以51是该结构。(我认为说得太绝对了)
我认为冯氏结构与哈佛结构的区别应该在存储器的空间分别上,哈佛结构的数据区和代码区是分开的,它们即使地址相同,但空间也是不同的,主要表现在数据不能够当作代码来运行。
口线复用,就将它认为成冯氏结构,我认为这样不足取,应该是按照空间是否完全重合来辨
别。比如PC机的代码空间和数据空间是同一空间,所以是冯氏结构;51由于IO口不够,但代
码空间和数据空间是分开的,所以还是哈佛结构。
另外,还有的把CISC RISC 和 地址是否复用,是哪种结构 这3这都混到一起。我认为这三者都没有必然的关系。只不过 RISC因为精简了指令集,没有了执行复杂功能的指令,为了提高性能,常采用哈佛结构,并且不复用地址线。
补充:有本书:嵌入式微处理器系统设计实例,英文版 embedded microprocessor systems:real world design third edition 上有这样一个提法 : 大多数采用哈佛结构的微处理器实际上使用的是一种经过改进的哈佛结构体系,在改进结构下,虽然代码和数据还是分开的,但该体系支持从代码区载入有限的数据,这但允许数据表和其他信和与代码一起被编译,并可在运行时使用这些数据。
摘抄一段:
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11,51单片机也属于哈佛结构
冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了上面提到的英特尔公司的8086,英特尔公司的其他中央处理器、安谋公司的ARM7、MIPS公司的MIPS处理器也采用了冯·诺伊曼结构。
在DSP算法中,最大量的工作之一是与存储器交换信息,这其中包括作为输入信号的采样数据、滤波器系数和程序指令。冯?诺依曼结构中,只有一个存储器,通过一条总线来传送数据。乘两个数至少需要3个指令周期,即通过总线将这3个数从存储器中送到CPU。所以这种结构在面对高速、实时处理时,不可避免地造成总线拥挤。为此,哈佛大学提出了与冯?诺依曼结构完全不同的另一种计算机结构,人们习惯称之为哈佛结构。它根据数据和数据指令将存储器和总线分开。因此,总线操作是独立的,能同时取指令和数据,提高了速度。目前DSP内部一般采用的是哈佛结构,它在片内至少有4套总线:程序的数据总线,程序的地址总线,数据的数据总线和数据的地址总线。这种分离的程序总线和数据总线,可允许同时获取指令字(来自程序存储器)和操作数(来自数据存储器),而互不干扰。这意味着在一个机器周期内可以同时准备好指令和操作数。超级哈佛结构(super Harvard architecture,缩写为SHARC)如图(c)所示,它在哈佛结构上增加了指令cache(缓存)和专用的I/O控制器。
评论:哈佛结构和冯.诺依曼结构都是一种存储器结构。哈佛结构是将指令存储器和数据存储器分开的一种存储器结构;而冯.诺依曼结构将指令存储器和数据存储器合在一起的存储器结构。
chinaunix网友2009-09-02 09:16:50
“51由于IO口不够,但代码空间和数据空间是分开的,所以还是哈佛结构”,这样就认为51为哈佛结构未免太循规蹈矩了把。51单片机代码空间和数据空间的分开是由于汇编指令的不同选择不同的存储空间,但本质上51单片机还是没有脱离开访问数据时就不能利用单独的数据总线和地址总线访问下一条指令,这也就决定了51单片机的空间组织仍然是冯诺依曼结构,PC机的代码空间和数据空间是同一空间,访问的到底是数据空间还是地址空间,是由不同的地址范围决定的,因此处理数据时就不能继续执行下一条指令,所以是冯诺依曼结构,而51单片机虽然物理上空间分开了,地址也有重合,但仍不能预先执行下一条指令,这和PC机上将数据空间和程序空间统一编址,根据不同的地址范围决定是数据空间还是地址空间 本质上是一样的。