持久内存编程
年
月我写了关于非易失性内存(
)的未来接口。其中描述了
(
)正在开发的
编程模型。在过去的四年里,
规范已经发布,正如预测的那样,编程模型已成为大量后续工作的重点。该编程模型,在
规范中描述为
!!"#$
,可以将
当做文件被操作系统映射到内存。本文,介绍持久
内存编程模型如何在操作系统中实现,已经做了哪些工作,以及我们还面临着哪些挑战。
持久内存背景
和
%%%&
是同一的术语,具有字节寻址、加载
'
存储内存访问特性,
但具备持久性。本文,关注将
挂在系统内存总线上,例如
()(
,创建一类称为
(%
的非易失
(%
。
为进一步阐述所说的持久内存是什么,仅讨论
(%
,允许软件像访问内存一样访
问。提供了内存语义的所有优点,例如
*+**,$
一致性、其他设备直接内存访问
(
、
缓冲线粒度访问,即可字节寻址。为提供这些语义,设备必须足够块以便指令访问
*+
时
拖延
*+
合情合理。
(-%
当做持久内存时比较慢,因为需要以块为单位进行访问,
并需要足够长的时间进行上下文切换。硬件访问的时间通常以毫秒为单位,
("%
(
以微妙为单位,
以纳秒为单位。依赖于硬件媒体类型,
(
可能速度还比不上
()
,但是速度已经堪比他的速度了。
现在市场上的一些
(
产品,运行时使用
()
作为媒介,断电时自动将内容备
份到
("%
,再次上电时将
("%
内容返回
()
。这些产品提供
()
的性能,
但是需要额外的部件和电池来存储数据,相比
()
,为每个
(
提供小容量、每
高
消耗的特性。新出现的非易失性媒介,例如
.
年,
和美光联合研发的
(/
技
术,通过比
()
更高的容量。每个
*+
达到上
的带宽,使持久内存引起多方前沿关注:
持久性、容量、消耗。
持久内存编程模型
如何是应用访问持久内存?和易失性内存不同,应用需要特定方法和指定的持久内容
连接;持久内存不像易失性内存一样是匿名的,他需要像文件一样命名一个区域,这样应
用才能找到他。应用需要具有访问持久内存的控制权限。推荐
编程模型是因为
操作系统可以使用标准的文件语义提供持久内存的命名、权限和内存映射。
当前,多种操作系统包括
#0
和
1%
都支持了这种模型。
评论