本發明涉及圖形處理,且更具體地說,涉及用于以圖形處理器執行存儲器傳送操作的技術。
背景技術:圖形處理單元(GPU)常常在計算裝置中使用以處置和/或提供用于顯示圖形圖像所需的操作中的一或多者的硬件加速。GPU通常處置的一類操作是存儲器傳送操作。存儲器傳送操作可包含存儲器復制操作和組構操作。在一些實例中,存儲器傳送操作可被稱為傳圖(blit)操作或BLT操作(即,位塊傳送操作)。執行這些存儲器傳送操作可涉及相對于存儲用于存儲器傳送操作的源和目的地數據的芯片外存儲器執行大量讀取和寫入操作。
技術實現要素:本發明描述用于基于可選存儲器傳送模式以圖形處理單元(GPU)執行存儲器傳送操作的技術,以及用于選擇用于以GPU執行存儲器傳送操作的全部或部分的存儲器傳送模式的技術。在一些實例中,用于執行存儲器傳送操作的技術可使用經配置以在使用交錯存儲器傳送模式與順序存儲器傳送模式之間選擇性切換以用于執行存儲器傳送操作的全部或部分的GPU。交錯存儲器傳送模式可致使GPU基于生產者-消費者范例執行存儲器傳送操作,其中讀取請求和寫入請求彼此交錯。順序存儲器傳送模式可致使GPU執行存儲器傳送操作以使得GPU在發出多個連續讀取請求的群組與多個連續寫入請求的群組之間交替。在額外實例中,用于選擇存儲器傳送模式的技術可使用主機處理器(例如,CPU)和/或GPU來基于一或多個準則選擇存儲器傳送模式以用于存儲器傳送操作的全部或部分。在一個實例中,本發明描述一種方法,其包含以一或多個處理器選擇用于執行存儲器傳送操作的至少部分的存儲器傳送模式。所述存儲器傳送模式可選自包含交錯存儲器傳送模式和順序存儲器傳送模式的至少兩個不同存儲器傳送模式的集合。所述方法進一步包含以GPU基于所述選定存儲器傳送模式執行所述存儲器傳送操作。在另一個實例中,本發明描述一種裝置,其包含經配置以選擇用于執行存儲器傳送操作的至少部分的存儲器傳送模式的一或多個處理器。所述存儲器傳送模式可選自包含交錯存儲器傳送模式和順序存儲器傳送模式的至少兩個不同存儲器傳送模式的集合。所述裝置進一步包含經配置以基于所述選定存儲器傳送模式執行所述存儲器傳送操作的GPU。在另一個實例中,本發明描述一種設備,其包含用于選擇用于執行存儲器傳送操作的至少部分的存儲器傳送模式的裝置。所述存儲器傳送模式可選自包含交錯存儲器傳送模式和順序存儲器傳送模式的至少兩個不同存儲器傳送模式的集合。所述設備進一步包含用于基于所述選定存儲器傳送模式執行所述存儲器傳送操作的裝置。在另一個實例中,本發明描述一種計算機可讀存儲媒體,其存儲當被執行時致使一或多個處理器選擇用于執行存儲器傳送操作的至少部分的存儲器傳送模式的指令。所述存儲器傳送模式可選自包含交錯存儲器傳送模式和順序存儲器傳送模式的至少兩個不同存儲器傳送模式的集合。所述計算機可讀存儲媒體進一步存儲當被執行時致使一或多個處理器基于所述選定存儲器傳送模式執行所述存儲器傳送操作的指令。在附圖和下文描述中闡述本發明的一或多個實例的細節。本發明的其它特征、目標和優點將從所述描述和圖式以及權利要求書而顯而易見。附圖說明圖1是說明可用以實施本發明的多模式存儲器傳送技術和本發明的存儲器傳送模式選擇技術的實例計算裝置的框圖。圖2是進一步詳細說明圖1中的計算裝置的CPU、GPU和存儲器子系統的框圖。圖3是說明圖2中所示的實例配置中可使用的實例存儲器子系統的框圖。圖4是說明圖2中所示的實例配置中可使用的另一實例存儲器子系統的框圖。圖5是說明根據本發明的實例單個源存儲器傳送操作的概念圖。圖6是說明根據本發明的實例多源存儲器傳送操作的概念圖。圖7是說明根據本發明的實例GPU輔助的單個源存儲器傳送操作的概念圖。圖8是說明根據本發明的實例GPU輔助的多源存儲器傳送操作的概念圖。圖9A和9B是說明根據本發明的交錯存儲器傳送模式執行的單個源存儲器傳送操作的實例時序特性的時序圖。圖10是說明根據本發明的順序存儲器傳送模式執行的單個源存儲器傳送操作的實例時序特性的時序圖。圖11A和11B是說明根據本發明的交錯存儲器傳送模式執行的多源存儲器傳送操作的實例時序特性的時序圖。圖12是說明根據本發明的順序存儲器傳送模式執行的多源存儲器傳送操作的實例時序特性的時序圖。圖13是說明用于根據本發明的交錯存儲器傳送技術執行存儲器傳送操作的實例技術的流程圖。圖14是說明用于根據本發明的交錯同步模式發出讀取請求的實例技術的流程圖。圖15是說明用于根據本發明的交錯同步模式發出寫入請求的實例技術的流程圖。圖16是說明用于根據本發明的順序存儲器傳送技術執行存儲器傳送操作的實例技術的流程圖。圖17是說明用于根據本發明的順序同步模式發出讀取請求的實例技術的流程圖。圖18是說明用于根據本發明的順序同步模式發出寫入請求的實例技術的流程圖。圖19是說明用于根據本發明的順序存儲器傳送模式執行存儲器傳送操作的實例技術的流程圖。圖20是說明根據本發明的用于執行存儲器傳送操作的實例技術的流程圖。圖21和22是說明根據本發明的用于選擇用于執行存儲器傳送操作的存儲器傳送模式的實例技術的流程圖。圖23是說明根據本發明的具有多個屏幕對準緩沖區和一目的地表面的屏幕的概念圖。圖24到26是說明根據本發明的用于選擇用于執行存儲器傳送操作的存儲器傳送模式的實例技術的流程圖。圖27是說明根據本發明的用于執行存儲器傳送操作的實例技術的流程圖。具體實施方式本發明描述用于基于可選存儲器傳送模式以圖形處理單元(GPU)執行存儲器傳送操作的技術,以及用于選擇用于以GPU執行存儲器傳送操作的全部或部分的存儲器傳送模式的技術。在一些實例中,用于執行存儲器傳送操作的技術可使用經配置以在使用交錯存儲器傳送模式與順序存儲器傳送模式之間選擇性切換以用于執行存儲器傳送操作的全部或部分的GPU。交錯存儲器傳送模式可致使GPU基于生產者-消費者范例執行存儲器傳送操作,其中讀取請求和寫入請求彼此交錯。順序存儲器傳送模式可致使GPU執行存儲器傳送操作以使得GPU在發出多個連續讀取請求的群組與多個連續寫入請求的群組之間交替。在額外實例中,用于選擇存儲器傳送模式的技術可使用主機處理器(例如,CPU)和/或GPU來基于一或多個準則選擇存儲器傳送模式以用于存儲器傳送操作的全部或部分。不同存儲器傳送模式對于不同類型的存儲器傳送操作可比其它存儲器傳送模式更有效。舉例來說,順序存儲器傳送模式對于較大存儲器傳送操作可比交錯存儲器傳送模式大體上更有效,而交錯存儲器傳送模式在一些情況下對于較小存儲器傳送操作可比順序存儲器傳送模式更有效,具體來說是在其中在順序存儲器傳送模式期間每讀取請求存取的數據的最小量較大的情況下。本發明的技術可用以選擇性使用較適合于特定類型的存儲器傳送操作的不同存儲器傳送模式,進而改善GPU的存儲器傳送操作的性能。存儲器傳送操作可包含存儲器復制操作和組構操作。在一些實例中,存儲器傳送操作可被稱為傳圖(即,位塊傳送)操作。存儲器復制操作可涉及將數據從源表面的源區復制到目的地表面的目的地區。也就是說,GPU可從源表面的源區讀取數據且將所述源表面的源區中含有的數據的精確復制品寫入到目的地表面的目的地區。組構操作可涉及以某種方式組合相同或不同源表面的至少兩個不同源區,且將源區的組合寫入到目的地表面的目的地區。在一些情況下,源表面中的一或多者可為與用于組構操作的目的地表面相同的表面。舉例來說,組構操作可涉及讀數單個源區和單個目的地區,將所述兩者摻合在一起,且將所摻合結果寫入回到目的地區。在一些實例中,當執行組構操作時,可根據光柵操作組合不同源區,其對于組構操作的不同實例可不同。光柵操作可為指定針對特定組構操作應如何組合位的操作。在一些實例中,光柵操作可包含逐位運算,例如布爾型邏輯運算。布爾型邏輯運算可包含例如逐位AND、OR、NOT和/或XOR運算。在額外實例中,光柵操作可包含摻合操作(例如,α摻合操作)。在一些實例中,摻合操作可指定在摻合操作的執行期間將使用的源像素乘數和目的地像素乘數。在此些實例中,在摻合操作的執行期間,源像素值(例如,源像素顏色值和/或源像素α值)可乘以源像素乘數以產生第一乘積,對應目的地像素值(例如,目的地像素顏色值和/或目的地像素α值)可乘以目的地像素乘數以產生第二乘積,且可將兩個乘積的總和相加在一起以產生像素位置的目的地值。其它類型的摻合操作也是可能的。在其它實例中,不同源區可根據在GPU上執行的著色器程序而組合。存儲器傳送操作中使用的源和目的地表面可為相同或不同表面,且可各自對應于像素數據的二維陣列。像素數據可包含紅、綠、藍(RGB)顏色值,且在一些情況下,包含用于表面中的每一像素的α值(A)。因為所述表面對應于像素數據的二維陣列,所以表面中的個別像素位置的像素數據可通過行和列坐標來尋址。存儲器傳送操作中使用的源區中的每一者可對應于相應源表面的全部或子集。類似地,存儲器傳送操作中使用的目的地區可對應于目的地表面的全部或子集。源和目的地區可為相同的大小和形狀,且通常但不一定是矩形形狀區。當GPU執行存儲器傳送操作時,用于存儲器傳送操作的源表面和目的地表面通常存儲在芯片外存儲器中。換句話說,存儲器可形成于、定位于和/或安置于微芯片、集成電路和/或不同于所述微芯片、集成電路的裸片和/或其上形成、定位和/或安置GPU的裸片上。存儲器可經由一或多個總線且在一些情況下經由存儲器控制器以通信方式耦合到GPU。當執行存儲器復制操作時,GPU可從源區中的像素位置中的每一者讀取數據且將從源區讀取的數據寫入到目的地區中的對應像素位置。類似地,組構操作的執行可涉及從多個源區中的位置中的每一者讀數數據,組合所述數據,且將組合數據寫入到目的地區。因此單個存儲器傳送操作可涉及由GPU經由一或多個總線將大量讀取請求和大量寫入請求發出到芯片外存儲器。為了執行用于存儲器傳送操作的存儲器讀取和寫入操作,在一些實例中,GPU可使用讀取引擎和寫入引擎。讀取引擎可處置用于存儲器傳送操作的讀取請求的發出,且寫入引擎可處置用于存儲器傳送操作的寫入請求的發出。當使用交錯存儲器傳送模式執行存儲器傳送操作時,讀取和寫入引擎可利用生產者-消費者類型的同步,其中讀取客戶端發出初始量的讀取請求,且在響應于讀取請求接收到源數據之后寫入客戶端可即刻消耗所述數據且發出對應寫入請求到存儲器。在消耗源數據之后,讀取引擎可即刻繼續發出后續讀取請求。讀取與寫入引擎之間的此類型的寬松同步可致使讀取和寫入流變為彼此混合和/或交錯的。因此,當基于交錯存儲器傳送模式執行存儲器傳送操作時,存儲器和總線在服務于讀取請求與服務于寫入請求之間頻繁地切換。對于一些類型的存儲器,例如雙數據速率同步動態隨機存取存儲器(DDRSDRAM),一定量的處理時間開銷可與存儲器和/或總線需要在服務于讀取操作與服務于寫入操作之間切換的每一時間相關聯。舉例來說,每次在服務于讀取與寫入請求之間發生切換時,在總線改變方向之前可需要特定量的空閑時間來使總線穩定。此處理時間開銷可被稱為讀取-寫入周轉時間。作為另一實例,如果讀取和寫入流存取存儲器的不同頁,那么每次在服務于讀取與寫入請求之間發生切換時存儲器可需要打開和關閉存儲器的不同頁和/或組,進而對讀取-寫入切換添加額外處理時間開銷。存儲器傳送操作,例如組構和傳圖操作,常常是存儲器受限的。也就是說,執行此些操作需要的存儲器讀取和寫入請求常常變成GPU的性能瓶頸。因此,導致讀取與寫入請求的服務之間的大量切換的讀取-寫入引擎同步方案可不僅減少GPU的存儲器存取效率,而且還可減少總存儲器傳送操作的性能。本發明中描述的順序存儲器傳送模式可用以例如通過在單獨的時間間隔期間將多個連續讀取請求的序列和多個連續寫入請求的序列發出到存儲器而減少當在GPU中執行存儲器傳送操作時發生的讀取-寫入周轉開銷。因為讀取和寫入請求是在單獨的時間間隔期間在多個連續請求的群組中發出,所以系統存儲器和/或總線可需要在服務于讀取與寫入請求之間切換的次數可減少,進而減少存儲器傳送操作的讀取-寫入周轉開銷。對于相對大的存儲器傳送操作,由順序存儲器傳送模式提供的減少的讀取-寫入周轉開銷可致使順序存儲器傳送模式在執行存儲器傳送操作時比交錯存儲器傳送模式更有效。然而,對于較小存儲器傳送操作,執行順序存儲器傳送模式中的同步所需要的額外開銷在一些情況下可能超越了減少讀取-寫入周轉開銷的益處。此外,在其中在順序存儲器傳送模式期間針對讀取請求從存儲器傳送到GPU的數據的最小量與存儲器傳送操作(例如,BLT操作)的大小相比相對大的情況下,順序存儲器傳送模式可致使從存儲器讀取額外的數據,進而減少存儲器傳送操作的性能。根據本發明的技術提供在用于特定存儲器傳送操作或其部分的順序存儲器傳送模式與交錯存儲器傳送模式之間選擇性切換的能力可允許GPU選擇性地在其中此模式的益處不被其它因素超過和/或減少的情況下使用順序存儲器傳送模式來增加存儲器效率,且在其中順序存儲器傳送模式的益處被其它因素超過和/或減少的情況下使用交錯存儲器傳送模式。通過允許GPU選擇性使用較好地適合于特定類型(例如,大小)的存儲器傳送操作的不同存儲器傳送模式,本發明的技術可能夠改善執行多種不同類型的存儲器傳送操作的GPU的總性能。在一些實例中,在應用程序處理器上執行的GPU和/或GPU驅動器可基于存儲器傳送操作的大小選擇用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。存儲器傳送操作的大小可指代存儲器傳送操作將傳送的數據的量。舉例來說,如果存儲器傳送操作的大小大于閾值,那么GPU和/或GPU驅動器可將順序存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。作為另一實例,如果存儲器傳送操作的大小不大于閾值,那么GPU和/或GPU驅動器可將交錯存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。在額外實例中,在應用程序處理器上執行的GPU和/或GPU驅動器可基于針對存儲器傳送操作界定的目的地區與固定屏幕對準緩沖區具有的重疊的量而選擇用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。在一些情況下,表面可對應于顯示監視器或屏幕上含有的像素。屏幕可經細分為多個區,其各自具有對應于用以存儲所讀取數據的緩沖器的大小的固定大小。這些經細分區可被稱為固定屏幕對準緩沖區。在此些實例中,當在順序存儲器傳送模式中操作時,GPU可經配置以在對應于固定屏幕對準緩沖區的大小的固定大小的數據單元中在存儲器與GPU之間傳送數據。如果目的地區部分地但不完全地覆蓋特定的固定屏幕對準緩沖區,那么GPU和/或GPU驅動器可將交錯存儲器傳送模式選擇為用于屏幕的所述區的存儲器傳送模式,因為其中將存儲讀取數據的緩沖器將不會完全利用。如果在此情況下選定順序存儲器模式,那么固定大小存儲器讀取將致使從存儲器讀取額外的數據,這可超越通過使用順序存儲器傳送模式將發生的任何讀取-寫入周轉節省。另一方面,如果目的地區完全覆蓋特定的固定屏幕對準緩沖區,那么GPU和/或GPU驅動器可將順序存儲器傳送模式選擇為用于屏幕的所述區的存儲器傳送模式,因為其中將存儲讀取數據的緩沖器將完全利用且將不浪費時間檢索額外的數據。在其它實例中,在應用程序處理器上執行的GPU和/或GPU驅動器可基于用以執行存儲器傳送操作(例如,組構操作)的著色器程序的大小和/或復雜性而選擇用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。著色器程序的大小和/或復雜性可指示用于特定存儲器傳送操作的著色器操作的性能是否可能為存儲器傳送操作的性能瓶頸。在此些實例中,如果著色器程序的大小和/或復雜性小于閾值,那么GPU和/或GPU驅動器可確定著色器操作的性能不大可能為存儲器傳送操作的性能瓶頸。在此情況下,GPU和/或GPU驅動器可選擇用于存儲器傳送操作的順序存儲器傳送模式,因為有可能存儲器存取效率可為存儲器傳送操作的性能瓶頸。另一方面,如果著色器程序的大小和/或復雜性大于閾值,那么GPU和/或GPU驅動器可確定著色器操作的性能可能為存儲器傳送操作的性能瓶頸。在此情況下,GPU和/或GPU驅動器可選擇用于存儲器傳送操作的交錯存儲器傳送模式,因為存儲器效率的增加是不需要的且因為在順序存儲器傳送模式中發生的讀取操作的延期可能具有使著色器程序耗盡數據的可能,這在著色器程序是性能瓶頸的情況下通常是不合意的。在額外實例中,GPU可基于選定存儲器傳送模式選擇和配置用于高速緩沖存儲器的高速緩沖存儲線大小。高速緩沖存儲器可對應于GPU中的其中存儲讀取數據的緩沖器。在此些實例中,如果存儲器傳送模式是順序存儲器傳送模式,那么GPU可選擇等于高速緩沖存儲器的整個容量的高速緩沖存儲線大小以便允許讀取和寫入操作的盡可能大的分組。另一方面,如果存儲器傳送模式是交錯存儲器傳送模式,那么GPU可選擇小于高速緩沖存儲器的整個容量的高速緩沖存儲線大小以便允許當服務于交錯請求時同時高速緩沖存儲多個數據區。根據本發明的一些方面,描述用于用信號表示將由GPU使用用于執行存儲器傳送操作的存儲器傳送模式的技術。所述信令技術可允許在主機應用程序處理器上執行的GPU驅動器和/或用戶應用程序控制用于執行存儲器傳送操作的存儲器傳送模式。在一些實例中,指定存儲器傳送模式的信息字段可添加到經配置以由GPU執行的一或多個現有GPU命令。所述信息字段在一些情況下可為指定將用于與指令相關聯的存儲器傳送操作的存儲器傳送模式的單個模式位。舉例來說,圖形驅動器可通過對GPU指定源和目的地存儲器區且通過發出(三維)3D繪制調用指令到GPU而服務于用戶層級傳圖命令。3D繪制調用指令可包含指示在3D繪制調用指令的執行期間將使用的存儲器傳送模式的模式位。GPU可經配置以基于指令中指定的存儲器傳送模式執行存儲器傳送操作。在額外實例中,GPU可包含指定將用于執行存儲器傳送操作的存儲器傳送模式的存儲器傳送模式狀態變量。在此些實例中,GPU命令(例如,從GPU驅動器發出到GPU的命令)可用以將存儲器傳送模式狀態變量的狀態編程到指示將用于執行存儲器傳送操作的存儲器傳送模式的值。GPU可經配置以基于存儲器傳送模式狀態變量的狀態執行存儲器傳送操作。在其它實例中,存儲器傳送模式可為作為GPU命令流的部分而經修改的GPU狀態的部分。GPU命令流可包含到由一或多個GPU著色器處理器執行的代碼的狀態寄存器設定命令以及指令(或指令指針)。在額外實例中,指令可添加到用于GPU驅動器的應用程序編程接口(API)。指令可包含存儲器傳送模式指示符,其指示將用于執行存儲器傳送操作的存儲器傳送模式。GPU驅動器可經配置以致使GPU基于存儲器傳送模式指示符執行存儲器傳送操作。以此方式,用戶應用程序可能夠指定當執行存儲器傳送操作時由GPU使用的存儲器傳送模式。圖1是說明可用以實施本發明的多模式存儲器傳送技術和本發明的存儲器傳送模式選擇技術的實例計算裝置2的框圖。計算裝置2可包括個人計算機、桌上型計算機、膝上型計算機、計算機工作站、視頻游戲平臺或控制臺、無線通信裝置(例如,移動電話、蜂窩式電話、衛星電話和/或移動電話手持機)、陸線電話、因特網電話、手持式裝置(例如,便攜式視頻游戲裝置或個人數字助理(PDA))、個人音樂播放器、視頻播放器、顯示裝置、電視、電視機頂盒、服務器、中間網絡裝置、主機計算機、或處理及/或顯示圖形數據的任何其它類型的裝置。如圖1的實例中所示,計算裝置2包含用戶接口4、CPU6、存儲器子系統8、圖形處理單元(GPU)10、GPU高速緩沖存儲器12、顯示器接口14、顯示器16和總線18。用戶接口4、CPU6、存儲器子系統8、GPU10和顯示器接口14可使用總線18彼此通信。應注意圖1中所示的不同組件之間的總線和通信接口的特定配置僅是示范性的,且具有相同或不同組件的計算裝置和/或其它圖形處理系統的其它配置可用以實施本發明的技術。CPU6可包括控制計算裝置2的操作的通用或專用處理器。用戶可將輸入提供到計算裝置2以致使CPU6執行一或多個軟件應用程序。在CPU6上執行的軟件應用可包含(例如)操作系統、字處理器應用、電子郵件應用、電子數據表應用、媒體播放器應用、視頻游戲應用、圖形用戶接口應用或另一程序。用戶可經由一或多個輸入裝置(未圖示)(例如,鍵盤、鼠標、麥克風、觸摸墊或經由用戶接口4耦合到計算裝置2的另一輸入裝置)將輸入提供到計算裝置2。在CPU6上執行的軟件應用程序可包含指示GPU10致使圖形數據到顯示器16的再現的一或多個圖形再現指令。在一些實例中,軟件指令可符合圖形應用程序編程接口(API),例如開放圖形庫()API、開放圖形庫嵌入系統(OpenGLES)API、Direct3DAPI、DirectXAPI、RenderManAPI、WebGLAPI或任何其它公眾或專有標準圖形API。為了處理圖形再現指令,CPU6可將一或多個圖形再現命令發出到GPU10以致使GPU10執行圖形數據的再現的一些或全部。在一些實例中,將再現的圖形數據可包含例如點、線、三角形、四邊形、三角形帶、片等圖形基元的列表。存儲器子系統8可經配置以服務于從計算裝置2內的其它組件接收的存儲器存取請求。舉例來說,存儲器子系統8可服務于來自CPU6、GPU10和/或顯示器接口14的存儲器存取請求。存儲器存取請求可包含讀取存取請求和寫入存取請求。存儲器子系統8經由總線18以通信方式耦合到CPU6、GPU10、用戶接口4和顯示器接口14。存儲器子系統8包含存儲器控制器20和存儲器22。存儲器控制器20促進進出存儲器22的數據的傳送。舉例來說,存儲器控制器20可接收來自CPU6和/或GPU10的存儲器讀取請求和存儲器寫入請求,且相對于存儲器22服務于此些請求以便為計算裝置2中的組件提供存儲器服務。讀取請求可指定返回到請求者的數據應來自的存儲器地址或存儲地址范圍。寫入請求可指定指定數據應寫入到的存儲器地址或存儲地址范圍。待寫入的數據可結合寫入請求由請求者(例如,CPU6和/或GPU10)經由一或多個數據總線供應到存儲器控制器20。在一些實例中,待寫入數據可形成寫入請求的部分。響應于接收到存儲器存取請求,存儲器控制器20可發出一或多個讀取命令到存儲器22和/或發出一或多個寫入命令到存儲器22以服務于讀取和寫入請求。存儲器控制器20經由專用存儲器總線以通信方式耦合到存儲器22,且經由總線18耦合到其它組件(例如,CPU6和GPU10)。雖然存儲器控制器20在圖1的實例計算裝置2中說明為與CPU6和存儲器22兩者分開的處理模塊,但在其它實例中,存儲器控制器20的功能性中的一些或全部可在CPU6、GPU10和存儲器22中的一或多者中實施。存儲器22可存儲可由CPU6存取以用于執行的程序模塊及/或指令及/或由在CPU6上執行的程序使用的數據。舉例來說,存儲器22可存儲用戶應用程序及與所述應用程序相關聯的圖形數據。存儲器22還可存儲用于由計算裝置2的其它組件使用和/或由其產生的信息。舉例來說,存儲器22可充當用于GPU10的裝置存儲器且可存儲將在GPU10上操作的數據以及由GPU10執行的操作而產生的數據。舉例來說,存儲器22可存儲表面、源表面、目的地表面、紋理緩沖器、深度緩沖器、模板緩沖器、頂點緩沖器、幀緩沖器或類似物的任何組合。另外,存儲器22可存儲用于由GPU10處理的命令流。存儲器22可包含一或多個易失性或非易失性存儲器或存儲裝置,例如隨機存取存儲器(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、同步動態隨機存取存儲器(SDRAM)、只讀存儲器(ROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、快閃存儲器、磁性數據媒體或光學存儲媒體。在一些實例中,存儲器22可為雙數據速率(DDR)SDRAM,例如DDR1SDRAM、DDR2SDRAM、DDR3SDRAM、DDR4SDRAM等。GPU10可經配置以執行由CPU6發出到GPU10的命令。由GPU10執行的命令可包含圖形命令、繪制調用命令、GPU狀態編程命令、存儲器傳送命令、通用計算命令、核心執行命令等。存儲器傳送命令可包含例如存儲器復制命令、存儲器組構命令和傳圖命令。在一些實例中,GPU10可經配置以執行圖形操作以將一或多個圖形基元再現到顯示器16。在此等實例中,當在CPU6上執行的軟件應用程序中的一者需要圖形處理時,CPU6可將圖形數據提供到GPU10用于向顯示器16再現且將一或多個圖形命令發出到GPU10。所述圖形命令可包含例如繪制調用命令、GPU狀態編程命令、存儲器傳送命令、傳圖命令等。所述圖形數據可包含頂點緩沖器、紋理數據、表面數據等。在一些實例中,CPU6可通過將命令和圖形數據寫入到可由GPU10存取的存儲器22而將命令和圖形數據提供到GPU10。在其它實例中,GPU10可經配置以執行用于CPU6上執行的應用程序的通用計算。在此等實例中,當CPU6上執行的軟件應用程序中的一者決定將計算任務卸載到GPU10時,CPU6可將通用計算數據提供到GPU10,且將一或多個通用計算命令發出到GPU10。所述通用計算命令可包含例如核心執行命令、存儲器傳送命令等。在一些實例中,CPU6可通過將命令和圖形數據寫入到可由GPU10存取的存儲器22而將命令和通用計算數據提供到GPU10。在一些情況下,GPU10可內置有高度并行的結構,其提供比CPU6對向量操作的更有效的處理。舉例來說,GPU10可包含經配置而以并行方式對多個頂點、控制點、像素和/或其它數據操作的多個處理元件。在一些情況下,GPU10的高度并行本質可允許GPU10比使用CPU6再現圖像更快地將圖形圖像(例如,GUI和二維(2D)和/或三維(3D)圖形場景)再現到顯示器16上。另外,GPU10的高度并行本質可允許GPU10比CPU6更快地處理某些類型的向量和矩陣運算以用于通用計算應用程序。在一些實例中,GPU10可集成到計算裝置2的母板中。在其它情況下,GPU10可存在于安裝在計算裝置2的母板中的端口中的圖形卡上或否則可并入在經配置以與計算裝置2交互操作的外圍裝置內。在進一步例子中,GPU10可與CPU6位于同一微芯片上從而形成芯片上系統(SoC)。GPU10可包含一或多個處理器,例如一或多個微處理器、專用集成電路(ASIC)、現場可編程門陣列(FPGA)、數字信號處理器(DSP)或其它等效的集成或離散邏輯電路。在一些實例中,GPU10可直接耦合到GPU高速緩沖存儲器12。因此,GPU10可從GPU高速緩沖存儲器12讀取數據且寫入數據到GPU高速緩沖存儲器12而不一定使用總線18。換句話說,GPU10可使用局部存儲裝置而非芯片外存儲器來局部地處理數據。此允許GPU10通過消除GPU10經由總線18讀取及寫入數據的需要而以更有效的方式操作,其中經由總線操作可經歷繁重的總線業務。然而,在一些情況下,GPU10可不包含單獨的高速緩沖存儲器,而是經由總線18利用存儲器22。GPU高速緩沖存儲器12可包含一或多個易失性或非易失性存儲器或存儲裝置,例如隨機存取存儲器(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、快閃存儲器、磁性數據媒體或光學存儲媒體。CPU6及/或GPU10可將再現的圖像數據存儲在存儲器22內所分配的幀緩沖器中。顯示器接口14可從幀緩沖器檢索數據且配置顯示器16以顯示由經再現圖像數據表示的圖像。在一些實例中,顯示器接口14可包含數/模轉換器(DAC),其經配置以將從幀緩沖器檢索的數字值轉換為可由顯示器16消耗的模擬信號。在其它實例中,顯示器接口14可將數字值直接傳遞到顯示器16以進行處理。顯示器16可包含監視器、電視、投影裝置、液晶顯示器(LCD)、等離子顯示器面板、發光二極管(LED)陣列、陰極射線管(CRT)顯示器、電子紙、表面傳導電子發射顯示器(SED)、激光電視顯示器、納米晶體顯示器或另一類型的顯示單元。顯示器16可集成在計算裝置2內。舉例來說,顯示器16可為移動電話手持機或平板計算機的屏幕。或者,顯示器16可為經由有線或無線通信鏈路而耦合到計算機裝置2的獨立裝置。舉例來說,顯示器16可為經由電纜或無線鏈路而連接到個人計算機的計算機監視器或平板顯示器。總線18可使用總線結構和總線協議的任何組合來實施,包含第一、第二和第三代總線結構和協議、共享總線結構和協議、點對點總線結構和協議、單向總線結構和協議以及雙向總線結構和協議。可用以實施總線18的不同總線結構和協議的實例包含例如超傳輸總線、InfiniBand總線、高級圖形端口總線、外圍組件互連(PCI)總線、PCI高速總線、高級微控制器總線架構(AMBA)、高級高性能總線(AHB)、AMBA高級外圍總線(APB),和AMBA高級eXentisible接口(AXI)總線。也可以使用其它類型的總線結構和協議。根據本發明,CPU6和GPU10中的一者或兩者可經配置以選擇用于執行存儲器傳送操作的至少部分的存儲器傳送模式,且GPU10可經配置以基于所述選定存儲器傳送模式執行存儲器傳送操作。存儲器傳送模式可選自至少兩個不同存儲器傳送模式的集合。在一些實例中,至少兩個不同存儲器傳送模式的集合可包含交錯存儲器傳送模式和順序存儲器傳送模式。在一些實例中,存儲器傳送模式可指示在存儲器傳送操作的執行期間讀取請求的發出和寫入請求的發出如何經同步。在此些實例中,本發明的技術可允許GPU10在用于讀取請求和寫入請求的發出的同步的至少兩個不同模式之間選擇性切換。舉例來說,如果將交錯存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,那么GPU10可致使基于生產者-消費者同步范例發出讀取請求和寫入請求。舉例來說,寫入引擎可響應于GPU10接收到源數據(例如,響應于正產生源數據)而消耗源數據,且讀取引擎可響應于源數據正由寫入引擎消耗而發出讀取請求。另一方面,如果將順序存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,那么GPU10可致使基于相互排斥同步范例發出讀取請求和寫入請求。舉例來說,GPU10可在單獨的時間間隔期間在啟用讀取引擎以發出多個連續讀取請求與啟用寫入引擎以發出多個連續寫入請求之間交替。在其它實例中,存儲器傳送模式可指示在存儲器傳送操作的執行期間讀取請求和寫入請求將交錯的粒度級別。在此些實例中,本發明的技術可允許GPU10在用于存儲器傳送操作的執行的讀取請求和寫入請求的至少兩個不同交錯粒度之間選擇性切換。舉例來說,如果將交錯存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,那么GPU10可致使讀取請求和寫入請求以相對精細粒度級別交錯。舉例來說,單個讀取請求和單個寫入請求可彼此交錯。另一方面,如果將順序存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,那么GPU10可致使讀取請求和寫入請求以相對粗糙粒度級別交錯。舉例來說,GPU10可在發出多個連續讀取請求的群組與多個連續寫入請求的群組之間交替。在額外實例中,存儲器傳送模式可指示讀取請求和寫入請求是否需要由GPU10以多個連續讀取請求的群組和多個連續寫入請求的群組發出。在此些實例中,本發明的技術可允許GPU10在以下各項之間選擇性切換:(1)要求讀取請求和寫入請求以多個連續讀取請求的群組和多個連續寫入請求的群組發出;以及(2)不要求讀取請求和寫入請求以多個連續讀取請求的群組和多個連續寫入請求的群組發出。舉例來說,如果將交錯存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,那么GPU10可不需要以多個連續讀取請求的群組和多個連續寫入請求的群組發出讀取請求和寫入請求。舉例來說,GPU10可允許讀取引擎和寫入引擎基于生產者-消費者范例獨立地發出個別存儲器請求。另一方面,如果將順序存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,那么GPU10可需要以多個連續讀取請求的群組和多個連續寫入請求的群組發出讀取請求和寫入請求。舉例來說,GPU10可在對讀取引擎準予獨占式存儲器存取以便發出多個連續讀取請求到存儲器22與對寫入引擎準予獨占式存儲器存取以便發出多個連續寫入請求到存儲器22之間交替。在一些實例中,GPU10和/或CPU6(例如,在CPU6上執行的GPU驅動器)可基于存儲器傳送操作的大小選擇用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。存儲器傳送操作的大小可指代存儲器傳送操作將傳送的數據的量。舉例來說,如果存儲器傳送操作的大小大于閾值,那么GPU10和/或CPU6可將順序存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。另一方面,如果存儲器傳送操作的大小不大于閾值,那么GPU10和/或CPU6可將交錯存儲器傳送模式選擇為將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。在額外實例中,GPU10和/或CPU6(例如,在CPU6上執行的GPU驅動器)可基于針對存儲器傳送操作界定的目的地區與固定屏幕對準緩沖區具有的重疊的量而選擇用于執行存儲器傳送操作的全部或部分的存儲器傳送模式。在一些情況下,表面可對應于顯示監視器或屏幕上含有的像素。屏幕可經細分為多個區,其各自具有對應于用以存儲所讀取數據的緩沖器的大小的固定大小。這些經細分區可被稱為固定屏幕對準緩沖區。在此些實例中,當在順序存儲器傳送模式中操作時,GPU10可經配置以在對應于固定屏幕對準緩沖區的大小的固定大小的數據單元中在存儲器22與GPU10之間傳送數據。如果目的地區部分地但不完全地覆蓋特定的固定屏幕對準緩沖區,那么GPU10和/或CPU6可將交錯存儲器傳送模式選擇為用于屏幕的所述區的存儲器傳送模式,因為其中將存儲讀取數據的緩沖器將不會完全利用。如果在此情況下選定順序存儲器模式,那么固定大小存儲器讀取將致使從存儲器讀取額外的數據,這可超越通過使用順序存儲器傳送模式將發生的任何讀取-寫入周轉節省。另一方面,如果目的地區完全覆蓋特定的固定屏幕對準緩沖區,那么GPU10和/或CPU6可將順序存儲器傳送模式選擇為用于屏幕的所述區的存儲器傳送模式,因為其中將存儲讀取數據的緩沖器將完全利用且將不浪費時間檢索額外的數據。在其它實例中,GPU10和/或CPU6(例如,在CPU6上執行的GPU驅動器)可基于用以執行存儲器傳送操作(例如,組構操作)的著色器程序的大小和/或復雜性而選擇用于執行存儲器傳送操作的存儲器傳送模式。著色器程序的大小和/或復雜性可指示用于特定存儲器傳送操作的著色器操作的性能是否可能為存儲器傳送操作的性能瓶頸。在此些實例中,如果著色器程序的大小和/或復雜性小于閾值,那么GPU10和/或CPU6可確定著色器操作的性能不大可能為存儲器傳送操作的性能瓶頸。在此情況下,GPU10和/或CPU6可選擇用于存儲器傳送操作的順序存儲器傳送模式,因為有可能存儲器存取效率可為存儲器傳送操作的性能瓶頸。另一方面,如果著色器程序的大小和/或復雜性大于閾值,那么GPU10和/或CPU6可確定著色器操作的性能可能為存儲器傳送操作的性能瓶頸。在此情況下,GPU10和/或CPU6可選擇用于存儲器傳送操作的交錯存儲器傳送模式,因為存儲器效率的增加是不需要的且因為在順序存儲器傳送模式中發生的讀取操作的延期可能具有使著色器程序耗盡數據的可能,這在著色器程序是性能瓶頸的情況下通常是不合意的。在額外實例中,GPU10和/或CPU6(例如,在CPU6上執行的GPU驅動器)可基于著色器程序的執行是否可能為存儲器傳送操作的性能瓶頸的確定而選擇存儲器傳送模式。舉例來說,GPU10和/或CPU6可響應于確定著色器程序的執行不大可能為存儲器傳送操作的性能瓶頸而將順序存儲器傳送模式選擇為存儲器傳送模式。另一方面,GPU10和/或CPU6響應于確定著色器程序的執行可能為存儲器傳送操作的性能瓶頸而交錯存儲器傳送模式選擇為存儲器傳送模式。在額外實例中,GPU10可基于選定存儲器傳送模式選擇和配置用于高速緩沖存儲器的高速緩沖存儲線大小。高速緩沖存儲器可對應于GPU中的其中存儲讀取數據的緩沖器。在此些實例中,如果存儲器傳送模式是順序存儲器傳送模式,那么GPU10可選擇等于高速緩沖存儲器的整個容量的高速緩沖存儲線大小以便允許讀取和寫入操作的盡可能大的分組。另一方面,如果存儲器傳送模式是交錯存儲器傳送模式,那么GPU10可選擇小于高速緩沖存儲器的整個容量的高速緩沖存儲線大小以便允許當服務于交錯請求時同時高速緩沖存儲多個數據區。在一些實例中,計算裝置2內的一或多個其它組件(例如,CPU6)可用信號表示將由GPU10用于執行存儲器傳送操作的存儲器傳送模式。所述信令技術可允許在應用程序處理器上執行的GPU驅動器和/或用戶應用程序控制用于執行存儲器傳送操作的存儲器傳送模式。不同存儲器傳送模式對于不同類型的存儲器傳送操作可比其它存儲器傳送模式更有效。舉例來說,順序存儲器傳送模式對于較大存儲器傳送操作可比交錯存儲器傳送模式大體上更有效,而交錯存儲器傳送模式對于較小存儲器傳送操作可比順序存儲器傳送模式更有效,具體來說是在其中在順序存儲器傳送模式期間每讀取請求存取的數據的最小量較大的情況下。本發明的技術可用以選擇性使用較適合于特定類型的存儲器傳送操作的不同存儲器傳送模式,進而改善GPU的存儲器傳送操作的性能。圖2是進一步詳細說明圖1中計算裝置2的CPU6、GPU10和存儲器子系統8的框圖。如圖2中所示,CPU6以通信方式耦合到GPU10和存儲器子系統8,且GPU10以通信方式耦合到CPU6和存儲器子系統8。在一些實例中,GPU10可與CPU6集成到母板上。在額外實例中,GPU10可實施在安裝于包含CPU6的母板的端口中的圖形卡上。在其它實例中,GPU10可并入在經配置以與CPU6交互操作的外圍裝置內。在額外實例中,GPU10可與CPU6位于同一微芯片上從而形成芯片上系統(SoC)。CPU6可經配置以執行軟件應用程序24、圖形API26、GPU驅動器28和操作系統30。軟件應用程序24可包含致使顯示圖形圖像的一或多個指令和/或致使在GPU10上執行非圖形任務(例如,通用計算任務)的一或多個指令。軟件應用程序24可發出指令到圖形API26。圖形API26可為運行時間服務,其將從軟件應用程序24接收的指令轉換為可由GPU驅動器28消耗的格式。GPU驅動器28經由圖形API26從軟件應用24接收指令,且控制GPU10的操作以服務所述指令。舉例來說,GPU驅動器28可調配一或多個命令,將命令放置到存儲器22中,且指示GPU10執行所述命令。在一些實例中,GPU驅動器28可將命令放置到存儲器22中,且經由操作系統30(例如經由一或多個系統調用)與GPU10通信。在一些實例中,GPU驅動器28(或CPU6上的另一軟件組件)可經配置以選擇將用于執行存儲器傳送操作的全部或部分的存儲器傳送模式,且致使GPU10基于所述選定存儲器傳送模式執行存儲器傳送操作。在一些實例中,存儲器傳送模式可選自包含交錯存儲器傳送模式和順序存儲器傳送模式的至少兩個存儲器傳送模式的集合。在額外實例中,GPU驅動器28可經配置以根據本發明中描述的技術中的任一者選擇將用于存儲器傳送操作的全部或部分的存儲器傳送模式。舉例來說,GPU驅動器28可基于存儲器傳送操作的大小(例如,存儲器傳送操作將傳送的數據的量)而選擇存儲器傳送模式。作為另一實例,GPU驅動器28可基于針對存儲器傳送操作界定的目的地區與固定屏幕對準緩沖區具有的重疊的量而選擇存儲器傳送模式。作為另一個實例,GPU驅動器28可基于著色器程序的執行是否可能為存儲器傳送操作的性能瓶頸的確定而選擇存儲器傳送模式。在額外實例中,GPU10可使用一或多個著色器程序執行存儲器傳送操作,且GPU驅動器28可基于用于執行存儲器傳送操作的著色器程序的大小和/或用于執行存儲器傳送操作的著色器程序的復雜性而選擇存儲器傳送模式。GPU10包含命令引擎32、光柵操作單元34、緩沖器36、讀取引擎38和寫入引擎40。在一些實例中,GPU10可包含3D圖形再現管線(未圖示)。在此些實例中,光柵操作單元34可形成3D圖形再現管線的部分。在一些實例中,GPU10可包含多個處理單元(未圖示),其中的每一者可為可編程處理單元或固定功能處理單元。在其中GPU10包含3D圖形再現管線的情況下,所述多個處理單元可一起操作以實施3D圖形再現管線。在一些實例中,3D圖形再現管線可符合由一或多個公眾和/或專有3D圖形標準API指定的3D圖形管線,例如開放圖形庫()API、開放圖形庫嵌入系統(OpenGLES)API、Direct3DAPI、DirectXAPI等。可編程處理單元可包含(例如)可編程著色器單元,其經配置以執行從CPU6下載到GPU10上的一或多個著色器程序。在一些實例中,著色器程序可為以高級著色語言編寫的程序的經編譯版本,例如OpenGL著色語言(GLSL)、高級著色語言(HLSL)、用于圖形的C(Cg)著色語言等。在一些實例中,可編程著色器單元可包含經配置以并行操作的多個處理單元,例如SIMD管線。可編程著色器單元可具有存儲著色器程序指令的程序存儲器和執行狀態寄存器,例如指示程序存儲器中正執行的當前指令或待提取的下一指令的程序計數器寄存器。所述可編程著色器單元可包含(例如)頂點著色器單元、像素著色器單元、幾何著色器單元、殼著色器單元、域著色器單元、計算著色器單元等。固定功能處理單元可包含經硬連線以執行某些功能的硬件。雖然固定功能硬件可經由(例如)一或多個控制信號而配置以執行不同功能,但所述固定功能硬件通常并不包含能夠接收用戶編譯程序的程序存儲器。GPU10中包含的固定功能處理單元可包含(例如)執行例如光柵操作、深度測試、剪刀測試、α摻合等的處理單元。在其中光柵操作單元34包含在3D再現管線中的實例中,在一些實例中光柵操作單元34可為可配置固定功能處理單元。在一些實例中,光柵操作單元34可實施為3D再現管線的輸出合并器處理單元。命令引擎32經配置以從CPU6接收命令且致使GPU10執行所述命令。在一些實例中,CPU6可將命令放置于存儲器22中,且命令引擎32可從存儲器22檢索所述命令。所述命令可包含(例如)改變GPU10的狀態(例如,再現狀態)的狀態命令、指示GPU10將特定著色器程序加載到3D再現管線中的可編程處理單元中的一或多者中的著色器程序綁定命令、指示GPU10再現存儲在存儲器22中的特定數據的繪制命令、指示GPU10相對于存儲在存儲器22中的特定數據執行一或多個通用計算內核的通用計算命令,以及指示GPU10執行一或多個存儲器傳送操作的存儲器傳送命令。響應于接收到狀態命令,命令引擎32可經配置以基于狀態命令將GPU10中的一或多個狀態寄存器設定于特定值,和/或基于狀態命令配置用于GPU10的3D再現管線(未圖示)中的固定功能處理單元中的一或多者。響應于接收到繪制調用命令,命令引擎32可經配置以致使GPU10中的3D再現管線(未圖示)從存儲器22檢索3D幾何形狀,且將所述3D幾何形狀數據再現為2D圖...