微机原理第二章知识点总结

名词解释

术语解释
存储单元存储器中用于存放一个字节(8个二进制位)的基本单位,并且每一个存储单元都有一个唯一的地址来进行标识。
寄存器CPU内部的高速存储部件,用于暂时存放指令、数据或地址。其存取速度远高于内存。

CPU的时钟、机器周期与总线周期

  • 时钟周期:也称为T状态,是CPU中最基本、最小的时间单位,由CPU的主频决定(时钟周期 = 1 / 主频)。CPU的每一个动作都至少需要一个或多个时钟周期。
  • 机器周期:指CPU完成一个基本操作所需的时间,例如从内存读取一个指令字。一个机器周期通常包含若干个时钟周期。
  • 总线周期:指CPU通过总线对存储器或I/O接口进行一次完整的读/写操作所需要的时间。一个总线周期由至少四个时钟周期(T1, T2, T3, T4)组成。在需要时,CPU可以在T3和T4之间插入一个或多个等待周期(Tw)以适应慢速的存储器或I/O设备。

8086 CPU最小模式读写总线周期

在最小模式下,8086 CPU独立工作,直接产生所有总线控制信号。

读总线周期(从内存或IO接口读取数据)

时钟周期核心动作概念解释
T1CPU将地址送到地址/数据总线上,ALE(地址锁存允许)信号变为高电平。CPU发出要访问的单元地址。ALE的高电平通知外部的地址锁存器锁存地址信息,因为这些引脚稍后将用于传输数据。
T2CPU撤销地址信号,并将数据线置为高阻输入状态,同时发出 RD\overline{\text{RD}}(读)信号(低电平有效)。CPU准备接收数据,并命令存储器或IO设备将数据放到总线上。
T3CPU等待数据稳定。DEN\overline{\text{DEN}}(数据使能)信号变为低电平有效,允许数据从外部设备传输到CPU。选中的设备在此期间将数据输出到数据总线上。
T4CPU从数据总线上读取数据,并将其存入内部。RD\overline{\text{RD}}DEN\overline{\text{DEN}} 信号恢复为高电平,总线周期结束。CPU完成数据接收,并撤销本次读操作的控制信号。

写总线周期(向内存或IO接口写入数据)

时钟周期核心动作概念解释
T1CPU将地址送到地址/数据总线上,ALE信号变为高电平。与读周期相同,CPU首先发出要写入的目标地址。
T2CPU将要写入的数据送到数据总线上,并发出 WR\overline{\text{WR}}(写)信号(低电平有效)。CPU发出写命令,并将待写数据准备好。
T3数据在总线上保持稳定。DEN\overline{\text{DEN}}(数据使能)信号变为低电平有效,将数据正式驱动到总线上。确保数据能够被存储器或IO设备可靠地接收。
T4WR\overline{\text{WR}}DEN\overline{\text{DEN}} 信号恢复为高电平,总线周期结束。CPU完成数据写入,撤销写控制信号。

一个总线读周期意味着CPU要从存储器或I/O端口读取数据。整个过程被精确地协调在至少四个时钟周期(T-States)内。下面结合图 2.27 中的信号,逐步解析每个T状态下发生的动作。

T1 状态:地址输出阶段

在T1时钟周期的上升沿开始,CPU的核心任务是 把要访问的单元地址发送到总线上

  • 地址/数据总线 (AD15-AD0) 与高位地址/状态总线 (A19/S6-A16 /S3)

  • 时分复用功能体现:在这一个T状态,这些引脚的功能是 地址总线

  • CPU将20位物理地址的高4位(A19-A16)送到 A19/S6-A16/S3 引脚上。

  • 同时,将地址的低16位(A15-A0)送到 AD15-AD0 引脚上。

  • 图中 ② 和 ④ 标示的 “地址输出” 准确描述了此刻总线的状态。

  • 地址锁存允许 (ALE)

  • ALE信号变为高电平,并在T1周期结束前变为低电平(如图中 ③ 所示)。

  • 关键作用:ALE的 下降沿 是一个重要的控制信号,它通知外部的地址锁存器(如 74LS373)将 AD15-AD0 和 A19/S6-A16/S3 总线上的地址信息锁存起来。这一步至关重要,因为它 “解复用” 了地址,使得地址信息在整个总线周期内都保持有效,即使这些引脚在后续T状态中改变了功能。

  • 其他控制信号

  • M/IO\overline{\text{IO}}:根据访问目标置位。如果要读取内存,此信号置为高电平;若读取I/O端口,则置为低电平(如图中 ② 所示)。

  • BHE\overline{\text{BHE}} (Bus High Enable):根据访问的数据类型(字节或字)输出相应电平。

  • DT/R\overline{\text{R}} (Data Transmit/Receive\overline{\text{Receive}}):此信号被置为低电平(接收模式),为后续的数据读入做准备(如图中 ⑤ 所示)。

T2 状态:读准备阶段

进入T2状态,CPU完成了地址的发送,现在开始为读取数据做准备。

  • 地址/数据总线 (AD15-AD0)

  • 时分复用功能体现:CPU停止输出地址,并将这些引脚置于高阻态(浮空),准备作为数据输入端。此时总线的控制权交给了外部的存储器或I/O设备。

  • 高位地址/状态总线 (A19/S6-A16/S3)

  • 时分复用功能体现:这些引脚也停止输出地址,转而输出CPU的内部状态信息S6-S3(如图中 ⑧ “状态输出” 所示)。

  • 读信号 (RD\overline{\text{RD}})

  • 这是T2状态最重要的动作之一。RD\overline{\text{RD}} 信号被CPU置为低电平(有效),正式向被选中的存储器或I/O设备发出 **读命令 **(如图中 ⑨ 所示)。

  • 数据使能 (DEN\overline{\text{DEN}})

  • DEN\overline{\text{DEN}} 信号也被置为低电平(有效),它用于使能外部的数据总线收发器(如 8286),将数据从外部设备传送到CPU的数据总线上(如图中 ⑩ 所示)。

T3 状态:数据读取阶段

T3状态是数据传输的核心阶段。

  • 地址/数据总线 (AD15-AD0)

  • 收到 RD\overline{\text{RD}} 信号后,被选中的存储芯片或I/O接口会将数据放到 AD15-AD0 总线上。

  • CPU会在T3周期的末尾从总线上读取(采样)这些数据。图中的 ⑪ 标示为“状态输入”,更准确地理解应为 “数据输入”

  • 等待周期 (TW)

  • 如果CPU连接的存储器或I/O设备速度较慢,无法在T3结束前准备好数据,它可以通过READY引脚(图中未画出)通知CPU。

  • CPU检测到READY信号为低后,会在T3和T4之间自动插入一个或多个等待周期 TW。在 TW 期间,总线上所有的信号状态都保持不变,直到READY信号变为高电平,CPU才会在下一个时钟周期进入T4。

T4 状态:读周期结束阶段

在T4状态,CPU完成数据的内部锁存,并结束本次总线周期。

  • CPU内部动作:CPU已经成功获取数据。
  • 控制信号恢复
  • RD\overline{\text{RD}} 信号恢复为高电平(无效),结束读命令。
  • DEN\overline{\text{DEN}} 信号也恢复为高电平,关闭数据总线收发器。
  • 所有总线引脚(地址、数据、控制)都为下一个总线周期的开始做准备。

总结表:8086读周期信号变化

信号T1 状态T2 状态T3 状态T4 状态
A/S, A/D输出地址S:输出状态, D:高阻态D: 输入数据变为无效/高阻
ALE高电平 → 低电平低电平低电平低电平
M/IO\overline{\text{IO}}输出高/低电平保持保持变为无效
RD\overline{\text{RD}}高电平变为低电平保持低电平变为高电平
DT/R\overline{\text{R}}低电平保持低电平保持低电平变为高电平或浮空
DEN\overline{\text{DEN}}高电平变为低电平保持低电平变为高电平

8086 CPU与8088 CPU的引脚功能差异

8086和8088在内部结构和指令系统上几乎完全相同,主要区别在于外部总线接口,这导致了引脚功能的差异。

特性/引脚8086 CPU8088 CPU
外部数据总线16位8位
地址/数据复用线AD0 - AD15 (16根)AD0 - AD7 (8根)
BHE\overline{\text{BHE}} (高字节使能)有,用于控制对高8位数据总线的访问。无,因为只有8位数据总线。
M/IO\overline{\text{IO}}有,高电平访存,低电平访IO。引脚功能类似但名称和逻辑可能不同(如IO/M\overline{\text{M}})。

TDM (Time Division Multiplexing) 时分复用概念

时分复用是一种在同一物理信道上交替传输不同信号的技术。8086 CPU为了减少引脚数量,在部分引脚上采用了时分复用技术。

  • AD0-AD15 地址/数据线时分复用 :在总线周期的T1时刻,这些引脚传输16位地址信息的低16位(A0-A15)。在T2至T4时刻,它们则用作16位数据线(D0-D15)。通过ALE信号,可以在T1时刻将地址锁存到外部锁存器中。
  • A16/S3-A19/S6 地址/状态线时分复用:在总线周期的T1时刻,这些引脚传输20位地址信息的高4位(A16-A19)。在后续时刻,它们输出CPU的内部状态信息(S3-S6)。

8086 CPU主要控制信号引脚定义与作用

引脚全称/含义功能作用
M/IO\overline{\text{IO}}Memory/Input-Output\overline{\text{Input-Output}}存储器/输入输出选择信号。高电平表示访问存储器,低电平表示访问I/O接口。
RD\overline{\text{RD}}Read读信号(低电平有效)。当其为低电平时,表示CPU正在执行读操作。
WR\overline{\text{WR}}Write写信号(低电平有效)。当其为低电平时,表示CPU正在执行写操作。
ALEAddress Latch Enable地址锁存允许信号。在其下降沿,外部地址锁存器会锁存地址/数据总线上的地址信息。
DT/R\overline{\text{R}}Data Transmit/Receive\overline{\text{Receive}}数据发送/接收信号。高电平表示CPU向外发送数据(写),低电平表示CPU接收数据(读)。
DEN\overline{\text{DEN}}Data Enable数据使能信号(低电平有效)。用于控制外部数据总线收发器的开关,允许数据在CPU和外部设备间传输。
BHE\overline{\text{BHE}}Bus High Enable高字节使能信号(低电平有效)。它与地址线A0配合,用于选择访问高8位数据总线。

8086 CPU的奇偶地址与存储体结构

8086 CPU的1M字节存储空间在物理上被划分为两个独立的512KB的存储体(Bank):

  • 偶地址存储体 (Low Bank):连接到数据总线的低8位 (D7-D0)。存放所有地址末位为0的字节(如00000H, 00002H, 00004H…)。此存储体由地址线 A0 控制,当A0=0时被选中。
  • 奇地址存储体 (High Bank):连接到数据总线的高8位 (D15-D8)。存放所有地址末位为1的字节(如00001H, 00003H, 00005H…)。此存储体由信号 BHE\overline{\text{BHE}} (Bus High Enable) 控制,当BHE\overline{\text{BHE}}=0时被选中。

CPU通过组合使用 A0 和 BHE\overline{\text{BHE}} 信号,可以实现对单个字节(偶地址或奇地址)或一个字(必须从偶地址开始)的灵活访问。

BHE\overline{\text{BHE}}A0访问类型数据线描述
10读/写 偶地址 的一个字节D7-D0选中低8位存储体。
01读/写 奇地址 的一个字节D15-D8选中高8位存储体。
00读/写一个 (Word)D15-D0同时选中高、低两个存储体,在一个总线周期内完成16位数据的传输。注意:字的地址必须是偶数。
11(未使用)-这种组合在8086中没有定义操作。

重要概念

  • 字对齐:当一个16位的字(Word)存放在一个偶地址开始的连续两个字节中时(如地址00002H和00003H),8086可以在一个总线周期内完成读写。
  • 非对齐 :如果试图访问一个从奇地址开始的字(如00003H和00004H),CPU需要执行两个总线周期:第一个周期读取奇地址的字节(高字节),第二个周期读取下一个偶地址的字节(低字节),效率大大降低。因此,在编程中应尽量保证字数据对齐在偶地址上。

8086 CPU的20根地址线与1M寻址空间

8086 CPU有20根地址线(A0-A19),因此其可寻址的存储单元个数为 220 = 1,048,576个。由于每个存储单元存放一个字节,所以8086的寻址空间为1MB。地址范围为 00000H 到 FFFFFH。

8086 CPU的指令执行与数据处理

CPU的核心工作是根据用户程序顺序执行指令,并对操作数进行各种处理,包括算术运算(加减乘除)、逻辑运算(与或非异或)以及格式转换等。

8086 CPU的编程结构:EU与BIU

为了提高效率,8086采用了流水线设计,将内部结构划分为两个独立工作的单元:

  • EU (Execution Unit) 执行单元:负责指令的译码和执行。它包含算术逻辑单元(ALU)、通用寄存器和标志寄存器。
  • BIU (Bus Interface Unit) 总线接口单元:负责CPU与存储器或I/O接口之间的所有数据传输。它包含段寄存器、指令指针、地址加法器和一个6字节的指令预取队列。

EU执行单元的通用寄存器

EU内部有8个16位的通用寄存器,其中前四个还可以作为两个独立的8位寄存器使用。

寄存器 (16位)高8位低8位名称主要用途
AXAHAL累加器用于算术运算、逻辑运算和I/O操作。
BXBHBL基址寄存器常作为存储器寻址的基址。
CXCHCL计数寄存器在循环和串操作指令中用作计数器。
DXDHDL数据寄存器在乘除法中存放部分操作数或结果,或存放I/O端口地址。
SP--堆栈指针指向堆栈段的栈顶。
BP--基址指针用于在堆栈段中寻址。
SI--源变址寄存器在串操作中指向源操作数。
DI--目标变址寄存器在串操作中指向目的操作数。

BIU总线接口单元的专用寄存器

BIU使用6个16位专用寄存器来管理存储器分段和指令流。

寄存器名称功能
CS代码段寄存器存放当前执行指令所在的代码段的段地址。
DS数据段寄存器存放当前使用的数据段的段地址。
SS堆栈段寄存器存放堆栈段的段地址。
ES附加段寄存器作为辅助的数据段寄存器,用于访问额外的数据区。
IP指令指针寄存器存放下一条要执行指令在代码段内的偏移地址。CS和IP共同决定了下一条指令的物理地址。
FLAG / PSW标志寄存器 / 程序状态字记录CPU运算结果的状态信息(如进位、零、符号等)和控制CPU执行的标志(如中断允许、方向标志等)。