計算機的CPU為什麼不直接調取硬盤文件,而是要先載入到內存中?

白衣縱馬


因為硬盤的速度實在是太慢了,尤其是機械硬盤作為電腦中唯一一快還在使用機械原理運作的設備,速度自然跟不上CPU和內存這些半導體芯片,但是機械硬盤發展這麼多年,數據相對穩定可靠,而且容量大成本低,不得不使用機械硬盤存取數據。但是為了彌補硬盤速度的缺陷,所以就設計了內存用來作為CPU和硬盤數據連接的中轉站。

內存使用的是DRAM顆粒,是一種易失性存儲器,它無法像硬盤那樣可以長久的保存數據,而且斷電也不會丟失,但是DRAM內存的速度非常快,可以說僅次於CPU內部的高速緩存,這樣每當CPU需要調取數據時就會通過硬盤把數據先傳輸到內存,這樣CPU直接在高速內存中調取數據,這樣可以大大降低CPU的等待時間,也彌補了機械硬盤的速度缺陷。

如果CPU直接從機械硬盤調取數據文件的話看似減少了中間環節,但是硬盤較慢的速度會嚴重拖累CPU的性能,無論多強的CPU都需要等待硬盤數據才行,這個傳輸環節消耗的時間非常多,直接造成CPU性能發揮不出來,性能下降。

即使是現在流行的固態硬盤,其NADA閃存顆粒持續傳輸速度也不過500mb/s,相比機械硬盤大大降低了小文件讀寫延遲,但是仍然比起DDR4內存動輒2000mhz以上的頻率差距甚遠,所以未來很長一段時間內仍然需要內存才能保證電腦性能的正常發揮。


嘟嘟聊數碼


原因其實很簡單,但是原理很複雜,要理解起來也不是有多難,最早期的時候CPU為了加快讀寫處理數據,會設計cpu緩存作為一種解決方案,但是隨著技術的進步如果單純的增加CPU的緩存這樣會大大增加製造成本,並且會增加CPU的面積,因此才會使用了內存的解決方案,這樣可以大大降低製造成本並且可以提升電腦性能的靈活性。



我們知道CPU的時鐘頻率是非常高的其處理數據的速度是非常快的,需要不斷地讀寫其需要的數據,如果單獨的等待硬盤去給其送數據那將是一種災難性的後果,就是現在的計算機性能可以低到幾百分之一去,再這樣的處理速度之下,估計計算機的性能水平得倒退好多年去。因此為了加快數據的處理讀寫,就要有一種介質能夠充當快速讀寫的功能,又要性價比高,這個時候內存的誕生的確是很好的解決了成本和速度問題,因為我們經常調用的數據不會像外村那樣大,他只需要再電腦啟動之後存放應用程序必須得一些指令數據,而其他的數據可以不必全部放到內存當中,這樣既能滿足需要還能降低成本。


因此這也就構成了現在計算機的基本組成架構,但是如果有一天硬盤的讀寫以及延遲可以達到內存的速度或許硬盤會直接將其中一部分直接開啟作為內存去應用,從而可以讓內存消失,並且可以隨機的通過設置內存大小,動態調整。


程序小崔


如此簡單的問題,被懂科技的人攪成一桶漿糊。外行更是丈二和尚摸不著頭腦。

CPU儘管功能強大,但它只負責運算,沒有記錄運算結果的功能。因此,電腦一關,它就是一塊廢鐵,裡面什麼也沒有。就象中國的算盤一樣,算盤打完,拎起一甩,就什麼也沒有了。早期最簡單的電腦只有CPU,也就是那種兒童玩具電腦,只有CPU,沒有內存,當然更沒有外存,即各種硬盤、軟盤、光盤等。

為了能讓CPU做複雜一些的工作,人們就想出來為CPU提供一個舞臺、或者叫工作平臺,就是內存啦。就象為一個能幹的工程師提供一張寬敞的辦公桌一樣,於是,CPU與內存就成為了最佳搭檔,進行各種複雜的操作。電腦電腦,實際上是指它們倆。CPU工作時,它只認內存,從不分心,不管你有多麼豐富的外部存儲裝備(硬盤、光盤、移動硬盤),它理都不理你。

於是,你想,很多應用軟件就只能呆在硬盤裡。沒叫到你,你就永遠呆硬盤裡,沒有出頭的日子。只有要用到你這款軟件時,你才有資格進駐內存,以便聽任CPU擺佈。

不過,這種搭配方式帶來一個意外收穫,即如果不料斷電了,CPU和內存裡就什麼也沒有了,成了一堆廢鐵。而你按裝的應用軟件仍舊完好無損,它們藏身在硬盤裡,大不了重新啟動後再次運行它罷了。

所以,從原理結構上說,CPU只對內存進行操作,對硬盤是不聞不問的。有些技術能把硬盤劃出一塊視其為擴展內存,那是另說,不在此題範圍之內。



藍博格爾


這就像我們要從三樓下到一樓,還得走電梯或樓梯(緩存或內存),直接跳下去重力加速度將導致事故。反過來一步登天,CPU向硬盤要數據卻遲遲加載不到,並不符合程序邏輯。

具體原因有二:

①這是系統運行機制使然,內存是臨時存儲空間,硬盤作為永久存儲空間,如果以內存處理的數據要求硬盤,那後者根本忙不過來,壽命也將大大降低。

②儘管固態硬盤比機械硬盤快很多,但仍然跟不上內存的速度,與CPU的差距更是天上地下,如果沒有內存作為緩衝中轉站,將直墜千里、跌停宕機。

從根本上說,硬盤作為物理存儲介質,存取速度遠慢於電子信號處理速度,這決定CPU不能從硬盤直接存取數據。(現今CPU二三級緩存越來越大,這才是提高電腦性能的重點。)

從各種軟件測試數據也可直觀看出,CPU緩存速度動輒100GB/s,內存讀寫超過10GB/s,PCIe固態硬盤突破3GB/s,機械硬盤僅0.2GB/s,其中4K小文件2MB/s。

▲內存是程序不可缺少的中介,正由於斷電易失性,壽命才會長久。

以前內存容量小而金貴,不得不在硬盤上劃出頁面文件,即通過虛擬內存機制,把一些暫時不處理的數據臨時轉移到硬盤上。這也是更換固態硬盤後,電腦運行變快的原因之一。

現在大內存單條已達32GB,雖然容量仍遠小於硬盤,速度卻是硬盤永遠無法取代的,內存仍是電腦程序運行最好的場所。


奇客


閃存,固態硬盤,或者機械硬盤,對於計算機來說都屬於永久性存儲介質,內存則是易失性存儲介質。

你打開word,隨便打幾個字,斷開電腦電源,然後重新開機,你隨便打的幾個字不見了,因為它保存在內存中,斷電後就丟失了。但你的word還能用,因為word.exe文件保存在硬盤中,斷電後它還在。

硬盤和內存的主要區別在於是否能永久存儲,另一個區別是硬盤大而慢,內存小而快,硬盤便宜內存貴。下面是機械、固態和內存的速度對比,數值肯定有差異,但數量級的差異一目瞭然。






另外說一句題外話,其實現在CPU一般不會從內存讀文件,而是使用CPU緩存,它比內存更快更小也更貴。當然cache也是易失性的。



在文件讀取的過程中,一般是從磁盤讀取到內存,從內存放入緩存。然後供CPU使用。這個有點像我們看書,比如我手頭有本大英百科全書(磁盤),查找資料時,我先翻到第100頁(內存),這時候因為內存太小,放不下整本書,其他頁面的數據並不在內存中。然後我找到相關的條目(緩存)。同樣因為大小的限制,緩存中只有條目相關的上下文,並不會整頁整頁的存放數據。

至於為什麼要這樣,其實僅僅是因為價格的原因。速度越快的存儲介質,容量越小,價格越貴。如果不考慮價格因素,同時保證內存永不斷電。理論上來說,完全使用內存代替磁盤是可以的,而且速度會快很多。


RealAlexander


我舉個簡單的例子:

你從廣州去北京,一般的行程就是:

你在廣州機場坐飛機,飛到北京機場,然後下飛機,坐車前去目的地。

而你的提問就好像是這樣:

為什麼要先上飛機再下飛機坐車呢?我直接坐車到北京目的地不就好了嗎?

而這個問題關鍵點也在於此:硬盤的容量雖然很大,但它的讀取、寫入速度遠遠比不上內存。所以電腦把需要反覆調用的數據載入內存,可以避免反覆讀取硬盤造成的時間浪費。

在這裡,內存就好比起到了“飛機”的作用。你說繞開飛機,直接開車到北京去,這個也是可行的,但只會更慢而不會更快。例如以前電腦的內存容量不足,需要使用硬盤空間“虛擬內存”,這種情況就跟你說的直接硬盤調取文件差不多。


從耗子胖成豬


硬盤和內存雖然都是存儲數據的,可是在計算機系統裡有著本質的區別。

一般來說計算機系統必須有的幾大部件,CPU,存儲器,輸入輸出設備。

內存在計算機系統屬於存儲器,而硬盤在計算機系統裡只是個外部設備,所以我們的PC沒有內存的話根本就不能啟動,而沒有硬盤的PC,照樣啟動,只是不能運行操作系統。

CPU 有三個總線,數據總線,地址總線,和控制總線。

簡單點,比如說計算機系統CPU地址總線有1000個地址,0-900分配給內存,901分配給硬盤,902分配給鍵盤,903分配給顯卡,等等。按照CPU的設計加電覆位後,先從地址0讀取指令,執行,再讀地址1執行,再讀地址2執行,一直連續的讀取下去,這裡可以看出程序的執行是按照地址一步步進行的,而這裡硬盤的讀寫就只能對地址901的重複讀寫操作,不能作為存儲器運行程序的。


陳仙7


速度問題,硬盤的速度相對於cpu就是蝸牛對火箭的差異。這樣顯然不能讓cpu等硬盤,那麼解決的辦法就是cpu發出指令,讓dma系統將數據從硬盤中讀取到內心裡,這期間cpu去幹別的事去了。但是內存的速度相對於cpu依然是飛機與火箭的差異。這個時候還需要cpu的內部存管系統將內存的部分內容按照一定規律放到它的L3,L2乃至L1緩存中去。這個時候cpu才開始去理這些數據。如果L1中沒有就到L2中去找,L2中沒有再到L3中去找,L3中還沒有才到內存中去找。中間增加了這麼多複雜的步驟,就是為了讓cpu多幹活,匹配速度之差。


Jagen在路上


含簡單的,處理器的速度非常快,如果讓CPU直接去處理每個字節沒什麼毛病,但是我們的存儲太慢了,最快的家用ssd最近好像才突破4GB/s(在強調一下家用的),一般我們的家用機械硬盤能上100MB/s就比較不錯了。因為cpu處理的速度和存儲性能之間有巨大差距,這個差距遠遠超過瘋狂動物城裡面那段兔子找樹懶查車牌那段了,如果讓CPU取直接處理存儲的數據CPU要等了,那麼我們的電腦就會呈現假死的狀態了。所以在一個處理器執行流程中需要什麼數據先告訴協處理器(例如:sata控制器)裡先把數據放到內存,等數據都正確讀取完畢了之後告訴CPU去執行,這樣在協處理器處理數據的期間,我們的CPU完全可以去幹別的流程了(多線程或多進程)。


藍鳥啃蘋果


“極客談科技”,全新視角、全新思路,伴你遨遊神奇的科技世界。


暫且不討論硬件組成結構上的問題,我們單從數據的傳輸速度來討論一下這個問題。

  • 硬盤當做內存使用,也並不是沒有這方便的操作,例如電腦中的虛擬內存;

  • 電腦的虛擬內存,僅能夠在一定程度上緩解內存的壓力,無法真正實現內存的傳輸速度。

先來了解一下什麼是虛擬內存,再看看硬盤和內存之間的差距究竟有多大。

(文後還有其他應用的彩蛋贈送哦!)


虛擬內存的應用

虛擬主要是用來緩解系統內存不足的一種方法,將內存無法處理的數據調入硬盤某個空間。

  • 虛擬內存的作用主要是緩解內存壓力,無法真正的替代內存;

  • 電腦若使用超大的內存組合,完全可以取消虛擬內存的設置。


硬盤與內存數據傳輸之間的差距

1.數據處理延時的問題

電腦的各個設備部件之間的延時可以參考下表:

  • 延時從高到底的排列,依次是機械硬盤、固態硬盤、內存、CPU;

  • 從數據的反應速度上來看,內存明顯要優於硬盤。

2.數據讀寫速度測試

固態硬盤的測試數據可以參看下圖:

內存的測試數據可以參看下圖:

從測試數據可以看出,兩者之間的讀寫速度根本不在同一個數量級之上,差距相當巨大。


大內存的其他用處

  • 硬盤當做內存使用,並不是一個好的建議;

  • 但是卻可以將內存當做硬盤使用,從而體驗更快的傳輸速度。

這裡就需要通過使用RamDisk軟件來實現,敢興趣的大內存用戶可以下載試用。


關於計算機直接調用硬盤,取消內存的做法,您怎麼看?

歡迎大家留言討論,喜歡的點點關注。



分享到:


相關文章: