话说,微软的大小核概念是好设计还是坏设计?

2023-06-23 21:08:01 +08:00
 LeeReamond

姑且不论目前产品如何,想知道在理想状态下大小核前景如何,是未来发展方向 or 是依托答辩?

我个人比较好奇的点是,在传统计组工作原理的整个流程中,具体到指令集和 pipeline 的层面,CPU 是如何选择哪段用户代码在哪个核心上执行的?会产生什么优势吗?

7994 次点击
所在节点    程序员
55 条回复
shutongxinq
2023-06-24 00:04:02 +08:00
@tool2d 同样成本,大小核提供相同的单核性能和更强得多的多核性能
cnbatch
2023-06-24 00:05:02 +08:00
如果是指 Intel 的大小核,那么在我看来,目前的大小核处理方式实在不怎么好。无论 Windows 还是 Linux 。
Windows 有目共睹,Win10 的大小核调度实在非常差(微调电源管理设置项可以解决,比较麻烦),Win11 才优化了不少。
至于 Linux ,优化适配 Path 一次又一次地更新,反正还没稳定下来。

看起来,x86 的大小核调度并不能照抄 ARM 的方式。


不过我觉得有一项功能很适合大小核调度。

Intel 前一段时间公布了纯 64 位架构的“x86s”,意思就是不再启动到 32 位模式,但 64 位环境仍然可以兼容运行 32 位程序。

如果 Intel 愿意更进一步,大核完全纯 64 位(不运行 32 位程序),小核专门运行纯 32 位程序,就如同 ARM 的做法一样。这样的玩法确实很适合大小核。
leoleoasd
2023-06-24 00:06:21 +08:00
> 具体到指令集和 pipeline 的层面,CPU 是如何选择哪段用户代码在哪个核心上执行的?会产生什么优势吗?
CPU 不选择,是 操作系统的调度器决定的
所以确实应该骂微软
agagega
2023-06-24 00:18:13 +08:00
没有用过 Intel 的大小核 CPU ,只是在网上听说 Windows 调度的逻辑是简单的前台大核后台小核。如果真的是这样那也太 naive 了,不清楚微软是不是有什么历史包袱。至少 Apple Silicon 在 macOS 的调度比这个强(除了基于 QoS 还有啥?),另外也好奇 Asahi Linux 是怎么调度的
mmdsun
2023-06-24 00:19:49 +08:00
@flyqie
@junkun
“一核有难,多核围观”。这种最早就是手机上,安卓系统上的高通、联发科 CPU 搞出来的垃圾调度。
相反,CPU 调度 Win 到没啥遗留问题。虽然 PC 大小核还没多久,但 Wintel 联盟明显比早些年前安卓高通或者联发科好多了。Intel 上来就出了 Intel Thread Director 来和 Win 配合。微软 Win11 还对大小核有特别的优化还有机器学习等智能调度的加持。

chevalier
2023-06-24 00:24:19 +08:00
Intel 被 AMD 摩擦,但是自身单 Ring 设计又不能像 AMD 那样堆高频大核心,迫不得已联合微软搞出来了大小核,为了就是重夺跑分冠军

Intel 的服务器 U 就没有大小核
mmdsun
2023-06-24 00:36:42 +08:00
PC 上,英特尔 CPU 是由 Intel Thread Director ( ITD )将负载信息反馈给操作系统,后者决定给予哪个核心来执行。ITD 和操作系统配合识别一些高负载的指令,如果有会立即将其分配给大核,同时将部分默认负载转移到小核,来减轻大核压力。另外,Win11 会使用机器学习等 AI 算法来智能调度。目前可供参考的外部文档不是很多。

https://www.intel.com/content/dam/develop/external/us/en/documents-tps/348851-optimizing-x86-hybrid-cpus.pdf


CPU 的指令集和流水线设计会影响操作系统的调度决策,但是决定哪段用户代码在哪个核心上执行的最终决定是由操作系统的调度器来做的。根据安卓调配大小和的经验,至少要过个一年半载,大小核才能优化好。
wowodavid
2023-06-24 00:58:48 +08:00
intel 的大小核,主要还是缓存设计的问题,强行上核心,缓存的成本太高了;再不上核心,距离 amd 越来越远了(在单核 ipc 无法进步的时代,核心才代表了生产力)
yyfearth
2023-06-24 01:46:56 +08:00
@chevalier 服务器要要啥大小核 可以理解成全部是大核 或者全部是小核
实在需要做 offload 就加 IPU 之类的辅助芯片就是
bnull
2023-06-24 01:56:43 +08:00
@yyfearth 下一代设计就是有全大核和全小核的两种服务器 u
wwbfred
2023-06-24 06:05:07 +08:00
从应用开发者的角度来说,这应该和全大核没有区别,要是留个接口选大小核那可就太操蛋了。
写操作系统和内核的应该会很蛋疼,本来跑得好好的,现在代码都得改,日。
INTEL 应该很开心,毕竟换条跑到就又可以和 AMD 一战了。
kawaiidora
2023-06-24 07:27:26 +08:00
英特尔出大小核是因为核心数量和多核性能干不过 AMD ,所谓的权宜之计。手机的调度做起来简单,前台大核后台小核就完事了,PC 的场景更加复杂,理论上让性能需求不同的应用或线程跑在不同的核心,当然是好的,但实际上软件不愿意跟进,推广的阻力更大,目前体验较差
opengps
2023-06-24 08:36:30 +08:00
既要续航又要性能,大小核是个更廉价解决方案
opengps
2023-06-24 08:37:57 +08:00
@bnull 服务器重视计算,没有续航问题需要兼顾,在解决小核不支持浮点加速功能之前估计一时半会不会给服务器 U 设计大小核
Donahue
2023-06-24 08:43:47 +08:00
@opengps 但好像最近的 amd 笔记本续航也不错了
Songxwn
2023-06-24 09:24:21 +08:00
在笔记本是好设计,在桌面台式机没任何必要
leonshaw
2023-06-24 09:33:57 +08:00
答辩,既要省成本又要跑分,牺牲了软件复杂度和用户体验。要低功耗降频或者关核就行了。
Donduck
2023-06-24 09:56:25 +08:00
@agagega #24 Windows 当然有 QoS ,还可以手动部署不同 QoS level 的电源设置
https://learn.microsoft.com/en-us/windows/win32/procthread/quality-of-service
LeeReamond
2023-06-24 10:07:25 +08:00
@mmdsun 感谢回复,目前你提供的信息最多。我感觉用 AI 辅助判断调度挺矛盾的,机器学习算法本身就是比较耗算力的行为,很可能入不敷出,也许以后 CPU 都要另外嵌入一些矩阵推断芯片。。。按照你的说法现在的英特尔实际上做的就是单独烧录了一个单元,用来以线程为单位分析负载,必要时发送中断,然后操作系统再调用接口做大小核线程切换这样。我感觉这个概念似乎并没有什么美感,本身硬件烧录很难做得智能,核心切换本身又只能依赖三缓,感觉开销很大啊。。。
Donduck
2023-06-24 10:15:29 +08:00
@LeeReamond #39 并没有 AI 判断,英特尔的说法是算法预先使用机械学习生成,出厂时就完全固定了算法,并不存在使用中学习

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX