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

多類數(shù)據(jù)高速緩存策略的制作方法

文檔序號(hào):6583879閱讀:250來(lái)源:國(guó)知局
專利名稱:多類數(shù)據(jù)高速緩存策略的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及存儲(chǔ)器管理領(lǐng)域,且更特別地,涉及多類數(shù)據(jù)高速緩存策略。 在一定的處理單元中的存儲(chǔ)器子系統(tǒng)的一個(gè)元件是二級(jí)高速緩存存儲(chǔ)器(此處 稱為"L2高速緩存")。L2高速緩存是大的片上存儲(chǔ)器,其用作在外部存儲(chǔ)器(例如幀緩沖 器存儲(chǔ)器)和存儲(chǔ)器子系統(tǒng)的內(nèi)部客戶端(此處稱為"客戶端")之間的中間點(diǎn)。L2高速 緩存臨時(shí)地存儲(chǔ)各種客戶端正在使用的數(shù)據(jù)。該數(shù)據(jù)可以從外部存儲(chǔ)器中獲得或?qū)懭胪獠?存儲(chǔ)器(此處稱為"DRAM")??蛻舳丝梢栽偈褂么鎯?chǔ)在L2高速緩存中的數(shù)據(jù)同時(shí)實(shí)施一 定的操作。 在讀操作期間,客戶端可以從L2高速緩存中請(qǐng)求當(dāng)前未存儲(chǔ)在L2高速緩存中的 數(shù)據(jù),因此該數(shù)據(jù)必須要從DRAM中獲得。必須從DRAM中獲得數(shù)據(jù)的讀操作比直接從L2高 速緩存中獲得數(shù)據(jù)的讀操作要以明顯更多的時(shí)鐘周期來(lái)處理。因此,如果非常多數(shù)目的讀 操作的數(shù)據(jù)必須從DRAM獲取,那么總體系統(tǒng)性能會(huì)嚴(yán)重地影響。但是,由于分配給L2高速 緩存的存儲(chǔ)器空間是限制的,因此駐存在L2高速緩存的數(shù)據(jù)需要慣常地逐出以為由客戶 端發(fā)送的將來(lái)的讀或?qū)懖僮麽尫糯鎯?chǔ)器空間。如果駐存在L2高速緩存上的數(shù)據(jù)沒(méi)有足夠 頻繁地逐出,那么將來(lái)的讀和寫操作必須停止直到L2高速緩存中有空間來(lái)處理那些操作。 再次,這樣的動(dòng)態(tài)能明顯地影響總體系統(tǒng)性能。 常規(guī)逐出方案通常實(shí)施最少最近使用的數(shù)據(jù)從高速緩存逐出的策略。但是,在一 定的系統(tǒng)中,其中數(shù)據(jù)的使用形式改變,這樣的方法可能不會(huì)達(dá)到在快速地逐出數(shù)據(jù)以為 將來(lái)的讀和寫操作制造空間和允許數(shù)據(jù)在高速緩存中保留足夠長(zhǎng)的時(shí)間以再使用而避免 向外部存儲(chǔ)器請(qǐng)求數(shù)據(jù)之間的合適的平衡。 如前所說(shuō)明,本領(lǐng)域需要的是確定哪些數(shù)據(jù)應(yīng)當(dāng)首先從中間高速緩存(例如L2高 速緩存)中逐出的更有效的機(jī)制。 本發(fā)明的一個(gè)實(shí)施例闡明了一種用于從耦合于一個(gè)或多個(gè)客戶端和外部存儲(chǔ)器 的中間高速緩存逐出數(shù)據(jù)的方法。該方法包括下列步驟從客戶端接收包括相關(guān)存儲(chǔ)器地 址的命令;在中間高速緩存中識(shí)別一個(gè)或多個(gè)高速緩存行以基于存儲(chǔ)器地址存儲(chǔ)與命令相 關(guān)的數(shù)據(jù);確定相對(duì)于一個(gè)或多個(gè)高速緩存行存在高速緩存缺失;和基于與駐存在一個(gè)或 多個(gè)高速緩存行中的數(shù)據(jù)相關(guān)的一個(gè)或多個(gè)逐出類使得駐存在一個(gè)或多個(gè)高速緩存行中 的數(shù)據(jù)的至少一部分逐出,或停止該命令,其中每個(gè)逐出類反映了與逐出類相關(guān)的數(shù)據(jù)由 客戶端或不同的客戶端再使用的不同的可能性。 公開(kāi)的方法的一個(gè)優(yōu)點(diǎn)是,與存儲(chǔ)在數(shù)據(jù)高速緩存中的數(shù)據(jù)相關(guān)的數(shù)據(jù)類允許當(dāng) 給與進(jìn)入的讀或?qū)懨钕嚓P(guān)的數(shù)據(jù)制造空間時(shí),標(biāo)記查找單元將具有最少再使用可能性的 數(shù)據(jù)逐出。該逐出數(shù)據(jù)的機(jī)制降低了對(duì)可能由系統(tǒng)中的客戶端再使用的數(shù)據(jù)的早期逐出造
背景技術(shù)

發(fā)明內(nèi)容
4成的高速緩存缺失的數(shù)目。


為了詳細(xì)地理解本發(fā)明的上述特征,對(duì)于以上簡(jiǎn)要說(shuō)明的本發(fā)明,將參照實(shí)施例 進(jìn)行更為具體的描述,其中對(duì)一些實(shí)施例在附圖中進(jìn)行了圖示。然而,需要注意的是,附圖 只是圖示本發(fā)明的代表性實(shí)施例,因此不能認(rèn)為附圖限制了本發(fā)明的范圍,本發(fā)明可以允 許其他同樣有效的實(shí)施例。
圖1是圖示配置為實(shí)現(xiàn)本發(fā)明一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖1中的計(jì)算機(jī)系統(tǒng)的并行處理子系統(tǒng)的框圖;
圖3A是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖2中的并行處理單元之一中的通用處理簇的 框圖; 圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖2中的并行處理單元之一中的分區(qū)單元的框 圖; 圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖3B的分區(qū)單元的詳細(xì)的框圖;禾口 圖5A-5D闡明了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于管理數(shù)據(jù)流入和流出圖4的數(shù)據(jù)高
速緩存的方法步驟的流程圖。
具體實(shí)施例方式
在下文的描述中,給出了大量具體的細(xì)節(jié)以便提供對(duì)本發(fā)明更為徹底的理解。然 而,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)顯而易見(jiàn)的是,本發(fā)明可以無(wú)需一個(gè)或多個(gè)這些具體細(xì)節(jié)而 得以實(shí)施。在其他的例子中,為了避免與本發(fā)明發(fā)生混淆,對(duì)于公知的特征未進(jìn)行描述。
系統(tǒng)概述 圖1是圖示配置為實(shí)現(xiàn)本發(fā)明一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算 機(jī)系統(tǒng)100包括中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104,二者通過(guò)存儲(chǔ)器橋105經(jīng)由總 線路徑進(jìn)行通信。存儲(chǔ)器橋105可以如圖1所示集成到CPU 102中。作為替換,存儲(chǔ)器橋 105可以是慣常設(shè)備例如北橋芯片,其通過(guò)總線連接到CPU 102。存儲(chǔ)器橋105通過(guò)通信路 徑106 (例如HyperTransport (超傳輸)鏈路)與1/0(輸入/輸出)橋107相連接。I/O 橋107例如可以是南橋芯片,其從一個(gè)或多個(gè)用戶輸入設(shè)備108(例如鍵盤、鼠標(biāo))接收用 戶輸入,并將該輸入通過(guò)路徑106和存儲(chǔ)器橋105轉(zhuǎn)發(fā)給CPU 102。并行處理子系統(tǒng)112通 過(guò)總線或其他通信路徑113(例如PCIE鄧ress、加速圖形端口或超傳輸鏈路)與存儲(chǔ)器橋 105相耦合;在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112是將像素提供給顯示設(shè)備IIO(例如傳 統(tǒng)的CRT或基于LCD的顯示器)的圖形子系統(tǒng)。系統(tǒng)盤114同樣連接于I/0橋107。開(kāi)關(guān) 116提供了 1/0橋107和諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的 連接。包括USB或其他端口連接、CD驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器、電影記錄設(shè)備等的其他部件(圖 中沒(méi)有明確示出),也可以與1/0橋107相連接。將圖1中的各種部件相互連接的通信路徑 可以用任何適用的協(xié)議來(lái)實(shí)現(xiàn),比如PCI (外設(shè)部件互連)、PCI E鄧ress(PCI-E) 、AGP(加速 圖形端口 )、超傳輸或任何其他總線或點(diǎn)對(duì)點(diǎn)通信協(xié)議,并且不同設(shè)備之間的連接可以使用 不同協(xié)議,如本領(lǐng)域已知的。 在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包括為圖形和視頻處理優(yōu)化的電路,包括例如視頻輸出電路,并構(gòu)成了圖形處理單元(GPU)。在另一實(shí)施例中,并行處理子系統(tǒng)112 包括為通用處理優(yōu)化,并保留了底層計(jì)算架構(gòu)的電路,本文將更加詳細(xì)地描述。在另一實(shí)施 例中,并行處理子系統(tǒng)112可以集成一個(gè)或多個(gè)其他系統(tǒng)元件,例如存儲(chǔ)器橋105、CPU 102 和I/O橋107,以形成片上系統(tǒng)(SoC)。 可以理解的是,這里示出的系統(tǒng)只是示意性的,可以對(duì)其進(jìn)行變化和修改。包括橋 的數(shù)量和排列的連接拓?fù)浣Y(jié)構(gòu)可以根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104 直接與CPU 102相連接而不是通過(guò)橋相連接,其他設(shè)備通過(guò)存儲(chǔ)器橋105和CPU 102與系 統(tǒng)存儲(chǔ)器104相通信。在其他可選擇的拓?fù)浣Y(jié)構(gòu)中,并行處理系統(tǒng)112與1/0橋107相連 接或直接與CPU 102相連接,而不是和存儲(chǔ)器橋105相連接。在其他實(shí)施例中,CPU102、 1/ 0橋107、并行處理子系統(tǒng)112和存儲(chǔ)器橋105的一個(gè)或多個(gè)被集成到一個(gè)或多個(gè)芯片上。 這里示出的特定部件是任選的;例如,可以支持任何數(shù)量的插卡或外設(shè)。在一些實(shí)施例中, 省去了開(kāi)關(guān)116,網(wǎng)絡(luò)適配器118和插卡120、 121直接和1/0橋107相連接。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的并行處理子系統(tǒng)112。如圖所示,并行處理 子系統(tǒng)112包括一個(gè)或多個(gè)并行處理單元(PPU)202,每個(gè)并行處理單元都和本地并行處理 (PP)存儲(chǔ)器204相耦合。通常,并行處理子系統(tǒng)包括U個(gè)PPU,其中U > 1。(在這里,相似 對(duì)象的多個(gè)例子用表明該對(duì)象的附圖標(biāo)記和表明該例子的附加說(shuō)明數(shù)字(需要時(shí))來(lái)表 示)。PPU 202和并行處理存儲(chǔ)器204可以使用例如可編程處理器,專用集成電路(ASIC) 或存儲(chǔ)器設(shè)備的一個(gè)或多個(gè)集成電路設(shè)備,或以任何其他技術(shù)上可行的方式來(lái)實(shí)現(xiàn)。
再次參考圖l,在一些實(shí)施例中,在并行處理子系統(tǒng)112中的一些或者全部的并行 處理單元202是具有渲染流水線的圖形處理器,其能被配置成進(jìn)行與下列情形有關(guān)的各種 任務(wù)從通過(guò)CPU 102和/或系統(tǒng)存儲(chǔ)器104提供的圖形數(shù)據(jù)產(chǎn)生像素?cái)?shù)據(jù);與本地并行處 理存儲(chǔ)器204 (其能被用作圖形存儲(chǔ)器,例如包括常規(guī)的幀緩沖器)交互以存儲(chǔ)并更新像素 數(shù)據(jù);提供像素?cái)?shù)據(jù)給顯示設(shè)備110等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括作為 圖形處理器工作的一個(gè)或多個(gè)并行處理單元202和用于通用計(jì)算的一個(gè)或多個(gè)其他并行 處理單元202。并行處理單元可以是相同或不同的,且每個(gè)并行處理單元202可以有其自己 專用的并行處理存儲(chǔ)器設(shè)備或沒(méi)有專用的并行處理存儲(chǔ)器設(shè)備。 一個(gè)或多個(gè)并行處理單元 202可以將數(shù)據(jù)輸出到顯示設(shè)備110或者每個(gè)并行處理單元202可以將數(shù)據(jù)輸出到一個(gè)或 多個(gè)顯示設(shè)備110。 在操作中,CPU 102是計(jì)算機(jī)系統(tǒng)100的主處理器,其控制和協(xié)調(diào)其他系統(tǒng)部件 的操作。特別是,CPU 102發(fā)出控制并行處理單元202操作的命令。在一些實(shí)施例中,CPU 102將對(duì)于每個(gè)并行處理單元202的命令流寫入到命令緩沖器(圖1和圖2中未明確地示 出),該命令緩沖器可以位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204或是CPU 102和并行處 理單元202都可以訪問(wèn)的另一個(gè)存儲(chǔ)位置中。并行處理單元202從命令緩沖器中讀出命令 流,并且隨后相對(duì)于CPU 102的操作異步地執(zhí)行命令。CPU 102也可以建立數(shù)據(jù)緩沖器,并 行處理單元202可以響應(yīng)命令緩沖器中的命令讀取該數(shù)據(jù)緩沖器。每個(gè)命令和數(shù)據(jù)緩沖器 可以由并行處理單元202的每個(gè)讀取。 現(xiàn)在返回參考圖2,每個(gè)并行處理單元202包括通過(guò)通信路徑113和計(jì)算機(jī)系統(tǒng) 100的剩余部分通信的1/0(輸入/輸出)單元205,該通信路徑113與存儲(chǔ)器橋105相連 接(或是在一個(gè)可選實(shí)施例中直接與CPU 102相連接)。并行處理單元202和計(jì)算機(jī)系統(tǒng)100的剩余部分的連接也可以變化。在一些實(shí)施例中,并行處理子系統(tǒng)112實(shí)現(xiàn)為插卡,其 能插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中。在其他實(shí)施例中,并行處理單元202能和總線橋一 起集成到單一芯片上,總線橋例如可以是存儲(chǔ)器橋105或1/0橋107。在另外其他實(shí)施例 中,并行處理單元202的一些或全部元件可以連同CPU102 —起集成到單一芯片上。
在一個(gè)實(shí)施例中,通信路徑113是PCI-E鏈路,其中如本領(lǐng)域所已知的,專用通道 分配給每個(gè)PPU 202。也可以使用其他通信路徑。1/0單元205產(chǎn)生包(或其他信號(hào))以 在通信路徑113上傳送,并也接收所有來(lái)自通信路徑113的輸入包(或其他信號(hào)),并將輸 入包引導(dǎo)至PPU 202的適當(dāng)?shù)牟考?。例如,和處理任?wù)有關(guān)的命令可以被引導(dǎo)至主機(jī)接口 206,而和存儲(chǔ)器操作有關(guān)的命令(例如從并行處理存儲(chǔ)器204中讀取或向其寫入)可以被 引導(dǎo)至存儲(chǔ)器交叉器(crossbar)單元210。主機(jī)接口 206讀取每個(gè)命令緩沖器,并將由命 令緩沖器指定的工作輸出到前端212。 每個(gè)PPU 202有利地實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,PPU 202(0)包括處 理簇陣列230,處理簇陣列230包括數(shù)量為C的通用處理簇(GPC) 208,其中C > 1 。每個(gè)GPC 208能同時(shí)執(zhí)行大量(例如數(shù)百個(gè)或數(shù)千個(gè))線程,其中每個(gè)線程是程序的實(shí)例。在不同應(yīng) 用中,不同的GPC 208被分配用以處理不同類型的程序或進(jìn)行不同類型的計(jì)算。例如,在圖 形應(yīng)用中,第一組GPC 208可以分配為進(jìn)行鑲嵌操作并產(chǎn)生面片的圖元拓?fù)?,而第二組GPC 208可以分配為進(jìn)行鑲嵌著色以評(píng)價(jià)圖元拓?fù)涞拿嫫瑓?shù)并確定頂點(diǎn)位置和其他每頂點(diǎn)屬 性。GPC 208的分配基于每個(gè)類型的程序或計(jì)算產(chǎn)生的工作量是可以變化的??蛇x擇地, GPC 208可以分配為使用時(shí)間片方案進(jìn)行處理任務(wù)以在不同處理任務(wù)之間轉(zhuǎn)換。
GPC 208通過(guò)工作分配單元200接收將要執(zhí)行的處理任務(wù),該工作分配單元200從 前端單元212接收限定了處理任務(wù)的命令。處理任務(wù)包括例如表面(面片)數(shù)據(jù)、圖元數(shù) 據(jù)、頂點(diǎn)數(shù)據(jù)和/或像素?cái)?shù)據(jù)的要處理數(shù)據(jù)的指針,還有狀態(tài)參數(shù)和限定數(shù)據(jù)如何處理的 命令(例如執(zhí)行什么程序)。工作分配單元200可以配置成取得對(duì)應(yīng)于處理任務(wù)的指針,工 作分配單元200可以從前端212接收指針,或者工作分配單元200可以直接從前端212接 收數(shù)據(jù)。在一些實(shí)施例中,索引指明了陣列中數(shù)據(jù)的位置。前端212保證在命令緩沖器指 定的處理啟動(dòng)前,GPC 208配置為有效狀態(tài)。 例如,當(dāng)并行處理單元202用于圖形處理時(shí),每個(gè)面片的處理工作量被分成大約 相等大小的任務(wù),以使得能將鑲嵌處理分配給多個(gè)GPC 208。工作分配單元200可以配置 成以能提供任務(wù)到多個(gè)GPC 208用于處理的頻率輸出任務(wù)。在本發(fā)明的一些實(shí)施例中,部 分GPC 208配置成進(jìn)行不同類型的處理。例如,第一部分可以配置成進(jìn)行頂點(diǎn)著色和產(chǎn)生 拓?fù)浣Y(jié)構(gòu),第二部分可以配置成進(jìn)行鑲嵌和幾何著色,以及第三部分可以配置成在屏幕空 間上進(jìn)行像素著色以產(chǎn)生渲染的圖像。分配部分GPC 208以進(jìn)行不同類的處理任務(wù)的能力 有效地適應(yīng)了由那些不同類型的處理任務(wù)產(chǎn)生的數(shù)據(jù)的任何擴(kuò)展和縮減。GPC 208產(chǎn)生的 中間數(shù)據(jù)可以被緩沖,以在下游GPC 208接收數(shù)據(jù)的速度落后于上游GPC 208產(chǎn)生數(shù)據(jù)的 速度的情況下,允許中間數(shù)據(jù)在GPC 208之間以最少的停止傳輸。 存儲(chǔ)器接口 214可以被分區(qū)成D個(gè)存儲(chǔ)器分區(qū)單元,每個(gè)存儲(chǔ)器分區(qū)單元與并行 處理存儲(chǔ)器204的一部分耦合,其中D > 1。并行處理存儲(chǔ)器204的每部分通常包括一個(gè)或 多個(gè)存儲(chǔ)器設(shè)備(例如DRAM 220)。本領(lǐng)域的普通技術(shù)人員可以理解的是,DRAM 220可以 由其他合適的存儲(chǔ)設(shè)備代替并且通??梢允菓T常的設(shè)計(jì)。因此省略了詳細(xì)的描述。例如幀
7緩沖器或紋理貼圖的渲染目標(biāo)可以跨越DRAM 220存儲(chǔ),允許分區(qū)單元215將每個(gè)渲染目標(biāo) 的部分并行寫入,以有效地使用并行處理存儲(chǔ)器204的可用帶寬。 GPC 208的任何一個(gè)可以處理要寫入到并行處理存儲(chǔ)器204中的任何分區(qū)單元 215中的數(shù)據(jù)。交叉器(crossbar)單元210配置為將每個(gè)GPC 208的輸出發(fā)送至任何分區(qū) 單元215的輸入或另一 GPC 208以進(jìn)一步處理。GPC208通過(guò)交叉器單元210與存儲(chǔ)器接口 214通信以從各種外部存儲(chǔ)器設(shè)備中讀取或?qū)懭敫鞣N外部存儲(chǔ)器設(shè)備。在一個(gè)實(shí)施例中,交 叉器單元210與存儲(chǔ)器接口 214連接以與1/0單元205通信,交叉器單元210也和本地并 行處理存儲(chǔ)器204連接,因此使得不同GPC 208內(nèi)的處理內(nèi)核能與系統(tǒng)存儲(chǔ)器104或?qū)Σ?行處理單元202為非本地的其他存儲(chǔ)器通信。交叉器單元210可以使用虛擬通道以在GPC 208和分區(qū)單元215之間分開(kāi)通信流。 此外,GPC 208能被編程以執(zhí)行與廣泛多種應(yīng)用相關(guān)的處理任務(wù),所述應(yīng)用包括但 不限于線性和非線性數(shù)據(jù)轉(zhuǎn)換、視頻和/或音頻數(shù)據(jù)的過(guò)濾、建模操作(例如,應(yīng)用物理規(guī) 律來(lái)確定對(duì)象的位置、速度和其他屬性)、圖像渲染操作(例如,鑲嵌著色器、頂點(diǎn)著色器、 幾何著色器和/或像素著色器程序)等等。并行處理單元202可以將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器 104和/或本地并行處理存儲(chǔ)器204傳輸?shù)絻?nèi)部(片上)存儲(chǔ)器,處理數(shù)據(jù),并將結(jié)果數(shù)據(jù) 寫回到系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204中,其中這樣的數(shù)據(jù)能夠由包括CPU 102或另一并行處理子系統(tǒng)112的其他系統(tǒng)部件來(lái)訪問(wèn)。 并行處理單元202可以提供有任意數(shù)量的本地并行處理存儲(chǔ)器204,包括沒(méi)有 本地存儲(chǔ)器,并可以以任意組合使用本地存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。例如,在統(tǒng)一存儲(chǔ)器架構(gòu) (UMA)的實(shí)施例中,并行處理單元202可以是圖形處理器。在這樣的實(shí)施例中,會(huì)提供極少 或者不提供專用圖形(并行處理)存儲(chǔ)器,并行處理單元202唯一地使用或幾乎唯一地使 用系統(tǒng)存儲(chǔ)器。在UMA實(shí)施例中,并行處理單元202可被集成到橋芯片或處理器芯片中,或 者是提供為具有高速鏈路(例如PCI-E)的分立的芯片,該高速鏈路將并行處理單元202通 過(guò)橋芯片或其他通信裝置與系統(tǒng)存儲(chǔ)器相連接。 如上所述,并行處理子系統(tǒng)112中可以包括任意數(shù)量的并行處理單元202。例如, 多個(gè)并行處理單元202可以提供在單個(gè)的插卡上,或者多個(gè)插卡可以與通信路徑113相連, 或者一個(gè)或多個(gè)并行處理單元202可以集成到橋芯片中。多并行處理單元系統(tǒng)中的并行處 理單元202可以是彼此相同的,或者可以是彼此不同的。例如,不同的并行處理單元202可 以具有不同數(shù)量的處理內(nèi)核、不同數(shù)量的本地并行處理存儲(chǔ)器等等。當(dāng)存在有多個(gè)并行處 理單元202時(shí),那些并行處理單元可以以高于單個(gè)并行處理單元202可能達(dá)到的吞吐量來(lái) 并行操作以處理數(shù)據(jù)。包含有一個(gè)或多個(gè)并行處理單元202的系統(tǒng)可以以各種配置和形式 因素實(shí)現(xiàn),包括臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)、或是手持個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控 制臺(tái)、嵌入式系統(tǒng)等等。
處理簇陣列概述 圖3A是根據(jù)本發(fā)明一個(gè)實(shí)施例的在圖2的并行處理單元202之一中的GPC 208 的框圖。每個(gè)GPC 208可以配置為并行執(zhí)行大量的線程,在此術(shù)語(yǔ)"線程"是指對(duì)一特定組 的輸入數(shù)據(jù)執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令多數(shù)據(jù)(SMD)指令發(fā)送技術(shù) 被用于支持并行執(zhí)行大量線程,而不用提供多個(gè)獨(dú)立的指令單元。在其他實(shí)施例中,使用配 置為向每個(gè)GPC 208中的一組處理引擎發(fā)送指令的共同指令單元,單指令多線程(SIMT)技術(shù)被用來(lái)支持并行執(zhí)行大量通用同步線程。不像SMD執(zhí)行方式中所有處理引擎通常執(zhí)行 相同的指令,SIMT的執(zhí)行允許不同的線程通過(guò)給定的線程程序更加容易地跟隨分散的執(zhí)行 路徑。本領(lǐng)域的普通技術(shù)人員可以理解的是,SMD處理方式代表了 SMT處理方式的功能 性子集。 在圖形應(yīng)用中,GPC 208可以被配置為實(shí)現(xiàn)圖元引擎以進(jìn)行屏幕空間圖形處理功 能,其包括但不限于圖元建立、光柵化和Z剔除。圖元引擎從工作分配單元200接收處理任 務(wù),當(dāng)處理任務(wù)不需要由圖元引擎實(shí)施的操作時(shí),處理任務(wù)通過(guò)圖元引擎?zhèn)魉偷搅魉€管 理器305。 GPC 208的操作通過(guò)流水線管理器305有利地控制,流水線管理器305將處理任 務(wù)分配給流多處理器(SPM)310。流水線管理器305也可以配置為通過(guò)為SPM 310輸出的處 理的數(shù)據(jù)指定目的地來(lái)控制工作分配交叉器(crossbar) 330。 在一個(gè)實(shí)施例中,每個(gè)GPC 208包括M個(gè)SPM 310,其中M > 1,每個(gè)SPM 310配置 成處理一個(gè)或多個(gè)線程組。此外,每個(gè)SPM 310有利地包括可以流水線化的相同組的功能 單元(例如算術(shù)邏輯單元等),允許新指令在前指令完成之前發(fā)送,這已在本領(lǐng)域中公知。 可以提供功能單元的任何組合。在一個(gè)實(shí)施例中,功能單元支持各種運(yùn)算,包括整數(shù)和浮點(diǎn) 算術(shù)(例如加法和乘法)、比較運(yùn)算、布爾運(yùn)算(與、或、異或)、移位和各種代數(shù)函數(shù)(例如 平面插值函數(shù)、三角算法函數(shù)、指數(shù)和對(duì)數(shù)函數(shù)等)計(jì)算;并且相同的功能單元硬件可以被 平衡為實(shí)施不同的運(yùn)算。 傳送到特定GPC 208的系列指令構(gòu)成了已在本文前面定義的線程,且在SPM 310 內(nèi)在并行處理引擎(未示出)上一定數(shù)量同時(shí)執(zhí)行的線程的集合在本文中稱為線程組。如 本文所使用的,線程組指的是對(duì)不同輸入數(shù)據(jù)同時(shí)執(zhí)行相同程序的線程的組,組中的每個(gè) 線程被分配給SPM 310中的不同處理引擎。線程組可以包括比SPM 310中處理引擎數(shù)量少 的線程,在這種情況中,在當(dāng)處理線程組時(shí)的周期期間,一些處理引擎將是空閑的。線程組 也可以包括比SPM 310中處理引擎數(shù)量多的線程,在這種情況中,處理將發(fā)生在多個(gè)時(shí)鐘 周期上。由于每個(gè)SPM 310可以同時(shí)支持多達(dá)G個(gè)線程組,因此多達(dá)GXM個(gè)線程組可以在 任何給定的時(shí)間在GPC 208中執(zhí)行。 專有本地地址空間對(duì)每個(gè)線程可用,且共享的每CTA地址空間用于在CTA中的線 程之間傳遞數(shù)據(jù)。存儲(chǔ)在每線程本地地址空間和每CTA地址空間中的數(shù)據(jù)存儲(chǔ)在Ll高速 緩存320中,且可以使用逐出策略來(lái)幫助將數(shù)據(jù)保持在Ll高速緩存320中。每個(gè)SPM 310 使用在用于進(jìn)行裝載和存儲(chǔ)操作的相應(yīng)的L1高速緩存320中的空間。每個(gè)SPM 310也訪問(wèn) 所有GPC 208共享并可以用于在線程之間傳送數(shù)據(jù)的分區(qū)單元215中的L2高速緩存。最 后,SPM 310也訪問(wèn)片外"全局"存儲(chǔ)器,其可以包括例如并行處理存儲(chǔ)器204和/或系統(tǒng)存 儲(chǔ)器104。 L2高速緩存可以用于存儲(chǔ)寫入到全局存儲(chǔ)器中和從全局存儲(chǔ)器中讀取的數(shù)據(jù)。 可以理解的是,并行處理單元202外部的任何存儲(chǔ)器都可以用作全局存儲(chǔ)器。
在圖形應(yīng)用中,GPC 208可以配置為使得每個(gè)SPM 310和紋理單元315耦合以進(jìn) 行紋理貼圖操作,例如確定紋理樣本的位置、讀取紋理數(shù)據(jù)和過(guò)濾紋理數(shù)據(jù)。紋理數(shù)據(jù)通過(guò) 存儲(chǔ)器接口 214讀取并按照需要從L2高速緩存、并行處理存儲(chǔ)器204或者系統(tǒng)存儲(chǔ)器104 中取得。紋理單元315可以配置為在內(nèi)部高速緩存中存儲(chǔ)紋理數(shù)據(jù)。在一些實(shí)施例中,紋 理單元315與Ll高速緩存320耦合且紋理數(shù)據(jù)存儲(chǔ)在Ll高速緩存320中。每個(gè)SPM 310 向工作分配交叉器330輸出處理的任務(wù),以向另一 GPC 208提供處理的任務(wù)以做進(jìn)一步處
9理,或通過(guò)交叉器單元210將處理的任務(wù)存儲(chǔ)在L2高速緩存、并行處理存儲(chǔ)器204或者系 統(tǒng)存儲(chǔ)器104中。PreROP(預(yù)先光柵操作)單元325配置成從SPM 310中接收數(shù)據(jù),引導(dǎo)數(shù) 據(jù)至分區(qū)單元215內(nèi)的光柵操作單元,并進(jìn)行顏色混合的優(yōu)化,組織像素顏色數(shù)據(jù),并進(jìn)行 地址翻譯。 可以理解的是,本文描述的內(nèi)核架構(gòu)是示例性的,可以做變化和改變。任何數(shù)量 的處理引擎,例如圖元引擎304、SPM 310、紋理單元315或預(yù)先光柵操作單元325可以包括 在GPC 208中。進(jìn)一步,雖然只示出了一個(gè)GPC208,并行處理單元202可以包括任何數(shù)量 的GPC 208,這些GPC 208功能上有利地彼此相似,使得執(zhí)行行為不取決于哪個(gè)GPC 208接 收了特定處理任務(wù)。進(jìn)一步,每個(gè)GPC 208使用單獨(dú)的和不同的處理引擎、L1高速緩存320 等相對(duì)另外的GPC 208有利地獨(dú)立地工作。 圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖2中并行處理單元202其中之一中的分區(qū)單 元215的框圖。如圖所示,分區(qū)單元215包括L2高速緩存350、幀緩沖器(FB) 355和光柵操 作單元(ROP) 360。 L2高速緩存350是配置為進(jìn)行從交叉器單元210和ROP 360接收的裝 載和存儲(chǔ)操作的讀/寫高速緩存。讀取缺失和緊急寫回請(qǐng)求通過(guò)L2高速緩存350輸出到 幀緩沖器355處理。臟(dirty)更新也送到幀緩沖器355用于機(jī)會(huì)處理。幀緩沖器355直 接與并行處理存儲(chǔ)器204接口 ,輸出讀取和寫入請(qǐng)求,并接收從并行處理存儲(chǔ)器204讀取的 數(shù)據(jù)。 在圖形應(yīng)用中,ROP 360是進(jìn)行光柵操作的處理單元,例如模板、z測(cè)試、混合等, 并將像素?cái)?shù)據(jù)輸出為處理的圖形數(shù)據(jù)以存儲(chǔ)在圖形存儲(chǔ)器中。在本發(fā)明的一些實(shí)施例中, ROP 360包括在每個(gè)GPC 208中,而不是在分區(qū)單元215中,像素的讀和寫請(qǐng)求通過(guò)交叉器 單元210來(lái)傳送,而不是通過(guò)像素段數(shù)據(jù)。 處理的圖形數(shù)據(jù)可以顯示在顯示設(shè)備110上,或被發(fā)送以通過(guò)CPU 102或通過(guò)并 行處理子系統(tǒng)112中的處理實(shí)體之一來(lái)進(jìn)一步處理。每個(gè)分區(qū)單元215包括R0P 360以分 配光柵操作的處理。在一些實(shí)施例中,ROP 360可以配置為壓縮寫到存儲(chǔ)器中的z或顏色 數(shù)據(jù),并將從存儲(chǔ)器中讀取的z或顏色數(shù)據(jù)解壓縮。 本領(lǐng)域的技術(shù)人員可以理解的是,圖1、2、3A和3B中描述的架構(gòu)決不限制本發(fā)明 的范圍,本文中教導(dǎo)的技術(shù)可以在任何適合地配置的處理單元上實(shí)現(xiàn),該處理單元包括但 不限于一個(gè)或多個(gè)CPU、一個(gè)或多個(gè)多內(nèi)核CPU、一個(gè)或多個(gè)并行處理單元202、一個(gè)或多個(gè) GPC 208、一個(gè)或多個(gè)圖形或?qū)S锰幚韱卧?,這些都不離開(kāi)本發(fā)明的范圍。
基于數(shù)據(jù)類的逐出策略 圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖3B中分區(qū)單元215的詳細(xì)的框圖。如圖所示, 分區(qū)單元215包括L2高速緩存350、幀緩沖器355和ROP 360。 L2高速緩存350包括L2高 速緩存片402。如結(jié)合圖3B描述的,L2高速緩存350可以分成兩個(gè)或多個(gè)片以更有效地處 理讀和寫命令。L2高速緩存片402就是L2高速緩存350的一個(gè)這樣的片。L2高速緩存片 402包括交叉器命令緩沖器404、 ROP命令緩沖器406、仲裁器408、標(biāo)記查找單元410、標(biāo)記 存儲(chǔ)裝置412、數(shù)據(jù)高速緩存414、讀數(shù)據(jù)緩沖器416和寫數(shù)據(jù)緩沖器418。
在操作中,L2高速緩存片402從在并行處理子系統(tǒng)112中的各種客戶端中,例如 從GPC 208和R0P 360中接收讀和寫命令。從GPC 208接收的讀和寫命令經(jīng)由交叉器單元 210傳送。在寫命令的情況中,與寫命令相關(guān)的數(shù)據(jù)也傳送到L2高速緩存片402。
由L2高速緩存片402接收的每個(gè)讀或?qū)懨畎ㄅc在數(shù)據(jù)高速緩存414中的一 組高速緩存行相關(guān)的存儲(chǔ)器地址,其中可以存儲(chǔ)與讀或?qū)懨钕嚓P(guān)的數(shù)據(jù)。在一個(gè)實(shí)施例 中,數(shù)據(jù)高速緩存414是物理地索引和標(biāo)記的64KB的組相聯(lián)的數(shù)據(jù)高速緩存。數(shù)據(jù)高速緩 存414分為四個(gè)段,其中每個(gè)段具有32排且每排具有16個(gè)32B的高速緩存行。高速緩存 行是存儲(chǔ)與讀和寫命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)高速緩存414中的物理位置。在任何給定的時(shí)鐘 周期,在數(shù)據(jù)高速緩存414中的高速緩存行可以是空的、可以包括駐存數(shù)據(jù)或者可以為進(jìn) 行中的命令保留。在本發(fā)明的一個(gè)實(shí)施例中,由于與命令相關(guān)的數(shù)據(jù)的大小,可能需要保留 多個(gè)高速緩存行以存儲(chǔ)與命令相關(guān)的數(shù)據(jù)。本文描述的技術(shù)能容易地延伸到應(yīng)當(dāng)在多個(gè)高 速緩存行中存儲(chǔ)的數(shù)據(jù)。 由L2高速緩存片402接收的讀或?qū)懨钜舶ㄅc接收的命令相關(guān)的數(shù)據(jù)的數(shù)據(jù) 類。與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類由傳送特定命令的客戶端確定,且如本文更詳細(xì)描述的,該 數(shù)據(jù)類反映在并行處理子系統(tǒng)112中該數(shù)據(jù)的再使用的可能。 交叉器命令緩沖器404與交叉器單元210耦合且配置為從不同的GPC208經(jīng)由交 叉器單元210接收讀和寫命令。ROP命令緩沖器406與ROP 360耦合且配置為從ROP 360 接收讀和寫命令。交叉器命令緩沖器404和ROP命令緩沖器406是FIFO(先進(jìn)先出)緩沖 器,即,命令緩沖器接收的命令按照該命令從交叉器單元210或ROP 360接收的次序輸出。 交叉器命令緩沖器404和ROP命令緩沖器406也與仲裁器408耦合。沖裁器408配置為使 用標(biāo)準(zhǔn)的仲裁技術(shù)以從交叉器命令緩沖器404或ROP命令緩沖器406中選擇給定的命令, 并將選擇的命令傳送給標(biāo)記查找單元410以處理。 標(biāo)記查找單元410配置為確定在數(shù)據(jù)高速緩存414中是否有為與從仲裁器408接 收的命令相關(guān)的數(shù)據(jù)可用的高速緩存行。標(biāo)記查找單元410也在可能時(shí)配置為通過(guò)使駐存 在數(shù)據(jù)高速緩存414中的數(shù)據(jù)逐出而使得高速緩存行為與新接收的讀或?qū)懨钕嚓P(guān)的數(shù) 據(jù)可用。 一旦在數(shù)據(jù)高速緩存414中的一個(gè)或多個(gè)高速緩存行為這樣的數(shù)據(jù)可用,那么標(biāo) 記查找單元410配置為為與命令相關(guān)的數(shù)據(jù)在數(shù)據(jù)高速緩存414保留識(shí)別的高速緩存行。
在數(shù)據(jù)高速緩存414中的每個(gè)高速緩存行具有相應(yīng)的在標(biāo)記存儲(chǔ)裝置412中的入 口 ,且在標(biāo)記存儲(chǔ)裝置中的每個(gè)入口包括狀態(tài)部分和標(biāo)記部分。在標(biāo)記存儲(chǔ)裝置中的入口 的狀態(tài)部分指示對(duì)應(yīng)于該入口的高速緩存行的特定狀態(tài)。入口的狀態(tài)部分包括有效位、臟 (dirty)位和釘住(pinned)位。當(dāng)設(shè)置時(shí),有效位指示對(duì)應(yīng)于該特定入口的高速緩存行存 儲(chǔ)有效數(shù)據(jù)。當(dāng)設(shè)置時(shí),臟位指示對(duì)應(yīng)于該特定入口的高速緩存行存儲(chǔ)臟數(shù)據(jù)。當(dāng)設(shè)置時(shí), 釘住位指示對(duì)應(yīng)于該特定入口的高速緩存行存儲(chǔ)釘住的數(shù)據(jù),即當(dāng)前由L2高速緩存350正 在使用的數(shù)據(jù)。入口的標(biāo)記部分指示存儲(chǔ)在與該特定的入口相關(guān)的高速緩存行中的數(shù)據(jù)的 數(shù)據(jù)類。如本文先前所指出的,L2高速緩存350的高速緩存語(yǔ)義擴(kuò)展到包括三種數(shù)據(jù)類 首先逐出、正常逐出和最后逐出。屬于首先逐出數(shù)據(jù)類的存儲(chǔ)在數(shù)據(jù)高速緩存414的高速 緩存行中的數(shù)據(jù)典型地具有很少或沒(méi)有由使用L2高速緩存350的客戶端的任何客戶端再 使用的可能。由于再使用的低可能性,該數(shù)據(jù)能快速地從數(shù)據(jù)高速緩存414中逐出以給其 他數(shù)據(jù)制造空間,而不會(huì)有造成隨后的高速緩存缺失的高風(fēng)險(xiǎn)。屬于正常逐出數(shù)據(jù)類的存 儲(chǔ)在數(shù)據(jù)高速緩存414的高速緩存行中的數(shù)據(jù)典型地具有由使用L2高速緩存350的客戶 端再使用的一些可能。由于再使用的可能,相比屬于首先逐出數(shù)據(jù)類的數(shù)據(jù),該數(shù)據(jù)可以以 較低的優(yōu)先級(jí)逐出,而不會(huì)造成大量的隨后的高速緩存缺失。屬于最后逐出數(shù)據(jù)類的存儲(chǔ)在數(shù)據(jù)高速緩存414的高速緩存行中的數(shù)據(jù)典型地具有由使用L2高速緩存350的客戶端 再使用的高可能。由于再使用的高可能性,不應(yīng)當(dāng)為其他數(shù)據(jù)制造空間而將該數(shù)據(jù)從數(shù)據(jù) 高速緩存414中逐出,因?yàn)檫@樣做會(huì)導(dǎo)致隨后高速緩存缺失的高風(fēng)險(xiǎn)。在其他實(shí)施例中,L2 高速緩存350的語(yǔ)義可以擴(kuò)展以基于并行處理子系統(tǒng)112的需要而包括其他數(shù)據(jù)類。
存儲(chǔ)在高速緩存行中的數(shù)據(jù)也分類為"干凈的"或"臟的",和"釘住的"或"未釘住 的"。如果存儲(chǔ)的數(shù)據(jù)與在并行處理存儲(chǔ)器204中的對(duì)應(yīng)數(shù)據(jù)一致,那么該數(shù)據(jù)認(rèn)為是干凈 的。如果存儲(chǔ)的數(shù)據(jù)與在并行處理存儲(chǔ)器204中的對(duì)應(yīng)數(shù)據(jù)不一致,那么該數(shù)據(jù)認(rèn)為是臟 的。如公知的,臟數(shù)據(jù)在逐出之前應(yīng)當(dāng)清洗。未釘住的數(shù)據(jù)構(gòu)成了當(dāng)前未使用的存儲(chǔ)在數(shù) 據(jù)高速緩存414的高速緩存行中的數(shù)據(jù)。釘住的數(shù)據(jù)構(gòu)成了當(dāng)前由L2使用的存儲(chǔ)在數(shù)據(jù) 高速緩存414的高速緩存行中的數(shù)據(jù)。由于釘住的數(shù)據(jù)在使用中,因此該數(shù)據(jù)不應(yīng)當(dāng)逐出。 與具有駐存數(shù)據(jù)的數(shù)據(jù)高速緩存414的高速緩存行相關(guān)的在標(biāo)記存儲(chǔ)裝置412中的入口的 有效位被設(shè)置。與不具有駐存數(shù)據(jù)的數(shù)據(jù)高速緩存414的高速緩存行相關(guān)的在標(biāo)記存儲(chǔ)裝 置412中的入口有效位被清除。 在讀命令的情況中,讀數(shù)據(jù)緩沖器416配置為存儲(chǔ)與從數(shù)據(jù)高速緩存414接收的 處理的讀命令相關(guān)的數(shù)據(jù)直到該數(shù)據(jù)看情況經(jīng)由交叉器單元210或ROP 360傳送回GPC 208。在寫命令的情況中,寫數(shù)據(jù)緩沖器418配置為存儲(chǔ)與從GPC 208看情況經(jīng)由交叉器單 元210或ROP 360接收的寫命令相關(guān)的數(shù)據(jù),直到該數(shù)據(jù)傳送到在數(shù)據(jù)高速緩存414的相 應(yīng)的保留的高速緩存行中。 如本文先前指出的,在從仲裁器408接收命令時(shí),標(biāo)記查找單元410配置為識(shí)別在 數(shù)據(jù)高速緩存414中的一組高速緩存行,其中與接收的命令相關(guān)的數(shù)據(jù)可以潛在地存儲(chǔ)。 該組高速緩存行(本文稱為"識(shí)別的高速緩存行")基于包括在讀或?qū)懨钪械拇鎯?chǔ)器地址 使用標(biāo)準(zhǔn)的組相聯(lián)高速緩存技術(shù)(存儲(chǔ)器地址指示在并行處理存儲(chǔ)器204中的實(shí)際位置, 數(shù)據(jù)從該位置讀或數(shù)據(jù)最終寫到該位置)確定。在讀命令的情況中,標(biāo)記查找單元410接 下來(lái)確定是否與命令相關(guān)的數(shù)據(jù)當(dāng)前駐存在識(shí)別的高速緩存行之一中。如果是,意味著有 高速緩存命中,那么標(biāo)記查找單元410使請(qǐng)求的數(shù)據(jù)從數(shù)據(jù)高速緩存414傳送到讀數(shù)據(jù)緩 沖器416,數(shù)據(jù)在其中存儲(chǔ)直到數(shù)據(jù)返回到請(qǐng)求客戶端。在寫命令的情況中,標(biāo)記查找單元 410首先確定是否與命令相關(guān)的數(shù)據(jù)能覆寫當(dāng)前駐存在識(shí)別的高速緩存行之一中的數(shù)據(jù)。 如果是,再次意味著有高速緩存命中,那么標(biāo)記查找單元410使存儲(chǔ)在寫數(shù)據(jù)緩沖器418中 的與命令相關(guān)的數(shù)據(jù)寫到數(shù)據(jù)高速緩存414相關(guān)的位置。 在高速緩存缺失的情況中,意味著與命令相關(guān)的數(shù)據(jù)未駐存在(在讀命令的情況 中)或不能寫到(在寫命令的情況中)識(shí)別的高速緩存行之一中,那么標(biāo)記查找單元410 確定是否識(shí)別的高速緩存行之一是空的。如果識(shí)別的高速緩存行之一是空的,那么標(biāo)記查 找單元410為與讀或?qū)懨钕嚓P(guān)的數(shù)據(jù)保留該空的高速緩存行。如果沒(méi)有識(shí)別的高速緩存 行為空,那么標(biāo)記查找單元410基于駐存在識(shí)別的高速緩存行中的數(shù)據(jù)的數(shù)據(jù)類實(shí)施一系 列的高速緩存逐出策略。 標(biāo)記查找單元410首先檢查與識(shí)別的高速緩存行相關(guān)的在標(biāo)記存儲(chǔ)裝置412中的 入口以確定是否高速緩存行中的任何高速緩存行的具有干凈的、未釘住的和首先逐出的駐 存數(shù)據(jù)。與具有干凈的、未釘住的和首先逐出的駐存數(shù)據(jù)的任何高速緩存行相關(guān)的在標(biāo)記 存儲(chǔ)裝置412中的入口的狀態(tài)部分應(yīng)當(dāng)具有設(shè)置的有效位、清除的臟位和清除的釘住位。這樣的入口的標(biāo)記部分應(yīng)當(dāng)指示存儲(chǔ)在有關(guān)高速緩存行中的數(shù)據(jù)屬于首先逐出數(shù)據(jù)類。如 果存在任何這樣的高速緩存行,那么標(biāo)記查找單元410使最少最近使用的干凈的、未釘住 的和首先逐出的數(shù)據(jù)從數(shù)據(jù)高速緩存414中逐出。在逐出該數(shù)據(jù)后,標(biāo)記查找單元410為 與命令相關(guān)的數(shù)據(jù)保留結(jié)果的空的高速緩存行。 如果沒(méi)有駐存在識(shí)別的高速緩存行中的數(shù)據(jù)是干凈的、未釘住的和首先逐出的, 那么標(biāo)記查找單元410檢查與識(shí)別的高速緩存行的每個(gè)相關(guān)的在標(biāo)記存儲(chǔ)裝置412中的入 口,以確定是否高速緩存行中的任何高速緩存行具有干凈的、未釘住的和正常逐出的駐存 數(shù)據(jù)(有效位設(shè)置)。與具有干凈的、未釘住的和正常逐出的駐存數(shù)據(jù)的任何高速緩存行相 關(guān)的在標(biāo)記存儲(chǔ)裝置412中的入口的狀態(tài)部分應(yīng)當(dāng)具有設(shè)置的有效位、清除的臟位和清除 的釘住位。這樣的入口的標(biāo)記部分應(yīng)當(dāng)指示存儲(chǔ)在有關(guān)高速緩存行中的數(shù)據(jù)屬于正常逐出 數(shù)據(jù)類。如果存在任何這樣的高速緩存行,那么標(biāo)記查找單元410使得最少最近使用的干 凈的、未釘住的和正常逐出的數(shù)據(jù)從數(shù)據(jù)高速緩存414中逐出。在逐出該數(shù)據(jù)后,標(biāo)記查找 單元410為與命令相關(guān)的數(shù)據(jù)保留結(jié)果的空的高速緩存行。 在一個(gè)實(shí)施例中,如果沒(méi)有駐存在識(shí)別的高速緩存行中的數(shù)據(jù)是干凈的、未釘住 的和首先逐出的數(shù)據(jù)或者是干凈的、未釘住的和正常逐出的數(shù)據(jù),那么該命令停止直到駐 存在識(shí)別的高速緩存行之一中的數(shù)據(jù)能從數(shù)據(jù)高速緩存414逐出。 在替換的實(shí)施例中,如果沒(méi)有駐存在識(shí)別的高速緩存行中的數(shù)據(jù)是干凈的、未釘 住的和首先逐出的數(shù)據(jù)或者是干凈的、未釘住的和正常逐出的數(shù)據(jù),那么標(biāo)記查看單元410 確定是否與命令相關(guān)的數(shù)據(jù)屬于最后逐出的數(shù)據(jù)類。如果與該命令相關(guān)的數(shù)據(jù)不屬于最后 逐出數(shù)據(jù)類,那么該命令停止直到駐存在識(shí)別的高速緩存行之一中的數(shù)據(jù)能從數(shù)據(jù)高速緩 存414逐出。但是,如果與該命令相關(guān)的數(shù)據(jù)屬于最后逐出數(shù)據(jù)類,那么標(biāo)記查看單元410 檢查與識(shí)別的高速緩存行的每個(gè)相關(guān)的在標(biāo)記存儲(chǔ)裝置412中的入口,以確定是否高速緩 存行之一具有干凈的、未釘住的和最后逐出的駐存數(shù)據(jù)。與具有干凈的、未釘住的和最后逐 出的駐存數(shù)據(jù)的任何高速緩存行相關(guān)的在標(biāo)記存儲(chǔ)裝置412中的入口的狀態(tài)部分應(yīng)當(dāng)具 有設(shè)置的有效位、清除的臟位和清除的釘住位。這樣的入口的標(biāo)記部分應(yīng)當(dāng)指示存儲(chǔ)在有 關(guān)高速緩存行中的數(shù)據(jù)屬于最后逐出的數(shù)據(jù)類。在一個(gè)實(shí)施例中,如果存在任何這樣的高 速緩存行,那么標(biāo)記查找單元410使最少最近使用的干凈的、未釘住的和最后逐出的數(shù)據(jù) 從數(shù)據(jù)高速緩存414逐出。在逐出該數(shù)據(jù)后,標(biāo)記查找單元410為與命令相關(guān)的數(shù)據(jù)保留 結(jié)果的空的高速緩存行。 在其他實(shí)施例中,如果屬于最后逐出數(shù)據(jù)類的數(shù)據(jù)不能從數(shù)據(jù)高速緩存414逐 出,那么標(biāo)記查找單元410將最少最近使用的干凈的、未釘住的和最后逐出的數(shù)據(jù)再分類 為干凈的、未釘住的和正常逐出的數(shù)據(jù)。通過(guò)改變駐存在有關(guān)高速緩存行中的數(shù)據(jù)的數(shù)據(jù) 類,然后標(biāo)記查找單元410能夠基于上面闡明的高速緩存逐出策略逐出該駐存數(shù)據(jù)。然后, 標(biāo)記查找單元410使最少最近使用的干凈的、未釘住的、正常逐出的數(shù)據(jù)從數(shù)據(jù)高速緩存 414逐出。在將正常逐出數(shù)據(jù)逐出后,標(biāo)記查找單元410為與命令相關(guān)的數(shù)據(jù)保留空的高速 緩存行,如本文先前所述。 為了為與命令相關(guān)的數(shù)據(jù)保留高速緩存行,標(biāo)記查找單元410設(shè)置在與保留的高 速緩存行相關(guān)的入口中的釘住位。然后標(biāo)記查找單元410將與保留的高速緩存行相關(guān)的 入口中的標(biāo)記部分更新,以反映與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類和保留的高速緩存行的存儲(chǔ)器地址標(biāo)記。 一旦保留合適的高速緩存行,那么對(duì)于讀命令,標(biāo)記查找單元410將對(duì)與讀命令 相關(guān)的數(shù)據(jù)的數(shù)據(jù)請(qǐng)求傳送給幀緩沖器355。幀緩沖器355將與讀命令相關(guān)的數(shù)據(jù)在將來(lái) 的時(shí)鐘周期傳送給保留的高速緩存行。對(duì)于寫命令,與寫命令相關(guān)的數(shù)據(jù)從寫數(shù)據(jù)緩沖器 418傳送并存儲(chǔ)在保留的高速緩存行中。然后標(biāo)記查找單元410基于數(shù)據(jù)的數(shù)據(jù)類確定是 否與寫命令相關(guān)的數(shù)據(jù)也應(yīng)當(dāng)存儲(chǔ)在并行處理存儲(chǔ)器204中。如果該數(shù)據(jù)應(yīng)當(dāng)存儲(chǔ)在并行 處理存儲(chǔ)器204中,那么標(biāo)記查找單元410將臟數(shù)據(jù)通知傳送給幀緩沖器355。標(biāo)記查找單 元410也設(shè)置與保留的高速緩存行相關(guān)的入口中的臟位。在響應(yīng)中,幀緩沖器355將來(lái)自 保留的高速緩存行的數(shù)據(jù)在將來(lái)的時(shí)鐘周期傳送給并行處理存儲(chǔ)器204。 一旦接收到該數(shù) 據(jù),就清除釘住位。 在其他實(shí)施例中,在標(biāo)記存儲(chǔ)裝置412中的入口的狀態(tài)部分可以以任何技術(shù)上可 行的方式實(shí)現(xiàn),包括但不限于作為單一位以指示何時(shí)對(duì)應(yīng)于入口的高速緩存行中的數(shù)據(jù)是 干凈和未釘住的。因此,本領(lǐng)域的普通技術(shù)人員將理解包括在本文的描述中的任何部分都 不意圖限制本發(fā)明的范圍。 在一定的實(shí)施例中,讀命令可以由在并行處理子系統(tǒng)112中的客戶端傳送給L2高 速緩存片402,其中與那些命令相關(guān)的數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104或與在計(jì)算機(jī)系統(tǒng)100中的另 一 GPU(或PPU)相關(guān)的存儲(chǔ)器中獲取,并臨時(shí)存儲(chǔ)在數(shù)據(jù)高速緩存414中,這與本文先前所 述的從與幀緩沖器355耦合的并行處理存儲(chǔ)器204中獲取相對(duì)。相似地,在一定的實(shí)施例 中,寫命令可以由GPC 208或R0P 360傳送給L2高速緩存片402,其中與那些命令相關(guān)的數(shù) 據(jù)在寫到系統(tǒng)存儲(chǔ)器104或與在計(jì)算機(jī)系統(tǒng)100中的另一GPU(或PPU)相關(guān)的存儲(chǔ)器中之 前臨時(shí)存儲(chǔ)在數(shù)據(jù)高速緩存414中,這與本文先前所述的寫到與幀緩沖器355耦合的并行 處理存儲(chǔ)器204中相對(duì)。在所有這樣的實(shí)施例中,如本文描述的,與讀或?qū)懨钕嚓P(guān)的數(shù)據(jù) 高速緩存進(jìn)數(shù)據(jù)高速緩存414和從數(shù)據(jù)高速緩存414逐出的方式保持未改變。因此,所有 這樣的實(shí)施例都在本發(fā)明的范圍內(nèi)。 圖5A至5D闡明了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于管理數(shù)據(jù)流進(jìn)和流出圖4的數(shù)據(jù) 高速緩存414的方法步驟的流程圖。雖然該方法步驟結(jié)合圖l至4描述,但本領(lǐng)域的普通技 術(shù)人員將理解的是,配置為以任何順序?qū)嵤┰摲椒ú襟E的任何系統(tǒng)都落入本發(fā)明的范圍。
方法500開(kāi)始于步驟502,其中L2高速緩存片402從在系統(tǒng)100中的客戶端接收 讀或?qū)懨?。如結(jié)合圖4所描述的,L2高速緩存片402接收的每個(gè)命令包括與位于數(shù)據(jù)高 速緩存414內(nèi)的一組高速緩存行相關(guān)的存儲(chǔ)器地址,其中可以存儲(chǔ)與命令相關(guān)的數(shù)據(jù)。L2 高速緩存片402接收的命令也包括與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類。在步驟504,命令視具體情 況存儲(chǔ)在交叉器命令緩沖器404或ROP命令緩沖器406中。 在步驟506,如果命令是寫命令,那么方法500進(jìn)行到步驟508,其中與命令相關(guān)的 數(shù)據(jù)由L2高速緩存片402接收并存儲(chǔ)在寫數(shù)據(jù)緩沖器418中。在步驟506,如果命令是讀 命令,那么方法500直接進(jìn)行到步驟510。在步驟510,在步驟502由L2高速緩存片402接 收的命令由仲裁器408使用標(biāo)準(zhǔn)仲裁技術(shù)選擇并傳送到標(biāo)記查找單元410以處理。
在步驟512,標(biāo)記查找單元410識(shí)別數(shù)據(jù)高速緩存414中的該組高速緩存行,其中 基于包括在命令中的存儲(chǔ)器地址并使用組相聯(lián)高速緩存技術(shù),可以存儲(chǔ)與選擇的命令相關(guān) 的數(shù)據(jù)。再次,該組高速緩存行稱為"識(shí)別的高速緩存行"。在步驟514,標(biāo)記查找單元410 確定是否有高速緩存缺失。如果與命令相關(guān)的數(shù)據(jù)當(dāng)前沒(méi)有駐存在識(shí)別的高速緩存行之一中,那么就有高速緩存缺失。在高速緩存缺失的情況下,方法步驟500進(jìn)行到步驟516。
在步驟516,標(biāo)記查找單元410確定是否識(shí)別的高速緩存行之一是空的(意味著該 高速緩存行當(dāng)前可用)。如果沒(méi)有識(shí)別的高速緩存行是空的(意味著該高速緩存行當(dāng)前是 臟的或釘住的),那么該方法500進(jìn)行到步驟518。在步驟518,標(biāo)記查找單元410檢查對(duì)應(yīng) 于識(shí)別的高速緩存行的在標(biāo)記存儲(chǔ)裝置412中的標(biāo)記以確定那些高速緩存行的哪些(如果 有的話)具有干凈的、未釘住的和屬于首先逐出數(shù)據(jù)類的駐存數(shù)據(jù)。如果沒(méi)有高速緩存行 具有干凈的、未釘住的和屬于首先逐出數(shù)據(jù)類的駐存數(shù)據(jù),那么方法500進(jìn)行到步驟520。 在步驟520,標(biāo)記查找單元410檢查對(duì)應(yīng)于識(shí)別的高速緩存行的在標(biāo)記存儲(chǔ)裝置412中的標(biāo) 記以確定那些高速緩存行的哪些(如果有的話)具有干凈的、未釘住的和屬于正常逐出數(shù) 據(jù)類的駐存數(shù)據(jù)。如果沒(méi)有高速緩存行具有干凈的、未釘住的和屬于正常逐出數(shù)據(jù)類的駐 存數(shù)據(jù),那么方法500進(jìn)行到步驟522。 在步驟522,標(biāo)記查找單元410檢查包括在命令中的數(shù)據(jù)類以確定是否與該命令 相關(guān)的數(shù)據(jù)屬于最后逐出數(shù)據(jù)類。如果與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類屬于最后逐出數(shù)據(jù)類, 那么方法500進(jìn)行到步驟524,其中標(biāo)記查找單元410檢查對(duì)應(yīng)于識(shí)別的高速緩存行的在 標(biāo)記存儲(chǔ)裝置412中的標(biāo)記以確定那些高速緩存行的哪些(如果有的話)具有干凈的、未 釘住的和屬于最后逐出數(shù)據(jù)類的駐存數(shù)據(jù)。如果識(shí)別的高速緩存行的一個(gè)或多個(gè)具有干凈 的、未釘住的和屬于最后逐出數(shù)據(jù)類的駐存數(shù)據(jù),那么選擇具有最少最近使用的干凈的、未 釘住的和屬于最后逐出數(shù)據(jù)類的駐存數(shù)據(jù)的高速緩沖行以逐出。 在步驟526,標(biāo)記查找單元410為與命令相關(guān)的數(shù)據(jù)保留選擇的高速緩存行。如結(jié) 合圖4所描述的,為了為與命令相關(guān)的數(shù)據(jù)保留高速緩存行,標(biāo)記查找單元410設(shè)置與選擇 的高速緩存行相關(guān)的入口中的有效位部分。然后標(biāo)記查找單元410更新與選擇的高速緩存 行相關(guān)的入口中的標(biāo)記部分以反映與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類。 在步驟528,標(biāo)記查找單元410確定是否命令為寫命令。如果命令是寫命令,那么 方法500進(jìn)行到步驟530,其中與寫命令相關(guān)的數(shù)據(jù)從寫數(shù)據(jù)緩沖器418傳送到保留的高速 緩存行。在步驟532,標(biāo)記查找單元410分析與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類以確定是否數(shù)據(jù)應(yīng) 當(dāng)傳送到外部存儲(chǔ)器以存儲(chǔ)。在一個(gè)實(shí)施例中,屬于最后逐出數(shù)據(jù)類的數(shù)據(jù)是排隊(duì)的數(shù)據(jù) 且不應(yīng)當(dāng)傳送到外部存儲(chǔ)器以存儲(chǔ)而屬于首先逐出和正常逐出數(shù)據(jù)類的數(shù)據(jù)應(yīng)當(dāng)傳送給 外部存儲(chǔ)器以存儲(chǔ)。如果數(shù)據(jù)應(yīng)當(dāng)傳送到外部存儲(chǔ)器以存儲(chǔ),那么在步驟534,標(biāo)記查找單 元410傳送臟數(shù)據(jù)通知給幀緩沖器邏輯355。幀緩沖器邏輯355在有效的時(shí)鐘周期又將臟 數(shù)據(jù)傳送給外部存儲(chǔ)器。如果在步驟532標(biāo)記查找單元410確定數(shù)據(jù)不應(yīng)當(dāng)傳送到外部存 儲(chǔ)器以存儲(chǔ),那么方法500結(jié)束。 現(xiàn)在返回參考步驟530,如果命令是讀命令,那么方法500進(jìn)行到步驟536,其中標(biāo) 記查找單元410將數(shù)據(jù)請(qǐng)求通知傳送給幀緩沖器邏輯355。幀緩沖器邏輯355在有效的時(shí) 鐘周期又將請(qǐng)求的數(shù)據(jù)傳送給在步驟526保留的高速緩存行。然后方法500結(jié)束。
現(xiàn)在返回參考步驟524,如果沒(méi)有高速緩存行具有干凈的、未釘住的和屬于最后逐 出數(shù)據(jù)類的駐存數(shù)據(jù),那么在步驟525命令停止,且方法500返回到本文先前描述的步驟 516。相似地,返回參考步驟522,如果與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類不是最后逐出的,那么在 步驟525命令停止,且方法500返回到本文先前描述的步驟516。 現(xiàn)在返回參考步驟520,如果識(shí)別的高速緩存行的一個(gè)或多個(gè)具有干凈的、未釘住
15的和屬于正常逐出數(shù)據(jù)類的駐存數(shù)據(jù),那么具有干凈的、未釘住的和屬于正常逐出數(shù)據(jù)類 的最少最近使用的駐存數(shù)據(jù)的高速緩存行將選擇以逐出。然后方法500直接進(jìn)行到本文先 前描述的步驟526。相似地,返回參考步驟518,如果識(shí)別的高速緩存行的一個(gè)或多個(gè)具有 干凈的、未釘住的和屬于首先逐出數(shù)據(jù)類的駐存數(shù)據(jù),那么具有干凈的、未釘住的和屬于首 先逐出數(shù)據(jù)類的最少最近使用的駐存數(shù)據(jù)的高速緩存行將選擇以逐出。然后方法500直接 進(jìn)行到本文先前描述的步驟526。 現(xiàn)在返回參考步驟516,如果數(shù)據(jù)高速緩存414的高速緩存行可用,那么該方法 500直接進(jìn)行到本文先前描述的步驟528。最后,返回參考步驟514,如果有高速緩存命中 (相對(duì)高速緩存缺失),那么方法500直接進(jìn)行到步驟538。在步驟538,標(biāo)記查找單元410 確定是否命令為寫命令。如果命令是寫命令,那么方法500進(jìn)行到步驟540,其中與寫命令 相關(guān)的數(shù)據(jù)從寫數(shù)據(jù)緩沖器418傳送到已經(jīng)保留的高速緩存行。如果在步驟538,命令是讀 命令,那么在步驟542,標(biāo)記查找單元410使存儲(chǔ)在已經(jīng)保留的高速緩存行中的數(shù)據(jù)到讀數(shù) 據(jù)緩沖器416。在步驟544,來(lái)自讀數(shù)據(jù)緩沖器416的數(shù)據(jù)傳送到在步驟502傳送讀命令的 客戶端。 總之,由客戶端傳送給L2高速緩存片的每個(gè)讀或?qū)懨畎ù鎯?chǔ)器地址和與該 特定命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類。在L2高速緩存片中的標(biāo)記查找單元分析包括在這樣的命 令中的存儲(chǔ)器地址以確定在其中可以存儲(chǔ)與命令相關(guān)的數(shù)據(jù)的該組潛在的高速緩存行。標(biāo) 記查找單元也分析與潛在的高速緩存行的每個(gè)相關(guān)的存儲(chǔ)在標(biāo)記存儲(chǔ)裝置中的標(biāo)記以識(shí) 別可以保留給與命令相關(guān)的數(shù)據(jù)的至少一個(gè)高速緩存行。如果潛在的高速緩存行之一是空 的,那么標(biāo)記查找單元為請(qǐng)求的或?qū)懭氲臄?shù)據(jù)保留該高速緩存行。當(dāng)為特定命令保留高速 緩存行時(shí),標(biāo)記查找單元在對(duì)應(yīng)于該高速緩存行的標(biāo)記存儲(chǔ)裝置中的入口的標(biāo)記部分中存 儲(chǔ)與命令相關(guān)的數(shù)據(jù)的數(shù)據(jù)類。 但是,如果沒(méi)有識(shí)別的高速緩存行是空的,那么標(biāo)記查找單元確定是否識(shí)別的高
速緩存行中的任何識(shí)別的高速緩存行具有干凈的、未釘住的且屬于首先逐出數(shù)據(jù)類的駐存
數(shù)據(jù)。如果在識(shí)別的行的一個(gè)或多個(gè)中的數(shù)據(jù)滿足所有這些標(biāo)準(zhǔn),那么標(biāo)記查找單元使最
少最近使用的干凈的、未釘住的、首先逐出的數(shù)據(jù)逐出并為請(qǐng)求的或?qū)懭氲臄?shù)據(jù)保留相關(guān)
的高速緩存行。如果在識(shí)別的高速緩存行中沒(méi)有數(shù)據(jù)滿足所有這些標(biāo)準(zhǔn),那么標(biāo)記查找單
元確定是否識(shí)別的高速緩存行中的任何識(shí)別的高速緩存行具有干凈的、未釘住的且屬于正
常逐出數(shù)據(jù)類的駐存數(shù)據(jù)。如果在識(shí)別的高速緩存行中的一個(gè)或多個(gè)中的數(shù)據(jù)滿足所有這
些標(biāo)準(zhǔn),那么標(biāo)記查找單元使最少最近使用的干凈的、未釘住的、正常逐出的數(shù)據(jù)逐出并為
請(qǐng)求的或?qū)懭氲臄?shù)據(jù)保留相關(guān)的高速緩存行。如果在識(shí)別的高速緩存行中沒(méi)有數(shù)據(jù)滿足所
有這些標(biāo)準(zhǔn),那么讀或?qū)懨钔V怪钡皆谧R(shí)別的行之一中的數(shù)據(jù)能逐出。 有利地,與存儲(chǔ)在數(shù)據(jù)高速緩存中的數(shù)據(jù)相關(guān)的數(shù)據(jù)類允許當(dāng)為與讀或?qū)懨钕?br> 關(guān)的數(shù)據(jù)制造空間時(shí)標(biāo)記查找單元將具有再使用最少可能性的數(shù)據(jù)逐出。該逐出數(shù)據(jù)的機(jī)
制降低了對(duì)可能由系統(tǒng)中的客戶端再使用的數(shù)據(jù)的早期逐出造成的高速緩存缺失的數(shù)量。
另外,通過(guò)將合適的數(shù)據(jù)類附加給數(shù)據(jù),數(shù)據(jù)高速緩存可以用于存儲(chǔ)頻繁再使用的數(shù)據(jù)而
不需要傳送給外部存儲(chǔ)器。這除去了需要額外的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)存儲(chǔ)該數(shù)據(jù)。 雖然上述的涉及本發(fā)明的實(shí)施例,可以在不脫離本發(fā)明的基本范圍的情況下想出
本發(fā)明的其他和進(jìn)一步實(shí)施例。例如,本發(fā)明的方面可以以硬件或軟件或硬件和軟件的結(jié)合實(shí)現(xiàn)。本發(fā)明的一個(gè)實(shí)施例可以實(shí)現(xiàn)為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序限定了實(shí)施例的功能(包括本文描述的方法),并可以包含在各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。示例性的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于(i)其上信息被永久存儲(chǔ)的不可寫存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)中的只讀存儲(chǔ)器設(shè)備,諸如由CD-ROM驅(qū)動(dòng)器可讀取的CD-ROM盤、閃存、ROM芯片或任何類型的固態(tài)非易失半導(dǎo)體存儲(chǔ)器);和(ii)其上存儲(chǔ)可改變信息的可寫存儲(chǔ)介質(zhì)(例如,軟盤驅(qū)動(dòng)器中的軟盤或硬盤驅(qū)動(dòng)器或任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器)。在實(shí)施指引本發(fā)明的功能的計(jì)算機(jī)可讀指令時(shí),這樣的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)是本發(fā)明的實(shí)施例。因此,本發(fā)明的范圍由下面的權(quán)利要求確定。
權(quán)利要求
一種用于從耦合到一個(gè)或多個(gè)客戶端和外部存儲(chǔ)器的中間高速緩存中逐出數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元;標(biāo)記存儲(chǔ)單元,該標(biāo)記存儲(chǔ)單元配置為存儲(chǔ)用于與該一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元相關(guān)的多個(gè)高速緩存行的每個(gè)的不同入口,其中每個(gè)入口包括指示與存儲(chǔ)在對(duì)應(yīng)于該入口的該高速緩存行中的數(shù)據(jù)相關(guān)的逐出類的標(biāo)記和指示是否在對(duì)應(yīng)于該入口的該高速緩存行中的該數(shù)據(jù)是干凈的和未釘住的的狀態(tài)部分,且其中該逐出類指示存儲(chǔ)在對(duì)應(yīng)于該入口的該高速緩存行中的該數(shù)據(jù)將由該一個(gè)或多個(gè)客戶端再使用的可能性;標(biāo)記查找單元,該標(biāo)記查找單元耦合于該一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元和該標(biāo)記存儲(chǔ)單元,且其配置為從客戶端接收包括相關(guān)存儲(chǔ)器地址的命令,識(shí)別在該一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元中的一個(gè)或多個(gè)高速緩存行以基于該存儲(chǔ)器地址存儲(chǔ)與該命令相關(guān)的數(shù)據(jù),確定相對(duì)于該一個(gè)或多個(gè)高速緩存行存在高速緩存缺失,和基于與存儲(chǔ)在該一個(gè)或多個(gè)高速緩存行的至少一個(gè)中的數(shù)據(jù)相關(guān)的包括在對(duì)應(yīng)于該至少一個(gè)高速緩存行的在該標(biāo)記存儲(chǔ)單元中的該入口中的該逐出類,使駐存在該至少一個(gè)高速緩存行中的該數(shù)據(jù)逐出。
2. 根據(jù)權(quán)利要求1的系統(tǒng),其中該狀態(tài)部分包括有效標(biāo)志、臟標(biāo)志和釘住標(biāo)志。
3. 根據(jù)權(quán)利要求l的系統(tǒng),其中包括在對(duì)應(yīng)于該至少一個(gè)高速緩存行的在該標(biāo)記存儲(chǔ) 單元中的該入口中的該標(biāo)記指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)屬于首先逐出 類,包括在該入口中的該狀態(tài)部分指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是干凈的 和未釘住的,且該標(biāo)記查找單元配置為確定在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是在該一 個(gè)或多個(gè)高速緩存行中的最少最近使用的、干凈的、未釘住的、首先逐出的數(shù)據(jù)且然后使在 該至少一個(gè)高速緩存行中的該數(shù)據(jù)逐出。
4. 根據(jù)權(quán)利要求1的系統(tǒng),其中包括在對(duì)應(yīng)于該至少一個(gè)高速緩存行的在該標(biāo)記存儲(chǔ) 單元中的該入口中的該標(biāo)記指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)屬于正常逐出 類,包括在該入口中的該狀態(tài)部分指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是干凈的 和未釘住的,且該標(biāo)記查找單元配置為確定在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是在該一 個(gè)或多個(gè)高速緩存行中的最少最近使用的、干凈的、未釘住的、正常逐出的數(shù)據(jù)且然后使在 該至少一個(gè)高速緩存行中的該數(shù)據(jù)逐出。
5. 根據(jù)權(quán)利要求l的系統(tǒng),其中該標(biāo)記查找單元配置為確定與該命令相關(guān)的該數(shù)據(jù)屬 于最后逐出類,包括在對(duì)應(yīng)于該至少一個(gè)高速緩存行的在該標(biāo)記存儲(chǔ)單元中的該入口中的 該標(biāo)記指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)屬于最后逐出類,包括在該入口中的 該狀態(tài)部分指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是干凈的和未釘住的,且該標(biāo)記 查找單元配置為確定在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是在該一個(gè)或多個(gè)高速緩存行 中的最少最近使用的、干凈的、未釘住的、最后逐出的數(shù)據(jù)且然后使在該至少一個(gè)高速緩存 行中的該數(shù)據(jù)逐出。
6. 根據(jù)權(quán)利要求1的系統(tǒng),其中存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)屬于最后逐 出類,且該標(biāo)記查找單元配置為將該數(shù)據(jù)再分類為屬于正常逐出類,和其中包括在對(duì)應(yīng)于該至少一個(gè)高速緩存行的在該標(biāo)記存儲(chǔ)單元中的該入口中的該狀態(tài)部分指示存儲(chǔ)在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是干凈的和未釘住的,且該標(biāo)記查找單元進(jìn)一步配置為確定在該至少一個(gè)高速緩存行中的該數(shù)據(jù)是在該一個(gè)或多個(gè)高速緩存行中的最少最近使用的、干凈的、未釘住的、正常逐出的數(shù)據(jù)且然后使在該至少一個(gè)高速緩存行中的該數(shù)據(jù)逐出
7. 根據(jù)權(quán)利要求l的系統(tǒng),其中該標(biāo)記查找單元進(jìn)一步配置為為駐存在該至少一個(gè)高速緩存行中的該數(shù)據(jù)將干凈通知傳送給幀緩沖器邏輯并為與該命令相關(guān)的該數(shù)據(jù)保留該至少一個(gè)高速緩存行。
8. —種計(jì)算設(shè)備,包括一個(gè)或多個(gè)客戶端;中間高速緩存,該中間高速緩存包括一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元;標(biāo)記存儲(chǔ)單元,該標(biāo)記存儲(chǔ)單元配置為存儲(chǔ)用于與該一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元相關(guān)的多個(gè)高速緩存行的每個(gè)的不同入口 ,其中每個(gè)入口包括指示與存儲(chǔ)在對(duì)應(yīng)于該入口的該高速緩存行中的數(shù)據(jù)相關(guān)的逐出類的標(biāo)記和指示是否在對(duì)應(yīng)于該入口的該高速緩存行中的該數(shù)據(jù)是干凈的和未釘住的的狀態(tài)部分,且其中該逐出類指示存儲(chǔ)在對(duì)應(yīng)于該入口的該高速緩存行中的該數(shù)據(jù)將由該一個(gè)或多個(gè)客戶端再使用的可能性;和標(biāo)記查找單元,該標(biāo)記查找單元耦合于該一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元;耦合于該中間高速緩存的外部存儲(chǔ)器;禾口交叉器單元,該交叉器單元將該一個(gè)或多個(gè)客戶端耦合于該中間高速緩存,其中該標(biāo)記查找單元配置為從客戶端接收包括相關(guān)存儲(chǔ)器地址的命令,識(shí)別在該一個(gè)或多個(gè)數(shù)據(jù)高速緩存單元中的一個(gè)或多個(gè)高速緩存行以基于該存儲(chǔ)器地址存儲(chǔ)與該命令相關(guān)的數(shù)據(jù),確定相對(duì)于該一個(gè)或多個(gè)高速緩存行存在高速緩存缺失,和基于與存儲(chǔ)在該一個(gè)或多個(gè)高速緩存行的至少一個(gè)中的數(shù)據(jù)相關(guān)的包括在對(duì)應(yīng)于該至少一個(gè)高速緩存行的在該標(biāo)記存儲(chǔ)單元中的該入口中的該逐出類,使駐存在該至少一個(gè)高速緩存行中的該數(shù)據(jù)逐出。
9. 根據(jù)權(quán)利要求8的計(jì)算設(shè)備,其中該狀態(tài)部分包括有效標(biāo)志、臟標(biāo)志和釘住標(biāo)志。
10. 根據(jù)權(quán)利要求8的計(jì)算設(shè)備,其中該標(biāo)記查找單元進(jìn)一步配置為為駐存在該至少一個(gè)高速緩存行中的該數(shù)據(jù)將干凈通知傳送給幀緩沖器邏輯并為與該命令相關(guān)的該數(shù)據(jù)保留該至少一個(gè)高速緩存行。
全文摘要
一種多類數(shù)據(jù)高速緩存策略,本發(fā)明的一個(gè)實(shí)施例闡明了基于數(shù)據(jù)的數(shù)據(jù)類從數(shù)據(jù)高速緩存逐出數(shù)據(jù)的機(jī)制?;诜从硵?shù)據(jù)再使用可能性的數(shù)據(jù)類,對(duì)存儲(chǔ)在數(shù)據(jù)高速緩存中的高速緩存行中的數(shù)據(jù)分類。數(shù)據(jù)類存儲(chǔ)在標(biāo)記存儲(chǔ)裝置中,其中在標(biāo)記存儲(chǔ)裝置中的每個(gè)標(biāo)記對(duì)應(yīng)于數(shù)據(jù)高速緩存中的單個(gè)高速緩存行。當(dāng)為與命令相關(guān)的數(shù)據(jù)保留高速緩存行時(shí),標(biāo)記查找單元檢查在標(biāo)記存儲(chǔ)裝置中的數(shù)據(jù)類以確定哪些數(shù)據(jù)逐出。具有低的再使用可能的數(shù)據(jù)以比具有高的再使用可能的數(shù)據(jù)更高的優(yōu)先級(jí)逐出。有利地,對(duì)屬于具有較低的再使用可能的數(shù)據(jù)類的數(shù)據(jù)的逐出降低了在系統(tǒng)中的高速緩存缺失的數(shù)目。
文檔編號(hào)G06F12/08GK101739357SQ20091022351
公開(kāi)日2010年6月16日 申請(qǐng)日期2009年11月23日 優(yōu)先權(quán)日2008年11月21日
發(fā)明者喬治·R.·林奇, 帕特里克·R.·馬爾尚, 彼得·B.·赫姆奎斯特, 戴維·B.·格拉斯科, 詹姆斯·羅伯茨 申請(qǐng)人:輝達(dá)公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
丰原市| 新邵县| 文水县| 五大连池市| 灵武市| 定兴县| 仁化县| 凭祥市| 河源市| 达拉特旗| 平利县| 清水县| 吉首市| 尼勒克县| 佳木斯市| 盐边县| 达孜县| 营山县| 松江区| 高唐县| 体育| 山丹县| 宁海县| 渝北区| 无为县| 靖安县| 无锡市| 措美县| 洛扎县| 大名县| 来宾市| 中宁县| 泽库县| 阳高县| 嵊泗县| 开鲁县| 江川县| 安陆市| 宣武区| 临高县| 肥乡县|