gem5学习8——GEM5模块继承关系和运行机制解析

GEM5模块和类继承关系解析

GEM5有很多Python模块组成,在Python中一个xxx.py文件就可以构成一个模块,通过目录来组织模块间的层次关系,在每个相关的目录下面有个__init__.py文件来说明这个目录是个Python包组织的目录。下图是GEM5使用的模块及其层次关系。


其中GEM5内部用到的模块在m5.internal包下,这些模块也都是由swig导出的,swig的描述文件在src/python/swig/中。而GEM5仿真真正模拟CPU、Cache等组件的模块被映射到m5.objects中。

GEM5组件中类的部分继承关系如下图所示,所有的组件模块都继承于类SimObject,这些模块也最终map到Python包中的m5.objects下。


GEM5运行机制

使用下面命令运行仿真程序

build/X86_MESI_Three_Level_sparse/gem5.opt configs/example/se.py -c test  
查看目录m5out下生成的config.dot.pdf文件可以看到使用的架构图如下:


GEM5中,cpu core 和ruby(用来仿真cache和memory)直接用port连接。ruby内部模块直接用Messagebuffer连接。

接前篇,系统调用了simulate()函数,在simulate函数中调用doSimLoop()函数,参数为一个EventQueue,这个函数体中有一个while(1)的循环,不断的调用serviceOne()函数(在eventq.cc文件中),从EventQueue中取下队首的事件,然后调用process函数,process是一个回调函数,process函数在不同的模块有不同的处理方法,在cpu中可能是一个fetch行为、一个译码执行行为等。在Ruby中,一般会触发一个wakeup行为。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值