从英特尔1971年推出第一款商用微处理器4004到现在,处理器已经走过了三十多年的历程,目前,CPU处理器已经从服务器、PC发展到嵌入式、工控、消费、医疗等各个领域,但是从总体架构上来看,CPU的架构并没有太大改善,不过也有一些新的架构突破,作为一个一直跟CPU打交道的工程师,感觉很多人被一些概念误导,这里谈谈5个被误解的CPUGPU概念。

1、多核与多线程

提起多核与多线程,很多人首先会想到手机中的多核大战,而忘记了多线程技术,从单核到双核到四核再到8核,似乎多核才是处理器发展的王道,但是大家想过没有?为什么到了8核之后多核之战就打住了呢?多线程技术到底有没有优势?

其实多核有个的缺陷就是随着内核数量的提升,性能的提升并不跟核数增加成正比,按照阿姆达定律:一个程序存在两部分,只能串行计算的部分S,和能够并行计算地部分P。两部分之和是整个程序,因此S+P=1。这个程序如果在一个具有N个核心的处理器上运行,那么和它在一个单核处理器上运行相比,速度的提升是1/(S + P/N)。当N趋近于无穷大时(即假设我们有无穷多个核心),速度提升的上限是1/S,即速度提升的上限取决于程序不能被并行计算的部分。

这个定律的结果就是,即便我们能够有效地并行计算一个程序的 95%,剩下 5% 只能串行计算的部分限制了这个程序的运行速度最多能提升 1/5%=20 倍。而现有的程序中很少能够做到 95% 以上部分的并行计算。这张图显示了对于4种不同类型的程序(分别有50%,75%,90%,95%的部分能够并行处理)的速度提升相对于处理器核心数量的关系,纵轴是相对于单核处理器速度提升的倍数,横轴是处理器核心的数量。可以看到4条曲线随着处理器核心数量的增加逐渐趋于平坦。

201607260056

现在的多核处理器还远远没到拥有 1,000 个核心的时候。然而未来的某一天,不管是软件还是硬件工程师们也许会满头大汗地向客户解释这个问题:为什么最新的 1,000 核处理器比旧的 100 核处理器快不了多少?

所以多核的发展路子是有局限的,再来看看多线程技术,多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。其实这个技术是非常好的,现在英特尔在PC处理器领域基本是走的多线程的路子。它最新的CPU都是四核8线程。

多线程技术可以在不显著增加功耗和面积的条件下提供性能的稳定增加,举例来说,双核和单核双线程,每增加一个线程有50%稳定线性增加,但是对于多核来说,双核比单核有50%提升,但是三核只有30%提升,而四核只有20%的提升了。

而且从开发难度来说,多线程开发难度要弱于多核,多核是需要大量人工优化的,后期需要芯片厂商和系统厂商投入大量的人力物力,而得益于英特尔的普及,软件系统对多线程的支持已经很成熟了,Linux早就支持多线程了,而且多线程开发是CPU自动分派任务不用人工参与,这样可以提升开发效率。

所以,未来CPU的发展除了从32位升级到64位,在多核多线程的应用上不应该割裂开,多核多线程可以提升CPU的能效,解决性能和功耗的矛盾。

2、MIPS CPU内核与ARM CPU内核

现在ARM处理器名气很大,很多人认为一定是ARM CPU内核强于MIPS CPU内核,其实这是个错误认识,有时商业选择中技术因素并不是主导因素,往往其他因素才是主导因素。

在2000年前后,MIPS处理器在中国的名声也是非常大,毕竟它是RISC处理器架构的发明者,但是,ARM处理器在2000年初进入中国后,通过生态系统打败了MIPS内核。当时把ARM带入中国的谭军博士在高校推广ARM处理器,开发很多教程,还到处举办培训和讲座,另外,针对中国IC设计公司缺乏设计能力的现状,ARM推出了针对中国IC半导体公司的授权策略和硬核模式,大大降低了CPU的开发难度。

以前,CPU设计都是高高在上皇冠上的明珠,ARM把CPU设计变成了搭积木时的设计,大量中国半导体IC设计公司采用了ARM内核,而且ARM也构建了比较好的生态系统,借助手机大发展起来。而MIPS当时在中国的生态系统做的不够好,也不调整自己的授权模式,因此败北是必然的。

不过,自从MIPS被Imagination收购后,反而有了大发展,我分析一个原因是Imagination强化了生态系统建设,例如和包括博通、Cavium、Ikanos、Ineda Systems、Ingenic Semiconductor、Lantiq、Nevales Networks、PMC和高通等共同成立prpl基金会。这也是强化生态系统的节奏,而且有很多大牌公司加入。

Imagination除了强大的GPU外,还提供CPU,ISP、VPU、zigbee蓝牙wifi,4G LTE等多种内核,而且提供了针对物联网,云计算的IP产品,可以算是提供最全IP的公司,MIPS内核一直以低功耗著称,随着生态系统构建好,未来物联网大爆发,Imagination机会很多啊。

3、安全性谁家强?

自从“棱镜门”曝光后,安全已经成为移动通信设备和其他便携式电子设备最关注的焦点,如何提升设备的安全防护水准?显然,从芯片就开始提供设备的安全防护是最有效的举措。ARM公司于2003年提在嵌入式领域出了TrustZone技术,为硬件系统提供安全保护,这个技术安全吗?

我看过Imagination Technologies公司CEO HosseinYassaie在接受媒体采访时说“打个比方说,这个TrustZone技术就像是银行的一个保险柜,你可以把认为安全的应用都放进去,在以前,应用都比较单一,这样的安全防护也许有一定的作用,但是现在,手机等移动设备都集成了很多应用,这些都放在一个保险柜中显然安全风险就增大了很多。”

在CPU内核的设计中集成系统安全性扩展,是TrustZone在ARMv6内核架构下的重要扩展特性之一,TrustZone分离了两个并行执行的环境:非安全的“普通”执行环境;安全可信任的“安全”环境,但是问题来了,如果一个应用伪装成“可信任的”进入到你的安全区会怎么样?其他应用和数据还会安全吗?

因此全局硬件虚拟化(Virtualization-VZ)技术才是一个真正安全的技术,Hypervisor之于操作系统类似于操作系统之于进程。它们为应用执行提供独立的VZ虚拟硬件平台,而VZ虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问。Imaginaition将把Hypervisor VZ全局硬件虚拟化技术从传统服务器领域带入现代嵌入式领域的每一个角落。

全局虚拟化就是每个应用都是独立的沙箱操作,两个不同窗口都是不同的沙箱

这样一来,黑客攻破难度大很多很多,攻破一个完全虚拟的是非常难的,你都知道到它的原理去怎么攻破?

4、GPU未来拼什么?

PC时代,GPU基本都是完成3D图形加速,而移动互联时代,随着智能化的提升,GPU强大的并行能力可以把它的应用拓展到更多领域,GPU应该是其未来的发展方向,现在安卓已经可以支持GPU通用计算。

我看很多评测机构也在看GPU在手机平板等产品上的重要作用,GPU不仅游戏体验,在照相处理、UI显示、滑动处理甚至安全方面都在发挥巨大作用,我看很多复杂应用CPU也就开到2、3个核而GPU是应用的主力军,所以,未来GPU的地位会提升很多。尤其随着AR\VR应用的普及,更需要强大的GPU来支持的。

5、缓存、乱序和流水线的秘密

其实看到自从CPU诞生到现在,一直在解决CPU和内存的瓶颈问题,而且这个问题一直没有得到解决所以业界是通过增加缓存来解决,很多移动处理器已经增加了一级缓存二级缓存甚至三级缓存,所以大家在比较CPU性能的时候,别光看CPU的主频,还要看CPU的缓存面积以及带来的DDR功耗问题,要看整体功耗。

如何衡量CPU的性能?其实很简单,执行相同任务时功耗越低越好。而且要多比较,采取不同常用的场景来测试SOC功耗。

还有CPU常用的流水线、乱序等概念,流水线理论上是级数越多跑的越快,比如9级比7级流水线跑的快,但是如果执行不够,CPU就会空跑,形象地比喻就是吃饭时噎住了。

我觉得CPU未来解决性能问题有几个方向:

一个是,单核增加流水线,增加发射,从单发射到双发射到四发射(发射越多执行指令越多),但这个发展方向似乎走不通。

另一个方向就是增加多核多线程,增加并行度,这里再提提MIPS内核,其实这个内核架构很好,没有多核数量的限制,一些网络设备都有上百个内核的产品。

还有是可以乱序执行,这是提升效率的方法,一般高端CPU有乱序执行功能。

我个人认为CPU的时代已经过去了,未来是异构SOC的时代,协处理器会大发展,什么VPU、DPU、ISP、无线IP等等会采用更多,比如联发科6595中的4K视频编解码器就是一颗协处理器,它完成了非常复杂的功能。

20160630000123