|
AR的大部分CPU的以太网模块都不带硬件加速功能,如硬件NAT,硬件QOS,TSO,硬件校验和等(仅AR934X和QCA955X支持硬件NAT,我指的是CPU支持,不是交换机),并且OpenWrt都不支持这些硬件加速功能(TSO、校验和除外)。
因此无论是来自以太网的数据包还是无线网卡的数据包,都必须经过CPU处理,以实现NAT功能或者过滤、QOS、接口桥接等功能。
那么普通用户关心的硬件指标也就是NAT转发效率了,这个跟CPU的性能(注意,不是主频)挂钩,CPU性能越高,那么NAT效率就越高。
说CPU性能而不说CPU主频是因为如果CPU架构不好,主频再高也是渣渣。例如我最近在搞的RTL8196C,主频390MHz,NAT转发性能还比不上184MHz的AR2317(这里要说明普通RTL8196C固件是开启了硬件加速的,我这里说的就是纯CPU处理的NAT性能)。
然后因为网络流量来自于不同的设备,例如无线或者有线,那么当两者都有数据包需要传输时,CPU需要按照一定的优先级,将其处理能力分配给所有需要处理的设备。因此和处理单一设备的数据包的情况来比,肯定就像出现了性能损失。因为CPU的处理性能是个固定值。
就你的问题而言
虽然 AR7161 是 MIPS 24K 架构的,AR9344 是 MIPS 74K 架构的,但是两者的差别不大,因此性能才能够根据主频来大概比较。
AR7161 默认主频是 680MHz,据说能够超频到 1GHz;AR9344 默认主频是 560MHz,超到接近 900MHz就是极限了。也就是说差别也不是很大。
另外要说明的是,主频不代表指令执行的速度,因此实际上这点超频对性能的提升影响不大。所以最终可能还是 AR7161 的性能要稍高于 AR9344。
NAT 效率大概不到 300Mbps 吧,没有实际测试过,数据来自于网络。
这里说的是 NAT 效率。
除了大部分人最关心的网络性能,还有很多因素能够影响整个芯片的性能。
1. 内存性能
SDRAM 内存有几代,SDR、DDR、DDR2、DDR3等,每一代的性能都在提升
内存频率直接影响内存数据的存储效率
DDR 内存最高主频是 400MHz,可以适度超频,没什么用。
DDR2 内存最高主频是 1066MHz。
AR7161 使用 DDR 内存,在默认主频 680MHz 的情况下,DDR 频率只有340MHz,受制于 CPU 主频。
AR9344 一般使用 DDR2 内存,默认主频是 450MHz,而且可以单独适度超频。
另外内存数据总线的位宽也是一个影响因素。一般路由使用的单片内存是16位的,也就是说一次访问能获存取2字节的数据。两片16位的内存组成32位数据线,那么一次就能存取4字节的数据,那么理论上32位的总线存取数据的效率就高于16位数据总线。
然后内存配合 CPU 可以实现 Burst 特性,也就是在一次访问时,连续存取一定量的数据,以减少访问内存的次数。
2. CPU 的缓存命中率
CPU 访问内存的效率远远低于 CPU 自身执行指令(如访问寄存器)的效率。因此 CPU 都会有高速缓存。
CPU 的缓存控制器能够预测 CPU 将要访问的指令或者数据,并且将其提前从内存加载到缓存中。
当 CPU 将要访问某个地址的数据时,如果这些数据在缓存中,那么 CPU 就直接使用缓存中的数据,而不会去访问内存,那么就会节省时间,提高效率。这种情况就叫做缓存命中。
反过来就是缓存未命中,此时CPU就会去访问内存,将数据加载到换成再继续执行,这就很影响效率。
如果 CPU 的缓存命中率交底,那么 CPU 就会不停地去访问内存,那么就会造成性能严重下降。
AR7161 / AR9344 这些基本不用考虑这个的影响,因为缓存命中率都在 90% 以上。
另外,关于 USB 到 LAN/WAN 的传输效率
USB 总线的频率是固定的,所以 CPU 频率不会影响 USB 的传输效率。
USB 通过 DMA 直接在内存上存取数据,所以内存性能会影响 USB 的效率
但是在 MIPS 的 CPU 上差别应该不大。
至于为什么一些 MTK 的 CPU 的 USB 到网络的传输速率很快,那是因为这些 CPU 支持 TSO
AR/QCA 的所有芯片都不支持该功能,因此全部看 CPU 效率。
以上说了这么多,可以总结出一点,那就是固件会影响设备的性能。
因为一些原厂固件开启了全部硬件加速,例如硬件NAT、硬件QOS、TSO之类的,因此网络传输效率很高,而且几乎没有 CPU 参与
OpenWrt 之类的因为不支持大部分硬件加速功能,全部靠 CPU 处理,因此效率就不高
最后,回到你的问题
如果你用官方 OpenWrt/LEDE 固件,那么性能差别不大
如果你用原厂固件,那么 AR9344 的 NAT 性能就可能提升很大,AR7161 没这功能
|
|