gem5标准库概述

An overview of the gem5 standard library

与编程语言中的标准库类似,gem5标准库旨在为gem5的用户提供常用的组件、特性和功能,以提高他们的生产力。 gem5 stdlib 在 v21.1 中以 alpha 发布状态引入(当时称为“gem5 组件”),并从 v21.2 开始完全发布。
对于刚接触 gem5 标准库的用户,以下教程可能有助于理解如何使用 gem5 stdlib 来改进 gem5 模拟的创建。它们包括有关构建系统调用模拟和全系统模拟的教程,以及有关如何扩展库和做出贡献的指南。 gem5 存储库中的 configs/examples/gem5_library 目录还包含使用该库的示例脚本。
以下小节对 gem5 stdlib 包及其预期用途进行了广泛概述。
注意:文档/教程/等。与标准库相关的内容适用于 v22.0 版本。在继续之前,请确保您拥有正确版本的 gem5。
作为 gem5 2022 年训练营的一部分,stdlib 作为教程进行教授。可以在此处找到本教程的幻灯片。可以在此处找到本教程的视频录制。

The gem5 stdlib components package and its design philosophy

gem5 stdlib组件包是gem5 stdlib的核心部分。有了它,用户可以从使用标准化 API 连接在一起的简单组件构建复杂的系统。
指导组件包开发的比喻是使用现成组件构建计算机。在构建计算机时,有人可能会选择组件,将它们插入电路板,并假设电路板和组件之间的接口已按照它们“正常工作”的方式设计。例如,某人可以从板上移除处理器并添加与同一插槽兼容的不同处理器,而无需更改其设置中的其他所有内容。虽然这种设计理念总是存在局限性,但组件包具有高度模块化和可扩展的设计,同一类型的组件可以尽可能地相互互换。

组件包的核心是电路板的概念。这与现实系统中的主板的作用类似。虽然它可能包含嵌入式缓存、控制器和其他复杂组件,但其主要目的是为要添加的其他硬件公开标准化接口并处理它们之间的通信。例如,存储器设备和处理器可以被添加到板,其中板负责通信,而假设存储器或处理器符合已知的API,则存储器或处理器的设计者不必考虑这一点。
通常,gem5 组件包板需要声明以下三个组件:
处理器:系统处理器。处理器组件包含至少一个核心,可以是 Atomic、O3、Timing 或 KVM。
内存系统:内存系统,例如DDR3_1600。
缓存层次结构:该组件定义处理器和主内存之间的所有组件,最显着的是缓存设置。在最简单的设置中,这会将内存直接连接到处理器。
全系统仿真所需的其他设备在仿真之间很少发生变化,由电路板处理。
因此,组件的典型用法可能如下所示:


cache_hierarchy = MESITwoLevelCacheHierarchy(
    l1d_size="16kB",
    l1d_assoc=8,
    l1i_size="16kB",
    l1i_assoc=8,
    l2_size="256kB",
    l2_assoc=16,
    num_l2_banks=1,
)

memory = SingleChannelDDR3_1600(size="3GB")

processor = SimpleProcessor(cpu_type=CPUTypes.TIMING, num_cores=1)

board = X86Board(
    clk_freq="3GHz",
    processor=processor,
    memory=memory,
    cache_hierarchy=cache_hierarchy,
)

以下教程更详细地介绍了如何使用组件包创建 gem5 模拟。

The gem5 resources package

gem5 stdlib的资源包用于获取和合并资源。在 gem5 的上下文中,资源是在模拟中或由模拟使用的东西,但不直接用于构建要模拟的系统。通常这些是应用程序、内核、磁盘映像、基准测试或测试。
由于这些资源可能很难找到或创建,我们提供预构建的资源作为 gem5 资源的一部分。例如,通过 gem5-resources,用户可以下载已知与 gem5 兼容的 Ubuntu 18.04 磁盘映像。他们不需要自己设置。
gem5 stdlib资源包的一个核心功能是它允许用户自动获取预构建的gem5资源用于他们的模拟。用户可以在其 Python 配置文件中指定需要特定的 gem5 资源,并且在运行时,该包将检查主机系统上是否有本地副本,如果没有,则下载它。
教程将更详细地演示如何使用资源包,但目前,典型的模式如下:

from gem5.resources.resource import Resource

resource = Resource("riscv-disk-img")

print(f"The resources is available at {resource.get_local_path()}")

这将获取 riscv-disk-img 资源并将其存储在本地以供 gem5 模拟使用。
资源包引用了可以在 gem5 资源网站和 gem5 资源存储库中查看的资源。强烈建议您通过该网站获取有关可用资源以及可从何处下载资源的信息。

The Simulate package

警告:Simulate 包仍处于 BETA 状态。此包中的 API 可能会在 gem5 的未来版本中发生更改。
Simulate 包用于运行 gem5 模拟。虽然该模块代表用户处理一些样板代码,但其主要目的是为我们所说的退出事件提供默认行为和 API。退出事件是指模拟由于特定原因而退出。
退出事件的典型示例是 Workbegin 退出事件。这用于指定已达到感兴趣区域 (ROI)。通常,此出口将用于允许用户开始记录统计数据或切换到更详细的 CPU 模型。在 stdlib 之前,用户需要精确指定在此类退出事件时的预期行为。模拟将退出,配置脚本将包含指定下一步要做什么的 Python 代码。现在,使用模拟包,此类事件有一个默认行为(统计数据被重置),并且有一个简单的界面可以用用户需要的东西覆盖此行为。

相关推荐

  1. gem5标准概述

    2024-02-21 13:24:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 13:24:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 13:24:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 13:24:03       82 阅读
  4. Python语言-面向对象

    2024-02-21 13:24:03       91 阅读

热门阅读

  1. SQLite 知识整理

    2024-02-21 13:24:03       47 阅读
  2. uniapp使用sqlite

    2024-02-21 13:24:03       49 阅读
  3. 备份服务器数据的重要

    2024-02-21 13:24:03       51 阅读
  4. 锁相放大器,数字锁相放大器.C和python版的源代码

    2024-02-21 13:24:03       50 阅读
  5. spring boot 3.0如何优雅的使用s3协议连接minio

    2024-02-21 13:24:03       47 阅读
  6. Converter学习

    2024-02-21 13:24:03       52 阅读
  7. shell关联数组用法

    2024-02-21 13:24:03       50 阅读
  8. webScoket实时通讯聊天

    2024-02-21 13:24:03       57 阅读
  9. CSS的全局值 initial inherit revert overlay unset

    2024-02-21 13:24:03       48 阅读
  10. MFC中不同编码格式内容的写入

    2024-02-21 13:24:03       48 阅读