本文转载自厉害的 孔姐姐博客

由一只孔姐姐的小迷弟负责排版和整理~

一、常用术语

1.位和字节
  • 位:计算机所能表示的最小的、最基本的数据单位

  • 字节:由 8 个位组成

2.字长:一次可以直接处理的二进制数码的位数

通用寄存器的位数、数据总线的宽度 有关

注意一下,通用寄存器。以后会提到。

“宽度”,有多少根数据总线

3.寻址能力:CPU 能直接存取数据的内存地址的范围

地址总线的数目 有关

4.主频:时钟频率
5.MIPS:million instructions per second

二、基本功能模块

1.基本功能模块(2 个)
  • 总线接口单元 BIU:bus interface unit

    用于取指令,包含寄存器组

  • 执行单元 EU:excecution unit

    用于执行指令,包含寄存器组、运算器、控制器

2.指令系统
  • RISC:精简指令系统

  • CISC:复杂指令系统

3.流水线

m 级流水线,会同时又 m 条指令同时执行。比非流水线的性能提高大约 m 倍。

三、寄存器

1.486 内部寄存器有 4 类(我们只介绍了基本结构寄存器)

应用程序只能访问基本结构寄存器、浮点结构寄存器

2.基本结构寄存器
  • 通用寄存器:8 个 AX BX CX DX SP BP DI SI

  • 段寄存器:4 个 CS DS ES SS

  • 标志寄存器:FLAGS

  • 指令指针:IP

3.功能
AX accumulater
BX base
CX count
DX data
SP stack pointer
BP base pointer 基址指针
DI destination index 目的变址寄存器
SI source index 源变址寄存器

其中,SP 、BP、 DI、 SI、 IP 都可以为存储单元提供偏移地址

4.标志寄存器(又称 程序状态字 PSW,16 位)

有两类:状态标志,控制标志

四、32位微处理器的工作模式和地址空间

1.微处理器的工作模式
  • 实地址模式(实模式)
  • 保护虚拟模式(保护模式)
  • 虚拟 86 模式
2.实模式的特点(重点!会背)

①加电、复位后,系统自动处于实模式下,系统在 DOS 管理下

②实模式下,系统只能访问第一个 1M 内存(00000H~FFFFFH)

③存储管理部件对存储器实行分段管理,没有分页功能,每个逻辑段的最大容量为 64K

④实模式下,段寄存器中存储段基址

3.保护模式的特点(了解即可)

486 工作在保护模式下,才能真正发挥它的设计能力

①保护模式下,486 支持多任务操作系统

②保护模式下,486 可以访问 4G 物理存储空间

③存储管理部件中,对存储器采用分段和分页管理

4.关于保护机制

高级别的程序可以访问同级、或低级的数据段,反之不可。

5.虚拟 86 模式:保护模式下的一种特殊工作模式,可以运行实模式程序

五、32 位微处理器的地址空间(存储地址空间、I/O 地址空间)

1.存储地址空间
  • 物理空间:主存储器的实际空间 486 有 32 条地址线(4G), 内存最大容量为 4G

  • 虚拟空间:编程空间 逻辑地址 / 虚拟地址,允许编程空间为 2^46=64T

  • 线性空间:用于隔离虚拟空间、物理空间 当程序从虚拟空间调入物理空间时,需要进行地址转换

我们的目的是 从程序员提供的虚拟地址 ----> 找到主存储器中实际的物理地址

都有的分段部件,可以让虚拟地址转化为线性地址。

你如果不分页,物理地址就是线性地址。

分页,线性地址经过分页部件,转化成了物理地址。

  • 实模式:仅分段,不分页(每个逻辑段的最大容量为 64KB)

  • 保护模式:分段、分页

(此处对应实模式、保护模式的特点)

2.I/O 空间

486 利用低 16 位地址线访问 I/O 端口,所以 I/O 端口最多有 2^16=64K,地址空间为 0000H~FFFFH

(存储地址空间中的物理空间是用的 32 条地址线)

六、实模式下,物理地址的形成

  • 逻辑地址 段基址:偏移地址

  • 物理地址 = 段基址 *16 + 偏移地址

  • 16:实际上就是二进制下左移 4 位,H 就左移 1 位呗。

这个逻辑段 64KB(注意实模式的特点第③条),正好是 10000H ~ 1FFFFH。2^16=64KB. 也是正好段基址那存储单元。

不同的逻辑地址可以得到相同的物理地址

逻辑地址需要程序员给出。其中,段基址指明为那个存储器,偏移地址需要明确由程序员给出。

七、赋值原则

  • CS:IP 操作系统赋值

  • SS:SP 程序员、操作系统赋值

  • DS/FS/GS/ES 操作系统赋值

  • BX/BP/SI/DI 程序员