登錄

緩沖存儲器

百科 > 計算機(jī) > 緩沖存儲器

1.什么是緩沖存儲器[1]

  緩沖存儲器是指通過臨時存儲,能使數(shù)據(jù)在具有不同傳遞特性的兩個功能單元之間傳遞的專用存儲器或存儲區(qū)。

2.緩沖存儲器的結(jié)構(gòu)[2]

  緩存讀雙字指令的速度為120ns,內(nèi)存的速度為1100ns,處理機(jī)的速度為150~300ns。緩存的速度比內(nèi)存高一個數(shù)量級,同處理機(jī)的速度相匹配。這樣,緩存在處理機(jī)和內(nèi)存之間起到了緩沖的目的。

  處理機(jī)、緩存和內(nèi)存形成了三級存儲結(jié)構(gòu),其關(guān)系如圖1所示。
Image:處理機(jī)、緩存和內(nèi)存的關(guān)系.jpg
  緩沖存儲器由緩沖存儲器、緩存目錄和緩存控制器三部分構(gòu)成。通常緩沖存儲器和內(nèi)存都分為若干塊,我們以4KB的緩存為例,假設(shè)每塊的大小為64字節(jié),把緩存分為2個區(qū),每區(qū)2KB,每區(qū)有32個塊,同一區(qū)中的各塊用列號來表示,如圖2所示。
Image:4KB緩存的區(qū)塊形式.jpg

  4KB緩存的緩存目錄有32個表目,對應(yīng)緩存的0~31的列號,緩存目錄的表目分為兩個區(qū),對應(yīng)于緩存的兩個區(qū)0~1。這樣緩存中的每一塊都對應(yīng)一個固定的表目。每個表目包括內(nèi)存地址行號和狀態(tài)位,另外,兩區(qū)的每個表目對應(yīng)一個標(biāo)志位。表目的內(nèi)存地址行號表示緩存塊的內(nèi)容所對應(yīng)的內(nèi)存地址所在的行。狀態(tài)位有三種:有效位、修改位、故障位。當(dāng)有效位為1時,表示該表目對應(yīng)的緩存塊中的數(shù)據(jù)已經(jīng)是無效的:為0時,則對應(yīng)是有效的。

  當(dāng)修改位為1時,表示該表目對應(yīng)的緩存塊中的數(shù)據(jù)已經(jīng)被修改過;為0時,則沒有修改過。

  當(dāng)故障位為1時,表示該表目對應(yīng)的緩存塊有故障,否則無故障。標(biāo)志位表示最近訪問了兩區(qū)中的哪一區(qū),以作為選擇淘汰塊使用。緩存目錄的結(jié)構(gòu)形式如圖3所示。
Image:4KB緩存目錄的結(jié)構(gòu)形式.jpg
  同樣,內(nèi)存和緩存一樣也分成64字節(jié)的塊,每行有32列,大小為2KB,行號的大小由內(nèi)存的大小來確定。其形式如圖4所示。
Image:內(nèi)存的劃分形式.jpg

  這樣,在編寫內(nèi)存地址的時候,就可以用行號、列號、每塊的字節(jié)數(shù)的格式來表示。例如,80386的編址形式為行號(17位),列號(10位),字節(jié)數(shù)(5位)。

3.緩沖存儲器的工作原理[2]

  由于處理機(jī)在進(jìn)行讀取和寫入時,緩沖存儲器的工作過程不同,分別描述如下。

  (1)讀取指令或數(shù)據(jù)。當(dāng)處理機(jī)要讀取指令或數(shù)據(jù)時,緩存控制器就自動查找緩存目錄,以確定包含指令或數(shù)據(jù)的內(nèi)存塊是否在緩存中。它是根據(jù)指令或數(shù)據(jù)地址的列號部分查找緩沖目錄表目的列號,然后把對應(yīng)列號表目中分屬區(qū)0和區(qū)1的內(nèi)存地址行號與指令或數(shù)據(jù)地址的行號部分進(jìn)行比較。如果匹配,并且狀態(tài)位中的有效位為“0”,則把匹配表目所對應(yīng)的緩存塊中的內(nèi)容直接送給處理機(jī),且把標(biāo)志位表示成對應(yīng)塊最近已被訪問過。若兩個區(qū)的對應(yīng)表目中的內(nèi)存地址行號都不與之匹配,則說明該塊不在緩存。需要從內(nèi)存中把該塊內(nèi)容送給處理機(jī),同時該塊內(nèi)容也被送到緩存中的相應(yīng)列的某塊內(nèi)。

  (2)寫入數(shù)據(jù)。當(dāng)處理機(jī)要求寫入數(shù)據(jù)到某內(nèi)存單元時,也是首先由緩存控制器查找緩存目錄,如包含此單元地址的內(nèi)存塊已經(jīng)在緩存中,則處理機(jī)把在緩存中的該塊內(nèi)容加以寫入,并把緩存目錄中相應(yīng)表目中的修改位置為“1”。這里是不是直接寫入內(nèi)存,有兩種方法:惰性方法和立即存方法。惰性方法是指數(shù)據(jù)寫入緩存時,不立即修改相應(yīng)內(nèi)存塊中的內(nèi)容,而是直到該緩存塊中的內(nèi)容被淘汰出緩存時,才把該緩存塊寫入內(nèi)存相應(yīng)塊中。立即存方法是指對緩存和內(nèi)存的相應(yīng)塊同時寫入。若該塊不在緩存中,則先把該塊從內(nèi)存讀入緩存,然后再寫入緩存中。

  (3)通道讀取指令或數(shù)據(jù)。當(dāng)通道(I/0處理機(jī))從內(nèi)存讀取指令或數(shù)據(jù)時,則查找緩存目錄,假若包含該指令或數(shù)據(jù)地址的塊在緩存中,則從緩存中把該塊送往通道。若不在緩存中,則從內(nèi)存讀出,但不把該塊放入緩存中。

  (4)通道寫入數(shù)據(jù)。當(dāng)通道向內(nèi)存某單元寫入數(shù)據(jù)時,該數(shù)據(jù)只寫入內(nèi)存中。但緩存控制部件同時查找緩存目錄。如果不在緩存中,則不進(jìn)行任何操作。若該內(nèi)存單元所在的塊在緩存中,則相應(yīng)表目的狀態(tài)位中的有效位被置成“1”,使該數(shù)據(jù)塊無效。

  緩沖存儲器的設(shè)置,使CPU所需的指令與數(shù)據(jù)絕大多數(shù)來自緩存,而不通過總線去訪問內(nèi)存,避免了處理機(jī)的等待,大大提高了系統(tǒng)的吞吐率,是發(fā)揮處理機(jī)能力的有效方法。

評論  |   0條評論