Gem5 学习 1 - Gem5 及其 文件结构

本文详细介绍了Gem5模拟器的特性、CPU模型、系统模型及存储模型,强调了其面向对象、Python集成和标准化接口的设计特点。在系统模型中,讨论了SE和FS模型的应用场景。此外,文章还剖析了Gem5的文件结构,包括build、build-opts、configs等目录的作用,以及src、system等源代码目录。最后,提到了Gem5支持的多种CPU模型和ISA,如AtomicSimple、TimingSimple、In-Order、Out-Order (O3)以及ALPHA、ARM、X86等。
摘要由CSDN通过智能技术生成

本文参考
http://www.m5sim.org/Source_Code
https://blog.csdn.net/qq_40918707/article/details/105511535
ivy_reny的gem5专栏

Gem5的安装配置可以参考我的博客ubuntu18.04 配置 gem5
本文默认已经完成了GEM5的编译

Gem5

gem5提供了多种CPU模型、系统模型以及存储器模型。

  • CPU模型:Atomic、Timing、In- order、O3(Out of Order)
  • 系统模型:SE(System-callemulation)、FS(Full System)
  • 存储模型:Classic、Ruby。
GEM5特征

1、GEM5的设计特征

面向对象、Python集成、领域特定语言DSL、标准化接口

面向对象和python集成

  • GEM5用C++和python混合编写
  • GEM5中所有主要的仿真单元都称为SimObject,它们使用相同的方法进行配置、初始化、统计与序列化(checkpoint)
  • SimObject包括具体的硬件单元模型比如处理器核、cache、互联单元与设备,也包括更为抽象的比如负载和与之相关联的用于系统调用仿真的处理内容。
  • 每个SimObject由两个类表示,一个Python类,一个C++类。Python类定义SimObject参数并进行基于脚本的配置。C++类包含了SimObject状态与剩余的行为,包括关键性能的仿真模型。
  • 对于不同的组件SimObject,GEM5中使用Python进行集成,即Python负责初始化、配置和模拟控制。仿真器一开始就立即执行Python代码;标准的main()函数、命令行处理与启动代码都是用Python编写的。

领域特定语言DSL我也不是很了解
标准化接口

  • 标准化接口主要是包括端口(port)接口和消息缓冲接口(message buffer)
  • 端口用来连接两个内存对象(memory object)。在Classic内存系统中,端口接口连接包括CPU到cache、cache到总线、以及总线到设备和存储器的所有内存对象。
  • 端口支持三种访问数据的机制,即timing、atomic和functional,以及用来确定拓扑结构和调试的接口。
  • Timing模型用于建模存储器访问的时序细节,请求通过消息发送给存储系统,而响应则是通过其它消息异步地返回;
  • Atomic模型用于获取时序信息,但并非基于消息,发生atomic调用(通过函数调用),同步地实现操作的状态改变,这种方式性能更高但是精度较低,因为没有对消息的互操作进行建模;
  • Functional模型对模拟器状态进行更新,而并不改变任何时序信息,用于debug、系统调用仿真与初始化。

2、GEM5系统模型

GEM5支持两种不同的系统模型:SE(syscall emulation)和FS(full system)模型
SE:

  • SE模型能够仿真大部分操作系统级服务,能够取得很好功能模拟加速比
  • 运行独立的程序或者MP上的程序集
  • 建模用户可见的ISA加上共同的系统调用
  • 模拟系统调用,特别是通过调用主机OS
  • 简化地址转换模型,没有调度

FS:

  • FS模型模拟完整的全系统,包括OS,运行在用户态和核心态的线程调度以及各种设备。能够精确模拟系统时间等开销
  • 为启动操作系统
  • 建模裸硬件ÿ
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
gem5学习基础完整版,介绍了gem5环境的安装,以及一些基本概念。 gem5仿真器是用于计算机系统体系结构研究的模块化平台,涵盖系统级体系结构以及处理器微体系结构。1、多个可互换的CPU型号。 gem5提供了四种基于解释的CPU模型:简单的单CPI CPU; 有序CPU的详细模型和无序CPU的详细模型。 这些CPU模型使用通用的高级ISA描述。 此外,gem5具有基于KVM的CPU,该CPU使用虚拟化来加速仿真。 2、完全集成的GPU模型,可以执行真实计算机ISA,并支持与主机CPU共享的虚拟内存。 3、NoMali GPU模型。 gem5带有集成的NoMali GPU模型,该模型与Linux和Android GPU驱动程序堆栈兼容,因此无需进行软件渲染。 NoMali GPU不产生任何输出,但可以确保以CPU为中心的实验产生代表性的结果。 4、事件驱动的内存系统。 gem5具有详细的,事件驱动的内存系统,包括高速缓存,交叉开关,探听过滤器以及快速而准确的DRAM控制器模型,用于捕获当前和新兴内存的影响,例如内存。 LPDDR3 / 4/5,DDR3 / 4,GDDR5,HBM1 / 2/3,HMC,WideIO1 / 2。 可以灵活地布置组件,例如,以具有异构存储器的复杂的多级非均匀高速缓存层次结构来建模。 5、基于跟踪的CPU模型,可播放弹性跟踪,这些跟踪是由附着到乱序CPU模型的探针生成的依赖项和定时注释的跟踪。 跟踪CPU模型的重点是以快速,合理的方式而不是使用详细的CPU模型来实现内存系统(高速缓存层次结构,互连和主内存)的性能探索。 6、异构和异构多核。 可以将CPU模型和缓存组合到任意拓扑中,从而创建同构异构的多核系统。 MOESI侦听缓存一致性协议可保持缓存一致性。 7、多种ISA支持。 gem5将ISA语义与其CPU模型解耦,从而实现对多个ISA的有效支持。 目前gem5支持Alpha,ARM,SPARC,MIPS,POWER,RISC-V和x86 ISA。 有关更多信息,请参见支持的体系结构
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张的学习手册

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值