手机芯片的大小核架构

背景

当前的芯片,无论是PC端还是手机端,为了提高性能,都是多核心的结构。也就是一个芯片有着多个计算核心。随着芯片的发展,14nm,7nm,5nm,制式的提升,会带来性能的提升,但是同时也会带来功耗的提升。手机的芯片根据摩尔定律在不断的性能翻倍,带来了高功耗,但是电池的发展却跟不上摩尔定律。这就导致了一个矛盾:

  • 电池的容量限制了手机高性能芯片的续航

那么为了解决这个问题,要么提升电池的容量(这与当前手机轻薄化的理念相违背),要么降功耗(这也就意味着手机芯片性能的降低)。

为了解决这个矛盾的问题,一个大小核的架构就被提出来了。也就是说芯片的部分核心是高性能高功耗的计算核心,一部分核心是低功耗的核心。当需要性能计算的时候,比如说玩大型游戏的时候,就用高性能核心来处理任务,当浏览网页,处理微信消息时,就用低功耗低性能的核心,这样就能延长手机的续航时间。

举个例子,big.LITTLE 将ARM Cortex-A15处理器的性能与Cortex-A7处理器的节能效果结合在一起,A15叫做大核心,工作在较高的电压和频率下,消耗更多的能量,用于计算繁重的任务;A7叫做小核心,虽然其性能是A15的1/2,但耗电只有1/7,相比之下能效就是A15的3.5倍。大核心可以看作性能核心,小核心是效能核心。

这也就是为什么当前big.Little的架构在手机上流行,而在PC上几乎没有的原因(实际上,当前AMD也计划推出PC版本的bigLittle架构芯片)。

对于big.Little的架构,最重要的就是任务的调度。

硬件架构

下面以iphone的芯片为例,我们可看到它有四个CPU,2个A15,2个A7,每个CPU拥有自己独立的L2缓存。核心的切换耗时20000个时钟周期,这对于用户任务来说可以忽略不计。

GPURenderflow

我们可以看到A7芯片完成任务需要更少的资源,而A15则需要更多的资源,同时架构也更复杂,因此耗能较大、

GPURenderflow

这也就解释了为什么我们需要一个小核心,而不是将大核心降频使用的原因了。因为为了提升芯片的性能,不仅仅是提升了频率,而是做了更多的架构的调整,资源的访问等等。

软件架构

软件上一般有下面的几种实现方案:

  • Clustered Switching : switching from the “big” or the LITTLE clusters. Only one cluster can be active at one time.
  • In-Kernal switcher : pairing the big and LITTLE core as one virtual core. The OS chooses which physical core is active and most efficient without the app knowing. Again only one core active at a time
  • Heterogeneous multi-processing : All physical cores are active and contributing. This could be very useful for large computation tasks but it is not power efficient.

性能提升

从下图也可以看出,即使A7芯片工作在最高性能的条件下,功耗也是低于A15的。同时ARM经过测试发现,对于手机的正常应用,big.Little架构能节省50%的电量。因为大量的应用实际上是不需要A15的,A7就解决了。

GPURenderflow

总结

  • big.Little架构是为了提升芯片的性能,同时降低芯片功耗的
  • 在软件架构上,各个厂家有各自的实现方案

参考资料

https://www.arm.com/products/processors/technologies/biglittleprocessing.php
http://www.ubergizmo.com/2013/01/what-is-arm-big-little/

显示 Gitment 评论