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

白衣縱馬


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


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

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

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

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

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


虛擬內存的應用

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

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

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


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

1.數據處理延時的問題

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

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

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

2.數據讀寫速度測試

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

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

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


大內存的其他用處

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

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

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


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

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



極客談科技


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

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

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

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

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

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



藍博格爾


我舉個簡單的例子:

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

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

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

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

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

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


從耗子胖成豬


速度問題,硬盤的速度相對於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完全可以去幹別的流程了(多線程或多進程)。


藍鳥啃蘋果


因為CPU速度非常快,現在的CPU都是GHz的頻率,就連內存都跟不上CPU的速度,所以才會有一級緩存,二級緩存,三級緩存,內存,硬盤這種結構,每一級都比上一級更慢,CPU也不是直接讀取內存的數據,主要還是用的自己的緩存,當緩存裡面沒有的時候才會把內存裡的數據加載到緩存裡,當內存沒有的時候就把硬盤裡的數據加載到內存裡


魅力小婷姐她二哥


固態硬盤讀取速度就算pcie通道的M.2接口讀取速度也只有1.5GB/s,而內存存取速度最低也是20GB/s以上,4通道DDR4內存可以達到60GB/s速度,這個差別顯而易見了吧。內存的特點就是速度快空間小,硬盤是空間大速度慢,這兩個配件就是各有用途,計算機架構不變的話,這兩個都會存在。


用戶86262


因為 CPU 不是塊設備,而硬盤是塊設備。讀出一個比如4k的塊是沒有什麼用的,它得把一個4k塊讀到內存中再按32位指令一條條處理。在嵌入式系統中,CPU 的確是直接在 NOR Flash 中片上執行的,因為 NOR Flash 是字符設備,而 NAND Flash 並不支持片上執行,就是因為它也是塊設備,SSD 固態般通常就是 NAND Flash。


用戶5531801333752


最快的固態盤對比DDR4內存來說也是慢幾倍的存在,cpu如果與硬盤直接通訊,肯定會有很高的延遲,這就是原因


Vade


這個問題值得研究,你說cpu是鑷子取好呢?還是是吸管?


分享到:


相關文章: