文档库 最新最全的文档下载
当前位置:文档库 › gem5模拟器简介

gem5模拟器简介

gem5模拟器简介

作者:木雍玥标签:IT数码2012-01-19 15:21 星期四晴

gem5模拟器[1]结合了M5[2]和GEMS[3]中最优秀的部分,是一款高度可配置、集成多种ISA和多种CPU模型的体系结构模拟器。

我们知道,M5是由Michigan大学开发的一款开源的多处理机模拟器,受

到了业内的广泛关注,很多高水平论文都采用M5作为研究工具。另一方面,Wisconsin推出的GEMS能够对储存层次进行详细而灵活的模拟,包括对多种不

同的cache一致性协议和互联模型的支持。目前的gem5实际上是M5和GEMS

的一个紧耦合版本。这从一个侧面反映出存储问题在当前的体系结构研究中的重要地位。处理器核数目的增加导致内存带宽不足,成为制约 CMP性能的关键因

素之一。

目前,gem5已经能够支持多种商用ISA,包括X86、ARM、ALPHA、MIPS、Power、SPARC等,并且能够在X86、ARM、ALPHA上加载操作系统。

gem5项目是由学术界和企业界联合打造的,包括AMD、ARM、HP、MIPS、Google,以及Univ. of Michigan、Wisconsin Madison、Texas Austin、Princeton、MIT。事实上,M5和GEMS的这次联姻,是CPU模拟器同存储层次模拟器的强强联合,是针对Intel对 Simics进行封锁的有力还击。对于开源社区和学术界,这固然是一件好事,但是目前在性能上同Simics还存在不小的差距。

目标

gem5的目标包括三个方面:灵活性(Flexibility)、可用性(Availability)以及高度合作性(High level of collaboration)。

所谓灵活性是指gem5提供了多种CPU模型,多种系统模型,以及多种存储模型。CPU模型从简单到复杂分别是Atomic、Timing、In- order、O3(Out of Order)。系统模型分为SE(Syscall Simulation)和FS(Full System)两种。存储模型分为Classic和Ruby两种。

所谓可用性是指gem5采用基于BSD的license管理,对不同类型的用户,包括学术研究人员、企业界的工程技术人员、学生等,都很友好。

所谓高度合作性是指gem5是一个开源社区项目,任何有志之士都可以贡献自己的力量。

对于体系结构研究人员而言,我们对gem5的开源是很欢迎的,这便于我们学习使用以及修改代码,gem5的模块化设计也确实为我们提供了这样的便捷。

当然,灵活性才是gem5我们最关注的特征,这关系到我们的研究和实验设计可以开展的空间有多大。而gem5对于性能避而不谈,是因为目前这款模拟器速度还是很慢。我想这也是下一步gem5改进的主要方向。

设计特征

gem5的设计特征包括4个方面:面向对象、Python集成、领域特定语言DSL、标准化接口。

整个项目采用面向对象的模块化设计,用C++和Python语言编写(其中85%是C++)。正是这个原因,使得gem5具备高度的灵活性。gem5中的所有的主要组件都被看成一个SimObject,每个SimObject由两个类表示,一个Python类,一个C++类。

对于不同的组件SimObject,gem5中使用Python进行集成,即Python负责

初始化、配置和模拟控制。

为了提供定制硬件模块的功能,gem5提供了两种DSL,一种用来指定ISA(继承自M5),一种用来指定cache一致性协议(继承自GEMS),也就是说用户可以自己定制ISA和cache一致性协议。

标准化接口主要是包括端口(port)接口和消息缓冲接口(message buffer)。在gem5中,端口是一个用来连接两个内存对象(memory object)的接口。在Classic内存系统中,端口接口连接包括CPU到cache、cache到总线、以及总

线到设备和内存的所有内存对象。端口支持三种访问数据的机制,即timing、atomic和functional,以及用来确定拓扑结构和调试的接口。计时(Timing)模式用于对访存计时的详细建模。通过发送消息对内存系统进行请求,而响应则是通过其它消息异步地返回。原子(Atomic)模式用来获得一些计时信息,但不是基于消息的。当发生原子调用(通过功能调用),操作的状态立即同步地发生改变,这种方式性能更高但是精度较低,因为没有对消息的互操作进行建模。最后,功能访问对模拟器状态进行更新,而不改变任何计时信息。这些一般用来进行调试、系统调用模拟和初始化。Ruby使用端口接口连接CPU和设备,并

且在内部添加了消息缓冲来连接Ruby对象。消息缓冲同端口一样提供了标准的通信接口,然而消息缓冲在一些细节上不同于消息typing和storage。后续工

作中将把端口和消息缓冲改造成统一的接口。

模拟能力

未来工作

gem5的未来工作主要有四个方向:

功耗模型。目前GEMS和M5可以使用外挂的功耗模型,比如Orion和McPAT,但是gem5希望集成一个综合性的模块化的功耗模型。这凸显了功耗问题已经成为当前的体系机构研究和微处理器产业发展的瓶颈问题之一。

对各种ISA/CPU/memory模型的全面支持。目前的版本可能在某些配置下不能很好地运行。

并行化。显然目前gem5的性能还不尽如人意。为此,需要做并行化的工作。

检查点导入。即使是用gem5的简单CPU模型来进行模拟,其速度也明显慢于那些基于二进制翻译的模拟器,比如QEMU或者SimNowTM等等。 gem5开发者们正在考虑将这些模拟器中的状态检查点转移到gem5中。用户可以将模拟快速推进到某个时刻点,然后再从这个时刻点开始继续模拟。如果采用类似KVM等虚拟机的话,可能获得比用二进制翻译器更高的性能。

参考文献

[1] The gem5 Simulator, SIGARCH Computer Architecture News, CAN’11

[2] Binkert, N. L., Dreslinski, R. G., Hsu, L. R., Lim, K. T., Saidi,

A. G., and Reinhardt, S. K. The M5 Simulator: Modeling Networked Systems. IEEE Micro 26, 4 (Jul/Aug 2006), 52-60.

[3] Martin, M. M. K., Sorin, D. J., Beckmann, B. M., Marty, M. R., Xu, M., Alameldeen, A. R., Moore, K. E., Hill, M. D., and Wood, D. A. Multifacet's general execution-driven multiprocessor simulator (GEMS) toolset. SIGARCH Comput. Archit. News 33, 4 (2005), 92-99.

相关文档