專利名稱:有多執(zhí)行實體的系統(tǒng)中的緩沖存儲管理的制作方法
背景技術(shù):
本發(fā)明涉及有多個執(zhí)行實體的系統(tǒng)中的緩沖存儲器管理。
一個緩沖存儲器可以是被置于一個存儲器和另外一個可以訪問該存儲器的設(shè)備之間相對很小,快速的存儲器。緩沖存儲器的一個例子是位于處理器和(通常是相對較大且慢的)系統(tǒng)存儲器之間的高速緩沖存儲器(cache),它可以減少處理器從系統(tǒng)存儲器得到信息所需要的有效訪問時間。在一些系統(tǒng)中,一個多級高速緩存器系統(tǒng)可以被用來進一步提高性能。一個一級高速緩存器(L1高速緩存器)可以在處理器自身當(dāng)中實現(xiàn),而一個二級高速緩存器,通常是一個更大點的高速緩存器,則是從外部連接至處理器。
此外,在一些傳統(tǒng)的存儲系統(tǒng)中,一個高速緩存器存儲器可能包含單獨的指令和數(shù)據(jù)高速緩存器單元,一個用來存儲指令,另一個用來存儲數(shù)據(jù)。在操作中,處理器可以從系統(tǒng)存儲器中取出指令并把它存儲到指令高速緩存器單元中。被這些指令處理的數(shù)據(jù)可以被存儲在數(shù)據(jù)高速緩存器單元中。如果處理器所需的像指令和數(shù)據(jù)這樣的信息已經(jīng)被存儲在高速緩存器存儲器中,這時就說一個高速緩存器命中已經(jīng)發(fā)生了。一個高速緩存器存儲器命中減少了處理器訪問存儲在存儲器中的信息所需要的時間,這提高了處理器性能。
然而,如果處理器所需信息沒有被存儲在高速緩存器中,這時就說一個高速緩存器未命中發(fā)生了。當(dāng)一個高速緩存器未命中發(fā)生時,處理器不得不訪問系統(tǒng)存儲器以得到所請求的信息,當(dāng)處理器等待較慢的系統(tǒng)存儲器對請求做出反應(yīng)時這會導(dǎo)致一個存儲器的訪問時間性能的降低。為了減少高速緩存器未命中,采用了幾種不同的高速緩存器管理策略。幾種映射方案中的一種可能被選中,例如,包括一個直接映射方案或者一個組相聯(lián)高速緩存器映射方案。一個實現(xiàn)了K-路相聯(lián)映射的組相聯(lián)高速緩存器存儲器,例如2-路相聯(lián)映射、4-路相聯(lián)映射等等,通??梢蕴峁┍戎苯佑成涞母咚倬彺嫫鞔鎯ζ鞲叩拿新省R部梢灾付◣追N替換策略之一以提高高速緩存器存儲器的命中率,包括先進先出(FIFO)策略和最近最少使用(LRU)策略。高速緩存器存儲器另一個可配置的特征是高速緩存器存儲器更新策略,它規(guī)定了當(dāng)一個寫操作改變了高速緩存器中的內(nèi)容時系統(tǒng)存儲器怎樣被更新。更新策略包括寫直達(dá)(write-through)策略和寫回(write-back)策略。
傳統(tǒng)上,一個系統(tǒng),例如一臺計算機,可能包含幾個應(yīng)用程序和其他有不同數(shù)據(jù)流需要的軟件層。舉例來說,一個程序執(zhí)行實體,像與一個多媒體應(yīng)用聯(lián)系在一起的一個進程、任務(wù)或線程,可能傳送大塊通常不被重用的數(shù)據(jù)(例如視頻數(shù)據(jù))。這樣,對這些類型的數(shù)據(jù)的訪問會導(dǎo)致高速緩存器被這些很可能不被重用的大塊數(shù)據(jù)填滿。
在填充一個高速緩存器存儲器時,被一個執(zhí)行實體所用的數(shù)據(jù)可能會替換另一個執(zhí)行實體所用的數(shù)據(jù),這種現(xiàn)象被稱為數(shù)據(jù)高速緩存器污染。由一個執(zhí)行實體的活動引起的數(shù)據(jù)高速緩存器污染可能會提高另一個執(zhí)行實體高速緩存器未命中的可能性,這會降低整個系統(tǒng)的性能。
這樣需要提供改良性能的存儲器體系。
發(fā)明概述總體上,根據(jù)一個實施方案,一種系統(tǒng)包括一個處理器和多個在處理器上可執(zhí)行的執(zhí)行實體。系統(tǒng)中的緩沖存儲器有多個緩沖區(qū)(buffer section)。每個緩沖區(qū)用于存儲與從多個執(zhí)行實體中對應(yīng)的一個發(fā)出的請求相聯(lián)系的信息。
其他特征通過下面的描述和權(quán)利要求將變得清楚。
圖1是根據(jù)本發(fā)明一個實施方案的有多個區(qū)的緩沖區(qū)或高速緩存器存儲器的一部分的方框圖。
圖2是包括圖1中高速緩存器存儲器的系統(tǒng)的一個實施方案的方框圖。
圖3示出圖1中的高速緩存器存儲器中每個模塊的組件。
圖4是一個包括了圖1中的高速緩存器存儲器以及相關(guān)控制邏輯的一個處理器的方框圖。
圖5是一個在圖4的處理器中被執(zhí)行的指令執(zhí)行順序流程圖。
圖6是在圖2所示系統(tǒng)中的一個開放系統(tǒng)的流程圖,它依照一個實施方案設(shè)置了一個高速緩存器存儲器。
發(fā)明詳述在下面的描述中,描述了大量的細(xì)節(jié)以提供對本發(fā)明的理解。然而,對那些本領(lǐng)域的技術(shù)人員來說應(yīng)該可以理解在沒有這些細(xì)節(jié)的情況下也可以實現(xiàn)本發(fā)明并且從所描述的方案而來的大量更改和變體都是可能的。
本發(fā)明的一些實施方案包括一個有一緩沖存儲器的系統(tǒng),該緩沖存儲器包含幾個處于存儲器體系中一個層次上的獨立的緩沖區(qū)。每個緩沖區(qū)可以是一個單獨的緩沖模塊或者是一個緩沖存儲器中可以被單獨定址的一個部分(也就是說,存儲器被分成幾個單獨的地址空間)。獨立的緩沖區(qū)可以被單獨配置并且可以被分配來存儲系統(tǒng)中不同程序執(zhí)行實體的信息。
在一些實施方案中,緩沖存儲器可能包括一個在任何不同應(yīng)用程序中使用的高速緩存器存儲器,例如處理器子系統(tǒng)、外圍設(shè)備控制器(像視頻控制器、硬盤驅(qū)動控制器等等)以及其它類型的控制設(shè)備。包含這樣的高速緩存器存儲器的系統(tǒng)可以包括通用或?qū)S糜嬎銠C,手持電子設(shè)備(例如電話、日歷系統(tǒng)、電子游戲設(shè)備等),裝置(appliance),置頂盒以及其它電子系統(tǒng)。有多個高速緩存器區(qū)的高速緩存器存儲器可以被稱為多單元高速緩存器存儲器。一個高速緩存器存儲器區(qū)可以包括一個單獨的高速緩存器模塊或者是高速緩存器存儲器中可以被單獨可尋址的一個部分。下面描述的實施例包括一個計算機它有多個帶有獨立的高速緩存器模塊的多單元高速緩存存儲器,然而,可以理解的是,進一步的實施方案可以包括帶有其他獨立配置的高速緩存器節(jié)的多單元高速緩存器存儲器的計算機或有緩沖存儲器的其他類型的系統(tǒng)。
依照這些實施方案,多單元高速緩存器存儲器中每個獨立的高速緩存器模塊的屬性可以被單獨配置。這些屬性包括每個高速緩存器模塊的大小,組織方式(例如,直接映射或組相聯(lián)映射),替換策略,更新策略等等。這樣,舉例來說,一個高速緩存器模塊可以被配置成一個直接映射高速緩存器,而其他高速緩存器模塊可以被配置成一個K-路組相聯(lián)高速緩存器。高速緩存器模塊也可以被配置成有不同的更新策略,包括寫直達(dá)策略和寫回策略。對不同的高速緩存器模塊來說其他屬性也可以被設(shè)為不同,如下面所進一步描述的。
一些處理器可以從多執(zhí)行實體中接收請求以處理。舉例來說,一個處理器可能包括一個通用或?qū)S梦⑻幚砥?,一個微控制器或者像應(yīng)用程序?qū)S眉呻娐?ASIC)那樣的其他類型的控制設(shè)備,可編程門陣列(PGA)等。根據(jù)一個實施方案的程序執(zhí)行實體可能是被裝入系統(tǒng)中的軟件和固件層的基本工作單元。這些基本工作單元可以包括進程、任務(wù)、線程或者其他單元,像依照不同系統(tǒng)可定義的那樣。例如,在一些操作系統(tǒng)中,像微軟公司的特定的Windows操作系統(tǒng),系統(tǒng)中與進程相關(guān)的多線程可以被處理器執(zhí)行以執(zhí)行不同的任務(wù)。另一提供多線程或多任務(wù)功能的操作系統(tǒng)是BE有限公司的Be操作系統(tǒng)(BeOS),如在BE操作系統(tǒng)產(chǎn)品數(shù)據(jù)表(1998年在http//www.be.com上發(fā)布)中所描述的那樣。
在這些操作系統(tǒng)中,與不同軟件和固件層相聯(lián)系的多個執(zhí)行實體在某個時刻可以是活動的。從這些執(zhí)行實體發(fā)出的請求被操作系統(tǒng)按照預(yù)先定義的優(yōu)先級協(xié)議進行調(diào)度,例如輪轉(zhuǎn)法(round robin)等。這樣的操作系統(tǒng)被稱為多任務(wù)或多線程操作系統(tǒng)。為了利用一個系統(tǒng)的多任務(wù)或多線程能力,多單元高速緩存器存儲器中獨立的高速緩存器模塊可以被分配來存儲相應(yīng)執(zhí)行實體的信息。這樣,舉例來說,一個多媒體應(yīng)用中的執(zhí)行實體可以被分配到一個高速緩存器模塊上,而其它應(yīng)用程序的執(zhí)行實體可以被分配到多單元高速緩存器存儲器中的不同高速緩存器模塊上。為此,依照一個實施方案,從每個執(zhí)行實體發(fā)出的請求可以被分配一個不同的執(zhí)行實體標(biāo)識符(EID)。這樣,從第一個應(yīng)用的執(zhí)行實體發(fā)出的請求可以被分配一個EID,從另一個執(zhí)行實體發(fā)出的請求可以被分配另一個EID。這樣,依照這個實施方案,一個高速緩存器模塊可以被配置用于一個已分配的應(yīng)用程序的通用數(shù)據(jù)使用行為。
在另一實施方案中,由一個軟件或固件層創(chuàng)建的執(zhí)行實體可以被進一步細(xì)分以有多個EID。例如,一個應(yīng)用程序可以創(chuàng)建按照不同的時間和空間位置特性來處理數(shù)據(jù)的執(zhí)行實體。例如,一些執(zhí)行實體比由相同應(yīng)用程序創(chuàng)建的其它執(zhí)行實體更可能重用數(shù)據(jù)。這樣,有利于進一步將這些不同的執(zhí)行實體單獨地分配到多單元高速緩存器存儲器中不同的高速緩存器模塊。這樣,在一個替代實施方案中,從一個應(yīng)用程序的不同執(zhí)行實體發(fā)出的請求可以被分配超過一個的EID以使不同的高速緩存器模塊可以被利用。另外,不同應(yīng)用程序的執(zhí)行實體也可以被分配同樣的EID。這樣,舉例來說,一個多媒體應(yīng)用的第一個執(zhí)行實體可以被分配EID1,而該應(yīng)用的第二個執(zhí)行實體可以被分配EID2。在同一系統(tǒng)中,一個電子制表應(yīng)用軟件的與上述多媒體應(yīng)用的第二個執(zhí)行實體有相似數(shù)據(jù)使用特性的執(zhí)行實體也可以被分配EID2。
在進一步的實施方案中,可采用其他不同的方案給執(zhí)行實體的請求分配EID。基于與一條指令相關(guān)聯(lián)的EID,用于高速緩存器存儲器的一個高速緩存器控制器可以跟蹤多單元高速緩存器存儲器中的哪一個存儲模塊將被用來存儲被指令訪問的數(shù)據(jù)。由于單獨的高速緩存器模塊可以被配置來利用系統(tǒng)中不同執(zhí)行實體的數(shù)據(jù)使用特性,因此,可能提高高速緩存器利用率。例如,一個多媒體應(yīng)用通??赡苌蓚魉痛髩K不被重用數(shù)據(jù)的請求。被分配給這些類型請求的一個高速緩存器模塊可以被配置來實現(xiàn)FIFO替換策略和寫直達(dá)更新策略。被分配給其它類型請求的高速緩存器模塊可能有不同的配置。
因為執(zhí)行實體在系統(tǒng)中被創(chuàng)建,EID標(biāo)識符可以被操作系統(tǒng)分配給這些執(zhí)行實體。參見圖6,依照一個實施方案,如果一個新的執(zhí)行實體被檢測到(502),操作系統(tǒng)可以訪問(504)在操作系統(tǒng)初始化時被裝載的配置信息以決定EID標(biāo)識符怎樣被分配。操作系統(tǒng)隨后給執(zhí)行實體分配(506)適當(dāng)?shù)腅ID。例如,操作系統(tǒng)可以分配三個EID對應(yīng)于一個多單元高速緩存器存儲器中的三個高速緩存器模塊。有第一個通用數(shù)據(jù)使用特性的執(zhí)行實體可以被分配第一個EID標(biāo)識符,有第二個通用數(shù)據(jù)使用特性的執(zhí)行實體可以被分配第二個EID標(biāo)識符。一個缺省的EID標(biāo)識符可以被分配給那些沒有被特地分給另外兩個標(biāo)識符之一的執(zhí)行實體。
另外,基于配置信息,操作系統(tǒng)也分配(508)多單元高速緩存器存儲器中每一個高速緩存器模塊的屬性。這些屬性可能包括更新,替換和放置策略。操作系統(tǒng)也可以為多單元高速緩存器存儲器中的缺省高速緩存器模塊分配屬性。在替代實施方案中,EID標(biāo)識符和高速緩存器屬性可以被一個獨立于操作系統(tǒng)的軟件層按照上面所描述的進行分配。
在一個例子中,一個傳送大量通常不被重用數(shù)據(jù)的多媒體應(yīng)用程序的執(zhí)行實體可以被分配一個EID標(biāo)識符以使這些數(shù)據(jù)被存儲在第一個高速緩存器模塊中,該模塊被按照這些執(zhí)行實體的高速緩存器數(shù)據(jù)使用特性而配置。算術(shù)運算密集的執(zhí)行實體,像壓縮應(yīng)用,可以被分配另一個EID標(biāo)識符以使數(shù)據(jù)被存儲在另一個高速緩存器模塊中,該模塊按照增加空間位置特征的高速緩存器數(shù)據(jù)操作來配置。
在一些實施方案中,一個有多個高速緩存器模塊的多單元高速緩存器存儲器可以被實現(xiàn)在一個有多個級別高速緩存器(例如L1高速緩存器和L2高速緩存器)的多級高速緩存器存儲器中。這樣一個高速緩存器存儲器可以被稱為多級、多單元高速緩存器存儲器,其中至少有一級包括一個多單元高速緩存器存儲器。這樣,舉例來說,一個有兩級的多級、多單元高速緩存器存儲器可以下列方式構(gòu)造第一級是一個多單元高速緩存器,第二級是一個傳統(tǒng)高速緩存器;第一級是一個多單元高速緩存器且第二級也是一個多單元高速緩存器;或者第一級是一個傳統(tǒng)高速緩存器但第二級是一個多單元高速緩存器。
一個多單元高速緩存器中的獨立高速緩存器模塊可以被歸類為P-高速緩存器。這樣,舉例來說,一個多單元高速緩存器存儲器可以包括幾種P-高速緩存器,包括P0-高速緩存器,P1-高速緩存器,P2-高速緩存器等等。不同的P-高速緩存器可以被實現(xiàn)成單獨的存儲部件或模塊,例如,多個靜態(tài)隨機訪問存儲(SRAM)或者多個動態(tài)隨機訪問存儲(DRAM)設(shè)備?;蛘?,多個P-高速緩存器可以在一個存儲設(shè)備中實現(xiàn),它相應(yīng)于不同的P-高速緩存器被細(xì)分為單獨的節(jié)。另外,多單元高速緩存器存儲器可以被集成在另外一個設(shè)備中,例如,處理器或者系統(tǒng)中的其它控制設(shè)備?;蛘撸鄦卧咚倬彺嫫鞔鎯ζ饕部梢允强杀豢刂圃O(shè)備訪問以獲取緩存數(shù)據(jù)的單獨的單元。在進一步的實施方案中,多單元高速緩存器存儲器的一部分可能被放置在一個集成設(shè)備中而另一部分被放置在另一設(shè)備中。
在本發(fā)明的一些實施方案中,多單元高速緩存器系統(tǒng)中每一個單獨的P-高速緩存器模塊可以有不同的屬性,包括高速緩存器大小、組織方式和高速緩存器更新、放置以及替換策略。放置策略可以被規(guī)定為對每個P-高速緩存器來決定信息怎樣被放進高速緩存器中沒被占用的部分。高速緩存器替換策略被規(guī)定為管理每個P-高速緩存器中所存儲信息的替換。替換策略的范例包括先進先出策略(FIFO),最近最少使用策略(LRU)或者其他類型的替換策略。高速緩存器更新策略管理當(dāng)寫操作對高速緩存器發(fā)生時信息將怎樣被更新,包括寫直達(dá)和寫回策略。
參照圖1,依照實施方案的多單元高速緩存器存儲器100包括幾個P-高速緩存器,示為一個P0-高速緩存器102,一個P1-高速緩存器104和一個P2-高速緩存器106。一個高速緩存器控制器108和P0-高速緩存器102,P1-高速緩存器104,P2-高速緩存器106聯(lián)系在一起。在一個實施方案中,單獨的地址和數(shù)據(jù)總線被連結(jié)到高速緩存器模塊102,104,106中的每一個以使這些高速緩存器模塊可以被同時訪問?;蛘撸粋€通用地址和數(shù)據(jù)總線可以被連結(jié)到高速緩存器模塊上。高速緩存器控制器108給P-高速緩存器102-106中的每一個提供控制信號。
高速緩存器控制器108包括存儲部件118,它是寄存器或類似的形式,可以被操作系統(tǒng)編程以規(guī)定與每個P-高速緩存器相關(guān)聯(lián)的EID標(biāo)識符。當(dāng)多單元高速緩存器存儲器100被訪問時,高速緩存器控制器108根據(jù)由訪問請求提供的EID與存儲在存儲部件118中的EID值的比較來選擇一個P-高速緩存器。
高速緩存器控制器108也包括一個替換和更新控制模塊120以按照存儲部件118中編制好的控制信息所定義的來控制三個單獨的高速緩存器模塊的替換和更新策略。例如,存儲元件118可以被編程從而為一個P-高速緩存器指示一個FIFO替換策略并為另一個P-高速緩存器指示一個LRU替換策略。
高速緩存器控制器108也包括一個標(biāo)志比較模塊122從而對一個傳入請求的標(biāo)志與被選中的一個或多個P-高速緩存器的標(biāo)志進行比較以確定是否已經(jīng)發(fā)生一個高速緩存器命中。更進一步,如果需要主存儲器儲器206(圖2)的更新,一個寫回緩沖器124存儲一個P-高速緩存器的高速緩存器行以傳送給主存儲器206或一個L2高速緩存器204(圖2)。
為了確認(rèn)高速緩存器數(shù)據(jù)完整性,高速緩存器控制器108也包括一個高速緩存器一致性模塊126,它確定一個高速緩存器模塊的一個已被訪問的位置是否有效。在一個實施方案中,每一個高速緩存器模塊可以存儲一個有效/無效位?;蛘?,一個更優(yōu)化的一致性協(xié)議可以被實現(xiàn),像已修改,專用,共享和無效協(xié)議(MESI)。
其他可能被提供給高速緩存器控制器的控制信號包括一個高速緩存器禁止信號和一個高速緩存器沖洗(flush)信號。另外,其他高速緩存器相關(guān)信號像監(jiān)聽(snoop)信號也可以提供給高速緩存器控制器108。
參照圖2,多單元高速緩存器系統(tǒng)100可以在系統(tǒng)10中一些不同的位置(例如,處理器子系統(tǒng),橋控制器,外轉(zhuǎn)設(shè)備控制器,存儲設(shè)備控制器等)實現(xiàn)。在一個實施方案中,系統(tǒng)10包括一臺計算機,雖然在替代方案中系統(tǒng)10可以是其他任一種高速緩存器或緩沖存儲器可以在其中實現(xiàn)的電子設(shè)備。
系統(tǒng)10包括一個中央處理單元(CPU)200,它可能包括一個處理器或者其它適合的控制設(shè)備,有一級或多級高速緩存器存儲器。例如,像圖中所示,CPU200可以包括一個內(nèi)部高速緩存器,一個一級(L1)高速緩存器202。另外,CPU200可以通過一個主機總線被連接到并訪問一個外部高速緩存器,即一個二級(L2)高速緩存器204。L1高速緩存器202可以包括一個代碼部件(為了存儲指令)和一個數(shù)據(jù)部件(以存儲數(shù)據(jù))。同樣地,L2高速緩存器也可以包括代碼和數(shù)據(jù)部件。這樣,從主存儲器206中取出的指令和數(shù)據(jù)被分別存儲在L1高速緩存器202或者L2高速緩存器204的代碼和數(shù)據(jù)部件中。在其它實施方案中未實現(xiàn)單獨的代碼和數(shù)據(jù)高速緩存器部件。
在一些實施方案中,多單元高速緩存器存儲器100(圖1)可以在L1高速緩存器202,L2高速緩存器204或者這兩者之中實現(xiàn)。為了討論的目的,假定圖1中的多單元高速緩存器存儲器在CPU200的內(nèi)部高速緩存器L1高速緩存器202中實現(xiàn)。然而可以理解的是已描述的多單元高速緩存器存儲器或這樣一個高速緩存器存儲器的改進形式也可以在L2高速緩存器204或系統(tǒng)中的其他控制器之中實現(xiàn),像視頻控制器或磁盤控制器。另外,在這個實施方案中,多單元高速緩存器存儲器100構(gòu)成了L1高速緩存器202的數(shù)據(jù)高速緩存器部件。
主存儲器206由存儲器集線器208中的一個存儲控制器207來控制,該集線器通過一個主機總線203被連接到CPU200上。另外,存儲器集線器可以包括一個被有效連接到L2高速緩存器204上的高速緩存器控制器205。存儲器集線器也包括一個圖形接口211,它通過鏈路209被連接到圖形控制器210上它再與顯示器212相連。例如,一個圖形界面可以對應(yīng)于加速圖形端口(A.G.P)接口標(biāo)準(zhǔn),修訂本2.0在1998年5月被發(fā)布。
存儲器集線器208也可以被連接到輸入/輸出(I/O)集線器214,它包括分別被連接到系統(tǒng)總線216和一個二級總線224的橋控制器215和223。例如,系統(tǒng)總線可以是一個外圍設(shè)備互連(PCI)總線,像PCI本地總線標(biāo)準(zhǔn)定義的那樣,產(chǎn)品版本,修訂本2.1在1995年七月被發(fā)布。系統(tǒng)總線216可以被連接到一個控制對一個或多個海量存儲器(包括硬盤驅(qū)動器、密致盤(CD)驅(qū)動器或數(shù)字視頻光盤(DVD)驅(qū)動器)訪問的存儲控制器218上。在一個替代實施方案中,存儲控制器218可以像其它控制功能那樣被集成在I/O集線器中214中。系統(tǒng)總線216也可以被連接到其它部件上,例如包括一個被連接到一個網(wǎng)絡(luò)端口上(沒有顯示出來)的網(wǎng)絡(luò)控制器222。
在二級總線224上,附加設(shè)備226可以像存儲加電例程的非易失型存儲器228那樣被連接,如基本輸入輸出系統(tǒng)(BIOS)例程。二級總線224也可以包括連接到外圍設(shè)備的接口。雖然這種描述參考了系統(tǒng)10中不同層的特殊配置和結(jié)構(gòu),可以預(yù)期所描述的實施方案的大量更改和變化也是可能的。例如,取代存儲器和I/O集線器,主機橋控制器和一個系統(tǒng)橋控制器也可以提供等價的功能,用連接在CPU200和系統(tǒng)總線216之間的主機橋控制器和連接在系統(tǒng)總線216和二級總線224之間的系統(tǒng)橋控制器224。另外,可采用多種總線協(xié)議中的任一種。
多種不同程序執(zhí)行實體可在系統(tǒng)10中由CPU200執(zhí)行。如圖所示,對應(yīng)于一個實施方案,多個進程252,254和256在操作系統(tǒng)下被裝載,操作系統(tǒng)可以是Windows操作系統(tǒng)。每個進程可以產(chǎn)生一個或多個執(zhí)行實體,它們構(gòu)成系統(tǒng)中的基本工作單元。在一個例子中,執(zhí)行實體可以是線程;如圖2所示,進程252可以包括線程258和260,進程254可以包括一個線程262,進程256可以包括線程264和266。
多種軟件或固件(例如以模塊,程序或其它層的形式),包括應(yīng)用程序、操作系統(tǒng)模塊或程序、設(shè)備驅(qū)動程序、BIOS模塊或例程以及中斷處理器可以被存儲或在系統(tǒng)中的一個或多個存儲介質(zhì)中實施。適合實施軟件和固件指令的存儲介質(zhì)可以包括不同形式的存儲形式包括如動態(tài)或靜態(tài)隨機存儲器這樣的半導(dǎo)體存儲器,可擦可編程的只讀存儲器(EPROM),電可擦可編程只讀存儲器(EEPROM)和閃存儲器;磁盤如固定磁盤、軟盤和可移動磁盤;其他磁介質(zhì)包括磁帶;以及光介質(zhì)如CD或DVD盤。當(dāng)存儲在這些介質(zhì)中的指令被執(zhí)行時引起系統(tǒng)10執(zhí)行編制好的動作。
軟件和固件可以以多種不同方式中的一種被裝入系統(tǒng)10。例如,存儲在存儲介質(zhì)上或者通過網(wǎng)絡(luò)接口卡、調(diào)制解調(diào)器或其它接口機制傳送過來的指令或其他代碼段可以被裝入系統(tǒng)10并被執(zhí)行以執(zhí)行編制好的動作。在裝入或傳送過程中,實施為載波的數(shù)據(jù)信號可以向系統(tǒng)10傳遞指令或代碼段(通過電話線,網(wǎng)線,無線鏈路,電纜或類似設(shè)備傳送)。
執(zhí)行實體(在此是線程)適于執(zhí)行不同的操作。例如,一個電子表格進程可以創(chuàng)建第一個線程以執(zhí)行用戶輸入的計算,創(chuàng)建第二個線程把計算完的數(shù)據(jù)傳送主存儲器206。每個線程或執(zhí)行實體能夠產(chǎn)生請求,它被作為指令存儲在主存儲器206中。這些指令被CPU200從主存儲器206取回以執(zhí)行。
依照一些實施方案,一個執(zhí)行實體標(biāo)識符(EID)可以被分配給每一個在系統(tǒng)10中運行的執(zhí)行實體。每個執(zhí)行實體的EID可以由操作系統(tǒng)分配。在一個實施方案中,當(dāng)一個調(diào)度器270調(diào)度從執(zhí)行實體發(fā)出的請求以由CPU200進行處理時,與每個執(zhí)行實體相關(guān)聯(lián)的EID與一個或多個相應(yīng)的指令一起被存儲。在這個實施方案中,CPU200取出指令與相關(guān)EID。
在一個替代方案中,EID不與指令一起被存儲在存儲器206。取而代之,多個指令存儲區(qū)域可以在存儲器206中被定義以符合不同的EID。與來自有第一個EID的執(zhí)行實體的請求相關(guān)聯(lián)的指令可以存儲在第一個指令存儲區(qū)域。與來自有第二個EID的執(zhí)行實體的請求相聯(lián)系的指令可以被存儲在第二個指令存儲區(qū)域;等等。在這個替代方案中,CPU200從存儲器206中取得指令而沒有相關(guān)的EID。然而,根據(jù)指令在哪一個指令存儲器區(qū)中被取出,CPU200可以確定指令的EID。
然而在更進一步的實施方案中,其中EID同樣不與指令一起被存儲,CPU200可以包括被分配給不同線程的多個微定序器。這樣,一個微定序器可以得到與一個線程相關(guān)聯(lián)的指令,另一個微定序器可以得到與另一個線程相關(guān)聯(lián)的指令,等等。每個微定序器可以被配置以知道相應(yīng)執(zhí)行實體的指令的位置。在這個實施方案中,一個指令的EID可以根據(jù)哪個微定序器取出了這個指令來被確定。已確定的指令這時被存儲在CPU中。
獲得的或確定的EID被高速緩存器控制器108或者其它一些合適的解碼器解碼以在指令請求一個數(shù)據(jù)訪問時標(biāo)識哪一個P-高速緩存器將被使用。高速緩存器控制器108訪問P-高速緩存器中的一個以取出或存儲被相應(yīng)指令處理的數(shù)據(jù)。用圖1中的配置例子,與有EID0的指令相關(guān)聯(lián)的數(shù)據(jù)可以被存儲在P0-高速緩存器102中,與有EID1的指令相關(guān)聯(lián)的數(shù)據(jù)可以被存儲在P1-高速緩存器104中,與有EID2的指令相關(guān)聯(lián)的數(shù)據(jù)可以被存儲在P2-高速緩存器106中。在一些實施方案中,一個P-高速緩存器可以與超過一個的EID相關(guān)聯(lián)。更進一步,來自不同的應(yīng)用和軟件層的執(zhí)行實體可以被分配相同的EID。
參照圖3,示出了P-高速緩存器之一的通用結(jié)構(gòu)。在圖3所示的例子中,示出了一個4-路組相聯(lián)高速緩存器。其它配置也是可能的,包括直接映射高速緩存器或其它K-路組相聯(lián)高速緩存器。每一個P-高速緩存器可以包括一個狀態(tài)陣列160,一個標(biāo)志陣列162和一個數(shù)據(jù)陣列164。像圖示那樣,狀態(tài)陣列160,標(biāo)志陣列162和數(shù)據(jù)陣列164中的每一個因為被分成4個不同的區(qū)用于4-路組相聯(lián)的組織方式。
狀態(tài)陣列160包含下列域中的一個或多個一個EID標(biāo)識符;被替換和更新模塊所用于替換一個高速緩存器行的替換選擇位(RPS);高速緩存器一致性協(xié)議位。例如,P-高速緩存器模塊的每一塊可以與一個有效/無效位相關(guān)聯(lián)以指示相應(yīng)高速緩存器位置是有效或無效。或者,狀態(tài)陣列160可以存儲MESI位。替換選擇位RPS可以被用來指示哪個高速緩存器行將被替換。RPS位可以被用來跟蹤最近最少使用的高速緩存器行(用于LRU替換)或最先進入的高速緩存器行(用于FIFO替換)。
高速緩存器控制器108可以實現(xiàn)成一個集成單元或幾個單獨的控制單元。像討論過的那樣,當(dāng)一個指令被取出以執(zhí)行時,與之相關(guān)聯(lián)的EID也被取向。基于這個EID值,P-高速緩存器中適當(dāng)?shù)囊粋€被選取以從中取出數(shù)據(jù)或向其寫入數(shù)據(jù)。根據(jù)是否有相關(guān)數(shù)據(jù)的一個有效拷貝被存儲在所選中的P-高速緩存器模塊中,可以返回一個命中或未命中信息。
一個依照一些實施方案有可獨立配置高速緩存器模塊的多單元高速緩存器系統(tǒng)可能有下面的優(yōu)勢中的一個或多個。由于每個P-高速緩存器模塊的放置、替換和更新策略以及高速緩存器大小和組織方式可被設(shè)置來為相應(yīng)的執(zhí)行實體提高高速緩存器利用率,可以得到更高的高速緩存器管理靈活性。高速緩存器性能可以通過配置高速緩存器模塊以利用不同執(zhí)行實體的不同高速緩存器使用特征(來存儲數(shù)據(jù)或指令)而被提高。由系統(tǒng)10中不同的活動執(zhí)行實體引起的數(shù)據(jù)高速緩存器污染可以被減少,這可以提高高速緩存器命中率。另外,既然P-高速緩存器模塊可以被同時訪問,多單元高速緩存器系統(tǒng)可以通過為一個多線程或多任務(wù)處理器提高并行性來提供高訪問帶寬。這樣的并發(fā)數(shù)據(jù)高速緩存器訪問有助于減小數(shù)據(jù)高速緩存器延遲以幫助滿足高性能處理器要求的數(shù)據(jù)訪問帶寬。
在其它實施方案中,針對不同應(yīng)用程序的編譯器可以動態(tài)地重新配置多單元高速緩存器存儲器的屬性以進一步增強高速緩存器性能。舉例來說,在操作中,與不同執(zhí)行實體相關(guān)聯(lián)的靜態(tài)信息可以被收集并存儲。根據(jù)收集到的靜態(tài)信息,每一個P-高速緩存器模塊的屬性可以被改變。例如,如果一個FIFO替換策略被確認(rèn)為對一個特定的P-高速緩存器模塊來說不夠高效,高速緩存器控制器108可以被通知去改變這個替換策略為LRU或其它的替換策略。這個替代實施方案可以提供為適應(yīng)系統(tǒng)10中的執(zhí)行實體怎樣在執(zhí)行而動態(tài)改變單個P-高速緩存器模塊的配置的靈活性。
參照圖4,在一個實施方案中,CPU200包括多單元L1高速緩存器存儲器202和相關(guān)的邏輯。多單元L1高速緩存器存儲器包括三個數(shù)據(jù)高速緩存器模塊P0-高速緩存器102,P1-高速緩存器104和P2-高速緩存器106。P0-高速緩存器102可以被指定為缺省的數(shù)據(jù)高速緩存器,它被用于存儲與那些沒有被明確分配給L1高速緩存器中其它高速緩存器模塊之一的執(zhí)行實體相關(guān)聯(lián)的數(shù)據(jù)。例如,這些執(zhí)行實體可以由操作系統(tǒng)分配一個缺省的EID0。P1-和P2-高速緩存器被分配來分別為從有EID1和2的執(zhí)行實體發(fā)出的請求存儲數(shù)據(jù)。在一個實施方案中,由于是缺省高速緩存器,P0-高速緩存器可以是一個比P1-或P2-高速緩存器更大的高速緩存器。
依照一個配置例子的CPU200的其它部件被顯示在圖4中。一個總線前部單元(BFU)404構(gòu)成了到前端或主機總線的接口。BFU404可以包括地址驅(qū)動器和接收器,寫緩沖區(qū),數(shù)據(jù)總線收發(fā)器,總線控制邏輯,總線主控制以及奇偶生成和控制。
下面首先描述指令路徑。由BFU404從主存儲器206或L2高速緩存器204取得的指令可以存儲在一個指令高速緩存器406中,它是L1高速緩存器202的一部分。內(nèi)部指令高速緩存器可以保持最近最頻繁使用指令的拷貝。依照一些實施方案,從主存儲器206或L2高速緩存器204中與EID一起被取出的指令被存儲在指令高速緩存器406中。一個指令緩沖器和解碼邏輯408中解析一條從指令高速緩存器406選中的指令及相關(guān)EID并產(chǎn)生一個或多個微操作以及相應(yīng)的EID。
在一個替代實施方案中,指令依照不同的EID被存儲在存儲器206的不同存儲區(qū)域。然而在這個實施方案中,EID并不和指令一起被存儲。當(dāng)CPU200取出一條指令時,相應(yīng)的EID并不被取出。代之以由CPU200根據(jù)指令存儲的地址位置來確定所取出指令的EID。例如這可以由解碼邏輯408執(zhí)行。這樣一條指令的EID由它從哪個指令存儲區(qū)域被取出來決定。一旦指令的EID被CPU200確定,它可以被附在已解碼的微操作上并且被存儲在指令隊列412中。
然而在一個更進一步的實施方案中,其中EID并不與指令一起存儲在存儲器中,多個指令計數(shù)器和微定序器可以包含在CPU200中,它們被分配給相應(yīng)的線程。這種實施方案在下面將被進一步闡述。
指令緩沖區(qū)和解碼邏輯408的輸出端口可以被連接到一個指令隊列412上,它存儲了微操作和相關(guān)的EID。指令隊列412的輸出端口被發(fā)送到一個定序器414。定序器414可以包括多個對應(yīng)于不同EID的微定序器單元430,432和434。例如,微定序器430可以被配置以處理與EID0相關(guān)聯(lián)的微操作,微定序器432可以被配置以處理與EID1相關(guān)聯(lián)的微操作,微定序器434可以被配置以處理與EID2相關(guān)聯(lián)的微操作。由微定序器430,432和434處理的微操作是從指令隊列412接收的。依照一個實施方案,微定序器430,432和434可以同時操作以處理與不同EID相關(guān)聯(lián)的微操作。微定序器430,432和434的操作由定序器414中的一個控制邏輯436來控制。
在一個實施方案中,與微操作相關(guān)聯(lián)的EID最初是與不同執(zhí)行實體的指令一起從存儲器中獲得的。在一個更進一步的實施方案中,其中EID并不與指令一起被存儲,每個微定序器可以被獨立配置以取出與相應(yīng)執(zhí)行實體相關(guān)聯(lián)的指令。這樣,第一個微定序器取出與第一個執(zhí)行實體相關(guān)聯(lián)的指令,第二個微定序器取出與第二個執(zhí)行實體相關(guān)聯(lián)的指令,等等。這樣一條被取出的指令的EID可以根據(jù)是哪個微定序器取出了它來確定。
一個執(zhí)行實體一般包括多個按一些程序順序執(zhí)行的指令。缺省情況下,指令地址被簡單地增加以取出下一條指令。如果一個無條件轉(zhuǎn)移或其它條件轉(zhuǎn)移發(fā)生了,目標(biāo)地址就被指定為下一條指令的地址。這樣下一條指令所在存儲器位置的地址就知道了。一個程序計數(shù)器可以被用來追蹤指令的程序順序。一個微定序器與一個程序計數(shù)器結(jié)合在一起工作以執(zhí)行指令。為了取回指令,微定序器可以讓(例如位于BFU404中的)取回單元取回與程序計數(shù)器中存儲的地址相關(guān)的一條指令。這樣,既然微定序器已經(jīng)知道(從程序計數(shù)器)下一條指令的地址,取出的指令可以被標(biāo)識為屬于一個執(zhí)行實體。
舉例來說,假定一個有幾個線程的系統(tǒng),可以使用兩個或多個獨立的程序計數(shù)器。例如,三個程序計數(shù)器PC0,PC1和PC2可以分別與三個微定序器430,432和434相關(guān)聯(lián)。操作系統(tǒng)可以裝入程序計數(shù)器PC0,PC1和PC2的初始狀態(tài)以使這些程序計數(shù)器可以取得與不同線程相關(guān)聯(lián)的指令。PC0與微定序器430的結(jié)合跟蹤第一個線程的程序順序,PC1與第二個微定序器的結(jié)合跟蹤第二個線程的程序順序,等等。當(dāng)一個由PC0指向的指令被取出時,CPU200知道它屬于有EID,例如0,的第一個線程。于是這個EID被附到CPU200中的指令上,隨后被附到由定序器414中的微定序器430,432和434產(chǎn)生的存儲在指令隊列412中以執(zhí)行的微操作上。
如圖4所示,定序器414的輸出端口被提供給一個流水線后端模塊415,它包括多個功能模塊,如提前分支執(zhí)行單元416,快速解碼器418,算術(shù)/邏輯單元420和一個地址生成器單元422。在由定序器414對一個或多個微操作的執(zhí)行中,這些功能單元可以被訪問以執(zhí)行所請求的操作。
流水線后端模塊415也包括寄存器文件424,426和428。CPU200中的寄存器文件424,426和428對應(yīng)于三個EID群EID0,EID1和EID2。寄存器文件424,426和428每個也包括控制寄存器,狀態(tài)寄存器,標(biāo)記寄存器和通用寄存器。寄存器文件424,426和428在操作中由流水線后端模塊415中的功能單元來進行更新。依照一個實施方案,寄存器文件424,426和428也可以被獨立和同時訪問。
在所闡述的實施方案中,假如請求之間沒有從屬性并且多個請求不需要使用相同的功能單元416,418,420和422,那么與不同EIDs相關(guān)聯(lián)的請求可以被同時處理。在微定序器430,432和434的當(dāng)前操作中,寄存器文件424,426和428以及多單元高速緩存器存儲器中的高速緩存器模塊可以被同時訪問和更新。
在CPU200的數(shù)據(jù)路徑中,一個存儲緩沖器450(對寫操作)和一個載入緩沖器452(對讀操作)分別存儲那些從BFU404取得的數(shù)據(jù)和以BFU404為目標(biāo)的數(shù)據(jù)。存儲和載入緩沖器450和452被連接到一個內(nèi)部數(shù)據(jù)總線上,該內(nèi)部數(shù)據(jù)總線被連接到幾個單元上,包括P0-高速緩存器102,P1-高速緩存器104,P2-高速緩存器106,流水線后端模塊415和一個地址轉(zhuǎn)換后備緩沖器(TLB)456。
指令高速緩存器406中的指令的地址被送到TLB456,它基本上是CPU200中的一個高速存儲器來把從指令高速緩存器406來的虛擬地址轉(zhuǎn)換成物理地址以訪問數(shù)據(jù)高速緩存器模塊102,104和106。
基于多單元數(shù)據(jù)高速緩存器的可用性,微代碼定序器414中的控制邏輯436可以通過微定序器430,432和434中的一個來為處理選擇一個適當(dāng)?shù)闹噶?。如果需要?shù)據(jù)訪問,微定序器430,432和434可以同時訪問多單元數(shù)據(jù)高速緩存器中的幾個高速緩存器模塊。
這樣,為了提高系統(tǒng)性能,依靠同時訪問L1多單元高速緩存器中的數(shù)據(jù),多個指令可以在CPU200中執(zhí)行。
在一些實施方案中,定序器414的控制邏輯436也可以考慮可能載入/存儲排序,未完成的數(shù)據(jù)高速緩存器重裝以及其它問題。例如,在一個實施方案中,與一個被確定為有高命中率的請求相關(guān)聯(lián)的指令可以被首先調(diào)度,一個有高優(yōu)先級受實時限制的執(zhí)行實體的指令也可以這樣。
參照圖5,示出了依照一個實施方案的指令執(zhí)行順序的通用流程。指令由CPU通過主機總線203從主存儲器206或L2高速緩存器中取得(302)。在一個實施方案中,相關(guān)EID與指令一起被取回。在另一實施方案中,相關(guān)EID并未被存儲也就不能被取回。取回的指令隨即被解碼段408翻譯成內(nèi)部微操作(304),并將一個相應(yīng)的EID附到每一個微操作上。該EID可以是與指令一起被取回的或是由CPU200根據(jù)指令的地址位置或根據(jù)哪一個微定序器取回了這條指令來確定的。接著,翻譯出的微操作被存儲在指令隊列412中(306)。微操作隨即被傳送到微定序器430,432,434中的一個以執(zhí)行(308)。微操作的執(zhí)行可以引起一個數(shù)據(jù)高速緩存器訪問請求被產(chǎn)生(310),這種情況下根據(jù)所附的EIDP-高速緩存器模塊中相應(yīng)的一個被訪問。這個EID被高速緩存器控制器108解碼且一個適當(dāng)?shù)恼埱蟊凰偷揭粋€相應(yīng)的P-高速緩存器(102,104或106)。之后數(shù)據(jù)訪問請求就在所分配的P-高速緩存器中完成(312)。
當(dāng)所描述的實施方案包括一個多單元高速緩存器存儲器來存儲數(shù)據(jù)時,可以預(yù)期在進一步的實施方案中多單元高速緩存器存儲器可以被修改以存儲不同執(zhí)行實體的指令。在這樣的實施方案中,存儲在多單元高速緩存器存儲器中的信息包括指令自身。
雖然本發(fā)明相對于幾種有限的實施方案被公開,但本領(lǐng)域的技術(shù)人員應(yīng)理解從其中所做的大量更改和變化。意味著所附權(quán)利要求覆蓋了所有屬于本發(fā)明真實精神和范圍的更改和變化。
權(quán)利要求
1.一種系統(tǒng)包括一個處理器;在處理器上可執(zhí)行的多個執(zhí)行實體;以及一個有多個緩沖區(qū)的緩沖存儲器,每個緩沖區(qū)用于存儲與來自多個緩沖區(qū)中相應(yīng)的一個的請求相關(guān)聯(lián)的信息。
2.權(quán)利要求1的系統(tǒng),進一步包括一個用于給執(zhí)行實體分配標(biāo)識符和給每個緩沖區(qū)分配一個標(biāo)識符的軟件層。
3.權(quán)利要求2的系統(tǒng),進一步包括一個被可操作連接到緩沖存儲器的控制器從而根據(jù)與來自一個執(zhí)行實體的請求相關(guān)聯(lián)的標(biāo)識,選擇一個緩沖區(qū)
4.權(quán)利要求1的系統(tǒng),其中執(zhí)行實體包括進程。
5.權(quán)利要求1的系統(tǒng),其中執(zhí)行實體包括線程。
6.權(quán)利要求1的系統(tǒng),其中緩沖存儲器包括一個有多個高速緩存器節(jié)的高速緩存器存儲器。
7.權(quán)利要求6的系統(tǒng),其中高速緩存器節(jié)被配置以有不同的屬性。
8.權(quán)利要求7的系統(tǒng),其中屬性包括高速緩存器行替換策略。
9.權(quán)利要求7的系統(tǒng),其中屬性包括高速緩存器更新策略。
10.權(quán)利要求7的系統(tǒng),其中屬性包括高速緩存器組織方式。
11.權(quán)利要求6的系統(tǒng),其中高速緩存器存儲器包括一個多級高速緩存器存儲器,其中至少有一級包括一個有多個高速緩存器節(jié)的多單元高速緩存器存儲器。
12.權(quán)利要求1的系統(tǒng),其中執(zhí)行實體依照不同的時間和空間位置特征處理數(shù)據(jù),且每一個緩沖區(qū)根據(jù)時間和空間位置特征進行配置。
13.一種在有多個執(zhí)行實體的系統(tǒng)中使用的高速緩存器存儲器,包括一個高速緩存器控制器;和多個緩沖區(qū),高速緩存器控制器用于根據(jù)信息與哪個執(zhí)行實體相關(guān)聯(lián),將信息存儲于高速緩存器節(jié)中的一個。
14.權(quán)利要求13的高速緩存器存儲器,其中高速緩存器控制器包括帶標(biāo)識符的可編程存儲部件以標(biāo)識與每個高速緩存器節(jié)相關(guān)聯(lián)的一個或多個執(zhí)行實體。
15.一種設(shè)置有多個高速緩存區(qū)的高速緩存器存儲器的方法,高速緩存器存儲器位于一個有多個執(zhí)行實體的系統(tǒng)中,方法包括根據(jù)哪一個高速緩存器節(jié)將為執(zhí)行實體所用而為每個執(zhí)行實體分配一個標(biāo)識符;和根據(jù)分配給該高速緩存器節(jié)的一個或多個執(zhí)行實體的高速緩存器使用特征,配置每一個高速緩存器節(jié)。
16.權(quán)利要求15的方法,其中配置包括設(shè)置每個高速緩存器節(jié)的屬性。
17.權(quán)利要求16的方法,其中屬性設(shè)置包括為每一個高速緩存器節(jié)設(shè)置一個替換策略。
18.權(quán)利要求16的方法,其中屬性設(shè)置包括為每一個高速緩存器節(jié)設(shè)置一個更新策略。
19.一種在帶有多個產(chǎn)生指令的執(zhí)行實體的系統(tǒng)中的存儲器子系統(tǒng),包括一個控制器;和一個有多個緩沖區(qū)的多單元緩沖存儲器,控制器用于根據(jù)哪一個執(zhí)行實體產(chǎn)生了該指令來選擇一個緩沖區(qū)以存儲與指令相關(guān)聯(lián)的信息。
20.權(quán)利要求19的存儲器子系統(tǒng),其中控制器包括對應(yīng)于每一個緩沖區(qū)的存儲部件,它們對標(biāo)識執(zhí)行實體的值是可編程的。
全文摘要
一種系統(tǒng)包括多個執(zhí)行實體(例如任務(wù),進程,線程等)(258,260)和一個有多個區(qū)(102,104,106)的高速緩存器存儲器(100)。每個執(zhí)行實體被分配一個標(biāo)識符。執(zhí)行實體(258,260)之一的一條指令與相關(guān)標(biāo)識符一起被取回并被解碼。與指令相關(guān)的信息根據(jù)標(biāo)識符被存儲于高速緩存器區(qū)(102,104,106)之一。
文檔編號G06F12/08GK1334938SQ99816091
公開日2002年2月6日 申請日期1999年9月22日 優(yōu)先權(quán)日1998年12月8日
發(fā)明者Z·N·蔡, T·納卡尼施 申請人:英特爾公司