我遇到了一种计算数据类型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;
}

c - 根据功能的CPE,下限如何计算?-LMLPHP

最佳答案

…我假设它是除以3,因为cpe值,但我是
对(4+3)的来源感到困惑。
你的(4+3)/3 = 2.33表示float的下限cpe(或cpi)似乎是一个比率的简化(可能是在因子分解之后),如你在注释中提供的link中的示例所示。即,将每种类型的指令数相加,每一个指令数乘以相应的时钟周期,全部除以指令总数。
链接中的示例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.

关于c - 根据功能的CPE,下限如何计算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36830819/

10-11 02:45