计算机组成原理第二章运算方法和运算器.ppt_第1页
计算机组成原理第二章运算方法和运算器.ppt_第2页
计算机组成原理第二章运算方法和运算器.ppt_第3页
计算机组成原理第二章运算方法和运算器.ppt_第4页
计算机组成原理第二章运算方法和运算器.ppt_第5页
已阅读5页,还剩193页未读 继续免费阅读

下载本文档

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

文档简介

2020 3 25 计算机组成原理第二章 1 第二章运算方法和运算器 运算器是计算机进行算术运算和逻辑运算的主要部件 运算器的逻辑结构取决于机器的指令系统 数据表示方法和运算方法 返回 2 2020 3 25 计算机组成原理第二章运算方法和运算器 教学目标理解和掌握数据在运算器中的基本运算方法理解运算器核心部件ALU的组成与工作原理教学重点运算器的核心部件 ALU的组成和工作原理定点数和浮点数四则运算 第二章运算方法和运算器 3 2020 3 25 计算机组成原理第二章运算方法和运算器 第二章主要教学内容 数据表示和运算方法是设计实现计算机运算器部件的理论基础 计算机中都使用二进制的信息编码 二进制编码和码制转换是数据运算的数学基础 整数的原码 补码表示是为了简化数据运算的方案 可以简化用到的硬件线路 提高运算速度 数据的检错纠错编码技术是提高硬件可靠性的有效措施 本章核心是计算机的运算器部件 有定点运算器和浮点运算器2种类型 是实现数据运算的执行部件 重点学习定点运算器 由完成算术与逻辑运算的电路ALU和暂存运算数据和中间结果的寄存器组REGs 保存结果特征状态的Flag寄存器这3个主要部分组成 一般了解浮点运算器的组成和浮点数的运算方法 2020 3 25 4 第二章运算方法和运算器 2 1数据与文字的表示2 2定点加法 减法运算2 3定点乘法运算2 4定点除法运算2 5定点运算器的组成2 6浮点运算与浮点运算器 返回 5 2020 3 25 计算机组成原理第二章运算方法和运算器 2 1数据与文字的表示方法 1数字信息和二进制编码知识 1 二进制编码知识 2 字符的表示 3 汉字的表示 4 校验码2数的机器码表示 6 2020 3 25 计算机组成原理第二章运算方法和运算器 2 1数据与文字的表示方法 计算机中使用的数据分成两大类符号数据 非数字符号的表示 ASCII 汉字 图形等 数值数据 数字数据的表示方式 定点 浮点 计算机数字和字符的表示方法应有利于数据的存储 加工 处理 传送 编码 用少量 简单的基本符号 选择合适的规则表示尽量多的信息 同时利于信息处理 速度 方便 7 2020 3 25 计算机组成原理第二章运算方法和运算器 复习 数字信息和二进制编码知识 数值 文字 符号 语音和图形等统称信息 在计算机内部 信息都必须用数字化的形式被存储 加工和传送 不同信息要通过编码来表示 数字化信息编码的二个要素 少量简单的基本符号一定的组合规则计算机中普遍选用两个基本点符号 优点是 基本符号个数最少 物理上容易实现二进制码表示数值数据运算规则简单与二值逻辑的真 假两个值对应简单 8 2020 3 25 计算机组成原理第二章运算方法和运算器 二进制数据算术运算规则 2 减法运算规则0 0 00 1 1并产生借位1 0 11 1 0 1 加法运算规则0 0 00 1 11 0 11 1 0并产生进位 例如 0101 0001 0110 例如 1011 0101 0110 0110 9 2020 3 25 计算机组成原理第二章运算方法和运算器 二进制数据算术运算规则 乘法运算规则例如 11010 0 0 01010 1 011011 0 000001 1 111011000001 除法运算规则0101例如 110110000011000001 1101 010111010110111010 10 2020 3 25 计算机组成原理第二章运算方法和运算器 逻辑型数据基本运算规则 一个二进制数位可以用来表示一个二值逻辑型的数据 更准确的说法应该是一位基二码而不是二进制的数位 因为逻辑型数据并不存在进位关系 这里的与 或 非逻辑可以用与门 或门 非门电路实现 11 2020 3 25 计算机组成原理第二章运算方法和运算器 数制与进位记数法 基r数制的概念只用r个基本符号 例如0 1 2 r 1 通过排列起来的符号串表示数值 r称为该数制的基 数值N的表示N Dm 1Dm 2 D1D0D 1D 2 D k有权的基r数制每个Di k i m 1 的单位值都赋以固定的值Wi 则称Wi为该位的权 N代表的实际值可表示为 12 2020 3 25 计算机组成原理第二章运算方法和运算器 数制与进位记数法 若逢r进位 有Wi ri 则N代表一个数值r是这个数制的基i表示这些符号排列的位号Di是位序号为i的位上的一个符号ri是位序号为i的位上的一个1代表的值Di ri是第i位的符号所代表的实际值 表示对m k位的值求累加和称此数制为r进位数制 简称r进制 最常用的有二进制 八进制 十六进制和十进制这4种 ri 13 2020 3 25 计算机组成原理第二章运算方法和运算器 数制与进位记数法 计算机中常用的4种进位数制二进制 r 2 基本符号 01八进制 r 8 基本符号 01234567十进制 r 10 基本符号 0123456789十六进制 r 16 基本符号 0123456789ABCDEF其中A F表示十进制数10 154种进位数制之间的关系 二进制用于计算机内部 八和十六进制是二进制的缩写 十进制用于人员 14 2020 3 25 计算机组成原理第二章运算方法和运算器 二进制数 八 十六和十进制 二进制数转换为十进制数 累加二进制数中全部数值为1的那些位的位权 1101 1100 2 1 23 1 22 0 21 1 20 10 1 2 1 1 2 2 0 2 3 0 2 4 10 13 75 10把二进制数转换成八或十六进制数时 从小数点向左和向右把每3或者4个二进制位分成一组 直接写出每一组所代表的数值 小数点后不足位数补0 1101 1001 2 D 9 16 15 44 8 而不是 15 41 8 15 2020 3 25 计算机组成原理第二章运算方法和运算器 数制与进位记数法 二进位数和十进制数之间的转换方法二进制 r 2 基本符号 01十进制 r 10 基本符号 0123456789求二进制数所对应的十进制数值 可通过进位记数公式来计算 即把取值为1的数位的位权累加 把十进制数转换为二进制 对整数部分通过除2取余数来完成 对小数部分通过乘2取整数来完成 213 1低位0 76 226 010 52 2高位23 110 04 221 1高位00 08 2000 16低位 13 10 1101 2 0 76 10 0 1100 2 16 2020 3 25 计算机组成原理第二章运算方法和运算器 基二码应用实例 数据表示 1 逻辑型数据 2 字符型数据ASCII码EBCDIC码字符串汉字 3 数值型数据定点小数整数浮点数二 十进制数 BCD码 17 2020 3 25 计算机组成原理第二章运算方法和运算器 1 逻辑型数据 逻辑型数据只有两个值 真和假 正好可以用二进制码的两个符号分别表示 例如1表示真则0表示假不必使用另外的编码规则 对逻辑型数据可以执行逻辑的与或非等基本逻辑运算 其规则如下 18 2020 3 25 计算机组成原理第二章运算方法和运算器 逻辑型数据基本运算规则 一个二进制数位可以用来表示一个二值逻辑型的变量 更准确的说法应该是一个基二码位而不是二进制的数位 因为逻辑型数据不存在进位关系 这里的与 或 非逻辑可以用与门 或门 非门电路实现 19 2020 3 25 计算机组成原理第二章运算方法和运算器 2 字符型数据的表示 字符作为人 机联系的媒介 是最重要的数据类型之一 当前的西文字符集由128个符号组成 通常用8位二进制编码 即用一个字节来表示一个符号 常用的两个标准字符集是 ASCII码 即AmericanStandardCodeforInformationInterchangeEBCDIC码 即ExtendedBinaryCodedDecimalInterchangeCodeASCII码字符集具体编码如下表所示 20 2020 3 25 计算机组成原理第二章运算方法和运算器 ASCII码字符集 21 2020 3 25 计算机组成原理第二章运算方法和运算器 字符串的表示与存储 字符串是指连续的一串字符 它们占据主存中连续的多个字节 每个字节存放一个字符 对一个主存字的多个字节 有按从低位到高位字节次序存放的 也有按从高位到低位字节次序存放的 表示字符串数据要给出串存放的主存起始地址和串的长度 例如 IFA BTHENREAD C 就可以有如下不同存放方式 IFAAFI BTTB HENNEHREADDAER C C 假定每个字由4个字节组成 22 2020 3 25 计算机组成原理第二章运算方法和运算器 字符串的表示与存储 0 87 1615 2423 31 按从低位到高位字节次序存放 16进制数据 23 2020 3 25 计算机组成原理第二章运算方法和运算器 汉字的内码表示 通常用两个字节表示一个汉字 为了与西文字符编码相区别 西文的ASCII码的最高一位编码值为0 表示一个汉字时 把两个字节的最高一位的编码值设定为1 则该编码集的最多编码数量为128 128 这种编码方案与西文传送中的把ASCII码的最高一位用作奇偶校验位有矛盾 24 2020 3 25 计算机组成原理第二章运算方法和运算器 汉字的表示方法 汉字内码内码是用于汉字信息的存储 交换 检索等操作的机内代码 它一般采用两个字节的二进制形式表示一个汉字 汉字输入编码输入编码是为了使用西文标准键盘把汉字输入到计算机中 其编码方法主要有数字编码 拼音码和字形编码三类 汉字字模编码字模编码是以点阵方式用来描述汉字字形的代码 它是汉字的输出形式 25 2020 3 25 计算机组成原理第二章运算方法和运算器 UNICODE编码 Unicode是完全双字节表示的多国文字编码体系 编码空间0 x0000 0 xFFFF 可以表示65536个字符 ISO10646 1汉字标准使用编码0 x4E00 9FA5 共包含20902个汉字 将整个编码空间划分为块 每块为16的整数倍 按块进行分配 并无法覆盖所有字符 26 2020 3 25 计算机组成原理第二章运算方法和运算器 数值数据在计算机内的格式 定点小数 N NNN N s 1 n 2 整数 N NN NN 0 1 s n 1 浮点数 N MEE EEMM M s s m 1 1 0 1 2 n 符号位阶码位尾数数码位总位数 短浮点数 182332 长浮点数 1115264 临时浮点数 1156480 IEEE标准 阶码用移码尾数用原码 基为2 27 2020 3 25 计算机组成原理第二章运算方法和运算器 数值范围和数据精度 数值范围数值范围是指一种类型的数据所能表示的最大值和最小值 数据精度通常指实数所能给出的有效数字位数 对浮点数来说 精度不够会造成误差 误差大量积累会出问题 机内处理数值范围与数据精度概念不同 在计算机中 它们的值与用多少个二进制位表示某种类型的数据 以及怎么对这些位进行编码有关 28 2020 3 25 计算机组成原理第二章运算方法和运算器 二十进制码 BCD码 用4位二进制表示1位十进制数 一个多位的十进制数被表示为这种编码的数串 16个编码状态中选用其中的10个编码有多种不同的方案 例如 8421码 余3码 格雷码 可以进一步分为有权码和无权码 有权码 每位上的1代表确定的值无权码 无法确定每位上的1代表的值 29 2020 3 25 计算机组成原理第二章运算方法和运算器 0000000110000100010100000120010010100113001101100010401000111011050101100011106011010011010701111010100081000101111009100111000100 有权码无权码 8421 余3码 格雷码 30 2020 3 25 计算机组成原理第二章运算方法和运算器 如何判定码权 00000101114 2 1 201104 2 要验证每个码的值301014 1 401004从一编码求码权510118 2 1 61010 2结论71001 1证明此编码系统为有权码810008911118 4 2 1 31 2020 3 25 计算机组成原理第二章运算方法和运算器 如何判定码权 000112 1 0验证各码的值101001从一编码求码权201011301102401115100061001结论71010证明此编码系统为无权码8101191100 32 2020 3 25 计算机组成原理第二章运算方法和运算器 数值数据在计算机内的格式 定点小数 N NNN N s 1 n 2 整数 N NN NN 0 1 s n 1 浮点数 N MEE EEMM M s s m 1 1 0 1 2 n 符号位阶码位尾数数码位总位数 短浮点数 182332 长浮点数 1115264 临时浮点数 1156480 IEEE标准 阶码用移码尾数用原码 基为2 33 2020 3 25 计算机组成原理第二章运算方法和运算器 数值数据的编码和运算算法 二进制数值数据的类型二进制表示的定点小数 整数和浮点数数值数据编码目标能方便统一地表示正数 零和负数 并且尽可能有利于简化对它们实现算术运算用到的规则 数据符号的正与负 可用一位二进制的0和1两个状态加以表示 数据数值用多位二进制表示 常用的编码方案原码表示 补码表示 反码表示 2020 3 25 34 2 1 1数据格式 1 数值数据计算机在数据 文字的表示方式时 应该考虑以下几个因素 表示的数据类型 符号 小数点 数值 数值的范围数值精度存储 处理 传送的硬件代价 2020 3 25 35 2 1 1数据格式 2 计算机常用的数据表示格式定点表示 小数点位置固定浮点表示 小数点位置不固定 2020 3 25 36 2 1 1数据格式 3 定点表示法所有数据的小数点位置固定不变理论上位置可以任意 实际上有两种方法纯小数纯整数定点数表示带符号数不带符号数 2020 3 25 37 1 定点纯小数 xnxn 1xn 2 x1x0表示数的范围是0 1 2 n 符号 量值 小数点固定于符号位之后 不需专门存放位置 2 1 1数据格式 2020 3 25 38 2 1 1数据格式 2 纯小数的表示范围 2020 3 25 39 2 1 1数据格式 3 定点纯整数xnxn 1xn 2 x1x0表示数的范围是0 2n 1 符号 量值 小数点固定于最后一位之后 不需专门存放位置 2020 3 25 40 2 1 1数据格式 4 定点表示法的特点定点数表示数的范围受字长限制 表示数的范围有限 定点表示的精度有限 机器中 常用定点纯整数表示 相应的运算称为整数运算 2020 3 25 41 2 1 1数据格式 4 浮点表示 小数点位置随阶码不同而浮动 1 格式 N RE M 2 机器中表示 指数E 基数R 取固定的值 比如10 2等 尾数M 2020 3 25 42 2 1 1数据格式 3 IEEE754标准规则规定了单精度 32 和双精度 64 的基本格式 规则中 尾数用原码 指数用移码 2020 3 25 43 2 1 1数据格式 IEEE754标准基数R 2 基数固定 采用隐含方式来表示它 32位的浮点数S是数的符号位 1位 在最高位 0 表示正数 1 表示负数 M是尾数 23位 在低位部分 采用纯小数表示 E是阶码 8位 采用移码表示 2020 3 25 44 规格化 若不对浮点数的表示作出明确规定 同一个浮点数的表示就不是惟一的 尾数域最左位 最高有效位 总是1 故这一位经常不予存储 而认为隐藏在小数点的左边 采用这种方式时 将浮点数的指数真值e变成阶码E时 应将指数e加上一个固定的偏移值127 01111111 即E e 127 2 1 1数据格式 2020 3 25 45 2 1 1数据格式 64位的浮点数中符号位1位 阶码域11位 尾数域52位 指数偏移值是1023 因此规格化的64位浮点数x的真值为 x 1 S 1 M 2E 1023 e E 1023一个规格化的32位浮点数x的真值表示为x 1 S 1 M 2E 127 e E 127 2020 3 25 46 2 1 1数据格式 真值x为零表示 当阶码E为全0且尾数M也为全0时的值 结合符号位S为0或1 有正零和负零之分 真值x为无穷大表示 当阶码E为全1且尾数M为全0时 结合符号位S为0或1 也有 和 之分 2020 3 25 47 2 1 1数据格式 在32位浮点数表示中 要除去E用全0和全1 25510 表示零和无穷大的特殊情况 指数的偏移值不选128 10000000 而选127 01111111 对于规格化浮点数 E的范围变为1到254 真正的指数值e则为 126到 127 因此32位浮点数表示的绝对值的范围是10 38 1038 以10的幂表示 2020 3 25 48 2 1 1数据格式 浮点数所表示的范围远比定点数大 一台计算机中究竟采用定点表示还是浮点表示 要根据计算机的使用条件来确定 一般在高档微机以上的计算机中同时采用定点 浮点表示 由使用者进行选择 而单片机中多采用定点表示 2020 3 25 49 2 1 1数据格式 例1 若浮点数x的754标准存储格式为 41360000 16 求其浮点数的十进制数值 解 将16进制数展开后 可得二制数格式为010000010 01101100000000000000000S阶码 8位 尾数 23位 指数e 阶码 127 10000010 01111111 00000011 3 10包括隐藏位1的尾数1 M 1 01101100000000000000000 1 011011 于是有 x 1 S 1 M 2e 1 011011 23 1011 011 11 375 10 2020 3 25 50 2 1 1数据格式 例2 将数 20 59375 10转换成754标准的32位浮点数的二进制存储格式 解 首先分别将整数和分数部分转换成二进制数 20 59375 10100 10011然后移动小数点 使其在第1 2位之间 10100 10011 1 010010011 24e 4于是得到 S 0 E 4 127 131 M 010010011最后得到32位浮点数的二进制存储格式为 01000001101001001100000000000000 41A4C000 16 2020 3 25 51 2 1 2数的机器码表示 机器数与真值二进制数也有正负之分 如A 1011 B 0 1110 机器并不能表示 引入符号位 即用一位二进制数对符号进行数字化 真值 一般书写的数 符号用 表示 机器数 机器中表示的数 对符号进行数字化 数的符号数字化后 是否参加运算 符号参加运算后数值部分有如何处理呢 计算机内有原码 补码 反码种机器数形式 还有专门用于阶的移码形式 2020 3 25 52 1 原码表示法 基本思想用0和1在原来的 位置上简单取代 又称符号 绝对值表示法 例 1010110 原 01010110 1010110 原 11010110 0 1010110 原 0 1010110 0 1010110 原 1 1010110 2020 3 25 53 1 原码表示法 定点小数xn xn 1 x1x0 x1 x 00 正 x 原 符号1 x 0 x 11 负数例 x 0 11001110 x 原 0 11001110 x 原 1 11001110 2020 3 25 54 1 原码表示法 定点整数xnxn 1 x1x0 x2n x 00 正数 x 原 符号2n x 0 x 2n1 负数有正0和负0之分 00 00 原 000 00 00 00 原 100 00 2020 3 25 55 1 原码表示法 例 假设机器字长为16位 求 1010110 1010110 0 1010110 0 1010110的原码 1010110 原 00000000011001110 1010110 原 10000000011001110 0 1010110 原 0 1100111000000000 0 1010110 原 1 1100111000000000 2020 3 25 56 1 原码表示法 原码特点 表示简单 易于同真值之间进行转换 实现乘除运算规则简单 进行加减运算十分麻烦 2020 3 25 57 2 补码表示法 引入 补 以时钟为例 假设现在时针指向3 要想让其指向9 有两种办法 让时针顺时针转6个刻度 可表示为 3 6 9让时针逆时针转6个刻度 可表示为 3 6 9为什么加一个数和减一个数会等价呢 因为钟盘只有12个刻度 是有限的 结论 在计数系统容量有限的前提下 加一个数和减一个数可以等价 且它们的绝对值之和就等于这个计数系统的容量 计数系统容量在计算机科学中称之为 模 2020 3 25 58 2 补码表示法 7 5 mod12 1011 0101 mod24 7 93 mod100 这里的 7与 5 1011与 0101 7与 93互称为在模12 24 和100下的补数 电子计算机系统是一种有限字长的数字系统 因此 它的所有运算都是有模运算 运算过程中超过模的部分会自然丢失 补码的设计就是利用了有模运算的这种溢出特点 把减法变成了加法 2020 3 25 59 2 补码表示法 为了简化减法运算 在运算过程中 正数保持不变 负数用它的正补数来代替 描述如下 xx 0 x 补 x的正补数x 0考虑到互为补数的两个数的绝对值之和为计数系统的模 有可进一步描述为 xx 0 x 补 模 x x 0 2020 3 25 60 2 补码表示法 定义 正数的补码就是正数的本身 负数的补码是原负数加上模 计算机运算受字长限制 属于有模运算 定点小数 xn xn 1 x1x0溢出量为2 以2为模定点整数 xnxn 1 x1x0溢出量为2n 1 以2n 1为模定点小数 xn xn 1 x1x0 x1 x 0 x 补 mod2 2 x 0 x 1 2020 3 25 61 2 补码表示法 例 x 0 1011 x 补 10 x 10 0000 0 1011 1 0101y 0 01111 y 补 10 y 10 00000 0 01111 1 10001定点整数 xnxn 1 x1x0 x2n x 0 x 补 mod2n 1 2n 1 x 0 x 2n 2020 3 25 62 2 补码表示法 求负数补码的方法按补码的数学定义求 从真值低位向高位检查 遇到0的时候照写下来 直到遇到第一个1 也照写下来 第一个前面的各位按位取反 符号为填1 对其数值位各位按位取反 末位加1 符号位填1 正数的补码真值的符号位变1 数值位不变 2020 3 25 63 2 补码表示法 补码性质最高位表明正负正数补码 尾数与原码相同范围 2n 2n 1 定点整数 无正零和负零之分变相补码 双符号补码 为了防止溢出而设定 2020 3 25 64 2 补码表示法 补码的运算补码的符号参与运算加法只需把两个数先求补码 再把补码相加就可得到和的补码 减法只需对被减数求补码 减数取负之后再求补码 相加即可得到差的补码 结论 一律做加法 2020 3 25 65 2 补码表示法 例如 X 11 10 1011 2Y 5 10 0101 2已知字长n 5位 求 x y 补解 x y 补 X 补 Y 补 X 补 Y 补 X 补 01011 y 补 11011 x y 补 01011 11011 100110 00110 6 10注 最高1位已经超过字长故应丢掉 2020 3 25 66 3 反码表示法 定义 正数的表示与原 补码相同 负数的补码符号位为1 数值位是将原码的数值按位取反 就得到该数的反码表示 电路容易实现 触发器的输出有正负之分 2020 3 25 67 3 反码表示法 对尾数求反 它跟补码的区别在于末位少加一个1 所以可以推出反码的定义 定点小数 xn xn 1 x1x0 x1 x 0 x 反 2 x 2 n0 x 1X 0 1011011 X 反 0 1011011X 0 1011011 X 反 1 0100100 2020 3 25 68 3 反码表示法 x 补 x 反 2 n反码表示有正0和负0之分上述公式解决了前边的问题 求补码还要减法 2020 3 25 69 4 移码表示法 移码表示法定点整数定义 x 移 2n x2n x 2n00000000 11111111 2n 2n 1 例 1011111原码为01011111补码为01011111反码为01011111移码为11011111 2020 3 25 70 4 移码表示法 例 1011111原码为11011111补码为10100001反码为10100000移码为00100001特点 移码和补码尾数相同 符号位相反 范围 2n 2n 1P22浮点IEEE754表示e 127 12800000000阶码表示数字 0 尾数的隐含位为011111111阶码表示数字 无穷大 尾数的隐含位为0P22例6 2020 3 25 71 例6 以定点整数为例 用数轴形式说明原码 反码 补码表示范围和可能的数码组合情况 2020 3 25 72 例7 将十进制真值 127 1 0 1 127 列表表示成二进制数及原码 反码 补码 移码值 2020 3 25 73 例8 设机器字长16位 定点表示 尾数15位 数符1位 问 1 定点原码整数表示时 最大正数是多少 最小负数是多少 2 定点原码小数表示时 最大正数是多少 最小负数是多少 1 定点原码整数表示最大正数值 215 1 10 32767 10最小负数值 215 1 10 32767 10 2 定点原码小数表示最大正数值 1 2 15 10 0 111 11 2最小负数值 1 2 15 10 0 111 11 2注 1符号 数字 2020 3 25 74 例9假设由S E M三个域组成的一个32位二进制字所表示的非零规格化浮点数 真值表示为 非IEEE754标准 1 s 1 M 2E 128问 它所表示的规格化的最大正数 最小正数 最大负数 最小负数是多少 1 最大正数 1 1 2 23 212701111111111111111111111111111111 2 最小正数 1 0 2 12800000000000000000000000000000000 3 最小负数 1 1 2 23 212711111111111111111111111111111111 4 最大负数 1 0 2 12810000000000000000000000000000000 2020 3 25 75 2 2定点加法 减法运算 2 2 1补码加减法2 2 2溢出检测2 2 3基本的加法和减法器2 2 4十进制加法器 2020 3 25 76 2 2 1补码加减法 补码加法公式 x y 补 x 补 y 补补码减法公式 x y 补 x 补 y 补为了求得 y 补 需要证明 y 补 乛 y 补 2 n 2020 3 25 77 补 补 补证明 假设 1 1 1现分四种情况来证明 1 0 0 则 0 补 x 补 y 补 x y所以等式成立 2020 3 25 78 补 补 补证明 2 0 0 则 0或 0时 2 2 进位2必丢失 又因 0 故 补 补 补当 0时 2 2 又因 0 故 补 补 2 补所以上式成立 2020 3 25 79 补 补 补证明 4 0 0 则 0相加两数都是负数 则其和也一定是负数 补 2 补 2 补 补 2 2 2 2 上式右边分为 2 和 2 两部分 既然 是负数 而其绝对值又小于1 那么 2 就一定是小于2而大于1的数 进位 2 必丢失 又因 0 所以 补 补 2 补 2020 3 25 80 2 2 1补码加减法 如 y 0 0111 y 补 0 0111 y 补 1 1001 从右边到左边 除了第一个1和右边的0保持不变以外 其它按位取反 很重要 2020 3 25 81 2 2 1补码加减法 例 x 0 1011 y 0 0111 x 补 1 0101 y 补 0 0111 x y 补 x 补 y 补 1 0101 0 0111 1 1100 x y 0 0100例 x 0 11011 y 0 11111 x 补 0 11011 y 补 1 00001 y 补 0 11111 x y 补 x 补 y 补 1 11010 2020 3 25 82 2 2 2溢出的检测 溢出的检测可能产生溢出的情况两正数加 变负数 上溢 大于机器所能表示的最大数 两负数加 变正数 下溢 小于机器所能表示的最小数 2020 3 25 83 2 2 2溢出的检测 课堂作业 例3 0 1011 0 1001 求 例4 0 1101 0 1011 求 2020 3 25 84 2 2 2溢出的检测 1 检测方法 1 双符号位法 参与加减运算的数采用变形补码表示 x2 x 0 x 补 4 x0 x 2Sf1Sf200正确 正数 01上溢10下溢11正确 负数 Sf1表示正确的符号 逻辑表达式为V Sf1 Sf2 可以用异或门来实现 2020 3 25 85 2 2 2溢出的检测 2 检验举例 0 1100 0 1000 求 0 1100 0 1000 求 结果出现了01或10的情况就为溢出 2020 3 25 86 2 2 2溢出的检测 2 单符号位法CfC000正确 正数 01上溢10下溢11正确 负数 V Cf C0其中Cf为符号位产生的进位 C0为最高有效位产生 2020 3 25 87 2 2 3基本的加法和减法器 基本的加法和减法器半加器Hi Ai Bi不考虑进位全加器考虑低位进位Ci 1和向高位的进位Ci 2020 3 25 88 FA逻辑电路和框图 FA 全加器 逻辑电路图FA框图 2020 3 25 89 一位全加器真值表 2020 3 25 90 FA逻辑方程 因为 Ci 1 2020 3 25 91 FA逻辑方程 逻辑方程 2020 3 25 92 n位行波进位加法器 2020 3 25 93 2 3定点乘法运算 2 3 1定点原码乘法2 3 2定点补码乘法 2020 3 25 94 2 3定点乘法运算 实现乘除法运算的方案 1 当使用乘除运算较多 速度要求高时 用硬件直接实现 2 一般情况 配置乘除法选件在现有的加法和减法器的基础上增加适当的线路及控制逻辑可以实现用LSI和VLSI工艺实现专用的乘法器 3 对速度要求不高的机器 用软件实现编制子程序 单片机等低端机器 2020 3 25 95 0原码一位乘法 算法描述设 X 原 Xs Xn 1Xn 2 Xi X1X0 Xs Xv Y 原 Ys Yn 1Yn 2 Yi Y1Y0 Ys Yv则乘积 X Y 原 Z 原 Zs Zv Xs Ys Xv Yv 2020 3 25 96 0原码一位乘法 运算步骤 1 从乘数的最低位开始 用乘数B的每个二进制位去乘被乘数A 若B的某个二进制位为1 则得位积A 如为0 则得位积0 2 B的各位分别乘以A的所得的位积 因为位权不同 逐次向左移位 即在空间上按一定位数错开 这样逐位进行下去 直到乘数各位都乘完为止 3 把经过移位对准的各次位积相加起来即得结果 2020 3 25 97 0原码一位乘法 缺点 1 将多个数一次相加 机器难以实现 一般的加法器 只能把两个输入数相加 多个位积的同时输入是无法实现的 2 乘积位数增长一倍 即2n 而机器字长只有n位 改进 1 把一次求和操作 变成逐步累加求部分积的操作 2 将求积过程中逐位按权左移位积的操作 改为位积不动 而是上次部分积右移的操作 2020 3 25 98 0原码一位乘法 手算方法例如求A 0 1101和B 0 0110的乘积机器算法若用Zi表示第i次部分积 则Z0 0Z1 2 1 BnA Z0 Z2 2 1 Bn 1A Z1 Zi 2 1 Bn i 1A Zi 1 Zn 2 1 B1A Zn 1 Zn即为A和B的乘积 即A B Zn 2020 3 25 99 0原码一位乘法 例 已知X 0 1011 Y 0 1001 求 X Y 原解 X 原 1 1011 Y 原 0 1001 X 0 1011 Y 0 1001按原码一位乘法运算规则 求 X Y 原的数值部分 X Y 0 01100011 而Zs Xs Ys 1 0 1最后求得 X Y 原 1 01100011 2020 3 25 100 例 原码一位乘法运算过程 2020 3 25 101 原码一位乘法逻辑结构原理图 2020 3 25 102 0原码一位乘法 工作原理 1 乘法开始时 启动 信号使控制触发器Cx置 1 于是开启时序脉冲T 2 当乘数寄存器R1最末位为 1 时 部分积Zi和被乘数X在加法器中相加 其结果输出至R0的输入端 3 一旦打入控制脉冲T到来 控制信号LDR0使部分积右移一位 与此同时 R1也在控制信号LDR1作用下右移一位 且计数器i计数一次 4 当计数器i n时 计数器的溢出信号使触发器Cx置 0 关闭时序脉冲T 乘法宣告结束 若将R0和R1连接起来 乘法结束时乘积的高n位部分在R0 低n位部分在R1 R1中原来的乘数Y由于移位而全部丢失 2020 3 25 103 00补码一位乘法 校正法 X 补与真值的关系设 X 补 X0 X1X2 Xn 则有设 X 补 2X0 X证明 当X为正时 X 补 2X0 X X当X为负时 X 补 2 X 2X0 X 根据定义 由此可得 X X 补 2X0 X0 X1X2 Xn 2X0 X0 0 X1X2 Xn即X为正时 X0 0 真值X X 补 X为负时 X0 1 真值X 1 0 X1X2 Xn故可推出 当Y为负时 XY X 1 0 Y1Y2 Yn X 0 Y1Y2 Yn X可以得到 X Y 补 X 补 0 Y1Y2 Yn X 补 2020 3 25 104 00补码一位乘法 校正法 校正法的思想先将任意两个补码 X 补 Y 补看作是一般的二进制数 仍按原码运算规则求得 X 补 Y 补 然后对其结果加以校正 而获得 X Y 补之值 当乘数Y为正时 与原码乘法相似 只是在部分积相加 右移操作时 按补码性质进行 当乘数为负时 先不考虑乘数的符号 将乘数补码的数值部分与被乘数相乘 最后进行校正操作 即加上 X 补 设 Y 补 Ys Y1Y2 Yn 我们用一个公式表示补码校正法的算法规则 X Y 补 X 补 0 Y1Y2 Yn X 补 Ys当Ys 0时 X Y 补 X 补 0 Y1Y2 Yn 当Ys 1时 X Y 补 X 补 0 Y1Y2 Yn X 补 2020 3 25 105 00补码一位乘法 比较法 布斯夫妇提出 又称Booth乘法 是对校正法的改进 不论乘数为正为负 符号位都参加运算 其运算规则统一 假设X Y都是用补码形式表示的机器数 X 补和 Y 补 YS Y1Y2 Yn 都是任意符号表示的数 求新的部分积 取决于两个比较位的数位 即Yi 1Yi的状态 2020 3 25 106 00补码一位乘法 比较法 布斯乘法规则 1 设置附加位Yn 1 0 部分积初值 Z0 补 0 2 当n 0时 判YnYn 1 若YnYn 1 00或11 即相邻位相同时 上次部分积右移一位 直接得部分积 若YnYn 1 01 上次部分积加 X 补 右移一位得新部分积若YnYn 1 10 上次部分积加 X 补 右移一位得新部分积 3 当n 0时 判YnYn 1 对应于Y0Y1 运算规则同 1 只是不移位 即在运算的最后一步 乘积不再右移 2020 3 25 107 00补码一位乘法 比较法 例 X 补 0 1001 Y 补 1 1011 求 X Y 补解 X 补 1 0111 X Y 补 1 11010011 2020 3 25 108 例 补码乘法运算过程 2020 3 25 109 1 定点原码乘法原理 n位乘n位积可能为2n位 乘积的最后是所有部分积之和 有n个数相加 而FA只有两个输入端 所以需要改造 方法一 硬件实现方法 串行的 加法和移位 硬件结构简单 速度太慢 时间延迟太长 方法二 不带符号位的阵列乘法器 2020 3 25 110 1 定点原码乘法原理 设 0 1101 0 1011求x y部分积乘数部分积初始化为 0 000001011部分积右移 前面补 X0 1101乘数最低位为 加上被乘数 0110101011部分积右移 前面补 0 011010101乘数最低位为 加上被乘数 X01101 1001110101部分积右移 前面补 0100111010乘数最低位为 加上 000000 0100111010部分积右移 前面补 0010011101乘数最低位为 加上被乘数 X01101 1000111101部分积右移 前面补 0 100011110运算四次结束 数值部分运算 2020 3 25 111 2 不带符号位的阵列乘法器 不带符号阵列乘法器逻辑图 2020 3 25 112 2 不带符号位的阵列乘法器 2020 3 25 113 3 带符号位的阵列乘法器 求补电路 2020 3 25 114 3 带符号的阵列乘法器 求补电路小结E 0时 输入和输出相等E 1时 则从数最右端往左边扫描 直到第一个1的时候 该位和右边各位保持不变0 A A 左边各数值位按位取反1 A 乛A可以用符号作为E的输入原 1 11110补 1 00010时间延迟分析 转换n 1位带符号的时间延迟为t n 2T 5T 其中n 2T为或门延迟时间 5T为最高位与门和异或门的时延 不变 左边数值位取反 2020 3 25 115 3 带符号的阵列乘法器 间接法 原码 补码 2020 3 25 116 举例 P36 例20 用带求补器原码乘法器 输入 出 原码 Y 15 13 例21 用带求补器补码乘法器 输入 出 补码 Y 15 13 2020 3 25 117 2 4定点除法运算 0 1101商q0 10110 10010 r0 被除数 0 010112 1 除数右移1位 减除数0 001110r1得余数r1 0 0010112 2 除数右移1位 减除数0 0000110r2得余数r2 0 00010112 3 除数右移1位 不减除数0 00001100r3得余数r3 0 000010112 4 除数右移1位 减除数 0 00000001r4得余数r4 1 定点原码一位除法实现方案 2020 3 25 118 定点原码除法的流程图 R0 0 第 8 次循环 3a 商 1 3b R0 R2 R0 商 0 4 R0 R1 左移 1 R0 R1 左移 商 0 2 R0 R2 R0 5 R0 右移 Y N N Y R0 R1被除数 余数 商R2除数最后一步余数是负数 需要修正再加上除数 2020 3 25 119 2 不恢复余数的除法 加减交替法 不恢复余数法 当i 1次求商的余数为正时 下一次求商的办法是Ri 2Ri Y若Ri 0时 则I位上商0 而恢复余数作加法Ri Y 下一次即I 1次求商作减法时Ri 1 2 Ri Y Y 2Ri Y上述式子表明 当某一次商差为负时 本次商0 继续求下一位商不必恢复余数 而直接将商的差值左移动一位 在加Y的办法得到 2020 3 25 120 2 不恢复余数的除法 法则余数为正 商1 求下一位商的办法是余数左移 减除数余数为负 商0 求下一位商的办法是余数左移 加除数若最后余数与被除数X异号 则需要纠余 增加如下操作 若X Y同号 用 Y纠余 若X Y异号 用 Y纠余 例 x 0 1011y 0 1101求x y x 补 001011 y 补 001101 y 补 2020 3 25 121 00101100000开始110011 y11111000000为负 商011110000000左移一位001101 y00100100001为正 商101001000010左移一位110011 y00010100011为正 商100101000110左移一位110011 y11110100110为负 商011101001100左移一位001101 y00011101101为正 商1 被除数 商 说明 2020 3 25 122 2 不恢复余数的除法 则x y 0 1101余数为0 0111 2 4 左移了4次 小结判断溢出 0 商的符号由被除数的符号和除数的符号共同决定 被除数的位数可以是除数位数的两倍 地位开始放于商的寄存器中 最后一步余数是负数 需要修正再加上除数 移位 直到为正 2020 3 25 123 可控的加法 减法单元CAS单元P 0 作加法运算P 1 作减法运算 2020 3 25 124 x y除数右移代替部分积左移商Q 0 q3q2q1余数R 0 00r6r5r4r3 2020 3 25 125 例23 p44 0 101001 0 111 求 解 补 1 001除数右移被除数 0 101001减 1 001余数为负1 110001 0q0 0加 0 0111余数为正0 001101 0q1 1减 1 11001余数为负1 111111 0q2 0加 0 000111余数为正0 000110 0q3 1故得商q q0 q1q2q3 0 101余数r 0 00r3r4r5r6 0 000110 2020 3 25 126 2 5定点运算器的组成 2 5 1逻辑运算2 5 2多功能算术 逻辑运算单元ALU2 5 3内部总线2 5 4定点运算器的基本结构 2020 3 25 127 2 5 1逻辑运算 逻辑非逻辑加逻辑乘逻辑异 2020 3 25 128 2 5 2多功能算术 逻辑运算单元ALU ALU即算术逻辑单元 它是既能完成算术运算又能完成逻辑运算的部件 无论加 减 乘 除运算 最终都能归结为加法运算 ALU的核心是一个并行加法器 添加执行逻辑运算功能 2020 3 25 129 1 设计支持 功能的ALU线路 一位的ALU的线路设计 1 首先画出其组成示意图 输入数据A B加减进位输入Cin加减进位输出Cout3种运算用3部分电路运算结果S 3选1得到运算功能选择控制 选择B或 B的控制 B 2020 3 25 130 设计支持 功能的ALU线路 一位的ALU的线路设计 2 接着写出功能的真值表 加法 与 或 2020 3 25 131 真值表逻辑表达式 一位加法器的真值表 逻辑表达式 线路图 XnYnCnSnCn 10000000000000000000000000000000000000000 n n n n n n Cn 1 n n n n n 2020 3 25 132 设计支持 功能的ALU线路 一位的ALU的线路设计 3 按真值表写逻辑表达式S OP1 OP0 A B Cin加法运算 A B Cin A B Cin A B Cin OP1 OP0 A B 与运算 OP1 OP0 A B 或运算Cout OP1 OP0 A B加法运算 A Cin B Cin 2020 3 25 133 设计支持 功能的ALU线路 一位的ALU的线路设计 4 按逻辑表达式画出电路图 这只是个原理性的设计与实现方案 真正的产品功能更全 经过优化后性能也更高

温馨提示

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

评论

0/150

提交评论