文章图片
文章图片
文章图片
点题
windows第一次支持多核心是XP时代 。 windowsXP不能严格的说是支持4核 , 而是支持4线程 。 不过XP出来的1999年 , 内核跟线程是绑定的 , 没有多线程的概念 。 早期OS就比如这个XP , 它的多核很简单——就是核心轮流切换 。 因为CPU率是1GHZ起步的 , 就是一秒钟运行10亿次 , 就是每个周期0.000000001秒 , 如果第一个核心运行10个周期 , 那11到20周期扔给第二个核心 , 第一个核心这时候执行别的程序 , 就这样逐渐轮流执行 , 显然会有数倍于单核执行的效率 。 现在的安卓多核切换 , AMD的自动多核也是类似机制 , 不过主要依据是核心温度高低 。 安卓还有一些多核优化是能耗指定 , 比如大小核 , 可以指定给预测功耗小的进程扔给小核运行 , 实现大幅度节能 。 记住这个点 , 后面酷睿12代处理器也采用了某些类似机制 。
理想的4核处理器调度
打开windows自带的任务管理器 , 可以看到进程的占用数值 , 比如内存CPU硬盘的工作占用率 , win10这个可视化做的很好 。 每个进程是一堆线程的集合 。 由于CPU速度太快 , 一秒钟10亿次起步 , 运行一个100%吃满单核的程序 , 在任务管理器你并不会看到每个框框100%占用然后迅速在不同核心间切换 , 而是平均负载25%这样子 。
自动多核就是看负载是不是均匀
CPU多核性能的高低 , 很大程度看L3缓存速度跟容量 。 L3共享缓存大了 , 数据指令传输速度就高 , 就算传输速度不变 , 命中率也大幅提高 , 所以一般情况下 , L3就是三级缓存是如此的重要 , 三级缓存大多核间指令切换的快自然性能就高 。 记住第二点 , 因为酷睿12代大幅增加了三级缓存 。
三级缓存的重要性
windows的内核是windowsNT , 以下简称NT 。 每个线程在NT内核中都是ETHREAD结构体 , 结构体中还存在着这样的信息:进程ID、父进程ID、进程映象名 。 windows的进程调度是一个进程控制的 , SySTem进程中就包含了这个进程 , 用户不可见也不可调用 。 巴拉巴拉这么多主要是说 , 一切软件的最后编程 , 都要做多核优化 。 如果采用windows默认方式 , NT内核会自动制定亲缘关系 , 不同的函数跟编码决定了不同优先级 , 这个效率不高比如安卓 。 而渲染 , 剪辑等针对每个像素的编程软件 , 大量工作重复度高 , 都是操作RGB值 , 所以特别容易优化多核 。
像游戏这种线程间负载不均匀 , 但是目的可控的需要一条贯通逻辑的 , 相对来说多核优化困难 。 主线程自然要负载很多 , 而其他的如何发挥 , 如何保持逻辑不干扰一直运行 , 这是个世纪难题 。 但是要手动做多线程优化 , 最主要的 , 一定要有一个main进程来作为第一 。 比如浏览器 , 必须有一个最高优先级的核心进程来控制其他 , 第一个核心的负载就要很重 。
- 台式机|重装上阵 酷睿i9-12900KS实测
- 不得不说|wifi7理论速率到底有多快?
- 自己懂,永远比听商家说可信
- CPU处理器|日本不甘落后 将联手美国开发2nm芯片工艺:赶超台积电
- CPU处理器|日本不干落后 将联手美国开发2nm芯片工艺:赶超台积电
- 天玑9000|OPPOReno7系列,对于摄影爱好者来说,诱惑力极大
- 华为|华为MateStation S上线,搭载英特尔10代处理器,套餐附带显示器!
- 格力空调怎么了?它真的销量下滑被美的空调超越了吗?用数据说话
- 酷睿处理器|苹果应用清除计划更新丨iPhone 中国销量迎来暴涨
- 餐厅食堂关闭的北京城,骑手们说了句心里话