代码的底层执行过程

计算机的基本构成

代码的底层执行过程_第1张图片
一个主机主要由CPU主存构成,主存也就是我们通常所说的内存。而我们通常所说的硬盘叫辅存。CPU主要与主存进行数据交互。

主存

代码的底层执行过程_第2张图片
主存由存储体存储地址寄存器(Memory Address Register, 简称MAR),存储数据寄存器(Memory Data Register,简称MDR)构成。
存储体,顾名思义,主存的主要功能就是存储,存储体就是存储数据的地方。
MAR和MDR可以举一个例子来理解。把主存比作一个快递点,存储体就是货架,每个货架的每一层都对应一个编号,货架上放着包裹(数据),你想要取包裹就需要有取件码(数据地址),你把取件码告诉店员(把数据地址传入MAR),店员告诉快递小哥取件码,快递小哥通过取件码找到包裹并放到柜台上等你取走(主存根据MAR的地址获取对应地址上的数据并放入MDR)。所以说货架就队形存储体,MAR就对应店员,MDR就对应柜台。
代码的底层执行过程_第3张图片
CPU把想要获取数据的时候,就会将数据的地址传入MAR,主存通过MAR里的地址到对应位置获取数据并放入MDR中,CPU就可以取走想要的数据。这是取数据的过程。
不同于快递点的是,我们还可以通过CPU往里写数据,CPU将想要把数据想要写入的地址放入MAR中,并把想要写入的数据放入MDR中,主存就会往存储体写入地址,当然,写和读都还有分别的信号控制写数据还是读数据,我们在这里不做展开。
代码的底层执行过程_第4张图片
存储体由一一个个存储单元构成,每一个存储单元存储着一串二进制数,每一串二进制数都一应一个地址。

CPU

CPU由运算器控制器构成

运算器

运算器负责实现算入运算(加减乘除)和逻辑运算(与或非)。
代码的底层执行过程_第5张图片
运算器由算数逻辑单元ALU与ACC,MQ,X(寄存器,在这里先把他们理解为存储运算数和结果的地方),
ALU负责运算。

控制器

代码的底层执行过程_第6张图片

CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,自动加1.

代码执行过程

int a = 2, b = 3, c = 1, y = 0;
void main() {
    y = a * b + c;
}

通过上述代码执行过程,让我们看看CPU与主存是如何协调工作的。
首先代码编译成汇编语言,汇编语言再变成机器码存储在主存中。
代码的底层执行过程_第7张图片
上边存储的为指令,下面存储的为数据。指令分为操作码和地址码,操作码代表指令的标识,地址码代表指令操作的地址。
下面我们来看看执行指令的具体步骤。
代码的底层执行过程_第8张图片
第一个指令
代码的底层执行过程_第9张图片
第二个指令
代码的底层执行过程_第10张图片
第三个指令
代码的底层执行过程_第11张图片
第四个指令
代码的底层执行过程_第12张图片
第五个指令,停机。

总结

计算机组成原理概括来讲就是讲了这些内容,具体的细节分散在了以后每个章节的学习中,包括如何进行算术运算和逻辑运算,如何主存与CPU数据如何交互,指令如何设计,CPU如何工作。

你可能感兴趣的:(组成原理)