当前位置: 首页 > 后端技术 > Java

CPU如何执行程序a=1+2?

时间:2023-04-01 20:04:58 Java

1。CPU如何执行程序?写了这么多代码,你知道a=1+2这段代码是怎么被CPU执行的吗?不知道的不要慌张,接下来我们会一步一步,一层层的攻破这些问题。图灵机是如何工作的?图灵机长什么样?从下图可以看到图灵机的实际外观:图灵机的基本组成如下:有一个“纸带”,纸带由连续的格子组成,每个格子可以写字符,纸带好比内存,纸带上格子里的字符好比内存中的数据或程序;有一个“读写头”,读写头可以读取纸带上任意格子中的字符,也可以将字符写入纸带上的格子中;读写头上有存储单元、控制单元和计算单元等部件:存储单元用于存储数据;控制单元用于识别字符是数据还是指令,控制程序的流程。计算单元是用来执行计算指令的,在知道了图灵机的组成之后,我们就以简单的数学运算1+2为例,看看它是如何执行这行代码的。首先用读写头将“1、2、+”三个字符分别写入纸带上的三个格子中,然后读写头先停在1个字符对应的格子上,然后读-writehead将1读入存储设备,这个存储设备称为图灵机的状态;然后读写头向右移动一格,用同样的方法将2读入图灵机的状态,所以现在图灵机的状态存储了两个连续的数,1和2;当读写头向右移动一个空格时,它会遇到+号。读写头读到+号后,将+号传给“控制单元”,控制单元发现是一个+号,不是数字,所以不存入状态,因为+号是运算符指令,作用是将当前状态相加,所以通知“运算单元”工作,运算单元接收要相加的状态中的值。通知后,会读取state中的1和2进行计算,然后将计算出的结果3存入state中。最后,运算单元将结果返回给控制单元,控制单元将结果传给读写磁头,读写头向右移动,将结果3写入磁带上的格子中。事实上,图灵机看似简单的工作方式,与我们今天的计算机基本相同。接下来,让我们来看看当今计算机的组成和工作方式。冯·诺依曼模型1945年,冯·诺依曼等计算机科学家提出了计算机具体实现的报告,沿用了图灵机的设计,还提出用电子元件来构造计算机,并同意用二进制它还将计算机的基本结构定义为五个部分,即中央处理器(CPU)、存储器、输入设备、输出设备和总线。内存我们的程序和数据都存储在内存中,存储区域是线性的。数据存储的单位是二进制位(bit),即0或1。最小的存储单位是字节,1字节等于8位。内存的地址从0开始编号,然后递增排列。最后一个地址是内存中的总字节数-1。这个结构在我们的程序中就像一个数组,所以在内存中读写任何数据的速度都非常快。一样的。中央处理器(CPU)中央处理器就是我们常说的CPU。32位和64位CPU的主要区别在于一次可以计算多少字节的数据:32位CPU一次可以计算4个字节;64位CPU一次可以计算4个字节;CPU一次可以计算8个字节;**CPU内部组成:寄存器控制单元逻辑运算单元总线总线用于CPU与内存等设备之间的通信。总线可分为三种:地址总线,用于指定CPU要操作的内存地址;数据总线用于读写内存中的数据;控制总线用于发送和接收信号,如中断、设备复位等,CPU收到信号后自然做出响应。它还需要控制总线;当CPU要读写内存数据时,一般需要通过两条总线:首先,必须通过“地址总线”指定内存的地址;然后通过“数据总线”传输数据;1、输出设备输入设备向计算机输入数据,计算机计算后将数据输出给输出设备。这期间,如果输入设备是键盘,按下一个按钮时需要和CPU进行交互,这时就需要控制总线了。a=1+2执行具体流程。在程序编译时,编译器通过分析代码发现1和2是数据,所以在程序运行时,内存中会有专门的区域来存放这些数据。这个区域就是“数据段”。如下图数据1和2的区域位置:数据1存放在0x100;数据2存储在0x104;注意,数据和指令存放在不同的区域,存放指令区的地方称为“文本段”。编译器会将a=1+2翻译成4条指令,并将它们存储在文本段中。如图,这4条指令存放在0x200~0x20c区域:0x200的内容是加载指令将地址0x100的数据1加载到寄存器R0中;0x204的内容是加载指令将地址0x104中的数据2加载到寄存器R0中。0x208的内容是add指令,将寄存器R0和R1的数据相加,结果存入寄存器R2;0x20c的内容是存储指令,将寄存器R2中的数据存储回数据段中的地址0x108,这个地址就是变量a在内存中的地址;编译后,程序执行时,程序计数器会被设置到地址0x200,然后依次执行这4条指令,最终计算出变量a的结果。