win(也许是所有操作系统)怎么利用多核?或者,如果此功能内置于硬件中,则内核怎么了解要执行哪些应用程序?何时执行?我认为众多的核心会更好,但是这究竟怎么工作?还有一种办法可以设置应用程序/ win以更好地利用众多的内核?
当你打开pC时,甚至在os加载完成之前,你的Cpu和主板就“握手”了,因为缺少更好的术语。你的Cpu将有关其自身操作特性的某些信息传递到主板uEFi,然后由该信息初始化主板并引导系统。如果uEFi无法正确识别你的Cpu,则主板通常无法启动。Cpu核心数是报告给uEFi和操作系统的特征之一。
操作系统的关键组件之一称为调度程序。调度程序由os用来将工作分配给资源(例如Cpu和Gpu)的任何办法组成,然后完成该工作。工作的“单元”(由os调度程序管理的最小工作块)称为线程。如果要进行类比,可以将线程与装配线上的一个步骤进行比较。在线程之上一步,你们进行了解决。进程是在一个或多个线程中执行的计算机程序。在这种简化的工厂类比中,过程是制造产品的整个过程,而线程是每个单独的任务。
问题: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。
通常,超线程对英特尔芯片是有利的。
主流单核上下文中的多线程曾经用来表示“ 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)问世时,或许的多核发烧友必须运行win nT或win2000。win9x系列不支持多核解决。
为了支持跨多个Cpu内核的执行,操作系统需要执行所有相同的内存管理和资源分配任务,以防止不同的应用程序崩溃,同时还需要附加的保护带以防止Cpu相互干扰。
现代的多核Cpu没有“主调度器单元”,该“主调度器单元”将工作分配给每个核或以其他方式分配工作负荷。那便是操作系统的角色。
你可以手动设置win以更好地利用内核吗?
作为一般规则,不可以。在少数特定处境下,需要升级win才能利用新Cpu内置的功能,但这始终是Microsoft必须自己执行的工作。
这项政策的例外处境很少且相差甚远,但也有一些例外处境:
新的Cpu有时需要操作系统升级,以便操作系统充分利用硬件的功能。在这种处境下,实际上没有手动选项,除非你的意思是手动安装升级。
AMd 2990wx是该策略的例外。在win下,Cpu的性能相当差,因为Microsoft并未考虑存在一个具有多个nuMA节点的Cpu,并且它不能很好地利用2990wx的资源。在某些处境下,已展示了通过手动线程分配来提高2990wx性能的办法,尽管我坦率地建议你(如果你拥有Linux)切换到Linux,只是为了使此问题大为放心。
3990x是一个更加理论上的异常值。由于win 7将解决器组限制为64个线程,因此除非应用程序实现自定义调度程序,否则你不能将3990x的执行资源的50%上述分配给单个工作负载。这便是为何3990x并非真正推选用于大多数应用程序的原因-它最适合采用此步骤的渲染器和其他独立应用程序。
在核心数量最高的系统之外,由于Microsoft尚未针对这些用例进行真正的优化,因此某些手动调整在理论上可以提高性能,不,你无法采取任何措施来真正优化win分配工作负载的方式。老实说,你真的不但愿那样。最终用户不必忧郁手动分配线程以获得最好性能,因为最好设置将根据在任何给定时刻Cpu正在解决的任务而改变。Cpu和os设计的长期趋势是朝着Cpu与操作系统之间更紧密的合作迈进,以便更好地促进电源管理和Turbo模式。本文来源于win7下载官网,转载请注明来源与出处。
本站发布的系统与软件仅为个人学习测试使用,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
Copyright @ 2022 大师系统版权所有