当前位置:文档之家› Gems Simics 安装报告

Gems Simics 安装报告

课程设计报告多核全系统模拟器GEMS分析班级:学号:姓名:2011年7月1 目的和背景由于单核处理器的处理能力已经接近极限,很难再有提高,多核处理器体系结构应运而生。

在处理器体系结构的设计中,由于用硬件做测试投资大,且不便于设计,不具有多次性,因此体系结构软件仿真技术是研究中的一门新技术。

而多核全系统模拟器GEMS/Simics框架能够模拟单核处理器、并行式多处理器、阵列式处理器等体系机构。

故本此课设选用构建GEMS+Simics框架,先逐步介绍搭建GEMS+Simics的各个环节,然后初步的研究单核和多核运行时程序在每个CPU中的运行情况,分析模拟器的构成及各部分的功能及性能分析。

2 安装流程2.1软件准备1) 在Ubuntu的官方网站上获得32位的Ubuntu10.042) 由于GEMS是开源软件首先在https:///gems/registercgi下进行注册,然后再在https:///gems/download.html下进行下载3)下载Simics时麻烦一些,先在https:///register/register.php地址上进行注册,而且必须作为学生或教职员工注册,然后申请免费的license。

4) 在/ubuntu/pool/main/z/zlib/网站上下载和自己的系统配套的zlib1g_1.2.3.3.dfsg-15ubuntu1_i386.deb和zlib1g-dev_1.2.3.3.dfsg-15ubuntu1_i386.deb5) 在/index2/unixsystem/Solaris/sol-10-u2-ga-sparc-v4/或者/us/sun/index.htm或者在网站上获得Soloris ,建议使用前者2.2安装Ubuntu此处不建议使用虚拟机安装,因为会影响到后面的安装,如果有CD/DVD可以直接用CD/DVD安装;也可以用USB或硬盘安装;最简单的是虚拟光驱wubi安装,但磁盘空间最大只能为30G,虽然之后可以用LVPM工具进行扩充,但不建议使用,因为速度很慢,且容易出错。

最好采用CD/DVD安装。

2.3GEMS/Simics安装1) 安装必要的工具s udo apt-get updatesudo apt-get install build-essentialsudo apt-get install bisonsudo apt-get install flexsudo dpkg –-install zlib1g_1.2.3.3.dfsg-7ubuntu1_i386.debsudo dpkg –-install zlib1g-dev_1.2.3.3.dfsg-7ubuntu1_i386.deb2) 在$HOME/.profile设置环境变量,必须保证路径是你想要装入GEMS和Simics 安装的位置的路径export GEMS=/home/so/gemsexport SIMICS_INSTALL=$GEMS/simics-3.0.31export SIMICS_EXTRA_LIB=./modulesexport PYTHONPA TH=./modules重启机器,否则全局变量不能起作用,会影响后面的安装,导致路径不对3) 安装GEMS:在home目录的so用户里面创建gems文件,将gems-release2.tar.gz复制到gems中,执行如下命令安装:tar xvzf gems-release2.tar.gzcp -r $GEMS/gems-2.0/* $GEMSr m -r $GEMS/gems-2.04) 将simics-pal-3.0.31-linux.tar 复制到$GEMS 文件中,执行如下命令安装Simics- 3.0.31:tar xvf $GEMS/simics-pal-3.0.31-linux.tarcd $GEMScd simics-3.0-install./install-simics.sh然后根据terminal的指示执行相应的指令并将license 复制到$GEMS/simics-3.0.31/licenses中5) 建立Simics 的工作站:cd $GEMSmkdir simics_3_workspacecd $SIMICS_INSTALL/bin./workspace-setup $GEMS/simics_3_workspace再根据相应的指示,用相应的指令建立工作站6) 编辑$GEMS/scripts/makesymlinks.sh文件,使其链接正确的$SIMICS_INSTALL 的路径cd $GEMS/scripts/vi makesymlinks.sh或gedit makesymlinks.sh(后者更好用一些)将echo "Making symlink for import directory.."之后修改为:. ln -s $SIMICS_INSTALL/import import7) 运行makesymlinks.shcd $GEMS/simics_3_workspace../scripts/makesymlinks.sh8) 将Simics 的工作站simics_3_workspace链接到$GEMS/simics.cd $GEMS/ln -s simics_3_workspace simics9) 修改GEMS 的配置文件Makefiles:将$GEMS/common/Makefile.simics_version的the version string值设置为 3.0,将$GEMS/common/mon中CC_VERSION修改为4.4.3,即为当前的的g++版本,可以通过在终端使用g++ -v指令获得当前系统的版本;将HOST_TYPE 的值改为:HOST_TYPE=x86-linux;将ifeq ($(SIMICS_VERSION),3.0)之后修改为SIMICS_ROOT := $(GEMS_ROOT)/simicsSIMICS_INCLUDE_ROOT := $(SIMICS_INSTALL)/src/include修改$GEMS/ruby/module/Makefile中的HOST_TYPE=x86-linux,使用Simics-3.0相应的GEMS_ROOT定义,注掉Simics 2.X的那行,修改CC_VERSION=4.4.3 修改$GEMS/opal/module/Makefile设置HOST_TYPE=x86-linux,注释掉Simics 2.X 的定义, 解注Simics 3.0的相应定义,修改CC_VERSION=4.4.3进入目录$GEMS/tourmaline/module/Makefile,修改CC_VERSION=4.4.3,设置HOST_TYPE=x86-linux10)编译Rubycd $GEMS/rubymake PROTOCOL=MOSI_SMP_bcast DESTINA TION=MOSI_SMP_bcast11)编译Opalcd $GEMS/opalmake module DESTINATION=MOSI_SMP_bcast2.4Solaris安装1)下载下列文件sol-10-u2-ga-sparc-v1.iso;sol-10-u2-ga-sparc-v2.iso;sol-10-u2-ga-sparc-v3.iso;sol-10-u2-ga-sparc-v4.iso;sol-10-u2-ga-sparc-v5.iso;2)安装Solaris修改$GEMS/simics-3.0.31//targets/serengeti中的abisko-sol10_cd-install1.simics,在if not defined cdrom_path 后面修改$cdrom_path=―$GEMS/Solaris/sol-10-u2-ga-sparc-v1.iso_path‖修改abisko-sol10_cd-install2.simics,在while $idx < 6 后面修改$cdrom_path[$idx] = (―sol-10-u2-ga-sparc-v‖ + $idx + ―.iso‖)3)执行如下指令,开始安装:cd $GEMS/simics-3.0.31/bin./simics $GEMS/simics-3.0.31/targets/serengeti/abisko-sol10-cd-install1.simics 当终端里提示“now exit simics and continue with the abisko-sol10-cd-install2.simics”时, 输入命令exit, 退出simics,再次在终端窗口输入命令./simics $GEMS/simics-3.0.31/targets/serengeti/abisko-sol10-cd-install2.simics当终端提示出现“now exit simics and continue with the abisko-sol10-cd-install3.simics”时, 输入命令exit, 退出,再次输入命令./simics ../targets/serengeti/abisko-sol10-cd-install3.simics编译完成后simics> exit4) 启动simics修改../targets/serengti/abisko-setup.include将第一句改为if not defined os {$os = “solaris10”}./simics -x tartgets/serengeti/abisko-common.simicssimics〉continue2.5加载,配置ruby和opal1) 配置simics./simics –stallsimics> instruction-fetch-mode instruction-fetch-tracesimics> istc-disablesimics> dstc-disablesimics> cpu-switch-time 1simics> read-configuration file.simics_path2) 加载ruby 和opalsimics> load-module rubysimics> load-module opal //一般不需要加载opal3) 配置ruby 和opalruby0.setparam g_NUM_PROCESSORS 1ruby0.setparam g_MEMORY_SIZE_BYTES 4294967296ruby0.initopal0.init4)运行ruby和opalruby0.dump-statsopal0.sim-step 10000000000opal0.listparamopal0.stats3安装时遇到的问题3.1安装GEMS/Simics时遇到的问题1)在安装GEMS与Simics时,必须保证在设置环境变量之后启动机器,否则在执行到编译Ruby和Opal时,会出现错误如下:make[1]: *** No rule to make target `simics/api.h',2)在$GEMS/common/mon中不仅仅要修改参数,还要改变指定的编译器,最开始遇到的错误为:make[2]: /s/gcc-3.4.1/bin/g++: Command not foundmake[2]: *** [x86-linux/obj/parser.o] Error 127make[2]: Leaving directory `/home/yanjun/gems/slicc'后来发现,是$GEMS/common/mon中配置的问题,将ifeq之后的语句改成下面的形式,选择/usr/bin/g++为编译器,而不是/s/gcc-4.4.3/bin/g++,因为后者路径不可达ifeq ($(HOST_TYPE),x86-linux)#CC = /s/gcc-4.4.3/bin/g++CC = /usr/bin/g++OPT_FLAGS = -march=i686LDFLAGS += -ggdb -g33)编译Ruby时遇到的错误及解决方案在遇到CacheMemory.h报错时,应该在CacheMemory.h引入库"string.h"在遇到Debug.C报错时,也应该在Debug.C引入库"string.h"遇到log_tm/LazyTransactionV ersionManager.C: In member function ‗voidLazyTransactionV ersionManager::issueWriteRequests(int)‘:log_tm/LazyTransactionV ersionManager.C:284: error: redefinition of‘Address request_address‘log_tm/LazyTransactionV ersionManager.C:283: error: ‗Addressrequest_address‘ previously declared here发现函数中是这样写的CacheMsg storeMsg(Address(request_address),Address(request_address),CacheRequestType_ST_XACT,SIMICS_get_program_counter(getLogicalProcID(thread)),AccessModeType_UserMode,g_DATA_BLOCK_BYTES,PrefetchBit_No,0,Address(0),thread,g_eventQueue_ptr->getTime(),should_escape);因此报错,故改为Address arg1Address = Address(request_address);Address arg2Address = Address(request_address);CacheMsg storeMsg(arg1Address,arg2Address,CacheRequestType_ST_XACT,SIMICS_get_program_counter(getLogicalProcID(thread)),AccessModeType_UserMode,g_DATA_BLOCK_BYTES,PrefetchBit_No,0,Address(0),thread,g_eventQueue_ptr->getTime(),should_escape);4)编译Opal时的错误system/simdist12.C: In function ‗void* mm_malloc(size_t, size_t, const char*, const char*, int, int)‘:system/simdist12.C:548: error: declaration of C function ‗void* mm_malloc(size_t, size_t, const char*, const char*, int, int)‘ conflicts with/home/yanjun/gems/simics-3.0.31/src/include/simics/util/alloc.h:60: error: previous declaration ‗void* mm_malloc(size_t, size_t, const char*, const char*, int)‘ here system/simdist12.C: In function ‗void* mm_zalloc(size_t, size_t, const char*, const char*, int, int)‘:system/simdist12.C:554: error: declaration of C function ‗void* mm_zalloc(size_t, size_t, const char*, const char*, int, int)‘ conflicts with/home/yanjun/gems/simics-3.0.31/src/include/simics/util/alloc.h:64: error: previous declaration ‗void* mm_zalloc(size_t, size_t, const char*, const char*, int)‘ here system/simdist12.C: In function ‗char* mm_strdup(const char*, const char*, int, int)‘:system/simdist12.C:559: error: declaration of C function ‗char* mm_strdup(const char*, const char*, int, int)‘ conflicts with/home/yanjun/gems/simics-3.0.31/src/include/simics/util/alloc.h:74: error: previous declaration ‗char* mm_strdup(const char*, const char*, int)‘ heresystem/simdist12.C: In function ‗void* mm_realloc(void*, size_t, size_t, const char*, const char*, int, int)‘:system/simdist12.C:571: error: declaration of C function ‗void* mm_realloc(void*, size_t, size_t, const char*, const char*, int, int)‘ conflicts with/home/yanjun/gems/simics-3.0.31/src/include/simics/util/alloc.h:66: error: previous declaration ‗void* mm_realloc(void*, size_t, size_t, const char*, const char*, int)‘ here 解决方案:可以将simdist12.C中的if 0改为if 1,或者将报错的函数都注掉3.2安装Solaris时遇到的问题1)安装Solaris时的错误,最初没有考虑到对虚拟机的空间利用率会这么大,所以在下载完Solaris的操作系统后意识到虚拟机容量不够,故又在外面挂接了一个磁盘,虚拟空间是90G,但实际最大可分配的空间也就是二十几吉而已,因为D盘中已经放了很多东西。

相关主题