作者丨Liam Proven
译者 | 布加迪
审校丨Noe
英特尔近日砍掉了Optane持久内存产品线,这对整个行业来说无异于一场灾难。
上世纪60年代末70年代初的一些想法放在当前依旧具有很普遍的影响力,几乎无人不知,但紧随其后的好想法基本上已被遗忘。
Optane是一种激进的革命性技术,但基于传统观点和技术债务,业内很少有人意识到Optane到底有多么激进。
回到这个问题的核心,不妨冷静地问一下:计算机文件的主要功能是什么?
首批计算机并没有文件系统。上世纪四五十年代的巨型计算机由成千上万的热阴极电子管组成,内存只能存储几个字。起初,人们手动将程序实际连入到计算机来完成程序录入:只有数据在内存中。程序运行,输出一些结果。
随着存储容量不断增加,我们迎来了冯·诺依曼架构,其中计算机程序与数据一起存储在同一内存中。在一些早期的机器中,内存是磁性存储:旋转磁鼓。
为了将程序放入到内存,从纸上读取程序:打孔卡或纸带。当计算机内存容量大到足以同时存储几个程序时,操作系统出现了:这是管理其他程序的程序。
不过仍没有文件系统。有RAM,也有I/O:打印机、终端和读卡器等,但内存就是计算机可以直接访问的全部存储。在上世纪60年代,内存常常意味着磁芯存储器,它有一个现在有时被遗忘的巨大优势:计算机关掉后,磁芯存储器中的任何内容都保留在那里。重新打开计算机,上一个程序依然存在。
大概在这个时候,首批硬盘驱动器开始面市:价格贵,速度较慢,但与工作内存相比却容量巨大。早期的操作系统被赋予了另一项工作:管理这庞大的辅助存储器。索引内容,找到需要的那些部分,并将它们加载到工作内存中。
存储的两个级别
一旦操作系统开始管理磁盘驱动器,就有了主存储和辅助存储之分。两者都可以被计算机直接访问,不是像纸带卷轴或打孔卡片那样由操作人员加载卸载。主存储直接出现在处理器的内存映射(memory map)中,每个字都是直接可读或可写的。
辅助存储是容量更大、速度慢得多的存储池,处理器无法直接看到,只能通过请求或发送整块到另一个设备(磁盘控制器)来访问,该设备从庞大存储池获取指定块的内容,或将它们放入到该存储池中。
这种分化一直延续到了七八十年代的8位微型计算机。笔者还记得将ZX Microdrive连接到48K ZX Spectrum。Spectrum一下子有了辅助存储。Spectrum的Z80 CPU有64kB 的内存映射,其中四分之一是ROM。尽管每个Microdrive磁带只有100kB左右,但存储量相当于系统整个可用内存的两倍左右。所以必须有一定的间接性:无法将整个磁带的内容都加载到内存中。
内存装不下。所以磁带有索引,还有包含BASIC代码、机器代码、屏幕图像或数据文件的命名块。
自从微型计算机问世以来,我们仍将主存储称为“RAM”,仍将辅助存储称为“磁盘”或“驱动器”,尽管在许多现代最终用户计算机中,它们都只是不同类型的电子设备,没有移动部件或单独的介质。
可以将操作系统从“磁盘”加载到RAM来启动计算机。然后,想使用某个程序时,操作系统将其从“磁盘”加载到RAM中,然后该程序可能会将部分数据从磁盘加载到RAM中。即使它是一台Chromebook,没有任何其他本地应用程序,单个应用程序也会通过互联网从另一台计算机加载数据,然后将数据从磁盘加载到RAM中,最后发送到笔记本电脑。
自从UNIX于1969年首次编写以来,“一切都是文件”已成为一句口号。类似Unix的操作系统将文件系统用于管理各种非文件操作:对机器的访问由文件上的元数据控制,访问I/O设备就像访问文件一样,可以通过将声音“复制”到音频设备来播放声音,等等。自1984年的UNIX V8问世以来,甚至还有一个名为/proc的假文件系统,它可以生成用户和程序可以读取、在某些情况下可以写入的伪装文件,显示有关运行中系统的内存和进程的信息。
文件是某种强大的手段,在1969年证明有广泛的用途是不可想象的,当时Unix是在一台最多只能存储64000个字、没有声音、图形或网络的小型计算机上编写的。如今文件却无处不在。
但是文件和文件系统只是一副拐杖。
之所以发明“计算机文件”这一概念,是由于主存储太小,辅助存储太贵、太大、太慢。要将数百万字的存储器连接到60年代的大型机,唯一的方法是使用文件柜大小的磁盘驱动器,不然存储量太大,无法装入到计算机的内存映射中。
因此,大型机公司改而设计了磁盘控制器,并将一种数据库做入到操作系统中。不妨设想一下,工资单程序能只有几千字大小,可以为数万名员工处理文件,通过小块执行:从人事文件中读取一行,从薪资文件中读取一行,计算结果,并将一行写入到薪资文件,然后重复。操作系统检查索引,并将其转换成发给磁盘控制器的指令:“在这里,从磁道4、磁头7、扇区65获取块47磁道52、磁头12、扇区34和块57……现在,将74.32写入此块……”。
SSD出现在90年代,到本世纪头十年,它们变得成本合理。SSD用电子存储代替磁性存储,但仍然是辅助存储。SSD假装是磁盘驱动器:计算机与磁盘控制器通信,并发送和接收扇区,驱动器转换它们,以模拟写512字节扇区的硬盘式功能。
问题是,闪存必须以这种方式来访问。直接映射到计算机的内存太慢了,不可能逐字节重写闪存。为了修改闪存块中的一个字节,必须将整个块的其余内容复制到其他地方,然后擦除整个块。计算机的内存控制器不是这样工作的。
未来在这里,但现在它消失了
有了Optane,就有可能消除这种情况。像磁芯存储一样,它是工作内存:主存储。Optane设备与磁盘驱动器一样大且便宜。它的容量达到数百GB,与普通SSD的容量相仿,但它可以直接装到主板的DIMM插槽中。每个字节都出现在处理器的内存映射中,每个字节都可以直接重写。无需像闪存那样在块周围移动以擦除它们。它还支持数百万个写入周期,而不是数万个。
数百GB甚至TB级的动态非易失性存储比闪存快数千倍,可靠数千倍。不是磁盘控制器另一端的辅助存储,而是就在内存映射中。
不,不是无限可重写的。因此你的计算机也需要一些RAM来保存变量和快速变化的数据。但是不是每次你想使用程序就从“磁盘”将程序“加载”到“RAM”,一个程序加载一次,然后它永远驻留在内存器中,无论有没有停电,无论你是否将计算机关掉一周去度假。重新打开它,你的所有应用程序仍然在内存中。
无需安装操作系统,无需启动,无需更多的应用程序。操作系统始终在内存中,你的应用程序也是如此。如果你的计算机有1TB或2TB的非易失性内存,你还需要SSD做什么?完全都是内存。一小部分快速、几乎可以无限重写,但其内容在断电后会消失。剩下的95%永远保存着内容。
当然,如果系统是服务器,可能会有一些旋转磁盘,这样可以管理PB级的数据。数据中心需要它,但很少有PC需要它。
Linux当然支持这个。但是Linux终究是Linux,一切都必须是文件,因此它通过对文件进行分区并使用文件系统对其进行格式化来支持它。使用主存储用软件模拟辅助存储。
目前主流操作系统都没有理解计算机只有主存储,根本没有辅助存储的概念,而是分为小容量的易失性部分和大容量的非易失性部分。甚至很难向熟悉当前计算机工作原理的人来描述,我试过。
如果没有目录,如何找到要运行的程序?如果没有地方好保存,如何保存内容?当因为没有文件而无法将一个文件#include加入到另一个文件时,你如何编译代码?生成的二进制文件又放在哪里?
关于如何做到这一点有一些想法。比如Twizzler,这个研究项目研究如何使它看起来足够像Unix系统,以便现有软件使用它。惠普的一位实验室研究员发明忆阻器后,惠普难捺兴奋,提出了一些宏伟计划……但把新技术推向大众市场要花很长时间,最终惠普还是放弃了。
但英特尔把它做成功了,将其投放市场……但没有足够多的人感兴趣,现在它也心灰意冷了。
未来就在这里,但是从六十年代小型计算机操作系统设计来看,如果一切都是文件,这个Optane只是一种非常快速的磁盘驱动器,是不是?
并非如此。它是自小型机以来向前迈出的最重大步骤。但是我们把它搞砸了。
再见,Optane。我们还没来得及熟悉你。
原文链接:
https://www.theregister.com/2022/08/01/optane_intel_cancellation/