一、SoC调度概览:手机SoC架构演进、大小核架构与DSU、调度器核心目标
大家好,我是你们的老朋友。今天咱们正式开讲这门课的第一章。
说实话,做了这么多年芯片底层,我见过太多工程师一上来就扎进调度算法里,结果连SoC长什么样都没搞清楚。嗯,这就像你连方向盘都没摸熟,就想去跑赛道——不翻车才怪。
所以这一章,我们先打好地基。我会带你从手机SoC的架构演进讲起,再深入大小核与DSU的设计逻辑,最后聊聊调度器到底在追求什么。
1.1 手机SoC架构演进:从单核到异构多核
手机SoC的发展史,说白了就是一场「既要马儿跑,又要马儿少吃草」的博弈。
早期手机芯片,比如ARM Cortex-A8时代,大家都是单核。那时候功耗低,发热小,但性能也弱。后来大家发现,光靠提高主频不行——频率一高,功耗直接爆炸。我记得当年某款芯片为了冲高频,散热片都快赶上手机厚了,用户体验极差。
于是,多核架构登场了。
但多核也有坑。你想想看,四个大核全开,性能是上去了,可电池撑不过半天。所以后来ARM搞出了big.LITTLE架构——大小核混搭。大核负责重活,小核处理轻任务,这才算找到了平衡点。
到了近两年,ARM又推出了DSU(DynamIQ Shared Unit)架构。这玩意儿把大小核的调度灵活性又提升了一个档次。我项目中遇到过一款旗舰SoC,用了DSU后,能效比直接提升了15%以上。
1.2 大小核架构与DSU:到底怎么分工?
大小核架构,听起来简单,但实际设计起来门道很多。
先看一张我手绘的架构图,帮你理清思路:
这张图里,DSU是大脑,负责协调所有核心。大核集群(比如Cortex-X系列)主频高、性能强,但功耗也大。小核集群(Cortex-A5xx系列)省电,适合后台任务。
我个人的习惯是,把DSU理解成一个「智能管家」。它手里握着系统缓存(L3),所有核心共享。当一个大核需要数据时,DSU会先查L3,命中就直接拿,不用去内存里翻——这能省不少电。
1.3 调度器核心目标:性能、功耗、温控的三角博弈
调度器到底在干什么?说白了就三件事:
- 性能: 该快的时候必须快,不能卡顿
- 功耗: 不该快的时候省着点,别让电池崩了
- 温控: 别让芯片烫到能煎鸡蛋
这三者是个不可能三角。你追求极致性能,功耗和温度必然飙升。你拼命降频省电,用户就会骂你手机卡成PPT。
所以调度器的核心目标,就是在这三者之间找到「动态平衡点」。
举个例子,你刷微博时,调度器会把任务扔给小核。但当你点开一个大型游戏,调度器会迅速把大核唤醒,甚至把频率拉到最高。这个过程有多快?我实测过,从检测到负载变化到完成迁移,Linux内核的调度器大概需要1-2毫秒。
- 响应延迟: 用户操作后,多久能感受到反馈
- 能效比: 每瓦功耗能产出多少性能
- 温度平滑度: 温度变化是否剧烈,会不会触发降频
你想想看,如果调度器只盯着性能,那手机就是个暖手宝。如果只盯着功耗,那手机就是个老年机。真正优秀的调度策略,是让用户「感觉不到」调度器的存在——该快时快,该省时省。
我记得有一次帮某厂商调优,他们的调度器在游戏场景下频繁触发温控降频,导致帧率像过山车。后来我改了一下负载预测算法,让调度器提前0.5秒预判升温趋势,提前降频而不是等温度爆了再降。效果立竿见影,帧率稳了,温度也没超限。
1.4 本章小结
这一章我们聊了三个核心点:
- SoC从单核演进到DSU架构,本质是性能和功耗的博弈
- 大小核分工明确,DSU是协调中枢,系统缓存是共享资源池
- 调度器的目标是在性能、功耗、温控之间找平衡,而不是追求单一极致
嗯,地基打好了。下一章我们会深入Linux内核的调度器源码,看看CFS调度器到底是怎么工作的。到时候我会带你看一段实际的代码,手把手分析调度流程。
今天就到这里。有问题随时在群里问我,我看到就会回。