2020-10-26

小杰,我们学习了现代计算机的基本构成,都是基于冯诺伊曼结构的思想来设计的,主要有5个啊硬件部件,那这个小结我们要做的事情是来看一看我们主机内部的这三个硬件部件,他们的一些内部细节,以及他们之间是如何协调着来工作的,那我们先看主存储器之后看运算器,最后是控制器,好首先来看主存储器的基本组成,储存储器里边用于存放数据的东西叫做存储体,存储体就是由一系列的存储原件来构成的,可以存放二进制0或者1除了存储体之外还有两个重要的寄存器,一个叫mAR,一个叫mDoctor,它们分别是存储地址寄存器,还有存储数据寄存器的一个英文缩写那很多同学不知道纪存器是什么意思寄存器。11个叫mAR,一个叫mDoctor,它们分别是存储地址寄存器,然后存储数据寄存器的一个英文缩写,那很多跨考的同学不知道寄存器是什么意思,寄存器其实也是用来存放数据的存放二进制数据,只不过这两个寄存器它们存放的数据各不相同,从名字可以看出mAR它应该是存放和地址相关的一些二进制数据,而mDoctor是用于存放实际的数据的,这个我们一会会用一个具体的例子来,大家再来理解好那主存储器里的这三个重要部件,它们分别有什么用呢?唉,刚好今天早上我到菜鸟驿站去取了一个包裹,那我发现菜鸟驿站,它的一个基本组成,其实和我们主存储器是有很多异曲同工的地方每一个菜鸟驿站里面都会有一个货架大概长这样子他们会给这个货架。菜鸟驿站去取了一个包裹,那我发现菜鸟驿站,它的一个基本组成,其实和我们主存储器是有很多异曲同工的地方,每一个菜鸟驿站里面都会有一个货架,大概长这个样子,他们会给这个货架进行一个编号,什么11号货架,然后一层二层三层,然后我去的这家菜鸟驿站,他们的包裹编号就是根据货架号,然后在货架里的第几层这一层的第几个包裹用这样的规则来给我的快递编号的,所以这家店这些一个一个的包裹货物其实是有规律的,按照取件号摆放到货架上的,那我去取包裹的时候我得告诉前台的店员,我的取件号是多少,然后店员说啊,你好帅啊,不是这个是不一样啊,不是我店员知道了曲建好之后他就可以知道我的这个包裹是存放在十一号或假的第四十二个于是这个店员会告诉小哥让他去这个位置。于是这个店员会告诉后台的啊,小哥让他去这个位置帮我找于是在取件号所对应的位置就找到了我想要的啊包裹那找到之后他们会把我的包裹放到柜台上,我就可以从柜台上拿走我的包裹,因此菜鸟驿站的这个模型当中,货架电源柜台与我们主存储器的这三个部分都是一一对应的,菜鸟驿站的货架是用来存放货物的一个一个的包裹,然后主存储器里的存储体是用来存放数据的,那数据不就是计算机想要的货物吗?好,另外我会告诉店员我的取件号是多少,同时我的取件号也反映出了我想要的货物,他在货架上的存放位置,而对于主存储器来说,CPU想要从里边取得一个数据,那么他会把他想要的数据存放在什么位置?这个存放地址写到mAR这个寄存器当中那气势就可以根据。放地址写到mAR这个寄存器当中,那接下来主存储器是不是就可以根据maGMAR这接收到的地址信息,去存储体里边拿出CPU想要的数据好再回到菜鸟驿站,我想要的包裹从货架上找到之后会被放到柜台上,然后最终我是从柜台上取走这个包裹的,那对于存储器来说也是一样,刚才CPU给他提供了一个他想要的数据的存放地址,那么主存储器里边的一些控制逻辑会根据这个地址找到他想要的数据,并把他想要的数据先写到mDoctor这个寄存器当中,最后CPU就可以通过数据线路从mDoctor当中取走,他想要的数据好,所以主存储器和菜鸟驿站的这个模型是有很多相通的地方的,当然也有不一样的地方,对于菜鸟驿站来说啊,我们通常只能从啊它的货架上取走我们的包裹,而对于存储器来说,CPU既可以从其中读出数据但是也可以协助局领导。 APo既可以从其中读出数据,同时也可以写入数据,那写入数据的过程其实和读入数据是很类似的,那CPU会指明他想要写入到哪个位置,然后他想要写入的具体数据会放在mDoctor当中,最后CPU会通过控制总线告诉储存储器,说这次我想要执行的操作是写操作而不是独操作,那么主存储器根据CPU发出的这三个信息就可以往对应的位置写入CPU想要写的数据了,好,那通过这个例子,相信大家就能够理解mAR和mDoctor这两个寄存器的一个作用,好,接下来我们把注意力放到存储体上,存储体是什么一个原理呢?我们刚才说过数据,我们要的二进制数据是存放在存储体当中的,并且是按地址来存储,什么意思呢?就是说我们的这个一整个存储体,它会被分成一个一个的存储单元,每一个存储单元会存放一串二进制代码那每一个单元里面存储的这一串二进制代码我们就把它称为一个存储。单元每一个存储单元会存放一串二进制代码,那每一个单元里边存储的这一串二进制代码,我们就把它称为一个存储字啊,英文的话就是word,而每一个存储字包含多少个二进制位这个信息,我们把它称为存储字长,也就是每个存储单元里边可以放得下多少个二进制位,通常每一个存储单元可以存放的二进制数啊,都是8个比特的整数倍,也就是巴比特或者16比特或者32或者64,这是比较常见的一些存储资产,好那每一个这样的存储单元会对应一个啊地址信息,地址是从0开始的,那这个地址信息就是刚才我们所说的mAR这里边应该指明的一个信息,如果我要读取的是第2号的存储单元,那么CPU就应该往mAR这个寄存器里边写出2这个信息好了之后还有一个概念叫做存储元也就是用愚蠢二进制数。叫做存储源,也就是用于存储二进制数据的电子元件,那这样的电子元件其实是用电容的原理来制造的,不知道大家还有没有印象,我们高中里面学过电容相关的知识,电容可以用来存储电荷,因此我们可以用一个电容来存放一个二进制的比特贝,那由多个存储原件还有相应的线路就构成了一个存储单元好那关于存储元件的物理特性,我们不需要过多的深究,我们只需要知道每一个存储元件,每一个存储源可以存放一个比特就可以了,好那之前我们说过mAR是指明了我此次要访问哪一个存储单元,是指明了存储单元的地址,所以mAR这个寄存器它的位数他到底有几个比特,为这个信息就直接地反映了我们的存储体里边到底有多少个存储单元?另一个方面我们从存储单元里边取出来的数据是要放到md r当中的,所以AM d,二它的二进制位数应该和存储单元是保持一致的也。单元是保持一致的,也就是要等于存储资产,比如这个主存储器,它的mAR地址寄存器只有4个比特币,那么也就意味着它的存储体里边总共只有2的4次方这么多个存储单元,因为4个二进制为最多也就只能表示这么多个啊数字也就是对应2的4次方这么多个地址,另外如果它的mDoctor这个数据寄存器总共有16位16位比特位,那么就说明在这个主存储器当中,一个字的大小就是16个比特,换一个角度说,每一个存储单元可以存放16个二进制位16个比特的信息,那这一点也是比较容易作为考题来。你作为考题来考察的大家需要注意,那这儿还要给大家补充一个比较容易混淆的点,就是这儿我们给出了所谓一个字的概念,用英文说的话就是一个word,很多同学容易把字和字节混为一谈,那如果看英文的话,其实他们是很不一样的,但是中文的翻译确实很像,一个字截止的是8个比特币,而一个字到底有多少个比特,这个具体得看我们的计算机,它的结构是怎么样的,也就说一个字的大小有可能是16个比特,有可能是8个比特,也有可能是32或者64个比特,具体要看我们计算机硬件是怎么设计的,那除了自和自己之外,还有一个呃需要强调的点,就是我们在描述一个字节的时候经常会用一然后加一个大b大写的b来表示,但是当我们在描述一个比特一个二进制位的时候,一般是用加一个小b来表示小写的b,所以很多初学者会忽略这个细节,大b和小b其实是不一样的,所有的大家都会有体会的生活经验去办那个宽带的时候你会跟业务员。屌b其实是不一样的,他所有的大家都会有体会的生活经验,当我们去办那个宽带的时候,你会跟业务员说,我要办一个100兆100兆的一个宽带,那么你会发现它的这个b是小写的b,所以它的这100兆的宽带其实指的是每秒钟 per second每秒钟可以传送100兆个比特位,是这样的一个速率,那当你用100兆的宽带来下载东西的时候,我们的迅雷之类的下载器一般是以大币也就是字节作为这种计量单位的,所以你会发现你用100兆的宽带来下载东西的话,那最多就是10兆多一点的这种速度,因为你的下载器里边用的是大b,也就是字节,其实并不是运营商骗了你,他承诺你的理论峰值100兆,你把它换算成大币的话,应该是用100再除以一个8,这才是你有可能获得的,呃,最快的一个下载速度东西也是为了加深大家的印象注意字和自己大便我们了解。讲注意字和字节,还有大b和小b的一个区别,好那到此为止,我们了解了主存储器的基本组成,接下来我们进入下一个硬件部件,就是运算器的基本组成,我们希望大家最讨厌的念PPT的方式来简单的聊一下,之后我们再用一个具体的例子带大家来理解,我们这儿给出的这些文字性的描述,那一个运算器,最主要的部件有这样的,4个饿accmq,还有一个叫exo,还有一个你看它形状不太一样,叫alu那上小节,我们说过运算器就是要来实现算术运算加减乘除,然后逻辑运算的其中acc它其实是一个寄存器,翻译为中文一般叫做累加器,那这是它的英文全称累加气可以用来存放我们进行加减乘除或者逻辑运算的那些操作数,同时也会用于存放运算的结果,第2个计算器叫mq就是乘商计算器乘和商,其实也就对应着乘法和除法,所以顾名思义,这个计算器只会在乘法除法啊,这样的运算的时候才会用得到。就对应着乘法和除法,所以顾名思义,这个寄存器只会在乘法除法啊,这样的运算的时候才会用得到同样的会用来存放乘法除法的操作数或者运算的一个结果,而第3个寄存器ax他叫通用的操作数寄存器,或者我们可以把它简称为通用寄存器,其实这种通用寄存器一般在运算器里边恶事可能会有多个,但理论上我们只需要有一个通用计算机就可以实现我们想要的那些算术运算,那大家如果看王道书给的运算器的结构的话,那你会发现它里面就花了多个这种通用计算器,那通用寄存器的作用就是用来存放一些操作数好,最后这个长相很不一样的家伙,ARu他叫算术逻辑单元,那alu才是运算器的核心部件,它里面集成了一些复杂的电路,用这些复杂的电路可以实现算术运算或者逻辑运算,前边我们说的这三个寄存器其实就是用来存放一些数据的坐。 Ru的硬件构造就很复杂了,所以运算器里边啊,制造成本最高的一个部件就是ARu,那刚才说的这三个计算器再进行加减乘除不同的运算的时候,它们的作用会各不相同,这个我们一会结合具体的例子来理解好,那这是运算器的一个基本组成,有三个不可或缺的计算器,另外还有一个核心部件,ARu来实现算术运算和逻辑运算,接下来我们再来看控制器,控制器里面有三个必不可少的啊部件,一个叫cu就是控制单元控制单元是控制器里面最核心的一个部件,它里边也集成了很复杂的啊,一系列的电路可以完成分析指令,并且可以给其他的部件发出一些控制信号,所以上个小节我们把控制器比喻成霸道总裁,他会控制其他的部件,但是对于这个霸道总裁来说,CEO才是他真正的核心,就相当于CEO是霸道总裁的老婆,其实总裁还是得听老婆的。正的核心就相当于CEO是霸道总裁的老婆,其实总裁还是得听老婆的啊,那除了CEO之外还有另外的两个寄存器,Ir是指令寄存器,就是用来存放当前执行的指令的,PC是程序计数器,它是program counter的一个缩写,我们平时说的PC一般是个人电脑,那不要和这里的PC混为一谈,那这个寄存器的作用是用来存放下一条指定的地址,并且有自动加一的功能好,那我们的计算机最主要的工作就是执行代码,而我们的所谓的代码其实就是一条一条的指定对吧,那每完成一条指令需要分为这样的三个阶段,第1个阶段是取指令,会根据PC,也就是程序计数器里边所记录的这个指令地址,根据这个地址从内存里边取出那一条指令,那取出的指令会被放在Ir,也就是指令寄存器当中这条指令到底是干什么的当他分析完了之后这个部件就会控制着其他部件来配合着完成。人气当中,而我们所谓的代码其实就是一条一条的指令对吧?那每完成一条指令需要分为这样的三个阶段,第1个阶段是取指令,会根据PC,也就是程序计数器里边所记录的这个指令地址,根据这个地址从内存里边取出那一条指令,那取出的指令会被放在Ir,也就是指令寄存器当中,然后CEO这个部件就可以分析这条指令到底是要干什么的,那当他分析完了之后,CEO这个部件就会控制着其他部件来配合着完成指定的具体执行好,那这是完成一条指令的三个阶段,当然很多地方也会把前边的这两个阶段统一的称为曲指的阶段,然后最后的这个阶段把他称为执行的阶段,好那运算器和控制器的功能都是很抽象的,要把抽象的知识变具体,最好的方法是让他们跑起来,所以接下来我们用一个具体的例子来看一下我们熟悉的一段代码是怎么执行的,比如我们可以用c语言写这样的一段程序定义abcy。日期的功能都是很抽象的,要把抽象的知识变具体,最好的方法是让他们跑起来,所以接下来我们用一个具体的例子来看,我们熟悉的一段代码是怎么执行的,比如我们可以用c语言写这样的一段程序,deabcy这样的4个变量,然后这个程序里面只是执行了一句简单的代码,y=a×b加c,这是我们高级语言程序语言看到的一个视角。但事实上我们的CPU不可能一次性完成,这样的一个符合运算,它只能先进行乘法,然后再进行加法,分为这样的两大步骤,所以我们这段程序在经过编译连接一系列的骚操作之后,可以把这个高级语言翻译成机器能读得懂的机器语言,同时会把这段程序装入储存,那它在主群里的样子就是这样的,最左边的这一就是指明了啊,主存的地址这是0号存储单元,这是1号存储单元的阿姨此类推,一直到8号,那我们定义了abc why这样的4个变量我们这个变量他是存放的地址为五的这个纯属单元当中的。它是存放在地址为5的这个存储单元当中的,当然在主存当中是以二进制的形式来存放,那b这个数据是存放在6啊,c存放在7,然后最后我们要计算的这个y,它是存放在r这个存储单元当中,那除了这些数据之外,前边0~4这几个存储单元存储的就是我们这一段程序,它所对应的机器指令,你看我们用高级语言写的短短的一行代码啊,经过编译之后丢给计算机的其实是这么多条复杂的指令,那每一条指定会分为操作码和地址码这样的两个部分对吧,大家可以数一下,我们这每一个存储单元是16个比特,也就是存储字长为16个比克,然后每一条指令它的两个部分总共也是占16个比特,只不过在执行这些指令的时候,CPU会自动的把它们拆解成操作码和地址码,这样的两个部分好下面来看一下这个程序的运行,那接下来的这段演示希望大家认真的听这有助于大家理解和硬件的作用还有他们之间是怎么配合的工作。演示希望大家认真的听,这有助于大家理解各科硬件补解的作用,还有他们之间是怎么配合着工作的,能帮助大家形成一个对计算机运行原理的一个全局观好,我们把刚才的这个图补上储存,还有运算器控制器,然后运算器和控制器共同集成在CPU里面,另外还有一些Io设备,当然这个例子当中Io设备不重要,那首先我们的这些指令还有呃变量的数据都是存放在存储体当中的,这个程序要执行的第1个指令应该是存放在0号呃位置的这一条指令,所以在程序运行之前,PC它会指向0这个位置,接下来我们应该把这个位置存放在这一条指令给取出来执行,首先PC存放的内容需要通过地址总线把它传送到mAR这个地址寄存器当中此视频这个操作就会导致这个计算器的值变为了灵气指明了我接下来要访问的。而这个寄存器的值变为了0,也就是说控制器向主存指明了我接下来要访问的视频号地址所对应的这一串数据,同时控制器会通过控制中心告诉主存储器,说我这次要进行的是读操作好,那接下来主存储器会根据mAR记录的这个地址信息,去存储体里边找出0号地址所对应的这些二进制数据,并且把这些二进制数据放到mDoctor,也就是这个数据寄存器当中,那么这就导致了mDoctor这个寄存器当中,现在里边存放的就是我们想要读取的第1条指令,对了这儿解释一下,我们啊,把一个寄存器的名字外面打一个括号,指的是啊这个寄存器里边的内容,然后这一个m表示的是memory,也就是主存储器主存储器里边,mAR这个地址所指明的存储单元里面的数据放到md2这个寄存器当中是这样的一个意思现在想要的货物。 CPU想要的货物已经放到mDoctor直接计算器当中了,那接下来那他就可以取走这个货物,那这次要取走的货物其实就是一条指令,所以这条指令会通过数据总线把它放到Ir,也就是指令寄存器当中,那这就导致控制器的Ir这个寄存器里边已经存放了此次要执行的指令,好,接下来这条指令的前边6个比特也就是操作码,这6个比特会被送到CEO控制单元里边,然后CEO会分析这个操作吗?他就可以知道00001他对应的是一条取数的指令,所以接下来要把这个地址码所指明的内存单元里的这个数据把它给取出来,并且放到acc这个计算器当中,这是取数指令要做的事情这个地址的信息于是就需要把这个地址码放到当中这就导致这个。放到储存的ml当中,这就导致此时m=5,因为这个二进制数转换成10进制,就是5那5号存储单元所指向的,刚好就是这个变量x所存放的位置好,接下来主存储器根据ma的这个地址去存储体当中找出5号单元的这些数据,并且把这些数据放到MBA当中,也就是把a这个变量的值现在放到了MB r,那a的值是2好,最后再控制单元的指挥下,MPrd的数据会被传送到acc也就是累加寄存器当中,那到此为止,我们就完成了一个取数的指令,最终导致a这个变量的值已经被我们放到acc这个计算器当中了,那这个图里边画的呃,1234这几步,其实就是对应了我们之前说的取指令的一个过程 Evening的过程后边的六到九不才是实际执行这个区数值另一个。硬的过程后边的6~9步才是实际执行这个取数指令的一个过程,所以你看,虽然我们只是给出了这样的一条啊机器语言描述的指令,但是我们的硬件确实还挺忙的,它要完成这条指令背后其实还是需要做很多很多事情,好那之前我们说过程序计数器PC它有自动加一的功能,其实在取指令这个动作完成之后,PC的值就会自动的嘉羿了,他以前是0那自动加一他就会指向一,也就是指明了下一条我们要执行的指令,应该是在一这个单元着哦,所以之前这条指令执行之后导致的效果就是PC此时=1,然后ac=2也就是等于a的值,接下来根据程序计数器PC所指向的位置取得第2条指令,那么取指令的过程和之前是类似的,通过这样的4个步骤,把第2条指令放到Ir寄存器当中,那取完指定之后就需要分析指定会把操作码这个部分送到the单元然后。啊,第2条指令放到I寄存器当中,那取完指令之后就需要分析指定,那和之前一样会把操作吗这个部分送到CEO控制单元,然后经过seo分析之后,他可以知道000100这个操作嘛,对应的是一个乘法操作,所以这是一条乘法指令,因此截止Icu会指挥其他部件来协调的完成这个乘法操作,还记不记得我们写的程序y=a×b+c,现在这一步我们要完成的是a×b的操作,而a这个变量之前已经被我们送到acc啊这个计算器里面了,所以现在这一条乘法指令,它的地址码指明的是另一个乘数 b它的存放位置,那b存放在6这个位置,刚好这个地址码啊,翻译成10进制数也是等于6,所以这一条指定的地址码会被送到mAR当中指明,我要取出的是6号存储单元里边的数据这些。会被送到mAR当中指明我要取出的是6号存储单元里边的数据,所以接下来储存会根据mAR所指明的这个地址取出相应的这个数据,也就把b这个变量的值放到了MBA当中,接下来b的值会从mdi再通过数据总线送到q,也就是乘商寄存器当中,所以现在b的值已经放到mq里面了,而接下来还需要把a的值先放到通用,寄存器ax当中,也就说当这个CPU执行乘法操作的时候,他会把被乘数放到exo这个通用寄存器里面,然后把撤硕放到m cue这个乘上寄存器里边,接下来CEO会通过控制线告诉ARu算术逻辑单元,让它进行乘法运算,那ARu会把x和mq里边存储的这两个数把它们进行一个相乘的操作,然后把最终乘得的结果放到acc里边那这个操作导致得到了a乘b的值二三。 Ac里边那这个操作导致acc里边得到了a×b的值23,在我们这个例子当中进行相乘的,这两个数很小,但是如果说这两个数很大的话,那么有可能acc啊,这个寄存器里边是存不下的,这种情况下就需要mq乘商寄存器的一个辅助存储,q里边会用来存放啊,乘法运算结果的低位完了,这样我们就完成了第2条指令,也就是乘法指令,那大家会发现和前面那一条指令相比,其实第1部到第5部这几个步骤每一步要做的事情都是一模一样的,只有当CEO控制单元分析出这一条直线式乘法指令的时候,接下来的操作就会产生一些区别,另外和之前说的一样,当取指令结束之后,PC的值也会自动加一,所以这条指令执行结束之后,得到的效果就是PC指向了2执行的指令此时存放了我们上一个月执行的指令此时存放了我们上一个月算的结果。 PC的值也会自动加1,所以这条指令执行结束之后,得到的效果就是PC指向了,2也就指向了下一条要执行的指令,然后acc里边此时存放了我们上一个运算的结果,也就是a×b的值a×b等于6,好接下来执行2这个地址存放的这条指令,那前边的几个步骤都是一样的,通过5个步骤可以完成取指令和分析指令的操作,那CEO发现这次要执行的操作码应该是000011这个操作嘛,对应的是一个加法操作,所以这是一条加法指令,那接下来CEO会根据加法指令的这个执行步骤来指挥着其他部件协调工作啊,那这次要计算的是a×b加c而a×b的结果,我们是已经存放在acc当中这家法指定的地址码指明的变量的旗帜就是七十。一是指核载7这个位置刚好把这个二进制数转换成10进制,就是7,因此接下来要取出7这个地址所存放的数据,那么就需要把这个地址码把它放到mAR地址寄存器当中,接下来主存根据ml指明的地址取出相应的这个数据,也就把c的值放到了md2当中,然后接下来这一步会把MB r的值再传送到通用寄存器ax当中,也就是说当我们进行加法运算的时候,acc里边会先存入被加速,然后通用寄存器的x当中会存放加速,也就是c的值好,接下来控制单元会向al发送一个信号告诉他,因此c要执行的是加法操作,那么al算是逻辑单元,就会把acc和x里边存放的值进行一个相加,并且把加德的结果再次存回acc当中,因此这就导致了acc=7,也就是把a×b+c的值存放到了accd边那到最后。成了第3条指令,也就是这个加法指令,同样的前边的5个步骤,其实和之前的两条指令没有任何区别,另外在取完指令之后,同样的也会自动的进行PC啊,加一的操作也就是PC会指向下一条我们应该执行的指令好,接下来这条指令的执行前面的这些步骤都是一样的,根据PC记录的这个地址取出这条指令,并且放到Ir指令计算器当中,然后第5个步骤会把这个指令的操作码把它送到 CEO当中进行分析,然后seo分析之后发现000010,这是一条纯数的指令,也就是要把acc里边的数据把它存到地址码所指明的存储单元当中,那这个地址码转换成10进制,应该是吧,而8这个存储单元刚好对应的是y这个变量的存储位置,那现在acc里边存的是7,也就是a×b加c的值制定会把这个指令的。 B加c的值好,接下来的执行就是存数指令,首先会把这个指令的地址码部分把它送到a AR里边,用来指明此次我要存入的是哪一个存储单元,另外还需要把acc里面的运算结果通过数据总线把他送到b2当中,也就是说此时MB r里边保存了a×b加c的值,并且此事里边指明了这个值是要存到内存地址为8的这个地方。然后接下来CEO控制单元会通过控制总线告诉呃主存储技术,我此次要进行的是一个存一个写的,操作于是主存储器,会根据mAR所指明的地址,把mDoctor当中的这个数据放到相应的位置当中,这就导致了8号存储单元它的值变为了7,也就是我们最终想要得到的这个结果,y=a×b+c纯属指令的执行龋齿和分析之林的阶段做的事情。=a×b+c,那同样的纯属指令的执行取址和分析指令的阶段,做的事情和前面的一些指令没有什么区别,只有分析出了指令之后,才会在CEO控制单元的控制之下执行,不一样的一些操作,当此时PC不加一指向下一条应该执行的指令,那么接下来执行这条指令啊,和之前一样,首先需要取出指令,把这个指令把它取到Ir指定计算器当中,然后接下来要把操作码部分送到CEO里边,然后CEO亦分析发现,唉,000110这个操作嘛对应的是评级指令,所以执行到这一步就知道我们的这段程序运行结束了,那学过操作系统的同学知道要停止一个进程的运行,需要通过系统调用或者说通过中断机制来考试操作系统来终止这个进程,于是接下来执行的指令就不是这一系列指令,而是操作系统相关的那些指令然后我们就一步一步的同时。运行结束了,那学过操作系统的同学知道要停止一个进程的运行,需要通过系统调用或者说通过终端机制来通知操作系统来终止这个进程,于是接下来执行的指令就不是这一系列指令而是操作系统相关的那些指令,那后续的部分我们就不需要再关心了,好那到此为止,我们就一步一步模拟了这个程序的执行过程,同时相信通过这个例子大家就能够真正的理解运算器控制器和主存储器,他们的各个部件分别有什么作用,另外他们之间是如何相互协调着来工作的好的,那我们再来进行一个小小的总结啊,这是我们的第1条也就是取数指令的一个执行过程,分为局指定分析,制定和执行,指定这样的三个阶段,任何一条指令的执行一定都是这样的三个阶段,那无论我们执行的是什么指令,前边取指令和分析指令的这些步骤其实都是一模一样的,只有分析完指令之后,CEO才可以知道到底是要做什么于是接下来的这些步骤对于不同。分为局指定分析指定和执行指定这样的三个阶段,任何一条指令的执行一定都是这样的三个阶段,那无论我们执行的是什么指令,前边取指令和分析指令的这些步骤其实都是一模一样的,只有分析完指令之后,CEO才可以知道这条指令到底是要做什么,于是接下来的这些步骤啊,对于不同的指令来说就有可能不一样。那在取指令的阶段,MPr里的数据肯定是要传送到Ir指令寄存器当中,而在执行指定的阶段,seo会根据具体的这条指定来决定pr里的数据,应该是放到ac还是放到MP,还是放到其他的通用寄存器里面,所以根据指令执行周期的不同,它处于不同的阶段,CPU就可以区分出我们这次从内存里取出的,到底是指令还是数据了,这个大家可以好好体会一下好的,那么这个小节当中我们介绍了很多很硬核的东西储存唧唧复唧唧。你会一下好的,那么这个小节当中我们介绍了很多很硬核的东西储存运算器控制器这三大部件构成了主机,那这三大部件的内部又分别有一些细分的小的部件,每一个部件完成了不一样的功能,但是相信通过之前的那个程序运行的例子,大家能够体会到每一个部件的具体作用运算器的核心部件是ARu控制器的核心部件是cu,那在CPU里边这两个部件的制造成本也是最高的,另外关于存储体里边所涉及的这些概念,大家也一定要捋清楚,这些都是选择题的高频考点,需要注意字和字节的区别,也需要注意大b和小b的一个区别,完了具体的各个部件做了什么事我们就不再赘述,大家可以自己啊暂停了消化一下,那这个小结的后半部分,我们用一个程序的执行来说明了计算机的一个工作过程,刚开始我们需要把指令和数据把它们存到储存里边程序计数器会指向第程序计数器会指向第一条。人机的一个工作过程,刚开始我们需要把指令和数据把它们存到储存里边,然后PC程序计数器会指向第1条指令在内存中的存放地址,接下来就是对一条一条指令的执行,首先需要从主存中取出一条指令,放到r指令寄存器当中,同时PC加1指向下一条应该执行的制定,接下来CEO会分析指定根据指定的操作嘛来确定这条指令应该做一些什么具体的事情,那最后CPU会指挥其他的部件来共同的配合着完成这条指令的执行,那这就是我们计算机的一个工作过程,对了再补充一点mAR和mDoctor,这两个计算机它逻辑上是属于储存的,但是其实现在的计算机当中,这两个计算器通常会被集成到CPU里面如果接下来的学习当中大家看到了第二这两个寄存器被我们画到了cpu以上。或接下来的学习当中大家看到了mAR和mDoctor这两个寄存器被我们划到了CPU这个部件里边,那也不要觉得奇怪,好的,那以上就是这一小节的全部内容,那在学习了这个小节之后,大家可以再回头看一下我们上一小节提到的从诺一曼计算机的这几个特点,第2个特点指令和数据,以同等的地位存入存储器,这个可以理解了吧,刚才我们给的那个例题就是把指令和数据无差别的以同等的地位放到了存储器里面,只不过存储的位置不一样而已,对于指令和数据我们都可以按照地址来寻找和访问,无论我们是要读出一条指令还是要读出一个数据,我们肯定都需要给出啊,它在内存里面的地址,所以这是按地址寻访的意思,那第3个特点指令和数据用二进制表示,这个不用说,然后第4个特点指令操作码和地址码组成肯定也能理解了这个小姐的例子当中指令只有一个操作吗一个地址吗但是有的计算机所支持的。理解了,只不过我们这个小节给的例子当中,每一条指令只有一个操作码,一个地址码,但是有的计算机它所支持的指令可能是有多个地址码的,比如说一条指令包含两个地址,那这种指令就称为二地址的指令,具体的我们会在之后的章节当中再遇到啊,第5个特点存储程序在程序运行之前,指令和数据都会被提前存到储存里面,这是存储程序幕好,所以经过这个小节的学习,相信大家对冯诺伊曼计算机的这些特点就有了更深的认识好的这个小节的内容有点多,比较硬,核啊,还是有点难消化的,大家今天可以多吃一点健胃消食片,希望大家可以好好的消化吸收。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值