我遇到了一种计算数据类型float的CPE下限(由关键路径确定)的方法。但是,我不确定这些数字来自何处,在尝试计算类似界限之前我需要澄清一些。
这就是我所遇到的:
的 (4+3)/3 = 2.33
我认为由于CPE值它除以3,但我对(4 + 3)来自哪里感到困惑。
对于整数和浮点数据,此函数的CPE为3.00。
void inner4(vec_ptr u, vec_ptr v, data t *dest) {
long i;
long length = vec_length(u);
data_t *udata = get_vec_start(u);
data_t *udata = get_vec_start(v);
data_t sum = (data_t) 0;
for (i = 0; i < length; i++){
sum = sum + udata[i] * vdata[i]'
}
*dest = sum;
}
答案 0 :(得分:1)
...我认为由于CPE值,它除以3,但我是 对(4 + 3)的来源感到困惑。
表示你的(4+3)/3 = 2.33
表示浮动的下限CPE(或CPI)是比率的简化(可能在分解后),如 {中的示例所示。您在评论中提供的{3}} 。即,将每种类型的指令计数相加,每一个乘以其相应的时钟周期,全部除以总指令计数。
链接中的示例2,也适用于类型float
,但具有不同的处理器指令混合和时钟周期计数,而不是您引用的单位你的帖子提供插图。虽然您的帖子中没有足够的信息来确切知道这些值是如何得出的,但链接中给出的公式清楚地显示了比率的构建方式。
遵循示例2中给出的相同形式:并给出以下(设计的)指令混合和循环计数,尽管是一个非常简化的示例(即仅两种指令类型),这显示了您的比率可能具有已派生:
Instruction type Instruction count Clock cycle count
Floating point 6000 2
Control transfer 3000 3
该比率将为:
(6000*2 + 3000*3)/9000
After factoring:
(4 + 3)/3 - Ratio is the sum of two instruction types, each multiplied
by their corresponding cycle count, all divided by the total
instructions in the specific program, then factored to
lowest terms.