第一章 计算机系统概述

1.1 计算机系统的基本组成

1.1.1 计算机系统的层次

计算机系统 = 硬件系统 + 软件系统

组成部分 说明
硬件系统 CPU、主存、I/O设备、总线、接口
软件系统 系统软件(操作系统、编译程序等)、应用软件

1.1.2 计算机系统的基本功能

计算机系统用于执行程序来处理数据,其核心功能包括:

  1. 数据存储:将原始数据和程序存入主存
  2. 数据处理:通过CPU运算器完成算术和逻辑运算
  3. 数据传输:通过总线在不同部件间传输数据
  4. 程序控制:控制器自动控制指令的执行顺序

1.2 冯·诺依曼思想与体系结构 ⭐

1.2.1 冯·诺依曼思想要点

1946年,冯·诺依曼提出了存储程序计算机的设计思想,其核心要点包括:

  1. 采用存储程序的工作方式
  2. 程序和数据事先存入主存
  3. 计算机能自动依次执行指令,无需人工干预

  4. 五大基本部件

  5. 主存储器(Memory):存放指令和数据
  6. 算术逻辑部件(ALU):执行算术和逻辑运算
  7. 控制器(CU):自动逐条取出指令并进行译码
  8. 通用寄存器组(GPRs):临时存放操作数
  9. 输入/输出部件:与用户交互

  10. 指令和数据用二进制表示

  11. 简化了硬件设计
  12. 便于逻辑运算实现

  13. 指令分为操作码和地址码

  14. 操作码:指明操作类型(加、减、传送等)
  15. 地址码:指明操作数地址或操作数本身

1.2.2 冯·诺依曼结构硬件框图

                    ┌─────────────┐
                    │     ALU     │
                    │ (运算器)    │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
        ┌─────┴─────┐  ┌──┴───┐  ┌─────┴─────┐
        │  通用寄存器 │  │标志寄存器│  │   控制器   │
        │   (GPRs)   │  │  (PSW) │  │    (CU)    │
        └─────┬─────┘  └──────┘  └───┬──────┘
              │                       │
              └───────────┬───────────┘
                          │
                    ┌─────┴─────┐
                    │    总线    │
                    └─────┬─────┘
                          │
         ┌────────────────┼────────────────┐
         │                │                │
   ┌─────┴─────┐    ┌─────┴─────┐    ┌─────┴─────┐
   │  输入设备  │    │   主存    │    │  输出设备  │
   │  (Input)  │    │ (Memory)  │    │ (Output)  │
   └───────────┘    └───────────┘    └───────────┘

1.2.3 冯·诺依曼相关寄存器

寄存器 全称 作用
PC Program Counter 程序计数器,存放下一条指令地址
IR Instruction Register 指令寄存器,存放当前指令
MAR Memory Address Register 主存地址寄存器
MDR Memory Data Register 主存数据寄存器
GPRs General Purpose Registers 通用寄存器组
PSW Program Status Word 程序状态字寄存器,存放标志位

1.2.4 标志寄存器常见标志位

标志位 全称 说明
ZF Zero Flag 结果为0时置1
SF Sign Flag 结果为负时置1
OF Overflow Flag 溢出时置1
CF Carry Flag 进位/借位时置1
PF Parity Flag 结果最低字节1的个数为偶数时置1

1.3 计算机系统的层次结构

1.3.1 层次划分

从下到上,计算机系统可分为多个层次:

层次 类型 说明
6 应用语言机器级 使用高级语言编程
5 高级语言机器级 编译器翻译高级语言
4 汇编语言机器级 汇编器翻译汇编语言
3 操作系统级 操作系统管理资源
2 机器语言机器级 硬件直接执行
1 微程序机器级 微指令解释执行

1.3.2 重要概念

ISA(Instruction Set Architecture)- 指令集体系结构

软件和硬件之间接口的完整定义

包括: - 指令集(支持的指令) - 操作数类型和表示 - 寻址方式 - 寄存器集 - 存储模型 - 中断和异常处理

微架构(Microarchitecture)

实现ISA的电路逻辑结构

相同ISA可能有不同微架构: - 例:Intel x86处理器有多种微架构(Skylake、Ice Lake等) - 不同微架构性能不同,但执行相同指令

逻辑电路与器件技术


1.4 程序的转换与运行

1.4.1 程序转换过程

源代码(.c) 
    ↓ 预处理器
预处理后的源程序(.i)
    ↓ 编译器
汇编语言程序(.s)
    ↓ 汇编器
可重定位目标文件(.o)
    ↓ 链接器
可执行目标文件

1.4.2 翻译程序类型

类型 输入 输出 作用
预处理器 源程序(.c) 预处理后的源程序(.i) 处理#include、#define等
编译器 预处理后源程序(.i) 汇编程序(.s) 翻译成汇编语言
汇编器 汇编程序(.s) 可重定位目标文件(.o) 翻译成机器语言
链接器 多个.o文件 可执行文件 合并并重定位

1.4.3 可执行文件的加载

  1. Shell调用execve()系统调用
  2. 内核创建新进程
  3. 读取ELF文件头信息
  4. 映射代码段、数据段等到进程地址空间
  5. 设置入口地址,移交控制权

1.5 计算机系统性能评价 ⭐⭐

1.5.1 基本性能指标

吞吐率(Throughput)

单位时间内所完成的工作量

响应时间(Response Time)

从作业提交到作业完成所用的时间

用户CPU时间

程序本身执行所用的CPU时间

不包括: - I/O等待时间 - 操作系统调度开销

1.5.2 CPU性能指标

时钟周期

时钟频率

例:主频1GHz → 时钟周期 = 1ns

CPI(Cycles Per Instruction)

执行一条指令所需的时钟周期数

1.5.3 性能计算公式 ⭐⭐

用户CPU时间 = 程序总时钟周期数 × 时钟周期
            = 程序总时钟周期数 ÷ 时钟频率
            = 指令数 × CPI × 时钟周期

程序总时钟周期数 = Σ(CPIi × Ci)
                = 指令数 × 综合CPI

综合CPI = Σ(CPIi × Fi)
        = 程序总时钟周期数 ÷ 程序总指令条数

MIPS = 主频 ÷ CPI
     = 指令数 ÷ (执行时间 × 10^6)

1.5.4 性能例题 ⭐⭐

例题1:基础计算

某程序在机器M上运行,指令条数为10^8条,综合CPI=1.25,时钟频率为4GHz。求执行时间。

解:

时钟周期 = 1 / 4GHz = 0.25ns

程序总时钟周期数 = 10^8 × 1.25 = 1.25 × 10^8

执行时间 = 1.25 × 10^8 × 0.25ns = 0.3125s

例题2:MIPS计算

某计算机主频100MHz,CPI=5,求MIPS。

解:

MIPS = 100MHz / 5 = 20 MIPS

例题3:综合CPI计算

某程序含三类指令,比例和CPI如下: - A类:40%,CPI=1 - B类:30%,CPI=2 - C类:30%,CPI=3 求综合CPI。

解:

综合CPI = 0.4×1 + 0.3×2 + 0.3×3
        = 0.4 + 0.6 + 0.9
        = 1.9

例题4:指令条数与执行速度

假设两台计算机M1和M2,M1主频2GHz,M2主频3GHz。 程序P在M1上执行需要10s,在M2上执行需要8s。 判断哪台计算机性能更好。

解:

M1性能 = 10s
M2性能 = 8s

M2执行更快,所以M2性能更好

注意:不能仅凭主频判断性能!

例题5:优化对性能的影响

某编译器优化后,A类指令(占43%,CPI=1)减少50%,其他指令不变。 原CPI=1.57,问优化后CPI变化。

解:

优化后A类比例 = 43% ÷ 2 = 21.5%
其他总比例 = 57%

归一化:
- A类 = 21.5 / 78.5 ≈ 27.4%
- B类 = 21 / 78.5 ≈ 26.7%
- C类 = 12 / 78.5 ≈ 15.3%
- D类 = 24 / 78.5 ≈ 30.6%

新CPI ≈ 0.274×1 + 0.267×2 + 0.153×2 + 0.306×2
      ≈ 1.73

1.5.5 Amdahl定律

系统中某组件改进后,整个系统能获得的最大性能提升

加速比 S = 1 / (1 - α + α/k)

其中:
- α = 可改进部分占整体的比例
- k = 该部分改进后的加速比

例题:

某程序运行需要100s,其中20s可优化(加速比k=5),求整体加速比。

解:

α = 20/100 = 0.2
S = 1 / (1 - 0.2 + 0.2/5) = 1 / (0.8 + 0.04) = 1 / 0.84 ≈ 1.19

1.5.6 性能评估方法

方法 说明
时钟频率 主频越高,潜在性能越好
MIPS 每秒执行百万条指令数
MFLOPS 每秒执行百万次浮点运算
基准程序 运行标准化测试程序比较性能

章节练习题

一、选择题

  1. 冯·诺依曼计算机的核心思想是( ) A. 采用二进制 B. 存储程序 C. 五大部件 D. ASCII编码

  2. 下列寄存器中,用于存放下一条指令地址的是( ) A. IR B. PC C. MAR D. MDR

  3. 用户CPU时间是指( ) A. 程序从开始到结束的总时间 B. 程序本身执行所用的CPU时间 C. I/O操作所占用的时间 D. 系统调度所占用的时间

  4. 主频为2GHz,时钟周期为( ) A. 0.5ns B. 2ns C. 0.5μs D. 2μs

  5. 下列性能指标中,不能单独用来评价计算机性能的是( ) A. 时钟频率 B. MIPS C. CPI D. 指令条数

二、填空题

  1. 冯·诺依曼结构计算机的五大基本部件包括:主存储器、____、控制器、通用寄存器和输入/输出部件。

  2. 计算机系统的层次结构中,定义了软件和硬件之间接口的是______。

  3. CPI表示执行一条指令所需的______。

  4. 用户CPU时间的计算公式为:用户CPU时间 = ______ × 时钟周期。

  5. MIPS = 主频 ÷ ______。

三、简答题

  1. 简述冯·诺依曼体系结构的主要特点。

  2. 解释ISA和微架构的区别。

  3. 简述计算机系统的层次结构。

  4. 为什么说"时钟频率越高,计算机性能越好"这个说法不完全正确?

四、计算题

  1. 某计算机主频为500MHz,程序包含10^6条指令,综合CPI为2.5。求:
  2. 程序总时钟周期数
  3. 用户CPU时间
  4. MIPS

  5. 某程序在机器A上运行需要10s,A的时钟频率为1GHz。将其移植到机器B,要求运行时间缩短到6s。已知程序在B上的时钟周期数是A上的1.2倍,问B的时钟频率至少应为多少?


参考答案

选择题

  1. B 2. B 3. B 4. A 5. D

填空题

  1. 算术逻辑部件(ALU)
  2. 指令集体系结构(ISA)
  3. 时钟周期数
  4. 程序总时钟周期数
  5. CPI

计算题

第1题:

程序总时钟周期数 = 10^6 × 2.5 = 2.5 × 10^6
用户CPU时间 = 2.5 × 10^6 / 500MHz = 5ms
MIPS = 500MHz / 2.5 = 200 MIPS

第2题:

A时钟周期数 = 10s × 1GHz = 10G
B时钟周期数 = 10G × 1.2 = 12G
B时钟频率 = 12G / 6s = 2GHz