
文章图片

文章图片

文章图片

点题
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进程来作为第一 。 比如浏览器 , 必须有一个最高优先级的核心进程来控制其他 , 第一个核心的负载就要很重 。
- ios16|未受到电商冲击,理发店为啥还是纷纷倒闭?过来人说出真相
- iqoo|卡贴机大降价,iPhone13只要3000出头,网友都说“真香”
- 太阳系有两个“太阳”,科学家提出“太阳伴侣”假说,它终会回来
- 苹果|抢台积电3nm产能!苹果自研处理器M2 Pro/M3齐曝光 性能更强
- |大家都说iPhone好看,其实可能对这个品牌更喜欢才对
- 苹果|618市场怎么样?手机市场销量排行一边倒?这又说明了什么?
- 苹果|前置6000万双摄+骁龙4G处理器+100W快充,华为Nova10Pro来了
- 马云|马云自己\打脸\之前所说的,如今现身西班牙,开12亿游艇!
- 为什么同学群里,很少有人说话,大部分人都选择沉默或者屏蔽?
- 三星|没有人会在意你用的是索尼A9二代还是一代,靠作品说话
