860 likes | 1.18k Views
第 3 章 CPU 原理. CPU 的主要功能是执行存放在主存储器中的程序即机器指令。 CPU 是由控制器和运算器。. 学习目标:. 理解全加器的逻辑式和结构,并行加法器及所采用的进位链、多功能算术逻辑运算部件 SN74181 的功能。 掌握初码定点加减运算、移位操作,理解浮点加减运算、十进制加法运算,掌握无符号整数一位乘法并了解其逻辑实现,掌握无符号整数一位除法,了解浮点乘除运算。. 学习目标:. 掌握模型机的基本组成、数据通路及数据传送,掌握微命令的基本形式。 理解控制器的功能,掌握指令流程及组合逻辑控制器的工作原理。
E N D
第3章 CPU原理 CPU的主要功能是执行存放在主存储器中的程序即机器指令。CPU是由控制器和运算器。
学习目标: • 理解全加器的逻辑式和结构,并行加法器及所采用的进位链、多功能算术逻辑运算部件SN74181的功能。 • 掌握初码定点加减运算、移位操作,理解浮点加减运算、十进制加法运算,掌握无符号整数一位乘法并了解其逻辑实现,掌握无符号整数一位除法,了解浮点乘除运算。
学习目标: • 掌握模型机的基本组成、数据通路及数据传送,掌握微命令的基本形式。 • 理解控制器的功能,掌握指令流程及组合逻辑控制器的工作原理。 • 掌握微型程序控制的概念,了解微指令的编码方式和顺序控制方式,了解微指令的格式。
§ 3.1算术逻辑运算部件ALU • ALU是一种功能较强的组合逻辑电路,有时被称为多功能函数发生器。 • ALU的核心是加法器。 • ALU主要完成对二进制代码的定点算术运算和逻辑运算。
§ 3.1.1 加法单元 低位送进来的进位Ci • 全加器与半加器: An An-1…Ai…A2 A1 A0 Bn Bn-1…Bi …B2 B1 B0 + Cn Cn-1…Ci …C2 C1 C0 • 全加器为考虑三个输入的加法单元,半加器为考虑两个输入的加法单元。 输入量 输出量 全加和Σi+向高位的进位Ci
+ + • 用半加器构成全加器 (1)半加求和可用异或门实现: 半加和=AiOBi (半加器的逻辑式) 半加器又称为异或门 (2)全加器=两个半加,其逻辑式: Σi=AiOBiOCi C i+1=AiBi+(AiOBi)Ci 因逻辑门电路均存在延迟时间,全加器电路是一个延迟部件,其特性将影响全加器的速度。 + + +
§ 3.1.2 并行加法器与进位链结构 • 并行加法器:是用n位全加器实现两个n位操作数各位同时相加,其中的全加器的位数与操作数的位数相同。 • 并行加法器的最长时间是由进位信号的传递时间决定的,而每位全加器本身的求和延迟是次要的因素。所以,加快进位的产生和传递是提高其速度的关键。 • 进位链:并行加器中传递进位信号的逻辑线路,称为~
+ Gi为进位产生函数 Pi为进位传递函数 • 1. 基本进位公式: • C i+1=AiBi+(AiOBi)Ci • 2. 并行加法器的串行进位: (1)串行进位的并行加法器是将n个全加器串接起来,就可进行两个n 个位数相加。 (2)串行进位方式:是指相加的进位逐级形成的,每一级的进位直接依赖于前一级的进位。称为~(行波进位)
(3)串行进位的延迟时间较长。 (4)串行进位的逻辑表达式:见教材P61。 • 3. 并行进位(先行进位,同时进位) (1)定义:同时形成各级进位信号的方法,称为~。 (2)采用并行进位的加法器的运算速度较快,但是以增加硬件逻辑线路为代价的。
§ 3.1.3 ALU举例 • 1. SN74181外特性 • 2. SN74181内部结构 • 3. SN74181功能表 • 4. 用SN74181构成多位的ALU
§ 3.2 运算方法§ 3.2.1 定点加减运算 • 1. 原码加减运算: • 原码的加减法较复杂,很少使用,其原因: (1)原码的加减运算,因计算机的实际操作取决于指令中的操作码和两个操作数的符号; (2)运算结果的符号判断也较复杂。
符号位作为数的一部分直接参与运算。 • 2.补码加减运算: (1)补码加法运算: [X]补+[Y]补=[X+Y]补 两个相加的数无论正负,只要是以补码的形式表示的,则可按二进制规则相加。 (2)补码的减法运算: [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补 为[Y]补的机器负数
由[Y]补求[-Y]补(机器负数)的方法 • 定点小数: [-Y]补= [Y]补+2-n 例: [Y]补 =0.01011 [-Y]补=1.10100+0.00001=1.10101 • 定点整数: [-Y]补= [Y]补+1 例: [Y]补 =1001011 [-Y]补=0110100+1=0110101
(3) 补码的运算规则: • 参加运算的操作数和运算结果均用补码表示; • 符号位作为数的一部分直接参与运算; • 若指令操作码为加,则两个数按二进制规则相加; • 若指令操作码为减,则被减数+减数的机器负数。 • 机器负数的求法见上张幻灯片。
3. 溢出判别 • 溢出:指计算机的运算结果超出其所能表示的范围,而发生错误。 • 溢出的分类: 正溢出:运算结果为正且大于所能表示的最大正数。 负溢出:运算结果为负且大于所能表示的最小正数(绝对值最大的负数)。
以下各判断逻辑式见教材P66-67) • 溢出判断的方法: (1)采用一个符号位判断: 即:当两个同号数相加,若所得结果与两数符号不同,则表示溢出。 (2)采用最高有效位的进位判断: 即:两正数相加,最高有效位有进位,符号位无进位,表明运算结果溢出; 两负数相加,最高有效位无进位,符号位有进位,表明运算结果溢出;
(3)采用变形补码 • 将符号位扩充为两位,称为变形码。 • 采用变形祉码表示的运算结果,可根据两个符号位是否一致来判断是否溢出。 • 双符号位的含义: • 00——结果为正,无溢出; • 01——结果为正溢出; • 10——结果为负溢出; • 11——结果为负,无溢出。 • CPU内设的一个状态寄存器,其中的溢出位V是用来记录溢出是否发生。
§ 3.2.2 移 位 • 移位操作的分类: • 按性质分:逻辑~、循环~、算术~ • 按被移位数据长度分:字节、半字节、多倍字节 • 按每次移位的位数分:移1位、移n位(n ≤被移位数据长度)
1. 逻辑移位: • 定义:将一组无数值意义的二进制代码进行移位。 • 移位规则:左移时低位补0,右补移时高位补0。 • 2.循环移位: • 定义:在闭合移位环路中,在被子移位数据的最高位与最低位之间有移位通路。 • 移位规则: 循环左移时最高位移到最低位,其余各位依次左移; 循环右移时最低位移到最高位,其余各位依次右移;
3. 算术移位: • 定义:带符号数的移位,移位后数的符号不变而数值变化。 • 移位规则: (1)原码移位规则 (2)补码右移规则 见教材P68页 (3)补码左移规则
§ 3.2.3 浮点加减运算 • 运算规则及硬件实现 (1)对阶操作 (2)实现尾数的加(减)运算 (3)结果规格化和判断溢出 • 左规 • 右规 (4)余入操作
§ 3.2.4 十进制加减运算 • 1. 进制转换 • 2. 直接进行十进制运算: • 采用BCD码表示,运算由BCD码运算指令完成。 • 两种方法:见教材P71页。 • 3. BCD码的加法运算 • “加六校正”
§ 3.2.5 定点乘除运算 • 乘除法运算是计算机的基本运算之一。因乘除法运算 需要更多的硬件支持,并不是所有的计算机都配置这种硬件,但是所有的计算机都能做乘除法运算。 • 实现乘除法运算大致有三种方案。 • 本节只讨论无符号整数一位乘法和除法。
实现乘除法运算大致有三种方案: • (1)采用软件实现乘除法运算。 即用原有的运算器设备,运用基本运算指令编制实现乘除法运算的子程序。这种方法适用于小型机、微型机。 • (2)在原有运算器基础上增加一些硬件设备来实现乘、除法操作。 • (3)设置专用的乘除法器。使设备处理设备专用化,目的是加快运算速度。一般适用于大、中型计算机。
1.无符号整数一位乘法 1101 被乘数B ×1011 乘数C 1101 1101 0000 + 1101 10001111 乘积 1101 ×1011 00001101 B共4次右移 0001101 B共3次右移 00000 B共2次右移 + 01101 B共1次右移 10001111 乘积
实现无符号整数一位乘法 • 规则:将n位乘转换为n次“累加与移位”,即每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一位。 • 流程图:见教材P73页,图3-8 • B—存放被乘数、C—存放乘数、 • A—初值为0,存放部分积,最后存放乘积高位。 • 用A和C寄存器联合右移以存放逐次增加的部分积,并且使每次操作依据的乘数位始终在C的最低位。乘法完成时,A、C存放的是最后乘积,其中C的内容是乘积的低位部分。 • 硬件逻辑原理图:图3-9
开 始 n位被除数—B n位乘数—C,0—A • 例:P73,图3-8(无符号整数一位乘算法流程框图) N Y C0=1? A+0—A A+B—A A,C右移一位 N C0=1? Y 结 束
初始状态 • 例3-11:1101×1011的运算过程: B 1101 (被乘数) Ca 0 A 0000 C 1011 (乘数) 0 0000 C0=1 +B 1101 1011 0 1101 0 0110 1101 C0=1 +B 1101 1 0011 0 1001 1110 C0=0 +0 0000 0 1001 0 0100 1111 C0=1 +B 1101 1 0001 0 1000 1111 第一节拍 第二节拍 第三节拍 第四节拍 乘积
2.无符号整数一位除法 • 由手算法可知:决定商是“1”还是“0”,根据部分被除数或余数减去除数是否够减。 • 计算机是实现除法运算,就是要解决如何判断够减与否的问题。方法如下: • 用逻辑线路进行比较判别 • 恢复余数法——(改进)不恢复余数法或加减交替法。(见教材P75页)
恢复余数法: • 将被除数或余数减去除数,若所得余数符号位为0(即正)表明够减,上商1;若余数符号位为1(即负)表明不够减,上商0加上除数(即恢复余数法) • 即:先做减法,若余数为正,上商1;若余数为负,上商0,必须恢复原来的余数(加上除数)。
不恢复余数法(加减交替法): • 此法的特点是在运算过程中如出现不够减,则不必恢复余数,可根据符号,继续向下运算。这样运算时步数固定,控制简单。 • 规则: • 当余数为正时,商为1,余数左移一位,减除数; • 当余数为负时,商为0,余数左移一位,加除数
无符号整数不恢复余数除法流程图: • 见教材P75页,图3-11 • 运算初始时,除数— B,被除数—A和C(其中A—高位、C—低位) • 除法完成后商放在C寄存器中,余数放在A寄存器中。 • A寄存的最高位作为运算中的符号位,用于指示余数的正负。 • 注意:例3-12中第一步 A-B=[A]原-[B]原=[A]初-[B]初= [A]初+[-B]初 B的机器负数:[-B]初=[B]初+1 B求反
§ 3.2.6 浮点乘除运算 • 1. 浮点乘法运算 • 阶码相加并判断溢出 • 尾数相乘 • 规格化处理 • 2. 浮点除法运算 • 预置 • 尾数调整 • 求阶差 • 尾数相除
§ 3.3 CPU模型的组成及其数据通路 • CPU的组成: • 控制器:完成取指令、分析指令、执行指令的操作。 • 运算部件:实现指令所指定的各种算术逻辑运算操作。 • 各种寄存器:用于存放指令、指令地址、操作数及运算结果。 • CPU内部数据通路:用以连接CPU内部各部件,为信息提供通路。
地址总线 数据总线 控制总线 EMAR EMDR SMDR RD WR MAR MDR 主存M I/O接口 ALU总线 I/O设备 IR R0 C D R1 PC ALU A B R2 PSW R3 Z SP
§ 3.3.1 基本组成 • 1. 寄存器: • 存放控制信息的寄存器,如指令寄存器、程序计数器和程序状态字寄存器。 • 存放所处理的数据的寄存器,如通用寄存器和暂存器。
寄存器的种类: (1)通用寄存器: • 4个:R0、R1、R2、R3 • 一组可编程访问、具有多种功能的寄存器。 • 指令系统为其分配编号,即寄存器地址。 • 其本身在逻辑上只有接收信息、存储信息和发送信息的功能,但通过编程与运算部件的配合可实现多种功能。
(2)暂存器: • 3个:C、D、Z • C用来暂存从主存储器读出的数据 • D设置在ALU的输入端,用来存放一个操作数,还可暂存从主存储器读出的数据,并设有左移和右移的功能。 • Z设置在ALU的输出端,用来存放运算结果。 • 指令系统中没有为其分配编号,故不能编址访问。
(3)指令寄存器IR: • 指令寄存器IR——用来存放当前正在执行的一条指令。IR的输出是控制器产生控制信号的主要逻辑依据。 (4)程序计数器PC: • 程序计数器又称为指令计数器或指令指针IP。 • 作用是提供指令的地址。 • 具有加1计数功能,并可编程访问。
(5)程序状态字寄存器PS: • 程序状态字寄存器又称为标志寄存器。 • 作用:用来存放现行程序的运行状态和工作方式,其内容称为程序状态字PSW。 • PSW是参与控制程序执行的重要依据。 (6)堆栈指针SP: • SP用来指示堆栈栈顶的位置,其内容是栈顶单元的地址。 • SP也是可编程访问的寄存。
(7)与主存接口的寄存器MAR、MDR: • 地址寄存器MAR用来存放CPU访问主存或I/O接口的地址。MAR连接地址总线的输出门是三态门。 • 数据寄存MDR用来存放CPU与主存或I/O接口之间传送的数据。 • CPU对主存的控制信号有两个: 读信号RD—控制对主存的读操作 写信号WR—控制对主存的写操作
2. 运算部件: • 控制ALU运算的控制信号有:
3. 总线与数据通路结构: (1)ALU总线 • CPU内部采用单总线结构,即设置一组由16根双向数据传送组成的ALU总线(CPU内总线),ALU和所有的寄存器通过这组公共总线连接起来。 • 在单总线结构中,CPU的任何两个部件间的数据传送都必须通过这组总线,控制较简单,但传送速度受到限制。
CPU通过控制总线向主存或I/O设备发出(或接收)有关控制信号。CPU通过控制总线向主存或I/O设备发出(或接收)有关控制信号。 CPU通过MAR向地址总线提供访问主存单元或I/O接口的地址 (2)系统总线:16根地址总线、16根数据总线,以及控制总线。 地址总线 数据总线 控制总线 总线 CPU 主存 接口 接口 CPU通过MDR向数据总线发送或接收数据,以完成与主存单元或I/O接口之间的数据传送。 I/O设备 I/O设备 常见计算机硬件系统结构
4. 控制器及微命令的基本形式: (1)微命令的基本形式 • 微操作命令:是最基本的控制信号,是指直接作用于部件或控制门电路的控制信号,简称微命令。 • 微命令的两种形式: ①电位型微命令:见教材P81页 ②脉冲型微命令:各寄存器均采用同步打入脉冲将ALU总线上的数据打入其中。 • 其种类有:CPR0, CPR1, CPPC, CPIR, CPSP, CPMAR, CPMDR等…..……………
(2)控制器 • 控制器:基本功能就是执行指令,即根据指令产生控制信号序列以命令相应部件分步完成指定的操作。 • 传统控制器的主要部件包括:指令寄存器IR、指令译码器、程序计数器PC、状态字寄存器PSW、时序系统和微操作信号发生器。
计算机的组成框图: 存取命令 控制信号 CPU 控制器 存贮器 指 令 输入命令 存取数据 操作命令 数据信号 输出命令 结果 数据 输入设备 运算器 输出设备 程序 计算机的基本工作原理——冯诺依曼原理
§ 3.3.2 数据传送 • 1.寄存器之间的数据传送:直接通过ALU总线传送数据,具体传送由输出门和打入脉冲控制。 • 2. 主存数据传送到CPU:通过系统总线传送数据。 • 3. CPU数据传送到主存 • 4. 执行算术或逻辑操作 见教材P82页
2. 主存数据传送到CPU 例如从存储器中取指令到指令寄存器IR (1)PC MAR; (2)M MDR IR;
3. CPU数据传送到主存 例如要写入主存的数据在R2中,存储单元地址R1中,则写一个数据到存储器可通过以下操作序列实现: (1)R1 MAR (2)R2 MDR (3)MDR M