Abstract

  我们提议的非阻塞刷新工作是一次刷新内存块中的一部分数据,并在内存块中使用冗余数据,如RS码,在块中计算块的刷新/不可读数据以满足读取请求。作为概念的证明,我们将非阻塞刷新应用于服务器内存系统,其中每个内存块已经包含冗余数据,以提供硬件故障保护。评估结果显示,在具有不同冗余和故障保护强度的五种服务器内存系统中,对于16 GB和32 GB DRAM芯片,非阻塞刷新分别提高了16.2%和30.3%的性能。

I. INTRODUCTION

  虽然dram和sram都是易失性的,但是dram需要动态/主动刷新操作来延迟读取请求来刷新数据;相比之下,sram依靠锁存反馈来执行静态/背景刷新,而不延迟任何读取访问。

  以前的工作已经研究了如何减少内存刷新对性能的影响,如智能调度;许多工作探索了如何更积极地解决内存刷新性能开销,如跳过许多所需的内存刷新操作。但牺牲安全性和可靠性。

  为了有效地解决不需要跳过刷新而增加刷新延迟的问题,我们建议使用非阻塞刷新。非阻塞刷新一次只刷新内存块中的一些数据,并使用冗余数据(如RS码)计算刷新块中不可访问的数据以完成读取请求。与每次刷新块中的所有数据的传统方法相比,非阻塞刷新一次只刷新块中的一些数据,方法是在后台更频繁地操作。

  我们将非阻塞刷新应用于重视安全性和可靠性的服务器内存系统。我们观察到,服务器内存系统已经包含冗余数据。

  该论文具有以下四点贡献:

  1.提出我们非阻塞刷新,以避免延迟访问刷新内存块。

  2.在服务器内存系统的上下文中应用非阻塞刷新,在不增加存储开销的情况下,可以利用现有的冗余内存数据。

  3.我们发现,对于使用16 GB和32 GB dram芯片的服务器内存系统,非阻塞刷新的平均性能分别提高了16.2%和30.3%。

II. BACKGROUND

  DDR存储结构介绍:channel、DIMM、rank、chip、bank、存储阵列row/colum

A. Memory Refresh

  tRFC:单个刷新间隔的持续时间称为刷新周期时间refresh cycle time【Refresh latency】。与不断恶化的刷新延迟相比,总线周期时间和最小读取延迟都有所改善。随着这些趋势的持续,内存刷新成为影响整个内存系统性能的决定性因素之一。

B. Skipping Refresh

  跳过刷新减少了dram单元格中存储的平均电荷量,因此大大增加了dram易受读干扰错误的影响。以较低的刷新速率操作内存不足也可能增加内存错误率,因为保留分析不能总是识别所有弱单元;较高的内存错误率反过来会降低可靠性。可靠性对于服务器系统很重要,因为一个小时的服务器停机时间通常会导致数百万美元的收入损失。

总之,需要新的解决方案来解决具有严格的安全性、可靠性和可使用性要求的系统的内存刷新性能开销。

III. MOTIVATION 动机

  服务器系统中的每个内存块都包含大量冗余数据。因此,我们可以利用公共情况下无故障内存位置中未充分利用的冗余数据来实现非阻塞刷新。

  由于服务器内存中的大量冗余数据与实际用于纠正错误的少量数据之间的差距越来越大,我们认为冗余数据是一种未充分利用的资源,可以重用以提高内存性能。

IV. NONBLOCKING REFRESH

  我们建议使用非阻塞刷新来刷新内存块,同时允许读取请求访问刷新块;它的工作方式是在任何时间点刷新内存块中的一部分数据,并使用每块冗余数据(如RS码)来重构块中的不可读/刷新数据,以满足对刷新块的读取请求。

  在本文中,我们重点探讨了服务器内存系统上下文中的非阻塞刷新。设计服务器内存的非阻塞刷新需要解决以下三个主要挑战:

  1)如何重用服务器内存中现有的冗余数据来执行非阻塞刷新?

  2)如何执行与一次刷新整个块的常规方法相同的总刷新量?

  3)在内存故障突然发生时,冗余数据必须保持硬件故障保护的初衷。因此,如何在利用冗余数据实现非阻塞刷新的同时保持基线故障保护是第三个挑战。

A. How to Utilize Existing Redundant Server Memory Data?

  传统的服务器内存系统不能利用冗余数据来计算存储在刷新芯片中的不可访问数据,因为它们同时刷新所有芯片

  要计算存储在刷新芯片中的不可访问数据,每个块中不可访问的数据量必须小于块的冗余数据能够重建的最大数据量。我们建议一次刷新几个芯片,以便每个块中只有一小部分数据由于刷新而无法访问。

图6b显示了一个每次只刷新一个芯片的示例。

  

  为了实现非阻塞刷新,每个级别的芯片在逻辑上被划分为刷新组。非阻塞刷新操作刷新单个刷新组。由于传统的服务器内存系统同时刷新所有芯片,因此需要进行硬件修改,为了单独刷新每个刷新组。

B. How to Ensure Each Chip Performs Same Amount of Refresh as Conventional Blocking Refresh

  一次只刷新一个等级中的一些芯片的一个明显的挑战是,如何在每个芯片中执行与常规的同时刷新所有芯片的方法相同的刷新。MC必须比传统的阻塞刷新更频繁地发出非阻塞刷新,以弥补每次刷新芯片的次数减少。我们观察到,因为非阻塞刷新是因为非阻塞刷新。不阻塞读取请求,MC可以在后台连续刷新内存,性能影响最小。另一方面,常规的阻塞刷新系统只能不频繁地刷新每个级别,以避免过多地阻塞读取请求。图7对比了非阻塞刷新的时间线和常规刷新的时间线。

  由于非阻塞刷新比传统的阻塞刷新执行得更频繁,所以非阻塞刷新可能会产生命令总线带宽超限。假设每个channel都有一个rank,并且tRFC=550 ns,如果MC在每个tRFC之后连续发出命令刷新,则聚合命令总线带宽仅为0.2−0.4%。然而,这种命令总线带宽开销随着channel中的rank数而成比例增加;这可能转化为不可忽略的命令总线带宽利用率(例如,5%)对于非常大的信道来说。一个有效的解决方案是让同一channnel中的多个rank(例如,相同DIMM中的所有rank)对命令总线上的每个刷新命令MC并行执行非阻塞刷新。

  根据刷新组大小和trefi,非阻塞刷新可能并不总是完全保持常规的每次刷新整个块的方法。在这种情况下,具有非阻塞刷新的内存系统可能需要偶尔执行常规的阻塞刷新以满足要求。即使在这种情况下,非阻塞刷新仍然有助于避免许多常规的阻塞刷新,因此,与仅执行常规刷新相比,性能有所提高。具有非阻塞刷新的内存系统可以使用按等级的硬件计数器来计数过去的非阻塞刷新操作的次数;在秩执行了与有刷新组相同的非阻塞刷新之后,mc不需要向th的秩发出阻塞刷新。

  与读请求不同,当每个级别频繁/持续刷新时,写入请求可能会受到负面影响。写入级别不能与刷新级别并行进行,因为芯片中的数据不能在芯片刷新时更新。写入请求仍然需要等待一个级别才能完成任何在运行中的刷新操作。因此,更频繁地刷新每个级别可能会增加写入延迟和减少写带宽。我们注意到,增加写延迟并不会降低性能,因为内存写并不在程序执行的关键路径上;但是,减少写带宽会降低性能,因为它会降低内存存储指令的吞吐量。

  为了在经常执行非阻塞刷新的同时保持内存写入带宽,我们进行了两个观察:第一,由于同一通道中的所有级别共享相同的内存总线,MC一次只能写入一个级别。因此,一个通道中的总写入带宽被划分为信道中的所有级别,如图8a所示。尽量减少由于行冲突造成的读取延迟开销。这种交织导致写入请求在信道中的所有级别之间分布相当均匀。根据这些观察,我们建议重新排序写入请求,以便将每个信道的写入带宽集中在几个级别上,如图8b所示。这保持了相同的信道级写入带宽。

  我们建议将信道中的级别逻辑地分组为单独的写入组,这样每个n级的信道包含k个写入组,每个写入组的n/k级别。在每个trf c间隔期间,MC写入一个k写入组,同时对其余k−1写入组执行非阻塞刷新。其余级别将在每个trf之后完成当前的非阻塞刷新。同时,MC选择要写入的不同的写组,并再次将其余的级别置于非阻塞刷新中。这种方法可以提供常规系统的信道级写入带宽,同时允许大多数级别(即(k−1)/k)从非阻塞刷新中受益。服务器内存通常包含多个级别的每个信道以提供足够的容量;因此,它们通常可以从一个较大的(k−1)/k值中受益(例如,对于每个信道只有四个等级的信道,3/4)

  

  对于每个trf c间隔只对一个写组的写请求,需要修改mc以缓冲更多的次写入。在写入请求的最坏情况下,我们使用Little定律[30]来估计与写入缓冲区的输出速率相匹配所需的写入缓冲区的大小。Little定律规定,队列中元素的平均数量为l=λ·w,其中λ是平均到达速率,w是每个元素在队列中等待的平均时间。在写缓冲区的上下文中,l是缓冲区大小,λ是内存写带宽,w是块平均需要在缓冲区中等待多久,直到它的写组被选择为写。假设写请求占内存请求总数的一半,因为处理器通常需要先从内存中提取块,然后再写到块。λ=12.8gbps,对于3.2GHz和64位宽信道。对于k写入组,一个新到达的块平均等待k·tRFC才能选择其写入组;因此,我们悲观地估计w=k·trf C.w=4.550=2200 ns,假设服务器系统具有16 GB芯片(550 Ns tRFC))[21]和每信道4个写组,那么该信道的写入缓冲器的新大小应为1=12.8·2200=28 kb。

Nonblocking Memory Refresh&2018ISCA/Security& 非阻塞内存刷新的更多相关文章

  1. 基于CAS操作的非阻塞算法

    非阻塞算法(non-blocking algorithms)定义        所谓非阻塞算法是相对于锁机制而言的,是指:一个线程的失败或挂起不应该引起另一个线程的失败或挂起的一种算法.一般是利用硬件 ...

  2. IO通信模型(二)同步非阻塞模式NIO(NonBlocking IO)

    同步非阻塞模式(NonBlocking IO) 在非阻塞模式中,发出Socket的accept()和read()操作时,如果内核中的数据还没有准备好,那么它并不会阻塞用户进程,而是立刻返回一个信息.也 ...

  3. {python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO模型比较分析 selectors模块

    python之IO多路复用 阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 ...

  4. Node.js官方文档:到底什么是阻塞(Blocking)与非阻塞(Non-Blocking)?

    译者按: Node.js文档阅读系列之一. 原文: Overview of Blocking vs Non-Blocking 译者: Fundebug 为了保证可读性,本文采用意译而非直译. 这篇博客 ...

  5. 非阻塞赋值(Non-blocking Assignment)是个伪需求

    https://mp.weixin.qq.com/s/mH84421WDGRb7cuU5FEFIQ Verilog的赋值很是复杂,包括: 1. Continuous assignment; 2. Pr ...

  6. stm32中阻塞模式和非阻塞模式 in blocking mode 与 in non-blocking mode区别

    阻塞模式和非阻塞模式...... 我的理解是:阻塞模式就像是一个延时函数,当这个函数没处理完那么,所有的按照流程需要执行的代码都不会被执行,要等到这个延时完成,类似 平时看书上写的LED灯闪烁,用的d ...

  7. 操作系统OS - 阻塞(Blocking)非阻塞(Non-Blocking)与同步(Synchronous)异步(Asynchronous)

    参考: http://blog.jobbole.com/103290/ https://www.zhihu.com/question/19732473/answer/23434554 http://b ...

  8. 非阻塞赋值(Non-blocking Assignment)是个伪需求(2)

    https://mp.weixin.qq.com/s/5NWvdK3T2X4dtyRqtNrBbg   13hope: 个人理解,Verilog本身只是“建模”语言.具体到阻塞/非阻塞,只规定了两种赋 ...

  9. 非阻塞同步算法与CAS(Compare and Swap)无锁算法

    锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的.内核态的锁的时候需要操作系统进行一次上下文切换,加锁.释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放. ...

随机推荐

  1. UVa 11234 The Largest Clique

    找最长的连接的点的数量.用tarjan缩点,思考可知每一个强连通分量里的点要么都选,要么都不选(走别的路),可以动规解决. #include<iostream> #include<c ...

  2. HDU 4388 Stone Game II {博弈||找规律}

    Stone Game II Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  3. Replacing Accented characters(Diacritic) .NET

    原文发布时间为:2012-02-17 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Collections.Generic;using Syste ...

  4. sql语句like的用法 有些正则表达式可以通过like实现

    原文发布时间为:2010-10-28 -- 来源于本人的百度文章 [由搬家工具导入] 在SQL结构化查询语言中,LIKE语句有着至关重要的作用。LIKE语句的语法格式是:select * from 表 ...

  5. @RequestMapping定义不同的处理器映射规则

    通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映射 @RequestMapping(value="item")或@RequestMappin ...

  6. linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )

    1: 台式机家里面不想再走线了. 于是去某东买了个USB无线网卡.tp的WN725N  USB,非常小, 和罗技的优联接收器差不多大. 2:  驱动能自己识别是不指望了,既然是usb网卡,插入USB后 ...

  7. 记录: 百度webuploader 分片文件上传java服务器端(spring mvc)示例的优化

    最近项目上用到文件分片上传,于是找到了百度的一个开源前端控件webuploader. 于是尝试使用. 下载下来后,它提供的服务器端示例代码是php版的,那么Java版的呢? 其实,上传文件都是按照rf ...

  8. NYOJ 20.吝啬的国度-DFS+STL(vector保存上一节点)

    整理代码 吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第 ...

  9. [Machine Learning with Python] Data Preparation through Transformation Pipeline

    In the former article "Data Preparation by Pandas and Scikit-Learn", we discussed about a ...

  10. HDU 3549 Flow Problem (dinic模版 && isap模版)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 题意: 给你一个有向图,问你1到n的最大流. dinic模版 (n*n*m) #include ...