版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/11/13,SimpleScalar简介,1,SimpleScalar简介,汇报人:胡 潇,2020/11/13,SimpleScalar简介,2,概要,SimpleScalar Tool Set 简介 功能级模拟器设计的初步分析,2020/11/13,SimpleScalar简介,3,附加论题,由SimpleScalar 的设计得到的启发(一种新颖的编程手法),2020/11/13,SimpleScalar简介,4,SimpleScalar Tool Set 简介,SimpleScalar定义:用软件模拟在单处理器系统中单线程的运行情况,以此评估当前硬/软件设计的综合性能,为下一步
2、的改进提供依据。 在体系结构上做到了一定的“可配置”,诸如,可以以命令行参数的形式设置不同的ALU个数、流水线各阶段属性、cache大小及其关联策略、替换策略(replacement policy)、分支预测策略(branch predicting policy)等等,通过模拟得到的结果(profile)来指导对体系结构的进一步改进。 在软件方面可以通过模拟所得的性能结果(profile)来指导进一步的改进。,2020/11/13,SimpleScalar简介,5,SimpleScalar Tool Set 简介,整个工具集结构概览,SS library,Simulator Source,Si
3、mpleScalar assembly,Object files,SimpleScalar executables,Precompiled SS binaries (test),SimpleScalar GCC,SimpleScalar GAS,SimpleScalar GLD,Host C compiler,Result,Utilities and Tools,Simulator,2020/11/13,SimpleScalar简介,6,SimpleScalar Tool Set 简介,模拟器分类: 功能级模拟(Functional simulation):粒度最粗,速度最快。包括两个模拟器:
4、 Sim-fast: 简单的进行功能模拟 Sim-safe: 同时进行存取对齐和权限检查 Cache模拟(Cache simulation) :以Cache性能为主要考察目标,速度较慢。包括两个模拟器: Sim-cache: 接收Cache参数,进行针对Cache性能的模拟 Sim-cheetah: 采用Cheetah cache simulation engine 乱序模拟(Out-of-order processor timing simulation):详细模拟了流水线的六个阶段,速度最慢。包括一个模拟器: Sim-outorder:基于Register Update Unit(?),支
5、持out-of-order发射和执行,2020/11/13,SimpleScalar简介,7,功能级模拟器设计的初步分析,基本原理和流程: 模拟器初始化,并从编译生成的二进制文件(此文件具有一定的格式)中装载可执行程序至模拟器的虚拟内存; 核心执行:模拟器逐条读取可执行程序中的命令,根据指令集定义文件ss.def中各种指令的操作描述,来完成整个程序的执行(其中包含有一个重要的编程技巧,稍后讨论); 执行结束,输出统计信息。 下面详细介绍以上各步骤,2020/11/13,SimpleScalar简介,8,模拟执行流程,初始化 核心执行 统计输出,2020/11/13,SimpleScalar简介
6、,9,模拟器初始化步骤一 分析命令行参数,首先请注意:功能级模拟只接受默认的命令行参数,对体系结构不具备可配置性;(但是,由于前面提到的编程技巧的运用,可以对指令集方便的进行修改而不需要改变源程序,所要做的仅仅是重新编译而已) 构建全局的参数库(option database),记录模拟器型号以及各命令行参数,为以后使用提供方便,而实际上,在功能级模拟中只是根据命令行参数设定了一些全局的标志变量的值,如是否打印help等等,可以认为,该参数库对功能级模拟而言几乎无意义,但是在其他需要对体系结构进行配置的模拟器中是不可或缺的; 具体数据结构略,可见工作记录。,2020/11/13,SimpleS
7、calar简介,10,所谓指令译码器实际上是一个ss_opcode枚举型的全局数组ss_mask2op,每个元素存放的是SimpleScalar体系结构中的指令所对应的一个枚举值(0255)。SimpleScalar规定最多有255条指令,而数组ss_mask2op有256项,所以可以以指令的操作码(0 x010 xff)为索引,把定义了的指令映射到对应项中,在该项中写入一个枚举值(1255),而初始值0恰恰代表了未定义的指令; 为什么要做这样一个看似繁琐的操作码到枚举值的附加转换呢?目的除了能方便的进行各种有效性检查(如指令的重复定义、指令数大于255、程序用到未定义的指令等等)之外,更重要
8、的是为了在改变指令集定义文件ss.def的同时不需要对源程序做任何改动,大大方便了用户对指令集的修改(这其实也是前面提到的编程技巧的根本目的所在,我们稍后会详细讨论),模拟器初始化步骤二 初始化指令译码器,2020/11/13,SimpleScalar简介,11,SimpleScalar是31位虚拟地址结构:【30:16】为块索引,【15:0】是块内偏移; 相应的,SimpleScalar只有一级页表,是一个存储块首址的数组mem_table,以虚拟地址的【30:16】为索引得到的数组项的值即为SimpleScalar的物理块首址,再以【15:0】为偏移量即可得到真正的地址; 值得注意的是,这
9、些所谓的“物理地址”,其实都是宿主机的虚拟地址,是通过调用宿主机操作系统的内存分配函数得到的; 初始化内存系统就是将mem_table的每一项置为NULL。,模拟器初始化步骤三 初始化存储系统,2020/11/13,SimpleScalar简介,12,程序由命令行指定的文件载入,该文件有一定的格式,其文件头和各个扇区(section)头中记载了诸如大小尾端标志、数据属于哪个段、数据应装入的虚拟地址等等信息; 载入过程:由宿主机操作系统分配存储空间,并建立页表,按照文件指定的地址装入程序的各段数据。 然后,模拟器初始化步骤四 装载程序至存储系统,2020/11/13,SimpleScalar简介
10、,13,初始化栈、段信息,包括: 注:堆栈段是反向增长,即其末址为7FFFC000-10000=7FFEC000 然后,模拟器初始化步骤四 装载程序至内存系统,2020/11/13,SimpleScalar简介,14,初始化堆栈 输入参数(此处的参数是给可执行程序的参数,有别于SimpleScalar的命令行参数)个数写入栈顶 构造argv指针数组和envp指针数组,各指向对应参数所在的栈单元 分别将argv和envp数组中各参数值复制到对应的栈单元 这到底是为了什么?,模拟器初始化步骤四 装载程序至内存系统,0 x7FFE C000,2020/11/13,SimpleScalar简介,15,
11、模拟器核心的寄存器均以全局变量的形式给出; 初始化包括: 单精度浮点寄存器组regs_F(RF0RF31)置零 整数寄存器组regs_R(R0R31)置零,但栈顶地址寄存器R29置为ld_eviron_base 存储乘除结果的高、低字寄存器regs_HI、regs_LO置零 浮点条件码寄存器regs_FCC置零 程序寄存器regs_PC置为ld_prog_entry,模拟器初始化步骤五 寄存器初始化,2020/11/13,SimpleScalar简介,16,功能级模拟可统计的信息包括:指令条数、运行时间、运行速度、各段参数 统计信息库中表示各信息的单元与表示该信息的全局变量相关联,模拟执行过程
12、中,全局变量不断改变,但是无需对统计信息库做任何更改 有趣的是:对于数学表达式形式的统计信息,SimpleScalar仍然以字符串的形式记录在库中,当要输出统计信息时,用一个简单的编译器对该表达式进行解析,只要表达式合法,则能计算输出相应的信息,模拟器初始化步骤六 设置统计信息,2020/11/13,SimpleScalar简介,17,在这里,我们又一次看到了将已有程序指令的二进制操作码转换为枚举值的过程,这同样是为了支持前面所述的目标: 指令集的独立可配置 (稍后将系统的回顾SimpleScalar为支持该目的所使用的技巧),模拟器初始化步骤七 初始化程序指令,2020/11/13,Simp
13、leScalar简介,18,模拟器初始化回顾,. . . . . . . . . . . . . . . . . . . . . . .功能级模拟无法通过命令行参数的形式进行体系结构配置,构建命令行参数库,. . . . . . . . . . . . . . . . . . . . . . . 将指令集定义中的指令映射到相应的枚举值,初始化指令译码器,. . . . . . . . . . . . . . . . . . . . . . . . . 将一级页表表项全部置零,初始化存储系统,. . . . . . . . . . . . . . . . . . . . . . . . . .
14、. . . . 从文件中读取程序并设置各段参数和程序入口,装载程序,. . . . . . . . . . . . . . . . . . . . . . . . . . . 设置栈顶寄存器和PC值,初始化寄存器,. . . . . . . . . . . . . . . . . . . . . . . . . . . 对于表达式类型的统计信息能够进行解析,构建统计信息,2020/11/13,SimpleScalar简介,19,模拟执行流程,初始化(Accomplished) 核心执行 统计输出,2020/11/13,SimpleScalar简介,20,功能级模拟器核心执行,一言以蔽之:逐条取
15、入程序中的指令,按照ss.def中的描述进行操作,操作过程中改变统计信息变量 没有计时(time accounting) 没有并行 没有cache 没有指令检查 没有Debug功能 但是,它快!,2020/11/13,SimpleScalar简介,21,模拟执行流程,初始化(Accomplished) 核心执行(Accomplished) 统计输出,2020/11/13,SimpleScalar简介,22,输出统计信息,将库中定义的统计信息输出,2020/11/13,SimpleScalar简介,23,附加论题一个重要的编程技巧,目的:如前所述,支持指令集的独立可更改 ss.def文件中所有的
16、指令,都以宏DEFINST的统一形式给出,在与指令集相关的地方给出该宏的不同定义,然后一句简单的 include “ss.def” 让编译器自动生成代码去吧!,2020/11/13,SimpleScalar简介,24,For Example,登记指令集定义时:#define DEFINST(OP,) (OP)枚举类型ss_opcode定义为enum ss_opcode OP_NA = 0, #include ss.def, OP_MAX; NOTE: 当OP_MAX大于255,则指令集太大,2020/11/13,SimpleScalar简介,25,初始化指令译码器时: #define DEFINST(OP,MSK,.) if (ss_mask2op(MSK) fatal(doubly defined mask value); if (MSK) SS_MAX_MASK) fatal();ss_mask2op(MSK)=(OP); 于是,整个初始化
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳理工大学《车辆人机工程学》2021-2022学年第一学期期末试卷
- 国家著作权软件著作权转让合同
- 2024-2025学年新教材高中历史第5课古代非洲与美洲课时素养评价含解析新人教版必修中外历史纲要下
- 高中历史第六单元资本主义运行机制的调节第19课当代资本主义的新变化史料解读素材北师大版必修2
- 大班音乐《粗心的小画家》课件
- 2024房屋维修工程施工合同
- 2024装修合同签署小常识分享
- 2024办公设备采购合同范本
- 2024【服务协议模板】代驾服务协议合同范本
- 2024装修合同制定的注意事项
- 青春期女孩自尊自爱课件
- 2023年西藏开发投资集团有限公司招聘笔试题库及答案解析
- 小学语文人教三年级上册观察桔子孙娟课件
- 藏族人的名字标准英语翻译
- DB61-T 477-2021学生公寓床上用品质量规范
- 市场营销产品组合与产品策略课件
- 医院会计实务操作培训课件
- 《江苏省建筑业10项新技术(2021)》
- 高中化学实验员招聘考试试卷及评分标准
- ()国民经济行业分类(2019修改版-)
- 河北省地图介绍模板
评论
0/150
提交评论