公元前5世纪,The south-pointing chariot 指南车:模拟计算机

指南车,又称司南车,是中国古代用来指示方向的一种装置。它与指南针利用地磁效应不同,它不用磁性。指南车是利用齿轮传动来指明方向的一种简单机械装置。其原理是,靠人力来带动两轮的指南车行走,从而带动车内的木制齿轮转动,来传递转向时两个车轮的差动,再来带动车上的指向木人与车转向的方向相反角度相同,使车上的木人指示方向,不论车子转向何方,木人的手始终指向指南车出发时设置木人指示的方向,“车虽回运而手常指南”。

李约瑟博士在对指南车的差动齿轮作详细研究后指出:无论如何,指南车是人类历史上第一架有共协稳定的机械(homoeostatic machine);当驾车人与车辆成一整体看待时,它就是第一部摹控机械。

计算机的常识和发展史(计算设备的简史)(1)

计算机的常识和发展史(计算设备的简史)(2)

在公元前205年到公元前60年之间,The Antikythera mechanism 安提基特拉机械:模拟计算机

安提基特拉机械,是为了计算天体在天空中的位置而设计的古希腊青铜机器,属于模拟计算机。该机械有三个转盘,一个在前方,另外两个在后方。前方转盘有两个同心圆刻度,外围刻度是基于“天狼周期”(Sothic cycle)的365天古埃及历法,或称为天狼年。内圈刻度是古希腊的黄道带符号,并以角度区分。历法的转盘可以取下,并借由在每四年将后方转盘往之前回转一天以补偿每个回归年中多出的四分之一日(一个回归年有365.2422日)。第一个有闰年的儒略历是在西元前46年出现,但该仪器在儒略历之前一个世纪就已完成。

前方的转盘可能至少有三个指针,第一个指针指示日期,另外两个则分别指示太阳和月球位置。月球的指针已被调整过代表月球轨道的变化,因此相信太阳的指针也有过类似的调整,但相关机制的齿轮(如有)已经不存。前方转盘的第二个功能则是有一个月球的球形,作为月相指示。

计算机的常识和发展史(计算设备的简史)(3)

计算机的常识和发展史(计算设备的简史)(4)

1801年,Jacquard machine 雅卡尔织布机:机械可编程化计算机

为了能让纺织机器能够自动编制出复杂花纹的图案,法国发明家约瑟夫·玛丽·雅卡尔在 1799 年发明出了雅卡尔织布机,这种机器能通过判断卡片上是否有孔洞来操纵线团的高低位置。通过这台织布机,只要根据图案设计好每条线的走线,做好对应的打孔,纸卡连成长条,形成连续指令,便能不用人工调整不同颜色的线团的走线了。也就是说,雅卡尔织布机利用纸带上的孔来对信息进行编码,并作为输入来控制织布机自动工作。雅卡尔织布机演示了可编程机器的概念,因此它经常被认为是数字计算机的前身。

计算机的常识和发展史(计算设备的简史)(5)

计算机的常识和发展史(计算设备的简史)(6)

1822年,Different engine 差分机:机械程序化计算机

1822 年,巴贝奇开始了差分机的设计和制造,希望将从计算到印刷的过程全部自动化,这样就可以避免人为误差,在那个时候,这是一个非常前沿的想法。差分机使用有限差分方法来机器计算多项式函数的值。有限差分方法是个简单但功能强大的技巧,它用重复加减的过程来避免需要的乘法和除法。

由于当时制造工艺水平较低,这个 10 英尺高,10 英尺宽,5 英尺长,重 2 吨,以蒸汽机驱动的庞然大物在 10 年间只完成了七分之一。

计算机的常识和发展史(计算设备的简史)(7)

计算机的常识和发展史(计算设备的简史)(8)

1837年,Analytical engine 分析机:机械程序化计算机

十九世纪三十年代,英国数学家、发明家查尔斯·巴贝奇设计了分析机。分析机采用的一些计算机思想延用至今。分析机包括的存储和碾磨,就非常类似于今天计算机中采用的内存和处理器。分析机由蒸汽机驱动,大约有30米长、10米宽。它使用打孔纸带输入,采取最普通的十进制计数。它的“内存”大约可以存储1000个50位的十进制数(20.7kB)。有一个算术单元可以进行四则运算、比较和求平方根操作,能用多项式展开的方法计算对数和三角函数。

计算机的常识和发展史(计算设备的简史)(9)

计算机的常识和发展史(计算设备的简史)(10)

1876年,Differential analyzer 微分分析仪:机械模拟计算机

1876年,发现热力学第二定律的L.开尔文和他的弟弟一起研制了能计算傅立叶系数的“潮汐调和分析仪”。微分分析仪是一种机械模拟计算机,设计用于积分求解微分方程,利用轮盘机构进行积分,是最早在操作上使用的先进计算设备之一。

计算机的常识和发展史(计算设备的简史)(11)

1879年,Tide-predicting machine 机械模拟计算机:机械模拟计算机

潮汐预测机是19世纪末和20世纪初的一种特殊用途的机械模拟计算机,其构造和设置是为了预测海潮的起伏和高度的不规则变化。这种机器通常能提供未来一年或更长时间内每小时和每一天的有效预测。

计算机的常识和发展史(计算设备的简史)(12)

计算机的常识和发展史(计算设备的简史)(13)

1935年,The Z1:编程化机电计算机

Z1是Konrad Zuse于1936年至1937年设计的电机驱动的机械计算机,是世界上第一台使用布尔逻辑和二进制浮点数的自由可编程计算机。

Z1几乎包含了现代计算机的所有部件,即控制单元、存储器、微型序列、浮点逻辑和输入输出设备。Z1可以通过打孔磁带和打孔磁带阅读器自由编程。打孔磁带阅读器、监督整个机器和执行指令的控制单元、算术单元以及输入和输出设备之间有明显的分离。

该机器是一个22位浮点值加法器和减法器,具有一些控制逻辑使其能够进行更复杂的操作,例如乘法(通过重复加法)和除法(通过重复减法)。Z1的指令集有8条指令,每条指令需要1至21个周期。Z1有一个64字的浮点存储器,每个字的记忆都可以由控制单元读取和写入。机械存储单元的设计于1936年由Konrad Zuse申请专利。该机器只能执行从穿孔带阅读器读取的指令,因此程序本身从未加载到内存中。

计算机的常识和发展史(计算设备的简史)(14)

计算机的常识和发展史(计算设备的简史)(15)

Z2(1940)、Z3(1941)和Z4(1949):Z3是第一台可编程全自动数字计算机

Z2是由Konrad Zuse于1940年创建的机械和中继计算机。这是对Z1的改进,使用相同的机械存储器,但用600个电气继电器电路取代了算术和控制逻辑,重量超过600磅。与Z1相比,Z2使用16位定点运算,而不是22位浮点运算。

1941年,德国工程师Konrad Zuse使用了世界上第一台机电可编程全自动数字计算机Z3。Z3配备了2000个继电器,工作时的时钟频率约为5–10_Hz。Z3在穿孔胶片上提供了程序代码,而数据可以存储在64个字的内存中或由键盘提供。它在某些方面与现代机器非常相似,开创了诸如浮点数之类的众多进步。

计算机的常识和发展史(计算设备的简史)(16)

Z4是世界上第一台商用数字计算机,由德国工程师Konrad Zuse设计,由他的公司Zuse Apparatebau在1942年至1945年间制造。

Z4在设计上与Z3非常相似,但在一些方面得到了明显的加强。内存由32位而不是22位浮点字组成。程序构建单元(Planfertigungsteil)对程序磁带进行打孔,通过使用符号操作和存储单元,使机器的编程和纠正程序更加容易。尽管内部工作是二进制的,但数字的输入和输出都是十进制的浮点。该机器有大量的指令,包括平方根、MAX、MIN和正弦。

计算机的常识和发展史(计算设备的简史)(17)

计算机的常识和发展史(计算设备的简史)(18)

1941年,Antikythera mechanism阿塔纳索夫-贝瑞计算机(ABC计算机):第一台电子数字计算设备

阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,通常简称ABC计算机)是世界上第一台电子计算机。由美国科学家阿塔纳索夫在1937年开始设计,不可编程,仅仅设计用于求解线性方程组,并在1942年成功进行了测试。是公认的计算机先驱,为今天大型机和小型机的发展奠定了坚实的基础。

ABC计算机是电子与电器的结合,电路系统中装有300个电子真空管执行数字计算与逻辑运算,机器使用电容器来进行数值存储,数据输入采用打孔读卡方法,还采用了二进位制。因此,ABC的设计中已经包含了现代计算机中四个最重要的基本概念,从这个角度来说它是一台真正现代意义上的电子计算机。

计算机的常识和发展史(计算设备的简史)(19)

计算机的常识和发展史(计算设备的简史)(20)

1943年,Colossus:第一台编程化电子数字计算机

Colossus是英国破译员在1943-1945年期间开发的一套计算机,以帮助进行洛伦兹密码的密码分析。Colossus使用热电偶阀(真空管),以纸带作为输入器件,来进行布尔运算和计数运算。因此,尽管它是通过开关和插头来编程的,而不是通过存储的程序,Colossus仍被认为是世界上第一台可编程的电子数字计算机。

Colossus使用穿孔纸带输入密文,纸带每行有5个孔位,对应ITA2中的5位二进制。纸带长约61米,穿孔25000行。共设有两个纸带支架,在一条纸带工作的时候,操作人员可以准备好下一条纸带,交替使用,节省纸带更换时间。由于机器内部没有数据存储模块,纸带的头尾相接,形成环状,以便循环读取。纸带的读取速度十分惊人——每秒5000行。

Colossus基于图灵方法,用电路模拟“金枪鱼”的转轮位置及其导电触点的通断状态。密文流入机器后,经过一系列以异或为主,与、或、非为辅的逻辑运算,最终由电动打字机输出结果。这个结果当然不可能就是明文,而是各种统计数据,比如某个字符出现的次数,或者某些数值满足某种逻辑条件的次数,有点像现在的数据挖掘。机器内有5个电子计数器,可同时统计5项数据。密码学家根据统计结果找到密文中暗藏的线索,调整机器程序,得到新的统计结果后继续分析,如此往复,一步步逼近最终的正确答案。

计算机的常识和发展史(计算设备的简史)(21)

1945年,ENIAC:编程化机电数字计算机

ENIAC,全称为Electronic Numerical Integrator And Computer,即电子数字积分计算机。ENIAC是继ABC(阿塔纳索夫-贝瑞计算机)之后的第二台电子计算机和第一台通用计算机。它于1946年2月14日在美国宣告诞生,是完全的电子计算机,能够重新编程,解决各种计算问题。

ENIAC长30.48米,宽6米,高2.4米,占地面积约170平方米,30个操作台,重达30英吨,耗电量150千瓦,造价48万美元。它包含了17,468根真空管(电子管)7,200根水晶二极管,1,500 个中转,70,000个电阻器,10,000个电容器,1500个继电器,6000多个开关,计算速度是每秒5000次加法或400次乘法,是使用继电器运转的机电式计算机的1000倍、手工计算的20万倍。

数据的输入输出设备是现成的IBM读卡器和穿孔机,分别受控于输入模块和输出模块。每张穿孔卡片可存8个10位十进制数,读取一张卡片需要0.48秒,穿孔一张卡片需要0.6秒。输入、输出模块分别占据3块面板,均使用继电器临时存储数据,它们是连接机器外部和内部的数据缓存池。

计算机的常识和发展史(计算设备的简史)(22)

1948年,The Manchester Baby,第一台电子存储程序计算机;1949年,改进为Manchester Mark 1;1951年,Mark 1已经发展成为曼彻斯特电子计算机(Ferranti Mark 1),世界上第一台商业化的通用计算机。

Manchester Baby,也被称为小规模实验机(SSEM),是第一台电子存储程序计算机。它由Frederic C. Williams,Tom Kilburn和Geoff Tootill在曼彻斯特大学建造,并于1948年6月21日运行了第一个程序。

Manchester Baby的字长为32位,内存为32个字(1千比特,1,024比特)。由于它被设计成最简单的存储程序计算机,在硬件中实现的唯一算术运算是减法和负数;其他算术运算则由软件实现。为该机器编写的三个程序中的第一个程序通过测试从218向下的每一个整数,计算出218的最高适当除数(262,144)。这个算法需要很长的时间来执行,因此也证明了计算机的可靠性,因为除法是通过重复减去除数来实现的。该程序由17条指令组成,运行了约52分钟,在Manchester Baby进行了约350万次操作(CPU的有效速度约为每秒1100条指令)后,得出了131,072的正确答案。

Manchester Baby并不是一个实用的计算引擎,而是被设计为威廉姆斯管的测试平台,这是第一个真正的随机存取存储器。在创建50年后,它被认为是第一台包含现代电子数字计算机必不可少的所有元素的工作机器。在Manchester Baby证明了其设计的可行性之后,大学就启动了一个项目,将其开发成一个全面的操作机器Manchester Mark 1。Mark 1 又迅速成为世界上第一台商用通用计算机Ferranti Mark 1 的原型。

计算机的常识和发展史(计算设备的简史)(23)

1949年,EDVAC:二进制存储程序计算机

离散变量自动电子计算机(Electronic Discrete Variable Automatic Computer,EDVAC)是一台美国早期电子计算机,是第一台现代意义的通用计算机。与它的前任ENIAC不同,EDVAC采用二进制,而且是一台冯·诺伊曼结构的计算机。整台计算机共使用大约6000个电子管和大约12000个二极管,功率为56KW,占地面积45.5平方米,重7850KG,使用时需要三十个技术人员同时操作。

EDVAC是二进制串行计算机,具有加减乘和软件除的功能。一条加法指令约864微秒,乘法指令2900微秒(或2.9毫秒)。使用延迟线存储器,具有1000个44位(bit)的字。它由五个基本部分组成:运算器CA、控制器CC、存储器M、输入装置I、输出装置O。这种体系结构一直延续至今,现在使用的计算机,其基本工作原理仍然是存储程序和程序控制,所以现在一般计算机被称为冯诺依曼结构计算机。

计算机的常识和发展史(计算设备的简史)(24)

1949年,EDSAC:第二台电子数字存储程序计算机

电子延迟存储自动计算器(Electronic Delay Storage Auto-matic Calculator、EDSAC)是英国的早期计算机。1946年,英国剑桥大学数学实验室的莫里斯·威尔克斯教授和他的团队受冯·诺伊曼的First Draft of a Report on the EDVAC的启发,以EDVAC为蓝本,设计和建造EDSAC,1949年5月6日正式运行,是第二台电子数字存储程序计算机。

它使用了水银延迟线作存储器,利用穿孔纸带输入和电传打字机输出。另外,EDSAC可以外接阴极射线管(CRT),可以用来观察寄存器的值。所有普通指令的周期时间为1.5毫秒,乘法的周期时间为6毫秒。

计算机的常识和发展史(计算设备的简史)(25)

计算机的常识和发展史(计算设备的简史)(26)

1951年,UNIAC:第一台商用电子数字计算机

UNIVAC -1(通用自动计算机)是第一台商用电子计算机,设计者是J.Presper Eckert 和John Mauchly ,1951年由雷明顿兰德公司(现Unisys)发售。真空管数量为5200只,与ENIAC相比,仅为三分之一以下。存储器为100只水银延迟管。占地26.7平方米,重量7.2吨。

UNIVAC -1一开始被用于美国人口普查,它是使用晶体管的计算机,标志人类进入了第二代计算机发展时代。UNIVAC-1第一次采用磁带机作外存储器,首先用奇偶校验方法和双重运算线路来提高系统的可靠性,并最先进行了自动编程的试验。

计算机的常识和发展史(计算设备的简史)(27)

,