如果硬碟能達到內存的速度,那操作系統的設計是否會有變化?
或者這麼說,如果未來,內存的容量大幅增加到上T,價格大幅下降到白菜價,並且有斷電不掉數據的特性,計算機行業會發生怎樣的變化?
_-----------------------------------------------------------------------
非常感謝各位的回答,然後發現問題被修改了,改變後的問題改變了我的討論意圖。
1. 不考慮內存變大了,硬碟變得更大的情況,也就是說,現在我的電腦只有cpu,內存,主板,沒有了硬碟了。
2.開關機變快是一個很好的點。除此之外,由於內存是完全隨機存儲,去掉了硬碟中的機械尋道所要求的局部性,再加上速度方面的優勢。操作系統的虛擬內存是否還有存在的必要性?文件系統會有哪些針對性的變化?程序員使用的編程模型是否會有變化?等等
就像內存資料庫和普通資料庫會有很多不同一樣?這種情況下,不是將所有的信息直接放到內存中這麼簡單。
翻了前幾頁答案,為什麼大部分答主都在糾結開機速度啊!!
我就問一個問題:內存,甚至CPU里的存儲器都是Non-volatile了,這意味著你系統里所有的進程狀態、內核狀態都不會再斷電後丟失,那你還Booting幹嘛?
首先,這類存儲器真實存在,即大容量,快速,非易失存儲,代表有STT-MRAM Magnetoresistive random-access memory,memristor 憶阻器,Phase-change Memory 相變化內存
Everspin公司已經開始供貨其二代MRAM了,上圖
特性不多說,反正是Non-Volatile的前提下,都DDR3兼容了。用到上G大小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
引入NVRAM的方案:
A.傳統方案
A.傳統方案
B.最直觀的替換磁碟:用NVRAM替換SSD,如果純粹以讀寫速度來衡量的話,領先現在高速SSD兩個數量級,當然外設控制晶元要跟得上
C.NVRAM和普通RAM共享存儲空間:有點異構存儲的意思,比如NUMA,靈活性好
D.全NVRAM:徹底替換,CPU看到的全是NVRAM
我認為哈,虛存技術就是兩級存儲架構的橋樑。
先來說說虛存技術本身。
OS Kernel通過頁表把虛擬空間映射到物理頁,Kernel以頁為單位映射地址空間管理物理內存,物理頁不夠用的時候就把一部分頁暫時存到交換空間,下次要用到這部分頁的時候再換進內存。
OS Kernel通過頁表把虛擬空間映射到物理頁,Kernel以頁為單位映射地址空間管理物理內存,物理頁不夠用的時候就把一部分頁暫時存到交換空間,下次要用到這部分頁的時候再換進內存。
虛存出現在80年代,當時無論是硬體OS設計師還是底層程序員都對仔細操作段選擇子這件事情相當煩躁了。於是出現了更為規整的分頁機制,這下可好,程序員眼裡定址空間一下子達到了4個G(當時機器的內存也就幾十M),而且還有頁為單位的映射管理機制,內存管理簡潔了許多。更重要的是,swap空間使得虛擬內存使得內存從表面上看具有了兩級存儲的優勢,因為那部分換出去的頁它們長長久久地存在外存中啊。
為什麼會出現兩級存儲模型?
這是因為它們兩個之間特性互補:
NVRAM的出現已經讓兩級存儲成為雞肋,快速,大容量,非易失的特點集於一身。
NVRAM的出現已經讓兩級存儲成為雞肋,快速,大容量,非易失的特點集於一身。我們來看看為什麼要採取分頁:
- 用戶看起來相對較大的內存空間——交換,虛擬化(內存不夠大,非易失)
- 以頁為粒度進行存儲分配和保護(分頁方便管理)
交換肯定是不需要了,管理還是要有,但牽扯到外存文件系統,具體來講,NVRAM對虛存的影響:
1.不需要頁的交換:NVRAM本身就是快速,非易失的
2.頁的粒度需要調整:還需要頁來進行存儲管理,比如分配,保護,存儲空間的規劃等,應盡量減小存儲分片,減小頁表結構的開銷
3.主存和外存的保護機制:主存一般由頁表組織,頁為單位進行保護——硬體MMU;外存即是我們所說的文件系統,以文件為單位進行保護——OS;主存和外存合併到一起,這兩種保護機制勢必需要統一
4.名字空間:每個進程有一張頁目錄,我們成為地址空間;文件系統也有一張統一的名字空間;這兩個空間需要統一么?
3.對OS運行的影響
如今系統載入(booting)這種事情現在是司空見慣的,但用了MRAM後,如果激進點想,在NVRAM上的整個系統是不需要開關機的,像我開頭說過的那樣。最多可能內核需要重啟,應用完全不需要重啟(當然是在不出錯的情況下),power down之類的事件完全不會導致系統運行狀態丟失,只相當於暫停了一會兒。
當然,掉電恢復後,對於一些設備(比如網路,IO)驅動可能需要經過初始化。
系統的一部分可以有目的地power down,比如為了省電,可以把CPU給關掉,但IO設備和NVRAM之間仍然可以進行DMA傳輸,這對能耗而言是很有意義的。
- 應用的狀態只有安裝和執行:屆時應用可以一直執行態,即便是掛起以後也可以一直持久地保留在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的移動設備出現。
不是很切題,不過值得補充一下。還有篇論文《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 環境中使用無鎖數據結構,可以省去多寫一份日誌的浪費,而這一優化是過去做不到的。
[1]: http://sampa.cs.washington.edu/papers/mspc14-time-machine.pdf現在操作系統已經在發生變化了,比如說Windows 8的秒開,Windows實現秒開其實非常不容易,歷史包袱很重,驅動神馬的又多。
圖形界面操作系統的長時間待機,iOS可以輕鬆待機幾個月啥事沒有,以前這隻有沒有圖形界面的伺服器操作系統能做到。
摩爾定律
估計大家知道且只知道這個定律。硬體成本,集成度,速度,每18個月加倍或減半。
但是it界還有幾個定律。由前者推出。反摩爾定律,安迪比爾定律。當然最近又聽說了個情懷定律。不再本文討論範圍,本人既不是錘黑也不是粉
反摩爾定律,硬體每18個月價格減半,那麼硬體廠商就要賣出兩倍的產品才可以同樣的利潤。這就逼著硬體廠商拼了命去提高技術,無論是從尺度下降二三維轉換或者量子之類去進步。
安迪比爾定律。如果硬體成本每18月下降一半,我18月後買同樣電腦,那不就省錢了嘛?這樣買電腦的不就虧了?博弈會怎樣? 這時偉大的比爾蓋茨出來了,他讓幾十K的basic一步步變成了動輒幾百M的.net。 安迪是intel老總,比爾是微軟老總,一看就是好基友,多照顧對方。人家蘋果軟硬都自己搞,然後cook出櫃你們知道為什麼了嗎?
為什麼軟體會越來越大?我們理論上可以用彙編做一切工作,當然只是理論上。低級語言效率高速度快,但是編起來難啊,維護可讀性移植性差啊。我不能編個遊戲都去學各種硬體晶元啊。所以軟體發展越來越大越來越複雜。這是為了更友好界面,更易可讀,當然程序員工資很高啊,我能省讓他快點做任務,為什麼要用那變態彙編?
計算機存儲系統從cache緩存內存ssd硬碟光碟磁帶等等。速度整體是越來越慢的。但注意成本是越來越低的。
好了回到題主的問題。
虛擬內存技術會不會變?依我拙件,不會。windows給每個程序還是進程分4g虛擬內存。你覺得你電腦有多少程序進程?虛擬內存出來原因不僅僅是ram不夠大吧,還有一些地址分配什麼亂七八糟吧。
當然,如果您是壕,硬體隨意買,無數微軟研究院級別的人替你搞系統定製軟體。也是可以的。
最後,大家都是企業,大家都是為了掙錢,所以成本是不得不考慮的東西。
科研不是無目的的,大多是遇到了問題才解決。有了瓶頸我才去研究,而制約就是成本。如果砸錢,那也可以讓外存儲器速度達到cache速度,但pc是一個木桶,你把一邊弄得天高有何用?所以科研補的是短板。
首先,這種事情是真實發生過的,舉個例子:
把時間倒退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定址範圍是全內存的,那麼可以參考這個鏈接:哈佛結構和馮·諾依曼結構的區別
現有的計算機系統都是兩種結構混合的,所以,變化沒有題主預期的那麼大。弟弟的年齡永遠都不會超過哥哥。。。
永遠都會有更快的東西在硬碟上級。。。除非人類遇到了瓶頸。。。但是概率為0。。。不加大約。。。
放心,那個時候程序員會開發出更複雜更慢的軟體,讓你的電腦變得更慢,en
難道現在不就是這樣的嗎?Macbook,所有需要的程序都開著,全都在內存里,也不需要關機,蓋上蓋子就走。iPhone,常用的幾個應用都在內存里,都是秒開的。當然現在只有1G內存,如果以後再大點就足夠用了。
編輯文檔在Google Docs里,雖然網路傳輸還需要時間,但是編輯的時候完全感覺不到,因為存儲都是後台進行的。
戒掉喜歡關機的強迫症,還有晚上關手機以防止輻射的強迫症,什麼「斷電不掉數據」、「開機即能用」這些需求完全沒有必要。空談誤國,實幹興邦!
分享連接
在內存中安裝WIN7
http://www.itqit.com/skill/memory-win7.html
有4G以上內存的動手能力強的各位知友完全可以親自體驗一下內存速度的硬碟是什麼感覺:)
有一種技術叫RAM disk, 將內存模擬當做硬碟分區來使用。
裝在該分區的軟體, 基本上都能做到秒開。首先,我想說,這是一個很好的問題!這是計算機體系結構發展將會面臨的問題,也是推動計算機體系結構變革的驅動因素之一!
回答很長,不過可以用兩句話總結答主我的回答:
第一句話:在可預計的一段時間內,題主的假設是無法成立的,也即硬碟是無法達到內存的速度!
第二句話:如果題主的假設成立了,變成事實了,那麼,操作系統會發生天翻地覆的變化!國產操作系統可以彎道超車了啊!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的訪問排隊和調度也取消吧!
上面給出的是針對現有操作系統的修改,其實還有針對現有操作系統的加強,例如由於數據在內存中的非易失性,帶來數據安全問題;也會出現性能隔離問題等等。這兒等有空可以繼續展開。
最後,我想說的是,題主的問題非常好!
難道都沒聽說過安迪比爾定律?
IO性能和內存一樣的話
- 所有網站都快如飛,redis和memcacheD將沒有用武之地,慘被淘汰
- nodeJs等等非同步編程語言應用場景越來越少或者被淘汰(性能提升不大維護性卻降低了很多,就好比在現代用彙編編程)
- 網站完全動態化,不再像報紙一樣大多是圖片文字。網站將會大量使用音視頻(就像哈利波特電影裡面的報紙或是instagram的主頁)而不用擔心io太多拖慢伺服器。
- 更多的音視頻圖片存儲使得佔用空間百千倍增加,使得關係型資料庫依然佔據重要地位(不浪費空間)。
- 運算雲端化,客戶端(手錶手機平板電腦)只是做結果展示和收集用戶指令,不進行運算。
進一步
- 由於主要運算在雲端,客戶端的整體功耗會非常低,一副google glass就可以代替智能手機平板所有功能
- 任何一部設備都可以玩大型的畫面效果非常好的遊戲(因為計算髮生在雲端)
- google基於文字網頁的搜索將被淘汰,未來任何東西都可以被搜索,圖片、視頻、音頻、溫度(紅外感測器)、甚至氣味也有可能:
- 當你走進超市時,你的googleglass自動搜索你見到的一切,你可以知道每件物品的用途、產地、壽命,
- 會自動幫你挑選最新鮮度最甜的水果(基於水果外觀顏色、氣味、表面溫度、上市時間、超市內溫度、顧客反饋進行搜索、計算)。
- 當你的車壞在路上時,自動根據各部件溫度、外觀、車內感測器數據等,從資料庫查出故障原因,並告訴你維修步驟。
如果硬碟達到內存的速度(這個速度不僅僅指吞吐量,也包括延遲),那麼也許就不需要文件的概念了。所有的數據都是"由硬碟構成的內存"中的對象。
如果磁碟速度和內存一樣的話,對linux系統來說,文件系統的緩存就不再需要了,連續讀文件時的預讀也不需要了,讀寫文件的操作會簡潔很多。文件系統的設計也會有變化,目前很多文件系統都是基於B樹來設計的,B樹的特點是假設讀或寫操作很費時,其他操作相對來說要快很多,因此盡量減少讀寫次數。這種考慮也沒有必要了,可能會使用紅黑樹來實現文件系統。
理論上說,磁碟速度快了,交換分區可以被更加肆無忌憚的使用,不過現在內存已經白菜價了,大家都直接上大內存,交換分區的意義已經不大了。
現實中,硬碟除了讀寫速度比內存慢之外,還有一個特點,就是硬碟的隨機讀寫比順序讀寫慢很多,而內存順序讀寫和隨機讀寫速度一樣。如果在這點上,硬碟也進化成和內存一樣了的話,即硬碟的隨機讀寫和順序讀寫一樣,都和內存一樣快,塊設備層的電梯演算法也不需要了。不需要延遲寫操作,合併讀寫請求,只需按進程的io優先順序分配磁碟帶快就好了。
大量存在磁碟中的數據不需要被預先載入到內存中,比如文件系統的元數據,需要的時候隨時讀就好了。
使用raid不再有加速的效果了,估計反而會降低速度,因為控制器的帶寬很可能趕不上單個磁碟的速度。
==========================
不過我覺得,更有可能的是,網速首先達到了內存的速度,於是所有的東西都放在網上,由網路傳輸到內存,根本沒硬碟啥事了。
如果硬碟和ram一樣快,那麼ram就會和cache一樣快,cache和reg一樣快,reg……鬼知道,在任何條件下,製造速度足夠快、容量足夠大、價格足夠便宜的存儲時不可能的,所以分級會一直存在。也就是說那個時候的內存會更快,你也就看不上硬碟這可憐的速度了。
根據資訊理論,個人感覺那時系統速度完全取決於能耗,操縱系統則是最低能耗提供最好用戶體驗為己任。也就是說全3d實時運算界面和高速平面化界面都有公司在做。你只要付出的運算能源即可擁有
內存和處理器緩存的技術不會坐等被硬碟追上的,等大容量硬碟和現在內存一樣快了,消費級內存訪問速度恐怕早就翻幾番了。(最簡單的想法就是把現在處理器緩存/寄存器的技術實現低成本量產,並提高主板頻率)
存儲器層級應該多半還會在計算模型里存在,因為很難想像有一種革新性的存儲技術可以又快又大又穩定又便宜,導致所有現在的存儲層級用相同的這種技術。那時候總會有人有動力開發稍貴一點的緩存,以匹配當時的處理器計算速度吧。他們使用雙路Xeon伺服器搭建了一套678GB RAM的平台,藉助128GB傳統RAM和兩塊375GB的Optane SSD,實現承載675GB大小的MySQL資料庫。
Inlte表示,雙路Xeon最高可支持24TB存儲,四路則是48TB。
原標題:Optane固態盤完美變身內存!675GB RAM
樓上都可以歇菜了,看似乾貨實足,實則全是理論yy
感覺人大腦跟不上
推薦閱讀: