您的位置:首页 > 其它

冯·诺依曼体系结构与哈佛体系结构

2015-08-14 21:15 344 查看

一、 冯·诺依曼体系结构(Von Neumann Architecture )

冯·诺依曼体系结构用存储程序方式,指令和数据不加区别混合存储在同一个存储器中。具体定义到处可以查在这里不赘述。主要说下特点:

(1) 一律用二进制数表示数据和指令。

(2) 顺序执行程序。执行前,将需要的程序和数据先放入存储器(PC为内存)。当执行时把要执行的程序和要处理的数据按顺序从存储器中取出指令一条一条地执行,称作顺序执行程序。

(3) 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。



可以参考上图,冯·诺依曼原始提出的核心是以运算器为核心,现在基本是都是以存储器为核心。这个图上很清楚不多解释了。

二、 哈佛体系结构(Harvard architecture)

哈佛结构是一种并行体系结构,将程序指令存储和数据存储分开的存储器结构。主要特点:程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的四条总线:程序的数据总线与地址总线。用一个简单的图对比:



三、改进型的哈佛结构(ModifiedHarvard Architecture)

哈佛结构是通过两个独立的总线(4根线)分别访问程序存储器和数据存储器的,而实际上,绝大多数现代计算机使用的是改进型哈佛结构,指令和数据共享同一个地址空间,但缓存是分开的。该结构体系具有一条独立的地址总线和一条独立的数据总线,利用唯一地址总线访问程序存储模块和数据存储模块,唯一数据总线完成程序存储模块或数据存储模块与CPU之间的数据传输;两条总线由程序存储器和数据存储器分时共用。

四、 各种体系比较

有朋友说:“相对于冯·诺依曼结构,哈佛结构更加适合于那些程序固化、任务相对简单的控制系统”。这个是不太正确的。
首先,哈佛结构目的是为了减轻程序运行时的访存瓶颈,也就是提高吞吐量。原始的冯·诺依曼体系结构是一种串行的处理方式,通过引入流水线技术(Pipeline)提高吞吐量。而流水线技术与并行处理有所区别,流水线是在顺序指令流计算机中实现处理时间重叠的技术,因此流水线的并行处理是指完成一条指令的各个部件在时间上是可以同时重叠工作。因此,各部件同时处理是针对不同指令而言的,各部件分别同时为多条指令的不同部分(step、stage)进行工作,以提高各部件的利用率来提高指令的平均执行速度。但是这样虽然提高了系统的速率,由于流水线结构使得不容易计算程序运行的时间,对一些时序要求很严的情况,该结构还是存有弊端的。所以在一些实时性很强的嵌入式系统采用哈佛结构可以高速数据处理,同时读取指令和数据,大大提高了数据吞吐率,保证了系统的可靠性。
其次,哈佛结构可以用来完成动态程序,任务复杂的系统要求。虽然现在我们的手机是一个RAM内存,但是从ARM9开始处理器内部已经开始有哈佛结构设计,同样可以完成各类传统PC的任务。只是在DSP等经常使用卷积运算的处理器中,一条指令同时取两个操作数,在流水线处理时,同时还有一个取指操作,如果程序和数据通过同一条总线访问,取址和取数必会产生冲突,而这对大运算量的循环的执行效率是很不利的。哈佛结构能基本上解决取指和取数的冲突问题。
现代计算机系统中都引入了Cache(高速缓存)结构,无论是单极缓存还是多级缓存,其在L1 Cache层面,指令Cache与数据Cache通常分离,而在其后的Cache层次中,指令与数据混合存放。(详尽介绍请阅读http://blog.sina.com.cn/s/blog_6472c4cc0102dvbx.html)哈佛结构中数据存储器与程序代码存储器分开,各自有自己的数据总线与地址总线,取操作数与取指令能同时进行。但这是需要CPU提供大量的数据线,因而很少使用哈佛结构作为CPU外部构架来使用。对于CPU内部,通过使用不同的数据和指令cache,可以有效的提高指令执行的效率,因而目前大部分计算机体系都是在CPU内部的使用哈佛结构,在CPU外部使用冯·诺依曼结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: