迅维网

查看: 1659|回复: 19
打印 上一主题 下一主题

如果硬盘能达到内存的速度,那操作系统的设计是否会有变化?

[复制链接]
1#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
如果硬盘和ram一样快,那么ram就会和cache一样快,cache和reg一样快,reg……鬼知道,在任何条件下,制造速度足够快、容量足够大、价格足够便宜的存储时不可能的,所以分级会一直存在。也就是说那个时候的内存会更快,你也就看不上硬盘这可怜的速度了。

回复 支持 反对

使用道具 举报

2#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
如果磁盘速度和内存一样的话,对linux系统来说,文件系统的缓存就不再需要了,连续读文件时的预读也不需要了,读写文件的操作会简洁很多。文件系统的设计也会有变化,目前很多文件系统都是基于B树来设计的,B树的特点是假设读或写操作很费时,其他操作相对来说要快很多,因此尽量减少读写次数。这种考虑也没有必要了,可能会使用红黑树来实现文件系统。
理论上说,磁盘速度快了,交换分区可以被更加肆无忌惮的使用,不过现在内存已经白菜价了,大家都直接上大内存,交换分区的意义已经不大了。
现实中,硬盘除了读写速度比内存慢之外,还有一个特点,就是硬盘的随机读写比顺序读写慢很多,而内存顺序读写和随机读写速度一样。如果在这点上,硬盘也进化成和内存一样了的话,即硬盘的随机读写和顺序读写一样,都和内存一样快,块设备层的电梯算法也不需要了。不需要延迟写操作,合并读写请求,只需按进程的io优先级分配磁盘带快就好了。
大量存在磁盘中的数据不需要被预先加载到内存中,比如文件系统的元数据,需要的时候随时读就好了。
使用raid不再有加速的效果了,估计反而会降低速度,因为控制器的带宽很可能赶不上单个磁盘的速度。
==========================
不过我觉得,更有可能的是,网速首先达到了内存的速度,于是所有的东西都放在网上,由网络传输到内存,根本没硬盘啥事了。

回复 支持 反对

使用道具 举报

3#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
这个不是一个新课题了,业界有好多研究。
virtual memory仍然的需要的,因为它提供的进程间隔离。swap只是利用了它提供另外的目的。

文件系统的话,学界有好多关于这方面的研究,但主要考虑的是endurance的问题等。如果不考虑这个问题则无所谓,ramfs之类的都可以吧。

编程模型的话,由于惯性,估计变化不大,可以预见的是flush  cache的api应该经常被用到。

回复 支持 反对

使用道具 举报

4#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
如果硬盘达到内存的速度(这个速度不仅仅指吞吐量,也包括延迟),那么也许就不需要文件的概念了。所有的数据都是"由硬盘构成的内存"中的对象。

回复 支持 反对

使用道具 举报

5#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
难道都没听说过安迪比尔定律?

回复 支持 反对

使用道具 举报

6#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
文件系统自己就成为一个key-value的缓存系统啦。 还是内核级的。

回复 支持 反对

使用道具 举报

7#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
IO性能和内存一样的话

  • 所有网站都快如飞,redismemcacheD将没有用武之地,惨被淘汰
  • nodeJs等等异步编程语言应用场景越来越少或者被淘汰(性能提升不大维护性却降低了很多,就好比在现代用汇编编程)
  • 网站完全动态化,不再像报纸一样大多是图片文字。网站将会大量使用音视频(就像哈利波特电影里面的报纸或是instagram的主页)而不用担心io太多拖慢服务器。
  • 更多的音视频图片存储使得占用空间百千倍增加,使得关系型数据库依然占据重要地位(不浪费空间)。
  • 运算云端化,客户端(手表手机平板电脑)只是做结果展示和收集用户指令,不进行运算。

进一步

  • 由于主要运算在云端,客户端的整体功耗会非常低,一副google glass就可以代替智能手机平板所有功能
  • 任何一部设备都可以玩大型的画面效果非常好的游戏(因为计算发生在云端)
  • google基于文字网页的搜索将被淘汰,未来任何东西都可以被搜索,图片、视频、音频、温度(红外传感器)、甚至气味也有可能:

    • 当你走进超市时,你的googleglass自动搜索你见到的一切,你可以知道每件物品的用途、产地、寿命,
    • 会自动帮你挑选最新鲜度最甜的水果(基于水果外观颜色、气味、表面温度、上市时间、超市内温度、顾客反馈进行搜索、计算)。
    • 当你的车坏在路上时,自动根据各部件温度、外观、车内传感器数据等,从数据库查出故障原因,并告诉你维修步骤。


回复 支持 反对

使用道具 举报

8#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
首先,我想说,这是一个很好的问题!这是计算机体系结构发展将会面临的问题,也是推动计算机体系结构变革的驱动因素之一!

回答很长,不过可以用两句话总结答主我的回答:
第一句话:在可预计的一段时间内,题主的假设是无法成立的,也即硬盘是无法达到内存的速度!
第二句话:如果题主的假设成立了,变成事实了,那么,操作系统会发生天翻地覆的变化!国产操作系统可以弯道超车了啊!Zhuan家们请抓住机会申请经费啊!

针对这个问题,从以下几个方面展开:
(一)硬盘是什么?内存是什么?速度怎么定义?操作系统又是什么?
所谓的“硬盘”,在题主的问题中,答主我理解就是我们通常意义上的“机械硬盘”,也即Hard Disk(HDD)。“机械硬盘”有两个重要的特性:其一是包含“机械”部分,也即寻道用到磁头和机械转动系统;其二是“非易失性”,也就是可以长时间保存数据。

所谓的“内存”,也就是我们常说的DRAM,现在我们普遍使用的是基于DDR3接口形态的 SDRAM。其最大的特点就是数据的“易失性”,因此,为了保存数据,DRAM需要不停地刷新(Refresh)。

在计算机体系结构研究中,其实是没有所谓的“速度”概念,更多的是“带宽”概念。因为系统中设备的数据访问,不仅仅和速度有关,还和数据位宽有关,例如我们常说的32位总线、64位总线,有时候系统速度虽然很快,但总线位宽不足,会导致带宽无法满足需求,因此,在系统中单纯地比较速度是没有意义的。

至于什么是操作系统,教科书上也有答案,而答主我的理解就是:操作系统是管理计算机资源并能为我们提供应用接口的玩意儿!操作系统其实包含了两部分工作:管理计算机的资源,提供应用的接口,而所提供的应用接口,其实可以看成是对计算机资源的抽象表示。

所以,基于以上定义,可以将题主的问题修正为:如果机械硬盘能提供和内存相同的带宽,那操作系统的设计是否会有变化

(二)机械硬盘和内存的现状
机械硬盘的工作原理是磁头在读取数据时,进行旋转并定位,然后将数据读取出来,所以机械硬盘的工作中,有很大一部分的时间是被花费在旋转定位过程,而数据读取过程是很快的。同时,由于数据并不是连续排列在同一磁道上,所以磁头在读取数据时往往需要在磁道之间反复移动,这会影响机械硬盘的数据访问效率。总的说来,影响机械硬盘进行数据访问的几个关键因素是:平均寻道时间、平均等待时间、内部数据传输效率。目前一般的机械硬盘的“平均寻道时间”一般是ms级,因此,机械硬盘的数据带宽是在MB/s这个级别。因为:旋转定位过程是机械的!当然,我们可以利用RAID,将多块硬盘并行工作,可以大幅度提升数据读取效率,这儿我们暂且不论。

而内存的数据读取速度,其带宽是GB/s级的。因此,传统我们认为,内存的带宽比硬盘的带宽高2~3个数量级。

也正如一些朋友所述,半导体有摩尔定律,因此,基于半导体技术的内存,其工作频率可能会越来越快,或者理解为:内存所提供的带宽越来越高!但普通的机械硬盘,就算那个“磁头”旋转更快,但,毕竟是机械的,其还是需要不停地寻道、定位、读取数据。

所以可以说,在可预见的未来,是看不到“机械硬盘”的数据传输带宽达到内存带宽了。

(三)题主的假设成立可能性
那么,题主的假设在短时间内是不成立的!所以,咱该干啥就干啥去吧。

(四)“硬盘”的扩展
但如果进一步拓展视野,把“硬盘”扩展,我们突然发现,原来我们真的需要考虑题主的这个假设问题了!因为在我们前述的“机械硬盘”之外,出现了基于非易失性存储介质的“固态硬盘”。这些非易失性存储介质的数据访问效率已经远远超过机械硬盘,快赶上内存(也就是DRAM)了。例如下表所示:

DRAM的读写是10ns级别,而目前使用最多的基于NAND Flash的固态硬盘,其读写是us级别,更新一点的,PCM,其读写则也是ns级了!所以,我们说,未来,还真有可能出现“硬盘的访问带宽和内存访问带宽”相差不多的情况。
当然,正如上面所述,要让这些非易失性存储设备的访问能力赶得上DRAM,还是需要一段时间的,学术界、工业界现在的普遍认识,还是认为DRAM会一直存在!而HDD则会出现多样的形态,例如下图所示:

在1980年代,计算机戏中中有泾渭分明的CPU、RAM、DISK,而到了2008年代,在RAM和DISK之间出现了基于FLASH的SSD,也就是固态硬盘,而到2013年,则会出现包括多种类型非易失性存储设备构建的Storage Class Memory,而到了2018年代,此时的HDD可能就会就此消失!

当然,我们这儿并不会讨论HDD是否真的就是消失,毕竟人家Seagate、Western Digital还是要活下去的!
(五)操作系统设计该做怎样的变化
好了,啰嗦了这么多,我们来看看,如果随着半导体技术的发展,SCM会在2018年后逐渐赶上DRAM的速度,操作系统的设计会出现怎样的变化呢?

噢,这是一个非常大的变化!计算机体系结构将会出现重大的变化!
——我们干嘛还要“内存”这个玩意啊?之前看在数据传输带宽高的面子上,可以忍受要不停刷新数据的烦恼,现在“硬盘”都能提供相同带宽,干脆抛弃得了!
——啥?内存都没了,操作系统干嘛还要什么引导加载啊!直接Run!

注意,我们下面的讨论仅限于单机操作系统,并以Linux为例,我们不去扩展讨论面向网络或面向集群的操作系统。

所以我们就讲针对操作系统的各个组成部分回答题主的问题:

处理器资源管理,也就是进程管理部分:恩,这个部分看起来和内存之类的关系不大,只是我们对于进程的内存描述符可以更加宽泛点,直接指向进程所述应用的存储空间了!反正空间大,带宽还高!

内存资源:包括内存的分配、释放等工作。注意,这个时候,如果我们硬盘的速度和内存速度一样了,那么就要修改操作系统的内存管理了!或者说,我们是针对一个超过几百G的内存在进行管理,并且,由于内存需要不断刷新带来功耗增加,此时就直接用硬盘作为内存替代品了!因此,内存管理需要全部修改!

文件系统:我们的数据都是以文件形式存储在硬盘中,这部分和访问带宽关系不大,所以可以不做太大的变化!

I/O管理:从下面这张集大成的I/O协议栈图中可以看的很清楚

I/O访问包括了对“硬盘”的访问流程,为此,我们这儿就专门研究图中,针对“硬盘”访问的路线,需要取消Page Cache了,对于BIO的访问排队和调度也取消吧!
上面给出的是针对现有操作系统的修改,其实还有针对现有操作系统的加强,例如由于数据在内存中的非易失性,带来数据安全问题;也会出现性能隔离问题等等。这儿等有空可以继续展开。
最后,我想说的是,题主的问题非常好!

回复 支持 反对

使用道具 举报

9#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
有一种技术叫RAM disk, 将内存模拟当做硬盘分区来使用。

装在该分区的软件, 基本上都能做到秒开。

回复 支持 反对

使用道具 举报

10#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
难道现在不就是这样的吗?Macbook,所有需要的程序都开着,全都在内存里,也不需要关机,盖上盖子就走。iPhone,常用的几个应用都在内存里,都是秒开的。当然现在只有1G内存,如果以后再大点就足够用了。

编辑文档在Google Docs里,虽然网络传输还需要时间,但是编辑的时候完全感觉不到,因为存储都是后台进行的。

戒掉喜欢关机的强迫症,还有晚上关手机以防止辐射的强迫症,什么「断电不掉数据」、「开机即能用」这些需求完全没有必要。

回复 支持 反对

使用道具 举报

11#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
断电不掉数据这个特性现在已经很普及了。服务器有UPS,笔记本电脑和移动设备自带电池,现在macOS、Windows都有电量不足时自动备份内存数据和重置硬件的功能,就算不用nvram也已经解决了fleuria说的问题。对应用程序来说,完全可以假设断电不丢数据。现实中,硬盘故障才是单机丢数据的首要原因。
从软件角度看,硬盘和内存真正重要的区别是随机访问能力。目前的硬盘随机访问很慢,所以在硬盘的数据结构需要和内存上不同,比如内存上的有序字典常常用二叉树,但硬盘就得用B+树,因为B+树每次随机访问一个节点能读取到更多子树,而不只是两棵子树。就算是SSD的随机访问能力有所提高,但依然有4KB的块边界。
假如非易失性存储器具备内存这样的高速随机访问能力,那么操作系统只要提供一种不带缓存的内存映射文件,用普通编程语言的数据结构了。当然,这些编程语言可能需要增加像C++一样的定制内存分配器的能力。
我只是开一下脑洞,瞎说说

回复 支持 反对

使用道具 举报

12#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
放心,那个时候程序员会开发出更复杂更慢的软件,让你的电脑变得更慢,en

回复 支持 反对

使用道具 举报

13#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
弟弟的年龄永远都不会超过哥哥。。。
永远都会有更快的东西在硬盘上级。。。除非人类遇到了瓶颈。。。但是概率为0。。。不加大约。。。

回复 支持 反对

使用道具 举报

14#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
首先,这种事情是真实发生过的,举个例子:

把时间倒退20年(至少)

硬盘:读写速度只有几MB/秒,比现在的U盘还慢(没见过,但听说过)。我见过实体的是几十MB的硬盘。

内存:66MHz左右,比现在的SSD要慢一些。(应该说,这已经很快的,可能还有更慢的,但我是没见过)

CPU:主频见过66MHz的,(有更快的或者更慢的,但这个我见过)

对比现在的情况,现在普通SATA硬盘,访问速度能到70MB/s,SSD能翻倍,CPU早就进入G时代了,内存主频也至少是1333Mhz的水平了。

现在的硬盘,比过去的内存快,现在的内存,比过去的CPU快。内存容量都上G了,比过去的硬盘大不知道多少。

----------------------分割线----------------------

所以,从硬件发展上,这种事情是必然的,但软件层面上的变化已经很明显了,早年的PC都是字符界面,现在图形化一个比一个漂亮,如果你愿意,你可以把DOS装到内存,做到0秒开机,但我相信没有人愿意这么干,DOS是什么可能很多人都不知道了,当然,我试过,确实很快,不用太古老的DOS,哪怕是Windows3.2,载入速度也很快。

所以,硬件的发展必然带动软件的发展,更高速的硬件必然要有更高速的软件搭配。

假如(注意,我说的是假如)未来20年,硬件的容量、速度仍然像过去那样发展,那么必然可以实打开WindowsXP只需要几秒钟,但我完全有理由相信,没人再会选择用XP这么古老的东西,那个时候可能是更复杂的系统。

OS必定会越来越复杂(对比DOS和Windows7,一个几M,一个几G,千倍的尺寸差异),外部存储永远都会存在,因为人们永远都需要更大且更廉价的外设(早年的游戏都在软盘上几百K,现在用DVD都放不下,十几个G的都有),除非OS永远停滞不前,这种情况暂时还没发现。

----------------------补充----------------------

对于Windows来说,开机速度似乎不是微软关注的重点。操作系统的开机时间主要消耗在驱动的载入时间、新硬件的检测时间上,这是OS开机消耗时间的主因,如果给Windows里加上加载时间戳,主要的时间都消耗在载入sys文件(主要都是驱动),为什么休眠再开机很快?因为休眠恢复的过程中sys文件是不需要重新载入的,这里的载入是包含执行过程的,而不是单纯的load to memory,磁盘开销是很大的。微软为了兼容各个硬件,必须在开机时检测硬件。

一个极端的例子就是嵌入式系统,嵌入式系统的驱动大多都是固定的,板子的配置也是固定的,嵌入式系统的启动时间可以在几秒内完成,当然,功能也很有限。

那么假设一台电脑的硬件配置是完全确定的,永远都不改变,那么开机时间能不能缩小的?那是肯定的,但是操作系统需要自己定制,这种模式跟待机休眠的模式是类似的。但待机休眠能换硬件不?不能。
所以OS的模型也会影响到开机时间,当然提升硬件性能更直接而已。

----------------------补充2----------------------

问题改变了,那么我就粘一个回答:如果内存掉电不丢数据,而且容量非常大(以至可以直接认为没有硬盘),那么,怎么针对这种架构设计操作系统?

虚拟内存肯定是不需要了,编程模型不一定有变化,因为CPU的寻址范围没有改变,驱动会有一些改变,如果说CPU寻址范围是全内存的,那么可以参考这个链接:哈佛结构和冯·诺依曼结构的区别

现有的计算机系统都是两种结构混合的,所以,变化没有题主预期的那么大。

回复 支持 反对

使用道具 举报

15#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
摩尔定律
估计大家知道且只知道这个定律。硬件成本,集成度,速度,每18个月加倍或减半。

但是it界还有几个定律。由前者推出。反摩尔定律,安迪比尔定律。当然最近又听说了个情怀定律。不再本文讨论范围,本人既不是锤黑也不是粉

反摩尔定律,硬件每18个月价格减半,那么硬件厂商就要卖出两倍的产品才可以同样的利润。这就逼着硬件厂商拼了命去提高技术,无论是从尺度下降二三维转换或者量子之类去进步。

安迪比尔定律。如果硬件成本每18月下降一半,我18月后买同样电脑,那不就省钱了嘛?这样买电脑的不就亏了?博弈会怎样? 这时伟大的比尔盖茨出来了,他让几十K的basic一步步变成了动辄几百M的.net。 安迪是intel老总,比尔是微软老总,一看就是好基友,多照顾对方。人家苹果软硬都自己搞,然后cook出柜你们知道为什么了吗?

为什么软件会越来越大?我们理论上可以用汇编做一切工作,当然只是理论上。低级语言效率高速度快,但是编起来难啊,维护可读性移植性差啊。我不能编个游戏都去学各种硬件芯片啊。所以软件发展越来越大越来越复杂。这是为了更友好界面,更易可读,当然程序员工资很高啊,我能省让他快点做任务,为什么要用那变态汇编?
计算机存储系统从cache缓存内存ssd硬盘光盘磁带等等。速度整体是越来越慢的。但注意成本是越来越低的。
好了回到题主的问题。
虚拟内存技术会不会变?依我拙件,不会。windows给每个程序还是进程分4g虚拟内存。你觉得你电脑有多少程序进程?虚拟内存出来原因不仅仅是ram不够大吧,还有一些地址分配什么乱七八糟吧。
当然,如果您是壕,硬件随意买,无数微软研究院级别的人替你搞系统定制软件。也是可以的。

最后,大家都是企业,大家都是为了挣钱,所以成本是不得不考虑的东西。
科研不是无目的的,大多是遇到了问题才解决。有了瓶颈我才去研究,而制约就是成本。如果砸钱,那也可以让外存储器速度达到cache速度,但pc是一个木桶,你把一边弄得天高有何用?所以科研补的是短板。

回复 支持 反对

使用道具 举报

16#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
现在操作系统已经在发生变化了,比如说Windows 8的秒开,Windows实现秒开其实非常不容易,历史包袱很重,驱动神马的又多。
图形界面操作系统的长时间待机,iOS可以轻松待机几个月啥事没有,以前这只有没有图形界面的服务器操作系统能做到。

这些变化是逐步的,循序渐进的,所以我们有时候感觉不到,但一个比较长的时间跨度来看的时候,我们就会发现科技真的在迅猛的发展。

回复 支持 反对

使用道具 举报

17#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
我惊讶于这么专业的一个问题竟然问在知乎,然后一帮人一本正经的回答了一通。我要是不懂行的读者还真觉得:嗯,我明白了。其实,真的吗?

很多回答提到了,SCM(Storage Class Memory)作为一个领域已经很多年了,最近随着英特尔3D XPoint产品的临近推出而不断升温。这一领域在硬件上说是PCM, STT-RAM, ReRAM等速度远快于闪存的永久存储。研究软件的人一直在研究软件系统如何适应这一新变化,包括操作系统。所有的想法只不过是建议的研究而已。如果真的产品出现了,操作系统会如何变化,谁也不知道。其他回答里说得那么言之确确的,最多就是读了一两篇论文介绍一下里面的想法就是了。

不过,SCM其实速度并不如DRAM,所以套上去略显勉强。其次,速度是一回事,SCM还是有可擦写次数的限制的。虽然这几项技术都希望这一限制比闪存高上几百倍几千倍,但的确还是有的。如果用现在使用DRAM的方法使用SCM,很多应用场景几小时就爆掉。

最后,SCM的到来已经在倒计时了。两三年内估计Intel的产品就出来了。其他厂家的产品四五年内很可能也会出来。十年后我们就看到软件是如何使用SCM的了。

回复 支持 反对

使用道具 举报

18#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
不是很切题,不过值得补充一下。还有篇论文《Nonvolatile Memory is a Broken Time Machine》[1],在一致性的层面讨论了 nvram 对存储软件的影响。

内存有了持久性,并不等同于整台计算机所有状态的持久性,除了 RAM,易失的状态还有 CPU 寄存器、高速缓存、外部设备等等,要实现整台计算机状态的持久性,仍需要电池的硬件支持,和操作系统的 “你可以安全地断电了” 的电源管理支持。至于电池朝不保夕的移动设备(energy harvesting device),就不得不放弃这个选项,只能正面这个问题:内存里有了细粒度的持久性(随便 for 循环里面一个 i 变量都持久了),然而其他易失数据丢失导致不一致了怎么办。

如果 program counter 寄存器丢失了,程序断电重启之后回到开始位置重新执行,可能出现两种不一致:

这就相当于,代码的每行机器码都可能重入了。持久性并不是多多益善,有时数据易失我们反而更好办,崩溃重启时,甚至会盼望着业务数据越易失越好(身边不恰当的例子,可以观察下运维 memcache 的同学和运维有持久性需求的 redis 的同学哪个更辛苦)。

对付这一问题的主要困难是怎样提供支持,来应对断电导致的隐式非局部控制流。作者认为 task/transaction 式的接口将是一个好的出发点,有了显式的任务边界,事情会好做一些。

同时对开发环境的建议是,在类型系统和编译器上提供支持,与 clojure 对 STM 的支持类似,将 nonvolatile memory 的操作限制在特定的代码块内,保证代码 correct by construction,而不是追求通用、透明。另一个选项是,使所有的代码幂等,从而绕过一致性问题。

对 nvram 的一致性问题也请教了下席子酱,他对 nvram 的看法大致是:并不看好持久化所有全局状态,从而透明地躺着提升现有的内存存储软件比如 redis 的可靠性的说法;反过来,将程序分离为有状态和无状态两部分仍更为妥当,但这时为了保证一致性,仍像传统的事务那样额外写一份日志到持久化存储中,是对 nvram 细粒度持久化能力的浪费。在 nvram 环境中使用无锁数据结构,可以省去多写一份日志的浪费,而这一优化是过去做不到的。



回复 支持 反对

使用道具 举报

19#
发表于 2017-12-15 09:38:40 | 只看该作者 来自: LAN 来自 LAN
鉴于好多同学问14年至今(17年12月)的工业成品,这里简单回答一下。
学术界的工作很多:
  • 与DRAM的混合存储
  • 加速部分in-memory的数据库
  • 加速特殊的数据结构,比如B-Tree
具体工作可以看In-Memory Big Data Management and Processing: A Survey 中NVM那一小节
工业界变化不大,关注Everspin的发展就好,目前官网的主打产品是

有了1Gb的芯片,标准和DDR4兼容。
去年上市,今年跌破发行价,发展很挫吧,我觉得原因还是没需求。存储大厂挤牙膏,没有到用MRAM的时候,因为目前的SSD还是2GB/s徘徊,虽然接口是NVMe,但本质还是传统SSD,等SSD发展到接近内存速度的量级,大概会有资本支持MRAM发展吧?
其它应用领域不热,比如卫星上面的防辐照的存储芯片——市场不大。
手机上也没出现低功耗的芯片,大概存储芯片浪费的那点电不值当吧。
操作系统也当然没有改变啦,几十年的传统岂是说变就变的。计算机行业就这样,先占了山头的有话语权,后来者就算技术上领先没钱每用户也是没啥卵用。典型的例子比如体系结构里的经典对垒,RISC vs CISC。
目前来看就当一脑洞吧,学术上感兴趣的可以翻翻文章。NVRAM这东西,等工业界有需求有市场了,才会迎来真正的发展。
----------------------------原答案----------------------------
翻了前几页答案,为什么大部分答主都在纠结开机速度啊!!
我就问一个问题:内存,甚至CPU里的存储器都是Non-volatile了,这意味着你系统里所有的进程状态、内核状态都不会再断电后丢失,那你开\关机干嘛?吧
----------------------------正经答题----------------------------
首先,这类存储器真实存在,即大容量,快速,非易失存储,代表有STT-MRAM Magnetoresistive random-access memory,memristor  忆阻器,Phase-change Memory 相变化内存
Everspin公司已经开始供货其二代MRAM了,上图


特性不多说,反正是Non-Volatile的前提下,都DDR3兼容了。用到上G大小MRAM的日子,我看不远了。
这种新型存储器对OS的会造成哪些影响?
学术界的讨论已经很普遍了,发表在2011,HotOS上的一篇文章几乎就是以这个为标题的
Operating system implications of fast, cheap, non-volatile memory
文章链接:http://static.usenix.org/event/hotos11/tech/final_files/Bailey.pdf
下面我会以这篇文章为主,附一些自己的看法
为方便讨论,把新型存储都称为NVRAM
1.存储体系架构
引入NVRAM的方案:


A.传统方案
B.最直观的替换磁盘:用NVRAM替换SSD,如果纯粹以读写速度来衡量的话,领先现在高速SSD两个数量级,当然外设控制芯片要跟得上
C.NVRAM和普通RAM共享存储空间:有点异构存储的意思,比如NUMA,灵活性好
D.全NVRAM:彻底替换,CPU看到的全是NVRAM
2.虚拟存储
我认为哈,虚存技术就是两级存储架构的桥梁。
先来说说虚存技术本身。


OS Kernel通过页表把虚拟空间映射到物理页,Kernel以页为单位映射地址空间\管理物理内存,物理页不够用的时候就把一部分页暂时存到交换空间,下次要用到这部分页的时候再换进内存。  
虚存出现在80年代,当时无论是硬件\OS设计师还是底层程序员都对仔细操作段选择子这件事情相当烦躁了。于是出现了更为规整的分页机制,这下可好,程序员眼里寻址空间一下子达到了4个G(当时机器的内存也就几十M),而且还有页为单位的映射管理机制,内存管理简洁了许多。
更重要的是,swap空间使得虚拟内存使得内存从表面上看具有了两级存储的优势,因为那部分换出去的页它们长长久久地存在外存中啊。
为什么会出现两级存储模型?
这是因为它们两个之间特性互补:


NVRAM的出现已经让两级存储成为鸡肋,快速,大容量,非易失的特点集于一身。
我们来看看为什么要采取分页:
  • 用户看起来相对较大的内存空间——交换,虚拟化(内存不够大,非易失)
  • 以页为粒度进行存储分配和保护(分页方便管理)
交换肯定是不需要了,管理还是要有,但牵扯到外存\文件系统,具体来讲,NVRAM对虚存的影响:
1.不需要页的交换:NVRAM本身就是快速,非易失的
2.页的粒度需要调整:还需要页来进行存储管理,比如分配,保护,存储空间的规划等,应尽量减小存储分片,减小页表结构的开销
3.主存和外存的保护机制:主存一般由页表组织,页为单位进行保护——硬件MMU;外存即是我们所说的文件系统,以文件为单位进行保护——OS;主存和外存合并到一起,这两种保护机制势必需要统一
4.名字空间:每个进程有一张页目录,我们成为地址空间;文件系统也有一张统一的名字空间;这两个空间需要统一么?
3.对OS运行的影响
如今系统加载(booting)这种事情现在是司空见惯的,但用了MRAM后,如果激进点想,在NVRAM上的整个系统是不需要开关机的,像我开头说过的那样。最多可能内核需要重启,应用完全不需要重启(当然是在不出错的情况下),power down之类的事件完全不会导致系统运行状态丢失,只相当于暂停了一会儿。
当然,掉电恢复后,对于一些设备(比如网络,IO)驱动可能需要经过初始化。
系统的一部分可以有目的地power down,比如为了省电,可以把CPU给关掉,但IO设备和NVRAM之间仍然可以进行DMA传输,这对能耗而言是很有意义的。
4.对应用的影响
  • 应用的状态只有安装和执行:届时应用可以一直执行态,即便是挂起以后也可以一直持久地保留在NVRAM里,如果内存足够用,还需要退出这一说么?这有点类似于现在的移动应用,比如IOS的应用会一直挂起在后台,虽然不一定运行,但保存着运行状态,提到前台一样可以接着走
  • 程序出错:检查点机制必不可少,可以利用回滚恢复到历史状态
  • 应用的更新:应用一直是运行态,这下如何更新?系统可以从检查点更新,需要支持增量更新,再大胆设想一下,可以以某个检查点生出两个分支,一个新的一个旧的,其中一个叫master,哈哈是可以像git那样啊,多有意思
5.对系统特性的影响
  • 非常可靠:系统崩溃随意啊,反正分分钟恢复
  • 安全隐患变多:系统状态power down后还在,好嘛你插个XX设备把我的密码分分钟读走了。易失性这个东西有时候对安全还是有好处的
  • 可移植性变差:文件系统跟内存一起管理,名字空间怎么办?权限怎么办?要移植你的文件系统要别的电脑都据悉本地文件系统的状态
对OS影响讨论到这里。
对工业界的影响:
1. 鉴于计算机系统界固有的惰性,比如UNIX类OS从70年代诞生以来就没太大变化,再比如微软,intel当年称霸就是凭借其向前兼容。想凭借NVRAM对计算机系统结构带来大的冲击,至少在未来短期内,不太可能。
2. 嵌入式会是最先涉足的领域,因为嵌入式平台灵活,易裁剪,而且控制器上跑的程序都是长期性的,这与NVRAM提供的特性一致,而且凭借NVRAM较低的能耗,嵌入式会是NVRAM最为繁荣的应用场景。目前Everspin公司已经向空客提供飞控的MRAM。
3. 手机端也会有应用出现,因为手机上的程序也大多是长期驻守内存的,而且NVRAM能耗低,高通就在把NVRAM加到片上系统中,让SOC,NVRAM随时断电,只让基带芯片接受数据,这样一来对手机续航算是一个大大的提升。未来两到三年,我预测应该会有配备MRAM的移动设备出现。

回复 支持 反对

使用道具 举报

20#
发表于 2017-12-15 09:38:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: LAN 来自 LAN

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
或者这么说,如果未来,内存的容量大幅增加到上T,价格大幅下降到白菜价,并且有断电不掉数据的特性,计算机行业会发生怎样的变化? _----------------------------------------------------------------------- 非常感谢各位的回答,然后发现问题被修改了,改变后的问题改变了我的讨论意图。 1. 不考虑内存变大了,硬盘变得更大的情况,也就是说,现在我的电脑只有cpu,内存,主板,没有了硬盘了。 2.开关机变快是一个很好的点…

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复