快取和緩衝區有什麼區別?

快取和緩衝區有什麼區別?

說快取是一種特殊的緩衝區正確嗎?它們都執行類似的功能,但是我缺少一些潛在的區別嗎?

答案1

來自維基百科的文章資料緩衝區:

緩衝區是物理記憶體儲存的一個區域,用於在資料從一個地方移動到另一個地方時暫時保存數據

A緩衝最終循環並保存從一個儲存位置傳輸到另一個儲存位置的每個資料(就像在音訊處理中使用循環緩衝區時一樣)。緩衝區就可以實現這一點 - 資料流中目前位置之前和之後的資料「緩衝區」。

事實上,緩衝區和快取有一些共同的面向。然而,傳統意義上的快取通常是不是當資料從一個地方移動到另一個地方時儲存所有資料(即CPU快取)。

的目的快取是以透明的方式儲存數據,這樣就可以快取足夠的數據,以便可以傳輸剩餘的數據而不會造成任何效能損失。在這種情況下,快取僅「預取」少量資料(取決於傳輸速率、快取大小等)。

主要區別在於緩衝區最終將保存所有資料。相反,快取可能保存了全部、部分資料或不保存任何資料(取決於設計)。但是,存取快取就像您首先直接存取資料一樣 - 到底快取的內容對於快取的「使用者」來說是透明的。


差別在於介面。當您使用快取存取資料來源時,您可以像使用快取一樣使用它資料來源 - 您可以透過快取存取資料來源的每個部分,並且快取將確定資料來自哪裡(快取本身,或來源)。快取本身決定預先載入資料的哪些部分(通常只是開始,但有時是全部),而快取替換演算法使用中決定了從快取中刪除什麼/何時刪除。最好的例子就是一個系統,除了CPU快取本身就是預取器/預讀。兩者都將他們認為您最常使用的資料部分加載到記憶體中,如果未快取某些內容,則恢復到硬碟。

相反,緩衝區不能用於立即移動資料流中的位置,除非新部分已經移動到緩衝區。為此,需要重新定位緩衝區(假定新位置超出緩衝區長度),這實際上要求您從新位置「重新啟動」緩衝區。最好的例子是移動 Youtube 影片中的滑塊。

緩衝區的另一個很好的例子是在 Winamp 中播放音訊。由於音訊檔案需要由 CPU 解碼,因此從讀入歌曲到處理音訊再到將其發送到音效卡之間需要一些時間。 Winamp 將緩衝一些音頻數據,以便有足夠的音頻數據已處理以避免任何“鎖定”(即 CPU 總是在準備您將在幾百毫秒內聽到的音頻,它從來都不是實時的) ;你聽到的來自於緩衝區,這是CPU過去準備的)。

答案2

更準確的說法是,快取是緩衝區的一種特定使用模式,這意味著相同資料的多次使用。大多數使用「緩衝區」意味著資料將在單次使用後耗盡或丟棄(儘管情況不一定如此),而「快取」則意味著資料將重複使用多次。快取通常也意味著資料在同時使用時被存儲,儘管情況不一定如此(如預取等),而緩衝意味著資料被儲存以供以後使用。

然而,在實作和使用方面肯定存在很大的重疊。

答案3

快取和緩衝區之間的一個重要區別是:

緩衝區是主記憶體的一部分。它們是存在於主記憶體 (RAM) 中並可存取的結構。

另一方面,快取是電腦記憶體層次結構中的獨立物理記憶體。

緩衝區有時也稱為緩衝區快取。這個名字強調了buffer的用途和cache類似,即儲存資料。而區別在於其使用的上下文。

緩衝區用於暫時儲存數據,同時將數據從一個物件移動到另一個物件。例如:當影片從網路移動到我們的電腦時,顯示緩衝區用於儲存接下來要顯示的視訊幀。 (這會提高 QoS,因為影片在成功緩衝過程後會順利運行。)EX: 另一個例子是我們將資料寫入檔案時的情況。新寫入的資料不會立即複製到輔助記憶體。所做的變更儲存在緩衝區中,然後根據設計的策略,將變更反映回輔助記憶體(硬碟)中的檔案。

另一方面,高速緩存用於主記憶體和處理器之間,以彌補 RAM 和處理器執行速度之間的差距。此外,最常存取的資料也儲存在快取中,以減少對 RAM 的存取。

答案4

共同點:兩者都是運算和「主」儲存之間的中間資料儲存元件(軟體或硬體)。

對我來說,差別如下:

緩衝:

  • 手把順序的存取資料(例如從檔案或套接字讀取/寫入資料)
  • 啟用計算和主存儲之間的接口,適應數據生產者和數據消費者的不同數據傳輸模式。例如,計算寫入小塊數據,但磁碟機只能接受特定大小的資料塊。因此,緩衝區累積小塊作為輸入,並將它們重新組合成更大的輸出區塊。
  • 所以它就像一個適配器設計模式。它連接兩個不能直接互通的互動元件。
  • 範例:磁碟緩衝區、Java語言中的BufferedReader、電腦圖形學中的duffing。

快取:

  • 手把隨機的存取資料(例如,CPU 快取快取非必需順序排列的記憶體行)。
  • 最佳化存取主存儲,使其速度更快。例如,CPU 快取避免存取內存,從而使 CPU 命令更快。
  • 它就像一個裝飾者設計模式。它連接(通常是透明的)兩個互動元件,原則上可以直接互動操作,但它使互動速度更快。
  • 範例:CPU 快取、頁面快取、Web 代理、瀏覽器快取。

相關內容