陆续写些关于新书《自己动手写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.(Alpha、ARM、SPARC、MIPS、POWER、x86)
Full-systemcapability(Alpha、SPARC、MIPS、x86)
Multiprocessor/ multi-system capability
Powerand energy modeling
Co-simulationwith SystemC
废话少说,直接动手。
一开始尝试在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要有一下依赖软件需要安装。
针对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 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
解压缩安装包后,使用熟悉的命令安装,如下:
configure
make
make install
使用如下命令测试是否安装成功:
swig -verison
应该输出如下结果:
SWIG Version 3.0.4 Compiled with g++ [x86_64-unknown-linux-gnu] Configured options: +pcre
在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
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!”,表示测试成功。
原文地址:http://blog.csdn.net/leishangwen/article/details/43084289