Gem5学习01-Introduction

来源:互联网 发布:蚁群算法处理tsp问题 编辑:程序博客网 时间:2024/06/07 09:46

在悲剧的出错n次之后,本菜鸟决定按照官网Introduction规规矩矩安装学习。本文用以记录来自官网的Introduction翻译。原文参见:
Gem5 Introduction

    • 什么是gem5 What is gem5
    • 开箱即用的功能 Capabilities out of the box
    • 获取 Getting a copy
    • 获得额外的工具及文件 Getting Additional Tools and Files
    • Building
    • 运行 Running
    • 求助 Asking for help
    • 哪些有效 What works
    • 源码更新 Update Source Codes

什么是gem5? What is gem5?

gem5是一个模块化离散驱动的计算机系统模拟平台。这表示:
1. gem5可以根据需求重排(rearranged)、参数化、扩展或替换;
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集成,可以提供更为灵活的存储系统建模。

开箱即用的功能 Capabilities out of the box

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

获取 Getting a copy

gem5源码由Mercurial矫正控制系统管理。可能感兴趣的库:
1. gem5 — 产生主要发展的主库(main repository)
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指南

获得额外的工具及文件 Getting Additional Tools and Files

建立gem5需要的额外的工具以及平台如下:
原文 : gem5 Dependencies
翻译 : gem5 依赖

如果你想要运行全系统版本(包括全系统回归测试),你还需要下载全系统文件(磁盘映像和二进制文件)。Alpha、Arm、x86的内核、磁盘映像、引导程序可在 Download下载,翻译版见gem5 下载。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 mkdir -p /dist/m5/systemcd /dist/m5/systemsudo tar vxfj <path>/m5_system_2.0b3.tar.bz2sudo 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变量。

Building

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文件。随后的章节假设这是你使用的二进制。

更多细节见Build System 。

运行 Running

建立了gem5后,现在可以运行它了。一个gem5命令行由四部分组成:二进制、gem5选项、要运行的配置脚本、配置脚本的最终选项。在 ./configs/example 下可以看到几个样例。你也可以自己编写脚本,在此之前样例是个好的开始。我们将用se.py举例,它建立一个系统调用仿真SE模式。我们将设置它运行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:28gem5 started Jul 17 2011 19:18:16gem5 executing on zizzercommand line: ./build/ARM/m5.opt configs/example/se.pyGlobal frequency set at 1000000000000 ticks per second0: 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 hereExiting @ tick 3188500 because target called exit()

可以看到模拟器输出很多文字,但”Hello world!”一行来自被模拟的程序。模拟过程生成的输出文件放在m5out目录下,数据在stats.txt文件中。

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

更多细节见Running_gem5 。

求助 Asking for help

gem5有两个邮件列表(mailing list)用于寻求建议和帮助。
gem5-dev用于主要版本的gem5开发者。gem5主版本为网站上发布并且最有可能被用户用于完成模拟的版本。
gem5-users是一个更大的面向用户的邮件列表。上面的用户多为纯用户,或起初并未参与官方发布版本的gem5开发的人员。

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

更多有关邮件列表的信息,注册以及浏览,参见:Mailing Lists 。
在mailing list上报告问题前请阅读:Reporting Problems 。

哪些有效 What works

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

源码更新 Update Source Codes

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

hg pull

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

0 0
原创粉丝点击