冯·诺伊曼计算机的诞生

引用于冯·诺伊曼计算机的诞生

设计一台通用计算机(以运算器为核心)

当前计算机以存储器为核心
早期计算机只能解决特定的问题

早期的计算机都是专用计算机,是不可编程的, 例如常见的计算器, 虽然能轻松的完成基本数学运算, 但是你要是想拿来做文字处理, 表格处理,或者玩游戏那是肯定不可能了。
因为这些机器内部的电路和一个特定的程序密切相关, 对于这些计算机来讲, 重新编程就意味着完全从头开始设计, 加工,制造一个全新的机器出来,当然新的机器依然是专用的。

图灵机的提出使得设计通用计算机的设想变得可行

首先你要考虑的是,这样的计算机在理论上是否可行, 如果理论上都造不出来,那就别白费力气了。 你最不擅长的就是数学理论, 苦思冥想还是找不到答案,突然有一天看到一篇划时代的论文,就像跌入山崖而无意中得到一本武林秘籍一样让你欣喜若狂。
这个论文叫做《可计算数字及其在判断性问题中的应用》, 作者阿兰 · 图灵, 他在论文中提出了一个假想的机器, 后来被称为图灵机。
个机器看起来如此的简单, 只有一个无限长的纸带,一个读写头 ,一个状态集合,再加上一个规则表(程序)。
但是你敏锐的意识到: 这个机器证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构。
理论问题被解决了, 那就回到通用计算机的设计问题上来吧, 既然要“通用” , 那肯定要允许大家写各种各样的程序, 计算机的硬件设备肯定不能和某个程序绑定。
在这里插入图片描述

宾夕法尼亚大学的巨型计算机说明除了通用性,程序和数据的输入输出是个大问题

一个偶然的机会, 你听说宾夕法尼亚大学发明了一个叫做ENIAC的机器,这个拥有1.8万个真空管, 长30多米,重大30吨的庞然大物每秒竟然能执行5000次加法和400次乘法,让你惊叹不已。 但是你仔细研究以后就发现了它的一个重大缺陷:
编程极为困难, 虽然这台计算机支持顺序,循环,分支,子程序等操作, 但是却是用电路板上的开关来输入的。 想把一个程序输入计算机通常得好几周: 程序首先要在纸上写出来, 然后在花好几天的时间来操作开关和电缆, 还要验证和调试, 但是这一切做好以后,运行时间可能只有几分钟。
由于设计和输入程序的时间开销太大, 计算机运行速度快的优势就被抵销了。 如果程序切换以后,想再次运行上一个程序, 还得重新把开关和电缆操作一遍, 让人抓狂。 如果能把程序存储下来该多好, 需要运行了,找到它运行就行了。
存储程序, 这并不是一个全新的想法, 当然,想把程序存储下来,需要定义一下机器的“指令集”, 这样各种各样的程序才用指令集中的指令描述出来, 方便存储。

内存因此引入来存储程序和数据

在这里插入图片描述
在这个结构中一个程序由若干指令组成,

在运行之前, 要被“放到“某个地方, 你把这个地方称为存储器(内存), 可以把内存比喻成包含一个个格子的东西, 每个格子里放一条指令。

一个叫控制器的东西去读取“格子“中这个程序的第一条指令,分析指令到底要做什么事情, 然后运算器去执行这个指令,执行完第一条就接着执行第二条, 如此一直运行下去…

控制器和运算器是如此紧密的在一起工作,你决定把它叫做处理器。

很多程序不仅仅是简单的运算,大部分情况下还要把运算的结果放回到内存的“格子”中, 现在有个问题困扰着你, 内存中已经有指令了,也要把数据放到这里吗?

经过谨慎的思考,你们做了一个艰难的决定:把指令和数据放到同一个内存中!  这样一来处理器在同一时刻,要么是在读取指令, 要么是在存取数据,
两件事不可能同时进行, 这自然带来了一些性能的问题。

但是你坚信这样的设计结构简单,成本低,容易实现,一定要坚持。

发布了149 篇原创文章 · 获赞 0 · 访问量 2897

猜你喜欢

转载自blog.csdn.net/yunxiu988622/article/details/105348427