智能手机是无疑当前最火爆的移动设备了。各个手机生产厂商也都是新品不断,营销手段也是千奇百怪的。
而对于自家手机的参数比拼也是你来我往。其中最重要的就数CPU的核心数量了。从最初的单核ARM到现在最多的8核心CPU。可谓是“心脏”越来越多啊。
从一般的感性角度而言,一个核心相当于一个人干活,那8个核心应该相当于8个人干活吧?事实是否如此呢?就让小编今天给大家揭开这个谜团。
首先我们需要了解一个概率论里面的概念:相关性。什么叫相关性呢?就是两个或者两个以上的事件,如果两两彼此之间发生是无关的,那么就说这两个或者这些事件的关联性为0。举个例子吧,路人甲与路人乙互不人事,那么甲与乙之间的关联性为0。如果路人甲掉了一个钱包,被路人乙捡到了,那么甲与乙之间的关联性就不为0。因为乙捡到钱包这个事件的前提是甲丢钱包,如果甲没有丢钱包,乙就不会捡到钱包。
OK,关联性介绍到这里,回到我们的主题。CPU的单核工作模式不用小编啰嗦了,一个人干活,与别人无关。干得快慢,好坏只与自己有关(工作的主频,缓存大小,CPU架构,总线频率,内存大小,磁盘IO快慢等)。
两颗CPU呢(两颗CPU与8颗CPU的情况基本一致,小编就列举两颗CPU为例子)。两个人干活,这就讲究一个搭配的问题了。甲干得很快,可乙却偷懒,那么整体上工作效率就不会很高。这就需要一个调度跟管理(操作系统其实就是干这个的)!从这个角度来说 1 + 1 是不会大于2的!
如果我们假设甲乙都同时卖力干活,那么 1 + 1 是否等于2呢?
要给出答案,我们需要先了解一下ARM(手机的ARM,非控制器用的ARM,前者为风诺依曼架构,特点为数据与指令存储在一起并通过同一个总线传输,而后者为哈佛结构,数据与程序是独立存储并通过分开的总线传输)的总线架构。
从上图中我们可以看到。所有ARM核心以及其他的DSP(数字信号处理器,手机的数字信号处理由它完成并由射频电路发射出无线电传输)等核心分别会连接到一个叫ARM片内高速总线上(AMBA总线)。说的通俗点,一条高速公路就是一条总线,ARM核心相当于高性能跑车,其他核心相当于大卡车或者老爷车,大家都在同一条公路上跑,我们试想一下,跑车能充分跑得起来吗?不可能嘛,公路只有一条,前面的老爷车不提速,跑车在后面只能干瞪眼。
所以针对这种基于风诺依曼(计算机之父,他提出了现代计算机架构的雏形,数据与指令存储在一起)的计算机(X86以及手机的ARM)的性能是不可能与核心数目成正比例的。所以我们看很多评测以及跑分软件,跑出来的分数也不是跟核心数目成正比例的。
读到这里,有的读者可能会有疑问:既然但风诺依曼架构不好干嘛不换成数据跟指令分开存储并独立传输呢?其实这个问题科学家们早已经发现而且进行了改进,哈佛架构出现了,ARM的Cortex-M以及DSP都是基于哈佛结构的。数据与程序指令分开存储并分别传输到CPU,也就是说老爷车你跑得慢,你走你的一条专有的路,我是高性能跑车,我走我的专有路,大家互不干涉!
是不是感觉小编越说你们越糊涂了呢?这么不好的架构为什么X86根ARM还用?是的,现实就是这样的。技术上的成功有的时候是需要市场去认可的,而且历史因素也不可回避。
当科学家们已经发现风诺依曼架构的问题所在而提出哈佛架构的时候,半导体(X86)CPU已经发展了好几代了,市场已经认可这个技术了,而且基于这个架构的很多软件是没有办法全部重写的(这一点太重要了)!即便有好的也没有办法用,这就是现实!只能在一些全新的领域里面用新的架构了。至于ARM之所以采用这种传统的架构在于软件兼容性,没有人会为ARM专门开发一个基于哈佛架构的总线架构的软件(成本太高),所以ARM也只能选择风诺依曼架构。