首页 > 其他分享 >1.1计算机工作过程(超详细)

1.1计算机工作过程(超详细)

时间:2023-02-06 12:47:57浏览次数:47  
标签:ACC 里面 1.1 地址码 指令 详细 寄存器 MDR 计算机

@

目录

一、计算机组成框图

为了方便大家对计算机工作过程的理解,在这里我又总结了详细的教程。

先来看一下计算机每个部分的功能:

在这里插入图片描述
在这里插入图片描述
请添加图片描述

二、思维导图

这里将计算机部件的各个概念,做了一个思维导图。

大家可以照着记忆,还是非常全面的。

在这里插入图片描述

三、部件剖析

(1)存储器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vlFBdkzT-1673444517410)(D:\Typora图片\image-20230111201356932.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DEFxzv8-1673444517411)(D:\Typora图片\image-20230111201419345.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IK7Ubj2o-1673444517412)(D:\Typora图片\image-20230111201448154.png)]

注意“字”和“字节”的区别。

还有“B”和"b"的区别。

(2)运算器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jpbS8mK-1673444517412)(D:\Typora图片\image-20230111201553213.png)]

(3)控制器

在这里插入图片描述

四、案例剖析(重点)

我们来分析一下这几行代码,在计算机中如何运作的。

int a=2,b=3,c=1,y=0;
y=a*b+c;

右侧是存储器内存图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOzu9xf9-1673444517413)(D:\Typora图片\image-20230111201920761.png)]

(1)a=2

首先是取值

来看一下详细的运转过程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k2wfhh0d-1673444517414)(D:\Typora图片\image-20230111202201695.png)]

有几个需要注意的点:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TwjQfRqZ-1673444517415)(D:\Typora图片\image-20230111202356843.png)]

(2)a*b

a的值已经被送到ACC寄存器里面了。

所以现在的乘法指令的地址码(0000000110)指向的是另一个乘数b的存放位置。

通过地址码(0000000110-->6)可以看到,取出的数是:0000000000000011,转为十进制就是3。

接下来b的值3会通过数据总线,送到MQ(乘商寄存器)。(图中第9步)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PtRMuSXb-1673444517415)(D:\Typora图片\image-20230111202525737.png)]

现在b的值已经放入MQ里面。

我们还需要将a的值从ACC里面拿出来,放在X寄存器里面。(CPU进行乘法操作的时候,会把被乘数a放在X寄存器,把乘数b放在MQ乘商寄存器里面)

接下来,CU会通过控制线,告诉ALU,让它进行乘法运算。

ALU就会把X和MQ寄存器里面存储的数相乘,最终的结果放入ACC。

所以ACC现在得到a*b的值,即6。

如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-entZ7u66-1673444517416)(D:\Typora图片\image-20230111204922227.png)]

如果相乘的数特别大,ACC寄存器存不下,这时候就需要MQ寄存器辅助存储,MQ里面存放乘法运算结果的低位

和前面那一条指令(a=2)相比,第一步到第五步是相同的。

只有当控制单元分析出这一条指令是乘法指令的时候,接下来的操作才会有区别。

(3)a*b+c

上一个步骤取指令之后,PC自动加一。

所以,现在的PC指向了2:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4aT1y89-1673444517416)(D:\Typora图片\image-20230111203049718.png)]

ACC寄存器里面存放了a*b的值,即6。

前面五个步骤是一样的,通过前五个步骤,可以完成取指令和分析指令

现在,CU会分析的指令操作码是000011,对应是加法操作


接下来,CU会根据加法指令的执行步骤来指挥其他部件协调工作。

这次要计算的是a*b+c,而a*b的结果已经在ACC中了。所以这个加法指令的地址码指明的是c变量的存放地址。

IR将地址码部分(0000000111-->7)传给了MAR,MAR再传给存储体。

存储体通过这个地址找到对应的值,即:0000000000000001-->1。然后将这个值送给MDR。

现在MDR里面存的就是c的值1。

然后MDR将c的值送入X寄存器里面。(加法运算的时候,ACC里面事先存了被加数,即a*b;X寄存器会存放加数,即c


接下来控制单元会向ALU发送一个信号,告诉他此次要执行加法操作。

然后ALU就会把ACC和X寄存器里面存放的值加在一起,并且将加的结果放入ACC里面。

这样下来,最终ACC存入的结果是7(a*b+c)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdFgAlnS-1673444517417)(D:\Typora图片\image-20230111203036342.png)]

(4)y=a*b+c

接下来要将a*b+c的值存入y中。

之前进行的a=2这些操作,都是取值操作。

现在要做的,是要把a*b+c的值存入y中,是存值操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vbVcwUWj-1673444517418)(D:\Typora图片\image-20230111210855560.png)]

存值操作是如何进行的呢?

经过上面的分析,知道现在这一条指令是存数指令,也就是将ACC里面的值(7)存入地址码(0000001000-->8)所指明的存储单元中的位置。

8这个存储单元,刚好对应的是y变量的存储位置。

具体步骤:

①IR将地址码部分(0000001000)送入MAR,用来指明此次需要存入哪一个存储单元。(图中第6步)

②还要将ACC里面的值通过数据总线,送入MDR里面。(图中第7步)

此时MDR里面保存了a*b+c的值。

MAR里面的地址指明,这个值需要存入内存地址为8的地方。

③CU告诉存储器,此时要进行的是存入(写)操作。

主存储器会根据MAR所指明的地址,把MDR里面的数据,放到相应的位置。

所以,8号存储单元的值变为了7。

如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f8P1cKx8-1673444517418)(D:\Typora图片\image-20230111211730141.png)]

(5)停机

上面的取指令之后,PC的值还是会加一,指向下一个内存单元的地址。

此时,PC=4了。

首先还是要取出指令,PC将4号位置的地址送入存储器,存储器再将指令送入IR,IR再将操作码部分(000110)送入CU。

CU经过分析,发现这是一条停机指令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCqxM4Ql-1673444517419)(D:\Typora图片\image-20230111212346373.png)]

这时候,程序运行结束了。

要停止一个进程的运行,就要通过系统调用来通知操作系统终止这个进程,接下来就是操作系统要进行的相关指令了。

这里不做探讨。

五、总结

计算机的工作过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g6Ttta5L-1673444517419)(D:\Typora图片\image-20230111212452856.png)]

任何一个指令的执行,都是这三个阶段:取指令、分析指令和执行指令。

无论执行的是什么指令,前面五个步骤(取指令和分析指令)都是一样的,只有分析完指令之后,CU才可以知道这条指令到底要做什么。接下来的步骤,对于不同的指令就有可能不一样。

“取指令”阶段,MDR里面的数据是要传送到IR寄存器的。

而在“执行指令”的阶段,CU会根据具体执行的指令来决定MDR里面的数据是放入ACC还是放入MQ或者其他寄存器里面。

根据指令执行周期的不同,CPU就可以区分出这次从内存中取出的到底是指令还是数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMvy7Pgs-1673444517420)(D:\Typora图片\image-20230111213016106.png)]

现代计算机通常把MAR、MDR也集成到CPU里面。

这次的案例,每一条指令只给出了一个操作码和一个地址码。有的计算机给出的指令,可能有多个地址码。

比如一条指令包含两条地址,这种指令就被称为二地址指令。

存储程序:在程序运行之前,指令和数据都会被提前存到主存里面。


参考:王道视频
整理文章内容不容易,多多支持。
请添加图片描述

标签:ACC,里面,1.1,地址码,指令,详细,寄存器,MDR,计算机
From: https://www.cnblogs.com/wanjiadenghuo/p/17095021.html

相关文章