win7纯净版 Win10纯净版 Win8系统 最新win10下载 Win10 21h1 Win11 22H2 win10激活

您当前所在位置:首页 > 系统教程 > win10教程

       

Windows如何使用多个CPU内核?

时间:2021-02-23 08:01:12     来源:系统堂     游览量:

  Windows(也许是所有操作系统)如何利用多核?或者,如果此功能内置于硬件中,则内核如何知道要执行哪些应用程序?何时执行?我认为更多的核心会更好,但是这究竟如何工作?还有一种方法可以配置应用程序/ Windows以更好地利用更多的内核?

  当您打开PC时,甚至在OS加载完成之前,您的CPU和主板就“握手”了,因为缺少更好的术语。您的CPU将有关其自身操作特性的某些信息传递到主板UEFI,然后由该信息初始化主板并引导系统。如果UEFI无法正确识别您的CPU,则主板通常无法启动。CPU核心数是报告给UEFI和操作系统的特征之一。

  操作系统的关键组件之一称为调度程序。调度程序由OS用来将工作分配给资源(例如CPU和GPU)的任何方法组成,然后完成该工作。工作的“单元”(由OS调度程序管理的最小工作块)称为线程。如果要进行类比,可以将线程与装配线上的一个步骤进行比较。在线程之上一步,我们进行了处理。进程是在一个或多个线程中执行的计算机程序。在这种简化的工厂类比中,过程是制造产品的整个过程,而线程是每个单独的任务。

Windows如何使用多个CPU内核?

  问题:CPU一次只能执行一个线程。每个进程至少需要一个线程。我们如何提高计算机性能?

  解决方案:加快CPU时钟速度。

  几十年来,Dennard Scaling一直是礼物。摩尔定律宣布,我们可以将晶体管封装在越来越小的空间中,但是Dennard Scaling可以使晶体管在较低的电压下达到越来越高的时钟速度。

  如果计算机运行速度足够快,则它一次不能处理多个线程的问题就少得多了。虽然有一系列独特的问题无法在比经典计算机上预期的宇宙寿命更短的时间内计算出,但是有很多很多问题可以用这种方式计算出来。

  随着计算机变得越来越快,开发人员创建了更加复杂的软件。多线程的最简单形式是粗粒度多线程,其中操作系统切换到不同的线程,而不是闲坐着等待计算结果。这在1980年代变得很重要,当时CPU和RAM时钟开始分离,内存速度和带宽的增长都比CPU时钟速度慢得多。缓存的出现意味着CPU可以在附近保留少量指令集,以便立即进行数字运算,而多线程确保了CPU总是有事要做。

  重点:到目前为止,我们讨论的所有内容都适用于单核CPU。今天,术语多线程和多处理通常被通俗地用来表示同一件事,但并非总是如此。对称多处理和对称多线程是两件事。简而言之:

  SMT =通过调度可以使用第一个线程当前未使用的执行单元的第二个线程,CPU可以同时执行多个线程。英特尔称其为超线程技术,AMD称其为SMT。当前,AMD和英特尔都使用SMT来提高CPU性能。两家公司都曾在战略上对其进行过战略性部署,仅在某些产品上提供它,而在其他产品上不提供。如今,两家公司的大多数CPU都提供SMT。在消费类系统中,这意味着您支持CPU核心数量* 2个线程,例如8C / 16T。

  SMP =对称多处理。该CPU包含多个CPU内核(或正在使用多插槽主板)。每个CPU内核仅执行一个线程。每个时钟周期可以执行的线程数受限于您拥有的内核数。编写为6C / 6T。

Windows如何使用多个CPU内核?

  通常,超线程对英特尔芯片是有利的。

  主流单核上下文中的多线程曾经用来表示“ CPU可以在线程之间切换的速度有多快”,而不是“ CPU可以同时执行多个线程吗?”

  “您的操作系统能否一次运行多个应用程序而不会崩溃?” 也是经常提出的要求。

  工作负载优化和操作系统

  包括20年前制造的x86芯片在内的现代CPU实现了所谓的乱序执行(OoOE)。所有现代高性能CPU内核,包括big.Little中的“大”智能手机内核,都是OoOE设计。这些CPU实时重新排序它们接收的指令,以实现最佳执行。

  CPU执行OS分发给它的代码,但是OS与指令流的实际执行没有任何关系。这由CPU内部处理。现代的x86 CPU都对接收到的指令进行重新排序,并将这些x86指令转换为更小的,类似RISC的微操作。OoOE的发明帮助工程师在不完全依赖开发人员编写完美代码的情况下保证了一定的性能水平。即使在单核环境中,允许CPU重新排序其自己的指令也有助于多线程性能。请记住,即使我们不知道,CPU也会在任务之间不断切换。

  但是,CPU不会自己执行任何调度。这完全取决于操作系统。多线程CPU的出现并没有改变这一点。当第一个消费级双处理器板(ABIT BP6)问世时,可能的多核发烧友必须运行Windows NT或Windows2000。Win9X系列不支持多核处理。

  为了支持跨多个CPU内核的执行,操作系统需要执行所有相同的内存管理和资源分配任务,以防止不同的应用程序崩溃,同时还需要附加的保护带以防止CPU相互干扰。

  现代的多核CPU没有“主调度器单元”,该“主调度器单元”将工作分配给每个核或以其他方式分配工作负荷。那就是操作系统的角色。

  您可以手动配置Windows以更好地利用内核吗?

  作为一般规则,不可以。在少数特定情况下,需要更新Windows才能利用新CPU内置的功能,但这始终是Microsoft必须自己执行的工作。

  这项政策的例外情况很少且相差甚远,但也有一些例外情况:

  新的CPU有时需要操作系统更新,以便操作系统充分利用硬件的功能。在这种情况下,实际上没有手动选项,除非您的意思是手动安装更新。

  AMD 2990WX是该策略的例外。在Windows下,CPU的性能相当差,因为Microsoft并未考虑存在一个具有多个NUMA节点的CPU,并且它不能很好地利用2990WX的资源。在某些情况下,已展示了通过手动线程分配来提高2990WX性能的方法,尽管我坦率地建议您(如果您拥有Linux)切换到Linux,只是为了使此问题大为放心。

  3990X是一个更加理论上的异常值。由于Windows 10将处理器组限制为64个线程,因此除非应用程序实现自定义调度程序,否则您不能将3990X的执行资源的50%以上分配给单个工作负载。这就是为什么3990X并非真正推荐用于大多数应用程序的原因-它最适合采用此步骤的渲染器和其他专业应用程序。

  在核心数量最高的系统之外,由于Microsoft尚未针对这些用例进行真正的优化,因此某些手动调整在理论上可以提高性能,不,您无法采取任何措施来真正优化Windows分配工作负载的方式。老实说,您真的不希望那样。最终用户不必担心手动分配线程以获得最佳性能,因为最佳配置将根据在任何给定时刻CPU正在处理的任务而改变。CPU和OS设计的长期趋势是朝着CPU与操作系统之间更紧密的合作迈进,以便更好地促进电源管理和Turbo模式。本文来源于Win10下载官网,转载请注明来源与出处。

上一篇:如何卸载Windows10 21H1版本
下一篇:win10专业版按需触发BSoD蓝屏死机教程