gem5学习6——HiPEAC2012 Tutorials笔记

来源:互联网 发布:mysql max函数 编辑:程序博客网 时间:2024/06/05 19:36
1、在系统仿真中我们关心什么?
(1) 标准测试程序的运行时间
(2) CPU性能
(3) 互连的延迟
(4) DRAM控制器调度

CPU的行为依赖存储系统,存储系统的行为依赖CPU;CPU花费大量时间等待存储事件完成。

2、GEM5的优势是什么?
GEM5来自M5与GEMS的结合,是基于离散事件仿真核建立起来的。它能建模完整的系统:
不仅仅是CPU程序;
不仅仅是拥有示踪(trace)的存储系统;
不是单个DRAM;
不是不带I/O的执行。

3、GEM5的应用场合是什么?
(1) 软件开发与验证(二进制翻译模型,比如OVP/QEMU已经足够快来做这些,并且已经拥有成熟的软件开发环境)
(2) 软硬件性能验证(需要高精度的性能测量,捕捉实际相关的事件)
(3) 早期架构探索(需要能够快速方便建模并连接关键架构组件的硬件平台)
(4) 软硬件功能验证(RTL已经足够,并且足够成熟)

4、编译的目标文件有哪些?
(1) gem5.debug(debug build, symbols, tracing, assert)
(2) gem5.opt(optimized build, symbols, tracing, assert)
(3) gem5.fast(optimized build, no debugging, no symbols,no tracing, no assertions)
(4) gem5.prof(gem5.fast + profiling support)

5、GEM5拥有哪两种模式?
(1) 全系统(FS)
 ×为启动操作系统
 ×建模裸硬件,包括设备
 ×中断、异常、特权指令、错误处理函数
 ×仿真UART输出
 ×仿真的帧缓冲输出
(2) 系统调用模拟(SE)
 ×运行独立的程序或者MP上的程序集
 ×建模用户可见的ISA加上共同的系统调用
 ×模拟系统调用,特别是通过调用主机OS
 ×简化地址转换模型,没有调度

6、运行过程后台的实际操作是怎样的?


7、GEM5中的对象(object)是什么?
Python与C++编写。
×使用Python组合各个部件,用C++进行仿真;
×继承自SimObject基类;
×用于创建、配置参数、命名、设置检查点等的代码相同。

8、GEM5中的事件(event)是什么?
标准的离散事件时序模型。
×用“ticks”计数全局逻辑时钟;
×与实际的时间没有固定的关系;
×src/sim/core.hh中的常数将“ticks”与实际时间联系起来。

9、GEM5中的端口(port)是什么?

×用于将Memobjects连在一起(比如让CPU能对存储器进行读写操作);
×对应系统组件中实际的结构端口(比如CPU有指令与数据端口);
×端口有明确的分工,总是成对出现(主端口连到从端口;类似于 TLM-2 initiator 与target socket);
×发送与接收函数配对传输的数据包(主端口的sendAtomic() 调用连接的从端口的recvAtomic();recvAtomic()由SlavePort 子类具体实现);

结果:面向类地处理任意连接,仅仅调用一个虚函数。

10、GEM5中的传输接口(transport interface)是什么?

三种传输接口:Functional, Atomic, Timing

在端口上都拥有自己的传输函数:sendFunctional(), sendAtomic(), sendTiming()  

Functional:
×用于载入二进制、调试、内省等;
×访问立即发生(读到最新的数据拷贝;写更新存储系统中的任意数据);
×在一个函数调用中完成事务(在sendFunctional()返回之前完成请求);
×等价于 TLM-2 debug transport;
×缓冲数据包的对象也被更新与查询。

Atomic:
×在一个函数调用中完成交易(sendAtomic()返回之前完成请求);
×模型状态改变(cache填充、一致性等);
×返回近似的 w/o contention 延迟或排队延时;
×类似于 TLM-2 blocking transport (without wait);
×用于 loosely-timed 仿真 (fast forwarding) 或预热caches。

Timing:
×建模存储系统中所有的时序与队列;
×将事务分成多个阶段( sendTiming()初始化发往slave的请求;Slave 之后调用sendTiming() 来发送应答数据包);
×类似于TLM-2 non-blocking transport;
×用于近似时序仿真;

TIP:Atomic 与 Timing 访问不能在系统中共存。

11、GEM5中的统计量(Statistics)有哪些?
统计量:数量、平均值、矢量、公式、直方图、分布、向量分布。
当前输出文本:不久将会输出到 Python dict中。

12、GEM5中的设置检查点(Checkpointing )与快速演进(Fast forwarding)是什么?

模拟器可以创建检查点:

在之后的时间点恢复它们;
通常在atomic存储模式下设置检查点(到达 ROI之后);
从检查点恢复过来并将系统切换为详细模式;

限制:
原来的仿真与测试的仿真必须有相同的ISA、核数、存储映射;
目前不能对cache状态设置检查点,也就是说只能在Atomic CPU 并且没有caches的情况下设置检查点。
0 0