④内存, 缓存
我们的cpu读取数据是需要使用内存的,而直接用内存来进行运算运算效率是最低的,这就涉及到缓存,现在来说,一个cpu的缓存分为L1,L2,即一缓和二缓,现在的高端cpu还有三缓。运算效率来说,一缓>二缓>三缓>内存。
其中读取平时小型数据,只用到L1,L2承载部分,再多的的大型数据就需要由内存承担,所以如果没有L2,多余的部分就会由内存来承担,速度就会变慢,L2太小,内存承担的就越多,速度也会变慢。
现在主流CPU,如Exyons8890是1.5MB的L2,Snapdragon 820则是1MB的L2,两者读取大型数据基本无压力,但是苹果A9已经达到3M,所以在架构制程相同的情况下,A9比高通强并不是没有原因的。不过一般来说,其实1MB的L2已经足够了,而且缓存只是辅助原因,只能减小同量的流量流动的速度,并不能增大流量,所以如果位宽过小,L2再大也没有意义。但是值得指出的是,虽然L1 L2比内存运算更有效率,但是光有速度,如果运算量总量太小,加速也是有限的,所以还要看内存频率和位宽的影响。位宽和内存频率影响着总流量的大小。
这里的运算量,我们用带宽来表示,则带宽=内存频率*带宽*倍增系数/8,其中倍增系数同时代产品都是差不多的,频率相差最大不过30%左右,而位宽都是翻倍的,所以位宽的影响是最大的,而这个位宽和上面说的第二点中的总线位宽是相辅相成的。所以在架构制程相同的情况下,总线位宽可以说是一个cpu运算流量大小最根本的原因。