[GEM5学习]2、GEM5模块继承关系和运行机制解析
2014-06-22 19:59
309 查看
GEM5模块和类继承关系解析
GEM5有很多Python模块组成,在Python中一个xxx.py文件就可以构成一个模块,通过目录来组织模块间的层次关系,在每个相关的目录下面有个__init__.py文件来说明这个目录是个Python包组织的目录。下图是GEM5使用的模块及其层次关系。其中GEM5内部用到的模块在m5.internal包下,这些模块也都是由swig导出的,swig的描述文件在src/python/swig/中。而GEM5仿真真正模拟CPU、Cache等组件的模块被映射到m5.objects中(我花了一些时间才搞懂了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行为。
相关文章推荐
- gem5学习8——GEM5模块继承关系和运行机制解析
- 第133讲:Hadoop集群监控Ganglia架构设计和运行机制详细解析学习笔记
- 第102讲:通过案例解析Akka中的Actor运行机制以及Actor的生命周期学习笔记
- Add-In运行机制解析(下)【转载】
- Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(上)
- 学习委托(2)-------解析委托的实现机制
- 托管模块结构及运行机制
- Hibernate 3.2 学习笔记 映射继承关系
- ASP.NET MVC学习笔记-MVC运行机制之源码剖析
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】全面解析Linux内核的同步与互斥机制--同步篇
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】全面解析Linux内核的同步与互斥机制--互斥篇
- [MFC学习之C++基础] 孙鑫视频中第三讲中提到的小测试程序(关于基类和子类的继承关系)
- JavaScript学习:基础继承机制
- WCF学习之一:WCF 运行机制
- Hibernate学习笔记-------继承关系映射
- Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)
- 学习委托(2)-------解析委托的实现机制
- 学习委托(2)-------解析委托的实现机制
- 学习委托(3)-----解析委托的实现机制续篇
- java学习手记:java的优点与运行机制