1.SAM9263(ARM926EJ-S)运行于200MHZ,32BIT SDRAM,其时钟是100MHZ,在Linux2.6下用bw_mem测试内存带宽:
runLmDDRBandwidth.sh
BANDWIDTH MEASUREMENTS
(MB) (MB/s)
—————
bw_mem 1M rd
1.05194.36
bw_mem 1M rdwr
1.05 91.31
bw_mem 1M cp
1.05 142.90
bw_mem 1M frd
1.05 139.38
bw_mem 1M fcp
1.05 86.03
bw_mem 1M bzero
1.05164.84
bw_mem 1M bcopy
1.05 92.32
root@am335x-evm:~# runLmDDRBandwidth.shBANDWIDTH MEASUREMENTS
(MB) (MB/s)
—————
bw_mem 1M rd
1.00181.42
bw_mem 1M rdwr
1.00 152.58
bw_mem 1M cp
1.00 149.68
bw_mem 1M frd
1.00 157.70
bw_mem 1M fcp
1.00 136.41
bw_mem 1M bzero
1.00 595.86
bw_mem 1M bcopy
1.00 199.92
AM3352 @300MHZ SAM9263@200MHZ
16BIT 266MHZ DDR2 32BIT 100MHZ SDRAM
bw_mem 1M rd 181.42 MB/s 194.36 MB/s
bw_mem 1M bzero 595.86 MB/s 164.84 MB/s
我们的问题:
16BIT 266MHZ DDR2的理论带宽是266Mx16x2 BIT/s=8512 M BIT/s
32BIT 100MHZ SDRAM的理论带宽是100Mx32 BIT/s=3200 M BIT/s
AM3352的内存带宽是SAM9263的2.66倍,但为何AM3352的bw_mem 1M rd的性能那么弱,以至于:
(1)比SAM9263的还低一些?
(2)仅是bw_mem 1M bzero的1/3?
我们的代码从SAM9263平台迁移到AM3352平台后,测试整体性能时,发现300MHZ的AM3352和200MHZ的SAM9263相当,我们认为这是不合理的,因此我们怀疑整体性能低下跟AM3352的bw_mem 1M rd的性能极弱有关,期待TI FAE能帮助分析原因,性能提升的瓶颈出在哪里。
Gary Wu:
你好!
如下链接中有AM335X@720M DDR2@266MHz下的测试数据:http://e2e.ti.com/support/arm/sitara_arm/f/791/p/187926/707626
Test Name
Units
Linux PSP 04.06.00.07bw_mem-rd-1MB
MB/s
244.82
YanChang Liang:
回复 Gary Wu:
我知道你给的这个链接的数据,这个数据我也能复现出来,但我的问题不是问720MHZ下的性能如何,我的问题是:
1.为什么300MHZ下bw_mem-rd-1MB这个值很低,跟一个200MHZ的SAM9263的相比还低
2.为何bw_mem-rd-1MB与bw_mem-bzero-1MB差别那么大,前者是纯粹的读内存,后者是纯粹的写内存。
3.为何300MHZ的AM3352整体性能和SAM9263的性能相近?瓶颈在哪里?我们认为瓶颈跟读内存慢有关系,TI会如何回应这个问题?
Jian Zhou:
回复 YanChang Liang:
梁工:
这个问题需要进一步咨询下我们美国同事,您可以基于那个e2e帖子提这个问题,同时我们会把那个帖子通过邮件highlight给我们美国同事
user4467014:
回复 Jian Zhou:
我也遇到类似问题:
AM335x裸机开发: 读DDR为什么比写慢很多?开发硬件: AM3352,SPI0.SPIFLASH,DDR3@400MHz/800MTS;
开发软件: CCS; 参考AM335X_StarterWare,建立CCS裸机工程;SPL工程加载APP工程到DDR里运行;
已经使能MMU,打开CACHE(包含L2开启);DDR也cache使能;
测试结果: 读DDR比写DDR要慢很多;
测试流程:16M字节DDR,连续测试10次; 分正序(cache命中高)和倒序(cache命中低)测试;
测试结果:发现读DDR比写DDR要慢很多?详见:e2echina.ti.com/…/173681