Performance 根据CPI、指令等计算程序的执行时间

Performance 根据CPI、指令等计算程序的执行时间,performance,assembly,mips,cpu,Performance,Assembly,Mips,Cpu,我试图计算应用程序的执行时间。假设内存访问指令上只发生暂停惩罚(惩罚为100个周期)。 我该如何用这些信息找出以秒为单位的执行时间 CPI (CPUCycles?) = 1.0 ClockRate = 1GHZ TotalInstructions = 59880 MemoryAccessInstructions = 8467 CacheMissRate = 62% (0.62) (5290/8467) CacheHits = 3117 CacheMisses = 5290 CacheMissPe

我试图计算应用程序的执行时间。假设内存访问指令上只发生暂停惩罚(惩罚为100个周期)。 我该如何用这些信息找出以秒为单位的执行时间

CPI (CPUCycles?) = 1.0
ClockRate = 1GHZ
TotalInstructions = 59880
MemoryAccessInstructions = 8467
CacheMissRate = 62% (0.62) (5290/8467)
CacheHits = 3117
CacheMisses = 5290
CacheMissPenalty = 100 (cycles)

假设没有其他惩罚。

totalCycles=TotalInstructions+CacheMisses*CacheMisss惩罚

我假设缓存命中的成本与其他操作码相同,所以这些都包含在指令中

也就是588880个周期,1GHz是每秒100000000个周期。 因此,执行该代码需要0.58888ms(5.8888e-7秒)


这个值当然纯粹是理论上的估计,因为现代CPU并不是这样工作的(1条指令=1个周期)。如果您对真实世界的价值感兴趣,只需对其进行分析。

通过将所有成本加起来,“我该如何用这些信息找出以秒为单位的执行时间?”。你发现信息中有什么不清楚的地方吗?如果是,什么?我不确定计算成本的公式是什么。您知道每条指令的周期、指令数、导致缓存未命中的内存访问数以及缓存未命中的成本。之后就是加法和乘法。。。。由于CPU的实际功能很难手动预测(哪些访问会命中缓存?),因此您的计算极有可能受到怀疑。如果你知道你的计算中有这些假设/错误,那么正如@Michael所说,这是一个将单个指令的成本相加的问题。他没有说的是,您可能还需要考虑循环的成本(每个循环运行多少次,您也不确切知道)。一般来说,得到一个好的估计值的最简单的方法就是测量它。@IraBaxter:我把它解释为一个纯粹的理论练习,其中
TotalInstructions
重新呈现OP需要计算的时间内执行的指令总数。