Alder Lake 是一种新的性能混合架构,其结合了两种处理核心类型:性能核心(Performance-cores,P核(P-cores),采用 Golden Cove 微架构)和效能核心(Efficient-cores,E核(E-cores),采用 Gracemont 微架构)。本游戏开发指南面向游戏开发人员,并提供架构简介和最佳实践以便于充分利用 Alder Lake 性能混合架构对游戏进行优化。
示例应用及源代码可在 GitHub* 上查看。
简介
现代 CPU 体系结构经历了数十年的发展,沉淀了诸多经验和知识,而且还在不断改进。CPU 已经从包含数万个晶体管的简单的单核硅片发展到包含数十亿个晶体管的多核、多用途系统。现在,英特尔推出了代号为 Alder Lake(ADL) 的最新 CPU 架构。个人电脑的 CPU 将首次使用混合核心——即“性能核心”和“效能核心”的组合。这种组合让开发人员能够利用高性能和高效能的多核 CPU 来处理现代工作负载,这其中就包括计算机游戏。
开发人员可能已经对混合架构比较熟悉了,比如已经在移动设备行业中使用多年的注重性能的“性能核心”(P核)与注重能效比的“效能核心”(E核)。现在,这些核心各自的优点将适用于台式计算机和笔记本电脑,但有个显著的不同之处:E核还会作为P核的补充:E核会协同P核提供显著更多的多线程吞吐量,在给定的功率范围内提供最佳的整体性能。
这一重大的体系结构变化,意味着开发人员需要了解特性,添加新的设计目标,并围绕最佳实践做出关键决策,以创建利用所有可用性能和特性的高效软件。对于在混合架构处理器上运行的应用程序而言,正确检测 CPU 的结构(Topology)对获得最佳性能和兼容性至关重要。之前代码中关于物理和逻辑处理器之间超线程关系的假设可能不再适用,如果不重构这些代码,可能会导致严重的系统问题。开发人员应该充分枚举系统中可用的逻辑处理器,以优化能耗和性能。
本文档将提供相关体系结构信息、编程范例、检测以及优化策略和示例。
架构总览
本节包括有关部分 Alder Lake 处理器中使用的性能混合体系结构的信息。
结构(Topology)
Alder Lake 性能混合体系结构在单个硅芯片中结合了注重性能的“性能核心”(Performance-cores,P核(P-cores),采用 Golden Cove 微架构)与注重能效比的“效能核心”(Efficient-cores,E核(E-cores),采用 Gracemont 微架构)。在结构(Topology)上,每个具有 L2$ 的P核会连接到 L3$(LLC)。每个E核模块则含有4个 Gracemont 核心,这4个核心共享 L2$。E核集群连接到与P核共享的 L3$。所有内核都作为单独的逻辑处理器暴露给操作系统。
图 1:P核和E核具有独立的 L1 和 L2 缓存,因此它们可以在很大程度上独立于彼此运行。L3(LLC) 缓存是共享的。
指令集
为了简化编程模型并提供灵活性,Intel 在指令集级上做出了以下设计决定:
- 所有类型的核心都使用相同的指令集。
- AVX512 在P核上禁用,在E核上不可用。
表1:特定的 Golden Cove(P核)特性以扩展的形式被添加到两种核心中。
Golden Cove 特性 | Alder Lake |
---|---|
AVX512 | 在P核中禁用,在E核上不可用 |
TSX | 在P核和E核中禁用 |
AVX-VNNI(向量神经网络指令) | 借助对称ISA加入 |
vAES(高级加密标准) | 借助对称ISA提供(也在 Ice Lake 和 Tiger Lake 中提供) |
vCLMUL(无进位乘法) | 借助对称ISA加入 |
UMWAIT/TPAUSE | 借助对称ISA加入 |
针对性能混合体系结构设计的 Intel® 硬件线程调度器和操作系统供应商(OSV)优化
Intel® 硬件线程调度器(Intel® Thread Director, ITD)建立在 Lakefield 硬件指导调度(Hardware Guided Scheduling, HGS)支持之上。它为操作系统提供指令集体系结构(Instruction Set Architecture, ISA)感知,以指示性能核心和效能核心之间的性能差异(以及能耗变化)。这种感知使得ITD能够将线程调度到最适合执行该任务的核心上。
图2:硬件、操作系统(OS)调度器和任务调度器(Task Scheduler, TS)计数器之间的调度器交互
注意
● Per Class ID and Perf Capabilities provide relative performance levels of LP Performance-cores vs. Efficient-cores. Higher values here indicate higher performance.
● Per Class ID, EE Capability provides the relative energy efficiency level of an LP. Higher values here indicate higher EE to be used for threads with energy efficiency needs.
● The OS can choose between EE and performance, depending on parameters such as power policy, battery slider, etc.