调查数据表明,额外的微处理器内核并没有被添加到SoC中,但你必须深入研究数字,才能发现真正的情况。原因很复杂。它们包括从软件编程模式到市场转变和新的用例等一切因素。因此,虽然调查数字看起来很平淡,但市场和技术动态可能会对未来重塑这些趋势产生很大影响。
在刚刚发布的一项功能验证调查中,强调了目前的比较,该调查由Wilson Research和西门子业务的Mentor进行。该调查基于1492名受访者--其中约有一半参与了ASICS的调查,主要涉及芯片尺寸和处理器数量等方面。调查数据显示,"8个或更多 "的类别有非常轻微的增加,但几乎在调查的+/-3%的误差范围内。这使得它的数量与2016年大致相同。与前两次调查结果相比,拥有两个处理器的SoC略有减少。
"处理器的数量在PC或便携式设备等平台上停滞不前,"Arteris IP的研究员兼系统架构师Michael Frank说。"这与摩尔定律趋于平缓的关系不大,而是从软件的角度来看,要为更多的处理器找到足够的工作变得非常困难。除非你有高度并行的工作负载,否则要让所有这些核心都忙碌起来真的非常困难。"
工作负载也在发生变化。"对于移动应用处理器来说,这是第一大批量产品,一般架构似乎已经在8个核心的集群上稳定下来了--至少目前是这样,"Cadence公司Tensilica IP高级集团营销总监Larry Przywara说。"我们看到的是,做视觉和AI类型的工作负载的核心数量正在上升。"
但在智能手机市场之外,还有很多变化的空间。"我们看到从汽车到基础设施等一系列市场的计算需求都在增加,"Arm公司技术副总裁、研究员Peter Greenhalgh说。"这意味着我们还远远没有达到有用处理器的极限。新的应用有不同的需求,如功率、安全和效率。从低功耗物联网的角度来看,我们可以预期多核解决方案的采用会越来越多。而且我们可以预期,这种趋势将继续增加到更多的应用和终端市场。"
Synopsys公司ASIP工具产品营销经理Markus Willems对此表示赞同。"我们看到的情况与调查中出现的情况恰恰相反,即芯片上的可编程元件数量正在增加。这是由于非常特定于应用,或者特定于领域的那种加速器正在变得更加软件可编程。由32位超标量内核组成的多核集群可能已经变得有限,因为内存是一个问题。"
在规模较小的嵌入式市场上,似乎有一个大的变化即将发生。"如果我们看一下嵌入式市场上出现的新芯片,它们通常是双核、四核类型的配置,"Mentor公司嵌入式软件部门高级产品经理Jeffrey Hancock说。"仍然有一些设备是单核的,但多核终于也要在这个领域出现了。从硅供应商的角度来看,只要人们能够使用这些核心,只要能够保持在他们的成本结构之内,他们就非常乐意增加核心。"
但这些数字隐藏了更大的故事。"虽然一个ASIC中的嵌入式处理器数量可能已经持平,但特定领域或专用处理器的数量却在增加,"Mentor公司IC验证解决方案部副总裁兼总经理Ravi Subramanian说。"我们看到,边缘设备中的SoC正在发生本质的变化,即数据以及计算量正在增长,而且大量的计算正在转移到应用或领域专用处理器上。"
新的工作负载的处理需求明显不同。"采用多个嵌入式处理器的传统ASIC计算机架构无法提供许多新应用所需的GOPS/mw/MHz,"Subramanian说。"需要注意的是,算法的复杂性远远超过了摩尔定律,因此,推动了新的架构。这些新架构的编程模型是共同开发的,以便共同优化编程模型和硬件架构。"
这也在推动大型数据中心架构的发展。"Arteris的Frank说:"我们看到超级计算机的核心数量会增加,因为它们的工作负载,比如有限元和大的迭代系统,很容易并行化。" 一切有大的线性代数工作负载的东西都在很好地扩展。"
CPU的局限性
虽然通用CPU很有用,但其通用性也是一个限制因素。"其中一个问题是,CPU并不是真的擅长什么,"Frank说。"CPU擅长处理一个单线程,里面有很多决策。这就是为什么你有分支预测器,它们已经是多年来研究的主题。但是加速器,尤其是定制加速器,服务于两个领域。一个是你有很多数据在移动,CPU不擅长处理这些数据。这里我们看到向量扩展的范围会更广。还有很多操作是非常特殊的。如果你看神经网络,你有非线性的阈值和巨大的矩阵乘法,用CPU做这些事情效率很低。所以人们试图将工作负载移到靠近内存的地方,或者移到专门的功能单元中。"
与处理器架构紧密相连的是内存。"对于一些应用来说,内存带宽限制了增长,"Mentor的Subramanian说。"专用处理器以及内存(或接近内存)计算机架构增长的关键原因之一,是为了直接解决传统冯-诺依曼架构的限制。尤其是当如此多的能量在处理器之间移动数据,以及内存与实际计算所花费的能量时,情况更是如此。"
数字中隐藏的另一件事是核心复杂性。"我们看到的是,虽然集群保持不变,但单个内核变得更加强大,"Synopsys的Willems说。"我们看到的是某些领域向64位发展的趋势。从这个意义上说,同样数量的核心,但能力更强。"
受软件的限制
20多年前,PC从单核处理器转为多核,然而能够成功利用多核的应用程序数量仍然有限。"如果你看看你能从一个普通程序中提取多少并行性,你可以发现每时钟周期大约两条指令的并行性水平,"Frank说。"如果你改变你的编程模型,成为一个明确的数据流模型,在这个模型中,你有你管理的数据依赖性,你可以突然获得13倍到20倍的性能提升。"
人类能做得更好吗?"试着找一个能写出能有效使用两个线程的并行程序的程序员,"Frank补充道。"你会找到这些人的。试着找到一个人,当你没有高度并行的工作负载时,可以使用四个以上的线程。非常困难。而且你想增加的线程越多,问题就越复杂,越难。"
面向数据的编程让一切变得不同。"几十年来,并行计算概念一直是计算机科学的一部分,但一直被归为高度专业化的任务,并行处理是很困难的,"Subramanian说。"在过去的五到七年里,这种情况已经发生了重大变化,以至于大规模的并行计算成为可能。这在当今许多新的'基于数据'的学科中尤为重要,在这些学科中,编程模型需要有效地使软件算法能够在非常大的并行计算架构上运行。现在,它们正在被扩展到异构并行计算架构上,我们看到新的工作负载的新的编程框架出现--Tensorflow、Caffe、MLpac、CUDA、Spark、MOA只是其中的几个--以大大降低这些系统编程的障碍。"
进展也发生在AI领域之外。"有一些编程模型,或者编程语言,强制执行编程模型,比如Cilk,一个基于任务的模型,"Frank说。"有一些运行时库,支持像OpenMP任务模型这样的东西。当采用这些时,你会突然发现,你可以填满10个处理器。因此,只要我们达到这个水平,以及这些类型的编程模型--基于任务的、数据依赖管理的程序模型--你就会发现,处理器的增加会有下一步的发展。"
还有其他因素促使人们关注多核编程。"有些人是从功能安全或安全领域来看待多核的,"Mentor的Hancock说。"设计人员需要将多核隔离,或者说分离成各个子系统,以便保护一些东西。然而,人们不愿意改变。你需要开拓者来引领潮流,可能要发生一些大事件。在这之前,他们倾向于建立在他们已经知道的和舒适的基础上。汽车业需要像特斯拉这样的人去撼动一切。传统的汽车公司最初只是看到山谷里的一家创业公司,就把他们拒之门外。突然间,他们注意到了,并意识到自己需要做出改变。"
新驱动程序
虽然智能手机仍然是销量和美元的领头羊,但它们不再是导致技术进步的唯一细分市场。"汽车应用中的计算正在经历一场令人难以置信的转变,其驱动力是对更沉浸式、更丰富的车内体验的需求,不断提高的安全和便利的自动化水平,以及向软件定义功能的发展,"Arm的Greenhalgh说。"这导致单个电子控制单元(ECU)迅速整合为更少的多功能ECU,这不仅需要以多核CPU的形式提供更多的CPU计算能力,还需要部署异构计算元素。我们现在看到SoC的多核CPU越来越多,同时也得到了GPU、ISP和ML加速器的增强,使得软件可以部署到每个工作负载最有效的计算元素上。"
进入汽车芯片的计算能力是惊人的。"趋势肯定是朝着特定领域架构、片上和片外加速器以及嵌入式可编程逻辑的方向发展,"OneSpin Solutions的技术营销经理Sergio Marchese说。"对于许多应用来说,把更多的标准处理器扔到一个问题上并不是最有效的解决方案。例如,如果你看看特斯拉全自动驾驶芯片,它有12个Cortex-A72处理器,占据了很大一部分芯片面积。然而,两个神经网络加速器占用的面积几乎是它的两倍(见图1)。"
图1:特斯拉芯片的模具图像。来源:OneSpin Solutions。OneSpin Solutions
Cadence的Przywara对此表示赞同。"我们在汽车领域看到的用于支持自主汽车中更复杂的Level 2、Level 3的是多核DSP集群来支持雷达,以及支持越来越复杂的AI算法的引擎,如图2所示。我们看到的例子是,由于所需的TOPS数量,可能多达8个以上的AI引擎被用来运行AI算法。"
图2:复杂的汽车芯片内的区块。来源:Cadence。资料来源:Cadence
人工智能本身就是一个驱动力。"对于人工智能来说,它是关于如何处理内存访问和地址计算的问题,"Willems说。"我们看到了很多活动和很多正在开发的处理器,这些处理器不是现成的那种处理器。有些系统会有多个AI处理器,只是因为它们有一个始终在线的功能,它们需要处理一些事情,然后它们会唤醒另一个AI处理器来做一些更大规模的计算 所以,你可能会有多个处理器分配到任务。"
AI也在影响更小的边缘设备,以及。"MCU正在承担起进行机器学习的能力,"Przywara说。"TinyML正在帮助推动这一点。这是他们传统上没有使用的东西,但随着越来越多的人工智能和机器学习的应用被研究和开发出来,这将成为MCU或所有产品变得更有能力的驱动力。这将推动这些设备中的处理核心数量越来越多的趋势。"
5G也在产生相当大的影响。"一个无线电调制解调器过去有一个大的大规模DSP,"Willems说。"它足够强大,可以依次或交错运行必要的任务。转移到5G,很明显,一个单一的DSP已经无法完成工作。相反,他们把某些东西剥离出来,变成多个可编程加速器--一个DSP专门负责某些功能,比如做矩阵反转或均衡。但它并不都是同一个DSP,也不是它的倍数。它是多个内核,每个内核由指令集和内存接口专门化。"
基站的处理器增长幅度更大。"对于5G基站应用,我们看到大量的核心接近近100个核心,来完成工作负载。"Przywara说。"5G,当然是在基础设施方面,将会把事情推高。"
未来发展
那么未来我们应该期待什么呢?"会有更多的特殊处理器,"弗兰克说。"在标准SoC领域,我预计处理器内核数量会增加,可能会达到256个内核,但不会用于PC、笔记本或手机。我们将看到的地方是针对汽车的嵌入式系统,与机器学习方面相比,对高性能和连贯性的要求越来越高,变得更加重要。"
为了利用它,编程模式必须改变。"由工作负载能力和性能效率驱动的新计算机架构的ASIC数量正在快速增长,"Subramanian说。"对解决大量各种工作负载的解决方案的需求(如语音识别、X射线分析、物体检测、面部识别、生物细胞的进化)已经在迫使计算分析的新领域的发展,开发新的数学模型来理解具体问题。而且它正在迅速地将这些发现带入计算机科学的世界,特别是新计算机架构性能的分析。这导致了计算机架构世界正在向异构、多处理架构发展,并从冯-诺依曼向神经形态计算架构发展。我们今天刚刚开始了计算机架构的复兴。"
也许是时候重写调查问题,以更好地反映芯片处理能力的演变。也许应该确定独立指令流的数量,或者控制线程的数量,但所有这样的指标将继续偏向于今天的控制驱动范式。