计算cpu执行时间时指令集和指令计数的含义相同吗?
Posted
技术标签:
【中文标题】计算cpu执行时间时指令集和指令计数的含义相同吗?【英文标题】:Do instruction set and instruction count mean the same when calculating cpu execution time? 【发布时间】:2021-12-14 00:04:40 【问题描述】:我知道cpu execution time = CPI * instruction count * 1/clock rate
。
在某个问题中,当三个处理器具有相同的指令集时,根据 CPI 和时钟速率值找到性能最高的处理器。
所以,我认为指令集等于指令数,根据上面的公式,我认为CPI/clock rate
的最小值的进程是正确的答案,但我不知道这个解决方案是否正确正确的。
指令集和指令数是同一个意思吗?
【问题讨论】:
“指令集”是机器上存在的指令的整体集合,例如mov, add
等。“指令计数”是运行特定程序时执行的指令数。如果这些处理器都具有相同的指令集,并且它们都运行相同的程序,那么它们的指令数将是相同的。
【参考方案1】:
计算cpu执行时间时,指令集和指令数是一样的意思吗?
通常“指令集”是一个名称(例如“80x86”、“ARMv6”、..),用于描述 CPU 支持的指令范围。这会影响完成特定工作所需的指令数量。例如,有些 CPU 有整数除法指令,有些则没有;如果 CPU 没有整数除法指令,则每次要进行整数除法时可能必须执行数百条指令;因此,像 C 中的“x = y / 100 + 6;
”这样的计算最终可能是少量指令或大量指令。
在比较不同 CPU(使用不同指令集)的性能时,这一点很重要。例如;如果一个 CPU 每秒可以执行两倍的指令,但需要 6 倍的指令来完成相同的工作;那么该 CPU 的工作速度会慢 3 倍(尽管每秒能够执行更多指令)。
如果您有像execution time = CPI * instruction count * 1/clock rate
这样的公式,您必须确定完成一定数量的工作需要多少指令,并且可以(理论上)使用像instruction count = amount of work * instructions per unit of work
这样的公式来完成这项工作。然后你可以结合公式得到execution time = CPI * amount of work * instructions per unit of work * 1/clock rate
。
以类似的方式,如果你有一个像performance = amount of work / execution time
这样的公式,它可能会变成performance = amount of work / (CPI * instruction count * 1/clock rate)
,它可能会变成performance = amount of work / (CPI * amount of work * instructions per unit of work * 1/clock rate)
;可以简化为performance = 1 / (CPI * instructions per unit of work * 1/clock rate)
或performance = 1/CPI * 1/instructions per unit of work * clock rate
。
请注意,在这个最终公式中,instructions per unit of work
取决于它是哪个指令集。
您遇到的问题(部分基于您之前的问题)是,无论您尝试学习什么,都错误地使用了 instruction set
一词,而实际上它们的意思是 1/instructions per unit of work (that depends on which instruction set it is)
。
【讨论】:
以上是关于计算cpu执行时间时指令集和指令计数的含义相同吗?的主要内容,如果未能解决你的问题,请参考以下文章