SimpleScalar目录结构
版本Simplesim-3.0,SimpleScalar整体是由模拟器模块、模拟组件、系统组件、辅助模块和构建组件组成,模拟器模块是各个单独的模块实现不同的功能,针对特定应用采用特定的模块C文件配合其他组件共同编译出需要的可执行文件。
模拟器模块
- Sim-fast
Sim-fast是执行速度最快,最不关心模拟过程细节信息的子模拟器程序。它采用顺序执行指令的方式,没有指令并行;不支持cache的使用,也不进行指令正确性检查,由程序员保证每条指令的正确性;不支持模拟器本身内嵌的Dlite!调试器(类似于gdb调试器)。为了模拟器的速度优化,在缺省情况下,sim-fast模拟器不进行时间统计,不对指令的有关信息(如指令总数及访存指令数目)进行统计。当然,可以修改模拟器源程序,通过改变其设置,使模拟器更加符合设计人员的需求。 - Sim-safe
在工具集中,是最简单的最友好的模拟器,在sim-fast的基础上添加了Dlite!调试支持,检查所有的指令错误,不讲究速度。 - Sim-bpred
实现一个分支预测(branch prediction,也称作跳转预测)分析器,可采用五种分支预测方式:nottaken, taken, bimod, 2lev, comb。 - Sim-cache & sim-cheetah
Sim-cache实现cache模拟功能,为用户选择的cache和快表(TLB, translation lookaside buffer)设置生成cache统计,其中可能包含两级指令和数据cache ,还有一级指令和数据快表,不会生成时间信息。另外,实现cache模拟功能的还有sim-cheetah,能够有效地模拟全相联cache,并能同时生成各种cache set数配置下的cache统计量。同样地,sim-cheetah不会生成时间信息。 - Sim-eio
这个模拟器支持生成外部输入/输出跟踪(EIO traces)和断点文件。外部事件跟踪俘获程序的执行,并且允许被打包到一个单独的文件,以备以后的再次执行。这个模拟器也提供在外部事件跟踪执行中在任意一点做断点。断点文件可被用于在程序运行中启动SimpleScalar 模拟器。 - Sim-outorder
最完整的工具,前文中已提到。支持按序(in-order)和乱序(out-order)执行,branch predictor,memory hierarchy,function unit个数等参数设定。这个模拟器追踪潜在的所有流水(pipeline)操作。 - Sim-profile
也叫functional simulation,但提供较完整的模拟参数,可依照使用者之设定,决定所要模拟的统计量,如instruction classes and addresses、text symbols、memory accesses、branches and data segment symbols等,以方便使用者整理收集数据材料。
模拟组件
bpred.[h,c] – 分支(跳转)预测器;
cache.[h,c] – cache 模块;
eventq.[h,c] – 事件队列模块;
libcheetah/ – Cheetah cache 模拟器支持库;
ptrace.[h,c] – 流水线轨迹模块;
res.[h,c] – 资源管理器模块;
sim.h – 模拟器主体代码接口定义;
textprof.pl – 代码段属性视图 (Perl Script);
pipeview.pl – 流水线轨迹视图 (Perl script);
系统组件
dlite.[h,c] - DLite!, 轻量级调试程序;
eio.[h,c] – 外部 I/O 追踪模块;
loader.[h,c] – 程序载入器;
memory.[h,c] – 平面存储器空间模块;
regs.[h,c] – 寄存器模块;
machine.[h,c] – 目标机及ISA依赖的例行程序;
machine.def – SimpleScalar ISA 定义;
symbol.[h,c] – 符号表模块;
syscall.[h,c] – 代理系统调用实现;
辅助模块
eval.[h,c] – 一般表达式验证程序;
libexo/ – EXO(-skeletal) 持久性数据结构库(由EIO trace使用);
misc.[h,c] – 提供一些提示信息函数;
options.[h,c] – 选项包;
range.[h,c] – 程序范围表达式包;
stats.[h,c] – 统计量包;
构建组件
Makefile – 顶层的构建文件;
tests/ – 独立自验证大小端模式测试包;
endian.[h,c] –大小端模式探测;
main.c – 主执行代码;
sysprobe.c – 系统探测, 构建过程中使用;
version.h – 模拟器版本验证。
参考链接
- 本文作者: Zheng Yuchen
- 本文链接: https://zycccccc.top/2021/01/18/simplescalar/simplescalar02-目录结构/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!