緩衝存儲器
出自 MBA智库百科(https://wiki.mbalib.com/)
緩衝存儲器(Buffer Memory)
目錄 |
什麼是緩衝存儲器[1]
緩衝存儲器是指通過臨時存儲,能使數據在具有不同傳遞特性的兩個功能單元之間傳遞的專用存儲器或存儲區。
緩衝存儲器的結構[2]
緩存讀雙字指令的速度為120ns,記憶體的速度為1100ns,處理機的速度為150~300ns。緩存的速度比記憶體高一個數量級,同處理機的速度相匹配。這樣,緩存在處理機和記憶體之間起到了緩衝的目的。
處理機、緩存和記憶體形成了三級存儲結構,其關係如圖1所示。4KB緩存的緩存目錄有32個表目,對應緩存的0~31的列號,緩存目錄的表目分為兩個區,對應於緩存的兩個區0~1。這樣緩存中的每一塊都對應一個固定的表目。每個表目包括記憶體地址行號和狀態位,另外,兩區的每個表目對應一個標誌位。表目的記憶體地址行號表示緩存塊的內容所對應的記憶體地址所在的行。狀態位有三種:有效位、修改位、故障位。當有效位為1時,表示該表目對應的緩存塊中的數據已經是無效的:為0時,則對應是有效的。
當修改位為1時,表示該表目對應的緩存塊中的數據已經被修改過;為0時,則沒有修改過。
當故障位為1時,表示該表目對應的緩存塊有故障,否則無故障。標誌位表示最近訪問了兩區中的哪一區,以作為選擇淘汰塊使用。緩存目錄的結構形式如圖3所示。這樣,在編寫記憶體地址的時候,就可以用行號、列號、每塊的位元組數的格式來表示。例如,80386的編址形式為行號(17位),列號(10位),位元組數(5位)。
緩衝存儲器的工作原理[2]
由於處理機在進行讀取和寫入時,緩衝存儲器的工作過程不同,分別描述如下。
(1)讀取指令或數據。當處理機要讀取指令或數據時,緩存控制器就自動查找緩存目錄,以確定包含指令或數據的記憶體塊是否在緩存中。它是根據指令或數據地址的列號部分查找緩衝目錄表目的列號,然後把對應列號表目中分屬區0和區1的記憶體地址行號與指令或數據地址的行號部分進行比較。如果匹配,並且狀態位中的有效位為“0”,則把匹配表目所對應的緩存塊中的內容直接送給處理機,且把標誌位表示成對應塊最近已被訪問過。若兩個區的對應表目中的記憶體地址行號都不與之匹配,則說明該塊不在緩存。需要從記憶體中把該塊內容送給處理機,同時該塊內容也被送到緩存中的相應列的某塊內。
(2)寫入數據。當處理機要求寫入數據到某記憶體單元時,也是首先由緩存控制器查找緩存目錄,如包含此單元地址的記憶體塊已經在緩存中,則處理機把在緩存中的該塊內容加以寫入,並把緩存目錄中相應表目中的修改位置為“1”。這裡是不是直接寫入記憶體,有兩種方法:惰性方法和立即存方法。惰性方法是指數據寫入緩存時,不立即修改相應記憶體塊中的內容,而是直到該緩存塊中的內容被淘汰出緩存時,才把該緩存塊寫入記憶體相應塊中。立即存方法是指對緩存和記憶體的相應塊同時寫入。若該塊不在緩存中,則先把該塊從記憶體讀入緩存,然後再寫入緩存中。
(3)通道讀取指令或數據。當通道(I/0處理機)從記憶體讀取指令或數據時,則查找緩存目錄,假若包含該指令或數據地址的塊在緩存中,則從緩存中把該塊送往通道。若不在緩存中,則從記憶體讀出,但不把該塊放入緩存中。
(4)通道寫入數據。當通道向記憶體某單元寫入數據時,該數據只寫入記憶體中。但緩存控制部件同時查找緩存目錄。如果不在緩存中,則不進行任何操作。若該記憶體單元所在的塊在緩存中,則相應表目的狀態位中的有效位被置成“1”,使該數據塊無效。
緩衝存儲器的設置,使CPU所需的指令與數據絕大多數來自緩存,而不通過匯流排去訪問記憶體,避免了處理機的等待,大大提高了系統的吞吐率,是發揮處理機能力的有效方法。
- ↑ 緩衝存儲器.全國科學技術名詞審定委員會.
- ↑ 2.0 2.1 沈祥玖編著.操作系統原理及應用(Windows Server 2008).中國水利水電出版社,2011.03.