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