Sam这些年也算接触了很多嵌入式CPU, SoC等。每次看到CPU速度介绍,以及评估程序是否能跑得动时,就有些疑惑:因为资料中介绍CPU能力时方法很不统一,常见的有如下描述:
1. 工作频率可达400MHz。
2. CPU主频270MHz.
3. 1000 DMIPS双核MIPS处理器.
Sam就有些疑惑,该如何判断出谁的计算能力更强呢?
1. CPU速度单位:MIPS
mips(million instruction per second:每秒百万条指令). 单字长定点指令平均执行速度,指的是cpu执行指令的速度。
DMIPS:D是Dhrystone的缩写,他表示了在Dhrystone这样一种测试方法下的MIPS,Dhrystone是一种整数运算测试程序。
MFLOPS:是一种基于浮点运算的CPU测试程序,当然,这种测试的结果也以 MFLOPS来加以表示,代表了CPU处理浮点运算的能力。
2. CPU主频,工作频率等:
Sam理解是:CPU需要一个晶振,CPU采用的System Clock就是所以主频。例如:某外部晶振为12MHz.CPU则主频选用12MHz /2 为主频,则System Clock为 6MHz。
所以说:工作频率可达400MHz,其实就是指System Clock.
3. CPU频率(System Clock)与MIPS之间的关系:
不同架构(X86,ARM, MIPS等)CPU,MIPS与CPU频率之间的比率并不相同。
例如:ARM9CPU,每MHz能处理1.2MIPS。意味着:400MHz的CPU,MIPS=400x1.2=480MIPS.
Sam常听说IA架构的MIPS与ARM,MIPS下的MIPS不能相同视之,自己感觉应该是x86架构与ARM,MIPS用的指令集不同,所以他可能一条指令完成的动作,ARM,MIPS等精简指令集需要多条指令才能完成。不知道理解对不对。
CPU数据处理能力:与不少因素都有关系,不如是否多核,每MHz处理多少个MIPS等。
例如:A CPU虽然400Mhz。但每MHz处理0.8个MIPS. B CPU 300MHz,但每MHz处理1.2个MIPS。
所以如果双方架构,指令集,core数目均相同。则A(400x0.8)处理速度小于B(300x1.2)
4. 流水线与CPU频率:
不同的流水线设计会产生一系列 硬件差异。让我们来比较一下ARM7和ARM9E的流水线,ARM9E从ARM7的3级流水线增加到了5级,ARM9E的流水线中容纳了更多的逻辑操作,但是每一级的逻辑操作却变得更为简单。比如原来 ARM7的第三级流水,需要先内部读取寄存器、然后进行相关的逻辑和算术运算,接着处理结果回写,完成的动作非常复杂;而在ARM9E的5级流水中,寄存器读取、逻辑运算、结果回写分散在不同的流水当中,使得每一级流水处理的动作非常简洁。这就使得 处理器的主频可以大幅度地提高。因为每一级流水都对应 CPU的一个时钟周期,如果一级流水中的逻辑过于复杂,使得执行时间居高不下,必然导致所需的时钟周期变长,造成CPU的主频不能提升。所以流水线的拉长,有利于CPU主频的提高。