在程序员眼里CPU应该是什么样的?
CPU是什么东西?
我们先来说CPU的全称是什么,英文名字 Central Processing Unit(中央处理器 )的缩写,相当于计算机的大脑,它是数百万甚至数亿的晶体管构成的,这是大家都知道的计算机常识,但是作为我们计算机技术爱好者或者是程序员来说,只知道这些就太少了。我今天想带大家了解的是关于CPU是如何运行的,里面都有一些什么功能。
CPU原理图
首先我们看一下这张图,图中还是很详细地给我们画出了程序执行的过程。刚刚我们也提到了我们的CPU是由很多的晶体管组成的电子部件,我们的内存也是,通常称为IC(Integrated Circuit),我们从CPU的原理图中来看,构造还是比较简单的对吧,有存储单元(寄存器)、运算单元(运算器)、控制单元(控制器),各个部分相互配合信号和数据在各个部分流通就可以完成我们所有的计算机操作,接下来我们看看我们每一个部分的工作都是做一些什么。
寄存器:可以用来暂存指令,数据等一些需要CPU处理的对象,你可以看作是内存的一种但是寄存器读写速度比内存要快很多,为了提高我们的效率根据不同的需要有些CPU内部会有20~100个寄存器。
控制器:负责把内存上的指令,数据读入到寄存器,并且根据指令执行的结果来控制整个计算机的行为。
运算器:运算器负责运算从内存读入寄存器的数据。
在这里我还要补充一个原理图中没有的模块,那就是CPU的时钟模块,我们的时钟模块负责发出CPU开始计时的时钟信号,这里我们要做到如果时钟信号 Pentium 2GHz 那它代表的意思就是时钟信号的频率为2GHz(1GHz=10亿次/秒)你可以理解时钟信号频率越高CPU运行速度越快。不过有的计算机时钟位于CPU的外部,所以我们刚刚的原理图里面没看见这个模块。
程序跑起来的流程
现在大家看完这些是不是觉得很神秘的CPU也是比较简单的构造,他可以做的我们都可以做,但是有一点他的计算能力不是我们凡人可以拥有的。程序运行以后,根据时钟信号,控制器会从内存中读取指令和数据,通过这些指令介意解释和运行,运算器就会对数据进行运算,然后我们的运算结果由控制器控制计算机做出相应的动作。
深入探讨
接下来我们就要很专业地去深入了解一些东西了,如果下面的比较枯燥无味你建议你到此为止,了解一下基本就OK了,但是你想更深入的探讨那就来吧。
我们讲到我们CPU是由寄存器,运算器,控制器,时钟信号组成的,其实我们需要深入地了解的是我们的寄存器,为什么呢?这是因为我们的程序是把寄存器作为对象来描述的。
我们在使用高级语言进行代码编译的时候在编译的时候都会转化为机器语言,然后通过CPU的内部寄存器来处理,比如我们写这样一条代码:A=1+2;这样的高级语言代码在转化成机器语言后就是利用寄存器来进行相加运算和存储处理的。
刚刚也提到过在外面CPU中有很多的寄存器,功能和数量都是不一样的,但是我们还是可以将寄存器大致划分成八类:
对于我们程序员CPU是什么呢?CPU是由各种功能的寄存器集合体,其中程序计数器,累加器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他的寄存器是可以有多个的。
程序计数器
这里我们挑其中一个来细说一下工作原理,我们的程序计数器决定我们我们程序的流程,我们举一个简单的函数调用机制来说明一下程序的执行流程,
我们C语言程序程序代码中定义了两个变量a=123 b=456 然后把它做为参数传递到啊函数MyFunc()里面。从内存地址中我们发现当程序运行到地址0132的时候接下来应该执行函数体,我们函数体入口的地址在0260,这时候我们通过跳转指令把程序极速器的值设定为0260就可以实现函数的调用。我们把a、B的数据从地址0132传递到0260可以利用内存或者寄存器来实现。
我们需要知道的是当程序调用完函数后,我们需要在函数的出口0354地址处把程序计数器的值改成原来的0154,这样才会回到原来的下一条指令。但是其实我们根本没办法完成这样的操作。那我们怎么办?我们可以通过call指令和return 指令来解决。我们来看看两种指令的原理:
在编译高级编程语言的程序后,函数调用的处理会转换成call指令。函数结束处理时候就会转换成return指令,这样一来我们程序就可以运行起来了。
总结
分享到这里感觉后半部分的知识点还是比较生涩,可能没很好地理解,但是还是坚持写完了,要敢于迈出第一步,可能第一次写不明白那就第二次,同样如果你第一次看不明白那就看第二次总会有一天忽然开朗熟记于心。我们需要保持一份对技术的热爱。
-
曾经的我,一人独自在陌生的城市工作,好在是双休,躲在自己的出租屋里,看书学习打游戏,好不安逸,唯一的遗憾就是吃不好,小区门口的小饭馆都吃遍了,始终不尽人意,人在异乡,饮食和口味适应,还是一件非常头疼的事情,时间一长,我就萌生了在家自己下厨房做饭的想法;简单采购了锅碗瓢盆之后,就开始去图书馆购买了几本[详细]
-
1、韭菜又叫起阳草,味道非常鲜美,还有独特的香味。2、 今天就来分享一下“韭菜盒子”做法,喜欢的朋友可以先收藏,有空自己试一下。3、下面开始介绍所需要的食材:韭菜、面粉、粉丝、鸡蛋、食盐、水淀粉、老抽、白醋、味精、蚝油4、韭菜放入盆中用清水清洗干净,再放到流水底下彻底冲洗干净,然后沥干水分。大盆中放[详细]
-
铜钱草除了可以土培,还可以水养,它的生长速度相当快,水培时只需用一根铜钱草就能长出一整盆。不过用来水培的铜钱草一定要是健康无病的。下面详细介绍一下铜钱根茎的水培过程。1.插穗挑选铜钱草水培时生长速度很快,可以在母株里选择一根长势良好的根茎,单独剪出来,不用担心一根会水培不成功,只要适应了新环境,很快[详细]
-
孩子的成长发育往往是我们作为家长最为关心的事,但是现在许多孩子都十分的挑食,导致他们的营养跟不上,这可让我们作为家长的操碎了心,但是大家别担心,最近小编发现了一道菜品,十分的适合孩子吃,还特别 的有营养。海带和“它”是绝配,不腥不腻补钙好吸收,牛奶大骨头都要靠边站。“它”是什么呢?它就是排骨。排骨的[详细]
-
括括 kuò(guā):左右结构,左收右展。左部“扌”旁斜势抗肩,左伸右收,不要写宽。横画露锋起笔,大扛肩,勿长;竖钩起笔稍重,向下略左斜,从短横右部穿过,中间略细,略弯,劲挺有力,到位后跪笔弹锋出钩,钩不可大;提笔起笔左探,切笔后向右上方提笔出锋,过竖笔即止。右部“舌”字不要写宽,平稳端庄。平撇起[详细]