DRAMSim2:一种时钟周期精确的存储系统仿真器(概要)

1.引言

许多CPU仿真器忽视了存储系统精确模型的必要性。许多这样的仿真器包含最简单的存储模型,而这些存储模型并未考虑到现代存储系统的高度复杂行为。时钟周期精确的CPU仿真器通常将存储访问的延时设为固定的,与实际的存储系统差别很大。为此,我们开发DRAMSim2,一种时钟周期精确的DDR2/3仿真器。DRAMSim2同时提供了一种图形化的工具DRAMVis,用于观察与比较关键性能指标比如带宽、延时与功耗。下图为DRAMSim2组件概况。MemorySystem封装为任意前端驱动提供一个简单的用户接口。

DRAMSim2:一种时钟周期精确的存储系统仿真器(概要)_第1张图片

2.DRAMSim2架构

DRAMSim2是用C++实现的,作为一个DDR2/3存储系统的面向对象模型,包括一个详细的、周期精确的存储控制器模型,用来给挂在一条标准存储总线的一组DRAM设备发出命令。DRAMSim2核封装在一个单对象,叫做MemorySystem。存储对象要求两个ini文件:设备ini文件与系统ini文件。设备ini文件包含描述特定DRAM设备的参数,比如时序限制与设备功耗。这些参数能够在制造商的数据手册上找到。DRAMSim2包中包含几个Micron DDR2/3设备的ini文件。系统ini文件包含与实际DRAM设备无关的参数。包括的参数比如rank数,地址映射表,调试选项,行缓冲策略,存储控制器队列结构与其它仿真细节。

在MemorySystem对象创建之后,驱动代码注册一个将要在请求完成时执行的callback函数。此时,DRAMSim2的初始化才算完成。驱动代码必须为每个存储系统时钟tick调用一个函数,并调用另一个函数来增加存储请求。在存储请求完成数个时钟周期之后,DRAMSim2调用提供的callback函数来让前端驱动知道请求已经结束。当一个请求加到DRAMSim2到完成的时间根据当前存储系统状态而变化。因为仿真器的内部被封装到仅由少量函数组成的接口,将DRAMSim2挂载到任何种类的前端驱动比如trace reader,时钟精确的CPU仿真器比如MARSSx86,或离散事件仿真框架比如SST。

DRAMSim2既可作为单独的二进制也可作为共享的库被编译。在单独模式下,DRAMSim2仿真了从disk上的存储trace读取的命令。在共享库模式下,DRAMSim2提供创建MemorySystem对象与加入请求的基本功能。

除了C++ STL,DRAMSim2并不依赖外部库。

仿真的内部:

来自CPU的请求缓冲进入以执行顺序排队的交易队列。这些请求被转换为DRAM命令并放入命令队列,这些命令可以拥有不同的结构比如每rank或每bank每rank。存储控制器包含系统中每个存储bank的状态,并使用这些信息来决定下一个发出哪个请求。存储控制器可从命令队列任意乱序发出请求,只要它不调度写在依赖的读之前或违反时序限制。乱序发出请求有助于提高bank利用率并且这样帮助提高带宽与降低延迟。在open page模式,DRAMSim2将保持row open并给与优先响应到已经打开行的请求。这可以减少进行row预充电的开销,这些行可能在不久的将来被使用。相对地,closed page模式将在每个请求之后立即对行进行预充电;这对具有较差locality的workload很有好处。

在仿真的DRAM设备从存储控制器收到命令与数据之后,使用第二组在rank的bank状态进行错误检查以确保收到命令的时序是有效的。如果仿真器以timing-only模式编译,并不存储来自writes的数据,并且这些数据并不包含在reads响应中。相对地,能配置DRAMSim2来对writes存储数据并对reads返回数据。许多CPU仿真器与其它前端驱动并不关心实际数据,所以默认不存储数据以减少仿真器的存储使用。

当读写完成时,仿真器保持带宽的轨迹与请求的延时。这些统计数据均分到一个epoch,epoch的长度可由用户配置。在每个epoch之间,仿真器输出细化带宽、延时与功耗统计到一个.vis文件与控制台(或一个日志文件)。.vis文件能载入到DRAMVis。

除了仿真因为来自驱动的读写产生的状态变化外,DRAMSim2存储控制器也对DRAM刷新的影响进行建模。刷新进行过程中发出的read请求必须比其它请求等待更长时间。这样的长延时能造成被存储访问阻塞处理器主要的性能损失,并能很大程度地影响整体系统性能。

最后,DRAMSim2使用Micron描述的功率模型来计算每个bank状态转换的功耗。DRAMSim2也包括heuristics来将设备设定为低功耗模式来减少低存储活动时的功耗。低功耗模式的开关可由ini文件中的一个标志控制。

3.验证

4.全系统仿真

5.观察与比较结果:DRAMVis

6.结论

英文原文:DRAMSim2: A Cycle Accurate Memory System Simulator

你可能感兴趣的:(学术理论)