本文主要是介绍【计算机组成原理】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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!