64位操作系統,64位CPU,加SSD硬碟,是不是就可以省去內存,讓CPU直接讀取硬碟里的數據?

很久之前就有這個疑問/設想。起初電腦有內存是因為硬碟的存取速度慢(因為是機械硬碟)、32位的定址空間不夠。現在這兩個都已經被解決了,那是不是可以設計一個沒有內存的電腦,讓CPU直接讀寫硬碟里的數據。硬碟中也可以有一個空間用來swap,放臨時變數之類的。

問題是,這裡面有什麼問題嗎?還是有些問題我不知道,這僅僅是我的異想天開?

謝謝


樓主給你看一張圖,這是計算機設備各自訪問速度

1s(秒) = 1000ms(毫秒) = 1000000 μs(微妙) = 1000000000 ns(納秒)

CPU 1級緩存 ......................... 0.5 ns
分支預測 ............................ 5 ns
CPU 2級緩存 ......................... 7 ns
互斥鎖加鎖/釋放鎖 .................... 25 ns
主內存 .............................. 100 ns
壓縮1K數據 ............. ............ 3,000 ns = 3 μs
在1G帶寬中發送2K數據 ................ 20,000 ns = 20 μs
SSD硬碟隨機讀取...................... 150,000 ns = 150 μs
主內存中順序1M數據 ................... 250,000 ns = 250 μs
同一個數據中心來回 ................... 500,000 ns = 0.5 ms
SSD中順序讀取1M數據 ................. 1,000,000 ns = 1 ms
硬碟定址............................ 10,000,000 ns = 10 ms
硬碟順序讀取1M數據 .................. 20,000,000 ns = 20 ms
從加拿大發送數據到荷蘭再回到加拿大 ... 150,000,000 ns = 150 ms

題主你說的內存應該是指第5項,而ssd硬碟訪問是第8項,你看他們訪問速度差了1500倍,題主你覺得你的論題還成立嗎

文獻引用:Every Programmer Should Know These Latency Numbers - DZone Performance


1. SSD的IOPS還遠遠趕不上內存。

一般民用的SSD的IOPS(每秒處理的IO個數)都不高,企業級一般在幾十萬左右,到百萬的很少,最高據說有人造出過900萬IOPS的SSD,但是估計民用困難,寫比讀IOPS要低的多。

內存的IOPS不好算,跟時序有關,但內存的不同bank理論上是可以並發的,多通道速度也可以疊加,算下來內存的IOPS上百萬很輕鬆,千萬次估計也不難(看匯流排設計),搞好的情況下沒準可以上億次(但可能無實際使用價值)。

2. SSD定址單位太大。

內存可以單位元組定址,SSD一般是一個扇區或者一個數據塊(Page,4K-256K不等,看具體晶元),而內存可以單位元組定址,差距太大了,除非給SSD再裝上一層緩存,但這樣SSD的意義就不大了,緩存可能要很大。

3. SSD讀寫速度與內存有數量級上差別

頂級的SSD讀寫速度能上G,但普通內存就可以輕鬆上G

基本就這幾個原因,其中1、2條很致命。

-------------------------------------

補充一點,嵌入式領域有直接拿flash當內存的,準確的說是可執行代碼不讀進內存,直接在flash上跑,但堆棧之類的動態數據還是用內存的。SSD不當內存用的主要原因還是成本太高,能達到內存讀寫速度的SSD不是沒有,但太貴了,整套方案實現起來不現實。

不排除未來會有技術的進步,但如果內存能被SSD替代,那麼肯定也會有更快的東西出現。


「起初電腦有內存是因為硬碟的存取速度慢(因為是機械硬碟)、32位的定址空間不夠。」

啥?誰告訴你的?你這個前提就是錯誤的,所以所有推論都無意義。

在連機械硬碟他爹都不知道在哪裡的時候,就已經有內存。所以跟機械硬碟無關。

在8位機他爹都不知道在哪裡的時候,就已經有內存。所以跟32位定址空間不夠無關。

內存的好處是,速度快,延遲低。尤其是後者,非常重要。單純拼速度,DRAM比SSD高一個數量級。拼延遲的話,DRAM是ns級別的,SSD是ms級別的,差兩到三個數量級。CPU的工作依賴於低延遲,否則就得像GPU那樣高並行高延遲的方式工作了。


SSD還是太慢。

但是你可以反過來,把內存做大,提供獨立供電電池,做到關機內存數據不丟。

然後把這個內存叫成硬碟。


SSD還是太慢


大概算了一下,速度相當於當年的SDRAM 100MHz,

無非就是慢點,也沒啥

-----------------------

根據

@yang shen

提示,考慮到延時問題,SSD帶寬雖然夠,但是比起RAM延時要大兩三個數量級,用起來那不是慢一點兩點的問題....是會慢的要死


查一下PCM相變存儲。


SSD 是有寫入壽命的,雖然斷電能保存,但目前每個block的極限壽命也就是寫入10000次左右。考慮先放入變數的的block,遇到頻繁讀寫的應用,估計個把月換一塊,不然也是越用體積越小。

其實SSD也是有cache的,cache一般都用DRAM來實現,聰明的你一定猜到了:

SSD目前的速度不可能比DRAM快了吧, 延遲什麼的就更不用說了。


其實內存的成本很低的,而且最普通的內存速度基本上是ssd極限速度的40倍。所以給你提供另一個思路。現在的無線網路帶寬可以達到400mbps,基本上這個下載速度差不多50MB每秒。而普通的機械硬碟讀取速度在110MB每秒。使使勁把硬碟去掉吧,全部使用網路雲盤怎麼樣?


你還不如讓硬碟自帶CPU


簡單放3張圖自己對比吧

Intel 730 480GB的跑分圖,730的性能不用多說了吧,這是接近滿盤的性能,空盤測試還要高些。

這是閃迪至尊超極速 480GB的測試,這是空盤性能。

以上兩塊盤應該是可以代表SATA盤了,都是絕對旗艦水準的。PCIe+NVMe的盤持續性能、高QD下的隨機性能會高些,但是4K QD1的性能不會有太高的提升,目前消費級頂級產品應該是Intel 750,不過我自己沒有所以就不上圖了,有興趣的自己搜索下。NVMe的盤我只有一塊Intel 600P 256GB,而且因為主板M.2隻是X2通道所以也不上圖了,沒什麼本質區別。

這一塊內存檔的性能,自己和SSD對比下吧,而且因為要用AS跑分,所以模擬成了硬碟,性能比直接用內存要慢一些,但是也已經足夠碾壓SSD了。

下面放兩張三星840 Pro 128GB開啟內存加速與關閉內存加速的跑分對比

開啟RAPID(三星SSD可以用內存進行加速)

關閉RAPID

所以,SSD比內存還是慢太多。現在Intel Optane有種特性就是介於NAND和DRAM之間,不過真正產品還沒上市,有興趣可以自己了解下。


我感覺好像沒有DMA的時候,硬碟讀寫就是CPU重度參與的吧。只不過這是286/386時代的事情了。


一個最關鍵的問題是,ssd不能直接定址。你讀ssd時並不是直接給一個地址,而是要先告訴它讀那個block,再讀block內的數據。且這些操作都是要靠存在內存里指令實現的。


你這個腦洞不僅有人開過,還有人做出來了,那個東西叫做憶阻器(memrister),同時擁有了持久化存儲和高速存取的性能。而且別人的腦洞開的更大,修改了整個計算機的架構,自製操作系統等等,這就是HP的 The Machine ,然而因為成本太高,似乎項目失敗/延期了。

如果憶阻器的成本降低到能夠量產的話,基本上Unix時代也就宣告結束了,很多相關的概念也都不需要了,比如說題主說的swap什麼的就都可以扔掉了,直接把內存/硬碟空間映射到虛擬內存裡邊就能跑了。

順便一說,最先有的不是硬碟而是內存,硬碟是為了持久化儲存數據而出現的,否則的話所有的東西都需要打紙帶打出來。


把cpu緩存提升到4g,能吊打內存幾條街


題主,馮諾依曼的棺材板我替你壓著呢。


這個事情就是重新定義內存就行了嘛。說人話就是把內存改個名字嘛。現在剩下的問題就是解決斷電以後信息丟失的問題了。有很多公司,比如IBM,正在致力於解決這個問題。

當然你要是覺得價格也是個問題的話,那就沒法聊了。


硬碟,SSD這些東西都有一個共同的名字叫外部存儲器。

外部存儲器屬於輔助存儲器!
外部存儲器屬於輔助存儲器!
外部存儲器屬於輔助存儲器!

它的功能一般用於永久保存主存中的數據。
我們來回顧一下馮 諾依曼結構:控制器,運算器,存儲器,輸入設備,輸出設備。對吧?

這裡的存儲器里其實並不包含輔助存儲器,就好像印表機並不是計算機必須的輸出設備一樣。

實際上,在計算機剛啟動,內存還沒初始化之前,BIOS(現在是UEFI)里的最初級的程序在CPU中運行,那時候只有寄存器可以用(沒錯,緩存也沒完成初始化)。寄存器也是主存的一種!也是一種內存!這個時候 ,你意識中的那個內存是還不能工作的!外存更不用說!

別以為只有主板上那個條型的是內存,寄存器(包括通用寄存器,控制寄存器,還有Bios工程師才用得到的調試寄存器)那都是內存~一二三級緩存也都是內存~

現在的x86-64CPU上一般有A0到A63,一共64根地址線(物理線哦,摸得到的,其實就是引腳啦),D0到D63一共64根數據線。(應該是,好久不做這行忘了)。

所以,,,數據想從外存調入CPU,不好意思沒路,得乖乖地從內存走一趟。只有內存才有物理的導線直接拉在CPU上,可以被CPU直接訪問。


我來給你形象解釋一下為什麼不能用SSD做內存

比如我有一個1秒能做60個各種漢堡的機器(CPU),要把漢堡在1分鐘內送到5000米外的若干櫃檯(硬碟 音效卡 網卡 顯卡等等),我的A號員工快銀(一級緩存)能夠在1秒內把60個漢堡分類,哪個是麻辣雞腿堡哪個是巨無霸,然後分類交給50米外的綠巨人(二級緩存),綠巨人把分好類的漢堡根據訂單交給950米若干個鋼鐵俠的戰衣(內存),鋼鐵俠的戰衣把個個訂單送到4000米櫃檯手上(匯流排)。任務完成。

那為什麼不都快銀送就好了呢?因為快銀貴啊全用快銀請不起,而且快銀請多了不協調會撞車反而耽誤時間。

機械硬碟 1T 400塊 固態硬碟 128G 400塊 內存8G 400塊 你來自己算一下 一個128G的一級緩存多少錢,看看自己還買得起CPU不


目前最快的SSD……

好像是1GBps?

而我沒記錯……上一代的DDR3(注意是電腦不是手機)

速度好像是0.5TBps(我看錯單位了!是0.5Tbps,即500Gbps,60多GBps)

這差了200倍啊(我傻逼了……是500倍,感謝評論區指正)

(再次糾正,我……看錯單位了……60倍才是對的)

還不如一車內存當系統盤,快的不要不要的


推薦閱讀:

樹莓派可以安裝的Linux發行版有哪些?
相對於 Win 8.1,Win 10 有哪些實用的新功能?
請問我下64位office 2013的時候出現提示說我電腦裡面有32位的,可是我已經逐個刪除了,為什麼還是有?
大家使用微軟 Windows 操作系統的原因是什麼?
BSD 相比 Linux 有哪些優勢?

TAG:操作系統 | 計算機 | 硬體 |