330 likes | 579 Views
William Stallings 计算机组成原理与体系结构 第八版. 第 15 章 控制器操作. 微操作. 计算机执行程序 取指 / 执行周期 每个指令周期都有一系列子步骤 参考流水线 称之为微操作 每一个步骤微小简单 CPU 的原子操作. 程序执行的组成元素. 取指周期 - 4 个寄存器. 内存地址寄存器 ( Memory Address Register ,MAR) 连接到地址总线 指定读、写操作的内存地址 内存缓冲寄存器 ( Memory Buffer Register ,MBR) 连接到数据总线 存放被写入内存或从内存最后读出的数据
E N D
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: 中断
功能需求 • 定义CPU的基本元素 • 描述CPU完成的操作 • 确定为了使微操作完成,控制器必须具备的功能
CPU的基本功能元素 • ALU • 寄存器组 • 内部数据通路 • 外部数据通路 • 控制器
微操作分类 • 在寄存器之间传送数据 • 将数据由寄存器传送到外部接口 • 将数据由外部接口传送到寄存器 • 完成算术逻辑运算
控制器基本任务 • 排序(sequencing) • 使CPU一步步通过一系列微操作 • 执行(execution) • 使每个微操作得以完成 • 控制信号实现上述任务
控制信号 • 时钟 • 每个时钟脉冲完成一个(或一组同时的)微操作指令 • 指令寄存器 • 当前指令的操作码 • 确定执行何种微操作 • 标志 • COU的状态 • 先前操作的结果 • 来自控制总线的控制信号 • 中断信号 • 应答信号
控制信号- 输出 • CPU内的控制信号 • 用于数据传送 • 启动特定功能 • 到控制总线的控制信号 • 对存储器的控制信号 • 到I/O模块的控制信号
控制信号举例- 取指周期 • MAR <- (PC) • 控制单元发出信号,打开PC与MAR的门 • MBR <- (memory) • 打开MAR与地址总线的门 • 存储器读取控制信号 • 打开数据总线和MAR的门
内部组织 • 通常使用一个内部总线 • 门控制数据与总线的交换Gates control movement of data onto and off the bus • 控制信号控制数据与外部系统总线的交换 • ALU的一些相应操作需要临时寄存器
硬布线实现(1) • 控制器输入 • 标志和控制总线 • 每个位都有某种意义 • 指令寄存器 • 指令操作码为不同指令产生不同的控制信号 • 每一操作码有唯一的逻辑输入 • 译码器接收一个编码输入并产生输出信号 • n个输入和 2n个输出
硬布线实现(2) • 时钟 • 重复的脉冲序列 • 对于过量微操作的持续时间是有用的 • 时钟脉冲周期要足够的长 • 在一个指令周期内,不同时间单位发送不同的控制信号 • 需要一个计数器,在不同时钟脉冲t1,t2等发出不同的控制信号
硬布线设计存在的问题 • 复杂的序列和微操作逻辑 • 难以设计和测试 • 僵化的设计 • 很难添加新指令
选读 • Stallings 第15章