计算机的分类

电子计算机从总体上来说分为两大类。一类是电子模拟计算机,模拟计算机的特点是数值由连续量来表示,运算过程也是连续的。另一类是电子数字计算机,数字计算机的主要特点是按位运算,并且不连续地跳动计算。

此外,数字计算机还可根据规模和用途分为巨型机、大型机、小型机、微型机、工作站、嵌入式计算机等类别。巨型机用于科学计算和国家战略任务;微型机(个人计算机)普及最广;嵌入式系统则应用于智能设备、汽车电子等领域。

计算机的发展简史

计算机的五代变化

世界上第一台电子数字计算机是1946年在美国宾夕法尼亚大学制成的ENIAC。这台机器用了18000多个电子管,占地170m²,重量达30吨,而运算速度只有5000次/秒。

自从这台计算机问世70多年来,从使用器件的角度来说,计算机的发展大致经历了五代的变化。

  • 第一代为1946~1957年,电子管计算机。采用电子管作为逻辑元件,磁鼓或磁芯作为存储器,体积庞大、功耗高、可靠性低。主要用于科学计算。
  • 第二代为1958~1964年,晶体管计算机。晶体管代替电子管,体积缩小,功耗降低,速度提高。出现了高级编程语言(如FORTRAN、COBOL),开始应用于商业领域。
  • 第三代为1965~1971年,中小规模集成电路计算机。将多个晶体管集成在一块硅片上,使计算机进一步小型化,运算速度达到每秒数百万次。操作系统和分时系统开始普及。
  • 第四代为1972~1990年,大规模和超大规模集成电路计算机。一片芯片可集成数千至上万个元件。个人计算机(PC)诞生并迅速发展。1971年Intel 4004微处理器标志着微计算机时代的开始。
  • 第五代为1991年开始的巨大规模集成电路计算机。运算速度提高到每秒10亿次以上。由一片巨大规模集成电路实现的单片计算机(系统级芯片,SoC)开始出现。并行处理、多核技术、量子计算等新技术不断涌现。

计算机从第三代起,与集成电路技术的发展密切相关。LSI(大规模集成电路)的采用,一块集成电路芯片上可以放置1000个元件,VLSI(超大规模集成电路)达到每个芯片1万个元件,现在的ULSI(甚大规模集成电路)芯片超过了100万个元件。1965年摩尔观察到芯片上的晶体管数量每年翻一番,1970年这种态势减慢成每18个月翻一番,这就是人们所称的摩尔定律。该定律揭示了集成电路工艺的持续进步,但也面临物理极限的挑战。

半导体存储器的发展

半导体存储器的发展经历了从磁芯存储器到半导体RAM和ROM的转变。20世纪60年代末,半导体存储器开始取代磁芯存储器,成为计算机的主要存储部件。随着集成电路技术的进步,存储容量不断增大,成本不断降低,速度也大幅提升。如今,DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)广泛应用于主存和高速缓存,闪存(Flash)则成为移动设备和固态硬盘的重要存储介质。近年来,3D NAND、MRAM、ReRAM等新型存储器不断涌现,进一步拓展了存储技术的边界。

微处理器的发展

微处理器是将中央处理器的主要功能集成到一块芯片上的器件。1971年,英特尔公司推出了世界上第一块微处理器4004,4位字长,主频108kHz,开启了微处理器时代。随后,8位微处理器(Intel 8080、Zilog Z80)、16位(Intel 8086/8088、Motorola 68000)、32位(Intel 80386、ARM)、64位微处理器相继问世,性能不断提升,集成度从数千晶体管发展到数百亿晶体管。微处理器的出现极大地推动了个人计算机和嵌入式系统的发展。当前主流微处理器包括Intel Core系列、AMD Ryzen系列、ARM Cortex系列等,广泛应用于从智能手机到超级计算机的各类设备。

计算机的性能指标

衡量计算机性能的主要指标包括:

  • 主频(时钟频率):CPU的核心时钟速率,单位Hz。主频越高,单位时间内能完成的操作越多,但不同架构的CPU不能单纯比较主频。
  • 字长:CPU一次能并行处理的二进制位数,通常为8、16、32、64位。字长影响数据精度和寻址范围。
  • 运算速度:通常用每秒百万条指令(MIPS)或每秒浮点运算次数(FLOPS)表示。现代计算机常用SPEC等基准测试程序综合评估。
  • 存储容量:主存(RAM)容量和辅存(硬盘/SSD)容量。容量越大,可运行的程序和数据越多。
  • 输入输出速度:I/O带宽和响应时间,影响系统的整体运行效率。
  • 其他指标:功耗、可靠性(MTBF)、可用性、可扩展性等。

计算机的硬件

硬件组成要素

计算机硬件主要包括运算器、存储器、控制器、输入设备和输出设备五大部分。它们共同协作,实现数据的输入、存储、运算、控制和输出功能。这些部件通过总线(数据总线、地址总线、控制总线)相互连接,组成完整的硬件系统。

运算器

运算器负责对数据进行算术和逻辑运算,是计算机的“计算核心”。它通常包括算术逻辑单元(ALU)、累加器(ACC)、暂存器、状态寄存器(标志寄存器)等部件。ALU执行加、减、乘、除等算术运算和与、或、非、异或等逻辑运算。运算器的设计对计算机的性能至关重要。

存储器

存储器用于存放程序和数据,分为主存(内存)和辅存(外存)。主存速度快但容量有限,通常由DRAM构成,直接与CPU交换信息;辅存容量大但速度较慢,如硬盘、固态硬盘、光盘等,用于长期保存信息。存储器系统采用层次结构(Cache-主存-辅存)来兼顾速度、容量和成本。

控制器

控制器负责协调和控制计算机各部件的工作,保证程序的正确执行。它通过时序信号和控制信号实现对各部件的管理。控制器从存储器中逐条取出指令,分析指令(译码),然后发出相应的微操作命令序列,驱动运算器、存储器、I/O设备执行指令规定的操作。控制器分为微程序控制器和硬布线控制器两种主要类型。

适配器与输入输出设备

适配器(也称接口或控制器)用于连接主机与各种输入输出设备,如键盘、鼠标、显示器、打印机、磁盘驱动器等,实现数据的输入和输出。适配器负责信号转换、数据缓冲、协议转换和错误处理。常见的I/O接口标准有USB、HDMI、SATA、PCIe等。输入设备将外部信息转换为计算机可识别的电信号;输出设备则将计算机的处理结果转换为人们可感知的形式(如显示、打印、声音)。

计算机的软件

软件的组成与分类

计算机软件分为系统软件和应用软件。

  • 系统软件:包括操作系统(Windows、Linux、macOS等)、编译程序(GCC、LLVM等)、解释程序、数据库管理系统(MySQL、Oracle等)、汇编程序、链接程序等,负责管理硬件资源和为应用软件提供运行环境。
  • 应用软件:用于完成特定的用户任务,如文字处理(Word)、图像编辑(Photoshop)、科学计算(MATLAB)、网页浏览(Chrome)、游戏、财务软件等。

软件的发展演变

软件从最初的机器语言(二进制代码)、汇编语言(符号化机器指令)发展到高级语言(FORTRAN、C、Java、Python等)和面向对象编程,极大地提高了开发效率和程序的可维护性。随着互联网和人工智能的发展,软件的功能和复杂性也在不断提升。软件开发方法也从结构化方法发展到面向对象、组件化、服务化、敏捷开发、DevOps等模式。开源软件的兴起深刻改变了软件产业格局。

计算机系统的层次结构

多级组成的计算机系统

现代计算机系统采用多级层次结构,从上到下依次为:

  • 应用层:运行各种应用程序,与用户直接交互。
  • 高级语言层:由编译程序将高级语言翻译为汇编或机器语言。
  • 汇编语言层:使用助记符表示机器指令,通过汇编程序转换为机器码。
  • 操作系统层:提供系统调用接口,管理硬件资源和进程调度。
  • 机器语言层(指令集架构层):指令系统定义计算机的软硬件接口。
  • 微程序层/硬件逻辑层:由微程序或硬布线实现指令解释。

每一层都为上一层提供服务和接口,实现复杂功能的分层管理。层次化设计降低了系统复杂度,便于软硬件的分工和独立演进。

软件与硬件的逻辑等价性

通过软件和硬件的协同设计,许多硬件功能可以用软件实现,反之亦然。这种逻辑等价性为计算机系统的灵活性和可扩展性提供了保障。例如,浮点运算可以软件模拟(慢)或硬件实现(快);指令集可以通过微程序(可重写)或硬布线(固定)实现。软件和硬件的权衡本质上是速度、成本、灵活性的权衡。现代计算机采用固件(如BIOS/UEFI)作为软硬件之间的中间层。

1