vivo x|Windows是如何利用超线程特性的
这个问题 , 取决于你所问的Windows是哪个版本?每个版本的Windows都不太一样 。
请容我慢慢道来 。
对于Windows 95 , Windows 98和Windows ME , 答案很简单:压根不会用到超线程 。 因为这些操作系统不是多处理器操作系统 。
对于Windows NT和Windows 2000来说 , 答案是:连操作系统自己都不知道有超线程这回事儿 。 为什么?这两个操作系统是在超线程发明之前编写的 。 如果你启用了处理器的超线程 , 则一块物理CPU在操作系统看来是两块独立的逻辑CPU 。 (也因此你需要为这两块CPU核心付授权费)
因为调度器(Scheduler)不会在多个虚拟CPU之间实现连接 , 所以 , 和一开始就不启用超线程相比 , 启用超线程之后的运行性能可能会更糟 。
考虑一台搭载有双超线程处理器的机器 。 这台机器上有两块物理处理器A和B , 每块物理CPU会扩展出两块虚拟CPU , 让我们将它们命名为A1 A2 B1和B2吧 。
【vivo x|Windows是如何利用超线程特性的】假设你有两项CPU密集的计算任务 。 对于Windows NT和Windows 2000调度程序而言 , 所有四个处理器都是等效的 , 操作系统会选择其中两块CPU进行计算 。 如果你不那么走运 , 它会选择A1和A2 , 从而导致一块物理CPU同时运行两项计算密集型的任务 (每个都可能以半速和四分之三速之间的速度运行) , 而另外一块物理处理器B则会空闲等待调度 。 操作系统压根就不知道可以将这两项任务分别调度到两块不同的物理处理器上 , 从而提升性能 。
Windows XP和Windows Server 2003操作系统进行了改良 , 它们都可以正确面对这种超线程特性 。
当出现上述情况时 , 调度器会知道当前处理器的虚拟化配置 , 并智能地将两项计算任务分发到不同的物理处理器上 。
请注意 , 即使使用支持超线程的处理器 , 也可能发生缓存未命中的问题 。
例如 , 如果你有四个任务 , 其中两个严重依赖L2缓存 , 而其中两个不依赖 , 你最好将每个L2密集型任务放在单独的处理器上 , 因为L2缓存是由两个虚拟处理器共享的 。 将它们放在同一个处理器上会导致大量L2缓存未命中 , 因为这两个任务会争夺L2缓存插槽 。
当你使用数据中心服务器或者企业服务器版本的Windows时 , 事情又变得棘手了 。
这个时候 , 就不是三言两语能讲明白的了 。 我建议你瞄一瞄这篇白皮书 , 以了解其中的玄机 。
总结虚拟化其实一直都在进行 , 比如 , 现在比较火热的”元宇宙” 。
这让我想起了这东西:缸中之脑 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《How does Windows exploit hyperthreading?》
相关经验推荐
- |vivoY32与vivoY55s之间,相差100元,哪款更值得入手?
- vivo NEX|vivo高端旗舰稳了,7英寸大屏+微云台2.0+骁龙8 Gen,年后发布!
- 苹果|三款高价低能手机,大家最好还是绕道行,不要上手避免交智商税
- Google|谷歌推出首批适用于Windows系统的Android游戏
- 华为鸿蒙系统|蒙系统的那些卡片功能,也就是刚面世时候的噱头,用下来用处不大
- |手机内存怎么选?64GB?128GB还是最高的512GB?
- 飞利浦·斯塔克|苹果iPhone SE3机模放出,果粉眼睛一亮:这才是梦寐以求的手机
- 小屏|小屏手机说不清哪里好,但就是大屏替代不了!
- 洗衣机|骁龙870才是“性能钢炮”,这4款价格触底,全部都是2K内
- |笔记本电脑是越好越合适,笔记本上价格是完全依靠性能来的