您的位置:首页 > 其它

关于冯诺依曼结构与哈佛结构的探讨2

2010-07-04 09:47 351 查看

  从上面维基百科上的说法可以看出哈佛结构和冯诺依曼结构的来历和它们的一些发展,但是对于界定也并不是很明确的。

  冯诺依曼提出的计算机结构不仅限与以下的这些特点。尤其在计算机原理的课程上的学到的计算机的架构中的冯诺依曼架构是对整个计算机系统的一个定义,而不仅限于CPU和存储器连接的一个结构。不过在这里我只谈冯诺依曼在存储器方面的特点。因为很多微处理器的文档上的冯诺依曼结构就是指的这个意思,而不是整个系统。

  冯诺依曼结构可能有以下的特点:

  1. 程序存储和数据存储统一编址。

  2. CPU使用统一的总线来访问程序和数据。

  3. CPU采用相同的指令来访问程序和数据。

  哈佛结构可能有以下的特点:

  1. 程序存储和数据存储物理独立。

  2. CPU采用独立的总线来访问程序和数据。

  3. CPU采用不同的指令来访问程序和数据。

  其实本来我们也没有必要知道具体某个微控制器到底是叫冯诺依曼结构还是哈佛结构,我们只要知道他是那种结构就可以了。但是麻烦的是有些文档上喜欢用这个词,一些论坛上也喜欢用这个词,往往我们需要通过当时的语境来判断这个词的具体的意思,否则可能就会误解它的意思。

  我们先来看几个单片机的结构:

  这是PIC单片机的结构图

  这是典型的哈佛结构,EPROM和RAM分别采用了独立的地址总线和数据总线。这是一个纯碎的哈佛结构。

  下面是8051架构方框图

  从图中可以看出ROM和RAM有不同的地址总线,但是共享着数据总线。有着相同的数据总线也就意味着ROM的数据不仅可以被指令译码器译码,还可以被特定的指令读取到RAM中,所以说是一种改进的哈佛结构。但是共享着数据总线也就意味着指令和数据的读写只能分时复用,无法同时进行,因此没有哈佛结构提升速度的特点。

  下图是AVR单片机的结构图

  指令和数据采用了不同的地址总线和数据总线,同时在Instruction Register中加了一条到General Purpose Registers或SRAM的通路,也就使得指令也可以被读到RAM中,所以也属于改进的哈佛结构。

  TI的430单片机的结构 从图中可以看出 430的所有ROM和RAM都连接在了相同的数据总线和地址的总线上,所以430属于冯诺依曼结构。

  Keil中的MON51要求51是冯诺依曼存储才能使用这个调试,这个冯诺依曼存储是什么?

  首先8051的结构是一种哈佛结构(虽然是改进的)没错,但是8051单片机相对以上的另外几款单片机还有一个区别,8051可以外接程序存储器和/或者数据存储器。的确对于内核数据器和内部程序器8051的ALU会采用不同的地址总线来访问。但是对于外接的数据存储器和程序存储器,却采用同样的地址总线(P0,P2)和数据总线(P0),区分是访问数据存储器和程序存储器是通过控制总线(PESN,RD,WR)来区分的。而这个外部的总线的接法是我们硬件设计者自己设计的。如果我们把PESN和RD通过与门连接到外接RAM的RD引脚。那么无论51采用读程序的指令还是采用都数据的指令,只要地址一样,都会被定位到外部RAM的同一位置,也就相当于存储结构变成了冯诺依曼结构。

  综上所述,芯片文档上的冯诺依曼和哈佛结构指的是与CPU直接相连的存储器之间的结构关系,这包括ARM9,ARM9的哈佛结构表现在与ARM9TDMI内核直接相连的ICACHE和DCACHE之间的结构关系。而区别它们更多的在于它们是不是具有独立的地址空间,如果有的话,就是哈佛结构,如果没有就是冯诺依曼结构。而具有独立的地址空间也就意味着在地址总线和控制总线上至少要有一种总线必须是独立的,这样才能保证地址空间的独立性。

  而对于一些程序手册上的冯诺依曼存储则是对于单片机进行寻址的地址值是否对应于唯一的存储器的唯一位置。而不在乎单片机内部是否采用同样的指令,单片机内部是否通过同样的总线来访问。因此51单片机也可以被设计成冯诺依曼存储,ARM9与主存的关系也是一种冯诺依曼存储。

More http://www.ieing.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: