GEM5仿真器(概要)
来源:互联网 发布:unity3d摄像机自动缩放 编辑:程序博客网 时间:2024/05/22 01:28
1.GEM5的灵活性
设计思想从高层概念变成具体设计的过程中,架构工程师需要一种能够在多个细节层次上实现系统的工具,从而平衡仿真速度与精确度的关系。GEM5通过提供多种CPU模型、系统模型以及存储器模型以实现这种灵活性。
CPU模型:AtomicSimple、TimingSimple、In-order、O3(Out of Order)
系统模型:SE(System-call Emulation)、FS(Full System)
存储器模型:Classic、Ruby
2.设计特性
①全面地面向对象设计
GEM5中所有主要的仿真单元都称为SimObject,它们使用相同的方法进行配置、初始化、统计与序列化(检查点)。SimObject包括具体的硬件单元模型比如处理器核、cache、互联单元与设备,也包括更为抽象的比如负载和与之相关联的用于系统调用仿真的处理内容。
每个SimObject用1个Python类与1个C++类表示。Python类定义SimObject参数并进行基于脚本的配置。C++类包含了SimObject状态与剩余的行为,包括关键性能的仿真模型。
②Python集成
Python提供初始化、配置与仿真控制。仿真器一开始就立即执行Python代码;标准的main()函数、命令行处理与启动代码都是用Python编写的。
③面向范围语言(DSL)
对于特定的任务,DSL使用相同风格表达多种解法。GEM5两种DSL:ISA DSL(继承自M5)与Cache一致性DSL(继承自GEMS)。
ISA DSL统一了二进制指令的编码与各种ISA的语法说明。CPU模型用共同的C++基类来描述指令以实现与多种ISA的无关性。ISA DSL帮助我们以一种简洁的方式实现需要的C++代码。从而支持多种ISA,比如Alpha、x86、SPARC。
Cache一致性DSL,即SLICC(继承自GEMS),用于实现多种cache一致性协议。SLICC定义cache、存储器与DMA控制器为存储块状态机一起组成了整个协议。通过用高层语言定义控制逻辑来使得不同协议能够使用相同的底层状态机,这样减少了编程工作量。GEM5版本的SLICC与GEMS版本十分相似,将协议定义为状态、事件、交易与动作的集合。所不同的是该语言由Python编写而非C++,所有配置参数被设为输入参数并由SLICC自动产生合适的C++与Python文件,此外允许局部变量以简化编程与提升性能。
④标准接口
有2种接口:端口接口与消息缓冲接口
端口接口用于连接两个存储对象。端口支持三种访问数据机制(timing、atomic、functional)。在Classic存储系统中,端口接口连接包括CPU到cache、cache到bus、bus到设备与存储器。Timing模型用于建模存储器访问的时序细节,请求通过消息发送给存储系统,也期望通过消息异步地收到响应;Atomic模型用于获取时序信息,但并非基于消息,发生atomic调用(通过函数调用),同步地实现操作的状态改变;Functional模型并不改变任何时序信息而改变仿真器状态,用于debug、系统调用仿真与初始化。
Ruby利用端口接口连接CPU与设备并在Ruby对象之间增加消息缓冲。
3.仿真能力
能够进行多种ISA、CPU模型、一致性协议、互联网络、设备与多系统的仿真。
ISA。包括Alpha、ARM、MIPS、Power、SPARC与x86。
执行模型。运行于2种模式:系统调用仿真(SE)与完全系统(FS)。SE模式,GEM5仿真大部分共同的系统调用(比如read())。FS模式,GEM5仿真足以运行操作系统的环境。
CPU模型。包括AtomicSimple、TimingSimple、In-order、O3(Out of Order)。 AtomicSimple、TimingSimple是无流水线的CPU模型,在每个周期进行取指、译码、执行与完成单指令。但是TimingSimple模型建模了存储访问时序。 In-order强调指令时序与仿真精度,拥有有序流水线。O3模拟了乱序执行与超标量执行架构中指令间的依赖,以及运行在多CPU中并发执行的多个线程。
Cache一致性协议。SLICC使得GEM5的Ruby存储模型实现多种不同的基于失效的Cache一致性协议。
互联网络。Ruby存储模型支持庞大阵列的互联拓扑,包括两个不同的网络模型:Simple网络与Garnet网络。Simple网络对链路、路由延迟与链路带宽进行建模,但并不建模路由资源竞争与流控。Garnet网络详细建模路由微架构,包括所有相关的资源竞争与流控时序。
设备。GEM5仿真器支持多种IO设备,目前实现了NIC、IDE控制器、帧缓冲、DMA引擎、UART与中断控制器。
建模多系统。这是通过实例化另一套对象(CPU、存储器、I/O设备等)来实现的。用户通过网络接口连接这些系统来创建通过TCP/IP通信的主/从机对。
4.GEM5需要完善的工作
①功耗模型。目前GEM5需要外挂功耗模型才能进行功耗仿真。
②实现对各种ISA的完全支持。
③提高并行化水平。目前GEM5在性能上与Simics尚存在差距。
④检查点的导入。目前GEM5速度明显不如某些基于二进制翻译的模拟器。
英文原文:The GEM5 Simulator
- GEM5仿真器(概要)
- [GEM5学习]1、GEM5仿真器启动过程
- gem5学习7——gem5仿真器启动过程
- M5仿真器:建模网络连接系统(概要)
- DRAMSim2:一种时钟周期精确的存储系统仿真器(概要)
- GEM5笔记(一)
- gem5
- Gem5的基础知识(1)
- Gem5的基础知识(2)
- 仿真器
- gem5运新spec2006(修改)
- gem5模拟器使用介绍(一)
- gem5模拟器使用介绍(二)
- gem5模拟器使用介绍(一)
- gem5模拟器使用介绍(二)
- 安装GEM5(ubuntu14)过程记录
- Gem5的FS(全系统)模拟
- ESESC仿真器的安装(2)
- C/C++字符串理解
- Web开发之JNDI及其应用简介
- Ora-12514解决方法
- Win7无线共享批处理
- SVN用户及权限配置
- GEM5仿真器(概要)
- C语言判断文件是否存在
- 位操作基础篇之位操作全面总结
- 设计模式-Proxy代理模式
- android http 连接
- emacs中使用IRC——ERC及一些闲话
- 算法导论--在无序数组中选择第k小个数
- 《C语言深度解剖》
- Vmware9.0虚拟机模拟linux中创建dhcp服务器