chapter2运算方法和运算器.ppt_第1页
chapter2运算方法和运算器.ppt_第2页
chapter2运算方法和运算器.ppt_第3页
chapter2运算方法和运算器.ppt_第4页
chapter2运算方法和运算器.ppt_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

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

文档简介

计算机组成原理 武汉科技大学 计算机科学与技术学院,第二章 运算方法和运算器,本章内容 2.1 数据与文字的表示方法 2.2 定点加法、减法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算方法和浮点运算器,本章内容 2.1 数据与文字的表示方法 2.2 定点加法、减法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算方法和浮点运算器,2.1 数据与文字的表示方法,计算机中常用的数据表示格式:,2.1.1 数据格式,计算机中选择数的表示方式时考虑的因素:,(1) 数据类型(整数、小数、实数、复数) (2) 可能遇到的数值范围 (3) 数值精确度 (4) 数据存储和处理的硬件代价,(1) 定点数:容许的数值范围有限,但硬件比较简单 (2) 浮点数:容许的数值范围很大,但硬件比较复杂,n位,1位,符号,量值,(1) 纯小数 表示形式:nn-1n-20 表数范围:0.0000 | X | 0.11111 即:0 | X |1-2-n,1. 定点数的表示方法,定点数:小数点位置固定,由于约定在固定位置,小数点不再使用记号“.”表示,n位,1位,符号,量值,(2) 纯整数 表示形式:nn-1n-20 表数范围:0 | X | 11111 即:0 | X | 2n - 1,2 浮点数的表示方法,任意一个R进制数可以写成 N = Re M R基数,定义后不能改变,可隐含 M尾数,纯小数 e指数,纯整数,指出小数点的位置 由于指数可以取不同的数值,所以,小数点的位置可在一定范围内自由浮动,故被称为浮点数 计算机中浮点数的表示格式: X=2E M M尾数,定点小数(含数符),表示数的全部有效数字精度 E阶码,纯整数,指示小数点的位置,浮点数:小数点位置可在一定范围内移动;能扩大表数范围,浮点数的表示方案:,格式1:,格式2:IEEE754标准,64位浮点数,63 62 52 51 0,32位浮点数,31 30 23 22 0,其中:S符号位,0表示正,1表示负 E阶码,移码表示的指数,E=e+127(32位)或1023(64位) 即将浮点数的指数e变成阶码E时,将其加上一个固定的数值 R默认为2; M尾数;小数点在尾数域最左有效位的右边,IEEE754标准浮点数的规格化及其与真值的关系,规格化表示尾数非0时,约定其最高有效位为1 即:尾数规格化形式: 1.M 例:A=24 (0.0000000010101)2=2-5 (1.0101)2 阶码:用移码表示,方便指数比较大小和对阶操作 IEEE754标准中,规格化的浮点数x与真值的关系: 32位浮点数 (1)s(1.)2127 64位浮点数 (1)s(1.)21023,阶码与尾数的位数,精度:,范围:,尾数,指数,(1) 当阶码E为全0且尾数M也为全0时,表示的真值x为零,结合符号位S,有正零和负零之分 (2) 当阶码E为全1且尾数M为全0时,表示的真值x为无穷大,结合符号位S,有和之分(对溢出的处理方式取决于用户) (3)阶码E为全1且尾数M非0时,表示无效运算的结果如0/0, 无穷减无穷等 (4) 一个规格化的非零和非无穷的浮点数,阶码E范围1254(32位)和12046(64位),其真值为 126 127(32位格式的8位阶码)和 1022 1023(64位格式的11位阶码),此时有效数据分别为24位或53位,即默认23位小数或52位小数的小数点左边有一个隐含的1,注意: IEEE754格式的某些位样式用来表示特殊值,例1 若浮点数的32位754标准存储格式为(41360000)16,求其十进制数值 解: 将十六进制数展开后,可得二进制数格式为 4 1 3 6 0 0 0 0 0 100 0001 0 011 0110 0000 0000 0000 0000 S 阶码(8位) 尾数(23位) 指数e=E127=(10000010)2(01111111)2=(00000011)2=(3)10 1.M(1.011 0110 0000 0000 0000 0000)2(1.011011)2 所以,(1)s1.M2e(1.011011)223 (1011.011)2(11.375)10,例2 将十进制数数20.59375转换成IEEE754标准32位浮点数的二进制格式存储 解: 首先转换成二进制数: 20.59375(10100.10011)2(1.010010011)224 于是:S0, E4127131, M010010011 IEEE754标准的32位浮点数的二进制存储格式为: (0100 0001 1010 0100 1100 0000 0000 0000)2(41A4C000)16,补充:非IEEE754标准尾数的规格化 一般地,浮点数规格化是指尾数M满足 1/2|M|1 若尾数采用原码表示,尾数的最高数值位一定为1 若尾数采用补码表示,尾数的最高数值位应与符号位相反 举例:浮点数(0.375),(0.125)尾数采用8位补码规格化表示 (+0.375)=0.752-1=(0.11)22-1 所以用8位补码表示的规格化尾数为(0.1100000)2 (-0.375)=-0.752-1=(-0.11)22-1 所以用8位补码表示的规格化尾数为(1.0100000) 2 (+0.125)=0.52-2=(0.1)22-2;规格化尾数为(0.1000000)2 (-0.125)=-0.52-2=(-0.1)22-2;尾数(1.1000000)2不是规格化形式 故应化为(-0.125)=(-1.0)22-3;规格化尾数为(1.0000000)2,补充:非IEEE754标准浮点数的规格化举例 某种格式的32位浮点数(非IEEE754标准),符号位1位;阶码8位,采用标准的移码表示;尾数23位,采用补码表示,试将十进制数(20.59375)用该标准的规格化形式表示出来 首先化为二进制数:(20.59375)=(10100.10011)2 (+20.59375)=+(10100.10011)2 =+(0.1010010011)225 所以S=0;E=5+128=(10000101)2;M=1010010011 故(+20.59375)的规格化浮点数形式为 (0100 0010 1101 0010 0110 0000 0000 0000) 2=(42D26000)16 (-20.59375)=-(10100.10011)2=-(0.1010010011)225 尾数用补码表示为 (1.0101101101)225 所以S=1;E=5+128=(10000101)2;M=0101101101 故(-20.59375)的规格化浮点数形式为 (1100 0010 1010 1101 1010 0000 0000 0000) 2=(C2ADA000)16,(1). 字符串形式:一个字节存放一个十进制的数位或符号位 用于非数值计算 (2). 压缩的十进制数串形式: 一个字节存放两个十进制的数位(值为BCD码),节省存储空间,且便于直接完成十进制数的算术运算 符号位和每个数位都占半个字节;符号位放在最低数字位之后,其值选用四位编码中的冗余状态 规定:数位加符号位之和必须为偶数,否则在最高数字位之前补一个0,例如 123 和12分别被表示成:,(123),(-12),3.十进制数串的表示方法,2.1.2 数的机器码表示,无符号数的表示所有位均表示数值;举例 机器码:符号数值化后的数据编码 便于计算机中存储和运算 真值:一般书写表示的数 机器码的种类(以定点整数为例) (1) 原码 (2) 补码 (3) 反码 (4) 移码,原码表示法的优点:简单易懂 缺点:(1) 加/减法运算复杂(同号相减或异号相加时) (2) 零的原码不惟一,定点整数的原码形式为nn-1n-2 0 , 则原码表示的定义,例: 1001, y1001 则原01001, y原11001,1. 原码表示法,2. 补码表示法,如:以校时为例,减3和加9是等价的,即,9是(-3)对12的补码,可以用数学公式表示 -3+9 (mod12)数学上称为同余式 mod12是指以12为模数,这个“模”表示被丢掉的数值,补码的引出“模”和“同余”的概念 “模”是指一个计量系统的计量范围,即产生“溢出”的量,负数用补码表示时,可以把减法转化为加法,定点整数的补码形式为nn-1n-2 0,对于定点负整数,由补码和反码的定义可知:,补 2n+1+=反 1,3.反码表示法,由原码变反码容易实现利用触发器的互补输出端 对定点整数,反码表示的定义为,结论:若要求一个负数的补码,其方法是先求其反 码,再在未位上加1即可,由x原求x补(x0)的简便原则: 符号位保持不变;从最低位开始遇到的第一个1以前的各位(包括该位)保持不变;其余各位按位取反,例:x原= 1 1 0 1 1 0 1 0 0,x补=,1 0 1 0 0 1 1 0 0,1 0 0,1 0 0,求补码的方法,由x补求-x补:连符号位一起各位求反,末位加1,例: x补= 1. 1 0 1 0 1 0 1 -x补= 0. 0 1 0 1 0 1 1,由-X补求X补 规则相同,将x补的符号位和数值位一起向右移动一次,且左补符号位 例: x补 =1 0 1 0 1 0 0 0 x/2补=1 1 0 1 0 1 0 0 (0),称为“算术右移”,如何求x/4补和x/8补吗?,由x补求x/2补,补码的性质: 0的补码惟一 便于加减运算 n+1位补码所能表示的整数的范围: 定点整数:MAX= 2n-1, MIN= 2n,补码与真值的关系: 设一个二进制整数的补码有n+1位(含1位符号位),即 x补=nn-1n-2 0 则其补码表示的真值为:x=-2nxn+(2ixi) 当x为正数时,xn=0, x补的形式: 0n-1n-2 0 真值为: x=(2ixi) 当x为负数时,xn=1, x补的形式: 1n-1n-2 0 真值为:x=- 2n+(2ixi) 当x为0时, x补= +0补=-0补=0 结论:如果把符号位的权值当成负权,则真值是其相应补码的各位值乘以该位的权的累加和 举例: x补=010011011,y补=110011011,求x,y,n-1,i=0,n-1,i=0,n-1,i=0,通常用于表示浮点数的阶码 设定点整数e的移码形式为ekek-1ek-2 e0,其定义是 e移2ke 2k e 2k 若阶码数值部分为5位(连同符号位6位),以e表示真值,则 e移25e 25 e 25 例如,当正数e10101 时,e移1,10101 负数e10101时, 移25e 25101010,01011 移码中的逗号表示左边一位是符号位 移码中符号位ek的表示规律与原码、补码、反码相反,4.移码表示法,在已知补码的情况下,将符号位求反即得移码,IEEE754标准浮点格式中e的移码,上述数据的四种机器表示法小结: 移码表示法主要用于表示浮点数的阶码 由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法;在这类机器中,数用补码表示,补码存储,补码运算 有些机器,用原码进行存储和传送,运算时改用补码 还有些机器在做加减法时用补码运算,在做乘除法时用原码运算,例6以n+1位定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况 解:设机器码形式为nn-1n-2 0,补码表示中“0”只有一种形式;且负数的范围可到2n,例7将十进制真值(127,1,0,1,127)列表表示成二进制数及8位的原码、反码、补码、移码 解:,由表中数据可知,补码值与移码值差别仅在于符号位不同,例8设机器字长16位,定点表示,尾数15位,数符1位,问: 定点原码整数表示时,最大正数是多少?最小负数是多少? 解: 最大正数值(2151)10(32767)10 0 111 111 111 111 111 最小负数值(2151)10(32767)10 1 111 111 111 111 111,例9假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数,真值表示为: (1)s (1.M) 2E128 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少? 解: (1)最大正数 0 1111 1111 1111 1111 1111 1111 1111 111 1(12-23)2127 (2)最小正数 0 0000 0000 0000 0000 0000 0000 0000 000 1.02128 (3)最小负数 1 1111 1111 1111 1111 1111 1111 1111 111 1(1223)2127 (4)最大负数 1 0000 0000 0000 0000 0000 0000 0000 000 1.02128,2.1.3字符与字符串的表示方法,1.字符的表示方法 七位的ASCII码(American Standard Code for Information Interchange, 美国标准信息交换代码)十进制数码、英文字母、一定数量的专用符号,共128个元素 其中:可显示或打印的字符95个,其编码值为32126 控制字符33个,其编码值为031和127 采用7位二进制编码,加一位奇偶校验位,共8位 表2.1 七单位的ASCII码字符编码表,字符串是连续的一串字符,占连续多个字节,每个字节存一个字符 例存储字符串: IFABTHENREAD(C),解: 设主存字单元由4个字节组成 按从高位字节到低位字节依次存放 各字节单元依次存放十进制的73、70、32、65、62、66、32、84、72、69、78、32、82、69、65、68、40、67、41、32,2.字符串的表示方法,1.汉字的输入编码 (1)数字编码:常用的是区位码 区位码4位十进制数,前2位区码,后2位位码 如“中”位于54区48位区位码5448 优点: 无重码,且输入码与内部编码的转换比较方便 缺点: 代码难以记忆 (2)拼音码:使用简单方便,但重码率很高 (3)字形编码:按汉字的形状编码,如五笔字形码,2.1.4 汉字的表示方法,2.汉字的内码 用于汉字的存储、交换、检索等操作的机内代码 用两个字节表示(两个字节的最高位均为1) 如“武”字机内码为2E44H+A0A0H=CEE4H 3.汉字字模码 是用点阵表示的汉字字形代码,有1616点阵,24 24点阵,3232点阵,用于汉字的显示或打印输出 字模点阵只能用来构成汉字库,而不能用于机内存储,2.1.5 校验码奇偶校验,设(01 n-1) 是一个n位字 奇校验位定义为:C0 1 n-1 偶校验位定义为:C0 1 n-1,注意:奇偶校验可提供奇数个错误检测,但无法检测偶数个错误,更无法识别错误信息的位置,例10已知5个字节数据,分别用奇校验和偶校验进行编码,0 1 0 1 0,1 0 1 0 1,2.2 定点加法、减法运算,2.2.1 补码加法 任意两个数的补码之和,等于它们和的补码 以定点整数为例 x+y补= x补+y补 (mod 2n+1) 两个数均用补码表示,符号位当作数值参加运算,符号位相加所产生的进位丢掉,结果为和的补码,证明分4种情况(略),采用定点整数表示,因此证明的先决条件是 (2n-1), (2n-1), (2n-1) (1)0,0,则0 根据补码定义,补, y补y,故 补补补 (mod 2n+1),证明分4种情况,(2)0,0,则0或0,则0或 0 同(2),(4)0,0,则0 补 2n+1, 补 2n+1 补补 2n+1 2n+1 2n+1(2n+1) 因()是绝对值小于2n 的负数,故(2n+1)一定大于2n而小于2n+1,故进位2n+1必丢失,又因()0, 所以 补补 2n+1() 补 (mod 2n+1),例11 +1001, +0101,求,解: 补01001, 补00101 +补01001+ 00101=01110 +=+1110,例12 1011, 0101,求,解: 补01011, 补11011 +补01011+ 11011=00110 +=+0110,解:x补=1 0 0 1 1 1, y补=1 1 1 1 0 1,x补=1 0 0 1 1 1,y补=1 1 1 1 0 1,+,丢掉,1 1 0 0 1 0 0,x补+y补=100100 x+y=-11100,例: x-11001 ,y-00011,求 x+y?,结论补码加法的特点: (1) 符号位作为数的一部分一起运算 (2) 在模2n+1的意义下相加,即超过2n+1的进位要丢掉,补补补补补 -y补称为y补的机器负数,由y补求-y补的过程称为将y补“变补”或对y补求补 从补求补的法则是:对补包括符号位“求反且最末位加1” 写成运算表达式为: 补补1 其中符号表示对补作包括符号位在内的求反操作,2.2.2 补码减法,证明:-补补补补补,只要证明补补即可 补补补 (mod 2n+1) 补 补补 (2.15) 补()补补补 补补补 (2.16) 将式(2.15)与(2.16)相加,得 补补 补补补补 补补补 0 故 补补 (mod 2n+1),例13 已知11110,21101 求:1补,1补,2补,2补 解: 1补10010 1补1补101101101110 2补01101 2补2补110010110011 例14 1101,0110 , 求 解: 补01101 补00110, 补11010 补 0 1 1 0 1 补 1 1 0 1 0 补 所以 0111,丢掉,1 0 0 1 1 1,2.2.3 溢出概念与检测方法,n+1位定点整数补码数的表示范围:2n 2n 溢出的概念,+(n-1),负溢出,正溢出,-n,0,例15 1011, 1001 , 求 解 补01011 补01001 补= 01011+01001=10100 例16 1101, 1011,求 解 补10011 补10101 补= 10011+ 10101 = 01000 发生错误的原因 正溢出两正数相加,结果大于所能表示的最大正数 负溢出两负数相加,结果小于所能表示的最小负数,双符号位补码:也称“变形补码”或“模2n+2补码”(对定点整数) 变形补码可使模2n+1补码表数的范围扩大一倍,判断“溢出” 的方法变形补码法;单符号位法,单符号位法最高有效位产生进位而符号位无进位时,产生正溢;最高有效位无进位而符号位有进位时,产生负溢 故溢出逻辑表达式为VCfCn,结论: 1.溢出运算结果的二符号位相异,逻辑表达式为 VSf1Sf2 Sf1Sf2=01正溢;Sf1Sf2=10负溢 2.不论溢出与否,最高符号位Sf1始终指示正确的符号,定点整数的变形补码的模为2n+2 , 用同余式表示为: 补2n+2 + (mod 2n+2) 对于正数,两个符号位都是0;负数,两个符号位都是1 对于变形补码,同样有 补+补+补 (mod 2n+2) 运算过程中注意: 两个符号位都看作数码参加运算;丢掉最高符号位上产生的进位,变形补码,溢出判断,例17 1100, 1000,求 解: 补001100, 补001000 补 001100 补 001000 010100 两个符号位出现“01”,表示已溢出,即结果大于15 例18 1100, -1000,求 解: 补110100, 补111000 补 110100 补 111000 101100 两个符号位出现“10”,表示已溢出,即结果小于16,变形补码法举例,例17B1100, 1000,求 解: 补01100, 补01000 补 01100 补 01000 10100 例18B 1100, -1000,求 解: 补10100, 补11000 补 10100 补 11000 01100,单符号位法举例,2.2.4 基本的二进制加法/减法器,输入:Ai、Bi、Ci 输出:Si、Ci1,一位全加器真值表,SiAiBiCi Ci+1AiBiBiCiCiAi AiBi(Ai Bi ) Ci,1、一位全加器,2、n位二进制加/减法器,设5位二进制数 A补=A4A3A2A1A0 B补=B4B3B2B1B0,两数相加,则为S补=A补+B补=C5S4S3S2S1S0,而-B补=B补1,两数相减,则为S补=A补-B补=A补+-B补=A补+-B补,2.2.4 基本的二进制加法/减法器,n位补码运算的二进制加法/减法器的逻辑结构图工作原理,延迟时间分析,设:一个“与”门/“或”门的延迟时间为T,一个异或门的延迟时间为3T,则: 一位FA的Si时间延迟为6T Ci1的传输时间延迟为2T n位行波进位加法器的时间延迟为 tan2T9T(2n9)T,n位行波进位加法器的延迟时间,行波进位的补码加/减法器结构,2.3 定点乘法运算,2.3.1 原码并行乘法 1.人工算法与机器算法的同异性 运算规则:乘积的符号位、数值部分 设数值位为n位的被乘数和乘数是用原码表示的定点数 被乘数 原f n110 乘数 原f n110 则乘积原(ff)(n110)(n110),设1101,1011,数值部分运算过程分析,早期采用串行的1位乘法,即多次执行“加法移位”操作 简单,但太慢;目前使用流水式阵列乘法器(并行),对于计算机而言,不同之处在于: 1. 机器字长为n位,两个n位数相乘,乘积可能为2n位 2. 只有两个操作数加法器不能将n个位积一次相加,设A、B是两个不带符号的二进制整数: Aam1a1a0 m位 Bbn1b1b0 n位 数值分别为a和b,即 m1 n1 a ai 2i b bj 2j i0 j0 被乘数A与乘数B相乘,产生mn位乘积P: Ppmn1p1 p0 m n位 乘积P 的数值为,2.不带符号的阵列乘法器,m位n位二进制数的计算过程,以m=n=5为例,延迟时间,电路中, aibj|0im1和0jn1可用 “与”门并行产生 n位n位的乘法器需要n(n1)个全加器和n2个“与”门 设Ta为“与门”的传输延迟时间,Tf为FA的进位传输延迟 假定用2级“与或”逻辑实现FA的进位链,则Ta T,Tf 2T n位n位不带符号的阵列乘法器总的乘法时间为: tmTa+(n1) 6T+(n1)Tf3T T(n1)6T+ (n1)2T +3T(8n4)T,5位5位不带符号阵列乘法器,例16 已知两个不带符号的二进制整数A 11011,B 10101,求每一部分乘积项aibj的值与p9p8p0的值 解:,Pp9p8p7p6p5p4p3p2p1p0512+32+16+7=1000110111 (56710),有符号数乘法的实现方法 一是将补码转成原码再用无符号数乘法器方案 二是设计一种直接用补码进行乘法运算的新型乘法器,对2求补电路可将补码表示的带符号数转换成绝对值,0in -1,3.带符号的阵列乘法器,按位扫描技术 求(n1)位补码表示的带符号数Aanan-1a1a0的绝对值,对2求补电路 设A补anan-1a1a0,求A的绝对值(共n位) 设 ,则,若an = 1,则 的状态视a0ai-1是否为全零而定: 如果a0ai-1为全零,则 ,否则,设Ci=0表示a0ai全部为0;设Ci=1表示a0ai中至少有一个1,则有: Ci=Ci-1+ai;C-1=0,并根据按位扫描原则,有,综合an=0和an=1两种情况,有 Ci=Ci-1+ai;C-1=0 0in-1,利用符号位来作为控制信号E 例,在5位有符号数11010,对2求补器中,E=1,a3a0输入为1010,输出a3* a0*是0110 转换一个(n1)位带符号数,所需的总时间延迟为 tTC(n-1)TaTaTdnTaTd 其中Ta是一个与门/一个或门的延迟时间, Td是异或门延迟时间,(n1)(n1)位带求补器的阵列乘法器逻辑方框图,(2) 带符号的阵列乘法器,带求补级的阵列乘法器 三个求补器的作用 设A=anan-1a1a0和B=bnbn-1b1b0均为用定点表示的(n1)位带符号整数。在必要的求补操作后,用nn位不带符号的阵列乘法器产生2n位真值乘积: ABPp2n1p1p0 p2nanbn 其中P2n为符号位 带求补级的阵列乘法器既适用于原码乘法,也适用于间接的补码乘法;但间接的补码乘法时间大约比原码乘法增加1倍,例20 设15,13,用带求补器的原码阵列乘法器求 解: 设最高位为符号位,则输入数据为 补01111 补 10011 符号位单独考虑,算前求补级后 |1111;|1101,验证:,符号位:0 1= 1 算后求补结果:1 0 0 1 1 1 1 0 1,换算成真值是 ( 11000011)2 ( 128643 )(195)10,例21 设 15,13,用带求补器的原码阵列乘法器 解: 设最高位为符号位,则输入数据为 补10001 补 10011 符号位单独考虑,算前求补级后 |1111; |1101,验证: 乘积的真值是 (11000011)2(195)10,符号位:1 1= 0 算后求补结果:0 1 1 0 0 0 0 1 1,2.3.2 直接补码并行乘法,1.补码与真值的转换公式 计算补码真值的方法使其符号位带负权 设定点整数的补码:N补anan1a1a0 , 其中an是符号位 补码数N补和真值N的关系可以表示成:,直接补码乘法符号位参与运算,不需要求补级;快速,把负权2n强加到符号位an上,则真值N为:,例22 已知N1补=(01101)2,N2补=(10011)2,求N1补,N2补的数值 解: N1补=(01101)2 具有的数值为: N1=024123122021120=(13)10 N2补=(10011)2具有的数值为: N2=124023022121120=(13)10,*2.一般化的全加器形式,全加器根据输入端负权的数量可分为四类 0类、1类、2类、3类 常规的一位全加器可假定3个输入和2个输出都是正权,1类全加器、2类全加器,0类全加器、3类全加器,C=XY+YZ+ZX,利用混合型全加器构成直接补码数阵列乘法器 设被乘数A和乘数B是两个5位的二进制补码数: A(a4)a3a2a1a0 B(b4)b3b2b1b0 带负权的符号位a4和b4用括号标注 下面用括号来标注负的被加项,则有:,(a4) a3 a2 a1 a0 A ) (b4) b3 b2 b1 b0 B (a4b0) a3b0 a2b0 a1b0 a0b0 (a4b1) a3b1 a2b1 a1b1 a0b1 (a4b2) a3b2 a2b2 a1b2 a0b2 (a4b3) a3b3 a2b3 a1b3 a0b3 a4b4 (a3b4) (a2b4) (a1b4) (a0b4)_ (p9) p8 p7 p6 p5 p4 p3 p2 p1 p0 P,*3.直接补码阵列乘法器,5位乘5位的直接补码阵列乘法器逻辑原理,5位乘5位的情况下需要 6个0类全加器(右上角) 6个1类全加器(左上角) 8个2类全加器(最下两行) 总数仍为5420个,2类和1类FA具有同样的结构 但使用不同的逻辑符号,解: (0) 1 1 0 1 13 ) (1) 1 0 1 1 5 (0) 1 1 0 1 (0) 1 1 0 1 (0) 0 0 0 0 (0) 1 1 0 1 0 (1)(1)(0)(1)_ 0 (1) 0 1 1 1 1 1 1 = -65 = -127+125+124+123+122+121+120 若用10位二进制数表示结果,则为(1)110111111 = -12928272524+23222120 = -65 (13)(5)65,例 设A补(01101)2,B补(11011)2,求AB补?,2.4 定点除法运算,设有数值位为n位的定点小数(定点整数也同样适用): 被除数, 原码为 原f .n110 除数, 原码为 原f .n110 则有商q/, 原码为 q原(ff)+(0.n110/0.n110) 商的符号qfff;数值部分是两个正数求商,2.4.1 原码除法算法原理,设被除数0.1001,除数0.1011,手算求,0.1 1 0 1 商q 0.1011 0.1 0 0 1 0 (r0),被除数小于除数,上0 0.0 1 0 1 1 21除数右移1位,减除数,上1 0.0 0 1 1 1 0 r1 得余数r1 0.0 0 1 0 1 1 22 除数右移1位,减除数,上1 0.0 0 0 0 1 1 0 r2 得余数r2 0.0 0 0 0 0 0 0 23 除数右移1位,不减除数,上0 0.0 0 0 0 1 1 0 0 r3 得余数r3 0.0 0 0 0 1 0 1 1 24 除数右移1位,减除数,上1 0.0 0 0 0 0 0 0 1 r4 得余数r4 得的商q0.1101,余数为r0.00000001,0.1 1 0 1 商q 0.1011 0.1 0 0 1 (r0)y,上0 1.0 0 1 0 2(r0) 被除数左移1位 + 1.0 1 0 1 减y,加上-y补,上1 0.0 1 1 1 r1 得余数r1 0.1 1 1 0 2 r1 r1左移1位 + 1.0 1 0 1 减y,加上-y补,上1 0.0 0 1 1 r2 得余数r2 0.0 1 1 0 2 r2 r2左移1位 + 0.0 0 0 0 因2 r2 小于y ,上0 0.0 1 1 0 r3 得余数r3 0.1 1 0 0 2 r3 r3左移1位, + 1.0 1 0 1 减y,加上-y补,上1 0.0 0 0 1 r4 得余数r4 商q0.1101,余数为r r4 2-4 0.00012-40.00000001,例:设x=0.1001, y=0.1011, 则 -y补 1.0101, 求,计算机实现时处理方法的改进: 将“被除数和余数不动,除数右移(相当于除2)”改为: 除数不动(小数点固定),被除数和余数左移(相当于乘2),并将上商和余数左移结合起来,具体算法: 恢复余数法 加减交替法,0.1 0 0 1 x +-y补 1.0 1 0 1 减y,加上-y补 1.1 1 1 0 0 余数r1 0,商上1 0.1 1 1 0 余数和商左移一位 +-y补 1.0 1 0 1 2r2 y, 0.0 0 1 1 1 余数r3 0,商上1 0.0 1 1 0 余数和商左移一位 +-y补 1.0 1 0 1 2r3 y, 1.1 0 1 1 0 余数r4 0,商上1,缺点: 运算步数不确定,恢复余数法,01101,规则: (1) 首先进行减法操作 (2) 根据余数的符号确定具体操作及商的值: 若余数为正,说明够减,商上1 若余数为负,说明不够减,商上0,再加上除数(恢复余数) (3) 余数和商左移,重复进行,分析恢复余数法第i+1步的余数ri+1 由前一步的余数ri(初值r0 x) 得到: 若ri0,商上1,左移一位(即乘2) 减y得ri+1,即:ri+12ri-y 若ri0,商上0,并恢复余数(即加y),然后左移一位再做减y的运算,即:ri+12(ri+y) y 2ri y,加减交替法,ri若为负,不必恢复余数,将ri左移一位(乘2)再加上除数y即可直接得ri+1,再由ri+1 的正负决定商的值 由此可得加减交替法的运算规则: 当余数为正时,商上“1”,下一步:余数左移一位,减除数 当余数为负时,商上“0”,下一步:余数左移一位,加除数,0.1 0 0 1 x +-y补 1.0 1 0 1 减y,即加上-y补 1.1 1 1 0 0 余数r1 0,上1 0.1 1 1 0 01 余数和商左移一位后减y +-y补 1.0 1 0 1 2r2 y 0.0 0 1 1 1 余数r3 0,上1 0.0 1 1 0 011 余数和商左移一位减y +-y补 1.0 1 0 1 2r3 y 1.1 0 1 1 0 余数r4 0,上1 01101商;2-40.0001余数,加减交替法实例:x=0.1001, y=0.1011, -y补 1.0101,2.4.2 并行除法器(以不恢复余数阵列除法器为例),加减交替法用可控的加/减法单元(CAS)构成 1.可控加法/减法单元用于并行除法流水逻辑阵列 有四个输入端Ai、Bi、P、Ci和四个输出端Si、 Ci1 、Bi、P 加减控制线 P0,CAS作加法运算;P1作减法运算 CAS单元的输入与输出的关系: SiAi(BiP)Ci Ci1(AiCi)(BiP)AiCi P0时, SiAiBiCi (做加法) Ci1AiBiBiCiAiCi P1时, Si AiBiCi 其中BiBi1 (做减法) Ci1AiBiBiCiAiCi,SiAi(BiP)Ci Ci1(AiCi)(BiP)AiCi,可控加法/减法单元(CAS)逻辑图,CAS单元的输出方程: Si Ai(BiP)Ci AiBiCiPAiBiCiPAiBiCiP AiBiCiPAiBiCiPAiBiCiP AiBiCiPAiBiCiP Ci1(AiCi)(BiP)AiCi AiBiPAiBiPBiCiP BiCiPAiCi Si和Ci+1都能用三级组合逻辑电路实现 每个基本CAS单元的延迟时间为3T,CAS单元的延迟时间分析,思路:每行执行加法还是减法操作,取决于前一行输出的符号与被除数的符号是否一致(两正数相除就是判断部分余数的正负) 部分余数为负时,商上“0”,除数沿对角线右移,加(P=0)到下一行的部分余数上 部分余数为正时,商上“1”,下一行执行减法(P=1) 举例6位除以3位的不恢复余数阵列除法器逻辑原理图 假定所有被处理的数都是正的小数 被除数 0.123456 (双倍长) 除数 0.123 商数 0.q1q2q3 余数 0.00r3r4r5r6,2.不恢复余数(加减交替)的阵列除法器,(b) 6位除以3位阵列除法器逻辑结构图,说明: 被除数是6位的小数(双倍长度值): 0.123456 由顶部一行和最右边的对角线上的垂直输入线提供 除数是3位的小数:0.123 沿对角线进入(用“余数保持固定,除数沿对角线右移”) 商q是3位的小数:q0.q1q2q3 ,在阵列的左边产生 余数r是6位的小数:r0.00r3r4r5r6 ,在阵列的最下一行 单元之间互连用n3的阵列表示,说明: 初始操作经常是减法,故最上面一行的控制线P固定为“1” 减法用2的补码实现,右端各CAS单元上的反馈线用作初始的进位输入;每一行最左边的单元的进位输出决定商的数值;当前的商反馈到下一行确定下一行的操作 (加法还是减法) 运算时,沿着每一行都有进位(或借位)传播,且所有行在进位链上都是串行连接,每个CAS单元的延迟时间为3T,因此,对一个2n位除以n位的不恢复余数阵列除法器来说,单元的数量为(n1)2,考虑最大情况下的信号延迟,除法执行时间为 td3(n1)2T 其中n为尾数位数,例23 0.101001,0.111,求 解: 补0.111 补1.001 被除数 0.1 0 1 0 0 1 +-y补 1.0 0 1 余数为负 1.1 1 0 0 0 1 0 q00 +2-1y补 0.0 1 1 1 余数为正 0.0 0 1 1 0 1 0 q11 +2-2 -y补 1.1 1 0 0 1 余数为负 1.1 1 1 1 1 1 0 q20 +2-3y补 0.0 0 0 1 1 1 余数为正 0.0 0 0 1 1 0 0 q31 故得 商 qq0.q1q2q30.101 余数 r(0.00r3r4r5r6)0.000110,用CAS构成的阵列除法器实现 0.101001 0.111 补0.111 补1.001 0 1 0 1 0 0 1 0 1 0 1 +-y补 1 0 0 1 最高位无进位 1 1 1 0 q00,下次做加法 + y补 0 1 1 1 最高位有进位 0 0 1 1 q11,下次减法 +-y补 1 0 0 1 最高位无进位 1 1 1 1 q20,下次加法 + y补 0 1 1 1 最高位有进位 0 1 1 0 q31 故得 商 qq0.q1q2q30.101 余数 r0.110 2-3=0.000110,0,0,1,2.5 定点运算器的组成,2.5.1 逻辑运算 逻辑运算逻辑非、逻辑加、逻辑乘、逻辑异 1.逻辑非运算(求反) 设一个数表示成:012n 对求逻辑非,则有 012n ii (i0,1,2,n),2.逻辑加运算(逻辑或),记号 “” 设有两数 ,它们表示为 01n 01n +012n ii+i, (i0,1,2,n),例24 101001011, 211110000,求1 , 2 解: 110110100 200001111 例25 10100001,10011011, 求+ 解: 1 0 1 0 0 0 0 1 + 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 即 + 10111011,4.逻辑异运算(按位加),记号“”,设有两数和,它们表示为 01n 01n 012n 其中,ii i ,

温馨提示

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

评论

0/150

提交评论