Title

gem5 学习一 —— gem5简介

前言

最近由于工作需要,我开始学习 gem5 模拟器。gem5 模拟器是一款模块化的计算机系统架构平台,可用于研究系统级架构、处理器微架构。gem5 是一个开源平台,最初是为学术界的计算机体系结构研究而构想的,目前已经发展为学术界、工业研究和教学中的计算机系统设计。

为什么需要system simulator?

CPU的行为依赖于memory系统,而memory系统的行为反过来又依赖于CPU。在不同level上存在复杂的相互作用,其中包括application, JIT, OS, caches, interconnect, memory controllers, devices.如果仅仅只是想将各个部分粘合在一起,例如使用traces,是无法捕捉到这些依赖关系的。

gem5的起源?

根据 gem5 的 paper,gem5 诞生于 M5 (CPU仿真框架) 和 GEMS (内存时序仿真器) 两者的合并。gem5是基于离散事件仿真内核(discrete-event simulation kernel
)构建的。该项目是许多学术和工业机构共同努力的结果,包括 AMD、ARM、HP、MIPS、普林斯顿大学、麻省理工学院以及密歇根大学、德克萨斯大学和威斯康星大学。在过去的十年中,M5 和 GEMS 已在数百种出版物中使用,并已被下载数万次。 gem5 项目上的高水平协作,再加上组件部分的先前成功和类似 BSD 的自由许可证,使 gem5 成为一个有价值的全系统仿真工具。

gem5能做些什么

gem5框架内的模块是非常丰富的:

  • 构建整个模拟系统
    • CPU 密集型应用
    • 带有跟踪的内存系统
    • 独立的DRAM
    • 没有I/O的执行

gem5的特点

  • 可配置的CPU模型
    • Simple one-IPC (SimpleAtomic/Timing)
    • Detailed in-order execution (InOrder)
    • Detailed out-of-order execution (O3)
    • Hardware-accelerated fast forwarding (KVM)
  • 可插拔的memory system
    • 可以将内存系统的组件拼接在一起
    • 使用Wisconsin’s Ruby
  • 设备模型
    • Enough device models to boot Linux, Android
  • 支持启动真实的操作系统
    • Linux, Android
  • 多种 ISAs

基于gem5,我将深入探讨学习系统级架构、处理器微架构的实现。

gem5 目录结构

linux查看项目的一级目录: `tree -L 1`
.
├── build
├── build_opts
├── build_tools
├── CODE-OF-CONDUCT.md
├── configs
├── CONTRIBUTING.md
├── COPYING
├── ext
├── include
├── KCONFIG.md
├── LICENSE
├── m5out
├── MAINTAINERS.yaml
├── optional-requirements.txt
├── pyproject.toml
├── README.md
├── RELEASE-NOTES.md
├── requirements.txt
├── SConstruct
├── site_scons
├── src
├── system
├── TESTING.md
├── tests
└── util

12 directories, 13 files

reference

gem5_tutorial
gem5 code

posted on 2024-11-01 17:18  松—松  阅读(151)  评论(0编辑  收藏  举报

导航