Download - William Stallings 计算机组成原理与体系结构 第八版
William Stallings计算机组成原理与体系结构第八版
第 15章控制器操作
微操作• 计算机执行程序• 取指 / 执行周期• 每个指令周期都有一系列子步骤
—参考流水线• 称之为微操作• 每一个步骤微小简单• CPU 的原子操作
程序执行的组成元素
程序执行
指令周期 指令周期指令周期………
取指 间接 执行 中断
微操作 微操作 微操作 微操作 微操作
取指周期 - 4 个寄存器• 内存地址寄存器 (Memory Address
Register ,MAR) —连接到地址总线—指定读、写操作的内存地址
• 内存缓冲寄存器 (Memory Buffer Register ,MBR) —连接到数据总线—存放被写入内存或从内存最后读出的数据
• 程序计数器 (Program Counter ,PC) —存放下一条指令的地址
• 指令寄存器 (Instruction Register ,IR) —保存最近取出的指令
取指周期• 下一条将被执行的指令的地址存放在程序计数器
PC 中• 地址 (在MAR中 ) 放到地址总线• 控制器发出一个读 (READ) 命令• 结果 ( 从内存中读出 ) 出现在数据总线上• 数据总线上的值被复制到内存缓冲寄存器 MBR• PC 自加一 ( 与内存读取数据并行处理 )• 数据 ( 指令 )从MBR 传送到指令寄存器 IR• MBR 被释放了,以便进一步的数据获取
取指周期 ( 符号描述 )• t1: MAR <- (PC)• t2: MBR <- (memory)• PC <- (PC) +1• t3: IR <- (MBR)• (tx 表示单位时间 / 时钟脉冲 )• 或者• t1: MAR <- (PC)• t2: MBR <- (memory)• t3: PC <- (PC) +1 • IR <- (MBR)
微操作分组原则• 必须遵循正确合理的顺序
—MAR <- (PC) 必须先于 MBR <- (memory)
• 必须避免冲突—一个寄存器不能同时进行读写操作—MBR <- (memory) 和 IR <- (MBR) 不应出现在同
一个周期中• 另外 : PC <- (PC) +1 涉及到加法
—运用 ALU—可能需要增加微操作
间接周期• MAR <- (IR( 地址 )) • MBR <- (memory)• IR( 地址 )<- (MBR( 地址 ))
• MBR 存放地址• IR 现处在类似直接寻址被使用过的同一状态• ( 这说明 IR 大小的什么问题? )
中断周期• t1: MBR <-(PC)• t2: MAR <- save-address• PC <- routine-address• t3: memory <- (MBR)• 给出的是一个简单的事件序列
—可能需要额外的微操作以获取地址—注意 . 保存当前状态是通过中断处理程序,而不是微
操作
执行周期 (ADD)• 每条指令是不一样的• e.g. ADD R1,X – 将存储器位置 X 的内容加到
寄存器 R1, 结果保存至 R1• t1: MAR <- (IR( 地址 ))• t2: MBR <- (memory)• t3: R1 <- R1 + (MBR)• 注意没有微操作的重叠
执行周期 (ISZ)• ISZ X - 递增,若为 0 则跳步
—t1: MAR <- (IR( 地址 ))—t2: MBR <- (memory)—t3: MBR <- (MBR) + 1—t4: memory <- (MBR)— 若 (MBR) == 0 , 则 PC <- (PC) + 1
• 注意 :—如果是一个单一的微操作—所有微操作在 T4 完成
执行周期 (BSA)• BSA X – 转移并保存地址
—BSA 指令之后的指令地址被保存于 X 中—由 X+1 位置继续执行—t1: MAR <- (IR( 地址 ))— MBR <- (PC)—t2: PC <- (IR( 地址 ))— memory <- (MBR)—t3: PC <- (PC) + 1
指令周期• 每个阶段都可分解为一系列的微操作• E.g. 取指 , 间接和中断周期• 执行周期
—每一个操作码有一个序列• 需要将微操作序列连接起来• 假设一个新的 2 位寄存器
—指令周期代码 (Instruction cycle code ,ICC) 定义了 CPU 处于周期某一部分的状态
– 00: 取指– 01: 间接– 10: 执行– 11: 中断
指令周期流程图
ICC?
建立中断 读地址 取指令操作码?
ICC = 00 ICC = 10
允许中断?
间接寻址?
ICC = 11 ICC = 00
ICC = 10 ICC = 01
11(中断) 00(取指)
10(执行) 01(间接)
NY
Y N
执行指令
功能需求• 定义 CPU 的基本元素• 描述 CPU 完成的操作• 确定为了使微操作完成,控制器必须具备的功能
CPU的基本功能元素• ALU• 寄存器组• 内部数据通路• 外部数据通路• 控制器
微操作分类• 在寄存器之间传送数据• 将数据由寄存器传送到外部接口• 将数据由外部接口传送到寄存器• 完成算术逻辑运算
控制器基本任务• 排序 (sequencing)
—使 CPU 一步步通过一系列微操作• 执行 (execution)
—使每个微操作得以完成• 控制信号实现上述任务
控制信号• 时钟
—每个时钟脉冲完成一个 ( 或一组同时的 ) 微操作指令
• 指令寄存器—当前指令的操作码—确定执行何种微操作
• 标志—COU 的状态—先前操作的结果
• 来自控制总线的控制信号—中断信号—应答信号
控制器模型
指令寄存器
控制器
…
控制总线
CPU内的控制信号
来自系统总线的控制信号
至系统总线的控制信号
标志
时钟
控制信号 - 输出• CPU 内的控制信号
—用于数据传送—启动特定功能
• 到控制总线的控制信号—对存储器的控制信号—到 I/O 模块的控制信号
控制信号举例 - 取指周期• MAR <- (PC)
—控制单元发出信号,打开 PC与MAR 的门• MBR <- (memory)
—打开 MAR 与地址总线的门—存储器读取控制信号—打开数据总线和 MAR 的门
数据通路和控制信号
MBR
PC IR
时钟
AC
控制器
MAR
ALU
控制信号
· · ·
· · · 标志
· · · 控制信号
C7C9
C5
C12
C10
C4
C13
C11
C8
C3C1
C0
C6
C2
内部组织• 通常使用一个内部总线• 门控制数据与总线的交换 Gates control
movement of data onto and off the bus• 控制信号控制数据与外部系统总线的交换• ALU 的一些相应操作需要临时寄存器
有内部总线的 CPU IR
PC
控制器
MAR
MBR
AC
Y
ALU
Z
CPU内部总线
地址线
数据线
Intel 8085 处理器结构图
8位内部数据总线
中断控制 串行I/O
(8)累加器
(8)临时寄存器
(5)标志触发器
(8)指令寄存器
指令译码器机器周期编码
B(8)寄存器
C(8)寄存器
D(8)寄存器
E(8)寄存器
H(8)寄存器
L(8)寄存器
(16)栈指针(16)
程序计数器(16)递增/递减地址锁存
寄存器组
(8)地址缓冲器
(16)地址数据缓冲器
定时和控制CKLGEN 控制 状态 DMA 复位
+5V
GND
X1
X2
CLK Out
Ready
RD WR ALE S0 S1 IO/M
HOLD
HLDA
Rest In
Rest Out
A15 ~ A8
地址总线AD7 ~ AD0
地址/数据总线
电源
INTR
INTA
RST 5.5
RST 6.5
RST 7.5
Trap
SID SOD
(8)算术逻辑单元
(ALU)
Intel 8085 引脚分布
Intel 8085 OUT 指令时序图OUT字节
M1 M2 M3
T1 T2 T3 T4 T1 T2 T3 T1 T2 T3
PC输出 PC+1à PC 指令 à IR X PC输出 PC+1à PC 字节à Z,W WZ输出 A 端口
取指令 存储器读 输出写
PCH PCH
3MHz CLK
A15~A8
AD7~AD0
ALE
RD
WR
IO/M
I/O端口
PCL 指令 累加器指令 指令 指令
硬布线实现 (1)• 控制器输入• 标志和控制总线
—每个位都有某种意义• 指令寄存器
—指令操作码为不同指令产生不同的控制信号—每一操作码有唯一的逻辑输入—译码器接收一个编码输入并产生输出信号—n 个输入和 2n个输出
硬布线实现 (2)• 时钟
—重复的脉冲序列—对于过量微操作的持续时间是有用的—时钟脉冲周期要足够的长—在一个指令周期内,不同时间单位发送不同的控制信
号—需要一个计数器,在不同时钟脉冲 t1,t2等发出不同
的控制信号
带有译码输入的控制器
控制器定时器
译码器
指令寄存器
···
I0 I1 Ik
Tn
T1T2
控制信号
C1 C2 Cn
时钟
标志
硬布线设计存在的问题• 复杂的序列和微操作逻辑• 难以设计和测试• 僵化的设计• 很难添加新指令
选读• Stallings 第 15章