背景技術:
圖形和中央處理器可以具有存儲系統,所述存儲系統具有相對快速的大的近存儲器(nm)高速緩沖存儲器,并且這又被廉價的而且慢得多的遠存儲器(fm)支持。在這樣的分級的存儲器體系結構中,在nm中獲得盡可能高的命中率是非常重要的,因為未命中,請求將被發送到fm,并且在請求的數據是可存取的之前,將會花費相對長的時間。例如,近存儲器可以是安裝在片上系統的圖形/中央處理單元上的易失性存儲器(即動態隨機存取存儲器)。遠存儲器可以是諸如閃速存儲器的非易失性存儲器。
同時,處理器可以把它的緩沖器中的某些緩沖器壓縮成小的固定大小的集合。對于快速隨機存取,“稀疏地”(非連續地)存儲壓縮的高速緩沖存儲器線路。當前,因為nm無法利用這種類型的壓縮,nm中的壓縮的數據仍然具有與nm中的未壓縮的數據相同的占用(footprint)。因此,在任何時間實例未使用更昂貴的nm的相當大的部分。
當前的渲染高速緩沖存儲器數據壓縮技術(例如用于顏色)并未減少渲染緩沖器的存儲器占用。那些技術僅僅減少了到存儲器和來自存儲器的數據業務的量。壓實是減少已經壓縮的數據的存儲器占用的方式。
其它有損數據壓縮技術可以減少占用,但是僅以質量的潛在無限制的損失來減少占用。例如,被重復地讀取/修改/寫入的有損壓縮的緩沖器可以使質量惡化。數據損失在許多情況下是不可接受的(例如,由于api兼容性、視覺偽像、非圖像數據導致的)。
壓實是減少已經壓縮的數據的存儲器占用而不會引入任何損失的方式。在觸發昂貴的遠存儲器(fm)訪問之前,nm中的占用減少使能存儲更多的數據。因此,在某些實施例中,nm的視在容量被增加,導致了更高的性能、不太昂貴的片上系統以及減少的功耗。
附圖說明
關于下列圖來描述某些實施例:
圖1是一個實施例的示意性描繪;
圖2是用于壓實緩沖器的一個實施例的流程圖;
圖3是用于根據一個實施例的壓實的流程圖;
圖4是根據一個實施例的壓實的描繪;
圖5是根據又一個實施例的壓實的示意性描繪;
圖6是用于另一個實施例的示意性描繪;
圖7是用于另一個實施例的操作圖;
圖8是用于根據一個實施例的壓實守護進程(daemon)的流程圖;
圖9是用于選擇要壓實的頁面的算法的流程圖;
圖10是根據一個實施例的處理系統的框圖;
圖11是根據一個實施例的處理器的框圖;
圖12是根據一個實施例的圖形處理器的框圖;
圖13是根據一個實施例的圖形處理引擎的框圖;
圖14是圖形處理器的另一個實施例的框圖;
圖15是根據一個實施例的線程執行邏輯的描繪;
圖16是根據某些實施例的圖形處理器指令格式的框圖;
圖17是圖形處理器的另一個實施例的框圖;
圖18a是根據某些實施例的圖形處理器命令格式的框圖;
圖18b是說明根據某些實施例的圖形處理器命令序列的框圖;
圖19是根據某些實施例的示范的圖形軟件體系結構的描繪;
圖20是說明根據某些實施例的ip核開發系統的框圖;以及
圖21是示出根據某些實施例的示范的片上系統集成電路的框圖。
具體實施方式
根據某些實施例,與壓縮形成對照,壓實被用來減少近存儲器的占用。在壓實中,存儲設備內的數據存儲的密度被增加了。在壓縮中,被用來表示信息的比特數量被減少了。因此,你可以進行壓縮,同時仍然具有稀疏的或者非連續布置的存儲。作為結果,壓縮可以并非總是減少存儲器占用。通過壓實壓縮的數據,可以減少存儲器內存儲的信息的占用。有時壓實可以減少對于遠存儲器訪問的需要。
根據第一技術,在來自緩沖器(諸如渲染緩沖器)的數據進入近存儲器之前所述數據被壓實。這可以使用緩沖的壓實技術來進行。
根據另一個實施例,壓實守護進程可以在近存儲器上獨立操作以釋放空間。根據某些實施例,可以盡可能晚地進行使用壓實守護進程的壓實以減少過早壓實時不必要的存儲器業務和邏輯。
守護進程是在預先確定的時間或者響應于某些事件而執行指定的操作的過程。它可以是計算機程序、固件或硬件。通常,并不由用戶來調用守護進程。
近存儲器和遠存儲器可以被耦合至處理器。近存儲器比遠存儲器更快并且由遠存儲器來支持近存儲器。編解碼器被耦合至渲染高速緩沖存儲器。根據第一技術,所述編解碼器和近存儲器之間的緩沖器為編解碼器存儲壓縮的數據。為更連續的(或者不太稀疏的)尋址存儲的緩沖器中的壓實且壓縮的數據比當被壓縮但是未被壓實時的相同數據具有更小的占用。
利用壓縮,在從顏色高速緩沖存儲器被逐出時,近存儲器(nm)中的高速緩沖存儲器線路可以被壓縮降到給定大小的子塊的倍數,因此將數據業務減少到遠存儲器(fm)的更低級高速緩沖存儲器。例如,壓縮可以是2:n或4:n。高速緩沖存儲器線路可以典型地是128b或256b。那么,在一個實施例中,可以將高速緩沖存儲器線路壓縮到64b子塊的整數倍或整數數量。
可以將近存儲器分解成被稱為近存儲器頁面大小的分配的大小的頁面。壓實頁面組是一組連續尋址的nm頁面。壓實頁面組大小是nm的頁面分配大小的倍數。
例如,在512字節的nm頁面分配大小和2,048字節的壓實頁面組大小的情況下,結合壓縮的高速緩沖存儲器線路以適合更少數量的nm頁面(在這種情況下是一個、兩個或三個nm頁面,而不是四個)是可能的,因此減少了nm中的所需要的占用。如果壓縮的高速緩沖存儲器線路的數量太低(即,很少的壓縮的線路或者低壓縮率),有時壓實可能是不可能的。
雖然在來自渲染高速緩沖存儲器的圖形數據的上下文中給出了示例,但是實施例通常可適用于處理使用壓縮的隨機訪問數據的具有兩個或多于兩個級別的存儲器分級體系中的壓縮的數據。
正如圖1中所示出的,在使用渲染高速緩沖存儲器的實施例中,中央處理單元或圖形處理單元(gpu)10與渲染高速緩沖存儲器12(諸如顏色高速緩沖存儲器)和遠存儲器11通信。渲染高速緩沖存儲器可以是被用于為包括顏色高速緩沖存儲器的圖形處理器存儲壓縮的數據的任何高速緩沖存儲器。在壓縮和解壓縮像素數據的編解碼器16之后提供壓實緩沖器(cb)14。壓實緩沖器收集屬于壓實頁面組的壓縮的高速緩沖存儲器線路(cl)(例如,對于512b的nm頁面大小,為2kb)。如果壓實頁面組被完全填充的話,它可以被安全壓實并且從壓實緩沖器被驅逐到nm18。如果數據被充分壓實的話,它在壓實之后可需要nm中相當少的占用。
如下面更詳細地描述的,當壓實且壓縮的數據從nm被讀取、修改并且寫回時,數據可占用比之前更多或更少的數據,導致擴展和收縮。假定合理大小的壓實緩沖器,可以避免這些事件中的許多事件。
在某些實施例中,與在存儲器系統的更遠的部分(即遠存儲器(fm))中相反,nm中的占用減少使能nm中的更多并且更大的渲染目標和緩沖器的存儲,因此減少了功耗和等待時間并且導致更高的性能渲染。本文描述的技術有時可以減少有限的nm容量的問題。
壓實緩沖器(cb)保持從渲染(例如顏色)高速緩沖存儲器中被逐出的高速緩沖存儲器線路。在某些實施例中,只有已經被修改的高速緩沖存儲器線路被驅逐到cb。可以壓縮或者不壓縮這些高速緩沖存儲器線路。壓實控制表面17追蹤并且記錄如何通過編解碼器來壓縮特定的高速緩沖存儲器線路以及通過編解碼器來將特定的高速緩沖存儲器線路壓縮到什么程度。
與近存儲器相比,壓實緩沖器像近存儲器一樣快,但是要小得多。通常,壓實緩沖器可以與將壓縮的數據供給壓實緩沖器的渲染高速緩沖存儲器一樣快。在某些實施例中,壓實緩沖器可以在物理上被定位成靠近渲染高速緩沖存儲器。
cb中的項可以是被稱作壓實頁面組(cpg)的成組的連續尋址的nm頁面。在從渲染高速緩沖存儲器的逐出處,cb被檢查以察看它當前是否保持對應的cpg。在一種情況下,將高速緩沖存儲器線路映射到cpg的尋址邏輯是右移位操作以去除地址的最低有效位,但是如果需要的話,邏輯可以是更精細的。
控制表面15中的壓實控制表面(ccs)記住哪些nm頁面被壓實。這個ccs指示cpg是否被壓實。在一個實施例中,這個表面可以是每cpg單個比特并且它的位置是任意的,即它可以被存儲在片上或片外的專用緩沖器中,或者它可以是一般存儲器系統的一部分。
可以在軟件、固件和/或硬件中實現圖2中示出的、用于實現壓實緩沖器的序列20。在某些實施例中,可以在軟件或固件中以存儲在一個或多個非暫時性計算機可讀媒體(諸如磁的、光的或者半導體存儲裝置)中的計算機執行的指令的形式來實現序列。例如,在某些實施例中,可以通過圖形處理單元來實現步驟。
在從渲染高速緩沖存儲器的逐出處(圖2,菱形22),存在有至少兩種可能性:
1.如果高速緩沖存儲器線路的cpg存在于cb中(菱形24,是):
a.在cpg中存儲逐出的線路數據,連同詳述高速緩沖存儲器線路如何被壓縮以及將高速緩沖存儲器線路壓縮到什么程度的它的壓縮控制位)(塊26)。
2.如果高速緩沖存儲器線路的cpg未存在于cb中(菱形24,否):
a.如果cb未滿(菱形28,是),則可以分配一個空閑的cpg并且可以將逐出的線路存入它,連同對應的壓縮控制位(塊30)。
b.如果cb是滿的(菱形28,否),cpg需要被逐出(塊32)。所使用的替換政策可以是任意的,但是在一個實施例中政策可以基于與cpg如何被填充的度量相結合的年齡(即,與最近最少使用的(lru)替換政策類似),并且還可能基于壓實性的量。在cpg被逐出之后,正如上面在2a中那樣,空的cpg槽被用來存儲逐出的高速緩沖存儲器線路。
可以在軟件、固件和/或硬件中實現圖3中示出的壓實序列34。在軟件和固件的實施例中,可以通過存儲在一個或多個非暫時性計算機可讀媒體(諸如磁的、光的或者半導體存儲裝置)中的計算機執行的指令來實現它。例如,在一個實施例中,可以通過圖形處理器來實現序列。
在從cb逐出時,選擇合適的cpg。如果用于cpg的所有數據存在于cb中,cb檢查cpg中的高速緩沖存儲器線路的壓縮控制位(塊36)并且計算可能的壓實的量(塊38)。如果實現了壓實(菱形40,是),即用來存儲cpg的nm頁面的數量比非壓實地存儲它們更低,設置ccs中的位(塊42)并且以連續的組塊將高速緩沖存儲器線路發送到近存儲器(塊44)。可以將任何未使用的nm頁面用信號通知為空閑的(塊50)。如果未實現壓實(菱形40,否),在nm中未壓實地存儲數據(塊46)。
作為示例,假定512字節的nm頁面大小和1,024字節的cpg大小(即兩個nm頁面,使能至多2:1壓實)。此外,假定顏色緩沖器高速緩沖存儲器中的高速緩沖存儲器線路大小是在適當位置具有4:n壓縮的256字節。在cpg的逐出處,檢查壓縮控制位,并且如果所有高速緩沖存儲器線路的總壓縮大于或等于2:1,壓實是可能的。對于單獨的高速緩沖存儲器線路(cl)的壓縮率的任何組合,即導致2:1的總壓實的4:1、4:2和4:3是可能的。使能壓實的不同量的nm頁面大小、cpg大小、cl大小以及壓縮率的其它組合是可能的。
無論如何,在最后分配的nm頁面中可以存在有未使用的部分。例如,使用512字節nm頁面,如果1,024字節的壓實的數據,cpg占用假定576字節,那么這個算法分配2個nm頁面,因為
在圖4中示出了類似的示例,其中在左邊示出了2kbcpg51,并且它以壓縮的形式將所有cl包含在其中。因此,當這樣的cpg被標記用于從cb的逐出時,壓實數據51并且在這種情況下需要兩個頁面(512b*2)以用于壓實的數據。在這種情況下,這些可以在任何地方被分配,但是最經常地,在近存儲器18中它們將是連續的。
在圖5中示出了擴展的示例。一個2kb塊21中的數據被讀入顏色高速緩沖存儲器并且在23處被解壓縮、寫入并且接著在25處被再次壓縮。在這一點上,數據比之前占用了更多空間,并且如在27處指示的,突然它不適合2個頁面。因此,在29處,在nm中分配了第三頁面,并且將數據混洗進這三個頁面中的正確位置。
當cpg從cb被逐出時,可以發生所有數據不存在以用于檢查,即某個數據仍駐留在渲染高速緩沖存儲器中并且某些數據可以駐留在nm中。無論如何,這個數據必須被取入cb以使能cpg的壓實。從nm讀取數據確實需要帶寬,但是可以利用合理大小的cb和高效的壓縮來保持低帶寬。屬于逐出的cpg的數據可以從渲染高速緩沖存儲器被強制逐出;然而,在不久的將來是否將會再次使用那個數據是未知的。一個選項是只允許所有cl已經從渲染高速緩沖存儲器被逐出的cpg的壓實。如果沒有這樣的罕見的情況存在,從渲染高速緩沖存儲器的強制逐出可被用作撤退。
當從近存儲器讀回數據時,它首先被解壓縮并且接著被直接置于可以是顏色/渲染高速緩沖存儲器或者其它高速緩沖存儲器的高速緩沖存儲器中。
當寫到nm作為從llc的臟線路的逐出的結果發生并且頁面組已經處于壓實的狀態時,可以咨詢rcs以決定是否需要擴展尋址的頁面組。如果以與nm中壓實的表示中相同的方式來壓縮從llc被逐出的線路,則與寫線路相比不需要另外的動作。備選方案是讓守護進程解壓實頁面組中的數據,并且接著執行寫入而不咨詢rcs。
如果未將從llc逐出的線路壓縮到與先前相同的程度,即壓縮的表示已經或者收縮或者擴展,在寫線路之前,首先將nm頁面組解壓實。這個頁面組則適合于未來的時間點處的壓實。
如果需要在壓實緩沖器中進行逐出,若干替換策略是可能的。為了最小化數據業務,則可以首先優先化滿的cpg,后面是壓實緩沖器中最老的cpg。如果沒有滿的cpg存在,則可以選擇具有最高數量的高速緩沖存儲器線路的cpg,因為那將最小化來自nm的讀取業務。其它策略也是可能的。
由每cpg一個比特組成的壓實控制表面(ccs)需要相對小的空間。對于大小
在上面描述的實施例中,使用緩沖的壓實方法,在數據進入nm之前壓實數據。然而,因為可能不得不擴展/收縮被壓實并且接著讀取/修改/寫入的數據,那個方法有利地使用足夠大的壓實緩沖器以避免這些事件中的大多數。
根據第二技術,壓實守護進程在近存儲器上獨立操作以便剛好及時或者稍微提前釋放空間。盡可能晚地壓實避免浪費過早壓實時的(片上)存儲器業務和邏輯。
如在圖6中示出的,存儲器系統包括耦合至高速緩沖存儲器分級體系的一個或多個緩沖器壓縮編解碼器72。近存儲器(nm)86擔當最后級別的傳統高速緩沖存儲器(例如,llc)78之后的大的高速緩沖存儲器。以與將數據寫到當前圖形處理器中的存儲器相同的方式但是總是以未壓實的形式(即稀疏地存儲)潛在地壓縮寫到nm的數據。
壓實守護進程90被連接到nm。當nm填充時,壓實守護進程在nm上異步操作以壓實它的數據。將nm分成某個大小(例如512b)的存儲頁面。壓實守護進程選擇稀疏的但是不可能被再次寫入的小范圍的存儲頁面并且將這些壓實成更少的一個或多個存儲頁面。這釋放了nm中的空的頁面。
如由當前占用級別和/或預算所指示的,例如又如由應用程序接口(api)事件所指示的,壓實守護進程可以是可以在任意時間點處運行的獨立軟件(線程)。
用于選擇用于壓實的頁面的若干不同政策是可能的。行為還可以受益于軟件控制(即通過圖形驅動器)。例如,當渲染目標被完成渲染并且被綁定為著色器資源(紋理)時,可以通過驅動器將相關的存儲頁面標記為只讀。壓實守護進程可以接著在那些頁面上操作以釋放潛在大數量的頁面。
守護進程有效地將整個nm用作壓實緩沖器。當nm開始用完空間時,數據開始得到壓實。例如,當只有閾值數量的打開頁面是可用的時候,在一個實施例中可以觸發守護進程以開始壓實。因此,在某些實施例中,具有本地在nm范圍內的工作集合的應用可不招致額外的片上業務/處理以用于壓實。
可以或者在數據進入nm之前使用緩沖方法來進行數據的壓實,或者在數據已經被存儲在nm中之后(但是在驅逐到fm之前)使用守護進程壓實方法來進行數據的壓實。早期的壓實(即在nm之前)招致額外的帶寬/處理,甚至對于具有適合nm的工作集合的應用也是。另外,壓縮緩沖器(cb)的控制邏輯可以更復雜以處理當將要被逐出并且被壓實的數據未被完全存儲在cb中時的情況。例如,一個或多個存儲頁面的部分可以駐留在更低級高速緩沖存儲器(其必須被強制逐出)中和/或在nm(其必須在壓實之前被讀回)中。
參考圖7,一個或多個l1或者渲染高速緩沖存儲器70使用被編解碼器72無損壓縮到一個或多個64b子塊或者被未壓縮地存儲的某個大小(例如256b)的高速緩沖存儲器線路。與每個緩沖器相關聯的渲染控制表面(rcs)74編碼如何/是否壓縮高速緩沖存儲器線路。l1高速緩沖存儲器被耦合至中央處理單元和/或圖形處理單元68。
一個或多個編解碼器被連接到一個或多個更高級高速緩沖存儲器(包括l2高速緩沖存儲器76,直到最后級別高速緩沖存儲器78)的分級體系。以壓縮的形式但是未壓實地(即稀疏的)將數據存儲在這些高速緩沖存儲器中。當從llc高速緩沖存儲器逐出修改的高速緩沖存儲器線路時,將數據寫到近存儲器(nm)86。可以通過近存儲器控制器80進行對nm的訪問。近存儲器被耦合至遠存儲器92。
近存儲器被組織成某個大小(例如512b)的存儲頁面84。這些又被組織成更大的頁面組(例如,4個頁面成2kb)。壓實守護進程90在頁面組上操作以將它們壓實成更少的512b頁面,從每個頁面組潛在地釋放一個或多個頁面。
圖7示出了壓實操作的示例。由壓實守護進程90壓實近存儲器82a中稀疏存儲的數據,使得一個頁面組94適合一個存儲頁面96。接著在82b處它被存儲在近存儲器中作為壓實的。頁面組可以由具有連續存儲器地址的頁面組成,但是所述頁面被不連續地存儲在nm中。近存儲器控制器80(圖7)中的存儲器地址翻譯表91(在圖7中)記住地址到頁面映射。
單獨的頁面組控制表面(pgcs)88(圖7)編碼每個頁面組是否被壓實地存儲。可以使用與每頁面組單個比特一樣小地來進行這個。近存儲器控制器80(圖7)訪問pgcs88以檢測特定頁面是否被壓實。
不同可能性存在,但是一個配置讓近存儲器(nm)作為大的犧牲高速緩沖存儲器(victimcache)來操作。從更高級高速緩沖存儲器被逐出并且被標記為已修改的數據被寫到nm。這樣的數據可以被壓縮,但是總是未被壓實。
壓實守護進程可以稍后壓實數據以清理nm中的存儲頁面。當讀取訪問時,數據從nm被取出(壓實的或者未壓實的)并且被未壓實地存儲在最后級別高速緩沖存儲器(llc)中。檢查pgcs以查明某個頁面是否被壓實。注意頁面可以壓實的形式留在nm中。
當寫到nm發生時,通常情況是守護進程已經能夠保持足夠的空的頁面可用。在它不具有的罕見情況下,或者由于所有數據已經被壓實或者由于守護進程尚未有時間去壓實一切,可能不得不進行從nm驅逐到遠存儲器(fm)。
為了進一步減少fm訪問的數量,存儲器控制器可以決定等待守護進程完成更多的壓實操作,如果這樣的事正在進行中的話。
壓實守護進程經由端口或總線(圖7,雙箭頭)被連接到近存儲器(nm),但是守護進程可以在它自己的時鐘/功率域中內部地操作。因為壓實異步發生并且只在被需要時發生,所以守護進程可以長時間段是空閑的。在這樣的時間期間,對它斷電或者降低它的時鐘是有利的。
守護進程可以或者具有它自己的到nm的數據端口94,或者與相同互連上的其它單元(例如,最后級別傳統高速緩沖存儲器或者用于遠存儲器的存儲器控制器)共享數據端口。在后者的情況下,它可以利用互連上的未使用的讀/寫周期來訪問nm以執行壓實。
正在由守護進程取出的頁面仍然可以被其它單元同時地只讀訪問。當壓實完成并且當頁面正在被守護進程更新時(即它們的內容被壓實的內容替換),它們可以臨時被鎖住。備選地,如果在nm中存在有其它空的頁面,則守護進程可以將壓實的數據寫到那些空的頁面,并且僅當它被完成時,更新地址翻譯表以指向壓實的頁面。在那個點上,原始的未壓實的頁面可以被標記為空的。這個策略減少了系統等待時間。
可以在軟件、固件或硬件中實現在圖8中示出的壓實守護進程序列100。在軟件和固件實施例中,它可以通過存儲在一個或多個非暫時性計算機可讀媒體(諸如磁的、光的或者半導體存儲裝置)中的計算機可讀指令來實現。在一個實施例中,它可以通過圖形處理單元來實現。
圖8中示出的序列通過在102處確定是否需要壓實而開始。如果是這樣的話,如在塊103中所指示的,在一個實施例中可以暫緩(stay)遠存儲器訪問。接著,如塊104中所指示的,可以選擇要壓實的稀疏的存儲頁面的范圍。如在塊106中所指示的,將這個范圍的頁面壓實成更少的頁面。如在塊108中所指示的,在地址翻譯表中存儲地址到頁面映射。接著,如在塊110中所指示的,在pgcs中存儲壓實指示器以指示已經壓實頁面組。最后,如在塊112中所指示的,在某些實施例中可以解除暫緩(unstay)遠存儲器訪問。
可以在軟件、固件或硬件中實現在圖9中示出的用于壓實頁面選擇的序列120。在軟件和固件實施例中,它可以通過存儲在一個或多個非暫時性計算機可讀媒體(諸如磁的、光的或者半導體存儲裝置)中的計算機可讀指令來實現。可以例如在圖形處理單元中實現所述序列。
壓實頁面選擇序列120在一個實施例中通過如在塊122中所指示的選擇被驅動器標記為只讀的頁面組而開始。接著,如在塊124中所指示的,壓實所選擇的頁面組。
菱形126處的檢查確定是否需要更多的壓實。如果是這樣的話,如在塊128中所指示的,選擇最老的頁面組以用于壓實。如在塊130中所指示的,接著壓實那些選擇的頁面組。接著,菱形132處的檢查確定是否仍然期望附加的壓實。如果是這樣的話,如在塊134中所指示的,咨詢rcs以找到可以被最壓實存儲的頁面組。還可以使用其它的技術。
因為在某些實施例中壓實守護進程異步且獨立操作,所以不存在與其它高速緩沖存儲器的復雜交互(例如,強制的逐出等等)。比較起來,緩沖的壓實方法可以具有這樣的復雜性。守護進程簡單地以它自己的步調用壓實的頁面替換成組的已完成的頁面。
壓實守護進程基于諸如圖10中示出的政策的陣列來選擇頁面組(例如2kb塊)以用于壓實。例如,被驅動器標記為只讀數據的頁面組適合于第一選擇,因為這樣的數據可以被壓實而沒有稍后被寫到(并且因此被擴展)的風險。
后面是這個,可以選定依據某個度量是“老”的頁面組。例如,最近最少寫入的(lrw)是有用的度量,因為這樣的頁面組在下一次寫入之前更可能具有更長的時間間隔(可能從來不)。
為了在不同的頁面組之間選擇,壓實守護進程可以查看關聯的渲染控制表面(rcs)以察看可以最壓實地存儲哪個頁面組(即壓實之后最少的頁面數)。
因為圖形驅動器和/或用戶應用具有附加的高層信息(包括命令流中預測未來的可能性),可以將提示發送到壓實守護進程以改進系統性能。
典型的示例是稍后被用作紋理的渲染目標,并且因此從讀/寫(r/w)存儲器轉到只讀。另一個示例是平鋪渲染,其中已經被完成的平鋪貼圖(tile)在長時間內(例如下一幀)將不會被寫到。可以以優先順序排列這樣的區域以用于壓實。
在最近的應用程序接口(api)(例如dx12)中可用的丟棄命令還可以被壓實守護進程使用來異步清除不再被需要的頁面,而不是壓實它們或者將它們驅逐到fm。注意,可以同樣地利用緩沖的壓實方法來做這個。
實際上,可以通過將機制直接傳遞到在內部可以保持適合于壓實的頁面組的隊列的守護進程的消息或者通過具有可以被nm控制器通過發送給它的命令直接寫入的pgcs中的附加的控制位來進行將信息從軟件棧傳送到壓實守護進程。
與緩沖的壓實(bc)方法相比,守護進程執行更少的工作。然而,因為bc始終執行壓實,它的壓實率可以更好,但是有代價。例如,bc可消耗更多的片上帶寬,因為它執行更多的壓實操作,并且每個壓實可以潛在地觸發從nm的讀回。
在某些實施例中,可以使用壓縮緩沖器和壓實守護進程兩者。例如,它們可以并行工作。
圖10是根據實施例的處理系統100的框圖。在各種實施例中,系統100包括一個或多個處理器102和一個或多個圖形處理器108,并且可以是單處理器桌上系統、多處理器工作站系統、或者具有大量處理器102或處理器核107的服務器系統。在一個實施例中,系統100是并入片上系統(soc)集成電路內的處理平臺,以供移動、手持或者嵌入式設備之用。
系統100的實施例可以包括或者被并入基于服務器的游戲平臺、游戲控制臺(包括游戲和媒體控制臺)、移動游戲控制臺、手持游戲控制臺或在線游戲控制臺內。在某些實施例中,系統100是移動電話、智能電話、平板計算設備或移動互聯網設備。數據處理系統100還可以包括可穿戴設備(諸如智能手表可穿戴設備、智能眼睛佩戴物設備、增強的現實設備或虛擬現實設備),與可穿戴設備耦合,或者被集成在可穿戴設備內。在某些實施例中,數據處理系統100是具有一個或多個處理器102和由一個或多個圖形處理器108生成的圖形接口的電視或者機頂盒設備。
在某些實施例中,一個或多個處理器102各自包括一個或多個處理器核107以處理指令,所述指令在被執行時為系統和用戶軟件執行操作。在某些實施例中,一個或多個處理器核107中的每個處理器核被配置成處理特定的指令集109。在某些實施例中,指令集109可以有助于復雜指令集計算(cisc)、精簡指令集計算(risc)或者借助于超長指令字(vliw)的計算。多個處理器核107可以各自處理可以包括有助于其它指令集的模擬的指令的不同指令集109。處理器核107還可以包括其它處理設備,這樣的數字信號處理器(dsp)。
在某些實施例中,處理器102包括高速緩沖存儲器104。取決于體系結構,處理器102可以具有單個內部高速緩沖存儲器或者多個級別的內部高速緩沖存儲器。在某些實施例中,在處理器102的各種部件之間共享高速緩沖存儲器。在某些實施例中,處理器102還使用可以使用已知的高速緩沖存儲器一致性技術來在處理器核107之間共享的外部高速緩沖存儲器(例如,3級(l3)高速緩沖存儲器或者最后級別高速緩沖存儲器(llc))(未示出)。寄存器堆106被另外地包括在處理器102中,其可以包括用于存儲不同類型的數據的不同類型的寄存器(例如,整數寄存器、浮點寄存器、狀態寄存器和指令指針寄存器)。某些寄存器可以是通用寄存器,然而其它寄存器可以是特定于處理器102的設計的。
在某些實施例中,處理器102被耦合至處理器總線110以在處理器102和系統100中的其它部件之間傳輸通信信號,諸如地址、數據或者控制信號。在一個實施例中,系統100使用包括存儲器控制器集線器116和輸入輸出(i/o)控制器集線器130的示范的‘集線器’系統體系結構。存儲器控制器集線器116有助于存儲器設備和系統100的其它部件之間的通信,而i/o控制器集線器(ich)130提供經由本地i/o總線到i/o設備的連接。在一個實施例中,存儲器控制器集線器116的邏輯被集成在處理器內。
存儲器設備120可以是動態隨機存取存儲器(dram)設備、靜態隨機存取存儲器(sram)設備、閃速存儲器設備、相變存儲器設備或者具有合適的性能以充當過程存儲器的某個其它存儲器設備。在一個實施例中,存儲器設備120可以作為系統100的系統存儲器來操作以當一個或多個處理器102執行應用或過程時存儲數據122和指令121以用于使用。存儲器控制器集線器116還與可以與處理器102中的一個或多個圖形處理器108通信以執行圖形和媒體操作的可選的外部圖形處理器112耦合。
在某些實施例中,ich130使得外圍設備能夠經由高速i/o總線連接到存儲器設備120和處理器102。i/o外圍設備包括但不限于音頻控制器146、固件接口128、無線收發器126(例如,wi-fi、藍牙)、數據存儲設備124(例如,硬盤驅動器、閃速存儲器等等)以及用于將遺留(例如,個人系統2(ps/2))設備耦合至系統的遺留i/o控制器140。一個或多個通用串行總線(usb)控制器142連接輸入設備,諸如鍵盤和鼠標144組合。網絡控制器134還可以耦合至ich130。在某些實施例中,高性能網絡控制器(未示出)耦合至處理器總線110。將會意識到,示出的系統100是示范的并且不是限制的,因為還可以使用不同配置的其它類型的數據處理系統。例如,可以將i/o控制器集線器130集成在一個或多個處理器102內,或者可以將存儲器控制器集線器116和i/o控制器集線器130集成在謹慎的外部圖形處理器中,諸如外部圖形處理器112。
圖11是具有一個或多個處理器核202a-202n、集成的存儲器控制器214以及集成的圖形處理器208的處理器200的實施例的框圖。圖11的具有與本文的任何其它圖的元件相同的附圖標記(或名稱)的那些元件可以以與本文在別的地方描述的類似的任何方式來操作或者運行,但是不限于這樣。處理器200可以包括相當于并且包括由虛線盒子表示的附加的核202n的附加的核。處理器核202a-202n中的每個處理器核包括一個或多個內部高速緩沖存儲器單元204a-204n。在某些實施例中,每個處理器核還可以訪問一個或多個共享高速緩存的單元206。
內部高速緩沖存儲器單元204a-204n和共享的高速緩沖存儲器單元206表示處理器200內的高速緩沖存儲器分級體系。高速緩沖存儲器分級體系可以包括每個處理器核內的指令和數據高速緩沖存儲器的至少一個級別以及共享的中級高速緩沖存儲器的一個或多個級別,諸如2級(l2)、3級(l3)、4級(l4)或者高速緩沖存儲器的其它級別,其中外部存儲器之前的高速緩沖存儲器的最高級別被分類為llc。在某些實施例中,高速緩沖存儲器一致性邏輯維持各種高速緩沖存儲器單元206和204a-204n之間的一致性。
在某些實施例中,處理器200還可以包括系統代理核210和一個或多個總線控制器單元216的集合。一個或多個總線控制器單元216管理外圍總線的集合,諸如一個或多個外圍部件互連總線(例如,pci、pciexpress)。系統代理核210為各種處理器部件提供管理功能性。在某些實施例中,系統代理核210包括一個或多個集成的存儲器控制器214以管理對各種外部存儲器設備(未示出)的訪問。
在某些實施例中,處理器核202a-202n中的一個或多個處理器核包括對于同時多線程的支持。在這樣的實施例中,系統代理核210包括用于在多線程的處理期間協調和操作核202a-202n的部件。系統代理核210可以另外地包括功率控制單元(pcu),所述pcu包括調節處理器核202a-202n和圖形處理器208的功率狀態的邏輯和部件。
在某些實施例中,處理器200另外地包括執行圖形處理操作的圖形處理器208。在某些實施例中,圖形處理器208與共享的高速緩沖存儲器單元206的集合以及包括一個或多個集成的存儲器控制器214的系統代理核210耦合。在某些實施例中,顯示器控制器211與圖形處理器208耦合以驅動圖形處理器輸出到一個或多個耦合的顯示器。在某些實施例中,顯示器控制器211可以是經由至少一個互連與圖形處理器耦合的單獨的模塊,或者可以被集成在圖形處理器208或系統代理核210內。
在某些實施例中,基于環的互連單元212被使用來耦合處理器200的內部部件。然而,可以使用備選的互連單元,諸如點對點互連、切換互連或者其它技術,包括本領域眾所周知的技術。在某些實施例中,圖形處理器208經由i/o鏈路213與環形互連212耦合。
示范的i/o鏈路213表示多種i/o互連中的至少一個,包括有助于各種處理器部件和高性能嵌入式存儲器模塊218(諸如edram模塊)之間通信的封裝的i/o互連。在某些實施例中,圖形處理器208和處理器核202-202n中的每個將嵌入式存儲器模塊218用作共享的最后級別高速緩沖存儲器。
在某些實施例中,處理器核202a-202n是執行相同指令集體系結構的同類核。在另一個實施例中,處理器核202a-202n在指令集體系結構(isa)方面是異類的,其中處理器核202a-n中的一個或多個處理器核執行第一指令集,然而其它核中的至少一個核執行第一指令集的子集或者不同的指令集。在一個實施例中,處理器核202a-202n在微體系結構方面是異類的,其中具有相對更高的功耗的一個或多個核與具有更低功耗的一個或多個功率核耦合。另外,可以在一個或多個芯片上或者作為除其它部件之外還有的說明的部件的soc集成電路來實現處理器200。
圖12是圖形處理器300的框圖,所述圖形處理器300可以是離散的圖形處理單元或者可以是與多個處理核集成的圖形處理器。在某些實施例中,圖形處理器經由到圖形處理器上的寄存器的存儲器映射的i/o接口進行通信并且與被放入處理器存儲器中的命令通信。在某些實施例中,圖形處理器300包括訪問存儲器的存儲器接口314。存儲器接口314可以是到本地存儲器、一個或多個內部高速緩沖存儲器、一個或多個共享的外部高速緩沖存儲器和/或到系統存儲器的接口。
在某些實施例中,圖形處理器300還包括驅動顯示器輸出數據到顯示設備320的顯示器控制器302。顯示器控制器302包括用于用戶接口元件或視頻的多個層的合成和顯示的一個或多個疊加平面的硬件。在某些實施例中,圖形處理器300包括視頻編解碼器引擎306以將媒體編碼、解碼或轉碼到一個或多個媒體編碼格式,從一個或多個媒體編碼格式編碼、解碼或轉碼媒體,或者在一個或多個媒體編碼格式之間編碼、解碼或轉碼媒體,所述一個或多個媒體編碼格式包括但不限于運動圖像專家組(mpeg)格式(諸如mpeg-2)、高級視頻編碼(avc)格式(諸如h.264/mpeg-4avc以及電影與電視工程師協會(smpte)421m/vc-1)和聯合圖像專家組(jpeg)格式(諸如jpeg)以及運動jpeg(mjpeg)格式。
在某些實施例中,圖形處理器300包括塊圖像傳送(blit)引擎304以執行包括例如位邊界塊傳送的二維(2d)光柵化操作。然而,在一個實施例中,使用圖形處理引擎(gpe)310的一個或多個部件來執行2d圖形操作。在某些實施例中,圖形處理引擎310是用于執行包括三維(3d)圖形操作和媒體操作的圖形操作的計算引擎。
在某些實施例中,gpe310包括3d管線312以用于執行3d操作,諸如使用按照3d圖元形狀(例如,矩形、三角形等等)行動的處理功能來渲染三維圖像和場景。3d管線312包括執行元件內的各種任務和/或產生到3d/媒體子系統315的執行線程的可編程和固定功能元件。當3d管線312可以被使用來執行媒體操作時,gpe310的實施例還包括被特別使用來執行諸如視頻后處理和圖像增強的媒體操作的媒體管線316。
在某些實施例中,媒體管線316包括固定功能或者可編程邏輯單元以代替或者代表視頻編解碼器引擎306執行一個或多個專用的媒體操作,諸如視頻解碼加速、視頻去除交錯和視頻編碼加速。在某些實施例中,媒體管線316另外地包括產生用于在3d/媒體子系統315上執行的線程的線程產生單元。產生的線程為包括在3d/媒體子系統315中的一個或多個圖形執行單元上的媒體操作執行計算。
在某些實施例中,3d/媒體子系統315包括用于執行由3d管線312和媒體管線316產生的線程的邏輯。在一個實施例中,管線將線程執行請求發送到包括用于仲裁和分派各種請求到可用的線程執行資源的線程分派邏輯的3d/媒體子系統315。執行資源包括處理3d和媒體線程的圖形執行單元的陣列。在某些實施例中,3d/媒體子系統315包括用于線程指令和數據的一個或多個內部高速緩沖存儲器。在某些實施例中,子系統還包括共享的存儲器以共享線程之間的數據并且存儲輸出的數據,所述共享的存儲器包括寄存器和可尋址的存儲器。
圖13是根據某些實施例的圖形處理器的圖形處理引擎410的框圖。在一個實施例中,gpe410是圖12中示出的gpe310的版本。具有與本文的任何其它圖的元件相同的附圖標記(或名稱)的圖13的元件可以以與本文在別的地方描述的類似的任何方式來操作或運行,但是不限于這樣。
在某些實施例中,gpe410與將命令流提供給gpe3d和媒體管線412、416的命令流化器403耦合。在某些實施例中,命令流化器403被耦合至存儲器,所述存儲器可以是系統存儲器、或者共享的高速緩沖存儲器和內部高速緩沖存儲器中的一個或多個。在某些實施例中,命令流化器403從存儲器接收命令并且將命令發送到3d管線412和/或媒體管線416。所述命令是從存儲用于3d和媒體管線412、416的命令的環形緩沖器取出的指示。在一個實施例中,環形緩沖器可以另外地包括存儲成批的多個命令的批量命令緩沖器。3d和媒體管線412、416通過借助于相應管線內的邏輯來執行操作或者通過將一個或多個執行線程分派到執行單元陣列414來處理命令。在某些實施例中,執行單元陣列414是可縮放的,使得陣列基于gpe410的目標功率和性能級別來包括可變數量的執行單元。
在某些實施例中,采樣引擎430與存儲器(例如,高速緩沖存儲器或系統存儲器)和執行單元陣列414耦合。在某些實施例中,采樣引擎430為執行單元陣列414提供允許執行陣列414從存儲器讀取圖形和媒體數據的存儲器訪問機制。在某些實施例中,采樣引擎430包括為媒體執行專用的圖像采樣操作的邏輯。
在某些實施例中,采樣引擎430中的專用媒體采樣邏輯包括去除噪聲/去除交錯模塊432、運動估計模塊434以及圖像縮放和濾波模塊436。在某些實施例中,去除噪聲/去除交錯模塊432包括用來對解碼的視頻數據執行去除噪聲或去除交錯算法中的一個或多個的邏輯。去除交錯邏輯將交錯的視頻內容的交變字段組合成視頻的單個幀。去除噪聲邏輯從視頻和圖像數據中減少或去除數據噪聲。在某些實施例中,去除噪聲邏輯和去除交錯邏輯是運動適應的并且基于在視頻數據中檢測的運動量來使用空間或時間濾波。在某些實施例中,去除噪聲/去除交錯模塊432包括專用的運動檢測邏輯(例如,在運動估計引擎434內)。
在某些實施例中,運動估計引擎434通過執行視頻加速功能(諸如視頻數據上的運動向量估計和預測)來為視頻操作提供硬件加速。運動估計引擎確定描述連續視頻幀之間的圖像數據的轉換的運動向量。在某些實施例中,圖形處理器媒體編解碼器使用視頻運動估計引擎434來在以其他方式可能是太計算密集以致不能利用通用處理器來執行的宏塊級別上執行對視頻的操作。在某些實施例中,運動估計引擎434通常可被圖形處理器部件利用來幫助對視頻數據內的運動的方向或量值敏感或適應的視頻解碼和處理功能。
在某些實施例中,圖像縮放和濾波模塊436執行圖像處理操作以增強生成的圖像和視頻的視覺質量。在某些實施例中,縮放和濾波模塊436在將數據提供給執行單元陣列414之前在采樣操作期間處理圖像和視頻數據。
在某些實施例中,gpe410包括為圖形子系統提供附加的機制以便訪問存儲器的數據端口444。在某些實施例中,數據端口444有助于用于包括渲染目標寫入、恒定的緩沖器讀取、擦除存儲器空間讀取/寫入以及媒體表面訪問的操作的存儲器訪問。在某些實施例中,數據端口444包括高速緩沖存儲器空間以便對存儲器進行高速緩存訪問。高速緩沖存儲器可以是單個數據高速緩沖存儲器或者被分成用于經由數據端口訪問存儲器的多個子系統的多個高速緩沖存儲器(例如,渲染緩沖器高速緩沖存儲器、恒定的緩沖器高速緩沖存儲器等等)。在某些實施例中,在執行單元陣列414中的執行單元上執行的線程通過經由耦合gpe410的子系統中的每個子系統的數據分布互連交換消息來與數據端口通信。
圖14是圖形處理器500的另一個實施例的框圖。具有與本文的任何其它圖的元件相同的附圖標記(或名稱)的圖14的元件可以以與本文在別的地方描述的類似的任何方式來操作或者運行,但是不限于這樣。
在某些實施例中,圖形處理器500包括環形互連502、管線前端504、媒體引擎537以及圖形核580a-580n。在某些實施例中,環形互連502將圖形處理器耦合至包括其它圖形處理器或者一個或多個通用處理器核的其它處理單元。在某些實施例中,圖形處理器是集成在多核處理系統內的多個處理器中的一個處理器。
在某些實施例中,圖形處理器500經由環形互連502接收成批的命令。通過管線前端504中的命令流化器503來解釋傳入的命令。在某些實施例中,圖形處理器500包括借助于一個或多個圖形核580a-580n來執行3d幾何處理和媒體處理的可縮放執行邏輯。對于3d幾何處理命令,命令流化器503將命令供應給幾何管線536。對于至少某些媒體處理命令,命令流化器503將命令供應給與媒體引擎537耦合的視頻前端534。在某些實施例中,媒體引擎537包括用于視頻和圖像后處理的視頻質量引擎(vqe)530以及提供硬件加速的媒體數據編碼和解碼的多格式編碼/解碼(mfx)533引擎。在某些實施例中,幾何管線536和媒體引擎537各自生成用于由至少一個圖形核580a提供的線程執行資源的執行線程。
在某些實施例中,圖形處理器500包括以模塊化的核580a-580n(有時被稱為核片)為特色的可縮放線程執行資源,所述模塊化的核各自具有多個子核550a-550n、560a-560n(有時被稱為核子片)。在某些實施例中,圖形處理器500可以具有任何數量的圖形核580a直到580n。在某些實施例中,圖形處理器500包括具有至少第一子核550a和第二核子核560a的圖形核580a。在其它實施例中,圖形處理器是具有單個子核(例如550a)的低功率處理器。在某些實施例中,圖形處理器500包括多個圖形核580a-580n,各自包括第一子核550a-550n的集合和第二子核560a-560n的集合。第一子核550a-550n的集合中的每個子核包括至少執行單元552a-552n和媒體/紋理采樣器554a-554n的第一集合。第二子核560a-560n的集合中的每個子核包括至少執行單元562a-562n和采樣器564a-564n的第二集合。在某些實施例中,每個子核550a-550n、560a-560n共享共享的資源570a-570n的集合。在某些實施例中,共享的資源包括共享的高速緩沖存儲器和像素操作邏輯。其它共享的資源還可以被包括在圖形處理器的各種實施例中。
圖15說明了線程執行邏輯600包括在gpe的某些實施例中使用的處理元件的陣列。具有與本文的任何其它圖的元件相同的附圖標記(或名稱)的圖15的元件可以以與本文在別的地方描述的類似的任何方式來操作或者運行,但是不限于這樣。
在某些實施例中,線程執行邏輯600包括像素著色器602、線程分派器604、指令高速緩沖存儲器606、包括有多個執行單元608a-608n的可縮放執行單元陣列、采樣器610、數據高速緩沖存儲器612以及數據端口614。在一個實施例中,經由鏈接到部件中的每個部件的互連結構來互連所包括的部件。在某些實施例中,線程執行邏輯600包括通過指令高速緩沖存儲器606、數據端口614、采樣器610以及執行單元陣列608a-608n中的一個或多個的、到存儲器(諸如系統存儲器或者高速緩沖存儲器)的一個或多個連接。在某些實施例中,每個執行單元(例如608a)是能夠執行多個同時線程并且為每個線程并行處理多個數據元素的單獨的向量處理器。在某些實施例中,執行單元陣列608a-608n包括任何數量的單獨的執行單元。
在某些實施例中,執行單元陣列608a-608n主要被用來執行“著色器”程序。在某些實施例中,陣列608a-608n中的執行單元執行包括對于許多標準3d圖形著色器指令的本地支持的指令集,使得利用最小翻譯執行來自圖形庫(例如,direct3d和opengl)的著色器程序。執行單元支持頂點和幾何處理(例如,頂點程序、幾何程序、頂點著色器)、像素處理(例如,像素著色器、片段著色器)以及通用處理(例如,計算和媒體著色器)。
執行單元陣列608a-608n中的每個執行單元在數據元素的陣列上操作。數據元素的數量是“執行大小”或者用于指令的通道數量。執行通道是用于指令內的數據元素訪問、掩蔽(masking)和流程控制的執行的邏輯單元。通道數量可以獨立于用于特定圖形處理器的物理算術邏輯單元(alu)或浮點單元(fpu)的數量。在某些實施例中,執行單元608a-608n支持整數和浮點數據類型。
執行單元指令集包括單指令多數據(simd)指令。各種數據元素可以在寄存器中被存儲為壓縮數據類型并且執行單元將基于元素的數據大小來處理各種元素。例如,當在256比特寬的向量上操作時,向量的256比特被存儲在寄存器中并且執行單元在作為四個單獨的64位壓縮的數據元素(四倍長字(qw)大小數據元素)、八個單獨的32位壓縮的數據元素(雙字(dw)大小數據元素)、十六個單獨的16位壓縮的數據元素(字(w)大小數據元素)或者三十二個單獨的8位數據元素(字節(b)大小數據元素)的向量上操作。然而,不同的向量寬度和寄存器大小是可能的。
一個或多個內部指令高速緩沖存儲器(例如606)被包括在線程執行邏輯600中以便為執行單元高速緩存線程指令。在某些實施例中,一個或多個數據高速緩沖存儲器(例如612)被包括以便在線程執行期間高速緩存線程數據。在某些實施例中,采樣器610被包括以便為3d操作提供紋理采樣并且為媒體操作提供媒體采樣。在某些實施例中,采樣器610包括專用的紋理或媒體采樣功能性以在將采樣的數據提供給執行單元之前在采樣過程期間處理紋理或媒體數據。
在期間執行,圖形和媒體管線經由線程產生和分派邏輯將線程發起請求發送到線程執行邏輯600。在某些實施例中,線程執行邏輯600包括仲裁來自圖形和媒體管線的線程發起請求并且在一個或多個執行單元608a-608n上例示請求的線程的本地線程分派器604。例如,幾何管線(例如,圖14的536)將頂點處理、鑲嵌或者幾何處理線程分派到線程執行邏輯600(圖15)。在某些實施例中,線程分派器604還可以處理來自執行著色器程序的運行時間線程產生請求。
一旦一組幾何對象已經被處理并且被光柵化成像素數據,像素著色器602被調用以便進一步計算輸出的信息并且促使結果將要被寫到輸出表面(例如顏色緩沖器、深度緩沖器、模板緩沖器等等)。在某些實施例中,像素著色器602計算將要跨光柵化的對象被內插的各種頂點屬性的值。在某些實施例中,像素著色器602接著執行應用編程接口(api)供應的像素著色器程序。為了執行像素著色器程序,像素著色器602經由線程分派器604將線程分派到執行單元(例如608a)。在某些實施例中,像素著色器602使用采樣器610中的紋理采樣邏輯來訪問被存儲在存儲器中的紋理映射中的紋理數據。紋理數據和輸入幾何數據上的算術操作為每個幾何片段計算像素顏色數據,或者從進一步處理中丟棄一個或多個像素。
在某些實施例中,數據端口614將為線程執行邏輯600輸出處理的數據到存儲器提供存儲器訪問機制以用于在圖形處理器輸出管線上處理。在某些實施例中,數據端口614包括或者耦合至一個或多個高速緩沖存儲器(例如,數據高速緩沖存儲器612)以便高速緩存數據以用于經由數據端口的存儲器訪問。
圖16是說明根據某些實施例的圖形處理器指令格式700的框圖。在一個或多個實施例中,圖形處理器執行單元支持具有多種格式的指令的指令集。實線盒子說明了通常被包括在執行單元指令中的部件,而虛線包括是可選的或者僅僅被包括在指令的子集中的部件。在某些實施例中,與一旦指令被處理則由指令產生的微操作解碼相反,所描述的和所說明的指令格式700是宏指令,因為它們是被供應給執行單元的指令。
在某些實施例中,圖形處理器執行單元本地支持128位格式710的指令。基于所選擇的指令、指令選項以及操作數的數量,64位壓實的指令格式730對于某些指令是可用的。本地128位格式710提供對所有指令選項的訪問,而某些選項和操作被限制在64位格式730。64位格式730可用的本地指令隨實施例而變化。在某些實施例中,使用索引字段713中的索引值的集合來部分壓實指令。執行單元硬件基于索引值來引用壓實表的集合并且使用壓實表輸出來重建128位格式710的本地指令。
對于每個格式,指令操作碼712定義執行單元將要執行的操作。執行單元跨每個操作數的多個數據元素并行執行每個指令。例如,響應于加法指令,執行單元跨表示紋理元素或圖片元素的每個顏色通道執行同時加法操作。缺省地,執行單元跨操作數的所有數據通道執行每個指令。在某些實施例中,指令控制字段714使能控制某些執行選項,諸如通道選擇(例如預測)和數據通道順序(例如攪和(swizzle))。對于128位指令710,執行大小(exec-size)字段716限制將被并行執行的數據通道的數量。在某些實施例中,執行大小字段716不可用于64位壓實指令格式730。
某些執行單元指令具有多達三個操作數,包括兩個源操作數src0722、srd1722和一個目的地718。在某些實施例中,執行單元支持雙目的地指令,其中目的地中的一個被暗示。數據操縱指令可以具有第三源操作數(例如,src2724),其中指令操作碼712確定源操作數的數量。指令的最后源操作數可以是隨指令傳遞的立即(例如硬編碼)值。
在某些實施例中,128位指令格式710包括指定例如是使用直接寄存器尋址模式還是使用間接寄存器尋址模式的訪問/地址模式信息726。當使用直接寄存器尋址模式時,通過指令710中的位直接提供一個或多個操作數的寄存器地址。
在某些實施例中,128位指令格式710包括指定對于指令的地址模式和/或訪問模式的訪問/地址模式字段726。在一個實施例中,訪問模式定義用于指令的數據訪問對準。某些實施例支持包括16字節對準的訪問模式和1字節對準的訪問模式的訪問模式,其中訪問模式的字節對準確定指令操作數的訪問對準。例如,當處在第一模式時,指令710可以為源和目的地操作數使用字節對準的尋址并且當處在第二模式時,指令710可以為所有源和目的地操作數使用16字節對準的尋址。
在一個實施例中,訪問/地址模式字段726的地址模式部分確定指令將使用是直接還是間接尋址。當使用直接寄存器尋址模式時,指令710中的比特直接地提供一個或多個操作對象的寄存器地址。當使用間接寄存器尋址模式時,可以基于指令中的地址寄存器值和地址立即字段計算一個或多個操作數的寄存器地址。
在某些實施例中,基于操作碼712位字段來對指令分組以簡化操作碼解碼740。對于8位操作碼,位4、5和6允許執行單元確定操作碼的類型。示出的精確的操作碼分組僅僅是示例。在某些實施例中,移動和邏輯操作碼組742包括數據移動和邏輯指令(例如,移動(mov)、比較(cmp))。在某些實施例中,移動和邏輯組742共享五個最高有效位(msb),其中移動(mov)指令是以0000xxxxb的形式并且邏輯指令是以0001xxxxb的形式。流程控制指令組744(例如,調用、跳(jmp))包括以0010xxxxb的形式(例如0x20)的指令。雜項指令組746包括指令的混合,包括以0011xxxxb的形式(例如0x30)的同步指令(例如,等待、發送)。并行數學指令組748包括以0100xxxxb的形式(例如0x40)的部件方式算術指令(例如,加、乘(mul))。并行數學組748跨數據通道并行執行算術操作。向量數學組750包括以0101xxxxb的形式(例如0x50)的算術指令(例如dp4)。向量數學組對向量操作數執行算術,諸如點乘計算。
圖17是圖形處理器800的另一個實施例的框圖。具有與本文的任何其它圖的元件相同的附圖標記(或名稱)的圖17的元件可以以與本文在別的地方描述的類似的任何方式來操作或者運行,但是不限于這樣。
在某些實施例中,圖形處理器800包括圖形管線820、媒體管線830、顯示器引擎840、線程執行邏輯850以及渲染輸出管線870。在某些實施例中,圖形處理器800是包括一個或多個通用處理核的多核處理系統內的圖形處理器。通過寄存器寫到一個或多個控制寄存器(未示出)或者借助于經由環形互連802發出到圖形處理器800的命令來控制圖形處理器。在某些實施例中,環形互連802將圖形處理器800耦合至其它處理部件,諸如其它圖形處理器或通用處理器。通過將指令供應給圖形管線820或者媒體管線830的單獨的部件的命令流化器803來解釋來自環形互連802的命令。
在某些實施例中,命令流化器803指導從存儲器讀取頂點數據并且執行由命令流化器803提供的頂點處理命令的頂點讀取器805的操作。在某些實施例中,頂點讀取器805將頂點數據提供給執行坐標空間轉換和點亮操作到每個頂點的頂點著色器807。在某些實施例中,頂點讀取器805和頂點著色器807通過經由線程分派器831將執行線程分派到執行單元852a、852b來執行頂點處理指令。
在某些實施例中,執行單元852a、852b是具有用于執行圖形和媒體操作的指令集的向量處理器的陣列。在某些實施例中,執行單元852a、852b具有專用于每個陣列或者在陣列之間共享的附加的l1高速緩沖存儲器851。高速緩沖存儲器可以被配置為數據高速緩沖存儲器、指令高速緩沖存儲器或者被分區成包含不同分區中的數據和指令的單個高速緩沖存儲器。
在某些實施例中,圖形管線820包括用來執行3d對象的硬件加速的鑲嵌的鑲嵌部件。在某些實施例中,可編程外殼著色器811配置鑲嵌操作。可編程域著色器817提供鑲嵌輸出的后端評估。鑲嵌器813在外殼著色器811的指導下操作并且包含專用邏輯以基于作為到圖形管線820的輸入而被提供的粗幾何模型來生成詳細的幾何對象的集合。在某些實施例中,如果未使用鑲嵌,可以繞過鑲嵌部件811、813、817。
在某些實施例中,可以通過幾何著色器819借助于被分派到執行單元852a、852b的一個或多個線程來處理全部幾何對象,或者全部幾何對象可以直接進入限幅器829。在某些實施例中,如在圖形管線的先前級中那樣,幾何著色器在整個幾何對象上操作,而不是頂點或者頂點的補片。如果鑲嵌被停用,則幾何著色器819從頂點著色器807接收輸入。在某些實施例中,如果鑲嵌單元被停用,則幾何著色器819通過幾何著色器程序是可編程的以執行幾何鑲嵌。
在光柵化之前,限幅器829處理頂點數據。限幅器829可以是具有限幅和幾何著色器功能的可編程限幅器或者固定功能限幅器。在某些實施例中,渲染輸出管線870中的光柵化器/深度873分派像素著色器以將幾何對象轉換成它們的每像素表示。在某些實施例中,像素著色器邏輯被包括在線程執行邏輯850中。在某些實施例中,應用可以繞過光柵化器873并且經由流輸出單元823來訪問未光柵化的頂點數據。
圖形處理器800具有互連總線、互連結構或者允許數據和消息在處理器的主要部件之間傳遞的某個其它互連機制。在某些實施例中,執行單元852a、852b和一個或多個關聯的高速緩沖存儲器851、紋理和媒體采樣器854以及紋理/采樣器高速緩沖存儲器858經由數據端口856互連以執行存儲器訪問并且與處理器的渲染輸出管線部件通信。在某些實施例中,采樣器854、高速緩沖存儲器851、858以及執行單元852a、852b各自具有單獨的存儲器訪問路徑。
在某些實施例中,渲染輸出管線870包含將基于頂點的對象轉換成關聯的基于像素的表示的光柵化器和深度測試部件873。在某些實施例中,光柵化器邏輯包括窗口器/掩蔽器單元以執行固定功能三角形和線光柵化。在某些實施例中,關聯的渲染高速緩沖存儲器878和深度高速緩沖存儲器879也是可用的。像素操作部件877對數據執行基于像素的操作,雖然在某些實例中,與2d操作相關聯的像素操作(例如利用混合的位塊圖像傳送)通過2d引擎841來執行,或者使用疊加顯示平面通過顯示器控制器843在顯示時間被替代。在某些實施例中,共享的l3高速緩沖存儲器875可用于所有圖形部件,允許數據共享而不使用主系統存儲器。
在某些實施例中,圖形處理器媒體管線830包括媒體引擎837和視頻前端834。在某些實施例中,視頻前端834從命令流化器803接收管線命令。在某些實施例中,媒體管線830包括單獨的命令流化器。在某些實施例中,在將命令發送到媒體引擎837之前,視頻前端834處理媒體命令。在某些實施例中,媒體引擎337包括線程產生功能性以產生用于經由線程分派器831分派到線程執行邏輯850的線程。
在某些實施例中,圖形處理器800包括顯示器引擎840。在某些實施例中,顯示器引擎840在處理器800的外部并且經由環形互連802或者某個其它互連總線或結構與圖形處理器耦合。在某些實施例中,顯示器引擎840包括2d引擎841和顯示器控制器843。在某些實施例中,顯示器引擎840包含能夠獨立于3d管線來操作的專用邏輯。在某些實施例中,顯示器控制器843與顯示器設備(未示出)耦合,所述顯示設備可以是如在膝上型計算機中的系統集成的顯示器設備,或者是經由顯示器設備連接器附接的外部顯示器設備。
在某些實施例中,圖形管線820和媒體管線830是可配置的以便基于多個圖形和媒體編程接口來執行操作并且不是專用于任何一個應用編程接口(api)的。在某些實施例中,用于圖形處理器的驅動器軟件將專用于特定圖形或媒體庫的api調用翻譯成可以被圖形處理器處理的命令。在某些實施例中,為來自khronos組的公開圖形庫(opengl)和公開計算語言(opencl)、來自microsoft公司的direct3d庫提供支持,或者可以向opengl和d3d兩者提供支持。還可以為開源計算機視覺庫(opencv)提供支持。如果可以進行從未來api的管線到圖形處理器的管線的映射,則還將支持具有兼容的3d管線的未來api。
圖18a是說明根據某些實施例的圖形處理器命令格式900的框圖。圖18b是說明根據實施例的圖形處理器命令序列910的框圖。圖18a中的實線盒子說明了通常被包括在圖形命令中的部件,而虛線包括是可選的或者僅僅被包括在圖形命令的子集中的部件。圖18a的示范的圖形處理器命令格式900包括數據字段以識別命令的目標客戶902、命令操作碼(操作碼)904以及用于命令的相關數據906。子操作碼905和命令大小908也被包括在某些命令中。
在某些實施例中,客戶902指定處理命令數據的圖形設備的客戶單元。在某些實施例中,圖形處理器命令解析器檢查每個命令的客戶字段以調節命令的進一步處理并且將命令數據路由到適當的客戶單元。在某些實施例中,圖形處理器客戶單元包括存儲器接口單元、渲染單元、2d單元、3d單元和媒體單元。每個客戶單元具有處理命令的對應處理管線。一旦由客戶單元接收到命令,客戶單元讀取操作碼904和子操作碼905(如果存在的話)以確定要執行的操作。客戶單元使用數據字段906中的信息來執行命令。對于某些命令,預期顯式的命令大小908以指定命令的大小。在某些實施例中,命令解析器基于命令操作碼來自動確定至少某些命令的大小。在某些實施例中,借助于雙字的倍數來對準命令。
圖18b中的流程圖示出了示范的圖形處理器命令序列910。在某些實施例中,以圖形處理器的實施例為特色的數據處理系統的軟件或者固件使用示出的命令序列的版本來建立、執行和終止圖形操作的集合。僅僅為了示例的目的來示出和描述采樣命令序列,因為實施例不限于這些特定的命令或者不限于這個命令序列。此外,命令可以作為命令序列中的批量的命令被發出,使得圖形處理器將至少部分同時處理命令的序列。
某些實施例中,圖形處理器命令序列910可以始于管線沖洗命令912以促使任何活動的圖形管線為管線完成當前未決的命令。在某些實施例中,3d管線922和媒體管線924不會同時操作。執行管線沖洗以促使活動的圖形管線完成任何未決的命令。響應于管線沖洗,用于圖形處理器的命令解析器將暫停命令處理直到活動的繪圖引擎完成未決的操作并且使相關的讀取高速緩沖存儲器無效。可選地,可以將渲染高速緩沖存儲器中的被標記‘臟’的任何數據沖洗到存儲器。在某些實施例中,管線沖洗命令912可以被用于管線同步或者在將圖形處理器置于低功率狀態之前可以使用管線沖洗命令912。
某些實施例中,當命令序列要求圖形處理器顯式地在管線之間切換時,使用管線選擇命令913。在某些實施例中,在發出管線命令之前,在執行上下文內僅要求管線選擇命令913一次,除非上下文是為兩個管線發出命令。在某些實施例中,在借助于管線選擇命令913的管線切換之前立即要求管線沖洗命令912。
在某些實施例中,管線控制命令914配置用于操作的圖形管線并且被用來編程3d管線922和媒體管線924。在某些實施例中,管線控制命令914為活動的管線配置管線狀態。在一個實施例中,管線控制命令914被用于管線同步并且被用來在處理批量的命令之前從活動的管線內的一個或多個高速緩沖存儲器清除數據。
在某些實施例中,返回緩沖器狀態命令916被用來為相應的管線配置返回緩沖器的集合以寫入數據。某些管線操作要求分配、選擇或者配置在處理期間操作將中間數據寫入的一個或多個返回緩沖器。在某些實施例中,圖形處理器還使用一個或多個返回緩沖器來存儲輸出的數據并且執行交叉線程通信。在某些實施例中,返回緩沖器狀態916包括選擇返回緩沖器的大小和數量以用于管線操作的集合。
命令序列中的剩余命令基于用于操作的活動的管線而不同。基于管線確定920,命令序列適應始于3d管線狀態930的3d管線922,或者始于媒體管線狀態940的媒體管線924。
用于3d管線狀態930的命令包括3d狀態設置命令以用于頂點緩沖器狀態、頂點元素狀態、恒定顏色狀態、深度緩沖器狀態以及在處理3d圖元命令之前將要被配置的其它狀態變量。至少部分地基于在使用中的特定3dapi來確定這些命令的值。在某些實施例中,如果將不會使用某些管線元件的話,3d管線狀態930命令還能夠選擇性地停用或者繞過那些元件。
某些實施例中,3d圖元932命令被用來提交將要被3d管線處理的3d圖元。將借助于3d圖元932命令被傳遞到圖形處理器的命令和關聯的參數轉發到圖形管線中的頂點讀取功能。頂點讀取功能使用3d圖元932命令數據來生成頂點數據結構。在一個或多個返回緩沖器中存儲頂點數據結構。在某些實施例中,3d圖元932命令被用來借助于頂點著色器在3d圖元上執行頂點操作。為了處理頂點著色器,3d管線922將著色器執行線程分派到圖形處理器執行單元。
在某些實施例中,借助于執行934命令或事件來觸發3d管線922。在某些實施例中,寄存器寫入觸發命令執行。在某些實施例中,借助于命令序列中的‘go’或‘kick’命令來觸發執行。在一個實施例中,使用管線同步命令來觸發命令執行以通過圖形管線來沖洗命令序列。3d管線將為3d圖元執行幾何處理。一旦操作完成,光柵化所得到的幾何對象并且像素引擎給所得到的像素上色。控制像素著色和像素后端操作的附加命令也可以為了那些操作而被包括在內。
在某些實施例中,當執行媒體操作時,圖形處理器命令序列910沿媒體管線924路徑而行。通常,用于媒體管線924的編程的特定使用和方式取決于將要被執行的媒體或計算操作。在媒體解碼期間,可以將特定媒體解碼操作推卸給媒體管線。在某些實施例中,還可以繞過媒體管線并且可以使用由一個或多個通用處理核提供的資源來完全或者部分地執行媒體解碼。在一個實施例中,媒體管線還包括用于通用圖形處理器單元(gpgpu)操作的元件,其中圖形處理器被用來使用不是顯式地與圖形圖元的渲染有關的計算著色器程序來執行simd向量操作。
在某些實施例中,以與3d管線922類似的方式來配置媒體管線924。在媒體對象命令942之前,將媒體管線狀態命令940的集合分派或者置于命令序列中。在某些實施例中,媒體管線狀態命令940包括配置將被用來處理媒體對象的媒體管線元件的數據。這包括配置媒體管線內的視頻解碼和視頻編碼邏輯的數據,諸如編碼或解碼格式。在某些實施例中,媒體管線狀態命令940還支持使用到包含批量的狀態設置的“間接”狀態元件的一個或多個指針。
在某些實施例中,媒體對象命令942將指針供應給媒體對象以用于由媒體管線處理。媒體對象包括包含有將要被處理的視頻數據的存儲器緩沖器。在某些實施例中,在發出媒體對象命令942之前,所有媒體管線狀態必須是有效的。一旦配置了管線狀態并且使媒體對象命令942排隊,就借助于執行命令944或等同的執行事件(例如,寄存器寫入)來觸發媒體管線924。接著可以通過由3d管線922或媒體管線924提供的操作來后處理來自媒體管線924的輸出。在某些實施例中,以與媒體操作類似的方式配置和執行gpgpu操作。
圖19說明了根據某些實施例的數據處理系統1000的示范的圖形軟件體系結構。在某些實施例中,軟件體系結構包括3d圖形應用1010、操作系統1020和至少一個處理器1030。在某些實施例中,處理器1030包括圖形處理器1032和一個或多個通用處理器核1034。圖形應用1010和操作系統1020各自在數據處理系統的系統存儲器1050中執行。
在某些實施例中,3d圖形應用1010包含包括有著色器指令1012的一個或多個著色器程序。著色器語言指令可以是以高級著色器語言,諸如高級著色器語言(hlsl)或opengl著色器語言(glsl)。應用還包括適合于由通用處理器核1034執行的機器語言中的可執行指令1014。應用還包括通過頂點數據定義的圖形對象1016。
在某些實施例中,操作系統1020是來自microsoft公司的microsoft?windows?操作系統、私有的類unix操作系統、或者使用linux內核的變體的開源類unix操作系統。當direct3dapi在使用中時,操作系統1020使用前端著色器編譯器1024來將hlsl中的任何著色器指令1012編譯成更低級著色器語言。編譯可以是即時(jit)編譯或者應用可以執行著色器預編譯。在某些實施例中,在3d圖形應用1010的編譯期間,將高級著色器編譯成低級著色器。
在某些實施例中,用戶模式圖形驅動器1026包含將著色器指令1012轉換成硬件特定的表示的后端著色器編譯器1027。當openglapi在使用中時,將以glsl高級語言的著色器指令1012傳遞到用戶模式圖形驅動器1026以用于編譯。在某些實施例中,用戶模式圖形驅動器1026使用操作系統內核模式功能1028來與內核模式圖形驅動器1029通信。在某些實施例中,內核模式圖形驅動器1029與圖形處理器1032通信以分派命令和指令。
可以通過存儲在機器可讀介質上的表示和/或定義集成電路(諸如處理器)內的邏輯的代表性代碼來實現至少一個實施例的一個或多個方面。例如,機器可讀介質可以包括表示處理器內的各種邏輯的指令。當通過機器讀取時,指令可以促使機器制作執行本文描述的技術的邏輯。被稱為“ip核”的這樣的表示是用于集成電路的邏輯的可重復使用單元,其可以作為描述集成電路的結構的硬件模型被存儲在有形的機器可讀介質上。可以將硬件模型供應給將硬件模型加載到制造集成電路的制作機器上的各種顧客或制造設施。可以制作集成電路使得電路執行與本文描述的實施例中的任何實施例相關聯而描述的操作。
圖20是說明可以被用來制造執行根據實施例的操作的集成電路的ip核開發系統1100的框圖。ip核開發系統1100可以被用來生成可以被并入更大設計的模塊化的可重復使用設計或者被用來建造整個集成電路(例如,soc集成電路)。設計設施1130可以以高級編程語言(例如,c/c++)生成ip核設計的軟件模擬1110。軟件模擬1110可被用來設計、測試和驗證ip核的行為。接著可以由模擬模型1100創建或者合成寄存器傳送級(rtl)設計。rtl設計1115是對硬件寄存器之間的數字信號流建模的集成電路的行為的抽象,包括使用建模的數字信號執行的關聯的邏輯。除了rtl設計1115之外,還可以創建、設計或者合成邏輯級或者晶體管級的更低級設計。因此,初始設計和模擬的特定細節可以變化。
可以通過設計設施來將rtl設計1115或者等同物進一步合成為可以是以硬件描述語言(hdl)或者物理設計數據的某個其它表示的硬件模型1120。可以進一步模擬或者測試hdl以驗證ip核設計。可以使用非易失性存儲器1140(例如,硬盤、閃速存儲器或者任何非易失性存儲介質)來存儲ip核設計以用于傳遞到第3方制作設施1165。備選地,可以通過有線連接1150或者無線連接1160傳輸(例如,經由互聯網)ip核設計。制作設施1165可以接著制作至少部分基于ip核設計的集成電路。制作的集成電路可以被配置成執行根據本文描述的至少一個實施例的操作。
圖21是說明根據實施例的可以使用一個或多個ip核來制作的示范的片上系統集成電路1200的框圖。示范的集成電路包括一個或多個應用處理器1205(例如,cpu)、至少一個圖形處理器1210并且可以另外地包括圖像處理器1215和/或視頻處理器1220,其中的任何一個可以是來自相同或者多個不同設計設施的模塊化ip核。集成電路包括外圍設備或者總線邏輯,其包括usb控制器1225、uart控制器1230、spi/sdio控制器1235和i2s/i2c控制器1240。另外,集成電路可以包括耦合至移動行業處理器接口(mipi)顯示器接口1255和高清多媒體接口(hdmi)控制器1250中的一個或多個的顯示器設備1245。可以通過包括閃速存儲器和閃速存儲器控制器的閃速存儲器子系統1260來提供存儲。可以經由存儲器控制器1265來提供存儲器接口以用于訪問sdram或sram存儲器設備。某些集成電路另外地包括嵌入式安全引擎1270。
另外,其它邏輯和電路可以被包括在集成電路1200的處理器中,包括附加的圖形處理器/核、外圍接口控制器或者通用處理器核。
下面的條款和/或示例屬于另外的實施例:
一個示例實施例可以是一種方法,包括提供耦合至處理器的近存儲器和遠存儲器,其中所述近存儲器比所述遠存儲器更快并且所述近存儲器被所述遠存儲器支持,使用編解碼器壓縮將要被存儲在所述近存儲器中的數據,壓實所述壓縮的數據,以及存儲所述壓實的數據使得所述壓縮且壓實的數據的占用比壓實之前的壓縮的數據的占用更少。所述方法還可以包括在將壓縮的數據存入近存儲器之前壓實。所述方法還可以包括將多個高速緩沖存儲器線路的塊一起壓實為可尋址組。所述方法還可以包括在所述編解碼器和所述近存儲器之間提供緩沖器,所述緩沖器用來為所述編解碼器存儲壓縮的數據,使得所述緩沖器中的所述壓縮的數據與來自編解碼器的壓縮的數據相比具有更小的占用。所述方法還可以包括確定是否可以將多個高速緩沖存儲器線路作為連續塊來存儲,并且如果是這樣的話,在近存儲器中連續存儲所述塊。所述方法還可以包括將所述塊作為高速緩沖存儲器線路大小的整數倍存儲在近存儲器中。所述方法還可以包括提供如存儲的所述塊被壓實的指示。所述方法還可以包括通過下列操作來從所述近存儲器中讀取數據:由所述指示來確定所述塊是否被壓實并且如果是這樣的話,解壓實所述塊并且將所述解壓實的組塊作為高速緩沖存儲器線路大小的整數倍存儲在所述緩沖器中。所述方法還可以包括在近存儲器中壓實所述數據。所述方法還可以包括響應于需要空閑的存儲器的指示而壓實。所述方法還可以包括壓實所選擇的范圍的存儲頁面。所述方法還可以包括將壓實的范圍的頁面地址存儲在地址翻譯表中。所述方法還可以包括存儲所述范圍的頁面已經被壓實的指示。所述方法還可以包括使用可以在任意時間點運行的獨立軟件來壓實。所述方法還可以包括將壓實的和未壓實的壓縮的數據兩者存儲在近存儲器中。所述方法還可以包括在寫到所述近存儲器時壓縮接著解壓實以及通過解壓實接著解壓縮來讀取數據。
另一個示例實施例可以是存儲被處理器執行來執行序列的指令的一個或多個非暫時性計算機可讀媒體,所述序列包括提供耦合至處理器的近存儲器和遠存儲器,其中所述近存儲器比所述遠存儲器更快并且所述近存儲器被所述遠存儲器支持,使用編解碼器壓縮將要被存儲在所述近存儲器中的數據,壓實所述壓縮的數據,以及存儲所述壓實的數據使得所述壓縮且壓實的數據的占用比壓實之前的壓縮的數據的占用更少。所述媒體可以包括所述序列,所述序列包括在將壓縮的數據存儲在近存儲器中之前壓實。所述媒體可以包括所述序列,所述序列包括將多個高速緩沖存儲器線路的塊一起壓實為可尋址組。所述媒體可以包括所述序列,所述序列包括在所述編解碼器和所述近存儲器之間提供緩沖器,所述緩沖器用來為所述編解碼器存儲壓縮的數據,使得所述緩沖器中的所述壓縮的數據與來自編解碼器的壓縮的數據相比具有更小的占用。所述媒體可以包括確定是否可以將多個高速緩沖存儲器線路作為連續塊來存儲,并且如果是這樣的話,將所述塊連續存儲在近存儲器中。所述媒體可以包括所述序列,所述序列包括將所述塊作為高速緩沖存儲器線路大小的整數倍存儲在近存儲器中。所述媒體可以包括所述序列,所述序列包括提供如存儲的所述塊被壓實的指示。所述媒體可以包括所述序列,所述序列包括通過下列操作來從所述近存儲器讀取數據:由所述指示來確定所述塊是否被壓實并且如果是這樣的話,解壓實所述塊并且將所述解壓實的組塊作為高速緩沖存儲器線路大小的整數倍存儲在所述緩沖器中。
在另一個示例實施例中可以是一種裝置,所述裝置包括處理器、耦合至處理器的近存儲器和遠存儲器,其中所述近存儲器比所述遠存儲器更快并且所述近存儲器被所述遠存儲器支持,所述裝置包括編解碼器,所述編解碼器用來壓縮將要被存儲在所述近存儲器中的數據,并且所述處理器用來壓實所述壓縮的數據并且存儲所述壓實的數據,使得所述壓縮且壓實的數據的占用比壓實之前的壓縮的數據的占用更少。所述裝置可以包括所述編解碼器以在將壓縮的數據存儲在近存儲器中之前壓實。所述裝置可以包括所述編解碼器以將多個高速緩沖存儲器線路的塊一起壓實為可尋址組。所述裝置可以包括所述編解碼器和所述近存儲器之間的緩沖器,所述緩沖器為所述編解碼器存儲壓縮的數據,使得所述緩沖器中的所述壓縮的數據與來自編解碼器的壓縮的數據相比具有更小的占用。所述裝置可以包括所述處理器以確定是否可以將多個高速緩沖存儲器線路作為連續塊來存儲,并且如果是這樣的話,將所述塊連續存儲在近存儲器中。所述裝置可以包括所述處理器以將所述塊作為高速緩沖存儲器線路大小的整數倍存儲在近存儲器中。
可以在各種硬件體系結構中實現本文描述的圖形處理技術。例如,可以將圖形功能性集成到芯片集內。備選地,可以使用離散的圖形處理器。作為又一個實施例,可以通過包括多核處理器的通用處理器來實現圖形功能。
整個本說明書提及“一個實施例”或者“實施例”意味著與實施例有關地描述的特定特征、結構或特性被包括在本公開內包含的至少一個實現中。因此,短語“一個實施例”或者“在實施例中”的出現不必指相同的實施例。此外,可以以除所說明的特定實施例之外的其它合適的形式來設立特定的特征、結構或特性并且所有這樣的形式可以被包含在本申請的權利要求內。
雖然已經描述了有限數量的實施例,但是本領域技術人員將會從中意識到許多的修改和變化。意圖是所附的權利要求覆蓋了屬于本公開的真實精神和范圍的所有這樣的修改和變化。