欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

經(jīng)由存儲器高速緩存操縱的無阻礙數(shù)據(jù)傳送的制作方法

文檔序號:6351129閱讀:153來源:國知局
專利名稱:經(jīng)由存儲器高速緩存操縱的無阻礙數(shù)據(jù)傳送的制作方法
經(jīng)由存儲器高速緩存操縱的無阻礙數(shù)據(jù)傳送
背景技術(shù)
如今的高速處理器可以執(zhí)行程序代碼并且可以按照比數(shù)據(jù)可從主存儲器獲取或存儲于其中快得多的速率來處理數(shù)據(jù)。為了減少處理器等待訪問存儲器而花費的時間,高速存儲器“高速緩存”充當(dāng)在處理器與主存儲器之間的媒介。高速緩存可以具有控制器和存儲器部件。高速緩存存儲器包含主存儲器中的數(shù)據(jù)子集的副本。高速緩存控制器響應(yīng)于來自處理器的存儲器訪問操作,并且根據(jù)何種數(shù)據(jù)在高速緩存存儲器中,可以快速訪問高速緩存存儲器以便完成存儲器操作。如果高速緩存正在維持響應(yīng)存儲器訪問操作所必需的數(shù)據(jù),那么相比需要直接訪問主存儲器的情況,高速緩存能夠更快地響應(yīng)于操作。高速緩存控制器除了響應(yīng)于存儲器訪問操作之外還維持高速緩存中的數(shù)據(jù)(有時將數(shù)據(jù)從主存儲器復(fù)制到高速緩存中或者將數(shù)據(jù)從高速緩存寫回到主存儲器中)。高速緩存控制器使用映射來跟蹤主存儲器的哪些地址被“高速緩存”。例如高速緩存塊(高速緩存的存儲器單元)可以與主存儲器中的地址關(guān)聯(lián)。高速緩存控制器可以維持如下映射,該映射標(biāo)識在高速緩存的塊與主存儲器中的地址之間的關(guān)聯(lián)。當(dāng)處理器發(fā)出用來識別主存儲器中的地址的存儲器訪問操作時,高速緩存控制器可以基于映射確定是否存在與包含該地址的主存儲器的一部分相關(guān)聯(lián)的高速緩存存儲器的塊。由于高速緩存幾乎總是小于主存儲器,所以高速緩存算法用來選擇在高速緩存中維持主存儲器的什么子集。已知各種高速緩存算法,但是每個算法通常都以增加可以使用高速緩存中的數(shù)據(jù)來完成存儲器訪問操作的可能性為目標(biāo)。然而在實踐中,高速緩存算法并不完美,并且針對非高速緩存地址的操作被接收。當(dāng)接收到對非高速緩存地址的操作時, 高速緩存控制器可以將數(shù)據(jù)從主存儲器地址復(fù)制到高速緩存中。如果所有高速緩存存儲器塊已滿,則高速緩存控制器可以視為通過將與那些地址關(guān)聯(lián)的塊中的數(shù)據(jù)改寫為來自其它地址的數(shù)據(jù)來將一些地址從高速緩存去除。然后控制器可以改變映射以示出與該塊中的數(shù)據(jù)對應(yīng)的新地址。高速緩存算法可以設(shè)置優(yōu)先級,該優(yōu)先級在與高速緩存中用于容納數(shù)據(jù)的空閑塊(free blocks)相比更多數(shù)據(jù)要被高速緩存的情況下,用于確定哪些地址要保持或從高速緩存中去除。當(dāng)高速緩存中的數(shù)據(jù)以這一方式替換為在主存儲器中的另一地址的數(shù)據(jù)時,高速緩存視為驅(qū)除更低優(yōu)先級的高速緩存地址。存儲器傳送操作常規(guī)地涉及高速緩存、處理器和主存儲器。存儲器訪問操作通常涉及到通過一個或者多個通信總線在處理器、高速緩存和主存儲器之間傳輸數(shù)據(jù)。傳送操作可以在執(zhí)行軟件的過程中由處理器發(fā)起。常見存儲器傳送操作包括復(fù)制、移動、交換和歸零。用于提高存儲器傳送操作的效率的其它技術(shù)同樣是已知用來減少處理器的負(fù)荷的。編程輸入/輸出(PIO)是一種處理器可以用來控制為了完成存儲器傳送所需要的讀取和寫入操作的技術(shù)。另一技術(shù)是直接存儲器訪問(DMA)。DMA允許除了處理器之外的硬件控制存儲器傳送操作。在PIO和DMA操作中,可以通過處理器連接其上的總線傳遞數(shù)據(jù),這可減緩處理器的操作,因為它的一些操作也可能需要訪問處理器總線并且將爭用總線帶寬。

發(fā)明內(nèi)容
高速緩存控制器可以提高計算機(jī)系統(tǒng)性能,該高速緩存控制器可以實施由來自處理器的命令發(fā)起的一個或者多個存儲器操作。在一些實施例中,可以通過更改在高速緩存塊與主存儲器塊之間的映射和/或在高速緩存之間交換數(shù)據(jù)來實施這些存儲器操作。可以以使用很少或者未使用總線帶寬和處理器周期的方式實施這樣的存儲器操作。高速緩存控制器可以執(zhí)行的存儲器操作可以包括移動、復(fù)制、歸零、去優(yōu)先級化和/或無效化。在一些實施例中并且對于一些存儲器操作,高速緩存控制器獨立于高速緩存數(shù)據(jù)的操縱而操縱高速緩存映射。例如高速緩存控制器可以接收將數(shù)據(jù)從源地址移向目的地地址的命令。如果在高速緩存塊中維持源地址處的數(shù)據(jù),則可以改變映射使得高速緩存塊與目的地地址而不是源地址關(guān)聯(lián)。在高速緩存中維持的數(shù)據(jù)的副本可以傳播到主存儲器作為移動操作的部分或者可以在以后時間(比如在驅(qū)除目的地地址時或者作為惰性寫入)傳播到主存儲器。在一些實施例中并且對于一些存儲器操作,高速緩存控制器執(zhí)行命令而未將高速緩存中的塊重新映射到主存儲器中的地址,而是更改維持高速緩存中數(shù)據(jù)的方式以求提高效率。例如“無效化”命令可以向高速緩存控制器指示隨后將不訪問在特定主存儲器地址存儲的數(shù)據(jù),從而無需執(zhí)行用于維持在該數(shù)據(jù)的高速緩存版本與數(shù)據(jù)在主存儲器中的副本之間的一致性(coherency)的操作?!盁o效化”命令也可以指示為了維持該數(shù)據(jù)的副本而分配的任何高速緩存存儲器塊可以用于其它數(shù)據(jù)。前文是所附權(quán)利要求限定的本發(fā)明的非限制概述。


附圖并非意于按比例繪制。在附圖中,在各種圖中圖示的每個相同或者接近相同的部件由相似標(biāo)號表示。為求簡潔,可以不在每幅圖中標(biāo)注每個部件。在附圖中
圖IA是根據(jù)本發(fā)明一些實施例的計算機(jī)系統(tǒng)的框圖IB是根據(jù)本發(fā)明一些實施例的計算機(jī)系統(tǒng)的框圖IC是根據(jù)本發(fā)明一些實施例的計算機(jī)系統(tǒng)的框圖2A是用于管理計算機(jī)系統(tǒng)中的存儲器的方法的流程圖2B是用于處理計算機(jī)系統(tǒng)中的復(fù)制命令的方法的流程圖2C是用于處理計算機(jī)系統(tǒng)中的交換命令的方法的流程圖3A-3D圖示高速緩存、總線和主存儲器在處理示例復(fù)制命令期間的狀態(tài)序列;
圖4A-4D圖示高速緩存、總線和主存儲器在處理示例交換命令期間的狀態(tài)序列;
圖5A是用于處理計算機(jī)系統(tǒng)中的去優(yōu)先級化命令的方法的流程圖5B和5C圖不聞速緩存在處理不例去優(yōu)先級化命令期間的狀態(tài)序列;
圖6A是用于處理計算機(jī)系統(tǒng)中的無效化命令的方法的流程圖6B-6D圖不聞速緩存在處理不例無效化命令期間的狀態(tài)序列;
圖7A是用于處理計算機(jī)系統(tǒng)中的歸零命令的方法的流程圖7B是用于處理計算機(jī)系統(tǒng)中的歸零命令的替代方法的流程圖7C是用于處理計算機(jī)系統(tǒng)中的歸零命令的替代方法的流程圖;并且圖8A-8C圖示高速緩存、總線和主存儲器在根據(jù)圖7C中所示方法處理示例歸零命令期間的狀態(tài)序列。
具體實施例方式發(fā)明人已經(jīng)認(rèn)識和理解可以用改進(jìn)的高速緩存控制器和高速緩存操作方法來避免用于執(zhí)行存儲器傳送操作的可用機(jī)制的弊端。除了向處理器施加負(fù)荷之外,使用編程輸入/輸出(PIO)的常規(guī)架構(gòu)還通常消耗可以連接處理器的總線上的總線帶寬。消耗處理器總線帶寬限制了處理器總線可用于傳送針對處理器將執(zhí)行的其它操作的數(shù)據(jù),從而以根據(jù)這里描述的部件和技術(shù)可以避免的方式導(dǎo)致延遲并且降低性能。直接存儲器訪問(DMA)也具有可以避免的若干限制和缺點。DMA傳送也可以消耗總線帶寬。此外,當(dāng)傳送跨越某地址范圍的數(shù)據(jù)時,在那些地址的數(shù)據(jù)可以處于不一致狀態(tài)直至整個傳送完成,從而需要針對整個傳送的等待時間。因而,可以通過減少對DMA操作的需要來提高性能。發(fā)明人已經(jīng)認(rèn)識和理解對高速緩存映射的適當(dāng)操縱可以減少在計算機(jī)系統(tǒng)中執(zhí)行的常規(guī)存儲器操作(比如DMA傳送)的次數(shù)??梢詫崿F(xiàn)時間、處理器負(fù)荷和/或處理器總線帶寬利用率的相應(yīng)減少。在一些方面中,對高速緩存映射的操縱可以涉及到重新映射與主存儲器中的第一地址范圍關(guān)聯(lián)的高速緩存塊以與主存儲器中的第二地址范圍關(guān)聯(lián)。重新映射可以減少、消除或者延遲總線帶寬的使用。高速緩存控制器可以用對于處理器而言透明的方式來管理這樣的操縱,使得處理器周期的使用也被減少或者消除。因而高速緩存控制器可以設(shè)置有接口,通過該接口其可以從處理器接收命令。這些命令可以由在處理器上執(zhí)行的程序生成并且可以用信號通知將執(zhí)行的更高級存儲器操作(包括可能另外已經(jīng)作為DMA操作而執(zhí)行的類型的存儲器操作)。高速緩存控制器可適于通過操縱高速緩存映射來執(zhí)行這些命令。這樣的命令可以在命令的執(zhí)行未直接阻礙在其上執(zhí)行操作的處理器執(zhí)行進(jìn)一步指令這一意義上“無阻礙”。這些操作也無需間接阻礙處理器的進(jìn)一步操作,因為它們在被執(zhí)行時無需消耗處理器總線上的帶寬??梢杂眠@一方式實施的命令的實例包括將數(shù)據(jù)塊從主存儲器中的一個塊移動或者復(fù)制到另一主存儲器塊。這樣的命令的另一實例是“歸零”命令。發(fā)明人已經(jīng)進(jìn)一步認(rèn)識和理解被提供用于接收執(zhí)行重新映射操作的命令的高速緩存控制器附加地或者可選地還可以接收如下命令,這些命令以也實現(xiàn)計算機(jī)系統(tǒng)的更高效操作的方式更改高速緩存控制器的操作。在處理器上執(zhí)行的軟件部件有能力表明不再處理或者不可能訪問主存儲器中的某些地址范圍可以增強(qiáng)用于優(yōu)先級化高速緩存數(shù)據(jù)的高速緩存算法。高速緩存控制器可以配置有用于從處理器接收命令(比如用于無效化或者去優(yōu)先級化(deprioritize) —個或者多個地址的命令)的接口。圖IA示出計算機(jī)系統(tǒng)100的示例框圖,其中可以使用改進(jìn)的存儲器管理技術(shù)。計算機(jī)系統(tǒng)100包括一組處理器110、主存儲器120和高速緩存130。處理器110和高速緩存 130可以由處理器總線160連通耦合。存儲器總線165可以連通耦合高速緩存130和主存儲器120。存儲器總線165被圖示為與處理器總線160分離,從而表明可以在存儲器總線 165上傳送數(shù)據(jù)而并不消耗處理器總線160上的帶寬。然而可以用任何適當(dāng)方式連通耦合處理器110、主存儲器120和高速緩存130。處理器110可以包括任何適當(dāng)數(shù)目的處理器。例如處理器110可以包括一個或者兩個或者更多處理器。這里示出#個處理器;即處理器111、112、…和113。處理器110可以包括本領(lǐng)域已知的任何處理器或者任何適當(dāng)處理設(shè)備。例如而非限制,處理器110可以包括中央處理單元(CPU)、數(shù)字信號處理器(DSP)、控制器、可尋址控制器、通用或者專用微處理器、微控制器、可尋址微處理器、可編程處理器、可編程控制器、專用處理器、專用控制器或者任何其它適當(dāng)?shù)奶幚碓O(shè)備中的任一個。主存儲器120可以存儲數(shù)據(jù),且將基于在處理器110上執(zhí)行的程序?qū)υ摂?shù)據(jù)進(jìn)行一個或多個存儲操作。主存儲器120可以是如本領(lǐng)域已知的計算機(jī)可讀存儲介質(zhì)或者任何適當(dāng)類型的計算機(jī)可讀存儲介質(zhì)。例如而非限制,主存儲器120可以是任何適當(dāng)類型的隨機(jī)存取存儲器(RAM)。存儲器120中的數(shù)據(jù)的用途或者意義對于本發(fā)明而言并不關(guān)鍵,并且無論主存儲器120中的數(shù)據(jù)的用途或者意義如何都可以對它進(jìn)行本文所描述的存儲器操作。例如主存儲器120中的數(shù)據(jù)可以構(gòu)成如下軟件模塊,這些軟件模塊包含由處理器執(zhí)行時執(zhí)行所需功能的計算機(jī)可執(zhí)行指令。然而主存儲器120中的數(shù)據(jù)可以可選地或者附加地代表在執(zhí)行計算機(jī)可執(zhí)行指令時訪問的參數(shù)或者其它信息。在這一情況下,計算機(jī)系統(tǒng)100可以包含附加存儲器(包括用于存儲計算機(jī)可執(zhí)行指令的其它存儲器)。主存儲器120具有用于存儲由存儲器地址121索引的數(shù)據(jù)的存儲器塊122。每個存儲器塊可以存儲多個信息位。存儲器塊存儲的信息位的數(shù)量對于本發(fā)明而言并不關(guān)鍵。 塊可以是稱為字或者頁面的位組。不過,塊可以是任何適當(dāng)大小并且可以用任何適當(dāng)方式來標(biāo)識。例如塊可以由起始地址和塊大小或者由起始地址和結(jié)束地址標(biāo)識。在一些實施例中,計算機(jī)系統(tǒng)可以對預(yù)定大小的存儲器塊操作。在這一情況下,當(dāng)將對存儲器塊執(zhí)行操作時,單個地址可足以標(biāo)識塊。另外應(yīng)當(dāng)理解主存儲器塊無需以任何方式對應(yīng)于用來實施主存儲器120的部件的結(jié)構(gòu)。在所示實例中,主存儲器具有P個地址121,這些地址標(biāo)識可以對其進(jìn)行如本文所描述的操作的P個塊122。P可以是任何適當(dāng)值。在一些實施例中,可以在主存儲器120上存儲的數(shù)據(jù)總量可以是可以維持于高速緩存130中的數(shù)量的十倍到一百倍。然而可以使用任何適當(dāng)大小的高速緩存和主存儲器。高速緩存130充當(dāng)在處理器110與主存儲器120之間的媒介。處理器110發(fā)出的訪問存儲器位置的指令可以使用維持在高速緩存130中的數(shù)據(jù)來實施或者可以更改維持在高速緩存130中的數(shù)據(jù)。因而高速緩存130可以執(zhí)行如本領(lǐng)域已知的一個或者多個數(shù)據(jù)高速緩存功能。附加地,高速緩存130還可以包括如下文更具體描述的響應(yīng)于附加命令的控制器。這里高速緩存130被圖示為通過處理器總線160可由處理器110訪問的共享高速緩存。然而高速緩存130可以是用于具體處理器的高速緩存。盡管將計算機(jī)系統(tǒng)100圖示為具有一個高速緩存,但是一些實施例可以具有多個高速緩存。例如每個處理器110也可以包括專用處理器高速緩存。下文參照圖IB中所示計算機(jī)系統(tǒng)101討論具有多個高速緩存的一些實施例。高速緩存130包括高速緩存控制器140和高速緩存存儲器150。這些部件的實施對于本發(fā)明而言并不關(guān)鍵。例如高速緩存控制器140和高速緩存存儲器150可以集成在相同集成電路(IC)上或者在通過適當(dāng)通信介質(zhì)連接的單獨IC上。
高速緩存控制器140管理包括高速緩存存儲器150的高速緩存130。高速緩存控制器140可以是執(zhí)行用于管理高速緩存130的計算機(jī)可執(zhí)行指令的處理器形式。這些命令可以燒制為高速緩存控制器140中的微代碼或者在任何其它適當(dāng)位置或者以任何其它適當(dāng)格式存儲。高速緩存控制器140對指令的執(zhí)行可以響應(yīng)于通過總線160或者總線165接收的命令。例如高速緩存控制器140可以響應(yīng)于從處理器110發(fā)出且通過處理器總線160 接收的存儲器傳送命令。高速緩存控制器140執(zhí)行的計算機(jī)可執(zhí)行指令可以包括用于響應(yīng)于接收的命令執(zhí)行功能的一個或者多個軟件模塊。模塊可以包括映射模塊141、替換模塊143和歸零模塊145。映射模塊141可以配置成控制高速緩存存儲器150的高速緩存塊151到主存儲器 120的地址121的映射。替換模塊143可以實施用于確定高速緩存地址的替換優(yōu)先級的高速緩存算法。歸零模塊145可以用來將在一個或者多個地址的數(shù)據(jù)設(shè)置成默認(rèn)值。模塊可以附加地或者可選地包括用于執(zhí)行管理高速緩存130的方法的任何適當(dāng)模塊。在一些實施例中,模塊可以實施為微代碼。高速緩存存儲器150包括用于存儲數(shù)據(jù)的適當(dāng)數(shù)目的高速緩存塊151。高速緩存控制器140可以管理這些塊中存儲的數(shù)據(jù)使得高速緩存塊151可以各自包含來自主存儲器某部分的數(shù)據(jù)的高速緩存版本。在所示實例中,高速緩存存儲器150包括#個高速緩存塊 151。#可以是任何適當(dāng)值。高速緩存130也可以包括用于維持高速緩存中的數(shù)據(jù)與主存儲器120中的位置之間的關(guān)聯(lián)的映射156。為了簡化示例,高速緩存中的每個塊視為包含與主存儲器塊中相同數(shù)量的數(shù)據(jù)。在這一實施例中,通過標(biāo)識主存儲器中的與高速緩存塊關(guān)聯(lián)的塊來表明關(guān)聯(lián)。 然而應(yīng)當(dāng)認(rèn)識到高速緩存塊與主存儲器塊之間無需具有一對一關(guān)系并且任何適當(dāng)機(jī)制可以用來形成高速緩存中的數(shù)據(jù)與主存儲器中的數(shù)據(jù)之間的關(guān)聯(lián)。映射156可以由高速緩存控制器140管理。在所示實例中示出映射器156作為高速緩存存儲器150的部分。然而構(gòu)成映射156的信息存儲于何處并不關(guān)鍵。例如這一信息可以存儲于高速緩存130內(nèi)的集中數(shù)據(jù)結(jié)構(gòu)中或者可以用任何適當(dāng)方式分布于一個或者多個存儲器設(shè)備中存儲的多個數(shù)據(jù)結(jié)構(gòu)。對于高速緩存存儲器150中的每個高速緩存塊,映射156可以包含塊ID 152、映射地址153、臟位(dirty bit) 154、零位155和驅(qū)除優(yōu)先級157。塊ID 152標(biāo)識其它參數(shù)對應(yīng)的在高速緩存中的塊。塊ID 152可以存儲于可寫存儲器、只讀存儲器中或者可以根據(jù)高速緩存存儲器150的硬件設(shè)計來推斷。映射地址153將高速緩存塊與主存儲器120中的存儲器塊關(guān)聯(lián)。映射地址153可以通過塊地址或者以任何其它適當(dāng)方式標(biāo)識主存儲器120中的對應(yīng)塊。為了簡化示例,假設(shè)每個高速緩存塊可以存儲的數(shù)據(jù)量等于每個存儲器塊存儲的大小。本領(lǐng)域技術(shù)人員將理解可以在高速緩存塊在大小上不同于主存儲器120中的存儲器塊時使用已知映射技術(shù)。映射156也可以包括用于每個高速緩存塊的一致性標(biāo)記或者“臟位” 154。臟位 154表明高速緩存塊中存儲的數(shù)據(jù)與主存儲器120中的對應(yīng)塊中的數(shù)據(jù)一致(“未臟”)或者不一致(“臟”)。當(dāng)修改高速緩存中的數(shù)據(jù)而不是通過從主存儲器120中的對應(yīng)存儲器塊復(fù)制時,臟位154可以設(shè)置用來表明“臟”數(shù)據(jù),而在向主存儲器120中的對應(yīng)存儲器塊中寫入高速緩存中的數(shù)據(jù)時可以清除臟位154。映射156中的用于所有高速緩存塊151的臟位可以統(tǒng)稱為一致性存儲器。映射156也可以包括用于每個高速緩存塊的歸零標(biāo)記或者“零位”155。當(dāng)主存儲器120中的對應(yīng)塊將被設(shè)置成默認(rèn)值(比如零)時可以設(shè)置零位155。映射156中的用于所有高速緩存塊151的歸零標(biāo)記可以統(tǒng)稱為歸零存儲器。映射156也可以包括用于每個高速緩存塊的驅(qū)除優(yōu)先級157。驅(qū)除優(yōu)先級157可以指定用于在來自主存儲器120的非高速緩存塊將被高速緩存時從高速緩存塊驅(qū)除數(shù)據(jù)的優(yōu)先級。低優(yōu)先級表明高速緩存塊存儲的數(shù)據(jù)更可能被存儲器控制器140驅(qū)除并且替換為由不同地址索引的主存儲器塊中存儲的數(shù)據(jù)。在一些實施例中,僅針對如下那些高速緩存塊顯式指明驅(qū)除優(yōu)先級157 :這些高速緩存塊高速緩存在待驅(qū)除的地址的數(shù)據(jù)。計算機(jī)系統(tǒng)100也可以包括在圖IA中未示出的任何其它適當(dāng)計算機(jī)部件。例如而非限制,計算機(jī)系統(tǒng)100可以包括外設(shè)、其它處理器和存儲器、輸入/輸出設(shè)備(比如顯示器)、鍵盤和鼠標(biāo)以及任何其它類型的適當(dāng)計算機(jī)部件。圖IB示出計算機(jī)系統(tǒng)101的示例框圖,該框示本文所描述的技術(shù)可以應(yīng)用于無論何種架構(gòu)的計算機(jī)系統(tǒng)。在這一實例中,處理器IlOA通過高速緩存130A訪問主存儲器120,而處理器IlOB通過高速緩存130B訪問主存儲器120。高速緩存一致性部件170維持高速緩存130A與130B之間的一致性。例如當(dāng)處理器IlOA進(jìn)行寫入操作時,高速緩存一致性部件170向高速緩存130B傳達(dá)操作。高速緩存130B然后可以更新在寫入地址的數(shù)據(jù)的任何高速緩存版本以維持?jǐn)?shù)據(jù)一致性。在一些實施例中,處理器IlOA是高速緩存130A 集成到其中的單個處理器。圖IC是計算機(jī)系統(tǒng)102的示例框圖,該框示本文所描述的技術(shù)可以應(yīng)用于無論何種架構(gòu)的計算機(jī)系統(tǒng)。計算機(jī)系統(tǒng)102包括處理器110、高速緩存130和主存儲器120。 處理器110和高速緩存130由處理器總線160連通耦合。然而總線160可以由計算機(jī)系統(tǒng) 102中的其它設(shè)備(比如DMA控制器180和設(shè)備181)共享。存儲器總線165連通耦合高速緩存130和主存儲器120。處理器110可以執(zhí)行軟件應(yīng)用114和操作系統(tǒng)(0S)115。OS 115可以管理計算機(jī)系統(tǒng)102的活動和資源共享。OS 115可以提供各種功能并且通過各種部件管理計算機(jī)系統(tǒng) 102。例如而非限制,這些部件可以包括動態(tài)鏈接庫(例如動態(tài)鏈接庫)、編程接口、部件對象模型(COM)、全局唯一標(biāo)識符、注冊表項或者OS 115的任何唯一可標(biāo)識部分。OS 115可以例如通過從在計算機(jī)系統(tǒng)102上執(zhí)行的軟件應(yīng)用114的功能調(diào)用來為應(yīng)用114提供功能。在一些實施例中,OS 115包括編程接口 116。編程接口 116可以允許軟件應(yīng)用114請求存儲器傳送和高速緩存管理操作。在一些實施例中,本文所描述的存儲器操作可以作為操作系統(tǒng)的部分被實施,但是在操作系統(tǒng)內(nèi)的實施方式并非本發(fā)明的要求。在一些實施例中,向軟件應(yīng)用114分配虛擬地址空間。虛擬地址空間可以由OS 115映射到主存儲器120的物理地址。編程接口 116可以配置成從軟件應(yīng)用114接收按照虛擬地址指定對存儲器的操縱的命令并且將虛擬地址轉(zhuǎn)譯成主存儲器120的物理地址。然而邏輯到物理地址的轉(zhuǎn)譯在系統(tǒng)內(nèi)出現(xiàn)的點并非本發(fā)明的限制。在一些實施例中,例如高速緩存控制器140可以管理虛擬到物理地址的轉(zhuǎn)換。在一些實施例中,編程接口 116是應(yīng)用編程接口(API)。
高速緩存控制器130接收和執(zhí)行代表軟件應(yīng)用114發(fā)送的來自編程接口 116的命令。高速緩存控制器140使用映射156確定在物理地址的數(shù)據(jù)是否存儲于高速緩存存儲器 150的塊中以及存儲于何處。例如高速緩存控制器140可以搜索映射156中的映射地址以尋找物理地址。如果在映射156中發(fā)現(xiàn)物理地址,則高速緩存控制器140可以確定在物理地址的數(shù)據(jù)由對應(yīng)的高速緩存塊來高速緩存。已經(jīng)描述了示例計算機(jī)系統(tǒng),參照以下方法和實例描述根據(jù)一些實施例的計算機(jī)系統(tǒng)的操作。這里取存儲器地址為物理地址。本領(lǐng)域技術(shù)人員將理解在指定虛擬地址時可以例如用本領(lǐng)域已知的方式執(zhí)行向物理地址的轉(zhuǎn)換。圖2A是用于管理計算機(jī)系統(tǒng)中的存儲器的方法的流程圖。例如可以通過操作圖 IA中所示計算機(jī)系統(tǒng)100的高速緩存控制器140來執(zhí)行方法200。然而可以用任何適當(dāng)方式實施方法200。在步驟201,高速緩存控制器建立從計算機(jī)系統(tǒng)的高速緩存中的存儲器塊和計算機(jī)系統(tǒng)的主存儲器中的存儲器地址的映射。在一些實施例中,通過將如下映射地址與每個高速緩存塊一起存儲來建立映射,該映射地址標(biāo)識存儲器中的與該塊對應(yīng)的地址。映射地址可以用任何適當(dāng)方式標(biāo)識主存儲器中的地址。例如在全相聯(lián)的高速緩存中,當(dāng)主存儲器的每個地址可以映射到高速緩存中的任何塊時,高速緩存可以存儲全地址作為映射地址。 在直接映射的高速緩存中,當(dāng)每個地址僅可以映射到高速緩存中的確切一個塊時,該映射僅可以存儲足夠的位以區(qū)分那些映射到高速緩存中具體塊的地址。例如當(dāng)?shù)刂返淖畹陀行粸榭梢詫懭氲礁咚倬彺鎵K的所有地址所共用時可以漏掉(drop)這些位。相似技術(shù)可以用來將高速緩存塊映射到X路集合相聯(lián)高速緩存中的地址,其中主存儲器的每個地址可以映射到X個高速緩存塊,其中X是任何正整數(shù)。本文的討論適用于全相聯(lián)高速緩存,但是本領(lǐng)域技術(shù)人員將理解實施例可以用任何適當(dāng)類型的高速緩存來實施。在步驟201建立映射可以包括建立用于每個高速緩存塊的臟位、零位和驅(qū)除優(yōu)先級中的任一個。在一些實施例中,建立如下映射,該映射針對每個高速緩存塊維持映射地址、臟位、零位和驅(qū)除優(yōu)先級。然而建立的映射可以具有任何適當(dāng)條目。在一些實施例中, 高速緩存控制器使用如本領(lǐng)域已知的技術(shù)在一段時間內(nèi)響應(yīng)于存儲器訪問操作,因而可以建立映射。在步驟202,高速緩存控制器接收表明修改映射的命令。例如,這樣的命令可以由操作系統(tǒng)響應(yīng)于專門調(diào)用功能的應(yīng)用程序而生成或者由操作系統(tǒng)通過一個或者多個應(yīng)用采取的一個或者多個動作檢測高速緩存控制器可以高效執(zhí)行操作而生成。接收的命令可以是任何適當(dāng)類型的命令。例如而非限制,接收的命令可以是存儲器傳送操作命令(比如復(fù)制、移動、交換命令或者歸零命令)。作為另一實例,接收的命令可以是如下操作提示該操作提示允許高速緩存控制器更高效地管理它的映射(比如去優(yōu)先級化或者無效化命令)。然而可以接收任何適當(dāng)類型的命令。在一些實施例中,從計算機(jī)系統(tǒng)的處理器接收命令。例如命令可以作為軟件在處理器上執(zhí)行的結(jié)果而被接收。在步驟203,響應(yīng)于命令,高速緩存控制器修改高速緩存映射。例如在建立的映射包括映射地址的一個實施例中,可以在步驟203更新起初映射到主存儲器中的第一地址的高速緩存塊以將其映射到主存儲器中的第二地址而未改變高速緩存塊中存儲的數(shù)據(jù)。作為另一實例,在建立的映射包括驅(qū)除優(yōu)先級的實施例中,可以修改高速緩存塊的驅(qū)除優(yōu)先級以去優(yōu)先級化高速緩存數(shù)據(jù)。在步驟203之后,方法200結(jié)束。圖2B是用于在接收復(fù)制命令時管理計算機(jī)系統(tǒng)中的存儲器的方法220的流程圖。 復(fù)制命令指示將數(shù)據(jù)從在源地址的塊復(fù)制到在目的地地址的塊。在一些實施例中,方法220 是方法200的步驟202和203的一個具體實施例??梢酝ㄟ^操作高速緩存控制器(如例如圖IA中所示計算機(jī)系統(tǒng)100的高速緩存控制器140)在計算機(jī)系統(tǒng)中執(zhí)行方法220。在步驟221,高速緩存控制器接收復(fù)制命令。復(fù)制命令可以用任何適當(dāng)方式(比如通過指定其中存儲待復(fù)制的數(shù)據(jù)的源地址、源地址集或者源地址范圍)指定用于復(fù)制的數(shù)據(jù)源。也可以用任何適當(dāng)方式(比如目的地地址、目的地地址集或者目的地地址范圍可以指定數(shù)據(jù)的目的地)指定用于復(fù)制的目的地。針對每個源和目的地地址對執(zhí)行步驟222至225??梢葬槍γ總€地址對同時、依次或者以任何適當(dāng)方式執(zhí)行這些步驟。在步驟222,高速緩存控制器確定在源地址的數(shù)據(jù)當(dāng)前是否映射到高速緩存的塊。 高速緩存控制器可以例如通過校驗高速緩存中的任何塊是否具有與源地址對應(yīng)的映射地址來做出確定。如果在步驟222的確定為否,則方法220繼續(xù)步驟223,其中在源地址的數(shù)據(jù)從主存儲器加載到高速緩存的塊中。在將源數(shù)據(jù)加載到高速緩存塊中時,可以設(shè)置用于塊的映射地址以標(biāo)識源地址。任何適當(dāng)高速緩存算法可以用來標(biāo)識應(yīng)當(dāng)向高速緩存中的哪個塊寫入源數(shù)據(jù)。然而在一些實施例中,如果塊已經(jīng)映射到目的地地址,則可以選擇該塊用于替換。如果選擇,則可以無效化該塊。當(dāng)無效化而不是驅(qū)除高速緩存中的塊時,高速緩存塊中的數(shù)據(jù)即使為“臟”也不被回寫到主存儲器。隨后參照圖6A-6D討論無效化地址。如果在步驟222的確定為是,則方法220繼續(xù)步驟224。在步驟224,方法220預(yù)備高速緩存以更新映射地址。當(dāng)在源地址對數(shù)據(jù)進(jìn)行高速緩存的高速緩存塊為臟時,該方法將臟數(shù)據(jù)從高速緩存塊回寫到主存儲器中的在源地址的塊。如果數(shù)據(jù)未臟,則在步驟224 不執(zhí)行回寫。該方法也可以校驗?zāi)康牡氐刂肥欠裼成涞礁咚倬彺娴膲K。如果是這樣,則可以更新映射以表明該塊不再與目的地地址關(guān)聯(lián)。以這一方式清除映射防止兩個單獨高速緩存塊映射到相同目的地地址。無論源數(shù)據(jù)是否加載在塊223都可以從映射清除目的地塊。方法220從步驟223和224繼續(xù)步驟225。在步驟225,該方法改變映射使得起初映射到源地址的塊被映射到目的地地址。在更新映射地址之后,高速緩存的正常操作將造成對高速緩存中的復(fù)制數(shù)據(jù)執(zhí)行針對與目的地地址相關(guān)聯(lián)的位置的存儲器訪問指令。在步驟226可以任選地執(zhí)行附加的更新步驟。在完成步驟225時,高速緩存可以包含如下塊,該塊包含用于主存儲器中的目的地地址的數(shù)據(jù)。然而主存儲器中的數(shù)據(jù)可能與高速緩存中的數(shù)據(jù)不匹配。相反地,正確數(shù)據(jù)可以存儲于與源地址關(guān)聯(lián)的主存儲器中,但是該數(shù)據(jù)可能不被高速緩存。因而更新后操作可以將數(shù)據(jù)從高速緩存寫入到目的地地址或者將數(shù)據(jù)從主存儲器中的源地址復(fù)制到高速緩存中。這些步驟可以在任何適當(dāng)時間執(zhí)行并且可以使用存儲器總線165 (圖I)在高速緩存控制器的指引之下執(zhí)行。因而,完成這些步驟無需通過需要處理器操作或者處理器總線帶寬來阻礙處理器。在一些實施例中,可以將數(shù)據(jù)作為復(fù)制操作的部分從高速緩存塊寫入到主存儲器的目的地地址。然而在一些實施例中,可以推遲回寫直至回寫將另外作為高速緩存操作的部分而出現(xiàn)。在這樣的場景中,可以針對與目的地地址關(guān)聯(lián)的高速緩存塊設(shè)置臟位以表明數(shù)據(jù)為臟。在這樣的實施例中,可以例如在從高速緩存驅(qū)除目的地塊時或者作為惰性寫入而執(zhí)行向主存儲器的回寫。惰性寫入是從高速緩存向主存儲器的異步寫入。在一些實施例中,在高速緩存和/或存儲器總線另外空閑之時執(zhí)行惰性寫入。因此可以在復(fù)制命令在功能上完成之后執(zhí)行惰性寫入若干秒。在另一實施例中,未保持臟位,并且總是在驅(qū)除時執(zhí)行回寫。類似地,如果希望在高速緩存中重新加載源數(shù)據(jù),則可以在任何適當(dāng)時間向高速緩存中加載來自源地址的數(shù)據(jù)。在高速緩存控制器的控制之下可以使用存儲器總線重新加載,使得無需阻礙處理器。然而來自源目的地的數(shù)據(jù)直至再次訪問該數(shù)據(jù)才可以重新加載到高速緩存中。本領(lǐng)域技術(shù)人員將理解方法220的變化可以用于處理移動命令。由于移動命令不同于復(fù)制,意味著在源地址的數(shù)據(jù)不再有效。因而在步驟226的更新后操作無需要求向高速緩存中重新加載源數(shù)據(jù)。相反而言,就數(shù)據(jù)保持于高速緩存中這一方面而言,在步驟226 的更新后操作可能需要無效化保持該數(shù)據(jù)的高速緩存塊。在一些實施例中,在發(fā)出移動命令的處理器上或者另外在計算機(jī)系統(tǒng)100內(nèi)執(zhí)行的存儲器管理軟件可以保證在源地址的數(shù)據(jù)并未被隨后訪問??梢栽谝恍┫到y(tǒng)中被支持的另一無阻礙操作是交換命令。圖2C是用于在接收交換命令時管理計算機(jī)系統(tǒng)中的存儲器的方法240的流程圖。顧名思義,在處理交換命令時, 在第一地址存儲的數(shù)據(jù)與在第二地址存儲的數(shù)據(jù)交換。在一些實施例中,方法240是方法 200的步驟202和203的一個具體實施例??梢酝ㄟ^操作高速緩存控制器(如例如圖IA中所示計算機(jī)系統(tǒng)100的高速緩存控制器140)在計算機(jī)系統(tǒng)中執(zhí)行方法240。在步驟241,高速緩存控制器接收交換命令。交換命令指定地址、地址集或者地址范圍作為其中存儲待交換的第一數(shù)據(jù)的第一源(“源A”)。類似地,地址、地址集或者地址范圍可以指定其中存儲待交換的第二數(shù)據(jù)的第二源(“源B”)。然而可以用任何適當(dāng)方式指定源A和源B地址。當(dāng)命令指定多于一個的源A和源B地址時,可以用任何適當(dāng)方式確定待交換的地址對。針對待交換的每對源地址執(zhí)行步驟242至247??梢葬槍γ總€地址對同時、依次或者以任何適當(dāng)方式執(zhí)行這些步驟。在步驟242,高速緩存控制器確定高速緩存當(dāng)前是否映射源A地址。高速緩存控制器可以例如通過校驗高速緩存中的任何塊是否具有與源A地址對應(yīng)的映射地址來做出確定。在步驟243針對源B地址做出相似確定。如果在步驟242的確定為否,則方法240繼續(xù)步驟244。在步驟244,將在源A地址的數(shù)據(jù)從主存儲器加載到高速緩存的塊中。在將在源A地址的數(shù)據(jù)加載到高速緩存塊時, 設(shè)置用于高速緩存塊的映射地址以標(biāo)識源A地址。類似地,如果在步驟243的確定為否,則方法240繼續(xù)步驟245,其中將在源B地址的數(shù)據(jù)從主存儲器加載到高速緩存的塊中。在將在源B地址的數(shù)據(jù)加載到高速緩存塊中時,設(shè)置用于高速緩存塊的映射地址以標(biāo)識源B地址。一旦確認(rèn)來自源A和源B的數(shù)據(jù)在高速緩存中,方法240就繼續(xù)步驟246,其中改變高速緩存映射使得針對相應(yīng)高速緩存塊的映射地址被交換。具體而言,針對在源A地址存儲數(shù)據(jù)的高速緩存塊的映射地址從源A地址改變成源B地址。類似地,針對在源B地址存儲數(shù)據(jù)的塊的映射地址從源B地址改變成源A地址。映射地址的交換可以同時進(jìn)行或者作為原子操作的部分而進(jìn)行以防止單個地址(即源A或者源B地址)會被兩個高速緩存塊有歧義地映射的可能性。在步驟247可以任選地執(zhí)行附加更新步驟。如上文結(jié)合步驟226 (圖2B)描述的那樣,更新后操作可以涉及到將數(shù)據(jù)從高速緩存回寫到主存儲器。這里可以回寫與源A和源B關(guān)聯(lián)的塊。然而這些塊中的零個、一個或者兩個可以作為交換操作的部分被回寫??梢酝七t這些回寫操作中的一些或者所有操作直至驅(qū)除或者其它適當(dāng)時間。因而,在步驟247 的處理可以簡單地需要設(shè)置用于一個或者兩個塊的臟位。然而在一些實施例中,如果回寫將另外作為高速緩存的部分正常操作而出現(xiàn),則可以采取非明確步驟以控制回寫。已經(jīng)分別描述用于處理復(fù)制和交換命令的方法220和240,與每個操作關(guān)聯(lián)的映射的操縱實例各參照圖3A-3D和圖4A-4D給出。圖3A-3D示出高速緩存130、存儲器總線165和主存儲器120在示例復(fù)制操作期間的狀態(tài)序列。在每幅圖中,高速緩存存儲器由包含三列的表表示。應(yīng)當(dāng)理解映射被概念性地圖示并且任何適當(dāng)組織都可以用來存儲所示信息。在這一實例中,列301和302表示高速緩存映射的部分中的條目。具體而言,映射的列301標(biāo)識高速緩存塊,而列302標(biāo)識相應(yīng)塊被映射至的主存儲器120地址。列303圖示在與標(biāo)識的高速緩存塊對應(yīng)的每個高速緩存塊中存儲的數(shù)據(jù)。高速緩存映射也可以存儲未示出的附加信息(例如臟位)。主存儲器120也由列狀表表示。列304標(biāo)識主存儲器中的地址,而列305提供在與該地址對應(yīng)的存儲器塊中存儲的數(shù)據(jù)。圖3A圖示高速緩存130、存儲器總線165和主存儲器120的初始狀態(tài)。在這一實例中,高速緩存130的塊O被映射到主存儲器120的地址6并且存儲數(shù)據(jù)“TUV”;塊I映射到主存儲器120的地址4并且存儲數(shù)據(jù)“ΜΝ0” ;±夾2映射到主存儲器120的地址5并且存儲數(shù)據(jù)“PQR” ;而塊3映射到主存儲器120的地址3并且存儲數(shù)據(jù)“JKL”。在所示實例中, 高速緩存塊未臟。在這一實例中,高速緩存控制器接收指示將數(shù)據(jù)從地址2復(fù)制到地址5的復(fù)制命令(見圖2B中步驟221)。在這一實例中,源地址(地址2)并非存儲于高速緩存130中(見步驟 222)。如圖3B中所示,從高速緩存驅(qū)除地址5以騰出空間用于從源地址復(fù)制的數(shù)據(jù)??梢杂萌魏芜m當(dāng)方式選擇待驅(qū)除的地址。例如高速緩存算法可以用來優(yōu)先級化高速緩存塊并且指明用于驅(qū)除的塊。在這一實例中,選擇地址5用于從塊2的驅(qū)除。由于塊2未臟,所以未執(zhí)行向主存儲器120的回寫。源數(shù)據(jù)通過總線165復(fù)制到高速緩存130的塊2中(見步驟223)。用于塊2的映射地址設(shè)置成地址2,但是可以不在所有實施例中執(zhí)行這一步驟。圖3C圖示更新高速緩存映射。具體而言,塊2從地址2重新映射到地址5 (見步驟 225)。在更新映射時,也可以執(zhí)行任選步驟(比如在步驟226中描述的步驟)。圖3D圖示將數(shù)據(jù)從塊2寫入到塊映射至的主存儲器120中的存儲器地址(即地址5)的任選步驟??梢岳缭隍?qū)除時或者作為惰性寫入的部分而完成回寫。圖4A-4D示出高速緩存130、存儲器總線165和主存儲器120在示例交換操作期間的狀態(tài)序列。以與圖3A-3D中相似的方式將高速緩存存儲器和主存儲器120的狀態(tài)用表格表不。圖4A圖示高速緩存130、存儲器總線165和主存儲器120的初始狀態(tài)。在這一實例中,高速緩存130的塊O映射到主存儲器120的地址2并且存儲數(shù)據(jù)“GHI”;塊I映射到主存儲器120的地址4并且存儲數(shù)據(jù)“ΜΝ0” ;±夾2映射到主存儲器120的地址5并且存儲數(shù)據(jù)“PQR” ;而塊3映射到主存儲器120的地址3并且存儲數(shù)據(jù)“JKL”。在所示實例中,高速緩存塊未臟。在這一實例中,高速緩存控制器接收指示將在地址O的數(shù)據(jù)與在地址6的數(shù)據(jù)交換的交換命令(見圖2C中步驟241)。如圖4A中所示,兩個源地址起初均未存儲于高速緩存 130 中。如圖4B中所示,一旦確定高速緩存130未映射源地址O (見步驟242),就將在地址O的數(shù)據(jù)從主存儲器120復(fù)制到高速緩存130中(見步驟244)。類似地,一旦確定高速緩存130未映射源地址6 (見步驟243),就將在地址6的數(shù)據(jù)從主存儲器120復(fù)制到高速緩存130中(見步驟245)??梢杂萌魏芜m當(dāng)方式選擇在源地址的數(shù)據(jù)被復(fù)制到的高速緩存 130的塊。例如高速緩存算法可以已經(jīng)將塊I和2標(biāo)識為在高速緩存中具有最低優(yōu)先級。 圖4B圖示數(shù)據(jù)通過存儲器總線165從主存儲器移向高速緩存。圖4C圖示更新高速緩存映射(見步驟246)。具體而言,塊I從地址O重新映射到地址6。類似地,塊2從地址6重新映射到地址O。在更新映射時,也可以執(zhí)行任選步驟(比如在方法240的步驟247中描述的步驟)。 圖4D圖示將數(shù)據(jù)從高速緩存130回寫到主存儲器120的任選步驟。具體而言,根據(jù)重新映射,將高速緩存塊I中的數(shù)據(jù)復(fù)制到主存儲器120中的具有地址6的塊,而將塊2復(fù)制到主存儲器120中的具有地址O的塊。除了復(fù)制和交換命令之外,高速緩存控制器還可以配置成接收“去優(yōu)先級化”命令。去優(yōu)先級化命令表明作為驅(qū)除候選的一個或者多個地址。例如當(dāng)新地址將被高速緩存時,高速緩存算法可以選擇去優(yōu)先級化的地址用于驅(qū)除以騰出高速緩存中的空間。當(dāng)處理完成并且預(yù)計不再訪問在特定地址或者地址集的數(shù)據(jù)時,軟件應(yīng)用可以使用去優(yōu)先級化。 一些標(biāo)準(zhǔn)高速緩存算法的試探法可以另外將這些地址視為具有高優(yōu)先級,因為它們表示最近使用的地址。去優(yōu)先級化命令允許硬件更智能地使用高速緩存空間。圖5A是高速緩存控制器執(zhí)行的用于處理去優(yōu)先級化命令的方法500的流程圖??梢酝ㄟ^操作高速緩存控制器(如例如圖IA中所示計算機(jī)系統(tǒng)100的高速緩存控制器140) 在計算機(jī)系統(tǒng)中執(zhí)行方法500。在步驟501接收去優(yōu)先級化命令。去優(yōu)先級化命令可以指定地址、地址集或者地址范圍為待去優(yōu)先級化的地址。然而可以用任何適當(dāng)方式指定待去優(yōu)先級化的地址。在步驟503,去優(yōu)先級化由去優(yōu)先級化命令表明的地址。去優(yōu)先級化地址可以用任何適當(dāng)方式來去優(yōu)先級化。在一些實施例中與映射到去優(yōu)先級化地址的高速緩存塊關(guān)聯(lián)的驅(qū)除優(yōu)先級被更新以反映地址的去優(yōu)先級化狀態(tài)。高速緩存算法可以管理如何去優(yōu)先級化地址。例如在一些實施例中,映射到去優(yōu)先級化地址的高速緩存塊在高速緩存中的其它塊之前被驅(qū)除。可以用任何適當(dāng)方式選擇驅(qū)除去優(yōu)先級化地址的順序。在一些實施例中, 在映射到去優(yōu)先級化地址的臟塊之前驅(qū)除映射到去優(yōu)先級化地址的塊且未臟的塊。在步驟 503之后,方法500結(jié)束。圖5B和5C圖示在根據(jù)方法500處理去優(yōu)先級化命令之前和之后在高速緩存130 內(nèi)的映射。如圖5B中所不,在這一實例中,映射156由包含四列的表表不。在列510中給出驅(qū)除優(yōu)先級,在列511中標(biāo)識高速緩存塊,在列512中示出映射地址,而在列513中示出塊是否為臟。在這一實例中,高速緩存算法用優(yōu)先級號對每個塊排序。具有最低優(yōu)先級號的塊映射的地址是第一個被驅(qū)除的地址。然而應(yīng)當(dāng)理解可以用任何適當(dāng)方式指定優(yōu)先級。 例如優(yōu)先級可以簡單地是二進(jìn)制(例如優(yōu)先級化、去優(yōu)先級化)。如圖5B中所示,在這一實例中,塊O起初具有優(yōu)先級“I”并且包含映射到地址5 的未臟數(shù)據(jù);塊I具有優(yōu)先級“2”并且包含映射到地址3的臟數(shù)據(jù);塊2具有優(yōu)先級“O”并且包含映射到地址4的臟數(shù)據(jù);而塊3具有優(yōu)先級“3”并且包含映射到地址2的未臟數(shù)據(jù)。假設(shè)高速緩存控制器接收用于指定范圍為O至3的去優(yōu)先級化地址的去優(yōu)先級化命令(見圖5A的步驟501)?;仡櫢咚倬彺婺男┑刂芬话銓τ谠谟嬎銠C(jī)系統(tǒng)的處理器上執(zhí)行的軟件而言透明。從列512可見,在地址范圍0-3中,在這一實例中實際上僅地址2和3被高速緩存。圖5C圖示高速緩存算法在處理去優(yōu)先級化命令之后的高速緩存130。分別高速緩存地址2和3的塊I和3已經(jīng)移向最低優(yōu)先級。在這一實例中,向臟的塊I給予比未臟的塊3更高的優(yōu)先級。首先驅(qū)除未臟的地址可以進(jìn)一步推遲向高速緩存回寫。在這一實例中,高速緩存算法維持非去優(yōu)先級化地址的相對優(yōu)先級。具體而言,塊O具有比塊2更高的優(yōu)先級。高速緩存控制器可以接收的另一命令是無效化命令。無效化命令表明在命令指定的地址的數(shù)據(jù)過時了并且可以被驅(qū)除而無回寫。軟件應(yīng)用可以使用無效化命令以避免消耗總線帶寬以及用于短壽命數(shù)據(jù)的高速緩存空間。圖6A是高速緩存控制器執(zhí)行的用于處理無效化命令的方法600的流程圖??梢酝ㄟ^操作高速緩存控制器(如例如圖IA中所示計算機(jī)系統(tǒng)100的高速緩存控制器140)在計算機(jī)系統(tǒng)中執(zhí)行方法600。在步驟601,高速緩存控制器接收無效化命令。無效化命令可以指定待無效化的一個或者多個地址??梢杂门c在去優(yōu)先級化命令中相似的方式表明地址。然而可以用任何適當(dāng)方式指定地址。在步驟603,將無效化命令表明的地址標(biāo)記為“未臟”。如上文討論的那樣,未臟的地址未回寫到主存儲器。因此,無效化命令可以減少使用存儲器總線帶寬和/或處理延遲。在步驟605,任選地對地址進(jìn)行去優(yōu)先級化??梢杂门c在方法500的步驟503 (圖 5A)描述的方式相似的方式完成去優(yōu)先級化。例如可以向無效化的塊給予最低可能優(yōu)先級, 使得在高速緩存控制器接下來需要塊用于高速緩存新數(shù)據(jù)時將它們驅(qū)除。然而在一些可選實施例中,無效化的塊可以立即被無效化。在步驟605,方法600結(jié)束。圖6B-6D圖示高速緩存130在接收無效化命令時的實例操作。如圖6B中所示,在這一實例中,映射156由包含四列的表表不。在列610中給出優(yōu)先級,在列611中標(biāo)識高速緩存塊,在列612中示出映射地址,而在列613中示出塊是否為臟。
圖6B圖示高速緩存130在接收無效化命令之前的狀態(tài)。如圖6B中所示,塊O具有優(yōu)先級“3”并且包含映射到地址2的臟數(shù)據(jù),塊I具有優(yōu)先級“2”并且包含映射到地址4 的臟數(shù)據(jù),塊2具有優(yōu)先級“ I”并且包含映射到地址5的未臟數(shù)據(jù),而塊3具有優(yōu)先級“O” 并且包含映射到地址3的未臟數(shù)據(jù)。假設(shè)接收到指定地址2將被無效化的無效化命令(見圖6A中步驟601)。如圖6C 中所示,更新映射到地址2的高速緩存塊(即塊O)以表明該塊未臟(見步驟603)。圖6D圖示地址2被去優(yōu)先級化之后的高速緩存130。具體而言,地址2已經(jīng)重新優(yōu)先級化成最低優(yōu)先級(在這一實例中為優(yōu)先級O)。也已經(jīng)相應(yīng)改變其它高速緩存地址的優(yōu)先級。高速緩存控制器可以接收的另一命令是歸零命令。歸零命令將指定地址范圍的數(shù)據(jù)設(shè)置成默認(rèn)值,例如零??梢杂萌魏芜m當(dāng)方式實施歸零命令。圖7A是根據(jù)一些實施例的用于處理歸零命令的由高速緩存控制器執(zhí)行的方法 700的流程圖??梢酝ㄟ^操作高速緩存控制器(如例如圖IA中所示計算機(jī)系統(tǒng)100的高速緩存控制器140)在計算機(jī)系統(tǒng)中執(zhí)行方法700。在步驟701,接收歸零命令。歸零命令可以指定在一個或者多個地址的數(shù)據(jù)設(shè)置成默認(rèn)值。在一些實施例中,該值可以由歸零命令、另一命令指定或者可以固定。在步驟703,將歸零命令指定的地址標(biāo)記為“歸零”??梢杂萌魏芜m當(dāng)方式將地址標(biāo)記為歸零。在一些實施例中,地址可以映射到高速緩存塊,并且可以標(biāo)記與每個地址對應(yīng)的零位(見圖IA中的零位155)。零位可以表明在該地址的數(shù)據(jù)應(yīng)當(dāng)讀取為具有默認(rèn)值而不是高速緩存塊存儲的實際值。在這樣的實施例中,高速緩存控制器可以在訪問歸零值時提供零值,無論該訪問是從處理器的讀取的部分還是向主存儲器的回寫的部分。在步驟705,可以任選地執(zhí)行附加更新步驟。例如如果從高速緩存驅(qū)除包含歸零地址的塊,則可以將默認(rèn)值寫入到主存儲器中的在映射地址的塊。圖7B是根據(jù)一些可選實施例的用于處理歸零命令的由高速緩存控制器執(zhí)行的方法740的流程圖。使用地址零列表來歸零的高速緩存可以執(zhí)行方法740。高速緩存控制器可以響應(yīng)于對在零列表中的地址的數(shù)據(jù)的讀取操作來供應(yīng)默認(rèn)值。具體而言,高速緩存用于映射的信息可以包括全局零列表而不是用于每個高速緩存塊的零位。零列表可以包括高速緩存塊并未另外高速緩存的地址。如果隨后向零列表中的地址寫入,則可以從零列表去除它。在地址可以在零列表中并且還映射到高速緩存塊的實施例中,高速緩存控制器可以在確定是否在搜索映射地址之前對地址進(jìn)行高速緩存時搜索零列表。在步驟741,高速緩存控制器接收歸零命令。歸零命令指定待歸零的一個或者多個地址。例如地址可以指定為范圍。在步驟742,任選地對映射到待歸零的地址的任何高速緩存塊無效化。在步驟743,向零列表添加地址。地址可以在零列表中被個別指定、由一個或者多個范圍指定或者以任何適當(dāng)方式或者方式組合來指定。在步驟726,可以任選地執(zhí)行任何附加更新后步驟(比如將零惰性寫入到零列表上的主存儲器位置)。在步驟726之后,方法740結(jié)束。圖7C是根據(jù)一些可選實施例的用于處理歸零命令的方法720的流程圖。方法720設(shè)置用于映射到歸零地址的高速緩存塊的歸零位。隨后讀取在該地址的數(shù)據(jù)將返回默認(rèn)值直至向該地址寫入并且重置歸零位。在步驟721,接收歸零命令。歸零命令可以指定數(shù)據(jù)將被歸零的一個或者多個地址。在一些實施例中,歸零命令還指定默認(rèn)值。針對數(shù)據(jù)將被歸零的每個地址執(zhí)行步驟 722-726。可以同時、依次或者以任何適當(dāng)方式針對每個地址執(zhí)行步驟。在步驟722,確定數(shù)據(jù)將被歸零的地址是否被高速緩存。當(dāng)?shù)刂繁桓咚倬彺鏁r,方法720繼續(xù)下文描述的步驟725。當(dāng)?shù)刂肺幢桓咚倬彺鏁r,方法720繼續(xù)步驟723,其中如果無可用高速緩存塊,則從高速緩存驅(qū)除最低優(yōu)先級地址。在步驟724,在步驟723驅(qū)除的高速緩存塊的映射地址被更新為數(shù)據(jù)將被歸零的地址。在步驟725,映射到數(shù)據(jù)將被歸零的地址的高速緩存塊中的所有位置可以設(shè)置成默認(rèn)值(比如零)??梢酝ㄟ^將數(shù)據(jù)實際寫入到塊中來執(zhí)行這一步驟??蛇x地,可以與移動操作相似地執(zhí)行這一步驟。然而數(shù)據(jù)源可能是先前填充有零值的高速緩存塊,而不是與主存儲器中源地址相關(guān)聯(lián)的移動數(shù)據(jù)。例如由高速緩存控制器可以在另外空閑之時創(chuàng)建這樣的預(yù)歸零高速緩存塊。在步驟726,可以任選地執(zhí)行任何附加更新步驟(比如上文在移動操作之后討論的步驟)。方法720在數(shù)據(jù)將被歸零的所有地址被處理之后結(jié)束。圖8A-8C圖示高速緩存130、存儲器總線165和主存儲器120在根據(jù)方法700已經(jīng)接收和處理歸零命令時的狀態(tài)實例。圖8A圖示高速緩存130和主存儲器120的初始狀態(tài)。在每幅圖中,高速緩存存儲器由包含五列的表表示。列801至804表示高速緩存映射的部分中的條目。具體而言,列 801標(biāo)識高速緩存塊,列802指定是否設(shè)置歸零位,列803指定塊是否為臟,而列804指定映射地址。列805提供在與標(biāo)識的高速緩存塊對應(yīng)的每個高速緩存塊中存儲的數(shù)據(jù)。主存儲器120由地址列806和數(shù)據(jù)列807表示。默認(rèn)值808也由高速緩存130存儲。默認(rèn)值808 可以“硬接線”到高速緩存130中或者可以是通過命令可設(shè)置的。默認(rèn)值808是在讀取列 802中標(biāo)記為歸零的任何塊時讀取的值。如圖8A中所示,起初高速緩存塊O映射到地址2、為臟并且存儲數(shù)據(jù)“ADG” ;塊I 映射到地址4、為臟并且存儲數(shù)據(jù)“ΒΗΓ;塊2映射到地址5、未臟并且存儲數(shù)據(jù)“PQR”;而塊 3映射到地址3、未臟并且存儲數(shù)據(jù)“JKL”。在這一實例中,默認(rèn)值808固定為數(shù)據(jù)“000”。假設(shè)高速緩存130接收指定地址1-3作為數(shù)據(jù)將被歸零的地址的歸零命令。如圖 8A中所示,僅地址2和3被高速緩存。因而地址I被加載到高速緩存130中。圖SB示出根據(jù)適當(dāng)高速緩存算法從塊2 驅(qū)除地址5。塊2重新映射到地址I。注意無需從主存儲器120實際讀取來自地址I的數(shù)據(jù),因為,無論如何,歸零操作改寫數(shù)據(jù)。在高速緩存當(dāng)前映射每個地址1-3時,為塊0、2和3 (分別映射到地址2、1和3) 設(shè)置零位。在一些實施例中,塊如圖8B中所示也標(biāo)記為臟。然而在一些實施例中,可以根據(jù)歸零位的用途理解“臟”。圖8C圖不從聞速緩存130向主存儲器120的回與。這可以例如在從聞速緩存驅(qū)除地址或者執(zhí)行惰性寫入操作時執(zhí)行。這里假設(shè)尚未隨后向地址1-3寫入。默認(rèn)值808 (即 “000”)被寫入到主存儲器120中的與相應(yīng)地址對應(yīng)的存儲器塊。例如如果向地址1-3之一寫入,則將重置零位、設(shè)置臟位(如果先前未設(shè)置)并且將數(shù)據(jù)寫入到映射的高速緩存塊。已經(jīng)這樣描述了本發(fā)明至少一個實施例的若干方面,將理解本領(lǐng)域技術(shù)人員將容易想到各種變更、修改和改進(jìn)。這樣的更改、修改和改進(jìn)旨在作為本公開內(nèi)容的部分并且旨在在本發(fā)明的精神實質(zhì)和范圍內(nèi)。因而前文描述和附圖僅為舉例??梢杂弥T多方式中的任何方式實施本發(fā)明的上述實施例。例如實施例可以使用硬件、軟件或者其組合來實施。當(dāng)用軟件實施時,可以在任何適當(dāng)處理器或者無論是在單個計算機(jī)中提供還是分布于多個計算機(jī)之間的處理器匯集上執(zhí)行軟件代碼。另外應(yīng)當(dāng)理解可以用諸多形式中的任何形式(比如架裝型計算機(jī)、桌面型計算機(jī)、 膝上型計算機(jī)或者寫字板計算機(jī))實施計算機(jī)。此外,計算機(jī)可以嵌入于一般不被視為計算機(jī)而是具有適當(dāng)處理能力的設(shè)備(包括個人數(shù)字助理(PDA)、智能電話或者任何其它適當(dāng)便攜或者固定電子設(shè)備)中。計算機(jī)也可以具有一個或者多個輸入和輸出設(shè)備。這些設(shè)備可以用來呈現(xiàn)用戶界面以及其它用途??梢杂脕硖峁┯脩艚缑娴妮敵鲈O(shè)備的實例包括用于可視呈現(xiàn)輸出的打印機(jī)或者顯示屏以及用于可聽呈現(xiàn)輸出的揚(yáng)聲器或者其它聲音生成設(shè)備??梢杂糜谟脩艚缑娴妮斎朐O(shè)備的實例包括鍵盤和指示設(shè)備(比如鼠標(biāo)、觸板和數(shù)字化寫字板)。作為另一實例, 計算機(jī)可以通過語音識別或者以其它可聽形式接收輸入信息。這樣的計算機(jī)可以以任何適當(dāng)形式由一個或者多個網(wǎng)絡(luò)(包括局域網(wǎng)或者廣域網(wǎng) (比如企業(yè)網(wǎng)或者因特網(wǎng)))互連。這樣的網(wǎng)絡(luò)可以基于任何適當(dāng)技術(shù)并且可以根據(jù)任何適當(dāng)協(xié)議操作并且可以包括無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或者光纖網(wǎng)絡(luò)。這里概括的各種方法或者過程也可以編碼為可在運(yùn)用多種操作系統(tǒng)或者平臺中的任一操作系統(tǒng)或者平臺的一個或者多個處理器上執(zhí)行的軟件。此外,這樣的軟件還可以使用多個適當(dāng)編程語言和/或編程或者腳本工具中的任一種來編寫,并且也可以編譯為在主機(jī)或者虛擬機(jī)上執(zhí)行的可執(zhí)行機(jī)器語言代碼或者中間代碼。就這一點而言,本發(fā)明可以實施為用一個或者多個如下程序編碼的一種計算機(jī)可讀介質(zhì)(或者多種計算機(jī)可讀介質(zhì))(例如計算機(jī)存儲器、一個或者多個軟盤、壓縮盤、光盤、 磁帶、閃存、在現(xiàn)場可編程門陣列或者其它半導(dǎo)體器件中的電路配置或者其它有形計算機(jī)存儲介質(zhì)),所述程序在一個或者多個計算機(jī)或者其它處理器上執(zhí)行時執(zhí)行實施上文討論的本發(fā)明各種實施例的方法。該一種或者多種計算機(jī)可讀介質(zhì)可以是可移植的,從而使得存儲于其上的一個或者多個程序可以加載到一個或者多個不同計算機(jī)或者其它處理器上以實施如上文討論的本發(fā)明的各種方面。術(shù)語“程序”或者“軟件”這里在一般意義上用來指代任何類型的如下計算機(jī)代碼或者計算機(jī)可執(zhí)行指令集,該計算機(jī)代碼或者計算機(jī)可執(zhí)行指令集可以用來對計算機(jī)或者其它處理器編程以實施如上文討論的本發(fā)明的各種方面。此外還應(yīng)當(dāng)理解,根據(jù)這一實施例的一個方面,在被執(zhí)行時執(zhí)行本發(fā)明方法的一個或者多個計算機(jī)程序無需駐留于單個計算機(jī)或者處理器上,而是可以以模塊方式分布于多個不同計算機(jī)或者處理器之中以實施本發(fā)明的各種方面。
計算機(jī)可執(zhí)行指令可以是以諸多形式(比如一個或者多個計算機(jī)或者其它設(shè)備執(zhí)行的程序模塊)。一般而言,程序模塊包括執(zhí)行特定任務(wù)或者實施特定抽象數(shù)據(jù)類型的例程、程序、對象、部件、數(shù)據(jù)結(jié)構(gòu)等。通??梢栽诟鞣N實施例中隨意地組合或者分布程序模塊的功能。數(shù)據(jù)結(jié)構(gòu)也可以用任何適當(dāng)形式存儲于計算機(jī)可讀介質(zhì)中。為了簡化示例,可以示出數(shù)據(jù)結(jié)構(gòu)具有通過在數(shù)據(jù)結(jié)構(gòu)中的位置來相關(guān)的字段。同樣可以通過向用于字段的存儲分配傳達(dá)字段之間關(guān)系的計算機(jī)可讀介質(zhì)中的位置來實現(xiàn)這樣的關(guān)系。然而任何適當(dāng)機(jī)制都可以用來在數(shù)據(jù)結(jié)構(gòu)的字段中的信息之間建立關(guān)系(包括通過使用指針、標(biāo)簽或者在數(shù)據(jù)元素之間建立關(guān)系的其它機(jī)制)。可以單獨、組合或者在未在前文中描述的實施例中具體討論的多種布置中使用本發(fā)明的各種方面,因此它的應(yīng)用并不限于在前文描述中闡述或者在附圖中圖示的細(xì)節(jié)和部件布置。例如在一個實施例中描述的方面可以用任何方式與在其它實施例中描述的方面組
合ο本發(fā)明也可以具體化為一種方法(已經(jīng)提供該方法的實例)??梢杂萌魏芜m當(dāng)方式對作為該方法的部分而執(zhí)行的動作進(jìn)行排序。因而可以構(gòu)造如下實施例,在這些實施例中按照與所示順序不同的如下順序執(zhí)行動作,該順序可以包括同時執(zhí)行即使在示例實施例中表示為依次動作的一些動作。在權(quán)利要求中使用諸如“第一”、“第二”、“第三”等序數(shù)術(shù)語來修飾權(quán)利要求要素本身并未意味著一個權(quán)利要求要素較另一權(quán)利要求要素而言的任何優(yōu)先級、優(yōu)越性或者順序或者執(zhí)行方法動作的時間順序,而是僅用作如下標(biāo)記,這些標(biāo)記用于區(qū)分具有某個名稱的一個權(quán)利要求要素與具有相同名稱(若非使用序數(shù)術(shù)語)的另一要素以區(qū)分權(quán)利要求要素。這里使用的措詞和術(shù)語也用于描述而不應(yīng)視為限制。這里使用“包括”或者“具有”、“包含”、“涉及到”及其變體意味著涵蓋后文列舉的項目及其等效項目以及附加項目。
權(quán)利要求
1.一種管理計算機(jī)系統(tǒng)中的存儲器的方法,所述方法包括操作高速緩存控制器以執(zhí)行以下動作為高速緩存中的多個高速緩存塊建立映射;從處理器接收表明所述映射的修改的命令;并且響應(yīng)于所述命令修改所述映射。
2.根據(jù)權(quán)利要求I所述的方法,其中對于所述多個高速緩存塊中的每個高速緩存塊,所述映射包括表明主存儲器中的與所述高速緩存塊關(guān)聯(lián)的地址的映射地址;所述命令是指示將第一數(shù)據(jù)從所述主存儲器中的第一地址復(fù)制到所述主存儲器中的第二地址的復(fù)制命令;并且響應(yīng)于所述命令修改所述映射包括改變用于存儲所述第一數(shù)據(jù)的高速緩存塊的映射地址,所述映射地址從所述第一地址改變成所述第二地址。
3.根據(jù)權(quán)利要求2所述的方法,其中操作所述高速緩存控制器還包括確定所述第一數(shù)據(jù)當(dāng)前未存儲于所述高速緩存中,并且響應(yīng)于所述復(fù)制命令將所述第一數(shù)據(jù)從所述主存儲器的具有所述第一地址的存儲器塊復(fù)制到所述高速緩存塊。
4.根據(jù)權(quán)利要求2所述的方法,其中操作所述高速緩存控制器還包括將所述第一數(shù)據(jù)從所述高速緩存塊回寫到所述主存儲器的具有所述第二地址的存儲器塊。
5.根據(jù)權(quán)利要求I所述的方法,其中對于所述多個高速緩存塊中的每個高速緩存塊,所述映射包括映射地址,所述映射地址表明主存儲器中的與所述高速緩存塊關(guān)聯(lián)的地址;所述命令是存儲器交換命令,并且響應(yīng)于所述命令修改所述映射包括首先將用于第一高速緩存塊的第一映射地址從第一地址改變成第二地址;并且其次將用于第二高速緩存塊的第二映射地址從所述第二地址改變成所述第一地址。
6.根據(jù)權(quán)利要求5所述的方法,其中在所述高速緩存的相同操作周期期間執(zhí)行所述第一改變和所述第二改變。
7.一種用于計算機(jī)系統(tǒng)的高速緩存,所述高速緩存包括高速緩存存儲器,其具有用于存儲數(shù)據(jù)的多個高速緩存塊,所述多個高速緩存塊包括第一高速緩存塊;高速緩存映射存儲器,其用于存儲從所述高速緩存塊到所述計算機(jī)系統(tǒng)的主存儲器的地址的多個關(guān)聯(lián),每個關(guān)聯(lián)標(biāo)識相應(yīng)高速緩存塊映射至的地址;以及高速緩存控制器,其具有映射模塊,所述映射模塊適于響應(yīng)于接收的命令通過將用于所述第一高速緩存塊的第一關(guān)聯(lián)從標(biāo)識所述主存儲器中的第一地址改變成標(biāo)識所述主存儲器中的第二地址來修改所述高速緩存映射存儲器中存儲的所述關(guān)聯(lián),所述第一高速緩存塊存儲第一數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的高速緩存,其中所述高速緩存控制器包括處理單元和計算機(jī)可執(zhí)行指令,并且所述映射模塊包括所述處理單元可執(zhí)行的微代碼。
9.根據(jù)權(quán)利要求8所述的高速緩存,其中所述高速緩存控制器還包括替換模塊,其適于響應(yīng)于第二接收命令來指定用于多個高速緩存塊之中的第二高速緩存塊的替換優(yōu)先級。
10.根據(jù)權(quán)利要求9所述的高速緩存,還包括一致性存儲器,用于存儲多個一致性標(biāo)記,每個一致性標(biāo)記表明相應(yīng)高速緩存塊中存儲的數(shù)據(jù)是否與存儲在所述主存儲器中由所述高速緩存塊的相應(yīng)關(guān)聯(lián)所表明的地址的數(shù)據(jù)一致,并且當(dāng)所述第二接收命令是無效化命令時,所述替換模塊還配置成設(shè)置用于所述第二高速緩存塊的表明所述第二個塊中的數(shù)據(jù)一致的一致性標(biāo)記。
11.根據(jù)權(quán)利要求7所述的高速緩存,其中所述高速緩存控制器還包括歸零模塊,其配置成響應(yīng)于歸零命令來指定第二高速緩存塊中的數(shù)據(jù)設(shè)置成默認(rèn)值。
12.根據(jù)權(quán)利要求11所述的高速緩存,還包括歸零存儲器,其用于存儲多個歸零標(biāo)記,每個歸零標(biāo)記表明相應(yīng)高速緩存塊中存儲的數(shù)據(jù)是否將被讀取為由所述塊存儲或者所述默認(rèn)值,其中響應(yīng)于所述歸零命令,所述歸零模塊設(shè)置用于所述第二高速緩存塊的歸零標(biāo)記以表明所述第二高速緩存塊中的所述數(shù)據(jù)應(yīng)當(dāng)被讀取為所述默認(rèn)值。
13.根據(jù)權(quán)利要求8所述的高速緩存,其中所述高速緩存控制器接收的所述命令是復(fù)制命令,其指示將所述第一數(shù)據(jù)從所述主存儲器中具有所述第一地址的存儲器塊復(fù)制到所述主存儲器中具有所述第二地址的存儲器塊;并且所述高速緩存控制器還配置成當(dāng)所述高速緩存存儲器未存儲所述第一數(shù)據(jù)時,將所述第一數(shù)據(jù)從所述主存儲器中具有所述第一地址的所述存儲器塊加載到所述第一高速緩存塊中。
14.根據(jù)權(quán)利要求7所述的高速緩存,其被集成到還包括通信總線和處理器的計算機(jī)系統(tǒng)中,其中所述高速緩存控制器所接收的命令是通過所述通信總線從所述處理器接收的。
15.根據(jù)權(quán)利要求7所述的高速緩存,其中所述高速緩存控制器還適于執(zhí)行以下動作從處理器接收命令,所述命令表明所述主存儲器的第二地址引用的第二數(shù)據(jù)將被復(fù)制以便由所述主存儲器的第三地址引用;確定所述第二地址引用的所述第二數(shù)據(jù)是否存儲于所述高速緩存的塊中;當(dāng)確定所述第二數(shù)據(jù)未存儲于所述高速緩存中時,將所述第二數(shù)據(jù)從所述主存儲器的所述第二地址加載到所述高速緩存中;并且將所述高速緩存中存儲所述第二數(shù)據(jù)的塊重新映射到所述主存儲器的所述第三地址。
全文摘要
計算機(jī)系統(tǒng)中的高速緩存控制器被配置成管理高速緩存以便減少總線帶寬的使用。高速緩存控制器從處理器接收命令。作為響應(yīng),維持高速緩存中每個塊的信息的高速緩存映射被修改。高速緩存映射可以包括用于每個高速緩存塊的地址、臟位、零位和優(yōu)先級。地址表明主存儲器中的如下地址高速緩存塊針對該地址對數(shù)據(jù)進(jìn)行高速緩存。臟位表明高速緩存塊中的數(shù)據(jù)是否與主存儲器中在該地址的數(shù)據(jù)一致。零位表明在該地址的數(shù)據(jù)是否應(yīng)當(dāng)讀取為默認(rèn)值,而優(yōu)先級指定用于驅(qū)除高速緩存塊的優(yōu)先級。通過操控這一映射信息,可以實施諸如移動、復(fù)制、交換、歸零、去優(yōu)先級化和去激活等命令。
文檔編號G06F12/08GK102612685SQ201080051868
公開日2012年7月25日 申請日期2010年10月18日 優(yōu)先權(quán)日2009年11月16日
發(fā)明者B.L.沃爾興頓, J.C.富勒, T.J.奧特耶斯 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宣威市| 赞皇县| 西平县| 娄底市| 兴海县| 齐河县| 古丈县| 谷城县| 阿坝| 土默特右旗| 家居| 宣化县| 河间市| 洛川县| 山阳县| 哈巴河县| 尼勒克县| 江口县| 长海县| 共和县| 淮南市| 成都市| 凤阳县| 彭州市| 玛曲县| 西华县| 罗城| 乐平市| 昌乐县| 海门市| 柘荣县| 旌德县| 中西区| 来安县| 会昌县| 通渭县| 成都市| 会理县| 淳化县| 元阳县| 平武县|