zoukankan      html  css  js  c++  java
  • 冯·诺伊曼计算机的诞生_码农翻身

    一个偶然的机会, 你听说宾夕法尼亚大学发明了一个叫做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

  • 相关阅读:
    LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
    精帖转载(关于stock problem)
    LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)
    LeetCode 121. Best Time to Buy and Sell Stock (stock problem)
    LeetCode 120. Triangle
    基于docker 搭建Elasticsearch5.6.4 分布式集群
    从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
    Harbor实现容器镜像仓库的管理和运维
    docker中制作自己的JDK+tomcat镜像
    docker镜像制作---jdk7+tomcat7基础镜像
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10219664.html
Copyright © 2011-2022 走看看