gem5学习1——Introduction

gem5是一个模块化的计算机系统模拟平台,支持多种ISA和CPU模型。它采用C++和Python编写,允许用户构建定制的模拟系统。gem5可用于体系结构研究,其模块化设计便于添加新功能。获取gem5源码需使用Mercurial,编译使用scons,并通过配置脚本运行。此外,gem5提供两个邮件列表供用户和开发者交流。
摘要由CSDN通过智能技术生成

官网原文:gem5 Introduction 

1、什么是gem5?

gem5是一个模块化离散事件驱动的计算机系统模拟平台。这表示: 

1. gem5可以根据需求重排、参数化、扩展或替换;
2. 它以一系列离散事件模真时间的流逝;
3. 它用于以多种方式模拟一个或多个计算机系统;
4. 它不只是一个模拟器,它是一个允许用户使用预置组件建立自己的模拟系统的模拟器平台;

gem5由C++和Python共同完成,大部分组件满足BSD证书。可以在FS(full system)模式下模拟完整的系统,或在SE(syscall emulation)模式下由模拟器提供系统调用模拟用户空间程序。gem5支持: 
ISA:Alpha, ARM, MIPS, Power, SPARC, 64位x86 
CPU:两个简单的单CPI模型,乱序模型,顺序流水线模型
存储系统可以灵活构建cache以及crossbar。目前,Ruby模拟器与gem5集成,可以提供更为灵活的存储系统建模。

2、创造性的功能

gem5用于计算机体系结构研究,如果要添加新功能,gem5的模块化设计允许在不了解gem5全部机制的前提下修改特定的功能。 
若添加了新的功能,请考虑回馈gem5为更多的人提供方便。

3、获取

gem5源码由Mercurial版本控制系统管理。可能感兴趣的库: 
1. gem5 — 主库
2. gem5-stable — 与gem5的内容基本相同,通常建议使用“gem5” 
3. encumbered — gem5的扩展库,使用更为严格的许可证。目前只含有SimpleScalar EIO路径格式的支持。 
4. Linux-patches — linux补丁库,提升模拟效率。这些补丁为可选项,建议使用以降低模拟运行时间。

若刚开始使用gem5,你可能会需要Mercurial来获取gem5或gem5-stable库。 
获取副本需要确认你的系统上安装了Mercurial并能够运行hg命令。随后使用hg clone 来创建自己的本地副本。使用URL http://repo.gem5.org/XXX ,其中XXX处填写你感兴趣的库名。例如,获取主库:

hg clone http://repo.gem5.org/gem5
运行hg help 查看更多内容。或访问下列网站: 
hginit 提供Mercurial的基本概念介绍 
HGBook Mercurial指南

4、获得额外的工具及文件
建立gem5需要的额外的工具以及平台如下:

gem5学习2——Dependencies

gem5 Dependencies


如果想运行全系统版本(包括全系统回归测试),还需要下载全系统文件(磁盘映像和二进制文件)。Alpha、Arm、x86的内核、磁盘映像、引导程序可在Download(gem5学习3——Download)下载。SPARC的磁盘映像链接为OpenSPARC

这些文件的路径写在 ./configs/common/SysPaths.py 中。有些默认路径固化在脚本中,将文件放在相应的默认路径中或编辑SysPaths.py文件修改文件路径,也可以通过设置M5_PATH环境变量来覆盖文件中的路径。若没有该步骤,在第一次尝试运行FS模式时会看到如下error:ImportError: Can't find a path to system files.
注意,默认路径 /dist/m5/system 需要root权限(sudo),并且文件放置的位置可以被多用户共享。如果满足以上两个条件,可以按照如下例子将系统文件放到默认路径:

sudo mkdir -p /dist/m5/system
cd /dist/m5/system
sudo tar vxfj <path>/m5_system_2.0b3.tar.bz2
sudo mv m5_system_2.0b3/* . ; sudo rmdir m5_system_2.0b3/
sudo chgrp -R <grp> /dist  # where <grp> is a group that contains all the m5 users

大多数情况下,最简单的办法是把文件放在方便的位置并修改M5_PATH变量。

5、编译

gem5使用scons建立系统。在源目录下运行scons build/<config>/<binary> 建立模拟器。<config> 指代build变量预定义集,<binary> 指代一种m5二进制文件。
<config> 预定义集中的变量决定的配置信息影响建立的二进制模拟器的行为、构成和功能。变量包括支持的ISA、要编译的CPU模式以及相应的协议Ruby。样例配置文件见build_opts目录。
<binary> 合法二进制名称有:gem5.debug, gem5.opt, gem5.fast, gem5.prof。不同二进制有不同的特性。
gem5.debug 有关闭了优化,使gdb一类的工具更易于调试;
gem5.opt有打开优化,但保留了调试输出和断言;
gem5.fast去除了调试工具;
gem5.prof用于与gprof共同使用。 

通常会选择gem5.opt。举例,建立SE模式,ARM架构,打开优化并保留调试,运行如下指令:

scons build/ARM/gem5.opt
随后可以在源目录下看到 build/ARM/目录,其中有要求的gem5.opt文件。在随后的章节中,假设这就是你使用的bin文件。

更多细节见

gem5学习4——Build System

Build System

6、运行

建立了gem5后,现在可以运行它了。一个gem5命令行由四部分组成:二进制文件、gem5选项、要运行的配置脚本、配置脚本的选项。在 ./configs/example 下可以看到几个配置脚本样例。你也可以自己编写脚本,但样例是个好的开始。以se.py举例,建立了一个基本的系统调用仿真模式。运行hello world样例。命令行如下:

build/ARM/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/arm/linux/hello
建立了一个模拟系统,运行指定位置的二进制文件,并开始模拟。运行结果及控制台输出如下:
gem5 Simulator System.  http://gem5.org 
gem5 is copyrighted software; use the --copyright option for details.


gem5 compiled Jul 17 2011 19:16:28
gem5 started Jul 17 2011 19:18:16
gem5 executing on zizzer
command line: ./build/ARM/m5.opt configs/example/se.py
Global frequency set at 1000000000000 ticks per second
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
**** REAL SIMULATION ****
info: Entering event queue @ 0.  Starting simulation...
Hello world!
hack: be nice to actually delete the event here
Exiting @ tick 3188500 because target called exit()
可以看到模拟器输出很多信息,但”Hello world!”一行来自被模拟的程序。模拟过程中生成的输出文件放在m5out目录下,数据在stats.txt文件中。

在这个例子中,并未提供gem5的选项。如果有选项,则放在命令行中gem5.opt与se.py之间。用--help查看支持的命令行选项。注意,两组选项不同,确保你知道它们放在配置脚本之前还是之后。

更多细节见Running_gem5

7、求助

gem5有两个邮件列表(mailing list)用于寻求建议和帮助。 

gem5-dev用于主要版本的gem5开发者。gem5主版本为网站上发布并且最有可能被用户用于完成模拟的版本。 

gem5-users是一个更大的面向用户的邮件列表。上面的用户多为纯用户,或起初并未参与官方发布版本的gem5开发的人员。

通常情况下,gem5-users更为适用。在gem5-dev中的用户,包括所有的主要开发者以及gem5团体的其它成员都在gem5-users上,他们都会看到你在gem5-users上提出的问题。通过gem5-users,他们可以回答你提出的问题,以及其他人对你的问题有什么看法或回答。

8、哪些有效

gem5联合了一些不同的ISA、系统模型(SE/FS)、CPU模型以及存储系统模型来共同工作。不是所有组合都被完全测试过或完全有效。Status Matrix记录了这些组合的当前状态。如果遇到一个被支持的组合不再有效或不确定的组合能够有效工作,请发邮件到邮件列表告之我们。

9、源码更新

当开发者发布新版本的gem5库时,运行一下指令得到最新版本:

hg pull
如果与新版本不冲突,你自己的改动会被保留。如果必要,请重新编译gem5。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值