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

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、循环、跳转时,流水线不知道下一步该取哪条指令,只能暂停。

解决:

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

相关推荐
书到用时方恨少!2 天前
计算机键盘各个按键功能及常用组合键详解
计算机外设·计算机基础·键盘按键·组合键
番茄灭世神2 个月前
Linux从入门到进阶 第四章
linux·操作系统·计算机基础
剪一朵云爱着2 个月前
计算机组成原理 (四)计算机性能
408·计算机组成原理·计算机基础
剪一朵云爱着2 个月前
计算机组成原理(一)计算机概述
408·计算机组成原理·计算机基础·四大件
不凉帅2 个月前
NO.2计算机基础
网络·嵌入式·硬件·软件·计算机基础
SomeBottle3 个月前
【小记】解决校园网中不同单播互通子网间 LocalSend 的发现问题
计算机网络·go·网络编程·学习笔记·计算机基础
liu****3 个月前
git工具
git·python·算法·机器学习·计算机基础
小当家.1053 个月前
操作系统期末考试基础知识点速成:高频考点与题集精要
考研·操作系统·计算机基础·速成·大学·期末考试
Yxw52643 个月前
计算机硬件组成与运行原理,、单片机介绍(51和stm32)
计算机基础·单片机介绍(51和stm32)