记得大学时的导师和讲过:把生活和计算机联系起来,会发现有很多共性;计算机抽象于生活,代码思维恰如人生哲学。
参考:
计算机中CPU扮演的角色
本文是一次关于计算机底层的的梳理。
官话
CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。
从整体来看
计算机就像是个大领导,有条不稳的调度着各种资源,而且很高效,让手下的线程或者进程做事情,但是他只能同时处理一件事情,又不能让其他线程等待很久,所以在和不同的人打交道时,会记着上一次说了什么,下一次继续,这叫保护现场。而每次让线程处理事情的时间叫时间片。
拆分来看
为了完成CPU的角色定位,CPU内部需要什么东西呢?为什么CPU可以完成这些任务?
CPU主要组成部分分为:控制器、运算器、以及后来的高速缓存、浮点处理器;
CPU主要组成部分逻辑结构图:
控制器
无论是单个计算机还是实际的团队,上至国家,下至个人,控制都是整个系统的核心。
嘀嗒嘀嗒嘀嗒 -> 高电压、低电压、高电压、低电压 -> 101010,计算机只能识别这中机械码,别把人类的情感带入其中。
计算机控制指令执行,正是依靠着时序发生器来进行的。
自然界有个神奇的东西,叫石英,学名二氧化硅SiO2。
石英的晶振是固定的,很有规律,我们最常见的可能是石英钟,原理就是这样。
在计算机中,也用了这个东西,只不过更复杂一些。
时序发生器用于信号同步,集体指挥,像个领导一样。
CPU的控制器由以及及部分组成:
程序计数器 :下一条指令我该去哪里取,它负责记录
指令寄存器 :当前的指令在哪?它存着
指令译码器 :根据人类定义的一个二进制表,去查表然后根据表中的内容进行指令翻译。
时序发生器 :嘀嗒嘀嗒负责指令执行,这个里边的电路其实还蛮复杂的
操作控制器 :和 时序发生器配合使用
其主要功能包括:
从主存中取出一条指令,并指出下一条指令在主存中的位置;
对指令进行译码,并产生相应的操作控制信号,以便启动规定的动作;
指挥并控制CPU、主存和输入/输出设备之间数据流动的方向。
运算器
核心就是我们常挂在嘴边的ALU。加减乘除等操作都是在这里完成,是个数据加工车间。
运算器由算术逻辑单元(ALU)、累加寄存器(AC)、数据寄存器(DR)和程序状态字寄存器(PSW)组成。
它有两个主要功能:
执行所有的算术运算;
执行所有的逻辑运算,并进行逻辑测试。
累加寄存器:为算术逻辑单元(ALU)提供一个存放临时值得地方
数据寄存器:CPU嫌弃内存速度慢,作为一个数据或指令的中转站
程序状态字寄存器:保存各种状态条件标志的寄存器,比如:运算结果溢出标志、进位、借位
高速缓存
CPU觉得内存太慢了,自己搞了一块缓冲区
CPU的频率是 GHz为单位,其速度小于1 ns 【 纳秒 】
内存的速度是100 ns。
二者最少相差百倍,于是乎,CPU嫌弃内存,说你太慢,自己搞了一款比较小的缓存,大概几M吧,用户缓存常用数据。
小结
CPU中有很多寄存器,比如控制器中的:程序计数器、指令寄存器、指令译码器、时序发生器等以及运算器中的累加寄存器、数据寄存器、程序状态字寄存器等。
那么CPU中一共有多少寄存器呢?
8086处理器:
ARM7处理器:
在CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。
这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充。
若要了解更多寄存器的知识:CPU体系架构-寄存器
篇幅过长不易理解,下次聊聊CPU和内存的故事。