2012-11-07 18:24 模拟器综述

来源:互联网 发布:刀具磨损量vb 编辑:程序博客网 时间:2024/05/21 09:40

转载地址:http://hi.baidu.com/lixiang1988/item/014ecb44281b190e6dc2f098

模拟器综述

80年代主要使用数据驱动设计技术和性能分析模型技术,该技术的关键是大量收集程序在已有机器上运行的相关数据,如执行的指令的数目、某条指令的执行次数或某一条指令执行的次数等。在此基础上分析某种体系结构处理器的性能特征和缺陷,以便在以后的设计中避免这些缺陷。

随后发明了性能分析模型技术,它主要针对计算机系统的资源及资源之间的连接使用数学工具进行建模,从而通过估计资源利用率以及时间方面的特性来预测计算机系统的性能。

再后来是体系结构模拟技术,该技术可以分为功能模拟和性能模拟两部分,功能模拟器模拟目标体系结构的功能,用于预测和验证新的体系结构是否满足功能要求。它主要关注数据的正确性。性能模拟器以评估计算机系统与时间有关的特性为目标,这类模拟器并不主要模拟计算机系统中的数据,但每个操作所要花费的时钟周期数和与数据地址信息却是要准确的模拟。

根据处理器的个数,可以将性能模拟分为单处理器系统模拟和多处理器系统模拟,例如,simplescalar是一个单处理器系统模拟器开发工具集;Rsim是一个指令级并行、共享内存多处理器系统体系结构模拟器的典型代表。

根据模拟的目标的异同,可以分为功能模拟、性能模拟、能耗模拟、发热模拟等,Ravel即是一个体系结构功能模拟器的例子。对于性能模拟,目前已有了许多的模拟器,以simplescalar最为流行。SimplePower和Wattch就是为了研究处理器系统能耗问题而设计的模拟器,而HotSpot是研究处理器系统发热情况的模拟器。

根据模拟器开发和执行的模拟,体系结构模拟器可以被分为两类:串行结构模拟器和并行结构模拟器。所谓的串行结构模拟器是指用类似于C或C++这样的串行编程语言来开发的模拟器,这种模拟器在运行时通过调用串行函数来实现功能或性能模拟。

从多线程的支持来看,体系结构模拟器可以分为细粒度多线程体系结构模拟器和粗粒度多进程体系结构模拟器。例如,Joshua等人在SMARTS的基础上开发了细粒度多线程体系结构的模拟器,Rsim实际上也是多进程体系结构模拟器

根据模拟计算系统中组件的不同,可以分为流水线模拟、分支预测模拟、Cache模拟、内存系统模拟、网卡模拟等。

根据模拟的范围是否包括最终的应用程序、操作系统和I/O设备,可以分为用户态模拟和全系统模拟,用户态模拟不包括对操作系统的模拟,如simplescalar和我国的Sim-Godson。全系统模拟包括对操作系统行为的模拟,其开发难度更大,典型的例子是Simics、SimOS。

跟据模拟器的可执行内核数,可以将模拟器分为单核系统模拟和多核系统模拟。GEMS和SimOS-Goodson的多核版就是多核模拟器的例子。

一、跟踪驱动模拟

跟踪驱动模拟最初被用于页面置换算法,以及高速缓存管理算法中,跟踪驱动模拟将每条指令顺序执行所产生的所有信息作为模拟器的输入。从而模拟器某种体系结构处理器的功能和性能。跟踪驱动模拟技术采用了分支法(divide and conquer)。假设要模拟执行的程序负载为w,该程序负载运行的目标环境为T,则在环境T中模拟执行w的问题可以分为两个子问题:跟踪信息的生成和基于跟踪信息的模拟。称跟踪信息生成的环境为G,则当在G中执行w时所发生的所有事件均被记录下来,这些记录被称为跟踪信息。然后模拟器将跟踪信息作为输入,从而模拟在目标环境T中执行w的行为。 跟踪驱动模拟比较简单且容易理解;跟踪驱动模拟器也容易调试;实验数据可以重现,因为使用同一跟踪信息,在不同的模拟执行中,模拟器的输入、输出数据不会发生变化,但是,跟踪驱动的模拟器存在以下两个方面的问题:1、模拟运行时间可能会非常长,用于存储跟踪信息的模拟信息的存储设备的容量要求非常大。现实情况这个空间和时间的巨大要求往往难以满足;2、跟踪信息在有程序分支预测的情况下不能表示真实的处理器指令流。

二、执行驱动模拟

有两种观点,一种观点认为,执行驱动模拟使用程序的可执行指令作为模拟器的输入,并不使用程序的跟踪状态信息作为输入进行模拟。因此模拟器的输入数据量只与程序的静态指令数目成比例,而不与动态指令数目成比例。