# 第1章 计算机系统概论
> 📖 本章介绍计算机系统的基本概念和组成,是整个课程的基础。
> 🎯 重点理解计算机层次结构和冯·诺依曼体系
> ⚠️ 本章以基本概念为主,复习重点见课后习题1.5、1.6、1.7、1.11
---
## 📋 本章目录
- [[#1.1 计算机系统简介]]
- [[#1.2 计算机的基本组成]]
- [[#1.3 计算机硬件的主要技术指标]]
- [[#本章小结]]
- [[#📖 真题与作业精选]]
- [[#例题与解析]]
---
## 1.1 计算机系统简介
### 1.1.1 计算机的软硬件概念
计算机系统由 **硬件** 和 **软件** 两大部分组成。
```mermaid
graph TB
subgraph 计算机系统
subgraph 硬件
A[主机] --> A1[CPU]
A --> A2[主存储器]
A1 --> A11[运算器]
A1 --> A12[控制器]
B[外部设备] --> B1[输入设备]
B --> B2[输出设备]
end
subgraph 软件
C[系统软件] --> C1[操作系统]
C --> C2[语言处理程序]
C --> C3[数据库管理系统]
D[应用软件] --> D1[科学计算程序]
D --> D2[数据处理程序]
end
end
```
#### 硬件(Hardware)
> [!info] 定义
> 计算机的实体部分,由看得见摸得着的各种电子元器件组成。
- 主机:CPU + 主存储器
- 外部设备:输入设备 + 输出设备
理解硬件最好的方式是类比人体:CPU就像大脑,负责思考和处理信息;内存相当于短期记忆,临时存放正在处理的信息;硬盘是长期记忆,永久保存数据;键盘鼠标像眼睛和耳朵,接收外界输入;显示器则是嘴巴和手,把处理结果输出给我们。
#### 软件(Software)
> [!info] 定义
> 人们事先编制的具有各类特殊功能的程序,存放在存储器中。
**系统软件**:
- 操作系统(Windows、Linux等)
- 语言处理程序(编译程序、汇编程序)
- 数据库管理系统
- 服务程序(诊断、调试程序)
**应用软件**:
- 科学计算程序
- 数据处理程序
- 过程控制程序
- 事务管理程序
软件可以类比为人的思想和知识:操作系统就像基本生活技能(吃饭、走路),编译程序像翻译官,把高级语言翻译成机器能懂的语言,应用软件则是各种专业知识和技能。
> [!tip] 关键理解
> 计算机性能 = 硬件功能 + 软件功能。软硬件相互依存,缺一不可。
举个实际的例子:一台高性能电脑如果没有安装任何软件,什么都做不了;反过来,再厉害的软件在配置太低的硬件上也跑不起来。所以硬件和软件必须配合才能发挥作用。
---
### 1.1.2 计算机系统的层次结构
计算机系统具有多级层次结构,从低到高依次为:
```mermaid
graph TB
subgraph "五级层次结构"
M4["虚拟机器 M4
(高级语言机器)"] --> |"用编译程序翻译"| M3
M3["虚拟机器 M3
(汇编语言机器)"] --> |"用汇编程序翻译"| M2
M2["虚拟机器 M2
(操作系统机器)"] --> |"用机器语言解释"| M1
M1["传统机器 M1
(机器语言机器)"] --> |"用微程序解释"| M0
M0["微程序机器 M0
(微指令系统)"] --> |"由硬件直接执行"| HW["硬件电路"]
end
style M4 fill:#e1f5fe
style M3 fill:#b3e5fc
style M2 fill:#81d4fa
style M1 fill:#4fc3f7
style M0 fill:#29b6f6
style HW fill:#0288d1
```
> [!important] 这是考试高频考点
> 五级层次结构是填空题和简答题的常客,期中/期末都曾出现。记住顺序:微程序级 → 机器指令级 → 操作系统级 → 系统软件级 → 应用软件级。
#### 各层次说明
| 层次 | 名称 | 说明 | 语言 |
|------|------|------|------|
| M4 | 高级语言机器 | 用户编程层面 | 高级语言(C、Java等) |
| M3 | 汇编语言机器 | 汇编语言层面 | 汇编语言 |
| M2 | 操作系统机器 | 操作系统层面 | 机器语言 |
| M1 | 传统机器 | 硬件指令层面 | 机器语言 |
| M0 | 微程序机器 | 微指令层面 | 微指令 |
这个层次结构可以想象成一栋大楼:顶层(M4)是普通用户工作的地方,他们用C、Java等高级语言编程,就像说普通话一样自然;往下一层(M3)是专业程序员,用汇编语言,更接近机器但人还能听懂;再往下(M2)是系统管理员,管理整栋大楼的资源;底层(M1)是硬件工程师,直接操作机器指令;最底层(M0)是硬件电路,执行最基础的微指令,就像大楼的地基。
当我们用C语言写 `int a = 5 + 3;` 时,这个简单的加法在不同层次的表现是不同的:M4层看到的是 `5 + 3`,M3层编译器把它翻译成汇编指令,M2层操作系统负责分配资源,M1层变成二进制机器指令,M0层则是微指令控制ALU执行加法。
> [!note] 重要概念
> - **虚拟机**:不是实际存在的机器,而是通过软件实现的功能层次
> - **实际机器**:物理存在的硬件机器(M0和M1)
> - **软硬件交界**:随着技术发展,部分软件功能由硬件实现(固件)
#### 翻译程序的两种方式
```mermaid
graph LR
subgraph "编译程序"
A1[源程序] --> B1[一次性全部翻译] --> C1[目标程序] --> D1[执行]
end
subgraph "解释程序"
A2[源程序] --> B2[翻译一条] --> C2[执行一条] --> D2[下一条]
D2 --> B2
end
```
- **编译程序**:一次性全部翻译,然后执行(如C、Pascal)
- **解释程序**:边翻译边执行(如BASIC)
这两种方式的区别可以用看英文小说来理解:编译程序就像请翻译把整本小说翻译成中文,然后你读中文版,优点是读得快,缺点是翻译时间长;解释程序就像翻译坐在旁边,你读一句英文他翻译一句中文给你听,优点是马上能开始读,缺点是读得慢。
实际应用中,C语言用编译方式,先把 `.c` 文件编译成 `.exe` 文件再运行;Python用解释方式,边翻译边执行,不需要生成单独的可执行文件。
> [!tip] 考试注意
> 编译vs解释是常见的对比题。考试中经常会给出具体语言(如C、Python)让你判断属于哪种方式,并说明各自的优缺点。简单记忆:编译快但调试慢,解释慢但调试快。
---
### 1.1.3 计算机组成和计算机体系结构
这两个概念容易混淆,需要明确区分:
| 概念 | 定义 | 关注点 | 示例 |
|------|------|--------|------|
| 计算机体系结构 | 程序员所见到的计算机属性 | 指令集、数据类型、寻址技术 | 是否有乘法指令 |
| 计算机组成 | 体系结构的实现方式 | 硬件细节、电路实现 | 乘法指令用专用电路还是加法器实现 |
区分这两个概念可以类比买汽车:体系结构就像汽车的"功能规格"(几个座位、最高时速、有没有天窗),组成则是"具体实现"(发动机是V6还是V8、变速箱是手动还是自动)。
IBM System/370系列就是很好的例子:所有机型的体系结构相同(指令集一样),但组成不同(不同型号性能、价格差异很大),这样用户的软件投资就能得到保护。
> [!example] 举例说明
> 就像iPhone和Android手机:体系结构不同(指令集、系统调用完全不同),但组成可以相同(可能都用ARM处理器),所以iOS应用不能直接在Android上运行。
---
## 1.2 计算机的基本组成
### 1.2.1 冯·诺依曼计算机的特点
> [!important] 冯·诺依曼体系(1945年)
> 基于"存储程序"概念的计算机体系结构
>
> ⚠️ 这是第1章最高频的考点,简答题几乎必考,期中/期末多次出现。
**五大特点**:
1. 计算机由 **运算器、存储器、控制器、输入设备、输出设备** 五大部件组成
2. 指令和数据以同等地位存放于存储器内,并可按地址寻访
3. 指令和数据均用 **二进制数** 表示
4. 指令由 **操作码** 和 **地址码** 组成
5. 指令在存储器内按顺序存放,通常顺序执行
```mermaid
graph TB
subgraph "冯·诺依曼计算机结构"
direction TB
CU[控制器] --> |"控制信号"| ALU[运算器]
CU --> |"控制信号"| MEM[存储器]
CU --> |"控制信号"| IN[输入设备]
CU --> |"控制信号"| OUT[输出设备]
IN --> |"数据"| MEM
MEM --> |"数据"| ALU
ALU --> |"数据"| MEM
MEM --> |"数据"| OUT
end
style CU fill:#ff9999
style ALU fill:#99ccff
style MEM fill:#99ff99
style IN fill:#ffcc99
style OUT fill:#cc99ff
```
> [!warning] 易错点
> 冯·诺依曼最初提出的结构是以 **运算器** 为中心,但 **现代计算机** 已经改为以 **存储器** 为中心。考试时一定要看清题目问的是"冯·诺依曼结构"还是"现代计算机结构",中心不同!
冯·诺依曼体系可以理解为一个高效的工厂:运算器是生产车间,负责加工产品;存储器是仓库,存放原材料和成品;控制器是厂长,指挥整个生产过程;输入设备是采购部,接收订单和原材料;输出设备是销售部,把成品交给客户。"存储程序"的概念就是把生产计划(程序)和原材料(数据)都放在仓库里,厂长按计划指挥生产。
当你用电脑计算 `5 + 3` 时,整个过程是这样的:键盘输入数据,存储器存放数字和指令,控制器指挥运算器执行加法,运算器计算结果,最后显示器显示答案。
### 1.2.2 计算机的硬件框图
#### 传统结构(以运算器为中心)
```mermaid
graph LR
IN[输入设备] --> |"数据"| ALU[运算器]
ALU --> |"数据"| MEM[存储器]
MEM --> |"数据"| ALU
ALU --> |"数据"| OUT[输出设备]
CU[控制器] --> |"控制"| ALU
CU --> |"控制"| MEM
CU --> |"控制"| IN
CU --> |"控制"| OUT
```
#### 现代结构(以存储器为中心)
```mermaid
graph TB
IN[输入设备] --> |"数据"| MEM[存储器]
MEM --> |"数据"| OUT[输出设备]
MEM --> |"数据"| ALU[运算器]
ALU --> |"数据"| MEM
CU[控制器] --> |"控制信号"| ALU
CU --> |"控制信号"| MEM
CU --> |"控制信号"| IN
CU --> |"控制信号"| OUT
```
> [!tip] 结构变化的原因
> 以存储器为中心可以减少数据传输的瓶颈,提高系统效率。
从传统结构到现代结构的变化,可以用快递公司来理解:传统结构中,所有快递都要经过分拣中心(运算器),即使是从仓库直接发给客户的也要先绕一圈,效率很低;现代结构中,仓库可以直接发货给客户,分拣中心只处理需要加工的快递,效率大大提高。
比如从硬盘复制文件到U盘时,传统结构需要经过CPU,现代结构则可以直接通过内存传输,不占用CPU资源。
### 1.2.3 各部件功能详解
| 部件 | 功能 | 关键特性 |
|------|------|----------|
| **运算器** | 完成算术运算和逻辑运算 | 暂存中间结果 |
| **存储器** | 存放数据和程序 | 按地址访问 |
| **控制器** | 控制指挥程序运行 | 产生控制信号 |
| **输入设备** | 信息形式转换(人→机) | 键盘、鼠标等 |
| **输出设备** | 信息形式转换(机→人) | 显示器、打印机等 |
把这些部件想象成一个餐厅:运算器是厨师,负责加工食材,能做各种菜,会把做好的菜暂时放在操作台上;存储器是冰箱和货架,存放食材和菜谱,每个格子都有编号,需要什么直接去对应编号的格子拿;控制器是餐厅经理,看订单决定做什么菜,指挥厨师工作,协调各部门配合;输入设备是服务员,接收顾客点单,把点单翻译成厨房能懂的语言;输出设备是传菜员,把做好的菜端给顾客。
### 1.2.4 现代计算机组成
```mermaid
graph TB
subgraph "现代计算机组成"
subgraph "主机"
CPU["CPU"] --> ALU["运算器"]
CPU --> CU["控制器"]
MM["主存储器
(主存)"]
end
subgraph "外部设备"
IO["I/O设备"] --> INPUT["输入设备"]
IO --> OUTPUT["输出设备"]
end
end
CPU <--> |"数据/地址"| MM
CPU <--> |"数据"| IO
MM <--> |"数据"| IO
style CPU fill:#ff9999
style MM fill:#99ff99
style IO fill:#99ccff
```
**术语说明**:
- **CPU** = 运算器 + 控制器
- **主机** = CPU + 主存储器
- **I/O设备** = 输入设备 + 输出设备(外部设备)
现代计算机就像一个现代化的办公大楼:CPU是总经理办公室,其中运算器是财务部负责计算,控制器是总经理指挥全局;主存储器是办公桌,临时存放正在处理的文件,速度快但容量小;外部设备包括前台(输入设备)和公关部(输出设备)。
---
## 1.3 计算机硬件的主要技术指标
### 1.3.1 机器字长
> [!info] 定义
> CPU一次能处理数据的位数,通常与CPU寄存器位数有关。
- 影响:字长越长,计算精度越高
- 常见:8位、16位、32位、64位
机器字长可以理解为工人一次能搬多少东西:8位工人一次搬8块砖,16位搬16块,32位搬32块,64位搬64块。搬得越多,处理速度越快,计算精度越高。早期的单片机是8位,大多数嵌入式系统是32位,现代个人电脑和服务器是64位。
### 1.3.2 存储容量
> [!info] 定义
> 存储器能存放二进制代码的总位数
**计算公式**:
$$存储容量 = 存储单元数 \times 存储字长$$
**单位换算**:
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
存储容量就像仓库的大小:存储单元数是仓库有多少个格子,存储字长是每个格子能放多少东西,两者相乘就是总容量。比如一个仓库有1024个格子,每个格子能放8个鸡蛋,总容量就是1024×8=8192个鸡蛋,也就是1KB。
### 1.3.3 运算速度
> [!important] MIPS和CPI的计算是考试计算题高频考点
> 经常出现在填空题和计算题中,需要熟练掌握公式及相互转换。
**常用指标**:
| 指标 | 说明 | 计算方式 |
|------|------|----------|
| MIPS | 每秒百万条指令 | 指令数 / 执行时间 |
| CPI | 每条指令时钟周期数 | 时钟周期数 / 指令数 |
| FLOPS | 每秒浮点运算次数 | 浮点运算数 / 执行时间 |
这三个指标可以这样理解:MIPS是工人每秒能处理多少个订单,CPI是处理一个订单需要多少个步骤,FLOPS是每秒能计算多少道数学题。MIPS越高处理越快,CPI越低效率越高,FLOPS越强计算能力越强。
**核心公式**:
$$MIPS = \frac{主频}{CPI \times 10^6}$$
$$CPI = \frac{时钟周期数}{指令条数}$$
$$执行时间 = CPI \times 指令条数 \times 时钟周期$$
### 1.3.4 其他指标
- **主频**:CPU时钟频率(GHz)
- **带宽**:数据传输速率(MB/s)
- **兼容性**:软件在不同机器上的通用性
主频就像工人的心跳速度,主频越高干活越快,但不一定效率高;带宽就像高速公路的车道数,车道越多能通过的车辆越多;兼容性就像不同品牌的手机能不能用同一个充电器。
---
## 📝 本章小结
### 核心概念
1. **计算机系统** = 硬件 + 软件
2. **层次结构**:从微程序机器到高级语言机器的多级层次
3. **冯·诺依曼体系**:存储程序、五大部件、二进制表示
4. **现代计算机**:以存储器为中心,CPU = 运算器 + 控制器
### 关键术语
| 术语 | 英文 | 含义 |
|------|------|------|
| CPU | Central Processing Unit | 中央处理器 |
| ALU | Arithmetic Logic Unit | 算术逻辑单元 |
| CU | Control Unit | 控制单元 |
| MM | Main Memory | 主存储器 |
| I/O | Input/Output | 输入输出 |
### 重点图示
> [!summary] 必须掌握的图
> 1. 计算机系统层次结构图
> 2. 冯·诺依曼计算机结构框图
> 3. 现代计算机组成框图(以存储器为中心)
---
## 📖 真题与作业精选
> 以下题目来自历年期中/期末考试、课后作业和复习材料,覆盖本章最核心的考点。
### 真题1:冯·诺依曼计算机的特点
**题目**:冯·诺依曼计算机的特点是什么?
**参考答案**:
冯·诺依曼计算机有五大特点:
1. 由运算器、存储器、控制器、输入设备、输出设备 **五大部件** 组成
2. 指令和数据均用 **二进制** 表示
3. 采用 **存储程序** 的工作方式——指令和数据以同等地位存放在存储器中
4. 指令由 **操作码 + 地址码** 组成
5. 指令在存储器内 **按顺序存放,通常顺序执行**
**易错提醒**:注意区分冯·诺依曼结构和现代计算机结构。冯·诺依曼最初提出的是以 **运算器** 为中心,但现代计算机已经改为以 **存储器** 为中心。考试中常见陷阱就是把"以存储器为中心"写进冯·诺依曼特点中,这道题问的是冯·诺依曼原始特点,答案是五大部件、二进制、存储程序、操作码+地址码、顺序执行这五条。
### 真题2:计算机的5级软件层次
**题目**:计算机的5级软件层次是什么?
**参考答案**:
从低到高依次为:**微程序级 → 机器指令级 → 操作系统级 → 系统软件级 → 应用软件级**。
具体对应关系:M0微程序机器(由硬件直接执行微指令)→ M1传统机器(执行机器语言)→ M2操作系统机器(操作系统管理资源)→ M3虚拟机器(汇编语言/系统软件层)→ M4虚拟机器(高级语言层)。
**记忆技巧**:从硬件到用户,从底层到顶层,"微机操系应"五个字就能记住。注意底下两层(M0、M1)是实际机器,上面三层是虚拟机器。
### 真题3:编译程序和解释程序的区别
**题目**:编译程序和解释程序的区别?
**参考答案**:
| 对比项 | 编译程序 | 解释程序 |
|--------|----------|----------|
| 翻译方式 | 一次性全部翻译成目标程序,再执行 | 翻译一条执行一条,边翻译边执行 |
| 执行速度 | 快(目标程序已生成,直接运行) | 慢(每次执行都要重新翻译) |
| 调试效率 | 慢(需修改后重新编译) | 快(逐行执行,便于定位错误) |
| 代表语言 | C、C++、Pascal | Python、JavaScript、BASIC |
简单记忆:**编译快但调试慢,解释慢但调试快**。C语言是典型的编译型语言,Python是典型的解释型语言。
---
## 🧪 例题与解析
### 例题1:计算机层次结构
**题目**:简述计算机系统的五级层次结构,并说明各层的作用。
**答案**:
计算机系统的五级层次结构从低到高依次为:
1. **微程序机器M0(微指令系统)**:执行最基础的微指令,由硬件直接执行,速度最快。比如控制ALU执行加法操作的微指令。
2. **传统机器M1(机器语言机器)**:执行机器语言程序,直接执行二进制指令。比如执行 `000001 0000000101` 这样的机器指令。
3. **虚拟机器M2(操作系统机器)**:管理计算机资源,提供系统服务。比如Windows管理内存分配、进程调度。
4. **虚拟机器M3(汇编语言机器)**:执行汇编语言程序,用汇编程序翻译成机器语言。比如执行 `ADD R1, R2, R3` 这样的汇编指令。
5. **虚拟机器M4(高级语言机器)**:执行高级语言程序,用编译程序翻译成汇编语言或机器语言。比如执行 `int a = 5 + 3;` 这样的C语言语句。
这就像一栋5层大楼:1楼是地基和电路,2楼是生产车间,3楼是管理部门,4楼是设计部门,5楼是销售部门。
### 例题2:编译与解释
**题目**:比较编译程序和解释程序的区别,并举例说明。
**答案**:
| 特性 | 编译程序 | 解释程序 |
|------|----------|----------|
| 翻译方式 | 一次性全部翻译 | 边翻译边执行 |
| 执行速度 | 快(已翻译成目标程序) | 慢(每次都要翻译) |
| 错误处理 | 编译时发现所有错误 | 运行时逐行发现错误 |
| 代表语言 | C、Pascal、FORTRAN | BASIC、Python、JavaScript |
编译程序就像请翻译把整本小说翻译成中文,然后你读中文版,读得快但翻译时间长;解释程序就像翻译坐在旁边,你读一句他翻译一句,马上能开始读但读得慢。
C语言是编译型:`hello.c` → `gcc` → `hello.exe` → 运行;Python是解释型:`python hello.py` → 边翻译边执行。
### 例题3:冯·诺依曼体系
**题目**:简述冯·诺依曼计算机的特点,并说明为什么现代计算机采用以存储器为中心的结构。
**答案**:
冯·诺依曼计算机的五大特点:五大部件组成(运算器、存储器、控制器、输入设备、输出设备);存储程序概念(指令和数据同等地位存放于存储器);二进制表示;指令格式(操作码+地址码);顺序执行。
现代计算机采用以存储器为中心的结构,主要是为了减少数据传输瓶颈、提高系统效率。传统结构中所有数据都要经过运算器,现代结构中存储器可以直接与I/O设备交换数据,CPU可以专心处理计算任务,I/O操作不占用CPU时间。
比如从硬盘复制文件到U盘时,传统结构需要经过CPU,现代结构可以直接通过内存传输,效率更高。
### 例题4:技术指标计算
**题目**:某计算机主频为2GHz,CPI为4,求该计算机的MIPS。
**答案**:
主频2GHz = 2×10⁹ Hz,CPI=4,代入公式:
$$MIPS = \frac{主频}{CPI \times 10^6} = \frac{2 \times 10^9}{4 \times 10^6} = 500$$
该计算机的MIPS为500,即每秒执行5亿条指令。
可以理解为:心跳速度(主频)每秒跳20亿次,每个订单需要4次心跳(CPI=4),每秒能处理20亿÷4=5亿个订单。
### 例题5:存储容量计算
**题目**:某计算机存储器有16位地址线,8位数据线,求该存储器的容量。
**答案**:
16位地址线可以表示 2¹⁶ = 65536 个地址,即有65536个存储单元;8位数据线表示每个单元存8位数据(1字节)。
存储容量 = 65536 × 8位 = 65536字节 = 64KB。
这就像一个仓库有65536个格子,每个格子能放8个鸡蛋,总容量就是64KB。
---
## ⚡ 知识点速记卡
> 考前快速过一遍,30秒回忆整章核心
>
> **本章考试形式**:以填空题、简答题、选择题为主,偶尔出现计算题(MIPS/CPI)。复习时重点对照课后习题1.5、1.6、1.7、1.11。
**计算机系统 = 硬件 + 软件**,两者缺一不可。
**五级层次**(从下往上):微程序机器M0 → 传统机器M1 → 操作系统M2 → 汇编语言M3 → 高级语言M4。底下两层是实际机器,上面三层是虚拟机器。(简答题高频)
**冯·诺依曼五大特点**:①五大部件(运算器+存储器+控制器+输入+输出)②存储程序(指令和数据同等地位存放)③二进制表示 ④指令=操作码+地址码 ⑤顺序执行。(几乎每次考试都会出现)
**现代计算机**以存储器为中心(不是运算器),CPU = 运算器 + 控制器,主机 = CPU + 主存。注意和冯·诺依曼原始结构的区别。
**三个速度指标**:MIPS(每秒百万条指令,越大越快)、CPI(每条指令时钟周期数,越小越高效)、FLOPS(每秒浮点运算次数)。公式:MIPS = 主频 / (CPI × 10^6)。(计算题考点)
**编译 vs 解释**:编译一次性全部翻译再执行(C),解释边翻译边执行(Python)。编译快但调试慢,解释慢但调试快。(对比题常考)
**容量计算**:存储容量 = 存储单元数 × 字长。20位地址线 → 2²⁰ = 1M个单元。
**体系结构 vs 组成**:体系结构是程序员看到的属性(指令集、数据类型),组成是硬件实现方式(电路细节)。体系结构相同不代表组成相同。
---
## 🔗 相关链接
- [[00_计算机组成原理学习指南]] - 返回主目录
- [[03_系统总线]] - 下一章
- [[06_运算方法]] - 数据表示相关内容
- [[08_CPU结构与功能]] - CPU详细设计
---
*本章难度:⭐⭐ 简单*
*重要程度:⭐⭐⭐ 基础*