您现在的位置是:首页 > 编程 > 

【代码与算法的交响:人工智能视角下的CPU工作原理】

2025-07-27 16:23:09
【代码与算法的交响:人工智能视角下的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位,但是大体也是由操作码和操作数构成。

CPU执行一条指令的具体实现流程 (以计算机计算+14=17过程为例)

第一轮操作:

  • (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分别是0100
  • 寄存器是固定数量的,通过编号来表示,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逻辑之前,让程序跳转到新植入的逻辑中进行执行。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-25,如有侵权请联系 cloudcommunity@tencent 删除cpu工作算法原理人工智能

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1220729.html

相关标签:无
上传时间: 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