QEQuantumEinsteinSearchCtrl/⌘K

第一章 计算机系统概述

8 分钟阅读3,25216 个小节
返回目录

第一章 计算机系统概述

本章考情:选择题为主,每年约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(存储器数据寄存器)、存储体存放程序和数据
输入设备键盘、鼠标、扫描仪等将外部信息转换为计算机可识别的形式
输出设备显示器、打印机、音箱等将计算结果转换为人或其他设备可使用的形式

关键寄存器详解

寄存器全称功能位数
PCProgram Counter(程序计数器)存放下一条待执行指令的地址,具有自动加1功能与MAR位数相同
IRInstruction Register(指令寄存器)存放当前正在执行的指令与MDR位数相同
MARMemory Address Register存放要访问的存储单元的地址位数决定最大寻址空间
MDRMemory Data Register存放从存储器读出或要写入存储器的数据位数=存储字长
ACCAccumulator(累加器)运算结果的暂存,也作为运算的一个输入与机器字长相同
PSWProgram 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,指向下一条指令

🗣️ 大白话:计算机工作就像一个特别死板的厨师——

  1. 先看菜谱的第几步(PC告诉它看哪一步)
  2. 翻开菜谱读这一步的内容(取指令)
  3. 理解这一步要干什么(译码)
  4. 照着做(执行——比如"切5块土豆"就是"取出5块土豆并切")
  5. 自动看下一步(PC+1)
  6. 不断重复,直到菜谱说"出锅"(停机指令)

⚠️ 注意:步骤⑧ (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内部时钟的振荡频率f=1Tf = \frac{1}{T}(T为时钟周期)
CPIClock cycles Per Instruction,执行每条指令平均所需的时钟周期数
IPCInstructions Per Clock cycle,每个时钟周期执行的指令数IPC=1CPIIPC = \frac{1}{CPI}
MIPSMillion Instructions Per Second,每秒执行百万条指令MIPS=fCPI×106MIPS = \frac{f}{CPI \times 10^6}
MFLOPS每秒百万次浮点运算
CPU执行时间CPU执行某段程序所需的时间TCPU=指令条数×CPIf=指令条数×CPI×TT_{CPU} = \frac{指令条数 \times CPI}{f} = 指令条数 \times CPI \times T

🗣️ 大白话

  • 主频就像你心跳的速度,"滴答"得越快,干活的节奏就越快。
  • CPI就像每做一件事平均要"滴答"几下。简单的事1下就够,复杂的事可能要10下。
  • MIPS就像"每秒能做多少件事"。
  • 所以:干活时间 = 事情总数 × 每件事要滴答几下 × 每次滴答多长时间。

⚠️ 常见陷阱

  1. 主频高 ≠ 速度一定快(还要看CPI,一条指令需要的周期数可能更多)
  2. MIPS不能准确反映性能(不同指令的功能强弱不同,一条x86指令可能完成ARM多条指令的功能)
  3. 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 解释程序⭐⭐选择题