gem5 documentation
Development
Building
Using KVM
Sphinx Documentation
Doxygen
gem5 APIs
Full System
Checkpoints
Directed Testers
Debugging
Architecture Support
Power and Thermal Model
Compiling Workloads
Stats Package
Stats API
Develop Branch
v19.0.0.0
v20.0.0.0
v20.0.0.2
v20.0.0.3
v20.1.0.0
v20.1.0.1
v20.1.0.5
v21.0.0.0
v21.0.1.0
v21.1.0.0
v21.1.0.1
v21.1.0.2
v21.2.0.0
v21.2.1.0
v21.2.1.1
v22.0.0.0
v22.0.0.1
v22.1.0.0
v23.0.0.0
v23.0.0.1
v24.1.0.1
gem5 standard library
Standard Library Overview
Hello World Tutorial
X86 Full-System Tutorial
Developing Your Own Components Tutorial
How To Create Your Own Board Using The gem5 Standard Library
How to use local resources and data sources in gem5
gem5 Resources
Creating Disk Images
Devices
m5term
Building Linux ARM Kernel
Building Android Marshmallow
Guest binaries
Memory System
Memory System
gem5 Memory System
Replacement Policies
Indexing Policies
Classic memory system coherence
Classic caches
Ruby Memory System
Ruby
Cache Coherence Protocols
Garnet 2.0
HeteroGarnet
MOESI CMP directory
Garnet Synthetic Traffic
SLICC
MI example
Garnet standalone
Interconnection network
MOESI hammer
MOESI CMP token
MESI two level
CHI
Replacement Policies
CPU Models
GPU Models
M5ops
功耗与热模型
本文档概述了 gem5 中的功耗和热建模基础设施。
目的是提供所有相关组件的高级视图,以及它们如何相互交互以及与模拟器交互。
类概述
功耗模型中涉及的类包括:
- PowerModel: 表示硬件组件的功耗模型。
- PowerModelState:表示硬件组件在特定功耗状态下的功耗模型。它是一个抽象类,定义了每个模型必须实现的接口。
- MathExprPowerModel:PowerModelState 的简单实现,假设可以使用简单的功耗方程进行建模。
热模型中涉及的类包括:
- ThermalModel: 包含系统热模型逻辑和状态。它执行功耗查询和温度更新。它还使 gem5 能够查询温度(用于操作系统报告)。
- ThermalDomain: 表示产生热量的实体。它本质上是一组 SimObjects,这些对象在 SubSystem 组件下分组,具有自己的热行为。
- ThermalNode: 表示热等效电路中的一个节点。节点具有温度,并通过连接(热阻和热容)与其他节点交互。
- ThermalReference:热模型的温度参考(本质上是一个具有固定温度的热节点),可用于模拟空气或任何其他恒定温度域。
- ThermalEntity: 连接两个热节点并模拟它们之间热阻抗的热组件。此类只是一个抽象接口。
- ThermalResistor:实现 ThermalEntity 以模拟其连接的两个节点之间的热阻。热阻模拟材料传递热量的能力(单位为 K/W)。
- ThermalCapacitor:实现 ThermalEntity 以模拟热容。热容用于模拟材料的热容,即改变特定材料温度的能力(单位为 J/K)。
热模型
热模型通过创建模拟平台的等效电路来工作。电路中的每个节点都有一个温度(作为电压等效),功率在节点之间流动(作为电路中的电流)。
要构建此等效温度模型,平台需要将功耗参与者(任何具有功耗模型的组件)分组到 SubSystem 下,并将 ThermalDomain 附加到这些子系统。还可以创建其他组件(如 ThermalReference),并通过创建热实体(电容和电阻)将它们全部连接在一起。
完成热模型的最后一步是创建 ThermalModel 实例本身,并将所有使用的实例附加到它,以便它可以在运行时正确更新它们。 目前仅支持一个热模型实例,它会在适当的时候自动报告温度(例如平台传感器设备)。
功耗模型
每个 ClockedObject 都有一个关联的功耗模型。如果此功耗模型非空,则将在每次统计信息转储时计算功耗(尽管可能可以在任何其他点强制进行功耗评估,但如果功耗模型使用统计信息,最好保持两个事件同步)。功耗模型的定义相当模糊,因为它的灵活性取决于用户的需求。到目前为止,唯一强制执行的约束是功耗模型具有多个功耗状态模型,每个硬件块的可能功耗状态对应一个。在计算功耗消耗时,功耗只是每个功耗模型的加权平均值。
功耗状态模型本质上是一个接口,允许我们为动态和静态定义两个功耗函数。作为一个示例实现,已提供了一个名为 MathExprPowerModel 的类。此实现允许用户将功耗模型定义为涉及多个统计信息的方程。还有一些自动(或”魔法”)变量,例如 “temp”,它报告温度。
