cpu阿甘

cpu阿甘_第1张图片

一,启动

为啥叫阿甘,我做事飞快,但非得别人告诉去哪里执行才行,要不然只会坐在那里无所适从。

cpu具备很小的脑容量,、为数不多的寄存器,能临时记一点东西,但跑的快,速度快。内存比cpu慢100倍,硬盘比cpu慢1000多万倍。

cpu脑容量小,能记住:1.我的工作就是运行指令;2.我不能保存指令,指令全在内存里;3.我的第一条指令在内存的最顶端处0xFFFFFFF0

cpu打电话给内存要指令:cpu-系统总线-I/O桥电话局转接-存储总线-内存


二,运行

操作系统进入内存

进程屋

对cpu最重要的两件东西:寄存器;程序计数器,用它记住cpu要执行的下一条指令地址

以运行helloworld程序为例:程序还在硬盘上,先把它装载到内存里。打电话给硬盘,请硬盘将数据运来,即cpu-系统总线-IO桥电话局-IO总线-硬盘。但硬盘比cpu慢太多,于是打电话给硬盘,用直接内存访问(DMA),硬盘直接把数据装载到内存,装载完成后,给cpu发信号。

程序都是由顺序,分支,循环(其中后两者都是跳转)来组成

cpu的工作:打电话问内存要一条指令,执行这个指令,如果是跳转指令的话,我就问内存要跳转的目标地址的那一条指令,继续执行。复杂的,就是函数调用,得和内存紧密配合。


三,新装备:缓存

cpu和内存一停电,全部失忆

cpu最近访问的指令和数据,有规律。比如说,cpu访问内存一个位置以后过不多久还会多次访问,还有,一个内存位置被访问了,附近的位置很快也会被访问到。这其实叫程序的局部性原理。既然cpu经常访问同一块区域的东西,那么把这些东西缓存在cpu那里,加个缓存。从此以后,cpu每次读写指令和数据,都问缓存要,缓存没有才给内存打电话。由于局部性原理的存在,确实快了不少。当然也有不足,那就是linux系统在做程序切换时,缓存就会失效,因为两个程序之间没什么联系,局部性原理不起作用,所以需要重建缓存。


四,自我提升:流水线

缓存让cpu工作更有效率

现在假设cpu有四只手,第一只手负责打电话问内存要指令;第二只手负责翻译指令;第三只手负责真正执行;第四只手负责有的时候还得把结果写回内存。那么问题来了,第一只手取指令,其它三只手将会闲着。所以要引入流水线,这样每只手都不会看空闲。


以上主要内容来自

cpu阿甘_第2张图片


你可能感兴趣的:(码农翻身公众号要点整理)