screen_计算机组成与体系结构_第5周_星期四_第2大节_原文 2026年01月01日 16:36 好吧,咱们开始上课。其他人呢?
行,咱们开始上课。这节课咱们首先看一下,我们在上一次课,也是上周六,咱们开始了第三章的学习。第三章我们讨论的第一个问题是有关指令格式。也就说一条二进制所表示的指令分为操作过对不对和地址码库两部分内容。之后我们依据一个双操作数指令讨论了四地址指令、三级指令、二级指令、一级指一地址指令,甚至0地址指令。我们发现这个四地址指令是一个理论描述,三地址、二地址、一地址是我们常见的其中3D纸和2D纸性能就是它的。时间复杂度是一致的是吧?一地址由于它隐藏的用了一个ACC,使得他的这个就是他的访存次时间复杂度降低了一些。这是我们上节课讨论的一个第一个关键问题。
第二个问题,我们讨论的是有关扩展操作码的设计问题。也就是说对于非规整型的指令,我们通过OP操作码分别占若干个地址码字段,实现最终的指令的扩展。我们以一个例子,就是某一个指令长度为16倍,其中OP4为三个四地址三个四地址地三个四位地址码字段。通过这个例子我们进行了一个扩展操作码的设计。我们最终给出的设计方案是总共是61条指令,其中15条3地址、十五条二地址、十五条一地址和16条0地址。这些指令我们说了,我们只是给出了其中一种解决方案。在座的每一位同学都可以给出属于自己独立的设计方案,这是第一块。
第二块我们讨论的是寻址方式。所谓的寻址,一句话,要么寻找什么操作数的地址,要么寻找下一条将要执行的指令地址。一般来说下一条将要执行的责任体系是通过PC加一来实现。
这里我们重点讨论的是什么?操作数的有效地址的获取。在这儿我们首先讨论一个储存空间的编译方法。也就是说对于主存储空间,我们说了他们它可以存放N多个比特位的状态。那么对于这N多个比特位的状态,我以什么单位进行编号,分别有位置就给每个比特位我给它编写进去。第二是字节地址,把八个比特币一个字节给他编地址,还有字节对吧?自定义是属于计算机早期我发出一个操作,希望从主存中取出我所需要的所有信息,这是自定制。而字节地址主要是适合什么非数执行数据的表示我们产业什么自己地址,这是我们。
有关编制。我们讨论这个选址,我们说我们在书上主要讲了9种寻址方式分别。那么上一次课我们讲了应该说讲了5种是吧?
立即数就是指令的这个地执法部分指令的。指令的地址码部分是操作数本身,这叫立即寻址。除此之外我们有什么直接寻址寄存器,直接寻址?也就说E等于A这是两类。还有两类型的间接寻址。
间接寻址这种方式,这是我们我们在实际使用过程中最为常用的是吧?因为它符合就直接选址,不符合现代操作系统对储存空间的管理要求,为什么呢?因为我们的现在操作系统对于主机空间是需要什么?我们的程序和代码需要动态加载到内存里。如果你采用直接选取的话,那么你所给定的是储存空间的绝对地址。这是我现在计算机操作系统是绝对不允许的。
我们希望什么?我的数据,我的所有信息是动态加载。因此在实际的使用过程中,我们是采用间接旋律质,以这种形式为主。
这种形式的在处理过程中这个在处理过程中相对麻烦一点。但是它是符合现代操作系统需要动态管理组中间的需求。因此我们说间接损失是我们现在计算机操作系统对于主从管理的一个基本要求。
这一间是指分为存储器直接间接形式和寄存器间接两种形式。这是我们上一节课所讲的。上一节课我们讲到这个间接数据之后,下面有3种寻址方式,变址寻址、基址寻址,还有相对寻址。我们说这三种方式。他从形式上,从我们这个上课教学过程中,我们把它分别进行了不同的文字描述。
变质寻址、机制寻址消费寻觅者。这是从文字描述我们进行了区分。但是在实际使用过程中,无论是电寻址还是机制寻址,还是相对寻址,他用到的底层的什么地址映射的硬件装置是完全一样的。大家听清楚就变质寻址、基址寻址、相对寻址,我们从逻辑可以做这样判断的描述。但是就进行硬件实际上来说,它都是用相同的一套设备,硬件设备进行完成地质变化。
首先咱们看一下电子形式,电子形式大家可以看一下,首先这个电子寻址它最大的特点,首先我们看一下这电子寻址的指令的描述。电子寻址的指令描述OP我们说他描述操作吗?在指令部分,事实上它的地址码头分为两块,一个什么群指标机位。比如说这一位RX若这一位唯一的话,它代表的是什么?
变形平直,那么变的形式是这样的。那么这条指令中地址码部分除了标题为之外,剩下的我们称为形式地址。这形式地址与变寄存器相加之后,得到我们的有效DPA。这是变质禁止是吧?愿意停止这种形式,这是变形制。
我们看一下这个下一步,通常这个我们待会儿再讨论就辩论刑事。最简单的什么使用什么有关数组操作,就相当于我将数组的首地址放在电子地址最基本RX里面。A就是什么?它的下标对吧?它的偏移量。
除此之外,我们还一种称为机制寻求。大家可以看一下机制寻址,它的处理套路是用一个机制寄存器里面的值与指令中的这个形式地址D做相加,等于得到一A大家注意一下。这是纪律学。大家看一下,从指令的结构来说,它也是一样。除了操作码之外,地址码部分有一个寻址标记位。
这位是RP主要这位唯一的话代表是基质寻址。这表示什么?就在当前的血泪中。当前审理中,我向前向后做移动,就相当于比如说这一段程序和数据,一个在前面放,一个在后面放,通过这种形是我做一个相对位移的一个处理。这是机制选址是吧。
一般来说我们教材上讨论说这两种选址,这两种寻址方式,机制变更值在计算有效地址是是用相同的硬件进行实现的。只不过大家注意一下,我们有个讨论,也就是说变质寻址是普通用户使用,而机制寻址是由什么面向操作系统什么解决什么这个国际地址与物理地址的映射关系。也就是说我们在需求管理是吧,需求管理我们在动态装载我们的代码的时候,在动态状态的代码段的时候,我们对应的这个地址是逻辑地址,不是真实物理地址。我们就机制寻这种方式进行这个实际实际的信息的物理性再定。在定位就是跟我们现在操作系统管理关系。事实上,咱们目前的这个windows操作系统可能大家感觉不是很明显。
事实上在因此这种非常经典的传统操作系统基础上,我们说他的管理方式跟我们功能性是不一样的。在因此link和U里面他有什么超级管理员和普通用户。实际上对于这种地址的使用,也是有特定的程序才能完成。它它这个由于有特别是一些英语是linux这种操作系统,他们对于这个用户权限,什么系统级权限、用户级权限区分的比较清楚。但是咱们因为windows是一种图形可视化的形式,那么事实上对于用户权限这块我们。区分的不是很明确,但是你要记住,机制寻址核心是我们现在套系统中进行需求管理。
做物理技术重新定位的同时,好最后我们相对寻址,相对寻址是基址寻址的变通。我们基址寻址有一个专门的叫基址寄存器,而相对寻址用PC去替代专用的积水寄存器。这种消费群体就像我刚才所描述的,加载程序,加载数据它是相对偏移量。但是我们这个咱们看一下。当然我们说这个也是有标记位的,没有标记位你肯定是搞不搞不定这件事的,是吧?也就是说我们在第三章所讲巡审方式的时候,哪种寻址方式是要根据指令中地址码部分它的寻址标记位来决定你是哪一种去方式是吧?那么后面练习也有,然后大家看一下。
这是相对平直最后一种寻址方式,我们称为页式寻直。页式寻址,这是我们现代计算机对于储存空间管理的一种方式。因为这块内容属于你们操作系统经典。载人操作系统我们实际就真实的主动空间的管理分为断是断是主动管理,液是从主动管理断液式虚拟的就虚存里面断食断液,页式断页式。
夜市寻址这种方式,由于我们现在计算机在装,因为现在计算机在有一段时间我们的储存空间比较小,大概在十几年20年以前,我现在说实话,咱们普通PC机的主存其实也不大?你们做一个什么类似于机器学习、深度学习,第一个感觉是什么?你的内存不够,写成够等等等等。对于这个在早期,就大概在二十多年以前,当时我们的内存只有256兆或者512兆。20公里就是在咱们学校一个主流的实验室配置。在二十多年以前,当时的操作系统我记得是说windows 98。那么你加载一个程序往往是如果把你加载往往超过了256兆的这个主动空间是吧?加载一个程序,而且你的主图空间里面你还运行其他程序,是真正的应用程序的空间,是比较有效的。
早期我们说任何一个应用程序完全将它的程序,它的数据加载到储存里面是不可能的。那么我们就根据什么,我们访问的时间局部性和空间局部性动态,将应用程序的部分程序代码,部分数据进行加载。便于这个管理的时候,我们要用到页式寻求。因为叶是寻址最大的优点是什么呢?每一个叶的大小是相等的是吧?因此无论我主存中的数据换入到辅助空间,或者辅助空间放入到这个主从空间,它交换的信息量都是本大小的,便于管理。实际上我们区分管理,最终大家下去再携手,最终我们会落实到区成管理的断叶式管理。
段描述的是一个完整程需所需要占用的真实的空间大小,段里面再分成一。这个分成一页以后便于什么?我信息交换?你储存给你留出等大小的空间以方便交换。实际上这种专业是早期我们是实现辅助,比如说我们的硬盘和我们储存中的信息的交换。到了开始,我们高速缓存存储器这个阶段,储存和开始交换也是用夜市村夜市数据管理方式进行信息交换。你说这个因此我们对夜市这种存储空间的管理,我们就提出了合作夜市寻页面寻址。
首先对于夜市寻址大家注意下,刚才我说过了,早期的夜市管理是用于储存和辅助存储空间文件系统的数据进行交换。现在随着开始的广泛使用,储存与开始之间的信息交换也是停止。应该说这个是比较经典的,而且应用是比较广泛的。具体来讲,它是将我储存空间分成若干个大小相等的块,或者这里的我们叫区。这每一区这每一个区或者每一个块我们称为一页。在这一这这一页里面我们包含有若干个主题空间,那么大概这个一页里有多少个主题空间呢?现在一般情况下,现在工作操作一般是这一页应该是4K4096个字节,4K?当然也有8K,那个一般是居多。
我们说了这么一页包含了若干储存空间,比如说4K首先我储存分成等大小的区,这每个区我是不是给他能够分这个编号是吧?这个编号我们就称为页号。这多少页是零到第N减一页,那么这个编号就这个对页面的编号,我们称为页面地址。
业内我刚刚说了有4K的空间或者8K空间,这4K空间和8K中间我也要需要给它给出地址信息,这个就成为业内地址。一般业内地址都是从0到40950到8191进行编号。就相对就是从零开始起,就每一页都是从零到M减一这样进行编号。因此我们说对于这样一个主图空间的管理,每一个信息你肯定是放在储存空间的某一页的某个位置上。因此你描述这个新字需要两个地址,信息页号和页内地址,两个信息页面的。我们进行交换的时候,我们进行交换时,将完整的这一页有4K或者8K的内容整体加载到主存储存。相应的话根据某种算法,根据某种最近最少使用原则,挑出那个换入到储存里面进行一个信息置换,这个需要大家注意一下。
对于他大家看一下此时的地址,对于这个以夜市管理为主的主动空间的,他从单元的地址信息就应该包含部分页面地址和页内地址两块。比如说我一个16位地址,它是页面地址八位,页内地址八位。那么八位大家可以看一下八位二的8次方是256是吧?二的8次方大家看一下,因为它总共是16位,二的16次方是64K对于这64K可能大家没有什么感觉。如果你们学最早期的8086路边的话,64K是标准的一个数据段的大小。64K那么按照我刚才设计八位页面地址,八位页面地址64K能够分为0到255页,每一页是0到255个字节是吧?这是八位页面地址。
八位页面因为为什么是64K的?因为大家可以看一下这地址的总长度是16倍2的16次方,是不是64岁,对不对?是这么算出来,如果页面地址九倍,业内地址七位,那么我们是怎么进行设定的?就是我对周四K分成了512个。这个应该是反对,这是反的。就是应该512个页,每一页是128个字节,这应该是下面的这个是吧?
这个对于这种行这种页面寻址,我们有几种寻址方式。咱们书上讲了三种,分别是林业寻址、当前页寻址和夜寄存器寻址。大家注意一下,夜市寻址跟我们前面。讲的寻址方式完全不一样。前面的寻址方式行驶地址要么进行类似于指针的多次查找,或者像这个和电子停止机制停止相对停止做某个寄存器的值和业这个指令的形式地址做甲方预算夜市寻址的地址信息。
大家看一下,一A等于零斜杠A这斜杠在这表示什么拼接?这斜杠前面是页号页内地址,斜杠后面是页面地址。对,相当于。灵验神水对应的就是我主存中的第零号液,对应主存中的零号页。大家可以想这个页面停止的对于有效地的表示,你别弄差了是吧?这个我们在这还是有要求的。这是林业水质,也是它对应的林业性质。最大的特点就是它对应的是主存中编号为一类业务的寻址。
第二种寻址,我们是称为什么?当前页寻址。当前页寻址这是我们用最多的,当前这个裙子一A等于什么?PC的高位部分与A进行拼接,PC的高位部分对应的是我的页号,这个A是什么业内相对因数,大家可以看一下。
当然我们说这种评审方式,画的还是不够准确,然后练习是有写的比较清楚也扣。也就是说我们夜市寻址在指令中的低密码部分也是有标记位的。你光这一看能看出来就是它是页式平直是吧?当你知道它是个页式平直,按照游戏规则进行拼接就OK了。但是你如果不是,那我们就要注意一下。好,这个过程我就不想多啰嗦了。还有什么液寄存器寻址也是它有个标记位是吧?这样我们对于寻址方式我们就讲完了。
应该来说对于指令的寻址方式,我们标志方法一般有影视显示和影视。咱们扩练习讲的比较简单,要求只要求到显示就标记位。就指令中你通过低芝麻字段的相应的标记位是0,还是一来确定它是哪种方式,然后按照这种询问方式规则进行有效审计,也计算就OK了是吧?
还有一个方式是影视寻址。那么这影影影视寻址,一般来说就是在对指令系统设计阶段,我们进行了隐含约,这不在咱们考考试范畴。但是在实际的工程应用过程中,当你我们指的是什么?你做处理器的指令系统设计的时候可能会设计,这点需要注意一下。
显示的方式,这是我们要求的OP地址码部分分为1分之2。MOP描述的是什么?我的寻址的标记,对,A是刑事地址好。由于我们指令,有些指令是进行什么双操作数的操作,不同操作数可以采用不同的寻方式。比如说这里move AX逗号,BX括号,相当于AX是计数器,直接BS上的寄存器建立器是吧?比如说它指令如果包含了两个或两个以上操作数,每一个操作数都可以采用不同的选择方式。当然这个就是在交接的设计过程中是比较麻烦的对吧?
当然我们讲的是比较简单的一种形式,把问题作为简化。咱们出厂在过去。现在应该是没了。过去曾经讲过8086的水准方式。大家可以看一下8086这种方式的一种处理方法是吧?因为咱们书上现在这块讲话,既然讲话了,大家就知道这些基本的。那么我们说真正的操作系统的指定的生产方式,一定是这几种寻址方式的某种组合去得到。
没有像这么简单的,我们把问题简化以后给出了9种。比如说8086,它的工作方式已经成为机电水平值一个指令中,是吧?在某些情况是继续明确辨识放在一起。
好,下面咱们看一下堆栈操作。堆栈操作像咱们书上第三章重点就是第一节和第二节后面的都是什么?这个没有什么特别关键的东西,没有什么特别关键的东西。下面咱们看下对战。那么堆栈在一年以前,大家在学习数结构的时候,我们是作为一种数据结构加以描述。到了咱们计算机总面积比较多,我们看一下这种数据结构中所出现的堆栈,在我们机器硬件上是怎样进行对应的,既然你设计了数据结构,数据结构有对战这种数据结构,我们看一下你对账在我们计算机硬件上他是做如何应对的。如果你在意见上不解决这个问题,那你就推断这个数据结构你没法使用。下面我们看一下我们的这个堆栈。
堆栈最大的特点,它的数据空间的存储方式有四个特点。归纳一点,有什么后进先出或者先进后出是吧?这是展示结构里面讲过,别啰嗦。在我们堆栈的硬件实现过程中,我们分为硬堆栈和软堆栈两种实现方式。其中应对站是用专用的寄存器进行硬件操作的实现,这种对应堆栈我也称为寄存器堆栈,就是使用一组专用的寄存器构成寄存器堆栈也称为。
硬堆栈这个堆栈的特点,栈的顶部这位置是固定的。就站在底部就进行什么堆栈操作的那个那个位置,我们称为战场,这个位置始终是固定的。只比如说指向这个寄存器的第零个还是第N个,一定是固定的,固定不变的。那么寄存器组中各个寄存器之间是相互连接的,而且他们之间具有相应位自动推移。也说这些寄存器的所有的第零位最右侧的寄存器的这所有寄存器的电流位之间是有通道的。
那么实现我的入站和出站,所有的第零位是有专门的连接。第第点第一位也是可以连接。大家可以看一下,这里有K的杯架和K的寄存器,每一个寄存器的对应位,比如说这是第零位,就所有的K的寄存器的所有每个寄存器的第零位有专门的总线进行连接。而且大家可以看一下,这是双向箭头,双向箭头。大家发现这跟我们之前讲寄存器数据传输的方向是不太一样的。这是什么?这是上下面是所有定位,我用线连接第一位、第二位一直到第N减一位都是通通边的,这是硬件堆栈。
硬件堆栈我们说了它的栈的顶部位置始终指向的是寄存器0,寄存器零对吧?或者你可以也可以指指向寄存器K减1,这该怎么设置对吧?这两个都无所谓。
这种寄存器堆栈,这是我们早期利用什么专用的寄存器完成特定的堆栈操作。这种方式大家看一下它的优缺点,怎么去评价一下。首先它是用物理的寄存器进行硬件实现?他的入站和出站速度是特别快的这是它的优点,就是处理速度快。
缺点因为我们堆栈是由K个寄存器构成,它最多能保存这个信息。当你有第K加一的信息,你要入账的话会出现什么问题?第一还是可以进去。第二,原来位于K加一设计存器里面的信息将会丢失,这是他的最大问题。比如说由于他的存储空间有限,当他超出了他存储能力,那么对应的数据将会丢失。那么你想在数据存的过程中,你数据丢失了肯定是不行的,是吧?因此这是他的一个缺点,怎么解决呢?我们就给出了什么记存储器堆栈。
存储器堆栈我们也称为软堆栈,他是在储存空间中画出一段区域,按照后进删除的方式进行这个储存空间的管理。这种方式最大的好处。也就是说你储存空间只要有足够大我的数据不会存在丢失问题是吧?不会存在出现问题。这种方式我们称为软堆栈。
对于软堆栈来说,我们的特点又跟刚才的给人的堆栈区别。大家看一下我们战营堆栈的底部和地堆栈的顶部,这两个哪个动哪个不动。在在应对站我进行数据操作的那个K0寄存器零这个位置设备固定不变的。而我们软规律恰恰反过来,站的底部是固定的,而站的顶部是动态变化的。
我们有一个站顶指针SP进行指向?不同的硬件设计者对于SP的设计有有差异是吧?有的SP因为你们要学学不出以后都很清楚。有的SP指向的是站的顶部的一个空位置,有的SP指向是站在顶部的那个存放数据,这个位置有差别。比如说你们看一下不同的数据结构教科书,它的讲法不一样的。但是大家注意下,我们这里讲的这个SP占指针是指向存有数据的那个组成单元,是吧?你不要到最后我们做做操作的时候给弄差了。
根据大家注意一下,由于我们的软堆栈是储存空间画出的这一段逻辑,空间站的底部位地址和站的顶部位置都属于主题空间的地址。当出现了SP指向一个低位地址,那么这种堆栈我们成为自己向上生成的堆栈,这是一种形式。有的同学说如果我把战略几个地址我换一下行不行?也可以,没问题。但是对应的我的入栈操作和出栈操作,操作的指针变化不一样。比如说FP指向一个低位地址,你要入账的话,是不是我意味着SP要接着做SP减一是吧?SP减一以后我在路上如果高有恰恰相反是吧?
这个请大家注意一下,因为咱们书上教科书上在这是大概讲了讲。大家看一下,我们这做了约定,就ST始终指向占比的满单有什么意思?指向存站顶部存了信息的那个单元。因为不同教科书在这块处理方法不太一样,国内外不同的老师写的书不一样。咱们蒋老师这个教材默认是ST指向一个站顶部存放数据的那个单元是吧?有的同学说你叫真拿一本,其他老师的书说他可能是指向空的,有这种是吧?就是希望大家注意一下。
对于自底向上生成的,大家先注意一下,我要入账的话,首先SP减1,然后数据再入账。比如说当前SP指向了它的顶部位置,是储存中的2000号单元。此时我要把这个A入账的话,那么大家看一下我要做什么样的操作。首先SP。大家看一下SP括号分SD就只跟单元所同的2000做1个减一操作,变成了1999。就是他这是1MF16进去是吧?好,那休庭庭待会再说。
第三张的作业,刚才我在那爱北爱北里的咱们的课程群里,我就录制了。我还没想好哪几个班交,大家先坐着是吧?我下午回去以后,决定这个班级去交。因为咱们的人多,120多人。每次我觉得你们上课人数肯定不够,对吧?有的缺的多,你缺的少。我的观点是什么?你来不来无所谓,但是我会秋后算账。
什么意思?比如说你期末考试,你说你考个70分以上,OK我不为难你,不来觉得我觉得你水平高没问题。但是你说你考个五六十分,不是五六十分不及格是吧?又开始发邮件找人找我,对于这种情况下,我绝对不会手软,对吧?咱丑话说在前面,你们都是大三的同学了,再让我说这件事真的没意思,是吧?
这个我因为现在跟你们说,你们说都相对来说都是好同学,反正上课来了。那么出勤率出勤多多,实际上我每次点名实际上对于出勤的同学是一个好处?我是这个点名,我随机点,我看哪天人少我就哪天点是吧。那么这个算在你的实时成绩里面,对吧,你没有还是怎么着,我都可以拿出所有的证据来是吧?
这个就是说全看个人自己,我就说这么多好,刚才我说了,刚才ST是2000,因为这个两千是一个16进制,简易后变成了16进制1SS是吧?那FF你可以琢磨一下,换算成。十进制1FF大致是多少是吧?算一下,有一年我记得有一年考研题就是就是一个两千,搞坏了很多。一句话,1FF已换算成实际数大概是多少,你自己琢磨一下。
首先当前SP指针的值为1FF,就刚才我做了原来的值是2000。做了S做SP内容简易以后,这个SP当前的主存当中的地址信息是1FF。此时我做什么这个陆战操作?1FFA到SP就A的内容寄存器A的内容放入到SP所指向的管理。这是自向上生成的对战的操作。
那么出站大家留下我刚才入站是先修改栈指针,然后再入栈。而出站反过来就是先弹出数据,然后做SP内容加一操作是吧?这是一种形式。那么咱们书上。
我们这种规范这个书上这是多少页?57页图3-10讲的是正堆栈,我们称为自底向上生成的堆栈。自底向上生成堆栈,还有一种堆栈是自底向下生成的对象,对应的操作大家琢磨一下?考试的时候我把这个字给它变变一变,大家能不能写出来对吧?
记住我说的话,下面咱们看一下堆栈操作,堆栈操作是不是主要完成一个入栈和出栈。在计算机发展历史上,贵公司,开发过这个船堆栈计算机也是它的储存空间,完全按照堆栈这种形式进行一个空补充空间的设计。基于堆栈操作的这种规则进行补充空间的设计。当然说这是在历史发展过程中,一个实验室的产品探索性的东西,最后没有工业化。好吧,现在我先我们只能在历史博物馆或者一些文献中能看到。
那么追债由于他数据要进行操作的话,一般来说他完成什么?比如说我做任何的预算,他都是先弹出占领两个操作数,完成对应的结果在入站结果在入站。因此对于堆栈这种数据结构所使用的指令,通常我们称为林地制制度林地制之旅。
比如说我们还是刚才的就是上一讲的A乘B加C减B除以1加A如果用这个零指令来实现,大家可以看后视A后视B然后什么MUL。MUL就是个零地址指令,它将堆栈中占领的A和B弹出来,实现什么A乘B之后,把A乘B的结果再入栈,就MUI了干的就是弹出两个数做直接运算结果再入栈,这他是00地址指令是吧?这跟基站配合使用的。然后什么透视C透视C不是C此时大家看我们做了下一个ADD,相当于因为MMUL它做乘法的结果是要入账的。你push c以后,此时堆栈中有两个数据,一个是A乘B的结果,另一个是C弹出来以后做A乘B就做A乘B的结果,与C做加法运算ADD?Push d什么SUP减法操作等等等等,这个过程就完成了。那么根据指令的操作,出站入站指令缓存三次,算术逻辑指令缓存四次,OK总共做41次是吧?就是这块。好,这是有关堆栈操作,我们就讲这么多,下面咱们看一下指令的类型。指令类型讲的什么?
如果你设计一个指令系统,应该你所设计的指令系统应该具备哪几方面的功能或者能力,这个请大家注意一下。说白了这里第三节讲指令的类型,核心干什么?讨论什么一个完备的责任系统应该所具备的基本功能,说无论你是复杂的。这个大型机的处理器的指令还是一个芯片上,就是一个冰箱上用的这个片,嵌入式的八位16位的这种处理器的CPU所用的指令。你在设计的时候,你应该考虑哪几方面的指令?你考虑到了,说明不管你的功能这个处理器的功能有多强大,但是最起码你一个责任系统是一个完备的程度上是吧?责任是责任系统是完备的。说白了功能都有了,只不过是功能强弱的问题。
这里第四节指令卫星就要讨论这个问题。作为一个完整的指令系统的设计,我们说我们的指令应该具备四大类指令。分别是数据传输类指令,第二类是运算类指令,第三类控制类指令,第四类是IO指令。就四大类数据传输、运算控制IU也是一个责任系统,具备了这四个方面的能力,那么指令是完备。当然你说你这传输的指令是一条还是三条,那那是性能高低的问题了是吧?但是你基本功能都能实现,这是我们要归纳的结对于数据传输类指令,它主要实现计算机内部部件与部件的之间的数据传输。有可能是什么?
寄存器之间,寄存器与主存之间,主存与主存之间。咱们书上分的什么普通传输类指令,比如说木指令是吧?普通团队指令为什么叫普通话指令?比如说这种指令是具备了数据复制性,比如说默默A逗号B?把寄存器A里面的数据写入到寄存器B里面,而且我寄存器A里面的数据不丢失。那么通过目录指令之后。这两个寄存器或两个存储单位里面信息是相同的是吧?是传输类指令,那就普通传输类指令。
除此之外有没有特殊的?因为咱们这气疯了,我就不想在这啰嗦,没啥意思。堆栈操作的入栈出栈就是一种特殊的数据传输的指令。入站数据写入到对站出站,从堆栈中读出这个数据,这是一种特殊的是吧?而且这是应当双方把它设计为,传输位置,这没问题。
还有一种极端情况下是数据交换?比如说我们C语言有两个变量进行信息交换。一般来说是A的变变量A和变量B的值做个交换。一般情况下我们是用的第三个中介C等于A,然后怎么着用中间变量C来进行信息交换。事实上有些计算机为了简化两个变量信息交换,专门设计了数据交换指令。
数据交换的指令,这也是属于传输的指令。这种传输的实力最大的特点,信息交换以后,A和B的值都存放在对方,对吧?两个寄存器的信息做了交换,做同时做了改变。这是第一类所谓的传输类指令。第二类我们称为运算类指令。运算类指令其实就两种。因为我们那个加法器实际上在我们CU内部我们称为什么?ALU算术逻辑单元,就是我们加法器实际上我们称为算术逻辑单元。
说白了运算包含两类,一个是算术运算,第二类是逻辑运算。逻辑运算我想在座各位都很清楚,你们上在大21学年学了两门课,离散数学、数字电路是吧?那么这些东西最后你学了这么多,你怎么去运用呢?在我们计算机的CPU指令系统中,专门有与之对应的算术指令和逻辑指令。说离散数学,讲的就是我们我们算术指令中的运算类指令中表示的操作。虽然说指令比较好说加减乘除加1减1等等等等是吧?这算术指令。
一般来说,算术指令与与两位数相加通常会影响这些标志一位进位标记位、溢出标记位、权利标记位、机偶接偶标记位、政府标记位等等等等。这些标记位的作用是什么?在我们第我看一下第一第65章,第七章讲中央处理器的时候,我们会讲CPU内部结构的时候,我会告诉大家这些状态标记位的作用是什么,用于CPU对你的运算过程的监控。好吧,你要溢出了,计算机监控你的溢出标志机位溢出了,它会终止运算,给你报错是吧。那么有进位应该有什么一个信号是吧?给CPU就说白了CPU会通过监控状态标记位的零态或者一态来判断当前运算过程是否正常进行。这个就是后面说白了就是CPU怎么监督,说白了什么CPU监督,说白了就是控制器对于你运算过程的监督,就是这样来实现的。
好。算指令我们就讲的不多,下面就我们主要看一下逻辑运算罗运算。一说起来罗运算,大家学过的算数学学过数电路。就是说白了逻辑运算是属于或非异或,这就是逻辑运算了,对不对?但是我们在这儿会讲一讲这些与或非运算的应用。这个应用要和我刚才所讲的什么CPU兼顾状态标记位密切相关。比如说这一般我们说状态标记位是单个单个二进制比特位。
一般来说C分内部将所有的状态标记为构建一个状态标志寄存器是吧?寄存器有八位有16位,这个八位或16位。既然是中标标记,每一个标记位状态设零是一,它代表一个特定含义。那我怎么对这一位进行判断呢?这里我要用到我的逻辑运算,比如说就刚才我对特定罪进行一个判断。比如说这是一个状态标志寄存器里面的信息是吧?因为状态标记域的信息,我判断说我是每一位随机选取某一位进行判定。
比如说我要对这位状态是零还是一进行判定,那么大家看一下我怎么操作这个数,我与0001000做一个操作,做一个与操作,大家看一下我会得到什么?000X000,这就是这个二进制运算的一个结果。正常操作吗?0和任何数都有操作,一定是零,一和任何数做一个你操作是对由对方状态来决定的。那么通过这个时候就能够准确看出这一位是零,对吧?这就是一种简单的对状态位的检查。
因为指令中CCPU内部的状态标记为每月是什么功能,他事先是知道的。因此我可以设计很多逻辑运算的操作。对于特定的做一个状态是零时1做1个检测,那么检测出来是零还是幺是代表什么含义,它就不会知道是吧?这是对特定位做一个检测。
第二是什么?对特定位进行一个清除。比如说我对这一位当前对于这一位X我用红色标记的设零是一,我不知道是吧,那么我要用到这寄存器,那么怎么办?大家可以看一下,我以这个数00111101这个数做操作,结果是什么?是不是对应这一位变为零了,就对这位我进行清零操作。
有时候我们说的什么对二位对特定位进行检测,对特定位进行清0,它对应的是就是使用到了我们逻辑运算的补货费?如预算过分。OK对应的指令是吧?ADDAL逗号FDH就是对特定位我做一个清零操作。那么还有什么对特定律进行置位操作?
我们第一二章课学过肌肉校验?我的校验率是至0还是至1,那我怎么怎么进行操作?就是告诉你操作方法。比如说对这一位置为什么就质疑,这就比如这一位我现在放中间,如果是这个就算是放在前面了是吧?OK.
大家看一下,刚才我用了两个旅运算,这个V表示或者算一个数,跟0111做一个或操作。你看结果是什么吧?X1SX,这就是对于指定位进行质疑操作。大家看一下对特定位的检测清除至?比如我对状某个状态标记率是0,还是一进行置位,是不是我们这个操作就OK了?
还有什么案例修改,我们采用抑或运算。因为我们的异或运算规则的公式,A一或一等于ACAE或0等于A是吧?我就说白了就是按照E或的计算规则OK,那么通常我们用的是第一个就是AE或E等于AC因为我们前面比如说源码变成补码,按位取反的为加剂,是不是?我可以做个硬货操作,对吧?别说我们前面讲的有很多东西,你真正把它落地变成机器的自动执行,我们是套路,只不过我们过去讲的比较散。这个点告诉大家,大家没有串在一起,而我们串在一起他发现很容易。有人说原码变红码,否则除符号位,按位取款末尾加1,这是告诉你的方法?
就是用逻辑运算中的异或运算就可以实现按位的取分。比如说X与这个0001000做一个异或操作,那么结果什么?这一个变成了XKOK。案例修改。这个我们就告诉大家对于逻辑运算的实际应用是吧?逻辑运算的实际应用就说白了发布一下大家对于这些运算,你别高高在上,你知道他什么他怎么去用,还有什么太符合,什么叫判断呢?
就判断两个数是否相等。那你们说在计算机内部如何做判定两个数相等,实际上我们用的是因为A这个A与AE或的话,它结果是什么?就是因为这个错误清零等等等等。那么什么这个什么判处和什么什么这些东西我就再不给大家去啰嗦了。就是我们逻辑算的各种应用,比如清零AE或A本身就整个数B2,那么判符合两个数相等的话,AE或A他结果是什么?对吧?
对,这个你你你可以琢磨一下,实际叛徒和清零虽然都是一个炮是吧?有的地方我们叫清零,有的地方是判符合。因此我们说对于判符合我们前提什么,这两个数是大于等于零的整数。这个我可以用这个运算快速的进行大小写的是大小的比较,对吧?好,这是第二类。
第三类是移位运算符,我们又细分为算术移位、逻辑移位和循环移位。又分为细分为左移和右移,所以底位我们用的是最多。所谓算了出一位就是数据整体向左移动,每一动一位,后面最后一位补0,相当于乘以2,实际数的乘2右移一位相当于数除以2,那么我们实际这是左一位,相当于乘以10右移出了一个十吧,套路都一样。大家注意下,这个算术移位是带符号的一位怎么移?现在我说的是比较,我们说什么保持操作数的符号变那个怎么取得变化是吧?咱们在下一章第四章再讲二进制的乘法除法的时候要用短一位。到时候我们再赶快去把这个细节做一个深入剖析。逻辑一位,由于它不含这个,符号公司,你看就没有说。
第一说还有个循环移位,带循带进位的移位和不带进位的循环一个两种形式。这个咱们书上那个书上59页图3-11就是对于移位是吧?就是对于循环移位就是C和D大家自己看一下,一个带定位器前一个不带,那么这个我就再不啰嗦了,就算运算算术类指令,运算类指令分为算术、逻辑,还有这一位这三一种形式。
在第二运算类指令中,我们重点讲解了逻辑指令的应用。比如这是在我们实际的计算机控制器在监控运算过程的时候,我们经常会用到?而且大家通过我们逻辑指令的使用,很清楚知道我们所说的按位取反我怎么操作,对指定位进行质疑还是清零我应该怎么操作,都是用逻辑运算符监视下,这个相加是有限。
好,第三部分是控制类指令,那么控制类指令这个就比较简单了,这跟我们这个C语言所学的三种形式是比较比较相类似是吧。那么转移指令一般分为无条件和条件。对于C语言的if,就是C元的go to语句是无条件。C语言的if是曹县的。
这个我就简单说一下,咱们老的PPT里面对于调这个子程序调用讲一堆是吧?过去就是大家在拿清华那本教材的时候,就是蒋老师前些年出的清华的教材,这块专门讲了很多。但是对于新版的就人有版,我看蒋老师的书是基本上没讲。你从我们这段的网页上是吧,对话往下讲看,就是指针去调用。这个你们自己看一下,我们就不做要求,就是说只针对调用核心的问题,就是说什么?
核心的问题就是子程序调用。这个大家可以看一下,所谓子程序大家可以理解成一算可以复用的功能,完整的代码和大家不一样。子程序指的是可以复用对吧?可以被多个其他运算所复用的程序,这里我们叫程序。比如说C源我们叫函数是吧,这个再加叫一个累,是吧?这个反正各种叫法都有,函数、类、接口,反正你能复用的各种套路。
核心在这,咱们书上过去老教科书上主要讨论什么?我们返回地址在什么地方存放,会影响你这个指针调用能否正常执行。就讨论这件事,就返回地址在哪存放一种最简单的,我把它放入墩站里面。这种事无论是递归调用,无论是嵌套调用,你放入把法规地址放入一站都正常执行。而在有些程序设计过程中,返回地址是放在什么?这个子程序段的第一个字单元地址。对于这种情况,我们嵌套调用能实现,而递归调用是不能实现的。
就是这个在老的教科上花了很多篇幅去讲,但是新的教科书上这块他去了是吧?也是话说回来了,这多少年的考研,408考试是没有考过。因此蒋老师我看是去了,在这儿我也就不啰嗦是吧。
第三最后一部分就是I操作。I操作我们前面讲了,你的IO操作指令跟你对于外设的编制方式密切相关。如果对外设进行独立编制的话,比如说我们英特尔的处理器就属于独立编制,有专用的还有指令来实现CPU对外设的访问。还有一种比如说是阿米架构的,它是统一编制是吧?那么它就没有专用的IO指令。比如说就用我们前面的通用的什么传输位指令进行对外设进行访问。也就说这种IO指IO指令是否真正独立存在,跟我们外设的地址的编辑方式密切相关。
一种刚才我说了,你像8086C英特尔CPU,主动空间是一个地址从0到N外设空间也是从零到N储存空间我用木屋指令进行访问,外设中间我用in指令二次指令专用的这个外设访问指令进行访问,这是有专用的IO指令。你像我们的M架构,比如说这种小的那种小的嵌入芯片,它的内存,它的存储空间区别的不是很明确,它就统一编程。此时可能就目前就担当了你IO操作的功能是吧?这个我觉得不落后。比如说有in out指令是我们8086,还有统一编制的,就没有专用指标。
好,那么这咱们教科书上这个应该是取消了,过去咱们这块还写的挺多。我看一下现在这块儿基本上咱们教材从62页到66页,就是四面书讲的比较过去讲的这块要是要将近近十页。他重点讲了英特尔叉86架构的扩展程序集分别是什么?这个不啰嗦了不啰嗦了。
下面咱们讲最后一个问题,有关指令系统优化要记住两种,两个概念。一个概念就是什么CRSC,知道这个名词是什么意思,这个我们要求大家掌握?CRSC翻译过来被称为什么?复杂指令系统计算机?因为每一年。一个冯诺依曼的基本思想,一个是这个名词还有risk。这几个意思就是复杂指令,指令性计算机今年指定系统计算机,就是就我要求大家掌握的,但是每一年白送都有人不给,都不愿意拿那东西。大道那么这个概念大家要掌握,就是CRSC它代表什么含义?它指的是复杂指令性计算机,那么复杂的定义器的计算机,这是我们计算机指令发展的一个必经阶段。
早期我们的CPU处理能力比较弱是吧?最早只能做科学计算,后来我们要进行文字处理,视频图像的处理等等等等。为了满足这些新增加的功能,CPU对应的指令系统的设计者,为了满足新功能的应用,它不停的在扩充指令系统中的指令条件,这个是每个人大家都能理解?CPU出来了,有了新的需求那我怎么办?满足新需求我增加新的指令,可能一年加上一条两条问题大。但是你比如说你这个CPU用了十年或20年,那每一年增加两条,那么一二十年是不是这个指令系统所包含的指令的条数是越来越多是吧?
刚才实际上我们给大家罗列了这个指令证据。因特8086从2000年之后,它逐步扩展的指令引擎。比如说MMX什么是一个多媒体处理的整理器等等的3D纳等等等等。大家看一下它是CPU的功能中不停的增加,它主力企业条数增加。这样看似是符合我们的需要是吧?看似符合对我们需要CPU要应对新的功能的增加可能条数,但是宏观的讲,一个CP用户的若干年,是不是你的指令机是越来越庞大?你的发展上限在哪呢?
事实上有一位英国建朝的数学家,在1989年对于指令中的指令系统中的指令的使用情况做了一个调研,他给出了这样的结论。这是英国剑桥大学的一个数学系的教授写了一个科研推广。告诉大家的结论是什么?那些比较简单的举例仅占人系统总数的20%,但是使用占80%。而其余复杂的指令占据了总的指令系统的80%,但使用率仅占20%。这叫28是吧?基于他这个统计结果。
这个结论发表之后,各个CPU的生产厂商基于此规律。做了一个指令集的就CPU所使用指令集的精简与优化。也就说说这个复杂人性计算机符合这指令发展一般人的认知。但是这个报告就是这个亏本对于指令的统计,对于我们的后续的影响是比较大的。因此基于这个理念,就基于286的理念,人们开始对于指令系统的合理性进行研究,最后提出了精简指令。
那么提出了什么risk就精简指令系统。我们CPU现在讲什么?基于英特尔叉86架构的CPU,基于RM架构的CPU现在最时髦违反?今天这个新计算机认识就是这里的论改精简指令系统之间,risk我们是指的是硬件CPU处理器?
这个请大家注意一下,这里就用到了一个286,不同的教科书上的286的应用是比较多的。咱们是软件工程专业是吧,你们下学期估计要学一门课,咱们软件工程的一门课叫什么?软件项目管理会讲我的进度管理,进度管理就要用到28是吧?这个所谓的项目经理要拿出8%的精力去解决20%的关键问题。
2860用除此之外,银行排队,普通客户去银行发现有两种排队人员,一个所谓的VIP,一个普通用户向我向大家做没有错。他这个划分就是9286 20%的贵宾,高端客户给银行提供了80%的利润空间。剩下20% 80%的只有20%的人空间就是满足实际上这个概念在我们别的教科书上会以不同的名词出现。这个说的直白点,286是吧,有的叫什么,你们可以看一下,比如说我们这个网络,就相应的其他的提法。好,他们可以分,刚才。
行。
好,那么咱们有关第三章的内容,我们到此就算是讲完了。因为后面有些就这个内容,蒋老师是新书上也都没有那个。因此我们樊大入一下,我们考试的时候,凡是因为我给的是老版本的,我会下去。今天回去以后,最迟明天上午会把我们老版本的这个课件会放到咱们的爱你的钉钉群里面。向大家注意一下,凡是我上课没讲的内容,期末咱们肯定不涉及,是吧?咱们就肯定不涉及这个,向大家说一下这点就行了。然后作业布置了,明天上午会通知下周是哪几个班交作业。
好,这是第三章。那么第四章。咱们的这个书的安排跟一些学校的安排不太一样。有的书有的学校是把第二章和第四章放到一起,专门讲运算受表示之后就直接讲,就算咱们教科书是数的表示是单独第二张。然后第三章讲指令,第四章讲运算器的运算过程以及运算器的涉及,这是第四章。
第五章就是讲有关存储器是吧?咱们新版的教科书存储器是分成了两章,第五章和第第六章,第六章主要讲cash,那么过去我们再放在一起,这是第五第六章。第七章是我们老版本的教课件的第四章主要讲这个控制器、指令运算器、存储器控制器,控制器完了以后是I控制。然后最后一章有关利息就讲这么多。那么大家都脉络大家都学完了以后,要这本书从第一页背到最后一页,你背不下来,我也背不下来是吧?但是他内容是有逻辑联系的。
好,咱们看一下第四章,第四章是什么数值的机器运算。什么叫数值的进行运算?说白了就讨论我们CPU2大组成部分有关运算器的硬件设计,以及运算器如何实现二进制的加减乘除。第四章就在这两件事,讨论AMU的设计,讨论这个二进制的加减乘除的运算规则,这是第四章的内容。
好,下面咱们看一下第四章的第一节,有关算术逻辑,算术逻辑单元的基本构成。在过去很早就咱们计算机组织企业做有一个要求,就是关什么用这个AMU加法器的设计问题,重点是放在4.1这一节里面。咱们可以看一下4.1这节,我们从能够实现一位二进制加法运算的加法7FA看,他完成一位二进制移两个一位二进制数做加法运算。那么它的和值,它的定位分别对应着我们的运算的电路的逻辑公式是什么?
然后再看一下它怎么进行硬件实现的。好,首先第一个概念我们称为加法器,加法器是由全加器就以再配合必要的逻辑电路构成。什么叫全加器?具体讲能够实现基本的加法的单元叫全加器。具体讲它有三个输入量,两个输出量。大家可以看一下我的全家几个画法,FA全加器的画法。大家注意下,我的箭头都是有方向是吧?而且画法还是比较讲究的。
其中有两个输入端是放在下面,分别称为AI和BI就说白了A是一个输入端,B一个输入端,我要做价值运算?还有一个。这两个输入信号之外还有一个CI减一是定位信号的输入端,敬畏信号是吧?进位信号服务端与之对应的CR之一,在运算过程中A加B运算过程中有可能会产生进位,进位的输出就是CI减1,那么A加B的和值就用SI进行输出。因此我们说他这一个全加器有三个输入,两个输出。
大家都看这画法是有讲究的,你只能画成这样,不能转90度,那就都是错误是吧?它代表含义,而且进位信号是从右到左,进位信号输出这是水平方向运算是从下往上,那么三个大概三个数量就是操作的数,A2B2和第一位传染定位信号CR点1输出量本位的核值SI和向高位的定位情况CI这是在这看这个FA是一个黑盒子是吧?大家知道里面的结构,那么这结构就是FA如果打开这盒子盖子里面应该是怎么来实现呢?大家注意一下,这用到咱们数字电路相关的。
什么这个不二又转的公式化是吧?公式范围我们这里直接给出了数量与输出量之间的逻辑关系。比如SI等于AIE或BI加E或CR减1CI等于AI乘以BI。这A乘B相当于是操作,然后什么加上ARE或BR乘以CR减1。也就说FA这个黑盒子打开以后,它内部的逻辑电路就是利用它这两个公式用于门这个或门异或门设计出队伍第二个门OK是吧?
光有一位的二进制的运算显然不满足我们的实际需求?因为一位能干什么?我给你任何一个数,最起码是一个字节,最起码是两个八比特位的数字作价格是吧?那么两个八比特位就两个字节的数做加法运算,大家琢磨想这件事咱们怎么干,怎么去干?对于两个字就两个是就每一个数都是一个字节,八位是吧?AAA是八位,B也是八位,两个就两个就是两个数分别都是一个字节,那么你要做加法运算。
咱们怎么进行加法器或者全加器的设计呢?第一种方案,在座的每个同学都能想到,所谓的串行加法器。就给你一个调价器?这两个八位从A0加B0开始,第一步做A0加B0?然后第二步A1加B1,第三步A2加B2。那么逐次就跟咱们家小学所学的加法运算的过程,由低位向高位去做,这就是创新加法器是吧?创新加法器我用一个FFA全加器就能实现。
那么一般来说我们说了,如果操作数自成为N那么加法要分N次来进行。每一次只能产生一位的运算,就每次运算中产生一味的和,那么这是创建加载器。如果你你整个CU里面只有一个FA,显然这个性能有点低了是吧?
有的同学说我怎么进行改进的?你不是N位吗?每个操作数N位,那么我们每一位给你一加安排上一个fa。这是每个人朴素的想法,就是说两个N位二进制N位二进制数做加法运算。我每一位给你安排一个FA那么总共给你安排N个X这个对于大家来说,从工业成本,从经济承受力都没问题,可以做到。
但是你一个具有N个全加器的这种加法器,它的运行效率会怎么样呢?我们说在极端情况下,有N个全加压器构成的B级加码器的性能跟我们创新加码器的性能是一样的。怎么讲?我给你两个数,一个数是全为1,另一个数是001,就最低位为1,其他位为零。那么大家发现如果这两个数相加。
一个创新加法器和一个具N个全加器的平行加法器的运行性能是一样的。是不是因为你虽然是有N个全加器,但是你高位的运算要等待低位。运算结束产生定位信号的部分高于在利息是吧?因此我们说对于并行加法器最长的运行时间是由定位信号的传递时间来决定,这个没问题。
对于N个全压器就具有N个全压器的并行加法器来说,你怎么样设计能够破解这个极端运算?一个权威一个是0001造成的进位信号,由第一位第一位到第三位逐级产生定位信号。这是一个很关键的问题,你这个破解不了,你加再多的FA性能跟只有一个FA的这个加速器性能是完全不一样,是吧?而且大家发现这个运算很极端,他发现最低位的运算的界面信号要逐级影响其他位置,那已经破解了。事实上我们有很多手段,因此我们说提高并行加法器的速度,关键是尽量加快定位信号的产生与传递速度。那么好,咱们看一下我们怎么去做这件事儿。
我们下面为了解决影响变形加法器的进位信号的产生传递问题。首先我们拿起我们的数学推导的能力,我们看一下我们进位信号表达式,就CR等于AR。乘以BR加上ARE或BR乘以再乘以CI减一看它。我做怎样的数学公式的推导,就能够解决我敬畏信号产生传递速度的问题呢?大家看一下,首先我们要对于A2乘以B2和A2E或BR我们有个名词。其中AR乘以BR我们称为进位产生函数,AR乘以BR称为进位产生函数,用KGI所替代,那么ARE或BR后面的这这个ARE或BR,ARE或BR我们也有个公司叫敬畏传递函数。
被称为敬畏传递,就AIE或BI称为敬畏传递函数,用PI来表示。那么它的含义,这个A价格,这个GR和PR的含义在这我就列出来了,我就不给大家去讲了。我们把这个公式这么描述了以后,下面我们先简单推导一下C1、C2、C3界面信号的一些特点。那么咱们看一下,这是C一是吧?C一等于G2加上P2乘以C0,这是C1。那么C2等于加C2等于G2加上P2乘以C一是吧?那么假如我把这个C一值代到C2的这个式子里面,资本怎么样?
那么大家看一下,我先要带一下C1,我不给你了吗?C2也给你了。那么我的现在想法是我把C一这个表达式代入到C01,大家看一下结果是什么?代入以后变成了G2加上P2乘以P1再加上P2乘以P1乘以C0。感觉。
式子是复杂了是吧?但是你发现它有个特点,就我最后得到的可能是G2加上P2乘以G1再加上P2乘以P再乘以C0,这个是它有什么特点?它有什么特点?它紧跟第零时刻的所有的给出的输入量有关系,是不是这个特点?这个结果是不是跟CE已经没关系了,我带进去以后大家看一下,这个式子,就是这个G2开始计算式子是不是跟CE就没有关系了。只跟当前第零时刻所有的输入量有关系,这是他最大的一个困难,这个是最核心的。
同样C3C4,我给出的这个最终的结果是大家发现紧跟当前所有的输入量有关系,而跟静谧信号的传递的过程我给它割裂开。也就是说第零时刻所有的C0A2B2都跟给你经过两个基本时间单位之后,C1、C2、C3、C4我是不是可以同时得到?这是我用数学公式推导过程给出的结论,我用数学公式推导,这等式后面大家发现C0就C4只跟你看就G4是A4乘以A4乘以B4,这P3是A3E或B3是吧?这些都是跟电动车一开始给我们的输入量有关系,跟其他没有关系。
因此我们说C1、C2、C3、C4从理论上我给出这个推导公式之后,我们发现第零时刻ARBR都给你。经过一定的时间单位,我会同时得到C1、C2、C3、C四这个定位信号。有了这个定位信号,是不是我可以因为我同时得到,是不是我可以同时完成这4个FA的运算?这是最关键的W0了,这是个C5C6。
是不是我按照我的数学公式推导,我是不是还可以写,是吧?理论上可以,但是。我写了四个,这个式子已经超长了,那咱就把它变成一个纪念编辑去实现的话,是不是很麻烦?因此我们站在工业界工业化生产成本的考虑,我们不支持你直接继续做C5、C6、C7、C8,把我们的这个操作,我们是有前进的背景的?这个大致其实在50年以前,我们很早在当时要解决预算,我们就这么解决。当这种硬件条件不行,硬件你就当时最早说还是电子管是吧,你肯定你硬件性能会很弱。因此考虑到硬件成本的问题题,我们就没有继续进行推导。
因为需要我们C五用数学公式我们写出来。但是你用这些数公式写出来,你用硬件的电子设备电子器件实现是在50年以前,吧?就60年代116应该像50年有点不太,应该是60年以前,就上世纪60年代超大规模集成电路没有出现之前,这是一个很困难的事儿。工业界在技术先进性和成本控制二者做了一个取舍,给出了并行加法器的实际的工程线。大家看一下我们教科书上所讲的最终的方案是生产制造部门在平衡技术先进性和生产制造复杂性成本综合考虑以后得到的折衷花这点大家一定要明确。
那么闭经加法器在这个公式我们又给他定位什么?立行行为,同时进车电瓶车给你C0A2B2,经过二倍的TTY的话,我们得到C1、C2、C3、C? 再经过二倍TYS1到S4的值都能?就是说比原来用创新一级去推导这个系统医药优化很多。大家可以看一下,我建议信号就原来一级一级可能就时间比较长,这个我经过二倍的试管进行得到。因此在实际的工程实现里面,对于变形加法器的功能实现,我们有两种方案,叫做单级先行定律和多级先进有两种。所以单级先行定位就是组内我进行并行定位,组间进行串行定位。
比如说我有一个16位的加法器为例,那么咱们看一下这个单级先进位设计图给出来的,大家可以看一下,这是由4个CLA。就是所谓的先天病加法器构成的。那么这四个加法器,比如说这个最最最右边的它对应的数量是A一到A4,B1到B4。第零时刻T0时刻C0A2B2,这我都给你出来了,都给出来了是吧?经过二倍TY你可以得到C4,二倍之二得到C4。与此同时我还得到什么?C3、C2、C一再经过二维TY得到下一组的C5、C6、C7、C8,再定二倍,这就是组内并行组间串行的一个特点。
也就是说C0在D0时刻,最开始我所有的输入量给你我的定位的C0的初始值给你经过二位之外,第一组的所有的定位我都给你利用刚才工作算了算出来以后并不是他他不是SI是吧?再进化变出来S1到S4我就能算出是吧。这是它的一个特点。大家看一下这个特点是什么?
组内并行,组间串行。我们用一个图给大家进行表示一下。头是进位信号,Y轴是时间第零时刻就一开始的初始状态C零的值我是给你的是吧?经过二倍替换,我得到了最右侧的那一个CLA发表器的所有记录,C1C2C3C。这组完了以后,那么C4是不是进入了第2个CLA?就是对应的A5到A8,B5到B8的那一组。那么也是经过二倍替代,我得到了C5、C6、C7、C8,再经过2例题外C19到C12,最后经过八倍TYC12 2C13到C16也能得到是吧?
这是我们一个组内并行组间串行。如果用创建加法器,由CV0到你得到C16需要32倍替换。就前面你就一个FA或者串行加法器,你得到金文信号,这个反映出了它的对应的运算过程的时间花费。这种形式的这种组内并行组间串行比起32倍TY这时间花费它优化了很多是吧?
优化了很多,这是第一种情况。第二种情况我们称为组内并行,组间也并行这种方式。这种方式,它的设计跟我们原来的是不太一样的。大家看一下。原来我们叫CLA业务是吧?现在大家看到ECLA对吧?BCLA.
那么大家看一下CLA电路和BCLA电路区别在哪。大家注意一下,我PPT上对这一页的图是没有改过来的。真正正确的画法应该是75页,75页图4-5应该来说是什么?因为我们当时做PPT,然后做PT从这里说话也说所有的G和T上面都要带着星号,G和T都带星号。
BCLA最大的特点就BCLA和CLA的区别在哪呢?CLA是有定位信号输出的,比如说C4、C8、C12、C16这些境内信号的输出是一组,那个最高位的界面信号输出是有的,而BCFA是没有这个界面信号输R是用什么GCP型代替。因为比如说C4等于一星,加上P1星乘以C5,他用这个就他做了个变化。因此它就像于加法器是做了一个变更,由CMA变成这个BCMA。那么这种方式实现了组内并行,组间协并行。
具体过程。因为这个东西我们不做要求,这是咱们计算机统一体结构唯一上课讲了,但是我们期末考试不做要求,这唯一的。但是大家要知道这加法器它怎么设计,它怎么做优化吧?那么具体主要看一下进位信号C0到C16它的产生的特点。
大家可以看到从这张图上大家发现没有CMA就ECMA它没有进位信号的产输出是吧?而每个题除了第一个BCMA,其他的BCMA的进位输入量都是来自于上面顶层的BCLA,这是有区别的是吧?就这个。BCCCLA的输出是作为上面这三个java器的静谧信号输入是吧?这是个区别。因为这每一个每一个加法器它都有一些特点。好,具体咱们看一下对应的这个描述。大家可以看一下,用这张图我就不想展开说更多了。
八第零时刻我给你C零经过二倍的替换,第一小组就最右侧的那个C一那个A一到A4,B1到B4那1小组对应的组内定位信号C1、C2C3经过二倍TY得到了是吧?这个得到了以后,由于每一小组的G星和P星是跟定位信号是无关的?二倍体外所有的机型P型都是直接能送到上下的,这个CIA经过一次运算,再经过二倍等于四倍之外,得到了C4、C8、C12、C16。
那么大家发现这张合同的特点是啥?C16先出现,而我们常见的什么C13、C14、C15等等其他信号最后才得到是吧?这个确实有特点,就是我们这么设计。
这是这张图的作用。我们说这一节的内容我们定位是什么?大家掌握它的原理,知道它是怎么进行优化的,就OK了是吧?期末考试没有相应的设计性,那么无非出一些概念题、选择题是吧?精彩好。这是CRA和BCLA的区别。
这张图应该是给大家又放大了。这个教材上的内容,这部内容就讲到这里。如果大家对于第一节内容比较感兴趣的话。
咱们课后作业。我们不是作业应该准确,应该是一个参考题。对,就为了配合大家掌握刚才我们讲的内容。课后作业蒋蒋老师燃油版的103页4-3这一题翻过下来,4-16这一题都是以第一节内容配套这个大家都想,我只要求大家做思考,对吧?无不把它算作真正的客户作业。
就说你说你说白了这个点我可能要考试4-34-16就告诉你我怎么去考?怎么去考。我们前面讲的都是16位,你要4-3,我就要求设计一个九位先行进入的加热器。你能算出你能是否回答是吧?而且他告诉你每三位一组,采用两级先行行为,就是组内进行就坚硬。并且你能不能一会画出能画出来把设计图了?这就是咱们4.1这节,如果考核就考成这个水平,然后我们这么多年,我们一直没有要求应当这专业,我们这么多年没有要求。
好,4.1这一节我们就讲到这里,下面什么定点数的,什么加减运算,带符号的一位首运算这个。大家下去自己看一下,书上也比较简单,就是用了一页了甲状腺的书,这块压缩的有多。那么当下我们4.2、4.3,大家下去结合我们组这个注意一下。我今天。最迟明天上午,我会把第三章、第四章的课件上传到爱北里钉钉群里面,就课程群里面。
大家下去以后,把咱们老版本的4.2节、4.3节的课件,结合咱们书上的内容好好看一下。因为我觉得蒋老师这块压缩的太多了,老版的教材可能这块比较丰富一点。而且说不好听的,像蒋老师那两个就是清华的教材,网上都有电子的对吧?那这个互联网媒体这么发达,这些东西都有。我们下一步看一下。
4.2角纸的加减运算。一句话,对于补码运算,补码一般我们说加运算,我们主要讨论什么?补码的加减运算,记住运算公式就OK了。X加Y和值的方法等于X轴加上Y这个公式大家记住,这是第一个公式。
第二个公式是减法运算。X减Y差值的补码等于X5加上负Y。看清楚,这是一个转化,就在咱们计算机和音体结构处处存在转化。为什么?如果没有转化的话,AI就光给你全加气,你说他能完成四则运算吗?完成过程。正因为我们的运算到处存在了转化的思想,使得你。加减法变加法,乘除法汴加减法再变加法,最终我用一个FA全加器搞定所有的运算。
这是咱们第四章告诉你的核心思想,转化思想。那么在这个公式大家一定要记住,X减Y的湖等于X的壶加上负Y的湖。已知Y如何求负Y的股呢?外弧连同符号位按位取反,末位加1。
那么案例是官怎么取法?刚才我们讲到逻辑指令对吧?你一处理就OK了是吧?按位置就是这个值Y的值与一做异或运算,是不是就外飞了?因为它盐能符号位,然后冒个加一就OK了,那么这个公式大家要记住。咱们顺航现在已经不提第二人的概念了。
什么变这个篇章的不行就不说了。对于XX减Y补码的这个运算规则,咱们在这一个解释向大家注意一下。就是说补码加减法的运算规则。第一参与运算两个操作数,第一要用补码来表示。第二读码加运算,运算过程符号未作为处理部分直接参与运算,这是第二点。第三点,如果做加法计算,则两个数直接相加。如果做减法,则是将被减数与减数的机器负数做相加,最后结果用补码来表示。
这是他的名字,大家看一下就可以了。我不想展开去说,你这比较简单,他就不要扩展的。这个你们下去看一下,一出判定。
一出判定就是说在运算两个二进制,在做加减运算以后,有可能它的和值或者差值超出了我们受到表示范围,此时我们会产生溢出判定。咱们书上讲了好几种方法,首先大家明确什么是正溢出,什么是负溢出,是吧?这个溢出判定的方法当书上讲了四个,一个是单符号位,第二基于进位符号位,第三是净基于双符号位。大家一想,这个我可能记错了,应该是三种方法。对于这个溢出判定,事实上我们要求大家掌握第三种双符号位的意思判定。也就两个符号位,四种状态。001151出01这1出10块的表负一出。好,今天咱们上这向后。
这个手续无所谓,也算一天也不算,上次也算,因为我看太多签了。
我们我们第二个要求。很高。对,因为你们的让那个人给我吓死了,是吧?钉钉群有的同学说白了就没来上课,他不知道情况,就想我要要求大家签到今天吗?不穿考勤没有,那人给我吓死,吓得我老,他一堆人吓得我也轻。今天我不算。