CPU时钟周期的那些事儿
一、CPU时钟周期和指令周期
1.1 时钟周期
主频:代表CPU内部的主时钟频率;主频倒数是CPU时钟周期,通常以MHz(兆赫兹)为单位,1Hz表示每秒1次。说明:本次讨论基频,不考虑超频。
# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 18 On-line CPU(s) list: 0-17 Thread(s) per core: 1 Core(s) per socket: 18 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz Stepping: 7 CPU MHz: 3001.000 CPU max MHz: 3001.0000 CPU min MHz: 1200.0000 BogoMIPS: 6000.00 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 1024K L3 cache: 25344K NUMA node0 CPU(s): 0-17
1.2 时钟周期的计算方式
这里面的3.00GHz就是主频,表示这台电脑一秒可以完成3.00 * 10^9个时钟周期,就表示计算机一秒可以经历3.00 * 10^9个时钟周期;则,一个时钟周期仅需:
1秒/3.00 * 10^9也就是:3.33 * 10^-10 = 0.000000000333
嗯,可以很强势,看似说了什么又好像什么也没说....
那时钟周期到底是个什么啊?
CPU时钟周期通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要一个时钟周期。
简单来说就是把前面的公式中的秒这个单位忽略掉,发现分子是1,所以在数学上表示为倒数,CPU时钟周期即主频的倒数?为什么呢?
- 以10980xe的CPU为例:主频为:3.00GHz = 3.00 * 10^9
- 则一个时钟周期仅需:1秒 / 3.00 * 10^9 = 3.33 * 10^-10 秒
- 时钟周期 = 1秒 / 3.00 * 10^9 == 1 / 3.00 * 10^9 == 1 / 主频 == 主频的倒数
- 具体公式如下:
1.2 指令周期
CPU从主存中每取出并执行一条指令所需的全部时间称为:指令周期,也就是CPU完成一条指令的时间。
- 指令周期常常用若干个机器周期表示
- 机器周期又包含若干个时钟周期
- 沃德法.......到底在说什么啊?看下面的图,哈哈
1.3 各个周期的关系图
由图可知:
- 在这种情况下,一个指令周期由4 * 3 = 12个时钟周期组成;一个机器周期有四个时钟周期,上图各颜色用于区分。
- CPU执行时间是指运行一个程序所花费的时间。
下次有空继续聊聊Cache line的那些事儿,我先准备一下。