1.SAM9263(ARM926EJ-S)运行于200MHZ,32BIT SDRAM,其时钟是100MHZ,在Linux2.6下用bw_mem测试内存带宽:
runLmDDRBandwidth.sh
BANDWIDTH MEASUREMENTS
(MB) (MB/s)
---------------
bw_mem 1M rd
1.05 194.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.05 164.84
bw_mem 1M bcopy
1.05 92.32
root@am335x-evm:~# runLmDDRBandwidth.sh
BANDWIDTH MEASUREMENTS
(MB) (MB/s)
---------------
bw_mem 1M rd
1.00 181.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能帮助分析原因,性能提升的瓶颈出在哪里。