再見!英特爾宣布將徹底關停這項業務
譯文作者丨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系統,以便現有軟件使用它?;萜盏囊晃粚嶒炇已芯繂T發明憶阻器后,惠普難捺興奮,提出了一些宏偉計劃……但把新技術推向大眾市場要花很長時間,最終惠普還是放棄了。
但英特爾把它做成功了,將其投放市場……但沒有足夠多的人感興趣,現在它也心灰意冷了。
未來就在這里,但是從六十年代小型計算機操作系統設計來看,如果一切都是文件,這個Optane只是一種非??焖俚拇疟P驅動器,是不是?
并非如此。它是自小型機以來向前邁出的最重大步驟。但是我們把它搞砸了。
再見,Optane。我們還沒來得及熟悉你。
原文鏈接:
https://www.theregister.com/2022/08/01/optane_intel_cancellation/