【计算机组成原理】2.2.1_4 算数逻辑单元ALU

2024-08-25 04:20

本文主要是介绍【计算机组成原理】2.2.1_4 算数逻辑单元ALU,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2.2.1_4 算数逻辑单元ALU

00:00

各位同学大家好,在这个视频中我们会学习什么是算术逻辑单元ALU。首先我们会介绍ALU在计算机内部的一个作用,以及它需要支持哪些功能。紧接着我们会介绍ALU具体的实现原理,当然这个部分简要了解即可,考试不太可能考它的实现原理。最后我们会教大家怎么看懂ALU的图示。在考研真题当中有可能会给大家一个电路图作为题目的信息,在电路图当中可能会包含ALU这个部件。

00:35

好的,首先看一下ALU在计算机内部的一个作用。ALU是一个英文缩写,它的全称是Arithmetic and logic unit,翻译过来就是算术逻辑单元。我们知道CPU主要由控制器和运算器这样的两大部件组成。其中控制器负责解析指令,根据当前执行的这条指令的功能,向主机内部的其他部件发出控制信号。那这个控制信号也会发给运算器。接下来运算器会根据控制信号对相应的数据进行处理,比如说进行加减乘除等运算。

01:17

运算器的内部主要由这样的一些部件组成,首先会有一些通用寄存器用于存储正在参与运算的各种各样的数据,而这些数据的加减乘除运算会交给算术逻辑单元ALU去完成。ALU它是一种组合逻辑电路,这个电路实现了各种各样的运算功能,因此ALU它是运算器的核心,我把它标成了红色。除此之外,运算器内部还会有一个PSW程序状态字寄存器。这个寄存器会用于存储CPU的状态以及运算的状态等等各种各样的信息。

02:00

在这儿我们先不展开,在这个地方我们要强调的是算术逻辑单元ALU它是运算器的核心。因为这个电路部件实现了各种各样的运算功能。大家继续往后学习就会了解到,无论是加法、减法、乘法还是除法,这些运算的实现都需要基于加法来完成。因此ALU的核心是一个加法器。好,通过这张图我们了解到CPU由控制器和运算器组成,其中运算器的核心是ALU,而ALU的核心又是加法器,这两点可能在选择题当中进行考察。

02:47

好,现在我们了解到了ALU在CPU内部的一个地位和作用。ALU需要对数据进行处理,那么需要进行哪些类型的处理呢?也就是说ALU需要具备哪些功能呢?首先ALU需要支持一些基本的算术运算,比如加减乘除以及逻辑运算,比如与或非、异或移位等等。观察左边这个ALU的图示,它有两个输入的运算数,A和B分别是N个比特,以及这边会输出N比特的运算结果。在图示的右边这儿有M个比特的控制信号,这个控制信号是由控制器根据当前执行的指令发出的。结合刚才这个图示来看,假如当前执行的是加法指令,那么控制器就会把加法对应的控制信号发给ALU,那ALU这边接收到M个比特的加法信号之后,就会在输出端这个地方输出A加B的结果。

03:59

这个地方需要强调一点,ALU的这个控制信号总共有M个比特,那M的取值应该为多少呢?显然这个M的取值应该和ALU的功能总数有关系。假如说ALU支持K种功能的话,那么控制信号的位数M肯定要大于等于log 以2为底k的对数。比如某个ALU总共支持8种功能,那控制信号M就至少应该等于3比特。因为三比特刚好可以表示八种状态,也就分别对应8种功能。再比如上面这个思维导图当中,我们罗列了ALU的功能总数总共有算术运算四种,逻辑运算5种,其他的功能总共有两种,所以总共有11种功能。在这种情况下,控制信号M的位数应该至少等于4比特,只有4比特才能表示11种功能。好,这个是很常考的一个考点。

05:08

ALU除了支持算术运算和逻辑运算之外,还有可能支持其他的一些功能。比如说求补码和直送。来分别解释一下,首先求补码的功能就是把一个源码送入到ALU的某一个输入端,比如从B这一端输入,同时给出求补码的控制信号,那么输出端这个地方就可以得到这个源码所对应的补码。当我们把源码转变成补码之后,就可以让计算机硬件更方便地实现加减运算。好,这是求补码的功能。

05:48

再来看直送,直送的功能就是不对这个数据进行任何处理,让他怎么进就怎么出。比如这端输入0001,同时给出直送的控制信号,那么输出端这边也会输出0001,没有对数据进行任何处理,直接让他通过ALU送出去。好,这是直送的功能。算术运算和逻辑运算的其他这些功能,大家会通过之后的学习有更深入的了解。

06:20

这是ALU需要实现的一些功能,接下来我们简单了解一下ALU的电路原理图。一个比较简单的实现方法是这样的,ALU有A、B两个运算数,我们可以在ALU的内部设置K个功能电路,比如这个电路实现加法,这个电路实现乘法,这个电路实现与,这个电路实现移位。每一个电路对应一种具体的功能,那我们可以把A和B两个运算数分别送到每一个电路的输入端,比如A这个运算数它会被送到乘法电路,B这个运算数也会被送到乘法电路。经过乘法电路的处理之后,就可以输出乘法运算的结果。同样的道理,我们把A和B两个数同时送到其他的运算电路这儿,比如经过与运算电路的处理,这儿就可以输出A和B逐位相与的一个结果。

07:27

接下来我们可以把这K个功能电路的输出结果通通接入到多路选择器的输入这一端,同时用M个比特的控制信号去决定到底要让多路选择器的哪一条线路输出。比如我们可以规定当我们只有四个功能的时候,可以用两个比特去控制这个多路选择器,当控制信号为00的时候,让加法电路的这个信号从输出端这输出出去,当控制信号为01的时候,让乘法的这个信号从多路选择器的这边输出出去,当控制信号为10的时候,让与运算的这个信号输出,当控制信号为11的时候,让移位运算的这个信号输出出去。

08:26

接下来把这个电路进行封装,隐藏内部的实现细节,就得到了我们之前介绍的ALU。这儿介绍的只是一种最简单的电路实现方式,大家有一个简单的了解即可。考试不会考这些电路细节,我们在考试当中更需要注意的是怎么去看懂ALU的这个图示。

08:50

之前我们说ALU肯定会有M个比特的控制信号,那这个M的取值和ALU支持的功能数量是相关的。M个比特必须要能够表示K种不同的状态,所以M需要大于等于log以二为底K的对数向上取整。另外ALU有两个运算数可以输入,以及一个运算结果被输出。运算数和运算结果的长度N比特和我们的计算机的机器字长是相同。应该这么说,计算机的机器字长就是由ALU的运算位数来决定的。所以像左边这个图当中,这台计算机的机器字长肯定就是N比特。

09:40

在有的题目当中有可能你还会看到ALU有这样的一些输出信号,分别叫ZF、OF、SF和CF。我们把绿色的这几个输出信号称为标志位,这些标志位表示了运算结果的特征。比如说ZF表示运算结果是否为零,OF表示有符号数的运算是否发生了溢出,SF表示的是有符号数的运算它到底为正还是为负,CF表示无符号数的运算是否发生溢出。这些标志位的信息通常会被送入到PSW程序状态字寄存器当中。

10:26

把这些标志位的信息写入PSW是有好处的。比如说当ALU完成一个乘法运算之后,计算机可以去检查PSW当中保存的OF这个标志位。如果OF标志位等于一,那么就说明刚才进行的这个乘法运算发生了溢出。也就是说这个乘法运算的N比特输出结果是错误的那在这种情况下,计算机就需要对这种异常的状态进行处理。总之ALU进行某一个运算之后,把这些标志位信息保存到PSW寄存器当中是有用的。在有的计算机系统当中,也会把PSW程序状态字寄存器称为标志寄存器,英文缩写叫FR, flag register。所以大家在做题的时候,如果看到标志寄存器,那你要知道它和PSW是一个东西,两个名字而已。

11:30

好,最后在这个图当中大家还会看到Cin和Cout这样的两个信号。Cin是进位输入信号,Cout是进位输出信号。大家可以类比之前学过的带标志位加法器,这两个信号大致了解一下就可以,不用过多的深究。好,上面介绍的这些就是考试可能会考察的一些重点。

11:54

我们来看一下2022年的一个统考真题。我们先不管这个题目说了什么,来看ALU的图示。这儿有一个ALU部件,A和B两个运算数分别是16比特以及运算结果F也是16比特。同时侧面这有一个虚线箭头,对应的是ALUOP,也就是ALU的控制信号。现在我们知道这个控制信号肯定来自于控制器,同时控制信号的位数需要大于等于log以二为底K的对数向上取整,其中K指的是ALU支持的功能数量。

12:41

好,再看另外这一边,这儿ALU还有一个输出,这个输出会送到FR,也就是标志寄存器这儿,所以蓝色的这条线它表示的就是ALU输出的一些标志信息。也就是SF、OF、ZF、CF。好,通过这节课的学习,相信ALU的图示相关的这个部分已经难不倒大家了。

13:11

好的,这个视频中我们介绍了算术逻辑单元ALU它的一个作用以及需要支持哪些功能。如果ALU总共支持K种功能,那么ALU的控制信号位数M就应该大于等于log以二为底K的对数向上取整这么多个比特。同时我们强调了ALU的两个运算数以及运算结果,它们的长度都是和机器字长相同的。

13:41

ALU可以对数据进行加减乘除、与或非等等各种各样的处理。在处理完数据之后,除了得到当前这次运算的结果之外,还会输出OF、ZF、SF、CF等等这些标志位的信息、而这些标志位信息会被自动的送入PSW程序状态字寄存器当中、在有的计算机系统当中,PSW又会被称为FR,也就是标志寄存器。

14:12

好,最后再次强调CPU由运算器和控制器组成,ALU是运算器的核心,而加法器又是ALU的核心,这有可能在选择题当中进行考察。关于ALU的实现原理,大家有个简要的了解即可,不需要过多的深究。好的,以上就是这个小节的全部内容。

这篇关于【计算机组成原理】2.2.1_4 算数逻辑单元ALU的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

Smarty模板执行原理

为了实现程序的业务逻辑和内容表现页面的分离从而提高开发速度,php 引入了模板引擎的概念,php 模板引擎里面最流行的可以说是smarty了,smarty因其功能强大而且速度快而被广大php web开发者所认可。本文将记录一下smarty模板引擎的工作执行原理,算是加深一下理解。 其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者