【计算机组成原理】加法器原理及其优化

                                                                            苏泽 

本专栏纯个人笔记作用 用于记录408 学习的笔记记录(敲了两年码实在不习惯手写笔记了)

                                                         如果能帮助到大家当然最好   

但由于是工作后退下来备考 很多说法和想法都会结合实际开发的思想 可能不是那么的纯粹应试

希望大家挑选自己喜欢的口味食用    仅供参考


这章在王道书里好像没有专门讲,估计不是考纲 但觉得对后面的理解还是有帮助的 故记录学习

算术逻辑单元

这是运算器当中重要的组成部分  从我的角度来看 这就像是一个封装好的

这个类最主要用于--计算   也就是能理解成一个计算类

那么这张图是在描述ALU他大概会做些什么事情  

我的理解它就像是这个类的父类(还是个抽象父类)  它定义了这个类的抽象方法  他正在描述这个类 会做些什么事情:其实无非就是 输入了三个参数 其中两个参数是操作数 还有一个参数是指令  输出的那个就是结果罢了

那么我们来看这个类他的实例是怎么样的

这个图咋一看很复杂  其实就是一个类 它里面有非常多的构造方法 然后我们可以发现 这里面的构造方法指名道姓的使用哪个 是靠的什么? 靠的是控制单元所输出的 右边那一列S、M的东西  其实就是个参数  他不同的参数类型 指向了不同的 实现方法(M告诉ALU我要进行算术还是逻辑运算、然后S那几个就告诉ALU要进行哪一种的算术/逻辑运算) 

这样 我们就能 把这个算术逻辑单元想象成一个类  右边那一列是一种参数   下面那一排a和b又是两种参数        我们会发现 输入的A0~3他的位数是跟F的位数是相等的  所以这就是他的机器字长 也就是他一次性能处理多少位的数

然后再根据箭头不难发现 输出有两种 上面的F 和左边的那一堆 也是输出

基本的逻辑运算

这里我们首先来确认逻辑运算  因为这是ALU实现功能的基础

这里细心的兄弟发现了 其实 这里面就是我们平时写if语句的时候的&&   ||  和!

其实没啥差别 毕竟连C语言都这么写了 说明他底层就是这么来实现的  

电路也一样

所以这个事情就变得很简单了 
&&:只要有一方是0 结果就是0

||:只要有一方是1 结果就是1

!:就是取反嘛

来看看门电路

也没啥 无非就认得谁脑袋比较圆  谁脑袋毕竟方

其中 你们有没有发现 其实与就是乘法  因为:你把这块的A和B带入乘法进去  算  结果是不是就是Y?包括那个或 :

或就是加法啊 你带进去一算 你就知道到底谁是谁了  所以就直接记:与是乘  或为加

再根据小学生都知道的道理 :先乘除后加减  所以与优先级大于或 就那么简单

既然是加和乘  那就自然有小学生的定理:乘法分配率  乘法结合律  

在此基础上  延展

复合逻辑

其实就是小学生的数学题

与非 可以分解成 两个数先非  再与

或非 可以分解成 两数先非 再或

但是异或其实就是咱们初中最爱出的自定义运算题里面的那个了

就是看a和b同不同   a、b异则输出1 否则输出0  所以这个玩意他叫异或 就是字面意思

public int 异或(int A,int B){if(A==B)return 0;return 1;
}

呐就是这么个玩意 叫异或

他其实可以拆分成异和或

  

电路就是根据表达式画出来的而已

然后就是同或  就是把刚才的异改成了同->同就是1  否则是0  依旧是字面意思

好了终于到加法器了

在此之前 先学习一位全加器

一位全加器

分解一下 二进制当中做加法的步骤

其实就只有这四个东西 AB两个是要加的数 C是进位  S是和 

他们有各自的名字 本位 低位 进位 其实都是字面意思  然后i就是他们的序列 跟我们玩的算法题一个道理

进位有两种可能是会进一的  一种是AB都是1 则进1  一种是A和B其中有一个1 然后低位有一个1 也是进1

所以Ci就有这样的表达式  其实就是把两种情况的可能性加到了一起 (刚才我们说过 加其实就是或)

然后我们根据表达式可以画出电路图

那么我们就可以吧这个  一位全加器的函数签名写下来

就是这样 

两个一位的数相加已经解决了 一旦有很多位 的数呢

两种方案:串行加法器和并行加法器

串行加法器

串行就是将他们无脑一条线串起来

串行进位的并行加法器:把n个全加器串接起来,就可进行两n位数的相加。

并行加法器

那么这块 就不得不提到 动态规划的思想了

我们发现 第i个数的结果由第i-1来推到 则可以得到

最后会一直到C0

像这样的递推  有兴趣的小伙伴可以看一下我之前写过的动态规划的文章 正好是这一篇文章的上一篇

那么我们发现 这样的递推 每一次都会参考先前的数

也就是说:第i位向更高位的进位Ci可根据被加数、加数的第1~位,再结合C0即可确定

这样子做的好处就是 到C4为止 几乎所有的参数都是同时产生的  所以速度就会大大提高

但是越这样分解 到后面的式子就会越复杂 所以  一般来说就是把这样的做法 实现位四个位数 

那么这里的A1到A4和B1到B4就是像上面那种做法来处理的 这就是并行加法器的实现过程了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代商业中首席人工智能官(CAIO)的角色与影响

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

备战面试K8S

备战面试&&K8S Kubernetes关于DockerDocker的优缺点分析 WebAssemblyWebAssembly与Container比较 CtrCrictlCtr和CriCtl的区别 Pod生命周期PodConditions容器状态Pod容器组成生命周期的流程 Kubelet EFK日志采集工具的优缺点 Kubernetes 容器运行接口 Container Runti…

CTFHub(web SQL注入)

CTFHub技能树 Web-SQL注入 详解_666c6167-CSDN博客 Ctfhub - web -- SQL注入_ctfhub sql注入-CSDN博客 整数型注入 方法一 根据提示输入1, 闭合方式就是 1 ,整数型 存在两列,这里已经给出了字段,不需要再order by了 爆出数据库…

yolov7模型输出层预测方法解读

本文从代码的角度分析模型训练阶段输出层的预测包括以下几个方面: 标注数据(下文统称targets)的正样本分配策略,代码实现位于find_3_positive。候选框的生成,会介绍输出层的预测值、GT、grid、 anchor之间的联系损失函…

算法练习第20天|回溯算法 77.组合问题 257. 二叉树的所有路径

1.什么是回溯算法? 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。其本质是穷举,穷举所有可能,然后选出我们想要的答案。 2.为什么要有回溯算法? 那么既然回溯法并不高效为什么还要用它呢? 因为有的问题能暴力…

Hive进阶(2)----HDFS写入数据流程(赋图助君理解)

HDFS写入数据流程 一、写入流程 1、 Client向NameNode发起RPC请求,来确定请求文件block所在的位置; 2、 NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode都会返回含有该block副本的DataNode地址&…

Ubuntu22.04.4 - 网络配置 - 笔记

一、设置固定ip 1、cd /etc/netplan 查看文件夹下的配置文件 我这里叫 00-installer-config.yaml 2、sudo nano /etc/netplan/00-installer-config.yaml 完成配置后,按下Ctrl O保存更改,然后按下Ctrl X退出nano编辑器。 3、sudo netplan apply 4、ip …

前端开发攻略---合并表格单元格,表格内嵌套表格实现手风琴效果。

1、演示 2、思路 1、用传统的 <table></table> 表格标签来实现比较麻烦。因此通过模拟 表格标签 的写法用<div></div>来实现 2、表头和表格列数是相同的&#xff0c;因此可以确定代码结构 <div class"table"><div class"head…

PotPlayer 图像截取

PotPlayer 图像截取 1. PotPlayer2. PotPlayer 下载2.1. PotPlayer 240305 3. 图像截取References 1. PotPlayer http://www.potplayercn.com/ PotPlayer 是 KMPlayer 原作者姜勇囍进入新公司 Daum 之后推出的&#xff0c;继承了 KMPlayer 所有的优点&#xff0c;拥有异常强大…

Flask项目在Pycharm中设置局域网访问

打开PyCharm导入本应用。点击Run标签中的Edit Configurations 其中Target type选择Script path&#xff0c;Target填入本项目中app.py的路径&#xff0c;Additional optional填入--host0.0.0.0(不要有空格)。 再重新运行项目&#xff0c;会观察到除了原本的http://127.0.0.1:50…

【EI会议征稿通知】2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)

2024年图像处理、机器学习与模式识别国际学术会议&#xff08;IPMLP 2024) 2024 International Conference on Image Processing, Machine Learning and Pattern Recognition 重要信息 大会官网&#xff1a;www.ipmlp.net&#xff08;点击参会/投稿/了解会议详情&#xff09;…

【赛题】2024年“华中杯”数模竞赛赛题发布

2024年"华中杯"数学建模网络挑战赛——正式开赛&#xff01;&#xff01;&#xff01; 赛题已发布&#xff0c;后续无偿分享各题的解题思路、参考文献&#xff0c;帮助大家最快时间&#xff0c;选择最适合是自己的赛题。祝大家都能取得一个好成绩&#xff0c;加油&a…

uiautomation、pytest、schedule实现桌面程序自动化(初级)02

一&#xff1a;安装uiAutomation 前置条件:安装python、pycharm 命令行安装 Pip install uiautomation2.0.17 #指定版本 二&#xff1a;安装辅助工具&#xff1a;inspect.exe和、Accessibility Insights For Windows定位元素工具 辅助工具介绍 步骤中提到…

Hive进阶(4)----MapReduce的计算过程(赋图助君理解)

MapReduce的计算过程 MapReduce是一种编程模型和处理大规模数据集的方法。它通常用于分布式计算环境中&#xff0c;能够将数据处理任务分解成独立的部分&#xff0c;分配给多台计算机进行并行处理。这个模型由Google提出&#xff0c;并在开源领域中得到了广泛的应用和实现。Map…

无法连接到MongoDB Atlas 的Cloud Database

打开Mongodb网页: 选择允许任何地址连接 连接成功

Docker容器嵌入式开发:在Ubuntu上配置RStudio与R语言、可视化操作

目录 一、dirmngr工具二、R环境安装与配置三、验证是否安装成功四、安装Rstudio五、可视化操作参考 以上是在Ubuntu 18.04上安装最新版本的R语言环境的步骤摘要。首先&#xff0c;通过添加CRAN镜像源并安装GPG密钥来配置软件源。然后&#xff0c;更新软件包列表并通过apt安装R语…

SQL --索引

索引 INDEX 伪列 伪装起来的列&#xff0c;不容易被看见&#xff0c;要特意查询才能看见 ROWNUM&#xff1a; 是对查询结果自动生成的一组连续的自然数序号。 SELECT emp.*,ROWNUM FROM emp例题&#xff1a;查询emp表中&#xff0c;前三个员工 SELECT * FROM * from emp w…

【创建型模式】建造者模式

一、建造者模式概述 建造者模式定义&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同得表示。(对象创建型模式)。 建造者模式分析&#xff1a; 1.将客户端与包含多个部件得复杂对象得创建过程分离&#xff0c;客户端无需知道复杂对象…

【unity】【C#】游戏音乐播放和发布

今天我们来认识一下有关 unity 音乐的一些知识 我们先创建 AudioClips 文件夹&#xff0c;这个文件夹通常就是 unity 中存放音乐的文件夹&#xff0c;然后拖进音乐文件进去 这里为大家提供了两个音乐&#xff0c;有需要可以自取 百度网盘&#xff1a;https://pan.baidu.com/s…

RIP最短路实验(华为)

思科设备参考&#xff1a;RIP最短路实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;工作原理是每个路由器周期性地向邻居路由器发…