如何计算ARM处理器算法的MIPS
我最近被要求为我们开发的一种算法生成MIPS(每秒百万条指令)。该算法由一组C风格函数公开。我们在Dell Axim上练习了该代码,以在不同输入下对性能进行基准测试 这个问题来自我们的硬件供应商,但我主要是HL软件开发人员,因此我不确定如何响应该请求。也许有类似硬件/软件背景的人可以帮助如何计算ARM处理器算法的MIPS,arm,benchmarking,Arm,Benchmarking,我最近被要求为我们开发的一种算法生成MIPS(每秒百万条指令)。该算法由一组C风格函数公开。我们在Dell Axim上练习了该代码,以在不同输入下对性能进行基准测试 这个问题来自我们的硬件供应商,但我主要是HL软件开发人员,因此我不确定如何响应该请求。也许有类似硬件/软件背景的人可以帮助 由于我们的算法不是实时的,我认为我们不需要将其量化为MIPS。是否可以简单地引用组装说明的总数 如果1为真,您一般或专门针对ARM/XScale如何做到这一点(即如何测量汇编指令的数量) 2可以在WM设备上执行
谢谢你的帮助。我认为S.洛特说得对。作为跟进,我现在有更多的问题 5.对如何进行MIPS测量有何建议?我听到有人建议运行我们的算法,并将其与Dhrystone/Whetstone基准进行比较,以计算MIS 6由于算法不需要实时运行,MIPS真的是一个有用的度量吗?(例如阶乘(N))量化处理要求的其他方法有哪些?(我已经测量了运行时性能,但这不是一个令人满意的答案。)
7最后,我假设MIPS是一个粗略的估计值,将是编译器、优化设置等方面的dep MIPS是衡量CPU速度的指标,而不是算法性能。我只能假设这条线的某个地方,有人有点困惑。他们想知道什么?我能想到的唯一可能的情况是,他们试图帮助您确定他们需要多快的处理器才能让您满意地运行程序 因为你可以用指令的数量来度量一个算法(毫无疑问,这取决于输入数据,所以这是非常重要的),所以你需要一些时间度量来获得MIPS——例如,说“我需要每秒调用它1000次”。如果您的算法是针对该特定情况的1000条指令,那么您将得到:
1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.
我仍然认为这是一种非常奇怪的做事方式,所以你可能想要求澄清。至于您的具体问题,我将把它留给更熟悉Visual Studio的人。通常用于衡量处理器的性能
算法通常采用以下两种方式之一:
我敢打赌,您的硬件供应商会问您需要多少MIP 如“您需要1000 MIPS处理器还是2000 MIPS处理器?” 管理层将其转化为“多少MIP?” 硬件提供MIPS。软件消耗MIPS 你有两个自由度
- 处理器固有的MIPS产品
- 您使用那么多MIP的秒数
您需要多少MIP
不要说是3*750英里。事实并非如此;这是22.5亿条指令。对于第一次估计,PC上的基准可能很有用 然而,在您承诺使用特定的设备和时钟频率之前,您应该为ARM目标体系结构准备一个开发板(或一些PDA?),并在那里对其进行基准测试
影响当今计算机速度的因素有很多(缓存、管道、不同的指令集等等),因此您在PC上的基准测试可能与ARM相差甚远。还请记住,不同的编译器和编译器选项会产生巨大的差异。相同的源代码可以以多种不同的速度运行。因此,您可以使用1/2mips处理器并使用编译器选项,而不是购买2mips处理器。或者把钱花在更好的编译器上,使用更便宜的处理器 基准测试充其量也有缺陷。作为一种业余爱好,我曾经在不同厂商的不同编译器上为相同的硬件编译相同的dhrystone(和whetstone)代码,数字到处都是,数量级。相同的源代码相同的处理器,dhrystone没有任何意义
const num_trials = 1000000
start_time = timer()
for (i = 1 to num_trials)
{
runAlgorithm(randomData)
}
time_taken = timer() - start_time
average_time = time_taken / num_trials