|
Basic Member
|
先回答問題: 是的,搬移檔案會用到記憶體。
完整的搬移動向為: 硬碟(來源) ---> 記憶體 --> 硬碟(目的地)。
兩個箭頭表示是透過 CPU 或 DMA Controller 或 SATA Controller 來處理搬移的工作。
(SATA 是不是叫 SATA Controller 我不清楚,但是都會有類似的晶片在做同樣的工作)
以下是漫長的補充:
在計算機架構發展的一開始,硬碟還只有 PIO (Programmed Input/Ouput) 模式,檔案在硬碟與記憶體之間的移動是靠 cpu 來執行的,因為當時 os 執行搬移檔案的工作是由一個常駐程式來執行,想當然爾,執行程式一定要透過 cpu。因此,pio模式會消耗大量的 cpu 資源不是沒有原因的。
接下來,發明的 DMA Controller,將搬移檔案的程式直接寫到一顆晶片裡面,檔案在硬碟跟記憶體間的移動就改靠它了。DMA Controller其實就是一個小型的 CPU,專門為搬移檔案而設計的 CPU,因此,執行起來比 pio 的方式快而且節省 CPU 資源。
那原本的 CPU 在這段期間要幹嘛呢? 可以是 Idel 狀態或是繼續作其他的運算。
但是,這邊有個問題,因為 DMA Controller 搬移檔案的時候還是需要使用到記憶體頻寬,所以如果這個時候 CPU 也在工作,當 CPU 要存取記憶體的時候,CPU 跟 DMA Controller 兩個是會打架的。原因如下:
電腦的使用可以分為兩種 1.消耗大量 CPU 運算能力 2.消耗 IO 存取能力。
當 1. 的動作要存取資料時,如果 2. 的工作還在執行,兩個就會在存取 RAM 的途中撞到。
以上的資料可以在計算機架構相關書籍得到。
|