非易失性内存资料笔记

最近查了一下关于非易失性内存的资料,做了点笔记在此:

NVM: non-volatile memory,非易失性内存。
PCM(PRAM): Phase-change Random Access memory,相变存储器。非易失性内存的一种,利用存储单元的可逆的相变来存储信息。可擦写的CD/DVD一直在用这种技术。目前主流技术是采用氧族元素(元素周期表上“氧”那一列)做的合金,一般采用的是锗、锑、碲合金(简称GST)。这种合金在常温下有两种状态,一种是不规则、无序的,具有较高的电阻(非晶态);另一种是高度有序的,具有较低的电阻(晶态)。通过电脉冲局部集中加热的方式在这两种之间切换。和RAM一样,相变存储器是按位读写的。相比于Flash技术,相变存储器不需要单独的擦除步骤。读取延迟大约在50-100纳秒左右,写入延迟大约是几毫秒。PCM对运行环境的温度要求很敏感,一般工作在0-70摄氏度之间。

MRAM:magnetic random access memory,磁阻随机存取内存
STT-MRAM: spin-transfer-torque magnetic RAM。实验室阶段,尚无产品。
ReRAM(RRAM): Resistive random-access memory 可变电阻式存储器

ECC(error correcting circuits):对于BCH编码,从k位的数据中纠正t个错误,至少需要t * ceil (log2k) + 1个校验位。ECC采用标准的Hamming码再多加一位parity bit,于是可以检测一位及两位错误,并纠正一位错误。现在主要是采用64+8,即72位一组,其中64位是数据,8位是校验。

ECC是为DRAM设计的,对于Flash、NVM等,应考虑其它的方案。至少在有一点上有根本的不同,DRAM的错误一般都是临时性的,而FLASH、PCM等都是永久的。

fusionIO octal:MLC Nand,如果是纯512B的单位,IOPS 大约1百万左右。以64 kB的单元读写,读的带宽是6GB/s,写入带宽4.4GB/s。访问延迟30微秒。容量5.12T。

PCM需要程序做一些改进:
1、写之前先读,只写被修改的位
2、每行前面加一个标志位。称为颠倒位。假如为1,代表其它的位是0-1颠倒的。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥