人造神:冯 诺依曼体系 von Neumann architecture

VII.ChariotVII.Chariot

冯 诺依曼体系是所有现存的计算机,单片机的基础。

它的结构图如上图所示,可以看到,它包含了输入输出的概念。冯诺依曼体系的三个显著特征是:第一,数据传输均为二进制编码;结构上可以分出储存单元,控制单元,计算单元;第三,通过地址这一概念配合存取操作。

假设这里有一台配备了数字键盘的计算器,当它开机时,控制器通入电源为各个部件通电,键盘就是输入模块,显示器是输出模块,当用户键入数字和运算符的时候,控制器把键入的内容储存到临时储存器里,并且赋予地址,方便查找。当接收到计算的信号时,控制器操作计算单元进行计算并且储存结果,同时在显示器上显示结果。一部小小的计算器,它的结构和原理也都非常复杂,要知道相对于艾尼阿克那种巨型计算机,把计算器做得如此小,如此高速,是非常有挑战的事情。

当我们使用word,excel等等软件的时候,计算机的工作序列其实是一样的,只不过大多数计算器没有供长时间储存的单元,储存的数据在完全断电以后就会丢失,在下一次启动的时候会被初始化,计算机则稍微复杂一些,这类暂存器称之为随机存取存储器(英语:Random Access Memory,RAM),而磁盘则作为长期储存器,能够在断电以后也保存着数据,不会丢失。当在word里键入字符的时候,实际上是在RAM里储存字符对应的二进制编码,当保存的时候,就把这些编码从内存拷贝到硬盘上,以作长期储存,然后,操作系统会把word工作使用的内存释放掉,给其他程序留出空间。

当然这只不过是比较理想和精简的架构,实际情况要复杂得多,word也有预防各种意外情况发生的能力,软件开发者提前考虑到了这些意外,并设计了相关的算法,安排进处理序列中。比如,为了防止断电时失去全部还没有保存的文件,word会周期性地自动保存,但是并不写入这个文件,而是word自己留个副本,当断电发生的时候,重启电脑以后word就会把它偷偷藏起来的副本拿出来问你要不要恢复一个。这些复杂的行为,脱离冯诺依曼结构就无从说起。

在冯诺依曼体系下,二进制和二元论的影子依然是清晰可见,输入与输出,控制与计算,存储与删除。在储存中,存储单位也是有名有实的,名就是内存地址,实就是存储的数据。

控制单元,计算单元和存储单元的互相工作有其规则和序列,这些规则里定义了这些单元应该如何操作,称之为指令集。微机时代开始的时候,指令集的概念就已经清晰可见了,有效的指令集内容包括,控制流,算数逻辑和数据存储。刚好对应上的是冯诺依曼体系中的三种单元,控制器,存储器和计算器。指令集产生的效果与算法很类似,IBM公司的早期机器许多实用的是复杂指令集,后来剔除了一些没有用的指令,产生了精简指令集。在后期计算机中,处理文字,处理图形,均有优化了适应性的指令集。举个不是很现代的例子,windows xp和windows ce都是很有历史的系统平台了,windows ce看起来界面跟xp挺类似的,但是它却是一种嵌入式系统,能够在更小更低的环境下运作,其中一个原因就是系统使用的指令集不一样。

再举一个内存管理的例子来进一步观察冯诺依曼结构。android和ios系统运行的时候,他们的内存管理是十分不同的,ios的后台程序,实际上被冻结了,也就是从内存中取出,存在磁盘上,从而为当前程序提供更多运行内存。除了背景同步,信息推送等服务会被允许常驻内存,其他应用成为后台的时候都会被冻结。而android运行的时候,内存能装多少就装多少,当内存不够的时候就把比较早开启的程序,释放掉。在不同的内存管理机制下,ios和android系统就体现出不同的性能和表现。从冯诺依曼体系来理解,就是控制器控制方案的不同造成这种变化,存储器和计算器其实都没有区别。

冯诺依曼体系中的内存地址的概念直接就形成了虚拟内存的机制。在windows下,虚拟内存被称为页面文件。早期计算机的物理内存十分宝贵,所以需要把一部分磁盘当作内存来用,这部分磁盘称之为虚拟内存。当一部分内存文件长期不用的时候,操作系统就会把它们从RAM里取出来,设个地址存在磁盘里,避免内存溢出。当重新需要用这些东西的时候,就按照物理内存里面记录的地址,重新去磁盘找到这些文件,重新把它们加载到内存中。观察冯诺依曼结构的示意图就能明白,控制器和运算器只能直接跟内存,物理内存打交道。虚拟磁盘提高了内存的实际可用空间,但是却降低了整个系统的效率,因为数据在物理内存和虚拟内存中来来去去,十分耽误时间。

有人说过,人画的神就像人,如果让马画他的神,一定长得像马。人所构思的计算机伟大蓝图,也能找到心理学的影子,控制器就是人脑的决策机制,而指令集就是人的BVR,价值观,信念,规则;计算器就是人脑的逻辑分析功能,存储器则代表了人的记忆和经验。只不过在记忆和经验的体系下,存储的是更加复杂的信息,没法区分出记忆的地址和实际内容,如果非要匹配的话,人类的象征大概就是内存地址,象征所指向的实体则是数据本体。但是由于记忆是俨然的网络结构,一个象征可以指代许多种实体,一个实体在不同的环境下又可以导出不同的象征。

可以期待,计算机能做越来越多的工作以后,会变得越来越像人。但是如果要达到人类的思考,或许这个架构还可以优化。未来的计算机或许能够采用更加智能的冯诺依曼架构2.0 成为人类更加出色的工作生活伙伴。

文章被以下专栏收录
还没有评论
推荐阅读