M5仿真器:建模网络连接系统(概要)

网络连接系统性能仿真的主要要求是:

l  既能执行操作系统也能执行程序代码的能力。因为这是网络协议得以实现的主要基础。

l  存储器与I/O子系统详细的性能模型,包括网络接口设备;

l  以确定的方式建模多个网络连接系统的能力(比如服务器与一个或多个客户机)。

1.   仿真核

M5的核心是通用、面向对象、离散事件仿真结构。在M5中,仿真是由一组直接通过方法调用连接起来的对象组成。每个对象负责通过在全局事件队列中调度它的事件来管理自身时序。

M5使用两种面向对象的语言实现:用Python进行高层对象的配置与仿真脚本设置,用C++进行低层对象实现。M5用Python与C++表示所有仿真对象(CPU,总线,cache等)。为了实现用灵活的基于脚本的对象文本来描述复杂仿真对象,用Python对象来进行配置。一旦用Python完成配置,M5实例化对应的C++对象,它们为详细建模提供良好的运行性能。

2.   M5脚本

格式如下:

m5 [m5 options]<Python script> [script options]

用标准Python写的脚本,控制仿真的过程。一个简单的例子如下:


这个脚本第一步是输入m5包,其中包含了实现仿真的接口。接下来,输入所有对象。下个代码块是脚本选项。接下来一块是带参数的基于Linux的系统对象。然后,多个系统在root这一层,通过以太网链路连接起来。最后的代码块实例化了仿真层次并告知M5开始仿真。

3.对象模型

M5对象包括CPU、cache、总线与I/O设备。这些模型也定义了用于对象间通信的接口——比如在存储层转换请求。

4.CPU模型

M5包括2种主要的CPU模型,SimpleCPU与O3CPU。这两种模型都是来自同一个CPU基类并提供相同接口,所以它们是可以互换的。M5也能在运行时切换CPU模型,允许在快速演进与预备阶段使用SimpleCPU模型,而在获取统计数据时使用O3CPU。

SimpleCPU是一种顺序非流水线功能模型,能够配置成在每个cycle执行一条或多条指令,但只能有一次明显的存储器操作。除了快速演进与预备,SimpleCPU对目标仅是为详细的服务器系统产生流量的待测网络客户机系统进行建模十分有用。

O3CPU是乱序、超标量、流水线化、并发多线程模型。O3CPU模型详细仿真了乱序流水线。独立的流水线级比如取指、译码等,它们的长度与延时是可配置的。级间的向前与向后通信可以用时序缓冲器建模。该模型包含详细的分支预测器,指令队列,Load/Store队列,功能单元与存储相关预测器。O3CPU使用C++ template来使独立的流水线级或结构方便地切换,避免了虚函数的性能开销。我们开发O3CPU模型强调保证时序精度。为了提高精度,我们把时序与功能建模整合到单个execute-in-execute流水线,这些流水线在时序流水线的执行阶段执行功能性指令。其它的模型,比如execute-in-fetch模型,当取指时功能性地执行指令,接着进行时序建模。

因为M5支持启动完整的操作系统与运行带有系统调用模拟的二进制程序,所有CPU模型支持完整的特权指令集、虚拟地址转换与异步中断。M5目前能够启动未修改的Linux2.4或2.6,FreeBSD,HP/Compaq Tru64 Unix。

两种CPU模型从用一种自定义语言写的ISA描述,得到它们的指令集架构(ISA)。这种语言让使用者用简单的语句描述指令行为。

5.O3CPU流水线与时序缓冲器

O3CPU模型使用一种时序缓冲器的数据结构来建模流水线级之间的通信延时与流水线级本身的延时,如图所示。



时序缓冲器是与队列类似的大小固定的结构,其中每个记录代表2个结构之间1个cycle的通信。生产者通常用索引值 0写入时序缓冲器,并且其它消费者使用与它们到生成者距离相关的cycle数作为检索值到缓冲器。时序缓冲器每个仿真cycle都会增加,此时所有索引提前1个cycle,并且当它们超过缓冲器的时钟深度时,记录被清除。

6.存储系统

M5存储系统包括两种主要对象:设备与互联。设备是组件比如cache,存储器与I/O设备。互联封装通信机制比如总线与网络。M5目前仅支持总线。M5支持的cache可以配置的参数有:尺寸大小、延迟、结合性、置换策略、一致性协议等。总线对象建模可配置延迟与带宽的split-transaction总线。需要简单的总线桥对象来连接不同速度的总线,比如PCI总线与系统总线。下图为M5存储层框图。图中放大部分是模块化的端口接口,支持所有存储对象,这允许根据运行时的配置进行任意互联。端口模型让2个设备对象可以不通过之间的总线进行连接,比如,将SimpCPU直接连向存储对象来进行快速功能仿真。


7. I/O设备

I/O设备是存储系统的首要参与者,对编写的I/O操作访问可配置的地址范围时做出反应并发出DMA交易。

8.以太网

M5使用建模成可配置带宽与延时的无损耗、全双工通道以太网链路对象,连接各个系统的网卡。M5用数据包大小除以链路带宽来计算链路上的时间。如果结果小于线路延时,链路上只允许1次1个数据包传输。如果延时很大,则会导致链路上有多个数据包的竞争。如果当数据包存在链路上时,在接收端缓冲器空间不足,数据包将被丢弃。

9.仿真网络负荷的陷阱

10.证明M5

英文原文:THE M5 SIMULATOR: MODELING NETWORKED SYSTEMS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值