nvdimm

nvdimm(non-volatile dimm)是persistent memory的一种。persistent memory就是特殊的一种内存,它采用一般的内存插口(dimm),但是具备断电数据保存功能。它可以采用一般的cpu访问内存的方式load/store,其访问延时是dram级别的;但是它又具备flash式的断电保存功能。

至2018年初,市面nvdimm主要是nvdimm-n,它制作是采用dram+控制器+nand flash+超级电容(或者电池)。nvdimm控制器在系统异常断电时刻在特定的主板硬件信号和os驱动的配合下,可以将nvdimm中dram部分数据刷新到nand-flash中。在机器上电时刻控制器又可以将数据从nand-flash中读取到nvdimm 的dram部分。

主机访问nvdimm方式



nvdimm在主机os的使用有两种方式:

1、通过pmem方式使用

就是按照persistent内存的方式使用,cpu直接使用store和load方式访问nvdimm设备,跳过os内部的page cache,通用块层,也无需特别的驱动作为访问中转(因为此种访问方式是内存式访问)。

这种访问方式下,应用需要意识到nvdimm的存在,自己映射nvdimm一段存储空间,应用自己实现用户层cache。

上图中最右边的虚线和右侧第二条线都是这种访问方式。不同的是右侧第二条访问线需要os文件系统访问,但是文件系统需支持dax(direct access)属性(ext4,xfs已支持)——用户通过文件系统访问设备不过page cache、通用块层,直接使用mmap将文件映射到应用地址空间中,而文件位于nvdimm设备上。这样的好处在于用户可以使用文件系统实现的permission、quota等机制。


2、通过块设备(btt/sector)方式使用

通过块设备方式来访问nvdimm,这样的优势在于可以使用linuxkernel实现的软raid、mirror、加密/压缩等中间层驱动所带来的功能。由于nvdimm在硬件上不能保证针对块更新的原子性(指在突然掉电的时候,nvdimm不能保证按照block访问时刻,一个块是整体更新;可能存在半更新的情况)。需要通过os建立这种块的原子更新特性,引入btt(block translate table)来保证每次更新一个块都是原子的。所以在os内部针对nvdimm btt访问方式需要提供专门的驱动层。

btt的具体做法就是建立一个逻辑的lba和真实的lba之间的映射表,每次更新的时候,先完成物理lba的更新,然后再刷新btt标中块逻辑lba和块真实lba的对应关系。如此保证os每次进行更新nvdimm block时刻,都是完整的。


图片发自简书App


btt工作图



二、nvdimm上的其他概念

1、namespace和region

在nvdimm设备上,软件或者硬件可以将nvdimm设备划分几个区域。这几个不同的区域可以采用不同的访问方式它们分别是:pmem方式、Blk方式和 pmem+btt方式。这些区域就是namespace。所以namespac有大小、范围和访问方式这三个基本属性。

通过ndctl工具可以查看、创建和修改主机上的nvdimm的namespace。

一个或多个namespace组成了一个region,一个region内所有的namespace访问方式都必须是相同的。

访问方式只有:pmem、blk和pmem+blk的方式。

2、label

在nvdimm上记录哪一部分属于哪个namespace的一段存储区域。每个nvdimm都有一个。


region 、namespace和label



3、dpa

dimm 物理地址,是dimm上的偏移。当使用pmem方式时,dpa和spa(system 物理地址)是一对一的关系。

4、dsm

device specific method是acpi规定的访问设备特殊的方法(这里是指nvdimm的固件)

5、nfit

nvdimm firmware interface table 是acpi6.0协议定义的访问nvdimm固件的接口,libnvdimm在访问nvdimm设备的时候就使用此接口来访问nvdimm固件提供的功能(创建namespace等)


三、linux访问nvdimm涉及的组建

在linux上需要如下组建才能访问nvdimm:

1、内核模块:nv_pmem.ko,nv_btt.ko

2、用户态组建libnvdimm和ndctl程序

四、参考

suse nvdimm介绍

suse nvdimm操作方法

rhel nvdimm支持方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容