欢迎来到天天文库
浏览记录
ID:36319993
大小:349.81 KB
页数:27页
时间:2019-05-09
《[报告]simplescalar简介》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SimpleScalar简介汇报人:胡潇7/14/20211SimpleScalar简介概要SimpleScalarToolSet简介功能级模拟器设计的初步分析7/14/20212SimpleScalar简介附加论题由SimpleScalar的设计得到的启发(一种新颖的编程手法)7/14/20213SimpleScalar简介SimpleScalarToolSet简介SimpleScalar定义:用软件模拟在单处理器系统中单线程的运行情况,以此评估当前硬/软件设计的综合性能,为下一步的改进提供依据。在体系结构上做到了一定的“可配置”
2、,诸如,可以以命令行参数的形式设置不同的ALU个数、流水线各阶段属性、cache大小及其关联策略、替换策略(replacementpolicy)、分支预测策略(branchpredictingpolicy)等等,通过模拟得到的结果(profile)来指导对体系结构的进一步改进。在软件方面可以通过模拟所得的性能结果(profile)来指导进一步的改进。7/14/20214SimpleScalar简介SimpleScalarToolSet简介整个工具集结构概览CbenchmarksourceSSlibrarySimulatorSourc
3、eSimpleScalarassemblyObjectfilesSimpleScalarexecutablesPrecompiledSSbinaries(test)SimpleScalarGCCSimpleScalarGASSimpleScalarGLDHostCcompilerResultUtilitiesandToolsSimulator7/14/20215SimpleScalar简介SimpleScalarToolSet简介模拟器分类:功能级模拟(Functionalsimulation):粒度最粗,速度最快。包括两个模拟器:
4、Sim-fast:简单的进行功能模拟√Sim-safe:同时进行存取对齐和权限检查Cache模拟(Cachesimulation):以Cache性能为主要考察目标,速度较慢。包括两个模拟器:Sim-cache:接收Cache参数,进行针对Cache性能的模拟Sim-cheetah:采用Cheetahcachesimulationengine乱序模拟(Out-of-orderprocessortimingsimulation):详细模拟了流水线的六个阶段,速度最慢。包括一个模拟器:Sim-outorder:基于RegisterUpda
5、teUnit(?),支持out-of-order发射和执行7/14/20216SimpleScalar简介功能级模拟器设计的初步分析基本原理和流程:模拟器初始化,并从编译生成的二进制文件(此文件具有一定的格式)中装载可执行程序至模拟器的虚拟内存;核心执行:模拟器逐条读取可执行程序中的命令,根据指令集定义文件ss.def中各种指令的操作描述,来完成整个程序的执行(其中包含有一个重要的编程技巧,稍后讨论);执行结束,输出统计信息。下面详细介绍以上各步骤……7/14/20217SimpleScalar简介模拟执行流程初始化核心执行统计输出
6、7/14/20218SimpleScalar简介模拟器初始化步骤一——分析命令行参数首先请注意:功能级模拟只接受默认的命令行参数,对体系结构不具备可配置性;(但是,由于前面提到的编程技巧的运用,可以对指令集方便的进行修改而不需要改变源程序,所要做的仅仅是重新编译而已)构建全局的参数库(optiondatabase),记录模拟器型号以及各命令行参数,为以后使用提供方便,而实际上,在功能级模拟中只是根据命令行参数设定了一些全局的标志变量的值,如是否打印help等等,可以认为,该参数库对功能级模拟而言几乎无意义,但是在其他需要对体系结构进
7、行配置的模拟器中是不可或缺的;具体数据结构略,可见工作记录。7/14/20219SimpleScalar简介所谓指令译码器实际上是一个ss_opcode枚举型的全局数组ss_mask2op,每个元素存放的是SimpleScalar体系结构中的指令所对应的一个枚举值(0~255)。SimpleScalar规定最多有255条指令,而数组ss_mask2op有256项,所以可以以指令的操作码(0x01~0xff)为索引,把定义了的指令映射到对应项中,在该项中写入一个枚举值(1~255),而初始值0恰恰代表了未定义的指令;为什么要做这样一个
8、看似繁琐的操作码到枚举值的附加转换呢?目的除了能方便的进行各种有效性检查(如指令的重复定义、指令数大于255、程序用到未定义的指令等等)之外,更重要的是为了在改变指令集定义文件ss.def的同时不需要对源程序做任何改动,大大方便了用户
此文档下载收益归作者所有