56、计算机架构模拟中的功率、热模拟与工作负载采样

计算机架构模拟中的功率、热模拟与工作负载采样

在计算机架构设计中,准确评估处理器的性能、功率和温度等指标至关重要。随着技术的发展,对这些指标的精确量化需求日益增长,同时也需要加速模拟过程以提高设计效率。本文将介绍功率和热模拟工具,以及工作负载采样的方法。

功率和热模拟

在芯片设计中,除了关注性能模拟,准确量化功率和温度等设计指标的需求也在不断增加。因为提升性能的设计方案往往会导致更高的功耗,而且供电成本和散热解决方案的成本上升,使得功率和热约束成为重要的设计考虑因素。因此,需要准确模拟功率、热和性能之间的权衡,以做出最佳设计决策。

功率模拟工具 - Wattch

Wattch 是一种著名的架构级功率模拟工具,它基于动态功率方程 (P = \alpha CV_{dd}^2f) 进行功率建模。其中,(\alpha) 是活动因子,表示组件在周期中被切换的比例;(C) 是组件电容;(V_{dd}) 是电源电压;(f) 是频率。(V_{dd}) 和 (f) 是与工艺技术相关的参数,通常不由架构师控制,作为输入提供给模拟器。

为了简化组件电容 (C) 的计算,Wattch 将微架构块分为五类:
1. SRAM 主导的阵列结构 :如缓存、寄存器文件和指令获取队列。其电容由 SRAM 阵列中的字数、位线数、读写端口数和存储体数决定。
2. 内容可寻址内存 (CAM) 结构 :如保留站和 TLB。电容主要由 CAM 中的标签线和匹配线数量决定,与 CAM 结构的大小成正比。
3. 导线主导的结构 :如总线。电容与总线长度和总线上放置的中继器数量成正比。在微架构级别,只能获得连接两个组件的每条导线的近似长度,也可以依靠布局布线工具来测量总线长度。
4. 组合逻辑块 :如功能单元(加法器、逻辑单元、乘法器或浮点单元)。在门级设计这些功能单元以估计其功耗,然后进行布局布线以获得完整的布局和面积。分析门级设计以确定每个门的有源负载,对于驱动大有源负载的门,增大其尺寸以减少延迟瓶颈,从而降低电路的整体功耗。最后测量这些经过平衡和功率优化的 ALU 设计的电容。
5. 时钟分配基础设施 :其电容由时钟驱动器和金属线决定。

对于每一类结构,可以通过参数化结构大小来计算电容。例如,SRAM 电容可以表示为位线数 (N) 和字数 (M) 的函数。活动因子 (\alpha) 可以从性能模拟中获得,它取决于在模拟器上执行的基准测试。可以通过为结构中每个感兴趣的组件关联一个计数器,并在每次访问时递增该计数器来测量活动因子。计数器的维护粒度取决于所需的详细程度。

泄漏功率建模 - HotLeakage

虽然动态功率占电路功耗的大部分,但泄漏功率也成为一个值得关注的问题。HotLeakage 工具用于建模泄漏功率,泄漏功率与电源电压 (V_{dd})、电路中的晶体管数量 (N)、每个晶体管的泄漏电流 (I_{leak}) 以及设计特定参数 (K_{design}) 的乘积成正比。对于不使用 DVFS 或动态电路重新配置的设计,(V_{dd}) 和 (N) 在设计时是固定的;而对于使用 DVFS 等技术的设计,(V_{dd}) 和 (N) 可能会发生变化。(I_{leak}) 和 (K_{design}) 参数取决于电路的实现和操作条件(如阈值电压、电源电压和温度),HotLeakage 使用电路模拟工具(如 Berkeley Spice Simulation)中的方法来考虑这些参数对各种操作条件的依赖性,并在运行时测量操作条件以计算这两个因素。

温度建模 - HotSpot

HotSpot 是一个用于在设计中建模温度的工具,它以设计布局为输入。设计布局指定了各种电路块以及这些块之间的连接性,块可以在不同的粒度级别上指定。HotSpot 将每个块规范转换为简单的集总 RC 模型,处理器设计中的每个块与相邻块的连接建模为电阻,块之间的连接性用于创建整个设计的 RC 网络模型。此外,HotSpot 还对通常堆叠在处理器顶部以降低温度的散热器和散热片进行建模,将它们视为集总 RC 模型并堆叠在底层设计的 RC 网络之上。每个处理器设计块与垂直层(散热器或散热片)的连接建模为热阻,整个 RC 模型称为紧凑热模型 (CTM)。通过模拟处理器设计测量每个块中的电流流动,然后使用 CTM 求解底层 RC 网络的温度。

以下是功率和热模拟工具的总结表格:
| 工具名称 | 功能 | 输入参数 | 关键计算因素 |
| ---- | ---- | ---- | ---- |
| Wattch | 架构级功率模拟 | (V_{dd})、(f)、结构大小参数 | (\alpha)、(C) |
| HotLeakage | 泄漏功率建模 | (V_{dd})、(N)、操作条件 | (I_{leak})、(K_{design}) |
| HotSpot | 温度建模 | 设计布局 | 电流流动 |

工作负载采样

计算机架构师严重依赖模拟来评估未来处理器的性能,因此加速模拟至关重要。除了并行模拟外,工作负载采样是另一种加速模拟的方法。在采样方法中,模拟线程只模拟目标机器上工作负载执行的一部分(或样本),然后从样本运行的测量值外推整体性能指标。为了使模拟结果可信,样本运行的模拟必须代表整个工作负载的执行。

简单工作负载采样

最简单的工作负载采样形式是根据设计师可承受的模拟时间模拟固定数量的指令。例如,如果模拟器每分钟可以模拟目标架构的一百万条指令,设计师可以在约 17 小时内模拟十亿条指令。如果整个基准测试执行一百亿条指令,一种简单策略是模拟基准测试的前十亿条指令。由于只采样了 10% 的指令,模拟时间大约加速了 10 倍。如果在样本运行期间发生了一千万次缓存未命中,设计师可以推断整个基准测试执行期间会发生一亿次缓存未命中。但这种方法假设采样窗口外的缓存未命中率保持不变,这可能不太可靠。

大多数基准测试在初始执行阶段用于读取输入并将其转换为适合计算的格式,因此如果目标是测量 CPU 和内存系统性能,最好跳过程序的初始执行阶段。可以基于设计师对基准测试的了解,为每个基准测试跳过不同数量的指令。大多数模拟器支持功能模拟模式和详细微架构模拟模式,功能模拟只跟踪每条指令执行后的架构状态变化,运行速度比详细模拟快得多;详细模拟则模拟整个微架构状态。为了跳过基准测试的初始阶段,模拟从快速功能模式开始,然后以较低的模拟速度进行样本的详细微架构模拟。

然而,这种简单采样方法的问题是,从样本运行外推的结果可能无法准确反映整个基准测试的行为,因为样本选择有些随意,一些与指标相关的重要执行事件可能发生在采样窗口之外,导致得出不准确的结论。

采样微架构模拟 - SMARTS

为了提高样本质量和模拟结果的准确性,可以采用基于推断统计的系统随机采样方法,也称为均匀采样。采样微架构模拟 (SMARTS) 的目标是在整个程序执行过程中选择样本数量和每个样本的大小,以满足用户指定的置信区间。

SMARTS 首先在功能模式下运行模拟,直到到达第一个采样点,然后切换到详细模拟进行样本模拟,之后再切换回功能模式直到到达下一个模拟点。根据经验研究,SMARTS 建议在每个详细采样窗口使用 1000 条指令。它根据感兴趣指标的方差确定采样率,以达到给定的置信区间。例如,如果关注的指标是 CPI,SMARTS 执行前 1000 条指令来测量该采样窗口内的 CPI 方差,测量得到的 CPI 方差决定了达到用户指定置信区间所需的样本数量。

由于处理器中的一些结构较大,其状态对感兴趣的指标有显著影响,因此在使用仅 1000 条指令的采样窗口进行均匀采样时,如果在每个采样窗口开始前微架构结构未正确填充,测量的性能指标将不准确。例如,分支预测的准确性会影响采样窗口内的 CPI,而分支预测准确性取决于在采样窗口开始前预测器结构捕获分支历史的程度。因此,系统采样方法不能仅仅依赖于功能模拟和详细模拟之间的切换,而需要在每个样本之前的预热窗口中模拟包含大量状态的微架构缓冲区。在预热模式下,不模拟小的微架构缓冲区,以提高模拟速度。

预热窗口的长度是采样方法中的一个新参数,理想情况下,其长度应根据要预热的每个微架构结构的大小而有所不同。对于分支预测器,预热窗口可能需要数万条指令;对于缓存,可能需要数百万条指令;对于大型末级缓存,甚至可能需要在整个基准测试运行期间进行预热。设计师必须权衡准确性和模拟速度来决定预热参数。SMARTS 建议采用两级预热:缓存预热最多 500,000 条指令,然后对所有其他微架构结构进行最多 4000 条指令的详细预热,接着进行 1000 条指令的采样窗口,在此期间实际测量性能指标。

以下是 SMARTS 采样过程的 mermaid 流程图:

graph TD;
    A[开始功能模拟] --> B{到达采样点?};
    B -- 是 --> C[切换到详细模拟];
    C --> D[执行 1000 条指令采样];
    D --> E[切换回功能模拟];
    E --> B;
    B -- 否 --> F[继续功能模拟];
    F --> B;

综上所述,功率和热模拟工具以及工作负载采样方法在计算机架构设计中起着重要作用。通过准确模拟功率和温度,以及采用有效的工作负载采样方法,可以在提高设计效率的同时,确保设计的准确性和可靠性。在后续内容中,我们将继续介绍另一种工作负载采样方法 - SimPoint。

计算机架构模拟中的功率、热模拟与工作负载采样(续)

工作负载采样 - SimPoint

除了前面介绍的采样方法,还有一种基于程序特征的采样窗口选择方法。在典型的计算机架构模拟中,许多基准测试会使用相同的输入集,但针对不同的目标架构配置重复运行。在每次基准测试运行期间,一组基本块会一起执行,并且基本块的执行模式会频繁重复。因此,可以将整个程序执行聚类为几个阶段,这些阶段在执行过程中的不同时间重复出现。根据阶段的重复次数,可以对整个程序执行进行聚类,并识别出主要的执行阶段。然后选择一个主要阶段或一组最主要的阶段作为样本。与其他采样方法一样,模拟在功能模拟模式和详细模拟模式之间切换,以快速前进到阶段开始并在阶段内进行详细模拟。

SimPoint 是使用基于阶段分析加速模拟的最流行工具。它通过基本块向量来识别和聚类阶段。在 SimPoint 中,程序中的每个基本块都被赋予一个唯一的标识符或基本块编号。程序执行被划分为 1 亿条指令的窗口。在每个窗口期间,将每个基本块的执行次数收集到一个称为基本块向量 (BBV) 的向量中,该向量为程序中的每个基本块都有一个分量。BBV 并不精确捕获基本块的执行顺序,而是捕获每个基本块在 1 亿条指令窗口内的总执行次数。

SimPoint 的工作步骤如下:
1. 计算 BBV 之间的相似度 :可以使用欧几里得距离或曼哈顿距离来估计两个 BBV 之间的相似度。在极端情况下,如果两个对应窗口内每个基本块的执行次数都相同,则两个 BBV 相同,但在实际中很少出现多个 BBV 具有完全相同计数的情况。
2. 使用 k - 均值聚类对 BBV 进行分类 :k - 均值聚类是一种模式分类方法,使用两步迭代过程对 BBV 进行聚类。
- 第一步 :随机选择 k 个点作为每个聚类的中心。
- 第二步 :计算每个 BBV 到聚类中心的距离,并根据距离度量将 BBV 放入中心最接近的聚类中。然后重新计算每个聚类的中心。

以下是 SimPoint 工作流程的总结表格:
| 步骤 | 操作 | 说明 |
| ---- | ---- | ---- |
| 1 | 划分程序执行窗口 | 将程序执行划分为 1 亿条指令的窗口 |
| 2 | 收集 BBV | 每个窗口内收集每个基本块的执行次数到 BBV 中 |
| 3 | 计算相似度 | 使用欧几里得或曼哈顿距离计算 BBV 之间的相似度 |
| 4 | k - 均值聚类 | 随机选择 k 个聚类中心,将 BBV 分配到最近的聚类,并更新聚类中心 |

不同工作负载采样方法对比

为了更清晰地了解各种工作负载采样方法的特点,下面对简单工作负载采样、SMARTS 和 SimPoint 进行对比:
| 方法 | 优点 | 缺点 | 适用场景 |
| ---- | ---- | ---- | ---- |
| 简单工作负载采样 | 实现简单,能快速加速模拟 | 样本选择随意,结果可能不准确 | 对模拟速度要求高,对结果准确性要求相对较低的初步评估 |
| SMARTS | 基于统计方法,能根据置信区间调整采样,考虑微架构状态 | 需要确定预热窗口长度,增加了复杂度 | 对结果准确性有一定要求,关注微架构性能指标的情况 |
| SimPoint | 基于程序阶段特征,样本更具代表性 | 计算 BBV 和聚类过程较复杂 | 程序执行具有明显阶段特征,需要准确评估不同阶段性能的场景 |

总结

在计算机架构设计中,功率和热模拟以及工作负载采样是非常重要的技术。功率模拟工具如 Wattch 和 HotLeakage 帮助我们准确量化电路的动态功率和泄漏功率,HotSpot 则用于模拟温度,这些工具对于平衡性能、功率和热约束至关重要。工作负载采样方法如简单工作负载采样、SMARTS 和 SimPoint 则提供了不同的策略来加速模拟,同时尽量保证模拟结果的准确性。

设计师可以根据具体的设计目标和需求选择合适的工具和方法。例如,如果关注快速获得初步结果,可以选择简单工作负载采样;如果需要更准确的微架构性能评估,可以使用 SMARTS;而对于具有明显阶段特征的程序,SimPoint 可能是更好的选择。通过合理运用这些工具和方法,可以提高设计效率,降低设计成本,并确保最终设计的质量和可靠性。

未来,随着计算机架构的不断发展,这些工具和方法也可能会不断改进和完善。例如,功率和热模拟工具可能会更精确地考虑新的工艺技术和电路设计;工作负载采样方法可能会结合更多的机器学习和数据分析技术,以提高样本的代表性和模拟结果的准确性。

以下是整个模拟过程的 mermaid 流程图,涵盖了功率和热模拟以及工作负载采样:

graph LR;
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始模拟]):::startend --> B{选择模拟类型}:::decision;
    B -->|功率和热模拟| C(功率模拟 - Wattch):::process;
    C --> D(泄漏功率建模 - HotLeakage):::process;
    D --> E(温度建模 - HotSpot):::process;
    B -->|工作负载采样| F{选择采样方法}:::decision;
    F -->|简单工作负载采样| G(模拟固定指令数):::process;
    F -->|SMARTS| H(功能模式到采样点):::process;
    H --> I(详细模拟 1000 条指令):::process;
    F -->|SimPoint| J(划分窗口收集 BBV):::process;
    J --> K(计算相似度):::process;
    K --> L(k - 均值聚类):::process;
    E --> M([结束功率和热模拟]):::startend;
    G --> N([结束简单采样模拟]):::startend;
    I --> O([结束 SMARTS 模拟]):::startend;
    L --> P([结束 SimPoint 模拟]):::startend;

通过以上的工具和方法,计算机架构师能够在设计过程中更好地评估和优化处理器的性能、功率和温度等关键指标,从而推动计算机技术的不断进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值