基于Booth乘法和Wallace树的乘法器优化思想

基于Booth乘法和Wallace树的快速乘法器

为了理解Booth乘法和Wallace数如何让乘法器变得更快:

先考虑不优化的8位乘法器实现,即8个16位数字累积共进行7次加法运算,可以认为一次16位加法用到16个全加器,则共需要112个全加器件,只计算全加器的开销,至少需要112$\times$5=560个门

Booth乘法

Booth乘法的实现依据在于补码乘法可写成以下的形式:
在这里插入图片描述

相比起原始乘法器,每次根据y的一位来决定当前是+x/0,补码乘法则需要每次观察y的两位,以决定下一次加法是+x/-x/0,而Booth乘法则每次观察y的三位,以决定下一次加法是+x/+2x/-x/-2x/0

布斯乘法每次观察完后y右移2位,相当于一次完成了2位y的观察。

因此,我们需要进行加法的操作数,也从原来的8个变成了4个

例子

以4位乘法为例来看看布斯乘法如何减少了操作数的数量

如果提升y的判断位数,是否可以进一步提升乘法器的效率?

否,Booth算法的三位判决在硬件实现中是一个平衡点,如果使用更多位数,虽然理论上可以减少生成的x数量,但增加y带来的复杂性可能会抵消这些好处。

我们使用判断3位的布斯乘法,则实际上减半了操作数的数量

原本是8个16位数字累积共进行7次加法运算,需要112个全加器,经由布斯乘法优化,则仅需要4个16位数字进行3次加法,需要48个全加器

Wallace树

Wallcace树基于半加器和全加器进行优化。

我们认为借用16位加法器来计算仅仅4个16位数字实在是太浪费了。因此我们不再横向地整个把16位数字加起来,而是纵向地,每次只考虑4位数字的加法,在本位产生一个数字,并把进位传递给后面的wallace_4模块

如下是wallace_4模块计算的一个例子。其中每个方框代表着一个wallace_4模块,它接受cin作为输入,计算出本位(S),并把进位©传递给下一位。值得注意的是所有的进位并不只能为1,wallace_4模块会将所有本位处理不了的数字丢给下一个wallace_4

这里必须及时指出,如上图所示的计算过程并不完全准确。实际上,wallace模块不会把所有的进位都传递给下一位,而是如果存在进位,wallace会自己先保留1位,然后剩下的向前传递。原因在我们讲完wallace模块的实现就会知道。

wallace_4实现

如下是wallace_4的实现,输入4位计算数,1位Cin;计算的出本位的1位C和一位S,并将一位进位传递到下一模块

当将共16个wallace_4堆叠起来,就可以执行4个16位数的加法了,计算结果得是两个16位数字:C[15:0]和S[15:0]

因此我们需要16个wallace_4,成本为32个全加器;还需要将C和S相加以得到最终的结果,即一次16位加法,成本仍为48个全加器

为什么采用wallace_4优化得到的成本不变?

因为输入只有4位,太少,导致优化空间不足;wallace树对于器件的优化是log级的,输入越多,优化效果越好。但是我们这里作为例子介绍了wallace树的优化思想,想必读者能够理解了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3227355.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Vscode】显示多个文件 打开多个文件时实现标签栏多行显示

Vscode显示多个文件&VSCode打开多个文件时实现标签栏多行显示 写在最前面一、解决打开文件的时候只显示一个tab的办法解决办法如下: 二、文件标签栏多行显示设置步骤: 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时…

SpringBoot新手快速入门系列教程七:基于一个低配centoos服务器,如何通过宝塔面板部署一个SpringBoot项目

1,如何打包一个项目 通过IDEA自带的命令行,执行 ./gradlew clean build 2,检查生成的JAR文件 进入 build/libs 目录,你应该会看到一个类似 helloredis-0.0.1-SNAPSHOT.jar 的文件。 3:运行生成的JAR文件 你可以在…

C++的介绍与认识

目录 前言 1.什么是C 2.C的发展历史 3.C参考文档 4.C重要性 4.1C特点 4.2编程语言排行榜 4.3 C的应用领域 5.C学习指南 1. 基础知识 2. 面向对象编程(OOP) 3. 泛型编程 4. 标准库(STL) 结束语 前言 学习了C语言的知识…

Day06-角色管理-员工管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.编辑角色-进入行内编辑2.角色管理-行内编辑-数据缓存3.角色管理-编辑角色-确定取消4.角色管理-删除角色员工管理-页面结构6.员工管理-左侧树7.员工管理-选中首个节…

算法的复杂度

文章目录 一、算法的效率1、复杂度的概念2、复杂度的重要性 二、时间复杂度三、空间复杂度四、大O的渐进表示发五、计算复杂度案例1、计算Func1函数的复杂度2、计算Fun2的时间复杂度3、计算Func3的时间复杂度4、计算Func4的时间复杂度5、计算strchr的时间复杂度6、计算Func5的时…

SuperCLUE最新测评发布,360智脑大模型稳居大模型第一梯队

7月9日,国内权威大模型评测机构SuperCLUE发布《中文大模型基准测评2024上半年报告》,360智脑大模型(360gpt2-pro)在SuperCLUE基准6月测评中,取得总分72分,超过GPT-3.5-Turbo-0125,位列国内大模型…

[GICv3] 3. 物理中断处理(Physical Interrupt Handling)

中断生命周期 ​​ 外设通过中断信号线生成中断,或者软件生成中断(SGI)。Distributor 和 ReDistributor 配合按照中断分组和中断优先级仲裁后将最高优先级的中断分发到 CPU interface。cpu interface 向中断发送到 PEPE 读取 IAR 寄存器&am…

Global Mapper:地理信息的温柔探索

引言 在这纷繁复杂的世界里,地理信息系统(GIS)如同一把利器,帮助我们剖析、理解和改造这个世界。而在众多GIS软件中,Global Mapper无疑是其中的佼佼者。作为一款功能全面且易于使用的GIS应用程序,Global M…

【服务器】在Linux查看运行的Python程序,并找到特定的Python程序

在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…

InstructPix2Pix Learning to Follow Image Editing Instructions

InstructPix2Pix: Learning to Follow Image Editing Instructions TL; DR:核心是使用 GPT3 SD P2P 来机造指令编辑训练数据。 数据 本文要做的事情是教会模型根据指令来进行图像编辑。样例如下图所示,给定一张向日葵的图片和指令 “将向日葵换为玫…

zynq使用简单I/O对Flash进行读写测试

硬件环境:ALINX 7020 ZYNQ的QSPI Flash 控制器有以下三种模式:I/O 模式、线性地址模式,以及传统 SPI 模式。 I/O模式 操作特点:在I/O模式下,软件模拟去实现 Flash 器件的通信协议。软件需要将 Flash 命令和数据写到控…

【深度学习入门篇 ②】Pytorch完成线性回归!

🍊嗨,大家好,我是小森( ﹡ˆoˆ﹡ )! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官、CSDN人工智能领域优质创作者 。 易编橙:一个帮助编程小…

二四、3d人脸构建

一、下载github项目3dmm_cnn-master https://github.com/anhttran/3dmm_cnn.git 一个使用深度神经网络从单个图像进行 3D 人脸建模的项目,端到端代码,可直接根据图像强度进行 3D 形状和纹理估计;使用回归的 3D 面部模型,从检测到的面部特征点估计头部姿势和表情。…

STM32中断学习记录

文章目录 NVICNVIC是什么NVIC寄存器NVIC 结构体NVIC 相关固件库函数 如何定义优先级中断编程外部中断 EXTIEXIT 外部中断/事件控制器EXIT的使用EXTI内部寄存器分析GPIO触发中断例程为什么中断后要清除中断标志位 SysTick的使用SysTick分析 NVIC NVIC是什么 待补充.........NVI…

Docker安装HomeAssistant

检查Docker服务是否正常运行,确保Docker正常运行。 systemctl status docker#输出---------------------- docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Activ…

旗晟智能巡检机器人:开启工业运维的智能化新篇章

在当今快速发展的工业领域,安全、效率和成本控制是企业运营的核心。旗晟科技以创新为驱动,推出了一站式的工业级智能巡检机器人数字化全景运维解决方案,为石油、天然气、化工、电力等高危行业提供了一个全新的运维模式。 一、面对挑战&#x…

人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解

大家好,我是微学AI,今天给大家分享一下人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解。 Sklearn(Scikit-learn)是一个基于Python的开源机器学习库,它提供了简单有效的数据挖掘和数据分析工具。Sklearn包含了…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-57长短期记忆网络(LSTM)

57长短期记忆网络(LSTM) 1.LSTM原理 LSTM是专为解决标准RNN的长时依赖问题而设计的。标准RNN在训练过程中,随着时间步的增加,梯度可能会消失或爆炸,导致模型难以学习和记忆长时间间隔的信息。LSTM通过引入一组称为门…

碾压SOTA!最新视觉SLAM:渲染速度提升176倍,内存占用减少150%

视觉SLAM,一种结合了CV与机器人技术的先进方法。与激光SLAM相比,它成本低廉且信息量大,易于安装,拥有更优秀的场景识别能力,因此在自动驾驶等许多场景上都非常适用,是学术界与工业界共同关注的热门研究方向…

如何将heic格式转换jpg?四种将heic转换成jpg的方法!

如何将heic格式转换jpg?在现今的数字图像处理领域,Heic格式作为一种被吹捧的创新型图像格式,以其先进的压缩技术,迅速减小了图片文件的大小,然而,尽管其有许多优点,实际使用中Heic格式却带来了一…