1、本章主要讨论:,运算器组成及运算方法 控制器组成及设计 数据通路结构 主机与外设的连接,指令的执行过程,CPU组成,CPU工作原理,第 3 章 CPU子系统,3.1 概述 3.1.1 CPU的基本组成1.运算部件(在概论中已简单介绍过)(1)输入逻辑选择器或暂存器,选择两个操作数参加运算。(2)ALU完成算术、逻辑运算,可以有一个或多个,功能可以从简单到复杂。,(3)输出逻辑移位器和多路选择器,完成对运算结果的移位和选择接收部件。2.寄存器组CPU中暂时存放信息的部件(1)通用寄存器组CPU通过程序可以访问的寄存器,用来存放操作数、运算结果、地址指针,也可用作基址、变址寄存器、计数器等。由D触
2、发器或RAM构成,可以是单口或双口。,(2)暂存器CPU不能通过程序访问的一种寄存器,用来临时存放某些中间信息,如来自主存或写入主存的信息。(3)指令寄存器(IR)存放当前正在执行的指令。指令寄存器的内容是产生微命令的主要逻辑依据。为支持流水线操作,可以设置指令队列、指令栈。,(4)程序计数器(PC)存放下条指令的地址。PC也叫指令计数器,PC的内容指示指令在主存中的位置。在完成取指后PC的内容加1或加2、加4,和指令字长有关。(5)程序状态字寄存器(PSW)PSW的内容指示程序运行方式,反映程序运行结果。包括特征位和编程设定位两部份。,例:某机的PSW格式如下:,15 12 11 8 7 6
3、 5 4 3 2 1 0,1)条件码(反映程序运行结果)C=1 进位 V=1 溢出Z=1 结果为0N=1 结果为负,2)跟踪标志为程序查错设置的断点标志T,T=1, 执行跟踪程序。3)优先级为现行程序赋予优先级别,以决定是否响应外部中断请求。程序优先级高于外部优先级,不响应;程序优先级低于外部优先级,可响应。4)工作方式规定程序的特权级。用户方式:禁止程序执行某些指令,核心方式:允许程序执行所有指令。,(6)地址寄存器(MAR)存放CPU访问主存的单元地址,可以是指令地址、数据地址、地址指针。字长覆盖寻址范围。(7)数据缓冲寄存器(MBR、MDR)存放CPU写入主存或从主存读出的信息。字长满足
4、一次可从主存读出的信息位数。MAR和MBR是连接CPU和主存的桥梁,对用户是透明的,不能通过程序访问。,3.微命令产生部件产生全机所需的各种微命令微命令:控制最基本的操作(微操作)的命令,不能再分解的最小的命令。微命令产生部件是控制器的核心部件,分为组合逻辑电路和专门的存储逻辑(微程序)两大类。,4.时序系统 控制操作时间和操作时刻的部件时序系统包括时钟源、机器周期触发器、节拍电位发生器及启停控制电路等,用来产生各级时序信号。5.CPU内部的数据通路结构CPU内部连接ALU、寄存器等部件的总线,有单总线、双总线、多总线几种。如图3-3,3-4。现在的CPU更复杂,有指令栈,操作数栈,控存,CA
5、CHE,多个运算部件。数据通路结构影响程序的执行速度。,3.1.2 时序控制方式即时序信号与计算机操作之间的关系,可分为同步、异步、联合控制。1.同步控制定义:各项操作受统一的时序信号控制。 特点:时钟周期作为基本的时序单位,时间固定,各步操作的衔接、各部件之间的数据传送受严格同步定时控制。时序信号决定操作持续的时间。,优缺点:时序关系简单,时序划分规整; 实现控制简单,控制逻辑易于集中,设计方便,时间安排不合理。 应用场合:用于CPU内部、设备内部、系统总线操作(各挂接部件速度相近,传送时间确定,传送距离较近)。2. 异步控制定义:各项操作按不同需要安排时间,不受统一时序控制。,例:异步传送
6、操作, 主设备:,申请并掌握总线权的设备。,特点:无统一时钟周期划分, 各操作间的衔接和各部件之间的信息交换采用异步应答方式。, 从设备:,响应主设备请求的设备。,主设备获得总线控制权,操作流程:,主设备询问从设备,主设备发送/接收数据,主设备释放总线控制权,Y,N,主设备输出端与总线连接,主设备输出端与总线断开,优缺点:时间安排紧凑、合理;控制复杂。控制逻辑不易于集中,不便于管理。 应用场合: 用于异步总线操作(各挂接部件速度差异大,传送时间不确定,传送距离较远)。,3.同步控制在实际应用中的方式的变化,(1)不同指令安排不同的时钟周期数 指令周期长度可变,时钟周期长度不变。 (2)总线周期
7、中插入延长周期 经总线传送一次数据所用的时间(送地址、读/写)。,总线周期长度可变,时钟周期长度不变。 例:一个总线周期包含4个时钟周期,总线周期(4T),送地址,读/写数据,结束,同步方式,送地址,读/写数据,结束,总线周期(5T),扩展同步方式,(3)同步方式引入异步应答 以固定时钟周期作为时序基础,引入应答思想。图3-7所示。,例:8088最大模式,用一根总线请求/应答线实现总线权的转移。,设备请求总线权,CPU使用总线,CPU使用总线,CPU使用总线,设备使用总线,设备,设备,CPU,CPU响应,总线权交设备,CPU,设备释放总线权,CPU,设备,若干时钟,若干时钟,3.1.3 控制器
8、的分类按照微命令的形成方式,可将控制器划分为组合逻辑控制器和微程序控制器两大类。1.组合逻辑控制器采用组合逻辑控制方式, 用组合逻辑电路(硬连线)产生微命令的控制器。组合逻辑控制器的基本组成如图3-8所示。由微命令产生部件、时序系统、指令部件、程序状态字寄存器等部件组成。(如总线控制, 中断控制, 控制台)。,组合逻辑控制器的基本组成,2.微程序控制器采用微程序控制方式,用存放在控制存储器中的微指令产生微命令的控制器。微程序控制器的基本组成如图3-9所示。也是由时序系统、指令部件、程序状态字寄存器和微命令产生部件组成。但微命令产生部件又由控制存储器CM(高速ROM)、微指令寄存器及译码器、微地
9、址寄存器、微地址形成电路组成。,微程序控制器的基本组成,3.1.4 CPU与外部设备的信息交换在设计CPU时,要考虑主机和外设的连接方式和CPU对信息传送的控制方式。连接方式:辐射型、总线型、通道型信息传送的控制方式:直接程序传送、程序中断传送、直接存储器访问方式(简称DMA)。,1. 主机和外设的连接方式(1)辐射型早期采用辐射型,如图3-10(a)所示,速度快,结构零乱,不易扩展、管理。,现在接口采用星型式,便于扩展。如图3-10(b)所示:,(2)总线型总线型连接如图3-10(c),特点:结构规整,简单,便于管理,易于扩展。在微小机中广泛使用,CPU总线(前端总线),PCI(外设互连)、
10、 PCI E、ISA(工业标准),EISA,USB(串行通用), AGP(加速图形处理)。,(3)通道型,如图3-10 (d),总线和星型结合,适用于外设数量多,信息流量大,可使CPU和多台外设并行工作。,2. 信息传送控制方式(1) 直接程序传送方式用I/O指令编程实现信息传送。,外设状态,完成一次 工作,空闲:调用前,设备不工作;,结束:调用后,设备完成工作。,如图3-11所示 在接口中设 置状态字表 示这些状态。,查询流程,启动外设,N,Y,输入/输出操作,优缺点: 硬件简单,容易实现;实时处理能力差,并行程度低。,应用场合: 图3-12 查询流程对CPU效率要求不高的场合,或诊断、调试
11、过程。,(2) 程序中断传送方式1)中断的引入,2) 定义:CPU暂时中止现行程序的执行,转去执行为某个随机事态服务的处理程序,处理完后自动返回原程序继续执行。,CPU内设置允许中断标志,=1 允许响应中断 (开中断),=0 不允许响应中断 (关中断),3)中断流程,CLI ;,关中断,初始化,启动;,启动设备,响应,返回,例:PC系列机,允许中断位 IF=,0 关中断,1 开中断,STI ;,开中断,4)程序组织,图3-13 程序中断方式的程序组织,5)硬件设置,响应逻辑,CPU禁止/允许设备请求,设备工作完成,判优逻辑,请求逻辑,屏蔽逻辑,非屏蔽,CPU送屏蔽字,(动态改变设备优先级),设
12、备提出请求,判别设备优先级,CPU响应请求,并转相应服务程序入口,注意区分CPU对请求的屏蔽和对请求的响应。,送屏蔽字,开/关中断,6)优缺点:实时处理能力强(能处理随机事件),主机和外设并行程度高。硬件较复杂,切换程序需要一定的时间。7)应用场合:用于中、低速I/O操作(如鼠标, 键盘, 打印机,显示器等中、低速I/O设备)或处理复杂随机事态(软件故障,硬件故障,实时控制)。软硬件共同完成中断功能。,(3) 直接存储器存取(DMA)方式1)定义直接依靠硬件实现主存与I/O间的数据传送,传送期间不需CPU干预。2)特点: A)在I/O与主存之间,而不是I/O与CPU或I/O与主机之间传送数据,
13、传输速度快,传送操作简单,系统效率更高。B)早期由CPU控制传送;现在由DMA控制器控制传送,DMA控制器接管总线权,传送完毕再交还总线权。C)传送期间只要CPU不访存,可并行操作。D)传送前和传送后需要程序干预。,3)DMA工作过程 分三个阶段:程序做准备:主程序实现初始化。DMA传送:硬件实现主存与I/O间的数据传送。善后处理:中断处理程序判断传送的正误。4)应用场合用于高速外设数据传送、大批量数据采集和动态RAM的刷新。,5)DMA与中断的比较: 相同点:都能响应随机请求;可实现主机和外设并行操作。 不同点:A)DMA不占用CPU,不需要保护断点和现场, 也不需要恢复; B)CPU在机器
14、周期末响应DMA请求(CPU在指令周期末响应中断请求); C)DMA用硬件实现高速、简单I/O传送(中断用程序实现中、低速I/O传送); D)DMA不能处理复杂事态(中断可以); E)处理DMA请求要进行总线权切换。(处理中断请求要进行程序切换)。,3.2 算术、逻辑运算部件以加法器为核心, 增加一些部件构成具有多种算术、逻辑运算功能的ALU。字长N位,需要N位全加器。 3.2 .1 加法单元(简介)如图3-16 所示, 3个输入, 两个输出。和的逻辑表达式如式3-1:,进位的逻辑表达式如式3-2:,如采用反变量输入, 可有式 3-3和式3-4。全加器电路如图3-17, 表达式不唯一, 电路也
15、不唯一, 可根据需要进行选择。,3.2.2 并行加法器与进位逻辑结构由N个全加器可组成字长N位的并行加法器, 对两个N位二进制数相加。在并行加法器中, 影响加法器速度的主要因素是进位传递速度, 这依赖于进位传递逻辑电路, 也叫进位链。 (1)串行进位链 (2)并行进位链(3)组内并行、组间串行进位链(4)组内并行、组间并行进位链,1. 进位的基本逻辑CiAiBi(AiBi )Ci-1 令: Gi AiBi Pi AiBi有: Ci Gi Pi Ci-1 Gi称为第 i 位的进位产生函数, 或本地进位, 绝对进位; Pi称为进位传递函数或叫进位传递条件, Pi Ci -1 称为传送进位或条件进位
16、。,2. 串行进位C1G1P1C0C2G2P2C1C3G3P3C2 CnGnPnCn-1 高位进位的形成依赖低位进位,串行进位的并行加法器的逻辑结构如图3-18所示。,3.并行进位 使用代入规则; C1G1P1C0 C2G2P2C1G2P2G1P2P1C0 C3G3P3C2G3P3G2P3P2G1P3P2P1C0 CnGnPnCn-1 Gn Pn Gn -1PnPn-1 Gn -2 PnPn-1 3P2P1C0 高位进位的形成不依赖低位进位, 所有的进位同时形成。N越大逻辑表达式越复杂, 电路越复杂。,4. 组内并行进位组间串行进位将若于进位分成一组, 组内采用并行进位, 组间采用串行进位.
17、如字长16位, 4位一组, 第一组的逻辑表达式如下: C1G1P1C0 C2G2P2G1P2P1C0 C3G3P3G2P3P2G1P3P2P1C0 C4 G4 P4 G3P4P3 G2 P4P3P2G1 P4P3 P2P1C0修改下标可得其他小组的进位( 每个下标加4 ),同一小组内的进位同时产生,但高位小组进位的产生依赖于低位小组进位的产生。,5. 组内并行进位组间并行进位 设小组进位产生函数和进位传递函数 令: C = C4 G4 P4 G3P4P3 G2 P4P3P2G1 P4P3 P2P1C0G G4 P4 G3P4P3 G2 P4P3P2G1 P P4P3 P2P1 得: C G P
18、 C0 同理: C G P CC G P C C G P C 再使用代入规则可得小组间的并行进位逻辑表达式。见书上92页, 和小组内的完全相同。,用逻辑电路实现小组内和小组间的并行进位逻辑表达式可得二级先行进位链, SN74181是集成了并行进位链和4位并行加法器的芯片。SN74182是具有组间并行进位链功能的芯片。 四种进位链速度从快到慢的排列次序是:1) 并行进位链2) 组内并行, 组间并行进位链3) 组内并行, 组间串行进位链4) 串行进位链四种进位链的复杂程度的排列次序也一样, 速度越快的结构越复杂。,3.2.3 多功能算术、逻辑运算部件将并行加法器,并行进位链和输入选择逻辑集成到一个
19、芯片上,这就是具有多种算术、逻辑运算功能的ALU部件。1.ALU的组成图3-20是一位ALU单元,上半部份是全加器电路,下半部份是输入选择电路,是一个设计非常巧妙的逻辑函数电路,在控制信号S3, S2,S1,S0的控制下,Xi和Yi是Ai和Bi的不同组合。全加器将Xi和Yi加起来可得Ai和Bi的不同运算功能。,表3-1给出了控制信号S3, S2, S1,S0和Xi Yi之间的对应关系,有16种不同的组合。再加上控制信号M控制是算术还是逻辑运算,共有32种功能。图3-21是四位的ALU,上半部份是四位并行进位的全加器电路,下半部份是输入选择电路,M=0,进位链有效, M=1,进位链无效, 是算术
20、运算和逻辑运算的根本区别。,2.ALU的运算功能图3-22是四位的ALU SN74181引脚图, 表3-2是SN74181功能表(负逻辑).表中的控制信号由控制器产生, “+”代表或运算,“加”代表加法。32种功能只用一部份,如算术运算用加法(1001),减法(0110,初始进位设为1), 加1(1111,初始进位设为1),减1(0000), 逻辑运算用与(1110), 或(1011),异或(1001,按位加),非(A:0000,B:0101), 还可直传(B:1010, A:1111),置1,清0。,3.ALU的进位逻辑图3-23为组间串行进位(组内是并行进位)。图3-24为组间并行进位(组
21、内是并行进位),进位逻辑用SN74182实现, 利用这一电路可组成多级先行进位ALU。图3-24中进位分3次产生:(1)C1 C2 C3 (2) C4 C8 C12 C16(3)C5 C6 C7 C9 C10 C11 C13 C14 C15,3.2.4 运算器组织ALU、输入操作数和 暂存结果的寄存器组,有关判别逻辑及局部控制电路。,独立结构,小型存储 器结构,单口 双口,寄存器组,独立R、双口RAM用多路选择器作为ALU的输入逻辑,单口RAM用锁存器作为ALU的输入逻辑。,1. 带多路选择器的运算器 图3-25,特点: R各自独立;可同时向ALU提供两个操作数;采用单向内总线。,2. 带输入
22、锁存器的运算器 图3-26,特点: 单口RAM不能同时向ALU提供两个操作数;用锁存器暂存操作数;采用双向内总线。,3. 位片式运算器 图3-27 AMD2900,特点: 用双口RAM(两地址端、两数据端)作通用寄存器组,可同时提供数据;用多路选择器作输入逻辑,不需暂存操作数;ALU增加乘、除功能,用乘商寄存器存放乘数、乘积或商。,例:4位片运算器粗框,3.3 运算方法运算器硬件设计的依据 3.3.1 定点加减运算原码运算复杂, 反码运算时间长,一般采用补码运算,数用补码表示,符号位参加运算。实际操作能否只取决于操作码?结果需不需修正?如何将减法转换为加法?1. 补码加减运算的基本关系式( X
23、 + Y )补 = X补 + Y补 (1)( X - Y )补 = X补 + (-Y)补 (2),1) X=0, Y=0 根据补码定义 (MOD 2)X补=X Y补 =Y X补 + Y补= X+YX+Y=0 ( X + Y )补 = X + Y 所以: ( X + Y )补 = X补 + Y补 2) X=0, Y=0 4) X=0, Y0 X+Y0 (证明省略),( X - Y )补 = ( X+( - Y) )补=X补 + (-Y)补 ( X + Y )补 = X补 + Y补 (1)( X - Y )补 = X补 + (-Y)补 (2)式(1)和(2)两边相加有: ( X + Y )补+ (
24、 X - Y )补 = 2X补 + Y补 + (-Y)补 ( X + Y + X - Y )补= 2X补 + Y补 + (-Y)补 ( X+ X )补=2 X补 + Y补 + (-Y)补2X补= 2X补+ Y补 + (-Y)补-Y补 =+ (-Y)补 (MOD M) 含义: 减去Y补 等于加上(-Y)补,操作码为“加”时,两数直接相加。 例: 求(X+Y)补,字长5位。,( X - Y )补 = X补 + (-Y)补 = X补 - Y补 (2),操作码为“减”时,将减转换为加,1) Y= 5 Y补=1 1011(-Y)补=0 0101X= 4 X补=0 0100,0 1001,(+9补码),2
25、) Y= 5 Y补=0 0101(-Y)补=1 1011 X= 4 X补=1 1100,1 0111,(9补码),例: 求(X Y)补,Y补 (Y)补:,将Y补变补,不管Y补为正或负,将其符号连同尾数一起按变反,末位加1。,即将减数变补后与被减数相加。,例:1 0101原 1 1011,补码表示,1 0011补 0 1101,变补,0 0101原 0 0101,补码表示,符号位不变;负数尾数改变,正数尾数不变。,0 0011补 1 1101,变补,符号位改变,尾数改变。,补码的机器负数,注意:某数的补码表示与某数变补的区别。,2. 补码加减运算规则如图3-28所示1) 操作数用补码表示,符号位
26、参加运算,结果为补码形式;2) 如操作为加,则两补码直接相加;3) 如操作为减, 则将减数的补码变补后和被减数的补码相加。,补码加减算法流程,操作数用补码表示,符号位参加运算,结果为补码表示,符号位指示结果正负。,X补+Y补,X补+(-Y)补,ADD,SUB,3.补码加减运算逻辑实现 如图3-29所示,+1,(1)控制信号,加法器输入端:,+A:打开控制门,将A送,+B:打开控制门,将B送,+1:控制末位加 1,+B:打开控制门,将B送,加法器输出端:,CPA:将结果打入A。控制命令见表3-3,(2)补码加减运算器粗框,3.3.2 溢出判断与移位在什么情况下可能产生溢出? 同号数相加, 异号数
27、相减, 是绝对值相加, 有可能溢出; 异号数相加, 同号数相减, 是绝对值相减, 不可能溢出。,例:数A有4位尾数,1位符号SA数B有4位尾数,1位符号SB,符号位参加运算,结果符号Sf,符号位进位Cf,尾数最高位进位C。表示范围: 15 到 -16,正确,正溢,正确,负溢,正确,正确,1. 溢出判断方法(1)溢出判断逻辑1(SA、SB与Sf的关系)两个同号操作数和结果的符号不一致时溢出。,(2)溢出判断逻辑2(Cf与C的关系)最高数位和符号位产生的进位不一致时溢出。,(3) 溢出判断逻辑3(双符号位)采用双符号位补码运算, 如果结果的双符号位一致, 无溢出, 结果的双符号位不一致, 则溢出,
28、 第一符号位指明结果的正负。00: 结果为正, 不溢出;01: 结果为正, 溢出;11: 结果为负, 不溢出;10: 结果为负, 溢出。,第一符号位Sf1,第二符号位Sf2,2.移位操作,(1)逻辑移位 简单数码位置变化,数值不变。可左移, 右移,循环移。可用于串-并转换, 对某位修改,判别,可用移位寄存器或斜位传送实现。,(2) 算术移位 数码位置变化,数值变化, 符号位不变。左移相当于乘以2, 右移相当于除以2, 对原码, 补码都成立(适用于整数和小数)。 负数原码:,单符号位 :,0 0111,0 1110,双符号位:,00 1110,00 0111,1) 原码和正数补码移位规则,移位规
29、则,0 0111,0 0011,01 1100,00 1110,00 0111,数符不变(单:符号位不变;双:第一符号位不变)。空位补0(右移时第二符号位移至尾数最高位)。最高数位是1不能左移(单符号位)。,单符号位 :,1 1011,1 0110,双符号位:,10 1100 -20,11 0110 -10,2) 负数补码移位规则,移位规则:,1 1011,1 1101,11 0110,11 1011 -5,数符不变(单:符号位不变;双:第一符号位不变)。左移空位补0, 右移空位补1( 第二符号位移至尾数最高位)。最高数位是0不能左移(单符号位)。,3. 舍入方法,字长一定,右移和做乘法、除法
30、需要舍入。(1)0舍1入(原码、补码)如保留N位,看第N1位,是0舍掉,是1则舍去后在第N位加1。误差小于末位的权值。 如进位时高位有多个1,会产生连锁进位。,(2) 末位恒置1(原码、补码)0舍1入在入时要做加法,费时间,多用末位恒置1法,如保留N位,第N位恒置1(相当于1舍0入)。第N1位及以后各位舍掉,简单易实现,但最大误差要大一些。其它还有查表法等多种舍入法。,3.3.3 定点乘法运算有原码乘法,补码乘法,一位乘,两位乘,多位乘,采用部分积累加、移位的方法完成。,1. 原码一位乘法每次用一位乘数去乘被乘数。(1)算法分析,例: 0.11011.1011,X原,Y原,1)手算 0.110
31、10.1011,1101110100001101,0.10001111 加符号: 1.10001111,部分积,问题:A)加数增多(由乘数位数决定)。 B)加数的位数增多(与被乘数、乘数位数有关)。 改进:将一次相加改为和移位结合的分步累加。,2)分步乘法设X的绝对值是:BY的绝对值是: C=0.Y1Y2Yn-1Yn BC= B(0.Y1Y2Yn-1Yn)=B(2-1Y1+ 2-2Y2 + 2n-1Yn-1 + 2-n Yn)=2-1 Y1 B+2-2Y2B+ +2-nYnB=2-1(Y1B+2-1( Y2 B+2-1(Y3B+2-1( Yn-1 B+2-1( Yn B+0),每次将一位乘数所
32、对应的部分积与原部分积的累加和相加,并移位。,3) 举例 设置寄存器:A:存放部分积累加和、乘积高位B:存放被乘数C:存放乘数、乘积低位,X原Y原 = 1.10001111,步数 条件 操作 A C,00.0000 .1011,1),Cn=1,+B,Cn,+ 00.1101,00.1101,00.0110,1.101,2),Cn=1,+B,+ 00.1101,01.0011,00.1001,11.10,3),Cn=0,+0,+ 00.0000,00.1001,00.0100,111.1,4),Cn=1,+B,+ 00.1101,01.0001,00.1000,1111,整数和小数运算规则相同,
33、设字长5位 X = -9 Y =-5 X=-1001 Y=-0101X原=11001 Y原=10101设置初值:A = 00 0000 B =0 1001 C =0 0101 积的符号:Zf =1 1=0,X原Y原 = 0 00101101,步数 条件 操作 A C,00 0000 0101,1),Cn=1,+B,Cn,+ 00 1001,00 1001,00 0100,1 010,2),Cn=0,+0,+ 00 0000,00 0100,00 0010,01 01,3),Cn=1,+B,+ 00 1001,00 1011,00 0101,101 0,4),Cn=0,+0,+ 00 0000,
34、00 0101,00 0010,1101,(2)算法流程,Y,Y,N,N,(3)逻辑实现如图3-31所示, 在加法器的基础上增加一些部件和相应的控制信号。CN=1时,控制信号:+A,+B, /2A, C(移位),CPA,CPC等微命令。CN=0时,控制信号:+A,/2A,C(移位), CPA,CPC等微命令。由计数器控制循环次数。,( 4)运算规则,1)操作数、结果用原码表示;2)绝对值参加运算,符号单独处理;3)被乘数(B)、累加和(A)取双符号位;4)乘数末位(Cn)为判断位,其状态决定下一步操作;5)作n次循环(累加、右移)。,2. 补码一位乘法(1) 算法分析1) X任意,Y0, Y
35、0.Y1Y2Yn-1Yn Y补=Y 0.Y1Y2Yn-1Yn X补Y补=(2N+1+X)Y = 2N+1Y +XY=2+XY (2N+1 Y= 2N+1 (0.Y1Y2Yn-1Yn )=2Y1Y2Yn-1Yn = 2 MOD 2)(XY)补=2+XY 所以: (XY)补 = X补Y补= X补(0.Y1Y2Yn-1Yn ),2) X任意,Y0, Y补=1.Y1Y2Yn-1Yn Y= Y补- 2 = 1.Y1Y2Yn-1Yn - 2= 0.Y1Y2Yn-1Yn -1XY=X(0.Y1Y2Yn-1Yn -1)= X(0.Y1Y2Yn-1Yn )-X (XY)补= (X(0.Y1Y2Yn-1Yn )-
36、X )补= (X(0.Y1Y2Yn-1Yn )补-X补= X补(0.Y1Y2Yn-1Yn ) -X补( MOD 2 ),设: X补 = X0.X1X2XNY补 =Y0 .Y1Y2YN如Y为正:Y补 = 0.Y1Y2YN(XY)补 = X补(0. Y1Y2YN)如Y为负:Y补 = 1.Y1Y2YN(XY)补 = X补(0. Y1Y2YN)- X补两者综合,即Y符号任意,得补码较正乘算法:(XY)补 = X补(0.Y1Y2YN)+(-X)补Y0,符号位,将较正乘算法公式展开为部分积的累加和形式: (XY)补 = X补(0.Y1Y2Yn)+(-X)补Y0,= X补(0.Y1Y2Yn)-X补Y0,Yn
37、+1,比较法算法:用相邻两位乘数比较的结果决定: +X补、 -X补 或+0。,指数相同的组合到一起,比较法算法规则(见表3-4)Yn(高位)Yn+1(低位)操作(A补为部分积累加和),0 0 0 1 1 0 1 1,1/2A补1/2(A补+X补)1/2(A补-X补)1/2A补,( 0 ),( 1 ),(-1 ),( 0 ),(2) 运算实例 例1: X=-0.1101,Y=-0.1011,求(XY)补。 初值:A=00.0000,B=X补=11.0011,-B=(-X)补=00.1101,C =Y补=1.0101,步数 条件 操作 A C,00.0000 1.0101,1),1 0,-B,Cn
38、,+ 00.1101,00.1101,00.0110,11.0101,2),0 1,+B,+ 11.0011,11.1001,11.1100,111.010,3),1 0,-B,+ 00.1101,00.1001,00.0100,1111.01,4),0 1,+B,+ 11.0011,11.0111,11.1011,11111.0,0,Cn+1,CnCn+1,5),1 0,-B,+ 00.1101,例2: X=-0.1101,Y=0.1101,求(XY)补。 初值:A=00.0000,B=X补=11.0011,-B=(-X)补=00.1101, C=Y补=0.1101,步数 条件 操作 A C
39、,00.0000 0.1101,1),1 0,-B,Cn,+ 00.1101,00.1101,00.0110,10.1101,2),0 1,+B,+ 11.0011,11.1001,11.1100,110.110,3),1 0,-B,+ 00.1101,00.1001,00.0100,1110.11,4),1 1,+0,+ 00.0000,00.0100,00.0010,01110.1,0,Cn+1,CnCn+1,5),0 1,+B,+ 11.0011,(XY)补 = 1.01010111XY =- 0.10101001,总结补码比较乘法的步骤: 1) A、B取双符号位,符号参加运算; 2)
40、C 取单符号位,符号参加移位,以决定最后是否修正; 3) C末位设置附加位,初值为0,CnC n+1组成判断位,决定运算操作; 4)作n步循环,若需作第n+1步,则不移位。 (3) 逻辑实现 类似原码乘法, 增加+B非和+1控制信号,增加乘数末两位的判别电路。,3. 快速乘法简介(1) 原码两位乘将原码一位乘算法公式中的每两项合并成一项, 可得原码两位乘算法的公式。 Yi Yi+1 操作0 0 原部分积右移两位0 1 原部分积+X ,右移两位1 0 原部分积+2X 右移两位1 1 原部分积+3X ,右移两位, 改为: 4X - X, 本次做 - X, 移位后做+X, 相当于+4X, 需设欠帐触
41、发器记帐。原码两位乘需判断3位来决定操作, 具体见表3-5。,(2) 补码两位乘将补码一位乘比较算法公式中的每两项合并成一项, 可得补码两位乘比较算法的公式, 每项的形式是 (比较相邻3位) :2-2(A0)补+(YN+1+YN-2YN-1)X补) 将相邻3位的值代入可得补码两位乘的操作规则, 如 0 0 0 原部分积右移两位0 0 1 原部分积+X ,右移两位0 1 0 原部分积+X ,右移两位0 1 1 原部分积+2X 右移两位1 0 0 原部分积-2X 右移两位,如同时求3位乘数对应的部分积, 则为3位乘, 银河巨型机就是采用3位乘。(3) 阵列乘法器阵列乘法器由与门阵列和全加器阵列组成
42、。与门阵列一次可求出所有的部分积, 再用全加器组成的矩阵将所有的部分积累加, 每行全加器可累加一项部分积, 比用一个ALU做乘法的速度要快得多。速度越快, 需要的硬件越多越复杂。,3.3.4 定点除法运算有原码除法,补码除法,恢复余数除法,不恢复余数除法,一位除,两位除,阵列除法。除法关键是要判断除数和余数(被除数可看作初始余数)谁的绝对值大,以决定上商和下一步的操作。其次是如何决定商的符号,提高运算速度。除法运算可通过若干次余数与除数加减、移位运算实现。,手算除法的例子 例: 0.101100.11111,0.10110,1101,0.,0,1,11111,0.11111,0,0,0,1,1
43、1111,10101,0,1,11111,1011,0,0,.,00000,.,0.,商: 0.10110 余数:0.101102-5,实现除法的关键: 比较余数、除数 绝对值大小,以 决定上商。除数 绝对值大,商0,除数绝对值小商1. 每次比较,除数要右移一位,1. 原码恢复余数除法简介(1)算法 绝对值参加运算,符号位单独处理,比较两数大小可用减法试探。,2余数-除数=新余数,为正:够减,商1。 为负:不够减,商0,恢复原余数。,(2)举例:,X=-0.10110,Y=0.11111,求X/Y,设置:A:被除数、余数,B:除数,C:商,步数 条件 操作 A C,00.10110 0.000
44、00,1),0,-B,01.01100,+11.00001,00.01101,0.00001,2),1,-B,00.11010,+11.00001,11.11011,0.00010,3),恢复余数,+B,+00.11111,00.11010,01.10100,0.00101,4),0,-B,+11.00001,00.10101,Cn,SA,Q1,Q2,Q3,r0,2r0,r1,2r1,r2,r2,2r2,r3,步数 条件 操作 A C,00.10101 0.00101,5),0,-B,01.01010,+11.00001,00.01011,0.01011,6),1,-B,00.10110,+1
45、1.00001,11.10111,0.10110,7),恢复余数,+B,+00.11111,00.10110,Q= -0.10110,Cn,Q4,Q5,Q3,r3,2r3,r4,2r4,r5,r5,(3) 说明,2. 原码不恢复余数法(加减交替法) (1)算法分析 第二步:2r1-B=r20 第三步:r2+B=r2(恢复余数) 第四步:2r2-B=r3,2r2-B=2(r2+B)-B=2r2+B=r3,第二步:2r1-B=r20 第三步:2r2+B=r3(不恢复余数),(2) 算法在第I步:如ri2ri1 -B 0, 商1第I1步做: ri12ri- B 如 ri2ri-1 - B 0, 商0
46、ri ri+ B ( 恢复余数)第I1步做:ri12ri-B =2(ri+ B )-B =2ri +2B -B = 2ri + B ri+1=2ri+(1-2Qi)B,ri+1=2ri+(1-2Qi)B ri为正,则Qi为1,第i+1步作2ri-B ; ri为负,则Qi为0,第i+1步作2ri+B 。,(3)举例X=0.10110,Y=-0.11111,求X/Y,给出商Q和余数R。,初值: A= X = 00.10110,B= Y = 00.11111,C= Q = 0.00000,(-B)补=11.00001,步数 条件 操作 A C,00.10110 0.00000,1),为正,-B,01
47、.01100,+11.00001,00.01101,0.00001,2),为负,-B,00.11010,+11.00001,11.11011,0.00010,3),+B,+00.11111,11.10110,0.00101,为正,00.10101,Cn,r,Q1,Q2,Q3,r0,2r0,r1,2r1,r2,2r2,r3,4),为正,-B,01.01010,+11.00001,00.01011,0.01011,Q4,2r3,r4,步数 条件 操作 A C,00.01011 0.01011,6),为负,恢复余数,+B,+00.11111,00.10110,Q= -0.10110,Cn,Q4,r4,5),为正,-B,00.10110,+11.00001,11.10111,0.10110,Q5,2r4,r5,r5,步数 条件 操作 A C,00.10110 0.00000,1),为负,-B,+11.00001,11.10111,0.00000,2),为正,+B,11.01110,+00.11111,00.01101,