DDR内存基础知识和带宽测试
一、DDR基础知识
1. 几个频率
(1) 核心频率:真实运行频率。
(2) 倍增系数:DDR通过数据预取技术放大速率,每代ddr倍率是固定的,ddr=2, ddr2=4, ddr3=8, ddr4=8, ddr5=16
(3) 有效频率;厂商标注的频率,可以理解为数据传输速率。厂商也想逐步淡化其它频率的概念,只让我们记住有效频率。其实有效频率就是核心频率*倍增系数得来的,在理想情况下能代表我们内存数据传输频率。
(4) IO频率:又叫时钟频率,它是有效频率的一半。
2. 厂商标注信息:DDR5-6400
这个6400就是有效频率,单位是MT/s(Million Transfer)。
3. 内存通道
若是把内存传输比作行车的道路,那么道路的宽度自然很重要,当前民用级别的设备大都支持双通道,DDR很好理解,单个通道64Bit,双通道乘以2即可。而DDR5有所谓的单条即可支持双通道的技术,但是这个双通道
并没有比DDR4的位宽更大,因为单个通道仅是32Bit,如果你插入2条DDR5组成双通道,将会是4*32Bit,这实际上是和DDR4的总位宽是一样的。
4. 传输带宽
传输带宽 = 有效频率 * 通道位宽 / 8 //通道位宽单位是Bit,转换成Byte需要除以8
小编DDR5-6400双通道LPDDR5的传输带宽 6400 * 4*32 / 8 = 96GB/s
5. 根据DDR频率计算带宽
传输带宽 = 2 * DDR频率 * 通道位宽 / 8 //乘以2是因为上升沿和下降沿都传输数据
二、带宽测试
cc_binary { name: "mbw", srcs: ["mbw.c"], cflags: [ "-Wall", "-Werror", ], shared_libs: [ "libbase", ], }
/data/local/tmp # ./mbw -h mbw memory benchmark v1.5, https://github.com/raas/mbw Usage: mbw [options] array_size_in_MiB Options: -n: number of runs per test (0 to run forever) -a: Don't display average -t0: memcpy test -t1: dumb (b[i]=a[i] style) test -t2: memcpy test with fixed block size -b <size>: block size in bytes for -t2 (default: 262144) -q: quiet (print statistics only) (will then use two arrays, watch out for swapping) 'Bandwidth' is amount of data copied over the time this operation took. The default is to run all tests available.
二、ARM_BenchMark 工具包
除此之外,还有一个类似的工具,叫 bw_mem,保存在 ARM_BenchMark 工具包中:
ARM_BenchMark: https://github.com/tonyho/ARM_BenchMark/tree/master/lmbench/bin/arm-linux
lmbench: https://github.com/foss-for-synopsys-dwc-arc-processors/lmbench/tree/master/src //上面工具包中已包含
~/tmp/ARM_BenchMark$ ls Bench-bin dhrystone-src docs fhourstones Linpack lmbench pi_css5_src README.md ReadMe.txt whetstone ~/tmp/ARM_BenchMark$ ls Bench-bin/ //可执行文件 dhrystone linpack pi_css5 SearchGame whetston ~/tmp/ARM_BenchMark$ ls lmbench/bin/arm-linux/ //可执行文件 bw_file_rd bw_unix hello lat_fcntl lat_fs_open_close lat_ops lat_rand lat_syscall lat_usleep loop_o par_ops bw_mem cache lat_cmd lat_fifo lat_fs_write_truncate lat_pagefault lat_rpc lat_tcp line memsize stream bw_mmap_rd disk lat_connect lat_fs lat_http lat_pipe lat_select lat_udp lmbench mhz timing_o bw_pipe enough lat_ctx lat_fs_chown lat_mem_rd lat_pmake lat_sem lat_unix lmdd msleep tlb bw_tcp flushdisk lat_dram_page lat_fs_create_unlink lat_mmap lat_proc lat_sig lat_unix_connect lmhttp par_mem
1. Dhrystone:整数运算、字符串拷贝测试。
2. Whetstone:浮点数运算测试。测量浮点数运算的速度和效率。它使用了许多C函数,包括sin、cos、sqrt、exp和log等浮点数和整数数学运算,数组访问、条件分支和过程调用。此测试同时测量整数和浮点数算术。
posted on 2023-12-06 17:36 Hello-World3 阅读(2291) 评论(0) 编辑 收藏 举报