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

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

一、计算机组成框图

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

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

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

二、思维导图

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

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

在这里插入图片描述

三、部件剖析

(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)]

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

经过上面的分析,知道现在这一条指令是存数指令,也就是将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里面。

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

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

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


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

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
26天前
|
缓存 Java Go
计算机是如何工作的
计算机是如何工作的
18 0
|
5月前
|
存储 自动驾驶 数据挖掘
计算机的设计原理
计算机的设计原理
65 0
|
6月前
|
存储 缓存 Linux
计算机是如何工作的(简单介绍)
计算机是如何工作的(简单介绍)
119 0
|
6月前
计算机常见故障的分析与案例
计算机常见故障的分析与案例。
67 1
|
6月前
|
存储 供应链 文件存储
计算机演变过程
我们先从最早的计算机讲起,人们在最初设计计算机时采用这样一个模型: 人们通过输入设备把需要处理的信息输入计算机,计算机通过中央处理器把信息加工后,再通过输出设备把处理后的结果告诉人们。 其实这个模型很简单,举个简单的例子,你要处理的信息是1+1,你把这个信息输入到计算机中后,计算机的内部进行处理,再把处理后的结果告诉你。 早期计算机的输入设备十分落后,根本没有键盘和鼠标,那时候计算机还是一个大家伙,最早的计算机有两层楼那么高。人们只能通过扳动计算机庞大的面板上无数的开关来向计算机输入信息,而计算机把这些信息处理之后,输出设备也相当简陋,就是计算机面板上无数的信号灯。所以那时的计算机根本无法处理
80 0
|
11月前
分享5款工作和学习中,经常用到的软件
如今,工作和学习都离不开电脑,所以电脑里的软件自然也是必不可少的,但是电脑软件那么多,不可能每个都装上吧,所以我们要装好用的、实用的,下面给大家分享5款好用到爆的软件,很多懂电脑的人都在用。
69 0
|
Java Unix 程序员
1.计算机是如何工作的(下)
1.计算机是如何工作的(下)
58 1
|
存储 芯片
1.计算机是如何工作的(上)
1.计算机是如何工作的(上)
107 0
|
人工智能 编解码 网络协议
计算机实验基础要点
第一台计算机ENIAC 1946年 计算机发展:电子管计算机,晶体管计算机,集成电路计算机,大规模集成电路计算机 计算机分类:超级计算机,大型计算机,小型计算机,微型计算机,嵌入式计算机, 计算机特点:速度快,精度高,存储容量大,具有逻辑判断能力,自动化程度高,可与通信网络互联 计算机应用:1科学计算2数据处理3辅助技术4过程控制5人工智能 计算机系统组成:1硬件2指令3程序4软件
90 0
|
存储 前端开发 rax
深入理解计算机系统-第3章程序的机器级表示笔记
计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列阶段生成机器代码。
138 0