分布式圖形處理器分級中的系統(tǒng)一致性的制作方法
【專利說明】
【背景技術(shù)】
[0001]諸如游戲和媒體播放器的某些應用可以使用嵌入式設(shè)計、圖形處理單元等等,以便處理計算密集型工作負荷。在這樣的情況中,中央處理單元(CPU)可以例如以一個或多個命令的形式將工作負荷派遣到GPU,其中GPU可以對于所述一個或多個命令做出響應而在內(nèi)部執(zhí)行包含多個工作項目的工作組。為了維持GPU上的工作項目和工作組之間的序列一致性,可以使用諸如屏障命令(“屏障”)、存儲器籬障和未排序原子操作(“原子”)的解決方案。然而,這樣的解決方案會是粗粒度的并且不能夠控制具體的存儲器存取順序。而且,傳統(tǒng)解決方案可能不能夠確保在GPU和CPU上的存儲器一慣性(例如,一致性),除非使用硬件刷新和軟件棧調(diào)用,其中刷新和棧調(diào)用會對性能具有負面影響。
【附圖說明】
[0002]通過閱讀下面的說明書和所附權(quán)利要求書,并且通過參照下面的附圖,實施例的各種優(yōu)點對于本領(lǐng)域技術(shù)人員將變得顯而易見,在附圖中:
[0003]圖1A是根據(jù)實施例的計算架構(gòu)的示例的方框圖;
[0004]圖1B是根據(jù)實施例的計算切片的示例的方框圖;
[0005]圖2是根據(jù)實施例的操作圖形處理器的方法的示例的流程圖;
[0006]圖3A到3E是根據(jù)實施例的一致性協(xié)議表的示例的說明;
[0007]圖4是根據(jù)實施例的具有導航控制器的系統(tǒng)的示例的方框圖;并且
[0008]圖5是根據(jù)實施例的具有小形狀因子的系統(tǒng)的示例的方框圖。
【具體實施方式】
[0009]圖1A和IB示出了可以通常作為計算平臺的一部分的計算架構(gòu)10,該計算平臺例如以智能電話、平板電腦、移動互聯(lián)網(wǎng)設(shè)備(MID)、智能電視(TV)、媒體播放器、筆記本電腦、桌面型計算機、服務(wù)器、可佩戴設(shè)備等等為例。如在圖1A中最佳示出的,系統(tǒng)高速緩存12 (例如,靜態(tài)隨機存取存儲器/SRAM、探聽過濾器)可以耦合到具有專用高速緩存16(16a-16c,例如SRAM)的多個主機處理器14(14a_14c)。系統(tǒng)高速緩存12也可以耦合到系統(tǒng)存儲器18 (例如,動態(tài)隨機存取存儲器/DRAM,“主存儲器”),該系統(tǒng)存儲器用于存儲針對架構(gòu)10的各種組件的數(shù)據(jù)、指令等等。每一個主機處理器14可以是能夠執(zhí)行與視覺內(nèi)容的呈現(xiàn)相關(guān)聯(lián)的硬件、腳本等等并且經(jīng)由圖形接口 22將相關(guān)聯(lián)的工作負荷發(fā)出到圖形處理器20的中央處理單元(CPU)。系統(tǒng)高速緩存12可以通常跟蹤與那些工作負荷相關(guān)聯(lián)的存儲器行(例如,高速緩存行或者其它數(shù)據(jù)結(jié)構(gòu))的存在,并且提供探聽過濾服務(wù),其中圖形接口 22可以評估從系統(tǒng)高速緩存12接收到的探聽請求并且將它們發(fā)送到圖形處理器20上的合適的高速緩存目的地用于進一步評估。
[0010]圖形處理器20可以通常處理計算密集型工作負荷,例如以像素顏色值計算、直方圖計算等等為例,以便支持和/或促進視覺內(nèi)容(例如,三維/3D圖形、非3D圖像等等)的呈現(xiàn)。更具體地說,所說明的圖形處理器20包括用于執(zhí)行多個工作項目的計算切片24(24a-24d)的物理分布的集合,以及用于維持與多個工作項目相關(guān)聯(lián)的一個或多個存儲器行(例如,系統(tǒng)定義的尺寸)在圖形處理器20、系統(tǒng)存儲器18和主機處理器14上的一致性的高速緩存結(jié)構(gòu)。如下面將更加詳細討論的,高速緩存結(jié)構(gòu)可以提供維持工作項目和工作組之間的序列一致性、控制特定的存儲器存取順序并且確保存儲器一慣性(例如,一致性)的細粒度方案。
[0011]如在圖1B中最佳示出的,高速緩存結(jié)構(gòu)可以包括多個第一級(LI)高速緩存26 ( “Ll$”),每一個LI高速緩存26專用于計算切片24的執(zhí)行塊28。因此,在由高速緩存結(jié)構(gòu)跟蹤存儲器行的同時,多個LI高速緩存26可以提供相對高的帶寬和低的時延存儲。每一個執(zhí)行塊28可以包括用于執(zhí)行工作項目的執(zhí)行單元(EU) 34的陣列以及用于執(zhí)行在尋址存儲器中的數(shù)據(jù)操作數(shù)時涉及的有效地址計算(例如,使用整數(shù)算法)的地址生成單元(AGU)36 ο
[0012]高速緩存結(jié)構(gòu)也可以包括物理分布的共享高速緩存結(jié)構(gòu)30,其中在多個LI高速緩存26和共享高速緩存結(jié)構(gòu)30之間維持一個或多個存儲器行的一致性。將共享高速緩存結(jié)構(gòu)30配置為物理分布的實體可以能夠使共享高速緩存結(jié)構(gòu)30的尺寸最大化,同時滿足每一個執(zhí)行塊28的帶寬需求。在所說明的示例中,共享高速緩存結(jié)構(gòu)30被配置為具有多個排的第二級高速緩存(“L2$”)。在這樣的情況下,共享高速緩存結(jié)構(gòu)30可以使存儲器行在多個排上形成散列,以便確保數(shù)據(jù)在共享高速緩存結(jié)構(gòu)30上的均勻分布。所說明的方案可以提供較大的并且更加可調(diào)節(jié)的高速緩存,具有最小的探聽懲罰(例如,對于處理探聽請求的相對小的性能影響),在跨計算切片業(yè)務(wù)方面具有潛在的增加??蛇x地,共享高速緩存結(jié)構(gòu)30可以被配置為多個獨立的第二級(L2)高速緩存31,其中,每一個L2高速緩存31專用于計算切片。這樣的方案可以提供執(zhí)行塊28的本地存儲,同時最小化跨計算業(yè)務(wù)。這兩個實現(xiàn)選擇可以使用相同的探聽跟蹤邏輯實現(xiàn)一致性。
[0013]可選地,高速緩存結(jié)構(gòu)可以包括用于跟蹤一個或多個存儲器行的多個交叉節(jié)點32 (例如,高速緩存橋),每一個交叉節(jié)點32專用于計算切片24。交叉節(jié)點32可以將源自系統(tǒng)高速緩存12的探聽請求分布到共享高速緩存結(jié)構(gòu)30和LI高速緩存26。此外,交叉節(jié)點32可以從共享高速緩存結(jié)構(gòu)30和多個LI高速緩存26收集一個或多個探聽結(jié)果,并且將收集到的探聽結(jié)果經(jīng)由圖形接口 22傳送到系統(tǒng)高速緩存12。如下面將更加詳細討論的,高速緩存結(jié)構(gòu)可以使用修改、獨占、共享、無效(MEDSI)協(xié)議來維持一個或多個存儲器行的一致性。
[0014]所說明的架構(gòu)10因此使用圖形處理器20的高速緩存結(jié)構(gòu)、主機處理器14的專用高速緩存16、系統(tǒng)高速緩存12和系統(tǒng)存儲器18來實現(xiàn)能夠維持圖形工作項目和工作組之間的序列一致性、控制特定的存儲器存取順序并且確保整個架構(gòu)10上的一致性的存儲器/高速緩存分級。這樣的細粒度方案相對于依賴于屏障、存儲器籬障、未排序原子、硬件刷新和軟件棧調(diào)用的傳統(tǒng)方案會尤其有利。
[0015]例如,加載(例如,讀取操作)和存儲(例如,寫入操作)跟蹤可以開始于執(zhí)行塊28的級,其中系統(tǒng)存儲器18的讀取可以返回有效數(shù)據(jù)并且存儲器分級中的較高級可以跟蹤受影響的存儲器行的存在,用于該分級中的下一個較低級??梢栽试S分級中的低級默默地丟棄它們的存儲器行用于更換,除非修改了逐出行(例如,由于更換而被逐出的存儲器行)。寫入跟蹤會是更加限制的,其中每一個寫入的發(fā)起者可以基于該寫入相對于存儲器行的尺寸來在該發(fā)起者更新它的LI高速緩存26之前實現(xiàn)目的地地址的所有權(quán)。出于簡化的目的,可以實現(xiàn)策略,其中僅允許修改的存儲器行的一個拷貝存在于整個高速緩存結(jié)構(gòu)上。這樣的策略可以規(guī)定在相對精確地進行數(shù)據(jù)交換的同時跟蹤存儲器行的最新拷貝。
[0016]現(xiàn)在轉(zhuǎn)到圖2,示出了操作圖形處理器的方法38。方法38可以被實現(xiàn)在可執(zhí)行軟件中作為存儲在存儲器的計算機或者計算機可讀存儲介質(zhì)中的邏輯指令的集合,該存儲器例如是隨機存取存儲器(RAM)、只讀存儲器(ROM)、可編程ROM(PROM)、固件、閃存等等,可以被實現(xiàn)在可配置邏輯中,該可配置邏輯例如以可編程邏輯陣列(PLA)、現(xiàn)場可編程門陣列(FPGA)、復雜可編程邏輯器件(CPLD)為例,可以被使用電路技術(shù)實現(xiàn)在固定功能邏輯硬件中,該電路技術(shù)例如以專用集成電路(ASIC)、互補金屬氧化物半導體(CMOS)或者晶體管-晶體管邏輯(TTL)技術(shù)或者其任意組合為例。
[0017]所說明的處理塊40規(guī)定由計算切片的物理分布的集合來執(zhí)行多個工作項目。塊42可以由高速緩存結(jié)構(gòu)維持與多個工作項目相關(guān)聯(lián)的一個或多個存儲器行在圖形處理器、系統(tǒng)存儲器和一個或多個主機處理器上的一致性。塊42可以涉及由多個交叉節(jié)點跟蹤一個或多個存儲器行,其中,在多個LI高速緩存和物理分布的高速緩存結(jié)構(gòu)上維持一個或多個存儲器行的一致性,每一個LI高速緩存專用于計算切片的執(zhí)行塊并且每一個交叉節(jié)點專用于計算切片。而且,共享高速緩存結(jié)構(gòu)可以或者使用多個獨立的L2高速緩存來跟蹤一個或多個存儲器行,或者使該一個或多個存儲器行中的至少一個在L2高速緩存的多個排上形成散列。在獨立的L2高速緩存的情況下,每一個L2高速緩存可以專用于計算切片。
[0018]塊42也可以涉及由多個交叉節(jié)點將源自耦合到一個或多個主機處理器的系統(tǒng)高速緩存的一個或多個探聽請求分布到共享高速緩存結(jié)構(gòu)和多個LI高速緩存。此外,塊42可以規(guī)定由多個交叉節(jié)點從共享高速緩存結(jié)構(gòu)和多個LI高速緩存收集一個或多個探聽結(jié)果,并且由多個交叉節(jié)點將所述一個或多個探聽結(jié)果傳送到耦合到一個或多個主機處理器的系統(tǒng)高速緩存。塊42也可以包括由高速緩存結(jié)構(gòu)使用MESI協(xié)議來維持一個或多個存儲器行的一致性。
[0019]圖3A到3E通常示出了實現(xiàn)一致性協(xié)議的方案,其中每一個存儲器行被標記有MESI (修改、獨占、共享、無效)狀態(tài)中的一個。具體地說,當存儲器行僅存在于當前高速緩存中并且是“玷污”的(例如,存儲器行已經(jīng)從系統(tǒng)存儲器中的值改變)時,可以使用修改狀態(tài)。如果特定的高速緩存具有處于修改狀態(tài)中的存儲器行,則在允許將該存儲器行從系統(tǒng)存儲器讀取之前,可以要求該高速緩存將與該存儲器行相對應的數(shù)據(jù)寫回到系統(tǒng)存儲器。這樣的“寫回”會導致存儲器行被改變到高速緩存中的獨占狀態(tài)。
[0020]當存儲器行僅存在于當前高速緩存中并且是“干凈”的(例如,存儲器行與系統(tǒng)存儲器中的值匹配)時,可以使用獨占狀態(tài)。在這樣的情況下,響應于到高速緩存的讀取請求,可以將存儲器行改變到共享狀態(tài)。存儲器行也可以響應于到高速緩存的寫入請求而改變到修改狀態(tài)。共享狀態(tài)可以指示存儲器行是干凈的并且其可以被存儲在系統(tǒng)的其它高速緩存中。也可以在任意時間丟棄共享存儲器行(例如,改變到無效狀態(tài))。無效狀態(tài)可以用于指示存儲器行未被使用(例如,被從高速緩存逐出)。如已經(jīng)注意到的,高速緩存結(jié)構(gòu)可以使用MESI協(xié)議來在圖形處理器、系統(tǒng)存儲器和主機處理器的專用高速緩存上維持存儲器一致性。從特定的LI高速緩存(“發(fā)出的Ll$”)的角度來采取圖3A到3E中示出的示例。
[0021]例如,圖3A示出了針對涉及特定的LI高速緩存的讀取操作的一致性協(xié)議表44。在所說明的示例中,“原始請求”列45指示關(guān)于特定的存儲器行執(zhí)行的操作類型,“L2$”列47指示當操作被請求時L2高速緩存中的存儲器行的狀態(tài),“其它Ll$”列49指示當操作被請求時其它LI高速緩存中的存儲器行的狀態(tài),“發(fā)出的Ll$”51列指示當操作被請求時正在討論的LI高速緩沖中的存儲器行的狀態(tài),第一 “Ll$有效(SSV) ”列53指示當操作被請求時子切片有效(SSV)高速緩存的數(shù)量(例如,針對存儲器行具有有效數(shù)據(jù)的LI高速緩存的數(shù)量),“L2$狀態(tài)”列55指示在操作被執(zhí)行之后L2高速