CPU架构

1. 主频
CPU 主频,即CPU的时钟频率,是衡量 CPU 运算速度的重要指标,以下从其定义、工作原理及与性能的关系等方面进行具体解释。
- 基本定义:CPU 主频表示 CPU 内数字脉冲信号振荡的速度,单位为赫兹(Hz)。通常所说的CPU 主频为2.4GHz、3.6GHz等,意味着CPU内部的时钟信号每秒能产生2.4×10⁹次、3.6×10⁹次振荡,即一个CPU时钟周期的时间不足1ns。
- 工作原理:CPU的运行依赖时钟信号来同步各个部件的操作。时钟信号就像指挥家的节拍,每个节拍(时钟周期)内,CPU 完成特定的基本操作,如读取指令、解码指令、执行运算等。<span style="background:#fff88f">主频越高,每秒内的时钟周期数越多,CPU能完成的基本操作次数也越多,理论上运算速度就越快。
- 与性能的关系:一般情况下,在其他条件相同的前提下,主频越高,CPU 性能越强。例如,同架构、同核心数的两款CPU,主频3.0GHz的通常比2.5GHz的运算速度更快,在处理数据、运行程序等方面表现更出色。但CPU性能不仅取决于主频,还与<font color="#ff0000">核心数、缓存大小、架构、指令集等因素有关。如一些低主频、多核心的CPU,在多任务处理时,可能比高主频、单核心的 CPU 性能更好。
- 动态调整:现代CPU为了平衡性能和功耗,具备<span style="background:#fff88f">动态调整主频的技术,如Intel的睿频技术和AMD的智能加速技术。在系统负载高时,CPU可自动提升主频以提高性能;负载低时,降低主频减少功耗和发热,以实现节能和稳定运行。
2. 寄存器分类
CPU的每个核心都有自己的寄存器集,包含通用寄存器和特殊目的寄存器。通用寄存器用于存储通用数据和算术运算中间结果;特殊目的寄存器用于存储特定功能或控制状态信息,如程序计数器、栈指针、状态寄存器等 。
在执行指令时,每个核心只访问和操作自己的寄存器集,可并行执行不同指令和操作,不会互相干扰或直接访问对方寄存器内容。当多个核心需通信或数据交换时,可使用共享内存或特定同步机制(如锁、原子操作等)来实现,寄存器本身并不直接用于多核心之间的通信 。
不同类型的CPU,其内部寄存器的种类、数量以及寄存器的数值范围都是不同的。不过,根据功能的不同,可以将寄存器划分为下面几类:
| 种类 | 功能 |
|---|---|
| 累加寄存器 | 存取运行的数据和运算后的数据 |
| 标志寄存器 | 用于反应处理器的状态和运算结果的某些特征以及控制指令的执行 |
| 程序计数器 | 程序计数器是用于存放下一条指令所在单元的地址的地方 |
| 基址寄存器 | 存储数据内存的起始位置 |
| 变址寄存器 | 存储基址的相对地址 |
| 通用寄存器 | 存储任意数据 |
| 指令寄存器 | 储存正在被运行的指令,CPU内部使用,程序无法对该寄存器进行读写 |
| 栈寄存器 | 存储栈区域的起始位置 |
[!tip]
其中程序计数器、累加寄存器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他寄存器一般有多个。
3. 程序计数器(PC)
程序计数器(Program Counter)是用来存储下一条指令所在单元的地址。程序执行时,PC的初值为程序第一条指令的地址,在顺序执行程序时,控制器首先按程序计数器所指出的指令地址从内存中取出一条指令,然后分析和执行该指令,同时将PC的值加1指向下一条要执行的指令。可根据一个示例来看一下程序计数器的执行过程:
这是一段进行相加的操作,程序启动,在经过编译解析后会由操作系统把硬盘中的程序复制到内存中,示例中的程序将123和456执行相加操作,并将结果输出到显示屏上。由于使用机器语言难以描述,所以这里经过翻译后的结果,实际上每个指令和数据都可能分布在不同的地址上,但为了方便说明,把组成每一条的内存和数据放在一个内存地址上。
地址0100是程序运行的起始位置。Windows等操作系统把程序从硬盘复制到内存后,会将程序计数器作为设定为起始位置0100,然后执行程序,每执行一条指令后,程序计数器的数据会增加1(或者直接指向下一条指令的地址),然后,CPU就会根据程序计数器的数值,从内存中读取命令并执行,也就是说,程序计数器控制程序的流程。