读《Jonathan von Neumann and EDVAC》

读了一遍,只明白了个大概意思,没看懂作者要说什么,似乎是在讲历史。这篇文章的主要目的是介绍冯.诺依曼在EDVAC上的贡献,以及对摩尔定律的影响。
这篇文章首先大概地介绍了下冯.诺依曼的生平,他是个天才,不到23岁就拿到了两个PHD,还是在不同的地方拿到的。当然,那个时代的PhD不能和现在的比,但他无疑是个出类拔萃的人物,其数学功力尤其深厚,我想这也是他能在多个领域都有非凡贡献的一个重要原因吧。
冯.诺依曼是通过Goldstine得知ENIAC的,那时ENIAC已经快完成了,而ENIAC的设计者,Mauchly和Ekcert在制造ENIAC的经验基础上有了EDVAC的想法,他们同诺依曼进行了讨论,然后诺依曼就将他的一些想法写了篇手稿,并寄给了其他人。
他们在设计计算机的时候并没有考虑效率的问题,因为他们遵循一条工程项目的重要原则:先将其设计出来,然后才去优化。在软件设计中这个原则也很重要,我记得有个计算机大牛说过“过早的优化时万恶之源”。另外,我觉得优化时不要使用过多讨巧的东西,因为这些讨巧的东西往往会加入一些默认的条件,而这些条件可能会限制未来的扩展,降低灵活性。
冯.诺依曼的那篇文章中最大的贡献是提出了“stored program”的概念。我想指出的是,这个概念并不是由于苹果之类的东西砸到他头上他才想出来的,而是跟Mauchly和Ekcert讨论后经过思考得出来的,其实Mauchly和Ekcert也有了这个想法,这个想法是他们在制造ENIAC的过程中想出来的。我猜想,冯。诺依曼的数学背景使得他的抽象思维很强,将ENIAC进行抽象后也许就会发现很多改进的地方。因此,抽象能力是一个很重要的能力,他能是你很快地抓住事情的本质,并且将复杂的情况简单化,能更快地找到事情的关键所在。另外,实践也异常重要,在实践的过程中引发的思考尤为珍贵,因此在动手的过程中多思考,是极其重要的。
“stored program”的一个核心思想是将数据和指令都放到内存中,看做是一样的。指令也可以像数据一样被修改。指令被修改,也就意味着机器“可编程”(programmable)。最初的计算机是没有程序的,程序时固化的电路,通过像这个电路输入一些不同的电讯号,然后这个电路就输出一些结果。想象一下,一个这种类型浏览器就是一个电路板(是不是记起了街机?)
这种结构给计算机带来了很大的灵活性,但也存在一个制约现代计算机发展的瓶颈:“Von Neumann Bottleneck”。这是由CPU计算速度和CPU从内存中读取数据的速度之间的巨大差距造成的。“Von Neumann Bottleneck”这个概念是由John Backus在1977年的图灵奖颁奖典礼上说的,原文如下:
    "Surely there must be a less primitive way of making big changes in the store than by pushing vast numbers of words back and forth through the Von Neumann bottleneck. Not only is this tube a literal bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual units of the task at hand. Thus programming is basically planning and detailing the enormous traffic of words through the Von Neumann bottleneck, and much of that traffic concerns not significant data itself, but where to find it."
目前人们已经采取了很多工程学的手段来缓解这个瓶颈的影响,主要有这几种方法:
  • 在CPU和内存之间使用缓存(这个缓存的大小对机器性能影响挺大,因此在买机器时要注意)
  • 使用不同的缓存来存储指令和数据,从而将数据和指令分开(哈佛结构)
  • 使用分支预测算法
我觉得数据和指令分开的结构在一些特殊应用中还是很有效的,未来的计算机世界可能会这样:很多适用于特殊用途的大型计算机提供服务,用户则仍使用通用的计算机。
下图为在维基百科上的冯.诺依曼的结构图

读《Jonathan von Neumann and EDVAC》相关推荐

  1. 读《Android 安全架构深究》

    Android 安全架构深究 安全是一个非常立体而丰富得概念.在不同的场景下,安全有着不同的含义. 比如对于网络传输,安全指的是传输的数据不会被其他人看到.篡改.伪造及仿冒,传输的数据不会遭到破坏,数 ...

  2. 《最强Android书 架构大剖析》读书笔记

    文章目录 第一章 Android 体系结构的变革之路 1.2 Android系统源码目录 与Linux的异同 Android的框架 原生二进制可执行文件 Android 的原生库 核心(core)库 ...

  3. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  4. 抖音、美团等大厂千万级用户的Android客户端架构演进之路—

    在移动开发中,对开发者来说不同的人具有不同的能力.就像读一本书一样,一千个读者,有一千个哈姆雷特.但不管怎样,只要你是个软件开发者你就必须学习windows或Linux等操作系统的运行原理.Andro ...

  5. Android 图形架构之一 ——概述

    前言 本系列的文章,可以让你明白,一个View最终是如何显示到屏幕上的,从应用层到硬件抽象层.对分析app的卡顿,掉帧等 有很大帮助. 由于图形架构的涉及到的代码量很大,所以本篇先来个总体的概述,有个 ...

  6. Android display架构分析-SW架构分析(1-8)

    参考: Android display架构分析二-SW架构分析 Android display架构分析三-Kernel Space Display架构介绍 Android display架构分析四-m ...

  7. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

  8. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  9. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  10. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

最新文章

  1. NWERC2020J-Joint Excavation【构造,贪心】
  2. 从GWT开发人员的角度概述Scala.js
  3. 2013腾讯编程马拉松初赛(3月20日)
  4. 基本类型理解巩固及补码原理总结
  5. 伪验证码(含随机验证码方法)js+css
  6. Java正则匹配美元表达式_Java中的正则表达式“ $”(美元)元字符
  7. -lavutil -lavcodec -lavdevice -lavfilter -lavformat链接失败,换用-lffmpeg
  8. java对接微信公众号
  9. 修复windows系统快捷方式图标变成白色的问题
  10. 虚拟机中【临时使用】泰阿红队单兵作战系统(TaieRedTeamOS)
  11. 计算机学情分析案例,小学信息技术课学情分析
  12. PHP鲜花销售管理系统毕业设计
  13. caffe 人脸关键点检测_密集人脸关键点检测
  14. 计算机英语这门课上后感1000,英语教师听课心得体会作文
  15. php对接腾讯云直播,聊天,im,云录制产生回放
  16. win 32学习笔记(三) 消息队列
  17. 化工厂人员定位的实施,新导化工厂人员定位带来的效果
  18. 16届智能车竞赛单车拉力国二经验分享
  19. JS中设计模式的深入理解
  20. 在德国观看中文视频的免费网站总结--涵盖几乎中文各类所有视频

热门文章

  1. k8s节点NotReady状态
  2. 富文本编辑器导出html静态页面和pdf格式文件
  3. Ubuntu订阅电信物联网平台
  4. tan(x)的四阶麦克劳林级数
  5. 工作十年的程序员,却拿着毕业三年的工资……
  6. opencv绘制椭圆
  7. 【每周CV论文推荐】初学基于GAN的三维图像生成有哪些经典论文需要阅读
  8. 招商银行的“金融+知识”:知其然,更要知其所以然
  9. 使用jquery easyui datetimebox 设置默认时间
  10. codeforces 1520E. Arranging The Sheep(1400)