本章节主要了解下什么指令集并行,用于理解前面章节多线程场景下出现的指令重排序问题。
一、基础概念
Clock Cycle Time (时钟周期时间)
-
cpu主频:即cpu内核工作的时钟频率(CPU Clock Speed)。
通常看到的cpu参数2.5GHz、3.4GHz等就是指CPU主频。作为cpu性能的重要参数,cpu主频虽然与运算速度之间没有直接关系,但是对运算速度的提升却非常重要。
-
CPU 的 Clock Cycle Time(时钟周期时间),等于主频的倒数,意思是 CPU 能够识别的最小时间单位。
比如说 4G 主频的 CPU 的 Clock Cycle Time 就是 0.25 ns,作为对比,我们墙上挂钟的Cycle Time 是 1s
Cycle Per Instruction(CPI,指令平均时钟周期数)
- 有的指令需要更多的时钟周期时间,所以引出了 CPI (Cycles Per Instruction)指令平均时钟周期数。
Instruction Per Clock Cycle(IPC)
- CPI 的倒数,表示每个时钟周期能够运行的指令数。
CPU的执行时间
CPU执行时间 = 指令数 * CPI * Clock Cycle Time
二、指令重排序优化
在我们小时候,应该都学习过类似的题目:
小明的妈妈在做饭,烧水需要5分钟,洗菜需要5分钟,做饭需要5分钟,那么总共需要多少分钟?
实际上述题目,在烧水时不耽误洗菜,可以并行执行的,也就是最后需要10分钟就可以了。
现代处理器会设计为【一个时钟周期,完成一条执行时间最长的 CPU 指令】,而这条指令还可以划分为更小的阶段。
一条执行指令通常会分为以下5个阶段:
- 取指令:instruction fetch (IF)
- 指令译码:instruction decode (ID)
- 执行指令:execute (EX)
- 内存访问:memory access (MEM)
- 数据写回:register write back (WB)
如果向上面做饭的例子一样,那么就会变成下面的样子,三道菜,需要执行三次相同的步骤:
指令重排序.png如上的效率一定是不高的,所以CPU也会对其执行方式作出优化。
-
支持流水线(Pipeline)的处理器
现在CPU支持多级指令流水线,如上面介绍的,将指令分成5个步骤执行的CPU,我们就称之为五级指令流水线。这样的CPU可以在一个时钟周期内,同时执行5个指令的不同阶段。
本质上来说,并没有缩短单条指令执行的时间,而是增加了在一个时钟周期内的指令执行吞吐量。
-
超标量(SuperScalar)处理器
处理器的内核中一般有多个执行单元(或称功能单元),如算术逻辑单元、位移单元、乘法器等等。
未实现超标量体系结构时,CPU在每个时钟周期仅执行单条指令,因此仅有一个执行单元在工作,其它执行单元空闲。
超标量体系结构的CPU在一个时钟周期可以同时分派(dispatching)多条指令在不同的执行单元中被执行,这就实现了指令级的并行。CPU 可以在一个时钟周期内,执行多于一条指令。
结论
鉴于CPU对于吞吐量的并行优化,所以带来了指令的乱序执行问题,也可以称之为指令重排序优化。
网友评论