CPU(Central Processing Unit)是计算机的主要处理器件,负责控制整个计算机的运行、数据的运算和处理,是计算机的“大脑”。CPU主要由控制单元、算术逻辑单元和缓存组成,通过时钟发出的计时信号完成指令的执行。它的主要功能包括指令解码、数据运算、中断处理、计时控制等。CPU性能直接决定了计算机的运行速度和应用的效率。
在之前的文章《》介绍了如何制造CPU,那么它是如何工作的呢?本文由CPU阿甘改编而得,主要讲的是系统启动和程序执行时CPU做的工作。
CPU的构成
中央处理器(CPU,Central Processing Unit)由运算器、控制器、Cache等。
可以看出CPU的主要功能是接收指令,执行指令。不过CPU不能保存指令。
最大的优点在于速度快,以ns为单位,内存比它慢了100倍,硬盘比它慢了1000多万倍。
下面我们主要介绍一下计算机从加电到加载操作系统中,CPU主要做了什么事情。
启动
当计算机上电了以后,CPU就先会执行内存最顶端的指令,现是一条跳转指令,所以会去执行BIOS里面的代码。
我们知道BIOS的主要功能是系统自检,看看内存、硬盘、显卡等是否有问题。自检完成以后,会产生中断,BIOS会告诉CPU是多少号中断。
中断了以后,CPU怎么知道去哪里执行响应中断的指令呢?我们可以用一张表来保存中断指令的响应代码,但是为了让这张表不那么臃肿,可以让这张表只保存响应代码的入口地址。
比如
这张表就称为中断向量表,保存的是响应中断的指令的入口地址,类似于响应代码的房间号。
CPU可以通过中断向量表查找到对应的指令,这条指令的目的是把磁盘的第一扇区(磁盘的BIOS)运到内存中。
到目前为止,硬件的初始化就完成了,下面应该加载操作系统。
运行程序
操作系统加载入内存中以后,会接管整个系统的管理工作。
下面我们来谈一下如何运行程序。
首先操作系统会为CPU分配进程,不过对CPU而言,它只关心自己的寄存器和程序计数器
要运行程序,首先需要从硬盘上加载程序。但是从硬盘上读程序实在太慢,CPU没有必要一直等着它,完全可以异步处理。
硬盘把返回的数据通过直接内存访问(DMA)把数据装载到内存中。这样CPU就解放出来,切换到另一个进程里面,当然相关的运行环境(寄存器、程序计数器)发生了改变。
但是上一个进程不可能放弃不执行了吧,所以等到当上一个进程的数据已经装载到了内存以后,CPU会收到一个中断,这样就可以切换回去了。
总结一下CPU的主要工作是,从内存中取出指令,进行译码,分解成为一系列的微操作,然后发出各种控制命令。
对CPU而言,主要关心的是它的寄存器和程序计数器,其中寄存器保存了计算的中间结果,而程序计数器可以用告诉CPU下一条指令去那里执行。
性能参数
CPU的主要性能参数有:
指令集
我们知道CPU的主要功能是解析指令,执行指令,也就是说CPU是靠一条一条的指令来计算和控制整个系统的。
也就是说不管是什么CPU,都有与之相匹配的指令系统。常用的指令集有两种
处理技术
本章主要介绍一下CPU体系架构里面常用的技术
流水线
每条指令都会经过取指(Fetch),译码(D1, main decode),转址(D2, translate),执行(EX, execute),写回(WB)结果等步骤。
那么当CPU预取完毕,进行译码的时候,预取部分的电路单元其实是空闲的。那么能不能让下一条指令进来执行预取的过程呢?答案是完全可以。
如下图所示,我们可以每过一个周期放入一条指令,这样在第5个时刻,最开始放入的指令其实已经执行到了最后一步WB了,第2条进入执行的指令比它晚一拍,执行到了EX上,其他的一次类推。
这样不断的有新的指令进入,同一时刻5条指令都在执行,只是说他们执行的阶段不一样。这样就实现了并行处理。
文章来源:dy2903_jianshu.com/p/a727d0883c88
本文地址:[https://chuanchengzhongyi.com/kepu/f3009896d54a90bb.html]