冯·诺依曼结构
冯·诺依曼结构(von Neumann architecture)又称作普林斯顿体系结构(Princetion architecture)。冯·诺依曼结构的处理器使用同一个存储器,经由同一个总线传输。冯·诺依曼结构处理器具有以下几个特点:
- 必须有一个存储器;
- 必须有一个控制器;
- 必须有一个运算器,用于完成算术运算和逻辑运算;
- 必须有输入和输出设备,用于进行人机通信。
冯.诺伊曼结构(von Neumann architecture),也称普林斯顿结构,是一种将【程序指令存储器】和【数据存储器】合并在一起的电脑设计概念结构。
早期的计算机是由各种门电路组成的,这些门电路通过组装出一个固定的电路板,来执行一个特定的程序,一旦需要修改程序功能,就要重新组装电路板,所以早期的计算机程序是硬件化的!
冯.诺依曼结构中,将程序和数据一样看待,将程序编码为数据,然后与数据一同存放在存储器中,这样计算机就可以调用存储器中的程序来处理数据了。意味着,无论什么程序,最终都是会转换为数据的形式存储在存储器中,要执行相应的程序只需要从存储器中依次取出指令、执行,冯.诺依曼结构的灵魂所在正是这里:减少了硬件的连接。
概括的来讲,冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(程序作为控制器的一部分,作为硬件存在),将程序编码存储在存储器中,实现了可编程的计算机功能,实现了硬件设计和程序设计的分离,大大促进了计算机的发展。灵魂就是将程序从硬件实现转换为软件实现(存储程序控制原理)!!!
计算机的基本工作原理就是:存储程序控制原理!
哈佛结构
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如下图所示。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。
哈佛体系结构框图
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。
哈佛结构是指程序和数据空间独立的体系结构, 目的是为了减轻程序运行时的访存瓶颈。
哈佛结构能基本上解决取指和取数的冲突问题。
中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度。
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。
冯·诺依曼体系和哈佛总线体系的区别
二者的区别就是程序空间和数据空间是否是一体的。冯·诺依曼结构数据空间和地址空间不分开,哈佛结构数据空间和地址空间是分开的。
哈佛总线技术应用是以DSP和ARM为代表的。采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指和取操作数,从而大大提高了运算能力。
DSP芯片硬件结构有冯·诺依曼结构和哈佛结构,两者区别是地址空间和数据空间分开与否。一般DSP都是采用改进型哈佛结构,就是分开的数据空间和地址空间都不只是一条,而是有多条,这根据不同的生产厂商的DSP芯片有所不同。在对外寻址方面从逻辑上来说也是一样,因为外部引脚的原因,一般来说都是通过相应的空间选取来实现的。本质上是同样的道理。
综上,二者的区别在于程序空间与数据空间是否为一体。
哈佛结构
采用指令存储器和数据存储器相分离的存储器结构,即数据空间和地址空间是独立的,从而允许CPU同时取指和取操作数,且由于一般指令线宽于数据线,指令较同类冯.诺伊曼结构微处理器指令执行效率更高,速度也更快。它的缺点是增加成本和设计的复杂度。
属于这种结构的微处理器以DSP和ARM为代表,如Microchip公司的PIC系列、 Zilog公司的Z86系列、Atmel公司的AT90S系列等等。
冯·诺依曼结构
数据空间和地址空间是合并的,这种结构的微处理器,优点是指令丰富,功能较强,但取指令和取数据不能同时进行,指令运行速度受到限制。
属于这种结构的微处理器有: Intel公司的8086系列、Motorola公司的M68HC系列、 Atmel公司的AT89系列等等。
改进型哈佛结构
就目前的微机而言,人们已经在哈佛结构和冯诺依曼结构的基础上,在CPU内部增加了缓存(Cache),分为D-Cache和l-Cache,分别用于存储数据和程序指令;在CPU外部则使用RAM存储数据和指令。只有需要改变数据时,缓存才会到RAM中加载新的数据。
实际上,这种结构从内部看属于哈佛结构,从外部看则属于冯诺依曼结构, 这是一种混合式结构,而现在的计算机CPU大多采用这样的结构, 已经不再是纯粹的冯诺依曼结构或者哈佛结构了。
综上,一般DSP都是采用改进型哈佛结构,即分开的数据空间和地址空间不只一条,而是多条。其结构特点如下:
(1)使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
(2)具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;
(3)两条总线由程序存储器和数据存储器分时共用。
与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:
(1).使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
(2).使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
冯诺依曼结构主要用于通用计算机领域,需要对存储器中的代码和数据频繁的进行修改,统一编址有利于节约资源。
哈佛结构主要用于嵌入式计算机,程序固化在硬件中,有较高的可靠性、运算速度和较大的吞吐量。
冯.诺依曼结构核心设计思想主要体现在如下三个方面:
- 程序、数据的最终形态都是二进制编码,程序和数据都是以二进制方式存储在存储器中的,二进制编码也是计算机能够所识别和执行的编码。(可执行二进制文件:.bin文件)
- 程序、数据和指令序列,都是事先存在主(内)存储器中,以便于计算机在工作时能够高速地从存储器中提取指令并加以分析和执行。