最近在做一个SOHO路由器项目的时候发现,同样的PCB板,同样的分立元件,同样的供电电源,同样的Flash器件,同样的软件固件,采用ESMT的DDR芯片,不丢包条件下的网络吞吐率非常低,100Mbps的网络接口,竟然可以低到仅仅1Mbps左右,而如果采用winbond或者hynix的DDR芯片,不丢包条件下就能跑到70Mbps的水平。援引硬件部门的同事的话说,按照他们的经验,hynix的DDR芯片品质最佳,winbond其次,EMST最后,但价钱也不相同,只是没想到在性能表现上会有这么大的差异。
需要说明的是,上述数据都是用Spirent公司的网络性能分析仪Smartbits测出来的结果。当然,Smartbis设定的不丢包条件比较苛刻,如果用chariot或者iperf等常规的工具测试的话,是测不出这样的差异来的。
在追踪这个问题的过程中,之前一直没有怀疑会是DDR器件的问题,一直认为是软件存在缺陷。逐项排查之后,疑点落到了DDR上,但没想到问题真是出在它身上。看来,作为一个嵌入式软件开发人员,在系统出现性能问题的时候,不能光把眼光局限在软件上,也许硬件也是潜在的元凶呐。
阅读(1405) | 评论(0) | 转发(0) |