如果硬盤能達到內存的速度,那操作系統的設計是否會有變化?

JJ-魅力值Ax小豪

在邏輯裡面,條件為假,任何答案都是真。

對應這個問題就是,如果“硬盤能夠達到內存的速度”,那麼“操作系統的設計會改變”與“不會改變”這倆答案都對

回到現代計算機的基本架構——馮·諾依曼架構上,計算機只需由運算器和存儲器組成,控制器輔助完成控制功能。運算器就是我們熟知的CPU中的ALU,所謂數羅運算單元,控制器就是CPU中的CU,而存儲器就是內存,更準確的表達是英文Memory。

而題主問題中的“內存”,確切地說,應該是人們找到的最接近Memory特性的技術RAM(隨機存儲器)的分支DRAM(動態RAM)中的DDR(雙倍速率)技術產品其中的第4代或3代,好拗口~~

無論以上這些Memory技術如何具體落地和升級改造,對計算機基本架構和控制邏輯沒有影響。當然,針對不同內存技術的特徵,硬件接口和底層驅動,會存在相當的特性優化,但是非常有限,畢竟是完全固化的,這也是為何絕少有不改動內存參數而進行的性能優化。這些內存層面的控制,對OS層面透明,因此OS幾乎不用考慮對內存的驅動優化。

與內存相對應,其他所有存儲裝置都是外存,至於為什麼這麼叫,計算機原理這門課會專門講述,這裡就說個簡單的:內存方位依賴地址,CPU可直接通過地址來訪問內存中的數據,訪問單位是“字”(不是字節,一個字可以是1、2、4或更多字節),其長度限制是寄存器(後來不夠長了,又發明了多次取數)。

CPU笨到不會訪問外存,CU會通過其下屬的I/O控制將外存數據(通常為塊,遠比字大,一個塊可存儲一個或不同組織結構的多個字)映射到內存的特定區域中,CPU才能找到。具體流程是,1、CPU要個數據,2、CU一看沒在內存裡面,3、趕緊告訴I/O從外存拿,4、I/O拿回來放在內存裡,5、其地址告訴CU,5、CU在告訴CPU,6、這數據有 在哪哪哪,7、CPU就去了......如果數據在內存裡,那麼整個過程就只剩1和6、7步了。

說著都累,實際做起來更是耽誤工夫,光這一點,硬盤就沒有機會達到內存的速度,因此“硬盤能夠達到內存的速度”這個條件就是假的。

正經點,說說題主的潛臺詞。剛才有說,內存對OS幾乎透明,OS幾乎無需也不能為內存優化,而外存,具體來說是硬盤,需要通過I/O來完成訪問。因此OS是否能為硬盤優化,實際指的是對I/O優化,這個答案是肯定的!不過和硬盤有多快,沒有直接關係。

由於I/O升級相對更為頻繁,因此OS通常不傾向於對其控制透明化,另一方面原因是其訪問複雜、風險高、權限低、性能低,透明化嚴重拖累系統性能。以PC為例(包括Mac或Macintosh),CU集成在CPU中,所以一開始都是PIO(程序控制I/O)模式,後來硬盤性能提升了,CU沒太多心思搭理它造成了性能浪費,於是讓這個成績好的孩子自學去了——DMA(直接內存控制),說白了就是從I/O抓取、被動提供,變成了主動送到內存然後報告地址了。後來又有了小升級NCQ和大升級NVMe,都要在硬盤、控制器支持的基礎上,在OS安裝驅動程序才能獲得相應的性能改善。

但是,這些都不涉及到OS設計改變的層面。雖然計算機技術這幾十年飛速發展,但是無論是基礎架構還是附著於上的OS設計,都還沒到質變的時候。光是硬盤速度提升這個量變,也難以積累到質變。

相對來說,現在英特爾Optane這個技術帶來的窗口,非常有機會成為質變的誘發性因素。現在當硬盤看,它的優勢是速度,而推動質變的恰恰不是這個因素,至少不是唯一的因素。直接繞過以I/O為界的內外存藩籬,是其最大的幾乎點。而架構上來說,還未露面的Optane DIMM,是一種變相地將I/O放到外存裡的解決方案,這樣它就能告訴CU:“我是內存,別打擾我和CPU嘮嗑”,並以內存形式訪問——依然在馮·諾依曼架構中。

即便如此,這種方式也只是縮小了外存與內存之間的性能鴻溝,還不足以改變OS設計,只需要OS“瞭解(安裝驅動)”它的工作方式,以此來充分發揮其性能。


分享到:


相關文章: