第一章 计算机系统概述 — 详细学习笔记


目录

  1. [计算机系统简介]
  2. [计算机的基本组成]
  3. [计算机硬件主要技术指标]

一、计算机系统简介

1.1 信息化世界与硬件入门

我们生活在高度信息化的世界中,每天使用的电脑、手机都属于计算机范畴。计算机体系从下到上依次为:

应用软件(某x信、某x音、游戏……)
    ↑
操作系统(Windows、macOS、Linux、Android、iOS……)
    ↑
计算机硬件(CPU、内存、硬盘、显卡……)

通过计算机网络,所有计算机之间实现了信息的互联互通。

计算机组成原理这门课研究的核心问题:计算机硬件在底层是如何相互协调工作的。

1.1.1 大家熟悉的硬件

硬件 作用 生活中的关注点
CPU 中央处理器,运算核心 型号、性能、决定游戏图像处理速度
内存(主存) 运行内存 容量越大,同时开多个应用越流畅
硬盘(外存/辅存) 机身存储 容量决定能存多少电影、文件
显卡(GPU) 图形处理 游戏玩家重点关注性能

这些硬件都通过金属针脚与主板连接,针脚是收发二进制数据的通道。主板上的印刷电路板(PCB)上的一条条线路就是导电用的"电线",用于传输电信号。

1.1.2 计算机硬件能识别的数据

计算机硬件唯一能识别的数据是二进制 0/1。

  • 用低电平表示二进制 0
  • 用高电平表示二进制 1

通过多条电路可以同时传递多个二进制数位,每个二进制数位称为 1 bit(比特)。

形象理解:可以把每根导线想象成一根"电击线",低电平=微弱电流(表示0),高电平=强电流(表示1)。多根导线同时放电,就能一次性传递多个比特的数据。

1.1.3 待探索的核心问题

学习本章后仍需深入探讨的问题:

  • 数字、文字、图像如何用二进制表示?
  • CPU 如何对二进制数进行加减乘除?
  • 如何存储这些二进制数?
  • 如何从内存中取出想要的数据?
  • CPU 如何识别和执行我们写的程序?

1.2 什么是计算机系统

计算机系统 = 硬件 + 软件

组成 定义 举例
硬件 计算机的实体,看得见摸得着 主机、外设(鼠标、键盘、显示器)
软件 由具有各类特殊功能的程序组成 操作系统、X信、浏览器

计算机性能的好坏取决于"软""硬"件功能的总和。

  • 硬件是物理基础,决定了系统的天花板和瓶颈
  • 软件决定了硬件性能能发挥到什么程度

1.3 计算机软件

软件分为两大类:

1.3.1 系统软件

用来管理整个计算机系统的软件:

类型 说明 举例
操作系统 最典型的系统软件 Windows、Linux、macOS
语言处理程序 将高级语言翻译成机器语言 编译程序、汇编程序
数据库管理系统 管理数据库 DBMS(如 MySQL、Oracle)
网络软件 实现网络协议 TCP/IP 协议栈
服务性程序 辅助开发与维护 调试程序、连接程序
标准程序库 编程时调用的库函数 C 标准库

1.3.2 应用软件

按任务需要编制成的各种程序,用户直接接触最多:

  • xx、xxxx、xx、美xxx、xx、xx等

本课程重点探讨硬件部分。


1.4 硬件的发展

1.4.1 第一台电子数字计算机:ENIAC(1946)

  • 诞生时间:1946 年(二战末期,美国军方为计算弹道轨迹而研制)
  • 占地面积:约 170 平方米
  • 耗电量:150 千瓦
  • 运算速度:5000 次加法/秒
  • 逻辑元件:电子管(共使用 1.8 万个)
  • 编程方式:手动接线来控制计算
  • 顾问:冯·诺依曼

1.4.2 计算机发展的四个时代

代次 时期 主要器件 速度(次/秒) 内存 外存
第一代 1946–1957 电子管 几千 ~ 几万 汞延迟线、磁鼓 穿孔卡片、纸带
第二代 1958–1964 晶体管 几万 ~ 几十万 磁芯存储器 磁带
第三代 1964–1971 中小规模集成电路 几十万 ~ 几百万 半导体存储器 磁带、磁盘
第四代 1972–至今 大及超大规模集成电路 上千万 ~ 万亿 半导体存储器 磁盘、磁带、光盘、半导体存储器

第一代:电子管时代

  • 逻辑元件:电子管(体积大、耗电量大)
  • 使用机器语言编程,在纸带上打孔(有孔=0,无孔=1)
  • "Bug"一词的由来:纸带机时代,一只小虫子(bug)落在纸带上会导致程序读取错误,此后程序错误就被称为 bug

第二代:晶体管时代

  • 1947 年贝尔实验室发明晶体管
  • 晶体管相比电子管:体积大幅缩小、功耗降低、可靠性提升
  • 出现面向过程的程序设计语言:FORTRAN
  • 有了操作系统雏形
  • 缺点:几万~几十万个晶体管需手工焊接,焊点多,硬件不可靠

第三代:中小规模集成电路时代

  • 将逻辑元件集成在基片(芯片)上
  • 计算机体积更小、功耗更低、可靠性更高
  • 计算机主要用于科学计算等专业用途
  • 高级语言迅速发展
  • 开始有了分时操作系统

第四代:大规模、超大规模集成电路时代

  • 开始出现微处理器和微型计算机
  • 个人计算机(PC)萌芽
  • 操作系统:Windows、macOS、Linux 等
  • 例:苹果 A13 芯片采用 7nm 工艺,指甲盖大小集成 85 亿个晶体管

1.5 微处理器的发展

微型计算机的发展以微处理器技术为标志。英特尔(Intel)是微处理器领域的代表企业。

微处理器 机器字长 年份 晶体管数量
8080 8 位 1974 —
8086 16 位 1979 2.9 万
80286 16 位 1982 13.4 万
80386 32 位 1985 27.5 万
80586 32 位 1989 120 万
Pentium 64 位 1993 310 万
Pentium Pro 64 位 1995 550 万
Pentium Ⅱ 64 位 1997 750 万
Pentium Ⅲ 64 位 1999 950 万
Pentium Ⅳ 64 位 2000 4200 万

机器字长:计算机一次整数运算所能处理的二进制位数。
机器字长直接影响运算速度——例如计算 16 位加法,8 位 CPU 需运算两次,16 位 CPU 只需一次。


1.6 硬件发展的重要历史脉络

年份 事件
1947 贝尔实验室发明"晶体管"(肖克利等三人,肖克利获 1956 年诺贝尔物理学奖)
1955 肖克利在硅谷创建肖克利实验室股份有限公司
1957 "八叛徒"(Traitorous Eight)离开肖克利,创立仙童半导体公司
1959 仙童半导体公司发明"集成电路"
1968 摩尔等人离开仙童,创立 Intel
1969 仙童销售部负责人桑德斯离开仙童,创立 AMD

仙童半导体被称为"半导体产业的摇篮",孕育了 Intel 和 AMD 两大巨头。


1.7 摩尔定律

由英特尔联合创始人戈登·摩尔提出:

集成电路上可容纳的晶体管数目,约每隔 18 个月便会增加一倍,整体性能也将提升一倍。

摩尔定律揭示了信息技术进步的速度。

半导体存储器的发展也符合摩尔定律:

  • 1970 年,仙童公司生产出第一个较大容量的半导体存储器
  • 单芯片容量发展:1KB → 4KB → 16KB → 64KB → 256KB → 1MB → 4MB → 16MB → 64MB → 256MB → 1GB……

1.8 软件的发展

阶段 特点
机器语言阶段 程序员需关注机器具体特性,编程困难,软件不丰富
高级语言阶段 出现 Pascal、C、C++ 等,程序员只需专注问题本身,接近自然语言
网络语言阶段 出现 Java、Python 等更适用于网络环境的编程语言
操作系统发展 DOS(命令行)→ Windows(图形化界面)→ Android/iOS 等移动系统

编程语言是否好用直接决定了软件世界是否丰富。


1.9 目前的发展趋势:"两极"分化

方向 发展趋势 代表
微型计算机 更微型化、网络化、高性能、多用途 智能手机、智能穿戴设备
巨型机 更巨型化、超高速、并行处理、智能化 超级计算机

超级计算机代表:

  • 神威·太湖之光:每秒 9.3 亿亿次浮点运算(世界排名前列)
  • 天河二号:中国另一台顶级超算

二、计算机的基本组成

2.1 早期冯·诺依曼结构

2.1.1 "存储程序"概念

冯·诺依曼提出的核心思想:

将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

  • ENIAC:手动接线来控制计算(说一句做一句,效率低)
  • EDVAC:第一台冯·诺依曼结构的计算机(提前把全部指令存入主存,计算机自动逐条执行)

2.1.2 冯·诺依曼计算机的五大部件

image.png
部件 功能
输入设备 将信息转换成机器能识别的形式(二进制)
存储器 存放数据和程序
运算器 实现算术运算(加减乘除)和逻辑运算(与或非)
控制器 指挥程序运行,解析指令,发出控制信号
输出设备 将结果转换成人们熟悉的形式

实线箭头 = 数据线;虚线箭头 = 控制线和反馈线。

2.1.3 冯·诺依曼计算机的六大特点

  1. 计算机由五大部件组成(输入设备、输出设备、运算器、存储器、控制器;输入/输出统称 I/O 设备)
  2. 指令和数据以同等地位存于存储器,可按地址寻访
  3. 指令和数据用二进制表示(方便用电信号表示 0/1 两种状态)
  4. 指令由操作码和地址码组成
    • 操作码:指明要进行什么操作(如加减乘除)
    • 地址码:指明操作数在内存中的地址
  5. 存储程序(提前将指令和数据存入存储器)
  6. 以运算器为中心(输入/输出设备与存储器之间的数据传送都通过运算器完成)

以运算器为中心的缺点:运算器本是数据处理核心,但所有数据中转都要经过它,导致计算效率降低。

2.1.4 软硬件逻辑等效

在计算机系统中,软件和硬件在逻辑上是等效的:

  • 同一功能既可以用软件实现,也可以用硬件实现
  • 软件实现:成本低、效率低
  • 硬件实现:成本高、效率高

例:乘法运算——可以设计专门的硬件乘法电路(快),也可以用软件执行多次加法来模拟(慢)。


2.2 现代计算机的结构

现代计算机以存储器为中心,而非以运算器为中心:

        ┌──────────┐
输入 ──→│          │
设备    │ 存储器   │←──→ 输出设备
        │ (中心)   │
        └────┬─────┘
             │
        ┌────▼─────────────┐
        │       CPU        │
        │  运算器 + 控制器  │
        └──────────────────┘
  • 输入设备的数据直接存入存储器
  • 输出设备直接从存储器取数据
  • 运算器不再承担数据中转任务,可专注于运算

CPU = 运算器 + 控制器(因两者逻辑关系紧密,在大规模集成电路时代被集成在同一芯片上)

重要概念辨析

概念 定义 包含
主机 主存储器 + CPU 主存、运算器、控制器
主存(主存储器) 内存 运行内存(如手机 8GB 运行内存)
辅存(辅助存储器) 外存,属于 I/O 设备 硬盘、SSD(如手机 128GB 机身存储)

注意:平时说的"电脑主机"包含更多部件(硬盘、风扇等),与本课程中的"主机"概念不同。
辅存(硬盘)属于 I/O 设备,不属于主机。APP 平时存在辅存,运行时才调入主存。


2.3 主存储器的基本组成

主存储器由三部分组成:

┌─────────────────────────────┐
│         主存储器             │
│  ┌───────┐  ┌─────┐  ┌─────┐│
│  │存储体  │  │ MAR │  │ MDR ││
│  │(货架) │  │(取件号)│ │(柜台)││
│  └───────┘  └─────┘  └─────┘│
└─────────────────────────────┘
部件 全称 功能 类比
存储体 Memory Bank 存放二进制数据(由一系列存储元件构成) 货架(存放包裹)
MAR Memory Address Register(存储地址寄存器) 存放要访问的存储单元地址 取件号(告诉店员包裹位置)
MDR Memory Data Register(存储数据寄存器) 存放从存储体读出/要写入的数据 柜台(取出的包裹放这里)

读数据过程

  1. CPU 将目标数据的地址写入 MAR
  2. 主存根据 MAR 中的地址,从存储体中找到对应数据
  3. 将找到的数据放入 MDR
  4. CPU 从 MDR 中取走数据

写数据过程

  1. CPU 将目标地址写入 MAR
  2. CPU 将要写入的数据放入 MDR
  3. CPU 通过控制总线通知主存执行"写操作"
  4. 主存将 MDR 中的数据写入 MAR 指定的存储单元

2.4 运算器的基本组成

运算器由以下核心部件组成:

部件 全称 功能
ACC Accumulator(累加器) 存放运算操作数及运算结果(加减乘除、逻辑运算都用)
MQ Multiplier-Quotient Register(乘商寄存器) 仅在乘法、除法运算时使用,存放乘除操作数或结果
X 通用操作数寄存器 存放操作数(实际 CPU 中通常有多个通用寄存器)
ALU Arithmetic Logic Unit(算术逻辑单元) 运算器的核心部件,用复杂电路实现算术运算和逻辑运算

ALU 是运算器中制造成本最高、硬件构造最复杂的部件。
ACC、MQ、X 都是寄存器,用于暂存数据;ALU 才是真正执行运算的核心。


2.5 控制器的基本组成

控制器由以下核心部件组成:

部件 全称 功能
CU Control Unit(控制单元) 控制器的核心,分析指令并向其他部件发出控制信号
IR Instruction Register(指令寄存器) 存放当前正在执行的指令
PC Program Counter(程序计数器) 存放下一条指令的地址,具有自动加 1 功能

注意:此处 PC 是 Program Counter,不是 Personal Computer。

指令执行的三个阶段

取指令 → 分析指令 → 执行指令
 (取指)    (译码)    (执行)
  1. 取指令:根据 PC 中的地址,从主存取出指令,放入 IR
  2. 分析指令:CU 分析 IR 中指令的操作码,判断要执行什么操作
  3. 执行指令:CU 控制其他部件配合完成指令的具体执行

很多教材将前两阶段统称为"取指阶段",最后阶段称为"执行阶段"。


2.6 计算机的工作过程(完整实例)

以 C 语言程序 y = a * b + c 为例,演示计算机如何执行。

2.6.1 程序在主存中的布局

高级语言经编译链接后翻译成机器语言并装入主存:

主存地址 内容 说明
0 取数指令(操作码+地址码) 指令区
1 乘法指令 指令区
2 加法指令 指令区
3 存数指令 指令区
4 停机指令 指令区
5 a = 2 数据区
6 b = 3 数据区
7 c = 1 数据区
8 y(待写入) 数据区

每条指令由操作码和地址码组成,共占 16 比特(存储字长=16bit)。
符号约定:(寄存器名) 表示该寄存器中的内容,M(MAR) 表示主存中 MAR 所指单元的内容。

2.6.2 第一条指令:取数(LOAD a)

image.png

初始状态:(PC) = 0(指向第一条指令)

步骤 操作 结果
① (PC) → MAR (MAR) = 0
② CU 发读信号 主存准备读
③ M(MAR) → MDR (MDR) = 取数指令
④ (MDR) → IR (IR) = 取数指令
⑤ OP(IR) → CU CU 分析出这是"取数指令"
⑥ Ad(IR) → MAR (MAR) = 5(操作数地址)
⑦ CU 发读信号 主存准备读数据
⑧ M(MAR) → MDR (MDR) = 2(变量 a 的值)
⑨ (MDR) → ACC (ACC) = 2

取指后 PC 自动 +1,此时 (PC) = 1。

2.6.3 第二条指令:乘法(MUL b)

步骤 操作 结果
① (PC) → MAR (MAR) = 1
③ M(MAR) → MDR (MDR) = 乘法指令
④ (MDR) → IR (IR) = 乘法指令
⑤ OP(IR) → CU CU 分析出这是"乘法指令"
⑥ Ad(IR) → MAR (MAR) = 6
⑧ M(MAR) → MDR (MDR) = 3(变量 b 的值)
⑨ (MDR) → MQ (MQ) = 3
⑩ (ACC) → X (X) = 2(被乘数)
⑪ (MQ) × (X) → ACC ALU 执行乘法,(ACC) = 6

乘法运算中:被乘数放 X,乘数放 MQ,乘积结果放 ACC(若乘积太大,需 MQ 辅助存储高位)。
取指后 (PC) = 2,执行后 (ACC) = 6。

2.6.4 第三条指令:加法(ADD c)

类似流程:从地址 7 取出 c = 1,与 ACC 中的 6 相加,结果 (ACC) = 7。

2.6.5 第四条指令:存数(STORE y)

步骤 操作 结果
① (PC) → MAR (MAR) = 3
③ M(MAR) → MDR (MDR) = 存数指令
④ (MDR) → IR (IR) = 存数指令
⑤ OP(IR) → CU CU 分析出这是"存数指令"
⑥ Ad(IR) → MAR (MAR) = 8(目标地址)
⑦ (ACC) → MDR (MDR) = 7
⑧ CU 发写信号 主存准备写
⑨ (MDR) → M(MAR) 地址 8 的单元写入 7,即 y = 7

最终结果:y = a × b + c = 2 × 3 + 1 = 7,写入主存地址 8。


2.7 计算机系统的层次结构

┌─────────────────────────────────────┐
│ 虚拟机器 M4(高级语言机器)           │  ← 软件
│   y = a * b + c                      │
├─────────────────────────────────────┤
│ 虚拟机器 M3(汇编语言机器)           │  ← 软件
│   LOAD 5 / MUL 6 / ADD 7 / STORE 8  │
├─────────────────────────────────────┤
│ 传统机器 M2(操作系统的机器)         │  ← 软件
│   向上提供"广义指令"(系统调用)       │
├─────────────────────────────────────┤
│ 传统机器 M1(用机器语言的机器)       │  ← 软硬件交界
│   执行二进制机器指令                  │
│   000001 0000000101(取数指令)      │
├─────────────────────────────────────┤
│ 微程序机器 M0(微指令系统)           │  ← 硬件
│   由硬件直接执行微指令                │
└─────────────────────────────────────┘

各层之间的翻译关系:

  • M4 → M3:用编译程序将高级语言翻译成汇编语言程序
  • M3 → M1:用汇编程序将汇编语言翻译成机器语言程序
  • M2 → M1:操作系统向上提供"广义指令"(系统调用)
  • M1 → M0:由硬件直接执行微指令

核心原则:下层是上层的基础,上层是下层的扩展。


2.8 三种级别的语言

语言级别 特点
机器语言 二进制代码,计算机硬件直接识别,最底层
汇编语言 用助记符表示机器指令,需汇编程序翻译
高级语言 接近自然语言,如 C、Java、Python,需编译或解释

编译程序 vs 解释程序

类型 工作方式 特点
编译程序 将高级语言源程序全部语句一次全部翻译成机器语言程序,而后再执行 只需翻译一次,执行速度快
解释程序 将源程序的一条语句翻译成机器语言并立即执行,再翻译下一句 每次执行都要翻译,执行速度慢

三、计算机硬件主要技术指标

3.1 机器字长

机器字长:CPU 一次能处理数据的位数,与 CPU 中的寄存器位数有关。

  • 机器字长越长,运算精度越高,运算速度越快
  • 常见字长:8 位、16 位、32 位、64 位
  • 现代个人计算机 CPU 普遍为 64 位

3.2 运算速度

衡量计算机运算速度的方法:

方法 说明
吉普森法(Gibson) 综合考虑各类指令的使用频率和执行时间,加权计算平均运算速度
MIPS Million Instructions Per Second,每秒百万条指令
MFLOPS Million Floating-point Operations Per Second,每秒百万次浮点运算
CPI Clock cycles Per Instruction,执行每条指令所需的时钟周期数

运算速度与机器字长、主存速度、指令系统等多种因素有关。

3.3 存储容量

存储容量:存放二进制信息的总位数。

计算公式:

总容量 = 存储单元个数 × 存储字长 (bit)
       = 存储单元个数 × 存储字长 / 8 (Byte)

1 Byte = 8 bit

MAR 与 MDR 的关系:

  • MAR 位数 → 反映存储单元的个数(最多支持 2^MAR位数 个单元)
  • MDR 位数 = 存储字长 = 每个存储单元的大小

例题:

MAR 为 32 位,MDR 为 8 位,求总容量。

总容量 = 2^32 × 8 bit = 2^32 Byte = 4GB


四、知识回顾

核心概念速查表

概念 核心要点
计算机系统 硬件 + 软件
硬件发展四代 电子管 → 晶体管 → 中小规模集成电路 → 大/超大规模集成电路
冯·诺依曼结构 五大部件、存储程序、二进制、以运算器为中心
现代计算机结构 以存储器为中心,CPU = 运算器 + 控制器
主机 CPU + 主存储器(辅存属于 I/O 设备)
主存组成 存储体 + MAR(地址寄存器)+ MDR(数据寄存器)
运算器组成 ACC(累加器)+ MQ(乘商寄存器)+ X(通用寄存器)+ ALU(算术逻辑单元)
控制器组成 CU(控制单元)+ IR(指令寄存器)+ PC(程序计数器,自动+1)
指令执行 取指 → 分析 → 执行
层次结构 M0 微程序 → M1 机器语言 → M2 操作系统 → M3 汇编 → M4 高级语言
机器字长 CPU 一次能处理的二进制位数
存储容量 存储单元个数 × 存储字长
摩尔定律 晶体管数目约每 18 个月翻一倍

重要缩写对照表

缩写 全称 中文
CPU Central Processing Unit 中央处理器
ALU Arithmetic Logic Unit 算术逻辑单元
CU Control Unit 控制单元
MAR Memory Address Register 存储地址寄存器
MDR Memory Data Register 存储数据寄存器
IR Instruction Register 指令寄存器
PC Program Counter 程序计数器
ACC Accumulator 累加器
MQ Multiplier-Quotient Register 乘商寄存器
I/O Input/Output 输入/输出
PCB Printed Circuit Board 印刷电路板
ENIAC Electronic Numerical Integrator And Computer 第一台电子数字计算机
EDVAC Electronic Discrete Variable Automatic Computer 第一台冯·诺依曼结构计算机

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容