当前位置: 首页 > news >正文

CPU的原理

一、CPU的功能

中央处理器(Central Processing Unit,简称CPU)总是周而复始地做同一件事:从内存取指令,然后解释执行它,然后再取下一条指令,再解释执行。

二、CPU的结构

两种结构,分别是冯·诺伊曼结构与哈佛结构

冯·诺伊曼结构

哈佛结构

这两个体系的区别如下

1. 存储器

哈佛结构使用两个独立的存储器:指令存储器和数据存储器。指令存储器存储程序指令,数据存储器存储程序数据。冯·诺依曼结构则使用一个统一的存储器,存储程序指令和数据。

2. 编址

哈佛结构采用指令和数据独立编址方式。指令存储器和数据存储器拥有各自的地址空间,CPU需要使用不同的指令来访问它们。冯·诺依曼结构采用指令和数据统一编址方式,指令和数据共享同一个地址空间,CPU可以使用相同的指令来访问它们。

3. 总线

哈佛结构使用两条独立的总线:指令总线和数据总线。CPU通过指令总线读取指令,通过数据总线读取数据。冯·诺依曼结构则使用一条统一的总线,用于传输指令和数据。

三、核心的功能单元

CPU最核心的功能单元包括:
寄存器(Register) ,是CPU内部的高速存储器,像内存一样可以存取数据,但比访问内存
快得多。随后的几章我们会详细介绍x86的寄存器eax、 esp、 eip等。有些寄存器只能用于某种特定的用途,比如eip用作程序计数器,这称为特殊寄存器(Special-purpose Register) ,而另外一些寄存器可以用在各种运算和读写内存的指令中,比如eax寄存器,这称为通用寄存器(General-purpose Register) 。

程序计数器(PC, Program Counter) ,是一种特殊寄存器,保存着CPU取下一条指令的地
址, CPU按程序计数器保存的地址去内存中取指令然后解释执行,这时程序计数器保存的地
址会自动加上该指令的长度,指向内存中的下一条指令。

指令译码器(Instruction Decoder) 。 CPU取上来的指令由若干个字节组成,这些字节中有些
位表示内存地址,有些位表示寄存器编号,有些位表示这种指令做什么操作,是加减乘除还
是读写内存,指令译码器负责解释这条指令的含义,然后调动相应的执行单元去执行它。

算术逻辑单元(ALU, Arithmetic and Logic Unit)。如果译码器将一条指令解释为运算指
令,就调动算术逻辑单元去做运算,比如加减乘除、位运算、逻辑运算。指令中会指示运算
结果保存到哪里,可能保存到寄存器中,也可能保存到内存中。

地址和数据总线(Bus) 。 CPU和内存之间用地址总线、数据总线和控制线连接起来,每条
线上有1和0两种状态。如果在执行指令过程中需要访问内存,比如从内存读一个数到寄存
器,执行过程可以想像成这样:

1. CPU内部将寄存器对接到数据总线上,使寄存器的每一位对接到一条数据线,等待接收
数据。
2. CPU通过控制线发一个读请求,并且将内存地址通过地址线发给内存。
3. 内存收到地址和读请求之后,将相应的内存单元对接到数据总线的另一端,这样,内存
单元每一位的1或0状态通过一条数据线到达CPU寄存器中相应的位,就完成了数据传
送。往内存里写数据的过程与此类似,只是数据线上的传输方向相反。

上图中画了32条地址线和32条数据线, CPU寄存器也是32位,可以说这种体系结构是32位的,比
如x86就是这样的体系结构,目前主流的处理器是32位或64位的。地址线、数据线和CPU寄存器的
位数通常是一致的,从上图可以看出数据线和CPU寄存器的位数应该一致,另外有些寄存器(比如
程序计数器)需要保存一个内存地址,因而地址线和CPU寄存器的位数也应该
 

四、多核CPU技术

多核CPU(multi-core processor)是指在一个物理CPU内部,被精心设计和制造出多个独立的物理核心。这些核心可能共享一个Die,也可能分布在多个Die上,通过高度集成的内部互联技术进行协同工作。这种架构使得多核CPU能够同时执行多个任务,显著提升计算机的处理能力。

系统架构

参考:

百度安全验证

https://zhuanlan.zhihu.com/p/896763262

多核处理器的体系结构特点(啥是同构、异构?常见的多核有哪些?)_多核异构-CSDN博客

 

相关文章:

  • Cherno C++ P54 内存:栈与堆
  • 深度学习04 数据增强、调整学习率
  • 数据结构 红黑树和set/map
  • Windows环境搭建ES集群
  • DeepSeek-R1 大模型本地部署指南
  • hive:分桶表和分区表的区别, 分桶表,抽样查询
  • 国内智驾主要用的芯片以及对应厂商
  • Linux(ubuntu)下载ollama速度慢解决办法
  • 设计模式:状态模式
  • Visual Studio Code使用ai大模型编成
  • 【Godot4.3】自定义StyleBox
  • 在Vue3中使用Vuex
  • 前端里的this指向问题
  • JavaScript 内置对象-数组对象
  • python的装饰器
  • 降序排序算法
  • POI 和 EasyExcel
  • Altium Designer 23原理图编译Net XXX has no driving source警告
  • 【iOS】包大小和性能稳定性优化
  • B. Make It Increasing
  • 新疆生产建设兵团草湖项目区副主任宋全伟接受审查调查
  • 印巴战火LIVE|巴基斯坦多地遭印度导弹袭击,巴总理称“有权作出适当回应”
  • 巴基斯坦宣布关闭全国空域48小时
  • 巴基斯坦军方:印度向巴本土及巴控克什米尔发射导弹
  • 上海乐高乐园明天正式开售年卡,下月开启试运营
  • 有人悬赏十万寻找“全国仅剩1只”的斑鳖,发帖者回应并证实