随着手机市场竞争的白热化,手机芯片设计商为了创造出差异性,发布了 8 核心以上的 CPU。让手机芯片的核心数量一举超越主流笔电的 2 或 4 核心。然而,我们是否真的需要如此多的核心?是什么原因让我们无法彻底地发挥 CPU 的真本事?
中央处理器,CPU(Central Processing Unit),做为电脑的大脑,掌管着电脑所有运行的程序。为了让程序可以运行的更快更稳,电脑架构师们不断的思考着该如何设计出更好的 CPU 架构,让使用者得以享受更加快速、便利的电脑。
为了设计出更为出色的 CPU,工程师便想借由不断提高 CPU 的时脉,让 CPU 得以在一秒内执行更多的指令。随着科技的发展,时脉的确如工程师所愿,逐步的提高。从 1990 年代开始,CPU 的时脉从 60MHz,一举提升到 2000 年的 2000MHz。进步幅度之大,令人赞叹。
发展遇到瓶颈,多核心的时代来临?
到了千禧年,时脉的进展,却不再如此顺利。当 CPU 时脉发展到 4GHz 左右时,工程师发现,CPU 每秒所制造出的热,已经突破一般家用散热器可以负担的量。为了解决工程上的瓶颈,工程师开始将目光放在多核心架构上。因此,Intel 以及 AMD 皆于 2005 年发布了双核心 CPU,欲借由双核心的技术,突破单芯片效能的瓶颈。
但是,多核心架构却没有如原先预期的向超多核心发展。intel 从 2005 年至 2015 年。将近 10 年间,在一般消费者市场(不含电竞玩家)所发售的 CPU 也顶多从双核心进展到四核心。至于 AMD,即使发布了 8 核心的 CPU 于市场上,其效能也顶多和该时期的同级 4 核 intel CPU 相当。
究竟是什么样的因素,让 CPU 的核心无法如同时脉的进展般,一飞冲天?
应用程序的极限,多核心无用武之地?
在不考虑在单一 CPU 中加入过多核心,会大幅增加 CPU 的耗电量时。最主要的因素便是多核心的应用程序不容易开发,让电脑架构师决定持续研究如何改善一个核心的效能,而非多核心架构的开发。但是,为何多核心的 应用程序会难以开发呢,这必须从使用者常用的应用程序来看。
在日常的使用环境中,使用者大多是使用网页浏览器、看影片、以及玩游戏。而这 3 种,恰好是 3 种不同的应用类型。
在使用网页浏览器时,电脑大多在等待使用者下新的指令,像是打字以及使用鼠标点击链接,接着便是从远端读取网页资料并绘成使用者界面。软件在 CPU 端可以平行运作的部分相当稀少,也因此,多核心在单纯的浏览网页上,并无法带来太多的增益。
上网看影片则是电脑会不断的从服务器接收影片的资料以及向服务器送请求,接收资料后,交由绘图处理器(GPU)进行绘图运算,将压缩过的编码影像档转换成显示器的画面。在这一类应用中,工作负担主要是在 GPU 端,CPU 可平行的程度也不高。
最后的应用,则是游玩游戏。在玩游戏时,电脑会不断的接收使用者所下的指令,接着是在电脑所建构出的虚拟世界中,标记玩家周遭的景色以及移动。之后,便是将整个虚拟世界交由 GPU,转换成显示器的画面。绘图处理器详细的运行流程在此。
在这一类应用中,因为电脑需不断地记录玩家的移动以及将虚拟世界中物体位置记录在 CPU 中,因此,CPU 的负担较其他应用沉重,毕竟它需要从硬盘中读取地图的地形座标以及玩家的位置和动作。此外,CPU 也需将大量的游戏资料送进 GPU 中。所以,游戏和前述的应用相比,可平行的程度较高。但是,4 核心也足以负荷所有需求。因为负荷最沉重负担的,依旧是 GPU。
根本问题,人的思绪是线性的
由上所述的数个原因,可以得知最根本的问题,便是人类一次只能思考一件事情。而电脑程序是由人类撰写,导致在撰写程序时会将人类的思考方式带进电脑中,让程序在早期的发展,仅需由单核心处理器便可以完成。
此外,如果要将现行的程序修改成平行程序,也因为人的思考流程是线性的,工程师需要花费相当大的力气才能找出可以平行的部分,并将程序的逻辑做大幅的修改,让平行程序难以推广。
或许会有人反驳,人一次是可以做两件事情,像是一边做事一边听音乐,但那也只能称为可以迅速的在两件事情间做切换而非同时思考。除非,有人可以将眼睛同时对焦在两点以上,这样才有可能一次处理两件事情。
此外,有部分的使用者会宣称,他们一次会开启多个网页分页,这样也算是需要多核心的 CPU,但是,如前所述,除非有人可以将眼睛对焦在两点上,同时看两个网页。不然,开启多个分页只是占用大量的内存,多核心在这类应用上没有多大的帮助。
移动时代来临,应用产生剧变
然而,在智能手机发布之后,情况开始有所转变。随着手机的迅速发展以及应用的多变,多核心的应用逐渐增加。举例来说,在 2013 年,Apple 推出的 iPhone 5s 内,便在原本的双核心 CPU 外,添加一个小处理器做感测器的资料收集。在其他手机内部,则使用一般的 CPU 核心负责。让原本的应用,新增了一份可平行的工作。
此外,近期的应用程序也开始提升和现实世界的互动性。以现行热门的 Pokémon GO 为例。在开启 AR 和现实世界互动时,要执行此类应用程序,便需要大量的运算资源。在寻找宝可梦时,手机需要收集 GPS 信号,下载地图资讯以及宝可梦出现的位置。
当宝可梦出现后,则需要将相机拍摄的图片和宝可梦做结合。同时,运动感测器也需要开启,计算玩家镜头的移动轨迹,订出宝可梦应该出现在画面的何处;抛球时,则需计算抛球的方向还有滑动的速度以计算抛球的距离。这些应用都可以平行,为多核心 CPU 开启一片新天地。
另外,随着自动驾驶以及人工智能的题材兴起,原本用在手机内部的芯片,开始攻城掠地,往其他领域拓展。在其他领域中,因为需要大量的感测器,让超多核心的应用化为可能。毕竟,光是接收大量的感测器资料,现行的 4 核心 CPU 已招架不住。
那么,我们是否需要多核心的 CPU 呢?对一般的笔电以及桌机使用者而言,近期的答案为否,毕竟 4 核心已经能满足使用者的需求;但在移动应用市场中,答案则为是,因为移动设备的应用越来越多元,感测器也越来越多,在 CPU 中塞入更多的核心,将可迅速的应付与日俱增的硬件需求,而不需花费大量的人力以及财力从单一核心压榨出更多效能。