- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机原理
第四章 运算方法及运算器
第四章 运算方法及运算器
运算器是计算机加工与处理数据的功能 部件。它主要由算术逻辑单元(ALU)、累加 器( AC )、各种通用寄存器和若干控制门电 路组成。 运算器根据不同的运算方法,可实现算 术运算和逻辑运算。本章主要讨论: 算术和逻辑运算的具体算法及其实现; 运算器结构及其工作原理。
z4=x· y=0.10001111
4.1 运算方法及其实现
与门1
与门2
4.1 运算方法及其实现
原码一位乘法分析:
①“启动”信号使控制触发器 S 端低电平,控制触发器 Cx置“1”,于是开启时序脉冲T(“与门1”开启); ②当乘数寄存器的最末位为“1”时,部分积z和被乘数 x( 在“与门 2”与 yn 相与运算,如果 yn 是“ 1”,则是 被乘数 x ,否则为 0) 在加法器中相加,其结果输出至 R0的输人端; ③时序控制脉冲 T到达,乘数寄存器 R1在控制信号LDR1 作用下右移一位 ( 最末位移至 yn ,最高位空出 ) ,部分 积 z( 寄存器 R0) 在控制信号 LDR0 作用下右移 1 位,最末 位移至R1的最高位。与此同时,计数器i计数1次。
4.1 运算方法及其实现
原码一位乘法: 采用原码方式作乘法运算比较方便,因为,当 两数相乘时.乘积的符号就是两数符号的按位加( 按位加就是不要进位的加法,记作 。有 1 1 = 0) 之和,其数值部分则为两数绝对值之积。所以,原 码的乘法实质上就是两正数相乘的方法。 乘积符号的运算法则是同号相乘为正,异号相 乘为负。由于被乘数和乘数的符号组合只有四种情 况 (Xfyf=00,01,10,11) ,因此积的符号可按异或 ( 按 位加)运算得到。 数值部分的运算法则:与十进制小数乘法类似。
4.1 运算方法及其实现
溢出有正溢出和负之分:[重要] 当两个符号代码为01,表示正溢出 当两个符号代码为10,表示负溢出 当使用两个符号位表示时,最高符号位 将正确表示结果的符号。
4.1 运算方法及其实现
(2)单符号位操作检测方法
单符号位操作检测方法是当操作数中的 加数与被加数符号相同时,若运算结果的符 号与操作数的符号不一致,表示溢出。否则, 表示没有溢出。而当加数和被加数符号不同 时,相加运算的结果是绝对不会溢出的。 【举例】:0.1001+0.1110 0.0011+0.0100
4.1 运算方法及其实现
上图中左边表示单符号位操作检测逻辑。从前面 分析可知,当最高有效位产生进位而符号位无进位 时,产生正溢出;当最高有效位无进位而符号位有 进位时,产生负溢出。故溢出逻辑表达式为: V= Cn Cn-1 其中: Cn 为符号位, Cn-1 为最高有效位产生的进 位,V为溢出状态。此逻辑表达式可用异或门实现。 当 Cn=Cn-1 时,运算无溢出;而当 Cn≠Cn-1 时,运算有 溢出,经异或门产生溢出信号。
4.1 运算方法及其实现
(2)两数并行相加的方式: 参加运算的两数的每一位同时进行相加运算的 方式就是并行相加。其主要部件是一个并行加法器。 如果数的二进制位数是n位,则并行加法器由n个一 位全加器(FA)组成。图为字长n=4的并行加法器。图 中加法器的进位是低位的输出连接到高位的进位输 人,而相加两数的同一位 Ai 、 Bi 送到相应位的全加 器的输入端,相加时低位所产生的进位逐位传送到 高位中,这种进位的方法称为行波进位。
4.1 运算方法及其实现
一位全加 器 (FA) 有 两 个 操作数的对应 位 Ai 、 Bi 和一个 低位进位Ci作为 输入,进行相 加运算,产生 一个“和”Si输 出,以及该位 “进位” Ci+1 输 出。
4.1 运算方法及其实现
(1)两数串行相加的方式:
串行相加的操作方法是从最低位开始, 逐位进行相加。在-个脉冲时钟的作用下, 每次只完成一位数的运算。将其“和”及进 位记下后,再进行第二位的相加操作。
4.1 运算方法及其实现
运算器的核心是运算方法及其实现,在计算机 中的基本运算有算术运算和逻辑运算。算术运算主 要是加、减、乘、除四则运算;由于计算机中的数 有定点和浮点两种表示方法,所以运算方法也分为 定点数的四则运算和浮点数的四则运算(简称定点 运算和浮点运算)。 逻辑运算包括逻辑加、逻辑乘、按位加等。 在计算机中加工处理的数据和文字等也要化成 最基本的运算方法实现。
4.1 运算方法及其实现
(3)基本的二进制加/减法器
计算机中普遍采用并行加法器结构,实 现二进制的补码加/减法运算。
4.1 运算方法及其实现
4.1 运算方法及其实现
【例】N个一位全加器FA组合成N位行波进位 加发器。其中 M为异或门的方式控制输入端, 当M=0时,做加法(A+B)运算;当M=1时,做 减法(A-B)运算。如进行减法运算,需把A-B 运算转化成A+(-B)的补运算;求-B补的过程 是,把B的每一位按位取反加1(C0为1)来实现。 因此上图中最右边的全加器FA的起始进位输 入端被连接到方式控制线M上,做减法时M=1 号异或门的一端为1另一端为B,输出为B的反 码。C0=1相当于在加法器的最低位加1。
4.1 运算方法及其实现
4.1 运算方法及其实现
【 例 】x=0.1101,y=0.1011, 求=? 部分积z 乘数y 说明 00.0000 y 1011 z0=0 +00.1101 y4=1,+x 00.1101 >00.0110 1y 101 右移得z1 +00.1101 y3=1,+x 01.0011 >00.1001 11y 10 右移得z2 部分积z 乘数y 说明 +00.0000 y2=0,+0 00.1001 >00.0100 111y 1 右移得z3 +00.1101 y1=1,+x 01.0001 >00.1000 1111y 右移得z4
4来自百度文库1 运算方法及其实现
判断“溢出”的两种检测方法: (1)变形码操作检测方法。 变形码操作检测方法是对每个操作数在运算时 都采用两个符号位,正数用 00 表示,负数用 1l 表示, 两个符号位与码值位一起参加运算。 可以证明:若运算结果的两个符号位的代码不 一致时表示溢出;两个符号位的代码一致时,表示 没有溢出。 【举例】:0.1010+0.1101。 -0.1011+(-0.1100)
4.1 运算方法及其实现
重复②③步,当计数器 i=n 时,计数器 i 的溢 出信号使控制触发器R端低电平,控制触发器 Cx置“0”,关闭时序脉冲T(“与门1”关闭) 。乘法操作结束。 把寄存器R0和R1连接起来,乘法结束时乘积的 高n位部分在R0,低n位部分在R1。原来的乘数 y因为右移而全部丢失,乘积为2n+1位,其中 包括1位符号位。
4.1 运算方法及其实现
4.1.2 定点乘法运算及其实现[重点]
运算器的基本功能只能完成数码传送、加法和 移位,并不能直接完成两数的乘除法运算等。但在 计算机处理实际问题时,乘除法是基本运算之一。 学习如何实现乘除法运算的方法非常重要。目前的 计算机一般对乘除法运算的实现分为三种情况: ①采用软件实现乘除法运算。一般采用基本运 算指令来编制乘、除法运算的子程序的方法。这种 方法在早期的小型机、微型机么采用的比较多。
4.1 运算方法及其实现
2. 补码减法运算 补码的减法运算是将其化为补码的加法 运算来做的一种方法,它利用了补码的性质, 使得减法运算和常规的加法运算使用同一加 法器电路,从而简化了计算机的硬件设计。 【举例】: 0.1101-0.0110 -0.1101-(-0.0101)
4.1 运算方法及其实现
4.1 运算方法及其实现
4.1.1 定点加减法运算及其实现
在计算机中“数据的表示形式为机器数 (即用带符号的数来表示正数和负数),主 要有原码、补码和反码三种编码形式表示。 现代计算机运算器一般都采用补码加法 运算。重点介绍补码的加减法运算(采用定 点纯小数的形式)。
4.1 运算方法及其实现
1. 补码加法运算 两个数进行补码加法运算可以把符号位与数位 同等处理,只要结果不超出机器的表示范围,运算 后取模,即可得到结果。其补码的运算规则为:任 意两个数的补码之和等于该两数和的补码的。 【举例】: 0.1001+0.0011 0.1010+(-0.0101) -0.1001+(-0.0101)
3. 溢出及其检测方式 计算机中机器码的位数是固定的(如16位字长、 32 位字长等 ) ,因此计算机中数的表示范围 ( 允许取 值范围)是有限的,若两数进行加减运算的结果超出 给定的取值范围就称为溢出。当计算过程中出现溢 出时,必须及时处理。定点机如出现溢出,则要停 止运算,进行中断处理。 【举例】:两个正数相加的结果成为负数。 如:0.1011+0.1101。 两个负数相加的结果成为正数。 如:-0.1001+(-0.1011)
4.1 运算方法及其实现
②在原有运算器基础上增加一些硬件设备来实 现乘、除法运算的操作。 ③设置专用的乘、除法器,使运算处理设备专 用化,目的是加快运算速度。一般适用于大、中型 计算机。 采用硬件支持的乘除法运算方式速度快,但并 不是所有的计算机都必须配置硬件方式,但是所有 的计算机都能做乘除法运算。以下主要讨论原码 (原码一位乘法)形式下,在计算机上实现乘法运 算的基本算法及基本硬件配置。 注:还有补码一位乘法(Booth算法)等方法。
4.1 运算方法及其实现
【例】假设被乘数为X=0.1101,乘数为Y=0.1011,习 惯方法求其乘积,其过程如下: 0.1101(X) × 0.1011(Y) 1101 1101 0000 + 1101 +0.10001111
流程图中 i 为计数 器。在此算法中,每次 相加的只有两个数:部 分积 Zi 和位积 x ,位积 实际上就是被乘数x (或0),而且每次只对 n 位数进行相加,不需 要2n位的加法器,显然 两个 n 位数相乘,需要 重复进行 n 次“加”及 “右移”操作 , 才能得 到最后乘积。这是实现 原码一位乘法的规则。
4.1 运算方法及其实现
4. 定点加减法的实现 计算机中所进行的算术四则运算主要是 以加法运算为基础。实现两个数的加减法运 算必须要有一个加法器,配合必要的门龟路 和控制方式。考虑电路的延迟时间,才能完 成加减法的运算。 计算机的运算结构有多种,但基本上有 两类:串行相加和并行相加。 相加运算最基本电路是全加器。
4.1 运算方法及其实现
4.1 运算方法及其实现
其中寄存器A存放加数,B存放被加数的,A、B寄 存器均为移位寄存器。实现时,将 A 、 B 寄存器的两 数右移,并把移出的位送至全加器中,第一次是把 最低位送至全加器,经过相加后得到“和”与“进 位”。其中“和”送到移位寄存器A中的最高位保存 ( 因为寄存器中的数右移,最高位“空” ) 。而进位 则寄存在一个触发器中,该进位将参加下一位的全 加过程。如此按位由低向高顺序进行。串行相加使 用的设备最少,但是速度很慢,目前计算机中很少 采用。
4.1 运算方法及其实现
4.1.3 定点除法运算及其实现
除法运算的方法有很多种,本节只介绍 原码除法(原码一位除法)运算的方法。 用原码实现定点除法很方便,商的符号 由两数的符号按位相加求得,商的数值部分 由两数的数值部分相除求得。
4.1 运算方法及其实现
原码一位除法: 商的符号:运算与原码乘法一样,用模2求和得 到。商的数值部分的运算:由于定点数的绝对值小 于1,如果被除数大于或等于除数,则商就大于或等 于1,因而会产生溢出,是不允许的。因此在执行除 法以前,先要判别是否有溢出,不溢出时才执行除 法运算,否则不进行,该功能由程序进行处理。判 别溢出的方法是被除数减去除数,若差为正,即最 高位有进位输出表示溢出。 (手工实现方法说明。)
4.1 运算方法及其实现
4.1 运算方法及其实现
如图所示:高位相加必须在低位相加完 成之后才能进行,即必须在低位的进位形成 之后才能得到正确的输入。电子线路实现过 程中是有延时的,每一位全加器的输入到输 出之间都有一段时间延迟,如果一位全加器 延迟 10ns ,四位全加器的相加过程实际上是 串行进行,当最高位形成“和”与“进位” 时就约需40ns。当位数n比较大的时,这种加 法就很费时间。