第一章 计算机系统概述
第一章 计算机系统概述
本章考情:选择题为主,每年约1~2题。重点:冯·诺依曼体系结构特点、各部件功能、性能指标计算(MIPS/CPI/CPU执行时间)、计算机层次结构。
1.1 计算机发展历程(了解即可)
⚠️ 注意:2025年408大纲已删除"计算机发展历程",但了解发展脉络有助于理解为什么计算机要这样设计。
| 代 | 年代 | 逻辑元件 | 特点 |
|---|---|---|---|
| 第一代 | 1946-1957 | 电子管 | 机器语言/汇编语言编程,体积庞大 |
| 第二代 | 1958-1964 | 晶体管 | 高级语言出现(FORTRAN),体积缩小 |
| 第三代 | 1965-1971 | 中小规模集成电路 | 操作系统出现,半导体存储器 |
| 第四代 | 1972至今 | 大规模/超大规模集成电路 | 微处理器诞生,个人计算机普及 |
🗣️ 大白话:计算机发展的趋势就是——元件越来越小、速度越来越快、价格越来越便宜。从占满一个房间到放进口袋里。
1.2 计算机硬件的基本组成
一、冯·诺依曼计算机
冯·诺依曼体系结构是现代计算机的基础,1945年由冯·诺依曼(John von Neumann)提出。
冯·诺依曼计算机的五大特点:
| 序号 | 特点 | 说明 |
|---|---|---|
| 1 | 由运算器、控制器、存储器、输入设备、输出设备五大部件组成 | 五大部件缺一不可 |
| 2 | 指令和数据以同等地位存放在存储器中,可按地址访问 | 这是"存储程序"思想的核心 |
| 3 | 指令和数据均用二进制表示 | 计算机只认识0和1 |
| 4 | 指令由操作码和地址码组成 | 操作码说"做什么",地址码说"对谁做" |
| 5 | 存储程序原理:将程序事先存入主存储器中,然后让计算机自动逐条取出指令并执行 | 这是冯·诺依曼机最核心的思想 |
🗣️ 大白话:冯·诺依曼体系的核心就一句话——"把程序和数据都存在内存里,然后让计算机自己一条条读指令、执行指令"。在此之前,"编程"要手动拔插电线,改一下程序就要重新接线,累死人。冯·诺依曼说:"何必呢?把指令也当成数据存起来不就好了?"——这就是"存储程序"思想。
⚠️ 2009年真题考点:冯·诺依曼计算机中,指令和数据都以二进制的形式存放在存储器中,CPU如何区分它们? 答:依据指令周期的不同阶段——在取指阶段(取指周期),从存储器取出的是指令;在执行阶段(执行周期),从存储器取出的是数据。也就是说,区分指令和数据靠的是时间(时序),而不是靠内容本身。
二、冯·诺依曼计算机的五大部件
┌─────────────┐
输入设备 ─────> │ 存储器 │ ──────> 输出设备
│ (主存储器) │
└───┬───┬─────┘
数据↕ ↕数据
┌───┴───┴─────┐
│ 运算器 |
│ (ALU) │
└───────┬─────┘
控制信号↕
┌───────┴──────┐
│ 控制器 │
│ (CU) │
└──────────────┘
各部件的核心寄存器和功能:
| 部件 | 核心组件 | 功能 |
|---|---|---|
| 运算器 | ALU(算术逻辑单元)、ACC(累加器)、MQ(乘商寄存器)、X(通用操作数寄存器)、PSW(程序状态字) | 执行算术运算和逻辑运算 |
| 控制器 | CU(控制单元)、IR(指令寄存器)、PC(程序计数器) | 协调控制各部件工作 |
| 存储器 | MAR(存储器地址寄存器)、MDR(存储器数据寄存器)、存储体 | 存放程序和数据 |
| 输入设备 | 键盘、鼠标、扫描仪等 | 将外部信息转换为计算机可识别的形式 |
| 输出设备 | 显示器、打印机、音箱等 | 将计算结果转换为人或其他设备可使用的形式 |
关键寄存器详解:
| 寄存器 | 全称 | 功能 | 位数 |
|---|---|---|---|
| PC | Program Counter(程序计数器) | 存放下一条待执行指令的地址,具有自动加1功能 | 与MAR位数相同 |
| IR | Instruction Register(指令寄存器) | 存放当前正在执行的指令 | 与MDR位数相同 |
| MAR | Memory Address Register | 存放要访问的存储单元的地址 | 位数决定最大寻址空间 |
| MDR | Memory Data Register | 存放从存储器读出或要写入存储器的数据 | 位数=存储字长 |
| ACC | Accumulator(累加器) | 运算结果的暂存,也作为运算的一个输入 | 与机器字长相同 |
| PSW | Program Status Word | 存放条件码(OF/SF/ZF/CF等标志位) | — |
🗣️ 大白话:
- PC就像你读书时用手指着"下一行要读的地方",你读完一行,手指自动往下移。
- IR就像你正在朗读的那一行文字。
- MAR就像你告诉图书管理员"我要第几本书"。
- MDR就像管理员从书架上取下来放到柜台上的那本书。
⚠️ 易错点:MAR和MDR在逻辑上属于主存,但在现代计算机中,它们通常被集成到CPU芯片内部。对程序员不可见(程序员不能直接操作MAR、MDR、IR)。PC对汇编程序员可见(可以通过JMP等指令修改PC)。
📝 2010年真题:下列寄存器中,汇编语言程序员可见的是? → PC(程序计数器)。MAR、MDR、IR都是CPU内部工作寄存器,对程序员不可见。
三、现代计算机的结构
现代计算机以CPU(中央处理器)和主存储器为核心:
CPU = 运算器 + 控制器
主机 = CPU + 主存储器
⚠️ 重要区分:
- 冯·诺依曼机以运算器为中心(所有数据都经过运算器中转)
- 现代计算机以存储器为中心(运算器和控制器合成CPU,I/O设备可直接与存储器交换数据,不必经过运算器)
1.3 计算机的工作过程
一、存储程序的工作方式
计算机工作的基本流程:**取指令 → 分析指令 → 执行指令 → 再取下一条指令...**循环往复,直到遇到停机指令。
详细过程:
① (PC) → MAR // 将PC中的指令地址送到MAR
② M(MAR) → MDR // 根据MAR中的地址从主存中读出指令,送到MDR
③ (MDR) → IR // 将指令从MDR送到IR中保存
④ OP(IR) → CU // 将指令的操作码部分送到CU译码
⑤ Ad(IR) → MAR // 将指令的地址码部分送到MAR(取操作数)
⑥ M(MAR) → MDR // 从主存中读出操作数
⑦ (MDR) → ACC // 操作数送ACC,执行运算
⑧ (PC) + 1 → PC // PC自动加1,指向下一条指令
🗣️ 大白话:计算机工作就像一个特别死板的厨师——
- 先看菜谱的第几步(PC告诉它看哪一步)
- 翻开菜谱读这一步的内容(取指令)
- 理解这一步要干什么(译码)
- 照着做(执行——比如"切5块土豆"就是"取出5块土豆并切")
- 自动看下一步(PC+1)
- 不断重复,直到菜谱说"出锅"(停机指令)
⚠️ 注意:步骤⑧
(PC)+1→PC在取指的同时就完成了(与步骤②同时进行),而不是执行完指令才加1。这一点在相对寻址的计算中至关重要!
1.4 计算机系统的层次结构
一、计算机系统 = 硬件 + 软件
┌──────────────────┐
│ 应用程序 │ ← 最终用户
├──────────────────┤
│ 高级语言 │ ← 编译程序翻译
├──────────────────┤
│ 汇编语言 │ ← 汇编程序翻译
├──────────────────┤
│ 操作系统 │ ← 管理硬件资源
├──────────────────┤
│ 指令集架构(ISA) │ ← 软硬件交界面
├──────────────────┤
│ 微程序机器 │ ← 硬件层
├──────────────────┤
│ 数字逻辑电路 │ ← 最底层
└──────────────────┘
ISA(Instruction Set Architecture,指令集体系结构):是软件和硬件之间的界面。ISA规定了:
- 指令格式、指令类型、操作类型
- 操作数的类型、存取方式
- 寄存器的种类和数量
- 数据类型、寻址方式
- 中断机制等
🗣️ 大白话:ISA就像"约定好的暗号"——硬件团队和软件团队各干各的,但双方约定好:你发什么暗号(指令),我就做什么动作。只要暗号不变,硬件随便换(比如不同厂家的x86 CPU),软件照样能跑。
📝 2024年真题:ISA规定了以下哪个? → 定长指令字。ISA规定了指令格式、寻址方式、寄存器等,不规定具体电路实现(如阵列乘法器、微程序控制器、单总线数据通路)。
二、编译程序与解释程序
| 翻译方式 | 工作方式 | 特点 |
|---|---|---|
| 编译程序 | 将高级语言源程序整体翻译为机器语言目标程序,然后执行 | 执行时不需要源程序,速度快 |
| 解释程序 | 逐条翻译、逐条执行 | 不产生目标程序,每次运行都需要源程序,速度慢 |
🗣️ 大白话:编译就像把整本英文小说翻译成中文再看;解释就像请个翻译坐旁边,他读一句英文就给你翻译一句。
三、指令、微指令、微操作的层次关系
| 概念 | 层级 | 说明 |
|---|---|---|
| 机器指令 | 最高层 | CPU能直接识别并执行的指令(如ADD、MOV) |
| 微程序 | 中间层 | 一条机器指令对应一个微程序 |
| 微指令 | — | 微程序中的每一步,一条微指令可以完成一个或多个微操作 |
| 微操作 | 最底层 | 最基本的不可再分的操作(如 PC→MAR) |
📝 2024年真题:CPU能直接理解并执行的是? → 微指令和机器指令(选B)。伪指令是汇编语言层面的,汇编指令需要汇编器翻译。
1.5 计算机的性能指标
一、CPU性能指标
| 指标 | 定义 | 公式 |
|---|---|---|
| CPU主频(时钟频率) | CPU内部时钟的振荡频率 | (T为时钟周期) |
| CPI | Clock cycles Per Instruction,执行每条指令平均所需的时钟周期数 | — |
| IPC | Instructions Per Clock cycle,每个时钟周期执行的指令数 | |
| MIPS | Million Instructions Per Second,每秒执行百万条指令 | |
| MFLOPS | 每秒百万次浮点运算 | — |
| CPU执行时间 | CPU执行某段程序所需的时间 |
🗣️ 大白话:
- 主频就像你心跳的速度,"滴答"得越快,干活的节奏就越快。
- CPI就像每做一件事平均要"滴答"几下。简单的事1下就够,复杂的事可能要10下。
- MIPS就像"每秒能做多少件事"。
- 所以:干活时间 = 事情总数 × 每件事要滴答几下 × 每次滴答多长时间。
⚠️ 常见陷阱:
- 主频高 ≠ 速度一定快(还要看CPI,一条指令需要的周期数可能更多)
- MIPS不能准确反映性能(不同指令的功能强弱不同,一条x86指令可能完成ARM多条指令的功能)
- CPI取决于指令类型的混合比例——不同程序的CPI不同
📝 2010年真题:下列选项中,能缩短程序执行时间的措施是?
- Ⅰ. 提高CPU时钟频率 ✅(f增大 → 时钟周期T减小 → 执行时间减小)
- Ⅱ. 优化数据通路结构 ✅(可减少CPI)
- Ⅲ. 对程序进行编译优化 ✅(可减少指令条数或选择CPI更小的指令)
- 答案:D. Ⅰ、Ⅱ和Ⅲ
📝 2011年真题:描述浮点数操作速度的指标是? → D. MFLOPS(Million Floating-point Operations Per Second)。MIPS描述定点运算速度,CPI是每条指令的时钟周期数,IPC是每周期指令数。
二、整机性能指标
| 指标 | 定义 |
|---|---|
| 机器字长 | CPU一次整数运算能处理的二进制数据的位数(通常等于内部寄存器的位数) |
| 指令字长 | 一条指令的二进制位数(可以等于或大于机器字长) |
| 存储字长 | 一个存储单元存储的二进制位数 |
| 数据通路带宽 | 数据总线一次能传送信息的位数 |
| 主存容量 | 主存能存储的最大信息量 = 存储单元个数 × 存储字长 |
⚠️ 易混淆概念:
- 字节(Byte)= 8 bit,这是固定的
- 字(Word)= 机器字长的位数,不同计算机可能不同(16位机的"字"=16bit,32位机的"字"=32bit)
- 按字节编址:每个地址对应1个字节(8bit)
- 按字编址:每个地址对应1个字
📝 性能指标综合计算例题:
2009年真题(大题):某计算机的CPU主频为500MHz,CPI为5。某外设数据传输率为0.5MB/s,采用中断方式与主机进行数据传送,以32位为传输单位,中断服务程序包含18条指令,中断服务的其他开销相当于2条指令的执行时间。
(1)中断方式下,CPU用于该外设I/O的时间百分比是多少?
解:
- 每条指令执行时间 = CPI × T = 5 × (1/500MHz) = 10ns
- 每次中断处理时间 = (18+2) 条指令 × 10ns = 200ns = 0.2μs
- 每秒中断次数 = 0.5MB/s ÷ 4B = 125,000次/s
- CPU用于I/O的时间占比 = 125,000 × 200ns / 1s = 2.5%
(2)改用DMA方式,每次传送5000B,DMA预处理和后处理总开销为500个时钟周期,CPU时间百分比?
解:
- 每秒DMA次数 = 5MB/s ÷ 5000B = 1000次/s
- 每次DMA的CPU开销 = 500个时钟周期 × (1/500MHz) = 1μs
- CPU用于I/O的时间占比 = 1000 × 1μs / 1s = 0.1%
💡 对比:中断方式CPU开销2.5%,DMA方式仅0.1%。这说明DMA方式CPU效率远高于中断方式,这就是为什么磁盘等高速设备要用DMA。
📌 第一章 小结
| 考点 | 重要程度 | 常见题型 |
|---|---|---|
| 冯·诺依曼体系5大特点 | ⭐⭐⭐ | 选择题 |
| 区分指令和数据的方法 | ⭐⭐⭐ | 选择题 |
| 各寄存器(PC/IR/MAR/MDR)功能 | ⭐⭐⭐⭐ | 选择题 |
| CPU执行时间/MIPS/CPI计算 | ⭐⭐⭐⭐ | 选择题、大题计算 |
| 程序员可见/不可见寄存器 | ⭐⭐⭐ | 选择题 |
| ISA的定义与作用 | ⭐⭐ | 选择题 |
| 编译程序 vs 解释程序 | ⭐⭐ | 选择题 |