英特尔刚刚发布了Alder Lake的开发人员指南,其中有12代酷睿正式上市前最官方的信息。虽然这份指南主要是面向希望为Windows 11进行优化的软件开发者,但也解答了很多玩家们关心的问题。
酷睿i5具有的功能,i9居然不支持?
英特尔在文件中正式确认Alder Lake将在2021年第四季度上市。Alder Lake将一统桌面、笔记本、超极本和二合一平板电脑设备,终结10代和11代酷睿中桌面和移动平台割裂的局面。移动版P系列将整合过去的U系列和H系列,最高14核心20线程,核显具备最多96EU;桌面版S系列最高16核心24线程,核显具备最多32EU。性能核与能效核支持相同的指令集(性能核中的AVX512被禁用)。
上图中的C代表Cypress Cove架构的性能核、A代表Gracemont架构的能效核。桌面版会有部分型号只提供性能核而没有能效核,其中应该有酷睿i5-12400和酷睿i5-12600这两款型号。按照开发人员指南中的内容,性能核中AVX512功能是可以在禁用能效核的时候启用的,也就是说上述两款i5处理器天生就具备i7和i9默认状态下无法提供的功能。
不过据最新的爆料称,指南中提到的解放性能核AVX512指令集方法最终有可能被禁用。或许i5比i9在某方面更强本身就是难以被接受的……
混合架构下的线程调度:
性能核与能效核之间的差异使得Alder Lake需要更复杂的线程调度体系,软件性能优化面临着新的挑战。对于Windows操作系统而言,Alder Lake上的调度程序目标是优先使用性能最高的性能核、溢出的线程使用能效核,更多的线程使用性能核中的超线程核心,这只是大的原则方向。
根据英特尔给出的示意图,每个性能核都具备各自的L1和L2缓存,每个能效核具备各自的L1缓存并共享L2缓存,性能核同能效核之间的通信需要通过共享的L3缓存进行。为了减少性能开销,应尽可能避免线程在性能核与能效核之间切换。
AlderLake内的ITD线程调度器可以为操作系统提供指令集架构感知,指示性能核和能效核之间的差异,以便为合理地为线程分配核心。对于没有针对Alder Lake进行优化的应用程序,Windows 11可以根据ITD的反馈来智能调度线程,动态分配工作负载。这种自动分配通常可以提供更高的性能,但却并不总是合理:一些非关键任务可能被分配给性能核、而一些关键路径任务则有可能被分配至能效核。
应用程序可以通过线程优先级和线程亲和度来影响分配。在必要的情况下,应用程序甚至可以通过SetThreadAffinityMask()来实现线程与核心的强关联,不过英特尔并不建议这样做。
英特尔希望软件开发人员重新设计底层线程算法以实现跨线程的动态负载平衡,而不是在应用程序内尝试控制操作系统的调度行为。理想的优化方式是应用程序应创建两个线程池,优先线程池包含应用主线程、渲染线程等需要性能核处理的任务,次要线程池包括后台任务等适于能效核处理的线程。要完整发挥出AlderLake混合架构的优势,看起来程序猿们非下一番功夫不可。
英特尔12代酷睿现在还面临一些底层软件的兼容性问题,譬如很多游戏中使用的D加密以及同类DRM软件当前就和12代酷睿不兼容。对于较新的游戏来说通常只需等待游戏制作厂商的一个补丁应该就能解决兼容问题,但玩家手中那些比较老的游戏恐怕就没有同等机会了。