基于Simics全系统模拟器的研究.doc

上传人:文库蛋蛋多 文档编号:2394119 上传时间:2023-02-17 格式:DOC 页数:57 大小:826.50KB
返回 下载 相关 举报
基于Simics全系统模拟器的研究.doc_第1页
第1页 / 共57页
基于Simics全系统模拟器的研究.doc_第2页
第2页 / 共57页
基于Simics全系统模拟器的研究.doc_第3页
第3页 / 共57页
基于Simics全系统模拟器的研究.doc_第4页
第4页 / 共57页
基于Simics全系统模拟器的研究.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《基于Simics全系统模拟器的研究.doc》由会员分享,可在线阅读,更多相关《基于Simics全系统模拟器的研究.doc(57页珍藏版)》请在三一办公上搜索。

1、本科学生毕业论文基于Simics全系统模拟器的研究 Research on Simics A Full System Simulation Platform 论文作者 院 系 信息工程学院 专 业 信息工程专业 学 号 指导老师 完成日期 中文摘要本文主要对全系统模拟器Simics的搭建与使用进行研究。通过在服务器与普通计算机上构建Simics 4.0模拟平台,实现了在Simics环境中,快速生成一个虚拟的目标系统,建立集群的网络连接。并且通过对简单嵌入式平台Ebony的构建与使用,了解了Simics模拟环境的搭建与调试方法。以前,研究人员对于多处理器的研究是建立在真实设备上的,既浪费时间又浪

2、费资金,而利用Simics可以搭建各种多处理器环境。本文设计了两种简单多处理器模型,包括对称(SMP)与非对称(AMP)模型。利用Simics提供的硬件设备模型语言DML与Python语言搭建了多处理器硬件模拟环境,并且在模拟环境中安装了Linux操作系统。最后通过Simics提供的环境测试命令、读写CPUID以及使用CPU亲和力函数验证了使用Simics模拟的多处理器系统搭建的正确性。关键词:Simics 模拟器 DML 多处理器 CPUID CPU亲和力AbstractThis paper studies on the putting up and application of full

3、system simulator Simics. The speedy generation of virtual objective system and establishment of cluster network in Simics environment are achieved through the setting up of Simics 4.0 simulation platform on server and general computers. And the putting up and debug methods of Simics simulation envir

4、onment is comprehended via the putting up and application of simple embedded platform Ebony.In the past, the research of multi-processor is conducted by researchers on real device. Its time-costing and a waste of capital. With the application of Simics, various multi-processor environments can be es

5、tablished. This paper designs two simple multi-processor models, including symmetric (SMP) model and asymmetric (AMP) model. With the hardware modeling language DML applied by Simics, multi-processor hardware simulation environment with Python language can be put up. Linux operating system is also i

6、nstalled in the simulation environment.At last, the correctness of putting up simulation multi-processor system by Simics is verified by the environment testing order, read and write CPUID, and application of CPU affinity function provided by Simics.Keyword: Simcis Simulator DML Multi-processor CPUI

7、D CPU Affinity目录第一章 引言11.1 研究背景11.2 Simics的技术特点21.2.1 容易扩展21.2.2 支持回退机制21.3 研究目标3第二章 Simics全系统模拟器的安装与调试42.1 Simics的安装42.1.1 如何获得Academic License42.1.2 Simics服务器端的安装62.1.3 Simics客户端的安装(Windows Vista/7操作系统)82.1.4 Simics客户端的安装(Linux32/64操作系统)92.2 Simics简单使用方法102.2.1 运行操作系统112.2.2 保存操作系统状态122.2.3 回退机制Hi

8、ghtlight132.2.4 利用Simicsfs使主机与模拟的操作系统间建立联系142.3 为Simics建立网络连接152.3.1 在Simics系统中建立虚拟网络162.3.2 使用Simics连接真实网络17第三章 多处理器模型搭建203.1 搭建多处理器模型的理论基础203.1.1 利用模拟器搭建多处理器模型的优势203.1.2 DML语言及Python语言203.1.3 多处理器系统平台模型设计223.2 硬件与操作系统环境搭建233.2.1 基于Simics的硬件环境搭建233.3 基于Simics的操作系统环境搭建27第四章 测试多处理器平台性能294.1 测试对称多处理系统

9、基本信息294.1.1 利用Simics测试系统信息294.1.2 利用内部Linux命令测试系统信息314.2 测试非对称多处理系统基本信息324.2.1 利用Simics测试系统信息324.2.2 利用内部Linux命令测试系统信息334.2.3 利用CPUID与CPU亲和力测试系统信息344.2.4 简单并行程序设计38第五章 结论415.1 研究成果415.2 存在的不足与改进41第六章 体会43致谢44参考文献45附录1 获取CPUID程序设计代码47附录2 并行程序设计代码50第一章 引言1.1 研究背景模拟器在计算机系统的设计开发过程中有非常重要的作用:设计初期,模拟器可以用来对

10、各种设计方案进行粗粒度模拟,通过比较模拟结果来选择最优设计方案;产品开发期间,模拟器用来对各种微结构设计进行评估,对一些选择进行折衷;产品开发后期,模拟器主要用来进行目标系统的系统软件开发,使得软硬件开发可以同时进行,加快系统开发速度;系统完成之后,模拟器可以取得丰富的踪迹信息,从而对系统进行瓶颈分析和性能优化。由于模拟器具有上述重要作用,学术和工业界都开发了大量的模拟器。常见的研究用模拟器有SimpleScalar、SimOS、M5、Liberty等,各个公司也都开发了自己的模拟器,比如IBM公司的Mambo模拟器、AMD公司的SimNow等 许建卫 杨伟, 体系结构模拟器的技术与发展, 信

11、息技术快报, 2008年1月刊第六卷。Virtutech Simics也是一款模拟器。它最初由瑞典计算机科学研究院(SICS)开发,后于1998年交付Virtutech公司进行商业化开发 2010年2月15日。Simics可以在标准X86上快速生成一个虚拟的目标系统。从研究者的角度来看,这个系统就是一个真正意义上的物理硬件模型。一个Simics模型对应的就是一个真实的平台和系统,可以是一个最基本的单片机系统或者存储器,也可以大到几十乃至几千个芯片、CPU、DSP、加速器、平台、构架以及通过网络连接构成的集群系统。在科学研究领域,Simics常被用于研究计算机体系结构,例如:内核级源码调试。利用

12、Simics,我们可以模拟各种处理器内核以及混合处理器架构。Simics全面支持超线程、SMP、CMP等处理器技术。利用Simics我们可以修改并调试内核的各种参数,包括缓存、频率、内核结构等。传统内核源码调试器如Linux下的Kgdb以及Windows下的Softlce的基本原理是在内核中加入调试模块,利用调试模块控制内核的运行并与外界通信报告调试信息 周旭 李根, 基于Simics的源码级Linux内核调试器的设计与实现, 计算机科学, 2007年6月。而使用Simics调试内核仅需在命令窗口输入一些简单的内核调试命令。1.2 Simics的技术特点Simics可以模拟多种指令集架构 20

13、10年2月15日,包括Alpha、x86-64、ARM、EM64T、IA-64、MIPS、PowerPC、POWER、SPARC、x86等;可模拟众多外设,如键盘鼠标,直接内存存取,软盘、磁盘,3D图形加速、网络以及自定义设备等;其上可运行多种操作系统,如DOS、Windows、VxWorks、OSE、Solaris、Tru64、FreeBSD、Linux、QNX、RTEMS等 2010年2月15日;可模拟多种系统如嵌入式系统、机顶盒、交换机、对称式多处理器架构、机群(Cluster)以及这些系统构成的复杂网络 2010年2月15日。Simics的最新版本是Simics 4.0。它具有以下两个

14、重要特点:1.2.1 容易扩展Simics 4.0提供了功能丰富的应用程序接口和数据结构 2010年2月19日,使得研究者可以方便地定义自己的设备模块,添加新的控制命令和数据收集分析例程。Simics在虚拟设备模拟和调试环境支持上做了相当多的工作,取得了较大的成果。它引入了设备模型语言DML(Device Modeling Language)和相应的编译器DMLC(Device Modeling Language Compiler),研究者可以利用DML快速创建非标准的虚拟设备,通过DMLC与系统其他部分整合。1.2.2 支持回退机制Simics 4.0实现了可逆执行及调试的功能 2010年2

15、月19日,使得程序不用重启就可以恢复到以前的执行状态,这对调试而言很有意义。由于逐个周期地保存处理器、存储系统及外设的状态需要非常大的存储空间,同时会使得模拟时间增长以至于不可容忍,所以Simics采用检查点机制,在回滚粒度、存储及时间消耗上作了一个折衷。如果研究者需要程序逆向执行,则回滚至目标之前最近的一个检查点,再执行至目标指令,在当今技术条件下,程序运行速度之快可以完全掩盖这种机制带来的延迟。1.3 研究目标传统多处理器环境的调试是建立在真实系统之上的,这种调试方法很不利于硬件的调整,并且调试时间较长、成本较高。因此,近几年在多处理器方向上的研究大多使用模拟器来完成。本文主要研究如何使用

16、Simics构建并调试多处理器模拟环境。研究的主要步骤如下:首先在服务器与客户端上搭建Simics 4.0运行环境;其次,熟悉Simics的操作及调试方法;然后,利用Simics特有的DML语言与Python语言搭建多处理器硬件环境,并安装操作系统;最后,编写调试代码,测试安装在Simics中的多处理器环境的运行情况。第二章 Simics全系统模拟器的安装与调试2.1 Simics的安装由于研究平台要利用Simics 4.0搭建并调试多处理器模拟环境,考虑到模拟系统的速度问题,在此选用DELL Power edge 2970服务器作为研究的服务器端,Power edge 2970服务器配有2颗

17、AMD 4核处理器,8G内存,操作系统环境为RedHat Enterprise Server 5.1 64位Linux操作系统。客户端为HP笔记本电脑,配有双核T5600处理器,2G内存,操作系统环境为Windows Vista 32位操作系统。为了搭建模拟环境,我们首先需要在Linux与Windows平台上安装Simics全系统模拟器。尽管Simics已经商业化,但Virtutech公司考虑到Simics来源于研究机构,仍愿意免费服务于研究机构。对于Virtutech公司认定确实用于学术和教育的学校或研究机构,可提供学术版本下载 2010年2月20日。2.1.1 如何获得Academic L

18、icense获取Simics 4.0的使用权限不是一件简单的事情。为了获取Simics软件的下载与使用权限,首先需要在Virtutech公司的网站上注册。注册时需要填写详细的申请表单,叙述Simics在研究中的具体用途。特别强调,注册时填写的E-mail地址必须是学术机构或大学域名,如或。对于其他的商业E-mail地址,Virtutech公司一律不予审核。同时,由于Virtutech公司取消了以前针对个人的license许可方法,改为site license 许可,现阶段一所大学或一家科研机构原则上只能共用一个license 许可。用户在安装和使用Simics时,只要能够访问安装有licens

19、e 的服务器端(site license server),即可以获取使用软件的权限。在申请过程中,申请者需要填写两次表单。首次注册时申请者需要填写license服务器的hostid,这个hostid用于将license与服务器MAC地址绑定。申请者可以利用Virtutech公司主页提供的hostid工具完成hostid的计算。注意,尽管hostid的形式类似MAC地址,但此hostid是在Linux中通过lmutil命令来获得的,不是真实的MAC地址,具体操作方法可参照官方网站注册帮助 2010年2月20日。 第一个表单填完提交之后,Virtutech公司会很快给填写E-mail地址的机构发送

20、一封邮件,里面包含了用户名和密码。再次在Virtutech公司主页登录,接着填写第二个表单,这个表单主要用于调查申请者为何要使用Simics。提交之后,要经过一段时间,审核通过之后会再回一封邮件,里面包含账号激活信息以及安装Simics必须的license(simics_3_0.lic与simics_4_0.lic)。 这时,登陆官方网站后就可以下载所需要的安装包了,有三种版本(Linux,Linux64,Win32),还可以进入官方论坛参与讨论。 E-mail中的license是以下形式的,采用的是base64编码。Content-Type: application/octet-stream

21、; name=simics_3_0.licContent-Transfer-Encoding: base64Content-Disposition: attachment; filename=simics_3_0.licI1BsZWFzZSBEbyBub3QgZGVsZXRlIHRoaXMgY29tbWVudCBsaW5lLg0KU0VSVkVSIHRoaXNfaG9zdCAwMDFlOGM3NTJhOTgNClZFTkRPUiB2dGVjaA0KVVNFX1NFUlZFUg0KSU5DUkVNRU5UIGVjbGlwc2UgdnRlY2ggMy4wIDI2LW1heS0yMDEwIDMwMC

22、BWRU5ET1JfU1RSSU5HPVRhO0FjbTtTbiBcDQoJ.Content-Type: application/octet-stream; name=simics_4_0.licContent-Transfer-Encoding: base64Content-Disposition: attachment; filename=simics_4_0.licI1BsZWFzZSBEbyBub3QgZGVsZXRlIHRoaXMgY29tbWVudCBsaW5lLg0KU0VSVkVSIHRoaXNfaG9z. license使用以前需要解码,具体方法为:1)将其拷贝到一个文本文件

23、中,如license.txt,然后删除其中的空格和空行,使所有字符成为一个整体。2)在Linux下使用base64命令将base64编码转化为明文:rootlicenseserver:$cat license.txtI1BsZWFzZSBEbyBub3QgZGVsZXRlIHRoaXMgY29tbWVudCBsaW5lLg0KU0VSVkVSIHRo.rootlicenseserver:$base64 -d license.txt #Please Do not delete this comment line.SERVER this_host 001b210c0ec6VENDOR vtechU

24、SE_SERVER.3)将其中的文字拷出,存为license.lic文件。2.1.2 Simics服务器端的安装 接下来正式进入Simics 4.0的安装,按照官方文档 /doc/simics-installation-guide.pdf 2010年2月27日,首先需要安装服务器端。服务器端主要完成license授权。1)修改license.lic文件将第一行中this_host修改为Simics服务器端的主机名licenseserver,这个名字很重要,要求在局域网中唯一,新安装的Linux系统很多主机名默认为localhost,需要对其进行修改:rootlocalhost:$hostnam

25、e licenseserver 2)下载服务器端软件接下来在 上下载文件:simics-pkg-simics-base-4.0.61-linux64.tar软件共有三种版本:Linux64、Linux、Win32,由于实验服务器上目前运行的是RedHat Enterprise Server 64位Linux操作系统,所以,选择下载类别为Linux64。3)安装软件文件下载完毕,解压安装包。rootlicenseserver:$tar -xvf ./simics-pkg-simics-base-4.0.61-linux64.tar 此时会产生一个simics-4.0-install目录,进入该目

26、录,运行./install-simics.pl脚本,该脚本指导安装,比较简单。在此过程中会提示指定license.lic文件路径,选择跳过。4)进一步修改license.lic前面修改了this_host,现在需要将第二行VEVDOR vtech的路径修改为服务器端vtech命令的真实路径。例如:VENDOR vtech /opt/virtutech/simics-4.0/simics-4.0.61/flexnet/amd64-linux/bin然后将license.lic文件拷入/bin目录下。5)修改系统变量路径修改系统文件/root/.bash_profile,在PATH变量后加入/op

27、t/virtutech/simics-4.0/simics-4.0.61/flexnet/amd64-linux/bin即可。6)启动license服务 进入/opt/virtutech/simics-4.0/simics-4.0.61/flexnet/amd64-linux/bin目录,运行:rootlicenseserver:$lmgrd -c license.lic 如果在此过程中没有提示错误error或直接看到明确的成功启动字样,表明license服务成功启动了,这时在命令行下输入netstat altp命令查看端口映射,如果能看到22089/vtech等字样,说明license服务已

28、被用于端口,注意端口号会变化。另外,要保证运行以上命令时license.lic在当前目录下。如果使用root用户权限运行license服务,会有一个安全方面的提示,建议使用普通用户权限。7)停止license服务 进入/opt/virtutech/simics-4.0/simics-4.0.61/flexnet/amd64-linux/bin目录,执行:rootlicenseserver:$lmutil lmdown 2.1.3 Simics客户端的安装(Windows Vista/7操作系统)启动Simics 4.0服务器端之后,可以开始安装客户端。客户端是Simics真正的运行环境。客户端

29、有两个版本Linux版与Windows版。安装客户端之前要保证客户端与服务器在网络上连通。1)下载客户端软件 首先从simics-pkg-firststeps-4.0.8-win32.msisimics-pkg-simics-base-4.0.61-win32.msisimics-pkg-model-builder-4.0.16-win32.msisimics-pkg-x86-440bx-4.0.19-win32.msi2)修改客户端license.lic文件 和安装Simics服务器端时相同,首先也要修改license.lic文件,将第一行中this_host修改为Simics服务器端的主机

30、名(licenseserver),然后将第二行VEVDOR vtech的路径修改为服务器端vtech命令的真实路径,例如:VENDOR vtech /opt/virtutech/simics-4.0/simics-4.0.61/flexnet/amd64-linux/bin, 文件中除前三行后的其他脚本可以删除。3)修改系统文件hosts 进入C:WindowsSystem32driversetc中修改hosts文件,注意:由于hosts是系统保护文件,一般是无法修改的,这样必须重新设置一下权限。鼠标右键-“属性”-“安全”-“编辑”-“组或用户名”选“Users”-“完全控制”-最后确定就行

31、了。在hosts文件中127.0.0.1 localhost的上一行加入ServerIP hostname,ServerIP为Simics服务器在网络内IP地址,hostname为Simics服务器名。修改后打开命令提示符环境,尝试ping Simics服务器主机名licenseserver,若能够ping通说明修改成功。4)依次安装simics-base,simics-firststeps及simics-model-builder,其中安装simics-base时不提供license.lic的路径,直接跳过。5)安装完毕后将license.lic复制到安装目录下的licenses文件夹下,然

32、后运行Simics客户端可看到激活成功的提示。2.1.4 Simics客户端的安装(Linux32/64操作系统) 由于Simics 4.0客户端在Linux下的安装与在Windows上的安装有很大不同,所以在此很有必要简要叙述一下Simics在Linux下的安装方法。1)下载客户端软件 首先从simics-pkg-firststeps-4.0.8-linux.tarsimics-pkg-simics-base-4.0.61-linux.tarsimics-pkg-model-builder-4.0.16-linux.tarsimics-pkg-x86-440bx-4.0.19-linux.t

33、ar2)修改license.lic,方法与Windows版本相同。3)修改hosts文件 进入etc中修改hosts文件,在最后一行加入ServerIP hostname,ServerIP为Simics服务器在网络内的IP地址,hostname为Simics服务器端主机名。修改后打开终端,尝试pingSimics服务器主机名,若能够ping通说明修改成功。4) 解压并安装Simics 将下载到的文件解压到simics-4.0-install中roothost: $tar -xvf ./simics-pkg-firststeps-4.0.8-linux.tar roothost: $tar -x

34、vf ./simics-pkg-simics-base-4.0.61-linux.tar roothost: :$tar -xvf ./simics-pkg-model-builder-4.0.16-linux.tar roothost: :$tar -xvf ./simics-pkg-x86-440bx-4.0.19-linux.tar 然后依次安装simics-base,firststeps,model-builder。 运行./install-simics.pl脚本,选择默认安装路径,当提示输入license路径时选择跳过。安装完毕后将license.lic复制到/opt/vertute

35、ch/simics-4.0/simics-4.0.61中的licenses文件夹下。注意:在Linux企业版中启动Simics时会遭到SELINUX(一种Linux保护机制)拦截,这时进入Simics的/bin目录,在命令行下输入:roothost:setsebool -p snmpd_disable_trans=1 roothost:setenforce Permissive 这时拦截将会取消,进入/bin文件夹运行simics-gui,可进入Simics操作界面。Simics 4.0客户端到此为止就安装完毕了,下面可以进行简单的测试,用来验证Simics所有组件安装成功。首先安装一个tar

36、get包(target将在下节介绍),例如:x86-440bx,运行Simics客户端,点击File-New Session from Script,选择刚安装的target x86-440bx中的任一target文件,点击Run-Run Forward,可以看到模拟器在另一个窗口开始运行。下一章将对Simics的使用进行介绍。2.2 Simics简单使用方法 本节将介绍如下内容:1)如何使用Simics模拟操作系统,并配置相关操作系统参数。2)如何保存操作系统状态。3)如何使主机与模拟的操作系统间建立联系,并传送文件。4)如何使用简单Simics指令进行调试操作。本节将以ebony系统为例对

37、以上内容进行详细说明 /doc/getting-started-with-simics.pdf 2010年3月5日,ebony是一个运行在PowerPC 440GP开发板上的极小嵌入式Linux系统,它具有Linux系统的大部分特征。2.2.1 运行操作系统Simics 4.0在运行时默认打开三个视图窗口,即命令输入窗口(图2.1)、状态窗口(图2.2)与模拟窗口(图2.3)。命令输入窗口用来输入调试命令,状态窗口显示当前硬件配置信息,模拟窗口为操作系统运行窗口。 图2.1 图2.2 图2.3Simics运行时首先读取target文件,target文件是使用Python语言编写的硬件加载脚本,

38、其中包含此次模拟的所有硬件设置。Python语言具体使用方法将在下章介绍,本章的ebony系统模拟主要利用官方提供的target脚本。 首先点击状态窗口任务栏的File-New Session From Scrips,在workplace工作目录中进入/targets/ebony/,选择ebony-linux-firststeps.simics,点击打开。在Simics命令窗口中输入continue,此时命令行状态改为runnning,Simics模拟器开始运行,如果要暂停模拟则输入stop。simics continuerunning stop 模拟开始运行后,状态窗口将输出一系列系统信息如

39、CPU的类型,内存大小与硬盘大小等情况,如图2.2所示。当系统信息输出完毕后,可以在模拟窗口中输入一些简单的Linux命令:rootfirststeps: # pwd/rootrootfirststeps: # ls /LICENSE dev host lost+found proc tmpbin etc lib mnt root usrboot home linuxrc opt sbin var可以看到ebony具有与普通Linux系统相似的文件系统结构。2.2.2 保存操作系统状态为了避免反复启动操作系统,必须要使用Simics的checkporting功能,它可以保存操作系统的当前工作状

40、态,如果不保存当前的工作状态就关闭了Simics模拟器,下次启动系统时上次进行的配置操作与文件将完全丢失。为了保存当前工作状态,我们首先暂停操作系统的模拟。然后点击任务栏中的File-Save Checkport,将当前状态保存为.conf格式文件,例如:after_boot.conf,或者可以直接在命令窗口中输入write-configuration+filename。running stopsimics write-configuration after_boot.conf要打开上次保存的操作系统状态,点击File -Open Checkpoint,载入after_boot.conf文件就

41、可以了。2.2.3 回退机制HightlightSimics支持一种特殊的回退机制Hightlight,Hightlight使操作系统在运行的过程中可以回退到任意时间点 http:/www.cs.cmu.edu/410/doc/simics_commands.html 2010年3月10日。为了实现回退,首先要将当前状态保存为书签,在这里使用set-bookmark booted命令,在模拟窗口输入:running stopsimics set-bookmark bootedc是continue的简写形式,它可以达到与continue相同的效果。为了验证回退机制,首先删除一个重要的系统功能,在

42、模拟窗口进行如下操作:rootfirststeps: # rm /bin/lsrootfirststeps: # ls /ls: No such file or directory此时系统的ls命令功能已经被删除。ptime命令是Simics中常用的一个命令,利用它可以看到系统中模拟的CPU当前的运行情况,例如进行了多少次运算及运行时间等等。如果是多处理器,还可以看到两个处理器的不同情况,在命令窗口输入:running stopsimics ptimeprocessor steps cycles time scpu0 16667617210 16667617210 166.676接下来使用skip-to命令进行回退操作,在命令窗口输入:simics skip-to bookmark = bootedsimics ptimeprocessor steps cycles time scpu0 13586370338 135863703

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号