基本介绍cpu基本构成
这是一个CPU的基本构成,它主要分为两个部分一个是运算器,一个是控制器,下面的主要做一个简单的了解。
我们先看运算器。
这个是计算器用于实现计算的(废话)
这其中有4个部分组成分别是ACC(放数的),MQ(放数的和用来乘除的),X(放数的),ALU(用来计算的)。
接着我们再来看控制器。
这相当于CPU的大脑(好像怪怪的)
CPU的控制器有三个部分组成,CU(控制单元用来分析指令的),IR(存放当前要执行的指令),pc(计数器,用来读取下一条指令)
上面干巴巴的介绍说完了,实际上也很难记住,下面会有一个实际的例子,这样会更加方面理解。
实际运算过程举个栗子:
当前C语言执行了这样一段代码,那么CPU在运行过程中是怎样的一个过程呢?
一、首先整段代码会被加载到内存(主存储器中)也就是下图那样
二、此时CPU会通过控制器中的PC读取存放在内存中的指令,进行分析和执行(此时PC初始为0)
cpu基本运行原理
- 首先指令的存储字长为16bit也就是16个2进制数,但是在执行的时候 系统会自动拆解成操作码和地址码
- 第一步指令 从上面两个操作来看,1-5的步骤都是一样的就是通过pc这样的计数器的顺序的取指,唯一不同的就是从6开始的步骤,不仅是步骤和次数都不一样这取决于指令本身。
- 来捋一下很简单从最基本的逻辑来看就是PC(计数器)从零开始,将这个0传给MAR也就是地址寄存器 说我们想要第0行的数据
- MAR则把存储体中的第0行的数据找到通过MDR 柜台给到指令寄存器IR
- 此时IR中就存放着我们已经取出来的还没有执行的数据 这个数据也就是我们的指令
- 此时IR会将指令中的操作码发送给CU 分析后得知这是一个取数的指令,然后IR将0行指令的地址码发送给MAR (0000000101)也就是第5行的数据 a=2 将这个值放在acc中
- 第二步指令 上面这一些操作完成之后PC计数器就会自动加一,去除我们的第一行指令进行执行,而我们要计算的a*b的前面部分都是一样的,直接从执行操作码开始
- CU分析之后发现是一个乘法指令,则将第1行的地址码的数据也就是b=3放到MQ乘商寄存器中
- 现在cpu已经满足了乘数和被乘数,cpu开始进行乘法操作了,先将acc的a=2 被乘数放在x通用寄存器 通过ALU算术逻辑单元进行乘法操作 并将结果放在ACC中
- (如果乘数太大则需要MQ的辅助)
- 接着是第三步 算加法 前面取数阶段都是一样的 不同的就是取出的c=1的值是放在通用寄存器x中的 然后控制单元CU 给ALU 发送消息 需要计算加法吧ACC和X中的值相加 再放到ACC中
- 第四步指令 前面的取数也是一样的,只是取得的操作码通过CU分析为存数指令 将地址码发送给MAR(地址为十进制8) 将值发送给MDR(a*b c) 将其存储到存储体中
- 第五步指令 前面取数也是一样的,取出的指令为停机指令
,