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

news2024/12/30 2:08:31

                                                                            苏泽 

本专栏纯个人笔记作用 用于记录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.coloradmin.cn/o/1605495.html

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

相关文章

推荐一个靠谱稳定适合单位和个人的媒体投稿平台

身为单位的信息宣传员,我肩负着每月完成对外信息宣传考核任务的重任。在这条道路上,我经历了从之初摸着石头过河,一家家联系媒体的艰辛,到如今使用智慧软文发布系统网站进行投稿发文章的轻松转变。 记得刚开始的时候,我对媒体投稿一窍不通。每次都要花费大量时间去搜索各种媒体…

Avi Wigderson:理论计算机科学的巨人

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🐍 Python工具 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 A…

【Kafka】Kafka Tool工具的使用

抖音视频 https://www.douyin.com/user/self?modal_id7123007128150901256&showTablike CSDN文档 https://blog.csdn.net/qq_43961619/article/details/109381849

WordPress JS Support Ticket插件 RCE漏洞复现

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。JS Support Ticket是使用在其中的一套开源票务系统插件。 0x02 漏洞概述 WordPress中的JS Support Ticket插件存在未经上传漏洞,未经身份验证的攻击者可以上传恶意脚本的服务器,执行任意指令,从而获…

【个人博客搭建】(8)全局异常处理

1、net 8 webapi 全局异常处理: 在 .NET 8 WebAPI 中,全局异常处理可以通过实现**IExceptionHandler接口或使用IAsyncExceptionFilter接口来完成**。 首先,关于IExceptionHandler接口,它是ASP.NET Core中用于全局异常处理的新抽象。这个接口有…

AUTOSAR OS Event讲解

Events介绍 在AUTOSAR系统中,event(事件)用于向任务发送信号信息。 事件可以为Extended task提供多个同步点,如下图: extended task可以等待事件,这将导致任务进入等待状态。当系统中的任务或ISR设置事件时,等待任务将进入就绪状态。 当它成为最高优先级的就绪任务时,…

低成本的云MES更合适中小企业

长期以来,面对激烈的竞争压力,我国传统的制造企业逐渐从大规模、低成本向多品种、小批量、定制化转型,逐步由粗放式管理向精益化管理靠拢,如ERP、CAD、PLM、OA等多个信息化系统已在我国制造企业中得到了较为广泛的应用&#xff0c…

Python介绍(未完)

文章目录 Python 背景知识Python 是谁创造的?Python 可以用来干什么?Python 的优缺点 搭建 Python 环境安装 Python搭建 PyCharm 环境新工具到手,赶紧试试中文设置第一个Python程序 Python基础语法基础语法(1)常量和表…

OpenCV-AMF算法(自适应中值滤波Adaptive Median Filtering)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 实现原理 AMF(Adaptive Median Filter,自适应中值滤波)是一种用于图像处理和信号处理的滤波算…

文献学习-35-用于评估血流储备分数的条件物理信息图神经网络

Conditional Physics-Informed Graph Neural Network for Fractional Flow Reserve Assessment Authors: Baihong Xie, Xiujian Liu, Heye Zhang, Chenchu Xu, Tieyong Zeng, Yixuan Yuan, Guang Yang, and Zhifan Gao Source: MICCAI 2023 Abstract 血流储备分数 (FFR) 的评…

linux 自定义命令/别名

参考资料 Linux(Ubuntu)自定义命令的使用Linux/Ubuntu系统自定义Shell命令Ubuntu/Linux 操作系统 自定义命令 目录 一. 为路径取别名二. 修改.profile文件2.1 .profile简介2.2 需求2.3 修改.profile文件 三. 创建软链接 一. 为路径取别名 ⏹需求:有一个work文件夹…

学习STM32第十六天

RTC实时时钟 一、简介 RTC是一个独立的BCD格式定时器,提供一个时钟日历,两个可编程报警中断,一个具有中断功能周期性可编程唤醒标志,RTC和时钟配置系统处于后备区域。 通过两个32位寄存器以BCD格式实现秒、分钟、小时&#xff08…

如何在阿里云主机上安装FreeBSD14系统

文章目录 在阿里云主机上安装FreeBSD14系统准备阿里云云主机识别目标磁盘下载 FreeBSD14解压缩 FreeBSD14系统镜像创建可启动的磁盘启动 FreeBSD14在阿里云主机上安装FreeBSD14系统 阿里云主机不支持 FreeBSD14 系统的镜像,因此需要手动进行安装。 准备阿里云云主机 在阿里云…

千锤百炼算法系列之动态规划

题外话 这段时间,我必须把算法弄明白 这篇直接讲解动态规划所有细节! 前面那篇 千锤百炼之每日算法(一)-CSDN博客 也有关于动态规划的讲解,也非常详细 很简单,我成尊不就是了?!!! 正题 动态规划 这里我们主要是让大家明白什么是动态规划,怎么用动态规划解题 我就不用…

数据结构之排序了如指掌(二)

目录 题外话 正题 选择排序 选择排序思路 选择排序代码详解 选择排序复杂度 双向选择排序 双向选择排序思路 双向选择排序代码详解 堆排序 堆排序思路 堆排序代码详解 堆排序复杂度 冒泡排序 冒泡排序思路 冒泡排序代码详解 冒泡排序复杂度 小结 题外话 今天…

2024年第十六届“华中杯”(A题)大学生数学建模挑战赛| 物理建模,多目标优化| 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看华中杯 (A题)! CS团队倾…

最简单的例子说清楚量化对冲----量化中性策略 vs DMA策略

一个简单的例子 何为中性对冲,比如股票市场上有一个指数叫做中国指数,由十支股票组成。现在每一只股票买一万块,共十万。这样子我们是不是相当于等权的买了整个指数所包含的全部股票。现在出现一个东西叫做股指期货,股指期货的作…

Redis: 集群

文章目录 一、单点Redis的问题二、主从架构1、概述2、集群结构3、主从数据同步原理(1)全量同步(2)增量同步 4、总结(1)全量同步和增量同步的区别(2)什么时候执行全量同步&#xff08…

基础拓扑学习

基础拓扑 有限集、可数集和不可数集 2.1 定义 考虑两个集 A A A和 B B B,他们的元素可以是任何东西。假定对于 A A A的每个元素 x x x,按照某种方式,与集 B B B的一个元素联系着,这个元素记作 f ( x ) f\left( x \right) f(x);那…

Django框架设计原理

相信大多数的Web开发者对于MVC(Model、View、Controller)设计模式都不陌生,该设计模式已经成为Web框架中一种事实上的标准了,Django框架自然也是一个遵循MVC设计模式的框架。不过从严格意义上讲,Django框架采用了一种更…