640 likes | 794 Views
计算机组成原理与汇编语言 (组成原理部分) 2000 级. 北航计算机学院 刘旭东 Tel : 82316285 , 82317634 Mail : liuxd@buaa.edu.cn. 第五部分 CPU 与控制单元设计. 一、 CPU 的结构与功能 二、 指令流程与组合逻辑控制器 三、 微程序原理 四、 微程序控制器设计. 一、 CPU 的结构与功能 二、 指令流程与组合逻辑控制器 三、 微程序原理 四、 微程序控制器设计. 1.1 CPU 的结构与功能. CPU 的功能 取指令:具备从存储器中取出指令的功能
E N D
计算机组成原理与汇编语言(组成原理部分)2000级计算机组成原理与汇编语言(组成原理部分)2000级 北航计算机学院 刘旭东 Tel :82316285,82317634 Mail:liuxd@buaa.edu.cn
第五部分 CPU与控制单元设计 一、CPU的结构与功能 二、指令流程与组合逻辑控制器 三、微程序原理 四、微程序控制器设计
一、CPU的结构与功能 二、指令流程与组合逻辑控制器 三、微程序原理 四、微程序控制器设计
1.1 CPU的结构与功能 • CPU的功能 • 取指令:具备从存储器中取出指令的功能 • 地址部件:解决指令地址的产生 • 指令部件:保存从存储器中取来的指令 • 分析指令:分析指令的操作性质,计算指令操作对象的位置(地址) • 译码部件:对指令进行译码 • 执行指令:实现指令的操作功能 • 控制信号:根据指令的操作性质和操作对象的地址,产生一系列的微操作控制信号,从而控制计算机的运算器、存储器或输入输出接口等部件,实现指令所表示的功能。
1.1 CPU的结构与功能 • CPU的结构 • 运算器:算术逻辑运算单元(ALU) • 寄存器:通用计算机(GR),标志寄存器(FR,又称程序状态字PSW) • 控制单元(CU): • 指令部件:指令寄存器(IR) • 译码部件:指令译码器(ID) • 控制部件:微操作控制信号产生部件 • 时序部件:产生时序信号 • 中断系统:处理异常事务 • 内部总线:CPU内部数据通路(Internal Bus)
1.1 CPU的结构与功能 • CPU内部结构 • 执行单元 • 控制单元 • 寄存器单元 • 中断系统 • 内部总线
1.1 CPU的结构与功能 • CPU内部的寄存器 • 通用寄存器(General Register):用户可见,汇编语言可以直接使用; • 数据寄存器、基址寄存器、变址寄存器、堆栈指针、标志寄存器(条件代码寄存器)等 • 控制与状态寄存器:一般用户不可见,为系统控制专用,用户不可直接使用。 • MAR(Memory Address Register):存储器地址寄存器 • MBR/MDR(Memory Buffer Register,Memory Data Register):存储器数据缓冲寄存器 • PC(Program Counter):程序计数器,存放下一条指令的地址 • IR(Instruction Register):指令寄存器,存放当前执行的指令编码
1.1 CPU的结构与功能 • 执行单元(EU-Execution Unit) • 执行单元的核心:算术逻辑运算单元(ALU),完成算术运算、逻辑运算、移位运算等操作; • 寄存器:提供数据缓冲; • 控制单元(CU-Control Unit) • 指令寄存器IR • 指令译码器ID(Instruction Decoder) • 时序部件:提供各种时序信号 • 控制信号生成部件:产生计算机其他部件所需要的所有微操作控制信号。 • 中断系统 • 检查中断信号,中断CPU的正常程序执行,处理异常事务。
返回 1.2 模型机结构
1.2 模型机结构 • 简化的8086/8088结构 • 16位系统 • 通用寄存器部件 • 主存地址寄存器MAR • 主存数据寄存器MDR • 暂存器C,D,Z • 程序计数器PC • 指令寄存器IR • ALU • 存储器部件 • 控制部件 • 数据通路与控制信号 • 微操作控制信号与控制脉冲
1.3 模型机的指令系统 • 双操作数指令格式 RR型或RS型,必有一个操作数在寄存器中(寄存器直接寻址) • 长度2~4个字节(前2个字节必须) • Opcode:操作码(6位) • d: 方向字段(1位)。在第二个字节中,REG确定一个操作数(寄存器直接寻址),MOD和R/M确定零一个操作数的寻址方式。方向字段d表明REG确定的是源操作数还是目的操作数。 • d=1, REG确定目的操作数,MOD+R/M确定源操作数 • d=0, REG确定源操作数,MOD+R/M确定目的操作数 • W:字/字节字段(1位):操作数是字节(8位)还是字(16位) • W=1,字(16位) • W=0,字节(8位)
REG W=1 W=0 000 AX AL 001 CX CL 010 DX DL 011 BX BL 寄存器编码表 100 SP AH 101 BP CH 110 SI DH 111 DI BH 1.3 模型机的指令系统 • 双操作数指令格式
1.3 模型机的指令系统 • 双操作数指令格式
1.3 模型机的指令系统 • 单操作数指令格式 • 指令分类 • 传送指令:MOV Dest,Src • 算术指令:ADD Dest, Src SUB Dest,Src AND Dest, Src OR Dest, Src XOR Dest, Src • 单操作数指令: INC Dest, DEC Dest, NEG Dest, NOT Dest • 移位指令:SAL Dest,1 ; SAR Dest, 1 • 程序控制指令:转移指令,转子指令等
一、CPU的结构与功能 二、指令流程与组合逻辑控制器 三、微程序原理 四、微程序控制器设计
2.1 控制方式与时序系统 • 控制方式 • 同步控制方式:以主时钟为基础 • 异步控制方式 • 同步控制方式下的时序系统 • 脉冲时序信号:主时钟脉冲 • 节拍信号:T1,T2,T3,T4 • 机器周期信号:M1,M2,M3,M4 • 指令周期 • 指令周期 • 取指周期:从存储器取出指令送指令寄存器 • 取数周期:计算操作数有效地址,取出操作数; • 执行周期:执行指令的功能 • 指令周期与机器周期、节拍周期的关系 • 同步控制方式下,指令周期包括多个(不一定固定)机器周期; • 每个机器周期包括固定个数的节拍周期
2.1 控制方式与时序系统 • 时序系统
2.1 控制方式与时序系统 • 时序部件
2.2 指令流程与微操作时间表 • 指令周期分析(针对模型计算机及其指令系统而言) • 取指周期的微操作流程 • MOV指令的微操作流程 • 单操作数指令的微操作流程 • 双操作数指令的微操作流程 • 其他指令的微操作流程
2.2 指令流程与微操作时间表 • 指令的执行过程 • 取指:从存取器读取当前指令送到指令寄存器(IR),要根据指令编码的长度才能确定读取指令的详细流程。 • 取数:计算操作数地址,读取操作数,要根据操作数的来源与寻址方式才能确定具体的操作过程。 • 执行:执行并送结果。 • 取指周期 • 指令的核心部分占16Bits,机器字长16Bits,每一次从存储器能读取16Bits • 指令编码长度有2个字节(16位),4个字节(32位),甚至6个字节,但指令核心部分长度为16位。 • 取指周期特指读取指令核心部分(16Bits)的周期,所以在这种前题下,所有指令的取指周期是完全一样的。
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR 结构图 2.2 指令流程与微操作时间表 • 取指周期的微操作流程 • 取指流程需要4个节拍 • 指令地址送MAR • 存储器读出指令 • 指令送MDR,并调整PC • 指令送IR • 每条指令执行过程的第一个机器周期M1都是取指周期(取到指令核心部分)
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR 取指周期 M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR M2.T1 BX送暂存器C IB GR, RDGR, W/B CPC, BX地址 执行周期 M2.T2 暂存器C送AX IB C, WRGR, W/B AX地址 M2.T3 无操作 M2.T4 无操作 结构图 2.2 指令流程与微操作时间表 • MOV AX,BX 指令执行的微操作流程 • 指令长度:16位,一次可读取完毕(指令代码:89DBH) • 读取指令周期:机器周期M1内完成 • 执行周期:机器周期M2内完成
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR 取指周期 M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR 结构图 2.2 指令流程与微操作时间表 • MOV AX,1000H[BX] 指令执行的微操作流程 • 指令长度:32位,分两次读取(指令代码:8B870010H) • 读取指令周期:机器周期M1内完成(读第一个16位) • 读变址值周期:机器周期M2内完成 • 取操作数周期:机器周期M3内完成 • 执行周期:机器周期M4内完成
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M2.T1 PC送MAR IB PC CPMAR 取变址值 M2.T2 从存储器读取1000H AB MAR, RD, W/B M2.T3 1000H送MDR MDR DB CPMDR 调整PC PC+1 CPPC M2.T4 MDR(1000H)送D IB MDR CPD M3.T1 (BX)+1000H 送 Z IB GR, RDGR, W/B, ADD BX地址, CPZ 取数周期 M3.T2 源操作数地址 Z 送MAR IB Z CPMAR M3.T3 读取源操作数 AB MAR, RD, W/B M3.T4 源操作数送MDR MDR DB CPMDR 结构图 2.2 指令流程与微操作时间表
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M4.T1 源操作数送AX IB MDR, WRGR, W/B AX的地址 执行周期 M4.T2 M4.T3 M4.T4 结构图 2.2 指令流程与微操作时间表
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR 取指周期 M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR 结构图 2.2 指令流程与微操作时间表 • MOV 1000H[BX], AX 指令执行的微操作流程 • 指令长度:32位,分两次读取(指令代码:89870010H) • 读取指令周期:机器周期M1内完成(读第一个16位) • 读变址值周期:机器周期M2内完成 • 取操作数周期:机器周期M3内完成
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M2.T1 PC送MAR IB PC CPMAR 取变址值 M2.T2 从存储器读取1000H AB MAR, RD, W/B M2.T3 1000H送MDR MDR DB CPMDR 调整PC PC+1 CPPC M2.T4 MDR(1000H)送D IB MDR CPD M3.T1 (BX)+1000H 送 Z IB GR, RDGR, W/B, ADD BX地址, CPZ 执行周期 M3.T2 目的操作数地址送MAR IB Z CPMAR M3.T3 AX送MDR IBGR,GRRD,W/B AX地址,CPMDR M3.T4 写存储器 ABMAR, DB MDR WR, W/B 结构图 2.2 指令流程与微操作时间表
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR 取指周期 M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR 结构图 2.2 指令流程与微操作时间表 • ADD 2000H[BX],1000H 指令执行的微操作流程 • 指令长度:48位,分三次读取(指令代码:818700200010H) • 读取指令周期:机器周期M1内完成(读第一个16位) • 读变址值周期:机器周期M2内完成 • 取操作数周期:机器周期M3内完成 • 取立即数,完成加法:机器周期M4内完成 • 执行周期:机器周期M5内完成
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M2.T1 PC送MAR IB PC CPMAR 取变址值 M2.T2 从存储器读取2000H AB MAR, RD, W/B M2.T3 2000H送MDR MDR DB CPMDR 调整PC PC+1 CPPC BX送暂存器D IB GR, RDGR CPD, BX地址 M2.T4 MDR(2000H)送ALU 加法结果送Z IB MDR, ADD, W/B CPZ M3.T1 目的操作数地址 Z 送MAR 地址暂存在C IB Z CPMAR, CPC 取数周期 M3.T2 读取目的操作数 AB MAR, RD, W/B M3.T3 目的操作数送MDR MDR DB CPMDR M3.T4 目的操作数送D IB MDR CPD 结构图 2.2 指令流程与微操作时间表
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 取立即数 进行加法 M4.T1 PC送MAR IB PC CPMAR M4.T2 从存储器读取1000H AB MAR, RD, W/B M4.T3 1000H送MDR MDR DB CPMDR 调整PC PC+1 CPPC M4.T4 完成加法 IB MDR, ADD, W/B CPZ M5.T1 目的操作数地址C送MAR IB C CPMAR 保存结果 M5.T2 加法结果送MDR IB Z CPMDR M5.T3 结果写存储器 AB MAR,DBMDR WR, W/B M5.T4 No Operation 结构图 2.2 指令流程与微操作时间表
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR 取指周期 M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR 结构图 2.2 指令流程与微操作时间表 • JNE 1200 指令执行的微操作流程 • 指令长度:假定占32位,分两次读取 • 不相等时转移,相对寻址,目标地址=(PC)+1200 • 读取指令周期:机器周期M1内完成(读第一个16位) • 读转移地址周期:机器周期M2内完成
时间节拍 完成功能 需要的微操作信号 需要的控制脉冲 M2.T1 PC送MAR IB PC CPMAR 取转向地址 M2.T2 从存储器读取1200H AB MAR, RD, W/B M2.T3 1200H送MDR MDR DB CPMDR 调整PC PC+1 CPPC M2.T4 1200H送暂存器D IB MDR, W/B CPD M3.T1 计算转向地址 IB PC,ADD,W/B CPZ 实现转移 M3.T2 如果Z=0时转移 条件来自标志寄存器 IB Z CPPC 结构图 2.2 指令流程与微操作时间表
2.3 微操作信号的综合 • 译码与微操作控制信号部分逻辑图
2.3 微操作信号的综合 • 例 IB MDR微操作控制信号的综合 • 示例中的所有指令的 M1.T4节拍 • MOV AX,1000H[BX]指令的 M2.T4节拍(条件:操作码译码为 MOV,源操作数寻址译码为变址寻址)。 • MOV 1000H[BX],AX指令的M2.T4节拍(条件:操作码译码为 MOV,目的操作数寻址译码为变址寻址)。 • ADD 2000H[BX], 1000H指令的M2.T4,M3.T4 和M4.T4节拍(条件:操作码译码为 ADD,目的操作数寻址译码为变址寻址,源操作数寻址为立即数寻址) • JNE 1200指令的M2.T4节拍
指令 IBMDR有效的时间与条件 时间节拍 操作码译码 源寻址译码 目寻址译码 FR 示例中的所有指令 M1.T4 MOV AX,1000H[BX] M2.T4 MOV Sx DR MOV 1000H[BX],AX M2.T4 MOV SR Dx ADD 2000H[BX], 1000H M2.T4 ADD Simm Dx M3.T4 ADD Simm Dx M4.T4 ADD Simm Dx JNE 1200 M2.T4 JNE 2.3 微操作信号的综合 • 例1: IB MDR微操作控制信号的综合 • Sx 表示源操作数是变址寻址,SR表示寄存器直接寻址(可以理解为译码器的输出端) • Dx 表示目的操作数是变址寻址 • Simm 表示源操作数是立即数寻址 • OPMov,OPAdd和OPJne表示操作码译码输出
指令 IBMDR有效的时间与条件 时间节拍 操作码译码 源寻址译码 目寻址译码 FR 示例中的所有指令 M1.T4 MOV AX,1000H[BX] M2.T4 MOV Sx DR MOV 1000H[BX],AX M2.T4 MOV SR Dx ADD 2000H[BX], 1000H M2.T4 ADD Simm Dx M3.T4 ADD Simm Dx M4.T4 ADD Simm Dx JNE 1200 M2.T4 JNE 2.3 微操作信号的综合 • IB MDR微操作控制信号的布尔表达式
2.3 微操作信号的综合 • 例2 :IB Z微操作控制信号的综合 • MOV AX,1000H[BX]指令的 M3.T2节拍(条件:操作码译码为 MOV,源操作数寻址译码为变址寻址)。 • MOV 1000H[BX],AX指令的M3.T2节拍(条件:操作码译码为 MOV,目的操作数寻址译码为变址寻址)。 • ADD 2000H[BX], 1000H指令的M3.T1,M5.T2 (条件:操作码译码为 ADD,目的操作数寻址译码为变址寻址, 源操作数寻址为立即数寻址) • JNE 1200指令的M3.T2节拍(条件为Z=0)
指令 IBZ 有效的时间与条件 时间节拍 操作码译码 源寻址译码 目寻址译码 FR MOV AX,1000H[BX] M3.T2 MOV Sx DR MOV 1000H[BX],AX M3.T2 MOV SR Dx ADD 2000H[BX], 1000H M3.T1 ADD Simm Dx M5.T2 ADD Simm Dx JNE 1200 M3.T2 JNE Z=0 2.3 微操作信号的综合 • 例 IB Z微操作控制信号的综合 • Sx 表示源操作数是变址寻址(可以理解为译码器的输出端) • Dx 表示目的操作数是变址寻址 • Simm 表示源操作数是立即数寻址 • OPMov,OPAdd和OPJne表示操作码译码输出
指令 IBZ 有效的时间与条件 时间节拍 操作码译码 源寻址译码 目寻址译码 FR MOV AX,1000H[BX] M3.T2 MOV Sx DR MOV 1000H[BX],AX M3.T2 MOV SR Dx ADD 2000H[BX], 1000H M3.T1 ADD Simm Dx M5.T2 ADD Simm Dx JNE 1200 M3.T2 JNE Z=0 2.3 微操作信号的综合 • IB Z 微操作控制信号的布尔表达式 依照上述方式构造的控制器称为组合逻辑控制器(硬连线控制器)
2.3 微操作信号的综合 • 微操作控制信号C的布尔函数
2.3 微操作信号生成部件的实现 • 控制部件的实现 • 硬连线实现方式 • 组合逻辑电路 • 可编程逻辑阵列 PLA • 可编程阵列逻辑 PAL • 通用阵列逻辑 GAL • 微程序控制器
一、CPU的结构与功能 二、指令流程与组合逻辑控制器 三、微程序原理 四、微程序控制器设计
3.1 微程序原理 • 基本思路 • 指令的 执行:按顺序执行一系列的微操作,每一个时钟周期(节拍)完成一个或多个微操作。 • 微操作:实际上是控制器送出的控制线,具有1和0两种状态。 • 将指令执行微操作序列中一个节拍内同时完成的微操作用一个二进制代码串来表示,这就是微指令。 • 微指令的执行:通过某种逻辑产生该微指令所表示的微操作控制信号,送控制总线,并维持一个时钟周期。 • 指令的执行 = 微指令的序列 • 微指令序列 = 微程序 • 一条机器指令对应一段微程序 • 将所有指令对应的微程序保存在存储器中(控制存储器) • 基于这种思想构造的控制器:微程序控制器
顺序 完成功能 需要的微操作信号 需要的控制脉冲 M1.T1 指令地址送MAR IB PC CPMAR 取指周期 M1.T2 Read Memory AB MAR, RD, W/B M1.T3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC M1.T4 MDR(指令)送IR IB MDR CPIR 3.1 微程序原理 微指令1 包含4条微指令的取指微程序(公共微程序) 微指令2 微指令3 微指令4
微指令 完成功能 需要的微操作信号 需要的控制脉冲 1 指令地址送MAR IB PC CPMAR 取指微程序 2 Read Memory AB MAR, RD, W/B 3 指令送MDR MDR DB CPMDR 调整PC PC+1 CPPC 4 MDR(指令)送IR IB MDR CPIR 3.1 微程序原理 • MOV 1000H[BX], AX 指令执行的微操作流程
微指令 完成功能 需要的微操作信号 需要的控制脉冲 1 PC送MAR IB PC CPMAR 2 从存储器读取1000H AB MAR, RD, W/B 取数和执行部分微程序 3 1000H送MDR MDR DB CPMDR 调整PC PC+1 CPPC 4 MDR(1000H)送D IB MDR CPD 5 (BX)+1000H 送 Z IB GR, RDGR, W/B, ADD BX地址, CPZ 6 目的操作数地址送MAR IB Z CPMAR 7 AX送MDR IBGR,GRRD,W/B AX地址,CPMDR 6 写存储器 ABMAR, DB MDR WR, W/B 3.1 微程序原理
JMP指令微程序 3.1 微程序原理 • 控制存储器 ROM 取指公共微程序 ADD微程序 SUB微程序 控制存储器结构 AND微程序
3.1 微程序原理 • 微指令的构成要素 • 操作控制字段:描述微操作控制信息,以便产生对应的控制信号; • 顺序控制字段:通过顺序控制字段决定下一条微指令的地址(在控制存储器中的地址)。 操作控制字段 顺序字段
3.1 微程序原理 • 微程序控制器的原理(微指令执行过程) • 根据指令译码得到该指令的第一条微指令的地址。 • 读取微指令送微指令寄存器μIR • 生成微操作信号送控制总线(执行该微指令) • 顺序逻辑根据顺序控制字段和标志形成下一条微指令的地址并送CMAR,以便读取下一条微指令。
3.2 微指令格式 • 操作控制字段编码方式 • 直接控制编码:每一个二进制位代表1个微操作控制信号。1表示执行该微操作,0表示不执行该微操作。不需要译码。 • 分段直接编译:将微操作分组,同一组微操作互斥,不会同时执行,任何时候最多只有一个微操作被执行,组间微操作可能同时执行,组内微操作采用编码方式。从编码到微操作信息需要译码。