Lecture 21: CPU - Datapath and Control 中央处理器 : 数据通路和控制器
singlepath2 单周期数据通路的设计 主要内容 CPU 的功能及其与计算机性能的关系 数据通路的位置 单周期数据通路的设计 数据通路的功能和实现 - 操作元件 ( 组合逻辑部件 ) - 状态 / 存储元件 ( 时序逻辑部件 ) 数据通路的定时 选择 MIPS 指令集的一个子集作为 CPU 的实现目标 下条指令地址计算与取指令部件 R 型指令的数据通路 访存指令的数据通路 立即数运算指令的数据通路 分支和跳转指令的数据通路 综合所有指令的数据通路
CPU 功能及其与计算机性能的关系 CPU 执行指令的过程 : - 取指令 - PC+1 送 PC - 指令译码 - 进行主存地址运算 - 取操作数 singlepath3 取指阶段 - 进行算术 / 逻辑运算 - 存结果 - 判断和检测 异常 事件 译码和执行阶段 - 若有异常, 则自动切换到异常处理程序 - 检测是否有 中断 请求, 有则转中断处理 CPU 的实现与计算机性能的关系 计算机性能 ( 程序执行快慢 ) 由三个关键因素决定 : - 指令数目 CPI 时钟周期 指令数目由编译器和指令集决定 时钟周期和 CPI 由 CPU 的实现来决定 因此,CPU 的设计与实现非常重要! 它直接影响计算机的性能 指令执行过程
组成指令功能的四种基本操作 每条指令的功能总是由以下四种基本操作来实现 : (1) 读取某一主存单元的内容, 并将其装入某个寄存器 ; (2) 把一个数据从某个寄存器存入给定的主存单元中 ; (3) 把一个数据从某个寄存器送到另一个寄存器或者 ALU; (4 进行某种算术运算或逻辑运算, 将结果送入某个寄存器 操作功能可形式化描述 描述语言称为寄存器传送语言 RTL (Register Transfer Language) 本章所用的 RTL 规定如下 : (1) 用 R[r] 表示寄存器 r 的内容 ; (2) 用 M[addr] 表示读取主存单元 addr 的内容 ; (3) 传送方向用 表示, 传送源在右, 传送目的在左 ; (4) 程序计数器 PC 直接用 PC 表示其内容 ; (5) 用 OP[data] 表示对数据 data 进行 OP 操作 singlepath4
CPU 基本组成原理图 指令寄存器 ----IR 程序计数器 ---PC 执行部件 CPU 由执行部件和控制部件组成 CPU 包含数据通路和控制器 singlepath5 控制部件控制器由指令译码器和控制信号形成部件组成
数据通路的位置 计算机的五大组成部分 : CPU Control Memory Input Datapath Output 什么是数据通路 (DataPath)? 指令执行过程中, 数据所经过的路径, 包括路径中的部件 它是它是指令的执行部件 控制器 (Control) 的功能是什么? 对指令进行译码, 生成指令对应的控制信号, 控制数据通路的动作 能对执行部件发出控制信号, 是指令的控制部件指令的控制部件 singlepath6
数据通路的基本结构 数据通路由两类部件组成 组合逻辑元件 ( 也称操作元件 ) 存储元件 ( 也称状态元件 ) 元件间的连接方式 总线连接方式 分散连接方式 数据通路如何构成? 由 操作元件 和 存储元件 通过总线方式或分散方式连接而成 数据通路的功能是什么? 进行数据存储 处理处理 传送 因此, 数据通路是由操作元件操作元件和存储元件存储元件通过总线方式或分散方式连接而成的进行数据存储 处理处理 传送的路径传送的路径 singlepath7
操作元件 : 组合逻辑电路 加法器 (Adder) 多路选择器 (MUX) A B A Select MUX Adder CarryIn Y B Sum Carry 加法器需要什么控制信号? 译码器 (Decoder) 3 Decoder 何时要用到 adder, ALU, MUX or Decoder? 控制信号 out0 out1 out2 out7 算逻部件 (ALU) A B OP ALU Result Zero 组合逻辑元件的特点 : 其输出只取决于当前的输入 即 : 输入一样, 其输出也一样 定时 : 所有输入到达后, 经过一定的逻辑门延时, 输出端改变, 并保持到下次改变, 不需要时钟信号来定时 singlepath8
状态元件 : 时序逻辑电路 状态 ( 存储 ) 元件的特点 : 具有存储功能, 在时钟控制下输入被写到电路中, 直到下个时钟到达 输入端状态由时钟决定何时被写入, 输出端状态随时可以读出 定时方式 : 规定信号何时写入状态元件或何时从状态元件读出 边沿触发 (edge-triggered) 方式 : - 状态单元中的值只在时钟边沿改变 每个时钟周期改变一次 上升沿 (rising edge) 触发 : 在时钟正跳变时进行读 / 写 下降沿 (falling edge) 触发 : 在时钟负跳变时进行读 / 写 falling edge cycle time rising edge 最简单的状态单元 ( 回顾 : 数字逻辑电路课程内容 ): D 触发器 : 一个时钟输入 一个状态输入 一个状态输出 singlepath9
存储元件中何时状态被改变? 这期间 D 的变化不影响 Q Q 总是在 clock-to-q 后跟着 D 变化 ( Latch Prop - 锁存延迟 ) 切记 : 状态单元的输入信息总是在一个时钟边沿到达后的 Clk-to-Q 时才被写入到单元中, 此时的输出才反映新的状态值数据通路中的状态元件有两种 : 寄存器 ( 组 ) + 存储器 singlepath10
存储元件 : 寄存器和寄存器组 寄存器 (Register) 有一个写使能 (Write Enable-WE) 信号 0: 时钟边沿到来时, 输出不变 1: 时钟边沿到来时, 输出开始变为输入 若每个时钟边沿都写入, 则不需 WE 信号 寄存器组 (Register File) 两个读口 ( 组合逻辑操作 ):busa 和 busb 分别由 RA 和 RB 给出地址 地址 RA 或 RB 有效后, 经一个 取数时间 (AccessTime),busA 和 busb 有效 一个写口 ( 时序逻辑操作 ): 写使能为 1 的情况下, 时钟边沿到来时,busW 传来的值开始被写入 RW 指定的寄存器中 Data In busw Clk Write Enable N Clk Data Out N Write Enable RW RA RB 5 5 5 -bit Registers busa busb singlepath11
寄存器组的内部结构 Write Enable RA RB RW 0 1 -to-1 Decoder 30 31 C D C D Register 0 Register 1 M U busa busw C D C D Register 30 Register 31 X Clk 每个寄存器由 个触发器组成 ; 输入数据来自 busw, 读出数据分别送 busa 和 busb; WriteEnable 信号控制是否写入新值 M U X busb singlepath12
存储元件 : 理想存储器 理想存储器 ( idealized memory ) Data Out: 位读出数据 Data In: 位写入数据 Address: 读写公用一个 位地址 Address Write Enable Data In DataOut 读操作 : 地址 Address 有效后, 经一个 取数时间 AccessTime,Data Out 上数据有效 写操作 : 写使能为 1 的情况下, 时钟 Clk 边沿到来时,Data In 传来的值开始被写入 Address 指定的存储单元中 Clk 为简化数据通路操作说明, 把存储器简化为带时钟信号 Clk 的理想模型 singlepath13
数据通路与时序控制 同步系统 (Synchronous system) 所有动作有专门时序信号来定时 由时序信号规定何时发出什么动作例如, 指令执行过程每一步都有控制信号控制, 由定时信号确定控制信号何时发出 作用时间多长 什么是时序信号? 同步系统用于同步控制的定时信号, 如时钟信号 什么叫指令周期? 取并执行一条指令的时间 每条指令的指令周期肯定一样吗? 早期计算机的三级时序系统 机器周期 - 节拍 - 脉冲 指令周期可分为取指令 读操作数读操作数 执行并写结果等多个基本工作周期, 称为机器周期 机器周期有取指令 存储器读存储器读 存储器写存储器写 中断响应等不同类型 singlepath14
数据通路与时序控制 现代计算机已不再采用三级时序系统, 机器周期的概念已逐渐消失 整个数据通路中的定时信号就是时钟, 一个时钟周期就是一个节拍 singlepath15
数据通路与时序控制 现代计算机的时钟周期 Clk Setup Hold 寄存器的输入可变化 Setup Hold 数据通路由 + 状态元件 + 操作元件 ( 组合电路 ) + 状态元件 + 组成 只有状态元件能存储信息, 所有操作元件都须从状态单元接收输入, 并将输出写入状态单元中 其输入为前一时钟生成的数据, 输出为当前时钟所用的数据 假定采用下降沿触发 ( 负跳变 ) 方式 ( 也可以是上升沿方式 ) 所有状态单元在下降沿写入信息, 经过 Latch Prop (clk-to-q) 后输出有效 Cycle Time = Latch Prop + Longest Delay Path + Setup + Clock Skew( 最大偏移 ) 约束条件 :(Latch Prop + Shortest Delay Path - Clock Skew) > Hold Time singlepath16 Clk Clk
早期累加器型指令系统数据通路 最简单的数据通路结构 取指令数据路径为 : PC MAR, Read M, M MBR IBR IR 取操作数 运算 送结果的数据路径为 : 操作数地址 MAR, Read M, M MBR ALU 输入端, AC ALU 输入端, ALU 操作, ALU 结果 MBR, Write M AC: 累加器 MQ: 乘商寄存器 PC IR ALU IBR MBR:? singlepath17 IAS 计算机 ( 冯 诺依曼等设计 ) 是现代计算机的原型
单总线数据通路 四种基本操作的时序 在通用寄存器之间传送数据 R0out,Yin 完成算术 逻辑运算 R1out,Yin R2out,Add,Zin Zout,R3in 从主存取字 R[R2] M[R[R1]] R1out,MARin Read, WMFC ( 等待 MFC) MDRout,R2in 写字到主存 M[R[R1]] R[R2] R1out,MARin R2out,MDRin, Write, WMFC CPU 访存有两种通信方式 早期 : 直接访问 MM, 异步 方式, 用 MFC 应答信号 ; 现在 : 先 Cache 后 MM, 同步 方式, 无需应答信号 singlepath18 Read/Write 时间更长, 故以此为准! 通用寄存器 OP: Add Sub And Or 等
三总线数据通路 单总线中一个时钟内只允许传一个数据, 因而指令执行效率很低 可采用多总线方式, 同时在多个总线上传送不同数据, 提高效率 例如 : 三总线数据通路 总线 A B 分别传送两个源操作数, 总线 C 传送结果 单总线中的暂存器 Y 和 Z 在此可取消, Why? 采用双口通用寄存器组 三个总线各自传不同数据, 不会发生冲突, 故无需 Y 和 Z 如何实现 : R[R3] R[R1] op R[R2] R1outA,R2outB,op,R3inC 只要一个时钟周期 ( 节拍 ) 即可! Y 通用寄存器组 Z 目前, 计算机大都采用流水线方式执行指令, 上述单总线或三总线数据通路很难实现指令流水执行 以下以 MIPS 指令系统为例介绍非总线式 CPU 的设计 singlepath19