FLIP-N-WRITE详解

文章目录

  • 写在前面
  • 什么是FLIP-N-WRITE
    • 为什么要FLIP-N-WRITE
    • FLIP-N-WRITE的主要思想
    • DCW(数据压缩写入)
    • PRAM的两种作用
  • FLIP-N-WRITE基本算法
    • 方案效果
    • 一些注意的小点

写在前面

网上看了半天都没有写这方面的文章,索性把论文弄下来自己看了看。
很多算法复杂度的我这里就不太想写了,主要还是看个方法。

什么是FLIP-N-WRITE

Flip-N-Write,一种简单的微体系结构技术,用更高效的读修改写操作取代PRAM写操作

为什么要FLIP-N-WRITE

相变随机存取存储器(PRAM)技术正迅速成熟到生产水平。PRAM的主要优点是无波动性、字节可寻址性、就地可编程性、低功耗操作和比当前fliash存储器更高的写持久性。然而,PRAM相对较低的写入带宽和不太理想的写入持久性仍有改进的空间。

后来这种技术就不只运用在PRAM里面了。

FLIP-N-WRITE的主要思想

  1. 用readmodify写操作替换写操作,以便在不需要时跳过位编程操作
    例如本来就是0,要写的数据还是0,理论上就没必要写了
  2. 通过引入一个“flip bit”来限制要编程的最大位数
    flip bit表示要写入的字是否被flip
  3. 核心思想
    通过偶尔对要写入PRAM的数据进行重新编码,将要编程的实际比特数减少到一半左右

DCW(数据压缩写入)

data-comparison write
这是另一种方法。
FLIP-N-WRITE详解_第1张图片算法的伪代码如上,其实就是挨个比较,不对的就更新。

实际的位编程(第2-4行)可以按顺序进行或并行进行

PRAM的两种作用

  1. 当PRAM设备用作非易失性程序存储器(例如,替换NOR flash芯片)时,最频繁的操作是读取(用于获取指令)。在这种情况下,写入PRAM(即固件更新)是一个罕见的事件,低写入带宽问题相对较小。
  2. 然而,当PRAM用于数据存储时(例如,替换NAND flash芯片甚至DRAM芯片),写操作将更频繁地发生,增加PRAM的写带宽和提高写相关的能量和耐久性成为关键的设计问题。

FLIP-N-WRITE基本算法

关键思想是通过在写入新数据字之前检查旧数据字来抑制不必要的位编程操作,并有机会对新数据字重新编码以进一步最小化位编程

FLIP-N-WRITE详解_第2张图片
算法详解:
N是字宽,F和F’是新、旧的翻转位

  1. 从目标地址(第1行和第2行)读取现有的“旧数据”。
  2. 接下来,将逐位比较旧数据和新数据,以确定有多少位不同(第3行)。注意,在这个过程中要考虑flip位。两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数
  3. Flip-N-Write表示要写入PRAM的数据(第4行)和Flip位值(第5行),前提是要编程的位数(在第3行计算)超过N/2,其中N是PRAM的内存字宽度。正如稍后将要讨论的,这种“flipping”数据有助于严格地将实际位数绑定到程序。
  4. 最后,只有与PRAM({D’,F})中的数据不同的位(bu-ffer{D,F})才被实际更新(第8行和第9行)。同样,flip位也包含在这个步骤中。

算法实例(自己写的有错请纠正)
位置1原有数据(0011,0) //0011,未翻转
现要写入(1101)
计算汉明距离为3,由(1101,0)转为(0010,1)
(0011,0)->(0010,1)变化了1+1共计2位。

算法优点:

  1. 使用Flip-N-Write,要更新的最大比特数永远不会超过N/2;
  2. 当N比特的旧数据和新数据之间的差异(汉明距离)大于N/2时,Flip-N-Write利用Flip比特重新编码新数据,使得要更新的实际比特数现在降到N/2以下。
  3. 由于flip位的增加,要更新的最大位数等于N/2。底线是,第9行中的实际更新步骤最多为N/2位。

原论文花费了大量篇幅解释为啥这么做效果比DCW好,不再赘述

方案效果

M是要写入的bit数量,S是单位写入尺寸,TSET是设置这个操作的延迟
FLIP-N-WRITE详解_第3张图片

一些注意的小点

  1. 在操作完成之前,正在操作的PRAM区域将无法读取访问权限。如果内存更新和内存读取都频繁发生并且它们重叠(例如,PRAM用于主内存),则内存读取通常会阻塞等待目标区域变为空闲。
  2. FNW会多一位来表示翻转,总共N+1位

你可能感兴趣的:(系统领域,内存)