專利名稱:高速緩存鎖定設備及其方法
技術領域:
本公開內(nèi)容涉及處理設備,更具體地涉及用于處理設備的高速緩存。
背景技術:
處理設備有時采用一個或更多個高速緩存來為處理器提供暫時的、快速的訪問存 儲位置。響應于正在處理器中執(zhí)行的存儲指令,高速緩存確定該高速緩存的高速緩存行 (cache line)是否已經(jīng)與存儲地址相關聯(lián)。在高速緩存命中的情況下,該高速緩存將數(shù)據(jù) 存儲在與該存儲地址相關聯(lián)的高速緩存行中。如果不存在與包含有效數(shù)據(jù)的存儲地址相關 聯(lián)的高速緩存行,則發(fā)生高速緩存未中。如果發(fā)生高速緩存未中,則該高速緩存通過識別該 高速緩存最近最少使用的(LRU)高速緩存行來確定高速緩存行以存儲要存儲的數(shù)據(jù)。將存 儲在LRU高速緩存行中的數(shù)據(jù)替換為正被存儲的數(shù)據(jù),并且該高速緩存行的標記與該存儲 地址相關聯(lián)。為了保留用于關鍵數(shù)據(jù)的高速緩存行,處理器中的軟件程序或例程可以指示 該高速緩存鎖定高速緩存行,從而迫使該高速緩存行與特定的存儲器地址相關聯(lián),以便保 證在高速緩存中被鎖定的高速緩存行不會被替換為與另一個存儲器地址相關聯(lián)的數(shù)據(jù)。
除存儲數(shù)據(jù)之外,高速緩存可以存儲每個高速緩存行的一致性(coherency)狀態(tài) 信息,以便保持該高速緩存中的數(shù)據(jù)與處理系統(tǒng)的外部存儲器和其它高速緩存的一致性。 例如,可以響應于接收如下指示而使與高速緩存行相關聯(lián)的有效位無效,該指示為已經(jīng)在 高速緩存外部的存儲位置處請求訪問與高速緩存行相關聯(lián)的存儲器地址。響應于對與高速 緩存行相關聯(lián)的存儲器地址的外部存儲器訪問,當前處理設備將自動地將高速緩存行置于 未鎖定狀態(tài),從而允許分配高速緩存行來存儲來自任何地址的數(shù)據(jù)。因此,為了保持被無效 的高速緩存行的鎖定狀態(tài),軟件程序或例程必須監(jiān)視鎖定的高速緩存行并且當它被無效時 重新鎖定該高速緩存行。這增加了軟件程序的大小并且降低了它的效率。因此,需要一種 新的處理設備。
圖1是處理設備100的具體實施例的框圖; 圖2是處理設備100的一部分的具體實施例的框圖; 圖3是圖1的高速緩存的具體實施例的框圖; 圖4是圖1的高速緩存的可能狀態(tài)的具體實施例的框圖; 圖5是示出了在圖1的高速緩存的高速緩存行的可能狀態(tài)之間的變化的具體實施 例的圖;以及 圖6是在高速緩存中加載和存儲數(shù)據(jù)的方法的具體實施例的流程圖。
具體實施例方式
公開了一種用于鎖定高速緩存的高速緩存行的方法和設備。該方法包括響應于 接收如下的指示,自動地將高速緩存行的狀態(tài)從有效的鎖定狀態(tài)變?yōu)闊o效的鎖定狀態(tài),該指示為該高速緩存外部的并且對應于該高速緩存行的存儲位置與處理器或其它數(shù)據(jù)訪問 模塊的訪問請求相關聯(lián)。因而,即使在使鎖定的高速緩存行中的數(shù)據(jù)無效之后,也保持高速 緩存行的鎖定狀態(tài)。通過保持該無效的鎖定狀態(tài),高速緩存行不可用于高速緩存的再分配。 這使得變?yōu)闊o效的鎖定的高速緩存行能夠保持鎖定,而沒有用于周期性確定該鎖定是否已 經(jīng)由于高速緩存行的無效而失去的額外軟件開銷。 參考圖l,示出了設備100的具體實施例。設備100包括處理器102、高速緩存104、 一致性控制模塊110、前端高速緩存112、處理器120、存儲器控制器130、1/0控制器132和 存儲器134。設備100還包括總線103、前端總線105和I/O總線107。處理器102通過總 線103訪問高速緩存104。處理器102、一致性控制模塊IIO和處理器120通過前端總線105 彼此連接。 一致性控制模塊110、存儲器控制器130和I/O控制器132通過I/O總線107彼 此連接。存儲器控制器130連接到存儲器134。將理解,圖1所示的模塊的其它配置是可能 的。例如,在具體實施例中,所有模塊連接到公共總線或交叉開關。 處理器102可以是諸如微處理器、微控制器等的處理器。類似地,處理器120可以 是諸如微處理器、控制器、微控制器等的處理器。 高速緩存104可以是數(shù)據(jù)高速緩存、指令高速緩存、統(tǒng)一的(unitary)高速緩存等 等。在具體實施例中,高速緩存104是8路組關聯(lián)的高速緩存。經(jīng)由總線103訪問高速緩 存104,該高速緩存104存儲與處理器102中執(zhí)行的指令相關聯(lián)的數(shù)據(jù)。
高速緩存104包括大量高速緩存行,每個有效高速緩存行與存儲器地址相關聯(lián)。 此外,高速緩存104保存每個高速緩存行的狀態(tài)信息,包括一致性狀態(tài)信息。例如,對于每 個高速緩存行,高速緩存104指示存儲在高速緩存行中的數(shù)據(jù)是否有效,它是否是共享數(shù) 據(jù),該數(shù)據(jù)是否已由處理器102修改,等等。狀態(tài)信息還指示每個高速緩存行的鎖定狀況 (status),以便指示高速緩存行是否可以與不同的存儲器地址相關聯(lián)。在具體實施例中,高 速緩存104是回寫式高速緩存。在另一個具體實施例中,高速緩存104是直寫式高速緩存。
存儲器控制器130經(jīng)由I/O總線接收存儲器訪問請求,并且基于那些存儲器請求 而訪問包括存儲器134、前端高速緩存112的存儲器,或者經(jīng)由I/O控制器132訪問外部存 儲器。在具體實施例中,將存儲器控制器130訪問的存儲器134與圖1所示的其它元件集 成在公共襯底(諸如封裝襯底或公共集成電路襯底)上。存儲器134可以是易失性或非易 失性的存儲器。 將I/0控制器132配置為便于設備100的模塊與外部外圍設備(未示出)之間的 通信。例如,1/0控制器132可以允許存儲器控制器130訪問外圍存儲器設備。因此,I/O 控制器管理外圍設備(包括存儲器)與設備100的模塊之間的信息的通信。
前端高速緩存112可以是數(shù)據(jù)高速緩存、指令高速緩存、統(tǒng)一的高速緩存等等。對 于可以訪問前端總線105的設備100的模塊(諸如處理器102和處理器120),前端高速緩 存112是可訪問的。 —致性控制模塊IIO從前端總線105和1/0總線107接收一致性信息,并且基于所 接收的一致性信息將一致性控制信息提供給設備100的模塊,以便確保保持數(shù)據(jù)一致性。
在操作期間,處理器102和處理器120都可以訪問存儲器134和高速緩存112。例 如,處理器102可以通過將存儲器地址發(fā)送到存儲器控制器130來讀取存儲器134的位置。 作為響應,存儲器控制器130從存儲器134中檢索與該存儲器地址相關聯(lián)的數(shù)據(jù)。在具體器130檢索足夠的數(shù)據(jù)以填充高速緩存104的高速緩存行并且將數(shù) 據(jù)提供給處理器102。處理器102接收所檢索的數(shù)據(jù)并且將它存儲在高速緩存104的高速 緩存行中。此外,高速緩存104存儲與存儲器地址相關聯(lián)的標記信息,該標記信息指示檢索 的高速緩存行與從其中檢索該數(shù)據(jù)的存儲器134的存儲器地址相關聯(lián)。處理器120和處理 器102可以類似地訪問存儲器134并且將所檢索的數(shù)據(jù)存儲在前端高速緩存112中。
—致性控制模塊110接收與訪問存儲器134、前端高速緩存112、高速緩存104和 設備100的任何其它存儲器有關的信息,并且將一致性信息提供給前端高速緩存112、高速 緩存104和其它存儲器以保持數(shù)據(jù)一致性。例如,如果外部處理器或其它設備在存儲器134 中訪問與高速緩存104的高速緩存行相關聯(lián)的存儲器地址,則一致性控制模塊110向高速 緩存104通知該存儲器訪問。 為了向高速緩存104通知與存儲器地址相關聯(lián)的存儲器訪問, 一致性模塊110可 以經(jīng)由處理器102將一致性控制信息提供給高速緩存104?;诖诵畔ⅲ梢员3峙c存儲器 地址相關聯(lián)的高速緩存104的高速緩存行的一致性信息的狀態(tài)。例如,響應于指示已經(jīng)請 求訪問存儲器地址的一致性控制信息,高速緩存104可以改變與存儲器地址相關聯(lián)的高速 緩存行的一致性狀態(tài)信息,以便指示存儲在該高速緩存行中的數(shù)據(jù)是無效的。
處理器102可以通過執(zhí)行指令來控制高速緩存行的鎖定狀態(tài),以便基于程序或操 作系統(tǒng)的用戶指令來設置每個高速緩存行的鎖定狀態(tài)。例如,軟件可以發(fā)出指令來明確地 鎖定或解鎖高速緩存104的特定高速緩存行。處于鎖定狀態(tài)的高速緩存行不可用于被高速 緩存104響應于處理器102中的存儲器訪問而再分配。因此,只要鎖定的高速緩存行處于 鎖定狀態(tài),它就仍然被分配給特定地址。 —旦被鎖定,高速緩存104的高速緩存行的鎖定狀態(tài)不會響應于由一致性控制模 塊110引起的高速緩存行一致性狀況的變化而變化。取而代之,在高速緩存104中維持鎖 定狀態(tài),直到處理器102中的指令明確地改變它。因此,在由于存儲器134中的存儲器訪問 而導致鎖定的高速緩存行的一致性狀況從有效狀態(tài)變?yōu)闊o效狀態(tài)的情況下,高速緩存行仍 然是鎖定的。由于不需要軟件干預來保持鎖定,因此自動將高速緩存行保持鎖定與現(xiàn)有技 術相比具有優(yōu)勢。 參考圖2,示出了處理器202(對應于圖1的處理器102)、總線203(對應于圖1的 總線103)、高速緩存204 (對應于圖1的高速緩存104)和高速緩存一致性模塊210 (對應于 圖1的高速緩存一致性模塊110)的具體實施例的框圖。處理器202和高速緩存204每個 都連接到總線203。高速緩存一致性模塊210和處理器202連接到與圖1的前端總線105 對應的前端總線205。 總線203包括地址總線280、數(shù)據(jù)總線281、控制總線282 ("CTRL")和命中/未中 總線283 ( "H/M")。地址總線280在處理器202和高速緩存204之間傳遞地址信息,而數(shù) 據(jù)總線281傳遞要被加載或存儲的數(shù)據(jù)??刂瓶偩€282傳遞控制信息,并且命中/未中總 線283在處理器202和高速緩存204之間傳遞高速緩存命中信息。 處理器202包括加載/存儲控制模塊220、存儲器子系統(tǒng)(MSS) 222和總線接口單 元(BIU) 224。加載/存儲控制模塊220連接到存儲器子系統(tǒng)222,存儲器子系統(tǒng)222為處 理器202的模塊提供到總線203的接口,而總線接口單元224為處理器202的模塊提供到 總線205的接口。
6
加載/存儲控制模塊220與存儲器子系統(tǒng)222通信來控制處理器202的加載和存 儲操作。存儲器子系統(tǒng)222在需要時通過將控制信息提供給CTRL總線282和總線205來執(zhí) 行加載和存儲操作。存儲器子系統(tǒng)222經(jīng)由總線接口單元224向高速緩存一致性模塊210 提供一致性控制信息并且從高速緩存一致性模塊210接收一致性控制信息。
高速緩存204包括陣列控制模塊230、數(shù)據(jù)陣列232、最近最少使用的(LRU)陣列 234和標記/狀況陣列236。數(shù)據(jù)陣列232包括高速緩存204的高速緩存行。高速緩存行 被存儲為多個高速緩存行組,每個高速緩存行組與被稱為索引的存儲器地址的特定部分相 關聯(lián)。LRU陣列234存儲如下的信息,該信息指示高速緩存行組內(nèi)的哪個高速緩存行是最近 最少使用的。在具體實施例中,LRU陣列234被實現(xiàn)為偽LRU。 標記/狀況陣列236存儲每個高速緩存行的標記信息和一致性信息。陣列控制模 塊230經(jīng)由CTRL總線282接收加載和存儲控制信息?;谠摷虞d和存儲控制信息,陣列控 制模塊訪問標記/狀況陣列236、 LRU陣列234和數(shù)據(jù)陣列232以執(zhí)行加載和存儲操作。
在操作期間,存儲器子系統(tǒng)222經(jīng)由控制總線282提供高速緩存204的高速緩存 行的狀況控制信息。狀況控制信息可以基于從高速緩存一致性模塊210接收到的一致性信 息,或者基于正由加載/存儲模塊220處理的指令,諸如加載/存儲指令和明確指示高速緩 存204的位置應當被鎖定的指令。基于該控制信息,陣列控制模塊230改變標記/狀況陣 列236中的相關聯(lián)高速緩存行的狀況信息。 加載/存儲控制模塊220與存儲器子系統(tǒng)222接口連接,以便執(zhí)行由正在處理器 202中運行的軟件程序或例程提供的加載和存儲指令。為了執(zhí)行加載指令,存儲器子系統(tǒng) 222經(jīng)由地址總線280將地址提供給高速緩存204。響應于接收該地址,陣列控制模塊230 基于該地址將索引值提供給標記/狀況陣列236,標記/狀況陣列236提供與如下高速緩 存行組的高速緩存行相關聯(lián)的一組標記值和狀況信息,該高速緩存行組對應于該索引?;?于所接收的標記和狀況值,陣列控制模塊230確定高速緩存行是否已經(jīng)被分配給該地址, 以及該高速緩存行是否存儲有效數(shù)據(jù)。如果已將存儲有效數(shù)據(jù)的高速緩存行分配給該地址 (即,高速緩存命中),則陣列控制模塊230在命中/未中總線283上指示命中并且從數(shù)據(jù) 陣列232中檢索所請求的數(shù)據(jù)。經(jīng)由數(shù)據(jù)總線281將所檢索的數(shù)據(jù)提供給處理器202。
如果標記/狀況陣列236指示在數(shù)據(jù)陣列232中不存在與提供的地址相關聯(lián)的高 速緩存行,或者如果在數(shù)據(jù)陣列232中存在具有無效數(shù)據(jù)的與提供的地址相關聯(lián)的高速緩 存行,則相對于該加載指令發(fā)生了高速緩存未中。如果發(fā)生高速緩存未中,則陣列控制模塊 230在命中/未中總線283上指示未中,向存儲器子系統(tǒng)222通知應當從存儲器檢索所請求 的數(shù)據(jù)。響應于高速緩存未中,存儲器子系統(tǒng)222從其它地方檢索所請求的數(shù)據(jù),并且當接 收到數(shù)據(jù)時通過執(zhí)行存儲操作將它存儲在高速緩存204中。 為了執(zhí)行存儲操作,在發(fā)生高速緩存未中的情況下檢索數(shù)據(jù)之后或者響應于加載 /存儲控制模塊220中的存儲指令,存儲器子系統(tǒng)經(jīng)由地址總線280將與要被存儲的數(shù)據(jù)相 關聯(lián)的地址提供給高速緩存204。經(jīng)由數(shù)據(jù)總線281提供要被存儲的數(shù)據(jù)。為了存儲數(shù)據(jù), 陣列控制模塊230訪問標記/狀況陣列以確定數(shù)據(jù)陣列232中的有效或鎖定的高速緩存行 是否已經(jīng)被分配給該接收的地址。如果是這樣的話,陣列控制模塊230將該訪問處理為引 起高速緩存命中,并且將接收的數(shù)據(jù)存儲在由標記/狀況陣列236指示的數(shù)據(jù)陣列232中 的高速緩存行中。如果在數(shù)據(jù)陣列232中不存在已經(jīng)與該地址相關聯(lián)的高速緩存行,則陣
7列控制模塊230存儲LRU陣列234,以便確定數(shù)據(jù)陣列232中的用來存儲該數(shù)據(jù)的高速緩存 器線。 響應于明確鎖定存儲器地址的指令的執(zhí)行,加載/存儲控制模塊220可以向存儲 器子系統(tǒng)222指示應當鎖定與存儲器地址相關聯(lián)的高速緩存行。為了鎖定高速緩存行,存 儲器子系統(tǒng)222經(jīng)由CTRL總線282發(fā)送控制信息并且經(jīng)由地址總線280發(fā)送存儲器地址。 響應于接收存儲器地址,陣列控制模塊230確定數(shù)據(jù)陣列232的高速緩存行是否與存儲器 地址相關聯(lián)。如果是這樣的話,陣列控制模塊設置存儲在標記/狀況陣列236中的與高速 緩存行相關聯(lián)的狀況信息的狀態(tài),以便指示高速緩存行被鎖定。鎖定狀況指示符(諸如圖 4討論的專用鎖定位)可以指示標記/狀況陣列236中的高速緩存行的鎖定狀態(tài)。
如果高速緩存行不與要被鎖定的存儲器地址相關聯(lián),則陣列控制模塊230向存儲 器子系統(tǒng)222發(fā)送請求,以便從除了高速緩存204之外的其它位置檢索與該存儲器地址相 關聯(lián)的數(shù)據(jù)。在數(shù)據(jù)已被檢索并且存儲在數(shù)據(jù)陣列232的高速緩存行中之后,陣列控制模 塊230設置與高速緩存行相關聯(lián)的狀況信息的狀態(tài),從而指示高速緩存行被鎖定。
在存儲操作期間,鎖定的高速緩存位置不能夠被LRU陣列234識別出以用于與其 它存儲位置相關聯(lián)。此外,即使標記/狀況陣列236指示高速緩存位置處的數(shù)據(jù)是無效的, 在標記/狀況陣列236中也維持該高速緩存位置的鎖定狀態(tài)。因此,鎖定的高速緩存行保 持鎖定,直到由加載/存儲控制模塊220中的指令明確地將它解鎖。 參考圖3,示出了對應于圖2的高速緩存204的具體實現(xiàn)形式的高速緩存304的 具體實施例的框圖。高速緩存304包括陣列控制模塊330、數(shù)據(jù)陣列332、最近最少使用的 (LRU)陣列334以及標記/狀況陣列336。陣列控制模塊330包括路計算模塊340、標記比 較模塊342和索引生成模塊344。路計算模塊340包括連接到命中/未中(H/M)總線383 的輸入、連接到總線396 (T)的輸入、連接到總線382 (CTRL)的輸入、連接到總線398 (WAY_T) 的輸入以及連接到總線393(LRU)的輸入。路計算模塊340還包括連接到總線394(WAY)的 輸出。 標記比較模塊342包括連接到總線395 (TAG)的輸入和連接到總線392 (STATUS/ TAGX8)的輸入。標記比較模塊342還包括連接到H/M總線383的輸出、連接到T總線396 的輸出和連接到WAY_T總線398的輸出。索引生成模塊344包括連接到總線380 (ADDRESS) 的輸入和連接到總線382 (CTRL)的輸入。索引生成模塊344還包括連接到總線391 (INDEX) 的輸出和連接到TAG總線395的輸出。 數(shù)據(jù)陣列332包括連接到WAY總線394的輸入和連接到INDEX總線391的輸入。 數(shù)據(jù)陣列332還包括連接到總線381 (DATA)的輸入/輸出。LRU陣列334包括連接到INDEX 總線391的輸入和連接到LRU總線393的輸出。 標記/狀況陣列336包括連接到INDEX總線391的輸入、連接到CTRL總線382的 輸入和連接到STATUS/TAGX8總線392的輸出。標記/狀況陣列336存儲標記/狀況信息, 諸如表示特定高速緩存行的標記信息和狀況信息的標記/狀況信息350。標記/狀況信息 350包括標記信息352、有效性信息354、修改信息356、共享信息358和鎖定信息360。
標記/狀況陣列336中的狀況信息可以由CTRL總線382上提供的控制信息基于 一致性信息或基于處理器中執(zhí)行的指令而改變。例如,一致性控制模塊210(圖2)可以經(jīng) 由CTRL總線382指示應當將有效信息354的狀況設置為指示與標記信息350相關聯(lián)的高速緩存行是無效的。類似地,加載/存儲控制模塊220(圖2)中執(zhí)行的指令可以經(jīng)由CTRL 總線382明確地設置鎖定信息360的狀況。 索引生成模塊344解碼ADDRESS總線380上提供的地址?;谠摰刂?,索引生成模 塊344在TAG總線395上提供標記并且在INDEX總線391上提供索引。索引生成模塊344 還經(jīng)由CTRL總線382接收控制信息,包括指示接收的地址是否與加載或存儲操作相關聯(lián)的 信息。索引生成模塊可以經(jīng)由TAG總線395提供此控制信息。 標記/狀況陣列336經(jīng)由INDEX總線391接收索引信息。基于該索引信息,標記/ 狀況陣列336經(jīng)由STATUS/TAGX8總線392提供與索引信息相關聯(lián)的每個高速緩存行的標 記信息和狀況信息。在具體實施例中,高速緩存304是8路關聯(lián)高速緩存,因此經(jīng)由STATUS/ TAGX8總線392提供8組標記和狀況信息。 標記比較模塊342將經(jīng)由TAG總線395接收的標記信息與經(jīng)由STATUS/TAGX8總 線392接收的標記信息進行比較,以便確定是存在高速緩存命中還是高速緩存未中。標記 比較模塊342經(jīng)由H/M總線383指示高速緩存命中或高速緩存未中。此外,如果發(fā)生高速 緩存命中,則標記比較模塊342經(jīng)由WAY_T總線398提供指示與該命中標記相關聯(lián)的高速 緩存行的信息。此外,標記比較模塊342基于接收的與該命中標記相關聯(lián)的狀況信息來確 定與高速緩存命中相關聯(lián)的高速緩存行是否為無效和鎖定的高速緩存行,并且經(jīng)由T總線 396提供指示高速緩存行的無效和鎖定狀況的信息。 LRU陣列334接收經(jīng)由INDEX總線391提供的索引?;诮邮盏乃饕?,LRU陣列 334確定與該索引相關聯(lián)的最近最少使用的高速緩存行,并且經(jīng)由LRU總線393指示高速緩 存行。在具體實施例中,LRU陣列334使用偽LRU程序來確定最近最少使用的高速緩存行。
路計算模塊340在CTRL總線382上接收指示是否正在執(zhí)行加載或存儲操作的信 息,并且在H/M總線383上接收指示該加載或存儲操作是否已經(jīng)導致高速緩存命中或高速 緩存未中的信息。如果發(fā)生高速緩存命中,則路計算模塊340訪問經(jīng)由WAY_T總線398接 收的高速緩存行信息,以便確定應當加載或存儲哪個高速緩存行。如果對于存儲操作發(fā)生 高速緩存未中,則路計算模塊340訪問經(jīng)由LRU總線393提供的信息,以便確定應當存儲哪 個高速緩存行。路計算模塊340基于由H/M總線383提供的命中/未中信息、由CTRL總線 382提供的加載/存儲信息以及由T總線396提供的有效-鎖定信息,來選擇高速緩存行。
例如,如果接收的信息指示加載操作和高速緩存命中,則路計算模塊340選擇經(jīng) 由WAY_T總線398提供的高速緩存行信息。如果接收的信息指示加載操作和高速緩存未中, 則路計算模塊340不選擇高速緩存行信息,因為請求的數(shù)據(jù)沒有存儲在高速緩存中并且必 須從存儲器中檢索。 如果接收的信息指示存儲操作和高速緩存未中,并且T總線396指示沒有無效且 鎖定的高速緩存行與接收的地址相關聯(lián),則路計算模塊選擇經(jīng)由LRU總線393提供的高速 緩存行信息。如果接收的信息指示存儲操作和高速緩存未中,并且T總線396指示無效且 鎖定的路與接收的地址相關聯(lián),則路計算模塊342選擇經(jīng)由WAY_T總線398提供的高速緩 存行信息。如果接收的信息指示高速緩存命中,則路計算模塊342選擇經(jīng)由WAY_T總線398 提供的高速緩存行信息。 數(shù)據(jù)陣列332經(jīng)由WAY總線394接收高速緩存行信息以及指示正在執(zhí)行加載操作 還是存儲操作的信息。如果發(fā)生加載操作,則數(shù)據(jù)陣列332在DATA總線381上提供在指示
9的高速緩存行中存儲的數(shù)據(jù)。如果發(fā)生存儲操作,數(shù)據(jù)陣列332將在DATA總線381上提供 的數(shù)據(jù)存儲在指示的高速緩存行中。 將理解,高速緩存行的狀況位可以用于確定陣列控制模塊330將如何處理高速緩 存行。例如,參考圖4,在表400的列401-404中列出了用于有效(V)、修改(M)、共享(S) 和鎖定(L)的高速緩存狀況位。如圖所示,將理解,一組狀況位值可以對應于多于一個的狀 態(tài)項,如這里所使用的。例如,具有表400的行410中所示的狀況位值的高速緩存行可以被 認為是處于有效狀態(tài)、修改狀態(tài)、共享狀態(tài)和未鎖定狀態(tài)以及它們的組合。類似地,具有表 400的行412中所示的狀況位值的高速緩存行可以被認為是處于無效狀態(tài)、未修改狀態(tài)、排 它狀態(tài)和鎖定狀態(tài)。因此,將理解,基于特定的一組狀況位狀態(tài),可以認為高速緩存行處于 有效且未鎖定(有效/未鎖定)狀態(tài)(如列405所示)、有效且鎖定(有效/鎖定)狀態(tài) (如列406所示)、無效且未鎖定(無效/未鎖定)狀態(tài)(如列407所示)、或者無效且鎖定 (無效/鎖定)狀態(tài)(如列408所示)。將理解,不是該表中闡述的所有狀態(tài)對于所有的一 致性方案都可以是有效的。 高速緩存行的狀況可以用于確定高速緩存如何處理高速緩存行。例如,如果高速 緩存行的狀況是無效且鎖定的(如列408所示),則高速緩存可以防止該高速緩存行被與不 同的存儲器地址相關聯(lián)的數(shù)據(jù)替代,從而保持該高速緩存行的鎖定狀況。
參考圖5,示出了描述高速緩存中的高速緩存行的可能狀態(tài)的具體實施例的狀態(tài) 圖500。狀態(tài)圖500示出了高速緩存行的四個特定狀態(tài)未分配狀態(tài)502、有效/未鎖定狀 態(tài)504、無效/鎖定狀態(tài)506和有效/鎖定狀態(tài)508。如圖所示,高速緩存行可以開始于未 分配狀態(tài)502(諸如在重置操作之后),其指示還沒有為高速緩存行分配存儲器地址。未分 配狀態(tài)還可以對應于高速緩存行處于無效/未鎖定狀態(tài)中的狀態(tài)。 如果在未分配狀態(tài)502下通過加載或存儲操作來為高速緩存行分配存儲器地址, 則高速緩存行的狀態(tài)移到有效/未鎖定狀態(tài)504,例如,高速緩存行的有效位(V)被斷言 (assert)并且高速緩存行的鎖定位被求反(negate)。如果在未分配狀態(tài)502下接收到軟 件鎖定指令,則為高速緩存行分配存儲器地址,從除了該高速緩存之外的存儲器中檢索與 該存儲器地址相關聯(lián)的數(shù)據(jù)并且將其存儲在高速緩存行中,并且將該高速緩存行的狀態(tài)設 置為有效/鎖定狀態(tài)508,例如,高速緩存行的有效位(V)和鎖定位(L)兩個都被斷言。在 可替代實施例(未示出)中,響應于軟件鎖定不檢索數(shù)據(jù),并且將高速緩存行的狀態(tài)設置為 無效/鎖定狀態(tài)506,例如,高速緩存行的有效位(V)被求反并且高速緩存行的鎖定位(L) 被斷言。 在有效/未鎖定狀態(tài)504下,如果接收到無效指示(諸如由于外部模塊對與該存 儲器地址相關聯(lián)的數(shù)據(jù)的訪問或者由于使其無效的軟件指令),則將高速緩存行的狀態(tài)設 置為無效/未鎖定狀態(tài)502,例如,高速緩存行的有效位(V)被求反。如果在有效/未鎖定 狀態(tài)504下接收到軟件鎖定指令,則高速緩存行的狀態(tài)被設置為有效/鎖定狀態(tài)508,例如, 高速緩存行的鎖定位(L)被斷言。 如果在有效/鎖定狀態(tài)508下接收到解鎖存儲器地址的軟件指令,則將高速緩存 行的狀態(tài)設置為有效/未鎖定狀態(tài)504,例如,高速緩存行的鎖定位(L)被求反。如果在有 效/鎖定狀態(tài)508下指示有使其無效的事件(諸如由外部模塊對與該存儲器地址相關聯(lián) 的數(shù)據(jù)的訪問)或使其無效的軟件指令,則將高速緩存行的狀態(tài)設置為無效且鎖定的狀態(tài)506,例如,高速緩存行的有效位(V)被求反。 如果在無效/鎖定狀態(tài)506下接收到加載/存儲操作,則將高速緩存行的狀態(tài)設 置為有效/鎖定狀態(tài),例如,高速緩存行的有效位(V)被斷言。如果在無效/鎖定狀態(tài)506下 接收到解鎖高速緩存行的軟件指令,則將高速緩存行的狀態(tài)設置為無效/未鎖定狀態(tài)502, 例如,高速緩存行的鎖定位(L)被求反。 參考圖6,示出了處理高速緩存訪問的方法的具體實施例的流程圖。在塊602處, 確定高速緩存訪問是加載操作還是存儲操作。如果發(fā)生加載操作,則該方法流移到塊604, 并且確定該加載操作是導致高速緩存命中還是高速緩存未中。如果發(fā)生高速緩存命中,則 該方法流前進到塊606并且從發(fā)生高速緩存命中的高速緩存行中提供數(shù)據(jù),并且該方法流 前進到塊624并且所示的方法結束。 如果在塊604中確定了高速緩存未中,則該方法流移到塊608并且從除了該高速 緩存之外的存儲器中檢索數(shù)據(jù)。 一旦檢索到數(shù)據(jù),則該方法流前進到塊610,使得檢索的數(shù) 據(jù)可以被存儲在高速緩存中。 回到塊602,如果確定了高速緩存訪問是存儲操作,則該方法流移到塊610,并且 確定與該存儲操作相關聯(lián)的地址是導致高速緩存命中、高速緩存未中還是高速緩存過期 (stale)命中。高速緩存過期命中指的是存在對應于與該存儲操作相關聯(lián)的地址的、鎖定的 高速緩存行,但是該鎖定的高速緩存行存儲無效的數(shù)據(jù)。 如果發(fā)生高速緩存命中,則該方法流移到塊620并且確定與該高速緩存命中相關 聯(lián)的高速緩存行。該方法流移到塊622并且將與該存儲相關聯(lián)的數(shù)據(jù)存儲到該高速緩存 行。該方法流前進到塊624并且該方法結束。 回到塊610,如果高速緩存訪問導致過期命中,則該方法流移到塊618并且確定與 該地址相關聯(lián)的無效/鎖定高速緩存行。該方法流前進到塊622,其中將數(shù)據(jù)存儲在該高速 緩存行中。 如果在塊610中確定了高速緩存未中,則該方法流移到塊612,并且基于一組高速 緩存行中的哪一個高速緩存行是最近最少使用的(LRU)來確定高速緩存行。在塊622中, 將與該高速緩存訪問相關聯(lián)的數(shù)據(jù)存儲在確定的高速緩存行中。 因而,所示的方法允許即使當與高速緩存行相關聯(lián)的數(shù)據(jù)是無效的時也保持該高 速緩存行的鎖定狀況。這減少了當數(shù)據(jù)被無效時軟件再鎖定先前鎖定的高速緩存行的需 要,從而提高了軟件效率。 在本文件中,諸如"第一"和"第二"等的關系術語可以被單獨使用以將一個實體 或動作與另一個實體或動作區(qū)分開來,而不一定要求或暗示在這樣的實體或動作之間存在 任何實際的這樣的關系或順序。術語"包括"、"包含"或其任何其它變體意圖覆蓋非排它的 包含,使得包括一列要素的過程、方法、物品或裝置不僅包括那些元素,而且可以包括沒有 明確列出的或者為這種過程、方法、物品或裝置所固有的其它要素。"包括"之后的要素毫無 更多約束地不排除在包括該要素的過程、方法、物品或裝置中附加的等效要素的存在。術語 "或"意圖覆蓋包括性的"或",使得如果有條件的"或"的兩個條件都滿足的話,則該條件滿 足。術語"范圍"可以包括僅僅包括單個值的范圍。 這里使用的術語"另一個"被定義為至少第二個或更多個。這里使用的術語"包 括"、"具有"或其任何變體被定義為包括。這里參考電光技術使用的術語"耦接"被定義為
11連接,但是不一定是直接連接而且不一定是機械連接。 使用術語"斷言"或"設置"和"求反"(或"解除斷言"或"清除")來指代分別將 信號、狀況位或類似的裝置變?yōu)樗倪壿嬚婊蜻壿嫾贍顟B(tài)。如果邏輯真狀態(tài)為邏輯電平一, 則邏輯假狀態(tài)為邏輯電平零。并且如果邏輯真狀態(tài)為邏輯電平零,則邏輯假狀態(tài)為邏輯電平一。 這里使用的術語"總線"用來指代可以用來傳送一個或更多個各種類型的信息 (諸如數(shù)據(jù)、地址、控制或狀況)的多個信號或?qū)w。這里討論的導體可以被示出或描述為 單個導體、多個導體、單向?qū)w或雙向?qū)w。但是,不同的實施例可以改變導體的實現(xiàn)方式。 例如,可以使用分開的單向?qū)w而不是雙向?qū)w,反之亦然。此外,多個導體可以被替換為 串聯(lián)或以時分復用方式傳送多個信號的單個導體。同樣地,傳送多個信號的單個導體可以 被分成傳送這些信號的子集的各個不同的導體。因此,對于傳送信號而言存在許多種選擇。
考慮這里公開的內(nèi)容的說明和實踐,該公開內(nèi)容的其它實施例、用途和優(yōu)點對本 領域技術人員而言將是清楚的。例如,盡管高速緩存中的存儲操作已被描述為將數(shù)據(jù)直接 寫到高速緩存行中,但是其它高速緩存可以通過從高速緩存中讀取高速緩存行、利用要被 存儲的數(shù)據(jù)修改高速緩存行、并且將修改的高速緩存行寫到高速緩存中來執(zhí)行存儲操作。 因此,該說明書和附圖應當被認為僅僅是示范性的,因此該發(fā)明的范圍意圖僅僅由以下權 利要求及其等同物來限定。
權利要求
一種方法,包括以下步驟當高速緩存中的高速緩存行處于第一狀態(tài)時,接收第一指示,所述第一指示是所述高速緩存外部的對應于所述高速緩存行的存儲位置與訪問請求相關聯(lián),所述第一狀態(tài)表明所述高速緩存行是有效且鎖定的;以及響應于接收所述第一指示,自動地將所述高速緩存行的狀態(tài)從所述第一狀態(tài)變?yōu)榈诙顟B(tài),所述第二狀態(tài)表明所述高速緩存行中的數(shù)據(jù)為無效且鎖定的。
2. 如權利要求1所述的方法,還包括以下步驟響應于第一指令在第一處理器中的執(zhí) 行,將所述高速緩存行的狀態(tài)從第三狀態(tài)變?yōu)樗龅诙顟B(tài),所述第三狀態(tài)表明所述高速 緩存行中的數(shù)據(jù)是有效且未鎖定的。
3. 如權利要求2所述的方法,其中響應于第二指令在第二處理器中的執(zhí)行來接收所述 第一指示。
4. 如權利要求1所述的方法,其中所述第一狀態(tài)還表明所述高速緩存外部的數(shù)據(jù)已被 修改。
5. 如權利要求1所述的方法,其中響應于第一指令在第一處理器中的執(zhí)行來接收所述 第一指示。
6. 如權利要求1所述的方法,其中所述第二狀態(tài)還表明所述數(shù)據(jù)被共享。
7. 如權利要求1所述的方法,其中所述第二狀態(tài)還表明所述數(shù)據(jù)已被修改。
8. 如權利要求1所述的方法,還包括以下步驟響應于第二指令在所述第一處理器中 的執(zhí)行,自動地將所述高速緩存行的狀態(tài)從第三狀態(tài)改變回到所述第二狀態(tài)。
9. 如權利要求8所述的方法,其中所述第二指令是存儲指令。
10. 如權利要求1所述的方法,其中自動地將高速緩存行的狀態(tài)從第二狀態(tài)變?yōu)榈谌隣顟B(tài)的步驟還包括基于模式位的狀態(tài)改變高速緩存行的狀態(tài)。
11. 如權利要求l所述的方法,還包括以下步驟響應于第二指令在所述第一處理器中 的執(zhí)行,自動地將所述高速緩存行的狀態(tài)從第三狀態(tài)變?yōu)榈谒臓顟B(tài),所述第四狀態(tài)表明所 述高速緩存行是無效且未鎖定的。
12. 如權利要求11所述的方法,還包括以下步驟響應于第三指令在所述第一處理器 中的執(zhí)行,自動地將所述高速緩存行的狀態(tài)從所述第四狀態(tài)變?yōu)樗龅诙顟B(tài)。
13. 如權利要求11所述的方法,還包括以下步驟響應于第三指令在所述第一處理器 中的執(zhí)行,自動地將所述高速緩存行的狀態(tài)從所述第四狀態(tài)變?yōu)樗龅谌隣顟B(tài)。
14. 如權利要求l所述的方法,還包括以下步驟 接收與所述高速緩存中的存儲訪問相關聯(lián)的地址; 接收與所述存儲訪問相關聯(lián)的數(shù)據(jù);以及響應于確定所述高速緩存行處于第二狀態(tài)且所述高速緩存行與所述地址相關聯(lián),將所 述數(shù)據(jù)存儲在所述第一高速緩存行中。
15. 如權利要求14所述的方法,還包括以下步驟響應于確定所述高速緩存不包括與 所述地址相關聯(lián)的任何高速緩存行,確定可用的高速緩存行并且將所述數(shù)據(jù)存儲在所述可 用的高速緩存行中。
16. 如權利要求15所述的方法,其中確定可用的高速緩存行的步驟包括響應于確定 所述高速緩存行處于所述第二狀態(tài),確定所述高速緩存行不可用。
17. —種設備,包括 處理器;高速緩存,耦接到所述處理器,所述高速緩存包括 數(shù)據(jù)陣列,被配置為存儲高速緩存行;狀況模塊,被配置為存儲與所述高速緩存行相關聯(lián)的狀態(tài)信息;陣列控制模塊,耦接到所述狀況模塊,所述陣列控制模塊被配置為響應于鎖定指令在 所述處理器中的執(zhí)行,將所述狀態(tài)信息變?yōu)榈谝粻顟B(tài),所述第一狀態(tài)表明所述高速緩存行 為有效且鎖定的,并且所述陣列控制模塊被配置為響應于接收所述高速緩存外部的并且對 應于所述高速緩存行的數(shù)據(jù)位置與訪問請求相關聯(lián)的指示,自動地將所述狀態(tài)信息從所述 第一狀態(tài)變?yōu)榈诙顟B(tài),所述第二狀態(tài)表明所述高速緩存行中的數(shù)據(jù)是無效且鎖定的。
18. 如權利要求17所述的設備,其中所述陣列控制模塊被配置為響應于第二指令在所 述處理器中的執(zhí)行,自動地將所述狀態(tài)信息從所述第二狀態(tài)變?yōu)樗龅谝粻顟B(tài)。
19. 如權利要求17所述的設備,其中所述陣列控制模塊被配置為響應于第二指令在所 述處理器中的執(zhí)行,自動地將所述狀態(tài)信息從所述第二狀態(tài)變?yōu)榈谌隣顟B(tài),所述第三狀態(tài) 表明所述高速緩存行是無效且未鎖定的。
20. 如權利要求18所述的設備,其中所述高速緩存是回寫式高速緩存。
全文摘要
公開了一種用于鎖定高速緩存的高速緩存行的方法和設備。該方法包括響應于接收指示而自動地將高速緩存行的狀態(tài)從有效且鎖定狀態(tài)變?yōu)闊o效且鎖定狀態(tài)(508),該指示是該高速緩存(104)外部的并且對應于該高速緩存行的存儲位置(134)與處理器(120)或其它數(shù)據(jù)訪問模塊的訪問請求相關聯(lián)。因而,即使在鎖定的高速緩存行中的數(shù)據(jù)被無效之后,也保持高速緩存行的鎖定狀態(tài)。通過保持該無效且鎖定的狀態(tài),高速緩存行不可用于高速緩存的再分配。這允許變?yōu)闊o效的鎖定的高速緩存行保持鎖定,而沒有用于周期性地確定該鎖定是否已經(jīng)由于高速緩存行的無效而丟失的額外軟件開銷。
文檔編號G06F12/00GK101772759SQ200880101685
公開日2010年7月7日 申請日期2008年6月17日 優(yōu)先權日2007年8月2日
發(fā)明者D·F·格林伯格, G·L·維森亨特, K·C·斯達瑟爾, K·M·布魯斯, M·B·斯米特勒, M·D·斯尼德爾, S·R·拉曼 申請人:飛思卡爾半導體公司