做中学数学教案有哪些好的网站,杭州巴顿设计公司官网,wordpress工具栏条,台州专业网站建设系列文章目录 目录 ALU行波进位加法器超前进位加法器整数运算加减法乘法无符号数相乘N位乘法数的工作流程N位乘法器改进#xff1a;硬件资源更快速的乘法 MIPS中的乘法除法 32位除法器流程除法器改进 更快速的除法 MIPS中的除法总结 ALU ALU功能#xff1a;对a#xff0c;…系列文章目录 目录 ALU行波进位加法器超前进位加法器整数运算加减法乘法无符号数相乘N位乘法数的工作流程N位乘法器改进硬件资源更快速的乘法 MIPS中的乘法除法 32位除法器流程除法器改进 更快速的除法 MIPS中的除法总结 ALU ALU功能对ab01完成
算数运算逻辑运算
行波进位加法器
上图为一位ALU32个一位ALU组合成为32位ALU。低位的进位输出指向高位的进位输入最低位的进位输入用于控制减法这种直接连接1位进位的加法器称为行波进位加法器 超前进位加法器
进位速度制约了加法的速度32位ALU的行波进位方式在每次进位时都要通过与门、或门各一次共产生64个门延迟
使用超前进位加法器通过将进位分成4位一组抽象成每组进位实现加法器的并行执行
具体原理比较复杂结论要执行n位加减法求出n是4的几次方并向上取整在乘二加1就是超前进位的门延迟 整数运算
加减法
例子56 三个输入ABCarryIn
两个输出SumCarryOut
CarryIn(i1) CarryOut(i)
减法就是加上数的负值
例子7-67-6 如果结果超出表示范围就会发生溢出
两个正数相加结果为负发生溢出两个负数相加结果为正发生溢出正数和负数相加永远不会溢出其他情况都未发生溢出 行波加法器中加减法 Cn 与 Cn-1 进行异或逻辑操作以判断是否有溢出 56 5-6 乘法
无符号数相乘
例子A1101 B1011 乘积的位数是乘数和被乘数之和 N位乘法数的工作流程 用4位乘法做例子 迭代 步骤 乘数 被乘数 积product 0 初始值 001① 0000 0010 0000 0000 1 1:1→积积被乘数 0011 0000 0010 0000 0010 2左移被乘数 0011 0000 0100 0000 0010 3右移乘数 000① 0000 0100 0000 0010 2 1:1→积积被乘数 0001 0000 0100 0000 0110 2左移被乘数 0001 0000 1000 0000 0110 3右移乘数 000 0 0000 1000 0000 0110 3 1: 无操作 0000 0000 1000 0000 0110 2左移被乘数 0000 0001 0000 0000 0110 3右移乘数 000 0 0001 0000 0000 0110 4 1无操作 0000 0001 0000 0000 0110 2左移被乘数 0000 0010 0000 0000 0110 3右移乘数 0000 0010 0000 0000 0110
时间效率 N位乘法器改进硬件资源
注意到每进行一次迭代乘积从32增长到64乘数位从32减少到0合起来永远是64可以拼接成为一个64位乘积/乘数寄存器让积相对于被乘数右移而不是乘数相对于积左移ALU从64位缩减到32位改进后硬件规模减小每一步仅占一时钟周期 更快速的乘法
速的乘法运算主要的思想是为乘数的每一位提供一个 32 位的加法器 一个用来输入被乘数和 一乘数位相与的结果 另一个是上一个加法器的输出 一种直接 的方法是将每个右边的加法器的输出作为左边加法器的输入形成一个 高 32 的加法器栈 。一种替换的方法是将 32 个加法器组织成一个并行树 MIPS中的乘法
IPS 提供了 一对单独的 32 位寄存器来容纳 64 位的积称为 Hi 和 Lo 。 为了产生正确的有符号积和无符号积 MIPS 提供了两条指令乘法 (mult) 和无符号乘法 (multu) 。 为了取得 32 位的整数积程序员需要使用 mflo 指令 (move from lo) 。 MIPS 汇编器为乘法生成了 一条伪指令它使用了 三个通用寄存器用 mflo 和 mf肛指令将积送入指定的寄存器 。 除法 除数判0 除法步骤 除数≤被除数 商添加1执行减法否则 商添加0从被除数中提取下一位恢复余除法直接执行减法结果小于0后再把除数加回去 32位除法器流程 在任何情况下整数除法都要满足被除数除数×商余数
计算-7/2时可以商-3余1也可以商-4余1
为了避免这种差异规定余数和被除数同号即商-3余-1
硬件
被除数一开始存在64位余数寄存器中除数从64位除数寄存器的高32位逐次右移到低32位每次迭代向32位商寄存器的最低位添加0或1 执行33次迭代 例子7/2 除法器改进
注意到每轮迭代余数一开始是可以看作被除数位数从64减少到32商的位数从0增加到32合起来总是64位可以拼接成一个64位余数/商寄存器最后余数就是整个除法的余数 更快速的除法
与乘法相同摩尔定律同样适用千除法 。 我们使用许多加法器来加速乘法但这一招对除法却不管用 。 因为除法算法每次迭代前需要知道减法结果的符号而乘法却可以立刻生成 32个部分积
有一些技术可以每步生成不仅一个商位 。 如被称为 SRT 的除法算法通过查找表的方法来尝试猜测每步儿个商位其中查找表基于被除数和余数的高位部分来进行 。 它依赖后面的步骤来修正错误的猜测 。 如今典型值是 4 位 。 算法的关键是猜测要减的值 。 对于二进制算法只有一种选择 。 可用余数的 6 位和除数的 4 位来索引查找表从而决定每步的猜测
这个快速算法的正确性取决于查找表中的值是否合适 MIPS中的除法
为了处理有符号整数和无符号整数 MIPS 采用两条指令除 (div) 和无符号除 (di 一 vu) 。 MIPS 汇编器允许除指令使用三个寄存器且采用 mflo 和 mfhi 指令将运算结果放入指 定的通用寄存器 总结