[报告]SimpleScalar简介

上传人:宝路 文档编号:49590821 上传时间:2018-07-31 格式:PPT 页数:27 大小:155.18KB
返回 下载 相关 举报
[报告]SimpleScalar简介_第1页
第1页 / 共27页
[报告]SimpleScalar简介_第2页
第2页 / 共27页
[报告]SimpleScalar简介_第3页
第3页 / 共27页
[报告]SimpleScalar简介_第4页
第4页 / 共27页
[报告]SimpleScalar简介_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《[报告]SimpleScalar简介》由会员分享,可在线阅读,更多相关《[报告]SimpleScalar简介(27页珍藏版)》请在金锄头文库上搜索。

1、SimpleScalar简介汇报人:胡 潇*1SimpleScalar简介概要nSimpleScalar Tool Set 简介n功能级模拟器设计的初步分析Date2SimpleScalar简介附加论题n由SimpleScalar 的设计得到的启发 (一种新颖的编程手法)Date3SimpleScalar简介SimpleScalar Tool Set 简介nSimpleScalar定义:用软件模拟在单处理器系统 中单线程的运行情况,以此评估当前硬/软件设计 的综合性能,为下一步的改进提供依据。n在体系结构上做到了一定的“可配置”,诸如, 可以以命令行参数的形式设置不同的ALU个数、 流水线各阶

2、段属性、cache大小及其关联策略、替 换策略(replacement policy)、分支预测策略( branch predicting policy)等等,通过模拟得到的 结果(profile)来指导对体系结构的进一步改进。n在软件方面可以通过模拟所得的性能结果(profile )来指导进一步的改进。Date4SimpleScalar简介SimpleScalar Tool Set 简介n整个工具集结构概览C benchmark sourceSS librarySimulator SourceSimpleScalar assemblyObject filesSimpleScalar exec

3、utablesPrecompiled SS binaries (test)SimpleScalar GCCSimpleScalar GASSimpleScalar GLDHost C compilerResultUtilities and ToolsSimulatorDate5SimpleScalar简介SimpleScalar Tool Set 简介n模拟器分类:u功能级模拟(Functional simulation):粒度最粗,速度最快。包 括两个模拟器:Sim-fast: 简单的进行功能模拟 Sim-safe: 同时进行存取对齐和权限检查uCache模拟(Cache simulatio

4、n) :以Cache性能为主要考察目标 ,速度较慢。包括两个模拟器:Sim-cache: 接收Cache参数,进行针对Cache性能的模拟Sim-cheetah: 采用Cheetah cache simulation engineu乱序模拟(Out-of-order processor timing simulation):详细模 拟了流水线的六个阶段,速度最慢。包括一个模拟器:Sim-outorder:基于Register Update Unit(?),支持out-of- order发射和执行Date6SimpleScalar简介功能级模拟器设计的初步分析n基本原理和流程:u模拟器初始化,并

5、从编译生成的二进制文 件(此文件具有一定的格式)中装载可执 行程序至模拟器的虚拟内存;u核心执行:模拟器逐条读取可执行程序中 的命令,根据指令集定义文件ss.def中各 种指令的操作描述,来完成整个程序的执 行(其中包含有一个重要的编程技巧,稍后讨论 );u执行结束,输出统计信息。下面详细介绍以上各步骤Date7SimpleScalar简介模拟执行流程n初始化n核心执行n统计输出Date8SimpleScalar简介模拟器初始化步骤一 分析命令行参数n首先请注意:功能级模拟只接受默认的命令行参 数,对体系结构不具备可配置性;(但是,由于前面 提到的编程技巧的运用,可以对指令集方便的进行修改而不

6、需要 改变源程序,所要做的仅仅是重新编译而已)n构建全局的参数库(option database),记录模 拟器型号以及各命令行参数,为以后使用提供方 便,而实际上,在功能级模拟中只是根据命令行 参数设定了一些全局的标志变量的值,如是否打 印help等等,可以认为,该参数库对功能级模拟 而言几乎无意义,但是在其他需要对体系结构进 行配置的模拟器中是不可或缺的;n具体数据结构略,可见工作记录。Date9SimpleScalar简介n所谓指令译码器实际上是一个ss_opcode枚举型的全局数组 ss_mask2op,每个元素存放的是SimpleScalar体系结构中 的指令所对应的一个枚举值(02

7、55)。SimpleScalar规定 最多有255条指令,而数组ss_mask2op有256项,所以可以 以指令的操作码(0x010xff)为索引,把定义了的指令映 射到对应项中,在该项中写入一个枚举值(1255),而初 始值0恰恰代表了未定义的指令;n为什么要做这样一个看似繁琐的操作码到枚举值的附加转换 呢?目的除了能方便的进行各种有效性检查(如指令的重复定义 、指令数大于255、程序用到未定义的指令等等)之外,更重要的是为 了在改变指令集定义文件ss.def的同时不需要对源程序做任 何改动,大大方便了用户对指令集的修改(这其实也是前面提到 的编程技巧的根本目的所在,我们稍后会详细讨论)模拟

8、器初始化步骤二 初始化指令译码器Date10SimpleScalar简介nSimpleScalar是31位虚拟地址结构:【30:16】为块索 引,【15:0】是块内偏移;n相应的,SimpleScalar只有一级页表,是一个存储块首 址的数组mem_table,以虚拟地址的【30:16】为索引 得到的数组项的值即为SimpleScalar的物理块首址,再 以【15:0】为偏移量即可得到真正的地址;n值得注意的是,这些所谓的“物理地址”,其实都是宿主 机的虚拟地址,是通过调用宿主机操作系统的内存分配 函数得到的;n初始化内存系统就是将mem_table的每一项置为NULL 。模拟器初始化步骤三

9、初始化存储系统Date11SimpleScalar简介n程序由命令行指定的文件载入,该 文件有一定的格式,其文件头和各 个扇区(section)头中记载了诸如 大小尾端标志、数据属于哪个段、 数据应装入的虚拟地址等等信息;n载入过程:由宿主机操作系统分配 存储空间,并建立页表,按照文件 指定的地址装入程序的各段数据。 然后 模拟器初始化步骤四 装载程序至存储系统Date12SimpleScalar简介n初始化栈、段信息,包括:注:堆栈段是反向增长,即其末址为7FFFC000-10000=7FFEC000 然后模拟器初始化步骤四 装载程序至内存系统首 址大 小堆栈段ld_text_base: 0

10、x7FFF C000ld_stack_size: 10000H数据段ld_data_base: 0x1000 0000ld_data_size: 由文件头中获得代码段ld_text_base: 0x0040 0000ld_text_size: 装载时计算得到程序入口ld_prog_entry: 由文件头中获得Date13SimpleScalar简介n初始化堆栈u输入参数(此处的参数是给可执行程序的 参数,有别于SimpleScalar的命令行参数 )个数写入栈顶u构造argv指针数组和envp指针数组,各指 向对应参数所在的栈单元u分别将argv和envp数组中各参数值复制到 对应的栈单元这到

11、底是为了什么?模拟器初始化步骤四 装载程序至内存系统argc0x7FFE C000Date14SimpleScalar简介n模拟器核心的寄存器均以全局变量的形式给出;n初始化包括:u单精度浮点寄存器组regs_F(RF0RF31)置零u整数寄存器组regs_R(R0R31)置零,但栈顶地 址寄存器R29置为ld_eviron_baseu存储乘除结果的高、低字寄存器regs_HI、regs_LO 置零u浮点条件码寄存器regs_FCC置零u程序寄存器regs_PC置为ld_prog_entry模拟器初始化步骤五 寄存器初始化Date15SimpleScalar简介n功能级模拟可统计的信息包括:指

12、令条数、运行 时间、运行速度、各段参数n统计信息库中表示各信息的单元与表示该信息的 全局变量相关联,模拟执行过程中,全局变量不 断改变,但是无需对统计信息库做任何更改n有趣的是:对于数学表达式形式的统计信息, SimpleScalar仍然以字符串的形式记录在库中, 当要输出统计信息时,用一个简单的编译器对该 表达式进行解析,只要表达式合法,则能计算输 出相应的信息模拟器初始化步骤六 设置统计信息Date16SimpleScalar简介n在这里,我们又一次看到了将已有程序指 令的二进制操作码转换为枚举值的过程, 这同样是为了支持前面所述的目标:指令集的独立可配置(稍后将系统的回顾SimpleSc

13、alar为支持该目的所使用的技巧)模拟器初始化步骤七 初始化程序指令Date17SimpleScalar简介模拟器初始化回顾. . . . . . . . . . . . . . . . . . . . . . .功能级模拟无法通过命令行参数的形式进行体系结构配置 构建命令行参数库. . . . . . . . . . . . . . . . . . . . . . . 将指令集定义中的指令映射到相应的枚举值 初始化指令译码器. . . . . . . . . . . . . . . . . . . . . . . . . 将一级页表表项全部置零 初始化存储系统. . . . . . . .

14、. . . . . . . . . . . . . . . . . . . . . . 从文件中读取程序并设置各段参数和程序入口 装载程序. . . . . . . . . . . . . . . . . . . . . . . . . . . 设置栈顶寄存器和PC值 初始化寄存器. . . . . . . . . . . . . . . . . . . . . . . . . . . 对于表达式类型的统计信息能够进行解析 构建统计信息Date18SimpleScalar简介模拟执行流程n初始化(Accomplished)n核心执行n统计输出Date19SimpleScalar简介功能级模拟器

15、核心执行n一言以蔽之:逐条取入程序中的指令, 按照ss.def中的描述进行操作,操作过 程中改变统计信息变量n没有计时(time accounting)n没有并行n没有cachen没有指令检查n没有Debug功能n但是,它快!Date20SimpleScalar简介模拟执行流程n初始化(Accomplished)n核心执行(Accomplished)n统计输出Date21SimpleScalar简介输出统计信息n将库中定义的统计信息输出Date22SimpleScalar简介附加论题 一个重要的编程技巧n目的:如前所述,支持指令集的独 立可更改nss.def文件中所有的指令,都以宏 DEFIN

16、ST的统一形式给出,在与指 令集相关的地方给出该宏的不同定 义,然后一句简单的 include “ss.def” 让编译器自动生成代码去吧!Date23SimpleScalar简介For Examplen登记指令集定义时: #define DEFINST(OP,) (OP) 枚举类型ss_opcode定义为 enum ss_opcode OP_NA = 0, #include “ss.def“, OP_MAX ;nNOTE: 当OP_MAX大于255,则指令集太大Date24SimpleScalar简介n初始化指令译码器时:#define DEFINST(OP,MSK,) if (ss_mask2op(MSK) fatal(“doubly defined mask value“); if (MSK) SS_MAX_MASK) fatal(); ss_mask2op

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号