有没有一种可能,做出来 512g 内存的计算机,这样就不需要外存了,那 os 这门课是不是内容可以少点?

有没有一种可能,做出来 512g 内存的计算机,这样就不需要外存了,那 os 这门课是不是内容可以少点?

光度,系统软件/存储

题主的设想还可以更大胆点,512GB 内存?瞧谁不起呢,现在的平台能支持的内存已经来到 PB 级了哦~[1]

(tips:1PB = 1024TB)


看了下这个问题比较新都没啥人答,大晚上的睡不着就抛砖引个玉。

@Naoki 所言,内存和磁盘的区别是什么?速度是一方面,还一方面是volatility,易失性。

简单来说,就是你拔了电内存里的东西就没了,但磁盘里的东西还有的。所以任你内存再大,没有 non-volatile 的介质也是白搭的(总不能一拔电你的系统、数据文件都全删了吧)。

那么我来预判下题主的下一个问题(假如还在知乎上问的话):

有没有一种可能,我们造出来一种介质,具有内存的访问特性和速度,但又是 non-volatile 的,做出来 512g 这种介质的计算机 这样就不需要外存了,那 os 这门课是不是内容可以少点?

好吧,这其实是三个问题,简短地回答就是:

(1)有没有这种介质:有,被称为 Persistent Memory 或者 Non-volatile Memory(不是什么名不见经传的小作坊哦,是 intel 生产的),而且已经 commercial avaliable 了,这一点 @Naoki 也提到了。

(2)是不是就不需要外存(磁盘)了:可以,这也是现在的研究热点

(3)os 课的内容是不是可以少点:很可惜,会更多。

知乎上关于 PM(NVM、非易失存储)的讨论现在还比较少,而我现在的研究方向跟这个有关,下面就想到哪说到哪了,看见的权当图个乐,有错误也请指正~


先大体描述下 PM 的特点,即 “What is PM?”

如上所述,Persistent Memory 既 non-volatile,又“具有内存的访问特性和速度”。non-volatile 很好理解,就掉电不丢呗,“具有内存的速度”也好理解,反正就贼拉的快就完了,什么 ssd 都靠边站,可什么叫“具有内存的访问特性”呢?

这就可以引申出一个问题,如果一种 ssd 特别特别快,那它是不是也可以称之为 PM 设备呢,毕竟 ssd 也是 non-volatile 的。

不行,因为 ssd 是非 byte-addressable 的。

翻译成人话就是,ssd 只能以 block 为单位访问,不能“我只要访问某几个字节”。

而上面提到的真正的 PM,是字节可寻址,也即 byte-addressable 的。

不像其他高速设备那样走 PCIE 总线,这种 byte-addressability 使得它也被插在内存总线上,像内存一样可以直接通过 CPU 的 load/store 指令访问。

这样一来,你就可以扔掉那块怎么看怎么不顺眼的 SSD/HDD,在你心爱的主板上插上那么 1TB 的 PM,开机运行了~(开个玩笑

其实现在 PM 还是比较贵的,而且只能在特定的平台上跑(因为内存控制器、外围 io 等等也要相应地支持)。我们实验室前段时间购入了一套 intel 的 PM 主板 +1TB 的 PM,就是 intel 在售的 intel Optane DC PM,十几万就进去了,所以一般人(家境贫寒)还是不太能接触不到这类产品的。

好,既然只用 PM 扔掉磁盘是可行的,那这个 PM 到底性能怎么样呢?

我这里引一下 HeMem[2]SOSP' 21 和 Spitfire[3]SIGMOD'21 里的数据

读写 latency/bandwidth 与存储密度对比
多线程下顺序 / 随机访问的读写带宽
DRAM/NVM(也就是 PM)/SSD 对比

可以从 latency、bandwith、price 三个角度来看

从 latency 的角度,NVM 和 DRAM 其实已经很相近了,起码已经控制在大一个数量级以内了,而 SSD 虽然不像 HDD 那样毫秒级那么夸张,但仍然也要μs 级,这就奔着两三个数量级去了。

这是个什么概念呢?假如 LLC 发生 miss,访问一次 DRAM 的 latency 约 70-80ns,对 3Ghz 左右主频的 CPU,这就意味着 200-300 个 CPU cycle,对 NVM 就是 400-1200 个 CPU cycle,而 SSD 的 page fault(注意这只是传输第一个字节的 latency)就是 30000+ 个 CPU cycle。

latency 对随机访存的性能至关重要,从这一点上 NVM 已经算是合格了。

大容量访问的带宽,虽然在随机写的 bandwidth 上 NVM 比较拉跨,但在顺序读、顺序写、随机读方面,SSD 相比 NVM 还是不够看的。

当然,越快的设备单位 GB 就越贵,从这一点上大容量存储 SSD 还是占优势的。

这就引出来了 NVM 的一个 potential:更高的集成密度。

DRAM 集成密度上不去的一个原因是高密度复刷带来的散热压力,印象中最近 DDR5 内存才有单条 128G 的新闻出来,但可能还要专门给内存上弄个风扇散热(笑)。而 NVM 是 non-volatile、不需要复刷的,所以没有散热压力,单条 128GB 起步跟玩儿一样。对于 memory footprint 比较大(数百 GB)的 application,很明显 NVM 是具有极大潜力的。

从研究的角度,NVM 也给操作系统、文件存储栈带来很大的可能,这两年系统、存储领域 NVM 真的非常热,比如纯基于 NVM 的文件系统(NOVA[4]FAST'16)、NVM 与磁盘组成的存储系统(Ziggurat[5]FAST'19)、用 NVM 加速 kernel 的 anonymous page cache(HeMem[2]SOSP'21)、也有用 NVM 来做 kernel 的 file-backed page cache 的(FR[6]USENIX ATC'21),甚至 18 年的 Linux kernel 4.18 就已经支持用 NVM 给文件系统作 writeback cache 了(19 年 intel 才真的推出第一款 commercial 的 NVM 产品)

所以 os 课的内容不会变少,反而也要开始拥抱新的一级存储层次了~