乐鑫技术交流
直播中

youyoulan

12年用户 1134经验值
私信 关注
[问答]

通过make menuconfig把esp32的CPU clock设置成240MHz, 为什么dhrystone测量值这么低?

通过make menuconfig 把esp32 的CPU clock设置成240MHz, 分别把dhrystone的测试代码放到SRAM和flash执行,测量代码执行效率。
从文档来看,SRAM没有cache,flash有cache。
测试结果是,在SRAM和flash下的执行效率没多大差别,dhrystone只有0.67867DMIPS/Mz/S,只有240MHz理论值的1/2,,是SRAM和cache的速度太慢了吗?
我们最近在评估贵司的芯片,这样的结果显然达不到预期,可以请问一下具体原因吗?
                                                                                                                                

回帖(1)

郭大

2024-6-25 17:10:55
首先,我们需要了解Dhrystone是一个基准测试程序,用于衡量处理器的性能。DMIPS/Mz/S(Dhrystone Millions of Instructions per Second per MHz)是一个性能指标,表示每MHz的处理器频率可以执行多少百万条指令。

在您的情况下,您已经通过make menuconfig将ESP32的CPU clock设置为240MHz,并在SRAM和flash上运行Dhrystone测试代码。测试结果显示,执行效率仅为0.67867DMIPS/Mz/S,远低于预期的240MHz理论值的1/2。

要分析这个问题,我们需要考虑以下几个可能的原因:

1. **代码优化**:Dhrystone测试代码可能没有针对ESP32进行优化。如果代码没有充分利用处理器的指令集和特性,性能可能会受到影响。

2. **编译器优化**:编译器设置可能不够优化。尝试使用更高级别的优化选项(如-O2或-O3)来编译代码,以提高性能。

3. **中断和任务切换**:如果在测试过程中有其他任务或中断在运行,可能会影响Dhrystone的性能。确保在测试期间没有其他任务或中断影响处理器的性能。

4. **SRAM和Flash性能**:虽然SRAM没有cache,但通常情况下,SRAM的速度应该比Flash快。然而,如果SRAM的性能受到限制,或者Flash的cache性能不佳,这可能会影响测试结果。

5. **处理器负载**:如果处理器在测试期间承受了较高的负载,这可能会影响Dhrystone的性能。检查系统资源使用情况,确保处理器在测试期间没有过载。

6. **测试代码执行方式**:确保测试代码在SRAM和Flash上以相同的方式执行。如果执行方式不同,可能会导致性能差异。

为了解决这个问题,您可以尝试以下步骤:

1. 优化Dhrystone测试代码,以充分利用ESP32的指令集和特性。
2. 使用更高级别的编译器优化选项重新编译代码。
3. 在测试期间禁用其他任务和中断,以确保处理器性能不受干扰。
4. 检查SRAM和Flash的性能,确保它们在测试过程中正常工作。
5. 确保测试代码在SRAM和Flash上以相同的方式执行。

通过这些步骤,您应该能够找到导致Dhrystone性能低于预期的原因,并采取相应的措施来提高性能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分