转自:SCM是什么鬼,NVMe与其结合将赋予存储介质哪些能力?

全SSD闪存阵列在企业级存储得到广泛应用,相比传统机械硬盘,它的延迟、性能和可靠性都有了显著提高。许多早期开发商抓住其闪存技术优势的机遇,通过快速推出全闪存产品来领先于竞争对手。他们相信可以依靠全闪存实现差异化。但这个过程是相对曲折的,虽然这些公司都拥有全闪存阵列产品,但是他们的产品都是基于专用技术之上,下面从SSD的发展历程来说起。

SSD存储介质和接口技术一直处于不断向前发展和演进的过程。SSD分为几个阶段,第一个阶段是SATA SSD或者SATA/SAS SSD为主导,这个阶段介质以SLC和eMLC为主。第二个阶段是PCIe SSD,PCIe SSD最大的问题是不标准,很多私有化协议各自为政,基于FTL位置不同主要分为Host based SSD和Device base SSD。

直到NVMe时代才统一了接口和协议标准,NVMe主要的产品形态有三大类。第一类是和SATA/SAS SSD兼容的U.2,第二类是和PCIe兼容的SSD卡,第三类消费级产品常用的M.2,具体请参看“闪存技术最全面解析”文章。

纵观SSD发展,NVMe的出现虽然对接口标准和数据传输效率上得到了跨越式的提升,但是存储介质目前主流还是基于NAND Flash实现。那再往前发展,存储介质应该怎么发展呢?

Intel Optane(傲腾)系列硬盘通过实践证明NVMe和SCM(Storage Class Memory)配对时才会显现更大的存储优势,那时数据存储将会迎来重大飞跃,NVMe的未来属于SCM。它将建立在行业协议标准而不是专有技术之上。

实际上,Intel/Micron发布3DX(PRAM)首次将NVMe和SCM结合,这个我在“从Intel Optane系列Coldstream和AEP谈全闪存性能优化”文章中有详细介绍,之后各大厂家都加大了SCM介质的投入。Intel称Optane Memory为Apache Pass(AEP),为高性能和灵活性而设计的革命性的SCM。称Optane NVMe SSD为Clodstream,为世界上最快、可用性和可服务性最好的SSD。

3D XPoint(包括Apache Pass DIMM和Clodstream SSD)位于DRAM和NAND之间,填补DRAM和NAND之间的性能和时延GAP。

SCM同时具备持久化和快速字节级访问的特点,前几天,Intel正式发布了Optane SSD 900P,分为280GB和480GB两种容量版本,承诺900P比友商NVMe SSD竞品快7倍,最高连续读取速度2500MB/s,连续写入速度为2000MB/s。

同时,SCM具备Persistent Memory介质和NVM(Non-VolatileMemory)介质特性。更重要的是SCM没有NAND Flash顺序写入和写前擦除的约束,操作过程更简单;SCM介质的在寿命和数据保持能力方面的表现也远超NAND Flash。基于这些特点,业界普遍认为SCM会成为颠覆存储系统设计的新一代介质,并优先应用于性能和可靠性要求较高的场景。

Intel/Micron发布3DX(PRAM)之后,各大厂家都加大了SCM介质的投入,从上图可见,SCM的目前的主要应用都是聚焦于填充SRAM和Storage之间的容量和性能GAP。目前在研的SCM介质种类繁多,但是比较主流的有PCM、ReRAM、MRAM和NRAM四大类产品。

PRAM(Phase-Change RAM)利用特殊合金材料在晶态和非晶态下的导电性差异来表示0或者1数据。其优点是结构简单,容易实现大容量、同时具备低成本等特点。

主要用于Cache加速和Cache内存应用,考虑到PRAM的成熟度、对热度敏感和写穿透等因素,在应用中一般搭配DRAM或SRAM一起使用,在填补RAM和Storage之间的性能、容量差距的同时,形成具有分级能力的高速Cache应用资源池;其典型代表为Intel的3D Xpoint。

ReRAM(Resistive RAM)通过在上下电极间施加不同的电压,控制Cell内部导电丝的形成和熔断的状态对外呈现不同的阻抗(忆阻器)值来表示数据;目前典型代表厂商为HPE和Crossbar。

HPE在2015年Discover Conference会议中就提出了忆阻器内存技术,并计划在新型计算机架构The Machine中使用,未来成为取代SRAM、DRAM形成通用内存(Universal Memory);具体可参看文章“HPE忆阻器内存和IBM原子磁盘原理解析”。

MRAM(Magnetic RAM)磁性随机存储器通过电流磁场改变电子自旋方向来表示不同数据状态。比较适用于CPU的高速缓存(如L2 Cache),代表厂商为Toshiba和Everspin。

NRAM(Nantero’s CNT RAM)碳纳米管随机存储器采用碳纳米管作为开关,控制电路通断表示不同的数据状态。由于碳纳米管尺寸非常小并且具备极强的韧性,因此NRAM密度可以很高、寿命也比较长,理论功耗也比较低。

下面以Intel Optane系列简单谈谈SCM现阶段的应用情况。

首先介绍下SCM SSD磁盘,如Intel推出的OptaneP4800X系列Clodstream SSD,虽采用NVMe协议但沿用NVMe Block接口,相比现有Flash SSD,在架构上SCM SSD也有很好的继承性,再加上SCM SSD有效避免了垃圾回收带来的性能衰减问题,所以主要应用在数据缓存和高性能主存场景。

  • 元数据缓存:作为AFA产品的元数据缓存,配合DRAM,实际上实现了Memory+SCM SSD的两级缓存,突破内存容量瓶颈,增加数据缓存容量;

  • 数据缓存:作为用户数据的加速层,提升典型应用场景下的性能体验;

  • 数据主存:作为用户数据的存储,提供比Flash更高的性能存储系统。

接着谈谈SCM DIMM形态产品,如Apache Pass DIMM,它是基于内存访问语义(Load/Store)的SCM产品,这种形态可以提供与内存接近的访问时延很低,并提供相对内存更大的容量和数据持久化能力,通常用在如下场景。

  • 持久化内存:作为数据持久层,对数据一致性要求很高的持久化系统,同时兼顾数据可靠性和数据读写性能。

  • 内存数据库:作为数据In Place空间,提供数据运行和持久化存储空间。

  • 系统日志卷:作为日志卷,例如,在HPC系统中通常采用Checkpointing实现对计算中间状态进行持久化保存,这是一个耗时、耗系统吞吐量的过程。

如果采用SCM DIMM实现日志卷实现数据持久化,则可以大大提升系统可靠性、性能,同时减少处理时间。

简单总结下,从SATA SSD,SAS SSD到PCIe SSD,NVMe SSD,主要经历了标准泛滥和统一两次技术变革,PCIe SSD是闪存创新的春秋战国时代,在语言和通信上各自有一套标准,NVMe SSD则是统一文字标准的秦国盛世。然而要发挥SCM的优势,对现有计算机系统软硬件架构提出了更大的挑战,每次产品的变革都凝聚了技术的变革。这些变革包括持久化内存的数据结构,事务技术,硬件架构,编程工具和软件堆栈等各方面。

在互联网络方面,现有的跨CPU间内存访问受限于网络时延,无法充分发挥SCM介质持久化的特点,Gen-Z标准的出现使得SCM可以独立以Gen-Z接口接入Gen-Z总线,各CPU以纳秒级的时延访问共享SCM介质从而更好的发挥SCM的性能,关于SCM和传统SSD之间的GAP和解决措施,后续再找时间跟小伙伴们分享交流。

NVMe与SCM结合将赋予存储介质的能力的更多相关文章

  1. 在JTable单元格上 加入组件,并赋予可编辑能力 [转]

    表格(单元格放置组件) 对于JTable单元格的渲染主要是通过两个接口来实现的,一个是TableCellRenderer另一个是TableCellEditor,JTable默认是用的是DefaultC ...

  2. [转帖]深度: NVMe SSD存储性能有哪些影响因素?

    深度: NVMe SSD存储性能有哪些影响因素? http://www.itpub.net/2019/07/17/2434/ 之前有一个误解 不明白NVME 到底如何在队列深度大的情况下来提高性能, ...

  3. 存储系统设计——NVMe SSD性能影响因素一探究竟

    目录1 存储介质的变革 2 NVME SSD成为主流 2.1 NAND FLASH介质发展 2.2 软件层面看SSD——多队列技术 2.3 深入理解SSD硬件 3 影响NVME SSD的性能因素 3. ...

  4. 【Python】【容器 | 迭代对象 | 迭代器 | 生成器 | 生成器表达式 | 协程 | 期物 | 任务】

    Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyn ...

  5. 2-10 就业课(2.0)-oozie:13、14、clouderaManager的服务搭建

    3.clouderaManager安装资源下载 第一步:下载安装资源并上传到服务器 我们这里安装CM5.14.0这个版本,需要下载以下这些资源,一共是四个文件即可 下载cm5的压缩包 下载地址:htt ...

  6. POLARDB与其他关系型数据库对比

    https://baijiahao.baidu.com/s?id=1610828839695075926&wfr=spider&for=pc 前言 在数据库的选择上,MySQL成为中国 ...

  7. AlloyTouch实战--60行代码搞定QQ看点资料卡

    原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/kandian 先验货 访问DEMO你也可以点击这里 源代码可以点击这里 如你体验所见,流程的滚动的 ...

  8. GJM : AlloyTouch实战--60行代码搞定QQ看点资料卡

    原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/kandian 先验货 访问DEMO你也可以点击这里 源代码可以点击这里 如你体验所见,流程的滚动的 ...

  9. 通过中看不中用的代码分析Ioc容器,依赖注入....

    /** * 通过生产拥有超能力的超人实例 来理解IOC容器 */ //超能力模组接口 interface SuperModuleInterface{ public function activate( ...

随机推荐

  1. windows的cmd和git bash的常用命令

    windows下使用git bash,使用的事linux下的命令,整理常用命令如下: windows下的命令 linux下的命令 命令的含义 cd e:\xx cd /e/xx 切换到xx目录 cd ...

  2. Fedora19 有关输入法的无法切换问题 和 终端的快捷设置问题

    Fedora19 有关输入法的无法切换问题 和 终端的快捷设置问题 1.首先,要单击右上角的设置输入法的"区域与语言设置",要设置为“为每个窗口设置不同的输入源”. 还有,刚使用的 ...

  3. App Store上的开源应用汇总

    以下是互联网上主要的开源iOS应用的列表,在学习的时候,多看看完成的功能代码可以给我们带来很多经验,但是除了Apple官方提供的Sample Code之外,我们很难找到优质的开源项目代码,所以我搜集了 ...

  4. MIPS—冒泡排序

    SORT 使用冒泡排序对整数数组进行排序,这种排序虽然不是最快的,但却是最简单的. C语言代码 #include<stdio.h> #include<iostream> usi ...

  5. ucosii(2.89) 在Lpc1765移植中定时器的使用。

    1,lpc1765的systicker register是24bit, cpu 频率64Mhz时候,注意不要设置systicker 的值超过24bit. 2, 使用timer 的callback函数, ...

  6. C++函数调用过程深入分析<转>

    转自http://blog.csdn.net/dongtingzhizi/article/details/6680050 C++函数调用过程深入分析 作者:靠谱哥 微博:洞庭之子-Bing 0. 引言 ...

  7. 树状数组 简单题 cf 961E

    题目链接 : https://codeforces.com/problemset/problem/961/E One day Polycarp decided to rewatch his absol ...

  8. 【Python】使用cmd模块构造一个带有后台线程的交互命令行界面

    最近写一些测试工具,实在懒得搞GUI,然后意识到python有一个自带模块叫cmd,用了用发现简直是救星. 1. 基本用法 cmd模块很容易学到,基本的用法比较简单,继承模块下的Cmd类,添加需要的功 ...

  9. 使用gcc -g编译,gdb调试时仍然存在“no debug symbols found”的错误

    今天为调试一段代码,使用gcc将程序用-g选项重新编译.但是使用gdb进行debug时,仍然出现“no debug symbols found”的错误.仔细检查了一下Makefile,原来后面定义的连 ...

  10. 51nod 1242 斐波那契数列的第N项——数学、矩阵快速幂

    普通算法肯定T了,所以怎么算呢?和矩阵有啥关系呢? 打数学符号太费时,就手写了: 所以求Fib(n)就是求矩阵  |  1  1  |n-1  第一行第一列的元素. |  1  0  | 其实学过线代 ...