什么是冯·诺依曼结构:冯·诺依曼结构的特点特征

最早的计算机仅内含固定用途的程序。现代的某些计算机依然维持这样的设计方式,通常是出于简化或教育目的考虑的。例如,一个计算机仅有固定的数学计算程序,它不能被拿来当作文书处理软件,更不能拿来玩游戏。若想要改变此机器的程序,必须更改线路、更改结构,甚至重新设计此机器。当然最早的计算机并没有设计成那种可编程化的。当时所谓的“重写程序”很可能指的是纸笔设计程序步骤,接着制订工程细节,再进行施工将机器的电路配线或结构改变。

而储存程序型计算机的概念改变了这一切。借由创造一组指令集结构,并将所谓的运算转化成一串程序指令的执行细节,而让此机器更有弹性。接着将指令当成一种特别形态的静态资料,一台储存程序型计算机可轻易改变其程序,并在程控下改变其运算内容。

冯·诺依曼结构与储存程序型计算机是互相通用的名词,其用法将于下述。而哈佛结构则是一种将程序资料与普通资料分开储存的设计概念。

储存程序型概念也可让程序执行时自我修改程序的运算内容。本概念的设计动机之一就是可让程序自行增加内容或改变程序指令的内存位置,因为早期的设计都要使用者手动修改。但随着索引暂存器与间接位置存取变成硬件结构的必备机制后,本功能就不如以往重要了。而程序自我修改这项特色也被现代程序设计所弃用,因为它会造成理解与除错的难度,且现代中央单片机的管线与快取机制会让此功能效率降低。

从整体而言,将指令当成资料的概念使得组合语言、编译器与其他自动编程工具得以实现;可以用这些“自动编程的程序”以人类较易理解的方式编写程序;从局部来看,强调I/O的机器,如Bitblt,想要修改画面上的图样,以往认为若没有客制化硬件就办不到。但之后显示这些功能可以借由“执行中编译”技术而有效实现。

此结构当然有所缺陷,除了下面将述的冯·诺依曼瓶颈之外,修改程序很可能是具伤害性的,无论无意还是设计错误。在一个简单的储存程序型计算机上,一个设计不良的程序可能会伤害自己、其他程序甚或是操作系统,导致死机。缓冲区溢位就是一个典型例子。而创造或更改其他程序的能力也导致了恶意软件的出现。利用缓冲区溢位,一个恶意程序可以覆盖呼叫堆栈(Callstack)并覆写程序码,并且修改其他程序档案以造成联锁破坏。内存保护机制及其他形式的存取控制可以保护意外或恶意的程序码改动。

冯·诺依曼结构单片机具有以下几个特点:

(1)必须有一个存储器。

(2)必须有一个控制器。

(3)必须有一个运算器,用于完成算术运算和逻辑运算。

(4)必须有输入设备和输出设备,用于进行人机通信。另外,程序和数据统一存储,并在程序控制下自动工作。

版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。http://www.apmygs.com/1622.html
返回顶部