【代码与算法的交响:人工智能视角下的CPU工作原理】
【代码与算法的交响:人工智能视角下的CPU工作原理】
前言本文主要是关于计算机cpu工作原理的介绍。CPU是如何执行指令的先加载到内存中 ,然后才能被CPU读取并执行。eg:一个Java程序,写出来是.java 源代码文件,编译得到.class二进制文件(仍然是在硬盘上),运行程序的时候,jvm会把这个.class 加载到内存中,再进一步翻译成cpu能识别的二进制指令。冯诺依曼体系结构规定:一个程
【代码与算法的交响:人工智能视角下的CPU工作原理】
- 本文主要是关于计算机
cpu工作原理
的介绍。
CPU是如何执行指令的
- 先加载到内存中 ,然后才能被
CPU
读取并执行。 - eg:一个
Java
程序,写出来是.java
源代码文件,编译得到.class
二进制文件(仍然是在硬盘上),运行程序的时候,jvm
会把这个.class
加载到内存中,再进一步翻译成cpu
能识别的二进制指令。 冯诺依曼体系结构规定
:一个程序,指令和依赖的数据,都是要在存储器中保存的,cpu
如果要执行,都是要自动的从存储器中读取相应的指令。
CPU执行程序的三个阶段
- 1.读指令(把内存中的指令数据,读取到
cpu
的寄存器中)cpu
上也能存数据,存储数据的模块就叫做寄存器
,速度比内存更快,但是存储空间更小,更贵。
- 2.解析指令(理解当前指令要干什么)
- .执行指令
指令表
-
指令表
:是cpu
内部写死的一个内容,已经内置在里面了。
- 每个
CPU
被设计出来都会提供对应的指令表,- RAM:内存(随机访问存储器)
- cpu寄存器:数量是固定的,一般都是使用字母/数字的组合来命名的
指令
:由八位二进制数字组成,包括操作码和操作数。- opcode:操作码,用于区分是什么操作
- 操作地址或寄存器:统称为操作数,针对什么数据进行操作(类似于函数的参数)。对于不同的指令有不同作用。
- 实际上现代的
cpu
一条指令都是更长的,不仅仅是8位,但是大体也是由操作码和操作数构成。
第一轮操作:
- (1)cpu 取出 0 号地址的指令
- (2)解析指令,首先根据指令的前四位①操作码去指令表查询到这个指令是
LOAD_A
指令。
- 然后要从后面跟着的地址②(1110 = 14)上读取数据到
A寄存器
中 - ()执行指令
- 把
14
地址这里的数据(00000011 = )取出来,放入到A
寄存器中。
- 把
第二轮操作:
- (1)取指令 (由于刚才的指令不是跳转指令,所以PC中要取的地址就会顺延加1,也就是说现在的地址是1)
- (2)解析指令,根据指令前四位①操作码去查询指令表,我们可以知道这个指令是
LOAD_B
指令。
- 然后要从后面跟着的地址②(1111 = 15)上读取数据到
B寄存器
中。 - ()执行指令
- 把
15
地址这里的数据(00001110 = 14)取出来,放到B
寄存器中。
- 把
⚠️注意:
- 内存中存的不全都是指令,有的地方存的是指令,有的地方存的是数据(指令还是数据是人为规定的),如果是指令,后面还会继续拆分。
第三轮操作:
- (1)取指令 (按照顺延顺序取得2号地址的指令)
- (2)解析指令,根据指令前四位①操作码去查询指令表,我们可以知道这个指令是
ADD
指令。
- 通过查看指令表我们可以得知,现在
add
指令后面的操作数不再是内存地址了,而是寄存器的编号。
- 操作码后面的操作数表示的是这
两个寄存器
的id
分别是01
和00
- 寄存器是固定数量的,通过编号来表示,CPU上每个寄存器都有名字(数字+字母)。
我们假设01是A寄存器的id,00是B寄存器的id。现在我们通过操作码对应的ADD
指令,把这两个寄存器中的数值进行相加,并将结果放入到第二个寄存器(00 —> A)当中。
- ()执行指令
- 按照上面的操作,将相加结果17放入到第二个寄存器A中,现在A中应该放17,B还是14。
第四轮操作:
- (1)取指令 (按照顺延顺序取得号地址的指令)
- (2)解析指令,根据指令前四位①操作码去查询指令表,我们可以知道这个指令是
STORE_A
指令。
- 这个指令的功能是把
A寄存器
中的数据(17)保存到后面操作数(1对应的单元中)描述的内存中
- ()执行指令
第五轮操作:
- (1)取指令,顺序取出下一个指令
- (2)解析指令,指令表中未写,一般就表示,程序运行完毕。
- ()执行指令,程序就退出了。
小结:
虽然计算步骤非常繁琐,但是由于拥有强大的cpu
,使其一秒钟能运行GHz - > 0亿轮。
内存地址
地址
:是管理数据的方式,管理和存储数据都是根据地址展开的(eg:宿管根据门牌号进行宿舍的管理)内存核心特性
:随机访问是内存的核心特性,它使得宿管具有闪现功能,能够在极短时间内访问到任意房间的数据。之所以数组能够以O(1)复杂度取下标,本质上就是内存提供了随机访问的能力。- 1G就是1个billion,1个billion就是10亿,所以16G就是160亿。
- 1M是1个million(百万)
- 1K是一个thousand(千)
cpu
中有 一个专门的寄存器,保存接下来要从哪个内存地址来取指令(不同的 cpu 叫法不同),有些操作系统上称为“程序计数器”简称pc
。
应用场景
- eg:你有一个服务器程序,这个程序非常重要,绝对不能挂,但是突然发现,这里存在严重的bug!!!但是又不能立即发布新版本重启,你希望能够在不重启服务器情况下把bug修复,应该怎么办?
- 可以写一个特定的程序,通过特定的程序,直接修改服务器的内存数据,把要更新的代码,直接写到指定的内存中,并且修改原有的服务器指令中的逻辑,插入跳转指令,在触发bug逻辑之前,让程序跳转到新植入的逻辑中进行执行。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-25 15:19:49
推荐阅读
留言与评论(共有 12 条评论) |
本站网友 南京威尼斯水城 | 9分钟前 发表 |
opcode:操作码 | |
本站网友 如何治早泄 | 8分钟前 发表 |
00是B寄存器的id | |
本站网友 组阁 | 27分钟前 发表 |
内存地址地址:是管理数据的方式 | |
本站网友 陈雨田 | 5分钟前 发表 |
分享自作者个人站点/博客 | |
本站网友 阳虚体质的表现 | 25分钟前 发表 |
编译得到.class二进制文件(仍然是在硬盘上) | |
本站网友 曹妃甸港 | 0秒前 发表 |
我们可以知道这个指令是STORE_A指令 | |
本站网友 槐米茶 | 25分钟前 发表 |
第四轮操作: (1)取指令 (按照顺延顺序取得号地址的指令) (2)解析指令 | |
本站网友 中国四大汽车集团 | 10分钟前 发表 |
通过编号来表示 | |
本站网友 电驴不能用 | 21分钟前 发表 |
放到B寄存器中 | |
本站网友 教室环境布置 | 12分钟前 发表 |
每个CPU被设计出来都会提供对应的指令表 | |
本站网友 樱桃树 | 24分钟前 发表 |
原始发表:2024-12-25 |