
1.1 计算需求与计算机技术的发展
计算机是20世纪最伟大的科学技术发明之一,对人类的生产活动和社会活动产生了极其重要的影响。其应用领域从最初的军事科研应用扩展到社会的各个领域,已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变革,计算机已遍及一般学校、企事业单位,进入寻常百姓家,成为信息社会中必不可少的工具。计算机技术是当今世界上发展最快和应用最广的技术,操作使用计算机已经成为社会各行各业劳动者必备的工作技能。随着电子时代的到来,新的理念和结构也在不断地形成和完善,网络为人类的工作学习和生活带来了极大的方便,计算机网络技术的发展对人类技术史的发展产生了不可磨灭的深远影响。
当下正处于信息时代“互联网+”“人工智能+”的深刻变革中,人们不再仅仅依靠传统的物质和能量,而更加依靠计算机技术带来的深刻变革。计算机从一个理论上的装置演变成几乎人手一台的机器。什么是计算,什么是可计算,什么是可行计算,等等,不仅推动了计算机科学和工程的发展,也推动了计算思维本身的发展。在这个过程中,一些属于计算思维的特点被逐步揭示出来,计算思维与逻辑思维和实证思维的差别越来越清晰化。
计算机的出现催生了计算机程序的兴起和发展。计算机程序就是对于所要解决的问题,用一种计算机可以理解的方式来进行描述。由于计算机是一个机械的执行机构,因此,若要把一个计算过程描述清楚,使得计算机可以实现期望的输出结果,就需要对这个过程进行十分清楚和准确的描述。
以下从计算机的发展阶段(原始计算方法、机械式计算技术、机电式计算技术、电子式计算)到计算机技术研究热点(并行和分布式计算和云计算和虚拟化技术等)和未来计算方式等方面进行梳理。
1.1.1 原始计算方法及工具的使用
数字的出现是在人们的财产多到要数一数才能搞清楚有多少的时代。在远古时代的原始部落,物质极其匮乏,在那个时代是不可能出现完整的计数系统的。为了方便计数,早期人类还将数字一道道地刻在木头、骨头或者其他便于携带的物件上,这是科学家认为迄今发现最早的人类计数工具[1]。
公元前770年左右,我国祖先发明了算筹(见图1-1);公元8世纪,发明了算盘。此时对应的原始计算工具算筹、算盘以及欧洲人利用“格子乘法”原理制成的计算工具和计算尺等,这些原始计算工具都能看成是计算机发展的雏形[2]。

图1-1 公元8世纪发明的算盘
1.1.2 机械式计算技术
早在17世纪的欧洲,一批数学家就已经开始设计和制造以数字形式进行基本运算的数字计算机。17世纪到19世纪中期,德国科学家契克卡德在1623年造出世界上已知的第一部机械式计算机,这部机械式计算机能进行六位数的加减乘除。而计算机的概念提出则是在法国著名科学家帕斯卡发明机械计算机后。
帕斯卡发明的计算机是一种由一系列齿轮组成的装置,外形像一个长方盒子,用儿童玩具那种钥匙旋紧发条后才能转动,只能够做加法和减法(见图1-2)。

图1-2 帕斯卡设计的机械式加法器
莱布尼茨在1673年发明了乘法自动计算机,简称乘法机,除了体积较大之外,基本原理继承于帕斯卡的机械计算机。莱布尼茨设计的乘法机如图1-3所示。

图1-3 莱布尼茨设计的乘法自动计算机
1822年英国数学家巴比奇发明了差分机(见图1-4),差分机可用于航海和天文计算,但不能把计算结果存储下来。

图1-4 巴比奇设计的差分机和分析机
19世纪以后,各个科学领域和技术部门的计算困难问题堆积如山,严重阻碍了科学技术的发展,特别是第二次世界大战爆发前后,军事科学技术对高速计算工具的需求尤为迫切。在此期间,德美英等国都在进行计算机的研制工作,几乎同时开始了机电式计算机和电子计算机的研究工作。
1.1.3 机电式计算技术
1889年,美国科学家赫尔曼研制出以电力为基础的电动制表机,可用于存储资料。而在1938年,德国科学家朱斯成功地设计制造了第一台纯机械计算机后的二进制Z-1计算机,其中Z-3型计算机(见图1-5)是世界上第一台通用程序控制机电式计算机,它不仅全部采用继电器,同时采用了浮点计数法、带数字存储地址的指令形式等。

图1-5 祖思及其设计的Z-3计算机
1930年,美国科学家范内瓦·布什造出世界上首台模拟电子计算机。1944年,美国科学家艾肯成功研制了第一台机电计算机,并将其命名为自动顺序控制计算器MARK-I。该计算机有半个足球场大,内含500英里的电线,使用电磁信号来移动机械部件,计算速度很慢,3~5秒才能计算一次,并且适用性很差。3年后,艾肯又研制出运算速度更快的MARK-II。到1949年,由于当时电子管技术已取得重大进步,于是艾肯研制出采用电子管的计算机MARK-III(见图1-6)。

图1-6 艾肯设计的MARK-I、MARK-III
1946年2月美国宾夕法尼亚大学莫尔学院研制的大型电子数字积分计算机(ENIAC),最初也专门用于火炮弹道计算,后经多次改进而成为能进行各种科学计算的通用计算机。这台完全采用电子线路执行算术运算、逻辑运算和信息存储的计算机,运算速度比继电器计算机快1000倍。这就是人们常常提到的世界上第一台电子计算机。
1.1.4 电子计算技术
1944年,冯·诺依曼明确指出了整个计算机的结构应由5个部分组成:运算器、控制器、存储器、输入装置和输出装置。冯·诺依曼的这些理论的提出,解决了计算机的运算自动化的问题和速度配合问题,对后来计算机的发展起到了决定性的作用。直至今天,绝大部分的计算机还是采用冯·诺依曼方式工作。
晶体管计算机(1956~1962年)时代的逻辑元件为晶体管。1956年晶体管作为逻辑元件在计算机中使用,晶体管和磁芯存储器造就了第二代计算机的产生。第二代计算机体积小、速度快、功耗低、性能更稳定。早期的超级计算机首先使用晶体管技术,主要用于原子科学的大量数据处理。在1960年,出现了一些应用于商业领域、大学和政府部门的第二代计算机。
1958年美国德克萨斯州的工程师杰克·基尔比发明了集成电路(Integrated Circuit,IC),多种电子元件被集成到单一的半导体芯片上。此后计算机的发展便进入了集成电路时代,发展历程依次为中小规模-大规模-超大规模。
1971年11月15日,霍夫在 INTEL公司开发成功第一块微处理器 4004,含有2300个晶体管,这是一个4位系统,时钟频率为108kHz,每秒可执行6万条指令。这标志着大规模集成电路(Large Scale Integration,LSI)时代的开始。从计算机技术的发展历程不难看出,电子管计算机时代的跨度在14年,晶体管计算机时代的跨度为6年,集成电路计算机时代的跨度6年,而大规模集成电路计算机时代已经经历了45年。大规模集成电路的发展推动半导体芯片集成度的提高,每块芯片可容纳数万乃至数百万个晶体管,并且可以把运算器和控制器都集中在一个芯片上,从而出现了微处理器,并且可以用微处理器与大规模、超大规模集成电路组装成微型计算机,这才能让计算机应用领域从科学计算、事务管理、过程控制逐步走向家庭。
自20世纪中期以来,计算机一直处于高速度发展时期,计算机由仅包含硬件发展到包含硬件、软件和固件3类子系统的计算机系统。计算机系统的性能价格比,平均每10年提高两个数量级。计算机种类也一再分化,发展成微型计算机、小型计算机、通用计算机(包括巨型、大型和中型计算机),以及各种专用机(如各种控制计算机、模拟—数字混合计算机)等。
目前的微处理器系统的问题主要体现在以下方面:
(1)现在计算机微处理器的结构不均衡;
(2)所有的处理过程主要通过CPU完成,增加了CPU和总线的压力;
(3)专家通过修改电路设计来适应需要的过程需要倾注大量努力。
计算机技术当下创新研究的关键点是发展微处理器的操作与研究。微处理器是计算机工作的核心技术,也是帮助计算机实现对数据和信息处理的关键性设备。
1.1.5 并行与分布式计算技术
并行与分布式计算技术在当今计算机领域已有举足轻重的地位。从计算机硬件设备看,半导体技术的不断进步使得单位芯片面积集成的晶体管数目不断增长,但是由于功耗、复杂性等方面的限制,传统的通过提高主频、增加结构的复杂度来追求性能提升的道路,已经不能充分地利用丰富的晶体管资源提高应用程序性能,并行计算技术已成为发展必然。这些真实的需求是推动计算向并行与分布式计算方向转变的原动力,并行与分布式计算势在必行[3]。
并行计算(Parallel Computing)是相对于串行计算来说的,这是一种一次可以执行多个指令的算法,目标是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。多核并行计算将成为未来计算的主流。
并行计算其思想是用多个处理器来协同求解同一问题,即将被求解问题分解成若干部分,各个部分均有一个独立的处理机来并行计算。
分布式计算(Distributed Computing)是一种新的计算方式。分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。分布式计算与其他算法相比具有以下几个优点:
(1)稀有资源可以共享;
(2)通过分布式计算可以在多台计算机上平衡计算负载;
(3)可以把程序放在最适合它的计算机上。
1.1.6 云计算与虚拟化技术
云计算作为一种计算模式,全球主要信息技术公司纷纷建立起各自的云数据中心,推动了云计算的发展与应用。云计算是基于互联网的相关服务的增加、使用和交付模式,是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡、热备份冗余等传统计算机和网络技术发展融合的产物。云计算是通过计算大量分布式计算机,而非本地计算机或远程服务器,这些许多可同时工作的“云服务器”按照一定的拓扑结构组成。企业数据中心的运行将与互联网更相似,这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
云计算的特点有:超大规模、虚拟化(云计算支持用户在任何位置使用各终端获取应用服务)、高可靠性、通用性、高可扩展性、按需服务、极其廉价,但同时也具有一定的潜在危险性。
出于安全考虑,大多数终端用户不愿意把很多硬件驱动的终端程序或某些隐私数据放在云中存储或计算。对于CPU密集型的计算任务,它主要负载在一个快速的多核客户端而不是云端上进行计算,多核客户端/移动计算将成为未来的主要计算方式。
云计算的服务形式:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
云计算中的技术包括:编程模式、海量数据分布存储技术、海量数据管理技术、虚拟化技术和云计算平台管理技术。云计算服务可分为公有云、私有云和混合云。面向企业级品质和面向企业客户:从数据中心建设,全球化光纤网络和虚拟化技术(Hyper-V)到操作系统再到运行云服务的各项基础软件。云计算是一种服务,虚拟化和分布式系统都是用来实现云计算的关键技术之一。云计算将带来数据中心内应用、网络、计算、存储和全面融合,随着分布式计算模式的部署,服务器之间的任务协作程度进一步提高,网络成为决定云计算性能关键因素之一[4]。
在计算机中,虚拟化技术是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转化后呈现出来,打破实体结构间不可人格化的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。一般所指的虚拟化资源包括计算能力和资料存储,在虚拟化技术中,可以同时运行多个操作系统,而且每一个操作系统都有多个程序一起运行,每一个操作系统都运行在一个虚拟 CPU 或者虚拟主机上。完整的虚拟化技术需要 CPU、主板芯片组、BIOS和软件的支持,例如,VMM软件或者操作系统本身。
1.1.7 未来计算方式
随着时代的不断变革和发展,大规模和超大规模集成电路计算机也处在一个不断发展与创新的过程中,一系列新型计算机已经在酝酿发展过程中,如生物计算机、量子计算机、光子计算机以及纳米计算机等。尽管这些新型计算机的技术还未成型,或者技术发展没有十分成熟,但是它们代表着计算机技术发展的新方向和新趋势[5]。基于集成电路的计算机短期内还不会退出历史舞台,科研人员正在对这些新型计算机加紧研究。
量子计算机:以处于量子状态的原子作为中央处理器和内存,利用原子的量子特性进行信息处理。由于原子具有在同一时间处于两个不同位置的奇妙特性,即处于量子位的原子既可以代表0或1,也能同时代表0和1以及0和1之间的中间值,所以无论从数据存储还是处理的角度,量子位的能力都是晶体管电子位的两倍,高效的运算能力使量子计算机具有广阔的应用前景。目前,量子计算机只能利用大约5个原子做最简单的计算。要想做任何有意义的工作都必须使用数百万个原子。
光计算机:与传统硅芯片计算机不同,光计算机用光束代替电子进行计算和存储:它以不同波长的光代表不同的数据,以大量的透镜、棱镜和反射镜将数据从一个芯片传送到另一个芯片。光计算机有全光学型和光电混合型。研制光计算机,需要开发出可用一条光束控制另一条光束变化的光学“晶体管”。现有的光学“晶体管”庞大而笨拙,因此要想短期内使光学计算机实用化还很困难。
纳米计算机:在纳米尺度下,由于存在量子效应,硅微电子芯片便不能工作。其原因是这种芯片的工作,依据的是固体材料的整体特性,即大量电子参与工作时所呈现的统计平均规律。如果在纳米尺度下,利用有限电子运动所表现出来的量子效应,可能就能克服上述困难。可以用不同的原理实现纳米级计算,目前已提出了4种工作机制:电子式纳米计算技术、基于生物化学物质与DNA的纳米计算机、机械式纳米计算机、量子波相干计算。
DNA计算机:将DNA碱基对序列作为信息编码的载体,在试管内控制酶的作用下,使DNA碱基对序列发生反应,以此实现数据运算。DNA计算机的最大优点在于其惊人的存储容量和运算速度:1立方厘米的DNA存储的信息比一万亿张光盘存储的还多;十几个小时的DNA运算量,就相当于所有计算机问世以来的总运算量。更重要的是,它的能耗非常低,只有电子计算机的一百亿分之一。目前的 DNA 计算机离开发、实际应用还有相当长的距离,尚有许多现实的技术性问题需要解决。
计算机应用的未来发展将主要集中于计算机设备的发展以及计算机与互联网之间联系更加紧密的发展。首先从计算机的设备角度来看,未来的计算机设计将会更注重科学之间的相互联系。量子计算机、神经网络计算机、化学计算机、光计算机等都会相继在未来的世界经济发展进程中起到不可估量的推动作用。并且未来的计算机将会更加注重人类社会生活与自然生态之间的相互联系,计算机会越来越符合当今绿色生活的时代主题,能耗会大幅降低。