php做视频网站源码,北海 网站建设,谷歌应用商店,网址导航总是自动在桌面#x1f435;本篇文章将对cpu的相关知识进行讲解 一、认识CPU
下图是简略的冯诺依曼体系结构图 上图中#xff0c;存储器用来存储数据#xff0c;注意在存储器中都是以二进制的形式存储数据的#xff0c;CPU就是中央处理器#xff0c;其功能主要是进行各种算术运算和各种… 本篇文章将对cpu的相关知识进行讲解 一、认识CPU
下图是简略的冯诺依曼体系结构图 上图中存储器用来存储数据注意在存储器中都是以二进制的形式存储数据的CPU就是中央处理器其功能主要是进行各种算术运算和各种逻辑判断
我们在计算机上运行的任何一个程序本质上都是在CPU上运行的接下来再结合任务管理器来对CPU进行讲解 1.1 占有率和频率 上图中“3%” 就是CPU占有率
举个例子假如一个人上班总时间为8小时但他用4小时就完成了今天的工作此时称CPU占有率为50%计算机中运行的程序并非都是全力的工作通过计算每一个程序的CPU占有率最终算得的总占有率就是上图中显示的
“3.03GHz” 就是CPU频率
CPU频率用来描述CPU工作的效率数字越大工作效率越快CPU频率也可以简单认为1s执行多少个指令/计算了多少次
CPU频率还有基础频率和最大睿频的概念基础频率就是CPU保底的工作效率最大睿频就是CPU最高能达到的工作效率 1.2 核心
以前的CPU都是单核心CPU要想提高这种CPU的性能就必须增加其内部的集成原件的数量那么就得让每个单位原件更小但是并不能无限小下去单核CPU就达到了发展瓶颈
于是就有了多核心CPU现在的计算机大多都是多核心CPU 内核为物理核心逻辑处理器是逻辑核心买电脑时看到的8核 16线程就是这个意思这里有一个简单的了解就行
CPU是多核心的但每一个核心的工作效率是一样的所以在设计程序时为了提高工作效率就得做到合理分配把要完成的任务交给不同的核心去完成这也就是我们后续要研究的“多线程编程” 1.3 缓存
寄存器是CPU内部存储数据的模块在存储空间上硬盘 内存 寄存器在速度上寄存器 内存 硬盘寄存器和内存大概差3~4个数量级内存和硬盘又差3~4个数量级由于速度差异过大CPU提供了缓存模块 上述CPU中有3个缓存对于缓存数字越小速度越快空间越小
有些要频繁使用的数据如果存在内存中CPU要频繁从内存中读取这样速度会比较慢因此可以将这些要高频使用的数据放到缓存中
CPU在读取指令时先看缓存中有没有如果有直接从缓存中读取没有则从内存中读取 二、CPU如何执行指令 2.1 CPU执行指令的步骤
CPU执行指令分为3个步骤
1. 读指令将内存中的指令数据读取到CPU的寄存器中
2. 解析指令
3. 执行指令 2.2 指令
指令就是指导CPU工作的命令主要由 操作码操作数 组成操作码就是指令的编号操作数就是接下来通过指令要操作的数据
下图是一个指令表 每一个CPU被设计出来时都会提供一个指令表 2.3 CPU如何读到指令
写完一个Java程序就会生成一个 .java 的源文件经过编译后生成 .class 的二进制字节码文件之后运行程序时JVM会把 .class 文件加载到内存中在内存中进一步被翻译为CPU认识的二进制指令
写完一个C程序就会生成一个 .c 的源文件经过编译后生成 .exe 的二进制文件之后运行程序时操作系统会把 .exe 文件加载到内存中在内存中进一步被翻译为CPU认识的二进制指令 CPU中有一个专门的寄存器保存接下来要从哪个内存地址取指令在不同的CPU中可能叫不同的名字在有些操作系统书中称其为“程序计数器”简称“pc”
此处假设从0号地址开始读取CPU每次读取执行完一个指令之后就会自动把pc中的值1即顺序取下一条指令有些情况会遇到跳转类指令此时就根据设置的地址进行取地址 接下来通过具体的操作进一步熟悉CPU执行指令的过程 2.4 模拟操作
第一轮操作
读取指令从0号地址读取到 00101110
解析指令操作码0010操作数111010进制14通过查询指令表该指令就是将14号地址的数据加载到A寄存器中
执行指令将14号地址的数据0000001110进制3加载到A寄存器中
第二轮操作
读取指令顺序读取1号地址指令00011111
解析指令操作码0001操作数111110进制15通过查询指令表该指令就是将15号地址的数据加载到B寄存器中
执行指令将15号地址的数据0000111010进制14加载到B寄存器中 执行到这一步CPU中寄存器A3寄存器B14 第三轮操作
读取指令顺序读取2号地址指令10000100
解析指令操作码1000通过查指令表此处是将两个寄存器的数据求和并将求和后的数据加载到第二个寄存器操作数0100此处的01 和 00 就代表两个寄存器的idid是在CPU设计出来的时候提前约定好的这里就假定01B00A
执行指令AB寄存器中数据求和等于17 并将其加载到A中 此时CPU中寄存器A17寄存器B14 第四轮操作
读取指令顺序读取3号地址指令01001101
解析指令操作码0100操作数110110进制13通过查指令表此处将A寄存器中的数据加载到13号地址处
执行指令13号地址的数据00000000 - 0001000117的二进制形式
第五轮操作
读取指令顺序读取4号地址指令00000000
解析指令操作码0000操作数0000指令表中没有0000的操作码一般认为程序运行结束
执行指令程序退出 本篇文章只是对CPU进行了大致的了解接下来会对操作系统的相关知识进行讲解