多个Core集成到一个处理器上,当CPU负载很大的时候,多个Core一起上阵确实可以提高工作效率,但是当工作任务不是很多的时候,如只开一个QQ,然后八个核一起跑,只有一个Core在工作,其他Core开始空转,随着而来的就是功耗上升,为了避免这种情况,ARM退出了big, little结构,也就是大小核结构;一个处理器内部有高性能的Core,也有低功耗的Core,CPU工作很重时候,启动高性能的Core,很闲的时候,切换到的低功耗的Core工作。
ARM处理器针对的多核采取了分层设计,如图2-49所示,将所有的高性能核放到一个蔟里面,Cluster,构成一个big Cluster, 将多个低功耗的放到另一个Cluster里面,构成Little Cluster,处理器中的每个Core都有自己独立的数据Cache和指令Cache,每个Cluster共享Cache。为了保证多个Core运行时Cache和RAM中的数据相同,两个Cluster之间通过韩村一致性接口相连,不仅保证多个Core之间的高效通信,还通过检测电路,保证了多个Cache之间,Cache和RAM之间的数据一致性,避免程序运行时出错。
big Cluster |
little Cluster | |||||||
A72 |
A72 |
A53 |
A53 | |||||
L1 D-Cache |
L1 I-Cache |
L1 D-Cache |
L1 I-Cache |
L1 D-Cache |
L1 I-Cache |
L1 D-Cache |
L1 I-Cache | |
L2 Cache |
L2 Cache | |||||||
RAM |
操作系统运行时,可以根据CPU的负载情况灵活的在两个Cluster之间来回切换,为了更好的在性能和功耗之间达到平衡,我们甚至可以进行更精细的调度,当CPU负载较轻时,使用小核,党CPU负载一般时,大核和小核混合使用,只有当CPU负载较高时,才全部使用大核工作,随着RAM的大小核设计技术越来越成熟,在软件上的优化越来越得心应手,越来越多的厂家开始使用这项技术设计自己的处理器,大小核设计目前已经成为ARM多处理器的标配。