專利名稱:控制包含直接映射高速緩沖存儲器和完全聯(lián)系緩沖器的高速緩沖存儲器系統(tǒng)的方法
技術(shù)領域:
本發(fā)明涉及一種用于控制高速緩沖存儲器系統(tǒng)的方法,所述的高速緩沖存儲器系統(tǒng)是用于減少中央處理單元CPU的訪問時間,更具體地說,涉及一種用于控制由直接映射的(direct-mapped)高速緩沖存儲器和完全聯(lián)系的(fullyassociative)緩沖器構(gòu)成的高速緩沖存儲器系統(tǒng)自適應地使用時間局域性(locality)和空間局域性。
背景技術(shù):
如圖1中所示,由于基于CPU對指令或數(shù)據(jù)的請求而對存儲器的訪問時間會造成相當?shù)难舆t,所以需要一種按照一定次序安排的存儲器體系,在所述的次序中,CPU訪問來自該體系中不同的存儲器的數(shù)據(jù)。參考圖1,CPU訪問存儲器的次序是按照寄存器10、高速緩沖存儲器系統(tǒng)11、主存儲器12、磁盤13、和磁帶14的次序。在此,具有最快訪問時間的寄存器10被指定為最高層次級別,而具有最慢訪問時間的磁帶14被指定為最低層次級別。
在上述的存儲器之中,高速緩沖存儲器系統(tǒng)11是在訪問主存儲器12之前先被訪問的,所以,其結(jié)構(gòu)和控制方法會顯著影響CPU的執(zhí)行速度和功率消耗。高速緩沖存儲器系統(tǒng)11被設計使用局域性原理。
局域性分為空間局域性和時間局域性??臻g局域性是指鄰近的或附近的存儲器位置將一次被緊密地一起引用的趨勢。時間局域性是指被檢索過一次的數(shù)據(jù)不久將被再次檢索的可能性。
高速緩沖存儲器系統(tǒng)通過保留最近引用過的數(shù)據(jù)而使用時間局域性,通過每當發(fā)生未命中(miss)時取出多個字作為高速緩沖存儲器塊而使用空間局域性。當高速緩沖存儲器容量固定時,這兩種用于優(yōu)化每類局域性的方法是彼此相反的。這是因為,塊尺寸的增加與高速緩沖存儲器塊的數(shù)目成反比。所以,隨著塊尺寸的增加,更多與被訪問的存儲器地址鄰近的數(shù)據(jù)被復制到高速緩沖存儲器系統(tǒng)中。在這種情況中,由于高速緩沖存儲器塊數(shù)目的減少,數(shù)據(jù)塊在高速緩沖存儲器系統(tǒng)中就駐留得更短了。這樣,如果高速緩沖存儲器系統(tǒng)的存儲容量在預定的級別上是固定的,隨著塊尺寸的增加,高速緩沖存儲器系統(tǒng)就具有更高的空間局域性,但具有較低的時間局域性。反之,隨著塊尺寸的減小,高速緩沖存儲器系統(tǒng)就具有較低的空間局域性,但具有較高的時間局域性。
為了盡量減小上述的沖突,已經(jīng)建議了一種包括兩種高速緩沖存儲器存儲器的高速緩沖存儲器系統(tǒng),所述的兩種高速緩沖存儲器存儲器是被分別控制的。根據(jù)傳統(tǒng)的高速緩沖存儲器控制方法,使用了復雜的機制來利用兩種局域性,例如,使用了局域性預測表、編譯器、局域性檢測單元、預取(prefetch)、等等的方法。這些傳統(tǒng)的高速緩沖存儲器控制方法具有的問題是,它們需要高設計復雜性和高硬件成本。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明的一個目的是提供一種由不同結(jié)構(gòu)的兩種高速緩沖存儲器組成的高速緩沖存儲器系統(tǒng)及其控制方法,以使用每種類型的局域性,來減小未命中率和功率消耗。
相應地,為實現(xiàn)上述目的,本發(fā)明提供了一種用于控制高速緩沖存儲器系統(tǒng)的方法,所述的高速緩沖存儲器系統(tǒng)被構(gòu)成為用小塊尺寸配置的直接映射高速緩沖存儲器和用大塊尺寸配置的完全聯(lián)系的空間緩沖器。通過選擇地將候選的小塊高速緩沖存儲到直接映射的高速緩沖存儲器中來使用時間局域性。使用大取出尺寸來增強空間局域性。用于時間局域性的選擇機制是基于用于選擇將要存儲到直接映射的高速緩沖存儲器中的塊的時間間隔的。代替將每一個未命中的塊直接放置到直接映射的高速緩沖存儲器中的是,這種方法將包括未命中小塊的大塊放置到完全聯(lián)系的空間緩沖器中。然后,根據(jù)先進先出(FIFO)算法,當大塊從完全聯(lián)系聯(lián)系的空間緩沖器中被替換的時候,未命中的塊被移動到直接映射的高速緩沖存儲器中。
當在直接映射的和完全聯(lián)系的空間緩沖器中都發(fā)生未命中時,由相對應的小塊組組成的大塊被放到空間緩沖器中。如果在直接映射的高速緩沖存儲器中引用未命中,但在空間緩沖器中命中了,則從空間緩沖器中取出其相對應的小塊并設置其命中比特。使用這種命中比特,能夠使高速緩沖存儲器系統(tǒng)選擇地確定顯示時間局域性的那些塊。這樣,數(shù)據(jù)會在直接映射高速緩沖存儲器中駐留一個長的時段,所以,時間局域性增加了,因此減小了未命中率和功率消耗。
圖1是根據(jù)一種次序而安排的存儲器體系的方框圖,按照所述的次序,中央處理單元CPU訪問該體系中不同的存儲器;圖2示出了應用根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的結(jié)構(gòu)的方框圖;圖3是根據(jù)本發(fā)明的用于控制圖2的高速緩沖存儲器系統(tǒng)的方法的流程圖;圖4分別示出了victim(犧牲)高速緩沖存儲器系統(tǒng)根據(jù)其自己的高速緩沖存儲器控制方法的未命中率和根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的未命中率的圖;圖5分別示出了victim高速緩沖存儲器系統(tǒng)根據(jù)其自己的高速緩沖存儲器控制方法的平均訪問時間和根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的平均訪問時間的圖;圖6分別示出了victim高速緩沖存儲器系統(tǒng)根據(jù)其自己的高速緩沖存儲器控制方法的標準化(normalized)的功率消耗和根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的標準化的功率消耗的圖;圖7示出了應用了根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的其它結(jié)構(gòu)的方框圖。
具體實施例方式
參考圖2,應用了根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng),是由直接映射的高速緩沖存儲器21和完全聯(lián)系的空間緩沖器22組成的。直接映射的高速緩沖存儲器21包括數(shù)據(jù)存儲單元211和控制比特存儲單元212。配置數(shù)據(jù)存儲單元211使被中央處理單元CPU(未示出)訪問的數(shù)據(jù)被存儲在8字節(jié)的小塊SUB中。響應從地址總線201輸入的索引(index)信號DMI,控制比特存儲單元212為每個小塊SUB存儲一組比特,即1位有效比特V、1位臟(dirty)比特D、和n-位標記(tag)比特T。比較器203檢查通過地址總線201從CPU輸入的標記信號DMT的值是否存在于控制比特存儲單元212的標記T中,并產(chǎn)生一個訪問結(jié)果信號DMH,用于指示對直接映射高速緩沖存儲器21的訪問是命中的還是未命中的。通過控制總線(未示出)將訪問結(jié)果信號DMH輸入到CPU。復用器204選擇地向直接映射高速緩沖存儲器21的數(shù)據(jù)存儲單元211輸入來自數(shù)據(jù)總線202的8字節(jié)的數(shù)據(jù)字DW中的一個數(shù)據(jù)字DW和來自完全聯(lián)系的空間緩沖器22的小塊220、221、222、和223的8字節(jié)的數(shù)據(jù)字DW。
配置完全聯(lián)系的空間緩沖器22使被CPU訪問的地址的數(shù)據(jù)和鄰近地址的數(shù)據(jù)被存儲在由四個小塊,即小塊220、221、222、和223組成的一個32字節(jié)的大塊中。響應通過地址總線201從CPU輸入的標記信號SBT,在完全聯(lián)系的空間緩沖器22中的內(nèi)容可尋址存儲器CAM 227,為大塊220、221、222、和223產(chǎn)生一位有效比特V 226,并為每個小塊220、221、222、和223產(chǎn)生一位臟比特D 225和一位命中比特H 224。與門505檢查在內(nèi)容可尋址存儲器227中產(chǎn)生的地址是否有效,并產(chǎn)生一個訪問結(jié)果信號SBH,該訪問結(jié)果信號SBH用于指示對完全聯(lián)系的空間緩沖器22的訪問是命中的或是未命中的。通過控制總線,將訪問結(jié)果信號SBH輸入到CPU。
通過經(jīng)由復用器207發(fā)布每個存儲器條(bank)使能信號BE,來自地址總線201的兩位偏移(offset)控制信號SBO,選擇地使能(enable)小塊220、221、222、和223的輸入和輸出。而且,通過復用器206,來自數(shù)據(jù)總線202或來自諸如主存儲器之類的從屬存儲器的8字節(jié)數(shù)據(jù)字DW,被輸入到選擇地被使能的小塊220、221、222、和223中。
現(xiàn)在,將參考圖2和圖3來描述用于根據(jù)本發(fā)明控制高速緩沖存儲器系統(tǒng)的方法。
首先,通過基于來自CPU的寫請求的寫操作或基于來自CPU的讀請求的讀操作,在相同級別上并行訪問直接映射的高速緩沖存儲器21和完全聯(lián)系的空間緩沖器22(步驟S301)。然后,進行關于對直接映射的高速緩沖存儲器21的訪問是否命中的檢查(步驟S302)。如果對直接映射的高速緩沖存儲器21的讀訪問是命中的(步驟S303),讀出的數(shù)據(jù)被發(fā)送到CPU(步驟S315)以終止該過程。如果對直接映射的高速緩沖存儲器21的寫訪問是命中的(步驟S303),設置直接映射的高速緩沖存儲器21中被訪問的小塊SUB的臟位D(步驟S304),以終止該過程。
另一方面,伴隨著對直接映射的高速緩沖存儲器21的訪問,同時,進行關于對完全聯(lián)系的空間緩沖器22的訪問是否是命中的檢查(步驟S305)。如果對完全聯(lián)系的空間緩沖器22的讀訪問是命中的(步驟S306),則設置被訪問的每個小塊220、221、222或223的命中比特H3、H2、H1或H0(步驟S314),并將讀出的數(shù)據(jù)發(fā)送到CPU(步驟S315),從而終止該過程。如果對完全聯(lián)系的緩沖器22的寫訪問是命中的(步驟S306),則設置用于被訪問的每個小塊220、221、222或223的臟比特D3、D2、D1或D0以及命中比特H3、H2、H1或H0(步驟S307和步驟S314),從而終止該過程。在完全聯(lián)系的空間緩沖器中的任何臟小塊220、221、222、或223的寫回(write back)不能在完全聯(lián)系的空間緩沖器中直接發(fā)生,因為任何修改的或引用的小塊220、221、222、或223,在被替換之前,總是復制在直接映射的高速緩沖存儲器21中。
如果對直接映射的高速緩沖存儲器21和完全聯(lián)系的空間緩沖器22的訪問都是未命中的,則進行關于在完全聯(lián)系的空間緩沖器22中是否存在空大塊220、221、222、和223的檢查(步驟S308)。在此,如果在完全聯(lián)系的空間緩沖器22中設置了所有有效比特V226的狀態(tài),則在那里就不存在空大塊220、221、222、和223。如果沒有設置有效比特226中的一個的狀態(tài),則在完全聯(lián)系的空間緩沖器22中就存在一個空大塊220、221、222、和223。
根據(jù)先進先出(FIFO)算法,如果在完全聯(lián)系的空間緩沖器22中存在一個空大塊220、221、222、和223,就將大數(shù)據(jù)塊復制到在完全聯(lián)系的空間緩沖器22中的空大塊220、221、222、和223(步驟S313)。然后,設置用于被訪問的每個小塊220、221、222、或223的命中比特H3、H2、H1、或H0(步驟S314)。在此,在讀操作的情況下,讀出的數(shù)據(jù)被發(fā)送到CPU(步驟S315)。
另一方面,根據(jù)FIFO算法,如果在完全聯(lián)系的空間緩沖器22中不存在空大塊220、221、222、和223,則進行關于在大塊220、221、222、和223之中是否存在被訪問的一個小塊220、221、222、或223數(shù)據(jù)的檢查,所述的大塊220、221、222、和223是根據(jù)FIFO算法將要從完全聯(lián)系的空間緩沖器22中擠出去的數(shù)據(jù)的(步驟S309)。在步驟S309中,如果在小塊220、221、222、和223的命中比特H3、H2、H1、和H0中的至少一個被設置,則確定相對應的小塊數(shù)據(jù)已經(jīng)被訪問過到了。同樣,根據(jù)FIFO算法,在主存儲器中的大塊數(shù)據(jù)被復制到完全聯(lián)系的空間緩沖器22中的空大塊220、221、222、和223中(步驟S313)。然后,設置被訪問的小塊220、221、222、或223數(shù)據(jù)的命中比特H3、H2、H1、和H0(步驟S314)。在此,在讀操作的情況下,讀出的數(shù)據(jù)被發(fā)送給CPU(步驟S315)。
如果在步驟S309中存在小數(shù)據(jù)塊,則進行關于將要從直接映射的高速緩沖存儲器中擠出的小塊數(shù)據(jù)SUB是否已經(jīng)被直接寫入到直接映射的高速緩沖存儲器21的檢查(步驟S310)。在步驟S310中,如果設置了相對應的小塊SUB的臟比特D,則小塊數(shù)據(jù)SUB被確定為已直接寫入到直接映射的高速緩沖存儲器21中(見步驟S307)。如果存在被直接寫入到直接映射的高速緩沖存儲器21中的小塊數(shù)據(jù)SUB,則將小塊數(shù)據(jù)SUB復制到主存儲器中,所述的主存儲器是從屬存儲器(步驟S311)。
而且,將已經(jīng)被訪問的小塊220、221、222、或223數(shù)據(jù)復制到直接映射的高速緩沖存儲器21中(步驟S312)。然后,根據(jù)FIFO算法,將大數(shù)據(jù)塊復制到完全聯(lián)系的空間緩沖器22中的空大塊220、221、222、或223中(步驟S313)。然后,被訪問的小塊220、221、222、或223數(shù)據(jù)的命中比特H3、H2、H1、和H0在被訪問的同時而被設置(步驟S314)。在此,在讀操作的情況下,讀出的數(shù)據(jù)被發(fā)送到CPU(步驟S315)。
圖4分別示出了victim高速緩沖存儲器系統(tǒng)根據(jù)其自己的高速緩沖存儲器控制方法的未命中率和根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的未命中率。圖5分別示出了victim高速緩沖存儲器系統(tǒng)根據(jù)其自己的高速緩沖存儲器控制方法的平均訪問時間和根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的平均訪問時間。圖6分別示出了victim高速緩沖存儲器系統(tǒng)根據(jù)其自己的高速緩沖存儲器控制方法的標準化的功率消耗和根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的標準化的功率消耗。Go、tomcatv、gcc、ijpeg、compress、applu、vortex、和m88ksim表示具有用于模擬的不同的時間局域性和空間局域性的不同的基準程序。
在victim高速緩沖存儲器系統(tǒng)中,直接映射的高速緩沖存儲器和victim緩沖器在塊的尺寸上的配置相同。參考數(shù)411、421、431、441、451、461、471、481、491、511、521、531、541、551、561、571、581、和591表示一個victim高速緩沖存儲器系統(tǒng)的圖,所述的victim高速緩沖存儲器系統(tǒng)包括一個直接映射的高速緩沖存儲器和一個victim緩沖器,每個都具有8字節(jié)的塊。參考數(shù)412、422、432、442、452、462、472、482、492、512、522、532、542、552、562、572、582、和592表示一個victim高速緩沖存儲器系統(tǒng)的圖,所述的victim高速緩沖存儲器系統(tǒng)包括一個直接映射的高速緩沖存儲器和一個victim緩沖器,每個都具有16字節(jié)的塊。參考數(shù)413、423、433、443、453、463、473、483、493、513、523、533、543、553、563、573、583、593、611、621、631、641、651、661、671、681、和691表示一個victim高速緩沖存儲器系統(tǒng)的圖,所述的victim高速緩沖存儲器系統(tǒng)包括一個直接映射的高速緩沖存儲器和一個victim緩沖器,每個都具有32字節(jié)的塊。參考數(shù)414、424、434、444、454、464、474、484、494、514、524、534、544、554、564、574、584、594、612、622、632、642、652、662、672、682、和692表示根據(jù)本發(fā)明的高速緩沖存儲器系統(tǒng)的圖,根據(jù)本發(fā)明的高速緩沖存儲器系統(tǒng)包括圖2的直接映射的高速緩沖存儲器21和圖2的完全聯(lián)系的空間緩沖器22,直接映射的高速緩沖存儲器21具有圖2的8字節(jié)的小塊SUB,完全聯(lián)系的空間緩沖器22具有圖2的32字節(jié)的大塊220、221、222、和223。如圖4、圖5和圖6中所示,應用了根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)與傳統(tǒng)的victim高速緩沖存儲器系統(tǒng)相比,具有低的未命中率、低的平均訪問時間、和低的功率消耗。
圖7示出了應用了根據(jù)本發(fā)明的高速緩沖存儲器控制方法的高速緩沖存儲器系統(tǒng)的其它結(jié)構(gòu)的方框圖。圖7中與圖2的參考數(shù)字相同的參考數(shù)表示相同的組成部分。參考數(shù)字AG表示地址發(fā)生器,228表示復用器,209表示反相器,以及232表示與門。圖7的高速緩沖存儲器存儲器子系統(tǒng)除了具有用于下面描述的預取模式的附加特征之外,與圖2的系統(tǒng)相似的。
在預取模式的情況中,如果與大塊相對應的預取比特P仍然是復位狀態(tài)(reset),則當在完全聯(lián)系的空間緩沖器22的任何存儲器條中出現(xiàn)命中,且已經(jīng)設置了與其大塊SUB3、SUB2、SUB1和SUB0相對應的命中比特H3、H2、H1、和H0之中的至少一個時,就啟動預取操作。同時,為預取地址而找尋空間緩沖器的標記以檢查其是否已經(jīng)存在。如果該地址不在于空間緩沖器中,預取控制器208產(chǎn)生預取信號PFS和目標地址PFA,以便將大塊從從屬存儲器取出放到預取緩沖器231。并且,還設置產(chǎn)生預取信號的大塊的預取比特P。這個預取比特P的主要目的是阻止預取控制器208找尋已經(jīng)使用的大塊。也就是說,如果設置了大塊的預取比特P,則隨后的大塊(即,預取目標塊)必須存在于完全聯(lián)系的空間緩沖器22或預取緩沖器231之中。所以,不必找尋完全聯(lián)系的空間緩沖器22的標記是否存在。
而且,在預取模式中,當設置了多個命中比特時,預取控制器208就產(chǎn)生預取信號。然后,由預取控制器208連續(xù)地執(zhí)行兩個操作。第一個操作是當存儲在完全聯(lián)系的空間緩沖器22中的第1個大塊的命中出現(xiàn)時,找尋完全聯(lián)系的空間緩沖器22的標記部分,以便檢測第(1+1)個大塊是否已經(jīng)存在于完全聯(lián)系的空間緩沖器22中。在這中情況中,存在一個周期的損失(penalty),但是,這種開銷是可以忽略的,因為,預取只啟動(initiate)由CPU產(chǎn)生的地址總數(shù)的大約1.5%-2.5%。這樣,平均MCPI(每條指令的存儲器周期)增加大約0.06%。如果第(1+1)個大塊不存在于完全聯(lián)系的空間緩沖器22中,則執(zhí)行第二個操作將第(1+1)個大塊預取到預取緩沖器231中。如果在直接映射的高速緩沖存儲器21和完全聯(lián)系的空間緩沖器22中都發(fā)生了未命中,高速緩沖存儲器控制器就啟動其未命中處理過程。在產(chǎn)生這種未命中處理時,已經(jīng)在預取緩沖器231中的塊被發(fā)送到完全聯(lián)系的空間緩沖器22。所以,發(fā)送時間可以被完全掩蓋,因為,有大量的時間來執(zhí)行這種塊移動,即,19個時鐘周期用于處理一個未命中。
圖7的系統(tǒng)具有由用戶選擇確定的兩種模式,也就是說,非預取模式和預取模式。預取模式保證了以低開銷的更多的性能增加。在每次存儲器訪問中,都同時訪問直接映射的高速緩沖存儲器21和完全聯(lián)系的空間緩沖器22。下面將解釋用于該操作模型的不同情況。在非預取模式中,或者在預取模式中,如果在直接映射的高速緩沖存儲器21中發(fā)現(xiàn)有小塊(例如,8字節(jié)的塊尺寸),則操作就與任何傳統(tǒng)的高速緩沖存儲器命中一樣。將請求的數(shù)據(jù)項無延遲地發(fā)送到CPU。在非預取模式中,或者在預取模式中,當存儲器地址由CPU產(chǎn)生時,就用一些地址比特從完全聯(lián)系的空間緩沖器22中的一些存儲器條之中選擇一條。如圖7中那樣,作為一個設計例子,如果小塊的尺寸是8字節(jié)且大塊的尺寸是32字節(jié),則存儲器條的數(shù)目就假定為四。使用最多兩位的大塊偏移來使能完全聯(lián)系的空間緩沖器22中的四條存儲器條中的一條。這樣,通過每次只使能一條存儲器條就可以減少功率消耗。在這種情況下,一條存儲器條的塊尺寸就是8字節(jié),且等于直接映射的高速緩沖存儲器21中的塊的尺寸。每條存儲器條的所有小塊的項目(entry)都有一個命中比特,以檢查大塊之中的特定的小塊先前是否已經(jīng)被引用過或未被引用過。如果在完全聯(lián)系的空間緩沖器22中出現(xiàn)命中,那么,那個小塊的命中比特就變成置位的,以將其標記為已被引用過的塊。
在預取模式的情況下,如果與大塊相對應的預取比特P仍然是復位狀態(tài),則當在完全聯(lián)系的空間緩沖器22的任何存儲器條中出現(xiàn)命中,且已經(jīng)設置了與其大塊相對應的一個或多個命中比特時,就啟動預取操作。同時,為預取地址而找尋完全聯(lián)系的空間緩沖器22的標記以檢查其是否已經(jīng)存在。如果該地址不在完全聯(lián)系的空間緩沖器22中,預取控制器208產(chǎn)生預取信號和目標地址PFS,以便將大塊從從屬存儲器取出放到預取緩沖器231。并且,還設置產(chǎn)生預取信號的大塊的預取比特P。這個預取比特P的主要目的是阻止預取控制器208找尋已經(jīng)使用的大塊。也就是說,如果設置了大塊的預取比特P,則隨后的大塊(即,預取目標塊)必須存在于完全聯(lián)系的空間緩沖器22或預取緩沖器231之中。所以,不必找尋完全聯(lián)系的空間緩沖器22的標記是否存在。每當兩種高速緩沖存儲器都未命中時,那么,在高速緩沖存儲器控制器處理該未命中時,就將大塊從預取緩沖器231裝載到完全聯(lián)系的空間緩沖器22中。
如果完全聯(lián)系的空間緩沖器22是滿的,就將最舊的大塊替換掉。將在將要被擠出的大塊中的設置了命中比特的每個小塊裝載到直接映射的高速緩沖存儲器21中,因為,這些塊被標記象顯示了時間局域性一樣。通過將未命中的塊發(fā)送到完全聯(lián)系的空間緩沖器22所占用的時間而掩蓋了這種裝載時間。最終,如果在執(zhí)行預取操作時兩種高速緩沖存儲器都未命中,那么,在正在進行的預取操作完成之后,就出現(xiàn)未命中處理過程。并且,將預取的塊的所有命中比特都設置為零。
在非預取模式中,或者在預取模式中,如果在直接映射的高速緩沖存儲器21中和完全聯(lián)系的空間緩沖器22中都發(fā)生了未命中,就將包括未命中的小塊的大塊從從屬存儲器提出放到完全聯(lián)系的空間緩沖器22中。選擇了一個例子,使得小塊尺寸為8字節(jié),且大塊尺寸為32字節(jié),并且,這些隨后的四個小塊屬于一個32字節(jié)的大塊的范圍。有兩種情況被認為是依賴于完全聯(lián)系的空間緩沖器22滿與不滿。如果在完全聯(lián)系的空間緩沖器22中至少一個項目是處于無效狀態(tài),那么,就取出一個大塊,并將其存儲到完全聯(lián)系的空間緩沖器22中。當特定的小塊被CPU訪問時,則將相對應的命中比特標記為1。這樣,該小塊的命中比特將其標識為被引用過的塊。完全聯(lián)系的空間緩沖器22具有FIFO替換策略。如果完全聯(lián)系的空間緩沖器22是滿的,則替換最舊的項目。然后,在設置了命中比特的項目中,塊被移動到直接映射的高速緩沖存儲器21中。通過選擇地增加小塊的存在時間(lifetime)這些操作得以使用時間局域性。而且,這種機制減少了沖突未命中和反復(thrashing)效應。因為,這些操作是在高速緩沖存儲器控制器處理未命中時完成的,所以這種操作不會引入任何額外的延遲。
下面將說明在直接映射的高速緩沖存儲器21和完全聯(lián)系的空間緩沖器22之間的移動操作。當在直接映射的高速緩沖存儲器21(例如,具有8字節(jié)的塊尺寸的8千字節(jié)(KB)的高速緩沖存儲器尺寸)中產(chǎn)生諸如0000 00000000 0000 0000 0000 1000 0000之類的一個存儲器地址時,其標記段是19位,其索引段T為10位,以及偏移段為3位。所以,其標記值、索引值、和偏移值分別為000 0000 0000 0000 0000,00 0001 0000和000。在完全聯(lián)系的空間緩沖器22(例如,具有32字節(jié)的塊尺寸的1KB的高速緩沖存儲器尺寸)中,其標記段是27位,以及偏移段為5位。所以,完全聯(lián)系的空間緩沖器22的標記值為000 0000 0000 0000 0000 0000 0001,而偏移的高端(high order)兩位是00。同樣,這些比特分別被用于找尋那四條存儲器條。如果在直接映射的高速緩沖存儲器21中和在完全聯(lián)系的空間緩沖器22中都發(fā)生了未命中,那么,就取出與偏移的最高(most significant)兩位(例如,11、10、01、00比特)相對應的數(shù)據(jù),并且,只設置四個小塊的第一塊的命中比特。當替換了在完全聯(lián)系的空間緩沖器22中的這個大塊,并且,如果第一小塊的命中比特是被設置的唯一的一個,那么,就通過地址發(fā)生器AG,將與第一小塊相對應的比特00加到完全聯(lián)系的空間緩沖器22的標記值中。所以,通過再解碼的過程,就形成了無偏移的新存儲器地址,以及分別產(chǎn)生直接映射的高速緩沖存儲器21的相對應的標記值000 0000 0000 0000 0000和索引值00 00010000。在完全聯(lián)系的空間緩沖器22中不會直接發(fā)生高速緩沖存儲器寫回,因為,在其大塊被替換之前,任何修改的或引用的小塊總是被移動到直接映射的高速緩沖存儲器21中。即使只有一個字需要寫回,也必須用32字節(jié)的塊尺寸,來執(zhí)行用于傳統(tǒng)直接映射的高速緩沖存儲器或具有相同取出塊尺寸(例如,32字節(jié))的victim高速緩沖存儲器的一個寫回操作。相反,SMI高速緩沖存儲器僅對帶標記的8字節(jié)的小塊執(zhí)行這種寫回操作。所以減少了向存儲器的寫入流量。
工業(yè)應用如上所述,根據(jù)本發(fā)明的高速緩沖存儲器控制方法,在將要從完全聯(lián)系的空間緩沖器中被擠出去的大塊數(shù)據(jù)之中的被訪問的小塊數(shù)據(jù)被復制到直接映射的高速緩沖存儲器中。命中比特信息的使用,使得高速緩沖存儲器系統(tǒng)選擇地確定顯示出時間局域性強的那些小塊。該高速緩沖存儲器控制方法利用了關于小塊的使用情況的命中比特信息,所述的小塊是在與空間緩沖器中的入口的數(shù)目成比例的時間間隔期間獲得的。相應地,通過在保持空間局域性的同時增加時間局域性,就增加了數(shù)據(jù)數(shù)據(jù)駐留于直接映射的高速緩沖存儲器中的持續(xù)時間,因此減少了高速緩沖存儲器系統(tǒng)的未命中率和功率消耗。
雖然已經(jīng)參考本發(fā)明的優(yōu)選實施例具體地顯示和描述了本發(fā)明,那些本領域技術(shù)人員應當理解,在不偏離由所附權(quán)利要求所限定的本發(fā)明的實質(zhì)和范圍的前提下,可以進行各種形式上和細節(jié)上的改變。
權(quán)利要求
1.一種用于控制高速緩沖存儲器系統(tǒng)的方法,其中,是由用小塊尺寸配置的一個直接映射的(direct-mapped)高速緩沖存儲器、和由多個小塊組成的用大塊尺寸配置的一個完全聯(lián)系的(fully associative)空間緩沖器來構(gòu)成該高速緩沖存儲器系統(tǒng),該方法包括步驟(a)如果對直接映射的高速緩沖存儲器和完全聯(lián)系的空間緩沖器的訪問未命中,則根據(jù)先進先出(FIFO)算法,將被訪問地址的數(shù)據(jù)和鄰近地址的數(shù)據(jù)復制到完全聯(lián)系的緩沖器中的大塊中;以及(b)如果在步驟(a)中,以前被訪問的一個或多個小塊,存在于將要從完全聯(lián)系的空間緩沖器中擠出的大塊數(shù)據(jù)之中,就將被訪問的相對應的小塊復制到直接映射的高速緩沖存儲器中。
2.一種用于控制高速緩沖存儲器系統(tǒng)的方法,其中,是由用小塊尺寸配置的一個直接映射的高速緩沖存儲器、和由多個小塊組成的用大塊尺寸配置的一個完全聯(lián)系的空間緩沖器來構(gòu)成該高速緩沖存儲器系統(tǒng),該方法包括步驟(a)如果對直接映射的高速緩沖存儲器和完全聯(lián)系的緩沖器的訪問未命中,則檢查在完全聯(lián)系的緩沖器中是否存在一個空的大塊;(b)如果在步驟(a)中存在空的大塊,則執(zhí)行(c7);(c)如果在步驟(a)中不存在空的大塊,則執(zhí)行步驟(c1)至(c7);(c1)檢查已被直接寫入完全聯(lián)系的空間緩沖器中的小數(shù)據(jù)塊是否存在于它的根據(jù)先進先出(FIFO)算法將要被擠出的相對應的大數(shù)據(jù)塊中;(c2)如果已被直接寫入完全聯(lián)系的空間緩沖器中的小數(shù)據(jù)塊,存在于屬于它的將要被擠出的大數(shù)據(jù)塊中,則將相對應的小數(shù)據(jù)塊復制到直接映射的高速緩沖存儲器中;(c3)檢查已被訪問的小塊數(shù)據(jù)是否存在于根據(jù)FIFO算法將要被擠出的大塊數(shù)據(jù)之中;(c4)如果存在被訪問的小塊數(shù)據(jù),則檢查是否將要被擠出的小塊數(shù)據(jù)已被直接寫入直接映射的高速緩沖存儲器中;(c5)如果將要被擠出的小塊數(shù)據(jù)已被直接寫入直接映射的高速緩沖存儲器中或完全聯(lián)系的緩沖器中;則將將要被擠出的小塊數(shù)據(jù)復制到主存儲器中;(c6)將確定在步驟(c3)中已被訪問的小塊數(shù)據(jù)復制到直接映射的高速緩沖存儲器中;以及(c7)根據(jù)FIFO算法,將在步驟(a)中訪問的地址的數(shù)據(jù)和在大塊中的鄰近的地址的數(shù)據(jù)復制到完全聯(lián)系的緩沖器中。
全文摘要
提供了一種控制高速緩沖存儲器系統(tǒng)的方法。該高速緩沖存儲器系統(tǒng)被組織成為用小塊尺寸配置的直接映射的(direct-mapped)高速緩沖存儲器、和由多個小塊組成的大塊尺寸配置的完全聯(lián)系的(fully associative)空間緩沖器。在此,如果對直接映射的高速緩沖存儲器和完全聯(lián)系的緩沖器的訪問未命中,則根據(jù)先進先出(FIFO)算法,將被訪問地址的數(shù)據(jù)和鄰近地址的數(shù)據(jù)復制到完全聯(lián)系的空間緩沖器中的大塊中。而且,如果以前被訪問的一個或多個小數(shù)據(jù)塊,存在于它的將要從完全聯(lián)系的緩沖器中擠出的相對應的大塊數(shù)據(jù)之中,就將被訪問的小塊復制到直接映射的高速緩沖存儲器中。
文檔編號G06F12/08GK1429366SQ01809523
公開日2003年7月9日 申請日期2001年5月16日 優(yōu)先權(quán)日2000年5月16日
發(fā)明者金新德, 李政勛 申請人:三星電子株式會社, 金新德, 李政勛