阿里終面:為什么SSD不能當(dāng)做內(nèi)存用?
共
2547字,需瀏覽
6分鐘
·
2021-07-21 08:37
輸入“SSD”隨便找到銷量比較高的一項(xiàng),在商品詳情頁上有這樣的描述:注意圖片上顯示的規(guī)格,讀速高達(dá)3.5GB/s,真實(shí)情況下稍差點(diǎn)(尤其是隨機(jī)讀寫),但也不會(huì)很離譜,可以看到,這個(gè)速度是非??斓?,基本秒傳高清電影的水平。那么問題來了,既然現(xiàn)在的SSD讀取速度這么快,那么可以把SSD當(dāng)做內(nèi)存來用嗎?要想回答這個(gè)問題,我們先來看看內(nèi)存的速度。當(dāng)前采用第四代DDR技術(shù)的內(nèi)存,其帶寬基本上能到20GB - 30GB 左右。怎么樣,即使SSD的速度很快,但和內(nèi)存相比還是有一個(gè)數(shù)量級(jí)的差異。也就是說,如果真的當(dāng)把SSD當(dāng)內(nèi)存使用,那么你的計(jì)算機(jī)可能會(huì)比當(dāng)前慢上 10 倍左右。如果站在用戶的角度你覺得慢點(diǎn)無所謂,那么接下來我們從計(jì)算機(jī)以及操作系統(tǒng)的角度來看看這樣可不可行。如果你現(xiàn)在在計(jì)算機(jī)旁邊可以進(jìn)行一個(gè)小實(shí)驗(yàn),以下以我的 Win10 機(jī)器為例。新建一個(gè)文本文件,隨便寫點(diǎn)什么東西,然后右鍵打開屬性,你會(huì)看到:這個(gè)文件大小本身只有816字節(jié),但卻占據(jù)了4KB的空間。讓我們再往這個(gè)文件里加些內(nèi)容,再看一下:此時(shí)內(nèi)容的大小是5.73KB,占據(jù)的空間卻來到了8KB。很簡單,這說明文件大小是按照塊來分配的,但這又能說明什么問題呢?要知道內(nèi)存的尋址粒度是byte級(jí)別的,也就是說每個(gè)字節(jié)都有它的內(nèi)存地址,CPU可以直接通過這個(gè)地址獲取到相應(yīng)的內(nèi)容。但對于SSD來說就不是這樣了,從上面的實(shí)驗(yàn)也可以看到,其實(shí)SSD是以塊的粒度來管理數(shù)據(jù)的,至于塊的大小各有差異,這不是重點(diǎn)。這里的重點(diǎn)是:CPU沒有辦法直接訪問文件中某個(gè)特定的字節(jié)。CPU沒有辦法直接訪問存儲(chǔ)在SSD上的任何數(shù)據(jù)。在現(xiàn)代操作中,我們以文件的形式來使用SSD,這繞不開操作系統(tǒng)中的文件系統(tǒng)。文件系統(tǒng)把SSD上的數(shù)據(jù)以文件的形式呈現(xiàn)出來,程序直接操作文件,讀寫文件時(shí)把請求發(fā)送給文件系統(tǒng),文件系統(tǒng)把請求路由給SSD,SSD處理完請求后數(shù)據(jù)會(huì)被copy到相應(yīng)進(jìn)程的內(nèi)存中,此后程序直接操作內(nèi)存。完整的過程以及文件系統(tǒng)的實(shí)現(xiàn)可以寫成一本書的完整一章,啊哈,博主的《深入理解操作系統(tǒng)》第八章有關(guān)于這部分的詳細(xì)講解,感興趣的可以去看下。從這里我們可以看出,CPU沒有辦法像訪問內(nèi)存那樣直接按照字節(jié)粒度去SSD中尋址,CPU訪問SSD(磁盤)通常需要借助文件系統(tǒng),當(dāng)然,我們也有辦法繞開文件系統(tǒng),但CPU依然無法直接訪問SSD(磁盤)中的某個(gè)字節(jié)。正是因?yàn)镃PU無法直接按照字節(jié)粒度去訪問SSD,因此CPU無法脫離內(nèi)存直接在SSD中運(yùn)行你寫的程序。操作系統(tǒng)在把SSD當(dāng)內(nèi)存用
當(dāng)然在這里還要插個(gè)題外話,盡管操作系統(tǒng)不能把SSD當(dāng)內(nèi)存來用,但實(shí)際上操作系統(tǒng)在間接把你的SSD當(dāng)內(nèi)存來用。現(xiàn)代操作系統(tǒng)會(huì)自動(dòng)在空閑內(nèi)存中緩存SSD(磁盤)數(shù)據(jù)。當(dāng)你首次讀取文件時(shí),這次讀請求的確需要經(jīng)過慢吞吞的SSD(磁盤)來處理,但此后這塊數(shù)據(jù)就被緩存在了內(nèi)存當(dāng)中,下次再訪問這塊數(shù)據(jù)時(shí)就不用訪問SSD(磁盤)了。而如果你寫入數(shù)據(jù),一般來說也是寫到內(nèi)存,稍后會(huì)有一個(gè)任務(wù)把內(nèi)存中的數(shù)據(jù)寫入磁盤。因此從這里我們可以看出,現(xiàn)代操作系統(tǒng)基本上是在把SSD當(dāng)內(nèi)存來用,更不用提磁盤交換空間,是不是很聰明,關(guān)于這一部分的詳細(xì)闡述請參見《深入理解操作系統(tǒng)》第七章。現(xiàn)代操作系統(tǒng)的內(nèi)存管理都采用虛擬內(nèi)存,這會(huì)帶來一個(gè)問題。對于32位操作系統(tǒng)來說,其最大尋址范圍只有4G,也就是說如果你把SSD當(dāng)做內(nèi)存,即使SSD有1T,那么操作系統(tǒng)真正能用到的也只有4G,剩下的就都浪費(fèi)掉了。因此,現(xiàn)代操作系統(tǒng)對內(nèi)存的管理方式也無法讓我們把SSD當(dāng)內(nèi)用,除非修改操作系統(tǒng)。當(dāng)然,對于64位操作系統(tǒng)則不存在這個(gè)問題,因?yàn)?4位操作系統(tǒng)可尋址空間足夠大,盡管這個(gè)空間足夠可觀也需要意識(shí)到這是有上限的。SSD的制造原理決定了這類存儲(chǔ)設(shè)備是有固定使用壽命的。你會(huì)發(fā)現(xiàn)SSD這貨就和車一樣,當(dāng)跑出一定里程后就會(huì)出問題,在SSD中的里程數(shù)就是所謂的總寫入字節(jié),TBW,全稱是Max Terabytes Written,最多能寫多少TB,以下是某種型號(hào)的SSD其TBW規(guī)格。一般來說普通的 SSD 其 TBW 在幾百 TB,也就是說如果你的SSD寫入上百TB,那么很可能就要報(bào)廢了。有的同學(xué)可能覺得這使用壽命也太短了吧,但實(shí)際上作為普通用戶,你的電腦不會(huì)有那么頻繁的寫SSD場景,每天寫磁盤的量應(yīng)該會(huì)很小,當(dāng)然頻繁下小電影除外,因此作為普通用戶你可以不用在意SSD的使用壽命問題。但就像剛才說的,SSD畢竟是有TBW這個(gè)限制的,內(nèi)存則沒有這個(gè)問題。因此如果你把SSD當(dāng)內(nèi)存用的話,相信很快你的SSD就會(huì)被CPU寫死。受限于當(dāng)代的存儲(chǔ)設(shè)備制造技術(shù),我們還沒有辦法直接把SSD當(dāng)做內(nèi)存來用,我們的各種軟件包括操作系統(tǒng)、文件系統(tǒng)以及各種硬件包括CPU等都沒有做好把SSD當(dāng)做內(nèi)存來用的準(zhǔn)備。但隨著技術(shù)的進(jìn)步,這一點(diǎn)未來可能會(huì)有改觀。Intel已經(jīng)發(fā)布了一種存儲(chǔ)設(shè)備,該設(shè)備就像SSD,但同時(shí)又可以支持像內(nèi)存那樣隨機(jī)尋址。也許在未來我們的內(nèi)存也可以像SSD那樣,即使斷電內(nèi)容也不會(huì)丟失,那樣的話你的電腦就沒有“關(guān)機(jī)”這種操作了,電腦加電后根本就沒有“啟動(dòng)”一說,是不是很有趣。如果內(nèi)存和磁盤一樣斷電后也不丟內(nèi)容,那么會(huì)帶來什么有趣的新功能呢?歡迎大家在本文留言區(qū)討論這個(gè)問題。SSD能否當(dāng)做內(nèi)存來用?這絕不是一個(gè)簡單的問題,這涉及到CPU、操作系統(tǒng)、文件系統(tǒng)、存儲(chǔ)設(shè)備制造原理等方方面面的問題,你需要對計(jì)算機(jī)系統(tǒng)有透徹的理解才能回答好這個(gè)問題。最后,順便不吹牛的說一下,這個(gè)問題是小風(fēng)哥我自己想出來的
,就問你無聊不無聊。
瀏覽
21點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享
分享
舉報(bào)
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享
分享
舉報(bào)
男人天堂亚洲
|
在线亚洲人成电影网站色www
|
色五月婷婷小说
|
一 级毛片韩
|
日本高清视频一区二区三区
|