CPU中的算术逻辑单元(ALU)

2024-01-25 06:52
文章标签 逻辑 cpu 单元 算术 alu

本文主要是介绍CPU中的算术逻辑单元(ALU),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ALU有2个单元,1个算术单元和1个逻辑单元

算数单元 

1 bit加法

半加器

由一个异或门(XOR)和与门(AND)两个逻辑门构成,异或门表示无进位加法(sum),而与门表示进位(carry) 。

全加器

 

 由于存在进位关系,所以从右往左除了第一列不存在进位的加法,之后每一列都存在进位的加法,即从右往左除了第一列只需要处理两个bit,之后的每一列都需要处理三个bit,因此就需要全加器。 

全加器由两个半加器构成,由于有三个输入,最大的二进制为两个二进制1相加得10,再与一个进位1相加得到二进制11,故有最多有两个输出,即前一个1为carry,而后一个1为sum。

8 bit加法

由1个半加器,7个全加器构成

如果第9位有进位,代表着2个数字的和太大了超过了8位,这便出现了溢出(overflow)现象。

逻辑单元

检测是否为0的电路(一堆OR门最后加个NOT门)

将ALU抽象成一个V符号


Flag标志

OVERFLOW表示是否溢出

ZERO表示是否为0

NEGATIVE表示是否为负值

即可以表示两个8位二进制相加是否溢出,相减是否得0,以及两个二进制的大小比较。

这篇关于CPU中的算术逻辑单元(ALU)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642436

相关文章

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

逻辑表达式,最小项

目录 得到此图的逻辑电路 1.画出它的真值表 2.根据真值表写出逻辑式 3.画逻辑图 逻辑函数的表示 逻辑表达式 最小项 定义 基本性质 最小项编号 最小项表达式   得到此图的逻辑电路 1.画出它的真值表 这是同或的逻辑式。 2.根据真值表写出逻辑式   3.画逻辑图   有两种画法,1是根据运算优先级非>与>或得到,第二种是采

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

win10不用anaconda安装tensorflow-cpu并导入pycharm

记录一下防止忘了 一、前提:已经安装了python3.6.4,想用tensorflow的包 二、在pycharm中File-Settings-Project Interpreter点“+”号导入很慢,所以直接在cmd中使用 pip install -i https://mirrors.aliyun.com/pypi/simple tensorflow-cpu下载好,默认下载的tensorflow

定位cpu占用过高的线程和对应的方法

如何定位cpu占用过高的线程和对应的方法? 主要是通过线程id找到对应的方法。 1 查询某个用户cpu占用最高的进程号 top -u 用户名 2 查询这个进程中占用cpu最高的线程号 top –p 进程号-H    3 查询到进程id后把进程相关的代码打印到jstack文件 jstack -l pid > jstack.txt 4 在jstack文件中通过16进制的线程id搜索到

CPU亲和性设置 代码示例 sched_setaffinity sched_getaffinity

视频教程在这: cpu亲和性设置,NCCL,sched_setaffinity sched_getaffinity,CPU_ZERO、SET、ISSET、linux_哔哩哔哩_bilibili 一、CPU亲和性简介 CPU亲和性(CPU Affinity)设置是操作系统中一个重要的性能优化手段,它允许程序或进程被绑定到特定的CPU核心上运行。这样做的好处包括减少缓存未命中、降低线程迁移(co

ubuntu16.04 caffe(github源码cpu)+python3.5+opencv3.4.5安装编译

https://www.cnblogs.com/hanjianjian90/p/10604926.html

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp

【Java编程的逻辑】原子变量 CAS 显示锁

原子变量 在理解synchronized中有使用synchronized保证原子更新操作,但是使用synchronized成本太高了,需要先获取锁,最后还要释放锁,如果获取不到锁还需要等到。这些成本都是比较高的,对于这种情况,可以使用原子变量。 Java并发包中的基本原子变量类型有以下几种: AtomicBoolean:原子Boolean类型,常用来在程序中表示一个标志位 AtomicIn

【Java编程的逻辑】容器类的总结

抽象容器类 用法和特点 容器类有两个根接口,分别是Collection 和 Map ,Collection表示单个元素的集合,Map表示键值对的集合 。 Collection Collection表示的数据集合有基本的增、删、查、遍历等方法,但没有定义元素间的顺序或位置,也没有规定是否有重复元素。 List: 是Collection的子接口,表示有顺序或位置的数据集合,增加了根据