Menu Close

FII RISC-V3.01在FII-PRX100-D (ARTIX-7, XC7A100T) XILINX FPGA 板上的性能评估

FII 主要采用Coremark,Dhrystone来作为基准(benchmark)测试评估RISC-V3.01 CPU (Central Processing Units,即中央处理器)在 FII-PRX100-S (ARTIX-7, XC7A100T) XILINX FPGA 板上的性能。

Coremark自2009年以来就是EEMBC的CPU评判标准。 EEMBC (Embedded Microprocessor Benchmark Consortium,即嵌入式微处理器基准联盟)是一家非营利性组织,其成员有华为,Intel,ARM,Analog Devices等技术公司。EEMBC是评估嵌入式处理器和编译器的重要标准。

Coremark主要检测于ALU(Arithmetic Logic Unit,即算术逻辑单元),内存引用,流水线和分支操作。它被设计成为不可能让CPU提前运行基准测试,从而保证了其公平公正性。在规定的测试时间里,Coremark不允许有第三方的库调用,其结果完全基于编译器的优化和CPU的执行处理时间。因为Coremark主要是提供CPU架构的测试,为了摒弃硬件制作工艺的高下,Coremark最后的测试结果会被归一化,也就是说,最后的测试结果会均分到系统每一赫兹的时钟,单位是 Coremark/MHz。Coremark主要代码由C语言编写,包含列表操作,状态机处理,矩阵操作,CRC(Cyclic Redundancy Check,循环冗余校检)计算。

FII RISC-V3.01系统时钟是50MHz,图一所示Coremark测试得分为3.38(169/50 Coremark/MHz)。

FII RISC-V Coremark

图一 FII RISC-V Coremark

图二截取了部分EEMBC网站提供的其他CPU Coremark。

EEMBC部分CPU Coremark得分

图二 EEMBC部分CPU Coremark得分

CPU Coremark对比图

图三 CPU Coremark 对比图

 

FII RISC-V3.01是单核,2级和3级流水线混合的CPU。图三将一些由EEMBC认证的单核CPU的Coremark与FII RISC-V3.01一起画成折线图。 FII RISC-V3.01的Coremark已使用红色突出显示。可以看出,在列出的15个CPU中,FII RISC-V3.01 Coremark是高于平均的。对于具有明显更高Coremark的三个CPU,它们分别是意法半导体公司 (STMicroelectronics)的STM32H72x / 73x rev Z,STM32H7B3 rev Z和瑞萨电子 (Renesas Electronics)的RX66T (均已标蓝)。根据意法半导体公司的官方手册,STM32H72x / 73x rev Z和 STM32H7B3 rev Z均使用Cortex-M7,皆具有6级超标量流水线。瑞萨电子RX66T使用RXv3内核,该内核具有改进的5级流水线。由于拥有更多流水线级,CPU的性能毫无疑问会更好。所以将FII RISCV-V3.01与 Texas Stellaris Cortex-M3相比较更加合理,因为后者也是与FII RISC-V3.01相同的3级流水线处理器。尽管如此,FII RISC-V的Coremark要远远大于Texas Stellaris Cortex-M3(已标蓝)的Coremark,甚至高出一倍以上。与另一个同样是3级流水线的处理器Microchip ATSAML21J18B(已标蓝)相比较,FII RISC-V3.01的Coremark得分依旧是高出许多。总而言之,在相同数量的流水线和核情况下,FII-RISCV3.01的表现出色且突出。

Dhrystone在Coremark出现之前也是普遍公认的评估CPU性能的基准。它在1984年被Reinhold Weicker发明。它与Livermore,Whetstone和Linpack合称为“经典基准”,流行于上世纪70-80年代。这四个基准各有偏重点。Dhrystone用于整数基准,Livermore用于数值基准,Whetstone和Linpack用于浮点基准。Dhrystone主要有两个版本,Dhrystone1.1,2.1。Dhrystone2.1在Dhrystone1.1的基础上进行了改进,使得部分代码不会因为优化而导致不被运行,从而影响评估的准确性。Dhrystone主要代码是由C语言编写,性能测试于CPU每秒的百万操作数量(MIPS,Millions of Instructions Per Second),最后结果需要归一化,除以1757。这是由于当时被认为世界上第一台运算级达到百万指令每秒的微型电脑 1977 Digital Vax 11/780的Dhrystone测试结果是1757 Dhrystone/s (每秒能执行1757次的Dhrystone benchmark)。因此在其他平台上测试的Dhrystone MIPS (DMIPS)都会变成一个与之相对值。Dhrystone的局限性在于它调用了一些库的函数来执行迭代,而编译器通常会将其优化并转成汇编语言执行,所以实际上Dhrystone也是在测试编译器对特定CPU的C库函数的优化程度。如图四所示,FII RISC-V3.01 Dhrystone 2.1的测试得分为98360 Dhrystone/s,55.98 DMIPS(98360/1757), 1.12 DMIPS/MHz (55.98/50MHz)。

Dhrystone测试结果

图四 Dhrystone测试结果

CPU Dhrystone对比图

图五 CPU Dhrystone 对比图

 

图五显示了ARM官方网站提供的一些CPU Dhrystone结果。 FII RISC-V3.01已被红色突出显示。可以看出,在10个CPU中,CORTEX-M7(标记为蓝色)具有最高的Dhrystone。在ARM官方网站上,CORTEX-M7,CORTEX-R4(标记为蓝色)和CORTEX-A5(标记为蓝色)都具有多于3级的流水线。 并且CORTEX-R4和CORTEX-A5具有多个内核。同样的,为了使性能比较更合理,将FII RISCV-V3.01与 CORTEX-M3(标记为蓝色)相比较,因为后者也是与FII RISC-V3.01相同的3级流水线处理器。从图五可以看出,CORTEX-M3的Dhrystone略高于FII RISC-V3.01。这可能是因为在Dhrystone测试期间,FII RISC-V3.01只使用了通用编译器来测试。尽管Dhrystone严重依赖于标准库函数,但是编译器供应商通常会使用汇编语言来优化这些函数。换句话说,Dhrystone测试在很大程度上取决于编译器的优化级别,而不是实际的硬件操作能力。一个专门设计的编译器可以大大改善Dhrystone的结果。通过实验可以证明,使用专门设计的编译器,Dhrystone甚至可以高出4倍。总而言之,与具有相同数量内核和流水线级的CPU相比,FII RISC-V的Dhrystone结果中等。此外,Dhrystone的结果经常被业内许多人引用和使用,但它们并没有经受过审查。因为没有权威的组织来认证测试结果,Dhrystone有时会被滥用。尽管Dhrystone基准测试有其局限性,但它仍然是一个很好的自我评估工具,可以作为参考。

除了Coremark和Dhrystone, 还有很多开源基准,如AIM Multiuser Benchmark,Embench,HINT等等,以及收费的工业标准基准,如SPEC(Standard Performance Evaluation Corporation,标准性能评估公司),BAPCo(Business Application Performance Corporation,商业应用性能公司)等提供的可以审核和验证的基准。

 

Posted in RISC-V, 应用开发, 文章

发表评论

相关链接