【论文阅读】SimpleSSD: Modeling Solid State Drives for Holistic System Simulation


introduction

SSD当前以及成为泛计算领域的重要存储媒介。它的性能特性正好填补了main memory和storage system之间的性能差距。

1.当前(2018)SSD simulator存在的问题
  • 开源的SSD simulator 很少;
  • 现有的模拟器具有许多局限性,使得无法满足将memory和storage subsystem合并的科研需求。总的来说就是缺乏系统级别的模拟能力。由于SSD 本身有很多复杂的软件硬件结构,前人的SSD simulator基本无法模拟其内部的软硬件结构,因此没有捕捉到当代高性能SSD 的特性。
2.our work

 这篇文章提出了高保真的SSD simulator-SimpleSSD,它可以模拟SSD 内部的软硬件详细特性,同时简化了存储内部不太紧要的特性(?)

我们可以通过SimpleSSD 评估各种存储技术,也可以用于探索SSD 架构设计。
同时也可以将SimpleSSD集成到系统中,捕捉系统使用不同的存储所带来的CPU性能影响。


SimpleSSD

1.overview

在这里插入图片描述

  • CPU process - 本文中使用gem5进行模拟CPU processing
    * 相关应用在CPU的user space上进行搭建。通过VFS以及native file system来分配IO请求。VFS通过在page cache中缓存小尺寸的请求。native file system关系数据访问以及系统内存。
    * 之后命令到达block layer将多个请求按照特定的次序进行合并。
  • SSD process
    * 通过disk controller,CPU process和层级化固件(layered firmware)进行沟通。

模拟SSD一个重要的挑战就是支持多样的flash firmware versions。
我们实现了flexible FTL

  • 其地址映射机制可以根据所需的关联度粒度(associativity granularities)进行简单的重新配置。
  • 同时我们将IO调度以及页面分配机制从FTL中分离出来,这样就可以在不改变FTL的情况下嵌入测试不同的IO调度方案。
  • 还可以建议修改一些性能关键组件,如Garbage collection和wear leveling算法。

  * abstraction model模拟SSD的硬件结构,包含multiple flash die,module interfaces以及channels。

hardware abstraction:

  • 对每个组件进行周期级模拟可以准确地评估所有SSD内部构件。但是,在周期级别使用SSD的全系统模拟需要长时间运行和过多的资源。
  • 在本工作中,我们同时抽象了flash-level以及subsystem-level的硬件特性,同时实现了基于FPGA(xilinx spartan-6)的memory controller用于模拟不同内存技术的特性。
  • 基于所提出的特性,建立了die级别的延迟模型,虽然不能在一个周期级别上解释Flash 的全部特性,但是通过了解flash延迟内在特性和内部并行性来获得固件、控制器和体系结构设计之间的密切交互。
2.详细介绍

在这里插入图片描述

  • Fully-functional firmware simulation

处理request的基本流程:

  • a request from disk controller of gem5->host interface layer(HIL)
  • 对应的目标地址由FTL层进行翻译
  • 并行分配层(parallelism alloction layer)通过抽象互连总线和闪存的物理布局来服务请求。I/O请求的完成由PAL通过HIL报告给主机端控制器。

* host interface layer
1.1 在request到来的时候,解析host-side信息的语义,并将request转化为LBA,request type, number of sectors, and a host’s system time information
1.2 通过**API(ReadTransaction()/WriteTransaction())**和FTL层交流。

  • 1.3 latency map table:由于在模拟完整系统的时候,有不同的模式(discrete event-driven, activity-driven, and continuous),HIL使用该表记录结束时间以及对应的地址。当其延迟被后续的模拟模块更新,HIL就更新完成时间。

由于IO请求的大小(host application)各有不同,甚至可能超过一个page的大小,单独的flash die无法自适应。因此FTL层对于到来的request进行分割。

* Flash translation layer-API:FTLmapping()
2.1 FTL层会将到来的request分割成多个sub-request,每个都被logical page number(LPN)指示。

  • 如果请求是read,直接通过查询address mapping table转化为PPN(physical page numbers)
  • 如果请求是write,就需要申请pages并更新address mapping table的映射关系(包含地址以及各类元数据)

2.2 上述的PPN通过 API:SendRequest() 传递给PAL,上述的行为持续重复知道队列中没有sub-request。
2.3 如果空间不足,就会触发GC来重新声明一批新的pages。-API:GarbageCollection()

  • 选择victim block和free block(wear leveling决定)。- API: WearLeveling()
  • 复制victim中有效的数据到free blobk中,并且要更新映射表。
  • hardware simulation for scalable SSD parallelism
    * parallelism abstraction layer

将其他flash固件模块与SSD的并行分开达到更好的仿真效率。(模块化也是可以自由modify的基础)。PAL层将到达的PPN分离(API:PPNdisassemble())-channel x,die n;

   1.1 PAL层模拟了SSD的内部状态(channel-package-die),也能更好的获得延迟,空闲时间以及硬件冲突造成的penalty。
   1.2 之后PAL层就将每个sub-request模拟出的延时反馈给FTL。FTL评估获得的延时从而给IO请求生成一个合适的延迟。延迟通过API:TimelineScheduling()获得。

* latency variation mapping

SLC,MLC,TLC…虽然在媒介本质上没有什么区别,但是由于相对MLC,TLC的状态较多。因此,采用的是increment step pulse program,从而引入了显著的延迟变化。为了模拟这个program带来的延迟变化的行为,使用基于FPGA的controller进行模拟测试。

在这里插入图片描述
2.1 对于写操作,最有效位(MSB)页面的延迟分别比中心有效位(CSB)和最低有效位(LSB)页面的延迟分别长约1.3倍和8倍。TLC flash上的读取也表现出类似的延迟变化特征。具体来说,MSB页面的读取延迟平均比CSB页面和LSB页面的读取延迟分别长37%和84%。由于不同页面之间的延迟存在显著差异,这可能会对并行性和硬件建模产生很大影响。
2.2 我们观察到一个块中的前5个页面总是表现出LSB页面性能,以及后面3个页面(即LSB)的延迟。(前五页之后)与CSB页面相同。这8个页面被称为元页面,通常用于存储flash固件的元数据,比如与块关联的映射信息。所有剩余页面的延迟可以用以下简单函数映射:
在这里插入图片描述
addr, nmeta, nstate and nplane 是输入的地址, meta page的数目, 每个cell的状态数 和一个flash die的plane数。 如果f(addr)是0, 就是 LSB page. 如果f(addr)是1, 就是CSB page;剩余的就是MLB page。


总结

个人觉得工作的亮点:

  • 全功能。
  • die级别的延迟模型。
  • Mapping以及IO调度可以在HIL处进行修改更新,GC和WL也作为模块可以被modify。
  • FTL中对于request分割成多个sub-request。

[1]github-SimpleSSD

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《电动机驱动:建模、分析和控制》是一本关于电动机驱动系统的重要参考书籍。该书系统地介绍了电动机驱动系统的建模、分析和控制的理论和方法。 首先,该书详细介绍了电动机驱动系统的建模方法。建模是电动机驱动系统研究的基础,通过建立合适的数学模型,可以准确描述电动机的动态特性。该书介绍了不同类型电动机的数学模型,包括直流电动机、交流感应电动机和永磁同步电动机等。同时,该书还介绍了模型参数的辨识方法,以及建模误差的校正技术。 其次,该书深入讨论了电动机驱动系统的分析方法。通过分析电动机驱动系统的动态特性,可以得到系统的稳定性、响应速度和精度等关键指标。该书介绍了控制理论中的常用分析方法,包括根轨迹、频域分析和状态空间分析等。此外,还介绍了电动机驱动系统的传递函数建模和稳态性能分析等内容。 最后,该书详细讲解了电动机驱动系统的控制方法。控制是电动机驱动系统实现高性能运行的关键。该书介绍了常见的控制方法,包括比例积分微分控制器(PID控制器)、模糊控制和自适应控制等。此外,该书还介绍了先进的控制技术,如模型预测控制和强化学习等,以提高电动机驱动系统的控制性能。 总之,《电动机驱动:建模、分析和控制》这本书通过详细介绍电动机驱动系统的建模、分析和控制方法,为读者深入理解电动机驱动系统的工作原理和技术应用提供了宝贵的参考。无论是电机专业的学生还是从事电动机驱动系统设计和控制的工程师都可以从中获得实用的知识和技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值