查了很多篇帖子,包括官网,对于scon在做啥只知道SCons利用SConstruct文件文件来查找和编译所有的Gem5源代码,执行完后生成一个gem5/build目录,得到相应的二进制文件。但你又不知道整个过程是在干啥,在查阅了n篇资料后,整理了一下自己的思路,记录如下:
我们在构建gem5模拟器的时候,可以选择不同处理器的配置(X86、ARM、ALPHA),Gem5的构建是通过scons工具来完成的,可以通过进入解压gem5源文件的目录运行下面的命令来完成构建。假设我们在构建Gem5模拟器的时候使用如下语句:
scons build/X86/gem5.opt -j2
其中“build”项指明了构建gem5模拟器的目录;“X86”项指明了对构建模拟器的配置信息包括指令集结构、CPU模型等,这是在初次构建的过程中所使用的方法,在之后的模拟中可以通过在构建项后面加选项的方式来改变模拟器的配置;gem5.opt项指明了要构建的gem5的二进制文件,申明了所要用到的编译器标志集(对编译器的配置以产生不同的二进制文件),不同的文件具有不同的特点和优势,现在可用的类别有:gem5.debug, gem5.opt, gem5.fast, gem5.prof and gem5.perf。他们各自的特点如下:
假设现在我们已经创建了一个简单的模拟脚本(即simple.py),我们可以运行Gem5了。Gem5可以接受许多参数,但只需要一个位置参数,即模拟脚本。因此,我们可以简单地从根Gem5目录运行Gem5,如下所示:
build/X86/gem5.opt configs/tutorial/simple.py
整个过程将python脚本传递给gem5二进制文件进行模拟,具体来说,应该就是模拟器根据指定的参数分析整个体系结构的指令的存储过程,存储内容,运行原理,以及tick周期等。
gem5是计算机体系结构模拟平台,如果非得找一个实体说它是什么,那它应该是个将CPU内存,外设都以对象化形式表示并且希望用最精简的模块组合这些对象模块以实现最理想最复杂功能的芯片。只不过这个芯片是用软件设计的,功能有点类似与七巧板的拼图,你想拼什么图,就去找什么样的板,最终能够方便快捷的用其支持的CPU模型,内存模型,系统模型对象快速组装出一台用软件实现的计算机。然后根据用软件构建的这台虚拟机的运行二进制程序后的trace的内容,分析这个体系结构的指令的存储过程,存储内容,运行原理,以及tick周期。因此这个模拟平台通常都被计算机体系结构设计者和研究者广泛使用。
参考资料:
(8条消息) gem5学习4——Build System_ivy_reny的博客-CSDN博客
(8条消息) GEM5教程--gem5开始之旅(一)_人间之清欢的博客-CSDN博客
(8条消息) Gem5 学习 1 - Gem5 及其 文件结构_小张的学习手册的博客-CSDN博客
gem5模拟器使用介绍(一) - 张同光 - 博客园 (cnblogs.com)
(8条消息) gem5与Armv8模拟器的设计原理指导与使用指导_yuyezhulan的博客-CSDN博客