【飞凌RZ/G2L开发板试用体验】+05.RZ/V2L开发板的性能读写测试(zmj)

描述

本文来源电子发烧友社区,作者:卿小小_9e6, 帖子地址:https://bbs.elecfans.com/jishu_2304220_1_1.html



飞凌RZ/G2L开发板使用的CPU(RZ/G2L)是瑞萨在智能工控领域的一款高性能、超高效处理器。 RZ/G2L采用ARM Cortex-A55内核,运行频率高达1.2GHz, 内部集成Arm Cortex-M33@200MHz。 配备Mali-G31 GPU@500MHz图形处理器及多种显示接口,并具有丰富的行业应用接口,主要应用于各种具有视频输出的工控行业。  
1.        CPU性能测试
1.1        查看CPU信息
查看CPU信息,反馈结果是ARM Cortex-A55双核,支持32-bit/64-bit两种模式,L2-Cache大小为256kB。


  1. //------查看CPU信息:lscpu
  2. //---指令
  3. lscpu
  4. //---log信息
  5. Architecture:                    aarch64
  6. CPU op-mode(s):                  32-bit, 64-bit
  7. Byte Order:                      Little Endian
  8. CPU(s):                          2
  9. On-line CPU(s) list:             0,1
  10. Thread(s) per core:              1
  11. Core(s) per socket:              2
  12. Socket(s):                       1
  13. Vendor ID:                       ARM
  14. Model:                           0
  15. Model name:                      Cortex-A55
  16. Stepping:                        r2p0
  17. BogoMIPS:                        48.00
  18. L2 cache:                        256 KiB
  19. Vulnerability Itlb multihit:     Not affected
  20. Vulnerability L1tf:              Not affected
  21. Vulnerability Mds:               Not affected
  22. Vulnerability Meltdown:          Not affected
  23. Vulnerability Spec store bypass: Not affected
  24. Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
  25. Vulnerability Spectre v2:        Not affected
  26. Vulnerability Srbds:             Not affected
  27. Vulnerability Tsx async abort:   Not affected
  28. Flags:                           fp asimd evtstrm crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
复制代码

开发板试用
 

1.2        CoreMark
1.2.1        CoreMark简介
//------CoreMark简介
CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。目前在嵌入式CPU行业中普遍公认的性能测试指标的标准主要使用以下三种,MIPS、Dhrystone、Coremark,而CoreMark与Dhrystone一样,拥有体积小、方便移植、易于理解、免费并且显示单个数字基准分数。与Dhrystone不同的是,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是实际MCU或CPU的能力,的性能,而CoreMark具有特定的运行和报告规则,从而可以避免由于所使用的编译库不同而导致的测试结果难以比较。
1.2.2        CoreMark源码获取
//------CoreMark源码获取
EEMBC在将CoreMark源码托管在GitHub上可以访问github.com/eembc/coremark直接点击下载获得源码;也可以通过git命令下载到本地。


  1. //------CoreMark源码获取
  2. //---直接下载
  3. https://github.com/eembc/coremark
  4. //---Git下载
  5. git clone https://github.com/eembc/coremark.git
  6.  
复制代码


CoreMark项目的详细介绍,可以查阅当前目录下“coremark/docs/html/index.html”。该项目以下是当前目录的个文件介绍:


  1. #在tree命令的输出中,作了部分删除(不影响分析整个CoreMark工程)
  2. imaginemiracle@:coremark$ tree
  3. .
  4. ├── barebones         --移植到裸机环境下需要修改的目录
  5. │   ├── core_portme.c                --移植的目标平台配置信息
  6. │   ├── core_portme.h                --计时以及板级初始化实现
  7. │   ├── core_portme.mak                --该子目录的makefile
  8. │   ├── cvt.c
  9. │   └── ee_printf.c                        --打印函数串口发送实现
  10. ├── core_list_join.c        --列表操作程序
  11. ├── core_main.c                        --主程序
  12. ├── coremark.h                        --项目配置与数据结构的定义头文件
  13. ├── coremark.md5               
  14. ├── core_matrix.c                --矩阵运算程序
  15. ├── core_state.c                --状态机控制程序
  16. ├── core_util.c                        --CRC计算程序
  17. ├── cygwin                                --x86 cygwin和gcc 3.4(四核,双核和单核系统)的测试代码
  18. │   ├── core_portme.c
  19. │   ├── core_portme.h
  20. │   └── core_portme.mak
  21. ├── freebsd                                --以下同理,是在不同操作系统下的测试代码
  22. │   ├── ...
  23. ├── LICENSE.md
  24. ├── linux
  25. │   ├── ...
  26. ├── linux64
  27. │   ├── ...
  28. ├── macos
  29. │   ├── ...
  30. ├── Makefile                        
  31. ├── README.md                        --自述文件,CoreMark项目的基本介绍
  32. ├── rtems
  33. │   ├── ...
  34. └── simple
  35.     ├── ...
  36.     └──
复制代码



1.2.3        运行coremark.exe测试性能
//------在目标平台上运行coremark.rvexe测试性能
执行命令:./coremark.exe


  1. //------在目标平台上运行coremark.rvexe测试性能
  2. ./coremark.exe
  3. //------CoreMark得分
  4. CoreMark 1.0 : 4373.496611
复制代码


测试结果如下图所示:
开发板试用
 

1.2.4        CoreMark跑分榜/结果比对
可以看到EEMBC目前已经上传了711款型号的微控制器CoreMark跑分结果,可以在EEMBC的coremark/scores里看到。


  1. //------EEMBC的CoreMark结果
  2. https://www.eembc.org/coremark/scores.php
复制代码

开发板试用
 

1.2.5        参考链接
参考链接:《CPU性能测试——CoreMark篇》


  1. //------《CPU性能测试——CoreMark篇》
  2. https://blog.csdn.net/qq_36393978/article/details/111629341
复制代码


2.        DDR内存性能测试
飞凌RZ/G2L开发板上有2GB大小的RAM内存,下面使用多种方式进行内存性能测试。

2.1        DDR内存基本信息
RZ/V2L开发板板载2GB的RAM,通过“free -h”指令查看DDR内存大小。
开发板试用
 
2.2        STREAM内存带宽测试
STREAM内存带宽测试。


  1. //------RAM性能测试
  2. root@okg2l:~# stream
  3. STREAM copy latency: 6.44 nanoseconds
  4. STREAM copy bandwidth: 2485.24 MB/sec
  5. STREAM scale latency: 7.09 nanoseconds
  6. STREAM scale bandwidth: 2257.65 MB/sec
  7. STREAM add latency: 9.65 nanoseconds
  8. STREAM add bandwidth: 2486.79 MB/sec
  9. STREAM triad latency: 9.62 nanoseconds
  10. STREAM triad bandwidth: 2496.10 MB/sec
  11. //------各测试项含义
  12. a.Copy-复制操作
  13.         从内存单元中读取一个数,并复制到其他内存单元中,两次访问内存操作
  14. b.Scale-乘法操作
  15.         从内存单元中读取一个数,与常数相乘,得到的记过存到其他内存单元,两次访问内存操作
  16. c.Add-加法操作
  17.         从两个内存单元中分别读取两个数,将其进行加法操作后,得到的结果写入另一个内存单元中,3次访问内存操作
  18. d.Triad-前面三种的结合
  19.         先从内存中读取一个数,与一个常数相乘得到一个乘积,然后从另一个内存单元中读取一个数与刚才乘积结果相加,得到的结果写入内存。
  20.         共计3次访问内存操作。
  21.  
  22. 测试结果一般的规律是Add > Triad > Copy > Scale。一次Add操作需要访问三次内存(两个读操作,一个写操作),Triad操作也需要三次访问内存, Copy和Scale操作需要两次访问内存。单位操作内,访问内存次数越多,越能够掩盖访存延迟,带宽越大。
  23. 单核Stream测试,影响的因素除了内存控制器能力外,还有Core的ROB、Load/Store对其影响,因此不是单纯的内存带宽性能测试。
  24. 而多核Stream测试,通过多核同时发出大量内存访问请求,能够更加饱和地访问内存,从而测试到内存带宽的极限性能。
复制代码

开发板试用
 

2.3        内存带宽测试-memory_bandwidth.sh
内存带宽测试-memory_bandwidth.sh


  1. //------测试工具(飞凌系统已带)
  2. memory_bandwidth.sh
  3. //------memory_bandwidth.sh目录
  4. /usr/bin/memory_bandwidth.sh
  5. //------查找memory_bandwidth.sh
  6. find /usr/bin/ -name "*.sh"
  7. //------测试指令
  8. memory_bandwidth.sh
  9.  
  10. //------脚本内容
  11. #!/bin/bash
  12. for opt in rd wr rdwr cp frd fwr fcp bzero bcopy
  13. do
  14. echo "L1 cache bandwidth $opt test with #$proc process"
  15. #8k is fit for all platform
  16. for idx in `seq 1 5`
  17. do
  18. bw_mem -P 1 8k $opt
  19. done
  20. echo "L2 cache bandwidth $opt test"
  21. # For Layerscape platform, each platform has more than 256K L2 cache, so chose 128k as L2 cache size.
  22. for idx in `seq 1 5`
  23. do
  24. bw_mem -P 1 128k $opt
  25. done
  26. echo "Main mem bandwidth $opt test"
  27. for idx in `seq 1 5`
  28. do
  29. bw_mem -P 1 50m $opt
  30. done
  31. done
复制代码

开发板试用
 

开发板试用
 

2.4        内存带宽测试-bw_mem
内存带宽测试-bw_mem工具可以对内存RAM进行指定容量读写测试。


  1. //------测试工具(飞凌系统已带)
  2. bw_mem
  3. //------测试指令(容量根据实际情况指定)
  4. bw_mem 100m rd
  5. bw_mem 100m wr
  6. bw_mem 1000m rd
  7. bw_mem 1000m wr
  8. //------测试结果
  9. RD读带宽:2650MB/S
  10. WR写带宽:852MB/S
复制代码

开发板试用
 

2.5        内存功能压力测试-memtester
内存功能压力测试-memtester


  1. //------测试工具(飞凌系统已带)
  2. memtester
  3.  
  4. //------测试指令
  5. memtester 512M 1
复制代码

开发板试用
 

//------END

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分