big.LITTLE
ARM big.LITTLE或big.LITTLE是由安谋国际科技公司(ARM)提出的异构运算架构。在该架构中,比较耗电但运算能力强的处理器核心组成的“big丛集”与低耗电、运算能力弱的处理器核心组成的“LITTLE丛集”结合,这些处理器核心共用记忆体区段,并能够在不同的CPU丛集之间线上实时分派、切换负载。[1]这个架构运用在移动计算上,意图是做出计算高效能而平均耗电低的多核心处理器。ARM的营销材料称,在某些运算操作中该架构与只使用与“big丛集”的相同CPU核心数量的处理器相比,可节省多达75%的功耗。[2]通常,ARM big.LITTLE架构用于创建多处理器SoC(MPSoC)。
本组态配置式在2011年10月ARM发表Cortex-A7时首次对外公布,Cortex-A15也能够与这个架构相容。[3]2012年10月,ARM公司宣布Cortex-A53与Cortex-A57(ARMv8)也能与这个架构相容。[4]2014年2月ARM发表Cortex-A17,同一年在Computex 2013上ARM又发表了Cortex-A12,这两种CPU核心也可用于big.LITTLE配置式中的“big丛集”上(“LITTLE丛集”由Cortex-A7担当)。[5][6]
2017年5月,ARM发表DynamIQ取代big.LITTLE。[7]与big.LITTLE相比,DynamIQ允许更为灵活的CPU核心配置和更大规模的丛集设计(每个CPU丛集可以有八颗CPU核心)、丛集数量更多(一块CPU上最大可扩充至32个丛集)、更精确的电源控制(每个核心内有更多的时钟门控和电压控制)以及更快速的L2快取存取操作。然而DynamIQ仅适用于Cortex-A75、Cortex-A55及往后推出的ARM CPU核心。
运行状态迁移切换方式
big.LITTLE中,节电的“LITTLE丛集”和高效能的“big丛集”之间有三种切换方式,均要求线上实时操作,除了电路设计以外还需要作业系统的配合得当(一些方式需要依赖作业系统的工作流排程实作)[8][9]
丛集切换
最早也是最简单的big.LITTLE组态实作是这种大小核心丛集的切换,高效能CPU核心亦即大核心组成“big丛集”,而低功耗CPU核心亦即小核心,则是组成“LITTLE丛集”。作业系统的排程器在某一时间点上只能见到一组CPU丛集,整个处理器的负载高低变化时,系统会在不同丛集间转移负载。当负载从一个CPU丛集转移至另一CPU丛集时,相关的资料、执行状态等被保存在这些丛集共用的二级快取(L2 Cache)当中,先前运作的CPU丛集断电关闭然后加电压开启另一个丛集。丛集的资料转移还需要使用快取一致性互联(CCI)。这种big.LITTLE的第一个实作是三星Exynos 5410 Octa。[10]这种方式的一大缺点是CPU丛集间的切换延时较高,并且CPU核心的利用率较低。
内核内建切换器(CPU迁移)
这种切换方式自丛集切换方式演变,主要区别在于每一个丛集对作业系统排程器来说都是可见的。在此种方式中,任务在CPU核心之间切换使用内核内建切换器(in-kernel switcher,IKS),晶片设计上是一个高效能CPU核心和一个低功耗CPU核心组成一个复合丛集,这一个丛集作为一个“虚拟的”核心来供作业系统操作,同一时间点上这一对CPU核心只有一颗在运作,高效能CPU核心仅在有高效能运算需求时才开启,运算效能需求低时则是只开启低功耗核心。当虚拟核心内负载在高低之间变化时,先开启将要切换到的CPU核心,转移执行状态,转移完成后关闭先前运行的CPU核心,由该CPU核心继续执行先前的处理进程。切换工作需要通过cpufreq框架完成。Linux 3.11内核开始提供了big.LITTLE IKS完整实作所需内核元件模组。
苹果公司的A10 Fusion以及A10X Fusion即采用此种big.LITTLE组态。不过,更复杂多样的“大小核心”CPU核心分组,也是有可能的,一只采用IKS方式的处理器上容许一个虚拟核心内有一颗以上的高效能CPU核心或低功耗CPU核心,或者是相同的CPU核心而分成主副CPU核心。辉达的Tegra 3 SoC也采用类似IKS切换方式,但Tegra 3上采用的是相同的CPU核心,多个主CPU核心与一个副CPU核心的设计。
异构多处理机(全域任务排程)
异构多处理(heterogeneous multi-processing,HMP)是big.LITTLE组态中最灵活也是效能最强劲的使用模式,在这种组态中,同一时间点上所有的物理CPU核心都是可用的并且可以同时全部开启使用,也可以将高效能CPU核心全数关闭而只使用低功耗CPU核心。高优先级或者对运算速度吃重的执行绪可以被分派至高效能CPU核心上,而低优先级或对运算速度要求不高的执行绪(如背景任务),则是由低功耗CPU核心负责完成[11][12]
最早的实作是三星电子的Exynos Octa 5420/5422/5430。[13][14]而现时大部分实现big.LITTLE组态的ARM架构相容处理器,多采用这种切换方式。迫于行动装置对CPU核心规模的控制,苹果公司的Apple A11也采用此种排程方式。[15]
全域任务排程的优势:
- 对各个CPU核心有更细粒度的工作量控制。因为作业系统排程器直接对各个CPU核心分配及搬移任务、降低作业系统内核态的额外开销而令节电效果和效能相应地获得提升
- 相比内核内建切换器(IKS)依赖cpufreq框架来实现,直接使用任务排程器来实现CPU核心的切换来得快,而且更容易实现
- 更灵活的CPU丛集组合(像是两个Cortex-A15和四个Cortex A7组成的SoC CPU部分)
- 相比固定只能使用虚拟核心数量的CPU核心数,如有需要,可以实现SoC内所有的CPU核心一同运作以最大限度发挥SoC的运算效能
任务排程
对于大小CPU核心(丛集)成对配置的,它们之间的切换过程对作业系统来说是透明的,作业系统使用现成的动态电压与时钟信号调整(DVFS)功能来实现。作业系统核心现成的DVFS支援(像是Linux核心的cpufreq
)将根据负载轻重,从预先设定的一个时钟信号-核心电压参数配置表中以合适的参数设定CPU的电压与时脉,和此前仅需调整核心电压、时脉的CPU一样,然而,较低的参数设定则会开启节电(小)CPU核心,而较高的参数设定则是开启高效能(大)CPU核心。
另一种相对的,则是所有的CPU核心都呈现给作业系统内核排程器,排程器将依据请求决定由哪个核心执行哪个行程或执行绪。这种排程方式需要非成对配置的CPU核心(丛集),不过成对配置的CPU核心(丛集)也可能允许使用。不过这种排程方式更考验作业系统内核排程器的调校功力(多核心处理器的效能最佳化),至少当前大多数的硬体中,多核心处理器的结构使用的是对称多处理器系统,big.LITTLE组态其实也不例外。
参见
参考资料
- ^ Nguyen, Hubert. What Is ARM big.LITTLE?. UberGizmo.com. 2013-01-17 [2017-04-26]. (原始内容存档于2015-09-10).
- ^ big.LITTLE technology. ARM.com. [2013-07-25]. (原始内容存档于2012-10-22).
- ^ ARM Unveils its Most Energy Efficient Application Processor Ever; Redefines Traditional Power And Performance Relationship With big.LITTLE Processing (新闻稿). ARM Holdings. 19 October 2011 [2012-10-31]. (原始内容存档于2018-05-07).
- ^ ARM Launches Cortex-A50 Series, the World’s Most Energy-Efficient 64-bit Processors (新闻稿). ARM Holdings. [2012-10-31]. (原始内容存档于2013-01-09).
- ^ ARM's new Cortex-A12 is ready to power 2014's $200 midrange smartphones. The Verge. April 2014 [2017-04-26]. (原始内容存档于2017-06-14).
- ^ ARM Cortex A17: An Evolved Cortex A12 for the Mainstream in 2015. AnandTech. April 2014 [2017-04-26]. (原始内容存档于2014-09-11).
- ^ Humrick, Matt. Exploring Dynamiq and ARM's New CPUs. Anandtech. 2017-05-29 [2017-07-10]. (原始内容存档于2018-06-13).
- ^ Brian Jeff. Ten Things to Know About big.LITTLE. ARM Holdings. 2013-06-18 [2013-09-17]. (原始内容存档于2013-09-10).
- ^ George Grey. big.LITTLE Software Update. Linaro. 2013-07-10 [2013-09-17]. (原始内容存档于2013-10-04).
- ^ Peter Clarke. Benchmarking ARM’s big-little architecture. 2013-08-06 [2013-09-17]. (原始内容存档于2013-10-17).
- ^ A Survey Of Techniques for Architecting and Managing Asymmetric Multicore Processors (页面存档备份,存于互联网档案馆), ACM Computing Surveys, 2015.
- ^ Big.LITTLE Processing with ARM Cortex™-A15 & Cortex-A7 (PDF), ARM Holdings, September 2013 [2013-09-17], (原始内容 (PDF)存档于2012-04-17)
- ^ Brian Klug. Samsung Announces big.LITTLE MP Support in Exynos 5420. AnandTech. 2013-09-11 [2013-09-16]. (原始内容存档于2020-11-12).
- ^ Samsung Unveils New Products from its System LSI Business at Mobile World Congress. Samsung Tomorrow. [2013-02-26]. (原始内容存档于2014-03-16).
- ^ The future is here: iPhone X. Apple Newsroom. [2018-02-25]. (原始内容存档于2018-04-01) (美国英语).
- Nicolas Pitre. Linux support for ARM big.LITTLE. LWN.net. 2012-02-15 [2012-10-18]. (原始内容存档于2012-10-17).
- Paul McKenney. A big.LITTLE scheduler update. LWN.net. 2012-06-12 [2012-10-18]. (原始内容存档于2012-10-22).
- Jake Edge. KS2012: ARM: A big.LITTLE update. LWN.net. 2012-09-05 [2012-10-18]. (原始内容存档于2012-11-02).
- Jon Stokes. ARM's new Cortex A7 is tailor-made for Android superphones. Ars Technica. 2011-10-20 [2012-10-31]. (原始内容存档于2012-12-03).
- Andrew Cunningham. ARM goes 64-bit with new Cortex-A53 and Cortex-A57 designs. Ars Technica. 2012-10-30 [2012-10-31]. (原始内容存档于2012-11-01).