一个偶然的机会, 你听说宾夕法尼亚大学发明了一个叫做ENIAC的机器,这个拥有1.8万个真空管, 长30多米, 重大30吨的庞然大物每秒竟然能执行5000次加法和400次乘法,让你惊叹不已。 但是你仔细研究以后就发现了它的一个重大缺陷: 编程极为困难, 虽然这台计算机支持顺序,循环,分支,子程序等操作, 但是却是用电路板上的开关来输入的。
想把一个程序输入计算机通常得好几周: 程序首先要在纸上写出来, 然后在花好几天的时间来操作开关和电缆, 还要验证和调试, 但是这一切做好以后,运行时间可能只有几分钟。 由于设计和输入程序的时间开销太大, 计算机运行速度快的优势就被抵销了。
如果程序切换以后, 想再次运行上一个程序, 还得重新把开关和电缆操作一遍, 让人抓狂。
如果能把程序存储下来该多好, 需要运行了,找到它运行就行了。
存储程序, 这并不是一个全新的想法, 当然,想把程序存储下来,需要定义一下机器的“指令集”, 这样各种各样的程序才用指令集中的指令描述出来, 方便存储。
你决定和ENIAC的Eckert and Mauchly 一起工作, 改进ENIAC , 同组的还有一个叫做冯·诺伊曼的大科学家作为顾问, 要知道冯·诺伊曼可是一个全才科学家, 在量子理论, 集合论,博弈论都有重大贡献, 他深厚的数学功底, 探索问题和综合分析的能力给了你们极大的帮助。
针对ENIAC的缺点, 你们提出了一个全新的计算机体系结构:
在这个结构中一个程序由若干指令组成, 在运行之前, 要被“放到“某个地方, 你把这个地方称为存储器(内存), 可以把内存比喻成包含一个个格子的东西, 每个格子里放一条指令。
一个叫控制器的东西去读取“格子“中这个程序的第一条指令,分析指令到底要做什么事情, 然后运算器去执行这个指令, 执行完第一条就接着执行第二条, 如此一直运行下去......
控制器和运算器是如此紧密的在一起工作,你决定把它叫做处理器。
很多程序不仅仅是简单的运算,大部分情况下还要把运算的结果放回到内存的“格子”中, 现在有个问题困扰着你, 内存中已经有指令了, 也要把数据放到这里吗?
经过谨慎的思考,你们做了一个艰难的决定:把指令和数据放到同一个内存中! 这样一来处理器在同一时刻,要么是在读取指令, 要么是在存取数据, 两件事不可能同时进行, 这自然带来了一些性能的问题。
但是你坚信这样的设计结构简单,成本低,容易实现,一定要坚持。
为了做人机交互, 还得有输入设备和输出设备来做辅助。
你们根据电子元件的特点, 抛弃了ENIAC所使用的10进制, 转而使用二进制, 采用布尔代数的逻辑运算, 这极大的简化了电路的设计。
后来冯·诺伊曼根据这个设计写了一篇草稿论文,叫做《First Draft of a Report on the EDVAC》, 很不幸,这份长达101页的草稿论文上只有一个人的名字:冯·诺伊曼 , 其他人,包括ENIAC的Eckert and Mauchly 都被忽略了。
这份论文广为流传, 深深的影响了下一代计算机的设计, 人们把遵循这个结构的计算机称为冯·诺伊曼计算机。
一个冯·诺伊曼计算机被抽象成5大组成部分: 控制器、运算器、存储器、输入设备、输出设备。 将近70过去了, 它仍然统治着现代计算机 , 时间证明了这是一个伟大的体系结构 。
在冯·诺伊曼的时代,人们根本无法预料到光盘, 网络,鼠标, 键盘,触摸屏这些东西 , 但是他的结构经过几十年以后仍然能够支持这样的扩展, 我想这就是是抽象的威力吧。
我记得上高中的时候, 物理老师说牛顿提出三定律以后, 经典物理学的大厦已经建立起来的, 后人的工作就在在楼内楼外做点装饰而已 ,直到相对论和量子力学的出现。
而冯·诺伊曼结构提出后, 计算机这么多年来基本没什么变化, 无非就是追究速度更快, 容量更大, 显示更好而已, 不知道量子计算机是不是未来的突破?
(完)
https://chuansongme.com/n/920668851132