DDR 带宽(Double Data Rate Bandwidth)是指 DDR 内存在一秒内可以传输的数据量,通常以 GB/s(Gigabytes per second) 为单位。它是衡量内存系统性能的重要指标,直接影响系统的数据吞吐能力。
1.如何计算 DDR 带宽
计算 DDR 理论带宽的公式为:
DDR主频 * 位宽 = 理论带宽
其中,位宽 (bit width)指的是内存总线的位宽,例如 64 位、128 位、16bit、32bit 等,bit 意为"位"或"比特"。
主频指的是 DDR 内存的实际主频,而不是 DDR 内存的倍频频率。因此,在计算理论带宽时,需要将 DDR 主频和位宽相乘即可。例如,以 2400MHz 主频,64bit 位宽为例,计算公式为:
2400 * 64 = 153600Mbit/s = 19200MB/s = 18.75GB/s。
这里的 Mbit/s 指的是兆比特每秒,MB/s 指的是兆字节每秒,GB/s 指的是千兆字节每秒。
需要注意的是,这里的理论带宽是指 DDR 内存的最大传输速率,实际带宽会受到多种因素的影响,例如内存控制器效率、内存延迟等。
2.DDR data rate 和 DDR 主频
DDR data rate 和 DDR 主频是一个意思吗?
DDR data rate 和 DDR 主频不是一个意思。DDR data rate 指的是内存传输数据的速率,单位通常为 Mbps。
DDR 主频指的是内存控制器的时钟频率,单位是 MHz。
两者之间的关系是 DDR data rate = DDR 主频 * 2,例如 DDR4-3200 内存的 DDR data rate 为 3200Mbps,而 DDR 主频为 1600MHz。
这个“2”哪来的?接着往下看。
3.Mbps 和 Mhz
Mbps 和 Mhz 是一个意思吗?
Mbps 和 MHz 不是一个意思。Mbps 指的是数据传输速率,即每秒传输的数据量,单位为兆比特每秒。而 MHz 指的是时钟频率,即每秒钟的时钟周期数,单位为兆赫兹。
在 DDR 内存中,数据传输是在时钟周期的上升沿和下降沿都进行一次采样,因此 DDR data rate 是 DDR 主频的两倍。
4.带宽计算示例
bit width, 2x32bit, max data rate 8567Mbps
问 DDR 带宽是多少?
2x32x8567/2 = 274144M bit/s = 34268 MB/s = 33.5 GB/s
5.征程 6 上实测带宽占用情况
带宽占用可以拆分为三类来源:VIO 视频通路带宽占用、BPU 算法模型带宽占用、CPU 应用程序带宽占用,地平线提供的带宽监测工具hrut_ddr
或hrt_ucp_monitor
支持以一定的频率抓取 DDR 实时的数据,通过对数据进行统计分析得到整体带宽的平均占用和峰值占用,以及各个模块的带宽占用。下面我们来看一下hrt_ucp_monitor
监控带宽的用法示例。
hrt_ucp_monitor
是一个监控硬件 IP 占用率和内存信息的工具。支持的内存信息包括 DDR 读写带宽,ION 内存,进程内存。考虑到本文的主题,我们只关注 DDR 读写带宽的情况。
工具准备:将工具链 OpenExplorer 开发包中hrt_ucp_monitor
传到开发板上即可。
运行hrt_ucp_monitor
时,如果不指定参数,则使用默认参数运行。默认开启所有硬件 IP 监控,以交互模式运行, BPU 和 DSP 每秒采样 500 次,硬件 IP 占用率每 1000ms 刷新一次。如果想要修改,可以参考工具链的用户手册,或运行 hrt_ucp_monitor -h
获取工具的使用详情。
在 A 终端运行程序,在 B 终端运行命令:hrt_ucp_monitor
,即可看到对应的监控信息: