專利名稱:帶有高速緩沖存儲(chǔ)器的數(shù)據(jù)處理器的制作方法
高速緩沖存儲(chǔ)器通常用于加速主存儲(chǔ)器中的數(shù)據(jù)存取。各個(gè)高速緩沖存儲(chǔ)器單元可被用作大量主存儲(chǔ)器存儲(chǔ)單元中選定某個(gè)單元的位置標(biāo)志符。當(dāng)主存儲(chǔ)器地址被指定存取數(shù)據(jù)時(shí),高速緩沖存儲(chǔ)器要確定一個(gè)能用作主存儲(chǔ)器存儲(chǔ)單元位置標(biāo)志符的高速緩沖存儲(chǔ)器單元,主存儲(chǔ)器存儲(chǔ)單元由主存儲(chǔ)器地址進(jìn)行編址。高速緩沖存儲(chǔ)器單元相繼地用于替代主存儲(chǔ)器存儲(chǔ)單元。
從主存儲(chǔ)器地址中確定出高速緩沖存儲(chǔ)器單元被稱為地址映射。高速緩沖存儲(chǔ)器使用的地址映射類型是高速緩沖存儲(chǔ)器一項(xiàng)重要的設(shè)計(jì)參數(shù)。在完全關(guān)聯(lián)高速緩沖存儲(chǔ)器、成組關(guān)聯(lián)高速緩沖存儲(chǔ)器和直接映射高速緩沖存儲(chǔ)器分別使用了不同類型的地址映射方式。完全關(guān)聯(lián)高速緩沖存儲(chǔ)器包括地址映射單元,它能將每個(gè)主存儲(chǔ)器地址(或存儲(chǔ)塊地址)映射到任意高速緩沖存儲(chǔ)器存儲(chǔ)單元(或存儲(chǔ)單元塊)上。對(duì)于一個(gè)給定的主存儲(chǔ)器地址,這要求地址映射單元要確定哪個(gè)(即使有的話)高速緩沖存儲(chǔ)器單元目前正與主存儲(chǔ)器地址相關(guān)聯(lián)。為實(shí)現(xiàn)這一目的,映射單元必須能夠?qū)崿F(xiàn)代價(jià)較高的關(guān)聯(lián)存儲(chǔ)器功能,這種存儲(chǔ)器具有降低存取速度的可能。
另一方面,在直接映射高速緩沖存儲(chǔ)器中,無(wú)法選擇對(duì)于哪個(gè)高速緩沖存儲(chǔ)器單元去對(duì)應(yīng)于一個(gè)主存儲(chǔ)器地址即給定的主存儲(chǔ)器地址只能映射到唯一的高速緩沖存儲(chǔ)器存儲(chǔ)單元上。因而,直接高速緩沖存儲(chǔ)器中的地址映射單元可以輕易地確定所需要的高速緩沖存儲(chǔ)器存儲(chǔ)單元。然而,當(dāng)高速緩沖存儲(chǔ)器存儲(chǔ)單元已為另一個(gè)主存儲(chǔ)器地址所使用時(shí),那么這個(gè)另外的主存儲(chǔ)器地址所對(duì)應(yīng)的數(shù)據(jù)—即使數(shù)據(jù)還有用—也必需從高速緩沖存儲(chǔ)器中被刪除。與完全關(guān)聯(lián)高速緩沖存儲(chǔ)器能夠存儲(chǔ)任意主存儲(chǔ)器地址組合中的數(shù)據(jù)的特點(diǎn)相比,這正是其弱勢(shì)所在。
成組關(guān)聯(lián)高速緩沖存儲(chǔ)器是直接映射高速緩沖存儲(chǔ)器和完全關(guān)聯(lián)高速緩沖存儲(chǔ)器之間的折衷方案。成組關(guān)聯(lián)高速緩沖存儲(chǔ)器使用了高速緩沖存儲(chǔ)器存儲(chǔ)單元組(每個(gè)組都比整個(gè)高速緩沖存儲(chǔ)器要小得多)。各個(gè)存儲(chǔ)器地址都對(duì)應(yīng)一個(gè)組。主存儲(chǔ)器地址可與高速緩沖存儲(chǔ)器存儲(chǔ)單元相應(yīng)組中的任意高速緩沖存儲(chǔ)器存儲(chǔ)單元相關(guān)聯(lián)。這種做法一方面易于從主存儲(chǔ)器地址中確定高速緩沖存儲(chǔ)器存儲(chǔ)單元,因?yàn)殛P(guān)聯(lián)存儲(chǔ)器功能只能在主存儲(chǔ)器地址對(duì)應(yīng)組中實(shí)現(xiàn)。另一方面,數(shù)據(jù)必須從高速緩沖存儲(chǔ)器中被移除的機(jī)會(huì)要遠(yuǎn)少于直接映射高速緩沖存儲(chǔ)器,因?yàn)榭梢栽诮M內(nèi)選擇存儲(chǔ)器單元,以便主存儲(chǔ)器地址組合中的數(shù)據(jù)可在組中存儲(chǔ)。
完全關(guān)聯(lián)高速緩沖存儲(chǔ)器、成組關(guān)聯(lián)高速緩沖存儲(chǔ)器和直接映射高速緩沖存儲(chǔ)器的差別在于相同存儲(chǔ)器地址使用的可替換高速緩沖存儲(chǔ)器存儲(chǔ)單元的數(shù)目不同。這個(gè)數(shù)目是固定的設(shè)計(jì)參數(shù),完全關(guān)聯(lián)高速緩沖存儲(chǔ)器、成組關(guān)聯(lián)高速緩沖存儲(chǔ)器直接映射高速緩沖存儲(chǔ)器中的這個(gè)參數(shù)依次減小。該數(shù)目越大,需要從高速緩沖存儲(chǔ)器中移除有用數(shù)據(jù)給新數(shù)據(jù)騰出空間的次數(shù)就越少。然而,增大這個(gè)數(shù)目也會(huì)增加高速緩沖存儲(chǔ)器的復(fù)雜性,降低存取速度。因而,在高速緩沖存儲(chǔ)器設(shè)計(jì)中折衷選擇該數(shù)目是至關(guān)重要的。
該發(fā)明的一個(gè)目的是增進(jìn)高速緩沖存儲(chǔ)器中地址映射的效率。
該發(fā)明的第二個(gè)目的是在折衷選擇為相同存儲(chǔ)地址使用的可替換高速緩沖存儲(chǔ)器存儲(chǔ)單元的數(shù)目時(shí)進(jìn)行優(yōu)化。
該發(fā)明的另一個(gè)目的是在不妨礙高速緩沖存儲(chǔ)器其它方面使用的情況下實(shí)現(xiàn)高速緩沖存儲(chǔ)器的實(shí)時(shí)使用,尤其是借助于確保流高速緩沖存儲(chǔ)器的實(shí)時(shí)操作,在相同高速緩沖存儲(chǔ)器中將通用高速緩沖存儲(chǔ)器配置與流高速緩沖存儲(chǔ)器機(jī)制的聯(lián)合應(yīng)用,這是本發(fā)明的又一目的。
按本發(fā)明的數(shù)據(jù)處理器在權(quán)利要求1中詳細(xì)說(shuō)明。像在成組關(guān)聯(lián)映射中一樣,該數(shù)據(jù)處理器要限制主存儲(chǔ)器地址與高速緩沖存儲(chǔ)器存儲(chǔ)單元之間的關(guān)聯(lián)數(shù)目,其中高速緩沖存儲(chǔ)器存儲(chǔ)單元需要考慮以確定應(yīng)被訪問(wèn)的高速緩沖存儲(chǔ)器存儲(chǔ)單元。對(duì)一組關(guān)聯(lián)限定關(guān)聯(lián)搜索,就像成組關(guān)聯(lián)映射中限定到一組一樣。在各組中,關(guān)聯(lián)映射可以實(shí)現(xiàn)分配給該組的任意高速緩沖存儲(chǔ)器存儲(chǔ)單元的映射。但是,與成組關(guān)聯(lián)映射相比,高速緩沖存儲(chǔ)器存儲(chǔ)單元被動(dòng)態(tài)地分配給該組。這樣,被分配的存儲(chǔ)器單元數(shù)目要依據(jù)被執(zhí)行的程序或部分程序確定。該數(shù)目至少要在0和非零的高速緩沖存儲(chǔ)器單元數(shù)目間變化。
通過(guò)改變組大小,映射可適應(yīng)程序需要而無(wú)需高速緩沖存儲(chǔ)器單元的額外開(kāi)銷。處理器執(zhí)行的程序動(dòng)態(tài)地選擇(即在程序執(zhí)行過(guò)程中)哪些以及有多少存儲(chǔ)器地址要被包含在各組關(guān)聯(lián)關(guān)系中。因而,對(duì)于那些存儲(chǔ)器地址而言,高的高速緩沖存儲(chǔ)器的性能是有保證的。例如,如果一組中可被同時(shí)關(guān)聯(lián)的主存儲(chǔ)器地址數(shù)目等于某個(gè)特定實(shí)時(shí)任務(wù)所需的地址數(shù)目,那么高速緩沖存儲(chǔ)器的實(shí)時(shí)響應(yīng)就能得到保證。在一個(gè)程序(部分程序)中,主存儲(chǔ)器地址被映射到一組的某些高速緩沖存儲(chǔ)器存儲(chǔ)單元中;在另一個(gè)程序中,主存儲(chǔ)器地址則被映射到另一組高速緩沖存儲(chǔ)器地址中。
在按發(fā)明的一種處理器實(shí)施例中,處理器被用于從被反復(fù)計(jì)算的主存儲(chǔ)器地址(例如按固定的地址步長(zhǎng)隔開(kāi))中預(yù)取或?qū)懸还苫蚨喙蓴?shù)據(jù)流。任意時(shí)刻只有以前曾使用過(guò)的流中的地址窗口可在后面繼續(xù)使用。這些流的地址使用第一組被映射,而其它的地址由其它組映射。通過(guò)將大量高速緩沖存儲(chǔ)器存儲(chǔ)單元分配給足夠保存窗口中所有地址關(guān)聯(lián)關(guān)系的第一組,可以避免從可再次使用的流中替換數(shù)據(jù)的需要。剩余組可以使用成組關(guān)聯(lián)映射,即主存儲(chǔ)器地址直接被映射到剩余組之一上。
當(dāng)處理器從被反復(fù)計(jì)算的主存儲(chǔ)器地址中預(yù)取或?qū)懚喙蓴?shù)據(jù)項(xiàng)流時(shí),各股數(shù)據(jù)流均有它的自身的一組流的地址與被分配給該組的高速緩沖存儲(chǔ)器存儲(chǔ)單元間的關(guān)聯(lián)。剩余高速緩沖存儲(chǔ)器存儲(chǔ)單元用成組關(guān)聯(lián)映射存取。因此,高速緩沖存儲(chǔ)器存儲(chǔ)單元可以基于“需要”被分配給不同流而剩余高速緩沖存儲(chǔ)器存儲(chǔ)單元可被用于非流地址。
使用存儲(chǔ)器存取指令的組要根據(jù)指令內(nèi)容,利用指令基礎(chǔ)即指定一股流進(jìn)行選擇,該指令應(yīng)明確地指出何種類型的地址映射可被用于存取指令的操作數(shù)或結(jié)果?;蛘?,指令可以指出借助其它指令使用的地址映射類型,例如通過(guò)指定使用一種特定類型的地址映射的主存儲(chǔ)器地址范圍或組。前一種方法更為靈活,而后一種方法需要的指令開(kāi)銷較少。
使用的一組高速緩沖存儲(chǔ)器存儲(chǔ)單元通常不可能在其它組中使用。當(dāng)不屬于任何流的主存儲(chǔ)器地址使用了成組關(guān)聯(lián)映射時(shí),從組中移除高速緩沖存儲(chǔ)器地址會(huì)降低該組的效率。支持某股流的組使用的高速緩沖存儲(chǔ)器地址優(yōu)先地從成組關(guān)聯(lián)映射所用的不同組中均勻地選擇。這樣可以避免出現(xiàn)某些組中可替換的高速緩沖存儲(chǔ)器地址較其它組中可替換的高速緩沖存儲(chǔ)器地址少得多的現(xiàn)象。這樣使用成組關(guān)聯(lián)映射對(duì)高速緩沖存儲(chǔ)器替換的需求降低到最小。
在按發(fā)明的另一種處理器實(shí)施側(cè)中,對(duì)包含在不同組中的高速緩沖存儲(chǔ)器存儲(chǔ)單元需要進(jìn)行不同的高速緩沖存儲(chǔ)器替換判定。如果有新的主存儲(chǔ)器地址必須映射到高速緩沖存儲(chǔ)器存儲(chǔ)單元上,但又沒(méi)有可用的空閑的高速緩沖存儲(chǔ)器存儲(chǔ)單元時(shí),那么一定要進(jìn)行替換。這種情況下,必須要選定一個(gè)高速緩沖存儲(chǔ)器存儲(chǔ)單元以便能被新的主存儲(chǔ)器地址再次使用,但付出的代價(jià)是犧牲了映射到高速緩沖存儲(chǔ)器存儲(chǔ)單元上的老主存儲(chǔ)器地址。一種已為熟知的解決方案是重新使用最近曾被使用過(guò)的高速緩沖存儲(chǔ)器存儲(chǔ)單元。
按本發(fā)明的數(shù)據(jù)處理器的這些和其它的優(yōu)點(diǎn)將借助下列附圖進(jìn)行說(shuō)明,且不加限定。
圖1表示了帶高速緩沖存儲(chǔ)器的數(shù)據(jù)處理器。
圖2表示了用于流存取的完全關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元。
圖1給出的數(shù)據(jù)處理器包括處理單元10,主存儲(chǔ)器12和高速緩沖存儲(chǔ)器單元14。高速緩沖存儲(chǔ)器單元14包括高速緩沖存儲(chǔ)器140,高速緩沖存儲(chǔ)器控制單元146,以及包括了第一和第二地址映射子單元142、144的地址映射單元141。處理單元10具有一地址輸出和高速緩沖存儲(chǔ)器機(jī)制選擇輸出被連接到地址映射單元142、144和高速緩沖存儲(chǔ)器控制單元146上。地址映射單元142、144和高速緩沖存儲(chǔ)器控制單元有一高速緩沖存儲(chǔ)器地址輸出被連接到高速緩沖存儲(chǔ)器140上。地址映射單元142、144有一高速緩沖存儲(chǔ)器丟失處理接口被連接到高速緩沖存儲(chǔ)器控制單元146上。高速緩沖存儲(chǔ)器控制單元有一主存儲(chǔ)器地址輸出被連接到主存儲(chǔ)器12上。主存儲(chǔ)器12有一數(shù)據(jù)輸出被連接到高速緩沖存儲(chǔ)器140上。
在操作中,結(jié)合隱含或顯含的信息,處理單元10所執(zhí)行的程序致使處理單元給正在讀或正在寫(xiě)的數(shù)據(jù)分配主存儲(chǔ)器地址,該信息用于指出該主存儲(chǔ)器地址所使用的高速緩沖存儲(chǔ)器地址映射單元142、144。信號(hào)從地址映射單元142、144中選出一個(gè)合適的地址映射單元,它要能夠確定是否高速緩沖存儲(chǔ)器140中有對(duì)應(yīng)該地址的數(shù)據(jù)存在。如果存在,相應(yīng)的高速緩沖存儲(chǔ)器地址會(huì)被檢索,并被提供給高速緩沖存儲(chǔ)器140。高速緩沖存儲(chǔ)器140將該地址對(duì)應(yīng)的數(shù)據(jù)提供給處理單元10作為響應(yīng)。
高速緩沖存儲(chǔ)器控制單元146要確定哪個(gè)高速緩沖存儲(chǔ)器存儲(chǔ)單元被第一地址映射單元142所映射。該操作要在程序控制下進(jìn)行。處理器中執(zhí)行的程序會(huì)指出還有多少高速緩沖存儲(chǔ)器存儲(chǔ)單元需要用第一地址映射單元進(jìn)行映射。因此,高速緩沖存儲(chǔ)器控制單元選擇足夠數(shù)量的存儲(chǔ)單元,給高速緩沖存儲(chǔ)器映射單元發(fā)信號(hào)明確選中的存儲(chǔ)單元,以便主存儲(chǔ)器地址可以被映射到這些存儲(chǔ)單元上。高速緩沖存儲(chǔ)器控制單元146包括(例如)適于編程使用的微控制器核心,用以實(shí)現(xiàn)上述功能。
當(dāng)然,高速緩沖存儲(chǔ)器映射單元142、144的數(shù)目可以任意,各個(gè)映射單元都有各自動(dòng)態(tài)選定的一組高速緩沖存儲(chǔ)器地址,高速緩沖存儲(chǔ)器映射單元會(huì)將主存儲(chǔ)器地址映射到其上。
如果有關(guān)主存儲(chǔ)器地址的信號(hào)被發(fā)送給高速緩沖存儲(chǔ)器映射單元142、144,而且選定的地址映射單元142、144不能檢測(cè)出與主存儲(chǔ)器地址對(duì)應(yīng)的數(shù)據(jù)是否存在于高速緩沖存儲(chǔ)器140中,那么高速緩沖存儲(chǔ)器中有丟失主存儲(chǔ)器地址的可能。地址映射單元142、144將有關(guān)高速緩沖存儲(chǔ)器丟失的信號(hào)發(fā)送給高速緩沖存儲(chǔ)器控制單元146。高速緩沖存儲(chǔ)器控制單元146將主存儲(chǔ)器地址提供給主存儲(chǔ)器12,以便為該地址取該數(shù)據(jù)。高速緩沖存儲(chǔ)器控制單元要為該地址選擇一個(gè)高速緩沖存儲(chǔ)器映射單元142、144。高速緩沖存儲(chǔ)器控制單元146還要從被分配給高速緩沖存儲(chǔ)器映射單元146的高速緩沖存儲(chǔ)器地址中選擇一個(gè)該數(shù)據(jù)的高速緩沖存儲(chǔ)器地址。來(lái)自主存儲(chǔ)器12的數(shù)據(jù)被存儲(chǔ)在已選定的高速緩沖存儲(chǔ)器地址上的高速緩沖存儲(chǔ)器140中,再被提供給處理單元10。
高速緩沖存儲(chǔ)器控制單元146向高速緩沖存儲(chǔ)器映射單元142、144發(fā)送有關(guān)選中的高速緩沖存儲(chǔ)器地址的信號(hào)。如果高速緩沖存儲(chǔ)器地址已為另一個(gè)主存儲(chǔ)器地址所使用,則高速緩沖存儲(chǔ)器映射單元142,144確保其它主存儲(chǔ)器地址不再被映射到這個(gè)已被選中的高速緩沖存儲(chǔ)器地址上。至少選中的高速緩沖存儲(chǔ)器映射單元142、144之一要記錄下數(shù)據(jù)已被存儲(chǔ)在此選中的高速緩沖存儲(chǔ)器地址上的主存儲(chǔ)器地址的高速緩沖存儲(chǔ)器140中。在實(shí)施例中,高速緩沖存儲(chǔ)器映射單元142和144都至少是為某些高速緩沖存儲(chǔ)器地址記錄下了高速緩沖存儲(chǔ)器地址和主存儲(chǔ)器地址之間的關(guān)聯(lián)關(guān)系。
如果所有被分配給高速緩沖存儲(chǔ)器映射單元142、144的高速緩沖存儲(chǔ)器地址都被使用了,那么高速緩沖存儲(chǔ)器控制單元146要按某些高速緩沖存儲(chǔ)器替換方案,依據(jù)選定的高速緩沖存儲(chǔ)器映射單元142、144上使用的地址映射,選擇已被選中的高速緩沖存儲(chǔ)器地址。已有若干方案的實(shí)質(zhì)為技術(shù)人員所熟知。一種方案的示例是“就近使用LRU”方案。根據(jù)這種方案,高速緩沖存儲(chǔ)器控制單元146要確定出哪個(gè)高速緩沖存儲(chǔ)器地址比任何其它的高速緩沖存儲(chǔ)器地址使用的時(shí)間短,然后選中這個(gè)LRU高速緩沖存儲(chǔ)器地址用以存儲(chǔ)主存儲(chǔ)器存儲(chǔ)單元中的數(shù)據(jù)。
依據(jù)地址映射單元142、144中所使用的地址映射類型,僅高速緩沖存儲(chǔ)器140地址的子組中能用于會(huì)引起高速緩沖存儲(chǔ)器丟失的主存儲(chǔ)器地址。在這種情況下,再按某些方案例如LRU,高速緩沖存儲(chǔ)器控制單元從選定的高速緩沖存儲(chǔ)器映射單元142、144中可用于主存儲(chǔ)器地址的高速緩沖存儲(chǔ)器地址中選擇高速緩沖存儲(chǔ)器地址。
地址映射單元142、144可使用互不同的地址映射機(jī)制。在某種實(shí)施例中,第一地址映射單元142使用了到動(dòng)態(tài)選擇的有限成組高速緩沖存儲(chǔ)器地址的完全關(guān)聯(lián)地址映射,第二地址映射單元144使用了到所有高速緩沖存儲(chǔ)器地址上的成組關(guān)聯(lián)映射最好除去那些被第一地址映射單元142中使用的。這些以及其它映射類型的地址映射單元的執(zhí)行過(guò)程已本質(zhì)地掌握了。
通常,主存儲(chǔ)器10上的數(shù)據(jù)被取出并按高速緩沖存儲(chǔ)器數(shù)據(jù)行存儲(chǔ)到高速緩沖存儲(chǔ)器140中,這種數(shù)據(jù)行包括大量連續(xù)的、具有相同最高有效位的地址的數(shù)據(jù)。在完全關(guān)聯(lián)映射單元中,存在于高速緩沖存儲(chǔ)器140中的這些主存儲(chǔ)器地址中的最高有效位(標(biāo)志位)是為被完全關(guān)聯(lián)映射單元所映射的各個(gè)高速緩沖存儲(chǔ)器地址而存儲(chǔ)的。送入的主存儲(chǔ)器地址的標(biāo)志位與被存儲(chǔ)的地址的標(biāo)志位進(jìn)行比較,如果一致,會(huì)返回相關(guān)的高速緩沖存儲(chǔ)器地址。在成組關(guān)聯(lián)映射單元中,主存儲(chǔ)器地址的最高有效的部分被分為組選擇位和標(biāo)志位。組選擇位按預(yù)定的方式被轉(zhuǎn)換成高速緩沖存儲(chǔ)器地址位。這些高速緩沖存儲(chǔ)器地址位選出一組高速緩沖存儲(chǔ)器存儲(chǔ)單元,這樣剩余有限數(shù)量的這組可為主存儲(chǔ)器地址使用的高速緩沖存儲(chǔ)器地址。標(biāo)志位就用于在這些有限數(shù)目的高速緩沖存儲(chǔ)器地址中再進(jìn)行選擇,就像在完全關(guān)聯(lián)映射單元中使用標(biāo)志位在所有可用的高速緩沖存儲(chǔ)器地址中進(jìn)行選擇一樣。
使用具有可供分配的高速緩沖存儲(chǔ)器地址組的完全關(guān)聯(lián)映射單元于某些特定關(guān)鍵數(shù)據(jù),例如需要實(shí)時(shí)處理的數(shù)據(jù),在無(wú)需受成組關(guān)聯(lián)高速緩沖存儲(chǔ)器或直接映射高速緩沖存儲(chǔ)器強(qiáng)加的限制下實(shí)現(xiàn)數(shù)據(jù)的高速緩沖存儲(chǔ)器。與成組關(guān)聯(lián)映射單元聯(lián)合使用時(shí),即使成組映射單元需要將主存儲(chǔ)器地址映射到相同的組,完全關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元也可以將主存儲(chǔ)器地址映射到屬于不同組(比如成組關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元所定義的組)的高速緩沖存儲(chǔ)器存儲(chǔ)單元上。因此,讓更多被映射到同一組中的主存儲(chǔ)器存儲(chǔ)單元存在于高速緩沖存儲(chǔ)器140中的可能性遠(yuǎn)大于在其自身只采用成組關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元。在這種情況完全關(guān)聯(lián)高速緩沖存儲(chǔ)器不需要具備到整個(gè)高速緩沖存儲(chǔ)器140的映射能力,因?yàn)槲幢挥成涞牡刂愤€可以使用其它的映射機(jī)制。因此,完全關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元可以保持很小。不同的高速緩沖存儲(chǔ)器映射單元142、144在進(jìn)行高速緩沖存儲(chǔ)器地址映射時(shí)可以使用不同的高速緩沖存儲(chǔ)器替換方案。
完全關(guān)聯(lián)映射單元可能只限于某些存儲(chǔ)器存取類型。例如,在使用流存取的程序的情況中,主存儲(chǔ)器地址的一部分來(lái)自可被預(yù)先計(jì)算出的地址序列中(例如地址間相隔固定的步長(zhǎng))。在流存取中,某時(shí)刻可被使用的主存儲(chǔ)器地址均被放置在窗口序列中(即某時(shí)刻前所有曾被使用過(guò)的流的地址序列中,只有窗口中的地址可繼續(xù)使用)。窗口要隨時(shí)更換。高速緩沖存儲(chǔ)器140必須將窗口中地址的數(shù)據(jù)存儲(chǔ)起來(lái)。即,高速緩沖存儲(chǔ)器140要存儲(chǔ)窗口序列中連續(xù)地址的數(shù)據(jù)。在此方法中數(shù)據(jù)存取包括在已計(jì)算的地址上予取由處理器正在讀的數(shù)據(jù)和/或由處理器已寫(xiě)入的數(shù)據(jù)。
流的預(yù)取操作和寫(xiě)操作已為熟知。流的預(yù)取操作最好用流預(yù)取單元(未表示)完成,該單元對(duì)地址或由處理器發(fā)出的地址指示進(jìn)行監(jiān)測(cè),將它們與現(xiàn)行流地址進(jìn)行比較??梢员容^所有發(fā)出的地址,也可以只比較被處理器識(shí)別為流地址的地址或指示。如果一致,流預(yù)取單元在流中計(jì)算下一個(gè)主存儲(chǔ)器地址,再將地址提交給高速緩沖存儲(chǔ)器以便對(duì)應(yīng)地址的數(shù)據(jù)可被存儲(chǔ)在高速緩沖存儲(chǔ)器中。
圖2示出了用于流存取的完全關(guān)聯(lián)映射單元。該映射單元包括基地址寄存器20、頂?shù)刂芳拇嫫?1、基變址寄存器22、變址計(jì)算單元24、地址比較單元25以及地址存儲(chǔ)器26,所有的組成部件都被連接到高速緩沖存儲(chǔ)器丟失處理接口28上(該連接沒(méi)有清楚地表示出來(lái))。映射單元的地址輸入被連接到變址計(jì)算單元24和地址比較單元25上?;刂芳拇嫫?0被連接到變址計(jì)算單元24上。頂?shù)刂芳拇嫫?1被連接到地址比較單元25上?;冎芳拇嫫?2被連接到變址計(jì)算單元24上。變址計(jì)算單元24有一變址輸出被連接到地址存儲(chǔ)器26上。地址存儲(chǔ)器26有輸入被連到映射單元的映射機(jī)制選擇輸入上,也有輸出被連到映射單元的地址輸出上。
在操作中,映射單元向流存取中使用的高速緩沖存儲(chǔ)器地址序列窗口提供高速緩沖存儲(chǔ)器地址。用于流的是固定的高速緩沖存儲(chǔ)器地址組。隨著窗口向前移動(dòng),序列中新主存儲(chǔ)器地址中的數(shù)據(jù)將會(huì)覆蓋高速緩沖存儲(chǔ)器140中還存在的老主存儲(chǔ)器地址中的數(shù)據(jù),除了開(kāi)始序列中就沒(méi)有數(shù)據(jù)存在之外。高速緩沖存儲(chǔ)器控制單元146裝入地址存儲(chǔ)器26很多高速緩沖存儲(chǔ)器地址用于存儲(chǔ)流的數(shù)據(jù)。這些高速緩沖存儲(chǔ)器地址通常不會(huì)隨窗口移動(dòng)而更改。這些高速緩沖存儲(chǔ)器地址可反復(fù)地用作序列地址。這樣做的優(yōu)點(diǎn)在于計(jì)算高速緩沖存儲(chǔ)器地址時(shí)不必像在傳統(tǒng)的完全關(guān)聯(lián)映射單元中那樣,將主存儲(chǔ)器地址與所有可用的地址進(jìn)行比較。
基地址寄存器20包括高速緩沖存儲(chǔ)器140保存序列中的最老主存儲(chǔ)器地址AO。頂?shù)刂芳拇嫫?1中包括高速緩沖存儲(chǔ)器140保存序列中的最新主存儲(chǔ)器地址AN?;冎芳拇嫫?2包括地址存儲(chǔ)器26的存儲(chǔ)單元地址IO,地址存儲(chǔ)器26包括高速緩沖存儲(chǔ)器地址它存儲(chǔ)著最老主存儲(chǔ)器地址中的數(shù)據(jù)。
當(dāng)映射單元被選中并且主存儲(chǔ)器地址A被提供時(shí),變址計(jì)算單元24將主存儲(chǔ)器地址A轉(zhuǎn)換成對(duì)地址存儲(chǔ)器26編址的變址I。例如,如果流中連續(xù)主存儲(chǔ)器地址間的長(zhǎng)度為D,則I=(IO+(A-AO)/D)mod N(其中N是地址存儲(chǔ)器26中的地址數(shù)目)。對(duì)應(yīng)主存儲(chǔ)器地址A的高速緩沖存儲(chǔ)器地址借助于變址I從地址存儲(chǔ)器26中被檢索出來(lái)。
當(dāng)使用了當(dāng)前存儲(chǔ)窗口之外的主存儲(chǔ)器地址時(shí),地址比較單元25要發(fā)出信號(hào)。一旦信號(hào)發(fā)出,高速緩沖存儲(chǔ)器控制單元146將主存儲(chǔ)器12中的主存儲(chǔ)器地址上的數(shù)據(jù)裝入高速緩沖存儲(chǔ)器140的地址AO中,對(duì)AO、AN和IO進(jìn)行更新。流的數(shù)據(jù)被優(yōu)先預(yù)取,即在程序?qū)嶋H需要數(shù)據(jù)前其主存儲(chǔ)器地址已經(jīng)作用到高速緩沖存儲(chǔ)器單元140上。因此,無(wú)需惹起高速緩沖存儲(chǔ)器丟失延遲。在實(shí)施例中,提供給圖2中映射單元的地址是與流相關(guān)的地址,而不是主存儲(chǔ)器的地址。在這種情況下,地址存儲(chǔ)器26中變址I的計(jì)算也只是對(duì)提供的地址進(jìn)行模I=A模N計(jì)算的問(wèn)題。
這樣高速緩沖存儲(chǔ)器的主存儲(chǔ)器地址的數(shù)據(jù)被存儲(chǔ)在高速緩沖存儲(chǔ)器存儲(chǔ)單元序列中,這些存儲(chǔ)單元循環(huán)用于地址流中的連續(xù)地址。從流地址計(jì)算得到的序列變址能用于確定序列地址。在此例中,序列地址可以通過(guò)地址存儲(chǔ)器實(shí)現(xiàn),當(dāng)然也可用其它的方法實(shí)現(xiàn),例如直接用變址相對(duì)某一基地址對(duì)高速緩沖存儲(chǔ)器進(jìn)行尋址。
當(dāng)然,圖2中的映射單元是一類較好的映射單元實(shí)例。在不背離本發(fā)明的情況下也可以使用其它的完全關(guān)聯(lián)映射單元。
現(xiàn)在返回圖1,應(yīng)該記得當(dāng)高速緩沖存儲(chǔ)器發(fā)生丟失現(xiàn)象時(shí),高速緩沖存儲(chǔ)器控制單元146要為主存儲(chǔ)器存儲(chǔ)單元選擇一個(gè)高速緩沖存儲(chǔ)器地址。在一種實(shí)施例中,其中高速緩沖存儲(chǔ)器映射單元142、144分別是完全關(guān)聯(lián)映射單元和成組關(guān)聯(lián)映射單元,高速緩沖存儲(chǔ)器控制單元146選擇由完全關(guān)聯(lián)映射單元使用的高速緩沖存儲(chǔ)器地址,這樣高速緩沖存儲(chǔ)器地址在成組關(guān)聯(lián)映射單元的不同組中才能均勻分布。
應(yīng)該記得完全關(guān)聯(lián)映射單元完全有權(quán)在主存儲(chǔ)器地址與任何高速緩沖存儲(chǔ)器地址之間建立關(guān)聯(lián)關(guān)系。一方面,成組關(guān)聯(lián)映射單元將主存儲(chǔ)器地址僅映射到相對(duì)較少的組中的大量高速緩沖存儲(chǔ)器地址之一上。當(dāng)完全關(guān)聯(lián)映射單元將主存儲(chǔ)器地址映射到高速緩沖存儲(chǔ)器地址上時(shí),該高速緩沖存儲(chǔ)器地址被稱為被完全關(guān)聯(lián)映射單元“占用”。為了不影響完全關(guān)聯(lián)映射單元,成組關(guān)聯(lián)映射單元僅可以使用組中未被完全關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元占用的高速緩沖存儲(chǔ)器地址。通常占用通過(guò)某種硬件鎖定機(jī)制加強(qiáng),該鎖定機(jī)制禁止在由成組關(guān)聯(lián)映射單元在占用的存儲(chǔ)單元處在高速緩沖存儲(chǔ)器中替換。
在極限情況下,組中所有的高速緩沖存儲(chǔ)器地址都被占用。在此情況下映射到該組中的某個(gè)主存儲(chǔ)器地址的高速緩沖存儲(chǔ)器丟失,不能通過(guò)更新成組關(guān)聯(lián)映射單元處理而不作廢由完全關(guān)聯(lián)映射單元映射的主存儲(chǔ)器地址。如果組中大部分被占用,被高速緩沖存儲(chǔ)器的數(shù)據(jù)不得不經(jīng)常更換,這樣成組關(guān)聯(lián)映射單元的優(yōu)點(diǎn)也就顯現(xiàn)不出來(lái)了。
可以通過(guò)在成組關(guān)聯(lián)映射單元使用的不同組中均勻分布被占用的高速緩沖存儲(chǔ)器地址來(lái)避免上述現(xiàn)象。即高速緩沖存儲(chǔ)器控制單元146優(yōu)先選擇完全關(guān)聯(lián)映射的高速緩沖存儲(chǔ)器地址,避免出現(xiàn)這些組中的高速緩沖存儲(chǔ)器地址含有比其它組更多地被占用的高速緩沖存儲(chǔ)器地址。這樣,任何組中可占用的最大高速緩沖存儲(chǔ)器地址數(shù)目都是最小的。
在某個(gè)實(shí)施例中,高速緩沖存儲(chǔ)器控制單元146保存了不能被完全關(guān)聯(lián)映射單元使用的高速緩沖存儲(chǔ)器地址的鏈表。最初該表在組之間循環(huán)表中連續(xù)出現(xiàn)的高速緩沖存儲(chǔ)器地址屬于連續(xù)的不同的組,直到所有組中的高速緩沖存儲(chǔ)器地址都出現(xiàn)由此表才再次遍歷所有的組,如此循環(huán)下去。例如,表可連續(xù)地包括(A0、A1、A2、A3、A4、A5、A6、A7、A8、A9…),其中A0、A4、A8屬于第一組,A1、A5、A9屬于第二組,A2、A6屬于第三組,依次類推。在這種情況下,當(dāng)高速緩沖存儲(chǔ)器控制單元146需要選擇高速緩沖存儲(chǔ)器地址在完全關(guān)聯(lián)映射單元中使用時(shí),那么高速緩沖存儲(chǔ)器控制單元順序選中這些高速緩沖存儲(chǔ)器,讓它們出現(xiàn)在表中。
當(dāng)從使用的完全關(guān)聯(lián)高速緩沖存儲(chǔ)器中釋放高速緩沖存儲(chǔ)器地址時(shí),它們被按一定順序放回到表中,該順序保持了這樣一種性質(zhì),即來(lái)自同一組的連續(xù)地址由來(lái)自其他組的一個(gè)最大可能的地址數(shù)的地址分開(kāi)。
在圖2的高速緩沖存儲(chǔ)器映射單元情況下,處理單元10中運(yùn)行的程序一旦開(kāi)始使用流優(yōu)先對(duì)流進(jìn)行說(shuō)明,說(shuō)明含蓄或明確地指出流中使用的高速緩沖存儲(chǔ)器地址數(shù)。流一經(jīng)開(kāi)始,需要的高速緩沖存儲(chǔ)器存儲(chǔ)單元數(shù)就從表中連續(xù)位置上被取出。
可以使用各種各樣的技術(shù)選擇高速緩沖存儲(chǔ)器映射單元144、142處理給定的主存儲(chǔ)器地址。這類技術(shù)中的一個(gè)實(shí)例與流存取被共同使用,在這種情況下,處理單元10要輸出信號(hào),指出是否存儲(chǔ)器地址屬于流,如果是,屬于哪一股流。信號(hào)選出要被使用的高速緩沖存儲(chǔ)器映射單元142、144。如果存在高速緩沖存儲(chǔ)器丟失,信號(hào)也能促使高速緩沖存儲(chǔ)器控制單元146選出必須映射主存儲(chǔ)器地址的高速緩沖存儲(chǔ)器映射單元142、144。處理單元10以完全地址或相對(duì)流當(dāng)前窗口序號(hào)的形式配給主存儲(chǔ)器地址。
在另一種實(shí)例中,通過(guò)檢測(cè)是否被處理單元10配給的主存儲(chǔ)器地址屬于特定的地址范圍或地址集合來(lái)確定要選的高速緩沖存儲(chǔ)器映射單元。程序指令定義了必須被完全關(guān)聯(lián)高速緩沖存儲(chǔ)器映射單元映射的主存儲(chǔ)器地址范圍或主存儲(chǔ)器地址集合。如果存在高速緩沖存儲(chǔ)器丟失,高速緩沖存儲(chǔ)器控制單元146選定高速緩沖存儲(chǔ)器映射單元142、144,它們必須在識(shí)別主存儲(chǔ)器地址是否屬于此范圍或此集合的基礎(chǔ)上將該存儲(chǔ)器地址進(jìn)行映射。在通常的地址映射過(guò)程中也可以使用屬于該范圍或集合來(lái)選擇地址映射單元142、144。
在實(shí)施例中,并行的所有地址映射單元142、144都要試著為處理單元10配給的主存儲(chǔ)器地址確定高速緩沖存儲(chǔ)器地址。如果高速緩沖存儲(chǔ)器映射單元142、144之任一個(gè)沒(méi)有高速緩沖存儲(chǔ)器丟失記錄,高速緩沖存儲(chǔ)器映射單元142、144生成的高速緩沖存儲(chǔ)器地址被用于對(duì)高速緩沖存儲(chǔ)器140進(jìn)行編址。如果所有的高速緩沖存儲(chǔ)器映射單元142、144都有高速緩沖存儲(chǔ)器丟失的記錄,高速緩沖存儲(chǔ)器控制單元146被觸發(fā),從主存儲(chǔ)器12上取數(shù)據(jù)。如果多于一個(gè)地址映射單元142、144中有高速緩沖存儲(chǔ)器待命的記錄,那么只有一個(gè)由地址映射單元142、144記錄下的高速緩沖存儲(chǔ)器地址需用于存儲(chǔ)器讀操作。如果是寫(xiě)操作的情況,那么或者將數(shù)據(jù)寫(xiě)入所有被記錄下的高速緩沖存儲(chǔ)器存儲(chǔ)單元中,或只寫(xiě)入其中一個(gè)已記錄的存儲(chǔ)單元中且將其它存儲(chǔ)單元中的數(shù)據(jù)作廢。
權(quán)利要求
1.一種帶有高速緩沖存儲(chǔ)器的數(shù)據(jù)處理器,高速緩沖存儲(chǔ)器包括—用于接收主存儲(chǔ)器地址的輸入端;—高速緩沖存儲(chǔ)器存儲(chǔ)單元;—用于存儲(chǔ)至少主存儲(chǔ)器地址與高速緩沖存儲(chǔ)器存儲(chǔ)單元之間的第一、第二關(guān)聯(lián)組的關(guān)聯(lián)存儲(chǔ)器,其中至少一個(gè)高速緩沖存儲(chǔ)器存儲(chǔ)單元被動(dòng)態(tài)地分配給組中不同元素,用于指定組的關(guān)聯(lián);—用于對(duì)主存儲(chǔ)器地址選擇選定組的選擇裝置;—安排選擇和尋址一個(gè)已編址的高速緩沖存儲(chǔ)器存儲(chǔ)單元的一個(gè)地址映射單元,已編址高速緩沖存儲(chǔ)器存儲(chǔ)單元與選定組的主存儲(chǔ)器地址相關(guān)聯(lián)。
2.按權(quán)利要求1的數(shù)據(jù)處理器包括流存取單元,用于在高速緩沖存儲(chǔ)器中給反復(fù)計(jì)算的主存儲(chǔ)器地址的流存取數(shù)據(jù),數(shù)據(jù)處理器利用第一組的關(guān)聯(lián)關(guān)系,在流存取的基礎(chǔ)上被配置來(lái)使得來(lái)自該流的存取數(shù)據(jù)的主存儲(chǔ)器地址全部與高速緩沖存儲(chǔ)器存儲(chǔ)單元相關(guān)。
3.按權(quán)利要求2的數(shù)據(jù)處理器,其中選擇裝置使用了成組關(guān)聯(lián)映射,它直接將各主存儲(chǔ)器地址映射到成組關(guān)聯(lián)映射的第二組或其它組之一,第二或其它組中的每個(gè)具有高速緩沖存儲(chǔ)器存儲(chǔ)單元來(lái)自分配給它的一組高速緩沖存儲(chǔ)器存儲(chǔ)單元,數(shù)據(jù)處理器動(dòng)態(tài)地給第一組分配高速緩沖存儲(chǔ)器存儲(chǔ)單元,這種分配方法禁止分配高速緩沖存儲(chǔ)器存儲(chǔ)單元給第二組或其它組。
4.按權(quán)利要求3的數(shù)據(jù)處理器,其中數(shù)據(jù)處理器均衡分配高速緩沖存儲(chǔ)器存儲(chǔ)單元到不同組的第一組。
5.按權(quán)利要求2的數(shù)據(jù)處理器,其中地址映射單元要對(duì)主存儲(chǔ)器地址進(jìn)行映射,對(duì)這些主存儲(chǔ)器地址第一組是基于它們?cè)诹髦械男蛱?hào)選擇的。
6.按權(quán)利要求2的數(shù)據(jù)處理器包括流存取單元,它用于將被反復(fù)計(jì)算的主存儲(chǔ)器地址的兩股流或多股流的數(shù)據(jù)存取到高速緩沖存儲(chǔ)器中,利用分配給該流的相應(yīng)各組之一的關(guān)聯(lián)關(guān)系,在這樣的存取的基礎(chǔ)上,來(lái)自每個(gè)流的存取數(shù)據(jù)的主存儲(chǔ)器地址全部與高速緩沖存儲(chǔ)器存儲(chǔ)單元相關(guān)。
7.按權(quán)利要求1的數(shù)據(jù)處理器配置用于接收和處理定義用在第一組關(guān)聯(lián)關(guān)系中的一組主存儲(chǔ)器地址的命令。
8.按權(quán)利要求1的數(shù)據(jù)處理器,其中高速緩沖存儲(chǔ)器存儲(chǔ)單元被選中重新用于不同的主存儲(chǔ)器地址,按過(guò)去第一組中高速緩沖存儲(chǔ)器存儲(chǔ)單元的使用差異但不必考慮其它組中高速緩沖存儲(chǔ)器存儲(chǔ)單元的過(guò)去使用情況,使用在第一組關(guān)聯(lián)中的高速緩沖存儲(chǔ)器存儲(chǔ)單元被選擇重新使用。
9.按權(quán)利要求1的數(shù)據(jù)處理器,包括處理單元,用于引用主存儲(chǔ)器地址的操作數(shù)或結(jié)果執(zhí)行指令,該指令指出被選擇的組用于存取指令的操作數(shù)或結(jié)果。
全文摘要
數(shù)據(jù)處理器具有一個(gè)高速緩沖存儲(chǔ)器和一個(gè)關(guān)聯(lián)存儲(chǔ)器,它至少能夠存儲(chǔ)各個(gè)主存儲(chǔ)器地址與高速緩沖存儲(chǔ)器存儲(chǔ)單元間第一和第二關(guān)聯(lián)組。至少一個(gè)高速緩沖存儲(chǔ)器存儲(chǔ)單元被動(dòng)態(tài)地分配給不同的組,以便在組關(guān)聯(lián)中使用。一旦指令指出主存儲(chǔ)器地址,就會(huì)選定一個(gè)組用于找出與該主存儲(chǔ)器地址相關(guān)聯(lián)的高速緩沖存儲(chǔ)器存儲(chǔ)單元。在一種實(shí)施例中,處理器存取來(lái)自被反復(fù)計(jì)算的主存儲(chǔ)器地址的地址流。各股流都各自具有流地址與被分配給該組的高速緩沖存儲(chǔ)器存儲(chǔ)單元間的一組關(guān)聯(lián)。剩余的高速緩沖存儲(chǔ)器存儲(chǔ)單元用成組關(guān)聯(lián)映射方式存取。因此,高速緩沖存儲(chǔ)器存儲(chǔ)單元基于“需要”被分配給不同的流,剩余的高速緩沖存儲(chǔ)器存儲(chǔ)單元?jiǎng)t可用于非流地址。
文檔編號(hào)G06F12/12GK1347527SQ00806347
公開(kāi)日2002年5月1日 申請(qǐng)日期2000年12月4日 優(yōu)先權(quán)日1999年12月17日
發(fā)明者A·H·蒂默, F·J·哈姆斯?jié)? J·A·J·萊滕, J·L·范梅爾博根 申請(qǐng)人:皇家菲利浦電子有限公司