2013-12-13 28 views
0

假設CPU緩存大小爲1MB。CPU緩存是否會加速寫入/讀取新文件?

  1. 我正在寫一個大小爲1 MB的新文件。 CPU緩存是否會通過逐塊緩存來加速寫入,然後刷新?
  2. 現在文件大小大於CPU高速緩存大小的情況下,比如2 MB。假設它可以緩存大小爲4kb的文件塊,CPU高速緩存是否會加速寫入它?
  3. 通過緩存第一個塊訪問後的文件塊,CPU高速緩存是否會因此加速讀取大小爲1GB的文件?

回答

0

讀取文件通常意味着程序調用系統調用等,並在其自己的地址空間中獲取請求數據的私有的可修改副本。

這是可能的,但不太可能將請求的數據緩存在內存中,並且內存反過來緩存在CPU上,並且副本實際上完全在緩存中發生。

更有可能是你記憶映射文件並從不同的進程訪問它。這將有助於利用緩存。寫入共享內存可以實現進程間通信,即使內存由文件提供支持,該文件根本可能也可能不會去到磁盤。緩存只存儲最近使用過的數據,所以只有當您保持訪問相同的1 MB(或不管它佔多少)時纔有效。

CPU緩存將無助於將數據寫入(刷新)到磁盤。磁盤按照定義比CPU要慢,所以它本質上是最薄弱的環節。

+0

如果我正在寫大小爲1kb的記錄,大小爲1MB的文件以及1 MB的CPU高速緩存,該怎麼辦?所以,如果文件被緩存在CPU中,寫入不能加速嗎?最初應該沒有緩存,但是在寫入第1條記錄之後,1MB文件可能會被緩存,隨後的寫入會非常快。這不可能嗎? – sapthrishi007

+0

@ sapthrishi007文件由操作系統管理,修改文件需要上下文切換到OS內核,除非它是內存映射的。即使數據存儲在CPU中,上下文切換也會導致性能下降。您對性能如何工作以及計算機內存似乎有點困惑。 – Potatoswatter