本文主要是介绍ARMv8 big.LITTLE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
big.LITTLEbit.LITTLE 产生原因现代软件栈对移动系统提出了相互冲突的要求。一方面是对游戏等任务的高性能要求,另一方面是对音频播放等低强度应用的节能要求。单处理器设计不可能既具有高峰值性能又具有高能效。当高性能的核心将用于低强度任务,大量能源被浪费,导致电池寿命缩短。性能本身会受到堆芯可以持续运行的热极限的影响。big.LITTLE技术通过将节能的小内核与高性能的大内核耦合在一起,解决了这个问题。架构1.大小核 都是同一个架构,所以都可以运行同一套代码// 同一个应用程序二进制文件在两个核心上都未经修改地运行。// big.LITTLE 属于 HMP2.处理器内部微体系结构的差异使它们能够提供不同的功率和性能特征3.Hardware coherency(ARM CoreLink CCI-400) 确保了 大小核心 之间 透明高效的数据传输没有硬件一致性,大核和小核之间的数据传输总是通过主内存进行的,但这会很慢,而且不节能4.GIC-400 确保了 中断 能够在集群中的任何核心之间迁移.5.所有内核都可以使用分布式中断控制器GIC-400相互发送信号6.big.LITTLE 的可选配置(A53+A57)软件执行模型Cluster migration // 迁移CPU migration // 迁移当当前核心(或群集)达到最高操作点时,如果软件堆栈需要更高的性能,则会执行核心(或群集)迁移操作。然后在另一个核心(或集群)上继续执行,并遍历该核心(或集群)上的操作点。当不需要性能时,执行可以切换回来。Global Task Scheduling // 也被叫做 big.LITTLE MP操作系统任务调度程序知道大小核之间计算能力的差异。调度器跟踪每个软件线程的性能要求,并使用这些信息来决定每个线程使用哪种类型的内核。并关闭相应的内核与迁移模型相比,这种方法有许多优点,例如:•系统可以有不同数量的大内核和小内核。•与迁移模型不同,任意数量的内核可以在任何时间处于活动状态。如果需要峰值性能,这可以增加可用的最大计算容量。•可以隔离大集群以专用于密集线程,而轻线程在小集群上运行。这使得繁重的计算任务能够更快地完成,因为没有额外的后台线程。•可以将中断单独针对大或小的内核。具体方法:当当前分配给小内核的线程的跟踪平均负载超过向上迁移阈值时,该线程被认为有资格迁移到大内核。当当前分配给大内核的线程的平均负载低于向下迁移阈值时,它被认为有资格迁移到小内核。迁移时机:Fork migrationWake migrationForced migrationIdle pull migrationOffload migration
这篇关于ARMv8 big.LITTLE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!