计算机组成原理第二章ppt课件.ppt_第1页
计算机组成原理第二章ppt课件.ppt_第2页
计算机组成原理第二章ppt课件.ppt_第3页
计算机组成原理第二章ppt课件.ppt_第4页
计算机组成原理第二章ppt课件.ppt_第5页
已阅读5页,还剩242页未读 继续免费阅读

下载本文档

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

文档简介

第二章运算方法与运算器 1 本章内容 数据与文字的表示方法定点加法 减法运算定点乘法 除法运算定点运算器的组成浮点运算方法和浮点运算器本章小结 2 2 1数据与文字的表示方法 1 数据格式2 数的机器码表示3 字符与字符串的表示方法4 汉字的表示方法5 校验码 数据与文字的表示方法 数据的表示方法 文字与符号的表示方法 3 2 1 1数据格式 计算机中常用的数据表示格式有两种 1 定点格式 2 浮点格式 定点格式 小数点位置固定 可表示的数值范围有限 但要求的处理硬件比较简单 浮点格式 小数点位置浮动 可表示的数值范围大 但要求的处理硬件比较复杂 数据格式 4 1 定点数的表示方法 定点表示 约定机器中所有数据的小数点位置是固定的 小数点就不再使用记号 来表示 定点数据的形式 纯小数或纯整数 设 定点数表示为 0 1 2 n其中 0符号位 0代表正号 1代表负号 小数点的位置约定在符号位x0的后面 不显示 小数点的位置约定在数值位xn的后面 不显示 定点数的表示方法 5 定点数例 例 符号位约定 0代表正号 1代表负号 X 1010110 纯整数 X 01010110 正数 符号位取0 Y 1101001 纯整数 Y 11101001 负数 符号位取1 X 0 11011 Y 0 10101 小数点隐藏 纯小数 X 0 11011 小数点隐藏 纯小数 X 1 10101 6 纯整数 X 01010110 纯整数 Y 11101001 纯小数 X 0 11011 纯小数 X 1 10101 注意到 无论是整数或是小数 在机器数的表示中 都不出现小数点 只是约定其位置 定点数例 小数点隐藏 小数点隐藏 7 设 x 0 1 2 n则 数值位各位均为0时最小 各位均为1时最大 纯小数的表示范围 0 1 2 n 2 1 纯整数的表示范围为 0 2n 1 2 2 目前计算机中多采用定点纯整数表示 因此将定点数表示的运算简称为整数运算 定点数的表示方法 8 2 浮点数的表示方法 例 156 78 15 678 101 1 5678 102 0 15678 103 M RE其中 M为尾数 R为基数 E为阶码 指数 尾数M表示数的有效数字 阶码E表示数的范围 那么 计算机中究竟采用哪种数据形式 显然存在多种数据形式 什么是浮点数表示 9 在计算机中 一般约定尾数M为小数 即 尾数 M 1 0 并按此原则确定各数据的浮点表示格式 上例 156 67 0 15678 1030 15678 103同理 对于二进制数 1011 1101 0 10111101 2 40 10111101 2 100 M RE 二进制数 可见 一个机器浮点数由阶码E和尾数M及其符号位组成 10 浮点数表示 约定 尾数M用定点小数表示 给出有效数字的位数 M决定了浮点数的表示精度 阶码E 用整数形式表示 指明小数点在数据中的位置 其决定了浮点数的表示范围 浮点数的一般形式为 11 浮点数表示 按照IEEE754的标准 32位浮点数和64位浮点数的标准格式为 其中 浮点数的符号位 0表示正数 1表示负数 尾数 23位 用纯小数表示 阶码 8位 用纯整数表示 阶符采用隐含方式 即采用移码方式来表示正负指数 其中 浮点数的符号位 0表示正数 1表示负数 尾数 52位 用纯小数表示 阶码 11位 阶符采用隐含方式 即采用移码方式来表示正负指数 32位 64位 12 浮点数表示 几点注释 为了提高浮点数据的表示精度 当尾数的值不为0时 其绝对值 M 0 5 即 尾数绝对值域的最高有效位应为1 否则通过修改阶码 即左右移动小数点 的办法 使其变成这一表示形式 这称为浮点数的规格化表示 后面再讨论 在字长相同的条件下 浮点数所表示的范围显然远比定点数大 以下两种情况计算机都把该浮点数看成零值 称为机器零 当浮点数的尾数M为0 不论其阶码E为何值 当阶码E的值 Emin值时 不管其尾数M为何值 13 X 10100 10011 0 1010010011 25 移动小数点 使其尾数为纯小数 数符S 0 阶码E 5 尾数M 0 1010010011得到 X的浮点数形式为 0 1010010011 2 101 例 将十进制数X 转换成二进制浮点数的形式 解 首先分别将整数和分数部分转换成二进制数 20 10100 注意到 这不是IEEE754标准形式 14 3 十进制数串的表示方法 十进制数在计算机内以符号来处理 其主要有两种表示形式 1 字符串形式字符串表示 每一个十进制的数位或符号位都用一个字节存放 如 25 38 十进制数的表示方法 ASCII码存储 用于非数值计算 15 2 压缩的十进制数串形式 BCD码 压缩的十进制数串形式 每个字节存放两个十进制的数码 如 153 12 字节 字节 字节 字节 BCD码存储 即 每个十进制的数位或符号位都用4位二进制码表示 既可用于非数值计算 也可用于数值计算 16 2 1 2数的机器码表示 基本思想 把符号位和数字位一起编码来表示一个实际的数 使符号位也能参与计算 主要表示方法有 原码 补码 反码 移码等 实际数 连同符号一起编码 机器数或机器码 机器数或机器码 真实数值 对应的真值 数的机器码表示 17 以定点整数 x n 1 1 0为例 原码的定义是 即 定点整数的原码形式为 原 n n 1 1 0 2n 02n 2n 0 2n 例如 11001 则 原 011001 10101 则 原 110101 数值取绝对值 1 原码表示法 18 数的原码表示 注意到 0 0 原码在机器中有两种形式 对于定点整数 0 原 0000 0 0 原 1000 0 即 0 的原码表示不唯一 有两种 原码的缺点1 可见 原码表示法非常简单 易懂 19 原码的缺点2 由于数值部分是采用绝对值表示的 因而特别适合于乘除运算 但是加减法运算却比较麻烦 而加减法运算正是计算机中最常使用的运算 所以 必须探讨解决方法 补码则正是一种解决方法 数的原码表示 20 2 补码表示法 教材P20 补码的概念 以钟表对时为例 假设 现在的标准时间为4点正 而钟表已经7点了 为了校准时间 可以采用两种方法 1 将时针退3格 7 3 4 2 将时针向前拨9格 7 9 16 4 显然 这两种方法都能对准到4点 原因在于 当模数为12时 减3和加9是等价的 数的补码表示 用数学公式表示 3 9 mod12 上式在数学上称为同余式 21 即 当模数Mod 12时 可定义 9是 3 补码 模Mod 表示可以被丢掉的数值 设某数为x 当Mod 12时 x 3 x 9 x 7 x 5或 x 12 x Mod 12 都是等价的 从这里可以得到一个启示 在补码运算时 甚至可以把减法转化为加法来计算 只要求出负数的补码即可 即 补码的加 减计算都可用加法计算完成 22 x2n x 02n 1 x 2n 1 x 0 x 2n mod2n 1 补码的定义 以定点整数 x n 1 1 0 为例 正数的补码数值就是本身 负数的补码需作运算 数的补码表示 23 例 已知x 10111 y 11011 n 5 求 x 补 y 补按定义 x 补 010111 y 补 25 1 y 11011 100101 11011100101 问题 根据补码定义 求负数的补码时需作一次减法运算 这显然不是补码方法的初衷 后面将介绍反码表示法可以解决负数的求补问题 24 数的补码表示 注意到 0的补码只有一种形式 对于定点整数 0 补 0 补 0 0000对于定点小数 0 补 0 补 0 0000 25 3 反码表示法 用于快速求补码 二进制数求反码 正数 符号取0 各位数码位保持不变 负数 符号取1 各位数码位全部取反 即得到 即 若xi 0 则Xi 1 若xi 1 则Xi 0 数的反码表示 26 例 已知x 10111 y 11011 求 x 反 y 反 解 x 10111 0按定义 x 反 010111y 11011 0按定义 y 反 100100 注意到 0的反码也有两种 不唯一 即 0 反 000 0 0 反 111 1 可见 反码非常容易得到 27 通过反码求补码的方法 当x为正数时 补 反当x为负数时 补 反 1由此可知一个由反码求补码的重要公式 即 一个负数的补码 可以通过将该数 符号位置1 其余各位取反 然后在最末位加1 的方法直接获得 数的补码与反码关系 28 例 已知x 1011 y 1101 求 x 补 y 补按定义 x 0 x 补 x 反 0 1011 注 正数的补码 反码 数值保持不变 y 0 y 补 y 反 1 1 0010 1 1 0011 由反码求补码方法的最大优点 消除了负数求补码过程中的减法计算 29 求一个负数的补码的另一种有效的转换方法 对于负数 先写出其原码 符号位保持为1 数值部分由低位向高位转换 对开始遇到的0和第一个1 保持原值不变 第一个1以后的各位均取反 例 y 0 110100 求 y 补解 y 原 1110100 y 0 y 补 1001100 保持不变 全部取反 y 反 1001011 y 补 1001011 1 1001100 结果相同 数的补码与反码关系 30 4 移码表示法 在计算机中 移码通常用于表示浮点数的阶码 所以移码一般只用于整数的表示 若用补码表示阶码 则很难直接判断阶码的大小 而移码则可以解决此问题 对定点整数x 数值部分为n位 则其移码的定义是 移 2n 2n 2n 31 例如 十进制 若采用移码 移 x 25 21 10101 31 11111 错 错 正确 正确 0 10101 1 01011 0 11111 1 00001 10101 10101 11111 11111 1 10101 0 01011 1 11111 0 00001 二进制 补码 移码 21 31 32 例 当 10111时 移 25 x 1 10111当y 10111时 y 补 1 01001 y 移 25 y 25 10111 0 01001可见 1 移码中符号位 n表示的规律与原码 补码 反码相反 2 移码在数值上与补码一致 但是符号位与补码正好相反 移码的表示方法 33 机器码表示法小结 在数据的四种机器码表示法中 正数的原码 反码 补码等同于真值 只有负数才分别有不同的表示方法 补码和移码的0只有一种表示方法 因此其表示范围相对于原码和反码多一种 定点小数可表示 1 移码没有小数形式 正数可表示 2n 机器码表示法小结 34 移码表示法主要用于表示浮点数的阶码 可以直接比较大小 移码在数值上与补码相同 符号位 最高位 正好相反 由于补码表示对加减法运算十分方便 因此目前机器中广泛采用补码表示法 在这类机器中 数用补码表示 补码存储 补码运算 如 有些机器在做加减法时用补码运算 在做乘除法时用原码运算 机器码表示法小结 35 例6 以定点整数为例 用数轴形式说明原码 反码 补码表示范围和可能的数码组合情况 机器码表示法小结 例7 将十进制真值 127 1 0 1 127 列表表示成二进制数及原码 反码 补码 移码值 见教材P22 自阅 36 例8 设机器字长16位 定点表示 尾数15位 数符1位 问 定点整数原码表示时 最大正数是多少 最大的负数是多少 解 定点整数原码 最大正数值 0 111111111111111 215 1 10最大的负数值 1 111111111111111 215 1 10 机器码表示法小结 37 例6 假设由S E M三个域组成的一个32位二进制字所表示的非零规格化浮点数 真值表示为 1 s 1 M 2E 128问 它所表示的规格化的最大正数 最小正数 最大的负数 最小的负数是多少 解 1 最大正数 2 最小正数 机器码表示法小结 23位 8位 38 4 绝对值最小的负数 0 1 1 0 2 128 11111111111111111111111 1 1 1 2 23 2127 3 绝对值最大的负数 机器码表示法小结 39 2 1 3字符与字符串的表示方法 1 字符的表示方法目前国际上普遍采用的字符系统是七单位的ASCII码 美国国家信息交换标准字符码 它包括10个十进制数码 26个英文字母和一定数量的专用符号 共125个元素 因此二进制编码需7位 加一位偶校验位 共8位一个字节 ASCII码规定二进制数位的最高一位 b7 恒为0 余下的7位可以给出128个编码 可表示128个不同的字符 40 表2 1ASCII字符编码表 教材P24 b3b2b1b0位 b6b5b4位 41 2 字符串 字符串 是指连续的一串字符 通常方式下 它们依次占用主存中地址连续的多个字节 每个字节存一个字符 例 将字符串 IF A B THEN READ C 从高位字节到低位字节依次存在主存中 解 设 主存单元长度由4个字节组成 每个字节中存放相应字符的ASCII值 文字表达式中的空格 在主存中也占一个字节的位置 因而每个字节依次存放的ASCII码 16进制数 为 49 46 20 41 3E 42 20 44 48 45 4E 20 52 45 41 44 28 43 29 20 字符和字符串的表示方法 42 主存各字节单元内容 字符和字符串的表示方法 43 2 1 4汉字的表示方法 1 汉字的输入编码包括 数字码 拼音码和字形码数字码 常用的是国标区位码 用数字串代表一个汉字输入 区码和位码各两位十进制数字 因此输入一个汉字需按键四次 数字编码输入的优点是无重码 且输入码与内部编码的转换比较方便 缺点是代码难以记忆 拼音码 拼音码是以汉字拼音为基础的输入方法 使用简单方便 但汉字同音字太多 输入重码率很高 同音字选择影响了输入速度 汉字的表示方法 汉字的输入编码 44 字形码 字形编码是用汉字的形状来进行的编码 例 五笔字型 把汉字的笔划部件用字母或数字进行编码 按笔划的顺序依次输入 就能表示一个汉字 其它输入方式 利用语音或图象识别技术 自动 将汉字识别输入等 使计算机能自动识别 理解汉字 并将其自动转换为机内代码表示 汉字的表示方法 汉字的输入编码 45 2 汉字内码汉字内码是用于汉字信息的存储 交换 检索等操作的机内代码 一般采用两个字节表示 每个汉字在机器中都有一个唯一的内码 英文字符的机内代码是七位的ASCII码 当用一个字节表示时 最高位为 0 为了与英文字符能相互区别 汉字机内代码中两个字节的最高位均规定为 1 注意 有些系统中字节的最高位用于奇偶校验位 这种情况下用三个字节表示汉字内码 汉字的表示方法 汉字的内码 46 3 汉字字模码 字模码是用点阵表示的汉字字形代码 它是汉字的输出形式 例如 字模码 汉字的表示方法 汉字字模码 此例 汉字的字模码为 16位 16位 32字节 47 注意到 字模点阵只能用来构成汉字库 而不能用于机内存储 其仅用于汉字的显示输出或打印输出 汉字的输入编码 汉字内码 字模码是计算机中用于输入 内部处理 输出三种不同用途的编码 各自的功能完全不同 汉字的表示方法 汉字字模码 48 各种因素常常导致计算机在处理信息过程中出现错误 为了防止错误 可将信号采用专门的逻辑线路进行编码以检测错误 甚至校正错误 2 1 5校验码 最简单且应用广泛的检错码方法是奇偶校验法 即 采用一位校验位的奇校验或偶校验的方法 设 0 1 n 1 是一个n位字 则奇校验位 定义为 C 0 1 n 1 式中 代表按位加 只有当 中包含有奇数个1时 才使C 1 即C 0 同理 偶校验位 定义为 C 0 1 n 1即 中包含偶数个1时 C 0 效验码 49 假设 一个字 从部件A传送到部件B 在源点A 按约定将校验位C与数据合在一起 0 1 n 1C 送到B 若约定采用偶效验 设 在B点真正接收到的是 0 1 n 1C 然后做校验 F 0 1 n 1 C 若 F 0 表明 字传送正确 若 F 1 意味着收到的信息有错 奇偶校验可提供奇数个错误检测 但无法检测偶数个错误 更无法识别错误信息的位置 循环校验码CRC可解决此问题 效验码 50 例 效验码 加入校验位前传送的数码为 51 加入校验位后传送的数码为 效验码 52 2 2定点加法减法运算 2 2 1补码加法2 2 2补码减法2 2 3溢出概念与检验方法2 2 4基本的二进制加法 减法器2 2 5十进制加法器 定点加减法运算 53 2 2 1补码加法 补码加法的公式是 补 补 补 mod2n 1 现分四种情况来证明 见教材P26 27 自阅 假设采用n位定点整数表示 因此证明的先决条件是 2n 1 2n 1 2n 1 非溢出数 1 0 0 则 0 相加两数都是正数 故其和也一定是正数 正数的补码和原码是一样的 可得 补 补 补 mod2n 1 补码的加法 54 2 0 0 则 0或 0 2n 1 2n 1 进位2n 1必丢失 又因 0 所以 补 补 补 mod2n 1 若 0 2n 1 y 补 所以 补 补 2n 1 补 mod2n 1 55 3 0 则 0或 0 这种情况和第2种情况一样 把 和 的位置对调即得证 4 0 0 则 0 相加两数都是负数 则其和也一定是负数 补 2n 1 补 2n 1 补 补 2n 1 2n 1 2n 1 2n 1 上式右边分为 2n 1 和 2n 1 两部分 既然 0 而其绝对值又小于 2n 1 那么一定有 0 2n 1 2n 1 进位 2n 1 必丢失 又因 0 所以 补 补 2n 1 补 mod2n 1 补码的加法 56 至此得到证明 在模2n 1意义下 任意两数的补码之和等于该两数之和的补码 即 补 补 补 mod2n 1 这是补码加法的理论基础 其结论也适用于定点小数 补码加法可以连同符号位一起直接计算 即可得到 和的补码 57 例 x 1011 y 0100 计算 x y 解 补 0 1011 补 0 0100 补0 1011 补0 0100 补0 1111 0 1111 58 例 1011 0101 求 解 补 0 1011 补 1 1011 补0 1011 补1 1011 补10 0110 0110 最高位为模数MOD自行丢失 补码的加法 59 可见 补码加法的特点为 1 符号位作为数的一部分直接参加运算 2 超过模数 Mod 的进位要自动丢掉 小数的计算同样适合 只是模数不同 60 2 2 2补码减法 由补码的原理可知 补码可以通过加法来完成减法计算 进而简化运算器的结构 补码的减法公式如下 补 补 补 补 补 即 减法可以变成加法来计算 公式的证明简单 只需证明 补 补即可 见书P28 补码的减法 61 补码的减法 现证明如下 补 补 补 mod2n 1 补 补 补 补 补 补 补 补 补 补将上二式相加 得 补 补 补 补 补 补 补 补 补 补 补 补 0故 补 补 62 补码的减法 下面的问题是 若已知 补 如何求取 补 方法 以定点整数为例 对已知的 补 连同符号位一起 各位求反 最末位加1 即可得到 补 即 补 补 1其中 符号 补表示 对 补连同符号位一起的求反 63 例13 已知 1 1101 2 1110 求 1 补 1 补 2 补 2 补 解 1 补 0 1101 1 补 1 补 1 1 0010 0 0001 1 0011 2 补 1 0010 2 补 2 补 1 0 1101 0 0001 0 1110 补码的减法 64 例14 1101 0110 求 解 补 0 1101 补 0 0110 补 1 1010 补0 1101 补1 1010 补10 0111 0 0111 补码的减法 65 又例 5EH 38H 求 补 0 1011110 补 0 0111000 补 1 1001000 补0 补1 1001000 补10 0100110 0 0100110 26H 补码的减法 解 X 1011110 y 111000 最高位1自行丢失 66 2 2 3溢出概念与检测方法 在定点数的运算过程中 如数值的大小超出定点数所能表示的范围 则称为 溢出 这在定点机中是不允许的 溢出的特征 两个正数相加 结果为负 即 大于机器所能表示的最大正数 称为上溢 两个负数相加 结果为正 即 小于机器所能表示的最小负数 称为下溢 溢出概念与检测方法 见实例 67 例12 1011 1001 求 解 补 0 1011 补 0 1001 补0 1011 补0 1001 补1 0100 负值 两正数相加 结果为负 显然错误 运算中出现了 上溢 溢出概念与检测方法 有进位 无进位 68 又例 1011 0010 求 解 补 0 1011 补 0 0010 补0 1011 补0 0010 补0 1101 1101两正数相加 结果正确 无溢出 溢出概念与检测方法 69 例 0 1101 0 1011 求 解 补 1 0011 补 1 0101 补1 0011 补1 0101 补10 10000 1000 两负数相加 结果为正 显然错误 运算中出现了 下溢 溢出概念与检测方法 无进位 有进位 1000 70 产生 溢出 的原因 在加法运算时 当最高有效数值位的运算进位与符号位的运算进位不一致时 将产生运算 溢出 溢出概念与检测方法 溢出 检测方法 为了判断 溢出 是否发生 可采用两种检测的方法 71 溢出检测方法1 单符号位法 从例题中看到 当符号位进位Cf与最高有效位进位Co不一致时 即会产生溢出 故 溢出逻辑表达式为 V Cf Co其中 Cf为符号位产生的进位 Co为最高有效位产生的进位 显然 用异或门即可方便地得到溢出信号V 在定点机中 机器会自动检查运算结果是否发生溢出 若溢出 则要进行中断处理 72 2 溢出检测方法2 双符号位法 又称为 变形补码 溢出概念与检测方法 变形补码 符号位由一位变为二位 如 73 1 两个符号位与数码一样都参加运算 2 最高符号位上产生的进位Cf1 同样要被丢掉 溢出概念与检测方法 必须注意 在用变形补码运算时 结论 采用变形补码后 两个补码相加 如果结果的符号位出现 01 或 10 两种组合时 表示发生溢出 V Sf1 Sf2 即 溢出逻辑式为 两位符号位 74 例14 1100 1000 求 溢出概念与检测方法 解 补 00 1100 补 00 1000 补00 1100 补00 100001 0100两个符号位出现 01 表示已溢出 即结果大于最大值 上溢 正确的符号位 溢出 75 又例 1100 0001 求 溢出概念与检测方法 解 补 00 1100 补 00 0001 补00 1100 补00 000100 1101两个符号位 00 表示无溢出 1101 76 例15 1100 0110 求 溢出概念与检测方法 解 补 11 0100 补 11 1010 补11 0100 补11 101010 1110两个符号位出现 10 表示已溢出 即结果小于最小值 下溢 溢出 正确的符号位 77 溢出概念与检测方法 小结 当以变形补码运算 运算结果的双符号位相异时 表示溢出 相同时 则表示未溢出 溢出逻辑表达式为 V Sf1 Sf2其中 Sf1和Sf2分别为最高符号位和第二符号位 2 两变形补码相加 不论结果是否溢出 最高符号位Sf1总是结果的正确符号 78 2 2 4基本的二进制加法 减法器两个二进制数字Ai Bi和一个进位输入Ci相加 产生一个和输出Si以及一个进位输出Ci 1 一位全加器 右表列出一位全加器进行加法运算的输入输出真值表 根据真值表 三个输入端和两个输出端可按如下逻辑方程进行联系 Si Ai Bi CiCi 1 AiBi BiCi CiAi AiBi Ai Bi Ci 79 二进制加法 减法器 按表达式组成的一位全加器 FA 示意图 b 对一位全加器 FA 来说 Si的时间延迟为6T 每级异或门延迟3T Ci 1的时间延迟为5T 其中 T相应于单级逻辑门电路的延迟 通常被定义为一个 与非 门或一个 或非 门的时间延迟作为度量单位 80 二进制加法 减法器 由n个全加器 FA 可级联成一个n位基本补码加法 减法器 称为 n位行波进位加减器 见书P31图 电路示意图 81 二进制加法 减法器 n位行波进位加 减器逻辑电路 82 M为方式控制输入信号 当M 0时 作加法运算 当M 1时 作减法运算 注意 B 补的求法 图中 左边表示采用单符号位法的溢出检测逻辑 经异或门产生溢出信号 用一套加法器可以同时实现加 减法运算 83 二进制加法 减法器 一个n位行波进位加法器的时间延迟 见书P31 考虑 异或门 的延迟时间为3T 每级进位链的延迟时间为2T 见后图 84 二进制加法 减法器 延迟时间为 2T 延迟时间为3T 考虑溢出检测时 延迟时间ta为 ta n 2T 9T 2n 9 T 85 2 3定点乘法运算 2 3 1原码并行乘法2 3 2补码并行乘法 定点乘法运算 86 2 3 1原码乘法 1 人工算法与机器算法的同异性在定点计算机中 两个原码表示的数相乘的运算规则是 乘积的符号位由两数的符号位按异或运算得到 而乘积的数值部分则是两个正数相乘之积 原码乘法运算 87 设 n位被乘数和乘数用定点整数表示 被乘数 原 n n 1 1 0乘数 原 n n 1 1 0则乘积 原 n n n 1 1 0 n 1 1 0 式中 n为被乘数符号 n为乘数符号 也就是说 原码的做乘法运算时 符号位无需参与计算 只要完成数值部分的运算即可 88 乘积符号的运算法则 乘积的符号按 异或 运算直接得到 即 n n 数值部分的运算方法与普通的十进制数乘法类似 二进制数的乘法规则更为简单 设 1101 1011 先用习惯方法求其乘积 观察其过程 原码乘法运算 手工计算过程 89 手工运算的过程与十进制乘法相似 如果被乘数和乘数用定点整数表示 运算过程也完全一样 原码乘法运算 然而 这种习惯的手工算法对机器并不完全适用 90 原因之一 机器通常只有n位长 运算器也是n位长 而两个n位二进制数相乘 乘积可能为2n位 原因之二 加法器每次只能进行两个操作数的相加 无法将n个部分积同时做相加运算 早期计算机中为了简化硬件结构 采用多次执行 加法 移位 的串行操作来实现 然而运算速度太慢 随着高速乘法部件的问世 目前已普遍使用各种形式的流水式阵列乘法器 它们属于并行乘法器 原码乘法运算 91 2 不带符号的阵列乘法器设有两个无符号的二进制整数 A am 1 a1a0 m位 B bn 1 b1b0 n位 它们的数值分别为a和b 即 m 1n 1a ai2ib bj2ji 0j 0 原码乘法运算 92 做二进制乘法 被乘数A与乘数B相乘 产生 m n 位乘积P P pm n 1 p1p0 m n位 乘积P的数值为 93 实现上述乘法过程所需要的操作和人们的习惯方法非常类似 am 1am 2 a1a0 bn 1 b1b0am 1b0am 2b0 a1b0a0b0am 1b1am 2b1 a0b1 am 1bn 1am 2bn 1 a0bn 1pm n 1pm n 2pm n 3pn 1 p1p0 原码乘法运算 94 所有的位积因子同时形成 阵列乘法器原理结构 加法器阵列 95 在m位乘n位不带符号整数的阵列乘法中 共有 m n个被加数aibj aibj 0 i m 1和0 j n 1 又称位积因子 可以用m n个 与 门同时地产生 1个门延时 设计高速并行乘法器的基本问题 就集中在如何构建加法器阵列 有效缩短被加数矩阵中每列所需的加法时间 5位 5位阵列乘法器的逻辑电路图演示 原码乘法运算 96 若乘法器为n n位时 需要n n 1 个 全加器 和n2个 与 门 97 98 令Ta为 与门 的传输延迟时间 Tf为全加器 FA 的进位传输延迟时间 假定用2级 与非 逻辑来实现FA的进位链功能和 与门 逻辑 那么就有 Ta Tf 2T由上面的分析可以得出 最长的延迟途径是沿着矩阵p4垂直线和最下面的一行 因而得 n位 n位不带符号的阵列乘法器总的乘法时间为 tm Ta n 1 6T n 1 Tf 2T n 1 6T n 1 2T 8n 6 T 原码乘法运算 99 例16 已知两个不带符号的二进制整数A 11011 B 10101 求每一部分乘积项aibj的值与p9p8 p0的值 解 11011 A 2710 10101 B 2110 11011000001101100000 110111000110111 P 567 10a4b0 1a3b0 1a2b0 0a1b0 1a0b0 1a4b1 0a3b1 0a2b1 0a1b1 0a0b1 0a4b2 1a3b2 1a2b2 0a1b2 1a0b2 1a4b3 0a3b3 0a2b3 0a1b3 0a0b3 0a4b4 1a3b4 1a2b4 0a1b4 1a0b4 1 由5 5个与门同时产生 2T 100 3 带符号的阵列乘法器 1 对2求补器电路已知 一个负数的常规求补过程 例 X 1110 则 X 补 1 0010 Y 0100 则 Y 补 1 1100算法特点 从数据的最右边开始向左边逐位看数 找到第一个 1 为止 该 1 的左边各位全部取反 不包括符号位 该 1 的右边各位 包括该 1 保持不变 由上述分析的算法特点 可以设计一个具有使能控制的二进制对2求补器电路 教材P35如图2 6 101 带符号的阵列乘法器 演示对2求补电路的工作过程 3 2T 2T 3T 最长的信号延迟通路 见教材P35 所需的总时间延迟为 tTC 3 2T 5T 102 电路特点 采用按位扫描技术来执行所需要的求补操作 令A an a1a0是给定的 n 1 位带符号的数 原码 要求确定它的补码形式 最右端的起始链式输入C 1必须恒置成 0 当控制信号线E 1时 启动对2求补的操作 当控制信号线E 0时 输出将和输入相等 显然 可以利用符号位an来作为控制信号 E 即 E an 带符号的阵列乘法器 103 用求补器来转换一个 n 1 位带符号的数 原码 需转换n位数码位 an 1 a1a0 所需的总时间延迟为 tTC n 2T 5T 2n 5 T其中 每个扫描级需2T延迟 而5T则是由于 与 门和 异或 门引起的 注意到 符号位an只作为求补启动 使能 控制信号E 104 2 带求补器的阵列乘法器阵列乘法器 完成无符号数相乘 如何实现补码相乘 方法 两个补码相乘 先用求补法将补码转化为原码 将数值部分使用不带符号的阵列乘法器求出乘积的绝对值 符号位单独处理 再根据乘积的符号位对乘积求补 得出乘积的补码 n 1 n 1 位带求补器的阵列乘法器逻辑方框图 教材P36 带符号的阵列乘法器 105 106 在这种逻辑结构中 共使用三个求补器 两个算前求补器的作用是 将两个操作数A和B的数值部分 在送入无符号乘法阵列 核心部件 相乘以前 先变成绝对值 原码 算后求补器的作用则是 把运算结果转换为补码 当两个输入操作数A B的符号不一致时 启动求补器 乘积为 A B 补 p2np2n 1 p1p0p2n an bn其中 P2n为符号位 CAI演示 107 可见 在补码乘法中 输入数据为补码形式 不能直接交给无符号阵列乘法器使用 需要先将数据转换为原码参与计算 再将结果转换为补码输出 所以 需要增加算前求补和算后求补等硬件电路 称为 间接补码乘法 108 带求补级的阵列乘法器既适用于原码乘法 也适用于间接的补码乘法 显然 在原码乘法中 算前求补和算后求补都不需要 输入 输出数据都是立即可用的 原码阵列乘法 带符号的阵列乘法器 需要吗 109 注意到 由于间接的补码阵列乘法需要加入必需的算前 算后求补操作 运算时间大约要比单纯的不带符号的阵列乘法增加1倍 110 例21 设 15 13 用带求补器的补码阵列乘法器求出乘积 书P36 解 已知 输入数据x y为补码 做补码乘法 算前 算后求补都需要 由符号位决定是否启动求补器 本例 x 15 1111 2 x 补 0 1111 1111 符号位为0 算前无需求补 y 13 1101 2 y 补 1 0011 1101 符号位为1 算前需求补 使y的数值变为正数 数值部分经由无符号阵列乘法器获得 算式演示 无符号阵列乘法器完成 111 可知 1 无符号阵列乘法器输出的数值结果为 11000011 2 因为x和y的符号不一致 结果的符号位为 1 则算后求补器被启动 对结果求补 最后得出乘积的补码 本例 x y 补 1 对应有 x y 原 1 换算成真值是 11000011 2 195 10十进制数验证 y 15 13 195相等 112 可见 1 这种带求补器的阵列乘法器所完成的补码乘法 实质上属于间接的补码乘法 2 这种补码计算中 符号位并未直接参与计算 带符号的阵列乘法器 那么 能否连同符号位一起计算 完成补码直接乘法呢 回答是肯定的 113 2 3 2直接补码并行计算 教材P37 39 主要思想 连同符号位一起参与运算 直接得出乘积结果 要解决的问题 先找出补码与其对应真值的关系 设 N 补 an a1a0 补码与对应真值的关系 注意到 补码的符号位an带负权值 数值位带正权值 教材P37 2 25 式 114 只要让符号位带上 负权值 参与计算 即可实现补码的直接乘法计算 具体讨论略 115 2 4定点除法运算 定点除法运算 2 4 1原码除法算法原理2 4 2并行除法器 116 基本原理 两个原码表示的数相除时 商的符号由两数的符号位 异或 得到 商的数值部分由两数的数值部分直接相除求得 原码除法运算原理 2 4 1原码除法运算原理 117 设有n 1位定点小数 定点整数也同样适用 被除数 其原码为 原 n n 1 1 0除数 其原码为 原 n n 1 1 0商q 其原码为 q 原 n n 0 n 1 1 0 0 n 1 1 0 商的符号运算 qn n n与原码乘法一样 118 商的求法 商的数值部分的运算 实质上是两个正数求商的运算 所以 原码的除法只需考虑两个正数相除即可 在二进制计算中 商的每一位不是 1 就是 0 其运算法则比十进制运算更简单一些 定点除法运算 设 被除数 0 1001 除数 0 1011 模仿十进制除法运算 以手算方法求 119 该步不作 120 计算机计算需考虑的几点 1 计算机中 小数点是固定的 不能简单地采用手算的办法 为便于机器操作 计算机常采用 余数左移 的方法来替代 除数右移 2 机器的运算过程和人不同 它不能直接判断够不够减 必须先作减法 若余数为正 才知道够减 若余数为负 则不够减 发现不够减时 必须恢复原来的余数 才能继续往下运算 这种方法又称为恢复余数法 由于要恢复余数 使计算的效率降低 同时使除法过程的步数不固定 因此控制比较复杂 定点除法运算 121 由于恢复余数法中包含有一些无效 冗余 运算 实际中 故一般采用不恢复余数法 又称加减交替法 不恢复余数法 除法规则 被除数x 除数y 1 首先做 x y 运算 即 x y 补 2 判断余数符号 若余数为正 够减 则 商上 1 余数左移一位 继续做减除数 y 补 运算 若余数为负 不够减 则 商上 0 余数左移一位 然后做加除数 y 补 运算 122 注意 在原码除法运算中 先写出 x 原 y 原 y 补 1 原码除法只进行两数值 x y 的相除计算 商的符号位由 n n 直接获得 2 在具体计算中 减法仍然须采用补码进行计算 即 y 补实现 加减交替法实例 123 例 0 101001 0 111 用原码除法求 解 x 原 0 101001 原 1 111 y 0 111 y 补 1 001被除数 0 101001 y 补 减 1 001余数为负1 110001 0q0 0余数左移1 10001加 0 111余数为正0 01101 0q1 1余数左移0 1101减 1 001余数为负1 1111 0q2 0余数左移1 111加 0 111余数为正0 110 0q3 1 124 故得 商值 q q0 q1q2q3 0 101余数r 0 000110符号位 qf f f 0 1 1 原 1 101即 0 101 125 加减交替法的算法特点 1 运算过程中 无论够减或是不够减 可以根据余数符号得出判断 直接决定下一步的运算 不必考虑余数的恢复问题 2 算法步数固定 控制简单 被广泛使用 早期计算机中 一般采用串行的1位除法方案 即多次执行 减法 移位 操作来实现 这种串行除法器方案速度太慢 目前已被淘汰 目前计算机主要采用集成阵列除法器来实现 定点除法运算 126 与阵列乘法器非常相似 阵列式除法器也是一种并行运算部件 采用大规模集成电路制造 能提供令人满意的高速运算 阵列除法器有多种多样形式 如不恢复余数阵列除法器 补码阵列除法器等等 1 可控加法 减法 CAS 单元 CAS用于并行除法流水逻辑阵列中 它有四个输出端和四个输入端 当输入线P 0时 CAS作加法运算 当P 1时 CAS作减法运算 逻辑结构图 并行除法器 2 4 2并行除法器 阵列除法器 127 CAS单元 P 0 做加法P 1 做减法 128 CAS单元的输入与输出的关系可用如下一组逻辑方程来表示 Si Ai Bi P CiCi 1 Ai Ci Bi P AiCi当P 0时 方程式 2 32 就是熟悉的一位全加器 FA 的公式 Si Ai Bi CiCi 1 AiBi BiCi AiCi当P 1时 则得求差公式 Si Ai Bi CiCi 1 AiBi BiCi AiCi其中Bi Bi 1在减法情况下 输入Ci称为借位输入 而Ci 1称为借位输出 定点除法运算 129 2 不恢复余数的原码阵列除法器设 所有被处理的数都是正数 不恢复余数法也就是加减交替法 设 被除数 0 1 2 3 4 5 6 双倍长 除数 0 1 2 3商数 0 q1q2q3余数 0 00r3r4r5r6字长n 1 4 则 4 4 位阵列除法器逻辑结构见后图 130 商 0 q1q2q3 余数 0 00r3r4r5r6 131 阵列除法器结构特点 本例 被除数 是一个6位的小数 双倍长度值 0 1 2 3 4 5 6它是由顶部一行和最右边的对角线上的垂直输入线来提供的 除数 是一个3位的小数 0 1 2 3它沿对角线方向进入这个阵列 即 在除法中所需要的部分余数的左移 在阵列除法器中是 让余数保持固定 而将除数沿对角线进入CAS阵列来实现 定点除法运算 132 商q是一个3位的小数 q 0 q1q2q3它在阵列的左边产生 余数r是一个6位的小数 r 0 00r3r4r5r6 补码形式 它在阵列的最下一行产生 定点除法运算 由图看出 该阵列除法器是用一个可控加 减法 CAS 单元所组成的流水阵列来实现的 推广到一般情况 一个 n 1 位除 n 1 位的阵列除法器由 n 1 2个CAS单元组成 133 几点注释 最上面一行所执行的初始操作通常是减法 P 1 因此 最上面一行的控制线P固定置成 1 减法是 y 补的运算来实现 这时右端各CAS单元上的反馈线用作初始的进位输入 每一行最左边的单元的进位输出 够减为1 不够减为0 即为商的数值 其同时又作为确定下一行操作的控制信号P 定点除法运算 134 阵列除法器运算时 每个CAS单元的延迟时间为3T单位 与或非门 对一个有 n 1 2个单元的阵列除法器来说 考虑最大情况下的信号延迟 其除法执行时间为 td n 1 2 3T其中n为数的位数 补码阵列除法器 略 定点除法运算 135 2 5定点运算器的组成 2 5 1逻辑运算2 5 2多功能算术逻辑运算单元2 5 3内部总线2 5 4定点运算器的基本结构 定点运算器的组成 136 运算器 计算机中数据的加工处理部件 是CPU的重要组成部分 运算器基本结构 包含 算术运算单元 逻辑运算单元 数据缓冲寄存器 通用寄存器 多路转换器和内部数据总线等逻辑构件 定点运算器的组成 137 计算机中除了进行加 减 乘 除等基本算术运算外 还存在大量逻辑数的逻辑运算 逻辑数 是指不带符号的二进制数 是非数值型数据 表示的是计算机所要处理的一些状态信息 逻辑运算包括 逻辑数的比较 选取 屏蔽 测试等操作 基本逻辑运算 逻辑非 逻辑加 逻辑乘 逻辑异 定点运算器的组成 2 5 1逻辑运算 138 逻辑运算特点 逻辑运算都是本位运算 又称按位运算 即 不存在进位和借位问题 定点运算器的组成 在非数值信号的处理中 逻辑运算是非常重要的运算 操作 之一 139 逻辑非也称求反 对某数进行逻辑非运算 就是按位求它的反 设一个数 为 0 1 2 n对 求逻辑非 则记为 0 1 2 n i i i 0 1 2 n 1 逻辑非运算 140 两个数的逻辑加又称 逻辑或 就是按位求它们的 或 常用记号 V 或 来表示 设有两数 它们表示为 0 1 n 0 1 n若 0 1 2 n则 i i i i 0 1 2 n 定点运算器的组成 例22 10100001 10011011 求 解 10100001 10011011 10111011 即 10111011 2 逻辑加运算 141 两数的逻辑乘又称 逻辑与 就是按位求它们的 与 常用记号 或 来表示 设有两数 和 它们表示为 0 1 n 0 1 n若 0 1 2 n则 i i i i 0 1 2 n 定点运算器的组成 例23 10111001 11110011 求 解 10111001 11110011 10110001 即 10110001 3 逻辑乘运算 142 逻辑异又称 异或 按位加 按位求模2和 常用记号 表示 设有两数 和 0 1 n 0 1 n若 和 的逻辑异为 0 1 2 n则 i i i i 0 1 2 n 定点运算器的组成 例24 10101011 11001100 求 解 10101011 11001100 01100111 即 01100111 4 逻辑异运算 143 由前面讨论已知 由一位全加器 FA 可级联构成一个n位的行波进位加法器 它可以方便地实现数据的加法和减法运算 定点运算器的组成 2 5 2多功能算术 逻辑运算单元 存在的主要问题 1 由于串行进位 它的运算时间很长 这在高速计算中显然是不行的 速度问题 2 它只能完成加法和减法两种算术操作 无法完成逻辑操作 功能问题 存在问题 144 期望的运算器 其不仅具有多种算术运算功能 还应具有多种逻辑运算功能 同时还具有 先行进位 功能 从而满足多功能 高速运算的需求 构造多功能算术 逻辑运算单元 ALU 145 已知 一位全加器 FA 的逻辑表达式为 Fi Ai Bi CiCi 1 AiBi BiCi CiAi显然 全加器本身肯定无法解决ALU问题 解决方法 将输入Ai Bi进行组合和调整 得出不同的组合函数Xi和Yi 作为全加器的新输入 进而实现多种算术运算和逻辑运算 定点运算器的组成 1 基本思想 图2 10ALU的逻辑结构原理框图 如图 146 一位算术 逻辑运算单元的逻辑表达式为 Fi Xi Yi Cn iCn i 1 XiYi YiCn i Cn iXi上式中 下标n代表芯片总位号 i为芯片上的位号 若一块ALU为4位 则 i 0 1 2 3 由若干块ALU芯片可以组成更大字长的运算器 例如 当4块ALU组成16位字长的运算器时 n 0 4

温馨提示

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

评论

0/150

提交评论