Skip to content

绪论

术语表

术语解释
图灵模型由艾伦·图灵于 1936 年提出的抽象计算模型。包含一条无限长的纸带(存储)、一个读写头(可读取/写入/移动)、一套状态转移规则(程序)。图灵模型证明了:任何可计算的问题,都可以用图灵机解决(丘奇-图灵论题)。它定义了计算机的可计算性边界
冯·诺依曼模型由冯·诺依曼于 1945 年提出的计算机体系结构,是现代几乎所有计算机的基础。核心思想:程序和数据以二进制形式存储在同一存储器中(存储程序概念)。包含五个子系统:存储器、算术逻辑单元、控制单元、输入单元、输出单元。
程序一组有序指令的集合,用来告诉计算机如何执行特定任务。在图灵模型中,程序是状态转移表;在冯·诺依曼模型中,程序和数据一样存储在内存中,可被修改或替换。
存储单元冯·诺依曼模型中用于存储数据和程序的子系统。由一系列可寻址的存储位置组成,每个位置存储固定长度的二进制数据。现代计算机中通常分为内存(RAM,临时存储)和外存(硬盘/SSD,永久存储)。
算术逻辑单元 (ALU)冯·诺依曼模型中的运算核心。负责执行算术运算(加、减、乘、除)和逻辑运算(与、或、非、异或)。不存储数据,只进行运算,结果送回存储器。
控制单元 (CU)冯·诺依曼模型中的"大脑"。负责从存储器中取指令(fetch)、解码(decode)、执行(execute)。控制单元通过控制总线协调 ALU、存储器、输入输出设备之间的数据流动。
输入/输出 (I/O)计算机与外部世界交互的接口。输入将外部数据(键盘、鼠标、传感器、网络数据)转换为计算机可处理的二进制形式;输出将处理结果(显示器、打印机、音频、控制信号)转换为人类可感知的形式。
Pascaline 计算器1642 年由法国数学家帕斯卡(Blaise Pascal)发明的机械计算器,可做加减法。由一系列啮合齿轮组成,进位通过齿轮联动自动完成。是第一台真正意义上可工作的机械计算器。
莱布尼茨之轮 (Leibniz's Wheel)1673 年由莱布尼茨改进的机械计算器,在 Pascal 的基础上增加了乘法和除法功能。核心创新是步进式圆柱齿轮(Leibniz Wheel),是现代手摇计算机的前身。
雅卡尔提花织机 (Jacquard Loom)1801 年由约瑟夫·雅卡尔发明的织布机。首次使用穿孔卡片控制织布图案——卡片上有孔表示抬起经线,无孔表示不抬起。这种"穿孔卡片 → 控制机器行为"的思想直接启发了后来的计算机编程概念。
查尔斯·巴比奇分析引擎1837 年由巴比奇设计的通用机械计算机(未完成建造)。具有现代计算机的核心概念:存储单元(store)、运算单元(mill)、穿孔卡片输入(汲取雅卡尔织机思想)以及条件分支能力。艾达·洛夫莱斯为其编写了历史上第一个算法,被视为第一位程序员。
ABC 计算机1937-1942 年由阿塔纳索夫和贝里(Atanasoff & Berry)在爱荷华州立大学建造。世界上第一台电子数字计算机,使用约 300 个真空管,采用二进制运算而非十进制。可求解线性方程组。但不可编程,非通用计算机。

图灵模型详解

核心思想

艾伦·图灵在 1936 年的论文《论可计算数》中提出了一个假想的机器——图灵机,它不需要任何物理实现,只是一个数学上的抽象模型

图灵机的组成

组件说明
纸带一条无限长的带子,划分为等大小的单元格,每个单元格可写一个符号(如 0 或 1)。纸带既是输入设备也是输出设备,还是存储器。
读写头可以在纸带上左右移动,读取当前位置的符号,擦除并写入新符号。
状态寄存器记录图灵机当前所处的状态(有限个状态之一)。
状态转移表即"程序"。定义了:在当前状态 + 当前读到的符号 → 写什么新符号 + 往哪移动 + 进入什么新状态。

关键结论

  • 可计算性:图灵机可以计算任何"可计算"的问题(丘奇-图灵论题)。
  • 停机问题:存在图灵机无法判断的问题——给定任意程序和输入,无法事先判断该程序是否会停止运行。这证明了计算机存在固有的能力边界
  • 通用图灵机:存在一种图灵机,可以模拟任何其他图灵机的行为。这就是现代"通用计算机"概念的理论基础——同一台计算机可以运行不同的程序(软件)。

冯·诺依曼模型详解

背景

1944-1945 年,冯·诺依曼参与 ENIAC 项目后,提出了 EDVAC 报告草案,系统描述了存储程序(Stored Program)概念。这份报告成为此后 70+ 年计算机体系结构的基础。

五个子系统

┌─────────────────────────────────────────────────────┐
│                    控制单元 (CU)                      │
│                  ┌─────────────┐                     │
│   输入设备 ───▶  │  算术逻辑    │  ───▶  输出设备     │
│  (键盘/鼠标)    │  单元 (ALU)  │        (显示/打印)   │
│                  └─────────────┘                     │
│                         ▲                            │
│                         │                            │
│                         ▼                            │
│              ┌──────────────────┐                    │
│              │   存储器 (Memory)  │                    │
│              │  程序 + 数据共存    │                    │
│              └──────────────────┘                    │
└─────────────────────────────────────────────────────┘
子系统功能类比
存储器存储程序指令和数据。按地址访问,每个地址可读可写书架:每个格子有编号,可放书或取书
ALU执行算术运算和逻辑运算计算器:只管算,不管存储
控制单元取指令→解码→执行,协调各组件工作指挥中心:决定什么时候做什么
输入单元将外部数据转换为二进制快递员:把外界东西送进来
输出单元将二进制结果转换为人可读的形式播音员:把内部结果传达出去

冯·诺依曼模型的三大核心原则

  1. 存储程序:程序以二进制形式存储在内存中,和数据没有本质区别。这意味着程序可以被另一个程序当成数据处理(编译、反编译、病毒检测)。
  2. 顺序执行:控制单元按指令在存储器中的顺序逐条执行,除非遇到跳转指令。
  3. 单存储器:程序和数据共享同一块存储器。这也带来了著名的"冯·诺依曼瓶颈"——CPU 和内存之间的数据通道成为性能瓶颈。

计算机发展历史

机械计算器时期(17 世纪之前)

时期发明/事件意义
约公元前 2400 年巴比伦算盘最早的计算辅助工具
1642 年Pascaline 计算器第一台可工作的机械加减法计算器
1673 年莱布尼茨之轮扩展了乘除法功能
1801 年雅卡尔提花织机穿孔卡片控制——"编程"概念的萌芽
1823-1837 年巴比奇差分机/分析引擎通用机械计算机的设计,包含存储和运算单元
1890 年霍尔瑞斯制表机用穿孔卡片统计美国人口普查数据,IBM 公司前身

电子计算机五个世代

世代时间核心技术特点代表机型
第一代1940s-1950s真空管体积巨大(占满整个房间)、耗电惊人、发热严重、需专业人员维护。机器语言编程。ENIAC、EDVAC、UNIVAC I
第二代1950s-1960s晶体管体积缩小、功耗降低、可靠性提升。出现汇编语言和最早的高级语言(FORTRAN、COBOL)。IBM 7094、PDP-1
第三代1960s-1970s集成电路(IC)多个晶体管集成在一块芯片上。出现操作系统,支持多道程序运行。IBM System/360、PDP-8
第四代1970s-1990s大规模/超大规模集成电路微处理器诞生(Intel 4004,1971)。个人计算机普及(Apple II、IBM PC)。图形用户界面(GUI)出现。Intel 8086、Apple Macintosh、IBM PC
第五代1990s 至今极大规模集成电路 + 多核 + AI多核处理器、移动芯片(ARM)、GPU 并行计算、神经网络芯片。云计算、物联网、人工智能普及。Intel Core、Apple M 系列、NVIDIA GPU、Google TPU

练习题答案

1. 定义一个基于图灵模型的计算机。

图灵模型计算机是一个抽象数学机器,由无限长的纸带(存储符号)、读写头(读写和移动)、状态寄存器(记录当前状态)和状态转移表(程序)组成。它通过不断读取当前符号→查表→写入新符号→移动→改变状态的过程来执行计算。只要一个问题可计算,图灵机就能求解。

2. 定义一个基于冯·诺依曼模型的计算机。

冯·诺依曼模型计算机由五个子系统组成:存储器存放程序和数据(二进制形式),控制单元逐条取指和执行,ALU 负责运算,输入单元接收外部数据,输出单元展示结果。程序和数据平等地存储在存储器中。

3. 图灵模型与冯·诺依曼模型中,程序的作用分别是什么?

  • 图灵模型:程序是状态转移表,定义了机器在所有可能情况下的行为规则。
  • 冯·诺依曼模型:程序是一组按序存储的二进制指令,控制单元逐条读取并执行。程序可以被修改、替换,甚至可以由另一个程序生成。

4.(题目缺省)

5. 计算机中有哪些子系统?

五个子系统:存储器、算术逻辑单元(ALU)、控制单元(CU)、输入单元、输出单元。

6. 存储器子系统的功能是什么?

存储程序指令和数据。按地址访问(每个存储位置有唯一地址),支持快速读写。现代计算机采用层次化存储结构:寄存器 → 高速缓存(Cache)→ 内存(RAM)→ 外存(硬盘/SSD),越靠近 CPU 速度越快但容量越小。

7. ALU 子系统的功能是什么?

执行算术运算(加减乘除)和逻辑运算(与、或、非、异或、移位)。ALU 从寄存器读取操作数,完成运算后将结果存回寄存器,并设置状态标志(如是否为零、是否溢出、是否为负)。

8. 控制单元子系统的功能是什么?

控制单元执行"取指-解码-执行"循环(Fetch-Decode-Execute Cycle):

  1. 取指:从存储器中取出下一条指令
  2. 解码:分析指令的操作码和操作数
  3. 执行:向 ALU 或 I/O 设备发出控制信号,完成对应操作

同时控制指令执行顺序,处理跳转和分支。

9. 输入/输出子系统的功能是什么?

输入子系统:将外部世界的物理信号(键盘敲击、鼠标移动、触摸、声音、温度)转换为计算机可处理的二进制数据。 输出子系统:将计算机内部的二进制处理结果转换回人类可感知的形式(屏幕显示、打印纸张、音频播放、机械动作)。

10. 简述 5 个时代的计算机。

世代关键词
第一代(1940s-1950s)真空管、房间大小、机器语言
第二代(1950s-1960s)晶体管、汇编语言、FORTRAN/COBOL
第三代(1960s-1970s)集成电路、操作系统、多道程序
第四代(1970s-1990s)微处理器、PC 普及、GUI 界面
第五代(1990s 至今)多核、人工智能、云/移动计算

11. 解释为什么计算机不能解决那些计算机外部世界无解决方法的问题。

计算机只能执行人类编写的程序(算法)。如果一个问题在现实世界中没有已知的解决方案、没有可描述的处理步骤、或者逻辑上不可判定,那么计算机无法解决它。计算机不会创造新知识,只能按照预设的规则处理信息。垃圾进,垃圾出(GIGO)。

12. 如果一台小的便宜的计算机可以做大型昂贵的计算机同样能做的事,为什么人们需要大型计算机?

小型计算机和大型计算机都遵循冯·诺依曼模型,功能上等价(都是通用计算机)。但大型计算机在以下方面远超小型机:

  • 处理速度:更多核心、更高主频、专用加速芯片
  • 存储容量:更大内存和硬盘,可处理海量数据
  • 并行能力:同时服务成千上万用户(如银行交易系统)
  • 可靠性:冗余电源、热插拔硬盘、错误校验内存
  • 科学计算:天气预报、蛋白质折叠、核爆模拟等需要超算

类比:小汽车和卡车都能"运输",但运一栋楼的建材需要卡车而非小轿车。