第七章 现代数字计算机的特征
大型数字计算机的结构,更加复杂。它由“作用”器官和具有“记忆”功能的器官组成。对于记忆器官,我将把“输入”和“输出”的器官都包括在内,虽然这在实践中还不是普遍应用了的。
作用器官是这样的。第一,这些器官进行基本的逻辑操作:读出叠合,把各个脉冲结合起来,并可能也要读出反叠合(此外,就不需要具有再多的功能了。虽然有时也还有更复杂的逻辑运算器官)。第二,这些器官可以再产生脉冲:恢复逐渐消耗的能量;或只把机器的这部分的脉冲,简单地提高到另一部分的较高的能量水平上面来(这两种功能都叫做放大)。有些器官,还可以恢复脉冲所需要的波形和同步(使之在一定的允差和标准之内)。请注意,我刚才所说的第一种逻辑运算,正是算术运算的基本要素(参阅上文)。
作用元件,速度的问题
所有上述的功能,从历史顺序上说,是由下列元件来完成的:电—机械继电器,真空管,晶体二极管,铁磁芯,晶体管,或各种包括上述元件的小型线路。继电器大约可以达到每个基本逻辑动作需要10-2秒的速度。真空管则可以把速度提高到10-5到10-6秒的数量级(在最佳的情况下,可达到10-6秒的一半或四分之一)。铁磁芯和晶体管等,即被归类为固态装置的元件,大约可以达到10-6秒的水平(有时可达10-6秒的几分之一);而且差不多可扩展到每基本逻辑动作只需10-7秒的速度领域内,甚至还可能更快一些。其他还有一些装置(我们这里不拟讨论了),可以使速度更进一步提高。我预期,在下一个十年,我们有可能达到10-8至10-9秒的速度水平。
所需的作用元件的数目
在大型现代计算机中,作用器官的数目,随计算机类型之不同而各异,大约有3000个到30000个。在其中,基本的算术运算通常是由一种组件来完成的(更准确地说,是由一组或多或少地合并起来的组件来完成的)。它叫做“算术器官”。在一个大型的现代计算机中,这个器官,大约包括从300个到2000个的作用元件,随形式不同而定。
我们在下面还要说到,若干作用器官的一定组合,可用来完成某些记忆的功能。一般地说,这需要200个到2000个作用器官。
最后,适当的“记忆”集合,需要有辅助的子组件,它由作用器官组成,用以为记忆集合服务和管理它们。对于那些不包括作用器官的记忆集合来说(详见后文。用该处的术语来说,这是记忆分级的第二级水平),这个功能可能需要300至2000个作用器官。对于整个记忆的各个部分来说,相应需要的辅助的作用器官,可能相当于整个计算机作用器官的50%左右。
记忆器官的存取时间和记忆容量
记忆器官属于几种不同的类别。据以分类的特征是“存取时间”。存取时间可定义如下:第一,存取时间是存储已在计算机其他部分出现的数的时间(通常是在作用器官的寄存器中出现的,见下文)。或者是移出记忆器官中已经存入的数的时间。第二,当被“询问”时,记忆器官对机器的其他部分,“重述”已经存入的数所需要的时间。这里所说的机器的其他部分,是指接受这个数的元件(通常是指作用器官的寄存器)。为方便起见,可以把这两个时间分别说明(叫做“存入”时间或“取出”时间);或者就用一个数值,即用这两个时间中较大的一个来代表,或者用它们的平均数。再者,存取时间可能变化,也可能不变化,如果存取时间并不取决于记忆地址,它就叫做“随机存取”。即使存取时间是可变的,我们也只采用它的一个数值,通常是用它的最大值,或用它的平均值(当然,存取时间的平均值,将取决于待解算问题的统计性质)。不管怎样,为了简化起见,我在这里将只使用一个单一的存取时间值。
以作用器官构成的记忆寄存器
记忆寄存器可以用作用器官构成。它们具有最短的存取时间,但却是最费钱的。这样的一个寄存器,连同它的存取设备,对每一个二进制数字(或每一个正号、负号),就需要至少是4个真空管的线路(如用固态元件时,可以少一点儿)。而对每个十进制数字来说,真空管的数目还要大4倍以上。我们上面讲过的12位十进制数字(和正、负符号)的系统,则一般需要196个真空管的寄存器。但另一方面,这样的寄存器具有一个或两个基本反应的存取时间,这些时间和其他各种可能的时间比较起来,还是非常快的。同时,有几个这样的寄存器可以为整个装置带来一定的经济效益;对于其他形式的记忆器官来说,必须用这种作用器官构成的寄存器,作为“存入”和“取出”的器官;而且,作为算术器官的一部分,也需要有一个或两个(某些设计中甚至还需要三个)的这种寄存器。总而言之,如果这种寄存器的数目适当的话,它会比我们初看起来的估计要经济一些,同时,在这个范围内,计算机的其他器官也很需要这样的记忆寄存器作为其附属部分。可是,把这种作用器官构成的记忆寄存器,用来配备大容量的记忆器官,看来是不适宜的。而这样大容量的记忆器官是几乎所有的大型计算机都需要的。(请注意,这个观察推论只是适用于现代的计算机,即在电子管时代及其以后的计算机。在此以前的继电器计算机中,继电器就是作用器官,而用继电器构成的记忆寄存器则是记忆的主要形式。因此,请注意,以下的讨论,也请读者了解为仅是适用于现代计算机的。)
记忆器官的谱系原理
如上所述,对于那些庞大的记忆容量,必须运用其他形式的记忆器官。因此,就引入了一个记忆的“谱系”原理(Hierarchic principle)。这个原理的意义可叙述如下:
一个计算机,为了完成它的应有功能(解算要它解答的问题),它需要一定数目的记忆容量,比如说,在一定的存取时间t时,需要记忆N个字。要在存取时间t内提供这N个字,可能存在着技术上的困难,或者在经济上非常昂贵(技术上的困难,也往往是通过昂贵的费用表示出来的)。但是,在这个存取时间t内,可能并不需要提供所有的这N个字,而只需要提供一个相当减少了的数目——N′个字。而且,当在存取时间t内供应了N′个字之后,整个容量的N个字,只是在一个更长的存取时间t″时才需要。这样分析下去,我们可能进一步遇到这样的情况:在一个长于t而短于t″的存取时间内,提供一定的中间容量——即少于N字而多于N′字,可能是最经济的。最普通的方案,是规定一序列的记忆容量N1,N2,…,Nk-1,Nk以及一序列的存取时间t1,t2,…,tk-1,tk。这样的两个谱系的序列,使全部记忆容量划分得更加精确;而存取时间的规定则比较放松了一点。这两个谱系的序列是:N1<N2<…<Nk-1<Nk和t1<t2<…<tk-1<tk;而且在存取时间ti时,需要相应的容量Ni个字,此处i=1,2,…k-1,k。(为了使这两个序列和我们刚才所说的一致,读者应该了解,N1=N′,t1=t,Nk=N,tk=t″。)在这个方案中,每一个i的值,代表记忆谱系的一个水平;记忆的谱系,共有k个水平。
记忆元件,存取问题
在一个现代的大型高速计算机中,记忆谱系的水平总数,将至少是三级,或可能是四级、五级水平。
第一级水平,常常就是指我们在上面讲过的寄存器的水平。这一级的N1,在差不多所有的计算机设计中,都至少是3个字,或者更多一些。有时甚至曾提出要达到20个字。存取时间t1,则是计算机的基本开关时间(或可能是这个时间的两倍)。
第二级的水平,常常是靠专门的记忆器官的帮助来达到的。这些专门的记忆器官,和计算机其他部分用的开关器官不同,和用于上述第一级水平的开关器官不同。这个水平所用的记忆器官,通常须有记忆容量N2,约从几千个字到几万个字(几万个字的容量,在目前还是在设计阶段中)。其存取时间t2,一般比上述第一级水平的存取时间t1长5倍至10倍。
更高级的各级水平,其记忆容量Ni的增加,一般是每级增加10倍左右。存取时间ti的增长,比这还要快一些。但是,同时还须考虑限制和规定存取时间的若干规则(参见后文)。现在就进一步详细讨论这个问题,似乎是过于具体了。
最快速的记忆元件,即专门的记忆器官(不是作用器官,见前述),是某些静电装置和磁心阵列。在目前来看,磁心阵列的使用,肯定居于优势,虽则其他的技术方法(静电、铁—电体等)也可能载入或进入这个领域。在记忆谱系的较高的水平上面,目前使用磁鼓和磁带的最多,磁盘也曾被建议采用并加以探索。
存取时间的概念之复杂性
上面所讲的三种装置,都受特殊的存取规则和限度所制约。磁鼓的各个部分,是顺序地和循环地出现的,以供存取。磁带的记忆容量实际上是无限制的,其各个部分的出现则按照一个固定的直线顺序,需要时,它还可以停下来或反向移动。所有这些方案,都可以和各种不同的安排结合起来,以便使计算机的功能和固定的记忆序列之间得到特定的同步。
任何记忆谱系的最后一级,都必须和外间世界发生关系。所谓外间世界,是计算机所关联的外界,也就是计算机能够直接互通信息的外界,换句话说,就是计算机的输入和输出器官。计算机的输入和输出器官,一般都是用穿孔纸带或卡片;在输出端,当然也有用印刷纸片的。有时,磁带是计算机最后的输入—输出系统,而把它翻译成为人们能够直接使用的媒介(穿孔卡片或印刷纸片)的工作,则是在机器以外进行的。
下面是若干存取时间的绝对值:现有的铁磁芯记忆装置,是5~15微秒。静电记忆装置,是8~20微秒。磁鼓记忆装置,每分钟2500~20000转,即每转24~3毫秒,在这24~3毫秒内,可供应1~2000个字。磁带的速度,已达每秒70000线,即每14微秒1线,一个字约包含5~15线。
直接地址的原理
所有现有的计算机及其记忆装置,都使用“直接地址”。就是说,记忆中的每一个字,都有一个自己的数码地址,作为这个字以及它在记忆中的位置的唯一标志。(上面所说的记忆,是指记忆谱系的各个水平的总体而言。)当记忆的字在读出或写出时,即须明确规定它的数码地址。有时,并不是记忆的所有部分都是在同一时间里能够存取的。(见上述;在多级记忆中,可能不是所有的记忆都在同一时间内被接受的,而是按一定的存取优先规定先后被接受。)在这种情况下,对记忆的存取,取决于在需要存取时计算机的一般状况。可是,对于地址和地址的指定位置,则永远不应该有任何含糊之处。
冯·诺伊曼的后裔在其纪念邮票发行会上的留影。
注 释
【1】 这个积分式,是由数学家Thomas Jean Stieltjes(1856—1896)提出的,故名斯蒂杰斯积分。——译注
【2】 在这节中,冯·诺伊曼使用了“organ”(器官)这个词,在计算机中,这本来可以译为机构或部件。但是因为他往往把它和人的器官相比拟,因此还是直接译作器官。——译注
【3】 这一段文字请读者注意。例如,二进制加法1+1+0=10,我们过去一般习惯是说:1+1+0之和为10。在这段文字中,冯·诺伊曼的表述为:1+1+0,其和数字(sum digit)为0,进位数字(carry digit)为1。——译注
【4】 运算方式,原文是modus operandi(拉丁文),原意为运算状态或运算方法,因而用此译名。——译注