【论文阅读】非易失内存系统中的写优化和持久化技术研究

最近看了华科左鹏飞的博士毕业论文,深感写的好,便作此笔记。

论文主要针对NVM做了4部分工作:针对非加密NVM的写优化、一致性优化工作,针对加密NVM的写优化、一致性优化工作。具体来说包括以下4个方案:Path hashing, Level hashing, DeWrite, SuperMem.

背景

计算机发展,对主存DRAM容量要求越来越高,但受工艺限制DRAM难以大容量。

NVM位于DRAM与SSD之间,低能耗、高密度,具有接近DRAM的访问速度与接近SSD的容量,具有可字节寻址、非易失性、访问速度快等优点。

但直接把针对DRAM设计的应用和数据结构用到NVM上,面临写优化、数据持久化、安全性的挑战

写优化:进行磨损均衡、减少写次数存在挑战

持久化:保证故障一致性:使用clflush+mfence指令保证写的顺序,使用日志/CoW避免大于8B数据的部分更新。这些机制增加额外开销,如何保证一致性存在挑战

安全性:内存中存明文不可行,NVM中需要存密文,使用CME计数器模式加密NVM内存。但加密雪崩 =》NVM写增加,加密NVM2个写请求不能同时持久化 =》数据持久化不能保证故障一致性

 本文设计的4个方案总结如下图所示,总结了每个方案的核心思想

一. Path hashing

背景

现有的hash直接使用在NVM上会带来额外写,降低性能。因此设计path hashing。

链哈希:插删时需要额外NVM写,因为要修改指针

线性探测:删除元素时要移动元素回原来的位置,造成额外NVM写

罗宾汉哈希:插入导致替换,删除需要移动,造成额外NVM写

双选哈希:插删只探测2个位子,无额外NVM写

布谷鸟哈希:插入踢出操作可能造成大量NVM写

 设计

 1. 位置共享

倒二叉树,顶层为可寻址单元,下层为共享的备用单元。用备用元素解决冲突,提升空间利用率

2. 双路径哈希

两条备选路径,进一步减少冲突

3. 路径缩减

把底层无用的位置删掉,缩短查找路径

4. cache优化

cache缩小CPU与主存间的速度差距,cache行是主存与最后一级cache的基本数据传输单元,一般大小64B。如果不在cache中称为未命中,需要从主存加载到cache

属于相同路径的多个存储单元打包存储在1个cache行。划分子树,小方块内预取同1路径的下一级存储单元,如果访问4,找不到,找层3时产生1次cache命中

二. Level hashing

背景

path hashing减少NVM写,但没有保证故障一致性+扩容低效

设计

1. 结构设计 

结合BCH思想(桶中多个slots)、2-choice哈希(用2个hash选2个备选桶)、cuckoo哈希(至多移动一次元素)、2层设计(提升负载因子,搜索最多探测4个bucket)

2. 高效扩容

创建top 2倍大的level,把bottom中的所有元素重哈希到新top中。

提升load factor:b2t策略:把底层满的移动到其他候选顶层,使得顶层与底层可以重分布,提升load factor

提升搜索性能:比较两层,哪个元素多,从哪层开始搜索

3. 故障一致性保证

桶之前有token标记状态,可以实现免日志的操作。

插入:没有元素移动 =》先写元素,再token置1;需要移动元素=》先复制到新位子,新token置1,旧token置0

删除:token置0

扩容:复制到新位子,新token置1,旧token置0

概率性免日志更新:如果存在空位,写新KV,修改新旧token

4. 并发性

对每个slot加细粒度锁

三. DeWrite

背景

NVM内存加密一般采用CME模式,需要尽量减少写入NVM的数据量,从而降低加密负担。cache中有大量重复行,看看内存是否也有重复行,统计后发现写入NVM的内存行很多重复,因此可以执行去重,减少NVM写

设计

1. NVM上进行加密去重不可行

2. 基于预测的并行策略

数据去重与加密可以直接串行处理(适合重复数据)或者并行处理(适合非重复数据),可以增加1个片上历史窗口,保持最近3个内存行是否重复,用于预测下一个是否重复

3. 轻量级在线去重

使用CRC-32哈希算法,更轻量。NVM读代价比写低,去重可以用读来消除写

硬件架构:在LLC中预测下一个内存行数据是否重复,在iMC中执行去重和加密,然后写入到加密NVM中。

 数据结构:地址映射表、重复检测hash表、清理旧hash的反向hash表、空闲空间管理表

4. 元数据共享策略

计数器模式加密需要存储行计数器来加解密数据,每行的计数器是 28 B

counter嵌入到元数据中,减少存储代价

5. 加密NVM读写操作

1. 预测机制推测是否重复 
2. 计算cache line哈希
3-5. 查hash表。如果有,读NVM比对cache line。如果重复,取消写,更新metadata;如果不重复,写NVM,更新metadata
6-7. 如果hash表中无,写NVM,更新metadata

 

1. 请求地址作为initAddr地址号查表,如果值是counter值,则计算OTP
2. 如果值是realAddr真实存储地址,则查询反向hash表获取counter,计算OTP
3. 读密文,OTP异或解密

四. SuperMem

背景

现在保证加密NVM中故障一致性可以使用写回式counter cache,需要大电池或软件层修改;电池贵,修改难移植。持久化与安全性存在矛盾:写入NVM产生的数据写与counter写请求不能同时持久化,可能导致故障时不一致

目前使用CME进行NVM加密,使用全局key+行地址+counter来形成OTP,加密数据行

现在的计算机系统不能原子地同时持久化两个写请求到 NVM 中

设计

1. 直写式counter cache

直写cache:当data写入NVM,counter也写入NVM,不需要手动刷cache。但每次2个写降低性能

通过把counter与数据写的请求同时添加到写队列,可以保证故障一致性

2. 跨bank的counter存储 - XBank 

counter存储在NVM连续区域SingleBank中

写回counter cache: 大部分counter写缓存在cache
直写counter cache: 每个data产生1个counter写,不同bank的data,产生的counter写都在一个bank,只能串行降低性能

OS给应用分配连续的内存,很可能在附近bank,所以发到远的bank,能够并行

3. counter写聚合 - CWC

 分裂计数器模式:1个页共享大counter M,页内64个行分别有64个7bit的小counter m

内存行重写,更新小counter,如果溢出,更新M,M不会溢出,大于NVM寿命

应用通常给事务分配连续空间,事务中多个cacheline具有连续物理地址,也具有空间局部性

 日志条目:同1页中多个内存行,counter写入相同内存行

后写入的counter cacheline 包括之前写入的counter

直接删掉旧的counter cacheline,最新的计数器行包括了之前的修改
给队列中cacheline增加1位标志是否是cpu cache/counter cache

内存页重加密处理counter溢出:

数据不一致:重加密状态寄存器RSR追踪每行加密状态,如果丢失,可能页一部分加密

 RSR:32bit物理页号,64bit旧M,64bit done每行是否重加密

 用ADR保护RSR不丢失

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anyanyamy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值