计算机系统的组成与体系结构

1 计算机系统的组成与体系结构


1.1 计算机体系结构分类

计算机体系结构,简单说就是CPU 怎么设计、指令怎么执行、数据怎么流动的整体方案。

常见分类方式:

1)按指令与数据流分类(最常考)

  • SISD :单指令单数据流
    一个指令一次处理一个数据。老式单核CPU基本都是这样。
  • SIMD :单指令多数据流
    一条指令同时处理一批数据。比如图片、视频、AI计算常用。
  • MISD :多指令单数据流
    理论模型,实际几乎不用。
  • MIMD :多指令多数据流
    多核CPU、服务器、超级计算机都是这种,多个核心同时干不同的事。

2)按存储程序方式

  • 冯·诺依曼结构
    指令和数据放在同一片内存里。现在电脑、手机都用这个。
  • 哈佛结构
    指令和数据分开存储,速度更快。单片机、DSP、嵌入式常用。

3)按指令集复杂程度

  • CISC:复杂指令集(Intel/AMD)
  • RISC:精简指令集(ARM、RISC‑V)
    这部分后面 1.4 节详细讲。

1.2 计算机的硬件组成

经典 冯·诺依曼计算机 5 大部件,所有计算机都离不开这 5 样:

1)运算器(ALU)

负责算数运算 (加减乘除)和逻辑运算 (与或非、异或)。

相当于计算机的"计算器"。

2)控制器

负责取指令 → 翻译指令 → 指挥各部件干活

相当于计算机的"大脑总指挥"。

运算器 + 控制器 = CPU(中央处理器)

3)存储器

存放数据和指令。

  • 内存(主存):速度快、断电丢失
  • 外存(硬盘/U盘):速度慢、永久保存

4)输入设备

向计算机输入信息。

例:键盘、鼠标、扫描仪、麦克风、触摸屏。

5)输出设备

计算机向外输出结果。

例:显示器、打印机、音箱、投影仪。


1.3 指令系统基础

指令 = 操作码 + 地址码

  • 操作码:做什么(加、减、读、写)
  • 地址码:数据在哪

寻址方式 = 找数据位置的方法

下面一个一个讲,全部零基础可懂。


1.3.1 隐含寻址方式

指令里不写地址,地址默认藏在某个地方。

例子:

有一条指令叫"加1",它默认就是对**累加器(ACC)**里的数加1。

指令里根本不写地址,因为大家都知道操作谁。

特点:

  • 指令短、快
  • 只能操作固定位置

1.3.2 立即寻址方式

数据直接写在指令里,不用去别的地方找。

格式:

指令 = 操作 + 立即数

例子:
MOV AX, #5

意思:把 5 直接放到 AX 寄存器。

5 就在指令里,当场就能用。

特点:

  • 最快
  • 只能放小数字

1.3.3 直接寻址方式

指令里直接写内存地址,去这个地址取数。

例子:
MOV AX, [1000H]

意思:去内存地址 1000H 里拿数据。

特点:

  • 简单直观
  • 地址范围有限

1.3.4 间接寻址方式

指令里给的地址不是数据,而是"放真实地址"的地址。

比喻:

指令给你一个抽屉A,抽屉A里有张纸条写着"去抽屉B拿数据"。

例子:
MOV AX, (1000H)

  1. 去地址 1000H 拿到一个地址,比如 2000H
  2. 再去 2000H 拿真正数据

特点:

  • 灵活
  • 慢,要访问两次内存

1.3.5 寄存器寻址 & 寄存器间接寻址

(1)寄存器寻址

数据在寄存器里,指令直接用寄存器。

例子:
MOV AX, BX

把 BX 里的数据给 AX。

特点:

  • 极快(寄存器在CPU内部)

(2)寄存器间接寻址

寄存器里存的不是数据,是内存地址。

例子:
MOV AX, [BX]

  1. 看 BX 里的值,假设是 1000H
  2. 去内存 1000H 取数据

特点:

  • 灵活、比间接寻址快

1.3.6 相对寻址方式

以程序计数器(PC 当前位置)为基准,偏移一段距离。

公式:

有效地址 = PC 值 + 偏移量

比喻:

"从我现在站的位置,往前走 5 步。"

常用于:跳转指令、循环、分支。


1.3.7 基址寻址方式

以基址寄存器为基准,加上偏移。

公式:

有效地址 = 基址寄存器 + 偏移

基址寄存器一般由操作系统设置 ,用户程序不能随便改,用来做内存管理、多任务隔离


1.3.8 变址寻址方式

以变址寄存器为基准,加上偏移。

公式:

有效地址 = 变址寄存器 + 偏移

变址寄存器由用户程序自己改,适合遍历数组、字符串。

对比记忆:

  • 基址寻址:面向系统、内存管理
  • 变址寻址:面向用户、数组循环

1.4 CISC 与 RISC

CISC:复杂指令集计算机

代表:Intel x86(台式机、笔记本、服务器)

特点:

  • 指令数量多、功能强、长度不固定
  • 一条指令能干很复杂的事
  • 电路复杂、功耗高
  • 兼容性极强

RISC:精简指令集计算机

代表:ARM(手机)、RISC‑V(嵌入式)

特点:

  • 指令少、简单、长度固定
  • 只保留最常用指令
  • 电路简单、功耗极低
  • 执行速度均匀、适合流水线

一句话区别:

  • CISC:指令多而强,像多功能工具箱
  • RISC:指令少而快,像专用高效工具

1.5 流水线

把一条指令的执行拆成好几步,像工厂流水线一样,多条指令重叠执行,从而提高速度。

典型 5 级流水线:

取指 → 译码 → 执行 → 访存 → 写回


1.5.1 计算流水线执行时间

1)单个指令执行时间

设流水线每段时间为 Δt

一条指令总时间:k × Δt

k = 流水线级数(比如 5 级)

2)n 条指令总执行时间

公式(最常考):

总时间 = 第一条指令时间 + (n−1) × 每段时间

= k·Δt + (n − 1)·Δt

例子:

5级流水线,Δt=1ns,执行 10 条指令

总时间 = 5×1 + (10−1)×1 = 5 + 9 = 14ns

3)吞吐率

单位时间完成指令数。

流水线越稳定,吞吐率越高。


1.5.2 影响流水线性能的主要因素

流水线最怕"停顿",一停顿效率暴跌。

1)结构冒险(资源冲突)

同一时间两个指令抢同一个硬件。

比如同时要访问内存。

解决:

  • 增加硬件
  • 分时使用

2)数据冒险(数据依赖)

后面指令要用前面指令还没算完的数据。

例:

A 指令算 R1=R2+R3

B 指令用 R1 做加法

B 必须等 A 写完才能执行。

解决:

  • 阻塞等待
  • 数据转发(直通)
  • 指令重排

3)控制冒险(分支跳转)

遇到 if/else、循环、跳转时,流水线不知道下一步该取哪条指令,只能暂停。

解决:

  • 分支预测
  • 延迟槽
  • 预取目标指令

相关推荐
Rotion_深20 天前
可靠性与系统性能评测
计算机基础
Rotion_深20 天前
存储系统知识
计算机基础
bestblueheart20 天前
C语言怎么学?系统学习路线图分享
c语言·指针·计算机基础·学习路线·编程思想
Rotion_深20 天前
计算机硬件基础知识
计算机基础
书到用时方恨少!22 天前
计算机键盘各个按键功能及常用组合键详解
计算机外设·计算机基础·键盘按键·组合键
番茄灭世神2 个月前
Linux从入门到进阶 第四章
linux·操作系统·计算机基础
剪一朵云爱着3 个月前
计算机组成原理 (四)计算机性能
408·计算机组成原理·计算机基础
剪一朵云爱着3 个月前
计算机组成原理(一)计算机概述
408·计算机组成原理·计算机基础·四大件
不凉帅3 个月前
NO.2计算机基础
网络·嵌入式·硬件·软件·计算机基础