赞
踩
一个公式:
程
序
的
C
P
U
执
行
时
间
=
指
令
数
∗
C
P
I
∗
C
l
o
c
k
C
y
c
l
e
T
i
m
e
程序的CPU执行时间 = 指令数 * CPI * Clock Cycle Time
程序的CPU执行时间=指令数∗CPI∗ClockCycleTime
这个公式里,有一个叫做CPI的指标,CPI的倒数,又叫作 IPC(Instruction Per Clock),也就是一个时钟周期里面能够执行的指令树,代表了CPU的吞吐率。那么,在反复优化流水线架构的CPU里面,能够达到多少呢?
答案是:最佳情况下,IPC也只能到1。因为无论做了哪些流水线层面的优化,即使做到了指令执行层面的乱序执行,CPU仍然只能在一个时钟周期里面,取一条指令。
但是,我们现在用的Intel CPU 或者 ARM 的 CPU,一般的 CPI 都能做到 2 以上,这是怎么做到的呢?
这样,我们在一个时钟周期里,能够完成的指令就不只一条了。IPC 也就能做到大于 1 了
(从上图可以看出,不同的功能单元的流水线长度是不一样的。我们平时说的14级流水线,指的通常是进行整数计算指令的流水线长度。如果是浮点数运行,实际的流水线长度会更长一点)
这种 CPU 设计,我们叫作多发射(Mulitple Issue)和超标量(Superscalar)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。