NVDIMM原理与应用之一:基本原理

简介:

NVDIMM概述


1、简介

顾名思义,NVDIMM是Non-Volatile DIMM(非易失性内存)的简称。作为系统掉电后仍然保证数据不丢失的重要硬件,NVDIMM和NVRAM的功能类似,都是在系统掉电时仍然能够保证一部分内存里的数据不会丢失,并且当系统上电后数据能够自动恢复到内存当中。和NVRAM不同的是,NVRAM要么是把数据写回到PCIE接口的独立卡上,要么是依赖于独立的后备电池给DRAM在系统掉电时供电,而NVDIMM是把数据写回到自带的FLASH芯片上去。另外一个不同时,NVDIMM本身不需要额外的硬件设计,也不占用PCIE通道资源,它只用主板上DIMM上没有占用的DIMM插槽。


2、原理

从硬件的角度看,NVDIMM可以看作由四部分组成:用作内存的DRAM,保存数据的FLASH,控制两者并和CPU交互的中心控制模块(FPGA),以及在系统掉电后为前面三者提供暂时后备电源的超级电容。当系统掉电时,NVDIMM上的中心控制模块能够检测到,并且触发DRAM进入异步刷新模式,

当CPU cache、write combining buffer、store buffer中的数据都写回到DRAM后,中心控制模块再把DRAM里的数据写到NVDIMM上的FLASH里面去,相应数据的校验值也会写道FLASH。类似地,在系统上电后,NVDIMM上的中心控制模块先于CPU接管其上的DRAM,它初始化DRA,进行一些读写测试,确保无误后,通过校验值检查FLASH上是否有之前保存的完整数据,如果之前保存到FLASH里的数据完整,就把它写回到DRA。完成这些步骤后,中心控制模块再把DRAM的控制权交还给CPU,此后CPU可以像对待普通的NVDIMM一样往NVDIMM上的DRAM里读写数据。


3、核心IP

通过以上对硬件的分析,可以看到NVDIMM最核心的IP就是中心控制模块的设计,它既是DRAM控制器,又含有FLASH控制器,还能监控CPU以及主板上的相关信号,此外还能生成校验值。这也就难怪为了保护知识产权,为什么现在市面上能买到的NVDIMM上的中心控制模块,都用FPGA的形式实现。

此外,为了确保每次掉电NVDIMM都能保证把DRAM的内容保存到FLASH里面去,作为临时后备电源的超级电容的续航能力和稳定性尤其重要。否则就可能出现DRAM的内容没有全部备份到FLASH里去,超级电容的电量就已耗尽的情况,这就根本起不到掉电保护数据的作用。因此,超级电容的稳定性、续航能力决定了整个NVDIMM的稳定性和强壮程度。

当然,为了保证数据一致性,特别是能把掉电之前NVDIMM的DRAM所对应的 在cache、write combining buffer、store buffer里的任何数据都写回到FLASH,需要系统软硬件的综合设计,这就要求处理器厂商、主板厂商、NVDIMM厂家、BIOS厂商一起协作,设计好实现的方法。


4、使用方法

从系统软件的角度来看,NVDIMM既可以当作一个透明的DRAM,也可视作一个字符设备。但无论如何,使用的时候它必定需要映射到用户可以访问的地址空间。同设备内存、独立显存的地址映射类似,NVDIMM上的DRAM可以支持uncache、write through、write combine这三种映射模式。当然如果硬件和系统软件能够自动写回cache以及write combining buffer和store buffer的内容到DRAM, cached的映射模式也是可以的。


5、应用场景

因为NVDIMM能够保证掉电基本不丢数据,因此它特别适合对数据完整性要求苛刻的场景,比如某些需要实时交易的金融行业、重要的信息平台等。此外,因为NVDIMM还能够上电后很快从NVDIMM上的flash恢复数据,它也可以用来加速系统的启动,显著地减少系统宕机时间,这对那些servie on time以及基本不允许宕机的应用来说特别有用。

















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1736636 ,如需转载请自行联系原作者



相关文章
|
存储 缓存 安全
virtiofs per-inode DAX 介绍
## 背景信息 1. 什么是 virtiofs? virtiofs 是一种用于在 host/guest 之间共享文件的文件系统,由 Redhat 开源,它使得不同 guest 之间能够以快速、一致、安全的方式共享同一个 host 目录树结构,目前广泛应用于 Kata Container 作为容器的 rootfs。 2. 什么是 DAX? DAX (Direct Access) 最初是针对于
3186 0
virtiofs per-inode DAX 介绍
|
4月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
1126 1
|
NoSQL IDE 开发工具
**《惊爆!揭开函数调用关系图的神秘面纱,让你的代码世界天翻地覆!》**
【8月更文挑战第16天】函数调用关系图是软件开发中的重要工具,帮助直观理解程序结构与逻辑流程,有效进行代码优化、调试及复杂系统理解。可通过静态分析工具(如SourceMonitor)在不运行代码情况下构建调用图,或利用动态跟踪(如GDB、Python的`sys.settrace`)在运行时记录调用顺序。集成开发环境(IDE)如Visual Studio亦提供相关功能。不同方法各有优势,可根据需求灵活选择。
481 4
|
11月前
|
存储 人工智能 监控
【AI系统】推理系统架构
本文深入探讨了AI推理系统架构,特别是以NVIDIA Triton Inference Server为核心,涵盖推理、部署、服务化三大环节。Triton通过高性能、可扩展、多框架支持等特点,提供了一站式的模型服务解决方案。文章还介绍了模型预编排、推理引擎、返回与监控等功能,以及自定义Backend开发和模型生命周期管理的最佳实践,如金丝雀发布和回滚策略,旨在帮助构建高效、可靠的AI应用。
914 15
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
124268 0
|
安全 网络协议 网络虚拟化
|
Ubuntu 安全 网络协议
|
前端开发 UED SEO
HTML基础-链接与图片插入:网页的连接与视觉元素
【6月更文挑战第2天】本文介绍了HTML中`<a>`和`<img>`标签的使用,包括链接的基本结构、目标类型以及图片的插入、尺寸调整和对齐方式。常见问题涉及链接和图片路径、缺失`alt`属性及尺寸不匹配,解决方案包括正确引用资源、使用绝对URL和重视`alt`属性。通过示例代码,展示了创建链接和图片的方法,强调了提升网页用户体验的重要性。
484 3
|
存储 分布式计算 Hadoop
|
存储 监控 API
【C/C++ 文件操作】深入浸润:C++多线程文件操作的艺术与策略
【C/C++ 文件操作】深入浸润:C++多线程文件操作的艺术与策略
606 0