首页 > 代码库 > gem5的安装与使用

gem5的安装与使用

陆续写些关于新书《自己动手写CPU》的博客,本篇主要是讲解gem5的安装与简单使用。


      gem5是什么?技术分享外事不决问谷歌,内事不决问百度。有很多这方面的资料,小生就不重复了。简单列举如下:

     The gem5 simulator is a modular platform for computer system architectureresearch计算机系统架构研究,encompassing system-level architecture as well as processormicroarchitecture.既有系统级架构又有处理器的微架构

      特点如下:

  • Pervasiveobject orientation

  • Multipleinterchangeable CPU models

  • Event-drivenmemory system

  • MultipleISA support.AlphaARMSPARCMIPSPOWERx86

  • Full-systemcapabilityAlphaSPARCMIPSx86

  • Multiprocessor/ multi-system capability

  • Powerand energy modeling

  • Co-simulationwith SystemC

      简单来说:就是一个可以模拟多种ISA的模拟器。

      废话少说,直接动手。

      一开始尝试在CentOS6.5上安装,但是发现gcc是4.4.7,不符合gem5对gcc的要求,gem5要求gcc是4.6以上。二话不说,就下载了gcc4.9.2(我们都是讲效率的人)。

      然后。。。。。。

      然后都是泪,gcc编译屡屡出错,百度了数个教程,都是一样的啊,步骤没有错啊。

      擦干眼泪,果断换系统(我们都是将效率的人)—— 安装CentOS7。

       CentOS7 安装中 。。。。。。(期间:吃饭、喝水、约MM。。。。。。)

       CentOS7 安装完成。经过查看,gcc是4.8.2,初步满足条件。安装gem5要有一下依赖软件需要安装。

  • gcc 4.6及以上版本
  • python 2.5-2.7(目前不支持pyton3.x)
  • SCons 0.98.1及以上版本
  • SWIG 2.0.4及以上版本
  • zlib任何最近的版本
  • m4
  • protobuf 2.1及以上版本

       针对CentOS7分别检查如下:

       (1)gcc:系统自带,无需安装,使用gcc -v,可以查看版本,CentOS7是4.8.2,满足条件。

       (2)python:系统自带,无需安装,使用python --version,可以查看版本,CentOS7是2.7.5,满足条件,并且有python的头文件(在/usr/include/)和库文件(在usr/lib64/)。

       (3)SCons:没有安装,需要安装。

       (4)SWIG:没有安装,需要安装。

       (5)zlib:系统自带,无需安装。使用whereis zlib可以查看安装位置。

       (6)m4:系统自带,无需安装,使用m4 --veriosn,可以查看版本,CentOS7是1.4.16。

       (7)protobuf:没有安装,需要安装。

        OK。分析完毕,下载上面的软件包,安装过程如下:

        1、安装 SCons2.3.4

        解压缩安装包后,使用如下命令安装:

python setup.py install –standard-lib

然后在终端中,输入scons verison,会出现如下结果:
  
SCons by Steven Knight et al.:
    script: v2.3.4, 2014/09/27 12:51:43, by garyo on lubuntu
    engine: v2.3.4, 2014/09/27 12:51:43, by garyo on lubuntu
    engine path: ['/usr/lib/python2.6/site-packages/SCons']
Copyright (c) 2001 - 2014 The SCons Foundation 

        2、安装SWIG3.0.4

       解压缩安装包后,使用熟悉的命令安装,如下:

      configure

       make

       make install

       使用如下命令测试是否安装成功:

swig -verison

      应该输出如下结果:

SWIG Version 3.0.4 

Compiled with g++ [x86_64-unknown-linux-gnu] 

Configured options: +pcre 

      3、安装protobuf2.6.1

     在https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.bz2下载release版本的protobuf2.6.1,解压缩后,使用如下命令安装:

     configure

     make

     make install

    然后使用如下命令可以检查是否安装完成:

protoc  --version

      输出如下:

libprotoc 2.6.1
      修改/root/.bashrc,添加如下:
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib             // 是protobuf默认的安装路径
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/root/gem5/protobuf-2.6.1  // 是protobuf的解压缩路径

     如果不加最后一句话,那么在编译gem5的时候,会出现下面的警告:

Package protobuf was not found in the pkg-config search path. 
Perhaps you should add the directory containing `protobuf.pc' 
to the PKG_CONFIG_PATH environment variable 
No package 'protobuf' found 
Warning: pkg-config could not get protobuf flags. 

      然后应用修改:

source ~/.bashrc

     万事具备,只欠东风了,在http://www.m5sim.org/Download下载软件包gem5-stable-50ff05095970.tar.bz,解压缩后,使用如下命令进行编译,得到ARM处理器的一个目标。 
scons build/ARM/gem5.opt
    等待中,有半个小时左右(小生的计算机配置比较低,i3处理器,2G内存,哪位好心人能捐助一台高性能的计算机啊技术分享)。。。。。。

    成功后,输入如下命令,可以测试。

./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 Jan 24 2015 11:24:28 
gem5 started Jan 24 2015 11:32:22 
gem5 executing on localhost.localdomain 
command line: ./build/ARM/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/arm/linux/hello 
/root/gem5/gem5-stable-50ff05095970/configs/common/CacheConfig.py:48: SyntaxWarning: import * only allowed at module level 
  def config_cache(options, system): 
Global frequency set at 1000000000000 ticks per second 
      0: system.cpu.isa: ISA system set to: 0 0x416fca0 
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000 
**** REAL SIMULATION **** 
info: Entering event queue @ 0.  Starting simulation... 
Hello world! 
Exiting @ tick 2924000 because target called exit() 
     倒数第二行出现了“Hello world!”,表示测试成功。


 

gem5的安装与使用