哈佛结构那么好?为什么冯诺依曼更流行?
1903年12月28日,在布达佩斯诞生了一位神童,这不仅给这个家庭带来了巨大的喜悦,也值得整个计算机界去纪念。正是他,开创了现代计算机理论,其体系结构沿用至今,而且他早在40年代就已预见到计算机建模和仿真技术对当代计算机将产生的意义深远的影响。他,就是约翰·冯·诺依曼(John Von Neumann)。 最简单的来说 他的精髓贡献是2点:2进制思想与程序内存思想。 1946年6月美籍匈牙利科学家冯诺依曼教授发表了“电子计算机装置逻辑结构初探”的论文。并设计出了第一台“存储程序”计算机EDVAC(埃德瓦克),即离散变量自动电子计算机(The ElectronicDiscrete Variable Automatic Computer).这种结构的计算机为现代计算机体系结构奠定了基础,成为“[url=]冯诺依曼体系结构[/url]”。 冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。 其主要内容是: 1.计算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成。 2.程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。 3.控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令地执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。 人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从EDVAC(ENIVAC并不是冯诺依曼体系)到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。 根据冯诺依曼体系结构构成的计算机,必须具有如下功能: 把需要的程序和数据送至计算机中。 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。 能够按照要求将处理结果输出给用户。
为了完成上述的功能,计算机必须具备五大基本组成部件,包括: 输入数据和程序的输入设备; 记忆程序和数据的存储器; 完成数据加工处理的运算器; 控制程序执行的控制器; 输出处理结果的输出设备 。 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构一种并行体系结构,它的主要特点。 将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。 哈佛结构的计算机由CPU、程序存储器和数据存储器组成,程序存储器和数据存储器采用不同的总线,从而提供了较大的存储器带宽,使数据的移动和交换更加方便,尤其提供了较高的数字信号处理性能。 哈佛结构与冯.诺曼结构处理器相比,处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
改进的哈佛结构,其结构特点为:
1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;
2、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输; 哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11。TI的DSP等。
冯·诺依曼结构和哈佛结构是计算机体系结构中的两种不同设计范例,它们在存储器组织和数据传输方面存在一些主要区别。 看上去冯·诺依曼结构全是劣势,没有什么优势,但是冯·诺依曼结构却被更广泛的应用,这是为什么?
冯·诺依曼结构虽然在一些方面存在一些劣势,但也有其优势,否则它不会成为通用计算机体系结构的主流。以下是一些冯·诺依曼结构的优势: 通用性: 冯·诺依曼结构是一种通用结构,适用于多种不同类型的计算任务。这种灵活性使其成为通用计算机的理想选择,可以执行各种不同的应用程序。 简单性: 相对于哈佛结构,冯·诺依曼结构更简单。它只需要一个存储器来存储指令和数据,减少了硬件的复杂性。这有助于降低系统的设计和制造成本。 资源共享: 冯·诺依曼结构中的指令和数据共享同一存储器,这意味着它们可以更容易地共享数据,提高了灵活性和编程的便利性。 易于扩展: 由于其简单性和通用性,冯·诺依曼结构易于扩展。新的指令和数据可以相对容易地添加到存储器中,使系统能够适应不断变化的需求。 广泛应用: 冯·诺依曼结构是当前大多数通用计算机体系结构的基础,因此在计算机科学和工程中有广泛的应用和支持。
尽管哈佛结构在一些方面可能更适合特定应用,但冯·诺依曼结构的通用性和简单性使其在大多数情况下成为首选。选择体系结构通常取决于特定应用的需求和性能要求。冯·诺依曼结构和哈佛结构各有优劣,选择哪种取决于特定应用的要求和设计目标。 |