第二章运算方法与运算器_第1页
第二章运算方法与运算器_第2页
第二章运算方法与运算器_第3页
第二章运算方法与运算器_第4页
第二章运算方法与运算器_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 运算方法和运算器,计算机组成原理,本章首先讲述计算机中数据与文字的表示方法然后讲述定点运算方法、定点运算器的组成,最后讲述浮点运算方法、浮点运算器的组成。 重点掌握和了解 二进数的表数范围 定点数的乘除法运算 规格化浮点数的四则运算 阵列乘除法器,本 章 主 要 内 容,2.1数据与文字的表示方法,计算机中使用的数据可分成两大类: 1、符号数据:非数字符号的表示(ASCII、汉字、图形等) 2、数值数据:数字数据的表示方式(定点、浮点),2.1数据与文字的表示方法,计算机数字和字符的表示方法应有利于数据的存储、加工(处理)、传送; 编码:用少量、简单的基本符号,选择合适的规则表示尽量多

2、的信息,同时利于信息处理(速度、方便) 计算机在数据、文字的表示方式时,应该考虑一下几个因素: 表示的数据类型(符号、小数点、数值) 数值的范围 数值精度 存储、处理、传送的硬件代价,2.1.1数据格式,三、计算机常用的数据表示格式有两种: 定点表示:小数点位置固定 浮点表示:小数点位置不固定,2.1.1数据格式,定点表示法 所有数据的小数点位置固定不变 理论上位置可以任意,但实际上将数据表示有两种方法(小数点位置固定-定点表示法/定点格式): 纯小数 纯整数 定点数表示: 带符号数 不带符号数,1、定点纯小数,x0 x1 x2 x3 xn-1 xn 表示数的范围是 0|12n (最小数、最大

3、数、最接近0的正数、最接近0的负数),符号,量值,小数点固定于符号位之后,不需专门存放位置,2.1.1数据格式,2.1.1数据格式,2、纯小数的表示范围,2.1.1数据格式,3、定点纯整数 x0 x1 x2 x3 xn-1 xn 表示数的范围是 0|2n1 最小数、最大数、最接近0的正数、最接近0的负数呢,符号,量值,小数点固定于最后一位之后,不需专门存放位置,2.1.1数据格式,定点表示法的特点 定点数表示数的范围受字长限制,表示数的范围有限; 定点表示的精度有限 机器中,常用定点纯整数表示; 如果用定点表示,则如何表示实数(包括小数和整数)呢?,引入浮点数,2.1.1数据格式,五、浮点表示

4、:小数点位置随阶码不同而浮动 1、格式:N=RE.M 2、机器中表示,指数E,基数R,取固定的值,比如10,2等,尾数M,2.1 数据与文字的表示方法,K(基数):最大进位数。 K i:位权。 m(系数):每个数位上的值,取值范围0k-1,【例】343.43= 310241013100410-1310-2,进位计数制 按进位的方法进行计数,简称进位制。 数字累计到最大计数时,数码长度就增加一位或数码高位数值增 1。 任意进制数的表示,2.1 数据与文字的表示方法,常用数制,小数点右移(数据左移)n 位 相当于乘以K n(增加K n 倍) 小数点左移(数据右移)n 位 相当于除以K n (为K

5、n 分之一),数制小结: 十进制数与二进制数之间的转换需计算,不直观。 十二:整数部分除基取余,小数部分乘基取整。 二十:按权展开。 八、十六进制数与二进制数之间转换方便。 二八、十六:小数点向左向右3位或4位一组,合成一位。 八、十六二:每一位展开成3位或4位 二进制数不便于书写、阅读。 十六进制数书写、阅读相对方便。,2.1 数据与文字的表示方法,十进制数的编码BCD码 Binary-Code Decimal 用四位二进制代码来表示一位十进制数。 8421码:标准BCD码(NBCD-sometimes called Natural Binary-Coded Decimal) 从高到低各位权

6、值8、4、2、1。 1111 1111B = 255D = (0010 0101 0101)BCD 2421码:各位权值2、4、2、1。 前5位编码与8421码一致 后5位编码与前5位编码是对9的自补码 对9的自补码:某数的2421码,自身按位取反,得到该数对9补数的2421码。,2.1 数据与文字的表示方法,2.1 数据与文字的表示方法,常见的BCD码,数的机器码表示 无符号数:正整数。 带符号数:正数或负数。 真值: 带“+”、“”的数值本身。 例:+0.01、-1000 机器数(机器码):最高位为符号位,“0”表示“+”,“1”表示“”。 原码 反码 补码,2.1 数据与文字的表示方法,

7、2.1 数据与文字的表示方法,原码 定点整数 X1= + 9 = + 1001B X1原=0000 1001. X2= 9 = 1001B X2原=1000 1001. 定点小数 X1= + 0.75 = + 0.11B X1原=0. X2= 0.75 = 0.11B X2原=1. 0的表示形式不唯一 + 0原= 00000000 0原= 10000000 原码加减法运算复杂。,反码 定点整数 X1= + 9 = + 1001B X1反=0000 1001. X2= 9 = 1001B X2反=1111 0110. 定点小数 X1= + 0.75 = + 0.11B X1反=0. X2= 0.

8、75 = 0.11B X2反=1. 0的表示形式不唯一 + 0反= 00000000 0反= 11111111,2.1 数据与文字的表示方法,补码的引入 模和同余 模:计量器的溢出容量,用M表示。当运算结果超出计量范围,溢出部分舍弃。 字长为n+1位时 定点整数的模为2n+1 。 定点小数的模为2 。 同余:两整数A、B除以模M,所得的余数相同。可记作A=B (mod M ) 当模为12时 4和16同余,可写作 4 = 16 (mod 12) -2和10同余,可写作 2 = 10 (mod 12) 利用补码可将减法运算转换成为加法运算,2.1 数据与文字的表示方法,4-2=4+10,补码 定点

9、整数 X1= + 9 = + 1001B X1补=0000 1001. X2= 9 = 1001B X2补=1111 0111. 定点小数 X1= + 0.75 = + 0.11B X1补=0. X2= 0.75 = 0.11B X2补=1. 0的表示形式唯一 + 0补= 0补= 00000000,2.1 数据与文字的表示方法,X真值,+/- 变成 0/1 数值位不变,X原,XS=0时,数值位不变 XS=1时,数值位变反加1,X补,XS=0时,数值位不变 XS=1时,数值位变反,X反,2.1 数据与文字的表示方法,三种不同机器数以及真值之间的转换,原码与补码的直接转换法 当X为正数时,X补=X

10、原=X; 当X为负数时,由原码求补码的简便算法: 符号位不变,最后面的1及其后各位保持不变,中间各位按位取反。 例: X原= 1 . 111001 1000 X补= 1 . 000110 1000,2.1 数据与文字的表示方法,取反,三种机器数的比较 正数的原、反、补码相等,负数的各自不同 原码的符号位是人为定义的,不能参与运算 补码的符号位是通过模运算得到的,是数值的一部分,可参与运算。 原、反码零的表示形式不唯一,补码零的表示形式唯一。 假设字长为8位,则: +0原=00000000 -0原=10000000 +0反=00000000 -0反=11111111 +0补=-0补=000000

11、00,2.1 数据与文字的表示方法,机器码的表数范围不同 原、反码的表数范围相对于零点对称 补码的表数范围,负方向比正方向宽 以字长4位(含符号位)的纯整数为例,原码、反码表数范围,补码表数范围(多表示一个负数),2.1 数据与文字的表示方法,1000,-8,1000,-0,2.1 数据与文字的表示方法,真值与三种机器数间的对照,定点数的表示范围 原码定点数 (字长n+1位) 纯小数:(12-n )(1-2-n ) 例:字长为8位,则 最小定点小数: -127/128 最大定点小数: 127/128 纯整数:( 2n 1)(2n -1) 例:字长为8位,则 最小定点整数: -127 最大定点整

12、数: 127,1.,0.,1.,0.,2.1 数据与文字的表示方法,定点数的表示范围 补码定点数 (字长n+1位) 纯小数:112-n 例:字长为8位,则 最小定点小数: 1 最大定点小数: 127/128 纯整数:2n 2n1 例:字长为8位,则 最小定点整数: 128 最大定点整数: 127,1.,0.,1.,0.,2.1 数据与文字的表示方法,阶码,常为纯整数,尾数,常为纯小数,浮点数 小数点的位置不固定,根据需要而浮动。 任何一个数N的浮点表示形式为 N=M2E,2.1 数据与文字的表示方法,浮点数的表示范围 若阶码数值部分为K位,尾数数值部分为n位,均用补码表示,则,2.1 数据与文

13、字的表示方法,规格化的浮点数 为了充分利用尾数的有效数位,规定尾数值应在0.51之间。 补码表示时,尾数的最高位应与符号位不同 当 1/2 = M 1 时,应有0.1 的形式 当 1 = M - 1/2 时,应有1.0 的形式,为什么是,而不是=?,为什么是=?,2.1 数据与文字的表示方法,补码的表示范围比原码宽,可以表示-1, -1补=1.0000000,是规格化的浮点数,-1/2原=1.1000000 -1/2补=1.1000000 不是规格化的浮点数,浮点数的典型值:阶码和尾数均用补码表示,2.1 数据与文字的表示方法,X1移=27+1101101 =10000000 + 110110

14、1 =11101101 X1补=01101101,X2移=27+(-1101101) = 10000000 - 1101101 = 00010011 X2补= 10010011,移码:在真值X的基础上加一个常数,相当于X在数轴上向正方向偏移了若干单位。 X移码=偏置值+X 标准偏置值:字长n+1位时,偏置值为2n。 例:字长8位,若偏置值为27,X1=+1101101,X2= -1101101,求移码。,2.1 数据与文字的表示方法,2.1 数据与文字的表示方法,移码、补码和真值之间的关系 设字长8位,偏置值为标准偏置值27,移码的特点(字长8位,偏置值为27) 移码最高位为0表示负数,最高位

15、为1表示正数。 移码直观反映真值的大小。 全0时,所对应的真值最小; 全1时,所对应的真值最大; 有利于两个浮点数进行阶码的大小比较 0的移码表示形式唯一 +0移=-0移=10000000 移码将真值映射到正数域,可视为无符号数 同一真值的补码和移码只相差符号位。,2.1 数据与文字的表示方法,IEEE754标准的浮点数:应用于80X86微机,32位 短浮点数,64位 长浮点数,80位 临时浮点数,32位短浮点数 1.尾数隐含了最高位1(位权20),实际为24位,尾数采用原码表示。 2.阶码采用偏置值为127的移码表示。,2.1 数据与文字的表示方法,(2)计算出阶码真值e =移码-偏置值12

16、7 e =1000 0010-111 1111=011=(3)10 (3)写出尾数(包括隐含的最高位1) 1.M=1.011011 (4)写出此数的浮点记数形式 X =(-1)s 1.M 2e =+1.011011*23=1011.011 (5)转换成十进制数,并加上符号位 11.375,例1: 若短浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。 (1)将十六进制数转换成二进制数,写成短浮点数格式,2.1 数据与文字的表示方法,正数,阶码的移码(8位),隐含了最高数位1的尾数的原码(23位),例2:将(20.59375)10转换成短浮点数格式 (1)把十进制数

17、转换为二进制数 (20.59375)10=(10100.10011)2 (2)写成浮点记数形式,尾数保留最高位1,不计入。 10100.10011=1.0100 10011*24 (3)计算出阶码的移码 1111111+100=1000 0011 (4)以短浮点数格式存储该数 41A4C000H,2.1 数据与文字的表示方法,非数值数据表示 通常是指字符、字符串、图形符号和汉字等各种数据,它们通常不用来表示数值的大小,一般情况下不对它们进行算术运算。 字符和字符串表示 ASC (美国标准信息交换码) 7位基本ASC码(国际通用) 可表示128种字符 8位扩充ASC码(可重新定义) 可表示256

18、种字符 ASC码可分为: 显示字符 控制字符,“0 ”为48 “A”为65,return 、backspace 键的编码分别为13、8,2.1 数据与文字的表示方法,2.1 数据与文字的表示方法,汉字编码 汉字是一种象形文字,无法直接用标准西文键盘输入,必须经过转换间接输入; 汉字的字数也较多,不能用单字节的ASC(256个字符)来表示 目前采用两个字节(可以表示64K字符)的汉字编码方案。 汉字的应用范围较广(东南亚国家),但编码字符集不相同,中国大陆常用GB / GBK码,台湾BIG5。,2.1 数据与文字的表示方法,外部(输入)码,机内码,字形(输出)码,汉字信息,其它系统或设备,汉字信

19、息,键 盘 管 理 程 序,汉 字 处 理 程 序,交换码(国标码),汉字处理过程,2.1 数据与文字的表示方法,外部码 也叫汉字输入编码,主要是从键盘(语音、手写、光电)输入计算机中的代表汉字的编码。 汉字输入方案有数百种,基本上是直接利用西文标准键盘进行汉字输入,每一种汉字输入法都各自提供相应的键盘码与汉字机内码(码表)。 编码方案可分四类: 数码(如电报码,区位码,国标码等) 音码(如全拼码,简拼码,双拼码等) 形码(如五笔字型,大众码,仓吉码等) 音形码(如自然码,首尾码等),2.1 数据与文字的表示方法,交换码 用于计算机与其他系统或设备之间进行汉字代码信息交换的标准汉字代码 目前最

20、常使用的是国标码 GB18030-2005收录了70244个汉字 标准采用单字节、双字节和四字节三种方式对字符编码。单字节部分采用GB/T 11383的编码结构与规则,使用000至07F码位(对应于ASCII码的相应码位)。双字节部分,首字节码位从081至0FE,尾字节码位分别是040至07E和080至0FE。四字节部分采用GB/T 11383未采用的030到039作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为081308130到0FE39FE39。其中第一、三个字节编码码位均为081至0FE,第二、四个字节编码码位均为030至039。,2.1 数据与文字的表示方法,GB2312是

21、汉字字符集和编码,每个汉字(图形符号)用两个字节表示,每个字节只用低7位,即最高位为0的二进制码() 汉字分为两级: 一级为使用频度高的常用汉字 二级为次常用的汉字,的代号,中文全称为 “信息交换用汉字编码字符集” ,由中华人民共和国国家标准总局发布,一九八一年五月一日实施。GB是 “国标” 二字的汉语拼音缩写。 GB2312 字符集 (character set) 只收录简化字汉字,以及一般常用字母和符号,主要通行于中国大陆地区和新加坡等地。GB2312 共收录有 7445 个字符,其中简化汉字 6763 个,字母和符号 682 个。,GB2312 将所收录的字符分为 94 个区,编号为 0

22、1 区至 94 区;每个区收录 94 个字符,编号为 01 位至 94 位。GB2312 的每一个字符都由与其唯一对应的区号和位号所确定。例如:汉字“啊”,编号为 16 区 01 位。 GB2312编码的范围为:高字节范围是0XA1-0XFF,低字节范围是0XA1-0XFF。,内部码 也称汉字内码或机内码,是计算机对汉字进行存储、运算、传码的实际代码。 一般用两个字节表示一个汉字内码,每个字节最高位为 1。 还有少数三字节、四字节等内部码。 最多能表示128128 =16384个汉字和图形符号 机内码目前虽未完全统一,但已趋于标准化。 内部码与国标码的对应关系:内码=国标码+8080 国标码每

23、个字节最高位为1 内部码。 例如:国标码 3B7A 00111011 01111010 机内码 BBFA 10111011 11111010,2.1 数据与文字的表示方法,字形码 也称为字模码,用点阵表示的汉字字形代码,是汉字的输出形式。 简易型 1616 提高型 2424、 3232等 1616点阵,每个汉字占32字节。 每行16点,每点0/1,16位,2个字节 共16行 162=32字节,2.1 数据与文字的表示方法,2.1 数据与文字的表示方法,汉字代码交换流程,奇偶校验码 常用于存储器读、写检查或ASCII字符传送过程中的检查。 实现方法:由有效信息位和1位奇偶校验位组成。 奇校验 保

24、证整个校验码中有奇数个1 偶校验 保证整个校验码中有偶数个1,2.1 数据与文字的表示方法,2.1 数据与文字的表示方法,简单奇偶校验 仅实现横向的奇、偶校验。 可检测出一位(或奇数位)错误,但不能确定出错位置。 例7:假定信息位8位,奇、偶校验位在末尾。,交叉奇偶校验 横向:每一个字节有一个奇、偶校验位 纵向:全部字节同一位也设置奇、偶校验位 可以发现两位同时出错的情况。 例:纵、横均约定为偶校验,2.1 数据与文字的表示方法,1,1,补码加减法运算公式 (讨论纯小数,纯整数类似) X+Y补=X补+Y补 (mod 2) X-Y补=X补+-Y补 (mod 2) 可证,-Y补= -Y补 (mod

25、 2) 所以,X-Y补=X补-Y补 (mod 2) -Y补=Y补+2-n ( Y补连同符号位变反,末位加1) 简便方法:Y补最右边的1及其后各位保持不变,连同符号位在内一起变反。 例10:已知X1=-0.1110,X2=+0.1101, 求:X1补,-X1补,X2补,-X2补 解: X1原=1.1110 X2原=0.1101 X1补=1.0010 X2补=0.1101 -X1补=0.1110 -X2补=1.0011,2.2 定点加减运算,例9:x=+0.1011,y=-0.0101,利用补码加法计算x+y=? 解: x补=0.1011,y补=1.1011 x补=0.1011 + y补=1.10

26、11 x+y补=10.0110 x+y=+0.0110,2.2 定点加减运算,P32,+0.6875,-0.3125,+0.375,例11:x=+0.1101,y=+0.0110,利用补码减法计算x-y=? 解:x补=0.1101,y补=0.0110, -y补=1.1010 x补 =0.1101 + -y补 =1.1010 x-y补=10.0111 x-y= 0.0111 符号位参与运算,超出模的进位自动舍弃。 自动舍弃后,结果正确吗? 如何判断?,2.2 定点加减运算,P33,+0.8125,+0.375,+0.4375,补码的溢出 在选定了运算字长和数的表示方法之后,计算装置所能表示的数的

27、范围是一定的,超过此范围就称为溢出。 例: 运算字长 数的表示方法 定点整数的范围 n= 8 原码 -127+127 n= 8 反码 -127+127 n= 8 补码 -128+127,2.2 定点加减运算,例12:X=0.1011,Y=0.1001,X+Y补=? X补 0.1011 +Y补 0.1001 X+Y补 1.0100 两正数相加,结果为负,上溢。,溢出检测方法 方法一:常识判别法 补码加法运算时,仅在两数同号时才可能产生溢出。 OVER= XsYsZs+XsYsZs=1,两正数相加,结果为负,产生上溢; 两负数相加,结果为正,产生下溢。,2.2 定点加减运算,方法二:双高位判别法(

28、单符号位补码) 考察两补码相加时符号位产生的进位Cf和最高数值位产生的进位C0。 OVER=CfC0=1 例14:X=+0.1100,Y=+0.1000,X+Y补=? X补 0 . 1 1 0 0 +Y补 0 . 1 0 0 0 X+Y补 1 . 0 1 0 0,CfC0=1 有上溢出产生,2.2 定点加减运算,方法三:变形补码法(双符号位补码) 采用双符号位补码(模4补码) 00-正数 11-负数 01-上溢 10-下溢 例15:X=-0.1100,Y=-0.1000,利用变形补码计算X+Y补 x变补 11 0100 + y变补 11 1000 x+y变补 10 1100 下溢 练习:P69

29、-6(1) X=0.11011,Y=-0.11111,用变形补码计算X-Y,并指出结果是否溢出?,2.2 定点加减运算,基本的二进制加减法器,加法单元 全加器:有三个输入端,是考虑低位向本位进位的加法器。,全加器真值表,基本的二进制加减法器,加法器 串行加法器:只有一位全加器的加法器,它每次只能进行一位二进制数运算,整个数据需要一位一位地串行送入全加器,分时进行运算。,基本的二进制加减法器,基本的二进制加减法器,并行加法器:由多位全加器组成的加法器,各位全加器之间传递进位信号的线路组成进位链。 根据进位链设置方法的不同,分为 串行进位 并行进位 影响并行加法器速度的关键因素 进位信号产生和传递

30、的时间。 进位信号的基本逻辑 Ci=AiBi+(AiBi) Ci-1,Cn=Gn+PnCn-1 , ,C2=G2+P2C1, C1=G1+P1C0,基本的二进制加减法器,串行进位:也称为行波进位 各全加器由进位信号线串接在一起,每一位的进位直接依赖于前一级的进位。 进位是串行的,结构简单速度慢。 假设一级进位产生时间2T,n级串行进位加法器的总延迟时间约为2nT。,基本的二进制加减法器,串行进位加减法器逻辑结构图,P35,C1 = G1+P1C0 C2 = G2+P2 (G1+P1C0 )= G2+P2G1+P2P1C0 C3 = G3+P3 (G2+P2 (G1+P1C0 ) = G3+P3

31、G2+P3P2G1+P3P2P1C0 Cn = Gn+PnGn-1+(PnP1) C0,基本的二进制加减法器,并行进位:先行进位、超前进位 根据最高位进位,预先推算出各高位的进位关系 使串行进位变成并行进位,从而实现快速加法运算 并行进位的逻辑表示,十进制加法器 对8421BCD码直接进行加法运算 在二进制加法器的基础上,加上适当的“校正”逻辑来实现。 n位行波进位BCD码加法器由n级BCD码加法单元级联而成。 每一级完成4位BCD数的加法运算。,基本的二进制加减法器,结果10,加6调整。 (10)10=(1010)2(1 0000)BCD,P36,一位BCD码加法单元 第一次近似求值时,完成

32、4位二进数加法 得到的暂时和大于10或向高位产生进位时,进行加6调整。,基本的二进制加减法器,计算机实现乘除法的方法 纯软件 不需要专门的硬件电路,无乘除运算指令,只能用子程序来实现乘除运算。低档微机。 硬件扩充串行乘法器 在原有运算器的基础上增加一些硬件设备,使乘除运算变换成累加和移位操作,设有专门的乘除指令。适合中、小、微型机。 专用硬件并行乘法器 设置专用的乘除法器,机器中设有相应的乘除指令,运算速度快,电路复杂。适合中、大型机。,2.3 定点乘法运算,补码的移位运算 补码左移一位相当于乘以2,低位补0。 补码右移一位相当于除以2,高位补符号位 例:0.01左移 0.10,右移0.001

33、 1.11左移 1.10,右移1.111,2.3 定点乘法运算,人工算法与机器算法的同异性 人工算法:乘积P=|X|Y| 符号PS=XSYS 引例:X=0.1101,Y= 0.1011, 求X*Y。 0.1101 0.1011 1101 1101 0000 + 1101 0.10001111 因为PS=XSYS=00=0 所以XY= 0.10001111,为适合计算机运算需要改进: 1.一次进行n个数相加一次进行2个数相加; 2.小数点移动小数点固定; 3.需要2n个加法器只设n个加法器;,2.3 定点乘法运算,又称为比较法、Booth法 参加运算的数用补码表示,符号位参加运算 被乘数X与部分

34、积取双符号位 乘数Y取单符号位,末位增设附加位Yn+1,初值0 Yn与Yn+1构成了各步运算的判断位,串行乘法补码一位乘,Yn Yn+1 操作 原部分积1 原部分积X补,1 原部分积X补,1 原部分积1,推导,进行n+1步操作,但第n+1步不移位 按补码右移规则移位,补充,BOOTH法的推导 设Y补=Y0 .Y1Y2Yn,其中Y0是符号位,可以证明 XY补=X补0.Y1Y2Yn-X补Y0 Y0=0,正数, XY补=X补0.Y1Y2Yn 不需校正 Y0=1,负数, XY补=X补0.Y1Y2Yn-X补 校正 XY补=X补0.Y1Y2Yn-X补Y0 =X补2-1Y1+2-2Y2+2-(n-1)Yn-

35、1+2-nYn-X补Y0 =X补-Y0+2-1Y1+2-2Y2+2-(n-1)Yn-1+2-nYn 又因为,2-1Y1 =Y1-2-1Y1 ,2-2Y2 =2-1Y2-2-2Y2 ,可得 X补-Y0+Y1-2-1Y1+2-1Y2-2-2Y2+2-(n-2)Yn-1-2-(n-1)Yn-1+2-(n-1) Yn-2-nYn =X补(Y1-Y0)+2-1 (Y2-Y1)+2-2 (Y3-Y2)+2-(n-1)(Yn-Yn-1)+2-n(0-Yn),=X补(Y1-Y0)+2-1 (Y2-Y1)+2-2 (Y3-Y2)+2-(n-1)(Yn-Yn-1)+2-n(0-Yn) 设Yn+1=0 =X补(Y1

36、-Y0)+2-1 (Y2-Y1)+2-2 (Y3-Y2)+2-(n-1)(Yn-Yn-1)+2-n (Yn+1-Yn) =X补(Y1-Y0)+2-1(Y2-Y1)+ 2-1(Y3-Y2)+2-1 (Yn+1-Yn) =X补(Y1-Y0)+2-1(X补(Y2-Y1)+ 2-1(X补(Y3-Y2)+2-1 (X补(Yn+1-Yn) =X补(Y1-Y0)+2-1(X补(Y2-Y1)+ 2-1(X补(Y3-Y2)+2-1 (X补(Yn+1-Yn +0) 设P0补=0 P1补=2-1 (X补(Yn+1-Yn ) +P0补) P2补=2-1 (X补(Yn-Yn-1 ) +P1补) Pn补=2-1 (X补(

37、Y2-Y1 ) +Pn-1补) Pn+1补=XY补= X补( Y1-Y0 )+Pn补,Yn Yn+1 操作 部分积1 部分积X补, 1 部分积X补,1 部分积1,返回,补码一位乘法运算示例,例:X= - 0.1101 Y= 0.1011用补码一位乘法计算X*Y=? 解:X补=11.0011 -X补=00.1101 Y补=0.1011 A C 附加位 说明 00.0000 0.1011 0 YnYn+1=10, +-X补 + 00.1101 00.1101 1 00.0110 10.101 1 YnYn+1=11, 1 00.0011 010.10 1 YnYn+1=01,+X补 + 11.00

38、11 11.0110 1 11.1011 0010.1 0 YnYn+1=10,+-X补 + 00.1101 00.1000 1 00.0100 00010. 1 YnYn+1=01,+X补 + 11.0011 最后一步不移位 11.0111 0001 所以, XY= - 0.10001111,补码一位乘法运算器框图,00或11,阵列乘法器,专用硬件并行乘法器 由于乘法运算量大,采用高速乘法部件可以提高速度和效率。 随着大规模集成电路的问世,可由全加器阵列,构成流水式阵列乘法器,实现多个部分积并行相加,称为并行乘法器。 运算速度快,电路复杂。,P38,不带符号的阵列乘法器,设有两个不带符号的二

39、进制整数 Aam1a1a0 Bbn1b1b0 它们的数值分别为a和b,即 设P A*B =pmn1p1p0 ,即,不带符号的阵列乘法器,这个过程与手工计算乘法过程非常类似,mn个aibj ,可以用mn个与门并行地产生 mn个aibj 相加,可用(m-1)n个全加器实现,不带符号阵列乘法器逻辑框图,全加器逻辑符号,例如:当m=n=5时,不带符号的阵列乘法器逻辑电路图,Ta:与门时间延迟 Tf:全加器进位时间延迟 总时间延迟=Ta+(n-1)6T+(n-1)Tf=(8n-6)T,不带符号的阵列乘法器,例16已知两个不带符号的二进制整数A11011,B 10101,求每一部分乘积项aibj的值与p9

40、p8p0的值 解,a4b01 a3b01 a2b00 a1b01 a0b01 a4b10 a3b10 a2b10 a1b10 a0b10 a4b21 a3b21 a2b20 a1b21 a0b20 a4b30 a3b30 a2b30 a1b30 a0b30 a4b41 a3b41 a2b40 a1b41 a0b41,Pp9p8p7p6p5p4p3p2p1p01000110111 (56710),串行进位链的并行加法器,不带符号阵列乘法器 工作过程演示 A *B 11011* 10101,带符号的阵列乘法器,对2求补器:在带符号数与无符号数间进行转换,求补方法:设Aana1a0是n1位带符号数,

41、 负数:E=1,最右边的“1”及其后各位保持不变,其余各位按位取反。10100110 正数:E=0,输出和输入相等。 可利用符号位做为控制信号。,带符号阵列乘法器逻辑框图,带符号的阵列乘法器,例17 设X15,Y13,用带求补器的原码阵列乘法器求出乘积XY? 解 设最高位为符号位,则输入数据为 X原 01111 Y原 11101 符号位单独考虑,算前求补级后 |X|1111,|Y|1101,算后经求补级输出并加上乘积符号位1,则原码乘积值为111000011。真值是 ( 11000011)2=(-195)10,手工除法示例 假定:X=0.1011,Y=0.1101,则 0.1101 0.101

42、10 X小于Y,商0,0.,2.4 定点除法运算,0.1,0.11,0.110,0.1101,0.01101 Y右移,够减,商1,相减,0.010010 得R0,0.001101 Y再右移,够减,商1,相减,0.0001010 得R1,0.0001101 Y再右移, 不够减,商0,0.00000111 得R3,商符qf=XfYf=00=0 XY=0.1101+0.0111*2-4/0.1101,0.00001101 Y再右移, 够减,商1,相减,0.00010100 得R2,计算机实现除法的改进 定点机,商应为纯小数,否则溢出。所以,只有在被除数小于除数时(X-Y0,商1,余数左移,进行下一步

43、 R0,商0 恢复余数法 +Y(恢复余数),余数左移,进行下一步 不恢复余数法(加减交替法) Ri+1=2(Ri+Y)-Y=2Ri+Y 余数左移,下一步加+Y,串行除法,串行除法补码不恢复余数法,涉及到的问题及解决 第一步,判断是否开始,不是简单地相减: 补码表示时:X与Y同号,相减 X与Y异号,相加 中间过程中,不同情况不同处理: R与Y同号,商1,1,+-Y补 R与Y异号,商0,1,+Y补 商的校正 末尾恒置1法,补充,补码不恢复余数法示例,例:X= 0.1000 Y= - 0.1010 用补码不恢复余数法计算 X/Y 解:A:X补=00.1000 B:Y补=11.0110,-Y补=00.

44、1010 C:商,初值为0 A C 操作 00.1000 X与Y异号 + 11.0110 +Y补 11.1110 1 R与Y同号,商1 11.1100 1. 1 + 00.1010 +-Y补 00.0110 1.0 R与Y异号,商0 00.1100 1.0 1 + 11.0110 +Y补 00.0010 1.00 R与Y异号,商0 00.0100 1.00 1,补码不恢复余数法示例,例:X= 0.1000 Y= - 0.1010 用补码不恢复余数法计算 X/Y 解:A:X补=00.1000 B:Y补=11.0110,-Y补=00.1010 C:商,初值为0 A C 操作 00.0100 1.0

45、0 1,+ 11.0110 +Y补 11.1010 1.001 R与Y同号,商1 11.0100 1.001 1 + 00.1010 11.1110 1.0011 末位恒置1 X/Y补=1.0011+1.1110*2-4/1.0110 X/Y= - 0.1101+0.0010*2-4/0.1010,阵列除法器,采用大规模集成电路制造的并行运算部件。 与串行除法器相比,运算速度高。 形式多样 不恢复余数阵列除法器 补码阵列除法器 基本的单元电路可控加/减法单元(CAS) 既可完成减法操作,又可完成加法操作 适用于除法操作过程中的加减交替。,可控加/减法(CAS)单元,四个输入端 Ai、Bi、Ci

46、 P:控制端输入 四个输出端 Si、Ci+1 Bi:除数右移 P :控制端输出 P0:CAS作加法 Si=AiBi Ci Ci+1=AiBi + (Ai Bi)Ci P1:CAS作减法,不恢复余数的阵列除法器,不恢复余数的除法加减交替法 当前行应执行加法还是减法,取决于上一行余数的符号与被除数的符号是否一致: 余数与被除数异号(余数为负),商“0”,除数右移,与原余数相加,得新余数; 余数与被除数同号(余数为正),商“1”,除数右移,与原余数相减,得新余数。 只介绍被除数、除数均为正数的情况。,阵列除法器 逻辑结构图,被除数0.123456 (双倍长),除数0.123 (XY),商数0.q1q

47、2q3,余数0.00r3r4r5r6 字长 n14,第一行做减法(P=1),由于XY,余数0,商的个位q0上0。 第二行做加法,余数加上右移一位后的Y。 由余数的正负决定第二位商q1是1或0。 由q1控制第三行做加法或减法,依次类推。,例20 0.101001, 0.111, 求。 解: 补1.001 被除数0.1 0 1 0 0 1 被除数x 减 1.0 0 1(-0.111) 第一步减除数y 1.1 1 0 0 0 1 0 q00 余数为负 商0,下步做加法 加 0.0 1 1 1 除数右移,加 0.0 0 1 1 0 1 0q11 余数为正 商1,下步做减法 减 1.1 1 0 0 1

48、(-0.00111)除数再右移,减 1.1 1 1 1 1 1 0q20 余数为负 商0,下步做加法 加 0.0 0 0 1 1 1 除数再右移,加 0.0 0 0 1 1 0 0q31 余数为正 商1 故得 商 qq0.q1q2q30.101 余数 r(0.00r3r4r5r6)0.000110,阵列除法器完成除法运算示例,2.5 定点运算器的组成,ALU 算术逻辑单元,实现基本算术、逻辑运算。 寄存器组 提供操作数与暂存运算结果。 多路选择器或锁存器 向ALU提供操作数。 内部总线 运算器内部的数据通路,用来传输运算过程中的数据。 判别逻辑和控制电路,多功能算逻单元ALU,ALU:算逻单元

49、,是运算器的核心。 是由多个全加器构成的并行加法器; 既可以完成算术运算 加、减、乘、除 又可以完成逻辑运算 与、或、非、异或 每一位都是逻辑数,无符号位、数值位、阶码、阶符之分。 简单位运算:位与位之间没有进/借位关系。,P51,为完成多种算/逻运算,由4位控制参数S0S3的不同组合对Ai 、Bi进行控制,产生函数Xi和Yi ,送全加器运算。,ALU的基本思想,ALU的进位逻辑,可以证明,Xi+Yi=Xi XiYi=Yi 将其代入进位关系式 Cn+i+1=XiYi+XiCn+i+YiCn+i=Yi+XiCn+i Yi既是操作数,又是进位产生函数; Xi既是操作数,又是进位传递函数。 ALU芯

50、片实例74181:能完成4位二进制数的算逻运算,组内并行进位。 Cn+1=Y0+X0Cn Cn+2=Y1+X1Cn+1=Y1+X1Y0+X1X0Cn Cn+3=Y2+X2Y1+X2X1Y0+X2X1X0Cn Cn+4=Y3+X3Y2+X3X2Y1+X3X2X1Y0+X3X2X1X0Cn,74181引脚图,74181芯片:4位组内并行ALU。可完成16种算术运算和16种逻辑运算。,74181芯片引脚图(负逻辑),74181逻辑电路图,74181算术/逻辑运算功能表,算术运算采用补码 “加”:算术加,最低位的进位为0 “+”:逻辑加 减法利用补码方法进行的,A减B是利用“A减B减1”加上最末位产生

51、一个强迫进位(加1)完成。,74181芯片应用举例,并行进位速度快,但位数增多时,电路结构复杂,硬件费用高;而且元器件扇入系数也有限制,所以不可能完全采用并行进位方式。 分组并行进位:把N位字长分为若干小组,组内并行,组间可串可并。 单级先行进位:组内并行,组间串行。 前片的Cn+4与下一片的Cn相连。影响运算速度 例1:由4片74181组成单级先行进位的16位ALU。,多级先行进位:组内并行,组间并行。 需利用74182CLA先行进位部件。 例2:由4片74181组成两级先行进位的16位ALU。,74181芯片应用举例,74182CLA的进位逻辑,Cn+x =G0+P0Cn Cn+y =G1

52、+P1Cn+x =G1 +P1(G0+P0Cn)=G1+P1G0+P1P0Cn Cn+z=G2+P2Cn+y=G2+P2( G1+P1G0+P1P0Cn) =G2+P2 G1+ P2 P1G0+P2 P1 P0 Cn G3+P3Cn+z=G3+P3(G2+P2 G1+ P2 P1G0+P2 P1 P0 Cn ) =G3+P3G2+P3P3G1+P3P2P1G0+P3P2P1P0Cn,P55,74181芯片应用举例,例3:8片74181、2片74182,组成两级先行进位32位ALU,例4:16片74181、5片74182,组成三级先行进位64位ALU,P56,内部总线,总线:能为多个部件分时共享

53、的公共信息传送线路。 外部总线:系统总线。用于连接各大部件。 内部总线:芯片内各部件之间的连线 按总线传送的方向可将总线分为单向总线和双向总线 双向数据总线的实现方法,运算器的内部总线结构,单总线结构:控制简单,在同一时间内,只能有一个操作数放在总线上,实现一次双操作数运算需要分三步,操作速度慢。,运算器的内部总线结构,双总线结构:两个操作数可以分别通过总线1和总线2同时送到ALU去进行运算,运算结果经缓冲器送入目的寄存器,每次操作比单总线结构少一步。,运算器的内部总线结构,三总线结构:ALU的两个操作数和运算结果可分别通过三条总线传输,运算一步完成。操作速度快,控制复杂。,2.6 浮点运算方

54、法和浮点运算器,浮点加减运算 设有两个浮点数X和Y,它们分别为 X2Ex MX Y2Ey MY 完成浮点加减运算的操作过程: 0 操作数的检查 求阶差,对大阶 尾数相加减 结果规格化 舍入处理 溢出判断,浮点加减运算,0 操作数检查 如果判知两个操作数或中有一个数为0,则没有必要再进行后续的一系列操作,以节省运算时间。 求阶差,对大阶:只有两浮点数阶码相同时, 才可以进行尾数的加减运算。 求阶差E EE E 0,表示EE; E 0,表示EE; E 0,表示EE。,浮点加减运算,对大阶 大阶浮点数尾数左移会引起最高有效位的丢失,造成很大误差。 因此,对阶时,总是小阶浮点数向大阶浮点数对齐,称为对

55、大阶。 小阶的尾数右移 ,阶码加1。 ExEy时,则My ,Ey+1 ExEy时,则Mx ,Ex+1 右移的位数等于阶差E,直到两数的阶码相等为止。,浮点加减运算,尾数求和运算 其方法与定点加减法运算完全一样 Mx+MyMz 结果规格化 当尾数为01.或10.,|Mz|1,溢出。 右规:Mz,Ez+1。 当尾数为11.1.或00.0.时,|Mz|0.5 左规:Mz,Ez-1,浮点加减运算,舍入处理 对阶或右规时,尾数右移,尾数的低位部分被丢掉,造成一定误差,要进行舍入处理。 简单的舍入方法有三种: 恒舍法:移出的位直接舍去,对保留部分不做任何修改。 0舍1入法:右移出的位为0则舍去,为1则将尾

56、数的末位加“1”。 末位恒置一法:只要数位被移出,就在尾数的末尾恒置“1”。 IEEE754标准 就近舍入、朝0、+、- 舍入,溢出判断 浮点数溢出主要体现在阶码的溢出,机器必须做中断处理。 阶码上溢 阶码大于可表示的最大正数, 看作+、- 阶码下溢 阶码小于可表示的最小负数,看作机器零,浮点加减运算,例25 设X20100.11011011,Y2100(0.10101100),求X+Y。 解两数均以补码表示,阶码双符号位,尾数单符号位。它们的浮点表示为 浮00 010, 0.11011011 浮00 100, 1.01010100, 求阶差,对大阶 EEEE补+-E补00 010+11 10011 110 X的阶码小,应使Mx 右移2位,Ex 加2 X浮00 100,0.00110110(11) 尾数求和 00.00110110(11) 11.01010100 11.10001010(1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论